text: 
  const Block = require('widget-ui')
  const {splitLineToCamelCase} = require('./utils')
  
  class Element extends Block {
    constructor(prop) {
      super(prop.style)
      this.name = prop.name
      this.attributes = prop.attributes
    }
  }
  
  
  class Widget {
    constructor(xom, style) {
      this.xom = xom
      this.style = style
  
      this.inheritProps = ['fontSize', 'lineHeight', 'textAlign', 'verticalAlign', 'color']
    }
  
    init() {
      this.container = this.create(this.xom)
      this.container.layout()
  
      this.inheritStyle(this.container)
      return this.container
    }
  
    // 继承父节点的样式
    inheritStyle(node) {
      const parent = node.parent || null
      const children = node.children || {}
      const computedStyle = node.computedStyle
  
      if (parent) {
        this.inheritProps.forEach(prop => {
          computedStyle[prop] = computedStyle[prop] || parent.computedStyle[prop]
        })
      }
  
      Object.values(children).forEach(child => {
        this.inheritStyle(child)
      })
    }
  
    create(node) {
      let classNames = (node.attributes.class || '').split(' ')
      classNames = classNames.map(item => splitLineToCamelCase(item.trim()))
      const style = {}
      classNames.forEach(item => {
        Object.assign(style, this.style[item] || {})
      })
  
      const args = {name: node.name, style}
  
      const attrs = Object.keys(node.attributes)
      const attributes = {}
      for (const attr of attrs) {
        const value = node.attributes[attr]
        const CamelAttr = splitLineToCamelCase(attr)
  
        if (value === '' || value === 'true') {
          attributes[CamelAttr] = true
        } else if (value === 'false') {
          attributes[CamelAttr] = false
        } else {
          attributes[CamelAttr] = value
        }
      }
      attributes.text = node.content
      args.attributes = attributes
      const element = new Element(args)
      node.children.forEach(childNode => {
        const childElement = this.create(childNode)
        element.add(childElement)
      })
      return element
    }
  }
  
  module.exports = {Widget}
  