import { ButtonClickedEvent } from './ButtonClickedEvent'; import { ChatEvent } from './ChatEvent'; import { ClosePopupEvent } from './ClosePopupEvent'; import { EnterLeaveEvent } from './EnterLeaveEvent'; import { GoToPageEvent } from './GoToPageEvent'; import { OpenCoWebSiteEvent } from './OpenCoWebSiteEvent'; import { OpenPopupEvent } from './OpenPopupEvent'; import { OpenTabEvent } from './OpenTabEvent'; import { UserInputChatEvent } from './UserInputChatEvent'; export interface TypedMessageEvent extends MessageEvent { data: T } export type IframeEventMap = { //getState: GameStateEvent, // updateTile: UpdateTileEvent chat: ChatEvent, openPopup: OpenPopupEvent closePopup: ClosePopupEvent openTab: OpenTabEvent goToPage: GoToPageEvent openCoWebSite: OpenCoWebSiteEvent closeCoWebSite: null disablePlayerControls: null restorePlayerControls: null displayBubble: null removeBubble: null } export interface IframeEvent { type: T; data: IframeEventMap[T]; } // eslint-disable-next-line @typescript-eslint/no-explicit-any export const isIframeEventWrapper = (event: any): event is IframeEvent => typeof event.type === 'string'; export interface IframeResponseEventMap { userInputChat: UserInputChatEvent enterEvent: EnterLeaveEvent leaveEvent: EnterLeaveEvent buttonClickedEvent: ButtonClickedEvent // gameState: GameStateEvent } export interface IframeResponseEvent { type: T; data: IframeResponseEventMap[T]; } // eslint-disable-next-line @typescript-eslint/no-explicit-any export const isIframeResponseEventWrapper = (event: { type?: string }): event is IframeResponseEvent => typeof event.type === 'string';