hyper-react 0.12.7 → 0.99.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (129) hide show
  1. checksums.yaml +5 -5
  2. data/.gitignore +48 -34
  3. data/CODE_OF_CONDUCT.md +49 -0
  4. data/Gemfile +5 -6
  5. data/README.md +47 -98
  6. data/Rakefile +6 -28
  7. data/hyper-react.gemspec +36 -43
  8. data/lib/hyper-react.rb +4 -73
  9. data/lib/react/version.rb +3 -0
  10. metadata +91 -249
  11. data/.codeclimate.yml +0 -27
  12. data/.rubocop.yml +0 -1159
  13. data/.travis.yml +0 -62
  14. data/Appraisals +0 -31
  15. data/CHANGELOG.md +0 -143
  16. data/LICENSE +0 -19
  17. data/UPGRADING.md +0 -24
  18. data/component-name-lookup.md +0 -145
  19. data/config.ru +0 -26
  20. data/gemfiles/opal_0.10_react_13.gemfile +0 -15
  21. data/gemfiles/opal_0.10_react_14.gemfile +0 -15
  22. data/gemfiles/opal_0.10_react_15.gemfile +0 -15
  23. data/gemfiles/opal_0.8_react_13.gemfile +0 -15
  24. data/gemfiles/opal_0.8_react_14.gemfile +0 -15
  25. data/gemfiles/opal_0.8_react_15.gemfile +0 -15
  26. data/gemfiles/opal_0.9_react_13.gemfile +0 -15
  27. data/gemfiles/opal_0.9_react_14.gemfile +0 -15
  28. data/gemfiles/opal_0.9_react_15.gemfile +0 -15
  29. data/gemfiles/opal_master_react_15.gemfile +0 -16
  30. data/lib/generators/reactive_ruby/test_app/templates/assets/javascripts/components.rb +0 -3
  31. data/lib/generators/reactive_ruby/test_app/templates/assets/javascripts/test_application.rb +0 -2
  32. data/lib/generators/reactive_ruby/test_app/templates/boot.rb.erb +0 -6
  33. data/lib/generators/reactive_ruby/test_app/templates/script/rails +0 -5
  34. data/lib/generators/reactive_ruby/test_app/templates/test_application.rb.erb +0 -13
  35. data/lib/generators/reactive_ruby/test_app/templates/views/components/hello_world.rb +0 -11
  36. data/lib/generators/reactive_ruby/test_app/templates/views/components/todo.rb +0 -14
  37. data/lib/generators/reactive_ruby/test_app/templates/views/layouts/test_layout.html.erb +0 -0
  38. data/lib/generators/reactive_ruby/test_app/test_app_generator.rb +0 -111
  39. data/lib/rails-helpers/top_level_rails_component.rb +0 -54
  40. data/lib/react-sources/react-server.js +0 -2
  41. data/lib/react/api.rb +0 -173
  42. data/lib/react/callbacks.rb +0 -41
  43. data/lib/react/children.rb +0 -30
  44. data/lib/react/component.rb +0 -168
  45. data/lib/react/component/api.rb +0 -50
  46. data/lib/react/component/base.rb +0 -13
  47. data/lib/react/component/class_methods.rb +0 -189
  48. data/lib/react/component/dsl_instance_methods.rb +0 -23
  49. data/lib/react/component/params.rb +0 -6
  50. data/lib/react/component/props_wrapper.rb +0 -78
  51. data/lib/react/component/should_component_update.rb +0 -94
  52. data/lib/react/component/tags.rb +0 -129
  53. data/lib/react/config.rb +0 -5
  54. data/lib/react/config/client.rb.erb +0 -19
  55. data/lib/react/config/server.rb +0 -23
  56. data/lib/react/element.rb +0 -169
  57. data/lib/react/event.rb +0 -76
  58. data/lib/react/ext/hash.rb +0 -9
  59. data/lib/react/ext/opal-jquery/element.rb +0 -26
  60. data/lib/react/ext/string.rb +0 -8
  61. data/lib/react/hash.rb +0 -13
  62. data/lib/react/native_library.rb +0 -87
  63. data/lib/react/object.rb +0 -15
  64. data/lib/react/react-source-browser.rb +0 -3
  65. data/lib/react/react-source-server.rb +0 -3
  66. data/lib/react/react-source.rb +0 -20
  67. data/lib/react/ref_callback.rb +0 -31
  68. data/lib/react/rendering_context.rb +0 -144
  69. data/lib/react/server.rb +0 -23
  70. data/lib/react/state_wrapper.rb +0 -23
  71. data/lib/react/test.rb +0 -16
  72. data/lib/react/test/dsl.rb +0 -17
  73. data/lib/react/test/matchers/render_html_matcher.rb +0 -56
  74. data/lib/react/test/rspec.rb +0 -15
  75. data/lib/react/test/session.rb +0 -37
  76. data/lib/react/test/utils.rb +0 -25
  77. data/lib/react/top_level.rb +0 -118
  78. data/lib/react/top_level_render.rb +0 -29
  79. data/lib/react/validator.rb +0 -136
  80. data/lib/reactive-ruby/component_loader.rb +0 -50
  81. data/lib/reactive-ruby/isomorphic_helpers.rb +0 -212
  82. data/lib/reactive-ruby/rails.rb +0 -7
  83. data/lib/reactive-ruby/rails/component_mount.rb +0 -46
  84. data/lib/reactive-ruby/rails/controller_helper.rb +0 -15
  85. data/lib/reactive-ruby/rails/railtie.rb +0 -33
  86. data/lib/reactive-ruby/serializers.rb +0 -15
  87. data/lib/reactive-ruby/server_rendering/contextual_renderer.rb +0 -42
  88. data/lib/reactive-ruby/version.rb +0 -3
  89. data/lib/reactrb/auto-import.rb +0 -27
  90. data/lib/reactrb/deep-compare.rb +0 -24
  91. data/lib/reactrb/new-event-name-convention.rb +0 -11
  92. data/logo1.png +0 -0
  93. data/logo2.png +0 -0
  94. data/logo3.png +0 -0
  95. data/path_release_steps.md +0 -9
  96. data/spec/controller_helper_spec.rb +0 -34
  97. data/spec/index.html.erb +0 -11
  98. data/spec/react/callbacks_spec.rb +0 -138
  99. data/spec/react/children_spec.rb +0 -76
  100. data/spec/react/component/base_spec.rb +0 -32
  101. data/spec/react/component_spec.rb +0 -884
  102. data/spec/react/dsl_spec.rb +0 -303
  103. data/spec/react/element_spec.rb +0 -136
  104. data/spec/react/event_spec.rb +0 -24
  105. data/spec/react/native_library_spec.rb +0 -322
  106. data/spec/react/observable_spec.rb +0 -42
  107. data/spec/react/opal_jquery_extensions_spec.rb +0 -68
  108. data/spec/react/param_declaration_spec.rb +0 -269
  109. data/spec/react/react_spec.rb +0 -215
  110. data/spec/react/refs_callback_spec.rb +0 -56
  111. data/spec/react/server_spec.rb +0 -25
  112. data/spec/react/state_spec.rb +0 -55
  113. data/spec/react/test/dsl_spec.rb +0 -43
  114. data/spec/react/test/matchers/render_html_matcher_spec.rb +0 -83
  115. data/spec/react/test/rspec_spec.rb +0 -62
  116. data/spec/react/test/session_spec.rb +0 -88
  117. data/spec/react/test/utils_spec.rb +0 -28
  118. data/spec/react/top_level_component_spec.rb +0 -101
  119. data/spec/react/tutorial/tutorial_spec.rb +0 -36
  120. data/spec/react/validator_spec.rb +0 -124
  121. data/spec/reactive-ruby/component_loader_spec.rb +0 -77
  122. data/spec/reactive-ruby/isomorphic_helpers_spec.rb +0 -160
  123. data/spec/reactive-ruby/rails/asset_pipeline_spec.rb +0 -10
  124. data/spec/reactive-ruby/rails/component_mount_spec.rb +0 -66
  125. data/spec/reactive-ruby/server_rendering/contextual_renderer_spec.rb +0 -35
  126. data/spec/spec_helper.rb +0 -149
  127. data/spec/support/react/spec_helpers.rb +0 -44
  128. data/spec/vendor/es5-shim.min.js +0 -6
  129. data/spec/vendor/jquery-2.2.4.min.js +0 -4
