*/ private array $properties = []; /** * @var ResultItemAction[] */ private array $actions = []; private ?ResultItemAction $defaultAction = null; private array $extraData = []; private array $internalData = []; /** * @param class-string $providerClassName */ public function __construct(private readonly string $providerClassName) {} public function getProviderClassName(): string { return $this->providerClassName; } public function setItemTitle(string $itemTitle): self { $this->itemTitle = $itemTitle; return $this; } public function setTypeLabel(string $typeLabel): self { $this->typeLabel = $typeLabel; return $this; } public function setIcon(Icon $icon): self { $this->icon = $icon; return $this; } public function setThumbnailUrl(?string $thumbnailUrl): self { $this->thumbnailUrl = $thumbnailUrl; return $this; } public function addProperty(string $label, string $value): self { $this->properties[$label] = $value; return $this; } public function setActions(ResultItemAction ...$action): self { $this->actions = $action; return $this; } public function addAction(ResultItemAction $action): self { $this->actions[] = $action; return $this; } public function getDefaultAction(): ?ResultItemAction { return $this->defaultAction; } public function setDefaultAction(?ResultItemAction $defaultAction): ResultItem { $this->defaultAction = $defaultAction; return $this; } public function getExtraData(): array { return $this->extraData; } public function setExtraData(array $extraData): ResultItem { $this->extraData = $extraData; return $this; } public function getInternalData(): array { return $this->internalData; } public function setInternalData(array $internalData): ResultItem { $this->internalData = $internalData; return $this; } public function setLanguage(?array $language): self { $this->language = $language; return $this; } public function jsonSerialize(): array { return [ 'provider' => $this->providerClassName, 'itemTitle' => $this->itemTitle, 'typeLabel' => $this->typeLabel, 'icon' => [ 'identifier' => $this->icon?->getIdentifier(), 'overlay' => $this->icon?->getOverlayIcon()?->getIdentifier(), ], 'thumbnailUrl' => $this->thumbnailUrl, 'properties' => $this->properties, 'actions' => $this->actions, 'defaultAction' => $this->defaultAction ?? $this->actions[0], 'language' => $this->language, 'extraData' => $this->extraData, ]; } }