{"version":3,"sources":["jsdelivr-header.js","/npm/react-native-page-previewer@0.1.7/index.js"],"names":[],"mappings":"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","file":"/npm/react-native-page-previewer@0.1.7/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/react-native-page-previewer@0.1.7/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","\nimport { NativeModules } from 'react-native';\nurlObj = require('url');\ncheerio = require('cheerio-without-node-native');\n\nfunction getPreview(urlObj, callback) {\n  var url = urlObj.url;\n\n  fetch(url, {method: \"GET\"})\n    .then((response) => {\n        var html = response._bodyInit;\n        var doc = cheerio.load(html);\n\n        callback(null, parseResponse(html, url));\n  });\n}\n\n\nfunction parseResponse(body, url) {\n\tvar doc,\n\t\ttitle,\n\t\tdescription,\n\t\tmediaType,\n\t\timages,\n\t\tvideos;\n\n\tdoc = cheerio.load(body);\n\ttitle = getTitle(doc);\n\n\tdescription = getDescription(doc);\n\n\tmediaType = getMediaType(doc);\n\n\timages = getImages(doc, url);\n\n\tvideos = getVideos(doc);\n\n\treturn createResponseData(url, false, title, description, \"text/html\", mediaType, images, videos);\n}\n\nfunction getTitle(doc){\n    var title = doc(\"title\").text();\n\n    if(title === undefined || !title){\n        title = doc(\"meta[property='og:title']\").attr(\"content\");\n    }\n\n    return title;\n};\n\nfunction getDescription(doc){\n    var description = doc(\"meta[name=description]\").attr(\"content\");\n\n    if(description === undefined) {\n        description = doc(\"meta[name=Description]\").attr(\"content\");\n\n        if(description === undefined) {\n            description = doc(\"meta[property='og:description']\").attr(\"content\");\n        }\n    }\n\n    return description;\n}\n\nfunction getMediaType(doc) {\n\tvar node = doc(\"meta[name=medium]\"),\n\t\tcontent;\n\n\tif(node.length) {\n\t\tcontent = node.attr(\"content\");\n\t\treturn content == \"image\" ? \"photo\" : content;\n\t} else {\n\t\treturn doc(\"meta[property='og:type']\").attr(\"content\");\n\t}\n}\n\nvar minImageSize = 50;\nfunction getImages(doc, pageUrl) {\n  var images = [], nodes, src,\n    width, height,\n    dic;\n\n  nodes = doc(\"meta[property='og:image']\");\n\n  if(nodes.length) {\n    nodes.each(function(index, node){\n            src = node.attribs[\"content\"];\n            if(src){\n                src = urlObj.resolve(pageUrl, src);\n                images.push(src);\n            }\n    });\n  }\n\n  if(images.length <= 0) {\n    src = doc(\"link[rel=image_src]\").attr(\"href\");\n    if(src) {\n            src = urlObj.resolve(pageUrl, src);\n            images = [ src ];\n    } else {\n      nodes = doc(\"img\");\n\n      if(nodes.length) {\n        dic = {};\n        images = [];\n        nodes.each(function(index, node) {\n          src = node.attribs[\"src\"];\n          if(src && !dic[src]) {\n            dic[src] = 1;\n            width = node.attribs[\"width\"] || minImageSize;\n            height = node.attribs[\"height\"] || minImageSize;\n            src = urlObj.resolve(pageUrl, src);\n            if(width >= minImageSize && height >= minImageSize) {\n              images.push(src);\n            }\n          }\n        });\n      }\n    }\n  }\n  return images;\n}\n\nfunction getVideos(doc) {\n\tvar videos,\n\t\tnodes, nodeTypes, nodeSecureUrls,\n\t\tnodeType, nodeSecureUrl,\n\t\tvideo, videoType, videoSecureUrl,\n\t\twidth, height,\n\t\tvideoObj, index, length;\n\n\tnodes = doc(\"meta[property='og:video']\");\n\tlength =  nodes.length;\n\tif(length) {\n\t\tvideos = [];\n\t\tnodeTypes = doc(\"meta[property='og:video:type']\");\n\t\tnodeSecureUrls = doc(\"meta[property='og:video:secure_url']\");\n\t\twidth = doc(\"meta[property='og:video:width']\").attr(\"content\");\n\t\theight = doc(\"meta[property='og:video:height']\").attr(\"content\");\n\n\t\tfor(index = 0; index < length; index++) {\n\t\t\tvideo = nodes[index].attribs[\"content\"];\n\n\t\t\tnodeType = nodeTypes[index];\n\t\t\tvideoType = nodeType ? nodeType.attribs[\"content\"] : null;\n\n\t\t\tnodeSecureUrl = nodeSecureUrls[index];\n\t\t\tvideoSecureUrl = nodeSecureUrl ? nodeSecureUrl.attribs[\"content\"] : null;\n\n\t\t\tvideoObj = { url: video, secureUrl: videoSecureUrl, type: videoType, width: width, height: height };\n\t\t\tif(videoType.indexOf(\"video/\") === 0) {\n\t\t\t\tvideos.splice(0, 0, videoObj);\n\t\t\t} else {\n\t\t\t\tvideos.push(videoObj);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn videos;\n}\n\nfunction parseMediaResponse(res, contentType, url) {\n\tif(contentType.indexOf(\"image/\") === 0) {\n\t\treturn createResponseData(url, false, \"\", \"\", contentType, \"photo\", [url]);\n\t} else {\n\t\treturn createResponseData(url, false, \"\", \"\", contentType);\n\t}\n}\n\nfunction createResponseData(url, loadFailed, title, description, contentType, mediaType, images, videos, audios) {\n\treturn {\n\t\turl: url,\n\t\tloadFailed: loadFailed,\n\t\ttitle: title,\n\t\tdescription: description,\n\t\tcontentType: contentType,\n\t\tmediaType: mediaType || \"website\",\n\t\timages: images,\n\t\tvideos: videos,\n\t\taudios: audios\n\t};\n}\n\nmodule.exports = getPreview;\n"]}