*/ final class FormFieldBindingFactory extends Factory { protected $model = FormFieldBinding::class; /** @return array */ public function definition(): array { return [ 'owner_type' => 'form_field', 'owner_id' => FormField::factory(), 'target_entity' => 'person', 'target_attribute' => 'email', 'mode' => FormFieldBindingMode::EntityOwned->value, 'sync_direction' => null, 'merge_strategy' => FormFieldBindingMergeStrategy::Overwrite->value, 'trust_level' => 50, 'is_identity_key' => false, ]; } public function forField(FormField $field): static { return $this->state(fn () => [ 'owner_type' => 'form_field', 'owner_id' => $field->id, ]); } public function forLibrary(FormFieldLibrary $library): static { return $this->state(fn () => [ 'owner_type' => 'form_field_library', 'owner_id' => $library->id, ]); } public function entityOwned(string $entity, string $attribute): static { return $this->state(fn () => [ 'target_entity' => $entity, 'target_attribute' => $attribute, 'mode' => FormFieldBindingMode::EntityOwned->value, 'sync_direction' => null, ]); } public function mirrored(string $entity, string $attribute, string $syncDirection = 'write_on_submit'): static { return $this->state(fn () => [ 'target_entity' => $entity, 'target_attribute' => $attribute, 'mode' => FormFieldBindingMode::Mirrored->value, 'sync_direction' => $syncDirection, ]); } }