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.
Files changed (196) hide show
  1. package/README.md +12 -5
  2. package/dist/browser/core/dist/atlas-edit.d.ts +11 -0
  3. package/dist/browser/core/dist/atlas-edit.js +347 -0
  4. package/dist/browser/core/dist/atlas-utils.d.ts +22 -0
  5. package/dist/browser/core/dist/atlas-utils.js +189 -0
  6. package/dist/browser/core/dist/atlas-validate.d.ts +2 -0
  7. package/dist/browser/core/dist/atlas-validate.js +488 -0
  8. package/dist/browser/core/dist/diagnostics.d.ts +10 -0
  9. package/dist/browser/core/dist/diagnostics.js +109 -0
  10. package/dist/browser/core/dist/draft-parse.d.ts +3 -0
  11. package/dist/browser/core/dist/draft-parse.js +1654 -0
  12. package/dist/browser/core/dist/draft.d.ts +21 -0
  13. package/dist/browser/core/dist/draft.js +482 -0
  14. package/dist/browser/core/dist/errors.d.ts +7 -0
  15. package/dist/browser/core/dist/errors.js +16 -0
  16. package/dist/browser/core/dist/format.d.ts +4 -0
  17. package/dist/browser/core/dist/format.js +613 -0
  18. package/dist/browser/core/dist/index.d.ts +29 -0
  19. package/dist/browser/core/dist/index.js +35 -6542
  20. package/dist/browser/core/dist/load.d.ts +4 -0
  21. package/dist/browser/core/dist/load.js +182 -0
  22. package/dist/browser/core/dist/markdown.d.ts +2 -0
  23. package/dist/browser/core/dist/markdown.js +37 -0
  24. package/dist/browser/core/dist/normalize.d.ts +2 -0
  25. package/dist/browser/core/dist/normalize.js +312 -0
  26. package/dist/browser/core/dist/parse.d.ts +2 -0
  27. package/dist/browser/core/dist/parse.js +133 -0
  28. package/dist/browser/core/dist/scene.d.ts +3 -0
  29. package/dist/browser/core/dist/scene.js +1901 -0
  30. package/dist/browser/core/dist/schema.d.ts +8 -0
  31. package/dist/browser/core/dist/schema.js +298 -0
  32. package/dist/browser/core/dist/spatial-scene.d.ts +3 -0
  33. package/dist/browser/core/dist/spatial-scene.js +420 -0
  34. package/dist/browser/core/dist/tokenize.d.ts +4 -0
  35. package/dist/browser/core/dist/tokenize.js +68 -0
  36. package/dist/browser/core/dist/types.d.ts +637 -0
  37. package/dist/browser/core/dist/types.js +1 -0
  38. package/dist/browser/core/dist/validate.d.ts +2 -0
  39. package/dist/browser/core/dist/validate.js +56 -0
  40. package/dist/browser/editor/dist/editor.d.ts +2 -0
  41. package/dist/browser/editor/dist/editor.js +3700 -0
  42. package/dist/browser/editor/dist/index.d.ts +2 -0
  43. package/dist/browser/editor/dist/index.js +1 -12250
  44. package/dist/browser/editor/dist/types.d.ts +59 -0
  45. package/dist/browser/editor/dist/types.js +1 -0
  46. package/dist/browser/markdown/dist/html.d.ts +3 -0
  47. package/dist/browser/markdown/dist/html.js +64 -0
  48. package/dist/browser/markdown/dist/index.d.ts +4 -0
  49. package/dist/browser/markdown/dist/index.js +3 -6179
  50. package/dist/browser/markdown/dist/rehype.d.ts +10 -0
  51. package/dist/browser/markdown/dist/rehype.js +49 -0
  52. package/dist/browser/markdown/dist/remark.d.ts +9 -0
  53. package/dist/browser/markdown/dist/remark.js +28 -0
  54. package/dist/browser/markdown/dist/types.d.ts +11 -0
  55. package/dist/browser/markdown/dist/types.js +1 -0
  56. package/dist/browser/viewer/dist/atlas-state.d.ts +12 -0
  57. package/dist/browser/viewer/dist/atlas-state.js +269 -0
  58. package/dist/browser/viewer/dist/atlas-viewer.d.ts +2 -0
  59. package/dist/browser/viewer/dist/atlas-viewer.js +495 -0
  60. package/dist/browser/viewer/dist/custom-element.d.ts +1 -0
  61. package/dist/browser/viewer/dist/custom-element.js +78 -0
  62. package/dist/browser/viewer/dist/embed.d.ts +24 -0
  63. package/dist/browser/viewer/dist/embed.js +172 -0
  64. package/dist/browser/viewer/dist/errors.d.ts +6 -0
  65. package/dist/browser/viewer/dist/errors.js +12 -0
  66. package/dist/browser/viewer/dist/index.d.ts +10 -0
  67. package/dist/browser/viewer/dist/index.js +9 -8334
  68. package/dist/browser/viewer/dist/minimap.d.ts +3 -0
  69. package/dist/browser/viewer/dist/minimap.js +63 -0
  70. package/dist/browser/viewer/dist/render.d.ts +6 -0
  71. package/dist/browser/viewer/dist/render.js +670 -0
  72. package/dist/browser/viewer/dist/runtime-3d.d.ts +19 -0
  73. package/dist/browser/viewer/dist/runtime-3d.js +494 -0
  74. package/dist/browser/viewer/dist/theme.d.ts +4 -0
  75. package/dist/browser/viewer/dist/theme.js +103 -0
  76. package/dist/browser/viewer/dist/tooltip.d.ts +3 -0
  77. package/dist/browser/viewer/dist/tooltip.js +198 -0
  78. package/dist/browser/viewer/dist/types.d.ts +292 -0
  79. package/dist/browser/viewer/dist/types.js +1 -0
  80. package/dist/browser/viewer/dist/vendor/three.module.js +53032 -0
  81. package/dist/browser/viewer/dist/viewer-state.d.ts +19 -0
  82. package/dist/browser/viewer/dist/viewer-state.js +162 -0
  83. package/dist/browser/viewer/dist/viewer.d.ts +2 -0
  84. package/dist/browser/viewer/dist/viewer.js +1662 -0
  85. package/dist/unpkg/core/dist/atlas-edit.d.ts +11 -0
  86. package/dist/unpkg/core/dist/atlas-edit.js +347 -0
  87. package/dist/unpkg/core/dist/atlas-utils.d.ts +22 -0
  88. package/dist/unpkg/core/dist/atlas-utils.js +189 -0
  89. package/dist/unpkg/core/dist/atlas-validate.d.ts +2 -0
  90. package/dist/unpkg/core/dist/atlas-validate.js +488 -0
  91. package/dist/unpkg/core/dist/diagnostics.d.ts +10 -0
  92. package/dist/unpkg/core/dist/diagnostics.js +109 -0
  93. package/dist/unpkg/core/dist/draft-parse.d.ts +3 -0
  94. package/dist/unpkg/core/dist/draft-parse.js +1654 -0
  95. package/dist/unpkg/core/dist/draft.d.ts +21 -0
  96. package/dist/unpkg/core/dist/draft.js +482 -0
  97. package/dist/unpkg/core/dist/errors.d.ts +7 -0
  98. package/dist/unpkg/core/dist/errors.js +16 -0
  99. package/dist/unpkg/core/dist/format.d.ts +4 -0
  100. package/dist/unpkg/core/dist/format.js +613 -0
  101. package/dist/unpkg/core/dist/index.d.ts +29 -0
  102. package/dist/unpkg/core/dist/index.js +35 -6614
  103. package/dist/unpkg/core/dist/load.d.ts +4 -0
  104. package/dist/unpkg/core/dist/load.js +182 -0
  105. package/dist/unpkg/core/dist/markdown.d.ts +2 -0
  106. package/dist/unpkg/core/dist/markdown.js +37 -0
  107. package/dist/unpkg/core/dist/normalize.d.ts +2 -0
  108. package/dist/unpkg/core/dist/normalize.js +312 -0
  109. package/dist/unpkg/core/dist/parse.d.ts +2 -0
  110. package/dist/unpkg/core/dist/parse.js +133 -0
  111. package/dist/unpkg/core/dist/scene.d.ts +3 -0
  112. package/dist/unpkg/core/dist/scene.js +1901 -0
  113. package/dist/unpkg/core/dist/schema.d.ts +8 -0
  114. package/dist/unpkg/core/dist/schema.js +298 -0
  115. package/dist/unpkg/core/dist/spatial-scene.d.ts +3 -0
  116. package/dist/unpkg/core/dist/spatial-scene.js +420 -0
  117. package/dist/unpkg/core/dist/tokenize.d.ts +4 -0
  118. package/dist/unpkg/core/dist/tokenize.js +68 -0
  119. package/dist/unpkg/core/dist/types.d.ts +637 -0
  120. package/dist/unpkg/core/dist/types.js +1 -0
  121. package/dist/unpkg/core/dist/validate.d.ts +2 -0
  122. package/dist/unpkg/core/dist/validate.js +56 -0
  123. package/dist/unpkg/editor/dist/editor.d.ts +2 -0
  124. package/dist/unpkg/editor/dist/editor.js +3700 -0
  125. package/dist/unpkg/editor/dist/index.d.ts +2 -0
  126. package/dist/unpkg/editor/dist/index.js +1 -12275
  127. package/dist/unpkg/editor/dist/types.d.ts +59 -0
  128. package/dist/unpkg/editor/dist/types.js +1 -0
  129. package/dist/unpkg/markdown/dist/html.d.ts +3 -0
  130. package/dist/unpkg/markdown/dist/html.js +64 -0
  131. package/dist/unpkg/markdown/dist/index.d.ts +4 -0
  132. package/dist/unpkg/markdown/dist/index.js +3 -6207
  133. package/dist/unpkg/markdown/dist/rehype.d.ts +10 -0
  134. package/dist/unpkg/markdown/dist/rehype.js +49 -0
  135. package/dist/unpkg/markdown/dist/remark.d.ts +9 -0
  136. package/dist/unpkg/markdown/dist/remark.js +28 -0
  137. package/dist/unpkg/markdown/dist/types.d.ts +11 -0
  138. package/dist/unpkg/markdown/dist/types.js +1 -0
  139. package/dist/unpkg/viewer/dist/atlas-state.d.ts +12 -0
  140. package/dist/unpkg/viewer/dist/atlas-state.js +269 -0
  141. package/dist/unpkg/viewer/dist/atlas-viewer.d.ts +2 -0
  142. package/dist/unpkg/viewer/dist/atlas-viewer.js +495 -0
  143. package/dist/unpkg/viewer/dist/custom-element.d.ts +1 -0
  144. package/dist/unpkg/viewer/dist/custom-element.js +78 -0
  145. package/dist/unpkg/viewer/dist/embed.d.ts +24 -0
  146. package/dist/unpkg/viewer/dist/embed.js +172 -0
  147. package/dist/unpkg/viewer/dist/errors.d.ts +6 -0
  148. package/dist/unpkg/viewer/dist/errors.js +12 -0
  149. package/dist/unpkg/viewer/dist/index.d.ts +10 -0
  150. package/dist/unpkg/viewer/dist/index.js +9 -8391
  151. package/dist/unpkg/viewer/dist/minimap.d.ts +3 -0
  152. package/dist/unpkg/viewer/dist/minimap.js +63 -0
  153. package/dist/unpkg/viewer/dist/render.d.ts +6 -0
  154. package/dist/unpkg/viewer/dist/render.js +670 -0
  155. package/dist/unpkg/viewer/dist/runtime-3d.d.ts +19 -0
  156. package/dist/unpkg/viewer/dist/runtime-3d.js +494 -0
  157. package/dist/unpkg/viewer/dist/theme.d.ts +4 -0
  158. package/dist/unpkg/viewer/dist/theme.js +103 -0
  159. package/dist/unpkg/viewer/dist/tooltip.d.ts +3 -0
  160. package/dist/unpkg/viewer/dist/tooltip.js +198 -0
  161. package/dist/unpkg/viewer/dist/types.d.ts +292 -0
  162. package/dist/unpkg/viewer/dist/types.js +1 -0
  163. package/dist/unpkg/viewer/dist/vendor/three.module.js +53032 -0
  164. package/dist/unpkg/viewer/dist/viewer-state.d.ts +19 -0
  165. package/dist/unpkg/viewer/dist/viewer-state.js +162 -0
  166. package/dist/unpkg/viewer/dist/viewer.d.ts +2 -0
  167. package/dist/unpkg/viewer/dist/viewer.js +1662 -0
  168. package/dist/unpkg/worldorbit-core.min.js +1 -12
  169. package/dist/unpkg/worldorbit-editor.min.js +1 -904
  170. package/dist/unpkg/worldorbit-markdown.min.js +1 -103
  171. package/dist/unpkg/worldorbit-viewer.min.js +1 -259
  172. package/dist/unpkg/worldorbit.js +2 -9704
  173. package/dist/unpkg/worldorbit.min.js +2 -263
  174. package/package.json +1 -1
  175. package/packages/core/dist/index.d.ts +1 -0
  176. package/packages/core/dist/index.js +1 -0
  177. package/packages/core/dist/spatial-scene.d.ts +3 -0
  178. package/packages/core/dist/spatial-scene.js +420 -0
  179. package/packages/core/dist/types.d.ts +105 -0
  180. package/packages/editor/dist/editor.js +25 -4
  181. package/packages/editor/dist/types.d.ts +4 -0
  182. package/packages/markdown/dist/html.js +10 -3
  183. package/packages/viewer/dist/atlas-state.js +3 -0
  184. package/packages/viewer/dist/atlas-viewer.js +1 -0
  185. package/packages/viewer/dist/custom-element.js +18 -4
  186. package/packages/viewer/dist/embed.d.ts +5 -1
  187. package/packages/viewer/dist/embed.js +58 -24
  188. package/packages/viewer/dist/errors.d.ts +6 -0
  189. package/packages/viewer/dist/errors.js +12 -0
  190. package/packages/viewer/dist/index.d.ts +1 -0
  191. package/packages/viewer/dist/index.js +1 -0
  192. package/packages/viewer/dist/runtime-3d.d.ts +19 -0
  193. package/packages/viewer/dist/runtime-3d.js +494 -0
  194. package/packages/viewer/dist/types.d.ts +21 -2
  195. package/packages/viewer/dist/vendor/three.module.js +53032 -0
  196. package/packages/viewer/dist/viewer.js +501 -41
