{"version":3,"file":"toolbox-email.mjs","sources":["../../../projects/toolbox/email/email-info.ts","../../../projects/toolbox/email/email.service.ts","../../../projects/toolbox/email/toolbox-email.ts"],"sourcesContent":["/**\r\n * Entity to model an email message to send to the server ToolBox.\r\n */\r\nexport class TbxEmailInfo {\r\n  /**\r\n   * Initializes a new instance of the {@link TbxEmailInfo} class.\r\n   *\r\n   * @param to a list of emails separated by a comma (,) or semicolon (;).\r\n   * @param subject The email subject.\r\n   * @param body The email body.\r\n   * @param cc A list of emails separated by a comma (,) or semicolon (;).\r\n   * @param bcc A list of emails separated by a comma (,) or semicolon (;).\r\n   * @param files A list of files to attach separated by a comma or semicolon.\r\n   */\r\n  public constructor(\r\n    public to: string,\r\n    public subject: string,\r\n    public body?: string,\r\n    public cc?: string,\r\n    public bcc?: string,\r\n    public files?: string[]\r\n  ) {\r\n    this.cc = cc !== undefined ? cc : \"\";\r\n    this.bcc = bcc !== undefined ? bcc : \"\";\r\n  }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { HttpClient, HttpHeaders } from \"@angular/common/http\";\r\nimport { firstValueFrom, of } from \"rxjs\";\r\nimport { catchError } from \"rxjs/operators\";\r\n\r\nimport { TbxEmailInfo } from \"./email-info\";\r\n\r\n/**\r\n * Sends email through the internal SMTP server using the ToolBox.\r\n */\r\n@Injectable( { providedIn: \"root\" } )\r\nexport class TbxEmailService {\r\n  /** Gets or sets the URL to the ToolBox SendMail endpoint. */\r\n  public smtpUrl = \"api/toolbox/sendmail\";\r\n\r\n  public constructor( private readonly http: HttpClient ) {\r\n  }\r\n\r\n  /**\r\n   * Sends an email.\r\n   * @param email - The email to send.\r\n   * @returns An observable that indicates success or failure.\r\n   */\r\n  public async send( email: TbxEmailInfo ): Promise<boolean> {\r\n    return this.doSendEmail( email );\r\n  }\r\n\r\n  /**\r\n   * Sends an email.\r\n   * @param to - A list of emails separated by a comma (,) or semicolon (;).\r\n   * @param subject - The email subject.\r\n   * @param body - The message to send.\r\n   * @param cc - A list of emails separated by a comma (,) or semicolon (;).\r\n   * @param bcc - A list of emails separated by a comma (,) or semicolon (;).\r\n   * @returns An observable that indicates success or failure.\r\n   */\r\n  public async sendEmail(\r\n    to: string,\r\n    subject: string,\r\n    body?: string,\r\n    cc?: string,\r\n    bcc?: string\r\n  ): Promise<boolean> {\r\n    return this.doSendEmail( new TbxEmailInfo( to, subject, body, cc, bcc ) );\r\n  }\r\n\r\n  /**\r\n   * Sends the email.\r\n   * @param emailInfo - The email message.\r\n   * @returns A promise that indicates success or failure.\r\n   */\r\n  private async doSendEmail( emailInfo: TbxEmailInfo ): Promise<boolean> {\r\n    const options = {\r\n      withCredentials: true,\r\n      headers: new HttpHeaders( {\r\n        \"content-Type\": \"application/json; charset=utf-8\",\r\n        accept: \"application/json\",\r\n        \"x-Requested-With\": \"XMLHttpRequest\"\r\n      } )\r\n    };\r\n\r\n    return firstValueFrom(\r\n      this.http\r\n          .post<boolean>( this.smtpUrl, emailInfo, options )\r\n          .pipe(\r\n            catchError( error => {\r\n              console.error( \"Error sending email\", error );\r\n\r\n              return of( false );\r\n            } )\r\n          )\r\n    );\r\n  }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;AAAA;;AAEG;MACU,YAAY,CAAA;AACvB;;;;;;;;;AASG;IACH,WAAA,CACS,EAAU,EACV,OAAe,EACf,IAAa,EACb,EAAW,EACX,GAAY,EACZ,KAAgB,EAAA;QALhB,IAAA,CAAA,EAAE,GAAF,EAAE;QACF,IAAA,CAAA,OAAO,GAAP,OAAO;QACP,IAAA,CAAA,IAAI,GAAJ,IAAI;QACJ,IAAA,CAAA,EAAE,GAAF,EAAE;QACF,IAAA,CAAA,GAAG,GAAH,GAAG;QACH,IAAA,CAAA,KAAK,GAAL,KAAK;AAEZ,QAAA,IAAI,CAAC,EAAE,GAAG,EAAE,KAAK,SAAS,GAAG,EAAE,GAAG,EAAE;AACpC,QAAA,IAAI,CAAC,GAAG,GAAG,GAAG,KAAK,SAAS,GAAG,GAAG,GAAG,EAAE;;AAE1C;;AClBD;;AAEG;MAEU,eAAe,CAAA;AAI1B,IAAA,WAAA,CAAqC,IAAgB,EAAA;QAAhB,IAAA,CAAA,IAAI,GAAJ,IAAI;;QAFlC,IAAA,CAAA,OAAO,GAAG,sBAAsB;;AAKvC;;;;AAIG;IACI,MAAM,IAAI,CAAE,KAAmB,EAAA;AACpC,QAAA,OAAO,IAAI,CAAC,WAAW,CAAE,KAAK,CAAE;;AAGlC;;;;;;;;AAQG;IACI,MAAM,SAAS,CACpB,EAAU,EACV,OAAe,EACf,IAAa,EACb,EAAW,EACX,GAAY,EAAA;AAEZ,QAAA,OAAO,IAAI,CAAC,WAAW,CAAE,IAAI,YAAY,CAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,CAAE,CAAE;;AAG3E;;;;AAIG;IACK,MAAM,WAAW,CAAE,SAAuB,EAAA;AAChD,QAAA,MAAM,OAAO,GAAG;AACd,YAAA,eAAe,EAAE,IAAI;YACrB,OAAO,EAAE,IAAI,WAAW,CAAE;AACxB,gBAAA,cAAc,EAAE,iCAAiC;AACjD,gBAAA,MAAM,EAAE,kBAAkB;AAC1B,gBAAA,kBAAkB,EAAE;aACrB;SACF;AAED,QAAA,OAAO,cAAc,CACnB,IAAI,CAAC;aACA,IAAI,CAAW,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO;AAC/C,aAAA,IAAI,CACH,UAAU,CAAE,KAAK,IAAG;AAClB,YAAA,OAAO,CAAC,KAAK,CAAE,qBAAqB,EAAE,KAAK,CAAE;AAE7C,YAAA,OAAO,EAAE,CAAE,KAAK,CAAE;SACnB,CAAE,CACJ,CACN;;8GA5DQ,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAf,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,cADD,MAAM,EAAA,CAAA,CAAA;;2FACpB,eAAe,EAAA,UAAA,EAAA,CAAA;kBAD3B,UAAU;mBAAE,EAAE,UAAU,EAAE,MAAM,EAAE;;;ACVnC;;AAEG;;;;"}