@@ -5,9 +5,9 @@ def import_list
5
5
@import_list ||= [ ]
6
6
end
7
7
8
- def import ( value , gem : nil , cancelled : nil , client_only : nil , server_only : nil , tree : nil )
8
+ def import ( value , gem : nil , cancelled : nil , client_only : nil , server_only : nil , tree : nil , js_import : nil )
9
9
unless import_list . detect { |current_value , *_rest | value == current_value }
10
- import_list << [ value , cancelled , !client_only , !server_only , ( tree ? :tree : :gem ) ]
10
+ import_list << [ value , cancelled , !client_only , !server_only , ( tree ? :tree : :gem ) , js_import ]
11
11
end
12
12
end
13
13
@@ -18,15 +18,32 @@ def import_tree(value, cancelled: nil, client_only: nil, server_only: nil)
18
18
end
19
19
20
20
def cancel_import ( value )
21
+ return unless value
21
22
current_spec = import_list . detect { |old_value , *_rest | value == old_value }
22
23
if current_spec
23
- current_spec [ 1 ] = true
24
+ current_spec [ 1 ] = true
24
25
else
25
26
import_list << [ value , true , true , true , false ]
26
27
end
27
28
end
28
29
30
+ def cancel_webpack_imports
31
+ import_list . collect { |name , _c , _co , _so , _t , js_import , *_rest | js_import && name }
32
+ . each { |name | cancel_import name }
33
+ end
34
+
35
+ def handle_webpack
36
+ return unless defined? Webpacker
37
+ client_only_manifest = Webpacker . manifest . lookup ( "client_only.js" )
38
+ client_and_server_manifest = Webpacker . manifest . lookup ( "client_and_server.js" )
39
+ return unless client_only_manifest || client_and_server_manifest
40
+ cancel_webpack_imports
41
+ import client_only_manifest . split ( "/" ) . last , client_only : true if client_only_manifest
42
+ import client_and_server_manifest . split ( "/" ) . last if client_and_server_manifest
43
+ end
44
+
29
45
def generate_requires ( mode , sys , file )
46
+ handle_webpack
30
47
import_list . collect do |value , cancelled , render_on_server , render_on_client , kind |
31
48
next if cancelled
32
49
next if ( sys && kind == :tree ) || ( !sys && kind != :tree )
0 commit comments