{"version":3,"file":"deliverysolutions-ngx-powerbi.mjs","sources":["../../../projects/ngx-powerbi/src/lib/ngx-powerbi.service.ts","../../../projects/ngx-powerbi/src/lib/ngx-powerbi.component.ts","../../../projects/ngx-powerbi/src/lib/ngx-powerbi.module.ts","../../../projects/ngx-powerbi/src/public-api.ts","../../../projects/ngx-powerbi/src/deliverysolutions-ngx-powerbi.ts"],"sourcesContent":["import { Injectable, Optional } from '@angular/core';\nimport {\n  Embed,\n  factories,\n  IEmbedConfiguration,\n  Report,\n  service as pbiService,\n  Tile\n} from 'powerbi-client';\n\nexport function powerBiServiceFactory() {\n  return new pbiService.Service(\n    factories.hpmFactory,\n    factories.wpmpFactory,\n    factories.routerFactory\n  );\n}\n\n@Injectable({\n  providedIn: 'root',\n  useFactory: powerBiServiceFactory\n})\nexport class NgxPowerBiService {\n  private powerBiCoreService: pbiService.Service;\n\n  constructor(@Optional() private service?: pbiService.Service) {\n    if (!service) {\n      this.powerBiCoreService = new pbiService.Service(\n        factories.hpmFactory,\n        factories.wpmpFactory,\n        factories.routerFactory\n      );\n    } else {\n      this.powerBiCoreService = service;\n    }\n  }\n\n  /**\n   * Creates new report\n   * @param HTMLElement Parent HTML element\n   * @param IEmbedConfiguration Embed configuration\n   * @returns Embed Embedded object\n   */\n  createReport(element: HTMLElement, config: IEmbedConfiguration): Embed {\n    return this.powerBiCoreService.createReport(element, config);\n  }\n\n  /**\n   * Given a configuration based on an HTML element,\n   * if the component has already been created and attached to the element, reuses the component instance and existing iframe,\n   * otherwise creates a new component instance.\n   *\n   * @param HTMLElement Parent HTML element\n   * @param IEmbedConfiguration Embed configuration\n   * @returns Embed Embedded object\n   */\n  embed(element: HTMLElement, config: IEmbedConfiguration): Embed {\n    return this.powerBiCoreService.embed(element, config);\n  }\n\n  /**\n   * Given a configuration based on an HTML element,\n   * if the component has already been created and attached to the element, reuses the component instance and existing iframe,\n   * otherwise creates a new component instance.\n   * This is used for the phased embedding API, once element is loaded successfully, one can call 'render' on it.\n   *\n   * @param HTMLElement} Parent HTML element\n   * @param IEmbedConfiguration Embed configuration\n   * @returns Embed Embedded object\n   */\n  load(element: HTMLElement, config: IEmbedConfiguration): Embed {\n    return this.powerBiCoreService.load(element, config);\n  }\n\n  /**\n   * Adds an event handler for DOMContentLoaded, which searches the DOM for elements that have the 'powerbi-embed-url' attribute,\n   * and automatically attempts to embed a Power BI component based on information from other powerbi-* attributes.\n   *\n   * Note: Only runs if `config.autoEmbedOnContentLoaded` is true when the service is created.\n   * This handler is typically useful only for applications that are rendered on the server so that all\n   * required data is available when the handler is called.\n   */\n  enableAutoEmbed(): void {\n    return this.powerBiCoreService.enableAutoEmbed();\n  }\n\n  /**\n   * Returns an instance of the component associated with the element.\n   *\n   * @param HTMLElement Parent HTML element\n   * @returns (Report | Tile) Embedded report/tile object\n   */\n  get(element: HTMLElement): Embed {\n    return this.powerBiCoreService.get(element);\n  }\n\n  /**\n   * Finds an embed instance by the name or unique ID that is provided.\n   *\n   * @param string} uniqueId or name of the report/tile\n   * @returns (Report | Tile) Embedded report/tile object\n   */\n  findById(uniqueId: string): Report | Tile {\n    return this.powerBiCoreService.find(uniqueId);\n  }\n\n  /**\n   * Given an HTML element that has a component embedded within it,\n   * removes the component from the list of embedded components,\n   * removes the association between the element and the component, and removes the iframe.\n   *\n   * @param HTMLElement Parent HTML element\n   * @returns void\n   */\n  reset(element: HTMLElement): void {\n    return this.powerBiCoreService.reset(element);\n  }\n\n  /**\n   * handles tile events\n   *\n   * @param IEvent<any> event\n   */\n  handleTileEvents(event: pbiService.IEvent<any>): void {\n    return this.powerBiCoreService.handleTileEvents(event);\n  }\n\n  /**\n   * API for warm starting Power BI embedded endpoints.\n   * Use this API to preload Power BI Embedded in the background.\n   *\n   * @param embed.IEmbedConfiguration Embed configuration\n   * @param HTMLElement [element=undefined]\n   */\n  preload(\n    config: IEmbedConfiguration,\n    element: HTMLElement\n  ): HTMLIFrameElement {\n    return this.powerBiCoreService.preload(config, element);\n  }\n}\n","import {\n  Component,\n  ElementRef,\n  EventEmitter,\n  Input,\n  OnChanges,\n  OnDestroy,\n  AfterViewInit,\n  Output,\n  SimpleChanges,\n  ViewChild,\n} from '@angular/core';\nimport * as pbi from 'powerbi-client';\nimport * as models from 'powerbi-models';\n\nimport { NgxPowerBiService } from './ngx-powerbi.service';\n\nexport const enum TokenType {\n  Aad = 'Aad',\n  Embed = 'Embed'\n}\n\nexport const enum ReportType {\n  Dashboard = 'Dashboard',\n  Report = 'Report',\n  Tile = 'Tile'\n}\n\n@Component({\n  selector: 'ngx-powerbi-component',\n  template: '<div #ngxPowerBiIFrame style=\"height:100%; width: 100%;\"></div>',\n  styles: []\n})\nexport class NgxPowerBiComponent implements AfterViewInit, OnChanges, OnDestroy {\n  // Public properties\n  @Input() accessToken: string;\n  @Input() tokenType: TokenType;\n  @Input() embedUrl: string;\n  @Input() id: string;\n  @Input() type: ReportType;\n  @Input() name: string;\n  @Input() options: models.ISettings;\n  @Output() embedded = new EventEmitter<number>();\n  @ViewChild('ngxPowerBiIFrame', {static: true}) ngxPowerBiIFrameRef: ElementRef;\n\n  // Private fields\n  private component: pbi.Embed;\n  private powerBiService: NgxPowerBiService;\n\n  constructor(private ngxPowerBiService: NgxPowerBiService) {\n    this.powerBiService = ngxPowerBiService;\n  }\n\n  ngAfterViewInit() {\n    // Embed the report inside the view child that we have fetched from the DOM\n    if (\n      this.ngxPowerBiIFrameRef.nativeElement &&\n      this.validateRequiredAttributes()\n    ) {\n      this.embed(this.ngxPowerBiIFrameRef.nativeElement, this.getConfig());\n    }\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (!this.ngxPowerBiIFrameRef) {\n      return;\n    }\n    const {\n      accessToken,\n      tokenType,\n      embedUrl,\n      id,\n      type,\n      name,\n      options\n    } = changes;\n\n    // TODO: Validate these conditions\n    /*if (\n      (accessToken.previousValue !== undefined || accessToken.previousValue === accessToken.currentValue) &&\n      embedUrl.previousValue === embedUrl.currentValue\n    ) {\n      return;\n    }*/\n\n    if (this.validateRequiredAttributes()) {\n      const config = this.getConfig(\n        accessToken && accessToken.currentValue,\n        tokenType && tokenType.currentValue,\n        embedUrl && embedUrl.currentValue,\n        id && id.currentValue,\n        type && type.currentValue,\n        name && name.currentValue,\n        options && options.currentValue\n      );\n      this.embed(this.ngxPowerBiIFrameRef.nativeElement, config);\n    } else if (this.component) {\n      this.reset(this.ngxPowerBiIFrameRef.nativeElement);\n    }\n  }\n\n  ngOnDestroy() {\n    if (this.component) {\n      this.reset(this.ngxPowerBiIFrameRef.nativeElement);\n    }\n  }\n\n  /**\n   * Ensure required attributes (embedUrl and accessToken are valid before attempting to embed)\n   */\n  private validateRequiredAttributes(): boolean {\n    return (\n      typeof this.embedUrl === 'string' &&\n      this.embedUrl.length > 0 &&\n      (typeof this.accessToken === 'string' && this.accessToken.length > 0)\n    );\n  }\n\n  /**\n   * Get the model class compatible token enum from our token type enum\n   * @param tokenType - Token type in our custom enum format\n   * @returns Token type in powerbi-models.TokenType enum format\n   */\n  private getTokenType(tokenType: TokenType): models.TokenType {\n    if (tokenType) {\n      switch (tokenType) {\n        case TokenType.Aad:\n          return models.TokenType.Aad;\n        case TokenType.Embed:\n          return models.TokenType.Embed;\n        default:\n          return models.TokenType.Aad;\n      }\n    } else {\n      // default is AAD\n      return models.TokenType.Aad;\n    }\n  }\n\n  /**\n   * Returns an embed configuration object.\n   * @param accessToken - Access token required to embed a component\n   * @param tokenType - type of accessToken: Aad or Embed\n   * @param embedUrl - Embed URL obtained through Power BI REST API or Portal\n   * @param id - component/element GUID\n   * @param type - type of embedded component e.g. 'dashboard, report or tile'\n   * @param name - name of the embedded component\n   * @param options - Embed configuration options\n   * @returns Embed configuration object\n   */\n  private getConfig(\n    accessToken?: string,\n    tokenType?: TokenType,\n    embedUrl?: string,\n    id?: string,\n    type?: ReportType,\n    name?: string,\n    options?: models.ISettings\n  ): pbi.IEmbedConfiguration {\n    // For null arguments - use the initial value\n    // For specified arguments - use the current value\n    return {\n      type: type ? type : this.type ? this.type : ReportType.Report,\n      embedUrl: embedUrl ? embedUrl : this.embedUrl,\n      accessToken: accessToken ? accessToken : this.accessToken,\n      tokenType: tokenType\n        ? this.getTokenType(tokenType)\n        : this.getTokenType(this.tokenType),\n      id: id ? id : this.id,\n      uniqueId: name ? name : this.name,\n      settings: options ? options : this.options\n    };\n  }\n\n  /**\n   * Given an HTMLElement, construct an embed configuration based on attributes and pass to service.\n   * @param element - native element where the embedding needs to be done\n   * @param config - configuration to be embedded\n   */\n  private embed(element: HTMLElement, config: pbi.IEmbedConfiguration) {\n    /*if (this.options) {\n      const newConfig = { config, ...this.options };\n    }*/\n\n    this.component = this.powerBiService.embed(element, config);\n    this.embedded.emit(this.component as any);\n  }\n\n  /**\n   * Reset the component that has been removed from DOM.\n   * @param element - native element where the embedded was made\n   */\n  reset(element: HTMLElement) {\n    this.powerBiService.reset(element);\n    this.component = null;\n  }\n}\n","import { NgModule } from '@angular/core';\n\nimport { NgxPowerBiComponent } from './ngx-powerbi.component';\n\n@NgModule({\n  imports: [],\n  declarations: [NgxPowerBiComponent],\n  exports: [NgxPowerBiComponent]\n})\nexport class NgxPowerBiModule {}\n","/*\n * Public API Surface of ngx-powerbi\n */\n\nexport * from './lib/ngx-powerbi.service';\nexport * from './lib/ngx-powerbi.component';\nexport * from './lib/ngx-powerbi.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["pbiService","service","i1.NgxPowerBiService"],"mappings":"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"}