noflo = require 'noflo'

exports.getComponent = ->
  c = new noflo.Component
  c.icon = 'code-fork'
  c.inPorts.add 'in',
    datatype: 'object'
    description: 'Fetchable object'
  c.outPorts.add 'payload',
    datatype: 'object'
  c.outPorts.add 'remote',
    datatype: 'object'
    
  groups = []
  c.inPorts.in.on 'begingroup', (group) ->
    groups.push group
  c.inPorts.in.on 'data', (data) ->
    port = 'remote'
    port = 'payload' if data.content and data.type
    c.outPorts[port].beginGroup group for group in groups
    c.outPorts[port].send data
    c.outPorts[port].endGroup() for group in groups
  c.inPorts.in.on 'endgroup', ->
    groups.pop()
  c.inPorts.in.on 'disconnect', ->
    c.outPorts.payload.disconnect()
    c.outPorts.remote.disconnect()
    
  c