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
← All changes | includes/controls/transform.php +371 -0 1.0-beta2 → 2.14.0 View file →
@@ -1,0 +1,371 @@
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 +}