code: func drawSelectable(win *Window, state nstyle.WidgetStates, style *nstyle.Selectable, active bool, bounds rect.Rect, str string, align label.Align) {
  	out := &win.cmds
  	font := win.ctx.Style.Font
  
  	if style.DrawBegin != nil {
  		style.DrawBegin(out)
  	}
  	if style.DrawEnd != nil {
  		defer style.DrawEnd(out)
  	}
  	if style.Draw != nil {
  		style.Draw(out, state, style, active, bounds.Rectangle(), str, align, font)
  		return
  	}
  
  	var background *nstyle.Item
  	var text textWidget
  	text.Padding = style.Padding
  
  	/* select correct colors/images */
  	if !active {
  		if state&nstyle.WidgetStateActive != 0 {
  			background = &style.Pressed
  			text.Text = style.TextPressed
  		} else if state&nstyle.WidgetStateHovered != 0 {
  			background = &style.Hover
  			text.Text = style.TextHover
  		} else {
  			background = &style.Normal
  			text.Text = style.TextNormal
  		}
  	} else {
  		if state&nstyle.WidgetStateActive != 0 {
  			background = &style.PressedActive
  			text.Text = style.TextPressedActive
  		} else if state&nstyle.WidgetStateHovered != 0 {
  			background = &style.HoverActive
  			text.Text = style.TextHoverActive
  		} else {
  			background = &style.NormalActive
  			text.Text = style.TextNormalActive
  		}
  	}
  
  	/* draw selectable background and text */
  	if background.Type == nstyle.ItemImage {
  		out.DrawImage(bounds, background.Data.Image)
  		text.Background = color.RGBA{0, 0, 0, 0}
  	} else {
  		out.FillRect(bounds, style.Rounding, background.Data.Color)
  		text.Background = background.Data.Color
  	}
  
  	widgetText(out, bounds, str, &text, align, font)
  	return
  }
docs: ///////////////////////////////////////////////////////////////////////////////////
  // SELECTABLE
  ///////////////////////////////////////////////////////////////////////////////////