diff options
author | Hayleigh Thompson <me@hayleigh.dev> | 2023-09-19 23:40:03 +0100 |
---|---|---|
committer | Hayleigh Thompson <me@hayleigh.dev> | 2023-09-19 23:40:03 +0100 |
commit | 92e8596b78982885803994b50c6b35f73f7a403e (patch) | |
tree | 13428243987317da540495215ed4d9e3938fb5cb /lib/src/lustre.gleam | |
parent | 985a9b0aa469cbe94fb95c433c97e2b321014341 (diff) | |
download | lustre-92e8596b78982885803994b50c6b35f73f7a403e.tar.gz lustre-92e8596b78982885803994b50c6b35f73f7a403e.zip |
:recycle: So long monorepo.
Diffstat (limited to 'lib/src/lustre.gleam')
-rw-r--r-- | lib/src/lustre.gleam | 97 |
1 files changed, 0 insertions, 97 deletions
diff --git a/lib/src/lustre.gleam b/lib/src/lustre.gleam deleted file mode 100644 index 4f8249a..0000000 --- a/lib/src/lustre.gleam +++ /dev/null @@ -1,97 +0,0 @@ -//// To read the full documentation for this module, please visit -//// [https://pkg.hayleigh.dev/lustre/api/lustre](https://pkg.hayleigh.dev/lustre/api/lustre) - -// IMPORTS --------------------------------------------------------------------- - -import gleam/dynamic.{Decoder} -import gleam/map.{Map} -import lustre/effect.{Effect} -import lustre/element.{Element} - -// TYPES ----------------------------------------------------------------------- - -/// -pub type App(flags, model, msg) - -pub type Error { - AppAlreadyStarted - AppNotYetStarted - BadComponentName - ComponentAlreadyRegistered - ElementNotFound - NotABrowser -} - -// CONSTRUCTORS ---------------------------------------------------------------- - -@target(javascript) -/// -pub fn element(element: Element(msg)) -> App(Nil, Nil, msg) { - let init = fn(_) { #(Nil, effect.none()) } - let update = fn(_, _) { #(Nil, effect.none()) } - let view = fn(_) { element } - - application(init, update, view) -} - -@target(javascript) -/// -pub fn simple( - init: fn(flags) -> model, - update: fn(model, msg) -> model, - view: fn(model) -> Element(msg), -) -> App(flags, model, msg) { - let init = fn(flags) { #(init(flags), effect.none()) } - let update = fn(model, msg) { #(update(model, msg), effect.none()) } - - application(init, update, view) -} - -@target(javascript) -/// -@external(javascript, "./lustre.ffi.mjs", "setup") -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) - -@target(javascript) -@external(javascript, "./lustre.ffi.mjs", "setup_component") -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) - -// EFFECTS --------------------------------------------------------------------- - -@target(javascript) -/// -@external(javascript, "./lustre.ffi.mjs", "start") -pub fn start( - app: App(flags, model, msg), - selector: String, - flags: flags, -) -> Result(fn(msg) -> Nil, Error) - -@target(javascript) -/// -@external(javascript, "./lustre.ffi.mjs", "destroy") -pub fn destroy(app: App(flags, model, msg)) -> Result(Nil, Error) - -// UTILS ----------------------------------------------------------------------- - -/// -@external(javascript, "./lustre.ffi.mjs", "is_browser") -pub fn is_browser() -> Bool { - False -} - -/// -@external(javascript, "./lustre.ffi.mjs", "is_registered") -pub fn is_registered(_name: String) -> Bool { - False -} |