{"version":3,"sources":["https://lively-kernel.org/lively4/swd21-particles/src/client/protocols/bibliography-scheme.js"],"names":["Scheme","PolymorphicIdentifier","focalStorage","parseQuery","getDeepProperty","FileIndex","_","BibliographyScheme","scheme","Error","resolve","generateArticlesSource","entries","map","ea","key","authors","join","title","keywords","response","content","Response","headers","status","searchEntries","query","GET","options","url","replace","RegExp","length","decodeURI","current","db","bibliography","toArray","filteredEntries","OPTIONS","JSON","stringify","undefined"],"mappings":";;;;;;;AAAQA,Y,oBAAAA,M;AACDC,2B;;AACAC,kB;;AACCC,gB,UAAAA,U;AAAYC,qB,UAAAA,e;;AAEbC,e;;AAEAC,O;;;;;;;;;;;AAPCN,iD;;;;;;;;;;;;;AACDC,gE;;;;;;;;;;;;;AACAC,uD;;;;;;;;;;;;;AACaE,0D;;;;;;;;;;;;;AAAZD,qD;;;;;;;;;;;;;AAEDE,oD;;;;;;;;;;;;;AAEAC,4C;;;;;;;;AACP;;AAEe,YAAMC,kBAAN,SAAiCP,MAAjC,CAAwC;;AAErD,YAAIQ,MAAJ,GAAa;AACX,gBAAM,IAAIC,KAAJ,CAAU,yBAAV,CAAN;AACD;;AAEDC,kBAAU;AACR,iBAAO,IAAP;AACD;;AAEDC,+BAAuBC,OAAvB,EAAgC;AAC9B,iBAAO,0BAA0BA,QAAQC,GAAR,CAAYC,MAAM;AACjD,mBAAQ,sBAAqBA,GAAGC,GAAI,MAAKD,GAAGC,GAAI,SAC9CD,GAAGE,OAAH,CAAWH,GAAX,CAAeC,MAAO,qBAAoBA,EAAG,KAAIA,EAAG,MAApD,EAA2DG,IAA3D,CAAgE,IAAhE,CACD,KACCH,GAAGI,KACJ,KACCJ,GAAGK,QAAH,CAAYN,GAAZ,CAAgBC,MAAO,sBAAqBA,EAAG,KAAIA,EAAG,MAAtD,EAA6DG,IAA7D,CAAkE,IAAlE,CACD,QAND;AAOD,WARgC,EAQ9BA,IAR8B,CAQzB,IARyB,CAA1B,GAQS,OARhB;AASD;;AAEDG,iBAASC,OAAT,EAAkB;AAChB,iBAAO,IAAIC,QAAJ,CAAaD,OAAb,EAAsB;AAC3BE,qBAAS;AACP,8BAAgB;AADT,aADkB;AAI3BC,oBAAQ;AAJmB,WAAtB,CAAP;AAMD;;AAED,cAAMC,aAAN,CAAoBb,OAApB,EAA6Bc,KAA7B,EAAoC;AAClC,iBAAOd,OAAP;AACD;;AAED,cAAMS,OAAN,CAAcT,OAAd,EAAuBc,KAAvB,EAA8B;AAC5B,cAAIL,UAAW,OAAM,KAAKb,MAAO,KAAIkB,KAAM,OAA3C;AACAL,qBAAW,KAAKV,sBAAL,CAA4BC,OAA5B,CAAX;AACA,iBAAOS,OAAP;AACD;;AAED,cAAMM,GAAN,CAAUC,OAAV,EAAmB;AACjB,cAAIF,QAAQ,KAAKG,GAAL,CAASC,OAAT,CAAiB,IAAIC,MAAJ,CAAW,KAAKvB,MAAL,GAAc,QAAzB,CAAjB,EAAoD,EAApD,CAAZ;AACA,cAAIkB,MAAMM,MAAN,GAAe,CAAnB,EAAuB,OAAO,KAAKZ,QAAL,CAAc,gBAAd,CAAP;;AAEvBM,kBAAQO,UAAUP,KAAV,CAAR;AACA,cAAId,UAAU,MAAMP,UAAU6B,OAAV,GAAoBC,EAApB,CAAuBC,YAAvB,CAAoCC,OAApC,EAApB;;AAEA,cAAIC,kBAAkB,MAAM,KAAKb,aAAL,CAAmBb,OAAnB,EAA4Bc;;AAExD;;AAF4B,WAA5B,CAIA,IAAIL,UAAU,MAAM,KAAKA,OAAL,CAAaiB,eAAb,EAA8BZ,KAA9B,CAApB;;AAEA,iBAAO,KAAKN,QAAL,CAAcC,OAAd,CAAP;AACD;;AAED,cAAMkB,OAAN,CAAcX,OAAd,EAAuB;AACrB,cAAIP,UAAUmB,KAAKC,SAAL,CAAe,EAAf,EAAmBC,SAAnB,EAA8B,CAA9B,CAAd;AACA,iBAAO,IAAIpB,QAAJ,CAAaD,OAAb,EAAsB;AAC3BE,qBAAS;AACP,8BAAgB;AADT,aADkB;AAI3BC,oBAAQ;AAJmB,WAAtB,CAAP;AAMD;;AAjEoD;;yBAAlCjB,kB;;;;;;;;6BAAAA,mD","file":"bibliography-scheme.js","sourcesContent":["import {Scheme}  from \"src/client/poid.js\"\nimport PolymorphicIdentifier  from \"src/client/poid.js\"\nimport focalStorage from \"src/external/focalStorage.js\"\nimport {parseQuery, getDeepProperty} from 'utils'\n\nimport FileIndex from \"src/client/fileindex.js\"\n\nimport _ from 'src/external/lodash/lodash.js'\n/*MD # Abstract Class for all Bibliograpgy Schemes MD*/\n\nexport default class BibliographyScheme extends Scheme {\n  \n  get scheme() {\n    throw new Error(\"subclass responsibility\")\n  }\n  \n  resolve() {\n    return true\n  }  \n  \n  generateArticlesSource(entries) {\n    return \"<h3>Articles</h3><ul>\" + entries.map(ea => {\n      return `<li><a href=\"bib://${ea.key}\">[${ea.key}]</a> ${\n        ea.authors.map(ea => `<a href=\"author://${ea}\">${ea}</a>`).join(\", \")\n      }. ${\n        ea.title\n      }. ${\n        ea.keywords.map(ea => `<a href=\"keyword://${ea}\">${ea}</a>`).join(\", \")\n      }.</li>`     \n    }).join(\"\\n\") + \"</ul>\"\n  }\n  \n  response(content) {\n    return new Response(content, {\n      headers: {\n        \"content-type\": \"text/html\",\n      },\n      status: 200,\n    })\n  }\n  \n  async searchEntries(entries, query) {\n    return entries\n  }\n  \n  async content(entries, query) {\n    var content = `<h2>${this.scheme}: ${query}</h2>`\n    content += this.generateArticlesSource(entries)\n    return content\n  }\n  \n  async GET(options) {\n    var query = this.url.replace(new RegExp(this.scheme + \"\\:\\/\\/\"),\"\")\n    if (query.length < 2)  return this.response(\"query to short\")\n    \n    query = decodeURI(query)    \n    var entries = await FileIndex.current().db.bibliography.toArray()\n  \n    let filteredEntries = await this.searchEntries(entries, query)\n    \n    // entries = _.uniqBy(entries, ea => ea.key)\n    \n    var content = await this.content(filteredEntries, query)\n    \n    return this.response(content)\n  }\n\n  async OPTIONS(options) {    \n    var content = JSON.stringify({}, undefined, 2)\n    return new Response(content, {\n      headers: {\n        \"content-type\": \"application/json\",\n      },\n      status: 200,\n    })\n  }\n  \n}\n"]}