{{/*

  Renders a single event, given:

    * `event_name`: the name we want to display for the event
    * `event_data`: the event specification
    * `desired_example_name` (optional): the exact name of the examples to render.
    If `desired_example_name` is omitted we render all examples
    whose names start with the `event_name`.

*/}}

{{ $event_name := .event_name }}
{{ $desired_example_name := .desired_example_name }}
{{ $event_data := .event_data }}

<section class="rendered-data event">

<details {{ if not .Site.Params.ui.rendered_data_collapsed }}open{{ end }}>
<summary>

  <h1 id="{{ anchorize $event_name }}">
   <code>{{ $event_name }}</code>
  </h1>

  <hr/>

{{ if (index $event_data "x-addedInMatrixVersion") }}
  {{ partial "added-in" (dict "v" (index $event_data "x-addedInMatrixVersion")) }}
{{ end }}
{{ if (index $event_data "x-changedInMatrixVersion") }}
  {{ partial "changed-in" (dict "changes_dict" (index $event_data "x-changedInMatrixVersion")) }}
{{ end -}}

{{ $event_data.description | markdownify }}

</summary>

{{ $state_key := index $event_data.properties "state_key" }}

<table class="basic-info">
  <tr>
   <th>Event type:</th>
   <td>{{ if $state_key }}State event{{ else }}Message event{{ end }}</td>
  </tr>
{{ if $state_key }}
  <tr>
   <th>State key</th>
   <td>{{ $state_key.description | markdownify }}</td>
 </tr>
{{ end }}
</table>

<h2>Content</h2>

{{ $additional_types := partial "json-schema/resolve-additional-types" $event_data.properties.content }}

{{ range $additional_types }}
    {{ partial "openapi/render-object-table" (dict "caption" .title "properties" .properties "required" .required) }}
{{end}}

<h2>Examples</h2>

{{ $all_examples := index site.Data "event-schemas" "examples" }}

{{ range $example_name, $example := $all_examples }}

    {{/*
      This is to allow the msgtype template to work.
      It lets callers specify exactly the name of the example they want
    */}}
    {{ if $desired_example_name }}
        {{ if eq $example_name $desired_example_name }}
            {{ $example_content := partial "json-schema/resolve-refs" (dict "schema" $example "path" "event-schemas/examples") }}
```json
{{ jsonify (dict "indent" "  ") $example_content }}
```
        {{ end }}
    {{/*
      If `$desired_example_name` is not given, we will include any
      examples whose first part (before "$") matches the event name
    */}}
    {{ else }}

        {{ $pieces := split $example_name "$" }}
        {{ $example_base_name := index $pieces 0 }}
        {{ if eq $event_name $example_base_name }}
            {{ $example_content := partial "json-schema/resolve-refs" (dict "schema" $example "path" "event-schemas/examples") }}
            {{ $example_json := jsonify (dict "indent" "  ") $example_content }}
            {{ $example_json = replace $example_json "\\u003c" "<" }}
            {{ $example_json = replace $example_json "\\u003e" ">" | safeHTML }}

```json
{{ $example_json }}
```
        {{ end }}
    {{ end }}
{{ end }}

</section>
