module Hyalite::BrowserEvent

Constants

TOP_EVENT_MAPPING
TOP_LISTENERS_ID_KEY

Public Class Methods

delete_all_listeners(id) click to toggle source
# File lib/hyalite/browser_event.rb, line 174
def delete_all_listeners(id)
  event_dispatcher.delete_all_listeners(id) do |id, registration_name|
    plugin = event_plugin_registry[registration_name]
    if plugin.respond_to? :will_delete_listener
      plugin.will_delete_listener(id, registration_name)
    end
  end
end
delete_listener(id, registration_name) click to toggle source
# File lib/hyalite/browser_event.rb, line 165
def delete_listener(id, registration_name)
  event_dispatcher.delete_listener(id, registration_name) do |id, registration_name|
    plugin = event_plugin_registry[registration_name]
    if plugin.respond_to? :will_delete_listener
      plugin.will_delete_listener(id, registration_name)
    end
  end
end
enabled=(enabled) click to toggle source
# File lib/hyalite/browser_event.rb, line 59
def enabled=(enabled)
  event_dispatcher.enabled = enabled
end
enabled?() click to toggle source
# File lib/hyalite/browser_event.rb, line 55
def enabled?
  event_dispatcher.enabled?
end
event_dispatcher() click to toggle source
# File lib/hyalite/browser_event.rb, line 63
def event_dispatcher
  @event_dispatcher ||= EventDispatcher.new do |top_level_type, top_level_target, top_level_target_id, event|
    event_plugin_registry.extract_events(top_level_type, top_level_target, top_level_target_id, event)
  end
end
event_plugin_registry() click to toggle source
# File lib/hyalite/browser_event.rb, line 69
def event_plugin_registry
  @event_plugin_registry ||= EventPluginRegistry.new(
    SimpleEventPlugin.new,
    ChangeEventPlugin.new
  )
end
include?(name) click to toggle source
# File lib/hyalite/browser_event.rb, line 76
def include?(name)
  event_plugin_registry.include? name
end
listen_to(registration_name, content_document_handle) click to toggle source
# File lib/hyalite/browser_event.rb, line 80
def listen_to(registration_name, content_document_handle)
  mount_at = content_document_handle
  is_listening = listening_for_document(mount_at)
  dependencies = event_plugin_registry.dependencies(registration_name)

  dependencies.each do |dependency|
    unless is_listening[dependency]
      case dependency
      when :top_wheel
        nil
      #   if isEventSupported('wheel')
      #     ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(
      #       topLevelTypes.topWheel,
      #       'wheel',
      #       mountAt
      #     );
      #   elsif isEventSupported('mousewheel')
      #     ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(
      #       topLevelTypes.topWheel,
      #       'mousewheel',
      #       mountAt
      #     );
      #   else
      #     ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(
      #       topLevelTypes.topWheel,
      #       'DOMMouseScroll',
      #       mountAt
      #     );
      #   end
      # when :top_scroll
      #   if isEventSupported('scroll', true)
      #     ReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent(
      #       topLevelTypes.topScroll,
      #       'scroll',
      #       mountAt
      #     );
      #   else
      #     ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(
      #       topLevelTypes.topScroll,
      #       'scroll',
      #       ReactBrowserEventEmitter.ReactEventListener.WINDOW_HANDLE
      #     );
      #   end
      # when :top_focus, :top_blur
      #   if isEventSupported('focus', true)
      #     ReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent(
      #       topLevelTypes.topFocus,
      #       'focus',
      #       mountAt
      #     );
      #     ReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent(
      #       topLevelTypes.topBlur,
      #       'blur',
      #       mountAt
      #     );
      #   elsif isEventSupported('focusin')
      #     ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(
      #       topLevelTypes.topFocus,
      #       'focusin',
      #       mountAt
      #     );
      #     ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(
      #       topLevelTypes.topBlur,
      #       'focusout',
      #       mountAt
      #     );
      #   end
      #
      #   is_listening[:top_blur] = true
      #   is_listening[:top_focus] = true
      else
        if TOP_EVENT_MAPPING.has_key? dependency
          trap_bubbled_event(dependency, TOP_EVENT_MAPPING[dependency], mount_at)
        end
      end

      is_listening[dependency] = true
    end
  end
end
listener_at_phase(id, dispatch_config, propagation_phase) click to toggle source
# File lib/hyalite/browser_event.rb, line 183
def listener_at_phase(id, dispatch_config, propagation_phase)
  registration_name = dispatch_config[:phasedRegistrationNames][propagation_phase]
  event_dispatcher.get_listener(id, registration_name)
end
listening_for_document(mount_at) click to toggle source
# File lib/hyalite/browser_event.rb, line 188
def listening_for_document(mount_at)
  @already_listening_to ||= []
  unless `Object.prototype.hasOwnProperty.call(mount_at.native, #{TOP_LISTENERS_ID_KEY})`
    `mount_at.native[#{TOP_LISTENERS_ID_KEY}] = #{@already_listening_to.length}`
    @already_listening_to << {}
  end
  @already_listening_to[`mount_at.native[#{TOP_LISTENERS_ID_KEY}]`]
end
put_listener(id, event_name, listener) click to toggle source
# File lib/hyalite/browser_event.rb, line 161
def put_listener(id, event_name, listener)
  event_dispatcher.put_listener(id, event_name, listener)
end
trap_bubbled_event(top_level_type, handler_base_name, handle) click to toggle source
# File lib/hyalite/browser_event.rb, line 197
def trap_bubbled_event(top_level_type, handler_base_name, handle)
  event_dispatcher.trap_bubbled_event(top_level_type, handler_base_name, handle)
end