/* Minification failed. Returning unminified contents.
(1260,1-6): run-time error JS1195: Expected expression: class
(1261,32-33): run-time error JS1004: Expected ';': {
(1267,37-38): run-time error JS1004: Expected ';': {
(1281,28-29): run-time error JS1003: Expected ':': (
(1281,36-37): run-time error JS1100: Expected ',': {
(1284,18-19): run-time error JS1195: Expected expression: ,
(1288,18-19): run-time error JS1195: Expected expression: ,
(1292,18-19): run-time error JS1195: Expected expression: ,
(1296,18-19): run-time error JS1195: Expected expression: ,
(1299,18-19): run-time error JS1195: Expected expression: ,
(1302,18-19): run-time error JS1195: Expected expression: ,
(1305,18-19): run-time error JS1195: Expected expression: ,
(1315,81-82): run-time error JS1014: Invalid character: `
(1315,83-84): run-time error JS1004: Expected ';': {
(1315,198-199): run-time error JS1014: Invalid character: `
(1328,9-10): run-time error JS1002: Syntax error: }
(1332,5-6): run-time error JS1002: Syntax error: }
(1341,5-6): run-time error JS1002: Syntax error: }
(1342,5-27): run-time error JS1197: Too many errors. The file might not be a JavaScript file: CreateToolbarContainer
 */
