@ericchen1990/pano-view 3.4.2 → 3.5.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/README.md +522 -73
- package/README.zh-CN.md +490 -71
- package/dist/data.cjs +903 -0
- package/dist/data.cjs.map +1 -0
- package/dist/data.d.mts +499 -0
- package/dist/data.d.ts +499 -0
- package/dist/data.mjs +880 -0
- package/dist/data.mjs.map +1 -0
- package/dist/index.cjs +8901 -8569
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.mts +600 -458
- package/dist/index.d.ts +600 -458
- package/dist/index.mjs +8980 -8646
- package/dist/index.mjs.map +1 -1
- package/package.json +12 -5
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as react from 'react';
|
|
2
|
-
import { CSSProperties, ReactNode, ComponentPropsWithoutRef,
|
|
2
|
+
import { CSSProperties, ReactNode, ComponentPropsWithoutRef, IframeHTMLAttributes, RefObject } from 'react';
|
|
3
3
|
import { Texture, ColorRepresentation, Vector3 } from 'three';
|
|
4
4
|
|
|
5
5
|
declare const MAX_HOTSPOT_PITCH = 90;
|
|
@@ -805,6 +805,573 @@ declare const PanoViewer: react.ForwardRefExoticComponent<Omit<Omit<react.Detail
|
|
|
805
805
|
dpr?: number | [number, number];
|
|
806
806
|
} & react.RefAttributes<PanoViewerHandle>>;
|
|
807
807
|
|
|
808
|
+
type PanoDataErrorCode = "INVALID_OPTIONS" | "FETCH_FAILED" | "HTTP_ERROR" | "INVALID_JSON" | "INVALID_CONFIG" | "UNSUPPORTED_SCHEMA_VERSION" | "UNSUPPORTED_PROJECTION" | "INVALID_PROJECT" | "INVALID_REFERENCE" | "ABORTED";
|
|
809
|
+
declare class PanoDataError extends Error {
|
|
810
|
+
readonly code: PanoDataErrorCode;
|
|
811
|
+
readonly status?: number;
|
|
812
|
+
readonly sceneId?: string;
|
|
813
|
+
readonly field?: string;
|
|
814
|
+
readonly cause?: unknown;
|
|
815
|
+
constructor(code: PanoDataErrorCode, message: string, details?: {
|
|
816
|
+
status?: number;
|
|
817
|
+
sceneId?: string;
|
|
818
|
+
field?: string;
|
|
819
|
+
cause?: unknown;
|
|
820
|
+
});
|
|
821
|
+
}
|
|
822
|
+
|
|
823
|
+
/** The portable rendering contract shared by the converter and browser viewer. */
|
|
824
|
+
type ViewerCubeFace = "f" | "r" | "b" | "l" | "u" | "d";
|
|
825
|
+
type CubemapViewerConfig = {
|
|
826
|
+
type: "tile";
|
|
827
|
+
multires: {
|
|
828
|
+
tileSize: number;
|
|
829
|
+
levels: number[];
|
|
830
|
+
};
|
|
831
|
+
urlTemplate: string;
|
|
832
|
+
previewUrl: string;
|
|
833
|
+
previewFaceOrder: ViewerCubeFace[];
|
|
834
|
+
};
|
|
835
|
+
type SphereViewerConfig = {
|
|
836
|
+
type: "sphereTile";
|
|
837
|
+
multires: {
|
|
838
|
+
tileSize: number;
|
|
839
|
+
levels: {
|
|
840
|
+
width: number;
|
|
841
|
+
height: number;
|
|
842
|
+
}[];
|
|
843
|
+
};
|
|
844
|
+
urlTemplate: string;
|
|
845
|
+
previewUrl: string;
|
|
846
|
+
indexBase: 0 | 1;
|
|
847
|
+
};
|
|
848
|
+
type ViewerConfig = CubemapViewerConfig | SphereViewerConfig;
|
|
849
|
+
type ViewerDocument = ViewerConfig & {
|
|
850
|
+
schemaVersion: 1;
|
|
851
|
+
};
|
|
852
|
+
|
|
853
|
+
type SceneTransitionPreset = "none" | "crossfade" | "zoom" | "blackout" | "whiteFlash" | "slideRightToLeft" | "slideTopToBottom" | "slideDiagonal" | "circleOpen" | "verticalOpen" | "horizontalOpen" | "ellipticZoomOpen" | "pixelate" | "gridWipe" | "gridWipeUp" | "gridWipeRight" | "gridWipeDiagonal" | "gridWipeCenter" | "gridWipeChecker" | "dissolve" | "shatter" | "particles" | "glitch" | "swirl" | "clockWipe" | "ripple" | "zoomBlur" | "hexDissolve" | "filmBurn";
|
|
854
|
+
type SceneTransition = SceneTransitionPreset | {
|
|
855
|
+
preset: SceneTransitionPreset;
|
|
856
|
+
/** Overrides the preset default duration in seconds. */
|
|
857
|
+
duration?: number;
|
|
858
|
+
};
|
|
859
|
+
|
|
860
|
+
type CubeFaceCode = "f" | "r" | "b" | "l" | "u" | "d";
|
|
861
|
+
type TileAddress = {
|
|
862
|
+
face: CubeFaceCode;
|
|
863
|
+
level: number;
|
|
864
|
+
row: number;
|
|
865
|
+
col: number;
|
|
866
|
+
faceSize: number;
|
|
867
|
+
tileSize: number;
|
|
868
|
+
width: number;
|
|
869
|
+
height: number;
|
|
870
|
+
};
|
|
871
|
+
type TileMultiresConfig = {
|
|
872
|
+
tileSize: number;
|
|
873
|
+
/** Ascending face sizes. The first value maps to l1. */
|
|
874
|
+
levels: number[];
|
|
875
|
+
};
|
|
876
|
+
type TileLoadProgress = {
|
|
877
|
+
requested: number;
|
|
878
|
+
loaded: number;
|
|
879
|
+
failed: number;
|
|
880
|
+
active: number;
|
|
881
|
+
queued: number;
|
|
882
|
+
};
|
|
883
|
+
type TileLoadError = {
|
|
884
|
+
address: TileAddress;
|
|
885
|
+
url: string;
|
|
886
|
+
error: unknown;
|
|
887
|
+
};
|
|
888
|
+
type TileProps = {
|
|
889
|
+
baseUrl: string;
|
|
890
|
+
/**
|
|
891
|
+
* Tile size followed by ascending cube-face sizes (`TILESIZE,LEVELSIZE1,...`).
|
|
892
|
+
* For krpano output, copy `image.cube.multires` from the XML.
|
|
893
|
+
*/
|
|
894
|
+
multires: string | TileMultiresConfig;
|
|
895
|
+
/**
|
|
896
|
+
* Preview atlas path. Relative paths resolve against `baseUrl`; root-absolute
|
|
897
|
+
* and `http(s)` / `blob:` / `data:` URLs are used as-is. For krpano output,
|
|
898
|
+
* copy `<preview url>` (often `preview.jpg` at the scene root). This package's
|
|
899
|
+
* common cube atlas path is `previews/cube-vertical.webp`.
|
|
900
|
+
*/
|
|
901
|
+
previewUrl: string;
|
|
902
|
+
/**
|
|
903
|
+
* Face order in the vertical preview atlas, from top to bottom. Defaults to
|
|
904
|
+
* `l/f/r/b/u/d`, matching krpano `preview.striporder` `LFRBUD`.
|
|
905
|
+
*/
|
|
906
|
+
previewFaceOrder?: readonly CubeFaceCode[];
|
|
907
|
+
/**
|
|
908
|
+
* Path relative to `baseUrl`. Defaults to
|
|
909
|
+
* `tiles/%s/l%l/%v/l%l_%s_%h_%v.webp`. For krpano output, copy `<cube url>`
|
|
910
|
+
* from the XML; krpano templates often use `%v_%h` instead of this default
|
|
911
|
+
* `%h_%v`, so omitting `urlTemplate` requests the wrong files. Supports
|
|
912
|
+
* krpano cube-tile `%s` and `%l` placeholders, horizontal `%h`/`%x`/`%u`/`%c`,
|
|
913
|
+
* vertical `%v`/`%y`/`%w`/`%r`, and index padding such as `%0h` or `%00v`.
|
|
914
|
+
*/
|
|
915
|
+
urlTemplate?: string;
|
|
916
|
+
/** Returns a relative path or absolute URL; takes precedence over `urlTemplate`. */
|
|
917
|
+
resolveTileUrl?: (address: TileAddress) => string;
|
|
918
|
+
maxTextureMemoryMb?: number;
|
|
919
|
+
maxConcurrentLoads?: number;
|
|
920
|
+
retryCount?: number;
|
|
921
|
+
/**
|
|
922
|
+
* `preview` loads only the preview atlas; `base` also preloads the visible
|
|
923
|
+
* lowest-resolution tiles before full-resolution loading begins.
|
|
924
|
+
*/
|
|
925
|
+
loadMode?: "full" | "preview" | "base";
|
|
926
|
+
/** Keeps the source mounted for preloading without drawing it. */
|
|
927
|
+
visible?: boolean;
|
|
928
|
+
/** Called when the preview atlas is ready for display. */
|
|
929
|
+
onReady?: () => void;
|
|
930
|
+
/** Called when the preview atlas cannot be loaded. */
|
|
931
|
+
onPreviewError?: (error: unknown) => void;
|
|
932
|
+
onLoadProgress?: (progress: TileLoadProgress) => void;
|
|
933
|
+
onTileError?: (event: TileLoadError) => void;
|
|
934
|
+
onLevelChange?: (level: number) => void;
|
|
935
|
+
};
|
|
936
|
+
|
|
937
|
+
type SphereTileLevel = {
|
|
938
|
+
width: number;
|
|
939
|
+
height: number;
|
|
940
|
+
};
|
|
941
|
+
type SphereTileMultiresConfig = {
|
|
942
|
+
tileSize: number;
|
|
943
|
+
/** Ascending image dimensions. The first item maps to level 0. */
|
|
944
|
+
levels: SphereTileLevel[];
|
|
945
|
+
};
|
|
946
|
+
type SphereTileAddress = {
|
|
947
|
+
/** Zero-based logical level, column and row; URL indices add indexBase. */
|
|
948
|
+
level: number;
|
|
949
|
+
col: number;
|
|
950
|
+
row: number;
|
|
951
|
+
imageWidth: number;
|
|
952
|
+
imageHeight: number;
|
|
953
|
+
tileSize: number;
|
|
954
|
+
/** Actual tile dimensions, including partial edge tiles. */
|
|
955
|
+
width: number;
|
|
956
|
+
height: number;
|
|
957
|
+
};
|
|
958
|
+
type SphereTileLoadError = {
|
|
959
|
+
address: SphereTileAddress;
|
|
960
|
+
url: string;
|
|
961
|
+
error: unknown;
|
|
962
|
+
};
|
|
963
|
+
type SphereTileProps = {
|
|
964
|
+
baseUrl: string;
|
|
965
|
+
/** `512,500x250,1000x500,2000x1000` or explicit ascending dimensions. */
|
|
966
|
+
multires: string | SphereTileMultiresConfig;
|
|
967
|
+
/** A 2:1 equirectangular preview, resolved relative to baseUrl. */
|
|
968
|
+
previewUrl: string;
|
|
969
|
+
/** Defaults to `tiles/%l/%h_%v.webp`. No tile overlap. */
|
|
970
|
+
urlTemplate?: string;
|
|
971
|
+
/** URL indices start at 1 for krpano (default), or 0 for raw Sharp Deep Zoom. */
|
|
972
|
+
indexBase?: 0 | 1;
|
|
973
|
+
/** Takes precedence over urlTemplate and indexBase. Receives zero-based addresses. */
|
|
974
|
+
resolveTileUrl?: (address: SphereTileAddress) => string;
|
|
975
|
+
/** Horizontal source rotation in degrees. Defaults to 0. */
|
|
976
|
+
yawOffset?: number;
|
|
977
|
+
/** Tile cache budget in MiB. Defaults to 128. Preview memory is separate. */
|
|
978
|
+
maxTextureMemoryMb?: number;
|
|
979
|
+
/** Defaults to 4. */
|
|
980
|
+
maxConcurrentLoads?: number;
|
|
981
|
+
/** Retries after the initial attempt. Defaults to 1. */
|
|
982
|
+
retryCount?: number;
|
|
983
|
+
loadMode?: "full" | "preview" | "base";
|
|
984
|
+
visible?: boolean;
|
|
985
|
+
/** First paintable preview or tile is ready, even if the preview failed. */
|
|
986
|
+
onReady?: () => void;
|
|
987
|
+
onPreviewError?: (error: unknown) => void;
|
|
988
|
+
onLoadProgress?: (progress: TileLoadProgress) => void;
|
|
989
|
+
onTileError?: (event: SphereTileLoadError) => void;
|
|
990
|
+
/** Zero-based selected level. */
|
|
991
|
+
onLevelChange?: (level: number) => void;
|
|
992
|
+
};
|
|
993
|
+
|
|
994
|
+
type SphereScene = {
|
|
995
|
+
id: string;
|
|
996
|
+
type: "sphere";
|
|
997
|
+
src: string;
|
|
998
|
+
previewUrl: string;
|
|
999
|
+
yawOffset?: number;
|
|
1000
|
+
};
|
|
1001
|
+
type TileScene = Omit<TileProps, "loadMode" | "visible" | "onReady" | "onPreviewError" | "onLoadProgress" | "onTileError" | "onLevelChange"> & {
|
|
1002
|
+
id: string;
|
|
1003
|
+
type: "tile";
|
|
1004
|
+
};
|
|
1005
|
+
type SphereTileScene = Omit<SphereTileProps, "loadMode" | "visible" | "onReady" | "onPreviewError" | "onLoadProgress" | "onTileError" | "onLevelChange"> & {
|
|
1006
|
+
id: string;
|
|
1007
|
+
type: "sphereTile";
|
|
1008
|
+
};
|
|
1009
|
+
type Scene = SphereScene | TileScene | SphereTileScene;
|
|
1010
|
+
type SceneTransitionEndEvent = {
|
|
1011
|
+
previousSceneId: string;
|
|
1012
|
+
sceneId: string;
|
|
1013
|
+
preset: SceneTransitionPreset;
|
|
1014
|
+
};
|
|
1015
|
+
type SceneTransitionErrorEvent = {
|
|
1016
|
+
sceneId: string;
|
|
1017
|
+
error: unknown;
|
|
1018
|
+
};
|
|
1019
|
+
type ScenesProps = {
|
|
1020
|
+
scenes: readonly Scene[];
|
|
1021
|
+
/**
|
|
1022
|
+
* Controlled scene id. When provided, the parent owns the active scene.
|
|
1023
|
+
* Imperative `setScene` / `nextScene` / `previousScene` will call
|
|
1024
|
+
* `onActiveSceneIdChange` so the parent can update its state.
|
|
1025
|
+
*/
|
|
1026
|
+
activeSceneId?: string;
|
|
1027
|
+
/**
|
|
1028
|
+
* Uncontrolled initial scene id. Used when `activeSceneId` is omitted.
|
|
1029
|
+
* Imperative calls update the internal state directly.
|
|
1030
|
+
*/
|
|
1031
|
+
defaultActiveSceneId?: string;
|
|
1032
|
+
/** Called when imperative scene methods request a scene change in controlled mode. */
|
|
1033
|
+
onActiveSceneIdChange?: (id: string) => void;
|
|
1034
|
+
transition?: SceneTransition;
|
|
1035
|
+
/** Rendered only after a scene has finished transitioning in. */
|
|
1036
|
+
renderHotspots?: (scene: Scene) => ReactNode;
|
|
1037
|
+
/** First paintable scene, or an incoming scene taking over after snapshot capture.
|
|
1038
|
+
* The transition may still be running, and full detail may still be loading.
|
|
1039
|
+
* Safe to apply the incoming camera view here.
|
|
1040
|
+
*/
|
|
1041
|
+
onSceneReady?: (sceneId: string) => void;
|
|
1042
|
+
/**
|
|
1043
|
+
* Extra milliseconds to hold the outgoing snapshot after it is captured and the
|
|
1044
|
+
* incoming scene has switched to full detail. `0` (default) starts the blend
|
|
1045
|
+
* immediately and keeps loading detail during it. A positive value starts the
|
|
1046
|
+
* blend early when the current view is already sharp, otherwise it waits at
|
|
1047
|
+
* most this long. The wait is separate from the blend duration. Negative and
|
|
1048
|
+
* non-finite values are treated as `0`. `transition="none"` cuts over directly
|
|
1049
|
+
* once the same condition is met.
|
|
1050
|
+
*/
|
|
1051
|
+
transitionWaitForDetailMs?: number;
|
|
1052
|
+
onTransitionEnd?: (event: SceneTransitionEndEvent) => void;
|
|
1053
|
+
onTransitionError?: (event: SceneTransitionErrorEvent) => void;
|
|
1054
|
+
/** Viewer-wide budget shared by every tile scene. Defaults to 128 MiB. */
|
|
1055
|
+
maxTextureMemoryMb?: number;
|
|
1056
|
+
/** Viewer-wide tile request limit. Defaults to 4. */
|
|
1057
|
+
maxConcurrentTileLoads?: number;
|
|
1058
|
+
/** Maximum physical-pixel area of the outgoing GPU snapshot. */
|
|
1059
|
+
snapshotMaxPixels?: number;
|
|
1060
|
+
};
|
|
1061
|
+
declare function Scenes({ maxTextureMemoryMb, maxConcurrentTileLoads, activeSceneId: controlledId, defaultActiveSceneId, onActiveSceneIdChange, scenes, ...rest }: ScenesProps): react.JSX.Element;
|
|
1062
|
+
|
|
1063
|
+
type AssetUrlContext = {
|
|
1064
|
+
defaultUrl: string;
|
|
1065
|
+
kind: "tile" | "preview" | "hotspot";
|
|
1066
|
+
sceneId: string;
|
|
1067
|
+
hotspotId?: string;
|
|
1068
|
+
};
|
|
1069
|
+
type AssetUrlResolver = (path: string, context: AssetUrlContext) => string;
|
|
1070
|
+
type JsonRequestOptions = {
|
|
1071
|
+
requestInit?: Pick<RequestInit, "headers" | "credentials" | "signal">;
|
|
1072
|
+
};
|
|
1073
|
+
type SceneFromViewerConfigOptions = {
|
|
1074
|
+
id: string;
|
|
1075
|
+
baseUrl: string;
|
|
1076
|
+
resolveAssetUrl?: AssetUrlResolver;
|
|
1077
|
+
};
|
|
1078
|
+
type LoadSceneFromJsonOptions = Omit<SceneFromViewerConfigOptions, "baseUrl"> & JsonRequestOptions & {
|
|
1079
|
+
baseUrl?: string;
|
|
1080
|
+
};
|
|
1081
|
+
declare function sceneFromViewerConfig(value: unknown, options: SceneFromViewerConfigOptions): TileScene | SphereTileScene;
|
|
1082
|
+
declare function loadSceneFromJson(url: string, options: LoadSceneFromJsonOptions): Promise<TileScene | SphereTileScene>;
|
|
1083
|
+
|
|
1084
|
+
type GraphicPaint = {
|
|
1085
|
+
fill?: string;
|
|
1086
|
+
stroke?: string;
|
|
1087
|
+
strokeWidth?: number;
|
|
1088
|
+
};
|
|
1089
|
+
type CircleGraphic = GraphicPaint & {
|
|
1090
|
+
kind: "circle";
|
|
1091
|
+
};
|
|
1092
|
+
type TriangleGraphic = GraphicPaint & {
|
|
1093
|
+
kind: "triangle";
|
|
1094
|
+
};
|
|
1095
|
+
type DiamondGraphic = GraphicPaint & {
|
|
1096
|
+
kind: "diamond";
|
|
1097
|
+
};
|
|
1098
|
+
type StarGraphic = GraphicPaint & {
|
|
1099
|
+
kind: "star";
|
|
1100
|
+
};
|
|
1101
|
+
type ArrowGraphic = GraphicPaint & {
|
|
1102
|
+
kind: "arrow";
|
|
1103
|
+
};
|
|
1104
|
+
type RectangleGraphic = GraphicPaint & {
|
|
1105
|
+
kind: "rectangle";
|
|
1106
|
+
/** Relative radius from 0 (square corners) to 0.5 (maximum rounded corners). */
|
|
1107
|
+
cornerRadius?: number;
|
|
1108
|
+
};
|
|
1109
|
+
type RingGraphic = GraphicPaint & {
|
|
1110
|
+
kind: "ring";
|
|
1111
|
+
innerRadius?: number;
|
|
1112
|
+
};
|
|
1113
|
+
type SvgGraphic = {
|
|
1114
|
+
kind: "svg";
|
|
1115
|
+
src: string;
|
|
1116
|
+
};
|
|
1117
|
+
type SvgPathGraphic = GraphicPaint & {
|
|
1118
|
+
kind: "path";
|
|
1119
|
+
path: string;
|
|
1120
|
+
viewBox: [x: number, y: number, width: number, height: number];
|
|
1121
|
+
};
|
|
1122
|
+
type GraphicDefinition = CircleGraphic | TriangleGraphic | DiamondGraphic | StarGraphic | ArrowGraphic | RectangleGraphic | RingGraphic | SvgGraphic | SvgPathGraphic;
|
|
1123
|
+
type GraphicHotspotProps = HotspotCommonProps & {
|
|
1124
|
+
graphic: GraphicDefinition;
|
|
1125
|
+
onLoad?: (texture: Texture) => void;
|
|
1126
|
+
onError?: (error: unknown) => void;
|
|
1127
|
+
};
|
|
1128
|
+
declare function GraphicHotspot(props: GraphicHotspotProps): react.JSX.Element;
|
|
1129
|
+
|
|
1130
|
+
type IframePointerPolicy = "hotspot" | "content";
|
|
1131
|
+
type IframeHotspotProps = HotspotCommonProps & {
|
|
1132
|
+
src: string;
|
|
1133
|
+
/** Accessible iframe title. Falls back to ariaLabel. */
|
|
1134
|
+
title?: string;
|
|
1135
|
+
sandbox?: string;
|
|
1136
|
+
allow?: string;
|
|
1137
|
+
referrerPolicy?: IframeHTMLAttributes<HTMLIFrameElement>["referrerPolicy"];
|
|
1138
|
+
loading?: "eager" | "lazy";
|
|
1139
|
+
/**
|
|
1140
|
+
* `hotspot` lets panorama pointer events hit the WebGL plane.
|
|
1141
|
+
* `content` makes the embedded page interactive.
|
|
1142
|
+
*/
|
|
1143
|
+
pointerPolicy?: IframePointerPolicy;
|
|
1144
|
+
background?: string;
|
|
1145
|
+
onLoad?: () => void;
|
|
1146
|
+
onError?: (error: unknown) => void;
|
|
1147
|
+
};
|
|
1148
|
+
declare function IframeHotspot({ src, title, sandbox, allow, referrerPolicy, loading, pointerPolicy, background, opacity, width, height, onLoad, onError, interactive, pointerEvents, ...anchorProps }: IframeHotspotProps): react.JSX.Element;
|
|
1149
|
+
|
|
1150
|
+
type TextHotspotAlign = "left" | "center" | "right";
|
|
1151
|
+
type TextHotspotVerticalAlign = "top" | "middle" | "bottom";
|
|
1152
|
+
type TextHotspotWhiteSpace = "normal" | "nowrap";
|
|
1153
|
+
type TextHotspotFontStyle = "normal" | "italic";
|
|
1154
|
+
/** Serializable typography and panel paint for a text hotspot. */
|
|
1155
|
+
type TextHotspotStyle = {
|
|
1156
|
+
fontFamily?: string;
|
|
1157
|
+
/** Canvas pixels. Defaults to 96. */
|
|
1158
|
+
fontSize?: number;
|
|
1159
|
+
/** CSS font-weight. Defaults to 600. */
|
|
1160
|
+
fontWeight?: number | string;
|
|
1161
|
+
/** CSS font-style. Defaults to `"normal"`. */
|
|
1162
|
+
fontStyle?: TextHotspotFontStyle;
|
|
1163
|
+
color?: string;
|
|
1164
|
+
/** CSS color. An empty string skips the panel fill. */
|
|
1165
|
+
background?: string;
|
|
1166
|
+
backgroundOpacity?: number;
|
|
1167
|
+
/** Fraction of the texture's shorter side. */
|
|
1168
|
+
padding?: number;
|
|
1169
|
+
align?: TextHotspotAlign;
|
|
1170
|
+
verticalAlign?: TextHotspotVerticalAlign;
|
|
1171
|
+
lineHeight?: number;
|
|
1172
|
+
whiteSpace?: TextHotspotWhiteSpace;
|
|
1173
|
+
/** Fraction of the texture's shorter side, from 0 to 0.5. */
|
|
1174
|
+
borderRadius?: number;
|
|
1175
|
+
stroke?: string;
|
|
1176
|
+
strokeWidth?: number;
|
|
1177
|
+
};
|
|
1178
|
+
type TextHotspotProps = HotspotCommonProps & TextHotspotStyle & {
|
|
1179
|
+
text: string;
|
|
1180
|
+
onLoad?: (texture: Texture) => void;
|
|
1181
|
+
onError?: (error: unknown) => void;
|
|
1182
|
+
};
|
|
1183
|
+
declare function TextHotspot({ text, width, height, opacity, fontFamily, fontSize, fontWeight, fontStyle, color, background, backgroundOpacity, padding, align, verticalAlign, lineHeight, whiteSpace, borderRadius, stroke, strokeWidth, onLoad, onError, ...anchorProps }: TextHotspotProps): react.JSX.Element;
|
|
1184
|
+
|
|
1185
|
+
/** Shared serializable fields for every saved hotspot definition. */
|
|
1186
|
+
type HotspotDefinitionBase = {
|
|
1187
|
+
id: string;
|
|
1188
|
+
/** Human-readable label; use it as the source for the rendered ariaLabel. */
|
|
1189
|
+
label?: string;
|
|
1190
|
+
visible?: boolean;
|
|
1191
|
+
interactive?: boolean;
|
|
1192
|
+
/** Pointer hit-testing. `"none"` ignores mouse, touch, and pen. */
|
|
1193
|
+
pointerEvents?: HotspotPointerEvents;
|
|
1194
|
+
/** Canvas cursor while this hotspot is hovered. */
|
|
1195
|
+
cursor?: CSSProperties["cursor"];
|
|
1196
|
+
renderOrder?: number;
|
|
1197
|
+
tooltip?: string | HotspotTooltipContent;
|
|
1198
|
+
tooltipTrigger?: HotspotTooltipTrigger;
|
|
1199
|
+
tooltipPlacement?: HotspotTooltipPlacement;
|
|
1200
|
+
tooltipOffset?: number;
|
|
1201
|
+
tooltipAppearance?: HotspotTooltipAppearance;
|
|
1202
|
+
};
|
|
1203
|
+
/** Shared serializable fields for a hotspot anchored at one yaw/pitch point. */
|
|
1204
|
+
type PointHotspotDefinitionBase = HotspotDefinitionBase & {
|
|
1205
|
+
position: HotspotPosition;
|
|
1206
|
+
width?: number;
|
|
1207
|
+
height?: number;
|
|
1208
|
+
scale?: number;
|
|
1209
|
+
mode?: HotspotMode;
|
|
1210
|
+
distance?: number;
|
|
1211
|
+
scaleMode?: HotspotScaleMode;
|
|
1212
|
+
referenceFov?: number;
|
|
1213
|
+
rotation?: number;
|
|
1214
|
+
opacity?: number;
|
|
1215
|
+
};
|
|
1216
|
+
type ImageHotspotDefinition = PointHotspotDefinitionBase & {
|
|
1217
|
+
type: "image";
|
|
1218
|
+
src: string;
|
|
1219
|
+
};
|
|
1220
|
+
type GraphicHotspotDefinition = PointHotspotDefinitionBase & {
|
|
1221
|
+
type: "graphic";
|
|
1222
|
+
graphic: GraphicDefinition;
|
|
1223
|
+
};
|
|
1224
|
+
type SequenceHotspotDefinition = PointHotspotDefinitionBase & {
|
|
1225
|
+
type: "sequence";
|
|
1226
|
+
src: string;
|
|
1227
|
+
frameCount: number;
|
|
1228
|
+
frameDirection?: "horizontal" | "vertical";
|
|
1229
|
+
playing?: boolean;
|
|
1230
|
+
fps?: number;
|
|
1231
|
+
loop?: boolean;
|
|
1232
|
+
};
|
|
1233
|
+
type VideoHotspotDefinition = PointHotspotDefinitionBase & {
|
|
1234
|
+
type: "video";
|
|
1235
|
+
src: string;
|
|
1236
|
+
poster?: string;
|
|
1237
|
+
playing?: boolean;
|
|
1238
|
+
loop?: boolean;
|
|
1239
|
+
muted?: boolean;
|
|
1240
|
+
volume?: number;
|
|
1241
|
+
playsInline?: boolean;
|
|
1242
|
+
preload?: "none" | "metadata" | "auto";
|
|
1243
|
+
crossOrigin?: "" | "anonymous" | "use-credentials";
|
|
1244
|
+
};
|
|
1245
|
+
type AudioHotspotDefinition = PointHotspotDefinitionBase & {
|
|
1246
|
+
type: "audio";
|
|
1247
|
+
src: string | string[];
|
|
1248
|
+
playing?: boolean;
|
|
1249
|
+
loop?: boolean;
|
|
1250
|
+
muted?: boolean;
|
|
1251
|
+
volume?: number;
|
|
1252
|
+
pauseWhenHidden?: boolean;
|
|
1253
|
+
range?: number;
|
|
1254
|
+
icon?: string;
|
|
1255
|
+
playingIcon?: string;
|
|
1256
|
+
marker?: boolean;
|
|
1257
|
+
crossOrigin?: "" | "anonymous" | "use-credentials";
|
|
1258
|
+
};
|
|
1259
|
+
type TextHotspotDefinition = PointHotspotDefinitionBase & TextHotspotStyle & {
|
|
1260
|
+
type: "text";
|
|
1261
|
+
text: string;
|
|
1262
|
+
};
|
|
1263
|
+
type IframeHotspotDefinition = PointHotspotDefinitionBase & {
|
|
1264
|
+
type: "iframe";
|
|
1265
|
+
src: string;
|
|
1266
|
+
title?: string;
|
|
1267
|
+
sandbox?: string;
|
|
1268
|
+
allow?: string;
|
|
1269
|
+
referrerPolicy?: string;
|
|
1270
|
+
loading?: "eager" | "lazy";
|
|
1271
|
+
pointerPolicy?: IframePointerPolicy;
|
|
1272
|
+
background?: string;
|
|
1273
|
+
};
|
|
1274
|
+
type PolygonHotspotDefinition = HotspotDefinitionBase & {
|
|
1275
|
+
type: "polygon";
|
|
1276
|
+
vertices: HotspotPosition[];
|
|
1277
|
+
fill?: string;
|
|
1278
|
+
fillOpacity?: number;
|
|
1279
|
+
stroke?: string;
|
|
1280
|
+
strokeWidth?: number;
|
|
1281
|
+
strokeOpacity?: number;
|
|
1282
|
+
strokeDashSize?: number;
|
|
1283
|
+
strokeGapSize?: number;
|
|
1284
|
+
};
|
|
1285
|
+
/** An open path. This extends the original point and polygon hotspot categories. */
|
|
1286
|
+
type PolylineHotspotDefinition = HotspotDefinitionBase & {
|
|
1287
|
+
type: "polyline";
|
|
1288
|
+
vertices: HotspotPosition[];
|
|
1289
|
+
stroke?: string;
|
|
1290
|
+
strokeWidth?: number;
|
|
1291
|
+
strokeOpacity?: number;
|
|
1292
|
+
strokeDashSize?: number;
|
|
1293
|
+
strokeGapSize?: number;
|
|
1294
|
+
};
|
|
1295
|
+
type PointHotspotDefinition = ImageHotspotDefinition | GraphicHotspotDefinition | SequenceHotspotDefinition | VideoHotspotDefinition | AudioHotspotDefinition | TextHotspotDefinition | IframeHotspotDefinition;
|
|
1296
|
+
/** A serializable, discriminated hotspot collection item. */
|
|
1297
|
+
type HotspotDefinition = PointHotspotDefinition | PolygonHotspotDefinition | PolylineHotspotDefinition;
|
|
1298
|
+
|
|
1299
|
+
type ProjectHotspotDefinition = HotspotDefinition & {
|
|
1300
|
+
action?: {
|
|
1301
|
+
type: "scene";
|
|
1302
|
+
sceneId: string;
|
|
1303
|
+
};
|
|
1304
|
+
};
|
|
1305
|
+
|
|
1306
|
+
type PanoProjectSceneDefinition = {
|
|
1307
|
+
id: string;
|
|
1308
|
+
title?: string;
|
|
1309
|
+
source: ({
|
|
1310
|
+
viewerUrl: string;
|
|
1311
|
+
viewerConfig?: never;
|
|
1312
|
+
} | {
|
|
1313
|
+
viewerConfig: ViewerConfig;
|
|
1314
|
+
viewerUrl?: never;
|
|
1315
|
+
}) & {
|
|
1316
|
+
baseUrl?: string;
|
|
1317
|
+
};
|
|
1318
|
+
initialView?: Partial<PanoViewerState>;
|
|
1319
|
+
hotspots?: ProjectHotspotDefinition[];
|
|
1320
|
+
};
|
|
1321
|
+
type PanoProjectDefinition = {
|
|
1322
|
+
schemaVersion: 1;
|
|
1323
|
+
title?: string;
|
|
1324
|
+
initialSceneId?: string;
|
|
1325
|
+
scenes: PanoProjectSceneDefinition[];
|
|
1326
|
+
};
|
|
1327
|
+
type LoadedProjectScene = {
|
|
1328
|
+
scene: TileScene | SphereTileScene;
|
|
1329
|
+
title?: string;
|
|
1330
|
+
initialView?: PanoViewerState;
|
|
1331
|
+
hotspots: ProjectHotspotDefinition[];
|
|
1332
|
+
};
|
|
1333
|
+
type LoadedPanoProject = {
|
|
1334
|
+
title?: string;
|
|
1335
|
+
initialSceneId: string;
|
|
1336
|
+
scenes: LoadedProjectScene[];
|
|
1337
|
+
};
|
|
1338
|
+
type LoadPanoProjectOptions = JsonRequestOptions & {
|
|
1339
|
+
/** Directory used for project-relative references. Required for object input. */
|
|
1340
|
+
baseUrl?: string;
|
|
1341
|
+
resolveAssetUrl?: AssetUrlResolver;
|
|
1342
|
+
};
|
|
1343
|
+
declare function parsePanoProject(value: unknown): PanoProjectDefinition;
|
|
1344
|
+
declare function loadPanoProject(source: string | PanoProjectDefinition, options?: LoadPanoProjectOptions): Promise<LoadedPanoProject>;
|
|
1345
|
+
|
|
1346
|
+
type ProjectHotspotClickEvent = {
|
|
1347
|
+
sceneId: string;
|
|
1348
|
+
hotspot: ProjectHotspotDefinition;
|
|
1349
|
+
interaction: HotspotInteractionEvent;
|
|
1350
|
+
defaultPrevented: boolean;
|
|
1351
|
+
preventDefault: () => void;
|
|
1352
|
+
};
|
|
1353
|
+
type ProjectHotspotErrorEvent = {
|
|
1354
|
+
sceneId: string;
|
|
1355
|
+
hotspot: ProjectHotspotDefinition;
|
|
1356
|
+
error: unknown;
|
|
1357
|
+
};
|
|
1358
|
+
type ProjectHotspotRenderContext = {
|
|
1359
|
+
sceneId: string;
|
|
1360
|
+
playing: boolean;
|
|
1361
|
+
onClick: (event: HotspotInteractionEvent) => void;
|
|
1362
|
+
togglePlayback: () => void;
|
|
1363
|
+
reportError: (error: unknown) => void;
|
|
1364
|
+
renderDefault: () => ReactNode;
|
|
1365
|
+
};
|
|
1366
|
+
type ProjectScenesProps = Omit<ScenesProps, "scenes" | "defaultActiveSceneId" | "renderHotspots"> & {
|
|
1367
|
+
project: LoadedPanoProject;
|
|
1368
|
+
onHotspotClick?: (event: ProjectHotspotClickEvent) => void;
|
|
1369
|
+
onHotspotError?: (event: ProjectHotspotErrorEvent) => void;
|
|
1370
|
+
/** Return undefined for the default renderer, or null to hide this hotspot. */
|
|
1371
|
+
renderHotspot?: (hotspot: ProjectHotspotDefinition, context: ProjectHotspotRenderContext) => ReactNode;
|
|
1372
|
+
};
|
|
1373
|
+
declare function ProjectScenes({ project, activeSceneId, onActiveSceneIdChange, onSceneReady, onHotspotClick, onHotspotError, renderHotspot, ...options }: ProjectScenesProps): react.JSX.Element;
|
|
1374
|
+
|
|
808
1375
|
/** Options for automatic horizontal panorama rotation. */
|
|
809
1376
|
type AutoRotateProps = {
|
|
810
1377
|
/** Whether automatic rotation is active. Defaults to true. */
|
|
@@ -1119,140 +1686,6 @@ type TouchControlsProps = TouchControlsOptions;
|
|
|
1119
1686
|
*/
|
|
1120
1687
|
declare function TouchControls({ enabled, rotateSpeed, invert, pinchZoom, }: TouchControlsProps): null;
|
|
1121
1688
|
|
|
1122
|
-
type CubeFaceCode = "f" | "r" | "b" | "l" | "u" | "d";
|
|
1123
|
-
type TileAddress = {
|
|
1124
|
-
face: CubeFaceCode;
|
|
1125
|
-
level: number;
|
|
1126
|
-
row: number;
|
|
1127
|
-
col: number;
|
|
1128
|
-
faceSize: number;
|
|
1129
|
-
tileSize: number;
|
|
1130
|
-
width: number;
|
|
1131
|
-
height: number;
|
|
1132
|
-
};
|
|
1133
|
-
type TileMultiresConfig = {
|
|
1134
|
-
tileSize: number;
|
|
1135
|
-
/** Ascending face sizes. The first value maps to l1. */
|
|
1136
|
-
levels: number[];
|
|
1137
|
-
};
|
|
1138
|
-
type TileLoadProgress = {
|
|
1139
|
-
requested: number;
|
|
1140
|
-
loaded: number;
|
|
1141
|
-
failed: number;
|
|
1142
|
-
active: number;
|
|
1143
|
-
queued: number;
|
|
1144
|
-
};
|
|
1145
|
-
type TileLoadError = {
|
|
1146
|
-
address: TileAddress;
|
|
1147
|
-
url: string;
|
|
1148
|
-
error: unknown;
|
|
1149
|
-
};
|
|
1150
|
-
type TileProps = {
|
|
1151
|
-
baseUrl: string;
|
|
1152
|
-
/**
|
|
1153
|
-
* Tile size followed by ascending cube-face sizes (`TILESIZE,LEVELSIZE1,...`).
|
|
1154
|
-
* For krpano output, copy `image.cube.multires` from the XML.
|
|
1155
|
-
*/
|
|
1156
|
-
multires: string | TileMultiresConfig;
|
|
1157
|
-
/**
|
|
1158
|
-
* Preview atlas path. Relative paths resolve against `baseUrl`; root-absolute
|
|
1159
|
-
* and `http(s)` / `blob:` / `data:` URLs are used as-is. For krpano output,
|
|
1160
|
-
* copy `<preview url>` (often `preview.jpg` at the scene root). This package's
|
|
1161
|
-
* common cube atlas path is `previews/cube-vertical.webp`.
|
|
1162
|
-
*/
|
|
1163
|
-
previewUrl: string;
|
|
1164
|
-
/**
|
|
1165
|
-
* Face order in the vertical preview atlas, from top to bottom. Defaults to
|
|
1166
|
-
* `l/f/r/b/u/d`, matching krpano `preview.striporder` `LFRBUD`.
|
|
1167
|
-
*/
|
|
1168
|
-
previewFaceOrder?: readonly CubeFaceCode[];
|
|
1169
|
-
/**
|
|
1170
|
-
* Path relative to `baseUrl`. Defaults to
|
|
1171
|
-
* `tiles/%s/l%l/%v/l%l_%s_%h_%v.webp`. For krpano output, copy `<cube url>`
|
|
1172
|
-
* from the XML; krpano templates often use `%v_%h` instead of this default
|
|
1173
|
-
* `%h_%v`, so omitting `urlTemplate` requests the wrong files. Supports
|
|
1174
|
-
* krpano cube-tile `%s` and `%l` placeholders, horizontal `%h`/`%x`/`%u`/`%c`,
|
|
1175
|
-
* vertical `%v`/`%y`/`%w`/`%r`, and index padding such as `%0h` or `%00v`.
|
|
1176
|
-
*/
|
|
1177
|
-
urlTemplate?: string;
|
|
1178
|
-
/** Returns a path relative to `baseUrl`; takes precedence over `urlTemplate`. */
|
|
1179
|
-
resolveTileUrl?: (address: TileAddress) => string;
|
|
1180
|
-
maxTextureMemoryMb?: number;
|
|
1181
|
-
maxConcurrentLoads?: number;
|
|
1182
|
-
retryCount?: number;
|
|
1183
|
-
/**
|
|
1184
|
-
* `preview` loads only the preview atlas; `base` also preloads the visible
|
|
1185
|
-
* lowest-resolution tiles before full-resolution loading begins.
|
|
1186
|
-
*/
|
|
1187
|
-
loadMode?: "full" | "preview" | "base";
|
|
1188
|
-
/** Keeps the source mounted for preloading without drawing it. */
|
|
1189
|
-
visible?: boolean;
|
|
1190
|
-
/** Called when the preview atlas is ready for display. */
|
|
1191
|
-
onReady?: () => void;
|
|
1192
|
-
/** Called when the preview atlas cannot be loaded. */
|
|
1193
|
-
onPreviewError?: (error: unknown) => void;
|
|
1194
|
-
onLoadProgress?: (progress: TileLoadProgress) => void;
|
|
1195
|
-
onTileError?: (event: TileLoadError) => void;
|
|
1196
|
-
onLevelChange?: (level: number) => void;
|
|
1197
|
-
};
|
|
1198
|
-
|
|
1199
|
-
type SphereTileLevel = {
|
|
1200
|
-
width: number;
|
|
1201
|
-
height: number;
|
|
1202
|
-
};
|
|
1203
|
-
type SphereTileMultiresConfig = {
|
|
1204
|
-
tileSize: number;
|
|
1205
|
-
/** Ascending image dimensions. The first item maps to level 0. */
|
|
1206
|
-
levels: SphereTileLevel[];
|
|
1207
|
-
};
|
|
1208
|
-
type SphereTileAddress = {
|
|
1209
|
-
/** Zero-based logical level, column and row; URL indices add indexBase. */
|
|
1210
|
-
level: number;
|
|
1211
|
-
col: number;
|
|
1212
|
-
row: number;
|
|
1213
|
-
imageWidth: number;
|
|
1214
|
-
imageHeight: number;
|
|
1215
|
-
tileSize: number;
|
|
1216
|
-
/** Actual tile dimensions, including partial edge tiles. */
|
|
1217
|
-
width: number;
|
|
1218
|
-
height: number;
|
|
1219
|
-
};
|
|
1220
|
-
type SphereTileLoadError = {
|
|
1221
|
-
address: SphereTileAddress;
|
|
1222
|
-
url: string;
|
|
1223
|
-
error: unknown;
|
|
1224
|
-
};
|
|
1225
|
-
type SphereTileProps = {
|
|
1226
|
-
baseUrl: string;
|
|
1227
|
-
/** `512,500x250,1000x500,2000x1000` or explicit ascending dimensions. */
|
|
1228
|
-
multires: string | SphereTileMultiresConfig;
|
|
1229
|
-
/** A 2:1 equirectangular preview, resolved relative to baseUrl. */
|
|
1230
|
-
previewUrl: string;
|
|
1231
|
-
/** Defaults to `tiles/%l/%h_%v.webp`. No tile overlap. */
|
|
1232
|
-
urlTemplate?: string;
|
|
1233
|
-
/** URL indices start at 1 for krpano (default), or 0 for raw Sharp Deep Zoom. */
|
|
1234
|
-
indexBase?: 0 | 1;
|
|
1235
|
-
/** Takes precedence over urlTemplate and indexBase. Receives zero-based addresses. */
|
|
1236
|
-
resolveTileUrl?: (address: SphereTileAddress) => string;
|
|
1237
|
-
/** Horizontal source rotation in degrees. Defaults to 0. */
|
|
1238
|
-
yawOffset?: number;
|
|
1239
|
-
/** Tile cache budget in MiB. Defaults to 128. Preview memory is separate. */
|
|
1240
|
-
maxTextureMemoryMb?: number;
|
|
1241
|
-
/** Defaults to 4. */
|
|
1242
|
-
maxConcurrentLoads?: number;
|
|
1243
|
-
/** Retries after the initial attempt. Defaults to 1. */
|
|
1244
|
-
retryCount?: number;
|
|
1245
|
-
loadMode?: "full" | "preview" | "base";
|
|
1246
|
-
visible?: boolean;
|
|
1247
|
-
/** First paintable preview or tile is ready, even if the preview failed. */
|
|
1248
|
-
onReady?: () => void;
|
|
1249
|
-
onPreviewError?: (error: unknown) => void;
|
|
1250
|
-
onLoadProgress?: (progress: TileLoadProgress) => void;
|
|
1251
|
-
onTileError?: (event: SphereTileLoadError) => void;
|
|
1252
|
-
/** Zero-based selected level. */
|
|
1253
|
-
onLevelChange?: (level: number) => void;
|
|
1254
|
-
};
|
|
1255
|
-
|
|
1256
1689
|
declare function SphereTile({ multires, ...props }: SphereTileProps): react.JSX.Element;
|
|
1257
1690
|
|
|
1258
1691
|
type SphereProps = {
|
|
@@ -1306,114 +1739,38 @@ type PanoVideoProps = {
|
|
|
1306
1739
|
* Keep playback in the page. Defaults to true, including the WebKit and
|
|
1307
1740
|
* X5 attributes for iPhone Safari, WeChat, QQ, and UC.
|
|
1308
1741
|
*/
|
|
1309
|
-
playsInline?: boolean;
|
|
1310
|
-
preload?: "none" | "metadata" | "auto";
|
|
1311
|
-
crossOrigin?: "" | "anonymous" | "use-credentials";
|
|
1312
|
-
playbackRates?: readonly number[];
|
|
1313
|
-
/** Keeps the source mounted for preloading without drawing it. */
|
|
1314
|
-
visible?: boolean;
|
|
1315
|
-
onLoad?: () => void;
|
|
1316
|
-
onError?: (event: PanoVideoErrorEvent) => void;
|
|
1317
|
-
onPlaybackStateChange?: (state: VideoPlaybackState) => void;
|
|
1318
|
-
onEnded?: () => void;
|
|
1319
|
-
onVariantChange?: (id: string) => void;
|
|
1320
|
-
onTrackChange?: (id: string | null) => void;
|
|
1321
|
-
};
|
|
1322
|
-
/**
|
|
1323
|
-
* Equirectangular 360 video mapped onto the panorama sphere. Mount inside
|
|
1324
|
-
* PanoViewer. Default playback chrome and captions portal to the viewer overlay.
|
|
1325
|
-
*/
|
|
1326
|
-
declare function PanoVideo({ src, poster, variants: variantsProp, defaultVariantId, tracks: tracksProp, captions, controls, yawOffset, loop, muted, volume, autoPlay, playsInline, preload, crossOrigin, playbackRates, visible, onLoad, onError, onPlaybackStateChange, onEnded, onVariantChange, onTrackChange, }: PanoVideoProps): react.JSX.Element | null;
|
|
1327
|
-
|
|
1328
|
-
declare const DEFAULT_PANO_VIDEO_CONTROLS_APPEARANCE: Required<PanoVideoControlsAppearance>;
|
|
1329
|
-
type PanoVideoControlsProps = {
|
|
1330
|
-
appearance?: PanoVideoControlsAppearance;
|
|
1331
|
-
};
|
|
1332
|
-
/**
|
|
1333
|
-
* Claims the default playback chrome slot for a custom replacement.
|
|
1334
|
-
* Render inside PanoViewer when overriding the built-in controls.
|
|
1335
|
-
*/
|
|
1336
|
-
declare function PanoVideoControls({ appearance }: PanoVideoControlsProps): null;
|
|
1337
|
-
|
|
1338
|
-
declare const DEFAULT_PANO_VIDEO_PLAYBACK_RATES: readonly [0.5, 1, 1.25, 1.5, 2];
|
|
1339
|
-
|
|
1340
|
-
declare const DEFAULT_PANO_VIDEO_CAPTION_APPEARANCE: Required<PanoVideoCaptionAppearance>;
|
|
1341
|
-
|
|
1342
|
-
type SceneTransitionPreset = "none" | "crossfade" | "zoom" | "blackout" | "whiteFlash" | "slideRightToLeft" | "slideTopToBottom" | "slideDiagonal" | "circleOpen" | "verticalOpen" | "horizontalOpen" | "ellipticZoomOpen" | "pixelate" | "gridWipe" | "gridWipeUp" | "gridWipeRight" | "gridWipeDiagonal" | "gridWipeCenter" | "gridWipeChecker" | "dissolve" | "shatter" | "particles" | "glitch" | "swirl" | "clockWipe" | "ripple" | "zoomBlur" | "hexDissolve" | "filmBurn";
|
|
1343
|
-
type SceneTransition = SceneTransitionPreset | {
|
|
1344
|
-
preset: SceneTransitionPreset;
|
|
1345
|
-
/** Overrides the preset default duration in seconds. */
|
|
1346
|
-
duration?: number;
|
|
1347
|
-
};
|
|
1348
|
-
|
|
1349
|
-
type SphereScene = {
|
|
1350
|
-
id: string;
|
|
1351
|
-
type: "sphere";
|
|
1352
|
-
src: string;
|
|
1353
|
-
previewUrl: string;
|
|
1354
|
-
yawOffset?: number;
|
|
1355
|
-
};
|
|
1356
|
-
type TileScene = Omit<TileProps, "loadMode" | "visible" | "onReady" | "onPreviewError" | "onLoadProgress" | "onTileError" | "onLevelChange"> & {
|
|
1357
|
-
id: string;
|
|
1358
|
-
type: "tile";
|
|
1359
|
-
};
|
|
1360
|
-
type SphereTileScene = Omit<SphereTileProps, "loadMode" | "visible" | "onReady" | "onPreviewError" | "onLoadProgress" | "onTileError" | "onLevelChange"> & {
|
|
1361
|
-
id: string;
|
|
1362
|
-
type: "sphereTile";
|
|
1363
|
-
};
|
|
1364
|
-
type Scene = SphereScene | TileScene | SphereTileScene;
|
|
1365
|
-
type SceneTransitionEndEvent = {
|
|
1366
|
-
previousSceneId: string;
|
|
1367
|
-
sceneId: string;
|
|
1368
|
-
preset: SceneTransitionPreset;
|
|
1369
|
-
};
|
|
1370
|
-
type SceneTransitionErrorEvent = {
|
|
1371
|
-
sceneId: string;
|
|
1372
|
-
error: unknown;
|
|
1373
|
-
};
|
|
1374
|
-
type ScenesProps = {
|
|
1375
|
-
scenes: readonly Scene[];
|
|
1376
|
-
/**
|
|
1377
|
-
* Controlled scene id. When provided, the parent owns the active scene.
|
|
1378
|
-
* Imperative `setScene` / `nextScene` / `previousScene` will call
|
|
1379
|
-
* `onActiveSceneIdChange` so the parent can update its state.
|
|
1380
|
-
*/
|
|
1381
|
-
activeSceneId?: string;
|
|
1382
|
-
/**
|
|
1383
|
-
* Uncontrolled initial scene id. Used when `activeSceneId` is omitted.
|
|
1384
|
-
* Imperative calls update the internal state directly.
|
|
1385
|
-
*/
|
|
1386
|
-
defaultActiveSceneId?: string;
|
|
1387
|
-
/** Called when imperative scene methods request a scene change in controlled mode. */
|
|
1388
|
-
onActiveSceneIdChange?: (id: string) => void;
|
|
1389
|
-
transition?: SceneTransition;
|
|
1390
|
-
/** Rendered only after a scene has finished transitioning in. */
|
|
1391
|
-
renderHotspots?: (scene: Scene) => ReactNode;
|
|
1392
|
-
/** First paintable scene, or an incoming scene taking over after snapshot capture.
|
|
1393
|
-
* The transition may still be running, and full detail may still be loading.
|
|
1394
|
-
* Safe to apply the incoming camera view here.
|
|
1395
|
-
*/
|
|
1396
|
-
onSceneReady?: (sceneId: string) => void;
|
|
1397
|
-
/**
|
|
1398
|
-
* Extra milliseconds to hold the outgoing snapshot after it is captured and the
|
|
1399
|
-
* incoming scene has switched to full detail. `0` (default) starts the blend
|
|
1400
|
-
* immediately and keeps loading detail during it. A positive value starts the
|
|
1401
|
-
* blend early when the current view is already sharp, otherwise it waits at
|
|
1402
|
-
* most this long. The wait is separate from the blend duration. Negative and
|
|
1403
|
-
* non-finite values are treated as `0`. `transition="none"` cuts over directly
|
|
1404
|
-
* once the same condition is met.
|
|
1405
|
-
*/
|
|
1406
|
-
transitionWaitForDetailMs?: number;
|
|
1407
|
-
onTransitionEnd?: (event: SceneTransitionEndEvent) => void;
|
|
1408
|
-
onTransitionError?: (event: SceneTransitionErrorEvent) => void;
|
|
1409
|
-
/** Viewer-wide budget shared by every tile scene. Defaults to 128 MiB. */
|
|
1410
|
-
maxTextureMemoryMb?: number;
|
|
1411
|
-
/** Viewer-wide tile request limit. Defaults to 4. */
|
|
1412
|
-
maxConcurrentTileLoads?: number;
|
|
1413
|
-
/** Maximum physical-pixel area of the outgoing GPU snapshot. */
|
|
1414
|
-
snapshotMaxPixels?: number;
|
|
1742
|
+
playsInline?: boolean;
|
|
1743
|
+
preload?: "none" | "metadata" | "auto";
|
|
1744
|
+
crossOrigin?: "" | "anonymous" | "use-credentials";
|
|
1745
|
+
playbackRates?: readonly number[];
|
|
1746
|
+
/** Keeps the source mounted for preloading without drawing it. */
|
|
1747
|
+
visible?: boolean;
|
|
1748
|
+
onLoad?: () => void;
|
|
1749
|
+
onError?: (event: PanoVideoErrorEvent) => void;
|
|
1750
|
+
onPlaybackStateChange?: (state: VideoPlaybackState) => void;
|
|
1751
|
+
onEnded?: () => void;
|
|
1752
|
+
onVariantChange?: (id: string) => void;
|
|
1753
|
+
onTrackChange?: (id: string | null) => void;
|
|
1415
1754
|
};
|
|
1416
|
-
|
|
1755
|
+
/**
|
|
1756
|
+
* Equirectangular 360 video mapped onto the panorama sphere. Mount inside
|
|
1757
|
+
* PanoViewer. Default playback chrome and captions portal to the viewer overlay.
|
|
1758
|
+
*/
|
|
1759
|
+
declare function PanoVideo({ src, poster, variants: variantsProp, defaultVariantId, tracks: tracksProp, captions, controls, yawOffset, loop, muted, volume, autoPlay, playsInline, preload, crossOrigin, playbackRates, visible, onLoad, onError, onPlaybackStateChange, onEnded, onVariantChange, onTrackChange, }: PanoVideoProps): react.JSX.Element | null;
|
|
1760
|
+
|
|
1761
|
+
declare const DEFAULT_PANO_VIDEO_CONTROLS_APPEARANCE: Required<PanoVideoControlsAppearance>;
|
|
1762
|
+
type PanoVideoControlsProps = {
|
|
1763
|
+
appearance?: PanoVideoControlsAppearance;
|
|
1764
|
+
};
|
|
1765
|
+
/**
|
|
1766
|
+
* Claims the default playback chrome slot for a custom replacement.
|
|
1767
|
+
* Render inside PanoViewer when overriding the built-in controls.
|
|
1768
|
+
*/
|
|
1769
|
+
declare function PanoVideoControls({ appearance }: PanoVideoControlsProps): null;
|
|
1770
|
+
|
|
1771
|
+
declare const DEFAULT_PANO_VIDEO_PLAYBACK_RATES: readonly [0.5, 1, 1.25, 1.5, 2];
|
|
1772
|
+
|
|
1773
|
+
declare const DEFAULT_PANO_VIDEO_CAPTION_APPEARANCE: Required<PanoVideoCaptionAppearance>;
|
|
1417
1774
|
|
|
1418
1775
|
type ScenesController = {
|
|
1419
1776
|
setScene: (id: string) => boolean;
|
|
@@ -1497,52 +1854,6 @@ type PolylineHotspotProps = Omit<HotspotCommonProps, "position" | "width" | "hei
|
|
|
1497
1854
|
declare function validatePolylineVertices(vertices: HotspotPosition[]): PolylineValidationIssue[];
|
|
1498
1855
|
declare function PolylineHotspot({ id, vertices, stroke, strokeWidth, strokeOpacity, strokeDashSize, strokeGapSize, renderOrder, draggable, onVerticesChange, onDragStart, onDragEnd, onInvalid, ...anchorProps }: PolylineHotspotProps): react.JSX.Element | null;
|
|
1499
1856
|
|
|
1500
|
-
type GraphicPaint = {
|
|
1501
|
-
fill?: string;
|
|
1502
|
-
stroke?: string;
|
|
1503
|
-
strokeWidth?: number;
|
|
1504
|
-
};
|
|
1505
|
-
type CircleGraphic = GraphicPaint & {
|
|
1506
|
-
kind: "circle";
|
|
1507
|
-
};
|
|
1508
|
-
type TriangleGraphic = GraphicPaint & {
|
|
1509
|
-
kind: "triangle";
|
|
1510
|
-
};
|
|
1511
|
-
type DiamondGraphic = GraphicPaint & {
|
|
1512
|
-
kind: "diamond";
|
|
1513
|
-
};
|
|
1514
|
-
type StarGraphic = GraphicPaint & {
|
|
1515
|
-
kind: "star";
|
|
1516
|
-
};
|
|
1517
|
-
type ArrowGraphic = GraphicPaint & {
|
|
1518
|
-
kind: "arrow";
|
|
1519
|
-
};
|
|
1520
|
-
type RectangleGraphic = GraphicPaint & {
|
|
1521
|
-
kind: "rectangle";
|
|
1522
|
-
/** Relative radius from 0 (square corners) to 0.5 (maximum rounded corners). */
|
|
1523
|
-
cornerRadius?: number;
|
|
1524
|
-
};
|
|
1525
|
-
type RingGraphic = GraphicPaint & {
|
|
1526
|
-
kind: "ring";
|
|
1527
|
-
innerRadius?: number;
|
|
1528
|
-
};
|
|
1529
|
-
type SvgGraphic = {
|
|
1530
|
-
kind: "svg";
|
|
1531
|
-
src: string;
|
|
1532
|
-
};
|
|
1533
|
-
type SvgPathGraphic = GraphicPaint & {
|
|
1534
|
-
kind: "path";
|
|
1535
|
-
path: string;
|
|
1536
|
-
viewBox: [x: number, y: number, width: number, height: number];
|
|
1537
|
-
};
|
|
1538
|
-
type GraphicDefinition = CircleGraphic | TriangleGraphic | DiamondGraphic | StarGraphic | ArrowGraphic | RectangleGraphic | RingGraphic | SvgGraphic | SvgPathGraphic;
|
|
1539
|
-
type GraphicHotspotProps = HotspotCommonProps & {
|
|
1540
|
-
graphic: GraphicDefinition;
|
|
1541
|
-
onLoad?: (texture: Texture) => void;
|
|
1542
|
-
onError?: (error: unknown) => void;
|
|
1543
|
-
};
|
|
1544
|
-
declare function GraphicHotspot(props: GraphicHotspotProps): react.JSX.Element;
|
|
1545
|
-
|
|
1546
1857
|
type SequenceFrameDirection = "horizontal" | "vertical";
|
|
1547
1858
|
type SequenceLoadProgress = {
|
|
1548
1859
|
id: string;
|
|
@@ -1578,61 +1889,6 @@ type SequenceHotspotProps = HotspotCommonProps & {
|
|
|
1578
1889
|
};
|
|
1579
1890
|
declare function SequenceHotspot({ id, src, frameCount: requestedFrameCount, frameDirection, playing, fps, loop, width, height, opacity, onFrameChange, onLoadProgress, onPlaybackStateChange, onEnded, onError, ...anchorProps }: SequenceHotspotProps): react.JSX.Element;
|
|
1580
1891
|
|
|
1581
|
-
type TextHotspotAlign = "left" | "center" | "right";
|
|
1582
|
-
type TextHotspotVerticalAlign = "top" | "middle" | "bottom";
|
|
1583
|
-
type TextHotspotWhiteSpace = "normal" | "nowrap";
|
|
1584
|
-
type TextHotspotFontStyle = "normal" | "italic";
|
|
1585
|
-
/** Serializable typography and panel paint for a text hotspot. */
|
|
1586
|
-
type TextHotspotStyle = {
|
|
1587
|
-
fontFamily?: string;
|
|
1588
|
-
/** Canvas pixels. Defaults to 96. */
|
|
1589
|
-
fontSize?: number;
|
|
1590
|
-
/** CSS font-weight. Defaults to 600. */
|
|
1591
|
-
fontWeight?: number | string;
|
|
1592
|
-
/** CSS font-style. Defaults to `"normal"`. */
|
|
1593
|
-
fontStyle?: TextHotspotFontStyle;
|
|
1594
|
-
color?: string;
|
|
1595
|
-
/** CSS color. An empty string skips the panel fill. */
|
|
1596
|
-
background?: string;
|
|
1597
|
-
backgroundOpacity?: number;
|
|
1598
|
-
/** Fraction of the texture's shorter side. */
|
|
1599
|
-
padding?: number;
|
|
1600
|
-
align?: TextHotspotAlign;
|
|
1601
|
-
verticalAlign?: TextHotspotVerticalAlign;
|
|
1602
|
-
lineHeight?: number;
|
|
1603
|
-
whiteSpace?: TextHotspotWhiteSpace;
|
|
1604
|
-
/** Fraction of the texture's shorter side, from 0 to 0.5. */
|
|
1605
|
-
borderRadius?: number;
|
|
1606
|
-
stroke?: string;
|
|
1607
|
-
strokeWidth?: number;
|
|
1608
|
-
};
|
|
1609
|
-
type TextHotspotProps = HotspotCommonProps & TextHotspotStyle & {
|
|
1610
|
-
text: string;
|
|
1611
|
-
onLoad?: (texture: Texture) => void;
|
|
1612
|
-
onError?: (error: unknown) => void;
|
|
1613
|
-
};
|
|
1614
|
-
declare function TextHotspot({ text, width, height, opacity, fontFamily, fontSize, fontWeight, fontStyle, color, background, backgroundOpacity, padding, align, verticalAlign, lineHeight, whiteSpace, borderRadius, stroke, strokeWidth, onLoad, onError, ...anchorProps }: TextHotspotProps): react.JSX.Element;
|
|
1615
|
-
|
|
1616
|
-
type IframePointerPolicy = "hotspot" | "content";
|
|
1617
|
-
type IframeHotspotProps = HotspotCommonProps & {
|
|
1618
|
-
src: string;
|
|
1619
|
-
/** Accessible iframe title. Falls back to ariaLabel. */
|
|
1620
|
-
title?: string;
|
|
1621
|
-
sandbox?: string;
|
|
1622
|
-
allow?: string;
|
|
1623
|
-
referrerPolicy?: IframeHTMLAttributes<HTMLIFrameElement>["referrerPolicy"];
|
|
1624
|
-
loading?: "eager" | "lazy";
|
|
1625
|
-
/**
|
|
1626
|
-
* `hotspot` lets panorama pointer events hit the WebGL plane.
|
|
1627
|
-
* `content` makes the embedded page interactive.
|
|
1628
|
-
*/
|
|
1629
|
-
pointerPolicy?: IframePointerPolicy;
|
|
1630
|
-
background?: string;
|
|
1631
|
-
onLoad?: () => void;
|
|
1632
|
-
onError?: (error: unknown) => void;
|
|
1633
|
-
};
|
|
1634
|
-
declare function IframeHotspot({ src, title, sandbox, allow, referrerPolicy, loading, pointerPolicy, background, opacity, width, height, onLoad, onError, interactive, pointerEvents, ...anchorProps }: IframeHotspotProps): react.JSX.Element;
|
|
1635
|
-
|
|
1636
1892
|
declare function Tile({ baseUrl, multires, previewUrl, previewFaceOrder, urlTemplate, resolveTileUrl, maxTextureMemoryMb, maxConcurrentLoads, retryCount, loadMode, visible, onReady, onPreviewError, onLoadProgress, onTileError, onLevelChange, }: TileProps): react.JSX.Element;
|
|
1637
1893
|
|
|
1638
1894
|
declare function normalizePanoYaw(yaw: number): number;
|
|
@@ -1644,118 +1900,4 @@ declare function vector3ToPanoPosition(vector: Pick<Vector3, "x" | "y" | "z">):
|
|
|
1644
1900
|
declare const DEFAULT_HOTSPOT_TOOLTIP_OFFSET = 12;
|
|
1645
1901
|
declare const DEFAULT_HOTSPOT_TOOLTIP_APPEARANCE: Required<HotspotTooltipAppearance>;
|
|
1646
1902
|
|
|
1647
|
-
|
|
1648
|
-
type HotspotDefinitionBase = {
|
|
1649
|
-
id: string;
|
|
1650
|
-
/** Human-readable label; use it as the source for the rendered ariaLabel. */
|
|
1651
|
-
label?: string;
|
|
1652
|
-
visible?: boolean;
|
|
1653
|
-
interactive?: boolean;
|
|
1654
|
-
/** Pointer hit-testing. `"none"` ignores mouse, touch, and pen. */
|
|
1655
|
-
pointerEvents?: HotspotPointerEvents;
|
|
1656
|
-
/** Canvas cursor while this hotspot is hovered. */
|
|
1657
|
-
cursor?: CSSProperties["cursor"];
|
|
1658
|
-
renderOrder?: number;
|
|
1659
|
-
tooltip?: string | HotspotTooltipContent;
|
|
1660
|
-
tooltipTrigger?: HotspotTooltipTrigger;
|
|
1661
|
-
tooltipPlacement?: HotspotTooltipPlacement;
|
|
1662
|
-
tooltipOffset?: number;
|
|
1663
|
-
tooltipAppearance?: HotspotTooltipAppearance;
|
|
1664
|
-
};
|
|
1665
|
-
/** Shared serializable fields for a hotspot anchored at one yaw/pitch point. */
|
|
1666
|
-
type PointHotspotDefinitionBase = HotspotDefinitionBase & {
|
|
1667
|
-
position: HotspotPosition;
|
|
1668
|
-
width?: number;
|
|
1669
|
-
height?: number;
|
|
1670
|
-
scale?: number;
|
|
1671
|
-
mode?: HotspotMode;
|
|
1672
|
-
distance?: number;
|
|
1673
|
-
scaleMode?: HotspotScaleMode;
|
|
1674
|
-
referenceFov?: number;
|
|
1675
|
-
rotation?: number;
|
|
1676
|
-
opacity?: number;
|
|
1677
|
-
};
|
|
1678
|
-
type ImageHotspotDefinition = PointHotspotDefinitionBase & {
|
|
1679
|
-
type: "image";
|
|
1680
|
-
src: string;
|
|
1681
|
-
};
|
|
1682
|
-
type GraphicHotspotDefinition = PointHotspotDefinitionBase & {
|
|
1683
|
-
type: "graphic";
|
|
1684
|
-
graphic: GraphicDefinition;
|
|
1685
|
-
};
|
|
1686
|
-
type SequenceHotspotDefinition = PointHotspotDefinitionBase & {
|
|
1687
|
-
type: "sequence";
|
|
1688
|
-
src: string;
|
|
1689
|
-
frameCount: number;
|
|
1690
|
-
frameDirection?: "horizontal" | "vertical";
|
|
1691
|
-
playing?: boolean;
|
|
1692
|
-
fps?: number;
|
|
1693
|
-
loop?: boolean;
|
|
1694
|
-
};
|
|
1695
|
-
type VideoHotspotDefinition = PointHotspotDefinitionBase & {
|
|
1696
|
-
type: "video";
|
|
1697
|
-
src: string;
|
|
1698
|
-
poster?: string;
|
|
1699
|
-
playing?: boolean;
|
|
1700
|
-
loop?: boolean;
|
|
1701
|
-
muted?: boolean;
|
|
1702
|
-
volume?: number;
|
|
1703
|
-
playsInline?: boolean;
|
|
1704
|
-
preload?: "none" | "metadata" | "auto";
|
|
1705
|
-
crossOrigin?: "" | "anonymous" | "use-credentials";
|
|
1706
|
-
};
|
|
1707
|
-
type AudioHotspotDefinition = PointHotspotDefinitionBase & {
|
|
1708
|
-
type: "audio";
|
|
1709
|
-
src: string | string[];
|
|
1710
|
-
playing?: boolean;
|
|
1711
|
-
loop?: boolean;
|
|
1712
|
-
muted?: boolean;
|
|
1713
|
-
volume?: number;
|
|
1714
|
-
pauseWhenHidden?: boolean;
|
|
1715
|
-
range?: number;
|
|
1716
|
-
icon?: string;
|
|
1717
|
-
playingIcon?: string;
|
|
1718
|
-
marker?: boolean;
|
|
1719
|
-
crossOrigin?: "" | "anonymous" | "use-credentials";
|
|
1720
|
-
};
|
|
1721
|
-
type TextHotspotDefinition = PointHotspotDefinitionBase & TextHotspotStyle & {
|
|
1722
|
-
type: "text";
|
|
1723
|
-
text: string;
|
|
1724
|
-
};
|
|
1725
|
-
type IframeHotspotDefinition = PointHotspotDefinitionBase & {
|
|
1726
|
-
type: "iframe";
|
|
1727
|
-
src: string;
|
|
1728
|
-
title?: string;
|
|
1729
|
-
sandbox?: string;
|
|
1730
|
-
allow?: string;
|
|
1731
|
-
referrerPolicy?: string;
|
|
1732
|
-
loading?: "eager" | "lazy";
|
|
1733
|
-
pointerPolicy?: IframePointerPolicy;
|
|
1734
|
-
background?: string;
|
|
1735
|
-
};
|
|
1736
|
-
type PolygonHotspotDefinition = HotspotDefinitionBase & {
|
|
1737
|
-
type: "polygon";
|
|
1738
|
-
vertices: HotspotPosition[];
|
|
1739
|
-
fill?: string;
|
|
1740
|
-
fillOpacity?: number;
|
|
1741
|
-
stroke?: string;
|
|
1742
|
-
strokeWidth?: number;
|
|
1743
|
-
strokeOpacity?: number;
|
|
1744
|
-
strokeDashSize?: number;
|
|
1745
|
-
strokeGapSize?: number;
|
|
1746
|
-
};
|
|
1747
|
-
/** An open path. This extends the original point and polygon hotspot categories. */
|
|
1748
|
-
type PolylineHotspotDefinition = HotspotDefinitionBase & {
|
|
1749
|
-
type: "polyline";
|
|
1750
|
-
vertices: HotspotPosition[];
|
|
1751
|
-
stroke?: string;
|
|
1752
|
-
strokeWidth?: number;
|
|
1753
|
-
strokeOpacity?: number;
|
|
1754
|
-
strokeDashSize?: number;
|
|
1755
|
-
strokeGapSize?: number;
|
|
1756
|
-
};
|
|
1757
|
-
type PointHotspotDefinition = ImageHotspotDefinition | GraphicHotspotDefinition | SequenceHotspotDefinition | VideoHotspotDefinition | AudioHotspotDefinition | TextHotspotDefinition | IframeHotspotDefinition;
|
|
1758
|
-
/** A serializable, discriminated hotspot collection item. */
|
|
1759
|
-
type HotspotDefinition = PointHotspotDefinition | PolygonHotspotDefinition | PolylineHotspotDefinition;
|
|
1760
|
-
|
|
1761
|
-
export { type ArrowGraphic, 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, DEFAULT_HOTSPOT_TOOLTIP_APPEARANCE, DEFAULT_HOTSPOT_TOOLTIP_OFFSET, DEFAULT_PANO_CURSORS, 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, 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 HotspotTooltipTrigger, IframeHotspot, type IframeHotspotDefinition, type IframeHotspotProps, type IframePointerPolicy, ImageHotspot, type ImageHotspotDefinition, type ImageHotspotProps, type KeyboardControlAction, type KeyboardControlKeys, KeyboardControls, type KeyboardControlsProps, MAX_HOTSPOT_PITCH, MIN_PANO_CONTEXT_MENU_BACKGROUND_OPACITY, type MouseControlButton, MouseControls, type MouseControlsOptions, type MouseControlsProps, PANO_FILTER_PRESETS, 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 PanoCursor, type PanoCursors, type PanoEventBus, type PanoEventListener, type PanoEventMap, type PanoEventType, PanoEvents, type PanoEventsProps, PanoFilter, type PanoFilterPreset, type PanoFilterProps, type PanoMediaActivationControls, type PanoMediaActivationOptions, type PanoResizeEvent, 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 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 RectangleGraphic, type RingGraphic, type Scene, 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 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, WEBVR_PROFILES, WEBVR_PROFILE_IDS, WebVR, type WebVRChrome, type WebVRChromeAppearance, type WebVRHandle, type WebVRMode, type WebVRProfile, type WebVRProfileId, type WebVRProps, type WebVRSettings, clampPanoPitch, composePanoContextMenuItems, createDefaultPanoContextMenuItems, createPanoContextMenuPresets, cycleSceneId, normalizePanoPosition, normalizePanoYaw, panoPositionToVector3, resolvePanoContextMenuEntries, unwrapPolygonVertices, usePanoEvents, usePanoViewer, validatePolygonVertices, validatePolylineVertices, vector3ToPanoPosition };
|
|
1903
|
+
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_VIDEO_CAPTION_APPEARANCE, DEFAULT_PANO_VIDEO_CONTROLS_APPEARANCE, DEFAULT_PANO_VIDEO_PLAYBACK_RATES, DEFAULT_WEBVR_CHROME_APPEARANCE, DEFAULT_WEBVR_CURSOR_DWELL_MS, type DiamondGraphic, 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 HotspotTooltipTrigger, IframeHotspot, type IframeHotspotDefinition, type IframeHotspotProps, type IframePointerPolicy, ImageHotspot, type ImageHotspotDefinition, type ImageHotspotProps, type JsonRequestOptions, 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, 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 PanoCursor, type PanoCursors, PanoDataError, type PanoDataErrorCode, type PanoEventBus, type PanoEventListener, type PanoEventMap, type PanoEventType, PanoEvents, type PanoEventsProps, PanoFilter, type PanoFilterPreset, type PanoFilterProps, type PanoMediaActivationControls, type PanoMediaActivationOptions, type PanoProjectDefinition, type PanoProjectSceneDefinition, type PanoResizeEvent, 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 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 ProjectHotspotClickEvent, type ProjectHotspotDefinition, type ProjectHotspotErrorEvent, type ProjectHotspotRenderContext, ProjectScenes, type ProjectScenesProps, type RectangleGraphic, 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 WebVRHandle, type WebVRMode, type WebVRProfile, type WebVRProfileId, type WebVRProps, type WebVRSettings, clampPanoPitch, composePanoContextMenuItems, createDefaultPanoContextMenuItems, createPanoContextMenuPresets, cycleSceneId, loadPanoProject, loadSceneFromJson, normalizePanoPosition, normalizePanoYaw, panoPositionToVector3, parsePanoProject, resolvePanoContextMenuEntries, sceneFromViewerConfig, unwrapPolygonVertices, usePanoEvents, usePanoViewer, validatePolygonVertices, validatePolylineVertices, vector3ToPanoPosition };
|