Redux Framework - Version 4.3.0

Version Description

Added: Gutenberg Template Library updated to the new Extendify library. See more information here about this upgrade and how to access the legacy library: https://redux.io/gutenberg-template-library-upgrade. Added: Option to enable/disable Template libraries. Found under Settings > Redux > Templates Added: Redux debug data moved to WordPress Site Health Info screen. Removed: Redux Framework Health Screen. Modified: Tools > Redux Framework screen moved to Settings > Redux Modified: Redux Templates disabled by default. Release date: September 21, 2021

Download this release

Release Info

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

Code changes from version 4.2.14 to 4.3.0

Files changed (119) hide show
  1. class-redux-framework-plugin.php +40 -31
  2. extendify-sdk/.eslintrc.js +74 -0
  3. extendify-sdk/.github/workflows/build-and-test.yml +62 -0
  4. extendify-sdk/.github/workflows/build-development-zip.yml +70 -0
  5. extendify-sdk/.github/workflows/force-production-on-main.yml +66 -0
  6. extendify-sdk/.phpcs.xml.dist +179 -0
  7. extendify-sdk/app/Admin.php +121 -0
  8. extendify-sdk/app/ApiRouter.php +137 -0
  9. extendify-sdk/app/App.php +111 -0
  10. extendify-sdk/app/Controllers/AuthController.php +43 -0
  11. extendify-sdk/app/Controllers/MetaController.php +30 -0
  12. extendify-sdk/app/Controllers/PingController.php +30 -0
  13. extendify-sdk/app/Controllers/PluginController.php +68 -0
  14. extendify-sdk/app/Controllers/TaxonomyController.php +30 -0
  15. extendify-sdk/app/Controllers/TemplateController.php +55 -0
  16. extendify-sdk/app/Controllers/UserController.php +68 -0
  17. extendify-sdk/app/Http.php +148 -0
  18. extendify-sdk/app/Plugin.php +335 -0
  19. extendify-sdk/app/User.php +141 -0
  20. extendify-sdk/bootstrap.php +35 -0
  21. extendify-sdk/config.json +7 -0
  22. extendify-sdk/editorplus/EditorPlus.php +224 -0
  23. extendify-sdk/editorplus/editorplus-template.php +60 -0
  24. extendify-sdk/editorplus/editorplus.js +244 -0
  25. extendify-sdk/extendify-sdk.php +52 -0
  26. extendify-sdk/loader.php +61 -0
  27. extendify-sdk/public/.gitkeep +0 -0
  28. extendify-sdk/public/build/extendify-sdk.css +1 -0
  29. extendify-sdk/public/build/extendify-sdk.js +2 -0
  30. extendify-sdk/public/build/extendify-sdk.js.LICENSE.txt +20 -0
  31. extendify-sdk/public/editorplus/editorplus.min.js +1 -0
  32. extendify-sdk/public/mix-manifest.json +5 -0
  33. extendify-sdk/readme.md +51 -0
  34. extendify-sdk/readme.txt +5 -0
  35. extendify-sdk/routes/api.php +43 -0
  36. extendify-sdk/src/ExtendifyLibrary.js +38 -0
  37. extendify-sdk/src/api/General.js +12 -0
  38. extendify-sdk/src/api/Plugins.js +21 -0
  39. extendify-sdk/src/api/Taxonomies.js +7 -0
  40. extendify-sdk/src/api/Templates.js +65 -0
  41. extendify-sdk/src/api/User.js +59 -0
  42. extendify-sdk/src/api/axios.js +60 -0
  43. extendify-sdk/src/app.css +52 -0
  44. extendify-sdk/src/app.js +31 -0
  45. extendify-sdk/src/buttons.js +115 -0
  46. extendify-sdk/src/components/ImportButton.js +88 -0
  47. extendify-sdk/src/components/LoginInterface.js +114 -0
  48. extendify-sdk/src/components/Loginbutton.js +25 -0
  49. extendify-sdk/src/components/SearchPredict.js +89 -0
  50. extendify-sdk/src/components/TaxonomyBreadcrumbs.js +26 -0
  51. extendify-sdk/src/components/TaxonomyList.js +39 -0
  52. extendify-sdk/src/components/TaxonomySection.js +178 -0
  53. extendify-sdk/src/components/TemplateButton.js +66 -0
  54. extendify-sdk/src/components/TypeSelect.js +47 -0
  55. extendify-sdk/src/config.js +4 -0
  56. extendify-sdk/src/hooks/helpers.js +11 -0
  57. extendify-sdk/src/hooks/useBeacon.js +73 -0
  58. extendify-sdk/src/hooks/useTaxonomies.js +25 -0
  59. extendify-sdk/src/listeners/index.js +7 -0
  60. extendify-sdk/src/listeners/softerror-encountered.js +21 -0
  61. extendify-sdk/src/listeners/template-inserted.js +26 -0
  62. extendify-sdk/src/middleware/NeedsPermissionModal.js +41 -0
  63. extendify-sdk/src/middleware/NeedsRegistrationModal.js +77 -0
  64. extendify-sdk/src/middleware/ReloadRequiredModal.js +43 -0
  65. extendify-sdk/src/middleware/hasPluginsActivated/ActivatePluginsModal.js +57 -0
  66. extendify-sdk/src/middleware/hasPluginsActivated/ActivatingModal.js +47 -0
  67. extendify-sdk/src/middleware/hasPluginsActivated/ErrorActivating.js +29 -0
  68. extendify-sdk/src/middleware/hasPluginsActivated/index.js +16 -0
  69. extendify-sdk/src/middleware/hasRequiredPlugins/ErrorInstalling.js +25 -0
  70. extendify-sdk/src/middleware/hasRequiredPlugins/InstallingModal.js +40 -0
  71. extendify-sdk/src/middleware/hasRequiredPlugins/RequiredPluginsModal.js +60 -0
  72. extendify-sdk/src/middleware/hasRequiredPlugins/index.js +16 -0
  73. extendify-sdk/src/middleware/helpers.js +61 -0
  74. extendify-sdk/src/middleware/index.js +42 -0
  75. extendify-sdk/src/pages/CuratedView.js +71 -0
  76. extendify-sdk/src/pages/GridView.js +33 -0
  77. extendify-sdk/src/pages/Login.js +37 -0
  78. extendify-sdk/src/pages/MainContent.js +47 -0
  79. extendify-sdk/src/pages/Router.js +39 -0
  80. extendify-sdk/src/pages/SingleView.js +26 -0
  81. extendify-sdk/src/pages/guide/GuideStart.js +149 -0
  82. extendify-sdk/src/pages/guide/GuideSteps.js +231 -0
  83. extendify-sdk/src/pages/guide/Welcome.js +166 -0
  84. extendify-sdk/src/pages/modals/WaitingCrunchingModal.js +22 -0
  85. extendify-sdk/src/pages/parts/Grid.js +144 -0
  86. extendify-sdk/src/pages/parts/HasSidebar.js +43 -0
  87. extendify-sdk/src/pages/parts/MainWindow.js +77 -0
  88. extendify-sdk/src/pages/parts/RowByTax.js +70 -0
  89. extendify-sdk/src/pages/parts/Single.js +121 -0
  90. extendify-sdk/src/pages/parts/Toolbar.js +71 -0
  91. extendify-sdk/src/pages/parts/sidebars/SidebarMain.js +51 -0
  92. extendify-sdk/src/pages/parts/sidebars/SidebarSingle.js +59 -0
  93. extendify-sdk/src/state/GlobalState.js +17 -0
  94. extendify-sdk/src/state/Importing.js +16 -0
  95. extendify-sdk/src/state/Taxonomies.js +16 -0
  96. extendify-sdk/src/state/Templates.js +103 -0
  97. extendify-sdk/src/state/User.js +66 -0
  98. extendify-sdk/src/util/airtable.js +18 -0
  99. extendify-sdk/src/util/blocks.js +26 -0
  100. extendify-sdk/src/util/general.js +45 -0
  101. extendify-sdk/src/util/templateInjection.js +27 -0
  102. extendify-sdk/support/notices.php +85 -0
  103. extendify-sdk/tailwind.config.js +93 -0
  104. extendify-sdk/vendor/autoload.php +7 -0
  105. extendify-sdk/vendor/composer/ClassLoader.php +445 -0
  106. extendify-sdk/vendor/composer/InstalledVersions.php +654 -0
  107. extendify-sdk/vendor/composer/LICENSE +21 -0
  108. extendify-sdk/vendor/composer/autoload_classmap.php +9 -0
  109. extendify-sdk/vendor/composer/autoload_namespaces.php +9 -0
  110. extendify-sdk/vendor/composer/autoload_psr4.php +10 -0
  111. extendify-sdk/vendor/composer/autoload_real.php +55 -0
  112. extendify-sdk/vendor/composer/autoload_static.php +31 -0
  113. extendify-sdk/vendor/composer/installed.json +1 -0
  114. extendify-sdk/vendor/composer/installed.php +395 -0
  115. extendify-sdk/webpack.mix.js +62 -0
  116. readme.txt +138 -157
  117. redux-core/assets/css/redux-fields.min.css +1 -1
  118. redux-core/assets/css/redux-fields.min.css.map +1 -1
  119. redux-core/assets/css/vendor.css +77 -1
class-redux-framework-plugin.php CHANGED
@@ -73,7 +73,7 @@ if ( ! class_exists( 'Redux_Framework_Plugin', false ) ) {
73
  * @since 3.1.3
74
  * @return self::$instance The one true Redux_Framework_Plugin
75
  */
76
- public static function instance() {
77
  $path = REDUX_PLUGIN_FILE;
78
 
79
  if ( function_exists( 'get_plugin_data' ) && file_exists( $path ) ) {
@@ -85,7 +85,7 @@ if ( ! class_exists( 'Redux_Framework_Plugin', false ) ) {
85
 
86
  if ( is_plugin_active( 'redux-framework/redux-framework.php' ) && true === $res ) {
87
  echo '<div class="error"><p>' . esc_html__( 'Redux Framework version 4 is activated but not loaded. Redux Framework version 3 is still installed and activated. Please deactivate Redux Framework version 3.', 'redux-framework' ) . '</p></div>'; // phpcs:ignore WordPress.Security.EscapeOutput
88
- return;
89
  }
90
  }
91
 
@@ -110,7 +110,7 @@ if ( ! class_exists( 'Redux_Framework_Plugin', false ) ) {
110
  * @since 4.0.1
111
  * @return self::$instance The one true Redux_Framework_Plugin
112
  */
113
- public static function get_instance() {
114
  return self::instance();
115
  }
116
 
@@ -162,6 +162,14 @@ if ( ! class_exists( 'Redux_Framework_Plugin', false ) ) {
162
  require_once dirname( __FILE__ ) . '/redux-core/framework.php';
163
  }
164
 
 
 
 
 
 
 
 
 
165
  if ( file_exists( dirname( __FILE__ ) . '/redux-templates/redux-templates.php' ) ) {
166
  require_once dirname( __FILE__ ) . '/redux-templates/redux-templates.php';
167
  }
@@ -266,7 +274,7 @@ if ( ! class_exists( 'Redux_Framework_Plugin', false ) ) {
266
  *
267
  * @return void
268
  */
269
- public static function activate( $network_wide ) {
270
  // phpcs:disable
271
  //if ( function_exists( 'is_multisite' ) && is_multisite() ) {
272
  // if ( $network_wide ) {
@@ -299,7 +307,7 @@ if ( ! class_exists( 'Redux_Framework_Plugin', false ) ) {
299
  *
300
  * @return void
301
  */
302
- public static function deactivate( $network_wide ) {
303
  if ( function_exists( 'is_multisite' ) && is_multisite() ) {
304
  if ( $network_wide ) {
305
  // Get all blog IDs.
@@ -325,13 +333,13 @@ if ( ! class_exists( 'Redux_Framework_Plugin', false ) ) {
325
  * Fired when a new WPMU site is activated
326
  *
327
  * @access public
328
- * @since 3.0.0
329
  *
330
  * @param int $blog_id The ID of the new blog.
331
  *
332
  * @return void
 
333
  */
334
- public function activate_new_site( $blog_id ) {
335
  if ( 1 !== did_action( 'wpmu_new_blog' ) ) {
336
  return;
337
  }
@@ -354,7 +362,7 @@ if ( ! class_exists( 'Redux_Framework_Plugin', false ) ) {
354
 
355
  $var = '0';
356
 
357
- // Get an array of IDs (We have to do it this way because WordPress ays so, however reduntant.
358
  $result = wp_cache_get( 'redux-blog-ids' );
359
  if ( false === $result ) {
360
 
@@ -429,17 +437,15 @@ if ( ! class_exists( 'Redux_Framework_Plugin', false ) ) {
429
 
430
  if ( isset( $_GET['nonce'] ) && wp_verify_nonce( sanitize_key( $_GET['nonce'] ), 'redux_framework_demo' ) ) {
431
  if ( isset( $_GET['redux-framework-plugin'] ) && 'demo' === $_GET['redux-framework-plugin'] ) {
432
- $url = admin_url( add_query_arg( array( 'page' => 'redux-framework' ), 'tools.php' ) );
433
-
434
- if ( 'demo' === $_GET['redux-framework-plugin'] ) {
435
- if ( false === $this->options['demo'] ) {
436
- $this->options['demo'] = true;
437
- $url = admin_url( add_query_arg( array( 'page' => 'redux_demo' ), 'admin.php' ) );
438
- } else {
439
- $this->options['demo'] = false;
440
 
441
- }
 
 
 
 
442
  }
 
443
  if ( is_multisite() && $this->plugin_network_activated ) {
444
  update_site_option( 'ReduxFrameworkPlugin', $this->options );
445
  } else {
@@ -458,13 +464,13 @@ if ( ! class_exists( 'Redux_Framework_Plugin', false ) ) {
458
  * Add a settings link to the Redux entry in the plugin overview screen
459
  *
460
  * @param array $links Links array.
461
- * @param string $file Plugin filename/slug.
462
  *
463
  * @return array
464
  * @see filter:plugin_action_links
465
  * @since 1.0
466
  */
467
- public function add_settings_link( $links, $file ) {
468
 
469
  if ( strpos( REDUX_PLUGIN_FILE, $file ) === false ) {
470
  return $links;
@@ -491,7 +497,7 @@ if ( ! class_exists( 'Redux_Framework_Plugin', false ) ) {
491
  *
492
  * @return string
493
  */
494
- private function get_site_url( $path = '' ) {
495
  $url = 'https://redux.io';
496
 
497
  if ( ! empty( $path ) ) {
@@ -504,14 +510,14 @@ if ( ! class_exists( 'Redux_Framework_Plugin', false ) ) {
504
  /**
505
  * Url with utm tags
506
  *
507
- * @param string $path Path on site.
508
- * @param string $utm_medium Medium var.
509
- * @param string $utm_content Content var.
510
- * @param bool $utm_campaign Campaign var.
511
  *
512
  * @return string
513
  */
514
- public function get_site_utm_url( $path, $utm_medium, $utm_content = null, $utm_campaign = false ) {
515
  $url = self::get_site_url( $path );
516
 
517
  if ( ! $utm_campaign ) {
@@ -541,17 +547,20 @@ if ( ! class_exists( 'Redux_Framework_Plugin', false ) ) {
541
  * Edit plugin metalinks
542
  *
543
  * @access public
544
- * @since 3.0.0
545
  *
546
- * @param array $links The current array of links.
547
- * @param string $file A specific plugin row.
548
  *
549
  * @return array The modified array of links
 
550
  */
551
- public function plugin_metalinks( $links, $file ) {
552
  if ( strpos( $file, 'redux-framework.php' ) !== false && is_plugin_active( $file ) ) {
553
- $links[] = '<a href="' . esc_url( admin_url( add_query_arg( array( 'page' => 'redux-framework' ), 'tools.php' ) ) ) . '">' . esc_html__( 'What is this?', 'redux-framework' ) . '</a>';
554
- $links[] = '<a href="' . esc_url( admin_url( add_query_arg( array( 'post_type' => 'page' ), 'post-new.php' ) ) ) . '#redux_templates=1">' . esc_html__( 'Template Library', 'redux-framework' ) . '</a>';
 
 
 
555
  }
556
 
557
  return $links;
73
  * @since 3.1.3
74
  * @return self::$instance The one true Redux_Framework_Plugin
75
  */
76
+ public static function instance(): ?Redux_Framework_Plugin {
77
  $path = REDUX_PLUGIN_FILE;
78
 
79
  if ( function_exists( 'get_plugin_data' ) && file_exists( $path ) ) {
85
 
86
  if ( is_plugin_active( 'redux-framework/redux-framework.php' ) && true === $res ) {
87
  echo '<div class="error"><p>' . esc_html__( 'Redux Framework version 4 is activated but not loaded. Redux Framework version 3 is still installed and activated. Please deactivate Redux Framework version 3.', 'redux-framework' ) . '</p></div>'; // phpcs:ignore WordPress.Security.EscapeOutput
88
+ return null;
89
  }
90
  }
91
 
110
  * @since 4.0.1
111
  * @return self::$instance The one true Redux_Framework_Plugin
112
  */
113
+ public static function get_instance(): ?Redux_Framework_Plugin {
114
  return self::instance();
115
  }
116
 
162
  require_once dirname( __FILE__ ) . '/redux-core/framework.php';
163
  }
164
 
165
+ // Including extendify sdk.
166
+ if ( true === (bool) get_option( 'use_extendify_templates', true ) ) {
167
+ if ( file_exists( plugin_dir_path( REDUX_PLUGIN_FILE ) . 'extendify-sdk/loader.php' ) ) {
168
+ $GLOBALS['extendifySdkSourcePlugin'] = 'Redux';
169
+ require_once dirname( __FILE__ ) . '/extendify-sdk/loader.php';
170
+ }
171
+ }
172
+
173
  if ( file_exists( dirname( __FILE__ ) . '/redux-templates/redux-templates.php' ) ) {
174
  require_once dirname( __FILE__ ) . '/redux-templates/redux-templates.php';
175
  }
274
  *
275
  * @return void
276
  */
277
+ public static function activate( bool $network_wide ) {
278
  // phpcs:disable
279
  //if ( function_exists( 'is_multisite' ) && is_multisite() ) {
280
  // if ( $network_wide ) {
307
  *
308
  * @return void
309
  */
310
+ public static function deactivate( bool $network_wide ) {
311
  if ( function_exists( 'is_multisite' ) && is_multisite() ) {
312
  if ( $network_wide ) {
313
  // Get all blog IDs.
333
  * Fired when a new WPMU site is activated
334
  *
335
  * @access public
 
336
  *
337
  * @param int $blog_id The ID of the new blog.
338
  *
339
  * @return void
340
+ * @since 3.0.0
341
  */
342
+ public function activate_new_site( int $blog_id ) {
343
  if ( 1 !== did_action( 'wpmu_new_blog' ) ) {
344
  return;
345
  }
362
 
363
  $var = '0';
364
 
365
+ // Get an array of IDs (We have to do it this way because WordPress says so, however reduntant).
366
  $result = wp_cache_get( 'redux-blog-ids' );
367
  if ( false === $result ) {
368
 
437
 
438
  if ( isset( $_GET['nonce'] ) && wp_verify_nonce( sanitize_key( $_GET['nonce'] ), 'redux_framework_demo' ) ) {
439
  if ( isset( $_GET['redux-framework-plugin'] ) && 'demo' === $_GET['redux-framework-plugin'] ) {
440
+ $url = admin_url( add_query_arg( array( 'page' => 'redux-framework' ), 'options-general.php' ) );
 
 
 
 
 
 
 
441
 
442
+ if ( false === $this->options['demo'] ) {
443
+ $this->options['demo'] = true;
444
+ $url = admin_url( add_query_arg( array( 'page' => 'redux_demo' ), 'admin.php' ) );
445
+ } else {
446
+ $this->options['demo'] = false;
447
  }
448
+
449
  if ( is_multisite() && $this->plugin_network_activated ) {
450
  update_site_option( 'ReduxFrameworkPlugin', $this->options );
451
  } else {
464
  * Add a settings link to the Redux entry in the plugin overview screen
465
  *
466
  * @param array $links Links array.
467
+ * @param string $file Plugin filename/slug.
468
  *
469
  * @return array
470
  * @see filter:plugin_action_links
471
  * @since 1.0
472
  */
473
+ public function add_settings_link( array $links, string $file ): array {
474
 
475
  if ( strpos( REDUX_PLUGIN_FILE, $file ) === false ) {
476
  return $links;
497
  *
498
  * @return string
499
  */
500
+ private function get_site_url( string $path = '' ): string {
501
  $url = 'https://redux.io';
502
 
503
  if ( ! empty( $path ) ) {
510
  /**
511
  * Url with utm tags
512
  *
513
+ * @param string $path Path on site.
514
+ * @param string $utm_medium Medium var.
515
+ * @param string|null $utm_content Content var.
516
+ * @param bool $utm_campaign Campaign var.
517
  *
518
  * @return string
519
  */
520
+ public function get_site_utm_url( string $path, string $utm_medium, string $utm_content = null, bool $utm_campaign = false ): string {
521
  $url = self::get_site_url( $path );
522
 
523
  if ( ! $utm_campaign ) {
547
  * Edit plugin metalinks
548
  *
549
  * @access public
 
550
  *
551
+ * @param array $links The current array of links.
552
+ * @param string $file A specific plugin row.
553
  *
554
  * @return array The modified array of links
555
+ * @since 3.0.0
556
  */
557
+ public function plugin_metalinks( array $links, string $file ): array {
558
  if ( strpos( $file, 'redux-framework.php' ) !== false && is_plugin_active( $file ) ) {
559
+ $links[] = '<a href="' . esc_url( admin_url( add_query_arg( array( 'page' => 'redux-framework' ), 'options-general.php' ) ) ) . '">' . esc_html__( 'What is this?', 'redux-framework' ) . '</a>';
560
+
561
+ if ( true === Redux_Core::$redux_templates_enabled ) {
562
+ $links[] = '<a href="' . esc_url( admin_url( add_query_arg( array( 'post_type' => 'page' ), 'post-new.php' ) ) ) . '#redux_templates=1">' . esc_html__( 'Template Library', 'redux-framework' ) . '</a>';
563
+ }
564
  }
565
 
566
  return $links;
extendify-sdk/.eslintrc.js ADDED
@@ -0,0 +1,74 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ module.exports = {
2
+ env: {
3
+ browser: true,
4
+ es2021: true,
5
+ jest: true,
6
+ node: true,
7
+ },
8
+ extends: ['eslint:recommended', 'plugin:react/recommended', 'plugin:react-hooks/recommended'],
9
+ parserOptions: {
10
+ ecmaFeatures: { jsx: true },
11
+ sourceType: 'module',
12
+ },
13
+ plugins: ['react'],
14
+ rules: {
15
+ indent: ['error', 4, { SwitchCase: 1 }],
16
+ 'require-await': 'error',
17
+ quotes: ['error', 'single'],
18
+ 'comma-dangle': ['error', 'always-multiline'],
19
+ 'multiline-ternary': ['error', 'always-multiline'],
20
+ 'array-element-newline': ['error', 'consistent'],
21
+ 'no-constant-condition': ['error', { checkLoops: false }],
22
+ 'no-multi-spaces': ['error'],
23
+ semi: ['error', 'never'],
24
+ 'space-in-parens': ['error', 'never'],
25
+ 'space-unary-ops': [
26
+ 2, {
27
+ words: true,
28
+ nonwords: false,
29
+ overrides: {},
30
+ }],
31
+ 'space-before-function-paren': [
32
+ 'error',
33
+ {
34
+ anonymous: 'always',
35
+ named: 'never',
36
+ asyncArrow: 'always',
37
+ },
38
+ ],
39
+ 'react/react-in-jsx-scope': 'off',
40
+ 'function-paren-newline': [
41
+ 'error',
42
+ { minItems: 3 },
43
+ ],
44
+ 'quote-props': ['error', 'as-needed'],
45
+ 'object-curly-spacing': ['error', 'always', { objectsInObjects: false }],
46
+ 'no-multiple-empty-lines': [
47
+ 'error',
48
+ { max: 1 },
49
+ ],
50
+ 'react/prop-types': 0, // TODO: Do we want this required?
51
+ 'lines-around-comment': [
52
+ 'error',
53
+ {
54
+ beforeBlockComment: true,
55
+ allowBlockStart: true,
56
+ },
57
+ ],
58
+ 'object-curly-newline': [
59
+ 'error',
60
+ {
61
+ ObjectExpression: {
62
+ consistent: true, multiline: true, minProperties: 3,
63
+ },
64
+ ObjectPattern: { consistent: true, multiline: true },
65
+ ImportDeclaration: { multiline: true, minProperties: 3 },
66
+ ExportDeclaration: {
67
+ multiline: true,
68
+ minProperties: 3,
69
+ },
70
+ },
71
+ ],
72
+ },
73
+ settings: { react: { version: 'detect' }},
74
+ }
extendify-sdk/.github/workflows/build-and-test.yml ADDED
@@ -0,0 +1,62 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ name: Build and test
2
+ on: [push, pull_request]
3
+ jobs:
4
+ # TODO: create another job for integration testing that includes Cypress, booting up WPO, etc
5
+ # Reference wp-cli: https://github.com/wp-cli/wp-cli/blob/master/.github/workflows/testing.yml
6
+ unit: #-------------------------------------------
7
+ name: PHP ${{ matrix.php }}
8
+ runs-on: ubuntu-latest
9
+ strategy:
10
+ fail-fast: false
11
+ matrix:
12
+ php: ['7.4']
13
+ steps:
14
+ - name: Check out source code
15
+ uses: actions/checkout@v2
16
+
17
+ - name: Setup PHP
18
+ uses: shivammathur/setup-php@v2
19
+ with:
20
+ php-version: '${{ matrix.php }}'
21
+ extensions: mysql, zip
22
+ coverage: none
23
+ tools: composer:v1, wp-cli, cs2pr, phpcs
24
+
25
+ - name: Get Composer cache directory
26
+ id: composer-cache
27
+ run: |
28
+ echo "::set-output name=dir::$(composer config cache-files-dir)"
29
+
30
+ - name: Use Composer cache
31
+ uses: actions/cache@master
32
+ with:
33
+ path: ${{ steps['composer-cache'].outputs.dir }}
34
+ key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
35
+ restore-keys: |
36
+ ${{ runner.os }}-composer-
37
+
38
+ - name: Install dependencies
39
+ run: composer install --prefer-dist --no-progress --no-suggest
40
+
41
+ - name: Install PHPCS
42
+ run: git clone -b master https://github.com/WordPress/WordPress-Coding-Standards.git ${{ github.workspace }}/wpcs
43
+
44
+ - name: PHPCS check
45
+ run: |
46
+ phpcs --config-set installed_paths ${{ github.workspace }}/vendor/phpcompatibility/phpcompatibility-wp/PHPCompatibilityWP,${{ github.workspace }}/vendor/phpcompatibility/php-compatibility/PHPCompatibility,${{ github.workspace }}/vendor/phpcompatibility/phpcompatibility-paragonie/PHPCompatibilityParagonieSodiumCompat,${{ github.workspace }}/vendor/phpcompatibility/phpcompatibility-paragonie/PHPCompatibilityParagonieRandomCompat,${{ github.workspace }}/wpcs
47
+ phpcs -i
48
+ phpcs -q --report=checkstyle . | cs2pr
49
+
50
+ - name: Install NPM packages
51
+ run: npm ci
52
+ env:
53
+ CYPRESS_INSTALL_BINARY: "0"
54
+
55
+ - name: Build assets
56
+ run: npm run build
57
+
58
+ - name: Test JavaScript
59
+ run: npm run test
60
+
61
+ - name: Lint JavaScript
62
+ run: npm run lint
extendify-sdk/.github/workflows/build-development-zip.yml ADDED
@@ -0,0 +1,70 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ name: Build development zip file
2
+ on: push
3
+ jobs:
4
+ build:
5
+ name: Build test, and zip
6
+ runs-on: ubuntu-latest
7
+ strategy:
8
+ fail-fast: false
9
+ matrix:
10
+ php: [8.0]
11
+ node-version: [14.x]
12
+ steps:
13
+ - name: Checkout code
14
+ uses: actions/checkout@v1
15
+
16
+ - name: Setup PHP
17
+ uses: shivammathur/setup-php@v2
18
+ with:
19
+ php-version: '${{ matrix.php }}'
20
+ tools: composer:v1
21
+
22
+ - name: Get Composer cache directory
23
+ id: composer-cache
24
+ run: |
25
+ echo "::set-output name=dir::$(composer config cache-files-dir)"
26
+ - name: Use Composer cache
27
+ uses: actions/cache@master
28
+ with:
29
+ path: ${{ steps['composer-cache'].outputs.dir }}
30
+ key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
31
+ restore-keys: |
32
+ ${{ runner.os }}-composer-
33
+ - name: Build autoloader
34
+ run: composer install --prefer-dist --no-progress --no-suggest --no-dev
35
+
36
+ - name: Using Node version ${{ matrix.node-version }}
37
+ uses: actions/setup-node@v1
38
+ with:
39
+ node-version: ${{ matrix.node-version }}
40
+ - name: npm install, build, and test
41
+ run: |
42
+ npm ci
43
+ npm run dev
44
+ touch .devbuild
45
+ env:
46
+ CI: true
47
+ - name: Package
48
+ uses: actions/upload-artifact@v2
49
+ with:
50
+ name: extendify-sdk
51
+ retention-days: 5
52
+ path: |
53
+ ${{ github.workspace }}/
54
+ !${{ github.workspace }}/node_modules/
55
+ !${{ github.workspace }}/.github/
56
+ !${{ github.workspace }}/.git/
57
+ !${{ github.workspace }}/src/
58
+ !${{ github.workspace }}/.editorconfig
59
+ !${{ github.workspace }}/.eslintrc.js
60
+ !${{ github.workspace }}/.eslintignore
61
+ !${{ github.workspace }}/.gitignore
62
+ !${{ github.workspace }}/.svgrrc
63
+ !${{ github.workspace }}/.prettierrc.js
64
+ !${{ github.workspace }}/.phpcs.xml.dist
65
+ !${{ github.workspace }}/webpack.config.js
66
+ !${{ github.workspace }}/composer.json
67
+ !${{ github.workspace }}/composer.lock
68
+ !${{ github.workspace }}/package.json
69
+ !${{ github.workspace }}/package-lock.json
70
+ !${{ github.workspace }}/readme.md
extendify-sdk/.github/workflows/force-production-on-main.yml ADDED
@@ -0,0 +1,66 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ name: Build production assets
2
+ on:
3
+ push:
4
+ branches:
5
+ - main
6
+ jobs:
7
+ build:
8
+ name: Build and commit
9
+ runs-on: ubuntu-latest
10
+ strategy:
11
+ fail-fast: false
12
+ matrix:
13
+ php: [8.0]
14
+ node-version: [14.x]
15
+ steps:
16
+ - name: Checkout code
17
+ uses: actions/checkout@v1
18
+
19
+ - name: Set up git user
20
+ run: git config --global user.name extendify
21
+ - name: Set up git email
22
+ run: git config --global user.name extendify@users.noreply.github.com
23
+
24
+ - name: Setup PHP
25
+ uses: shivammathur/setup-php@v2
26
+ with:
27
+ php-version: '${{ matrix.php }}'
28
+ extensions: mysql, zip
29
+ coverage: none
30
+ tools: composer:v1, wp-cli, cs2pr, phpcs
31
+
32
+ - name: Get Composer cache directory
33
+ id: composer-cache
34
+ run: |
35
+ echo "::set-output name=dir::$(composer config cache-files-dir)"
36
+ - name: Use Composer cache
37
+ uses: actions/cache@master
38
+ with:
39
+ path: ${{ steps['composer-cache'].outputs.dir }}
40
+ key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
41
+ restore-keys: |
42
+ ${{ runner.os }}-composer-
43
+ - name: Build autoloader
44
+ run: composer install --prefer-dist --no-progress --no-suggest --no-dev
45
+
46
+ - name: Using Node version ${{ matrix.node-version }}
47
+ uses: actions/setup-node@v1
48
+ with:
49
+ node-version: ${{ matrix.node-version }}
50
+ - name: npm install, build, and test
51
+ run: |
52
+ npm ci
53
+ npm run build
54
+ env:
55
+ CI: true
56
+ - name: Increment version number
57
+ run: |
58
+ perl -i -pe 's/(Stable tag: )([\d.]+)$/$1.($2+.1)/e' readme.txt
59
+ - name: Commit dist folder if needed #it fails if nothing has changed so we allow an error
60
+ run: git commit -am 'Build produciton assets'
61
+ continue-on-error: true
62
+ - name: Push changed files to main
63
+ uses: ad-m/github-push-action@master
64
+ with:
65
+ github_token: ${{ secrets.GITHUB_TOKEN }}
66
+ branch: main
extendify-sdk/.phpcs.xml.dist ADDED
@@ -0,0 +1,179 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <ruleset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="extendify-sdk" xsi:noNamespaceSchemaLocation="https://raw.githubusercontent.com/squizlabs/PHP_CodeSniffer/master/phpcs.xsd">
3
+
4
+ <description>WP Plugin checks</description>
5
+
6
+ <!-- Exclude the Composer Vendor directory. -->
7
+ <exclude-pattern>/vendor/*</exclude-pattern>
8
+
9
+ <exclude-pattern>/cypress/*</exclude-pattern>
10
+ <exclude-pattern>/.github/*</exclude-pattern>
11
+ <exclude-pattern>/tests/*</exclude-pattern>
12
+ <exclude-pattern>/public/*</exclude-pattern>
13
+ <exclude-pattern>/wpcs/*</exclude-pattern>
14
+
15
+ <!-- Exclude the Node Modules directory. -->
16
+ <exclude-pattern>/node_modules/*</exclude-pattern>
17
+
18
+ <!-- Exclude CSS and Javascript files. -->
19
+ <exclude-pattern>*.css</exclude-pattern>
20
+ <exclude-pattern>*.js</exclude-pattern>
21
+
22
+ <!-- Include the WordPress-Extra standard. -->
23
+ <rule ref="WordPress-Extra">
24
+ <!--
25
+ We may want a middle ground though. The best way to do this is add the
26
+ entire ruleset, then rule by rule, remove ones that don't suit a project.
27
+ We can do this by running `phpcs` with the '-s' flag, which allows us to
28
+ see the names of the sniffs reporting errors.
29
+ Once we know the sniff names, we can opt to exclude sniffs which don't
30
+ suit our project like so.
31
+
32
+ The below two examples just show how you can exclude rules.
33
+ They are not intended as advice about which sniffs to exclude.
34
+ -->
35
+
36
+ <!--
37
+ <exclude name="WordPress.WhiteSpace.ControlStructureSpacing"/>
38
+ <exclude name="WordPress.Security.EscapeOutput"/>
39
+ -->
40
+ </rule>
41
+
42
+ <rule ref="WordPress">
43
+ <exclude name="WordPress.Files.FileName.NotHyphenatedLowercase" />
44
+ <exclude name="WordPress.Files.FileName.InvalidClassFileName" />
45
+ <exclude name="WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedNamespaceFound" />
46
+ <exclude name="WordPress.WhiteSpace.ControlStructureSpacing.NoSpaceAfterOpenParenthesis" />
47
+ <exclude name="WordPress.WhiteSpace.ControlStructureSpacing.NoSpaceBeforeCloseParenthesis" />
48
+ <exclude name="WordPress.WhiteSpace.OperatorSpacing.NoSpaceBefore" />
49
+ <exclude name="WordPress.WhiteSpace.OperatorSpacing.NoSpaceAfter" />
50
+ <exclude name="WordPress.WhiteSpace.ControlStructureSpacing.ExtraSpaceAfterCloseParenthesis" />
51
+ <exclude name="WordPress.Arrays.ArrayDeclarationSpacing.NoSpaceAfterArrayOpener" />
52
+ <exclude name="WordPress.Arrays.ArrayDeclarationSpacing.NoSpaceBeforeArrayCloser" />
53
+ <exclude name="WordPress.Arrays.MultipleStatementAlignment.DoubleArrowNotAligned" />
54
+ <exclude name="WordPress.NamingConventions.ValidVariableName.PropertyNotSnakeCase" />
55
+ <exclude name="WordPress.NamingConventions.ValidFunctionName.MethodNameInvalid" />
56
+ <exclude name="WordPress.NamingConventions.ValidVariableName.UsedPropertyNotSnakeCase" />
57
+ <exclude name="WordPress.NamingConventions.ValidVariableName.VariableNotSnakeCase" />
58
+ <exclude name="WordPress.Arrays.ArrayKeySpacingRestrictions.NoSpacesAroundArrayKeys" />
59
+ <exclude name="WordPress.PHP.YodaConditions.NotYoda" />
60
+ <exclude name="WordPress.NamingConventions.ValidFunctionName.FunctionNameInvalid" />
61
+ <exclude name="WordPress.NamingConventions.ValidVariableName.InterpolatedVariableNotSnakeCase" />
62
+ </rule>
63
+
64
+ <rule ref="Generic">
65
+ <exclude name="Generic.WhiteSpace.DisallowSpaceIndent.SpacesUsed" />
66
+ <exclude name="Generic.WhiteSpace.DisallowSpaceIndent.SpacesUsed" />
67
+ <exclude name="Generic.PHP.ClosingPHPTag.NotFound" />
68
+ <exclude name="Generic.Files.LowercasedFilename.NotFound" />
69
+ <exclude name="Generic.Formatting.SpaceAfterNot.Incorrect" />
70
+ <exclude name="Generic.Classes.OpeningBraceSameLine.BraceOnNewLine" />
71
+ <exclude name="Generic.Files.EndFileNoNewline.Found" />
72
+ <exclude name="Generic.Functions.OpeningFunctionBraceKernighanRitchie.BraceOnNewLine" />
73
+ <exclude name="Generic.Files.LineLength.TooLong" />
74
+ <exclude name="Generic.Arrays.DisallowShortArraySyntax.Found" />
75
+ <exclude name="Generic.Commenting.Todo.TaskFound" />
76
+ <exclude name="Generic.Formatting.NoSpaceAfterCast.SpaceFound" />
77
+ <exclude name="Generic.Formatting.MultipleStatementAlignment.NotSame" />
78
+ <exclude name="Generic.PHP.RequireStrictTypes.MissingDeclaration" />
79
+ <exclude name="Generic.PHP.UpperCaseConstant.Found" />
80
+ <exclude name="Generic.WhiteSpace.ArbitraryParenthesesSpacing.SpaceBeforeOpen" />
81
+ <exclude name="Generic.WhiteSpace.ArbitraryParenthesesSpacing.SpaceBeforeClose" />
82
+ <exclude name="Generic.WhiteSpace.ArbitraryParenthesesSpacing.SpaceAfterOpen" />
83
+ <exclude name="Generic.WhiteSpace.ArbitraryParenthesesSpacing.SpaceAfterClose" />
84
+ <exclude name="Generic.PHP.ForbiddenFunctions.Found" />
85
+ <exclude name="Generic.Files.InlineHTML.Found" />
86
+ </rule>
87
+ <rule ref="Squiz">
88
+ <exclude name="Squiz.Functions.FunctionDeclarationArgumentSpacing.SpacingAfterOpen" />
89
+ <exclude name="Squiz.ControlStructures.ElseIfDeclaration.NotAllowed" />
90
+ <exclude name="Squiz.WhiteSpace.FunctionClosingBraceSpace.SpacingBeforeClose" />
91
+ <exclude name="Squiz.WhiteSpace.FunctionSpacing.AfterLast" />
92
+ <exclude name="Squiz.Files.FileExtension.ClassFound" />
93
+ <exclude name="Squiz.Commenting.FileComment.MissingPackageTag" />
94
+ <exclude name="Squiz.Operators.ComparisonOperatorUsage.NotAllowed" />
95
+ <exclude name="Squiz.WhiteSpace.FunctionSpacing.BeforeFirst" />
96
+ <exclude name="Squiz.Operators.ComparisonOperatorUsage.ImplicitTrue" />
97
+ <exclude name="Squiz.WhiteSpace.FunctionSpacing.After" />
98
+ <exclude name="Squiz.Arrays.ArrayDeclaration.DoubleArrowNotAligned" />
99
+ <exclude name="Squiz.WhiteSpace.FunctionSpacing.Before" />
100
+ <exclude name="Squiz.PHP.DisallowBooleanStatement.Found" />
101
+ <exclude name="Squiz.ControlStructures.InlineIfDeclaration.NoBrackets" />
102
+ <exclude name="Squiz.PHP.DisallowInlineIf.Found" />
103
+ <exclude name="Squiz.PHP.DisallowComparisonAssignment.AssignedComparison" />
104
+ <exclude name="Squiz.PHP.DiscouragedFunctions.Discouraged" />
105
+ <exclude name="Squiz.Functions.GlobalFunction.Found" />
106
+ <exclude name="Squiz.PHP.EmbeddedPhp.ContentBeforeEnd" />
107
+ </rule>
108
+ <rule ref="PEAR">
109
+ <exclude name="PEAR.Functions.FunctionCallSignature.CloseBracketLine" />
110
+ <exclude name="PEAR.Functions.FunctionCallSignature.SpaceAfterOpenBracket" />
111
+ <exclude name="PEAR.Functions.FunctionCallSignature.SpaceBeforeCloseBracket" />
112
+ <exclude name="PEAR.Commenting.FileComment.MissingPackageTag" />
113
+ <exclude name="PEAR.Commenting.FileComment.MissingAuthorTag" />
114
+ <exclude name="PEAR.Commenting.FileComment.MissingCategoryTag" />
115
+ <exclude name="PEAR.Commenting.FileComment.MissingLinkTag" />
116
+ <exclude name="PEAR.Commenting.FileComment.MissingLicenseTag" />
117
+ <exclude name="PEAR.Commenting.FileComment.MissingVersion" />
118
+ <exclude name="PEAR.Commenting.ClassComment.MissingPackageTag" />
119
+ <exclude name="PEAR.Commenting.ClassComment.MissingAuthorTag" />
120
+ <exclude name="PEAR.Commenting.ClassComment.MissingCategoryTag" />
121
+ <exclude name="PEAR.Commenting.ClassComment.MissingLinkTag" />
122
+ <exclude name="PEAR.Commenting.ClassComment.MissingLicenseTag" />
123
+ <exclude name="PEAR.Commenting.ClassComment.MissingVersion" />
124
+ <exclude name="PEAR.NamingConventions.ValidFunctionName.PrivateNoUnderscore" />
125
+ <exclude name="PEAR.Commenting.FileComment.WrongStyle" />
126
+ <exclude name="PEAR.Commenting.FileComment.Missing" />
127
+ <exclude name="PEAR.WhiteSpace.ScopeIndent.IncorrectExact" />
128
+ </rule>
129
+
130
+ <!-- Let's also check that everything is properly documented. -->
131
+ <rule ref="WordPress-Docs"/>
132
+
133
+ <!-- Add in some extra rules from other standards. -->
134
+ <rule ref="Generic.CodeAnalysis.UnusedFunctionParameter"/>
135
+ <!-- <rule ref="Generic.Commenting.Todo"/> -->
136
+
137
+ <!-- Check for PHP cross-version compatibility. -->
138
+ <!--
139
+ To enable this, the PHPCompatibilityWP standard needs
140
+ to be installed.
141
+ See the readme for installation instructions:
142
+ https://github.com/PHPCompatibility/PHPCompatibilityWP
143
+ For more information, also see:
144
+ https://github.com/PHPCompatibility/PHPCompatibility
145
+ -->
146
+
147
+ <config name="testVersion" value="5.6-"/>
148
+ <rule ref="PHPCompatibilityWP"/>
149
+
150
+
151
+ <!--
152
+ To get the optimal benefits of using WPCS, we should add a couple of
153
+ custom properties.
154
+ Adjust the values of these properties to fit our needs.
155
+
156
+ For information on additional custom properties available, check out
157
+ the wiki:
158
+ https://github.com/WordPress/WordPress-Coding-Standards/wiki/Customizable-sniff-properties
159
+ -->
160
+ <config name="minimum_supported_wp_version" value="5.4"/>
161
+
162
+ <rule ref="WordPress.WP.I18n">
163
+ <properties>
164
+ <property name="text_domain" type="array">
165
+ <element value="extendify-sdk"/>
166
+ </property>
167
+ </properties>
168
+ </rule>
169
+
170
+ <rule ref="WordPress.NamingConventions.PrefixAllGlobals">
171
+ <properties>
172
+ <property name="prefixes" type="array">
173
+ <element value="extendifysdk"/>
174
+ </property>
175
+ </properties>
176
+ </rule>
177
+
178
+
179
+ </ruleset>
extendify-sdk/app/Admin.php ADDED
@@ -0,0 +1,121 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Admin.
4
+ */
5
+
6
+ namespace Extendify\ExtendifySdk;
7
+
8
+ use Extendify\ExtendifySdk\App;
9
+ use Extendify\ExtendifySdk\User;
10
+
11
+ /**
12
+ * This class handles any file loading for the admin area.
13
+ */
14
+ class Admin
15
+ {
16
+
17
+ /**
18
+ * The instance
19
+ *
20
+ * @var $instance
21
+ */
22
+ public static $instance = null;
23
+
24
+ /**
25
+ * Adds various actions to set up the page
26
+ *
27
+ * @return self|void
28
+ */
29
+ public function __construct()
30
+ {
31
+ if (self::$instance) {
32
+ return self::$instance;
33
+ }
34
+
35
+ self::$instance = $this;
36
+ $this->loadScripts();
37
+ }
38
+
39
+ /**
40
+ * Adds scripts to the admin
41
+ *
42
+ * @return void
43
+ */
44
+ public function loadScripts()
45
+ {
46
+ \add_action(
47
+ 'admin_enqueue_scripts',
48
+ function ($hook) {
49
+ if (!current_user_can(App::$requiredCapability)) {
50
+ return;
51
+ }
52
+
53
+ if (!$this->checkItsGutenbergPost($hook)) {
54
+ return;
55
+ }
56
+
57
+ $this->addScopedScriptsAndStyles();
58
+ }
59
+ );
60
+ }
61
+
62
+ /**
63
+ * Makes sure we are on the correct page
64
+ *
65
+ * @param string $hook - An optional hook provided by WP to identify the page.
66
+ * @return boolean
67
+ */
68
+ public function checkItsGutenbergPost($hook = '')
69
+ {
70
+ if (isset($GLOBALS['typenow']) && \use_block_editor_for_post_type($GLOBALS['typenow'])) {
71
+ return $hook && in_array($hook, ['post.php', 'post-new.php'], true);
72
+ }
73
+
74
+ return false;
75
+ }
76
+
77
+ /**
78
+ * Adds various JS scripts
79
+ *
80
+ * @return void
81
+ */
82
+ public function addScopedScriptsAndStyles()
83
+ {
84
+ $version = App::$environment === 'PRODUCTION' ? App::$version : uniqid();
85
+
86
+ \wp_register_script(
87
+ App::$slug . '-scripts',
88
+ EXTENDIFYSDK_BASE_URL . 'public/build/extendify-sdk.js',
89
+ [
90
+ 'wp-api',
91
+ 'wp-i18n',
92
+ 'wp-components',
93
+ 'wp-element',
94
+ 'wp-editor',
95
+ ],
96
+ $version,
97
+ true
98
+ );
99
+ \wp_localize_script(
100
+ App::$slug . '-scripts',
101
+ 'extendifySdkData',
102
+ [
103
+ 'root' => \esc_url_raw(rest_url(APP::$slug . '/' . APP::$apiVersion)),
104
+ 'nonce' => \wp_create_nonce('wp_rest'),
105
+ 'user' => json_decode(User::data('extendifysdk_user_data'), true),
106
+ 'source' => \esc_attr(APP::$sourcePlugin),
107
+ ]
108
+ );
109
+ \wp_enqueue_script(App::$slug . '-scripts');
110
+
111
+ \wp_set_script_translations(App::$slug . '-scripts', App::$textDomain);
112
+
113
+ \wp_enqueue_style(
114
+ App::$slug . '-theme',
115
+ EXTENDIFYSDK_BASE_URL . 'public/build/extendify-sdk.css',
116
+ [],
117
+ $version,
118
+ 'all'
119
+ );
120
+ }
121
+ }
extendify-sdk/app/ApiRouter.php ADDED
@@ -0,0 +1,137 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * API router
4
+ */
5
+
6
+ namespace Extendify\ExtendifySdk;
7
+
8
+ use Extendify\ExtendifySdk\App;
9
+ use Extendify\ExtendifySdk\Http;
10
+
11
+ /**
12
+ * Simple router for the REST Endpoints
13
+ */
14
+ class ApiRouter extends \WP_REST_Controller
15
+ {
16
+
17
+ /**
18
+ * The class instance.
19
+ *
20
+ * @var $instance
21
+ */
22
+ protected static $instance = null;
23
+
24
+ /**
25
+ * The capablity required for access.
26
+ *
27
+ * @var $capability
28
+ */
29
+ protected $capability;
30
+
31
+
32
+ /**
33
+ * The constructor
34
+ */
35
+ public function __construct()
36
+ {
37
+ $this->capability = App::$requiredCapability;
38
+ add_filter(
39
+ 'rest_request_before_callbacks',
40
+ // phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.FoundInExtendedClassBeforeLastUsed
41
+ function ($response, $handler, $request) {
42
+ // Add the request to our helper class.
43
+ if ($request->get_header('x_extendify')) {
44
+ Http::init($request);
45
+ }
46
+
47
+ return $response;
48
+ },
49
+ 10,
50
+ 3
51
+ );
52
+ }
53
+
54
+ /**
55
+ * Check the authorization of the request
56
+ *
57
+ * @return boolean
58
+ */
59
+ public function checkPermission()
60
+ {
61
+ // Check for the nonce on the server (used by WP REST).
62
+ if (isset($_SERVER['HTTP_X_WP_NONCE']) && \wp_verify_nonce(sanitize_text_field(wp_unslash($_SERVER['HTTP_X_WP_NONCE'])), 'wp_rest')) {
63
+ return \current_user_can($this->capability);
64
+ }
65
+
66
+ return false;
67
+ }
68
+
69
+ /**
70
+ * Register dynamic routes
71
+ *
72
+ * @param string $namespace - The api name space.
73
+ * @param string $endpoint - The endpoint.
74
+ * @param function $callback - The callback to run.
75
+ *
76
+ * @return void
77
+ */
78
+ public function getHandler($namespace, $endpoint, $callback)
79
+ {
80
+ \register_rest_route(
81
+ $namespace,
82
+ $endpoint,
83
+ [
84
+ 'methods' => 'GET',
85
+ 'callback' => $callback,
86
+ 'permission_callback' => [
87
+ $this,
88
+ 'checkPermission',
89
+ ],
90
+ ]
91
+ );
92
+ }
93
+
94
+ /**
95
+ * The post handler
96
+ *
97
+ * @param string $namespace - The api name space.
98
+ * @param string $endpoint - The endpoint.
99
+ * @param string $callback - The callback to run.
100
+ *
101
+ * @return void
102
+ */
103
+ public function postHandler($namespace, $endpoint, $callback)
104
+ {
105
+ \register_rest_route(
106
+ $namespace,
107
+ $endpoint,
108
+ [
109
+ 'methods' => 'POST',
110
+ 'callback' => $callback,
111
+ 'permission_callback' => [
112
+ $this,
113
+ 'checkPermission',
114
+ ],
115
+ ]
116
+ );
117
+ }
118
+
119
+ /**
120
+ * The caller
121
+ *
122
+ * @param string $name - The name of the method to call.
123
+ * @param array $arguments - The arguments to pass in.
124
+ *
125
+ * @return mixed
126
+ */
127
+ public static function __callStatic($name, array $arguments)
128
+ {
129
+ $name = "{$name}Handler";
130
+ if (is_null(self::$instance)) {
131
+ self::$instance = new static();
132
+ }
133
+
134
+ $r = self::$instance;
135
+ return $r->$name(APP::$slug . '/' . APP::$apiVersion, ...$arguments);
136
+ }
137
+ }
extendify-sdk/app/App.php ADDED
@@ -0,0 +1,111 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * The App details file
4
+ */
5
+
6
+ namespace Extendify\ExtendifySdk;
7
+
8
+ use Extendify\ExtendifySdk\Plugin;
9
+
10
+ /**
11
+ * Controller for handling various app data
12
+ */
13
+ class App
14
+ {
15
+
16
+ /**
17
+ * Plugin name
18
+ *
19
+ * @var string
20
+ */
21
+ public static $name = '';
22
+
23
+ /**
24
+ * Plugin slug
25
+ *
26
+ * @var string
27
+ */
28
+ public static $slug = '';
29
+
30
+ /**
31
+ * Plugin version
32
+ *
33
+ * @var string
34
+ */
35
+ public static $version = '';
36
+
37
+ /**
38
+ * Plugin API REST version
39
+ *
40
+ * @var string
41
+ */
42
+ public static $apiVersion = 'v1';
43
+
44
+ /**
45
+ * Plugin text domain
46
+ *
47
+ * @var string
48
+ */
49
+ public static $textDomain = '';
50
+
51
+ /**
52
+ * Plugin environment
53
+ *
54
+ * @var string
55
+ */
56
+ public static $environment = '';
57
+
58
+ /**
59
+ * Host plugin
60
+ *
61
+ * @var string
62
+ */
63
+ public static $sourcePlugin = 'Not set';
64
+
65
+ /**
66
+ * Host plugin
67
+ *
68
+ * @var string
69
+ */
70
+ public static $requiredCapability = 'upload_files';
71
+
72
+ /**
73
+ * Plugin config
74
+ *
75
+ * @var array
76
+ */
77
+ public static $config = [];
78
+
79
+ /**
80
+ * Process the readme file to get version and name
81
+ *
82
+ * @return void
83
+ */
84
+ public function __construct()
85
+ {
86
+ if (isset($GLOBALS['extendifySdkSourcePlugin'])) {
87
+ self::$sourcePlugin = $GLOBALS['extendifySdkSourcePlugin'];
88
+ }
89
+
90
+ // phpcs:ignore WordPress.WP.AlternativeFunctions.file_get_contents_file_get_contents
91
+ $readme = file_get_contents(dirname(__DIR__) . '/readme.txt');
92
+
93
+ preg_match('/=== (.+) ===/', $readme, $matches);
94
+ self::$name = $matches[1];
95
+ self::$slug = strtolower(trim(preg_replace('/[^A-Za-z0-9-]+/', '-', self::$name), '-'));
96
+
97
+ preg_match('/Stable tag: ([0-9.:]+)/', $readme, $matches);
98
+ self::$version = $matches[1];
99
+
100
+ // An easy way to check if we are in dev mode is to look for a dev specific file.
101
+ $isDev = is_readable(EXTENDIFYSDK_PATH . 'node_modules') || is_readable(EXTENDIFYSDK_PATH . '.devbuild');
102
+ self::$environment = $isDev ? 'DEVELOPMENT' : 'PRODUCTION';
103
+
104
+ self::$textDomain = Plugin::getPluginInfo('TextDomain', self::$slug);
105
+
106
+ // Add the config.
107
+ // phpcs:ignore WordPress.WP.AlternativeFunctions.file_get_contents_file_get_contents
108
+ $config = file_get_contents(dirname(__DIR__) . '/config.json');
109
+ self::$config = json_decode($config, true);
110
+ }
111
+ }
extendify-sdk/app/Controllers/AuthController.php ADDED
@@ -0,0 +1,43 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Controls Auth
4
+ */
5
+
6
+ namespace Extendify\ExtendifySdk\Controllers;
7
+
8
+ use Extendify\ExtendifySdk\Http;
9
+
10
+ if (!defined('ABSPATH')) {
11
+ die('No direct access.');
12
+ }
13
+
14
+ /**
15
+ * The controller for dealing registration and authentication
16
+ */
17
+ class AuthController
18
+ {
19
+
20
+ /**
21
+ * Login a user to extendify - it will return the API key
22
+ *
23
+ * @param \WP_REST_Request $request - The request.
24
+ * @return WP_REST_Response|WP_Error
25
+ */
26
+ public static function login($request)
27
+ {
28
+ $response = Http::post('/login', $request->get_params());
29
+ return new \WP_REST_Response($response);
30
+ }
31
+
32
+ /**
33
+ * Handle registration - It will return the API key.
34
+ *
35
+ * @param \WP_REST_Request $request - The request.
36
+ * @return WP_REST_Response|WP_Error
37
+ */
38
+ public static function register($request)
39
+ {
40
+ $response = Http::post('/register', $request->get_params());
41
+ return new \WP_REST_Response($response);
42
+ }
43
+ }
extendify-sdk/app/Controllers/MetaController.php ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Controls Http requests
4
+ */
5
+
6
+ namespace Extendify\ExtendifySdk\Controllers;
7
+
8
+ use Extendify\ExtendifySdk\Http;
9
+
10
+ if (!defined('ABSPATH')) {
11
+ die('No direct access.');
12
+ }
13
+
14
+ /**
15
+ * The controller for sending little bits of info
16
+ */
17
+ class MetaController
18
+ {
19
+ /**
20
+ * Send data about a specific topic
21
+ *
22
+ * @param \WP_REST_Request $request - The request.
23
+ * @return WP_REST_Response|WP_Error
24
+ */
25
+ public static function getAll($request)
26
+ {
27
+ $response = Http::get('/meta-data', $request->get_params());
28
+ return new \WP_REST_Response($response);
29
+ }
30
+ }
extendify-sdk/app/Controllers/PingController.php ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Controls Http requests
4
+ */
5
+
6
+ namespace Extendify\ExtendifySdk\Controllers;
7
+
8
+ use Extendify\ExtendifySdk\Http;
9
+
10
+ if (!defined('ABSPATH')) {
11
+ die('No direct access.');
12
+ }
13
+
14
+ /**
15
+ * The controller for sending little bits of info
16
+ */
17
+ class PingController
18
+ {
19
+ /**
20
+ * Send data about a specific topic
21
+ *
22
+ * @param \WP_REST_Request $request - The request.
23
+ * @return WP_REST_Response|WP_Error
24
+ */
25
+ public static function ping($request)
26
+ {
27
+ $response = Http::post('/ping', $request->get_params());
28
+ return new \WP_REST_Response($response);
29
+ }
30
+ }
extendify-sdk/app/Controllers/PluginController.php ADDED
@@ -0,0 +1,68 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Controls Plugins
4
+ */
5
+
6
+ namespace Extendify\ExtendifySdk\Controllers;
7
+
8
+ use Extendify\ExtendifySdk\Plugin;
9
+
10
+ if (!defined('ABSPATH')) {
11
+ die('No direct access.');
12
+ }
13
+
14
+ /**
15
+ * The controller for plugin dependency checking, etc
16
+ */
17
+ class PluginController
18
+ {
19
+
20
+ /**
21
+ * Return all plugins
22
+ *
23
+ * @return array
24
+ */
25
+ public static function index()
26
+ {
27
+ if (! function_exists('get_plugins')) {
28
+ require_once ABSPATH . 'wp-admin/includes/plugin.php';
29
+ }
30
+
31
+ return \get_plugins();
32
+ }
33
+
34
+ /**
35
+ * List active plugins
36
+ *
37
+ * @return array
38
+ */
39
+ public static function active()
40
+ {
41
+ return \get_option('active_plugins');
42
+ }
43
+
44
+ /**
45
+ * Install plugins
46
+ *
47
+ * @param \WP_REST_Request $request - The request.
48
+ * @return bool
49
+ */
50
+ public static function install($request)
51
+ {
52
+ if (!\current_user_can('activate_plugins')) {
53
+ return new \WP_Error('not_allowed', \__('You are not allowed to activate plugins on this site.', 'extendify-sdk'));
54
+ }
55
+
56
+ $requiredPlugins = json_decode($request->get_param('plugins'), true);
57
+
58
+ foreach ($requiredPlugins as $plugin) {
59
+ $status = Plugin::install_and_activate_plugin($plugin);
60
+ if (\is_wp_error($status)) {
61
+ // Return first error encountered.
62
+ return $status;
63
+ }
64
+ }
65
+
66
+ return true;
67
+ }
68
+ }
extendify-sdk/app/Controllers/TaxonomyController.php ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Controls Taxonomies
4
+ */
5
+
6
+ namespace Extendify\ExtendifySdk\Controllers;
7
+
8
+ use Extendify\ExtendifySdk\Http;
9
+
10
+ if (!defined('ABSPATH')) {
11
+ die('No direct access.');
12
+ }
13
+
14
+ /**
15
+ * The controller for dealing with taxonomies
16
+ */
17
+ class TaxonomyController
18
+ {
19
+
20
+ /**
21
+ * Return all taxonomies
22
+ *
23
+ * @return WP_REST_Response|WP_Error
24
+ */
25
+ public static function index()
26
+ {
27
+ $response = Http::get('/airtable-taxonomies', []);
28
+ return new \WP_REST_Response($response);
29
+ }
30
+ }
extendify-sdk/app/Controllers/TemplateController.php ADDED
@@ -0,0 +1,55 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Controls Http requests
4
+ */
5
+
6
+ namespace Extendify\ExtendifySdk\Controllers;
7
+
8
+ use Extendify\ExtendifySdk\Http;
9
+
10
+ if (!defined('ABSPATH')) {
11
+ die('No direct access.');
12
+ }
13
+
14
+ /**
15
+ * The controller for dealing with templates
16
+ */
17
+ class TemplateController
18
+ {
19
+
20
+ /**
21
+ * Return info about a template
22
+ *
23
+ * @param \WP_REST_Request $request - The request.
24
+ * @return WP_REST_Response|WP_Error
25
+ */
26
+ public static function index($request)
27
+ {
28
+ $response = Http::post('/airtable-data', $request->get_params());
29
+ return new \WP_REST_Response($response);
30
+ }
31
+
32
+ /**
33
+ * Get related templates
34
+ *
35
+ * @param \WP_REST_Request $request - The request.
36
+ * @return WP_REST_Response|WP_Error
37
+ */
38
+ public static function related($request)
39
+ {
40
+ $response = Http::post('/templates/related', $request->get_params());
41
+ return new \WP_REST_Response($response);
42
+ }
43
+
44
+ /**
45
+ * Send data about a specific template
46
+ *
47
+ * @param \WP_REST_Request $request - The request.
48
+ * @return WP_REST_Response|WP_Error
49
+ */
50
+ public static function ping($request)
51
+ {
52
+ $response = Http::post('/airtable-data', $request->get_params());
53
+ return new \WP_REST_Response($response);
54
+ }
55
+ }
extendify-sdk/app/Controllers/UserController.php ADDED
@@ -0,0 +1,68 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Controls User info
4
+ */
5
+
6
+ namespace Extendify\ExtendifySdk\Controllers;
7
+
8
+ use Extendify\ExtendifySdk\Http;
9
+ use Extendify\ExtendifySdk\User;
10
+
11
+ if (!defined('ABSPATH')) {
12
+ die('No direct access.');
13
+ }
14
+
15
+ /**
16
+ * The controller for managing user data like API keys, etc
17
+ */
18
+ class UserController
19
+ {
20
+
21
+ /**
22
+ * Return the current user state
23
+ *
24
+ * @return array
25
+ */
26
+ public static function show()
27
+ {
28
+ return new \WP_REST_Response(User::state());
29
+ }
30
+
31
+ /**
32
+ * Return meta info about the current user
33
+ *
34
+ * @param \WP_REST_Request $request - The request.
35
+ * @return array
36
+ */
37
+ public static function meta($request)
38
+ {
39
+ $key = \sanitize_text_field(\wp_unslash($request->get_param('key')));
40
+ return new \WP_REST_Response(User::data($key));
41
+ }
42
+
43
+ /**
44
+ * Persist the data
45
+ *
46
+ * @param \WP_REST_Request $request - The request.
47
+ * @return array
48
+ */
49
+ public static function store($request)
50
+ {
51
+ $userData = json_decode($request->get_param('data'), true);
52
+ \update_user_meta(\get_current_user_id(), 'extendifysdk_user_data', $userData);
53
+
54
+ return new \WP_REST_Response(User::state());
55
+ }
56
+
57
+ /**
58
+ * Sign up the user to the mailing list.
59
+ *
60
+ * @param \WP_REST_Request $request - The request.
61
+ * @return WP_REST_Response|WP_Error
62
+ */
63
+ public static function mailingList($request)
64
+ {
65
+ $response = Http::post('/register-mailing-list', $request->get_params());
66
+ return new \WP_REST_Response($response);
67
+ }
68
+ }
extendify-sdk/app/Http.php ADDED
@@ -0,0 +1,148 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Helper class for making http requests
4
+ */
5
+
6
+ namespace Extendify\ExtendifySdk;
7
+
8
+ use Extendify\ExtendifySdk\App;
9
+ use Extendify\ExtendifySdk\User;
10
+
11
+ /**
12
+ * Controller for http communication
13
+ */
14
+ class Http
15
+ {
16
+
17
+ /**
18
+ * The api endpoint
19
+ *
20
+ * @var string
21
+ */
22
+ public $baseUrl = '';
23
+
24
+ /**
25
+ * Request data sent to the server
26
+ *
27
+ * @var array
28
+ */
29
+ public $data = [];
30
+
31
+ /**
32
+ * Any headers required
33
+ *
34
+ * @var array
35
+ */
36
+ public $headers = [];
37
+
38
+ /**
39
+ * The class instance.
40
+ *
41
+ * @var $instance
42
+ */
43
+ protected static $instance = null;
44
+
45
+ /**
46
+ * Set up the base object to send with every request
47
+ *
48
+ * @param \WP_REST_Request $request - The request.
49
+ * @return void
50
+ */
51
+ public function __construct($request)
52
+ {
53
+ // Redundant, but extra prodection!
54
+ if (!\wp_verify_nonce(sanitize_text_field(wp_unslash($request->get_header('x_wp_nonce'))), 'wp_rest')) {
55
+ return;
56
+ }
57
+
58
+ // Some special cases for development.
59
+ $this->baseUrl = $request->get_header('x_extendify_dev_mode') !== 'false' ? App::$config['api']['dev'] : App::$config['api']['live'];
60
+ $this->baseUrl = $request->get_header('x_extendify_local_mode') !== 'false' ? App::$config['api']['local'] : $this->baseUrl;
61
+
62
+ $this->data = [
63
+ 'mode' => App::$environment,
64
+ 'uuid' => User::data('uuid'),
65
+ 'sdk_version' => App::$version,
66
+ 'wp_plugins' => $request->get_method() === 'POST' ? array_keys(\get_plugins()) : [],
67
+ ];
68
+
69
+ $this->headers = [
70
+ 'Accept' => 'application/json',
71
+ 'referer' => $request->get_header('referer'),
72
+ 'user_agent' => $request->get_header('user_agent'),
73
+ ];
74
+ }
75
+
76
+ /**
77
+ * Register dynamic routes
78
+ *
79
+ * @param string $endpoint - The endpoint.
80
+ * @param array $data - The data to include.
81
+ * @param array $headers - The headers to include.
82
+ *
83
+ * @return array
84
+ */
85
+ public function getHandler($endpoint, $data = [], $headers = [])
86
+ {
87
+ $url = \esc_url_raw(
88
+ \add_query_arg(
89
+ \urlencode_deep(\urldecode_deep(array_merge($this->data, $data))),
90
+ $this->baseUrl . $endpoint
91
+ )
92
+ );
93
+
94
+ $response = \wp_remote_get(
95
+ $url,
96
+ [
97
+ 'headers' => array_merge($this->headers, $headers),
98
+ ]
99
+ );
100
+
101
+ $responseBody = \wp_remote_retrieve_body($response);
102
+ return json_decode($responseBody, true);
103
+ }
104
+
105
+ /**
106
+ * Register dynamic routes
107
+ *
108
+ * @param string $endpoint - The endpoint.
109
+ * @param array $data - The arguments to include.
110
+ * @param array $headers - The headers to include.
111
+ *
112
+ * @return array
113
+ */
114
+ public function postHandler($endpoint, $data = [], $headers = [])
115
+ {
116
+ $response = \wp_remote_post(
117
+ $this->baseUrl . $endpoint,
118
+ [
119
+ 'headers' => array_merge($this->headers, $headers),
120
+ 'body' => array_merge($this->data, $data),
121
+ ]
122
+ );
123
+
124
+ $responseBody = \wp_remote_retrieve_body($response);
125
+ return json_decode($responseBody, true);
126
+ }
127
+
128
+ /**
129
+ * The caller
130
+ *
131
+ * @param string $name - The name of the method to call.
132
+ * @param array $arguments - The arguments to pass in.
133
+ *
134
+ * @return mixed
135
+ */
136
+ public static function __callStatic($name, array $arguments)
137
+ {
138
+ if ($name === 'init') {
139
+ self::$instance = new static($arguments[0]);
140
+ return;
141
+ }
142
+
143
+ $name = "{$name}Handler";
144
+ $r = self::$instance;
145
+
146
+ return $r->$name(...$arguments);
147
+ }
148
+ }
extendify-sdk/app/Plugin.php ADDED
@@ -0,0 +1,335 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ // phpcs:ignoreFile
3
+ // This class was copied from JetPack (mostly)
4
+ // so will be a bit of work to refactor
5
+ /**
6
+ * Manage plugin dependencies
7
+ */
8
+
9
+ namespace Extendify\ExtendifySdk;
10
+
11
+ class Plugin
12
+ {
13
+ /**
14
+ * Install and activate a plugin.
15
+ *
16
+ * @param string $slug Plugin slug.
17
+ *
18
+ * @return bool|WP_Error True if installation succeeded, error object otherwise.
19
+ */
20
+ public static function install_and_activate_plugin($slug)
21
+ {
22
+ $plugin_id = self::get_plugin_id_by_slug($slug);
23
+ if (! $plugin_id) {
24
+ $installed = self::install_plugin($slug);
25
+ if (is_wp_error($installed)) {
26
+ return $installed;
27
+ }
28
+ $plugin_id = self::get_plugin_id_by_slug($slug);
29
+ } elseif (is_plugin_active($plugin_id)) {
30
+ return true; // Already installed and active.
31
+ }
32
+
33
+ if (! current_user_can('activate_plugins')) {
34
+ return new \WP_Error('not_allowed', __('You are not allowed to activate plugins on this site.', 'templates_sdk'));
35
+ }
36
+
37
+ $activated = \activate_plugin($plugin_id);
38
+ if (\is_wp_error($activated)) {
39
+ return $activated;
40
+ }
41
+
42
+ return true;
43
+ }
44
+
45
+ /**
46
+ * Install a plugin.
47
+ *
48
+ * @param string $slug Plugin slug.
49
+ *
50
+ * @return bool|WP_Error True if installation succeeded, error object otherwise.
51
+ */
52
+ public static function install_plugin($slug)
53
+ {
54
+ if (\is_multisite() && !\current_user_can('manage_network')) {
55
+ return new \WP_Error('not_allowed', __('You are not allowed to install plugins on this site.', 'templates_sdk'));
56
+ }
57
+ require_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php';
58
+ require_once ABSPATH . 'wp-admin/includes/plugin.php';
59
+ require_once ABSPATH . 'wp-admin/includes/plugin-install.php';
60
+ require_once ABSPATH . 'wp-admin/includes/file.php';
61
+ require_once ABSPATH . 'wp-admin/includes/misc.php';
62
+ $installer = new \Plugin_Upgrader(new Skin());
63
+ $zip_url = self::generate_wordpress_org_plugin_download_link($slug);
64
+
65
+ $result = $installer->install($zip_url);
66
+
67
+ if (is_wp_error($result)) {
68
+ return $result;
69
+ }
70
+
71
+ $plugin = self::get_plugin_id_by_slug($slug);
72
+ $error_code = 'install_error';
73
+ if (! $plugin) {
74
+ $error = __('There was an error installing your plugin', 'templates_sdk');
75
+ }
76
+
77
+ if (! $result) {
78
+ $error_code = $installer->skin->get_main_error_code();
79
+ $message = $installer->skin->get_main_error_message();
80
+ $error = $message ? $message : __('An unknown error occurred during installation', 'templates_sdk');
81
+ }
82
+
83
+ if (! empty($error)) {
84
+ return new \WP_Error($error_code, $error, 400);
85
+ }
86
+
87
+ return (array) $installer->skin->get_upgrade_messages();
88
+ }
89
+
90
+ /**
91
+ * Get WordPress.org zip download link from a plugin slug
92
+ *
93
+ * @param string $plugin_slug Plugin slug.
94
+ */
95
+ protected static function generate_wordpress_org_plugin_download_link($plugin_slug)
96
+ {
97
+ return "https://downloads.wordpress.org/plugin/$plugin_slug.latest-stable.zip";
98
+ }
99
+
100
+ /**
101
+ * Get the plugin ID (composed of the plugin slug and the name of the main plugin file) from a plugin slug.
102
+ *
103
+ * @param string $slug Plugin slug.
104
+ */
105
+ public static function get_plugin_id_by_slug($slug)
106
+ {
107
+ // Check if get_plugins() function exists. This is required on the front end of the
108
+ // site, since it is in a file that is normally only loaded in the admin.
109
+ if (! function_exists('get_plugins')) {
110
+ require_once ABSPATH . 'wp-admin/includes/plugin.php';
111
+ }
112
+
113
+ /** This filter is documented in wp-admin/includes/class-wp-plugins-list-table.php */
114
+ $plugins = apply_filters('all_plugins', get_plugins());
115
+ if (! is_array($plugins)) {
116
+ return false;
117
+ }
118
+
119
+ foreach ($plugins as $plugin_file => $plugin_data) {
120
+ if (self::get_slug_from_file_path($plugin_file) === $slug) {
121
+ return $plugin_file;
122
+ }
123
+ }
124
+
125
+ return false;
126
+ }
127
+
128
+ /**
129
+ * Get the plugin slug from the plugin ID (composed of the plugin slug and the name of the main plugin file)
130
+ *
131
+ * @param string $plugin_file Plugin file (ID -- e.g. hello-dolly/hello.php).
132
+ */
133
+ protected static function get_slug_from_file_path($plugin_file)
134
+ {
135
+ // Similar to get_plugin_slug() method.
136
+ $slug = dirname($plugin_file);
137
+ if ('.' === $slug) {
138
+ $slug = preg_replace('/(.+)\.php$/', '$1', $plugin_file);
139
+ }
140
+
141
+ return $slug;
142
+ }
143
+
144
+ /**
145
+ * Get the activation status for a plugin.
146
+ *
147
+ * @since 8.9.0
148
+ *
149
+ * @param string $plugin_file The plugin file to check.
150
+ * @return string Either 'network-active', 'active' or 'inactive'.
151
+ */
152
+ public static function get_plugin_status($plugin_file)
153
+ {
154
+ if (is_plugin_active_for_network($plugin_file)) {
155
+ return 'network-active';
156
+ }
157
+
158
+ if (is_plugin_active($plugin_file)) {
159
+ return 'active';
160
+ }
161
+
162
+ return 'inactive';
163
+ }
164
+
165
+ /**
166
+ * Returns a list of all plugins in the site.
167
+ *
168
+ * @since 8.9.0
169
+ * @uses get_plugins()
170
+ *
171
+ * @return array
172
+ */
173
+ public static function get_plugins()
174
+ {
175
+ if (! function_exists('get_plugins')) {
176
+ require_once ABSPATH . 'wp-admin/includes/plugin.php';
177
+ }
178
+ /** This filter is documented in wp-admin/includes/class-wp-plugins-list-table.php */
179
+ $plugins = apply_filters('all_plugins', get_plugins());
180
+
181
+ if (is_array($plugins) && ! empty($plugins)) {
182
+ foreach ($plugins as $plugin_slug => $plugin_data) {
183
+ $plugins[ $plugin_slug ]['active'] = in_array(
184
+ self::get_plugin_status($plugin_slug),
185
+ array( 'active', 'network-active' ),
186
+ true
187
+ );
188
+ }
189
+ return $plugins;
190
+ }
191
+
192
+ return array();
193
+ }
194
+
195
+ /**
196
+ * Will return info about a plugin
197
+ *
198
+ * @param string $identifier The key of the plugin info.
199
+ * @param string $plugin_id The plugin identifier string 'editorplus-sdk.
200
+ * @return string
201
+ */
202
+ public static function getPluginInfo($identifier, $plugin_id)
203
+ {
204
+ if (!function_exists('get_plugins')) {
205
+ include_once ABSPATH . 'wp-admin/includes/plugin.php';
206
+ }
207
+
208
+ foreach (get_plugins() as $plugin => $data) {
209
+ if ($data[$identifier] === $plugin_id) {
210
+ return $plugin;
211
+ }
212
+ }
213
+
214
+ return false;
215
+ }
216
+ }
217
+
218
+ require_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php';
219
+ require_once ABSPATH . 'wp-admin/includes/file.php';
220
+
221
+ /**
222
+ * Allows us to capture that the site doesn't have proper file system access.
223
+ * In order to update the plugin.
224
+ */
225
+ class Skin extends \Automatic_Upgrader_Skin
226
+ {
227
+ /**
228
+ * Stores the last error key;
229
+ **/
230
+ protected $main_error_code = 'install_error';
231
+
232
+ /**
233
+ * Stores the last error message.
234
+ **/
235
+ protected $main_error_message = 'An unknown error occurred during installation';
236
+
237
+ /**
238
+ * Overwrites the set_upgrader to be able to tell if we e ven have the ability to write to the files.
239
+ *
240
+ * @param WP_Upgrader $upgrader
241
+ *
242
+ */
243
+ public function set_upgrader(&$upgrader)
244
+ {
245
+ parent::set_upgrader($upgrader);
246
+
247
+ // Check if we even have permission to.
248
+ $result = $upgrader->fs_connect(array( WP_CONTENT_DIR, WP_PLUGIN_DIR ));
249
+ if (! $result) {
250
+ // set the string here since they are not available just yet
251
+ $upgrader->generic_strings();
252
+ $this->feedback('fs_unavailable');
253
+ }
254
+ }
255
+
256
+ /**
257
+ * Overwrites the error function
258
+ */
259
+ public function error($error)
260
+ {
261
+ if (is_wp_error($error)) {
262
+ $this->feedback($error);
263
+ }
264
+ }
265
+
266
+ private function set_main_error_code($code)
267
+ {
268
+ // Don't set the process_failed as code since it is not that helpful unless we don't have one already set.
269
+ $this->main_error_code = ($code === 'process_failed' && $this->main_error_code ? $this->main_error_code : $code);
270
+ }
271
+
272
+ private function set_main_error_message($message, $code)
273
+ {
274
+ // Don't set the process_failed as message since it is not that helpful unless we don't have one already set.
275
+ $this->main_error_message = ($code === 'process_failed' && $this->main_error_code ? $this->main_error_code : $message);
276
+ }
277
+
278
+ public function get_main_error_code()
279
+ {
280
+ return $this->main_error_code;
281
+ }
282
+
283
+ public function get_main_error_message()
284
+ {
285
+ return $this->main_error_message;
286
+ }
287
+
288
+ /**
289
+ * Overwrites the feedback function
290
+ *
291
+ * @param string|array|WP_Error $data Data.
292
+ * @param mixed ...$args Optional text replacements.
293
+ */
294
+ public function feedback($data, ...$args)
295
+ {
296
+ $current_error = null;
297
+ if (is_wp_error($data)) {
298
+ $this->set_main_error_code($data->get_error_code());
299
+ $string = $data->get_error_message();
300
+ } elseif (is_array($data)) {
301
+ return;
302
+ } else {
303
+ $string = $data;
304
+ }
305
+
306
+ if (! empty($this->upgrader->strings[$string])) {
307
+ $this->set_main_error_code($string);
308
+
309
+ $current_error = $string;
310
+ $string = $this->upgrader->strings[$string];
311
+ }
312
+
313
+ if (strpos($string, '%') !== false) {
314
+ if (! empty($args)) {
315
+ $string = vsprintf($string, $args);
316
+ }
317
+ }
318
+
319
+ $string = trim($string);
320
+ $string = wp_kses(
321
+ $string,
322
+ array(
323
+ 'a' => array(
324
+ 'href' => true
325
+ ),
326
+ 'br' => true,
327
+ 'em' => true,
328
+ 'strong' => true,
329
+ )
330
+ );
331
+
332
+ $this->set_main_error_message($string, $current_error);
333
+ $this->messages[] = $string;
334
+ }
335
+ }
extendify-sdk/app/User.php ADDED
@@ -0,0 +1,141 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Helper class for interacting with the user
4
+ */
5
+
6
+ namespace Extendify\ExtendifySdk;
7
+
8
+ /**
9
+ * Helper class for interacting with the user
10
+ */
11
+ class User
12
+ {
13
+
14
+ /**
15
+ * User unique, anonymous identifier
16
+ *
17
+ * @var string
18
+ */
19
+ public $uuid = '';
20
+
21
+ /**
22
+ * A WP user
23
+ *
24
+ * @var \WP_User
25
+ */
26
+ protected $user = null;
27
+
28
+ /**
29
+ * The DB key for scoping
30
+ *
31
+ * @var string
32
+ */
33
+ protected $key = 'extendifysdk_';
34
+
35
+ /**
36
+ * The class instance.
37
+ *
38
+ * @var $instance
39
+ */
40
+ protected static $instance = null;
41
+
42
+ /**
43
+ * Set up the user
44
+ *
45
+ * @param WP_User $user - A WP User object.
46
+ * @return void
47
+ */
48
+ public function __construct($user)
49
+ {
50
+ $this->user = $user;
51
+ }
52
+
53
+ /**
54
+ * Return the user ID
55
+ *
56
+ * @return void
57
+ */
58
+ private function setupUuid()
59
+ {
60
+ $uuid = \get_user_meta($this->user->ID, $this->key . 'uuid', true);
61
+ if (!$uuid) {
62
+ $id = \wp_hash(\wp_json_encode($this->user));
63
+ \update_user_meta($this->user->ID, $this->key . 'uuid', $id);
64
+ }
65
+
66
+ $this->uuid = $uuid;
67
+ }
68
+
69
+ /**
70
+ * Returns data about the user
71
+ * Use it like User::data('ID') to get the user id
72
+ *
73
+ * @param string $arguments - Right now a string of arguments, like ID.
74
+ * @return mixed - Data about the user.
75
+ */
76
+ private function dataHandler($arguments)
77
+ {
78
+ // Right now assume a single argument, but could expand to multiple.
79
+ if (isset($this->user->$arguments)) {
80
+ return $this->user->$arguments;
81
+ }
82
+
83
+ return \get_user_meta($this->user->ID, $this->key . $arguments, true);
84
+ }
85
+
86
+ /**
87
+ * Returns the application state for he current user
88
+ * Use it like User::data('ID') to get the user id
89
+ *
90
+ * @return string - JSON representation of the current state
91
+ */
92
+ private function stateHandler()
93
+ {
94
+ $state = \get_user_meta($this->user->ID, $this->key . 'user_data');
95
+
96
+ // Add some state boilerplate code for the first load.
97
+ if (!isset($state[0])) {
98
+ $state[0] = '{}';
99
+ }
100
+
101
+ $userData = json_decode($state[0], true);
102
+ if (!isset($userData['version'])) {
103
+ $userData['version'] = 0;
104
+ }
105
+
106
+ // Get the current default number of imports allowed.
107
+ if (!isset($userData['state']['allowedImports'])) {
108
+ $currentImports = Http::get('/max-free-imports');
109
+ $userData['state']['allowedImports'] = is_numeric($currentImports) && $currentImports > 0 ? $currentImports : 3;
110
+ }
111
+
112
+ $userData['state']['uuid'] = self::data('uuid');
113
+ $userData['state']['canInstallPlugins'] = \current_user_can('install_plugins');
114
+ $userData['state']['canActivatePlugins'] = \current_user_can('activate_plugins');
115
+
116
+ return \wp_json_encode($userData);
117
+ }
118
+
119
+ /**
120
+ * Allows to dynamically setup the user with uuid
121
+ * Use it like User::data('ID') to get the user id
122
+ *
123
+ * @param string $name - The name of the method to call.
124
+ * @param array $arguments - The arguments to pass in.
125
+ *
126
+ * @return mixed
127
+ */
128
+ public static function __callStatic($name, array $arguments)
129
+ {
130
+ $name = "{$name}Handler";
131
+ if (is_null(self::$instance)) {
132
+ require_once ABSPATH . 'wp-includes/pluggable.php';
133
+ self::$instance = new static(\wp_get_current_user());
134
+ $r = self::$instance;
135
+ $r->setupUuid();
136
+ }
137
+
138
+ $r = self::$instance;
139
+ return $r->$name(...$arguments);
140
+ }
141
+ }
extendify-sdk/bootstrap.php ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Bootstrap the application
4
+ */
5
+
6
+ use Extendify\ExtendifySdk\Admin;
7
+
8
+ if (!defined('ABSPATH')) {
9
+ die('No direct access.');
10
+ }
11
+
12
+ if (!defined('EXTENDIFYSDK_PATH')) {
13
+ define('EXTENDIFYSDK_PATH', \plugin_dir_path(__FILE__));
14
+ }
15
+
16
+ if (is_readable(EXTENDIFYSDK_PATH . 'vendor/autoload.php')) {
17
+ require EXTENDIFYSDK_PATH . 'vendor/autoload.php';
18
+ }
19
+
20
+ $extendifysdkAdmin = new Admin();
21
+
22
+ require EXTENDIFYSDK_PATH . 'routes/api.php';
23
+ require EXTENDIFYSDK_PATH . 'editorplus/EditorPlus.php';
24
+
25
+ \add_action(
26
+ 'init',
27
+ function () {
28
+ // Hard-coded to run only within Editor Plus for now.
29
+ if (isset($GLOBALS['extendifySdkSourcePlugin']) && in_array($GLOBALS['extendifySdkSourcePlugin'], ['Editor Plus'], true)) {
30
+ require EXTENDIFYSDK_PATH . 'support/notices.php';
31
+ }
32
+
33
+ \load_plugin_textdomain('extendify-sdk', false, EXTENDIFYSDK_PATH . 'languages');
34
+ }
35
+ );
extendify-sdk/config.json ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
1
+ {
2
+ "api": {
3
+ "live": "https://dashboard.extendify.com/api",
4
+ "dev": "https://testing.extendify.com/api",
5
+ "local": "http://templates.test/api"
6
+ }
7
+ }
extendify-sdk/editorplus/EditorPlus.php ADDED
@@ -0,0 +1,224 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Handles editor related changes.
4
+ * Loaded (or not) in /bootstrap.php
5
+ */
6
+
7
+ if (!class_exists('edpl__EditorPlus')) {
8
+ // phpcs:ignore Squiz.Classes.ClassFileName.NoMatch,Squiz.Commenting.ClassComment.Missing,PEAR.Commenting.ClassComment.Missing
9
+ final class ExtendifySdkEditorPlus
10
+ {
11
+
12
+ /**
13
+ * A reference to an instance of this class.
14
+ *
15
+ * @var $instance
16
+ */
17
+ public static $instance;
18
+
19
+ /**
20
+ * The array of templates that this plugin tracks.
21
+ *
22
+ * @var array $templates
23
+ */
24
+ protected $templates;
25
+
26
+ /**
27
+ * Returns an instance of this class.
28
+ *
29
+ * @return self
30
+ */
31
+ public static function getInstance()
32
+ {
33
+ if (!current_user_can('install_plugins')) {
34
+ return;
35
+ }
36
+
37
+ if (is_null(self::$instance)) {
38
+ self::$instance = new ExtendifySdkEditorPlus();
39
+ }
40
+
41
+ return self::$instance;
42
+ }
43
+
44
+ /**
45
+ * Initializes the plugin by setting filters and administration functions.
46
+ */
47
+ public function __construct()
48
+ {
49
+ if ($this->isSupported()) {
50
+ $this->templates = [];
51
+
52
+ \add_action(
53
+ 'admin_enqueue_scripts',
54
+ function () {
55
+ // phpcs:ignore WordPress.WP.EnqueuedResourceParameters.NoExplicitVersion
56
+ \wp_enqueue_script(
57
+ 'extendifysdk-editorplus-scripts',
58
+ EXTENDIFYSDK_BASE_URL . 'public/editorplus/editorplus.min.js',
59
+ [],
60
+ false,
61
+ true
62
+ );
63
+ }
64
+ );
65
+
66
+ add_action('wp_head', [$this, 'enqueueStylesheet']);
67
+
68
+ add_filter(
69
+ 'theme_page_templates',
70
+ [
71
+ $this,
72
+ 'addNewTemplate',
73
+ ]
74
+ );
75
+
76
+ // Add a filter to the save post to inject out template into the page cache.
77
+ add_filter(
78
+ 'wp_insert_post_data',
79
+ [
80
+ $this,
81
+ 'registerProjectTemplates',
82
+ ]
83
+ );
84
+ // Add a filter to the template include to determine if the page has our template assigned and return it's path.
85
+ add_filter(
86
+ 'template_include',
87
+ [
88
+ $this,
89
+ 'viewProjectTemplate',
90
+ ]
91
+ );
92
+
93
+ $this->templates = ['editorplus-template.php' => 'Extendify Template'];
94
+ add_filter(
95
+ 'body_class',
96
+ function ($classes) {
97
+ $classes[] = 'eplus_styles';
98
+ return $classes;
99
+ }
100
+ );
101
+
102
+ // Registering meta data to store editorplus generated stylesheet of template.
103
+ $postTypes = get_post_types(['_builtin' => false], 'names', 'and');
104
+ $postTypes['post'] = 'post';
105
+ foreach ($postTypes as $postType) {
106
+ register_meta(
107
+ $postType,
108
+ 'extendify_custom_stylesheet',
109
+ [
110
+ 'show_in_rest' => true,
111
+ 'single' => true,
112
+ 'type' => 'string',
113
+ 'default' => '',
114
+ ]
115
+ );
116
+ }
117
+ }//end if
118
+ }
119
+
120
+ /**
121
+ * Used to echo out page template stylesheet if the page template is not active.
122
+ *
123
+ * @return void
124
+ */
125
+ public function enqueueStylesheet()
126
+ {
127
+ if (!isset($GLOBALS['post']) || !$GLOBALS['post']) {
128
+ return;
129
+ }
130
+
131
+ $post = $GLOBALS['post'];
132
+ $cssContent = apply_filters(
133
+ 'extendifysdk_template_css',
134
+ get_post_meta($post->ID, 'extendify_custom_stylesheet', true),
135
+ $post
136
+ );
137
+
138
+ // Note that esc_html() cannot be used because `div &gt; span` is not interpreted properly.
139
+ // See: https://github.com/WordPress/WordPress/blob/ccdb1766aead26d4cef79badb015bb2727fefd59/wp-includes/theme.php#L1824-L1833 for reference.
140
+ // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
141
+ echo "<style id='extendify-custom-stylesheet' type='text/css'>" . wp_strip_all_tags($cssContent) . '</style>';
142
+ }
143
+
144
+ /**
145
+ * Will check if page templates are supported in the installed wp version.
146
+ *
147
+ * @return bool
148
+ */
149
+ public function isSupported()
150
+ {
151
+ return version_compare(floatval(get_bloginfo('version')), '4.7', '>');
152
+ }
153
+
154
+ /**
155
+ * Adds our template to the page dropdown for v4.7+
156
+ *
157
+ * @param array $postsTemplates - Array of page templates.
158
+ * @return array
159
+ */
160
+ public function addNewTemplate($postsTemplates)
161
+ {
162
+ return array_merge($postsTemplates, $this->templates);
163
+ }
164
+
165
+ /**
166
+ * Adds our template to the pages cache in order to trick WordPress,
167
+ * into thinking the template file exists where it doens't really exist.
168
+ *
169
+ * @param array $attributes - The attributes.
170
+ * @return array
171
+ */
172
+ public function registerProjectTemplates($attributes)
173
+ {
174
+ // Create the key used for the themes cache.
175
+ $cacheKey = 'page_templates-' . \wp_hash(get_theme_root() . '/' . get_stylesheet());
176
+ // Retrieve the cache list.
177
+ // If it doesn't exist, or it's empty prepare an array.
178
+ $templates = wp_get_theme()->get_page_templates();
179
+ if (empty($templates)) {
180
+ $templates = [];
181
+ }
182
+
183
+ // New cache, therefore remove the old one.
184
+ wp_cache_delete($cacheKey, 'themes');
185
+ // Now add our template to the list of templates by merging our templates.
186
+ // with the existing templates array from the cache.
187
+ $templates = array_merge($templates, $this->templates);
188
+ // Add the modified cache to allow WordPress to pick it up for listing available templates.
189
+ wp_cache_add($cacheKey, $templates, 'themes', 1800);
190
+ return $attributes;
191
+ }
192
+
193
+ /**
194
+ * Checks if the template is assigned to the page.
195
+ *
196
+ * @param string $template - The template.
197
+ * @return string
198
+ */
199
+ public function viewProjectTemplate($template)
200
+ {
201
+ $post = $GLOBALS['post'];
202
+ if (!$post) {
203
+ return $template;
204
+ }
205
+
206
+ $currentTemplate = get_post_meta($post->ID, '_wp_page_template', true);
207
+
208
+ // Check that the set template is one we have defined.
209
+ if (!is_string($currentTemplate) || !array_key_exists($currentTemplate, $this->templates)) {
210
+ return $template;
211
+ }
212
+
213
+ $file = plugin_dir_path(__FILE__) . $currentTemplate;
214
+ if (!file_exists($file)) {
215
+ return $template;
216
+ }
217
+
218
+ return $file;
219
+ }
220
+ // phpcs:ignore Squiz.Classes.ClassDeclaration.SpaceBeforeCloseBrace
221
+ }
222
+
223
+ add_action('after_setup_theme', ['ExtendifySdkEditorPlus', 'getInstance']);
224
+ }//end if
extendify-sdk/editorplus/editorplus-template.php ADDED
@@ -0,0 +1,60 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Template Name: Extendify Template
4
+ * Template Post Type: post, page
5
+ */
6
+
7
+ $extendifysdkCustomStyles = get_post_meta(
8
+ isset($GLOBALS['post']) ? $GLOBALS['post']->ID : 0,
9
+ 'extendify_custom_stylesheet',
10
+ true
11
+ );
12
+
13
+ ?>
14
+ <?php wp_head(); ?>
15
+ <body <?php body_class(); ?>>
16
+ <div class="ep-temp-container ep-container">
17
+
18
+ <div class="ep-temp-entry-content">
19
+ <?php
20
+ if (have_posts()) {
21
+ while (have_posts()) {
22
+ the_post();
23
+ the_content();
24
+ }
25
+ }
26
+ ?>
27
+
28
+ </div>
29
+
30
+
31
+ </div><!-- #site-content -->
32
+ <style>
33
+ .ep-temp-container {
34
+ margin-left: auto;
35
+ margin-right: auto;
36
+ min-width: 1280px;
37
+ }
38
+ .ep-temp-container .alignfull {
39
+ min-width: 1280px !important;
40
+ }
41
+ @media(min-width: 700px) {
42
+ .ep-temp-container [class*=extendify-] [class*=wp-block] > * {
43
+ margin-top: 0px;
44
+ }
45
+ .ep-temp-container [class*=wp-block] > * .wp-block-button__link {
46
+ border-radius: 0px !important;
47
+ }
48
+ .ep-temp-container .wp-block-image:not(.alignwide):not(.alignfull):not(.alignleft):not(.alignright):not(.aligncenter) {
49
+ margin-top:0px;
50
+ }
51
+ body {background-color: #fff;}
52
+ html, body {
53
+ font-size: 16px !important;
54
+ }
55
+ }
56
+ </style>
57
+ </body>
58
+
59
+ <?php
60
+ wp_footer();
extendify-sdk/editorplus/editorplus.js ADDED
@@ -0,0 +1,244 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import { select, dispatch } from '@wordpress/data'
2
+
3
+ /**
4
+ * Will check if the given CSSRule contains malicious 3rd party URL to secure against XSS
5
+ * @param {CSSRule} rule
6
+ * @return {boolean} isMalicious
7
+ */
8
+
9
+ function _hasMaliciousURL(rule) {
10
+
11
+ let isMalicious = false
12
+
13
+ if (!(rule instanceof CSSRule)) return false
14
+
15
+ // only allowing airtable API origin
16
+ let allowedOrigins = [ 'https://dl.airtable.com' ]
17
+
18
+ let urlRegex = /[(http(s)?)://(www.)?a-zA-Z0-9@:%._+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_+.~#?&//=]*)/g
19
+
20
+ let matchedURLS = rule.cssText.match(urlRegex) ?? []
21
+
22
+ for (const requestURL of matchedURLS) {
23
+
24
+ try {
25
+ let parsedURL = new URL(requestURL)
26
+ let isNotAllowed = !allowedOrigins.includes(parsedURL.origin)
27
+
28
+ if (isNotAllowed) {
29
+ isMalicious = true
30
+ break
31
+ }
32
+ } catch (e) {
33
+
34
+ // verifying if the regex matched a URL, because regex can mess up due to URL in between other strings
35
+ let isUrl = ['https://', 'http://', '.com'].some(urlPart => requestURL.indexOf(urlPart) !== -1)
36
+ let isVerifiedOrigin = requestURL.indexOf(allowedOrigins[0]) !== -1
37
+
38
+ if (isUrl && !isVerifiedOrigin) {
39
+ isMalicious = true
40
+ break
41
+ }
42
+
43
+ }
44
+
45
+ }
46
+
47
+ return isMalicious
48
+ }
49
+
50
+ /**
51
+ * Will inject the given css as an stylesheet in the editor
52
+ * @param {string} css
53
+ * @return {void}
54
+ */
55
+
56
+ function injectStyleSheetInEditor(css = window.wp.data.select('core/editor').getEditedPostAttribute('meta')?.extendify_custom_stylesheet ?? '') {
57
+ if (typeof css !== 'string') return
58
+
59
+ css = css.replace(/(.eplus_styles)/g, '')
60
+
61
+ let extendifyRoot = document.querySelector('#extendify-root')
62
+ let styleID = 'extendify-custom-stylesheet'
63
+
64
+ if (document.getElementById(styleID)) {
65
+ // stylesheet already exists
66
+ document.getElementById(styleID).innerHTML = css
67
+ } else {
68
+ let styleElement = document.createElement('style')
69
+
70
+ styleElement.id = styleID
71
+ styleElement.type = 'text/css'
72
+
73
+ styleElement.appendChild(document.createTextNode(css))
74
+ extendifyRoot.appendChild(styleElement)
75
+ }
76
+ }
77
+
78
+ /**
79
+ * Will provide filtered css from the given sheet
80
+ * @param {CSSStyleSheet} sheet
81
+ * @param {string[]} prefix
82
+ * @return {string} css - filtered css
83
+ */
84
+
85
+ function filterStylesheetWithPrefix(sheet, allowedPrefixes) {
86
+ let filteredCSS = ''
87
+
88
+ let isPrefixed = selector => {
89
+ return allowedPrefixes.some(allowedPrefix => selector.startsWith(allowedPrefix))
90
+ }
91
+
92
+ for (const rule of sheet?.cssRules ?? []) {
93
+ // if it's a media rule we need to also process the nested rule list
94
+ if (rule instanceof CSSMediaRule) {
95
+
96
+ if (_hasMaliciousURL(rule)) continue
97
+
98
+ let processedMediaRule = rule?.cssRules ?? []
99
+ let rulesToDelete = [] // because deleting them in the loop can disturb the index
100
+
101
+ for (const mediaRuleIndex of Object.keys(processedMediaRule)) {
102
+ let mediaRule = mediaRuleIndex in processedMediaRule
103
+ ? processedMediaRule[mediaRuleIndex]
104
+ : {}
105
+
106
+ if (!isPrefixed(mediaRule.selectorText)) {
107
+ rulesToDelete.push(mediaRuleIndex)
108
+ }
109
+ }
110
+
111
+ for (const mediaRuleIndexToDelete of rulesToDelete) {
112
+ rule.deleteRule(mediaRuleIndexToDelete)
113
+ }
114
+
115
+ filteredCSS += rule.cssText
116
+ }
117
+
118
+ if (rule instanceof CSSStyleRule) {
119
+ if (_hasMaliciousURL(rule)) continue
120
+
121
+ filteredCSS += isPrefixed(rule.selectorText)
122
+ ? rule.cssText
123
+ : ''
124
+ }
125
+ }
126
+
127
+ return filteredCSS
128
+ }
129
+
130
+ /**
131
+ * Listener to enable page template
132
+ */
133
+ window._wpLoadBlockEditor && window.addEventListener('extendify-sdk::template-inserted', (event) => {
134
+ const { template } = event.detail
135
+ const wpTemplateName = 'editorplus-template.php'
136
+
137
+ // check if the instruction has command to enable page
138
+ if (!template?.fields?.instructions?.includes('enable_page_template')) {
139
+ return
140
+ }
141
+
142
+ // Get a list of templates from the editor
143
+ const selector = select('core/editor')
144
+ const availablePageTemplates = selector.getEditorSettings()?.availableTemplates ?? {}
145
+ if (!Object.keys(availablePageTemplates).includes(wpTemplateName)) {
146
+ return
147
+ }
148
+
149
+ // Finally, set the template
150
+ dispatch('core/editor').editPost({
151
+ template: wpTemplateName,
152
+ })
153
+ })
154
+
155
+ /**
156
+ * Listener to inject stylesheet
157
+ */
158
+ window._wpLoadBlockEditor && window.addEventListener('extendify-sdk::template-inserted', async (event) => {
159
+
160
+ // TODO: use better approach which does not use require additional network request
161
+
162
+ const { template } = event.detail
163
+ const stylesheetURL = template?.fields?.stylesheet ?? ''
164
+
165
+ if (!stylesheetURL) {
166
+ return
167
+ }
168
+
169
+ try {
170
+ let generatedCSS = await (await fetch(stylesheetURL)).text()
171
+ let appendedCSS = select('core/editor').getEditedPostAttribute('meta')?.extendify_custom_stylesheet ?? ''
172
+
173
+ let createdStyleElement = document.createElement('style')
174
+ let createdStyleID = 'extendify-stylesheet'
175
+
176
+ // webkit hack: appending stylesheet to let DOM process rules
177
+
178
+ createdStyleElement.id = createdStyleID
179
+ createdStyleElement.type = 'text/css'
180
+ createdStyleElement.appendChild(document.createTextNode(generatedCSS))
181
+
182
+ document.querySelector('#extendify-root').appendChild(createdStyleElement)
183
+
184
+ let processedStyleSheet = document.getElementById(createdStyleID)
185
+
186
+ // disabling the stylesheet
187
+ processedStyleSheet.sheet.disable = true
188
+
189
+ // accessing processed CSSStyleSheet
190
+ let filteredCSS = filterStylesheetWithPrefix(processedStyleSheet?.sheet, ['.extendify-', '.eplus_styles', '.eplus-', '[class*="extendify-"]', '[class*="extendify"]'])
191
+
192
+ // merging existing styles
193
+ filteredCSS += appendedCSS
194
+
195
+ // deleting the generated stylesheet
196
+ processedStyleSheet.parentNode.removeChild(processedStyleSheet)
197
+
198
+ // injecting the stylesheet to style the editor view
199
+ injectStyleSheetInEditor(filteredCSS)
200
+
201
+ // finally, updating the metadata
202
+ await dispatch('core/editor').editPost({
203
+ meta: {
204
+ extendify_custom_stylesheet: filteredCSS,
205
+ },
206
+ })
207
+
208
+ } catch (error) {
209
+ console.error(error)
210
+ }
211
+ })
212
+
213
+ // loading stylesheet in the editor after page load
214
+ window._wpLoadBlockEditor && window.wp.domReady(() => {
215
+ setTimeout(() => injectStyleSheetInEditor(), 0)
216
+ })
217
+
218
+ // Quick method to hide the title if the template is active
219
+ let extendifyCurrentPageTemplate
220
+ window._wpLoadBlockEditor && window.wp.data.subscribe(() => {
221
+ // Nothing changed
222
+ if (extendifyCurrentPageTemplate && extendifyCurrentPageTemplate === window.wp.data.select('core/editor').getEditedPostAttribute('template')) {
223
+ return
224
+ }
225
+ const epTemplateSelected = window.wp.data.select('core/editor').getEditedPostAttribute('template') === 'editorplus-template.php'
226
+ const title = document.querySelector('.edit-post-visual-editor__post-title-wrapper')
227
+ const wrapper = document.querySelector('.editor-styles-wrapper')
228
+
229
+ // Too early
230
+ if (!title || !wrapper) {
231
+ return
232
+ }
233
+
234
+ if (epTemplateSelected) {
235
+ // GB needs to compute the height first
236
+ Promise.resolve().then(() => title.style.display = 'none')
237
+ wrapper.style.paddingTop = '0'
238
+ wrapper.style.backgroundColor = '#ffffff'
239
+ } else {
240
+ title.style.removeProperty('display')
241
+ wrapper.style.removeProperty('padding-top')
242
+ wrapper.style.removeProperty('background-color')
243
+ }
244
+ })
extendify-sdk/extendify-sdk.php ADDED
@@ -0,0 +1,52 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ if (!defined('ABSPATH')) {
4
+ exit;
5
+ }
6
+
7
+ if (!class_exists('ExtendifySdk')) :
8
+
9
+ /**
10
+ * The Extendify Sdk
11
+ */
12
+ // phpcs:ignore Squiz.Classes.ClassFileName.NoMatch,Squiz.Commenting.ClassComment.Missing,PEAR.Commenting.ClassComment.Missing
13
+ final class ExtendifySdk
14
+ {
15
+
16
+ /**
17
+ * Var to make sure we only load once
18
+ *
19
+ * @var boolean $loaded
20
+ */
21
+ public static $loaded = false;
22
+
23
+ /**
24
+ * Set up the SDK
25
+ *
26
+ * @return void
27
+ */
28
+ public function __invoke()
29
+ {
30
+ if (!apply_filters('extendifysdk_load_library', true)) {
31
+ return;
32
+ }
33
+
34
+ if (version_compare(PHP_VERSION, '5.6', '<') || version_compare($GLOBALS['wp_version'], '5.5', '<')) {
35
+ return;
36
+ }
37
+
38
+ if (!self::$loaded) {
39
+ self::$loaded = true;
40
+ require dirname(__FILE__) . '/bootstrap.php';
41
+ $app = new Extendify\ExtendifySdk\App();
42
+ if (!defined('EXTENDIFYSDK_BASE_URL')) {
43
+ define('EXTENDIFYSDK_BASE_URL', plugin_dir_url(__FILE__));
44
+ }
45
+ }
46
+ }
47
+ // phpcs:ignore Squiz.Classes.ClassDeclaration.SpaceBeforeCloseBrace
48
+ }
49
+
50
+ $extendifySdk = new ExtendifySdk();
51
+ $extendifySdk();
52
+ endif;
extendify-sdk/loader.php ADDED
@@ -0,0 +1,61 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Use this file to load in the SDK from another plugin
4
+ * Example: require_once plugin_dir_path(__FILE__) . 'extendify-templates-sdk/loader.php';
5
+ */
6
+
7
+ if (!defined('ABSPATH')) {
8
+ exit;
9
+ }
10
+
11
+ if (!function_exists('extendifysdkCheckPluginInstalled')) {
12
+ /**
13
+ * Will be truthy if the plugin is installed.
14
+ *
15
+ * @param string $name name of the plugin 'extendify-sdk'.
16
+ * @return bool|string - will return path, ex. 'extendify-sdk/extendify-sdk.php'.
17
+ */
18
+ function extendifysdkCheckPluginInstalled($name)
19
+ {
20
+ if (!function_exists('get_plugins')) {
21
+ include_once ABSPATH . 'wp-admin/includes/plugin.php';
22
+ }
23
+
24
+ foreach (get_plugins() as $plugin => $data) {
25
+ if ($data['TextDomain'] === $name) {
26
+ return $plugin;
27
+ }
28
+ }
29
+
30
+ return false;
31
+ }
32
+ }//end if
33
+
34
+ // If the template SDK development build is installed, default to that.
35
+ $extendifysdkSdk = extendifysdkCheckPluginInstalled('extendify-sdk');
36
+
37
+ if ($extendifysdkSdk) {
38
+ // Only if it's deactivated.
39
+ if (is_plugin_active($extendifysdkSdk)) {
40
+ return false;
41
+ }
42
+ }
43
+
44
+ // If Editor Plus is installed, next default to that.
45
+ $extendifysdkEditorPlus = extendifysdkCheckPluginInstalled('editor_plus');
46
+ if ($extendifysdkEditorPlus) {
47
+ // Only if it's deactivated.
48
+ if (is_plugin_active($extendifysdkEditorPlus)) {
49
+ // Only if we aren't currently inside Editor Plus.
50
+ if (strpos(basename(dirname(__DIR__)), 'editorplus') === false) {
51
+ return false;
52
+ }
53
+ }
54
+ }
55
+
56
+ // Next is first come, first serve.
57
+ if (class_exists('ExtendifySdk')) {
58
+ return false;
59
+ }
60
+
61
+ require_once plugin_dir_path(__FILE__) . 'extendify-sdk.php';
extendify-sdk/public/.gitkeep ADDED
File without changes
extendify-sdk/public/build/extendify-sdk.css ADDED
@@ -0,0 +1 @@
 
1
+ *,:after,:before{--tw-border-opacity:1;border-color:rgba(224,224,224,var(--tw-border-opacity))}.aspect-w-1{padding-bottom:calc(var(--tw-aspect-h)/var(--tw-aspect-w)*100%);position:relative}.aspect-w-1>*{bottom:0;height:100%;left:0;position:absolute;right:0;top:0;width:100%}.aspect-w-1{--tw-aspect-w:1}.aspect-h-1{--tw-aspect-h:1}.extendify-sdk .sr-only{clip:rect(0,0,0,0);border-width:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.extendify-sdk .focus\:not-sr-only:focus{clip:auto;height:auto;margin:0;overflow:visible;padding:0;position:static;white-space:normal;width:auto}.extendify-sdk .pointer-events-none{pointer-events:none}.extendify-sdk .static{position:static}.extendify-sdk .fixed{position:fixed}.extendify-sdk .absolute{position:absolute}.extendify-sdk .relative{position:relative}.extendify-sdk .sticky{position:sticky}.extendify-sdk .inset-0{bottom:0;left:0;right:0;top:0}.extendify-sdk .top-0{top:0}.extendify-sdk .top-1{top:.25rem}.extendify-sdk .top-3{top:.75rem}.extendify-sdk .top-16{top:4rem}.extendify-sdk .-top-3{top:-.75rem}.extendify-sdk .right-0{right:0}.extendify-sdk .right-6{right:1.5rem}.extendify-sdk .bottom-0{bottom:0}.extendify-sdk .left-0{left:0}.extendify-sdk .left-1{left:.25rem}.extendify-sdk .left-px{left:1px}.extendify-sdk .z-0{z-index:0}.extendify-sdk .z-10{z-index:10}.extendify-sdk .z-20{z-index:20}.extendify-sdk .z-30{z-index:30}.extendify-sdk .z-50{z-index:50}.extendify-sdk .z-high{z-index:99999}.extendify-sdk .m-0{margin:0}.extendify-sdk .m-6{margin:1.5rem}.extendify-sdk .m-auto{margin:auto}.extendify-sdk .-m-4{margin:-1rem}.extendify-sdk .mx-6{margin-left:1.5rem;margin-right:1.5rem}.extendify-sdk .mx-auto{margin-left:auto;margin-right:auto}.extendify-sdk .my-2{margin-bottom:.5rem;margin-top:.5rem}.extendify-sdk .my-4{margin-bottom:1rem;margin-top:1rem}.extendify-sdk .mt-0{margin-top:0}.extendify-sdk .mt-1{margin-top:.25rem}.extendify-sdk .mt-4{margin-top:1rem}.extendify-sdk .mt-5{margin-top:1.25rem}.extendify-sdk .mt-16{margin-top:4rem}.extendify-sdk .mt-px{margin-top:1px}.extendify-sdk .-mt-2{margin-top:-.5rem}.extendify-sdk .-mt-6{margin-top:-1.5rem}.extendify-sdk .mb-1{margin-bottom:.25rem}.extendify-sdk .mb-2{margin-bottom:.5rem}.extendify-sdk .mb-4{margin-bottom:1rem}.extendify-sdk .mb-5{margin-bottom:1.25rem}.extendify-sdk .mb-6{margin-bottom:1.5rem}.extendify-sdk .mb-8{margin-bottom:2rem}.extendify-sdk .mb-10{margin-bottom:2.5rem}.extendify-sdk .mb-12{margin-bottom:3rem}.extendify-sdk .mb-16{margin-bottom:4rem}.extendify-sdk .mb-24{margin-bottom:6rem}.extendify-sdk .mb-2\.5{margin-bottom:.625rem}.extendify-sdk .ml-4{margin-left:1rem}.extendify-sdk .ml-8{margin-left:2rem}.extendify-sdk .-ml-px{margin-left:-1px}.extendify-sdk .block{display:block}.extendify-sdk .inline-block{display:inline-block}.extendify-sdk .flex{display:flex}.extendify-sdk .inline-flex{display:inline-flex}.extendify-sdk .table{display:table}.extendify-sdk .grid{display:grid}.extendify-sdk .hidden{display:none}.extendify-sdk .h-8{height:2rem}.extendify-sdk .h-16{height:4rem}.extendify-sdk .h-80{height:20rem}.extendify-sdk .h-auto{height:auto}.extendify-sdk .h-px{height:1px}.extendify-sdk .h-full{height:100%}.extendify-sdk .h-screen{height:100vh}.extendify-sdk .max-h-64{max-height:16rem}.extendify-sdk .min-h-0{min-height:0}.extendify-sdk .min-h-60{min-height:15rem}.extendify-sdk .min-h-screen{min-height:100vh}.extendify-sdk .w-32{width:8rem}.extendify-sdk .w-72{width:18rem}.extendify-sdk .w-80{width:20rem}.extendify-sdk .w-96{width:24rem}.extendify-sdk .w-full{width:100%}.extendify-sdk .w-screen{width:100vw}.extendify-sdk .max-w-xs{max-width:20rem}.extendify-sdk .max-w-md{max-width:28rem}.extendify-sdk .max-w-lg{max-width:32rem}.extendify-sdk .max-w-xl{max-width:36rem}.extendify-sdk .max-w-2xl{max-width:42rem}.extendify-sdk .max-w-full{max-width:100%}.extendify-sdk .max-w-screen-xl{max-width:1280px}.extendify-sdk .max-w-screen-2xl{max-width:1440px}.extendify-sdk .max-w-screen-4xl{max-width:1920px}.extendify-sdk .flex-1{flex:1 1 0%}.extendify-sdk .flex-shrink-0{flex-shrink:0}.extendify-sdk .flex-grow{flex-grow:1}.extendify-sdk .transform{--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;transform:translateX(var(--tw-translate-x)) translateY(var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.extendify-sdk .-translate-x-3{--tw-translate-x:-0.75rem}.extendify-sdk .translate-x-full{--tw-translate-x:100%}.extendify-sdk .-translate-x-full{--tw-translate-x:-100%}.extendify-sdk .translate-y-0{--tw-translate-y:0px}.extendify-sdk .translate-y-2{--tw-translate-y:0.5rem}.extendify-sdk .translate-y-4{--tw-translate-y:1rem}.extendify-sdk .translate-y-0\.5{--tw-translate-y:0.125rem}.extendify-sdk .-translate-y-full{--tw-translate-y:-100%}.extendify-sdk .rotate-180{--tw-rotate:180deg}@-webkit-keyframes spin{to{transform:rotate(1turn)}}@keyframes spin{to{transform:rotate(1turn)}}@-webkit-keyframes ping{75%,to{opacity:0;transform:scale(2)}}@keyframes ping{75%,to{opacity:0;transform:scale(2)}}@-webkit-keyframes pulse{50%{opacity:.5}}@keyframes pulse{50%{opacity:.5}}@-webkit-keyframes bounce{0%,to{-webkit-animation-timing-function:cubic-bezier(.8,0,1,1);animation-timing-function:cubic-bezier(.8,0,1,1);transform:translateY(-25%)}50%{-webkit-animation-timing-function:cubic-bezier(0,0,.2,1);animation-timing-function:cubic-bezier(0,0,.2,1);transform:none}}@keyframes bounce{0%,to{-webkit-animation-timing-function:cubic-bezier(.8,0,1,1);animation-timing-function:cubic-bezier(.8,0,1,1);transform:translateY(-25%)}50%{-webkit-animation-timing-function:cubic-bezier(0,0,.2,1);animation-timing-function:cubic-bezier(0,0,.2,1);transform:none}}.extendify-sdk .cursor-pointer{cursor:pointer}.extendify-sdk .grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.extendify-sdk .flex-col{flex-direction:column}.extendify-sdk .items-start{align-items:flex-start}.extendify-sdk .items-end{align-items:flex-end}.extendify-sdk .items-center{align-items:center}.extendify-sdk .justify-start{justify-content:flex-start}.extendify-sdk .justify-end{justify-content:flex-end}.extendify-sdk .justify-center{justify-content:center}.extendify-sdk .justify-between{justify-content:space-between}.extendify-sdk .justify-items-center{justify-items:center}.extendify-sdk .gap-4{gap:1rem}.extendify-sdk .gap-6{gap:1.5rem}.extendify-sdk .space-x-0>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(0px*(1 - var(--tw-space-x-reverse)));margin-right:calc(0px*var(--tw-space-x-reverse))}.extendify-sdk .space-x-1>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(.25rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(.25rem*var(--tw-space-x-reverse))}.extendify-sdk .space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(.5rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(.5rem*var(--tw-space-x-reverse))}.extendify-sdk .space-x-3>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(.75rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(.75rem*var(--tw-space-x-reverse))}.extendify-sdk .space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(1rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(1rem*var(--tw-space-x-reverse))}.extendify-sdk .space-x-6>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(1.5rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(1.5rem*var(--tw-space-x-reverse))}.extendify-sdk .space-x-8>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(2rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(2rem*var(--tw-space-x-reverse))}.extendify-sdk .space-x-12>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(3rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(3rem*var(--tw-space-x-reverse))}.extendify-sdk .space-x-1\.5>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(.375rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(.375rem*var(--tw-space-x-reverse))}.extendify-sdk .space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(1rem*var(--tw-space-y-reverse));margin-top:calc(1rem*(1 - var(--tw-space-y-reverse)))}.extendify-sdk .space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(1.5rem*var(--tw-space-y-reverse));margin-top:calc(1.5rem*(1 - var(--tw-space-y-reverse)))}.extendify-sdk .space-y-8>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(2rem*var(--tw-space-y-reverse));margin-top:calc(2rem*(1 - var(--tw-space-y-reverse)))}.extendify-sdk .space-y-16>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(4rem*var(--tw-space-y-reverse));margin-top:calc(4rem*(1 - var(--tw-space-y-reverse)))}.extendify-sdk .divide-x>:not([hidden])~:not([hidden]){--tw-divide-x-reverse:0;border-left-width:calc(1px*(1 - var(--tw-divide-x-reverse)));border-right-width:calc(1px*var(--tw-divide-x-reverse))}.extendify-sdk .divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse:0;border-bottom-width:calc(1px*var(--tw-divide-y-reverse));border-top-width:calc(1px*(1 - var(--tw-divide-y-reverse)))}.extendify-sdk .overflow-hidden{overflow:hidden}.extendify-sdk .overflow-scroll{overflow:scroll}.extendify-sdk .overflow-y-auto{overflow-y:auto}.extendify-sdk .overflow-x-hidden{overflow-x:hidden}.extendify-sdk .overflow-y-scroll{overflow-y:scroll}.extendify-sdk .whitespace-nowrap{white-space:nowrap}.extendify-sdk .rounded-none{border-radius:0}.extendify-sdk .border-0{border-width:0}.extendify-sdk .border{border-width:1px}.extendify-sdk .border-t-0{border-top-width:0}.extendify-sdk .border-t{border-top-width:1px}.extendify-sdk .border-b-0{border-bottom-width:0}.extendify-sdk .border-b{border-bottom-width:1px}.extendify-sdk .border-l{border-left-width:1px}.extendify-sdk .border-solid{border-style:solid}.extendify-sdk .border-transparent{border-color:transparent}.extendify-sdk .border-black{--tw-border-opacity:1;border-color:rgba(0,0,0,var(--tw-border-opacity))}.extendify-sdk .border-gray-200{--tw-border-opacity:1;border-color:rgba(224,224,224,var(--tw-border-opacity))}.extendify-sdk .border-gray-300{--tw-border-opacity:1;border-color:rgba(221,221,221,var(--tw-border-opacity))}.extendify-sdk .border-gray-900{--tw-border-opacity:1;border-color:rgba(30,30,30,var(--tw-border-opacity))}.extendify-sdk .border-extendify-main{--tw-border-opacity:1;border-color:rgba(0,129,96,var(--tw-border-opacity))}.extendify-sdk .border-wp-alert-red{--tw-border-opacity:1;border-color:rgba(204,24,24,var(--tw-border-opacity))}.extendify-sdk .group:hover .group-hover\:border-wp-theme-500,.extendify-sdk .hover\:border-wp-theme-500:hover{border-color:var(--wp-admin-theme-color)}.extendify-sdk .focus\:border-transparent:focus{border-color:transparent}.extendify-sdk .bg-transparent{background-color:transparent}.extendify-sdk .bg-black{--tw-bg-opacity:1;background-color:rgba(0,0,0,var(--tw-bg-opacity))}.extendify-sdk .bg-white{--tw-bg-opacity:1;background-color:rgba(255,255,255,var(--tw-bg-opacity))}.extendify-sdk .bg-gray-50{--tw-bg-opacity:1;background-color:rgba(250,250,250,var(--tw-bg-opacity))}.extendify-sdk .bg-gray-100{--tw-bg-opacity:1;background-color:rgba(240,240,240,var(--tw-bg-opacity))}.extendify-sdk .bg-gray-200{--tw-bg-opacity:1;background-color:rgba(224,224,224,var(--tw-bg-opacity))}.extendify-sdk .bg-gray-900{--tw-bg-opacity:1;background-color:rgba(30,30,30,var(--tw-bg-opacity))}.extendify-sdk .bg-extendify-lightest{--tw-bg-opacity:1;background-color:rgba(248,255,254,var(--tw-bg-opacity))}.extendify-sdk .bg-extendify-light{--tw-bg-opacity:1;background-color:rgba(231,248,245,var(--tw-bg-opacity))}.extendify-sdk .bg-extendify-main{--tw-bg-opacity:1;background-color:rgba(0,129,96,var(--tw-bg-opacity))}.extendify-sdk .group:hover .group-hover\:bg-transparent{background-color:transparent}.extendify-sdk .hover\:bg-gray-50:hover{--tw-bg-opacity:1;background-color:rgba(250,250,250,var(--tw-bg-opacity))}.extendify-sdk .hover\:bg-gray-100:hover{--tw-bg-opacity:1;background-color:rgba(240,240,240,var(--tw-bg-opacity))}.extendify-sdk .hover\:bg-gray-900:hover{--tw-bg-opacity:1;background-color:rgba(30,30,30,var(--tw-bg-opacity))}.extendify-sdk .focus\:bg-white:focus{--tw-bg-opacity:1;background-color:rgba(255,255,255,var(--tw-bg-opacity))}.extendify-sdk .focus\:bg-gray-100:focus{--tw-bg-opacity:1;background-color:rgba(240,240,240,var(--tw-bg-opacity))}.extendify-sdk .active\:bg-gray-900:active{--tw-bg-opacity:1;background-color:rgba(30,30,30,var(--tw-bg-opacity))}.extendify-sdk .bg-opacity-30{--tw-bg-opacity:0.3}.extendify-sdk .fill-current{fill:currentColor}.extendify-sdk .stroke-current{stroke:currentColor}.extendify-sdk .object-cover{-o-object-fit:cover;object-fit:cover}.extendify-sdk .p-0{padding:0}.extendify-sdk .p-1{padding:.25rem}.extendify-sdk .p-2{padding:.5rem}.extendify-sdk .p-3{padding:.75rem}.extendify-sdk .p-4{padding:1rem}.extendify-sdk .p-6{padding:1.5rem}.extendify-sdk .p-8{padding:2rem}.extendify-sdk .p-14{padding:3.5rem}.extendify-sdk .p-1\.5{padding:.375rem}.extendify-sdk .p-3\.5{padding:.875rem}.extendify-sdk .px-1{padding-left:.25rem;padding-right:.25rem}.extendify-sdk .px-2{padding-left:.5rem;padding-right:.5rem}.extendify-sdk .px-3{padding-left:.75rem;padding-right:.75rem}.extendify-sdk .px-4{padding-left:1rem;padding-right:1rem}.extendify-sdk .px-6{padding-left:1.5rem;padding-right:1.5rem}.extendify-sdk .py-0{padding-bottom:0;padding-top:0}.extendify-sdk .py-1{padding-bottom:.25rem;padding-top:.25rem}.extendify-sdk .py-2{padding-bottom:.5rem;padding-top:.5rem}.extendify-sdk .py-4{padding-bottom:1rem;padding-top:1rem}.extendify-sdk .py-6{padding-bottom:1.5rem;padding-top:1.5rem}.extendify-sdk .py-1\.5{padding-bottom:.375rem;padding-top:.375rem}.extendify-sdk .pt-4{padding-top:1rem}.extendify-sdk .pt-6{padding-top:1.5rem}.extendify-sdk .pt-14{padding-top:3.5rem}.extendify-sdk .pt-16{padding-top:4rem}.extendify-sdk .pt-px{padding-top:1px}.extendify-sdk .pr-2{padding-right:.5rem}.extendify-sdk .pr-4{padding-right:1rem}.extendify-sdk .pb-0{padding-bottom:0}.extendify-sdk .pb-2{padding-bottom:.5rem}.extendify-sdk .pb-3{padding-bottom:.75rem}.extendify-sdk .pb-4{padding-bottom:1rem}.extendify-sdk .pb-6{padding-bottom:1.5rem}.extendify-sdk .pb-16{padding-bottom:4rem}.extendify-sdk .pb-20{padding-bottom:5rem}.extendify-sdk .pb-32{padding-bottom:8rem}.extendify-sdk .pb-40{padding-bottom:10rem}.extendify-sdk .pb-60{padding-bottom:15rem}.extendify-sdk .pl-6{padding-left:1.5rem}.extendify-sdk .pl-12{padding-left:3rem}.extendify-sdk .text-left{text-align:left}.extendify-sdk .text-center{text-align:center}.extendify-sdk .text-xs{font-size:.75rem;line-height:1rem}.extendify-sdk .text-sm{font-size:.875rem;line-height:1.25rem}.extendify-sdk .text-base{font-size:1rem;line-height:1.5rem}.extendify-sdk .text-lg{font-size:1.125rem;line-height:1.75rem}.extendify-sdk .text-xl{font-size:1.25rem;line-height:1.75rem}.extendify-sdk .text-2xl{font-size:1.5rem;line-height:2rem}.extendify-sdk .text-5xl{font-size:3rem;line-height:1}.extendify-sdk .text-7xl{font-size:4.5rem;line-height:1}.extendify-sdk .font-normal{font-weight:400}.extendify-sdk .font-medium{font-weight:500}.extendify-sdk .font-semibold{font-weight:600}.extendify-sdk .font-bold{font-weight:700}.extendify-sdk .uppercase{text-transform:uppercase}.extendify-sdk .leading-none{line-height:1}.extendify-sdk .leading-tight{line-height:1.25}.extendify-sdk .leading-loose{line-height:2}.extendify-sdk .text-black{--tw-text-opacity:1;color:rgba(0,0,0,var(--tw-text-opacity))}.extendify-sdk .text-white{--tw-text-opacity:1;color:rgba(255,255,255,var(--tw-text-opacity))}.extendify-sdk .text-gray-900{--tw-text-opacity:1;color:rgba(30,30,30,var(--tw-text-opacity))}.extendify-sdk .text-extendify-main{--tw-text-opacity:1;color:rgba(0,129,96,var(--tw-text-opacity))}.extendify-sdk .text-extendify-link{--tw-text-opacity:1;color:rgba(41,152,117,var(--tw-text-opacity))}.extendify-sdk .text-extendify-bright{--tw-text-opacity:1;color:rgba(48,168,80,var(--tw-text-opacity))}.extendify-sdk .text-wp-theme-500{color:var(--wp-admin-theme-color)}.extendify-sdk .text-wp-alert-red{--tw-text-opacity:1;color:rgba(204,24,24,var(--tw-text-opacity))}.extendify-sdk .hover\:text-white:hover{--tw-text-opacity:1;color:rgba(255,255,255,var(--tw-text-opacity))}.extendify-sdk .hover\:text-wp-theme-500:hover{color:var(--wp-admin-theme-color)}.extendify-sdk .focus\:text-white:focus{--tw-text-opacity:1;color:rgba(255,255,255,var(--tw-text-opacity))}.extendify-sdk .focus\:text-blue-500:focus{--tw-text-opacity:1;color:rgba(59,130,246,var(--tw-text-opacity))}.extendify-sdk .active\:text-white:active{--tw-text-opacity:1;color:rgba(255,255,255,var(--tw-text-opacity))}.extendify-sdk .underline{text-decoration:underline}.extendify-sdk .no-underline{text-decoration:none}.extendify-sdk .placeholder-transparent::-moz-placeholder{color:transparent}.extendify-sdk .placeholder-transparent:-ms-input-placeholder{color:transparent}.extendify-sdk .placeholder-transparent::placeholder{color:transparent}.extendify-sdk .opacity-0{opacity:0}.extendify-sdk .focus\:opacity-100:focus,.extendify-sdk .group:hover .group-hover\:opacity-100,.extendify-sdk .opacity-100{opacity:1}*,:after,:before{--tw-shadow:0 0 #0000}.extendify-sdk .shadow-md{--tw-shadow:0 4px 6px -1px rgba(0,0,0,0.1),0 2px 4px -1px rgba(0,0,0,0.06)}.extendify-sdk .shadow-md,.extendify-sdk .shadow-xl{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.extendify-sdk .shadow-xl{--tw-shadow:0 20px 25px -5px rgba(0,0,0,0.1),0 10px 10px -5px rgba(0,0,0,0.04)}.extendify-sdk .outline-none{outline:2px solid transparent;outline-offset:2px}*,:after,:before{--tw-ring-inset:var(--tw-empty,/*!*/ /*!*/);--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,0.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000}.extendify-sdk .ring-4{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.extendify-sdk .focus\:ring-2:focus,.extendify-sdk .ring-4{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.extendify-sdk .focus\:ring-2:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.extendify-sdk .focus\:ring-4:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.extendify-sdk .focus\:ring-extendify-main:focus,.extendify-sdk .ring-extendify-main{--tw-ring-opacity:1;--tw-ring-color:rgba(0,129,96,var(--tw-ring-opacity))}.extendify-sdk .focus\:ring-wp-theme-500:focus{--tw-ring-color:var(--wp-admin-theme-color)}.extendify-sdk .ring-offset-1{--tw-ring-offset-width:1px}.extendify-sdk .focus\:ring-offset-4:focus,.extendify-sdk .ring-offset-4{--tw-ring-offset-width:4px}.extendify-sdk .filter{--tw-blur:var(--tw-empty,/*!*/ /*!*/);--tw-brightness:var(--tw-empty,/*!*/ /*!*/);--tw-contrast:var(--tw-empty,/*!*/ /*!*/);--tw-grayscale:var(--tw-empty,/*!*/ /*!*/);--tw-hue-rotate:var(--tw-empty,/*!*/ /*!*/);--tw-invert:var(--tw-empty,/*!*/ /*!*/);--tw-saturate:var(--tw-empty,/*!*/ /*!*/);--tw-sepia:var(--tw-empty,/*!*/ /*!*/);--tw-drop-shadow:var(--tw-empty,/*!*/ /*!*/);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.extendify-sdk .transition-all{transition-duration:.15s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.extendify-sdk .transition{transition-duration:.15s;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.extendify-sdk .transition-opacity{transition-duration:.15s;transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1)}.extendify-sdk .delay-300{transition-delay:.3s}.extendify-sdk .duration-150{transition-duration:.15s}.extendify-sdk .duration-200{transition-duration:.2s}.extendify-sdk .duration-300{transition-duration:.3s}.extendify-sdk .ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}.extendify-sdk *,.extendify-sdk :after,.extendify-sdk :before{border:0 solid #e5e7eb;box-sizing:border-box}.extendify-sdk .button-focus{outline:2px solid transparent;outline-offset:2px}.extendify-sdk .button-focus:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-color:var(--wp-admin-theme-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.extendify-sdk .button-focus{--tw-ring-offset-width:1px}.extendify-sdk .button-focus-big-green{outline:2px solid transparent;outline-offset:2px}.extendify-sdk .button-focus-big-green:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-opacity:1;--tw-ring-color:rgba(0,129,96,var(--tw-ring-opacity));--tw-ring-offset-width:4px;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.button-extendify-main{--tw-bg-opacity:1;background-color:rgba(0,129,96,var(--tw-bg-opacity));cursor:pointer;white-space:nowrap}.button-extendify-main:active,.button-extendify-main:hover{--tw-bg-opacity:1;background-color:rgba(30,30,30,var(--tw-bg-opacity))}.button-extendify-main{padding:.375rem .75rem}.button-extendify-main,.button-extendify-main:active,.button-extendify-main:focus,.button-extendify-main:hover{--tw-text-opacity:1;color:rgba(255,255,255,var(--tw-text-opacity))}.button-extendify-main{text-decoration:none;transition-duration:.15s;transition-duration:.2s;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.extendify-sdk .button-extendify-main{outline:2px solid transparent;outline-offset:2px}.extendify-sdk .button-extendify-main:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-color:var(--wp-admin-theme-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.extendify-sdk .button-extendify-main{--tw-ring-offset-width:1px}.extendify-sdk input.button-extendify-main:focus,.extendify-sdk input.button-focus:focus,.extendify-sdk select.button-extendify-main:focus,.extendify-sdk select.button-focus:focus{border-color:transparent;outline:2px solid transparent;outline-offset:2px}#extendify-search-input:not(:-moz-placeholder-shown)~svg{display:none}#extendify-search-input:not(:-ms-input-placeholder)~svg{display:none}#extendify-search-input:focus~svg,#extendify-search-input:not(:placeholder-shown)~svg{display:none}#extendify-search-input::-webkit-textfield-decoration-container{margin-right:.75rem}.extendify-sdk .components-panel__body>.components-panel__body-title{background-color:transparent;border-bottom:1px solid #e0e0e0!important}.extendify-sdk .components-modal__header{--tw-border-opacity:1;border-bottom-width:1px;border-color:rgba(221,221,221,var(--tw-border-opacity))}.extendify-special-input:-moz-placeholder-shown~label{--tw-text-opacity:1;color:rgba(148,148,148,var(--tw-text-opacity));font-size:.875rem;line-height:1.25rem;top:.375rem}.extendify-special-input:-ms-input-placeholder~label{--tw-text-opacity:1;color:rgba(148,148,148,var(--tw-text-opacity));font-size:.875rem;line-height:1.25rem;top:.375rem}.extendify-special-input:placeholder-shown~label{--tw-text-opacity:1;color:rgba(148,148,148,var(--tw-text-opacity));font-size:.875rem;line-height:1.25rem;top:.375rem}.extendify-special-input:focus~label{--tw-text-opacity:1;color:rgba(0,129,96,var(--tw-text-opacity));font-size:.75rem;line-height:1rem;top:-1rem}@media (min-width:600px){.extendify-sdk .sm\:top-auto{top:auto}.extendify-sdk .sm\:m-0{margin:0}.extendify-sdk .sm\:my-6{margin-bottom:1.5rem;margin-top:1.5rem}.extendify-sdk .sm\:mt-64{margin-top:16rem}.extendify-sdk .sm\:mb-8{margin-bottom:2rem}.extendify-sdk .sm\:block{display:block}.extendify-sdk .sm\:flex{display:flex}.extendify-sdk .sm\:hidden{display:none}.extendify-sdk .sm\:h-auto{height:auto}.extendify-sdk .sm\:min-h-0{min-height:0}.extendify-sdk .sm\:w-56{width:14rem}.extendify-sdk .sm\:w-auto{width:auto}.extendify-sdk .sm\:w-full{width:100%}.extendify-sdk .sm\:translate-x-6{--tw-translate-x:1.5rem}.extendify-sdk .sm\:translate-x-8{--tw-translate-x:2rem}.extendify-sdk .sm\:translate-y-5{--tw-translate-y:1.25rem}.extendify-sdk .sm\:space-x-12>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(3rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(3rem*var(--tw-space-x-reverse))}.extendify-sdk .sm\:border-0{border-width:0}.extendify-sdk .sm\:p-0{padding:0}.extendify-sdk .sm\:px-0{padding-left:0;padding-right:0}.extendify-sdk .sm\:px-5{padding-left:1.25rem;padding-right:1.25rem}.extendify-sdk .sm\:px-12{padding-left:3rem;padding-right:3rem}.extendify-sdk .sm\:py-2{padding-bottom:.5rem;padding-top:.5rem}.extendify-sdk .sm\:py-6{padding-bottom:1.5rem;padding-top:1.5rem}.extendify-sdk .sm\:py-2\.5{padding-bottom:.625rem;padding-top:.625rem}.extendify-sdk .sm\:pt-0{padding-top:0}.extendify-sdk .sm\:pt-6{padding-top:1.5rem}.extendify-sdk .sm\:pr-8{padding-right:2rem}.extendify-sdk .sm\:pb-6{padding-bottom:1.5rem}.extendify-sdk .sm\:pl-0{padding-left:0}.extendify-sdk .sm\:pl-12{padding-left:3rem}.extendify-sdk .sm\:text-2xl{font-size:1.5rem;line-height:2rem}.extendify-sdk .sm\:text-3xl{font-size:2rem;line-height:2.5rem}.extendify-sdk .sm\:opacity-0{opacity:0}}@media (min-width:782px){.extendify-sdk .md\:-mt-32{margin-top:-8rem}.extendify-sdk .md\:flex{display:flex}.extendify-sdk .md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.extendify-sdk .md\:p-16{padding:4rem}.extendify-sdk .md\:pb-0{padding-bottom:0}}@media (min-width:1080px){.extendify-sdk .lg\:static{position:static}.extendify-sdk .lg\:absolute{position:absolute}.extendify-sdk .lg\:sticky{position:sticky}.extendify-sdk .lg\:mx-0{margin-left:0;margin-right:0}.extendify-sdk .lg\:-mx-2{margin-left:-.5rem;margin-right:-.5rem}.extendify-sdk .lg\:-ml-px{margin-left:-1px}.extendify-sdk .lg\:block{display:block}.extendify-sdk .lg\:flex{display:flex}.extendify-sdk .lg\:h-full{height:100%}.extendify-sdk .lg\:w-72{width:18rem}.extendify-sdk .lg\:w-1\/2{width:50%}.extendify-sdk .lg\:flex-row{flex-direction:row}.extendify-sdk .lg\:items-center{align-items:center}.extendify-sdk .lg\:justify-between{justify-content:space-between}.extendify-sdk .lg\:space-x-16>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(4rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(4rem*var(--tw-space-x-reverse))}.extendify-sdk .lg\:space-y-0>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(0px*var(--tw-space-y-reverse));margin-top:calc(0px*(1 - var(--tw-space-y-reverse)))}.extendify-sdk .lg\:divide-x-2>:not([hidden])~:not([hidden]){--tw-divide-x-reverse:0;border-left-width:calc(2px*(1 - var(--tw-divide-x-reverse)));border-right-width:calc(2px*var(--tw-divide-x-reverse))}.extendify-sdk .lg\:overflow-hidden{overflow:hidden}.extendify-sdk .lg\:border-t-0{border-top-width:0}.extendify-sdk .lg\:border-b{border-bottom-width:1px}.extendify-sdk .lg\:p-5{padding:1.25rem}.extendify-sdk .lg\:px-0{padding-left:0;padding-right:0}.extendify-sdk .lg\:px-2{padding-left:.5rem;padding-right:.5rem}.extendify-sdk .lg\:px-20{padding-left:5rem;padding-right:5rem}.extendify-sdk .lg\:pt-0{padding-top:0}.extendify-sdk .lg\:pl-px{padding-left:1px}.extendify-sdk .lg\:leading-none{line-height:1}}@media (min-width:1280px){.extendify-sdk .xl\:w-1\/2{width:50%}.extendify-sdk .xl\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.extendify-sdk .xl\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.extendify-sdk .xl\:space-x-32>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(8rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(8rem*var(--tw-space-x-reverse))}.extendify-sdk .xl\:space-y-8>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(2rem*var(--tw-space-y-reverse));margin-top:calc(2rem*(1 - var(--tw-space-y-reverse)))}}@media (min-width:1440px){.extendify-sdk .\32xl\:mb-16{margin-bottom:4rem}.extendify-sdk .\32xl\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.extendify-sdk .\32xl\:p-28{padding:7rem}.extendify-sdk .\32xl\:pb-0{padding-bottom:0}}@media (min-width:1600px){.extendify-sdk .\33xl\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}
extendify-sdk/public/build/extendify-sdk.js ADDED
@@ -0,0 +1,2 @@
 
 
1
+ /*! For license information please see extendify-sdk.js.LICENSE.txt */
2
+ (()=>{var e,t={135:(e,t,n)=>{e.exports=n(248)},206:(e,t,n)=>{e.exports=n(57)},387:(e,t,n)=>{"use strict";var r=n(485),i=n(570),o=n(940),a=n(581),s=n(574),u=n(845),l=n(338),c=n(524);e.exports=function(e){return new Promise((function(t,n){var f=e.data,d=e.headers,p=e.responseType;r.isFormData(f)&&delete d["Content-Type"];var m=new XMLHttpRequest;if(e.auth){var h=e.auth.username||"",v=e.auth.password?unescape(encodeURIComponent(e.auth.password)):"";d.Authorization="Basic "+btoa(h+":"+v)}var y=s(e.baseURL,e.url);function x(){if(m){var r="getAllResponseHeaders"in m?u(m.getAllResponseHeaders()):null,o={data:p&&"text"!==p&&"json"!==p?m.response:m.responseText,status:m.status,statusText:m.statusText,headers:r,config:e,request:m};i(t,n,o),m=null}}if(m.open(e.method.toUpperCase(),a(y,e.params,e.paramsSerializer),!0),m.timeout=e.timeout,"onloadend"in m?m.onloadend=x:m.onreadystatechange=function(){m&&4===m.readyState&&(0!==m.status||m.responseURL&&0===m.responseURL.indexOf("file:"))&&setTimeout(x)},m.onabort=function(){m&&(n(c("Request aborted",e,"ECONNABORTED",m)),m=null)},m.onerror=function(){n(c("Network Error",e,null,m)),m=null},m.ontimeout=function(){var t="timeout of "+e.timeout+"ms exceeded";e.timeoutErrorMessage&&(t=e.timeoutErrorMessage),n(c(t,e,e.transitional&&e.transitional.clarifyTimeoutError?"ETIMEDOUT":"ECONNABORTED",m)),m=null},r.isStandardBrowserEnv()){var g=(e.withCredentials||l(y))&&e.xsrfCookieName?o.read(e.xsrfCookieName):void 0;g&&(d[e.xsrfHeaderName]=g)}"setRequestHeader"in m&&r.forEach(d,(function(e,t){void 0===f&&"content-type"===t.toLowerCase()?delete d[t]:m.setRequestHeader(t,e)})),r.isUndefined(e.withCredentials)||(m.withCredentials=!!e.withCredentials),p&&"json"!==p&&(m.responseType=e.responseType),"function"==typeof e.onDownloadProgress&&m.addEventListener("progress",e.onDownloadProgress),"function"==typeof e.onUploadProgress&&m.upload&&m.upload.addEventListener("progress",e.onUploadProgress),e.cancelToken&&e.cancelToken.promise.then((function(e){m&&(m.abort(),n(e),m=null)})),f||(f=null),m.send(f)}))}},57:(e,t,n)=>{"use strict";var r=n(485),i=n(875),o=n(29),a=n(941);function s(e){var t=new o(e),n=i(o.prototype.request,t);return r.extend(n,o.prototype,t),r.extend(n,t),n}var u=s(n(141));u.Axios=o,u.create=function(e){return s(a(u.defaults,e))},u.Cancel=n(132),u.CancelToken=n(603),u.isCancel=n(475),u.all=function(e){return Promise.all(e)},u.spread=n(739),u.isAxiosError=n(835),e.exports=u,e.exports.default=u},132:e=>{"use strict";function t(e){this.message=e}t.prototype.toString=function(){return"Cancel"+(this.message?": "+this.message:"")},t.prototype.__CANCEL__=!0,e.exports=t},603:(e,t,n)=>{"use strict";var r=n(132);function i(e){if("function"!=typeof e)throw new TypeError("executor must be a function.");var t;this.promise=new Promise((function(e){t=e}));var n=this;e((function(e){n.reason||(n.reason=new r(e),t(n.reason))}))}i.prototype.throwIfRequested=function(){if(this.reason)throw this.reason},i.source=function(){var e;return{token:new i((function(t){e=t})),cancel:e}},e.exports=i},475:e=>{"use strict";e.exports=function(e){return!(!e||!e.__CANCEL__)}},29:(e,t,n)=>{"use strict";var r=n(485),i=n(581),o=n(96),a=n(9),s=n(941),u=n(144),l=u.validators;function c(e){this.defaults=e,this.interceptors={request:new o,response:new o}}c.prototype.request=function(e){"string"==typeof e?(e=arguments[1]||{}).url=arguments[0]:e=e||{},(e=s(this.defaults,e)).method?e.method=e.method.toLowerCase():this.defaults.method?e.method=this.defaults.method.toLowerCase():e.method="get";var t=e.transitional;void 0!==t&&u.assertOptions(t,{silentJSONParsing:l.transitional(l.boolean,"1.0.0"),forcedJSONParsing:l.transitional(l.boolean,"1.0.0"),clarifyTimeoutError:l.transitional(l.boolean,"1.0.0")},!1);var n=[],r=!0;this.interceptors.request.forEach((function(t){"function"==typeof t.runWhen&&!1===t.runWhen(e)||(r=r&&t.synchronous,n.unshift(t.fulfilled,t.rejected))}));var i,o=[];if(this.interceptors.response.forEach((function(e){o.push(e.fulfilled,e.rejected)})),!r){var c=[a,void 0];for(Array.prototype.unshift.apply(c,n),c=c.concat(o),i=Promise.resolve(e);c.length;)i=i.then(c.shift(),c.shift());return i}for(var f=e;n.length;){var d=n.shift(),p=n.shift();try{f=d(f)}catch(e){p(e);break}}try{i=a(f)}catch(e){return Promise.reject(e)}for(;o.length;)i=i.then(o.shift(),o.shift());return i},c.prototype.getUri=function(e){return e=s(this.defaults,e),i(e.url,e.params,e.paramsSerializer).replace(/^\?/,"")},r.forEach(["delete","get","head","options"],(function(e){c.prototype[e]=function(t,n){return this.request(s(n||{},{method:e,url:t,data:(n||{}).data}))}})),r.forEach(["post","put","patch"],(function(e){c.prototype[e]=function(t,n,r){return this.request(s(r||{},{method:e,url:t,data:n}))}})),e.exports=c},96:(e,t,n)=>{"use strict";var r=n(485);function i(){this.handlers=[]}i.prototype.use=function(e,t,n){return this.handlers.push({fulfilled:e,rejected:t,synchronous:!!n&&n.synchronous,runWhen:n?n.runWhen:null}),this.handlers.length-1},i.prototype.eject=function(e){this.handlers[e]&&(this.handlers[e]=null)},i.prototype.forEach=function(e){r.forEach(this.handlers,(function(t){null!==t&&e(t)}))},e.exports=i},574:(e,t,n)=>{"use strict";var r=n(642),i=n(288);e.exports=function(e,t){return e&&!r(t)?i(e,t):t}},524:(e,t,n)=>{"use strict";var r=n(953);e.exports=function(e,t,n,i,o){var a=new Error(e);return r(a,t,n,i,o)}},9:(e,t,n)=>{"use strict";var r=n(485),i=n(212),o=n(475),a=n(141);function s(e){e.cancelToken&&e.cancelToken.throwIfRequested()}e.exports=function(e){return s(e),e.headers=e.headers||{},e.data=i.call(e,e.data,e.headers,e.transformRequest),e.headers=r.merge(e.headers.common||{},e.headers[e.method]||{},e.headers),r.forEach(["delete","get","head","post","put","patch","common"],(function(t){delete e.headers[t]})),(e.adapter||a.adapter)(e).then((function(t){return s(e),t.data=i.call(e,t.data,t.headers,e.transformResponse),t}),(function(t){return o(t)||(s(e),t&&t.response&&(t.response.data=i.call(e,t.response.data,t.response.headers,e.transformResponse))),Promise.reject(t)}))}},953:e=>{"use strict";e.exports=function(e,t,n,r,i){return e.config=t,n&&(e.code=n),e.request=r,e.response=i,e.isAxiosError=!0,e.toJSON=function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:this.config,code:this.code}},e}},941:(e,t,n)=>{"use strict";var r=n(485);e.exports=function(e,t){t=t||{};var n={},i=["url","method","data"],o=["headers","auth","proxy","params"],a=["baseURL","transformRequest","transformResponse","paramsSerializer","timeout","timeoutMessage","withCredentials","adapter","responseType","xsrfCookieName","xsrfHeaderName","onUploadProgress","onDownloadProgress","decompress","maxContentLength","maxBodyLength","maxRedirects","transport","httpAgent","httpsAgent","cancelToken","socketPath","responseEncoding"],s=["validateStatus"];function u(e,t){return r.isPlainObject(e)&&r.isPlainObject(t)?r.merge(e,t):r.isPlainObject(t)?r.merge({},t):r.isArray(t)?t.slice():t}function l(i){r.isUndefined(t[i])?r.isUndefined(e[i])||(n[i]=u(void 0,e[i])):n[i]=u(e[i],t[i])}r.forEach(i,(function(e){r.isUndefined(t[e])||(n[e]=u(void 0,t[e]))})),r.forEach(o,l),r.forEach(a,(function(i){r.isUndefined(t[i])?r.isUndefined(e[i])||(n[i]=u(void 0,e[i])):n[i]=u(void 0,t[i])})),r.forEach(s,(function(r){r in t?n[r]=u(e[r],t[r]):r in e&&(n[r]=u(void 0,e[r]))}));var c=i.concat(o).concat(a).concat(s),f=Object.keys(e).concat(Object.keys(t)).filter((function(e){return-1===c.indexOf(e)}));return r.forEach(f,l),n}},570:(e,t,n)=>{"use strict";var r=n(524);e.exports=function(e,t,n){var i=n.config.validateStatus;n.status&&i&&!i(n.status)?t(r("Request failed with status code "+n.status,n.config,null,n.request,n)):e(n)}},212:(e,t,n)=>{"use strict";var r=n(485),i=n(141);e.exports=function(e,t,n){var o=this||i;return r.forEach(n,(function(n){e=n.call(o,e,t)})),e}},141:(e,t,n)=>{"use strict";var r=n(61),i=n(485),o=n(895),a=n(953),s={"Content-Type":"application/x-www-form-urlencoded"};function u(e,t){!i.isUndefined(e)&&i.isUndefined(e["Content-Type"])&&(e["Content-Type"]=t)}var l,c={transitional:{silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},adapter:(("undefined"!=typeof XMLHttpRequest||void 0!==r&&"[object process]"===Object.prototype.toString.call(r))&&(l=n(387)),l),transformRequest:[function(e,t){return o(t,"Accept"),o(t,"Content-Type"),i.isFormData(e)||i.isArrayBuffer(e)||i.isBuffer(e)||i.isStream(e)||i.isFile(e)||i.isBlob(e)?e:i.isArrayBufferView(e)?e.buffer:i.isURLSearchParams(e)?(u(t,"application/x-www-form-urlencoded;charset=utf-8"),e.toString()):i.isObject(e)||t&&"application/json"===t["Content-Type"]?(u(t,"application/json"),function(e,t,n){if(i.isString(e))try{return(t||JSON.parse)(e),i.trim(e)}catch(e){if("SyntaxError"!==e.name)throw e}return(n||JSON.stringify)(e)}(e)):e}],transformResponse:[function(e){var t=this.transitional,n=t&&t.silentJSONParsing,r=t&&t.forcedJSONParsing,o=!n&&"json"===this.responseType;if(o||r&&i.isString(e)&&e.length)try{return JSON.parse(e)}catch(e){if(o){if("SyntaxError"===e.name)throw a(e,this,"E_JSON_PARSE");throw e}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,validateStatus:function(e){return e>=200&&e<300}};c.headers={common:{Accept:"application/json, text/plain, */*"}},i.forEach(["delete","get","head"],(function(e){c.headers[e]={}})),i.forEach(["post","put","patch"],(function(e){c.headers[e]=i.merge(s)})),e.exports=c},875:e=>{"use strict";e.exports=function(e,t){return function(){for(var n=new Array(arguments.length),r=0;r<n.length;r++)n[r]=arguments[r];return e.apply(t,n)}}},581:(e,t,n)=>{"use strict";var r=n(485);function i(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}e.exports=function(e,t,n){if(!t)return e;var o;if(n)o=n(t);else if(r.isURLSearchParams(t))o=t.toString();else{var a=[];r.forEach(t,(function(e,t){null!=e&&(r.isArray(e)?t+="[]":e=[e],r.forEach(e,(function(e){r.isDate(e)?e=e.toISOString():r.isObject(e)&&(e=JSON.stringify(e)),a.push(i(t)+"="+i(e))})))})),o=a.join("&")}if(o){var s=e.indexOf("#");-1!==s&&(e=e.slice(0,s)),e+=(-1===e.indexOf("?")?"?":"&")+o}return e}},288:e=>{"use strict";e.exports=function(e,t){return t?e.replace(/\/+$/,"")+"/"+t.replace(/^\/+/,""):e}},940:(e,t,n)=>{"use strict";var r=n(485);e.exports=r.isStandardBrowserEnv()?{write:function(e,t,n,i,o,a){var s=[];s.push(e+"="+encodeURIComponent(t)),r.isNumber(n)&&s.push("expires="+new Date(n).toGMTString()),r.isString(i)&&s.push("path="+i),r.isString(o)&&s.push("domain="+o),!0===a&&s.push("secure"),document.cookie=s.join("; ")},read:function(e){var t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove:function(e){this.write(e,"",Date.now()-864e5)}}:{write:function(){},read:function(){return null},remove:function(){}}},642:e=>{"use strict";e.exports=function(e){return/^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(e)}},835:e=>{"use strict";e.exports=function(e){return"object"==typeof e&&!0===e.isAxiosError}},338:(e,t,n)=>{"use strict";var r=n(485);e.exports=r.isStandardBrowserEnv()?function(){var e,t=/(msie|trident)/i.test(navigator.userAgent),n=document.createElement("a");function i(e){var r=e;return t&&(n.setAttribute("href",r),r=n.href),n.setAttribute("href",r),{href:n.href,protocol:n.protocol?n.protocol.replace(/:$/,""):"",host:n.host,search:n.search?n.search.replace(/^\?/,""):"",hash:n.hash?n.hash.replace(/^#/,""):"",hostname:n.hostname,port:n.port,pathname:"/"===n.pathname.charAt(0)?n.pathname:"/"+n.pathname}}return e=i(window.location.href),function(t){var n=r.isString(t)?i(t):t;return n.protocol===e.protocol&&n.host===e.host}}():function(){return!0}},895:(e,t,n)=>{"use strict";var r=n(485);e.exports=function(e,t){r.forEach(e,(function(n,r){r!==t&&r.toUpperCase()===t.toUpperCase()&&(e[t]=n,delete e[r])}))}},845:(e,t,n)=>{"use strict";var r=n(485),i=["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"];e.exports=function(e){var t,n,o,a={};return e?(r.forEach(e.split("\n"),(function(e){if(o=e.indexOf(":"),t=r.trim(e.substr(0,o)).toLowerCase(),n=r.trim(e.substr(o+1)),t){if(a[t]&&i.indexOf(t)>=0)return;a[t]="set-cookie"===t?(a[t]?a[t]:[]).concat([n]):a[t]?a[t]+", "+n:n}})),a):a}},739:e=>{"use strict";e.exports=function(e){return function(t){return e.apply(null,t)}}},144:(e,t,n)=>{"use strict";var r=n(995),i={};["object","boolean","number","function","string","symbol"].forEach((function(e,t){i[e]=function(n){return typeof n===e||"a"+(t<1?"n ":" ")+e}}));var o={},a=r.version.split(".");function s(e,t){for(var n=t?t.split("."):a,r=e.split("."),i=0;i<3;i++){if(n[i]>r[i])return!0;if(n[i]<r[i])return!1}return!1}i.transitional=function(e,t,n){var i=t&&s(t);function a(e,t){return"[Axios v"+r.version+"] Transitional option '"+e+"'"+t+(n?". "+n:"")}return function(n,r,s){if(!1===e)throw new Error(a(r," has been removed in "+t));return i&&!o[r]&&(o[r]=!0,console.warn(a(r," has been deprecated since v"+t+" and will be removed in the near future"))),!e||e(n,r,s)}},e.exports={isOlderVersion:s,assertOptions:function(e,t,n){if("object"!=typeof e)throw new TypeError("options must be an object");for(var r=Object.keys(e),i=r.length;i-- >0;){var o=r[i],a=t[o];if(a){var s=e[o],u=void 0===s||a(s,o,e);if(!0!==u)throw new TypeError("option "+o+" must be "+u)}else if(!0!==n)throw Error("Unknown option "+o)}},validators:i}},485:(e,t,n)=>{"use strict";var r=n(875),i=Object.prototype.toString;function o(e){return"[object Array]"===i.call(e)}function a(e){return void 0===e}function s(e){return null!==e&&"object"==typeof e}function u(e){if("[object Object]"!==i.call(e))return!1;var t=Object.getPrototypeOf(e);return null===t||t===Object.prototype}function l(e){return"[object Function]"===i.call(e)}function c(e,t){if(null!=e)if("object"!=typeof e&&(e=[e]),o(e))for(var n=0,r=e.length;n<r;n++)t.call(null,e[n],n,e);else for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&t.call(null,e[i],i,e)}e.exports={isArray:o,isArrayBuffer:function(e){return"[object ArrayBuffer]"===i.call(e)},isBuffer:function(e){return null!==e&&!a(e)&&null!==e.constructor&&!a(e.constructor)&&"function"==typeof e.constructor.isBuffer&&e.constructor.isBuffer(e)},isFormData:function(e){return"undefined"!=typeof FormData&&e instanceof FormData},isArrayBufferView:function(e){return"undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&e.buffer instanceof ArrayBuffer},isString:function(e){return"string"==typeof e},isNumber:function(e){return"number"==typeof e},isObject:s,isPlainObject:u,isUndefined:a,isDate:function(e){return"[object Date]"===i.call(e)},isFile:function(e){return"[object File]"===i.call(e)},isBlob:function(e){return"[object Blob]"===i.call(e)},isFunction:l,isStream:function(e){return s(e)&&l(e.pipe)},isURLSearchParams:function(e){return"undefined"!=typeof URLSearchParams&&e instanceof URLSearchParams},isStandardBrowserEnv:function(){return("undefined"==typeof navigator||"ReactNative"!==navigator.product&&"NativeScript"!==navigator.product&&"NS"!==navigator.product)&&("undefined"!=typeof window&&"undefined"!=typeof document)},forEach:c,merge:function e(){var t={};function n(n,r){u(t[r])&&u(n)?t[r]=e(t[r],n):u(n)?t[r]=e({},n):o(n)?t[r]=n.slice():t[r]=n}for(var r=0,i=arguments.length;r<i;r++)c(arguments[r],n);return t},extend:function(e,t,n){return c(t,(function(t,i){e[i]=n&&"function"==typeof t?r(t,n):t})),e},trim:function(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")},stripBOM:function(e){return 65279===e.charCodeAt(0)&&(e=e.slice(1)),e}}},995:e=>{"use strict";e.exports=JSON.parse('{"name":"axios","version":"0.21.4","description":"Promise based HTTP client for the browser and node.js","main":"index.js","scripts":{"test":"grunt test","start":"node ./sandbox/server.js","build":"NODE_ENV=production grunt build","preversion":"npm test","version":"npm run build && grunt version && git add -A dist && git add CHANGELOG.md bower.json package.json","postversion":"git push && git push --tags","examples":"node ./examples/server.js","coveralls":"cat coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js","fix":"eslint --fix lib/**/*.js"},"repository":{"type":"git","url":"https://github.com/axios/axios.git"},"keywords":["xhr","http","ajax","promise","node"],"author":"Matt Zabriskie","license":"MIT","bugs":{"url":"https://github.com/axios/axios/issues"},"homepage":"https://axios-http.com","devDependencies":{"coveralls":"^3.0.0","es6-promise":"^4.2.4","grunt":"^1.3.0","grunt-banner":"^0.6.0","grunt-cli":"^1.2.0","grunt-contrib-clean":"^1.1.0","grunt-contrib-watch":"^1.0.0","grunt-eslint":"^23.0.0","grunt-karma":"^4.0.0","grunt-mocha-test":"^0.13.3","grunt-ts":"^6.0.0-beta.19","grunt-webpack":"^4.0.2","istanbul-instrumenter-loader":"^1.0.0","jasmine-core":"^2.4.1","karma":"^6.3.2","karma-chrome-launcher":"^3.1.0","karma-firefox-launcher":"^2.1.0","karma-jasmine":"^1.1.1","karma-jasmine-ajax":"^0.1.13","karma-safari-launcher":"^1.0.0","karma-sauce-launcher":"^4.3.6","karma-sinon":"^1.0.5","karma-sourcemap-loader":"^0.3.8","karma-webpack":"^4.0.2","load-grunt-tasks":"^3.5.2","minimist":"^1.2.0","mocha":"^8.2.1","sinon":"^4.5.0","terser-webpack-plugin":"^4.2.3","typescript":"^4.0.5","url-search-params":"^0.10.0","webpack":"^4.44.2","webpack-dev-server":"^3.11.0"},"browser":{"./lib/adapters/http.js":"./lib/adapters/xhr.js"},"jsdelivr":"dist/axios.min.js","unpkg":"dist/axios.min.js","typings":"./index.d.ts","dependencies":{"follow-redirects":"^1.14.0"},"bundlesize":[{"path":"./dist/axios.min.js","threshold":"5kB"}],"_resolved":"https://registry.npmjs.org/axios/-/axios-0.21.4.tgz","_integrity":"sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==","_from":"axios@0.21.4"}')},446:(e,t,n)=>{"use strict";const r=wp.element;var i=n(804),o=n.n(i);function a(e){let t;const n=new Set,r=(e,r)=>{const i="function"==typeof e?e(t):e;if(i!==t){const e=t;t=r?i:Object.assign({},t,i),n.forEach((n=>n(t,e)))}},i=()=>t,o={setState:r,getState:i,subscribe:(e,r,o)=>r||o?((e,r=i,o=Object.is)=>{let a=r(t);function s(){const n=r(t);if(!o(a,n)){const t=a;e(a=n,t)}}return n.add(s),()=>n.delete(s)})(e,r,o):(n.add(e),()=>n.delete(e)),destroy:()=>n.clear()};return t=e(r,i,o),o}const s="undefined"==typeof window||!window.navigator||/ServerSideRendering|^Deno\//.test(window.navigator.userAgent)?i.useEffect:i.useLayoutEffect;function u(e){const t="function"==typeof e?a(e):e,n=(e=t.getState,n=Object.is)=>{const[,r]=(0,i.useReducer)((e=>e+1),0),o=t.getState(),a=(0,i.useRef)(o),u=(0,i.useRef)(e),l=(0,i.useRef)(n),c=(0,i.useRef)(!1),f=(0,i.useRef)();let d;void 0===f.current&&(f.current=e(o));let p=!1;(a.current!==o||u.current!==e||l.current!==n||c.current)&&(d=e(o),p=!n(f.current,d)),s((()=>{p&&(f.current=d),a.current=o,u.current=e,l.current=n,c.current=!1}));const m=(0,i.useRef)(o);return s((()=>{const e=()=>{try{const e=t.getState(),n=u.current(e);l.current(f.current,n)||(a.current=e,f.current=n,r())}catch(e){c.current=!0,r()}},n=t.subscribe(e);return t.getState()!==m.current&&e(),n}),[]),p?d:f.current};return Object.assign(n,t),n[Symbol.iterator]=function(){console.warn("[useStore, api] = create() is deprecated and will be removed in v4");const e=[n,t];return{next(){const t=e.length<=0;return{value:e.shift(),done:t}}}},n}var l="pattern",c=12;function f(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==n)return;var r,i,o=[],a=!0,s=!1;try{for(n=n.call(e);!(a=(r=n.next()).done)&&(o.push(r.value),!t||o.length!==t);a=!0);}catch(e){s=!0,i=e}finally{try{a||null==n.return||n.return()}finally{if(s)throw i}}return o}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return d(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return d(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function d(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function p(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=window.wp.blocks.createBlock;return e.map((function(e){var n=f(Array.isArray(e)?e:[e.name,e.attributes,e.innerBlocks],3),r=n[0],i=n[1],o=n[2];return t(r,i,p(void 0===o?[]:o))}))}function m(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function h(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?m(Object(n),!0).forEach((function(t){v(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):m(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function v(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function y(e){return function(e){if(Array.isArray(e))return x(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return x(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return x(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function x(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var g=function(e,t){return"pattern"===e&&"tax_categories"===t?"Default":""},b=u((function(e,t){return{templates:[],skipNextFetch:!1,fetchToken:null,activeTemplate:{},activeTemplateBlocks:{},taxonomyDefaultState:{},searchParams:{taxonomies:{},type:l,search:""},nextPage:"",removeTemplates:function(){return e({nextPage:"",templates:[]})},appendTemplates:function(n){return e({templates:y(new Map([].concat(y(t().templates),y(n)).map((function(e){return[e.id,e]}))).values())})},setupDefaultTaxonomies:function(n){var r=Object.keys(n).reduce((function(e,n){return e[n]=function(e){return g(t().searchParams.type,e)}(n),e}),{}),i={};i.taxonomies=Object.assign({},r,t().searchParams.taxonomies),e({taxonomyDefaultState:r,searchParams:h({},Object.assign(t().searchParams,i))})},setActive:function(t){var n;if(e({activeTemplate:t}),Object.keys(t).length>0&&w.setState({currentPage:"single"}),null!=t&&null!==(n=t.fields)&&void 0!==n&&n.code){var r=window.wp.blocks.parse;e({activeTemplateBlocks:p(r(t.fields.code))})}},resetTaxonomy:function(e){var n;t().updateTaxonomies(v({},e,null!==(n=t().taxonomyDefaultState[e])&&void 0!==n?n:""))},updateTaxonomies:function(e){var n={};n.taxonomies=Object.assign({},t().searchParams.taxonomies,e),t().updateSearchParams(n)},updateSearchParams:function(n){var r,i;null!=n&&n.taxonomies&&!Object.keys(n.taxonomies).length&&(n.taxonomies=t().taxonomyDefaultState),null!=n&&n.type&&["","Default"].includes(null===(r=t().searchParams)||void 0===r||null===(i=r.taxonomies)||void 0===i?void 0:i.tax_categories)&&t().updateTaxonomies({tax_categories:g(n.type,"tax_categories")});var o=Object.assign({},t().searchParams,n);JSON.stringify(o)!==JSON.stringify(t().searchParams)&&e({templates:[],nextPage:"",searchParams:o})}}})),w=u((function(e){return{open:!1,metaData:{},currentPage:"main",setOpen:function(t){e({open:t}),t&&b.getState().removeTemplates()}}})),j=n(135),k=n.n(j),S=Object.defineProperty,_=Object.getOwnPropertySymbols,O=Object.prototype.hasOwnProperty,E=Object.prototype.propertyIsEnumerable,N=(e,t,n)=>t in e?S(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,C=(e,t)=>{for(var n in t||(t={}))O.call(t,n)&&N(e,n,t[n]);if(_)for(var n of _(t))E.call(t,n)&&N(e,n,t[n]);return e};const P=e=>t=>{try{const n=e(t);return n instanceof Promise?n:{then:e=>P(e)(n),catch(e){return this}}}catch(e){return{then(e){return this},catch:t=>P(t)(e)}}},A=(e,t)=>(n,r,i)=>{const{name:o,getStorage:a=(()=>localStorage),serialize:s=JSON.stringify,deserialize:u=JSON.parse,blacklist:l,whitelist:c,onRehydrateStorage:f,version:d=0,migrate:p,merge:m=((e,t)=>C(C({},t),e))}=t||{};let h;try{h=a()}catch(e){}if(!h)return e(((...e)=>{console.warn(`Persist middleware: unable to update ${o}, the given storage is currently unavailable.`),n(...e)}),r,i);const v=P(s),y=()=>{const e=C({},r());let t;c&&Object.keys(e).forEach((t=>{!c.includes(t)&&delete e[t]})),l&&l.forEach((t=>delete e[t]));const n=v({state:e,version:d}).then((e=>h.setItem(o,e))).catch((e=>{t=e}));if(t)throw t;return n},x=i.setState;i.setState=(e,t)=>{x(e,t),y()};const g=e(((...e)=>{n(...e),y()}),r,i);let b;const w=(null==f?void 0:f(r()))||void 0;return P(h.getItem.bind(h))(o).then((e=>{if(e)return u(e)})).then((e=>{if(e){if("number"!=typeof e.version||e.version===d)return e.state;if(p)return p(e.state,e.version);console.error("State loaded from storage couldn't be migrated since no migrate function was provided")}})).then((e=>(b=m(e,g),n(b,!0),y()))).then((()=>{null==w||w(b,void 0)})).catch((e=>{null==w||w(void 0,e)})),b||g};var T=n(206),F=n.n(T)().create({baseURL:window.extendifySdkData.root,headers:{"X-WP-Nonce":window.extendifySdkData.nonce,"X-Requested-With":"XMLHttpRequest","X-Extendify":!0}});function L(e){return Object.prototype.hasOwnProperty.call(e,"data")?e.data:e}F.interceptors.response.use((function(e){return function(e){return Object.prototype.hasOwnProperty.call(e,"soft_error")&&window.dispatchEvent(new CustomEvent("extendify-sdk::softerror-encountered",{detail:e.soft_error,bubbles:!0})),e}(L(e))}),(function(e){return function(e){if(e.response)return console.error(e.response),Promise.reject(L(e.response))}(e)})),F.interceptors.request.use((function(e){return function(e){return e.headers["X-Extendify-Dev-Mode"]=window.location.search.indexOf("DEVMODE")>-1,e.headers["X-Extendify-Local-Mode"]=window.location.search.indexOf("LOCALMODE")>-1,e}(function(e){return e.data&&(e.data.remaining_imports=K.getState().remainingImports(),e.data.entry_point=K.getState().entryPoint,e.data.total_imports=K.getState().imports),e}(e))}),(function(e){return e}));var I=function(){return F.get("user")},D=function(e){return F.get("user-meta",{params:{key:e}})},R=function(e,t){var n=new FormData;return n.append("email",e),n.append("key",t),F.post("login",n,{headers:{"Content-Type":"multipart/form-data"}})},M=function(e){var t=new FormData;return t.append("data",JSON.stringify(e)),F.post("user",t,{headers:{"Content-Type":"multipart/form-data"}})},V=function(e){var t=new FormData;return t.append("email",e),F.post("register-mailing-list",t,{headers:{"Content-Type":"multipart/form-data"}})};function H(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function B(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?H(Object(n),!0).forEach((function(t){U(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):H(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function U(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function q(e,t,n,r,i,o,a){try{var s=e[o](a),u=s.value}catch(e){return void n(e)}s.done?t(u):Promise.resolve(u).then(r,i)}function z(e){return function(){var t=this,n=arguments;return new Promise((function(r,i){var o=e.apply(t,n);function a(e){q(o,r,i,a,s,"next",e)}function s(e){q(o,r,i,a,s,"throw",e)}a(void 0)}))}}var W,Z,$,G,J={getItem:(Z=z(k().mark((function e(){return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,I();case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e)}))),function(){return Z.apply(this,arguments)}),setItem:(W=z(k().mark((function e(t,n){return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,M(n);case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e)}))),function(e,t){return W.apply(this,arguments)})},K=u(A((function(e,t){return{email:"",apiKey:"",imports:0,uuid:"",registration:{email:""},allowedImports:0,entryPoint:"not-set",enabled:!0,hasClickedThroughWelcomePage:!1,canInstallPlugins:!1,canActivatePlugins:!1,preferredOptions:{taxonomies:{},type:"",search:""},incrementImports:function(){return e({imports:t().imports+1})},canImport:function(){return!!t().apiKey||Number(t().imports)<Number(t().allowedImports)},remainingImports:function(){if(t().apiKey)return"unlimited";var e=Number(t().allowedImports)-Number(t().imports);return e>0?e:0},updatePreferredOption:function(n,r){var i,o,a;Object.prototype.hasOwnProperty.call(t().preferredOptions,n)||(r=Object.assign({},null!==(o=null===(a=t().preferredOptions)||void 0===a?void 0:a.taxonomies)&&void 0!==o?o:{},U({},n,r)),n="taxonomies");var s="type"==n&&r!==(null===(i=t().preferredOptions)||void 0===i?void 0:i.type);e({preferredOptions:B({},Object.assign({},t().preferredOptions,U({},n,r),s?{taxonomies:{}}:{}))})}}}),{name:"extendify-user",getStorage:function(){return J}}));function Y(){return(Y=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}function X(e,t){if(null==e)return{};var n,r,i={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(i[n]=e[n]);return i}function Q(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function ee(e,t){var n;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return Q(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Q(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0;return function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}return(n=e[Symbol.iterator]()).next.bind(n)}function te(e,t){if(e in t){for(var n=t[e],r=arguments.length,i=new Array(r>2?r-2:0),o=2;o<r;o++)i[o-2]=arguments[o];return"function"==typeof n?n.apply(void 0,i):n}var a=new Error('Tried to handle "'+e+'" but there is no handler defined. Only defined handlers are: '+Object.keys(t).map((function(e){return'"'+e+'"'})).join(", ")+".");throw Error.captureStackTrace&&Error.captureStackTrace(a,te),a}function ne(e){var t=e.props,n=e.slot,r=e.defaultTag,i=e.features,o=e.visible,a=void 0===o||o,s=e.name;if(a)return re(t,n,r,s);var u=null!=i?i:$.None;if(u&$.Static){var l=t.static,c=void 0!==l&&l,f=X(t,["static"]);if(c)return re(f,n,r,s)}if(u&$.RenderStrategy){var d,p=t.unmount,m=void 0===p||p,h=X(t,["unmount"]);return te(m?G.Unmount:G.Hidden,((d={})[G.Unmount]=function(){return null},d[G.Hidden]=function(){return re(Y({},h,{hidden:!0,style:{display:"none"}}),n,r,s)},d))}return re(t,n,r,s)}function re(e,t,n,r){var o;void 0===t&&(t={});var a=oe(e,["unmount","static"]),s=a.as,u=void 0===s?n:s,l=a.children,c=a.refName,f=void 0===c?"ref":c,d=X(a,["as","children","refName"]),p=void 0!==e.ref?((o={})[f]=e.ref,o):{},m="function"==typeof l?l(t):l;if(d.className&&"function"==typeof d.className&&(d.className=d.className(t)),u===i.Fragment&&Object.keys(d).length>0){if(!(0,i.isValidElement)(m)||Array.isArray(m)&&m.length>1)throw new Error(['Passing props on "Fragment"!',"","The current component <"+r+' /> is rendering a "Fragment".',"However we need to passthrough the following props:",Object.keys(d).map((function(e){return" - "+e})).join("\n"),"","You can apply a few solutions:",['Add an `as="..."` prop, to ensure that we render an actual element instead of a "Fragment".',"Render a single element as the child so that we can forward the props onto that element."].map((function(e){return" - "+e})).join("\n")].join("\n"));return(0,i.cloneElement)(m,Object.assign({},function(e,t,n){for(var r,i=Object.assign({},e),o=function(){var n,o=r.value;void 0!==e[o]&&void 0!==t[o]&&Object.assign(i,((n={})[o]=function(n){n.defaultPrevented||e[o](n),n.defaultPrevented||t[o](n)},n))},a=ee(n);!(r=a()).done;)o();return i}(function(e){var t=Object.assign({},e);for(var n in t)void 0===t[n]&&delete t[n];return t}(oe(d,["ref"])),m.props,["onClick"]),p))}return(0,i.createElement)(u,Object.assign({},oe(d,["ref"]),u!==i.Fragment&&p),m)}function ie(e){var t;return Object.assign((0,i.forwardRef)(e),{displayName:null!=(t=e.displayName)?t:e.name})}function oe(e,t){void 0===t&&(t=[]);for(var n,r=Object.assign({},e),i=ee(t);!(n=i()).done;){var o=n.value;o in r&&delete r[o]}return r}!function(e){e[e.None=0]="None",e[e.RenderStrategy=1]="RenderStrategy",e[e.Static=2]="Static"}($||($={})),function(e){e[e.Unmount=0]="Unmount",e[e.Hidden=1]="Hidden"}(G||(G={}));var ae="undefined"!=typeof window?i.useLayoutEffect:i.useEffect,se={serverHandoffComplete:!1};function ue(){var e=(0,i.useState)(se.serverHandoffComplete),t=e[0],n=e[1];return(0,i.useEffect)((function(){!0!==t&&n(!0)}),[t]),(0,i.useEffect)((function(){!1===se.serverHandoffComplete&&(se.serverHandoffComplete=!0)}),[]),t}var le=0;function ce(){return++le}function fe(){var e=ue(),t=(0,i.useState)(e?ce:null),n=t[0],r=t[1];return ae((function(){null===n&&r(ce())}),[n]),null!=n?""+n:void 0}function de(){var e=(0,i.useRef)(!1);return(0,i.useEffect)((function(){return e.current=!0,function(){e.current=!1}}),[]),e}var pe,me,he=(0,i.createContext)(null);function ve(){return(0,i.useContext)(he)}function ye(e){var t=e.value,n=e.children;return o().createElement(he.Provider,{value:t},n)}function xe(){var e=(0,i.useRef)(!0);return(0,i.useEffect)((function(){e.current=!1}),[]),e.current}function ge(){var e=[],t={requestAnimationFrame:function(e){function t(){return e.apply(this,arguments)}return t.toString=function(){return e.toString()},t}((function(){var e=requestAnimationFrame.apply(void 0,arguments);t.add((function(){return cancelAnimationFrame(e)}))})),nextFrame:function(){for(var e=arguments.length,n=new Array(e),r=0;r<e;r++)n[r]=arguments[r];t.requestAnimationFrame((function(){t.requestAnimationFrame.apply(t,n)}))},setTimeout:function(e){function t(){return e.apply(this,arguments)}return t.toString=function(){return e.toString()},t}((function(){var e=setTimeout.apply(void 0,arguments);t.add((function(){return clearTimeout(e)}))})),add:function(t){e.push(t)},dispose:function(){for(var t,n=ee(e.splice(0));!(t=n()).done;){var r=t.value;r()}}};return t}function be(e){for(var t,n=arguments.length,r=new Array(n>1?n-1:0),i=1;i<n;i++)r[i-1]=arguments[i];e&&r.length>0&&(t=e.classList).add.apply(t,r)}function we(e){for(var t,n=arguments.length,r=new Array(n>1?n-1:0),i=1;i<n;i++)r[i-1]=arguments[i];e&&r.length>0&&(t=e.classList).remove.apply(t,r)}function je(e,t,n,r,i,o){var a=ge(),s=void 0!==o?function(e){var t={called:!1};return function(){if(!t.called)return t.called=!0,e.apply(void 0,arguments)}}(o):function(){};return we.apply(void 0,[e].concat(i)),be.apply(void 0,[e].concat(t,n)),a.nextFrame((function(){we.apply(void 0,[e].concat(n)),be.apply(void 0,[e].concat(r)),a.add(function(e,t){var n=ge();if(!e)return n.dispose;var r=getComputedStyle(e),i=[r.transitionDuration,r.transitionDelay].map((function(e){var t=e.split(",").filter(Boolean).map((function(e){return e.includes("ms")?parseFloat(e):1e3*parseFloat(e)})).sort((function(e,t){return t-e}))[0];return void 0===t?0:t})),o=i[0],a=i[1];return 0!==o?n.setTimeout((function(){t(me.Finished)}),o+a):t(me.Finished),n.add((function(){return t(me.Cancelled)})),n.dispose}(e,(function(n){return we.apply(void 0,[e].concat(r,t)),be.apply(void 0,[e].concat(i)),s(n)})))})),a.add((function(){return we.apply(void 0,[e].concat(t,n,r,i))})),a.add((function(){return s(me.Cancelled)})),a.dispose}function ke(e){return void 0===e&&(e=""),(0,i.useMemo)((function(){return e.split(" ").filter((function(e){return e.trim().length>1}))}),[e])}he.displayName="OpenClosedContext",function(e){e[e.Open=0]="Open",e[e.Closed=1]="Closed"}(pe||(pe={})),function(e){e.Finished="finished",e.Cancelled="cancelled"}(me||(me={}));var Se,_e=(0,i.createContext)(null);_e.displayName="TransitionContext",function(e){e.Visible="visible",e.Hidden="hidden"}(Se||(Se={}));var Oe=(0,i.createContext)(null);function Ee(e){return"children"in e?Ee(e.children):e.current.filter((function(e){return e.state===Se.Visible})).length>0}function Ne(e){var t=(0,i.useRef)(e),n=(0,i.useRef)([]),r=de();(0,i.useEffect)((function(){t.current=e}),[e]);var o=(0,i.useCallback)((function(e,i){var o;void 0===i&&(i=G.Hidden);var a=n.current.findIndex((function(t){return t.id===e}));-1!==a&&(te(i,((o={})[G.Unmount]=function(){n.current.splice(a,1)},o[G.Hidden]=function(){n.current[a].state=Se.Hidden},o)),!Ee(n)&&r.current&&(null==t.current||t.current()))}),[t,r,n]),a=(0,i.useCallback)((function(e){var t=n.current.find((function(t){return t.id===e}));return t?t.state!==Se.Visible&&(t.state=Se.Visible):n.current.push({id:e,state:Se.Visible}),function(){return o(e,G.Unmount)}}),[n,o]);return(0,i.useMemo)((function(){return{children:n,register:a,unregister:o}}),[a,o,n])}function Ce(){}Oe.displayName="NestingContext";var Pe=["beforeEnter","afterEnter","beforeLeave","afterLeave"];function Ae(e){for(var t,n={},r=ee(Pe);!(t=r()).done;){var i,o=t.value;n[o]=null!=(i=e[o])?i:Ce}return n}var Te,Fe=$.RenderStrategy;function Le(e){var t,n=e.beforeEnter,r=e.afterEnter,a=e.beforeLeave,s=e.afterLeave,u=e.enter,l=e.enterFrom,c=e.enterTo,f=e.entered,d=e.leave,p=e.leaveFrom,m=e.leaveTo,h=X(e,["beforeEnter","afterEnter","beforeLeave","afterLeave","enter","enterFrom","enterTo","entered","leave","leaveFrom","leaveTo"]),v=(0,i.useRef)(null),y=(0,i.useState)(Se.Visible),x=y[0],g=y[1],b=h.unmount?G.Unmount:G.Hidden,w=function(){var e=(0,i.useContext)(_e);if(null===e)throw new Error("A <Transition.Child /> is used but it is missing a parent <Transition /> or <Transition.Root />.");return e}(),j=w.show,k=w.appear,S=function(){var e=(0,i.useContext)(Oe);if(null===e)throw new Error("A <Transition.Child /> is used but it is missing a parent <Transition /> or <Transition.Root />.");return e}(),_=S.register,O=S.unregister,E=xe(),N=fe(),C=(0,i.useRef)(!1),P=Ne((function(){C.current||(g(Se.Hidden),O(N),M.current.afterLeave())}));ae((function(){if(N)return _(N)}),[_,N]),ae((function(){var e;b===G.Hidden&&N&&(j&&x!==Se.Visible?g(Se.Visible):te(x,((e={})[Se.Hidden]=function(){return O(N)},e[Se.Visible]=function(){return _(N)},e)))}),[x,N,_,O,j,b]);var A=ke(u),T=ke(l),F=ke(c),L=ke(f),I=ke(d),D=ke(p),R=ke(m),M=function(e){var t=(0,i.useRef)(Ae(e));return(0,i.useEffect)((function(){t.current=Ae(e)}),[e]),t}({beforeEnter:n,afterEnter:r,beforeLeave:a,afterLeave:s}),V=ue();(0,i.useEffect)((function(){if(V&&x===Se.Visible&&null===v.current)throw new Error("Did you forget to passthrough the `ref` to the actual DOM node?")}),[v,x,V]);var H=E&&!k;ae((function(){var e=v.current;if(e&&!H)return C.current=!0,j&&M.current.beforeEnter(),j||M.current.beforeLeave(),j?je(e,A,T,F,L,(function(e){C.current=!1,e===me.Finished&&M.current.afterEnter()})):je(e,I,D,R,L,(function(e){C.current=!1,e===me.Finished&&(Ee(P)||(g(Se.Hidden),O(N),M.current.afterLeave()))}))}),[M,N,C,O,P,v,H,j,A,T,F,I,D,R]);var B={ref:v},U=h;return o().createElement(Oe.Provider,{value:P},o().createElement(ye,{value:te(x,(t={},t[Se.Visible]=pe.Open,t[Se.Hidden]=pe.Closed,t))},ne({props:Y({},U,B),defaultTag:"div",features:Fe,visible:x===Se.Visible,name:"Transition.Child"})))}function Ie(e){var t,n=e.show,r=e.appear,a=void 0!==r&&r,s=e.unmount,u=X(e,["show","appear","unmount"]),l=ve();void 0===n&&null!==l&&(n=te(l,((t={})[pe.Open]=!0,t[pe.Closed]=!1,t)));if(![!0,!1].includes(n))throw new Error("A <Transition /> is used but it is missing a `show={true | false}` prop.");var c=(0,i.useState)(n?Se.Visible:Se.Hidden),f=c[0],d=c[1],p=Ne((function(){d(Se.Hidden)})),m=xe(),h=(0,i.useMemo)((function(){return{show:n,appear:a||!m}}),[n,a,m]);(0,i.useEffect)((function(){n?d(Se.Visible):Ee(p)||d(Se.Hidden)}),[n,p]);var v={unmount:s};return o().createElement(Oe.Provider,{value:p},o().createElement(_e.Provider,{value:h},ne({props:Y({},v,{as:i.Fragment,children:o().createElement(Le,Object.assign({},v,u))}),defaultTag:i.Fragment,features:Fe,visible:f===Se.Visible,name:"Transition"})))}function De(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];var r=(0,i.useRef)(t);return(0,i.useEffect)((function(){r.current=t}),[t]),(0,i.useCallback)((function(e){for(var t,n=ee(r.current);!(t=n()).done;){var i=t.value;null!=i&&("function"==typeof i?i(e):i.current=e)}}),[r])}function Re(e){for(var t,n,r=e.parentElement,i=null;r&&!(r instanceof HTMLFieldSetElement);)r instanceof HTMLLegendElement&&(i=r),r=r.parentElement;var o=null!=(t=""===(null==(n=r)?void 0:n.getAttribute("disabled")))&&t;return(!o||!function(e){if(!e)return!1;var t=e.previousElementSibling;for(;null!==t;){if(t instanceof HTMLLegendElement)return!1;t=t.previousElementSibling}return!0}(i))&&o}function Me(e,t,n){var r=(0,i.useRef)(t);r.current=t,(0,i.useEffect)((function(){function t(e){r.current.call(window,e)}return window.addEventListener(e,t,n),function(){return window.removeEventListener(e,t,n)}}),[e,n])}Ie.Child=function(e){var t=null!==(0,i.useContext)(_e),n=null!==ve();return!t&&n?o().createElement(Ie,Object.assign({},e)):o().createElement(Le,Object.assign({},e))},Ie.Root=Ie,function(e){e.Space=" ",e.Enter="Enter",e.Escape="Escape",e.Backspace="Backspace",e.ArrowLeft="ArrowLeft",e.ArrowUp="ArrowUp",e.ArrowRight="ArrowRight",e.ArrowDown="ArrowDown",e.Home="Home",e.End="End",e.PageUp="PageUp",e.PageDown="PageDown",e.Tab="Tab"}(Te||(Te={}));var Ve,He,Be,Ue,qe,ze=["[contentEditable=true]","[tabindex]","a[href]","area[href]","button:not([disabled])","iframe","input:not([disabled])","select:not([disabled])","textarea:not([disabled])"].map((function(e){return e+":not([tabindex='-1'])"})).join(",");function We(e){null==e||e.focus({preventScroll:!0})}function Ze(e,t){var n=Array.isArray(e)?e:function(e){return void 0===e&&(e=document.body),null==e?[]:Array.from(e.querySelectorAll(ze))}(e),r=document.activeElement,i=function(){if(t&(Ve.First|Ve.Next))return Be.Next;if(t&(Ve.Previous|Ve.Last))return Be.Previous;throw new Error("Missing Focus.First, Focus.Previous, Focus.Next or Focus.Last")}(),o=function(){if(t&Ve.First)return 0;if(t&Ve.Previous)return Math.max(0,n.indexOf(r))-1;if(t&Ve.Next)return Math.max(0,n.indexOf(r))+1;if(t&Ve.Last)return n.length-1;throw new Error("Missing Focus.First, Focus.Previous, Focus.Next or Focus.Last")}(),a=t&Ve.NoScroll?{preventScroll:!0}:{},s=0,u=n.length,l=void 0;do{var c;if(s>=u||s+u<=0)return He.Error;var f=o+s;if(t&Ve.WrapAround)f=(f+u)%u;else{if(f<0)return He.Underflow;if(f>=u)return He.Overflow}null==(c=l=n[f])||c.focus(a),s+=i}while(l!==document.activeElement);return l.hasAttribute("tabindex")||l.setAttribute("tabindex","0"),He.Success}function $e(e,t,n){void 0===t&&(t=qe.All);var r=void 0===n?{}:n,o=r.initialFocus,a=r.containers,s=(0,i.useRef)("undefined"!=typeof window?document.activeElement:null),u=(0,i.useRef)(null),l=de(),c=Boolean(t&qe.RestoreFocus),f=Boolean(t&qe.InitialFocus);(0,i.useEffect)((function(){c&&(s.current=document.activeElement)}),[c]),(0,i.useEffect)((function(){if(c)return function(){We(s.current),s.current=null}}),[c]),(0,i.useEffect)((function(){if(f&&e.current){var t=document.activeElement;if(null==o?void 0:o.current){if((null==o?void 0:o.current)===t)return void(u.current=t)}else if(e.current.contains(t))return void(u.current=t);(null==o?void 0:o.current)?We(o.current):Ze(e.current,Ve.First)===He.Error&&console.warn("There are no focusable elements inside the <FocusTrap />"),u.current=document.activeElement}}),[e,o,f]),Me("keydown",(function(n){t&qe.TabLock&&e.current&&n.key===Te.Tab&&(n.preventDefault(),Ze(e.current,(n.shiftKey?Ve.Previous:Ve.Next)|Ve.WrapAround)===He.Success&&(u.current=document.activeElement))})),Me("focus",(function(n){if(t&qe.FocusLock){var r=new Set(null==a?void 0:a.current);if(r.add(e),r.size){var i=u.current;if(i&&l.current){var o=n.target;o&&o instanceof HTMLElement?!function(e,t){for(var n,r=ee(e);!(n=r()).done;){var i;if(null==(i=n.value.current)?void 0:i.contains(t))return!0}return!1}(r,o)?(n.preventDefault(),n.stopPropagation(),We(i)):(u.current=o,We(o)):We(u.current)}}}}),!0)}!function(e){e[e.First=1]="First",e[e.Previous=2]="Previous",e[e.Next=4]="Next",e[e.Last=8]="Last",e[e.WrapAround=16]="WrapAround",e[e.NoScroll=32]="NoScroll"}(Ve||(Ve={})),function(e){e[e.Error=0]="Error",e[e.Overflow=1]="Overflow",e[e.Success=2]="Success",e[e.Underflow=3]="Underflow"}(He||(He={})),function(e){e[e.Previous=-1]="Previous",e[e.Next=1]="Next"}(Be||(Be={})),function(e){e[e.Strict=0]="Strict",e[e.Loose=1]="Loose"}(Ue||(Ue={})),function(e){e[e.None=1]="None",e[e.InitialFocus=2]="InitialFocus",e[e.TabLock=4]="TabLock",e[e.FocusLock=8]="FocusLock",e[e.RestoreFocus=16]="RestoreFocus",e[e.All=30]="All"}(qe||(qe={}));var Ge=new Set,Je=new Map;function Ke(e){e.setAttribute("aria-hidden","true"),e.inert=!0}function Ye(e){var t=Je.get(e);t&&(null===t["aria-hidden"]?e.removeAttribute("aria-hidden"):e.setAttribute("aria-hidden",t["aria-hidden"]),e.inert=t.inert)}var Xe=(0,i.createContext)(!1);function Qe(e){return o().createElement(Xe.Provider,{value:e.force},e.children)}const et=ReactDOM;function tt(){var e=(0,i.useContext)(Xe),t=(0,i.useContext)(ot),n=(0,i.useState)((function(){if(!e&&null!==t)return null;if("undefined"==typeof window)return null;var n=document.getElementById("headlessui-portal-root");if(n)return n;var r=document.createElement("div");return r.setAttribute("id","headlessui-portal-root"),document.body.appendChild(r)})),r=n[0],o=n[1];return(0,i.useEffect)((function(){e||null!==t&&o(t.current)}),[t,o,e]),r}var nt=i.Fragment;function rt(e){var t=e,n=tt(),r=(0,i.useState)((function(){return"undefined"==typeof window?null:document.createElement("div")}))[0],o=ue();return ae((function(){if(n&&r)return n.appendChild(r),function(){var e;n&&(r&&(n.removeChild(r),n.childNodes.length<=0&&(null==(e=n.parentElement)||e.removeChild(n))))}}),[n,r]),o&&n&&r?(0,et.createPortal)(ne({props:t,defaultTag:nt,name:"Portal"}),r):null}var it=i.Fragment,ot=(0,i.createContext)(null);rt.Group=function(e){var t=e.target,n=X(e,["target"]);return o().createElement(ot.Provider,{value:t},ne({props:n,defaultTag:it,name:"Popover.Group"}))};var at=(0,i.createContext)(null);function st(){var e=(0,i.useContext)(at);if(null===e){var t=new Error("You used a <Description /> component, but it is not inside a relevant parent.");throw Error.captureStackTrace&&Error.captureStackTrace(t,st),t}return e}var ut,lt,ct,ft,dt=(0,i.createContext)((function(){}));function pt(e){var t=e.children,n=e.onUpdate,r=e.type,a=e.element,s=(0,i.useContext)(dt),u=(0,i.useCallback)((function(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];null==n||n.apply(void 0,t),s.apply(void 0,t)}),[s,n]);return ae((function(){return u(ut.Add,r,a),function(){return u(ut.Remove,r,a)}}),[u,r,a]),o().createElement(dt.Provider,{value:u},t)}dt.displayName="StackContext",function(e){e[e.Add=0]="Add",e[e.Remove=1]="Remove"}(ut||(ut={})),function(e){e[e.Open=0]="Open",e[e.Closed=1]="Closed"}(ct||(ct={})),function(e){e[e.SetTitleId=0]="SetTitleId"}(ft||(ft={}));var mt=((lt={})[ft.SetTitleId]=function(e,t){return e.titleId===t.id?e:Y({},e,{titleId:t.id})},lt),ht=(0,i.createContext)(null);function vt(e){var t=(0,i.useContext)(ht);if(null===t){var n=new Error("<"+e+" /> is missing a parent <"+wt.displayName+" /> component.");throw Error.captureStackTrace&&Error.captureStackTrace(n,vt),n}return t}function yt(e,t){return te(t.type,mt,e,t)}ht.displayName="DialogContext";var xt=$.RenderStrategy|$.Static,gt=ie((function(e,t){var n,r=e.open,a=e.onClose,s=e.initialFocus,u=X(e,["open","onClose","initialFocus"]),l=(0,i.useState)(0),c=l[0],f=l[1],d=ve();void 0===r&&null!==d&&(r=te(d,((n={})[pe.Open]=!0,n[pe.Closed]=!1,n)));var p=(0,i.useRef)(new Set),m=(0,i.useRef)(null),h=De(m,t),v=e.hasOwnProperty("open")||null!==d,y=e.hasOwnProperty("onClose");if(!v&&!y)throw new Error("You have to provide an `open` and an `onClose` prop to the `Dialog` component.");if(!v)throw new Error("You provided an `onClose` prop to the `Dialog`, but forgot an `open` prop.");if(!y)throw new Error("You provided an `open` prop to the `Dialog`, but forgot an `onClose` prop.");if("boolean"!=typeof r)throw new Error("You provided an `open` prop to the `Dialog`, but the value is not a boolean. Received: "+r);if("function"!=typeof a)throw new Error("You provided an `onClose` prop to the `Dialog`, but the value is not a function. Received: "+a);var x=r?ct.Open:ct.Closed,g=null!==d?d===pe.Open:x===ct.Open,b=(0,i.useReducer)(yt,{titleId:null,descriptionId:null}),w=b[0],j=b[1],k=(0,i.useCallback)((function(){return a(!1)}),[a]),S=(0,i.useCallback)((function(e){return j({type:ft.SetTitleId,id:e})}),[j]),_=ue()&&x===ct.Open,O=c>1,E=null!==(0,i.useContext)(ht);$e(m,_?te(O?"parent":"leaf",{parent:qe.RestoreFocus,leaf:qe.All}):qe.None,{initialFocus:s,containers:p}),function(e,t){void 0===t&&(t=!0),ae((function(){if(t&&e.current){var n=e.current;Ge.add(n);for(var r,i=ee(Je.keys());!(r=i()).done;){var o=r.value;o.contains(n)&&(Ye(o),Je.delete(o))}return document.querySelectorAll("body > *").forEach((function(e){if(e instanceof HTMLElement){for(var t,n=ee(Ge);!(t=n()).done;){var r=t.value;if(e.contains(r))return}1===Ge.size&&(Je.set(e,{"aria-hidden":e.getAttribute("aria-hidden"),inert:e.inert}),Ke(e))}})),function(){if(Ge.delete(n),Ge.size>0)document.querySelectorAll("body > *").forEach((function(e){if(e instanceof HTMLElement&&!Je.has(e)){for(var t,n=ee(Ge);!(t=n()).done;){var r=t.value;if(e.contains(r))return}Je.set(e,{"aria-hidden":e.getAttribute("aria-hidden"),inert:e.inert}),Ke(e)}}));else for(var e,t=ee(Je.keys());!(e=t()).done;){var r=e.value;Ye(r),Je.delete(r)}}}}),[t])}(m,!!O&&_),Me("mousedown",(function(e){var t,n=e.target;x===ct.Open&&(O||(null==(t=m.current)?void 0:t.contains(n))||k())})),Me("keydown",(function(e){e.key===Te.Escape&&x===ct.Open&&(O||(e.preventDefault(),e.stopPropagation(),k()))})),(0,i.useEffect)((function(){if(x===ct.Open&&!E){var e=document.documentElement.style.overflow,t=document.documentElement.style.paddingRight,n=window.innerWidth-document.documentElement.clientWidth;return document.documentElement.style.overflow="hidden",document.documentElement.style.paddingRight=n+"px",function(){document.documentElement.style.overflow=e,document.documentElement.style.paddingRight=t}}}),[x,E]),(0,i.useEffect)((function(){if(x===ct.Open&&m.current){var e=new IntersectionObserver((function(e){for(var t,n=ee(e);!(t=n()).done;){var r=t.value;0===r.boundingClientRect.x&&0===r.boundingClientRect.y&&0===r.boundingClientRect.width&&0===r.boundingClientRect.height&&k()}}));return e.observe(m.current),function(){return e.disconnect()}}}),[x,m,k]);var N=function(){var e=(0,i.useState)([]),t=e[0],n=e[1];return[t.length>0?t.join(" "):void 0,(0,i.useMemo)((function(){return function(e){var t=(0,i.useCallback)((function(e){return n((function(t){return[].concat(t,[e])})),function(){return n((function(t){var n=t.slice(),r=n.indexOf(e);return-1!==r&&n.splice(r,1),n}))}}),[]),r=(0,i.useMemo)((function(){return{register:t,slot:e.slot,name:e.name,props:e.props}}),[t,e.slot,e.name,e.props]);return o().createElement(at.Provider,{value:r},e.children)}}),[n])]}(),C=N[0],P=N[1],A="headlessui-dialog-"+fe(),T=(0,i.useMemo)((function(){return[{dialogState:x,close:k,setTitleId:S},w]}),[x,w,k,S]),F=(0,i.useMemo)((function(){return{open:x===ct.Open}}),[x]),L={ref:h,id:A,role:"dialog","aria-modal":x===ct.Open||void 0,"aria-labelledby":w.titleId,"aria-describedby":C,onClick:function(e){e.stopPropagation()}},I=u;return o().createElement(pt,{type:"Dialog",element:m,onUpdate:(0,i.useCallback)((function(e,t,n){var r;"Dialog"===t&&te(e,((r={})[ut.Add]=function(){p.current.add(n),f((function(e){return e+1}))},r[ut.Remove]=function(){p.current.add(n),f((function(e){return e-1}))},r))}),[])},o().createElement(Qe,{force:!0},o().createElement(rt,null,o().createElement(ht.Provider,{value:T},o().createElement(rt.Group,{target:m},o().createElement(Qe,{force:!1},o().createElement(P,{slot:F,name:"Dialog.Description"},ne({props:Y({},I,L),slot:F,defaultTag:"div",features:xt,visible:g,name:"Dialog"}))))))))})),bt=ie((function e(t,n){var r=vt([wt.displayName,e.name].join("."))[0],o=r.dialogState,a=r.close,s=De(n),u="headlessui-dialog-overlay-"+fe(),l=(0,i.useCallback)((function(e){if(Re(e.currentTarget))return e.preventDefault();e.preventDefault(),e.stopPropagation(),a()}),[a]),c=(0,i.useMemo)((function(){return{open:o===ct.Open}}),[o]);return ne({props:Y({},t,{ref:s,id:u,"aria-hidden":!0,onClick:l}),slot:c,defaultTag:"div",name:"Dialog.Overlay"})}));var wt=Object.assign(gt,{Overlay:bt,Title:function e(t){var n=vt([wt.displayName,e.name].join("."))[0],r=n.dialogState,o=n.setTitleId,a="headlessui-dialog-title-"+fe();(0,i.useEffect)((function(){return o(a),function(){return o(null)}}),[a,o]);var s=(0,i.useMemo)((function(){return{open:r===ct.Open}}),[r]);return ne({props:Y({},t,{id:a}),slot:s,defaultTag:"h2",name:"Dialog.Title"})},Description:function(e){var t=st(),n="headlessui-description-"+fe();ae((function(){return t.register(n)}),[n,t.register]);var r=e,i=Y({},t.props,{id:n});return ne({props:Y({},r,i),slot:t.slot||{},defaultTag:"p",name:t.name||"Description"})}});const jt=wp.i18n;var kt=function(){return F.get("meta-data")},St=function(e){return F.post("simple-ping",{action:e})},_t=n(246);function Ot(){var e=b((function(e){return e.updateSearchParams})),t=function(t){St("welcome-".concat(null!=t?t:"closed")),K.setState({hasClickedThroughWelcomePage:!0}),e({type:null!=t?t:"pattern"}),w.setState({currentPage:"main"})};(0,r.useEffect)((function(){St("welcome-opened")}),[]);var n=(0,_t.jsx)("div",{className:"w-full h-16 relative z-10 border-solid border-0 flex-shrink-0",children:(0,_t.jsxs)("div",{className:"flex justify-between items-center px-6 sm:px-12 h-full",children:[(0,_t.jsx)("div",{className:"flex space-x-12 h-full"}),(0,_t.jsx)("div",{className:"space-x-2 transform sm:translate-x-8",children:(0,_t.jsxs)("button",{type:"button",className:"components-button has-icon",onClick:function(){return t()},children:[(0,_t.jsx)("svg",{width:"24",height:"24",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",size:"24",role:"img","aria-hidden":"true",focusable:"false",children:(0,_t.jsx)("path",{d:"M13 11.8l6.1-6.3-1-1-6.1 6.2-6.1-6.2-1 1 6.1 6.3-6.5 6.7 1 1 6.5-6.6 6.5 6.6 1-1z"})}),(0,_t.jsx)("span",{className:"sr-only",children:(0,jt.__)("Close library","extendify-sdk")})]})})]})}),i="Redux"===window.extendifySdkData.source?(0,jt.__)("Welcome to the Redux Library by Extendify","extendify-sdk"):(0,jt.__)("Welcome to the Extendify library","extendify-sdk");return(0,_t.jsxs)("div",{className:"w-full h-full flex flex-col items-center relative shadow-xl max-w-screen-4xl mx-auto bg-white",children:[n,(0,_t.jsxs)("section",{className:"flex-grow w-full justify-between flex flex-col overflow-y-scroll",children:[(0,_t.jsx)("div",{className:"flex items-center flex-grow",children:(0,_t.jsxs)("div",{className:"w-full p-8 max-w-screen-2xl mx-auto lg:space-x-16 lg:flex space-y-16 lg:space-y-0",children:[(0,_t.jsxs)("div",{className:"flex-grow text-left",children:[(0,_t.jsx)("h1",{className:"m-0 mb-10 text-5xl",children:i}),(0,_t.jsxs)("div",{className:"max-w-2xl mb-24",children:[(0,_t.jsx)("p",{className:"mb-10 leading-loose",children:(0,jt.__)("Congratulations! You have access to our entire library of Gutenberg patterns and templates. You can add up to 3 templates or patterns to your site completely free.","extendify-sdk")}),(0,_t.jsx)("p",{className:"mb-6 leading-loose",children:(0,jt.__)("All patterns and templates are pre-designed to look beautiful with options to fit your style. They also keep your site running lightning fast by using only core blocks with no 3rd party page builder required.","extendify-sdk")}),(0,_t.jsx)("a",{className:"text-sm text-extendify-link underline",href:"https://extendify.com?utm_source=".concat(window.extendifySdkData.source,"&utm_medium=library&utm_campaign=welcome"),target:"_blank",rel:"noreferrer",children:(0,jt.__)("Learn more about Extendify","extendify-sdk")})]}),(0,_t.jsx)("h2",{className:"font-bold border-b border-black max-w-lg pb-2 mb-1",children:(0,jt.__)("Don't want the library in your editor?","extendify-sdk")}),(0,_t.jsxs)("div",{className:"",children:[(0,_t.jsx)("p",{children:(0,jt.sprintf)((0,jt.__)("Extendify was included with the %s plugin.","extendify-sdk"),window.extendifySdkData.source)}),(0,_t.jsx)("a",{className:"text-xs text-extendify-link underline",href:"https://extendify.com/how-to-disable-the-extendify-library/?utm_source=".concat(window.extendifySdkData.source,"&utm_medium=library&utm_campaign=welcome"),target:"_blank",rel:"noreferrer",children:(0,jt.__)("Learn how to remove the library","extendify-sdk")})]})]}),(0,_t.jsx)("div",{className:"flex-shrink-0 flex items-end",children:(0,_t.jsxs)("div",{className:"flex-grow flex items-center space-y-4 xl:space-y-8 flex-col",children:[(0,_t.jsxs)("button",{type:"button",onClick:function(){return t("pattern")},className:"bg-white hover:bg-gray-50 cursor-pointer border border-gray-300 flex space-y-4 flex-col items-center justify-center p-8 lg:px-0 w-80",children:[(0,_t.jsx)("h3",{className:"m-0 text-gray-900",children:(0,jt.__)("Sections","extendify-sdk")}),(0,_t.jsx)("span",{children:(0,_t.jsxs)("svg",{className:"mt-1",xmlns:"http://www.w3.org/2000/svg",width:"206",height:"122",viewBox:"0 0 206 122",fill:"none",children:[(0,_t.jsx)("path",{d:"M69 0H0V59H69V0Z",fill:"#DFDFDF"}),(0,_t.jsx)("path",{d:"M204 0H79V60H204V0Z",fill:"#DFDFDF"}),(0,_t.jsx)("path",{d:"M62.166 25H9.16602V28H62.166V25Z",fill:"#F9F9F9"}),(0,_t.jsx)("path",{d:"M63.166 18H10.166V21H63.166V18Z",fill:"#F9F9F9"}),(0,_t.jsx)("path",{d:"M62.166 34H9.16602V39H62.166V34Z",fill:"#F9F9F9"}),(0,_t.jsx)("path",{d:"M62.166 43H9.16602V48H62.166V43Z",fill:"#F9F9F9"}),(0,_t.jsx)("path",{d:"M140.166 25H87.166V28H140.166V25Z",fill:"#F9F9F9"}),(0,_t.jsx)("path",{d:"M140.166 34H87.166V39H140.166V34Z",fill:"#F9F9F9"}),(0,_t.jsx)("path",{d:"M140.166 43H87.166V48H140.166V43Z",fill:"#F9F9F9"}),(0,_t.jsx)("path",{d:"M197.166 25H151.166V28H197.166V25Z",fill:"#F9F9F9"}),(0,_t.jsx)("path",{d:"M141.166 17H88.166V20H141.166V17Z",fill:"#F9F9F9"}),(0,_t.jsx)("path",{d:"M198.166 17H152.166V20H198.166V17Z",fill:"#F9F9F9"}),(0,_t.jsx)("path",{d:"M62.166 10H9.16602V13H62.166V10Z",fill:"#F9F9F9"}),(0,_t.jsx)("path",{d:"M140.166 9H87.166V12H140.166V9Z",fill:"#F9F9F9"}),(0,_t.jsx)("path",{d:"M197.166 9H151.166V12H197.166V9Z",fill:"#F9F9F9"}),(0,_t.jsx)("path",{d:"M197.166 34H151.166V39H197.166V34Z",fill:"#F9F9F9"}),(0,_t.jsx)("path",{d:"M197.166 43H151.166V48H197.166V43Z",fill:"#F9F9F9"}),(0,_t.jsx)("path",{d:"M154.172 77.8088H0V121.216H154.172V77.8088Z",fill:"#DFDFDF"}),(0,_t.jsx)("path",{d:"M133.637 110.446C141.077 110.446 147.109 104.75 147.109 97.7229C147.109 90.6963 141.077 85 133.637 85C126.197 85 120.166 90.6963 120.166 97.7229C120.166 104.75 126.197 110.446 133.637 110.446Z",fill:"#F9F9F9"}),(0,_t.jsx)("path",{d:"M205.166 78H162.166V121H205.166V78Z",fill:"#DFDFDF"}),(0,_t.jsx)("path",{d:"M183.803 111.637C191.243 111.637 197.275 105.941 197.275 98.9141C197.275 91.8874 191.243 86.1912 183.803 86.1912C176.363 86.1912 170.332 91.8874 170.332 98.9141C170.332 105.941 176.363 111.637 183.803 111.637Z",fill:"#F9F9F9"}),(0,_t.jsx)("path",{d:"M113.695 88.7898H13.4082V100.764H113.695V88.7898Z",fill:"#F9F9F9"}),(0,_t.jsx)("path",{d:"M113.695 105.255H13.4082V109.745H113.695V105.255Z",fill:"#F9F9F9"})]})}),(0,_t.jsx)("span",{className:"text-extendify-bright underline text-base font-bold",children:(0,jt.__)("View patterns","extendify-sdk")})]}),(0,_t.jsxs)("button",{type:"button",onClick:function(){return t("template")},className:"bg-white hover:bg-gray-50 cursor-pointer border border-gray-300 flex space-y-4 flex-col items-center justify-center p-8 lg:px-0 w-80",children:[(0,_t.jsx)("h3",{className:"m-0 text-gray-900",children:(0,jt.__)("Full pages","extendify-sdk")}),(0,_t.jsx)("span",{children:(0,_t.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"156",height:"128",viewBox:"0 0 156 128",fill:"none",children:[(0,_t.jsx)("path",{d:"M155.006 38.4395H0.833984V81.8471H155.006V38.4395Z",fill:"#DFDFDF"}),(0,_t.jsx)("path",{d:"M155 0H1V36H155V0Z",fill:"#DFDFDF"}),(0,_t.jsx)("path",{d:"M148 7H10V28H148V7Z",fill:"#F9F9F9"}),(0,_t.jsx)("path",{d:"M147.521 47.4204H9.81445V50.414H147.521V47.4204Z",fill:"#F9F9F9"}),(0,_t.jsx)("path",{d:"M147.521 56.4012H9.81445V60.8917H147.521V56.4012Z",fill:"#F9F9F9"}),(0,_t.jsx)("path",{d:"M147.521 65.3821H9.81445V69.8726H147.521V65.3821Z",fill:"#F9F9F9"}),(0,_t.jsx)("path",{d:"M155.006 83.8089H0.833984V127.217H155.006V83.8089Z",fill:"#DFDFDF"}),(0,_t.jsx)("path",{d:"M21.7897 118.236C29.2297 118.236 35.261 112.539 35.261 105.513C35.261 98.486 29.2297 92.7898 21.7897 92.7898C14.3497 92.7898 8.31836 98.486 8.31836 105.513C8.31836 112.539 14.3497 118.236 21.7897 118.236Z",fill:"#F9F9F9"}),(0,_t.jsx)("path",{d:"M144.529 92.7898H44.2422V104.764H144.529V92.7898Z",fill:"#F9F9F9"}),(0,_t.jsx)("path",{d:"M144.529 109.255H44.2422V113.745H144.529V109.255Z",fill:"#F9F9F9"})]})}),(0,_t.jsx)("span",{className:"text-extendify-bright underline text-base font-bold",children:(0,jt.__)("View templates","extendify-sdk")})]})]})})]})}),(0,_t.jsxs)("footer",{className:"flex justify-between p-14 w-full",children:[(0,_t.jsx)("div",{children:(0,_t.jsxs)("svg",{className:"block",width:"64",height:"64",viewBox:"0 0 103 103",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[(0,_t.jsx)("rect",{y:"25.75",width:"70.8125",height:"77.25",fill:"#000000"}),(0,_t.jsx)("rect",{x:"45.0625",width:"57.9375",height:"57.9375",fill:"#37C2A2"})]})}),(0,_t.jsx)("button",{type:"button",onClick:function(){return t()},className:"bg-transparent cursor-pointer text-lg text-extendify-link underline",children:(0,jt.__)("Go to library","extendify-sdk")})]})]})]})}const Et=lodash,Nt=wp.components;var Ct=n(42),Pt=n.n(Ct);function At(e){return function(e){if(Array.isArray(e))return Tt(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return Tt(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return Tt(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Tt(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var Ft=u((function(e,t){return{taxonomies:{},openedTaxonomies:[],setTaxonomies:function(t){return e({taxonomies:t})},toggleOpenedTaxonomy:function(n,r){var i=t().openedTaxonomies;e({openedTaxonomies:r?[].concat(At(i),[n]):At(i.filter((function(e){return e!=n})))})}}}));function Lt(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function It(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==n)return;var r,i,o=[],a=!0,s=!1;try{for(n=n.call(e);!(a=(r=n.next()).done)&&(o.push(r.value),!t||o.length!==t);a=!0);}catch(e){s=!0,i=e}finally{try{a||null==n.return||n.return()}finally{if(s)throw i}}return o}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return Dt(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return Dt(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Dt(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function Rt(e){var t,n=It(e.taxonomy,2),i=n[0],o=n[1],a=b((function(e){return e.updateTaxonomies})),s=b((function(e){return e.resetTaxonomy})),u=b((function(e){return e.searchParams})),l=Ft((function(e){return e.openedTaxonomies})),c=Ft((function(e){return e.toggleOpenedTaxonomy})),f=It((0,r.useState)({}),2),d=f[0],p=f[1],m=It((0,r.useState)({}),2),h=m[0],v=m[1],y=(0,r.useRef)(),x=(0,r.useRef)(),g=(0,r.useRef)(),w=(0,r.useRef)(!0),j=function(e){var t;return(null==u?void 0:u.taxonomies[i])===e.term||(null===(t=e.children)||void 0===t?void 0:t.filter((function(e){return e.term===(null==u?void 0:u.taxonomies[i])})).length)>0},k=(0,r.useCallback)((function(e){var t;return Object.prototype.hasOwnProperty.call(e,"children")?e.children.filter((function(e){return null==e?void 0:e.type.includes(u.type)})).length:null==e||null===(t=e.type)||void 0===t?void 0:t.includes(u.type)}),[u.type]);if((0,r.useEffect)((function(){w.current?w.current=!1:p({})}),[u.type]),(0,r.useEffect)((function(){Object.keys(d).length?setTimeout((function(){requestAnimationFrame((function(){v(y.current.clientHeight),g.current.focus()}))}),200):v("auto")}),[d]),(0,r.useEffect)((function(){!Object.values(o).filter((function(e){return k(e)})).length&&s(i)}),[s,i,k,o]),!Object.keys(o).length||!Object.values(o).filter((function(e){return k(e)})).length)return"";var S=i.replace("tax_","").replace(/_/g," ").replace(/\b\w/g,(function(e){return e.toUpperCase()}));return(0,_t.jsx)(Nt.PanelBody,{title:S,initialOpen:l.includes(i),onToggle:function(e){return c(i,e)},children:(0,_t.jsx)(Nt.PanelRow,{children:(0,_t.jsxs)("div",{className:"overflow-hidden w-full relative",style:{height:h},children:[(0,_t.jsxs)("ul",{className:Pt()("p-1 m-0 w-full transform transition duration-200",{"-translate-x-full":Object.keys(d).length}),children:[(0,_t.jsx)("li",{className:"m-0",children:(0,_t.jsx)("button",{type:"button",className:"text-left cursor-pointer w-full flex justify-between items-center py-1.5 m-0 leading-none hover:text-wp-theme-500 bg-transparent transition duration-200 button-focus",ref:x,onClick:function(){a(Lt({},i,"pattern"===u.type&&"tax_categories"===i?"Default":""))},children:(0,_t.jsx)("span",{className:Pt()({"text-wp-theme-500":!(null!==(t=u.taxonomies[i])&&void 0!==t&&t.length)||"Default"===(null==u?void 0:u.taxonomies[i])}),children:"pattern"===u.type&&"tax_categories"===i?(0,jt.__)("Default","extendify-sdk"):(0,jt.__)("All","extendify-sdk")})})}),Object.values(o).filter((function(e){return k(e)})).sort((function(e,t){return e.term.localeCompare(t.term)})).map((function(e){return(0,_t.jsx)("li",{className:"m-0 w-full",children:(0,_t.jsxs)("button",{type:"button",className:"text-left cursor-pointer w-full flex justify-between items-center py-1.5 m-0 leading-none bg-transparent hover:text-wp-theme-500 transition duration-200 button-focus",onClick:function(){Object.prototype.hasOwnProperty.call(e,"children")?p(e):a(Lt({},i,e.term))},children:[(0,_t.jsx)("span",{className:Pt()({"text-wp-theme-500":j(e)}),children:e.term}),Object.prototype.hasOwnProperty.call(e,"children")&&(0,_t.jsx)("span",{className:"text-black",children:(0,_t.jsx)("svg",{width:"8",height:"14",viewBox:"0 0 8 14",className:"stroke-current",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:(0,_t.jsx)("path",{d:"M1 12.5L6 6.99998L1 1.5",strokeWidth:"1.5"})})})]})},e.term)}))]}),(0,_t.jsxs)("ul",{ref:y,className:Pt()("p-1 m-0 w-full transform transition duration-200 absolute top-0 right-0",{"translate-x-full":!Object.keys(d).length}),children:[Object.values(d).length>0&&(0,_t.jsx)("li",{className:"m-0",children:(0,_t.jsxs)("button",{type:"button",className:"text-left cursor-pointer font-bold flex space-x-4 items-center py-2 pr-4 m-0leading-none hover:text-wp-theme-500 bg-transparent transition duration-200 button-focus",ref:g,onClick:function(){p({}),x.current.focus()},children:[(0,_t.jsx)("svg",{className:"stroke-current transform rotate-180",width:"8",height:"14",viewBox:"0 0 8 14",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:(0,_t.jsx)("path",{d:"M1 12.5L6 6.99998L1 1.5",strokeWidth:"1.5"})}),(0,_t.jsx)("span",{children:d.term})]})}),Object.values(d).length&&Object.values(d.children).filter((function(e){return k(e)})).sort((function(e,t){return e.term.localeCompare(t.term)})).map((function(e){return(0,_t.jsx)("li",{className:"m-0 pl-6 w-full flex justify-between items-center",children:(0,_t.jsx)("button",{type:"button",className:"text-left cursor-pointer w-full flex justify-between items-center py-1.5 m-0 leading-none bg-transparent hover:text-wp-theme-500 transition duration-200 button-focus",onClick:function(){a(Lt({},i,e.term))},children:(0,_t.jsx)("span",{className:Pt()({"text-wp-theme-500":j(e)}),children:e.term})})},e.term)}))]})]})})})}function Mt(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==n)return;var r,i,o=[],a=!0,s=!1;try{for(n=n.call(e);!(a=(r=n.next()).done)&&(o.push(r.value),!t||o.length!==t);a=!0);}catch(e){s=!0,i=e}finally{try{a||null==n.return||n.return()}finally{if(s)throw i}}return o}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return Vt(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return Vt(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Vt(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function Ht(){var e,t=b((function(e){return e.updateSearchParams})),n=Ft((function(e){return e.taxonomies})),i=b((function(e){return e.searchParams})),o=(0,Et.debounce)((function(e){return t({taxonomies:{},search:e})}),500),a=Mt((0,r.useState)(null!==(e=null==i?void 0:i.search)&&void 0!==e?e:""),2),s=a[0],u=a[1];return(0,_t.jsxs)(_t.Fragment,{children:[(0,_t.jsxs)("div",{className:"mt-px bg-white mb-6 mx-6 pt-6 lg:mx-0 lg:pt-0",children:[(0,_t.jsx)("label",{className:"sr-only",htmlFor:"extendify-search-input",children:(0,jt.__)("What are you looking for?","extendify-sdk")}),(0,_t.jsx)("input",{id:"extendify-search-input",type:"search",placeholder:(0,jt.__)("What are you looking for?","extendify-sdk"),onChange:function(e){b.setState({nextPage:""}),u(e.target.value),o(e.target.value)},value:s,className:"button-focus bg-gray-100 focus:bg-white border-0 m-0 p-3.5 pb-3 rounded-none text-sm w-full",autoComplete:"off"}),(0,_t.jsx)("svg",{className:"absolute top-3 right-6 hidden lg:block pointer-events-none",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",width:"24",height:"24",role:"img","aria-hidden":"true",focusable:"false",children:(0,_t.jsx)("path",{d:"M13.5 6C10.5 6 8 8.5 8 11.5c0 1.1.3 2.1.9 3l-3.4 3 1 1.1 3.4-2.9c1 .9 2.2 1.4 3.6 1.4 3 0 5.5-2.5 5.5-5.5C19 8.5 16.5 6 13.5 6zm0 9.5c-2.2 0-4-1.8-4-4s1.8-4 4-4 4 1.8 4 4-1.8 4-4 4z"})})]}),(0,_t.jsx)("div",{className:"mt-px flex-grow hidden overflow-y-auto pb-32 pr-2 pt-px sm:block",children:(0,_t.jsx)(Nt.Panel,{children:Object.entries(n).map((function(e){return(0,_t.jsx)(Rt,{taxonomy:e},e[0])}))})})]})}function Bt(e){var t=e.taxonomies,n=e.search,r=e.type,i=[],o=Object.entries(t).filter((function(e){return Boolean(e[1].length)})).map((function(e){return"".concat(e[0],' = "').concat(e[1],'"')})).join(", ");return o.length&&i.push(o),(null==n?void 0:n.length)&&i.push('OR(FIND(LOWER("'.concat(n,'"), LOWER(title))!= 0, FIND(LOWER("').concat(n,'"), LOWER({tax_categories})) != 0)')),r.length&&i.push('{type}="'.concat(r,'"')),i.length?"AND(".concat(i.join(", "),")").replace(/\r?\n|\r/g,""):""}function Ut(e,t,n,r,i,o,a){try{var s=e[o](a),u=s.value}catch(e){return void n(e)}s.done?t(u):Promise.resolve(u).then(r,i)}function qt(e){return function(){var t=this,n=arguments;return new Promise((function(r,i){var o=e.apply(t,n);function a(e){Ut(o,r,i,a,s,"next",e)}function s(e){Ut(o,r,i,a,s,"throw",e)}a(void 0)}))}}var zt=0,Wt=function(e){var t=arguments;return qt(k().mark((function n(){var r,i,o,a;return k().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return o=t.length>1&&void 0!==t[1]?t[1]:{},zt++,n.next=4,F.post("templates",{filterByFormula:Bt(e),pageSize:null!==(r=null==o?void 0:o.pageSize)&&void 0!==r?r:c,categories:e.taxonomies,search:e.search,type:e.type,offset:null!==(i=o.offset)&&void 0!==i?i:"",initial:1===zt,request_count:zt});case 4:return a=n.sent,n.abrupt("return",a);case 6:case"end":return n.stop()}}),n)})))()},Zt=function(e,t,n){var r,i,o,a;return F.post("related",{pageSize:4,query_type:t,wanted_type:n,categories:null==e||null===(r=e.fields)||void 0===r?void 0:r.tax_categories,pattern_types:null==e||null===(i=e.fields)||void 0===i?void 0:i.tax_pattern_types,style:null==e||null===(o=e.fields)||void 0===o?void 0:o.tax_style,type:null==e||null===(a=e.fields)||void 0===a?void 0:a.type,template_id:null==e?void 0:e.id})},$t=function(e){var t;return F.post("templates/".concat(e.id),{template_id:e.id,maybe_import:!0,type:e.fields.type,pageSize:c,template_name:null===(t=e.fields)||void 0===t?void 0:t.title})},Gt=function(e){var t;return F.post("templates/".concat(e.id),{template_id:e.id,single:!0,type:e.fields.type,pageSize:c,template_name:null===(t=e.fields)||void 0===t?void 0:t.title})},Jt=function(e){var t;return F.post("templates/".concat(e.id),{template_id:e.id,imported:!0,type:e.fields.type,pageSize:c,template_name:null===(t=e.fields)||void 0===t?void 0:t.title})};function Kt(){return(Kt=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}var Yt=new Map,Xt=new WeakMap,Qt=0;function en(e){return Object.keys(e).sort().filter((function(t){return void 0!==e[t]})).map((function(t){return t+"_"+("root"===t?(n=e.root)?(Xt.has(n)||(Qt+=1,Xt.set(n,Qt.toString())),Xt.get(n)):"0":e[t]);var n})).toString()}function tn(e,t,n){if(void 0===n&&(n={}),!e)return function(){};var r=function(e){var t=en(e),n=Yt.get(t);if(!n){var r,i=new Map,o=new IntersectionObserver((function(t){t.forEach((function(t){var n,o=t.isIntersecting&&r.some((function(e){return t.intersectionRatio>=e}));e.trackVisibility&&void 0===t.isVisible&&(t.isVisible=o),null==(n=i.get(t.target))||n.forEach((function(e){e(o,t)}))}))}),e);r=o.thresholds||(Array.isArray(e.threshold)?e.threshold:[e.threshold||0]),n={id:t,observer:o,elements:i},Yt.set(t,n)}return n}(n),i=r.id,o=r.observer,a=r.elements,s=a.get(e)||[];return a.has(e)||a.set(e,s),s.push(t),o.observe(e),function(){s.splice(s.indexOf(t),1),0===s.length&&(a.delete(e),o.unobserve(e)),0===a.size&&(o.disconnect(),Yt.delete(i))}}function nn(e){return"function"!=typeof e.children}var rn=function(e){var t,n;function r(t){var n;return(n=e.call(this,t)||this).node=null,n._unobserveCb=null,n.handleNode=function(e){n.node&&(n.unobserve(),e||n.props.triggerOnce||n.props.skip||n.setState({inView:!!n.props.initialInView,entry:void 0})),n.node=e||null,n.observeNode()},n.handleChange=function(e,t){e&&n.props.triggerOnce&&n.unobserve(),nn(n.props)||n.setState({inView:e,entry:t}),n.props.onChange&&n.props.onChange(e,t)},n.state={inView:!!t.initialInView,entry:void 0},n}n=e,(t=r).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n;var o=r.prototype;return o.componentDidUpdate=function(e){e.rootMargin===this.props.rootMargin&&e.root===this.props.root&&e.threshold===this.props.threshold&&e.skip===this.props.skip&&e.trackVisibility===this.props.trackVisibility&&e.delay===this.props.delay||(this.unobserve(),this.observeNode())},o.componentWillUnmount=function(){this.unobserve(),this.node=null},o.observeNode=function(){if(this.node&&!this.props.skip){var e=this.props,t=e.threshold,n=e.root,r=e.rootMargin,i=e.trackVisibility,o=e.delay;this._unobserveCb=tn(this.node,this.handleChange,{threshold:t,root:n,rootMargin:r,trackVisibility:i,delay:o})}},o.unobserve=function(){this._unobserveCb&&(this._unobserveCb(),this._unobserveCb=null)},o.render=function(){if(!nn(this.props)){var e=this.state,t=e.inView,n=e.entry;return this.props.children({inView:t,entry:n,ref:this.handleNode})}var r=this.props,o=r.children,a=r.as,s=r.tag,u=function(e,t){if(null==e)return{};var n,r,i={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(i[n]=e[n]);return i}(r,["children","as","tag","triggerOnce","threshold","root","rootMargin","onChange","skip","trackVisibility","delay","initialInView"]);return(0,i.createElement)(a||s||"div",Kt({ref:this.handleNode},u),o)},r}(i.Component);rn.displayName="InView",rn.defaultProps={threshold:0,triggerOnce:!1,initialInView:!1};function on(){var e=(0,r.useRef)(!1);return(0,r.useEffect)((function(){return e.current=!0,function(){return e.current=!1}})),e}function an(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==n)return;var r,i,o=[],a=!0,s=!1;try{for(n=n.call(e);!(a=(r=n.next()).done)&&(o.push(r.value),!t||o.length!==t);a=!0);}catch(e){s=!0,i=e}finally{try{a||null==n.return||n.return()}finally{if(s)throw i}}return o}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return sn(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return sn(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function sn(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var un=function(){return(0,_t.jsx)("div",{className:"aspect-w-1 aspect-h-1",children:(0,_t.jsx)("div",{className:"w-full h-full flex items-center justify-center bg-gray-100",children:(0,_t.jsx)(Nt.Spinner,{})})})};function ln(e){var t,n,i=e.template,o=e.imageLoaded,a=e.setActiveTemplate,s=an((0,r.useState)(!1),2),u=s[0],l=s[1],c=(0,r.useRef)(),f=on();return(0,r.useEffect)((function(){var e,t,n,r,a,s,d;if(!u&&f.current){var p=new Image;p.role="button",p.className="max-w-full block m-auto object-cover",p.onload=function(){f.current&&(l(!0),c.current&&c.current.appendChild(p),o(i.id))},p.src=null!==(e=null==i||null===(t=i.fields)||void 0===t||null===(n=t.screenshot[0])||void 0===n||null===(r=n.thumbnails)||void 0===r||null===(a=r.large)||void 0===a?void 0:a.url)&&void 0!==e?e:null==i||null===(s=i.fields)||void 0===s||null===(d=s.screenshot[0])||void 0===d?void 0:d.url}}),[i,o,u,f]),u?(0,_t.jsxs)("div",{className:"flex flex-col justify-between group overflow-hidden max-w-lg",children:[(0,_t.jsx)("div",{className:"flex justify-items-center flex-grow h-80 border-gray-200 bg-white border border-b-0 group-hover:border-wp-theme-500 transition duration-150 cursor-pointer overflow-hidden",onClick:a,ref:c}),(0,_t.jsx)("span",{role:"img","aria-hidden":"true",className:"h-px w-full bg-gray-200 border group-hover:bg-transparent border-t-0 border-b-0 border-gray-200 group-hover:border-wp-theme-500 transition duration-150"}),(0,_t.jsxs)("div",{className:"bg-transparent text-left bg-white flex items-center justify-between p-4 border border-t-0 border-transparent group-hover:border-wp-theme-500 transition duration-150 cursor-pointer",role:"button",onClick:a,children:[(0,_t.jsxs)("div",{children:[(0,_t.jsx)("h4",{className:"m-0 font-bold",children:i.fields.display_title}),(0,_t.jsx)("p",{className:"m-0",children:null==i||null===(t=i.fields)||void 0===t||null===(n=t.tax_categories)||void 0===n?void 0:n.filter((function(e){return"default"!==e.toLowerCase()})).join(", ")})]}),(0,_t.jsx)(Nt.Button,{isSecondary:!0,className:"sm:opacity-0 group-hover:opacity-100 transition duration-150 focus:opacity-100",onClick:function(e){e.stopPropagation(),a()},children:(0,jt.__)("View","extendify-sdk")})]})]}):(0,_t.jsx)(un,{})}function cn(e,t,n,r,i,o,a){try{var s=e[o](a),u=s.value}catch(e){return void n(e)}s.done?t(u):Promise.resolve(u).then(r,i)}function fn(e){return function(){var t=this,n=arguments;return new Promise((function(r,i){var o=e.apply(t,n);function a(e){cn(o,r,i,a,s,"next",e)}function s(e){cn(o,r,i,a,s,"throw",e)}a(void 0)}))}}function dn(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==n)return;var r,i,o=[],a=!0,s=!1;try{for(n=n.call(e);!(a=(r=n.next()).done)&&(o.push(r.value),!t||o.length!==t);a=!0);}catch(e){s=!0,i=e}finally{try{a||null==n.return||n.return()}finally{if(s)throw i}}return o}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return pn(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return pn(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function pn(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function mn(){var e=on(),t=b((function(e){return e.templates})),n=b((function(e){return e.setActive})),o=b((function(e){return e.appendTemplates})),a=dn((0,r.useState)(""),2),s=a[0],u=a[1],l=dn((0,r.useState)(!1),2),c=l[0],f=l[1],d=dn(function(e){var t=void 0===e?{}:e,n=t.threshold,r=t.delay,o=t.trackVisibility,a=t.rootMargin,s=t.root,u=t.triggerOnce,l=t.skip,c=t.initialInView,f=(0,i.useRef)(),d=(0,i.useState)({inView:!!c}),p=d[0],m=d[1],h=(0,i.useCallback)((function(e){void 0!==f.current&&(f.current(),f.current=void 0),l||e&&(f.current=tn(e,(function(e,t){m({inView:e,entry:t}),t.isIntersecting&&u&&f.current&&(f.current(),f.current=void 0)}),{root:s,rootMargin:a,threshold:n,trackVisibility:o,delay:r}))}),[Array.isArray(n)?n.toString():n,s,a,u,l,o,r]);(0,i.useEffect)((function(){f.current||!p.entry||u||l||m({inView:!!c})}));var v=[h,p.inView,p.entry];return v.ref=v[0],v.inView=v[1],v.entry=v[2],v}(),2),p=d[0],m=d[1],h=b((function(e){return e.updateSearchParams})),v=b((function(e){return e.searchParams})),y=(0,r.useRef)(b.getState().nextPage),x=(0,r.useRef)(b.getState().searchParams);(0,r.useEffect)((function(){return b.subscribe((function(e){return y.current=e}),(function(e){return e.nextPage}))}),[]),(0,r.useEffect)((function(){return b.subscribe((function(e){return x.current=e}),(function(e){return e.searchParams}))}),[]);var g=(0,r.useCallback)(fn(k().mark((function t(){var n,r;return k().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return u(""),f(!1),t.next=4,Wt(x.current,{offset:y.current}).catch((function(e){console.error(e),u(e&&e.message?e.message:(0,jt.__)("Unknown error occured. Check browser console or contact support.","extendify-sdk"))}));case 4:if(r=t.sent,e.current){t.next=7;break}return t.abrupt("return");case 7:null!=r&&null!==(n=r.error)&&void 0!==n&&n.length&&u(null==r?void 0:r.error),null!=r&&r.records&&v===x.current&&(b.setState({nextPage:r.offset}),o(r.records),f(r.records.length<=0));case 9:case"end":return t.stop()}}),t)}))),[v,o,e]);return(0,r.useEffect)((function(){Object.keys(x.current.taxonomies).length&&(b.getState().skipNextFetch?b.setState({skipNextFetch:!1}):g())}),[g,x]),(0,r.useEffect)((function(){m&&g()}),[m,g]),s.length?(0,_t.jsxs)("div",{className:"text-left",children:[(0,_t.jsx)("h2",{className:"text-left",children:(0,jt.__)("Server error","extendify-sdk")}),(0,_t.jsx)("code",{className:"block max-w-xl p-4 mb-4",style:{minHeight:"10rem"},children:s}),(0,_t.jsx)(Nt.Button,{isTertiary:!0,onClick:function(){h({taxonomies:{},search:""}),g()},children:(0,jt.__)("Press here to reload experience")})]}):c?null!=v&&v.search.length?(0,_t.jsx)("h2",{className:"text-left",children:(0,jt.sprintf)((0,jt.__)("No results for %s.","extendify-sdk"),null==v?void 0:v.search)}):(0,_t.jsx)("h2",{className:"text-left",children:(0,jt.__)("No results found.","extendify-sdk")}):t.length?(0,_t.jsxs)(_t.Fragment,{children:[(0,_t.jsx)("ul",{className:"flex-grow gap-6 grid xl:grid-cols-2 2xl:grid-cols-3 pb-32 m-0",children:t.map((function(e){return(0,_t.jsx)("li",{children:(0,_t.jsx)(ln,{template:e,setActiveTemplate:function(){return n(e)},imageLoaded:function(){}})},e.id)}))}),b.getState().nextPage&&(0,_t.jsxs)(_t.Fragment,{children:[(0,_t.jsx)("div",{className:"-translate-y-full flex flex-col h-80 items-end justify-end my-2 relative transform z-0 text",ref:p,style:{zIndex:-1}}),(0,_t.jsx)("div",{className:"my-4",children:(0,_t.jsx)(Nt.Spinner,{})})]})]}):(0,_t.jsx)("div",{className:"flex items-center justify-center w-full sm:mt-64",children:(0,_t.jsx)(Nt.Spinner,{})})}function hn(){return 0===K((function(e){return e.apiKey})).length?(0,_t.jsx)("button",{type:"button",className:"components-button inline-block flex-1 text-center hover:bg-gray-100",onClick:function(){return w.setState({currentPage:"login"})},children:(0,jt.__)("Log into account","extendify-sdk")}):(0,_t.jsx)("button",{type:"button",className:"components-button inline-block flex-1 text-center hover:bg-gray-100",onClick:function(){return K.setState({apiKey:""})},children:(0,jt.__)("Log out","extendify-sdk")})}function vn(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==n)return;var r,i,o=[],a=!0,s=!1;try{for(n=n.call(e);!(a=(r=n.next()).done)&&(o.push(r.value),!t||o.length!==t);a=!0);}catch(e){s=!0,i=e}finally{try{a||null==n.return||n.return()}finally{if(s)throw i}}return o}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return yn(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return yn(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function yn(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function xn(e){var t=e.children,n=K((function(e){return e.apiKey})),i=vn((0,r.useState)(!1),2),o=i[0],a=i[1];return(0,r.useEffect)((function(){a(!n.length||window.location.search.indexOf("DEVMODE")>-1)}),[n]),(0,_t.jsxs)(_t.Fragment,{children:[(0,_t.jsxs)("aside",{className:"flex-shrink-0 sm:pl-12 py-0 sm:py-6 relative",children:[(0,_t.jsx)("div",{className:"sm:w-56 lg:w-72 sticky flex flex-col lg:h-full",children:t[0]}),(0,_t.jsx)("div",{className:"hidden sm:flex flex-col absolute bottom-0 bg-white mb-4 w-72 text-left space-y-4",children:(0,_t.jsx)("div",{className:"border-t border-gray-300 flex divide-x",children:o&&(0,_t.jsx)(hn,{})})})]}),(0,_t.jsx)("main",{id:"extendify-templates",className:"w-full smp:l-12 sm:pt-6 h-full overflow-hidden",children:t[1]})]})}function gn(){var e=b((function(e){return e.updateSearchParams})),t=b((function(e){return e.searchParams})),n=function(t){return e({type:t})};return(0,_t.jsxs)("div",{className:"text-left w-full bg-white px-6 sm:px-0 pb-4 sm:pb-6 mt-px border-b sm:border-0",children:[(0,_t.jsx)("h4",{className:"sr-only",children:(0,jt.__)("Type select","extendify-sdk")}),(0,_t.jsxs)("button",{type:"button",className:Pt()({"cursor-pointer p-3.5 space-x-2 inline-flex items-center border border-black button-focus":!0,"bg-gray-900 text-white":"pattern"===t.type,"bg-transparent text-black":"pattern"!==t.type}),onClick:function(){return n("pattern")},children:[(0,_t.jsx)("svg",{width:"17",height:"13",viewBox:"0 0 17 13",className:"fill-current",xmlns:"http://www.w3.org/2000/svg",children:(0,_t.jsx)("path",{d:"M1 13H16C16.55 13 17 12.55 17 12V8C17 7.45 16.55 7 16 7H1C0.45 7 0 7.45 0 8V12C0 12.55 0.45 13 1 13ZM0 1V5C0 5.55 0.45 6 1 6H16C16.55 6 17 5.55 17 5V1C17 0.45 16.55 0 16 0H1C0.45 0 0 0.45 0 1Z"})}),(0,_t.jsx)("span",{className:"",children:(0,jt.__)("Patterns","extendify-sdk")})]}),(0,_t.jsxs)("button",{type:"button",className:Pt()({"cursor-pointer p-3.5 px-4 space-x-2 inline-flex items-center border border-black focus:ring-2 focus:ring-wp-theme-500 ring-offset-1 outline-none -ml-px":!0,"bg-gray-900 text-white":"template"===t.type,"bg-transparent text-black":"template"!==t.type}),onClick:function(){return n("template")},children:[(0,_t.jsx)("svg",{width:"17",height:"13",viewBox:"0 0 17 13",className:"fill-current",xmlns:"http://www.w3.org/2000/svg",children:(0,_t.jsx)("path",{d:"M7 13H10C10.55 13 11 12.55 11 12V8C11 7.45 10.55 7 10 7H7C6.45 7 6 7.45 6 8V12C6 12.55 6.45 13 7 13ZM1 13H4C4.55 13 5 12.55 5 12V1C5 0.45 4.55 0 4 0H1C0.45 0 0 0.45 0 1V12C0 12.55 0.45 13 1 13ZM13 13H16C16.55 13 17 12.55 17 12V8C17 7.45 16.55 7 16 7H13C12.45 7 12 7.45 12 8V12C12 12.55 12.45 13 13 13ZM6 1V5C6 5.55 6.45 6 7 6H16C16.55 6 17 5.55 17 5V1C17 0.45 16.55 0 16 0H7C6.45 0 6 0.45 6 1Z"})}),(0,_t.jsx)("span",{className:"",children:(0,jt.__)("Page templates","extendify-sdk")})]})]})}function bn(){var e=b((function(e){return e.searchParams}));return(0,_t.jsx)("div",{className:"hidden sm:flex items-start flex-col lg:flex-row -mt-2 lg:-mx-2 mb-4 lg:divide-x-2 lg:leading-none",children:Object.entries(e.taxonomies).map((function(t){return"template"===e.type&&"tax_pattern_types"===t[0]||"template"===e.type&&"tax_features"===t[0]||"pattern"===e.type&&"tax_page_types"===t[0]?"":(0,_t.jsxs)("div",{className:"lg:px-2 text-left",children:[(0,_t.jsx)("span",{className:"font-bold",children:(n=t[0],n.replace("tax_","").replace(/_/g," ").replace(/\b\w/g,(function(e){return e.toUpperCase()})))}),": ",(0,_t.jsx)("span",{children:t[1]?t[1]:"All"})]},t[0]);var n}))})}function wn(e){var t,n,r,i,o,a,s=e.className,u=K((function(e){return e.remainingImports})),l=K((function(e){return e.apiKey})),c=K((function(e){return e.allowedImports})),f=w((function(e){return e.metaData})),d=w((function(e){return e.setOpen}));return(0,_t.jsx)("div",{className:s,children:(0,_t.jsxs)("div",{className:"flex justify-between items-center px-6 sm:px-12 h-full",children:[(0,_t.jsxs)("div",{className:"flex space-x-12 h-full",children:[(0,_t.jsxs)("div",{className:"bg-transparent font-bold flex items-center space-x-1.5 lg:w-72",children:[(0,_t.jsxs)("svg",{className:"",width:"30",height:"30",viewBox:"0 0 103 103",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[(0,_t.jsx)("rect",{y:"25.75",width:"70.8125",height:"77.25",fill:"#000000"}),(0,_t.jsx)("rect",{x:"45.0625",width:"57.9375",height:"57.9375",fill:"#37C2A2"})]}),(0,_t.jsx)("span",{className:"text-sm transform translate-y-0.5 whitespace-nowrap",children:(0,jt.__)("Extendify Library","extendify-sdk")})]}),!l.length&&(0,_t.jsx)(_t.Fragment,{children:(0,_t.jsxs)("div",{className:"items-center ml-8 h-full hidden md:flex",children:[(0,_t.jsx)("div",{className:"m-0 p-0 px-6 text-sm bg-gray-50 border-l border-gray-300 h-full flex items-center whitespace-nowrap",children:(0,jt.sprintf)((0,jt.__)("Imports left: %s / %s"),u(),Number(c))}),(0,_t.jsx)("div",{className:"h-full items-center border-l hidden lg:flex",children:(null==f||null===(t=f.banners)||void 0===t?void 0:t.library_header)&&(0,_t.jsxs)(_t.Fragment,{children:[(null===(n=f.banners.library_header)||void 0===n?void 0:n.image)&&(0,_t.jsx)("a",{className:"h-full block",target:"_blank",rel:"noreferrer",href:f.banners.library_header.url,children:(0,_t.jsx)("img",{src:f.banners.library_header.image,alt:"Extendify notice"})}),!(null!==(r=f.banners.library_header)&&void 0!==r&&r.image)&&(0,_t.jsxs)("div",{className:"text-gray-900 space-x-6 bg-extendify-light px-6 p-2 h-full flex items-center",children:[(0,_t.jsx)("span",{className:"font-bold text-left",children:f.banners.library_header.text_backup}),(null===(i=f.banners.library_header)||void 0===i?void 0:i.url)&&(0,_t.jsx)("div",{children:(0,_t.jsx)("a",{className:"button-extendify-main",target:"_blank",rel:"noreferrer",href:"".concat(f.banners.library_header.url,"&utm_source=").concat(encodeURIComponent(window.extendifySdkData.source),"&utm_medium=library&utm_campaign=banner"),children:null!==(o=null===(a=f.banners.library_header)||void 0===a?void 0:a.button_text)&&void 0!==o?o:(0,jt.__)("Get it now","extendify-sdk")})})]})]})})]})})]}),(0,_t.jsx)("div",{className:"space-x-2 transform sm:translate-x-6",children:(0,_t.jsxs)("button",{type:"button",className:"components-button has-icon",onClick:function(){return d(!1)},children:[(0,_t.jsx)("svg",{width:"24",height:"24",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",size:"24",role:"img","aria-hidden":"true",focusable:"false",children:(0,_t.jsx)("path",{d:"M13 11.8l6.1-6.3-1-1-6.1 6.2-6.1-6.2-1 1 6.1 6.3-6.5 6.7 1 1 6.5-6.6 6.5 6.6 1-1z"})}),(0,_t.jsx)("span",{className:"sr-only",children:(0,jt.__)("Close library","extendify-sdk")})]})})]})})}function jn(){return(0,_t.jsxs)("div",{className:"bg-white h-full flex flex-col items-center relative shadow-xl max-w-screen-4xl mx-auto",children:[(0,_t.jsx)(wn,{className:"w-full h-16 border-solid border-0 border-b border-gray-300 flex-shrink-0"}),(0,_t.jsxs)("div",{className:"w-full flex-grow overflow-hidden",children:[(0,_t.jsx)("a",{href:"#extendify-templates",className:"sr-only focus:not-sr-only focus:text-blue-500",children:(0,jt.__)("Skip to content","extendify-sdk")}),(0,_t.jsx)("div",{className:"sm:flex sm:space-x-12 relative bg-white mx-auto max-w-screen-4xl h-full",children:(0,_t.jsxs)(xn,{children:[(0,_t.jsx)(Ht,{}),(0,_t.jsxs)(_t.Fragment,{children:[(0,_t.jsx)(gn,{}),(0,_t.jsx)(bn,{}),(0,_t.jsx)("div",{className:"relative h-full z-30 bg-white",children:(0,_t.jsx)("div",{className:"absolute z-20 inset-0 lg:static h-screen overflow-y-auto pt-4 sm:pt-0 px-6 sm:pl-0 sm:pr-8 pb-40",children:(0,_t.jsx)(mn,{})})})]})]})})]})]})}function kn(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==n)return;var r,i,o=[],a=!0,s=!1;try{for(n=n.call(e);!(a=(r=n.next()).done)&&(o.push(r.value),!t||o.length!==t);a=!0);}catch(e){s=!0,i=e}finally{try{a||null==n.return||n.return()}finally{if(s)throw i}}return o}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return Sn(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return Sn(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Sn(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var _n=new Map;function On(e){var t=e.searchParams,n=e.title,i=e.tax,o=b((function(e){return e.updateTaxonomies})),a=Ft((function(e){return e.toggleOpenedTaxonomy})),s=kn((0,r.useState)([]),2),u=s[0],l=s[1],c=kn((0,r.useState)(),2),f=c[0],d=c[1],p=b((function(e){return e.setActive})),m=w((function(e){return e.open})),h=on();return(0,r.useEffect)((function(){d(window.innerWidth<1600?3:4)}),[]),(0,r.useEffect)((function(){if(h.current&&f&&m){var e=JSON.stringify(Object.assign(t,{pageSize:f,force:!0}));_n.has(e)?l(_n.get(e)):Wt(t,{pageSize:f,force:!0}).then((function(t){var n;null!=t&&null!==(n=t.records)&&void 0!==n&&n.length&&h.current&&(_n.set(e,t.records),l(t.records))}))}}),[t,h,f,m]),(0,_t.jsxs)("section",{children:[(0,_t.jsxs)("div",{className:"flex justify-between",children:[(0,_t.jsx)("h2",{className:"text-2xl mb-2 text-extendify-main uppercase m-0 text-left font-bold",children:n}),(0,_t.jsx)("button",{onClick:function(){var e,t,r;o((r=n,(t=i)in(e={})?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e)),a("tax_pattern_types",!0)},type:"button",className:"components-button",children:(0,jt.__)("View all","extendify-sdk")})]}),(0,_t.jsxs)("ul",{className:"flex-grow gap-6 grid xl:grid-cols-2 2xl:grid-cols-3 3xl:grid-cols-4 pb-16 m-0",children:[0===u.length&&Array.from({length:f},(function(e,t){return(0,_t.jsx)(un,{},t)})),u.map((function(e){return(0,_t.jsx)("li",{children:(0,_t.jsx)(ln,{template:e,setActiveTemplate:function(){return p(e)},imageLoaded:function(){}})},e.id)}))]})]})}function En(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Nn(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Cn(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==n)return;var r,i,o=[],a=!0,s=!1;try{for(n=n.call(e);!(a=(r=n.next()).done)&&(o.push(r.value),!t||o.length!==t);a=!0);}catch(e){s=!0,i=e}finally{try{a||null==n.return||n.return()}finally{if(s)throw i}}return o}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return Pn(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return Pn(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Pn(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function An(){var e=Cn((0,r.useState)([]),2),t=e[0],n=e[1],i=(0,r.useRef)(),o=Ft((function(e){return e.taxonomies})),a=b((function(e){return e.searchParams})),s=function(e,t){var n=function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?En(Object(n),!0).forEach((function(t){Nn(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):En(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({},a);return n.taxonomies=Object.assign({},a.taxonomies,Nn({},e,t)),n};return(0,r.useEffect)((function(){var e,t;Object.keys(null!==(e=null==o?void 0:o.tax_pattern_types)&&void 0!==e?e:{}).length&&n((t=o.tax_pattern_types,Object.values(t).filter((function(e){return e.type.includes("pattern")})).map((function(e){return e.term}))))}),[o]),(0,r.useEffect)((function(){i.current.scrollTop=0}),[a]),(0,_t.jsxs)("div",{className:"bg-white h-full flex flex-col items-center relative shadow-xl max-w-screen-4xl mx-auto",children:[(0,_t.jsx)(wn,{className:"w-full h-16 border-solid border-0 border-b border-gray-300 flex-shrink-0"}),(0,_t.jsxs)("div",{className:"w-full flex-grow overflow-hidden",children:[(0,_t.jsx)("a",{href:"#extendify-templates",className:"sr-only focus:not-sr-only focus:text-blue-500",children:(0,jt.__)("Skip to content","extendify-sdk")}),(0,_t.jsx)("div",{className:"sm:flex sm:space-x-12 relative bg-white mx-auto max-w-screen-4xl h-full",children:(0,_t.jsxs)(xn,{children:[(0,_t.jsx)(Ht,{}),(0,_t.jsxs)(_t.Fragment,{children:[(0,_t.jsx)(gn,{}),(0,_t.jsx)(bn,{}),(0,_t.jsx)("div",{className:"relative h-full z-30 bg-white",children:(0,_t.jsx)("div",{ref:i,className:"absolute z-20 inset-0 lg:static h-screen overflow-y-auto pt-16 px-6 sm:pl-0 sm:pr-8 pb-60",children:t.length>0&&t.map((function(e){return(0,_t.jsx)(On,{title:e,tax:"tax_pattern_types",searchParams:s("tax_pattern_types",e)},e)}))})})]})]})})]})]})}var Tn=function(){return F.get("plugins")},Fn=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=new FormData;return t.append("plugins",JSON.stringify(e)),F.post("plugins",t,{headers:{"Content-Type":"multipart/form-data"}})},Ln=function(){return F.get("active-plugins")};function In(e,t,n,r,i,o,a){try{var s=e[o](a),u=s.value}catch(e){return void n(e)}s.done?t(u):Promise.resolve(u).then(r,i)}function Dn(e){return function(){var t=this,n=arguments;return new Promise((function(r,i){var o=e.apply(t,n);function a(e){In(o,r,i,a,s,"next",e)}function s(e){In(o,r,i,a,s,"throw",e)}a(void 0)}))}}var Rn=[],Mn=[];function Vn(e){return Hn.apply(this,arguments)}function Hn(){return(Hn=Dn(k().mark((function e(t){var n,r,i,o;return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if((i=(i=null!==(n=null==t||null===(r=t.fields)||void 0===r?void 0:r.required_plugins)&&void 0!==n?n:[]).filter((function(e){return"editorplus"!==e}))).length){e.next=4;break}return e.abrupt("return",!1);case 4:if(Rn.length){e.next=10;break}return e.t0=Object,e.next=8,Tn();case 8:e.t1=e.sent,Rn=e.t0.keys.call(e.t0,e.t1);case 10:return o=!!i.length&&i.filter((function(e){return!Rn.some((function(t){return t.includes(e)}))})),e.abrupt("return",o.length);case 12:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function Bn(e){return Un.apply(this,arguments)}function Un(){return(Un=Dn(k().mark((function e(t){var n,r,i,o;return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if((i=(i=null!==(n=null==t||null===(r=t.fields)||void 0===r?void 0:r.required_plugins)&&void 0!==n?n:[]).filter((function(e){return"editorplus"!==e}))).length){e.next=4;break}return e.abrupt("return",!1);case 4:if(Mn.length){e.next=10;break}return e.t0=Object,e.next=8,Ln();case 8:e.t1=e.sent,Mn=e.t0.values.call(e.t0,e.t1);case 10:if(!(o=!!i.length&&i.filter((function(e){return!Mn.some((function(t){return t.includes(e)}))})))){e.next=16;break}return e.next=14,Vn(t);case 14:if(!e.sent){e.next=16;break}return e.abrupt("return",!1);case 16:return e.abrupt("return",o.length);case 17:case"end":return e.stop()}}),e)})))).apply(this,arguments)}var qn=u(A((function(e){return{wantedTemplate:{},importOnLoad:!1,setWanted:function(t){return e({wantedTemplate:t})},removeWanted:function(){return e({wantedTemplate:{}})}}}),{name:"extendify-wanted-template"}));function zn(e){var t=e.msg;return(0,_t.jsxs)(Nt.Modal,{style:{maxWidth:"500px"},title:(0,jt.__)("Error installing plugins","extendify-sdk"),isDismissible:!1,children:[(0,jt.__)("You have encountered an error that we cannot recover from. Please try again.","extendify-sdk"),(0,_t.jsx)("br",{}),(0,_t.jsx)(Nt.Notice,{isDismissible:!1,status:"error",children:t}),(0,_t.jsx)(Nt.Button,{isPrimary:!0,onClick:function(){return(0,r.render)((0,_t.jsx)(tr,{}),document.getElementById("extendify-root"))},children:(0,jt.__)("Go back","extendify-sdk")})]})}const Wn=wp.data;function Zn(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==n)return;var r,i,o=[],a=!0,s=!1;try{for(n=n.call(e);!(a=(r=n.next()).done)&&(o.push(r.value),!t||o.length!==t);a=!0);}catch(e){s=!0,i=e}finally{try{a||null==n.return||n.return()}finally{if(s)throw i}}return o}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return $n(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return $n(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function $n(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function Gn(){var e=Zn((0,r.useState)(!1),2),t=e[0],n=e[1],i=function(){location.reload()};return(0,(0,Wn.select)("core/editor").isEditedPostDirty)()?(0,_t.jsxs)(Nt.Modal,{title:(0,jt.__)("Reload required","extendify-sdk"),isDismissible:!1,children:[(0,_t.jsx)("p",{style:{maxWidth:"400px"},children:(0,jt.__)("Just one more thing! We need to reload the page to continue.","extendify-sdk")}),(0,_t.jsxs)(Nt.ButtonGroup,{children:[(0,_t.jsx)(Nt.Button,{isPrimary:!0,onClick:i,disabled:t,children:(0,jt.__)("Reload page","extendify-sdk")}),(0,_t.jsx)(Nt.Button,{isSecondary:!0,onClick:function(){n(!0),(0,Wn.dispatch)("core/editor").savePost(),n(!1)},isBusy:t,style:{margin:"0 4px"},children:(0,jt.__)("Save changes","extendify-sdk")})]})]}):(i(),null)}function Jn(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==n)return;var r,i,o=[],a=!0,s=!1;try{for(n=n.call(e);!(a=(r=n.next()).done)&&(o.push(r.value),!t||o.length!==t);a=!0);}catch(e){s=!0,i=e}finally{try{a||null==n.return||n.return()}finally{if(s)throw i}}return o}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return Kn(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return Kn(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Kn(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function Yn(){var e,t=Jn((0,r.useState)(""),2),n=t[0],i=t[1],o=qn((function(e){return e.wantedTemplate})),a=null==o||null===(e=o.fields)||void 0===e?void 0:e.required_plugins.filter((function(e){return"editorplus"!==e}));return Fn(a).then((function(){qn.setState({importOnLoad:!0}),(0,r.render)((0,_t.jsx)(Gn,{}),document.getElementById("extendify-root"))})).catch((function(e){var t=e.message;i(t)})),n?(0,_t.jsx)(zn,{msg:n}):(0,_t.jsx)(Nt.Modal,{title:(0,jt.__)("Installing plugins","extendify-sdk"),isDismissible:!1,children:(0,_t.jsx)(Nt.Button,{style:{width:"100%"},disabled:!0,isPrimary:!0,isBusy:!0,onClick:function(){},children:(0,jt.__)("Installing...","extendify-sdk")})})}var Xn=function(e){return function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"broken-event",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"open";K.setState({entryPoint:e}),window.dispatchEvent(new CustomEvent("extendify-sdk::".concat(t,"-library"),{detail:e,bubbles:!0}))}(e,"open")};function Qn(e){switch(e){case"editorplus":return"Editor Plus";case"ml-slider":return"MetaSlider"}return e}function er(){var e,t,n,i=qn((function(e){return e.wantedTemplate})),o=(null==i||null===(e=i.fields)||void 0===e?void 0:e.required_plugins)||[];return(0,_t.jsxs)(Nt.Modal,{title:(0,jt.__)("Plugins required","extendify-sdk"),isDismissible:!1,children:[(0,_t.jsx)("p",{style:{maxWidth:"400px"},children:(0,jt.sprintf)((0,jt.__)("In order to add this %s to your site, the following plugins are required to be installed and activated.","extendify-sdk"),null!==(t=null==i||null===(n=i.fields)||void 0===n?void 0:n.type)&&void 0!==t?t:"template")}),(0,_t.jsx)("ul",{children:o.filter((function(e){return"editorplus"!==e})).map((function(e){return(0,_t.jsx)("li",{children:Qn(e)},e)}))}),(0,_t.jsx)("p",{style:{maxWidth:"400px",fontWeight:"bold"},children:(0,jt.__)("Please contact a site admin for assistance in adding these plugins to your site.","extendify-sdk")}),(0,_t.jsx)(Nt.Button,{isPrimary:!0,onClick:function(){return(0,r.render)((0,_t.jsx)(ei,{show:!0}),document.getElementById("extendify-root"))},style:{boxShadow:"none"},children:(0,jt.__)("Return to library","extendify-sdk")})]})}function tr(e){var t,n,i,o,a,s,u,l,c=qn((function(e){return e.wantedTemplate})),f=(null==c||null===(t=c.fields)||void 0===t?void 0:t.required_plugins)||[];return null!==(n=K.getState())&&void 0!==n&&n.canInstallPlugins?(0,_t.jsxs)(Nt.Modal,{title:null!==(i=e.title)&&void 0!==i?i:(0,jt.__)("Install required plugins","extendify-sdk"),isDismissible:!1,children:[(0,_t.jsx)("p",{style:{maxWidth:"400px"},children:null!==(o=e.message)&&void 0!==o?o:(0,jt.__)((0,jt.sprintf)("There is just one more step. This %s requires the following to be automatically installed and activated:",null!==(a=null==c||null===(s=c.fields)||void 0===s?void 0:s.type)&&void 0!==a?a:"template"),"extendify-sdk")}),(null===(u=e.message)||void 0===u?void 0:u.length)>0||(0,_t.jsx)("ul",{children:f.filter((function(e){return"editorplus"!==e})).map((function(e){return(0,_t.jsx)("li",{children:Qn(e)},e)}))}),(0,_t.jsxs)(Nt.ButtonGroup,{children:[(0,_t.jsx)(Nt.Button,{isPrimary:!0,onClick:function(){return(0,r.render)((0,_t.jsx)(Yn,{}),document.getElementById("extendify-root"))},children:null!==(l=e.buttonLabel)&&void 0!==l?l:(0,jt.__)("Install Plugins","extendify-sdk")}),e.forceOpen||(0,_t.jsx)(Nt.Button,{isTertiary:!0,onClick:function(){e.forceOpen||(0,r.render)((0,_t.jsx)(ei,{show:!0}),document.getElementById("extendify-root"))},style:{boxShadow:"none",margin:"0 4px"},children:(0,jt.__)("No thanks, take me back","extendify-sdk")})]})]}):(0,_t.jsx)(er,{})}function nr(e,t,n,r,i,o,a){try{var s=e[o](a),u=s.value}catch(e){return void n(e)}s.done?t(u):Promise.resolve(u).then(r,i)}var rr=function(){var e,t=(e=k().mark((function e(t){return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Vn(t);case 2:return e.t0=!e.sent,e.t1=function(){},e.t2=function(){return new Promise((function(){(0,r.render)((0,_t.jsx)(tr,{}),document.getElementById("extendify-root"))}))},e.abrupt("return",{id:"hasRequiredPlugins",pass:e.t0,allow:e.t1,deny:e.t2});case 6:case"end":return e.stop()}}),e)})),function(){var t=this,n=arguments;return new Promise((function(r,i){var o=e.apply(t,n);function a(e){nr(o,r,i,a,s,"next",e)}function s(e){nr(o,r,i,a,s,"throw",e)}a(void 0)}))});return function(e){return t.apply(this,arguments)}}();function ir(e){var t=e.msg;return(0,_t.jsxs)(Nt.Modal,{style:{maxWidth:"500px"},title:(0,jt.__)("Error Activating plugins","extendify-sdk"),isDismissible:!1,children:[(0,jt.__)("You have encountered an error that we cannot recover from. Please try again.","extendify-sdk"),(0,_t.jsx)("br",{}),(0,_t.jsx)(Nt.Notice,{isDismissible:!1,status:"error",children:t}),(0,_t.jsx)(Nt.Button,{isPrimary:!0,onClick:function(){(0,r.render)((0,_t.jsx)(cr,{}),document.getElementById("extendify-root"))},children:(0,jt.__)("Go back","extendify-sdk")})]})}function or(e,t,n,r,i,o,a){try{var s=e[o](a),u=s.value}catch(e){return void n(e)}s.done?t(u):Promise.resolve(u).then(r,i)}function ar(e){return function(){var t=this,n=arguments;return new Promise((function(r,i){var o=e.apply(t,n);function a(e){or(o,r,i,a,s,"next",e)}function s(e){or(o,r,i,a,s,"throw",e)}a(void 0)}))}}function sr(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==n)return;var r,i,o=[],a=!0,s=!1;try{for(n=n.call(e);!(a=(r=n.next()).done)&&(o.push(r.value),!t||o.length!==t);a=!0);}catch(e){s=!0,i=e}finally{try{a||null==n.return||n.return()}finally{if(s)throw i}}return o}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return ur(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return ur(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function ur(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function lr(){var e,t=sr((0,r.useState)(""),2),n=t[0],i=t[1],o=qn((function(e){return e.wantedTemplate})),a=null==o||null===(e=o.fields)||void 0===e?void 0:e.required_plugins.filter((function(e){return"editorplus"!==e}));return Fn(a).then((function(){qn.setState({importOnLoad:!0})})).then(ar(k().mark((function e(){return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,new Promise((function(e){return setTimeout(e,1e3)}));case 2:(0,r.render)((0,_t.jsx)(Gn,{}),document.getElementById("extendify-root"));case 3:case"end":return e.stop()}}),e)})))).catch((function(e){var t=e.response;i(t.data.message)})),n?(0,_t.jsx)(ir,{msg:n}):(0,_t.jsx)(Nt.Modal,{title:(0,jt.__)("Activating plugins","extendify-sdk"),isDismissible:!1,children:(0,_t.jsx)(Nt.Button,{style:{width:"100%"},disabled:!0,isPrimary:!0,isBusy:!0,onClick:function(){},children:(0,jt.__)("Activating...","extendify-sdk")})})}function cr(e){var t,n,i,o,a,s=qn((function(e){return e.wantedTemplate})),u=(null==s||null===(t=s.fields)||void 0===t?void 0:t.required_plugins)||[];return null!==(n=K.getState())&&void 0!==n&&n.canActivatePlugins?(0,_t.jsx)(Nt.Modal,{title:(0,jt.__)("Activate required plugins","extendify-sdk"),isDismissible:!1,children:(0,_t.jsxs)("div",{children:[(0,_t.jsx)("p",{style:{maxWidth:"400px"},children:null!==(i=e.message)&&void 0!==i?i:(0,jt.__)((0,jt.sprintf)("There is just one more step. This %s requires the following plugins to be installed and activated:",null!==(o=null==s||null===(a=s.fields)||void 0===a?void 0:a.type)&&void 0!==o?o:"template"),"extendify-sdk")}),(0,_t.jsx)("ul",{children:u.filter((function(e){return"editorplus"!==e})).map((function(e){return(0,_t.jsx)("li",{children:Qn(e)},e)}))}),(0,_t.jsxs)(Nt.ButtonGroup,{children:[(0,_t.jsx)(Nt.Button,{isPrimary:!0,onClick:function(){return(0,r.render)((0,_t.jsx)(lr,{}),document.getElementById("extendify-root"))},children:(0,jt.__)("Activate Plugins","extendify-sdk")}),e.showClose&&(0,_t.jsx)(Nt.Button,{isTertiary:!0,onClick:function(){return(0,r.render)((0,_t.jsx)(ei,{show:!0}),document.getElementById("extendify-root"))},style:{boxShadow:"none",margin:"0 4px"},children:(0,jt.__)("No thanks, return to library","extendify-sdk")})]})]})}):(0,_t.jsx)(er,{})}function fr(e,t,n,r,i,o,a){try{var s=e[o](a),u=s.value}catch(e){return void n(e)}s.done?t(u):Promise.resolve(u).then(r,i)}var dr=function(){var e,t=(e=k().mark((function e(t){return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Bn(t);case 2:return e.t0=!e.sent,e.t1=function(){},e.t2=function(){return new Promise((function(){(0,r.render)((0,_t.jsx)(cr,{showClose:!0}),document.getElementById("extendify-root"))}))},e.abrupt("return",{id:"hasPluginsActivated",pass:e.t0,allow:e.t1,deny:e.t2});case 6:case"end":return e.stop()}}),e)})),function(){var t=this,n=arguments;return new Promise((function(r,i){var o=e.apply(t,n);function a(e){fr(o,r,i,a,s,"next",e)}function s(e){fr(o,r,i,a,s,"throw",e)}a(void 0)}))});return function(e){return t.apply(this,arguments)}}();function pr(e,t,n,r,i,o,a){try{var s=e[o](a),u=s.value}catch(e){return void n(e)}s.done?t(u):Promise.resolve(u).then(r,i)}function mr(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==n)return;var r,i,o=[],a=!0,s=!1;try{for(n=n.call(e);!(a=(r=n.next()).done)&&(o.push(r.value),!t||o.length!==t);a=!0);}catch(e){s=!0,i=e}finally{try{a||null==n.return||n.return()}finally{if(s)throw i}}return o}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return hr(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return hr(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function hr(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function vr(e){var t=e.finished,n=mr((0,r.useState)(""),2),i=n[0],o=n[1],a=(0,r.useRef)(),s=function(){var e,n=(e=k().mark((function e(n){return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n.preventDefault(),e.next=3,V(i);case 3:K.setState({registration:{email:i}}),t();case 5:case"end":return e.stop()}}),e)})),function(){var t=this,n=arguments;return new Promise((function(r,i){var o=e.apply(t,n);function a(e){pr(o,r,i,a,s,"next",e)}function s(e){pr(o,r,i,a,s,"throw",e)}a(void 0)}))});return function(e){return n.apply(this,arguments)}}();return(0,r.useEffect)((function(){D("user_email").then((function(e){return o(null!=e?e:"")})),a.current.focus()}),[]),(0,_t.jsxs)(Nt.Modal,{className:"extendify-sdk",title:(0,jt.__)("One last step...","extendify-sdk"),isDismissible:!1,children:[(0,_t.jsx)("p",{className:"m-0 mb-4 max-w-md",children:(0,jt.__)("Register now to receive updates and special offers from Extendify","extendify-sdk")}),(0,_t.jsxs)("form",{onSubmit:s,className:"flex space-x-4 mb-8",children:[(0,_t.jsxs)("div",{className:"relative w-full max-w-xs",children:[(0,_t.jsx)("input",{id:"extendify-email-register",value:i,required:!0,onChange:function(e){return o(e.target.value)},type:"text",className:"extendify-special-input button-focus text-sm h-8 min-h-0 border border-gray-900 special-input placeholder-transparent rounded-none w-full px-2",placeholder:(0,jt.__)("Email","extendify-sdk")}),(0,_t.jsx)("label",{htmlFor:"extendify-email-register",className:"-top-3 bg-white absolute left-1 px-1 transition-all",children:(0,jt.__)("Email","extendify-sdk")})]}),(0,_t.jsx)("input",{type:"submit",className:"hidden"})]}),(0,_t.jsxs)(Nt.ButtonGroup,{children:[(0,_t.jsx)(Nt.Button,{ref:a,isPrimary:!0,onClick:s,children:(0,jt.__)("Submit and import","extendify-sdk")}),(0,_t.jsx)(Nt.Button,{isTertiary:!0,onClick:t,style:{boxShadow:"none",margin:"0 4px"},children:(0,jt.__)("Skip and import","extendify-sdk")})]})]})}function yr(){var e;return{id:"NeedsRegistrationModal",pass:(null===(e=K.getState().registration)||void 0===e?void 0:e.email)||K.getState().apiKey,allow:function(){},deny:function(){return new Promise((function(e){(0,r.render)((0,_t.jsx)(vr,{finished:e}),document.getElementById("extendify-root"))}))}}}function xr(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"==typeof e)return gr(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return gr(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,i=function(){};return{s:i,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,s=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return a=e.done,e},e:function(e){s=!0,o=e},f:function(){try{a||null==n.return||n.return()}finally{if(s)throw o}}}}function gr(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function br(e,t,n,r,i,o,a){try{var s=e[o](a),u=s.value}catch(e){return void n(e)}s.done?t(u):Promise.resolve(u).then(r,i)}function wr(e){return function(){var t=this,n=arguments;return new Promise((function(r,i){var o=e.apply(t,n);function a(e){br(o,r,i,a,s,"next",e)}function s(e){br(o,r,i,a,s,"throw",e)}a(void 0)}))}}function jr(e){return function(){return new kr(e.apply(this,arguments))}}function kr(e){var t,n;function r(t,n){try{var o=e[t](n),a=o.value,s=a instanceof Sr;Promise.resolve(s?a.wrapped:a).then((function(e){s?r("return"===t?"return":"next",e):i(o.done?"return":"normal",e)}),(function(e){r("throw",e)}))}catch(e){i("throw",e)}}function i(e,i){switch(e){case"return":t.resolve({value:i,done:!0});break;case"throw":t.reject(i);break;default:t.resolve({value:i,done:!1})}(t=t.next)?r(t.key,t.arg):n=null}this._invoke=function(e,i){return new Promise((function(o,a){var s={key:e,arg:i,resolve:o,reject:a,next:null};n?n=n.next=s:(t=n=s,r(e,i))}))},"function"!=typeof e.return&&(this.return=void 0)}function Sr(e){this.wrapped=e}kr.prototype["function"==typeof Symbol&&Symbol.asyncIterator||"@@asyncIterator"]=function(){return this},kr.prototype.next=function(e){return this._invoke("next",e)},kr.prototype.throw=function(e){return this._invoke("throw",e)},kr.prototype.return=function(e){return this._invoke("return",e)};function _r(){return(_r=wr(k().mark((function e(t){var n;return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:n=Or(t);case 1:return e.next=4,n.next();case 4:if(!e.sent.done){e.next=7;break}return e.abrupt("break",9);case 7:e.next=1;break;case 9:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function Or(e){return Er.apply(this,arguments)}function Er(){return(Er=jr(k().mark((function e(t){var n,r,i;return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:n=xr(t),e.prev=1,n.s();case 3:if((r=n.n()).done){e.next=9;break}return i=r.value,e.next=7,i();case 7:e.next=3;break;case 9:e.next=14;break;case 11:e.prev=11,e.t0=e.catch(1),n.e(e.t0);case 14:return e.prev=14,n.f(),e.finish(14);case 17:case"end":return e.stop()}}),e,null,[[1,11,14,17]])})))).apply(this,arguments)}function Nr(e,t){return(0,(0,Wn.dispatch)("core/block-editor").insertBlocks)(e).then((function(){window.dispatchEvent(new CustomEvent("extendify-sdk::template-inserted",{detail:{template:t},bubbles:!0}))}))}function Cr(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==n)return;var r,i,o=[],a=!0,s=!1;try{for(n=n.call(e);!(a=(r=n.next()).done)&&(o.push(r.value),!t||o.length!==t);a=!0);}catch(e){s=!0,i=e}finally{try{a||null==n.return||n.return()}finally{if(s)throw i}}return o}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return Pr(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return Pr(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Pr(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var Ar=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];return{hasRequiredPlugins:rr,hasPluginsActivated:dr,NeedsRegistrationModal:yr,stack:[],check:function(t){var n=this;return wr(k().mark((function r(){var i,o,a;return k().wrap((function(r){for(;;)switch(r.prev=r.next){case 0:i=xr(e),r.prev=1,a=k().mark((function e(){var r,i;return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=o.value,e.next=3,n["".concat(r)](t);case 3:i=e.sent,setTimeout((function(){n.stack.push(i.pass?i.allow:i.deny)}),0);case 5:case"end":return e.stop()}}),e)})),i.s();case 4:if((o=i.n()).done){r.next=8;break}return r.delegateYield(a(),"t0",6);case 6:r.next=4;break;case 8:r.next=13;break;case 10:r.prev=10,r.t1=r.catch(1),i.e(r.t1);case 13:return r.prev=13,i.f(),r.finish(13);case 16:case"end":return r.stop()}}),r,null,[[1,10,13,16]])})))()},reset:function(){this.stack=[]}}}(["NeedsRegistrationModal","hasRequiredPlugins","hasPluginsActivated"]);function Tr(e){var t=e.template,n=(0,r.useRef)(null),i=b((function(e){return e.activeTemplateBlocks})),o=K((function(e){return e.canImport})),a=K((function(e){return e.apiKey})),s=w((function(e){return e.setOpen})),u=Cr((0,r.useState)(!1),2),l=u[0],c=u[1],f=Cr((0,r.useState)(!1),2),d=f[0],p=f[1],m=qn((function(e){return e.setWanted})),h=function(){(function(e){return _r.apply(this,arguments)})(Ar.stack).then((function(){setTimeout((function(){Nr(i,t).then((function(){return s(!1)})).then((function(){return(0,r.render)((0,_t.jsx)(ei,{}),document.getElementById("extendify-root"))}))}),100)}))};(0,r.useEffect)((function(){return Ar.check(t).then((function(){return p(!0)})),function(){return Ar.reset()&&p(!1)}}),[t]),(0,r.useEffect)((function(){!l&&n.current&&n.current.focus()}),[n,l,d]);return d&&Object.keys(i).length?a||o()?l?(0,_t.jsx)("button",{type:"button",disabled:!0,className:"components-button is-secondary text-lg sm:text-2xl h-auto py-1.5 px-3 sm:py-2.5 sm:px-5",onClick:function(){},children:(0,jt.__)("Importing...","extendify-sdk")}):(0,_t.jsx)("button",{ref:n,type:"button",className:"components-button is-primary text-lg sm:text-2xl h-auto py-1.5 px-3 sm:py-2.5 sm:px-5",onClick:function(){return $t(t),c(!0),m(t),void h()},children:(0,jt.sprintf)((0,jt.__)("Add %s","extendify-sdk"),t.fields.type)}):(0,_t.jsx)("a",{ref:n,className:"button-extendify-main text-lg sm:text-2xl py-1.5 px-3 sm:py-2.5 sm:px-5",target:"_blank",href:"https://extendify.com/pricing?utm_source=".concat(window.extendifySdkData.source,"&utm_medium=library&utm_campaign=sign_up&utm_content=single_page"),rel:"noreferrer",children:(0,jt.__)("Sign up now","extendify-sdk")}):""}function Fr(e){var t=e.categories,n=e.styles,r=e.types,i=e.requiredPlugins;return(0,_t.jsxs)(_t.Fragment,{children:[t&&(0,_t.jsxs)("div",{className:"w-full pb-4",children:[(0,_t.jsx)("h3",{className:"text-sm m-0 mb-2",children:(0,jt.__)("Categories:","extendify-sdk")}),(0,_t.jsx)("div",{children:t.join(", ")})]}),n&&(0,_t.jsxs)("div",{className:"w-full py-4",children:[(0,_t.jsx)("h3",{className:"text-sm m-0 my-2",children:(0,jt.__)("Styles:","extendify-sdk")}),(0,_t.jsx)("div",{children:n.join(", ")})]}),r&&(0,_t.jsxs)("div",{className:"w-full py-4",children:[(0,_t.jsx)("h3",{className:"text-sm m-0 my-2",children:(0,jt.__)("Types:","extendify-sdk")}),(0,_t.jsx)("div",{children:r.join(", ")})]}),i.filter((function(e){return"editorplus"!==e})).length>0&&(0,_t.jsxs)("div",{className:"pt-4 w-full",children:[(0,_t.jsx)("h3",{className:"text-sm m-0 my-2",children:(0,jt.__)("Required Plugins:","extendify-sdk")}),(0,_t.jsx)("div",{children:i.filter((function(e){return"editorplus"!==e})).map((function(e){return Qn(e)})).join(", ")})]}),(0,_t.jsx)("div",{className:"py-4 mt-4",children:(0,_t.jsx)("a",{href:"https://extendify.com/what-happens-when-a-template-is-added?utm_source=".concat(window.extendifySdkData.source,"&utm_medium=library&utm_campaign=sidebar"),rel:"noreferrer",target:"_blank",children:(0,jt.__)("What happens when a template is added?","extendify-sdk")})})]})}function Lr(e,t,n,r,i,o,a){try{var s=e[o](a),u=s.value}catch(e){return void n(e)}s.done?t(u):Promise.resolve(u).then(r,i)}function Ir(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==n)return;var r,i,o=[],a=!0,s=!1;try{for(n=n.call(e);!(a=(r=n.next()).done)&&(o.push(r.value),!t||o.length!==t);a=!0);}catch(e){s=!0,i=e}finally{try{a||null==n.return||n.return()}finally{if(s)throw i}}return o}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return Dr(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return Dr(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Dr(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var Rr=new Map;function Mr(e){var t,n,i,o,a,s,u,l=e.template,c=l.fields,f=c.tax_categories,d=c.required_plugins,p=c.tax_style,m=c.tax_pattern_types,h=K((function(e){return e.apiKey})),v=Ir((0,r.useState)([]),2),y=v[0],x=v[1],g=Ir((0,r.useState)([]),2),w=g[0],j=g[1],S=on(),_=b((function(e){return e.setActive})),O=function(e){x([]),j([]),requestAnimationFrame((function(){return _(e)}))},E=(0,r.useCallback)(function(){var e,t=(e=k().mark((function e(t,n){var r,i;return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r="".concat(l.id,"|").concat(t,"|").concat(n),!Rr.has(r)){e.next=3;break}return e.abrupt("return",Rr.get(r));case 3:return e.next=5,Zt(l,t,n);case 5:return i=e.sent,Rr.set(r,i),e.abrupt("return",i);case 8:case"end":return e.stop()}}),e)})),function(){var t=this,n=arguments;return new Promise((function(r,i){var o=e.apply(t,n);function a(e){Lr(o,r,i,a,s,"next",e)}function s(e){Lr(o,r,i,a,s,"throw",e)}a(void 0)}))});return function(e,n){return t.apply(this,arguments)}}(),[l]);return(0,r.useEffect)((function(){Gt(l)}),[l]),(0,r.useEffect)((function(){E("related","pattern").then((function(e){S.current&&x(e)}))}),[l,E,S]),(0,_t.jsxs)("div",{className:"flex flex-col min-h-screen bg-white sm:min-h-0 items-start overflow-y-auto h-full sm:pr-8 lg:pl-px lg:-ml-px",children:[(0,_t.jsxs)("div",{className:"lg:sticky top-0 bg-white flex flex-col lg:flex-row items-start justify-start lg:items-center lg:justify-between w-full max-w-screen-xl lg:border-b border-gray-300",children:[(0,_t.jsxs)("div",{className:"text-left m-0 h-full px-6 sm:p-0",children:[(0,_t.jsx)("h1",{className:"leading-tight text-left mb-2.5 mt-0 sm:text-3xl font-normal",children:l.fields.display_title}),(0,_t.jsx)(Nt.ExternalLink,{href:l.fields.url,children:(0,jt.__)("Demo","extendify-sdk")})]}),(0,_t.jsx)("div",{className:Pt()({"inline-flex sm:top-auto right-0 m-6 sm:m-0 sm:my-6 space-x-3":!0,"top-16 mt-5":!h.length,"top-0":h.length>0}),children:(0,_t.jsx)(Tr,{template:l})})]}),(0,_t.jsx)("div",{className:"max-w-screen-xl sm:w-full sm:m-0 sm:mb-8 m-6 border lg:border-t-0 border-gray-300 m-46",children:(0,_t.jsx)("img",{className:"max-w-full w-full block",src:null!==(t=null==l||null===(n=l.fields)||void 0===n||null===(i=n.screenshot[0])||void 0===i||null===(o=i.thumbnails)||void 0===o||null===(a=o.full)||void 0===a?void 0:a.url)&&void 0!==t?t:null==l||null===(s=l.fields)||void 0===s||null===(u=s.screenshot[0])||void 0===u?void 0:u.url})}),(0,_t.jsxs)("div",{className:"divide-y p-6 sm:p-0 mb-16",children:[y.length>0&&(0,_t.jsxs)("section",{className:"mb-4",children:[(0,_t.jsx)("h4",{className:"text-lg m-0 mb-4 text-left font-semibold",children:(0,jt.__)("Related","extendify-sdk")}),(0,_t.jsx)("div",{className:"grid md:grid-cols-2 xl:grid-cols-4 gap-6",children:y.map((function(e){var t,n,r,i,o,a,s;return(0,_t.jsx)("button",{type:"button",className:"min-h-60 border border-transparent hover:border-wp-theme-500 transition duration-150 p-0 m-0 cursor-pointer",onClick:function(){return O(e)},children:(0,_t.jsx)("img",{className:"max-w-full block p-0 m-0 object-cover",src:null!==(t=null==e||null===(n=e.fields)||void 0===n||null===(r=n.screenshot[0])||void 0===r||null===(i=r.thumbnails)||void 0===i||null===(o=i.large)||void 0===o?void 0:o.url)&&void 0!==t?t:null==e||null===(a=e.fields)||void 0===a||null===(s=a.screenshot[0])||void 0===s?void 0:s.url})},e.id)}))})]}),w.length>0&&(0,_t.jsxs)("section",{className:"mb-4 pt-6",children:[(0,_t.jsx)("h4",{className:"text-lg m-0 mb-4 text-left font-semibold",children:(0,jt.__)("Alternatives","extendify-sdk")}),(0,_t.jsx)("div",{className:"grid md:grid-cols-2 xl:grid-cols-4 gap-6",children:w.map((function(e){var t,n,r,i,o,a,s;return(0,_t.jsx)("button",{type:"button",className:"min-h-60 border border-transparent hover:border-wp-theme-500 transition duration-150 p-0 m-0 cursor-pointer",onClick:function(){return O(e)},children:(0,_t.jsx)("img",{className:"max-w-full block p-0 m-0 object-cover",src:null!==(t=null==e||null===(n=e.fields)||void 0===n||null===(r=n.screenshot[0])||void 0===r||null===(i=r.thumbnails)||void 0===i||null===(o=i.large)||void 0===o?void 0:o.url)&&void 0!==t?t:null==e||null===(a=e.fields)||void 0===a||null===(s=a.screenshot[0])||void 0===s?void 0:s.url})},e.id)}))})]})]}),(0,_t.jsx)("div",{className:"text-xs text-left p-6 w-full block sm:hidden divide-y",children:(0,_t.jsx)(Fr,{categories:f,types:m,requiredPlugins:d,styles:p})})]})}function Vr(e){var t=e.template,n=b((function(e){return e.setActive})),r=t.fields,i=r.tax_categories,o=r.required_plugins,a=r.tax_style,s=r.tax_pattern_types,u=K((function(e){return e.apiKey}));return(0,_t.jsxs)("div",{className:"flex flex-col items-start justify-start",children:[!u.length&&(0,_t.jsxs)("div",{className:"h-full flex sm:hidden w-full p-4 justify-between border items-center border-gray-300 bg-extendify-lightest",children:[(0,_t.jsx)("a",{className:"button-extendify-main",target:"_blank",href:"https://extendify.com/pricing?utm_source=".concat(window.extendifySdkData.source,"&utm_medium=library&utm_campaign=sign_up&utm_content=main"),rel:"noreferrer",children:(0,jt.__)("Sign up today to get unlimited access","extendify-sdk")}),(0,_t.jsx)("button",{className:"components-button",onClick:function(){return w.setState({currentPage:"login"})},children:(0,jt.__)("Log in","extendify-sdk")})]}),(0,_t.jsx)("div",{className:"p-6 sm:p-0",children:(0,_t.jsxs)("button",{type:"button",className:"cursor-pointer text-black bg-transparent font-medium flex items-center p-3 transform -translate-x-3 button-focus",onClick:function(){w.setState({currentPage:"main"}),n({})},children:[(0,_t.jsx)("svg",{className:"fill-current",width:"8",height:"12",viewBox:"0 0 8 12",xmlns:"http://www.w3.org/2000/svg",children:(0,_t.jsx)("path",{d:"M6.70998 9.88047L2.82998 6.00047L6.70998 2.12047C7.09998 1.73047 7.09998 1.10047 6.70998 0.710469C6.31998 0.320469 5.68998 0.320469 5.29998 0.710469L0.70998 5.30047C0.31998 5.69047 0.31998 6.32047 0.70998 6.71047L5.29998 11.3005C5.68998 11.6905 6.31998 11.6905 6.70998 11.3005C7.08998 10.9105 7.09998 10.2705 6.70998 9.88047Z"})}),(0,_t.jsx)("span",{className:"ml-4",children:(0,jt.__)("Go back","extendify-sdk")})]})}),(0,_t.jsx)("div",{className:"text-left pt-14 divide-y w-full hidden sm:block",children:(0,_t.jsx)(Fr,{categories:i,types:s,requiredPlugins:o,styles:a})})]})}function Hr(){var e=b((function(e){return e.activeTemplate}));return(0,_t.jsxs)("div",{className:"bg-white h-full flex flex-col items-center relative shadow-xl max-w-screen-4xl mx-auto",children:[(0,_t.jsx)(wn,{className:"w-full h-16 border-solid border-0 border-b border-gray-300 flex-shrink-0"}),(0,_t.jsxs)("div",{className:"w-full flex-grow overflow-hidden",children:[(0,_t.jsx)("a",{href:"#extendify-templates",className:"sr-only focus:not-sr-only focus:text-blue-500",children:(0,jt.__)("Skip to content","extendify-sdk")}),(0,_t.jsx)("div",{className:"sm:flex sm:space-x-12 relative bg-white mx-auto max-w-screen-4xl h-full",children:(0,_t.jsx)("div",{className:"absolute bg-white sm:flex inset-0 z-50 sm:space-x-12",children:(0,_t.jsxs)(xn,{children:[(0,_t.jsx)(Vr,{template:e}),(0,_t.jsx)(Mr,{template:e})]})})})]})]})}function Br(e,t,n,r,i,o,a){try{var s=e[o](a),u=s.value}catch(e){return void n(e)}s.done?t(u):Promise.resolve(u).then(r,i)}function Ur(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==n)return;var r,i,o=[],a=!0,s=!1;try{for(n=n.call(e);!(a=(r=n.next()).done)&&(o.push(r.value),!t||o.length!==t);a=!0);}catch(e){s=!0,i=e}finally{try{a||null==n.return||n.return()}finally{if(s)throw i}}return o}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return qr(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return qr(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function qr(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function zr(){var e=Ur((0,r.useState)(K.getState().apiKey),2),t=e[0],n=e[1],i=Ur((0,r.useState)(K.getState().email),2),o=i[0],a=i[1],s=Ur((0,r.useState)(""),2),u=s[0],l=s[1],c=Ur((0,r.useState)("info"),2),f=c[0],d=c[1],p=Ur((0,r.useState)(""),2),m=p[0],h=p[1];(0,r.useEffect)((function(){return function(){return d("info")}}),[]);var v=function(){var e,n=(e=k().mark((function e(n){var r,i,a,s,u,c;return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n.preventDefault(),l(""),r=o.length?o:m,e.next=5,R(r,t);case 5:if(i=e.sent,a=i.token,s=i.error,u=i.exception,void 0===(c=i.message)){e.next=13;break}return d("error"),e.abrupt("return",l(c.length?c:"Error: Are you interacting with the wrong server?"));case 13:if(!s&&!u){e.next=16;break}return d("error"),e.abrupt("return",l(s.length?s:u));case 16:if(a&&"string"==typeof a){e.next=19;break}return d("error"),e.abrupt("return",l((0,jt.__)("Something went wrong","extendify-sdk")));case 19:return d("success"),l("Success!"),e.next=23,new Promise((function(e){return setTimeout(e,1500)}));case 23:K.setState({apiKey:a}),w.setState({currentPage:"main"});case 25:case"end":return e.stop()}}),e)})),function(){var t=this,n=arguments;return new Promise((function(r,i){var o=e.apply(t,n);function a(e){Br(o,r,i,a,s,"next",e)}function s(e){Br(o,r,i,a,s,"throw",e)}a(void 0)}))});return function(e){return n.apply(this,arguments)}}();return(0,r.useEffect)((function(){o||D("user_email").then((function(e){return h(e)}))}),[o]),(0,_t.jsxs)("section",{className:"w-96 text-left md:-mt-32",children:[(0,_t.jsx)("h1",{className:"border-b border-gray-900 mb-12 pb-4",children:(0,jt.__)("Welcome","extendify-sdk")}),u&&(0,_t.jsx)("div",{className:Pt()({"border-b pb-6 mb-6 -mt-6":!0,"border-gray-900 text-gray-900":"info"===f,"border-wp-alert-red text-wp-alert-red":"error"===f,"border-extendify-main text-extendify-main":"success"===f}),children:u}),(0,_t.jsxs)("form",{onSubmit:v,className:" space-y-6",children:[(0,_t.jsxs)("div",{className:"flex items-center",children:[(0,_t.jsx)("label",{htmlFor:"extendifysdk-login-email",className:"w-32 font-bold",children:(0,jt.__)("Email:","extendify-sdk")}),(0,_t.jsx)("input",{id:"extendifysdk-login-email",name:"extendifysdk-login-email",type:"email",className:"border px-2 w-full",placeholder:"Email",value:o.length?o:m,onChange:function(e){return a(e.target.value)}})]}),(0,_t.jsxs)("div",{className:"flex items-center",children:[(0,_t.jsx)("label",{htmlFor:"extendifysdk-login-license",className:"w-32 font-bold",children:(0,jt.__)("License:","extendify-sdk")}),(0,_t.jsx)("input",{id:"extendifysdk-login-license",name:"extendifysdk-login-email",type:"text",className:"border px-2 w-full",placeholder:"License key",value:t,onChange:function(e){return n(e.target.value)}})]}),(0,_t.jsx)("div",{className:"flex justify-end",children:(0,_t.jsx)("button",{type:"submit",className:"button-extendify-main p-3 px-4",children:(0,jt.__)("Sign in","extendify-sdk")})})]})]})}function Wr(){return(0,_t.jsxs)("div",{className:"bg-white h-full flex flex-col items-center relative shadow-xl max-w-screen-4xl mx-auto",children:[(0,_t.jsx)(wn,{className:"w-full h-16 border-solid border-0 border-b border-gray-300 flex-shrink-0"}),(0,_t.jsxs)("div",{className:"w-full flex-grow overflow-hidden bg-extendify-light",children:[(0,_t.jsx)("a",{href:"#extendify-templates",className:"sr-only focus:not-sr-only focus:text-blue-500",children:(0,jt.__)("Skip to content","extendify-sdk")}),(0,_t.jsx)("div",{className:"flex sm:space-x-12 relative mx-auto max-w-screen-4xl h-full",children:(0,_t.jsxs)("div",{className:"absolute flex inset-0 items-center justify-center z-20 sm:space-x-12",children:[(0,_t.jsx)("div",{className:"pl-12 py-6 absolute top-0 left-0",children:(0,_t.jsxs)("button",{type:"button",className:"cursor-pointer text-black bg-transparent font-medium flex items-center p-3 transform -translate-x-3 button-focus",onClick:function(){return w.setState({currentPage:"main"})},children:[(0,_t.jsx)("svg",{className:"fill-current",width:"8",height:"12",viewBox:"0 0 8 12",xmlns:"http://www.w3.org/2000/svg",children:(0,_t.jsx)("path",{d:"M6.70998 9.88047L2.82998 6.00047L6.70998 2.12047C7.09998 1.73047 7.09998 1.10047 6.70998 0.710469C6.31998 0.320469 5.68998 0.320469 5.29998 0.710469L0.70998 5.30047C0.31998 5.69047 0.31998 6.32047 0.70998 6.71047L5.29998 11.3005C5.68998 11.6905 6.31998 11.6905 6.70998 11.3005C7.08998 10.9105 7.09998 10.2705 6.70998 9.88047Z"})}),(0,_t.jsx)("span",{className:"ml-4",children:(0,jt.__)("Go back","extendify-sdk")})]})}),(0,_t.jsx)("div",{className:"flex justify-center",children:(0,_t.jsx)(zr,{})})]})})]})]})}function Zr(e,t,n,r,i,o,a){try{var s=e[o](a),u=s.value}catch(e){return void n(e)}s.done?t(u):Promise.resolve(u).then(r,i)}function $r(e){return function(){var t=this,n=arguments;return new Promise((function(r,i){var o=e.apply(t,n);function a(e){Zr(o,r,i,a,s,"next",e)}function s(e){Zr(o,r,i,a,s,"throw",e)}a(void 0)}))}}function Gr(e){var t=e.action,n=e.callback,i=e.text;return(0,r.useEffect)((function(){t.then($r(k().mark((function e(){return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,n();case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e)}))))})),(0,_t.jsx)(Nt.Modal,{title:i,isDismissible:!1,children:(0,_t.jsx)(Nt.Button,{style:{width:"100%"},disabled:!0,isPrimary:!0,isBusy:!0,onClick:function(){},children:(0,jt.__)("Please wait...","extendify-sdk")})})}function Jr(e){var t,n,r=e.page,i=b((function(e){return e.searchParams}));switch("main"!==r||Object.keys(null!==(t=null==i?void 0:i.taxonomies)&&void 0!==t?t:{}).length||(r="curated"),"main"===r&&"pattern"===(null==i?void 0:i.type)&&""===(null==i||null===(n=i.taxonomies)||void 0===n?void 0:n.tax_pattern_types)&&(r="curated"),r){case"welcome":return(0,_t.jsx)(Ot,{});case"waiting-crunching":return(0,_t.jsx)(Gr,{});case"curated":return(0,_t.jsx)(An,{});case"main":return(0,_t.jsx)(jn,{});case"single":return(0,_t.jsx)(Hr,{});case"login":return(0,_t.jsx)(Wr,{})}}var Kr=function(){return F.get("taxonomies")};function Yr(e,t,n,r,i,o,a){try{var s=e[o](a),u=s.value}catch(e){return void n(e)}s.done?t(u):Promise.resolve(u).then(r,i)}function Xr(e){return function(){var t=this,n=arguments;return new Promise((function(r,i){var o=e.apply(t,n);function a(e){Yr(o,r,i,a,s,"next",e)}function s(e){Yr(o,r,i,a,s,"throw",e)}a(void 0)}))}}function Qr(){var e,t,n,i=(0,r.useRef)(null),o=w((function(e){return e.open})),a=w((function(e){return e.metaData})),s=w((function(e){return e.currentPage}));return e=o,t=function(){var e=document.getElementById("beacon-container");e&&(e.style.position="relative",e.style.zIndex=Number.MAX_SAFE_INTEGER,e.style.display="block")},n=function(){var e=document.getElementById("beacon-container");e&&(e.style.display="none",window.Beacon("close"))},(0,r.useEffect)((function(){if(e)return window.Beacon?(t(),function(){return n()}):(function(e,t,n){function r(){var e,n=t.getElementsByTagName("script")[0],r=t.createElement("script");r.async=!0,r.src="https://beacon-v2.helpscout.net",null===(e=n.parentNode)||void 0===e||e.insertBefore(r,n)}if(e.Beacon=n=function(t,n,r){e.Beacon.readyQueue.push({method:t,options:n,data:r})},n.readyQueue=[],"complete"===t.readyState)return r();e.attachEvent?e.attachEvent("onload",r):e.addEventListener("load",r,!1)}(window,document,window.Beacon||function(){}),window.Beacon("init","2b8c11c0-5afc-4cb9-bee0-a5cb76b2fc91"),window.Beacon("on","ready",t),function(){window.Beacon("off","ready",t),n()})}),[e]),function(e){var t=b((function(e){return e.setupDefaultTaxonomies})),n=Ft((function(e){return e.setTaxonomies})),i=(0,r.useCallback)(Xr(k().mark((function e(){var r;return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Kr();case 2:r=e.sent,r=Object.keys(r).filter((function(e){return e.startsWith("tax_")})).reduce((function(e,t){return e[t]=r[t],e}),{}),t(r),n(r);case 6:case"end":return e.stop()}}),e)}))),[t,n]);(0,r.useEffect)((function(){e&&i()}),[i,e])}(o),(0,r.useEffect)((function(){o&&(K.getState().hasClickedThroughWelcomePage||w.setState({currentPage:"welcome"}))}),[o]),(0,r.useEffect)((function(){o&&!Object.keys(a).length&&kt().then((function(e){return w.setState({metaData:e})}))}),[o,a]),(0,_t.jsx)(Ie.Root,{show:o,as:r.Fragment,children:(0,_t.jsx)(wt,{as:"div",static:!0,className:"extendify-sdk",initialFocus:i,onClose:function(){},children:(0,_t.jsx)("div",{className:"h-screen w-screen sm:h-auto sm:w-auto fixed z-high inset-0 overflow-y-auto",children:(0,_t.jsxs)("div",{className:"flex items-end justify-center min-h-screen pt-4 px-4 pb-20 text-center sm:block sm:p-0",children:[(0,_t.jsx)(Ie.Child,{as:r.Fragment,enter:"ease-out duration-300",enterFrom:"opacity-0",enterTo:"opacity-100",children:(0,_t.jsx)(wt.Overlay,{className:"fixed inset-0 bg-black bg-opacity-30 transition-opacity"})}),(0,_t.jsx)(Ie.Child,{as:r.Fragment,enter:"ease-out duration-300",enterFrom:"opacity-0 translate-y-4 sm:translate-y-5",enterTo:"opacity-100 translate-y-0",children:(0,_t.jsx)("div",{ref:i,tabIndex:"0",className:"fixed lg:absolute inset-0 lg:overflow-hidden transform transition-all lg:p-5",children:(0,_t.jsx)(Jr,{page:s})})})]})})})})}function ei(e){var t=e.show,n=void 0!==t&&t,i=w((function(e){return e.setOpen})),o=(0,r.useCallback)((function(){return i(!0)}),[i]),a=(0,r.useCallback)((function(){i(!1)}),[i]);return(0,r.useEffect)((function(){n&&i(!0)}),[n,i]),(0,r.useEffect)((function(){return window.localStorage.getItem("etfy_library__key")&&K.setState({apiKey:"any-key-will-work-during-beta"}),function(){return window.localStorage.removeItem("etfy_library__key")}}),[]),(0,r.useEffect)((function(){return window.addEventListener("extendify-sdk::open-library",o),window.addEventListener("extendify-sdk::close-library",a),function(){window.removeEventListener("extendify-sdk::open-library",o),window.removeEventListener("extendify-sdk::close-library",a)}}),[a,o]),(0,_t.jsx)(Qr,{})}const ti=wp.plugins,ni=wp.editPost;function ri(e,t,n,r,i,o,a){try{var s=e[o](a),u=s.value}catch(e){return void n(e)}s.done?t(u):Promise.resolve(u).then(r,i)}function ii(e){return function(){var t=this,n=arguments;return new Promise((function(r,i){var o=e.apply(t,n);function a(e){ri(o,r,i,a,s,"next",e)}function s(e){ri(o,r,i,a,s,"throw",e)}a(void 0)}))}}var oi=function(e){var t,n;Xn(null===(t=e.target.closest("[data-extendify-identifier]"))||void 0===t||null===(n=t.dataset)||void 0===n?void 0:n.extendifyIdentifier)},ai=function(){var e,t,n;return null===window.extendifySdkData.user||(null===(e=window.extendifySdkData)||void 0===e||null===(t=e.user)||void 0===t||null===(n=t.state)||void 0===n?void 0:n.enabled)},si=(0,_t.jsx)("div",{id:"extendify-templates-inserter",children:(0,_t.jsxs)("button",{style:"background:#D9F1EE;color:#1e1e1e;border:1px solid #949494;font-weight:bold;font-size:14px;padding:8px;margin-right:8px",type:"button","data-extendify-identifier":"main-button",id:"extendify-templates-inserter-btn",className:"components-button",children:[(0,_t.jsxs)("svg",{style:"margin-right:0.5rem",width:"20",height:"20",viewBox:"0 0 103 103",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[(0,_t.jsx)("rect",{y:"25.75",width:"70.8125",height:"77.25",fill:"#000000"}),(0,_t.jsx)("rect",{x:"45.0625",width:"57.9375",height:"57.9375",fill:"#37C2A2"})]}),(0,jt.__)("Library","extendify-sdk")]})});window._wpLoadBlockEditor&&window.wp.data.subscribe((function(){setTimeout((function(){ai()&&(document.getElementById("extendify-templates-inserter-btn")||document.querySelector(".edit-post-header-toolbar")&&(document.querySelector(".edit-post-header-toolbar").insertAdjacentHTML("beforeend",(0,r.renderToString)(si)),document.getElementById("extendify-templates-inserter-btn").addEventListener("click",oi)))}),0)})),window._wpLoadBlockEditor&&window.wp.data.subscribe((function(){setTimeout((function(){if(ai()&&document.querySelector("[id$=patterns-view]")&&!document.getElementById("extendify-cta-button")){var e=(0,_t.jsx)("div",{children:(0,_t.jsx)("button",{id:"extendify-cta-button",style:"margin:1rem 1rem 0","data-extendify-identifier":"patterns-cta",className:"components-button is-secondary",children:(0,jt.__)("Discover more patterns in Extendify Library","extendify-sdk")})});document.querySelector("[id$=patterns-view]").insertAdjacentHTML("afterbegin",(0,r.renderToString)(e)),document.getElementById("extendify-cta-button").addEventListener("click",oi)}}),0)}));window._wpLoadBlockEditor&&ai()&&(0,ti.registerPlugin)("extendify-temps-more-menu-trigger",{render:function(){return(0,_t.jsx)(ni.PluginSidebarMoreMenuItem,{"data-extendify-identifier":"sidebar-button",onClick:oi,icon:(0,_t.jsx)("span",{className:"components-menu-items__item-icon",children:(0,_t.jsxs)("svg",{width:"20",height:"20",viewBox:"0 0 103 103",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[(0,_t.jsx)("rect",{y:"25.75",width:"70.8125",height:"77.25",fill:"#000000"}),(0,_t.jsx)("rect",{x:"45.0625",width:"57.9375",height:"57.9375",fill:"#37C2A2"})]})}),children:(0,jt.__)("Library","extendify-sdk")})}});window._wpLoadBlockEditor&&(0,ti.registerPlugin)("extendify-settings-enable-disable",{render:function(){return(0,_t.jsx)(ni.PluginSidebarMoreMenuItem,{onClick:ii(k().mark((function e(){var t;return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,I();case 2:return t=e.sent,(t=JSON.parse(t)).state.enabled=!ai(),e.next=7,M(JSON.stringify(Object.assign({},t)));case 7:location.reload();case 8:case"end":return e.stop()}}),e)}))),icon:(0,_t.jsx)(_t.Fragment,{}),children:ai()?(0,jt.__)("Disable Extendify","extendify-sdk"):(0,jt.__)("Enable Extendify","extendify-sdk")})}}),[{register:function(){var e=(0,Wn.dispatch)("core/notices").createNotice,t=K.getState().incrementImports;window.addEventListener("extendify-sdk::template-inserted",(function(n){e("info",(0,jt.__)("Template Added"),{isDismissible:!0,type:"snackbar"}),setTimeout((function(){var e;t(),Jt(null===(e=n.detail)||void 0===e?void 0:e.template)}),0)}))}},{register:function(){var e=this;window.addEventListener("extendify-sdk::softerror-encountered",(function(t){e[(0,Et.camelCase)(t.detail.type)](t.detail)}))},versionOutdated:function(e){(0,r.render)((0,_t.jsx)(tr,{title:e.data.title,message:e.data.message,buttonLabel:e.data.buttonLabel,forceOpen:!0}),document.getElementById("extendify-root"))}}].forEach((function(e){return e.register()})),window._wpLoadBlockEditor&&window.wp.domReady((function(){var e=Object.assign(document.createElement("div"),{id:"extendify-root"});if(document.body.append(e),(0,r.render)((0,_t.jsx)(ei,{}),e),e.parentNode.insertBefore(Object.assign(document.createElement("div"),{id:"extendify-util"}),e.nextSibling),qn.getState().importOnLoad){var t=qn.getState().wantedTemplate;setTimeout((function(){!function(e){if(!e)throw Error("Template not found");Nr(p((0,window.wp.blocks.parse)((0,Et.get)(e,"fields.code"))),e)}(t)}),0)}qn.setState({importOnLoad:!1,wantedTemplate:{}})}))},42:(e,t)=>{var n;!function(){"use strict";var r={}.hasOwnProperty;function i(){for(var e=[],t=0;t<arguments.length;t++){var n=arguments[t];if(n){var o=typeof n;if("string"===o||"number"===o)e.push(n);else if(Array.isArray(n)){if(n.length){var a=i.apply(null,n);a&&e.push(a)}}else if("object"===o)if(n.toString===Object.prototype.toString)for(var s in n)r.call(n,s)&&n[s]&&e.push(s);else e.push(n.toString())}}return e.join(" ")}e.exports?(i.default=i,e.exports=i):void 0===(n=function(){return i}.apply(t,[]))||(e.exports=n)}()},716:()=>{},525:e=>{"use strict";var t=Object.getOwnPropertySymbols,n=Object.prototype.hasOwnProperty,r=Object.prototype.propertyIsEnumerable;function i(e){if(null==e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}e.exports=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map((function(e){return t[e]})).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach((function(e){r[e]=e})),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},r)).join("")}catch(e){return!1}}()?Object.assign:function(e,o){for(var a,s,u=i(e),l=1;l<arguments.length;l++){for(var c in a=Object(arguments[l]))n.call(a,c)&&(u[c]=a[c]);if(t){s=t(a);for(var f=0;f<s.length;f++)r.call(a,s[f])&&(u[s[f]]=a[s[f]])}}return u}},61:e=>{var t,n,r=e.exports={};function i(){throw new Error("setTimeout has not been defined")}function o(){throw new Error("clearTimeout has not been defined")}function a(e){if(t===setTimeout)return setTimeout(e,0);if((t===i||!t)&&setTimeout)return t=setTimeout,setTimeout(e,0);try{return t(e,0)}catch(n){try{return t.call(null,e,0)}catch(n){return t.call(this,e,0)}}}!function(){try{t="function"==typeof setTimeout?setTimeout:i}catch(e){t=i}try{n="function"==typeof clearTimeout?clearTimeout:o}catch(e){n=o}}();var s,u=[],l=!1,c=-1;function f(){l&&s&&(l=!1,s.length?u=s.concat(u):c=-1,u.length&&d())}function d(){if(!l){var e=a(f);l=!0;for(var t=u.length;t;){for(s=u,u=[];++c<t;)s&&s[c].run();c=-1,t=u.length}s=null,l=!1,function(e){if(n===clearTimeout)return clearTimeout(e);if((n===o||!n)&&clearTimeout)return n=clearTimeout,clearTimeout(e);try{n(e)}catch(t){try{return n.call(null,e)}catch(t){return n.call(this,e)}}}(e)}}function p(e,t){this.fun=e,this.array=t}function m(){}r.nextTick=function(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)t[n-1]=arguments[n];u.push(new p(e,t)),1!==u.length||l||a(d)},p.prototype.run=function(){this.fun.apply(null,this.array)},r.title="browser",r.browser=!0,r.env={},r.argv=[],r.version="",r.versions={},r.on=m,r.addListener=m,r.once=m,r.off=m,r.removeListener=m,r.removeAllListeners=m,r.emit=m,r.prependListener=m,r.prependOnceListener=m,r.listeners=function(e){return[]},r.binding=function(e){throw new Error("process.binding is not supported")},r.cwd=function(){return"/"},r.chdir=function(e){throw new Error("process.chdir is not supported")},r.umask=function(){return 0}},426:(e,t,n)=>{"use strict";n(525);var r=n(804),i=60103;if(t.Fragment=60107,"function"==typeof Symbol&&Symbol.for){var o=Symbol.for;i=o("react.element"),t.Fragment=o("react.fragment")}var a=r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,s=Object.prototype.hasOwnProperty,u={key:!0,ref:!0,__self:!0,__source:!0};function l(e,t,n){var r,o={},l=null,c=null;for(r in void 0!==n&&(l=""+n),void 0!==t.key&&(l=""+t.key),void 0!==t.ref&&(c=t.ref),t)s.call(t,r)&&!u.hasOwnProperty(r)&&(o[r]=t[r]);if(e&&e.defaultProps)for(r in t=e.defaultProps)void 0===o[r]&&(o[r]=t[r]);return{$$typeof:i,type:e,key:l,ref:c,props:o,_owner:a.current}}t.jsx=l,t.jsxs=l},246:(e,t,n)=>{"use strict";e.exports=n(426)},248:e=>{var t=function(e){"use strict";var t,n=Object.prototype,r=n.hasOwnProperty,i="function"==typeof Symbol?Symbol:{},o=i.iterator||"@@iterator",a=i.asyncIterator||"@@asyncIterator",s=i.toStringTag||"@@toStringTag";function u(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{u({},"")}catch(e){u=function(e,t,n){return e[t]=n}}function l(e,t,n,r){var i=t&&t.prototype instanceof v?t:v,o=Object.create(i.prototype),a=new N(r||[]);return o._invoke=function(e,t,n){var r=f;return function(i,o){if(r===p)throw new Error("Generator is already running");if(r===m){if("throw"===i)throw o;return P()}for(n.method=i,n.arg=o;;){var a=n.delegate;if(a){var s=_(a,n);if(s){if(s===h)continue;return s}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(r===f)throw r=m,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);r=p;var u=c(e,t,n);if("normal"===u.type){if(r=n.done?m:d,u.arg===h)continue;return{value:u.arg,done:n.done}}"throw"===u.type&&(r=m,n.method="throw",n.arg=u.arg)}}}(e,n,a),o}function c(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}e.wrap=l;var f="suspendedStart",d="suspendedYield",p="executing",m="completed",h={};function v(){}function y(){}function x(){}var g={};g[o]=function(){return this};var b=Object.getPrototypeOf,w=b&&b(b(C([])));w&&w!==n&&r.call(w,o)&&(g=w);var j=x.prototype=v.prototype=Object.create(g);function k(e){["next","throw","return"].forEach((function(t){u(e,t,(function(e){return this._invoke(t,e)}))}))}function S(e,t){function n(i,o,a,s){var u=c(e[i],e,o);if("throw"!==u.type){var l=u.arg,f=l.value;return f&&"object"==typeof f&&r.call(f,"__await")?t.resolve(f.__await).then((function(e){n("next",e,a,s)}),(function(e){n("throw",e,a,s)})):t.resolve(f).then((function(e){l.value=e,a(l)}),(function(e){return n("throw",e,a,s)}))}s(u.arg)}var i;this._invoke=function(e,r){function o(){return new t((function(t,i){n(e,r,t,i)}))}return i=i?i.then(o,o):o()}}function _(e,n){var r=e.iterator[n.method];if(r===t){if(n.delegate=null,"throw"===n.method){if(e.iterator.return&&(n.method="return",n.arg=t,_(e,n),"throw"===n.method))return h;n.method="throw",n.arg=new TypeError("The iterator does not provide a 'throw' method")}return h}var i=c(r,e.iterator,n.arg);if("throw"===i.type)return n.method="throw",n.arg=i.arg,n.delegate=null,h;var o=i.arg;return o?o.done?(n[e.resultName]=o.value,n.next=e.nextLoc,"return"!==n.method&&(n.method="next",n.arg=t),n.delegate=null,h):o:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,h)}function O(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function E(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function N(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(O,this),this.reset(!0)}function C(e){if(e){var n=e[o];if(n)return n.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var i=-1,a=function n(){for(;++i<e.length;)if(r.call(e,i))return n.value=e[i],n.done=!1,n;return n.value=t,n.done=!0,n};return a.next=a}}return{next:P}}function P(){return{value:t,done:!0}}return y.prototype=j.constructor=x,x.constructor=y,y.displayName=u(x,s,"GeneratorFunction"),e.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===y||"GeneratorFunction"===(t.displayName||t.name))},e.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,x):(e.__proto__=x,u(e,s,"GeneratorFunction")),e.prototype=Object.create(j),e},e.awrap=function(e){return{__await:e}},k(S.prototype),S.prototype[a]=function(){return this},e.AsyncIterator=S,e.async=function(t,n,r,i,o){void 0===o&&(o=Promise);var a=new S(l(t,n,r,i),o);return e.isGeneratorFunction(n)?a:a.next().then((function(e){return e.done?e.value:a.next()}))},k(j),u(j,s,"Generator"),j[o]=function(){return this},j.toString=function(){return"[object Generator]"},e.keys=function(e){var t=[];for(var n in e)t.push(n);return t.reverse(),function n(){for(;t.length;){var r=t.pop();if(r in e)return n.value=r,n.done=!1,n}return n.done=!0,n}},e.values=C,N.prototype={constructor:N,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=t,this.done=!1,this.delegate=null,this.method="next",this.arg=t,this.tryEntries.forEach(E),!e)for(var n in this)"t"===n.charAt(0)&&r.call(this,n)&&!isNaN(+n.slice(1))&&(this[n]=t)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var n=this;function i(r,i){return s.type="throw",s.arg=e,n.next=r,i&&(n.method="next",n.arg=t),!!i}for(var o=this.tryEntries.length-1;o>=0;--o){var a=this.tryEntries[o],s=a.completion;if("root"===a.tryLoc)return i("end");if(a.tryLoc<=this.prev){var u=r.call(a,"catchLoc"),l=r.call(a,"finallyLoc");if(u&&l){if(this.prev<a.catchLoc)return i(a.catchLoc,!0);if(this.prev<a.finallyLoc)return i(a.finallyLoc)}else if(u){if(this.prev<a.catchLoc)return i(a.catchLoc,!0)}else{if(!l)throw new Error("try statement without catch or finally");if(this.prev<a.finallyLoc)return i(a.finallyLoc)}}}},abrupt:function(e,t){for(var n=this.tryEntries.length-1;n>=0;--n){var i=this.tryEntries[n];if(i.tryLoc<=this.prev&&r.call(i,"finallyLoc")&&this.prev<i.finallyLoc){var o=i;break}}o&&("break"===e||"continue"===e)&&o.tryLoc<=t&&t<=o.finallyLoc&&(o=null);var a=o?o.completion:{};return a.type=e,a.arg=t,o?(this.method="next",this.next=o.finallyLoc,h):this.complete(a)},complete:function(e,t){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&t&&(this.next=t),h},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),E(n),h}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var i=r.arg;E(n)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(e,n,r){return this.delegate={iterator:C(e),resultName:n,nextLoc:r},"next"===this.method&&(this.arg=t),h}},e}(e.exports);try{regeneratorRuntime=t}catch(e){Function("r","regeneratorRuntime = r")(t)}},804:e=>{"use strict";e.exports=React}},n={};function r(e){var i=n[e];if(void 0!==i)return i.exports;var o=n[e]={exports:{}};return t[e](o,o.exports,r),o.exports}r.m=t,e=[],r.O=(t,n,i,o)=>{if(!n){var a=1/0;for(l=0;l<e.length;l++){for(var[n,i,o]=e[l],s=!0,u=0;u<n.length;u++)(!1&o||a>=o)&&Object.keys(r.O).every((e=>r.O[e](n[u])))?n.splice(u--,1):(s=!1,o<a&&(a=o));s&&(e.splice(l--,1),t=i())}return t}o=o||0;for(var l=e.length;l>0&&e[l-1][2]>o;l--)e[l]=e[l-1];e[l]=[n,i,o]},r.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},r.d=(e,t)=>{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{var e={172:0,106:0};r.O.j=t=>0===e[t];var t=(t,n)=>{var i,o,[a,s,u]=n,l=0;for(i in s)r.o(s,i)&&(r.m[i]=s[i]);if(u)var c=u(r);for(t&&t(n);l<a.length;l++)o=a[l],r.o(e,o)&&e[o]&&e[o][0](),e[a[l]]=0;return r.O(c)},n=self.webpackChunk=self.webpackChunk||[];n.forEach(t.bind(null,0)),n.push=t.bind(null,n.push.bind(n))})(),r.O(void 0,[106],(()=>r(446)));var i=r.O(void 0,[106],(()=>r(716)));i=r.O(i)})();
extendify-sdk/public/build/extendify-sdk.js.LICENSE.txt ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ object-assign
3
+ (c) Sindre Sorhus
4
+ @license MIT
5
+ */
6
+
7
+ /*!
8
+ Copyright (c) 2018 Jed Watson.
9
+ Licensed under the MIT License (MIT), see
10
+ http://jedwatson.github.io/classnames
11
+ */
12
+
13
+ /** @license React v17.0.2
14
+ * react-jsx-runtime.production.min.js
15
+ *
16
+ * Copyright (c) Facebook, Inc. and its affiliates.
17
+ *
18
+ * This source code is licensed under the MIT license found in the
19
+ * LICENSE file in the root directory of this source tree.
20
+ */
extendify-sdk/public/editorplus/editorplus.min.js ADDED
@@ -0,0 +1 @@
 
1
+ (()=>{var t={135:(t,e,r)=>{t.exports=r(248)},248:t=>{var e=function(t){"use strict";var e,r=Object.prototype,n=r.hasOwnProperty,o="function"==typeof Symbol?Symbol:{},i=o.iterator||"@@iterator",a=o.asyncIterator||"@@asyncIterator",c=o.toStringTag||"@@toStringTag";function u(t,e,r){return Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{u({},"")}catch(t){u=function(t,e,r){return t[e]=r}}function l(t,e,r,n){var o=e&&e.prototype instanceof v?e:v,i=Object.create(o.prototype),a=new P(n||[]);return i._invoke=function(t,e,r){var n=f;return function(o,i){if(n===h)throw new Error("Generator is already running");if(n===p){if("throw"===o)throw i;return T()}for(r.method=o,r.arg=i;;){var a=r.delegate;if(a){var c=k(a,r);if(c){if(c===y)continue;return c}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if(n===f)throw n=p,r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);n=h;var u=s(t,e,r);if("normal"===u.type){if(n=r.done?p:d,u.arg===y)continue;return{value:u.arg,done:r.done}}"throw"===u.type&&(n=p,r.method="throw",r.arg=u.arg)}}}(t,r,a),i}function s(t,e,r){try{return{type:"normal",arg:t.call(e,r)}}catch(t){return{type:"throw",arg:t}}}t.wrap=l;var f="suspendedStart",d="suspendedYield",h="executing",p="completed",y={};function v(){}function m(){}function w(){}var g={};g[i]=function(){return this};var x=Object.getPrototypeOf,b=x&&x(x(j([])));b&&b!==r&&n.call(b,i)&&(g=b);var E=w.prototype=v.prototype=Object.create(g);function L(t){["next","throw","return"].forEach((function(e){u(t,e,(function(t){return this._invoke(e,t)}))}))}function _(t,e){function r(o,i,a,c){var u=s(t[o],t,i);if("throw"!==u.type){var l=u.arg,f=l.value;return f&&"object"==typeof f&&n.call(f,"__await")?e.resolve(f.__await).then((function(t){r("next",t,a,c)}),(function(t){r("throw",t,a,c)})):e.resolve(f).then((function(t){l.value=t,a(l)}),(function(t){return r("throw",t,a,c)}))}c(u.arg)}var o;this._invoke=function(t,n){function i(){return new e((function(e,o){r(t,n,e,o)}))}return o=o?o.then(i,i):i()}}function k(t,r){var n=t.iterator[r.method];if(n===e){if(r.delegate=null,"throw"===r.method){if(t.iterator.return&&(r.method="return",r.arg=e,k(t,r),"throw"===r.method))return y;r.method="throw",r.arg=new TypeError("The iterator does not provide a 'throw' method")}return y}var o=s(n,t.iterator,r.arg);if("throw"===o.type)return r.method="throw",r.arg=o.arg,r.delegate=null,y;var i=o.arg;return i?i.done?(r[t.resultName]=i.value,r.next=t.nextLoc,"return"!==r.method&&(r.method="next",r.arg=e),r.delegate=null,y):i:(r.method="throw",r.arg=new TypeError("iterator result is not an object"),r.delegate=null,y)}function S(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function O(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function P(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(S,this),this.reset(!0)}function j(t){if(t){var r=t[i];if(r)return r.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var o=-1,a=function r(){for(;++o<t.length;)if(n.call(t,o))return r.value=t[o],r.done=!1,r;return r.value=e,r.done=!0,r};return a.next=a}}return{next:T}}function T(){return{value:e,done:!0}}return m.prototype=E.constructor=w,w.constructor=m,m.displayName=u(w,c,"GeneratorFunction"),t.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===m||"GeneratorFunction"===(e.displayName||e.name))},t.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,w):(t.__proto__=w,u(t,c,"GeneratorFunction")),t.prototype=Object.create(E),t},t.awrap=function(t){return{__await:t}},L(_.prototype),_.prototype[a]=function(){return this},t.AsyncIterator=_,t.async=function(e,r,n,o,i){void 0===i&&(i=Promise);var a=new _(l(e,r,n,o),i);return t.isGeneratorFunction(r)?a:a.next().then((function(t){return t.done?t.value:a.next()}))},L(E),u(E,c,"Generator"),E[i]=function(){return this},E.toString=function(){return"[object Generator]"},t.keys=function(t){var e=[];for(var r in t)e.push(r);return e.reverse(),function r(){for(;e.length;){var n=e.pop();if(n in t)return r.value=n,r.done=!1,r}return r.done=!0,r}},t.values=j,P.prototype={constructor:P,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=e,this.done=!1,this.delegate=null,this.method="next",this.arg=e,this.tryEntries.forEach(O),!t)for(var r in this)"t"===r.charAt(0)&&n.call(this,r)&&!isNaN(+r.slice(1))&&(this[r]=e)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var r=this;function o(n,o){return c.type="throw",c.arg=t,r.next=n,o&&(r.method="next",r.arg=e),!!o}for(var i=this.tryEntries.length-1;i>=0;--i){var a=this.tryEntries[i],c=a.completion;if("root"===a.tryLoc)return o("end");if(a.tryLoc<=this.prev){var u=n.call(a,"catchLoc"),l=n.call(a,"finallyLoc");if(u&&l){if(this.prev<a.catchLoc)return o(a.catchLoc,!0);if(this.prev<a.finallyLoc)return o(a.finallyLoc)}else if(u){if(this.prev<a.catchLoc)return o(a.catchLoc,!0)}else{if(!l)throw new Error("try statement without catch or finally");if(this.prev<a.finallyLoc)return o(a.finallyLoc)}}}},abrupt:function(t,e){for(var r=this.tryEntries.length-1;r>=0;--r){var o=this.tryEntries[r];if(o.tryLoc<=this.prev&&n.call(o,"finallyLoc")&&this.prev<o.finallyLoc){var i=o;break}}i&&("break"===t||"continue"===t)&&i.tryLoc<=e&&e<=i.finallyLoc&&(i=null);var a=i?i.completion:{};return a.type=t,a.arg=e,i?(this.method="next",this.next=i.finallyLoc,y):this.complete(a)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),y},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),O(r),y}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if("throw"===n.type){var o=n.arg;O(r)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(t,r,n){return this.delegate={iterator:j(t),resultName:r,nextLoc:n},"next"===this.method&&(this.arg=e),y}},t}(t.exports);try{regeneratorRuntime=e}catch(t){Function("r","regeneratorRuntime = r")(e)}}},e={};function r(n){var o=e[n];if(void 0!==o)return o.exports;var i=e[n]={exports:{}};return t[n](i,i.exports,r),i.exports}r.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return r.d(e,{a:e}),e},r.d=(t,e)=>{for(var n in e)r.o(e,n)&&!r.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},r.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),(()=>{"use strict";var t=r(135),e=r.n(t);const n=wp.data;function o(t,e,r,n,o,i,a){try{var c=t[i](a),u=c.value}catch(t){return void r(t)}c.done?e(u):Promise.resolve(u).then(n,o)}function i(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=function(t,e){if(!t)return;if("string"==typeof t)return a(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);"Object"===r&&t.constructor&&(r=t.constructor.name);if("Map"===r||"Set"===r)return Array.from(t);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return a(t,e)}(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var n=0,o=function(){};return{s:o,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,c=!0,u=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return c=t.done,t},e:function(t){u=!0,i=t},f:function(){try{c||null==r.return||r.return()}finally{if(u)throw i}}}}function a(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r<e;r++)n[r]=t[r];return n}function c(t){var e,r=!1;if(!(t instanceof CSSRule))return!1;var n,o=["https://dl.airtable.com"],a=i(null!==(e=t.cssText.match(/[(http(s)?)://(www.)?a-zA-Z0-9@:%._+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_+.~#?&//=]*)/g))&&void 0!==e?e:[]);try{var c=function(){var t=n.value;try{var e=new URL(t);if(!o.includes(e.origin))return r=!0,"break"}catch(e){var i=["https://","http://",".com"].some((function(e){return-1!==t.indexOf(e)})),a=-1!==t.indexOf(o[0]);if(i&&!a)return r=!0,"break"}};for(a.s();!(n=a.n()).done;){if("break"===c())break}}catch(t){a.e(t)}finally{a.f()}return r}function u(){var t,e,r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null!==(t=null===(e=window.wp.data.select("core/editor").getEditedPostAttribute("meta"))||void 0===e?void 0:e.extendify_custom_stylesheet)&&void 0!==t?t:"";if("string"==typeof r){r=r.replace(/(.eplus_styles)/g,"");var n=document.querySelector("#extendify-root"),o="extendify-custom-stylesheet";if(document.getElementById(o))document.getElementById(o).innerHTML=r;else{var i=document.createElement("style");i.id=o,i.type="text/css",i.appendChild(document.createTextNode(r)),n.appendChild(i)}}}function l(t,e){var r,n,o="",a=function(t){return e.some((function(e){return t.startsWith(e)}))},u=i(null!==(r=null==t?void 0:t.cssRules)&&void 0!==r?r:[]);try{for(u.s();!(n=u.n()).done;){var l=n.value;if(l instanceof CSSMediaRule){var s;if(c(l))continue;for(var f=null!==(s=null==l?void 0:l.cssRules)&&void 0!==s?s:[],d=[],h=0,p=Object.keys(f);h<p.length;h++){var y=p[h];a((y in f?f[y]:{}).selectorText)||d.push(y)}for(var v=0,m=d;v<m.length;v++){var w=m[v];l.deleteRule(w)}o+=l.cssText}if(l instanceof CSSStyleRule){if(c(l))continue;o+=a(l.selectorText)?l.cssText:""}}}catch(t){u.e(t)}finally{u.f()}return o}window._wpLoadBlockEditor&&window.addEventListener("extendify-sdk::template-inserted",(function(t){var e,r,o,i,a=t.detail.template,c="editorplus-template.php";if(null!=a&&null!==(e=a.fields)&&void 0!==e&&null!==(r=e.instructions)&&void 0!==r&&r.includes("enable_page_template")){var u=null!==(o=null===(i=(0,n.select)("core/editor").getEditorSettings())||void 0===i?void 0:i.availableTemplates)&&void 0!==o?o:{};Object.keys(u).includes(c)&&(0,n.dispatch)("core/editor").editPost({template:c})}})),window._wpLoadBlockEditor&&window.addEventListener("extendify-sdk::template-inserted",function(){var t,r=(t=e().mark((function t(r){var o,i,a,c,s,f,d,h,p,y,v,m;return e().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(a=r.detail.template,c=null!==(o=null==a||null===(i=a.fields)||void 0===i?void 0:i.stylesheet)&&void 0!==o?o:""){t.next=4;break}return t.abrupt("return");case 4:return t.prev=4,t.next=7,fetch(c);case 7:return t.next=9,t.sent.text();case 9:return d=t.sent,h=null!==(s=null===(f=(0,n.select)("core/editor").getEditedPostAttribute("meta"))||void 0===f?void 0:f.extendify_custom_stylesheet)&&void 0!==s?s:"",p=document.createElement("style"),y="extendify-stylesheet",p.id=y,p.type="text/css",p.appendChild(document.createTextNode(d)),document.querySelector("#extendify-root").appendChild(p),(v=document.getElementById(y)).sheet.disable=!0,m=l(null==v?void 0:v.sheet,[".extendify-",".eplus_styles",".eplus-",'[class*="extendify-"]','[class*="extendify"]']),m+=h,v.parentNode.removeChild(v),u(m),t.next=25,(0,n.dispatch)("core/editor").editPost({meta:{extendify_custom_stylesheet:m}});case 25:t.next=30;break;case 27:t.prev=27,t.t0=t.catch(4),console.error(t.t0);case 30:case"end":return t.stop()}}),t,null,[[4,27]])})),function(){var e=this,r=arguments;return new Promise((function(n,i){var a=t.apply(e,r);function c(t){o(a,n,i,c,u,"next",t)}function u(t){o(a,n,i,c,u,"throw",t)}c(void 0)}))});return function(t){return r.apply(this,arguments)}}()),window._wpLoadBlockEditor&&window.wp.domReady((function(){setTimeout((function(){return u()}),0)})),window._wpLoadBlockEditor&&window.wp.data.subscribe((function(){var t="editorplus-template.php"===window.wp.data.select("core/editor").getEditedPostAttribute("template"),e=document.querySelector(".edit-post-visual-editor__post-title-wrapper"),r=document.querySelector(".editor-styles-wrapper");e&&r&&(t?(Promise.resolve().then((function(){return e.style.display="none"})),r.style.paddingTop="0",r.style.backgroundColor="#ffffff"):(e.style.removeProperty("display"),r.style.removeProperty("padding-top"),r.style.removeProperty("background-color")))}))})()})();
extendify-sdk/public/mix-manifest.json ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ {
2
+ "/build/extendify-sdk.js": "/build/extendify-sdk.js",
3
+ "/editorplus/editorplus.min.js": "/editorplus/editorplus.min.js",
4
+ "/build/extendify-sdk.css": "/build/extendify-sdk.css"
5
+ }
extendify-sdk/readme.md ADDED
@@ -0,0 +1,51 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Extendify SDK
2
+
3
+ Notable additional tools used:
4
+ - [Laravel Mix](https://laravel-mix.com/) - A webpack wrapper + dev server
5
+ - [TailwindCSS](https://tailwindcss.com/) - A utility framework for styling. Also their [Headless UI](https://headlessui.dev/) package.
6
+ - [Zustand](https://github.com/pmndrs/zustand) - A not-opinionated state management solution
7
+
8
+ <!-- TODO: Write doc on integration into other plugins -->
9
+
10
+ ## Development guide
11
+
12
+ To get started, run `npm ci` then `npm run watch` to start a server. It's designed to proxy a server at `wordpres.test` to `localhost:3000` but we can extend that to be customizable via an environment variable or the like.
13
+
14
+ ## Project structure
15
+ Below is a short description of the main files and directories of the application.
16
+ | Directory/File | Description |
17
+ | --- | --- |
18
+ | `/routes/api.php` | This file contains exposed REST endpoints. It's a custom router and essentially lets you define a route pattern and assign a class to handle it. |
19
+ | `/app` | This contains the server related files. It could even be renamed to `server` for clarity. |
20
+ | `/app/Controllers` | This directory contains controllers for various parts of the applications, like requesting templates or plugins. |
21
+ | `/app/App.php` | This file contains information about the application. The intent is to make it dynamically generated from the readme, configs, etc |
22
+ | `/app/ApiRouter.php` | An abstraction for making interfacing with the REST api a little less painless |
23
+ | `/app/Admin.php` | Loads in our script and styles to the admin area |
24
+ | `/app/Http.php` | Handles making external API calls. Every call exits here so it's a good place to add anything you want sent on every request |
25
+ | `/app/Plugin.php` | This file was taken from JetPack. Stylistically it doens't fit th rest of the application, so it proabably needs to be refactored |
26
+ | `/app/User.php` | Helper class to set up information about the user, like create a anonymous-ish uuid |
27
+ | `/public` | Assets are compiled to the build folder. Everything else should be static. The mix-manifest.json is a list of the compiled files. It's not in use today but we could use it for dynamic script versioning |
28
+ | `/loader.php` | This file is to be used by 3rd party plugins to decide who gets to load the SDK. The SDK while in develop mode doesn't use this file. |
29
+ | `/extendify-sdk.php` | This file decides whetehr to load the applocation, then loads it. This file shoudl probably remain withoug much logic. |
30
+ | `/bootstrap.php` | This file essentially does the loading. It could probably be combined with extendify-sdk, but it's an abstraction (and used to be much larger). |
31
+
32
+
33
+ ## React application
34
+ The React part of the application starts by injecting a few buttons through the editor. You can find these in `buttons.js`. The app itself however is comprised of the main modal view, the api, some listeners to handle button clicks, and a "middleware" type section that will cycle through checks then take action based on pass/fail (this part was written quickly so will need tweaking with every addition).
35
+
36
+ TODO: complete this
37
+ | Directory/File | Description |
38
+ | --- | --- |
39
+ | `/src` | This is where the components are, as well as global listeners and helpers |
40
+ ## Build files and configurations
41
+ Below is a just a few notes on the various build files we are currenly using
42
+ | Directory/File | Description |
43
+ | --- | --- |
44
+ | `/webpack.mix.js` | This handles the build process and starts the dev server. Handled by Laravel mix. Important to note here is that it includes a listing of the WP components we ignore and configure as global objects. TODO: maybe that can be dynamic instead of populating a list |
45
+ | `/tailwind.config.js` | This contains anything style related. Instead of creating a custom class, you should add the the config and let Tailwind build the class |
46
+ | `/phpcs.xml.dist` | This does some basic linting and security linting on PHP files. The config is highly customized. |
47
+ | `/.editorconfig` | Your editor should be able to auto adapt to these settings. |
48
+ | `/.eslintrc.js` | A very opinionated style guide. |
49
+
50
+ ## Testing
51
+ Coming soon!
extendify-sdk/readme.txt ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ === Extendify Sdk ===
2
+ Requires at least: 5.4
3
+ Stable tag: 7.1
4
+ Requires PHP: 5.6
5
+ Tested up to: 5.7.0
extendify-sdk/routes/api.php ADDED
@@ -0,0 +1,43 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Api routes
4
+ */
5
+
6
+ if (!defined('ABSPATH')) {
7
+ die('No direct access.');
8
+ }
9
+
10
+ use Extendify\ExtendifySdk\ApiRouter;
11
+ use Extendify\ExtendifySdk\Controllers\AuthController;
12
+ use Extendify\ExtendifySdk\Controllers\MetaController;
13
+ use Extendify\ExtendifySdk\Controllers\PingController;
14
+ use Extendify\ExtendifySdk\Controllers\UserController;
15
+ use Extendify\ExtendifySdk\Controllers\PluginController;
16
+ use Extendify\ExtendifySdk\Controllers\TaxonomyController;
17
+ use Extendify\ExtendifySdk\Controllers\TemplateController;
18
+
19
+ \add_action(
20
+ 'rest_api_init',
21
+ function () {
22
+ ApiRouter::get('/active-plugins', [PluginController::class, 'active']);
23
+ ApiRouter::get('/plugins', [PluginController::class, 'index']);
24
+ ApiRouter::post('/plugins', [PluginController::class, 'install']);
25
+
26
+ ApiRouter::get('/taxonomies', [TaxonomyController::class, 'index']);
27
+
28
+ ApiRouter::post('/templates', [TemplateController::class, 'index']);
29
+ ApiRouter::post('/templates/(?P<template_id>[a-zA-Z0-9-]+)', [TemplateController::class, 'ping']);
30
+ ApiRouter::post('/related', [TemplateController::class, 'related']);
31
+
32
+ ApiRouter::get('/user', [UserController::class, 'show']);
33
+ ApiRouter::post('/user', [UserController::class, 'store']);
34
+ ApiRouter::get('/user-meta', [UserController::class, 'meta']);
35
+ ApiRouter::post('/register-mailing-list', [UserController::class, 'mailingList']);
36
+
37
+ ApiRouter::post('/register', [AuthController::class, 'register']);
38
+ ApiRouter::post('/login', [AuthController::class, 'login']);
39
+
40
+ ApiRouter::get('/meta-data', [MetaController::class, 'getAll']);
41
+ ApiRouter::post('/simple-ping', [PingController::class, 'ping']);
42
+ }
43
+ );
extendify-sdk/src/ExtendifyLibrary.js ADDED
@@ -0,0 +1,38 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import { useEffect, useCallback } from '@wordpress/element'
2
+ import { useGlobalStore } from './state/GlobalState'
3
+ import { useUserStore } from './state/User'
4
+ import MainWindow from './pages/parts/MainWindow'
5
+
6
+ export default function ExtendifyLibrary({ show = false }) {
7
+ const setOpen = useGlobalStore(state => state.setOpen)
8
+ const showLibrary = useCallback(() => setOpen(true), [setOpen])
9
+ const hideLibrary = useCallback(() => {
10
+ setOpen(false)
11
+ }, [setOpen])
12
+
13
+ useEffect(() => {
14
+ show && setOpen(true)
15
+ }, [show, setOpen])
16
+
17
+ // Here for legacy reasons, we're checking if they have the old key stored
18
+ useEffect(() => {
19
+ if (window.localStorage.getItem('etfy_library__key')) {
20
+ useUserStore.setState({
21
+ apiKey: 'any-key-will-work-during-beta',
22
+ })
23
+ }
24
+ return () => window.localStorage.removeItem('etfy_library__key')
25
+ }, [])
26
+
27
+ // Let the visibility to be controlled from outside the application
28
+ useEffect(() => {
29
+ window.addEventListener('extendify-sdk::open-library', showLibrary)
30
+ window.addEventListener('extendify-sdk::close-library', hideLibrary)
31
+ return () => {
32
+ window.removeEventListener('extendify-sdk::open-library', showLibrary)
33
+ window.removeEventListener('extendify-sdk::close-library', hideLibrary)
34
+ }
35
+ }, [hideLibrary, showLibrary])
36
+
37
+ return <MainWindow/>
38
+ }
extendify-sdk/src/api/General.js ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import { Axios as api } from './axios'
2
+
3
+ export const General = {
4
+ metaData() {
5
+ return api.get('meta-data')
6
+ },
7
+ ping(action) {
8
+ return api.post('simple-ping', {
9
+ action,
10
+ })
11
+ },
12
+ }
extendify-sdk/src/api/Plugins.js ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import { Axios as api } from './axios'
2
+
3
+ export const Plugins = {
4
+ getInstalled() {
5
+ return api.get('plugins')
6
+ },
7
+ installAndActivate(plugins = []) {
8
+ const formData = new FormData()
9
+ formData.append('plugins', JSON.stringify(plugins))
10
+ return api.post(
11
+ 'plugins', formData, {
12
+ headers: {
13
+ 'Content-Type': 'multipart/form-data',
14
+ },
15
+ },
16
+ )
17
+ },
18
+ getActivated() {
19
+ return api.get('active-plugins')
20
+ },
21
+ }
extendify-sdk/src/api/Taxonomies.js ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
1
+ import { Axios as api } from './axios'
2
+
3
+ export const Taxonomies = {
4
+ get() {
5
+ return api.get('taxonomies')
6
+ },
7
+ }
extendify-sdk/src/api/Templates.js ADDED
@@ -0,0 +1,65 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import { createTemplatesFilterFormula } from '../util/airtable'
2
+ import { Axios as api } from './axios'
3
+ import { templates as config } from '../config'
4
+
5
+ let count = 0
6
+
7
+ export const Templates = {
8
+ async get(searchParams, options = {}) {
9
+ count++
10
+ const templates = await api.post('templates', {
11
+ filterByFormula: createTemplatesFilterFormula(searchParams),
12
+ pageSize: options?.pageSize ?? config.templatesPerRequest,
13
+ categories: searchParams.taxonomies,
14
+ search: searchParams.search,
15
+ type: searchParams.type,
16
+ offset: options.offset ?? '',
17
+ initial: count === 1,
18
+ request_count: count,
19
+ })
20
+ return templates
21
+ },
22
+ related(
23
+ template, queryType, wantedType,
24
+ ) {
25
+ return api.post('related', {
26
+ pageSize: 4,
27
+ query_type: queryType,
28
+ wanted_type: wantedType,
29
+ categories: template?.fields?.tax_categories,
30
+ pattern_types: template?.fields?.tax_pattern_types,
31
+ style: template?.fields?.tax_style,
32
+ type: template?.fields?.type,
33
+ template_id: template?.id,
34
+ })
35
+ },
36
+
37
+ // TODO: Refactor this later to combine the following three
38
+ maybeImport(template) {
39
+ return api.post(`templates/${template.id}`, {
40
+ template_id: template.id,
41
+ maybe_import: true,
42
+ type: template.fields.type,
43
+ pageSize: config.templatesPerRequest,
44
+ template_name: template.fields?.title,
45
+ })
46
+ },
47
+ single(template) {
48
+ return api.post(`templates/${template.id}`, {
49
+ template_id: template.id,
50
+ single: true,
51
+ type: template.fields.type,
52
+ pageSize: config.templatesPerRequest,
53
+ template_name: template.fields?.title,
54
+ })
55
+ },
56
+ import(template) {
57
+ return api.post(`templates/${template.id}`, {
58
+ template_id: template.id,
59
+ imported: true,
60
+ type: template.fields.type,
61
+ pageSize: config.templatesPerRequest,
62
+ template_name: template.fields?.title,
63
+ })
64
+ },
65
+ }
extendify-sdk/src/api/User.js ADDED
@@ -0,0 +1,59 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import { Axios as api } from './axios'
2
+
3
+ export const User = {
4
+ getData() {
5
+ return api.get('user')
6
+ },
7
+ getMeta(key) {
8
+ return api.get('user-meta', {
9
+ params: {
10
+ key,
11
+ },
12
+ })
13
+ },
14
+ authenticate(email, key) {
15
+ const formData = new FormData()
16
+ formData.append('email', email)
17
+ formData.append('key', key)
18
+ return api.post(
19
+ 'login', formData, {
20
+ headers: {
21
+ 'Content-Type': 'multipart/form-data',
22
+ },
23
+ },
24
+ )
25
+ },
26
+ register(email) {
27
+ const formData = new FormData()
28
+ formData.append('data', email)
29
+ return api.post(
30
+ 'register', formData, {
31
+ headers: {
32
+ 'Content-Type': 'multipart/form-data',
33
+ },
34
+ },
35
+ )
36
+ },
37
+ setData(data) {
38
+ const formData = new FormData()
39
+ formData.append('data', JSON.stringify(data))
40
+ return api.post(
41
+ 'user', formData, {
42
+ headers: {
43
+ 'Content-Type': 'multipart/form-data',
44
+ },
45
+ },
46
+ )
47
+ },
48
+ registerMailingList(email) {
49
+ const formData = new FormData()
50
+ formData.append('email', email)
51
+ return api.post(
52
+ 'register-mailing-list', formData, {
53
+ headers: {
54
+ 'Content-Type': 'multipart/form-data',
55
+ },
56
+ },
57
+ )
58
+ },
59
+ }
extendify-sdk/src/api/axios.js ADDED
@@ -0,0 +1,60 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import axios from 'axios'
2
+ import { useUserStore } from '../state/User'
3
+
4
+ const Axios = axios.create({
5
+ baseURL: window.extendifySdkData.root,
6
+ headers: {
7
+ 'X-WP-Nonce': window.extendifySdkData.nonce,
8
+ 'X-Requested-With': 'XMLHttpRequest',
9
+ 'X-Extendify': true,
10
+ },
11
+ })
12
+
13
+ function findResponse(response) {
14
+ return Object.prototype.hasOwnProperty.call(response, 'data')
15
+ ? response.data
16
+ : response
17
+ }
18
+
19
+ function handleErrors(error) {
20
+ if (!error.response) {
21
+ return
22
+ }
23
+ console.error(error.response)
24
+ // TODO: add a global error message system
25
+ return Promise.reject(findResponse(error.response))
26
+ }
27
+
28
+ function addDefaults(request) {
29
+ if (request.data) {
30
+ request.data.remaining_imports = useUserStore.getState().remainingImports()
31
+ request.data.entry_point = useUserStore.getState().entryPoint
32
+ request.data.total_imports = useUserStore.getState().imports
33
+ }
34
+ return request
35
+ }
36
+
37
+ function checkDevMode(request) {
38
+ request.headers['X-Extendify-Dev-Mode'] = window.location.search.indexOf('DEVMODE') > -1
39
+ request.headers['X-Extendify-Local-Mode'] = window.location.search.indexOf('LOCALMODE') > -1
40
+ return request
41
+ }
42
+
43
+ function checkForSoftError(response) {
44
+ if (Object.prototype.hasOwnProperty.call(response, 'soft_error')) {
45
+ window.dispatchEvent(new CustomEvent('extendify-sdk::softerror-encountered', {
46
+ detail: response.soft_error,
47
+ bubbles: true,
48
+ }))
49
+ }
50
+ return response
51
+ }
52
+
53
+ Axios.interceptors.response.use((response) => checkForSoftError(findResponse(response)),
54
+ (error) => handleErrors(error))
55
+
56
+ // TODO: setup a pipe function instead of this nested pattern
57
+ Axios.interceptors.request.use((request) => checkDevMode(addDefaults(request)),
58
+ (error) => error)
59
+
60
+ export { Axios }
extendify-sdk/src/app.css ADDED
@@ -0,0 +1,52 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ @tailwind base;
2
+ @tailwind components;
3
+ @tailwind utilities;
4
+
5
+ /* Adding CSS classes should be done with consideration and rarely */
6
+ .extendify-sdk *, .extendify-sdk *:after, .extendify-sdk *:before {
7
+ box-sizing: border-box;
8
+ border: 0 solid #e5e7eb;
9
+ }
10
+ .extendify-sdk .button-focus {
11
+ @apply focus:ring-2 focus:ring-wp-theme-500 ring-offset-1 outline-none;
12
+ }
13
+ .extendify-sdk .button-focus-big-green {
14
+ @apply focus:ring-4 focus:ring-offset-4 focus:ring-extendify-main outline-none;
15
+ }
16
+ .extendify-sdk select.button-focus,
17
+ .extendify-sdk input.button-focus {
18
+ @apply focus:border-transparent focus:outline-none;
19
+ }
20
+
21
+ .button-extendify-main {
22
+ @apply bg-extendify-main button-focus cursor-pointer transition duration-200 p-1.5 px-3 text-white hover:text-white no-underline hover:bg-gray-900 active:bg-gray-900 active:text-white focus:text-white whitespace-nowrap;
23
+ }
24
+ #extendify-search-input:focus ~ svg,
25
+ #extendify-search-input:not(:placeholder-shown) ~ svg {
26
+ @apply hidden;
27
+ }
28
+ #extendify-search-input::-webkit-textfield-decoration-container {
29
+ @apply mr-3;
30
+ }
31
+
32
+ /* WP tweaks and overrides */
33
+ .extendify-sdk .components-panel__body > .components-panel__body-title {
34
+ /* Override WP aggressive boder:none and border:0 */
35
+ border-bottom: 1px solid #e0e0e0 !important;
36
+ @apply bg-transparent;
37
+ }
38
+ .extendify-sdk .components-modal__header {
39
+ @apply border-b border-gray-300;
40
+ }
41
+
42
+ /* Special input animation */
43
+ .extendify-special-input:placeholder-shown ~ label {
44
+ @apply top-1.5;
45
+ @apply text-sm;
46
+ @apply text-gray-600;
47
+ }
48
+ .extendify-special-input:focus ~ label {
49
+ @apply -top-4;
50
+ @apply text-xs;
51
+ @apply text-extendify-main;
52
+ }
extendify-sdk/src/app.js ADDED
@@ -0,0 +1,31 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import ExtendifyLibrary from './ExtendifyLibrary'
2
+ import { render } from '@wordpress/element'
3
+ import { useWantedTemplateStore } from './state/Importing'
4
+ import { injectTemplate } from './util/templateInjection'
5
+ import './buttons'
6
+ import './listeners'
7
+
8
+ window._wpLoadBlockEditor && window.wp.domReady(() => {
9
+ // Insert into the editor (note: Modal opens in a portal)
10
+ const extendify = Object.assign(document.createElement('div'), { id: 'extendify-root' })
11
+ document.body.append(extendify)
12
+ render(<ExtendifyLibrary/>, extendify)
13
+
14
+ // Add an extra div to use for utility modals, etc
15
+ extendify.parentNode.insertBefore(Object.assign(document.createElement('div'), { id: 'extendify-util' }),
16
+ extendify.nextSibling)
17
+
18
+ // Insert a template on page load if it exists in localstorage
19
+ // Note 6/28/21 - this was moved to after the render to possibly
20
+ // fix a bug where imports would go from 3->0.
21
+ if (useWantedTemplateStore.getState().importOnLoad) {
22
+ const template = useWantedTemplateStore.getState().wantedTemplate
23
+ setTimeout(() => { injectTemplate(template) }, 0)
24
+ }
25
+
26
+ // Reset template state after checking if we need an import
27
+ useWantedTemplateStore.setState({
28
+ importOnLoad: false,
29
+ wantedTemplate: {},
30
+ })
31
+ })
extendify-sdk/src/buttons.js ADDED
@@ -0,0 +1,115 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import { __ } from '@wordpress/i18n'
2
+ import { renderToString } from '@wordpress/element'
3
+ import { registerPlugin } from '@wordpress/plugins'
4
+ import { openModal } from './util/general'
5
+ import { PluginSidebarMoreMenuItem } from '@wordpress/edit-post'
6
+ import { User } from './api/User'
7
+
8
+ const openLibrary = (event) => {
9
+ openModal(event.target.closest('[data-extendify-identifier]')?.dataset?.extendifyIdentifier)
10
+ }
11
+
12
+ // This returns true if the user object is null (Library never opened), or if it's enabled in the user settings
13
+ const isLibraryEnabled = () => window.extendifySdkData.user === null || window.extendifySdkData?.user?.state?.enabled
14
+
15
+ const mainButton = <div id="extendify-templates-inserter">
16
+ <button
17
+ style="background:#D9F1EE;color:#1e1e1e;border:1px solid #949494;font-weight:bold;font-size:14px;padding:8px;margin-right:8px"
18
+ type="button"
19
+ data-extendify-identifier="main-button"
20
+ id="extendify-templates-inserter-btn"
21
+ className="components-button">
22
+ <svg style="margin-right:0.5rem" width="20" height="20" viewBox="0 0 103 103" fill="none" xmlns="http://www.w3.org/2000/svg">
23
+ <rect y="25.75" width="70.8125" height="77.25" fill="#000000"/>
24
+ <rect x="45.0625" width="57.9375" height="57.9375" fill="#37C2A2"/>
25
+ </svg>
26
+ {__('Library', 'extendify-sdk')}
27
+ </button>
28
+ </div>
29
+
30
+ // Add the MAIN button when Gutenberg is available and ready
31
+ window._wpLoadBlockEditor && window.wp.data.subscribe(() => {
32
+ setTimeout(() => {
33
+ // Redundant extra check added because of a bug where the above check wasn't working
34
+ if (!isLibraryEnabled()) {
35
+ return
36
+ }
37
+ if (document.getElementById('extendify-templates-inserter-btn')) {
38
+ return
39
+ }
40
+ if (!document.querySelector('.edit-post-header-toolbar')) {
41
+ return
42
+ }
43
+ document.querySelector('.edit-post-header-toolbar').insertAdjacentHTML('beforeend', renderToString(mainButton))
44
+ document.getElementById('extendify-templates-inserter-btn').addEventListener('click', openLibrary)
45
+ }, 0)
46
+ })
47
+
48
+ // The CTA button inside patterns
49
+ window._wpLoadBlockEditor && window.wp.data.subscribe(() => {
50
+ setTimeout(() => {
51
+ // Redundant extra check added because of a bug where the above check wasn't working
52
+ if (!isLibraryEnabled()) {
53
+ return
54
+ }
55
+ if (!document.querySelector('[id$=patterns-view]')) {
56
+ return
57
+ }
58
+ if (document.getElementById('extendify-cta-button')) {
59
+ return
60
+ }
61
+ const ctaButton = <div>
62
+ <button
63
+ id="extendify-cta-button"
64
+ style="margin:1rem 1rem 0"
65
+ data-extendify-identifier="patterns-cta"
66
+ className="components-button is-secondary">
67
+ {__('Discover more patterns in Extendify Library', 'extendify-sdk')}
68
+ </button>
69
+ </div>
70
+ document.querySelector('[id$=patterns-view]').insertAdjacentHTML('afterbegin', renderToString(ctaButton))
71
+ document.getElementById('extendify-cta-button').addEventListener('click', openLibrary)
72
+ }, 0)
73
+ })
74
+
75
+ // The right dropdown side menu
76
+ const SideMenuButton = () => <PluginSidebarMoreMenuItem
77
+ data-extendify-identifier="sidebar-button"
78
+ onClick={openLibrary}
79
+ icon={
80
+ <span className="components-menu-items__item-icon">
81
+ <svg width="20" height="20" viewBox="0 0 103 103" fill="none" xmlns="http://www.w3.org/2000/svg">
82
+ <rect y="25.75" width="70.8125" height="77.25" fill="#000000"/>
83
+ <rect x="45.0625" width="57.9375" height="57.9375" fill="#37C2A2"/>
84
+ </svg>
85
+ </span>
86
+ }
87
+ >
88
+ {__('Library', 'extendify-sdk')}
89
+ </PluginSidebarMoreMenuItem>
90
+ window._wpLoadBlockEditor && isLibraryEnabled() && registerPlugin('extendify-temps-more-menu-trigger', {
91
+ render: SideMenuButton,
92
+ })
93
+
94
+ // This will add a button to enable or disable the library button
95
+ const LibraryEnableDisable = () => <PluginSidebarMoreMenuItem
96
+ onClick={async () => {
97
+ // This works even when the Library hasn't been opened yet
98
+ // because User.getData() will build a barebones User object
99
+ let userData = await User.getData()
100
+ userData = JSON.parse(userData)
101
+ userData.state.enabled = !isLibraryEnabled()
102
+ await User.setData(JSON.stringify(Object.assign({}, userData)))
103
+ location.reload()
104
+ }}
105
+ icon={<></>}
106
+ >
107
+ {isLibraryEnabled()
108
+ ? __('Disable Extendify', 'extendify-sdk')
109
+ : __('Enable Extendify', 'extendify-sdk')}
110
+ </PluginSidebarMoreMenuItem>
111
+
112
+ // Load this button always, which is used to enable or disable
113
+ window._wpLoadBlockEditor && registerPlugin('extendify-settings-enable-disable', {
114
+ render: LibraryEnableDisable,
115
+ })
extendify-sdk/src/components/ImportButton.js ADDED
@@ -0,0 +1,88 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import {
2
+ useEffect, useState, useRef,
3
+ } from '@wordpress/element'
4
+ import { useTemplatesStore } from '../state/Templates'
5
+ import { AuthorizationCheck, Middleware } from '../middleware'
6
+ import { injectTemplateBlocks } from '../util/templateInjection'
7
+ import { useWantedTemplateStore } from '../state/Importing'
8
+ import { useUserStore } from '../state/User'
9
+ import { useGlobalStore } from '../state/GlobalState'
10
+ import { __, sprintf } from '@wordpress/i18n'
11
+ import { Templates as TemplatesApi } from '../api/Templates'
12
+ import { render } from '@wordpress/element'
13
+ import ExtendifyLibrary from '../ExtendifyLibrary'
14
+
15
+ const canImportMiddleware = Middleware(['NeedsRegistrationModal', 'hasRequiredPlugins', 'hasPluginsActivated'])
16
+ export function ImportButton({ template }) {
17
+ const importButtonRef = useRef(null)
18
+ const activeTemplateBlocks = useTemplatesStore(state => state.activeTemplateBlocks)
19
+ const canImport = useUserStore(state => state.canImport)
20
+ const apiKey = useUserStore(state => state.apiKey)
21
+ const setOpen = useGlobalStore(state => state.setOpen)
22
+ const [importing, setImporting] = useState(false)
23
+ const [middlewareChecked, setMiddlewareChecked] = useState(false)
24
+ const setWanted = useWantedTemplateStore(state => state.setWanted)
25
+ const importTemplates = () => {
26
+ AuthorizationCheck(canImportMiddleware.stack).then(() => {
27
+ // Give it a bit of time for the importing state to render
28
+ setTimeout(() => {
29
+ injectTemplateBlocks(activeTemplateBlocks, template)
30
+ .then(() => setOpen(false))
31
+ .then(() => render(<ExtendifyLibrary/>, document.getElementById('extendify-root')))
32
+ }, 100)
33
+ })
34
+ }
35
+
36
+ useEffect(() => {
37
+ canImportMiddleware.check(template).then(() => setMiddlewareChecked(true))
38
+ return () => canImportMiddleware.reset() && setMiddlewareChecked(false)
39
+ }, [template])
40
+
41
+ useEffect(() => {
42
+ if (!importing && importButtonRef.current) {
43
+ importButtonRef.current.focus()
44
+ }
45
+ }, [importButtonRef, importing, middlewareChecked])
46
+
47
+ const importTemplate = () => {
48
+ // This was added here to make the call fire before rendering is finished.
49
+ // This is because some users would drop this call otherwise.
50
+ TemplatesApi.maybeImport(template)
51
+ setImporting(true)
52
+ setWanted(template)
53
+ importTemplates()
54
+ }
55
+
56
+ if (!middlewareChecked || !Object.keys(activeTemplateBlocks).length) {
57
+ return ''
58
+ }
59
+
60
+ if (!apiKey && !canImport()) {
61
+ return <a
62
+ ref={importButtonRef}
63
+ className="button-extendify-main text-lg sm:text-2xl py-1.5 px-3 sm:py-2.5 sm:px-5"
64
+ target="_blank"
65
+ href={`https://extendify.com/pricing?utm_source=${window.extendifySdkData.source}&utm_medium=library&utm_campaign=sign_up&utm_content=single_page`}
66
+ rel="noreferrer">
67
+ {__('Sign up now', 'extendify-sdk')}
68
+ </a>
69
+ }
70
+
71
+ if (importing) {
72
+ return <button
73
+ type="button"
74
+ disabled
75
+ className="components-button is-secondary text-lg sm:text-2xl h-auto py-1.5 px-3 sm:py-2.5 sm:px-5"
76
+ onClick={() => {}}>
77
+ {__('Importing...', 'extendify-sdk')}
78
+ </button>
79
+ }
80
+
81
+ return <button
82
+ ref={importButtonRef}
83
+ type="button"
84
+ className="components-button is-primary text-lg sm:text-2xl h-auto py-1.5 px-3 sm:py-2.5 sm:px-5"
85
+ onClick={() => importTemplate()}>
86
+ {sprintf(__('Add %s', 'extendify-sdk'), template.fields.type)}
87
+ </button>
88
+ }
extendify-sdk/src/components/LoginInterface.js ADDED
@@ -0,0 +1,114 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import { useUserStore } from '../state/User'
2
+ import { useState, useEffect } from '@wordpress/element'
3
+ import { User as UserApi } from '../api/User'
4
+ import { __ } from '@wordpress/i18n'
5
+ import { useGlobalStore } from '../state/GlobalState'
6
+ import classNames from 'classnames'
7
+
8
+ export default function LoginInterface() {
9
+ const [apiKey, setApiKey] = useState(useUserStore.getState().apiKey)
10
+ const [email, setEmail] = useState(useUserStore.getState().email)
11
+ const [feedback, setFeedback] = useState('')
12
+ const [feedbackType, setFeedbackType] = useState('info')
13
+ const [possibleEmail, setPossibleEmail] = useState('')
14
+
15
+ // This will reset the default error state to info
16
+ useEffect(() => () => setFeedbackType('info'), [])
17
+
18
+ const confirmKey = async (event) => {
19
+ event.preventDefault()
20
+ setFeedback('')
21
+ const emailToSend = email.length
22
+ ? email
23
+ : possibleEmail
24
+ const { token, error, exception, message } = await UserApi.authenticate(emailToSend, apiKey)
25
+
26
+ if (typeof message !== 'undefined') {
27
+ setFeedbackType('error')
28
+ return setFeedback(message.length
29
+ ? message
30
+ : 'Error: Are you interacting with the wrong server?')
31
+ }
32
+
33
+ if (error || exception) {
34
+ setFeedbackType('error')
35
+ return setFeedback(error.length
36
+ ? error
37
+ : exception)
38
+ }
39
+
40
+ if (!token || typeof token !== 'string') {
41
+ setFeedbackType('error')
42
+ return setFeedback(__('Something went wrong', 'extendify-sdk'))
43
+ }
44
+
45
+ setFeedbackType('success')
46
+ setFeedback('Success!')
47
+ await new Promise((resolve) => setTimeout(resolve, 1500))
48
+ useUserStore.setState({
49
+ // email: emailToSend,
50
+ apiKey: token,
51
+ })
52
+ useGlobalStore.setState({
53
+ currentPage: 'main',
54
+ })
55
+ }
56
+
57
+ useEffect(() => {
58
+ if (!email) {
59
+ UserApi.getMeta('user_email')
60
+ .then((value) => setPossibleEmail(value))
61
+ }
62
+ }, [email])
63
+
64
+ return <section className="w-96 text-left md:-mt-32">
65
+ <h1 className="border-b border-gray-900 mb-12 pb-4">{__('Welcome', 'extendify-sdk')}</h1>
66
+ {feedback &&
67
+ <div className={classNames({
68
+ 'border-b pb-6 mb-6 -mt-6': true,
69
+ 'border-gray-900 text-gray-900': feedbackType === 'info',
70
+ 'border-wp-alert-red text-wp-alert-red': feedbackType === 'error',
71
+ 'border-extendify-main text-extendify-main': feedbackType === 'success',
72
+ })}>
73
+ {feedback}
74
+ </div>
75
+ }
76
+ <form onSubmit={confirmKey} className=" space-y-6">
77
+ <div className="flex items-center">
78
+ <label htmlFor="extendifysdk-login-email" className="w-32 font-bold">
79
+ {__('Email:', 'extendify-sdk')}
80
+ </label>
81
+ <input
82
+ id="extendifysdk-login-email"
83
+ name="extendifysdk-login-email"
84
+ type="email"
85
+ className="border px-2 w-full"
86
+ placeholder="Email"
87
+ value={email.length
88
+ ? email
89
+ : possibleEmail}
90
+ onChange={(event) => setEmail(event.target.value)}/>
91
+ </div>
92
+ <div className="flex items-center">
93
+ <label htmlFor="extendifysdk-login-license" className="w-32 font-bold">
94
+ {__('License:', 'extendify-sdk')}
95
+ </label>
96
+ <input
97
+ id="extendifysdk-login-license"
98
+ name="extendifysdk-login-email"
99
+ type="text"
100
+ className="border px-2 w-full"
101
+ placeholder="License key"
102
+ value={apiKey}
103
+ onChange={(event) => setApiKey(event.target.value)}/>
104
+ </div>
105
+ <div className="flex justify-end">
106
+ <button
107
+ type="submit"
108
+ className="button-extendify-main p-3 px-4">
109
+ {__('Sign in', 'extendify-sdk')}
110
+ </button>
111
+ </div>
112
+ </form>
113
+ </section>
114
+ }
extendify-sdk/src/components/Loginbutton.js ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import { useGlobalStore } from '../state/GlobalState'
2
+ import { useUserStore } from '../state/User'
3
+ import { __ } from '@wordpress/i18n'
4
+
5
+ export default function LoginButton() {
6
+ const apiKey = useUserStore(state => state.apiKey)
7
+ if (apiKey.length === 0) {
8
+ return <button
9
+ type="button"
10
+ className="components-button inline-block flex-1 text-center hover:bg-gray-100"
11
+ onClick={() => useGlobalStore.setState({
12
+ currentPage: 'login',
13
+ })}>
14
+ {__('Log into account', 'extendify-sdk')}
15
+ </button>
16
+ }
17
+
18
+ // This code currently won't render unless in DEVMODE
19
+ return <button
20
+ type="button"
21
+ className="components-button inline-block flex-1 text-center hover:bg-gray-100"
22
+ onClick={() => useUserStore.setState({
23
+ apiKey: '',
24
+ })}>{__('Log out', 'extendify-sdk')}</button>
25
+ }
extendify-sdk/src/components/SearchPredict.js ADDED
@@ -0,0 +1,89 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import {
2
+ useEffect, useState, useRef,
3
+ } from '@wordpress/element'
4
+ import Fuse from 'fuse.js'
5
+
6
+ export default function SearchPredict({ value, setValue, list, label, touched }) {
7
+ const searchRef = useRef()
8
+ const wasFocused = useRef(false)
9
+ const [componentId] = useState('extendify-label' + Date.now() + Math.floor(Math.random() * 1000000))
10
+ const [fuzzy, setFuzzy] = useState({})
11
+ const [tempValue, setTempValue] = useState('')
12
+ const [visibleChoices, setVisibleChoices] = useState([])
13
+
14
+ const updateSearch = (term) => {
15
+ wasFocused.current = true
16
+ setTempValue(term)
17
+ filter(term)
18
+ }
19
+
20
+ const filter = (term = '') => {
21
+ if (!term) {
22
+ setVisibleChoices(list)
23
+ }
24
+ const results = fuzzy.search(term)
25
+ if (!results || !results.length) {
26
+ return
27
+ }
28
+ setVisibleChoices(results.length ? results.map(t => t.item) : list)
29
+ }
30
+
31
+ useEffect(() => {
32
+ setTempValue(value)
33
+ }, [value])
34
+
35
+ useEffect(() => {
36
+ setFuzzy(new Fuse(list, {}))
37
+ }, [list])
38
+
39
+ useEffect(() => {
40
+ if (!list.length) {
41
+ return
42
+ }
43
+ const handle = (event) => {
44
+ if (searchRef.current.isSameNode(event.target)) {
45
+ return
46
+ }
47
+ if (event.target.classList.contains(`extendify-predict-${componentId}`)) {
48
+ return setVisibleChoices([])
49
+ }
50
+ setVisibleChoices([])
51
+ if (!list.includes(searchRef.current.value)) {
52
+ setValue('')
53
+ }
54
+
55
+ // Consider the component touched when clicked away
56
+ wasFocused.current && touched()
57
+ }
58
+ document.addEventListener('click', handle)
59
+ return () => document.removeEventListener('click', handle)
60
+ }, [componentId, touched, setValue, list])
61
+
62
+ return <div className="relative max-w-md">
63
+ <input
64
+ ref={searchRef}
65
+ id={componentId}
66
+ value={tempValue || ''}
67
+ onChange={(event) => updateSearch(event.target.value)}
68
+ onFocus={() => updateSearch('')}
69
+ type="text"
70
+ disabled={!Object.keys(fuzzy).length}
71
+ className="extendify-special-input button-focus text-sm h-8 min-h-0 border border-gray-900 special-input placeholder-transparent rounded-none w-full px-2 button-focus-big-green"
72
+ placeholder={label} />
73
+ <label htmlFor={componentId} className="-top-3 bg-white absolute left-1 px-1 transition-all delay-300">
74
+ {label}
75
+ </label>
76
+ {/* TODO: this could use some accessability updates like keyboard nav, etc */}
77
+ {visibleChoices && <div className="absolute top-100 flex flex-col w-full shadow-md bg-white overflow-x-hidden left-px divide-y max-h-64 overflow-scroll">
78
+ {visibleChoices.map((cat =>
79
+ <button
80
+ key={cat}
81
+ type="button"
82
+ className={`outline-none focus:bg-gray-100 bg-white text-left p-4 text-sm border-gray-300 hover:bg-gray-100 extendify-predict-${componentId}`}
83
+ onClick={() => { setValue(cat); setTempValue(cat)}}>
84
+ {cat}
85
+ </button>
86
+ ))}
87
+ </div>}
88
+ </div>
89
+ }
extendify-sdk/src/components/TaxonomyBreadcrumbs.js ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import { useTemplatesStore } from '../state/Templates'
2
+
3
+ export default function TaxonomyBreadcrumbs() {
4
+ const searchParams = useTemplatesStore(state => state.searchParams)
5
+ const formatTitle = (title) => title.replace('tax_', '').replace(/_/g , ' ').replace(/\b\w/g, l => l.toUpperCase())
6
+ return <div className="hidden sm:flex items-start flex-col lg:flex-row -mt-2 lg:-mx-2 mb-4 lg:divide-x-2 lg:leading-none">
7
+ {Object.entries(searchParams.taxonomies).map((tax) => {
8
+ // Special exception for page templates
9
+ if (searchParams.type === 'template' && tax[0] === 'tax_pattern_types') {
10
+ return ''
11
+ }
12
+ // Special exception for plugins (like metaslider) that won't have full page templates
13
+ if (searchParams.type === 'template' && tax[0] === 'tax_features') {
14
+ return ''
15
+ }
16
+ // Special exception for page types
17
+ if (searchParams.type === 'pattern' && tax[0] === 'tax_page_types') {
18
+ return ''
19
+ }
20
+ return <div key={tax[0]} className="lg:px-2 text-left">
21
+ <span className="font-bold">{formatTitle(tax[0])}</span>: <span>{tax[1]
22
+ ? tax[1]
23
+ : 'All'}</span>
24
+ </div>
25
+ })}</div>
26
+ }
extendify-sdk/src/components/TaxonomyList.js ADDED
@@ -0,0 +1,39 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import { getPluginDescription } from '../util/general'
2
+ import { __ } from '@wordpress/i18n'
3
+
4
+ export default function TaxonomyList({ categories, styles, types, requiredPlugins }) {
5
+ return <>
6
+ {categories && <div className="w-full pb-4">
7
+ <h3 className="text-sm m-0 mb-2">{__('Categories:', 'extendify-sdk')}</h3>
8
+ <div>{categories.join(', ')}</div>
9
+ </div>}
10
+ {styles && <div className="w-full py-4">
11
+ <h3 className="text-sm m-0 my-2">{__('Styles:', 'extendify-sdk')}</h3>
12
+ <div>{styles.join(', ')}</div>
13
+ </div>}
14
+ {types && <div className="w-full py-4">
15
+ <h3 className="text-sm m-0 my-2">{__('Types:', 'extendify-sdk')}</h3>
16
+ <div>{types.join(', ')}</div>
17
+ </div>}
18
+ {/* // Hardcoded temporarily to not force EP install */}
19
+ {/* {requiredPlugins && <div className="pt-4 w-full"> */}
20
+ {requiredPlugins.filter((p) => p !== 'editorplus').length > 0 && <div className="pt-4 w-full">
21
+ <h3 className="text-sm m-0 my-2">{__('Required Plugins:', 'extendify-sdk')}</h3>
22
+ <div>
23
+ {
24
+ // Hardcoded temporarily to not force EP install
25
+ // requiredPlugins.map(p => getPluginDescription(p)).join(', ')
26
+ requiredPlugins.filter((p) => p !== 'editorplus').map(p => getPluginDescription(p)).join(', ')
27
+ }
28
+ </div>
29
+ </div>}
30
+ <div className="py-4 mt-4">
31
+ <a
32
+ href={`https://extendify.com/what-happens-when-a-template-is-added?utm_source=${window.extendifySdkData.source}&utm_medium=library&utm_campaign=sidebar`}
33
+ rel="noreferrer"
34
+ target="_blank">
35
+ {__('What happens when a template is added?', 'extendify-sdk')}
36
+ </a>
37
+ </div>
38
+ </>
39
+ }
extendify-sdk/src/components/TaxonomySection.js ADDED
@@ -0,0 +1,178 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import { PanelBody, PanelRow } from '@wordpress/components'
2
+ import classNames from 'classnames'
3
+ import { useTemplatesStore } from '../state/Templates'
4
+ import { __ } from '@wordpress/i18n'
5
+ import {
6
+ useState, useEffect, useRef, useCallback,
7
+ } from '@wordpress/element'
8
+ import { useTaxonomyStore } from '../state/Taxonomies'
9
+
10
+ export default function TaxonomySection({ taxonomy: [title, data] }) {
11
+ const updateTaxonomies = useTemplatesStore(state => state.updateTaxonomies)
12
+ const resetTaxonomy = useTemplatesStore(state => state.resetTaxonomy)
13
+ const searchParams = useTemplatesStore(state => state.searchParams)
14
+ const openedTaxonomies = useTaxonomyStore(state => state.openedTaxonomies)
15
+ const toggleOpenedTaxonomy = useTaxonomyStore(state => state.toggleOpenedTaxonomy)
16
+ const [pageTwoTerms, setPageTwoTerms] = useState({})
17
+ const [taxListHeight, setTaxListHeight] = useState({})
18
+ const pageTwo = useRef()
19
+ const pageOneFocus = useRef()
20
+ const pageTwoFocus = useRef()
21
+ const firstUpdate = useRef(true)
22
+
23
+ // This will check whether the term is current (either child or top level/has no child)
24
+ // And then it will search children so the parent is also marked as selected
25
+ const isCurrentTax = (tax) => searchParams?.taxonomies[title] === tax.term
26
+ || tax.children?.filter((t) => {
27
+ return t.term === searchParams?.taxonomies[title]
28
+ }).length > 0
29
+
30
+ // Todo: memo this
31
+ const isAvailableOnCurrentType = useCallback((tax) => {
32
+ if (Object.prototype.hasOwnProperty.call(tax, 'children')) {
33
+ return tax.children.filter((t) => t?.type.includes(searchParams.type)).length
34
+ }
35
+ return tax?.type?.includes(searchParams.type)
36
+ }, [searchParams.type])
37
+
38
+ useEffect(() => {
39
+ if (firstUpdate.current) {
40
+ firstUpdate.current = false
41
+ return
42
+ }
43
+ setPageTwoTerms({})
44
+ }, [searchParams.type])
45
+
46
+ useEffect(() => {
47
+ if (Object.keys(pageTwoTerms).length) {
48
+ setTimeout(() => {
49
+ requestAnimationFrame(() => {
50
+ setTaxListHeight(pageTwo.current.clientHeight)
51
+ pageTwoFocus.current.focus()
52
+ })
53
+ }, 200)
54
+ return
55
+ }
56
+ setTaxListHeight('auto')
57
+ }, [pageTwoTerms])
58
+
59
+ useEffect(() => {
60
+ const notSupported = !Object.values(data).filter((tax) => isAvailableOnCurrentType(tax)).length
61
+ // Reset taxonomies that aren't supported on a type
62
+ notSupported && resetTaxonomy(title)
63
+ }, [resetTaxonomy, title, isAvailableOnCurrentType, data])
64
+
65
+ // Return early if 1. No data or 2. Children don't match this type
66
+ if (!Object.keys(data).length || !Object.values(data).filter((tax) => isAvailableOnCurrentType(tax)).length) {
67
+ return ''
68
+ }
69
+
70
+ const theTitle = title.replace('tax_', '').replace(/_/g , ' ').replace(/\b\w/g, l => l.toUpperCase())
71
+ return <PanelBody
72
+ title={theTitle}
73
+ initialOpen={openedTaxonomies.includes(title)}
74
+ onToggle={(value) => toggleOpenedTaxonomy(title, value)}>
75
+ <PanelRow>
76
+ <div className="overflow-hidden w-full relative" style={{
77
+ height: taxListHeight,
78
+ }}>
79
+ <ul className={classNames('p-1 m-0 w-full transform transition duration-200', {
80
+ '-translate-x-full': Object.keys(pageTwoTerms).length,
81
+ })}>
82
+ <li className="m-0">
83
+ <button
84
+ type="button"
85
+ className="text-left cursor-pointer w-full flex justify-between items-center py-1.5 m-0 leading-none hover:text-wp-theme-500 bg-transparent transition duration-200 button-focus"
86
+ ref={pageOneFocus}
87
+ onClick={() => {
88
+ updateTaxonomies({
89
+ [title]: searchParams.type === 'pattern' && title === 'tax_categories'
90
+ ? 'Default'
91
+ : '',
92
+ })
93
+ }}>
94
+ <span className={classNames({
95
+ 'text-wp-theme-500': (!searchParams.taxonomies[title]?.length || searchParams?.taxonomies[title] === 'Default'),
96
+ })}>
97
+ {searchParams.type === 'pattern' && title === 'tax_categories'
98
+ ? __('Default', 'extendify-sdk')
99
+ : __('All', 'extendify-sdk')}
100
+ </span>
101
+ </button>
102
+ </li>
103
+ {Object.values(data)
104
+ .filter((tax) => isAvailableOnCurrentType(tax))
105
+ .sort((prev, next) => prev.term.localeCompare(next.term))
106
+ .map((tax) =>
107
+ <li className="m-0 w-full" key={tax.term}>
108
+ <button
109
+ type="button"
110
+ className="text-left cursor-pointer w-full flex justify-between items-center py-1.5 m-0 leading-none bg-transparent hover:text-wp-theme-500 transition duration-200 button-focus"
111
+ onClick={() => {
112
+ if (Object.prototype.hasOwnProperty.call(tax, 'children')) {
113
+ setPageTwoTerms(tax)
114
+ return
115
+ }
116
+ updateTaxonomies({
117
+ [title]: tax.term,
118
+ })
119
+ }}>
120
+ <span className={classNames({
121
+ 'text-wp-theme-500': isCurrentTax(tax),
122
+ })}>
123
+ {tax.term}
124
+ </span>
125
+ {Object.prototype.hasOwnProperty.call(tax, 'children') && <span className="text-black">
126
+ <svg width="8" height="14" viewBox="0 0 8 14" className="stroke-current" fill="none" xmlns="http://www.w3.org/2000/svg">
127
+ <path d="M1 12.5L6 6.99998L1 1.5" strokeWidth="1.5"/>
128
+ </svg>
129
+ </span>}
130
+ </button>
131
+ </li>)
132
+ }
133
+ </ul>
134
+ <ul ref={pageTwo} className={classNames('p-1 m-0 w-full transform transition duration-200 absolute top-0 right-0', {
135
+ 'translate-x-full': !Object.keys(pageTwoTerms).length,
136
+ })}>
137
+ {Object.values(pageTwoTerms).length > 0 && <li className="m-0">
138
+ <button
139
+ type="button"
140
+ className="text-left cursor-pointer font-bold flex space-x-4 items-center py-2 pr-4 m-0leading-none hover:text-wp-theme-500 bg-transparent transition duration-200 button-focus"
141
+ ref={pageTwoFocus}
142
+ onClick={() => {
143
+ setPageTwoTerms({})
144
+ pageOneFocus.current.focus()
145
+ }}>
146
+ <svg className="stroke-current transform rotate-180" width="8" height="14" viewBox="0 0 8 14" fill="none" xmlns="http://www.w3.org/2000/svg">
147
+ <path d="M1 12.5L6 6.99998L1 1.5" strokeWidth="1.5"/>
148
+ </svg>
149
+ <span>{pageTwoTerms.term}</span>
150
+ </button>
151
+ </li> }
152
+ {Object.values(pageTwoTerms).length
153
+ && Object.values(pageTwoTerms.children)
154
+ .filter((tax) => isAvailableOnCurrentType(tax))
155
+ .sort((prev, next) => prev.term.localeCompare(next.term))
156
+ .map((childTax) =>
157
+ <li className="m-0 pl-6 w-full flex justify-between items-center" key={childTax.term}>
158
+ <button
159
+ type="button"
160
+ className="text-left cursor-pointer w-full flex justify-between items-center py-1.5 m-0 leading-none bg-transparent hover:text-wp-theme-500 transition duration-200 button-focus"
161
+ onClick={() => {
162
+ updateTaxonomies({
163
+ [title]: childTax.term,
164
+ })
165
+ }}>
166
+ <span className={classNames({
167
+ 'text-wp-theme-500': isCurrentTax(childTax),
168
+ })}>
169
+ {childTax.term}
170
+ </span>
171
+ </button>
172
+ </li>)
173
+ }
174
+ </ul>
175
+ </div>
176
+ </PanelRow>
177
+ </PanelBody>
178
+ }
extendify-sdk/src/components/TemplateButton.js ADDED
@@ -0,0 +1,66 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import { Spinner, Button } from '@wordpress/components'
2
+ import {
3
+ useState, useEffect, useRef,
4
+ } from '@wordpress/element'
5
+ import { __ } from '@wordpress/i18n'
6
+ import { useIsMounted } from '../hooks/helpers'
7
+
8
+ export const TemplateButtonSkeleton = () => <div className="aspect-w-1 aspect-h-1">
9
+ <div className="w-full h-full flex items-center justify-center bg-gray-100">
10
+ <Spinner/>
11
+ </div>
12
+ </div>
13
+
14
+ export default function TemplateButton({ template, imageLoaded, setActiveTemplate }) {
15
+ const [loaded, setLoaded] = useState(false)
16
+ const imageContainerRef = useRef()
17
+ const isMounted = useIsMounted()
18
+
19
+ useEffect(() => {
20
+ if (loaded || !isMounted.current) {
21
+ return
22
+ }
23
+ const img = new Image()
24
+ img.role = 'button'
25
+ img.className = 'max-w-full block m-auto object-cover'
26
+ img.onload = () => {
27
+ if (isMounted.current) {
28
+ setLoaded(true)
29
+ imageContainerRef.current && imageContainerRef.current.appendChild(img)
30
+ imageLoaded(template.id)
31
+ }
32
+ }
33
+ img.src = template?.fields?.screenshot[0]?.thumbnails?.large?.url ?? template?.fields?.screenshot[0]?.url
34
+ }, [template, imageLoaded, loaded, isMounted])
35
+
36
+ if (!loaded) {
37
+ return <TemplateButtonSkeleton/>
38
+ }
39
+ return <div className="flex flex-col justify-between group overflow-hidden max-w-lg">
40
+ {/* Note: This doesn't have tabindex nor keyboard event on purpose. a11y tabs to the button only */}
41
+ <div
42
+ className="flex justify-items-center flex-grow h-80 border-gray-200 bg-white border border-b-0 group-hover:border-wp-theme-500 transition duration-150 cursor-pointer overflow-hidden"
43
+ onClick={setActiveTemplate}
44
+ ref={imageContainerRef}>
45
+ </div>
46
+ <span
47
+ role="img"
48
+ aria-hidden="true"
49
+ className="h-px w-full bg-gray-200 border group-hover:bg-transparent border-t-0 border-b-0 border-gray-200 group-hover:border-wp-theme-500 transition duration-150"></span>
50
+ <div
51
+ className="bg-transparent text-left bg-white flex items-center justify-between p-4 border border-t-0 border-transparent group-hover:border-wp-theme-500 transition duration-150 cursor-pointer"
52
+ role="button"
53
+ onClick={setActiveTemplate}>
54
+ <div>
55
+ <h4 className="m-0 font-bold">{template.fields.display_title}</h4>
56
+ <p className="m-0">{template?.fields?.tax_categories?.filter(c => c.toLowerCase() !== 'default').join(', ')}</p>
57
+ </div>
58
+ <Button
59
+ isSecondary
60
+ className="sm:opacity-0 group-hover:opacity-100 transition duration-150 focus:opacity-100"
61
+ onClick={(e) => {e.stopPropagation();setActiveTemplate()}}>
62
+ {__('View', 'extendify-sdk')}
63
+ </Button>
64
+ </div>
65
+ </div>
66
+ }
extendify-sdk/src/components/TypeSelect.js ADDED
@@ -0,0 +1,47 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import { __ } from '@wordpress/i18n'
2
+ import { useTemplatesStore } from '../state/Templates'
3
+ import classNames from 'classnames'
4
+
5
+ export default function TypeSelect() {
6
+ const updateSearchParams = useTemplatesStore(state => state.updateSearchParams)
7
+ const searchParams = useTemplatesStore(state => state.searchParams)
8
+ const updateType = (type) => updateSearchParams({
9
+ type: type,
10
+ })
11
+ return <div className="text-left w-full bg-white px-6 sm:px-0 pb-4 sm:pb-6 mt-px border-b sm:border-0">
12
+ <h4 className="sr-only">{__('Type select', 'extendify-sdk')}</h4>
13
+ <button type="button" className={classNames({
14
+ 'cursor-pointer p-3.5 space-x-2 inline-flex items-center border border-black button-focus': true,
15
+ 'bg-gray-900 text-white': searchParams.type === 'pattern',
16
+ 'bg-transparent text-black': searchParams.type !== 'pattern',
17
+ })}
18
+ onClick={() => updateType('pattern')}>
19
+ <svg width="17" height="13" viewBox="0 0 17 13" className="fill-current" xmlns="http://www.w3.org/2000/svg">
20
+ <path d="M1 13H16C16.55 13 17 12.55 17 12V8C17 7.45 16.55 7 16 7H1C0.45 7 0 7.45 0 8V12C0 12.55 0.45 13 1 13ZM0 1V5C0 5.55 0.45 6 1 6H16C16.55 6 17 5.55 17 5V1C17 0.45 16.55 0 16 0H1C0.45 0 0 0.45 0 1Z"/>
21
+ </svg>
22
+ <span className="">{__('Patterns', 'extendify-sdk')}</span>
23
+ </button>
24
+ <button type="button" className={classNames({
25
+ 'cursor-pointer p-3.5 px-4 space-x-2 inline-flex items-center border border-black focus:ring-2 focus:ring-wp-theme-500 ring-offset-1 outline-none -ml-px': true,
26
+ 'bg-gray-900 text-white': searchParams.type === 'template',
27
+ 'bg-transparent text-black': searchParams.type !== 'template',
28
+ })}
29
+ onClick={() => updateType('template')}>
30
+ <svg width="17" height="13" viewBox="0 0 17 13" className="fill-current" xmlns="http://www.w3.org/2000/svg">
31
+ <path d="M7 13H10C10.55 13 11 12.55 11 12V8C11 7.45 10.55 7 10 7H7C6.45 7 6 7.45 6 8V12C6 12.55 6.45 13 7 13ZM1 13H4C4.55 13 5 12.55 5 12V1C5 0.45 4.55 0 4 0H1C0.45 0 0 0.45 0 1V12C0 12.55 0.45 13 1 13ZM13 13H16C16.55 13 17 12.55 17 12V8C17 7.45 16.55 7 16 7H13C12.45 7 12 7.45 12 8V12C12 12.55 12.45 13 13 13ZM6 1V5C6 5.55 6.45 6 7 6H16C16.55 6 17 5.55 17 5V1C17 0.45 16.55 0 16 0H7C6.45 0 6 0.45 6 1Z"/>
32
+ </svg>
33
+ <span className="">{__('Page templates', 'extendify-sdk')}</span>
34
+ </button>
35
+ {/* <button type="button" className={classNames({
36
+ 'cursor-pointer p-3.5 px-4 space-x-2 inline-flex items-center border border-black focus:ring-2 focus:ring-wp-theme-500 ring-offset-1 outline-none -ml-px': true,
37
+ 'bg-gray-900 text-white': searchParams.type === 'sitekit',
38
+ 'bg-transparent text-black': searchParams.type !== 'sitekit',
39
+ })}
40
+ onClick={() => updateType('sitekit')}>
41
+ <svg width="17" height="13" viewBox="0 0 17 13" className="fill-current" xmlns="http://www.w3.org/2000/svg">
42
+ <path d="M1 6H4C4.55 6 5 5.55 5 5V1C5 0.45 4.55 0 4 0H1C0.45 0 0 0.45 0 1V5C0 5.55 0.45 6 1 6ZM1 13H4C4.55 13 5 12.55 5 12V8C5 7.45 4.55 7 4 7H1C0.45 7 0 7.45 0 8V12C0 12.55 0.45 13 1 13ZM7 13H10C10.55 13 11 12.55 11 12V8C11 7.45 10.55 7 10 7H7C6.45 7 6 7.45 6 8V12C6 12.55 6.45 13 7 13ZM13 13H16C16.55 13 17 12.55 17 12V8C17 7.45 16.55 7 16 7H13C12.45 7 12 7.45 12 8V12C12 12.55 12.45 13 13 13ZM7 6H10C10.55 6 11 5.55 11 5V1C11 0.45 10.55 0 10 0H7C6.45 0 6 0.45 6 1V5C6 5.55 6.45 6 7 6ZM12 1V5C12 5.55 12.45 6 13 6H16C16.55 6 17 5.55 17 5V1C17 0.45 16.55 0 16 0H13C12.45 0 12 0.45 12 1Z"/>
43
+ </svg>
44
+ <span className="">{__('Site kits', 'extendify-sdk')}</span>
45
+ </button> */}
46
+ </div>
47
+ }
extendify-sdk/src/config.js ADDED
@@ -0,0 +1,4 @@
 
 
 
 
1
+ export const templates = {
2
+ defaultType: 'pattern',
3
+ templatesPerRequest: 12,
4
+ }
extendify-sdk/src/hooks/helpers.js ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ import { useRef, useEffect } from '@wordpress/element'
2
+
3
+ export function useIsMounted() {
4
+ const isMounted = useRef(false)
5
+
6
+ useEffect(() => {
7
+ isMounted.current = true
8
+ return () => isMounted.current = false
9
+ })
10
+ return isMounted
11
+ }
extendify-sdk/src/hooks/useBeacon.js ADDED
@@ -0,0 +1,73 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import { useEffect } from '@wordpress/element'
2
+
3
+ export default function useBeacon(show) {
4
+ const showBeacon = () => {
5
+ const container = document.getElementById('beacon-container')
6
+ if (container) {
7
+ container.style.position = 'relative'
8
+ container.style.zIndex = Number.MAX_SAFE_INTEGER
9
+ container.style.display = 'block'
10
+ }
11
+ }
12
+
13
+ const hideBeacon = () => {
14
+ const container = document.getElementById('beacon-container')
15
+ if (container) {
16
+ container.style.display = 'none'
17
+ window.Beacon('close')
18
+ }
19
+ }
20
+
21
+ useEffect(() => {
22
+ if (!show) {
23
+ return
24
+ }
25
+
26
+ if (window.Beacon) {
27
+ showBeacon()
28
+ return () => hideBeacon()
29
+ }
30
+
31
+ // Code direct from HS
32
+ (function (
33
+ e, t, n,
34
+ ) {
35
+ function a() {
36
+ const e = t.getElementsByTagName('script')[0],
37
+ n = t.createElement('script')
38
+ ;(n.async = !0), (n.src = 'https://beacon-v2.helpscout.net'), e.parentNode?.insertBefore(n, e)
39
+ }
40
+ if (
41
+ ((e.Beacon = n = function (
42
+ t, n, a,
43
+ ) {
44
+ e.Beacon.readyQueue.push({
45
+ method: t, options: n, data: a,
46
+ })
47
+ }),
48
+ (n.readyQueue = []),
49
+ 'complete' === t.readyState)
50
+ )
51
+ return a()
52
+ e.attachEvent
53
+ ? e.attachEvent('onload', a)
54
+ : e.addEventListener(
55
+ 'load', a, !1,
56
+ )
57
+ })(
58
+ window, document, window.Beacon || function () {},
59
+ )
60
+
61
+ window.Beacon('init', '2b8c11c0-5afc-4cb9-bee0-a5cb76b2fc91')
62
+ window.Beacon(
63
+ 'on', 'ready', showBeacon,
64
+ )
65
+ return () => {
66
+ window.Beacon(
67
+ 'off', 'ready', showBeacon,
68
+ )
69
+ hideBeacon()
70
+ }
71
+ }, [show])
72
+
73
+ }
extendify-sdk/src/hooks/useTaxonomies.js ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import { useEffect, useCallback } from '@wordpress/element'
2
+ import { Taxonomies as TaxonomiesApi } from '../api/Taxonomies'
3
+ import { useTemplatesStore } from '../state/Templates'
4
+ import { useTaxonomyStore } from '../state/Taxonomies'
5
+
6
+ export default function useTaxonomies(open) {
7
+ const setupDefaultTaxonomies = useTemplatesStore(state => state.setupDefaultTaxonomies)
8
+ const setTaxonomies = useTaxonomyStore(state => state.setTaxonomies)
9
+ const fetchTaxonomies = useCallback(async () => {
10
+ let tax = await TaxonomiesApi.get()
11
+ // Only allow items that have the 'tax_' prefix
12
+ tax = Object.keys(tax)
13
+ .filter((t) => t.startsWith('tax_'))
14
+ .reduce((taxFiltered, key) => {
15
+ taxFiltered[key] = tax[key]
16
+ return taxFiltered
17
+ }, {})
18
+ setupDefaultTaxonomies(tax)
19
+ setTaxonomies(tax)
20
+ }, [setupDefaultTaxonomies, setTaxonomies])
21
+
22
+ useEffect(() => {
23
+ open && fetchTaxonomies()
24
+ }, [fetchTaxonomies, open])
25
+ }
extendify-sdk/src/listeners/index.js ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
1
+ import { templateHandler } from './template-inserted'
2
+ import { softErrorHandler } from './softerror-encountered'
3
+
4
+ [
5
+ templateHandler,
6
+ softErrorHandler,
7
+ ].forEach(listener => listener.register())
extendify-sdk/src/listeners/softerror-encountered.js ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import { camelCase } from 'lodash'
2
+ import { render } from '@wordpress/element'
3
+ import RequiredPluginsModal from '../middleware/hasRequiredPlugins/RequiredPluginsModal'
4
+
5
+ // use this to trigger an error from outside the application
6
+ export const softErrorHandler = {
7
+ register() {
8
+ window.addEventListener('extendify-sdk::softerror-encountered', (event) => {
9
+ this[camelCase(event.detail.type)](event.detail)
10
+ })
11
+ },
12
+ versionOutdated(error) {
13
+ render(<RequiredPluginsModal
14
+ title={error.data.title}
15
+ message={error.data.message}
16
+ buttonLabel={error.data.buttonLabel}
17
+ forceOpen={true}
18
+ />,
19
+ document.getElementById('extendify-root'))
20
+ },
21
+ }
extendify-sdk/src/listeners/template-inserted.js ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import { Templates } from '../api/Templates'
2
+ import { useUserStore } from '../state/User'
3
+ import { dispatch } from '@wordpress/data'
4
+ import { __ } from '@wordpress/i18n'
5
+
6
+ // This fires after a template is inserted
7
+ export const templateHandler = {
8
+ register() {
9
+ const { createNotice } = dispatch('core/notices')
10
+ const increaseImports = useUserStore.getState().incrementImports
11
+ window.addEventListener('extendify-sdk::template-inserted', (event) => {
12
+ createNotice(
13
+ 'info', __('Template Added'), {
14
+ isDismissible: true,
15
+ type: 'snackbar',
16
+ },
17
+ )
18
+ // This is put off to the stack in attempt to fix a bug where
19
+ // some users are having their imports go from 3->0 in an instant
20
+ setTimeout(() => {
21
+ increaseImports()
22
+ Templates.import(event.detail?.template)
23
+ },0)
24
+ })
25
+ },
26
+ }
extendify-sdk/src/middleware/NeedsPermissionModal.js ADDED
@@ -0,0 +1,41 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import { __, sprintf } from '@wordpress/i18n'
2
+ import { Modal, Button } from '@wordpress/components'
3
+ import { render } from '@wordpress/element'
4
+ import ExtendifyLibrary from '../ExtendifyLibrary'
5
+ import { useWantedTemplateStore } from '../state/Importing'
6
+ import { getPluginDescription } from '../util/general'
7
+
8
+ export default function NeedsPermissionModal() {
9
+ const wantedTemplate = useWantedTemplateStore(store => store.wantedTemplate)
10
+ const closeModal = () => render(<ExtendifyLibrary show={true}/>, document.getElementById('extendify-root'))
11
+ const requiredPlugins = wantedTemplate?.fields?.required_plugins || []
12
+ return <Modal
13
+ title={__('Plugins required', 'extendify-sdk')}
14
+ isDismissible={false}>
15
+ <p style={{
16
+ maxWidth: '400px',
17
+ }}>
18
+ {sprintf(__('In order to add this %s to your site, the following plugins are required to be installed and activated.', 'extendify-sdk'), wantedTemplate?.fields?.type ?? 'template')}
19
+ </p>
20
+ <ul>
21
+ {
22
+ // Hardcoded temporarily to not force EP install
23
+ // requiredPlugins.map((plugin) =>
24
+ requiredPlugins.filter((p) => p !== 'editorplus').map((plugin) =>
25
+ <li key={plugin}>
26
+ {getPluginDescription(plugin)}
27
+ </li>)
28
+ }
29
+ </ul>
30
+ <p style={{
31
+ maxWidth: '400px',fontWeight: 'bold',
32
+ }}>
33
+ {__('Please contact a site admin for assistance in adding these plugins to your site.', 'extendify-sdk')}
34
+ </p>
35
+ <Button isPrimary onClick={closeModal} style={{
36
+ boxShadow: 'none',
37
+ }}>
38
+ {__('Return to library', 'extendify-sdk')}
39
+ </Button>
40
+ </Modal>
41
+ }
extendify-sdk/src/middleware/NeedsRegistrationModal.js ADDED
@@ -0,0 +1,77 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import { __ } from '@wordpress/i18n'
2
+ import {
3
+ Modal, Button, ButtonGroup,
4
+ } from '@wordpress/components'
5
+ import {
6
+ render, useEffect, useRef,
7
+ } from '@wordpress/element'
8
+ import { useUserStore } from '../state/User'
9
+ import { useState } from '@wordpress/element'
10
+ import { User as UserApi } from '../api/User'
11
+
12
+ export default function NeedsRegistrationModal({ finished }) {
13
+ const [email, setEmail] = useState('')
14
+ const submitRef = useRef()
15
+
16
+ const registerAndContinue = async (event) => {
17
+ event.preventDefault()
18
+ await UserApi.registerMailingList(email)
19
+ useUserStore.setState({
20
+ registration: { email },
21
+ })
22
+ finished()
23
+ }
24
+
25
+ useEffect(() => {
26
+ UserApi.getMeta('user_email')
27
+ .then((value) => setEmail(value ?? ''))
28
+ submitRef.current.focus()
29
+ }, [])
30
+
31
+ return <Modal
32
+ className="extendify-sdk"
33
+ title={__('One last step...', 'extendify-sdk')}
34
+ isDismissible={false}>
35
+ <p className="m-0 mb-4 max-w-md">
36
+ {__('Register now to receive updates and special offers from Extendify', 'extendify-sdk')}
37
+ </p>
38
+ <form onSubmit={registerAndContinue} className="flex space-x-4 mb-8">
39
+ <div className="relative w-full max-w-xs">
40
+ <input
41
+ id="extendify-email-register"
42
+ value={email}
43
+ required
44
+ onChange={(event) => setEmail(event.target.value)}
45
+ type="text"
46
+ className="extendify-special-input button-focus text-sm h-8 min-h-0 border border-gray-900 special-input placeholder-transparent rounded-none w-full px-2"
47
+ placeholder={__('Email', 'extendify-sdk')} />
48
+ <label htmlFor="extendify-email-register" className="-top-3 bg-white absolute left-1 px-1 transition-all">{__('Email', 'extendify-sdk')}</label>
49
+ </div>
50
+ <input type="submit" className="hidden" />
51
+ </form>
52
+
53
+ <ButtonGroup>
54
+ <Button ref={submitRef} isPrimary onClick={registerAndContinue}>
55
+ {__('Submit and import', 'extendify-sdk')}
56
+ </Button>
57
+ <Button isTertiary onClick={finished} style={{
58
+ boxShadow: 'none', margin: '0 4px',
59
+ }}>
60
+ {__('Skip and import', 'extendify-sdk')}
61
+ </Button>
62
+ </ButtonGroup>
63
+ </Modal>
64
+ }
65
+
66
+ export function check() {
67
+ return {
68
+ id: 'NeedsRegistrationModal',
69
+ pass: (useUserStore.getState().registration?.email || useUserStore.getState().apiKey),
70
+ allow() {},
71
+ deny() {
72
+ return new Promise((finished) => {
73
+ render(<NeedsRegistrationModal finished={finished}/>, document.getElementById('extendify-root'))
74
+ })
75
+ },
76
+ }
77
+ }
extendify-sdk/src/middleware/ReloadRequiredModal.js ADDED
@@ -0,0 +1,43 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import { __ } from '@wordpress/i18n'
2
+ import {
3
+ Modal, Button, ButtonGroup,
4
+ } from '@wordpress/components'
5
+ import { useState } from '@wordpress/element'
6
+ import { dispatch, select } from '@wordpress/data'
7
+
8
+ export default function ReloadRequiredModal() {
9
+ const [isSaving, setSaving] = useState(false)
10
+ const { isEditedPostDirty } = select('core/editor')
11
+ const hasUnsavedChanges = isEditedPostDirty()
12
+ const saveChanges = () => {
13
+ setSaving(true)
14
+ dispatch('core/editor').savePost()
15
+ setSaving(false)
16
+ }
17
+ const reload = () => {
18
+ location.reload()
19
+ }
20
+ if (!hasUnsavedChanges) {
21
+ reload()
22
+ return null
23
+ }
24
+ return <Modal
25
+ title={__('Reload required', 'extendify-sdk')}
26
+ isDismissible={false}>
27
+ <p style={{
28
+ maxWidth: '400px',
29
+ }}>
30
+ {__('Just one more thing! We need to reload the page to continue.', 'extendify-sdk')}
31
+ </p>
32
+ <ButtonGroup>
33
+ <Button isPrimary onClick={reload} disabled={isSaving}>
34
+ {__('Reload page', 'extendify-sdk')}
35
+ </Button>
36
+ <Button isSecondary onClick={saveChanges} isBusy={isSaving} style={{
37
+ margin: '0 4px',
38
+ }}>
39
+ {__('Save changes', 'extendify-sdk')}
40
+ </Button>
41
+ </ButtonGroup>
42
+ </Modal>
43
+ }
extendify-sdk/src/middleware/hasPluginsActivated/ActivatePluginsModal.js ADDED
@@ -0,0 +1,57 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import { __, sprintf } from '@wordpress/i18n'
2
+ import {
3
+ Modal, Button, ButtonGroup,
4
+ } from '@wordpress/components'
5
+ import { render } from '@wordpress/element'
6
+ import ActivatingModal from './ActivatingModal'
7
+ import ExtendifyLibrary from '../../ExtendifyLibrary'
8
+ import { useWantedTemplateStore } from '../../state/Importing'
9
+ import { getPluginDescription } from '../../util/general'
10
+ import { useUserStore } from '../../state/User'
11
+ import NeedsPermissionModal from '../NeedsPermissionModal'
12
+
13
+ export default function ActivatePluginsModal(props) {
14
+ const wantedTemplate = useWantedTemplateStore(store => store.wantedTemplate)
15
+ const closeModal = () => render(<ExtendifyLibrary show={true}/>, document.getElementById('extendify-root'))
16
+ const installPlugins = () => render(<ActivatingModal />, document.getElementById('extendify-root'))
17
+ const requiredPlugins = wantedTemplate?.fields?.required_plugins || []
18
+
19
+ if (!useUserStore.getState()?.canActivatePlugins) {
20
+ return <NeedsPermissionModal/>
21
+ }
22
+
23
+ return <Modal
24
+ title={__('Activate required plugins', 'extendify-sdk')}
25
+ isDismissible={false}
26
+ >
27
+ <div>
28
+ <p style={{
29
+ maxWidth: '400px',
30
+ }}>
31
+ {props.message ?? __(sprintf('There is just one more step. This %s requires the following plugins to be installed and activated:',
32
+ wantedTemplate?.fields?.type ?? 'template'),
33
+ 'extendify-sdk')}
34
+ </p>
35
+ <ul>
36
+ {
37
+ // Hardcoded temporarily to not force EP install
38
+ // requiredPlugins.map((plugin) =>
39
+ requiredPlugins.filter((p) => p !== 'editorplus').map((plugin) =>
40
+ <li key={plugin}>
41
+ {getPluginDescription(plugin)}
42
+ </li>)
43
+ }
44
+ </ul>
45
+ <ButtonGroup>
46
+ <Button isPrimary onClick={installPlugins}>
47
+ {__('Activate Plugins', 'extendify-sdk')}
48
+ </Button>
49
+ {props.showClose && <Button isTertiary onClick={closeModal} style={{
50
+ boxShadow: 'none', margin: '0 4px',
51
+ }}>
52
+ {__('No thanks, return to library', 'extendify-sdk')}
53
+ </Button>}
54
+ </ButtonGroup>
55
+ </div>
56
+ </Modal>
57
+ }
extendify-sdk/src/middleware/hasPluginsActivated/ActivatingModal.js ADDED
@@ -0,0 +1,47 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import { __ } from '@wordpress/i18n'
2
+ import { Modal, Button } from '@wordpress/components'
3
+ import { useState, render } from '@wordpress/element'
4
+ import { Plugins } from '../../api/Plugins'
5
+ import { useWantedTemplateStore } from '../../state/Importing'
6
+ import ErrorActivating from './ErrorActivating'
7
+ import ReloadRequiredModal from '../ReloadRequiredModal'
8
+
9
+ export default function ActivatingModal() {
10
+ const [errorMessage, setErrorMessage] = useState('')
11
+ const wantedTemplate = useWantedTemplateStore(store => store.wantedTemplate)
12
+
13
+ // Hardcoded temporarily to not force EP install
14
+ // const required = wantedTemplate?.fields?.required_plugins
15
+ const required = wantedTemplate?.fields?.required_plugins.filter(p => p !== 'editorplus')
16
+
17
+ Plugins.installAndActivate(required).then(() => {
18
+ useWantedTemplateStore.setState({
19
+ importOnLoad: true,
20
+ })
21
+ }).then(async () => {
22
+ await new Promise((resolve) => setTimeout(resolve, 1000))
23
+ render(<ReloadRequiredModal />, document.getElementById('extendify-root'))
24
+ })
25
+ .catch(({ response }) => {
26
+ setErrorMessage(response.data.message)
27
+ })
28
+
29
+ if (errorMessage) {
30
+ return <ErrorActivating msg={errorMessage}/>
31
+ }
32
+
33
+ return <Modal
34
+ title={__('Activating plugins', 'extendify-sdk')}
35
+ isDismissible={false}>
36
+ <Button
37
+ style={{
38
+ width: '100%',
39
+ }}
40
+ disabled
41
+ isPrimary
42
+ isBusy
43
+ onClick={() => {}}>
44
+ {__('Activating...', 'extendify-sdk')}
45
+ </Button>
46
+ </Modal>
47
+ }
extendify-sdk/src/middleware/hasPluginsActivated/ErrorActivating.js ADDED
@@ -0,0 +1,29 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import { __ } from '@wordpress/i18n'
2
+ import {
3
+ Modal, Button, Notice,
4
+ } from '@wordpress/components'
5
+ import { render } from '@wordpress/element'
6
+ import ActivatePluginsModal from './ActivatePluginsModal'
7
+
8
+ export default function ErrorActivating({ msg }) {
9
+ const goBack = () => {
10
+ render(<ActivatePluginsModal />, document.getElementById('extendify-root'))
11
+ }
12
+
13
+ return <Modal
14
+ style={{
15
+ maxWidth: '500px',
16
+ }}
17
+ title={__('Error Activating plugins', 'extendify-sdk')}
18
+ isDismissible={false}
19
+ >
20
+ {__('You have encountered an error that we cannot recover from. Please try again.', 'extendify-sdk')}
21
+ <br />
22
+ <Notice isDismissible={false} status="error">
23
+ {msg}
24
+ </Notice>
25
+ <Button isPrimary onClick={goBack}>
26
+ {__('Go back', 'extendify-sdk')}
27
+ </Button>
28
+ </Modal>
29
+ }
extendify-sdk/src/middleware/hasPluginsActivated/index.js ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import { checkIfUserNeedsToActivatePlugins } from '../helpers'
2
+ import ActivatePluginsModal from './ActivatePluginsModal'
3
+ import { render } from '@wordpress/element'
4
+
5
+ export const hasPluginsActivated = async (template) => {
6
+ return {
7
+ id: 'hasPluginsActivated',
8
+ pass: !(await checkIfUserNeedsToActivatePlugins(template)),
9
+ allow() {},
10
+ deny() {
11
+ return new Promise(() => {
12
+ render(<ActivatePluginsModal showClose={true}/>, document.getElementById('extendify-root'))
13
+ })
14
+ },
15
+ }
16
+ }
extendify-sdk/src/middleware/hasRequiredPlugins/ErrorInstalling.js ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import { __ } from '@wordpress/i18n'
2
+ import {
3
+ Modal, Button, Notice,
4
+ } from '@wordpress/components'
5
+ import { render } from '@wordpress/element'
6
+ import RequiredPluginsModal from './RequiredPluginsModal'
7
+
8
+ export default function ErrorInstalling({ msg }) {
9
+ const goBack = () => render(<RequiredPluginsModal/>, document.getElementById('extendify-root'))
10
+
11
+ return <Modal
12
+ style={{
13
+ maxWidth: '500px',
14
+ }}
15
+ title={__('Error installing plugins', 'extendify-sdk')}
16
+ isDismissible={false}
17
+ >
18
+ {__('You have encountered an error that we cannot recover from. Please try again.', 'extendify-sdk')}
19
+ <br />
20
+ <Notice isDismissible={false} status="error">{msg}</Notice>
21
+ <Button isPrimary onClick={goBack}>
22
+ {__('Go back', 'extendify-sdk')}
23
+ </Button>
24
+ </Modal>
25
+ }
extendify-sdk/src/middleware/hasRequiredPlugins/InstallingModal.js ADDED
@@ -0,0 +1,40 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import { __ } from '@wordpress/i18n'
2
+ import { Modal, Button } from '@wordpress/components'
3
+ import { useState, render } from '@wordpress/element'
4
+ import { Plugins } from '../../api/Plugins'
5
+ import { useWantedTemplateStore } from '../../state/Importing'
6
+ import ErrorInstalling from './ErrorInstalling'
7
+ import ReloadRequiredModal from '../ReloadRequiredModal'
8
+
9
+ export default function InstallingModal() {
10
+ const [errorMessage, setErrorMessage] = useState('')
11
+ const wantedTemplate = useWantedTemplateStore(store => store.wantedTemplate)
12
+
13
+ // Hardcoded temporarily to not force EP install
14
+ // const required = wantedTemplate?.fields?.required_plugins
15
+ const required = wantedTemplate?.fields?.required_plugins.filter(p => p !== 'editorplus')
16
+
17
+ Plugins.installAndActivate(required).then(() => {
18
+ useWantedTemplateStore.setState({
19
+ importOnLoad: true,
20
+ })
21
+ render(<ReloadRequiredModal />, document.getElementById('extendify-root'))
22
+ })
23
+ .catch(({ message }) => {
24
+ setErrorMessage(message)
25
+ })
26
+
27
+ if (errorMessage) {
28
+ return <ErrorInstalling msg={errorMessage}/>
29
+ }
30
+
31
+ return <Modal
32
+ title={__('Installing plugins', 'extendify-sdk')}
33
+ isDismissible={false}>
34
+ <Button style={{
35
+ width: '100%',
36
+ }} disabled isPrimary isBusy onClick={() => {}}>
37
+ {__('Installing...', 'extendify-sdk')}
38
+ </Button>
39
+ </Modal>
40
+ }
extendify-sdk/src/middleware/hasRequiredPlugins/RequiredPluginsModal.js ADDED
@@ -0,0 +1,60 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import { __, sprintf } from '@wordpress/i18n'
2
+ import ExtendifyLibrary from '../../ExtendifyLibrary'
3
+ import {
4
+ Modal, Button, ButtonGroup,
5
+ } from '@wordpress/components'
6
+ import { render } from '@wordpress/element'
7
+ import InstallingModal from './InstallingModal'
8
+ import { useWantedTemplateStore } from '../../state/Importing'
9
+ import { getPluginDescription } from '../../util/general'
10
+ import { useUserStore } from '../../state/User'
11
+ import NeedsPermissionModal from '../NeedsPermissionModal'
12
+
13
+ export default function RequiredPluginsModal(props) {
14
+ const wantedTemplate = useWantedTemplateStore(store => store.wantedTemplate)
15
+ const closeModal = () => {
16
+ if (props.forceOpen) {
17
+ return
18
+ }
19
+ render(<ExtendifyLibrary show={true} />, document.getElementById('extendify-root'))
20
+ }
21
+ const installPlugins = () => render(<InstallingModal />, document.getElementById('extendify-root'))
22
+ const requiredPlugins = wantedTemplate?.fields?.required_plugins || []
23
+
24
+ if (!useUserStore.getState()?.canInstallPlugins) {
25
+ return <NeedsPermissionModal/>
26
+ }
27
+
28
+ return <Modal
29
+ title={props.title ?? __('Install required plugins', 'extendify-sdk')}
30
+ isDismissible={false}
31
+ >
32
+ <p style={{
33
+ maxWidth: '400px',
34
+ }}>
35
+ {props.message ?? __(sprintf('There is just one more step. This %s requires the following to be automatically installed and activated:',
36
+ wantedTemplate?.fields?.type ?? 'template'),
37
+ 'extendify-sdk')}
38
+ </p>
39
+ {props.message?.length > 0 || <ul>
40
+ {
41
+ // Hardcoded temporarily to not force EP install
42
+ // requiredPlugins.map((plugin) =>
43
+ requiredPlugins.filter((p) => p !== 'editorplus').map((plugin) =>
44
+ <li key={plugin}>
45
+ {getPluginDescription(plugin)}
46
+ </li>)
47
+ }
48
+ </ul>}
49
+ <ButtonGroup>
50
+ <Button isPrimary onClick={installPlugins}>
51
+ {props.buttonLabel ?? __('Install Plugins', 'extendify-sdk')}
52
+ </Button>
53
+ {props.forceOpen || <Button isTertiary onClick={closeModal} style={{
54
+ boxShadow: 'none', margin: '0 4px',
55
+ }}>
56
+ {__('No thanks, take me back', 'extendify-sdk')}
57
+ </Button>}
58
+ </ButtonGroup>
59
+ </Modal>
60
+ }
extendify-sdk/src/middleware/hasRequiredPlugins/index.js ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import { checkIfUserNeedsToInstallPlugins } from '../helpers'
2
+ import RequiredPluginsModal from './RequiredPluginsModal'
3
+ import { render } from '@wordpress/element'
4
+
5
+ export const hasRequiredPlugins = async (template) => {
6
+ return {
7
+ id: 'hasRequiredPlugins',
8
+ pass: !(await checkIfUserNeedsToInstallPlugins(template)),
9
+ allow() {},
10
+ deny() {
11
+ return new Promise(() => {
12
+ render(<RequiredPluginsModal/>, document.getElementById('extendify-root'))
13
+ })
14
+ },
15
+ }
16
+ }
extendify-sdk/src/middleware/helpers.js ADDED
@@ -0,0 +1,61 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import { Plugins } from '../api/Plugins'
2
+
3
+ let installedPlugins = []
4
+ let activatedPlugins = []
5
+
6
+ export async function checkIfUserNeedsToInstallPlugins(template) {
7
+ let required = template?.fields?.required_plugins ?? []
8
+ // Hardcoded temporarily to not force EP install
9
+ required = required.filter((p) => p !== 'editorplus')
10
+ if (!required.length) {
11
+ return false
12
+ }
13
+
14
+ if (!installedPlugins.length) {
15
+ installedPlugins = Object.keys(await Plugins.getInstalled())
16
+ }
17
+ // if no dependencies are required, then this will be false automatically
18
+ const weNeedInstalls = required.length
19
+ ? required.filter((plugin) => {
20
+ // TODO: if we have better data to work with this can be more literal
21
+ return !installedPlugins.some((k) => {
22
+ return k.includes(plugin)
23
+ })
24
+ })
25
+ : false
26
+
27
+ return weNeedInstalls.length
28
+ }
29
+
30
+ export async function checkIfUserNeedsToActivatePlugins(template) {
31
+ let required = template?.fields?.required_plugins ?? []
32
+
33
+ // Hardcoded temporarily to not force EP install
34
+ required = required.filter((p) => p !== 'editorplus')
35
+ if (!required.length) {
36
+ return false
37
+ }
38
+
39
+ if (!activatedPlugins.length) {
40
+ activatedPlugins = Object.values(await Plugins.getActivated())
41
+ }
42
+
43
+ // if no dependencies are required, then this will be false automatically
44
+ const weNeedActivations = required.length
45
+ ? required.filter((plugin) => {
46
+ // TODO: if we have better data to work with this can be more literal
47
+ return !activatedPlugins.some((k) => {
48
+ return k.includes(plugin)
49
+ })
50
+ })
51
+ : false
52
+
53
+ // if the plugins we need to have activated are not even installed, handle them elsewhere
54
+ if (weNeedActivations) {
55
+ // This call is a bit more expensive so only run it if needed
56
+ if (await checkIfUserNeedsToInstallPlugins(template)) {
57
+ return false
58
+ }
59
+ }
60
+ return weNeedActivations.length
61
+ }
extendify-sdk/src/middleware/index.js ADDED
@@ -0,0 +1,42 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import { hasRequiredPlugins } from './hasRequiredPlugins'
2
+ import { hasPluginsActivated } from './hasPluginsActivated'
3
+ import { check as checkNeedsRegistrationModal } from './NeedsRegistrationModal'
4
+
5
+ export const Middleware = (middleware = []) => {
6
+ return {
7
+ hasRequiredPlugins: hasRequiredPlugins,
8
+ hasPluginsActivated: hasPluginsActivated,
9
+ NeedsRegistrationModal: checkNeedsRegistrationModal,
10
+ stack: [],
11
+ async check(template) {
12
+ for (const m of middleware) {
13
+ const cb = await this[`${m}`](template)
14
+ setTimeout(() => {
15
+ this.stack.push(cb.pass
16
+ ? cb.allow
17
+ : cb.deny)
18
+ }, 0)
19
+ }
20
+ },
21
+ reset() {
22
+ this.stack = []
23
+ },
24
+ }
25
+ }
26
+
27
+ export async function AuthorizationCheck(pipes) {
28
+ const middleware = MiddlewareGenerator(pipes)
29
+ while (true) {
30
+ const result = await middleware.next()
31
+
32
+ // TODO: Could probably have a check for errors here
33
+ if (result.done) {
34
+ break
35
+ }
36
+ }
37
+ }
38
+ export async function* MiddlewareGenerator(middleware) {
39
+ for (const m of middleware) {
40
+ yield await m()
41
+ }
42
+ }
extendify-sdk/src/pages/CuratedView.js ADDED
@@ -0,0 +1,71 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import {
2
+ useEffect, useRef, useState,
3
+ } from '@wordpress/element'
4
+ import { __ } from '@wordpress/i18n'
5
+ import { useTaxonomyStore } from '../state/Taxonomies'
6
+ import SidebarMain from './parts/sidebars/SidebarMain'
7
+ import RowByTax from './parts/RowByTax'
8
+ import HasSidebar from './parts/HasSidebar'
9
+ import TypeSelect from '../components/TypeSelect'
10
+ import TaxonomyBreadcrumbs from '../components/TaxonomyBreadcrumbs'
11
+ import Toolbar from './parts/Toolbar'
12
+ import { useTemplatesStore } from '../state/Templates'
13
+
14
+ export default function CuratedView() {
15
+ const [terms, setTerms] = useState([])
16
+ const scrollableArea = useRef()
17
+ const taxonomies = useTaxonomyStore(state => state.taxonomies)
18
+ const searchParams = useTemplatesStore(state => state.searchParams)
19
+ const termsFiltered = (t) => Object.values(t)
20
+ .filter((term) => term.type.includes('pattern'))
21
+ .map((term) => term.term)
22
+ const mergeTerm = (tax, term) => {
23
+ const params = { ...searchParams }
24
+ params.taxonomies = Object.assign(
25
+ {}, searchParams.taxonomies, { [tax]: term },
26
+ )
27
+ return params
28
+ }
29
+
30
+ useEffect(() => {
31
+ if (Object.keys(taxonomies?.tax_pattern_types ?? {}).length) {
32
+ setTerms(termsFiltered(taxonomies.tax_pattern_types))
33
+ }
34
+ }, [taxonomies])
35
+
36
+ useEffect(() => {
37
+ scrollableArea.current.scrollTop = 0
38
+ }, [searchParams])
39
+
40
+ return <div className="bg-white h-full flex flex-col items-center relative shadow-xl max-w-screen-4xl mx-auto">
41
+ <Toolbar className="w-full h-16 border-solid border-0 border-b border-gray-300 flex-shrink-0"/>
42
+ <div className="w-full flex-grow overflow-hidden">
43
+ <a href="#extendify-templates" className="sr-only focus:not-sr-only focus:text-blue-500">
44
+ {__('Skip to content', 'extendify-sdk')}
45
+ </a>
46
+ <div className="sm:flex sm:space-x-12 relative bg-white mx-auto max-w-screen-4xl h-full">
47
+ <HasSidebar>
48
+ <SidebarMain/>
49
+ <>
50
+ <TypeSelect/>
51
+ {/* TODO: we may want to inject this as a portal so it can directly share state with SidebarMain.js */}
52
+ <TaxonomyBreadcrumbs/>
53
+ <div className="relative h-full z-30 bg-white">
54
+ <div
55
+ ref={scrollableArea}
56
+ className="absolute z-20 inset-0 lg:static h-screen overflow-y-auto pt-16 px-6 sm:pl-0 sm:pr-8 pb-60">
57
+ {terms.length > 0 && terms.map((term) => {
58
+ return <RowByTax
59
+ key={term}
60
+ title={term}
61
+ tax="tax_pattern_types"
62
+ searchParams={mergeTerm('tax_pattern_types', term)}/>
63
+ })}
64
+ </div>
65
+ </div>
66
+ </>
67
+ </HasSidebar>
68
+ </div>
69
+ </div>
70
+ </div>
71
+ }
extendify-sdk/src/pages/GridView.js ADDED
@@ -0,0 +1,33 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import SidebarMain from './parts/sidebars/SidebarMain'
2
+ import Grid from './parts/Grid'
3
+ import HasSidebar from './parts/HasSidebar'
4
+ import TypeSelect from '../components/TypeSelect'
5
+ import { __ } from '@wordpress/i18n'
6
+ import TaxonomyBreadcrumbs from '../components/TaxonomyBreadcrumbs'
7
+ import Toolbar from './parts/Toolbar'
8
+
9
+ export default function GridView() {
10
+ return <div className="bg-white h-full flex flex-col items-center relative shadow-xl max-w-screen-4xl mx-auto">
11
+ <Toolbar className="w-full h-16 border-solid border-0 border-b border-gray-300 flex-shrink-0"/>
12
+ <div className="w-full flex-grow overflow-hidden">
13
+ <a href="#extendify-templates" className="sr-only focus:not-sr-only focus:text-blue-500">
14
+ {__('Skip to content', 'extendify-sdk')}
15
+ </a>
16
+ <div className="sm:flex sm:space-x-12 relative bg-white mx-auto max-w-screen-4xl h-full">
17
+ <HasSidebar>
18
+ <SidebarMain/>
19
+ <>
20
+ <TypeSelect/>
21
+ {/* TODO: we may want to inject this as a portal so it can directly share state with SidebarMain.js */}
22
+ <TaxonomyBreadcrumbs/>
23
+ <div className="relative h-full z-30 bg-white">
24
+ <div className="absolute z-20 inset-0 lg:static h-screen overflow-y-auto pt-4 sm:pt-0 px-6 sm:pl-0 sm:pr-8 pb-40">
25
+ <Grid/>
26
+ </div>
27
+ </div>
28
+ </>
29
+ </HasSidebar>
30
+ </div>
31
+ </div>
32
+ </div>
33
+ }
extendify-sdk/src/pages/Login.js ADDED
@@ -0,0 +1,37 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // import { useEffect } from '@wordpress/element'
2
+ import LoginInterface from '../components/LoginInterface'
3
+ import { __ } from '@wordpress/i18n'
4
+ import { useGlobalStore } from '../state/GlobalState'
5
+ import Toolbar from './parts/Toolbar'
6
+
7
+ export default function Login() {
8
+
9
+ return <div className="bg-white h-full flex flex-col items-center relative shadow-xl max-w-screen-4xl mx-auto">
10
+ <Toolbar className="w-full h-16 border-solid border-0 border-b border-gray-300 flex-shrink-0"/>
11
+ <div className="w-full flex-grow overflow-hidden bg-extendify-light">
12
+ <a href="#extendify-templates" className="sr-only focus:not-sr-only focus:text-blue-500">
13
+ {__('Skip to content', 'extendify-sdk')}
14
+ </a>
15
+ <div className="flex sm:space-x-12 relative mx-auto max-w-screen-4xl h-full">
16
+ <div className="absolute flex inset-0 items-center justify-center z-20 sm:space-x-12">
17
+ <div className="pl-12 py-6 absolute top-0 left-0">
18
+ <button
19
+ type="button"
20
+ className="cursor-pointer text-black bg-transparent font-medium flex items-center p-3 transform -translate-x-3 button-focus"
21
+ onClick={() => useGlobalStore.setState({
22
+ currentPage: 'main',
23
+ })}>
24
+ <svg className="fill-current" width="8" height="12" viewBox="0 0 8 12" xmlns="http://www.w3.org/2000/svg">
25
+ <path d="M6.70998 9.88047L2.82998 6.00047L6.70998 2.12047C7.09998 1.73047 7.09998 1.10047 6.70998 0.710469C6.31998 0.320469 5.68998 0.320469 5.29998 0.710469L0.70998 5.30047C0.31998 5.69047 0.31998 6.32047 0.70998 6.71047L5.29998 11.3005C5.68998 11.6905 6.31998 11.6905 6.70998 11.3005C7.08998 10.9105 7.09998 10.2705 6.70998 9.88047Z"/>
26
+ </svg>
27
+ <span className="ml-4">{__('Go back', 'extendify-sdk')}</span>
28
+ </button>
29
+ </div>
30
+ <div className="flex justify-center">
31
+ <LoginInterface/>
32
+ </div>
33
+ </div>
34
+ </div>
35
+ </div>
36
+ </div>
37
+ }
extendify-sdk/src/pages/MainContent.js ADDED
@@ -0,0 +1,47 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import { useTemplatesStore } from '../state/Templates'
2
+ import SidebarMain from '../layout/sidebars/SidebarMain'
3
+ import TemplatesList from './TemplatesList'
4
+ import TemplatesSingle from './TemplatesSingle'
5
+ import HasSidebar from '../layout/HasSidebar'
6
+ import TypeSelect from '../components/TypeSelect'
7
+ import { __ } from '@wordpress/i18n'
8
+ import SidebarSingle from '../layout/sidebars/SidebarSingle'
9
+ import TaxonomyBreadcrumbs from '../components/TaxonomyBreadcrumbs'
10
+ import Toolbar from '../layout/Toolbar'
11
+
12
+ export default function MainContent({ setOpen }) {
13
+ const activeTemplate = useTemplatesStore(state => state.activeTemplate)
14
+ return <div className="bg-white h-full flex flex-col items-center relative shadow-xl max-w-screen-4xl mx-auto">
15
+ <Toolbar
16
+ className="w-full h-16 border-solid border-0 border-b border-gray-300 flex-shrink-0"
17
+ hideLibrary={() => setOpen(false)}/>
18
+ <div className="w-full flex-grow overflow-hidden">
19
+ <a href="#extendify-templates" className="sr-only focus:not-sr-only focus:text-blue-500">
20
+ {__('Skip to content', 'extendify-sdk')}
21
+ </a>
22
+ <div className="sm:flex sm:space-x-12 relative bg-white mx-auto max-w-screen-4xl h-full">
23
+ {!!Object.keys(activeTemplate).length &&
24
+ <div className="absolute bg-white sm:flex inset-0 z-50 sm:space-x-12">
25
+ <HasSidebar>
26
+ <SidebarSingle template={activeTemplate}/>
27
+ <TemplatesSingle template={activeTemplate}/>
28
+ </HasSidebar>
29
+ </div>
30
+ }
31
+ <HasSidebar>
32
+ <SidebarMain/>
33
+ <>
34
+ <TypeSelect/>
35
+ {/* TODO: we may want to inject this as a portal so it can directly share state with SidebarMain.js */}
36
+ <TaxonomyBreadcrumbs/>
37
+ <div className="relative h-full z-30 bg-white">
38
+ <div className="absolute z-20 inset-0 lg:static h-screen overflow-y-auto pt-4 sm:pt-0 px-6 sm:pl-0 sm:pr-8 pb-40">
39
+ <TemplatesList/>
40
+ </div>
41
+ </div>
42
+ </>
43
+ </HasSidebar>
44
+ </div>
45
+ </div>
46
+ </div>
47
+ }
extendify-sdk/src/pages/Router.js ADDED
@@ -0,0 +1,39 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import Welcome from './guide/Welcome.js'
2
+ // import GuideStart from './guide/GuideStart.js'
3
+ // import GuideSteps from './guide/GuideSteps.js'
4
+ import GridView from './GridView.js'
5
+ import CuratedView from './CuratedView.js'
6
+ import SingleView from './SingleView.js'
7
+ import Login from './Login.js'
8
+ import WaitingCrunching from './modals/WaitingCrunchingModal.js'
9
+ import { useTemplatesStore } from '../state/Templates.js'
10
+
11
+ // Probably the most basic router you can imagine
12
+ export default function Router({ page }) {
13
+ const searchParams = useTemplatesStore(state => state.searchParams)
14
+
15
+ // TODO: Possibly we can have a loading screen while we fetch terms, etc
16
+ if (page === 'main' && !Object.keys(searchParams?.taxonomies ?? {}).length) {
17
+ page = 'curated'
18
+ }
19
+
20
+ // Reroute the main page depending on the taxonomy and type choices
21
+ // If no pattern types are selected, show a curated page
22
+ if (page === 'main' &&
23
+ searchParams?.type === 'pattern' &&
24
+ searchParams?.taxonomies?.tax_pattern_types === '')
25
+ {
26
+ page = 'curated'
27
+ }
28
+
29
+ switch (page) {
30
+ case 'welcome': return <Welcome/>
31
+ // case 'guide-start': return <GuideStart/>
32
+ // case 'guide-steps': return <GuideSteps/>
33
+ case 'waiting-crunching': return <WaitingCrunching/>
34
+ case 'curated': return <CuratedView/>
35
+ case 'main': return <GridView/>
36
+ case 'single': return <SingleView/>
37
+ case 'login': return <Login/>
38
+ }
39
+ }
extendify-sdk/src/pages/SingleView.js ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import { useTemplatesStore } from '../state/Templates'
2
+ import Single from './parts/Single'
3
+ import HasSidebar from './parts/HasSidebar'
4
+ import { __ } from '@wordpress/i18n'
5
+ import SidebarSingle from './parts/sidebars/SidebarSingle'
6
+ import Toolbar from './parts/Toolbar'
7
+
8
+ export default function SingleView() {
9
+ const activeTemplate = useTemplatesStore(state => state.activeTemplate)
10
+ return <div className="bg-white h-full flex flex-col items-center relative shadow-xl max-w-screen-4xl mx-auto">
11
+ <Toolbar className="w-full h-16 border-solid border-0 border-b border-gray-300 flex-shrink-0"/>
12
+ <div className="w-full flex-grow overflow-hidden">
13
+ <a href="#extendify-templates" className="sr-only focus:not-sr-only focus:text-blue-500">
14
+ {__('Skip to content', 'extendify-sdk')}
15
+ </a>
16
+ <div className="sm:flex sm:space-x-12 relative bg-white mx-auto max-w-screen-4xl h-full">
17
+ <div className="absolute bg-white sm:flex inset-0 z-50 sm:space-x-12">
18
+ <HasSidebar>
19
+ <SidebarSingle template={activeTemplate}/>
20
+ <Single template={activeTemplate}/>
21
+ </HasSidebar>
22
+ </div>
23
+ </div>
24
+ </div>
25
+ </div>
26
+ }
extendify-sdk/src/pages/guide/GuideStart.js ADDED
@@ -0,0 +1,149 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // import { useEffect } from '@wordpress/element'
2
+ import { __ } from '@wordpress/i18n'
3
+ import { useGlobalStore } from '../../state/GlobalState'
4
+ import { useUserStore } from '../../state/User'
5
+ import { General as GeneralApi } from '../../api/General'
6
+ import { useEffect, useRef } from '@wordpress/element'
7
+ import { useTemplatesStore } from '../../state/Templates'
8
+
9
+ export default function GuideStart() {
10
+ const preferred = useUserStore(state => state.preferredOptions)
11
+ const templates = useTemplatesStore(state => state.templates)
12
+ const closeGuide = () => {
13
+ GeneralApi.ping('guide-cancelled')
14
+ templates.length && useTemplatesStore.setState({ skipNextFetch: true })
15
+ useGlobalStore.setState({ currentPage: 'main' })
16
+ }
17
+ const goToWelcome = () => {
18
+ useGlobalStore.setState({ currentPage: 'welcome' })
19
+ }
20
+ const setTypeAndProgress = (type) => {
21
+ // Update their preferred type and start the guide, or if they x
22
+ // then send them to the main screen
23
+ type && useUserStore.getState().updatePreferredOption('type', type)
24
+ useGlobalStore.setState({
25
+ currentPage: type
26
+ ? 'guide-steps'
27
+ : 'main',
28
+ })
29
+ }
30
+
31
+ const templatesRef = useRef()
32
+ const patternsRef = useRef()
33
+
34
+ useEffect(() => {
35
+ GeneralApi.ping('guide-started')
36
+
37
+ preferred?.type === 'pattern'
38
+ ? patternsRef.current.focus()
39
+ : templatesRef.current.focus()
40
+ }, [preferred?.type])
41
+
42
+ const emptyToolbar = <div className="w-full h-16 relative z-10 border-solid border-0 flex-shrink-0">
43
+ <div className="flex justify-between items-center px-6 sm:px-12 h-full">
44
+ <div className="flex space-x-12 h-full">
45
+ </div>
46
+ <div className="space-x-2 transform sm:translate-x-8">
47
+ <button
48
+ type="button"
49
+ className="components-button has-icon"
50
+ onClick={closeGuide}>
51
+ <svg width="24" height="24" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" size="24" role="img" aria-hidden="true" focusable="false"><path d="M13 11.8l6.1-6.3-1-1-6.1 6.2-6.1-6.2-1 1 6.1 6.3-6.5 6.7 1 1 6.5-6.6 6.5 6.6 1-1z"></path></svg>
52
+ <span className="sr-only">{__('Close library', 'extendify-sdk')}</span>
53
+ </button>
54
+ </div>
55
+ </div>
56
+ </div>
57
+
58
+ return <div className="w-full h-full flex flex-col items-center relative shadow-xl max-w-screen-4xl mx-auto bg-white">
59
+ {emptyToolbar}
60
+ <section className="flex-grow w-full justify-between flex flex-col overflow-y-scroll">
61
+ <div className="flex flex-col w-full lg:h-full max-w-screen-2xl mx-auto p-8" style={{ paddingTop: '13vh' }}>
62
+ <h1 className="text-left m-0 mb-8 2xl:mb-16 text-7xl">
63
+ {__('Hello', 'extendify-sdk')}
64
+ </h1>
65
+ <div className="flex-grow flex flex-col lg:flex-row space-x-0 space-y-16 lg:space-y-0 lg:space-x-16 xl:space-x-32">
66
+ <button
67
+ style={{ maxHeight: '26rem' }}
68
+ ref={patternsRef}
69
+ onClick={() => setTypeAndProgress('pattern')}
70
+ className="button-focus-big-green cursor-pointer bg-white border border-black flex xl:w-1/2 flex-col h-full hover:bg-gray-50 min-h-60 p-8 lg:px-20 space-y-4">
71
+ <h3 className="text-2xl m-0 text-extendify-main">{__('Add a section', 'extendify-sdk')}</h3>
72
+ <p className="text-left mb-8 text-lg">{__('Add to an existing page or build your own using patterns.', 'extendify-sdk')}</p>
73
+ <span className="pt-4">
74
+ <svg xmlns="http://www.w3.org/2000/svg" width="206" height="122" viewBox="0 0 206 122" fill="none">
75
+ <path d="M69 0H0V59H69V0Z" fill="#DFDFDF"/>
76
+ <path d="M204 0H79V60H204V0Z" fill="#DFDFDF"/>
77
+ <path d="M62.166 25H9.16602V28H62.166V25Z" fill="#F9F9F9"/>
78
+ <path d="M63.166 18H10.166V21H63.166V18Z" fill="#F9F9F9"/>
79
+ <path d="M62.166 34H9.16602V39H62.166V34Z" fill="#F9F9F9"/>
80
+ <path d="M62.166 43H9.16602V48H62.166V43Z" fill="#F9F9F9"/>
81
+ <path d="M140.166 25H87.166V28H140.166V25Z" fill="#F9F9F9"/>
82
+ <path d="M140.166 34H87.166V39H140.166V34Z" fill="#F9F9F9"/>
83
+ <path d="M140.166 43H87.166V48H140.166V43Z" fill="#F9F9F9"/>
84
+ <path d="M197.166 25H151.166V28H197.166V25Z" fill="#F9F9F9"/>
85
+ <path d="M141.166 17H88.166V20H141.166V17Z" fill="#F9F9F9"/>
86
+ <path d="M198.166 17H152.166V20H198.166V17Z" fill="#F9F9F9"/>
87
+ <path d="M62.166 10H9.16602V13H62.166V10Z" fill="#F9F9F9"/>
88
+ <path d="M140.166 9H87.166V12H140.166V9Z" fill="#F9F9F9"/>
89
+ <path d="M197.166 9H151.166V12H197.166V9Z" fill="#F9F9F9"/>
90
+ <path d="M197.166 34H151.166V39H197.166V34Z" fill="#F9F9F9"/>
91
+ <path d="M197.166 43H151.166V48H197.166V43Z" fill="#F9F9F9"/>
92
+ <path d="M154.172 77.8088H0V121.216H154.172V77.8088Z" fill="#DFDFDF"/>
93
+ <path d="M133.637 110.446C141.077 110.446 147.109 104.75 147.109 97.7229C147.109 90.6963 141.077 85 133.637 85C126.197 85 120.166 90.6963 120.166 97.7229C120.166 104.75 126.197 110.446 133.637 110.446Z" fill="#F9F9F9"/>
94
+ <path d="M205.166 78H162.166V121H205.166V78Z" fill="#DFDFDF"/>
95
+ <path d="M183.803 111.637C191.243 111.637 197.275 105.941 197.275 98.9141C197.275 91.8874 191.243 86.1912 183.803 86.1912C176.363 86.1912 170.332 91.8874 170.332 98.9141C170.332 105.941 176.363 111.637 183.803 111.637Z" fill="#F9F9F9"/>
96
+ <path d="M113.695 88.7898H13.4082V100.764H113.695V88.7898Z" fill="#F9F9F9"/>
97
+ <path d="M113.695 105.255H13.4082V109.745H113.695V105.255Z" fill="#F9F9F9"/>
98
+ </svg>
99
+ </span>
100
+ </button>
101
+ <button
102
+ style={{
103
+ maxHeight: '26rem',
104
+ }}
105
+ ref={templatesRef}
106
+ onClick={() => setTypeAndProgress('template')}
107
+ className="button-focus-big-green cursor-pointer bg-white border border-black flex xl:w-1/2 flex-col h-full hover:bg-gray-50 min-h-60 p-8 lg:px-20 space-y-4">
108
+ <h3 className="text-2xl m-0 text-extendify-main">{__('Add a page', 'extendify-sdk')}</h3>
109
+ <p className="text-left mb-8 text-lg">{__('Use a full page template that you can customize to make your own.', 'extendify-sdk')}</p>
110
+ <span className="pt-4">
111
+ <svg xmlns="http://www.w3.org/2000/svg" width="156" height="128" viewBox="0 0 156 128" fill="none">
112
+ <path d="M155.006 38.4395H0.833984V81.8471H155.006V38.4395Z" fill="#DFDFDF"/>
113
+ <path d="M155 0H1V36H155V0Z" fill="#DFDFDF"/>
114
+ <path d="M148 7H10V28H148V7Z" fill="#F9F9F9"/>
115
+ <path d="M147.521 47.4204H9.81445V50.414H147.521V47.4204Z" fill="#F9F9F9"/>
116
+ <path d="M147.521 56.4012H9.81445V60.8917H147.521V56.4012Z" fill="#F9F9F9"/>
117
+ <path d="M147.521 65.3821H9.81445V69.8726H147.521V65.3821Z" fill="#F9F9F9"/>
118
+ <path d="M155.006 83.8089H0.833984V127.217H155.006V83.8089Z" fill="#DFDFDF"/>
119
+ <path d="M21.7897 118.236C29.2297 118.236 35.261 112.539 35.261 105.513C35.261 98.486 29.2297 92.7898 21.7897 92.7898C14.3497 92.7898 8.31836 98.486 8.31836 105.513C8.31836 112.539 14.3497 118.236 21.7897 118.236Z" fill="#F9F9F9"/>
120
+ <path d="M144.529 92.7898H44.2422V104.764H144.529V92.7898Z" fill="#F9F9F9"/>
121
+ <path d="M144.529 109.255H44.2422V113.745H144.529V109.255Z" fill="#F9F9F9"/>
122
+ </svg>
123
+ </span>
124
+ </button>
125
+ </div>
126
+ </div>
127
+ <footer className="flex justify-between p-14 w-full">
128
+ <button
129
+ type="button"
130
+ className="cursor-pointer bg-transparent space-x-8 flex items-center hover:bg-gray-100 p-4 -m-4"
131
+ onClick={goToWelcome}>
132
+ <svg className="block" width="64" height="64" viewBox="0 0 103 103" fill="none" xmlns="http://www.w3.org/2000/svg">
133
+ <rect y="25.75" width="70.8125" height="77.25" fill="#000000"/>
134
+ <rect x="45.0625" width="57.9375" height="57.9375" fill="#37C2A2"/>
135
+ </svg>
136
+ <span className="text-2xl font-bold text-extendify-main">
137
+ {__('What is Extendify?', 'extendify-sdk')}
138
+ </span>
139
+ </button>
140
+ {/* <button
141
+ type="button"
142
+ onClick={closeGuide}
143
+ className="bg-transparent cursor-pointer text-lg text-extendify-link underline">
144
+ {__('Skip', 'extendify-sdk')}
145
+ </button> */}
146
+ </footer>
147
+ </section>
148
+ </div>
149
+ }
extendify-sdk/src/pages/guide/GuideSteps.js ADDED
@@ -0,0 +1,231 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import {
2
+ useEffect, useState, render, unmountComponentAtNode,
3
+ } from '@wordpress/element'
4
+ import { __ } from '@wordpress/i18n'
5
+ import { useGlobalStore } from '../../state/GlobalState'
6
+ import { useUserStore } from '../../state/User'
7
+ import { General as GeneralApi } from '../../api/General'
8
+ import { useTaxonomyStore } from '../../state/Taxonomies'
9
+ import classNames from 'classnames'
10
+ import { useTemplatesStore } from '../../state/Templates'
11
+ import SearchPredict from '../../components/SearchPredict'
12
+ import { Transition } from '@headlessui/react'
13
+ import WaitingCrunching from '../modals/WaitingCrunchingModal'
14
+ import { Templates as TemplatesApi } from '../../api/Templates'
15
+
16
+ export default function GuideSteps() {
17
+ const updateSearchParams = useTemplatesStore(state => state.updateSearchParams)
18
+ const templates = useTemplatesStore(state => state.templates)
19
+ const taxonomyDefaultState = useTemplatesStore(state => state.taxonomyDefaultState)
20
+ const setActiveTemplate = useTemplatesStore(state => state.setActive)
21
+ const appendTemplates = useTemplatesStore(state => state.appendTemplates)
22
+ const updateTaxonomies = useTemplatesStore(state => state.updateTaxonomies)
23
+ const taxonomies = useTaxonomyStore(state => state.taxonomies)
24
+ const preferred = useUserStore(state => state.preferredOptions)
25
+ const [allCats, setAllCats] = useState([])
26
+ const [stepOneTouched, setStepOneTouched] = useState(false)
27
+ const [stepTwoTouched, setStepTwoTouched] = useState(false)
28
+ const [stepThreeTouched, setStepThreeTouched] = useState(false)
29
+
30
+ const setPreferred = (key, value) => {
31
+ useUserStore.getState().updatePreferredOption(key, value)
32
+ }
33
+ const typeTax = preferred?.type == 'template'
34
+ ? 'tax_page_types'
35
+ : 'tax_pattern_types'
36
+
37
+ const closeGuide = () => {
38
+ GeneralApi.ping('guide-cancelled')
39
+ templates.length && useTemplatesStore.setState({ skipNextFetch: true })
40
+ useGlobalStore.setState({ currentPage: 'main' })
41
+ }
42
+ const fetchDelayThenDisplay = () => {
43
+ updateSearchParams({
44
+ taxonomies: Object.assign(
45
+ {}, taxonomyDefaultState, preferred.taxonomies,
46
+ ),
47
+ type: preferred.type,
48
+ search: preferred.search,
49
+ })
50
+ const action = new Promise((resolve) => {
51
+ useTemplatesStore.setState({ skipNextFetch: true })
52
+ const setupTemplates = (data) => {
53
+ appendTemplates(data)
54
+ data.length === 1 && setActiveTemplate(data[0])
55
+ useTemplatesStore.setState({
56
+ nextPage: data.offset,
57
+ })
58
+ }
59
+ // TODO: this could probably be smarter and recursive we want to remove more
60
+ TemplatesApi.get(useTemplatesStore.getState().searchParams).then((response) => {
61
+ if (response.records.length) {
62
+ setupTemplates(response.records)
63
+ return resolve()
64
+ }
65
+ // Remove the style and try again
66
+ updateTaxonomies({ tax_style: '' })
67
+ TemplatesApi.get(useTemplatesStore.getState().searchParams).then((response) => {
68
+ setupTemplates(response.records)
69
+ return resolve()
70
+ })
71
+ })
72
+ })
73
+ const callback = async () => {
74
+ await new Promise((resolve) => setTimeout(resolve, 1500))
75
+ useGlobalStore.setState({
76
+ currentPage: 'main',
77
+ })
78
+ unmountComponentAtNode(document.getElementById('extendify-util'))
79
+ }
80
+ render(<WaitingCrunching
81
+ action={action}
82
+ callback={callback}
83
+ text={__('Finding templates...', 'extendify-sdk')}
84
+ />, document.getElementById('extendify-util'))
85
+ }
86
+
87
+ const showStepTwo = () => (stepOneTouched || preferred?.taxonomies?.tax_categories) ? true : false
88
+ const showStepThree = () => (showStepTwo() && (!taxonomies[typeTax] || stepTwoTouched || preferred?.taxonomies[typeTax])) ? true : false
89
+ const showFinalButton = () => (showStepThree() && (stepThreeTouched || preferred?.taxonomies?.tax_style)) ? true : false
90
+
91
+ useEffect(() => {
92
+ if (!taxonomies?.tax_categories) {
93
+ return
94
+ }
95
+
96
+ const all = Object.values(taxonomies.tax_categories)
97
+ // Map over all terms
98
+ .map((term) =>
99
+ // Filter out terms not of this type (pattern/template)
100
+ term.children.filter(c => c.type.includes(preferred?.type)).map(c => c.term))
101
+ // merge all together
102
+ .flat().sort()
103
+
104
+ setAllCats([...new Set(all)])
105
+ }, [taxonomies, preferred?.type])
106
+
107
+ const emptyToolbar = <div className="w-full h-16 relative z-10 border-solid border-0 flex-shrink-0">
108
+ <div className="flex justify-between items-center px-6 sm:px-12 h-full">
109
+ <div className="flex space-x-12 h-full">
110
+ </div>
111
+ <div className="space-x-2 transform sm:translate-x-8">
112
+ <button
113
+ type="button"
114
+ className="components-button has-icon"
115
+ onClick={closeGuide}>
116
+ <svg width="24" height="24" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" size="24" role="img" aria-hidden="true" focusable="false"><path d="M13 11.8l6.1-6.3-1-1-6.1 6.2-6.1-6.2-1 1 6.1 6.3-6.5 6.7 1 1 6.5-6.6 6.5 6.6 1-1z"></path></svg>
117
+ <span className="sr-only">{__('Close library', 'extendify-sdk')}</span>
118
+ </button>
119
+ </div>
120
+ </div>
121
+ </div>
122
+
123
+ return <div className="w-full h-full flex flex-col items-center relative shadow-xl max-w-screen-4xl mx-auto bg-white">
124
+ {emptyToolbar}
125
+ <section className="flex-grow w-full justify-between flex flex-col overflow-y-scroll">
126
+ <div className="flex flex-col w-full h-full p-8 pb-0 md:p-16 md:pb-0 2xl:p-28 2xl:pb-0 max-w-screen-2xl mx-auto">
127
+ <h1 className="text-left m-0 mb-12 text-7xl">
128
+ {__('Hello', 'extendify-sdk')}
129
+ </h1>
130
+ <div className="flex-grow lg:flex justify-between space-y-8 lg:space-y-0 lg:space-x-16 xl:space-x-32">
131
+ <div className="text-left flex-shrink-0 lg:w-1/2">
132
+ <h2 className="text-2xl m-0 mb-8">
133
+ {preferred?.type === 'template' ?
134
+ __('Help me find a template', 'extendify-sdk') :
135
+ __('Help me find a pattern', 'extendify-sdk')}
136
+ </h2>
137
+ <div className="flex flex-col space-y-8">
138
+ <div>
139
+ <p className="text-base text-gray-900 m-0 mb-5">{__('Select your industry:', 'extendify-sdk')}</p>
140
+ <SearchPredict
141
+ list={allCats}
142
+ value={preferred?.taxonomies?.tax_categories}
143
+ touched={() => setStepOneTouched(true)}
144
+ label={__('Category', 'extendify-sdk')}
145
+ setValue={(v) => setPreferred('tax_categories', v)}/>
146
+ </div>
147
+
148
+ <Transition
149
+ enter="transform transition duration-50 duration-300"
150
+ enterFrom="opacity-0 translate-y-2"
151
+ enterTo="opacity-100 translate-y-0"
152
+ show={showStepTwo()}>
153
+ {taxonomies[typeTax] && <div onChange={() => setStepTwoTouched(true)}>
154
+ <label
155
+ className="text-base text-gray-900 m-0 mb-4 block"
156
+ htmlFor="typeTax-search">
157
+ {__('What type of section are you trying to add?', 'extendify-sdk')}
158
+ </label>
159
+ <select
160
+ onChange={(event) => setPreferred(typeTax, event.target.value)}
161
+ value={preferred?.taxonomies[typeTax] ?? ''}
162
+ id="typeTax-search"
163
+ className="h-8 max-w-md min-h-0 w-full px-2 text-sm border border-gray-900 button-focus-big-green rounded-none">
164
+ <option value="">{__('Select type', 'extendify-sdk')}</option>
165
+ {Object.values(taxonomies[typeTax]).map((t) => {
166
+ return <option key={t.term} value={t.term}>
167
+ {t.term}
168
+ </option>
169
+ })}
170
+ </select>
171
+ </div>}
172
+ </Transition>
173
+ </div>
174
+ </div>
175
+ <div className="mt-16 text-left">
176
+ <Transition
177
+ enter="transform transition duration-50 duration-300"
178
+ enterFrom="opacity-0 translate-y-2"
179
+ enterTo="opacity-100 translate-y-0"
180
+ show={showStepThree()}>
181
+ <div onClick={() => setStepThreeTouched(true)}>
182
+ <p className="text-base text-gray-900 m-0 mb-4">
183
+ {__('What style best matches what you\'re looking for?', 'extendify-sdk')}
184
+ </p>
185
+ <div>
186
+ {taxonomies?.tax_style && <div className="grid grid-cols-2 gap-4 mb-8">
187
+ {Object.values(taxonomies.tax_style)
188
+ .filter((t) => t?.type?.includes(preferred?.type) && t?.thumbnail)
189
+ .map((t) => {
190
+ return <button
191
+ key={t.term}
192
+ onClick={() => setPreferred('tax_style', t.term)}
193
+ className={classNames({
194
+ 'bg-transparent p-0 m-0 cursor-pointer': true,
195
+ 'ring-4 ring-offset-4 ring-extendify-main outline-none': t.term === preferred?.taxonomies?.tax_style,
196
+ })}>
197
+ <span className="sr-only">{t.term}</span>
198
+ <img className="w-full" src={t.thumbnail} alt={`Style named ${t.term}`} />
199
+ </button>
200
+ })}
201
+ </div>}
202
+ </div>
203
+ </div>
204
+ </Transition>
205
+ <Transition
206
+ enter="transform transition duration-50 duration-300"
207
+ enterFrom="opacity-0 translate-y-2"
208
+ enterTo="opacity-100 translate-y-0"
209
+ show={showFinalButton()}>
210
+ <button
211
+ onClick={() => fetchDelayThenDisplay()}
212
+ className="button-extendify-main button-focus-big-green p-4 text-xl">
213
+ {preferred?.type === 'template' ?
214
+ __('View templates', 'extendify-sdk') :
215
+ __('View patterns', 'extendify-sdk')}
216
+ </button>
217
+ </Transition>
218
+ </div>
219
+ </div>
220
+ </div>
221
+ <footer className="flex justify-between p-14 w-full">
222
+ <div>
223
+ <svg className="block" width="64" height="64" viewBox="0 0 103 103" fill="none" xmlns="http://www.w3.org/2000/svg">
224
+ <rect y="25.75" width="70.8125" height="77.25" fill="#000000"/>
225
+ <rect x="45.0625" width="57.9375" height="57.9375" fill="#37C2A2"/>
226
+ </svg>
227
+ </div>
228
+ </footer>
229
+ </section>
230
+ </div>
231
+ }
extendify-sdk/src/pages/guide/Welcome.js ADDED
@@ -0,0 +1,166 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // import { useEffect } from '@wordpress/element'
2
+ import { __, sprintf } from '@wordpress/i18n'
3
+ import { useGlobalStore } from '../../state/GlobalState'
4
+ import { useUserStore } from '../../state/User'
5
+ import { General as GeneralApi } from '../../api/General'
6
+ import { useEffect } from '@wordpress/element'
7
+ import { useTemplatesStore } from '../../state/Templates'
8
+
9
+ export default function Welcome() {
10
+ const updateSearchParams = useTemplatesStore(state => state.updateSearchParams)
11
+ const updateTypeAndClose = (type) => {
12
+ GeneralApi.ping(`welcome-${type ?? 'closed'}`)
13
+
14
+ useUserStore.setState({
15
+ hasClickedThroughWelcomePage: true,
16
+ })
17
+
18
+ // Update their preferred type and start the guide, or if they x
19
+ // then send them to the main screen
20
+ // type && useUserStore.getState().updatePreferredOption('type', type)
21
+ // useGlobalStore.setState({
22
+ // currentPage: type
23
+ // ? 'guide-steps'
24
+ // : 'main',
25
+ // })
26
+ // Delete if using welcome guide
27
+ updateSearchParams({
28
+ type: type ?? 'pattern',
29
+ })
30
+ useGlobalStore.setState({ currentPage: 'main' })
31
+ }
32
+
33
+ useEffect(() => {
34
+ GeneralApi.ping('welcome-opened')
35
+ }, [])
36
+
37
+ const emptyToolbar = <div className="w-full h-16 relative z-10 border-solid border-0 flex-shrink-0">
38
+ <div className="flex justify-between items-center px-6 sm:px-12 h-full">
39
+ <div className="flex space-x-12 h-full">
40
+ </div>
41
+ <div className="space-x-2 transform sm:translate-x-8">
42
+ <button
43
+ type="button"
44
+ className="components-button has-icon"
45
+ onClick={() => updateTypeAndClose()}>
46
+ <svg width="24" height="24" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" size="24" role="img" aria-hidden="true" focusable="false"><path d="M13 11.8l6.1-6.3-1-1-6.1 6.2-6.1-6.2-1 1 6.1 6.3-6.5 6.7 1 1 6.5-6.6 6.5 6.6 1-1z"></path></svg>
47
+ <span className="sr-only">{__('Close library', 'extendify-sdk')}</span>
48
+ </button>
49
+ </div>
50
+ </div>
51
+ </div>
52
+
53
+ const headerText = window.extendifySdkData.source === 'Redux' ?
54
+ __('Welcome to the Redux Library by Extendify', 'extendify-sdk') :
55
+ __('Welcome to the Extendify library', 'extendify-sdk')
56
+
57
+ return <div className="w-full h-full flex flex-col items-center relative shadow-xl max-w-screen-4xl mx-auto bg-white">
58
+ {emptyToolbar}
59
+ <section className="flex-grow w-full justify-between flex flex-col overflow-y-scroll">
60
+ <div className="flex items-center flex-grow">
61
+ <div className="w-full p-8 max-w-screen-2xl mx-auto lg:space-x-16 lg:flex space-y-16 lg:space-y-0">
62
+ <div className="flex-grow text-left">
63
+ <h1 className="m-0 mb-10 text-5xl">
64
+ {headerText}
65
+ </h1>
66
+ <div className="max-w-2xl mb-24">
67
+ <p className="mb-10 leading-loose">{__('Congratulations! You have access to our entire library of Gutenberg patterns and templates. You can add up to 3 templates or patterns to your site completely free.', 'extendify-sdk')}</p>
68
+ <p className="mb-6 leading-loose">{__('All patterns and templates are pre-designed to look beautiful with options to fit your style. They also keep your site running lightning fast by using only core blocks with no 3rd party page builder required.', 'extendify-sdk')}</p>
69
+ <a
70
+ className="text-sm text-extendify-link underline"
71
+ href={`https://extendify.com?utm_source=${window.extendifySdkData.source}&utm_medium=library&utm_campaign=welcome`}
72
+ target="_blank"
73
+ rel="noreferrer">
74
+ {__('Learn more about Extendify', 'extendify-sdk')}
75
+ </a>
76
+ </div>
77
+ <h2 className="font-bold border-b border-black max-w-lg pb-2 mb-1">
78
+ {__('Don\'t want the library in your editor?', 'extendify-sdk')}
79
+ </h2>
80
+ <div className="">
81
+ <p>{sprintf(__('Extendify was included with the %s plugin.', 'extendify-sdk'),
82
+ window.extendifySdkData.source)
83
+ }</p>
84
+ <a
85
+ className="text-xs text-extendify-link underline"
86
+ href={`https://extendify.com/how-to-disable-the-extendify-library/?utm_source=${window.extendifySdkData.source}&utm_medium=library&utm_campaign=welcome`}
87
+ target="_blank"
88
+ rel="noreferrer">{__('Learn how to remove the library', 'extendify-sdk')}</a>
89
+ </div>
90
+ </div>
91
+ <div className="flex-shrink-0 flex items-end">
92
+ <div className="flex-grow flex items-center space-y-4 xl:space-y-8 flex-col">
93
+ <button type="button" onClick={() => updateTypeAndClose('pattern')} className="bg-white hover:bg-gray-50 cursor-pointer border border-gray-300 flex space-y-4 flex-col items-center justify-center p-8 lg:px-0 w-80">
94
+ <h3 className="m-0 text-gray-900">{__('Sections', 'extendify-sdk')}</h3>
95
+ <span>
96
+ <svg className="mt-1" xmlns="http://www.w3.org/2000/svg" width="206" height="122" viewBox="0 0 206 122" fill="none">
97
+ <path d="M69 0H0V59H69V0Z" fill="#DFDFDF"/>
98
+ <path d="M204 0H79V60H204V0Z" fill="#DFDFDF"/>
99
+ <path d="M62.166 25H9.16602V28H62.166V25Z" fill="#F9F9F9"/>
100
+ <path d="M63.166 18H10.166V21H63.166V18Z" fill="#F9F9F9"/>
101
+ <path d="M62.166 34H9.16602V39H62.166V34Z" fill="#F9F9F9"/>
102
+ <path d="M62.166 43H9.16602V48H62.166V43Z" fill="#F9F9F9"/>
103
+ <path d="M140.166 25H87.166V28H140.166V25Z" fill="#F9F9F9"/>
104
+ <path d="M140.166 34H87.166V39H140.166V34Z" fill="#F9F9F9"/>
105
+ <path d="M140.166 43H87.166V48H140.166V43Z" fill="#F9F9F9"/>
106
+ <path d="M197.166 25H151.166V28H197.166V25Z" fill="#F9F9F9"/>
107
+ <path d="M141.166 17H88.166V20H141.166V17Z" fill="#F9F9F9"/>
108
+ <path d="M198.166 17H152.166V20H198.166V17Z" fill="#F9F9F9"/>
109
+ <path d="M62.166 10H9.16602V13H62.166V10Z" fill="#F9F9F9"/>
110
+ <path d="M140.166 9H87.166V12H140.166V9Z" fill="#F9F9F9"/>
111
+ <path d="M197.166 9H151.166V12H197.166V9Z" fill="#F9F9F9"/>
112
+ <path d="M197.166 34H151.166V39H197.166V34Z" fill="#F9F9F9"/>
113
+ <path d="M197.166 43H151.166V48H197.166V43Z" fill="#F9F9F9"/>
114
+ <path d="M154.172 77.8088H0V121.216H154.172V77.8088Z" fill="#DFDFDF"/>
115
+ <path d="M133.637 110.446C141.077 110.446 147.109 104.75 147.109 97.7229C147.109 90.6963 141.077 85 133.637 85C126.197 85 120.166 90.6963 120.166 97.7229C120.166 104.75 126.197 110.446 133.637 110.446Z" fill="#F9F9F9"/>
116
+ <path d="M205.166 78H162.166V121H205.166V78Z" fill="#DFDFDF"/>
117
+ <path d="M183.803 111.637C191.243 111.637 197.275 105.941 197.275 98.9141C197.275 91.8874 191.243 86.1912 183.803 86.1912C176.363 86.1912 170.332 91.8874 170.332 98.9141C170.332 105.941 176.363 111.637 183.803 111.637Z" fill="#F9F9F9"/>
118
+ <path d="M113.695 88.7898H13.4082V100.764H113.695V88.7898Z" fill="#F9F9F9"/>
119
+ <path d="M113.695 105.255H13.4082V109.745H113.695V105.255Z" fill="#F9F9F9"/>
120
+ </svg>
121
+ </span>
122
+ <span className="text-extendify-bright underline text-base font-bold">
123
+ {__('View patterns', 'extendify-sdk')}
124
+ </span>
125
+ </button>
126
+ <button type="button" onClick={() => updateTypeAndClose('template')} className="bg-white hover:bg-gray-50 cursor-pointer border border-gray-300 flex space-y-4 flex-col items-center justify-center p-8 lg:px-0 w-80">
127
+ <h3 className="m-0 text-gray-900">{__('Full pages', 'extendify-sdk')}</h3>
128
+ <span>
129
+ <svg xmlns="http://www.w3.org/2000/svg" width="156" height="128" viewBox="0 0 156 128" fill="none">
130
+ <path d="M155.006 38.4395H0.833984V81.8471H155.006V38.4395Z" fill="#DFDFDF"/>
131
+ <path d="M155 0H1V36H155V0Z" fill="#DFDFDF"/>
132
+ <path d="M148 7H10V28H148V7Z" fill="#F9F9F9"/>
133
+ <path d="M147.521 47.4204H9.81445V50.414H147.521V47.4204Z" fill="#F9F9F9"/>
134
+ <path d="M147.521 56.4012H9.81445V60.8917H147.521V56.4012Z" fill="#F9F9F9"/>
135
+ <path d="M147.521 65.3821H9.81445V69.8726H147.521V65.3821Z" fill="#F9F9F9"/>
136
+ <path d="M155.006 83.8089H0.833984V127.217H155.006V83.8089Z" fill="#DFDFDF"/>
137
+ <path d="M21.7897 118.236C29.2297 118.236 35.261 112.539 35.261 105.513C35.261 98.486 29.2297 92.7898 21.7897 92.7898C14.3497 92.7898 8.31836 98.486 8.31836 105.513C8.31836 112.539 14.3497 118.236 21.7897 118.236Z" fill="#F9F9F9"/>
138
+ <path d="M144.529 92.7898H44.2422V104.764H144.529V92.7898Z" fill="#F9F9F9"/>
139
+ <path d="M144.529 109.255H44.2422V113.745H144.529V109.255Z" fill="#F9F9F9"/>
140
+ </svg>
141
+ </span>
142
+ <span className="text-extendify-bright underline text-base font-bold">
143
+ {__('View templates', 'extendify-sdk')}
144
+ </span>
145
+ </button>
146
+ </div>
147
+ </div>
148
+ </div>
149
+ </div>
150
+ <footer className="flex justify-between p-14 w-full">
151
+ <div>
152
+ <svg className="block" width="64" height="64" viewBox="0 0 103 103" fill="none" xmlns="http://www.w3.org/2000/svg">
153
+ <rect y="25.75" width="70.8125" height="77.25" fill="#000000"/>
154
+ <rect x="45.0625" width="57.9375" height="57.9375" fill="#37C2A2"/>
155
+ </svg>
156
+ </div>
157
+ <button
158
+ type="button"
159
+ onClick={() => updateTypeAndClose()}
160
+ className="bg-transparent cursor-pointer text-lg text-extendify-link underline">
161
+ {__('Go to library', 'extendify-sdk')}
162
+ </button>
163
+ </footer>
164
+ </section>
165
+ </div>
166
+ }
extendify-sdk/src/pages/modals/WaitingCrunchingModal.js ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import { Button, Modal } from '@wordpress/components'
2
+ import { useEffect } from '@wordpress/element'
3
+ import { __ } from '@wordpress/i18n'
4
+
5
+ export default function WaitingCrunchingModal({ action, callback, text }) {
6
+ useEffect(() => {
7
+ action.then(async () => await callback())
8
+ })
9
+
10
+ // Currently this is just a basic WP modal that is invoked/rendered outside of the
11
+ // application, but could instead act as a mediary page that renderes within. It's
12
+ // just not yet used there at this time.
13
+ return <Modal
14
+ title={text}
15
+ isDismissible={false}>
16
+ <Button style={{
17
+ width: '100%',
18
+ }} disabled isPrimary isBusy onClick={() => {}}>
19
+ {__('Please wait...', 'extendify-sdk')}
20
+ </Button>
21
+ </Modal>
22
+ }
extendify-sdk/src/pages/parts/Grid.js ADDED
@@ -0,0 +1,144 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import {
2
+ useEffect, useState, useCallback, useRef,
3
+ } from '@wordpress/element'
4
+ import { useTemplatesStore } from '../../state/Templates'
5
+ import { Templates as TemplatesApi } from '../../api/Templates'
6
+ import { useInView } from 'react-intersection-observer'
7
+ import { Spinner, Button } from '@wordpress/components'
8
+ import { __, sprintf } from '@wordpress/i18n'
9
+ import { useIsMounted } from '../../hooks/helpers'
10
+ import TemplateButton from '../../components/TemplateButton'
11
+
12
+ export default function TemplatesList() {
13
+ const isMounted = useIsMounted()
14
+ const templates = useTemplatesStore(state => state.templates)
15
+ const setActiveTemplate = useTemplatesStore(state => state.setActive)
16
+ const appendTemplates = useTemplatesStore(state => state.appendTemplates)
17
+ const [serverError, setServerError] = useState('')
18
+ const [nothingFound, setNothingFound] = useState(false)
19
+ // const [imagesLoaded, setImagesLoaded] = useState([])
20
+ const [loadMoreRef, inView] = useInView()
21
+
22
+ const updateSearchParams = useTemplatesStore(state => state.updateSearchParams)
23
+ const searchParamsRaw = useTemplatesStore(state => state.searchParams)
24
+
25
+ // Store the next page in case we have pagination
26
+ const nextPage = useRef(useTemplatesStore.getState().nextPage)
27
+ const searchParams = useRef(useTemplatesStore.getState().searchParams)
28
+ // Connect to the store on mount, disconnect on unmount, catch state-changes in a reference
29
+ useEffect(() => useTemplatesStore.subscribe(n => (nextPage.current = n),
30
+ state => state.nextPage), [])
31
+ useEffect(() => useTemplatesStore.subscribe(s => (searchParams.current = s),
32
+ state => state.searchParams), [])
33
+
34
+ // Fetch the templates then add them to the current state
35
+ // TODO: This works, but it's not really doing what it's intended to do
36
+ // as it has a side effect in there, and isn't pure.
37
+ // It could be extracted to a hook
38
+ const fetchTemplates = useCallback(async () => {
39
+ setServerError('')
40
+ setNothingFound(false)
41
+ const response = await TemplatesApi.get(searchParams.current, { offset: nextPage.current })
42
+ .catch((error) => {
43
+ console.error(error)
44
+ setServerError(error && error.message
45
+ ? error.message
46
+ : __('Unknown error occured. Check browser console or contact support.', 'extendify-sdk'))
47
+ })
48
+ if (!isMounted.current) {
49
+ return
50
+ }
51
+ if (response?.error?.length) {
52
+ setServerError(response?.error)
53
+ }
54
+ if (response?.records && searchParamsRaw === searchParams.current) {
55
+ useTemplatesStore.setState({
56
+ nextPage: response.offset,
57
+ })
58
+ appendTemplates(response.records)
59
+ setNothingFound(response.records.length <= 0)
60
+ }
61
+ }, [searchParamsRaw, appendTemplates, isMounted])
62
+
63
+ // This is the main driver for loading templates
64
+ // This loads the initial batch of templates. But if we don't yet have taxonomies.
65
+ // There's also an option to skip loading on first mount
66
+ useEffect(() => {
67
+ if (!Object.keys(searchParams.current.taxonomies).length) {
68
+ return
69
+ }
70
+
71
+ if (useTemplatesStore.getState().skipNextFetch) {
72
+ // This is useful if the templates are fetched already and
73
+ // the library moves to/from another state that re-renders
74
+ // The point is to keep the logic close to the list. That may change someday
75
+ useTemplatesStore.setState({
76
+ skipNextFetch: false,
77
+ })
78
+ return
79
+ }
80
+ // setImagesLoaded([])
81
+ fetchTemplates()
82
+ }, [fetchTemplates, searchParams])
83
+
84
+ // Fetches when the load more is in view
85
+ useEffect(() => {
86
+ inView && fetchTemplates()
87
+ }, [inView, fetchTemplates])
88
+
89
+ if (serverError.length) {
90
+ return <div className="text-left">
91
+ <h2 className="text-left">{__('Server error', 'extendify-sdk')}</h2>
92
+ <code className="block max-w-xl p-4 mb-4" style={{
93
+ minHeight: '10rem',
94
+ }}>{serverError}</code>
95
+ <Button isTertiary onClick={() => {
96
+ // setImagesLoaded([])
97
+ updateSearchParams({
98
+ taxonomies: {},
99
+ search: '',
100
+ })
101
+ fetchTemplates()
102
+ }}>{ __('Press here to reload experience')}</Button>
103
+ </div>
104
+ }
105
+
106
+ if (nothingFound) {
107
+ if (searchParamsRaw?.search.length) {
108
+ return <h2 className="text-left">
109
+ {sprintf(__('No results for %s.', 'extendify-sdk'), searchParamsRaw?.search)}
110
+ </h2>
111
+ }
112
+ return <h2 className="text-left">{__('No results found.', 'extendify-sdk')}</h2>
113
+ }
114
+
115
+ if (!templates.length) {
116
+ return <div className="flex items-center justify-center w-full sm:mt-64">
117
+ <Spinner/>
118
+ </div>
119
+ }
120
+
121
+ return <>
122
+ <ul className="flex-grow gap-6 grid xl:grid-cols-2 2xl:grid-cols-3 pb-32 m-0">
123
+ {templates.map((template) => {
124
+ return <li key={template.id}>
125
+ <TemplateButton
126
+ template={template}
127
+ setActiveTemplate={() => setActiveTemplate(template)}
128
+ imageLoaded={() => {}}
129
+ />
130
+ </li>
131
+ })}
132
+ </ul>
133
+ {useTemplatesStore.getState().nextPage && <>
134
+ <div
135
+ className="-translate-y-full flex flex-col h-80 items-end justify-end my-2 relative transform z-0 text"
136
+ ref={loadMoreRef}
137
+ style={{ zIndex: -1 }}>
138
+ </div>
139
+ <div className="my-4">
140
+ <Spinner/>
141
+ </div>
142
+ </>}
143
+ </>
144
+ }
extendify-sdk/src/pages/parts/HasSidebar.js ADDED
@@ -0,0 +1,43 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import LoginButton from '../../components/Loginbutton'
2
+ import { useUserStore } from '../../state/User'
3
+ import { useState, useEffect } from '@wordpress/element'
4
+ // import { useGlobalStore } from '../../state/GlobalState'
5
+ // import { __ } from '@wordpress/i18n'
6
+ // import { useTemplatesStore } from '../../state/Templates'
7
+
8
+ export default function HasSidebar({ children }) {
9
+ const apiKey = useUserStore(state => state.apiKey)
10
+ const [canLogInOut, setCanInLogOut] = useState(false)
11
+ // const setActiveTemplate = useTemplatesStore(state => state.setActive)
12
+ // const openGuide = () => {
13
+ // useGlobalStore.setState({
14
+ // currentPage: 'guide-start',
15
+ // })
16
+ // setActiveTemplate({})
17
+ // }
18
+ useEffect(() => {
19
+ setCanInLogOut(!apiKey.length || window.location.search.indexOf('DEVMODE') > -1)
20
+ }, [apiKey])
21
+ return <>
22
+ <aside className="flex-shrink-0 sm:pl-12 py-0 sm:py-6 relative">
23
+ <div className="sm:w-56 lg:w-72 sticky flex flex-col lg:h-full">{children[0]}</div>
24
+ <div className="hidden sm:flex flex-col absolute bottom-0 bg-white mb-4 w-72 text-left space-y-4">
25
+ <div className="border-t border-gray-300 flex divide-x">
26
+ {/* <button
27
+ type="button"
28
+ className="components-button inline-block flex-1 text-center hover:bg-gray-100"
29
+ onClick={openGuide}>
30
+ {__('Welcome Guide', 'extendify-sdk')}
31
+ </button> */}
32
+ {canLogInOut && <LoginButton/>}
33
+ </div>
34
+ </div>
35
+ </aside>
36
+ <main
37
+ id="extendify-templates"
38
+ // tabIndex="0"
39
+ className="w-full smp:l-12 sm:pt-6 h-full overflow-hidden">
40
+ {children[1]}
41
+ </main>
42
+ </>
43
+ }
extendify-sdk/src/pages/parts/MainWindow.js ADDED
@@ -0,0 +1,77 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import {
2
+ Fragment, useRef, useEffect,
3
+ } from '@wordpress/element'
4
+ import { Dialog, Transition } from '@headlessui/react'
5
+ import useBeacon from '../../hooks/useBeacon'
6
+ import { useGlobalStore } from '../../state/GlobalState'
7
+ import Router from '../Router'
8
+ import useTaxonomies from '../../hooks/useTaxonomies'
9
+ import { General as GeneralApi } from '../../api/General'
10
+ import { useUserStore } from '../../state/User'
11
+
12
+ export default function MainWindow() {
13
+ const containerRef = useRef(null)
14
+ const open = useGlobalStore(state => state.open)
15
+ const metaData = useGlobalStore(state => state.metaData)
16
+ const currentPage = useGlobalStore(state => state.currentPage)
17
+ useBeacon(open)
18
+ useTaxonomies(open)
19
+
20
+ useEffect(() => {
21
+ if (!open) return
22
+ if (!useUserStore.getState().hasClickedThroughWelcomePage) {
23
+ useGlobalStore.setState({ currentPage: 'welcome' })
24
+ return
25
+ }
26
+ // if (!window.sessionStorage.getItem('esxtendify-show-guide')) {
27
+ // window.sessionStorage.setItem('esxtendify-show-guide', '1')
28
+ // useGlobalStore.setState({ currentPage: 'guide-start' })
29
+ // return
30
+ // }
31
+ }, [open])
32
+
33
+ useEffect(() => {
34
+ if (!open || Object.keys(metaData).length) {
35
+ return
36
+ }
37
+ GeneralApi.metaData().then((data) => useGlobalStore.setState({ metaData: data }))
38
+ }, [open, metaData])
39
+
40
+ return (
41
+ <Transition.Root show={open} as={Fragment}>
42
+ <Dialog
43
+ as="div"
44
+ static
45
+ className="extendify-sdk"
46
+ initialFocus={containerRef}
47
+ onClose={() => {}}
48
+ >
49
+ <div className="h-screen w-screen sm:h-auto sm:w-auto fixed z-high inset-0 overflow-y-auto">
50
+ <div className="flex items-end justify-center min-h-screen pt-4 px-4 pb-20 text-center sm:block sm:p-0">
51
+ <Transition.Child
52
+ as={Fragment}
53
+ enter="ease-out duration-300"
54
+ enterFrom="opacity-0"
55
+ enterTo="opacity-100"
56
+ >
57
+ <Dialog.Overlay className="fixed inset-0 bg-black bg-opacity-30 transition-opacity" />
58
+ </Transition.Child>
59
+ <Transition.Child
60
+ as={Fragment}
61
+ enter="ease-out duration-300"
62
+ enterFrom="opacity-0 translate-y-4 sm:translate-y-5"
63
+ enterTo="opacity-100 translate-y-0"
64
+ >
65
+ <div
66
+ ref={containerRef}
67
+ tabIndex="0"
68
+ className="fixed lg:absolute inset-0 lg:overflow-hidden transform transition-all lg:p-5">
69
+ <Router page={currentPage} />
70
+ </div>
71
+ </Transition.Child>
72
+ </div>
73
+ </div>
74
+ </Dialog>
75
+ </Transition.Root>
76
+ )
77
+ }
extendify-sdk/src/pages/parts/RowByTax.js ADDED
@@ -0,0 +1,70 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import { useState, useEffect } from '@wordpress/element'
2
+ import { Templates as TemplatesApi } from '../../api/Templates'
3
+ import { useTemplatesStore } from '../../state/Templates'
4
+ import TemplateButton, { TemplateButtonSkeleton } from '../../components/TemplateButton'
5
+ import { useIsMounted } from '../../hooks/helpers'
6
+ import { useGlobalStore } from '../../state/GlobalState'
7
+ import { __ } from '@wordpress/i18n'
8
+ import { useTaxonomyStore } from '../../state/Taxonomies'
9
+
10
+ const apiResponses = new Map()
11
+
12
+ export default function RowByTax({ searchParams, title, tax }) {
13
+ const updateTaxonomies = useTemplatesStore(state => state.updateTaxonomies)
14
+ const toggleOpenedTaxonomy = useTaxonomyStore(state => state.toggleOpenedTaxonomy)
15
+ const [templates, setTemplates] = useState([])
16
+ const [howManyToFetch, setHowManyToFetch] = useState()
17
+ const setActiveTemplate = useTemplatesStore(state => state.setActive)
18
+ const isModalOpen = useGlobalStore(state => state.open)
19
+ const isMounted = useIsMounted()
20
+
21
+ useEffect(() => {
22
+ setHowManyToFetch(window.innerWidth < 1600 ? 3 : 4)
23
+ }, [])
24
+
25
+ useEffect(() => {
26
+ if (!isMounted.current || !howManyToFetch || !isModalOpen) {
27
+ return
28
+ }
29
+ const key = JSON.stringify(Object.assign(searchParams, { pageSize: howManyToFetch, force: true }))
30
+ if (apiResponses.has(key)) {
31
+ setTemplates(apiResponses.get(key))
32
+ return
33
+ }
34
+ TemplatesApi.get(searchParams, { pageSize: howManyToFetch, force: true }).then((response) => {
35
+ if (response?.records?.length && isMounted.current) {
36
+ apiResponses.set(key, response.records)
37
+ setTemplates(response.records)
38
+ }
39
+ })
40
+ }, [searchParams, isMounted, howManyToFetch, isModalOpen])
41
+
42
+ return <section>
43
+ <div className="flex justify-between">
44
+ <h2 className="text-2xl mb-2 text-extendify-main uppercase m-0 text-left font-bold">
45
+ {title}
46
+ </h2>
47
+ <button
48
+ onClick={() => {
49
+ updateTaxonomies({ [tax]: title })
50
+ toggleOpenedTaxonomy('tax_pattern_types', true)
51
+ }}
52
+ type="button"
53
+ className="components-button">{ __('View all', 'extendify-sdk') }</button>
54
+ </div>
55
+ <ul className="flex-grow gap-6 grid xl:grid-cols-2 2xl:grid-cols-3 3xl:grid-cols-4 pb-16 m-0">
56
+ {/* TODO: we may want to keep intermediary state to have a better loading experience */}
57
+ {templates.length === 0 && Array.from({ length: howManyToFetch }, (_, i) => <TemplateButtonSkeleton key={i}/>)}
58
+ {templates.map((template) => {
59
+ return <li key={template.id}>
60
+ <TemplateButton
61
+ template={template}
62
+ setActiveTemplate={() => setActiveTemplate(template)}
63
+ imageLoaded={() => {}}
64
+ />
65
+ </li>
66
+ })}
67
+ </ul>
68
+ </section>
69
+ // return <div>
70
+ }
extendify-sdk/src/pages/parts/Single.js ADDED
@@ -0,0 +1,121 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import { ImportButton } from '../../components/ImportButton'
2
+ import { __ } from '@wordpress/i18n'
3
+ import classNames from 'classnames'
4
+ import { useUserStore } from '../../state/User'
5
+ import { ExternalLink } from '@wordpress/components'
6
+ import {
7
+ useEffect, useState, useCallback,
8
+ } from '@wordpress/element'
9
+ import { Templates as TemplatesApi } from '../../api/Templates'
10
+ import TaxonomyList from '../../components/TaxonomyList'
11
+ import { useIsMounted } from '../../hooks/helpers'
12
+ import { useTemplatesStore } from '../../state/Templates'
13
+
14
+ const relatedMap = new Map()
15
+
16
+ export default function Single({ template }) {
17
+ const {
18
+ tax_categories: categories,
19
+ required_plugins: requiredPlugins,
20
+ tax_style: styles,
21
+ tax_pattern_types: types,
22
+ } = template.fields
23
+ const apiKey = useUserStore(state => state.apiKey)
24
+ const [related, setRelated] = useState([])
25
+ const [alternatives, setAlternatives] = useState([])
26
+ const isMounted = useIsMounted()
27
+ const setActiveTemplate = useTemplatesStore(state => state.setActive)
28
+
29
+ const changeTemplate = (template) => {
30
+ setRelated([])
31
+ setAlternatives([])
32
+ requestAnimationFrame(() => setActiveTemplate(template))
33
+ }
34
+
35
+ const fetchRelated = useCallback(async (queryType, wantedType) => {
36
+ const key = `${template.id}|${queryType}|${wantedType}`
37
+ if (relatedMap.has(key)) {
38
+ return relatedMap.get(key)
39
+ }
40
+ const results = await TemplatesApi.related(
41
+ template, queryType, wantedType,
42
+ )
43
+ relatedMap.set(key, results)
44
+ return results
45
+ }, [template])
46
+
47
+ useEffect(() => { TemplatesApi.single(template) }, [template])
48
+ useEffect(() => {
49
+ fetchRelated('related', 'pattern').then((results) => {
50
+ isMounted.current && setRelated(results)
51
+ // fetchRelated('alternatives', template.fields.type).then((results) => {
52
+ // isMounted.current && setAlternatives(results)
53
+ // })
54
+ })
55
+ }, [template, fetchRelated, isMounted])
56
+
57
+ return <div className="flex flex-col min-h-screen bg-white sm:min-h-0 items-start overflow-y-auto h-full sm:pr-8 lg:pl-px lg:-ml-px">
58
+ <div className="lg:sticky top-0 bg-white flex flex-col lg:flex-row items-start justify-start lg:items-center lg:justify-between w-full max-w-screen-xl lg:border-b border-gray-300">
59
+ <div className="text-left m-0 h-full px-6 sm:p-0">
60
+ <h1 className="leading-tight text-left mb-2.5 mt-0 sm:text-3xl font-normal">{template.fields.display_title}</h1>
61
+ <ExternalLink href={template.fields.url}>
62
+ {__('Demo', 'extendify-sdk')}
63
+ </ExternalLink>
64
+ </div>
65
+ <div className={classNames({
66
+ 'inline-flex sm:top-auto right-0 m-6 sm:m-0 sm:my-6 space-x-3': true,
67
+ 'top-16 mt-5': !apiKey.length,
68
+ 'top-0': apiKey.length > 0,
69
+ })}>
70
+ <ImportButton template={template} />
71
+ </div>
72
+ </div>
73
+ <div className="max-w-screen-xl sm:w-full sm:m-0 sm:mb-8 m-6 border lg:border-t-0 border-gray-300 m-46">
74
+ <img
75
+ className="max-w-full w-full block"
76
+ src={template?.fields?.screenshot[0]?.thumbnails?.full?.url ?? template?.fields?.screenshot[0]?.url}/>
77
+ </div>
78
+
79
+ <div className="divide-y p-6 sm:p-0 mb-16">
80
+ {related.length > 0 && <section className="mb-4">
81
+ <h4 className="text-lg m-0 mb-4 text-left font-semibold">{__('Related', 'extendify-sdk')}</h4>
82
+ <div className="grid md:grid-cols-2 xl:grid-cols-4 gap-6">
83
+ {related.map((template) => {
84
+ return <button key={template.id}
85
+ type="button"
86
+ className="min-h-60 border border-transparent hover:border-wp-theme-500 transition duration-150 p-0 m-0 cursor-pointer"
87
+ onClick={() => changeTemplate(template)}>
88
+ <img
89
+ className="max-w-full block p-0 m-0 object-cover"
90
+ src={template?.fields?.screenshot[0]?.thumbnails?.large?.url ?? template?.fields?.screenshot[0]?.url}/>
91
+ </button>
92
+ })}
93
+ </div>
94
+ </section>}
95
+ {alternatives.length > 0 && <section className="mb-4 pt-6">
96
+ <h4 className="text-lg m-0 mb-4 text-left font-semibold">{__('Alternatives', 'extendify-sdk')}</h4>
97
+ <div className="grid md:grid-cols-2 xl:grid-cols-4 gap-6">
98
+ {alternatives.map((template) => {
99
+ return <button key={template.id}
100
+ type="button"
101
+ className="min-h-60 border border-transparent hover:border-wp-theme-500 transition duration-150 p-0 m-0 cursor-pointer"
102
+ onClick={() => changeTemplate(template)}>
103
+ <img
104
+ className="max-w-full block p-0 m-0 object-cover"
105
+ src={template?.fields?.screenshot[0]?.thumbnails?.large?.url ?? template?.fields?.screenshot[0]?.url}/>
106
+ </button>
107
+ })}
108
+ </div>
109
+ </section>}
110
+ </div>
111
+
112
+ {/* Hides on desktop and is repeated in the single sidebar too */}
113
+ <div className="text-xs text-left p-6 w-full block sm:hidden divide-y">
114
+ <TaxonomyList
115
+ categories={categories}
116
+ types={types}
117
+ requiredPlugins={requiredPlugins}
118
+ styles={styles}/>
119
+ </div>
120
+ </div>
121
+ }
extendify-sdk/src/pages/parts/Toolbar.js ADDED
@@ -0,0 +1,71 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import { __, sprintf } from '@wordpress/i18n'
2
+ import { useGlobalStore } from '../../state/GlobalState'
3
+ import { useUserStore } from '../../state/User'
4
+
5
+ export default function Toolbar({ className }) {
6
+ const remainingImports = useUserStore(state => state.remainingImports)
7
+ const apiKey = useUserStore(state => state.apiKey)
8
+ const allowedImports = useUserStore(state => state.allowedImports)
9
+ const metaData = useGlobalStore(state => state.metaData)
10
+ const setOpen = useGlobalStore(state => state.setOpen)
11
+
12
+ return <div className={className}>
13
+ <div className="flex justify-between items-center px-6 sm:px-12 h-full">
14
+ <div className="flex space-x-12 h-full">
15
+ <div className="bg-transparent font-bold flex items-center space-x-1.5 lg:w-72">
16
+ <svg className="" width="30" height="30" viewBox="0 0 103 103" fill="none" xmlns="http://www.w3.org/2000/svg">
17
+ <rect y="25.75" width="70.8125" height="77.25" fill="#000000"/>
18
+ <rect x="45.0625" width="57.9375" height="57.9375" fill="#37C2A2"/>
19
+ </svg>
20
+ <span className="text-sm transform translate-y-0.5 whitespace-nowrap">
21
+ {__('Extendify Library', 'extendify-sdk')}
22
+ </span>
23
+ </div>
24
+ {!apiKey.length && <>
25
+ <div className="items-center ml-8 h-full hidden md:flex">
26
+ <div className="m-0 p-0 px-6 text-sm bg-gray-50 border-l border-gray-300 h-full flex items-center whitespace-nowrap">
27
+ {sprintf(
28
+ __('Imports left: %s / %s'), remainingImports(), Number(allowedImports),
29
+ )}
30
+ </div>
31
+ <div className="h-full items-center border-l hidden lg:flex">
32
+ {metaData?.banners?.library_header && <>
33
+ {metaData.banners.library_header?.image &&
34
+ <a
35
+ className="h-full block"
36
+ target="_blank"
37
+ rel="noreferrer"
38
+ href={metaData.banners.library_header.url}>
39
+ <img
40
+ src={metaData.banners.library_header.image}
41
+ alt="Extendify notice"/>
42
+ </a>
43
+ }
44
+ {!metaData.banners.library_header?.image &&
45
+ <div className="text-gray-900 space-x-6 bg-extendify-light px-6 p-2 h-full flex items-center">
46
+ <span className="font-bold text-left">{metaData.banners.library_header.text_backup}</span>
47
+ {metaData.banners.library_header?.url && <div>
48
+ <a
49
+ className="button-extendify-main"
50
+ target="_blank"
51
+ rel="noreferrer"
52
+ href={`${metaData.banners.library_header.url}&utm_source=${encodeURIComponent(window.extendifySdkData.source)}&utm_medium=library&utm_campaign=banner`}>
53
+ {metaData.banners.library_header?.button_text ?? __('Get it now', 'extendify-sdk')}
54
+ </a>
55
+ </div>}
56
+ </div>
57
+ }
58
+ </>}
59
+ </div>
60
+ </div>
61
+ </>}
62
+ </div>
63
+ <div className="space-x-2 transform sm:translate-x-6">
64
+ <button type="button" className="components-button has-icon" onClick={() => setOpen(false)}>
65
+ <svg width="24" height="24" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" size="24" role="img" aria-hidden="true" focusable="false"><path d="M13 11.8l6.1-6.3-1-1-6.1 6.2-6.1-6.2-1 1 6.1 6.3-6.5 6.7 1 1 6.5-6.6 6.5 6.6 1-1z"></path></svg>
66
+ <span className="sr-only">{__('Close library', 'extendify-sdk')}</span>
67
+ </button>
68
+ </div>
69
+ </div>
70
+ </div>
71
+ }
extendify-sdk/src/pages/parts/sidebars/SidebarMain.js ADDED
@@ -0,0 +1,51 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import { useTemplatesStore } from '../../../state/Templates'
2
+ // import { SelectControl } from '@wordpress/components'
3
+ import { __ } from '@wordpress/i18n'
4
+ import { debounce } from 'lodash'
5
+ import { useState } from '@wordpress/element'
6
+ import { Panel } from '@wordpress/components'
7
+ import TaxonomySection from '../../../components/TaxonomySection'
8
+ import { useTaxonomyStore } from '../../../state/Taxonomies'
9
+
10
+ export default function SidebarMain() {
11
+ const updateSearchParams = useTemplatesStore(state => state.updateSearchParams)
12
+ const taxonomies = useTaxonomyStore(state => state.taxonomies)
13
+ const searchParams = useTemplatesStore(state => state.searchParams)
14
+ const searchInputUpdate = debounce((value) => updateSearchParams({
15
+ taxonomies: {},
16
+ search: value,
17
+ }), 500)
18
+ const [searchValue, setSearchValue] = useState(searchParams?.search ?? '')
19
+
20
+ return <>
21
+ <div className="mt-px bg-white mb-6 mx-6 pt-6 lg:mx-0 lg:pt-0">
22
+ <label
23
+ className="sr-only"
24
+ htmlFor="extendify-search-input">{__('What are you looking for?', 'extendify-sdk')}</label>
25
+ <input
26
+ id="extendify-search-input"
27
+ type="search"
28
+ placeholder={__('What are you looking for?', 'extendify-sdk')}
29
+ onChange={(event) => {
30
+ useTemplatesStore.setState({
31
+ nextPage: '',
32
+ })
33
+ setSearchValue(event.target.value)
34
+ searchInputUpdate(event.target.value)
35
+ }}
36
+ value={searchValue}
37
+ className="button-focus bg-gray-100 focus:bg-white border-0 m-0 p-3.5 pb-3 rounded-none text-sm w-full"
38
+ autoComplete="off" />
39
+ <svg className="absolute top-3 right-6 hidden lg:block pointer-events-none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24" role="img" aria-hidden="true" focusable="false"><path d="M13.5 6C10.5 6 8 8.5 8 11.5c0 1.1.3 2.1.9 3l-3.4 3 1 1.1 3.4-2.9c1 .9 2.2 1.4 3.6 1.4 3 0 5.5-2.5 5.5-5.5C19 8.5 16.5 6 13.5 6zm0 9.5c-2.2 0-4-1.8-4-4s1.8-4 4-4 4 1.8 4 4-1.8 4-4 4z"></path></svg>
40
+ </div>
41
+ <div className="mt-px flex-grow hidden overflow-y-auto pb-32 pr-2 pt-px sm:block">
42
+ <Panel>
43
+ {Object.entries(taxonomies).map((taxonomy) => {
44
+ return <TaxonomySection
45
+ key={taxonomy[0]}
46
+ taxonomy={taxonomy} />
47
+ })}
48
+ </Panel>
49
+ </div>
50
+ </>
51
+ }
extendify-sdk/src/pages/parts/sidebars/SidebarSingle.js ADDED
@@ -0,0 +1,59 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import { __ } from '@wordpress/i18n'
2
+ import { useGlobalStore } from '../../../state/GlobalState'
3
+ import { useTemplatesStore } from '../../../state/Templates'
4
+ import { useUserStore } from '../../../state/User'
5
+ import TaxonomyList from '../../../components/TaxonomyList'
6
+
7
+ export default function SidebarSingle({ template }) {
8
+ const setActiveTemplate = useTemplatesStore(state => state.setActive)
9
+ const {
10
+ tax_categories: categories,
11
+ required_plugins: requiredPlugins,
12
+ tax_style: styles,
13
+ tax_pattern_types: types,
14
+ } = template.fields
15
+ const apiKey = useUserStore(state => state.apiKey)
16
+
17
+ const goBack = () => {
18
+ useGlobalStore.setState({ currentPage: 'main' })
19
+ setActiveTemplate({})
20
+ }
21
+
22
+ return <div className="flex flex-col items-start justify-start">
23
+ {!apiKey.length && <div className="h-full flex sm:hidden w-full p-4 justify-between border items-center border-gray-300 bg-extendify-lightest">
24
+ <a
25
+ className="button-extendify-main"
26
+ target="_blank"
27
+ href={`https://extendify.com/pricing?utm_source=${window.extendifySdkData.source}&utm_medium=library&utm_campaign=sign_up&utm_content=main`}
28
+ rel="noreferrer">
29
+ {__('Sign up today to get unlimited access', 'extendify-sdk')}
30
+ </a>
31
+ <button
32
+ className="components-button"
33
+ onClick={() => useGlobalStore.setState({
34
+ currentPage: 'login',
35
+ })}>
36
+ {__('Log in', 'extendify-sdk')}
37
+ </button>
38
+ </div>}
39
+ <div className="p-6 sm:p-0">
40
+ <button
41
+ type="button"
42
+ className="cursor-pointer text-black bg-transparent font-medium flex items-center p-3 transform -translate-x-3 button-focus"
43
+ onClick={goBack}>
44
+ <svg className="fill-current" width="8" height="12" viewBox="0 0 8 12" xmlns="http://www.w3.org/2000/svg">
45
+ <path d="M6.70998 9.88047L2.82998 6.00047L6.70998 2.12047C7.09998 1.73047 7.09998 1.10047 6.70998 0.710469C6.31998 0.320469 5.68998 0.320469 5.29998 0.710469L0.70998 5.30047C0.31998 5.69047 0.31998 6.32047 0.70998 6.71047L5.29998 11.3005C5.68998 11.6905 6.31998 11.6905 6.70998 11.3005C7.08998 10.9105 7.09998 10.2705 6.70998 9.88047Z"/>
46
+ </svg>
47
+ <span className="ml-4">{__('Go back', 'extendify-sdk')}</span>
48
+ </button>
49
+ </div>
50
+ {/* Hides on mobile and is repeated at the bottom of the single page too */}
51
+ <div className="text-left pt-14 divide-y w-full hidden sm:block">
52
+ <TaxonomyList
53
+ categories={categories}
54
+ types={types}
55
+ requiredPlugins={requiredPlugins}
56
+ styles={styles}/>
57
+ </div>
58
+ </div>
59
+ }
extendify-sdk/src/state/GlobalState.js ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import create from 'zustand'
2
+ import { useTemplatesStore } from './Templates'
3
+
4
+ export const useGlobalStore = create((set) => ({
5
+ open: false,
6
+ metaData: {},
7
+ currentPage: 'main',
8
+ setOpen: (value) => {
9
+ set({
10
+ open: value,
11
+ })
12
+ // Reset the state if it's closed manualy
13
+ // value && useTemplatesStore.getState().setActive({}) - Not this though
14
+ value && useTemplatesStore.getState().removeTemplates()
15
+ // value && useTemplatesStore.getState().setActive({}) // This can be used to default to grid
16
+ },
17
+ }))
extendify-sdk/src/state/Importing.js ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import create from 'zustand'
2
+ import { persist } from 'zustand/middleware'
3
+
4
+ export const useWantedTemplateStore = create(persist((set) => ({
5
+ wantedTemplate: {},
6
+ importOnLoad: false,
7
+ setWanted: (template) => set({
8
+ wantedTemplate: template,
9
+ }),
10
+ removeWanted: () => set({
11
+ wantedTemplate: {},
12
+ }),
13
+
14
+ }), {
15
+ name: 'extendify-wanted-template',
16
+ }))
extendify-sdk/src/state/Taxonomies.js ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import create from 'zustand'
2
+
3
+ export const useTaxonomyStore = create((set, get) => ({
4
+ taxonomies: {},
5
+ openedTaxonomies: [],
6
+ setTaxonomies: (taxonomies) => set({
7
+ taxonomies,
8
+ }),
9
+ // This is here because I couldn't get the sidebar components to hold state on re-render
10
+ toggleOpenedTaxonomy: (tax, add) => {
11
+ const opened = get().openedTaxonomies
12
+ set({
13
+ openedTaxonomies: add ? [...opened, tax] : [...opened.filter(t => t != tax)],
14
+ })
15
+ },
16
+ }))
extendify-sdk/src/state/Templates.js ADDED
@@ -0,0 +1,103 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import create from 'zustand'
2
+ import { templates as config } from '../config'
3
+ import { createBlocksFromInnerBlocksTemplate } from '../util/blocks'
4
+ import { useGlobalStore } from './GlobalState'
5
+
6
+ const defaultCategoryForType = (type, tax) => type === 'pattern' && tax === 'tax_categories'
7
+ ? 'Default'
8
+ : ''
9
+
10
+ export const useTemplatesStore = create((set, get) => ({
11
+ templates: [],
12
+ skipNextFetch: false,
13
+ fetchToken: null,
14
+ activeTemplate: {},
15
+ activeTemplateBlocks: {},
16
+ taxonomyDefaultState: {},
17
+ searchParams: {
18
+ taxonomies: {},
19
+ type: config.defaultType,
20
+ search: '',
21
+ },
22
+ // The offset is returned from Airtable.
23
+ // It's removed when search params are updated
24
+ // Or otherwise updated on each request
25
+ nextPage: '',
26
+ removeTemplates: () => set({
27
+ nextPage: '',
28
+ templates: [],
29
+ }),
30
+ appendTemplates: (templates) => set({
31
+ templates: [...new Map([...get().templates, ...templates].map(item => [item.id, item])).values()],
32
+ }),
33
+ setupDefaultTaxonomies: (taxonomies) => {
34
+ // This will transform ['tax_categories', 'tax_another'] to {tax_categories: 'Default', tax_another: ''}
35
+ const defaultState = (tax) => defaultCategoryForType(get().searchParams.type, tax)
36
+ const taxonomyDefaultState = Object.keys(taxonomies).reduce((theObject, current) => (theObject[current] = defaultState(current), theObject), {})
37
+ const tax = {}
38
+ tax.taxonomies = Object.assign(
39
+ {}, taxonomyDefaultState, get().searchParams.taxonomies,
40
+ )
41
+
42
+ set({
43
+ taxonomyDefaultState: taxonomyDefaultState,
44
+ searchParams: {
45
+ ...Object.assign(get().searchParams, tax),
46
+ },
47
+ })
48
+ },
49
+ setActive: (template) => {
50
+ set({ activeTemplate: template })
51
+
52
+ // If we havea template, we should move that that page
53
+ if (Object.keys(template).length > 0) {
54
+ useGlobalStore.setState({ currentPage: 'single' })
55
+ }
56
+
57
+ // This will convert the template to blocks for quick(er) injection
58
+ if (template?.fields?.code) {
59
+ const { parse } = window.wp.blocks
60
+ set({ activeTemplateBlocks: createBlocksFromInnerBlocksTemplate(parse(template.fields.code)) })
61
+ }
62
+ },
63
+ resetTaxonomy: (tax) => {
64
+ get().updateTaxonomies({
65
+ [tax]: get().taxonomyDefaultState[tax] ?? '',
66
+ })
67
+ },
68
+ updateTaxonomies: (params) => {
69
+ const tax = {}
70
+ tax.taxonomies = Object.assign(
71
+ {}, get().searchParams.taxonomies, params,
72
+ )
73
+ get().updateSearchParams(tax)
74
+ },
75
+ updateSearchParams: (params) => {
76
+ // If taxonomies are set to {}, lets use the default
77
+ if (params?.taxonomies && !Object.keys(params.taxonomies).length) {
78
+ params.taxonomies = get().taxonomyDefaultState
79
+ }
80
+
81
+ // If changing the type, change the hard coded tax cat label
82
+ if (params?.type && ['', 'Default'].includes(get().searchParams?.taxonomies?.tax_categories)) {
83
+ get().updateTaxonomies({
84
+ tax_categories: defaultCategoryForType(params.type, 'tax_categories'),
85
+ })
86
+ }
87
+
88
+ const searchParams = Object.assign(
89
+ {}, get().searchParams, params,
90
+ )
91
+
92
+ // If the params are the same then don't update
93
+ if (JSON.stringify(searchParams) === JSON.stringify(get().searchParams)) {
94
+ return
95
+ }
96
+
97
+ set({
98
+ templates: [],
99
+ nextPage: '',
100
+ searchParams,
101
+ })
102
+ },
103
+ }))
extendify-sdk/src/state/User.js ADDED
@@ -0,0 +1,66 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import create from 'zustand'
2
+ import { persist } from 'zustand/middleware'
3
+ import { User } from '../api/User'
4
+
5
+ const storage = {
6
+ getItem: async () => await User.getData(),
7
+ setItem: async (_name, value) => await User.setData(value),
8
+ }
9
+
10
+ export const useUserStore = create(persist((set, get) => ({
11
+ email: '',
12
+ apiKey: '',
13
+ imports: 0,
14
+ uuid: '',
15
+ registration: {
16
+ email: '',
17
+ },
18
+ allowedImports: 0,
19
+ entryPoint: 'not-set',
20
+ enabled: true,
21
+ hasClickedThroughWelcomePage: false,
22
+ canInstallPlugins: false,
23
+ canActivatePlugins: false,
24
+ preferredOptions: {
25
+ taxonomies: {},
26
+ type: '',
27
+ search: '',
28
+ },
29
+ incrementImports: () => set({ imports: get().imports + 1 }),
30
+ canImport: () => get().apiKey
31
+ ? true
32
+ : (Number(get().imports) < Number(get().allowedImports)),
33
+ remainingImports: () => {
34
+ if (get().apiKey) {
35
+ return 'unlimited'
36
+ }
37
+ const remaining = Number(get().allowedImports) - Number(get().imports)
38
+ return remaining > 0 ? remaining : 0
39
+ },
40
+ updatePreferredOption: (option, value) => {
41
+ // If the option doesn't exist, assume it's a taxonomy
42
+ if (!Object.prototype.hasOwnProperty.call(get().preferredOptions, option)) {
43
+ value = Object.assign(
44
+ {},
45
+ get().preferredOptions?.taxonomies ?? {},
46
+ { [option]: value },
47
+ )
48
+ option = 'taxonomies'
49
+ }
50
+ // Reset if the type changes from template/pattern/etc
51
+ const resetTaxonomies = (option == 'type' && value !== get().preferredOptions?.type)
52
+ set({
53
+ preferredOptions: {
54
+ ...Object.assign(
55
+ {},
56
+ get().preferredOptions,
57
+ { [option]: value },
58
+ resetTaxonomies ? { taxonomies: {}} : {},
59
+ ),
60
+ },
61
+ })
62
+ },
63
+ }), {
64
+ name: 'extendify-user',
65
+ getStorage: () => storage,
66
+ }))
extendify-sdk/src/util/airtable.js ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ export function createTemplatesFilterFormula(filters) {
2
+ const { taxonomies, search, type } = filters
3
+ const formula = []
4
+
5
+ // Builds the taxonomy list by looping over all supplied taxonomies
6
+ const taxFormula = Object.entries(taxonomies)
7
+ .filter((tax) => Boolean(tax[1].length))
8
+ .map((tax) => `${tax[0]} = "${tax[1]}"`)
9
+ .join(', ')
10
+
11
+ taxFormula.length && formula.push(taxFormula)
12
+ search?.length && formula.push(`OR(FIND(LOWER("${search}"), LOWER(title))!= 0, FIND(LOWER("${search}"), LOWER({tax_categories})) != 0)`)
13
+ type.length && formula.push(`{type}="${type}"`)
14
+
15
+ return formula.length
16
+ ? `AND(${formula.join(', ')})`.replace(/\r?\n|\r/g, '')
17
+ : ''
18
+ }
extendify-sdk/src/util/blocks.js ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ /**
3
+ * Given an array of InnerBlocks templates or Block Objects,
4
+ * returns an array of created Blocks from them.
5
+ * It handles the case of having InnerBlocks as Blocks by
6
+ * converting them to the proper format to continue recursively.
7
+ *
8
+ * @param {Array} innerBlocksOrTemplate Nested blocks or InnerBlocks templates.
9
+ *
10
+ * @return {Object[]} Array of Block objects.
11
+ */
12
+ export function createBlocksFromInnerBlocksTemplate(innerBlocksOrTemplate = []) {
13
+ const { createBlock } = window.wp.blocks
14
+
15
+ // TODO: This should return the native implementation if available here
16
+
17
+ return innerBlocksOrTemplate.map((innerBlock) => {
18
+ const innerBlockTemplate = Array.isArray(innerBlock)
19
+ ? innerBlock
20
+ : [innerBlock.name, innerBlock.attributes, innerBlock.innerBlocks]
21
+ const [name, attributes, innerBlocks = []] = innerBlockTemplate
22
+ return createBlock(
23
+ name, attributes, createBlocksFromInnerBlocksTemplate(innerBlocks),
24
+ )
25
+ })
26
+ }
extendify-sdk/src/util/general.js ADDED
@@ -0,0 +1,45 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import { isString, toLower } from 'lodash'
2
+ import { useUserStore } from '../state/User'
3
+
4
+ /**
5
+ * Will check if the given string contains the search string
6
+ *
7
+ * @param {string} string
8
+ * @param {string} searchString
9
+ */
10
+
11
+ export function search(string, searchString) {
12
+ // type validation
13
+ if (!isString(string) || !isString(searchString)) {
14
+ return false
15
+ }
16
+
17
+ // changing case
18
+ string = toLower(string)
19
+ searchString = toLower(searchString)
20
+
21
+ // comparing
22
+ return -1 !== searchString.indexOf(string)
23
+ ? true
24
+ : false
25
+ }
26
+
27
+ export const openModal = (source) => setModalVisibility(source, 'open')
28
+ // export const closeModal = () => setModalVisibility('', 'close')
29
+ export function setModalVisibility(source = 'broken-event', state = 'open') {
30
+ useUserStore.setState({
31
+ entryPoint: source,
32
+ })
33
+ window.dispatchEvent(new CustomEvent(`extendify-sdk::${state}-library`, {
34
+ detail: source,
35
+ bubbles: true,
36
+ }))
37
+ }
38
+
39
+ export function getPluginDescription(plugin) {
40
+ switch (plugin) {
41
+ case 'editorplus': return 'Editor Plus'
42
+ case 'ml-slider': return 'MetaSlider'
43
+ }
44
+ return plugin
45
+ }
extendify-sdk/src/util/templateInjection.js ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import { dispatch } from '@wordpress/data'
2
+ import { get } from 'lodash'
3
+
4
+ import { createBlocksFromInnerBlocksTemplate } from './blocks'
5
+
6
+ export function injectTemplate(template) {
7
+ if (!template) {
8
+ throw Error('Template not found')
9
+ }
10
+
11
+ const { parse } = window.wp.blocks
12
+ const createdBlocks = createBlocksFromInnerBlocksTemplate(parse(get(template, 'fields.code')))
13
+ return injectTemplateBlocks(createdBlocks, template)
14
+ }
15
+
16
+ export function injectTemplateBlocks(blocks, templateRaw) {
17
+ const { insertBlocks } = dispatch('core/block-editor')
18
+ return insertBlocks(blocks).then(() => {
19
+ window.dispatchEvent(new CustomEvent('extendify-sdk::template-inserted', {
20
+ detail: {
21
+ template: templateRaw,
22
+ },
23
+ bubbles: true,
24
+ }))
25
+ })
26
+
27
+ }
extendify-sdk/support/notices.php ADDED
@@ -0,0 +1,85 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Adds a notice to the plugins page
4
+ */
5
+
6
+ $extendifySdkNoticesKey = 'extendify_subscribe_to_extendify';
7
+ $extendifySdkUrl = add_query_arg(
8
+ [
9
+ 'utm_source' => rawurlencode(sanitize_text_field(wp_unslash($GLOBALS['extendifySdkSourcePlugin']))),
10
+ 'utm_medium' => 'admin',
11
+ 'utm_campaign' => 'notice',
12
+ 'utm_content' => 'launch60',
13
+ ],
14
+ 'https://extendify.com/pricing'
15
+ );
16
+ $extendifySdkNoticesNonce = wp_create_nonce($extendifySdkNoticesKey);
17
+
18
+ add_action(
19
+ 'admin_notices',
20
+ function () use ($extendifySdkNoticesKey, $extendifySdkNoticesNonce, $extendifySdkUrl) {
21
+ $currentPage = get_current_screen();
22
+ if (!$currentPage || !in_array($currentPage->base, ['plugins'], true)) {
23
+ return;
24
+ }
25
+
26
+ // In short, the notice will always show until they press dismiss.
27
+ if (!get_user_option($extendifySdkNoticesKey)) { ?>
28
+ <div id="<?php echo esc_attr($extendifySdkNoticesKey); ?>" class="notice notice-info"
29
+ style="display:flex;align-items:stretch;justify-content:space-between;position:relative">
30
+ <div style="display:flex;align-items:center;position:relative">
31
+ <div style="margin-right:1.5rem;">
32
+ <svg width="60" height="60" viewBox="0 0 103 103" fill="none" xmlns="http://www.w3.org/2000/svg">
33
+ <title>Extendify Logo</title>
34
+ <rect y="25.75" width="70.8125" height="77.25" fill="black" />
35
+ <rect x="45.0625" width="57.9375" height="57.9375" fill="#37C2A2" />
36
+ </svg>
37
+ </div>
38
+ <div>
39
+ <h3 style="margin-bottom:0.25rem;">
40
+ <?php esc_html_e('Special offer: Save 60% off Extendify Pro', 'extendify-sdk'); ?></h3>
41
+ <div style="max-width:850px;">
42
+ <p>
43
+ <?php esc_html_e('Thank you for using Editor Plus by Extendify. For a limited time, sign up for Extendify Pro and save 60% using coupon code launch60. Extendify Pro gives full access to thousands of templates and patterns designed for the Gutenberg block editor.', 'extendify-sdk'); ?>
44
+ </p>
45
+ <p style="max-width:850px;">
46
+ <?php
47
+ // translators: %s surrounding the word 'here' and is wrapped with <a>.
48
+ printf(esc_html__('Click %1$shere%2$s to sign up today!', 'extendify-sdk'), '<a target="_blank" href="' . esc_url($extendifySdkUrl) . '">', '</a>'); ?>
49
+ </p>
50
+ </div>
51
+ </div>
52
+ </div>
53
+ <div style="margin:5px -5px 0 0;">
54
+ <button
55
+ style="max-width:15px;border:0;background:0;color: #7b7b7b;white-space:nowrap;cursor: pointer;padding: 0"
56
+ type="button"
57
+ title="<?php esc_attr_e('Dismiss notice', 'extendify-sdk'); ?>"
58
+ aria-label="<?php esc_attr_e('Dismiss Extendify notice', 'extendify-sdk'); ?>"
59
+ onclick="jQuery('#<?php echo esc_attr($extendifySdkNoticesKey); ?>').remove();jQuery.post(window.ajaxurl, {action: 'handle_<?php echo esc_attr($extendifySdkNoticesKey); ?>', _wpnonce: '<?php echo esc_attr($extendifySdkNoticesNonce); ?>' });">
60
+ <svg width="15" height="15" style="width:100%" xmlns="http://www.w3.org/2000/svg" fill="none"
61
+ viewBox="0 0 24 24" stroke="currentColor">
62
+ <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12" />
63
+ </svg>
64
+ </button>
65
+ </div>
66
+ </div>
67
+ <?php
68
+ }//end if
69
+ }
70
+ );
71
+
72
+ add_action(
73
+ 'wp_ajax_handle_' . $extendifySdkNoticesKey,
74
+ function () use ($extendifySdkNoticesKey) {
75
+ if (!isset($_POST['_wpnonce']) || !wp_verify_nonce(sanitize_text_field(wp_unslash($_POST['_wpnonce'])), $extendifySdkNoticesKey)) {
76
+ wp_send_json_error(
77
+ ['message' => esc_html__('The security check failed. Please refresh the page and try again.', 'extendify-sdk')],
78
+ 401
79
+ );
80
+ }
81
+
82
+ update_user_option(get_current_user_id(), $extendifySdkNoticesKey, time());
83
+ wp_send_json_success();
84
+ }
85
+ );
extendify-sdk/tailwind.config.js ADDED
@@ -0,0 +1,93 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * The basics:
3
+ * 1. purge will search classes and remove unused CSS when built in production mode
4
+ * 2. important will add specificity. Setting this to true will enforce it. The current strategy
5
+ * should be fine as it is, but if someone else uses tailwind with 'important: true' and they don't scape
6
+ * it could interfere with our class names. If that becomes an issue (I think low chance...), we can add
7
+ * a prefix: https://tailwindcss.com/docs/configuration#prefix
8
+ **/
9
+
10
+ module.exports = {
11
+ // mode: 'jit',
12
+ purge: ['src/**/*'],
13
+ important: '.extendify-sdk',
14
+ darkMode: false,
15
+ theme: {
16
+ screens: {
17
+ xxs: '280px',
18
+ xs: '480px',
19
+ sm: '600px',
20
+ md: '782px',
21
+ md2: '960px', // admin sidebar auto folds
22
+ lg: '1080px', // adminbar goes big
23
+ xl: '1280px',
24
+ '2xl': '1440px',
25
+ '3xl': '1600px',
26
+ '4xl': '1920px',
27
+ },
28
+ // Extend will add on to TW config, where the above will override and replace
29
+ extend: {
30
+ minWidth: {
31
+ md2: '960px',
32
+ },
33
+ minHeight: {
34
+ 60: '15rem',
35
+ },
36
+ fontSize: {
37
+ '3xl': ['2rem', '2.5rem'],
38
+ },
39
+ colors: {
40
+ extendify: {
41
+ lightest: '#f8fffe',
42
+ light: '#e7f8f5',
43
+ main: '#008160',
44
+ link: '#299875',
45
+ bright: '#30a850',
46
+ },
47
+ 'wp-theme': {
48
+ // It's a Tailwind convention for the base color to use 500 then build off that
49
+ 500: 'var(--wp-admin-theme-color)',
50
+ 600: 'var(--wp-admin-theme-color-darker-10)',
51
+ 700: 'var(--wp-admin-theme-color-darker-20)',
52
+ },
53
+ wp: {
54
+ alert: {
55
+ yellow: '#f0b849',
56
+ red: '#cc1818',
57
+ green: '#4ab866',
58
+ },
59
+ },
60
+ gray: {
61
+ 50: '#fafafa',
62
+ 100: '#f0f0f0',
63
+ 150: '#eaeaea', // This wasn't a variable but I saw it on buttons
64
+ 200: '#e0e0e0', // Used sparingly for light borders.
65
+ 300: '#dddddd', // Used for most borders.
66
+ 400: '#cccccc',
67
+ 500: '#cccccc', // WP didn't have a 500 value for some reason so I just copied the 400
68
+ 600: '#949494', // Meets 3:1 UI or large text contrast against white.
69
+ 700: '#757575', // Meets 4.6:1 text contrast against white.
70
+ 900: '#1e1e1e',
71
+ },
72
+ },
73
+ zIndex: {
74
+ high: '99999',
75
+ max: '2147483647', // Highest the browser allows - don't block WP re-auth modal though
76
+ },
77
+ },
78
+ },
79
+ variants: {
80
+ extend: {
81
+ borderWidth: ['group-hover', 'hover', 'focus'],
82
+ backgroundColor: ['active'],
83
+ textColor: ['active'],
84
+ },
85
+ },
86
+ plugins: [
87
+ require('@tailwindcss/aspect-ratio'),
88
+ ],
89
+ corePlugins: {
90
+ preflight: false,
91
+ container: false,
92
+ },
93
+ }
extendify-sdk/vendor/autoload.php ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ // autoload.php @generated by Composer
4
+
5
+ require_once __DIR__ . '/composer/autoload_real.php';
6
+
7
+ return ComposerAutoloaderInit340a6822f05e2bfceab6432d90c2eeaa::getLoader();
extendify-sdk/vendor/composer/ClassLoader.php ADDED
@@ -0,0 +1,445 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ * This file is part of Composer.
5
+ *
6
+ * (c) Nils Adermann <naderman@naderman.de>
7
+ * Jordi Boggiano <j.boggiano@seld.be>
8
+ *
9
+ * For the full copyright and license information, please view the LICENSE
10
+ * file that was distributed with this source code.
11
+ */
12
+
13
+ namespace Composer\Autoload;
14
+
15
+ /**
16
+ * ClassLoader implements a PSR-0, PSR-4 and classmap class loader.
17
+ *
18
+ * $loader = new \Composer\Autoload\ClassLoader();
19
+ *
20
+ * // register classes with namespaces
21
+ * $loader->add('Symfony\Component', __DIR__.'/component');
22
+ * $loader->add('Symfony', __DIR__.'/framework');
23
+ *
24
+ * // activate the autoloader
25
+ * $loader->register();
26
+ *
27
+ * // to enable searching the include path (eg. for PEAR packages)
28
+ * $loader->setUseIncludePath(true);
29
+ *
30
+ * In this example, if you try to use a class in the Symfony\Component
31
+ * namespace or one of its children (Symfony\Component\Console for instance),
32
+ * the autoloader will first look for the class under the component/
33
+ * directory, and it will then fallback to the framework/ directory if not
34
+ * found before giving up.
35
+ *
36
+ * This class is loosely based on the Symfony UniversalClassLoader.
37
+ *
38
+ * @author Fabien Potencier <fabien@symfony.com>
39
+ * @author Jordi Boggiano <j.boggiano@seld.be>
40
+ * @see http://www.php-fig.org/psr/psr-0/
41
+ * @see http://www.php-fig.org/psr/psr-4/
42
+ */
43
+ class ClassLoader
44
+ {
45
+ // PSR-4
46
+ private $prefixLengthsPsr4 = array();
47
+ private $prefixDirsPsr4 = array();
48
+ private $fallbackDirsPsr4 = array();
49
+
50
+ // PSR-0
51
+ private $prefixesPsr0 = array();
52
+ private $fallbackDirsPsr0 = array();
53
+
54
+ private $useIncludePath = false;
55
+ private $classMap = array();
56
+ private $classMapAuthoritative = false;
57
+ private $missingClasses = array();
58
+ private $apcuPrefix;
59
+
60
+ public function getPrefixes()
61
+ {
62
+ if (!empty($this->prefixesPsr0)) {
63
+ return call_user_func_array('array_merge', array_values($this->prefixesPsr0));
64
+ }
65
+
66
+ return array();
67
+ }
68
+
69
+ public function getPrefixesPsr4()
70
+ {
71
+ return $this->prefixDirsPsr4;
72
+ }
73
+
74
+ public function getFallbackDirs()
75
+ {
76
+ return $this->fallbackDirsPsr0;
77
+ }
78
+
79
+ public function getFallbackDirsPsr4()
80
+ {
81
+ return $this->fallbackDirsPsr4;
82
+ }
83
+
84
+ public function getClassMap()
85
+ {
86
+ return $this->classMap;
87
+ }
88
+
89
+ /**
90
+ * @param array $classMap Class to filename map
91
+ */
92
+ public function addClassMap(array $classMap)
93
+ {
94
+ if ($this->classMap) {
95
+ $this->classMap = array_merge($this->classMap, $classMap);
96
+ } else {
97
+ $this->classMap = $classMap;
98
+ }
99
+ }
100
+
101
+ /**
102
+ * Registers a set of PSR-0 directories for a given prefix, either
103
+ * appending or prepending to the ones previously set for this prefix.
104
+ *
105
+ * @param string $prefix The prefix
106
+ * @param array|string $paths The PSR-0 root directories
107
+ * @param bool $prepend Whether to prepend the directories
108
+ */
109
+ public function add($prefix, $paths, $prepend = false)
110
+ {
111
+ if (!$prefix) {
112
+ if ($prepend) {
113
+ $this->fallbackDirsPsr0 = array_merge(
114
+ (array) $paths,
115
+ $this->fallbackDirsPsr0
116
+ );
117
+ } else {
118
+ $this->fallbackDirsPsr0 = array_merge(
119
+ $this->fallbackDirsPsr0,
120
+ (array) $paths
121
+ );
122
+ }
123
+
124
+ return;
125
+ }
126
+
127
+ $first = $prefix[0];
128
+ if (!isset($this->prefixesPsr0[$first][$prefix])) {
129
+ $this->prefixesPsr0[$first][$prefix] = (array) $paths;
130
+
131
+ return;
132
+ }
133
+ if ($prepend) {
134
+ $this->prefixesPsr0[$first][$prefix] = array_merge(
135
+ (array) $paths,
136
+ $this->prefixesPsr0[$first][$prefix]
137
+ );
138
+ } else {
139
+ $this->prefixesPsr0[$first][$prefix] = array_merge(
140
+ $this->prefixesPsr0[$first][$prefix],
141
+ (array) $paths
142
+ );
143
+ }
144
+ }
145
+
146
+ /**
147
+ * Registers a set of PSR-4 directories for a given namespace, either
148
+ * appending or prepending to the ones previously set for this namespace.
149
+ *
150
+ * @param string $prefix The prefix/namespace, with trailing '\\'
151
+ * @param array|string $paths The PSR-4 base directories
152
+ * @param bool $prepend Whether to prepend the directories
153
+ *
154
+ * @throws \InvalidArgumentException
155
+ */
156
+ public function addPsr4($prefix, $paths, $prepend = false)
157
+ {
158
+ if (!$prefix) {
159
+ // Register directories for the root namespace.
160
+ if ($prepend) {
161
+ $this->fallbackDirsPsr4 = array_merge(
162
+ (array) $paths,
163
+ $this->fallbackDirsPsr4
164
+ );
165
+ } else {
166
+ $this->fallbackDirsPsr4 = array_merge(
167
+ $this->fallbackDirsPsr4,
168
+ (array) $paths
169
+ );
170
+ }
171
+ } elseif (!isset($this->prefixDirsPsr4[$prefix])) {
172
+ // Register directories for a new namespace.
173
+ $length = strlen($prefix);
174
+ if ('\\' !== $prefix[$length - 1]) {
175
+ throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
176
+ }
177
+ $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
178
+ $this->prefixDirsPsr4[$prefix] = (array) $paths;
179
+ } elseif ($prepend) {
180
+ // Prepend directories for an already registered namespace.
181
+ $this->prefixDirsPsr4[$prefix] = array_merge(
182
+ (array) $paths,
183
+ $this->prefixDirsPsr4[$prefix]
184
+ );
185
+ } else {
186
+ // Append directories for an already registered namespace.
187
+ $this->prefixDirsPsr4[$prefix] = array_merge(
188
+ $this->prefixDirsPsr4[$prefix],
189
+ (array) $paths
190
+ );
191
+ }
192
+ }
193
+
194
+ /**
195
+ * Registers a set of PSR-0 directories for a given prefix,
196
+ * replacing any others previously set for this prefix.
197
+ *
198
+ * @param string $prefix The prefix
199
+ * @param array|string $paths The PSR-0 base directories
200
+ */
201
+ public function set($prefix, $paths)
202
+ {
203
+ if (!$prefix) {
204
+ $this->fallbackDirsPsr0 = (array) $paths;
205
+ } else {
206
+ $this->prefixesPsr0[$prefix[0]][$prefix] = (array) $paths;
207
+ }
208
+ }
209
+
210
+ /**
211
+ * Registers a set of PSR-4 directories for a given namespace,
212
+ * replacing any others previously set for this namespace.
213
+ *
214
+ * @param string $prefix The prefix/namespace, with trailing '\\'
215
+ * @param array|string $paths The PSR-4 base directories
216
+ *
217
+ * @throws \InvalidArgumentException
218
+ */
219
+ public function setPsr4($prefix, $paths)
220
+ {
221
+ if (!$prefix) {
222
+ $this->fallbackDirsPsr4 = (array) $paths;
223
+ } else {
224
+ $length = strlen($prefix);
225
+ if ('\\' !== $prefix[$length - 1]) {
226
+ throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
227
+ }
228
+ $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
229
+ $this->prefixDirsPsr4[$prefix] = (array) $paths;
230
+ }
231
+ }
232
+
233
+ /**
234
+ * Turns on searching the include path for class files.
235
+ *
236
+ * @param bool $useIncludePath
237
+ */
238
+ public function setUseIncludePath($useIncludePath)
239
+ {
240
+ $this->useIncludePath = $useIncludePath;
241
+ }
242
+
243
+ /**
244
+ * Can be used to check if the autoloader uses the include path to check
245
+ * for classes.
246
+ *
247
+ * @return bool
248
+ */
249
+ public function getUseIncludePath()
250
+ {
251
+ return $this->useIncludePath;
252
+ }
253
+
254
+ /**
255
+ * Turns off searching the prefix and fallback directories for classes
256
+ * that have not been registered with the class map.
257
+ *
258
+ * @param bool $classMapAuthoritative
259
+ */
260
+ public function setClassMapAuthoritative($classMapAuthoritative)
261
+ {
262
+ $this->classMapAuthoritative = $classMapAuthoritative;
263
+ }
264
+
265
+ /**
266
+ * Should class lookup fail if not found in the current class map?
267
+ *
268
+ * @return bool
269
+ */
270
+ public function isClassMapAuthoritative()
271
+ {
272
+ return $this->classMapAuthoritative;
273
+ }
274
+
275
+ /**
276
+ * APCu prefix to use to cache found/not-found classes, if the extension is enabled.
277
+ *
278
+ * @param string|null $apcuPrefix
279
+ */
280
+ public function setApcuPrefix($apcuPrefix)
281
+ {
282
+ $this->apcuPrefix = function_exists('apcu_fetch') && filter_var(ini_get('apc.enabled'), FILTER_VALIDATE_BOOLEAN) ? $apcuPrefix : null;
283
+ }
284
+
285
+ /**
286
+ * The APCu prefix in use, or null if APCu caching is not enabled.
287
+ *
288
+ * @return string|null
289
+ */
290
+ public function getApcuPrefix()
291
+ {
292
+ return $this->apcuPrefix;
293
+ }
294
+
295
+ /**
296
+ * Registers this instance as an autoloader.
297
+ *
298
+ * @param bool $prepend Whether to prepend the autoloader or not
299
+ */
300
+ public function register($prepend = false)
301
+ {
302
+ spl_autoload_register(array($this, 'loadClass'), true, $prepend);
303
+ }
304
+
305
+ /**
306
+ * Unregisters this instance as an autoloader.
307
+ */
308
+ public function unregister()
309
+ {
310
+ spl_autoload_unregister(array($this, 'loadClass'));
311
+ }
312
+
313
+ /**
314
+ * Loads the given class or interface.
315
+ *
316
+ * @param string $class The name of the class
317
+ * @return bool|null True if loaded, null otherwise
318
+ */
319
+ public function loadClass($class)
320
+ {
321
+ if ($file = $this->findFile($class)) {
322
+ includeFile($file);
323
+
324
+ return true;
325
+ }
326
+ }
327
+
328
+ /**
329
+ * Finds the path to the file where the class is defined.
330
+ *
331
+ * @param string $class The name of the class
332
+ *
333
+ * @return string|false The path if found, false otherwise
334
+ */
335
+ public function findFile($class)
336
+ {
337
+ // class map lookup
338
+ if (isset($this->classMap[$class])) {
339
+ return $this->classMap[$class];
340
+ }
341
+ if ($this->classMapAuthoritative || isset($this->missingClasses[$class])) {
342
+ return false;
343
+ }
344
+ if (null !== $this->apcuPrefix) {
345
+ $file = apcu_fetch($this->apcuPrefix.$class, $hit);
346
+ if ($hit) {
347
+ return $file;
348
+ }
349
+ }
350
+
351
+ $file = $this->findFileWithExtension($class, '.php');
352
+
353
+ // Search for Hack files if we are running on HHVM
354
+ if (false === $file && defined('HHVM_VERSION')) {
355
+ $file = $this->findFileWithExtension($class, '.hh');
356
+ }
357
+
358
+ if (null !== $this->apcuPrefix) {
359
+ apcu_add($this->apcuPrefix.$class, $file);
360
+ }
361
+
362
+ if (false === $file) {
363
+ // Remember that this class does not exist.
364
+ $this->missingClasses[$class] = true;
365
+ }
366
+
367
+ return $file;
368
+ }
369
+
370
+ private function findFileWithExtension($class, $ext)
371
+ {
372
+ // PSR-4 lookup
373
+ $logicalPathPsr4 = strtr($class, '\\', DIRECTORY_SEPARATOR) . $ext;
374
+
375
+ $first = $class[0];
376
+ if (isset($this->prefixLengthsPsr4[$first])) {
377
+ $subPath = $class;
378
+ while (false !== $lastPos = strrpos($subPath, '\\')) {
379
+ $subPath = substr($subPath, 0, $lastPos);
380
+ $search = $subPath . '\\';
381
+ if (isset($this->prefixDirsPsr4[$search])) {
382
+ $pathEnd = DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $lastPos + 1);
383
+ foreach ($this->prefixDirsPsr4[$search] as $dir) {
384
+ if (file_exists($file = $dir . $pathEnd)) {
385
+ return $file;
386
+ }
387
+ }
388
+ }
389
+ }
390
+ }
391
+
392
+ // PSR-4 fallback dirs
393
+ foreach ($this->fallbackDirsPsr4 as $dir) {
394
+ if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr4)) {
395
+ return $file;
396
+ }
397
+ }
398
+
399
+ // PSR-0 lookup
400
+ if (false !== $pos = strrpos($class, '\\')) {
401
+ // namespaced class name
402
+ $logicalPathPsr0 = substr($logicalPathPsr4, 0, $pos + 1)
403
+ . strtr(substr($logicalPathPsr4, $pos + 1), '_', DIRECTORY_SEPARATOR);
404
+ } else {
405
+ // PEAR-like class name
406
+ $logicalPathPsr0 = strtr($class, '_', DIRECTORY_SEPARATOR) . $ext;
407
+ }
408
+
409
+ if (isset($this->prefixesPsr0[$first])) {
410
+ foreach ($this->prefixesPsr0[$first] as $prefix => $dirs) {
411
+ if (0 === strpos($class, $prefix)) {
412
+ foreach ($dirs as $dir) {
413
+ if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) {
414
+ return $file;
415
+ }
416
+ }
417
+ }
418
+ }
419
+ }
420
+
421
+ // PSR-0 fallback dirs
422
+ foreach ($this->fallbackDirsPsr0 as $dir) {
423
+ if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) {
424
+ return $file;
425
+ }
426
+ }
427
+
428
+ // PSR-0 include paths.
429
+ if ($this->useIncludePath && $file = stream_resolve_include_path($logicalPathPsr0)) {
430
+ return $file;
431
+ }
432
+
433
+ return false;
434
+ }
435
+ }
436
+
437
+ /**
438
+ * Scope isolated include.
439
+ *
440
+ * Prevents access to $this/self from included files.
441
+ */
442
+ function includeFile($file)
443
+ {
444
+ include $file;
445
+ }
extendify-sdk/vendor/composer/InstalledVersions.php ADDED
@@ -0,0 +1,654 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+
4
+
5
+
6
+
7
+
8
+
9
+
10
+
11
+
12
+
13
+ namespace Composer;
14
+
15
+ use Composer\Autoload\ClassLoader;
16
+ use Composer\Semver\VersionParser;
17
+
18
+
19
+
20
+
21
+
22
+
23
+ class InstalledVersions
24
+ {
25
+ private static $installed = array (
26
+ 'root' =>
27
+ array (
28
+ 'pretty_version' => 'dev-main',
29
+ 'version' => 'dev-main',
30
+ 'aliases' =>
31
+ array (
32
+ ),
33
+ 'reference' => 'ac2cfec95277e7980dfcf8dfde5cd858f1023e03',
34
+ 'name' => 'extendify/extendify-sdk',
35
+ ),
36
+ 'versions' =>
37
+ array (
38
+ 'dealerdirect/phpcodesniffer-composer-installer' =>
39
+ array (
40
+ 'pretty_version' => 'v0.7.1',
41
+ 'version' => '0.7.1.0',
42
+ 'aliases' =>
43
+ array (
44
+ ),
45
+ 'reference' => 'fe390591e0241955f22eb9ba327d137e501c771c',
46
+ ),
47
+ 'doctrine/instantiator' =>
48
+ array (
49
+ 'pretty_version' => '1.4.0',
50
+ 'version' => '1.4.0.0',
51
+ 'aliases' =>
52
+ array (
53
+ ),
54
+ 'reference' => 'd56bf6102915de5702778fe20f2de3b2fe570b5b',
55
+ ),
56
+ 'extendify/extendify-sdk' =>
57
+ array (
58
+ 'pretty_version' => 'dev-main',
59
+ 'version' => 'dev-main',
60
+ 'aliases' =>
61
+ array (
62
+ ),
63
+ 'reference' => 'ac2cfec95277e7980dfcf8dfde5cd858f1023e03',
64
+ ),
65
+ 'johnpbloch/wordpress-core' =>
66
+ array (
67
+ 'pretty_version' => '5.7.0',
68
+ 'version' => '5.7.0.0',
69
+ 'aliases' =>
70
+ array (
71
+ ),
72
+ 'reference' => '8b057056692ca196aaa7a7ddd915f29426922c6d',
73
+ ),
74
+ 'myclabs/deep-copy' =>
75
+ array (
76
+ 'pretty_version' => '1.10.2',
77
+ 'version' => '1.10.2.0',
78
+ 'aliases' =>
79
+ array (
80
+ ),
81
+ 'reference' => '776f831124e9c62e1a2c601ecc52e776d8bb7220',
82
+ 'replaced' =>
83
+ array (
84
+ 0 => '1.10.2',
85
+ ),
86
+ ),
87
+ 'nikic/php-parser' =>
88
+ array (
89
+ 'pretty_version' => 'v4.10.4',
90
+ 'version' => '4.10.4.0',
91
+ 'aliases' =>
92
+ array (
93
+ ),
94
+ 'reference' => 'c6d052fc58cb876152f89f532b95a8d7907e7f0e',
95
+ ),
96
+ 'phar-io/manifest' =>
97
+ array (
98
+ 'pretty_version' => '2.0.1',
99
+ 'version' => '2.0.1.0',
100
+ 'aliases' =>
101
+ array (
102
+ ),
103
+ 'reference' => '85265efd3af7ba3ca4b2a2c34dbfc5788dd29133',
104
+ ),
105
+ 'phar-io/version' =>
106
+ array (
107
+ 'pretty_version' => '3.1.0',
108
+ 'version' => '3.1.0.0',
109
+ 'aliases' =>
110
+ array (
111
+ ),
112
+ 'reference' => 'bae7c545bef187884426f042434e561ab1ddb182',
113
+ ),
114
+ 'phpcompatibility/php-compatibility' =>
115
+ array (
116
+ 'pretty_version' => '9.3.5',
117
+ 'version' => '9.3.5.0',
118
+ 'aliases' =>
119
+ array (
120
+ ),
121
+ 'reference' => '9fb324479acf6f39452e0655d2429cc0d3914243',
122
+ ),
123
+ 'phpcompatibility/phpcompatibility-paragonie' =>
124
+ array (
125
+ 'pretty_version' => '1.3.1',
126
+ 'version' => '1.3.1.0',
127
+ 'aliases' =>
128
+ array (
129
+ ),
130
+ 'reference' => 'ddabec839cc003651f2ce695c938686d1086cf43',
131
+ ),
132
+ 'phpcompatibility/phpcompatibility-wp' =>
133
+ array (
134
+ 'pretty_version' => '2.1.1',
135
+ 'version' => '2.1.1.0',
136
+ 'aliases' =>
137
+ array (
138
+ ),
139
+ 'reference' => 'b7dc0cd7a8f767ccac5e7637550ea1c50a67b09e',
140
+ ),
141
+ 'phpdocumentor/reflection-common' =>
142
+ array (
143
+ 'pretty_version' => '2.2.0',
144
+ 'version' => '2.2.0.0',
145
+ 'aliases' =>
146
+ array (
147
+ ),
148
+ 'reference' => '1d01c49d4ed62f25aa84a747ad35d5a16924662b',
149
+ ),
150
+ 'phpdocumentor/reflection-docblock' =>
151
+ array (
152
+ 'pretty_version' => '5.2.2',
153
+ 'version' => '5.2.2.0',
154
+ 'aliases' =>
155
+ array (
156
+ ),
157
+ 'reference' => '069a785b2141f5bcf49f3e353548dc1cce6df556',
158
+ ),
159
+ 'phpdocumentor/type-resolver' =>
160
+ array (
161
+ 'pretty_version' => '1.4.0',
162
+ 'version' => '1.4.0.0',
163
+ 'aliases' =>
164
+ array (
165
+ ),
166
+ 'reference' => '6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0',
167
+ ),
168
+ 'phpspec/prophecy' =>
169
+ array (
170
+ 'pretty_version' => '1.13.0',
171
+ 'version' => '1.13.0.0',
172
+ 'aliases' =>
173
+ array (
174
+ ),
175
+ 'reference' => 'be1996ed8adc35c3fd795488a653f4b518be70ea',
176
+ ),
177
+ 'phpunit/php-code-coverage' =>
178
+ array (
179
+ 'pretty_version' => '9.2.6',
180
+ 'version' => '9.2.6.0',
181
+ 'aliases' =>
182
+ array (
183
+ ),
184
+ 'reference' => 'f6293e1b30a2354e8428e004689671b83871edde',
185
+ ),
186
+ 'phpunit/php-file-iterator' =>
187
+ array (
188
+ 'pretty_version' => '3.0.5',
189
+ 'version' => '3.0.5.0',
190
+ 'aliases' =>
191
+ array (
192
+ ),
193
+ 'reference' => 'aa4be8575f26070b100fccb67faabb28f21f66f8',
194
+ ),
195
+ 'phpunit/php-invoker' =>
196
+ array (
197
+ 'pretty_version' => '3.1.1',
198
+ 'version' => '3.1.1.0',
199
+ 'aliases' =>
200
+ array (
201
+ ),
202
+ 'reference' => '5a10147d0aaf65b58940a0b72f71c9ac0423cc67',
203
+ ),
204
+ 'phpunit/php-text-template' =>
205
+ array (
206
+ 'pretty_version' => '2.0.4',
207
+ 'version' => '2.0.4.0',
208
+ 'aliases' =>
209
+ array (
210
+ ),
211
+ 'reference' => '5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28',
212
+ ),
213
+ 'phpunit/php-timer' =>
214
+ array (
215
+ 'pretty_version' => '5.0.3',
216
+ 'version' => '5.0.3.0',
217
+ 'aliases' =>
218
+ array (
219
+ ),
220
+ 'reference' => '5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2',
221
+ ),
222
+ 'phpunit/phpunit' =>
223
+ array (
224
+ 'pretty_version' => '9.5.4',
225
+ 'version' => '9.5.4.0',
226
+ 'aliases' =>
227
+ array (
228
+ ),
229
+ 'reference' => 'c73c6737305e779771147af66c96ca6a7ed8a741',
230
+ ),
231
+ 'sebastian/cli-parser' =>
232
+ array (
233
+ 'pretty_version' => '1.0.1',
234
+ 'version' => '1.0.1.0',
235
+ 'aliases' =>
236
+ array (
237
+ ),
238
+ 'reference' => '442e7c7e687e42adc03470c7b668bc4b2402c0b2',
239
+ ),
240
+ 'sebastian/code-unit' =>
241
+ array (
242
+ 'pretty_version' => '1.0.8',
243
+ 'version' => '1.0.8.0',
244
+ 'aliases' =>
245
+ array (
246
+ ),
247
+ 'reference' => '1fc9f64c0927627ef78ba436c9b17d967e68e120',
248
+ ),
249
+ 'sebastian/code-unit-reverse-lookup' =>
250
+ array (
251
+ 'pretty_version' => '2.0.3',
252
+ 'version' => '2.0.3.0',
253
+ 'aliases' =>
254
+ array (
255
+ ),
256
+ 'reference' => 'ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5',
257
+ ),
258
+ 'sebastian/comparator' =>
259
+ array (
260
+ 'pretty_version' => '4.0.6',
261
+ 'version' => '4.0.6.0',
262
+ 'aliases' =>
263
+ array (
264
+ ),
265
+ 'reference' => '55f4261989e546dc112258c7a75935a81a7ce382',
266
+ ),
267
+ 'sebastian/complexity' =>
268
+ array (
269
+ 'pretty_version' => '2.0.2',
270
+ 'version' => '2.0.2.0',
271
+ 'aliases' =>
272
+ array (
273
+ ),
274
+ 'reference' => '739b35e53379900cc9ac327b2147867b8b6efd88',
275
+ ),
276
+ 'sebastian/diff' =>
277
+ array (
278
+ 'pretty_version' => '4.0.4',
279
+ 'version' => '4.0.4.0',
280
+ 'aliases' =>
281
+ array (
282
+ ),
283
+ 'reference' => '3461e3fccc7cfdfc2720be910d3bd73c69be590d',
284
+ ),
285
+ 'sebastian/environment' =>
286
+ array (
287
+ 'pretty_version' => '5.1.3',
288
+ 'version' => '5.1.3.0',
289
+ 'aliases' =>
290
+ array (
291
+ ),
292
+ 'reference' => '388b6ced16caa751030f6a69e588299fa09200ac',
293
+ ),
294
+ 'sebastian/exporter' =>
295
+ array (
296
+ 'pretty_version' => '4.0.3',
297
+ 'version' => '4.0.3.0',
298
+ 'aliases' =>
299
+ array (
300
+ ),
301
+ 'reference' => 'd89cc98761b8cb5a1a235a6b703ae50d34080e65',
302
+ ),
303
+ 'sebastian/global-state' =>
304
+ array (
305
+ 'pretty_version' => '5.0.2',
306
+ 'version' => '5.0.2.0',
307
+ 'aliases' =>
308
+ array (
309
+ ),
310
+ 'reference' => 'a90ccbddffa067b51f574dea6eb25d5680839455',
311
+ ),
312
+ 'sebastian/lines-of-code' =>
313
+ array (
314
+ 'pretty_version' => '1.0.3',
315
+ 'version' => '1.0.3.0',
316
+ 'aliases' =>
317
+ array (
318
+ ),
319
+ 'reference' => 'c1c2e997aa3146983ed888ad08b15470a2e22ecc',
320
+ ),
321
+ 'sebastian/object-enumerator' =>
322
+ array (
323
+ 'pretty_version' => '4.0.4',
324
+ 'version' => '4.0.4.0',
325
+ 'aliases' =>
326
+ array (
327
+ ),
328
+ 'reference' => '5c9eeac41b290a3712d88851518825ad78f45c71',
329
+ ),
330
+ 'sebastian/object-reflector' =>
331
+ array (
332
+ 'pretty_version' => '2.0.4',
333
+ 'version' => '2.0.4.0',
334
+ 'aliases' =>
335
+ array (
336
+ ),
337
+ 'reference' => 'b4f479ebdbf63ac605d183ece17d8d7fe49c15c7',
338
+ ),
339
+ 'sebastian/recursion-context' =>
340
+ array (
341
+ 'pretty_version' => '4.0.4',
342
+ 'version' => '4.0.4.0',
343
+ 'aliases' =>
344
+ array (
345
+ ),
346
+ 'reference' => 'cd9d8cf3c5804de4341c283ed787f099f5506172',
347
+ ),
348
+ 'sebastian/resource-operations' =>
349
+ array (
350
+ 'pretty_version' => '3.0.3',
351
+ 'version' => '3.0.3.0',
352
+ 'aliases' =>
353
+ array (
354
+ ),
355
+ 'reference' => '0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8',
356
+ ),
357
+ 'sebastian/type' =>
358
+ array (
359
+ 'pretty_version' => '2.3.1',
360
+ 'version' => '2.3.1.0',
361
+ 'aliases' =>
362
+ array (
363
+ ),
364
+ 'reference' => '81cd61ab7bbf2de744aba0ea61fae32f721df3d2',
365
+ ),
366
+ 'sebastian/version' =>
367
+ array (
368
+ 'pretty_version' => '3.0.2',
369
+ 'version' => '3.0.2.0',
370
+ 'aliases' =>
371
+ array (
372
+ ),
373
+ 'reference' => 'c6c1022351a901512170118436c764e473f6de8c',
374
+ ),
375
+ 'squizlabs/php_codesniffer' =>
376
+ array (
377
+ 'pretty_version' => '3.6.0',
378
+ 'version' => '3.6.0.0',
379
+ 'aliases' =>
380
+ array (
381
+ ),
382
+ 'reference' => 'ffced0d2c8fa8e6cdc4d695a743271fab6c38625',
383
+ ),
384
+ 'symfony/polyfill-ctype' =>
385
+ array (
386
+ 'pretty_version' => 'v1.22.1',
387
+ 'version' => '1.22.1.0',
388
+ 'aliases' =>
389
+ array (
390
+ ),
391
+ 'reference' => 'c6c942b1ac76c82448322025e084cadc56048b4e',
392
+ ),
393
+ 'theseer/tokenizer' =>
394
+ array (
395
+ 'pretty_version' => '1.2.0',
396
+ 'version' => '1.2.0.0',
397
+ 'aliases' =>
398
+ array (
399
+ ),
400
+ 'reference' => '75a63c33a8577608444246075ea0af0d052e452a',
401
+ ),
402
+ 'webmozart/assert' =>
403
+ array (
404
+ 'pretty_version' => '1.10.0',
405
+ 'version' => '1.10.0.0',
406
+ 'aliases' =>
407
+ array (
408
+ ),
409
+ 'reference' => '6964c76c7804814a842473e0c8fd15bab0f18e25',
410
+ ),
411
+ 'wordpress/core-implementation' =>
412
+ array (
413
+ 'provided' =>
414
+ array (
415
+ 0 => '5.7.0',
416
+ ),
417
+ ),
418
+ ),
419
+ );
420
+ private static $canGetVendors;
421
+ private static $installedByVendor = array();
422
+
423
+
424
+
425
+
426
+
427
+
428
+
429
+ public static function getInstalledPackages()
430
+ {
431
+ $packages = array();
432
+ foreach (self::getInstalled() as $installed) {
433
+ $packages[] = array_keys($installed['versions']);
434
+ }
435
+
436
+
437
+ if (1 === \count($packages)) {
438
+ return $packages[0];
439
+ }
440
+
441
+ return array_keys(array_flip(\call_user_func_array('array_merge', $packages)));
442
+ }
443
+
444
+
445
+
446
+
447
+
448
+
449
+
450
+
451
+
452
+ public static function isInstalled($packageName)
453
+ {
454
+ foreach (self::getInstalled() as $installed) {
455
+ if (isset($installed['versions'][$packageName])) {
456
+ return true;
457
+ }
458
+ }
459
+
460
+ return false;
461
+ }
462
+
463
+
464
+
465
+
466
+
467
+
468
+
469
+
470
+
471
+
472
+
473
+
474
+
475
+
476
+ public static function satisfies(VersionParser $parser, $packageName, $constraint)
477
+ {
478
+ $constraint = $parser->parseConstraints($constraint);
479
+ $provided = $parser->parseConstraints(self::getVersionRanges($packageName));
480
+
481
+ return $provided->matches($constraint);
482
+ }
483
+
484
+
485
+
486
+
487
+
488
+
489
+
490
+
491
+
492
+
493
+ public static function getVersionRanges($packageName)
494
+ {
495
+ foreach (self::getInstalled() as $installed) {
496
+ if (!isset($installed['versions'][$packageName])) {
497
+ continue;
498
+ }
499
+
500
+ $ranges = array();
501
+ if (isset($installed['versions'][$packageName]['pretty_version'])) {
502
+ $ranges[] = $installed['versions'][$packageName]['pretty_version'];
503
+ }
504
+ if (array_key_exists('aliases', $installed['versions'][$packageName])) {
505
+ $ranges = array_merge($ranges, $installed['versions'][$packageName]['aliases']);
506
+ }
507
+ if (array_key_exists('replaced', $installed['versions'][$packageName])) {
508
+ $ranges = array_merge($ranges, $installed['versions'][$packageName]['replaced']);
509
+ }
510
+ if (array_key_exists('provided', $installed['versions'][$packageName])) {
511
+ $ranges = array_merge($ranges, $installed['versions'][$packageName]['provided']);
512
+ }
513
+
514
+ return implode(' || ', $ranges);
515
+ }
516
+
517
+ throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
518
+ }
519
+
520
+
521
+
522
+
523
+
524
+ public static function getVersion($packageName)
525
+ {
526
+ foreach (self::getInstalled() as $installed) {
527
+ if (!isset($installed['versions'][$packageName])) {
528
+ continue;
529
+ }
530
+
531
+ if (!isset($installed['versions'][$packageName]['version'])) {
532
+ return null;
533
+ }
534
+
535
+ return $installed['versions'][$packageName]['version'];
536
+ }
537
+
538
+ throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
539
+ }
540
+
541
+
542
+
543
+
544
+
545
+ public static function getPrettyVersion($packageName)
546
+ {
547
+ foreach (self::getInstalled() as $installed) {
548
+ if (!isset($installed['versions'][$packageName])) {
549
+ continue;
550
+ }
551
+
552
+ if (!isset($installed['versions'][$packageName]['pretty_version'])) {
553
+ return null;
554
+ }
555
+
556
+ return $installed['versions'][$packageName]['pretty_version'];
557
+ }
558
+
559
+ throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
560
+ }
561
+
562
+
563
+
564
+
565
+
566
+ public static function getReference($packageName)
567
+ {
568
+ foreach (self::getInstalled() as $installed) {
569
+ if (!isset($installed['versions'][$packageName])) {
570
+ continue;
571
+ }
572
+
573
+ if (!isset($installed['versions'][$packageName]['reference'])) {
574
+ return null;
575
+ }
576
+
577
+ return $installed['versions'][$packageName]['reference'];
578
+ }
579
+
580
+ throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
581
+ }
582
+
583
+
584
+
585
+
586
+
587
+ public static function getRootPackage()
588
+ {
589
+ $installed = self::getInstalled();
590
+
591
+ return $installed[0]['root'];
592
+ }
593
+
594
+
595
+
596
+
597
+
598
+
599
+
600
+ public static function getRawData()
601
+ {
602
+ return self::$installed;
603
+ }
604
+
605
+
606
+
607
+
608
+
609
+
610
+
611
+
612
+
613
+
614
+
615
+
616
+
617
+
618
+
619
+
620
+
621
+
622
+
623
+ public static function reload($data)
624
+ {
625
+ self::$installed = $data;
626
+ self::$installedByVendor = array();
627
+ }
628
+
629
+
630
+
631
+
632
+ private static function getInstalled()
633
+ {
634
+ if (null === self::$canGetVendors) {
635
+ self::$canGetVendors = method_exists('Composer\Autoload\ClassLoader', 'getRegisteredLoaders');
636
+ }
637
+
638
+ $installed = array();
639
+
640
+ if (self::$canGetVendors) {
641
+ foreach (ClassLoader::getRegisteredLoaders() as $vendorDir => $loader) {
642
+ if (isset(self::$installedByVendor[$vendorDir])) {
643
+ $installed[] = self::$installedByVendor[$vendorDir];
644
+ } elseif (is_file($vendorDir.'/composer/installed.php')) {
645
+ $installed[] = self::$installedByVendor[$vendorDir] = require $vendorDir.'/composer/installed.php';
646
+ }
647
+ }
648
+ }
649
+
650
+ $installed[] = self::$installed;
651
+
652
+ return $installed;
653
+ }
654
+ }
extendify-sdk/vendor/composer/LICENSE ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ Copyright (c) Nils Adermann, Jordi Boggiano
3
+
4
+ Permission is hereby granted, free of charge, to any person obtaining a copy
5
+ of this software and associated documentation files (the "Software"), to deal
6
+ in the Software without restriction, including without limitation the rights
7
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8
+ copies of the Software, and to permit persons to whom the Software is furnished
9
+ to do so, subject to the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be included in all
12
+ copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
20
+ THE SOFTWARE.
21
+
extendify-sdk/vendor/composer/autoload_classmap.php ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ // autoload_classmap.php @generated by Composer
4
+
5
+ $vendorDir = dirname(dirname(__FILE__));
6
+ $baseDir = dirname($vendorDir);
7
+
8
+ return array(
9
+ );
extendify-sdk/vendor/composer/autoload_namespaces.php ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ // autoload_namespaces.php @generated by Composer
4
+
5
+ $vendorDir = dirname(dirname(__FILE__));
6
+ $baseDir = dirname($vendorDir);
7
+
8
+ return array(
9
+ );
extendify-sdk/vendor/composer/autoload_psr4.php ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ // autoload_psr4.php @generated by Composer
4
+
5
+ $vendorDir = dirname(dirname(__FILE__));
6
+ $baseDir = dirname($vendorDir);
7
+
8
+ return array(
9
+ 'Extendify\\ExtendifySdk\\' => array($baseDir . '/app'),
10
+ );
extendify-sdk/vendor/composer/autoload_real.php ADDED
@@ -0,0 +1,55 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ // autoload_real.php @generated by Composer
4
+
5
+ class ComposerAutoloaderInit340a6822f05e2bfceab6432d90c2eeaa
6
+ {
7
+ private static $loader;
8
+
9
+ public static function loadClassLoader($class)
10
+ {
11
+ if ('Composer\Autoload\ClassLoader' === $class) {
12
+ require __DIR__ . '/ClassLoader.php';
13
+ }
14
+ }
15
+
16
+ /**
17
+ * @return \Composer\Autoload\ClassLoader
18
+ */
19
+ public static function getLoader()
20
+ {
21
+ if (null !== self::$loader) {
22
+ return self::$loader;
23
+ }
24
+
25
+ spl_autoload_register(array('ComposerAutoloaderInit340a6822f05e2bfceab6432d90c2eeaa', 'loadClassLoader'), true, true);
26
+ self::$loader = $loader = new \Composer\Autoload\ClassLoader();
27
+ spl_autoload_unregister(array('ComposerAutoloaderInit340a6822f05e2bfceab6432d90c2eeaa', 'loadClassLoader'));
28
+
29
+ $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
30
+ if ($useStaticLoader) {
31
+ require_once __DIR__ . '/autoload_static.php';
32
+
33
+ call_user_func(\Composer\Autoload\ComposerStaticInit340a6822f05e2bfceab6432d90c2eeaa::getInitializer($loader));
34
+ } else {
35
+ $map = require __DIR__ . '/autoload_namespaces.php';
36
+ foreach ($map as $namespace => $path) {
37
+ $loader->set($namespace, $path);
38
+ }
39
+
40
+ $map = require __DIR__ . '/autoload_psr4.php';
41
+ foreach ($map as $namespace => $path) {
42
+ $loader->setPsr4($namespace, $path);
43
+ }
44
+
45
+ $classMap = require __DIR__ . '/autoload_classmap.php';
46
+ if ($classMap) {
47
+ $loader->addClassMap($classMap);
48
+ }
49
+ }
50
+
51
+ $loader->register(true);
52
+
53
+ return $loader;
54
+ }
55
+ }
extendify-sdk/vendor/composer/autoload_static.php ADDED
@@ -0,0 +1,31 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ // autoload_static.php @generated by Composer
4
+
5
+ namespace Composer\Autoload;
6
+
7
+ class ComposerStaticInit340a6822f05e2bfceab6432d90c2eeaa
8
+ {
9
+ public static $prefixLengthsPsr4 = array (
10
+ 'E' =>
11
+ array (
12
+ 'Extendify\\ExtendifySdk\\' => 23,
13
+ ),
14
+ );
15
+
16
+ public static $prefixDirsPsr4 = array (
17
+ 'Extendify\\ExtendifySdk\\' =>
18
+ array (
19
+ 0 => __DIR__ . '/../..' . '/app',
20
+ ),
21
+ );
22
+
23
+ public static function getInitializer(ClassLoader $loader)
24
+ {
25
+ return \Closure::bind(function () use ($loader) {
26
+ $loader->prefixLengthsPsr4 = ComposerStaticInit340a6822f05e2bfceab6432d90c2eeaa::$prefixLengthsPsr4;
27
+ $loader->prefixDirsPsr4 = ComposerStaticInit340a6822f05e2bfceab6432d90c2eeaa::$prefixDirsPsr4;
28
+
29
+ }, null, ClassLoader::class);
30
+ }
31
+ }
extendify-sdk/vendor/composer/installed.json ADDED
@@ -0,0 +1 @@
 
1
+ []
extendify-sdk/vendor/composer/installed.php ADDED
@@ -0,0 +1,395 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php return array (
2
+ 'root' =>
3
+ array (
4
+ 'pretty_version' => 'dev-main',
5
+ 'version' => 'dev-main',
6
+ 'aliases' =>
7
+ array (
8
+ ),
9
+ 'reference' => 'ac2cfec95277e7980dfcf8dfde5cd858f1023e03',
10
+ 'name' => 'extendify/extendify-sdk',
11
+ ),
12
+ 'versions' =>
13
+ array (
14
+ 'dealerdirect/phpcodesniffer-composer-installer' =>
15
+ array (
16
+ 'pretty_version' => 'v0.7.1',
17
+ 'version' => '0.7.1.0',
18
+ 'aliases' =>
19
+ array (
20
+ ),
21
+ 'reference' => 'fe390591e0241955f22eb9ba327d137e501c771c',
22
+ ),
23
+ 'doctrine/instantiator' =>
24
+ array (
25
+ 'pretty_version' => '1.4.0',
26
+ 'version' => '1.4.0.0',
27
+ 'aliases' =>
28
+ array (
29
+ ),
30
+ 'reference' => 'd56bf6102915de5702778fe20f2de3b2fe570b5b',
31
+ ),
32
+ 'extendify/extendify-sdk' =>
33
+ array (
34
+ 'pretty_version' => 'dev-main',
35
+ 'version' => 'dev-main',
36
+ 'aliases' =>
37
+ array (
38
+ ),
39
+ 'reference' => 'ac2cfec95277e7980dfcf8dfde5cd858f1023e03',
40
+ ),
41
+ 'johnpbloch/wordpress-core' =>
42
+ array (
43
+ 'pretty_version' => '5.7.0',
44
+ 'version' => '5.7.0.0',
45
+ 'aliases' =>
46
+ array (
47
+ ),
48
+ 'reference' => '8b057056692ca196aaa7a7ddd915f29426922c6d',
49
+ ),
50
+ 'myclabs/deep-copy' =>
51
+ array (
52
+ 'pretty_version' => '1.10.2',
53
+ 'version' => '1.10.2.0',
54
+ 'aliases' =>
55
+ array (
56
+ ),
57
+ 'reference' => '776f831124e9c62e1a2c601ecc52e776d8bb7220',
58
+ 'replaced' =>
59
+ array (
60
+ 0 => '1.10.2',
61
+ ),
62
+ ),
63
+ 'nikic/php-parser' =>
64
+ array (
65
+ 'pretty_version' => 'v4.10.4',
66
+ 'version' => '4.10.4.0',
67
+ 'aliases' =>
68
+ array (
69
+ ),
70
+ 'reference' => 'c6d052fc58cb876152f89f532b95a8d7907e7f0e',
71
+ ),
72
+ 'phar-io/manifest' =>
73
+ array (
74
+ 'pretty_version' => '2.0.1',
75
+ 'version' => '2.0.1.0',
76
+ 'aliases' =>
77
+ array (
78
+ ),
79
+ 'reference' => '85265efd3af7ba3ca4b2a2c34dbfc5788dd29133',
80
+ ),
81
+ 'phar-io/version' =>
82
+ array (
83
+ 'pretty_version' => '3.1.0',
84
+ 'version' => '3.1.0.0',
85
+ 'aliases' =>
86
+ array (
87
+ ),
88
+ 'reference' => 'bae7c545bef187884426f042434e561ab1ddb182',
89
+ ),
90
+ 'phpcompatibility/php-compatibility' =>
91
+ array (
92
+ 'pretty_version' => '9.3.5',
93
+ 'version' => '9.3.5.0',
94
+ 'aliases' =>
95
+ array (
96
+ ),
97
+ 'reference' => '9fb324479acf6f39452e0655d2429cc0d3914243',
98
+ ),
99
+ 'phpcompatibility/phpcompatibility-paragonie' =>
100
+ array (
101
+ 'pretty_version' => '1.3.1',
102
+ 'version' => '1.3.1.0',
103
+ 'aliases' =>
104
+ array (
105
+ ),
106
+ 'reference' => 'ddabec839cc003651f2ce695c938686d1086cf43',
107
+ ),
108
+ 'phpcompatibility/phpcompatibility-wp' =>
109
+ array (
110
+ 'pretty_version' => '2.1.1',
111
+ 'version' => '2.1.1.0',
112
+ 'aliases' =>
113
+ array (
114
+ ),
115
+ 'reference' => 'b7dc0cd7a8f767ccac5e7637550ea1c50a67b09e',
116
+ ),
117
+ 'phpdocumentor/reflection-common' =>
118
+ array (
119
+ 'pretty_version' => '2.2.0',
120
+ 'version' => '2.2.0.0',
121
+ 'aliases' =>
122
+ array (
123
+ ),
124
+ 'reference' => '1d01c49d4ed62f25aa84a747ad35d5a16924662b',
125
+ ),
126
+ 'phpdocumentor/reflection-docblock' =>
127
+ array (
128
+ 'pretty_version' => '5.2.2',
129
+ 'version' => '5.2.2.0',
130
+ 'aliases' =>
131
+ array (
132
+ ),
133
+ 'reference' => '069a785b2141f5bcf49f3e353548dc1cce6df556',
134
+ ),
135
+ 'phpdocumentor/type-resolver' =>
136
+ array (
137
+ 'pretty_version' => '1.4.0',
138
+ 'version' => '1.4.0.0',
139
+ 'aliases' =>
140
+ array (
141
+ ),
142
+ 'reference' => '6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0',
143
+ ),
144
+ 'phpspec/prophecy' =>
145
+ array (
146
+ 'pretty_version' => '1.13.0',
147
+ 'version' => '1.13.0.0',
148
+ 'aliases' =>
149
+ array (
150
+ ),
151
+ 'reference' => 'be1996ed8adc35c3fd795488a653f4b518be70ea',
152
+ ),
153
+ 'phpunit/php-code-coverage' =>
154
+ array (
155
+ 'pretty_version' => '9.2.6',
156
+ 'version' => '9.2.6.0',
157
+ 'aliases' =>
158
+ array (
159
+ ),
160
+ 'reference' => 'f6293e1b30a2354e8428e004689671b83871edde',
161
+ ),
162
+ 'phpunit/php-file-iterator' =>
163
+ array (
164
+ 'pretty_version' => '3.0.5',
165
+ 'version' => '3.0.5.0',
166
+ 'aliases' =>
167
+ array (
168
+ ),
169
+ 'reference' => 'aa4be8575f26070b100fccb67faabb28f21f66f8',
170
+ ),
171
+ 'phpunit/php-invoker' =>
172
+ array (
173
+ 'pretty_version' => '3.1.1',
174
+ 'version' => '3.1.1.0',
175
+ 'aliases' =>
176
+ array (
177
+ ),
178
+ 'reference' => '5a10147d0aaf65b58940a0b72f71c9ac0423cc67',
179
+ ),
180
+ 'phpunit/php-text-template' =>
181
+ array (
182
+ 'pretty_version' => '2.0.4',
183
+ 'version' => '2.0.4.0',
184
+ 'aliases' =>
185
+ array (
186
+ ),
187
+ 'reference' => '5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28',
188
+ ),
189
+ 'phpunit/php-timer' =>
190
+ array (
191
+ 'pretty_version' => '5.0.3',
192
+ 'version' => '5.0.3.0',
193
+ 'aliases' =>
194
+ array (
195
+ ),
196
+ 'reference' => '5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2',
197
+ ),
198
+ 'phpunit/phpunit' =>
199
+ array (
200
+ 'pretty_version' => '9.5.4',
201
+ 'version' => '9.5.4.0',
202
+ 'aliases' =>
203
+ array (
204
+ ),
205
+ 'reference' => 'c73c6737305e779771147af66c96ca6a7ed8a741',
206
+ ),
207
+ 'sebastian/cli-parser' =>
208
+ array (
209
+ 'pretty_version' => '1.0.1',
210
+ 'version' => '1.0.1.0',
211
+ 'aliases' =>
212
+ array (
213
+ ),
214
+ 'reference' => '442e7c7e687e42adc03470c7b668bc4b2402c0b2',
215
+ ),
216
+ 'sebastian/code-unit' =>
217
+ array (
218
+ 'pretty_version' => '1.0.8',
219
+ 'version' => '1.0.8.0',
220
+ 'aliases' =>
221
+ array (
222
+ ),
223
+ 'reference' => '1fc9f64c0927627ef78ba436c9b17d967e68e120',
224
+ ),
225
+ 'sebastian/code-unit-reverse-lookup' =>
226
+ array (
227
+ 'pretty_version' => '2.0.3',
228
+ 'version' => '2.0.3.0',
229
+ 'aliases' =>
230
+ array (
231
+ ),
232
+ 'reference' => 'ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5',
233
+ ),
234
+ 'sebastian/comparator' =>
235
+ array (
236
+ 'pretty_version' => '4.0.6',
237
+ 'version' => '4.0.6.0',
238
+ 'aliases' =>
239
+ array (
240
+ ),
241
+ 'reference' => '55f4261989e546dc112258c7a75935a81a7ce382',
242
+ ),
243
+ 'sebastian/complexity' =>
244
+ array (
245
+ 'pretty_version' => '2.0.2',
246
+ 'version' => '2.0.2.0',
247
+ 'aliases' =>
248
+ array (
249
+ ),
250
+ 'reference' => '739b35e53379900cc9ac327b2147867b8b6efd88',
251
+ ),
252
+ 'sebastian/diff' =>
253
+ array (
254
+ 'pretty_version' => '4.0.4',
255
+ 'version' => '4.0.4.0',
256
+ 'aliases' =>
257
+ array (
258
+ ),
259
+ 'reference' => '3461e3fccc7cfdfc2720be910d3bd73c69be590d',
260
+ ),
261
+ 'sebastian/environment' =>
262
+ array (
263
+ 'pretty_version' => '5.1.3',
264
+ 'version' => '5.1.3.0',
265
+ 'aliases' =>
266
+ array (
267
+ ),
268
+ 'reference' => '388b6ced16caa751030f6a69e588299fa09200ac',
269
+ ),
270
+ 'sebastian/exporter' =>
271
+ array (
272
+ 'pretty_version' => '4.0.3',
273
+ 'version' => '4.0.3.0',
274
+ 'aliases' =>
275
+ array (
276
+ ),
277
+ 'reference' => 'd89cc98761b8cb5a1a235a6b703ae50d34080e65',
278
+ ),
279
+ 'sebastian/global-state' =>
280
+ array (
281
+ 'pretty_version' => '5.0.2',
282
+ 'version' => '5.0.2.0',
283
+ 'aliases' =>
284
+ array (
285
+ ),
286
+ 'reference' => 'a90ccbddffa067b51f574dea6eb25d5680839455',
287
+ ),
288
+ 'sebastian/lines-of-code' =>
289
+ array (
290
+ 'pretty_version' => '1.0.3',
291
+ 'version' => '1.0.3.0',
292
+ 'aliases' =>
293
+ array (
294
+ ),
295
+ 'reference' => 'c1c2e997aa3146983ed888ad08b15470a2e22ecc',
296
+ ),
297
+ 'sebastian/object-enumerator' =>
298
+ array (
299
+ 'pretty_version' => '4.0.4',
300
+ 'version' => '4.0.4.0',
301
+ 'aliases' =>
302
+ array (
303
+ ),
304
+ 'reference' => '5c9eeac41b290a3712d88851518825ad78f45c71',
305
+ ),
306
+ 'sebastian/object-reflector' =>
307
+ array (
308
+ 'pretty_version' => '2.0.4',
309
+ 'version' => '2.0.4.0',
310
+ 'aliases' =>
311
+ array (
312
+ ),
313
+ 'reference' => 'b4f479ebdbf63ac605d183ece17d8d7fe49c15c7',
314
+ ),
315
+ 'sebastian/recursion-context' =>
316
+ array (
317
+ 'pretty_version' => '4.0.4',
318
+ 'version' => '4.0.4.0',
319
+ 'aliases' =>
320
+ array (
321
+ ),
322
+ 'reference' => 'cd9d8cf3c5804de4341c283ed787f099f5506172',
323
+ ),
324
+ 'sebastian/resource-operations' =>
325
+ array (
326
+ 'pretty_version' => '3.0.3',
327
+ 'version' => '3.0.3.0',
328
+ 'aliases' =>
329
+ array (
330
+ ),
331
+ 'reference' => '0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8',
332
+ ),
333
+ 'sebastian/type' =>
334
+ array (
335
+ 'pretty_version' => '2.3.1',
336
+ 'version' => '2.3.1.0',
337
+ 'aliases' =>
338
+ array (
339
+ ),
340
+ 'reference' => '81cd61ab7bbf2de744aba0ea61fae32f721df3d2',
341
+ ),
342
+ 'sebastian/version' =>
343
+ array (
344
+ 'pretty_version' => '3.0.2',
345
+ 'version' => '3.0.2.0',
346
+ 'aliases' =>
347
+ array (
348
+ ),
349
+ 'reference' => 'c6c1022351a901512170118436c764e473f6de8c',
350
+ ),
351
+ 'squizlabs/php_codesniffer' =>
352
+ array (
353
+ 'pretty_version' => '3.6.0',
354
+ 'version' => '3.6.0.0',
355
+ 'aliases' =>
356
+ array (
357
+ ),
358
+ 'reference' => 'ffced0d2c8fa8e6cdc4d695a743271fab6c38625',
359
+ ),
360
+ 'symfony/polyfill-ctype' =>
361
+ array (
362
+ 'pretty_version' => 'v1.22.1',
363
+ 'version' => '1.22.1.0',
364
+ 'aliases' =>
365
+ array (
366
+ ),
367
+ 'reference' => 'c6c942b1ac76c82448322025e084cadc56048b4e',
368
+ ),
369
+ 'theseer/tokenizer' =>
370
+ array (
371
+ 'pretty_version' => '1.2.0',
372
+ 'version' => '1.2.0.0',
373
+ 'aliases' =>
374
+ array (
375
+ ),
376
+ 'reference' => '75a63c33a8577608444246075ea0af0d052e452a',
377
+ ),
378
+ 'webmozart/assert' =>
379
+ array (
380
+ 'pretty_version' => '1.10.0',
381
+ 'version' => '1.10.0.0',
382
+ 'aliases' =>
383
+ array (
384
+ ),
385
+ 'reference' => '6964c76c7804814a842473e0c8fd15bab0f18e25',
386
+ ),
387
+ 'wordpress/core-implementation' =>
388
+ array (
389
+ 'provided' =>
390
+ array (
391
+ 0 => '5.7.0',
392
+ ),
393
+ ),
394
+ ),
395
+ );
extendify-sdk/webpack.mix.js ADDED
@@ -0,0 +1,62 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ const path = require('path')
2
+ const camelCaseDash = (string) => string.replace(/-([a-z])/g, (_match, letter) => letter.toUpperCase())
3
+ const mix = require('laravel-mix')
4
+
5
+ // If you add additional WP imports, include them here (could we generate these?)
6
+ const externals = [
7
+ 'api-fetch',
8
+ 'block-editor',
9
+ 'blocks',
10
+ 'components',
11
+ 'compose',
12
+ 'data',
13
+ 'date',
14
+ 'htmlEntities',
15
+ 'hooks',
16
+ 'edit-post',
17
+ 'element',
18
+ 'editor',
19
+ 'i18n',
20
+ 'plugins',
21
+ 'viewport',
22
+ 'ajax',
23
+ 'codeEditor',
24
+ 'rich-text',
25
+ ]
26
+ const globals = externals.reduce((externals, name) => ({
27
+ ...externals,
28
+ [`@wordpress/${name}`]: `wp.${camelCaseDash(name)}`,
29
+ }), {})
30
+
31
+ const webpackConfig = (context) => {
32
+ return {
33
+ context: context,
34
+ externals: {
35
+ wp: 'wp',
36
+ lodash: 'lodash',
37
+ fetch: 'fetch',
38
+ react: 'React',
39
+ 'react-dom': 'ReactDOM',
40
+ ...globals,
41
+ },
42
+ }
43
+ }
44
+
45
+ mix.js('src/app.js', 'public/build/extendify-sdk.js')
46
+ .webpackConfig(webpackConfig(path.resolve(__dirname, 'src')))
47
+ .react()
48
+ .setPublicPath('public')
49
+ .postCss(
50
+ 'src/app.css',
51
+ 'public/build/extendify-sdk.css',
52
+ [require('tailwindcss')],
53
+ )
54
+ .browserSync({
55
+ proxy: 'wordpress.test',
56
+ open: false,
57
+ files: ['src/**/*'],
58
+ })
59
+
60
+ mix.js('editorplus/editorplus.js', 'editorplus/editorplus.min.js')
61
+ .webpackConfig(webpackConfig(path.resolve(__dirname, 'editorplus')))
62
+ .react()
readme.txt CHANGED
@@ -4,11 +4,11 @@ Tags: gutenberg, blocks, gutenberg blocks, editor, block, page builder, block ed
4
  Requires at least: 4.0
5
  Requires PHP: 7.1
6
  Tested up to: 5.8.1
7
- Stable tag: 4.2.14
8
  License: GPL-3.0+
9
  License URI: http://www.gnu.org/licenses/gpl-3.0.txt
10
 
11
- Supercharge the Gutenberg editor with our ever-growing library of block-based templates!
12
 
13
  == Description ==
14
  <strong>Redux - Quickly create full pages in WordPress’ Gutenberg</strong>
@@ -19,27 +19,24 @@ Worried that our templates may not work with your theme? We've got you covered.
19
 
20
  Don’t waste hours trying to recreate a template you love. With a click of a button it its own website where you can start customizing it for your needs.
21
 
22
- [youtube https://www.youtube.com/watch?v=cYviuu6piaw]
23
-
24
  <h4>♥️ What the Plugin does?</h4>
25
  <ul>
26
  <li><strong>Browse 1,000+</strong> templates from your Gutenberg Editor that you can add to your site immediately.</li>
27
- <li><strong>Preview</strong> each Gutenberg block based template in the customizer preview.</li>
28
  <li><strong>Filter</strong> between the dependencies you want, and find exactly what you're looking for.</li>
29
  <li><strong>See instantly</strong> which Gutenberg templates you have everything for, or may need to install some dependencies.</li>
30
  <li><strong>Automated install</strong> of anything you may need to install any template.</li>
31
  <li><strong>Block Patterns library</strong> support built in.</li>
32
- <li>Make the Reusable Blocks visible in our library modal window. 😉</li>
33
  <li>The most trusted option framework in the industry.</li>
34
  <li>Developer friendly: clean code, inline documentation</li>
35
  </ul>
36
 
37
  <h4>🚀 TYPICAL USE CASE OF THIS PLUGIN</h4>
38
- You are building a **big site** with **lots of pages** and you just want it to look amazing. With Redux, you can begin making pages with a variety of "starter blocks," or templates.
39
 
40
- You can browse through the categories, as well as collections of like-styled pages. When you find something you like, Redux makes sure you have everything you need. If a dependency (or required plugin) is missing, you are notified and can install the missing dependency. Worried that our templates may not work with your theme? No problem! With our custom `page templates` options you can transform any site into exactly what you want it to be no matter what them you are using.
41
 
42
- Don’t waste hours trying to recreate a design you love. With a click of a button, you have it on your own site, and you can begin customizing your "starter block" for your needs.
43
 
44
  <h4>🎉 Supported Page Builders</h4>
45
  Currently Redux supports only the <a href="https://wordpress.org/plugins/gutenberg/"><strong>Gutenberg / Block Editor of WordPress 5.0+</strong></a>.
@@ -63,45 +60,16 @@ Though Redux will work with any theme that uses Gutenberg, we have done extra wo
63
  <li><strong>Extra Theme</strong> with Divi Builder – <strong>Library</strong> (for Templates etc.) – <strong>Category Templates</strong> (for Layouts, Templates etc.)</li>
64
  </ul>
65
 
66
- <h4>📦 Supported Gutenberg-Specific Plugins (Block Editor)</h4>
67
- <ul>
68
- <li><a href="https://wordpress.org/plugins/gutenberg/"><strong>Gutenberg</strong></a> Plugin – <strong>Gutenberg</strong> (Bleeding-Edge development in Gutenberg and Gutenberg Blocks)</li>
69
- <li><a href="https://wordpress.org/plugins/acf-blocks/"><strong>ACF Blocks Suite</strong></a> Plugin – <strong>Blocks</strong> (Fields for Gutenberg Blocks)</li>
70
- <li><a href="https://wordpress.org/plugins/advanced-gutenberg-blocks/"><strong>Advanced Gutenberg Blocks</strong></a> Plugin – <strong>Blocks</strong> (Blocks and Tools for Gutenberg Blocks)</li>
71
- <li><a href="https://wordpress.org/plugins/atomic-blocks/"><strong>Atomic Blocks – Gutenberg Blocks Collection</strong></a> Plugin – <strong>Blocks</strong> (Blocks for Gutenberg Blocks)</li>
72
- <li><a href="https://wordpress.org/plugins/block-options/"><strong>Gutenberg Page Building Toolkit – EditorsKit</strong></a> Plugin – <strong>Blocks</strong> (Templates &amp; Fields for Gutenberg Blocks)</li>
73
- <li><a href="https://wordpress.org/plugins/block-slider/"><strong>WordPress Slider Plugin – Block Slider</strong></a> Plugin – <strong>Blocks</strong> (Blocks for Gutenberg Blocks)</li>
74
- <li><a href="https://wordpress.org/plugins/coblocks/"><strong>Page Builder Gutenberg Blocks – CoBlocks</strong></a> Plugin – <strong>Blocks</strong> (Blocks for Gutenberg Blocks)</li>
75
- <li><a href="https://wordpress.org/plugins/editorskit/"><strong>Gutenberg Page Building Toolkit – EditorsKit</strong></a> Plugin – <strong>Blocks</strong> (Blocks tools to supercharge the Gutenberg editor)</li>
76
- <li><a href="https://wordpress.org/plugins/editorplus/"><strong>Gutenberg Page Builder Toolkit – EditorPlus</strong></a> Plugin – <strong>EditorPlus</strong> (Toolkit and blocks for Gutenberg Blocks)</li>
77
- <li><a href="https://wordpress.org/plugins/forms-gutenberg/"><strong>WordPress Form Builder Plugin – Gutenberg Forms</strong></a> Plugin – <strong>Blocks</strong> (Blocks &amp; Forms for Gutenberg Blocks)</li>
78
- <li><a href="https://wordpress.org/plugins/getwid/"><strong>Getwid – Gutenberg Blocks</strong></a> Plugin – <strong>Blocks</strong> (Templates &amp; Blocks for Gutenberg Blocks)</li>
79
- <li><a href="https://wordpress.org/plugins/gutentor/"><strong>Gutenberg Blocks – Gutentor Page Builder for Gutenberg Editor</strong></a> Plugin – <strong>Blocks</strong> (Gutenberg Blocks)</li>
80
- <li><a href="https://wordpress.org/plugins/kadence-blocks/"><strong>Kadence Blocks – Gutenberg Page Builder Toolkit</strong></a> Plugin – <strong>Blocks</strong> (Blocks for Gutenberg Blocks)</li>
81
- <li><a href="https://wordpress.org/plugins/kioken-blocks/"><strong>Page Builder Gutenberg Blocks – Kioken Blocks</strong></a> Plugin – <strong>Blocks &amp; Templates</strong> (Blocks for Gutenberg Blocks)</li>
82
- <li><a href="https://wordpress.org/plugins/otter-blocks/"><strong>Gutenberg Blocks and Template Library by Otter</strong></a> Plugin – <strong>Blocks &amp; Templates</strong> (Blocks and Templates for Gutenberg Blocks)</li>
83
- <li><a href="https://wordpress.org/plugins/qubely/"><strong>Gutenberg Blocks and Page Builder – Qubely</strong></a> Plugin – <strong>Blocks &amp; Templates</strong> (Templates &amp; Blocks for Gutenberg Blocks)</li>
84
- <li><a href="https://wordpress.org/plugins/qodeblock/"><strong>Gutenberg Blocks Collection – qodeblock</strong></a> Plugin – <strong>Blocks</strong> (Blocks for Gutenberg Blocks)</li>
85
- <li><a href="https://wordpress.org/plugins/stackable-ultimate-gutenberg-blocks/"><strong>Stackable – Page Builder Gutenberg Blocks</strong></a> Plugin – <strong>Blocks &amp; Templates</strong> (Templates &amp; Blocks for Gutenberg Blocks)</li>
86
- <li><a href="https://wordpress.org/plugins/ultimate-blocks/"><strong>Ultimate Blocks – Gutenberg Blocks Plugin</strong></a> Plugin – <strong>Blocks</strong> (Blocks for Gutenberg Blocks)</li>
87
- <li><a href="https://wordpress.org/plugins/ultimate-addons-for-gutenberg/"><strong>Gutenberg Blocks – Ultimate Addons for Gutenberg</strong></a> Plugin – <strong>Blocks</strong> (Blocks for Gutenberg Blocks)</li>
88
- </ul>
89
-
90
- <h4>☀️ Supported Gutenberg-Specific Services / Websites</h4>
91
- <ul>
92
- <li><a href="https://gutenberghub.com/"><strong>GutenbergHub.com</strong></a> – <strong>GutenbergHub</strong> GutenbergHub is a one-stop resource for you need to work with Gutenberg WordPress editor.</li>
93
- <li><a href="https://shareablock.com/"><strong>ShareABlock</strong></a> by EditorsKit – <strong>ShareABlock</strong> Community submitted free block designs and templates for Gutenberg</li>
94
- </ul>
95
-
96
  <h4>👍 BE A CONTRIBUTOR</h4>
97
  If you want to translate, <a href="https://translate.wordpress.org/projects/wp-plugins/redux-framework">go to the Translation Portal at translate.wordpress.org</a>.
98
 
99
- You can also contribute code-wise via our <a href="https://github.com/reduxframework/redux-framework/">GitHub Repository</a> – and see where you can help. Be sure to use our develop branch to submit pull requests.
100
 
101
  <h4>📝 Documentation and Support</h4>
102
  <ul>
103
- <li>For more information about features, FAQs and documentation, check out our website at <a href="https://devs.redux.io/" rel="nofollow ugc">Redux</a>.</li>
104
- <li>If you have any more questions, visit our support on the <a href="https://wordpress.org/support/plugin/redux-framework">Plugin's Forum</a>.</li>
 
105
  </ul>
106
 
107
  <h4>⚡ Like the Redux Plugin?</h4>
@@ -121,11 +89,8 @@ The Redux plugin uses a custom API to fetch our content library and our Gutenber
121
  <li>browser type</li>
122
  <li>referring site</li>
123
  <li>date and time of request</li>
124
- <li>template ID requested</li>
125
- <li>date of cached version of the given API request</li>
126
- <li>supported block plugins installed (slug only, no versions)</li>
127
- <li>version of Redux installed</li>
128
- <li>Redux API keys</li>
129
  </ul>
130
 
131
  API requests are only made when a user clicks on the Library button, launches the Redux Challenge, or opts into Google Font updates.
@@ -137,23 +102,24 @@ For more details on our terms and conditions: [https://redux.io/terms](https://r
137
  1. Upload the entire plugin folder to the `/wp-content/plugins/` directory.
138
  2. Activate the plugin through the 'Plugins' menu in WordPress.
139
 
140
- Once Installed and Activated you will be invited to Activate your Redux account. This is entirely voluntary and can easily be dismissed.
141
 
142
  If you want, you can use the [Gutenberg](https://wordpress.org/plugins/gutenberg/) plugin to get bleeding-edge experiments by the Gutenberg team.
143
 
144
- == Screenshots ==
145
-
146
- 1. With Redux, you have access to hundreds of sections to help you create any type of page.
147
- 2. Take the Redux challenge to learn your way around the Redux Templates Library.
148
- 3. See instantly what required plugins each template requires on hover.
149
- 4. Preview each template instantly in your own website.
150
- 5. Template Kits give you full site templates, all grouped by a given style.
151
- 6. Within each template kit you can see the full page template types.
152
-
153
  == Changelog ==
154
 
 
 
 
 
 
 
 
 
 
155
  = 4.2.14 =
156
  Fixed: Parse error in Import/Export module due to old versions of PHP.
 
157
 
158
  = 4.2.13 =
159
  Fixed: #3822 - Default value function returns string or array to prevent type error.
@@ -162,170 +128,185 @@ Modified: `install_plugins` security level now required to install Template bloc
162
  Added: New global arg `load_on_cron`. Set to true if you require Redux to run within a cron initiated function.
163
  Removed: URL based Import/Export option due to security concerns. Manual Import/Export features remain.
164
  Removed: Support URL feature due to security issues. Please use WordPress Site Health 'copy to clipboard' compiler to submit system data when reporting issues.
 
165
 
166
  = 4.2.11 =
167
  Fixed: Removed type declarations on core return values to support improperly written third-party extensions.
168
  Fixed: Added shim to prevent errors on functions calls outdated extensions are still using.
169
- Fixed: Removed type declarations on field code to support outdated versions of PHP (PHP 7.4 is the minimum recommendation from WordPress...please update if you are able. [https://wordpress.org/about/requirements](https://wordpress.org/about/requirements) ).
170
  Fixed: Support URL button kicking back a JavaScript error.
 
171
 
172
  = 4.2.10 =
173
  Fixed: Output on the frontend triggering error.
174
  Fixed: Updated shims to support older extensions not authored by Redux.io
 
175
 
176
  = 4.2.9 =
177
  Fixed: WordPress data class now works properly.
 
178
 
179
  = 4.2.8 =
180
  Redux instances returning null. Saved options now show on the front end.
 
181
 
182
  = 4.2.7 =
183
  Fixed: Options reverting or not saving.
 
184
 
185
  = 4.2.6 =
186
  Fixed: Fatal error if passing null as an option section.
187
  Fixed: Error in connection banner routine.
 
188
 
189
  = 4.2.5 =
190
  Fixed: Type mismatch in Redux Helpers.
 
191
 
192
  = 4.2.4 =
193
  Fixed: Taxonomy WordPress data not handled properly in fields that support WordPress data.
 
194
 
195
  = 4.2.3 =
196
  Fixed: Return type error in Redux templates.
 
197
 
198
  = 4.2.2 =
199
  Fixed: WordPress data options not handling WP_Error properly.
 
200
 
201
  = 4.2.1 =
202
  Fixed: Type mismatch regarding select boxes and callbacks.
 
203
 
204
  = 4.2.0 =
205
- * New: Typography features: Top and bottom margins, text-shadow.
206
- * New: Media Image Filters (greyscale, sepia, opacity, contrast, invert, blur, saturate, brightness, hue-rotate).
207
- * New: Filters (type, reach, angle) for Gradient color field.
208
- * New: Box Shadow field.
209
- * New: Flyout Submenus: `flyout_submenus` global arg.
210
- * New: Alpha color option for color field: `color_alpha` field arg for fields that support color pickers.
211
- * Updated: select2 library to 4.1.0.
212
- * Updated: readme.txt to conform to wp.org standards.
213
- * Fixed: Remove PHP 7.2 syntax to keep older versions of PHP 7 happy.
214
- * Fixed: Redux templates not showing on 'page attributes' for some.
215
- * Fixed: Additional PHP 8.0 compatibility.
216
- * Fixed: Widget screen would not load due to conflict with template library.
217
- * Added: WordPress 5.8 compatibility.
218
- * Improved: Better Gutenberg block editor detection.
219
- * Modified: Redux Pro no longer required for automatic Google font updates.
220
- * Modified: Rename Parsedown class for raw field to avoid conflicts with other plugins.
221
- * Removed: `async_typography` global arg. Google no longer supports it. Use `font_display` with one of the following `auto|block|swap|fallback|optional`. See: [https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display](https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display)
 
222
 
223
  = 4.1.29 =
224
- * Fixed: All PHP 7.4 specific syntax backed out. It caused older versions of PHP to report fatal errors.
225
- * Fixed: Index error in the image_select field.
 
226
 
227
  = 4.1.28 =
228
- * Fixed: Redux templates loading on post types with no block editor.
229
- * Fixed: Redux theme checks no longer prevent theme check plugin from functioning.
230
- * Fixed: Heatbeat check no longer eats the function if disregarded.
231
- * Fixed: Background field image now hides preview image upon removal.
232
- * Fixed: RAW field in sample config now works.
233
- * Fixed: Helper function is_field_in_use now returns false, instead of null.
234
- * Fixed: Palette field rendering improperly.
235
- * Fixed: Google font update fail.
236
- * Modified: buttonset() jQuery widget deprecated. Replaced with controlgroup().
237
- * Modified: Additional JavaScript updates to fix jQuery deprecation notices.
 
238
 
239
  = 4.1.27 =
240
- * Fixed: Image select not selecting default value.
241
- * Modified: Link color field overridden by theme. Added 'important' arg to the output array to fix. See sample config.
242
- * Fixed: Same config not setting footer background in Twenty-twenty theme due to incorrect class.
243
- * Fixed: Radio field not displaying text after save/refresh when displaying WordPress data.
244
- * Modified: Donation text removed.
245
- * Fixed: Link color CSS compiling incorrectly due to late escaping.
246
 
247
  = 4.1.26 =
248
- * Added: Menu accent introduced in WordPress 5.7.
249
- * Updated: ACE Editor 1.4.12.
250
- * Updated select2 to support cssContainer.
251
- * Fixed: Multiple submenus in metaboxes; the last submenu it cut off.
252
- * Fixed: Fatal error: Can't use function return value in write context.
253
- * Fixed: PHP 8.0 deprecation warnings.
254
- * Fixed: Malformed HTML causing Redux pro alpha color-picker to not render.
255
- * Fixed: IMproved class checks for Redux Pro.
256
- * Fixed: jQuery 3.x deprecation notices.
257
- * Fixed: Malformed SCSS.
258
- * Release date: March 17, 2021
259
 
260
  = 4.1.25 =
261
- * Fixed: Erroneous icon on button_set field after WP 5.6 update.
262
- * Fixed: Erroneous icon on palette field after WP 5.6 update.
263
- * Fixed: PHP error in init_delay function during heartbeat API.
264
- * Fixed: Options object field not rendering.
265
- * Release date: Jan 21, 2021
266
 
267
  = 4.1.24 =
268
- * Fixed: Select2 callback fix for select fields.
269
- * Added: Shim: empty field_*.php files to fix developers including files improperly.
270
- * Fixed: Changed use of ctype_xdigit to account for hosts where it's disabled.
271
- * Added: Shim for people using terms data key, but using taxonomies instead of taxonomy.
272
- * Fixed: Static call mismatch in redux colors.
273
- * Fixed: CSRF security issue with a flipped if conditional. Thanks, @ErwanLR.
274
- * Fixed: WordPress 4.6 API warnings.
275
- * Fixed: WordPress 4.6 customizer issue where fields not displaying properly.
276
- * Fixed: Massive speed improvement to the library.
277
- * Fixed: Pro template count error if previously activated and Redux Pro not enabled.
278
- * Release date: Dec 12, 2020
279
 
280
  = 4.1.23 =
281
- * Fixed: Massive speed improvement to the library.
282
- * Fixed: Pro template count error if previously activated and Redux Pro not enabled.
283
- * Release date: Oct 24, 2020
284
 
285
  = 4.1.22 =
286
- * Fixed: Menu locations WordPress data object not providing name.
287
- * Added: Undefined if menu location is not assigned to a menu.
288
- * Fixed: Another import/export edge case.
289
- * Fixed: Fix setField API value.
290
- * Fixed: Older extension compatibility.
291
- * Fixed: Text field error with data/options args not displaying properly.
292
- * Fixed: Import/Export now properly respects order of objects. Now using PHP over JS json_encode.
293
- * Release date: Oct 23, 2020
294
 
295
  = 4.1.21 =
296
- * Fixed: Fixed connection banner to hide even if JS is broken by jQuery migrate issue (WP 5.5).
297
- * Fixed: Resolved all remaining legacy extension compatibility issues.
298
- * Fixed: Custom callback with select field.
299
- * Fixed: Typography bug when style was hidden.
300
- * Fixed: Issue with text labels.
301
- * Fixed: Google fonts HTML validation issues.
302
- * Added: Feedback modal.
303
- * Fixed: Import logic flaw.
304
- * Fixed: Security bug. Thanks, @lenonleite of www.lenonleite.com.br.
305
- * Release date: Oct 08, 2020
306
 
307
  = 4.1.20 =
308
- * Added: Properly adjust the blocked editor page width based on template selected.
309
- * Added: Broke out third-party premium plugins for filtering to help with understanding of what comes with Redux Pro.
310
- * Added: Update block editor width when selecting a Redux template.
311
- * Fixed: Some styling issues with preview modal.
312
- * Fixed: Issue where plugin titles were not alphabetical.
313
- * Fixed: Disabled third party premium dependencies.
314
- * Fixed: Issue where crash would occur when Redux could not write out a file.
315
- * Fixed: CSS selectors with HTML entities, like >, were not getting decoded for the passed compiler values.
316
- * Fixed: Redux Pro activation issue.
317
- * Fixed: Invalid logic causing some extensions not to run.
318
- * Release date: Sep 18, 2020
319
 
320
  ** For a full changelog, see https://github.com/reduxframework/redux-framework/blob/master/CHANGELOG.md **
321
 
322
  == Frequently Asked Questions ==
323
 
324
- = Who should use the Redux Block Library for Gutenberg? =
325
 
326
  The Redux Block Library for Gutenberg is a complete package of unique and creative templates that will help you build beautiful pages and posts on a website. It is of value for everyone and for all who love Gutenberg.
327
 
328
- = What are the requirements to use the Redux Library for Gutenberg? =
329
 
330
  You only need to have the latest version of WordPress on your website, to begin with. Redux is for Gutenberg is basically an addon for the default WordPress block editor. Therefore, the latest WordPress installation along with a theme should be enough, to begin with.
331
 
@@ -335,12 +316,12 @@ Redux is built to work wonderfully with all themes.
335
 
336
  = Can I use Redux for Gutenberg even while having another Page Builder? =
337
 
338
- The basic need or requirement for Redux for Gutenberg is the latest WordPress version. Should you need help, you can <a href="https://redux.io/contact/?utm_source=wp-repo&utm_medium=link&utm_campaign=readme" target="_blank" rel="">get in touch with us.</a>
339
 
340
- = Can I use Redux for Gutenberg on client websites? =
341
 
342
  Yes! You can certainly use Redux on yours as well as your client's websites.
343
 
344
  = Will Redux slow down my website? =
345
 
346
- Absolutely not! The Redux Library for Gutenberg plugin is built with ease and performance in mind. Its module architecture and the clean code keep it extremely fast. Every performance issue that seems to be coming from Redux is actually the integration code of third-party developers. If you're having issues let us know, and we'll try to help you out.
4
  Requires at least: 4.0
5
  Requires PHP: 7.1
6
  Tested up to: 5.8.1
7
+ Stable tag: 4.3.0
8
  License: GPL-3.0+
9
  License URI: http://www.gnu.org/licenses/gpl-3.0.txt
10
 
11
+ Supercharge the Gutenberg editor with our library of block-based templates and patterns!
12
 
13
  == Description ==
14
  <strong>Redux - Quickly create full pages in WordPress’ Gutenberg</strong>
19
 
20
  Don’t waste hours trying to recreate a template you love. With a click of a button it its own website where you can start customizing it for your needs.
21
 
 
 
22
  <h4>♥️ What the Plugin does?</h4>
23
  <ul>
24
  <li><strong>Browse 1,000+</strong> templates from your Gutenberg Editor that you can add to your site immediately.</li>
25
+ <li><strong>Preview</strong> each template on a demo site.</li>
26
  <li><strong>Filter</strong> between the dependencies you want, and find exactly what you're looking for.</li>
27
  <li><strong>See instantly</strong> which Gutenberg templates you have everything for, or may need to install some dependencies.</li>
28
  <li><strong>Automated install</strong> of anything you may need to install any template.</li>
29
  <li><strong>Block Patterns library</strong> support built in.</li>
 
30
  <li>The most trusted option framework in the industry.</li>
31
  <li>Developer friendly: clean code, inline documentation</li>
32
  </ul>
33
 
34
  <h4>🚀 TYPICAL USE CASE OF THIS PLUGIN</h4>
35
+ Whether you are building a simple site or a **big site** with **lots of pages**, you just want it to look amazing. With the Extendify Library in Redux, you can begin making pages with various patterns or templates.
36
 
37
+ You can browse through the categories, as well as collections of like-styled pages. When you find something you like, we make sure you have everything you need. If a dependency (or required plugin) is missing, you are notified and can install the missing dependency. Worried that our templates may not work with your theme? No problem! With our custom `page templates` options, you can transform any site into precisely what you want it to be, no matter what you are using them for.
38
 
39
+ Don’t waste hours trying to recreate a design you love. With a click of a button, you have it on your own site, and you can begin customizing your template for your needs.
40
 
41
  <h4>🎉 Supported Page Builders</h4>
42
  Currently Redux supports only the <a href="https://wordpress.org/plugins/gutenberg/"><strong>Gutenberg / Block Editor of WordPress 5.0+</strong></a>.
60
  <li><strong>Extra Theme</strong> with Divi Builder – <strong>Library</strong> (for Templates etc.) – <strong>Category Templates</strong> (for Layouts, Templates etc.)</li>
61
  </ul>
62
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
63
  <h4>👍 BE A CONTRIBUTOR</h4>
64
  If you want to translate, <a href="https://translate.wordpress.org/projects/wp-plugins/redux-framework">go to the Translation Portal at translate.wordpress.org</a>.
65
 
66
+ You can also contribute code via our <a href="https://github.com/reduxframework/redux-framework/">GitHub Repository</a>. Be sure to use our develop branch to submit pull requests.
67
 
68
  <h4>📝 Documentation and Support</h4>
69
  <ul>
70
+ <li>For more information about the Template Library, check out <a href="https://extendify.com/" rel="nofollow ugc">Extendify</a>.</li>
71
+ <li>For information about the Redux Options Framework, check out <a href="https://devs.redux.io/” rel=”nofollow ugc”>Redux Documentation</a>.</li>
72
+ <li>If you have additional questions, reach out to us at support@redux.io</li>
73
  </ul>
74
 
75
  <h4>⚡ Like the Redux Plugin?</h4>
89
  <li>browser type</li>
90
  <li>referring site</li>
91
  <li>date and time of request</li>
92
+ <li>category selection or search term</li>
93
+ <li>anonymized IP address</li>
 
 
 
94
  </ul>
95
 
96
  API requests are only made when a user clicks on the Library button, launches the Redux Challenge, or opts into Google Font updates.
102
  1. Upload the entire plugin folder to the `/wp-content/plugins/` directory.
103
  2. Activate the plugin through the 'Plugins' menu in WordPress.
104
 
105
+ Once Installed and Activated you will be invited to Activate your Redux account. This is entirely voluntary and easily dismissed.
106
 
107
  If you want, you can use the [Gutenberg](https://wordpress.org/plugins/gutenberg/) plugin to get bleeding-edge experiments by the Gutenberg team.
108
 
 
 
 
 
 
 
 
 
 
109
  == Changelog ==
110
 
111
+ = 4.3.0 =
112
+ Added: Gutenberg Template Library updated to the new Extendify library. See more information here about this upgrade and how to access the legacy library: [https://redux.io/gutenberg-template-library-upgrade](https://redux.io/gutenberg-template-library-upgrade).
113
+ Added: Option to enable/disable Template libraries. Found under Settings > Redux > Templates
114
+ Added: Redux debug data moved to WordPress Site Health Info screen.
115
+ Removed: Redux Framework Health Screen.
116
+ Modified: Tools > Redux Framework screen moved to Settings > Redux
117
+ Modified: Redux Templates disabled by default.
118
+ Release date: September 21, 2021
119
+
120
  = 4.2.14 =
121
  Fixed: Parse error in Import/Export module due to old versions of PHP.
122
+ Release date: August 11, 2021
123
 
124
  = 4.2.13 =
125
  Fixed: #3822 - Default value function returns string or array to prevent type error.
128
  Added: New global arg `load_on_cron`. Set to true if you require Redux to run within a cron initiated function.
129
  Removed: URL based Import/Export option due to security concerns. Manual Import/Export features remain.
130
  Removed: Support URL feature due to security issues. Please use WordPress Site Health 'copy to clipboard' compiler to submit system data when reporting issues.
131
+ Release date: August 11, 2021
132
 
133
  = 4.2.11 =
134
  Fixed: Removed type declarations on core return values to support improperly written third-party extensions.
135
  Fixed: Added shim to prevent errors on functions calls outdated extensions are still using.
136
+ Fixed: Removed type declarations on field code to support outdated versions of PHP (PHP 7.4 is the minimum recommendation from WordPress...please update if you are able. [https://wordpress.org/about/requirements](https://wordpress.org/about/requirements).
137
  Fixed: Support URL button kicking back a JavaScript error.
138
+ Release date: July 29, 2021
139
 
140
  = 4.2.10 =
141
  Fixed: Output on the frontend triggering error.
142
  Fixed: Updated shims to support older extensions not authored by Redux.io
143
+ Release date: July 28, 2021
144
 
145
  = 4.2.9 =
146
  Fixed: WordPress data class now works properly.
147
+ Release date: July 28, 2021
148
 
149
  = 4.2.8 =
150
  Redux instances returning null. Saved options now show on the front end.
151
+ Release date: July 28, 2021
152
 
153
  = 4.2.7 =
154
  Fixed: Options reverting or not saving.
155
+ Release date: July 28, 2021
156
 
157
  = 4.2.6 =
158
  Fixed: Fatal error if passing null as an option section.
159
  Fixed: Error in connection banner routine.
160
+ Release date: July 28, 2021
161
 
162
  = 4.2.5 =
163
  Fixed: Type mismatch in Redux Helpers.
164
+ Release date: July 28, 2021
165
 
166
  = 4.2.4 =
167
  Fixed: Taxonomy WordPress data not handled properly in fields that support WordPress data.
168
+ Release date: July 28, 2021
169
 
170
  = 4.2.3 =
171
  Fixed: Return type error in Redux templates.
172
+ Release date: July 28, 2021
173
 
174
  = 4.2.2 =
175
  Fixed: WordPress data options not handling WP_Error properly.
176
+ Release date: July 28, 2021
177
 
178
  = 4.2.1 =
179
  Fixed: Type mismatch regarding select boxes and callbacks.
180
+ Release date: July 27, 2021
181
 
182
  = 4.2.0 =
183
+ New: Typography features: Top and bottom margins, text-shadow.
184
+ New: Media Image Filters (greyscale, sepia, opacity, contrast, invert, blur, saturate, brightness, hue-rotate).
185
+ New: Filters (type, reach, angle) for Gradient color field.
186
+ New: Box Shadow field.
187
+ New: Flyout Submenus: `flyout_submenus` global arg.
188
+ New: Alpha color option for color field: `color_alpha` field arg for fields that support color pickers.
189
+ Updated: select2 library to 4.1.0.
190
+ Updated: readme.txt to conform to wp.org standards.
191
+ Fixed: Remove PHP 7.2 syntax to keep older versions of PHP 7 happy.
192
+ Fixed: Redux templates not showing on 'page attributes' for some.
193
+ Fixed: Additional PHP 8.0 compatibility.
194
+ Fixed: Widget screen would not load due to conflict with template library.
195
+ Added: WordPress 5.8 compatibility.
196
+ Improved: Better Gutenberg block editor detection.
197
+ Modified: Redux Pro no longer required for automatic Google font updates.
198
+ Modified: Rename Parsedown class for raw field to avoid conflicts with other plugins.
199
+ Removed: `async_typography` global arg. Google no longer supports it. Use `font_display` with one of the following `auto|block|swap|fallback|optional`. See: [https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display](https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display)
200
+ Release date: July 27, 2021
201
 
202
  = 4.1.29 =
203
+ Fixed: All PHP 7.4 specific syntax backed out. It caused older versions of PHP to report fatal errors.
204
+ Fixed: Index error in the image_select field.
205
+ Release date: June 29, 2021
206
 
207
  = 4.1.28 =
208
+ Fixed: Redux templates loading on post types with no block editor.
209
+ Fixed: Redux theme checks no longer prevent theme check plugin from functioning.
210
+ Fixed: Heatbeat check no longer eats the function if disregarded.
211
+ Fixed: Background field image now hides preview image upon removal.
212
+ Fixed: RAW field in sample config now works.
213
+ Fixed: Helper function is_field_in_use now returns false, instead of null.
214
+ Fixed: Palette field rendering improperly.
215
+ Fixed: Google font update fail.
216
+ Modified: buttonset() jQuery widget deprecated. Replaced with controlgroup().
217
+ Modified: Additional JavaScript updates to fix jQuery deprecation notices.
218
+ Release date: June 29, 2021
219
 
220
  = 4.1.27 =
221
+ Fixed: Image select not selecting default value.
222
+ Modified: Link color field overridden by theme. Added 'important' arg to the output array to fix. See sample config.
223
+ Fixed: Same config not setting footer background in Twenty-twenty theme due to incorrect class.
224
+ Fixed: Radio field not displaying text after save/refresh when displaying WordPress data.
225
+ Modified: Donation text removed.
226
+ Fixed: Link color CSS compiling incorrectly due to late escaping.
227
 
228
  = 4.1.26 =
229
+ Added: Menu accent introduced in WordPress 5.7.
230
+ Updated: ACE Editor 1.4.12.
231
+ Updated select2 to support cssContainer.
232
+ Fixed: Multiple submenus in metaboxes; the last submenu it cut off.
233
+ Fixed: Fatal error: Can't use function return value in write context.
234
+ Fixed: PHP 8.0 deprecation warnings.
235
+ Fixed: Malformed HTML causing Redux pro alpha color-picker to not render.
236
+ Fixed: IMproved class checks for Redux Pro.
237
+ Fixed: jQuery 3.x deprecation notices.
238
+ Fixed: Malformed SCSS.
239
+ Release date: March 17, 2021
240
 
241
  = 4.1.25 =
242
+ Fixed: Erroneous icon on button_set field after WP 5.6 update.
243
+ Fixed: Erroneous icon on palette field after WP 5.6 update.
244
+ Fixed: PHP error in init_delay function during heartbeat API.
245
+ Fixed: Options object field not rendering.
246
+ Release date: Jan 21, 2021
247
 
248
  = 4.1.24 =
249
+ Fixed: Select2 callback fix for select fields.
250
+ Added: Shim: empty field_*.php files to fix developers including files improperly.
251
+ Fixed: Changed use of ctype_xdigit to account for hosts where it's disabled.
252
+ Added: Shim for people using terms data key, but using taxonomies instead of taxonomy.
253
+ Fixed: Static call mismatch in redux colors.
254
+ Fixed: CSRF security issue with a flipped if conditional. Thanks, @ErwanLR.
255
+ Fixed: WordPress 4.6 API warnings.
256
+ Fixed: WordPress 4.6 customizer issue where fields not displaying properly.
257
+ Fixed: Massive speed improvement to the library.
258
+ Fixed: Pro template count error if previously activated and Redux Pro not enabled.
259
+ Release date: Dec 12, 2020
260
 
261
  = 4.1.23 =
262
+ Fixed: Massive speed improvement to the library.
263
+ Fixed: Pro template count error if previously activated and Redux Pro not enabled.
264
+ Release date: Oct 24, 2020
265
 
266
  = 4.1.22 =
267
+ Fixed: Menu locations WordPress data object not providing name.
268
+ Added: Undefined if menu location is not assigned to a menu.
269
+ Fixed: Another import/export edge case.
270
+ Fixed: Fix setField API value.
271
+ Fixed: Older extension compatibility.
272
+ Fixed: Text field error with data/options args not displaying properly.
273
+ Fixed: Import/Export now properly respects order of objects. Now using PHP over JS json_encode.
274
+ Release date: Oct 23, 2020
275
 
276
  = 4.1.21 =
277
+ Fixed: Fixed connection banner to hide even if JS is broken by jQuery migrate issue (WP 5.5).
278
+ Fixed: Resolved all remaining legacy extension compatibility issues.
279
+ Fixed: Custom callback with select field.
280
+ Fixed: Typography bug when style was hidden.
281
+ Fixed: Issue with text labels.
282
+ Fixed: Google fonts HTML validation issues.
283
+ Added: Feedback modal.
284
+ Fixed: Import logic flaw.
285
+ Fixed: Security bug. Thanks, @lenonleite of www.lenonleite.com.br.
286
+ Release date: Oct 08, 2020
287
 
288
  = 4.1.20 =
289
+ Added: Properly adjust the blocked editor page width based on template selected.
290
+ Added: Broke out third-party premium plugins for filtering to help with understanding of what comes with Redux Pro.
291
+ Added: Update block editor width when selecting a Redux template.
292
+ Fixed: Some styling issues with preview modal.
293
+ Fixed: Issue where plugin titles were not alphabetical.
294
+ Fixed: Disabled third party premium dependencies.
295
+ Fixed: Issue where crash would occur when Redux could not write out a file.
296
+ Fixed: CSS selectors with HTML entities, like >, were not getting decoded for the passed compiler values.
297
+ Fixed: Redux Pro activation issue.
298
+ Fixed: Invalid logic causing some extensions not to run.
299
+ Release date: Sep 18, 2020
300
 
301
  ** For a full changelog, see https://github.com/reduxframework/redux-framework/blob/master/CHANGELOG.md **
302
 
303
  == Frequently Asked Questions ==
304
 
305
+ = Who should use the Gutenberg Template Library? =
306
 
307
  The Redux Block Library for Gutenberg is a complete package of unique and creative templates that will help you build beautiful pages and posts on a website. It is of value for everyone and for all who love Gutenberg.
308
 
309
+ = What are the requirements to use the Gutenberg Template Library? =
310
 
311
  You only need to have the latest version of WordPress on your website, to begin with. Redux is for Gutenberg is basically an addon for the default WordPress block editor. Therefore, the latest WordPress installation along with a theme should be enough, to begin with.
312
 
316
 
317
  = Can I use Redux for Gutenberg even while having another Page Builder? =
318
 
319
+ The basic need or requirement for the Gutenberg Template Library is the latest WordPress version. Should you need help, you can <a href="https://redux.io/contact/?utm_source=wp-repo&utm_medium=link&utm_campaign=readme" target="_blank" rel="">get in touch with us.</a>
320
 
321
+ = Can I use the Gutenberg Template Library on client websites? =
322
 
323
  Yes! You can certainly use Redux on yours as well as your client's websites.
324
 
325
  = Will Redux slow down my website? =
326
 
327
+ Absolutely not! The Gutenberg Template Library plugin is built with ease and performance in mind. Its module architecture and the clean code keep it extremely fast. Every performance issue that seems to be coming from Redux is actually the integration code of third-party developers. If you're having issues let us know, and we'll try to help you out.
redux-core/assets/css/redux-fields.min.css CHANGED
@@ -1,3 +1,3 @@
1
- .redux-container-ace_editor .ace-wrapper{position:static}.redux-container-ace_editor .ace_editor{height:200px;border-radius:3px}.redux-container-ace_editor .ace_gutter{z-index:1 !important}.redux-main .redux-container-background .redux-background-position,.redux-main .redux-container-background .redux-background-position select,.redux-main .redux-container-background .redux-background-attachment,.redux-main .redux-container-background .redux-background-attachment select,.redux-main .redux-container-background .redux-background-clip,.redux-main .redux-container-background .redux-background-clip select,.redux-main .redux-container-background .redux-background-origin,.redux-main .redux-container-background .redux-background-origin select,.redux-main .redux-container-background .redux-background-size,.redux-main .redux-container-background .redux-background-size select,.redux-main .redux-container-background .redux-background-repeat,.redux-main .redux-container-background .redux-background-repeat select{width:200px !important;margin-right:10px;margin-bottom:7px}.redux-main .redux-container-background .background-preview{display:block;width:100%;margin:5px 0 10px;border:1px dotted #d3d3d3}.redux-main .redux-container-background .select2-container{margin-right:10px;margin-bottom:10px}.redux-main .redux-container-background .wp-picker-container{margin-bottom:10px}.redux-main .redux-container-background .upload{width:100%;margin-bottom:8px}.redux-main .redux-container-select li.ui-state-highlight{height:20px;margin-top:2px;margin-left:5px;width:64px;margin-bottom:0}.wp-customizer .redux-container-background .redux-background-position,.wp-customizer .redux-container-background .redux-background-position select,.wp-customizer .redux-container-background .redux-background-attachment,.wp-customizer .redux-container-background .redux-background-attachment select,.wp-customizer .redux-container-background .redux-background-clip,.wp-customizer .redux-container-background .redux-background-clip select,.wp-customizer .redux-container-background .redux-background-origin,.wp-customizer .redux-container-background .redux-background-origin select,.wp-customizer .redux-container-background .redux-background-size,.wp-customizer .redux-container-background .redux-background-size select,.wp-customizer .redux-container-background .redux-background-repeat,.wp-customizer .redux-container-background .redux-background-repeat select{width:100% !important}.redux-main .redux-container-box_shadow .box-shadow-inset{margin:0 auto}.redux-main .redux-container-box_shadow .box-shadow-inset #shadow-result{padding:20px;margin-bottom:20px;margin-top:20px;min-height:180px;border:0px solid #ddd;background:#f1f1f1;-webkit-transition:all 0.2s ease;transition:all 0.2s ease}.redux-main .redux-container-box_shadow .box-shadow-inset .row-content:after,.redux-main .redux-container-box_shadow .box-shadow-inset .row:after{clear:both;content:" ";display:block;height:0;visibility:hidden}.redux-main .redux-container-box_shadow .box-shadow-inset .row .col-2{width:50%;float:left;-webkit-box-sizing:border-box;box-sizing:border-box}.redux-main .redux-container-box_shadow .box-shadow-inset .row .col-2.disabled label strong{color:#cccccc}.redux-main .redux-container-box_shadow .box-shadow-inset .row .col-2 label{color:#999999}.redux-main .redux-container-box_shadow .box-shadow-inset .row .col-2 .wp-picker-container.disabled{pointer-events:none;opacity:0.4;z-index:200;background:0;padding:0 !important}.redux-main .redux-container-box_shadow .box-shadow-inset .row .col-2 .wp-picker-container.disabled button{background-color:#888}.redux-main .redux-container-box_shadow .box-shadow-inset .row .col-2 .wp-picker-container.disabled a{z-index:-1}.redux-main .redux-container-box_shadow .box-shadow-inset .row .col-2 ul li{padding-bottom:10px}.redux-main .redux-container-box_shadow .box-shadow-inset .row .col-2:first-child{padding-right:20px}.redux-main .redux-container-box_shadow .box-shadow-inset .row .col-2:last-child{padding-left:20px}.redux-container-border .select2-container{float:left;display:block;margin-right:10px}.redux-container-border .select_wrapper{float:left;width:inherit}.redux-container-border .select_wrapper select{width:80px;float:left}.redux-container-border .field-border-input{margin-right:10px;margin-bottom:7px}@media screen and (max-width: 782px){.redux-container-border .field-border-input input{display:inline-block !important;width:100px !important}.redux-container-border .field-border-input .add-on{padding:7px 4px;font-size:16px;line-height:1.5}.redux-container-border .select_wrapper{margin-top:6px}}.redux-container-checkbox label{vertical-align:top;width:100%}.redux-container-checkbox label .field-desc{margin-top:0;float:left;width:93%;clear:none}.redux-container-color_gradient .redux-gradient-preview{height:150px;margin-top:10px;border-radius:4px}.redux-container-color_gradient .colorGradient,.redux-container-color_gradient .redux-gradient-type{display:inline-block;margin-right:20px}.redux-container-color_gradient .colorGradient strong,.redux-container-color_gradient .redux-gradient-type strong{display:table;margin-bottom:5px;margin-left:3px;font-size:12px;color:#999}@media screen and (max-width: 660px){.redux-container-color_gradient .colorGradient{display:block;text-align:center !important}}.redux-main .redux-container-color_palette label{position:relative;display:inline-block;padding:0;margin:0}.redux-main .redux-container-color_palette .colors-wrapper{max-height:300px;overflow-y:auto;padding:10px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}.redux-main .redux-container-color_palette .colors-wrapper .color-palette-color{color:transparent;display:block;width:100%;height:100%;overflow:hidden;border:1px solid rgba(0,0,0,0.2)}.redux-main .redux-container-color_palette .colors-wrapper.round label{padding:3px}.redux-main .redux-container-color_palette .colors-wrapper.round .color-palette-color{border-radius:50%}.redux-main .redux-container-color_palette .colors-wrapper.box-shadow .color-palette-color{-webkit-box-shadow:inset 3px 3px 13px 2px rgba(0,0,0,0.22);box-shadow:inset 3px 3px 13px 2px rgba(0,0,0,0.22)}.redux-main .redux-container-color_palette .colors-wrapper input{display:none}.redux-main .redux-container-color_palette .colors-wrapper input:checked+label .color-palette-color{border:0;width:130%;height:130%;position:relative;left:-15%;top:-15%;z-index:99;-webkit-box-shadow:1px 1px 6px 1px #333333;box-shadow:1px 1px 6px 1px #333333;border:1px solid rgba(0,0,0,0.3)}.redux-main .redux-container-color_palette .colors-wrapper.with-margin label{margin:3px !important}.sp-container{color:#555;border-color:#ccc;background:#f7f7f7;-webkit-box-shadow:inset 0 1px 0 #fff,0 1px 0 rgba(0,0,0,0.08);box-shadow:inset 0 1px 0 #fff,0 1px 0 rgba(0,0,0,0.08);vertical-align:top}.sp-replacer{color:#555;border-color:#ccc;background:#f7f7f7;-webkit-box-shadow:inset 0 1px 0 #fff,0 1px 0 rgba(0,0,0,0.08);box-shadow:inset 0 1px 0 #fff,0 1px 0 rgba(0,0,0,0.08);vertical-align:top}.sp-replacer:focus,.sp-replacer:hover,.sp-replacer.focus,.sp-replacer.hover{background:#fafafa;border-color:#999;color:#222}.sp-replacer:focus,.sp-replacer.focus{-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,0.8);box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,0.8)}.sp-replacer.active:focus{-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,0.5),0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,0.8);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,0.5),0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,0.8)}.sp-replacer.active,.sp-replacer.active:hover,.sp-replacer:active{background:#eee;border-color:#999;color:#333;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,0.5);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,0.5)}#ui-datepicker-div{z-index:15 !important}.ui-datepicker-header{background-color:#00abef}.redux-dimensions-container select,.redux-dimensions-container .select_wrapper{width:80px !important;float:left}.redux-dimensions-container .field-dimensions-input{margin-right:10px;margin-bottom:7px}@media screen and (max-width: 782px){.redux-dimensions-container .field-dimensions-input input{display:inline-block !important;width:100px !important}.redux-dimensions-container .field-dimensions-input .add-on{padding:7px 4px;font-size:16px;line-height:1.5}.redux-dimensions-container .select_wrapper{margin-top:6px}}.redux-main .divide{height:20px;line-height:20px;float:none;border-color:#e7e7e7;display:block;width:100%;height:35px !important;line-height:35px !important;position:relative;margin:15px 0 10px 0}.redux-main .divide .inner{width:42% !important;left:40% !important;margin-left:-6%;background-color:#fcfcfc;border-color:#e7e7e7;position:absolute;height:1px;top:50%;width:100%;margin-top:-1px;border-top-width:1px;border-top-style:solid}.redux-main .divide .inner span{background-color:#fcfcfc;border-color:#e7e7e7;height:5px;width:5px;border-width:2px;border-style:solid;display:block;position:absolute;left:50%;margin-left:-5px;margin-top:-5px}.wp-customizer .redux-container-divide .divide .inner{width:82% !important;left:18% !important;margin-left:-8%}.redux-container-editor .mceLayout td{border-width:1px;margin:0;padding:1px}.redux-container-editor input,.redux-container-editor textarea{margin:inherit}.redux-container-editor textarea{border-style:none;border:0;border-width:0}.redux-container-editor .wp-editor-container{border-radius:3px}.redux-container-editor .wp-editor-container textarea{border-radius:0;border-style:inherit}.redux-container-editor .quicktags-toolbar input{margin:2px 1px 4px;display:inline-block;min-width:26px;padding:2px 4px;font:12px/18px Arial, Helvetica, sans-serif normal;color:#464646;border:1px solid #c3c3c3;border-radius:3px;background:#eee;background-image:-webkit-gradient(linear, left bottom, left top, from(#e3e3e3), to(#fff));background-image:-webkit-linear-gradient(bottom, #e3e3e3, #fff);background-image:linear-gradient(to top, #e3e3e3, #fff)}.redux-container-image_select .redux-table-container{display:table;table-layout:fixed;width:100%}.redux-container-image_select .redux-image-select{margin:0 !important}.redux-container-image_select .redux-image-select .tiles{display:block;background-color:#fff;background-repeat:repeat;width:40px;height:40px}.redux-container-image_select .redux-image-select img,.redux-container-image_select .redux-image-select .tiles{border-color:#d9d9d9}.redux-container-image_select .redux-image-select li:last-child{margin-bottom:0}.redux-container-image_select .redux-image-select input[type="radio"]{display:none}.redux-container-image_select .redux-image-select-presets img{width:100%}.redux-container-image_select ul.redux-image-select li{margin:0 10px 3px 10px;display:inline-block;padding:2px 2px;padding-left:0}.redux-container-image_select .redux-image-select-selected{background-color:#f9f9f9}.redux-container-image_select .redux-image-select img,.redux-container-image_select .redux-image-select-selected img,.redux-container-image_select .redux-image-select .tiles,.redux-container-image_select .redux-image-select-selected .tiles{border-width:4px;border-style:solid}.redux-container-image_select .redux-image-select-selected .tiles,.redux-container-image_select .redux-image-select-selected .tiles{border-color:#7a7a7a}.redux-container-link_color .linkColor{display:inline-block;padding-right:10px;padding-bottom:7px}.redux-container-link_color .linkColor strong{display:table;margin-bottom:5px;margin-left:3px;font-size:12px;font-weight:normal;color:#999}.redux-main .redux-media-slider{width:40%;display:inline-block;margin-left:30px}.redux-main .redux-media-filter-container{padding-top:20px}.redux-main .redux-media-filter-container .container-label{margin-bottom:20px;padding-bottom:1px;border-bottom:1px solid #e7e7e7;font-weight:600;font-size:12px;color:#999}.redux-main .redux-media-filter-container .media-filter{display:inline-block;width:47%;margin-bottom:5px}.redux-main .redux-media-filter-container .media-filter label{display:inline-block;width:130px;color:#999}.redux-main .redux-media-filter-container .media-filter label.disabled .filter-value{color:#ccc}.redux-container-palette label{border:3px solid transparent;border-color:transparent !important;border-radius:0;width:100% !important;display:block}.redux-container-palette label.ui-button.ui-widget{width:95%;background:none;padding:0;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.redux-container-palette label.ui-button.ui-widget .ui-checkboxradio-icon,.redux-container-palette label.ui-button.ui-widget .ui-checkboxradio-icon-space{display:none}.redux-container-palette label.ui-button.ui-widget span{padding:10px;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;font-size:0;line-height:10px;color:rgba(0,0,0,0);-webkit-transition:all 200ms ease-in-out;transition:all 200ms ease-in-out;text-shadow:0}.redux-container-palette label.ui-button.ui-widget span:hover{-webkit-box-flex:3;-webkit-flex-grow:3;-ms-flex-positive:3;flex-grow:3;font-weight:bold;min-width:60px;font-size:12px;line-height:10px;color:#333;text-shadow:0 0 8px #fff, 0 0 8px #fff}.redux-container-palette label.ui-state-active{border:3px solid #333 !important}.wp-customizer .redux-main .redux-container-palette label{margin-bottom:3px}.redux-info-field{min-height:20px;padding:8px 19px;margin:10px 0;border:1px solid;border-radius:4px;border:1px solid;position:relative}.redux-info-field h1,.redux-info-field h2,.redux-info-field h3,.redux-info-field h4,.redux-info-field h5,.redux-info-field h6{border-bottom:0 !important}.redux-info-field h3{color:#777}.redux-info-field .redux-info-icon{display:inline-block;margin-right:15px}.redux-info-field .redux-info-icon i{font-size:2em}.redux-info-field .redux-info-desc{display:inline-block;vertical-align:top}.redux-info-field.redux-normal{background-color:#eee;border-color:#ccc;color:#666}.redux-info-field.redux-normal i{color:#c5c5c5}.redux-info-field.redux-warning{background-color:#fbeba4;border-color:#d7c281;color:#958234}.redux-info-field.redux-warning i{color:#dcca81}.redux-info-field.redux-success{background-color:#c4ee91;border-color:#71af5d;color:#4d7615}.redux-info-field.redux-success i{color:#a0ca6c}.redux-info-field.redux-critical{background-color:#fba1a3;border-color:#b84f5b;color:#981225}.redux-info-field.redux-critical i{color:#dd767d}.redux-info-field.redux-info{background-color:#d3e4f4;border-color:#a9b6c2;color:#5c80a1}.redux-info-field.redux-info i{color:#afc6da}.redux-notice-field{margin:15px 0 0;background-color:#fff;border:0;border-left:4px solid #f3f3f3;-webkit-box-shadow:0 1px 1px 0 rgba(0,0,0,0.1);box-shadow:0 1px 1px 0 rgba(0,0,0,0.1);padding:1px 12px}.redux-notice-field h1,.redux-notice-field h2,.redux-notice-field h3,.redux-notice-field h4,.redux-notice-field h5,.redux-notice-field h6{border-bottom:0 !important}.redux-notice-field p{margin:0.5em 0;padding:2px}.redux-notice-field .redux-info-icon{display:inline-block;margin-right:15px}.redux-notice-field .redux-info-icon i{font-size:2em}.redux-notice-field .redux-info-desc{display:inline-block;vertical-align:top}.redux-notice-field.redux-info{border-left:4px solid #0099d5}.redux-notice-field.redux-success{border-left:4px solid #7ad03a}.redux-notice-field.redux-warning{border-left:4px solid #fbeba4}.redux-notice-field.redux-critical{border-left:4px solid #dd3d36}.redux-main .redux-field-container.redux-container-info{padding:0}.wp-customizer .hasIcon.redux-notice-field .redux-info-desc,.wp-customizer .hasIcon.redux-info-field .redux-info-desc{display:block;margin-left:43px}.wp-customizer .hasIcon.redux-notice-field .redux-info-icon,.wp-customizer .hasIcon.redux-info-field .redux-info-icon{float:left}.wp-customizer .redux-main .customize-control.customize-control-redux-info{border-bottom:0}.redux-container-multi_text ul.redux-multi-text{margin:0;padding:0}.redux-container-multi_text .redux-multi-text-add{clear:both;margin:5px 0}.redux-container-multi_text a.redux-multi-text-remove.deletion{color:#f00;padding:2px 4px;margin-left:5px}.redux-container-multi_text a.redux-multi-text-remove.deletion:hover{background:#ff0;color:#fff;text-decoration:none}@media screen and (max-width: 782px){.redux-container-multi_text input{clear:both}.redux-container-multi_text .redux-multi-text-remove{margin:0;float:right}}.wp-customizer .redux-container-multi_text .button{float:right}.wp-customizer .redux-container-multi_text .redux-multi-text-remove{float:right;margin-bottom:5px}.wp-customizer .redux-container-multi_text ul.redux-multi-text input{width:100% !important}.redux-container-select_image{margin-top:2px;margin-left:5px;width:100%;margin-bottom:0}.redux-preview-image{max-height:250px;max-width:250px;padding:5px;margin-top:10px;border:1px solid #e3e3e3;background:#f7f7f7;border-radius:3px}.redux-container-slider .redux-slider-container{margin-left:25px;margin-right:25px;width:200px;display:inline-block;vertical-align:middle}.redux-container-slider .redux-slider-input,.redux-container-slider .redux-slider-select-one,.redux-container-slider .redux-slider-select-two{width:100px !important;text-align:center}.redux-container-slider .redux-slider-label{position:absolute;margin-left:-5px}.redux-container-slider .redux-slider-label-one{position:absolute;margin-left:-22px}.redux-container-slider .redux-slider-label-two{position:absolute;margin-top:-21px;margin-left:245px}@media screen and (max-width: 782px){.redux-container-slider input{display:inline-block !important}}@media screen and (max-width: 570px){.redux-container-slider{text-align:center}.redux-container-slider input,.redux-container-slider select,.redux-container-slider .redux-slider-label,.redux-container-slider .select2-container{display:block !important;position:inherit;margin:10px auto}.redux-container-slider .redux-slider-container{margin-top:3px;width:80%}}.wp-customizer .redux-container-slider .redux-slider-label{float:left;position:inherit;width:25%;text-align:center;margin-left:0}.wp-customizer .redux-container-slider .redux-slider-input,.wp-customizer .redux-container-slider .redux-slider-select-one,.wp-customizer .redux-container-slider .redux-slider-select-two{width:25% !important}.wp-customizer .redux-container-slider .redux-slider-container{width:70%;margin-right:0;margin-left:5%}.redux-container-slides .redux-slides-list .select2-container{margin-bottom:10px;width:100%}.redux-container-slides .ui-accordion-header{margin-bottom:0}.redux-container-slides .full-text,.redux-container-slides .large-text{width:100%}.redux-container-slides .redux-slides-accordion-group{border:1px solid #dfdfdf !important;border-radius:3px !important;margin-top:0px !important;margin-bottom:10px;background:#f9f9f9;padding:5px}.redux-container-slides .redux-slides-accordion-group h3{border:1px solid #dfdfdf;cursor:move !important;font-weight:bold;padding:0 10px !important;height:40px;line-height:40px !important;background-color:#f1f1f1;background-image:-webkit-gradient(linear, left top, left bottom, from(#f9f9f9), to(#ececec));background-image:-webkit-linear-gradient(top, #f9f9f9, #ececec);background-image:linear-gradient(to bottom, #f9f9f9, #ececec);overflow:hidden;border-radius:3px;-webkit-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff;text-align:center}.redux-container-slides #redux-slides-accordion .redux-slides-image{height:250px;padding:5px;margin-top:10px;margin-bottom:10px;border:1px solid #e3e3e3;background:#f7f7f7;border-radius:3px}.redux-container-slides .redux-slides-add{float:right;margin-right:10%;display:block;margin-bottom:10px}.redux-container-slides .redux-slides-remove{color:#ef521d !important;float:right;margin-top:5px}.redux-container-slides .redux-slides-header{font-weight:bold}.redux-container-slides .redux_slides_add_remove{margin-bottom:10px}.redux-container-slides input{width:100% !important}.wp-customizer .redux-container-slides .ui-accordion .ui-accordion-content{padding:10px}.redux-container-sortable i.el,.redux-container-sortable i.dashicons-menu{cursor:move;padding-top:5px}.redux-container-sortable label{margin-right:10px}.redux-container-sortable label.bugger{margin-bottom:0px !important;font-size:12px !important;color:#999}.redux-container-sortable input{margin-right:10px}.redux-container-sortable .checkbox-container{width:100%}.redux-container-sortable .checkbox-container label{margin-bottom:2px !important;cursor:inherit}.redux-container-sortable .checkbox-container .drag{float:right;margin-left:10px}.redux-container-sortable ul.checkbox li{padding:5px 10px;border:1px solid #333;background:#fff;margin-bottom:5px !important}.redux-container-sortable ul.checkbox li .dashicons.visibility{padding-top:4px;margin-right:10px;cursor:pointer}.redux-container-sortable ul.checkbox li.invisible{color:#aaa;border:1px dashed #aaa}.redux-container-sortable ul.checkbox li.invisible .dashicons.visibility{color:#aaa}.redux-container-sortable ul.labeled li{line-height:1.4em !important}.redux-container-sortable li{line-height:30px !important}.redux-container-sortable li.ui-state-highlight{height:30px;width:364px;margin-bottom:13px}.redux-container-sortable li.placeholder{height:30px;margin:10px 0}.wp-customizer .redux-sortable input[type="text"]{width:92%}.wp-customizer .redux-sortable i.el{margin-left:5px}.wp-customizer .redux-container-sortable .checkbox-container{width:inherit}.wp-customizer .redux-container-sortable .ui-draggable-handle{margin-left:3%}.redux-container-sorter{margin-right:-20px}.redux-container-sorter ul{background:#f9f9f9;border:1px solid #e3e3e3;min-height:40px;padding:10px 10px 0;width:145px;float:left;margin:0 15px 0 0}.redux-container-sorter ul.filled{opacity:0.7;filter:alpha(opacity=70);background:#efecec}.redux-container-sorter ul li{border:1px solid #dfdfdf;cursor:move;font-weight:bold;margin-bottom:10px !important;padding:0 10px;height:40px;line-height:40px !important;background-color:#f1f1f1;background-image:-webkit-gradient(linear, left top, left bottom, from(#f9f9f9), to(#ececec));background-image:-webkit-linear-gradient(top, #f9f9f9, #ececec);background-image:linear-gradient(to bottom, #f9f9f9, #ececec);overflow:hidden;border-radius:3px;-webkit-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff;text-align:center}.redux-container-sorter ul li h3{margin:0 0 10px;text-align:center;color:#777;text-transform:capitalize;word-wrap:break-word}.redux-container-sorter ul li.placeholder{height:40px}.wp-customizer .redux-container-sorter ul{width:85%;margin:0 0 5px 0}.redux-container-select li.ui-state-highlight{height:20px;margin-top:2px;margin-left:5px;width:64px;margin-bottom:0}.select2-search__field{width:none !important}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove,.select2-container--classic .select2-selection--single .select2-selection__clear{font-size:1.2em}.redux-container-spinner .spinner-wrpr{position:relative;display:block;height:30px;overflow:hidden}.redux-container-spinner .spinner-wrpr .spinner-input{position:relative !important;z-index:1;width:75px !important;height:30px !important;background:#eee !important;border:1px solid #bfbfbf !important;border-right:0 !important;border-left:0 !important;border-radius:0 !important}.redux-container-spinner .ui-spinner{position:static;display:inline}.redux-container-spinner .ui-spinner-buttons{position:absolute;padding:0}.redux-container-spinner .ui-widget .ui-spinner-button{color:#fff;position:absolute;top:0;padding:0 0 30px;overflow:hidden;cursor:pointer;background:-webkit-gradient(linear, left top, left bottom, from(#fff), to(#f3f3f3));background:-webkit-linear-gradient(#fff, #f3f3f3);background:linear-gradient(#fff, #f3f3f3);background-color:#fff;border:none;-webkit-box-shadow:none;box-shadow:none}.redux-container-spinner .ui-spinner-button:hover,.redux-container-spinner .ui-state-hover{background:-webkit-gradient(linear, left top, left bottom, from(#f3f3f3), to(#fff));background:-webkit-linear-gradient(#f3f3f3, #fff);background:linear-gradient(#f3f3f3, #fff);background-color:#f3f3f3}.redux-container-spinner .ui-corner-tr,.redux-container-spinner .ui-spinner-button .ui-icon-triangle-1-n{border-radius:0 3px 3px 0}.redux-container-spinner .ui-corner-br,.redux-container-spinner .ui-spinner-button .ui-icon-triangle-1-s{border-radius:3px 0 0 3px}.redux-container-spinner .ui-spinner-button .ui-icon{top:0;display:block;width:28px;height:28px;margin:0;border:1px solid #b7b7b7;background-image:initial;text-indent:0;text-align:center;font-size:18px;line-height:26px}.dp-numberPicker,.dp-numberPicker-add,.dp-numberPicker-sub,.dp-numberPicker-input{display:inline-block;-webkit-box-sizing:border-box;box-sizing:border-box;-moz-box-sizing:border-box;text-align:center;vertical-align:top;height:30px}.dp-numberPicker{border-radius:3px}.redux-container .redux-container-spinner .dp-numberPicker-add,.redux-container .redux-container-spinner .dp-numberPicker-sub{width:30px;font-size:21px;cursor:pointer;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none;background-color:#33b5e5;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);height:29px !important}.redux-container .redux-container-spinner .dp-numberPicker-add.disabled,.redux-container .redux-container-spinner .dp-numberPicker-sub.disabled{background-color:#2c6a81}.dp-numberPicker-add{border-top-right-radius:3px;border-bottom-right-radius:3px}.dp-numberPicker-sub{border-top-left-radius:3px;border-bottom-left-radius:3px}.dp-numberPicker-input{width:70px;background-color:#eee;border:0;margin:0 !important;-webkit-box-shadow:inset 0px 1px 1px rgba(255,255,255,0.5),inset 0px -1px 1px rgba(0,0,0,0.5);box-shadow:inset 0px 1px 1px rgba(255,255,255,0.5),inset 0px -1px 1px rgba(0,0,0,0.5)}.dp-numberPicker-input:disabled{background-color:#eee}.redux-container-switch .switch-options{min-height:30px;margin-right:10px}.redux-container-switch .switch-options label{cursor:pointer}.redux-container-switch .switch-options input{display:none}.redux-container-switch .cb-enable,.redux-container-switch .cb-disable{padding:0 10px;border-width:1px;border-style:solid;-webkit-appearance:none;white-space:nowrap;-webkit-box-sizing:border-box;box-sizing:border-box}.redux-container-switch .cb-enable span,.redux-container-switch .cb-disable span{line-height:30px;display:block;font-weight:700;-webkit-user-select:none;-moz-user-select:none;-o-user-select:none;-ms-user-select:none;user-select:none}.redux-container-switch .cb-enable,.redux-container-switch .cb-disable,.redux-container-switch .cb-enable span,.redux-container-switch .cb-disable span{display:block;float:left}.redux-container-switch .cb-enable{border-right:0;border-radius:3px 0px 0px 3px;-moz-border-radius:3px 0px 0px 3px;-webkit-border-radius:3px 0px 0px 3px}.redux-container-switch .cb-enable.selected{color:#fff}.redux-container-switch .cb-disable{border-left:0;border-radius:0px 3px 3px 0px;-moz-border-radius:0px 3px 3px 0px;-webkit-border-radius:0px 3px 3px 0px}.redux-container-switch .cb-disable.selected{color:#fff}.redux-container-text label{display:block;position:relative;font-size:12px !important;text-align:left;color:#999;margin:4px 0 2px 0 !important;cursor:default;top:5px;width:100px}.redux-container-text input{clear:left}.redux-container-text .input_wrapper{display:block;position:relative;padding:0;width:23%;max-width:23%;min-width:70px;float:left;clear:left;height:57px;-webkit-box-sizing:border-box;-o-box-sizing:border-box;box-sizing:border-box;vertical-align:baseline}.wp-customizer .redux-container-text .input_wrapper{width:100%;max-width:100%;height:auto}.redux-main .redux-typography-container{display:block;position:relative;margin:0;padding:0;width:100%;max-width:660px}.redux-main .redux-typography-container .redux-typography-slider{margin-top:11px;width:auto}.redux-main .redux-typography-container .clearfix{clear:both}.redux-main .redux-typography-container .clearfix::after{visibility:hidden;display:block;font-size:0;content:" ";clear:both;height:0}.redux-main .redux-typography-container input.wp-picker-default,.redux-main .redux-typography-container .redux-typography-color{-webkit-box-sizing:border-box;-o-box-sizing:border-box;box-sizing:border-box;height:24px;padding:0 14px !important;margin-top:0;margin-bottom:0;font-size:12px !important}.redux-main .redux-typography-container .select_wrapper{display:block;position:relative;float:left;clear:none;margin:0 10px 0 0;width:48% !important;min-width:210px !important;max-width:324px !important;height:57px;-webkit-box-sizing:border-box;-o-box-sizing:border-box;box-sizing:border-box}.redux-main .redux-typography-container .select_wrapper:nth-child(odd){margin-right:10px !important}.redux-main .redux-typography-container .select_wrapper:nth-child(even){margin-right:10px !important}.redux-main .redux-typography-container .select_wrapper.typography-family .select2-container{width:100%}.redux-main .redux-typography-container .select_wrapper .redux-typography{font-size:14px !important;display:block;float:left;height:28px !important;line-height:50px !important;padding:0 !important;width:100% !important;-webkit-box-sizing:border-box;-o-box-sizing:border-box;box-sizing:border-box}.redux-main .redux-typography-container .wp-picker-container{float:left;clear:left;margin-bottom:12px;padding:3px;border-radius:3px}.redux-main .redux-typography-container .input_wrapper{display:block;position:relative;margin:0 4px 0 5px;padding:0;width:23%;max-width:23%;min-width:70px;float:left;clear:none;height:57px;-webkit-box-sizing:border-box;-o-box-sizing:border-box;box-sizing:border-box;vertical-align:baseline}.redux-main .redux-typography-container .input_wrapper.margin-top,.redux-main .redux-typography-container .input_wrapper.margin-bottom{margin-left:0px}.redux-main .redux-typography-container .input_wrapper.font-size{margin-left:0}.redux-main .redux-typography-container .input_wrapper input.mini{-webkit-box-sizing:border-box;-o-box-sizing:border-box;box-sizing:border-box;width:78%;text-align:center;margin:0;height:28px;top:3px;padding:0 2px 0 5px;text-decoration:none;border-radius:4px}.redux-main .redux-typography-container .picker-wrapper{display:block;position:relative;margin:0;padding:0;width:100%;min-width:100%;clear:none;height:57px;-webkit-box-sizing:border-box;-o-box-sizing:border-box;box-sizing:border-box;vertical-align:baseline}.redux-main .redux-typography-container label{position:relative;font-size:12px !important;text-align:left;color:#999;width:100%;cursor:default}.redux-main .redux-typography-container .typography-preview{display:none;width:100%;border:1px dotted #d3d3d3;max-width:850px;padding:10px;font-size:10pt;height:auto;margin:5px 0 10px;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden}.redux-main .redux-typography-container .typography-color{border:0 none;margin:0}.redux-main .redux-typography-container ::-webkit-input-placeholder{line-height:19px}@media screen and (max-width: 540px){.redux-main .redux-main .redux-typography-container{max-width:230px;margin:0 auto}.redux-main .redux-main .redux-typography-container .select_wrapper{max-width:210px;min-width:210px;width:210px;margin-left:0 !important;margin-right:0 !important}.redux-main .redux-main .redux-typography-container .input_wrapper{max-width:101px;min-width:101px;width:101px;margin-left:0 !important;margin-right:5px !important}.redux-main .redux-main .redux-typography-container .input_wrapper input.mini{width:73%}.redux-main .redux-main .redux-typography-container .input-append .add-on{width:30%;padding:5px !important}.redux-main .redux-main .redux-main .wp-picker-container .wp-picker-input-wrap{margin-top:7px}}@media screen and (max-width: 360px){.redux-main .redux-typography-container .iris-picker .iris-square{margin-right:3%}}.wp-customizer .redux-typography-container .input_wrapper{width:40%;max-width:40%;min-width:20%}.wp-customizer .redux-typography-container .input_wrapper input.mini{width:70%}.wp-customizer .redux-typography-container .select_wrapper{width:100% !important}.redux-container-spacing select,.redux-container-spacing .select_wrapper{width:80px !important;float:left}.redux-container-spacing .field-spacing-input{margin-right:10px;margin-bottom:7px}@media screen and (max-width: 782px){.redux-container-spacing .field-spacing-input input{display:inline-block !important;width:70px !important}.redux-container-spacing .field-spacing-input .add-on{padding:7px 4px;font-size:16px;line-height:1.5}.redux-container-spacing .select_wrapper{margin-top:6px}}.redux-main .form-table-section-indented{width:95%;margin-left:5% !important}.redux-main .form-table-section tr:first-of-type th:first-of-type{padding:0px !important}.redux-main h3{margin-top:10px}.redux-main .form-table-section-indented>tbody>tr:first-child{display:none}.redux-main .form-table-section-indented>tbody>tr:nth-last-child(2){border-bottom:0}.wp-customizer .redux-container{overflow:visible}.wp-customizer .redux-container .redux-main input{margin:0 !important}.wp-customizer .redux-container .redux-main input.spinner-input{margin-right:30px !important;margin-left:30px !important;margin-top:0px !important}.wp-customizer .redux-container .redux-main .redux-container-editor .wp-editor-area{color:#000000}.wp-customizer .redux-section.open .redux-group-tab{display:block !important}.wp-customizer .redux-section p.customize-section-description{margin-top:22px;word-break:break-word}.wp-customizer .redux-section p.customize-section-description.legacy{margin-top:7px}.wp-customizer .control-section-themes .accordion-section-title{margin:0}.wp-customizer #customize-controls .description{display:block}.wp-customizer #customize-controls .customize-info{margin-bottom:0}.wp-customizer #customize-controls .redux-section .accordion-section-content{background:#fcfcfc}.wp-customizer .redux-section .accordion-section-title i,.wp-customizer .redux-field .accordion-field-title i,.wp-customizer .redux-panel .accordion-section-title i{margin-right:5px}.wp-customizer .accordion-section.redux-main{background:inherit;margin-left:inherit;border-left:inherit;-moz-box-shadow:inherit;-webkit-box-shadow:inherit;padding:inherit;box-shadow:inherit}.wp-customizer .redux_field_th{padding:13px 0px 0px 0px}.wp-customizer .redux-main .redux-field-container{padding:10px 0}.wp-customizer .redux-main .select_wrapper{float:none;width:100%;display:inline-block}.wp-customizer .redux-main .select2-container{margin-right:0 !important;margin-bottom:5px !important;width:100% !important}.wp-customizer .redux-main .select_wrapper:nth-child(odd){margin-right:0}.wp-customizer .redux-main .redux-option-image{max-width:42% !important;margin-right:3%}.wp-customizer .redux-main .customize-control{border-bottom:1px solid #ddd;padding-bottom:4px}.wp-customizer .redux-main .customize-control:last-child{border-bottom:0;padding-bottom:0}.wp-customizer .redux-main .upload{width:100% !important}.wp-customizer .redux-main h3{margin-top:inherit}.wp-customizer .redux-main .redux-container-raw{margin-top:22px;word-break:break-word;padding:0 !important}.wp-customizer .redux-main .redux-container-password input{width:100%}.wp-customizer .select2-drop,.wp-customizer .select2-container{z-index:999999}.wp-customizer .customize-control-redux-raw{list-style:none}.redux-container-import_export #redux-import-link-wrapper,.redux-container-import_export #redux-import-code-wrapper{display:none}.redux-container-import_export #redux-export-code,.redux-container-import_export #redux-export-link-value,.redux-container-import_export #redux-import-upload-file{display:none}.redux-container-import_export #redux-import-action span{color:#b94a48}.redux-container-import_export #redux-import-upload span{font-weight:bold}#redux-object-browser{overflow:auto;word-wrap:break-word;max-height:600px;max-width:100%}
2
 
3
  /*# sourceMappingURL=redux-fields.min.css.map */
1
+ .redux-container-ace_editor .ace-wrapper{position:static}.redux-container-ace_editor .ace_editor{height:200px;border-radius:3px}.redux-container-ace_editor .ace_gutter{z-index:1 !important}.redux-main .redux-container-background .redux-background-position,.redux-main .redux-container-background .redux-background-position select,.redux-main .redux-container-background .redux-background-attachment,.redux-main .redux-container-background .redux-background-attachment select,.redux-main .redux-container-background .redux-background-clip,.redux-main .redux-container-background .redux-background-clip select,.redux-main .redux-container-background .redux-background-origin,.redux-main .redux-container-background .redux-background-origin select,.redux-main .redux-container-background .redux-background-size,.redux-main .redux-container-background .redux-background-size select,.redux-main .redux-container-background .redux-background-repeat,.redux-main .redux-container-background .redux-background-repeat select{width:200px !important;margin-right:10px;margin-bottom:7px}.redux-main .redux-container-background .background-preview{display:block;width:100%;margin:5px 0 10px;border:1px dotted #d3d3d3}.redux-main .redux-container-background .select2-container{margin-right:10px;margin-bottom:10px}.redux-main .redux-container-background .wp-picker-container{margin-bottom:10px}.redux-main .redux-container-background .upload{width:100%;margin-bottom:8px}.redux-main .redux-container-select li.ui-state-highlight{height:20px;margin-top:2px;margin-left:5px;width:64px;margin-bottom:0}.wp-customizer .redux-container-background .redux-background-position,.wp-customizer .redux-container-background .redux-background-position select,.wp-customizer .redux-container-background .redux-background-attachment,.wp-customizer .redux-container-background .redux-background-attachment select,.wp-customizer .redux-container-background .redux-background-clip,.wp-customizer .redux-container-background .redux-background-clip select,.wp-customizer .redux-container-background .redux-background-origin,.wp-customizer .redux-container-background .redux-background-origin select,.wp-customizer .redux-container-background .redux-background-size,.wp-customizer .redux-container-background .redux-background-size select,.wp-customizer .redux-container-background .redux-background-repeat,.wp-customizer .redux-container-background .redux-background-repeat select{width:100% !important}.redux-container-border .select2-container{float:left;display:block;margin-right:10px}.redux-container-border .select_wrapper{float:left;width:inherit}.redux-container-border .select_wrapper select{width:80px;float:left}.redux-container-border .field-border-input{margin-right:10px;margin-bottom:7px}@media screen and (max-width: 782px){.redux-container-border .field-border-input input{display:inline-block !important;width:100px !important}.redux-container-border .field-border-input .add-on{padding:7px 4px;font-size:16px;line-height:1.5}.redux-container-border .select_wrapper{margin-top:6px}}.redux-main .redux-container-box_shadow .box-shadow-inset{margin:0 auto}.redux-main .redux-container-box_shadow .box-shadow-inset #shadow-result{padding:20px;margin-bottom:20px;margin-top:20px;min-height:180px;border:0px solid #ddd;background:#f1f1f1;-webkit-transition:all 0.2s ease;transition:all 0.2s ease}.redux-main .redux-container-box_shadow .box-shadow-inset .row-content:after,.redux-main .redux-container-box_shadow .box-shadow-inset .row:after{clear:both;content:" ";display:block;height:0;visibility:hidden}.redux-main .redux-container-box_shadow .box-shadow-inset .row .col-2{width:50%;float:left;-webkit-box-sizing:border-box;box-sizing:border-box}.redux-main .redux-container-box_shadow .box-shadow-inset .row .col-2.disabled label strong{color:#cccccc}.redux-main .redux-container-box_shadow .box-shadow-inset .row .col-2 label{color:#999999}.redux-main .redux-container-box_shadow .box-shadow-inset .row .col-2 .wp-picker-container.disabled{pointer-events:none;opacity:0.4;z-index:200;background:0;padding:0 !important}.redux-main .redux-container-box_shadow .box-shadow-inset .row .col-2 .wp-picker-container.disabled button{background-color:#888}.redux-main .redux-container-box_shadow .box-shadow-inset .row .col-2 .wp-picker-container.disabled a{z-index:-1}.redux-main .redux-container-box_shadow .box-shadow-inset .row .col-2 ul li{padding-bottom:10px}.redux-main .redux-container-box_shadow .box-shadow-inset .row .col-2:first-child{padding-right:20px}.redux-main .redux-container-box_shadow .box-shadow-inset .row .col-2:last-child{padding-left:20px}.redux-container-checkbox label{vertical-align:top;width:100%}.redux-container-checkbox label .field-desc{margin-top:0;float:left;width:93%;clear:none}.redux-container-color_gradient .redux-gradient-preview{height:150px;margin-top:10px;border-radius:4px}.redux-container-color_gradient .colorGradient,.redux-container-color_gradient .redux-gradient-type{display:inline-block;margin-right:20px}.redux-container-color_gradient .colorGradient strong,.redux-container-color_gradient .redux-gradient-type strong{display:table;margin-bottom:5px;margin-left:3px;font-size:12px;color:#999}@media screen and (max-width: 660px){.redux-container-color_gradient .colorGradient{display:block;text-align:center !important}}.redux-main .redux-container-color_palette label{position:relative;display:inline-block;padding:0;margin:0}.redux-main .redux-container-color_palette .colors-wrapper{max-height:300px;overflow-y:auto;padding:10px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}.redux-main .redux-container-color_palette .colors-wrapper .color-palette-color{color:transparent;display:block;width:100%;height:100%;overflow:hidden;border:1px solid rgba(0,0,0,0.2)}.redux-main .redux-container-color_palette .colors-wrapper.round label{padding:3px}.redux-main .redux-container-color_palette .colors-wrapper.round .color-palette-color{border-radius:50%}.redux-main .redux-container-color_palette .colors-wrapper.box-shadow .color-palette-color{-webkit-box-shadow:inset 3px 3px 13px 2px rgba(0,0,0,0.22);box-shadow:inset 3px 3px 13px 2px rgba(0,0,0,0.22)}.redux-main .redux-container-color_palette .colors-wrapper input{display:none}.redux-main .redux-container-color_palette .colors-wrapper input:checked+label .color-palette-color{border:0;width:130%;height:130%;position:relative;left:-15%;top:-15%;z-index:99;-webkit-box-shadow:1px 1px 6px 1px #333333;box-shadow:1px 1px 6px 1px #333333;border:1px solid rgba(0,0,0,0.3)}.redux-main .redux-container-color_palette .colors-wrapper.with-margin label{margin:3px !important}.sp-container{color:#555;border-color:#ccc;background:#f7f7f7;-webkit-box-shadow:inset 0 1px 0 #fff,0 1px 0 rgba(0,0,0,0.08);box-shadow:inset 0 1px 0 #fff,0 1px 0 rgba(0,0,0,0.08);vertical-align:top}.sp-replacer{color:#555;border-color:#ccc;background:#f7f7f7;-webkit-box-shadow:inset 0 1px 0 #fff,0 1px 0 rgba(0,0,0,0.08);box-shadow:inset 0 1px 0 #fff,0 1px 0 rgba(0,0,0,0.08);vertical-align:top}.sp-replacer:focus,.sp-replacer:hover,.sp-replacer.focus,.sp-replacer.hover{background:#fafafa;border-color:#999;color:#222}.sp-replacer:focus,.sp-replacer.focus{-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,0.8);box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,0.8)}.sp-replacer.active:focus{-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,0.5),0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,0.8);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,0.5),0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,0.8)}.sp-replacer.active,.sp-replacer.active:hover,.sp-replacer:active{background:#eee;border-color:#999;color:#333;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,0.5);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,0.5)}#ui-datepicker-div{z-index:15 !important}.ui-datepicker-header{background-color:#00abef}.redux-dimensions-container select,.redux-dimensions-container .select_wrapper{width:80px !important;float:left}.redux-dimensions-container .field-dimensions-input{margin-right:10px;margin-bottom:7px}@media screen and (max-width: 782px){.redux-dimensions-container .field-dimensions-input input{display:inline-block !important;width:100px !important}.redux-dimensions-container .field-dimensions-input .add-on{padding:7px 4px;font-size:16px;line-height:1.5}.redux-dimensions-container .select_wrapper{margin-top:6px}}.redux-main .divide{height:20px;line-height:20px;float:none;border-color:#e7e7e7;display:block;width:100%;height:35px !important;line-height:35px !important;position:relative;margin:15px 0 10px 0}.redux-main .divide .inner{width:42% !important;left:40% !important;margin-left:-6%;background-color:#fcfcfc;border-color:#e7e7e7;position:absolute;height:1px;top:50%;width:100%;margin-top:-1px;border-top-width:1px;border-top-style:solid}.redux-main .divide .inner span{background-color:#fcfcfc;border-color:#e7e7e7;height:5px;width:5px;border-width:2px;border-style:solid;display:block;position:absolute;left:50%;margin-left:-5px;margin-top:-5px}.wp-customizer .redux-container-divide .divide .inner{width:82% !important;left:18% !important;margin-left:-8%}.redux-container-editor .mceLayout td{border-width:1px;margin:0;padding:1px}.redux-container-editor input,.redux-container-editor textarea{margin:inherit}.redux-container-editor textarea{border-style:none;border:0;border-width:0}.redux-container-editor .wp-editor-container{border-radius:3px}.redux-container-editor .wp-editor-container textarea{border-radius:0;border-style:inherit}.redux-container-editor .quicktags-toolbar input{margin:2px 1px 4px;display:inline-block;min-width:26px;padding:2px 4px;font:12px/18px Arial, Helvetica, sans-serif normal;color:#464646;border:1px solid #c3c3c3;border-radius:3px;background:#eee;background-image:-webkit-gradient(linear, left bottom, left top, from(#e3e3e3), to(#fff));background-image:-webkit-linear-gradient(bottom, #e3e3e3, #fff);background-image:linear-gradient(to top, #e3e3e3, #fff)}.redux-container-image_select .redux-table-container{display:table;table-layout:fixed;width:100%}.redux-container-image_select .redux-image-select{margin:0 !important}.redux-container-image_select .redux-image-select .tiles{display:block;background-color:#fff;background-repeat:repeat;width:40px;height:40px}.redux-container-image_select .redux-image-select img,.redux-container-image_select .redux-image-select .tiles{border-color:#d9d9d9}.redux-container-image_select .redux-image-select li:last-child{margin-bottom:0}.redux-container-image_select .redux-image-select input[type="radio"]{display:none}.redux-container-image_select .redux-image-select-presets img{width:100%}.redux-container-image_select ul.redux-image-select li{margin:0 10px 3px 10px;display:inline-block;padding:2px 2px;padding-left:0}.redux-container-image_select .redux-image-select-selected{background-color:#f9f9f9}.redux-container-image_select .redux-image-select img,.redux-container-image_select .redux-image-select-selected img,.redux-container-image_select .redux-image-select .tiles,.redux-container-image_select .redux-image-select-selected .tiles{border-width:4px;border-style:solid}.redux-container-image_select .redux-image-select-selected .tiles,.redux-container-image_select .redux-image-select-selected .tiles{border-color:#7a7a7a}.redux-info-field{min-height:20px;padding:8px 19px;margin:10px 0;border:1px solid;border-radius:4px;border:1px solid;position:relative}.redux-info-field h1,.redux-info-field h2,.redux-info-field h3,.redux-info-field h4,.redux-info-field h5,.redux-info-field h6{border-bottom:0 !important}.redux-info-field h3{color:#777}.redux-info-field .redux-info-icon{display:inline-block;margin-right:15px}.redux-info-field .redux-info-icon i{font-size:2em}.redux-info-field .redux-info-desc{display:inline-block;vertical-align:top}.redux-info-field.redux-normal{background-color:#eee;border-color:#ccc;color:#666}.redux-info-field.redux-normal i{color:#c5c5c5}.redux-info-field.redux-warning{background-color:#fbeba4;border-color:#d7c281;color:#958234}.redux-info-field.redux-warning i{color:#dcca81}.redux-info-field.redux-success{background-color:#c4ee91;border-color:#71af5d;color:#4d7615}.redux-info-field.redux-success i{color:#a0ca6c}.redux-info-field.redux-critical{background-color:#fba1a3;border-color:#b84f5b;color:#981225}.redux-info-field.redux-critical i{color:#dd767d}.redux-info-field.redux-info{background-color:#d3e4f4;border-color:#a9b6c2;color:#5c80a1}.redux-info-field.redux-info i{color:#afc6da}.redux-notice-field{margin:15px 0 0;background-color:#fff;border:0;border-left:4px solid #f3f3f3;-webkit-box-shadow:0 1px 1px 0 rgba(0,0,0,0.1);box-shadow:0 1px 1px 0 rgba(0,0,0,0.1);padding:1px 12px}.redux-notice-field h1,.redux-notice-field h2,.redux-notice-field h3,.redux-notice-field h4,.redux-notice-field h5,.redux-notice-field h6{border-bottom:0 !important}.redux-notice-field p{margin:0.5em 0;padding:2px}.redux-notice-field .redux-info-icon{display:inline-block;margin-right:15px}.redux-notice-field .redux-info-icon i{font-size:2em}.redux-notice-field .redux-info-desc{display:inline-block;vertical-align:top}.redux-notice-field.redux-info{border-left:4px solid #0099d5}.redux-notice-field.redux-success{border-left:4px solid #7ad03a}.redux-notice-field.redux-warning{border-left:4px solid #fbeba4}.redux-notice-field.redux-critical{border-left:4px solid #dd3d36}.redux-main .redux-field-container.redux-container-info{padding:0}.wp-customizer .hasIcon.redux-notice-field .redux-info-desc,.wp-customizer .hasIcon.redux-info-field .redux-info-desc{display:block;margin-left:43px}.wp-customizer .hasIcon.redux-notice-field .redux-info-icon,.wp-customizer .hasIcon.redux-info-field .redux-info-icon{float:left}.wp-customizer .redux-main .customize-control.customize-control-redux-info{border-bottom:0}.redux-container-link_color .linkColor{display:inline-block;padding-right:10px;padding-bottom:7px}.redux-container-link_color .linkColor strong{display:table;margin-bottom:5px;margin-left:3px;font-size:12px;font-weight:normal;color:#999}.redux-main .redux-media-slider{width:40%;display:inline-block;margin-left:30px}.redux-main .redux-media-filter-container{padding-top:20px}.redux-main .redux-media-filter-container .container-label{margin-bottom:20px;padding-bottom:1px;border-bottom:1px solid #e7e7e7;font-weight:600;font-size:12px;color:#999}.redux-main .redux-media-filter-container .media-filter{display:inline-block;width:47%;margin-bottom:5px}.redux-main .redux-media-filter-container .media-filter label{display:inline-block;width:130px;color:#999}.redux-main .redux-media-filter-container .media-filter label.disabled .filter-value{color:#ccc}.redux-container-palette label{border:3px solid transparent;border-color:transparent !important;border-radius:0;width:100% !important;display:block}.redux-container-palette label.ui-button.ui-widget{width:95%;background:none;padding:0;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.redux-container-palette label.ui-button.ui-widget .ui-checkboxradio-icon,.redux-container-palette label.ui-button.ui-widget .ui-checkboxradio-icon-space{display:none}.redux-container-palette label.ui-button.ui-widget span{padding:10px;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;font-size:0;line-height:10px;color:rgba(0,0,0,0);-webkit-transition:all 200ms ease-in-out;transition:all 200ms ease-in-out;text-shadow:0}.redux-container-palette label.ui-button.ui-widget span:hover{-webkit-box-flex:3;-webkit-flex-grow:3;-ms-flex-positive:3;flex-grow:3;font-weight:bold;min-width:60px;font-size:12px;line-height:10px;color:#333;text-shadow:0 0 8px #fff, 0 0 8px #fff}.redux-container-palette label.ui-state-active{border:3px solid #333 !important}.wp-customizer .redux-main .redux-container-palette label{margin-bottom:3px}.redux-container-multi_text ul.redux-multi-text{margin:0;padding:0}.redux-container-multi_text .redux-multi-text-add{clear:both;margin:5px 0}.redux-container-multi_text a.redux-multi-text-remove.deletion{color:#f00;padding:2px 4px;margin-left:5px}.redux-container-multi_text a.redux-multi-text-remove.deletion:hover{background:#ff0;color:#fff;text-decoration:none}@media screen and (max-width: 782px){.redux-container-multi_text input{clear:both}.redux-container-multi_text .redux-multi-text-remove{margin:0;float:right}}.wp-customizer .redux-container-multi_text .button{float:right}.wp-customizer .redux-container-multi_text .redux-multi-text-remove{float:right;margin-bottom:5px}.wp-customizer .redux-container-multi_text ul.redux-multi-text input{width:100% !important}.redux-main .form-table-section-indented{width:95%;margin-left:5% !important}.redux-main .form-table-section tr:first-of-type th:first-of-type{padding:0px !important}.redux-main h3{margin-top:10px}.redux-main .form-table-section-indented>tbody>tr:first-child{display:none}.redux-main .form-table-section-indented>tbody>tr:nth-last-child(2){border-bottom:0}.redux-container-select li.ui-state-highlight{height:20px;margin-top:2px;margin-left:5px;width:64px;margin-bottom:0}.select2-search__field{width:none !important}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove,.select2-container--classic .select2-selection--single .select2-selection__clear{font-size:1.2em}.redux-container-select_image{margin-top:2px;margin-left:5px;width:100%;margin-bottom:0}.redux-preview-image{max-height:250px;max-width:250px;padding:5px;margin-top:10px;border:1px solid #e3e3e3;background:#f7f7f7;border-radius:3px}.redux-container-slider .redux-slider-container{margin-left:25px;margin-right:25px;width:200px;display:inline-block;vertical-align:middle}.redux-container-slider .redux-slider-input,.redux-container-slider .redux-slider-select-one,.redux-container-slider .redux-slider-select-two{width:100px !important;text-align:center}.redux-container-slider .redux-slider-label{position:absolute;margin-left:-5px}.redux-container-slider .redux-slider-label-one{position:absolute;margin-left:-22px}.redux-container-slider .redux-slider-label-two{position:absolute;margin-top:-21px;margin-left:245px}@media screen and (max-width: 782px){.redux-container-slider input{display:inline-block !important}}@media screen and (max-width: 570px){.redux-container-slider{text-align:center}.redux-container-slider input,.redux-container-slider select,.redux-container-slider .redux-slider-label,.redux-container-slider .select2-container{display:block !important;position:inherit;margin:10px auto}.redux-container-slider .redux-slider-container{margin-top:3px;width:80%}}.wp-customizer .redux-container-slider .redux-slider-label{float:left;position:inherit;width:25%;text-align:center;margin-left:0}.wp-customizer .redux-container-slider .redux-slider-input,.wp-customizer .redux-container-slider .redux-slider-select-one,.wp-customizer .redux-container-slider .redux-slider-select-two{width:25% !important}.wp-customizer .redux-container-slider .redux-slider-container{width:70%;margin-right:0;margin-left:5%}.redux-container-slides .redux-slides-list .select2-container{margin-bottom:10px;width:100%}.redux-container-slides .ui-accordion-header{margin-bottom:0}.redux-container-slides .full-text,.redux-container-slides .large-text{width:100%}.redux-container-slides .redux-slides-accordion-group{border:1px solid #dfdfdf !important;border-radius:3px !important;margin-top:0px !important;margin-bottom:10px;background:#f9f9f9;padding:5px}.redux-container-slides .redux-slides-accordion-group h3{border:1px solid #dfdfdf;cursor:move !important;font-weight:bold;padding:0 10px !important;height:40px;line-height:40px !important;background-color:#f1f1f1;background-image:-webkit-gradient(linear, left top, left bottom, from(#f9f9f9), to(#ececec));background-image:-webkit-linear-gradient(top, #f9f9f9, #ececec);background-image:linear-gradient(to bottom, #f9f9f9, #ececec);overflow:hidden;border-radius:3px;-webkit-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff;text-align:center}.redux-container-slides #redux-slides-accordion .redux-slides-image{height:250px;padding:5px;margin-top:10px;margin-bottom:10px;border:1px solid #e3e3e3;background:#f7f7f7;border-radius:3px}.redux-container-slides .redux-slides-add{float:right;margin-right:10%;display:block;margin-bottom:10px}.redux-container-slides .redux-slides-remove{color:#ef521d !important;float:right;margin-top:5px}.redux-container-slides .redux-slides-header{font-weight:bold}.redux-container-slides .redux_slides_add_remove{margin-bottom:10px}.redux-container-slides input{width:100% !important}.wp-customizer .redux-container-slides .ui-accordion .ui-accordion-content{padding:10px}.redux-container-sortable i.el,.redux-container-sortable i.dashicons-menu{cursor:move;padding-top:5px}.redux-container-sortable label{margin-right:10px}.redux-container-sortable label.bugger{margin-bottom:0px !important;font-size:12px !important;color:#999}.redux-container-sortable input{margin-right:10px}.redux-container-sortable .checkbox-container{width:100%}.redux-container-sortable .checkbox-container label{margin-bottom:2px !important;cursor:inherit}.redux-container-sortable .checkbox-container .drag{float:right;margin-left:10px}.redux-container-sortable ul.checkbox li{padding:5px 10px;border:1px solid #333;background:#fff;margin-bottom:5px !important}.redux-container-sortable ul.checkbox li .dashicons.visibility{padding-top:4px;margin-right:10px;cursor:pointer}.redux-container-sortable ul.checkbox li.invisible{color:#aaa;border:1px dashed #aaa}.redux-container-sortable ul.checkbox li.invisible .dashicons.visibility{color:#aaa}.redux-container-sortable ul.labeled li{line-height:1.4em !important}.redux-container-sortable li{line-height:30px !important}.redux-container-sortable li.ui-state-highlight{height:30px;width:364px;margin-bottom:13px}.redux-container-sortable li.placeholder{height:30px;margin:10px 0}.wp-customizer .redux-sortable input[type="text"]{width:92%}.wp-customizer .redux-sortable i.el{margin-left:5px}.wp-customizer .redux-container-sortable .checkbox-container{width:inherit}.wp-customizer .redux-container-sortable .ui-draggable-handle{margin-left:3%}.redux-container-sorter{margin-right:-20px}.redux-container-sorter ul{background:#f9f9f9;border:1px solid #e3e3e3;min-height:40px;padding:10px 10px 0;width:145px;float:left;margin:0 15px 0 0}.redux-container-sorter ul.filled{opacity:0.7;filter:alpha(opacity=70);background:#efecec}.redux-container-sorter ul li{border:1px solid #dfdfdf;cursor:move;font-weight:bold;margin-bottom:10px !important;padding:0 10px;height:40px;line-height:40px !important;background-color:#f1f1f1;background-image:-webkit-gradient(linear, left top, left bottom, from(#f9f9f9), to(#ececec));background-image:-webkit-linear-gradient(top, #f9f9f9, #ececec);background-image:linear-gradient(to bottom, #f9f9f9, #ececec);overflow:hidden;border-radius:3px;-webkit-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff;text-align:center}.redux-container-sorter ul li h3{margin:0 0 10px;text-align:center;color:#777;text-transform:capitalize;word-wrap:break-word}.redux-container-sorter ul li.placeholder{height:40px}.wp-customizer .redux-container-sorter ul{width:85%;margin:0 0 5px 0}.redux-container-spinner .spinner-wrpr{position:relative;display:block;height:30px;overflow:hidden}.redux-container-spinner .spinner-wrpr .spinner-input{position:relative !important;z-index:1;width:75px !important;height:30px !important;background:#eee !important;border:1px solid #bfbfbf !important;border-right:0 !important;border-left:0 !important;border-radius:0 !important}.redux-container-spinner .ui-spinner{position:static;display:inline}.redux-container-spinner .ui-spinner-buttons{position:absolute;padding:0}.redux-container-spinner .ui-widget .ui-spinner-button{color:#fff;position:absolute;top:0;padding:0 0 30px;overflow:hidden;cursor:pointer;background:-webkit-gradient(linear, left top, left bottom, from(#fff), to(#f3f3f3));background:-webkit-linear-gradient(#fff, #f3f3f3);background:linear-gradient(#fff, #f3f3f3);background-color:#fff;border:none;-webkit-box-shadow:none;box-shadow:none}.redux-container-spinner .ui-spinner-button:hover,.redux-container-spinner .ui-state-hover{background:-webkit-gradient(linear, left top, left bottom, from(#f3f3f3), to(#fff));background:-webkit-linear-gradient(#f3f3f3, #fff);background:linear-gradient(#f3f3f3, #fff);background-color:#f3f3f3}.redux-container-spinner .ui-corner-tr,.redux-container-spinner .ui-spinner-button .ui-icon-triangle-1-n{border-radius:0 3px 3px 0}.redux-container-spinner .ui-corner-br,.redux-container-spinner .ui-spinner-button .ui-icon-triangle-1-s{border-radius:3px 0 0 3px}.redux-container-spinner .ui-spinner-button .ui-icon{top:0;display:block;width:28px;height:28px;margin:0;border:1px solid #b7b7b7;background-image:initial;text-indent:0;text-align:center;font-size:18px;line-height:26px}.dp-numberPicker,.dp-numberPicker-add,.dp-numberPicker-sub,.dp-numberPicker-input{display:inline-block;-webkit-box-sizing:border-box;box-sizing:border-box;-moz-box-sizing:border-box;text-align:center;vertical-align:top;height:30px}.dp-numberPicker{border-radius:3px}.redux-container .redux-container-spinner .dp-numberPicker-add,.redux-container .redux-container-spinner .dp-numberPicker-sub{width:30px;font-size:21px;cursor:pointer;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none;background-color:#33b5e5;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);height:29px !important}.redux-container .redux-container-spinner .dp-numberPicker-add.disabled,.redux-container .redux-container-spinner .dp-numberPicker-sub.disabled{background-color:#2c6a81}.dp-numberPicker-add{border-top-right-radius:3px;border-bottom-right-radius:3px}.dp-numberPicker-sub{border-top-left-radius:3px;border-bottom-left-radius:3px}.dp-numberPicker-input{width:70px;background-color:#eee;border:0;margin:0 !important;-webkit-box-shadow:inset 0px 1px 1px rgba(255,255,255,0.5),inset 0px -1px 1px rgba(0,0,0,0.5);box-shadow:inset 0px 1px 1px rgba(255,255,255,0.5),inset 0px -1px 1px rgba(0,0,0,0.5)}.dp-numberPicker-input:disabled{background-color:#eee}.redux-container-spacing select,.redux-container-spacing .select_wrapper{width:80px !important;float:left}.redux-container-spacing .field-spacing-input{margin-right:10px;margin-bottom:7px}@media screen and (max-width: 782px){.redux-container-spacing .field-spacing-input input{display:inline-block !important;width:70px !important}.redux-container-spacing .field-spacing-input .add-on{padding:7px 4px;font-size:16px;line-height:1.5}.redux-container-spacing .select_wrapper{margin-top:6px}}.redux-container-switch .switch-options{min-height:30px;margin-right:10px}.redux-container-switch .switch-options label{cursor:pointer}.redux-container-switch .switch-options input{display:none}.redux-container-switch .cb-enable,.redux-container-switch .cb-disable{padding:0 10px;border-width:1px;border-style:solid;-webkit-appearance:none;white-space:nowrap;-webkit-box-sizing:border-box;box-sizing:border-box}.redux-container-switch .cb-enable span,.redux-container-switch .cb-disable span{line-height:30px;display:block;font-weight:700;-webkit-user-select:none;-moz-user-select:none;-o-user-select:none;-ms-user-select:none;user-select:none}.redux-container-switch .cb-enable,.redux-container-switch .cb-disable,.redux-container-switch .cb-enable span,.redux-container-switch .cb-disable span{display:block;float:left}.redux-container-switch .cb-enable{border-right:0;border-radius:3px 0px 0px 3px;-moz-border-radius:3px 0px 0px 3px;-webkit-border-radius:3px 0px 0px 3px}.redux-container-switch .cb-enable.selected{color:#fff}.redux-container-switch .cb-disable{border-left:0;border-radius:0px 3px 3px 0px;-moz-border-radius:0px 3px 3px 0px;-webkit-border-radius:0px 3px 3px 0px}.redux-container-switch .cb-disable.selected{color:#fff}.redux-container-text label{display:block;position:relative;font-size:12px !important;text-align:left;color:#999;margin:4px 0 2px 0 !important;cursor:default;top:5px;width:100px}.redux-container-text input{clear:left}.redux-container-text .input_wrapper{display:block;position:relative;padding:0;width:23%;max-width:23%;min-width:70px;float:left;clear:left;height:57px;-webkit-box-sizing:border-box;-o-box-sizing:border-box;box-sizing:border-box;vertical-align:baseline}.wp-customizer .redux-container-text .input_wrapper{width:100%;max-width:100%;height:auto}.redux-main .redux-typography-container{display:block;position:relative;margin:0;padding:0;width:100%;max-width:660px}.redux-main .redux-typography-container .redux-typography-slider{margin-top:11px;width:auto}.redux-main .redux-typography-container .clearfix{clear:both}.redux-main .redux-typography-container .clearfix::after{visibility:hidden;display:block;font-size:0;content:" ";clear:both;height:0}.redux-main .redux-typography-container input.wp-picker-default,.redux-main .redux-typography-container .redux-typography-color{-webkit-box-sizing:border-box;-o-box-sizing:border-box;box-sizing:border-box;height:24px;padding:0 14px !important;margin-top:0;margin-bottom:0;font-size:12px !important}.redux-main .redux-typography-container .select_wrapper{display:block;position:relative;float:left;clear:none;margin:0 10px 0 0;width:48% !important;min-width:210px !important;max-width:324px !important;height:57px;-webkit-box-sizing:border-box;-o-box-sizing:border-box;box-sizing:border-box}.redux-main .redux-typography-container .select_wrapper:nth-child(odd){margin-right:10px !important}.redux-main .redux-typography-container .select_wrapper:nth-child(even){margin-right:10px !important}.redux-main .redux-typography-container .select_wrapper.typography-family .select2-container{width:100%}.redux-main .redux-typography-container .select_wrapper .redux-typography{font-size:14px !important;display:block;float:left;height:28px !important;line-height:50px !important;padding:0 !important;width:100% !important;-webkit-box-sizing:border-box;-o-box-sizing:border-box;box-sizing:border-box}.redux-main .redux-typography-container .wp-picker-container{float:left;clear:left;margin-bottom:12px;padding:3px;border-radius:3px}.redux-main .redux-typography-container .input_wrapper{display:block;position:relative;margin:0 4px 0 5px;padding:0;width:23%;max-width:23%;min-width:70px;float:left;clear:none;height:57px;-webkit-box-sizing:border-box;-o-box-sizing:border-box;box-sizing:border-box;vertical-align:baseline}.redux-main .redux-typography-container .input_wrapper.margin-top,.redux-main .redux-typography-container .input_wrapper.margin-bottom{margin-left:0px}.redux-main .redux-typography-container .input_wrapper.font-size{margin-left:0}.redux-main .redux-typography-container .input_wrapper input.mini{-webkit-box-sizing:border-box;-o-box-sizing:border-box;box-sizing:border-box;width:78%;text-align:center;margin:0;height:28px;top:3px;padding:0 2px 0 5px;text-decoration:none;border-radius:4px}.redux-main .redux-typography-container .picker-wrapper{display:block;position:relative;margin:0;padding:0;width:100%;min-width:100%;clear:none;height:57px;-webkit-box-sizing:border-box;-o-box-sizing:border-box;box-sizing:border-box;vertical-align:baseline}.redux-main .redux-typography-container label{position:relative;font-size:12px !important;text-align:left;color:#999;width:100%;cursor:default}.redux-main .redux-typography-container .typography-preview{display:none;width:100%;border:1px dotted #d3d3d3;max-width:850px;padding:10px;font-size:10pt;height:auto;margin:5px 0 10px;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden}.redux-main .redux-typography-container .typography-color{border:0 none;margin:0}.redux-main .redux-typography-container ::-webkit-input-placeholder{line-height:19px}@media screen and (max-width: 540px){.redux-main .redux-main .redux-typography-container{max-width:230px;margin:0 auto}.redux-main .redux-main .redux-typography-container .select_wrapper{max-width:210px;min-width:210px;width:210px;margin-left:0 !important;margin-right:0 !important}.redux-main .redux-main .redux-typography-container .input_wrapper{max-width:101px;min-width:101px;width:101px;margin-left:0 !important;margin-right:5px !important}.redux-main .redux-main .redux-typography-container .input_wrapper input.mini{width:73%}.redux-main .redux-main .redux-typography-container .input-append .add-on{width:30%;padding:5px !important}.redux-main .redux-main .redux-main .wp-picker-container .wp-picker-input-wrap{margin-top:7px}}@media screen and (max-width: 360px){.redux-main .redux-typography-container .iris-picker .iris-square{margin-right:3%}}.wp-customizer .redux-typography-container .input_wrapper{width:40%;max-width:40%;min-width:20%}.wp-customizer .redux-typography-container .input_wrapper input.mini{width:70%}.wp-customizer .redux-typography-container .select_wrapper{width:100% !important}.wp-customizer .redux-container{overflow:visible}.wp-customizer .redux-container .redux-main input{margin:0 !important}.wp-customizer .redux-container .redux-main input.spinner-input{margin-right:30px !important;margin-left:30px !important;margin-top:0px !important}.wp-customizer .redux-container .redux-main .redux-container-editor .wp-editor-area{color:#000000}.wp-customizer .redux-section.open .redux-group-tab{display:block !important}.wp-customizer .redux-section p.customize-section-description{margin-top:22px;word-break:break-word}.wp-customizer .redux-section p.customize-section-description.legacy{margin-top:7px}.wp-customizer .control-section-themes .accordion-section-title{margin:0}.wp-customizer #customize-controls .description{display:block}.wp-customizer #customize-controls .customize-info{margin-bottom:0}.wp-customizer #customize-controls .redux-section .accordion-section-content{background:#fcfcfc}.wp-customizer .redux-section .accordion-section-title i,.wp-customizer .redux-field .accordion-field-title i,.wp-customizer .redux-panel .accordion-section-title i{margin-right:5px}.wp-customizer .accordion-section.redux-main{background:inherit;margin-left:inherit;border-left:inherit;-moz-box-shadow:inherit;-webkit-box-shadow:inherit;padding:inherit;box-shadow:inherit}.wp-customizer .redux_field_th{padding:13px 0px 0px 0px}.wp-customizer .redux-main .redux-field-container{padding:10px 0}.wp-customizer .redux-main .select_wrapper{float:none;width:100%;display:inline-block}.wp-customizer .redux-main .select2-container{margin-right:0 !important;margin-bottom:5px !important;width:100% !important}.wp-customizer .redux-main .select_wrapper:nth-child(odd){margin-right:0}.wp-customizer .redux-main .redux-option-image{max-width:42% !important;margin-right:3%}.wp-customizer .redux-main .customize-control{border-bottom:1px solid #ddd;padding-bottom:4px}.wp-customizer .redux-main .customize-control:last-child{border-bottom:0;padding-bottom:0}.wp-customizer .redux-main .upload{width:100% !important}.wp-customizer .redux-main h3{margin-top:inherit}.wp-customizer .redux-main .redux-container-raw{margin-top:22px;word-break:break-word;padding:0 !important}.wp-customizer .redux-main .redux-container-password input{width:100%}.wp-customizer .select2-drop,.wp-customizer .select2-container{z-index:999999}.wp-customizer .customize-control-redux-raw{list-style:none}.redux-container-import_export #redux-import-link-wrapper,.redux-container-import_export #redux-import-code-wrapper{display:none}.redux-container-import_export #redux-export-code,.redux-container-import_export #redux-export-link-value,.redux-container-import_export #redux-import-upload-file{display:none}.redux-container-import_export #redux-import-action span{color:#b94a48}.redux-container-import_export #redux-import-upload span{font-weight:bold}#redux-object-browser{overflow:auto;word-wrap:break-word;max-height:600px;max-width:100%}
2
 
3
  /*# sourceMappingURL=redux-fields.min.css.map */
redux-core/assets/css/redux-fields.min.css.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["redux-fields.min.css"],"names":[],"mappings":"AAAA,yCAAyC,eAAe,CAAC,wCAAwC,YAAY,CAAkD,iBAAiB,CAAC,wCAAwC,oBAAoB,CAAC,0zBAA0zB,sBAAsB,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,4DAA4D,aAAa,CAAC,UAAU,CAAC,iBAAiB,CAAC,yBAAyB,CAAC,2DAA2D,iBAAiB,CAAC,kBAAkB,CAAC,6DAA6D,kBAAkB,CAAC,gDAAgD,UAAU,CAAC,iBAAiB,CAAC,0DAA0D,WAAW,CAAC,cAAc,CAAC,eAAe,CAAC,UAAU,CAAC,eAAe,CAAC,81BAA81B,qBAAqB,CAAC,0DAA0D,aAAa,CAAC,yEAAyE,YAAY,CAAC,kBAAkB,CAAC,eAAe,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,kBAAkB,CAAC,gCAAuB,CAAvB,wBAAwB,CAAC,kJAAkJ,UAAU,CAAC,WAAW,CAAC,aAAa,CAAC,QAAQ,CAAC,iBAAiB,CAAC,sEAAsE,SAAS,CAAC,UAAU,CAA4B,6BAA6B,CAAC,qBAAqB,CAAC,4FAA4F,aAAa,CAAC,4EAA4E,aAAa,CAAC,oGAAoG,mBAAmB,CAAC,WAAW,CAAC,WAAW,CAAC,YAAY,CAAC,oBAAoB,CAAC,2GAA2G,qBAAqB,CAAC,sGAAsG,UAAU,CAAC,4EAA4E,mBAAmB,CAAC,kFAAkF,kBAAkB,CAAC,iFAAiF,iBAAiB,CAAC,2CAA2C,UAAU,CAAC,aAAa,CAAC,iBAAiB,CAAC,wCAAwC,UAAU,CAAC,aAAa,CAAC,+CAA+C,UAAU,CAAC,UAAU,CAAC,4CAA4C,iBAAiB,CAAC,iBAAiB,CAAC,qCAAqC,kDAAkD,+BAA+B,CAAC,sBAAsB,CAAC,oDAAoD,eAAe,CAAC,cAAc,CAAC,eAAe,CAAC,wCAAwC,cAAc,CAAC,CAAC,gCAAgC,kBAAkB,CAAC,UAAU,CAAC,4CAA4C,YAAY,CAAC,UAAU,CAAC,SAAS,CAAC,UAAU,CAAC,wDAAwD,YAAY,CAAC,eAAe,CAAC,iBAAiB,CAAC,oGAAoG,oBAAoB,CAAC,iBAAiB,CAAC,kHAAkH,aAAa,CAAC,iBAAiB,CAAC,eAAe,CAAC,cAAc,CAAC,UAAU,CAAC,qCAAqC,+CAA+C,aAAa,CAAC,4BAA4B,CAAC,CAAC,iDAAiD,iBAAiB,CAAC,oBAAoB,CAAC,SAAS,CAAC,QAAQ,CAAC,2DAA2D,gBAAgB,CAAC,eAAe,CAAC,YAAY,CAAC,mBAAY,CAAZ,oBAAY,CAAZ,mBAAY,CAAZ,YAAY,CAAC,sBAAa,CAAb,kBAAa,CAAb,cAAc,CAAC,gFAAgF,iBAAiB,CAAC,aAAa,CAAC,UAAU,CAAC,WAAW,CAAC,eAAe,CAAC,gCAAgC,CAAC,uEAAuE,WAAW,CAAC,sFAAsF,iBAAiB,CAAC,2FAA2F,0DAAiD,CAAjD,kDAAkD,CAAC,iEAAiE,YAAY,CAAC,oGAAoG,QAAQ,CAAC,UAAU,CAAC,WAAW,CAAC,iBAAiB,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,0CAAkC,CAAlC,kCAAkC,CAAC,gCAAgC,CAAC,6EAA6E,qBAAqB,CAAC,cAAc,UAAU,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,8DAA8D,CAAC,sDAAsD,CAAC,kBAAkB,CAAC,aAAa,UAAU,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,8DAA8D,CAAC,sDAAsD,CAAC,kBAAkB,CAAC,4EAA4E,kBAAkB,CAAC,iBAAiB,CAAC,UAAU,CAAC,sCAAsC,qEAAqE,CAAC,6DAA6D,CAAC,0BAA0B,0GAA0G,CAAC,kGAAkG,CAAC,kEAAkE,eAAe,CAAC,iBAAiB,CAAC,UAAU,CAAC,uDAAuD,CAAC,+CAA+C,CAAC,mBAAmB,qBAAqB,CAAC,sBAAsB,wBAAwB,CAAC,+EAA+E,qBAAqB,CAAC,UAAU,CAAC,oDAAoD,iBAAiB,CAAC,iBAAiB,CAAC,qCAAqC,0DAA0D,+BAA+B,CAAC,sBAAsB,CAAC,4DAA4D,eAAe,CAAC,cAAc,CAAC,eAAe,CAAC,4CAA4C,cAAc,CAAC,CAAC,oBAAoB,WAAW,CAAC,gBAAgB,CAAC,UAAU,CAAC,oBAAoB,CAAC,aAAa,CAAC,UAAU,CAAC,sBAAsB,CAAC,2BAA2B,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,2BAA2B,oBAAoB,CAAC,mBAAmB,CAAC,eAAe,CAAC,wBAAwB,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC,oBAAoB,CAAC,sBAAsB,CAAC,gCAAgC,wBAAwB,CAAC,oBAAoB,CAAC,UAAU,CAAC,SAAS,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,aAAa,CAAC,iBAAiB,CAAC,QAAQ,CAAC,gBAAgB,CAAC,eAAe,CAAC,sDAAsD,oBAAoB,CAAC,mBAAmB,CAAC,eAAe,CAAC,sCAAsC,gBAAgB,CAAC,QAAQ,CAAC,WAAW,CAAC,+DAA+D,cAAc,CAAC,iCAAiC,iBAAiB,CAAC,QAAQ,CAAC,cAAc,CAAC,6CAA8F,iBAAiB,CAAC,sDAAmG,eAAe,CAAC,oBAAoB,CAAC,iDAAiD,kBAAkB,CAAC,oBAAoB,CAAC,cAAc,CAAC,eAAe,CAAC,kDAAkD,CAAC,aAAa,CAAC,wBAAwB,CAA2B,iBAAiB,CAAC,eAAe,CAAC,yFAAyF,CAAC,+DAA+D,CAAyH,uDAAuD,CAAC,qDAAqD,aAAa,CAAC,kBAAkB,CAAC,UAAU,CAAC,kDAAkD,mBAAmB,CAAC,yDAAyD,aAAa,CAAC,qBAAqB,CAAC,wBAAwB,CAAC,UAAU,CAAC,WAAW,CAAC,+GAA+G,oBAAoB,CAAC,gEAAgE,eAAe,CAAC,sEAAsE,YAAY,CAAC,8DAA8D,UAAU,CAAC,uDAAuD,sBAAsB,CAAC,oBAAoB,CAAC,eAAe,CAAC,cAAc,CAAC,2DAA2D,wBAAwB,CAAC,gPAAgP,gBAAgB,CAAC,kBAAkB,CAAC,oIAAoI,oBAAoB,CAAC,uCAAuC,oBAAoB,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,8CAA8C,aAAa,CAAC,iBAAiB,CAAC,eAAe,CAAC,cAAc,CAAC,kBAAkB,CAAC,UAAU,CAAC,gCAAgC,SAAS,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,0CAA0C,gBAAgB,CAAC,2DAA2D,kBAAkB,CAAC,kBAAkB,CAAC,+BAA+B,CAAC,eAAe,CAAC,cAAc,CAAC,UAAU,CAAC,wDAAwD,oBAAoB,CAAC,SAAS,CAAC,iBAAiB,CAAC,8DAA8D,oBAAoB,CAAC,WAAW,CAAC,UAAU,CAAC,qFAAqF,UAAU,CAAC,+BAA+B,4BAA4B,CAAC,mCAAmC,CAAC,eAAe,CAAC,qBAAqB,CAAC,aAAa,CAAC,mDAAmD,SAAS,CAAC,eAAe,CAAC,SAAS,CAAC,mBAAW,CAAX,oBAAW,CAAX,mBAAW,CAAX,YAAY,CAAC,0JAA0J,YAAY,CAAC,wDAAwD,YAAY,CAAC,kBAAW,CAAX,mBAAW,CAAX,mBAAW,CAAX,WAAW,CAAC,WAAW,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,wCAAwC,CAAgH,gCAAgC,CAAC,aAAa,CAAC,8DAA8D,kBAAW,CAAX,mBAAW,CAAX,mBAAW,CAAX,WAAW,CAAC,gBAAgB,CAAC,cAAc,CAAC,cAAc,CAAC,gBAAgB,CAAC,UAAU,CAAC,sCAAsC,CAAC,+CAA+C,gCAAgC,CAAC,0DAA0D,iBAAiB,CAAC,kBAAkB,eAAe,CAAC,gBAAgB,CAAC,aAAa,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,8HAA8H,0BAA0B,CAAC,qBAAqB,UAAU,CAAC,mCAAmC,oBAAoB,CAAC,iBAAiB,CAAC,qCAAqC,aAAa,CAAC,mCAAmC,oBAAoB,CAAC,kBAAkB,CAAC,+BAA+B,qBAAqB,CAAC,iBAAiB,CAAC,UAAU,CAAC,iCAAiC,aAAa,CAAC,gCAAgC,wBAAwB,CAAC,oBAAoB,CAAC,aAAa,CAAC,kCAAkC,aAAa,CAAC,gCAAgC,wBAAwB,CAAC,oBAAoB,CAAC,aAAa,CAAC,kCAAkC,aAAa,CAAC,iCAAiC,wBAAwB,CAAC,oBAAoB,CAAC,aAAa,CAAC,mCAAmC,aAAa,CAAC,6BAA6B,wBAAwB,CAAC,oBAAoB,CAAC,aAAa,CAAC,+BAA+B,aAAa,CAAC,oBAAoB,eAAe,CAAC,qBAAqB,CAAC,QAAQ,CAAC,6BAA6B,CAAC,8CAA8C,CAAC,sCAAsC,CAAC,gBAAgB,CAAC,0IAA0I,0BAA0B,CAAC,sBAAsB,cAAc,CAAC,WAAW,CAAC,qCAAqC,oBAAoB,CAAC,iBAAiB,CAAC,uCAAuC,aAAa,CAAC,qCAAqC,oBAAoB,CAAC,kBAAkB,CAAC,+BAA+B,6BAA6B,CAAC,kCAAkC,6BAA6B,CAAC,kCAAkC,6BAA6B,CAAC,mCAAmC,6BAA6B,CAAC,wDAAwD,SAAS,CAAC,sHAAsH,aAAa,CAAC,gBAAgB,CAAC,sHAAsH,UAAU,CAAC,2EAA2E,eAAe,CAAC,gDAAgD,QAAQ,CAAC,SAAS,CAAC,kDAAkD,UAAU,CAAC,YAAY,CAAC,+DAA+D,UAAU,CAAC,eAAe,CAAC,eAAe,CAAC,qEAAqE,eAAe,CAAC,UAAU,CAAC,oBAAoB,CAAC,qCAAqC,kCAAkC,UAAU,CAAC,qDAAqD,QAAQ,CAAC,WAAW,CAAC,CAAC,mDAAmD,WAAW,CAAC,oEAAoE,WAAW,CAAC,iBAAiB,CAAC,qEAAqE,qBAAqB,CAAC,8BAA8B,cAAc,CAAC,eAAe,CAAC,UAAU,CAAC,eAAe,CAAC,qBAAqB,gBAAgB,CAAC,eAAe,CAAC,WAAW,CAAC,eAAe,CAAC,wBAAwB,CAAC,kBAAkB,CAA2E,iBAAiB,CAAC,gDAAgD,gBAAgB,CAAC,iBAAiB,CAAC,WAAW,CAAC,oBAAoB,CAAC,qBAAqB,CAAC,8IAA8I,sBAAsB,CAAC,iBAAiB,CAAC,4CAA4C,iBAAiB,CAAC,gBAAgB,CAAC,gDAAgD,iBAAiB,CAAC,iBAAiB,CAAC,gDAAgD,iBAAiB,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,qCAAqC,8BAA8B,+BAA+B,CAAC,CAAC,qCAAqC,wBAAwB,iBAAiB,CAAC,oJAAoJ,wBAAwB,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,gDAAgD,cAAc,CAAC,SAAS,CAAC,CAAC,2DAA2D,UAAU,CAAC,gBAAgB,CAAC,SAAS,CAAC,iBAAiB,CAAC,aAAa,CAAC,2LAA2L,oBAAoB,CAAC,+DAA+D,SAAS,CAAC,cAAc,CAAC,cAAc,CAAC,8DAA8D,kBAAkB,CAAC,UAAU,CAAC,6CAA6C,eAAe,CAAC,uEAAuE,UAAU,CAAC,sDAAsD,mCAAmC,CAAC,4BAA4B,CAAC,yBAAyB,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,WAAW,CAAC,yDAAyD,wBAAwB,CAAC,sBAAsB,CAAC,gBAAgB,CAAC,yBAAyB,CAAC,WAAW,CAAC,2BAA2B,CAAC,wBAAwB,CAAqL,4FAA4F,CAAC,+DAA+D,CAAC,6DAA6D,CAAC,eAAe,CAAkD,iBAAiB,CAAoC,qCAAqC,CAAC,6BAA6B,CAAC,iBAAiB,CAAC,oEAAoE,YAAY,CAAC,WAAW,CAAC,eAAe,CAAC,kBAAkB,CAAC,wBAAwB,CAAC,kBAAkB,CAA2E,iBAAiB,CAAC,0CAA0C,WAAW,CAAC,gBAAgB,CAAC,aAAa,CAAC,kBAAkB,CAAC,6CAA6C,wBAAwB,CAAC,WAAW,CAAC,cAAc,CAAC,6CAA6C,gBAAgB,CAAC,iDAAiD,kBAAkB,CAAC,8BAA8B,qBAAqB,CAAC,2EAA2E,YAAY,CAAC,0EAA0E,WAAW,CAAC,eAAe,CAAC,gCAAgC,iBAAiB,CAAC,uCAAuC,4BAA4B,CAAC,yBAAyB,CAAC,UAAU,CAAC,gCAAgC,iBAAiB,CAAC,8CAA8C,UAAU,CAAC,oDAAoD,4BAA4B,CAAC,cAAc,CAAC,oDAAoD,WAAW,CAAC,gBAAgB,CAAC,yCAAyC,gBAAgB,CAAC,qBAAqB,CAAC,eAAe,CAAC,4BAA4B,CAAC,+DAA+D,eAAe,CAAC,iBAAiB,CAAC,cAAc,CAAC,mDAAmD,UAAU,CAAC,sBAAsB,CAAC,yEAAyE,UAAU,CAAC,wCAAwC,4BAA4B,CAAC,6BAA6B,2BAA2B,CAAC,gDAAgD,WAAW,CAAC,WAAW,CAAC,kBAAkB,CAAC,yCAAyC,WAAW,CAAC,aAAa,CAAC,kDAAkD,SAAS,CAAC,oCAAoC,eAAe,CAAC,6DAA6D,aAAa,CAAC,8DAA8D,cAAc,CAAC,wBAAwB,kBAAkB,CAAC,2BAA2B,kBAAkB,CAAC,wBAAwB,CAAC,eAAe,CAAC,mBAAmB,CAAC,WAAW,CAAC,UAAU,CAAC,iBAAiB,CAAC,kCAAkC,WAAW,CAAC,wBAAwB,CAAC,kBAAkB,CAAC,8BAA8B,wBAAwB,CAAC,WAAW,CAAC,gBAAgB,CAAC,6BAA6B,CAAC,cAAc,CAAC,WAAW,CAAC,2BAA2B,CAAC,wBAAwB,CAAqL,4FAA4F,CAAC,+DAA+D,CAAC,6DAA6D,CAAC,eAAe,CAAkD,iBAAiB,CAAoC,qCAAqC,CAAC,6BAA6B,CAAC,iBAAiB,CAAC,iCAAiC,eAAe,CAAC,iBAAiB,CAAC,UAAU,CAAC,yBAAyB,CAAC,oBAAoB,CAAC,0CAA0C,WAAW,CAAC,0CAA0C,SAAS,CAAC,gBAAgB,CAAC,8CAA8C,WAAW,CAAC,cAAc,CAAC,eAAe,CAAC,UAAU,CAAC,eAAe,CAAC,uBAAuB,qBAAqB,CAAC,6KAA6K,eAAe,CAAC,uCAAuC,iBAAiB,CAAC,aAAa,CAAC,WAAW,CAAC,eAAe,CAAC,sDAAsD,4BAA4B,CAAC,SAAS,CAAC,qBAAqB,CAAC,sBAAsB,CAAC,0BAA0B,CAAC,mCAAmC,CAAC,yBAAyB,CAAC,wBAAwB,CAAoE,0BAA0B,CAAC,qCAAqC,eAAe,CAAC,cAAc,CAAC,6CAA6C,iBAAiB,CAAC,SAAS,CAAC,uDAAuD,UAAU,CAAC,iBAAiB,CAAC,KAAK,CAAC,gBAAgB,CAAC,eAAe,CAAC,cAAc,CAA6F,mFAAmF,CAAC,iDAAyC,CAAzC,yCAAyC,CAAC,qBAAqB,CAAC,WAAW,CAAC,uBAAuB,CAAsB,eAAe,CAAC,2FAAuL,mFAAmF,CAAC,iDAAyC,CAAzC,yCAAyC,CAAC,wBAAwB,CAAC,yGAA0K,yBAAyB,CAAC,yGAA0K,yBAAyB,CAAC,qDAAqD,KAAK,CAAC,aAAa,CAAC,UAAU,CAAC,WAAW,CAAC,QAAQ,CAAC,wBAAwB,CAAC,wBAAwB,CAAC,aAAa,CAAC,iBAAiB,CAAC,cAAc,CAAC,gBAAgB,CAAC,kFAAkF,oBAAoB,CAAC,6BAAqB,CAArB,qBAAqB,CAAC,0BAA0B,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,WAAW,CAAC,iBAAiB,iBAAiB,CAAC,8HAA8H,UAAU,CAAC,cAAc,CAAC,cAAc,CAAC,qBAAqB,CAAC,uBAAuB,CAAC,wBAAwB,CAAC,mBAAmB,CAAC,wBAAwB,CAAC,UAAU,CAAC,qCAAqC,CAAC,sBAAsB,CAAC,gJAAgJ,wBAAwB,CAAC,qBAAqB,2BAA2B,CAAC,8BAA8B,CAAC,qBAAqB,0BAA0B,CAAC,6BAA6B,CAAC,uBAAuB,UAAU,CAAC,qBAAqB,CAAC,QAAQ,CAAC,mBAAmB,CAAC,6FAAoF,CAApF,qFAAqF,CAAC,gCAAgC,qBAAqB,CAAC,wCAAwC,eAAe,CAAC,iBAAiB,CAAC,8CAA8C,cAAc,CAAC,8CAA8C,YAAY,CAAC,uEAAuE,cAAc,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,uBAAuB,CAAC,kBAAkB,CAAC,6BAA6B,CAA4B,qBAAqB,CAAC,iFAAiF,gBAAgB,CAAC,aAAa,CAAC,eAAe,CAAC,wBAAwB,CAAyB,qBAAqB,CAAC,mBAAmB,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,wJAAwJ,aAAa,CAAC,UAAU,CAAC,mCAAmC,cAAc,CAAC,6BAA6B,CAAC,kCAAkC,CAAC,qCAAqC,CAAC,4CAA4C,UAAU,CAAC,oCAAoC,aAAa,CAAC,6BAA6B,CAAC,kCAAkC,CAAC,qCAAqC,CAAC,6CAA6C,UAAU,CAAC,4BAA4B,aAAa,CAAC,iBAAiB,CAAC,yBAAyB,CAAC,eAAe,CAAC,UAAU,CAAC,6BAA6B,CAAC,cAAc,CAAC,OAAO,CAAC,WAAW,CAAC,4BAA4B,UAAU,CAAC,qCAAqC,aAAa,CAAC,iBAAiB,CAAC,SAAS,CAAC,SAAS,CAAC,aAAa,CAAC,cAAc,CAAC,UAAU,CAAC,UAAU,CAAC,WAAW,CAAC,6BAA6B,CAA4B,wBAAwB,CAAC,qBAAqB,CAAC,uBAAuB,CAAC,oDAAoD,UAAU,CAAC,cAAc,CAAC,WAAW,CAAC,wCAAwC,aAAa,CAAC,iBAAiB,CAAC,QAAQ,CAAC,SAAS,CAAC,UAAU,CAAC,eAAe,CAAC,iEAAiE,eAAe,CAAC,UAAU,CAAC,kDAAkD,UAAU,CAAC,yDAAyD,iBAAiB,CAAC,aAAa,CAAC,WAAW,CAAC,WAAW,CAAC,UAAU,CAAC,QAAQ,CAAC,gIAAgI,6BAA6B,CAA4B,wBAAwB,CAAC,qBAAqB,CAAC,WAAW,CAAC,yBAAyB,CAAC,YAAY,CAAC,eAAe,CAAC,yBAAyB,CAAC,wDAAwD,aAAa,CAAC,iBAAiB,CAAC,UAAU,CAAC,UAAU,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,0BAA0B,CAAC,0BAA0B,CAAC,WAAW,CAAC,6BAA6B,CAA4B,wBAAwB,CAAC,qBAAqB,CAAC,uEAAuE,4BAA4B,CAAC,wEAAwE,4BAA4B,CAAC,6FAA6F,UAAU,CAAC,0EAA0E,yBAAyB,CAAC,aAAa,CAAC,UAAU,CAAC,sBAAsB,CAAC,2BAA2B,CAAC,oBAAoB,CAAC,qBAAqB,CAAC,6BAA6B,CAA4B,wBAAwB,CAAC,qBAAqB,CAAC,6DAA6D,UAAU,CAAC,UAAU,CAAC,kBAAkB,CAAC,WAAW,CAAkD,iBAAiB,CAAC,uDAAuD,aAAa,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,SAAS,CAAC,SAAS,CAAC,aAAa,CAAC,cAAc,CAAC,UAAU,CAAC,UAAU,CAAC,WAAW,CAAC,6BAA6B,CAA4B,wBAAwB,CAAC,qBAAqB,CAAC,uBAAuB,CAAC,uIAAuI,eAAe,CAAC,iEAAiE,aAAa,CAAC,kEAAkE,6BAA6B,CAA4B,wBAAwB,CAAC,qBAAqB,CAAC,SAAS,CAAC,iBAAiB,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,mBAAmB,CAAC,oBAAoB,CAAkD,iBAAiB,CAAC,wDAAwD,aAAa,CAAC,iBAAiB,CAAC,QAAQ,CAAC,SAAS,CAAC,UAAU,CAAC,cAAc,CAAC,UAAU,CAAC,WAAW,CAAC,6BAA6B,CAA4B,wBAAwB,CAAC,qBAAqB,CAAC,uBAAuB,CAAC,8CAA8C,iBAAiB,CAAC,yBAAyB,CAAC,eAAe,CAAC,UAAU,CAAC,UAAU,CAAC,cAAc,CAAC,4DAA4D,YAAY,CAAC,UAAU,CAAC,yBAAyB,CAAC,eAAe,CAAC,YAAY,CAAC,cAAc,CAAC,WAAW,CAAC,iBAAiB,CAAC,6BAA6B,CAA4B,qBAAqB,CAAC,eAAe,CAAC,0DAA0D,aAAa,CAAC,QAAQ,CAAC,oEAAoE,gBAAgB,CAAC,qCAAqC,oDAAoD,eAAe,CAAC,aAAa,CAAC,oEAAoE,eAAe,CAAC,eAAe,CAAC,WAAW,CAAC,wBAAwB,CAAC,yBAAyB,CAAC,mEAAmE,eAAe,CAAC,eAAe,CAAC,WAAW,CAAC,wBAAwB,CAAC,2BAA2B,CAAC,8EAA8E,SAAS,CAAC,0EAA0E,SAAS,CAAC,sBAAsB,CAAC,+EAA+E,cAAc,CAAC,CAAC,qCAAqC,kEAAkE,eAAe,CAAC,CAAC,0DAA0D,SAAS,CAAC,aAAa,CAAC,aAAa,CAAC,qEAAqE,SAAS,CAAC,2DAA2D,qBAAqB,CAAC,yEAAyE,qBAAqB,CAAC,UAAU,CAAC,8CAA8C,iBAAiB,CAAC,iBAAiB,CAAC,qCAAqC,oDAAoD,+BAA+B,CAAC,qBAAqB,CAAC,sDAAsD,eAAe,CAAC,cAAc,CAAC,eAAe,CAAC,yCAAyC,cAAc,CAAC,CAAC,yCAAyC,SAAS,CAAC,yBAAyB,CAAC,kEAAkE,sBAAsB,CAAC,eAAe,eAAe,CAAC,8DAA8D,YAAY,CAAC,oEAAoE,eAAe,CAAC,gCAAgC,gBAAgB,CAAC,kDAAkD,mBAAmB,CAAC,gEAAgE,4BAA4B,CAAC,2BAA2B,CAAC,yBAAyB,CAAC,oFAAoF,aAAa,CAAC,oDAAoD,wBAAwB,CAAC,8DAA8D,eAAe,CAAC,qBAAqB,CAAC,qEAAqE,cAAc,CAAC,gEAAgE,QAAQ,CAAC,gDAAgD,aAAa,CAAC,mDAAmD,eAAe,CAAC,6EAA6E,kBAAkB,CAAC,qKAAqK,gBAAgB,CAAC,6CAA6C,kBAAkB,CAAC,mBAAmB,CAAC,mBAAmB,CAAC,uBAAuB,CAAC,0BAA0B,CAAC,eAAe,CAAC,kBAAkB,CAAC,+BAA+B,wBAAwB,CAAC,kDAAkD,cAAc,CAAC,2CAA2C,UAAU,CAAC,UAAU,CAAC,oBAAoB,CAAC,8CAA8C,yBAAyB,CAAC,4BAA4B,CAAC,qBAAqB,CAAC,0DAA0D,cAAc,CAAC,+CAA+C,wBAAwB,CAAC,eAAe,CAAC,8CAA8C,4BAA4B,CAAC,kBAAkB,CAAC,yDAAyD,eAAe,CAAC,gBAAgB,CAAC,mCAAmC,qBAAqB,CAAC,8BAA8B,kBAAkB,CAAC,gDAAgD,eAAe,CAAC,qBAAqB,CAAC,oBAAoB,CAAC,2DAA2D,UAAU,CAAC,+DAA+D,cAAc,CAAC,4CAA4C,eAAe,CAAC,oHAAoH,YAAY,CAAC,mKAAmK,YAAY,CAAC,yDAAyD,aAAa,CAAC,yDAAyD,gBAAgB,CAAC,sBAAsB,aAAa,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,cAAc","file":"redux-fields.min.css","sourcesContent":[".redux-container-ace_editor .ace-wrapper{position:static}.redux-container-ace_editor .ace_editor{height:200px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.redux-container-ace_editor .ace_gutter{z-index:1 !important}.redux-main .redux-container-background .redux-background-position,.redux-main .redux-container-background .redux-background-position select,.redux-main .redux-container-background .redux-background-attachment,.redux-main .redux-container-background .redux-background-attachment select,.redux-main .redux-container-background .redux-background-clip,.redux-main .redux-container-background .redux-background-clip select,.redux-main .redux-container-background .redux-background-origin,.redux-main .redux-container-background .redux-background-origin select,.redux-main .redux-container-background .redux-background-size,.redux-main .redux-container-background .redux-background-size select,.redux-main .redux-container-background .redux-background-repeat,.redux-main .redux-container-background .redux-background-repeat select{width:200px !important;margin-right:10px;margin-bottom:7px}.redux-main .redux-container-background .background-preview{display:block;width:100%;margin:5px 0 10px;border:1px dotted #d3d3d3}.redux-main .redux-container-background .select2-container{margin-right:10px;margin-bottom:10px}.redux-main .redux-container-background .wp-picker-container{margin-bottom:10px}.redux-main .redux-container-background .upload{width:100%;margin-bottom:8px}.redux-main .redux-container-select li.ui-state-highlight{height:20px;margin-top:2px;margin-left:5px;width:64px;margin-bottom:0}.wp-customizer .redux-container-background .redux-background-position,.wp-customizer .redux-container-background .redux-background-position select,.wp-customizer .redux-container-background .redux-background-attachment,.wp-customizer .redux-container-background .redux-background-attachment select,.wp-customizer .redux-container-background .redux-background-clip,.wp-customizer .redux-container-background .redux-background-clip select,.wp-customizer .redux-container-background .redux-background-origin,.wp-customizer .redux-container-background .redux-background-origin select,.wp-customizer .redux-container-background .redux-background-size,.wp-customizer .redux-container-background .redux-background-size select,.wp-customizer .redux-container-background .redux-background-repeat,.wp-customizer .redux-container-background .redux-background-repeat select{width:100% !important}.redux-main .redux-container-box_shadow .box-shadow-inset{margin:0 auto}.redux-main .redux-container-box_shadow .box-shadow-inset #shadow-result{padding:20px;margin-bottom:20px;margin-top:20px;min-height:180px;border:0px solid #ddd;background:#f1f1f1;transition:all 0.2s ease}.redux-main .redux-container-box_shadow .box-shadow-inset .row-content:after,.redux-main .redux-container-box_shadow .box-shadow-inset .row:after{clear:both;content:\" \";display:block;height:0;visibility:hidden}.redux-main .redux-container-box_shadow .box-shadow-inset .row .col-2{width:50%;float:left;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.redux-main .redux-container-box_shadow .box-shadow-inset .row .col-2.disabled label strong{color:#cccccc}.redux-main .redux-container-box_shadow .box-shadow-inset .row .col-2 label{color:#999999}.redux-main .redux-container-box_shadow .box-shadow-inset .row .col-2 .wp-picker-container.disabled{pointer-events:none;opacity:0.4;z-index:200;background:0;padding:0 !important}.redux-main .redux-container-box_shadow .box-shadow-inset .row .col-2 .wp-picker-container.disabled button{background-color:#888}.redux-main .redux-container-box_shadow .box-shadow-inset .row .col-2 .wp-picker-container.disabled a{z-index:-1}.redux-main .redux-container-box_shadow .box-shadow-inset .row .col-2 ul li{padding-bottom:10px}.redux-main .redux-container-box_shadow .box-shadow-inset .row .col-2:first-child{padding-right:20px}.redux-main .redux-container-box_shadow .box-shadow-inset .row .col-2:last-child{padding-left:20px}.redux-container-border .select2-container{float:left;display:block;margin-right:10px}.redux-container-border .select_wrapper{float:left;width:inherit}.redux-container-border .select_wrapper select{width:80px;float:left}.redux-container-border .field-border-input{margin-right:10px;margin-bottom:7px}@media screen and (max-width: 782px){.redux-container-border .field-border-input input{display:inline-block !important;width:100px !important}.redux-container-border .field-border-input .add-on{padding:7px 4px;font-size:16px;line-height:1.5}.redux-container-border .select_wrapper{margin-top:6px}}.redux-container-checkbox label{vertical-align:top;width:100%}.redux-container-checkbox label .field-desc{margin-top:0;float:left;width:93%;clear:none}.redux-container-color_gradient .redux-gradient-preview{height:150px;margin-top:10px;border-radius:4px}.redux-container-color_gradient .colorGradient,.redux-container-color_gradient .redux-gradient-type{display:inline-block;margin-right:20px}.redux-container-color_gradient .colorGradient strong,.redux-container-color_gradient .redux-gradient-type strong{display:table;margin-bottom:5px;margin-left:3px;font-size:12px;color:#999}@media screen and (max-width: 660px){.redux-container-color_gradient .colorGradient{display:block;text-align:center !important}}.redux-main .redux-container-color_palette label{position:relative;display:inline-block;padding:0;margin:0}.redux-main .redux-container-color_palette .colors-wrapper{max-height:300px;overflow-y:auto;padding:10px;display:flex;flex-wrap:wrap}.redux-main .redux-container-color_palette .colors-wrapper .color-palette-color{color:transparent;display:block;width:100%;height:100%;overflow:hidden;border:1px solid rgba(0,0,0,0.2)}.redux-main .redux-container-color_palette .colors-wrapper.round label{padding:3px}.redux-main .redux-container-color_palette .colors-wrapper.round .color-palette-color{border-radius:50%}.redux-main .redux-container-color_palette .colors-wrapper.box-shadow .color-palette-color{box-shadow:inset 3px 3px 13px 2px rgba(0,0,0,0.22)}.redux-main .redux-container-color_palette .colors-wrapper input{display:none}.redux-main .redux-container-color_palette .colors-wrapper input:checked+label .color-palette-color{border:0;width:130%;height:130%;position:relative;left:-15%;top:-15%;z-index:99;box-shadow:1px 1px 6px 1px #333333;border:1px solid rgba(0,0,0,0.3)}.redux-main .redux-container-color_palette .colors-wrapper.with-margin label{margin:3px !important}.sp-container{color:#555;border-color:#ccc;background:#f7f7f7;-webkit-box-shadow:inset 0 1px 0 #fff,0 1px 0 rgba(0,0,0,0.08);box-shadow:inset 0 1px 0 #fff,0 1px 0 rgba(0,0,0,0.08);vertical-align:top}.sp-replacer{color:#555;border-color:#ccc;background:#f7f7f7;-webkit-box-shadow:inset 0 1px 0 #fff,0 1px 0 rgba(0,0,0,0.08);box-shadow:inset 0 1px 0 #fff,0 1px 0 rgba(0,0,0,0.08);vertical-align:top}.sp-replacer:focus,.sp-replacer:hover,.sp-replacer.focus,.sp-replacer.hover{background:#fafafa;border-color:#999;color:#222}.sp-replacer:focus,.sp-replacer.focus{-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,0.8);box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,0.8)}.sp-replacer.active:focus{-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,0.5),0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,0.8);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,0.5),0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,0.8)}.sp-replacer.active,.sp-replacer.active:hover,.sp-replacer:active{background:#eee;border-color:#999;color:#333;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,0.5);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,0.5)}#ui-datepicker-div{z-index:15 !important}.ui-datepicker-header{background-color:#00abef}.redux-dimensions-container select,.redux-dimensions-container .select_wrapper{width:80px !important;float:left}.redux-dimensions-container .field-dimensions-input{margin-right:10px;margin-bottom:7px}@media screen and (max-width: 782px){.redux-dimensions-container .field-dimensions-input input{display:inline-block !important;width:100px !important}.redux-dimensions-container .field-dimensions-input .add-on{padding:7px 4px;font-size:16px;line-height:1.5}.redux-dimensions-container .select_wrapper{margin-top:6px}}.redux-main .divide{height:20px;line-height:20px;float:none;border-color:#e7e7e7;display:block;width:100%;height:35px !important;line-height:35px !important;position:relative;margin:15px 0 10px 0}.redux-main .divide .inner{width:42% !important;left:40% !important;margin-left:-6%;background-color:#fcfcfc;border-color:#e7e7e7;position:absolute;height:1px;top:50%;width:100%;margin-top:-1px;border-top-width:1px;border-top-style:solid}.redux-main .divide .inner span{background-color:#fcfcfc;border-color:#e7e7e7;height:5px;width:5px;border-width:2px;border-style:solid;display:block;position:absolute;left:50%;margin-left:-5px;margin-top:-5px}.wp-customizer .redux-container-divide .divide .inner{width:82% !important;left:18% !important;margin-left:-8%}.redux-container-editor .mceLayout td{border-width:1px;margin:0;padding:1px}.redux-container-editor input,.redux-container-editor textarea{margin:inherit}.redux-container-editor textarea{border-style:none;border:0;border-width:0}.redux-container-editor .wp-editor-container{-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.redux-container-editor .wp-editor-container textarea{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;border-style:inherit}.redux-container-editor .quicktags-toolbar input{margin:2px 1px 4px;display:inline-block;min-width:26px;padding:2px 4px;font:12px/18px Arial, Helvetica, sans-serif normal;color:#464646;border:1px solid #c3c3c3;-webkit-border-radius:3px;border-radius:3px;background:#eee;background-image:-webkit-gradient(linear, left bottom, left top, from(#e3e3e3), to(#fff));background-image:-webkit-linear-gradient(bottom, #e3e3e3, #fff);background-image:-moz-linear-gradient(bottom, #e3e3e3, #fff);background-image:-o-linear-gradient(bottom, #e3e3e3, #fff);background-image:linear-gradient(to top, #e3e3e3, #fff)}.redux-container-image_select .redux-table-container{display:table;table-layout:fixed;width:100%}.redux-container-image_select .redux-image-select{margin:0 !important}.redux-container-image_select .redux-image-select .tiles{display:block;background-color:#fff;background-repeat:repeat;width:40px;height:40px}.redux-container-image_select .redux-image-select img,.redux-container-image_select .redux-image-select .tiles{border-color:#d9d9d9}.redux-container-image_select .redux-image-select li:last-child{margin-bottom:0}.redux-container-image_select .redux-image-select input[type=\"radio\"]{display:none}.redux-container-image_select .redux-image-select-presets img{width:100%}.redux-container-image_select ul.redux-image-select li{margin:0 10px 3px 10px;display:inline-block;padding:2px 2px;padding-left:0}.redux-container-image_select .redux-image-select-selected{background-color:#f9f9f9}.redux-container-image_select .redux-image-select img,.redux-container-image_select .redux-image-select-selected img,.redux-container-image_select .redux-image-select .tiles,.redux-container-image_select .redux-image-select-selected .tiles{border-width:4px;border-style:solid}.redux-container-image_select .redux-image-select-selected .tiles,.redux-container-image_select .redux-image-select-selected .tiles{border-color:#7a7a7a}.redux-container-link_color .linkColor{display:inline-block;padding-right:10px;padding-bottom:7px}.redux-container-link_color .linkColor strong{display:table;margin-bottom:5px;margin-left:3px;font-size:12px;font-weight:normal;color:#999}.redux-main .redux-media-slider{width:40%;display:inline-block;margin-left:30px}.redux-main .redux-media-filter-container{padding-top:20px}.redux-main .redux-media-filter-container .container-label{margin-bottom:20px;padding-bottom:1px;border-bottom:1px solid #e7e7e7;font-weight:600;font-size:12px;color:#999}.redux-main .redux-media-filter-container .media-filter{display:inline-block;width:47%;margin-bottom:5px}.redux-main .redux-media-filter-container .media-filter label{display:inline-block;width:130px;color:#999}.redux-main .redux-media-filter-container .media-filter label.disabled .filter-value{color:#ccc}.redux-container-palette label{border:3px solid transparent;border-color:transparent !important;border-radius:0;width:100% !important;display:block}.redux-container-palette label.ui-button.ui-widget{width:95%;background:none;padding:0;display:flex}.redux-container-palette label.ui-button.ui-widget .ui-checkboxradio-icon,.redux-container-palette label.ui-button.ui-widget .ui-checkboxradio-icon-space{display:none}.redux-container-palette label.ui-button.ui-widget span{padding:10px;flex-grow:1;font-size:0;line-height:10px;color:rgba(0,0,0,0);-webkit-transition:all 200ms ease-in-out;-moz-transition:all 200ms ease-in-out;-ms-transition:all 200ms ease-in-out;-o-transition:all 200ms ease-in-out;transition:all 200ms ease-in-out;text-shadow:0}.redux-container-palette label.ui-button.ui-widget span:hover{flex-grow:3;font-weight:bold;min-width:60px;font-size:12px;line-height:10px;color:#333;text-shadow:0 0 8px #fff, 0 0 8px #fff}.redux-container-palette label.ui-state-active{border:3px solid #333 !important}.wp-customizer .redux-main .redux-container-palette label{margin-bottom:3px}.redux-info-field{min-height:20px;padding:8px 19px;margin:10px 0;border:1px solid;border-radius:4px;border:1px solid;position:relative}.redux-info-field h1,.redux-info-field h2,.redux-info-field h3,.redux-info-field h4,.redux-info-field h5,.redux-info-field h6{border-bottom:0 !important}.redux-info-field h3{color:#777}.redux-info-field .redux-info-icon{display:inline-block;margin-right:15px}.redux-info-field .redux-info-icon i{font-size:2em}.redux-info-field .redux-info-desc{display:inline-block;vertical-align:top}.redux-info-field.redux-normal{background-color:#eee;border-color:#ccc;color:#666}.redux-info-field.redux-normal i{color:#c5c5c5}.redux-info-field.redux-warning{background-color:#fbeba4;border-color:#d7c281;color:#958234}.redux-info-field.redux-warning i{color:#dcca81}.redux-info-field.redux-success{background-color:#c4ee91;border-color:#71af5d;color:#4d7615}.redux-info-field.redux-success i{color:#a0ca6c}.redux-info-field.redux-critical{background-color:#fba1a3;border-color:#b84f5b;color:#981225}.redux-info-field.redux-critical i{color:#dd767d}.redux-info-field.redux-info{background-color:#d3e4f4;border-color:#a9b6c2;color:#5c80a1}.redux-info-field.redux-info i{color:#afc6da}.redux-notice-field{margin:15px 0 0;background-color:#fff;border:0;border-left:4px solid #f3f3f3;-webkit-box-shadow:0 1px 1px 0 rgba(0,0,0,0.1);box-shadow:0 1px 1px 0 rgba(0,0,0,0.1);padding:1px 12px}.redux-notice-field h1,.redux-notice-field h2,.redux-notice-field h3,.redux-notice-field h4,.redux-notice-field h5,.redux-notice-field h6{border-bottom:0 !important}.redux-notice-field p{margin:0.5em 0;padding:2px}.redux-notice-field .redux-info-icon{display:inline-block;margin-right:15px}.redux-notice-field .redux-info-icon i{font-size:2em}.redux-notice-field .redux-info-desc{display:inline-block;vertical-align:top}.redux-notice-field.redux-info{border-left:4px solid #0099d5}.redux-notice-field.redux-success{border-left:4px solid #7ad03a}.redux-notice-field.redux-warning{border-left:4px solid #fbeba4}.redux-notice-field.redux-critical{border-left:4px solid #dd3d36}.redux-main .redux-field-container.redux-container-info{padding:0}.wp-customizer .hasIcon.redux-notice-field .redux-info-desc,.wp-customizer .hasIcon.redux-info-field .redux-info-desc{display:block;margin-left:43px}.wp-customizer .hasIcon.redux-notice-field .redux-info-icon,.wp-customizer .hasIcon.redux-info-field .redux-info-icon{float:left}.wp-customizer .redux-main .customize-control.customize-control-redux-info{border-bottom:0}.redux-container-multi_text ul.redux-multi-text{margin:0;padding:0}.redux-container-multi_text .redux-multi-text-add{clear:both;margin:5px 0}.redux-container-multi_text a.redux-multi-text-remove.deletion{color:#f00;padding:2px 4px;margin-left:5px}.redux-container-multi_text a.redux-multi-text-remove.deletion:hover{background:#ff0;color:#fff;text-decoration:none}@media screen and (max-width: 782px){.redux-container-multi_text input{clear:both}.redux-container-multi_text .redux-multi-text-remove{margin:0;float:right}}.wp-customizer .redux-container-multi_text .button{float:right}.wp-customizer .redux-container-multi_text .redux-multi-text-remove{float:right;margin-bottom:5px}.wp-customizer .redux-container-multi_text ul.redux-multi-text input{width:100% !important}.redux-container-select_image{margin-top:2px;margin-left:5px;width:100%;margin-bottom:0}.redux-preview-image{max-height:250px;max-width:250px;padding:5px;margin-top:10px;border:1px solid #e3e3e3;background:#f7f7f7;-moz-border-radius:3px;-khtml-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}.redux-container-slider .redux-slider-container{margin-left:25px;margin-right:25px;width:200px;display:inline-block;vertical-align:middle}.redux-container-slider .redux-slider-input,.redux-container-slider .redux-slider-select-one,.redux-container-slider .redux-slider-select-two{width:100px !important;text-align:center}.redux-container-slider .redux-slider-label{position:absolute;margin-left:-5px}.redux-container-slider .redux-slider-label-one{position:absolute;margin-left:-22px}.redux-container-slider .redux-slider-label-two{position:absolute;margin-top:-21px;margin-left:245px}@media screen and (max-width: 782px){.redux-container-slider input{display:inline-block !important}}@media screen and (max-width: 570px){.redux-container-slider{text-align:center}.redux-container-slider input,.redux-container-slider select,.redux-container-slider .redux-slider-label,.redux-container-slider .select2-container{display:block !important;position:inherit;margin:10px auto}.redux-container-slider .redux-slider-container{margin-top:3px;width:80%}}.wp-customizer .redux-container-slider .redux-slider-label{float:left;position:inherit;width:25%;text-align:center;margin-left:0}.wp-customizer .redux-container-slider .redux-slider-input,.wp-customizer .redux-container-slider .redux-slider-select-one,.wp-customizer .redux-container-slider .redux-slider-select-two{width:25% !important}.wp-customizer .redux-container-slider .redux-slider-container{width:70%;margin-right:0;margin-left:5%}.redux-container-slides .redux-slides-list .select2-container{margin-bottom:10px;width:100%}.redux-container-slides .ui-accordion-header{margin-bottom:0}.redux-container-slides .full-text,.redux-container-slides .large-text{width:100%}.redux-container-slides .redux-slides-accordion-group{border:1px solid #dfdfdf !important;border-radius:3px !important;margin-top:0px !important;margin-bottom:10px;background:#f9f9f9;padding:5px}.redux-container-slides .redux-slides-accordion-group h3{border:1px solid #dfdfdf;cursor:move !important;font-weight:bold;padding:0 10px !important;height:40px;line-height:40px !important;background-color:#f1f1f1;background-image:-ms-linear-gradient(top, #f9f9f9, #ececec);background-image:-moz-linear-gradient(top, #f9f9f9, #ececec);background-image:-o-linear-gradient(top, #f9f9f9, #ececec);background-image:-webkit-gradient(linear, left top, left bottom, from(#f9f9f9), to(#ececec));background-image:-webkit-linear-gradient(top, #f9f9f9, #ececec);background-image:linear-gradient(to bottom, #f9f9f9, #ececec);overflow:hidden;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-moz-box-shadow:inset 0 1px 0 #fff;-webkit-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff;text-align:center}.redux-container-slides #redux-slides-accordion .redux-slides-image{height:250px;padding:5px;margin-top:10px;margin-bottom:10px;border:1px solid #e3e3e3;background:#f7f7f7;-moz-border-radius:3px;-khtml-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}.redux-container-slides .redux-slides-add{float:right;margin-right:10%;display:block;margin-bottom:10px}.redux-container-slides .redux-slides-remove{color:#ef521d !important;float:right;margin-top:5px}.redux-container-slides .redux-slides-header{font-weight:bold}.redux-container-slides .redux_slides_add_remove{margin-bottom:10px}.redux-container-slides input{width:100% !important}.wp-customizer .redux-container-slides .ui-accordion .ui-accordion-content{padding:10px}.redux-container-sortable i.el,.redux-container-sortable i.dashicons-menu{cursor:move;padding-top:5px}.redux-container-sortable label{margin-right:10px}.redux-container-sortable label.bugger{margin-bottom:0px !important;font-size:12px !important;color:#999}.redux-container-sortable input{margin-right:10px}.redux-container-sortable .checkbox-container{width:100%}.redux-container-sortable .checkbox-container label{margin-bottom:2px !important;cursor:inherit}.redux-container-sortable .checkbox-container .drag{float:right;margin-left:10px}.redux-container-sortable ul.checkbox li{padding:5px 10px;border:1px solid #333;background:#fff;margin-bottom:5px !important}.redux-container-sortable ul.checkbox li .dashicons.visibility{padding-top:4px;margin-right:10px;cursor:pointer}.redux-container-sortable ul.checkbox li.invisible{color:#aaa;border:1px dashed #aaa}.redux-container-sortable ul.checkbox li.invisible .dashicons.visibility{color:#aaa}.redux-container-sortable ul.labeled li{line-height:1.4em !important}.redux-container-sortable li{line-height:30px !important}.redux-container-sortable li.ui-state-highlight{height:30px;width:364px;margin-bottom:13px}.redux-container-sortable li.placeholder{height:30px;margin:10px 0}.wp-customizer .redux-sortable input[type=\"text\"]{width:92%}.wp-customizer .redux-sortable i.el{margin-left:5px}.wp-customizer .redux-container-sortable .checkbox-container{width:inherit}.wp-customizer .redux-container-sortable .ui-draggable-handle{margin-left:3%}.redux-container-sorter{margin-right:-20px}.redux-container-sorter ul{background:#f9f9f9;border:1px solid #e3e3e3;min-height:40px;padding:10px 10px 0;width:145px;float:left;margin:0 15px 0 0}.redux-container-sorter ul.filled{opacity:0.7;filter:alpha(opacity=70);background:#efecec}.redux-container-sorter ul li{border:1px solid #dfdfdf;cursor:move;font-weight:bold;margin-bottom:10px !important;padding:0 10px;height:40px;line-height:40px !important;background-color:#f1f1f1;background-image:-ms-linear-gradient(top, #f9f9f9, #ececec);background-image:-moz-linear-gradient(top, #f9f9f9, #ececec);background-image:-o-linear-gradient(top, #f9f9f9, #ececec);background-image:-webkit-gradient(linear, left top, left bottom, from(#f9f9f9), to(#ececec));background-image:-webkit-linear-gradient(top, #f9f9f9, #ececec);background-image:linear-gradient(to bottom, #f9f9f9, #ececec);overflow:hidden;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-moz-box-shadow:inset 0 1px 0 #fff;-webkit-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff;text-align:center}.redux-container-sorter ul li h3{margin:0 0 10px;text-align:center;color:#777;text-transform:capitalize;word-wrap:break-word}.redux-container-sorter ul li.placeholder{height:40px}.wp-customizer .redux-container-sorter ul{width:85%;margin:0 0 5px 0}.redux-container-select li.ui-state-highlight{height:20px;margin-top:2px;margin-left:5px;width:64px;margin-bottom:0}.select2-search__field{width:none !important}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove,.select2-container--classic .select2-selection--single .select2-selection__clear{font-size:1.2em}.redux-container-spinner .spinner-wrpr{position:relative;display:block;height:30px;overflow:hidden}.redux-container-spinner .spinner-wrpr .spinner-input{position:relative !important;z-index:1;width:75px !important;height:30px !important;background:#eee !important;border:1px solid #bfbfbf !important;border-right:0 !important;border-left:0 !important;-webkit-border-radius:0 !important;-moz-border-radius:0 !important;border-radius:0 !important}.redux-container-spinner .ui-spinner{position:static;display:inline}.redux-container-spinner .ui-spinner-buttons{position:absolute;padding:0}.redux-container-spinner .ui-widget .ui-spinner-button{color:#fff;position:absolute;top:0;padding:0 0 30px;overflow:hidden;cursor:pointer;background:-moz-linear-gradient(#fff, #f3f3f3);background:-o-linear-gradient(#fff, #f3f3f3);background:-webkit-gradient(linear, left top, left bottom, from(#fff), to(#f3f3f3));background:linear-gradient(#fff, #f3f3f3);background-color:#fff;border:none;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.redux-container-spinner .ui-spinner-button:hover,.redux-container-spinner .ui-state-hover{background:-moz-linear-gradient(#f3f3f3, #fff);background:-o-linear-gradient(#f3f3f3, #fff);background:-webkit-gradient(linear, left top, left bottom, from(#f3f3f3), to(#fff));background:linear-gradient(#f3f3f3, #fff);background-color:#f3f3f3}.redux-container-spinner .ui-corner-tr,.redux-container-spinner .ui-spinner-button .ui-icon-triangle-1-n{-webkit-border-radius:0 5px 5px 0;-moz-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0}.redux-container-spinner .ui-corner-br,.redux-container-spinner .ui-spinner-button .ui-icon-triangle-1-s{-webkit-border-radius:5px 0 0 5px;-moz-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px}.redux-container-spinner .ui-spinner-button .ui-icon{top:0;display:block;width:28px;height:28px;margin:0;border:1px solid #b7b7b7;background-image:initial;text-indent:0;text-align:center;font-size:18px;line-height:26px}.dp-numberPicker,.dp-numberPicker-add,.dp-numberPicker-sub,.dp-numberPicker-input{display:inline-block;box-sizing:border-box;-moz-box-sizing:border-box;text-align:center;vertical-align:top;height:30px}.dp-numberPicker{border-radius:3px}.redux-container .redux-container-spinner .dp-numberPicker-add,.redux-container .redux-container-spinner .dp-numberPicker-sub{width:30px;font-size:21px;cursor:pointer;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none;background-color:#33b5e5;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);height:29px !important}.redux-container .redux-container-spinner .dp-numberPicker-add.disabled,.redux-container .redux-container-spinner .dp-numberPicker-sub.disabled{background-color:#2c6a81}.dp-numberPicker-add{border-top-right-radius:3px;border-bottom-right-radius:3px}.dp-numberPicker-sub{border-top-left-radius:3px;border-bottom-left-radius:3px}.dp-numberPicker-input{width:70px;background-color:#eee;border:0;margin:0 !important;box-shadow:inset 0px 1px 1px rgba(255,255,255,0.5),inset 0px -1px 1px rgba(0,0,0,0.5)}.dp-numberPicker-input:disabled{background-color:#eee}.redux-container-switch .switch-options{min-height:30px;margin-right:10px}.redux-container-switch .switch-options label{cursor:pointer}.redux-container-switch .switch-options input{display:none}.redux-container-switch .cb-enable,.redux-container-switch .cb-disable{padding:0 10px;border-width:1px;border-style:solid;-webkit-appearance:none;white-space:nowrap;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.redux-container-switch .cb-enable span,.redux-container-switch .cb-disable span{line-height:30px;display:block;font-weight:700;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-o-user-select:none;-ms-user-select:none;user-select:none}.redux-container-switch .cb-enable,.redux-container-switch .cb-disable,.redux-container-switch .cb-enable span,.redux-container-switch .cb-disable span{display:block;float:left}.redux-container-switch .cb-enable{border-right:0;border-radius:3px 0px 0px 3px;-moz-border-radius:3px 0px 0px 3px;-webkit-border-radius:3px 0px 0px 3px}.redux-container-switch .cb-enable.selected{color:#fff}.redux-container-switch .cb-disable{border-left:0;border-radius:0px 3px 3px 0px;-moz-border-radius:0px 3px 3px 0px;-webkit-border-radius:0px 3px 3px 0px}.redux-container-switch .cb-disable.selected{color:#fff}.redux-container-text label{display:block;position:relative;font-size:12px !important;text-align:left;color:#999;margin:4px 0 2px 0 !important;cursor:default;top:5px;width:100px}.redux-container-text input{clear:left}.redux-container-text .input_wrapper{display:block;position:relative;padding:0;width:23%;max-width:23%;min-width:70px;float:left;clear:left;height:57px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-o-box-sizing:border-box;box-sizing:border-box;vertical-align:baseline}.wp-customizer .redux-container-text .input_wrapper{width:100%;max-width:100%;height:auto}.redux-main .redux-typography-container{display:block;position:relative;margin:0;padding:0;width:100%;max-width:660px}.redux-main .redux-typography-container .redux-typography-slider{margin-top:11px;width:auto}.redux-main .redux-typography-container .clearfix{clear:both}.redux-main .redux-typography-container .clearfix::after{visibility:hidden;display:block;font-size:0;content:\" \";clear:both;height:0}.redux-main .redux-typography-container input.wp-picker-default,.redux-main .redux-typography-container .redux-typography-color{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-o-box-sizing:border-box;box-sizing:border-box;height:24px;padding:0 14px !important;margin-top:0;margin-bottom:0;font-size:12px !important}.redux-main .redux-typography-container .select_wrapper{display:block;position:relative;float:left;clear:none;margin:0 10px 0 0;width:48% !important;min-width:210px !important;max-width:324px !important;height:57px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-o-box-sizing:border-box;box-sizing:border-box}.redux-main .redux-typography-container .select_wrapper:nth-child(odd){margin-right:10px !important}.redux-main .redux-typography-container .select_wrapper:nth-child(even){margin-right:10px !important}.redux-main .redux-typography-container .select_wrapper.typography-family .select2-container{width:100%}.redux-main .redux-typography-container .select_wrapper .redux-typography{font-size:14px !important;display:block;float:left;height:28px !important;line-height:50px !important;padding:0 !important;width:100% !important;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-o-box-sizing:border-box;box-sizing:border-box}.redux-main .redux-typography-container .wp-picker-container{float:left;clear:left;margin-bottom:12px;padding:3px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.redux-main .redux-typography-container .input_wrapper{display:block;position:relative;margin:0 4px 0 5px;padding:0;width:23%;max-width:23%;min-width:70px;float:left;clear:none;height:57px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-o-box-sizing:border-box;box-sizing:border-box;vertical-align:baseline}.redux-main .redux-typography-container .input_wrapper.margin-top,.redux-main .redux-typography-container .input_wrapper.margin-bottom{margin-left:0px}.redux-main .redux-typography-container .input_wrapper.font-size{margin-left:0}.redux-main .redux-typography-container .input_wrapper input.mini{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-o-box-sizing:border-box;box-sizing:border-box;width:78%;text-align:center;margin:0;height:28px;top:3px;padding:0 2px 0 5px;text-decoration:none;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.redux-main .redux-typography-container .picker-wrapper{display:block;position:relative;margin:0;padding:0;width:100%;min-width:100%;clear:none;height:57px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-o-box-sizing:border-box;box-sizing:border-box;vertical-align:baseline}.redux-main .redux-typography-container label{position:relative;font-size:12px !important;text-align:left;color:#999;width:100%;cursor:default}.redux-main .redux-typography-container .typography-preview{display:none;width:100%;border:1px dotted #d3d3d3;max-width:850px;padding:10px;font-size:10pt;height:auto;margin:5px 0 10px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;overflow:hidden}.redux-main .redux-typography-container .typography-color{border:0 none;margin:0}.redux-main .redux-typography-container ::-webkit-input-placeholder{line-height:19px}@media screen and (max-width: 540px){.redux-main .redux-main .redux-typography-container{max-width:230px;margin:0 auto}.redux-main .redux-main .redux-typography-container .select_wrapper{max-width:210px;min-width:210px;width:210px;margin-left:0 !important;margin-right:0 !important}.redux-main .redux-main .redux-typography-container .input_wrapper{max-width:101px;min-width:101px;width:101px;margin-left:0 !important;margin-right:5px !important}.redux-main .redux-main .redux-typography-container .input_wrapper input.mini{width:73%}.redux-main .redux-main .redux-typography-container .input-append .add-on{width:30%;padding:5px !important}.redux-main .redux-main .redux-main .wp-picker-container .wp-picker-input-wrap{margin-top:7px}}@media screen and (max-width: 360px){.redux-main .redux-typography-container .iris-picker .iris-square{margin-right:3%}}.wp-customizer .redux-typography-container .input_wrapper{width:40%;max-width:40%;min-width:20%}.wp-customizer .redux-typography-container .input_wrapper input.mini{width:70%}.wp-customizer .redux-typography-container .select_wrapper{width:100% !important}.redux-container-spacing select,.redux-container-spacing .select_wrapper{width:80px !important;float:left}.redux-container-spacing .field-spacing-input{margin-right:10px;margin-bottom:7px}@media screen and (max-width: 782px){.redux-container-spacing .field-spacing-input input{display:inline-block !important;width:70px !important}.redux-container-spacing .field-spacing-input .add-on{padding:7px 4px;font-size:16px;line-height:1.5}.redux-container-spacing .select_wrapper{margin-top:6px}}.redux-main .form-table-section-indented{width:95%;margin-left:5% !important}.redux-main .form-table-section tr:first-of-type th:first-of-type{padding:0px !important}.redux-main h3{margin-top:10px}.redux-main .form-table-section-indented>tbody>tr:first-child{display:none}.redux-main .form-table-section-indented>tbody>tr:nth-last-child(2){border-bottom:0}.wp-customizer .redux-container{overflow:visible}.wp-customizer .redux-container .redux-main input{margin:0 !important}.wp-customizer .redux-container .redux-main input.spinner-input{margin-right:30px !important;margin-left:30px !important;margin-top:0px !important}.wp-customizer .redux-container .redux-main .redux-container-editor .wp-editor-area{color:#000000}.wp-customizer .redux-section.open .redux-group-tab{display:block !important}.wp-customizer .redux-section p.customize-section-description{margin-top:22px;word-break:break-word}.wp-customizer .redux-section p.customize-section-description.legacy{margin-top:7px}.wp-customizer .control-section-themes .accordion-section-title{margin:0}.wp-customizer #customize-controls .description{display:block}.wp-customizer #customize-controls .customize-info{margin-bottom:0}.wp-customizer #customize-controls .redux-section .accordion-section-content{background:#fcfcfc}.wp-customizer .redux-section .accordion-section-title i,.wp-customizer .redux-field .accordion-field-title i,.wp-customizer .redux-panel .accordion-section-title i{margin-right:5px}.wp-customizer .accordion-section.redux-main{background:inherit;margin-left:inherit;border-left:inherit;-moz-box-shadow:inherit;-webkit-box-shadow:inherit;padding:inherit;box-shadow:inherit}.wp-customizer .redux_field_th{padding:13px 0px 0px 0px}.wp-customizer .redux-main .redux-field-container{padding:10px 0}.wp-customizer .redux-main .select_wrapper{float:none;width:100%;display:inline-block}.wp-customizer .redux-main .select2-container{margin-right:0 !important;margin-bottom:5px !important;width:100% !important}.wp-customizer .redux-main .select_wrapper:nth-child(odd){margin-right:0}.wp-customizer .redux-main .redux-option-image{max-width:42% !important;margin-right:3%}.wp-customizer .redux-main .customize-control{border-bottom:1px solid #ddd;padding-bottom:4px}.wp-customizer .redux-main .customize-control:last-child{border-bottom:0;padding-bottom:0}.wp-customizer .redux-main .upload{width:100% !important}.wp-customizer .redux-main h3{margin-top:inherit}.wp-customizer .redux-main .redux-container-raw{margin-top:22px;word-break:break-word;padding:0 !important}.wp-customizer .redux-main .redux-container-password input{width:100%}.wp-customizer .select2-drop,.wp-customizer .select2-container{z-index:999999}.wp-customizer .customize-control-redux-raw{list-style:none}.redux-container-import_export #redux-import-link-wrapper,.redux-container-import_export #redux-import-code-wrapper{display:none}.redux-container-import_export #redux-export-code,.redux-container-import_export #redux-export-link-value,.redux-container-import_export #redux-import-upload-file{display:none}.redux-container-import_export #redux-import-action span{color:#b94a48}.redux-container-import_export #redux-import-upload span{font-weight:bold}#redux-object-browser{overflow:auto;word-wrap:break-word;max-height:600px;max-width:100%}\n"]}
1
+ {"version":3,"sources":["redux-fields.min.css"],"names":[],"mappings":"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","file":"redux-fields.min.css","sourcesContent":[".redux-container-ace_editor .ace-wrapper{position:static}.redux-container-ace_editor .ace_editor{height:200px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.redux-container-ace_editor .ace_gutter{z-index:1 !important}.redux-main .redux-container-background .redux-background-position,.redux-main .redux-container-background .redux-background-position select,.redux-main .redux-container-background .redux-background-attachment,.redux-main .redux-container-background .redux-background-attachment select,.redux-main .redux-container-background .redux-background-clip,.redux-main .redux-container-background .redux-background-clip select,.redux-main .redux-container-background .redux-background-origin,.redux-main .redux-container-background .redux-background-origin select,.redux-main .redux-container-background .redux-background-size,.redux-main .redux-container-background .redux-background-size select,.redux-main .redux-container-background .redux-background-repeat,.redux-main .redux-container-background .redux-background-repeat select{width:200px !important;margin-right:10px;margin-bottom:7px}.redux-main .redux-container-background .background-preview{display:block;width:100%;margin:5px 0 10px;border:1px dotted #d3d3d3}.redux-main .redux-container-background .select2-container{margin-right:10px;margin-bottom:10px}.redux-main .redux-container-background .wp-picker-container{margin-bottom:10px}.redux-main .redux-container-background .upload{width:100%;margin-bottom:8px}.redux-main .redux-container-select li.ui-state-highlight{height:20px;margin-top:2px;margin-left:5px;width:64px;margin-bottom:0}.wp-customizer .redux-container-background .redux-background-position,.wp-customizer .redux-container-background .redux-background-position select,.wp-customizer .redux-container-background .redux-background-attachment,.wp-customizer .redux-container-background .redux-background-attachment select,.wp-customizer .redux-container-background .redux-background-clip,.wp-customizer .redux-container-background .redux-background-clip select,.wp-customizer .redux-container-background .redux-background-origin,.wp-customizer .redux-container-background .redux-background-origin select,.wp-customizer .redux-container-background .redux-background-size,.wp-customizer .redux-container-background .redux-background-size select,.wp-customizer .redux-container-background .redux-background-repeat,.wp-customizer .redux-container-background .redux-background-repeat select{width:100% !important}.redux-container-border .select2-container{float:left;display:block;margin-right:10px}.redux-container-border .select_wrapper{float:left;width:inherit}.redux-container-border .select_wrapper select{width:80px;float:left}.redux-container-border .field-border-input{margin-right:10px;margin-bottom:7px}@media screen and (max-width: 782px){.redux-container-border .field-border-input input{display:inline-block !important;width:100px !important}.redux-container-border .field-border-input .add-on{padding:7px 4px;font-size:16px;line-height:1.5}.redux-container-border .select_wrapper{margin-top:6px}}.redux-main .redux-container-box_shadow .box-shadow-inset{margin:0 auto}.redux-main .redux-container-box_shadow .box-shadow-inset #shadow-result{padding:20px;margin-bottom:20px;margin-top:20px;min-height:180px;border:0px solid #ddd;background:#f1f1f1;transition:all 0.2s ease}.redux-main .redux-container-box_shadow .box-shadow-inset .row-content:after,.redux-main .redux-container-box_shadow .box-shadow-inset .row:after{clear:both;content:\" \";display:block;height:0;visibility:hidden}.redux-main .redux-container-box_shadow .box-shadow-inset .row .col-2{width:50%;float:left;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.redux-main .redux-container-box_shadow .box-shadow-inset .row .col-2.disabled label strong{color:#cccccc}.redux-main .redux-container-box_shadow .box-shadow-inset .row .col-2 label{color:#999999}.redux-main .redux-container-box_shadow .box-shadow-inset .row .col-2 .wp-picker-container.disabled{pointer-events:none;opacity:0.4;z-index:200;background:0;padding:0 !important}.redux-main .redux-container-box_shadow .box-shadow-inset .row .col-2 .wp-picker-container.disabled button{background-color:#888}.redux-main .redux-container-box_shadow .box-shadow-inset .row .col-2 .wp-picker-container.disabled a{z-index:-1}.redux-main .redux-container-box_shadow .box-shadow-inset .row .col-2 ul li{padding-bottom:10px}.redux-main .redux-container-box_shadow .box-shadow-inset .row .col-2:first-child{padding-right:20px}.redux-main .redux-container-box_shadow .box-shadow-inset .row .col-2:last-child{padding-left:20px}.redux-container-checkbox label{vertical-align:top;width:100%}.redux-container-checkbox label .field-desc{margin-top:0;float:left;width:93%;clear:none}.redux-container-color_gradient .redux-gradient-preview{height:150px;margin-top:10px;border-radius:4px}.redux-container-color_gradient .colorGradient,.redux-container-color_gradient .redux-gradient-type{display:inline-block;margin-right:20px}.redux-container-color_gradient .colorGradient strong,.redux-container-color_gradient .redux-gradient-type strong{display:table;margin-bottom:5px;margin-left:3px;font-size:12px;color:#999}@media screen and (max-width: 660px){.redux-container-color_gradient .colorGradient{display:block;text-align:center !important}}.redux-main .redux-container-color_palette label{position:relative;display:inline-block;padding:0;margin:0}.redux-main .redux-container-color_palette .colors-wrapper{max-height:300px;overflow-y:auto;padding:10px;display:flex;flex-wrap:wrap}.redux-main .redux-container-color_palette .colors-wrapper .color-palette-color{color:transparent;display:block;width:100%;height:100%;overflow:hidden;border:1px solid rgba(0,0,0,0.2)}.redux-main .redux-container-color_palette .colors-wrapper.round label{padding:3px}.redux-main .redux-container-color_palette .colors-wrapper.round .color-palette-color{border-radius:50%}.redux-main .redux-container-color_palette .colors-wrapper.box-shadow .color-palette-color{box-shadow:inset 3px 3px 13px 2px rgba(0,0,0,0.22)}.redux-main .redux-container-color_palette .colors-wrapper input{display:none}.redux-main .redux-container-color_palette .colors-wrapper input:checked+label .color-palette-color{border:0;width:130%;height:130%;position:relative;left:-15%;top:-15%;z-index:99;box-shadow:1px 1px 6px 1px #333333;border:1px solid rgba(0,0,0,0.3)}.redux-main .redux-container-color_palette .colors-wrapper.with-margin label{margin:3px !important}.sp-container{color:#555;border-color:#ccc;background:#f7f7f7;-webkit-box-shadow:inset 0 1px 0 #fff,0 1px 0 rgba(0,0,0,0.08);box-shadow:inset 0 1px 0 #fff,0 1px 0 rgba(0,0,0,0.08);vertical-align:top}.sp-replacer{color:#555;border-color:#ccc;background:#f7f7f7;-webkit-box-shadow:inset 0 1px 0 #fff,0 1px 0 rgba(0,0,0,0.08);box-shadow:inset 0 1px 0 #fff,0 1px 0 rgba(0,0,0,0.08);vertical-align:top}.sp-replacer:focus,.sp-replacer:hover,.sp-replacer.focus,.sp-replacer.hover{background:#fafafa;border-color:#999;color:#222}.sp-replacer:focus,.sp-replacer.focus{-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,0.8);box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,0.8)}.sp-replacer.active:focus{-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,0.5),0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,0.8);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,0.5),0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,0.8)}.sp-replacer.active,.sp-replacer.active:hover,.sp-replacer:active{background:#eee;border-color:#999;color:#333;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,0.5);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,0.5)}#ui-datepicker-div{z-index:15 !important}.ui-datepicker-header{background-color:#00abef}.redux-dimensions-container select,.redux-dimensions-container .select_wrapper{width:80px !important;float:left}.redux-dimensions-container .field-dimensions-input{margin-right:10px;margin-bottom:7px}@media screen and (max-width: 782px){.redux-dimensions-container .field-dimensions-input input{display:inline-block !important;width:100px !important}.redux-dimensions-container .field-dimensions-input .add-on{padding:7px 4px;font-size:16px;line-height:1.5}.redux-dimensions-container .select_wrapper{margin-top:6px}}.redux-main .divide{height:20px;line-height:20px;float:none;border-color:#e7e7e7;display:block;width:100%;height:35px !important;line-height:35px !important;position:relative;margin:15px 0 10px 0}.redux-main .divide .inner{width:42% !important;left:40% !important;margin-left:-6%;background-color:#fcfcfc;border-color:#e7e7e7;position:absolute;height:1px;top:50%;width:100%;margin-top:-1px;border-top-width:1px;border-top-style:solid}.redux-main .divide .inner span{background-color:#fcfcfc;border-color:#e7e7e7;height:5px;width:5px;border-width:2px;border-style:solid;display:block;position:absolute;left:50%;margin-left:-5px;margin-top:-5px}.wp-customizer .redux-container-divide .divide .inner{width:82% !important;left:18% !important;margin-left:-8%}.redux-container-editor .mceLayout td{border-width:1px;margin:0;padding:1px}.redux-container-editor input,.redux-container-editor textarea{margin:inherit}.redux-container-editor textarea{border-style:none;border:0;border-width:0}.redux-container-editor .wp-editor-container{-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.redux-container-editor .wp-editor-container textarea{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;border-style:inherit}.redux-container-editor .quicktags-toolbar input{margin:2px 1px 4px;display:inline-block;min-width:26px;padding:2px 4px;font:12px/18px Arial, Helvetica, sans-serif normal;color:#464646;border:1px solid #c3c3c3;-webkit-border-radius:3px;border-radius:3px;background:#eee;background-image:-webkit-gradient(linear, left bottom, left top, from(#e3e3e3), to(#fff));background-image:-webkit-linear-gradient(bottom, #e3e3e3, #fff);background-image:-moz-linear-gradient(bottom, #e3e3e3, #fff);background-image:-o-linear-gradient(bottom, #e3e3e3, #fff);background-image:linear-gradient(to top, #e3e3e3, #fff)}.redux-container-image_select .redux-table-container{display:table;table-layout:fixed;width:100%}.redux-container-image_select .redux-image-select{margin:0 !important}.redux-container-image_select .redux-image-select .tiles{display:block;background-color:#fff;background-repeat:repeat;width:40px;height:40px}.redux-container-image_select .redux-image-select img,.redux-container-image_select .redux-image-select .tiles{border-color:#d9d9d9}.redux-container-image_select .redux-image-select li:last-child{margin-bottom:0}.redux-container-image_select .redux-image-select input[type=\"radio\"]{display:none}.redux-container-image_select .redux-image-select-presets img{width:100%}.redux-container-image_select ul.redux-image-select li{margin:0 10px 3px 10px;display:inline-block;padding:2px 2px;padding-left:0}.redux-container-image_select .redux-image-select-selected{background-color:#f9f9f9}.redux-container-image_select .redux-image-select img,.redux-container-image_select .redux-image-select-selected img,.redux-container-image_select .redux-image-select .tiles,.redux-container-image_select .redux-image-select-selected .tiles{border-width:4px;border-style:solid}.redux-container-image_select .redux-image-select-selected .tiles,.redux-container-image_select .redux-image-select-selected .tiles{border-color:#7a7a7a}.redux-info-field{min-height:20px;padding:8px 19px;margin:10px 0;border:1px solid;border-radius:4px;border:1px solid;position:relative}.redux-info-field h1,.redux-info-field h2,.redux-info-field h3,.redux-info-field h4,.redux-info-field h5,.redux-info-field h6{border-bottom:0 !important}.redux-info-field h3{color:#777}.redux-info-field .redux-info-icon{display:inline-block;margin-right:15px}.redux-info-field .redux-info-icon i{font-size:2em}.redux-info-field .redux-info-desc{display:inline-block;vertical-align:top}.redux-info-field.redux-normal{background-color:#eee;border-color:#ccc;color:#666}.redux-info-field.redux-normal i{color:#c5c5c5}.redux-info-field.redux-warning{background-color:#fbeba4;border-color:#d7c281;color:#958234}.redux-info-field.redux-warning i{color:#dcca81}.redux-info-field.redux-success{background-color:#c4ee91;border-color:#71af5d;color:#4d7615}.redux-info-field.redux-success i{color:#a0ca6c}.redux-info-field.redux-critical{background-color:#fba1a3;border-color:#b84f5b;color:#981225}.redux-info-field.redux-critical i{color:#dd767d}.redux-info-field.redux-info{background-color:#d3e4f4;border-color:#a9b6c2;color:#5c80a1}.redux-info-field.redux-info i{color:#afc6da}.redux-notice-field{margin:15px 0 0;background-color:#fff;border:0;border-left:4px solid #f3f3f3;-webkit-box-shadow:0 1px 1px 0 rgba(0,0,0,0.1);box-shadow:0 1px 1px 0 rgba(0,0,0,0.1);padding:1px 12px}.redux-notice-field h1,.redux-notice-field h2,.redux-notice-field h3,.redux-notice-field h4,.redux-notice-field h5,.redux-notice-field h6{border-bottom:0 !important}.redux-notice-field p{margin:0.5em 0;padding:2px}.redux-notice-field .redux-info-icon{display:inline-block;margin-right:15px}.redux-notice-field .redux-info-icon i{font-size:2em}.redux-notice-field .redux-info-desc{display:inline-block;vertical-align:top}.redux-notice-field.redux-info{border-left:4px solid #0099d5}.redux-notice-field.redux-success{border-left:4px solid #7ad03a}.redux-notice-field.redux-warning{border-left:4px solid #fbeba4}.redux-notice-field.redux-critical{border-left:4px solid #dd3d36}.redux-main .redux-field-container.redux-container-info{padding:0}.wp-customizer .hasIcon.redux-notice-field .redux-info-desc,.wp-customizer .hasIcon.redux-info-field .redux-info-desc{display:block;margin-left:43px}.wp-customizer .hasIcon.redux-notice-field .redux-info-icon,.wp-customizer .hasIcon.redux-info-field .redux-info-icon{float:left}.wp-customizer .redux-main .customize-control.customize-control-redux-info{border-bottom:0}.redux-container-link_color .linkColor{display:inline-block;padding-right:10px;padding-bottom:7px}.redux-container-link_color .linkColor strong{display:table;margin-bottom:5px;margin-left:3px;font-size:12px;font-weight:normal;color:#999}.redux-main .redux-media-slider{width:40%;display:inline-block;margin-left:30px}.redux-main .redux-media-filter-container{padding-top:20px}.redux-main .redux-media-filter-container .container-label{margin-bottom:20px;padding-bottom:1px;border-bottom:1px solid #e7e7e7;font-weight:600;font-size:12px;color:#999}.redux-main .redux-media-filter-container .media-filter{display:inline-block;width:47%;margin-bottom:5px}.redux-main .redux-media-filter-container .media-filter label{display:inline-block;width:130px;color:#999}.redux-main .redux-media-filter-container .media-filter label.disabled .filter-value{color:#ccc}.redux-container-palette label{border:3px solid transparent;border-color:transparent !important;border-radius:0;width:100% !important;display:block}.redux-container-palette label.ui-button.ui-widget{width:95%;background:none;padding:0;display:flex}.redux-container-palette label.ui-button.ui-widget .ui-checkboxradio-icon,.redux-container-palette label.ui-button.ui-widget .ui-checkboxradio-icon-space{display:none}.redux-container-palette label.ui-button.ui-widget span{padding:10px;flex-grow:1;font-size:0;line-height:10px;color:rgba(0,0,0,0);-webkit-transition:all 200ms ease-in-out;-moz-transition:all 200ms ease-in-out;-ms-transition:all 200ms ease-in-out;-o-transition:all 200ms ease-in-out;transition:all 200ms ease-in-out;text-shadow:0}.redux-container-palette label.ui-button.ui-widget span:hover{flex-grow:3;font-weight:bold;min-width:60px;font-size:12px;line-height:10px;color:#333;text-shadow:0 0 8px #fff, 0 0 8px #fff}.redux-container-palette label.ui-state-active{border:3px solid #333 !important}.wp-customizer .redux-main .redux-container-palette label{margin-bottom:3px}.redux-container-multi_text ul.redux-multi-text{margin:0;padding:0}.redux-container-multi_text .redux-multi-text-add{clear:both;margin:5px 0}.redux-container-multi_text a.redux-multi-text-remove.deletion{color:#f00;padding:2px 4px;margin-left:5px}.redux-container-multi_text a.redux-multi-text-remove.deletion:hover{background:#ff0;color:#fff;text-decoration:none}@media screen and (max-width: 782px){.redux-container-multi_text input{clear:both}.redux-container-multi_text .redux-multi-text-remove{margin:0;float:right}}.wp-customizer .redux-container-multi_text .button{float:right}.wp-customizer .redux-container-multi_text .redux-multi-text-remove{float:right;margin-bottom:5px}.wp-customizer .redux-container-multi_text ul.redux-multi-text input{width:100% !important}.redux-main .form-table-section-indented{width:95%;margin-left:5% !important}.redux-main .form-table-section tr:first-of-type th:first-of-type{padding:0px !important}.redux-main h3{margin-top:10px}.redux-main .form-table-section-indented>tbody>tr:first-child{display:none}.redux-main .form-table-section-indented>tbody>tr:nth-last-child(2){border-bottom:0}.redux-container-select li.ui-state-highlight{height:20px;margin-top:2px;margin-left:5px;width:64px;margin-bottom:0}.select2-search__field{width:none !important}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove,.select2-container--classic .select2-selection--single .select2-selection__clear{font-size:1.2em}.redux-container-select_image{margin-top:2px;margin-left:5px;width:100%;margin-bottom:0}.redux-preview-image{max-height:250px;max-width:250px;padding:5px;margin-top:10px;border:1px solid #e3e3e3;background:#f7f7f7;-moz-border-radius:3px;-khtml-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}.redux-container-slider .redux-slider-container{margin-left:25px;margin-right:25px;width:200px;display:inline-block;vertical-align:middle}.redux-container-slider .redux-slider-input,.redux-container-slider .redux-slider-select-one,.redux-container-slider .redux-slider-select-two{width:100px !important;text-align:center}.redux-container-slider .redux-slider-label{position:absolute;margin-left:-5px}.redux-container-slider .redux-slider-label-one{position:absolute;margin-left:-22px}.redux-container-slider .redux-slider-label-two{position:absolute;margin-top:-21px;margin-left:245px}@media screen and (max-width: 782px){.redux-container-slider input{display:inline-block !important}}@media screen and (max-width: 570px){.redux-container-slider{text-align:center}.redux-container-slider input,.redux-container-slider select,.redux-container-slider .redux-slider-label,.redux-container-slider .select2-container{display:block !important;position:inherit;margin:10px auto}.redux-container-slider .redux-slider-container{margin-top:3px;width:80%}}.wp-customizer .redux-container-slider .redux-slider-label{float:left;position:inherit;width:25%;text-align:center;margin-left:0}.wp-customizer .redux-container-slider .redux-slider-input,.wp-customizer .redux-container-slider .redux-slider-select-one,.wp-customizer .redux-container-slider .redux-slider-select-two{width:25% !important}.wp-customizer .redux-container-slider .redux-slider-container{width:70%;margin-right:0;margin-left:5%}.redux-container-slides .redux-slides-list .select2-container{margin-bottom:10px;width:100%}.redux-container-slides .ui-accordion-header{margin-bottom:0}.redux-container-slides .full-text,.redux-container-slides .large-text{width:100%}.redux-container-slides .redux-slides-accordion-group{border:1px solid #dfdfdf !important;border-radius:3px !important;margin-top:0px !important;margin-bottom:10px;background:#f9f9f9;padding:5px}.redux-container-slides .redux-slides-accordion-group h3{border:1px solid #dfdfdf;cursor:move !important;font-weight:bold;padding:0 10px !important;height:40px;line-height:40px !important;background-color:#f1f1f1;background-image:-ms-linear-gradient(top, #f9f9f9, #ececec);background-image:-moz-linear-gradient(top, #f9f9f9, #ececec);background-image:-o-linear-gradient(top, #f9f9f9, #ececec);background-image:-webkit-gradient(linear, left top, left bottom, from(#f9f9f9), to(#ececec));background-image:-webkit-linear-gradient(top, #f9f9f9, #ececec);background-image:linear-gradient(to bottom, #f9f9f9, #ececec);overflow:hidden;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-moz-box-shadow:inset 0 1px 0 #fff;-webkit-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff;text-align:center}.redux-container-slides #redux-slides-accordion .redux-slides-image{height:250px;padding:5px;margin-top:10px;margin-bottom:10px;border:1px solid #e3e3e3;background:#f7f7f7;-moz-border-radius:3px;-khtml-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}.redux-container-slides .redux-slides-add{float:right;margin-right:10%;display:block;margin-bottom:10px}.redux-container-slides .redux-slides-remove{color:#ef521d !important;float:right;margin-top:5px}.redux-container-slides .redux-slides-header{font-weight:bold}.redux-container-slides .redux_slides_add_remove{margin-bottom:10px}.redux-container-slides input{width:100% !important}.wp-customizer .redux-container-slides .ui-accordion .ui-accordion-content{padding:10px}.redux-container-sortable i.el,.redux-container-sortable i.dashicons-menu{cursor:move;padding-top:5px}.redux-container-sortable label{margin-right:10px}.redux-container-sortable label.bugger{margin-bottom:0px !important;font-size:12px !important;color:#999}.redux-container-sortable input{margin-right:10px}.redux-container-sortable .checkbox-container{width:100%}.redux-container-sortable .checkbox-container label{margin-bottom:2px !important;cursor:inherit}.redux-container-sortable .checkbox-container .drag{float:right;margin-left:10px}.redux-container-sortable ul.checkbox li{padding:5px 10px;border:1px solid #333;background:#fff;margin-bottom:5px !important}.redux-container-sortable ul.checkbox li .dashicons.visibility{padding-top:4px;margin-right:10px;cursor:pointer}.redux-container-sortable ul.checkbox li.invisible{color:#aaa;border:1px dashed #aaa}.redux-container-sortable ul.checkbox li.invisible .dashicons.visibility{color:#aaa}.redux-container-sortable ul.labeled li{line-height:1.4em !important}.redux-container-sortable li{line-height:30px !important}.redux-container-sortable li.ui-state-highlight{height:30px;width:364px;margin-bottom:13px}.redux-container-sortable li.placeholder{height:30px;margin:10px 0}.wp-customizer .redux-sortable input[type=\"text\"]{width:92%}.wp-customizer .redux-sortable i.el{margin-left:5px}.wp-customizer .redux-container-sortable .checkbox-container{width:inherit}.wp-customizer .redux-container-sortable .ui-draggable-handle{margin-left:3%}.redux-container-sorter{margin-right:-20px}.redux-container-sorter ul{background:#f9f9f9;border:1px solid #e3e3e3;min-height:40px;padding:10px 10px 0;width:145px;float:left;margin:0 15px 0 0}.redux-container-sorter ul.filled{opacity:0.7;filter:alpha(opacity=70);background:#efecec}.redux-container-sorter ul li{border:1px solid #dfdfdf;cursor:move;font-weight:bold;margin-bottom:10px !important;padding:0 10px;height:40px;line-height:40px !important;background-color:#f1f1f1;background-image:-ms-linear-gradient(top, #f9f9f9, #ececec);background-image:-moz-linear-gradient(top, #f9f9f9, #ececec);background-image:-o-linear-gradient(top, #f9f9f9, #ececec);background-image:-webkit-gradient(linear, left top, left bottom, from(#f9f9f9), to(#ececec));background-image:-webkit-linear-gradient(top, #f9f9f9, #ececec);background-image:linear-gradient(to bottom, #f9f9f9, #ececec);overflow:hidden;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-moz-box-shadow:inset 0 1px 0 #fff;-webkit-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff;text-align:center}.redux-container-sorter ul li h3{margin:0 0 10px;text-align:center;color:#777;text-transform:capitalize;word-wrap:break-word}.redux-container-sorter ul li.placeholder{height:40px}.wp-customizer .redux-container-sorter ul{width:85%;margin:0 0 5px 0}.redux-container-spinner .spinner-wrpr{position:relative;display:block;height:30px;overflow:hidden}.redux-container-spinner .spinner-wrpr .spinner-input{position:relative !important;z-index:1;width:75px !important;height:30px !important;background:#eee !important;border:1px solid #bfbfbf !important;border-right:0 !important;border-left:0 !important;-webkit-border-radius:0 !important;-moz-border-radius:0 !important;border-radius:0 !important}.redux-container-spinner .ui-spinner{position:static;display:inline}.redux-container-spinner .ui-spinner-buttons{position:absolute;padding:0}.redux-container-spinner .ui-widget .ui-spinner-button{color:#fff;position:absolute;top:0;padding:0 0 30px;overflow:hidden;cursor:pointer;background:-moz-linear-gradient(#fff, #f3f3f3);background:-o-linear-gradient(#fff, #f3f3f3);background:-webkit-gradient(linear, left top, left bottom, from(#fff), to(#f3f3f3));background:linear-gradient(#fff, #f3f3f3);background-color:#fff;border:none;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.redux-container-spinner .ui-spinner-button:hover,.redux-container-spinner .ui-state-hover{background:-moz-linear-gradient(#f3f3f3, #fff);background:-o-linear-gradient(#f3f3f3, #fff);background:-webkit-gradient(linear, left top, left bottom, from(#f3f3f3), to(#fff));background:linear-gradient(#f3f3f3, #fff);background-color:#f3f3f3}.redux-container-spinner .ui-corner-tr,.redux-container-spinner .ui-spinner-button .ui-icon-triangle-1-n{-webkit-border-radius:0 5px 5px 0;-moz-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0}.redux-container-spinner .ui-corner-br,.redux-container-spinner .ui-spinner-button .ui-icon-triangle-1-s{-webkit-border-radius:5px 0 0 5px;-moz-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px}.redux-container-spinner .ui-spinner-button .ui-icon{top:0;display:block;width:28px;height:28px;margin:0;border:1px solid #b7b7b7;background-image:initial;text-indent:0;text-align:center;font-size:18px;line-height:26px}.dp-numberPicker,.dp-numberPicker-add,.dp-numberPicker-sub,.dp-numberPicker-input{display:inline-block;box-sizing:border-box;-moz-box-sizing:border-box;text-align:center;vertical-align:top;height:30px}.dp-numberPicker{border-radius:3px}.redux-container .redux-container-spinner .dp-numberPicker-add,.redux-container .redux-container-spinner .dp-numberPicker-sub{width:30px;font-size:21px;cursor:pointer;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none;background-color:#33b5e5;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);height:29px !important}.redux-container .redux-container-spinner .dp-numberPicker-add.disabled,.redux-container .redux-container-spinner .dp-numberPicker-sub.disabled{background-color:#2c6a81}.dp-numberPicker-add{border-top-right-radius:3px;border-bottom-right-radius:3px}.dp-numberPicker-sub{border-top-left-radius:3px;border-bottom-left-radius:3px}.dp-numberPicker-input{width:70px;background-color:#eee;border:0;margin:0 !important;box-shadow:inset 0px 1px 1px rgba(255,255,255,0.5),inset 0px -1px 1px rgba(0,0,0,0.5)}.dp-numberPicker-input:disabled{background-color:#eee}.redux-container-spacing select,.redux-container-spacing .select_wrapper{width:80px !important;float:left}.redux-container-spacing .field-spacing-input{margin-right:10px;margin-bottom:7px}@media screen and (max-width: 782px){.redux-container-spacing .field-spacing-input input{display:inline-block !important;width:70px !important}.redux-container-spacing .field-spacing-input .add-on{padding:7px 4px;font-size:16px;line-height:1.5}.redux-container-spacing .select_wrapper{margin-top:6px}}.redux-container-switch .switch-options{min-height:30px;margin-right:10px}.redux-container-switch .switch-options label{cursor:pointer}.redux-container-switch .switch-options input{display:none}.redux-container-switch .cb-enable,.redux-container-switch .cb-disable{padding:0 10px;border-width:1px;border-style:solid;-webkit-appearance:none;white-space:nowrap;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.redux-container-switch .cb-enable span,.redux-container-switch .cb-disable span{line-height:30px;display:block;font-weight:700;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-o-user-select:none;-ms-user-select:none;user-select:none}.redux-container-switch .cb-enable,.redux-container-switch .cb-disable,.redux-container-switch .cb-enable span,.redux-container-switch .cb-disable span{display:block;float:left}.redux-container-switch .cb-enable{border-right:0;border-radius:3px 0px 0px 3px;-moz-border-radius:3px 0px 0px 3px;-webkit-border-radius:3px 0px 0px 3px}.redux-container-switch .cb-enable.selected{color:#fff}.redux-container-switch .cb-disable{border-left:0;border-radius:0px 3px 3px 0px;-moz-border-radius:0px 3px 3px 0px;-webkit-border-radius:0px 3px 3px 0px}.redux-container-switch .cb-disable.selected{color:#fff}.redux-container-text label{display:block;position:relative;font-size:12px !important;text-align:left;color:#999;margin:4px 0 2px 0 !important;cursor:default;top:5px;width:100px}.redux-container-text input{clear:left}.redux-container-text .input_wrapper{display:block;position:relative;padding:0;width:23%;max-width:23%;min-width:70px;float:left;clear:left;height:57px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-o-box-sizing:border-box;box-sizing:border-box;vertical-align:baseline}.wp-customizer .redux-container-text .input_wrapper{width:100%;max-width:100%;height:auto}.redux-main .redux-typography-container{display:block;position:relative;margin:0;padding:0;width:100%;max-width:660px}.redux-main .redux-typography-container .redux-typography-slider{margin-top:11px;width:auto}.redux-main .redux-typography-container .clearfix{clear:both}.redux-main .redux-typography-container .clearfix::after{visibility:hidden;display:block;font-size:0;content:\" \";clear:both;height:0}.redux-main .redux-typography-container input.wp-picker-default,.redux-main .redux-typography-container .redux-typography-color{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-o-box-sizing:border-box;box-sizing:border-box;height:24px;padding:0 14px !important;margin-top:0;margin-bottom:0;font-size:12px !important}.redux-main .redux-typography-container .select_wrapper{display:block;position:relative;float:left;clear:none;margin:0 10px 0 0;width:48% !important;min-width:210px !important;max-width:324px !important;height:57px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-o-box-sizing:border-box;box-sizing:border-box}.redux-main .redux-typography-container .select_wrapper:nth-child(odd){margin-right:10px !important}.redux-main .redux-typography-container .select_wrapper:nth-child(even){margin-right:10px !important}.redux-main .redux-typography-container .select_wrapper.typography-family .select2-container{width:100%}.redux-main .redux-typography-container .select_wrapper .redux-typography{font-size:14px !important;display:block;float:left;height:28px !important;line-height:50px !important;padding:0 !important;width:100% !important;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-o-box-sizing:border-box;box-sizing:border-box}.redux-main .redux-typography-container .wp-picker-container{float:left;clear:left;margin-bottom:12px;padding:3px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.redux-main .redux-typography-container .input_wrapper{display:block;position:relative;margin:0 4px 0 5px;padding:0;width:23%;max-width:23%;min-width:70px;float:left;clear:none;height:57px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-o-box-sizing:border-box;box-sizing:border-box;vertical-align:baseline}.redux-main .redux-typography-container .input_wrapper.margin-top,.redux-main .redux-typography-container .input_wrapper.margin-bottom{margin-left:0px}.redux-main .redux-typography-container .input_wrapper.font-size{margin-left:0}.redux-main .redux-typography-container .input_wrapper input.mini{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-o-box-sizing:border-box;box-sizing:border-box;width:78%;text-align:center;margin:0;height:28px;top:3px;padding:0 2px 0 5px;text-decoration:none;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.redux-main .redux-typography-container .picker-wrapper{display:block;position:relative;margin:0;padding:0;width:100%;min-width:100%;clear:none;height:57px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-o-box-sizing:border-box;box-sizing:border-box;vertical-align:baseline}.redux-main .redux-typography-container label{position:relative;font-size:12px !important;text-align:left;color:#999;width:100%;cursor:default}.redux-main .redux-typography-container .typography-preview{display:none;width:100%;border:1px dotted #d3d3d3;max-width:850px;padding:10px;font-size:10pt;height:auto;margin:5px 0 10px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;overflow:hidden}.redux-main .redux-typography-container .typography-color{border:0 none;margin:0}.redux-main .redux-typography-container ::-webkit-input-placeholder{line-height:19px}@media screen and (max-width: 540px){.redux-main .redux-main .redux-typography-container{max-width:230px;margin:0 auto}.redux-main .redux-main .redux-typography-container .select_wrapper{max-width:210px;min-width:210px;width:210px;margin-left:0 !important;margin-right:0 !important}.redux-main .redux-main .redux-typography-container .input_wrapper{max-width:101px;min-width:101px;width:101px;margin-left:0 !important;margin-right:5px !important}.redux-main .redux-main .redux-typography-container .input_wrapper input.mini{width:73%}.redux-main .redux-main .redux-typography-container .input-append .add-on{width:30%;padding:5px !important}.redux-main .redux-main .redux-main .wp-picker-container .wp-picker-input-wrap{margin-top:7px}}@media screen and (max-width: 360px){.redux-main .redux-typography-container .iris-picker .iris-square{margin-right:3%}}.wp-customizer .redux-typography-container .input_wrapper{width:40%;max-width:40%;min-width:20%}.wp-customizer .redux-typography-container .input_wrapper input.mini{width:70%}.wp-customizer .redux-typography-container .select_wrapper{width:100% !important}.wp-customizer .redux-container{overflow:visible}.wp-customizer .redux-container .redux-main input{margin:0 !important}.wp-customizer .redux-container .redux-main input.spinner-input{margin-right:30px !important;margin-left:30px !important;margin-top:0px !important}.wp-customizer .redux-container .redux-main .redux-container-editor .wp-editor-area{color:#000000}.wp-customizer .redux-section.open .redux-group-tab{display:block !important}.wp-customizer .redux-section p.customize-section-description{margin-top:22px;word-break:break-word}.wp-customizer .redux-section p.customize-section-description.legacy{margin-top:7px}.wp-customizer .control-section-themes .accordion-section-title{margin:0}.wp-customizer #customize-controls .description{display:block}.wp-customizer #customize-controls .customize-info{margin-bottom:0}.wp-customizer #customize-controls .redux-section .accordion-section-content{background:#fcfcfc}.wp-customizer .redux-section .accordion-section-title i,.wp-customizer .redux-field .accordion-field-title i,.wp-customizer .redux-panel .accordion-section-title i{margin-right:5px}.wp-customizer .accordion-section.redux-main{background:inherit;margin-left:inherit;border-left:inherit;-moz-box-shadow:inherit;-webkit-box-shadow:inherit;padding:inherit;box-shadow:inherit}.wp-customizer .redux_field_th{padding:13px 0px 0px 0px}.wp-customizer .redux-main .redux-field-container{padding:10px 0}.wp-customizer .redux-main .select_wrapper{float:none;width:100%;display:inline-block}.wp-customizer .redux-main .select2-container{margin-right:0 !important;margin-bottom:5px !important;width:100% !important}.wp-customizer .redux-main .select_wrapper:nth-child(odd){margin-right:0}.wp-customizer .redux-main .redux-option-image{max-width:42% !important;margin-right:3%}.wp-customizer .redux-main .customize-control{border-bottom:1px solid #ddd;padding-bottom:4px}.wp-customizer .redux-main .customize-control:last-child{border-bottom:0;padding-bottom:0}.wp-customizer .redux-main .upload{width:100% !important}.wp-customizer .redux-main h3{margin-top:inherit}.wp-customizer .redux-main .redux-container-raw{margin-top:22px;word-break:break-word;padding:0 !important}.wp-customizer .redux-main .redux-container-password input{width:100%}.wp-customizer .select2-drop,.wp-customizer .select2-container{z-index:999999}.wp-customizer .customize-control-redux-raw{list-style:none}.redux-container-import_export #redux-import-link-wrapper,.redux-container-import_export #redux-import-code-wrapper{display:none}.redux-container-import_export #redux-export-code,.redux-container-import_export #redux-export-link-value,.redux-container-import_export #redux-import-upload-file{display:none}.redux-container-import_export #redux-import-action span{color:#b94a48}.redux-container-import_export #redux-import-upload span{font-weight:bold}#redux-object-browser{overflow:auto;word-wrap:break-word;max-height:600px;max-width:100%}\n"]}
redux-core/assets/css/vendor.css CHANGED
@@ -891,6 +891,82 @@
891
  .select2-container--classic.select2-container--open .select2-dropdown { border-color: #5897fb; }
892
 
893
  /*! jQuery UI Bootstrap (0.5) http://addyosmani.github.com/jquery-ui-bootstrap Copyright 2012 - 2013, Addy Osmani Dual licensed under the MIT or GPL Version 2 licenses. Portions copyright jQuery UI & Twitter Bootstrap */
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
894
  .redux-container, .control-section-redux, .control-panel-redux, .redux-metabox { /* Interaction Cues
895
  ----------------------------------*/ /* Icons ----------------------------------*/ /* states and images */ /* Misc visuals ----------------------------------*/ /* jQuery UI CSS Framework 1.10.0 Copyright 2013, AUTHORS.txt (http://jqueryui.com/about) Dual licensed under the MIT or GPL Version 2 licenses. http://jquery.org/license To view and modify this theme, visit http://jqueryui.com/themeroller/ */ /* Component containers ----------------------------------*/ /* Interaction states ----------------------------------*/ /* Interaction Cues ----------------------------------*/ /* For IE8 - See #6059 */ /* Icons ----------------------------------*/ /* states and images */ /* positioning */ /* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */ /* Misc visuals ----------------------------------*/ /* Corner radius */ /* Overlays */ /* jQuery UI Accordion 1.10.0 Copyright 2013, AUTHORS.txt (http://jqueryui.com/about) Dual licensed under the MIT or GPL Version 2 licenses. http://jquery.org/license http://jqueryui.com/accordion/ */ /* IE/Win - Fix animation bug - #4615 */ /* jQuery UI Button 1.10.0 Copyright 2013, AUTHORS.txt (http://jqueryui.com/about) Dual licensed under the MIT or GPL Version 2 licenses. http://jquery.org/license http://docs.jquery.com/UI/Button#theming */ /* the overflow property removes extra width in IE */ /* to make room for the icon, a width needs to be set here */ /* button elements seem to need a little more width */ /*button text element */ /* no icon support for input elements, provide padding by default */ /* input.ui-button { padding: .4em 1em; } */ /*button icon element(s) */ /*button sets*/ /* workarounds */ /* reset extra padding in Firefox */ /* jQuery UI Datepicker 1.9.0 Copyright 2012-10-11, AUTHORS.txt (http://jqueryui.com/about) Dual licensed under the MIT or GPL Version 2 licenses. http://jquery.org/license http://jqueryui.com/datepicker/ */ /* with multiple calendars */ /* RTL support */ /* IE6 IFRAME FIX (taken from datepicker 1.5.3 */ }
896
 
@@ -1924,6 +2000,6 @@ See http://bgrins.github.io/spectrum/themes/ for instructions.
1924
  /* Blocked state; */
1925
  .noUi-state-blocked.noUi-connect, .noUi-state-blocked .noUi-connect { background: #4fdacf; }
1926
 
1927
- /*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVuZG9yLmNzcyIsInNvdXJjZXMiOlsidmVuZG9yLnNjc3MiLCJlbHVzaXZlLWljb25zL2VsdXNpdmUtaWNvbnMuc2NzcyIsInNlbGVjdDIvc2VsZWN0Mi5zY3NzIiwic2VsZWN0Mi9jb3JlLnNjc3MiLCJzZWxlY3QyL19zaW5nbGUuc2NzcyIsInNlbGVjdDIvX211bHRpcGxlLnNjc3MiLCJzZWxlY3QyL19kcm9wZG93bi5zY3NzIiwic2VsZWN0Mi90aGVtZS9kZWZhdWx0L2xheW91dC5zY3NzIiwic2VsZWN0Mi90aGVtZS9kZWZhdWx0L19zaW5nbGUuc2NzcyIsInNlbGVjdDIvdGhlbWUvZGVmYXVsdC9fbXVsdGlwbGUuc2NzcyIsInNlbGVjdDIvdGhlbWUvY2xhc3NpYy9sYXlvdXQuc2NzcyIsInNlbGVjdDIvdGhlbWUvY2xhc3NpYy9fZGVmYXVsdHMuc2NzcyIsInNlbGVjdDIvbWl4aW5zL19ncmFkaWVudHMuc2NzcyIsInNlbGVjdDIvdGhlbWUvY2xhc3NpYy9fc2luZ2xlLnNjc3MiLCJzZWxlY3QyL3RoZW1lL2NsYXNzaWMvX211bHRpcGxlLnNjc3MiLCJqcXVlcnktdWktMS4xMC4wLmN1c3RvbS5zY3NzIiwicXRpcC5zY3NzIiwic3BlY3RydW0uc2NzcyIsIm5vdWlzbGlkZXIuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FDQUEseUtBR0c7QUFDSCxVQUFVLEdBQ04sV0FBVyxFQUFFLGVBQWUsRUFDNUIsR0FBRyxFQUFFLG1EQUFtRCxFQUN4RCxHQUFHLEVBQUUsMERBQTBELENBQUMsMkJBQTJCLEVBQUUsb0RBQW9ELENBQUMsY0FBYyxFQUFFLG1EQUFtRCxDQUFDLGtCQUFrQixFQUFFLHVFQUF1RSxDQUFDLGFBQWEsRUFDL1QsV0FBVyxFQUFFLE1BQU0sRUFDbkIsVUFBVSxFQUFFLE1BQU07O0FBR3RCLEFBQUEsR0FBRyxDQUFDLEVBQ0EsT0FBTyxFQUFFLFlBQVksRUFDckIsSUFBSSxFQUFFLDJDQUEyQyxFQUNqRCxTQUFTLEVBQUUsT0FB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QUFBLGVBQWUsQUFBQSxRQUFRLEVBQ3ZCLFVBQVUsQUFBQSxRQUFRLENBQUMsRUFDZixPQUFPLEVBQUUsSUFBSSxHQUNoQjs7QUFFRCxBQUFBLGVBQWUsQUFBQSxRQUFRLEVBQ3ZCLFVBQVUsQUFBQSxRQUFRLENBQUMsRUFDZixPQUFPLEVBQUUsSUFBSSxHQUNoQjs7QUFFRCxBQUFBLFlBQVksQUFBQSxRQUFRLEVBQ3BCLE9BQU8sQUFBQSxRQUFRLENBQUMsRUFDWixPQUFPLEVBQUUsSUFBSSxHQUNoQjs7QUFFRCxBQUFBLGFBQWEsQUFBQSxRQUFRLEVBQ3JCLFFBQVEsQUFBQSxRQUFRLENBQUMsRUFDYixPQUFPLEVBQUUsSUFBSSxHQUNoQjs7QUFFRCxBQUFBLGVBQWUsQUFBQSxRQUFRLEVBQ3ZCLFVBQVUsQUFBQSxRQUFRLENBQUMsRUFDZixPQUFPLEVBQUUsSUFBSSxHQUNoQjs7QUFFRCxBQUFBLGtCQUFrQixBQUFBLFFBQVEsRUFDMUIsYUFBYSxBQUFBLFFBQVEsQ0FBQyxFQUNsQixPQUFPLEVBQUUsSUFBSSxHQUNoQjs7QUFFRCxBQUFBLG1CQUFtQixBQUFBLFFBQVEsRUFDM0IsY0FBYyxBQUFBLFFBQVEsQ0FBQyxFQUNuQixPQUFPLEVBQUUsSUFBSSxHQUNoQjs7QUFFRCxBQUFBLGNBQWMsQUFBQSxRQUFRLEVBQ3RCLFNBQVMsQUFBQSxRQUFRLENBQUMsRUFDZCxPQUFPLEVBQUUsSUFBSSxHQUNoQjs7QUFFRCxBQUFBLGtCQUFrQixBQUFBLFFBQVEsRUFDMUIsYUFBYSxBQUFBLFFBQVEsQ0FBQyxFQUNsQixPQUFPLEVBQUUsSUFBSSxHQUNoQjs7QUFFRCxBQUFBLGNBQWMsQUFBQSxRQUFRLEVBQ3RCLFNBQVMsQUFBQSxRQUFRLENBQUMsRUFDZCxPQUFPLEVBQUUsSUFBSSxHQUNoQjs7QUFFRCxBQUFBLGtCQUFrQixBQUFBLFFBQVEsRUFDMUIsYUFBYSxBQUFBLFFBQVEsQ0FBQyxFQUNsQixPQUFPLEVBQUUsSUFBSSxHQUNoQjs7QUFFRCxBQUFBLG9CQUFvQixBQUFBLFFBQVEsRUFDNUIsZUFB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 */
891
  .select2-container--classic.select2-container--open .select2-dropdown { border-color: #5897fb; }
892
 
893
  /*! jQuery UI Bootstrap (0.5) http://addyosmani.github.com/jquery-ui-bootstrap Copyright 2012 - 2013, Addy Osmani Dual licensed under the MIT or GPL Version 2 licenses. Portions copyright jQuery UI & Twitter Bootstrap */
894
+ #redux-dialog-confirm, #redux-dialog-message { display: none; }
895
+
896
+ .redux-support-dialog.ui-dialog, .redux-message-dialog.ui-dialog { position: absolute; top: 0; left: 0; padding: .2em; outline: 0; background-color: #ffffff; }
897
+
898
+ .redux-support-dialog.ui-dialog .ui-dialog-buttonpane, .redux-message-dialog.ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; padding: .3em 1em .5em .4em; }
899
+
900
+ .redux-support-dialog.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset, .redux-message-dialog.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; }
901
+
902
+ .redux-support-dialog.ui-dialog .ui-dialog-buttonpane button, .redux-message-dialog.ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; }
903
+
904
+ .redux-support-dialog.ui-dialog .ui-dialog-titlebar, .redux-message-dialog.ui-dialog .ui-dialog-titlebar { padding: .4em 1em; position: relative; }
905
+
906
+ .redux-support-dialog.ui-dialog .ui-dialog-content, .redux-message-dialog.ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 1em; background: none; background-color: #ffffff; overflow: auto; }
907
+
908
+ .redux-support-dialog.ui-dialog .ui-dialog-title, .redux-message-dialog.ui-dialog .ui-dialog-title { float: left; margin: .1em 0; white-space: nowrap; width: 90%; overflow: hidden; text-overflow: ellipsis; }
909
+
910
+ .redux-support-dialog.ui-dialog .ui-dialog-titlebar-close, .redux-message-dialog.ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 20px; margin: -10px 0 0 0; padding: 1px; height: 20px; }
911
+
912
+ .redux-support-dialog.ui-widget, .redux-message-dialog.ui-widget { font-family: Arial,Helvetica,sans-serif; font-size: 1em; }
913
+
914
+ .redux-support-dialog.ui-widget .ui-widget, .redux-message-dialog.ui-widget .ui-widget { font-size: 1em; }
915
+
916
+ .redux-support-dialog.ui-widget input, .redux-support-dialog.ui-widget select, .redux-support-dialog.ui-widget textarea, .redux-support-dialog.ui-widget button, .redux-message-dialog.ui-widget input, .redux-message-dialog.ui-widget select, .redux-message-dialog.ui-widget textarea, .redux-message-dialog.ui-widget button { font-family: Arial,Helvetica,sans-serif; font-size: 1em; }
917
+
918
+ .redux-support-dialog.ui-widget.ui-widget-content, .redux-message-dialog.ui-widget.ui-widget-content { border: 1px solid #c5c5c5; }
919
+
920
+ .redux-support-dialog.ui-draggable, .redux-support-dialog.ui-droppable, .redux-message-dialog.ui-draggable, .redux-message-dialog.ui-droppable { background-position: top; }
921
+
922
+ .redux-support-dialog.ui-corner-all, .redux-support-dialog.ui-corner-bottom, .redux-support-dialog.ui-corner-right, .redux-support-dialog.ui-corner-br, .redux-message-dialog.ui-corner-all, .redux-message-dialog.ui-corner-bottom, .redux-message-dialog.ui-corner-right, .redux-message-dialog.ui-corner-br { border-bottom-right-radius: 3px; }
923
+
924
+ .redux-support-dialog.ui-corner-all, .redux-support-dialog.ui-corner-bottom, .redux-support-dialog.ui-corner-left, .redux-support-dialog.ui-corner-bl, .redux-message-dialog.ui-corner-all, .redux-message-dialog.ui-corner-bottom, .redux-message-dialog.ui-corner-left, .redux-message-dialog.ui-corner-bl { border-bottom-left-radius: 3px; }
925
+
926
+ .redux-support-dialog.ui-corner-all, .redux-support-dialog.ui-corner-top, .redux-support-dialog.ui-corner-right, .redux-support-dialog.ui-corner-tr, .redux-message-dialog.ui-corner-all, .redux-message-dialog.ui-corner-top, .redux-message-dialog.ui-corner-right, .redux-message-dialog.ui-corner-tr { border-top-right-radius: 3px; }
927
+
928
+ .redux-support-dialog.ui-corner-all, .redux-support-dialog.ui-corner-top, .redux-support-dialog.ui-corner-left, .redux-support-dialog.ui-corner-tl, .redux-message-dialog.ui-corner-all, .redux-message-dialog.ui-corner-top, .redux-message-dialog.ui-corner-left, .redux-message-dialog.ui-corner-tl { border-top-left-radius: 3px; }
929
+
930
+ .redux-support-dialog .ui-widget-content, .redux-message-dialog .ui-widget-content { border: 1px solid #dddddd; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; background: #ffffff; background-image: none; color: #333333; }
931
+
932
+ .redux-support-dialog.ui-draggable .ui-dialog-titlebar, .redux-message-dialog.ui-draggable .ui-dialog-titlebar { cursor: move; }
933
+
934
+ .redux-support-dialog .ui-widget-header, .redux-message-dialog .ui-widget-header { border: 1px solid #dddddd; background: #e9e9e9; color: #333333; font-weight: bold; }
935
+
936
+ .redux-support-dialog .ui-draggable-handle, .redux-message-dialog .ui-draggable-handle { -ms-touch-action: none; touch-action: none; }
937
+
938
+ .redux-support-dialog .ui-widget-content, .redux-message-dialog .ui-widget-content { border: 1px solid #dddddd; background: #ffffff; color: #333333; }
939
+
940
+ .redux-support-dialog .ui-helper-clearfix::before, .redux-support-dialog .ui-helper-clearfix::after, .redux-message-dialog .ui-helper-clearfix::before, .redux-message-dialog .ui-helper-clearfix::after { content: ""; display: table; border-collapse: collapse; }
941
+
942
+ .redux-support-dialog .ui-helper-clearfix::after, .redux-message-dialog .ui-helper-clearfix::after { clear: both; }
943
+
944
+ .redux-support-dialog .ui-state-default a, .redux-support-dialog .ui-state-default a:link, .redux-support-dialog .ui-state-default a:visited, .redux-support-dialog a.ui-button, .redux-support-dialog a:link.ui-button, .redux-support-dialog a:visited.ui-button, .redux-support-dialog .ui-button, .redux-message-dialog .ui-state-default a, .redux-message-dialog .ui-state-default a:link, .redux-message-dialog .ui-state-default a:visited, .redux-message-dialog a.ui-button, .redux-message-dialog a:link.ui-button, .redux-message-dialog a:visited.ui-button, .redux-message-dialog .ui-button { color: #454545; text-decoration: none; }
945
+
946
+ .redux-support-dialog .ui-state-default, .redux-support-dialog .ui-widget-content .ui-state-default, .redux-support-dialog .ui-widget-header .ui-state-default, .redux-support-dialog .ui-button, .redux-message-dialog .ui-state-default, .redux-message-dialog .ui-widget-content .ui-state-default, .redux-message-dialog .ui-widget-header .ui-state-default, .redux-message-dialog .ui-button { border: 1px solid #c5c5c5; background: #f6f6f6; font-weight: normal; color: #454; }
947
+
948
+ .redux-support-dialog .ui-button, .redux-message-dialog .ui-button { padding: .4em 1em; display: inline-block; position: relative; line-height: normal; margin-right: .1em; cursor: pointer; vertical-align: middle; text-align: center; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; overflow: visible; }
949
+
950
+ .redux-support-dialog .ui-button .ui-icon, .redux-message-dialog .ui-button .ui-icon { background-image: url("../../img/jquery-ui-bootstrap/ui-icons_777777_256x240.png"); }
951
+
952
+ .redux-support-dialog .ui-button-icon-only, .redux-message-dialog .ui-button-icon-only { text-indent: -9999px; white-space: nowrap; }
953
+
954
+ .redux-support-dialog .ui-button-icon-only .ui-icon, .redux-message-dialog .ui-button-icon-only .ui-icon { position: absolute; top: 50%; left: 50%; margin-top: -8px; margin-left: -8px; }
955
+
956
+ .redux-support-dialog .ui-icon-closethick, .redux-message-dialog .ui-icon-closethick { background-position: -96px -128px; }
957
+
958
+ .redux-support-dialog .ui-icon, .redux-support-dialog .ui-widget-content .ui-icon, .redux-message-dialog .ui-icon, .redux-message-dialog .ui-widget-content .ui-icon { background-image: url("../../img/jquery-ui-bootstrap/ui-icons_444444_256x240.png"); }
959
+
960
+ .redux-support-dialog .ui-icon-alert, .redux-message-dialog .ui-icon-alert { background-position: 0 -144px; }
961
+
962
+ .redux-support-dialog .ui-icon-circle-check, .redux-message-dialog .ui-icon-circle-check { background-position: -208px -192px; }
963
+
964
+ .redux-support-dialog .ui-icon, .redux-message-dialog .ui-icon { width: 16px; height: 16px; display: inline-block; vertical-align: middle; margin-top: -.25em; position: relative; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }
965
+
966
+ .ui-widget-overlay { background: #aaaaaa; opacity: .3; filter: Alpha(Opacity=30); position: fixed; top: 0; left: 0; width: 100%; height: 100%; }
967
+
968
+ .ui-front { z-index: 100; }
969
+
970
  .redux-container, .control-section-redux, .control-panel-redux, .redux-metabox { /* Interaction Cues
971
  ----------------------------------*/ /* Icons ----------------------------------*/ /* states and images */ /* Misc visuals ----------------------------------*/ /* jQuery UI CSS Framework 1.10.0 Copyright 2013, AUTHORS.txt (http://jqueryui.com/about) Dual licensed under the MIT or GPL Version 2 licenses. http://jquery.org/license To view and modify this theme, visit http://jqueryui.com/themeroller/ */ /* Component containers ----------------------------------*/ /* Interaction states ----------------------------------*/ /* Interaction Cues ----------------------------------*/ /* For IE8 - See #6059 */ /* Icons ----------------------------------*/ /* states and images */ /* positioning */ /* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */ /* Misc visuals ----------------------------------*/ /* Corner radius */ /* Overlays */ /* jQuery UI Accordion 1.10.0 Copyright 2013, AUTHORS.txt (http://jqueryui.com/about) Dual licensed under the MIT or GPL Version 2 licenses. http://jquery.org/license http://jqueryui.com/accordion/ */ /* IE/Win - Fix animation bug - #4615 */ /* jQuery UI Button 1.10.0 Copyright 2013, AUTHORS.txt (http://jqueryui.com/about) Dual licensed under the MIT or GPL Version 2 licenses. http://jquery.org/license http://docs.jquery.com/UI/Button#theming */ /* the overflow property removes extra width in IE */ /* to make room for the icon, a width needs to be set here */ /* button elements seem to need a little more width */ /*button text element */ /* no icon support for input elements, provide padding by default */ /* input.ui-button { padding: .4em 1em; } */ /*button icon element(s) */ /*button sets*/ /* workarounds */ /* reset extra padding in Firefox */ /* jQuery UI Datepicker 1.9.0 Copyright 2012-10-11, AUTHORS.txt (http://jqueryui.com/about) Dual licensed under the MIT or GPL Version 2 licenses. http://jquery.org/license http://jqueryui.com/datepicker/ */ /* with multiple calendars */ /* RTL support */ /* IE6 IFRAME FIX (taken from datepicker 1.5.3 */ }
972
 
2000
  /* Blocked state; */
2001
  .noUi-state-blocked.noUi-connect, .noUi-state-blocked .noUi-connect { background: #4fdacf; }
2002
 
2003
+ /*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVuZG9yLmNzcyIsInNvdXJjZXMiOlsidmVuZG9yLnNjc3MiLCJlbHVzaXZlLWljb25zL2VsdXNpdmUtaWNvbnMuc2NzcyIsInNlbGVjdDIvc2VsZWN0Mi5zY3NzIiwic2VsZWN0Mi9jb3JlLnNjc3MiLCJzZWxlY3QyL19zaW5nbGUuc2NzcyIsInNlbGVjdDIvX211bHRpcGxlLnNjc3MiLCJzZWxlY3QyL19kcm9wZG93bi5zY3NzIiwic2VsZWN0Mi90aGVtZS9kZWZhdWx0L2xheW91dC5zY3NzIiwic2VsZWN0Mi90aGVtZS9kZWZhdWx0L19zaW5nbGUuc2NzcyIsInNlbGVjdDIvdGhlbWUvZGVmYXVsdC9fbXVsdGlwbGUuc2NzcyIsInNlbGVjdDIvdGhlbWUvY2xhc3NpYy9sYXlvdXQuc2NzcyIsInNlbGVjdDIvdGhlbWUvY2xhc3NpYy9fZGVmYXVsdHMuc2NzcyIsInNlbGVjdDIvbWl4aW5zL19ncmFkaWVudHMuc2NzcyIsInNlbGVjdDIvdGhlbWUvY2xhc3NpYy9fc2luZ2xlLnNjc3MiLCJzZWxlY3QyL3RoZW1lL2NsYXNzaWMvX211bHRpcGxlLnNjc3MiLCJqcXVlcnktdWktMS4xMC4wLmN1c3RvbS5zY3NzIiwicXRpcC5zY3NzIiwic3BlY3RydW0uc2NzcyIsIm5vdWlzbGlkZXIuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FDQUEseUtBR0c7QUFDSCxVQUFVLEdBQ04sV0FBVyxFQUFFLGVBQWUsRUFDNUIsR0FBRyxFQUFFLG1EQUFtRCxFQUN4RCxHQUFHLEVBQUUsMERBQTBELENBQUMsMkJBQTJCLEVBQUUsb0RBQW9ELENBQUMsY0FBYyxFQUFFLG1EQUFtRCxDQUFDLGtCQUFrQixFQUFFLHVFQUF1RSxDQUFDLGFBQWEsRUFDL1QsV0FBVyxFQUFFLE1BQU0sRUFDbkIsVUFBVSxFQUFFLE1BQU07O0FBR3RCLEFBQUEsR0FBRyxDQUFDLEVBQ0EsT0FBTyxFQUFFLFlBQVksRUFDckIsSUFBSSxFQUFFLDJDQUEyQyxFQUNqRCxTQUFTLEVBQUUsT0FB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QUFBLGVBQWUsQUFBQSxRQUFRLEVBQ3ZCLFVBQVUsQUFBQSxRQUFRLENBQUMsRUFDZixPQUFPLEVBQUUsSUFBSSxHQUNoQjs7QUFFRCxBQUFBLGVBQWUsQUFBQSxRQUFRLEVBQ3ZCLFVBQVUsQUFBQSxRQUFRLENBQUMsRUFDZixPQUFPLEVBQUUsSUFBSSxHQUNoQjs7QUFFRCxBQUFBLFlBQVksQUFBQSxRQUFRLEVBQ3BCLE9BQU8sQUFBQSxRQUFRLENBQUMsRUFDWixPQUFPLEVBQUUsSUFBSSxHQUNoQjs7QUFFRCxBQUFBLGFBQWEsQUFBQSxRQUFRLEVBQ3JCLFFBQVEsQUFBQSxRQUFRLENBQUMsRUFDYixPQUFPLEVBQUUsSUFBSSxHQUNoQjs7QUFFRCxBQUFBLGVBQWUsQUFBQSxRQUFRLEVBQ3ZCLFVBQVUsQUFBQSxRQUFRLENBQUMsRUFDZixPQUFPLEVBQUUsSUFBSSxHQUNoQjs7QUFFRCxBQUFBLGtCQUFrQixBQUFBLFFBQVEsRUFDMUIsYUFBYSxBQUFBLFFBQVEsQ0FBQyxFQUNsQixPQUFPLEVBQUUsSUFBSSxHQUNoQjs7QUFFRCxBQUFBLG1CQUFtQixBQUFBLFFBQVEsRUFDM0IsY0FBYyxBQUFBLFFBQVEsQ0FBQyxFQUNuQixPQUFPLEVBQUUsSUFBSSxHQUNoQjs7QUFFRCxBQUFBLGNBQWMsQUFBQSxRQUFRLEVBQ3RCLFNBQVMsQUFBQSxRQUFRLENBQUMsRUFDZCxPQUFPLEVBQUUsSUFBSSxHQUNoQjs7QUFFRCxBQUFBLGtCQUFrQixBQUFBLFFBQVEsRUFDMUIsYUFBYSxBQUFBLFFBQVEsQ0FBQyxFQUNsQixPQUFPLEVBQUUsSUFBSSxHQUNoQjs7QUFFRCxBQUFBLGNBQWMsQUFBQSxRQUFRLEVBQ3RCLFNBQVMsQUFBQSxRQUFRLENBQUMsRUFDZCxPQUFPLEVBQUUsSUFBSSxHQUNoQjs7QUFFRCxBQUFBLGtCQUFrQixBQUFBLFFBQVEsRUFDMUIsYUFBYSxBQUFBLFFBQVEsQ0FBQyxFQUNsQixPQUFPLEVBQUUsSUFBSSxHQUNoQjs7QUFFRCxBQUFBLG9CQUFvQixBQUFBLFFBQVEsRUFDNUIsZUFB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