feat(ui): render the rail timeline as a component behind its builder

The observed-history transport is RailTimeline in src/ui/rail/, rendered
by createRailTimeline() with the same update and destroy API. Drag preview,
the coalesced 150 ms commit, release, cancel and blur behave as before; the
slider keeps the ticks it is dragged over, an update from inside a preview
cannot move the handle back, and readouts follow the handle within the same
task. utcClock moves to its own module and is still exported here.
This commit is contained in:
Sameh Khamis committed 2026-10-30 18:41:31 -07:00
1 parent dcecf5c34c
commit ce6040bde1
7 files changed
+264 -206

No files matched your search

+1 -1
View File
@@ -1441,7 +1441,7 @@ Ordinary sliders share the native range component in `ui/slider.js` and the
`gev-quantitative-slider` surface in `ui/styles/slider.css`. Display, shader
parameters, volume, replay speed, weather settings/history, imagery opacity and
Street View's date filter use the same rail, thumb, value styling, keyboard focus and disabled state.
Generated controls use `createSlider`; static templates apply the same class.
Generated controls use `createSlider`; static templates and components apply the same class.
Feature owners retain bounds, steps, formatted values, input/change timing and
listener cleanup. The radio tuning dial, imagery comparison divider and event
comparison/progression controls keep their specialized presentation and behavior.
+3 -3
View File
@@ -78,9 +78,9 @@ They contain no application state.
`v-for`, because re-rendering it would bring back the English; component
text uses `t()` instead. Shared builders become components first and
keep their imperative entry points until their owners are components:
the rail cards and card blocks (`src/ui/rail/`) render through Vue's
synchronous `render()` behind `createRailCards()` and
`createRailCardBlocks()`. Order: Scenes (done: `SceneOptions` and
the rail cards, card blocks and timeline (`src/ui/rail/`) render through
Vue's synchronous `render()` behind `createRailCards()`,
`createRailCardBlocks()` and `createRailTimeline()`. Order: Scenes (done: `SceneOptions` and
`SceneShotList` over the `gev-scenes` store), Weather, Recent imagery,
Street level, CCTV, Layers, Display, Context and Radio, the command dock,
the phone shell, then Cockpit. Layers that write into the right rail