facett-graph 0.1.12

facett — graph (node/edge) viewer component, on facett-core
Documentation

facett-graph — the graph (node/edge) viewer component, on [facett_core]. Build a [Scene] from a labelled edge list (the common shape: a graph query, a dataflow DAG) and draw it. Source-agnostic — the caller turns its Arrow/Cypher/whatever into edges first.

FC contract (the canonical Elm split, FC-2 / FC-9)

Both facets in this crate — [GraphView] (the 2D node/edge skin) and [DepGraphView] (the layered dep-DAG) — adopt the [facett_core::Elm] split:

  • [GraphState] / [depgraph::DepGraphState] — the complete observable, serializable, round-trippable interaction state. The bulk graph data (the [Scene] / the nodes+edges) is the input held on the struct — Color32 is not serde-round-trippable and it is not the state a headless driver mutates, so it lives OUTSIDE the Model (mirrors how facett-grid keeps its Arrow data on the struct, not in its GridState).
  • [Msg] + update — the single mutation path (FC-2): a host/robot toggles the layout ([GraphView]) or selects/clears a node ([DepGraphView]); a headless driver ([facett_core::harness]) reaches the identical transitions.
  • view — a pure paint (FC-9): reads &self, paints, and returns the [Msg]s the interactions produced; the impl_facet_via_elm! bridge applies them.
  • Rich state_json — the node/edge/label counts (and the dep-graph's column depth) a driver reads are derived from the input Scene/nodes, not the interaction Model, so the macro is invoked in form 3 (custom_state_json) to publish those exact pre-migration keys instead of a plain serde(state()).