{"version":3,"sources":["jsdelivr-header.js","/npm/prefetch@0.2.1/prefetch.js"],"names":[],"mappings":"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","file":"/npm/prefetch@0.2.1/prefetch.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.37.0.\n * Original file: /npm/prefetch@0.2.1/prefetch.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","/**\n * Copyright (c) 2015 Joe Podwys\n * Copyright (c) 2014-2015 Alexandre Dieulot (For segments taken from InstantClick.js)\n */\n\n(function (root, factory) {\n  if (typeof exports === 'object') module.exports = factory();\n  else if (typeof define === 'function' && define.amd) define(factory);\n  else root.Prefetch = factory();\n})(this, function () {\n\n  function Prefetch(){\n    var self = this;\n\n    self.init = function(config){\n      config = config || {};\n      self.$prefetchOnMousedown = config.waitForMousedown || false;\n      self.$enableTouch = config.enableTouch || false;\n      self.$delayBeforePrefetch = config.hoverDelay || 50;\n      self.$exclusions = config.exclusions || [];\n      self.$callback = config.callback;\n      config.containers = config.containers || [];\n      self.addContainers(config.containers);\n      return self;\n    }\n\n    self.prefetch = function(a){\n      a = a || self.$anchorToPrefetch;\n      if(self.$prefetchTimer){\n        clearTimeout(self.$prefetchTimer);\n        self.$prefetchTimer = false;\n      }\n      if(Object.prototype.toString.call(a) === '[object Array]'){\n        for(var i = 0; i < a.length; ++i){\n          execute(a[i]);\n        }\n      }\n      else{\n        execute(a);\n      }\n    }\n\n    self.addContainers = function(containers){\n      for(var i = 0; i < containers.length; ++i){\n        var el = document.querySelector(containers[i]);\n        if(el){\n          if(self.$enableTouch){\n            attachListener(el, 'touchstart');\n          }\n          if(self.$prefetchOnMousedown){\n            attachListener(el, 'mousedown');\n          }\n          else{\n            attachListener(el, 'mouseover');\n          }\n        }\n      }\n    }\n\n    self.addExclusions = function(exclusions){\n      self.$exclusions = self.$exclusions.concat(exclusions);\n    }\n\n    function removeHash(url){\n      var index = url.indexOf('#');\n      return (index < 0) ? url : url.substr(0, index);\n    }\n\n    function getLinkTarget(target){\n      while(target && target.nodeName != 'A'){\n        target = target.parentNode;\n      }\n      return target;\n    }\n\n    function isBlacklisted(elem){\n      do{\n        if(!elem.hasAttribute){\n          break;\n        }\n        if(elem.hasAttribute('data-no-prefetch')){\n          return true;\n        }\n      } while(elem = elem.parentNode);\n      return false;\n    }\n\n    function isSamePage(a){\n      return a.href.indexOf('#') > -1 && removeHash(a.href) === removeHash(location.href);\n    }\n\n    function isExcluded(a){\n      for(var i = 0; i < self.$exclusions.length; ++i){\n        if(a.href.indexOf(self.$exclusions[i]) > -1){\n          return true;\n        }\n      }\n      return false;\n    }\n\n    function isPrefetchable(a){\n      if(a.hasAttribute('download')\n        || !a.href\n        || isBlacklisted(a)\n        || isSamePage(a)\n        || isExcluded(a)){\n        return false;\n      }\n      return true;\n    }\n\n    function createLinkTag(url){\n      var link = document.createElement('link');\n      link.setAttribute('rel', 'prefetch');\n      link.setAttribute('href', url);\n      return link;\n    }\n\n    function injectPrefetchLink(url){\n      var link = createLinkTag(url);\n      document.getElementsByTagName('head')[0].appendChild(link);\n    }\n\n    function execute(a){\n      if(!a || !a.href) return;\n      var url = (typeof a === 'object') ? a.href : a;\n      if(self.$callback){\n        self.$callback(url, a, injectPrefetchLink);\n      }\n      else{\n        injectPrefetchLink(url);\n      }\n      if(typeof a === 'object'){\n        a.setAttribute('data-no-prefetch', '');\n      }\n    }\n\n    function touchstart(e){\n      self.$lastTouchTimestamp = new Date().getTime();\n      var a = getLinkTarget(e.target);\n      if(a && isPrefetchable(a)){\n        execute(a);\n      }\n    }\n\n    function mousedown(e){\n      if(self.$lastTouchTimestamp > (new Date().getTime() - 500)) return;\n      var a = getLinkTarget(e.target);\n      if(a && isPrefetchable(a)){\n        execute(a);\n      }\n    }\n\n    function mouseover(e){\n      if(self.$lastTouchTimestamp > (new Date().getTime() - 500)) return;\n      var a = getLinkTarget(e.target);\n      if(a && isPrefetchable(a)){\n        a.addEventListener('mouseout', mouseout);\n        if(!self.$delayBeforePrefetch){\n          execute(a);\n        }\n        else{\n          self.$anchorToPrefetch = a;\n          self.$prefetchTimer = setTimeout(self.prefetch, self.$delayBeforePrefetch);\n        }\n      }\n    }\n\n    function mouseout(){\n      if(self.$prefetchTimer){\n        clearTimeout(self.$prefetchTimer);\n        self.$prefetchTimer = false;\n      }\n    }\n\n    function attachListener(el, type){\n      el.addEventListener(type, function (e){\n        if(e.target.matches('a') || getLinkTarget(e.target)){\n          switch(type){\n            case 'touchstart': touchstart(e); break;\n            case 'mousedown':  mousedown(e);  break;\n            case 'mouseover':  mouseover(e);  break;\n          }\n        }\n      });\n    }\n  }\n\n  return new Prefetch().init();\n});\n"]}