Deliver the application's pointer input through the renderer's input port

The Cesium renderer now creates the input port and exposes it as
renderer.input. The input dispatcher becomes an adapter over the port:
one port listener per event type, fanned out to its subscribers with the
ownership check read once per event, keeping the legacy event shapes.

- Ctrl+wheel zoom is switched on through renderer.input.ctrlWheelZoom.
- A dispatcher made for a viewer with no port creates its own port with
  takeStock: false, which borrows the stock select and double-click
  follow only while they are suppressed.
- The stock actions see the press as it began: a click whose press
  started while select or follow was held off never runs them.
- A scene accepts one input port; cesiumInputOf(scene) returns it.
- Releasing one mouse button while another is held no longer gives the
  held button a click. Cesium still ends that press.
This commit is contained in:
Sameh Khamis committed 2026-11-05 19:22:43 -08:00
1 parent 1f2479d3ab
commit 24bc8fce7e
16 files changed
+427 -275

No files matched your search

+87 -13
View File
@@ -14,6 +14,9 @@
"src/data/scenePick.js",
"src/input/dispatcher.js",
"src/render/cesium/cameraInput.js",
"src/render/cesium/input.js",
"src/render/cesium/ctrlWheelZoom.js",
"src/render/input/router.js",
"src/input/sensorPick.js",
"src/data/infrastructureOverlayEntry.js",
"src/sources/infrastructureData.js",
@@ -884,7 +887,10 @@
"src/data/pickRegistry.js",
"src/input/sensorPick.js",
"src/input/dispatcher.js",
"src/render/cesium/cameraInput.js"
"src/render/cesium/cameraInput.js",
"src/render/cesium/input.js",
"src/render/cesium/ctrlWheelZoom.js",
"src/render/input/router.js"
],
"external": ["cesium"]
},
@@ -1143,7 +1149,10 @@
"src/data/pickRegistry.js",
"src/input/sensorPick.js",
"src/input/dispatcher.js",
"src/render/cesium/cameraInput.js"
"src/render/cesium/cameraInput.js",
"src/render/cesium/input.js",
"src/render/cesium/ctrlWheelZoom.js",
"src/render/input/router.js"
],
"external": ["cesium", "vue", "pinia", "vue-i18n"]
},
@@ -1282,7 +1291,10 @@
"src/data/scenePick.js",
"src/data/pickRegistry.js",
"src/input/dispatcher.js",
"src/render/cesium/cameraInput.js"
"src/render/cesium/cameraInput.js",
"src/render/cesium/input.js",
"src/render/cesium/ctrlWheelZoom.js",
"src/render/input/router.js"
],
"external": ["cesium", "vue", "pinia", "vue-i18n"]
},
@@ -1376,6 +1388,9 @@
"src/data/pickRegistry.js",
"src/input/dispatcher.js",
"src/render/cesium/cameraInput.js",
"src/render/cesium/input.js",
"src/render/cesium/ctrlWheelZoom.js",
"src/render/input/router.js",
"src/render/cesium/internals.js"
],
"external": ["cesium"]
@@ -1448,7 +1463,10 @@
"src/input/sensorPick.js",
"src/data/pickRegistry.js",
"src/input/dispatcher.js",
"src/render/cesium/cameraInput.js"
"src/render/cesium/cameraInput.js",
"src/render/cesium/input.js",
"src/render/cesium/ctrlWheelZoom.js",
"src/render/input/router.js"
],
"external": ["cesium"]
},
@@ -1533,7 +1551,10 @@
"src/data/pickRegistry.js",
"src/input/sensorPick.js",
"src/input/dispatcher.js",
"src/render/cesium/cameraInput.js"
"src/render/cesium/cameraInput.js",
"src/render/cesium/input.js",
"src/render/cesium/ctrlWheelZoom.js",
"src/render/input/router.js"
],
"external": ["cesium"]
},
@@ -1620,7 +1641,10 @@
"src/data/scenePick.js",
"src/data/pickRegistry.js",
"src/input/dispatcher.js",
"src/render/cesium/cameraInput.js"
"src/render/cesium/cameraInput.js",
"src/render/cesium/input.js",
"src/render/cesium/ctrlWheelZoom.js",
"src/render/input/router.js"
],
"external": ["cesium"]
},
@@ -1665,7 +1689,10 @@
"src/data/scenePick.js",
"src/data/pickRegistry.js",
"src/input/dispatcher.js",
"src/render/cesium/cameraInput.js"
"src/render/cesium/cameraInput.js",
"src/render/cesium/input.js",
"src/render/cesium/ctrlWheelZoom.js",
"src/render/input/router.js"
],
"external": ["cesium", "satellite.js"]
},
@@ -1710,7 +1737,10 @@
"src/data/pickRegistry.js",
"src/input/sensorPick.js",
"src/input/dispatcher.js",
"src/render/cesium/cameraInput.js"
"src/render/cesium/cameraInput.js",
"src/render/cesium/input.js",
"src/render/cesium/ctrlWheelZoom.js",
"src/render/input/router.js"
],
"external": ["cesium"]
},
@@ -1768,7 +1798,10 @@
"src/data/scenePick.js",
"src/data/pickRegistry.js",
"src/input/dispatcher.js",
"src/render/cesium/cameraInput.js"
"src/render/cesium/cameraInput.js",
"src/render/cesium/input.js",
"src/render/cesium/ctrlWheelZoom.js",
"src/render/input/router.js"
],
"external": ["cesium", "@mapbox/vector-tile", "pbf"]
},
@@ -1916,6 +1949,9 @@
"src/data/pickRegistry.js",
"src/input/dispatcher.js",
"src/render/cesium/cameraInput.js",
"src/render/cesium/input.js",
"src/render/cesium/ctrlWheelZoom.js",
"src/render/input/router.js",
"src/queries/heights.js"
],
"external": ["cesium"]
@@ -1986,7 +2022,10 @@
"src/data/pickRegistry.js",
"src/input/sensorPick.js",
"src/input/dispatcher.js",
"src/render/cesium/cameraInput.js"
"src/render/cesium/cameraInput.js",
"src/render/cesium/input.js",
"src/render/cesium/ctrlWheelZoom.js",
"src/render/input/router.js"
],
"external": ["hls.js", "cesium"]
},
@@ -2065,6 +2104,9 @@
"src/data/pickRegistry.js",
"src/input/dispatcher.js",
"src/render/cesium/cameraInput.js",
"src/render/cesium/input.js",
"src/render/cesium/ctrlWheelZoom.js",
"src/render/input/router.js",
"src/queries/heights.js"
],
"external": ["cesium", "pbf", "@mapbox/vector-tile", "mapillary-js"]
@@ -2110,6 +2152,9 @@
"src/data/pickRegistry.js",
"src/input/dispatcher.js",
"src/render/cesium/cameraInput.js",
"src/render/cesium/input.js",
"src/render/cesium/ctrlWheelZoom.js",
"src/render/input/router.js",
"src/queries/heights.js"
],
"external": ["cesium", "@mapbox/vector-tile", "pbf"]
@@ -2164,6 +2209,9 @@
"src/data/pickRegistry.js",
"src/input/dispatcher.js",
"src/render/cesium/cameraInput.js",
"src/render/cesium/input.js",
"src/render/cesium/ctrlWheelZoom.js",
"src/render/input/router.js",
"src/render/cesium/internals.js"
],
"external": ["cesium"]
@@ -2201,7 +2249,10 @@
"src/input/sensorPick.js",
"src/data/pickRegistry.js",
"src/input/dispatcher.js",
"src/render/cesium/cameraInput.js"
"src/render/cesium/cameraInput.js",
"src/render/cesium/input.js",
"src/render/cesium/ctrlWheelZoom.js",
"src/render/input/router.js"
],
"external": ["cesium"]
},
@@ -3363,6 +3414,8 @@
"src/input/sensorPick.js",
"src/input/dispatcher.js",
"src/render/cesium/cameraInput.js",
"src/render/cesium/input.js",
"src/render/input/router.js",
"src/queries/heights.js",
"src/render/cesium/internals.js",
"src/render/cesium/tileRequests.js"
@@ -3992,6 +4045,9 @@
"src/input/sensorPick.js",
"src/input/dispatcher.js",
"src/render/cesium/cameraInput.js",
"src/render/cesium/input.js",
"src/render/cesium/ctrlWheelZoom.js",
"src/render/input/router.js",
"src/queries/heights.js",
"src/render/cesium/tileRequests.js",
"src/render/cesium/internals.js"
@@ -4104,6 +4160,9 @@
"modules": [
"src/input/dispatcher.js",
"src/render/cesium/cameraInput.js",
"src/render/cesium/input.js",
"src/render/cesium/ctrlWheelZoom.js",
"src/render/input/router.js",
"src/input/sensorPick.js",
"src/data/inputOwnership.js",
"src/data/pickRegistry.js",
@@ -4362,7 +4421,10 @@
"src/input/sensorPick.js",
"src/data/pickRegistry.js",
"src/input/dispatcher.js",
"src/render/cesium/cameraInput.js"
"src/render/cesium/cameraInput.js",
"src/render/cesium/input.js",
"src/render/cesium/ctrlWheelZoom.js",
"src/render/input/router.js"
],
"external": ["cesium"]
},
@@ -4695,6 +4757,9 @@
"src/input/sensorPick.js",
"src/input/dispatcher.js",
"src/render/cesium/cameraInput.js",
"src/render/cesium/input.js",
"src/render/cesium/ctrlWheelZoom.js",
"src/render/input/router.js",
"src/queries/heights.js",
"src/render/cesium/internals.js"
],
@@ -4754,6 +4819,9 @@
"src/data/pickRegistry.js",
"src/input/dispatcher.js",
"src/render/cesium/cameraInput.js",
"src/render/cesium/input.js",
"src/render/cesium/ctrlWheelZoom.js",
"src/render/input/router.js",
"src/queries/heights.js",
"src/render/cesium/internals.js"
],
@@ -4822,7 +4890,10 @@
"src/data/scenePick.js",
"src/data/pickRegistry.js",
"src/input/dispatcher.js",
"src/render/cesium/cameraInput.js"
"src/render/cesium/cameraInput.js",
"src/render/cesium/input.js",
"src/render/cesium/ctrlWheelZoom.js",
"src/render/input/router.js"
],
"external": ["cesium"]
},
@@ -4924,6 +4995,9 @@
"src/data/pickRegistry.js",
"src/input/dispatcher.js",
"src/render/cesium/cameraInput.js",
"src/render/cesium/input.js",
"src/render/cesium/ctrlWheelZoom.js",
"src/render/input/router.js",
"src/queries/heights.js"
],
"external": ["cesium"]