*/ private array $globalAssignments = []; /** * @var list */ private array $javaScriptModuleInstructions = []; public function jsonSerialize(): array { return $this->toArray(); } public function addGlobalAssignment(array $payload): void { if (empty($payload)) { return; } $this->globalAssignments[] = $payload; } public function addJavaScriptModuleInstruction(JavaScriptModuleInstruction $instruction): void { $this->javaScriptModuleInstructions[] = $instruction; } /** * @return list * @internal */ public function toArray(): array { if ($this->isEmpty()) { return []; } $items = []; foreach ($this->globalAssignments as $item) { $items[] = [ 'type' => 'globalAssignment', 'payload' => $item, ]; } foreach ($this->javaScriptModuleInstructions as $item) { $items[] = [ 'type' => 'javaScriptModuleInstruction', 'payload' => $item, ]; } return $items; } public function isEmpty(): bool { return $this->globalAssignments === [] && empty($this->javaScriptModuleInstructions); } /** * @internal */ public function updateState(array $state): void { $this->globalAssignments = $state['globalAssignments'] ?? []; $this->javaScriptModuleInstructions = []; foreach ($state['javaScriptModuleInstructions'] ?? [] as $instruction) { $this->javaScriptModuleInstructions[] = JavaScriptModuleInstruction::fromState($instruction); } } /** * @internal */ public function getState(): array { return [ 'globalAssignments' => $this->globalAssignments, 'javaScriptModuleInstructions' => array_map( static fn(JavaScriptModuleInstruction $instruction): array => $instruction->getState(), $this->javaScriptModuleInstructions ), ]; } /** * @return list */ public function getGlobalAssignments(): array { return $this->globalAssignments; } /** * @return list */ public function getJavaScriptModuleInstructions(): array { return $this->javaScriptModuleInstructions; } }