Coerce a raw extend_to_all zarr attr into a list of dimension names.
The on-disk contract is a list of dimension NAMES: the "all" sentinel
accepted by the Python authoring API is resolved to concrete names before
it is written. A store that still carries something else (an old file, a
producer bug) must not take down the node's view-state derivation, so
anything that is not an array of strings degrades to "not extended".
The "all" sentinel is deliberately NOT re-implemented here: the displayed
dimension set is mutable at runtime, so "every non-displayed dim" would not
mean at view time what it meant at author time.
SILENT by design: deriveNodeViewState calls this on every view-state
update cycle, so a warning here would repeat once per scrub. The caller
that runs ONCE per node per scene load (nodes/build-scene-graph.ts) does
the logging by comparing the raw attr against the normalized result.
Parameters
raw: unknown
The extend_to_all attr value, straight from the store.
Returns string[]
The dimension names to extend; [] when there is nothing usable.
Coerce a raw
extend_to_allzarr attr into a list of dimension names.The on-disk contract is a list of dimension NAMES: the
"all"sentinel accepted by the Python authoring API is resolved to concrete names before it is written. A store that still carries something else (an old file, a producer bug) must not take down the node's view-state derivation, so anything that is not an array of strings degrades to "not extended".The
"all"sentinel is deliberately NOT re-implemented here: the displayed dimension set is mutable at runtime, so "every non-displayed dim" would not mean at view time what it meant at author time.SILENT by design:
deriveNodeViewStatecalls this on every view-state update cycle, so a warning here would repeat once per scrub. The caller that runs ONCE per node per scene load (nodes/build-scene-graph.ts) does the logging by comparing the raw attr against the normalized result.