import type { MutableRefObject } from "react"; import type { TAction } from "./definitions"; export type { TAction }; export type TActionArgsMap = { "seek-forward": { seconds: number } | undefined; "seek-backward": { seconds: number } | undefined; "jump-forward": { seconds: number } | undefined; "jump-backward": { seconds: number } | undefined; "remove-media-asset": { projectId: string; assetId: string }; "remove-media-assets": { projectId: string; assetIds: string[] }; }; type TKeysWithValueUndefined = { [K in keyof T]: undefined extends T[K] ? K : never; }[keyof T]; export type TActionWithArgs = keyof TActionArgsMap; export type TActionWithOptionalArgs = | TActionWithNoArgs | TKeysWithValueUndefined; export type TActionWithNoArgs = Exclude; export type TArgOfAction = A extends TActionWithArgs ? TActionArgsMap[A] : undefined; export type TActionFunc = A extends TActionWithArgs ? (arg: TArgOfAction, trigger?: TInvocationTrigger) => void : (_?: undefined, trigger?: TInvocationTrigger) => void; export type TInvocationTrigger = "keypress" | "mouseclick"; export type TBoundActionList = { [A in TAction]?: Array>; }; export type TActionHandlerOptions = | MutableRefObject | boolean | undefined;