A host page can define a tag name before our bundle loads, and customElements.define is first come, first
served. DX Life's own scripts define <doxa-map>, <doxa-simple-map> and <doxa-research-map>, and our bundles
defined the same names behind a silent guard, so on those pages our define was skipped and the page drew the
host's element under our name (Prayer Progress on the Adopt page, and the Research page).
- The doxa-simple-map bundle defines <dxm-simple-map>; doxa-research-map defines <dxm-research-map>. Each is
its bundle's first define, so the manifest, the leaf pages and the gallery mount them with no other change.
- The older names are defined only when the host asks: data-legacy-tags on the bundle's <script>, or
window.DXM_LEGACY_TAGS = true before it loads. Off by default.
- library/elements/ownTags.js: a class is branded with its bundle; a re-load is silent; a tag held by a
foreign class is reported (console.error), never adopted. whenTagDefined refuses a dxm- tag held by a
foreign class rather than mounting it.
- research-map-plus-grid mounts <dxm-research-map>; the gallery and studio count the new tags as heavy
(WebGL) elements; the studio's and the composite's composes lists name them.
- check:element-namespace (gates:pre; self-test in gates:post): no host name by default, each bundle's own
tag first, the manifest mounts them, one bundle per tag (people-groups-grid is the one known exception),
ownTags and whenTagDefined run against a stub registry.