Releases: tivac/xstate-component-tree
v4.2.0
Minor Changes
-
#67
a8aa4ac
Thanks @tivac! - Added.send()
APIThe
.send()
API is a simple passthrough to the interpreter for the root statechart being managed byxstate-component-tree
, and is intended as a convenience function to make it easier to interact with aComponentTree
instance instead of a direct XStateInterpreter
reference.
v4.1.1
v4.1.0
Minor Changes
-
#63
d9d3820
Thanks @tivac! - Added observable APIAvailable on the
ComponentTree
instance as.subscribe(callback)
, calls the callback function immediately with the most recent result and then will re-call it each time a build completes.Follows the svelte store contract which isn't strictly compliant with any official observable APIs but is extremely simple and usable.
The
callback
passed to.subscribe(...)
will immediately be called with the most recent result of building the component tree (orfalse
if it hasn't finished yet), and then for each complete tree building run after that thecallback
will be called with a single argument. The arg is anObject
with anull
prototype and the following properties:tree
, nested component structures. This is the same as the first argument to the oldernew ComponentTree(service, callback)
API.state
, an XStateState
instance representing the most recent state of the root statechart.matches(<state>)
,state.matches()
but for every statechart instance including any invoked statecharts.hasTag(<tag>)
,state.hasTag()
but for every statechart instance including any invoked statecharts.broadcast(<event>)
,service.send()
but for every statechart instance including any invoked statecharts. Prefer using this instead of settinginvoke.autoForward
because it'll reduce the amount of junk events sent to invoked children.
All notable changes to this project will be documented in this file. See standard-version for commit guidelines.
v4.0.0
4.0.0 (2022-03-16)
⚠ BREAKING CHANGES
- previously the second arg to the callback function had a single
data
property on it representing the lastState
object seen by the top-level machine. Now it hasstate
(same as data was previously), and some bound APIs for interacting with the statechart:.hasTag()
,.broadcast()
, and.matches()
. These are the same APIs available on theComponentTree
instance but made available through the callback args for convenience.
Features
v3.5.0
3.5.0 (2022-03-15)
Features
Feature Explanations
.broadcast()
, to send an event to all of the machines, allowing you to not useautoforward
.hasTag()
calls the built-in xstate.hasTag()
API against all the cached state objects (stopping at the first successful one).matches()
calls the built-in xstate.matches()
API against all the cached state objects (stopping at the first successful one)
NOTE: Not a breaking change because the public API didn't meaningfully shift, but the internals of xstate-component-tree
have been significantly changed in this release. Instead of invoking a new ComponentTree
class for every child machine it now tracks them all without any need for recursion or new class instances. Should be a bit lighter at run-time as a result.