* SPDX-License-Identifier: AGPL-3.0-or-later */ namespace KTXF\Chrono\Collection; use KTXF\Resource\Provider\Node\NodePropertiesBaseAbstract; /** * Abstract Chrono Collection Properties Base Class * * Provides common implementation for chrono collection properties * * @since 2025.05.01 */ abstract class CollectionPropertiesBaseAbstract extends NodePropertiesBaseAbstract implements CollectionPropertiesBaseInterface { public const JSON_TYPE = CollectionPropertiesBaseInterface::JSON_TYPE; /** * @inheritDoc */ public function content(): CollectionContent { $content = $this->data[self::JSON_PROPERTY_CONTENTS] ?? null; if ($content instanceof CollectionContent) { return $content; } if (is_string($content)) { return CollectionContent::tryFrom($content) ?? CollectionContent::Event; } return CollectionContent::Event; } /** * @inheritDoc */ public function getLabel(): string { return $this->data[self::JSON_PROPERTY_LABEL] ?? ''; } /** * @inheritDoc */ public function getDescription(): ?string { return $this->data[self::JSON_PROPERTY_DESCRIPTION] ?? null; } /** * @inheritDoc */ public function getPriority(): ?int { return $this->data[self::JSON_PROPERTY_PRIORITY] ?? null; } /** * @inheritDoc */ public function getVisibility(): ?bool { return $this->data[self::JSON_PROPERTY_VISIBILITY] ?? null; } /** * @inheritDoc */ public function getColor(): ?string { return $this->data[self::JSON_PROPERTY_COLOR] ?? null; } }