object = $object; } protected array $defaultIncludes = [ ]; protected array $availableIncludes = [ 'value', 'options' ]; public function transform(Field $model): array { return [ 'id' => $model->uuid, 'type' => $model->type, 'name' => $model->name, 'title' => $model->title, 'required' => boolval($model->required), 'multiple' => boolval($model->multiple), 'filterable' => boolval($model->filterable), 'hidden' => boolval($model->hidden), 'related' => $model->params['related'] ?? null, 'appearance' => $model->params['appearance'] ?? null ]; } public function includeValue(Field $model) { if ($value = $model->getValue($this->object->id)) { if ($model->type === FieldType::RELATION) return $this->collection($value->filter(function($val) {return !is_null($val);}), $model->transformer); elseif (in_array($model->type, [FieldType::DOCUMENT, FieldType::IMAGE])) return $this->collection($value, new AssetTransformer()); else return $this->primitive(['data' => $model->getValue($this->object->id)]); } return null; } public function includeOptions(Field $model): ?Collection { return $model->options ? $this->collection($model->options, $model->transformer) : null; } }