PluginProbe
Gutenify – Visual Site Builder Blocks & Starter Templates / 1.0.9
Gutenify – Visual Site Builder Blocks & Starter Templates v1.0.9
1.9.0 1.8.0 1.7.0 1.6.6 1.6.5 1.6.4 trunk 0.0.1 0.0.2 0.0.3 1.0.0 1.0.1 1.0.2 1.0.3 1.0.4 1.0.5 1.0.6 1.0.7 1.0.8 1.0.9 1.1.0 1.1.1 1.1.2 1.1.3 1.1.4 All 74 releases
gutenify / inc / class-block-assets.php

class-block-assets.php in Gutenify – Visual Site Builder Blocks & Starter Templates 1.0.9, at inc/class-block-assets.php

608 lines 19.0 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Load assets for our blocks.
4 *
5 * @package Gutenify
6 */
7
8 // Exit if accessed directly.
9 if ( ! defined( 'ABSPATH' ) ) {
10 exit;
11 }
12
13 /**
14 * Load general assets for our blocks.
15 *
16 * @since 1.0.0
17 */
18 class Gutenify_Block_Assets {
19 /**
20 * This plugin's instance.
21 *
22 * @var Gutenify_Block_Assets
23 */
24 private static $instance;
25
26 /**
27 * Registers the plugin.
28 *
29 * @return Gutenify_Block_Assets
30 */
31 public static function register() {
32 if ( null === self::$instance ) {
33 self::$instance = new Gutenify_Block_Assets();
34 }
35
36 return self::$instance;
37 }
38
39 /**
40 * The Constructor.
41 */
42 public function __construct() {
43 add_action( 'enqueue_block_assets', array( $this, 'block_assets' ) );
44 add_action( 'init', array( $this, 'editor_assets' ) );
45 add_action( 'wp_enqueue_scripts', array( $this, 'add_block_inline_css' ), 200 );
46 add_action( 'admin_footer', array( $this, 'add_admin_global_inline_css' ), 200 );
47 add_action( 'wp_enqueue_scripts', array( $this, 'frontend_scripts' ), 9 );
48 add_action( 'enqueue_block_editor_assets', array( $this, 'editor_scripts' ) );
49 add_action( 'admin_enqueue_scripts', array( $this, 'admin_scripts' ) );
50 }
51
52 /**
53 * Loads the asset file for the given script or style.
54 * Returns a default if the asset file is not found.
55 *
56 * @param string $filepath The name of the file without the extension.
57 *
58 * @return array The asset file contents.
59 */
60 public function get_asset_file( $filepath ) {
61 $asset_path = GUTENIFY_PLUGIN_DIR . $filepath . '.asset.php';
62
63 return file_exists( $asset_path )
64 ? include $asset_path
65 : array(
66 'dependencies' => array(),
67 'version' => GUTENIFY_VERSION,
68 );
69 }
70
71 /**
72 * Enqueue block assets for use within Gutenberg.
73 *
74 * @access public
75 */
76 public function block_assets() {
77 if ( is_admin() ) {
78 return false;
79 }
80 global $post;
81
82 // Only load the front end CSS if a Gutenify is in use.
83 $has_gutenify = ! is_singular();
84
85 if ( ! is_admin() && is_singular() ) {
86 $wp_post = get_post( $post );
87
88 // This is similar to has_block() in core, but will match anything
89 // in the gutenify/* namespace.
90 if ( $wp_post instanceof WP_Post ) {
91 $has_gutenify = ! empty(
92 array_filter(
93 array(
94 false !== strpos( $wp_post->post_content, '<!-- wp:gutenify/' ),
95 has_block( 'core/block', $wp_post ),
96 has_block( 'core/button', $wp_post ),
97 has_block( 'core/cover', $wp_post ),
98 has_block( 'core/heading', $wp_post ),
99 has_block( 'core/image', $wp_post ),
100 has_block( 'core/gallery', $wp_post ),
101 has_block( 'core/list', $wp_post ),
102 has_block( 'core/paragraph', $wp_post ),
103 has_block( 'core/pullquote', $wp_post ),
104 has_block( 'core/quote', $wp_post ),
105 )
106 )
107 );
108 }
109 }
110
111 // if ( ! $has_gutenify && ! $this->is_page_gutenberg() ) {
112 // return;
113 // }
114
115 $fonts_url = gutenify_fonts_url();
116 wp_enqueue_style( 'gutenify-fonts', $fonts_url, array(), null );
117
118 // Styles.
119 $name = 'gutenify-style';
120 $filepath = 'dist/' . $name;
121 $asset_file = $this->get_asset_file( $filepath );
122 $rtl = ! is_rtl() ? '' : '-rtl';
123
124 $deps = array( 'gutenify-fontawesome-style' );
125
126 if ( $fonts_url ) {
127 $deps[] = 'gutenify-fonts';
128 }
129
130 global $wp_styles;
131 if ( in_array( 'global-styles', $wp_styles->queue ) ) {
132 $deps[] = 'global-styles';
133 }
134 if ( in_array( 'woocommerce-layout', $wp_styles->queue ) ) {
135 $deps[] = 'woocommerce-layout';
136 }
137
138 wp_enqueue_style( 'gutenify-frontend', GUTENIFY_PLUGIN_URL . $filepath . $rtl . '.css', $deps, $asset_file['version'] );
139
140 }
141
142 /**
143 * Enqueue block assets for use within Gutenberg.
144 *
145 * @access public
146 */
147 public function editor_assets() {
148
149 // Styles.
150 $name = 'gutenify-editor';
151 $filepath = 'dist/' . $name;
152 $asset_file = $this->get_asset_file( $filepath );
153 $rtl = ! is_rtl() ? '' : '-rtl';
154
155 wp_register_style( 'gutenify-fontawesome-style', GUTENIFY_PLUGIN_URL . '/assets/fontawesome/css/all.css', array(), 'v4' );
156
157 $fonts_url = gutenify_fonts_url();
158 wp_enqueue_style( 'gutenify-fonts', $fonts_url, array(), null );
159
160 $deps = array( 'gutenify-fontawesome-style' );
161
162 if ( $fonts_url ) {
163 $deps[] = 'gutenify-fonts';
164 }
165
166 if ( class_exists( 'woocommerce' ) ) {
167 $deps[] = 'wc-blocks-editor-style';
168 }
169
170 wp_register_style(
171 'gutenify-editor',
172 GUTENIFY_PLUGIN_URL . $filepath . $rtl . '.css',
173 $deps,
174 $asset_file['version']
175 );
176
177 // Scripts.
178 $name = 'gutenify'; // gutenify.js.
179 $filepath = 'dist/' . $name;
180 $asset_file = $this->get_asset_file( $filepath );
181
182 wp_register_script(
183 'gutenify-editor',
184 GUTENIFY_PLUGIN_URL . $filepath . '.js',
185 array_merge( $asset_file['dependencies'], array( 'wp-api', 'gutenify-global' ) ),
186 $asset_file['version'],
187 true
188 );
189
190 $post_id = filter_input( INPUT_GET, 'post', FILTER_SANITIZE_NUMBER_INT );
191
192 wp_localize_script(
193 'gutenify-editor',
194 'gutenify_block_data',
195 array(
196 'plugin_directory_url' => esc_url( GUTENIFY_PLUGIN_URL ),
197 'site_url' => esc_url( site_url() ),
198 'settings_url' => esc_url( admin_url( 'edit.php?post_type=gutenify_template&page=gutenify-settings' ) ),
199 'add_template_url' => esc_url( admin_url( 'post-new.php?post_type=gutenify_template' ) ),
200 'is_woocommerce_activated' => class_exists( 'woocommerce' ),
201 )
202 );
203
204 $localized_values = array(
205 'font_families' => gutenify_font_families(),
206 'plugin_directory_url' => esc_url( GUTENIFY_PLUGIN_URL ),
207 'site_url' => esc_url( site_url() ),
208 );
209 wp_localize_script(
210 'gutenify-editor',
211 '_gutenify',
212 apply_filters( 'gutenify-admin-localized-values', $localized_values ),
213 );
214
215 wp_localize_script(
216 'gutenify-editor',
217 '_gutenify_vars',
218 array(
219 'site_url' => esc_url( site_url() ),
220 'plugin_directory_url' => esc_url( GUTENIFY_PLUGIN_URL ),
221 'gutenify_version' => GUTENIFY_VERSION,
222 'pro_license_status' => apply_filters( 'gutenify_pro_license_status', false ),
223 'is_pro_activated' => apply_filters( 'gutenify_pro_activation_status', false ),
224 )
225 );
226 }
227
228 /**
229 * Enqueue front-end assets for blocks.
230 *
231 * @access public
232 * @since 1.9.5
233 */
234 public function frontend_scripts() {
235
236 // Scripts.
237 $name = 'swiper-bundle'; // swiper.js.
238 $filepath = 'assets/js/lib/' . $name;
239
240 wp_register_script(
241 'gutenify-swiper',
242 GUTENIFY_PLUGIN_URL . $filepath . '.js',
243 array( 'jquery' ),
244 '6.8.2',
245 false
246 );
247
248 // Scripts.
249 $name = 'gutenify-frontend'; // gutenify.js.
250 $filepath = 'dist/js/' . $name;
251 $asset_file = $this->get_asset_file( $filepath );
252
253 $deps = array( 'jquery', 'gutenify-swiper' );
254
255 // Enqueue for gutenify animations.
256 wp_enqueue_script(
257 'gutenify-frontend',
258 GUTENIFY_PLUGIN_URL . $filepath . '.js',
259 $deps,
260 GUTENIFY_VERSION,
261 false
262 );
263
264 // Styles.
265 $name = 'swiper-bundle.min'; // swiper.js.
266 $filepath = 'assets/css/lib/' . $name;
267 $asset_file = $this->get_asset_file( $filepath );
268 wp_enqueue_style(
269 'gutenify-swiper-style',
270 GUTENIFY_PLUGIN_URL . $filepath . '.css',
271 array(),
272 '6.8.2'
273 );
274
275 }
276
277 /**
278 * Enqueue editor scripts for blocks.
279 *
280 * @access public
281 * @since 1.9.5
282 */
283 public function editor_scripts() {
284 }
285
286 /**
287 * Return whether a post type should display the Block Editor.
288 *
289 * @param string $post_type The post_type slug to check.
290 */
291 protected function is_post_type_gutenberg( $post_type ) {
292 return use_block_editor_for_post_type( $post_type );
293 }
294
295 /**
296 * Return whether the page we are on is loading the Block Editor.
297 */
298 protected function is_page_gutenberg() {
299 if ( ! is_admin() ) {
300 return false;
301 }
302
303 $admin_page = wp_basename( esc_url( $_SERVER['REQUEST_URI'] ) );
304
305 if ( false !== strpos( $admin_page, 'post-new.php' ) && empty( $_GET['post_type'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended
306 return true;
307 }
308
309 if ( false !== strpos( $admin_page, 'post-new.php' ) && isset( $_GET['post_type'] ) && $this->is_post_type_gutenberg( $_GET['post_type'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended
310 return true;
311 }
312
313 if ( false !== strpos( $admin_page, 'post.php' ) ) {
314 $wp_post = get_post( $_GET['post'] ); // phpcs:ignore WordPress.Security.NonceVerification.Recommended
315 if ( isset( $wp_post ) && isset( $wp_post->post_type ) && $this->is_post_type_gutenberg( $wp_post->post_type ) ) {
316 return true;
317 }
318 }
319
320 if ( false !== strpos( $admin_page, 'revision.php' ) ) {
321 $wp_post = get_post( $_GET['revision'] ); // phpcs:ignore WordPress.Security.NonceVerification.Recommended
322 $post_parent = get_post( $wp_post->post_parent );
323 if ( isset( $post_parent ) && isset( $post_parent->post_type ) && $this->is_post_type_gutenberg( $post_parent->post_type ) ) {
324 return true;
325 }
326 }
327 return false;
328 }
329
330 /**
331 * Add inline css
332 *
333 * @return void
334 */
335 public static function add_block_inline_css() {
336 if ( is_singular() ) {
337 global $post;
338 // $style_file = trailingslashit( wp_upload_dir()['basedir'] ) . 'gutenify/styles/style-' . 'post-' . $post->ID . '.css';
339
340 // if ( file_exists( $style_file ) ) {
341 // $style_file_url = trailingslashit( wp_upload_dir()['baseurl'] ) . 'gutenify/styles/style-' . 'post-' . $post->ID . '.css';
342
343 // wp_enqueue_style( 'gutenify-frontend-post', $style_file_url, array( 'gutenify-frontend' ), GUTENIFY_VERSION );
344 // } else {
345 // }
346 $post_meta = get_post_meta( $post->ID );
347 $gutenify_custom_css = ! empty( $post_meta['gutenify_custom_css'][0] ) ? $post_meta['gutenify_custom_css'][0] : '';
348 wp_add_inline_style( 'gutenify-frontend', $gutenify_custom_css );
349 }
350 $gutenify_global_style = get_option( 'gutenify_global_style' );
351
352 $deps = array();
353 wp_register_style( 'gutenify-global-inline-handle', false, $deps );
354 wp_enqueue_style( 'gutenify-global-inline-handle' );
355
356 if ( $gutenify_global_style ) {
357 $handle = 'gutenify-global-inline-handle';
358 wp_add_inline_style( $handle, $gutenify_global_style );
359 }
360 }
361
362 /**
363 * Add Global inline css
364 *
365 * @return void
366 */
367 public static function add_admin_global_inline_css() {
368
369 $gutenify_admin_global_style = get_option( 'gutenify_admin_global_style' );
370 $deps = array();
371 wp_register_style( 'gutenify-global-inline-handle', false, $deps );
372 wp_enqueue_style( 'gutenify-global-inline-handle' );
373
374 if ( $gutenify_admin_global_style ) {
375 wp_add_inline_style( 'gutenify-global-inline-handle', $gutenify_admin_global_style );
376 }
377 }
378
379 /**
380 * Admin scripts.
381 *
382 * @return mixed
383 */
384 public function admin_scripts() {
385 // Scripts.
386 $name = 'gutenify-global'; // gutenify.js.
387 $filepath = 'dist/' . $name;
388 $asset_file = $this->get_asset_file( $filepath );
389
390 // Enqueue for gutenify animations.
391 wp_register_script(
392 $name,
393 GUTENIFY_PLUGIN_URL . $filepath . '.js',
394 $asset_file['dependencies'],
395 $asset_file['version'],
396 true
397 );
398
399 // Getting Started.
400 if ( ( ! empty( $_GET['page'] ) && 'gutenify' === $_GET['page'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended
401 // Scripts.
402 $name = 'gutenify-getting-started-admin'; // gutenify.js.
403 $filepath = 'dist/' . $name;
404 $asset_file = $this->get_asset_file( $filepath );
405
406 // Enqueue for gutenify animations.
407 wp_enqueue_script(
408 'gutenify-getting-started-admin',
409 GUTENIFY_PLUGIN_URL . $filepath . '.js',
410 $asset_file['dependencies'],
411 $asset_file['version'],
412 true
413 );
414
415 // Styles.
416 $name = 'gutenify-getting-started-admin-style';
417 $filepath = 'dist/' . $name;
418 $asset_file = $this->get_asset_file( $filepath );
419 $rtl = ! is_rtl() ? '' : '-rtl';
420
421 wp_enqueue_style(
422 $name,
423 GUTENIFY_PLUGIN_URL . $filepath . $rtl . '.css',
424 array( 'gutenify-fontawesome-style', 'wp-components' ),
425 $asset_file['version']
426 );
427
428 wp_localize_script(
429 'gutenify-getting-started-admin',
430 '_gutenify_vars',
431 array(
432 'site_url' => esc_url( site_url() ),
433 'plugin_directory_url' => esc_url( GUTENIFY_PLUGIN_URL ),
434 'gutenify_version' => GUTENIFY_VERSION,
435 // 'gutenify_com_server_url' => defined( 'GUTENIFY_COM_SERVER_URL' ) ? trailingslashit( GUTENIFY_COM_SERVER_URL ) : trailingslashit( 'https://api.gutenify.com/' ),
436 // 'is_block_theme' => function_exists( 'wp_get_theme' ) && ! empty( wp_get_theme()->is_block_theme() ),
437 // 'is_woocommerce_activated' => class_exists( 'woocommerce' ),
438 'pro_license_status' => apply_filters( 'gutenify_pro_license_status', false ),
439 'is_pro_activated' => apply_filters( 'gutenify_pro_activation_status', false ),
440 )
441 );
442 }
443
444 // Site options
445 if ( ( ! empty( $_GET['page'] ) && 'gutenify-site-options' === $_GET['page'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended
446 // Scripts.
447 $name = 'gutenify-site-options-admin'; // gutenify.js.
448 $filepath = 'dist/' . $name;
449 $asset_file = $this->get_asset_file( $filepath );
450
451 // Enqueue for gutenify animations.
452 wp_enqueue_script(
453 'gutenify-site-options-admin',
454 GUTENIFY_PLUGIN_URL . $filepath . '.js',
455 $asset_file['dependencies'],
456 $asset_file['version'],
457 true
458 );
459
460 // Styles.
461 $name = 'gutenify-site-options-admin-style';
462 $filepath = 'dist/' . $name;
463 $asset_file = $this->get_asset_file( $filepath );
464 $rtl = ! is_rtl() ? '' : '-rtl';
465
466 wp_enqueue_style(
467 $name,
468 GUTENIFY_PLUGIN_URL . $filepath . $rtl . '.css',
469 array( 'gutenify-fontawesome-style', 'wp-components' ),
470 $asset_file['version']
471 );
472
473 wp_localize_script(
474 'gutenify-site-options-admin',
475 '_gutenify_site_options',
476 array(
477 'site_url' => esc_url( site_url() ),
478 'gutenify_com_server_url' => defined( 'GUTENIFY_COM_SERVER_URL' ) ? trailingslashit( GUTENIFY_COM_SERVER_URL ) : trailingslashit( 'https://api.gutenify.com/' ),
479 'is_block_theme' => function_exists( 'wp_get_theme' ) && ! empty( wp_get_theme()->is_block_theme() ),
480 'is_woocommerce_activated' => class_exists( 'woocommerce' ),
481 'pro_license_status' => apply_filters( 'gutenify_pro_license_status', false ),
482 )
483 );
484 }
485
486 // if ( ! empty( $_GET['post_type'] ) && 'gutenify_kit' === $_GET['post_type'] ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended
487 if ( ( ! empty( $_GET['page'] ) && 'gutenify-template-kits' === $_GET['page'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended
488 // Scripts.
489 $name = 'gutenify-kit-admin'; // gutenify.js.
490 $filepath = 'dist/' . $name;
491 $asset_file = $this->get_asset_file( $filepath );
492
493 // Enqueue for gutenify animations.
494 wp_enqueue_script(
495 'gutenify-kit-admin',
496 GUTENIFY_PLUGIN_URL . $filepath . '.js',
497 $asset_file['dependencies'],
498 $asset_file['version'],
499 true
500 );
501
502 // Styles.
503 $name = 'gutenify-kit-admin-style';
504 $filepath = 'dist/' . $name;
505 $asset_file = $this->get_asset_file( $filepath );
506 $rtl = ! is_rtl() ? '' : '-rtl';
507
508 wp_enqueue_style(
509 $name,
510 GUTENIFY_PLUGIN_URL . $filepath . $rtl . '.css',
511 array( 'gutenify-fontawesome-style', 'wp-components' ),
512 $asset_file['version']
513 );
514
515 wp_localize_script(
516 'gutenify-kit-admin',
517 '_gutenify_kit',
518 array(
519 'plugin_directory_url' => esc_url( GUTENIFY_PLUGIN_URL ),
520 'site_url' => esc_url( site_url() ),
521 'gutenify_com_server_url' => defined( 'GUTENIFY_COM_SERVER_URL' ) ? trailingslashit( GUTENIFY_COM_SERVER_URL ) : trailingslashit( 'https://api.gutenify.com/' ),
522 'is_block_theme' => wp_is_block_theme(), // function_exists( 'wp_get_theme' ) && ! empty( wp_get_theme()->is_block_theme() ),
523 'is_woocommerce_activated' => class_exists( 'woocommerce' ),
524 'pro_license_status' => apply_filters( 'gutenify_pro_license_status', false ),
525 )
526 );
527
528 wp_localize_script(
529 'gutenify-kit-admin',
530 '_gutenify_vars',
531 array(
532 'plugin_directory_url' => esc_url( GUTENIFY_PLUGIN_URL ),
533 'site_url' => esc_url( site_url() ),
534 'gutenify_com_server_url' => defined( 'GUTENIFY_COM_SERVER_URL' ) ? trailingslashit( GUTENIFY_COM_SERVER_URL ) : trailingslashit( 'https://api.gutenify.com/' ),
535 'is_block_theme' => wp_is_block_theme(), // function_exists( 'wp_get_theme' ) && ! empty( wp_get_theme()->is_block_theme() ),
536 'is_woocommerce_activated' => class_exists( 'woocommerce' ),
537 'pro_license_status' => apply_filters( 'gutenify_pro_license_status', false ),
538 'font_families' => gutenify_font_families(),
539 'is_pro_activated' => apply_filters( 'gutenify_pro_activation_status', false ),
540 )
541 );
542 }
543
544 if ( ( ! empty( $_GET['page'] ) && 'gutenify-settings' !== $_GET['page'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended
545 return false;
546 }
547 // Scripts.
548 $name = 'gutenify-admin-settings'; // gutenify.js.
549 $filepath = 'dist/' . $name;
550 $asset_file = $this->get_asset_file( $filepath );
551
552 $asset_file['dependencies'][] = 'gutenify-global';
553
554 // Enqueue for gutenify animations.
555 wp_enqueue_script(
556 'gutenify-admin-settings',
557 GUTENIFY_PLUGIN_URL . $filepath . '.js',
558 $asset_file['dependencies'],
559 $asset_file['version'],
560 true
561 );
562
563 wp_localize_script(
564 'gutenify-admin-settings',
565 '_gutenify',
566 array(
567 'site_url' => esc_url( site_url() ),
568 'pro_account_url' => esc_url( admin_url( 'admin.php?page=gutenify-pro-license' ) ),
569 'gutenify_com_server_url' => defined( 'GUTENIFY_COM_SERVER_URL' ) ? trailingslashit( GUTENIFY_COM_SERVER_URL ) : trailingslashit( 'https://api.gutenify.com/' ),
570 'gutenify_hub_server_url' => defined( 'GUTENIFY_HUB_SERVER_URL' ) ? trailingslashit( GUTENIFY_COM_SERVER_URL ) : trailingslashit( 'https://hub.gutenify.com/' ),
571 'pro_license_status' => apply_filters( 'gutenify_pro_license_status', false ),
572 'font_families' => gutenify_font_families(),
573 'global_settings' => wp_get_global_settings(),
574 )
575 );
576
577 wp_localize_script(
578 'gutenify-admin-settings',
579 '_gutenify_vars',
580 array(
581 'plugin_directory_url' => esc_url( GUTENIFY_PLUGIN_URL ),
582 'site_url' => esc_url( site_url() ),
583 'gutenify_com_server_url' => defined( 'GUTENIFY_COM_SERVER_URL' ) ? trailingslashit( GUTENIFY_COM_SERVER_URL ) : trailingslashit( 'https://api.gutenify.com/' ),
584 'is_block_theme' => wp_is_block_theme(), // function_exists( 'wp_get_theme' ) && ! empty( wp_get_theme()->is_block_theme() ),
585 'is_woocommerce_activated' => class_exists( 'woocommerce' ),
586 'pro_license_status' => apply_filters( 'gutenify_pro_license_status', false ),
587 'font_families' => gutenify_font_families(),
588 'is_pro_activated' => apply_filters( 'gutenify_pro_activation_status', false ),
589 )
590 );
591
592 // Styles.
593 $name = 'gutenify-admin-settings-style';
594 $filepath = 'dist/' . $name;
595 $asset_file = $this->get_asset_file( $filepath );
596 $rtl = ! is_rtl() ? '' : '-rtl';
597
598 wp_enqueue_style(
599 $name,
600 GUTENIFY_PLUGIN_URL . $filepath . $rtl . '.css',
601 array( 'gutenify-fontawesome-style', 'wp-components' ),
602 $asset_file['version']
603 );
604 }
605 }
606
607 Gutenify_Block_Assets::register();
608