{"version":3,"file":"igo2-core-network.mjs","sources":["../../../packages/core/network/src/network.service.ts","../../../packages/core/network/src/igo2-core-network.ts"],"sourcesContent":["import {\n  EventEmitter,\n  Injectable,\n  Injector,\n  OnDestroy,\n  inject\n} from '@angular/core';\n\nimport { MessageService } from '@igo2/core/message';\n\nimport { Observable, Subscription, fromEvent } from 'rxjs';\nimport { debounceTime, startWith } from 'rxjs/operators';\n\nimport { ConnectionState } from './network.interfaces';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class NetworkService implements OnDestroy {\n  private messageService = inject(MessageService);\n  private injector = inject(Injector);\n\n  private stateChangeEventEmitter = new EventEmitter<ConnectionState>();\n  private onlineSubscription: Subscription;\n  private offlineSubscription: Subscription;\n  private previousMessageId;\n\n  private state: ConnectionState = {\n    connection: window.navigator.onLine\n  };\n\n  constructor() {\n    this.checkNetworkState();\n  }\n\n  private checkNetworkState() {\n    this.onlineSubscription = fromEvent(window, 'online').subscribe(() => {\n      if (this.previousMessageId) {\n        this.messageService.remove(this.previousMessageId);\n      }\n      const messageObj = this.messageService.info(\n        'igo.core.network.online.message',\n        'igo.core.network.online.title'\n      );\n      this.previousMessageId = messageObj.toastId;\n      this.state.connection = true;\n      this.emitEvent();\n    });\n\n    this.offlineSubscription = fromEvent(window, 'offline').subscribe(() => {\n      if (this.previousMessageId) {\n        this.messageService.remove(this.previousMessageId);\n      }\n      const messageObj = this.messageService.info(\n        'igo.core.network.offline.message',\n        'igo.core.network.offline.title'\n      );\n      this.previousMessageId = messageObj.toastId;\n      this.state.connection = false;\n      this.emitEvent();\n    });\n  }\n\n  private emitEvent() {\n    this.stateChangeEventEmitter.emit(this.state);\n  }\n\n  ngOnDestroy(): void {\n    try {\n      this.offlineSubscription.unsubscribe();\n      this.onlineSubscription.unsubscribe();\n    } catch {\n      // empty\n    }\n  }\n\n  currentState(reportState = true): Observable<ConnectionState> {\n    return reportState\n      ? this.stateChangeEventEmitter.pipe(\n          debounceTime(300),\n          startWith(this.state)\n        )\n      : this.stateChangeEventEmitter.pipe(debounceTime(300));\n  }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;;;MAkBa,cAAc,CAAA;AACjB,IAAA,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;AACvC,IAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AAE3B,IAAA,uBAAuB,GAAG,IAAI,YAAY,EAAmB;AAC7D,IAAA,kBAAkB;AAClB,IAAA,mBAAmB;AACnB,IAAA,iBAAiB;AAEjB,IAAA,KAAK,GAAoB;AAC/B,QAAA,UAAU,EAAE,MAAM,CAAC,SAAS,CAAC;KAC9B;AAED,IAAA,WAAA,GAAA;QACE,IAAI,CAAC,iBAAiB,EAAE;IAC1B;IAEQ,iBAAiB,GAAA;AACvB,QAAA,IAAI,CAAC,kBAAkB,GAAG,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,SAAS,CAAC,MAAK;AACnE,YAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE;gBAC1B,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC;YACpD;AACA,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CACzC,iCAAiC,EACjC,+BAA+B,CAChC;AACD,YAAA,IAAI,CAAC,iBAAiB,GAAG,UAAU,CAAC,OAAO;AAC3C,YAAA,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,IAAI;YAC5B,IAAI,CAAC,SAAS,EAAE;AAClB,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,mBAAmB,GAAG,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,SAAS,CAAC,MAAK;AACrE,YAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE;gBAC1B,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC;YACpD;AACA,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CACzC,kCAAkC,EAClC,gCAAgC,CACjC;AACD,YAAA,IAAI,CAAC,iBAAiB,GAAG,UAAU,CAAC,OAAO;AAC3C,YAAA,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,KAAK;YAC7B,IAAI,CAAC,SAAS,EAAE;AAClB,QAAA,CAAC,CAAC;IACJ;IAEQ,SAAS,GAAA;QACf,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;IAC/C;IAEA,WAAW,GAAA;AACT,QAAA,IAAI;AACF,YAAA,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE;AACtC,YAAA,IAAI,CAAC,kBAAkB,CAAC,WAAW,EAAE;QACvC;AAAE,QAAA,MAAM;;QAER;IACF;IAEA,YAAY,CAAC,WAAW,GAAG,IAAI,EAAA;AAC7B,QAAA,OAAO;AACL,cAAE,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAC/B,YAAY,CAAC,GAAG,CAAC,EACjB,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;AAEzB,cAAE,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;IAC1D;wGAjEW,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAd,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,cAFb,MAAM,EAAA,CAAA;;4FAEP,cAAc,EAAA,UAAA,EAAA,CAAA;kBAH1B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;ACjBD;;AAEG;;;;"}