{"version":3,"names":["Author","Scholar","Paper","Literature","__SystemJSRewritingHack","specialInspect","target","contentNode","inspector","normal","renderObjectdProperties","name","Object","keys","getOwnPropertyDescriptors","__proto__","desc","getOwnPropertyDescriptor","get","appendChild","display","e","_export","default","setters","_reactiveJsx","_children","children","_attributes","attributes","_element","element","_srcExternalDexie3Js","Dexie","_srcExternalBibtexParseJs","BibtexParser","_srcExternalMarkdownItJs","MarkdownIt","_srcClientBibliographyJs","Bibliography","_srcClientFileindexJs","FileIndex","_srcClientGraphicsJs","pt","_srcExternalTitleCaseJs","toTitleCase","_srcExternalMomentJs","moment","execute","_recorder_","_src_client_literature_js","defineProperty","set","thisIsVererySecretVariableName","enumerable","configurable","constructor","value","id","authorId","livelyInspect","fields","ensure","raw","existing","getPaperEntry","scholarid","p","paperId","Error","setById","byId","_byId","paper","Map","addPaper","getScholarPaper","paperQuery","json","fetchPaper","getId","idOrQuery","resp","fetch","method","headers","status","optionalEntity","entry","error","lively","warn","allBibtexEntries","current","db","bibliography","toArray","importBibtexId","undefined","source","toBibtex","importBibtexSource","notify","importURL","map","ea","url","find","match","libcontent","files","loadFile","saveFile","openBrowser","authors","authorNames","year","title","replace","doi","externalIds","DOI","bibtexType","BT","booktitle","venue","key","toBibtexEntry","citationKey","keywords","fieldsOfStudy","hasPublicationInfo","findBibtexFileEntries","entries","filter","entryTags","author","join","entryType","references","microsoftreferences","referencedBy","microsoftreferencedby","generateCitationKey","abstract","scholarQueryToPapers","response","body","JSON","stringify","then","r","console","result","entity","push","resolvePaperIdsToPapers","papers","rest","getPaperEntries","length","list","concat","resolveReferences","findReferencedBy","log","patchPaper","papersToBibtex","shortPaperCSS","toShortHTML","toHTML","generateFilename","bibentry","file","end","column","line","start","filename","toImportURL","baseURL","importBaseURL","importBaseURLDirName","ensureCache","isLoadingCache","cachedPapers","cachedPapersById","Promise","resolve","Date","now","papersById","invalidateCache","ensurePaperEntry","deleteEmptyAuthorPapers","forEach","delete","put","updateCache","obj","assign","removePaper","collection","where","equals","removed","all","includes","version","stores","upgrade"],"sources":["literature.js"],"sourcesContent":["/*MD # Literature\n\n\n## #TODO maybe also use OpenAlex as Microsoft Academics replacement\n \n```javascript {.snippet}\n  fetch(\"https://api.openalex.org/works/mag:2036425115\").then(r => r.json())\n```\n\n\nMD*/\n\nimport Dexie from \"src/external/dexie3.js\"\nimport BibtexParser from 'src/external/bibtexParse.js';\nimport MarkdownIt from \"src/external/markdown-it.js\";\nimport Bibliography from \"src/client/bibliography.js\"\nimport FileIndex from \"src/client/fileindex.js\";\nimport {pt} from \"src/client/graphics.js\"\nimport toTitleCase from \"src/external/title-case.js\"\nimport moment from \"src/external/moment.js\"\n \n\nfunction specialInspect(target, contentNode, inspector, normal) {\n    inspector.renderObjectdProperties(contentNode, target)\n    \n\n    for(var name of Object.keys(Object.getOwnPropertyDescriptors(target.__proto__))) {\n      var desc = Object.getOwnPropertyDescriptor(target.__proto__, name)\n      if (desc.get) {\n        try {\n          contentNode.appendChild(inspector.display(target[name], false, name, target))\n        } catch(e) {\n          // ignore e\n        }\n      }\n    }    \n  }\n\n\nexport class Author {\n \n  constructor(value) {\n    this.value = value\n  }\n\n  get name() {\n   return this.value.name // \"Original author name\"\n  }\n  \n  get id() {\n    return this.value.authorId \n  }\n  \n  livelyInspect(contentNode, inspector, normal) {\n    specialInspect(this, contentNode, inspector, normal)\n  }\n}\n\nexport class Scholar {\n  \n  static fields() {\n   return \"externalIds,url,title,abstract,venue,publicationVenue,year,referenceCount,citationCount,influentialCitationCount,isOpenAccess,fieldsOfStudy,s2FieldsOfStudy,authors,journal,tldr,openAccessPdf,references,references.authors,references.year,references.externalIds,references.title,references.citationCount,references.referenceCount,citations,citations.authors,citations.year,citations.externalIds,citations.title,citations.citationCount,citations.referenceCount\"\n  }\n}\n\n\nexport class Paper {\n  \n  static async ensure(raw) {\n    var existing = await Literature.getPaperEntry(raw.scholarid)\n    if (!existing) {\n      var p = new Paper(raw)\n      if(!raw.paperId) {\n        throw new Error(\"paperId is missing (scholarid)\")\n      }\n\n      Paper.setById(raw.paperId, p)      \n    } else {\n      p = new Paper(existing.value)\n    }    \n    return p\n  }\n  \n  static byId(id) {\n    if (!this._byId) return\n    var paper = this._byId.get(id)\n    return paper     \n  }\n\n  static setById(id, paper) {\n    if (!this._byId) this._byId = new Map()\n    this._byId.set(id, paper)\n    Literature.addPaper(paper)\n  }\n  \n  static async getScholarPaper(paperQuery) {\n    var json = await this.fetchPaper(paperQuery)\n    if (json  && json.paperId) {\n      return this.getId(json.paperId, json)\n    }\n  }\n  \n  static async fetchPaper(idOrQuery) {\n    // download it individually\n    var resp = await fetch(\"scholar://data/paper/\" + idOrQuery + \"?fields=\"+ Scholar.fields(), {\n        method: \"GET\", \n        headers: {\n          \"content-type\": \"application/json\"}})\n    if (resp.status != 200) {\n      return // should we note it down that we did not found it?\n    }\n    return resp.json()\n  }\n  \n  static async getId(id, optionalEntity) {\n    var paper = this.byId(id)\n    if (paper) return paper\n    if (optionalEntity) {\n      paper = await Paper.ensure(optionalEntity)    \n    } else {\n      var entry = await Literature.getPaperEntry(id)\n      if (entry) {\n        paper = new Paper(entry.value)\n      } else {\n        var json = await this.fetchPaper(id)\n        if (json.error) {\n          lively.warn(\"[literature] getId failed\", json.error)\n          return\n        }\n        paper = await Paper.ensure(json)    \n      }\n    }\n    return paper\n  }\n\n  static async allBibtexEntries() {\n    return FileIndex.current().db.bibliography.toArray()\n  }\n  \n  static async importBibtexId(id) {\n    if (id === undefined) {\n      throw new Error(\"importBibtexId missing id\")\n    }\n    var paper = await Paper.getId(id)\n    if (paper) {\n      var source = paper.toBibtex()\n      \n      await this.importBibtexSource(source)\n    } else {\n      lively.notify(`ERROR no paper with id '${this.scholarid}' found`)\n    }\n  }\n    \n  static async importBibtexSource(source) {\n    var importURL = (await this.allBibtexEntries())\n          .map(ea => ea.url)\n          .find(ea => ea && ea.match(/_incoming\\.bib$/))\n    if (!importURL) {\n      lively.notify(\"no _incoming.bib found\")\n    } else {\n      var libcontent = await lively.files.loadFile(importURL)\n\n      await lively.files.saveFile(importURL, libcontent + \"\\n\" + source )\n      lively.notify(\"PATER imported\", \"\", undefined, () => lively.openBrowser(importURL))\n    }\n  }\n  \n  \n  constructor(value) {\n    if (!value) throw new Error(\"value is missing\")\n    this.value = value\n  }\n  \n  get authors() {\n    return (this.value.authors || []).map(ea => new Author(ea)) \n  }\n\n  get authorNames() {\n    return (this.value.authors || [])\n  }\n\n  \n  get year() {\n    return this.value.year \n  }\n\n  get title() {\n    return (this.value.title || \"\")// \"Original paper title\"\n      .replace(/[\"{}]/g,\"\")  // some cleanup\n  }\n\n  get doi() {\n    return this.value.externalIds && this.value.externalIds.DOI \n  }\n  \n  get scholarid() {\n    return this.value.paperId \n  }\n  \n  get bibtexType() {\n    return ({\n      'a': \"article\", \n      'b': \"book\", \n      'c': \"incollection\", \n      'p': \"inproceedings\"})[this.value.BT] || \"misc\"\n  }\n  \n  get booktitle() {\n    return this.value.venue\n  }\n  \n  get key() {\n    return this.toBibtexEntry().citationKey \n  }\n  \n  get keywords() {\n    return (this.value.fieldsOfStudy || [])\n  }\n  \n  hasPublicationInfo() {\n    return false // TODO\n  }\n  \n  \n  async findBibtexFileEntries() {\n    var key = this.key\n    var entries = await Paper.allBibtexEntries()\n        \n    return entries.filter(ea => ea.key == key)    \n  }\n  \n  \n  // #important\n  toBibtexEntry() {\n    var entry = {\n      entryTags: {\n        author: this.authors.map(author => author.name).join(\" and \"), \n        title: this.title,\n        year: this.year,\n        scholarid: this.scholarid,\n      },\n      entryType: this.bibtexType\n    }\n    if (this.booktitle) { entry.entryTags.booktitle = this.booktitle }\n    if (this.doi) { entry.entryTags.doi = this.doi }\n\n    if (this.references) {\n        entry.entryTags.microsoftreferences = this.references.map(ea => ea.scholarid).join(\",\")\n    }\n    if (this.referencedBy) {\n        entry.entryTags.microsoftreferencedby = this.referencedBy.map(ea => ea.scholarid).join(\",\")\n    }\n\n    entry.citationKey = Bibliography.generateCitationKey(entry)\n    return entry\n  }\n  \n  get abstract() {\n    return this.value.abstract\n  }\n\n  \n \n  \n  async scholarQueryToPapers(references) {\n    if (!references) return []\n    try {\n      var response = await fetch(`scholar://data/paper/batch?fields=${Scholar.fields()}`, {\n        method: \"POST\",\n        body: JSON.stringify({\"ids\": references})\n      }).then(r => r.json())  \n    } catch(e) {\n      console.warn(\"[scholar] Error scholarQueryToPapers \" + references + \"... BUT WE CONTINUE ANYWAY\")\n      return null\n    }\n    var result = []\n    for(var entity of response) {\n      result.push(await Paper.getId(entity.paperId))\n    }\n    return result\n  }\n\n  async resolvePaperIdsToPapers(references) {\n    var papers = []\n    var rest = []\n    \n    references = references.filter(ea => ea)\n    \n    // bulk queries are faster\n    var entries = await Literature.getPaperEntries(references)\n    for(var scholarid of references) {\n      // look each up if in db\n      var entry = entries.find(ea => ea && (ea.scholarid == scholarid))\n      if (entry && entry.value) {\n        papers.push(new Paper(entry.value))\n      } else {\n        rest.push(scholarid)\n      }\n    } \n    // bulk load the rest\n    if (rest.length > 0) {\n      let list = await this.scholarQueryToPapers(rest)\n      if (list) papers = papers.concat(list)\n    }\n    return papers\n  }\n  \n  async resolveReferences() {\n    \n    this.references = []\n    \n    if (!this.value.references) return\n    this.references = await this.resolvePaperIdsToPapers(this.value.references.map(ea => ea.paperId))\n    return this.references\n  }\n  \n  async findReferencedBy() {\n    \n    throw new Error(\"#TODO\")\n    \n    if (this.referencedBy || !this.scholarid) return;\n    \n    var entry = await Literature.getPaperEntry(this.scholarid)\n    if (entry && entry.referencedBy) {\n      this.referencedBy = await this.resolvePaperIdsToPapers(entry.referencedBy)\n    } else {\n      console.log(\"FETCH referencedBy \" + this.scholarid)\n      \n      this.referencedBy = await this.scholarQueryToPapers(\"RId=\" + this.scholarid)  \n      if (this.referencedBy) {\n        await Literature.patchPaper(this.scholarid, {\n          referencedBy: this.referencedBy.map(ea => ea.scholarid)})           \n      }\n    }\n    return this.referencedBy\n  }\n  \n  papersToBibtex(papers) {\n    return `<lively-bibtex>\n      ${\n        papers\n            .map(ea => `<lively-bibtex-entry>${ea.toBibtex()}</lively-bibtex-entry>`)\n            .join(\"\\n\")\n      }\n      </lively-bibtex>` \n  }\n  \n  static shortPaperCSS() {\n    return `\n      .paper {\n        padding: 5px;\n        padding-left: 30px;\n      }\n\n      .paper .key {\n        margin-left: -30px;      \n        font-size: 10pt;\n        font-weight: bold;\n      }\n\n      .paper .title {\n        font-style: italic;\n      }\n\n      .paper .title {\n        font-style: italic;\n      }\n\n\n      .paper a {\n        color: black;\n        text-decoration-line: none\n      }\n\n      .paper a:hover {\n        color: darkblue;\n        text-decoration: underline currentcolor; \n      }\n\n\n    `\n  }\n    \n  async toShortHTML() {\n     return `<literature-paper mode=\"short\" scholarid=\"${this.scholarid}\"></literature-paper>`\n  }\n\n  async toHTML() {\n    return `<literature-paper scholarid=\"${this.scholarid}\"></literature-paper>`\n  }\n  \n  async generateFilename() {\n    var entry = this.toBibtexEntry()\n    var bibentry = await (<lively-bibtex-entry></lively-bibtex-entry>)\n    bibentry.value = entry\n    var filename = bibentry.generateFilename(entry)\n    return filename + \".pdf\"\n  }\n  \n  async toImportURL() {\n    var filename = await this.generateFilename()\n    var baseURL = await Paper.importBaseURL()\n    if (!baseURL) {\n      throw new Error(\"[Paper] toImportURL error: could not find baseURL \" + Paper.importBaseURLDirName())\n    }\n    return baseURL + filename \n  }\n  \n  toBibtex() {\n    var entry = this.toBibtexEntry()\n    return BibtexParser.toBibtex([entry], false);\n  }\n   \n  livelyInspect(contentNode, inspector, normal) {\n    specialInspect(this, contentNode, inspector, normal)\n    contentNode.appendChild(inspector.display(this.toBibtex(), false, \"#bibtex\", this))\n  }\n  \n  static importBaseURLDirName() {\n    return \"_incoming\" // #TODO add to preferences....\n  }\n  \n  static async importBaseURL() {\n    // #TODO make this also more customizeable\n    var files =  await FileIndex.current().db.files.toArray()\n    var file = files.find(ea => ea.url.match(`/${this.importBaseURLDirName()}/`))\n    return file && file.url.replace(/[^/]*$/,\"\")\n  }\n  \n}\n\n\nexport default class Literature {\n  \n  \n  static async ensureCache() {\n    if (this.isLoadingCache) {\n      await this.isLoadingCache\n    }\n      \n    if (!this.cachedPapers || !this.cachedPapersById) {\n      this.isLoadingCache = new Promise(async resolve => {\n        try {\n          var start = Date.now()\n          this.cachedPapers = await this.db.papers.toArray()\n          console.log(\"[literature] ensureCache indexdb \" + (Date.now() - start))\n\n          this.cachedPapersById = new Map()\n          for(var ea of this.cachedPapers) {\n            this.cachedPapersById.set(ea.scholarid, ea)\n          }\n          console.log(\"[literature] ensureCache total \" + (Date.now() - start))          \n        } finally {\n          resolve()\n        }\n      })\n      await this.isLoadingCache\n      this.isLoadingCache = false\n    }\n  }\n  \n  static async papers() {\n    await this.ensureCache()    \n    return this.cachedPapers \n  }\n\n  static async papersById() {\n    await this.ensureCache()    \n    return this.cachedPapersById \n  }\n\n  \n  static invalidateCache() {\n    console.log(\"[literature] invalidate Cache\")\n    this.cachedPapers = null\n    this.cachedPapersById  = null\n    this.isLoadingCache = false\n  }\n  \n  static async ensurePaperEntry(paper) {\n    var raw = await this.db.papers.get(paper.scholarid) \n    if (!raw) {\n      raw = this.addPaper(paper)\n    }\n    return  raw\n  }\n  \n  static async deleteEmptyAuthorPapers() {    \n    var entries = await this.papers()\n    this.invalidateCache()\n    return entries\n      .filter(ea => !ea.authors)\n      .forEach(ea => Literature.db.papers.delete(ea.scholarid))\n  \n  }\n  \n  static async addPaper(paper) {\n    var raw = {\n        scholarid: paper.scholarid,\n        authors: paper.authorNames,\n        year: paper.year,\n        title: paper.title,\n        key: paper.key,\n        keywords: paper.keywords,\n        booktitle: paper.booktitle,\n        value: paper.value,\n        abstract: paper.abstract    \n    }\n    await this.db.papers.put(raw)\n\n    await this.updateCache(raw)\n    \n    return raw\n  }\n\n  static async updateCache(raw) {\n    await this.ensureCache()\n    \n    // manual cache update, because invalidating is very expensive\n    this.cachedPapers = this.cachedPapers.filter(ea => ea.scholarid == raw.scholarid)\n    this.cachedPapers.push(raw)\n    this.cachedPapersById.set(raw.scholarid, raw)\n  }\n  \n  static async patchPaper(id, obj) {\n    var raw = await this.ensurePaperEntry({scholarid: id})\n    raw = Object.assign(raw, obj)\n    await this.db.papers.put(raw) \n    await this.updateCache(raw)\n  }\n  \n    \n  static async removePaper(scholarid) {\n    if (!scholarid) return\n    Literature.cachedPapersById.delete(scholarid)\n    var collection = this.db.papers.where(\"scholarid\").equals(scholarid)\n    var removed =  await collection.toArray()\n    collection.delete()\n    for(let ea of removed) {\n      lively.warn(\"[literature] removed paper \" + ea.scholarid + \" \" + ea.title)\n    }\n  }\n  \n  \n  static async getPaperEntry(id) {\n    var map = await this.papersById()\n    var entry = map.get(id)\n    if (entry) return entry\n    // maybe something ch\n    // return this.db.papers.get({scholarid: id})  \n  }\n  \n  static async getPaperEntries(references) {\n    var all = await this.papers()\n    return all.filter(ea => references.includes(ea.scholarid))\n    \n    // (reasonably fast)\n    // return this.db.papers.bulkGet(references)\n    \n    // (SLOW)\n    // return (await this.db.papers.toArray())\n    //     .filter(ea => references.includes(ea.scholarid))  \n  }\n  \n  static get db() {\n    var db = new Dexie(\"scholar\");\n\n    db.version(1).stores({\n        papers: 'scholarid,authors,year,title,key,keywords,booktitle',      \n    }).upgrade(function () {\n    })\n    \n    \n    return db\n  }\n}\n\n\n\n\n\n\n\n\n\n\n// import Tracing from \"src/client/tracing.js\"\n// Tracing.traceObject(Literature)\n"],"mappings":"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"}