123456789101112131415161718192021222324252627282930313233343536 |
- package Trog::Component::EmojiPicker;
- use strict;
- use warnings;
- no warnings qw{experimental};
- use feature qw{signatures state};
- use Trog::Renderer;
- sub render () {
- state %categorized;
- if ( !%categorized ) {
- my $file = 'www/scripts/list.min.json';
- die "Run make prereq-frontend first" unless -f $file;
- my $raw = File::Slurper::read_binary($file);
- my $emojis = Cpanel::JSON::XS::decode_json($raw);
- foreach my $emoji ( @{ $emojis->{emojis} } ) {
- $categorized{ $emoji->{category} } //= [];
- push( @{ $categorized{ $emoji->{category} } }, $emoji->{emoji} );
- }
- }
- return Trog::Renderer->render(
- contenttype => 'text/html',
- component => 1,
- template => 'emojis.tx',
- data => {
- categories => \%categorized,
- },
- );
- }
- 1;
|