worldorbit 2.6.0 → 3.0.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 +12 -5
- package/dist/browser/core/dist/atlas-edit.d.ts +11 -0
- package/dist/browser/core/dist/atlas-edit.js +347 -0
- package/dist/browser/core/dist/atlas-utils.d.ts +22 -0
- package/dist/browser/core/dist/atlas-utils.js +189 -0
- package/dist/browser/core/dist/atlas-validate.d.ts +2 -0
- package/dist/browser/core/dist/atlas-validate.js +488 -0
- package/dist/browser/core/dist/diagnostics.d.ts +10 -0
- package/dist/browser/core/dist/diagnostics.js +109 -0
- package/dist/browser/core/dist/draft-parse.d.ts +3 -0
- package/dist/browser/core/dist/draft-parse.js +1654 -0
- package/dist/browser/core/dist/draft.d.ts +21 -0
- package/dist/browser/core/dist/draft.js +482 -0
- package/dist/browser/core/dist/errors.d.ts +7 -0
- package/dist/browser/core/dist/errors.js +16 -0
- package/dist/browser/core/dist/format.d.ts +4 -0
- package/dist/browser/core/dist/format.js +613 -0
- package/dist/browser/core/dist/index.d.ts +29 -0
- package/dist/browser/core/dist/index.js +35 -6542
- package/dist/browser/core/dist/load.d.ts +4 -0
- package/dist/browser/core/dist/load.js +182 -0
- package/dist/browser/core/dist/markdown.d.ts +2 -0
- package/dist/browser/core/dist/markdown.js +37 -0
- package/dist/browser/core/dist/normalize.d.ts +2 -0
- package/dist/browser/core/dist/normalize.js +312 -0
- package/dist/browser/core/dist/parse.d.ts +2 -0
- package/dist/browser/core/dist/parse.js +133 -0
- package/dist/browser/core/dist/scene.d.ts +3 -0
- package/dist/browser/core/dist/scene.js +1901 -0
- package/dist/browser/core/dist/schema.d.ts +8 -0
- package/dist/browser/core/dist/schema.js +298 -0
- package/dist/browser/core/dist/spatial-scene.d.ts +3 -0
- package/dist/browser/core/dist/spatial-scene.js +420 -0
- package/dist/browser/core/dist/tokenize.d.ts +4 -0
- package/dist/browser/core/dist/tokenize.js +68 -0
- package/dist/browser/core/dist/types.d.ts +637 -0
- package/dist/browser/core/dist/types.js +1 -0
- package/dist/browser/core/dist/validate.d.ts +2 -0
- package/dist/browser/core/dist/validate.js +56 -0
- package/dist/browser/editor/dist/editor.d.ts +2 -0
- package/dist/browser/editor/dist/editor.js +3700 -0
- package/dist/browser/editor/dist/index.d.ts +2 -0
- package/dist/browser/editor/dist/index.js +1 -12250
- package/dist/browser/editor/dist/types.d.ts +59 -0
- package/dist/browser/editor/dist/types.js +1 -0
- package/dist/browser/markdown/dist/html.d.ts +3 -0
- package/dist/browser/markdown/dist/html.js +64 -0
- package/dist/browser/markdown/dist/index.d.ts +4 -0
- package/dist/browser/markdown/dist/index.js +3 -6179
- package/dist/browser/markdown/dist/rehype.d.ts +10 -0
- package/dist/browser/markdown/dist/rehype.js +49 -0
- package/dist/browser/markdown/dist/remark.d.ts +9 -0
- package/dist/browser/markdown/dist/remark.js +28 -0
- package/dist/browser/markdown/dist/types.d.ts +11 -0
- package/dist/browser/markdown/dist/types.js +1 -0
- package/dist/browser/viewer/dist/atlas-state.d.ts +12 -0
- package/dist/browser/viewer/dist/atlas-state.js +269 -0
- package/dist/browser/viewer/dist/atlas-viewer.d.ts +2 -0
- package/dist/browser/viewer/dist/atlas-viewer.js +495 -0
- package/dist/browser/viewer/dist/custom-element.d.ts +1 -0
- package/dist/browser/viewer/dist/custom-element.js +78 -0
- package/dist/browser/viewer/dist/embed.d.ts +24 -0
- package/dist/browser/viewer/dist/embed.js +172 -0
- package/dist/browser/viewer/dist/errors.d.ts +6 -0
- package/dist/browser/viewer/dist/errors.js +12 -0
- package/dist/browser/viewer/dist/index.d.ts +10 -0
- package/dist/browser/viewer/dist/index.js +9 -8334
- package/dist/browser/viewer/dist/minimap.d.ts +3 -0
- package/dist/browser/viewer/dist/minimap.js +63 -0
- package/dist/browser/viewer/dist/render.d.ts +6 -0
- package/dist/browser/viewer/dist/render.js +670 -0
- package/dist/browser/viewer/dist/runtime-3d.d.ts +19 -0
- package/dist/browser/viewer/dist/runtime-3d.js +494 -0
- package/dist/browser/viewer/dist/theme.d.ts +4 -0
- package/dist/browser/viewer/dist/theme.js +103 -0
- package/dist/browser/viewer/dist/tooltip.d.ts +3 -0
- package/dist/browser/viewer/dist/tooltip.js +198 -0
- package/dist/browser/viewer/dist/types.d.ts +292 -0
- package/dist/browser/viewer/dist/types.js +1 -0
- package/dist/browser/viewer/dist/vendor/three.module.js +53032 -0
- package/dist/browser/viewer/dist/viewer-state.d.ts +19 -0
- package/dist/browser/viewer/dist/viewer-state.js +162 -0
- package/dist/browser/viewer/dist/viewer.d.ts +2 -0
- package/dist/browser/viewer/dist/viewer.js +1662 -0
- package/dist/unpkg/core/dist/atlas-edit.d.ts +11 -0
- package/dist/unpkg/core/dist/atlas-edit.js +347 -0
- package/dist/unpkg/core/dist/atlas-utils.d.ts +22 -0
- package/dist/unpkg/core/dist/atlas-utils.js +189 -0
- package/dist/unpkg/core/dist/atlas-validate.d.ts +2 -0
- package/dist/unpkg/core/dist/atlas-validate.js +488 -0
- package/dist/unpkg/core/dist/diagnostics.d.ts +10 -0
- package/dist/unpkg/core/dist/diagnostics.js +109 -0
- package/dist/unpkg/core/dist/draft-parse.d.ts +3 -0
- package/dist/unpkg/core/dist/draft-parse.js +1654 -0
- package/dist/unpkg/core/dist/draft.d.ts +21 -0
- package/dist/unpkg/core/dist/draft.js +482 -0
- package/dist/unpkg/core/dist/errors.d.ts +7 -0
- package/dist/unpkg/core/dist/errors.js +16 -0
- package/dist/unpkg/core/dist/format.d.ts +4 -0
- package/dist/unpkg/core/dist/format.js +613 -0
- package/dist/unpkg/core/dist/index.d.ts +29 -0
- package/dist/unpkg/core/dist/index.js +35 -6614
- package/dist/unpkg/core/dist/load.d.ts +4 -0
- package/dist/unpkg/core/dist/load.js +182 -0
- package/dist/unpkg/core/dist/markdown.d.ts +2 -0
- package/dist/unpkg/core/dist/markdown.js +37 -0
- package/dist/unpkg/core/dist/normalize.d.ts +2 -0
- package/dist/unpkg/core/dist/normalize.js +312 -0
- package/dist/unpkg/core/dist/parse.d.ts +2 -0
- package/dist/unpkg/core/dist/parse.js +133 -0
- package/dist/unpkg/core/dist/scene.d.ts +3 -0
- package/dist/unpkg/core/dist/scene.js +1901 -0
- package/dist/unpkg/core/dist/schema.d.ts +8 -0
- package/dist/unpkg/core/dist/schema.js +298 -0
- package/dist/unpkg/core/dist/spatial-scene.d.ts +3 -0
- package/dist/unpkg/core/dist/spatial-scene.js +420 -0
- package/dist/unpkg/core/dist/tokenize.d.ts +4 -0
- package/dist/unpkg/core/dist/tokenize.js +68 -0
- package/dist/unpkg/core/dist/types.d.ts +637 -0
- package/dist/unpkg/core/dist/types.js +1 -0
- package/dist/unpkg/core/dist/validate.d.ts +2 -0
- package/dist/unpkg/core/dist/validate.js +56 -0
- package/dist/unpkg/editor/dist/editor.d.ts +2 -0
- package/dist/unpkg/editor/dist/editor.js +3700 -0
- package/dist/unpkg/editor/dist/index.d.ts +2 -0
- package/dist/unpkg/editor/dist/index.js +1 -12275
- package/dist/unpkg/editor/dist/types.d.ts +59 -0
- package/dist/unpkg/editor/dist/types.js +1 -0
- package/dist/unpkg/markdown/dist/html.d.ts +3 -0
- package/dist/unpkg/markdown/dist/html.js +64 -0
- package/dist/unpkg/markdown/dist/index.d.ts +4 -0
- package/dist/unpkg/markdown/dist/index.js +3 -6207
- package/dist/unpkg/markdown/dist/rehype.d.ts +10 -0
- package/dist/unpkg/markdown/dist/rehype.js +49 -0
- package/dist/unpkg/markdown/dist/remark.d.ts +9 -0
- package/dist/unpkg/markdown/dist/remark.js +28 -0
- package/dist/unpkg/markdown/dist/types.d.ts +11 -0
- package/dist/unpkg/markdown/dist/types.js +1 -0
- package/dist/unpkg/viewer/dist/atlas-state.d.ts +12 -0
- package/dist/unpkg/viewer/dist/atlas-state.js +269 -0
- package/dist/unpkg/viewer/dist/atlas-viewer.d.ts +2 -0
- package/dist/unpkg/viewer/dist/atlas-viewer.js +495 -0
- package/dist/unpkg/viewer/dist/custom-element.d.ts +1 -0
- package/dist/unpkg/viewer/dist/custom-element.js +78 -0
- package/dist/unpkg/viewer/dist/embed.d.ts +24 -0
- package/dist/unpkg/viewer/dist/embed.js +172 -0
- package/dist/unpkg/viewer/dist/errors.d.ts +6 -0
- package/dist/unpkg/viewer/dist/errors.js +12 -0
- package/dist/unpkg/viewer/dist/index.d.ts +10 -0
- package/dist/unpkg/viewer/dist/index.js +9 -8391
- package/dist/unpkg/viewer/dist/minimap.d.ts +3 -0
- package/dist/unpkg/viewer/dist/minimap.js +63 -0
- package/dist/unpkg/viewer/dist/render.d.ts +6 -0
- package/dist/unpkg/viewer/dist/render.js +670 -0
- package/dist/unpkg/viewer/dist/runtime-3d.d.ts +19 -0
- package/dist/unpkg/viewer/dist/runtime-3d.js +494 -0
- package/dist/unpkg/viewer/dist/theme.d.ts +4 -0
- package/dist/unpkg/viewer/dist/theme.js +103 -0
- package/dist/unpkg/viewer/dist/tooltip.d.ts +3 -0
- package/dist/unpkg/viewer/dist/tooltip.js +198 -0
- package/dist/unpkg/viewer/dist/types.d.ts +292 -0
- package/dist/unpkg/viewer/dist/types.js +1 -0
- package/dist/unpkg/viewer/dist/vendor/three.module.js +53032 -0
- package/dist/unpkg/viewer/dist/viewer-state.d.ts +19 -0
- package/dist/unpkg/viewer/dist/viewer-state.js +162 -0
- package/dist/unpkg/viewer/dist/viewer.d.ts +2 -0
- package/dist/unpkg/viewer/dist/viewer.js +1662 -0
- package/dist/unpkg/worldorbit-core.min.js +1 -12
- package/dist/unpkg/worldorbit-editor.min.js +1 -904
- package/dist/unpkg/worldorbit-markdown.min.js +1 -103
- package/dist/unpkg/worldorbit-viewer.min.js +1 -259
- package/dist/unpkg/worldorbit.js +2 -9704
- package/dist/unpkg/worldorbit.min.js +2 -263
- package/package.json +1 -1
- package/packages/core/dist/index.d.ts +1 -0
- package/packages/core/dist/index.js +1 -0
- package/packages/core/dist/spatial-scene.d.ts +3 -0
- package/packages/core/dist/spatial-scene.js +420 -0
- package/packages/core/dist/types.d.ts +105 -0
- package/packages/editor/dist/editor.js +25 -4
- package/packages/editor/dist/types.d.ts +4 -0
- package/packages/markdown/dist/html.js +10 -3
- package/packages/viewer/dist/atlas-state.js +3 -0
- package/packages/viewer/dist/atlas-viewer.js +1 -0
- package/packages/viewer/dist/custom-element.js +18 -4
- package/packages/viewer/dist/embed.d.ts +5 -1
- package/packages/viewer/dist/embed.js +58 -24
- package/packages/viewer/dist/errors.d.ts +6 -0
- package/packages/viewer/dist/errors.js +12 -0
- package/packages/viewer/dist/index.d.ts +1 -0
- package/packages/viewer/dist/index.js +1 -0
- package/packages/viewer/dist/runtime-3d.d.ts +19 -0
- package/packages/viewer/dist/runtime-3d.js +494 -0
- package/packages/viewer/dist/types.d.ts +21 -2
- package/packages/viewer/dist/vendor/three.module.js +53032 -0
- package/packages/viewer/dist/viewer.js +501 -41
|
@@ -1,11 +1,17 @@
|
|
|
1
|
-
import { loadWorldOrbitSource, renderDocumentToScene, } from "@worldorbit/core";
|
|
1
|
+
import { loadWorldOrbitSource, renderDocumentToScene, renderDocumentToSpatialScene, } from "@worldorbit/core";
|
|
2
2
|
import { createEmbedPayload, createWorldOrbitEmbedMarkup, renderSceneToSvg, } from "@worldorbit/viewer";
|
|
3
3
|
export function renderWorldOrbitBlock(source, options = {}) {
|
|
4
4
|
try {
|
|
5
5
|
const loaded = loadWorldOrbitSource(source);
|
|
6
6
|
const scene = renderDocumentToScene(loaded.document, resolveSourceRenderOptions(loaded, options));
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
const mode = options.mode ?? "static";
|
|
8
|
+
if (mode === "interactive" || mode === "interactive-2d" || mode === "interactive-3d") {
|
|
9
|
+
const normalizedMode = mode === "interactive" ? "interactive-2d" : mode;
|
|
10
|
+
return createWorldOrbitEmbedMarkup(createEmbedPayload(scene, normalizedMode, {
|
|
11
|
+
spatialScene: normalizedMode === "interactive-3d"
|
|
12
|
+
? renderDocumentToSpatialScene(loaded.document, resolveSourceRenderOptions(loaded, options))
|
|
13
|
+
: undefined,
|
|
14
|
+
viewMode: normalizedMode === "interactive-3d" ? "3d" : "2d",
|
|
9
15
|
initialViewpointId: options.initialViewpointId,
|
|
10
16
|
initialSelectionObjectId: options.initialSelectionObjectId,
|
|
11
17
|
initialFilter: options.initialFilter ?? null,
|
|
@@ -17,6 +23,7 @@ export function renderWorldOrbitBlock(source, options = {}) {
|
|
|
17
23
|
layers: options.layers,
|
|
18
24
|
subtitle: options.subtitle,
|
|
19
25
|
preset: options.preset,
|
|
26
|
+
viewMode: normalizedMode === "interactive-3d" ? "3d" : "2d",
|
|
20
27
|
initialViewpointId: options.initialViewpointId,
|
|
21
28
|
initialSelectionObjectId: options.initialSelectionObjectId,
|
|
22
29
|
initialFilter: options.initialFilter ?? null,
|
|
@@ -73,6 +73,7 @@ export function createAtlasStateSnapshot(viewerState, renderOptions, filter, vie
|
|
|
73
73
|
layers: renderOptions.layers ? { ...renderOptions.layers } : undefined,
|
|
74
74
|
scaleModel: renderOptions.scaleModel ? { ...renderOptions.scaleModel } : undefined,
|
|
75
75
|
activeEventId: renderOptions.activeEventId ?? null,
|
|
76
|
+
viewMode: renderOptions.viewMode ?? "2d",
|
|
76
77
|
},
|
|
77
78
|
filter: normalizeViewerFilter(filter),
|
|
78
79
|
};
|
|
@@ -102,6 +103,7 @@ export function deserializeViewerAtlasState(serialized) {
|
|
|
102
103
|
? { ...raw.renderOptions.scaleModel }
|
|
103
104
|
: undefined,
|
|
104
105
|
activeEventId: raw.activeEventId ?? raw.renderOptions?.activeEventId ?? null,
|
|
106
|
+
viewMode: raw.renderOptions?.viewMode ?? "2d",
|
|
105
107
|
},
|
|
106
108
|
filter: normalizeViewerFilter(raw.filter ?? null),
|
|
107
109
|
};
|
|
@@ -125,6 +127,7 @@ export function createViewerBookmark(name, label, atlasState) {
|
|
|
125
127
|
? { ...atlasState.renderOptions.scaleModel }
|
|
126
128
|
: undefined,
|
|
127
129
|
activeEventId: atlasState.renderOptions.activeEventId ?? null,
|
|
130
|
+
viewMode: atlasState.renderOptions.viewMode ?? "2d",
|
|
128
131
|
},
|
|
129
132
|
filter: atlasState.filter ? { ...atlasState.filter } : null,
|
|
130
133
|
},
|
|
@@ -480,6 +480,7 @@ function cloneBookmark(bookmark) {
|
|
|
480
480
|
scaleModel: bookmark.atlasState.renderOptions.scaleModel
|
|
481
481
|
? { ...bookmark.atlasState.renderOptions.scaleModel }
|
|
482
482
|
: undefined,
|
|
483
|
+
viewMode: bookmark.atlasState.renderOptions.viewMode ?? "2d",
|
|
483
484
|
},
|
|
484
485
|
filter: bookmark.atlasState.filter ? { ...bookmark.atlasState.filter } : null,
|
|
485
486
|
},
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { loadWorldOrbitSource, renderDocumentToScene, } from "@worldorbit/core";
|
|
2
|
+
import { WorldOrbit3DUnavailableError } from "./errors.js";
|
|
3
|
+
import { render3DUnavailableMarkup } from "./embed.js";
|
|
2
4
|
import { renderSceneToSvg } from "./render.js";
|
|
3
5
|
import { createAtlasViewer } from "./atlas-viewer.js";
|
|
4
6
|
import { createInteractiveViewer } from "./viewer.js";
|
|
@@ -51,10 +53,22 @@ export function defineWorldOrbitViewerElement(tagName = "worldorbit-viewer") {
|
|
|
51
53
|
});
|
|
52
54
|
return;
|
|
53
55
|
}
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
56
|
+
try {
|
|
57
|
+
this.viewer = createInteractiveViewer(this, {
|
|
58
|
+
source,
|
|
59
|
+
theme,
|
|
60
|
+
viewMode: mode === "interactive-3d"
|
|
61
|
+
? "3d"
|
|
62
|
+
: "2d",
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
catch (error) {
|
|
66
|
+
if (error instanceof WorldOrbit3DUnavailableError && mode === "interactive-3d") {
|
|
67
|
+
this.innerHTML = render3DUnavailableMarkup(error.message);
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
throw error;
|
|
71
|
+
}
|
|
58
72
|
}
|
|
59
73
|
}
|
|
60
74
|
customElements.define(tagName, WorldOrbitViewerElement);
|
|
@@ -1,8 +1,10 @@
|
|
|
1
|
-
import type { RenderScene } from "@worldorbit/core";
|
|
1
|
+
import type { RenderScene, SpatialScene } from "@worldorbit/core";
|
|
2
2
|
import type { MountedWorldOrbitEmbeds, MountWorldOrbitEmbedsOptions, ViewerAtlasState, ViewerFilter, WorldOrbitEmbedPayload } from "./types.js";
|
|
3
3
|
export declare function serializeWorldOrbitEmbedPayload(payload: WorldOrbitEmbedPayload): string;
|
|
4
4
|
export declare function deserializeWorldOrbitEmbedPayload(serialized: string): WorldOrbitEmbedPayload;
|
|
5
5
|
export declare function createEmbedPayload(scene: RenderScene, mode: WorldOrbitEmbedPayload["mode"], options?: {
|
|
6
|
+
spatialScene?: SpatialScene;
|
|
7
|
+
viewMode?: "2d" | "3d";
|
|
6
8
|
initialViewpointId?: string;
|
|
7
9
|
initialSelectionObjectId?: string;
|
|
8
10
|
initialFilter?: ViewerFilter | null;
|
|
@@ -11,6 +13,7 @@ export declare function createEmbedPayload(scene: RenderScene, mode: WorldOrbitE
|
|
|
11
13
|
}): WorldOrbitEmbedPayload;
|
|
12
14
|
export declare function createWorldOrbitEmbedMarkup(payload: WorldOrbitEmbedPayload, options?: Pick<MountWorldOrbitEmbedsOptions, "theme" | "layers" | "subtitle" | "preset"> & {
|
|
13
15
|
className?: string;
|
|
16
|
+
viewMode?: "2d" | "3d";
|
|
14
17
|
initialViewpointId?: string;
|
|
15
18
|
initialSelectionObjectId?: string;
|
|
16
19
|
initialFilter?: ViewerFilter | null;
|
|
@@ -18,3 +21,4 @@ export declare function createWorldOrbitEmbedMarkup(payload: WorldOrbitEmbedPayl
|
|
|
18
21
|
minimap?: boolean;
|
|
19
22
|
}): string;
|
|
20
23
|
export declare function mountWorldOrbitEmbeds(root?: ParentNode, options?: MountWorldOrbitEmbedsOptions): MountedWorldOrbitEmbeds;
|
|
24
|
+
export declare function render3DUnavailableMarkup(message: string): string;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { WorldOrbit3DUnavailableError } from "./errors.js";
|
|
1
2
|
import { renderSceneToSvg } from "./render.js";
|
|
2
3
|
import { createInteractiveViewer } from "./viewer.js";
|
|
3
4
|
const EMBED_SELECTOR = "[data-worldorbit-embed]";
|
|
@@ -8,11 +9,13 @@ export function deserializeWorldOrbitEmbedPayload(serialized) {
|
|
|
8
9
|
const raw = JSON.parse(decodeURIComponent(serialized));
|
|
9
10
|
return {
|
|
10
11
|
version: "2.0",
|
|
11
|
-
mode: raw.mode
|
|
12
|
+
mode: normalizeEmbedMode(raw.mode),
|
|
12
13
|
scene: raw.scene,
|
|
14
|
+
spatialScene: raw.spatialScene ?? undefined,
|
|
13
15
|
options: raw.options
|
|
14
16
|
? {
|
|
15
17
|
...raw.options,
|
|
18
|
+
viewMode: raw.options.viewMode ?? embedModeToViewMode(normalizeEmbedMode(raw.mode)),
|
|
16
19
|
initialFilter: raw.options.initialFilter ?? null,
|
|
17
20
|
atlasState: raw.options.atlasState ?? null,
|
|
18
21
|
}
|
|
@@ -22,9 +25,11 @@ export function deserializeWorldOrbitEmbedPayload(serialized) {
|
|
|
22
25
|
export function createEmbedPayload(scene, mode, options = {}) {
|
|
23
26
|
return {
|
|
24
27
|
version: "2.0",
|
|
25
|
-
mode,
|
|
28
|
+
mode: normalizeEmbedMode(mode),
|
|
26
29
|
scene,
|
|
30
|
+
spatialScene: options.spatialScene,
|
|
27
31
|
options: {
|
|
32
|
+
viewMode: options.viewMode ?? embedModeToViewMode(normalizeEmbedMode(mode)),
|
|
28
33
|
initialViewpointId: options.initialViewpointId,
|
|
29
34
|
initialSelectionObjectId: options.initialSelectionObjectId,
|
|
30
35
|
initialFilter: options.initialFilter ?? null,
|
|
@@ -42,6 +47,7 @@ export function createWorldOrbitEmbedMarkup(payload, options = {}) {
|
|
|
42
47
|
layers: options.layers ?? payload.options?.layers,
|
|
43
48
|
subtitle: options.subtitle ?? payload.options?.subtitle,
|
|
44
49
|
preset: options.preset ?? payload.options?.preset,
|
|
50
|
+
viewMode: options.viewMode ?? payload.options?.viewMode ?? embedModeToViewMode(normalizeEmbedMode(payload.mode)),
|
|
45
51
|
initialViewpointId: options.initialViewpointId ?? payload.options?.initialViewpointId,
|
|
46
52
|
initialSelectionObjectId: options.initialSelectionObjectId ?? payload.options?.initialSelectionObjectId,
|
|
47
53
|
initialFilter: options.initialFilter ?? payload.options?.initialFilter ?? null,
|
|
@@ -57,14 +63,14 @@ export function createWorldOrbitEmbedMarkup(payload, options = {}) {
|
|
|
57
63
|
subtitle: mergedPayload.options?.subtitle,
|
|
58
64
|
preset: mergedPayload.options?.preset,
|
|
59
65
|
});
|
|
60
|
-
return `<div class="${escapeAttribute(options.className ?? "worldorbit-embed")}" data-worldorbit-embed="true" data-worldorbit-mode="${
|
|
66
|
+
return `<div class="${escapeAttribute(options.className ?? "worldorbit-embed")}" data-worldorbit-embed="true" data-worldorbit-mode="${mergedPayload.mode}" data-worldorbit-preset="${escapeAttribute(mergedPayload.options?.preset ?? payload.scene.renderPreset ?? "custom")}" data-worldorbit-viewpoint="${escapeAttribute(mergedPayload.options?.initialViewpointId ?? "")}" data-worldorbit-payload="${escapeAttribute(serializeWorldOrbitEmbedPayload(mergedPayload))}">${html}</div>`;
|
|
61
67
|
}
|
|
62
68
|
export function mountWorldOrbitEmbeds(root = document, options = {}) {
|
|
63
69
|
const viewers = new Map();
|
|
64
70
|
const elements = [...root.querySelectorAll(EMBED_SELECTOR)];
|
|
65
71
|
for (const element of elements) {
|
|
66
72
|
const payload = deserializePayloadFromElement(element);
|
|
67
|
-
const mode = options.mode ?? payload.mode;
|
|
73
|
+
const mode = normalizeEmbedMode(options.mode ?? payload.mode);
|
|
68
74
|
const theme = options.theme ?? payload.options?.theme;
|
|
69
75
|
const layers = options.layers ?? payload.options?.layers;
|
|
70
76
|
const subtitle = options.subtitle ?? payload.options?.subtitle;
|
|
@@ -73,27 +79,43 @@ export function mountWorldOrbitEmbeds(root = document, options = {}) {
|
|
|
73
79
|
const initialViewpointId = options.viewer?.initialViewpointId ?? payload.options?.initialViewpointId;
|
|
74
80
|
const initialSelectionObjectId = options.viewer?.initialSelectionObjectId ?? payload.options?.initialSelectionObjectId;
|
|
75
81
|
const minimap = options.viewer?.minimap ?? payload.options?.minimap;
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
82
|
+
const viewMode = options.viewer?.viewMode ??
|
|
83
|
+
payload.options?.viewMode ??
|
|
84
|
+
embedModeToViewMode(mode);
|
|
85
|
+
if (mode === "interactive-2d" || mode === "interactive-3d") {
|
|
86
|
+
try {
|
|
87
|
+
const viewer = createInteractiveViewer(element, {
|
|
88
|
+
...options.viewer,
|
|
89
|
+
scene: payload.scene,
|
|
90
|
+
spatialScene: payload.spatialScene,
|
|
91
|
+
width: options.width ?? payload.scene.width,
|
|
92
|
+
height: options.height ?? payload.scene.height,
|
|
93
|
+
padding: options.padding ?? payload.scene.padding,
|
|
94
|
+
preset,
|
|
95
|
+
theme,
|
|
96
|
+
layers,
|
|
97
|
+
subtitle,
|
|
98
|
+
viewMode,
|
|
99
|
+
initialFilter,
|
|
100
|
+
initialViewpointId,
|
|
101
|
+
initialSelectionObjectId,
|
|
102
|
+
minimap,
|
|
103
|
+
});
|
|
104
|
+
if (payload.options?.atlasState) {
|
|
105
|
+
viewer.setAtlasState(payload.options.atlasState);
|
|
106
|
+
}
|
|
107
|
+
viewers.set(element, viewer);
|
|
108
|
+
options.onMount?.(viewer, element);
|
|
109
|
+
}
|
|
110
|
+
catch (error) {
|
|
111
|
+
if (error instanceof WorldOrbit3DUnavailableError && mode === "interactive-3d") {
|
|
112
|
+
element.innerHTML = render3DUnavailableMarkup(error.message);
|
|
113
|
+
options.onMount?.(null, element);
|
|
114
|
+
}
|
|
115
|
+
else {
|
|
116
|
+
throw error;
|
|
117
|
+
}
|
|
94
118
|
}
|
|
95
|
-
viewers.set(element, viewer);
|
|
96
|
-
options.onMount?.(viewer, element);
|
|
97
119
|
}
|
|
98
120
|
else {
|
|
99
121
|
element.innerHTML = renderSceneToSvg(payload.scene, {
|
|
@@ -136,3 +158,15 @@ function escapeAttribute(value) {
|
|
|
136
158
|
.replaceAll(">", ">")
|
|
137
159
|
.replaceAll("\"", """);
|
|
138
160
|
}
|
|
161
|
+
function normalizeEmbedMode(mode) {
|
|
162
|
+
if (!mode || mode === "interactive") {
|
|
163
|
+
return "interactive-2d";
|
|
164
|
+
}
|
|
165
|
+
return mode;
|
|
166
|
+
}
|
|
167
|
+
function embedModeToViewMode(mode) {
|
|
168
|
+
return mode === "interactive-3d" ? "3d" : "2d";
|
|
169
|
+
}
|
|
170
|
+
export function render3DUnavailableMarkup(message) {
|
|
171
|
+
return `<div class="worldorbit-embed-unavailable" data-worldorbit-3d-unavailable="true"><strong>3D unavailable</strong><span>${escapeAttribute(message)}</span></div>`;
|
|
172
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export class WorldOrbitViewerError extends Error {
|
|
2
|
+
constructor(message) {
|
|
3
|
+
super(message);
|
|
4
|
+
this.name = "WorldOrbitViewerError";
|
|
5
|
+
}
|
|
6
|
+
}
|
|
7
|
+
export class WorldOrbit3DUnavailableError extends WorldOrbitViewerError {
|
|
8
|
+
constructor(message = "WorldOrbit 3D is unavailable in this environment.") {
|
|
9
|
+
super(message);
|
|
10
|
+
this.name = "WorldOrbit3DUnavailableError";
|
|
11
|
+
}
|
|
12
|
+
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export type * from "./types.js";
|
|
2
|
+
export { WorldOrbit3DUnavailableError, WorldOrbitViewerError } from "./errors.js";
|
|
2
3
|
export { getThemePreset, resolveLayers, resolveTheme } from "./theme.js";
|
|
3
4
|
export { deserializeViewerAtlasState, normalizeViewerFilter, sceneViewpointToLayerOptions, searchSceneObjects, serializeViewerAtlasState, viewpointToViewerFilter, } from "./atlas-state.js";
|
|
4
5
|
export { DEFAULT_VIEWER_STATE, clampScale, composeViewerTransform, fitViewerState, focusViewerState, getViewerVisibleBounds, invertViewerPoint, getSceneCenter, normalizeRotation, panViewerState, rotateViewerState, zoomViewerStateAt, } from "./viewer-state.js";
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
export { WorldOrbit3DUnavailableError, WorldOrbitViewerError } from "./errors.js";
|
|
1
2
|
export { getThemePreset, resolveLayers, resolveTheme } from "./theme.js";
|
|
2
3
|
export { deserializeViewerAtlasState, normalizeViewerFilter, sceneViewpointToLayerOptions, searchSceneObjects, serializeViewerAtlasState, viewpointToViewerFilter, } from "./atlas-state.js";
|
|
3
4
|
export { DEFAULT_VIEWER_STATE, clampScale, composeViewerTransform, fitViewerState, focusViewerState, getViewerVisibleBounds, invertViewerPoint, getSceneCenter, normalizeRotation, panViewerState, rotateViewerState, zoomViewerStateAt, } from "./viewer-state.js";
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { type CoordinatePoint, type SpatialScene } from "@worldorbit/core";
|
|
2
|
+
import type { ViewerRenderOptions, ViewerState } from "./types.js";
|
|
3
|
+
interface Viewer3DRuntimeUpdate {
|
|
4
|
+
spatialScene: SpatialScene;
|
|
5
|
+
renderOptions: ViewerRenderOptions;
|
|
6
|
+
visibleObjectIds: Set<string>;
|
|
7
|
+
selectedObjectId: string | null;
|
|
8
|
+
hoveredObjectId: string | null;
|
|
9
|
+
state: ViewerState;
|
|
10
|
+
timeSeconds: number;
|
|
11
|
+
}
|
|
12
|
+
export interface Viewer3DRuntime {
|
|
13
|
+
update(next: Viewer3DRuntimeUpdate): void;
|
|
14
|
+
hitTest(clientX: number, clientY: number): string | null;
|
|
15
|
+
projectObjectToContainer(objectId: string): CoordinatePoint | null;
|
|
16
|
+
destroy(): void;
|
|
17
|
+
}
|
|
18
|
+
export declare function createViewer3DRuntime(container: HTMLElement): Viewer3DRuntime;
|
|
19
|
+
export {};
|