1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
|
// IMPORTS ---------------------------------------------------------------------
import app/layout
import gleam/string
import lustre/element.{Element}
// PAGE ------------------------------------------------------------------------
pub fn view() -> Element(msg) {
[title, applications, components, utilities]
|> string.join("\n")
|> layout.docs
}
// CONTENT: TITLE --------------------------------------------------------------
const title: String = "
# lustre
"
const applications: String = "
## Applications
### App | erlang javascript
```gleam
pub type App(flags, model, msg)
```
### Error | erlang javascript
```gleam
pub type Error {
AppAlreadyStarted
AppNotYetStarted
ComponentAlreadyRegistered
ElementNotFound
NotABrowser
}
```
### element | javascript
```gleam
pub fn element(el: Element(msg)) -> App(Nil, Nil, msg)
```
### simple | javascript
```gleam
pub fn simple(
init: fn(flags) -> model,
update: fn(model, msg) -> model,
view: fn(model) -> Element(msg)
) -> App(flags, model, msg)
```
### application | javascript
```gleam
pub fn application(
init: fn(flags) -> #(model, Effect(msg)),
update: fn(model, msg) -> #(model, Effect(msg)),
view: fn(model) -> Element(msg)
) -> App(flags, model, msg)
```
### start | javascript
```gleam
pub fn start(
app: App(flags, model, msg),
selector: String,
flags: flags,
) -> Result(fn(msg) -> Nil, Error)
```
### destroy | javascript
```gleam
pub fn destroy(app: App(flags, model, msg)) -> Nil
```
"
const components: String = "
## Components
### component | javascript
```gleam
pub fn component(
name: String,
init: fn() -> #(model, Effect(msg)),
update: fn(model, msg) -> #(model, Effect(msg)),
view: fn(model) -> Element(msg),
on_attribute_change: Map(String, Decoder(msg)),
) -> Result(Nil, Error)
```
"
const utilities: String = "
## Utilities
### is_browser | erlang javascript
```gleam
pub fn is_browser() -> Bool
```
### is_registered | erlang javascript
```gleam
pub fn is_registered(_name: String) -> Bool
```
"
|