worldorbit 2.5.17 → 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 (203) hide show
  1. package/README.md +91 -18
  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 -6101
  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 -11702
  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 -5766
  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 -7901
  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 -6173
  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 -11727
  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 -5794
  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 -7958
  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 -894
  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 -9243
  173. package/dist/unpkg/worldorbit.min.js +2 -263
  174. package/package.json +1 -1
  175. package/packages/core/dist/atlas-edit.js +1 -1
  176. package/packages/core/dist/atlas-validate.js +99 -10
  177. package/packages/core/dist/draft-parse.js +190 -15
  178. package/packages/core/dist/draft.js +50 -11
  179. package/packages/core/dist/format.js +36 -5
  180. package/packages/core/dist/index.d.ts +1 -0
  181. package/packages/core/dist/index.js +1 -0
  182. package/packages/core/dist/load.js +9 -2
  183. package/packages/core/dist/scene.js +158 -24
  184. package/packages/core/dist/spatial-scene.d.ts +3 -0
  185. package/packages/core/dist/spatial-scene.js +420 -0
  186. package/packages/core/dist/types.d.ts +124 -2
  187. package/packages/editor/dist/editor.js +130 -8
  188. package/packages/editor/dist/types.d.ts +4 -0
  189. package/packages/markdown/dist/html.js +10 -3
  190. package/packages/viewer/dist/atlas-state.js +8 -2
  191. package/packages/viewer/dist/atlas-viewer.js +20 -8
  192. package/packages/viewer/dist/custom-element.js +18 -4
  193. package/packages/viewer/dist/embed.d.ts +5 -1
  194. package/packages/viewer/dist/embed.js +58 -24
  195. package/packages/viewer/dist/errors.d.ts +6 -0
  196. package/packages/viewer/dist/errors.js +12 -0
  197. package/packages/viewer/dist/index.d.ts +1 -0
  198. package/packages/viewer/dist/index.js +1 -0
  199. package/packages/viewer/dist/runtime-3d.d.ts +19 -0
  200. package/packages/viewer/dist/runtime-3d.js +494 -0
  201. package/packages/viewer/dist/types.d.ts +25 -3
  202. package/packages/viewer/dist/vendor/three.module.js +53032 -0
  203. package/packages/viewer/dist/viewer.js +517 -41
