adamc@1025: con t ctx data = list (data * xml ctx [] [] * source bool) adamc@1025: adamc@1025: fun create [ctx] [data] (items : list (data * xml ctx [] [] * bool)) = adamc@1025: List.mapM (fn (d, x, b) => s <- source b; return (d, x, s)) items adamc@1025: adamc@1025: fun render [ctx] [data] [[Body] ~ ctx] (t : t ([Body] ++ ctx) data) = adamc@1025: List.mapX (fn (_, x, s) => {x}
) t adamc@1025: adamc@1025: fun selected [ctx] [data] (t : t ctx data) = adamc@1025: List.foldlM (fn (d, _, s) ls => adamc@1025: s <- signal s; adamc@1025: return (if s then adamc@1025: d :: ls adamc@1025: else adamc@1025: ls)) [] t