EmojiPicker.pm 873 B

123456789101112131415161718192021222324252627282930313233343536
  1. package Trog::Component::EmojiPicker;
  2. use strict;
  3. use warnings;
  4. no warnings qw{experimental};
  5. use feature qw{signatures state};
  6. use Trog::Renderer;
  7. sub render () {
  8. state %categorized;
  9. if ( !%categorized ) {
  10. my $file = 'www/scripts/list.min.json';
  11. die "Run make prereq-frontend first" unless -f $file;
  12. my $raw = File::Slurper::read_binary($file);
  13. my $emojis = Cpanel::JSON::XS::decode_json($raw);
  14. foreach my $emoji ( @{ $emojis->{emojis} } ) {
  15. $categorized{ $emoji->{category} } //= [];
  16. push( @{ $categorized{ $emoji->{category} } }, $emoji->{emoji} );
  17. }
  18. }
  19. return Trog::Renderer->render(
  20. contenttype => 'text/html',
  21. component => 1,
  22. template => 'emojis.tx',
  23. data => {
  24. categories => \%categorized,
  25. },
  26. );
  27. }
  28. 1;