pub enum Trigger<'a> {
Show 17 variants
PageLoads,
Appears,
Disappears,
RouteChanges,
Online,
Offline,
Selector {
selector: &'a Expr<'a>,
event: Symbol,
key: Option<Symbol>,
},
Key {
key: Symbol,
},
FieldChanges {
store: Option<Symbol>,
field: Symbol,
},
Every {
seconds: &'a Expr<'a>,
name: Option<Symbol>,
},
After {
seconds: &'a Expr<'a>,
name: Option<Symbol>,
},
Message {
topic: &'a Expr<'a>,
param: (Symbol, &'a TypeExpr<'a>),
},
ActionFails {
param: Symbol,
},
FetchFails {
url: Symbol,
error: Symbol,
},
WindowResizes,
ScrollsToBottom {
selector: Option<&'a Expr<'a>>,
},
FileDropped {
selector: &'a Expr<'a>,
param: (Symbol, &'a TypeExpr<'a>),
},
}Expand description
What an English When …: sentence in Actions: waits for.
Variants§
PageLoads
When the page loads:
Appears
When this component appears:
Disappears
When this component disappears:
RouteChanges
When the route changes:
Online
When the app comes back online:
Offline
When the app goes offline:
Selector
When "#add" is submitted: / When "#draft" changes: / When the user types in "#q": /
When the user presses Escape in "#draft": (key set) / When "#x" is focused: …
Key
When the user presses Escape: — a key anywhere on the page.
FieldChanges
When todos change: / When Session's name changes:
Every
Every 60 seconds: — repeating. Every 60 seconds as refresh: names it, and a named
timer is the only kind Stop the timer … can reach.
After
After 5 seconds: — one-shot, optionally named so it can be cancelled before it fires.
Message
When a message arrives on "topic" (m: T):
ActionFails
When an action fails (error: Text):
FetchFails
When a fetch fails (url: Text) and (error: Text):
WindowResizes
When the window resizes:
ScrollsToBottom
When the user scrolls to the bottom [of "#list"]:
FileDropped
When a file is dropped on "#zone" (file: File): or (name: Text) — the declared type
decides what binds: File the whole record, Text just the name, same as [Trigger:: Message]’s own (Symbol, &TypeExpr) shape keeps its payload’s declared type.
Implementations§
Source§impl<'a> Trigger<'a>
impl<'a> Trigger<'a>
Sourcepub fn undeliverable(&self) -> Option<(&'static str, &'static str)>
pub fn undeliverable(&self) -> Option<(&'static str, &'static str)>
★ THE TRIGGERS NO TIER DELIVERS — one table, read by every tier that has to say so.
Some((sentence, needs)) when nothing anywhere can fire this trigger yet; None when some
tier delivers it.
The distinction is not pedantic, and getting it wrong produced a false statement in a
compiler message: the browser-tier mount refusal ended “The tree-walker renders it; the
bytecode tier cannot yet”, which is true of Every … seconds: and false of
When the window resizes: — nothing renders that one. An author would have been told
their page works on the tree-walker and sent looking for a tier to run it on.
It lives here because every tier has to agree about which sentences exist at all, and a second copy of a list is how they stop agreeing.
Source§impl<'a> Trigger<'a>
impl<'a> Trigger<'a>
Sourcepub fn form(&self) -> &'static str
pub fn form(&self) -> &'static str
The English FORM this trigger is written in — the words an author would search their own file for.
★ DELIBERATELY WITHOUT THE VALUES, and that is the difference from Self::shape. shape is a
stable debug rendering for snapshot tests, and it prints what the AST holds: a duration comes
out as every 60000000000ms, which is true and is not what anybody typed. A refusal is read
by the person who wrote the sentence, so it names the FORM (Every … seconds:) and lets them
find the line. Two renderings because there are two audiences; kept adjacent so neither can
be changed without seeing the other.
Trait Implementations§
Auto Trait Implementations§
impl<'a> Freeze for Trigger<'a>
impl<'a> RefUnwindSafe for Trigger<'a>
impl<'a> Send for Trigger<'a>
impl<'a> Sync for Trigger<'a>
impl<'a> Unpin for Trigger<'a>
impl<'a> UnsafeUnpin for Trigger<'a>
impl<'a> UnwindSafe for Trigger<'a>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.