{"version":3,"sources":["jsdelivr-header.js","/npm/yall-js@3.1.5/dist/yall.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA,ACNA,aAEA,SAAS,KAAM,GAIb,MAAM,GAHN,EAAU,GAAW,CAAC,GAGI,WAAa,OACjC,EAAsB,EAAQ,qBAAuB,UACrD,EAAkB,oBAAqB,EAAU,EAAQ,gBAAkB,IAC3E,EAAiB,EAAQ,iBAAkB,EAC3C,EAAS,EAAQ,QAAU,CAAC,EAG5B,EAAM,OACN,EAAM,sBACN,EAAK,uBAGL,EAAY,CAAC,SAAU,MAAO,UAC9B,EAAM,GACN,EAAW,CAAC,EAAU,IAAS,EAAI,MAAM,MAAM,GAAQ,UAAU,iBAAiB,GAAY,OAAO,WAAmB,YAAoB,MAAc,MAG1J,EAAW,IACf,MAAM,EAAa,EAAQ,WAC3B,IACI,EADA,EAAW,GAGY,WAAvB,EAAW,WACb,EAAa,GAGS,SAApB,EAAQ,WACV,EAAa,GAGf,EAAW,EAAS,SAAU,GAE9B,IAAK,IAAI,KAAgB,EACvB,EAAkB,EAAS,IAG7B,EAAkB,GAEd,EAAQ,UACV,EAAQ,OAGV,MAAM,EAAY,EAAQ,UAGtB,EAAU,SAAS,KACrB,EAAU,OAAO,GACjB,EAAU,IAAI,EAAQ,sBAAwB,kBAChD,EAGI,EAAW,IACf,IAAK,IAAI,KAAc,EACrB,EAAQ,iBAAiB,EAAY,EAAO,GAAY,UAAY,EAAO,GAAa,EAAO,GAAY,cAAW,GAGxH,EAAqB,QAAQ,EAAQ,EAKjC,EAAoB,IACxB,EAAU,SAAQ,IACZ,KAAY,EAAQ,SACtB,EAA2B,uBAAE,KAC3B,EAAQ,aAAa,EAAU,EAAQ,QAAQ,GAAU,GAE7D,GACA,EAGJ,IAAI,EAAe,IAInB,GAAI,4CAA4C,KAAK,UAAU,WAC7D,IAAK,IAAI,KAAoB,EAC3B,EAAS,EAAa,SAM1B,GAAI,KAAM,GAAO,GAAG,WAAa,EAAK,CACpC,IAAI,EAAuB,IAAI,EAAI,IAAI,CAAC,EAAS,KAC/C,EAAQ,SAAQ,IACd,GAAI,EAAM,gBAAkB,EAAM,kBAAmB,CACnD,MAAM,EAAU,EAAM,OAElB,KAAO,GAAO,EAChB,EAAI,IAAK,KACP,EAAS,EAAQ,GAChB,CACD,QAAS,IAGX,EAAS,GAGX,EAAQ,UAAU,OAAO,GACzB,EAAS,UAAU,GACnB,EAAe,EAAa,QAAO,GAAe,GAAe,IAE5D,EAAa,QAAW,GAC3B,EAAqB,YAEzB,IACA,GACD,CACD,WAAY,GAAG,cAAe,EAAU,EAAQ,UAAY,aAG9D,IAAK,IAAI,KAAoB,EAC3B,EAAS,EAAa,IAGpB,GACF,IAAI,kBAAiB,KACnB,IAAW,SAAQ,IACb,EAAa,QAAQ,GAAc,IACrC,EAAa,KAAK,GAClB,EAAS,GACX,GACA,IACD,QAAQ,EAAS,EAAQ,qBAAuB,QAAQ,GAAI,EAAQ,yBAA2B,CAChG,WAAW,EACX,SAAS,GAGf,CACF,CAEA,OAAO,QAAU","file":"/npm/yall-js@3.1.5/dist/yall.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.37.0.\n * Original file: /npm/yall-js@3.1.5/dist/yall.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","'use strict';\n\nfunction yall (options) {\n  options = options || {};\n\n  // Options\n  const lazyClass = options.lazyClass || \"lazy\";\n  const lazyBackgroundClass = options.lazyBackgroundClass || \"lazy-bg\";\n  const idleLoadTimeout = \"idleLoadTimeout\" in options ? options.idleLoadTimeout : 200;\n  const observeChanges = options.observeChanges || false;\n  const events = options.events || {};\n\n  // Shorthands (saves more than a few bytes!)\n  const win = window;\n  const ric = \"requestIdleCallback\";\n  const io = \"IntersectionObserver\";\n\n  // App stuff\n  const dataAttrs = [\"srcset\", \"src\", \"poster\"];\n  const arr = [];\n  const queryDOM = (selector, root) => arr.slice.call((root || document).querySelectorAll(selector || `img.${lazyClass},video.${lazyClass},iframe.${lazyClass},.${lazyBackgroundClass}`));\n\n  // This function handles lazy loading of elements.\n  const yallLoad = element => {\n    const parentNode = element.parentNode;\n    let elements = [];\n    let sourceNode;\n\n    if (parentNode.nodeName == \"PICTURE\") {\n      sourceNode = parentNode;\n    }\n\n    if (element.nodeName == \"VIDEO\") {\n      sourceNode = element;\n    }\n\n    elements = queryDOM(\"source\", sourceNode);\n\n    for (let elementIndex in elements) {\n      yallFlipDataAttrs(elements[elementIndex]);\n    }\n\n    yallFlipDataAttrs(element);\n\n    if (element.autoplay) {\n      element.load();\n    }\n\n    const classList = element.classList;\n\n    // Lazy load CSS background images\n    if (classList.contains(lazyBackgroundClass)) {\n      classList.remove(lazyBackgroundClass);\n      classList.add(options.lazyBackgroundLoaded || \"lazy-bg-loaded\");\n    }\n  };\n\n  const yallBind = element => {\n    for (let eventIndex in events) {\n      element.addEventListener(eventIndex, events[eventIndex].listener || events[eventIndex], events[eventIndex].options || undefined);\n    }\n\n    intersectionListener.observe(element);\n  };\n\n  // Added because there was a number of patterns like this peppered throughout\n  // the code. This just flips necessary data- attrs on an element\n  const yallFlipDataAttrs = element => {\n    dataAttrs.forEach(dataAttr => {\n      if (dataAttr in element.dataset) {\n        win[\"requestAnimationFrame\"](() => {\n          element.setAttribute(dataAttr, element.dataset[dataAttr]);\n        });\n      }\n    });\n  };\n\n  let lazyElements = queryDOM();\n\n  // If the current user agent is a known crawler, immediately load all media\n  // for the elements yall is listening for and halt execution (good for SEO).\n  if (/baidu|(?:google|bing|yandex|duckduck)bot/i.test(navigator.userAgent)) {\n    for (let lazyElementIndex in lazyElements) {\n      yallLoad(lazyElements[lazyElementIndex]);\n    }\n\n    return;\n  }\n\n  if (io in win && `${io}Entry` in win) {\n    var intersectionListener = new win[io]((entries, observer) => {\n      entries.forEach(entry => {\n        if (entry.isIntersecting || entry.intersectionRatio) {\n          const element = entry.target;\n\n          if (ric in win && idleLoadTimeout) {\n            win[ric](() => {\n              yallLoad(element);\n            }, {\n              timeout: idleLoadTimeout\n            });\n          } else {\n            yallLoad(element);\n          }\n\n          element.classList.remove(lazyClass);\n          observer.unobserve(element);\n          lazyElements = lazyElements.filter(lazyElement => lazyElement != element);\n\n          if (!lazyElements.length && !observeChanges) {\n            intersectionListener.disconnect();\n          }\n        }\n      });\n    }, {\n      rootMargin: `${\"threshold\" in options ? options.threshold : 200}px 0%`\n    });\n\n    for (let lazyElementIndex in lazyElements) {\n      yallBind(lazyElements[lazyElementIndex]);\n    }\n\n    if (observeChanges) {\n      new MutationObserver(() => {\n        queryDOM().forEach(newElement => {\n          if (lazyElements.indexOf(newElement) < 0) {\n            lazyElements.push(newElement);\n            yallBind(newElement);\n          }\n        });\n      }).observe(queryDOM(options.observeRootSelector || \"body\")[0], options.mutationObserverOptions || {\n        childList: true,\n        subtree: true\n      });\n    }\n  }\n}\n\nmodule.exports = yall;\n"]}