Showcase Web Component
note
The Matterport Web Component is currently in public beta - interface and syntax are subject to change.
The Matterport Web Component (NPM package name: @matterport/webcomponent) is a Web Component (custom HTML element) that encapsulates the Matterport experience in a single DOM element:
<!-- Create a full 3D viewer on your site -->
<matterport-viewer m="SxQL3iGyoDo"></matterport-viewer>
You can use the web component as a full replacement for the iframe-based SDK bundle. Read the quick installation instructions, check out advanced usage tips, or continue to the tutorial to learn more.
Quick Installation
Full, current install instructions live on the npm package page and in the package README.md, including the supported three version.
- Install package:
- Yarn:
yarn add @matterport/webcomponent three - NPM:
npm install @matterport/webcomponent three
- Yarn:
- Install static assets (replace
YOUR_STATIC_ASSETS_DIRwith your static assets dir):- Yarn:
yarn matterport-assets YOUR_STATIC_ASSETS_DIR - NPM:
npx matterport-assets YOUR_STATIC_ASSETS_DIR
- Yarn:
import @matterport/webcomponentin your JS/TS- Add a
<matterport-viewer>to your HTML. Add themattribute with the SID of the model you want to use. - To use the SDK:
- Add the application-key attribute with the value set to your SDK key
- Either:
- Wait for the
playingPromise:
const viewer = document.querySelector('matterport-viewer');const mpSdk = await viewer.playingPromise;- OR listen for the
mpSdkPlayingevent:
const viewer = document.querySelector('matterport-viewer');viewer.addEventListener('mpSdkPlaying', async (evt) => {const mpSdk = evt.detail.mpSdk;/* do something with mpSdk... */}); - Wait for the
Full example
(Make sure you complete steps 1 and 2 above first!)
HTML:
<matterport-viewer
m="YOUR_MODEL_SID"
application-key="YOUR_APPLICATION_KEY"
></matterport-viewer>
JS/TS:
import '@matterport/webcomponent';
const viewer = document.querySelector('matterport-viewer');
viewer.addEventListener('mpSdkPlaying', async (evt) => {
const mpSdk = evt.detail.mpSdk;
/* do something with mpSdk... */
});