 M: table model-changed
     nip dup update-selected-indices {
         [ >>selected-indices f >>mouse-index drop ]
-        [ [ f ] [ first ] if-empty show-row-summary ]
+        [ multiple>single drop show-row-summary ]
         [ drop update-selected ]
         [ drop relayout ]
     } 2cleave ;


PRIVATE>

: (selected-rows) ( table -- {row} )
    [ selected-indices>> keys natural-sort ] keep
    '[ _ nth-row [ 1array ] [ drop { } ] if ] map concat ;

: selected-rows ( table -- {value} )
    [ (selected-rows) ] [ renderer>> ] bi '[ _ row-value ] map ;

: (selected-row) ( table -- value/f ? ) (selected-rows) multiple>single ;



: (update-selected-indices) ( table -- set )
    [ selection>> value>> dup array? [ 1array ] unless ] keep
    [ find-row-index ] curry map sift unique f assoc-like ;

: initial-selected-indices ( table -- set )
    {
