{"version":3,"file":"ng2-adsense.mjs","sources":["../../src/lib/adsense-config.ts","../../src/lib/adsense.component.ts","../../src/lib/adsense.module.ts","../../src/lib/ng2-adsense.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\n/**\n * Set optional global default values\n */\nexport interface AdsenseConfig {\n  /** adsense account ca-pub-XXXXXXXXXXXXXXXX */\n  adClient: string;\n  /** ad slot/number */\n  adSlot: string | number;\n  /** data-ad-format default: auto */\n  adFormat: string;\n  /** ins element display style */\n  display: string;\n  /** ins element height in px */\n  width: number;\n  /** ins element width in px */\n  height: number;\n  /** used for in-feed ads */\n  layout: string;\n  /** used for in-feed ads */\n  layoutKey: string;\n  /** enable page-level ads */\n  pageLevelAds: boolean;\n  adtest: string;\n  /** used for flexible ads */\n  fullWidthResponsive: boolean;\n}\n\nexport const ADSENSE_TOKEN = new InjectionToken<AdsenseConfig>(\n  'AdsenseConfig',\n);\n","import {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  Component,\n  Inject,\n  Input,\n  OnDestroy,\n  OnInit,\n  ViewChild,\n  ElementRef,\n  PLATFORM_ID,\n} from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\n\nimport { ADSENSE_TOKEN, AdsenseConfig } from './adsense-config';\n\n@Component({\n  selector: 'ng2-adsense,ng-adsense',\n  template: `\n    <ins\n      #ins\n      class=\"adsbygoogle {{ className }}\"\n      [style.display]=\"display\"\n      [style.width.px]=\"width\"\n      [style.height.px]=\"height\"\n      [attr.data-ad-client]=\"adClient\"\n      [attr.data-ad-slot]=\"adSlot\"\n      [attr.data-ad-format]=\"adFormat\"\n      [attr.data-ad-region]=\"adRegion\"\n      [attr.data-layout]=\"layout\"\n      [attr.data-adtest]=\"adtest\"\n      [attr.data-layout-key]=\"layoutKey\"\n      [attr.data-full-width-responsive]=\"fullWidthResponsive\"\n    >\n    </ins>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AdsenseComponent implements OnInit, AfterViewInit, OnDestroy {\n  /** adsense account ca-pub-XXXXXXXXXXXXXXXX */\n  @Input() adClient!: string;\n  /** ad slot/number */\n  @Input() adSlot!: string | number;\n  @Input() adFormat!: string;\n  /** can be manually set if you need all ads on a page to have same id page-xxx */\n  @Input() adRegion = 'page-' + Math.floor(Math.random() * 10000) + 1;\n  /** ins element display style */\n  @Input() display!: string;\n  /** ins element height in px */\n  @Input() width!: number;\n  /** ins element width in px */\n  @Input() height!: number;\n  /** used for in-feed ads */\n  @Input() layout!: string;\n  /** used for in-feed ads */\n  @Input() layoutKey!: string;\n  /** enable page-level ads */\n  @Input() pageLevelAds!: boolean;\n  /** sets up some sort of google test ad */\n  @Input() adtest!: string;\n  /* used for flexible ads */\n  @Input() fullWidthResponsive!: boolean;\n  /**\n   * classes applied to the ins element\n   */\n  @Input() className = '';\n  @ViewChild('ins', { read: ElementRef, static: true }) ins!: ElementRef;\n\n  constructor(\n    @Inject(ADSENSE_TOKEN) private config: AdsenseConfig,\n    @Inject(PLATFORM_ID) private platform: any,\n  ) {}\n\n  ngOnInit(): void {\n    const config = this.config;\n    this.adClient = this.adClient ?? config.adClient;\n    this.adSlot = this.adSlot ?? config.adSlot;\n    this.adFormat = this.adFormat ?? config.adFormat ?? 'auto';\n    this.display = this.display ?? config.display ?? 'block';\n    this.width = this.width ?? config.width;\n    this.height = this.height ?? config.height;\n    this.layout = this.layout ?? config.layout;\n    this.layoutKey = this.layoutKey ?? config.layoutKey;\n    this.pageLevelAds = this.pageLevelAds ?? config.pageLevelAds;\n    this.adtest = this.adtest ?? config.adtest;\n    this.fullWidthResponsive = this.fullWidthResponsive ?? config.fullWidthResponsive;\n  }\n  ngOnDestroy(): void {\n    const iframe = this.ins.nativeElement.querySelector('iframe');\n    if (iframe && iframe.contentWindow) {\n      iframe.src = 'about:blank';\n      iframe.remove();\n    }\n  }\n\n  ngAfterViewInit(): void {\n    if (isPlatformBrowser(this.platform)) {\n      this.push();\n    }\n  }\n\n  push(): void {\n    const p: Record<string, string | boolean> = {};\n    if (this.pageLevelAds) {\n      p.google_ad_client = this.adClient;\n      p.enable_page_level_ads = true;\n    }\n\n    if (window) {\n      try {\n        ((window as any).adsbygoogle = (window as any).adsbygoogle || []).push(p);\n      } catch {\n        // pass\n      }\n    }\n  }\n}\n","import { CommonModule } from '@angular/common';\nimport { ModuleWithProviders, NgModule } from '@angular/core';\n\nimport { AdsenseConfig, ADSENSE_TOKEN } from './adsense-config';\nimport { AdsenseComponent } from './adsense.component';\n\n@NgModule({\n  imports: [CommonModule],\n  exports: [AdsenseComponent],\n  declarations: [AdsenseComponent],\n})\nexport class AdsenseModule {\n  static forRoot(config: Partial<AdsenseConfig> = {}): ModuleWithProviders<AdsenseModule> {\n    return {\n      ngModule: AdsenseModule,\n      providers: [{ provide: ADSENSE_TOKEN, useValue: config }],\n    };\n  }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}