Packages
surface
0.7.4
0.12.3
0.12.2
0.12.1
0.12.0
0.11.5
0.11.4
0.11.3
0.11.2
0.11.1
0.11.0
0.10.0
0.9.5
0.9.4
0.9.3
0.9.2
0.9.1
0.9.0
0.8.4
0.8.3
0.8.2
0.8.1
0.8.0
0.7.6
0.7.5
0.7.4
0.7.3
0.7.2
0.7.1
0.7.0
0.6.1
0.6.0
0.5.2
0.5.1
0.5.0
0.4.1
0.4.0
0.3.2
0.3.1
0.3.0
0.2.1
0.2.0
0.1.1
0.1.0
0.1.0-alpha.2
0.1.0-alpha.1
0.1.0-alpha.0
A component based library for Phoenix LiveView
Current section
Files
Jump to
Current section
Files
lib/surface/directive/component_props.ex
defmodule Surface.Directive.ComponentProps do
use Surface.Directive
def extract({":props", {:attribute_expr, value, expr_meta}, attr_meta}, meta) do
expr_meta = Helpers.to_meta(expr_meta, meta)
attr_meta = Helpers.to_meta(attr_meta, meta)
%AST.Directive{
module: __MODULE__,
name: :props,
value: directive_value(value, expr_meta),
meta: attr_meta
}
end
def extract(_, _), do: []
def process(
%AST.Directive{value: %AST.AttributeExpr{} = expr, meta: meta},
%mod{} = node
)
when mod in [AST.Component, AST.FunctionComponent, AST.SlotableComponent] do
%{
node
| dynamic_props: %AST.DynamicAttribute{
name: :props,
meta: meta,
expr: expr
}
}
end
defp directive_value(value, meta) do
AST.AttributeExpr.new(
Surface.TypeHandler.expr_to_quoted!(value, ":props", :map, meta),
value,
meta
)
end
end