@@ -56,36 +56,37 @@ import {
5656import {useClickSidebarButton , useModal } from " ../composable/ui.ts" ;
5757import {useThrottleFn } from " @vueuse/core" ;
5858import {defineShortcuts2 as defineShortcuts } from " ../composable/nuxtui/defineShortcuts2.ts" ;
59- import {type ComponentDescriptor , useExtensions } from " ../composable/useExtensions.ts" ;
59+ import {type HxComponentDescriptor , useExtensions } from " ../composable/useExtensions.ts" ;
60+ import {type HxHandler , type HxEvent , useEvents } from " ../composable/useEvents.ts" ;
6061
6162const { hideSidebar } = useUIState ();
6263const {closeAllModals} = useModal ()
6364
6465export interface HxMeetingProps {
6566 livekitUrl: string ,
6667 livekitToken: string ,
67- extensions? : Record <string , string | Ref | ComponentDescriptor >;
68+ extensions? : Record <string , string | Ref | HxComponentDescriptor >;
69+ events? : Partial <Record <HxEvent , HxHandler >>;
6870}
69-
7071const props = defineProps <HxMeetingProps >()
7172
72- // ----------------------------------------------------------
73- // Extensions
74- // ----------------------------------------------------------
75-
73+ // ---------------------------------------
74+ // Register extensions
75+ // ---------------------------------------
7676const { set } = useExtensions ();
77-
7877watch (() => props .extensions , (extensions ) => {
79- console .log (" extensions changed" , extensions );
80- if (! extensions ) return ;
81- for (const [name, item] of Object .entries (extensions )) set (name , item );
82- },
83- { immediate: true , deep: true }
84- );
85-
86- // ----------------------------------------------------------
87- // ----------------------------------------------------------
88- // ----------------------------------------------------------
78+ if (! extensions ) return ;
79+ for (const [name, item] of Object .entries (extensions )) set (name , item );
80+ }, { immediate: true , deep: true });
81+
82+ // ---------------------------------------
83+ // Register event listener
84+ // ---------------------------------------
85+ const { on } = useEvents ();
86+ watch (() => props .events , (events ) => {
87+ if (! events ) return ;
88+ for (const [name, item] of Object .entries (events )) on (name as HxEvent , item );
89+ }, { immediate: true , deep: true });
8990
9091onBeforeMount (() => {
9192 provideLivekitConfig (
0 commit comments