{"version":3,"sources":["jsdelivr-header.js","/npm/iframe-position-fixed-polyfill@0.4.3/src/polyfill.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA,CCNA,SAAU,GA+CR,SAAS,EAAO,EAAU,GACxB,GAAK,EACH,IAAM,IAAI,EAAI,EAAG,EAAI,EAAS,OAAQ,IAC/B,GAAW,EAAU,EAAS,GAG3C,CAEE,SAAS,IACF,SAAS,aACZ,EAAM,SAAS,aAAa,SAAW,GACrC,EAAM,EAAW,UAAU,SAAW,GAC/B,EAAK,OACoB,SAAvB,EAAK,MAAM,UACd,EAAM,SAAS,iBAAkB,EAAK,eAAgB,SAAW,GAC/D,IAAI,EAA2B,EAAS,EAAK,MAC7D,GAGA,GACA,GAEA,CAEE,SAAS,EAA4B,EAAS,GAC5C,IAAI,EAAK,KACgF,SAAnE,EAAQ,aAAa,4CAIzC,EAAG,QAAU,EAGb,EAAO,uCAAuC,gBAAgB,KAAK,EAAI,GAGvE,EAAG,QAAQ,aAAc,0CAA0C,GAInE,EAAO,uCAAuC,OAAO,iBAAkB,UAAU,SAAW,GAC1F,EAAO,uCAAuC,YAAY,KAAM,EACxE,GAAS,CAAC,SAAS,IAEnB,CAzFE,EAAO,uCAAyC,EAAO,wCAA0C,GAEjG,EAAO,uCAAuC,MAAQ,EAAO,uCAAuC,QAAS,EAC7G,EAAO,uCAAuC,OAAS,EAAO,uCAAuC,QAAU,EAAO,OACtH,EAAO,uCAAuC,wBAA0B,EAAO,uCAAuC,yBAA2B,cACjJ,EAAO,uCAAuC,oBAAsB,IAG7D,QAAS,EAAO,yCACrB,EAAO,uCAAuC,IAAM,WAC7C,EAAO,uCAAuC,OACjD,QAAQ,IAAK,6CAA8C,UACnE,GAES,oBAAqB,EAAO,yCACjC,EAAO,uCAAuC,gBAAkB,SAAW,GACzE,IAAI,EAAK,KAET,EAAG,cAAgB,KACnB,EAAG,WAAa,EAAc,IAAI,QAAQ,MAAQ,EAAM,EAAO,uCAAuC,OAAO,YAAc,IAAM,EAAc,IAAI,MAAM,GAAG,GAAO,EAAG,QAAQ,UAC9K,EAAG,QAAQ,MAAM,IAAM,EAAG,WAAa,IAC7C,GAES,gBAAiB,EAAO,yCAC7B,EAAO,uCAAuC,YAAc,WAC1D,IAAI,EAAK,KACL,EAAY,EAAO,uCAAuC,OAAQ,EAAO,uCAAuC,yBAE/G,EAAG,eAAgB,aAAc,EAAG,eACzC,EAAG,cAAgB,YAAY,WAC7B,EAAO,uCAAuC,IAAK,eAAgB,EAAI,GACvE,EAAO,uBAAuB,WAC5B,EAAG,QAAQ,MAAM,IAAM,EAAG,YAAe,GAAa,EAAO,aAAa,UAAY,EAAY,EAAO,aAAa,UAAY,GAAc,IAC1J,GACA,GAAS,EAAO,uCAAuC,oBACvD,GAEE,EAAO,iBAAiB,OAAQ,GAAc,GAE/B,IAAI,iBAAiB,GAC3B,QAAQ,SAAS,gBAAiB,CACvC,WAAW,EACX,SAAS,GAgDd,CA5FD,CA4FG","file":"/npm/iframe-position-fixed-polyfill@0.4.3/src/polyfill.js/+esm","sourceRoot":"","sourcesContent":["/**\n * Bundled by jsDelivr using Rollup v2.79.2 and Terser v5.39.0.\n * Original file: /npm/iframe-position-fixed-polyfill@0.4.3/src/polyfill.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","(function(window){\n  // *** Prepare configuration ***\n  window.iFramePositionFixPolyfillConfiguration = window.iFramePositionFixPolyfillConfiguration || {};\n  // *** Merge configuration ***\n  window.iFramePositionFixPolyfillConfiguration.debug = window.iFramePositionFixPolyfillConfiguration.debug || false;\n  window.iFramePositionFixPolyfillConfiguration.parent = window.iFramePositionFixPolyfillConfiguration.parent || window.parent;\n  window.iFramePositionFixPolyfillConfiguration.parentScrollTopProperty = window.iFramePositionFixPolyfillConfiguration.parentScrollTopProperty || 'pageYOffset';\n  window.iFramePositionFixPolyfillConfiguration.updateScrollTimeout = 100;\n  // *** Static helpers ***\n  // log: log something in the console, if the debug flag is set\n  if ( !('log' in window.iFramePositionFixPolyfillConfiguration) )\n    window.iFramePositionFixPolyfillConfiguration.log = function () {\n      if ( window.iFramePositionFixPolyfillConfiguration.debug )\n        console.log( '>> iFramePositionFixPolyfillConfiguration:', arguments );\n    };\n  // setInitialState: set the initial state of the element\n  if ( !('setInitialState' in window.iFramePositionFixPolyfillConfiguration) )\n    window.iFramePositionFixPolyfillConfiguration.setInitialState = function ( initialStyles ) {\n      var me = this;\n\n      me.updateTimeout = null;\n      me.initialTop = initialStyles.top.indexOf('%') > -1 ? ( window.iFramePositionFixPolyfillConfiguration.parent.innerHeight / 100 * initialStyles.top.slice(0,-1) ) : me.element.offsetTop;\n      me.element.style.top = me.initialTop + 'px';\n    };\n  // updateState: updates the element state on scroll\n  if ( !('updateState' in window.iFramePositionFixPolyfillConfiguration) )\n    window.iFramePositionFixPolyfillConfiguration.updateState = function () {\n      var me = this,\n          scrollTop = window.iFramePositionFixPolyfillConfiguration.parent[ window.iFramePositionFixPolyfillConfiguration.parentScrollTopProperty ];\n\n      if ( me.updateTimeout ) clearTimeout( me.updateTimeout );\n      me.updateTimeout = setTimeout( function() {\n        window.iFramePositionFixPolyfillConfiguration.log( 'updateScroll', me, scrollTop );\n        window.requestAnimationFrame( function (){\n          me.element.style.top = me.initialTop + ( scrollTop >= window.frameElement.offsetTop ? scrollTop - window.frameElement.offsetTop : scrollTop ) + 'px';\n        });\n      }, window.iFramePositionFixPolyfillConfiguration.updateScrollTimeout );\n    };\n  // Initialize this polyfill when the document has been fully loaded, including CSS\n  window.addEventListener('load', initPolyfill, false);\n  // Observe for new added elements\n  var observer = new MutationObserver(initPolyfill);\n  observer.observe(document.documentElement, {\n      childList: true,\n      subtree: true\n  });\n  // -------------------------------------------------------------------\n  function loop ( elements, callback ) {\n    if ( elements ) {\n      for ( var i = 0; i < elements.length; i++ ) {\n        if ( callback ) callback( elements[i] );\n      }\n    }\n  }\n  // -------------------------------------------------------------------\n  function initPolyfill () {\n    if ( document.styleSheets ) {\n      loop( document.styleSheets, function ( styleSheet ){\n        loop( styleSheet.cssRules, function ( rule ){\n          if ( rule.style ) {\n            if ( rule.style.position == 'fixed' ) {\n              loop( document.querySelectorAll( rule.selectorText ), function ( element ){\n                new iFramePositionFixPolyfill( element, rule.style );\n              })\n            }\n          }\n        })\n      });\n    }\n  }\n  // -------------------------------------------------------------------\n  function iFramePositionFixPolyfill ( element, initialStyles ) {\n    var me = this,\n        isInitialized = ( element.getAttribute('data-iframe-position-fixed-initialized') === \"true\" );\n\n    if ( !isInitialized ) {\n      // Define properties\n      me.element = element;\n\n      // Allow the user to configure the initial position through the external helper method\n      window.iFramePositionFixPolyfillConfiguration.setInitialState.call(me, initialStyles);\n\n      // Initialize element position\n      me.element.setAttribute( 'data-iframe-position-fixed-initialized', true );\n\n      // When the parent scrolls, attempt to update the element position ever 500ms.\n      // If another scroll event comes in place, cancel the previous attempt and retry.\n      window.iFramePositionFixPolyfillConfiguration.parent.addEventListener( 'scroll', function ( event ){\n        window.iFramePositionFixPolyfillConfiguration.updateState.call( me );\n      }, {passive: true});\n    }\n  }\n})(window);"]}