// alpine component for displaying meetings $XRFMEETING = $el( `
` ) window.XRFMEETING = { scene: null, enabled: false, active: false, init(){ window.XRFMEETING = this.$data // replace so we can modify state in global scope window.meeting }, toggle(){ this.enabled = !this.enabled if( !this.active ) this.start() }, install(opts){ this.scene = opts.scene window.XRFMENU.buttons.push(`🧑‍🤝‍🧑 meeting
`) document.body.appendChild( $XRFMEETING ) }, start(){ this.scene.addEventListener('meeting.peer.add', () => console.log("$meeting.peer.add") ) this.scene.addEventListener('meeting.peer.remove', () => console.log("$meeting.peer.remove") ) } } // finally we alpinify document.addEventListener('XRFMENU:ready', (opts) => { opts = opts.detail Alpine.data('XRFMEETING', () => window.XRFMEETING) XRFMEETING.install(opts) })