{# The Transcripts LAYER, not a tool panel. It sits in `#layer_section_slot` with Image Channels above it and the Layers list below, it is on from the moment the page loads, and there is no state of the app in which "close the transcripts and leave the sample open" is a thing somebody wants -- which is exactly the difference between a layer and a tool, and is why this template has no close button. NOR A HEADING OF ITS OWN. This used to be a `
` with a title, a chevron and a visibility checkbox, which made the transcript layer the one layer in Plexora switched somewhere other than the Layers list -- and, once it claimed its layer, gave it a card there as well: two places for one thing. What is left is the BODY of that card. Core owns the grip, the chevron, the title, the eye and the X; this owns everything a card cannot know -- which genes, in what colour, drawn how. See `ctx.layers.claim` and views/layerManager.js, which moves this div into the card. NOR ANYTHING IN THE HEADER. This used to stage a `data-layer-extras` kebab as well, which core lifted into the card's header beside the eye. Three actions about the GENE LIST, two controls away from the gene list, behind a glyph that says only "more" -- and on the one row of the panel that is shared with every other card in the sidebar. They are on the list's own button now; see `bindStaticControls` in transcriptsSidebarController.js. READ TOP TO BOTTOM IT IS ONE SENTENCE: how many molecules there are, which of the two pictures to draw them as, how that picture looks, what is filtered out of it, and which genes are in it. The mode comes second because it decides what the rest of the panel even means, and only the chosen mode's controls are in the document flow -- a bin size next to individual molecules is a control for a picture that is not on screen. THE GENES COME LAST, and that is a change from the Xenium Explorer arrangement this started from. The list is the one part of this panel whose length is the user's to decide, so everything of a knowable height goes above it: short and fixed above, long and variable below. It is also capped at fifteen rows and scrolls inside itself (`.transcripts-tree` in transcripts.css), which is what stops a forty-gene selection from pushing the Layers list below this card off the bottom of the sidebar. Deliberately NOT an analysis panel. No counts per region, no differential expression, no co-expression, no clustering. Those interpret the data; this picks what is drawn and how. #}
{# Shown when the project has no transcript layer at all. A gene selector with nothing behind it would read as broken rather than as not applicable. #} {# While the tile cache is being built. A 10-100 million row parquet is minutes of work, so this is a real state and not a flash. #}