PluginProbe
Assistant – Every Day Productivity Apps / 1.5.5.1
Assistant – Every Day Productivity Apps v1.5.5.1
1.5.5.1 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 All 72 releases
← All changes | backend/src/Hooks/Actions/OnEnqueueScripts.php +358 -358 1.5.5 → 1.5.5.1 View file →
@@ -1,358 +1,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 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 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 +}