PluginProbe ʕ •ᴥ•ʔ
Kubio AI Page Builder / 1.6.4
Kubio AI Page Builder v1.6.4
2.8.3 2.8.2 2.8.1 trunk 1.0.0 1.0.1 1.1.0 1.2.0 1.2.1 1.2.2 1.2.3 1.3.0 1.3.1 1.3.2 1.4.0 1.4.1 1.4.2 1.4.3 1.5.0 1.6.0 1.6.1 1.6.2 1.6.3 1.6.4 1.7.0 1.7.1 1.7.2 1.7.3 1.8.0 1.8.1 1.8.2 1.9.0 2.0.0 2.1.1 2.1.2 2.1.3 2.2.0 2.2.3 2.2.4 2.2.5 2.3.0 2.3.1 2.3.3 2.3.4 2.4.0 2.4.1 2.4.2 2.4.3 2.4.5 2.5.0 2.5.1 2.5.2 2.5.3 2.6.0 2.6.1 2.6.2 2.6.3 2.6.5 2.6.6 2.6.7 2.7.0 2.7.1 2.7.2 2.7.3 2.8.0
kubio / lib / src / Core / StyleManager / GlobalStyleRender.php
kubio / lib / src / Core / StyleManager Last commit date
Generics 4 years ago Props 3 years ago BlockStyleRender.php 4 years ago DynamicStyles.php 3 years ago GlobalStyleRender.php 4 years ago MainAttribute.php 4 years ago ParserUtils.php 4 years ago StyleManager.php 4 years ago StyleParser.php 4 years ago StyleRender.php 3 years ago Utils.php 4 years ago
GlobalStyleRender.php
134 lines
1 <?php
2
3 namespace Kubio\Core\StyleManager;
4
5 use IlluminateAgnostic\Arr\Support\Arr;
6 use Kubio\Config;
7 use Kubio\Core\Blocks\BlockBase;
8 use Kubio\Core\Blocks\DataHelper;
9 use Kubio\Core\LodashBasic;
10
11 class GlobalStyleRender extends StyleRender {
12
13 const V_SPACE_NEGATIVE = 'vSpaceNegative';
14 const V_SPACE = 'vSpace';
15 const H_SPACE_GROUP = 'hSpaceGroup';
16 const H_SPACE = 'hSpace';
17 const GLOBAL_PREFIX = '#kubio';
18 const BODY_SELECTOR = '';
19 const KUBIO_BLOCK_PREFIX = '[data-kubio]';
20
21 private $dataHelper = null;
22 public function __construct( $main_attr ) {
23 $this->dataHelper = new DataHelper( array(), array( Config::$mainAttributeKey => $main_attr ) );
24
25 $styledElementsByName = Config::value( 'definitions.globalStyle.elementsByName' );
26 $styledElementsEnum = Config::value( 'definitions.globalStyle.elementsEnum' );
27
28 $styledElementsByName = $this->maybePrefixStyledElements( $styledElementsByName );
29
30 $normalized = self::normalizeData( $main_attr, $styledElementsByName, $styledElementsEnum );
31 $this->model = (object) array_merge(
32 LodashBasic::get( $normalized, 'model', array() ),
33 array(
34 'globalStyle' => true,
35 )
36 );
37 parent::__construct(
38 array(
39 'styledElementsByName' => $styledElementsByName,
40 'styledElementsEnum' => $styledElementsEnum,
41 'wrapperElement' => false,
42 )
43 );
44 }
45
46
47 public function maybePrefixStyledElements( $styledElementsByName ) {
48 foreach ( $styledElementsByName as $name => $styled_element ) {
49
50 //if the styled element has isGlobalSelector true do not change it.
51 if ( isset( $styled_element['selector'] ) && Arr::get( $styled_element, 'isGlobalSelector', false ) || $name === 'body' ) {
52 continue;
53 }
54
55 if ( isset( $styled_element['selector'] ) && Arr::get( $styled_element, 'withGlobalPrefix', false ) ) {
56 $prefix = GlobalStyleRender::GLOBAL_PREFIX . ' ' . GlobalStyleRender::BODY_SELECTOR;
57 } elseif ( isset( $styled_element['selector'] ) && Arr::get( $styled_element, 'withKubioBlockPrefix', false ) ) {
58 $prefix = GlobalStyleRender::KUBIO_BLOCK_PREFIX;
59 } else {
60 $prefix = GlobalStyleRender::BODY_SELECTOR;
61 }
62 $selector = $styled_element['selector'];
63
64 if ( is_string( $selector ) ) {
65 $styled_element['selector'] = $this->prefixSelector( $selector, $prefix );
66 } else {
67 foreach ( $selector as $state => $state_selector ) {
68 $styled_element['selector'][ $state ] = $this->prefixSelector( $state_selector, $prefix );
69 }
70 }
71
72 $styledElementsByName[ $name ] = $styled_element;
73 }
74
75 return $styledElementsByName;
76 }
77
78 private function prefixSelector( $selector, $prefix ) {
79 $selector_parts = explode( ',', $selector );
80
81 foreach ( $selector_parts as $index => $value ) {
82 $selector_parts[ $index ] = $prefix . ' ' . trim( $value );
83 }
84
85 return implode( ',', $selector_parts );
86 }
87
88 public function getDynamicStyle() {
89 $vSpaceByMedia = $this->dataHelper->getPropByMedia( 'vSpace' );
90 $hSpaceByMedia = $this->dataHelper->getPropByMedia( 'hSpace' );
91
92 return self::normalizeDynamicStyle(
93 array(
94 self::V_SPACE_NEGATIVE => DynamicStyles::vSpace(
95 $vSpaceByMedia,
96 true
97 ),
98 self::V_SPACE => DynamicStyles::vSpace(
99 $vSpaceByMedia
100 ),
101 self::H_SPACE_GROUP => DynamicStyles::hSpaceParent(
102 $hSpaceByMedia
103 ),
104 self::H_SPACE => DynamicStyles::hSpace(
105 $hSpaceByMedia
106 ),
107 )
108 );
109 }
110
111 public function export( $dynamicStyle = null ) {
112 $style = $this->model->style['shared'];
113 $css = array();
114
115 $css['global'] = $this->convertStyleToCss(
116 $style,
117 array(
118 'styledElementsByName' => $this->styledElementsByName,
119 'styleType' => 'global',
120 )
121 );
122
123 $css['dynamic'] = $this->convertStyleToCss(
124 $this->getDynamicStyle(),
125 array(
126 'styledElementsByName' => $this->styledElementsByName,
127 'styleType' => 'global',
128 )
129 );
130
131 return $css;
132 }
133 }
134