M: table (>>selected-value) [ [ out>in ] <illusion> ] dip (>>selected-values) ;
M: table selected-index>> selected-indices>> in>out ;
M: table (>>selected-index) [ out>in ] dip (>>selected-indices) ;
-M: table selected-index*>> selected-indices*>> in>out ;
-M: table (>>selected-index*) [ out>in ] dip (>>selected-indices*) ;
+M: table selected-index*>> selected-indices*>> [ in>out ] <illusion> ;
+M: table (>>selected-index*) [ [ out>in ] <illusion> ] dip (>>selected-indices*) ;
IN: ui.gadgets.tables
: push-selected-index ( table n -- table ) 2dup swap selected-indices>> index [ drop ] [ over selected-indices>> push ] if ;
M: frp-table row-value val-quot>> [ call( a -- b ) ] [ drop f ] if* ;
M: frp-table row-color color-quot>> [ call( a -- b ) ] [ drop f ] if* ;
-: <frp-table> ( model -- table )
- frp-table new-line-gadget dup >>renderer swap >>model
- f basic-model new-model >>selected-values sans-serif-font >>font
- focus-border-color >>focus-border-color
- transparent >>column-line-color ;
+: <frp-table> ( model -- table ) f frp-table new-table dup >>renderer ;
: <frp-table*> ( -- table ) f <model> <frp-table> ;
: <frp-list> ( model -- table ) <frp-table> [ 1array ] >>quot ;
: <frp-list*> ( -- table ) f <model> <frp-list> ;