{"version":3,"sources":["jsdelivr-header.js","/npm/beagle-pdf@0.0.11/index.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA,ACNA,IAKI,SALA,MAAQ,QAAQ,6CAChB,WAAa,QAAQ,qBACrB,EAAI,QAAQ,UACZ,SAAW,QAAQ,aAInB,kBAAoB,SAAU,EAAK,GAErC,OADA,UAAW,EACJ,WAAW,eAAe,GAAK,SAAU,EAAK,GAOnD,OANY,OAAR,GACF,QAAQ,MAAM,GAKT,EAAG,KAAM,EAClB,GACF,EAEI,eAAiB,SAAU,EAAgB,GAC7C,IAAK,EAAgB,MAAM,IAAI,MAAM,mBAErC,MAAM,YAAY,GAAgB,MAAK,SAAU,GAC/C,OAAO,EAAG,KAAM,EAAI,YACtB,IAAG,OAAM,SAAU,GACjB,OAAO,EAAG,EACZ,GACF,EAEI,YAAc,SAAU,EAAgB,GAC1C,IAAK,EAAgB,MAAM,IAAI,MAAM,mBAErC,MAAM,YAAY,GAAgB,MAAK,SAAU,GAC/C,OAAO,EAAI,aACb,IAAG,MAAK,SAAU,GAChB,OAAO,EAAG,KAAM,EAClB,IAAG,OAAM,SAAU,GAEjB,OAAO,EAAG,EACZ,GACF,EAEI,YAAc,SAAU,EAAgB,EAAS,GACnD,IAAK,EAAgB,MAAM,IAAI,MAAM,mBAErC,MAAM,YAAY,GAAgB,MAAK,SAAU,GAO/C,IANA,IAEI,EACA,EAHA,EAAW,EAAI,SAIf,EAAI,EAEC,EAAI,EAAG,GAAK,EAAU,IAC7B,EAAI,QAAQ,GAAG,MAAK,SAAU,GAC5B,OAAO,EAAK,gBACd,IAAG,MAAK,SAAU,GAChB,EAAE,KAAK,EAAY,OAAO,SAAU,IAGlC,EAAQ,SAAS,OAAO,EAAK,QACf,IAEZ,EAAM,EAAM,GACR,EAAQ,QAAQ,YAClB,kBAAkB,EAAK,GAG7B,MACA,IACU,GAAa,GACrB,EAAG,wBAEP,IAAG,OAAM,SAAU,GACjB,OAAO,EAAG,EACZ,GAEJ,IAAG,OAAM,SAAU,GAEjB,OAAO,EAAG,EACZ,GACF,EAEI,oBAAsB,WACxB,IAAI,EAAY,OAAO,qBAAqB,UAAU,kBAAoB,EACtE,EAAO,OAAO,qBAAqB,UAAU,MAAM,GACnD,EAAW,EAAK,OAAO,iBAAiB,GACxC,EAAiB,OAAO,eAAe,WAAW,GAAG,iBACrD,EAAW,EAAK,SAKpB,MAAO,CAAC,KAAM,EAAW,OAJV,EAAE,IAAI,GAAgB,SAAU,GAC7C,OAAO,EAAS,kBAAkB,EAAE,KAAO,EAAS,KAAM,EAAE,IAAM,EAAS,KAAK,OAC7E,EAAS,kBAAkB,EAAE,MAAQ,EAAS,KAAM,EAAE,OAAS,EAAS,KAC7E,IAEF,EAEI,cAAgB,SAAU,EAAU,GACtC,IAAI,EAAY,EAAS,KACzB,GAAI,IAAc,OAAO,qBAAqB,UAAU,mBAAqB,EAAG,CAC9E,IAAI,EAAO,OAAO,qBAAqB,UAAU,MAAM,GACnD,EAAc,EAAK,OAAO,cAC1B,EAAW,EAAK,SACpB,EAAS,OAAO,SAAQ,SAAU,GAChC,IAAI,EAAS,EAAS,2BAA2B,GAC7C,EAAK,SAAS,cAAc,OAKhC,OAJA,EAAG,aAAa,QAAS,oEACb,KAAK,IAAI,EAAO,GAAI,EAAO,IAAM,WAAa,KAAK,IAAI,EAAO,GAAI,EAAO,IAD5D,YAEZ,KAAK,IAAI,EAAO,GAAK,EAAO,IAAM,cAAgB,KAAK,IAAI,EAAO,GAAK,EAAO,IAAM,OACjG,EAAY,YAAY,GACjB,GAAM,GACf,GACF,CAEF,EAEA,QAAQ,MAAQ,MAChB,QAAQ,eAAiB,eACzB,QAAQ,YAAc,YACtB,QAAQ,YAAc,YACtB,QAAQ,oBAAsB,oBAC9B,QAAQ,cAAgB","file":"/npm/beagle-pdf@0.0.11/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/beagle-pdf@0.0.11/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","var pdfjs = require('pdfjs-dist-for-node/build/pdf.combined.js')\nvar altmetrics = require('beagle-altmetrics')\nvar _ = require('lodash')\nvar doiRegex = require('doi-regex')\n\nvar response\n\nvar altmetricsFromDoi = function (doi, cb) {\n  response = true\n  return altmetrics.getDataFromDoi(doi, function (err, data) {\n    if (err !== null) {\n      console.error(err)\n      // TODO What does process do?\n      // process.exit(-1)\n    }\n\n    return cb(null, data)\n  })\n}\n\nvar getFingerprint = function (documentObject, cb) {\n  if (!documentObject) throw new Error('No pdf provided')\n\n  pdfjs.getDocument(documentObject).then(function (pdf) {\n    return cb(null, pdf.fingerprint)\n  }).catch(function (err) {\n    return cb(err)\n  })\n}\n\nvar getMetadata = function (documentObject, cb) {\n  if (!documentObject) throw new Error('No pdf provided')\n\n  pdfjs.getDocument(documentObject).then(function (pdf) {\n    return pdf.getMetadata()\n  }).then(function (data) {\n    return cb(null, data)\n  }).catch(function (err) {\n    // Unable to get Document or metadata\n    return cb(err)\n  })\n}\n\nvar readPDFText = function (documentObject, options, cb) {\n  if (!documentObject) throw new Error('No pdf provided')\n\n  pdfjs.getDocument(documentObject).then(function (pdf) {\n    var numPages = pdf.numPages\n    // Define vars where they won't be redefined in each loop in if statements\n    var doi\n    var match\n    var j = 0\n\n    for (var i = 1; i <= numPages; i++) {\n      pdf.getPage(i).then(function (page) {\n        return page.getTextContent()\n      }).then(function (textContent) {\n        _.each(textContent.items, function (item) {\n          // TODO match[2] tracks .t001, .g001, etc. Capture these, they may be relevant\n          // to research.\n          match = doiRegex.groups(item.str)\n          if (match && !doi) {\n            // Only call once, for now. TODO Multiple DOIs\n            doi = match[1]\n            if (options.modules.altmetrics) {\n              altmetricsFromDoi(doi, cb)\n            }\n          }\n        })\n        j++\n        if (j === numPages && !doi) {\n          cb('Failed to find a DOI.')\n        }\n      }).catch(function (err) {\n        return cb(err)\n      })\n    }\n  }).catch(function (err) {\n    // Unable to get document\n    return cb(err)\n  })\n}\n\nvar getHightlightCoords = function () {\n  var pageIndex = window.PDFViewerApplication.pdfViewer.currentPageNumber - 1\n  var page = window.PDFViewerApplication.pdfViewer.pages[pageIndex]\n  var pageRect = page.canvas.getClientRects()[0]\n  var selectionRects = window.getSelection().getRangeAt(0).getClientRects()\n  var viewport = page.viewport\n  var selected = _.map(selectionRects, function (r) {\n    return viewport.convertToPdfPoint(r.left - pageRect.left, r.top - pageRect.top).concat(\n       viewport.convertToPdfPoint(r.right - pageRect.left, r.bottom - pageRect.top))\n  })\n  return {page: pageIndex, coords: selected}\n}\n\nvar showHighlight = function (selected, cb) {\n  var pageIndex = selected.page\n  if (pageIndex === window.PDFViewerApplication.pdfViewer._currentPageNumber - 1) {\n    var page = window.PDFViewerApplication.pdfViewer.pages[pageIndex]\n    var pageElement = page.canvas.parentElement\n    var viewport = page.viewport\n    selected.coords.forEach(function (rect) {\n      var bounds = viewport.convertToViewportRectangle(rect)\n      var el = document.createElement('div')\n      el.setAttribute('style', 'position: absolute; background-color: rgba(238, 170, 0, .2);' +\n        'left:' + Math.min(bounds[0], bounds[2]) + 'px; top:' + Math.min(bounds[1], bounds[3]) + 'px;' +\n        'width:' + Math.abs(bounds[0] - bounds[2]) + 'px; height:' + Math.abs(bounds[1] - bounds[3]) + 'px;')\n      pageElement.appendChild(el)\n      return cb && cb()\n    })\n  }\n  return\n}\n\nexports.pdfjs = pdfjs\nexports.getFingerprint = getFingerprint\nexports.getMetadata = getMetadata\nexports.readPDFText = readPDFText\nexports.getHightlightCoords = getHightlightCoords\nexports.showHighlight = showHighlight\n"]}