A host that draws its map live (the regions country map) has no posters/<id>.html to lift, so its packets printed page 1 with the missing-map notice. usePosterPrints gains opts.mapImage(item): an image or data: URL of the host's own map, placed by the renderer (mapFromImage) exactly as a poster sheet is, the whole page inside the white margin. Order for page 1: an explicit mapSvg, then the generated map, then the stored sheet. PosterWall forwards it as a prop. Measured two-sided through the real printPacket: with mapImage the image is page 1 and no sheet is lifted; without it the stored sheet is. The composable's header now documents the whole contract — every option, which are optional, and the row shape — so a map adopting it reads one comment instead of the wall that uses it. |
||
|---|---|---|
| .. | ||
| charts | ||
| dashboards | ||
| hints | ||
| legends | ||
| map-controls | ||
| maps | ||
| poster | ||
| qa | ||
| regions | ||
| search | ||
| tables | ||
| BackToTopButton.vue | ||
| PeopleGroupDetail.vue | ||
| README.md | ||
| ResearchMapFilterPanel.vue | ||
| ResearchMapSideMenu.vue | ||
| SideMenuDrawer.vue | ||
| ViewSelect.vue | ||
| WARNING.md | ||
library/components/ — shared Vue components
The map UI, built from parameterized pieces every app-profile reuses. Fix one here and every map benefits — never edit a shared component to customize one map.
library/components/
┌───────────────────────────────────────────┐
│ legends/ map-controls/ poster/ │
│ charts/ tables/ │
│ PeopleGroupDetail.vue SideMenuDrawer.vue │
│ ResearchMapFilterPanel.vue …SideMenu.vue │
└───────────────────────────────────────────┘
reused by every app-profile via @map/components/…
legends/,map-controls/,poster/each have their own README.- Every component uses
<script setup>, callsuseShadowStyles(), and reaches stores viainject('mapStore' | 'uiStore' | 'dataStore')— never a direct store import.
Full catalog + conventions:
../../documentation/architecture/components.md ·
per-file roles: ../../documentation/reference.md.