activemail 1.2.3 → 2.1.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/CHANGELOG.md +107 -2
- data/README.md +141 -56
- data/UPGRADING.md +185 -0
- data/app/assets/stylesheets/activemail/_components.scss +33 -42
- data/app/assets/stylesheets/activemail/_dark.scss +44 -24
- data/app/assets/stylesheets/activemail/_grid.scss +40 -14
- data/app/assets/stylesheets/activemail/_settings.scss +23 -10
- data/app/assets/stylesheets/activemail/_utilities.scss +3 -1
- data/app/assets/stylesheets/activemail/activemail.scss +6 -5
- data/app/helpers/active_mail/styles_helper.rb +14 -15
- data/app/views/layouts/activemail/_document_head.html.erb +18 -0
- data/app/views/layouts/activemail/mailer.html.inky-erb +1 -22
- data/lib/activemail/asset_pipeline/base.rb +47 -0
- data/lib/activemail/asset_pipeline/null.rb +19 -0
- data/lib/activemail/asset_pipeline/propshaft.rb +19 -0
- data/lib/activemail/asset_pipeline/sprockets.rb +39 -0
- data/lib/activemail/asset_pipeline.rb +35 -0
- data/lib/activemail/components/base.rb +35 -39
- data/lib/activemail/components/block_grid.rb +11 -4
- data/lib/activemail/components/button.rb +5 -28
- data/lib/activemail/components/button_renderer.rb +69 -0
- data/lib/activemail/components/callout.rb +4 -5
- data/lib/activemail/components/center.rb +10 -10
- data/lib/activemail/components/columns.rb +58 -15
- data/lib/activemail/components/container.rb +13 -6
- data/lib/activemail/components/cta.rb +9 -33
- data/lib/activemail/components/h_line.rb +3 -5
- data/lib/activemail/components/info_box.rb +6 -12
- data/lib/activemail/components/menu.rb +3 -4
- data/lib/activemail/components/menu_item.rb +10 -3
- data/lib/activemail/components/row.rb +3 -4
- data/lib/activemail/components/spacer.rb +16 -12
- data/lib/activemail/components/table_component.rb +23 -0
- data/lib/activemail/components/wrapper.rb +10 -4
- data/lib/activemail/configuration.rb +43 -57
- data/lib/activemail/errors.rb +15 -0
- data/lib/activemail/inliner/base.rb +2 -10
- data/lib/activemail/inliner/null.rb +0 -5
- data/lib/activemail/inliner/premailer/document.rb +100 -0
- data/lib/activemail/inliner/premailer.rb +3 -2
- data/lib/activemail/inliner/roadie.rb +1 -1
- data/lib/activemail/inliner.rb +33 -0
- data/lib/activemail/parse_error_reporter.rb +5 -4
- data/lib/activemail/pipeline.rb +26 -0
- data/lib/activemail/quality/builtin_message_rules.rb +58 -0
- data/lib/activemail/quality/builtin_rules.rb +165 -0
- data/lib/activemail/quality/configuration.rb +103 -8
- data/lib/activemail/quality/guard.rb +61 -83
- data/lib/activemail/quality/minitest.rb +56 -27
- data/lib/activemail/quality/output_dir.rb +52 -0
- data/lib/activemail/quality/output_filter.rb +24 -0
- data/lib/activemail/quality/preview_renderer.rb +46 -33
- data/lib/activemail/quality/render_all.rb +95 -39
- data/lib/activemail/quality/rspec.rb +14 -13
- data/lib/activemail/quality/rule.rb +47 -0
- data/lib/activemail/quality/rule_exemptions.rb +49 -0
- data/lib/activemail/rails/engine.rb +13 -13
- data/lib/activemail/rails/rendering.rb +51 -0
- data/lib/activemail/rails/template_handler.rb +3 -1
- data/lib/activemail/tokens/button_style.rb +1 -2
- data/lib/activemail/tokens/defaults.rb +78 -0
- data/lib/activemail/tokens/scss_serializer.rb +4 -4
- data/lib/activemail/tokens.rb +19 -58
- data/lib/activemail/version.rb +1 -1
- data/lib/activemail.rb +89 -61
- data/lib/generators/activemail/templates/component.rb.tt +2 -3
- data/lib/generators/activemail/templates/initializer.rb +0 -3
- data/lib/generators/activemail/templates/mailer_layout.html.inky-erb +3 -19
- data/lib/generators/activemail/templates/mailer_layout.html.inky-haml +3 -11
- data/lib/generators/activemail/templates/mailer_layout.html.inky-slim +3 -10
- data/lib/tasks/activemail.rake +4 -5
- metadata +22 -4
- data/lib/activemail/components/inky.rb +0 -18
- data/lib/activemail/inliner/interceptor.rb +0 -51
- data/lib/activemail/rails/compiled_stylesheet.rb +0 -62
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
# typed: strict
|
|
2
|
-
# frozen_string_literal: true
|
|
3
|
-
|
|
4
|
-
require 'sorbet-runtime'
|
|
5
|
-
|
|
6
|
-
module ActiveMail
|
|
7
|
-
# Reads a compiled CSS asset's bytes (Sprockets or Propshaft, by duck-type) — the
|
|
8
|
-
# bytes, not a digest URL, are what the Premailer adapter needs to inline.
|
|
9
|
-
module CompiledStylesheet
|
|
10
|
-
class << self
|
|
11
|
-
extend T::Sig
|
|
12
|
-
|
|
13
|
-
# '' (not nil) on a miss: callers embed the result verbatim, and a missing
|
|
14
|
-
# asset must degrade to an empty <style>, never interpolate "nil" into HTML.
|
|
15
|
-
sig { params(logical_path: String).returns(String) }
|
|
16
|
-
def read(logical_path)
|
|
17
|
-
sprockets_source(logical_path) || propshaft_source(logical_path) || ''
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
private
|
|
21
|
-
|
|
22
|
-
# Sprockets: config.assets.compile (dev) resolves logical paths in-memory;
|
|
23
|
-
# precompiled (prod) resolves through the manifest. #find_asset covers both.
|
|
24
|
-
sig { params(logical_path: String).returns(T.nilable(String)) }
|
|
25
|
-
def sprockets_source(logical_path)
|
|
26
|
-
assets = rails_assets_environment
|
|
27
|
-
return unless assets.respond_to?(:find_asset)
|
|
28
|
-
|
|
29
|
-
asset = assets.find_asset(logical_path)
|
|
30
|
-
asset&.source&.to_s
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
# Propshaft: the load_path resolves a logical path to a compiled file on disk.
|
|
34
|
-
sig { params(logical_path: String).returns(T.nilable(String)) }
|
|
35
|
-
def propshaft_source(logical_path)
|
|
36
|
-
assets = rails_assets
|
|
37
|
-
load_path = assets.respond_to?(:load_path) ? assets.load_path : nil
|
|
38
|
-
return unless load_path.respond_to?(:find)
|
|
39
|
-
|
|
40
|
-
asset = load_path.find(logical_path)
|
|
41
|
-
asset&.path && File.exist?(asset.path) ? File.read(asset.path) : nil
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
# config.assets.environment is the Sprockets::Environment; absent under Propshaft.
|
|
45
|
-
sig { returns(T.untyped) }
|
|
46
|
-
def rails_assets_environment
|
|
47
|
-
assets = rails_assets
|
|
48
|
-
assets.respond_to?(:environment) ? assets.environment : nil
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
sig { returns(T.untyped) }
|
|
52
|
-
def rails_assets
|
|
53
|
-
return unless Object.const_defined?(:Rails)
|
|
54
|
-
|
|
55
|
-
rails = Object.const_get(:Rails)
|
|
56
|
-
app = rails.respond_to?(:application) ? rails.application : nil
|
|
57
|
-
config = app&.config
|
|
58
|
-
config.respond_to?(:assets) ? config.assets : nil
|
|
59
|
-
end
|
|
60
|
-
end
|
|
61
|
-
end
|
|
62
|
-
end
|