@livekit/components-core
Version:
This package is a wrapper around the [livekit/client-sdk-js](https://github.com/livekit/client-sdk-js) package. It transforms the event based logic into simple to use observable state and component level APIs. This package is the core for all framework sp
23 lines (19 loc) • 667 B
text/typescript
import { autoUpdate, computePosition, flip, offset, shift } from '@floating-ui/dom';
export function computeMenuPosition(
button: HTMLElement,
menu: HTMLElement,
onUpdate?: (x: number, y: number) => void,
): () => void {
const cleanup = autoUpdate(button, menu, async () => {
const { x, y } = await computePosition(button, menu, {
placement: 'top',
middleware: [offset(6), flip(), shift({ padding: 5 })],
});
onUpdate?.(x, y);
});
return cleanup;
}
export function wasClickOutside(insideElement: HTMLElement, event: MouseEvent): boolean {
const isOutside = !insideElement.contains(event.target as Node);
return isOutside;
}