0
Fork 0
mirror of https://github.com/withastro/astro.git synced 2025-02-03 22:29:08 -05:00
astro/packages/integrations/lit/src/client.ts
2023-02-01 13:20:23 +00:00

21 lines
801 B
TypeScript

export default (element: HTMLElement) => async (Component: any, props: Record<string, any>) => {
// Get the LitElement element instance (may or may not be upgraded).
const component = element.children[0] as HTMLElement;
// If there is no deferral of hydration, then all reactive properties are
// already serialzied as reflected attributes, or no reactive props were set
if (!component || !component.hasAttribute('defer-hydration')) {
return;
}
// Set properties on the LitElement instance for resuming hydration.
for (let [name, value] of Object.entries(props)) {
// Check if reactive property or class property.
if (name in Component.prototype) {
(component as any)[name] = value;
}
}
// Tell LitElement to resume hydration.
component.removeAttribute('defer-hydration');
};