# @zerolith/browser

Import from `@zerolith/browser`. Generated from the source; every signature below is what the published types declare.

## Functions

### size

```ts
function size(target: Element | ReadableSignal<Element | undefined>): ReadableSignal<Size>
```

The content box of `target` as a signal: the element itself, or the
signal a `ref` fills, which measures the element it holds and is no size
while it holds none. An element not yet in the document is no size
until the observer first reports it. One ResizeObserver, shared by every
measured element, keeps the signal current; it stops with the enclosing
owner when there is one and lives for the page otherwise. Where there is
no observer, as on the server, the signal is no size.

Source: `packages/browser/src/size.ts:91`

### inView

```ts
function inView(target: Element | ReadableSignal<Element | undefined>, options?: InViewOptions): ReadableSignal<boolean>
```

Whether `target` intersects the viewport, as a signal: the element
itself, or the signal a `ref` fills, which follows the element it holds
and is false while it holds none. An IntersectionObserver keeps it
current; it stops with the enclosing owner when there is one and lives
for the page otherwise. The signal is false until the observer first
reports, and where there is no observer, as on the server. A threshold
outside 0 to 1, or a root margin the browser refuses, fails with
`in_view_options_invalid`.

Source: `packages/browser/src/inview.ts:31`

### online

```ts
function online(): ReadableSignal<boolean>
```

Whether the browser is online, as `navigator.onLine` says, following the `online` and `offline` events; one signal for the page, started when first asked for, and true where there is no browser.

Source: `packages/browser/src/page.ts:27`

### visible

```ts
function visible(): ReadableSignal<boolean>
```

Whether the page is visible, following `visibilitychange`; one signal for the page, started when first asked for, and true where there is no document.

Source: `packages/browser/src/page.ts:34`

### windowSize

```ts
function windowSize(): ReadableSignal<Size>
```

The window's inner size, following `resize`, which a browser fires once per frame; one signal for the page, started when first asked for, and no size where there is no window.

Source: `packages/browser/src/page.ts:41`

## Interfaces

### Size

```ts
interface Size
```

A width and a height in CSS pixels.

- `readonly width: number`: The width in CSS pixels.
- `readonly height: number`: The height in CSS pixels.

Source: `packages/browser/src/size.ts:7`

### InViewOptions

```ts
interface InViewOptions
```

Options for `inView`.

- `rootMargin?: string`: Space around the viewport that counts as in view, as an IntersectionObserver's `rootMargin`; "200px" starts loading a little ahead of the scroll.
- `threshold?: number`: How much of the element must show, from 0 for any part of it to 1 for all of it. Defaults to 0.

Source: `packages/browser/src/inview.ts:7`

