/* eslint-disable
    max-len,
    no-return-assign,
    no-unused-vars,
*/
// TODO: This file was created by bulk-decaffeinate.
// Fix any style issues and re-enable lint.
/*
 * decaffeinate suggestions:
 * DS101: Remove unnecessary use of Array.from
 * DS102: Remove unnecessary code created because of implicit returns
 * DS207: Consider shorter variations of null checks
 * Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md
 */
import App from '../../../base'
import PDFJS from './pdfJsLoader'

export default App.factory('pdfHighlights', function () {
  let pdfHighlights
  return (pdfHighlights = class pdfHighlights {
    constructor(options) {
      this.highlightsLayerDiv = options.highlights[0]
      this.highlightElements = []
    }

    addHighlight(viewport, left, top, width, height) {
      let rect = viewport.convertToViewportRectangle([
        left,
        top,
        left + width,
        top + height,
      ])
      rect = PDFJS.Util.normalizeRect(rect)
      const element = document.createElement('div')
      element.style.left = Math.floor(rect[0]) + 'px'
      element.style.top = Math.floor(rect[1]) + 'px'
      element.style.width = Math.ceil(rect[2] - rect[0]) + 'px'
      element.style.height = Math.ceil(rect[3] - rect[1]) + 'px'
      this.highlightElements.push(element)
      this.highlightsLayerDiv.appendChild(element)
      return element
    }

    clearHighlights() {
      for (const h of Array.from(this.highlightElements)) {
        if (h != null) {
          h.parentNode.removeChild(h)
        }
      }
      return (this.highlightElements = [])
    }
  })
})
