{"version":3,"sources":["webpack://website/./node_modules/ev-emitter/ev-emitter.js","webpack://website/./node_modules/fizzy-ui-utils/utils.js","webpack://website/./node_modules/infinite-scroll/js/button.js","webpack://website/./node_modules/infinite-scroll/js/core.js","webpack://website/./node_modules/infinite-scroll/js/history.js","webpack://website/./node_modules/infinite-scroll/js/index.js","webpack://website/./node_modules/infinite-scroll/js/page-load.js","webpack://website/./node_modules/infinite-scroll/js/scroll-watch.js","webpack://website/./node_modules/infinite-scroll/js/status.js"],"names":["global","factory","window","this","EvEmitter","proto","prototype","on","eventName","listener","events","_events","listeners","includes","push","once","onceEvents","_onceEvents","off","length","index","indexOf","splice","emitEvent","args","slice","onceListeners","apply","allOff","module","exports","utils","a","b","Object","assign","num","div","obj","Array","isArray","ary","elem","selector","parentNode","document","body","matches","querySelector","event","method","type","elems","makeArray","filter","HTMLElement","reduce","ffElems","childElems","querySelectorAll","concat","_class","methodName","threshold","timeoutName","clearTimeout","arguments","setTimeout","onDocReady","readyState","addEventListener","str","replace","match","$1","$2","toLowerCase","console","htmlInit","WidgetClass","namespace","docReady","dataAttr","toDashed","dataAttrElems","jQuery","forEach","options","attr","getAttribute","JSON","parse","error","className","instance","data","fizzyUIUtils","InfiniteScroll","InfiniteScrollButton","element","infScroll","clickHandler","onClick","bind","disable","enable","hide","preventDefault","loadNextPage","removeAttribute","disabled","style","display","removeEventListener","create","button","buttonElem","getQueryElement","destroy","Button","instances","queryElem","infiniteScrollGUID","option","defaults","$element","GUID","id","guid","pageIndex","loadCount","updateGetPath","getPath","updateGetAbsolutePath","log","callOnInit","call","opts","onInit","dispatchEvent","emitArgs","$event","jQEvent","Event","trigger","loggers","initialized","request","path","load","response","title","append","items","last","history","origin","debug","message","logger","updateMeasurements","windowHeight","innerHeight","rect","getBoundingClientRect","top","scrollY","updateScroller","elementScroll","scroller","Error","optPath","updateGetPathTemplate","updateGetPathSelector","nextIndex","regexString","templateRe","RegExp","location","href","parseInt","pathRegexes","getPathParts","regex","begin","end","hrefElem","pathParts","isPathSelector","getAbsolutePath","pathname","isQuery","directory","substring","lastIndexOf","pathStart","hideNav","nav","removeData","throttle","fn","timeout","now","Date","setJQuery","jqry","_init","jQueryBridget","link","createElement","protocol","host","createHistoryAppend","createHistoryPageLoad","scrollPages","scrollPage","scrollHistoryHandler","onScrollHistory","unloadHandler","onUnload","onAppendHistory","bindHistoryAppendEvents","isBind","addRemove","onPageLoadHistory","destroyHistory","firstItem","elemScrollY","getElementScrollY","offsetTop","getClosestScrollPage","setHistory","debounceMethod","scrollViewY","scrollTop","clientHeight","page","optHistory","historyTitle","scrollTo","loadOnScroll","checkLastPage","responseBody","domParseResponse","pageLoad","canLoad","onScrollThresholdLoad","outlayer","onAppendOutlayer","domParser","DOMParser","getItemsFragment","fragment","createDocumentFragment","isLoading","fetchOptions","fetchPromise","fetch","then","ok","statusText","onPageError","parseFromString","status","lastPageReached","onPageLoad","catch","appendNextPage","promiseValue","appendReady","appendItems","appendOutlayerItems","scripts","script","freshScript","attrs","attributes","setAttribute","name","value","innerHTML","replaceChild","refreshScripts","appendChild","imagesLoaded","Promise","resolve","bodyResponse","appended","pathOpt","prefill","isPrefilling","stopPrefill","distance","getPrefillDistance","scrollHeight","scrollThreshold","scrollWatch","pageScrollHandler","onPageScroll","resizeHandler","onResize","enableScrollWatch","disableScrollWatch","isScrollWatching","bindScrollWatchEvents","getBottomDistance","bottom","setDisplay","show","statusElem","statusElement","statusEventElements","showRequestStatus","showErrorStatus","showLastStatus","bindHideStatus","bindMethod","hideEvent","hideAllStatus","showStatus","hideStatusEventElements"],"mappings":"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","file":"waypoints.00b581b4f5731db8d274.js","sourcesContent":["/**\n * EvEmitter v2.0.0\n * Lil' event emitter\n * MIT License\n */\n\n( function( global, factory ) {\n // universal module definition\n if ( typeof module == 'object' && module.exports ) {\n // CommonJS - Browserify, Webpack\n module.exports = factory();\n } else {\n // Browser globals\n global.EvEmitter = factory();\n }\n\n}( typeof window != 'undefined' ? window : this, function() {\n\nfunction EvEmitter() {}\n\nlet proto = EvEmitter.prototype;\n\nproto.on = function( eventName, listener ) {\n if ( !eventName || !listener ) return this;\n\n // set events hash\n let events = this._events = this._events || {};\n // set listeners array\n let listeners = events[ eventName ] = events[ eventName ] || [];\n // only add once\n if ( !listeners.includes( listener ) ) {\n listeners.push( listener );\n }\n\n return this;\n};\n\nproto.once = function( eventName, listener ) {\n if ( !eventName || !listener ) return this;\n\n // add event\n this.on( eventName, listener );\n // set once flag\n // set onceEvents hash\n let onceEvents = this._onceEvents = this._onceEvents || {};\n // set onceListeners object\n let onceListeners = onceEvents[ eventName ] = onceEvents[ eventName ] || {};\n // set flag\n onceListeners[ listener ] = true;\n\n return this;\n};\n\nproto.off = function( eventName, listener ) {\n let listeners = this._events && this._events[ eventName ];\n if ( !listeners || !listeners.length ) return this;\n\n let index = listeners.indexOf( listener );\n if ( index != -1 ) {\n listeners.splice( index, 1 );\n }\n\n return this;\n};\n\nproto.emitEvent = function( eventName, args ) {\n let listeners = this._events && this._events[ eventName ];\n if ( !listeners || !listeners.length ) return this;\n\n // copy over to avoid interference if .off() in listener\n listeners = listeners.slice( 0 );\n args = args || [];\n // once stuff\n let onceListeners = this._onceEvents && this._onceEvents[ eventName ];\n\n for ( let listener of listeners ) {\n let isOnce = onceListeners && onceListeners[ listener ];\n if ( isOnce ) {\n // remove listener\n // remove before trigger to prevent recursion\n this.off( eventName, listener );\n // unset once flag\n delete onceListeners[ listener ];\n }\n // trigger listener\n listener.apply( this, args );\n }\n\n return this;\n};\n\nproto.allOff = function() {\n delete this._events;\n delete this._onceEvents;\n return this;\n};\n\nreturn EvEmitter;\n\n} ) );\n","/**\n * Fizzy UI utils v3.0.0\n * MIT license\n */\n\n( function( global, factory ) {\n // universal module definition\n if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory( global );\n } else {\n // browser global\n global.fizzyUIUtils = factory( global );\n }\n\n}( this, function factory( global ) {\n\nlet utils = {};\n\n// ----- extend ----- //\n\n// extends objects\nutils.extend = function( a, b ) {\n return Object.assign( a, b );\n};\n\n// ----- modulo ----- //\n\nutils.modulo = function( num, div ) {\n return ( ( num % div ) + div ) % div;\n};\n\n// ----- makeArray ----- //\n\n// turn element or nodeList into an array\nutils.makeArray = function( obj ) {\n // use object if already an array\n if ( Array.isArray( obj ) ) return obj;\n\n // return empty array if undefined or null. #6\n if ( obj === null || obj === undefined ) return [];\n\n let isArrayLike = typeof obj == 'object' && typeof obj.length == 'number';\n // convert nodeList to array\n if ( isArrayLike ) return [ ...obj ];\n\n // array of single index\n return [ obj ];\n};\n\n// ----- removeFrom ----- //\n\nutils.removeFrom = function( ary, obj ) {\n let index = ary.indexOf( obj );\n if ( index != -1 ) {\n ary.splice( index, 1 );\n }\n};\n\n// ----- getParent ----- //\n\nutils.getParent = function( elem, selector ) {\n while ( elem.parentNode && elem != document.body ) {\n elem = elem.parentNode;\n if ( elem.matches( selector ) ) return elem;\n }\n};\n\n// ----- getQueryElement ----- //\n\n// use element as selector string\nutils.getQueryElement = function( elem ) {\n if ( typeof elem == 'string' ) {\n return document.querySelector( elem );\n }\n return elem;\n};\n\n// ----- handleEvent ----- //\n\n// enable .ontype to trigger from .addEventListener( elem, 'type' )\nutils.handleEvent = function( event ) {\n let method = 'on' + event.type;\n if ( this[ method ] ) {\n this[ method ]( event );\n }\n};\n\n// ----- filterFindElements ----- //\n\nutils.filterFindElements = function( elems, selector ) {\n // make array of elems\n elems = utils.makeArray( elems );\n\n return elems\n // check that elem is an actual element\n .filter( ( elem ) => elem instanceof HTMLElement )\n .reduce( ( ffElems, elem ) => {\n // add elem if no selector\n if ( !selector ) {\n ffElems.push( elem );\n return ffElems;\n }\n // filter & find items if we have a selector\n // filter\n if ( elem.matches( selector ) ) {\n ffElems.push( elem );\n }\n // find children\n let childElems = elem.querySelectorAll( selector );\n // concat childElems to filterFound array\n ffElems = ffElems.concat( ...childElems );\n return ffElems;\n }, [] );\n};\n\n// ----- debounceMethod ----- //\n\nutils.debounceMethod = function( _class, methodName, threshold ) {\n threshold = threshold || 100;\n // original method\n let method = _class.prototype[ methodName ];\n let timeoutName = methodName + 'Timeout';\n\n _class.prototype[ methodName ] = function() {\n clearTimeout( this[ timeoutName ] );\n\n let args = arguments;\n this[ timeoutName ] = setTimeout( () => {\n method.apply( this, args );\n delete this[ timeoutName ];\n }, threshold );\n };\n};\n\n// ----- docReady ----- //\n\nutils.docReady = function( onDocReady ) {\n let readyState = document.readyState;\n if ( readyState == 'complete' || readyState == 'interactive' ) {\n // do async to allow for other scripts to run. metafizzy/flickity#441\n setTimeout( onDocReady );\n } else {\n document.addEventListener( 'DOMContentLoaded', onDocReady );\n }\n};\n\n// ----- htmlInit ----- //\n\n// http://bit.ly/3oYLusc\nutils.toDashed = function( str ) {\n return str.replace( /(.)([A-Z])/g, function( match, $1, $2 ) {\n return $1 + '-' + $2;\n } ).toLowerCase();\n};\n\nlet console = global.console;\n\n// allow user to initialize classes via [data-namespace] or .js-namespace class\n// htmlInit( Widget, 'widgetName' )\n// options are parsed from data-namespace-options\nutils.htmlInit = function( WidgetClass, namespace ) {\n utils.docReady( function() {\n let dashedNamespace = utils.toDashed( namespace );\n let dataAttr = 'data-' + dashedNamespace;\n let dataAttrElems = document.querySelectorAll( `[${dataAttr}]` );\n let jQuery = global.jQuery;\n\n [ ...dataAttrElems ].forEach( ( elem ) => {\n let attr = elem.getAttribute( dataAttr );\n let options;\n try {\n options = attr && JSON.parse( attr );\n } catch ( error ) {\n // log error, do not initialize\n if ( console ) {\n console.error( `Error parsing ${dataAttr} on ${elem.className}: ${error}` );\n }\n return;\n }\n // initialize\n let instance = new WidgetClass( elem, options );\n // make available via $().data('namespace')\n if ( jQuery ) {\n jQuery.data( elem, namespace, instance );\n }\n } );\n\n } );\n};\n\n// ----- ----- //\n\nreturn utils;\n\n} ) );\n","// button\n( function( window, factory ) {\n // universal module definition\n if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('./core'),\n require('fizzy-ui-utils'),\n );\n } else {\n // browser global\n factory(\n window,\n window.InfiniteScroll,\n window.fizzyUIUtils,\n );\n }\n\n}( window, function factory( window, InfiniteScroll, utils ) {\n\n// -------------------------- InfiniteScrollButton -------------------------- //\n\nclass InfiniteScrollButton {\n constructor( element, infScroll ) {\n this.element = element;\n this.infScroll = infScroll;\n // events\n this.clickHandler = this.onClick.bind( this );\n this.element.addEventListener( 'click', this.clickHandler );\n infScroll.on( 'request', this.disable.bind( this ) );\n infScroll.on( 'load', this.enable.bind( this ) );\n infScroll.on( 'error', this.hide.bind( this ) );\n infScroll.on( 'last', this.hide.bind( this ) );\n }\n\n onClick( event ) {\n event.preventDefault();\n this.infScroll.loadNextPage();\n }\n\n enable() {\n this.element.removeAttribute('disabled');\n }\n\n disable() {\n this.element.disabled = 'disabled';\n }\n\n hide() {\n this.element.style.display = 'none';\n }\n\n destroy() {\n this.element.removeEventListener( 'click', this.clickHandler );\n }\n\n}\n\n// -------------------------- InfiniteScroll methods -------------------------- //\n\n// InfiniteScroll.defaults.button = null;\n\nInfiniteScroll.create.button = function() {\n let buttonElem = utils.getQueryElement( this.options.button );\n if ( buttonElem ) {\n this.button = new InfiniteScrollButton( buttonElem, this );\n }\n};\n\nInfiniteScroll.destroy.button = function() {\n if ( this.button ) this.button.destroy();\n};\n\n// -------------------------- -------------------------- //\n\nInfiniteScroll.Button = InfiniteScrollButton;\n\nreturn InfiniteScroll;\n\n} ) );\n","// core\n( function( window, factory ) {\n // universal module definition\n if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('ev-emitter'),\n require('fizzy-ui-utils'),\n );\n } else {\n // browser global\n window.InfiniteScroll = factory(\n window,\n window.EvEmitter,\n window.fizzyUIUtils,\n );\n }\n\n}( window, function factory( window, EvEmitter, utils ) {\n\nlet jQuery = window.jQuery;\n// internal store of all InfiniteScroll intances\nlet instances = {};\n\nfunction InfiniteScroll( element, options ) {\n let queryElem = utils.getQueryElement( element );\n\n if ( !queryElem ) {\n console.error( 'Bad element for InfiniteScroll: ' + ( queryElem || element ) );\n return;\n }\n element = queryElem;\n // do not initialize twice on same element\n if ( element.infiniteScrollGUID ) {\n let instance = instances[ element.infiniteScrollGUID ];\n instance.option( options );\n return instance;\n }\n\n this.element = element;\n // options\n this.options = { ...InfiniteScroll.defaults };\n this.option( options );\n // add jQuery\n if ( jQuery ) {\n this.$element = jQuery( this.element );\n }\n\n this.create();\n}\n\n// defaults\nInfiniteScroll.defaults = {\n // path: null,\n // hideNav: null,\n // debug: false,\n};\n\n// create & destroy methods\nInfiniteScroll.create = {};\nInfiniteScroll.destroy = {};\n\nlet proto = InfiniteScroll.prototype;\n// inherit EvEmitter\nObject.assign( proto, EvEmitter.prototype );\n\n// -------------------------- -------------------------- //\n\n// globally unique identifiers\nlet GUID = 0;\n\nproto.create = function() {\n // create core\n // add id for InfiniteScroll.data\n let id = this.guid = ++GUID;\n this.element.infiniteScrollGUID = id; // expando\n instances[ id ] = this; // associate via id\n // properties\n this.pageIndex = 1; // default to first page\n this.loadCount = 0;\n this.updateGetPath();\n // bail if getPath not set, or returns falsey #776\n let hasPath = this.getPath && this.getPath();\n if ( !hasPath ) {\n console.error('Disabling InfiniteScroll');\n return;\n }\n this.updateGetAbsolutePath();\n this.log( 'initialized', [ this.element.className ] );\n this.callOnInit();\n // create features\n for ( let method in InfiniteScroll.create ) {\n InfiniteScroll.create[ method ].call( this );\n }\n};\n\nproto.option = function( opts ) {\n Object.assign( this.options, opts );\n};\n\n// call onInit option, used for binding events on init\nproto.callOnInit = function() {\n let onInit = this.options.onInit;\n if ( onInit ) {\n onInit.call( this, this );\n }\n};\n\n// ----- events ----- //\n\nproto.dispatchEvent = function( type, event, args ) {\n this.log( type, args );\n let emitArgs = event ? [ event ].concat( args ) : args;\n this.emitEvent( type, emitArgs );\n // trigger jQuery event\n if ( !jQuery || !this.$element ) {\n return;\n }\n // namespace jQuery event\n type += '.infiniteScroll';\n let $event = type;\n if ( event ) {\n // create jQuery event\n /* eslint-disable-next-line new-cap */\n let jQEvent = jQuery.Event( event );\n jQEvent.type = type;\n $event = jQEvent;\n }\n this.$element.trigger( $event, args );\n};\n\nlet loggers = {\n initialized: ( className ) => `on ${className}`,\n request: ( path ) => `URL: ${path}`,\n load: ( response, path ) => `${response.title || ''}. URL: ${path}`,\n error: ( error, path ) => `${error}. URL: ${path}`,\n append: ( response, path, items ) => `${items.length} items. URL: ${path}`,\n last: ( response, path ) => `URL: ${path}`,\n history: ( title, path ) => `URL: ${path}`,\n pageIndex: function( index, origin ) {\n return `current page determined to be: ${index} from ${origin}`;\n },\n};\n\n// log events\nproto.log = function( type, args ) {\n if ( !this.options.debug ) return;\n\n let message = `[InfiniteScroll] ${type}`;\n let logger = loggers[ type ];\n if ( logger ) message += '. ' + logger.apply( this, args );\n console.log( message );\n};\n\n// -------------------------- methods used amoung features -------------------------- //\n\nproto.updateMeasurements = function() {\n this.windowHeight = window.innerHeight;\n let rect = this.element.getBoundingClientRect();\n this.top = rect.top + window.scrollY;\n};\n\nproto.updateScroller = function() {\n let elementScroll = this.options.elementScroll;\n if ( !elementScroll ) {\n // default, use window\n this.scroller = window;\n return;\n }\n // if true, set to element, otherwise use option\n this.scroller = elementScroll === true ? this.element :\n utils.getQueryElement( elementScroll );\n if ( !this.scroller ) {\n throw new Error(`Unable to find elementScroll: ${elementScroll}`);\n }\n};\n\n// -------------------------- page path -------------------------- //\n\nproto.updateGetPath = function() {\n let optPath = this.options.path;\n if ( !optPath ) {\n console.error(`InfiniteScroll path option required. Set as: ${optPath}`);\n return;\n }\n // function\n let type = typeof optPath;\n if ( type == 'function' ) {\n this.getPath = optPath;\n return;\n }\n // template string: '/pages/{{#}}.html'\n let templateMatch = type == 'string' && optPath.match('{{#}}');\n if ( templateMatch ) {\n this.updateGetPathTemplate( optPath );\n return;\n }\n // selector: '.next-page-selector'\n this.updateGetPathSelector( optPath );\n};\n\nproto.updateGetPathTemplate = function( optPath ) {\n // set getPath with template string\n this.getPath = () => {\n let nextIndex = this.pageIndex + 1;\n return optPath.replace( '{{#}}', nextIndex );\n };\n // get pageIndex from location\n // convert path option into regex to look for pattern in location\n // escape query (?) in url, allows for parsing GET parameters\n let regexString = optPath\n .replace( /(\\\\\\?|\\?)/, '\\\\?' )\n .replace( '{{#}}', '(\\\\d\\\\d?\\\\d?)' );\n let templateRe = new RegExp( regexString );\n let match = location.href.match( templateRe );\n\n if ( match ) {\n this.pageIndex = parseInt( match[1], 10 );\n this.log( 'pageIndex', [ this.pageIndex, 'template string' ] );\n }\n};\n\nlet pathRegexes = [\n // WordPress & Tumblr - example.com/page/2\n // Jekyll - example.com/page2\n /^(.*?\\/?page\\/?)(\\d\\d?\\d?)(.*?$)/,\n // Drupal - example.com/?page=1\n /^(.*?\\/?\\?page=)(\\d\\d?\\d?)(.*?$)/,\n // catch all, last occurence of a number\n /(.*?)(\\d\\d?\\d?)(?!.*\\d)(.*?$)/,\n];\n\n// try matching href to pathRegexes patterns\nlet getPathParts = InfiniteScroll.getPathParts = function( href ) {\n if ( !href ) return;\n for ( let regex of pathRegexes ) {\n let match = href.match( regex );\n if ( match ) {\n let [ , begin, index, end ] = match;\n return { begin, index, end };\n }\n }\n};\n\nproto.updateGetPathSelector = function( optPath ) {\n // parse href of link: '.next-page-link'\n let hrefElem = document.querySelector( optPath );\n if ( !hrefElem ) {\n console.error(`Bad InfiniteScroll path option. Next link not found: ${optPath}`);\n return;\n }\n\n let href = hrefElem.getAttribute('href');\n let pathParts = getPathParts( href );\n if ( !pathParts ) {\n console.error(`InfiniteScroll unable to parse next link href: ${href}`);\n return;\n }\n\n let { begin, index, end } = pathParts;\n this.isPathSelector = true; // flag for checkLastPage()\n this.getPath = () => begin + ( this.pageIndex + 1 ) + end;\n // get pageIndex from href\n this.pageIndex = parseInt( index, 10 ) - 1;\n this.log( 'pageIndex', [ this.pageIndex, 'next link' ] );\n};\n\nproto.updateGetAbsolutePath = function() {\n let path = this.getPath();\n // path doesn't start with http or /\n let isAbsolute = path.match( /^http/ ) || path.match( /^\\// );\n if ( isAbsolute ) {\n this.getAbsolutePath = this.getPath;\n return;\n }\n\n let { pathname } = location;\n // query parameter #829. example.com/?pg=2\n let isQuery = path.match( /^\\?/ );\n // /foo/bar/index.html => /foo/bar\n let directory = pathname.substring( 0, pathname.lastIndexOf('/') );\n let pathStart = isQuery ? pathname : directory + '/';\n\n this.getAbsolutePath = () => pathStart + this.getPath();\n};\n\n// -------------------------- nav -------------------------- //\n\n// hide navigation\nInfiniteScroll.create.hideNav = function() {\n let nav = utils.getQueryElement( this.options.hideNav );\n if ( !nav ) return;\n\n nav.style.display = 'none';\n this.nav = nav;\n};\n\nInfiniteScroll.destroy.hideNav = function() {\n if ( this.nav ) this.nav.style.display = '';\n};\n\n// -------------------------- destroy -------------------------- //\n\nproto.destroy = function() {\n this.allOff(); // remove all event listeners\n // call destroy methods\n for ( let method in InfiniteScroll.destroy ) {\n InfiniteScroll.destroy[ method ].call( this );\n }\n\n delete this.element.infiniteScrollGUID;\n delete instances[ this.guid ];\n // remove jQuery data. #807\n if ( jQuery && this.$element ) {\n jQuery.removeData( this.element, 'infiniteScroll' );\n }\n};\n\n// -------------------------- utilities -------------------------- //\n\n// https://remysharp.com/2010/07/21/throttling-function-calls\nInfiniteScroll.throttle = function( fn, threshold ) {\n threshold = threshold || 200;\n let last, timeout;\n\n return function() {\n let now = +new Date();\n let args = arguments;\n let trigger = () => {\n last = now;\n fn.apply( this, args );\n };\n if ( last && now < last + threshold ) {\n // hold on to it\n clearTimeout( timeout );\n timeout = setTimeout( trigger, threshold );\n } else {\n trigger();\n }\n };\n};\n\nInfiniteScroll.data = function( elem ) {\n elem = utils.getQueryElement( elem );\n let id = elem && elem.infiniteScrollGUID;\n return id && instances[ id ];\n};\n\n// set internal jQuery, for Webpack + jQuery v3\nInfiniteScroll.setJQuery = function( jqry ) {\n jQuery = jqry;\n};\n\n// -------------------------- setup -------------------------- //\n\nutils.htmlInit( InfiniteScroll, 'infinite-scroll' );\n\n// add noop _init method for jQuery Bridget. #768\nproto._init = function() {};\n\nlet { jQueryBridget } = window;\nif ( jQuery && jQueryBridget ) {\n jQueryBridget( 'infiniteScroll', InfiniteScroll, jQuery );\n}\n\n// -------------------------- -------------------------- //\n\nreturn InfiniteScroll;\n\n} ) );\n","// history\n( function( window, factory ) {\n // universal module definition\n if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('./core'),\n require('fizzy-ui-utils'),\n );\n } else {\n // browser global\n factory(\n window,\n window.InfiniteScroll,\n window.fizzyUIUtils,\n );\n }\n\n}( window, function factory( window, InfiniteScroll, utils ) {\n\nlet proto = InfiniteScroll.prototype;\n\nObject.assign( InfiniteScroll.defaults, {\n history: 'replace',\n // historyTitle: false,\n} );\n\nlet link = document.createElement('a');\n\n// ----- create/destroy ----- //\n\nInfiniteScroll.create.history = function() {\n if ( !this.options.history ) return;\n\n // check for same origin\n link.href = this.getAbsolutePath();\n // MS Edge does not have origin on link\n // https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/12236493/\n let linkOrigin = link.origin || link.protocol + '//' + link.host;\n let isSameOrigin = linkOrigin == location.origin;\n if ( !isSameOrigin ) {\n console.error( '[InfiniteScroll] cannot set history with different origin: ' +\n `${link.origin} on ${location.origin} . History behavior disabled.` );\n return;\n }\n\n // two ways to handle changing history\n if ( this.options.append ) {\n this.createHistoryAppend();\n } else {\n this.createHistoryPageLoad();\n }\n};\n\nproto.createHistoryAppend = function() {\n this.updateMeasurements();\n this.updateScroller();\n // array of scroll positions of appended pages\n this.scrollPages = [\n // first page\n {\n top: 0,\n path: location.href,\n title: document.title,\n },\n ];\n this.scrollPage = this.scrollPages[0];\n // events\n this.scrollHistoryHandler = this.onScrollHistory.bind( this );\n this.unloadHandler = this.onUnload.bind( this );\n this.scroller.addEventListener( 'scroll', this.scrollHistoryHandler );\n this.on( 'append', this.onAppendHistory );\n this.bindHistoryAppendEvents( true );\n};\n\nproto.bindHistoryAppendEvents = function( isBind ) {\n let addRemove = isBind ? 'addEventListener' : 'removeEventListener';\n this.scroller[ addRemove ]( 'scroll', this.scrollHistoryHandler );\n window[ addRemove ]( 'unload', this.unloadHandler );\n};\n\nproto.createHistoryPageLoad = function() {\n this.on( 'load', this.onPageLoadHistory );\n};\n\nInfiniteScroll.destroy.history =\nproto.destroyHistory = function() {\n let isHistoryAppend = this.options.history && this.options.append;\n if ( isHistoryAppend ) {\n this.bindHistoryAppendEvents( false );\n }\n};\n\n// ----- append history ----- //\n\nproto.onAppendHistory = function( response, path, items ) {\n // do not proceed if no items. #779\n if ( !items || !items.length ) return;\n\n let firstItem = items[0];\n let elemScrollY = this.getElementScrollY( firstItem );\n // resolve path\n link.href = path;\n // add page data to hash\n this.scrollPages.push({\n top: elemScrollY,\n path: link.href,\n title: response.title,\n });\n};\n\nproto.getElementScrollY = function( elem ) {\n if ( this.options.elementScroll ) {\n return elem.offsetTop - this.top;\n } else {\n let rect = elem.getBoundingClientRect();\n return rect.top + window.scrollY;\n }\n};\n\nproto.onScrollHistory = function() {\n // cycle through positions, find biggest without going over\n let scrollPage = this.getClosestScrollPage();\n // set history if changed\n if ( scrollPage != this.scrollPage ) {\n this.scrollPage = scrollPage;\n this.setHistory( scrollPage.title, scrollPage.path );\n }\n};\n\nutils.debounceMethod( InfiniteScroll, 'onScrollHistory', 150 );\n\nproto.getClosestScrollPage = function() {\n let scrollViewY;\n if ( this.options.elementScroll ) {\n scrollViewY = this.scroller.scrollTop + this.scroller.clientHeight / 2;\n } else {\n scrollViewY = window.scrollY + this.windowHeight / 2;\n }\n\n let scrollPage;\n for ( let page of this.scrollPages ) {\n if ( page.top >= scrollViewY ) break;\n\n scrollPage = page;\n }\n return scrollPage;\n};\n\nproto.setHistory = function( title, path ) {\n let optHistory = this.options.history;\n let historyMethod = optHistory && history[ optHistory + 'State' ];\n if ( !historyMethod ) return;\n\n history[ optHistory + 'State' ]( null, title, path );\n if ( this.options.historyTitle ) document.title = title;\n this.dispatchEvent( 'history', null, [ title, path ] );\n};\n\n// scroll to top to prevent initial scroll-reset after page refresh\n// https://stackoverflow.com/a/18633915/182183\nproto.onUnload = function() {\n if ( this.scrollPage.top === 0 ) return;\n\n // calculate where scroll position would be on refresh\n let scrollY = window.scrollY - this.scrollPage.top + this.top;\n // disable scroll event before setting scroll #679\n this.destroyHistory();\n scrollTo( 0, scrollY );\n};\n\n// ----- load history ----- //\n\n// update URL\nproto.onPageLoadHistory = function( response, path ) {\n this.setHistory( response.title, path );\n};\n\n// -------------------------- -------------------------- //\n\nreturn InfiniteScroll;\n\n} ) );\n","/*!\n * Infinite Scroll v4.0.1\n * Automatically add next page\n *\n * Licensed GPLv3 for open source use\n * or Infinite Scroll Commercial License for commercial use\n *\n * https://infinite-scroll.com\n * Copyright 2018-2020 Metafizzy\n */\n\n( function( window, factory ) {\n // universal module definition\n if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n require('./core'),\n require('./page-load'),\n require('./scroll-watch'),\n require('./history'),\n require('./button'),\n require('./status'),\n );\n }\n\n} )( window, function factory( InfiniteScroll ) {\n return InfiniteScroll;\n} );\n","// page-load\n( function( window, factory ) {\n // universal module definition\n if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('./core'),\n );\n } else {\n // browser global\n factory(\n window,\n window.InfiniteScroll,\n );\n }\n\n}( window, function factory( window, InfiniteScroll ) {\n\nlet proto = InfiniteScroll.prototype;\n\nObject.assign( InfiniteScroll.defaults, {\n // append: false,\n loadOnScroll: true,\n checkLastPage: true,\n responseBody: 'text',\n domParseResponse: true,\n // prefill: false,\n // outlayer: null,\n} );\n\nInfiniteScroll.create.pageLoad = function() {\n this.canLoad = true;\n this.on( 'scrollThreshold', this.onScrollThresholdLoad );\n this.on( 'load', this.checkLastPage );\n if ( this.options.outlayer ) {\n this.on( 'append', this.onAppendOutlayer );\n }\n};\n\nproto.onScrollThresholdLoad = function() {\n if ( this.options.loadOnScroll ) this.loadNextPage();\n};\n\nlet domParser = new DOMParser();\n\nproto.loadNextPage = function() {\n if ( this.isLoading || !this.canLoad ) return;\n\n let { responseBody, domParseResponse, fetchOptions } = this.options;\n let path = this.getAbsolutePath();\n this.isLoading = true;\n if ( typeof fetchOptions == 'function' ) fetchOptions = fetchOptions();\n\n let fetchPromise = fetch( path, fetchOptions )\n .then( ( response ) => {\n if ( !response.ok ) {\n let error = new Error( response.statusText );\n this.onPageError( error, path, response );\n return { response };\n }\n\n return response[ responseBody ]().then( ( body ) => {\n let canDomParse = responseBody == 'text' && domParseResponse;\n if ( canDomParse ) {\n body = domParser.parseFromString( body, 'text/html' );\n }\n if ( response.status == 204 ) {\n this.lastPageReached( body, path );\n return { body, response };\n } else {\n return this.onPageLoad( body, path, response );\n }\n } );\n } )\n .catch( ( error ) => {\n this.onPageError( error, path );\n } );\n\n this.dispatchEvent( 'request', null, [ path, fetchPromise ] );\n\n return fetchPromise;\n};\n\nproto.onPageLoad = function( body, path, response ) {\n // done loading if not appending\n if ( !this.options.append ) {\n this.isLoading = false;\n }\n this.pageIndex++;\n this.loadCount++;\n this.dispatchEvent( 'load', null, [ body, path, response ] );\n return this.appendNextPage( body, path, response );\n};\n\nproto.appendNextPage = function( body, path, response ) {\n let { append, responseBody, domParseResponse } = this.options;\n // do not append json\n let isDocument = responseBody == 'text' && domParseResponse;\n if ( !isDocument || !append ) return { body, response };\n\n let items = body.querySelectorAll( append );\n let promiseValue = { body, response, items };\n // last page hit if no items. #840\n if ( !items || !items.length ) {\n this.lastPageReached( body, path );\n return promiseValue;\n }\n\n let fragment = getItemsFragment( items );\n let appendReady = () => {\n this.appendItems( items, fragment );\n this.isLoading = false;\n this.dispatchEvent( 'append', null, [ body, path, items, response ] );\n return promiseValue;\n };\n\n // TODO add hook for option to trigger appendReady\n if ( this.options.outlayer ) {\n return this.appendOutlayerItems( fragment, appendReady );\n } else {\n return appendReady();\n }\n};\n\nproto.appendItems = function( items, fragment ) {\n if ( !items || !items.length ) return;\n\n // get fragment if not provided\n fragment = fragment || getItemsFragment( items );\n refreshScripts( fragment );\n this.element.appendChild( fragment );\n};\n\nfunction getItemsFragment( items ) {\n // add items to fragment\n let fragment = document.createDocumentFragment();\n if ( items ) fragment.append( ...items );\n return fragment;\n}\n\n// replace