rootView = $name; } /** * @param string|array|Arrayable $key * @param mixed $value */ public function share($key, $value = null): void { if (is_array($key)) { $this->sharedProps = array_merge($this->sharedProps, $key); } elseif ($key instanceof Arrayable) { $this->sharedProps = array_merge($this->sharedProps, $key->toArray()); } else { Arr::set($this->sharedProps, $key, $value); } } /** * @param mixed $default * @return mixed */ public function getShared(?string $key = null, $default = null) { if ($key) { return Arr::get($this->sharedProps, $key, $default); } return $this->sharedProps; } /** * @return void */ public function flushShared() { $this->sharedProps = []; } /** * @param Closure|string|null $version */ public function version($version): void { $this->version = $version; } public function getVersion(): string { $version = $this->version instanceof Closure ? App::call($this->version) : $this->version; return (string) $version; } public function clearHistory(): void { session(['inertia.clear_history' => true]); } /** * @param bool $encrypt */ public function encryptHistory($encrypt = true): void { $this->encryptHistory = $encrypt; } /** * @deprecated Use `optional` instead. */ public function lazy(callable $callback): LazyProp { return new LazyProp($callback); } public function optional(callable $callback): OptionalProp { return new OptionalProp($callback); } public function defer(callable $callback, string $group = 'default'): DeferProp { return new DeferProp($callback, $group); } /** * @param mixed $value */ public function merge($value): MergeProp { return new MergeProp($value); } /** * @param mixed $value */ public function deepMerge($value): MergeProp { return (new MergeProp($value))->deepMerge(); } /** * @param mixed $value */ public function always($value): AlwaysProp { return new AlwaysProp($value); } /** * @param array|Arrayable $props */ public function render(string $component, $props = []): Response { if ($props instanceof Arrayable) { $props = $props->toArray(); } return new Response( $component, array_merge($this->sharedProps, $props), $this->rootView, $this->getVersion(), $this->encryptHistory ?? config('inertia.history.encrypt', false), ); } /** * @param string|SymfonyRedirect $url */ public function location($url): SymfonyResponse { if (Request::inertia()) { return BaseResponse::make('', 409, [Header::LOCATION => $url instanceof SymfonyRedirect ? $url->getTargetUrl() : $url]); } return $url instanceof SymfonyRedirect ? $url : Redirect::away($url); } }