1"use strict"; 2 3function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); } 4 5function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } 6 7function _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } 8 9function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } 10 11// 12// lax v1.2.3 (Alex Fox) 13// Simple & light weight vanilla javascript plugin to create beautiful animations things when you scrolllll!! 14// 15// Licensed under the terms of the MIT license. 16// 17// You may use it in your theme if you credit me. 18// It is also free to use on any individual website. 19// 20// Exception: 21// The only restriction is to not publish any 22// extension for browsers or native application 23// without getting a written permission first. 24// 25(function () { 26 var lax = function () { 27 var lax = { 28 elements: [] 29 }; 30 var lastY = 0; 31 var currentBreakpoint = 'default'; 32 var breakpointsSeparator = "_"; 33 var transformFns = { 34 "data-lax-opacity": function dataLaxOpacity(style, v) { 35 style.opacity = v; 36 }, 37 "data-lax-translate": function dataLaxTranslate(style, v) { 38 style.transform += " translate(".concat(v, "px, ").concat(v, "px)"); 39 }, 40 "data-lax-translate-x": function dataLaxTranslateX(style, v) { 41 style.transform += " translateX(".concat(v, "px)"); 42 }, 43 "data-lax-translate-y": function dataLaxTranslateY(style, v) { 44 style.transform += " translateY(".concat(v, "px)"); 45 }, 46 "data-lax-scale": function dataLaxScale(style, v) { 47 style.transform += " scale(".concat(v, ")"); 48 }, 49 "data-lax-scale-x": function dataLaxScaleX(style, v) { 50 style.transform += " scaleX(".concat(v, ")"); 51 }, 52 "data-lax-scale-y": function dataLaxScaleY(style, v) { 53 style.transform += " scaleY(".concat(v, ")"); 54 }, 55 "data-lax-skew": function dataLaxSkew(style, v) { 56 style.transform += " skew(".concat(v, "deg, ").concat(v, "deg)"); 57 }, 58 "data-lax-skew-x": function dataLaxSkewX(style, v) { 59 style.transform += " skewX(".concat(v, "deg)"); 60 }, 61 "data-lax-skew-y": function dataLaxSkewY(style, v) { 62 style.transform += " skewY(".concat(v, "deg)"); 63 }, 64 "data-lax-rotate": function dataLaxRotate(style, v) { 65 style.transform += " rotate(".concat(v, "deg)"); 66 }, 67 "data-lax-rotate-x": function dataLaxRotateX(style, v) { 68 style.transform += " rotateX(".concat(v, "deg)"); 69 }, 70 "data-lax-rotate-y": function dataLaxRotateY(style, v) { 71 style.transform += " rotateY(".concat(v, "deg)"); 72 }, 73 "data-lax-brightness": function dataLaxBrightness(style, v) { 74 style.filter += " brightness(".concat(v, "%)"); 75 }, 76 "data-lax-contrast": function dataLaxContrast(style, v) { 77 style.filter += " contrast(".concat(v, "%)"); 78 }, 79 "data-lax-hue-rotate": function dataLaxHueRotate(style, v) { 80 style.filter += " hue-rotate(".concat(v, "deg)"); 81 }, 82 "data-lax-blur": function dataLaxBlur(style, v) { 83 style.filter += " blur(".concat(v, "px)"); 84 }, 85 "data-lax-invert": function dataLaxInvert(style, v) { 86 style.filter += " invert(".concat(v, "%)"); 87 }, 88 "data-lax-saturate": function dataLaxSaturate(style, v) { 89 style.filter += " saturate(".concat(v, "%)"); 90 }, 91 "data-lax-grayscale": function dataLaxGrayscale(style, v) { 92 style.filter += " grayscale(".concat(v, "%)"); 93 }, 94 "data-lax-bg-pos": function dataLaxBgPos(style, v) { 95 style.backgroundPosition = "".concat(v, "px ").concat(v, "px"); 96 }, 97 "data-lax-bg-pos-x": function dataLaxBgPosX(style, v) { 98 style.backgroundPositionX = "".concat(v, "px"); 99 }, 100 "data-lax-bg-pos-y": function dataLaxBgPosY(style, v) { 101 style.backgroundPositionY = "".concat(v, "px"); 102 } 103 }; 104 var _crazy = ""; 105 106 for (var i = 0; i < 20; i++) { 107 _crazy += " " + i * 5 + " " + i * 47 % 360 + ", "; 108 } 109 110 lax.presets = { 111 linger: function linger(v) { 112 return { 113 "data-lax-translate-y": "(vh*0.7) 0, 0 200, -500 0" 114 }; 115 }, 116 lazy: function lazy() { 117 var v = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 100; 118 return { 119 "data-lax-translate-y": "(vh) 0, (-elh) ".concat(v) 120 }; 121 }, 122 eager: function eager() { 123 var v = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 100; 124 return { 125 "data-lax-translate-y": "(vh) 0, (-elh) -".concat(v) 126 }; 127 }, 128 slalom: function slalom() { 129 var v = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 50; 130 return { 131 "data-lax-translate-x": "vh ".concat(v, ", (vh*0.8) ").concat(-v, ", (vh*0.6) ").concat(v, ", (vh*0.4) ").concat(-v, ", (vh*0.2) ").concat(v, ", (vh*0) ").concat(-v, ", (-elh) ").concat(v) 132 }; 133 }, 134 crazy: function crazy(v) { 135 return { 136 "data-lax-hue-rotate": "".concat(_crazy, " | loop=20") 137 }; 138 }, 139 spin: function spin() { 140 var v = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 360; 141 return { 142 "data-lax-rotate": "(vh) 0, (-elh) ".concat(v) 143 }; 144 }, 145 spinRev: function spinRev() { 146 var v = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 360; 147 return { 148 "data-lax-rotate": "(vh) 0, (-elh) ".concat(-v) 149 }; 150 }, 151 spinIn: function spinIn() { 152 var v = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 360; 153 return { 154 "data-lax-rotate": "vh ".concat(v, ", (vh*0.5) 0") 155 }; 156 }, 157 spinOut: function spinOut() { 158 var v = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 360; 159 return { 160 "data-lax-rotate": "(vh*0.5) 0, -elh ".concat(v) 161 }; 162 }, 163 blurInOut: function blurInOut() { 164 var v = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 40; 165 return { 166 "data-lax-blur": "(vh) ".concat(v, ", (vh*0.8) 0, (vh*0.2) 0, 0 ").concat(v) 167 }; 168 }, 169 blurIn: function blurIn() { 170 var v = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 40; 171 return { 172 "data-lax-blur": "(vh) ".concat(v, ", (vh*0.7) 0") 173 }; 174 }, 175 blurOut: function blurOut() { 176 var v = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 40; 177 return { 178 "data-lax-blur": "(vh*0.3) 0, 0 ".concat(v) 179 }; 180 }, 181 fadeInOut: function fadeInOut() { 182 return { 183 "data-lax-opacity": "(vh) 0, (vh*0.8) 1, (vh*0.2) 1, 0 0" 184 }; 185 }, 186 fadeIn: function fadeIn() { 187 return { 188 "data-lax-opacity": "(vh) 0, (vh*0.7) 1" 189 }; 190 }, 191 fadeOut: function fadeOut() { 192 return { 193 "data-lax-opacity": "(vh*0.3) 1, 0 0" 194 }; 195 }, 196 driftLeft: function driftLeft() { 197 var v = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 100; 198 return { 199 "data-lax-translate-x": "vh ".concat(v, ", -elh ").concat(-v) 200 }; 201 }, 202 driftRight: function driftRight() { 203 var v = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 100; 204 return { 205 "data-lax-translate-x": "vh ".concat(-v, ", -elh ").concat(v) 206 }; 207 }, 208 leftToRight: function leftToRight() { 209 var v = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1; 210 return { 211 "data-lax-translate-x": "vh 0, -elh (vw*".concat(v, ")") 212 }; 213 }, 214 rightToLeft: function rightToLeft() { 215 var v = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1; 216 return { 217 "data-lax-translate-x": "vh 0, -elh (vw*".concat(-v, ")") 218 }; 219 }, 220 zoomInOut: function zoomInOut() { 221 var v = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0.2; 222 return { 223 "data-lax-scale": "(vh) ".concat(v, ", (vh*0.8) 1, (vh*0.2) 1, -elh ").concat(v) 224 }; 225 }, 226 zoomIn: function zoomIn() { 227 var v = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0.2; 228 return { 229 "data-lax-scale": "(vh) ".concat(v, ", (vh*0.7) 1") 230 }; 231 }, 232 zoomOut: function zoomOut() { 233 var v = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0.2; 234 return { 235 "data-lax-scale": "(vh*0.3) 1, -elh ".concat(v) 236 }; 237 }, 238 speedy: function speedy() { 239 var v = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 30; 240 return { 241 "data-lax-skew-x": "(vh) ".concat(v, ", -elh ").concat(-v) 242 }; 243 }, 244 swing: function swing() { 245 var v = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 30; 246 return { 247 "data-lax-skew-y": "(vh) ".concat(v, ", -elh ").concat(-v) 248 }; 249 } 250 }; 251 252 lax.addPreset = function (p, o) { 253 lax.presets[p] = o; 254 }; 255 256 function intrp(t, v) { 257 var i = 0; 258 259 while (t[i][0] <= v && t[i + 1] !== undefined) { 260 i += 1; 261 } 262 263 var x = t[i][0]; 264 var prevX = t[i - 1] === undefined ? x : t[i - 1][0]; 265 var y = t[i][1]; 266 var prevY = t[i - 1] === undefined ? y : t[i - 1][1]; 267 var xPoint = Math.min(Math.max((v - prevX) / (x - prevX), 0), 1); 268 var yPoint = xPoint * (y - prevY) + prevY; 269 return yPoint; 270 } 271 272 function fnOrVal(s) { 273 if (s[0] === "(") return eval(s);else return parseFloat(s); 274 } 275 276 lax.setup = function () { 277 var o = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; 278 lax.breakpoints = o.breakpoints || {}; 279 lax.selector = o.selector || '.lax'; 280 lax.populateElements(); 281 }; 282 283 lax.removeElement = function (el) { 284 var i = lax.elements.findIndex(function (o) { 285 return o.el = el; 286 }); 287 288 if (i > -1) { 289 lax.elements.splice(i, 1); 290 } 291 }; 292 293 lax.createLaxObject = function (el) { 294 var o = { 295 el: el, 296 originalStyle: { 297 transform: el.style.transform, 298 filter: el.style.filter 299 }, 300 transforms: {} 301 }; 302 return o; 303 }; 304 305 lax.calcTransforms = function (o) { 306 var el = o.el; //find presets in data attributes 307 308 var presets = []; 309 310 for (var _i = 0; _i < el.attributes.length; _i++) { 311 var a = el.attributes[_i]; 312 313 if (a.name.indexOf("data-lax-preset") > -1) { 314 presets.push(a); 315 } 316 } //unwrap presets into transformations 317 318 319 var _loop = function _loop(_i2) { 320 var a = presets[_i2]; 321 var b = a.name.split(breakpointsSeparator); 322 var breakpoint = b[1] ? "".concat(breakpointsSeparator).concat(b[1]) : ''; 323 a.value.split(" ").forEach(function (p) { 324 var bits = p.split("-"); 325 var fn = lax.presets[bits[0]]; 326 327 if (!fn) { 328 console.log("lax error: preset ".concat(bits[0], " is not defined")); 329 } else { 330 var d = fn(bits[1]); 331 332 for (var k in d) { 333 el.setAttribute("".concat(k).concat(breakpoint), d[k]); 334 } 335 } 336 }); 337 var currentAnchor = el.getAttribute("data-lax-anchor"); 338 if (!currentAnchor || currentAnchor === "") el.setAttribute("data-lax-anchor", "self"); 339 el.attributes.removeNamedItem(a.name); 340 }; 341 342 for (var _i2 = 0; _i2 < presets.length; _i2++) { 343 _loop(_i2); 344 } // use gpu 345 346 347 var useGpu = !(el.attributes["data-lax-use-gpu"] && el.attributes["data-lax-use-gpu"].value === 'false'); 348 349 if (useGpu) { 350 el.style["backface-visibility"] = "hidden"; 351 el.style["-webkit-backface-visibility"] = "hidden"; 352 } 353 354 if (el.attributes["data-lax-use-gpu"]) el.attributes.removeNamedItem("data-lax-use-gpu"); // optmise off screen 355 356 o.optimise = false;
357 358 if (el.attributes["data-lax-optimize"] && el.attributes["data-lax-optimize"].value === 'true') { 359 o.optimise = true; 360 var bounds = el.getBoundingClientRect(); 361 el.setAttribute("data-lax-opacity", "".concat(-bounds.height - 1, " 0, ").concat(-bounds.height, " 1, ").concat(window.innerHeight, " 1, ").concat(window.innerHeight + 1, " 0")); 362 el.attributes.removeNamedItem("data-lax-optimize"); 363 } // build transform list 364 365 366 for (var _i3 = 0; _i3 < el.attributes.length; _i3++) { 367 var _a = el.attributes[_i3]; 368 if (_a.name.indexOf("data-lax") < 0) continue; 369 370 var b = _a.name.split(breakpointsSeparator); 371 372 var bits = b[0].split("-"); 373 var breakpoint = b[1] || "default"; 374 375 if (bits[1] === "lax") { 376 if (_a.name === "data-lax-anchor") { 377 o["data-lax-anchor"] = _a.value === "self" ? el : document.querySelector(_a.value); 378 var rect = o["data-lax-anchor"].getBoundingClientRect(); 379 o.anchorTop = Math.floor(rect.top) + window.scrollY; 380 } else { 381 (function () { 382 var tString = _a.value.replace(/vw/g, window.innerWidth).replace(/vh/g, window.innerHeight).replace(/elh/g, el.clientHeight).replace(/elw/g, el.clientWidth).replace(/\s+/g, " "); 383 384 var _tString$split = tString.split("|"), 385 _tString$split2 = _slicedToArray(_tString$split, 2), 386 arrString = _tString$split2[0], 387 optionString = _tString$split2[1]; 388 389 var options = {}; 390 391 if (optionString) { 392 optionString.split(" ").forEach(function (o) { 393 var _o$split = o.split("="), 394 _o$split2 = _slicedToArray(_o$split, 2), 395 key = _o$split2[0], 396 val = _o$split2[1]; 397 398 options[key] = key && fnOrVal(val); 399 }); 400 } 401 402 var name = b[0]; 403 var valueMap = arrString.split(",").map(function (x) { 404 return x.trim().split(" ").map(fnOrVal); 405 }).sort(function (a, b) { 406 return a[0] - b[0]; 407 }); 408 409 if (!o.transforms[name]) { 410 o.transforms[name] = {}; 411 } 412 413 o.transforms[name][breakpoint] = { 414 valueMap: valueMap, 415 options: options 416 }; 417 })(); 418 } 419 } 420 } // sprite sheet animation 421 422 423 var spriteData = el.attributes["data-lax-sprite-data"] && el.attributes["data-lax-sprite-data"].value; 424 425 if (spriteData) { 426 o.spriteData = spriteData.split(",").map(function (x) { 427 return parseInt(x); 428 }); 429 el.style.height = o.spriteData[1] + "px"; 430 el.style.width = o.spriteData[0] + "px"; 431 var spriteImage = el.attributes["data-lax-sprite-image"] && el.attributes["data-lax-sprite-image"].value; 432 433 if (spriteImage) { 434 el.style.backgroundImage = "url(".concat(spriteImage, ")"); 435 } 436 } 437 438 return o; 439 }; 440 441 lax.addElement = function (el) { 442 var o = lax.calcTransforms(lax.createLaxObject(el)); 443 lax.elements.push(o); 444 lax.updateElement(o); 445 }; 446 447 lax.populateElements = function () { 448 lax.elements = []; 449 document.querySelectorAll(lax.selector).forEach(lax.addElement); 450 currentBreakpoint = lax.getCurrentBreakPoint(); 451 }; 452 453 lax.updateElements = function () { 454 lax.elements.forEach(function (o) { 455 lax.calcTransforms(o); 456 lax.updateElement(o); 457 }); 458 currentBreakpoint = lax.getCurrentBreakPoint(); 459 }; 460 461 lax.getCurrentBreakPoint = function () { 462 var b = 'default'; 463 var w = window.innerWidth; 464 465 for (var _i4 in lax.breakpoints) { 466 var px = parseFloat(lax.breakpoints[_i4]); 467 468 if (px <= w) { 469 b = _i4; 470 } else { 471 break; 472 } 473 } 474 475 return b; 476 }; 477 478 lax.updateElement = function (o) { 479 var originalStyle = o.originalStyle, 480 anchorTop = o.anchorTop, 481 transforms = o.transforms, 482 spriteData = o.spriteData, 483 el = o.el; 484 var r = anchorTop ? anchorTop - lastY : lastY; 485 var style = { 486 transform: originalStyle.transform, 487 filter: originalStyle.filter 488 }; 489 490 for (var _i5 in transforms) { 491 var transformData = transforms[_i5][currentBreakpoint] || transforms[_i5]["default"]; 492 493 if (!transformData) { 494 // console.log(`lax error: there is no setting for key ${i} and screen size ${currentBreakpoint}. Try adding a default value!`) 495 continue; 496 } 497 498 var _r = r; 499 if (transformData.options.offset) _r = _r + transformData.options.offset; 500 if (transformData.options.speed) _r = _r * transformData.options.speed; 501 if (transformData.options.loop) _r = _r % transformData.options.loop; 502 var t = transformFns[_i5]; 503 var v = intrp(transformData.valueMap, _r); 504 505 if (!t) { 506 // console.info(`lax: error ${i} is not supported`) 507 continue; 508 } 509 510 t(style, v); 511 } 512 513 if (spriteData) { 514 var _spriteData = _slicedToArray(spriteData, 5), 515 frameW = _spriteData[0], 516 frameH = _spriteData[1], 517 numFrames = _spriteData[2], 518 cols = _spriteData[3], 519 scrollStep = _spriteData[4]; 520 521 var frameNo = Math.floor(lastY / scrollStep) % numFrames; 522 var framePosX = frameNo % cols; 523 var framePosY = Math.floor(frameNo / cols); 524 style.backgroundPosition = "-".concat(framePosX * frameW, "px -").concat(framePosY * frameH, "px"); 525 } 526 527 if (style.opacity === 0) { 528 // if opacity 0 don't update 529 el.style.opacity = 0; 530 } else { 531 for (var k in style) { 532 el.style[k] = style[k]; 533 } 534 } 535 }; 536 537 lax.update = function (y) { 538 if (lastY === y) return; 539 lastY = y;
540 lax.elements.forEach(lax.updateElement); 541 }; 542 543 return lax; 544 }(); 545 546 if (typeof module !== 'undefined' && typeof module.exports !== 'undefined') module.exports = lax;else window.lax = lax; 547})();
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.