DefaultPreset::class, 'commonmark' => CommonMarkPreset::class, 'zero' => ZeroPreset::class, ]; /** * Hydrate the given attribute on the model based on the incoming request. * * @param \Laravel\Nova\Http\Requests\NovaRequest $request * @param string $requestAttribute * @param \Illuminate\Database\Eloquent\Model|\Laravel\Nova\Support\Fluent $model * @param string $attribute * @return void|\Closure */ protected function fillAttribute(NovaRequest $request, $requestAttribute, $model, $attribute) { return $this->fillAttributeWithAttachment($request, $requestAttribute, $model, $attribute); } /** * Get the full path that the field is stored at on disk. * * @return string|null */ public function getStoragePath() { return null; } /** * Make the field filter. * * @param \Laravel\Nova\Http\Requests\NovaRequest $request * @return \Laravel\Nova\Fields\Filters\Filter */ protected function makeFilter(NovaRequest $request) { return new TextFilter($this); } /** * Prepare the field for JSON serialization. * * @return array */ public function serializeForFilter() { return transform($this->jsonSerialize(), function ($field) { return Arr::only($field, [ 'uniqueKey', 'name', 'attribute', ]); }); } /** * Return a preview for the given field value. * * @param string|null $value * @return string */ public function previewFor($value) { return $this->renderer()->convert($value ?? ''); } /** * @return \Laravel\Nova\Fields\Markdown\MarkdownPreset */ public function renderer() { return new $this->presets[$this->preset]; } /** * Prepare the element for JSON serialization. * * @return array */ public function jsonSerialize(): array { return array_merge(parent::jsonSerialize(), [ 'shouldShow' => $this->shouldBeExpanded(), 'preset' => $this->preset, 'previewFor' => $this->previewFor($this->value ?? ''), 'withFiles' => $this->withFiles, ]); } }