The map keeps the wheel; the edge strips carry the page
Driver: "two finger scrolling on the map should allow me to interact with the map, but instead it just scrolls down past the map and does not interact with the map -- that's what the scroll side bars are there for, to let me interact with the map AND have a way to scroll down past the map." REPRODUCED before touching anything: wheel over the centre of the map in research-map-plus-grid moved scrollY 0 -> 480 and the camera never moved. The map was inert exactly where it is the main control. CAUSE: _syncScrollZoomToHost disabled scroll-zoom whenever the document or an ancestor could scroll -- which is ALWAYS true in a composite that stacks a grid under a map. It was not careless: it fixed BUG-CANNOT-SCROLL-DOWN-TO-THE-GRID, where the map ate every wheel and the grid below could not be reached. But that bug already had a second fix -- the .map-scroll-edge gutters, a dedicated page-scroll lane down both sides, which the Map constructor's own note calls "the single-finger page-scroll escape". Two fixes for one bug, and the second silently undid the feature while leaving the first redundant. So scroll-zoom now stays enabled and the strips carry the page. The docScrolls/ancestorScrolls probe stays, because the edge affordance keys its gray indicator off the same question. MEASURED on the built tree, 1280x900: wheel x4 over map centre scrollY 0 -> 0 map takes the gesture wheel x4 over edge strip scrollY 0 -> 480 escape still works (two strips, 46px wide each) And the repo's own fitness gate, which exists for this property: check:fits-screen 17/17 PASS -- including "the grid is reachable" and "the wheel is targeted", so the bug this replaced has not returned. DashboardMapPanel carries the same helper and was deliberately NOT changed: different layout contract (map inside a fixed shell with facet/table/rail columns), and fits-screen passes it today as "wheel escapes every column". Flagged in the ledger for the Driver rather than altered on the strength of a report about a different surface. gates:pre 0. gates:post 17/18, the single failure being the pre-existing verify/tables-complete break from the visa-leak fix.
This commit is contained in:
parent
6ba36817eb
commit
72be2bee84
6 changed files with 73 additions and 50 deletions
|
|
@ -121,8 +121,31 @@ function _syncScrollZoomToHost(m) {
|
|||
const docScrolls = doc.scrollHeight > window.innerHeight + 4
|
||||
const host = (m.getContainer && m.getContainer()) || null
|
||||
const ancestorScrolls = host ? !!_findScrollportAncestor(host) : false
|
||||
if (docScrolls || ancestorScrolls) m.scrollZoom.disable()
|
||||
else m.scrollZoom.enable()
|
||||
// ★ THE MAP KEEPS THE GESTURE. THE EDGE STRIPS ARE THE WAY PAST IT.
|
||||
// Driver, 2026-09-24: "two finger scrolling on the map should allow me to interact with the
|
||||
// map, but instead it just scrolls down past the map and does not interact with the map —
|
||||
// that's what the scroll side bars are there for, to let me interact with the map AND have a
|
||||
// way to scroll down past the map."
|
||||
//
|
||||
// This used to disable scroll-zoom whenever the page or an ancestor could scroll, which is
|
||||
// ALWAYS true in the research-map-plus-grid composite (a map with a grid stacked under it).
|
||||
// MEASURED before this change, wheel over the centre of the map in that composite:
|
||||
// scrollY 0 -> 480 and the camera never moved. The map was inert exactly where it is the
|
||||
// main control.
|
||||
//
|
||||
// It was not a careless choice — it fixed BUG-CANNOT-SCROLL-DOWN-TO-THE-GRID, where the map
|
||||
// ate every wheel and the grid below was unreachable. But that bug had already been solved a
|
||||
// second way: the .map-scroll-edge gutters (useEdgeScrollAffordance, pointer-events:auto,
|
||||
// touch-action:pan-y) are a dedicated page-scroll lane down both sides, and the note at the
|
||||
// Map constructor says so outright — "the single-finger page-scroll escape is NOW the gray
|
||||
// side-edge affordance". With the strips in place, releasing the wheel as well made the map
|
||||
// non-interactive and left the strips redundant. Two fixes for one bug, and the second one
|
||||
// silently undid the feature.
|
||||
//
|
||||
// So: keep scroll-zoom ON, and let the strips carry the page. `docScrolls`/`ancestorScrolls`
|
||||
// are still computed because the edge affordance below keys its gray indicator off the same
|
||||
// question — a map with nothing stacked under it should not advertise a scroll lane.
|
||||
m.scrollZoom.enable()
|
||||
} catch (_) { /* an engine without scrollZoom must never break the panel */ }
|
||||
}
|
||||
function loadPoster() {
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -29,7 +29,7 @@
|
|||
|
||||
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
|
||||
<!-- Bundle IIFE — registers the <doxa-research-map> custom element. -->
|
||||
<script src="../doxa-research-map.js" integrity="sha384-m4l+f0dtSiobgVmlkVLdbrLtQ1XwOTEmN2S++QZFqsYdTeEVuSDMl96aTudjoqB4" crossorigin="anonymous"></script>
|
||||
<script src="../doxa-research-map.js" integrity="sha384-oecoezttPmpRe5GNG/Yko6IkEbtLjCD7PD7qghU1ZigprnfLKhbf0eBEiEbE24iR" crossorigin="anonymous"></script>
|
||||
|
||||
<script>
|
||||
// Mapbox token resolution — the A3 ladder, in precedence order:
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@
|
|||
|
||||
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
|
||||
<!-- Bundle IIFE — registers the <doxa-research-map> custom element. -->
|
||||
<script src="../../doxa-research-map.js" integrity="sha384-m4l+f0dtSiobgVmlkVLdbrLtQ1XwOTEmN2S++QZFqsYdTeEVuSDMl96aTudjoqB4" crossorigin="anonymous"></script>
|
||||
<script src="../../doxa-research-map.js" integrity="sha384-oecoezttPmpRe5GNG/Yko6IkEbtLjCD7PD7qghU1ZigprnfLKhbf0eBEiEbE24iR" crossorigin="anonymous"></script>
|
||||
|
||||
<script>
|
||||
// Mapbox token resolution — the A3 ladder, in precedence order:
|
||||
|
|
|
|||
2
public/doxa-maps/index.html
generated
2
public/doxa-maps/index.html
generated
File diff suppressed because one or more lines are too long
4
public/doxa-maps/manifest.json
generated
4
public/doxa-maps/manifest.json
generated
|
|
@ -331,7 +331,7 @@
|
|||
"bundle": "doxa-research-map",
|
||||
"scriptUrl": "./doxa-research-map/doxa-research-map.js",
|
||||
"output": "doxa-maps/doxa-research-map/doxa-research-map.js",
|
||||
"integrity": "sha384-m4l+f0dtSiobgVmlkVLdbrLtQ1XwOTEmN2S++QZFqsYdTeEVuSDMl96aTudjoqB4",
|
||||
"integrity": "sha384-oecoezttPmpRe5GNG/Yko6IkEbtLjCD7PD7qghU1ZigprnfLKhbf0eBEiEbE24iR",
|
||||
"elements": [
|
||||
"doxa-research-map"
|
||||
],
|
||||
|
|
@ -347,7 +347,7 @@
|
|||
"scriptUrl": "./doxa-research-map/doxa-research-map.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./doxa-research-map/research-map/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen></iframe>",
|
||||
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./doxa-research-map/doxa-research-map.js\" integrity=\"sha384-m4l+f0dtSiobgVmlkVLdbrLtQ1XwOTEmN2S++QZFqsYdTeEVuSDMl96aTudjoqB4\" crossorigin=\"anonymous\"></script>\n<doxa-research-map profile-config='{\"profile\":\"research-map\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></doxa-research-map>"
|
||||
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./doxa-research-map/doxa-research-map.js\" integrity=\"sha384-oecoezttPmpRe5GNG/Yko6IkEbtLjCD7PD7qghU1ZigprnfLKhbf0eBEiEbE24iR\" crossorigin=\"anonymous\"></script>\n<doxa-research-map profile-config='{\"profile\":\"research-map\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></doxa-research-map>"
|
||||
},
|
||||
"instances": [
|
||||
{
|
||||
|
|
|
|||
Loading…
Reference in a new issue