# gizweb:region

the live parts of a page of GHTML. The compiler puts a range around each part of a route file that reads a table, and a keyed list around each `each` over a table whose rows are one element. A range is the HTML between the comments `<!--g:ID-->` and `<!--/g:ID-->`; a row of a list is the element whose `data-k` is `ID:KEY`. When rows of a table change, the long poll (Pages) runs the page again with a Focus (gizweb:table) that names the table and the changed keys. Then nothing renders but what read that table: a range renders again whole; a list reads the changed rows only and sends those rows, the place of each, and the rows that left. The browser puts the patches in.

```gizlang
import * as Region from "gizweb:region";
```

## Functions

### `range`

```gizlang
function range(ctx: Table.Context, id: string, own: Vec<string>, inner: Vec<string>, body: () => Html): Html
```

A part of the page that reads the tables OWN in its own code and contains parts that read INNER (names of tables, `Shape.name`). Rendered for a
person, it is BODY between its two comments. When a table of OWN changed, it renders again whole; when only a table of INNER changed, BODY runs to
reach the parts inside; otherwise it renders nothing.

Effects: fail, read, write, console, io.

### `title`

```gizlang
function title(ctx: Table.Context, own: Vec<string>, body: () => Html): Html
```

The `<title>` of the page, when its text reads the tables OWN. It is BODY (the element) as it is; the head of the document holds it, so a change
is the title patch.

Effects: fail, read, write, console, io.

### `list`

```gizlang
function list<T>(table: Table.Table<T>, id: string, own: Vec<string>, local: bool, items: () => Vec<T>, row: (item: T, mark: string) => Html): Html
```

The rows of ITEMS of the table TABLE, each the element that ROW renders (MARK is the value of its `data-k`, `ID:KEY`).
OWN are the tables that the list reads. LOCAL is true when a row depends on its own record only (the compiler checks that the list has no
limit, no index, and no read of the table in its rows). A change of a table of OWN renders the list again whole, except a change of the
table of the list when LOCAL: the list reads the rows of the changed keys alone, and sends them with the place of each.

