TableCell::getColwidth()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 1
c 0
b 0
f 0
nc 1
nop 0
dl 0
loc 3
rs 10
1
<?php
2
3
declare(strict_types=1);
4
5
namespace DH\Adf\Node\Child;
6
7
use DH\Adf\Builder\BlockquoteBuilder;
8
use DH\Adf\Builder\BulletListBuilder;
9
use DH\Adf\Builder\CodeblockBuilder;
10
use DH\Adf\Builder\HeadingBuilder;
11
use DH\Adf\Builder\MediaGroupBuilder;
12
use DH\Adf\Builder\MediaSingleBuilder;
13
use DH\Adf\Builder\OrderedListBuilder;
14
use DH\Adf\Builder\PanelBuilder;
15
use DH\Adf\Builder\ParagraphBuilder;
16
use DH\Adf\Builder\RuleBuilder;
17
use DH\Adf\Node\Block\Blockquote;
18
use DH\Adf\Node\Block\BulletList;
19
use DH\Adf\Node\Block\CodeBlock;
20
use DH\Adf\Node\Block\Heading;
21
use DH\Adf\Node\Block\MediaGroup;
22
use DH\Adf\Node\Block\MediaSingle;
23
use DH\Adf\Node\Block\OrderedList;
24
use DH\Adf\Node\Block\Panel;
25
use DH\Adf\Node\Block\Paragraph;
26
use DH\Adf\Node\Block\Rule;
27
use DH\Adf\Node\Block\Table;
28
use DH\Adf\Node\BlockNode;
29
use DH\Adf\Node\Node;
30
use JsonSerializable;
31
32
/**
33
 * @see https://developer.atlassian.com/cloud/jira/platform/apis/document/nodes/table_cell
34
 */
35
class TableCell extends BlockNode implements JsonSerializable
36
{
37
    use BlockquoteBuilder;
38
    use BulletListBuilder;
39
    use CodeblockBuilder;
40
    use HeadingBuilder;
41
    use MediaGroupBuilder;
42
    use MediaSingleBuilder;
43
    use OrderedListBuilder;
44
    use PanelBuilder;
45
    use ParagraphBuilder;
46
    use RuleBuilder;
47
48
    protected string $type = 'tableCell';
49
    protected array $allowedContentTypes = [
50
        Blockquote::class,
51
        BulletList::class,
52
        CodeBlock::class,
53
        Heading::class,
54
        MediaGroup::class,
55
        MediaSingle::class,
56
        OrderedList::class,
57
        Panel::class,
58
        Paragraph::class,
59
        Rule::class,
60
    ];
61
    private ?string $background;
62
    private ?int $colspan;
63
    private ?int $rowspan;
64
    private ?array $colwidth;
65
66
    public function __construct(?string $background = null, ?int $colspan = null, ?int $rowspan = null, ?array $colwidth = null, ?BlockNode $parent = null)
67
    {
68
        parent::__construct($parent);
69
        $this->background = $background;
70
        $this->colspan = $colspan;
71
        $this->rowspan = $rowspan;
72
        $this->colwidth = $colwidth;
73
    }
74
75
    public static function load(array $data, ?BlockNode $parent = null): self
76
    {
77
        self::checkNodeData(static::class, $data);
78
79
        $node = new self(
80
            $data['attrs']['background'] ?? null,
81
            $data['attrs']['colspan'] ?? null,
82
            $data['attrs']['rowspan'] ?? null,
83
            $data['attrs']['colwidth'] ?? null,
84
            $parent
85
        );
86
87
        // set content if defined
88
        if (\array_key_exists('content', $data)) {
89
            foreach ($data['content'] as $nodeData) {
90
                $class = Node::NODE_MAPPING[$nodeData['type']];
91
                $child = $class::load($nodeData, $node);
92
93
                $node->append($child);
94
            }
95
        }
96
97
        return $node;
98
    }
99
100
    public function getBackground(): ?string
101
    {
102
        return $this->background;
103
    }
104
105
    public function getColspan(): ?int
106
    {
107
        return $this->colspan;
108
    }
109
110
    public function getRowspan(): ?int
111
    {
112
        return $this->rowspan;
113
    }
114
115
    public function getColwidth(): ?array
116
    {
117
        return $this->colwidth;
118
    }
119
120
    protected function attrs(): array
121
    {
122
        $attrs = parent::attrs();
123
124
        if ($this->background) {
125
            $attrs['background'] = $this->background;
126
        }
127
        if (null !== $this->colspan) {
128
            $attrs['colspan'] = $this->colspan;
129
        }
130
        if (null !== $this->rowspan) {
131
            $attrs['rowspan'] = $this->rowspan;
132
        }
133
        if (\is_array($this->colwidth)) {
134
            $attrs['colwidth'] = $this->colwidth;
135
        }
136
137
        return $attrs;
138
    }
139
}
140