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 / TextRenderer.php

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

68 lines 2.2 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 class TextRenderer {
6 /**
7 * @param array<string, mixed>|null $attributes
8 * @return string
9 */
10 public function render($attributes) {
11 $attrs = TextAttrs::from_array($attributes);
12
13 $marginShorthand = $this->sides_shorthand($attrs->styles->margin);
14 $paddingShorthand = $this->sides_shorthand($attrs->styles->padding);
15
16 $styleValues = [];
17 $styleValues[] = 'margin:' . ($marginShorthand !== '' ? $marginShorthand : '0');
18 if ($paddingShorthand !== '') {
19 $styleValues[] = 'padding:' . $paddingShorthand;
20 }
21
22 $styleValues[] = 'text-align:' . $attrs->align->asAttr();
23
24 if ($attrs->styles->textColor->isNotEmpty()) {
25 $styleValues[] = 'color:' . $attrs->styles->textColor->asAttr();
26 }
27
28 if ($attrs->styles->linkColor->isNotEmpty()) {
29 $styleValues[] = '--tableberg-text-link-color:' . $attrs->styles->linkColor->asAttr();
30 }
31
32 if ($attrs->styles->backgroundColor->isNotEmpty()) {
33 $styleValues[] = 'background-color:' . $attrs->styles->backgroundColor->asAttr();
34 }
35
36 if ($attrs->styles->fontSize->isNotEmpty()) {
37 $styleValues[] = 'font-size:' . $attrs->styles->fontSize->asAttr();
38 }
39
40 $styleAttr = implode(';', $styleValues);
41
42 return
43 "<p class='tableberg-text-element' style='{$styleAttr}'>
44 {$attrs->content->asHtml()}
45 </p>";
46 }
47
48 /**
49 * Build a CSS shorthand from a 4-side value; returns '' when all sides
50 * are empty so the property can be skipped.
51 *
52 * @param Sides $sides
53 * @return string
54 */
55 private function sides_shorthand($sides) {
56 $top = $sides->top->isNotEmpty() ? $sides->top->asAttr() : '0';
57 $right = $sides->right->isNotEmpty() ? $sides->right->asAttr() : '0';
58 $bottom = $sides->bottom->isNotEmpty() ? $sides->bottom->asAttr() : '0';
59 $left = $sides->left->isNotEmpty() ? $sides->left->asAttr() : '0';
60
61 if ($top === '0' && $right === '0' && $bottom === '0' && $left === '0') {
62 return '';
63 }
64
65 return "{$top} {$right} {$bottom} {$left}";
66 }
67 }
68