svelte-on-rails 8.1.0 → 9.0.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 +4 -4
- data/README.md +6 -4
- data/lib/generators/showcase_generator.rb +128 -0
- data/lib/generators/svelte_on_rails/install/install_generator.rb +1 -111
- data/lib/svelte-on-rails.rb +1 -1
- data/lib/svelte_on_rails/installer/hello_world.rb +7 -26
- data/lib/svelte_on_rails/installer/utils.rb +2 -14
- data/lib/svelte_on_rails/lib/development_utils.rb +0 -29
- data/lib/svelte_on_rails/lib/utils.rb +6 -0
- data/lib/svelte_on_rails/lib/view_helper_support.rb +2 -0
- data/lib/svelte_on_rails/renderer/render-backup.js +26 -0
- data/lib/svelte_on_rails/renderer/render.js +61 -13
- data/lib/svelte_on_rails/renderer/renderer.rb +7 -4
- data/lib/svelte_on_rails/renderer/utils.js +40 -40
- data/lib/tasks/svelte_on_rails_tasks.rake +13 -51
- data/templates/config_base/config/svelte_on_rails.yml +1 -1
- data/templates/config_base/vite-ssr.config.ts +8 -3
- data/templates/showcase/app/channels/application_cable/channel.rb +4 -0
- data/templates/showcase/app/channels/application_cable/connection.rb +5 -0
- data/templates/showcase/app/controllers/svelte_on_rails_showcase_controller.rb +65 -0
- data/templates/showcase/app/frontend/javascript/svelte_on_rails_showcase/JavascriptImport.svelte +7 -0
- data/templates/showcase/app/frontend/javascript/svelte_on_rails_showcase/JpgImport.svelte +15 -0
- data/templates/{all_features_test/app/frontend/javascript/components → showcase/app/frontend/javascript/svelte_on_rails_showcase}/ParentWithChild.svelte +1 -1
- data/templates/showcase/app/frontend/javascript/svelte_on_rails_showcase/PngImport.svelte +16 -0
- data/templates/{all_features_test/app/frontend/javascript/components → showcase/app/frontend/javascript/svelte_on_rails_showcase}/ReceiveFromChannel.svelte +5 -3
- data/templates/{all_features_test/app/frontend/javascript/components → showcase/app/frontend/javascript/svelte_on_rails_showcase}/SvelteOnRailsHelloWorld.svelte +4 -4
- data/templates/showcase/app/frontend/javascript/svelte_on_rails_showcase/SvgRawImport.svelte +7 -0
- data/templates/showcase/app/views/svelte_on_rails_showcase/_nav.html.erb +13 -0
- data/templates/showcase/app/views/svelte_on_rails_showcase/backend_frontend_rendered.html.erb +37 -0
- data/templates/showcase/app/views/svelte_on_rails_showcase/index.html.erb +9 -0
- data/templates/{all_features_test/app/views/svelte_on_rails_hello_world → showcase/app/views/svelte_on_rails_showcase}/ssr_auto_rendered.html.erb +2 -2
- data/templates/{all_features_test/app/views/svelte_on_rails_hello_world → showcase/app/views/svelte_on_rails_showcase}/web_socket.html.erb +1 -1
- metadata +27 -24
- data/lib/svelte_on_rails/installer/vite.rb +0 -95
- data/templates/all_features_test/app/controllers/svelte_on_rails_hello_world_controller.rb +0 -62
- data/templates/all_features_test/app/frontend/javascript/components/JavascriptImport.svelte +0 -7
- data/templates/all_features_test/app/frontend/javascript/components/JpgImport.svelte +0 -7
- data/templates/all_features_test/app/frontend/javascript/components/PngImport.svelte +0 -7
- data/templates/all_features_test/app/frontend/javascript/components/SvgRawImport.svelte +0 -7
- data/templates/all_features_test/app/views/svelte_on_rails_hello_world/_nav.html.erb +0 -13
- data/templates/all_features_test/app/views/svelte_on_rails_hello_world/backend_frontend_rendered.html.erb +0 -37
- data/templates/all_features_test/app/views/svelte_on_rails_hello_world/index.html.erb +0 -9
- /data/templates/{all_features_test → showcase}/app/channels/svelte_on_rails_channel.rb +0 -0
- /data/templates/{all_features_test → showcase}/app/frontend/initializers/actionCable.js +0 -0
- /data/templates/{all_features_test/app/frontend/images/svelte-on-rails-hello-world-england.png → showcase/app/frontend/javascript/svelte_on_rails_showcase/england.png} +0 -0
- /data/templates/{all_features_test/app/frontend/images/svelte-on-rails-hello-world-face-smile-wink.svg → showcase/app/frontend/javascript/svelte_on_rails_showcase/face-smile-wink.svg} +0 -0
- /data/templates/{all_features_test/app/frontend/javascript → showcase/app/frontend/javascript/svelte_on_rails_showcase}/nestedJavascript.js +0 -0
- /data/templates/{all_features_test/app/frontend/javascript → showcase/app/frontend/javascript/svelte_on_rails_showcase}/nestedJavascriptToggled.js +0 -0
- /data/templates/{all_features_test/app/frontend/javascript/components → showcase/app/frontend/javascript/svelte_on_rails_showcase}/sub/NestedComponent.svelte +0 -0
- /data/templates/{all_features_test/app/frontend/images/svelte-on-rails-hello-world-switzerland.jpg → showcase/app/frontend/javascript/svelte_on_rails_showcase/switzerland.jpg} +0 -0
- /data/templates/{all_features_test/app/views/svelte_on_rails_hello_world → showcase/app/views/svelte_on_rails_showcase}/_styles.html.erb +0 -0
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
class SvelteOnRailsHelloWorldController < ApplicationController
|
|
2
|
-
|
|
3
|
-
def index
|
|
4
|
-
end
|
|
5
|
-
|
|
6
|
-
def web_socket_action
|
|
7
|
-
|
|
8
|
-
comp = 'ReceiveFromChannel'
|
|
9
|
-
|
|
10
|
-
case params['stream']
|
|
11
|
-
|
|
12
|
-
when 'action-cable-to-component'
|
|
13
|
-
SvelteOnRails::ActionCable.dispatch(
|
|
14
|
-
comp,
|
|
15
|
-
{ message: "#{SecureRandom.hex(2)} Sent by <span class='transfer'>ActionCable</span>: äöü🤣🌴🌍漢字", class: 'action-cable-to-component' },
|
|
16
|
-
event: 'stream-action'
|
|
17
|
-
)
|
|
18
|
-
|
|
19
|
-
when 'action-cable-to-element'
|
|
20
|
-
SvelteOnRails::ActionCable.dispatch(
|
|
21
|
-
comp,
|
|
22
|
-
{ message: "#{SecureRandom.hex(2)} <span class='transfer'>ActionCable to .my-custom-class / my-custom-event</span>", class: 'action-cable-to-element' },
|
|
23
|
-
selector: '.my-custom-class',
|
|
24
|
-
event: 'my-custom-event'
|
|
25
|
-
)
|
|
26
|
-
|
|
27
|
-
when 'action-cable-to-selector'
|
|
28
|
-
SvelteOnRails::ActionCable.dispatch_by_selector(
|
|
29
|
-
'.receive-by-selector',
|
|
30
|
-
{ message: "Sent by ActionCable/Selector: äöü🤣🌴🌍漢字", class: 'action-cable-to-selector' }
|
|
31
|
-
)
|
|
32
|
-
|
|
33
|
-
when 'turbo-stream-to-all-components'
|
|
34
|
-
SvelteOnRails::TurboStream.dispatch(
|
|
35
|
-
nil,
|
|
36
|
-
{ message: "Sent by TurboStream: äöü🤣🌴🌍漢字", class: 'turbo-stream-to-all-components' },
|
|
37
|
-
)
|
|
38
|
-
|
|
39
|
-
when 'turbo-stream-to-element'
|
|
40
|
-
SvelteOnRails::TurboStream.dispatch(
|
|
41
|
-
nil,
|
|
42
|
-
{ message: "Sent by TurboStream: äöü🤣🌴🌍漢字", class: 'turbo-stream-to-element' },
|
|
43
|
-
selector: '.my-custom-class',
|
|
44
|
-
event: 'my-custom-event'
|
|
45
|
-
)
|
|
46
|
-
|
|
47
|
-
when 'turbo-stream-to-selector'
|
|
48
|
-
SvelteOnRails::TurboStream.dispatch_by_selector(
|
|
49
|
-
'.receive-by-selector',
|
|
50
|
-
{ message: "Sent by TurboStream/Selector: äöü🤣🌴🌍漢字", class: 'turbo-stream-to-selector' }
|
|
51
|
-
)
|
|
52
|
-
|
|
53
|
-
else
|
|
54
|
-
raise 'Unknown stream'
|
|
55
|
-
|
|
56
|
-
end
|
|
57
|
-
|
|
58
|
-
render plain: "dispatched: #{params['stream']}"
|
|
59
|
-
|
|
60
|
-
end
|
|
61
|
-
|
|
62
|
-
end
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
<div class="nav">
|
|
2
|
-
<%= link_to 'Hello World', '/svelte_on_rails_hello_world/index' %>
|
|
3
|
-
|
|
|
4
|
-
<%= link_to 'Backend/Frontend Test', '/svelte_on_rails_hello_world/backend_frontend_rendered' %>
|
|
5
|
-
|
|
|
6
|
-
<%= link_to 'SSR-Auto rendered (default)', '/svelte_on_rails_hello_world/ssr_auto_rendered' %>
|
|
7
|
-
|
|
|
8
|
-
<%= link_to 'Turbo Streams', '/svelte_on_rails_hello_world/web_socket' %>
|
|
9
|
-
</div>
|
|
10
|
-
|
|
11
|
-
<% turbo_id = request.headers['X-Turbo-Request-ID'] %>
|
|
12
|
-
<p class="<%= (turbo_id.present? ? 'turbo-request' : 'initial-request') %>"><%= (turbo_id.blank? ? 'This is a initial request' : "Turbo-Request-ID: #{turbo_id}") %></p>
|
|
13
|
-
<p>Rails.environment: <%= Rails.env %></p>
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
<%= render 'styles' %>
|
|
2
|
-
<style>
|
|
3
|
-
.svelte-component {
|
|
4
|
-
border: 1px solid lightgray;
|
|
5
|
-
padding: 10px;
|
|
6
|
-
margin: 10px;
|
|
7
|
-
width: 100px;
|
|
8
|
-
display: inline-block;
|
|
9
|
-
}
|
|
10
|
-
</style>
|
|
11
|
-
|
|
12
|
-
<%= render 'nav' %>
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
<h1>SSR / Client side rendering test</h1>
|
|
16
|
-
<p>After rendering both, client and server side rendered components, must look similar for making sure that on ssr:
|
|
17
|
-
:auto (which is default)
|
|
18
|
-
no unpleasant «blink» is appearing.</p>
|
|
19
|
-
<hr>
|
|
20
|
-
|
|
21
|
-
<% components = ['SvgRawImport', 'JpgImport', 'PngImport', 'JavascriptImport', 'ParentWithChild'] %>
|
|
22
|
-
|
|
23
|
-
<h3>Always rendered server side</h3>
|
|
24
|
-
<div class="ssr-only">
|
|
25
|
-
<% components.each do |component| %>
|
|
26
|
-
<%= svelte_component(component, {title: component}, options: {ssr: true, hydrate: false}) %>
|
|
27
|
-
<% end %>
|
|
28
|
-
</div>
|
|
29
|
-
|
|
30
|
-
<hr>
|
|
31
|
-
<h3>Always rendered client side</h3>
|
|
32
|
-
<p>Here you will see a unpleasant «blink» on the initial request.</p>
|
|
33
|
-
<div class="client-only">
|
|
34
|
-
<% components.each do |component| %>
|
|
35
|
-
<%= svelte_component(component, {title: component}, options: {ssr: false, hydrate: true}) %>
|
|
36
|
-
<% end %>
|
|
37
|
-
</div>
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|