{"version":3,"file":"ngx-fastcomments.mjs","sources":["../../../projects/fastcomments-angular/src/lib/fast-comments.component.ts","../../../projects/fastcomments-angular/src/lib/fast-comments.module.ts","../../../projects/fastcomments-angular/src/public-api.ts","../../../projects/fastcomments-angular/src/ngx-fastcomments.ts"],"sourcesContent":["import {ChangeDetectionStrategy, Component, ElementRef, Input, OnChanges, OnInit, ViewChild} from '@angular/core';\nimport {FastCommentsCommentWidgetConfig} from 'fastcomments-typescript';\n\nenum LoadStatus {\n  Started,\n  ScriptLoaded,\n  Done,\n  Error\n}\n\ninterface FastCommentsState {\n  status: LoadStatus;\n}\n\ninterface WidgetInstance {\n  destroy: () => void;\n  update: (FastCommentsCommentWidgetConfig) => void;\n}\n\n@Component({\n  selector: 'lib-fastcomments',\n  template: `\n    <div #fastCommentsElement></div>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  styles: []\n})\nexport class FastCommentsComponent implements OnInit, OnChanges {\n\n  @Input() config: FastCommentsCommentWidgetConfig;\n  @ViewChild('fastCommentsElement', {\n    static: true,\n  })\n  fastCommentsElement: ElementRef;\n  lastWidgetInstance: WidgetInstance | null;\n  state: FastCommentsState;\n\n  constructor() {\n    this.state = {\n      status: LoadStatus.Started\n    };\n  }\n\n  ngOnInit() {\n    if (!this.config) {\n      throw new Error('Configuration is required!Like: <lib-fastcomments [config]=\"myConfigObject\"></lib-fastcomments>' +\n        ' or <lib-fastcomments [config]=\"{ tenantId: \\'demo\\' }\"></lib-fastcomments>');\n    }\n    if (this.state.status === LoadStatus.ScriptLoaded) {\n      return this.reset();\n    } else {\n      return this.loadInstance();\n    }\n  }\n\n  ngOnChanges() {\n    if (this.state.status === LoadStatus.ScriptLoaded) {\n      return this.reset();\n    }\n  }\n\n  async insertScript(src: string, id: string, parentElement: Element) {\n    return new Promise((resolve, reject) => {\n      const script = window.document.createElement('script');\n      script.async = true;\n      script.src = src;\n      script.id = id;\n      parentElement.appendChild(script);\n\n      script.addEventListener('load', resolve);\n      script.addEventListener('error', reject);\n    });\n  }\n\n  async loadInstance() {\n    return new Promise<void>(async (resolve, reject) => {\n      switch (this.state.status) {\n        case LoadStatus.Started:\n          try {\n            // @ts-ignore\n            if (window && !window.FastCommentsUI) {\n              const src = this.config.region === 'eu' ? 'https://cdn-eu.fastcomments.com/js/embed-v2.min.js' : 'https://cdn.fastcomments.com/js/embed-v2.min.js';\n              await this.insertScript(src, 'fastcomments-widget-script', window.document.body);\n            }\n            this.state.status = LoadStatus.ScriptLoaded;\n            await this.loadInstance();\n            resolve();\n          } catch (e) {\n            console.error('FastComments Script Load Failure', e);\n            this.state.status = LoadStatus.Error;\n            reject();\n          }\n          break;\n        case LoadStatus.ScriptLoaded:\n          this.instantiateWidget();\n          this.state.status = LoadStatus.Done;\n          resolve();\n          break;\n        default:\n          resolve();\n          break;\n      }\n    });\n  }\n\n  reset() {\n    if (!this.config) {\n      return;\n    }\n    if (this.lastWidgetInstance) {\n      this.lastWidgetInstance.update(this.config);\n    } else {\n      this.instantiateWidget();\n    }\n  }\n\n  instantiateWidget() {\n    const element = this.fastCommentsElement.nativeElement;\n    if (element) {\n      // @ts-ignore\n      this.lastWidgetInstance = window.FastCommentsUI(element, this.config);\n    }\n  }\n\n}\n","import { NgModule } from '@angular/core';\nimport { FastCommentsComponent } from './fast-comments.component';\n\n\n\n@NgModule({\n  declarations: [FastCommentsComponent],\n  imports: [\n  ],\n  exports: [FastCommentsComponent]\n})\nexport class FastCommentsModule { }\n","/*\n * Public API Surface of ngx-fastcomments\n */\n\nexport * from './lib/fast-comments.component';\nexport * from './lib/fast-comments.module';\nexport * from 'fastcomments-typescript';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}