document.addEventListener “trix-attachment-add”, (event) ->

attachment = event.attachment
if attachment.file
  return uploadAttachment(event)

document.addEventListener “trix-attachment-remove”, (event) ->

image_url = event.attachment.attachment.preloadedURL
$("input[data-url='#{image_url}']").remove()

uploadAttachment = (e) ->

$element = $(e.srcElement)
$form = $('form:first')
host = $form.data('trix-url')
attachment = e.attachment
file = attachment.file
formData = new FormData
formData.append("parent_object_class", $form.data('parent-class'))
formData.append("model", $element.data('uploader-class'))
formData.append("file", file)

xhr = new XMLHttpRequest
xhr.open("POST", host, true)

xhr.upload.onprogress = (event) ->
  progress = event.loaded / event.total * 100
  return attachment.setUploadProgress(progress)

xhr.onload = ->
  if (xhr.status is 204 || xhr.status is 200)
    response = JSON.parse(xhr.responseText)

    uploader = $element.data('uploader-name')
    console.log $element
    console.log uploader
    $form.append("<input type=\"hidden\" name=\"#{$form.data('params-key')}[#{uploader.slice(0, -1)}_ids][]\" value=\"#{response.id}\" />")
    return attachment.setAttributes({
      url:  response.image_url,
      href: response.image_url
    })

xhr.setRequestHeader(
  "X-CSRF-Token",
  $('meta[name="csrf-token"]').attr('content')
)
return xhr.send(formData)