@@ -0,0 +1,637 @@
1
+ export type WorldOrbitObjectType = "system" | "star" | "planet" | "moon" | "belt" | "asteroid" | "comet" | "ring" | "structure" | "phenomenon";
2
+ export type PlacementMode = "orbit" | "at" | "surface" | "free";
3
+ export type Unit = "au" | "km" | "m" | "ly" | "pc" | "kpc" | "re" | "rj" | "sol" | "me" | "mj" | "s" | "min" | "h" | "d" | "y" | "ky" | "my" | "gy" | "K" | "deg";
4
+ export type WorldOrbitDocumentVersion = "1.0";
5
+ export type WorldOrbitAtlasDocumentVersion = "2.0" | "2.1" | "2.5";
6
+ export type WorldOrbitDraftDocumentVersion = "2.0-draft";
7
+ export type WorldOrbitAnyDocumentVersion = WorldOrbitDocumentVersion | WorldOrbitAtlasDocumentVersion | WorldOrbitDraftDocumentVersion;
8
+ export type ViewProjection = "topdown" | "isometric" | "orthographic" | "perspective";
9
+ export type RenderProjectionFallback = "topdown" | "isometric";
10
+ export type RenderPresetName = "diagram" | "presentation" | "atlas-card" | "markdown";
11
+ export interface CoordinatePoint {
12
+ x: number;
13
+ y: number;
14
+ }
15
+ export interface CoordinatePoint3D {
16
+ x: number;
17
+ y: number;
18
+ z: number;
19
+ }
20
+ export interface UnitValue {
21
+ value: number;
22
+ unit: Unit | null;
23
+ }
24
+ export interface AstSourceLocation {
25
+ line: number;
26
+ column: number;
27
+ }
28
+ export interface LineToken {
29
+ value: string;
30
+ column: number;
31
+ quoted: boolean;
32
+ }
33
+ export interface TokenizeOptions {
34
+ line?: number;
35
+ columnOffset?: number;
36
+ }
37
+ export interface AstDocument {
38
+ type: "document";
39
+ objects: AstObjectNode[];
40
+ }
41
+ export interface AstObjectNode {
42
+ type: "object";
43
+ objectType: WorldOrbitObjectType;
44
+ name: string;
45
+ inlineFields: AstFieldNode[];
46
+ blockFields: AstFieldNode[];
47
+ infoEntries: AstInfoEntryNode[];
48
+ location: AstSourceLocation;
49
+ }
50
+ export interface AstFieldNode {
51
+ type: "field";
52
+ key: string;
53
+ values: string[];
54
+ location: AstSourceLocation;
55
+ }
56
+ export interface AstInfoEntryNode {
57
+ type: "info-entry";
58
+ key: string;
59
+ value: string;
60
+ location: AstSourceLocation;
61
+ }
62
+ export interface WorldOrbitDocument {
63
+ format: "worldorbit";
64
+ version: WorldOrbitDocumentVersion;
65
+ schemaVersion: WorldOrbitAnyDocumentVersion;
66
+ system: WorldOrbitSystem | null;
67
+ groups: WorldOrbitGroup[];
68
+ relations: WorldOrbitRelation[];
69
+ events: WorldOrbitEvent[];
70
+ objects: WorldOrbitObject[];
71
+ }
72
+ export interface WorldOrbitAtlasDocument {
73
+ format: "worldorbit";
74
+ version: WorldOrbitAtlasDocumentVersion;
75
+ schemaVersion: WorldOrbitAtlasDocumentVersion;
76
+ sourceVersion: WorldOrbitDocumentVersion;
77
+ system: WorldOrbitAtlasSystem | null;
78
+ groups: WorldOrbitGroup[];
79
+ relations: WorldOrbitRelation[];
80
+ events: WorldOrbitEvent[];
81
+ objects: WorldOrbitObject[];
82
+ diagnostics: WorldOrbitDiagnostic[];
83
+ }
84
+ export interface WorldOrbitDraftDocument {
85
+ format: "worldorbit";
86
+ version: WorldOrbitDraftDocumentVersion;
87
+ schemaVersion: WorldOrbitDraftDocumentVersion;
88
+ sourceVersion: WorldOrbitDocumentVersion;
89
+ system: WorldOrbitAtlasSystem | null;
90
+ groups: WorldOrbitGroup[];
91
+ relations: WorldOrbitRelation[];
92
+ events: WorldOrbitEvent[];
93
+ objects: WorldOrbitObject[];
94
+ diagnostics: WorldOrbitDiagnostic[];
95
+ }
96
+ export interface WorldOrbitSystem {
97
+ type: "system";
98
+ id: string;
99
+ title?: string | null;
100
+ description?: string | null;
101
+ epoch?: string | null;
102
+ referencePlane?: string | null;
103
+ properties: Record<string, NormalizedValue>;
104
+ info: Record<string, string>;
105
+ }
106
+ export interface WorldOrbitObject {
107
+ type: Exclude<WorldOrbitObjectType, "system">;
108
+ id: string;
109
+ groups?: string[];
110
+ epoch?: string | null;
111
+ referencePlane?: string | null;
112
+ tidalLock?: boolean;
113
+ resonance?: WorldOrbitResonance | null;
114
+ renderHints?: WorldOrbitRenderHints | null;
115
+ deriveRules?: WorldOrbitDeriveRule[];
116
+ validationRules?: WorldOrbitValidationRule[];
117
+ lockedFields?: string[];
118
+ tolerances?: WorldOrbitToleranceRule[];
119
+ typedBlocks?: Partial<Record<WorldOrbitTypedBlockName, Record<string, string>>>;
120
+ properties: Record<string, NormalizedValue>;
121
+ placement: Placement | null;
122
+ info: Record<string, string>;
123
+ }
124
+ export type WorldOrbitTypedBlockName = "climate" | "habitability" | "settlement";
125
+ export interface WorldOrbitGroup {
126
+ id: string;
127
+ label: string;
128
+ summary: string;
129
+ color: string | null;
130
+ tags: string[];
131
+ hidden: boolean;
132
+ }
133
+ export interface WorldOrbitRelation {
134
+ id: string;
135
+ from: string;
136
+ to: string;
137
+ kind: string;
138
+ label: string | null;
139
+ summary: string | null;
140
+ tags: string[];
141
+ color: string | null;
142
+ hidden: boolean;
143
+ }
144
+ export interface WorldOrbitEvent {
145
+ id: string;
146
+ kind: string;
147
+ label: string;
148
+ summary: string | null;
149
+ targetObjectId: string | null;
150
+ participantObjectIds: string[];
151
+ timing: string | null;
152
+ visibility: string | null;
153
+ epoch?: string | null;
154
+ referencePlane?: string | null;
155
+ tags: string[];
156
+ color: string | null;
157
+ hidden: boolean;
158
+ positions: WorldOrbitEventPose[];
159
+ }
160
+ export interface WorldOrbitEventPose {
161
+ objectId: string;
162
+ placement: Placement | null;
163
+ inner?: UnitValue;
164
+ outer?: UnitValue;
165
+ epoch?: string | null;
166
+ referencePlane?: string | null;
167
+ }
168
+ export interface WorldOrbitResonance {
169
+ targetObjectId: string;
170
+ ratio: string;
171
+ }
172
+ export interface WorldOrbitRenderHints {
173
+ renderLabel?: boolean;
174
+ renderOrbit?: boolean;
175
+ renderPriority?: number;
176
+ }
177
+ export interface WorldOrbitDeriveRule {
178
+ field: string;
179
+ strategy: string;
180
+ }
181
+ export interface WorldOrbitValidationRule {
182
+ rule: string;
183
+ }
184
+ export interface WorldOrbitToleranceRule {
185
+ field: string;
186
+ value: NormalizedValue;
187
+ }
188
+ export interface WorldOrbitViewCamera {
189
+ azimuth: number | null;
190
+ elevation: number | null;
191
+ roll: number | null;
192
+ distance: number | null;
193
+ }
194
+ export type NormalizedValue = string | number | boolean | string[] | UnitValue;
195
+ export type Placement = OrbitPlacement | AtPlacement | SurfacePlacement | FreePlacement;
196
+ export interface OrbitPlacement {
197
+ mode: "orbit";
198
+ target: string;
199
+ distance?: UnitValue;
200
+ semiMajor?: UnitValue;
201
+ eccentricity?: number;
202
+ period?: UnitValue;
203
+ angle?: UnitValue;
204
+ inclination?: UnitValue;
205
+ phase?: UnitValue;
206
+ }
207
+ export type SpecialPoint = "L1" | "L2" | "L3" | "L4" | "L5";
208
+ export type AtReference = NamedReference | NamedAnchorReference | LagrangeReference;
209
+ export interface NamedReference {
210
+ kind: "named";
211
+ name: string;
212
+ }
213
+ export interface NamedAnchorReference {
214
+ kind: "anchor";
215
+ objectId: string;
216
+ anchor: string;
217
+ }
218
+ export interface LagrangeReference {
219
+ kind: "lagrange";
220
+ point: SpecialPoint;
221
+ primary: string;
222
+ secondary: string | null;
223
+ }
224
+ export interface AtPlacement {
225
+ mode: "at";
226
+ target: string;
227
+ reference: AtReference;
228
+ }
229
+ export interface SurfacePlacement {
230
+ mode: "surface";
231
+ target: string;
232
+ }
233
+ export interface FreePlacement {
234
+ mode: "free";
235
+ distance?: UnitValue;
236
+ descriptor?: string;
237
+ }
238
+ export interface RenderScaleModel {
239
+ orbitDistanceMultiplier: number;
240
+ bodyRadiusMultiplier: number;
241
+ labelMultiplier: number;
242
+ freePlacementMultiplier: number;
243
+ ringThicknessMultiplier: number;
244
+ minBodyRadius: number;
245
+ maxBodyRadius: number;
246
+ }
247
+ export interface SceneRenderOptions {
248
+ width?: number;
249
+ height?: number;
250
+ padding?: number;
251
+ preset?: RenderPresetName;
252
+ projection?: "document" | ViewProjection;
253
+ camera?: WorldOrbitViewCamera | null;
254
+ scaleModel?: Partial<RenderScaleModel>;
255
+ activeEventId?: string | null;
256
+ }
257
+ export interface SpatialScaleModel {
258
+ orbitDistanceMultiplier: number;
259
+ bodyRadiusMultiplier: number;
260
+ markerSizeMultiplier: number;
261
+ ringThicknessMultiplier: number;
262
+ focusPadding: number;
263
+ minBodyRadius: number;
264
+ maxBodyRadius: number;
265
+ }
266
+ export interface SpatialSceneRenderOptions extends SceneRenderOptions {
267
+ spatialScaleModel?: Partial<SpatialScaleModel>;
268
+ }
269
+ export interface RenderBounds {
270
+ minX: number;
271
+ minY: number;
272
+ maxX: number;
273
+ maxY: number;
274
+ width: number;
275
+ height: number;
276
+ centerX: number;
277
+ centerY: number;
278
+ }
279
+ export interface RenderSceneObject {
280
+ renderId: string;
281
+ objectId: string;
282
+ object: WorldOrbitObject;
283
+ parentId: string | null;
284
+ ancestorIds: string[];
285
+ childIds: string[];
286
+ groupId: string | null;
287
+ semanticGroupIds: string[];
288
+ x: number;
289
+ y: number;
290
+ radius: number;
291
+ visualRadius: number;
292
+ sortKey: number;
293
+ anchorX?: number;
294
+ anchorY?: number;
295
+ label: string;
296
+ secondaryLabel: string;
297
+ fillColor?: string;
298
+ imageHref?: string;
299
+ hidden: boolean;
300
+ }
301
+ export interface RenderOrbitVisual {
302
+ renderId: string;
303
+ objectId: string;
304
+ object: WorldOrbitObject;
305
+ parentId: string;
306
+ groupId: string | null;
307
+ semanticGroupIds: string[];
308
+ kind: "circle" | "ellipse";
309
+ cx: number;
310
+ cy: number;
311
+ radius?: number;
312
+ rx?: number;
313
+ ry?: number;
314
+ rotationDeg: number;
315
+ band: boolean;
316
+ bandThickness?: number;
317
+ frontArcPath?: string;
318
+ backArcPath?: string;
319
+ hidden: boolean;
320
+ }
321
+ export type LeaderMode = "surface" | "at" | "free";
322
+ export interface RenderLeaderLine {
323
+ renderId: string;
324
+ objectId: string;
325
+ object: WorldOrbitObject;
326
+ groupId: string | null;
327
+ semanticGroupIds: string[];
328
+ x1: number;
329
+ y1: number;
330
+ x2: number;
331
+ y2: number;
332
+ mode: LeaderMode;
333
+ hidden: boolean;
334
+ }
335
+ export interface RenderSceneLabel {
336
+ renderId: string;
337
+ objectId: string;
338
+ object: WorldOrbitObject;
339
+ groupId: string | null;
340
+ semanticGroupIds: string[];
341
+ label: string;
342
+ secondaryLabel: string;
343
+ x: number;
344
+ y: number;
345
+ secondaryY: number;
346
+ textAnchor: "start" | "middle" | "end";
347
+ direction: "above" | "below" | "left" | "right";
348
+ hidden: boolean;
349
+ }
350
+ export interface RenderSceneEvent {
351
+ renderId: string;
352
+ eventId: string;
353
+ event: WorldOrbitEvent;
354
+ objectIds: string[];
355
+ participantIds: string[];
356
+ targetObjectId: string | null;
357
+ x: number;
358
+ y: number;
359
+ hidden: boolean;
360
+ }
361
+ export type SceneLayerId = "background" | "guides" | "orbits-back" | "orbits-front" | "relations" | "events" | "objects" | "labels" | "metadata";
362
+ export interface RenderSceneViewpointFilter {
363
+ query: string | null;
364
+ objectTypes: Array<Exclude<WorldOrbitObjectType, "system">>;
365
+ tags: string[];
366
+ groupIds: string[];
367
+ }
368
+ export interface RenderSceneViewpoint {
369
+ id: string;
370
+ label: string;
371
+ summary: string;
372
+ objectId: string | null;
373
+ selectedObjectId: string | null;
374
+ eventIds: string[];
375
+ projection: ViewProjection;
376
+ renderProjection: RenderProjectionFallback;
377
+ preset: RenderPresetName | null;
378
+ rotationDeg: number;
379
+ camera: WorldOrbitViewCamera | null;
380
+ scale: number | null;
381
+ layers: Partial<Record<SceneLayerId, boolean>>;
382
+ filter: RenderSceneViewpointFilter | null;
383
+ generated: boolean;
384
+ }
385
+ export interface RenderSceneLayer {
386
+ id: SceneLayerId;
387
+ renderIds: string[];
388
+ }
389
+ export interface RenderSceneGroup {
390
+ renderId: string;
391
+ rootObjectId: string | null;
392
+ label: string;
393
+ objectIds: string[];
394
+ orbitIds: string[];
395
+ labelIds: string[];
396
+ leaderIds: string[];
397
+ contentBounds: RenderBounds;
398
+ }
399
+ export interface RenderSceneSemanticGroup {
400
+ id: string;
401
+ label: string;
402
+ summary: string;
403
+ color: string | null;
404
+ tags: string[];
405
+ hidden: boolean;
406
+ objectIds: string[];
407
+ }
408
+ export interface RenderSceneRelation {
409
+ renderId: string;
410
+ relationId: string;
411
+ relation: WorldOrbitRelation;
412
+ fromObjectId: string;
413
+ toObjectId: string;
414
+ x1: number;
415
+ y1: number;
416
+ x2: number;
417
+ y2: number;
418
+ hidden: boolean;
419
+ }
420
+ export interface SpatialBounds {
421
+ minX: number;
422
+ minY: number;
423
+ minZ: number;
424
+ maxX: number;
425
+ maxY: number;
426
+ maxZ: number;
427
+ width: number;
428
+ height: number;
429
+ depth: number;
430
+ center: CoordinatePoint3D;
431
+ }
432
+ export interface OrbitalMotionModel {
433
+ phase0Deg: number;
434
+ rotationDeg: number;
435
+ inclinationDeg: number;
436
+ semiMajor: number;
437
+ semiMinor: number;
438
+ eccentricity: number;
439
+ periodSeconds: number | null;
440
+ angularVelocityDegPerSecond: number;
441
+ heuristic: boolean;
442
+ frozen: boolean;
443
+ }
444
+ export interface SpatialSceneObject {
445
+ objectId: string;
446
+ object: WorldOrbitObject;
447
+ parentId: string | null;
448
+ ancestorIds: string[];
449
+ childIds: string[];
450
+ groupId: string | null;
451
+ semanticGroupIds: string[];
452
+ position: CoordinatePoint3D;
453
+ radius: number;
454
+ visualRadius: number;
455
+ label: string;
456
+ secondaryLabel: string;
457
+ fillColor?: string;
458
+ imageHref?: string;
459
+ hidden: boolean;
460
+ motion: OrbitalMotionModel | null;
461
+ }
462
+ export interface SpatialOrbit {
463
+ objectId: string;
464
+ object: WorldOrbitObject;
465
+ parentId: string;
466
+ groupId: string | null;
467
+ semanticGroupIds: string[];
468
+ center: CoordinatePoint3D;
469
+ kind: "circle" | "ellipse";
470
+ radius?: number;
471
+ semiMajor: number;
472
+ semiMinor: number;
473
+ rotationDeg: number;
474
+ inclinationDeg: number;
475
+ band: boolean;
476
+ bandThickness?: number;
477
+ hidden: boolean;
478
+ motion: OrbitalMotionModel | null;
479
+ }
480
+ export interface SpatialFocusTarget {
481
+ objectId: string;
482
+ center: CoordinatePoint3D;
483
+ radius: number;
484
+ }
485
+ export interface RenderScene {
486
+ width: number;
487
+ height: number;
488
+ padding: number;
489
+ renderPreset: RenderPresetName | null;
490
+ projection: ViewProjection;
491
+ renderProjection: RenderProjectionFallback;
492
+ camera: WorldOrbitViewCamera | null;
493
+ scaleModel: RenderScaleModel;
494
+ title: string;
495
+ subtitle: string;
496
+ systemId: string | null;
497
+ viewMode: string;
498
+ layoutPreset: SceneLayoutPreset;
499
+ metadata: Record<string, string>;
500
+ contentBounds: RenderBounds;
501
+ layers: RenderSceneLayer[];
502
+ groups: RenderSceneGroup[];
503
+ semanticGroups: RenderSceneSemanticGroup[];
504
+ viewpoints: RenderSceneViewpoint[];
505
+ events: RenderSceneEvent[];
506
+ activeEventId: string | null;
507
+ objects: RenderSceneObject[];
508
+ orbitVisuals: RenderOrbitVisual[];
509
+ relations: RenderSceneRelation[];
510
+ leaders: RenderLeaderLine[];
511
+ labels: RenderSceneLabel[];
512
+ }
513
+ export interface SpatialScene {
514
+ width: number;
515
+ height: number;
516
+ padding: number;
517
+ renderPreset: RenderPresetName | null;
518
+ projection: ViewProjection;
519
+ camera: WorldOrbitViewCamera | null;
520
+ scaleModel: SpatialScaleModel;
521
+ title: string;
522
+ subtitle: string;
523
+ systemId: string | null;
524
+ viewMode: "3d";
525
+ layoutPreset: SceneLayoutPreset;
526
+ metadata: Record<string, string>;
527
+ contentBounds: SpatialBounds;
528
+ semanticGroups: RenderSceneSemanticGroup[];
529
+ viewpoints: RenderSceneViewpoint[];
530
+ activeEventId: string | null;
531
+ timeFrozen: boolean;
532
+ objects: SpatialSceneObject[];
533
+ orbits: SpatialOrbit[];
534
+ focusTargets: SpatialFocusTarget[];
535
+ }
536
+ export type SceneLayoutPreset = "compact" | "balanced" | "presentation";
537
+ export type FieldValueKind = "string" | "list" | "boolean" | "number" | "unit";
538
+ export type UnitFamily = "distance" | "radius" | "mass" | "duration" | "angle" | "generic";
539
+ export interface WorldOrbitFieldSchema {
540
+ key: string;
541
+ kind: FieldValueKind;
542
+ placement: boolean;
543
+ arity: "single" | "multiple";
544
+ objectTypes: WorldOrbitObjectType[];
545
+ unitFamily?: UnitFamily;
546
+ }
547
+ export interface MarkdownFenceBlock {
548
+ source: string;
549
+ info: string | null;
550
+ startLine: number;
551
+ endLine: number;
552
+ }
553
+ export type WorldOrbitDiagnosticSeverity = "info" | "warning" | "error";
554
+ export type WorldOrbitDiagnosticSource = "parse" | "normalize" | "validate" | "upgrade";
555
+ export interface WorldOrbitDiagnostic {
556
+ code: string;
557
+ severity: WorldOrbitDiagnosticSeverity;
558
+ source: WorldOrbitDiagnosticSource;
559
+ message: string;
560
+ line?: number;
561
+ column?: number;
562
+ objectId?: string;
563
+ field?: string;
564
+ }
565
+ export interface DiagnosticResult<T> {
566
+ ok: boolean;
567
+ value: T | null;
568
+ diagnostics: WorldOrbitDiagnostic[];
569
+ }
570
+ export interface WorldOrbitAtlasDefaults {
571
+ view: ViewProjection;
572
+ scale: string | null;
573
+ units: string | null;
574
+ preset: RenderPresetName | null;
575
+ theme: string | null;
576
+ }
577
+ export interface WorldOrbitAtlasViewpoint {
578
+ id: string;
579
+ label: string;
580
+ summary: string;
581
+ focusObjectId: string | null;
582
+ selectedObjectId: string | null;
583
+ events: string[];
584
+ projection: ViewProjection;
585
+ preset: RenderPresetName | null;
586
+ zoom: number | null;
587
+ rotationDeg: number;
588
+ camera: WorldOrbitViewCamera | null;
589
+ layers: Partial<Record<SceneLayerId, boolean>>;
590
+ filter: RenderSceneViewpointFilter | null;
591
+ }
592
+ export interface WorldOrbitAtlasAnnotation {
593
+ id: string;
594
+ label: string;
595
+ targetObjectId: string | null;
596
+ body: string;
597
+ tags: string[];
598
+ sourceObjectId: string | null;
599
+ }
600
+ export interface WorldOrbitAtlasSystem {
601
+ type: "system";
602
+ id: string;
603
+ title: string | null;
604
+ description: string | null;
605
+ epoch: string | null;
606
+ referencePlane: string | null;
607
+ defaults: WorldOrbitAtlasDefaults;
608
+ atlasMetadata: Record<string, string>;
609
+ viewpoints: WorldOrbitAtlasViewpoint[];
610
+ annotations: WorldOrbitAtlasAnnotation[];
611
+ }
612
+ export type AtlasDocumentPathKind = "system" | "defaults" | "metadata" | "group" | "event" | "event-pose" | "object" | "viewpoint" | "annotation" | "relation";
613
+ export interface AtlasDocumentPath {
614
+ kind: AtlasDocumentPathKind;
615
+ id?: string;
616
+ key?: string;
617
+ }
618
+ export interface AtlasResolvedDiagnostic {
619
+ diagnostic: WorldOrbitDiagnostic;
620
+ path: AtlasDocumentPath | null;
621
+ }
622
+ export type WorldOrbitDraftDefaults = WorldOrbitAtlasDefaults;
623
+ export type WorldOrbitDraftViewpoint = WorldOrbitAtlasViewpoint;
624
+ export type WorldOrbitDraftAnnotation = WorldOrbitAtlasAnnotation;
625
+ export type WorldOrbitDraftSystem = WorldOrbitAtlasSystem;
626
+ export interface FormatDocumentOptions {
627
+ schema?: WorldOrbitAnyDocumentVersion | "auto";
628
+ }
629
+ export type FormattableWorldOrbitDocument = WorldOrbitDocument | WorldOrbitAtlasDocument | WorldOrbitDraftDocument;
630
+ export interface LoadedWorldOrbitSource {
631
+ schemaVersion: WorldOrbitAnyDocumentVersion;
632
+ ast: AstDocument | null;
633
+ document: WorldOrbitDocument;
634
+ atlasDocument: WorldOrbitAtlasDocument | null;
635
+ draftDocument: WorldOrbitAtlasDocument | WorldOrbitDraftDocument | null;
636
+ diagnostics: WorldOrbitDiagnostic[];
637
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,2 @@
1
+ import type { WorldOrbitDocument } from "./types.js";
2
+ export declare function validateDocument(doc: WorldOrbitDocument): void;
@@ -0,0 +1,56 @@
1
+ import { WorldOrbitError } from "./errors.js";
2
+ const SURFACE_TARGET_TYPES = new Set([
3
+ "star",
4
+ "planet",
5
+ "moon",
6
+ "asteroid",
7
+ "comet",
8
+ ]);
9
+ export function validateDocument(doc) {
10
+ const knownIds = new Set();
11
+ const objectMap = new Map();
12
+ for (const obj of doc.objects) {
13
+ if (knownIds.has(obj.id)) {
14
+ throw new WorldOrbitError(`Duplicate object id "${obj.id}"`);
15
+ }
16
+ knownIds.add(obj.id);
17
+ objectMap.set(obj.id, obj);
18
+ }
19
+ for (const obj of doc.objects) {
20
+ if (!obj.placement) {
21
+ continue;
22
+ }
23
+ if (obj.placement.mode === "orbit" || obj.placement.mode === "surface") {
24
+ if (!knownIds.has(obj.placement.target)) {
25
+ throw new WorldOrbitError(`Unknown placement target "${obj.placement.target}" on "${obj.id}"`);
26
+ }
27
+ }
28
+ if (obj.placement.mode === "surface") {
29
+ const target = objectMap.get(obj.placement.target);
30
+ if (!target || !SURFACE_TARGET_TYPES.has(target.type)) {
31
+ throw new WorldOrbitError(`Surface target "${obj.placement.target}" on "${obj.id}" is not surface-capable`);
32
+ }
33
+ }
34
+ if (obj.placement.mode === "at") {
35
+ if (obj.placement.reference.kind === "lagrange") {
36
+ validateLagrangeReference(obj, obj.placement.reference, knownIds);
37
+ }
38
+ if (obj.placement.reference.kind === "anchor") {
39
+ validateAnchorReference(obj, obj.placement.reference, knownIds);
40
+ }
41
+ }
42
+ }
43
+ }
44
+ function validateLagrangeReference(obj, reference, knownIds) {
45
+ if (!knownIds.has(reference.primary)) {
46
+ throw new WorldOrbitError(`Unknown Lagrange reference "${reference.primary}" on "${obj.id}"`);
47
+ }
48
+ if (reference.secondary && !knownIds.has(reference.secondary)) {
49
+ throw new WorldOrbitError(`Unknown Lagrange reference "${reference.secondary}" on "${obj.id}"`);
50
+ }
51
+ }
52
+ function validateAnchorReference(obj, reference, knownIds) {
53
+ if (!knownIds.has(reference.objectId)) {
54
+ throw new WorldOrbitError(`Unknown anchor target "${reference.objectId}" on "${obj.id}"`);
55
+ }
56
+ }
@@ -0,0 +1,2 @@
1
+ import type { WorldOrbitEditor, WorldOrbitEditorOptions } from "./types.js";
2
+ export declare function createWorldOrbitEditor(container: HTMLElement, options?: WorldOrbitEditorOptions): WorldOrbitEditor;