text: "use strict";
  
  Object.defineProperty(exports, "__esModule", {
    value: true
  });
  exports["default"] = formatEvent;
  
  var _utils = require("../utils");
  
  function formatEvent() {
    var attributes = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
    var title = attributes.title,
        productId = attributes.productId,
        method = attributes.method,
        uid = attributes.uid,
        sequence = attributes.sequence,
        timestamp = attributes.timestamp,
        start = attributes.start,
        startType = attributes.startType,
        startInputType = attributes.startInputType,
        startOutputType = attributes.startOutputType,
        duration = attributes.duration,
        end = attributes.end,
        endInputType = attributes.endInputType,
        endOutputType = attributes.endOutputType,
        description = attributes.description,
        url = attributes.url,
        geo = attributes.geo,
        location = attributes.location,
        status = attributes.status,
        categories = attributes.categories,
        organizer = attributes.organizer,
        attendees = attributes.attendees,
        alarms = attributes.alarms,
        recurrenceRule = attributes.recurrenceRule,
        busyStatus = attributes.busyStatus,
        classification = attributes.classification,
        created = attributes.created,
        lastModified = attributes.lastModified,
        calName = attributes.calName,
        htmlContent = attributes.htmlContent;
    var icsFormat = '';
    icsFormat += 'BEGIN:VCALENDAR\r\n';
    icsFormat += 'VERSION:2.0\r\n';
    icsFormat += 'CALSCALE:GREGORIAN\r\n';
    icsFormat += (0, _utils.foldLine)("PRODID:".concat(productId)) + '\r\n';
    icsFormat += (0, _utils.foldLine)("METHOD:".concat(method)) + '\r\n';
    icsFormat += calName ? (0, _utils.foldLine)("X-WR-CALNAME:".concat(calName)) + '\r\n' : '';
    icsFormat += "X-PUBLISHED-TTL:PT1H\r\n";
    icsFormat += 'BEGIN:VEVENT\r\n';
    icsFormat += "UID:".concat(uid, "\r\n");
    icsFormat += (0, _utils.foldLine)("SUMMARY:".concat(title ? (0, _utils.setSummary)(title) : title)) + '\r\n';
    icsFormat += "DTSTAMP:".concat(timestamp, "\r\n"); // All day events like anniversaries must be specified as VALUE type DATE
  
    icsFormat += "DTSTART".concat(start && start.length == 3 ? ";VALUE=DATE" : "", ":").concat((0, _utils.formatDate)(start, startOutputType || startType, startInputType), "\r\n"); // End is not required for all day events on single days (like anniversaries)
  
    if (!end || end.length !== 3 || start.length !== end.length || start.some(function (val, i) {
      return val !== end[i];
    })) {
      if (end) {
        icsFormat += "DTEND".concat(end.length === 3 ? ";VALUE=DATE" : "", ":").concat((0, _utils.formatDate)(end, endOutputType || startOutputType || startType, endInputType || startInputType), "\r\n");
      }
    }
  
    icsFormat += sequence ? "SEQUENCE:".concat(sequence, "\r\n") : '';
    icsFormat += description ? (0, _utils.foldLine)("DESCRIPTION:".concat((0, _utils.setDescription)(description))) + '\r\n' : '';
    icsFormat += url ? (0, _utils.foldLine)("URL:".concat(url)) + '\r\n' : '';
    icsFormat += geo ? (0, _utils.foldLine)("GEO:".concat((0, _utils.setGeolocation)(geo))) + '\r\n' : '';
    icsFormat += location ? (0, _utils.foldLine)("LOCATION:".concat((0, _utils.setLocation)(location))) + '\r\n' : '';
    icsFormat += status ? (0, _utils.foldLine)("STATUS:".concat(status)) + '\r\n' : '';
    icsFormat += categories ? (0, _utils.foldLine)("CATEGORIES:".concat(categories)) + '\r\n' : '';
    icsFormat += organizer ? (0, _utils.foldLine)("ORGANIZER;".concat((0, _utils.setOrganizer)(organizer))) + '\r\n' : '';
    icsFormat += busyStatus ? (0, _utils.foldLine)("X-MICROSOFT-CDO-BUSYSTATUS:".concat(busyStatus)) + '\r\n' : '';
    icsFormat += classification ? (0, _utils.foldLine)("CLASS:".concat(classification)) + '\r\n' : '';
    icsFormat += created ? 'CREATED:' + (0, _utils.formatDate)(created) + '\r\n' : '';
    icsFormat += lastModified ? 'LAST-MODIFIED:' + (0, _utils.formatDate)(lastModified) + '\r\n' : '';
    icsFormat += htmlContent ? (0, _utils.foldLine)("X-ALT-DESC;FMTTYPE=text/html:".concat(htmlContent)) + '\r\n' : '';
  
    if (attendees) {
      attendees.map(function (attendee) {
        icsFormat += (0, _utils.foldLine)("ATTENDEE;".concat((0, _utils.setContact)(attendee))) + '\r\n';
      });
    }
  
    if (alarms) {
      alarms.map(function (alarm) {
        icsFormat += (0, _utils.setAlarm)(alarm);
      });
    }
  
    icsFormat += recurrenceRule ? "RRULE:".concat(recurrenceRule, "\r\n") : '';
    icsFormat += duration ? "DURATION:".concat((0, _utils.formatDuration)(duration), "\r\n") : '';
    icsFormat += "END:VEVENT\r\n";
    icsFormat += "END:VCALENDAR\r\n";
    return icsFormat;
  }