data; $newData['resetButtonTitle'] = $resetButtonLabel; // Return a new instance with the updated data return new self( identifier: $this->identifier, module: $this->module, successTitle: $this->successTitle, successMessage: $this->successMessage, data: $newData ); } public function jsonSerialize(): mixed { return [ 'identifier' => $this->identifier, 'module' => $this->module, 'data' => $this->data, 'labels' => [ 'successTitle' => $this->successTitle, 'successDescription' => $this->successMessage, ], ]; } public static function createRedirectFinisher(string $url, string $successTitle, string $successMessage): self { return new self( identifier: 'redirect', module: '@typo3/backend/wizard/finisher/redirect-finisher.js', successTitle: $successTitle, successMessage: $successMessage, data: [ 'url' => $url, ] ); } public static function createNoopFinisher(string $successTitle, string $successMessage): self { return new self( identifier: 'noop', module: '@typo3/backend/wizard/finisher/noop-finisher.js', successTitle: $successTitle, successMessage: $successMessage, ); } public static function createReloadFinisher(string $successTitle, string $successMessage): self { return new self( identifier: 'reload', module: '@typo3/backend/wizard/finisher/reload-finisher.js', successTitle: $successTitle, successMessage: $successMessage, ); } public static function createCustomFinisher( string $identifier, string $module, string $successTitle, string $successMessage, array $data = [] ): self { return new self($identifier, $module, $successTitle, $successMessage, $data); } }