@ericchen1990/pano-view 4.1.0 → 5.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.mts CHANGED
@@ -239,6 +239,149 @@ declare function cycleSceneId(scenes: readonly {
239
239
  */
240
240
  declare function KeyboardControls({ enabled, keys, rotateSpeed, zoomSpeed, shiftMultiplier, invert, fovSpeed, onPreviousScene, onNextScene, }: KeyboardControlsProps): null;
241
241
 
242
+ type WebVRInteractionMode = "auto" | "gaze" | "pointer";
243
+ type WebVRInputState = Readonly<{
244
+ mode: "gaze" | "pointer" | "paused" | null;
245
+ source: "head" | "controller" | "hand" | "system" | null;
246
+ }>;
247
+ type WebVRMode = "webxr" | "mobilevr" | "fake";
248
+ type WebVRProfileId = "none" | "cardboard-v1" | "cardboard-v2" | "gear-vr" | "daydream";
249
+ type WebVRProfile = {
250
+ id?: string;
251
+ label?: string;
252
+ /** Vertical field of view for each eye, in degrees. */
253
+ fov: number;
254
+ /** Distance between the eyes, in millimetres. */
255
+ ipdMm: number;
256
+ /** Distance from the display to the headset lens, in millimetres. */
257
+ screenToLensMm?: number;
258
+ /**
259
+ * Distance from the headset tray bottom to the lens center, in millimetres.
260
+ * `0` or omitted keeps the optical axis on the vertical screen center.
261
+ */
262
+ trayDistanceMm?: number;
263
+ /** Radial lens distortion coefficients. Zero disables distortion. */
264
+ k1: number;
265
+ k2: number;
266
+ };
267
+ /** Target WebXR session refresh rate. Omitting keeps the store default (`"high"`). */
268
+ type WebVRFrameRate = "low" | "mid" | "high" | number;
269
+ type WebVRChromeAppearance = {
270
+ background?: CSSProperties["background"];
271
+ color?: CSSProperties["color"];
272
+ accent?: CSSProperties["color"];
273
+ borderRadius?: CSSProperties["borderRadius"];
274
+ fontSize?: CSSProperties["fontSize"];
275
+ setupTitle?: ReactNode;
276
+ };
277
+ type WebVRChrome = boolean | WebVRChromeAppearance;
278
+ type WebVRState = {
279
+ input?: WebVRInputState;
280
+ available: boolean;
281
+ enabled: boolean;
282
+ mode: WebVRMode | null;
283
+ };
284
+ type WebVRProps = {
285
+ /** Input policy; auto uses explicit selection in WebXR and dwell in fallback VR. */
286
+ interactionMode?: WebVRInteractionMode;
287
+ /**
288
+ * Mount the built-in session chrome (Exit VR / MobileVR Setup). Defaults to
289
+ * true. Enter VR is not rendered; host apps drive entry through the handle
290
+ * or `usePanoViewer`.
291
+ */
292
+ chrome?: WebVRChrome;
293
+ /** Enable the phone stereoscopic fallback. Defaults to true. */
294
+ mobileVr?: boolean;
295
+ /** Treat desktop device-orientation sensors as MobileVR. Defaults to false. */
296
+ desktopSupport?: boolean;
297
+ /** Allow a mouse-driven stereoscopic desktop simulation. Defaults to true. */
298
+ fakeSupport?: boolean;
299
+ /** Physical diagonal screen size in inches, or automatic detection. */
300
+ screensize?: number | "auto";
301
+ /**
302
+ * Cardboard Device Parameter Database URL used when `screensize` is
303
+ * `"auto"`. Defaults to Google's public DPDB. Pass `""` or `null` to skip
304
+ * the online lookup for unknown devices.
305
+ */
306
+ databaseUrl?: string | null;
307
+ /** Headset preset or a custom lens profile. */
308
+ profile?: WebVRProfileId | WebVRProfile;
309
+ /**
310
+ * Follow compass-oriented headings in MobileVR. Defaults to false.
311
+ * Has no effect in WebXR sessions.
312
+ */
313
+ absolute?: boolean;
314
+ /** Panorama yaw that represents North when `absolute` is enabled. Defaults to 0. */
315
+ north?: number;
316
+ /**
317
+ * Gyro smoothing from 0 (none) to 0.99 (strong). Defaults to 0.
318
+ * Keep at 0 for normal viewing.
319
+ */
320
+ friction?: number;
321
+ /**
322
+ * Allow horizontal touch dragging to correct MobileVR heading. Defaults to
323
+ * false because headset trays can trigger false touches.
324
+ */
325
+ touchSupport?: boolean;
326
+ /**
327
+ * Distortion / WebXR framebuffer scale factor. Defaults to 1. Clamped to
328
+ * 0.5–2. Must be set before entering WebXR (cannot change mid-session).
329
+ */
330
+ oversampling?: number;
331
+ /**
332
+ * WebXR fixed foveation in the range 0–1. Omit to keep the device default.
333
+ * `0` is full resolution; `1` is maximum edge downsampling.
334
+ */
335
+ foveation?: number;
336
+ /**
337
+ * Target WebXR refresh rate. Omit to keep the store default (`"high"`).
338
+ * A numeric Hz picks the closest rate from `session.supportedFrameRates`.
339
+ */
340
+ frameRate?: WebVRFrameRate;
341
+ /** Show a center reticle in VR. Defaults to true. */
342
+ cursor?: boolean;
343
+ /**
344
+ * Milliseconds to keep looking at a hotspot before a gaze click.
345
+ * Defaults to 1500. Set to 0 to disable auto-click.
346
+ */
347
+ cursorDwellMs?: number;
348
+ /**
349
+ * Keep the display awake while MobileVR or simulated VR is active.
350
+ * Uses the Screen Wake Lock API when available, otherwise a looping
351
+ * hidden video. Defaults to true.
352
+ */
353
+ wakelock?: boolean;
354
+ /**
355
+ * Lock the mouse in simulated desktop VR so movement looks around with
356
+ * no visible cursor. Right-click to release; left-click the view to re-lock.
357
+ * While unlocked, the reticle and gaze actions are paused. Defaults to true.
358
+ */
359
+ mousePointerLock?: boolean;
360
+ onAvailable?: () => void;
361
+ onUnavailable?: () => void;
362
+ onEnterVR?: (mode: WebVRMode) => void;
363
+ onExitVR?: (mode: WebVRMode) => void;
364
+ onDenied?: (error?: unknown) => void;
365
+ onUnknownDevice?: () => void;
366
+ };
367
+ type WebVRHandle = {
368
+ enterVR: () => Promise<boolean>;
369
+ exitVR: () => Promise<void>;
370
+ toggleVR: () => Promise<boolean>;
371
+ isAvailable: () => boolean;
372
+ isEnabled: () => boolean;
373
+ getMode: () => WebVRMode | null;
374
+ getState: () => WebVRState;
375
+ subscribe: (onStoreChange: () => void) => () => void;
376
+ requestPermission: () => Promise<boolean>;
377
+ /** Reset the active fallback mode, or both modes outside VR; explicit props still apply. */
378
+ resetSettings: () => void;
379
+ };
380
+ type WebVRSettings = {
381
+ screensize: number | "auto";
382
+ profileId: WebVRProfileId;
383
+ };
384
+
242
385
  type PanoSpatialControlAdapter = {
243
386
  /** Degrees. Update the existing model viewing controls, not the panorama camera. */
244
387
  rotateBy?: (yaw: number, pitch: number) => void;
@@ -253,7 +396,7 @@ type PanoSpatialControlAdapter = {
253
396
  };
254
397
 
255
398
  type PanoMediaController = Pick<PanoVideoController, "subscribe" | "play" | "pause" | "seek" | "setVolume" | "setMuted"> & {
256
- getSnapshot: () => Pick<PanoVideoPlaybackSnapshot, "ready" | "playing" | "currentTime" | "duration" | "volume" | "volumeAdjustable" | "muted">;
399
+ getSnapshot: () => Pick<PanoVideoPlaybackSnapshot, "ready" | "playing" | "currentTime" | "duration" | "hasAudio" | "volume" | "volumeAdjustable" | "muted">;
257
400
  };
258
401
  type PanoControlAction = {
259
402
  id: string;
@@ -279,6 +422,7 @@ type VideoHotspotProps = HotspotCommonProps & {
279
422
  playing: boolean;
280
423
  poster?: string;
281
424
  loop?: boolean;
425
+ /** Defaults to false so manually started playback includes audio. */
282
426
  muted?: boolean;
283
427
  volume?: number;
284
428
  /**
@@ -348,6 +492,8 @@ type PanoVideoPlaybackSnapshot = {
348
492
  ended: boolean;
349
493
  currentTime: number;
350
494
  duration: number;
495
+ /** Undefined when audio track presence is unknown. */
496
+ hasAudio?: boolean;
351
497
  volume: number;
352
498
  /** False when the element ignores `volume` (iOS Safari). Mute still works. */
353
499
  volumeAdjustable: boolean;
@@ -379,141 +525,6 @@ type PanoVideoController = {
379
525
  setCaptionAppearance: (appearance: Partial<PanoVideoCaptionAppearance>) => void;
380
526
  };
381
527
 
382
- type WebVRMode = "webxr" | "mobilevr" | "fake";
383
- type WebVRProfileId = "none" | "cardboard-v1" | "cardboard-v2" | "gear-vr" | "daydream";
384
- type WebVRProfile = {
385
- id?: string;
386
- label?: string;
387
- /** Vertical field of view for each eye, in degrees. */
388
- fov: number;
389
- /** Distance between the eyes, in millimetres. */
390
- ipdMm: number;
391
- /** Distance from the display to the headset lens, in millimetres. */
392
- screenToLensMm?: number;
393
- /**
394
- * Distance from the headset tray bottom to the lens center, in millimetres.
395
- * `0` or omitted keeps the optical axis on the vertical screen center.
396
- */
397
- trayDistanceMm?: number;
398
- /** Radial lens distortion coefficients. Zero disables distortion. */
399
- k1: number;
400
- k2: number;
401
- };
402
- /** Target WebXR session refresh rate. Omitting keeps the store default (`"high"`). */
403
- type WebVRFrameRate = "low" | "mid" | "high" | number;
404
- type WebVRChromeAppearance = {
405
- background?: CSSProperties["background"];
406
- color?: CSSProperties["color"];
407
- accent?: CSSProperties["color"];
408
- borderRadius?: CSSProperties["borderRadius"];
409
- fontSize?: CSSProperties["fontSize"];
410
- setupTitle?: ReactNode;
411
- };
412
- type WebVRChrome = boolean | WebVRChromeAppearance;
413
- type WebVRState = {
414
- available: boolean;
415
- enabled: boolean;
416
- mode: WebVRMode | null;
417
- };
418
- type WebVRProps = {
419
- /**
420
- * Mount the built-in session chrome (Exit VR / MobileVR Setup). Defaults to
421
- * true. Enter VR is not rendered; host apps drive entry through the handle
422
- * or `usePanoViewer`.
423
- */
424
- chrome?: WebVRChrome;
425
- /** Enable the phone stereoscopic fallback. Defaults to true. */
426
- mobileVr?: boolean;
427
- /** Treat desktop device-orientation sensors as MobileVR. Defaults to false. */
428
- desktopSupport?: boolean;
429
- /** Allow a mouse-driven stereoscopic desktop simulation. Defaults to true. */
430
- fakeSupport?: boolean;
431
- /** Physical diagonal screen size in inches, or automatic detection. */
432
- screensize?: number | "auto";
433
- /**
434
- * Cardboard Device Parameter Database URL used when `screensize` is
435
- * `"auto"`. Defaults to Google's public DPDB. Pass `""` or `null` to skip
436
- * the online lookup for unknown devices.
437
- */
438
- databaseUrl?: string | null;
439
- /** Headset preset or a custom lens profile. */
440
- profile?: WebVRProfileId | WebVRProfile;
441
- /**
442
- * Follow compass-oriented headings in MobileVR. Defaults to false.
443
- * Has no effect in WebXR sessions.
444
- */
445
- absolute?: boolean;
446
- /** Panorama yaw that represents North when `absolute` is enabled. Defaults to 0. */
447
- north?: number;
448
- /**
449
- * Gyro smoothing from 0 (none) to 0.99 (strong). Defaults to 0.
450
- * Keep at 0 for normal viewing.
451
- */
452
- friction?: number;
453
- /**
454
- * Allow horizontal touch dragging to correct MobileVR heading. Defaults to
455
- * false because headset trays can trigger false touches.
456
- */
457
- touchSupport?: boolean;
458
- /**
459
- * Distortion / WebXR framebuffer scale factor. Defaults to 1. Clamped to
460
- * 0.5–2. Must be set before entering WebXR (cannot change mid-session).
461
- */
462
- oversampling?: number;
463
- /**
464
- * WebXR fixed foveation in the range 0–1. Omit to keep the device default.
465
- * `0` is full resolution; `1` is maximum edge downsampling.
466
- */
467
- foveation?: number;
468
- /**
469
- * Target WebXR refresh rate. Omit to keep the store default (`"high"`).
470
- * A numeric Hz picks the closest rate from `session.supportedFrameRates`.
471
- */
472
- frameRate?: WebVRFrameRate;
473
- /** Show a center reticle in VR. Defaults to true. */
474
- cursor?: boolean;
475
- /**
476
- * Milliseconds to keep looking at a hotspot before a gaze click.
477
- * Defaults to 1500. Set to 0 to disable auto-click.
478
- */
479
- cursorDwellMs?: number;
480
- /**
481
- * Keep the display awake while MobileVR or simulated VR is active.
482
- * Uses the Screen Wake Lock API when available, otherwise a looping
483
- * hidden video. Defaults to true.
484
- */
485
- wakelock?: boolean;
486
- /**
487
- * Lock the mouse in simulated desktop VR so movement looks around with
488
- * no visible cursor. Right-click to release; left-click the view to re-lock.
489
- * While unlocked, the reticle and gaze actions are paused. Defaults to true.
490
- */
491
- mousePointerLock?: boolean;
492
- onAvailable?: () => void;
493
- onUnavailable?: () => void;
494
- onEnterVR?: (mode: WebVRMode) => void;
495
- onExitVR?: (mode: WebVRMode) => void;
496
- onDenied?: (error?: unknown) => void;
497
- onUnknownDevice?: () => void;
498
- };
499
- type WebVRHandle = {
500
- enterVR: () => Promise<boolean>;
501
- exitVR: () => Promise<void>;
502
- toggleVR: () => Promise<boolean>;
503
- isAvailable: () => boolean;
504
- isEnabled: () => boolean;
505
- getMode: () => WebVRMode | null;
506
- getState: () => WebVRState;
507
- subscribe: (onStoreChange: () => void) => () => void;
508
- requestPermission: () => Promise<boolean>;
509
- /** Reset the active fallback mode, or both modes outside VR; explicit props still apply. */
510
- resetSettings: () => void;
511
- };
512
- type WebVRSettings = {
513
- screensize: number | "auto";
514
- profileId: WebVRProfileId;
515
- };
516
-
517
528
  type PanoViewerState = {
518
529
  /** Horizontal look angle in degrees. Positive values look right. */
519
530
  yaw: number;
@@ -2044,6 +2055,9 @@ type PanoSceneMenuAppearance = {
2044
2055
  gap?: number | string;
2045
2056
  borderRadius?: number | string;
2046
2057
  selectionColor?: string;
2058
+ /** Hover and keyboard-focus border color. Defaults to `"#7dd3fc"`. */
2059
+ focusColor?: string;
2060
+ /** Shared active/hover/focus border width in pixels. Defaults to 2. */
2047
2061
  selectionWidth?: number;
2048
2062
  labelBackground?: string;
2049
2063
  labelColor?: string;
@@ -2057,6 +2071,10 @@ type PanoSceneMenuProps = {
2057
2071
  items: readonly PanoSceneMenuItem[];
2058
2072
  activeId?: string | null;
2059
2073
  onSelect?: (id: string) => void;
2074
+ /** Show an icon for scenes successfully displayed by this viewer. Defaults to false. */
2075
+ showVisited?: boolean;
2076
+ /** Accessible description for visited scenes; never rendered as visible text. */
2077
+ visitedLabel?: string;
2060
2078
  /**
2061
2079
  * Screen anchor. Defaults to bottom, centered on that edge, with a 12px inset.
2062
2080
  * Corner `axis` chooses a horizontal or vertical strip.
@@ -2100,7 +2118,7 @@ type PanoSceneMenuProps = {
2100
2118
  toggle?: PanoOverlayToggle;
2101
2119
  };
2102
2120
  declare const DEFAULT_PANO_SCENE_MENU_APPEARANCE: Required<PanoSceneMenuAppearance>;
2103
- declare function PanoSceneMenu({ items, activeId, onSelect, anchor, width, height, collapsible, defaultExpanded, expanded: expandedProp, onExpandedChange, showArrows, loop, dragMotion: dragMotionProp, appearance, className, style, label, previousLabel, nextLabel, expandLabel, collapseLabel, toggle, }: PanoSceneMenuProps): react.JSX.Element;
2121
+ declare function PanoSceneMenu({ items, activeId, onSelect, showVisited, visitedLabel, anchor, width, height, collapsible, defaultExpanded, expanded: expandedProp, onExpandedChange, showArrows, loop, dragMotion: dragMotionProp, appearance, className, style, label, previousLabel, nextLabel, expandLabel, collapseLabel, toggle, }: PanoSceneMenuProps): react.JSX.Element;
2104
2122
 
2105
2123
  type ViewInteractionSource = "mouse" | "touch" | "keyboard";
2106
2124
  type PanoWheelEvent = {
@@ -2623,4 +2641,48 @@ declare function PanoSpatialControls({ children, position, width, distance, clas
2623
2641
  /** Adapts an existing media element without owning its source or playback lifetime. */
2624
2642
  declare function usePanoMediaController(ref: RefObject<HTMLMediaElement | null>): PanoMediaController;
2625
2643
 
2626
- export { type ArrowGraphic, type AssetUrlContext, type AssetUrlResolver, AudioHotspot, type AudioHotspotDefinition, type AudioHotspotErrorEvent, type AudioHotspotProps, type AudioPlaybackState, AutoRotate, type AutoRotateProps, BackgroundAudio, type BackgroundAudioController, type BackgroundAudioErrorEvent, type BackgroundAudioProps, type BackgroundAudioSnapshot, type BackgroundAudioSource, type CircleGraphic, type CubeFaceCode, type CubemapViewerConfig, DEFAULT_HOTSPOT_TOOLTIP_APPEARANCE, DEFAULT_HOTSPOT_TOOLTIP_OFFSET, DEFAULT_PANO_CURSORS, DEFAULT_PANO_SCENE_MENU_APPEARANCE, DEFAULT_PANO_VIDEO_CAPTION_APPEARANCE, DEFAULT_PANO_VIDEO_CONTROLS_APPEARANCE, DEFAULT_PANO_VIDEO_PLAYBACK_RATES, DEFAULT_WEBVR_CHROME_APPEARANCE, DEFAULT_WEBVR_CURSOR_DWELL_MS, type DiamondGraphic, EMPTY_WEBVR_STATE, type GraphicDefinition, GraphicHotspot, type GraphicHotspotDefinition, type GraphicHotspotProps, Gyro, type GyroHandle, type GyroProps, type GyroTouchMode, type HotspotCommonProps, type HotspotDefinition, type HotspotDefinitionBase, type HotspotDragEvent, type HotspotInputSource, type HotspotInteractionEvent, type HotspotMode, type HotspotPointerEvents, type HotspotPosition, type HotspotScaleMode, type HotspotTooltipAppearance, type HotspotTooltipContent, type HotspotTooltipPlacement, type HotspotTooltipScaleMode, type HotspotTooltipTrigger, IframeHotspot, type IframeHotspotDefinition, type IframeHotspotProps, type IframePointerPolicy, ImageHotspot, type ImageHotspotDefinition, type ImageHotspotProps, type JsonObject, type JsonRequestOptions, type JsonValue, type KeyboardControlAction, type KeyboardControlKeys, KeyboardControls, type KeyboardControlsProps, type LoadPanoProjectOptions, type LoadSceneFromJsonOptions, type LoadedPanoProject, type LoadedProjectScene, MAX_HOTSPOT_PITCH, MIN_PANO_CONTEXT_MENU_BACKGROUND_OPACITY, type MouseControlButton, MouseControls, type MouseControlsOptions, type MouseControlsProps, PANO_FILTER_PRESETS, PANO_OVERLAY_ALIGNS, type PanoColorMatrix, PanoContextMenu, type PanoContextMenuActionItem, type PanoContextMenuAppearance, type PanoContextMenuEntry, type PanoContextMenuItem, type PanoContextMenuPresetActions, type PanoContextMenuPresetId, type PanoContextMenuPresetRef, type PanoContextMenuPresets, type PanoContextMenuProps, type PanoContextMenuRenderProps, type PanoContextMenuSelectContext, type PanoContextMenuSeparatorItem, type PanoControlAction, PanoControlButton, PanoControlGroup, type PanoControlGroupProps, type PanoCursor, type PanoCursors, PanoDataError, type PanoDataErrorCode, PanoDialogSurfaceContext, type PanoDragMotion, type PanoEventBus, type PanoEventListener, type PanoEventMap, type PanoEventType, PanoEvents, type PanoEventsProps, PanoFilter, type PanoFilterPreset, type PanoFilterProps, PanoMap, type PanoMapControlsDefinition, type PanoMapDefinition, type PanoMapDialogPresentation, type PanoMapEditChange, type PanoMapGradientStop, PanoMapOverlay, type PanoMapOverlayProps, type PanoMapPanelPresentation, type PanoMapPresentation, type PanoMapProps, type PanoMapSectorDefinition, type PanoMapSectorGradient, type PanoMapSpotDefinition, type PanoMediaActivationControls, type PanoMediaActivationOptions, type PanoMediaController, PanoMediaControls, PanoModelControls, PanoOverlay, type PanoOverlayAlign, type PanoOverlayAnchor, type PanoOverlayAxis, type PanoOverlayChevron, type PanoOverlayCollapseEdge, type PanoOverlayContentAlign, type PanoOverlayInset, PanoOverlayPortalProvider, type PanoOverlayProps, type PanoOverlayRenderContext, type PanoOverlayToggle, type PanoOverlayToggleState, type PanoProjectDefinition, type PanoProjectSceneDefinition, type PanoResizeEvent, PanoSceneMenu, type PanoSceneMenuAppearance, type PanoSceneMenuItem, type PanoSceneMenuLabelAlign, type PanoSceneMenuProps, PanoScrollControls, type PanoSpatialControlAdapter, PanoSpatialControls, type PanoSpatialControlsProps, PanoVideo, type PanoVideoCaptionAppearance, type PanoVideoController, PanoVideoControls, type PanoVideoControlsAppearance, type PanoVideoControlsProps, type PanoVideoErrorEvent, type PanoVideoErrorSource, type PanoVideoPlaybackSnapshot, type PanoVideoProps, type PanoVideoSource, type PanoVideoTrack, type PanoVideoTrackKind, type PanoVideoVariant, type PanoViewEasing, type PanoViewLimits, type PanoViewLookToOptions, type PanoViewNavigationOptions, type PanoViewNavigationResult, PanoViewer, type PanoViewerHandle, type PanoViewerProps, type PanoViewerState, type PanoWheelEvent, type PanoramaControlsOptions, type PanoramaPointerEvent, type PointHotspotDefinition, type PointHotspotDefinitionBase, PolygonHotspot, type PolygonHotspotDefinition, type PolygonHotspotProps, type PolygonValidationCode, type PolygonValidationIssue, type PolygonVerticesChangeEvent, PolylineHotspot, type PolylineHotspotDefinition, type PolylineHotspotProps, type PolylineValidationIssue, type PolylineVerticesChangeEvent, type PopupAssetUrlContext, type PopupAssetUrlResolver, type ProjectCustomActionEvent, type ProjectCustomHotspotAction, type ProjectHotspotAction, type ProjectHotspotClickEvent, type ProjectHotspotDefinition, type ProjectHotspotErrorEvent, type ProjectHotspotEvent, type ProjectHotspotRenderContext, type ProjectHotspotTrigger, type ProjectPopupBlock, type ProjectPopupDefinition, type ProjectPopupRequestEvent, ProjectScenes, type ProjectScenesProps, type RectangleGraphic, type ResolvedOverlayAnchor, type RingGraphic, type Scene, type SceneFromViewerConfigOptions, type SceneTransition, type SceneTransitionEndEvent, type SceneTransitionErrorEvent, type SceneTransitionPreset, Scenes, type ScenesController, type ScenesProps, type SequenceFrameDirection, type SequenceFrameEvent, SequenceHotspot, type SequenceHotspotDefinition, type SequenceHotspotErrorEvent, type SequenceHotspotProps, type SequenceLoadProgress, type SequencePlaybackState, type SetPanoViewerOptions, Sphere, type SphereProps, type SphereScene, SphereTile, type SphereTileAddress, type SphereTileLevel, type SphereTileLoadError, type SphereTileMultiresConfig, type SphereTileProps, type SphereTileScene, type SphereViewerConfig, type StarGraphic, type SvgGraphic, type SvgPathGraphic, TextHotspot, type TextHotspotAlign, type TextHotspotDefinition, type TextHotspotFontStyle, type TextHotspotProps, type TextHotspotStyle, type TextHotspotVerticalAlign, type TextHotspotWhiteSpace, Tile, type TileAddress, type TileLoadError, type TileLoadProgress, type TileMultiresConfig, type TileProps, type TileScene, TouchControls, type TouchControlsOptions, type TouchControlsProps, type TriangleGraphic, type UsePanoViewerResult, VideoHotspot, type VideoHotspotDefinition, type VideoHotspotErrorEvent, type VideoHotspotProps, type VideoPlaybackState, type ViewInteractionEvent, type ViewInteractionSource, type ViewerConfig, type ViewerDocument, WEBVR_PROFILES, WEBVR_PROFILE_IDS, WebVR, type WebVRChrome, type WebVRChromeAppearance, type WebVRFrameRate, type WebVRHandle, type WebVRMode, type WebVRProfile, type WebVRProfileId, type WebVRProps, type WebVRSettings, type WebVRState, clampPanoPitch, composePanoContextMenuItems, containRect, containerPointToImage, createDefaultPanoContextMenuItems, createPanoContextMenuPresets, cycleSceneId, headingFromVector, horizontalFov, hotspotAction, imagePointToContainer, isOverlayCorner, loadPanoProject, loadSceneFromJson, normalizePanoPosition, normalizePanoYaw, panoPositionToVector3, parseOverlayAnchor, parsePanoMap, parsePanoProject, projectHotspotTriggers, resolveOverlayAnchor, resolveOverlayToggleIcon, resolvePanoContextMenuEntries, resolvePanoMapAssets, resolveHotspotAssets as resolveProjectHotspotAssets, resolveProjectPopupAssets, sceneFromViewerConfig, sectorRotation, setHotspotAction, unwrapPolygonVertices, usePanoDialogSurface, usePanoEvents, usePanoMediaController, usePanoModal, usePanoOverlay, usePanoSpatialControls, usePanoViewer, validatePolygonVertices, validatePolylineVertices, vector3ToPanoPosition };
2644
+ type WebVRSceneMenuAppearance = {
2645
+ controlColor?: string;
2646
+ controlBackground?: string;
2647
+ controlOpacity?: number;
2648
+ selectionColor?: string;
2649
+ focusColor?: string;
2650
+ /** Shared selected/gaze/focus outline width in reference pixels. Defaults to 4; range 0–8. */
2651
+ selectionWidth?: number;
2652
+ borderRadius?: number;
2653
+ labelColor?: string;
2654
+ labelBackground?: string;
2655
+ fontSize?: number;
2656
+ labelPlacement?: "center" | "bottom";
2657
+ };
2658
+ declare const DEFAULT_WEBVR_SCENE_MENU_APPEARANCE: Required<WebVRSceneMenuAppearance>;
2659
+ type WebVRSceneMenuProps = {
2660
+ items: readonly PanoSceneMenuItem[];
2661
+ activeId?: string | null;
2662
+ onSelect?: (id: string) => void;
2663
+ /** Show an icon for scenes successfully displayed by this viewer. Defaults to false. */
2664
+ showVisited?: boolean;
2665
+ /** Accessible description for visited scenes; never rendered as visible text. */
2666
+ visitedLabel?: string;
2667
+ /** Defaults to the original compact curved grid. */
2668
+ layout?: "compact" | "flat" | "arc";
2669
+ /** All mode grows the row count and ignores rows. Defaults to paged. */
2670
+ displayMode?: "paged" | "all";
2671
+ /** Arc coverage in degrees, 60–360. Defaults to 180. */
2672
+ arcAngle?: number;
2673
+ columns?: number;
2674
+ rows?: number;
2675
+ loop?: boolean;
2676
+ closeOnSelect?: boolean;
2677
+ follow?: boolean;
2678
+ navigationPitch?: number;
2679
+ distance?: number;
2680
+ scale?: number;
2681
+ fadeDurationMs?: number;
2682
+ showTitles?: boolean;
2683
+ appearance?: WebVRSceneMenuAppearance;
2684
+ };
2685
+ /** Native spatial UI. Mount beside WebVR and Scenes inside PanoViewer. */
2686
+ declare function WebVRSceneMenu(props: WebVRSceneMenuProps): react.JSX.Element | null;
2687
+
2688
+ export { type ArrowGraphic, type AssetUrlContext, type AssetUrlResolver, AudioHotspot, type AudioHotspotDefinition, type AudioHotspotErrorEvent, type AudioHotspotProps, type AudioPlaybackState, AutoRotate, type AutoRotateProps, BackgroundAudio, type BackgroundAudioController, type BackgroundAudioErrorEvent, type BackgroundAudioProps, type BackgroundAudioSnapshot, type BackgroundAudioSource, type CircleGraphic, type CubeFaceCode, type CubemapViewerConfig, DEFAULT_HOTSPOT_TOOLTIP_APPEARANCE, DEFAULT_HOTSPOT_TOOLTIP_OFFSET, DEFAULT_PANO_CURSORS, DEFAULT_PANO_SCENE_MENU_APPEARANCE, DEFAULT_PANO_VIDEO_CAPTION_APPEARANCE, DEFAULT_PANO_VIDEO_CONTROLS_APPEARANCE, DEFAULT_PANO_VIDEO_PLAYBACK_RATES, DEFAULT_WEBVR_CHROME_APPEARANCE, DEFAULT_WEBVR_CURSOR_DWELL_MS, DEFAULT_WEBVR_SCENE_MENU_APPEARANCE, type DiamondGraphic, EMPTY_WEBVR_STATE, type GraphicDefinition, GraphicHotspot, type GraphicHotspotDefinition, type GraphicHotspotProps, Gyro, type GyroHandle, type GyroProps, type GyroTouchMode, type HotspotCommonProps, type HotspotDefinition, type HotspotDefinitionBase, type HotspotDragEvent, type HotspotInputSource, type HotspotInteractionEvent, type HotspotMode, type HotspotPointerEvents, type HotspotPosition, type HotspotScaleMode, type HotspotTooltipAppearance, type HotspotTooltipContent, type HotspotTooltipPlacement, type HotspotTooltipScaleMode, type HotspotTooltipTrigger, IframeHotspot, type IframeHotspotDefinition, type IframeHotspotProps, type IframePointerPolicy, ImageHotspot, type ImageHotspotDefinition, type ImageHotspotProps, type JsonObject, type JsonRequestOptions, type JsonValue, type KeyboardControlAction, type KeyboardControlKeys, KeyboardControls, type KeyboardControlsProps, type LoadPanoProjectOptions, type LoadSceneFromJsonOptions, type LoadedPanoProject, type LoadedProjectScene, MAX_HOTSPOT_PITCH, MIN_PANO_CONTEXT_MENU_BACKGROUND_OPACITY, type MouseControlButton, MouseControls, type MouseControlsOptions, type MouseControlsProps, PANO_FILTER_PRESETS, PANO_OVERLAY_ALIGNS, type PanoColorMatrix, PanoContextMenu, type PanoContextMenuActionItem, type PanoContextMenuAppearance, type PanoContextMenuEntry, type PanoContextMenuItem, type PanoContextMenuPresetActions, type PanoContextMenuPresetId, type PanoContextMenuPresetRef, type PanoContextMenuPresets, type PanoContextMenuProps, type PanoContextMenuRenderProps, type PanoContextMenuSelectContext, type PanoContextMenuSeparatorItem, type PanoControlAction, PanoControlButton, PanoControlGroup, type PanoControlGroupProps, type PanoCursor, type PanoCursors, PanoDataError, type PanoDataErrorCode, PanoDialogSurfaceContext, type PanoDragMotion, type PanoEventBus, type PanoEventListener, type PanoEventMap, type PanoEventType, PanoEvents, type PanoEventsProps, PanoFilter, type PanoFilterPreset, type PanoFilterProps, PanoMap, type PanoMapControlsDefinition, type PanoMapDefinition, type PanoMapDialogPresentation, type PanoMapEditChange, type PanoMapGradientStop, PanoMapOverlay, type PanoMapOverlayProps, type PanoMapPanelPresentation, type PanoMapPresentation, type PanoMapProps, type PanoMapSectorDefinition, type PanoMapSectorGradient, type PanoMapSpotDefinition, type PanoMediaActivationControls, type PanoMediaActivationOptions, type PanoMediaController, PanoMediaControls, PanoModelControls, PanoOverlay, type PanoOverlayAlign, type PanoOverlayAnchor, type PanoOverlayAxis, type PanoOverlayChevron, type PanoOverlayCollapseEdge, type PanoOverlayContentAlign, type PanoOverlayInset, PanoOverlayPortalProvider, type PanoOverlayProps, type PanoOverlayRenderContext, type PanoOverlayToggle, type PanoOverlayToggleState, type PanoProjectDefinition, type PanoProjectSceneDefinition, type PanoResizeEvent, PanoSceneMenu, type PanoSceneMenuAppearance, type PanoSceneMenuItem, type PanoSceneMenuLabelAlign, type PanoSceneMenuProps, PanoScrollControls, type PanoSpatialControlAdapter, PanoSpatialControls, type PanoSpatialControlsProps, PanoVideo, type PanoVideoCaptionAppearance, type PanoVideoController, PanoVideoControls, type PanoVideoControlsAppearance, type PanoVideoControlsProps, type PanoVideoErrorEvent, type PanoVideoErrorSource, type PanoVideoPlaybackSnapshot, type PanoVideoProps, type PanoVideoSource, type PanoVideoTrack, type PanoVideoTrackKind, type PanoVideoVariant, type PanoViewEasing, type PanoViewLimits, type PanoViewLookToOptions, type PanoViewNavigationOptions, type PanoViewNavigationResult, PanoViewer, type PanoViewerHandle, type PanoViewerProps, type PanoViewerState, type PanoWheelEvent, type PanoramaControlsOptions, type PanoramaPointerEvent, type PointHotspotDefinition, type PointHotspotDefinitionBase, PolygonHotspot, type PolygonHotspotDefinition, type PolygonHotspotProps, type PolygonValidationCode, type PolygonValidationIssue, type PolygonVerticesChangeEvent, PolylineHotspot, type PolylineHotspotDefinition, type PolylineHotspotProps, type PolylineValidationIssue, type PolylineVerticesChangeEvent, type PopupAssetUrlContext, type PopupAssetUrlResolver, type ProjectCustomActionEvent, type ProjectCustomHotspotAction, type ProjectHotspotAction, type ProjectHotspotClickEvent, type ProjectHotspotDefinition, type ProjectHotspotErrorEvent, type ProjectHotspotEvent, type ProjectHotspotRenderContext, type ProjectHotspotTrigger, type ProjectPopupBlock, type ProjectPopupDefinition, type ProjectPopupRequestEvent, ProjectScenes, type ProjectScenesProps, type RectangleGraphic, type ResolvedOverlayAnchor, type RingGraphic, type Scene, type SceneFromViewerConfigOptions, type SceneTransition, type SceneTransitionEndEvent, type SceneTransitionErrorEvent, type SceneTransitionPreset, Scenes, type ScenesController, type ScenesProps, type SequenceFrameDirection, type SequenceFrameEvent, SequenceHotspot, type SequenceHotspotDefinition, type SequenceHotspotErrorEvent, type SequenceHotspotProps, type SequenceLoadProgress, type SequencePlaybackState, type SetPanoViewerOptions, Sphere, type SphereProps, type SphereScene, SphereTile, type SphereTileAddress, type SphereTileLevel, type SphereTileLoadError, type SphereTileMultiresConfig, type SphereTileProps, type SphereTileScene, type SphereViewerConfig, type StarGraphic, type SvgGraphic, type SvgPathGraphic, TextHotspot, type TextHotspotAlign, type TextHotspotDefinition, type TextHotspotFontStyle, type TextHotspotProps, type TextHotspotStyle, type TextHotspotVerticalAlign, type TextHotspotWhiteSpace, Tile, type TileAddress, type TileLoadError, type TileLoadProgress, type TileMultiresConfig, type TileProps, type TileScene, TouchControls, type TouchControlsOptions, type TouchControlsProps, type TriangleGraphic, type UsePanoViewerResult, VideoHotspot, type VideoHotspotDefinition, type VideoHotspotErrorEvent, type VideoHotspotProps, type VideoPlaybackState, type ViewInteractionEvent, type ViewInteractionSource, type ViewerConfig, type ViewerDocument, WEBVR_PROFILES, WEBVR_PROFILE_IDS, WebVR, type WebVRChrome, type WebVRChromeAppearance, type WebVRFrameRate, type WebVRHandle, type WebVRInputState, type WebVRInteractionMode, type WebVRMode, type WebVRProfile, type WebVRProfileId, type WebVRProps, WebVRSceneMenu, type WebVRSceneMenuAppearance, type WebVRSceneMenuProps, type WebVRSettings, type WebVRState, clampPanoPitch, composePanoContextMenuItems, containRect, containerPointToImage, createDefaultPanoContextMenuItems, createPanoContextMenuPresets, cycleSceneId, headingFromVector, horizontalFov, hotspotAction, imagePointToContainer, isOverlayCorner, loadPanoProject, loadSceneFromJson, normalizePanoPosition, normalizePanoYaw, panoPositionToVector3, parseOverlayAnchor, parsePanoMap, parsePanoProject, projectHotspotTriggers, resolveOverlayAnchor, resolveOverlayToggleIcon, resolvePanoContextMenuEntries, resolvePanoMapAssets, resolveHotspotAssets as resolveProjectHotspotAssets, resolveProjectPopupAssets, sceneFromViewerConfig, sectorRotation, setHotspotAction, unwrapPolygonVertices, usePanoDialogSurface, usePanoEvents, usePanoMediaController, usePanoModal, usePanoOverlay, usePanoSpatialControls, usePanoViewer, validatePolygonVertices, validatePolylineVertices, vector3ToPanoPosition };