export type ElementWithContext = {
new(...args: any[]): E
withContext(context: C): {new(...args: any): E}
}
export function provideContextToElements<
C,
E extends {[key: string]: ElementWithContext},
>(
context: C,
elements: E,
) {
const newElements: {[key: string]: typeof HTMLElement} = {}
for (const [key, Element] of Object.entries(elements))
newElements[key] = Element.withContext(context)
return newElements as E
}