react-webpacker 1.2.2 → 1.3.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 98f2c734a253ddb4c6f0d2b16337a26c9bd242991d37968c1698f87bde43a749
4
- data.tar.gz: c4f03b857ef10020a0f8ac09d5c9d95e85749fa61cbb6dfc31a67a04c00aefb1
3
+ metadata.gz: f9653948301c33e8c40030fb395ce91fba9091f8ee2bb2562a6802712f1679f5
4
+ data.tar.gz: 567c3bf3f323d03e2bc1f9af3484dd010984800598ddfbed05092991adccea7b
5
5
  SHA512:
6
- metadata.gz: bd784e8946cf42bde823627899fc1121da02eee8349d92525b7b9a0bb2cf61d98dd5e6eea42925051379a3a89b351ee0b3a24d828339a09ab4a2920b4d75eca9
7
- data.tar.gz: baaad81738e0289562f070f44ff5ef7c15e2dcc34b1cababa95383bea24383ebe80a87c2914891baf472e1d5a61d26fb425e97311afc20c97a472c53cb03184b
6
+ metadata.gz: cbebfd2c71bebd5c7362ffdb3259d841e7209e1516c44dd9405eff8b31b68c20ba2ccef75bcec4905fd47ae741bcba8379d5ac547a34b81568590794abec1567
7
+ data.tar.gz: 4aa678150006c34f53fa3235aa0ce08abcd94b93abf094592071962c3679232b054b1834921c74676ebba8638b81f325858e9454b93555df030b0e6cf130ce5e
data/.gitignore CHANGED
@@ -4,3 +4,4 @@ node_modules
4
4
  test/__build__
5
5
 
6
6
  dist
7
+ *.gem
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- react-webpacker (1.2.0)
4
+ react-webpacker (1.3.0)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
data/README.md CHANGED
@@ -9,29 +9,62 @@ React-Webpacker is the smallest, enoughly-tested library for react with webpacke
9
9
  - **NOT Provide** Server-Side Rendering.
10
10
 
11
11
  ## Usage
12
- - Add component to `window` scope.
12
+
13
+ ### Notes
14
+ - From Ruby to JS, `snake_case` in props will be transformed to `camelCase` **AUTOMATICALLY**.
15
+ - `react-webpacker` script should be called **ONCE** per rendered html page, **DON'T** call in looped views.
16
+
17
+ ### ES Modules Way Usage
18
+
19
+ your-view.js
13
20
  ```js
14
- window.YourCoolComponent = YourCoolComponent
21
+ import ReactWebpacker from 'react-webpacker'
22
+ import YourCoolComponent from 'path/to/YourCoolComponent'
23
+
24
+ const components = {
25
+ YourCoolComponent
26
+ }
27
+
28
+ ReactWebpacker.render(components)
29
+ ```
30
+
31
+ your-view.html.erb
32
+ ```erb
33
+ <%= javascript_pack_tag 'your-view', defer: true %>
34
+
35
+ <%= render_component('YourCoolComponent', {props_key: :value}) %>
15
36
  ```
16
37
 
17
- - Create JavaScript file to render components into webpacker target directory.
18
- ```js:react-webpacker.js
38
+ ### or Easy Usage
39
+
40
+ YourCoolComponent.js
41
+ ```js
42
+ // Add component to `window` scope.
43
+ Object.assign(window, { YourCoolComponent })
44
+ ```
45
+
46
+ react-webpacker.js
47
+ ```js
19
48
  import ReactWebpacker from 'react-webpacker'
20
49
 
21
50
  ReactWebpacker.render()
22
51
  ```
23
52
 
24
- - Add View Helper and JavaScript tag.
25
- - From Ruby to JS, `snake_case` in props will be transformed to `camelCase` **AUTOMATICALLY**.
26
- - `react-webpacker` script should be called **ONCE** per rendered html page, **DON'T** call in looped views.
27
- - DOM is rendered in order from the top, so you should call `react-webpacker` script after `use_components` and `render_component`
28
- ```slim
29
- = use_components(['path/to/YourCoolComponent'])
30
- = render_component('YourCoolComponent', {props_object: :value})
53
+ your-view.html.erb
54
+ ```erb
55
+ <%= use_components ['path/to/YourCoolComponent'], defer: true %>
56
+ <%= javascript_pack_tag 'react-webpacker', defer: true %>
57
+
58
+ <%= render_component('YourCoolComponent', {props_key: :value}) %>
31
59
 
32
- = javascript_pack_tag 'react-webpacker'
33
60
  ```
34
61
 
62
+ #### Notes
63
+ - DOM is rendered in order from the top, so you should call `ReactWebpacker#render()` with `defer` attribute.
64
+ - or after `render_component`
65
+ - You should call `ReactWebpacker#render()` after `use_components`, even if using `defer`.
66
+
67
+
35
68
  ## Compared with `React-Rails` and `React on Rails`
36
69
  - They provide JavaScript library to load **ALL COMPONENTS**, too heavy and harmful for browser performance.
37
70
  - They provide Server-Side Rendering, so library is too large.
@@ -1,3 +1,3 @@
1
1
  module ReactWebpacker
2
- VERSION = '1.2.2'.freeze
2
+ VERSION = '1.3.0'.freeze
3
3
  end
data/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-webpacker",
3
- "version": "1.2.2",
3
+ "version": "1.3.0",
4
4
  "description": "The smallest, enoughly-tested library for react with webpacker.",
5
5
  "main": "dist/react-webpacker.js",
6
6
  "scripts": {
@@ -2,11 +2,11 @@ import React from 'react'
2
2
  import ReactDOM from 'react-dom'
3
3
 
4
4
  export default {
5
- render() {
5
+ render(components = window) {
6
6
  Array.from(document.querySelectorAll('div[data-component-name]')).forEach(
7
7
  dom => {
8
8
  const componentName = dom.getAttribute('data-component-name')
9
- const component = window[componentName]
9
+ const component = components[componentName]
10
10
  if (!component)
11
11
  return console.error(
12
12
  `Component ${componentName} is not defined in window scope`
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: react-webpacker
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.2
4
+ version: 1.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - euxn23
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-03-26 00:00:00.000000000 Z
11
+ date: 2018-03-28 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description:
14
14
  email: euxn23@gmail.com
@@ -35,8 +35,6 @@ files:
35
35
  - package.json
36
36
  - react-webpacker.gemspec
37
37
  - src/react-webpacker.js
38
- - test/__build__/packs/components/MyComponent.js
39
- - test/__build__/packs/react-webpacker.js
40
38
  - test/dummy/components/MyComponent.jsx
41
39
  - test/dummy/react-webpacker.js
42
40
  - test/react-webpacker_test.js