proposalDriver u w = divClass "propose record" $ do
  let f ClosedSection = do
          e <-  floater $ icon ["pencil","3x"] "new proposal"
          return $ wire (LeftG :=> OpenSection <$ e)
      f OpenSection = do
            (i,e) <- open u w
            return $ merge [LeftG :=> ClosedSection <$ pick LeftG e, RightG :=> (\(s,w) -> ((s,i),w)) <$> pick RightG e]

  rec   s <- holdDyn ClosedSection $ pick LeftG e
        e <- domMorph f s
  return $ pick RightG e
proposalDriver u w = divClass "propose record" $ do
  let f ClosedSection = do
          e <-  floater $ icon ["pencil","3x"] "new proposal"
          return $ wire (LeftG :=> OpenSection <$ e)
      f OpenSection = do
            (i,e) <- open u w
            return $ merge [LeftG :=> ClosedSection <$ pick LeftG e, RightG :=> (\(s,w) -> ((s,i),w)) <$> pick RightG e]

  rec   s <- holdDyn ClosedSection $ pick LeftG e
        e <- domMorph f s
  return $ pick RightG e
proposalDriver u w = divClass "propose record" $ do
  let f ClosedSection = do
          e <-  floater $ icon ["pencil","3x"] "new proposal"
          return $ wire (LeftG :=> OpenSection <$ e)
      f OpenSection = do
            (i,e) <- open u w
            return $ merge [LeftG :=> ClosedSection <$ pick LeftG e, RightG :=> (\(s,w) -> ((s,i),w)) <$> pick RightG e]

  rec   s <- holdDyn ClosedSection $ pick LeftG e
        e <- domMorph f s
  return $ pick RightG e