AFRAME.registerComponent("event-repeater", { schema: { eventSource: { type: "selector" }, events: { type: "array" } }, play: function() { this.data.eventListeners = []; const events = this.data.events; for (let i = 0; i < events.length; i++) { const event = events[i]; this.data.eventListeners[event] = this._handleEvent.bind(this, event); this.data.eventSource.addEventListener(event, this.data.eventListeners[event]); } }, pause: function() { const events = this.data.events; for (let i = 0; i < events.length; i++) { const event = events[i]; this.data.eventSource.removeEventListener(event, this.data.eventListeners[event]); } this.data.eventListeners = []; }, _handleEvent: function(event, e) { this.el.emit(event, e.details); } });