{"version":3,"names":["PlexScheme","__SystemJSRewritingHack","lastTokenPromted","_export","setters","_reactiveJsx","_addSourceLocation","addSourceLocation","_attributeStringLiteral","attributeStringLiteral","_childExpression","childExpression","_childSpread","childSpread","_childElement","childElement","_children","children","_attributes","attributes","_element","element","_srcClientPoidJs","Scheme","PolymorphicIdentifier","default","_srcExternalFocalStorageJs","focalStorage","_utils","parseQuery","getDeepProperty","execute","_recorder_","_demos_plex_plex_scheme_js","Object","defineProperty","get","set","thisIsVererySecretVariableName","enumerable","configurable","scheme","plexToken","token","getItem","Date","now","lively","prompt","setItem","resolve","plexChildren","mediacontent","Array","from","childNodes","filter","ea","getAttribute","plexToJSON","obj","_type","tagName","getAttributeNames","forEach","prop","child","tag","push","media","part","GET","options","apiString","getAPIString","query","getURLQuery","contentType","headers","Headers","html","plex","htmlResponse","Response","outerHTML","status","json","JSON","stringify","list","_","sortBy","map","file","end","column","line","start","thumbs","img","src","swxURL","title","a","href","div","table","create","setFromJSO","remove","index","resp","plexBlob","text","fetch","then","r","DOMParser","parseFromString","blob","optionsFromPlex","xml","url","notify","name","parent","replace","contents","type","match","urlObj","URL","pathname","search","keys","OPTIONS","result","components","addPersistentCustomTemplatePath","register","console","warn"],"sources":["plex-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\nvar lastTokenPromted\n\n\n// focalStorage.getItem(\"plex-token\")\n// focalStorage.setItem(\"plex-token\", undefined)\n\nexport class PlexScheme extends Scheme {\n  \n  get scheme() {\n    return \"plex\"\n  }\n  \n  async plexToken() {\n    var token = await focalStorage.getItem(\"plex-token\")\n    if(!token && (!lastTokenPromted || ((Date.now() - lastTokenPromted) > 1000 * 5))) { // don't ask again for 5 seconds...\n      lastTokenPromted = Date.now()\n      token = await lively.prompt(\"plex token required: \")\n      if (token) {\n        focalStorage.setItem(\"plex-token\", token)\n      }\n    }\n    return token\n  }\n\n  resolve() {\n    return true\n  }  \n \n  plexChildren(mediacontent) {\n    return Array.from(mediacontent.childNodes).filter(ea => ea.getAttribute)\n  }\n  \n  plexToJSON(mediacontent) {\n    \n      let obj = {\n        _type: mediacontent.tagName\n      }\n      mediacontent.getAttributeNames().forEach(prop => {\n        obj[prop] = mediacontent.getAttribute(prop)\n      })\n      \n      this.plexChildren(mediacontent).forEach(child => {\n        \n        let tag = child.getAttribute(\"tag\")\n        if (tag) {\n          if (!obj[child.tagName]) obj[child.tagName] = [];\n          obj[child.tagName].push(tag)\n        } else if (child.tagName == \"Media\") {\n          if (!obj.media) obj.media = []\n           obj.media.push(this.plexToJSON(child))\n        } else if (child.tagName == \"Part\") {\n          if (!obj.part) obj.part = []\n           obj.part.push(this.plexToJSON(child))\n        } else {\n          if (!obj.children) obj.children = []\n          obj.children.push(this.plexToJSON(child))\n        }\n        \n        // if (prop.tagName == \"Media\") {\n        //   this.plexChildren(mediacontent)[0].getAttribute(\"file\")\n        // }\n      })\n      \n      return obj\n  }\n  \n  async GET(options) {\n    let apiString = this.getAPIString()\n    let query = this.getURLQuery()\n    let contentType = options && options.headers && new Headers(options.headers).get(\"content-type\")\n  \n    let html\n    let mediacontent = await this.plex(apiString)\n    \n    let htmlResponse = function(html) {\n      return new Response(html.outerHTML, {\n        status: 200,\n        headers: {\n          \"content-type\": \"text/html\" \n        }\n      })\n    }\n    \n    if (query.json || contentType ==  'application/json') {\n      // ok, we parse, then serialize, then pase again... can we avoid this?\n      return new Response(JSON.stringify(this.plexToJSON(mediacontent)), {status: 200})\n    } else if (query.list) {\n      let children = _.sortBy(this.plexChildren(mediacontent), ea => ea.getAttribute(\"title\"))\n      html = <html><ul>{...(children.map(ea => \n        <li>{ea.getAttribute(\"title\")}</li>\n      ))}</ul></html>\n      return htmlResponse(html)\n    } else if (query.thumbs) {\n      let children = _.sortBy(this.plexChildren(mediacontent), ea => ea.getAttribute(\"title\"))\n      // #TODO we should do this only if we have a thumb        \n      html = <html><div style=\"\">{...(children.map(ea => {\n            var img = <img style=\"\" width=\"100px\"></img>\n            img.src = lively.swxURL(\"plex://\" + ea.getAttribute(\"thumb\"))\n            img.title = ea.getAttribute(\"title\")\n            var a = <a style=\"\">{img}<br />{ea.getAttribute(\"title\")}</a>\n            a.href = lively.swxURL(\"plex://\" + ea.getAttribute(\"key\"))\n            var div = <div style=\"font-size:8pt;margin:10px;vertical-align: text-top; display:inline-block; width:100px; overflow: hidden\">{a}<br />{ea.getAttribute(\"year\")}</div>\n            return div\n          }\n      ))}</div></html>\n      return htmlResponse(html)\n    } else if(query.table) { \n      // default html rendering\n      let table = await lively.create(\"lively-table\")\n      try {\n        table.setFromJSO(this.plexToJSON(mediacontent).children)\n      } finally {\n        table.remove()\n      }\n      html = table     \n      return htmlResponse(html)\n    } else if(query.html || query.index || contentType ==  'text/html') { \n      html = `<plex-media src='plex:/${apiString}'></plex-media>` // a fetchy double dispatch \n      return new Response(html)\n    } else {\n      // default xml\n      let resp = await this.plexBlob(apiString)\n      return new Response(resp) // {status: 200}   \n    }\n  }\n\n  async plex(apiString) {\n    var token = await this.plexToken()\n    var text = await fetch(\"http://127.0.0.1:32400\" + apiString + \"?X-Plex-Token=\" + token).then(r => r.text())\n    return new DOMParser().parseFromString(text, \"text/xml\").childNodes[0];\n  }\n  \n  async plexBlob(apiString) {\n    var token = await this.plexToken()\n    return fetch(\"http://127.0.0.1:32400\" + apiString + \"?X-Plex-Token=\" + token).then(r => r.blob())\n  }\n  \n  optionsFromPlex(xml, url) {\n    // single vs. collections... how should we do this?\n    if (xml.getAttribute && xml.getAttribute(\"size\") == 1 && xml.childNodes[0].tagName !== \"directory\") { \n      xml = Array.from(xml.childNodes).filter(ea => ea.getAttribute)[0]\n      lively.notify(\"take \" + xml.childNodes)\n    }\n    return {\n      name: xml.getAttribute(\"key\") || xml.getAttribute(\"title\") || xml.getAttribute(\"title1\") || xml.tagName ,\n      title: xml.getAttribute(\"title\") || xml.getAttribute(\"title1\"),\n      parent: url.replace(/\\/[^/]+\\/?$/,\"\"),\n      \"index-available\": true,\n      contents: _.sortBy(Array.from(xml.childNodes)\n          .filter(ea => ea.getAttribute && ea.getAttribute(\"key\"))\n          .map(ea => {\n            var obj = {\n              name: ea.getAttribute(\"key\").replace(/\\/children$/,\"/\"),\n              title: ea.getAttribute(\"title\") || ea.getAttribute(\"title1\"),\n              contents: [],\n              parent: url,\n              type: ea.tagName == \"Directory\" ? \"directory\" : \"file\"\n            }\n            if (obj.name.match(/^\\//)) {\n              obj.type = \"link\" // symlinks, cross refs... etc\n              obj.href = this.scheme + \":/\" + obj.name\n            }\n            return obj\n          }), \n          ea => ea.title),\n      type: \"file\"\n    }\n  }\n  \n  getAPIString() {\n    var urlObj = new URL(this.url)\n    return urlObj.pathname.replace(/\\/\\//g,\"/\")\n  }\n\n  getURLQuery() {\n    var urlObj = new URL(this.url)\n    var query =  parseQuery(urlObj.search)\n    Object.keys(query).forEach(ea => {\n      if (query[ea] == \"\") query[ea] = true;\n    })\n    return query\n  }\n\n  async OPTIONS() {\n    var apiString = this.getAPIString()\n    var mediacontent = await this.plex(apiString)\n    var result = await this.optionsFromPlex(mediacontent, this.url)\n    return new Response(JSON.stringify(result), {status: 200})\n  }\n}\n\nlively.components.addPersistentCustomTemplatePath(\"/demos/plex/\")\n\nPolymorphicIdentifier.register(PlexScheme)\n\nconsole.warn(\"LOADED plex\")\n\n"],"mappings":"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"}