var Environment;
(function (Environment) {
    var Configuration = /** @class */ (function () {
        function Configuration() {
            this.PassleWebRoot = 'www.passle.net';
            this.ClientWebAPIRoot = 'clientapi.passle.net';
            this.ClientWebSDKRoot = 'sdk.passle.net';
            this.FacebookAppId = '291505782785530';
            this.GoogleAnalyticsId = 'UA-35515402-1';
        }
        return Configuration;
    }());
    Environment.Configuration = Configuration;
})(Environment || (Environment = {}));
var PassleEnvironmentConfig = new Environment.Configuration();
;
/// <reference path="../../models/currentuser.ts" />
var PassleEvents;
(function (PassleEvents) {
    var EventHandler = /** @class */ (function () {
        function EventHandler(handlerFunction, order) {
            this.handlerFunction = handlerFunction;
            this.order = order;
        }
        return EventHandler;
    }());
    PassleEvents.EventHandler = EventHandler;
    var EventHandlerWithData = /** @class */ (function () {
        function EventHandlerWithData(handlerFunction, order) {
            this.handlerFunction = handlerFunction;
            this.order = order;
        }
        return EventHandlerWithData;
    }());
    PassleEvents.EventHandlerWithData = EventHandlerWithData;
    var Event = /** @class */ (function () {
        function Event() {
            this.handlers = [];
        }
        Event.prototype.on = function (handler) {
            var eventHandler = new EventHandler(handler, 50);
            this.handlers.push(eventHandler);
        };
        Event.prototype.onOrdered = function (order, handler) {
            var eventHandler = new EventHandler(handler, order);
            this.handlers.push(eventHandler);
        };
        Event.prototype.off = function (handler) {
            this.handlers = this.handlers.filter(function (h) { return h.handlerFunction !== handler; });
        };
        Event.prototype.trigger = function () {
            if (this.handlers) {
                var orderedHandlers = this.handlers.sort(function (a, b) { return a.order - b.order; });
                orderedHandlers.forEach(function (h) {
                    try {
                        h.handlerFunction();
                    }
                    catch (err) {
                        if (window.console) {
                            console.log("Error executing handler for event subscriber");
                            console.log(err);
                        }
                    }
                });
            }
        };
        return Event;
    }());
    PassleEvents.Event = Event;
    var EventWithData = /** @class */ (function () {
        function EventWithData() {
            this.handlers = [];
        }
        EventWithData.prototype.on = function (handler) {
            var eventHandler = new EventHandlerWithData(handler, 50);
            this.handlers.push(eventHandler);
        };
        EventWithData.prototype.onOrdered = function (order, handler) {
            var eventHandler = new EventHandlerWithData(handler, order);
            this.handlers.push(eventHandler);
        };
        EventWithData.prototype.off = function (handler) {
            this.handlers = this.handlers.filter(function (h) { return h.handlerFunction !== handler; });
        };
        EventWithData.prototype.trigger = function (data) {
            if (this.handlers) {
                var orderedHandlers = this.handlers.sort(function (a, b) { return a.order - b.order; });
                orderedHandlers.forEach(function (h) {
                    try {
                        h.handlerFunction(data);
                    }
                    catch (err) {
                        if (window.console) {
                            console.log("Error executing handler for event subscriber");
                            console.log(err);
                        }
                    }
                });
            }
        };
        return EventWithData;
    }());
    PassleEvents.EventWithData = EventWithData;
    var Global = /** @class */ (function () {
        function Global() {
            this.CurrentUserDataAvailable = new EventWithData();
            this.ClientHostingDataAvailable = new EventWithData();
            this.UserTrackingDataAvailable = new EventWithData();
            this.ClientWebTrackingDataAvailable = new EventWithData();
            this.ClientWebLikePostRequestComplete = new EventWithData();
            this.InitDebugEventLogging = new Event();
            this.NewPostsLoaded = new Event();
        }
        return Global;
    }());
    PassleEvents.Global = Global;
    var CurrentUserData = /** @class */ (function () {
        function CurrentUserData(likedPostShortcodes) {
            this.likedPostShortcodes = likedPostShortcodes;
        }
        return CurrentUserData;
    }());
    PassleEvents.CurrentUserData = CurrentUserData;
    var ClientHostingDataAvailableEventData = /** @class */ (function () {
        function ClientHostingDataAvailableEventData(profilePath, postPath) {
            this.profilePath = profilePath;
            this.postPath = postPath;
        }
        return ClientHostingDataAvailableEventData;
    }());
    PassleEvents.ClientHostingDataAvailableEventData = ClientHostingDataAvailableEventData;
    var UserTrackingDataAvailableEventData = /** @class */ (function () {
        function UserTrackingDataAvailableEventData(currentUser, postShortcode, profilePersonShortcode, passleShortcode, subscriberIds) {
            this.currentUser = currentUser;
            this.postShortcode = postShortcode;
            this.profilePersonShortcode = profilePersonShortcode;
            this.passleShortcode = passleShortcode;
            this.subscriberIds = subscriberIds;
        }
        return UserTrackingDataAvailableEventData;
    }());
    PassleEvents.UserTrackingDataAvailableEventData = UserTrackingDataAvailableEventData;
    var ClientWebTrackingDataAvailableEventData = /** @class */ (function () {
        function ClientWebTrackingDataAvailableEventData(userShortcode, subscriberIds, postShortcode, profilePersonShortcode, passleShortcode) {
            this.userShortcode = userShortcode;
            this.subscriberIds = subscriberIds;
            this.postShortcode = postShortcode;
            this.profilePersonShortcode = profilePersonShortcode;
            this.passleShortcode = passleShortcode;
        }
        return ClientWebTrackingDataAvailableEventData;
    }());
    PassleEvents.ClientWebTrackingDataAvailableEventData = ClientWebTrackingDataAvailableEventData;
    var ClientWebLikePostRequestCompleteEventData = /** @class */ (function () {
        function ClientWebLikePostRequestCompleteEventData(postShortcode, like, success) {
            this.postShortcode = postShortcode;
            this.like = like;
            this.success = success;
        }
        return ClientWebLikePostRequestCompleteEventData;
    }());
    PassleEvents.ClientWebLikePostRequestCompleteEventData = ClientWebLikePostRequestCompleteEventData;
})(PassleEvents || (PassleEvents = {}));
var PassleGlobalEvents = new PassleEvents.Global();
;
var Passel;
(function (Passel) {
    var API;
    (function (API) {
        var Core;
        (function (Core) {
            var BulkImport;
            (function (BulkImport) {
                var BulkImportStatus;
                (function (BulkImportStatus) {
                    BulkImportStatus[BulkImportStatus["Uploaded"] = 0] = "Uploaded";
                    BulkImportStatus[BulkImportStatus["Queued"] = 1] = "Queued";
                    BulkImportStatus[BulkImportStatus["InProgress"] = 2] = "InProgress";
                    BulkImportStatus[BulkImportStatus["Complete"] = 3] = "Complete";
                })(BulkImportStatus = BulkImport.BulkImportStatus || (BulkImport.BulkImportStatus = {}));
            })(BulkImport = Core.BulkImport || (Core.BulkImport = {}));
        })(Core = API.Core || (API.Core = {}));
    })(API = Passel.API || (Passel.API = {}));
})(Passel || (Passel = {}));
(function (Passel) {
    var API;
    (function (API) {
        var Domain;
        (function (Domain) {
            var EmbeddedObjects;
            (function (EmbeddedObjects) {
                var EmbeddedObjectType;
                (function (EmbeddedObjectType) {
                    EmbeddedObjectType[EmbeddedObjectType["None"] = 0] = "None";
                    EmbeddedObjectType[EmbeddedObjectType["YoutubeVideo"] = 1] = "YoutubeVideo";
                    EmbeddedObjectType[EmbeddedObjectType["VimeoVideo"] = 2] = "VimeoVideo";
                    EmbeddedObjectType[EmbeddedObjectType["SlideSharePresentation"] = 3] = "SlideSharePresentation";
                    EmbeddedObjectType[EmbeddedObjectType["DailyMotionVideo"] = 4] = "DailyMotionVideo";
                    EmbeddedObjectType[EmbeddedObjectType["Buto"] = 5] = "Buto";
                    EmbeddedObjectType[EmbeddedObjectType["SoundCloud"] = 6] = "SoundCloud";
                    EmbeddedObjectType[EmbeddedObjectType["PodBean"] = 7] = "PodBean";
                })(EmbeddedObjectType = EmbeddedObjects.EmbeddedObjectType || (EmbeddedObjects.EmbeddedObjectType = {}));
            })(EmbeddedObjects = Domain.EmbeddedObjects || (Domain.EmbeddedObjects = {}));
        })(Domain = API.Domain || (API.Domain = {}));
    })(API = Passel.API || (Passel.API = {}));
})(Passel || (Passel = {}));
(function (Passel) {
    var API;
    (function (API) {
        var Domain;
        (function (Domain) {
            var Models;
            (function (Models) {
                var ImageSource;
                (function (ImageSource) {
                    ImageSource[ImageSource["Unknown"] = 0] = "Unknown";
                    ImageSource[ImageSource["ScrapedFromPage"] = 1] = "ScrapedFromPage";
                    ImageSource[ImageSource["FromOpenGraphTags"] = 2] = "FromOpenGraphTags";
                    ImageSource[ImageSource["FromFlickr"] = 3] = "FromFlickr";
                    ImageSource[ImageSource["UploadedByUser"] = 4] = "UploadedByUser";
                    ImageSource[ImageSource["Pixabay"] = 5] = "Pixabay";
                    ImageSource[ImageSource["PDFGeneratedThumbnail"] = 6] = "PDFGeneratedThumbnail";
                    ImageSource[ImageSource["GettyiStock"] = 7] = "GettyiStock";
                    ImageSource[ImageSource["VideoGeneratedThumbnail"] = 8] = "VideoGeneratedThumbnail";
                })(ImageSource = Models.ImageSource || (Models.ImageSource = {}));
                var UserType;
                (function (UserType) {
                    UserType[UserType["Standard"] = 0] = "Standard";
                    UserType[UserType["LegacySubscriber"] = 1] = "LegacySubscriber";
                    UserType[UserType["SystemAdministrator"] = 2] = "SystemAdministrator";
                    UserType[UserType["Subscriber"] = 3] = "Subscriber";
                })(UserType = Models.UserType || (Models.UserType = {}));
            })(Models = Domain.Models || (Domain.Models = {}));
        })(Domain = API.Domain || (API.Domain = {}));
    })(API = Passel.API || (Passel.API = {}));
})(Passel || (Passel = {}));
(function (Passel) {
    var API;
    (function (API) {
        var Domain;
        (function (Domain) {
            var Models;
            (function (Models) {
                var AppFeatures;
                (function (AppFeatures_1) {
                    var AppFeatures;
                    (function (AppFeatures) {
                        AppFeatures[AppFeatures["None"] = 0] = "None";
                        AppFeatures[AppFeatures["SendISTATOYToApp"] = 1] = "SendISTATOYToApp";
                    })(AppFeatures = AppFeatures_1.AppFeatures || (AppFeatures_1.AppFeatures = {}));
                })(AppFeatures = Models.AppFeatures || (Models.AppFeatures = {}));
            })(Models = Domain.Models || (Domain.Models = {}));
        })(Domain = API.Domain || (API.Domain = {}));
    })(API = Passel.API || (Passel.API = {}));
})(Passel || (Passel = {}));
(function (Passel) {
    var API;
    (function (API) {
        var Domain;
        (function (Domain) {
            var Models;
            (function (Models) {
                var Bookmark;
                (function (Bookmark) {
                    var BookmarkStep;
                    (function (BookmarkStep) {
                        BookmarkStep[BookmarkStep["None"] = 0] = "None";
                        BookmarkStep[BookmarkStep["Options"] = 1] = "Options";
                        BookmarkStep[BookmarkStep["Publish"] = 2] = "Publish";
                        BookmarkStep[BookmarkStep["RequestApproval"] = 3] = "RequestApproval";
                        BookmarkStep[BookmarkStep["TwitterPicker"] = 4] = "TwitterPicker";
                    })(BookmarkStep = Bookmark.BookmarkStep || (Bookmark.BookmarkStep = {}));
                })(Bookmark = Models.Bookmark || (Models.Bookmark = {}));
            })(Models = Domain.Models || (Domain.Models = {}));
        })(Domain = API.Domain || (API.Domain = {}));
    })(API = Passel.API || (Passel.API = {}));
})(Passel || (Passel = {}));
(function (Passel) {
    var API;
    (function (API) {
        var Domain;
        (function (Domain) {
            var Models;
            (function (Models) {
                var Client;
                (function (Client) {
                    var ClientType;
                    (function (ClientType) {
                        ClientType[ClientType["StandardClient"] = 0] = "StandardClient";
                        ClientType[ClientType["TestClient"] = 1] = "TestClient";
                        ClientType[ClientType["NonPayingClient"] = 2] = "NonPayingClient";
                    })(ClientType = Client.ClientType || (Client.ClientType = {}));
                })(Client = Models.Client || (Models.Client = {}));
            })(Models = Domain.Models || (Domain.Models = {}));
        })(Domain = API.Domain || (API.Domain = {}));
    })(API = Passel.API || (Passel.API = {}));
})(Passel || (Passel = {}));
(function (Passel) {
    var API;
    (function (API) {
        var Domain;
        (function (Domain) {
            var Models;
            (function (Models) {
                var CustomDesignTemplate;
                (function (CustomDesignTemplate) {
                    var FeaturedItemPosition;
                    (function (FeaturedItemPosition) {
                        FeaturedItemPosition[FeaturedItemPosition["None"] = 0] = "None";
                        FeaturedItemPosition[FeaturedItemPosition["ContentBottom"] = 1] = "ContentBottom";
                        FeaturedItemPosition[FeaturedItemPosition["ContentTop"] = 2] = "ContentTop";
                        FeaturedItemPosition[FeaturedItemPosition["Header"] = 3] = "Header";
                    })(FeaturedItemPosition = CustomDesignTemplate.FeaturedItemPosition || (CustomDesignTemplate.FeaturedItemPosition = {}));
                })(CustomDesignTemplate = Models.CustomDesignTemplate || (Models.CustomDesignTemplate = {}));
            })(Models = Domain.Models || (Domain.Models = {}));
        })(Domain = API.Domain || (API.Domain = {}));
    })(API = Passel.API || (Passel.API = {}));
})(Passel || (Passel = {}));
(function (Passel) {
    var API;
    (function (API) {
        var Domain;
        (function (Domain) {
            var Models;
            (function (Models) {
                var ISTATOY;
                (function (ISTATOY) {
                    var ISTATOYShareStatus;
                    (function (ISTATOYShareStatus) {
                        ISTATOYShareStatus[ISTATOYShareStatus["None"] = 0] = "None";
                        ISTATOYShareStatus[ISTATOYShareStatus["SentSuccessfully"] = 1] = "SentSuccessfully";
                        ISTATOYShareStatus[ISTATOYShareStatus["NotSentUserUnsubscribed"] = 2] = "NotSentUserUnsubscribed";
                        ISTATOYShareStatus[ISTATOYShareStatus["NotSentPostNotFound"] = 3] = "NotSentPostNotFound";
                        ISTATOYShareStatus[ISTATOYShareStatus["NotSentErrorOccurred"] = 4] = "NotSentErrorOccurred";
                    })(ISTATOYShareStatus = ISTATOY.ISTATOYShareStatus || (ISTATOY.ISTATOYShareStatus = {}));
                })(ISTATOY = Models.ISTATOY || (Models.ISTATOY = {}));
            })(Models = Domain.Models || (Domain.Models = {}));
        })(Domain = API.Domain || (API.Domain = {}));
    })(API = Passel.API || (Passel.API = {}));
})(Passel || (Passel = {}));
(function (Passel) {
    var API;
    (function (API) {
        var Domain;
        (function (Domain) {
            var Models;
            (function (Models) {
                var ISTATOY_Old;
                (function (ISTATOY_Old) {
                    var ISTATOYSource;
                    (function (ISTATOYSource) {
                        ISTATOYSource[ISTATOYSource["Bookmark"] = 0] = "Bookmark";
                        ISTATOYSource[ISTATOYSource["PostView"] = 1] = "PostView";
                    })(ISTATOYSource = ISTATOY_Old.ISTATOYSource || (ISTATOY_Old.ISTATOYSource = {}));
                })(ISTATOY_Old = Models.ISTATOY_Old || (Models.ISTATOY_Old = {}));
            })(Models = Domain.Models || (Domain.Models = {}));
        })(Domain = API.Domain || (API.Domain = {}));
    })(API = Passel.API || (Passel.API = {}));
})(Passel || (Passel = {}));
(function (Passel) {
    var API;
    (function (API) {
        var Domain;
        (function (Domain) {
            var Models;
            (function (Models) {
                var MediaLibrary;
                (function (MediaLibrary) {
                    var MediaType;
                    (function (MediaType) {
                        MediaType[MediaType["None"] = 0] = "None";
                        MediaType[MediaType["Image"] = 1] = "Image";
                        MediaType[MediaType["Video"] = 2] = "Video";
                        MediaType[MediaType["Audio"] = 3] = "Audio";
                        MediaType[MediaType["Embed"] = 4] = "Embed";
                        MediaType[MediaType["Font"] = 5] = "Font";
                        MediaType[MediaType["Document"] = 6] = "Document";
                    })(MediaType = MediaLibrary.MediaType || (MediaLibrary.MediaType = {}));
                })(MediaLibrary = Models.MediaLibrary || (Models.MediaLibrary = {}));
            })(Models = Domain.Models || (Domain.Models = {}));
        })(Domain = API.Domain || (API.Domain = {}));
    })(API = Passel.API || (Passel.API = {}));
})(Passel || (Passel = {}));
(function (Passel) {
    var API;
    (function (API) {
        var Domain;
        (function (Domain) {
            var Models;
            (function (Models) {
                var Messages;
                (function (Messages) {
                    var MessageAttachmentType;
                    (function (MessageAttachmentType) {
                        MessageAttachmentType[MessageAttachmentType["None"] = 0] = "None";
                        MessageAttachmentType[MessageAttachmentType["RecipientsEIScore"] = 1] = "RecipientsEIScore";
                        MessageAttachmentType[MessageAttachmentType["AllUsersEIScore"] = 2] = "AllUsersEIScore";
                        MessageAttachmentType[MessageAttachmentType["PassleUsersEIScore"] = 3] = "PassleUsersEIScore";
                    })(MessageAttachmentType = Messages.MessageAttachmentType || (Messages.MessageAttachmentType = {}));
                })(Messages = Models.Messages || (Models.Messages = {}));
            })(Models = Domain.Models || (Domain.Models = {}));
        })(Domain = API.Domain || (API.Domain = {}));
    })(API = Passel.API || (Passel.API = {}));
})(Passel || (Passel = {}));
(function (Passel) {
    var API;
    (function (API) {
        var Domain;
        (function (Domain) {
            var Models;
            (function (Models) {
                var Newsletter;
                (function (Newsletter) {
                    var NewsletterType;
                    (function (NewsletterType) {
                        NewsletterType[NewsletterType["Unknown"] = 0] = "Unknown";
                        NewsletterType[NewsletterType["Internal"] = 1] = "Internal";
                        NewsletterType[NewsletterType["External"] = 2] = "External";
                        NewsletterType[NewsletterType["LinkedIn"] = 3] = "LinkedIn";
                        NewsletterType[NewsletterType["ThirdParty"] = 4] = "ThirdParty";
                    })(NewsletterType = Newsletter.NewsletterType || (Newsletter.NewsletterType = {}));
                })(Newsletter = Models.Newsletter || (Models.Newsletter = {}));
            })(Models = Domain.Models || (Domain.Models = {}));
        })(Domain = API.Domain || (API.Domain = {}));
    })(API = Passel.API || (Passel.API = {}));
})(Passel || (Passel = {}));
(function (Passel) {
    var API;
    (function (API) {
        var Domain;
        (function (Domain) {
            var Models;
            (function (Models) {
                var PassleFiles;
                (function (PassleFiles) {
                    var TranscodingStatus;
                    (function (TranscodingStatus) {
                        TranscodingStatus[TranscodingStatus["NotStarted"] = 0] = "NotStarted";
                        TranscodingStatus[TranscodingStatus["InProgress"] = 1] = "InProgress";
                        TranscodingStatus[TranscodingStatus["Complete"] = 2] = "Complete";
                        TranscodingStatus[TranscodingStatus["Failed"] = 3] = "Failed";
                    })(TranscodingStatus = PassleFiles.TranscodingStatus || (PassleFiles.TranscodingStatus = {}));
                })(PassleFiles = Models.PassleFiles || (Models.PassleFiles = {}));
            })(Models = Domain.Models || (Domain.Models = {}));
        })(Domain = API.Domain || (API.Domain = {}));
    })(API = Passel.API || (Passel.API = {}));
})(Passel || (Passel = {}));
(function (Passel) {
    var API;
    (function (API) {
        var Domain;
        (function (Domain) {
            var Models;
            (function (Models) {
                var Passles;
                (function (Passles) {
                    var CookieControlStatus;
                    (function (CookieControlStatus) {
                        CookieControlStatus[CookieControlStatus["None"] = 0] = "None";
                        CookieControlStatus[CookieControlStatus["Disabled"] = 1] = "Disabled";
                        CookieControlStatus[CookieControlStatus["EnabledForNonPassleUsers"] = 2] = "EnabledForNonPassleUsers";
                        CookieControlStatus[CookieControlStatus["EnabledForEveryone"] = 3] = "EnabledForEveryone";
                    })(CookieControlStatus = Passles.CookieControlStatus || (Passles.CookieControlStatus = {}));
                    var HostingType;
                    (function (HostingType) {
                        HostingType[HostingType["PassleHosting"] = 0] = "PassleHosting";
                        HostingType[HostingType["CNamePassleHosting"] = 1] = "CNamePassleHosting";
                        HostingType[HostingType["RemoteHosting"] = 2] = "RemoteHosting";
                    })(HostingType = Passles.HostingType || (Passles.HostingType = {}));
                })(Passles = Models.Passles || (Models.Passles = {}));
            })(Models = Domain.Models || (Domain.Models = {}));
        })(Domain = API.Domain || (API.Domain = {}));
    })(API = Passel.API || (Passel.API = {}));
})(Passel || (Passel = {}));
(function (Passel) {
    var API;
    (function (API) {
        var Domain;
        (function (Domain) {
            var Models;
            (function (Models) {
                var PreviewState;
                (function (PreviewState_1) {
                    var PreviewState;
                    (function (PreviewState) {
                        PreviewState[PreviewState["Unknown"] = 0] = "Unknown";
                        PreviewState[PreviewState["Error"] = 1] = "Error";
                        PreviewState[PreviewState["Success"] = 2] = "Success";
                        PreviewState[PreviewState["Ignored"] = 3] = "Ignored";
                    })(PreviewState = PreviewState_1.PreviewState || (PreviewState_1.PreviewState = {}));
                })(PreviewState = Models.PreviewState || (Models.PreviewState = {}));
            })(Models = Domain.Models || (Domain.Models = {}));
        })(Domain = API.Domain || (API.Domain = {}));
    })(API = Passel.API || (Passel.API = {}));
})(Passel || (Passel = {}));
(function (Passel) {
    var API;
    (function (API) {
        var Domain;
        (function (Domain) {
            var Models;
            (function (Models) {
                var PreviewType;
                (function (PreviewType_1) {
                    var PreviewType;
                    (function (PreviewType) {
                        PreviewType[PreviewType["Passle"] = 0] = "Passle";
                        PreviewType[PreviewType["Post"] = 1] = "Post";
                        PreviewType[PreviewType["Profile"] = 2] = "Profile";
                    })(PreviewType = PreviewType_1.PreviewType || (PreviewType_1.PreviewType = {}));
                })(PreviewType = Models.PreviewType || (Models.PreviewType = {}));
            })(Models = Domain.Models || (Domain.Models = {}));
        })(Domain = API.Domain || (API.Domain = {}));
    })(API = Passel.API || (Passel.API = {}));
})(Passel || (Passel = {}));
(function (Passel) {
    var API;
    (function (API) {
        var Domain;
        (function (Domain) {
            var Models;
            (function (Models) {
                var Reporting;
                (function (Reporting) {
                    var ReportFileType;
                    (function (ReportFileType) {
                        ReportFileType[ReportFileType["None"] = 0] = "None";
                        ReportFileType[ReportFileType["CSVUserOverviewReport"] = 1] = "CSVUserOverviewReport";
                        ReportFileType[ReportFileType["CSVUserActivityReport"] = 2] = "CSVUserActivityReport";
                        ReportFileType[ReportFileType["CSVUserDetailsReport"] = 3] = "CSVUserDetailsReport";
                        ReportFileType[ReportFileType["CSVPostDetailsReport"] = 4] = "CSVPostDetailsReport";
                        ReportFileType[ReportFileType["CSVPostStatisticsReport"] = 5] = "CSVPostStatisticsReport";
                        ReportFileType[ReportFileType["CSVPassleFollowersReport"] = 6] = "CSVPassleFollowersReport";
                        ReportFileType[ReportFileType["ClientSuccessStatsReport"] = 7] = "ClientSuccessStatsReport";
                        ReportFileType[ReportFileType["TableDataReport"] = 8] = "TableDataReport";
                        ReportFileType[ReportFileType["CSVApprovalProcessReport"] = 9] = "CSVApprovalProcessReport";
                        ReportFileType[ReportFileType["CSVSuggestionSentReport"] = 10] = "CSVSuggestionSentReport";
                        ReportFileType[ReportFileType["CSVClientGroupDigestsRport"] = 11] = "CSVClientGroupDigestsRport";
                        ReportFileType[ReportFileType["CSVClientGroupSubscribersReport"] = 12] = "CSVClientGroupSubscribersReport";
                        ReportFileType[ReportFileType["CSVClientUserMilestoneReport"] = 13] = "CSVClientUserMilestoneReport";
                    })(ReportFileType = Reporting.ReportFileType || (Reporting.ReportFileType = {}));
                })(Reporting = Models.Reporting || (Models.Reporting = {}));
            })(Models = Domain.Models || (Domain.Models = {}));
        })(Domain = API.Domain || (API.Domain = {}));
    })(API = Passel.API || (Passel.API = {}));
})(Passel || (Passel = {}));
(function (Passel) {
    var API;
    (function (API) {
        var Domain;
        (function (Domain) {
            var Models;
            (function (Models) {
                var Tracking;
                (function (Tracking) {
                    var ClientSideEventAction;
                    (function (ClientSideEventAction) {
                        ClientSideEventAction[ClientSideEventAction["None"] = 0] = "None";
                        ClientSideEventAction[ClientSideEventAction["Click"] = 1] = "Click";
                        ClientSideEventAction[ClientSideEventAction["ClickLink"] = 2] = "ClickLink";
                        ClientSideEventAction[ClientSideEventAction["ClickExternalLink"] = 3] = "ClickExternalLink";
                        ClientSideEventAction[ClientSideEventAction["Load"] = 4] = "Load";
                        ClientSideEventAction[ClientSideEventAction["UploadFile"] = 5] = "UploadFile";
                        ClientSideEventAction[ClientSideEventAction["PlayVideo"] = 6] = "PlayVideo";
                        ClientSideEventAction[ClientSideEventAction["PlayAudio"] = 7] = "PlayAudio";
                        ClientSideEventAction[ClientSideEventAction["PrintPost"] = 8] = "PrintPost";
                    })(ClientSideEventAction = Tracking.ClientSideEventAction || (Tracking.ClientSideEventAction = {}));
                    var ClientSideEventCategory;
                    (function (ClientSideEventCategory) {
                        ClientSideEventCategory[ClientSideEventCategory["None"] = 0] = "None";
                        ClientSideEventCategory[ClientSideEventCategory["ShareButton"] = 1] = "ShareButton";
                        ClientSideEventCategory[ClientSideEventCategory["Email"] = 2] = "Email";
                        ClientSideEventCategory[ClientSideEventCategory["Page"] = 3] = "Page";
                        ClientSideEventCategory[ClientSideEventCategory["TopNavigation"] = 4] = "TopNavigation";
                        ClientSideEventCategory[ClientSideEventCategory["SideNavigation"] = 4] = "SideNavigation";
                        ClientSideEventCategory[ClientSideEventCategory["PostContent"] = 5] = "PostContent";
                        ClientSideEventCategory[ClientSideEventCategory["TwitterPicker"] = 6] = "TwitterPicker";
                        ClientSideEventCategory[ClientSideEventCategory["MediaLibrary"] = 7] = "MediaLibrary";
                        ClientSideEventCategory[ClientSideEventCategory["Dropzone"] = 8] = "Dropzone";
                        ClientSideEventCategory[ClientSideEventCategory["TweetThanks"] = 9] = "TweetThanks";
                        ClientSideEventCategory[ClientSideEventCategory["TertiaryNavigation"] = 10] = "TertiaryNavigation";
                        ClientSideEventCategory[ClientSideEventCategory["Notifications"] = 11] = "Notifications";
                        ClientSideEventCategory[ClientSideEventCategory["PassleHeader"] = 12] = "PassleHeader";
                        ClientSideEventCategory[ClientSideEventCategory["Breadcrumbs"] = 13] = "Breadcrumbs";
                        ClientSideEventCategory[ClientSideEventCategory["MediaPlayer"] = 14] = "MediaPlayer";
                        ClientSideEventCategory[ClientSideEventCategory["ProfilePage"] = 15] = "ProfilePage";
                        ClientSideEventCategory[ClientSideEventCategory["PostPage"] = 16] = "PostPage";
                    })(ClientSideEventCategory = Tracking.ClientSideEventCategory || (Tracking.ClientSideEventCategory = {}));
                })(Tracking = Models.Tracking || (Models.Tracking = {}));
            })(Models = Domain.Models || (Domain.Models = {}));
        })(Domain = API.Domain || (API.Domain = {}));
    })(API = Passel.API || (Passel.API = {}));
})(Passel || (Passel = {}));
(function (Passel) {
    var API;
    (function (API) {
        var Models;
        (function (Models) {
            var ProcessingStatus;
            (function (ProcessingStatus) {
                ProcessingStatus[ProcessingStatus["ProcessingNotStarted"] = 0] = "ProcessingNotStarted";
                ProcessingStatus[ProcessingStatus["ProcessingInProgress"] = 1] = "ProcessingInProgress";
                ProcessingStatus[ProcessingStatus["ProcessingComplete"] = 2] = "ProcessingComplete";
                ProcessingStatus[ProcessingStatus["ProcessingFailed"] = 3] = "ProcessingFailed";
                ProcessingStatus[ProcessingStatus["ProcessingFailedRetryRequested"] = 4] = "ProcessingFailedRetryRequested";
                ProcessingStatus[ProcessingStatus["ProcessingCancelled"] = 5] = "ProcessingCancelled";
            })(ProcessingStatus = Models.ProcessingStatus || (Models.ProcessingStatus = {}));
        })(Models = API.Models || (API.Models = {}));
    })(API = Passel.API || (Passel.API = {}));
})(Passel || (Passel = {}));
(function (Passel) {
    var API;
    (function (API) {
        var Website;
        (function (Website) {
            var Plugins;
            (function (Plugins) {
                var CookieControl;
                (function (CookieControl) {
                    var CookieControlUIMode;
                    (function (CookieControlUIMode) {
                        CookieControlUIMode[CookieControlUIMode["Open"] = 0] = "Open";
                        CookieControlUIMode[CookieControlUIMode["Minimised"] = 1] = "Minimised";
                        CookieControlUIMode[CookieControlUIMode["Accepted"] = 2] = "Accepted";
                    })(CookieControlUIMode = CookieControl.CookieControlUIMode || (CookieControl.CookieControlUIMode = {}));
                })(CookieControl = Plugins.CookieControl || (Plugins.CookieControl = {}));
            })(Plugins = Website.Plugins || (Website.Plugins = {}));
        })(Website = API.Website || (API.Website = {}));
    })(API = Passel.API || (Passel.API = {}));
})(Passel || (Passel = {}));
;
var PassleFunctions;
(function (PassleFunctions) {
    function GetParameterByName(name) {
        name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
        var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"), results = regex.exec(location.search);
        return results == null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
    }
    PassleFunctions.GetParameterByName = GetParameterByName;
    function RemoveParameterByName(name, reloadPage) {
        if (reloadPage === void 0) { reloadPage = false; }
        if (!reloadPage && typeof (history.pushState) == "undefined") {
            return;
        }
        var url = document.location.href;
        var hashFragment = document.location.hash;
        url.replace(hashFragment, '');
        var urlParts = url.split('?');
        if (urlParts.length == 1)
            return;
        url = urlParts[0] + '?';
        var params = urlParts[1].split('&');
        params.forEach(function (value) {
            var v = value.split('=');
            if (v[0] != name)
                url += value + '&';
        });
        url = url.replace(/&$/, '');
        url = url.replace(/\?$/, '');
        if (hashFragment) {
            url += hashFragment;
        }
        if (reloadPage) {
            document.location.href = url;
        }
        else {
            var obj = { Page: document.title, Url: url };
            window.history.replaceState(obj, obj.Page, obj.Url);
        }
    }
    PassleFunctions.RemoveParameterByName = RemoveParameterByName;
    function IsValidEmailAddress(email) {
        var re = /^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/;
        return re.test(email.toLowerCase());
    }
    PassleFunctions.IsValidEmailAddress = IsValidEmailAddress;
    function IsValidUrl(url) {
        try {
            var newUrl = new URL(url);
            return !!newUrl.host;
        }
        catch (error) {
            /*
             * URL regex found to match almost all possible cases for a URL.
             * Results of testing this regex against others for a number of possible values
             * can be seen in this table:
             * https://mathiasbynens.be/demo/url-regex
             */
            var re = /^(?:(?:(?:https?|ftp):)?\/\/)(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z0-9\u00a1-\uffff][a-z0-9\u00a1-\uffff_-]{0,62})?[a-z0-9\u00a1-\uffff]\.)+(?:[a-z\u00a1-\uffff]{2,}\.?))(?::\d{2,5})?(?:[/?#]\S*)?$/i;
            return re.test(url);
        }
    }
    PassleFunctions.IsValidUrl = IsValidUrl;
    function AddParameterToUrl(url, parameterName, parameterValue) {
        if (url.indexOf("?")) {
            return url + "&" + parameterName + "=" + parameterValue;
        }
        else {
            return url + "?" + parameterName + "=" + parameterValue;
        }
    }
    PassleFunctions.AddParameterToUrl = AddParameterToUrl;
    function JsonCopy(src) {
        return JSON.parse(JSON.stringify(src));
    }
    PassleFunctions.JsonCopy = JsonCopy;
    function CapitalizeString(text) {
        return text.toLowerCase().replace(/(^| )(\w)/g, function (s) { return s.toUpperCase(); });
    }
    PassleFunctions.CapitalizeString = CapitalizeString;
    function UsingFirefox() {
        return window.navigator.userAgent.toLowerCase().indexOf("firefox") > -1;
    }
    PassleFunctions.UsingFirefox = UsingFirefox;
    function ResizeIframe(obj) {
        obj.style.height = obj.contentWindow.document.body.scrollHeight + 20 + 'px';
    }
    PassleFunctions.ResizeIframe = ResizeIframe;
    //the datetime has to be passed in ISO format
    function ConvertUTCToLocalTime(dateTime) {
        return moment.utc(dateTime).local();
    }
    PassleFunctions.ConvertUTCToLocalTime = ConvertUTCToLocalTime;
    function ConvertLocalToUTCTime(dateTime, currentFormat) {
        var localTime = moment(dateTime, currentFormat);
        localTime = moment.tz(localTime, moment.tz.guess());
        return localTime.utc();
    }
    PassleFunctions.ConvertLocalToUTCTime = ConvertLocalToUTCTime;
    function CapitalizeFirstLetter(s) {
        return s[0].toUpperCase() + s.toLowerCase().slice(1);
    }
    PassleFunctions.CapitalizeFirstLetter = CapitalizeFirstLetter;
    function DecodeHtml(s) {
        return $("<div/>").html(s).text();
    }
    PassleFunctions.DecodeHtml = DecodeHtml;
    function UsingSafari() {
        var userAgent = window.navigator.userAgent.toLowerCase();
        return userAgent.indexOf("safari") > -1 && userAgent.indexOf("chrome") == -1;
    }
    PassleFunctions.UsingSafari = UsingSafari;
    function SetFocusAtTheEndOfText(identifier) {
        var text = $(identifier).val();
        $(identifier).focus().val('').val(text);
    }
    PassleFunctions.SetFocusAtTheEndOfText = SetFocusAtTheEndOfText;
    function GetStringValueFromEnum(enumType, enumValue) {
        for (var enumMember in enumType) {
            if (enumType[enumMember] == enumValue)
                return enumMember;
        }
    }
    PassleFunctions.GetStringValueFromEnum = GetStringValueFromEnum;
})(PassleFunctions || (PassleFunctions = {}));
;
/// <reference path="../modules/global/passleevents.ts" />
var EventTracking;
(function (EventTracking) {
    var TrackedEvent = /** @class */ (function () {
        function TrackedEvent(EventAction, EventCategory, EventLabel, Properties) {
            if (Properties === void 0) { Properties = {}; }
            this.EventAction = EventAction;
            this.EventCategory = EventCategory;
            this.EventLabel = EventLabel;
            this.Properties = Properties;
            this.GetLocationDetails = function () {
                return new EventLocation(location.href, document.title);
            };
            this.Location = this.GetLocationDetails();
            this.TimeStamp = new Date();
        }
        return TrackedEvent;
    }());
    EventTracking.TrackedEvent = TrackedEvent;
    var EventUser = /** @class */ (function () {
        function EventUser(UserShortcode) {
            this.UserShortcode = UserShortcode;
        }
        return EventUser;
    }());
    EventTracking.EventUser = EventUser;
    var EventLocation = /** @class */ (function () {
        function EventLocation(LocationUrl, LocationTitle) {
            this.LocationUrl = LocationUrl;
            this.LocationTitle = LocationTitle;
        }
        return EventLocation;
    }());
    EventTracking.EventLocation = EventLocation;
})(EventTracking || (EventTracking = {}));
;
/// <reference path="../../../models/trackedevent.ts" />
var EventTracking;
(function (EventTracking) {
    var Tracker = /** @class */ (function () {
        function Tracker() {
        }
        Tracker.prototype.TrackEvent = function (event) {
            if (this.CheckServiceIsAvailable()) {
                this.SendEvent(event);
            }
            else {
                this.HandleServiceUnavailable();
            }
        };
        Tracker.prototype.Initialise = function (user, subscriberIds) {
            if (this.CheckServiceIsAvailable()) {
                this.InitialiseService(user, subscriberIds);
            }
            else {
                this.HandleServiceUnavailable();
            }
        };
        Tracker.prototype.HandleServiceUnavailable = function () {
        };
        return Tracker;
    }());
    EventTracking.Tracker = Tracker;
})(EventTracking || (EventTracking = {}));
;
var __extends = (this && this.__extends) || (function () {
    var extendStatics = Object.setPrototypeOf ||
        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
    return function (d, b) {
        extendStatics(d, b);
        function __() { this.constructor = d; }
        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
    };
})();
/// <reference path="tracker.ts" />
var EventTracking;
(function (EventTracking) {
    var GoogleAnalyticsTracker = /** @class */ (function (_super) {
        __extends(GoogleAnalyticsTracker, _super);
        function GoogleAnalyticsTracker() {
            return _super !== null && _super.apply(this, arguments) || this;
        }
        GoogleAnalyticsTracker.prototype.SendEvent = function (event) {
            if (!(event.EventAction == Passel.API.Domain.Models.Tracking.ClientSideEventAction.Load && event.EventCategory == Passel.API.Domain.Models.Tracking.ClientSideEventCategory.Page)) {
                var category = PassleFunctions.GetStringValueFromEnum(Passel.API.Domain.Models.Tracking.ClientSideEventCategory, event.EventCategory);
                var action = PassleFunctions.GetStringValueFromEnum(Passel.API.Domain.Models.Tracking.ClientSideEventAction, event.EventAction);
                if (typeof window['dataLayer'] != 'undefined') {
                    //this means Google Tag Manager is enabled, so we fire events through that
                    window['dataLayer'].push({
                        'action': action,
                        'category': category,
                        'label': event.EventLabel,
                        'event': 'PassleClientWebGAEvent'
                    });
                }
            }
        };
        GoogleAnalyticsTracker.prototype.InitialiseService = function (user, subscriberIds) {
        };
        GoogleAnalyticsTracker.prototype.CheckServiceIsAvailable = function () {
            return (typeof ga != "undefined" || typeof window['dataLayer'] != 'undefined');
        };
        return GoogleAnalyticsTracker;
    }(EventTracking.Tracker));
    EventTracking.GoogleAnalyticsTracker = GoogleAnalyticsTracker;
})(EventTracking || (EventTracking = {}));
;
var __extends = (this && this.__extends) || (function () {
    var extendStatics = Object.setPrototypeOf ||
        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
    return function (d, b) {
        extendStatics(d, b);
        function __() { this.constructor = d; }
        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
    };
})();
var EventTracking;
(function (EventTracking) {
    var PassleTracker = /** @class */ (function (_super) {
        __extends(PassleTracker, _super);
        function PassleTracker() {
            return _super !== null && _super.apply(this, arguments) || this;
        }
        PassleTracker.prototype.SendEvent = function (event) {
            var category = PassleFunctions.GetStringValueFromEnum(Passel.API.Domain.Models.Tracking.ClientSideEventCategory, event.EventCategory);
            var model = {
                clientCategory: event.EventCategory,
                eventAction: event.EventAction,
                label: event.EventLabel,
                personId: this.UserShortcode,
                subscriberIds: this.SubscriberIds && Object.prototype.toString.call(this.SubscriberIds) === "[object Array]" ? this.SubscriberIds.join(",") : this.SubscriberIds,
                passleShortcode: event.PassleShortcode,
                postShortcode: event.PostShortcode,
                profilePersonShortcode: event.ProfilePersonShortcode
            };
            AjaxFunctions.AjaxPostData(model, "EventTrackingAjax", "RegisterClientSideEvent", false, null, null, "https://" + PassleEnvironmentConfig.PassleWebRoot);
        };
        PassleTracker.prototype.InitialiseService = function (user, subscriberIds) {
            if (user) {
                this.UserShortcode = user.UserShortcode;
            }
            this.SubscriberIds = subscriberIds;
        };
        PassleTracker.prototype.CheckServiceIsAvailable = function () {
            return true;
        };
        return PassleTracker;
    }(EventTracking.Tracker));
    EventTracking.PassleTracker = PassleTracker;
})(EventTracking || (EventTracking = {}));
;
var EventTracking;
(function (EventTracking) {
    var Trackers = [new EventTracking.GoogleAnalyticsTracker(), new EventTracking.PassleTracker()];
    var QueuedEvents = [];
    var User = null;
    var AuthenticationComplete = false;
    EventTracking.PostShortcode = "";
    EventTracking.ProfilePersonShortcode = "";
    EventTracking.PassleShortcode = "";
    var SubscriberIds = [];
    var profilePath = "u";
    var postPath = "post";
    var profileLinkRegex = CreatePathRegex(profilePath);
    var postLinkRegex = CreatePathRegex(postPath);
    var logEventsToConsole = false;
    SubscribeToEvents();
    InitialiseClickTracking();
    TrackEmailLinkClick();
    function InitialiseTrackers(user, subscriberIds) {
        Trackers.forEach(function (tracker) {
            tracker.Initialise(user, subscriberIds);
        });
    }
    function CreatePathRegex(postOrProfilePathName) {
        return new RegExp("/?/?.*/" + postOrProfilePathName + "/[a-zA-Z0-9]+(/[a-zA-Z0-9\\-]+)?", "gm");
    }
    function UpdatePathRegexes(profilePathString, postPathString) {
        profilePath = profilePathString;
        postPath = postPathString;
        profileLinkRegex = CreatePathRegex(profilePath);
        postLinkRegex = CreatePathRegex(postPath);
    }
    function IsProfileUrl(url) {
        return url.match(profileLinkRegex);
    }
    function IsPostUrl(url) {
        return url.match(postLinkRegex);
    }
    function InitialiseClickTracking() {
        document.addEventListener('click', function (ev) {
            var target = ev.target;
            var el = target.closest('a');
            if (!el)
                return;
            var clicked = false;
            if (el.hasAttribute('data-click-event-label')) {
                var action = Passel.API.Domain.Models.Tracking.ClientSideEventAction[el.getAttribute('data-click-event-action')];
                var category = Passel.API.Domain.Models.Tracking.ClientSideEventCategory[el.getAttribute('data-click-event-category')];
                var label = el.getAttribute('data-click-event-label');
                if (action && category) {
                    var event = new EventTracking.TrackedEvent(action, category, label);
                    RegisterEvent(event);
                    return;
                }
            }
            var href = (el.href || "").toLowerCase();
            var passleContentContainers = document.getElementsByClassName('passle-content');
            for (var ii = 0; ii < passleContentContainers.length; ii++) {
                if (passleContentContainers[ii].contains(el)) {
                    if (IsProfileUrl(href)) {
                        RegisterEvent(new EventTracking.TrackedEvent(Passel.API.Domain.Models.Tracking.ClientSideEventAction.ClickLink, Passel.API.Domain.Models.Tracking.ClientSideEventCategory.ProfilePage, href, { href: href, text: el.innerHTML }));
                        return;
                    }
                    else if (IsPostUrl(href)) {
                        RegisterEvent(new EventTracking.TrackedEvent(Passel.API.Domain.Models.Tracking.ClientSideEventAction.ClickLink, Passel.API.Domain.Models.Tracking.ClientSideEventCategory.PostPage, href, { href: href, text: el.innerHTML }));
                        return;
                    }
                    else {
                        RegisterEvent(new EventTracking.TrackedEvent(Passel.API.Domain.Models.Tracking.ClientSideEventAction.ClickLink, Passel.API.Domain.Models.Tracking.ClientSideEventCategory.Page, href, { href: href, text: el.innerHTML }));
                        return;
                    }
                }
            }
            // Fire a default TrackedEvent if the click doesn't match the above
            RegisterEvent(new EventTracking.TrackedEvent(Passel.API.Domain.Models.Tracking.ClientSideEventAction.ClickExternalLink, Passel.API.Domain.Models.Tracking.ClientSideEventCategory.Page, href, { href: href, text: el.innerHTML }));
        });
    }
    function SubscribeToEvents() {
        PassleGlobalEvents.ClientWebTrackingDataAvailable.on(function (userTrackingData) {
            if (userTrackingData.userShortcode) {
                User = new EventTracking.EventUser(userTrackingData.userShortcode);
            }
            else {
                User = null;
            }
            EventTracking.PostShortcode = userTrackingData.postShortcode;
            EventTracking.ProfilePersonShortcode = userTrackingData.profilePersonShortcode;
            EventTracking.PassleShortcode = userTrackingData.passleShortcode;
            SubscriberIds = userTrackingData.subscriberIds;
            InitialiseTrackers(User, SubscriberIds);
            if (QueuedEvents.length > 0) {
                QueuedEvents.forEach(function (event) {
                    HandoffEvent(event, User);
                });
            }
            AuthenticationComplete = true;
        });
        PassleGlobalEvents.ClientHostingDataAvailable.on(function (hostingData) {
            UpdatePathRegexes(hostingData.profilePath, hostingData.postPath);
        });
        PassleGlobalEvents.InitDebugEventLogging.on(function () {
            logEventsToConsole = true;
        });
    }
    function RegisterEvent(event) {
        if (AuthenticationComplete) {
            HandoffEvent(event, User);
        }
        else {
            QueuedEvents.push(event);
        }
    }
    EventTracking.RegisterEvent = RegisterEvent;
    function HandoffEvent(event, user) {
        event.User = user;
        event.PassleShortcode = EventTracking.PassleShortcode;
        event.PostShortcode = EventTracking.PostShortcode;
        event.ProfilePersonShortcode = EventTracking.ProfilePersonShortcode;
        Trackers.forEach(function (tracker) {
            tracker.TrackEvent(event);
            if (logEventsToConsole)
                LogEventToConsole(event, tracker);
        });
    }
    function LogEventToConsole(event, tracker) {
        var trackerName = tracker.constructor['name'];
        var time = event.TimeStamp.toUTCString();
        var action = ClientSideEventAction[event.EventAction];
        var category = ClientSideEventCategory[event.EventCategory];
        var label = event.EventLabel;
        console.log("[PASSLE] - [" + trackerName + "] - " + time + " - Action: " + action + ", Category: " + category + ", Label: " + label);
    }
    function TrackEmailLinkClick() {
        var trackingClickEventId = PassleFunctions.GetParameterByName("tceid");
        if (trackingClickEventId) {
            PassleFunctions.RemoveParameterByName("tceid");
            var additionalProperties = {
                url: location.href,
                title: document.title,
                trackingClickEventId: trackingClickEventId
            };
            RegisterEvent(new EventTracking.TrackedEvent(Passel.API.Domain.Models.Tracking.ClientSideEventAction.ClickLink, Passel.API.Domain.Models.Tracking.ClientSideEventCategory.Email, "Email link", additionalProperties));
        }
    }
    function TrackPageLoad(pageType) {
        var additionalProperties = {
            url: location.href,
            title: document.title,
            referrer: document.referrer,
            pageType: pageType || ""
        };
        RegisterEvent(new EventTracking.TrackedEvent(Passel.API.Domain.Models.Tracking.ClientSideEventAction.Load, Passel.API.Domain.Models.Tracking.ClientSideEventCategory.Page, pageType, additionalProperties));
    }
    EventTracking.TrackPageLoad = TrackPageLoad;
})(EventTracking || (EventTracking = {}));
;
// Module
var AjaxFunctions;
(function (AjaxFunctions) {
    function AjaxSaveUpdate(model, controller, action, errorIsFatal, callBack, onError, onComplete) {
        if (errorIsFatal === void 0) { errorIsFatal = false; }
        if (callBack === void 0) { callBack = function (data) { }; }
        if (onError === void 0) { onError = function () { }; }
        if (onComplete === void 0) { onComplete = function () { }; }
        var headers = {};
        if (model && model.requestHeaders) {
            headers = model.requestHeaders;
            delete model.requestHeaders;
        }
        var request = {
            url: '/' + controller + '/' + action,
            type: 'POST',
            traditional: true,
            dataType: "json",
            contentType: 'application/json',
            cache: false,
            data: JSON.stringify(model),
            complete: function () {
                onComplete();
            },
            headers: headers,
            success: function (result) {
                if (result.Error == true) {
                    HandleAjaxError(errorIsFatal, onError, controller, action, model, result);
                }
                else {
                    callBack(result);
                }
            },
            error: function (err) {
                HandleAjaxError(errorIsFatal, onError, controller, action, model, err);
            }
        };
        return $.ajax(request);
    }
    AjaxFunctions.AjaxSaveUpdate = AjaxSaveUpdate;
    function AjaxPostData(model, controller, action, errorIsFatal, callBack, onError, root, withCredentials) {
        if (errorIsFatal === void 0) { errorIsFatal = false; }
        if (callBack === void 0) { callBack = null; }
        if (onError === void 0) { onError = null; }
        if (root === void 0) { root = ''; }
        if (withCredentials === void 0) { withCredentials = false; }
        var headers = {};
        if (model && model.requestHeaders) {
            headers = model.requestHeaders;
            delete model.requestHeaders;
        }
        var url = root + '/' + controller + '/' + action;
        var data = model;
        if (Object.prototype.toString.call(model) == "[object Object]") {
            data = new FormData();
            Object.keys(model).forEach(function (k) { return data.append(k, model[k] || ''); });
        }
        var request = new XMLHttpRequest();
        request.open("POST", url);
        Object.keys(headers).forEach(function (h) { return request.setRequestHeader(h, headers[h]); });
        request.onload = function (result) {
            if (result.error == true) {
                HandleAjaxError(errorIsFatal, onError, controller, action, model, request.response);
            }
            else {
                if (callBack) {
                    callBack(JSON.parse(request.response));
                }
            }
        };
        request.onerror = function (err) { return HandleAjaxError(errorIsFatal, onError, controller, action, model, err); };
        request.send(data);
    }
    AjaxFunctions.AjaxPostData = AjaxPostData;
    function AjaxFetchData(model, controller, action, errorIsFatal, callBack, onError, root, withCredentials) {
        if (errorIsFatal === void 0) { errorIsFatal = false; }
        if (callBack === void 0) { callBack = function (data) { }; }
        if (onError === void 0) { onError = function () { }; }
        if (root === void 0) { root = ''; }
        if (withCredentials === void 0) { withCredentials = false; }
        return $.ajax({
            url: root + '/' + controller + '/' + action,
            type: 'GET',
            traditional: true,
            data: model,
            xhrFields: { withCredentials: withCredentials },
            success: function (result) {
                if (result.error == true) {
                    HandleAjaxError(errorIsFatal, onError, controller, action, model, result);
                }
                else {
                    callBack(result);
                }
            },
            error: function (result) {
                HandleAjaxError(errorIsFatal, onError, controller, action, model, result);
            }
        });
    }
    AjaxFunctions.AjaxFetchData = AjaxFetchData;
    function AjaxInjectPartialIntoElement(model, controller, action, selector, errorIsFatal, callBack, onError, replaceElement, append) {
        if (errorIsFatal === void 0) { errorIsFatal = false; }
        if (callBack === void 0) { callBack = function (data) { }; }
        if (onError === void 0) { onError = function () { }; }
        if ($(selector).length == 0) {
            return;
        }
        AjaxFunctions.AjaxFetchData(model, controller, action, false, function (data) {
            if (replaceElement) {
                $(selector).replaceWith(data);
            }
            else {
                if (append) {
                    $(selector).append(data);
                }
                else {
                    $(selector).html(data);
                }
            }
            if (callBack) {
                callBack(data);
            }
        }, onError);
    }
    AjaxFunctions.AjaxInjectPartialIntoElement = AjaxInjectPartialIntoElement;
    function AjaxShowModalForPartial(model, controller, action, modalId, errorIsFatal, callBack, onError) {
        if (errorIsFatal === void 0) { errorIsFatal = false; }
        if (callBack === void 0) { callBack = function (data) { }; }
        if (onError === void 0) { onError = function () { }; }
        var selector = "#" + modalId;
        /*If the modal doesn't exist, create it*/
        if (!$(selector).length) {
            var modalDiv = document.createElement("div");
            modalDiv.id = modalId;
            modalDiv.className = "modal-window modal hide";
            document.body.appendChild(modalDiv);
        }
        AjaxInjectPartialIntoElement(model, controller, action, selector, false, function (data) {
            $(selector).removeClass("hide").modal();
            callBack(data);
        });
    }
    AjaxFunctions.AjaxShowModalForPartial = AjaxShowModalForPartial;
    // Problems with cross domain ajax on IE<=9
    function AjaxCrossDomainPost(model, controller, action, errorIsFatal, callBack, onError, onComplete, remoteRoot) {
        if (errorIsFatal === void 0) { errorIsFatal = false; }
        if (callBack === void 0) { callBack = function (data) { }; }
        if (onError === void 0) { onError = function () { }; }
        if (onComplete === void 0) { onComplete = function () { }; }
        if (remoteRoot === void 0) { remoteRoot = ''; }
        $.ajax({
            url: remoteRoot + '/' + controller + '/' + action,
            type: 'POST',
            traditional: true,
            data: model,
            complete: function () {
                onComplete();
            },
            success: function (result) {
                if (result.error == true) {
                    HandleAjaxError(errorIsFatal, onError, controller, action, model, result);
                }
                else {
                    callBack(result);
                }
            },
            error: function (err) {
                if (console)
                    console.log(err);
                HandleAjaxError(errorIsFatal, onError, controller, action, model, err);
            }
        });
    }
    AjaxFunctions.AjaxCrossDomainPost = AjaxCrossDomainPost;
    function HandleAjaxError(errorIsFatal, onError, controller, action, model, result) {
        if (onError) {
            onError();
        }
        if (errorIsFatal) {
            window.location.href = '/Error/Index';
        }
        if (result)
            console.log(result);
        throw "Error occurred in ajax call - controller : " + controller + ' action : ' + action + ' model : ' + JSON.stringify(model);
    }
})(AjaxFunctions || (AjaxFunctions = {}));
;
//If changing penpal version, please be aware that higher version dont seem to work with IE
!function (e, n) { var t = {}; !function (e) { "use strict"; Object.defineProperty(e, "__esModule", { value: !0 }), e.default = e.ERR_IFRAME_ALREADY_ATTACHED_TO_DOM = e.ERR_NOT_IN_IFRAME = e.ERR_CONNECTION_TIMEOUT = e.ERR_CONNECTION_DESTROYED = void 0; e.ERR_CONNECTION_DESTROYED = "ConnectionDestroyed"; e.ERR_CONNECTION_TIMEOUT = "ConnectionTimeout"; e.ERR_NOT_IN_IFRAME = "NotInIframe"; e.ERR_IFRAME_ALREADY_ATTACHED_TO_DOM = "IframeAlreadyAttachedToDom"; var n = { "http:": "80", "https:": "443" }, t = /^(https?:|file:)?\/\/([^/:]+)?(:(\d+))?/, o = { ERR_CONNECTION_DESTROYED: "ConnectionDestroyed", ERR_CONNECTION_TIMEOUT: "ConnectionTimeout", ERR_NOT_IN_IFRAME: "NotInIframe", ERR_IFRAME_ALREADY_ATTACHED_TO_DOM: "IframeAlreadyAttachedToDom", Promise: function () { try { return window ? window.Promise : null } catch (e) { return null } }(), debug: !1 }, r = (l = 0, function () { return ++l }), a = function () { if (o.debug) { for (var e, n = arguments.length, t = new Array(n), r = 0; r < n; r++)t[r] = arguments[r]; (e = console).log.apply(e, ["[Penpal]"].concat(t)) } }, i = function (e) { var n = []; return e(function () { n.forEach(function (e) { e() }) }), { then: function (e) { n.push(e) } } }, c = function (e) { var n = e.name, t = e.message, o = e.stack; return { name: n, message: t, stack: o } }, d = function (e, n, t, i, c) { var d = n.localName, s = n.local, l = n.remote, u = n.remoteOrigin, f = !1; a("".concat(d, ": Connecting call sender")); var m = function (e) { return function () { for (var n = arguments.length, t = new Array(n), c = 0; c < n; c++)t[c] = arguments[c]; if (a("".concat(d, ": Sending ").concat(e, "() call")), l.closed && i(), f) { var m = new Error("Unable to send ".concat(e, "() call due ") + "to destroyed connection"); throw m.code = "ConnectionDestroyed", m } return new o.Promise(function (n, o) { var i = r(); s.addEventListener("message", function t(r) { if (r.source === l && r.origin === u && "reply" === r.data.penpal && r.data.id === i) { a("".concat(d, ": Received ").concat(e, "() reply")), s.removeEventListener("message", t); var c = r.data.returnValue; r.data.returnValueIsError && (f = c, m = new Error, Object.keys(f).forEach(function (e) { return m[e] = f[e] }), c = m), ("fulfilled" === r.data.resolution ? n : o)(c) } var f, m }), l.postMessage({ penpal: "call", id: i, methodName: e, args: t }, u) }) } }; c.then(function () { f = !0 }), t.reduce(function (e, n) { return e[n] = m(n), e }, e) }, s = function (e, n, t) { var r = e.localName, i = e.local, d = e.remote, s = e.remoteOrigin, l = !1; a("".concat(r, ": Connecting call receiver")); var u = function (e) { if (e.source === d && e.origin === s && "call" === e.data.penpal) { var t = e.data, i = t.methodName, u = t.args, f = t.id; if (a("".concat(r, ": Received ").concat(i, "() call")), i in n) { var m = function (e) { return function (n) { if (a("".concat(r, ": Sending ").concat(i, "() reply")), l) a("".concat(r, ": Unable to send ").concat(i, "() reply due to destroyed connection")); else { var t = { penpal: "reply", id: f, resolution: e, returnValue: n }; "rejected" === e && n instanceof Error && (t.returnValue = c(n), t.returnValueIsError = !0); try { d.postMessage(t, s) } catch (e) { throw "DataCloneError" === e.name && d.postMessage({ penpal: "reply", id: f, resolution: "rejected", returnValue: c(e), returnValueIsError: !0 }, s), e } } } }; new o.Promise(function (e) { return e(n[i].apply(n, u)) }).then(m("fulfilled"), m("rejected")) } } }; i.addEventListener("message", u), t.then(function () { l = !0, i.removeEventListener("message", u) }) }; var l; o.connectToChild = function (e) { var r, c = e.url, l = e.appendTo, u = e.iframe, f = e.methods, m = void 0 === f ? {} : f, v = e.timeout; if (u && u.parentNode) { var E = new Error("connectToChild() must not be called with an iframe already attached to DOM"); throw E.code = "IframeAlreadyAttachedToDom", E } var p = new i(function (e) { r = e }), h = window; (u = u || document.createElement("iframe")).src = c; var T = function (e) { var o, r, a, i = document.location, c = t.exec(e); c ? (o = c[1] ? c[1] : i.protocol, r = c[2], a = c[4]) : (o = i.protocol, r = i.hostname, a = i.port); if ("file:" === o) return "null"; var d = a && a !== n[o] ? ":".concat(a) : ""; return "".concat(o, "//").concat(r).concat(d) }(c), g = new o.Promise(function (e, n) { var t; void 0 !== v && (t = setTimeout(function () { var e = new Error("Connection to child timed out after ".concat(v, "ms")); e.code = "ConnectionTimeout", n(e), r() }, v)); var o, c, f = {}, E = function (n) { var l = u.contentWindow; if (n.source === l && n.origin === T && "handshake" === n.data.penpal) { a("Parent: Received handshake, sending reply"); var v = "null" === n.origin ? "*" : n.origin; n.source.postMessage({ penpal: "handshake-reply", methodNames: Object.keys(m) }, v); var E = { localName: "Parent", local: h, remote: l, remoteOrigin: v }; c && c(); var g = new i(function (e) { p.then(e), c = e }); s(E, m, g), o && o.forEach(function (e) { delete f[e] }), o = n.data.methodNames, d(f, E, o, r, p), clearTimeout(t), e(f) } }; h.addEventListener("message", E), a("Parent: Loading iframe"), (l || document.body).appendChild(u); var g = setInterval(function () { document.body.contains(u) || (clearInterval(g), r()) }, 6e4); p.then(function () { u.parentNode && u.parentNode.removeChild(u), h.removeEventListener("message", E), clearInterval(g); var e = new Error("Connection destroyed"); e.code = "ConnectionDestroyed", n(e) }) }); return { promise: g, iframe: u, destroy: r } }, o.connectToParent = function () { var e, n = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}, t = n.parentOrigin, r = void 0 === t ? "*" : t, c = n.methods, l = void 0 === c ? {} : c, u = n.timeout; if (window === window.top) { var f = new Error("connectToParent() must be called within an iframe"); throw f.code = "NotInIframe", f } var m = new i(function (n) { e = n }), v = window, E = v.parent, p = new o.Promise(function (n, t) { var o; void 0 !== u && (o = setTimeout(function () { var n = new Error("Connection to parent timed out after ".concat(u, "ms")); n.code = "ConnectionTimeout", t(n), e() }, u)); var i = function t(i) { if (("*" === r || r === i.origin) && i.source === E && "handshake-reply" === i.data.penpal) { a("Child: Received handshake reply"), v.removeEventListener("message", t); var c = { localName: "Child", local: v, remote: E, remoteOrigin: i.origin }, u = {}; s(c, l, m), d(u, c, i.data.methodNames, e, m), clearTimeout(o), n(u) } }; v.addEventListener("message", i), m.then(function () { v.removeEventListener("message", i); var e = new Error("Connection destroyed"); e.code = "ConnectionDestroyed", t(e) }), a("Child: Sending handshake"), E.postMessage({ penpal: "handshake", methodNames: Object.keys(l) }, r) }); return { promise: p, destroy: e } }; var u = o; e.default = u }(t), "function" == typeof define && define.amd ? define("Penpal", t.default) : e.Penpal = t.default }(this);

