PluginProbe
Tableberg – Simple Gutenberg Table Block / 1.0.3
Tableberg – Simple Gutenberg Table Block v1.0.3
1.1.5 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 All 42 releases
tableberg / renderer / Cell / CellRenderContext.php

CellRenderContext.php in Tableberg – Simple Gutenberg Table Block 1.0.3, at renderer/Cell/CellRenderContext.php

216 lines 6.3 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\Cell;
4
5 use function Tableberg\Renderer\getArrayOrNull;
6 use function Tableberg\Renderer\getStringOrNull;
7
8 class CellRenderContext {
9 /** @var string */
10 public $className;
11
12 /** @var bool */
13 public $hasCellCoords;
14
15 /** @var int */
16 public $row;
17
18 /** @var int */
19 public $col;
20
21 /** @var int */
22 public $rowSpan;
23
24 /** @var int */
25 public $colSpan;
26
27 /** @var string */
28 public $tag;
29
30 /** @var string */
31 public $paddingTop;
32
33 /** @var string */
34 public $paddingRight;
35
36 /** @var string */
37 public $paddingBottom;
38
39 /** @var string */
40 public $paddingLeft;
41
42 /** @var string */
43 public $backgroundColor;
44
45 /** @var string */
46 public $orientation;
47
48 /** @var string */
49 public $elementGap;
50
51 /** @var string */
52 public $wrap;
53
54 /** @var string */
55 public $verticalAlign;
56
57 /** @var string */
58 public $borderTop;
59
60 /** @var string */
61 public $borderRight;
62
63 /** @var string */
64 public $borderBottom;
65
66 /** @var string */
67 public $borderLeft;
68
69 /** @var string */
70 public $borderTopLeftRadius;
71
72 /** @var string */
73 public $borderTopRightRadius;
74
75 /** @var string */
76 public $borderBottomRightRadius;
77
78 /** @var string */
79 public $borderBottomLeftRadius;
80
81 /** @var array<int, \Tableberg\Renderer\Table\CellElement> */
82 public $elements;
83
84 /** @var array<string, \Tableberg\Renderer\Attrs\StringAttr|array>|null */
85 public $cellStyleOverride;
86
87 /** @var array<string, mixed>|null */
88 public $ribbon;
89
90 /** @var string|null */
91 public $sortableType;
92
93 /** @var string|null */
94 public $width;
95
96 /** @var string|null */
97 public $height;
98
99 /** @var bool */
100 public $stickyHeader;
101
102 /**
103 * @param mixed $row
104 * @param mixed $col
105 * @param mixed $rowSpan
106 * @param mixed $colSpan
107 * @param mixed $tag
108 * @param mixed $globalCellStyles
109 * @param array<int, \Tableberg\Renderer\Table\CellElement> $elements
110 * @param array<string, \Tableberg\Renderer\Attrs\StringAttr|array>|null $cellStyleOverride
111 * @param array<string, mixed>|null $ribbon
112 * @param string|null $sortableType
113 * @param string|null $width
114 * @param string|null $height
115 * @param bool $stickyHeader
116 * @param string|null $className
117 * @return self
118 */
119 public static function create(
120 $row,
121 $col,
122 $rowSpan,
123 $colSpan,
124 $tag,
125 $globalCellStyles,
126 $elements,
127 $cellStyleOverride,
128 $ribbon,
129 $sortableType = null,
130 $width = null,
131 $height = null,
132 $stickyHeader = false,
133 $className = null
134 ) {
135 $instance = new self();
136
137 $instance->hasCellCoords = is_numeric($row) && is_numeric($col);
138 $instance->row = $instance->hasCellCoords ? (int) $row : 0;
139 $instance->col = $instance->hasCellCoords ? (int) $col : 0;
140
141 $instance->rowSpan = is_numeric($rowSpan) ? (int) $rowSpan : 1;
142 $instance->colSpan = is_numeric($colSpan) ? (int) $colSpan : 1;
143 if ($instance->rowSpan < 1) {
144 $instance->rowSpan = 1;
145 }
146 if ($instance->colSpan < 1) {
147 $instance->colSpan = 1;
148 }
149
150 $instance->tag = $tag === 'th' ? 'th' : 'td';
151
152 $globalCellStyles = is_array($globalCellStyles) ? $globalCellStyles : [];
153 $globalPadding = getArrayOrNull($globalCellStyles['padding']) ?? [];
154 $globalBorder = getArrayOrNull($globalCellStyles['border']) ?? [];
155 $globalBorderRadius = getArrayOrNull($globalCellStyles['borderRadius']) ?? [];
156
157 $instance->paddingTop = getStringOrNull($globalPadding['top']) ?? '';
158 $instance->paddingRight = getStringOrNull($globalPadding['right']) ?? '';
159 $instance->paddingBottom = getStringOrNull($globalPadding['bottom']) ?? '';
160 $instance->paddingLeft = getStringOrNull($globalPadding['left']) ?? '';
161
162 $orientation = getStringOrNull($globalCellStyles['orientation']) ?? 'vertical';
163 if (!in_array($orientation, ['vertical', 'horizontal'], true)) {
164 $orientation = 'vertical';
165 }
166 $instance->orientation = $orientation;
167
168 $instance->elementGap =
169 getStringOrNull($globalCellStyles['elementGap'])
170 ?? 'var(--wp--preset--spacing--20)';
171
172 $wrap = getStringOrNull($globalCellStyles['wrap']) ?? 'wrap';
173 if (!in_array($wrap, ['wrap', 'nowrap'], true)) {
174 $wrap = 'wrap';
175 }
176 $instance->wrap = $wrap;
177
178 $verticalAlign = getStringOrNull($globalCellStyles['verticalAlign']) ?? 'middle';
179 if (!in_array($verticalAlign, ['top', 'middle', 'bottom'], true)) {
180 $verticalAlign = 'middle';
181 }
182 $instance->verticalAlign = $verticalAlign;
183
184 $instance->borderTop = getStringOrNull($globalBorder['top']) ?? '';
185 $instance->borderRight = getStringOrNull($globalBorder['right']) ?? '';
186 $instance->borderBottom = getStringOrNull($globalBorder['bottom']) ?? '';
187 $instance->borderLeft = getStringOrNull($globalBorder['left']) ?? '';
188
189 $instance->borderTopLeftRadius = getStringOrNull($globalBorderRadius['topLeft']) ?? '';
190 $instance->borderTopRightRadius = getStringOrNull($globalBorderRadius['topRight']) ?? '';
191 $instance->borderBottomRightRadius = getStringOrNull($globalBorderRadius['bottomRight']) ?? '';
192 $instance->borderBottomLeftRadius = getStringOrNull($globalBorderRadius['bottomLeft']) ?? '';
193
194 $instance->backgroundColor = getStringOrNull($globalCellStyles['backgroundColor']) ?? '';
195
196 $instance->elements = is_array($elements) ? $elements : [];
197 $instance->cellStyleOverride = getArrayOrNull($cellStyleOverride);
198
199 $instance->ribbon = getArrayOrNull($ribbon);
200
201 $sortableType = getStringOrNull($sortableType);
202 if (in_array($sortableType, ['text', 'number', 'date'], true)) {
203 $instance->sortableType = $sortableType;
204 } else {
205 $instance->sortableType = null;
206 }
207
208 $instance->width = getStringOrNull($width);
209 $instance->height = getStringOrNull($height);
210 $instance->stickyHeader = (bool) $stickyHeader;
211 $instance->className = trim((string) (getStringOrNull($className) ?? ''));
212
213 return $instance;
214 }
215 }
216