{{/* present_notes — GET /p/{session}/notes, the presenter view. The screen somebody actually presents from: what the room is looking at, what is coming next, the notes for the slide that is up, a clock, and the four controls. Meant for a second window on a laptop or for the presenter's own phone. The pairing block appears exactly once — on the one request that carries the remote capability, and only for the person presenting (presentation.go says why). Coming back to this URL later shows the talk and no secret, because there is no secret left to show: only the hash was stored. */}} {{define "page-head"}} {{end}} {{define "content"}} {{template "page-header" dict "Title" .Title "Sub" .DeckTitle}}

{{.Clock}}

{{.Started}}

{{.Elapsed}}

{{.Counter}}

{{if .Blackout}} {{/* State in words, never in colour alone: the presenter's own screen is the one place that has to say the room is looking at nothing. */}} {{template "status-pill" dict "Tone" "neutral" "Label" .BlackoutLabel}} {{end}} {{if .Controls}}
{{template "present-controls" .Controls}}
{{end}} {{/* The script's root: the session it is watching, and — only when this request carried it — the capability its keyboard sends with. A presenter view opened without the token watches and cannot drive, which is exactly what the buttons above do too. */}}

{{.CurrentLabel}}

{{.Current}}

{{.NextLabel}}

{{if .HasNext}}{{.Next}}{{end}}

{{.NotesLabel}}

{{if .Notes}}{{.Notes}}{{else}}

{{.NoNotes}}

{{end}}
{{if .Pair}}
{{template "callout" dict "Tone" "info" "Title" .PairTitle "Body" .PairBody}}
{{.QR}}

{{.Code}}

{{/* Hand-written for one attribute, share.html's reason: readonly is not in field-text's contract, and the field is here to be selected and copied. */}}
{{.CodeLabel}} {{.Code}}
{{end}} {{end}}