ngx-pixel
Version:
An Angular library to simplify the use of a Facebook Pixel.
50 lines • 5.54 kB
JavaScript
import { Inject, NgModule, PLATFORM_ID } from '@angular/core';
import { isPlatformBrowser } from '@angular/common';
import { PixelService } from './pixel.service';
export class PixelModule {
constructor(pixel, platformId) {
this.pixel = pixel;
if (!PixelModule.config) {
throw Error('ngx-pixel not configured correctly. Pass the `pixelId` property to the `forRoot()` function');
}
if (PixelModule.config.enabled && isPlatformBrowser(platformId)) {
this.pixel.initialize();
}
}
/**
* Initiale the Facebook Pixel Module
*
* Add your Pixel ID as parameter
*/
static forRoot(config) {
this.config = config;
const pixelId = config.pixelId;
this.verifyPixelId(pixelId);
return {
ngModule: PixelModule,
providers: [PixelService, { provide: 'config', useValue: config }]
};
}
/**
* Verifies the Pixel ID that was passed into the configuration.
* - Checks if Pixel was initialized
* @param pixelId Pixel ID to verify
*/
static verifyPixelId(pixelId) {
// Have to verify first that all Pixel IDs follow the same 15 digit format
if (pixelId === null || pixelId === undefined || pixelId.length === 0) {
throw Error('Invalid Facebook Pixel ID. Did you pass the ID into the forRoot() function?');
}
}
}
PixelModule.config = null;
PixelModule.decorators = [
{ type: NgModule, args: [{
imports: [],
},] }
];
PixelModule.ctorParameters = () => [
{ type: PixelService },
{ type: Object, decorators: [{ type: Inject, args: [PLATFORM_ID,] }] }
];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGl4ZWwubW9kdWxlLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uL3Byb2plY3RzL3BpeGVsL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9waXhlbC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLE1BQU0sRUFBdUIsUUFBUSxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFLL0MsTUFBTSxPQUFPLFdBQVc7SUFJdEIsWUFDVSxLQUFtQixFQUNOLFVBQWtCO1FBRC9CLFVBQUssR0FBTCxLQUFLLENBQWM7UUFHM0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUU7WUFDdkIsTUFBTSxLQUFLLENBQUMsNkZBQTZGLENBQUMsQ0FBQztTQUM1RztRQUNELElBQUksV0FBVyxDQUFDLE1BQU0sQ0FBQyxPQUFPLElBQUksaUJBQWlCLENBQUMsVUFBVSxDQUFDLEVBQUU7WUFDL0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQztTQUN6QjtJQUNILENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUEwQjtRQUN2QyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDO1FBQy9CLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFNUIsT0FBTztZQUNMLFFBQVEsRUFBRSxXQUFXO1lBQ3JCLFNBQVMsRUFBRSxDQUFDLFlBQVksRUFBRSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxDQUFDO1NBQ25FLENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNLLE1BQU0sQ0FBQyxhQUFhLENBQUMsT0FBZTtRQUMxQywwRUFBMEU7UUFDMUUsSUFBSSxPQUFPLEtBQUssSUFBSSxJQUFJLE9BQU8sS0FBSyxTQUFTLElBQUksT0FBTyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDckUsTUFBTSxLQUFLLENBQUMsNkVBQTZFLENBQUMsQ0FBQztTQUM1RjtJQUNILENBQUM7O0FBeENjLGtCQUFNLEdBQThCLElBQUksQ0FBQzs7WUFMekQsUUFBUSxTQUFDO2dCQUNSLE9BQU8sRUFBRSxFQUFFO2FBQ1o7OztZQUpRLFlBQVk7WUFXZ0IsTUFBTSx1QkFBdEMsTUFBTSxTQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXhlbENvbmZpZ3VyYXRpb24gfSBmcm9tICcuL3BpeGVsLm1vZGVscyc7XG5pbXBvcnQgeyBJbmplY3QsIE1vZHVsZVdpdGhQcm92aWRlcnMsIE5nTW9kdWxlLCBQTEFURk9STV9JRCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgUGl4ZWxTZXJ2aWNlIH0gZnJvbSAnLi9waXhlbC5zZXJ2aWNlJztcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW10sXG59KVxuZXhwb3J0IGNsYXNzIFBpeGVsTW9kdWxlIHtcblxuICBwcml2YXRlIHN0YXRpYyBjb25maWc6IFBpeGVsQ29uZmlndXJhdGlvbiB8IG51bGwgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcGl4ZWw6IFBpeGVsU2VydmljZSxcbiAgICBASW5qZWN0KFBMQVRGT1JNX0lEKSBwbGF0Zm9ybUlkOiBPYmplY3RcbiAgKSB7XG4gICAgaWYgKCFQaXhlbE1vZHVsZS5jb25maWcpIHtcbiAgICAgIHRocm93IEVycm9yKCduZ3gtcGl4ZWwgbm90IGNvbmZpZ3VyZWQgY29ycmVjdGx5LiBQYXNzIHRoZSBgcGl4ZWxJZGAgcHJvcGVydHkgdG8gdGhlIGBmb3JSb290KClgIGZ1bmN0aW9uJyk7XG4gICAgfVxuICAgIGlmIChQaXhlbE1vZHVsZS5jb25maWcuZW5hYmxlZCAmJiBpc1BsYXRmb3JtQnJvd3NlcihwbGF0Zm9ybUlkKSkge1xuICAgICAgdGhpcy5waXhlbC5pbml0aWFsaXplKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEluaXRpYWxlIHRoZSBGYWNlYm9vayBQaXhlbCBNb2R1bGVcbiAgICpcbiAgICogQWRkIHlvdXIgUGl4ZWwgSUQgYXMgcGFyYW1ldGVyXG4gICAqL1xuICBzdGF0aWMgZm9yUm9vdChjb25maWc6IFBpeGVsQ29uZmlndXJhdGlvbik6IE1vZHVsZVdpdGhQcm92aWRlcnM8UGl4ZWxNb2R1bGU+IHtcbiAgICB0aGlzLmNvbmZpZyA9IGNvbmZpZztcbiAgICBjb25zdCBwaXhlbElkID0gY29uZmlnLnBpeGVsSWQ7XG4gICAgdGhpcy52ZXJpZnlQaXhlbElkKHBpeGVsSWQpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIG5nTW9kdWxlOiBQaXhlbE1vZHVsZSxcbiAgICAgIHByb3ZpZGVyczogW1BpeGVsU2VydmljZSwgeyBwcm92aWRlOiAnY29uZmlnJywgdXNlVmFsdWU6IGNvbmZpZyB9XVxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogVmVyaWZpZXMgdGhlIFBpeGVsIElEIHRoYXQgd2FzIHBhc3NlZCBpbnRvIHRoZSBjb25maWd1cmF0aW9uLlxuICAgKiAtIENoZWNrcyBpZiBQaXhlbCB3YXMgaW5pdGlhbGl6ZWRcbiAgICogQHBhcmFtIHBpeGVsSWQgUGl4ZWwgSUQgdG8gdmVyaWZ5XG4gICAqL1xuICBwcml2YXRlIHN0YXRpYyB2ZXJpZnlQaXhlbElkKHBpeGVsSWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIC8vIEhhdmUgdG8gdmVyaWZ5IGZpcnN0IHRoYXQgYWxsIFBpeGVsIElEcyBmb2xsb3cgdGhlIHNhbWUgMTUgZGlnaXQgZm9ybWF0XG4gICAgaWYgKHBpeGVsSWQgPT09IG51bGwgfHwgcGl4ZWxJZCA9PT0gdW5kZWZpbmVkIHx8IHBpeGVsSWQubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aHJvdyBFcnJvcignSW52YWxpZCBGYWNlYm9vayBQaXhlbCBJRC4gRGlkIHlvdSBwYXNzIHRoZSBJRCBpbnRvIHRoZSBmb3JSb290KCkgZnVuY3Rpb24/Jyk7XG4gICAgfVxuICB9XG5cbn1cbiJdfQ==