Module: ReactEmailRails
- Defined in:
- lib/react_email_rails.rb,
lib/react_email_rails.rb,
lib/react_email_rails/version.rb,
lib/react_email_rails/rendered_email.rb,
lib/react_email_rails/render_protocol.rb,
lib/generators/react_email_rails/email_generator.rb,
lib/generators/react_email_rails/install_generator.rb,
lib/generators/react_email_rails/vite_config_files.rb
Defined Under Namespace
Modules: ActionMailer, Generators, RenderModes, RenderProtocol, Tasks
Classes: Configuration, PropsResolver, Railtie, RenderError, RenderedEmail
Constant Summary
collapse
- VERSION =
"0.4.0"
- RENDER_PROTOCOL_VERSION =
3
Class Method Summary
collapse
Class Method Details
.compose(type:, document:, context: {}, preview: nil) ⇒ Object
The document is sent verbatim (keys are structural); only context is key-transformed, like props.
47
48
49
50
51
52
53
54
55
56
57
|
# File 'lib/react_email_rails.rb', line 47
def compose(type:, document:, context: {}, preview: nil)
payload = {
kind: "document",
type:,
document: document.as_json,
context: serialized_props(context),
preview:,
}
perform(payload:, label: type, kind: "document", type:)
end
|
.configuration ⇒ Object
31
32
33
|
# File 'lib/react_email_rails.rb', line 31
def configuration
@configuration ||= Configuration.default
end
|
35
36
37
|
# File 'lib/react_email_rails.rb', line 35
def configure
yield(configuration)
end
|
.healthy? ⇒ Boolean
71
72
73
74
75
76
77
78
|
# File 'lib/react_email_rails.rb', line 71
def healthy?
configuration.resolved_render_mode.healthy?(
command: configuration.send(:resolved_render_command),
timeout: configuration.render_timeout,
)
rescue StandardError
false
end
|
.parse(type:, html: nil, markdown: nil, context: {}) ⇒ Object
Parse semantic HTML or Markdown into an editor document Hash using the renderer’s extensions. Pass exactly one of ‘html:` or `markdown:`.
61
62
63
64
65
66
67
68
69
|
# File 'lib/react_email_rails.rb', line 61
def parse(type:, html: nil, markdown: nil, context: {})
payload = {
kind: "parse",
type:,
context: serialized_props(context),
}.merge(parse_source(html:, markdown:))
perform(payload:, label: type, response: :document, kind: "parse", type:)
end
|
.render(component:, props:, render_options: configuration.resolve_render_options) ⇒ Object
39
40
41
42
43
44
|
# File 'lib/react_email_rails.rb', line 39
def render(component:, props:, render_options: configuration.resolve_render_options)
payload = { component:, props: serialized_props(props) }
payload[:renderOptions] = render_options if render_options.present?
perform(payload:, label: component, kind: "email", component:)
end
|