Module: React

Defined in:
lib/react/api.rb,
lib/react/event.rb,
lib/react/state.rb,
lib/react/element.rb,
lib/react/callbacks.rb,
lib/react/component.rb,
lib/react/top_level.rb,
lib/react/validator.rb,
lib/react/observable.rb,
lib/react/component/api.rb,
lib/react/component/base.rb,
lib/react/component/tags.rb,
lib/react/native_library.rb,
lib/reactive-ruby/version.rb,
lib/react/rendering_context.rb,
lib/react/component/class_methods.rb,
lib/react/component/props_wrapper.rb,
lib/reactive-ruby/isomorphic_helpers.rb,
lib/react/component/dsl_instance_methods.rb,
lib/rails-helpers/top_level_rails_component.rb

Defined Under Namespace

Modules: Callbacks, Component, IsomorphicHelpers Classes: API, Element, Event, NativeLibrary, Observable, RenderingContext, State, StateWrapper, TopLevelRailsComponent, Validator

Constant Summary collapse

ATTRIBUTES =
%w(accept acceptCharset accessKey action allowFullScreen allowTransparency alt
async autoComplete autoPlay cellPadding cellSpacing charSet checked classID
className cols colSpan content contentEditable contextMenu controls coords
crossOrigin data dateTime defer dir disabled download draggable encType form
formAction formEncType formMethod formNoValidate formTarget frameBorder height
hidden href hrefLang htmlFor httpEquiv icon id label lang list loop manifest
marginHeight marginWidth max maxLength media mediaGroup method min multiple
muted name noValidate open pattern placeholder poster preload radioGroup
readOnly rel required role rows rowSpan sandbox scope scrolling seamless
selected shape size sizes span spellCheck src srcDoc srcSet start step style
tabIndex target title type useMap value width wmode dangerouslySetInnerHTML)
HASH_ATTRIBUTES =
%w(data aria)
VERSION =
'0.8.5'

Class Method Summary collapse

Class Method Details

.create_element(type, properties = {}, &block) ⇒ Object



21
22
23
# File 'lib/react/top_level.rb', line 21

def self.create_element(type, properties = {}, &block)
  React::API.create_element(type, properties, &block)
end

.is_valid_element(element) ⇒ Object



39
40
41
# File 'lib/react/top_level.rb', line 39

def self.is_valid_element(element)
  element.kind_of?(React::Element) && `React.isValidElement(#{element.to_n})`
end

.render(element, container) ⇒ Object



25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/react/top_level.rb', line 25

def self.render(element, container)
  container = `container.$$class ? container[0] : container`
  if !(`typeof ReactDOM === 'undefined'`)
    component = Native(`ReactDOM.render(#{element.to_n}, container, function(){#{yield if block_given?}})`) # v0.15+
  elsif !(`typeof React.renderToString === 'undefined'`)
    component = Native(`React.render(#{element.to_n}, container, function(){#{yield if block_given?}})`)
  else
    raise "render is not defined.  In React >= v15 you must import it with ReactDOM"
  end

  component.class.include(React::Component::API)
  component
end

.render_to_static_markup(element) ⇒ Object



53
54
55
56
57
58
59
60
61
# File 'lib/react/top_level.rb', line 53

def self.render_to_static_markup(element)
  if !(`typeof ReactDOMServer === 'undefined'`)
    React::RenderingContext.build { `ReactDOMServer.renderToStaticMarkup(#{element.to_n})` } # v0.15+
  elsif !(`typeof React.renderToString === 'undefined'`)
    React::RenderingContext.build { `React.renderToStaticMarkup(#{element.to_n})` }
  else
    raise "renderToStaticMarkup is not defined.  In React >= v15 you must import it with ReactDOMServer"
  end
end

.render_to_string(element) ⇒ Object



43
44
45
46
47
48
49
50
51
# File 'lib/react/top_level.rb', line 43

def self.render_to_string(element)
  if !(`typeof ReactDOMServer === 'undefined'`)
    React::RenderingContext.build { `ReactDOMServer.renderToString(#{element.to_n})` } # v0.15+
  elsif !(`typeof React.renderToString === 'undefined'`)
    React::RenderingContext.build { `React.renderToString(#{element.to_n})` }
  else
    raise "renderToString is not defined.  In React >= v15 you must import it with ReactDOMServer"
  end
end

.unmount_component_at_node(node) ⇒ Object



63
64
65
66
67
68
69
70
71
# File 'lib/react/top_level.rb', line 63

def self.unmount_component_at_node(node)
  if !(`typeof ReactDOM === 'undefined'`)
    `ReactDOM.unmountComponentAtNode(node.$$class ? node[0] : node)` # v0.15+
  elsif !(`typeof React.renderToString === 'undefined'`)
    `React.unmountComponentAtNode(node.$$class ? node[0] : node)`
  else
    raise "unmountComponentAtNode is not defined.  In React >= v15 you must import it with ReactDOM"
  end
end