API Reference
Every DashPannellum prop — configuration, behavior and read-only state
Component props
The table below is generated from the component's own metadata, so it always matches the installed version.
| Prop | Type | Description |
|---|---|---|
id | string; optional | The ID used to identify this component in Dash callbacks. |
autoLoad | boolean; default True | If True, automatically loads the panorama without user interaction. |
callbackHotspots | dict; optional | Extra hotspots that report clicks back to Dash. Keys are scene IDs, values are arrays of hotspot objects ({pitch, yaw, type, text, name}). Clicking one updates the lastClickedHotspot prop. |
compass | boolean; default False | If True, displays a compass in the panorama viewer. |
currentScene | string; optional | Read-only. The ID of the current scene in tour mode. |
customControls | boolean; default False | If True, hides the built-in zoom/fullscreen controls so you can build your own controls with Dash components. |
dynamicUpdate | boolean; default False | If True, the viewer re-uploads its panorama texture every frame — required for scenes backed by a live <canvas> (panoramaCanvasId). This is the movement-mechanics primitive: redraw the canvas from a game loop and the sphere follows with no rebuild. Leave False for static panoramas. |
height | string; default '400px' | The height of the panorama viewer (any CSS size, e.g. '400px'). |
hfov | number; optional | Read-only. The current horizontal field of view (zoom), in degrees. |
hideLoadingSpinner | boolean; default False | If True, suppresses Pannellum's "Loading..." box for this viewer — useful with preloaded scenes or data-URI panoramas where the flash is the only visible part of an otherwise instant transition. |
lastClickedHotspot | string; optional | Read-only. The name of the last clicked callback hotspot. |
loadScene | string; optional | Imperative scene switch — set to a scene ID from the tour config to load that scene without rebuilding the viewer. Unknown IDs and the already-active scene are ignored. |
loaded | boolean; optional | Read-only. True once the panorama has loaded. |
lookAt | dict; optional | Imperative camera write — set {pitch, yaw, hfov, animated} to pan/zoom the existing viewer without rebuilding it. Omitted fields keep their current value; animated is the transition duration in ms (default 1000, use a small value for joystick-style continuous steering). Image panorama modes only. |
multiRes | dict; optional | Configuration object for multi-resolution (tiled) panoramas: {basePath, path, fallbackPath, extension, tileResolution, maxLevel, cubeResolution}. |
northOffset | number; default 0 | The offset, in degrees, of the center of the panorama from North. |
orientation | boolean; default False | Request gyroscope look-around (device orientation). Works on mobile devices with motion sensors; Pannellum runs the iOS 13+ permission prompt when needed, so on iOS set this to True from a clientside callback on a direct user tap. Whether it actually engaged is reported through orientationSupported and orientationActive. |
orientationActive | boolean; optional | Read-only. True while gyro look-around is actively steering the camera (False if permission was denied or orientation is off). |
orientationSupported | boolean; optional | Read-only. True when the device/browser can drive the camera from the gyroscope (requires motion sensors and a mobile browser). |
pitch | number; optional | Read-only. The current pitch of the panorama view, in degrees. |
preloadScenes | boolean; default True | If True (default), the other scenes' panorama images are prefetched into the browser cache once the viewer is up, so tour jumps don't show a loading box. |
showCenterDot | boolean; default False | If True, displays a center dot in the panorama viewer — useful as a crosshair when authoring hotspot positions. |
tour | dict; optional | Configuration object for tour mode. Follows the Pannellum tour format: {default: {firstScene, ...}, scenes: {sceneId: {...scene config}}}. A single equirectangular panorama is a tour with one scene. A scene may set panoramaCanvasId (the DOM id of a <canvas> element) instead of panorama to use Pannellum's dynamic mode: redraw the canvas and the sphere updates in place — no rebuild, no camera reset. Pair with the dynamicUpdate prop. |
useHttpStreaming | boolean; default False | If True, loads the video.js HTTP streaming plugin so HLS/DASH sources (e.g. live streams) can be played as 360° video. |
video | dict; optional | Configuration object for 360° video panoramas, rendered through video.js: {sources: [{src, type}], poster}. |
width | string; default '600px' | The width of the panorama viewer (any CSS size, e.g. '100%' or '600px'). |
yaw | number; optional | Read-only. The current yaw of the panorama view, in degrees. |
Read-only props
These update from the viewer — use them as callback Inputs, never set them yourself:
| Prop | Updates when |
|---|---|
loaded | The panorama or video finishes loading |
pitch | The camera pitch changes (throttled, change-detected) |
yaw | The camera yaw changes (throttled, change-detected) |
hfov | The zoom changes (throttled, change-detected) — new in 0.2.0 |
currentScene | The active tour scene changes |
lastClickedHotspot | A callback hotspot is clicked |
orientationSupported | Gyro steering is possible here (mobile + HTTPS) — new in 0.4.0 |
orientationActive | The gyroscope is steering right now — new in 0.4.0 |
Imperative props (0.2.0 / 0.3.0)
These act on the live viewer without a rebuild — output them from callbacks (or window.dash_clientside.set_props for high-frequency use):
| Prop | Action |
|---|---|
lookAt | {pitch, yaw, hfov, animated} — pan/zoom the camera; omitted fields hold |
loadScene | Scene ID string — switch tour scenes |
callbackHotspots | Live: per-name diff — position-only changes move the existing DOM node in place (0.3.1), other changes recreate just that hotspot |
dynamicUpdate | Re-upload the texture each frame — pairs with the panoramaCanvasId scene key (0.3.0) for canvas-backed worlds |
orientation | Request gyro look-around (0.4.0) — set from a clientside callback on a tap for the iOS permission prompt |
See Scene Configuration for the fly-to pattern, the Joystick Arena for the full movement stack, and Gyro Look-Around for device-orientation steering.
Changes since 0.0.6
- Dash 4.2+ required (was Dash 1/2 era). The package now ships
pyproject.tomlpackaging and a React 18 build. customControlsis now coherent across modes:Truehides the built-in zoom/fullscreen controls (previously it was ignored for image panoramas and inverted for video).- Video no longer autoplays; users press play. Set up your own interaction if you need autoplay (browsers block autoplay-with-audio anyway).
pitch/yawupdates are throttled to 4/s and change-detected (previously 10/s unconditionally), so idle viewers no longer trigger callbacks.
New in 0.1.0: configuration props are live — output a new tour (or multiRes/video) from a callback and the viewer re-initializes with it, so panoramas can be swapped dynamically. Callback hotspots use real Pannellum click handlers (they previously relied on a viewer event that never fired reliably), script loading is deduplicated so several viewers can share one page, and the loaded prop is properly declared.
Source: /api
Note for AI agents: This is the static, prerendered view of an interactive Dash application served because we detected a non-JS user agent. Full prose docs:
- /api/llms.txt — LLM-friendly documentation
- /sitemap.xml
- /robots.txt