UNPKG

@asoftwareworld/google-adsense

Version:
168 lines 15.9 kB
/** * @license * Copyright ASW (A Software World) All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file */ import { ChangeDetectionStrategy, Component, Inject, Input, ViewChild, ElementRef, PLATFORM_ID, } from '@angular/core'; import { isPlatformBrowser } from '@angular/common'; import { ASW_GOOGLE_ADSENSE_TOKEN } from './google-adsense-config'; import * as i0 from "@angular/core"; export class AswGoogleAdsense { config; platform; /** adsense account ca-pub-XXXXXXXXXXXXXXXX */ adClient; /** ad slot/number */ adSlot; adFormat; /** can be manually set if you need all ads on a page to have same id page-xxx */ adRegion = 'page-' + Math.floor(Math.random() * 10000) + 1; /** ins element display style */ display; /** ins element height in px */ width; /** ins element width in px */ height; /** used for in-feed ads */ layout; /** used for in-feed ads */ layoutKey; /** enable page-level ads */ pageLevelAds; /** sets up some sort of google test ad */ adtest; /* used for flexible ads */ fullWidthResponsive; /** * classes applied to the ins element */ className = ''; ins; constructor(config, platform) { this.config = config; this.platform = platform; } ngOnInit() { const config = this.config; this.adClient = this.adClient ?? config.adClient; this.adSlot = this.adSlot ?? config.adSlot; this.adFormat = this.adFormat ?? config.adFormat ?? 'auto'; this.display = this.display ?? config.display ?? 'block'; this.width = this.width ?? config.width; this.height = this.height ?? config.height; this.layout = this.layout ?? config.layout; this.layoutKey = this.layoutKey ?? config.layoutKey; this.pageLevelAds = this.pageLevelAds ?? config.pageLevelAds; this.adtest = this.adtest ?? config.adtest; this.fullWidthResponsive = this.fullWidthResponsive ?? config.fullWidthResponsive; } ngOnDestroy() { const iframe = this.ins.nativeElement.querySelector('iframe'); if (iframe && iframe.contentWindow) { iframe.src = 'about:blank'; iframe.remove(); } } ngAfterViewInit() { if (isPlatformBrowser(this.platform)) { this.push(); } } push() { const p = {}; if (this.pageLevelAds) { p.google_ad_client = this.adClient; p.enable_page_level_ads = true; } if (window) { try { (window.adsbygoogle = window.adsbygoogle || []).push(p); } catch { // pass } } } static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: AswGoogleAdsense, deps: [{ token: ASW_GOOGLE_ADSENSE_TOKEN }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Component }); static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.6", type: AswGoogleAdsense, selector: "asw-google-adsense", inputs: { adClient: "adClient", adSlot: "adSlot", adFormat: "adFormat", adRegion: "adRegion", display: "display", width: "width", height: "height", layout: "layout", layoutKey: "layoutKey", pageLevelAds: "pageLevelAds", adtest: "adtest", fullWidthResponsive: "fullWidthResponsive", className: "className" }, viewQueries: [{ propertyName: "ins", first: true, predicate: ["ins"], descendants: true, read: ElementRef, static: true }], ngImport: i0, template: ` <ins #ins class="adsbygoogle {{ className }}" [style.display]="display" [style.width.px]="width" [style.height.px]="height" [attr.data-ad-client]="adClient" [attr.data-ad-slot]="adSlot" [attr.data-ad-format]="adFormat" [attr.data-ad-region]="adRegion" [attr.data-layout]="layout" [attr.data-adtest]="adtest" [attr.data-layout-key]="layoutKey" [attr.data-full-width-responsive]="fullWidthResponsive" > </ins> `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: AswGoogleAdsense, decorators: [{ type: Component, args: [{ selector: 'asw-google-adsense', template: ` <ins #ins class="adsbygoogle {{ className }}" [style.display]="display" [style.width.px]="width" [style.height.px]="height" [attr.data-ad-client]="adClient" [attr.data-ad-slot]="adSlot" [attr.data-ad-format]="adFormat" [attr.data-ad-region]="adRegion" [attr.data-layout]="layout" [attr.data-adtest]="adtest" [attr.data-layout-key]="layoutKey" [attr.data-full-width-responsive]="fullWidthResponsive" > </ins> `, changeDetection: ChangeDetectionStrategy.OnPush, }] }], ctorParameters: function () { return [{ type: undefined, decorators: [{ type: Inject, args: [ASW_GOOGLE_ADSENSE_TOKEN] }] }, { type: undefined, decorators: [{ type: Inject, args: [PLATFORM_ID] }] }]; }, propDecorators: { adClient: [{ type: Input }], adSlot: [{ type: Input }], adFormat: [{ type: Input }], adRegion: [{ type: Input }], display: [{ type: Input }], width: [{ type: Input }], height: [{ type: Input }], layout: [{ type: Input }], layoutKey: [{ type: Input }], pageLevelAds: [{ type: Input }], adtest: [{ type: Input }], fullWidthResponsive: [{ type: Input }], className: [{ type: Input }], ins: [{ type: ViewChild, args: ['ins', { read: ElementRef, static: true }] }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ29vZ2xlLWFkc2Vuc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZ29vZ2xlLWFkc2Vuc2UvZ29vZ2xlLWFkc2Vuc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsT0FBTyxFQUVILHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsTUFBTSxFQUNOLEtBQUssRUFHTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFdBQVcsR0FDZCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVwRCxPQUFPLEVBQUUsd0JBQXdCLEVBQTBCLE1BQU0seUJBQXlCLENBQUM7O0FBd0IzRixNQUFNLE9BQU8sZ0JBQWdCO0lBK0JxQjtJQUNiO0lBL0JqQyw4Q0FBOEM7SUFDckMsUUFBUSxDQUFVO0lBQzNCLHFCQUFxQjtJQUNaLE1BQU0sQ0FBbUI7SUFDekIsUUFBUSxDQUFVO0lBQzNCLGlGQUFpRjtJQUN4RSxRQUFRLEdBQUcsT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNwRSxnQ0FBZ0M7SUFDdkIsT0FBTyxDQUFVO0lBQzFCLCtCQUErQjtJQUN0QixLQUFLLENBQVU7SUFDeEIsOEJBQThCO0lBQ3JCLE1BQU0sQ0FBVTtJQUN6QiwyQkFBMkI7SUFDbEIsTUFBTSxDQUFVO0lBQ3pCLDJCQUEyQjtJQUNsQixTQUFTLENBQVU7SUFDNUIsNEJBQTRCO0lBQ25CLFlBQVksQ0FBVztJQUNoQywwQ0FBMEM7SUFDakMsTUFBTSxDQUFVO0lBQ3pCLDJCQUEyQjtJQUNsQixtQkFBbUIsQ0FBVztJQUN2Qzs7T0FFRztJQUNNLFNBQVMsR0FBRyxFQUFFLENBQUM7SUFDOEIsR0FBRyxDQUFjO0lBRXZFLFlBQzhDLE1BQThCLEVBQzNDLFFBQWE7UUFEQSxXQUFNLEdBQU4sTUFB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LEtBQUs7Z0JBRUcsTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRUcsUUFBUTtzQkFBaEIsS0FBSztnQkFFRyxPQUFPO3NCQUFmLEtBQUs7Z0JBRUcsS0FBSztzQkFBYixLQUFLO2dCQUVHLE1BQU07c0JBQWQsS0FBSztnQkFFRyxNQUFNO3NCQUFkLEtBQUs7Z0JBRUcsU0FBUztzQkFBakIsS0FBSztnQkFFRyxZQUFZO3NCQUFwQixLQUFLO2dCQUVHLE1BQU07c0JBQWQsS0FBSztnQkFFRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBSUcsU0FBUztzQkFBakIsS0FBSztnQkFDZ0QsR0FBRztzQkFBeEQsU0FBUzt1QkFBQyxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgQVNXIChBIFNvZnR3YXJlIFdvcmxkKSBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlXG4gKi9cblxuaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENvbXBvbmVudCxcbiAgICBJbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBWaWV3Q2hpbGQsXG4gICAgRWxlbWVudFJlZixcbiAgICBQTEFURk9STV9JRCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbmltcG9ydCB7IEFTV19HT09HTEVfQURTRU5TRV9UT0tFTiwgQXN3R29vZ2xlQWRzZW5zZUNvbmZpZyB9IGZyb20gJy4vZ29vZ2xlLWFkc2Vuc2UtY29uZmlnJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdhc3ctZ29vZ2xlLWFkc2Vuc2UnLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgPGluc1xuICAgICAgI2luc1xuICAgICAgY2xhc3M9XCJhZHNieWdvb2dsZSB7eyBjbGFzc05hbWUgfX1cIlxuICAgICAgW3N0eWxlLmRpc3BsYXldPVwiZGlzcGxheVwiXG4gICAgICBbc3R5bGUud2lkdGgucHhdPVwid2lkdGhcIlxuICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJoZWlnaHRcIlxuICAgICAgW2F0dHIuZGF0YS1hZC1jbGllbnRdPVwiYWRDbGllbnRcIlxuICAgICAgW2F0dHIuZGF0YS1hZC1zbG90XT1cImFkU2xvdFwiXG4gICAgICBbYXR0ci5kYXRhLWFkLWZvcm1hdF09XCJhZEZvcm1hdFwiXG4gICAgICBbYXR0ci5kYXRhLWFkLXJlZ2lvbl09XCJhZFJlZ2lvblwiXG4gICAgICBbYXR0ci5kYXRhLWxheW91dF09XCJsYXlvdXRcIlxuICAgICAgW2F0dHIuZGF0YS1hZHRlc3RdPVwiYWR0ZXN0XCJcbiAgICAgIFthdHRyLmRhdGEtbGF5b3V0LWtleV09XCJsYXlvdXRLZXlcIlxuICAgICAgW2F0dHIuZGF0YS1mdWxsLXdpZHRoLXJlc3BvbnNpdmVdPVwiZnVsbFdpZHRoUmVzcG9uc2l2ZVwiXG4gICAgPlxuICAgIDwvaW5zPlxuICBgLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBBc3dHb29nbGVBZHNlbnNlIGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICAgIC8qKiBhZHNlbnNlIGFjY291bnQgY2EtcHViLVhYWFhYWFhYWFhYWFhYWFggKi9cbiAgICBASW5wdXQoKSBhZENsaWVudCE6IHN0cmluZztcbiAgICAvKiogYWQgc2xvdC9udW1iZXIgKi9cbiAgICBASW5wdXQoKSBhZFNsb3QhOiBzdHJpbmcgfCBudW1iZXI7XG4gICAgQElucHV0KCkgYWRGb3JtYXQhOiBzdHJpbmc7XG4gICAgLyoqIGNhbiBiZSBtYW51YWxseSBzZXQgaWYgeW91IG5lZWQgYWxsIGFkcyBvbiBhIHBhZ2UgdG8gaGF2ZSBzYW1lIGlkIHBhZ2UteHh4ICovXG4gICAgQElucHV0KCkgYWRSZWdpb24gPSAncGFnZS0nICsgTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogMTAwMDApICsgMTtcbiAgICAvKiogaW5zIGVsZW1lbnQgZGlzcGxheSBzdHlsZSAqL1xuICAgIEBJbnB1dCgpIGRpc3BsYXkhOiBzdHJpbmc7XG4gICAgLyoqIGlucyBlbGVtZW50IGhlaWdodCBpbiBweCAqL1xuICAgIEBJbnB1dCgpIHdpZHRoITogbnVtYmVyO1xuICAgIC8qKiBpbnMgZWxlbWVudCB3aWR0aCBpbiBweCAqL1xuICAgIEBJbnB1dCgpIGhlaWdodCE6IG51bWJlcjtcbiAgICAvKiogdXNlZCBmb3IgaW4tZmVlZCBhZHMgKi9cbiAgICBASW5wdXQoKSBsYXlvdXQhOiBzdHJpbmc7XG4gICAgLyoqIHVzZWQgZm9yIGluLWZlZWQgYWRzICovXG4gICAgQElucHV0KCkgbGF5b3V0S2V5ITogc3RyaW5nO1xuICAgIC8qKiBlbmFibGUgcGFnZS1sZXZlbCBhZHMgKi9cbiAgICBASW5wdXQoKSBwYWdlTGV2ZWxBZHMhOiBib29sZWFuO1xuICAgIC8qKiBzZXRzIHVwIHNvbWUgc29ydCBvZiBnb29nbGUgdGVzdCBhZCAqL1xuICAgIEBJbnB1dCgpIGFkdGVzdCE6IHN0cmluZztcbiAgICAvKiB1c2VkIGZvciBmbGV4aWJsZSBhZHMgKi9cbiAgICBASW5wdXQoKSBmdWxsV2lkdGhSZXNwb25zaXZlITogYm9vbGVhbjtcbiAgICAvKipcbiAgICAgKiBjbGFzc2VzIGFwcGxpZWQgdG8gdGhlIGlucyBlbGVtZW50XG4gICAgICovXG4gICAgQElucHV0KCkgY2xhc3NOYW1lID0gJyc7XG4gICAgQFZpZXdDaGlsZCgnaW5zJywgeyByZWFkOiBFbGVtZW50UmVmLCBzdGF0aWM6IHRydWUgfSkgaW5zITogRWxlbWVudFJlZjtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBASW5qZWN0KEFTV19HT09HTEVfQURTRU5TRV9UT0tFTikgcHJpdmF0ZSBjb25maWc6IEFzd0dvb2dsZUFkc2Vuc2VDb25maWcsXG4gICAgICAgIEBJbmplY3QoUExBVEZPUk1fSUQpIHByaXZhdGUgcGxhdGZvcm06IGFueSxcbiAgICApIHsgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMuY29uZmlnO1xuICAgICAgICB0aGlzLmFkQ2xpZW50ID0gdGhpcy5hZENsaWVudCA/PyBjb25maWcuYWRDbGllbnQ7XG4gICAgICAgIHRoaXMuYWRTbG90ID0gdGhpcy5hZFNsb3QgPz8gY29uZmlnLmFkU2xvdDtcbiAgICAgICAgdGhpcy5hZEZvcm1hdCA9IHRoaXMuYWRGb3JtYXQgPz8gY29uZmlnLmFkRm9ybWF0ID8/ICdhdXRvJztcbiAgICAgICAgdGhpcy5kaXNwbGF5ID0gdGhpcy5kaXNwbGF5ID8/IGNvbmZpZy5kaXNwbGF5ID8/ICdibG9jayc7XG4gICAgICAgIHRoaXMud2lkdGggPSB0aGlzLndpZHRoID8/IGNvbmZpZy53aWR0aDtcbiAgICAgICAgdGhpcy5oZWlnaHQgPSB0aGlzLmhlaWdodCA/PyBjb25maWcuaGVpZ2h0O1xuICAgICAgICB0aGlzLmxheW91dCA9IHRoaXMubGF5b3V0ID8/IGNvbmZpZy5sYXlvdXQ7XG4gICAgICAgIHRoaXMubGF5b3V0S2V5ID0gdGhpcy5sYXlvdXRLZXkgPz8gY29uZmlnLmxheW91dEtleTtcbiAgICAgICAgdGhpcy5wYWdlTGV2ZWxBZHMgPSB0aGlzLnBhZ2VMZXZlbEFkcyA/PyBjb25maWcucGFnZUxldmVsQWRzO1xuICAgICAgICB0aGlzLmFkdGVzdCA9IHRoaXMuYWR0ZXN0ID8/IGNvbmZpZy5hZHRlc3Q7XG4gICAgICAgIHRoaXMuZnVsbFdpZHRoUmVzcG9uc2l2ZSA9IHRoaXMuZnVsbFdpZHRoUmVzcG9uc2l2ZSA/PyBjb25maWcuZnVsbFdpZHRoUmVzcG9uc2l2ZTtcbiAgICB9XG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGlmcmFtZSA9IHRoaXMuaW5zLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignaWZyYW1lJyk7XG4gICAgICAgIGlmIChpZnJhbWUgJiYgaWZyYW1lLmNvbnRlbnRXaW5kb3cpIHtcbiAgICAgICAgICAgIGlmcmFtZS5zcmMgPSAnYWJvdXQ6YmxhbmsnO1xuICAgICAgICAgICAgaWZyYW1lLnJlbW92ZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybSkpIHtcbiAgICAgICAgICAgIHRoaXMucHVzaCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVzaCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcDogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgYm9vbGVhbj4gPSB7fTtcbiAgICAgICAgaWYgKHRoaXMucGFnZUxldmVsQWRzKSB7XG4gICAgICAgICAgICBwLmdvb2dsZV9hZF9jbGllbnQgPSB0aGlzLmFkQ2xpZW50O1xuICAgICAgICAgICAgcC5lbmFibGVfcGFnZV9sZXZlbF9hZHMgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHdpbmRvdykge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAoKHdpbmRvdyBhcyBhbnkpLmFkc2J5Z29vZ2xlID0gKHdpbmRvdyBhcyBhbnkpLmFkc2J5Z29vZ2xlIHx8IFtdKS5wdXNoKHApO1xuICAgICAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgICAgICAgLy8gcGFzc1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuIl19