2021-09-06 14:27:54 +02:00
|
|
|
import type { IframeResponseEventMap } from "../../Api/Events/IframeEvent";
|
|
|
|
import type { IframeCallback } from "../../Api/iframe/IframeApiContribution";
|
|
|
|
import type { IframeCallbackContribution } from "../../Api/iframe/IframeApiContribution";
|
2021-06-21 11:48:39 +02:00
|
|
|
|
2021-09-06 14:27:54 +02:00
|
|
|
export const registeredCallbacks: { [K in keyof IframeResponseEventMap]?: IframeCallback<K> } = {};
|
2021-06-21 11:48:39 +02:00
|
|
|
|
2021-09-06 14:27:54 +02:00
|
|
|
export function apiCallback<T extends keyof IframeResponseEventMap>(
|
|
|
|
callbackData: IframeCallbackContribution<T>
|
|
|
|
): IframeCallbackContribution<keyof IframeResponseEventMap> {
|
2021-06-21 11:48:39 +02:00
|
|
|
const iframeCallback = {
|
|
|
|
typeChecker: callbackData.typeChecker,
|
2021-09-06 14:27:54 +02:00
|
|
|
callback: callbackData.callback,
|
2021-06-21 11:48:39 +02:00
|
|
|
} as IframeCallback<T>;
|
|
|
|
|
|
|
|
const newCallback = { [callbackData.type]: iframeCallback };
|
2021-09-06 14:27:54 +02:00
|
|
|
Object.assign(registeredCallbacks, newCallback);
|
2021-06-21 11:48:39 +02:00
|
|
|
return callbackData as unknown as IframeCallbackContribution<keyof IframeResponseEventMap>;
|
|
|
|
}
|