[], RegisterOrLogin::class => [], Register::class => [], Cart::class => [], Methods::class => [Login::class, RegisterOrLogin::class, Register::class, RFF::class], RFF::class => [Login::class, RegisterOrLogin::class, Register::class], ]; public static array $steps = [ Setup::class, RegisterOrLogin::class, Cart::class, Methods::class, RFF::class, Submit::class, ]; public array $context = []; #[On('purchase.context')] public function handleContext(string $property, $value): self { $clone = $this->context; data_set($this->context, $property, $value); // The following may not be needed, as we can pass arround $context. // cache()->set($this->hash, $this->context); if ($clone !== $this->context) { $this->id = Str::uuid(); } return $this; } #[On('purchase.next')] public function handleNext(): void { if ($this->step < count($this->steps) - 1) { $this->step++; } $this->id = Str::uuid(); } #[On('purchase.forward')] public function handleForward(string $component): void { $this->step = array_search($component, $this->steps); $this->id = Str::uuid(); } #[Computed()] public function component(): string { return $this->steps[$this->step]; } #[Computed()] public function componentUniqueId(): string { return "purchase-{$this->id}"; } #[Computed()] public function summaryUniqueId(): string { return "summary-{$this->id}"; } public function mount() { $this->id = Str::uuid(); MultiDB::setDb($this->db); $this ->handleContext('hash', $this->hash) ->handleContext('quantity', 1) ->handleContext('request_data', $this->request_data) ->handleContext('campaign', $this->campaign); } public function render() { return view('billing-portal.v3.purchase'); } }