* SPDX-License-Identifier: AGPL-3.0-or-later */ namespace KTXF\Resource\Documents\Entity; use KTXF\Resource\Provider\Node\NodeMutableAbstract; use KTXF\Resource\Provider\Node\NodePropertiesMutableInterface; /** * Abstract Chrono Entity Mutable Class * * Provides common implementation for mutable chrono entities * * @since 2025.05.01 */ abstract class EntityMutableAbstract extends NodeMutableAbstract implements EntityMutableInterface { public const JSON_TYPE = EntityMutableInterface::JSON_TYPE; protected EntityPropertiesMutableAbstract $properties; /** * @inheritDoc */ public function getProperties(): EntityPropertiesMutableInterface { return $this->properties; } /** * @inheritDoc */ public function setProperties(NodePropertiesMutableInterface $value): static { if (!$value instanceof EntityPropertiesMutableInterface) { throw new \InvalidArgumentException('Properties must implement EntityPropertiesMutableInterface'); } $this->properties->setDataRaw($value->getDataRaw()); return $this; } }