{"version":3,"sources":["jsdelivr-header.js","/npm/tweet-to-html@2.0.0/index.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA,ACNA,IAAI,QAAU,QAAQ,WAEtB,OAAO,QAAQ,MAAQ,YAEvB,IAAI,QAAU,CAAC,EAEf,SAAS,YAAY,EAAQ,GAE3B,OADA,QAAU,EACH,MAAM,QAAQ,GAAU,EAAO,IAAI,YAAc,WAAW,EACrE,CAEA,SAAS,WAAW,GAClB,IASI,EATA,EAAmB,CACrB,SAAU,gBACV,QAAS,eACT,cAAe,oBACf,KAAM,YACN,MAAO,cAGL,EAAW,EAAS,SA6BxB,OAxBI,EAAS,YACX,EAAS,KAAO,EAAS,WAI3B,EAAS,KAAO,EAAS,KAGtB,OAAO,oBAAoB,GAAU,QACtC,OAAO,KAAK,GAAU,SAAS,IAC1B,EAAS,GAAQ,SAClB,EAAe,EAAS,GAGxB,EAA0B,UAAX,EAAqB,EAAS,kBAAkB,MAAQ,EAEvE,EAAiB,GAAQ,EAAc,GACzC,IAKJ,aAAa,GAEN,CACT,CAEA,SAAS,gBAAgB,EAAM,GAC7B,EAAK,SAAS,IACZ,IAAI,GAAU,IAAM,EAAO,MAAM,KAAK,8BAAgC,EAAO,MAC7E,EAAS,KAAO,EAAS,KAAK,QAAQ,IAAM,EAAO,KAAM,EAAO,GAEpE,CAEA,SAAS,eAAe,EAAS,GAAW,CAE5C,SAAS,oBAAoB,EAAO,GAClC,EAAM,SAAS,IACb,IAAI,GAAU,IAAM,EAAQ,aAAa,KAAK,sBAAwB,EAAQ,aAC1E,EAAQ,IAAI,OAAO,IAAM,EAAQ,YAAa,MAClD,EAAS,KAAO,EAAS,KAAK,QAAQ,EAAO,EAAO,GAExD,CAEA,SAAS,YAAY,EAAM,GACzB,EAAK,SAAQ,CAAC,EAAQ,KACpB,IAAI,EAAkB,GAClB,EAAU,EAAO,QACjB,EAAe,EAAS,KAAK,UAAU,EAAQ,GAAG,EAAQ,IAE3D,IAAU,EAAK,OAAO,GAAK,EAAS,gBAErC,EAAkB,6BADlB,EAAkB,YAAY,EAAS,eAAe,cAIxD,IAAI,EAAY,GAAmB,EAAO,YAAY,KAAK,EAAO,cAClE,EAAS,KAAO,EAAS,KAAK,QAAQ,EAAc,EAAU,GAElE,CAEA,SAAS,aAAa,EAAO,GAC3B,EAAM,SAAS,IACb,GAAqB,UAAlB,EAAS,KAAkB,CAE5B,IAAI,EAAM,EAAS,gBAAkB,EAAS,gBAAkB,EAAS,UAEtE,SACD,QAAQ,WACR,EAAS,OACT,EAAS,MAAM,QAAQ,aAEvB,EAAM,EAAM,IAAM,QAAQ,WAG5B,IAAI,EAAQ,aAAe,EAAM,MACjC,EAAS,KAAO,EAAS,KAAK,QAAQ,EAAS,IAAK,EACtD,MAAO,GAAqB,UAAlB,EAAS,KAAkB,CACnC,IAAI,EAAS,GACb,EAAS,WAAW,SAAS,SAAS,IACpC,GAAU,gBAAiB,EAAK,IAAK,WAAY,EAAK,aAAc,IAAI,IAE1E,IAAI,EAAQ,2BAA6B,EAAS,UAAW,KAAO,EAAS,WAC7E,EAAS,KAAO,EAAS,KAAK,QAAQ,EAAS,IAAK,EACtD,IAEJ,CAEA,SAAS,aAAa,GACpB,EAAS,KAAO,QAAQ,MAAM,EAAS,KACzC","file":"/npm/tweet-to-html@2.0.0/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/tweet-to-html@2.0.0/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","var twemoji = require('twemoji' );\n\nmodule.exports.parse = parseTweets;\n\nvar options = {};\n\nfunction parseTweets(tweets, opts) {\n  options = opts;\n  return Array.isArray(tweets) ? tweets.map(parseTweet) : parseTweet(tweets);\n}\n\nfunction parseTweet(tweetObj) {\n  var entityProcessors = {\n    hashtags: processHashTags,\n    symbols: processSymbols,\n    user_mentions: processUserMentions,\n    urls: processUrls,\n    media: processMedia\n  };\n\n  var entities = tweetObj.entities;\n  var processorObj;\n\n  //When extended_mode is enabled, the text property will be empty and the value of the html property will be set to the full_text value\n  //Replace the text property because the property is used in other functions (i.e. processUrls)\n  if (tweetObj.full_text) {\n    tweetObj.text = tweetObj.full_text;\n  }\n\n  //Copying text value to a new property html. The final output will be set to this property\n  tweetObj.html = tweetObj.text;\n\n  //Process entities\n  if(Object.getOwnPropertyNames(entities).length) {\n    Object.keys(entities).forEach((entity) => {\n      if(entities[entity].length) {\n        processorObj = entities[entity];\n\n        //Need to check if entity is media. If so, extended_entities should be used\n        processorObj = entity === 'media' ? tweetObj.extended_entities.media : processorObj;\n\n        entityProcessors[entity](processorObj, tweetObj);\n      }\n    });\n  }\n\n  //Process Emoji's\n  processEmoji(tweetObj);\n\n  return tweetObj;\n}\n\nfunction processHashTags(tags, tweetObj) {\n  tags.forEach((tagObj) => {\n    var anchor = ('#' + tagObj.text).link('http://twitter.com/hashtag/' + tagObj.text);\n    tweetObj.html = tweetObj.html.replace('#' + tagObj.text, anchor);\n  });\n}\n\nfunction processSymbols(symbols, tweetObj) {}\n\nfunction processUserMentions(users, tweetObj) {\n  users.forEach((userObj) => {\n    var anchor = ('@' + userObj.screen_name).link('http://twitter.com/' + userObj.screen_name);\n    var regex = new RegExp('@' + userObj.screen_name, 'gi' );\n    tweetObj.html = tweetObj.html.replace(regex, anchor);\n  });\n}\n\nfunction processUrls(urls, tweetObj) {\n  urls.forEach((urlObj, index) => {\n    var quotedTweetHtml = '';\n    var indices = urlObj.indices;\n    var urlToReplace = tweetObj.text.substring(indices[0],indices[1]);\n\n    if(index === urls.length-1 && tweetObj.quoted_status) {\n      quotedTweetHtml = parseTweets(tweetObj.quoted_status).html;\n      quotedTweetHtml = `<div class=\"quoted-tweet\">${quotedTweetHtml}</div>`\n    }\n\n    var finalText = quotedTweetHtml || urlObj.display_url.link(urlObj.expanded_url);\n    tweetObj.html = tweetObj.html.replace(urlToReplace, finalText);\n  });\n}\n\nfunction processMedia(media, tweetObj) {\n  media.forEach((mediaObj) => {\n    if(mediaObj.type === 'photo') {\n      // Use HTTPS if available\n      var src = mediaObj.media_url_https ? mediaObj.media_url_https : mediaObj.media_url;\n\n      if(options &&\n        options.photoSize &&\n        mediaObj.sizes &&\n        mediaObj.sizes[options.photoSize]) {\n        // If specified size is available, patch image src to use it\n        src = src + ':' + options.photoSize;\n      }\n\n      var image = '<img src=\"' + src + '\"/>';\n      tweetObj.html = tweetObj.html.replace(mediaObj.url, image);\n    } else if(mediaObj.type === 'video') {\n      var source = '';\n      mediaObj.video_info.variants.forEach((info) => {\n        source += '<source src=\"'+ info.url +'\" type=\"'+ info.content_type +'\">';\n      });\n      var video = '<video controls poster=\"' + mediaObj.media_url +'\">' + source + '</video>';\n      tweetObj.html = tweetObj.html.replace(mediaObj.url, video);\n    }\n  });\n}\n\nfunction processEmoji(tweetObj) {\n  tweetObj.html = twemoji.parse(tweetObj.html);\n}\n"]}