{"version":3,"file":"trademe-ng-add-to-calendar.mjs","sources":["../../src/generators/base-calendar.generator.ts","../../src/generators/google-calendar.generator.ts","../../src/generators/ics-calendar.generator.ts","../../src/generators/outlook-calendar.generator.ts","../../src/generators/yahoo-calendar.generator.ts","../../src/model/calendar-type.enum.ts","../../src/service/ng-add-to-calendar.service.ts","../../src/ng-add-to-calendar.module.ts","../../src/index.ts","../../src/trademe-ng-add-to-calendar.ts"],"sourcesContent":["import { ICalendarEvent } from './../model/calendar-event.model';\r\n\r\nexport const MS_IN_MINUTES = 60 * 1000;\r\nexport const DATE_POCTUATION_REGEX = /-|:|\\.\\d+/g;\r\n\r\nexport abstract class BaseCalendarGenerator {\r\n    protected startTime: string;\r\n    protected endTime: string;\r\n    protected description: string;\r\n\r\n    public abstract get href(): string;\r\n\r\n    constructor(protected event: ICalendarEvent) {\r\n        this.startTime = this.formatTime(event.start);\r\n        this.endTime = this.calculateEndTime(event);\r\n        this.description = this.formatDescription(event.description || '');\r\n    }\r\n\r\n    protected get uid(): string {\r\n        return (this.s4()\r\n            + this.s4()\r\n            + '-' + this.s4()\r\n            + '-4' + this.s4().substr(0, 3)\r\n            + '-' + this.s4()\r\n            + '-' + this.s4()\r\n            + this.s4()\r\n            + this.s4()).toLowerCase();\r\n    }\r\n\r\n    protected formatDescription(description: string): string {\r\n        return description.replace(/'/g, '\\'');\r\n    }\r\n\r\n    protected formatDescriptionForOnlineCalendar(description: string): string | null {\r\n        if (description.length) {\r\n            return description.replace(/\\\\r/g, '\\n').replace(/\\\\n/g, '\\n');\r\n        }\r\n\r\n        return null;\r\n    }\r\n\r\n    protected formatTime(date: Date): string {\r\n        return date.toISOString().replace(DATE_POCTUATION_REGEX, '');\r\n    }\r\n\r\n    protected calculateEndTime(event: any): string {\r\n        if (event.end) {\r\n            return this.formatTime(event.end);\r\n        }\r\n\r\n        if (!event.duration) {\r\n            throw new Error('You have to provide either the duration or end');\r\n        }\r\n\r\n        return this.formatTime(new Date(event.start.getTime() + (event.duration * MS_IN_MINUTES)));\r\n    }\r\n\r\n    private s4(): string {\r\n        // tslint:disable-next-line\r\n        return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);\r\n    }\r\n}\r\n","import { ICalendarEvent } from '../model/calendar-event.model';\r\nimport { BaseCalendarGenerator } from './base-calendar.generator';\r\n\r\nexport const GOOGLE_URL = 'https://www.google.com/calendar/render?action=TEMPLATE';\r\nexport const DATE_POCTUATION_REGEX = /-|:|\\.\\d+/g;\r\n\r\nexport class GoogleCalendarGenerator extends BaseCalendarGenerator {\r\n\r\n    constructor(protected event: ICalendarEvent) {\r\n        super(event);\r\n    }\r\n\r\n    public get href(): string {\r\n        const chunk = encodeURI(\r\n            `${GOOGLE_URL}&dates=${(this.startTime || '')}/${(this.endTime || '')}&location=${(this.event.address || '')}&sprop=${(this.event.url || '')}`,\r\n        );\r\n\r\n        return chunk\r\n            + `&text=${encodeURIComponent(this.event.title || '')}`\r\n            + `&details=${encodeURIComponent(this.formatDescriptionForOnlineCalendar(this.event.description || '') || '')}`;\r\n    }\r\n}\r\n","import { ICalendarEvent } from '../model/calendar-event.model';\r\nimport { BaseCalendarGenerator } from './base-calendar.generator';\r\n\r\nexport class IcsCalendarGenerator extends BaseCalendarGenerator {\r\n\r\n    constructor(protected event: ICalendarEvent) {\r\n        super(event);\r\n    }\r\n\r\n    public get href(): string {\r\n        return encodeURI(\r\n            'data:text/calendar;charset=utf8,' + [\r\n            'BEGIN:VCALENDAR',\r\n            'PRODID:-//Destination Search//ical4j 1.0//EN',\r\n            'VERSION:2.0',\r\n            'CALSCALE:GREGORIAN',\r\n            'X-MS-OLK-FORCEINSPECTOROPEN:true',\r\n            'METHOD:PUBLISH',\r\n            'BEGIN:VEVENT',\r\n            `URL:${this.event.url || ''}`,\r\n            `DTSTART:${(this.startTime || '')}`,\r\n            `DTEND:${(this.endTime || '')}`,\r\n            `SUMMARY:${(this.event.title || '')}`,\r\n            `DESCRIPTION:${(this.event.description || '')}`,\r\n            `LOCATION:${(this.event.address || '')}`,\r\n            'SEQUENCE:0',\r\n            `DTSTAMP:${this.dtStamp}`,\r\n            `UID:${this.uid}`,\r\n            'END:VEVENT',\r\n            'END:VCALENDAR'].join('\\n'));\r\n    }\r\n\r\n    private get dtStamp() {\r\n        return this.formatTime(new Date());\r\n    }\r\n}\r\n","import { ICalendarEvent } from '../model/calendar-event.model';\r\nimport { BaseCalendarGenerator } from './base-calendar.generator';\r\n\r\n// tslint:disable-next-line\r\nexport const OUTLOOK_BASE_URL = 'https://outlook.live.com/owa/?rru=addevent&path=%2fcalendar%2fview%2fMonth&authRedirect=true&realm=live.com&whr=live.com&CBCXT=out&fl=wld';\r\nexport const DATE_POCTUATION_REGEX = /-|:|\\.\\d+/g;\r\n\r\nexport class OutlookCalendarGenerator extends BaseCalendarGenerator {\r\n\r\n    constructor(protected event: ICalendarEvent) {\r\n        super(event);\r\n    }\r\n\r\n    public get href(): string {\r\n        const chunk = encodeURI(\r\n            `${OUTLOOK_BASE_URL}&startdt=${(this.startTime || '')}&enddt=${(this.endTime || '')}&uid=${this.uid}&location=${this.event.address}`);\r\n\r\n        return chunk\r\n            + `&subject=${encodeURIComponent(this.event.title || '')}`\r\n            + `&body=${encodeURIComponent(this.formatDescriptionForOnlineCalendar(this.event.description || '') || '')}`;\r\n    }\r\n}\r\n","import { ICalendarEvent } from '../model/calendar-event.model';\r\nimport { BaseCalendarGenerator, MS_IN_MINUTES } from './base-calendar.generator';\r\n\r\nexport const YAHOO_URL = 'http://calendar.yahoo.com/?v=60&view=d&type=20';\r\n\r\nexport class YahooCalendarGenerator extends BaseCalendarGenerator {\r\n\r\n    constructor(protected event: ICalendarEvent) {\r\n        super(event);\r\n    }\r\n\r\n    private getYahooEventDuration() {\r\n        const eventDuration = this.event.end ?\r\n            ((this.event.end.getTime() - this.event.start.getTime()) / MS_IN_MINUTES) :\r\n            this.event.duration;\r\n\r\n        // Yahoo dates are crazy, we need to convert the duration from minutes to hh:mm\r\n        const yahooHourDuration = eventDuration < 600 ?\r\n            `0${Math.floor((eventDuration / 60))}` :\r\n            `${Math.floor((eventDuration / 60))}`;\r\n\r\n        const yahooMinuteDuration = eventDuration % 60 < 10 ?\r\n            `0${eventDuration % 60}` :\r\n            `${eventDuration % 60}`;\r\n\r\n        return yahooHourDuration + yahooMinuteDuration;\r\n    }\r\n\r\n    public get href(): string {\r\n        const chunk = encodeURI(\r\n            `${YAHOO_URL}&st=${this.startTime || ''}&dur=${(this.getYahooEventDuration() || '')}&in_loc=${(this.event.address || '')}&url=${(this.event.url || '')}`,\r\n        );\r\n        return chunk\r\n            + `&title=${encodeURIComponent(this.event.title || '')}`\r\n            + `&desc=${encodeURIComponent(this.formatDescriptionForOnlineCalendar(this.event.description || '') || '')}`;\r\n    }\r\n}\r\n","export enum CalendarTypeEnum {\r\n    google = 0,\r\n    yahoo = 1,\r\n    iCalendar = 2,\r\n    outlook = 3,\r\n    outlookLive = 4,\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { BaseCalendarGenerator } from './../generators/base-calendar.generator';\r\nimport { GoogleCalendarGenerator } from './../generators/google-calendar.generator';\r\nimport { IcsCalendarGenerator } from './../generators/ics-calendar.generator';\r\nimport { OutlookCalendarGenerator } from './../generators/outlook-calendar.generator';\r\nimport { YahooCalendarGenerator } from './../generators/yahoo-calendar.generator';\r\nimport { CalendarTypeEnum } from './../model/calendar-type.enum';\r\nimport { ICalendarEvent } from './../model/calendar-event.model';\r\n\r\n@Injectable()\r\nexport class NgAddToCalendarService {\r\n\r\n  public calendarType: typeof CalendarTypeEnum = CalendarTypeEnum;\r\n\r\n  public getHrefFor(type: CalendarTypeEnum, event: ICalendarEvent): string {\r\n    const generatorType = this.getGeneratorFor(type) as any;\r\n\r\n    return (new generatorType(event) as BaseCalendarGenerator).href;\r\n  }\r\n\r\n  // tslint:disable-next-line:member-ordering\r\n  private _factory: typeof BaseCalendarGenerator[] = [\r\n    GoogleCalendarGenerator,\r\n    YahooCalendarGenerator,\r\n    IcsCalendarGenerator,\r\n    IcsCalendarGenerator,\r\n    OutlookCalendarGenerator\r\n  ];\r\n\r\n  private getGeneratorFor(type: CalendarTypeEnum): typeof BaseCalendarGenerator {\r\n    return this._factory[type];\r\n  }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\n\r\nimport { NgAddToCalendarService } from './service/ng-add-to-calendar.service';\r\n\r\n@NgModule({\r\n  declarations: [],\r\n  providers: [NgAddToCalendarService],\r\n  exports: []\r\n})\r\n\r\nexport class NgAddToCalendarModule { }\r\n","// Public classes.\r\nexport { NgAddToCalendarService } from './service/ng-add-to-calendar.service';\r\nexport { NgAddToCalendarModule } from './ng-add-to-calendar.module';\r\nexport { ICalendarEvent } from './model/calendar-event.model';\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["DATE_POCTUATION_REGEX"],"mappings":"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"}