Module: Opal::Connect::ConnectPlugins::Events::ConnectClassMethods

Defined in:
lib/opal/connect/plugins/events.rb

Instance Method Summary collapse

Instance Method Details

#start_eventsObject



67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
# File 'lib/opal/connect/plugins/events.rb', line 67

def start_events
  $connect_events_started = true
  $connect_events.each do |klass, events|
    el = dom('html')

    events.map! do |event|
      klass, name, selector, handler = event

      wrapper = ->(e) do
        # we want to create an anonymous class so we can use instance
        # methods if events are coming from the Connect module.
        c = klass.name == 'Opal::Connect' \
          ? Class.new { include Opal::Connect }.new \
          : klass.new
        c.connect_event_instance_variables(e, name, selector)
        c.instance_exec(e, &handler)
      end

      if name != :document
        el.dom.on(name, selector, &wrapper)
      else
        Document.on(selector, &wrapper)
      end

      [klass, name, selector, wrapper]
    end
  end
end

#teardown_eventsObject



52
53
54
55
56
57
58
59
60
61
62
63
64
65
# File 'lib/opal/connect/plugins/events.rb', line 52

def teardown_events
  $connect_events.each do |klass, events|
    el = dom('html')

    events.each do |event|
      _, name, selector, wrapper = event
      if name.to_s != 'document'
        el.off(name, selector, &wrapper)
      else
        Document.off(selector, &wrapper)
      end
    end
  end
end