PluginProbe
Tableberg – Simple Gutenberg Table Block / 1.1.0
Tableberg – Simple Gutenberg Table Block v1.1.0
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.1.0, at renderer/Cell/CellRenderContext.php

221 lines 6.4 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 /** @var bool */
103 public $stickyFirstCol;
104
105 /**
106 * @param mixed $row
107 * @param mixed $col
108 * @param mixed $rowSpan
109 * @param mixed $colSpan
110 * @param mixed $tag
111 * @param mixed $globalCellStyles
112 * @param array<int, \Tableberg\Renderer\Table\CellElement> $elements
113 * @param array<string, \Tableberg\Renderer\Attrs\StringAttr|array>|null $cellStyleOverride
114 * @param array<string, mixed>|null $ribbon
115 * @param string|null $sortableType
116 * @param string|null $width
117 * @param string|null $height
118 * @param bool $stickyHeader
119 * @param string|null $className
120 * @return self
121 */
122 public static function create(
123 $row,
124 $col,
125 $rowSpan,
126 $colSpan,
127 $tag,
128 $globalCellStyles,
129 $elements,
130 $cellStyleOverride,
131 $ribbon,
132 $sortableType = null,
133 $width = null,
134 $height = null,
135 $stickyHeader = false,
136 $stickyFirstCol = false,
137 $className = null
138 ) {
139 $instance = new self();
140
141 $instance->hasCellCoords = is_numeric($row) && is_numeric($col);
142 $instance->row = $instance->hasCellCoords ? (int) $row : 0;
143 $instance->col = $instance->hasCellCoords ? (int) $col : 0;
144
145 $instance->rowSpan = is_numeric($rowSpan) ? (int) $rowSpan : 1;
146 $instance->colSpan = is_numeric($colSpan) ? (int) $colSpan : 1;
147 if ($instance->rowSpan < 1) {
148 $instance->rowSpan = 1;
149 }
150 if ($instance->colSpan < 1) {
151 $instance->colSpan = 1;
152 }
153
154 $instance->tag = $tag === 'th' ? 'th' : 'td';
155
156 $globalCellStyles = is_array($globalCellStyles) ? $globalCellStyles : [];
157 $globalPadding = getArrayOrNull($globalCellStyles['padding']) ?? [];
158 $globalBorder = getArrayOrNull($globalCellStyles['border']) ?? [];
159 $globalBorderRadius = getArrayOrNull($globalCellStyles['borderRadius']) ?? [];
160
161 $instance->paddingTop = getStringOrNull($globalPadding['top']) ?? '';
162 $instance->paddingRight = getStringOrNull($globalPadding['right']) ?? '';
163 $instance->paddingBottom = getStringOrNull($globalPadding['bottom']) ?? '';
164 $instance->paddingLeft = getStringOrNull($globalPadding['left']) ?? '';
165
166 $orientation = getStringOrNull($globalCellStyles['orientation']) ?? 'vertical';
167 if (!in_array($orientation, ['vertical', 'horizontal'], true)) {
168 $orientation = 'vertical';
169 }
170 $instance->orientation = $orientation;
171
172 $instance->elementGap =
173 getStringOrNull($globalCellStyles['elementGap'])
174 ?? 'var(--wp--preset--spacing--20)';
175
176 $wrap = getStringOrNull($globalCellStyles['wrap']) ?? 'wrap';
177 if (!in_array($wrap, ['wrap', 'nowrap'], true)) {
178 $wrap = 'wrap';
179 }
180 $instance->wrap = $wrap;
181
182 $verticalAlign = getStringOrNull($globalCellStyles['verticalAlign']) ?? 'middle';
183 if (!in_array($verticalAlign, ['top', 'middle', 'bottom'], true)) {
184 $verticalAlign = 'middle';
185 }
186 $instance->verticalAlign = $verticalAlign;
187
188 $instance->borderTop = getStringOrNull($globalBorder['top']) ?? '';
189 $instance->borderRight = getStringOrNull($globalBorder['right']) ?? '';
190 $instance->borderBottom = getStringOrNull($globalBorder['bottom']) ?? '';
191 $instance->borderLeft = getStringOrNull($globalBorder['left']) ?? '';
192
193 $instance->borderTopLeftRadius = getStringOrNull($globalBorderRadius['topLeft']) ?? '';
194 $instance->borderTopRightRadius = getStringOrNull($globalBorderRadius['topRight']) ?? '';
195 $instance->borderBottomRightRadius = getStringOrNull($globalBorderRadius['bottomRight']) ?? '';
196 $instance->borderBottomLeftRadius = getStringOrNull($globalBorderRadius['bottomLeft']) ?? '';
197
198 $instance->backgroundColor = getStringOrNull($globalCellStyles['backgroundColor']) ?? '';
199
200 $instance->elements = is_array($elements) ? $elements : [];
201 $instance->cellStyleOverride = getArrayOrNull($cellStyleOverride);
202
203 $instance->ribbon = getArrayOrNull($ribbon);
204
205 $sortableType = getStringOrNull($sortableType);
206 if (in_array($sortableType, ['text', 'number', 'date'], true)) {
207 $instance->sortableType = $sortableType;
208 } else {
209 $instance->sortableType = null;
210 }
211
212 $instance->width = getStringOrNull($width);
213 $instance->height = getStringOrNull($height);
214 $instance->stickyHeader = (bool) $stickyHeader;
215 $instance->stickyFirstCol = (bool) $stickyFirstCol;
216 $instance->className = trim((string) (getStringOrNull($className) ?? ''));
217
218 return $instance;
219 }
220 }
221