SpinaCMS/Spina

View on GitHub
app/assets/javascripts/spina/controllers/editor_insert_images_controller.js

Summary

Maintainability
A
0 mins
Test Coverage
import { Controller } from "@hotwired/stimulus"

export default class extends Controller {

  connect() {
    // Gets triggered when refreshed by the ImagesController, and will process any images here
    this.insertImages()
  }

  insertImages() {
    const imagesMetadata = this.element.querySelectorAll('div.trix-insert-image')
    imagesMetadata.forEach(tag => {
      const imageData = this.#imageData(tag)
      let insertImageEvent = new CustomEvent("media-picker:done", {detail: imageData})
      const targetEditor = document.getElementById(this.trixTargetId)
      this.trixTarget.dispatchEvent(insertImageEvent)
    })
  }

  get trixTarget() {
    return document.getElementById(this.trixTargetId)
  }

  get trixTargetId() {
    return this.element.dataset.trixTargetId
  }

  #imageData(imageMeta) {
    return {
      filename: imageMeta.dataset.filename,
      signedBlobId: imageMeta.dataset.signedBlobId,
      imageId: imageMeta.dataset.imageId,
      embeddedUrl: imageMeta.dataset.embeddedUrl,
      thumbnail: imageMeta.dataset.thumbnail
    }
  }

}