New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

rfx-parallax

Package Overview
Dependencies
Maintainers
1
Versions
36
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

rfx-parallax - npm Package Compare versions

Comparing version 2.1.0 to 2.1.1

370

bundles/rfx-parallax.umd.js
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('rxjs')) :
typeof define === 'function' && define.amd ? define('rfx-parallax', ['exports', '@angular/core', 'rxjs'], factory) :
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global['rfx-parallax'] = {}, global.ng.core, global.rxjs));
}(this, (function (exports, i0, rxjs) { 'use strict';
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('rxjs'), require('resize-observer-polyfill')) :
typeof define === 'function' && define.amd ? define('rfx-parallax', ['exports', '@angular/core', 'rxjs', 'resize-observer-polyfill'], factory) :
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global['rfx-parallax'] = {}, global.ng.core, global.rxjs, global['resize-observer-polyfill']));
}(this, (function (exports, i0, rxjs, ResizeObserver) { 'use strict';
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
var ResizeObserver__default = /*#__PURE__*/_interopDefaultLegacy(ResizeObserver);
/*! *****************************************************************************
Copyright (c) Microsoft Corporation.
Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
PERFORMANCE OF THIS SOFTWARE.
***************************************************************************** */
/* global Reflect, Promise */
var extendStatics = function (d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b)
if (Object.prototype.hasOwnProperty.call(b, p))
d[p] = b[p]; };
return extendStatics(d, b);
};
function __extends(d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
}
var __assign = function () {
__assign = Object.assign || function __assign(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s)
if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
function __rest(s, e) {
var t = {};
for (var p in s)
if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
t[p] = s[p];
if (s != null && typeof Object.getOwnPropertySymbols === "function")
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
t[p[i]] = s[p[i]];
}
return t;
}
function __decorate(decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
r = Reflect.decorate(decorators, target, key, desc);
else
for (var i = decorators.length - 1; i >= 0; i--)
if (d = decorators[i])
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
}
function __param(paramIndex, decorator) {
return function (target, key) { decorator(target, key, paramIndex); };
}
function __metadata(metadataKey, metadataValue) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
return Reflect.metadata(metadataKey, metadataValue);
}
function __awaiter(thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try {
step(generator.next(value));
}
catch (e) {
reject(e);
} }
function rejected(value) { try {
step(generator["throw"](value));
}
catch (e) {
reject(e);
} }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
}
function __generator(thisArg, body) {
var _ = { label: 0, sent: function () { if (t[0] & 1)
throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function () { return this; }), g;
function verb(n) { return function (v) { return step([n, v]); }; }
function step(op) {
if (f)
throw new TypeError("Generator is already executing.");
while (_)
try {
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done)
return t;
if (y = 0, t)
op = [op[0] & 2, t.value];
switch (op[0]) {
case 0:
case 1:
t = op;
break;
case 4:
_.label++;
return { value: op[1], done: false };
case 5:
_.label++;
y = op[1];
op = [0];
continue;
case 7:
op = _.ops.pop();
_.trys.pop();
continue;
default:
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
_ = 0;
continue;
}
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) {
_.label = op[1];
break;
}
if (op[0] === 6 && _.label < t[1]) {
_.label = t[1];
t = op;
break;
}
if (t && _.label < t[2]) {
_.label = t[2];
_.ops.push(op);
break;
}
if (t[2])
_.ops.pop();
_.trys.pop();
continue;
}
op = body.call(thisArg, _);
}
catch (e) {
op = [6, e];
y = 0;
}
finally {
f = t = 0;
}
if (op[0] & 5)
throw op[1];
return { value: op[0] ? op[1] : void 0, done: true };
}
}
var __createBinding = Object.create ? (function (o, m, k, k2) {
if (k2 === undefined)
k2 = k;
Object.defineProperty(o, k2, { enumerable: true, get: function () { return m[k]; } });
}) : (function (o, m, k, k2) {
if (k2 === undefined)
k2 = k;
o[k2] = m[k];
});
function __exportStar(m, o) {
for (var p in m)
if (p !== "default" && !Object.prototype.hasOwnProperty.call(o, p))
__createBinding(o, m, p);
}
function __values(o) {
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
if (m)
return m.call(o);
if (o && typeof o.length === "number")
return {
next: function () {
if (o && i >= o.length)
o = void 0;
return { value: o && o[i++], done: !o };
}
};
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
}
function __read(o, n) {
var m = typeof Symbol === "function" && o[Symbol.iterator];
if (!m)
return o;
var i = m.call(o), r, ar = [], e;
try {
while ((n === void 0 || n-- > 0) && !(r = i.next()).done)
ar.push(r.value);
}
catch (error) {
e = { error: error };
}
finally {
try {
if (r && !r.done && (m = i["return"]))
m.call(i);
}
finally {
if (e)
throw e.error;
}
}
return ar;
}
function __spread() {
for (var ar = [], i = 0; i < arguments.length; i++)
ar = ar.concat(__read(arguments[i]));
return ar;
}
function __spreadArrays() {
for (var s = 0, i = 0, il = arguments.length; i < il; i++)
s += arguments[i].length;
for (var r = Array(s), k = 0, i = 0; i < il; i++)
for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
r[k] = a[j];
return r;
}
;
function __await(v) {
return this instanceof __await ? (this.v = v, this) : new __await(v);
}
function __asyncGenerator(thisArg, _arguments, generator) {
if (!Symbol.asyncIterator)
throw new TypeError("Symbol.asyncIterator is not defined.");
var g = generator.apply(thisArg, _arguments || []), i, q = [];
return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i;
function verb(n) { if (g[n])
i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }
function resume(n, v) { try {
step(g[n](v));
}
catch (e) {
settle(q[0][3], e);
} }
function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }
function fulfill(value) { resume("next", value); }
function reject(value) { resume("throw", value); }
function settle(f, v) { if (f(v), q.shift(), q.length)
resume(q[0][0], q[0][1]); }
}
function __asyncDelegator(o) {
var i, p;
return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i;
function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; }
}
function __asyncValues(o) {
if (!Symbol.asyncIterator)
throw new TypeError("Symbol.asyncIterator is not defined.");
var m = o[Symbol.asyncIterator], i;
return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
function settle(resolve, reject, d, v) { Promise.resolve(v).then(function (v) { resolve({ value: v, done: d }); }, reject); }
}
function __makeTemplateObject(cooked, raw) {
if (Object.defineProperty) {
Object.defineProperty(cooked, "raw", { value: raw });
}
else {
cooked.raw = raw;
}
return cooked;
}
;
var __setModuleDefault = Object.create ? (function (o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function (o, v) {
o["default"] = v;
};
function __importStar(mod) {
if (mod && mod.__esModule)
return mod;
var result = {};
if (mod != null)
for (var k in mod)
if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k))
__createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
}
function __importDefault(mod) {
return (mod && mod.__esModule) ? mod : { default: mod };
}
function __classPrivateFieldGet(receiver, privateMap) {
if (!privateMap.has(receiver)) {
throw new TypeError("attempted to get private field on non-instance");
}
return privateMap.get(receiver);
}
function __classPrivateFieldSet(receiver, privateMap, value) {
if (!privateMap.has(receiver)) {
throw new TypeError("attempted to set private field on non-instance");
}
privateMap.set(receiver, value);
return value;
}
var RfxParallaxService = /** @class */ (function () {

@@ -15,19 +320,47 @@ function RfxParallaxService(rendererFactory) {

RfxParallaxService.prototype.ngOnDestroy = function () {
if (this.scrollEvent) {
this.scrollEvent();
if (this.elementScrollEvent) {
this.elementScrollEvent();
}
if (this.resizeEvent) {
this.resizeEvent();
if (this.windowResizeEvent) {
this.windowResizeEvent();
}
if (this.elementHeightEvent) {
this.elementHeightEvent.disconnect();
}
};
/**
* Init listeners
* Start element scroll event, window resize event and element resize event listeners
* @param scrollElement main element with scroll property
*/
RfxParallaxService.prototype.initListeners = function (element) {
RfxParallaxService.prototype.initListeners = function (scrollElement) {
var _this = this;
var scrollElement = element !== null && element !== void 0 ? element : document;
this.scrollEvent = this.renderer.listen(scrollElement, 'scroll', function (event) { return _this.onMouseScroll(event); });
this.resizeEvent = this.renderer.listen(window, 'resize', function (event) { return _this.onWindowResize(event); });
var element = scrollElement !== null && scrollElement !== void 0 ? scrollElement : document.body;
this.elementScrollEvent = this.renderer.listen(element, 'scroll', function (event) { return _this.onMouseScroll(event); });
this.windowResizeEvent = this.renderer.listen(window, 'resize', function (event) { return _this.onWindowResize(event); });
this.setElementResizeEvent(element);
};
/**
* Observe scrollElement 'scrollHeight' property change
* @param scrollElement main element with scroll property
*/
RfxParallaxService.prototype.setElementResizeEvent = function (scrollElement) {
var e_1, _a;
var _this = this;
this.elementHeightEvent = new ResizeObserver__default['default'](function () { return _this.onWindowResize({ target: { innerWidth: scrollElement.clientWidth } }); });
var elementChildrenList = Array.from(scrollElement.children);
try {
for (var elementChildrenList_1 = __values(elementChildrenList), elementChildrenList_1_1 = elementChildrenList_1.next(); !elementChildrenList_1_1.done; elementChildrenList_1_1 = elementChildrenList_1.next()) {
var children = elementChildrenList_1_1.value;
this.elementHeightEvent.observe(children);
}
}
catch (e_1_1) { e_1 = { error: e_1_1 }; }
finally {
try {
if (elementChildrenList_1_1 && !elementChildrenList_1_1.done && (_a = elementChildrenList_1.return)) _a.call(elementChildrenList_1);
}
finally { if (e_1) throw e_1.error; }
}
};
/**
* Mouse scroll event

@@ -123,5 +456,8 @@ */

RfxParallaxDirective.prototype.onMouseScroll = function (scroll) {
if (scroll !== undefined && this.image) {
var imageTop = this.getImageTop(scroll, this.parallaxBoundaries);
this.setImageTransform(this.image, this.imageLeft, imageTop);
if (scroll !== undefined) {
this.scrollTop = scroll;
if (this.image.complete) {
var imageTop = this.getImageTop(scroll, this.parallaxBoundaries);
this.setImageTransform(this.image, this.imageLeft, imageTop);
}
}

@@ -134,3 +470,3 @@ };

RfxParallaxDirective.prototype.onWindowResize = function (width) {
if (width !== undefined && this.image) {
if (width !== undefined && this.image.complete) {
this.setParallaxProperties(this.scrollTop);

@@ -137,0 +473,0 @@ }

@@ -1,2 +0,16 @@

!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@angular/core"),require("rxjs")):"function"==typeof define&&define.amd?define("rfx-parallax",["exports","@angular/core","rxjs"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self)["rfx-parallax"]={},e.ng.core,e.rxjs)}(this,(function(e,t,i){"use strict";var r=function(){function e(e){this.rendererFactory=e,this.subjectScroll=new i.BehaviorSubject(void 0),this.subjectResize=new i.BehaviorSubject(void 0),this.renderer=this.rendererFactory.createRenderer(null,null)}return e.prototype.ngOnDestroy=function(){this.scrollEvent&&this.scrollEvent(),this.resizeEvent&&this.resizeEvent()},e.prototype.initListeners=function(e){var t=this,i=null!=e?e:document;this.scrollEvent=this.renderer.listen(i,"scroll",(function(e){return t.onMouseScroll(e)})),this.resizeEvent=this.renderer.listen(window,"resize",(function(e){return t.onWindowResize(e)}))},e.prototype.onMouseScroll=function(e){this.subjectScroll.next(e.target.scrollTop)},e.prototype.getMouseScroll=function(){return this.subjectScroll.asObservable()},e.prototype.onWindowResize=function(e){this.subjectResize.next(e.target.innerWidth)},e.prototype.getWindowResize=function(){return this.subjectResize.asObservable()},e}();r.ɵprov=t.ɵɵdefineInjectable({factory:function(){return new r(t.ɵɵinject(t.RendererFactory2))},token:r,providedIn:"root"}),r.decorators=[{type:t.Injectable,args:[{providedIn:"root"}]}],r.ctorParameters=function(){return[{type:t.RendererFactory2}]};var n=function(e,t,i,r){this.startPoint=e,this.endPoint=t,this.totalPixels=i,this.usablePixels=r},s=function(){function e(e,t,i){this.htmlElement=e,this.renderer=t,this.rfxParallaxService=i,this.parallaxPercentage=40,this.positionPercentage=50,this.imageZIndex=-1,this.isDisabled=!1,this.visibleOverflow=!1,this.scrollTop=0}return e.prototype.ngOnInit=function(){this.setListeners()},e.prototype.ngOnDestroy=function(){this.onScrollListener&&this.onScrollListener.unsubscribe(),this.onResizeListener&&this.onResizeListener.unsubscribe()},e.prototype.ngOnChanges=function(e){var t;(null===(t=e.imageUrl)||void 0===t?void 0:t.currentValue)?this.loadImage(e.imageUrl.currentValue):this.image&&this.setParallaxProperties(this.scrollTop)},e.prototype.setListeners=function(){var e=this;this.onScrollListener=this.rfxParallaxService.getMouseScroll().subscribe((function(t){return e.onMouseScroll(t)})),this.onResizeListener=this.rfxParallaxService.getWindowResize().subscribe((function(t){return e.onWindowResize(t)}))},e.prototype.onMouseScroll=function(e){if(void 0!==e&&this.image){var t=this.getImageTop(e,this.parallaxBoundaries);this.setImageTransform(this.image,this.imageLeft,t)}},e.prototype.onWindowResize=function(e){void 0!==e&&this.image&&this.setParallaxProperties(this.scrollTop)},e.prototype.loadImage=function(e){var t=this;this.image=new Image,this.image.src=e,this.image.setAttribute("class","parallax-image"),this.renderer.setStyle(this.image,"visiblity","hidden"),this.htmlElement.nativeElement.appendChild(this.image),this.image.onload=function(){t.setParallaxProperties(t.scrollTop),t.renderer.setStyle(t.image,"visiblity","visible")}},e.prototype.setParallaxProperties=function(e){var t=this.htmlElement.nativeElement,i=this.htmlElement.nativeElement.getBoundingClientRect().top+e;this.setStaticProperties(),this.setImageSize(t,this.image,this.parallaxPercentage),this.parallaxBoundaries=this.getParallaxBoundaries(i,t.clientHeight,this.parallaxPercentage),this.imageLeft=this.getImageLeft(this.htmlElement.nativeElement.clientWidth,this.image.width,this.positionPercentage);var r=this.getImageTop(e,this.parallaxBoundaries);this.setImageTransform(this.image,this.imageLeft,r)},e.prototype.setStaticProperties=function(){this.isAlreadyPositioned(this.htmlElement.nativeElement)||this.renderer.setStyle(this.htmlElement.nativeElement,"position","relative"),this.renderer.setStyle(this.htmlElement.nativeElement,"overflow",this.visibleOverflow?"visible":"hidden"),this.renderer.setStyle(this.image,"z-index",this.imageZIndex),this.renderer.setStyle(this.image,"position","absolute"),this.renderer.setStyle(this.image,"left","0"),this.renderer.setStyle(this.image,"top","0")},e.prototype.isAlreadyPositioned=function(e){return["absolute","relative"].includes(window.getComputedStyle(e).position)},e.prototype.setImageSize=function(e,t,i){var r=e.clientHeight*(100+i)/100;t.naturalHeight/t.naturalWidth>r/e.clientWidth?(this.image.setAttribute("width",e.clientWidth+"px"),this.image.setAttribute("height","auto")):(this.image.setAttribute("height",r+"px"),this.image.setAttribute("width","auto"))},e.prototype.getParallaxBoundaries=function(e,t,i){var r=t/100*i,s=e-r-window.innerHeight,o=e+t+r;return new n(s,o,o-s,r)},e.prototype.setImageTransform=function(e,t,i){this.renderer.setStyle(e,"transform","translate3d("+t+"px, "+i+"px, 0)")},e.prototype.getImageLeft=function(e,t,i){return(e-t)/100*i},e.prototype.getImageTop=function(e,t){var i=Math.max(0,Math.min(e-t.startPoint,t.totalPixels)),r=100/t.totalPixels*i;return-t.usablePixels*(1-r/100)},e}();s.decorators=[{type:t.Directive,args:[{selector:"[libRfxParallax]"}]}],s.ctorParameters=function(){return[{type:t.ElementRef},{type:t.Renderer2},{type:r}]},s.propDecorators={parallaxPercentage:[{type:t.Input}],positionPercentage:[{type:t.Input}],imageUrl:[{type:t.Input}],imageZIndex:[{type:t.Input}],visibleOverflow:[{type:t.Input}],isDisabled:[{type:t.Input}]};var o=function(){};o.decorators=[{type:t.NgModule,args:[{declarations:[s],imports:[],exports:[s]}]}],e.RfxParallaxBoundariesModel=n,e.RfxParallaxDirective=s,e.RfxParallaxModule=o,e.RfxParallaxService=r,Object.defineProperty(e,"__esModule",{value:!0})}));
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@angular/core"),require("rxjs"),require("resize-observer-polyfill")):"function"==typeof define&&define.amd?define("rfx-parallax",["exports","@angular/core","rxjs","resize-observer-polyfill"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self)["rfx-parallax"]={},e.ng.core,e.rxjs,e["resize-observer-polyfill"])}(this,(function(e,t,i,r){"use strict";function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var o=n(r);
/*! *****************************************************************************
Copyright (c) Microsoft Corporation.
Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
PERFORMANCE OF THIS SOFTWARE.
***************************************************************************** */Object.create;function s(e){var t="function"==typeof Symbol&&Symbol.iterator,i=t&&e[t],r=0;if(i)return i.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}Object.create;var a=function(){function e(e){this.rendererFactory=e,this.subjectScroll=new i.BehaviorSubject(void 0),this.subjectResize=new i.BehaviorSubject(void 0),this.renderer=this.rendererFactory.createRenderer(null,null)}return e.prototype.ngOnDestroy=function(){this.elementScrollEvent&&this.elementScrollEvent(),this.windowResizeEvent&&this.windowResizeEvent(),this.elementHeightEvent&&this.elementHeightEvent.disconnect()},e.prototype.initListeners=function(e){var t=this,i=null!=e?e:document.body;this.elementScrollEvent=this.renderer.listen(i,"scroll",(function(e){return t.onMouseScroll(e)})),this.windowResizeEvent=this.renderer.listen(window,"resize",(function(e){return t.onWindowResize(e)})),this.setElementResizeEvent(i)},e.prototype.setElementResizeEvent=function(e){var t,i,r=this;this.elementHeightEvent=new o.default((function(){return r.onWindowResize({target:{innerWidth:e.clientWidth}})}));var n=Array.from(e.children);try{for(var a=s(n),l=a.next();!l.done;l=a.next()){var h=l.value;this.elementHeightEvent.observe(h)}}catch(e){t={error:e}}finally{try{l&&!l.done&&(i=a.return)&&i.call(a)}finally{if(t)throw t.error}}},e.prototype.onMouseScroll=function(e){this.subjectScroll.next(e.target.scrollTop)},e.prototype.getMouseScroll=function(){return this.subjectScroll.asObservable()},e.prototype.onWindowResize=function(e){this.subjectResize.next(e.target.innerWidth)},e.prototype.getWindowResize=function(){return this.subjectResize.asObservable()},e}();a.ɵprov=t.ɵɵdefineInjectable({factory:function(){return new a(t.ɵɵinject(t.RendererFactory2))},token:a,providedIn:"root"}),a.decorators=[{type:t.Injectable,args:[{providedIn:"root"}]}],a.ctorParameters=function(){return[{type:t.RendererFactory2}]};var l=function(e,t,i,r){this.startPoint=e,this.endPoint=t,this.totalPixels=i,this.usablePixels=r},h=function(){function e(e,t,i){this.htmlElement=e,this.renderer=t,this.rfxParallaxService=i,this.parallaxPercentage=40,this.positionPercentage=50,this.imageZIndex=-1,this.isDisabled=!1,this.visibleOverflow=!1,this.scrollTop=0}return e.prototype.ngOnInit=function(){this.setListeners()},e.prototype.ngOnDestroy=function(){this.onScrollListener&&this.onScrollListener.unsubscribe(),this.onResizeListener&&this.onResizeListener.unsubscribe()},e.prototype.ngOnChanges=function(e){var t;(null===(t=e.imageUrl)||void 0===t?void 0:t.currentValue)?this.loadImage(e.imageUrl.currentValue):this.image&&this.setParallaxProperties(this.scrollTop)},e.prototype.setListeners=function(){var e=this;this.onScrollListener=this.rfxParallaxService.getMouseScroll().subscribe((function(t){return e.onMouseScroll(t)})),this.onResizeListener=this.rfxParallaxService.getWindowResize().subscribe((function(t){return e.onWindowResize(t)}))},e.prototype.onMouseScroll=function(e){if(void 0!==e&&(this.scrollTop=e,this.image.complete)){var t=this.getImageTop(e,this.parallaxBoundaries);this.setImageTransform(this.image,this.imageLeft,t)}},e.prototype.onWindowResize=function(e){void 0!==e&&this.image.complete&&this.setParallaxProperties(this.scrollTop)},e.prototype.loadImage=function(e){var t=this;this.image=new Image,this.image.src=e,this.image.setAttribute("class","parallax-image"),this.renderer.setStyle(this.image,"visiblity","hidden"),this.htmlElement.nativeElement.appendChild(this.image),this.image.onload=function(){t.setParallaxProperties(t.scrollTop),t.renderer.setStyle(t.image,"visiblity","visible")}},e.prototype.setParallaxProperties=function(e){var t=this.htmlElement.nativeElement,i=this.htmlElement.nativeElement.getBoundingClientRect().top+e;this.setStaticProperties(),this.setImageSize(t,this.image,this.parallaxPercentage),this.parallaxBoundaries=this.getParallaxBoundaries(i,t.clientHeight,this.parallaxPercentage),this.imageLeft=this.getImageLeft(this.htmlElement.nativeElement.clientWidth,this.image.width,this.positionPercentage);var r=this.getImageTop(e,this.parallaxBoundaries);this.setImageTransform(this.image,this.imageLeft,r)},e.prototype.setStaticProperties=function(){this.isAlreadyPositioned(this.htmlElement.nativeElement)||this.renderer.setStyle(this.htmlElement.nativeElement,"position","relative"),this.renderer.setStyle(this.htmlElement.nativeElement,"overflow",this.visibleOverflow?"visible":"hidden"),this.renderer.setStyle(this.image,"z-index",this.imageZIndex),this.renderer.setStyle(this.image,"position","absolute"),this.renderer.setStyle(this.image,"left","0"),this.renderer.setStyle(this.image,"top","0")},e.prototype.isAlreadyPositioned=function(e){return["absolute","relative"].includes(window.getComputedStyle(e).position)},e.prototype.setImageSize=function(e,t,i){var r=e.clientHeight*(100+i)/100;t.naturalHeight/t.naturalWidth>r/e.clientWidth?(this.image.setAttribute("width",e.clientWidth+"px"),this.image.setAttribute("height","auto")):(this.image.setAttribute("height",r+"px"),this.image.setAttribute("width","auto"))},e.prototype.getParallaxBoundaries=function(e,t,i){var r=t/100*i,n=e-r-window.innerHeight,o=e+t+r;return new l(n,o,o-n,r)},e.prototype.setImageTransform=function(e,t,i){this.renderer.setStyle(e,"transform","translate3d("+t+"px, "+i+"px, 0)")},e.prototype.getImageLeft=function(e,t,i){return(e-t)/100*i},e.prototype.getImageTop=function(e,t){var i=Math.max(0,Math.min(e-t.startPoint,t.totalPixels)),r=100/t.totalPixels*i;return-t.usablePixels*(1-r/100)},e}();h.decorators=[{type:t.Directive,args:[{selector:"[libRfxParallax]"}]}],h.ctorParameters=function(){return[{type:t.ElementRef},{type:t.Renderer2},{type:a}]},h.propDecorators={parallaxPercentage:[{type:t.Input}],positionPercentage:[{type:t.Input}],imageUrl:[{type:t.Input}],imageZIndex:[{type:t.Input}],visibleOverflow:[{type:t.Input}],isDisabled:[{type:t.Input}]};var c=function(){};c.decorators=[{type:t.NgModule,args:[{declarations:[h],imports:[],exports:[h]}]}],e.RfxParallaxBoundariesModel=l,e.RfxParallaxDirective=h,e.RfxParallaxModule=c,e.RfxParallaxService=a,Object.defineProperty(e,"__esModule",{value:!0})}));
//# sourceMappingURL=rfx-parallax.umd.min.js.map

13

esm2015/lib/rfx-parallax.directive.js

@@ -48,5 +48,8 @@ import { Directive, ElementRef, Input, Renderer2 } from '@angular/core';

onMouseScroll(scroll) {
if (scroll !== undefined && this.image) {
const imageTop = this.getImageTop(scroll, this.parallaxBoundaries);
this.setImageTransform(this.image, this.imageLeft, imageTop);
if (scroll !== undefined) {
this.scrollTop = scroll;
if (this.image.complete) {
const imageTop = this.getImageTop(scroll, this.parallaxBoundaries);
this.setImageTransform(this.image, this.imageLeft, imageTop);
}
}

@@ -59,3 +62,3 @@ }

onWindowResize(width) {
if (width !== undefined && this.image) {
if (width !== undefined && this.image.complete) {
this.setParallaxProperties(this.scrollTop);

@@ -194,2 +197,2 @@ }

};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmZ4LXBhcmFsbGF4LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiJEOi9SZXBvcy9SRlhMaWJyYXJ5L3Byb2plY3RzL3JmeC1wYXJhbGxheC9zcmMvIiwic291cmNlcyI6WyJsaWIvcmZ4LXBhcmFsbGF4LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQWdDLFNBQVMsRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFFckgsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDNUQsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFLN0UsTUFBTSxPQUFPLG9CQUFvQjtJQWtCL0IsWUFDVSxXQUF1QixFQUN2QixRQUFtQixFQUNuQixrQkFBc0M7UUFGdEMsZ0JBQVcsR0FBWCxXQUFXLENBQVk7UUFDdkIsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUNuQix1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBRTlDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxFQUFFLENBQUM7UUFDN0IsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEVBQUUsQ0FBQztRQUM3QixJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO1FBQzdCLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDO0lBQ3JCLENBQUM7SUFFTSxRQUFRO1FBQ2IsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFTSxXQUFXO1FBQ2hCLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFO1lBQ3pCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUNyQztRQUVELElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFF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VUFBVSxDQUFDLFVBQVUsRUFBRSxVQUFVLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztRQUM5RyxNQUFNLHNCQUFzQixHQUFXLEdBQUcsR0FBRyxVQUFVLENBQUMsV0FBVyxHQUFHLFlBQVksQ0FBQztRQUNuRixPQUFPLENBQUMsVUFBVSxDQUFDLFlBQVksR0FBRyxDQUFDLENBQUMsR0FBRyxzQkFBc0IsR0FBRyxHQUFHLENBQUMsQ0FBQztJQUN2RSxDQUFDOzs7WUE3TUYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxrQkFBa0I7YUFDN0I7OztZQVBtQixVQUFVO1lBQXVDLFNBQVM7WUFFckUsa0JBQWtCOzs7aUNBT3hCLEtBQUs7aUNBQ0wsS0FBSzt1QkFDTCxLQUFLOzBCQUNMLEtBQUs7OEJBQ0wsS0FBSzt5QkFDTCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBJbnB1dCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIE9uSW5pdCwgUmVuZGVyZXIyLCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBSZnhQYXJhbGxheFNlcnZpY2UgfSBmcm9tICcuL3JmeC1wYXJhbGxheC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUmZ4UGFyYWxsYXhCb3VuZGFyaWVzTW9kZWwgfSBmcm9tICcuL3JmeC1wYXJhbGxheC1ib3VuZGFyaWVzLm1vZGVsJztcclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gIHNlbGVjdG9yOiAnW2xpYlJmeFBhcmFsbGF4XSdcclxufSlcclxuZXhwb3J0IGNsYXNzIFJmeFBhcmFsbGF4RGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcyB7XHJcbiAgQElucHV0KCkgcHVibGljIHBhcmFsbGF4UGVyY2VudGFnZTogbnVtYmVyO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBwb3NpdGlvblBlcmNlbnRhZ2U6IG51bWJlcjtcclxuICBASW5wdXQoKSBwdWJsaWMgaW1hZ2VVcmw6IHN0cmluZztcclxuICBASW5wdXQoKSBwdWJsaWMgaW1hZ2VaSW5kZXg6IG51bWJlcjtcclxuICBASW5wdXQoKSBwdWJsaWMgdmlzaWJsZU92ZXJmbG93OiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBpc0Rpc2FibGVkOiBib29sZWFuO1xyXG5cclxuICAvLyBASW5wdXQoKSBwdWJsaWMgdGVzdDogYm9vbGVhbjsgLy8gVE9ETyE6IHJlbW92ZVxyXG5cclxuICBwcml2YXRlIGltYWdlOiBIVE1MSW1hZ2VFbGVtZW50O1xyXG4gIHByaXZhdGUgaW1hZ2VMZWZ0OiBudW1iZXI7XHJcbiAgcHJpdmF0ZSBzY3JvbGxUb3A6IG51bWJlcjtcclxuICBwcml2YXRlIHBhcmFsbGF4Qm91bmRhcmllczogUmZ4UGFyYWxsYXhCb3VuZGFyaWVzTW9kZWw7XHJcblxyXG4gIHByaXZhdGUgb25TY3JvbGxMaXN0ZW5lcjogU3Vic2NyaXB0aW9uO1xyXG4gIHByaXZhdGUgb25SZXNpemVMaXN0ZW5lcjogU3Vic2NyaXB0aW9uO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgaHRtbEVsZW1lbnQ6IEVsZW1lbnRSZWYsXHJcbiAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXHJcbiAgICBwcml2YXRlIHJmeFBhcmFsbGF4U2VydmljZTogUmZ4UGFyYWxsYXhTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICB0aGlzLnBhcmFsbGF4UGVyY2VudGFnZSA9IDQwO1xyXG4gICAgdGhpcy5wb3NpdGlvblBlcmNlbnRhZ2UgPSA1MDtcclxuICAgIHRoaXMuaW1hZ2VaSW5kZXggPSAtMTtcclxuICAgIHRoaXMuaXNEaXNhYmxlZCA9IGZhbHNlO1xyXG4gICAgdGhpcy52aXNpYmxlT3ZlcmZsb3cgPSBmYWxzZTtcclxuICAgIHRoaXMuc2Nyb2xsVG9wID0gMDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuc2V0TGlzdGVuZXJzKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5vblNjcm9sbExpc3RlbmVyKSB7XHJcbiAgICAgIHRoaXMub25TY3JvbGxMaXN0ZW5lci51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLm9uUmVzaXplTGlzdGVuZXIpIHtcclxuICAgICAgdGhpcy5vblJlc2l6ZUxpc3RlbmVyLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgaWYgKGNoYW5nZXMuaW1hZ2VVcmw/LmN1cnJlbnRWYWx1ZSkge1xyXG4gICAgICB0aGlzLmxvYWRJbWFnZShjaGFuZ2VzLmltYWdlVXJsLmN1cnJlbnRWYWx1ZSk7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaW1hZ2UpIHtcclxuICAgICAgdGhpcy5zZXRQYXJhbGxheFByb3BlcnRpZXModGhpcy5zY3JvbGxUb3ApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU3Vic2NyaWJlIHRvIHNjcm9sbCBhbmQgcmVzaXplIGxpc3RlbmVyc1xyXG4gICAqL1xyXG4gIHByaXZhdGUgc2V0TGlzdGVuZXJzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5vblNjcm9sbExpc3RlbmVyID0gdGhpcy5yZnhQYXJhbGxheFNlcnZpY2UuZ2V0TW91c2VTY3JvbGwoKS5zdWJzY3JpYmUoKHNjcm9sbDogbnVtYmVyKSA9PiB0aGlzLm9uTW91c2VTY3JvbGwoc2Nyb2xsKSk7XHJcbiAgICB0aGlzLm9uUmVzaXplTGlzdGVuZXIgPSB0aGlzLnJmeFBhcmFsbGF4U2VydmljZS5nZXRXaW5kb3dSZXNpemUoKS5zdWJzY3JpYmUoKHdpZHRoOiBudW1iZXIpID0+IHRoaXMub25XaW5kb3dSZXNpemUod2lkdGgpKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldCB0cmFuc2Zvcm0gcHJvcGVydHkgYmFzZWQgb24gdGhlIG5ldyBzY3JvbGwgdmFsdWVcclxuICAgKiBAcGFyYW0gc2Nyb2xsIG5ldyBlbGVtZW50IHNjcm9sbCB2YWx1ZVxyXG4gICAqL1xyXG4gIHByaXZhdGUgb25Nb3VzZVNjcm9sbChzY3JvbGw6IG51bWJlcik6IHZvaWQge1xyXG4gICAgaWYgKHNjcm9sbCAhPT0gdW5kZWZpbmVkICYmIHRoaXMuaW1hZ2UpIHtcclxuICAgICAgY29uc3QgaW1hZ2VUb3AgPSB0aGlzLmdldEltYWdlVG9wKHNjcm9sbCwgdGhpcy5wYXJhbGxheEJvdW5kYXJpZXMpO1xyXG4gICAgICB0aGlzLnNldEltYWdlVHJhbnNmb3JtKHRoaXMuaW1hZ2UsIHRoaXMuaW1hZ2VMZWZ0LCBpbWFnZVRvcCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXNldCBwYXJhbGxheCBwcm9wZXJ0aWVzIGFjY29yZGluZyB0byBuZXcgd2luZG93IHNpemVcclxuICAgKiBAcGFyYW0gd2lkdGggd2luZG93IG5ldyB3aWR0aCB2YWx1ZVxyXG4gICAqL1xyXG4gIHByaXZhdGUgb25XaW5kb3dSZXNpemUod2lkdGg6IG51bWJlcik6IHZvaWQge1xyXG4gICAgaWYgKHdpZHRoICE9PSB1bmRlZmluZWQgJiYgdGhpcy5pbWFnZSkge1xyXG4gICAgICB0aGlzLnNldFBhcmFsbGF4UHJvcGVydGllcyh0aGlzLnNjcm9sbFRvcCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBMb2FkIHBhcmFsbGF4IGltYWdlIGZyb20gaW1hZ2VVcmxcclxuICAgKiBAcGFyYW0gaW1hZ2VVcmwgaW1hZ2UgdXJsXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBsb2FkSW1hZ2UoaW1hZ2VVcmw6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5pbWFnZSA9IG5ldyBJbWFnZSgpO1xyXG4gICAgdGhpcy5pbWFnZS5zcmMgPSBpbWFnZVVybDtcclxuICAgIHRoaXMuaW1hZ2Uuc2V0QXR0cmlidXRlKCdjbGFzcycsICdwYXJhbGxheC1pbWFnZScpO1xyXG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmltYWdlLCAndmlzaWJsaXR5JywgJ2hpZGRlbicpO1xyXG4gICAgdGhpcy5odG1sRWxlbWVudC5uYXRpdmVFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuaW1hZ2UpO1xyXG5cclxuICAgIHRoaXMuaW1hZ2Uub25sb2FkID0gKCkgPT4ge1xyXG4gICAgICB0aGlzLnNldFBhcmFsbGF4UHJvcGVydGllcyh0aGlzLnNjcm9sbFRvcCk7XHJcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5pbWFnZSwgJ3Zpc2libGl0eScsICd2aXNpYmxlJyk7XHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2V0IHBhcmFsbGF4IHByb3BlcnRpZXMgYW5kIHBvc2l0aW9uXHJcbiAgICogQHBhcmFtIHNjcm9sbFRvcCBwYWdlIGNvbnRhaW5lciBwaXhlbHMgZnJvbSB0aGUgdG9wIG9mIHRoZSBwYWdlIHRvIHRoZSBjdXJyZW50IHZpZXdcclxuICAgKi9cclxuICBwcml2YXRlIHNldFBhcmFsbGF4UHJvcGVydGllcyhzY3JvbGxUb3A6IG51bWJlcik6IHZvaWQge1xyXG4gICAgY29uc3QgY29udGFpbmVyRWxlbWVudCA9IHRoaXMuaHRtbEVsZW1lbnQubmF0aXZlRWxlbWVudDtcclxuICAgIGNvbnN0IGNvbnRhaW5lclJlY3QgPSB0aGlzLmh0bWxFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcbiAgICBjb25zdCBlbGVtZW50VG9wID0gY29udGFpbmVyUmVjdC50b3AgKyBzY3JvbGxUb3A7XHJcbiAgICB0aGlzLnNldFN0YXRpY1Byb3BlcnRpZXMoKTtcclxuICAgIHRoaXMuc2V0SW1hZ2VTaXplKGNvbnRhaW5lckVsZW1lbnQsIHRoaXMuaW1hZ2UsIHRoaXMucGFyYWxsYXhQZXJjZW50YWdlKTtcclxuICAgIHRoaXMucGFyYWxsYXhCb3VuZGFyaWVzID0gdGhpcy5nZXRQYXJhbGxheEJvdW5kYXJpZXMoZWxlbWVudFRvcCwgY29udGFpbmVyRWxlbWVudC5jbGllbnRIZWlnaHQsIHRoaXMucGFyYWxsYXhQZXJjZW50YWdlKTtcclxuICAgIHRoaXMuaW1hZ2VMZWZ0ID0gdGhpcy5nZXRJbWFnZUxlZnQodGhpcy5odG1sRWxlbWVudC5uYXRpdmVFbGVtZW50LmNsaWVudFdpZHRoLCB0aGlzLmltYWdlLndpZHRoLCB0aGlzLnBvc2l0aW9uUGVyY2VudGFnZSk7XHJcbiAgICBjb25zdCBpbWFnZVRvcCA9IHRoaXMuZ2V0SW1hZ2VUb3Aoc2Nyb2xsVG9wLCB0aGlzLnBhcmFsbGF4Qm91bmRhcmllcyk7XHJcbiAgICB0aGlzLnNldEltYWdlVHJhbnNmb3JtKHRoaXMuaW1hZ2UsIHRoaXMuaW1hZ2VMZWZ0LCBpbWFnZVRvcCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZXQgZGVmYXVsdCBwcm9wZXJ0aWVzIGZvciBjb250YWluZXIgYW5kIGltYWdlXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBzZXRTdGF0aWNQcm9wZXJ0aWVzKCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLmlzQWxyZWFkeVBvc2l0aW9uZWQodGhpcy5odG1sRWxlbWVudC5uYXRpdmVFbGVtZW50KSkge1xyXG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuaHRtbEVsZW1lbnQubmF0aXZlRWxlbWVudCwgJ3Bvc2l0aW9uJywgJ3JlbGF0aXZlJyk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmh0bWxFbGVtZW50Lm5hdGl2ZUVsZW1lbnQsICdvdmVyZmxvdycsIHRoaXMudmlzaWJsZU92ZXJmbG93ID8gJ3Zpc2libGUnIDogJ2hpZGRlbicpO1xyXG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmltYWdlLCAnei1pbmRleCcsIHRoaXMuaW1hZ2VaSW5kZXgpO1xyXG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmltYWdlLCAncG9zaXRpb24nLCAnYWJzb2x1dGUnKTtcclxuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5pbWFnZSwgJ2xlZnQnLCAnMCcpO1xyXG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmltYWdlLCAndG9wJywgJzAnKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENoZWNrIGlmIGVsZW1lbnQgaGFzIHBvc2l0aW9uIGFic29sdXRlIG9yIHJlbGF0aXZlXHJcbiAgICogQHBhcmFtIGVsZW1lbnQgaHRtbCBlbGVtZW50XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBpc0FscmVhZHlQb3NpdGlvbmVkKGVsZW1lbnQ6IEVsZW1lbnQpOiBib29sZWFuIHtcclxuICAgIHJldHVybiBbJ2Fic29sdXRlJywgJ3JlbGF0aXZlJ10uaW5jbHVkZXMod2luZG93LmdldENvbXB1dGVkU3R5bGUoZWxlbWVudCkucG9zaXRpb24pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2V0IGRlZmF1bHQgaW1hZ2Ugc2l6ZSB0aGF0IG1hdGNoIHByb3BlcnRpZXNcclxuICAgKiBAcGFyYW0gY29udGFpbmVyIG1haW4gY29udGFpbmVyIEhUTUxFbGVtZW50XHJcbiAgICogQHBhcmFtIGltYWdlIG1haW4gaW1hZ2UgSFRNTEVsZW1lbnRcclxuICAgKiBAcGFyYW0gcGFyYWxsYXhQZXJjZW50YWdlIHBhcmFsbGF4IHNjcm9sbCBwZXJjZW50YWdlXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBzZXRJbWFnZVNpemUoY29udGFpbmVyOiBIVE1MRWxlbWVudCwgaW1hZ2U6IEhUTUxJbWFnZUVsZW1lbnQsIHBhcmFsbGF4UGVyY2VudGFnZTogbnVtYmVyKTogdm9pZCB7XHJcbiAgICBjb25zdCBtaW5IZWlnaHQgPSAoY29udGFpbmVyLmNsaWVudEhlaWdodCAqICgxMDAgKyBwYXJhbGxheFBlcmNlbnRhZ2UpKSAvIDEwMDtcclxuICAgIGNvbnN0IHJhdGlvID0gaW1hZ2UubmF0dXJhbEhlaWdodCAvIGltYWdlLm5hdHVyYWxXaWR0aDtcclxuICAgIGNvbnN0IG1pblJhdGlvID0gbWluSGVpZ2h0IC8gY29udGFpbmVyLmNsaWVudFdpZHRoO1xyXG5cclxuICAgIGlmIChyYXRpbyA+IG1pblJhdGlvKSB7XHJcbiAgICAgIHRoaXMuaW1hZ2Uuc2V0QXR0cmlidXRlKCd3aWR0aCcsIGAke2NvbnRhaW5lci5jbGllbnRXaWR0aH1weGApO1xyXG4gICAgICB0aGlzLmltYWdlLnNldEF0dHJpYnV0ZSgnaGVpZ2h0JywgYGF1dG9gKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuaW1hZ2Uuc2V0QXR0cmlidXRlKCdoZWlnaHQnLCBgJHttaW5IZWlnaHR9cHhgKTtcclxuICAgICAgdGhpcy5pbWFnZS5zZXRBdHRyaWJ1dGUoJ3dpZHRoJywgYGF1dG9gKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCBwYXJhbGxheCBzY3JvbGxpbmcgdmlzaWJsZSBhcmVhLlxyXG4gICAqIFVzZSB0aGlzIHdoZW4gY29udGFpbmVyIG92ZXJmbG93IGlzIGhpZGRlbiBmb3IgYmV0dGVyIHBhZ2UgcGVyZm9ybWFuY2VcclxuICAgKiBAcGFyYW0gZWxlbWVudFRvcCBtYWluIGNvbnRhaW5lciBwb3NpdGlvbiBmcm9tIHRoZSB0b3Agb2YgdGhlIGRvY3VtZW50IGluIHBpeGVsc1xyXG4gICAqIEBwYXJhbSBlbGVtZW50SGVpZ2h0IG1haW4gY29udGFpbmVyIGhlaWdodCBpbiBwaXhlbHNcclxuICAgKiBAcGFyYW0gcGFyYWxsYXhQZXJjZW50YWdlIHBhcmFsbGF4IHNjcm9sbCBwZXJjZW50YWdlXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBnZXRQYXJhbGxheEJvdW5kYXJpZXMoZWxlbWVudFRvcDogbnVtYmVyLCBlbGVtZW50SGVpZ2h0OiBudW1iZXIsIHBhcmFsbGF4UGVyY2VudGFnZTogbnVtYmVyKTogUmZ4UGFyYWxsYXhCb3VuZGFyaWVzTW9kZWwge1xyXG4gICAgY29uc3QgdXNhYmxlUGl4ZWxzID0gZWxlbWVudEhlaWdodCAvIDEwMCAqIHBhcmFsbGF4UGVyY2VudGFnZTtcclxuICAgIGNvbnN0IHN0YXJ0UG9pbnQgPSBlbGVtZW50VG9wIC0gdXNhYmxlUGl4ZWxzIC0gd2luZG93LmlubmVySGVpZ2h0O1xyXG4gICAgY29uc3QgZW5kUG9pbnQgPSBlbGVtZW50VG9wICsgZWxlbWVudEhlaWdodCArIHVzYWJsZVBpeGVscztcclxuICAgIGNvbnN0IHRvdGFsUGl4ZWxzID0gZW5kUG9pbnQgLSBzdGFydFBvaW50O1xyXG4gICAgcmV0dXJuIG5ldyBSZnhQYXJhbGxheEJvdW5kYXJpZXNNb2RlbChzdGFydFBvaW50LCBlbmRQb2ludCwgdG90YWxQaXhlbHMsIHVzYWJsZVBpeGVscyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZXQgaW1hZ2UgdHJhbnNmb3JtIHByb3BlcnR5XHJcbiAgICogQHBhcmFtIGltYWdlIGltYWdlIEhUTUxJbWFnZUVsZW1lbnQgZWxlbWVudFxyXG4gICAqIEBwYXJhbSBpbWFnZUxlZnQgaW1hZ2UgbGVmdCBzaGlmdCBpbiBwaXhlbHNcclxuICAgKiBAcGFyYW0gaW1hZ2VUb3AgaW1hZ2UgdG9wIHNoaWZ0IGluIHBpeGVsc1xyXG4gICAqL1xyXG4gIHByaXZhdGUgc2V0SW1hZ2VUcmFuc2Zvcm0oaW1hZ2U6IEhUTUxJbWFnZUVsZW1lbnQsIGltYWdlTGVmdDogbnVtYmVyLCBpbWFnZVRvcDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGltYWdlLCAndHJhbnNmb3JtJywgYHRyYW5zbGF0ZTNkKCR7aW1hZ2VMZWZ0fXB4LCAke2ltYWdlVG9wfXB4LCAwKWApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IGltYWdlIGxlZnQgcHJvcGVydHkgYmFzZWQgb24gcG9zaXRpb25QZXJjZW50YWdlIGluIHBpeGVsc1xyXG4gICAqIEBwYXJhbSBjb250YWluZXJXaWR0aCBtYWluIGNvbnRhaW5lciB3aWR0aCBpbiBwaXhlbHNcclxuICAgKiBAcGFyYW0gaW1hZ2VXaWR0aCBpbWFnZSB3aWR0aCBpbiBwaXhlbHNcclxuICAgKiBAcGFyYW0gcG9zaXRpb25QZXJjZW50YWdlIGltYWdlIHBvc2l0aW9uIHBlcmNlbnRhZ2VcclxuICAgKi9cclxuICBwcml2YXRlIGdldEltYWdlTGVmdChjb250YWluZXJXaWR0aDogbnVtYmVyLCBpbWFnZVdpZHRoOiBudW1iZXIsIHBvc2l0aW9uUGVyY2VudGFnZTogbnVtYmVyKTogbnVtYmVyIHtcclxuICAgIHJldHVybiAoY29udGFpbmVyV2lkdGggLSBpbWFnZVdpZHRoKSAvIDEwMCAqIHBvc2l0aW9uUGVyY2VudGFnZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCBpbWFnZSB0b3Agc2hpZnQgaW4gcGl4ZWxzXHJcbiAgICogQHBhcmFtIHNjcm9sbFRvcCBwaXhlbHMgZnJvbSB0aGUgdG9wIG9mIHRoZSBwYWdlIHRvIHRoZSBjdXJyZW50IHZpZXdcclxuICAgKiBAcGFyYW0gYm91bmRhcmllcyBwYXJhbGxheCBwb3NpdGlvbiBwb2ludHMgaW5zaWRlIHRoZSBwYWdlXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBnZXRJbWFnZVRvcChzY3JvbGxUb3A6IG51bWJlciwgYm91bmRhcmllczogUmZ4UGFyYWxsYXhCb3VuZGFyaWVzTW9kZWwpOiBudW1iZXIge1xyXG4gICAgY29uc3QgcGFyYWxsYXhBcmVhOiBudW1iZXIgPSBNYXRoLm1heCgwLCBNYXRoLm1pbihzY3JvbGxUb3AgLSBib3VuZGFyaWVzLnN0YXJ0UG9pbnQsIGJvdW5kYXJpZXMudG90YWxQaXhlbHMpKTtcclxuICAgIGNvbnN0IHBhcmFsbGF4QXJlYVBlcmNlbnRhZ2U6IG51bWJlciA9IDEwMCAvIGJvdW5kYXJpZXMudG90YWxQaXhlbHMgKiBwYXJhbGxheEFyZWE7XHJcbiAgICByZXR1cm4gLWJvdW5kYXJpZXMudXNhYmxlUGl4ZWxzICogKDEgLSBwYXJhbGxheEFyZWFQZXJjZW50YWdlIC8gMTAwKTtcclxuICB9XHJcbn1cclxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmZ4LXBhcmFsbGF4LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiJEOi9SZXBvcy9SRlhMaWJyYXJ5L3Byb2plY3RzL3JmeC1wYXJhbGxheC9zcmMvIiwic291cmNlcyI6WyJsaWIvcmZ4LXBhcmFsbGF4LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQWdDLFNBQVMsRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFFckgsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDNUQsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFLN0UsTUFBTSxPQUFPLG9CQUFvQjtJQWtCL0IsWUFDVSxXQUF1QixFQUN2QixRQUFtQixFQUNuQixrQkFBc0M7UUFGdEMsZ0JBQVcsR0FBWCxXQUFXLENBQVk7UUFDdkIsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUNuQix1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBRTlDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxFQUFFLENBQUM7UUFDN0IsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEVBQUUsQ0FBQztRQUM3QixJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO1FBQzdCLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDO0lBQ3JCLENBQUM7SUFFTSxRQUFRO1FBQ2IsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFTSxXQUFXO1FBQ2hCLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFO1lBQ3pCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUNyQztRQUVELElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFF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QUFNLFlBQVksR0FBVyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsR0FBRyxVQUFVLENBQUMsVUFBVSxFQUFFLFVBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO1FBQzlHLE1BQU0sc0JBQXNCLEdBQVcsR0FBRyxHQUFHLFVBQVUsQ0FBQyxXQUFXLEdBQUcsWUFBWSxDQUFDO1FBQ25GLE9BQU8sQ0FBQyxVQUFVLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQyxHQUFHLHNCQUFzQixHQUFHLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7OztZQWpORixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLGtCQUFrQjthQUM3Qjs7O1lBUG1CLFVBQVU7WUFBdUMsU0FBUztZQUVyRSxrQkFBa0I7OztpQ0FPeEIsS0FBSztpQ0FDTCxLQUFLO3VCQUNMLEtBQUs7MEJBQ0wsS0FBSzs4QkFDTCxLQUFLO3lCQUNMLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIElucHV0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgT25Jbml0LCBSZW5kZXJlcjIsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFJmeFBhcmFsbGF4U2VydmljZSB9IGZyb20gJy4vcmZ4LXBhcmFsbGF4LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBSZnhQYXJhbGxheEJvdW5kYXJpZXNNb2RlbCB9IGZyb20gJy4vcmZ4LXBhcmFsbGF4LWJvdW5kYXJpZXMubW9kZWwnO1xyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgc2VsZWN0b3I6ICdbbGliUmZ4UGFyYWxsYXhdJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgUmZ4UGFyYWxsYXhEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgT25DaGFuZ2VzIHtcclxuICBASW5wdXQoKSBwdWJsaWMgcGFyYWxsYXhQZXJjZW50YWdlOiBudW1iZXI7XHJcbiAgQElucHV0KCkgcHVibGljIHBvc2l0aW9uUGVyY2VudGFnZTogbnVtYmVyO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBpbWFnZVVybDogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBpbWFnZVpJbmRleDogbnVtYmVyO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyB2aXNpYmxlT3ZlcmZsb3c6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgcHVibGljIGlzRGlzYWJsZWQ6IGJvb2xlYW47XHJcblxyXG4gIC8vIEBJbnB1dCgpIHB1YmxpYyB0ZXN0OiBib29sZWFuOyAvLyBUT0RPITogcmVtb3ZlXHJcblxyXG4gIHByaXZhdGUgaW1hZ2U6IEhUTUxJbWFnZUVsZW1lbnQ7XHJcbiAgcHJpdmF0ZSBpbWFnZUxlZnQ6IG51bWJlcjtcclxuICBwcml2YXRlIHNjcm9sbFRvcDogbnVtYmVyO1xyXG4gIHByaXZhdGUgcGFyYWxsYXhCb3VuZGFyaWVzOiBSZnhQYXJhbGxheEJvdW5kYXJpZXNNb2RlbDtcclxuXHJcbiAgcHJpdmF0ZSBvblNjcm9sbExpc3RlbmVyOiBTdWJzY3JpcHRpb247XHJcbiAgcHJpdmF0ZSBvblJlc2l6ZUxpc3RlbmVyOiBTdWJzY3JpcHRpb247XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBodG1sRWxlbWVudDogRWxlbWVudFJlZixcclxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcclxuICAgIHByaXZhdGUgcmZ4UGFyYWxsYXhTZXJ2aWNlOiBSZnhQYXJhbGxheFNlcnZpY2VcclxuICApIHtcclxuICAgIHRoaXMucGFyYWxsYXhQZXJjZW50YWdlID0gNDA7XHJcbiAgICB0aGlzLnBvc2l0aW9uUGVyY2VudGFnZSA9IDUwO1xyXG4gICAgdGhpcy5pbWFnZVpJbmRleCA9IC0xO1xyXG4gICAgdGhpcy5pc0Rpc2FibGVkID0gZmFsc2U7XHJcbiAgICB0aGlzLnZpc2libGVPdmVyZmxvdyA9IGZhbHNlO1xyXG4gICAgdGhpcy5zY3JvbGxUb3AgPSAwO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zZXRMaXN0ZW5lcnMoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLm9uU2Nyb2xsTGlzdGVuZXIpIHtcclxuICAgICAgdGhpcy5vblNjcm9sbExpc3RlbmVyLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMub25SZXNpemVMaXN0ZW5lcikge1xyXG4gICAgICB0aGlzLm9uUmVzaXplTGlzdGVuZXIudW5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBpZiAoY2hhbmdlcy5pbWFnZVVybD8uY3VycmVudFZhbHVlKSB7XHJcbiAgICAgIHRoaXMubG9hZEltYWdlKGNoYW5nZXMuaW1hZ2VVcmwuY3VycmVudFZhbHVlKTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pbWFnZSkge1xyXG4gICAgICB0aGlzLnNldFBhcmFsbGF4UHJvcGVydGllcyh0aGlzLnNjcm9sbFRvcCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTdWJzY3JpYmUgdG8gc2Nyb2xsIGFuZCByZXNpemUgbGlzdGVuZXJzXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBzZXRMaXN0ZW5lcnMoKTogdm9pZCB7XHJcbiAgICB0aGlzLm9uU2Nyb2xsTGlzdGVuZXIgPSB0aGlzLnJmeFBhcmFsbGF4U2VydmljZS5nZXRNb3VzZVNjcm9sbCgpLnN1YnNjcmliZSgoc2Nyb2xsOiBudW1iZXIpID0+IHRoaXMub25Nb3VzZVNjcm9sbChzY3JvbGwpKTtcclxuICAgIHRoaXMub25SZXNpemVMaXN0ZW5lciA9IHRoaXMucmZ4UGFyYWxsYXhTZXJ2aWNlLmdldFdpbmRvd1Jlc2l6ZSgpLnN1YnNjcmliZSgod2lkdGg6IG51bWJlcikgPT4gdGhpcy5vbldpbmRvd1Jlc2l6ZSh3aWR0aCkpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2V0IHRyYW5zZm9ybSBwcm9wZXJ0eSBiYXNlZCBvbiB0aGUgbmV3IHNjcm9sbCB2YWx1ZVxyXG4gICAqIEBwYXJhbSBzY3JvbGwgbmV3IGVsZW1lbnQgc2Nyb2xsIHZhbHVlXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBvbk1vdXNlU2Nyb2xsKHNjcm9sbDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICBpZiAoc2Nyb2xsICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgdGhpcy5zY3JvbGxUb3AgPSBzY3JvbGw7XHJcblxyXG4gICAgICBpZiAodGhpcy5pbWFnZS5jb21wbGV0ZSkge1xyXG4gICAgICAgIGNvbnN0IGltYWdlVG9wID0gdGhpcy5nZXRJbWFnZVRvcChzY3JvbGwsIHRoaXMucGFyYWxsYXhCb3VuZGFyaWVzKTtcclxuICAgICAgICB0aGlzLnNldEltYWdlVHJhbnNmb3JtKHRoaXMuaW1hZ2UsIHRoaXMuaW1hZ2VMZWZ0LCBpbWFnZVRvcCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJlc2V0IHBhcmFsbGF4IHByb3BlcnRpZXMgYWNjb3JkaW5nIHRvIG5ldyB3aW5kb3cgc2l6ZVxyXG4gICAqIEBwYXJhbSB3aWR0aCB3aW5kb3cgbmV3IHdpZHRoIHZhbHVlXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBvbldpbmRvd1Jlc2l6ZSh3aWR0aDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICBpZiAod2lkdGggIT09IHVuZGVmaW5lZCAmJiB0aGlzLmltYWdlLmNvbXBsZXRlKSB7XHJcbiAgICAgIHRoaXMuc2V0UGFyYWxsYXhQcm9wZXJ0aWVzKHRoaXMuc2Nyb2xsVG9wKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIExvYWQgcGFyYWxsYXggaW1hZ2UgZnJvbSBpbWFnZVVybFxyXG4gICAqIEBwYXJhbSBpbWFnZVVybCBpbWFnZSB1cmxcclxuICAgKi9cclxuICBwcml2YXRlIGxvYWRJbWFnZShpbWFnZVVybDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLmltYWdlID0gbmV3IEltYWdlKCk7XHJcbiAgICB0aGlzLmltYWdlLnNyYyA9IGltYWdlVXJsO1xyXG4gICAgdGhpcy5pbWFnZS5zZXRBdHRyaWJ1dGUoJ2NsYXNzJywgJ3BhcmFsbGF4LWltYWdlJyk7XHJcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuaW1hZ2UsICd2aXNpYmxpdHknLCAnaGlkZGVuJyk7XHJcbiAgICB0aGlzLmh0bWxFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5pbWFnZSk7XHJcblxyXG4gICAgdGhpcy5pbWFnZS5vbmxvYWQgPSAoKSA9PiB7XHJcbiAgICAgIHRoaXMuc2V0UGFyYWxsYXhQcm9wZXJ0aWVzKHRoaXMuc2Nyb2xsVG9wKTtcclxuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmltYWdlLCAndmlzaWJsaXR5JywgJ3Zpc2libGUnKTtcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZXQgcGFyYWxsYXggcHJvcGVydGllcyBhbmQgcG9zaXRpb25cclxuICAgKiBAcGFyYW0gc2Nyb2xsVG9wIHBhZ2UgY29udGFpbmVyIHBpeGVscyBmcm9tIHRoZSB0b3Agb2YgdGhlIHBhZ2UgdG8gdGhlIGN1cnJlbnQgdmlld1xyXG4gICAqL1xyXG4gIHByaXZhdGUgc2V0UGFyYWxsYXhQcm9wZXJ0aWVzKHNjcm9sbFRvcDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICBjb25zdCBjb250YWluZXJFbGVtZW50ID0gdGhpcy5odG1sRWxlbWVudC5uYXRpdmVFbGVtZW50O1xyXG4gICAgY29uc3QgY29udGFpbmVyUmVjdCA9IHRoaXMuaHRtbEVsZW1lbnQubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuICAgIGNvbnN0IGVsZW1lbnRUb3AgPSBjb250YWluZXJSZWN0LnRvcCArIHNjcm9sbFRvcDtcclxuICAgIHRoaXMuc2V0U3RhdGljUHJvcGVydGllcygpO1xyXG4gICAgdGhpcy5zZXRJbWFnZVNpemUoY29udGFpbmVyRWxlbWVudCwgdGhpcy5pbWFnZSwgdGhpcy5wYXJhbGxheFBlcmNlbnRhZ2UpO1xyXG4gICAgdGhpcy5wYXJhbGxheEJvdW5kYXJpZXMgPSB0aGlzLmdldFBhcmFsbGF4Qm91bmRhcmllcyhlbGVtZW50VG9wLCBjb250YWluZXJFbGVtZW50LmNsaWVudEhlaWdodCwgdGhpcy5wYXJhbGxheFBlcmNlbnRhZ2UpO1xyXG4gICAgdGhpcy5pbWFnZUxlZnQgPSB0aGlzLmdldEltYWdlTGVmdCh0aGlzLmh0bWxFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuY2xpZW50V2lkdGgsIHRoaXMuaW1hZ2Uud2lkdGgsIHRoaXMucG9zaXRpb25QZXJjZW50YWdlKTtcclxuICAgIGNvbnN0IGltYWdlVG9wID0gdGhpcy5nZXRJbWFnZVRvcChzY3JvbGxUb3AsIHRoaXMucGFyYWxsYXhCb3VuZGFyaWVzKTtcclxuICAgIHRoaXMuc2V0SW1hZ2VUcmFuc2Zvcm0odGhpcy5pbWFnZSwgdGhpcy5pbWFnZUxlZnQsIGltYWdlVG9wKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldCBkZWZhdWx0IHByb3BlcnRpZXMgZm9yIGNvbnRhaW5lciBhbmQgaW1hZ2VcclxuICAgKi9cclxuICBwcml2YXRlIHNldFN0YXRpY1Byb3BlcnRpZXMoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuaXNBbHJlYWR5UG9zaXRpb25lZCh0aGlzLmh0bWxFbGVtZW50Lm5hdGl2ZUVsZW1lbnQpKSB7XHJcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5odG1sRWxlbWVudC5uYXRpdmVFbGVtZW50LCAncG9zaXRpb24nLCAncmVsYXRpdmUnKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuaHRtbEVsZW1lbnQubmF0aXZlRWxlbWVudCwgJ292ZXJmbG93JywgdGhpcy52aXNpYmxlT3ZlcmZsb3cgPyAndmlzaWJsZScgOiAnaGlkZGVuJyk7XHJcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuaW1hZ2UsICd6LWluZGV4JywgdGhpcy5pbWFnZVpJbmRleCk7XHJcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuaW1hZ2UsICdwb3NpdGlvbicsICdhYnNvbHV0ZScpO1xyXG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmltYWdlLCAnbGVmdCcsICcwJyk7XHJcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuaW1hZ2UsICd0b3AnLCAnMCcpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2hlY2sgaWYgZWxlbWVudCBoYXMgcG9zaXRpb24gYWJzb2x1dGUgb3IgcmVsYXRpdmVcclxuICAgKiBAcGFyYW0gZWxlbWVudCBodG1sIGVsZW1lbnRcclxuICAgKi9cclxuICBwcml2YXRlIGlzQWxyZWFkeVBvc2l0aW9uZWQoZWxlbWVudDogRWxlbWVudCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIFsnYWJzb2x1dGUnLCAncmVsYXRpdmUnXS5pbmNsdWRlcyh3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KS5wb3NpdGlvbik7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZXQgZGVmYXVsdCBpbWFnZSBzaXplIHRoYXQgbWF0Y2ggcHJvcGVydGllc1xyXG4gICAqIEBwYXJhbSBjb250YWluZXIgbWFpbiBjb250YWluZXIgSFRNTEVsZW1lbnRcclxuICAgKiBAcGFyYW0gaW1hZ2UgbWFpbiBpbWFnZSBIVE1MRWxlbWVudFxyXG4gICAqIEBwYXJhbSBwYXJhbGxheFBlcmNlbnRhZ2UgcGFyYWxsYXggc2Nyb2xsIHBlcmNlbnRhZ2VcclxuICAgKi9cclxuICBwcml2YXRlIHNldEltYWdlU2l6ZShjb250YWluZXI6IEhUTUxFbGVtZW50LCBpbWFnZTogSFRNTEltYWdlRWxlbWVudCwgcGFyYWxsYXhQZXJjZW50YWdlOiBudW1iZXIpOiB2b2lkIHtcclxuICAgIGNvbnN0IG1pbkhlaWdodCA9IChjb250YWluZXIuY2xpZW50SGVpZ2h0ICogKDEwMCArIHBhcmFsbGF4UGVyY2VudGFnZSkpIC8gMTAwO1xyXG4gICAgY29uc3QgcmF0aW8gPSBpbWFnZS5uYXR1cmFsSGVpZ2h0IC8gaW1hZ2UubmF0dXJhbFdpZHRoO1xyXG4gICAgY29uc3QgbWluUmF0aW8gPSBtaW5IZWlnaHQgLyBjb250YWluZXIuY2xpZW50V2lkdGg7XHJcblxyXG4gICAgaWYgKHJhdGlvID4gbWluUmF0aW8pIHtcclxuICAgICAgdGhpcy5pbWFnZS5zZXRBdHRyaWJ1dGUoJ3dpZHRoJywgYCR7Y29udGFpbmVyLmNsaWVudFdpZHRofXB4YCk7XHJcbiAgICAgIHRoaXMuaW1hZ2Uuc2V0QXR0cmlidXRlKCdoZWlnaHQnLCBgYXV0b2ApO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5pbWFnZS5zZXRBdHRyaWJ1dGUoJ2hlaWdodCcsIGAke21pbkhlaWdodH1weGApO1xyXG4gICAgICB0aGlzLmltYWdlLnNldEF0dHJpYnV0ZSgnd2lkdGgnLCBgYXV0b2ApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IHBhcmFsbGF4IHNjcm9sbGluZyB2aXNpYmxlIGFyZWEuXHJcbiAgICogVXNlIHRoaXMgd2hlbiBjb250YWluZXIgb3ZlcmZsb3cgaXMgaGlkZGVuIGZvciBiZXR0ZXIgcGFnZSBwZXJmb3JtYW5jZVxyXG4gICAqIEBwYXJhbSBlbGVtZW50VG9wIG1haW4gY29udGFpbmVyIHBvc2l0aW9uIGZyb20gdGhlIHRvcCBvZiB0aGUgZG9jdW1lbnQgaW4gcGl4ZWxzXHJcbiAgICogQHBhcmFtIGVsZW1lbnRIZWlnaHQgbWFpbiBjb250YWluZXIgaGVpZ2h0IGluIHBpeGVsc1xyXG4gICAqIEBwYXJhbSBwYXJhbGxheFBlcmNlbnRhZ2UgcGFyYWxsYXggc2Nyb2xsIHBlcmNlbnRhZ2VcclxuICAgKi9cclxuICBwcml2YXRlIGdldFBhcmFsbGF4Qm91bmRhcmllcyhlbGVtZW50VG9wOiBudW1iZXIsIGVsZW1lbnRIZWlnaHQ6IG51bWJlciwgcGFyYWxsYXhQZXJjZW50YWdlOiBudW1iZXIpOiBSZnhQYXJhbGxheEJvdW5kYXJpZXNNb2RlbCB7XHJcbiAgICBjb25zdCB1c2FibGVQaXhlbHMgPSBlbGVtZW50SGVpZ2h0IC8gMTAwICogcGFyYWxsYXhQZXJjZW50YWdlO1xyXG4gICAgY29uc3Qgc3RhcnRQb2ludCA9IGVsZW1lbnRUb3AgLSB1c2FibGVQaXhlbHMgLSB3aW5kb3cuaW5uZXJIZWlnaHQ7XHJcbiAgICBjb25zdCBlbmRQb2ludCA9IGVsZW1lbnRUb3AgKyBlbGVtZW50SGVpZ2h0ICsgdXNhYmxlUGl4ZWxzO1xyXG4gICAgY29uc3QgdG90YWxQaXhlbHMgPSBlbmRQb2ludCAtIHN0YXJ0UG9pbnQ7XHJcbiAgICByZXR1cm4gbmV3IFJmeFBhcmFsbGF4Qm91bmRhcmllc01vZGVsKHN0YXJ0UG9pbnQsIGVuZFBvaW50LCB0b3RhbFBpeGVscywgdXNhYmxlUGl4ZWxzKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldCBpbWFnZSB0cmFuc2Zvcm0gcHJvcGVydHlcclxuICAgKiBAcGFyYW0gaW1hZ2UgaW1hZ2UgSFRNTEltYWdlRWxlbWVudCBlbGVtZW50XHJcbiAgICogQHBhcmFtIGltYWdlTGVmdCBpbWFnZSBsZWZ0IHNoaWZ0IGluIHBpeGVsc1xyXG4gICAqIEBwYXJhbSBpbWFnZVRvcCBpbWFnZSB0b3Agc2hpZnQgaW4gcGl4ZWxzXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBzZXRJbWFnZVRyYW5zZm9ybShpbWFnZTogSFRNTEltYWdlRWxlbWVudCwgaW1hZ2VMZWZ0OiBudW1iZXIsIGltYWdlVG9wOiBudW1iZXIpOiB2b2lkIHtcclxuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoaW1hZ2UsICd0cmFuc2Zvcm0nLCBgdHJhbnNsYXRlM2QoJHtpbWFnZUxlZnR9cHgsICR7aW1hZ2VUb3B9cHgsIDApYCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXQgaW1hZ2UgbGVmdCBwcm9wZXJ0eSBiYXNlZCBvbiBwb3NpdGlvblBlcmNlbnRhZ2UgaW4gcGl4ZWxzXHJcbiAgICogQHBhcmFtIGNvbnRhaW5lcldpZHRoIG1haW4gY29udGFpbmVyIHdpZHRoIGluIHBpeGVsc1xyXG4gICAqIEBwYXJhbSBpbWFnZVdpZHRoIGltYWdlIHdpZHRoIGluIHBpeGVsc1xyXG4gICAqIEBwYXJhbSBwb3NpdGlvblBlcmNlbnRhZ2UgaW1hZ2UgcG9zaXRpb24gcGVyY2VudGFnZVxyXG4gICAqL1xyXG4gIHByaXZhdGUgZ2V0SW1hZ2VMZWZ0KGNvbnRhaW5lcldpZHRoOiBudW1iZXIsIGltYWdlV2lkdGg6IG51bWJlciwgcG9zaXRpb25QZXJjZW50YWdlOiBudW1iZXIpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIChjb250YWluZXJXaWR0aCAtIGltYWdlV2lkdGgpIC8gMTAwICogcG9zaXRpb25QZXJjZW50YWdlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IGltYWdlIHRvcCBzaGlmdCBpbiBwaXhlbHNcclxuICAgKiBAcGFyYW0gc2Nyb2xsVG9wIHBpeGVscyBmcm9tIHRoZSB0b3Agb2YgdGhlIHBhZ2UgdG8gdGhlIGN1cnJlbnQgdmlld1xyXG4gICAqIEBwYXJhbSBib3VuZGFyaWVzIHBhcmFsbGF4IHBvc2l0aW9uIHBvaW50cyBpbnNpZGUgdGhlIHBhZ2VcclxuICAgKi9cclxuICBwcml2YXRlIGdldEltYWdlVG9wKHNjcm9sbFRvcDogbnVtYmVyLCBib3VuZGFyaWVzOiBSZnhQYXJhbGxheEJvdW5kYXJpZXNNb2RlbCk6IG51bWJlciB7XHJcbiAgICBjb25zdCBwYXJhbGxheEFyZWE6IG51bWJlciA9IE1hdGgubWF4KDAsIE1hdGgubWluKHNjcm9sbFRvcCAtIGJvdW5kYXJpZXMuc3RhcnRQb2ludCwgYm91bmRhcmllcy50b3RhbFBpeGVscykpO1xyXG4gICAgY29uc3QgcGFyYWxsYXhBcmVhUGVyY2VudGFnZTogbnVtYmVyID0gMTAwIC8gYm91bmRhcmllcy50b3RhbFBpeGVscyAqIHBhcmFsbGF4QXJlYTtcclxuICAgIHJldHVybiAtYm91bmRhcmllcy51c2FibGVQaXhlbHMgKiAoMSAtIHBhcmFsbGF4QXJlYVBlcmNlbnRhZ2UgLyAxMDApO1xyXG4gIH1cclxufVxyXG4iXX0=
import { Injectable, RendererFactory2 } from '@angular/core';
import { BehaviorSubject } from 'rxjs';
import ResizeObserver from 'resize-observer-polyfill';
import * as i0 from "@angular/core";

@@ -12,18 +13,34 @@ export class RfxParallaxService {

ngOnDestroy() {
if (this.scrollEvent) {
this.scrollEvent();
if (this.elementScrollEvent) {
this.elementScrollEvent();
}
if (this.resizeEvent) {
this.resizeEvent();
if (this.windowResizeEvent) {
this.windowResizeEvent();
}
if (this.elementHeightEvent) {
this.elementHeightEvent.disconnect();
}
}
/**
* Init listeners
* Start element scroll event, window resize event and element resize event listeners
* @param scrollElement main element with scroll property
*/
initListeners(element) {
const scrollElement = element !== null && element !== void 0 ? element : document;
this.scrollEvent = this.renderer.listen(scrollElement, 'scroll', (event) => this.onMouseScroll(event));
this.resizeEvent = this.renderer.listen(window, 'resize', (event) => this.onWindowResize(event));
initListeners(scrollElement) {
const element = scrollElement !== null && scrollElement !== void 0 ? scrollElement : document.body;
this.elementScrollEvent = this.renderer.listen(element, 'scroll', (event) => this.onMouseScroll(event));
this.windowResizeEvent = this.renderer.listen(window, 'resize', (event) => this.onWindowResize(event));
this.setElementResizeEvent(element);
}
/**
* Observe scrollElement 'scrollHeight' property change
* @param scrollElement main element with scroll property
*/
setElementResizeEvent(scrollElement) {
this.elementHeightEvent = new ResizeObserver(() => this.onWindowResize({ target: { innerWidth: scrollElement.clientWidth } }));
const elementChildrenList = Array.from(scrollElement.children);
for (const children of elementChildrenList) {
this.elementHeightEvent.observe(children);
}
}
/**
* Mouse scroll event

@@ -62,2 +79,2 @@ */

];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmZ4LXBhcmFsbGF4LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiRDovUmVwb3MvUkZYTGlicmFyeS9wcm9qZWN0cy9yZngtcGFyYWxsYXgvc3JjLyIsInNvdXJjZXMiOlsibGliL3JmeC1wYXJhbGxheC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQXdCLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25GLE9BQU8sRUFBRSxlQUFlLEVBQWMsTUFBTSxNQUFNLENBQUM7O0FBS25ELE1BQU0sT0FBTyxrQkFBa0I7SUFTN0IsWUFDVSxlQUFpQztRQUFqQyxvQkFBZSxHQUFmLGVBQWUsQ0FBa0I7UUFFekMsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLGVBQWUsQ0FBUyxTQUFTLENBQUMsQ0FBQztRQUM1RCxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksZUFBZSxDQUFTLFNBQVMsQ0FBQyxDQUFDO1FBQzVELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFFTSxXQUFXO1FBQ2hCLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNwQixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDcEI7UUFFRCxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDcEIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQ3BCO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0ksYUFBYSxDQUFDLE9BQXFCO1FBQ3hDLE1BQU0sYUFBYSxHQUFHLE9BQU8sYUFBUCxPQUFPLGNBQVAsT0FBTyxHQUFJLFFBQVEsQ0FBQztRQUMxQyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLGFBQWEsRUFBRSxRQUFRLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUN2RyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNuRyxDQUFDO0lBRUQ7O09BRUc7SUFDSyxhQUFhLENBQUMsS0FBa0I7UUFDdEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxjQUFjO1FBQ25CLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUMzQyxDQUFDO0lBRUQ7O09BRUc7SUFDSyxjQUFjLENBQUMsS0FBa0I7UUFDdkMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxlQUFlO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUMzQyxDQUFDOzs7O1lBakVGLFVBQVUsU0FBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQjs7O1lBTDBDLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIE9uRGVzdHJveSwgUmVuZGVyZXIyLCBSZW5kZXJlckZhY3RvcnkyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgUmZ4UGFyYWxsYXhTZXJ2aWNlIGltcGxlbWVudHMgT25EZXN0cm95IHtcclxuICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjI7XHJcblxyXG4gIHByaXZhdGUgc3ViamVjdFNjcm9sbDogQmVoYXZpb3JTdWJqZWN0PG51bWJlcj47XHJcbiAgcHJpdmF0ZSBzdWJqZWN0UmVzaXplOiBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPjtcclxuXHJcbiAgcHJpdmF0ZSBzY3JvbGxFdmVudDogKCkgPT4gdm9pZDtcclxuICBwcml2YXRlIHJlc2l6ZUV2ZW50OiAoKSA9PiB2b2lkO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcmVuZGVyZXJGYWN0b3J5OiBSZW5kZXJlckZhY3RvcnkyXHJcbiAgKSB7XHJcbiAgICB0aGlzLnN1YmplY3RTY3JvbGwgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4odW5kZWZpbmVkKTtcclxuICAgIHRoaXMuc3ViamVjdFJlc2l6ZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPih1bmRlZmluZWQpO1xyXG4gICAgdGhpcy5yZW5kZXJlciA9IHRoaXMucmVuZGVyZXJGYWN0b3J5LmNyZWF0ZVJlbmRlcmVyKG51bGwsIG51bGwpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuc2Nyb2xsRXZlbnQpIHtcclxuICAgICAgdGhpcy5zY3JvbGxFdmVudCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLnJlc2l6ZUV2ZW50KSB7XHJcbiAgICAgIHRoaXMucmVzaXplRXZlbnQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEluaXQgbGlzdGVuZXJzXHJcbiAgICovXHJcbiAgcHVibGljIGluaXRMaXN0ZW5lcnMoZWxlbWVudD86IEhUTUxFbGVtZW50KTogdm9pZCB7XHJcbiAgICBjb25zdCBzY3JvbGxFbGVtZW50ID0gZWxlbWVudCA/PyBkb2N1bWVudDtcclxuICAgIHRoaXMuc2Nyb2xsRXZlbnQgPSB0aGlzLnJlbmRlcmVyLmxpc3RlbihzY3JvbGxFbGVtZW50LCAnc2Nyb2xsJywgKGV2ZW50KSA9PiB0aGlzLm9uTW91c2VTY3JvbGwoZXZlbnQpKTtcclxuICAgIHRoaXMucmVzaXplRXZlbnQgPSB0aGlzLnJlbmRlcmVyLmxpc3Rlbih3aW5kb3csICdyZXNpemUnLCAoZXZlbnQpID0+IHRoaXMub25XaW5kb3dSZXNpemUoZXZlbnQpKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1vdXNlIHNjcm9sbCBldmVudFxyXG4gICAqL1xyXG4gIHByaXZhdGUgb25Nb3VzZVNjcm9sbChldmVudDogRXZlbnQgfCBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMuc3ViamVjdFNjcm9sbC5uZXh0KGV2ZW50LnRhcmdldC5zY3JvbGxUb3ApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTW91c2Ugc2Nyb2xsIGV2ZW50IG9ic2VydmFibGVcclxuICAgKi9cclxuICBwdWJsaWMgZ2V0TW91c2VTY3JvbGwoKTogT2JzZXJ2YWJsZTxudW1iZXI+IHtcclxuICAgIHJldHVybiB0aGlzLnN1YmplY3RTY3JvbGwuYXNPYnNlcnZhYmxlKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBXaW5kb3cgcmVzaXplIGV2ZW50XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBvbldpbmRvd1Jlc2l6ZShldmVudDogRXZlbnQgfCBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMuc3ViamVjdFJlc2l6ZS5uZXh0KGV2ZW50LnRhcmdldC5pbm5lcldpZHRoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFdpbmRvdyByZXNpemUgZXZlbnQgb2JzZXJ2YWJsZVxyXG4gICAqL1xyXG4gIHB1YmxpYyBnZXRXaW5kb3dSZXNpemUoKTogT2JzZXJ2YWJsZTxudW1iZXI+IHtcclxuICAgIHJldHVybiB0aGlzLnN1YmplY3RSZXNpemUuYXNPYnNlcnZhYmxlKCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmZ4LXBhcmFsbGF4LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiRDovUmVwb3MvUkZYTGlicmFyeS9wcm9qZWN0cy9yZngtcGFyYWxsYXgvc3JjLyIsInNvdXJjZXMiOlsibGliL3JmeC1wYXJhbGxheC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQXdCLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25GLE9BQU8sRUFBRSxlQUFlLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDbkQsT0FBTyxjQUFjLE1BQU0sMEJBQTBCLENBQUM7O0FBS3RELE1BQU0sT0FBTyxrQkFBa0I7SUFVN0IsWUFDVSxlQUFpQztRQUFqQyxvQkFBZSxHQUFmLGVBQWUsQ0FBa0I7UUFFekMsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLGVBQWUsQ0FBUyxTQUFTLENBQUMsQ0FBQztRQUM1RCxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksZUFBZSxDQUFTLFNBQVMsQ0FBQyxDQUFDO1FBQzVELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFFTSxXQUFXO1FBQ2hCLElBQUksSUFBSSxDQUFDLGtCQUFrQixFQUFFO1lBQzNCLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1NBQzNCO1FBRUQsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUU7WUFDMUIsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7U0FDMUI7UUFFRCxJQUFJLElBQUksQ0FBQyxrQkFBa0IsRUFBRTtZQUMzQixJQUFJLENBQUMsa0JBQWtCLENBQUMsVUFBVSxFQUFFLENBQUM7U0FDdEM7SUFDSCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksYUFBYSxDQUFDLGFBQTJCO1FBQzlDLE1BQU0sT0FBTyxHQUFnQixhQUFhLGFBQWIsYUFBYSxjQUFiLGFBQWEsR0FBSSxRQUFRLENBQUMsSUFBSSxDQUFDO1FBQzVELElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDeEcsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUN2RyxJQUFJLENBQUMscUJBQXFCLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVEOzs7T0FHRztJQUNLLHFCQUFxQixDQUFDLGFBQTBCO1FBQ3RELElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLGNBQWMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUNwRSxFQUFFLE1BQU0sRUFBRSxFQUFFLFVBQVUsRUFBRSxhQUFhLENBQUMsV0FBVyxFQUFFLEVBQUMsQ0FDckQsQ0FBQyxDQUFDO1FBQ0gsTUFBTSxtQkFBbUIsR0FBYyxLQUFLLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMxRSxLQUFLLE1BQU0sUUFBUSxJQUFJLG1CQUFtQixFQUFFO1lBQzFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDM0M7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSyxhQUFhLENBQUMsS0FBa0I7UUFDdEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxjQUFjO1FBQ25CLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUMzQyxDQUFDO0lBRUQ7O09BRUc7SUFDSyxjQUFjLENBQUMsS0FBa0I7UUFDdkMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxlQUFlO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUMzQyxDQUFDOzs7O1lBdEZGLFVBQVUsU0FBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQjs7O1lBTjBDLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIE9uRGVzdHJveSwgUmVuZGVyZXIyLCBSZW5kZXJlckZhY3RvcnkyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgUmVzaXplT2JzZXJ2ZXIgZnJvbSAncmVzaXplLW9ic2VydmVyLXBvbHlmaWxsJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFJmeFBhcmFsbGF4U2VydmljZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XHJcbiAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyO1xyXG5cclxuICBwcml2YXRlIHN1YmplY3RTY3JvbGw6IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+O1xyXG4gIHByaXZhdGUgc3ViamVjdFJlc2l6ZTogQmVoYXZpb3JTdWJqZWN0PG51bWJlcj47XHJcblxyXG4gIHByaXZhdGUgZWxlbWVudEhlaWdodEV2ZW50OiBSZXNpemVPYnNlcnZlcjtcclxuICBwcml2YXRlIGVsZW1lbnRTY3JvbGxFdmVudDogKCkgPT4gdm9pZDtcclxuICBwcml2YXRlIHdpbmRvd1Jlc2l6ZUV2ZW50OiAoKSA9PiB2b2lkO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcmVuZGVyZXJGYWN0b3J5OiBSZW5kZXJlckZhY3RvcnkyXHJcbiAgKSB7XHJcbiAgICB0aGlzLnN1YmplY3RTY3JvbGwgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4odW5kZWZpbmVkKTtcclxuICAgIHRoaXMuc3ViamVjdFJlc2l6ZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPih1bmRlZmluZWQpO1xyXG4gICAgdGhpcy5yZW5kZXJlciA9IHRoaXMucmVuZGVyZXJGYWN0b3J5LmNyZWF0ZVJlbmRlcmVyKG51bGwsIG51bGwpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuZWxlbWVudFNjcm9sbEV2ZW50KSB7XHJcbiAgICAgIHRoaXMuZWxlbWVudFNjcm9sbEV2ZW50KCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMud2luZG93UmVzaXplRXZlbnQpIHtcclxuICAgICAgdGhpcy53aW5kb3dSZXNpemVFdmVudCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmVsZW1lbnRIZWlnaHRFdmVudCkge1xyXG4gICAgICB0aGlzLmVsZW1lbnRIZWlnaHRFdmVudC5kaXNjb25uZWN0KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTdGFydCBlbGVtZW50IHNjcm9sbCBldmVudCwgd2luZG93IHJlc2l6ZSBldmVudCBhbmQgZWxlbWVudCByZXNpemUgZXZlbnQgbGlzdGVuZXJzXHJcbiAgICogQHBhcmFtIHNjcm9sbEVsZW1lbnQgbWFpbiBlbGVtZW50IHdpdGggc2Nyb2xsIHByb3BlcnR5XHJcbiAgICovXHJcbiAgcHVibGljIGluaXRMaXN0ZW5lcnMoc2Nyb2xsRWxlbWVudD86IEhUTUxFbGVtZW50KTogdm9pZCB7XHJcbiAgICBjb25zdCBlbGVtZW50OiBIVE1MRWxlbWVudCA9IHNjcm9sbEVsZW1lbnQgPz8gZG9jdW1lbnQuYm9keTtcclxuICAgIHRoaXMuZWxlbWVudFNjcm9sbEV2ZW50ID0gdGhpcy5yZW5kZXJlci5saXN0ZW4oZWxlbWVudCwgJ3Njcm9sbCcsIChldmVudCkgPT4gdGhpcy5vbk1vdXNlU2Nyb2xsKGV2ZW50KSk7XHJcbiAgICB0aGlzLndpbmRvd1Jlc2l6ZUV2ZW50ID0gdGhpcy5yZW5kZXJlci5saXN0ZW4od2luZG93LCAncmVzaXplJywgKGV2ZW50KSA9PiB0aGlzLm9uV2luZG93UmVzaXplKGV2ZW50KSk7XHJcbiAgICB0aGlzLnNldEVsZW1lbnRSZXNpemVFdmVudChlbGVtZW50KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE9ic2VydmUgc2Nyb2xsRWxlbWVudCAnc2Nyb2xsSGVpZ2h0JyBwcm9wZXJ0eSBjaGFuZ2VcclxuICAgKiBAcGFyYW0gc2Nyb2xsRWxlbWVudCBtYWluIGVsZW1lbnQgd2l0aCBzY3JvbGwgcHJvcGVydHlcclxuICAgKi9cclxuICBwcml2YXRlIHNldEVsZW1lbnRSZXNpemVFdmVudChzY3JvbGxFbGVtZW50OiBIVE1MRWxlbWVudCk6IHZvaWQge1xyXG4gICAgdGhpcy5lbGVtZW50SGVpZ2h0RXZlbnQgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoKCkgPT4gdGhpcy5vbldpbmRvd1Jlc2l6ZShcclxuICAgICAgeyB0YXJnZXQ6IHsgaW5uZXJXaWR0aDogc2Nyb2xsRWxlbWVudC5jbGllbnRXaWR0aCB9fVxyXG4gICAgKSk7XHJcbiAgICBjb25zdCBlbGVtZW50Q2hpbGRyZW5MaXN0OiBFbGVtZW50W10gPSBBcnJheS5mcm9tKHNjcm9sbEVsZW1lbnQuY2hpbGRyZW4pO1xyXG4gICAgZm9yIChjb25zdCBjaGlsZHJlbiBvZiBlbGVtZW50Q2hpbGRyZW5MaXN0KSB7XHJcbiAgICAgIHRoaXMuZWxlbWVudEhlaWdodEV2ZW50Lm9ic2VydmUoY2hpbGRyZW4pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTW91c2Ugc2Nyb2xsIGV2ZW50XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBvbk1vdXNlU2Nyb2xsKGV2ZW50OiBFdmVudCB8IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5zdWJqZWN0U2Nyb2xsLm5leHQoZXZlbnQudGFyZ2V0LnNjcm9sbFRvcCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNb3VzZSBzY3JvbGwgZXZlbnQgb2JzZXJ2YWJsZVxyXG4gICAqL1xyXG4gIHB1YmxpYyBnZXRNb3VzZVNjcm9sbCgpOiBPYnNlcnZhYmxlPG51bWJlcj4ge1xyXG4gICAgcmV0dXJuIHRoaXMuc3ViamVjdFNjcm9sbC5hc09ic2VydmFibGUoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFdpbmRvdyByZXNpemUgZXZlbnRcclxuICAgKi9cclxuICBwcml2YXRlIG9uV2luZG93UmVzaXplKGV2ZW50OiBFdmVudCB8IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5zdWJqZWN0UmVzaXplLm5leHQoZXZlbnQudGFyZ2V0LmlubmVyV2lkdGgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogV2luZG93IHJlc2l6ZSBldmVudCBvYnNlcnZhYmxlXHJcbiAgICovXHJcbiAgcHVibGljIGdldFdpbmRvd1Jlc2l6ZSgpOiBPYnNlcnZhYmxlPG51bWJlcj4ge1xyXG4gICAgcmV0dXJuIHRoaXMuc3ViamVjdFJlc2l6ZS5hc09ic2VydmFibGUoKTtcclxuICB9XHJcbn1cclxuIl19
import { ɵɵdefineInjectable, ɵɵinject, RendererFactory2, Injectable, Directive, ElementRef, Renderer2, Input, NgModule } from '@angular/core';
import { BehaviorSubject } from 'rxjs';
import ResizeObserver from 'resize-observer-polyfill';

@@ -12,18 +13,34 @@ class RfxParallaxService {

ngOnDestroy() {
if (this.scrollEvent) {
this.scrollEvent();
if (this.elementScrollEvent) {
this.elementScrollEvent();
}
if (this.resizeEvent) {
this.resizeEvent();
if (this.windowResizeEvent) {
this.windowResizeEvent();
}
if (this.elementHeightEvent) {
this.elementHeightEvent.disconnect();
}
}
/**
* Init listeners
* Start element scroll event, window resize event and element resize event listeners
* @param scrollElement main element with scroll property
*/
initListeners(element) {
const scrollElement = element !== null && element !== void 0 ? element : document;
this.scrollEvent = this.renderer.listen(scrollElement, 'scroll', (event) => this.onMouseScroll(event));
this.resizeEvent = this.renderer.listen(window, 'resize', (event) => this.onWindowResize(event));
initListeners(scrollElement) {
const element = scrollElement !== null && scrollElement !== void 0 ? scrollElement : document.body;
this.elementScrollEvent = this.renderer.listen(element, 'scroll', (event) => this.onMouseScroll(event));
this.windowResizeEvent = this.renderer.listen(window, 'resize', (event) => this.onWindowResize(event));
this.setElementResizeEvent(element);
}
/**
* Observe scrollElement 'scrollHeight' property change
* @param scrollElement main element with scroll property
*/
setElementResizeEvent(scrollElement) {
this.elementHeightEvent = new ResizeObserver(() => this.onWindowResize({ target: { innerWidth: scrollElement.clientWidth } }));
const elementChildrenList = Array.from(scrollElement.children);
for (const children of elementChildrenList) {
this.elementHeightEvent.observe(children);
}
}
/**
* Mouse scroll event

@@ -116,5 +133,8 @@ */

onMouseScroll(scroll) {
if (scroll !== undefined && this.image) {
const imageTop = this.getImageTop(scroll, this.parallaxBoundaries);
this.setImageTransform(this.image, this.imageLeft, imageTop);
if (scroll !== undefined) {
this.scrollTop = scroll;
if (this.image.complete) {
const imageTop = this.getImageTop(scroll, this.parallaxBoundaries);
this.setImageTransform(this.image, this.imageLeft, imageTop);
}
}

@@ -127,3 +147,3 @@ }

onWindowResize(width) {
if (width !== undefined && this.image) {
if (width !== undefined && this.image.complete) {
this.setParallaxProperties(this.scrollTop);

@@ -130,0 +150,0 @@ }

@@ -8,11 +8,18 @@ import { OnDestroy, RendererFactory2 } from '@angular/core';

private subjectResize;
private scrollEvent;
private resizeEvent;
private elementHeightEvent;
private elementScrollEvent;
private windowResizeEvent;
constructor(rendererFactory: RendererFactory2);
ngOnDestroy(): void;
/**
* Init listeners
* Start element scroll event, window resize event and element resize event listeners
* @param scrollElement main element with scroll property
*/
initListeners(element?: HTMLElement): void;
initListeners(scrollElement?: HTMLElement): void;
/**
* Observe scrollElement 'scrollHeight' property change
* @param scrollElement main element with scroll property
*/
private setElementResizeEvent;
/**
* Mouse scroll event

@@ -19,0 +26,0 @@ */

{
"name": "rfx-parallax",
"version": "2.1.0",
"version": "2.1.1",
"description": "RfxParallax - parallax made easy",

@@ -5,0 +5,0 @@ "author": "RedFoxxo",

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc