A Clap describes either a “click” (mousedown followed by mouseup), OR a
“tap” with one finger (singular fingerdown event).
Claps are a useful alternative to most kinds of Click or Tap events,
when you want the same behavior for both to be contained in one place.
Raw Percent type, which we use for serialization and dynamic traversal. At the time
of authoring, this type is not used directly at runtime, but is intended for into coercion
into downstream types, e.g. ColorChannel, Rotation, and Size. This allows us to be “dumb”
about how we parse %, and allow the context in which it is used to pull forward a specific
type through into inference.
Scroll occurs when a frame is translated vertically or horizontally
Can be both by touch, mouse or keyboard
The contained delta_x and delta_y describe the horizontal and vertical translation of
the frame
Container for all internal pax types
Two important traits are related to this type:
ToFromPaxValue - responsible for converting to and from specific types (u8,
String, Color, etc)
CoercionRules - responsible for coercing a PaxValue to a specific type
(possibly from multiple different variants)
Marker trait. Implement only for types that are not part of PaxValue, but
need to be stored inside a PaxAny. If they are part of pax value, instead
implement CoercionRules manually, or using the default impl macro as seen
in coercion_impls.rs
Marker trait that needs to be implemented for a struct for insertion and
deletion in a store
NOTE: Stored objects need to be UNIQUE for any given stack. Do not insert
values with types that could potentially be used in another use case,
instead create a local new type (newtype pattern) only used for a single purpose
This trait is implemented by all types that has a builtin equivalent
representation (see to_from_impls module) This is NOT responsible for
coercing between types, but returns an err in all cases where the underlying
type is not exactly what is expected