r::Util 'blessed';
use Data::Printer;
use Module::Load;
use Module::Loader;
use Reactive::Core::JSONRenderer;
use Module::Installed::Tiny qw(module_source);
use Digest::SHA qw(sha256_hex);
=head2
;
has component_map => (is => 'lazy', isa => HashRef[Str]);
has json_renderer => (is => 'lazy', isa => InstanceOf['Reactive::Core::JSONRenderer']);
=head1 NAME
Reactive::Core - The great new Reacti
s, self => $component);
my $snapshot = $component->r_snapshot_data();
$snapshot = $self->json_renderer->process_data($snapshot);
$snapshot->{checksum} = $self->_generate_checksum($snapsh
package Reactive::Core::JSONRenderer;
use warnings;
use strict;
use Moo;
use Types::Standard qw( is_Bool is_Str is_Num is_HashRef is_ArrayRef InstanceOf );
use Reactive::Core::Types qw( is_Boolean
use JSON::MaybeXS;
has json => (is => 'lazy', isa => InstanceOf[qw/Cpanel::JSON::XS JSON::XS JSON::PP/]);
has canonical_json => (is => 'lazy', isa => InstanceOf[qw/Cpanel::JSON::XS JSON::XS JSON::PP
rns json encoded $data after first handling some common types
=cut
sub render {
my $self = shift;
my $data = shift;
my $processed = $self->process_data($data);
return $self->json->en
::Core::JSONRenderer;
use constant {
RENDER_TEMPLATE_FILE => 'File',
RENDER_TEMPLATE_INLINE => 'Inline',
};
has json_renderer => (is => 'lazy', isa => InstanceOf['Reactive::Core::JSONRendere
will be a HashRef containing various data about the state of the component
this method will json encode the value and embed the result into the root node of the
html as $attribute
it wi
elf->escape($self->json_renderer->render($value));
$html =~ s/^\s*(<[a-z\-]+(?:\s[^\/>]+)*)(\s*)(\/?>)/$1 $attribute="$escaped_value" $3/m;
return $html;
}
sub _build_json_renderer {
re