def component_taken
bendvy-ecs-core@0.1.0.4 · snapshot_leaf.bend:27
import bendvy-ecs-core@0.1.0.4/snapshot_leaf.bend as SnapshotLeaf
import Base
import bendvy-ecs-core@0.1.0.4/persistence_declaration.bend as Decl
import bendvy-ecs-core@0.1.0.4/snapshot_gate.bend as Gate
import bendvy-ecs-core@0.1.0.4/decode_data.bend as D
import bendvy-ecs-core@0.1.0.4/column.bend as Col
import bendvy-ecs-core@0.1.0.4/ordinary_declaration.bend as Canonical
27def component_taken(~S:Data,~P:Type,~identity:Canonical.Declaration<S,P>,~project:P -> P & D.Raw,+id:U32,+declaration:Decl.Constructed<S,P,identity,project>,outcome:Col.SwapOutcome<S,P>) -> Component<S,P,identity,project> & List<&2,D.Field>:
28 match outcome:
29 case Col.Rejected{column,_}:(Component{column,declaration},[])
30 case Col.Accepted{column,None{}}:(Component{column,declaration},[])
31 case Col.Accepted{column,Some{owner}}:component_restored(~S,~P,~identity,~project,declaration,Col.viewed(~S,~P,~Gate.Field,Gate.export_owner(~S,~P,~identity,factory(~S,~P,~identity,~project,declaration),owner),column,id))