PluginProbe
aBlocks – Gutenberg Blocks, User Dashboard Builder, Popup Builder, Form Builder & Animation Builder / 2.14.0
aBlocks – Gutenberg Blocks, User Dashboard Builder, Popup Builder, Form Builder & Animation Builder v2.14.0
2.14.0 2.13.0 2.13.1 2.12.0 2.11.1 2.11.0 2.10.0 2.9.0 2.7.4 2.7.5 2.7.6 2.7.7 2.8.0 2.8.1 2.9.1 trunk 1.0 1.0-beta1 1.0-beta2 1.0-beta3 1.0.1 1.0.2 1.0.3 1.1.0 1.1.1 All 81 releases
ablocks / includes / controls / transform.php

transform.php in aBlocks – Gutenberg Blocks, User Dashboard Builder, Popup Builder, Form Builder & Animation Builder 2.14.0, at includes/controls/transform.php

372 lines 10.8 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 namespace ABlocks\Controls;
3
4 if ( ! defined( 'ABSPATH' ) ) {
5 exit;
6 }
7
8 use ABlocks\Classes\ControlBaseAbstract;
9 use ABlocks\Helper;
10
11 class Transform extends ControlBaseAbstract {
12 public static function get_attribute_default_value( $is_responsive = false ) {
13 if ( $is_responsive ) {
14 return [
15 'rotate' => '',
16 'rotateTablet' => '',
17 'rotateMobile' => '',
18 'rotate3D' => false,
19 'rotate3DTablet' => false,
20 'rotate3DMobile' => false,
21 'rotateX' => '',
22 'rotateXTablet' => '',
23 'rotateXMobile' => '',
24 'rotateY' => '',
25 'rotateYTablet' => '',
26 'rotateYMobile' => '',
27 'rotateP' => '',
28 'rotatePTablet' => '',
29 'rotatePMobile' => '',
30 // Offset
31 'offsetX' => '',
32 'offsetXTablet' => '',
33 'offsetXMobile' => '',
34 'offsetXUnit' => 'px',
35 'offsetXUnitTablet' => 'px',
36 'offsetXUnitMobile' => 'px',
37 'offsetY' => '',
38 'offsetYTablet' => '',
39 'offsetYMobile' => '',
40 'offsetYUnit' => 'px',
41 'offsetYUnitTablet' => 'px',
42 'offsetYUnitMobile' => 'px',
43 // Scale
44 'scaleProportions' => false,
45 'scale' => '',
46 'scaleTablet' => '',
47 'scaleMobile' => '',
48 'scaleX' => '',
49 'scaleXTablet' => '',
50 'scaleXMobile' => '',
51 'scaleY' => '',
52 'scaleYTablet' => '',
53 'scaleYMobile' => '',
54 // Skew
55 'skewX' => '',
56 'skewXTablet' => '',
57 'skewXMobile' => '',
58 'skewY' => '',
59 'skewYTablet' => '',
60 'skewYMobile' => '',
61 // Flip
62 'flipHorizontal' => false,
63 'flipVertical' => false,
64 // X Anchor
65 'xAnchorPoint' => '',
66 'xAnchorPointTablet' => '',
67 'xAnchorPointMobile' => '',
68 // Y Anchor
69 'yAnchorPoint' => '',
70 'yAnchorPointTablet' => '',
71 'yAnchorPointMobile' => '',
72
73 // Rotate - Hover
74 'rotateH' => '',
75 'rotateHTablet' => '',
76 'rotateHMobile' => '',
77 'rotate3DH' => false,
78 'rotate3DHTablet' => false,
79 'rotate3DHMobile' => false,
80 'rotateXH' => '',
81 'rotateXHTablet' => '',
82 'rotateXHMobile' => '',
83 'rotateYH' => '',
84 'rotateYHTablet' => '',
85 'rotateYHMobile' => '',
86 'rotatePH' => '',
87 'rotatePHTablet' => '',
88 'rotatePHMobile' => '',
89 // Offset - Hover
90 'offsetXH' => '',
91 'offsetXHTablet' => '',
92 'offsetXHMobile' => '',
93 'offsetXHUnit' => 'px',
94 'offsetXHUnitTablet' => 'px',
95 'offsetXHUnitMobile' => 'px',
96 'offsetYH' => '',
97 'offsetYHTablet' => '',
98 'offsetYHMobile' => '',
99 'offsetYHUnit' => 'px',
100 'offsetYHUnitTablet' => 'px',
101 'offsetYHUnitMobile' => 'px',
102 // Scale - Hover
103 'scaleProportionsH' => false,
104 'scaleH' => '',
105 'scaleHTablet' => '',
106 'scaleHMobile' => '',
107 'scaleXH' => '',
108 'scaleXHTablet' => '',
109 'scaleXHMobile' => '',
110 'scaleYH' => '',
111 'scaleYHTablet' => '',
112 'scaleYHMobile' => '',
113 // Skew - Hover
114 'skewXH' => '',
115 'skewXHTablet' => '',
116 'skewXHMobile' => '',
117 'skewYH' => '',
118 'skewYHTablet' => '',
119 'skewYHMobile' => '',
120 // Flip - Hover
121 'flipHorizontalH' => false,
122 'flipVerticalH' => false,
123 // X Anchor - Hover
124 'xAnchorPointH' => '',
125 'xAnchorPointHTablet' => '',
126 'xAnchorPointHMobile' => '',
127 // Y Anchor - Hover
128 'yAnchorPointH' => '',
129 'yAnchorPointHTablet' => '',
130 'yAnchorPointHMobile' => '',
131
132 // Transition
133 'transitionH' => '',
134 ];
135 }//end if
136 return [
137 'rotate' => '',
138 'rotate3D' => '',
139 'rotateX' => '',
140 'rotateY' => '',
141 'rotateP' => '',
142 'offsetX' => '',
143 'offsetXUnit' => 'px',
144 'offsetY' => '',
145 'offsetYUnit' => 'px',
146 'scaleProportions' => false,
147 'scale' => '',
148 'scaleX' => '',
149 'scaleY' => '',
150 'skewX' => '',
151 'skewY' => '',
152 'flipHorizontal' => false,
153 'flipVertical' => false,
154 'xAnchorPoint' => '',
155 'yAnchorPoint' => '',
156 'rotateH' => '',
157 'rotate3DH' => false,
158 'rotateXH' => '',
159 'rotateYH' => '',
160 'rotatePH' => '',
161 'offsetXH' => '',
162 'offsetXHUnit' => 'px',
163 'offsetYH' => '',
164 'offsetYHUnit' => 'px',
165 'scaleH' => '',
166 'scaleXH' => '',
167 'scaleYH' => '',
168 'skewXH' => '',
169 'skewYH' => '',
170 'flipHorizontalH' => false,
171 'flipVerticalH' => false,
172 'xAnchorPointH' => '',
173 'yAnchorPointH' => '',
174 'transitionH' => '',
175 ];
176
177 }
178
179 public static function get_attribute( $attributeName, $isResponsive = false ) {
180
181 return [
182 $attributeName => [
183 'type' => 'object',
184 'default' => self::get_attribute_default_value( $isResponsive ),
185 ]
186 ];
187 }
188
189 public static function get_css( $attributeValue, $property = '', $device = '' ) {
190 $value = wp_parse_args(
191 $attributeValue,
192 $device ? self::responsive_defaults() : self::get_attribute_default_value( false )
193 );
194
195 $css = [];
196 $transformations = [];
197 $transformOrigin = '';
198
199 $x_offset_unit = ( Helper::get_responsive_value( $value, 'offsetXUnit', $device ) ?: 'px' );
200 $y_offset_unit = ( Helper::get_responsive_value( $value, 'offsetYUnit', $device ) ?: 'px' );
201
202 if ( Helper::has_responsive_value( $value[ 'rotate' . $device ] ?? null ) ) {
203 $transformations[] = 'rotate(' . $value[ 'rotate' . $device ] . 'deg)';
204 }
205
206 if ( Helper::has_responsive_value( $value[ 'rotateX' . $device ] ?? null ) ) {
207 $transformations[] = 'rotateX(' . $value[ 'rotateX' . $device ] . 'deg)';
208 }
209
210 if ( Helper::has_responsive_value( $value[ 'rotateY' . $device ] ?? null ) ) {
211 $transformations[] = 'rotateY(' . $value[ 'rotateY' . $device ] . 'deg)';
212 }
213
214 if ( $value[ 'rotate3D' . $device ] !== false ) {
215 $rotation = ! empty( $value[ 'rotate' . $device ] ) ? $value[ 'rotate' . $device ] : 0;
216 $transformations[] = 'rotateZ(' . $rotation . 'deg)';
217 }
218
219 if ( ! empty( $value[ 'rotateP' . $device ] ) ) {
220 $perspective = ! empty( $value[ 'rotateP' . $device ] ) ? $value[ 'rotateP' . $device ] : 0;
221 $transformations[] = 'perspective(' . $perspective . 'px)';
222 }
223
224 if ( Helper::has_responsive_value( $value[ 'scale' . $device ] ?? null ) ) {
225 $transformations[] = 'scale(' . $value[ 'scale' . $device ] . ')';
226 }
227
228 if ( Helper::has_responsive_value( $value[ 'scaleX' . $device ] ?? null ) ) {
229 $transformations[] = 'scaleX(' . $value[ 'scaleX' . $device ] . ')';
230 }
231
232 if ( Helper::has_responsive_value( $value[ 'scaleY' . $device ] ?? null ) ) {
233 $transformations[] = 'scaleY(' . $value[ 'scaleY' . $device ] . ')';
234 }
235
236 if ( isset( $value['flipHorizontal'] ) && $value['flipHorizontal'] !== false ) {
237 $transformations[] = 'scaleX(-1)';
238 }
239
240 if ( isset( $value['flipVertical'] ) && $value['flipVertical'] !== false ) {
241 $transformations[] = 'scaleY(-1)';
242 }
243
244 if ( Helper::has_responsive_value( $value[ 'offsetX' . $device ] ?? null ) ) {
245 $transformations[] = 'translateX(' . $value[ 'offsetX' . $device ] . $x_offset_unit . ')';
246 }
247
248 if ( Helper::has_responsive_value( $value[ 'offsetY' . $device ] ?? null ) ) {
249 $transformations[] = 'translateY(' . $value[ 'offsetY' . $device ] . $y_offset_unit . ')';
250 }
251
252 if ( Helper::has_responsive_value( $value[ 'skewX' . $device ] ?? null ) ) {
253 $transformations[] = 'skewX(' . $value[ 'skewX' . $device ] . 'deg)';
254 }
255
256 if ( Helper::has_responsive_value( $value[ 'skewY' . $device ] ?? null ) ) {
257 $transformations[] = 'skewY(' . $value[ 'skewY' . $device ] . 'deg)';
258 }
259
260 if ( ! empty( $value[ 'xAnchorPoint' . $device ] ) ) {
261 $transformOrigin = $value[ 'yAnchorPoint' . $device ] . ' ' . $value[ 'xAnchorPoint' . $device ];
262 }
263
264 if ( ! empty( $value[ 'yAnchorPoint' . $device ] ) ) {
265 $transformOrigin = $value[ 'yAnchorPoint' . $device ] . ' ' . $value[ 'xAnchorPoint' . $device ];
266 }
267
268 if ( $transformOrigin ) {
269 $css['transform-origin'] = $transformOrigin;
270 }
271
272 if ( ! empty( $transformations ) ) {
273 $css[ $property ] = implode( ' ', $transformations );
274 }
275
276 return $css;
277 }
278
279 public static function get_hover_css( $attribute_value, $property = '', $device = '' ) {
280 $value = wp_parse_args( $attribute_value, $device ? self::responsive_defaults() : self::get_attribute_default_value( false ) );
281 $transformations = [];
282 $transformOrigin = '';
283 $x_offset_hover_unit = ( Helper::get_responsive_value( $value, 'offsetXHUnit', $device ) ?: 'px' );
284 $y_offset_hover_unit = ( Helper::get_responsive_value( $value, 'offsetYHUnit', $device ) ?: 'px' );
285
286 if ( '' !== $value[ 'rotateH' . $device ] ) {
287 $rotateH = isset( $value[ 'rotateH' . $device ] ) ? $value[ 'rotateH' . $device ] : 0;
288 $transformations[] = 'rotate(' . $rotateH . 'deg)';
289 }
290
291 if ( '' !== $value[ 'rotateXH' . $device ] ) {
292 $transformations[] = 'rotateX(' . $value[ 'rotateXH' . $device ] . 'deg)';
293 }
294
295 if ( '' !== $value[ 'rotateYH' . $device ] ) {
296 $transformations[] = 'rotateY(' . $value[ 'rotateYH' . $device ] . 'deg)';
297 }
298
299 if ( $value[ 'rotate3DH' . $device ] !== false && isset( $value[ 'rotateH' . $device ] ) && $value[ 'rotateH' . $device ] >= 0 ) {
300 $rotateH = isset( $value[ 'rotateH' . $device ] ) ? $value[ 'rotateH' . $device ] : 0;
301 $transformations[] = 'rotateZ(' . $rotateH . 'deg)';
302 }
303
304 if ( '' !== $value[ 'rotatePH' . $device ] ) {
305 $rotatePH = isset( $value[ 'rotatePH' . $device ] ) ? $value[ 'rotatePH' . $device ] : 0;
306 $transformations[] = 'perspective(' . $rotatePH . 'px)';
307 }
308
309 if ( '' !== $value[ 'scaleH' . $device ] ) {
310 $transformations[] = 'scale(' . $value[ 'scaleH' . $device ] . ')';
311 }
312
313 if ( '' !== $value[ 'scaleXH' . $device ] ) {
314 $transformations[] = 'scaleX(' . $value[ 'scaleXH' . $device ] . ')';
315 }
316
317 if ( '' !== $value[ 'scaleYH' . $device ] ) {
318 $transformations[] = 'scaleY(' . $value[ 'scaleYH' . $device ] . ')';
319 }
320
321 if ( '' !== $value[ 'offsetXH' . $device ] ) {
322 $transformations[] = 'translateX(' . $value[ 'offsetXH' . $device ] . $x_offset_hover_unit . ')';
323 }
324
325 if ( '' !== $value[ 'offsetYH' . $device ] ) {
326 $transformations[] = 'translateY(' . $value[ 'offsetYH' . $device ] . $y_offset_hover_unit . ')';
327 }
328
329 if ( '' !== $value[ 'skewXH' . $device ] ) {
330 $transformations[] = 'skewX(' . $value[ 'skewXH' . $device ] . 'deg)';
331 }
332
333 if ( '' !== $value[ 'skewYH' . $device ] ) {
334 $transformations[] = 'skewY(' . $value[ 'skewYH' . $device ] . 'deg)';
335 }
336
337 if ( $value[ 'xAnchorPointH' . $device ] || $value[ 'yAnchorPointH' . $device ] ) {
338 $transformOrigin = $value[ 'yAnchorPointH' . $device ] . ' ' . $value[ 'xAnchorPointH' . $device ];
339 }
340
341 if ( count( $transformations ) ) {
342 if ( false !== $value['flipHorizontalH'] ) {
343 $transformations[] = 'scaleX(-1)';
344 }
345
346 if ( false !== $value['flipVerticalH'] ) {
347 $transformations[] = 'scaleY(-1)';
348 }
349 }
350
351 $css = [];
352
353 if ( 0 !== count( $transformations ) ) {
354 $css[ $property ] = implode( ' ', $transformations );
355 }
356
357 if ( $transformOrigin ) {
358 $css['transform-origin'] = $transformOrigin;
359 }
360
361 if ( ! empty( $transformations ) ) {
362 $css[ $property ] = implode( ' ', $transformations );
363 }
364
365 if ( isset( $value[ 'transitionH' . $device ] ) && $value[ 'transitionH' . $device ] !== '' ) {
366 $css['transition-duration'] = "{$value['transitionH' . $device]}s";
367 }
368
369 return $css;
370 }
371 }
372