PluginProbe
Tableberg – Simple Gutenberg Table Block / trunk
Tableberg – Simple Gutenberg Table Block vtrunk
1.1.4 1.1.3 1.1.2 1.1.1 1.1.0 1.0.5 1.0.4 1.0.3 1.0.2 1.0.1 trunk 0.0.2 0.2.1 0.3.2 0.3.3 0.4.1 0.5.0 0.5.1 0.5.2 0.5.3 0.5.4 0.5.5 0.5.6 0.5.7 0.5.8 All 41 releases
tableberg / renderer / Text / TextAttrs.php

TextAttrs.php in Tableberg – Simple Gutenberg Table Block trunk, at renderer/Text/TextAttrs.php

109 lines 2.8 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace Tableberg\Renderer\Text;
4
5 use Tableberg\Renderer\Attrs\StringAttr;
6 use Tableberg\Renderer\Attrs\Sides;
7
8 use function Tableberg\Renderer\getOrNull;
9
10 class TextAttrs {
11 /** @var StringAttr */
12 public $content;
13
14 /** @var StringAttr */
15 public $align;
16
17 /** @var TextStyles */
18 public $styles;
19
20 /**
21 * @param array<string, mixed>|null $data
22 * @return self
23 */
24 public static function from_array($data) {
25 $data = is_array($data) ? $data : [];
26 $defaults = Defaults::get_defaults();
27
28 $instance = new self();
29 $instance->content = new StringAttr(
30 getOrNull($data['content']),
31 $defaults['content']
32 );
33 $instance->align = new StringAttr(
34 getOrNull($data['align']),
35 $defaults['align'],
36 ['left', 'center', 'right']
37 );
38 $instance->styles = TextStyles::from_array(getOrNull($data['styles']));
39
40 return $instance;
41 }
42 }
43
44 class TextStyles {
45 /** @var StringAttr */
46 public $textColor;
47
48 /** @var StringAttr */
49 public $linkColor;
50
51 /** @var StringAttr */
52 public $backgroundColor;
53
54 /** @var StringAttr */
55 public $fontSize;
56
57 /** @var Sides */
58 public $padding;
59
60 /** @var Sides */
61 public $margin;
62
63 /**
64 * @param array<string, mixed>|null $data
65 * @return self
66 */
67 public static function from_array($data) {
68 $data = is_array($data) ? $data : [];
69 $defaults = Defaults::get_defaults();
70 $d = getOrNull($defaults['styles']);
71
72 $defaultTextColor = getOrNull($d['textColor']);
73 $defaultLinkColor = getOrNull($d['linkColor']);
74 $defaultBackgroundColor = getOrNull($d['backgroundColor']);
75 $defaultFontSize = getOrNull($d['fontSize']);
76
77 $instance = new self();
78 $instance->textColor = new StringAttr(
79 getOrNull($data['textColor']),
80 $defaultTextColor
81 );
82 $instance->linkColor = new StringAttr(
83 getOrNull($data['linkColor']),
84 $defaultLinkColor
85 );
86 $instance->backgroundColor = new StringAttr(
87 getOrNull($data['backgroundColor']),
88 $defaultBackgroundColor
89 );
90 $instance->fontSize = new StringAttr(
91 getOrNull($data['fontSize']),
92 $defaultFontSize
93 );
94
95 $defaultPadding = getOrNull($d['padding']);
96 $defaultMargin = getOrNull($d['margin']);
97 $instance->padding = Sides::from_array(
98 getOrNull($data['padding']),
99 is_array($defaultPadding) ? $defaultPadding : []
100 );
101 $instance->margin = Sides::from_array(
102 getOrNull($data['margin']),
103 is_array($defaultMargin) ? $defaultMargin : []
104 );
105
106 return $instance;
107 }
108 }
109