28 lines · 878 B · Text
RawDownload
@Events =  on: (event, callback) ->    if event.indexOf(' ') >= 0      @on name, callback for name in event.split(' ')    else      ((@_callbacks ?= {})[event] ?= []).push callback    @   off: (event, callback) ->    if event.indexOf(' ') >= 0      @off name, callback for name in event.split(' ')    else if (callbacks = @_callbacks?[event]) and (index = callbacks.indexOf callback) >= 0      callbacks.splice index, 1      delete @_callbacks[event] unless callbacks.length    @   trigger: (event, args...) ->    @eventInProgress = { name: event, args: args }    if callbacks = @_callbacks?[event]      callback? args... for callback in callbacks.slice(0)    @eventInProgress = null    @trigger 'all', event, args... unless event is 'all'    @   removeEvent: (event) ->    if @_callbacks?      delete @_callbacks[name] for name in event.split(' ')    @