{"version":3,"file":"igo2-core-message.mjs","sources":["../../../packages/core/message/src/shared/message.provider.ts","../../../packages/core/message/src/message.module.ts","../../../packages/core/message/src/shared/message.enum.ts","../../../packages/core/message/src/shared/message.service.ts","../../../packages/core/message/src/igo2-core-message.ts"],"sourcesContent":["import { EnvironmentProviders, makeEnvironmentProviders } from '@angular/core';\n\nimport { GlobalConfig, provideToastr } from 'ngx-toastr';\n\nconst TOASTR_CONFIG: Partial<GlobalConfig> = {\n  positionClass: 'toast-bottom-right',\n  timeOut: 10000,\n  extendedTimeOut: 10000,\n  titleClass: 'mat-subtitle-2',\n  messageClass: 'toast-message',\n  closeButton: true,\n  progressBar: true,\n  enableHtml: true,\n  tapToDismiss: true,\n  maxOpened: 4,\n  preventDuplicates: true,\n  resetTimeoutOnDuplicate: true,\n  countDuplicates: false,\n  includeTitleDuplicates: true\n};\n\nexport function provideMessage(): EnvironmentProviders {\n  return makeEnvironmentProviders([provideToastr(TOASTR_CONFIG)]);\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\n\nimport { provideMessage } from './shared/message.provider';\n\n/**\n * @deprecated import the provideMessage directly\n */\n@NgModule({\n  imports: [],\n  providers: [provideMessage()],\n  exports: []\n})\nexport class IgoMessageModule {\n  static forRoot(): ModuleWithProviders<IgoMessageModule> {\n    return {\n      ngModule: IgoMessageModule,\n      providers: []\n    };\n  }\n}\n","export enum MessageType {\n  ERROR = 'error',\n  ALERT = 'warning', // todo delete (transition to ngx-toastr)\n  // eslint-disable-next-line @typescript-eslint/no-duplicate-enum-values\n  WARNING = 'warning',\n  INFO = 'info',\n  SUCCESS = 'success',\n  SHOW = 'show'\n}\n","import { HttpErrorResponse } from '@angular/common/http';\nimport { Inject, Injectable, Injector } from '@angular/core';\n\nimport { ConfigService } from '@igo2/core/config';\nimport { LanguageService } from '@igo2/core/language';\n\nimport { ActiveToast, IndividualConfig, ToastrService } from 'ngx-toastr';\nimport { BehaviorSubject, forkJoin } from 'rxjs';\nimport { debounceTime, first } from 'rxjs/operators';\n\nimport { MessageType } from './message.enum';\nimport { Message, MessageOptions } from './message.interface';\n\ninterface ActiveMessageTranslation {\n  id: number;\n  titleKey: string;\n  textKey: string;\n  textInterpolateParams?: object;\n  titleInterpolateParams?: object;\n}\n@Injectable({\n  providedIn: 'root'\n})\nexport class MessageService {\n  public messages$ = new BehaviorSubject<Message[]>([]);\n  private options?: MessageOptions;\n  private activeMessageTranslations: ActiveMessageTranslation[] = [];\n\n  constructor(\n    @Inject(Injector) private injector: Injector,\n    private configService: ConfigService,\n    private languageService: LanguageService\n  ) {\n    this.options = this.configService.getConfig('message');\n    this.languageService.language$.pipe(debounceTime(500)).subscribe(() => {\n      if (this.toastr.toasts.length === 0) {\n        this.activeMessageTranslations = [];\n      }\n      this.toastr.toasts.map((toast) => {\n        const activeMessageTranslation = this.activeMessageTranslations.find(\n          (amt) => amt.id === toast.toastId\n        );\n        if (activeMessageTranslation) {\n          const translatedTextInterpolateParams = {\n            ...activeMessageTranslation.textInterpolateParams\n          };\n          const translatedTitleInterpolateParams = {\n            ...activeMessageTranslation.titleInterpolateParams\n          };\n\n          if (activeMessageTranslation.textInterpolateParams) {\n            Object.keys(activeMessageTranslation.textInterpolateParams).map(\n              (k) => {\n                if (k) {\n                  translatedTextInterpolateParams[k] =\n                    this.languageService.translate.instant(\n                      activeMessageTranslation.textInterpolateParams[k]\n                    );\n                }\n              }\n            );\n          }\n          if (activeMessageTranslation.titleInterpolateParams) {\n            Object.keys(activeMessageTranslation.titleInterpolateParams).map(\n              (k) => {\n                if (k) {\n                  translatedTitleInterpolateParams[k] =\n                    this.languageService.translate.instant(\n                      activeMessageTranslation.titleInterpolateParams[k]\n                    );\n                }\n              }\n            );\n          }\n\n          forkJoin([\n            this.languageService.translate.get(\n              activeMessageTranslation.textKey,\n              translatedTextInterpolateParams\n            ),\n            this.languageService.translate.get(\n              activeMessageTranslation.titleKey,\n              translatedTitleInterpolateParams\n            )\n          ])\n            .pipe(first())\n            .subscribe((res: [string, string]) => {\n              toast.toastRef.componentInstance.message = res[0];\n              toast.toastRef.componentInstance.title = res[1];\n            });\n        }\n      });\n    });\n  }\n\n  private get toastr(): ToastrService {\n    return this.injector.get(ToastrService);\n  }\n\n  showError(httpError: HttpErrorResponse) {\n    httpError.error.caught = true;\n    return this.error(httpError.error.message, httpError.error.title);\n  }\n\n  message(message: Message) {\n    const messageType = message.type;\n    this.toastr.toastrConfig.iconClasses[messageType] = `toast-${messageType}`;\n\n    this.messages$.next(this.messages$.value.concat([message]));\n\n    message.options = message.options || ({} as MessageOptions);\n    const currentDate = new Date();\n\n    message.options.from = message.options.from\n      ? message.options.from\n      : new Date('1 jan 1900');\n    message.options.to = message.options.to\n      ? message.options.to\n      : new Date('1 jan 3000');\n    if (typeof message.options.from === 'string') {\n      message.options.from = new Date(\n        Date.parse(message.options.from.replace(/-/g, ' '))\n      );\n    }\n    if (typeof message.options.to === 'string') {\n      message.options.to = new Date(\n        Date.parse(message.options.to.replace(/-/g, ' '))\n      );\n    }\n    if (\n      currentDate > message.options.from &&\n      currentDate < message.options.to\n    ) {\n      if (message.showIcon === false) {\n        this.toastr.toastrConfig.iconClasses[messageType] =\n          `toast-${messageType} toast-no-icon`;\n      }\n      message = this.handleTemplate(message);\n\n      if (message.text) {\n        let messageShown: ActiveToast<any>;\n        switch (message.type) {\n          case MessageType.SUCCESS:\n            messageShown = this.success(\n              message.text,\n              message.title,\n              message.options,\n              message.textInterpolateParams,\n              message.titleInterpolateParams\n            );\n            break;\n          case MessageType.ERROR:\n            messageShown = this.error(\n              message.text,\n              message.title,\n              message.options,\n              message.textInterpolateParams,\n              message.titleInterpolateParams\n            );\n            break;\n          case MessageType.INFO:\n            messageShown = this.info(\n              message.text,\n              message.title,\n              message.options,\n              message.textInterpolateParams,\n              message.titleInterpolateParams\n            );\n            break;\n          case MessageType.SHOW:\n            messageShown = this.show(\n              message.text,\n              message.title,\n              message.options,\n              message.textInterpolateParams,\n              message.titleInterpolateParams\n            );\n            break;\n          case MessageType.ALERT:\n          case MessageType.WARNING:\n            messageShown = this.alert(\n              message.text,\n              message.title,\n              message.options,\n              message.textInterpolateParams,\n              message.titleInterpolateParams\n            );\n            break;\n          default:\n            messageShown = this.info(\n              message.text,\n              message.title,\n              message.options,\n              message.textInterpolateParams,\n              message.titleInterpolateParams\n            );\n            break;\n        }\n        message.options.id = messageShown.toastId;\n      }\n    }\n  }\n\n  success(\n    text: string,\n    title = 'igo.core.message.success',\n    options: Partial<IndividualConfig> = {},\n    textInterpolateParams?: object,\n    titleInterpolateParams?: object\n  ): ActiveToast<any> {\n    return this.handleNgxToastr(\n      'success',\n      text,\n      title,\n      options,\n      textInterpolateParams,\n      titleInterpolateParams\n    );\n  }\n\n  error(\n    text: string,\n    title = 'igo.core.message.error',\n    options: Partial<IndividualConfig> = {},\n    textInterpolateParams?: object,\n    titleInterpolateParams?: object\n  ): ActiveToast<any> {\n    return this.handleNgxToastr(\n      'error',\n      text,\n      title,\n      options,\n      textInterpolateParams,\n      titleInterpolateParams\n    );\n  }\n\n  info(\n    text: string,\n    title = 'igo.core.message.info',\n    options: Partial<IndividualConfig> = {},\n    textInterpolateParams?: object,\n    titleInterpolateParams?: object\n  ): ActiveToast<any> {\n    return this.handleNgxToastr(\n      'info',\n      text,\n      title,\n      options,\n      textInterpolateParams,\n      titleInterpolateParams\n    );\n  }\n\n  alert(\n    text: string,\n    title = 'igo.core.message.alert',\n    options: Partial<IndividualConfig> = {},\n    textInterpolateParams?: object,\n    titleInterpolateParams?: object\n  ): ActiveToast<any> {\n    return this.handleNgxToastr(\n      'alert',\n      text,\n      title,\n      options,\n      textInterpolateParams,\n      titleInterpolateParams\n    );\n  }\n\n  show(\n    text: string,\n    title = 'igo.core.message.info',\n    options: Partial<IndividualConfig> = {},\n    textInterpolateParams?: object,\n    titleInterpolateParams?: object\n  ): ActiveToast<any> {\n    return this.handleNgxToastr(\n      'show',\n      text,\n      title,\n      options,\n      textInterpolateParams,\n      titleInterpolateParams\n    );\n  }\n\n  private handleNgxToastr(\n    type: 'alert' | 'info' | 'error' | 'success' | 'show',\n    text: string,\n    title: string,\n    options: Partial<IndividualConfig> = {},\n    textInterpolateParams?: object,\n    titleInterpolateParams?: object\n  ): ActiveToast<any> {\n    const translatedTextInterpolateParams = { ...textInterpolateParams };\n    const translatedTitlenterpolateParams = { ...titleInterpolateParams };\n\n    if (textInterpolateParams) {\n      Object.keys(textInterpolateParams).map((k) => {\n        const value = textInterpolateParams[k];\n        if (value) {\n          translatedTextInterpolateParams[k] =\n            typeof value === 'string'\n              ? this.languageService.translate.instant(value)\n              : value;\n        }\n      });\n    }\n    if (titleInterpolateParams) {\n      Object.keys(titleInterpolateParams).map((k) => {\n        if (k) {\n          const value = titleInterpolateParams[k];\n          translatedTitlenterpolateParams[k] =\n            typeof value === 'string'\n              ? this.languageService.translate.instant(value)\n              : value;\n        }\n      });\n    }\n\n    const message = this.languageService.translate.instant(\n      text,\n      translatedTextInterpolateParams\n    );\n    const translatedTitle = this.languageService.translate.instant(\n      title,\n      translatedTitlenterpolateParams\n    );\n\n    let activeToast;\n    switch (type) {\n      case 'success':\n        activeToast = this.toastr.success(message, translatedTitle, options);\n        break;\n      case 'error':\n        activeToast = this.toastr.error(message, translatedTitle, options);\n        break;\n      case 'show':\n      case 'info':\n        activeToast = this.toastr.info(message, translatedTitle, options);\n        break;\n      case 'alert':\n        activeToast = this.toastr.warning(message, translatedTitle, options);\n        break;\n    }\n    this.activeMessageTranslations.push({\n      id: activeToast.toastId,\n      titleKey: title,\n      textKey: text,\n      textInterpolateParams,\n      titleInterpolateParams\n    });\n    return activeToast;\n  }\n\n  remove(id?: number) {\n    this.toastr.remove(id);\n  }\n\n  removeAllAreNotError() {\n    for (const mess of this.messages$.value) {\n      if (mess.type !== MessageType.ERROR) {\n        this.remove(mess.options.id);\n      }\n    }\n  }\n\n  private handleTemplate(message: Message): Message {\n    if (!this.options?.template || message.html) {\n      return message;\n    }\n\n    let html = this.options?.template;\n    html = html.replace('${text}', message.text);\n    html = html.replace('${title}', message.title);\n\n    message.html = undefined;\n    message.text = html;\n    message.title = undefined;\n    return message;\n  }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}