@@ -0,0 +1,198 @@
1
+ const FIELD_ORDER = [
2
+ "radius",
3
+ "temperature",
4
+ "atmosphere",
5
+ "period",
6
+ "semiMajor",
7
+ "distance",
8
+ "eccentricity",
9
+ "angle",
10
+ "inclination",
11
+ "phase",
12
+ "albedo",
13
+ "mass",
14
+ "density",
15
+ "gravity",
16
+ ];
17
+ export function buildViewerTooltipDetails(details) {
18
+ return {
19
+ objectId: details.objectId,
20
+ title: details.objectId,
21
+ typeLabel: humanizeType(details.object.type),
22
+ imageHref: details.renderObject.imageHref ?? null,
23
+ description: readTooltipDescription(details),
24
+ tags: normalizeTags(details.object.properties.tags),
25
+ fields: buildTooltipFields(details),
26
+ parentLabel: details.parent?.objectId ?? null,
27
+ orbitLabel: details.orbit?.parentId ?? null,
28
+ details,
29
+ };
30
+ }
31
+ export function renderDefaultTooltipContent(details, mode) {
32
+ const tagMarkup = details.tags.length
33
+ ? `<div class="wo-tooltip-tags">${details.tags
34
+ .map((tag) => `<span class="wo-tooltip-tag">${escapeHtml(tag)}</span>`)
35
+ .join("")}</div>`
36
+ : "";
37
+ const fieldMarkup = details.fields.length
38
+ ? `<dl class="wo-tooltip-fields">${details.fields
39
+ .map((field) => `<div class="wo-tooltip-field"><dt>${escapeHtml(field.label)}</dt><dd>${escapeHtml(field.value)}</dd></div>`)
40
+ .join("")}</dl>`
41
+ : "";
42
+ const relationBits = [
43
+ details.parentLabel ? `Parent: ${details.parentLabel}` : null,
44
+ details.orbitLabel ? `Orbit: ${details.orbitLabel}` : null,
45
+ mode === "pinned" ? "Pinned tooltip" : "Hover tooltip",
46
+ ].filter(Boolean);
47
+ return `<article class="wo-tooltip-card" data-tooltip-object-id="${escapeHtml(details.objectId)}">
48
+ <div class="wo-tooltip-head">
49
+ ${details.imageHref
50
+ ? `<img class="wo-tooltip-image" src="${escapeAttribute(details.imageHref)}" alt="" />`
51
+ : `<div class="wo-tooltip-image wo-tooltip-image-placeholder">${escapeHtml(details.typeLabel.slice(0, 1))}</div>`}
52
+ <div class="wo-tooltip-heading">
53
+ <strong>${escapeHtml(details.title)}</strong>
54
+ <span>${escapeHtml(details.typeLabel)}</span>
55
+ </div>
56
+ </div>
57
+ ${details.description ? `<p class="wo-tooltip-description">${escapeHtml(details.description)}</p>` : ""}
58
+ ${tagMarkup}
59
+ ${fieldMarkup}
60
+ ${relationBits.length
61
+ ? `<p class="wo-tooltip-relations">${escapeHtml(relationBits.join(" - "))}</p>`
62
+ : ""}
63
+ </article>`;
64
+ }
65
+ function buildTooltipFields(details) {
66
+ const fields = new Map();
67
+ for (const key of FIELD_ORDER) {
68
+ const value = details.object.properties[key];
69
+ if (value === undefined) {
70
+ continue;
71
+ }
72
+ fields.set(key, {
73
+ key,
74
+ label: humanizeField(key),
75
+ value: formatTooltipValue(value),
76
+ });
77
+ }
78
+ const placement = details.object.placement;
79
+ if (details.object.groups?.length) {
80
+ fields.set("groups", {
81
+ key: "groups",
82
+ label: "Groups",
83
+ value: details.object.groups.join(", "),
84
+ });
85
+ }
86
+ if (details.object.epoch) {
87
+ fields.set("epoch", {
88
+ key: "epoch",
89
+ label: "Epoch",
90
+ value: details.object.epoch,
91
+ });
92
+ }
93
+ if (details.object.referencePlane) {
94
+ fields.set("referencePlane", {
95
+ key: "referencePlane",
96
+ label: "Reference Plane",
97
+ value: details.object.referencePlane,
98
+ });
99
+ }
100
+ if (details.object.tidalLock !== undefined) {
101
+ fields.set("tidalLock", {
102
+ key: "tidalLock",
103
+ label: "Tidal Lock",
104
+ value: details.object.tidalLock ? "true" : "false",
105
+ });
106
+ }
107
+ if (details.object.resonance) {
108
+ fields.set("resonance", {
109
+ key: "resonance",
110
+ label: "Resonance",
111
+ value: `${details.object.resonance.targetObjectId} ${details.object.resonance.ratio}`,
112
+ });
113
+ }
114
+ if (details.relatedEvents.length > 0) {
115
+ fields.set("events", {
116
+ key: "events",
117
+ label: "Events",
118
+ value: details.relatedEvents
119
+ .map((event) => event.event.label || event.event.id)
120
+ .join(", "),
121
+ });
122
+ }
123
+ if (placement?.mode === "at") {
124
+ fields.set("placement", {
125
+ key: "placement",
126
+ label: "Placement",
127
+ value: `At ${placement.target}`,
128
+ });
129
+ }
130
+ else if (placement?.mode === "surface") {
131
+ fields.set("placement", {
132
+ key: "placement",
133
+ label: "Placement",
134
+ value: `Surface ${placement.target}`,
135
+ });
136
+ }
137
+ else if (placement?.mode === "free") {
138
+ fields.set("placement", {
139
+ key: "placement",
140
+ label: "Placement",
141
+ value: placement.distance
142
+ ? `Free ${formatTooltipValue(placement.distance)}`
143
+ : `Free ${placement.descriptor ?? "custom"}`,
144
+ });
145
+ }
146
+ return [...fields.values()];
147
+ }
148
+ function normalizeTags(value) {
149
+ if (!Array.isArray(value)) {
150
+ return [];
151
+ }
152
+ return value.filter((entry) => typeof entry === "string");
153
+ }
154
+ function readTooltipDescription(details) {
155
+ const direct = details.object.info.description?.trim();
156
+ if (direct) {
157
+ return direct;
158
+ }
159
+ const summary = details.group?.label?.trim();
160
+ return summary && summary !== details.objectId ? summary : null;
161
+ }
162
+ function formatTooltipValue(value) {
163
+ if (typeof value === "string") {
164
+ return value;
165
+ }
166
+ if (typeof value === "number") {
167
+ return String(value);
168
+ }
169
+ if (typeof value === "boolean") {
170
+ return value ? "true" : "false";
171
+ }
172
+ if (Array.isArray(value)) {
173
+ return value.join(", ");
174
+ }
175
+ return formatUnitValue(value);
176
+ }
177
+ function formatUnitValue(value) {
178
+ return `${value.value}${value.unit ?? ""}`;
179
+ }
180
+ function humanizeType(value) {
181
+ return value.charAt(0).toUpperCase() + value.slice(1);
182
+ }
183
+ function humanizeField(value) {
184
+ return value
185
+ .replace(/([a-z])([A-Z])/g, "$1 $2")
186
+ .replace(/[-_]+/g, " ")
187
+ .replace(/^./, (match) => match.toUpperCase());
188
+ }
189
+ function escapeHtml(value) {
190
+ return value
191
+ .replaceAll("&", "&amp;")
192
+ .replaceAll("<", "&lt;")
193
+ .replaceAll(">", "&gt;")
194
+ .replaceAll('"', "&quot;");
195
+ }
196
+ function escapeAttribute(value) {
197
+ return escapeHtml(value);
198
+ }
@@ -0,0 +1,292 @@
1
+ import type { CoordinatePoint, RenderOrbitVisual, RenderProjectionFallback, RenderPresetName, RenderSceneEvent, RenderSceneGroup, RenderSceneLabel, RenderScaleModel, RenderScene, RenderSceneObject, RenderSceneViewpoint, SceneRenderOptions, SpatialScene, ViewProjection, WorldOrbitObject, WorldOrbitDocument, WorldOrbitViewCamera } from "@worldorbit/core";
2
+ export type WorldOrbitThemeName = "atlas" | "nightglass" | "ember";
3
+ export type WorldOrbitViewMode = "2d" | "3d";
4
+ export type WorldOrbitEmbedMode = "static" | "interactive" | "interactive-2d" | "interactive-3d";
5
+ export type TooltipMode = "hover" | "pinned" | "disabled";
6
+ export interface WorldOrbitTheme {
7
+ name: string;
8
+ backgroundStart: string;
9
+ backgroundEnd: string;
10
+ backgroundGlow: string;
11
+ panel: string;
12
+ panelLine: string;
13
+ relation: string;
14
+ orbit: string;
15
+ orbitBand: string;
16
+ guide: string;
17
+ leader: string;
18
+ ink: string;
19
+ muted: string;
20
+ accent: string;
21
+ accentStrong: string;
22
+ selected: string;
23
+ starCore: string;
24
+ starStroke: string;
25
+ starGlow: string;
26
+ fontFamily: string;
27
+ displayFont: string;
28
+ }
29
+ export interface ViewerLayerOptions {
30
+ background?: boolean;
31
+ guides?: boolean;
32
+ relations?: boolean;
33
+ events?: boolean;
34
+ orbits?: boolean;
35
+ objects?: boolean;
36
+ labels?: boolean;
37
+ structures?: boolean;
38
+ metadata?: boolean;
39
+ }
40
+ export interface ViewerFilter {
41
+ query?: string;
42
+ objectTypes?: Array<WorldOrbitObject["type"]>;
43
+ tags?: string[];
44
+ groupIds?: string[];
45
+ includeAncestors?: boolean;
46
+ }
47
+ export interface ViewerSearchResult {
48
+ objectId: string;
49
+ label: string;
50
+ type: WorldOrbitObject["type"];
51
+ score: number;
52
+ groupId: string | null;
53
+ parentId: string | null;
54
+ tags: string[];
55
+ }
56
+ export interface SvgRenderOptions extends SceneRenderOptions {
57
+ theme?: WorldOrbitTheme | WorldOrbitThemeName;
58
+ layers?: ViewerLayerOptions;
59
+ filter?: ViewerFilter | null;
60
+ selectedObjectId?: string | null;
61
+ subtitle?: string;
62
+ }
63
+ export interface ViewerRenderOptions extends Omit<SvgRenderOptions, "selectedObjectId"> {
64
+ projection?: "document" | ViewProjection;
65
+ scaleModel?: Partial<RenderScaleModel>;
66
+ viewMode?: WorldOrbitViewMode;
67
+ }
68
+ export interface ViewerState {
69
+ scale: number;
70
+ rotationDeg: number;
71
+ translateX: number;
72
+ translateY: number;
73
+ selectedObjectId: string | null;
74
+ }
75
+ export interface ViewerObjectDetails {
76
+ objectId: string;
77
+ object: WorldOrbitObject;
78
+ renderObject: RenderSceneObject;
79
+ label: RenderSceneLabel | null;
80
+ group: RenderSceneGroup | null;
81
+ semanticGroups: RenderScene["semanticGroups"];
82
+ orbit: RenderOrbitVisual | null;
83
+ relatedOrbits: RenderOrbitVisual[];
84
+ relations: RenderScene["relations"];
85
+ relatedEvents: RenderSceneEvent[];
86
+ parent: RenderSceneObject | null;
87
+ children: RenderSceneObject[];
88
+ ancestors: RenderSceneObject[];
89
+ focusPath: RenderSceneObject[];
90
+ }
91
+ export interface ViewerTooltipField {
92
+ key: string;
93
+ label: string;
94
+ value: string;
95
+ }
96
+ export interface ViewerTooltipDetails {
97
+ objectId: string;
98
+ title: string;
99
+ typeLabel: string;
100
+ imageHref: string | null;
101
+ description: string | null;
102
+ tags: string[];
103
+ fields: ViewerTooltipField[];
104
+ parentLabel: string | null;
105
+ orbitLabel: string | null;
106
+ details: ViewerObjectDetails;
107
+ }
108
+ export interface ViewerAtlasState {
109
+ version: "2.0" | "2.5";
110
+ viewpointId: string | null;
111
+ activeEventId?: string | null;
112
+ viewerState: ViewerState;
113
+ renderOptions: {
114
+ preset?: RenderPresetName;
115
+ projection?: "document" | ViewProjection;
116
+ camera?: WorldOrbitViewCamera | null;
117
+ layers?: ViewerLayerOptions;
118
+ scaleModel?: Partial<RenderScaleModel>;
119
+ activeEventId?: string | null;
120
+ viewMode?: WorldOrbitViewMode;
121
+ };
122
+ filter: ViewerFilter | null;
123
+ }
124
+ export interface ViewerAnimationState {
125
+ playing: boolean;
126
+ speed: number;
127
+ timeSeconds: number;
128
+ frozenByEvent: boolean;
129
+ }
130
+ export interface ViewerBookmark {
131
+ id: string;
132
+ label: string;
133
+ atlasState: ViewerAtlasState;
134
+ }
135
+ export interface AtlasViewerControls {
136
+ search?: boolean;
137
+ typeFilter?: boolean;
138
+ groupFilter?: boolean;
139
+ viewpointSelect?: boolean;
140
+ inspector?: boolean;
141
+ bookmarks?: boolean;
142
+ }
143
+ export interface AtlasInspectorSnapshot {
144
+ selection: ViewerObjectDetails | null;
145
+ activeViewpoint: RenderSceneViewpoint | null;
146
+ filter: ViewerFilter | null;
147
+ atlasState: ViewerAtlasState;
148
+ visibleObjectIds: string[];
149
+ scene: {
150
+ title: string;
151
+ projection: ViewProjection;
152
+ renderProjection: RenderProjectionFallback;
153
+ camera: WorldOrbitViewCamera | null;
154
+ renderPreset: RenderPresetName | null;
155
+ groupCount: number;
156
+ semanticGroupCount: number;
157
+ relationCount: number;
158
+ eventCount: number;
159
+ viewpointCount: number;
160
+ };
161
+ }
162
+ export interface InteractiveViewerOptions extends ViewerRenderOptions {
163
+ source?: string;
164
+ document?: WorldOrbitDocument;
165
+ scene?: RenderScene;
166
+ spatialScene?: SpatialScene;
167
+ initialViewpointId?: string;
168
+ initialSelectionObjectId?: string;
169
+ initialFilter?: ViewerFilter | null;
170
+ minScale?: number;
171
+ maxScale?: number;
172
+ fitPadding?: number;
173
+ keyboard?: boolean;
174
+ pointer?: boolean;
175
+ touch?: boolean;
176
+ selection?: boolean;
177
+ tooltipMode?: TooltipMode;
178
+ tooltipRenderer?: (details: ViewerTooltipDetails, mode: TooltipMode) => HTMLElement | string;
179
+ minimap?: boolean;
180
+ panStep?: number;
181
+ zoomStep?: number;
182
+ rotationStep?: number;
183
+ onSelectionChange?: (selectedObject: RenderSceneObject | null) => void;
184
+ onSelectionDetailsChange?: (details: ViewerObjectDetails | null) => void;
185
+ onHoverChange?: (hoveredObject: RenderSceneObject | null) => void;
186
+ onHoverDetailsChange?: (details: ViewerObjectDetails | null) => void;
187
+ onTooltipChange?: (details: ViewerTooltipDetails | null) => void;
188
+ onFilterChange?: (filter: ViewerFilter | null, visibleObjects: RenderSceneObject[]) => void;
189
+ onViewpointChange?: (viewpoint: RenderSceneViewpoint | null) => void;
190
+ onViewChange?: (state: ViewerState) => void;
191
+ onAtlasStateChange?: (state: ViewerAtlasState) => void;
192
+ }
193
+ export interface AtlasViewerOptions extends Omit<InteractiveViewerOptions, "initialFilter"> {
194
+ controls?: AtlasViewerControls;
195
+ initialFilter?: ViewerFilter | null;
196
+ initialQuery?: string;
197
+ initialObjectType?: WorldOrbitObject["type"] | null;
198
+ onInspectorChange?: (snapshot: AtlasInspectorSnapshot) => void;
199
+ }
200
+ export interface WorldOrbitViewer {
201
+ setSource(source: string): void;
202
+ setDocument(document: WorldOrbitDocument): void;
203
+ setScene(scene: RenderScene): void;
204
+ getScene(): RenderScene;
205
+ getRenderOptions(): ViewerRenderOptions;
206
+ setRenderOptions(options: Partial<ViewerRenderOptions>): void;
207
+ getViewMode(): WorldOrbitViewMode;
208
+ setViewMode(mode: WorldOrbitViewMode): void;
209
+ listViewpoints(): RenderSceneViewpoint[];
210
+ getActiveViewpoint(): RenderSceneViewpoint | null;
211
+ goToViewpoint(id: string): boolean;
212
+ getActiveEventId(): string | null;
213
+ setActiveEvent(id: string | null): void;
214
+ playAnimation(): void;
215
+ pauseAnimation(): void;
216
+ resetAnimation(): void;
217
+ setAnimationSpeed(multiplier: number): void;
218
+ getAnimationState(): ViewerAnimationState;
219
+ search(query: string, limit?: number): ViewerSearchResult[];
220
+ getFilter(): ViewerFilter | null;
221
+ setFilter(filter: ViewerFilter | null): void;
222
+ getVisibleObjects(): RenderSceneObject[];
223
+ getFocusPath(id: string): RenderSceneObject[];
224
+ getObjectDetails(id: string): ViewerObjectDetails | null;
225
+ getSelectionDetails(): ViewerObjectDetails | null;
226
+ getTooltipDetails(): ViewerTooltipDetails | null;
227
+ getAtlasState(): ViewerAtlasState;
228
+ setAtlasState(state: ViewerAtlasState | string): void;
229
+ serializeAtlasState(): string;
230
+ captureBookmark(name: string, label?: string): ViewerBookmark;
231
+ applyBookmark(bookmark: ViewerBookmark | string): boolean;
232
+ getState(): ViewerState;
233
+ setState(state: Partial<ViewerState>): void;
234
+ zoomBy(factor: number, anchor?: CoordinatePoint): void;
235
+ panBy(dx: number, dy: number): void;
236
+ rotateBy(deg: number): void;
237
+ fitToSystem(): void;
238
+ focusObject(id: string): void;
239
+ pinTooltip(id: string | null): void;
240
+ resetView(): void;
241
+ exportSvg(): string;
242
+ destroy(): void;
243
+ }
244
+ export interface WorldOrbitAtlasViewer {
245
+ element: HTMLElement;
246
+ viewer: WorldOrbitViewer;
247
+ getViewer(): WorldOrbitViewer;
248
+ setSource(source: string): void;
249
+ setDocument(document: WorldOrbitDocument): void;
250
+ setScene(scene: RenderScene): void;
251
+ getAtlasState(): ViewerAtlasState;
252
+ setAtlasState(state: ViewerAtlasState | string): void;
253
+ getInspectorSnapshot(): AtlasInspectorSnapshot;
254
+ getSearchQuery(): string;
255
+ setSearchQuery(query: string): void;
256
+ getObjectTypeFilter(): WorldOrbitObject["type"] | null;
257
+ setObjectTypeFilter(type: WorldOrbitObject["type"] | null): void;
258
+ listSearchResults(limit?: number): ViewerSearchResult[];
259
+ listBookmarks(): ViewerBookmark[];
260
+ captureBookmark(name: string, label?: string): ViewerBookmark;
261
+ applyBookmark(bookmark: ViewerBookmark | string): boolean;
262
+ goToViewpoint(id: string): boolean;
263
+ exportSvg(): string;
264
+ destroy(): void;
265
+ }
266
+ export interface WorldOrbitEmbedPayload {
267
+ version: "2.0";
268
+ mode: WorldOrbitEmbedMode;
269
+ scene: RenderScene;
270
+ spatialScene?: SpatialScene;
271
+ options?: {
272
+ theme?: WorldOrbitTheme | WorldOrbitThemeName;
273
+ layers?: ViewerLayerOptions;
274
+ subtitle?: string;
275
+ preset?: SceneRenderOptions["preset"];
276
+ viewMode?: WorldOrbitViewMode;
277
+ initialViewpointId?: string;
278
+ initialSelectionObjectId?: string;
279
+ initialFilter?: ViewerFilter | null;
280
+ atlasState?: ViewerAtlasState | null;
281
+ minimap?: boolean;
282
+ };
283
+ }
284
+ export interface MountWorldOrbitEmbedsOptions extends SvgRenderOptions {
285
+ mode?: WorldOrbitEmbedMode;
286
+ viewer?: Omit<InteractiveViewerOptions, "source" | "document" | "scene">;
287
+ onMount?: (viewer: WorldOrbitViewer | null, element: HTMLElement) => void;
288
+ }
289
+ export interface MountedWorldOrbitEmbeds {
290
+ viewers: WorldOrbitViewer[];
291
+ destroy(): void;
292
+ }
@@ -0,0 +1 @@
1
+ export {};