PluginProbe
Assistant – Every Day Productivity Apps / 1.4.7
Assistant – Every Day Productivity Apps v1.4.7
1.5.5 trunk 0.1.0 0.2.0 0.2.1 0.2.2 0.3.0 0.3.1 0.4 0.4.1 0.4.2 0.5.0 0.5.1 0.6.0 0.7.0 0.7.0.2 0.7.0.3 0.7.0.4 0.7.0.5 0.7.0.6 0.7.0.7 0.7.0.8 0.7.0.9 0.7.1 1.0 All 71 releases
← All changes | backend/src/Hooks/Actions/OnEnqueueScripts.php +344 -358 1.5.51.4.7 View file →
@@ -1,358 +1,344 @@
1 -<?php
2 -
3 -namespace FL\Assistant\Hooks\Actions;
4 -
5 -use FL\Assistant\Data\Repository\PostsRepository;
6 -use FL\Assistant\Data\Repository\UsersRepository;
7 -use FL\Assistant\Data\Site;
8 -use FL\Assistant\Data\Transformers\UserTransformer;
9 -use FL\Assistant\Data\UserState;
10 -use FL\Assistant\Data\Mockup;
11 -use FL\Assistant\Services\ThemeService;
12 -use FL\Assistant\Helpers\BeaverBuilderHelper;
13 -use FL\Assistant\System\Integrations\BeaverBuilder;
14 -use FLBuilderModel;
15 -
16 -/**
17 - * Class OnEnqueueScripts
18 - * @package FL\Assistant\Hooks\Actions
19 - *
20 - */
21 -class OnEnqueueScripts {
22 -
23 - /**
24 - * @var UsersRepository
25 - */
26 - protected $users;
27 - /**
28 - * @var PostsRepository
29 - */
30 - protected $posts;
31 -
32 - protected $beaver_builder;
33 -
34 - /**
35 - * @var Site
36 - */
37 - protected $site;
38 -
39 - /**
40 - * @var UserTransformer
41 - */
42 - protected $user_transform;
43 -
44 -
45 - /**
46 - * OnEnqueueScripts constructor.
47 - *
48 - * @param UsersRepository $users
49 - * @param PostsRepository $posts
50 - * @param Site $site
51 - * @param UserTransformer $user_transform
52 - */
53 - public function __construct(
54 - UsersRepository $users,
55 - PostsRepository $posts,
56 - Site $site,
57 - UserTransformer $user_transform,
58 - BeaverBuilder $beaver_builder
59 - ) {
60 -
61 - $this->users = $users;
62 - $this->posts = $posts;
63 - $this->site = $site;
64 - $this->user_transform = $user_transform;
65 - $this->beaver_builder = $beaver_builder;
66 - }
67 -
68 - /**
69 - * @return array
70 - * @throws \Exception
71 - */
72 - public function generate_initial_state() {
73 - if ( ! is_user_logged_in() ) {
74 - return [];
75 - }
76 -
77 - $user_state = UserState::get();
78 - $config = self::generate_frontend_config();
79 - $frame = $config[ 'frameDefaults' ];
80 -
81 -
82 - // Ensure shape of window property
83 - $window = $user_state['window'];
84 - // Ensure is set
85 - if ( ! isset( $window['width'] ) || null === $window['width'] ) {
86 - $window['width'] = $frame[ 'defaultWidth' ];
87 - }
88 - // Respect min and max width
89 - if ( $frame[ 'minWidth' ] > $window['width'] ) {
90 - $window['width'] = $frame[ 'minWidth' ];
91 - } else if ( $frame[ 'maxWidth' ] < $window[ 'width' ] ) {
92 - $window['width'] = $frame[ 'maxWidth' ];
93 - }
94 -
95 - // Set frame origin to top/right if not set.
96 - if ( ! isset( $window['origin'] ) || ! is_array( $window['origin'] ) ) {
97 - $window['origin'] = $frame[ 'defaultOrigin' ];
98 - }
99 -
100 - // Remove Deprecated properties
101 - if ( isset( $window['size'] ) ) {
102 - unset( $window['size'] );
103 - }
104 - if ( isset( $window['overlayToolbar'] ) ) {
105 - unset( $window['overlayToolbar'] );
106 - }
107 -
108 - // Always show in admin bar and hidden in wp-admin.
109 - if ( is_admin() ) {
110 - $window['isHidden'] = true;
111 - // $window['hiddenAppearance'] = 'admin_bar';
112 - }
113 -
114 - $user_state['window'] = $window;
115 -
116 - return [
117 - 'shouldShowLabels' => false, /* Disabled */
118 - 'appOrder' => $user_state['appOrder'],
119 - 'appearance' => $user_state['appearance'],
120 - 'history' => $user_state['history'],
121 - 'searchHistory' => $user_state['searchHistory'],
122 - 'window' => $user_state['window'],
123 - 'isAppHidden' => $user_state['isAppHidden'] ? true : false,
124 - 'hasSubscribed' => isset( $user_state['hasSubscribed'] ) && $user_state['hasSubscribed'] ? true : false,
125 - ];
126 - }
127 -
128 - /**
129 - *
130 - * Compiles an array of all assistant data.
131 - *
132 - * NOTE: Kept in alphabetical order.
133 - *
134 - * @return array
135 - * @throws \Exception
136 - */
137 - public function generate_frontend_config() {
138 -
139 - $current_user = $this->users->current( $this->user_transform );
140 - $theme_service = new ThemeService();
141 - $theme = $theme_service->get_current_theme_data();
142 -
143 - return [
144 - 'adminURLs' => $this->site->get_admin_urls(),
145 - 'ajaxUrl' => admin_url( 'admin-ajax.php' ),
146 - 'apiRoot' => esc_url_raw( get_rest_url() ),
147 - 'attachmentTypes' => [
148 - 'all' => __( 'All', 'assistant' ),
149 - 'image' => __( 'Photo', 'assistant' ),
150 - 'document' => __( 'Document', 'assistant' ),
151 - 'video' => __( 'Video', 'assistant' ),
152 - 'audio' => __( 'Audio', 'assistant' ),
153 - ],
154 - 'contentTypes' => $this->posts->get_types(),
155 - 'contentStatus' => $this->posts->get_stati(),
156 - 'currentPageView' => $this->site->get_current_view(),
157 - 'currentUser' => $current_user,
158 - 'defaultAppName' => 'fl-home',
159 - 'emptyTrashDays' => EMPTY_TRASH_DAYS,
160 - 'frameDefaults' => UserState::getFrameDefaults(),
161 - 'homeUrl' => home_url(),
162 - 'baseUrl' => get_bloginfo( 'url' ),
163 - 'isShowingAdminBar' => is_admin_bar_showing(),
164 - 'isAdmin' => is_admin(),
165 - 'isSiteAdmin' => is_super_admin(),
166 - 'isLocalhost' => $this->site->is_local(),
167 - 'isBBInstalled' => $this->beaver_builder->is_installed(),
168 - 'mockup' => Mockup::get(),
169 - 'nonce' => [
170 - 'api' => wp_create_nonce( 'wp_rest' ),
171 - 'reply' => wp_create_nonce( 'replyto-comment' ),
172 - 'replyUnfiltered' => wp_create_nonce( 'unfiltered-html-comment' ),
173 - 'updates' => wp_create_nonce( 'updates' ),
174 - ],
175 - 'name' => 'Assistant Plugin',
176 - 'version' => FL_ASSISTANT_VERSION,
177 - 'pluginURL' => FL_ASSISTANT_URL,
178 - 'taxonomies' => $this->posts->get_taxononies(),
179 - 'userRoles' => $this->users->get_roles(),
180 - 'cloudConfig' => [
181 - 'apiUrl' => FL_ASSISTANT_CLOUD_URL,
182 - 'appUrl' => FL_ASSISTANT_CLOUD_APP_URL,
183 - 'pusherKey' => FL_ASSISTANT_PUSHER_KEY,
184 - 'pusherCluster' => FL_ASSISTANT_PUSHER_CLUSTER,
185 - ],
186 - 'embedInBB' => FL_ASST_SUPPORTS_BB,
187 - 'isBBExtension' => BeaverBuilderHelper::is_assistant_extension(),
188 - 'themeSlug' => $theme['slug'],
189 - 'themeParentSlug' => $theme['parent'] ? $theme['parent']['slug'] : null,
190 - ];
191 - }
192 -
193 - /**
194 - * Check if the frontend scripts/styles should be enqueued
195 - */
196 - public function should_enqueue() {
197 -
198 - // Don't enqueue outside of BB if in extension mode.
199 - if ( BeaverBuilderHelper::is_assistant_extension() && class_exists( 'FLBuilder' ) && ! FLBuilderModel::is_builder_active() ) {
200 - return false;
201 - }
202 -
203 - // Users must be logged in.
204 - if ( ! is_user_logged_in() ) {
205 - return false;
206 - }
207 -
208 - // Don't show Assistant in customizer.
209 - if ( is_customize_preview() ) {
210 - return false;
211 - }
212 -
213 - // Don't show in iframes.
214 - if ( defined( 'IFRAME_REQUEST' ) && IFRAME_REQUEST && ! isset( $_GET['fl_builder_ui'] ) ) {
215 - return false;
216 - }
217 -
218 - // Don't show in post previews.
219 - if ( isset( $_GET['fl_asst_post_preview'] ) ) {
220 - return false;
221 - }
222 -
223 - // Don't show in Oxygen.
224 - if ( isset( $_GET['ct_builder'] ) ) {
225 - return false;
226 - }
227 -
228 - // User is logged in, and the current request is not customizer or an iframe
229 - $state = UserState::get();
230 -
231 - // Don't show Assistant in the WP Admin if the user has turned it off.
232 - if ( is_admin() && ! $state['shouldShowInAdmin'] ) {
233 - return false;
234 - }
235 -
236 - // There is no read-only assistant (for now). Users must be able to edit.
237 - if ( ! current_user_can( 'edit_others_posts' ) ) {
238 - return false;
239 - }
240 -
241 - return apply_filters( 'fl_assistant_should_enqueue', true );
242 - }
243 -
244 - public function register_vendors() {
245 -
246 - $url = FL_ASSISTANT_URL;
247 - $ver = FL_ASSISTANT_VERSION;
248 -
249 - // Bundled vendors
250 - // These vendors are special in that they attache a global reference to themselves on the FL.vendors object.
251 - // classnames
252 - wp_register_script( 'classnames', $url . 'build/vendor-classnames.js', [], $ver, false );
253 -
254 - // redux
255 - wp_register_script( 'redux', $url . 'build/vendor-redux.js', [], $ver, false );
256 -
257 - // react-router-dom
258 - wp_register_script( 'react-router-dom', $url . 'build/vendor-react-router-dom.js', [ 'react' ], $ver, false );
259 -
260 - // framer-motion
261 - wp_register_script( 'framer-motion', $url . 'build/vendor-framer-motion.js', [ 'react' ], $ver, false );
262 -
263 - // react-laag
264 - wp_register_script( 'react-laag', $url . 'build/vendor-react-laag.js', [ 'react' ], $ver, false );
265 -
266 - // HTML2Canvas
267 - wp_register_script( 'html2canvas', $url . 'build/vendor-html2canvas.js', [], $ver, false );
268 -
269 - // @beaverbuilder/app-core
270 - wp_register_script( 'bb-app-core', $url . 'build/vendor-bb-app-core.js', [ 'react', 'redux' ], $ver, false );
271 -
272 - // @beaverbuilder/cloud
273 - wp_register_script( 'bb-cloud', $url . 'build/vendor-bb-cloud.js', [ 'react' ], $ver, false );
274 -
275 - // @beaverbuilder/icons
276 - wp_register_script( 'bb-icons', $url . 'build/vendor-bb-icons.js', [ 'react' ], $ver, false );
277 -
278 - // @beaverbuilder/fluid
279 - $fluid_deps = [
280 - 'react',
281 - 'react-dom',
282 - 'redux',
283 - 'react-router-dom',
284 - 'classnames',
285 - 'framer-motion',
286 - 'react-laag',
287 - 'wp-i18n',
288 - 'bb-icons'
289 - ];
290 - wp_register_script( 'bb-fluid', $url . 'build/vendor-bb-fluid.js', $fluid_deps, $ver, false );
291 - wp_register_style( 'bb-fluid', $url . 'build/vendor-bb-fluid.css', [], $ver, null );
292 -
293 - // @beaverbuilder/forms
294 - wp_register_script( 'bb-forms', $url . 'build/vendor-bb-forms.js', [ 'bb-fluid' ], $ver, false );
295 - wp_register_style( 'bb-forms', $url . 'build/vendor-bb-forms.css', [ 'bb-fluid' ], $ver, null );
296 -
297 - }
298 -
299 - /**
300 - * Enqueue all scripts and styles
301 - */
302 - public function enqueue() {
303 -
304 - $url = FL_ASSISTANT_URL;
305 - $ver = FL_ASSISTANT_VERSION;
306 -
307 - if ( $this->should_enqueue() ) {
308 -
309 - self::register_vendors();
310 -
311 - $config = $this->generate_frontend_config();
312 - $state = $this->generate_initial_state();
313 -
314 - // API - loaded in header
315 - $js_deps = [
316 - 'wp-i18n',
317 - 'wp-keycodes',
318 - 'wp-dom-ready',
319 - 'wp-components',
320 - 'wp-date',
321 - 'bb-fluid',
322 - 'bb-forms',
323 - 'bb-app-core',
324 - 'bb-cloud',
325 - 'bb-icons'
326 - ];
327 - $css_deps = [
328 - 'bb-fluid',
329 - 'bb-forms',
330 - 'wp-components'
331 - ];
332 -
333 - // System - loaded in header
334 - wp_enqueue_style( 'fl-assistant', $url . 'build/system.css', $css_deps, $ver, null );
335 - wp_enqueue_script( 'fl-assistant', $url . 'build/system.js', $js_deps, $ver, false );
336 -
337 - wp_localize_script( 'fl-assistant', 'FL_ASSISTANT_CONFIG', $config );
338 - wp_localize_script( 'fl-assistant', 'FL_ASSISTANT_INITIAL_STATE', $state );
339 -
340 - // Apps - loaded in footer
341 - $apps = BeaverBuilderHelper::is_assistant_extension() ? 'apps-cloud.js' : 'apps.js';
342 - wp_enqueue_script( 'fl-assistant-apps', $url . "build/$apps", [ 'fl-assistant', 'html2canvas' ], $ver, true );
343 -
344 - // Render - loaded in footer
345 - wp_enqueue_script( 'fl-assistant-render', $url . 'build/render.js', [ 'fl-assistant' ], $ver, true );
346 - wp_enqueue_style( 'fl-assistant-render', $url . 'build/render.css', [ 'fl-assistant' ], $ver, null );
347 -
348 - // WordPress Media Uploader
349 - wp_enqueue_media();
350 -
351 - do_action( 'fl_assistant_enqueue' );
352 - }
353 - }
354 -
355 - public function __invoke() {
356 - $this->enqueue();
357 - }
358 -}
1 +<?php
2 +
3 +namespace FL\Assistant\Hooks\Actions;
4 +
5 +use FL\Assistant\Data\Repository\PostsRepository;
6 +use FL\Assistant\Data\Repository\UsersRepository;
7 +use FL\Assistant\Data\Site;
8 +use FL\Assistant\Data\Transformers\UserTransformer;
9 +use FL\Assistant\Data\UserState;
10 +use FL\Assistant\Data\Mockup;
11 +use FL\Assistant\Services\ThemeService;
12 +use FLBuilderModel;
13 +
14 +/**
15 + * Class OnEnqueueScripts
16 + * @package FL\Assistant\Hooks\Actions
17 + *
18 + */
19 +class OnEnqueueScripts {
20 +
21 + /**
22 + * @var UsersRepository
23 + */
24 + protected $users;
25 + /**
26 + * @var PostsRepository
27 + */
28 + protected $posts;
29 +
30 + /**
31 + * @var Site
32 + */
33 + protected $site;
34 +
35 + /**
36 + * @var UserTransformer
37 + */
38 + protected $user_transform;
39 +
40 +
41 + /**
42 + * OnEnqueueScripts constructor.
43 + *
44 + * @param UsersRepository $users
45 + * @param PostsRepository $posts
46 + * @param Site $site
47 + * @param UserTransformer $user_transform
48 + */
49 + public function __construct(
50 + UsersRepository $users,
51 + PostsRepository $posts,
52 + Site $site,
53 + UserTransformer $user_transform
54 + ) {
55 +
56 + $this->users = $users;
57 + $this->posts = $posts;
58 + $this->site = $site;
59 + $this->user_transform = $user_transform;
60 + }
61 +
62 +
63 + /**
64 + * @return array
65 + * @throws \Exception
66 + */
67 + public function generate_initial_state() {
68 + if ( ! is_user_logged_in() ) {
69 + return [];
70 + }
71 +
72 + $user_state = UserState::get();
73 + $config = self::generate_frontend_config();
74 + $frame = $config[ 'frameDefaults' ];
75 +
76 +
77 + // Ensure shape of window property
78 + $window = $user_state['window'];
79 + // Ensure is set
80 + if ( ! isset( $window['width'] ) || null === $window['width'] ) {
81 + $window['width'] = $frame[ 'defaultWidth' ];
82 + }
83 + // Respect min and max width
84 + if ( $frame[ 'minWidth' ] > $window['width'] ) {
85 + $window['width'] = $frame[ 'minWidth' ];
86 + } else if ( $frame[ 'maxWidth' ] < $window[ 'width' ] ) {
87 + $window['width'] = $frame[ 'maxWidth' ];
88 + }
89 +
90 + // Set frame origin to top/right if not set.
91 + if ( ! isset( $window['origin'] ) || ! is_array( $window['origin'] ) ) {
92 + $window['origin'] = $frame[ 'defaultOrigin' ];
93 + }
94 +
95 + // Remove Deprecated properties
96 + if ( isset( $window['size'] ) ) {
97 + unset( $window['size'] );
98 + }
99 + if ( isset( $window['overlayToolbar'] ) ) {
100 + unset( $window['overlayToolbar'] );
101 + }
102 +
103 + // Always show in admin bar and hidden in wp-admin.
104 + if ( is_admin() ) {
105 + $window['isHidden'] = true;
106 + // $window['hiddenAppearance'] = 'admin_bar';
107 + }
108 +
109 + $user_state['window'] = $window;
110 +
111 + return [
112 + 'shouldShowLabels' => false, /* Disabled */
113 + 'appOrder' => $user_state['appOrder'],
114 + 'appearance' => $user_state['appearance'],
115 + 'history' => $user_state['history'],
116 + 'searchHistory' => $user_state['searchHistory'],
117 + 'window' => $user_state['window'],
118 + 'isAppHidden' => $user_state['isAppHidden'] ? true : false,
119 + 'hasSubscribed' => isset( $user_state['hasSubscribed'] ) && $user_state['hasSubscribed'] ? true : false,
120 + ];
121 + }
122 +
123 + /**
124 + *
125 + * Compiles an array of all assistant data.
126 + *
127 + * NOTE: Kept in alphabetical order.
128 + *
129 + * @return array
130 + * @throws \Exception
131 + */
132 + public function generate_frontend_config() {
133 +
134 + $current_user = $this->users->current( $this->user_transform );
135 + $theme_service = new ThemeService();
136 + $theme = $theme_service->get_current_theme_data();
137 +
138 + return [
139 + 'adminURLs' => $this->site->get_admin_urls(),
140 + 'ajaxUrl' => admin_url( 'admin-ajax.php' ),
141 + 'apiRoot' => esc_url_raw( get_rest_url() ),
142 + 'attachmentTypes' => [
143 + 'all' => __( 'All', 'assistant' ),
144 + 'image' => __( 'Photo', 'assistant' ),
145 + 'document' => __( 'Document', 'assistant' ),
146 + 'video' => __( 'Video', 'assistant' ),
147 + 'audio' => __( 'Audio', 'assistant' ),
148 + ],
149 + 'contentTypes' => $this->posts->get_types(),
150 + 'contentStatus' => $this->posts->get_stati(),
151 + 'currentPageView' => $this->site->get_current_view(),
152 + 'currentUser' => $current_user,
153 + 'defaultAppName' => 'fl-home',
154 + 'emptyTrashDays' => EMPTY_TRASH_DAYS,
155 + 'frameDefaults' => UserState::getFrameDefaults(),
156 + 'homeUrl' => home_url(),
157 + 'baseUrl' => get_bloginfo( 'url' ),
158 + 'isShowingAdminBar' => is_admin_bar_showing(),
159 + 'isAdmin' => is_admin(),
160 + 'isSiteAdmin' => is_super_admin(),
161 + 'isLocalhost' => $this->site->is_local(),
162 + 'mockup' => Mockup::get(),
163 + 'nonce' => [
164 + 'api' => wp_create_nonce( 'wp_rest' ),
165 + 'reply' => wp_create_nonce( 'replyto-comment' ),
166 + 'replyUnfiltered' => wp_create_nonce( 'unfiltered-html-comment' ),
167 + 'updates' => wp_create_nonce( 'updates' ),
168 + ],
169 + 'pluginURL' => FL_ASSISTANT_URL,
170 + 'taxonomies' => $this->posts->get_taxononies(),
171 + 'userRoles' => $this->users->get_roles(),
172 + 'cloudConfig' => [
173 + 'apiUrl' => FL_ASSISTANT_CLOUD_URL,
174 + 'appUrl' => FL_ASSISTANT_CLOUD_APP_URL,
175 + 'pusherKey' => FL_ASSISTANT_PUSHER_KEY,
176 + 'pusherCluster' => FL_ASSISTANT_PUSHER_CLUSTER,
177 + ],
178 + 'embedInBB' => FL_ASST_SUPPORTS_BB,
179 + 'themeSlug' => $theme['slug'],
180 + 'themeParentSlug' => $theme['parent'] ? $theme['parent']['slug'] : null,
181 + ];
182 + }
183 +
184 + /**
185 + * Check if the frontend scripts/styles should be enqueued
186 + */
187 + public function should_enqueue() {
188 +
189 + // Users must be logged in.
190 + if ( ! is_user_logged_in() ) {
191 + return false;
192 + }
193 +
194 + // Don't show Assistant in customizer.
195 + if ( is_customize_preview() ) {
196 + return false;
197 + }
198 +
199 + // Don't show in iframes.
200 + if ( defined( 'IFRAME_REQUEST' ) && IFRAME_REQUEST && ! isset( $_GET['fl_builder_ui'] ) ) {
201 + return false;
202 + }
203 +
204 + // Don't show in post previews.
205 + if ( isset( $_GET['fl_asst_post_preview'] ) ) {
206 + return false;
207 + }
208 +
209 + // Don't show in Oxygen.
210 + if ( isset( $_GET['ct_builder'] ) ) {
211 + return false;
212 + }
213 +
214 + // User is logged in, and the current request is not customizer or an iframe
215 + $state = UserState::get();
216 +
217 + // Don't show Assistant in the WP Admin if the user has turned it off.
218 + if ( is_admin() && ! $state['shouldShowInAdmin'] ) {
219 + return false;
220 + }
221 +
222 + // There is no read-only assistant (for now). Users must be able to edit.
223 + if ( ! current_user_can( 'edit_others_posts' ) ) {
224 + return false;
225 + }
226 +
227 + return apply_filters( 'fl_assistant_should_enqueue', true );
228 + }
229 +
230 + public function register_vendors() {
231 +
232 + $url = FL_ASSISTANT_URL;
233 + $ver = FL_ASSISTANT_VERSION;
234 +
235 + // Bundled vendors
236 + // These vendors are special in that they attache a global reference to themselves on the FL.vendors object.
237 + // classnames
238 + wp_register_script( 'classnames', $url . 'build/vendor-classnames.js', [], $ver, false );
239 +
240 + // redux
241 + wp_register_script( 'redux', $url . 'build/vendor-redux.js', [], $ver, false );
242 +
243 + // react-router-dom
244 + wp_register_script( 'react-router-dom', $url . 'build/vendor-react-router-dom.js', [ 'react' ], $ver, false );
245 +
246 + // framer-motion
247 + wp_register_script( 'framer-motion', $url . 'build/vendor-framer-motion.js', [ 'react' ], $ver, false );
248 +
249 + // react-laag
250 + wp_register_script( 'react-laag', $url . 'build/vendor-react-laag.js', [ 'react' ], $ver, false );
251 +
252 + // HTML2Canvas
253 + wp_register_script( 'html2canvas', $url . 'build/vendor-html2canvas.js', [], $ver, false );
254 +
255 + // @beaverbuilder/app-core
256 + wp_register_script( 'bb-app-core', $url . 'build/vendor-bb-app-core.js', [ 'react', 'redux' ], $ver, false );
257 +
258 + // @beaverbuilder/cloud
259 + wp_register_script( 'bb-cloud', $url . 'build/vendor-bb-cloud.js', [ 'react' ], $ver, false );
260 +
261 + // @beaverbuilder/icons
262 + wp_register_script( 'bb-icons', $url . 'build/vendor-bb-icons.js', [ 'react' ], $ver, false );
263 +
264 + // @beaverbuilder/fluid
265 + $fluid_deps = [
266 + 'react',
267 + 'react-dom',
268 + 'redux',
269 + 'react-router-dom',
270 + 'classnames',
271 + 'framer-motion',
272 + 'react-laag',
273 + 'wp-i18n',
274 + 'bb-icons'
275 + ];
276 + wp_register_script( 'bb-fluid', $url . 'build/vendor-bb-fluid.js', $fluid_deps, $ver, false );
277 + wp_register_style( 'bb-fluid', $url . 'build/vendor-bb-fluid.css', [], $ver, null );
278 +
279 + // @beaverbuilder/forms
280 + wp_register_script( 'bb-forms', $url . 'build/vendor-bb-forms.js', [ 'bb-fluid' ], $ver, false );
281 + wp_register_style( 'bb-forms', $url . 'build/vendor-bb-forms.css', [ 'bb-fluid' ], $ver, null );
282 +
283 + }
284 +
285 + /**
286 + * Enqueue all scripts and styles
287 + */
288 + public function enqueue() {
289 +
290 + $url = FL_ASSISTANT_URL;
291 + $ver = FL_ASSISTANT_VERSION;
292 +
293 + if ( $this->should_enqueue() ) {
294 +
295 + self::register_vendors();
296 +
297 + $config = $this->generate_frontend_config();
298 + $state = $this->generate_initial_state();
299 +
300 + // API - loaded in header
301 + $js_deps = [
302 + 'wp-i18n',
303 + 'wp-keycodes',
304 + 'wp-dom-ready',
305 + 'wp-components',
306 + 'wp-date',
307 + 'bb-fluid',
308 + 'bb-forms',
309 + 'bb-app-core',
310 + 'bb-cloud',
311 + 'bb-icons'
312 + ];
313 + $css_deps = [
314 + 'bb-fluid',
315 + 'bb-forms',
316 + 'wp-components'
317 + ];
318 +
319 + // System - loaded in header
320 + wp_enqueue_style( 'fl-assistant', $url . 'build/system.css', $css_deps, $ver, null );
321 + wp_enqueue_script( 'fl-assistant', $url . 'build/system.js', $js_deps, $ver, false );
322 +
323 + wp_localize_script( 'fl-assistant', 'FL_ASSISTANT_CONFIG', $config );
324 + wp_localize_script( 'fl-assistant', 'FL_ASSISTANT_INITIAL_STATE', $state );
325 +
326 + // Apps - loaded in footer
327 + wp_enqueue_script( 'fl-assistant-apps', $url . 'build/apps.js', [ 'fl-assistant', 'html2canvas' ], $ver, true );
328 + //wp_enqueue_style( 'fl-assistant-apps', $url . 'build/apps.css', [ 'fl-assistant' ], $ver, null );
329 +
330 + // Render - loaded in footer
331 + wp_enqueue_script( 'fl-assistant-render', $url . 'build/render.js', [ 'fl-assistant' ], $ver, true );
332 + wp_enqueue_style( 'fl-assistant-render', $url . 'build/render.css', [ 'fl-assistant' ], $ver, null );
333 +
334 + // WordPress Media Uploader
335 + wp_enqueue_media();
336 +
337 + do_action( 'fl_assistant_enqueue' );
338 + }
339 + }
340 +
341 + public function __invoke() {
342 + $this->enqueue();
343 + }
344 +}