{"version":3,"sources":["https://lively-kernel.org/lively4/lively4-jsx/src/client/protocols/wikipedia.js"],"names":["Scheme","PolymorphicIdentifier","focalStorage","parseQuery","getDeepProperty","WikipediaScheme","scheme","resolve","getContent","urlObj","URL","url","entry","pathname","replace","lang","split","query","mode","content","fetch","then","r","text","GET","options","Response","status","headers","OPTIONS","roots","lively","html","parseHTML","children","name","href","type","navboxes","allQuerySelectorAll","links","forEach","ea","push","textContent","getAttribute","JSON","stringify","parent","contents","register"],"mappings":";;;;;;AAAQA,Y,oBAAAA,M;AACDC,2B;;AACAC,kB;;AACCC,gB,UAAAA,U;AAAYC,qB,UAAAA,e;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGb,YAAMC,eAAN,SAA8BL,MAA9B,CAAqC;;AAE1C,YAAIM,MAAJ,GAAa;AACX,iBAAO,WAAP;AACD;;AAEDC,kBAAU;AACR,iBAAO,IAAP;AACD;;AAGD,cAAMC,UAAN,GAAmB;AACjB,cAAIC,SAAS,IAAIC,GAAJ,CAAQ,KAAKC,GAAb,CAAb;AACA,cAAIC,QAAQH,OAAOI,QAAP,CAAgBC,OAAhB,CAAwB,MAAxB,EAA+B;AAC3C;;AADY,WAAZ,CAGA,KAAKC,IAAL,GAAYH,MAAMI,KAAN,CAAY,GAAZ,EAAiB,CAAjB,CAAZ;AACA,cAAIC,QAAQL,MAAMI,KAAN,CAAY,GAAZ,EAAiB,CAAjB,CAAZ;;AAEA,eAAKE,IAAL,GAAY,MAAZ;AACA,cAAIC,UAAU,MAAMC,MAAO,WAAU,KAAKL,IAAK,mCAAkC,KAAKG,IAAK,IAAGD,KAAM,EAAhF,EAAmFI,IAAnF,CAAwFC,KAAKA,EAAEC,IAAF,EAA7F,CAApB;AACA,iBAAOJ,QACJL,OADI,CACI,+BADJ,EACsC,uCAAsC,KAAKC,IAAK,GADtF,CAAP;AAED;;AAED,cAAMS,GAAN,CAAUC,OAAV,EAAmB;;AAGjB,cAAIN,UAAW,MAAM,KAAKX,UAAL,EAArB;;AAEA,iBAAO,IAAIkB,QAAJ,CAAaP,OAAb,EAAsB;AAC3BQ,oBAAQ,GADmB;AAE3BC,qBAAS;AACP,8BAAgB;AADT;AAFkB,WAAtB,CAAP;AAMA;AACA;AACD;;AAGD,cAAMC,OAAN,CAAcJ,OAAd,EAAuB;AACrB,cAAIhB,SAAS,IAAIC,GAAJ,CAAQ,KAAKC,GAAb,CAAb;AACA,cAAIQ,UAAU,MAAM,KAAKX,UAAL,EAApB;AACA,cAAIsB,QAAQC,OAAOC,IAAP,CAAYC,SAAZ,CAAsBd,OAAtB,CAAZ;;AAGA,cAAIe,WAAW,CACb;AACEC,kBAAM1B,OAAOI,QAAP,CAAgBC,OAAhB,CAAwB,MAAxB,EAA+B,EAA/B,CADR;AAEEsB,kBAAM,KAAKzB,GAFb;AAGE0B,kBAAM;AAHR,WADa,CAAf;;AAQA;AACA,cAAIC,WAAWP,OAAOC,IAAP,CAAYO,mBAAZ,CAAgCT,KAAhC,EAAuC,SAAvC,CAAf;AACA,cAAIU,QAAQT,OAAOC,IAAP,CAAYO,mBAAZ,CAAgCD,QAAhC,EAA0C,GAA1C,CAAZ;AACAE,gBAAMC,OAAN,CAAcC,MAAM;AAClBR,qBAASS,IAAT,CAAc;AACZR,oBAAMO,GAAGE,WADG;AAEZR,oBAAMM,GAAGG,YAAH,CAAgB,MAAhB;AAFM,aAAd;AAID,WALD;;AAQA,iBAAO,IAAInB,QAAJ,CAAaoB,KAAKC,SAAL,CAAe;AACjCZ,kBAAM1B,OAAOI,QADoB;AAEjCmC,oBAAQ,KAAKrC,GAFoB,EAEf;AAClB0B,kBAAM,MAH2B;AAIjCY,sBAAUf;AAJuB,WAAf,CAAb,EAKH,EAACP,QAAQ,GAAT,EALG,CAAP;AAMD;;AAxEyC;;;;;;;;;;;;;;;;;;AA8E5C1B,4BAAsBiD,QAAtB,CAA+B7C,eAA/B","file":"wikipedia.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\n\nexport class WikipediaScheme extends Scheme {\n  \n  get scheme() {\n    return \"wikipedia\"\n  }\n  \n  resolve() {\n    return true\n  } \n  \n  \n  async getContent() {\n    let urlObj = new URL(this.url)\n    var entry = urlObj.pathname.replace(/^\\/*/,\"\")\n    // window.open(\"https://www.wikiwand.com/\" + entry)\n    \n    this.lang = entry.split(\"/\")[0]\n    var query = entry.split(\"/\")[1]\n    \n    this.mode = \"html\" \n    var content = await fetch(`https://${this.lang}.wikipedia.org/api/rest_v1/page/${this.mode}/${query}`).then(r => r.text())\n    return content\n      .replace(/rel=\"mw:WikiLink\" href=\"\\.\\//g, `rel=\"mw:WikiLink\" href=\"wikipedia://${this.lang}/`)\n  }\n  \n  async GET(options) {\n\n   \n    var content = (await this.getContent())\n    \n    return new Response(content, {\n      status: 200,\n      headers: {\n        'content-type': \"text/html\"\n      }\n    })\n    // var content = await fetch(`https://${lang}.wikipedia.org/api/rest_v1/page/${mode}/${query}`).then(r => r.text())\n    /// return new Response(content, {status: 200})\n  }\n\n  \n  async OPTIONS(options) {\n    let urlObj = new URL(this.url)\n    var content = await this.getContent()\n    var roots = lively.html.parseHTML(content)\n    \n    \n    var children = [\n      {\n        name: urlObj.pathname.replace(/.*\\//,\"\"),\n        href: this.url,\n        type: \"file\",\n      }, \n    ]\n    \n    debugger\n    var navboxes = lively.html.allQuerySelectorAll(roots, \".navbox\")\n    var links = lively.html.allQuerySelectorAll(navboxes, \"a\")\n    links.forEach(ea => {\n      children.push({\n        name: ea.textContent,\n        href: ea.getAttribute(\"href\")\n      })\n    })\n    \n    \n    return new Response(JSON.stringify({\n      name: urlObj.pathname,\n      parent: this.url, // I am my own parent\n      type: \"file\",\n      contents: children\n    }), {status: 200})\n  }\n  \n}\n\n\n\nPolymorphicIdentifier.register(WikipediaScheme)"]}