$ = require('jquery')
Burger = require('../burger')
componentCache = require('./component-cache')
convertToArray = require('../util/convert-to-array')
warn = require('../util/warn')

wrap = (element) ->
  tag = Burger.getTag(element)

  unless constructor = Burger.findClass(tag.value)
    warn(
      "Element used data-burger=\"#{tag.value}\" which is not a registered class.",
      "Make sure that you call .register() on your class after declaring it."
    )
    return

  componentCache.get(element) || componentCache.set(element, constructor)


module.exports = (element) ->
  children = $(element).find("[#{Burger.TAG}]")
  convertToArray(children).map(wrap)
