class MotionKit::BaseLayout

Public Instance Methods

motion_kit_event_handlers() click to toggle source
# File lib/motion-kit-events/layout.rb, line 5
def motion_kit_event_handlers
  @motion_kit_event_handlers ||= {}
end
off(*args) click to toggle source

Removes all event handlers for the specified event

# File lib/motion-kit-events/layout.rb, line 25
def off(*args)
  if @context || @assign_root
    apply_with_target(:off, *args)
  else
    event = args.first
    unless event
      raise ArgumentError.new('`event` is a required argument to Layout#off')
    end
    motion_kit_event_handlers[event] = nil
  end
end
on(*args, &handler) click to toggle source
# File lib/motion-kit-events/layout.rb, line 9
def on(*args, &handler)
  if @context || @assign_root
    apply_with_target(:on, *args, &handler)
  else
    event = args.first
    unless event
      raise ArgumentError.new('`event` is a required argument to Layout#on')
    end
    motion_kit_event_handlers[event] ||= []
    motion_kit_event_handlers[event] << handler.weak!

    self
  end
end
trigger(*args, &handler) click to toggle source
# File lib/motion-kit-events/layout.rb, line 37
def trigger(*args, &handler)
  if @context
    apply(:trigger, *args, &handler)
  else
    event = args.first
    unless event
      raise ArgumentError.new('`event` is a required argument to Layout#on')
    end

    if motion_kit_event_handlers[event]
      params = args[1..-1]
      params = params[0] if params.size == 1
      motion_kit_event_handlers[event].each do |handler|
        if handler.arity == 0
          handler.call
        else
          handler.call(params)
        end
      end
    end

    self
  end
end