@halloverden/ngx-zendesk-web-widget
Version:
Angular wrapper for the Zendesk Web Widget v1 (classic)
1 lines • 14.3 kB
Source Map (JSON)
{"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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"}