% use Mojo::JSON qw/encode_json/;
% my $match = stash('match') || {};
% my %match_data = %$match;
% delete @match_data{qw/snippet startMore endMore field/};
% my $text_sigle = $match->{textSigle} // join('/', $match->{corpusID}, $match->{docID}, $match->{textID});
% my $id = $text_sigle . '#' . $match->{matchID};
<li data-match-id="<%= $match->{matchID} %>"
    data-text-sigle="<%= $text_sigle %>"

    %# TODO: This needs to be retrieved per match 
    data-available-info="<%= $match->{layerInfos} // $match->{layerInfo} // 'cnx/c=spans corenlp/ne=tokens corenlp/p=tokens mate/l=tokens mate/m=tokens mate/p=tokens opennlp/p=tokens tt/l=tokens tt/p=tokens xip/c=spans' %>"
    data-info="<%== b(encode_json(\%match_data))->decode->xml_escape %>"
    id="<%= $id %>"\
    <% if (current_route eq 'match') { %> class="active"<% } =%>>

%# This should be done using JavaScript
% my ($show_sigle, $flip) = ('', stash('flip') // 'flip');
% if ($text_sigle ne stash('last_sigle')) {
%   $show_sigle = $text_sigle;
%   stash(last_sigle => $text_sigle);
%   $flip = $flip eq 'flip' ? 'flop' : 'flip'; 
%   stash(flip => $flip);
% }
  
  <div class="meta <%= $flip %>"><%= $show_sigle %></div>
  <div class="match-main">
    <div class="match-wrap">
%# --- Snippet
      <div class="snippet<%= $match->{startMore} ? ' startMore' : '' %><%= $match->{endMore} ? ' endMore' : '' %>"><%== $match->{snippet} %></div>
    </div>
  </div>
%# -- Reference string
  <p class="ref">\
<% if ($match->{title}) { %><strong><%= $match->{title} %></strong><% }; %>\
<%= $match->{author} ? ' ' . loc('by') . ' ' . $match->{author}  : '' %>\
% if ($match->{pubDate}) {
 (<time datetime="<%= $match->{pubDate} %>"><%= $match->{pubDate} %></time>)\
% };
  <span class="sigle">[<%= $text_sigle %>]</span> \
</p>
</li>
