Loading…
Loading…
Render a script module import map for WordPress Interactivity API and other ES module dependencies.
The ImportMap component renders a <script type="importmap"> tag that maps bare module specifiers (like @wordpress/interactivity) to proxied URLs. This is required for WordPress blocks that use viewScriptModule and the Interactivity API.
ImportMap is typically used via WPHead which renders it automatically when importMap is provided:
<WPHead scripts={scripts} globalStyles={globalStyles} importMap={importMap} pathname={uri} />
To use standalone:
import { ImportMap } from '@axistaylor/nextpress'; <ImportMap imports={importMap} instance="default" pathname={uri} />
| Prop | Type | Required | Description |
|---|---|---|---|
imports | WPImport[] | Yes | Array of import map entries |
instance | string | No | WordPress instance slug (default: 'default') |
pathname | string | No | Current page pathname |
interface WPImport { name: string; // Bare specifier, e.g. "@wordpress/interactivity" path: string; // Relative URL, e.g. "/wp-includes/js/dist/script-modules/interactivity/debug.js" }
Import map entries come from the importMap field on UriAssets:
query ($uri: String!) { assetsByUri(uri: $uri) { importMap(scheme: RELATIVE) { name path } } }
The scheme argument controls URL format:
FULL — Absolute WordPress URLsRELATIVE — Relative paths (recommended — transformAssetUrl handles proxy routing)Uri_Assets model calls NextPress_Script_Modules::get_enqueued_import_map() to read the private WP_Script_Modules::get_import_map() dataImportMap component routes each path through transformAssetUrl() to proxy via /atx/{instance}/wp-internal-assets/... or /atx/{instance}/wp-assets/...<script type="importmap"> allows <script type="module"> tags to resolve bare specifiers