proscenium 0.11.0.pre.9-aarch64-linux → 0.11.0.pre.10-aarch64-linux
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/lib/proscenium/css_module/transformer.rb +19 -11
- data/lib/proscenium/css_module.rb +10 -1
- data/lib/proscenium/ext/proscenium +0 -0
- data/lib/proscenium/helper.rb +3 -1
- data/lib/proscenium/phlex/css_modules.rb +27 -1
- data/lib/proscenium/phlex.rb +0 -1
- data/lib/proscenium/version.rb +1 -1
- metadata +2 -3
- data/lib/proscenium/phlex/page.rb +0 -62
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: '038f66f0d9d784307de6f1eb2b6ddfd90271a59c07378928e6a5884089c4de43'
|
4
|
+
data.tar.gz: 2865311d5f4b94d10f6776973f2377fb5da27b8062f3cb9829c4a7439c902120
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: da34378a22b0e09fa417b67371ac644050dce9d714935598bec0dedfe7952c58c44eac8e1b06978682f4eb9ce35d36d23ecae096f39e8906db97a32946e3253b
|
7
|
+
data.tar.gz: a1985af5d4b74b7e2d6bea34435ff7409f1d006534bd75fe044360d30ac676fa0c3ff1b452f119de36c9b0973a8b957b741591f42a83315c9a18c4d3e2fa18ba
|
@@ -9,7 +9,8 @@ module Proscenium
|
|
9
9
|
end
|
10
10
|
|
11
11
|
def initialize(source_path)
|
12
|
-
@source_path = source_path
|
12
|
+
return unless (@source_path = source_path)
|
13
|
+
|
13
14
|
@source_path = Pathname.new(@source_path) unless @source_path.is_a?(Pathname)
|
14
15
|
@source_path = @source_path.sub_ext(FILE_EXT) unless @source_path.to_s.end_with?(FILE_EXT)
|
15
16
|
end
|
@@ -37,6 +38,7 @@ module Proscenium
|
|
37
38
|
# @return [Array<String>] the transformed CSS module names.
|
38
39
|
def class_names(*names, require_prefix: true)
|
39
40
|
names.map do |name|
|
41
|
+
original_name = name.dup
|
40
42
|
name = name.to_s if name.is_a?(Symbol)
|
41
43
|
|
42
44
|
if name.include?('/')
|
@@ -50,25 +52,31 @@ module Proscenium
|
|
50
52
|
path, name = name.split('@')
|
51
53
|
end
|
52
54
|
|
53
|
-
class_name! name, path: "#{path}#{FILE_EXT}"
|
55
|
+
class_name! name, original_name, path: "#{path}#{FILE_EXT}"
|
54
56
|
elsif name.start_with?('@')
|
55
|
-
class_name! name[1..]
|
57
|
+
class_name! name[1..], original_name
|
56
58
|
else
|
57
|
-
require_prefix ? name : class_name!(name)
|
59
|
+
require_prefix ? name : class_name!(name, original_name)
|
58
60
|
end
|
59
61
|
end
|
60
62
|
end
|
61
63
|
|
62
|
-
def class_name!(name, path: @source_path)
|
64
|
+
def class_name!(name, original_name, path: @source_path)
|
65
|
+
unless path
|
66
|
+
raise Proscenium::CssModule::TransformError.new(original_name, 'CSS module path not given')
|
67
|
+
end
|
68
|
+
|
63
69
|
resolved_path = Resolver.resolve(path.to_s)
|
64
70
|
digest = Importer.import(resolved_path)
|
65
71
|
|
66
|
-
|
67
|
-
if
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
+
transformed_name = name.to_s
|
73
|
+
transformed_name = if transformed_name.start_with?('_')
|
74
|
+
"_#{transformed_name[1..]}-#{digest}"
|
75
|
+
else
|
76
|
+
"#{transformed_name}-#{digest}"
|
77
|
+
end
|
78
|
+
|
79
|
+
[transformed_name, resolved_path]
|
72
80
|
end
|
73
81
|
end
|
74
82
|
end
|
@@ -6,11 +6,20 @@ module Proscenium::CssModule
|
|
6
6
|
autoload :Path
|
7
7
|
autoload :Transformer
|
8
8
|
|
9
|
+
class TransformError < StandardError
|
10
|
+
def initialize(name, additional_msg = nil)
|
11
|
+
msg = "Failed to transform CSS module `#{name}`"
|
12
|
+
msg << ' - ' << additional_msg if additional_msg
|
13
|
+
|
14
|
+
super msg
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
9
18
|
# Accepts one or more CSS class names, and transforms them into CSS module names.
|
10
19
|
#
|
11
20
|
# @param name [String,Symbol,Array<String,Symbol>]
|
12
21
|
def css_module(*names)
|
13
|
-
cssm.class_names(*names, require_prefix: false).join
|
22
|
+
cssm.class_names(*names, require_prefix: false).map { |name, _| name }.join(' ')
|
14
23
|
end
|
15
24
|
|
16
25
|
private
|
Binary file
|
data/lib/proscenium/helper.rb
CHANGED
@@ -22,7 +22,9 @@ module Proscenium
|
|
22
22
|
# @param name [String,Symbol,Array<String,Symbol>]
|
23
23
|
def css_module(*names)
|
24
24
|
path = Pathname.new(@lookup_context.find(@virtual_path).identifier).sub_ext('')
|
25
|
-
CssModule::Transformer.new(path).class_names(*names, require_prefix: false).
|
25
|
+
CssModule::Transformer.new(path).class_names(*names, require_prefix: false).map do |name, _|
|
26
|
+
name
|
27
|
+
end.join(' ')
|
26
28
|
end
|
27
29
|
|
28
30
|
def include_stylesheets(**options)
|
@@ -6,6 +6,28 @@ module Proscenium
|
|
6
6
|
|
7
7
|
def self.included(base)
|
8
8
|
base.extend CssModule::Path
|
9
|
+
base.extend ClassMethods
|
10
|
+
end
|
11
|
+
|
12
|
+
module ClassMethods
|
13
|
+
# Set of CSS module paths that have been resolved after being transformed from 'class' HTML
|
14
|
+
# attributes. See #process_attributes. This is here because Phlex caches attributes. Which
|
15
|
+
# means while the CSS class names will be transformed, any resolved paths will be lost in
|
16
|
+
# subsequent requests.
|
17
|
+
attr_accessor :resolved_css_module_paths
|
18
|
+
end
|
19
|
+
|
20
|
+
def before_template
|
21
|
+
self.class.resolved_css_module_paths ||= Concurrent::Set.new
|
22
|
+
super
|
23
|
+
end
|
24
|
+
|
25
|
+
def after_template
|
26
|
+
self.class.resolved_css_module_paths.each do |path|
|
27
|
+
Proscenium::Importer.import path
|
28
|
+
end
|
29
|
+
|
30
|
+
super
|
9
31
|
end
|
10
32
|
|
11
33
|
# Resolve and side load any CSS modules in the "class" attributes, where a CSS module is a class
|
@@ -44,7 +66,11 @@ module Proscenium
|
|
44
66
|
def process_attributes(**attributes)
|
45
67
|
if attributes.key?(:class) && (attributes[:class] = tokens(attributes[:class])).include?('@')
|
46
68
|
names = attributes[:class].is_a?(Array) ? attributes[:class] : attributes[:class].split
|
47
|
-
|
69
|
+
|
70
|
+
attributes[:class] = cssm.class_names(*names).map do |name, path|
|
71
|
+
self.class.resolved_css_module_paths << path if path
|
72
|
+
name
|
73
|
+
end
|
48
74
|
end
|
49
75
|
|
50
76
|
attributes
|
data/lib/proscenium/phlex.rb
CHANGED
data/lib/proscenium/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: proscenium
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.11.0.pre.
|
4
|
+
version: 0.11.0.pre.10
|
5
5
|
platform: aarch64-linux
|
6
6
|
authors:
|
7
7
|
- Joel Moss
|
@@ -112,7 +112,6 @@ files:
|
|
112
112
|
- lib/proscenium/monkey.rb
|
113
113
|
- lib/proscenium/phlex.rb
|
114
114
|
- lib/proscenium/phlex/css_modules.rb
|
115
|
-
- lib/proscenium/phlex/page.rb
|
116
115
|
- lib/proscenium/phlex/react_component.rb
|
117
116
|
- lib/proscenium/railtie.rb
|
118
117
|
- lib/proscenium/react_componentable.rb
|
@@ -149,7 +148,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
149
148
|
- !ruby/object:Gem::Version
|
150
149
|
version: 1.3.1
|
151
150
|
requirements: []
|
152
|
-
rubygems_version: 3.4.
|
151
|
+
rubygems_version: 3.4.20
|
153
152
|
signing_key:
|
154
153
|
specification_version: 4
|
155
154
|
summary: The engine powering your Rails frontend
|
@@ -1,62 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'phlex/rails'
|
4
|
-
|
5
|
-
# Include this in your view for additional logic for rendering a full HTML page, usually from a
|
6
|
-
# controller.
|
7
|
-
module Proscenium::Phlex::Page
|
8
|
-
include Phlex::Rails::Helpers::CSPMetaTag
|
9
|
-
include Phlex::Rails::Helpers::CSRFMetaTags
|
10
|
-
include Phlex::Rails::Helpers::FaviconLinkTag
|
11
|
-
include Phlex::Rails::Helpers::PreloadLinkTag
|
12
|
-
include Phlex::Rails::Helpers::StyleSheetLinkTag
|
13
|
-
include Phlex::Rails::Helpers::ActionCableMetaTag
|
14
|
-
include Phlex::Rails::Helpers::AutoDiscoveryLinkTag
|
15
|
-
include Phlex::Rails::Helpers::JavaScriptIncludeTag
|
16
|
-
include Phlex::Rails::Helpers::JavaScriptImportMapTags
|
17
|
-
include Phlex::Rails::Helpers::JavaScriptImportModuleTag
|
18
|
-
|
19
|
-
def self.included(klass)
|
20
|
-
klass.extend(Phlex::Rails::Layout::Interface)
|
21
|
-
end
|
22
|
-
|
23
|
-
def template(&block)
|
24
|
-
doctype
|
25
|
-
html do
|
26
|
-
head
|
27
|
-
body(&block)
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
|
-
private
|
32
|
-
|
33
|
-
def after_template
|
34
|
-
super
|
35
|
-
@_buffer.gsub!('<!-- [SIDE_LOAD_STYLESHEETS] -->', capture { include_stylesheets })
|
36
|
-
end
|
37
|
-
|
38
|
-
def page_title
|
39
|
-
Rails.application.class.name.deconstantize
|
40
|
-
end
|
41
|
-
|
42
|
-
def head
|
43
|
-
super do
|
44
|
-
title { page_title }
|
45
|
-
|
46
|
-
yield if block_given?
|
47
|
-
|
48
|
-
csp_meta_tag
|
49
|
-
csrf_meta_tags
|
50
|
-
|
51
|
-
comment { '[SIDE_LOAD_STYLESHEETS]' }
|
52
|
-
end
|
53
|
-
end
|
54
|
-
|
55
|
-
def body
|
56
|
-
super do
|
57
|
-
yield if block_given?
|
58
|
-
|
59
|
-
include_javascripts type: :module, defer: true
|
60
|
-
end
|
61
|
-
end
|
62
|
-
end
|