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.
Files changed (51) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +6 -4
  3. data/lib/generators/showcase_generator.rb +128 -0
  4. data/lib/generators/svelte_on_rails/install/install_generator.rb +1 -111
  5. data/lib/svelte-on-rails.rb +1 -1
  6. data/lib/svelte_on_rails/installer/hello_world.rb +7 -26
  7. data/lib/svelte_on_rails/installer/utils.rb +2 -14
  8. data/lib/svelte_on_rails/lib/development_utils.rb +0 -29
  9. data/lib/svelte_on_rails/lib/utils.rb +6 -0
  10. data/lib/svelte_on_rails/lib/view_helper_support.rb +2 -0
  11. data/lib/svelte_on_rails/renderer/render-backup.js +26 -0
  12. data/lib/svelte_on_rails/renderer/render.js +61 -13
  13. data/lib/svelte_on_rails/renderer/renderer.rb +7 -4
  14. data/lib/svelte_on_rails/renderer/utils.js +40 -40
  15. data/lib/tasks/svelte_on_rails_tasks.rake +13 -51
  16. data/templates/config_base/config/svelte_on_rails.yml +1 -1
  17. data/templates/config_base/vite-ssr.config.ts +8 -3
  18. data/templates/showcase/app/channels/application_cable/channel.rb +4 -0
  19. data/templates/showcase/app/channels/application_cable/connection.rb +5 -0
  20. data/templates/showcase/app/controllers/svelte_on_rails_showcase_controller.rb +65 -0
  21. data/templates/showcase/app/frontend/javascript/svelte_on_rails_showcase/JavascriptImport.svelte +7 -0
  22. data/templates/showcase/app/frontend/javascript/svelte_on_rails_showcase/JpgImport.svelte +15 -0
  23. data/templates/{all_features_test/app/frontend/javascript/components → showcase/app/frontend/javascript/svelte_on_rails_showcase}/ParentWithChild.svelte +1 -1
  24. data/templates/showcase/app/frontend/javascript/svelte_on_rails_showcase/PngImport.svelte +16 -0
  25. data/templates/{all_features_test/app/frontend/javascript/components → showcase/app/frontend/javascript/svelte_on_rails_showcase}/ReceiveFromChannel.svelte +5 -3
  26. data/templates/{all_features_test/app/frontend/javascript/components → showcase/app/frontend/javascript/svelte_on_rails_showcase}/SvelteOnRailsHelloWorld.svelte +4 -4
  27. data/templates/showcase/app/frontend/javascript/svelte_on_rails_showcase/SvgRawImport.svelte +7 -0
  28. data/templates/showcase/app/views/svelte_on_rails_showcase/_nav.html.erb +13 -0
  29. data/templates/showcase/app/views/svelte_on_rails_showcase/backend_frontend_rendered.html.erb +37 -0
  30. data/templates/showcase/app/views/svelte_on_rails_showcase/index.html.erb +9 -0
  31. 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
  32. 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
  33. metadata +27 -24
  34. data/lib/svelte_on_rails/installer/vite.rb +0 -95
  35. data/templates/all_features_test/app/controllers/svelte_on_rails_hello_world_controller.rb +0 -62
  36. data/templates/all_features_test/app/frontend/javascript/components/JavascriptImport.svelte +0 -7
  37. data/templates/all_features_test/app/frontend/javascript/components/JpgImport.svelte +0 -7
  38. data/templates/all_features_test/app/frontend/javascript/components/PngImport.svelte +0 -7
  39. data/templates/all_features_test/app/frontend/javascript/components/SvgRawImport.svelte +0 -7
  40. data/templates/all_features_test/app/views/svelte_on_rails_hello_world/_nav.html.erb +0 -13
  41. data/templates/all_features_test/app/views/svelte_on_rails_hello_world/backend_frontend_rendered.html.erb +0 -37
  42. data/templates/all_features_test/app/views/svelte_on_rails_hello_world/index.html.erb +0 -9
  43. /data/templates/{all_features_test → showcase}/app/channels/svelte_on_rails_channel.rb +0 -0
  44. /data/templates/{all_features_test → showcase}/app/frontend/initializers/actionCable.js +0 -0
  45. /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
  46. /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
  47. /data/templates/{all_features_test/app/frontend/javascript → showcase/app/frontend/javascript/svelte_on_rails_showcase}/nestedJavascript.js +0 -0
  48. /data/templates/{all_features_test/app/frontend/javascript → showcase/app/frontend/javascript/svelte_on_rails_showcase}/nestedJavascriptToggled.js +0 -0
  49. /data/templates/{all_features_test/app/frontend/javascript/components → showcase/app/frontend/javascript/svelte_on_rails_showcase}/sub/NestedComponent.svelte +0 -0
  50. /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
  51. /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,7 +0,0 @@
1
- <script>
2
- export let title;
3
- import {nestedJavascriptFunction} from "../nestedJavascript.js";
4
- </script>
5
-
6
- <p>{title}</p>
7
- <p>{nestedJavascriptFunction()}</p>
@@ -1,7 +0,0 @@
1
- <script>
2
- export let title;
3
- import jpg from '../../images/svelte-on-rails-hello-world-switzerland.jpg'
4
- </script>
5
-
6
- <p>{title}</p>
7
- <img alt="Jpg not loaded!" src="{jpg}" />
@@ -1,7 +0,0 @@
1
- <script>
2
- export let title;
3
- import png from '../../images/svelte-on-rails-hello-world-england.png'
4
- </script>
5
-
6
- <p>{title}</p>
7
- <img alt="Png not loaded!" src="{png}" />
@@ -1,7 +0,0 @@
1
- <script>
2
- export let title;
3
- import svgRaw from '../../images/svelte-on-rails-hello-world-face-smile-wink.svg?raw'
4
- </script>
5
-
6
- <p>{title}</p>
7
- {@html svgRaw}
@@ -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>
@@ -1,9 +0,0 @@
1
- <%= render 'styles' %>
2
-
3
-
4
- <%= render 'nav' %>
5
-
6
-
7
- <h1>Svelte is here</h1>
8
-
9
- <%= svelte_component "SvelteOnRailsHelloWorld", { items: ['attributes', 'are', 'parsed'] } %>