doxa-maps/library/components/poster
Doxa Maps 21e2200029 Poster sections: one type registry per page; the element takes a columns attribute
- ONE REGISTRY PER PAGE. Every bundle inlines its own copy of posterTypes.js, and <dxm-poster-section> is
  defined by whichever bundle loads first, so with a module-level Map that element saw only its own bundle's
  types: type="upg100-list" rendered "none" when the country-posters bundle had defined it. The registry now
  lives on the page (globalThis.__DXM_POSTER_TYPES__, created once): every copy registers into it and reads
  from it; a name registered twice keeps the first (a dev warning; the built-in country is silent); every
  registration is announced on window (dxm-poster-type-registered), and PosterSectionView looks again when
  its type arrives after it asked.
- COLUMNS (carried from the Poster Sections plugin PR so the element's library lands once): columns="1".."5"
  maps to profile-config.columns and to PosterWall's existing columns prop; absent or out of range is
  today's default, and a reader's saved per-row choice still wins.
- check:poster-type-registry (gates:pre; self-test in gates:post): two independent copies of the module side
  by side, as two bundles on one page; a type registered through one is found through the other; first wins;
  announced. The self-test's per-bundle registry fails.
2026-10-02 08:29:16 +00:00
..
slots consolidate docs into documentation/ and deployment shells into deployment/ 2026-09-21 23:23:23 +00:00
types <dxm-poster-section>: one poster section, any poster type, as a reusable element 2026-10-02 06:56:48 +00:00
MapPrintProgress.vue Regions header: the ⓘ follows the dark theme as Share does; the print progress bar honours reduced motion 2026-09-30 11:04:49 +00:00
panelSheets.js PanelSheets: say that sheets are numbered from 0, in the docs and in sliceFor's error 2026-09-30 22:08:23 +00:00
PanelSheets.vue PanelSheets: a plain style id, and the library index lists the new poster files 2026-09-30 22:18:46 +00:00
PosterDialog.vue Source comments state design history and measurements as facts, without quoting or naming anyone 2026-10-01 00:37:17 +00:00
PosterPreview.vue The last of the shared-library English: legend, poster preview and tab loading states 2026-09-26 13:04:16 +00:00
PosterSection.vue PosterWall: each section is a PosterSection (lifted, not copied), drawn from the wall's own state 2026-10-02 06:48:41 +00:00
PosterSectionView.vue Poster sections: one type registry per page; the element takes a columns attribute 2026-10-02 08:29:16 +00:00
posterTypes.js Poster sections: one type registry per page; the element takes a columns attribute 2026-10-02 08:29:16 +00:00
PosterWall.vue <dxm-poster-section>: one poster section, any poster type, as a reusable element 2026-10-02 06:56:48 +00:00
posterWallContext.js PosterWall: each section is a PosterSection (lifted, not copied), drawn from the wall's own state 2026-10-02 06:48:41 +00:00
README.md consolidate docs into documentation/ and deployment shells into deployment/ 2026-09-21 23:23:23 +00:00

library/components/poster/ — poster export UI

The dialog and preview surfaces that turn a live map into a printable poster. Used by research-map.vue.

  PosterDialog.vue   ← pick size, orientation, title → export
  PosterPreview.vue  ← live preview, updates as you change settings
  PosterWall.vue     ← grid of poster previews
  slots/             ← the composable regions of a poster (own README)
        fed by useMapPoster() · sizes from constants/posterSizes.js
  • Open/close state comes from inject('uiStore'); the preview is fed by useMapPoster().
  • Page sizes: library/constants/posterSizes.js. Defaults: library/constants/posterDefaults.js.

Full wiring + slot contract: ../../../documentation/architecture/components.md.