import {getContext} from 'svelte'; import {type Api, type ExtensionPoint} from '@watching/clips'; import {type RemoteRootElement} from '@remote-dom/core/elements'; export interface ClipRenderDetails< Point extends ExtensionPoint = ExtensionPoint, Query = Record, Settings = Record, > { readonly api: Api; readonly root: RemoteRootElement; } export const CLIP_RENDER_CONTEXT = 'clips.render'; export class ClipRenderContext extends Map { constructor(root: RemoteRootElement, api: Api) { super([[CLIP_RENDER_CONTEXT, {api, root}]]); } } export function getRenderContext< Point extends ExtensionPoint = ExtensionPoint, Query = Record, Settings = Record, >() { return getContext>( CLIP_RENDER_CONTEXT, ); } export function getApi< Point extends ExtensionPoint = ExtensionPoint, Query = Record, Settings = Record, >() { return getRenderContext().api; } export function getTranslate() { return getRenderContext().api.localize.translate; }