import QItem from './QItem'
import QItemMain from './QItemMain'
import QItemSide from './QItemSide'

function push (child, h, name, slot, replace, conf) {
  const defaultProps = { props: { right: conf.right } }

  if (slot && replace) {
    child.push(h(name, defaultProps, slot))
    return
  }

  let v = false
  for (let p in conf) {
    if (conf.hasOwnProperty(p)) {
      v = conf[p]
      if (v !== void 0 && v !== true) {
        child.push(h(name, { props: conf }))
        break
      }
    }
  }

  slot && child.push(h(name, defaultProps, slot))
}

export default {
  name: 'q-item-wrapper',
  props: {
    cfg: {
      type: Object,
      default: () => ({})
    },
    slotReplace: Boolean
  },
  render (h) {
    const
      cfg = this.cfg,
      replace = this.slotReplace,
      child = []

    push(child, h, QItemSide, this.$slots.left, replace, {
      icon: cfg.icon,
      color: cfg.leftColor,
      avatar: cfg.avatar,
      letter: cfg.letter,
      image: cfg.image
    })

    push(child, h, QItemMain, this.$slots.main, replace, {
      label: cfg.label,
      sublabel: cfg.sublabel,
      labelLines: cfg.labelLines,
      sublabelLines: cfg.sublabelLines,
      inset: cfg.inset
    })

    push(child, h, QItemSide, this.$slots.right, replace, {
      right: true,
      icon: cfg.rightIcon,
      color: cfg.rightColor,
      avatar: cfg.rightAvatar,
      letter: cfg.rightLetter,
      image: cfg.rightImage,
      stamp: cfg.stamp
    })

    child.push(this.$slots.default)

    return h(QItem, {
      attrs: this.$attrs,
      on: this.$listeners,
      props: cfg
    }, child)
  }
}

@@ -983,16 +983,86 @@
 fg.image
+,%0A      inverted: cfg.leftInverted,%0A      textColor: cfg.leftTextColor
 %0A    %7D)%0A
@@ -1528,16 +1528,88 @@
 fg.stamp
+,%0A      inverted: cfg.rightInverted,%0A      textColor: cfg.rightTextColor
 %0A    %7D)%0A

Add inverted & co props for Item Wrapper