;
var ClientSideEventAction = Passel.API.Domain.Models.Tracking.ClientSideEventAction;
var ClientSideEventCategory = Passel.API.Domain.Models.Tracking.ClientSideEventCategory;
;
class ToolbarLoader {
    constructor(passleWebRoot) {
        this.initialised = false;
        this.showDebugEventLogs = false;
        var thisObj = this;
        thisObj.InitialiseIFrame(passleWebRoot);
    }
    InitialiseIFrame(passleWebRoot) {
        var thisObj = this;
        let referrer = encodeURIComponent(document.referrer);
        let url = encodeURIComponent(window.location.href);
        let toolbarUrl = 'https://' + passleWebRoot + '/clientweb/toolbar?url=' + url + '&referrer=' + referrer;
        let draggable = false;
        thisObj.CreateIframe(toolbarUrl);
        thisObj.CreateToolbarContainer();
        const connection = Penpal.connectToChild({
            url: toolbarUrl,
            iframe: thisObj.iframe,
            appendTo: thisObj.toolbarContainer,
            timeout: 30000,
            methods: {
                resizeWidth(width) {
                    if (thisObj.iframe)
                        thisObj.iframe.width = width.toString();
                },
                resizeHeight(height) {
                    if (thisObj.iframe)
                        thisObj.iframe.height = height.toString();
                },
                redirectTo(redirectToUrl) {
                    if (thisObj.iframe)
                        location.href = redirectToUrl;
                },
                toggleToolbar(open) {
                    if (thisObj.iframe)
                        thisObj.toolbarDragIconContainer.style.display = (!open && draggable) ? "block" : "none";
                },
                authData(authData) {
                    thisObj.UserAuthenticationComplete(authData);
                },
                clientHostingData(hostingData) {
                    thisObj.ClientHostingDataCallback(hostingData);
                },
                showDebugEventLogs(showLogs) {
                    thisObj.DebugEventLoggingCallback(showLogs);
                },
                showToolbar() {
                    if (window.innerWidth > 600 && window.innerHeight > 600) {
                        thisObj.toolbarContainer.style.visibility = "visible";
                        if (typeof $ === 'function') {
                            if (typeof $(thisObj.toolbarContainer).draggable === 'function') {
                                draggable = true;
                                $(thisObj.toolbarContainer).draggable({
                                    containment: "window",
                                    stop: function (event, ui) {
                                        thisObj.toolbarContainer.style.bottom = `${(parseInt(thisObj.toolbarContainer.style.bottom.replace("px", "")) + ui.originalPosition.top - ui.position.top)}px`;
                                        thisObj.toolbarContainer.style.top = "unset";
                                    }
                                });
                            }
                        }
                        if (!draggable) {
                            thisObj.toolbarDragIconContainer.style.display = "none";
                            thisObj.toolbarDragIconContainer.classList.remove('toolbar-show-on-hover');
                        }
                    }
                }
            }
        });
        this.initialised = true;
        if (this.showDebugEventLogs)
            console.log('[PASSLE] - ToolbarLoader initialised');
    }
    CreateIframe(iframeUrl) {
        var iframe = document.createElement('iframe');
        iframe.allowtransparency = true;
        iframe.width = "60";
        iframe.height = "60";
        iframe.style.border = "0";
        iframe.src = iframeUrl;
        this.iframe = iframe;
    }
    CreateToolbarContainer() {
        let toolbarContainer = document.createElement('div');
        toolbarContainer.id = "passleToolbarContainer";
        toolbarContainer.style.width = "auto";
        toolbarContainer.style.height = "auto";
        toolbarContainer.style.position = "fixed";
        toolbarContainer.style.bottom = "20px";
        toolbarContainer.style.left = "30px";
        toolbarContainer.style.visibility = "hidden";
        toolbarContainer.style.zIndex = "999";
        let toolbarStyle = document.createElement('style');
        toolbarStyle.appendChild(document.createTextNode(`.toolbar-show-on-hover{ visibility:hidden; } #${toolbarContainer.id}:hover .toolbar-show-on-hover{ visibility: visible; position: relative; }`));
        toolbarContainer.appendChild(toolbarStyle);
        this.toolbarDragIconContainer = document.createElement('div');
        let toolbarDragIcon = document.createElement('i');
        toolbarDragIcon.style.position = "absolute";
        toolbarDragIcon.style.bottom = "0";
        toolbarDragIcon.style.background = "#ccc";
        toolbarDragIcon.style.border = "#white";
        toolbarDragIcon.style.borderTopLeftRadius = "5px";
        toolbarDragIcon.style.borderTopRightRadius = "5px";
        toolbarDragIcon.style.display = "inline-block";
        toolbarDragIcon.style.padding = "0px 8px";
        toolbarDragIcon.style.marginLeft = "17px";
        toolbarDragIcon.style.textAlign = "center";
        toolbarDragIcon.style.opacity = "0.8";
        toolbarDragIcon.style.color = "white";
        toolbarDragIcon.style.cursor = "move";
        this.toolbarDragIconContainer.classList.add('toolbar-show-on-hover');
        toolbarDragIcon.classList.add("fa-light", "fa-ellipsis");
        this.toolbarDragIconContainer.appendChild(toolbarDragIcon);
        toolbarContainer.appendChild(this.toolbarDragIconContainer);
        document.body.appendChild(toolbarContainer);
        this.toolbarContainer = toolbarContainer;
    }
    UserAuthenticationComplete(authData) {
        if (PassleEvents && authData) {
            var trackingEventData = new PassleEvents.ClientWebTrackingDataAvailableEventData(authData.userShortcode, authData.subscriberIds, authData.postShortcode, authData.profilePersonShortcode, authData.passleShortcode);
            PassleGlobalEvents.ClientWebTrackingDataAvailable.trigger(trackingEventData);
            var currentUserData = new PassleEvents.CurrentUserData(authData.userLikedPostShortcodes);
            PassleGlobalEvents.CurrentUserDataAvailable.trigger(currentUserData);
        }
    }
    ClientHostingDataCallback(hostingData) {
        if (PassleEvents && hostingData) {
            var clientHostingData = new PassleEvents.ClientHostingDataAvailableEventData(hostingData.profilePath, hostingData.postPath);
            PassleGlobalEvents.ClientHostingDataAvailable.trigger(clientHostingData);
        }
    }
    DebugEventLoggingCallback(showDebugEventLogs) {
        if (PassleEvents && showDebugEventLogs) {
            PassleGlobalEvents.InitDebugEventLogging.trigger();
        }
    }
}
;
class EmbedLoader {
    constructor() {
        this.apiKeyHash = "a75b73056ed317b1be45a3dad480c142";
        var thisObj = this;
        window.addEventListener("load", (event) => {
            thisObj.LoadEmbeds();
        });
    }
    LoadEmbeds() {
        var thisObj = this;
        if (document.querySelectorAll("[data-iframely-url]").length === 0 &&
            document.querySelectorAll("iframe[src*='iframe.ly']").length === 0)
            return;
        var ifs = document.createElement("script");
        ifs.type = "text/javascript";
        ifs.async = true;
        ifs.src = ("https:" == document.location.protocol ? "https:" : "http:") + "//cdn.iframe.ly/embed.js?key=" + thisObj.apiKeyHash;
        var s = document.getElementsByTagName("script")[0];
        s.parentNode.insertBefore(ifs, s);
    }
}
;
var MediaType = Passel.API.Domain.Models.MediaLibrary.MediaType;
class MediaPlayerLinker {
    constructor() {
        this.mediaPlayerFrameId = "psl-media-player-iframe";
        const thisObj = this;
        const mediaPlayerFrame = document.getElementById(thisObj.mediaPlayerFrameId);
        if (!mediaPlayerFrame)
            return;
        const mediaPlayerFrameContainer = document.createElement('div');
        mediaPlayerFrameContainer.className = `${thisObj.mediaPlayerFrameId}-container`;
        mediaPlayerFrame.parentNode.insertBefore(mediaPlayerFrameContainer, mediaPlayerFrame);
        mediaPlayerFrame.remove();
        window.addEventListener("load", () => {
            this.initialiseConnection(mediaPlayerFrame, mediaPlayerFrameContainer);
        });
    }
    initialiseConnection(frame, frameContainer) {
        const thisObj = this;
        const connection = Penpal.connectToChild({
            url: frame.src,
            iframe: frame,
            appendTo: frameContainer,
            methods: {
                registerEvent(label, mediaType) {
                    const action = mediaType == MediaType.Audio ? ClientSideEventAction.PlayAudio : ClientSideEventAction.PlayVideo;
                    EventTracking.RegisterEvent(new EventTracking.TrackedEvent(action, ClientSideEventCategory.MediaPlayer, label, location.protocol + '//' + location.host + location.pathname));
                }
            },
        });
    }
}
;
var ClientWebv2;
(function (ClientWebv2) {
    class PassleInit {
        constructor() {
            var passleWebRoot = PassleEnvironmentConfig.PassleWebRoot;
            new ToolbarLoader(passleWebRoot);
            new EmbedLoader();
            new MediaPlayerLinker();
        }
    }
    new PassleInit();
})(ClientWebv2 || (ClientWebv2 = {}));
;
