new Shoji(el, options) — the UMD global (CLAUDE.md: "UMD build exposes
exactly one global"). The default export is the constructor, not a
namespace object, so <script src="shoji.js"> usage matches the default
import used by bundler/ESM consumers. Headless/tree-shaking consumers who
want the class as a named import can pull it from the shoji/core
subpath instead.
Official plugins are attached as static properties (Shoji.Autoplay) so
the single-file build stays "one global" (CLAUDE.md) while still shipping
every official plugin's code — self-registering, no extra
new Shoji(el, options)— the UMD global (CLAUDE.md: "UMD build exposes exactly one global"). The default export is the constructor, not a namespace object, so<script src="shoji.js">usage matches the default import used by bundler/ESM consumers. Headless/tree-shaking consumers who want the class as a named import can pull it from theshoji/coresubpath instead.Official plugins are attached as static properties (
Shoji.Autoplay) so the single-file build stays "one global" (CLAUDE.md) while still shipping every official plugin's code — self-registering, no extra