@greg-md/ng-facebook
Version:
Using Facebook SDK with Angular.
154 lines (153 loc) • 10.1 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
*/
import { Directive, Input, ElementRef, Renderer2, InjectionToken, Inject, Optional, PLATFORM_ID } from '@angular/core';
import { isPlatformBrowser } from '@angular/common';
import { inViewport } from './dom';
import { FacebookService } from './facebook.service';
export var /** @type {?} */ FB_PARSE_LAZY_LOAD = new InjectionToken('fb_parse_lazy_load');
var FacebookParseDirective = /** @class */ (function () {
function FacebookParseDirective(elementRef, facebook, renderer, platformId, threshold) {
this.elementRef = elementRef;
this.facebook = facebook;
this.renderer = renderer;
this.platformId = platformId;
this.threshold = threshold;
}
Object.defineProperty(FacebookParseDirective.prototype, "lazyLoad", {
set: /**
* @param {?} threshold
* @return {?}
*/
function (threshold) {
this.threshold = threshold;
},
enumerable: true,
configurable: true
});
/**
* @return {?}
*/
FacebookParseDirective.prototype.ngAfterViewInit = /**
* @return {?}
*/
function () {
if (this.threshold === null) {
this.load();
}
else {
this.initListeners();
this.tryLoading();
}
};
/**
* @return {?}
*/
FacebookParseDirective.prototype.ngOnDestroy = /**
* @return {?}
*/
function () {
this.unloadListeners();
};
/**
* @return {?}
*/
FacebookParseDirective.prototype.initListeners = /**
* @return {?}
*/
function () {
var _this = this;
this.scrollUnload = this.renderer.listen('window', 'scroll', function () {
_this.tryLoading();
});
this.resizeUnload = this.renderer.listen('window', 'resize', function () {
_this.tryLoading();
});
};
/**
* @return {?}
*/
FacebookParseDirective.prototype.tryLoading = /**
* @return {?}
*/
function () {
if (isPlatformBrowser(this.platformId) && inViewport(this.elementRef.nativeElement, {
threshold: this.threshold,
container: this.container
})) {
this.load();
this.unloadListeners();
}
};
/**
* @return {?}
*/
FacebookParseDirective.prototype.load = /**
* @return {?}
*/
function () {
this.facebook.parse(this.elementRef.nativeElement).subscribe();
};
/**
* @return {?}
*/
FacebookParseDirective.prototype.unloadListeners = /**
* @return {?}
*/
function () {
if (this.scrollUnload) {
this.scrollUnload();
}
if (this.resizeUnload) {
this.resizeUnload();
}
};
FacebookParseDirective.decorators = [
{ type: Directive, args: [{
selector: '[fbParse]',
},] },
];
/** @nocollapse */
FacebookParseDirective.ctorParameters = function () { return [
{ type: ElementRef, },
{ type: FacebookService, },
{ type: Renderer2, },
{ type: Object, decorators: [{ type: Inject, args: [PLATFORM_ID,] },] },
{ type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [FB_PARSE_LAZY_LOAD,] },] },
]; };
FacebookParseDirective.propDecorators = {
"lazyLoad": [{ type: Input },],
"container": [{ type: Input },],
};
return FacebookParseDirective;
}());
export { FacebookParseDirective };
function FacebookParseDirective_tsickle_Closure_declarations() {
/** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */
FacebookParseDirective.decorators;
/**
* @nocollapse
* @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>}
*/
FacebookParseDirective.ctorParameters;
/** @type {!Object<string,!Array<{type: !Function, args: (undefined|!Array<?>)}>>} */
FacebookParseDirective.propDecorators;
/** @type {?} */
FacebookParseDirective.prototype.container;
/** @type {?} */
FacebookParseDirective.prototype.scrollUnload;
/** @type {?} */
FacebookParseDirective.prototype.resizeUnload;
/** @type {?} */
FacebookParseDirective.prototype.elementRef;
/** @type {?} */
FacebookParseDirective.prototype.facebook;
/** @type {?} */
FacebookParseDirective.prototype.renderer;
/** @type {?} */
FacebookParseDirective.prototype.platformId;
/** @type {?} */
FacebookParseDirective.prototype.threshold;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2UuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGdyZWctbWQvbmctZmFjZWJvb2svIiwic291cmNlcyI6WyJsaWIvcGFyc2UuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQWlCLFNBQVMsRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFDeEYsV0FBVyxFQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXBELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFFbkMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRXJELE1BQU0sQ0FBQyxxQkFBTSxrQkFBa0IsR0FBRyxJQUFJLGNBQWMsQ0FBUyxvQkFBb0IsQ0FBQyxDQUFDOztJQWlCakYsZ0NBQ1UsWUFDQSxVQUNBLFVBQ3FCLFlBQ21CO1FBSnhDLGVBQVUsR0FBVixVQUFVO1FBQ1YsYUFBUSxHQUFSLFFBQVE7UUFDUixhQUFRLEdBQVIsUUFBUTtRQUNhLGVBQVUsR0FBVixVQUFVO1FBQ1MsY0FBUyxHQUFULFNBQVM7S0FFMUQ7MEJBakJHLDRDQUFROzs7OztrQkFBQyxTQUFpQjtZQUM1QixJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQzs7Ozs7Ozs7SUFrQjdCLGdEQUFlOzs7SUFBZjtRQUNFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQztZQUM1QixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7U0FDYjtRQUFDLElBQUksQ0FBQyxDQUFDO1lBQ04sSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBRXJCLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztTQUNuQjtLQUNGOzs7O0lBRUQsNENBQVc7OztJQUFYO1FBQ0UsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO0tBQ3hCOzs7O0lBRUQsOENBQWE7OztJQUFiO1FBQUEsaUJBUUM7UUFQQyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUU7WUFDM0QsS0FBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1NBQ25CLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRTtZQUMzRCxLQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7U0FDbkIsQ0FBQyxDQUFDO0tBQ0o7Ozs7SUFFRCwyQ0FBVTs7O0lBQVY7UUFDRSxFQUFFLENBQUMsQ0FDRCxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxFQUFFO1lBQzlFLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUztZQUN6QixTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVM7U0FDMUIsQ0FDSCxDQUFDLENBQUMsQ0FBQztZQUNELElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUVaLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztTQUN4QjtLQUNGOzs7O0lBRUQscUNBQUk7OztJQUFKO1FBQ0UsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztLQUNoRTs7OztJQUVELGdEQUFlOzs7SUFBZjtRQUNFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO1lBQ3RCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztTQUNyQjtRQUVELEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO1lBQ3RCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztTQUNyQjtLQUNGOztnQkF6RUYsU0FBUyxTQUFDO29CQUNULFFBQVEsRUFBRSxXQUFXO2lCQUN0Qjs7OztnQkFibUIsVUFBVTtnQkFPckIsZUFBZTtnQkFQdUIsU0FBUzs2Q0E4Qm5ELE1BQU0sU0FBQyxXQUFXO2dEQUNsQixRQUFRLFlBQUksTUFBTSxTQUFDLGtCQUFrQjs7OzZCQWhCdkMsS0FBSzs4QkFLTCxLQUFLOztpQ0FyQlI7O1NBZWEsc0JBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRGlyZWN0aXZlLCBJbnB1dCwgRWxlbWVudFJlZiwgQWZ0ZXJWaWV3SW5pdCwgUmVuZGVyZXIyLCBJbmplY3Rpb25Ub2tlbiwgSW5qZWN0LCBPcHRpb25hbCxcbiAgUExBVEZPUk1fSUQsIE9uRGVzdHJveVxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuaW1wb3J0IHsgaW5WaWV3cG9ydCB9IGZyb20gJy4vZG9tJztcblxuaW1wb3J0IHsgRmFjZWJvb2tTZXJ2aWNlIH0gZnJvbSAnLi9mYWNlYm9vay5zZXJ2aWNlJztcblxuZXhwb3J0IGNvbnN0IEZCX1BBUlNFX0xBWllfTE9BRCA9IG5ldyBJbmplY3Rpb25Ub2tlbjxzdHJpbmc+KCdmYl9wYXJzZV9sYXp5X2xvYWQnKTtcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2ZiUGFyc2VdJyxcbn0pXG5leHBvcnQgY2xhc3MgRmFjZWJvb2tQYXJzZURpcmVjdGl2ZSBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpXG4gIHNldCBsYXp5TG9hZCh0aHJlc2hvbGQ6IG51bWJlcikge1xuICAgIHRoaXMudGhyZXNob2xkID0gdGhyZXNob2xkO1xuICB9XG5cbiAgQElucHV0KClcbiAgY29udGFpbmVyOiBIVE1MRWxlbWVudCB8IFdpbmRvdztcblxuICBzY3JvbGxVbmxvYWQ6ICgpID0+IHZvaWQ7XG4gIHJlc2l6ZVVubG9hZDogKCkgPT4gdm9pZDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSBmYWNlYm9vazogRmFjZWJvb2tTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICBASW5qZWN0KFBMQVRGT1JNX0lEKSBwcml2YXRlIHBsYXRmb3JtSWQ6IE9iamVjdCxcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KEZCX1BBUlNFX0xBWllfTE9BRCkgcHJpdmF0ZSB0aHJlc2hvbGQ6IG51bWJlcixcbiAgKSB7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgaWYgKHRoaXMudGhyZXNob2xkID09PSBudWxsKSB7XG4gICAgICB0aGlzLmxvYWQoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pbml0TGlzdGVuZXJzKCk7XG5cbiAgICAgIHRoaXMudHJ5TG9hZGluZygpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMudW5sb2FkTGlzdGVuZXJzKCk7XG4gIH1cblxuICBpbml0TGlzdGVuZXJzKCkge1xuICAgIHRoaXMuc2Nyb2xsVW5sb2FkID0gdGhpcy5yZW5kZXJlci5saXN0ZW4oJ3dpbmRvdycsICdzY3JvbGwnLCAoKSA9PiB7XG4gICAgICB0aGlzLnRyeUxvYWRpbmcoKTtcbiAgICB9KTtcblxuICAgIHRoaXMucmVzaXplVW5sb2FkID0gdGhpcy5yZW5kZXJlci5saXN0ZW4oJ3dpbmRvdycsICdyZXNpemUnLCAoKSA9PiB7XG4gICAgICB0aGlzLnRyeUxvYWRpbmcoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHRyeUxvYWRpbmcoKSB7XG4gICAgaWYgKFxuICAgICAgaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSAmJiBpblZpZXdwb3J0KHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCB7XG4gICAgICAgIHRocmVzaG9sZDogdGhpcy50aHJlc2hvbGQsXG4gICAgICAgIGNvbnRhaW5lcjogdGhpcy5jb250YWluZXJcbiAgICAgIH0pXG4gICAgKSB7XG4gICAgICB0aGlzLmxvYWQoKTtcblxuICAgICAgdGhpcy51bmxvYWRMaXN0ZW5lcnMoKTtcbiAgICB9XG4gIH1cblxuICBsb2FkKCkge1xuICAgIHRoaXMuZmFjZWJvb2sucGFyc2UodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgdW5sb2FkTGlzdGVuZXJzKCkge1xuICAgIGlmICh0aGlzLnNjcm9sbFVubG9hZCkge1xuICAgICAgdGhpcy5zY3JvbGxVbmxvYWQoKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5yZXNpemVVbmxvYWQpIHtcbiAgICAgIHRoaXMucmVzaXplVW5sb2FkKCk7XG4gICAgfVxuICB9XG59XG4iXX0=