{"version":3,"file":"halloverden-ngx-zendesk-web-widget.mjs","sources":["../../../projects/ngx-zendesk-web-widget/src/lib/ngx-zendesk-web-widget.config.ts","../../../projects/ngx-zendesk-web-widget/src/lib/ngx-zendesk-web-widget.factory.ts","../../../projects/ngx-zendesk-web-widget/src/lib/window.service.ts","../../../projects/ngx-zendesk-web-widget/src/lib/ngx-zendesk-web-widget.service.ts","../../../projects/ngx-zendesk-web-widget/src/lib/ngx-zendesk-web-widget.module.ts","../../../projects/ngx-zendesk-web-widget/src/public-api.ts","../../../projects/ngx-zendesk-web-widget/src/halloverden-ngx-zendesk-web-widget.ts"],"sourcesContent":["import { NgxZendeskWebWidgetZeSettingsInterface } from './ngx-zendesk-web-widget-ze-settings.interface';\nimport { NgxZendeskWebWidgetService } from './ngx-zendesk-web-widget.service';\n\nexport abstract class NgxZendeskWebWidgetConfig {\n  abstract accountUrl: string;\n  abstract callback(\n    ngxZendeskWebWidgetService: NgxZendeskWebWidgetService\n  ): any;\n  abstract injectionTag: keyof HTMLElementTagNameMap | string;\n  abstract lazyLoadZendeskScripts: boolean;\n  abstract timeout: number;\n  abstract zESettings?: NgxZendeskWebWidgetZeSettingsInterface;\n}\n","import { NgxZendeskWebWidgetService } from './ngx-zendesk-web-widget.service';\n\nexport function ngxZendeskWebWidgetFactory(\n  ngxZendeskWebWidgetService: NgxZendeskWebWidgetService\n): () => Promise<boolean> {\n  return (): Promise<boolean> => {\n    return ngxZendeskWebWidgetService.init();\n  };\n}\n","import { Inject, Injectable, PLATFORM_ID } from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class WindowService {\n  constructor(@Inject(PLATFORM_ID) private platform: any) {}\n\n  get(): Window | null {\n    if (isPlatformBrowser(this.platform)) {\n      return window;\n    }\n    return null;\n  }\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { NgxZendeskWebWidgetConfig } from './ngx-zendesk-web-widget.config';\nimport { WindowService } from './window.service';\nimport { firstValueFrom, of, Subject } from 'rxjs';\nimport { DOCUMENT } from '@angular/common';\nimport { NgxZendeskWebWidgetZeInstanceInterface } from './ngx-zendesk-web-widget-ze-instance.interface';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class NgxZendeskWebWidgetService {\n  private _initialized = false;\n  private _window!: Window;\n  private _zE!: NgxZendeskWebWidgetZeInstanceInterface;\n\n  constructor(\n    private config: NgxZendeskWebWidgetConfig,\n    private windowService: WindowService,\n    @Inject(DOCUMENT) private _document: Document\n  ) {\n    this._verifyConfig();\n\n    if (!this.config.lazyLoadZendeskScripts) {\n      this.init().then(() => {\n        // noop\n      });\n    }\n  }\n\n  public init(): Promise<boolean> {\n    if (!this.windowService.get()) {\n      // noop\n      console.warn(\n        'NgxZendeskWebWidgetService.init(): Tried initializing Zendesk Web Widget, but no browser window was found.'\n      );\n      return firstValueFrom(of(false));\n    }\n\n    const w = this.windowService.get();\n    this._window = w!;\n    let documentDomain = this._document.domain;\n    const config = this.config;\n    const injectionElement = this.getInjectionElement();\n    const iFrameElement = this.buildIframeElement();\n    const scriptElement = this.buildScriptElement();\n\n    (w! as any).zEmbed ||\n      (function (e?, t?) {\n        let args: any[] = [];\n        (w! as any).zEmbed = function () {\n          args.push(arguments);\n        };\n        (w! as any).zE = (w! as any).zE || (w! as any).zEmbed;\n        (w! as any).zESettings = config.zESettings;\n\n        iFrameElement.addEventListener('load', (ev) => {\n          const iframeElementFromEvent = ev.target;\n          if (iframeElementFromEvent instanceof HTMLIFrameElement) {\n            const iframeDocumentInstance =\n              iframeElementFromEvent.contentDocument;\n            const iframeWindowInstance = iframeElementFromEvent.contentWindow;\n\n            let i = setInterval(() => {\n              if (\n                iframeWindowInstance?.document.body &&\n                iframeDocumentInstance\n              ) {\n                clearInterval(i);\n\n                iframeDocumentInstance.domain = documentDomain;\n                (iframeDocumentInstance as any).t = new Date();\n                (iframeDocumentInstance as any).zendeskHost = config.accountUrl;\n                (iframeDocumentInstance as any).zEQueue = args;\n\n                iframeDocumentInstance.body.appendChild(scriptElement);\n              }\n            });\n          }\n        });\n\n        setTimeout(() => {\n          injectionElement.appendChild(iFrameElement);\n        });\n      })();\n\n    return this.finishLoading();\n  }\n\n  private getInjectionElement(): Element {\n    let elements = this._document.getElementsByTagName(\n      this.config.injectionTag\n    );\n    if (elements.length === 0) {\n      throw new Error('No element found matching injectionTag from config');\n    }\n\n    return elements[0];\n  }\n\n  private finishLoading(): Promise<boolean> {\n    const o = new Subject<boolean>();\n\n    const timeout = setTimeout(() => {\n      this._initialized = false;\n      o.next(false);\n      o.complete();\n    }, this.config.timeout || 30000);\n\n    (this._window as any).zE(() => {\n      clearTimeout(timeout);\n\n      this._zE = (this._window as any).zE;\n      this._initialized = true;\n\n      this.config.callback(this);\n\n      o.next(true);\n      o.complete();\n    });\n\n    return firstValueFrom(o);\n  }\n\n  private buildIframeElement(): HTMLIFrameElement {\n    const iframe = this._document.createElement('iframe');\n    iframe.src = 'javascript:false';\n    iframe.title = 'Zendesk Web Widget';\n    iframe.style.cssText = 'display: none';\n\n    return iframe;\n  }\n\n  private buildScriptElement(): HTMLScriptElement {\n    const script = this._document.createElement('script');\n\n    script.type = 'text/javascript';\n    script.id =\n      'be-sure-not-to-set-the-id-to-ze-snippet-as-that-changes-the-behavior-of-the-snippet';\n    script.src = 'https://static.zdassets.com/ekr/snippet.js';\n    script.async = true;\n\n    return script;\n  }\n\n  private _verifyConfig(): void {\n    if (!this.config.accountUrl) {\n      throw new Error(\n        'NgxZendeskWebWidgetService: NgxZendeskWebWidgetConfig is missing accountUrl.'\n      );\n    }\n  }\n\n  get isInitialized(): boolean {\n    return this._initialized;\n  }\n\n  get zE(): NgxZendeskWebWidgetZeInstanceInterface {\n    return this._zE;\n  }\n\n  commandWebWidget(command: string, options?: any): void {\n    this.zE('webWidget', command, options);\n  }\n\n  onWebWidgetEvent(eventName: string, handler: (event?: any) => void) {\n    this.zE('webWidget:on', eventName, handler);\n  }\n}\n","import { ModuleWithProviders, NgModule, Type } from '@angular/core';\nimport { NgxZendeskWebWidgetService } from './ngx-zendesk-web-widget.service';\nimport { NgxZendeskWebWidgetConfig } from './ngx-zendesk-web-widget.config';\nimport { WindowService } from './window.service';\n\n@NgModule({})\nexport class NgxZendeskWebWidgetModule {\n  static forRoot(\n    zendeskConfig: Type<NgxZendeskWebWidgetConfig>\n  ): ModuleWithProviders<NgxZendeskWebWidgetModule> {\n    return {\n      ngModule: NgxZendeskWebWidgetModule,\n      providers: [\n        { provide: NgxZendeskWebWidgetConfig, useClass: zendeskConfig },\n        {\n          provide: NgxZendeskWebWidgetService,\n          useClass: NgxZendeskWebWidgetService\n        },\n        { provide: WindowService, useClass: WindowService }\n      ]\n    };\n  }\n}\n","/*\n * Public API Surface of ngx-zendesk-web-widget\n */\n\nexport * from './lib/ngx-zendesk-web-widget.config';\nexport * from './lib/ngx-zendesk-web-widget.factory';\nexport * from './lib/ngx-zendesk-web-widget.service';\nexport * from './lib/ngx-zendesk-web-widget.module';\nexport * from './lib/ngx-zendesk-web-widget-ze-instance.interface';\nexport * from './lib/ngx-zendesk-web-widget-ze-settings.interface';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}