# EventHandler.fromEffectOrEventHandler

Helper to ensure a value is an `EventHandler`.

If the input is already an `EventHandler`, it is returned as is.
If it is an `Effect`, it is wrapped in an `EventHandler` that ignores the event argument.

## Signatures

```ts
export declare function fromEffectOrEventHandler<Ev extends Event, E = never, R = never>(handler: Effect.Effect<unknown, E, R> | EventHandler<Ev, E, R>): EventHandler<Ev, E, R>;
```

## Why

Template event parts accept either a reusable Effect or an event-aware
handler without erasing either value's error and service channels.

## Ownership and lifetime

Conversion is inert. The renderer Scope owns the eventual listener and fiber.

## Examples

```ts
import { Effect } from "effect"
import { fromEffectOrEventHandler } from "@typed/template/EventHandler"

const handler = fromEffectOrEventHandler(Effect.log("clicked"))
```
