1/*! @license ScrollReveal v4.0.5 2 3 Copyright 2018 Fisssion LLC. 4 5 Licensed under the GNU General Public License 3.0 for 6 compatible open source projects and non-commercial use. 7 8 For commercial sites, themes, projects, and applications, 9 keep your source code private/proprietary by purchasing 10 a commercial license from https://scrollrevealjs.org/ 11*/ 12!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):e.ScrollReveal=t()}(this,function(){"use strict";function e(){return document.documentElement.classList.remove("sr"),{clean:function e(){},destroy:function e(){},reveal:function e(){},sync:function e(){},get noop(){return!0}}}function t(){document.documentElement.classList.add("sr"),document.body?document.body.style.height="100%":document.addEventListener("DOMContentLoaded",function(){document.body.style.height="100%"})} 13/*! @license is-dom-node v1.0.4 14 15 Copyright 2018 Fisssion LLC. 16 17 Permission is hereby granted, free of charge, to any person obtaining a copy 18 of this software and associated documentation files (the "Software"), to deal 19 in the Software without restriction, including without limitation the rights 20 to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 21 copies of the Software, and to permit persons to whom the Software is 22 furnished to do so, subject to the following conditions: 23 24 The above copyright notice and this permission notice shall be included in all 25 copies or substantial portions of the Software. 26 27 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 28 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 29 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 30 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 31 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 32 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 33 SOFTWARE. 34 35*/ 36function i(e){return"object"==typeof window.Node?e instanceof window.Node:null!==e&&"object"==typeof e&&"number"==typeof e.nodeType&&"string"==typeof e.nodeName} 37/*! @license is-dom-node-list v1.2.1 38 39 Copyright 2018 Fisssion LLC. 40 41 Permission is hereby granted, free of charge, to any person obtaining a copy 42 of this software and associated documentation files (the "Software"), to deal 43 in the Software without restriction, including without limitation the rights 44 to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 45 copies of the Software, and to permit persons to whom the Software is 46 furnished to do so, subject to the following conditions: 47 48 The above copyright notice and this permission notice shall be included in all 49 copies or substantial portions of the Software. 50 51 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 52 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 53 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 54 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 55 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 56 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 57 SOFTWARE. 58 59*/function r(e){var t=Object.prototype.toString.call(e),n=/^\[object (HTMLCollection|NodeList|Object)\]$/;return"object"==typeof window.NodeList?e instanceof window.NodeList:null!==e&&"object"==typeof e&&"number"==typeof e.length&&n.test(t)&&(0===e.length||i(e[0]))} 60/*! @license Tealight v0.3.6 61 62 Copyright 2018 Fisssion LLC. 63 64 Permission is hereby granted, free of charge, to any person obtaining a copy 65 of this software and associated documentation files (the "Software"), to deal 66 in the Software without restriction, including without limitation the rights 67 to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 68 copies of the Software, and to permit persons to whom the Software is 69 furnished to do so, subject to the following conditions: 70 71 The above copyright notice and this permission notice shall be included in all 72 copies or substantial portions of the Software. 73 74 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 75 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 76 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 77 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 78 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 79 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 80 SOFTWARE. 81 82*/function d(e,t){if(void 0===t&&(t=document),e instanceof Array)return e.filter(i);if(i(e))return[e];if(r(e))return Array.prototype.slice.call(e);
vendor: 23,918 bytes, lines 82-360
82if("string"==typeof e)try{var n=t.querySelectorAll(e);return Array.prototype.slice.call(n)}catch(e){return[]}return[]}function o(e){return null!==e&&e instanceof Object&&(e.constructor===Object||"[object Object]"===Object.prototype.toString.call(e))}function s(n,i){var e;if(o(n))return Object.keys(n).forEach(function(e){return i(n[e],e,n)});if(n instanceof Array)return n.forEach(function(e,t){return i(e,t,n)});throw new TypeError("Expected either an array or object literal.")}function f(e){for(var t=[],n=arguments.length-1;0<n--;)t[n]=arguments[n+1];if(this.constructor.debug&&console){var i="%cScrollReveal: "+e;t.forEach(function(e){return i+="\n â "+e}),console.log(i,"color: #ea654b;")}}function a(){var n=this,e=function(){return{active:[],stale:[]}},i={active:[],stale:[]},t={active:[],stale:[]},r={active:[],stale:[]}; 83/** 84 * Take stock of active element IDs. 85 */ 86try{s(d("[data-sr-id]"),function(e){var t=parseInt(e.getAttribute("data-sr-id"));i.active.push(t)})}catch(e){throw e} 87/** 88 * Destroy stale elements. 89 */s(this.store.elements,function(e){-1===i.active.indexOf(e.id)&&i.stale.push(e.id)}),s(i.stale,function(e){return delete n.store.elements[e]}), 90/** 91 * Take stock of active container and sequence IDs. 92 */ 93s(this.store.elements,function(e){-1===r.active.indexOf(e.containerId)&&r.active.push(e.containerId),e.hasOwnProperty("sequence")&&-1===t.active.indexOf(e.sequence.id)&&t.active.push(e.sequence.id)}), 94/** 95 * Destroy stale containers. 96 */ 97s(this.store.containers,function(e){-1===r.active.indexOf(e.id)&&r.stale.push(e.id)}),s(r.stale,function(e){var t=n.store.containers[e].node;t.removeEventListener("scroll",n.delegate),t.removeEventListener("resize",n.delegate),delete n.store.containers[e]}), 98/** 99 * Destroy stale sequences. 100 */ 101s(this.store.sequences,function(e){-1===t.active.indexOf(e.id)&&t.stale.push(e.id)}),s(t.stale,function(e){return delete n.store.sequences[e]})}function h(e){var i=this,r;try{s(d(e),function(e){var t=e.getAttribute("data-sr-id");if(null!==t){r=!0;var n=i.store.elements[t];n.callbackTimer&&window.clearTimeout(n.callbackTimer.clock),e.setAttribute("style",n.styles.inline.generated),e.removeAttribute("data-sr-id"),delete i.store.elements[t]}})}catch(e){return f.call(this,"Clean failed.",e.message)}if(r)try{a.call(this)}catch(e){return f.call(this,"Clean failed.",e.message)}}function c(){var n=this; 102/** 103 * Remove all generated styles and element ids 104 */s(this.store.elements,function(e){e.node.setAttribute("style",e.styles.inline.generated),e.node.removeAttribute("data-sr-id")}), 105/** 106 * Remove all event listeners. 107 */ 108s(this.store.containers,function(e){var t=e.node===document.documentElement?window:e.node;t.removeEventListener("scroll",n.delegate),t.removeEventListener("resize",n.delegate)}), 109/** 110 * Clear all data from the store 111 */ 112this.store={containers:{},elements:{},history:[],sequences:{}}} 113/*! @license Rematrix v0.3.0 114 115 Copyright 2018 Julian Lloyd. 116 117 Permission is hereby granted, free of charge, to any person obtaining a copy 118 of this software and associated documentation files (the "Software"), to deal 119 in the Software without restriction, including without limitation the rights 120 to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 121 copies of the Software, and to permit persons to whom the Software is 122 furnished to do so, subject to the following conditions: 123 124 The above copyright notice and this permission notice shall be included in 125 all copies or substantial portions of the Software. 126 127 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 128 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 129 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 130 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 131 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 132 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 133 THE SOFTWARE. 134*/ 135/** 136 * @module Rematrix 137 */ 138/** 139 * Transformation matrices in the browser come in two flavors: 140 * 141 * - `matrix` using 6 values (short) 142 * - `matrix3d` using 16 values (long) 143 * 144 * This utility follows this [conversion guide](https://goo.gl/EJlUQ1) 145 * to expand short form matrices to their equivalent long form. 146 * 147 * @param {array} source - Accepts both short and long form matrices. 148 * @return {array} 149 */function p(e){if(e.constructor!==Array)throw new TypeError("Expected array.");if(16===e.length)return e;if(6!==e.length)throw new RangeError("Expected array with either 6 or 16 values.");var t=l();return t[0]=e[0],t[1]=e[1],t[4]=e[2],t[5]=e[3],t[12]=e[4],t[13]=e[5],t} 150/** 151 * Returns a matrix representing no transformation. The product of any matrix 152 * multiplied by the identity matrix will be the original matrix. 153 * 154 * > **Tip:** Similar to how `5 * 1 === 5`, where `1` is the identity. 155 * 156 * @return {array} 157 */function l(){for(var e=[],t=0;t<16;t++)t%5==0?e.push(1):e.push(0);return e} 158/** 159 * Returns a 4x4 matrix describing the combined transformations 160 * of both arguments. 161 * 162 * > **Note:** Order is very important. For example, rotating 45° 163 * along the Z-axis, followed by translating 500 pixels along the 164 * Y-axis... is not the same as translating 500 pixels along the 165 * Y-axis, followed by rotating 45° along on the Z-axis. 166 * 167 * @param {array} m - Accepts both short and long form matrices. 168 * @param {array} x - Accepts both short and long form matrices. 169 * @return {array} 170 */function T(e,t){for(var n=p(e),i=p(t),r=[],o=0;o<4;o++)for(var s=[n[o],n[o+4],n[o+8],n[o+12]],a=0;a<4;a++){var c=4*a,l=[i[c],i[c+1],i[c+2],i[c+3]],u=s[0]*l[0]+s[1]*l[1]+s[2]*l[2]+s[3]*l[3];r[o+c]=u}return r} 171/** 172 * Attempts to return a 4x4 matrix describing the CSS transform 173 * matrix passed in, but will return the identity matrix as a 174 * fallback. 175 * 176 * > **Tip:** This method is used to convert a CSS matrix (retrieved as a 177 * `string` from computed styles) to its equivalent array format. 178 * 179 * @param {string} source - `matrix` or `matrix3d` CSS Transform value. 180 * @return {array} 181 */function k(e){if("string"==typeof e){var t=e.match(/matrix(3d)?\(([^)]+)\)/),n;if(t)return p(t[2].split(", ").map(parseFloat))}return l()} 182/** 183 * Returns a 4x4 matrix describing X-axis rotation. 184 * 185 * @param {number} angle - Measured in degrees. 186 * @return {array} 187 */function O(e){var t=Math.PI/180*e,n=l();return n[5]=n[10]=Math.cos(t),n[6]=n[9]=Math.sin(t),n[9]*=-1,n} 188/** 189 * Returns a 4x4 matrix describing Y-axis rotation. 190 * 191 * @param {number} angle - Measured in degrees. 192 * @return {array} 193 */function x(e){var t=Math.PI/180*e,n=l();return n[0]=n[10]=Math.cos(t),n[2]=n[8]=Math.sin(t),n[2]*=-1,n} 194/** 195 * Returns a 4x4 matrix describing Z-axis rotation. 196 * 197 * @param {number} angle - Measured in degrees. 198 * @return {array} 199 */function A(e){var t=Math.PI/180*e,n=l();return n[0]=n[5]=Math.cos(t),n[1]=n[4]=Math.sin(t),n[4]*=-1,n} 200/** 201 * Returns a 4x4 matrix describing 2D scaling. The first argument 202 * is used for both X and Y-axis scaling, unless an optional 203 * second argument is provided to explicitly define Y-axis scaling. 204 * 205 * @param {number} scalar - Decimal multiplier. 206 * @param {number} [scalarY] - Decimal multiplier. 207 * @return {array} 208 */function R(e,t){var n=l();return n[0]=e,n[5]="number"==typeof t?t:e,n} 209/** 210 * Returns a 4x4 matrix describing X-axis translation. 211 * 212 * @param {number} distance - Measured in pixels. 213 * @return {array} 214 */function q(e){var t=l();return t[12]=e,t} 215/** 216 * Returns a 4x4 matrix describing Y-axis translation. 217 * 218 * @param {number} distance - Measured in pixels. 219 * @return {array} 220 */function P(e){var t=l();return t[13]=e,t}function m(e){var t=window.getComputedStyle(e.node),n=t.position,i=e.config,r={},o,s=(e.node.getAttribute("style")||"").match(/[\w-]+\s*:\s*[^;]+\s*/gi)||[];r.computed=s?s.map(function(e){return e.trim()}).join("; ")+";":"",r.generated=s.some(function(e){return e.match(/visibility\s?:\s?visible/i)})?r.computed:s.concat(["visibility: visible"]).map(function(e){return e.trim()}).join("; ")+";"; 221/** 222 * Generate opacity styles 223 */ 224var a=parseFloat(t.opacity),c=isNaN(parseFloat(i.opacity))?parseFloat(t.opacity):parseFloat(i.opacity),l={computed:a!==c?"opacity: "+a+";":"",generated:a!==c?"opacity: "+c+";":""},u=[];if(parseFloat(i.distance)){var d="top"===i.origin||"bottom"===i.origin?"Y":"X",f=i.distance; 225/** 226 * Letâs make sure our our pixel distances are negative for top and left. 227 * e.g. { origin: 'top', distance: '25px' } starts at `top: -25px` in CSS. 228 */"top"!==i.origin&&"left"!==i.origin||(f=/^-/.test(f)?f.substr(1):"-"+f);var h=f.match(/(^-?\d+\.?\d?)|(em$|px$|%$)/g),p=h[0],m;switch(h[1]){case"em":f=parseInt(t.fontSize)*p;break;case"px":f=p;break;case"%": 229/** 230 * Here we use `getBoundingClientRect` instead of 231 * the existing data attached to `element.geometry` 232 * because only the former includes any transformations 233 * current applied to the element. 234 * 235 * If that behavior ends up being unintuitive, this 236 * logic could instead utilize `element.geometry.height` 237 * and `element.geoemetry.width` for the distaince calculation 238 */ 239f="Y"===d?e.node.getBoundingClientRect().height*p/100:e.node.getBoundingClientRect().width*p/100;break;default:throw new RangeError("Unrecognized or missing distance unit.")}"Y"===d?u.push(P(f)):u.push(q(f))}i.rotate.x&&u.push(O(i.rotate.x)),i.rotate.y&&u.push(x(i.rotate.y)),i.rotate.z&&u.push(A(i.rotate.z)),1!==i.scale&&(0===i.scale? 240/** 241 * The CSS Transforms matrix interpolation specification 242 * basically disallows transitions of non-invertible 243 * matrixes, which means browsers won't transition 244 * elements with zero scale. 245 * 246 * Thatâs inconvenient for the API and developer 247 * experience, so we simply nudge their value 248 * slightly above zero; this allows browsers 249 * to transition our element as expected. 250 * 251 * `0.0002` was the smallest number 252 * that performed across browsers. 253 */ 254u.push(R(2e-4)):u.push(R(i.scale)));var y={};if(u.length){y.property=U("transform"), 255/** 256 * The default computed transform value should be one of: 257 * undefined || 'none' || 'matrix()' || 'matrix3d()' 258 */ 259y.computed={raw:t[y.property],matrix:k(t[y.property])},u.unshift(y.computed.matrix);var v=u.reduce(T);y.generated={initial:y.property+": matrix3d("+v.join(", ")+");",final:y.property+": matrix3d("+y.computed.matrix.join(", ")+");"}}else y.generated={initial:"",final:""}; 260/** 261 * Generate transition styles 262 */var g={};if(l.generated||y.generated.initial){g.property=U("transition"),g.computed=t[g.property],g.fragments=[];var b=i.delay,w=i.duration,E=i.easing;l.generated&&g.fragments.push({delayed:"opacity "+w/1e3+"s "+E+" "+b/1e3+"s",instant:"opacity "+w/1e3+"s "+E+" 0s"}),y.generated.initial&&g.fragments.push({delayed:y.property+" "+w/1e3+"s "+E+" "+b/1e3+"s",instant:y.property+" "+w/1e3+"s "+E+" 0s"}) 263/** 264 * The default computed transition property should be one of: 265 * undefined || '' || 'all 0s ease 0s' || 'all 0s 0s cubic-bezier()' 266 */,g.computed&&!g.computed.match(/all 0s/)&&g.fragments.unshift({delayed:g.computed,instant:g.computed});var j=g.fragments.reduce(function(e,t,n){return e.delayed+=0===n?t.delayed:", "+t.delayed,e.instant+=0===n?t.instant:", "+t.instant,e},{delayed:"",instant:""});g.generated={delayed:g.property+": "+j.delayed+";",instant:g.property+": "+j.instant+";"}}else g.generated={delayed:"",instant:""};return{inline:r,opacity:l,position:n,transform:y,transition:g}}function u(e,t){void 0===t&&(t={});var n=t.pristine||this.pristine,i="always"===e.config.useDelay||"onload"===e.config.useDelay&&n||"once"===e.config.useDelay&&!e.seen,r=e.visible&&!e.revealed,o=!e.visible&&e.revealed&&e.config.reset;return t.reveal||r?y.call(this,e,i):t.reset||o?v.call(this,e):void 0}function y(e,t){var n=[e.styles.inline.generated,e.styles.opacity.computed,e.styles.transform.generated.final];t?n.push(e.styles.transition.generated.delayed):n.push(e.styles.transition.generated.instant),e.revealed=e.seen=!0,e.node.setAttribute("style",n.filter(function(e){return""!==e}).join(" ")),g.call(this,e,t)}function v(e){var t=[e.styles.inline.generated,e.styles.opacity.generated,e.styles.transform.generated.initial,e.styles.transition.generated.instant];e.revealed=!1,e.node.setAttribute("style",t.filter(function(e){return""!==e}).join(" ")),g.call(this,e)}function g(e,t){var n=this,i=t?e.config.duration+e.config.delay:e.config.duration,r=e.revealed?e.config.beforeReveal:e.config.beforeReset,o=e.revealed?e.config.afterReveal:e.config.afterReset,s=0;e.callbackTimer&&(s=Date.now()-e.callbackTimer.start,window.clearTimeout(e.callbackTimer.clock)),r(e.node),e.callbackTimer={start:Date.now(),clock:window.setTimeout(function(){o(e.node),e.callbackTimer=null,e.revealed&&!e.config.reset&&e.config.cleanup&&h.call(n,e.node)},i-s)}}function b(e,t){ 267/** 268 * We first check if the element should reset. 269 */ 270if(void 0===t&&(t=this.pristine),!e.visible&&e.revealed&&e.config.reset)return u.call(this,e,{reset:!0});var n=this.store.sequences[e.sequence.id],i=e.sequence.index;if(n){var r=new E(n,"visible",this.store),o=new E(n,"revealed",this.store); 271/** 272 * If the sequence has no revealed members, 273 * then we reveal the first visible element 274 * within that sequence. 275 * 276 * The sequence then cues a recursive call 277 * in both directions. 278 */ 279if(n.models={visible:r,revealed:o},!o.body.length){var s=n.members[r.body[0]],a=this.store.elements[s];if(a)return j.call(this,n,r.body[0],-1,t),j.call(this,n,r.body[0],1,t),u.call(this,a,{reveal:!0,pristine:t})} 280/** 281 * If our element isnât resetting, we check the 282 * element sequence index against the head, and 283 * then the foot of the sequence. 284 */if(!n.blocked.head&&i===[].concat(o.head).pop()&&i>=[].concat(r.body).shift())return j.call(this,n,i,-1,t),u.call(this,e,{reveal:!0,pristine:t});if(!n.blocked.foot&&i===[].concat(o.foot).shift()&&i<=[].concat(r.body).pop())return j.call(this,n,i,1,t),u.call(this,e,{reveal:!0,pristine:t})}}function w(e){var t=Math.abs(e);if(isNaN(t))throw new RangeError("Invalid sequence interval.");this.id=X(),this.interval=Math.max(t,16),this.members=[],this.models={},this.blocked={head:!1,foot:!1}}function E(e,i,r){var o=this;this.head=[],this.body=[],this.foot=[],s(e.members,function(e,t){var n=r.elements[e];n&&n[i]&&o.body.push(t)}),this.body.length&&s(e.members,function(e,t){var n=r.elements[e];n&&!n[i]&&(t<o.body[0]?o.head.push(t):o.foot.push(t))})}function j(e,t,n,i){var r=this,o=["head",null,"foot"][1+n],s=e.members[t+n],a=this.store.elements[s];e.blocked[o]=!0,setTimeout(function(){e.blocked[o]=!1,a&&b.call(r,a,i)},e.interval)}function L(){var n=this;a.call(this),s(this.store.elements,function(e){var t=[e.styles.inline.generated];e.visible?(t.push(e.styles.opacity.computed),t.push(e.styles.transform.generated.final),e.revealed=!0):(t.push(e.styles.opacity.generated),t.push(e.styles.transform.generated.initial),e.revealed=!1),e.node.setAttribute("style",t.filter(function(e){return""!==e}).join(" "))}),s(this.store.containers,function(e){var t=e.node===document.documentElement?window:e.node;t.addEventListener("scroll",n.delegate),t.addEventListener("resize",n.delegate)}), 285/** 286 * Manually invoke delegate once to capture 287 * element and container dimensions, container 288 * scroll position, and trigger any valid reveals 289 */ 290this.delegate(), 291/** 292 * Wipe any existing `setTimeout` now 293 * that initialization has completed. 294 */ 295this.initTimeout=null}function M(e){return void 0===e&&(e=navigator.userAgent),/Android|iPhone|iPad|iPod/i.test(e)}function I(n){for(var e=[],t=arguments.length-1;0<t--;)e[t]=arguments[t+1];if(o(n))return s(e,function(e){s(e,function(e,t){o(e)?(n[t]&&o(n[t])||(n[t]={}),I(n[t],e)):n[t]=e})}),n;throw new TypeError("Target must be an object literal.")}function N(e,a,t){var c=this;void 0===a&&(a={}),void 0===t&&(t=!1);var l=[],u,n=a.interval||H.interval;try{n&&(u=new w(n));var i=d(e),r;if(!i.length)throw new Error("Invalid reveal target."); 296/** 297 * Modifying the DOM via setAttribute needs to be handled 298 * separately from reading computed styles in the map above 299 * for the browser to batch DOM changes (limiting reflows) 300 */ 301s(i.reduce(function(e,t){var n={},i=t.getAttribute("data-sr-id");i?(I(n,c.store.elements[i]), 302/** 303 * In order to prevent previously generated styles 304 * from throwing off the new styles, the style tag 305 * has to be reverted to its pre-reveal state. 306 */ 307n.node.setAttribute("style",n.styles.inline.computed)):(n.id=X(),n.node=t,n.seen=!1,n.revealed=!1,n.visible=!1);var r=I({},n.config||c.defaults,a);if(!r.mobile&&M()||!r.desktop&&!M())return i&&h.call(c,n),e;// skip elements that are disabled 308var o=d(r.container)[0],s;if(!o)throw new Error("Invalid container.");return o.contains(t)&&(null===(s=z(o,l,c.store.containers))&&(s=X(),l.push({id:s,node:o})),n.config=r,n.containerId=s,n.styles=m(n),u&&(n.sequence={id:u.id,index:u.members.length},u.members.push(n.id)),e.push(n)),e},[]),function(e){(c.store.elements[e.id]=e).node.setAttribute("data-sr-id",e.id)})}catch(e){return f.call(this,"Reveal failed.",e.message)} 309/** 310 * Now that element set-up is complete... 311 * Letâs commit any container and sequence data we have to the store. 312 */s(l,function(e){c.store.containers[e.id]={id:e.id,node:e.node}}),u&&(this.store.sequences[u.id]=u) 313/** 314 * If reveal wasn't invoked by sync, we want to 315 * make sure to add this call to the history. 316 */,!0!==t&&(this.store.history.push({target:e,options:a}), 317/** 318 * Push initialization to the event queue, giving 319 * multiple reveal calls time to be interpreted. 320 */ 321this.initTimeout&&window.clearTimeout(this.initTimeout),this.initTimeout=window.setTimeout(L.bind(this),0))}function z(t){for(var e=[],n=arguments.length-1;0<n--;)e[n]=arguments[n+1];var i=null;return s(e,function(e){s(e,function(e){null===i&&e.node===t&&(i=e.id)})}),i} 322/** 323 * Re-runs the reveal method for each record stored in history, 324 * for capturing new content asynchronously loaded into the DOM. 325 */function F(){var t=this;s(this.store.history,function(e){N.call(t,e.target,e.options,!0)}),L.call(this)}function D(e,t){for( 326/** 327 * We want to ignore padding and scrollbars for container elements. 328 * More information here: https://goo.gl/vOZpbz 329 */ 330var n=t?e.node.clientHeight:e.node.offsetHeight,i=t?e.node.clientWidth:e.node.offsetWidth,r=0,o=0,s=e.node;isNaN(s.offsetTop)||(r+=s.offsetTop),isNaN(s.offsetLeft)||(o+=s.offsetLeft),s=s.offsetParent;);return{bounds:{top:r,right:o+i,bottom:r+n,left:o},height:n,width:i}}function S(e){var t,n;return n=e.node===document.documentElement?(t=window.pageYOffset,window.pageXOffset):(t=e.node.scrollTop,e.node.scrollLeft),{top:t,left:n}}function C(e){void 0===e&&(e={});var t=this.store.containers[e.containerId];if(t){var n=Math.max(0,Math.min(1,e.config.viewFactor)),i=e.config.viewOffset,r=e.geometry.bounds.top+e.geometry.height*n,o=e.geometry.bounds.right-e.geometry.width*n,s=e.geometry.bounds.bottom-e.geometry.height*n,a=e.geometry.bounds.left+e.geometry.width*n,c=t.geometry.bounds.top+t.scroll.top+i.top,l=t.geometry.bounds.right+t.scroll.left-i.right,u=t.geometry.bounds.bottom+t.scroll.top-i.bottom,d=t.geometry.bounds.left+t.scroll.left+i.left;return r<u&&d<o&&c<s&&a<l||"fixed"===e.styles.position}}function W(e,t){var i=this;void 0===e&&(e={type:"init"}),void 0===t&&(t=this.store.elements),Z(function(){var n="init"===e.type||"resize"===e.type;s(i.store.containers,function(e){n&&(e.geometry=D.call(i,e,!0));var t=S.call(i,e);e.scroll&&(e.direction={x:K(t.left-e.scroll.left),y:K(t.top-e.scroll.top)}),e.scroll=t}), 331/** 332 * Due to how the sequencer is implemented, itâs 333 * important that we update the state of all 334 * elements, before any animation logic is 335 * evaluated (in the second loop below). 336 */ 337s(t,function(e){n&&(e.geometry=D.call(i,e)),e.visible=C.call(i,e)}),s(t,function(e){e.sequence?b.call(i,e):u.call(i,e)}),i.pristine=!1})}function n(){var e=document.documentElement.style;return"transform"in e||"WebkitTransform"in e}function Y(){var e=document.documentElement.style;return"transition"in e||"WebkitTransition"in e}function $(e){var t,n;if(void 0===e&&(e={}),void 0===this||Object.getPrototypeOf(this)!==$.prototype)return new $(e);if(!$.isSupported())return f.call(this,"Instantiation failed.","This browser is not supported."),B.failure();try{n=I({},oe||H,e)}catch(e){return f.call(this,"Invalid configuration.",e.message),B.failure()}try{var i;if(!d(n.container)[0])throw new Error("Invalid container.")}catch(e){return f.call(this,e.message),B.failure()}return!(oe=n).mobile&&M()||!oe.desktop&&!M()?(f.call(this,"This device is disabled.","desktop: "+oe.desktop,"mobile: "+oe.mobile),B.failure()):(B.success(),this.store={containers:{},elements:{},history:[],sequences:{}},this.pristine=!0,ee=ee||W.bind(this),te=te||c.bind(this),ne=ne||N.bind(this),ie=ie||h.bind(this),re=re||F.bind(this),Object.defineProperty(this,"delegate",{get:function(){return ee}}),Object.defineProperty(this,"destroy",{get:function(){return te}}),Object.defineProperty(this,"reveal",{get:function(){return ne}}),Object.defineProperty(this,"clean",{get:function(){return ie}}),Object.defineProperty(this,"sync",{get:function(){return re}}),Object.defineProperty(this,"defaults",{get:function(){return oe}}),Object.defineProperty(this,"version",{get:function(){return _}}),Object.defineProperty(this,"noop",{get:function(){return!1}}),ae||(ae=this))}var H={delay:0,distance:"0",duration:600,easing:"cubic-bezier(0.5, 0, 0, 1)",interval:0,opacity:0,origin:"bottom",rotate:{x:0,y:0,z:0},scale:1,cleanup:!1,container:document.documentElement,desktop:!0,mobile:!0,reset:!1,useDelay:"always",viewFactor:0,viewOffset:{top:0,right:0,bottom:0,left:0},afterReset:function e(){},afterReveal:function e(){},beforeReset:function e(){},beforeReveal:function e(){}},B={success:t,failure:e},U=function(){function e(e,t){if(void 0===t&&(t=i),e&&"string"==typeof e){if(n[e])return n[e];if("string"==typeof t[e])return n[e]=e;if("string"==typeof t["-webkit-"+e])return n[e]="-webkit-"+e;throw new RangeError('Unable to find "'+e+'" style property.')}throw new TypeError("Expected a string.")}var n={},i=document.documentElement.style;return e.clearCache=function(){return n={}},e}(),X=(G=0,function(){return G++}),G,J=function(e){return(0<e)-(e<0)||+e},K=Math.sign||J 338/*! @license miniraf v1.0.0 339 340 Copyright 2018 Fisssion LLC. 341 342 Permission is hereby granted, free of charge, to any person obtaining a copy 343 of this software and associated documentation files (the "Software"), to deal 344 in the Software without restriction, including without limitation the rights 345 to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 346 copies of the Software, and to permit persons to whom the Software is 347 furnished to do so, subject to the following conditions: 348 349 The above copyright notice and this permission notice shall be included in all 350 copies or substantial portions of the Software. 351 352 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 353 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 354 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 355 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 356 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 357 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 358 SOFTWARE. 359 360*/,Q=(V=Date.now(),function(e){var t=Date.now();16<t-V?e(V=t):setTimeout(function(){return Q(e)},0)}),V,Z=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||Q,_="4.0.5",ee,te,ne,ie,re,oe,se,ae;return $.isSupported=function(){return n()&&Y()},Object.defineProperty($,"debug",{get:function(){return se||!1},set:function(e){return se="boolean"==typeof e?e:se}}),$(),$});
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.