@@ -1,76 +0,0 @@
1
- module React
2
- class Event
3
- include Native
4
- alias_native :bubbles, :bubbles
5
- alias_native :cancelable, :cancelable
6
- alias_native :current_target, :currentTarget
7
- alias_native :default_prevented, :defaultPrevented
8
- alias_native :event_phase, :eventPhase
9
- alias_native :is_trusted?, :isTrusted
10
- alias_native :native_event, :nativeEvent
11
- alias_native :target, :target
12
- alias_native :timestamp, :timeStamp
13
- alias_native :event_type, :type
14
- alias_native :prevent_default, :preventDefault
15
- alias_native :stop_propagation, :stopPropagation
16
- # Clipboard
17
- alias_native :clipboard_data, :clipboardData
18
- # Keyboard
19
- alias_native :alt_key, :altKey
20
- alias_native :char_code, :charCode
21
- alias_native :ctrl_key, :ctrlKey
22
- alias_native :get_modifier_state, :getModifierState
23
- alias_native :key, :key
24
- alias_native :key_code, :keyCode
25
- alias_native :locale, :locale
26
- alias_native :location, :location
27
- alias_native :meta_key, :metaKey
28
- alias_native :repeat, :repeat
29
- alias_native :shift_key, :shiftKey
30
- alias_native :which, :which
31
- # Focus
32
- alias_native :related_target, :relatedTarget
33
- # Mouse
34
- alias_native :alt_key, :altKey
35
- alias_native :button, :button
36
- alias_native :buttons, :buttons
37
- alias_native :client_x, :clientX
38
- alias_native :client_y, :clientY
39
- alias_native :ctrl_key, :ctrlKey
40
- alias_native :get_modifier_state, :getModifierState
41
- alias_native :meta_key, :metaKey
42
- alias_native :page_x, :pageX
43
- alias_native :page_y, :pageY
44
- alias_native :related_target, :relatedTarget
45
- alias_native :screen_x, :screen_x
46
- alias_native :screen_y, :screen_y
47
- alias_native :shift_key, :shift_key
48
- # Touch
49
- alias_native :alt_key, :altKey
50
- alias_native :changed_touches, :changedTouches
51
- alias_native :ctrl_key, :ctrlKey
52
- alias_native :get_modifier_state, :getModifierState
53
- alias_native :meta_key, :metaKey
54
- alias_native :shift_key, :shiftKey
55
- alias_native :target_touches, :targetTouches
56
- alias_native :touches, :touches
57
- # UI
58
- alias_native :detail, :detail
59
- alias_native :view, :view
60
- # Wheel
61
- alias_native :delta_mode, :deltaMode
62
- alias_native :delta_x, :deltaX
63
- alias_native :delta_y, :deltaY
64
- alias_native :delta_z, :deltaZ
65
-
66
- BUILT_IN_EVENTS = %w{onCopy onCut onPaste onKeyDown onKeyPress onKeyUp
67
- onFocus onBlur onChange onInput onSubmit onClick onDoubleClick onDrag
68
- onDragEnd onDragEnter onDragExit onDragLeave onDragOver onDragStart onDrop
69
- onMouseDown onMouseEnter onMouseLeave onMouseMove onMouseOut onMouseOver
70
- onMouseUp onTouchCancel onTouchEnd onTouchMove onTouchStart onScroll}
71
-
72
- def initialize(native_element)
73
- @native = native_element
74
- end
75
- end
76
- end
@@ -1,9 +0,0 @@
1
- class Hash
2
- def shallow_to_n
3
- hash = `{}`
4
- self.map do |key, value|
5
- `hash[#{key}] = #{value}`
6
- end
7
- hash
8
- end
9
- end
@@ -1,26 +0,0 @@
1
- Element.instance_eval do
2
- def self.find(selector)
3
- selector = begin
4
- selector.dom_node
5
- rescue
6
- selector
7
- end if `#{selector}.$dom_node !== undefined`
8
- `$(#{selector})`
9
- end
10
-
11
- def self.[](selector)
12
- find(selector)
13
- end
14
-
15
- define_method :render do |container = nil, params = {}, &block|
16
- if `#{self.to_n}._reactrb_component_class === undefined`
17
- `#{self.to_n}._reactrb_component_class = #{Class.new(Hyperloop::Component)}`
18
- end
19
- klass = `#{self.to_n}._reactrb_component_class`
20
- klass.class_eval do
21
- render(container, params, &block)
22
- end
23
-
24
- React.render(React.create_element(`#{self.to_n}._reactrb_component_class`), self)
25
- end
26
- end if Object.const_defined?('Element')
@@ -1,8 +0,0 @@
1
- class String
2
- def event_camelize
3
- `#{self}.replace(/(^|_)([^_]+)/g, function(match, pre, word, index) {
4
- var capitalize = true;
5
- return capitalize ? word.substr(0,1).toUpperCase()+word.substr(1) : word;
6
- })`
7
- end
8
- end
@@ -1,13 +0,0 @@
1
- class Hash
2
-
3
- alias_method :_pre_react_patch_initialize, :initialize
4
-
5
- def initialize(defaults = undefined, &block)
6
- if (`defaults===null`)
7
- _pre_react_patch_initialize(&block)
8
- else
9
- _pre_react_patch_initialize(defaults, &block)
10
- end
11
- end
12
-
13
- end
@@ -1,87 +0,0 @@
1
- module React
2
- # NativeLibrary handles importing JS libraries. Importing native components is handled
3
- # by the React::Base. It also provides several methods used by auto-import.rb
4
-
5
- # A NativeLibrary is simply a wrapper that holds the name of the native js library.
6
- # It responds to const_missing and method_missing by looking up objects within the js library.
7
- # If the object is a react component it is wrapped by a reactrb component class, otherwise
8
- # a nested NativeLibrary is returned.
9
-
10
- # Two macros are provided: imports (for naming the native library) and renames which allows
11
- # the members of a library to be given different names within the ruby name space.
12
-
13
- # Public methods used by auto-import.rb are import_const_from_native and find_and_render_component
14
- class NativeLibrary
15
- class << self
16
- def imports(native_name)
17
- @native_prefix = "#{native_name}."
18
- self
19
- end
20
-
21
- def rename(rename_list)
22
- # rename_list is a hash in the form: native_name => ruby_name, native_name => ruby_name
23
- rename_list.each do |js_name, ruby_name|
24
- native_name = lookup_native_name(js_name)
25
- if lookup_native_name(js_name)
26
- create_component_wrapper(self, native_name, ruby_name) ||
27
- create_library_wrapper(self, native_name, ruby_name)
28
- else
29
- raise "class #{name} < React::NativeLibrary could not import #{js_name}. "\
30
- "Native value #{scope_native_name(js_name)} is undefined."
31
- end
32
- end
33
- end
34
-
35
- def import_const_from_native(klass, const_name, create_library)
36
- native_name = lookup_native_name(const_name) ||
37
- lookup_native_name(const_name[0].downcase + const_name[1..-1])
38
- native_name && (
39
- create_component_wrapper(klass, native_name, const_name) || (
40
- create_library &&
41
- create_library_wrapper(klass, native_name, const_name)))
42
- end
43
-
44
- def const_missing(const_name)
45
- import_const_from_native(self, const_name, true) || super
46
- end
47
-
48
- def method_missing(method, *args, &block)
49
- component_class = get_const(method) if const_defined?(method)
50
- component_class ||= import_const_from_native(self, method, false)
51
- raise 'could not import a react component named: '\
52
- "#{scope_native_name method}" unless component_class
53
- React::RenderingContext.render(component_class, *args, &block)
54
- end
55
-
56
- private
57
-
58
- def lookup_native_name(js_name)
59
- native_name = scope_native_name(js_name)
60
- `eval(#{native_name}) !== undefined && native_name`
61
- # rubocop:disable Lint/RescueException # that is what eval raises in Opal >= 0.10.
62
- rescue Exception
63
- nil
64
- # rubocop:enable Lint/RescueException
65
- end
66
-
67
- def scope_native_name(js_name)
68
- "#{@native_prefix}#{js_name}"
69
- end
70
-
71
- def create_component_wrapper(klass, native_name, ruby_name)
72
- if React::API.native_react_component?(native_name)
73
- new_klass = klass.const_set ruby_name, Class.new
74
- new_klass.class_eval do
75
- include Hyperloop::Component::Mixin
76
- imports native_name
77
- end
78
- new_klass
79
- end
80
- end
81
-
82
- def create_library_wrapper(klass, native_name, ruby_name)
83
- klass.const_set ruby_name, Class.new(React::NativeLibrary).imports(native_name)
84
- end
85
- end
86
- end
87
- end
@@ -1,15 +0,0 @@
1
- # Lazy load HTML tag constants in the form DIV or A
2
- # This is needed to allow for a HAML expression like this DIV.my_class
3
- class Object
4
- class << self
5
- alias _reactrb_tag_original_const_missing const_missing
6
-
7
- def const_missing(const_name)
8
- # Opal uses const_missing to initially define things,
9
- # so we always call the original, and respond to the exception
10
- _reactrb_tag_original_const_missing(const_name)
11
- rescue StandardError => e
12
- React::Component::Tags.html_tag_class_for(const_name) || raise(e)
13
- end
14
- end
15
- end
@@ -1,3 +0,0 @@
1
- if RUBY_ENGINE == 'opal'
2
- require 'react.js'
3
- end
@@ -1,3 +0,0 @@
1
- if RUBY_ENGINE == 'opal'
2
- require "react-server.js"
3
- end
@@ -1,20 +0,0 @@
1
- if RUBY_ENGINE == 'opal'
2
- %x{
3
- var ms = [
4
- "Warning: `react/react-source` is deprecated, ",
5
- "use `react/react-source-browser` or `react/react-source-server` instead."
6
- ]
7
- console.error(ms.join(""));
8
- }
9
- require 'react.js'
10
- require "react-server.js"
11
- else
12
- require "react/config"
13
- require "react/rails/asset_variant"
14
- react_directory = React::Rails::AssetVariant.new(
15
- addons: true,
16
- variant: React::Config.config[:environment].to_sym
17
- ).react_directory
18
- Opal.append_path react_directory.untaint
19
- Opal.append_path File.expand_path('../../react-sources/', __FILE__).untaint
20
- end
@@ -1,31 +0,0 @@
1
- require 'react/native_library'
2
-
3
- module React
4
- module RefsCallbackExtension
5
- end
6
-
7
- class API
8
- class << self
9
- alias :orig_convert_props :convert_props
10
- end
11
-
12
- def self.convert_props(properties)
13
- props = self.orig_convert_props(properties)
14
- props.map do |key, value|
15
- if key == "ref" && value.is_a?(Proc)
16
- new_proc = Proc.new do |native_inst|
17
- if `#{native_inst}._getOpalInstance !== undefined`
18
- value.call(`#{native_inst}._getOpalInstance()`)
19
- elsif `React.findDOMNode !== undefined && #{native_inst}.nodeType === undefined`
20
- value.call(`React.findDOMNode(#{native_inst})`)
21
- else
22
- value.call(native_inst)
23
- end
24
- end
25
- props[key] = new_proc
26
- end
27
- end
28
- props
29
- end
30
- end
31
- end
@@ -1,144 +0,0 @@
1
- module React
2
- class RenderingContext
3
- class << self
4
- attr_accessor :waiting_on_resources
5
-
6
- def render(name, *args, &block)
7
- was_outer_most = !@not_outer_most
8
- @not_outer_most = true
9
- remove_nodes_from_args(args)
10
- @buffer ||= [] unless @buffer
11
- if block
12
- element = build do
13
- saved_waiting_on_resources = waiting_on_resources
14
- self.waiting_on_resources = nil
15
- run_child_block(name.nil?, &block)
16
- if name
17
- buffer = @buffer.dup
18
- React.create_element(name, *args) { buffer }.tap do |element|
19
- element.waiting_on_resources = saved_waiting_on_resources || !!buffer.detect { |e| e.waiting_on_resources if e.respond_to?(:waiting_on_resources) }
20
- element.waiting_on_resources ||= buffer.last.is_a?(String) && waiting_on_resources
21
- end
22
- elsif @buffer.last.is_a? React::Element
23
- @buffer.last.tap { |element| element.waiting_on_resources ||= saved_waiting_on_resources }
24
- else
25
- @buffer.last.to_s.span.tap { |element| element.waiting_on_resources = saved_waiting_on_resources }
26
- end
27
- end
28
- elsif name.is_a? React::Element
29
- element = name
30
- else
31
- element = React.create_element(name, *args)
32
- element.waiting_on_resources = waiting_on_resources
33
- end
34
- @buffer << element
35
- self.waiting_on_resources = nil
36
- element
37
- ensure
38
- @not_outer_most = @buffer = nil if was_outer_most
39
- end
40
-
41
- def build
42
- current = @buffer
43
- @buffer = []
44
- return_val = yield @buffer
45
- @buffer = current
46
- return_val
47
- end
48
-
49
- def as_node(element)
50
- @buffer.delete(element)
51
- element
52
- end
53
-
54
- alias delete as_node
55
-
56
- def rendered?(element)
57
- @buffer.include? element
58
- end
59
-
60
- def replace(e1, e2)
61
- @buffer[@buffer.index(e1)] = e2
62
- end
63
-
64
- def remove_nodes_from_args(args)
65
- args[0].each do |key, value|
66
- begin
67
- value.as_node if value.is_a?(Element)
68
- rescue Exception
69
- end
70
- end if args[0] && args[0].is_a?(Hash)
71
- end
72
-
73
- # run_child_block gathers the element(s) generated by a child block.
74
- # for example when rendering this div: div { "hello".span; "goodby".span }
75
- # two child Elements will be generated.
76
- #
77
- # the final value of the block should either be
78
- # 1 an object that responds to :acts_as_string?
79
- # 2 a string,
80
- # 3 an element that is NOT yet pushed on the rendering buffer
81
- # 4 or the last element pushed on the buffer
82
- #
83
- # in case 1 we change the object to a string, and then it becomes case 2
84
- # in case 2 we automatically push the string onto the buffer
85
- # in case 3 we also push the Element onto the buffer IF the buffer is empty
86
- # case 4 requires no special processing
87
- #
88
- # Once we have taken care of these special cases we do a check IF we are in an
89
- # outer rendering scope. In this case react only allows us to generate 1 Element
90
- # so we insure that is the case, and also check to make sure that element in the buffer
91
- # is the element returned
92
-
93
-
94
- def run_child_block(is_outer_scope)
95
- result = yield
96
- result = result.to_s.span if result.try :acts_as_string? || result.is_a?(String)
97
- @buffer << result if result.is_a?(String) || (result.is_a?(React::Element) && @buffer.empty?)
98
- raise_render_error(result) if is_outer_scope && @buffer != [result]
99
- end
100
-
101
- # heurestically raise a meaningful error based on the situation
102
-
103
- def raise_render_error(result)
104
- improper_render 'A different element was returned than was generated within the DSL.',
105
- 'Possibly improper use of Element#delete.' if @buffer.count == 1
106
- improper_render "Instead #{@buffer.count} elements were generated.",
107
- 'Do you want to wrap your elements in a div?' if @buffer.count > 1
108
- improper_render "Instead the component #{result} was returned.",
109
- "Did you mean #{result}()?" if result.try :reactrb_component?
110
- improper_render "Instead the #{result.class} #{result} was returned.",
111
- 'You may need to convert this to a string.'
112
- end
113
-
114
- def improper_render(message, solution)
115
- raise "a component's render method must generate and return exactly 1 element or a string.\n"\
116
- " #{message} #{solution}"
117
- end
118
- end
119
- end
120
-
121
- class ::Object
122
- [:span, :td, :th, :while_loading].each do |tag|
123
- define_method(tag) do |*args, &block|
124
- args.unshift(tag)
125
- return send(*args, &block) if is_a? React::Component
126
- React::RenderingContext.render(*args) { to_s }
127
- end
128
- end
129
-
130
- def para(*args, &block)
131
- args.unshift(:p)
132
- return send(*args, &block) if is_a? React::Component
133
- React::RenderingContext.render(*args) { to_s }
134
- end
135
-
136
- def br
137
- return send(:br) if is_a? React::Component
138
- React::RenderingContext.render(:span) do
139
- React::RenderingContext.render(to_s)
140
- React::RenderingContext.render(:br)
141
- end
142
- end
143
- end
144
- end