File: /home/posscale/public_html/printmanager/vendor/filament/actions/src/Action.php
<?php
namespace Filament\Actions;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Js;
class Action extends MountableAction implements Contracts\HasRecord
{
use Concerns\CanSubmitForm;
use Concerns\HasMountableArguments;
use Concerns\InteractsWithRecord;
public function getLivewireCallMountedActionName(): string
{
return 'callMountedAction';
}
public function getLivewireClickHandler(): ?string
{
if (! $this->isLivewireClickHandlerEnabled()) {
return null;
}
if (is_string($this->action)) {
return $this->action;
}
if ($event = $this->getLivewireEventClickHandler()) {
return $event;
}
$argumentsParameter = '';
if (count($arguments = $this->getArguments())) {
$argumentsParameter .= ', ';
$argumentsParameter .= Js::from($arguments);
}
return "mountAction('{$this->getName()}'{$argumentsParameter})";
}
/**
* @return array<mixed>
*/
protected function resolveDefaultClosureDependencyForEvaluationByName(string $parameterName): array
{
return match ($parameterName) {
'model' => [$this->getModel()],
'record' => [$this->getRecord()],
default => parent::resolveDefaultClosureDependencyForEvaluationByName($parameterName),
};
}
/**
* @return array<mixed>
*/
protected function resolveDefaultClosureDependencyForEvaluationByType(string $parameterType): array
{
$record = $this->getRecord();
if (! $record) {
return parent::resolveDefaultClosureDependencyForEvaluationByType($parameterType);
}
return match ($parameterType) {
Model::class, $record::class => [$record],
default => parent::resolveDefaultClosureDependencyForEvaluationByType($parameterType),
};
}
public function shouldClearRecordAfter(): bool
{
return ! $this->getRecord()?->exists;
}
public function clearRecordAfter(): void
{
if (! $this->shouldClearRecordAfter()) {
return;
}
$this->record(null);
}
public function getInfolistName(): string
{
return 'mountedActionInfolist';
}
}