@rr0/ufoathome 0.93.1 → 0.94.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 (31) hide show
  1. package/dist-embed-scene/{SceneNames_es-DjVl7xge.js → SceneNames_es-3l2Xsebd.js} +1 -1
  2. package/{dist-embed-sighting/SceneNames_fr-DYU3H8s1.js → dist-embed-scene/SceneNames_fr-Ctvv7Jq8.js} +1 -1
  3. package/{dist-embed-sighting-editor/SceneNames_it-Box-aRN9.js → dist-embed-scene/SceneNames_it-B1_4bOob.js} +1 -1
  4. package/dist-embed-scene/rr0-scene.mjs +264 -264
  5. package/dist-embed-scene/sightingSchema-Dg73RdOt.js +1 -0
  6. package/{dist-embed-sighting-editor/SceneNames_es-DjVl7xge.js → dist-embed-sighting/SceneNames_es-3l2Xsebd.js} +1 -1
  7. package/{dist-embed-sighting-editor/SceneNames_fr-DYU3H8s1.js → dist-embed-sighting/SceneNames_fr-Ctvv7Jq8.js} +1 -1
  8. package/{dist-embed-scene/SceneNames_it-Box-aRN9.js → dist-embed-sighting/SceneNames_it-B1_4bOob.js} +1 -1
  9. package/dist-embed-sighting/{SightingMessages_es-4fj9ZZ-k.js → SightingMessages_es-C388oFa_.js} +1 -1
  10. package/dist-embed-sighting/{SightingMessages_fr-BB5bN3YX.js → SightingMessages_fr-5XN3QfyS.js} +1 -1
  11. package/dist-embed-sighting/{SightingMessages_it-BMcPw6Qy.js → SightingMessages_it-BC1yc_Fe.js} +1 -1
  12. package/dist-embed-sighting/rr0-sighting.mjs +268 -268
  13. package/dist-embed-sighting/sightingSchema-Dg73RdOt.js +1 -0
  14. package/dist-embed-sighting-editor/{KmlImport-ByKlq2_E.js → KmlImport-B9mAzJwr.js} +1 -1
  15. package/{dist-embed-sighting/SceneNames_es-DjVl7xge.js → dist-embed-sighting-editor/SceneNames_es-3l2Xsebd.js} +1 -1
  16. package/{dist-embed-scene/SceneNames_fr-DYU3H8s1.js → dist-embed-sighting-editor/SceneNames_fr-Ctvv7Jq8.js} +1 -1
  17. package/{dist-embed-sighting/SceneNames_it-Box-aRN9.js → dist-embed-sighting-editor/SceneNames_it-B1_4bOob.js} +1 -1
  18. package/dist-embed-sighting-editor/SightingEditorMessages_es-CvB2tG6p.js +1 -0
  19. package/dist-embed-sighting-editor/SightingEditorMessages_fr-DnDIaW8O.js +1 -0
  20. package/dist-embed-sighting-editor/{SightingEditorMessages_it-BZ7r2ECe.js → SightingEditorMessages_it-wwtLXEnV.js} +1 -1
  21. package/dist-embed-sighting-editor/{SightingFileEditor-CiwT0fmr.js → SightingFileEditor-Daiw_hqQ.js} +1 -1
  22. package/dist-embed-sighting-editor/browser-_Ncw3Jhn.js +1 -0
  23. package/dist-embed-sighting-editor/rr0-sighting-editor.mjs +326 -286
  24. package/dist-embed-sighting-editor/sightingSchema-Dg73RdOt.js +1 -0
  25. package/package.json +1 -1
  26. package/dist-embed-scene/sightingSchema-Bsub_0vA.js +0 -1
  27. package/dist-embed-sighting/sightingSchema-Bsub_0vA.js +0 -1
  28. package/dist-embed-sighting-editor/SightingEditorMessages_es-24hPje__.js +0 -1
  29. package/dist-embed-sighting-editor/SightingEditorMessages_fr-Dznf4tD5.js +0 -1
  30. package/dist-embed-sighting-editor/browser-c3U3mMxj.js +0 -1
  31. package/dist-embed-sighting-editor/sightingSchema-Bsub_0vA.js +0 -1
@@ -0,0 +1 @@
1
+ const e={type:"number"},t={type:"string",doc:'Which account this is, unique across every recording anywhere: the day it happened, then who saw it ("1964-04-24-ZamoraLonnie"), or where for an anonymous observer.'},o={type:"object",fields:{year:{type:"number"},month:{type:"number"},day:{type:"number"},hour:{type:"number"},minute:{type:"number"},second:{type:"number"},raw:{type:"string",doc:"The exact EDTF-ish text as typed in the editor UI (e.g."}}},r={type:"object",doc:"See SightingEvent.endTime.",fields:{year:{type:"number"},month:{type:"number"},day:{type:"number"},hour:{type:"number"},minute:{type:"number"},second:{type:"number"},raw:{type:"string",doc:"The exact EDTF-ish text as typed in the editor UI (e.g."}}},n={type:"number",doc:"See SightingEvent.durationSeconds."},i={type:"number",doc:"See SightingEvent.utcOffsetHours — the legal time zone `time`/`endTime` are expressed in."},s={type:"string",doc:"See SightingEvent.timeZone — the IANA rule `utcOffsetHours` was derived from, when it was."},a={type:"array",fields:{lat:{type:"number"},lng:{type:"number"},name:{type:"string",doc:'The place as it is named, fully qualified — "Valensole, Alpes-de-Haute-Provence, …, France".'}}},d={type:"object",doc:"See Sighting.observer.",fields:{id:{type:"string",doc:'Who this is, as a reference: last name then first names, run together ("ZamoraLonnie"), whether or not a page exists for them yet.'},title:{type:"string"},lastName:{type:"string"},firstNames:{type:"array"}}},c={type:"object",doc:"Who saw it and how their account travelled — see Account, and Sighting.account.",fields:{observerAgeYears:{type:"number",doc:"The main observer's age in years AT THE TIME, not today — a 1974 account is read by whoever finds it decades later, and the number that means anything is the one from then."},observerOccupation:{type:"string",doc:'What the main observer did, as they are described: "boulanger", "pilote de ligne", "gendarme".',loose:!0},source:{type:"enum",doc:"How the account reached the person who wrote this recording.",values:["on-site","interview","telephone","questionnaire","letter","social-media","press"]},followedUp:{type:"boolean",doc:"Whether the observer was gone back to after the first account."}}},h={type:"number",doc:"How much the observer's body sways the view at rest: 1 a person, 0 a tripod — see Sighting.sway."},l={type:"object",doc:"The vehicle the observer was in, when the decor does not draw it — see Sighting.vehicle.",fields:{kind:{type:"enum",values:["car","van","truck","motorcycle","generic"]},windowsOpen:{type:"boolean",doc:"Whether the windows were open: the road and the wind come in, the cabin no longer muffles the engine."},noise:{type:"number",doc:'How loud it was, against an ordinary one of its kind: 1 by default, 1.5 for "very noisy".'}}},p={type:"string",doc:"See SightingEvent.description — a plain string, or one per language.",loose:!0},u={type:"array",doc:"See SightingEvent.tags."},y={type:"object",fields:{keyframes:{type:"array",fields:{t:{type:"number"},shapes:{type:"array",fields:{sourceId:{type:"string"},shape:{type:"object",fields:{kind:{type:"enum",values:["oval","polygon"]},bounds:{type:"object",fields:{x:{type:"number"},y:{type:"number"},width:{type:"number"},height:{type:"number"}}},color:{type:"string",doc:"CSS color"},angle:{type:"number",doc:"Rotation in radians about the shape's centre, positive = clockwise on screen; 0 = no rotation"},transparency:{type:"number",doc:"0 = opaque, 1 = fully transparent"},haloScale:{type:"number",doc:"0 = no halo/glow, >1 = larger glow radius"},blur:{type:"number",doc:"How indistinct the observer said its edges were — 0 for a hard outline, 1 for a shape with no edge at all."},brightness:{type:"number",doc:"How dazzling the observer said it was — 0 for a light you can look at, 1 for one you cannot."},selected:{type:"boolean"},title:{type:"string",doc:"What the observer calls it, if anything.",loose:!0},angular:{type:"object",doc:"How big this looked to the observer, in degrees of arc (see AngularExtent) — the recording's OWN statement of size, and the one it is allowed to make.",fields:{widthDeg:{type:"number",doc:"How wide it looked, in degrees of arc."},heightDeg:{type:"number",doc:"How tall it looked, in degrees of arc."}}},aim:{type:"object",doc:"Where the phenomenon itself was in the observer's sky (the direction of the shape's centre, not the way the observer was facing) — degrees of azimuth from true north and of altitude above the horizon, the same conventions as ObserverPose.",fields:{azimuthDeg:{type:"number",doc:"Degrees clockwise from true north, the same convention as ObserverPose.headingDeg."},altitudeDeg:{type:"number",doc:"Degrees above (positive) or below the horizon."}}},points:{type:"array",doc:"Points relative to bounds origin (0,0 = bounds.x, bounds.y)",fields:{x:{type:"number"},y:{type:"number"}}}}}}}}},order:{type:"array",doc:"Back-to-front paint/hit-test order — see Timeline's own `order` field."},groups:{type:"array",doc:"Each inner array is one group's member sourceIds (always >= 2 members) — see Timeline's own `groups` field."}}},m={type:"object",doc:"The observer's position/elevation/orientation over time — absent for older recordings, which fall back to the legacy static place[0] (see Sighting.ts's resolveObserverPoseAt).",fields:{keyframes:{type:"array",fields:{t:{type:"number"},pose:{type:"object",fields:{lat:{type:"number",doc:"Decimal degrees."},lng:{type:"number"},elevationM:{type:"number",doc:"Metres above the local ground under the observer, not above sea level: 0 for someone standing on it, the height of a window or a cliff top otherwise."},headingDeg:{type:"number",doc:"Degrees clockwise from true north."},pitchDeg:{type:"number",doc:"Degrees above (positive) or below (negative) the local horizontal — how far up/down the observer was looking, e.g."},rollDeg:{type:"number",doc:"How far the instrument itself was tilted about its own line of sight, degrees, positive clockwise as the observer saw it — a camera held askew, a head leaned over."},fovDeg:{type:"number",doc:"Vertical field of view in degrees, as a Three.js PerspectiveCamera would take it."},fNumber:{type:"number",doc:"How far the lens was stopped down — undefined for anything the recording did not state, which then falls back to the instrument's own setting (see Instrument.fNumber)."},focusDistanceM:{type:"number",doc:"How far away the lens was focused, metres — undefined meaning at infinity, which is where a camera pointed at the sky sits and the only setting under which everything celestial comes out sharp."}}}}}}},g={type:"object",doc:"Weather over time — absent for older recordings, which fall back to the legacy static `weather` field below (see Sighting.ts's resolveWeatherAt).",fields:{keyframes:{type:"array",fields:{t:{type:"number"},weather:{type:"object",fields:{cloudLayers:{type:"array",doc:"Explicit layers override the historical cloud fields; [] means no clouds.",fields:{id:{type:"string",doc:"Stable across keyframes: reordering layers must not regenerate their cloud pattern."},instances:{type:"array",doc:"Optional explicit masses, independent of the generated coverage percentage.",fields:{id:{type:"string"},eastM:{type:"number",doc:"Position relative to the recording's initial observer, in metres east/north."},northM:{type:"number"},baseM:{type:"number"},thicknessM:{type:"number"},widthM:{type:"number"},depthM:{type:"number"},rotationDeg:{type:"number"},density:{type:"number"},darkness:{type:"number",doc:"Visual shading, 0 (white) to 1 (very dark); absent inherits the parent layer."},seed:{type:"number"}}},type:{type:"enum",values:["cumulus","stratus","stratocumulus","cirrus","unknown"]},baseM:{type:"number",doc:"Base in metres above the recording's reference ground, not above the moving observer."},thicknessM:{type:"number",doc:"Vertical extent in metres."},coverage:{type:"number",doc:"Horizontal coverage, 0–1."},sizeM:{type:"number",doc:"Characteristic horizontal cloud size in metres."},density:{type:"number",doc:"Relative optical density, 0–2; zero is transparent."},darkness:{type:"number",doc:"Visual shading, 0 (white) to 1 (very dark)."},iceCrystalAlignment:{type:"number",doc:"Degree of preferential crystal orientation, meaningful only for cirrus."},seed:{type:"number",doc:"Reproducible variation; defaults to a hash of the stable layer id."},windDirectionDeg:{type:"number",doc:"Optional wind overrides; bearing TOWARD which the cloud travels, clockwise from north."},windSpeed:{type:"number"}}},cloudCover:{type:"number",doc:"0 = clear sky, 1 = fully overcast."},cloudDarkness:{type:"number",doc:"0 = light/clear clouds, 1 = dark/stormy character."},cloudBaseM:{type:"number",doc:"Height of the cloud layer's BASE above the ground, in meters — 600 to 2000 m covers most real low cloud."},highCloudCover:{type:"number",doc:"How much of the sky the HIGH deck covered, 0 to 1 — cirrus and cirrostratus, above about six kilometres, where anything present is ice rather than water."},lowerCloudCover:{type:"number",doc:"How much of the sky the LOW and MIDDLE decks covered, 0 to 1 — the cloud that stands between a observer and anything higher up."},iceCrystalAlignment:{type:"number",doc:"How steadily the ice crystals were falling, 0 to 1 — the one thing about the sky that decides which halo forms stood, and the one thing no record of any sighting holds."},relativeHumidity:{type:"number",doc:"Relative humidity near the ground, 0 to 1."},precipitationType:{type:"enum",values:["none","rain","snow","hail"]},precipitationIntensity:{type:"number",doc:'0-1; meaningless while precipitationType is "none".'},precipitationAmount:{type:"number",doc:"How much of that precipitation is actually falling yet, 0 to 1 — absent meaning all of it."},windDirectionDeg:{type:"number",doc:"Degrees clockwise from true north — same convention as ObserverPose.headingDeg, and the direction the wind blows *toward*, not the one it comes from: SceneRenderer drifts every precipitation particle and cloud field along exactly this bearing (`sin/-cos`, north = -Z), so 0 means snow drifting northward."},windSpeed:{type:"number",doc:"Real-world wind speed in m/s (0 = calm, ~30 = violent storm/hurricane-force) — drives both cloud advection, visual precipitation drift and wind audio volume directly."},storm:{type:"boolean",doc:"Whether a thunderstorm was reported — drives both a scene-fog lightning flash and a delayed thunderclap (see SceneRenderer's lightning-flash scheduling, named for the visual mechanism it implements internally, not for this field)."}}}}}}},b={type:"object",doc:`Legacy static weather condition, kept only as weatherTrack's own fallback for recordings made before it existed — absent means "unknown/not recorded", not "clear skies" (renderers default to DEFAULT_WEATHER, see Weather.ts).`,fields:{cloudLayers:{type:"array",doc:"Explicit layers override the historical cloud fields; [] means no clouds.",fields:{id:{type:"string",doc:"Stable across keyframes: reordering layers must not regenerate their cloud pattern."},instances:{type:"array",doc:"Optional explicit masses, independent of the generated coverage percentage.",fields:{id:{type:"string"},eastM:{type:"number",doc:"Position relative to the recording's initial observer, in metres east/north."},northM:{type:"number"},baseM:{type:"number"},thicknessM:{type:"number"},widthM:{type:"number"},depthM:{type:"number"},rotationDeg:{type:"number"},density:{type:"number"},darkness:{type:"number",doc:"Visual shading, 0 (white) to 1 (very dark); absent inherits the parent layer."},seed:{type:"number"}}},type:{type:"enum",values:["cumulus","stratus","stratocumulus","cirrus","unknown"]},baseM:{type:"number",doc:"Base in metres above the recording's reference ground, not above the moving observer."},thicknessM:{type:"number",doc:"Vertical extent in metres."},coverage:{type:"number",doc:"Horizontal coverage, 0–1."},sizeM:{type:"number",doc:"Characteristic horizontal cloud size in metres."},density:{type:"number",doc:"Relative optical density, 0–2; zero is transparent."},darkness:{type:"number",doc:"Visual shading, 0 (white) to 1 (very dark)."},iceCrystalAlignment:{type:"number",doc:"Degree of preferential crystal orientation, meaningful only for cirrus."},seed:{type:"number",doc:"Reproducible variation; defaults to a hash of the stable layer id."},windDirectionDeg:{type:"number",doc:"Optional wind overrides; bearing TOWARD which the cloud travels, clockwise from north."},windSpeed:{type:"number"}}},cloudCover:{type:"number",doc:"0 = clear sky, 1 = fully overcast."},cloudDarkness:{type:"number",doc:"0 = light/clear clouds, 1 = dark/stormy character."},cloudBaseM:{type:"number",doc:"Height of the cloud layer's BASE above the ground, in meters — 600 to 2000 m covers most real low cloud."},highCloudCover:{type:"number",doc:"How much of the sky the HIGH deck covered, 0 to 1 — cirrus and cirrostratus, above about six kilometres, where anything present is ice rather than water."},lowerCloudCover:{type:"number",doc:"How much of the sky the LOW and MIDDLE decks covered, 0 to 1 — the cloud that stands between a observer and anything higher up."},iceCrystalAlignment:{type:"number",doc:"How steadily the ice crystals were falling, 0 to 1 — the one thing about the sky that decides which halo forms stood, and the one thing no record of any sighting holds."},relativeHumidity:{type:"number",doc:"Relative humidity near the ground, 0 to 1."},precipitationType:{type:"enum",values:["none","rain","snow","hail"]},precipitationIntensity:{type:"number",doc:'0-1; meaningless while precipitationType is "none".'},precipitationAmount:{type:"number",doc:"How much of that precipitation is actually falling yet, 0 to 1 — absent meaning all of it."},windDirectionDeg:{type:"number",doc:"Degrees clockwise from true north — same convention as ObserverPose.headingDeg, and the direction the wind blows *toward*, not the one it comes from: SceneRenderer drifts every precipitation particle and cloud field along exactly this bearing (`sin/-cos`, north = -Z), so 0 means snow drifting northward."},windSpeed:{type:"number",doc:"Real-world wind speed in m/s (0 = calm, ~30 = violent storm/hurricane-force) — drives both cloud advection, visual precipitation drift and wind audio volume directly."},storm:{type:"boolean",doc:"Whether a thunderstorm was reported — drives both a scene-fog lightning flash and a delayed thunderclap (see SceneRenderer's lightning-flash scheduling, named for the visual mechanism it implements internally, not for this field)."}}},f={type:"object",doc:"What the sighting sounded like over time — see SoundTrack.",fields:{keyframes:{type:"array",fields:{t:{type:"number"},sound:{type:"object",fields:{kind:{type:"enum",values:["none","hum","whistle","rumble","crackle"]},volume:{type:"number",doc:"How loud it was, 0 (inaudible) to 1 (as loud as the observer could describe) — deliberately relative rather than a dB SPL figure: nobody reports a sound level in decibels, and inventing one would claim a measurement where there is only an impression."},pitchHz:{type:"number",doc:`The sound's own frequency in Hz — the oscillator's pitch for the pitched kinds ("hum", "whistle"), and the noise filter's centre for the unpitched ones ("rumble", "crackle"), where it reads as how deep or how sharp the noise is.`},src:{type:"string",doc:"An actual audio recording of the sound, when one exists (a observer who filmed the event, a later recording of the same phenomenon) — replaces synthesis entirely while it is set, with `volume` still scaling it."}}}}}}},w={type:"array",doc:"See Sighting.decor.",fields:{id:{type:"string"},kind:{type:"enum",values:["building","tree","crop","mound","streetlight","vehicle","observer","aircraft","shrub","bridge","wire","entity"]},title:{type:"string",doc:'Optional display name, same role as Shape.title — falls back to a generic "{kind} {n}" label (see SightingEditorElement.decorLabel) when absent.',loose:!0},eastM:{type:"number",doc:"Meters from the observer's own position — eastM positive = east, northM positive = north."},northM:{type:"number"},headingDeg:{type:"number",doc:"Degrees clockwise from true north, same convention as ObserverPose.headingDeg — which way a vehicle is facing, or a observer looking."},lit:{type:"boolean",doc:"Streetlight lamp / vehicle headlights switched on."},litKeyframes:{type:"array",doc:"Sorted by t.",fields:{t:{type:"number"},lit:{type:"boolean"}}},lights:{type:"array",doc:"The object's individual lamps, each with its own place on the body and its own rhythm — see DecorLight, and LIGHT_RIGS for the ready-made sets.",fields:{id:{type:"string"},offsetM:{type:"object",doc:"Where it sits on the object, in meters relative to the object's own centre and heading: +x is its right, +y up, +z its front.",fields:{x:{type:"number"},y:{type:"number"},z:{type:"number"}}},color:{type:"string",doc:"CSS hex colour, as emitted — the regulated red/green/white of navigation lights, the amber of a hazard flasher."},intensity:{type:"number",doc:"Peak luminous intensity as a ratio to an ordinary navigation light's (1, about a hundred candela — see DecorSystem's LAMP_CANDELA); the airliner rig (LIGHT_RIGS) gives its beacon 1.5 and its wingtip strobes 20."},pattern:{type:"object",fields:{kind:{type:"enum",values:["steady","flash"]},perMinute:{type:"number"},dutyCycle:{type:"number"},phase:{type:"number"}}}}},track:{type:"array",doc:"Where the object is over time, when it moves — an aircraft crossing the sky, a car driving past.",fields:{t:{type:"number"},eastM:{type:"number"},northM:{type:"number"},altitudeM:{type:"number",doc:"Meters above the observer's own elevation."},headingDeg:{type:"number"}}},sightingUrl:{type:"string",doc:`For kind "observer" only: the URL of that observer's own sighting.json recording, if known — lets the 3D scene's own context menu offer "view this observer's account" (loading it the same way SightingEditorElement.importFromUrl already does).`},windows:{type:"object",doc:"Per-side window opacity, 0 (fully open — the pane is invisible, and DecorSystem.addRoom's own interior wall panel is skipped there too, same as no window at all) to 100 (fully closed — a solid-looking pane)."},color:{type:"string",doc:'What colour this object actually is, as a CSS colour — the same way a shape states its own (see Shape.color), because a recording is written and read by people and "#8f86a8" is a colour a person can type.'},observerSide:{type:"enum",values:["front","behind","left","right","front-left","front-right","behind-left","behind-right"]},engine:{type:"object",doc:"A vehicle heard running — see DecorEngine: its engine turning with its own `track`, heard less the further it is from the observer.",fields:{kind:{type:"enum",doc:'Which sound: a decor object\'s own `kind` says only "vehicle".',values:["car","van","truck","motorcycle","generic"]},noise:{type:"number",doc:"As ObserverVehicle.noise."}}},bridge:{type:"object",doc:'Kind "bridge" only: how it is built, where that is known — see BridgeStructure.',fields:{spanM:{type:"number",doc:"Metres of open span under the deck, centred on the object."},deckThicknessM:{type:"number",doc:"Thickness of the deck slab, metres."},railing:{type:"object",doc:"The railing along both edges: its height above the road, the spacing of its posts, and how many horizontal rails it has — two rails make two rows of rectangular openings.",fields:{heightM:{type:"number"},postSpacingM:{type:"number"},rails:{type:"number"}}}}},wire:{type:"object",doc:'Kind "wire" only: how many strands, where they hang, and which ends stand on a pole — see WireStructure.',fields:{strands:{type:"array",doc:"The strands: each one's height above the ground and, for a crossarm, how far it hangs to one side of the line (positive to the right of its heading).",fields:{heightM:{type:"number"},acrossM:{type:"number"}}},poles:{type:"enum",doc:"Which ends stand on a pole: both (default), the one the object's heading points away from (`start`) or towards (`end`), or none, for a line anchored on buildings at both ends.",values:["none","both","start","end"]},diameterM:{type:"number",doc:"How thick a strand is, metres."},poleHeightM:{type:"number",doc:"How tall a pole is, metres."}}},floors:{type:"number",doc:'Kind "building" only: number of upper stories above the ground floor, set when the building is created (default 2, see SightingEditorElement.addDecor) and editable afterward.'},occupiedFloor:{type:"number",doc:'Kind "building" only, meaningful once observerSide is set: which floor the observer is on, 0 (ground floor) up to floors.'},occludesSourceIds:{type:"array",doc:"Shape sourceIds (see Timeline.sourceIds/Shape) this decor object sits in front of, from the observer's own reported viewpoint — occluding that shape wherever their screen positions line up (see SceneRenderer.isScreenPointOccluded)."},sizeM:{type:"object",doc:"How big it really is, in meters, along its own axes — see DecorSize.",fields:{widthM:{type:"number"},lengthM:{type:"number"},heightM:{type:"number"}}},model:{type:"object",doc:"The real 3D model that stands in for the primitive, if one does — see DecorModelRef.",fields:{id:{type:"string",doc:"Catalogue entry, resolved by the live DecorModelProvider."},url:{type:"string",doc:"Direct glTF/GLB address, taking precedence over `id`."},headingOffsetDeg:{type:"number",doc:"Degrees to turn the loaded model about its own vertical axis so its nose points the way this scene's heading convention expects (0 faces -Z — see DecorSystem's build)."},credit:{type:"object",doc:"Who made it and under what licence.",fields:{title:{type:"string"},author:{type:"string"},license:{type:"string",doc:"Licence name as its author states it, e.g."},sourceUrl:{type:"string",doc:"Where it came from, so the claim can be checked."}}}}}}},v={type:"array",doc:"The roads the account's own plan draws — see Sighting.roads and Road.ts.",fields:{id:{type:"string"},title:{type:"string",doc:"What the account calls it, where it calls it anything.",loose:!0},surface:{type:"enum",values:["paved","gravel","dirt"]},widthM:{type:"number",doc:"Carriageway width, metres."},path:{type:"array",doc:"The centre line, in metres east and north of the observer's place at t=0.",fields:{eastM:{type:"number"},northM:{type:"number"}}},source:{type:"string",doc:"Where this line comes from — the plan, the survey, the report it was read off.",loose:!0}}},k={type:"array",doc:"What an investigator drew over the place, imported from their file — see Sighting.traces and Trace.ts.",fields:{id:{type:"string"},title:{type:"string",doc:'What its author called it ("Ligne de visée depuis la ferme").',loose:!0},kind:{type:"enum",values:["polygon","point","line"]},points:{type:"array",doc:"One point for a marker, the vertices of a line, the vertices of an outline (not repeated at the end: it is closed by being a polygon).",fields:{lat:{type:"number"},lng:{type:"number"},altM:{type:"number",doc:"Metres, read as `InvestigatorTrace.altitude` says."}}},altitude:{type:"enum",doc:"How `altM` is read.",values:["ground","relative","absolute"]},color:{type:"string",doc:"CSS colour the author gave it, `#rrggbb`."},source:{type:"string",doc:"Whose it is and where it comes from — the person, the report, the file.",loose:!0}}},S={type:"object",doc:"Which meteorological record `weatherTrack` was looked up from, when it wasn't the observer who stated the conditions — see Sighting.weatherSource.",fields:{id:{type:"string",doc:"Stable dataset id, e.g."},name:{type:"string",doc:"Human-readable dataset name, e.g."},url:{type:"string",doc:"The exact request that produced these values, so the claim stays checkable years later."}}},D={type:"string",doc:"Which INSTRUMENTS entry this was observed through — see Sighting.instrumentId."},M={type:"number",doc:"How long the shutter stayed open, seconds — one value for the whole observation, see Sighting.exposureSeconds."},T={type:"number",doc:"The speed of the film or sensor this picture was taken on — see Sighting.iso."},W={type:"number",doc:`How bright the night sky is at the place, towns and all: the zenith of a moonless night in magnitudes per square arcsecond, a Sky Quality Meter's reading or the World Atlas's "SQM" figure (Falchi et al.`},j={type:"boolean",doc:"Whether the map of where the observer stood starts open — see Sighting.observerMap."},H={type:"array",doc:"The named moments of the account — see Milestone.",fields:{t:{type:"number",doc:"When, in milliseconds from the start of the recording — the same scale every track uses."},label:{type:"string",doc:'Short label, shown on the seek bar: the letter or number the account itself uses ("A", "B"), or a couple of words where it uses none.',loose:!0},note:{type:"string",doc:"What happened at that moment, in the account's own words where possible.",loose:!0}}},x={type:"array",doc:"Pictures of the place, laid over the reconstruction at the direction each was registered in — see SceneReference.",fields:{id:{type:"string",doc:"Stable id, what the editor's own list and a future trace on the picture name."},kind:{type:"enum",values:["photo","panorama"]},src:{type:"string",doc:"Where the picture is: an address, or the picture itself as a `data:` URL."},title:{type:"string",doc:'What to call it — "Vue depuis le muret, fin été 1968".',loose:!0},credit:{type:"string",doc:"Who made it and on what terms — shown wherever the picture is, because a credit that is not displayed is not a licence (see DataSource for the same rule on the data)."},creditUrl:{type:"string",doc:"Where that credit points: the source page, the licence."},t:{type:"number",doc:"The instant of the timeline it was taken at, milliseconds, for a picture made DURING the observation — by the observer, or by whoever was there."},from:{type:"object",doc:"Where it was taken from — the one point its registration holds for.",fields:{lat:{type:"number"},lng:{type:"number"}}},drawing:{type:"boolean",doc:"Whether somebody drew on it — a trajectory, an outline, an arrow — so that what the picture shows of the phenomenon is a statement made afterwards, not a thing the camera recorded."},opacity:{type:"number",doc:"How much of it shows, 0 to 1 — the starting point of the reader's own slider, since the comparison is made by sliding: all picture, all render, and the registration checked at every step between."},registration:{type:"object",fields:{headingDeg:{type:"number",doc:"Degrees clockwise from true north, the direction the picture's centre looks at."},pitchDeg:{type:"number",doc:"Degrees above the local horizontal, positive up."},rollDeg:{type:"number",doc:"Degrees the picture is tilted about its own axis, positive clockwise as it is looked at — see ObserverPose.rollDeg."},fovDeg:{type:"number",doc:"The picture's VERTICAL field, degrees — what the lens took in top to bottom, its horizontal field following from the image's own aspect ratio."}}},landmarks:{type:"array",doc:"The details it was lined up on — see PictureLandmark.",fields:{id:{type:"string"},label:{type:"string",doc:'What the detail is — "Arbre masquant", "barrière".',loose:!0},picture:{type:"object",doc:"Where it is on the picture, 0..1 from the top-left corner.",fields:{u:{type:"number"},v:{type:"number"}}},scene:{type:"object",doc:"Where it is from the observer, in the scene.",fields:{azimuthDeg:{type:"number"},altitudeDeg:{type:"number"}}}}}}},C={type:"array",doc:"Where the account can be read as it was given, each one a source — see RecordingSource.",fields:{type:{type:"enum",values:["book","article"]},title:{type:"string"},authors:{type:"array",doc:"The author(s) name(s): for a post, the account that posted it."},url:{type:"string",doc:"Where it can be read."},publication:{type:"object",doc:"Who published it and when (EDTF).",fields:{publisher:{type:"string"},time:{type:"string"}}},index:{type:"string",doc:"Chapter, page, etc."}}},I={type:"object",doc:"What the observer took it to be, in metres — see InterpretationJson.",fields:{title:{type:"string",doc:'What the claim is, in a few words — "Craft on its legs", "Weather balloon at 3 km".',loose:!0},bodies:{type:"array",fields:{id:{type:"string"},title:{type:"string",loose:!0},explains:{type:"array",doc:"The phenomena of the account (their `sourceId`s) this body claims to be — what its projected outline is measured against at each instant, and what is drawn as a ghost beside it."},model:{type:"object",doc:"What it is shaped like.",fields:{id:{type:"string",doc:"Catalogue entry, resolved by the live DecorModelProvider."},url:{type:"string",doc:"Direct glTF/GLB address, taking precedence over `id`."},headingOffsetDeg:{type:"number",doc:"Degrees to turn the loaded model about its own vertical axis so its nose points the way this scene's heading convention expects (0 faces -Z — see DecorSystem's build)."},credit:{type:"object",doc:"Who made it and under what licence.",fields:{title:{type:"string"},author:{type:"string"},license:{type:"string",doc:"Licence name as its author states it, e.g."},sourceUrl:{type:"string",doc:"Where it came from, so the claim can be checked."}}}}},outlineNode:{type:"string",doc:'The node of the model that IS what the observer drew — "hull" for a craft on legs the observer drew as an oval — and so what its outline is measured by (see BodyConfrontation).'},track:{type:"array",fields:{t:{type:"number"},eastM:{type:"number"},northM:{type:"number"},azimuthDeg:{type:"number"},altitudeDeg:{type:"number"},distanceM:{type:"number"},onGround:{type:"boolean",doc:"Standing on the ground."},present:{type:"boolean",doc:"Gone from here on — `false` — or back — `true`."},altitudeAboveGroundM:{type:"number",doc:"Metres between the ground under it and its lowest point."},sizeM:{type:"object",fields:{widthM:{type:"number"},lengthM:{type:"number"},heightM:{type:"number"}}},attitude:{type:"object",fields:{headingDeg:{type:"number"},pitchDeg:{type:"number"},rollDeg:{type:"number"}}},appearance:{type:"object",fields:{color:{type:"string",doc:"Its surface colour, CSS."},albedo:{type:"number",doc:"How much of the light falling on it it sends back, 0-1: aluminium ~0.7, a matt dark hull ~0.1."},luminanceCdM2:{type:"number",doc:"What it gives out of itself, candela per square metre — read through the scene's own photometry exactly as a flame's is (see BodyFlame), so that the same figure is a lamp at night and nothing at all against a noon sky."}}},flame:{type:"object",doc:"A flame coming out of it, from here on — see BodyFlame.",fields:{node:{type:"string"},lengthM:{type:"number",doc:"How far it reaches from the node, metres."},widthM:{type:"number",doc:"How wide it is at its widest, metres."},color:{type:"string",doc:"Its colour where it leaves the node, CSS."},tipColor:{type:"string",doc:"Its colour at its far end; the same as `color` when absent."},luminanceCdM2:{type:"number"},raisesDust:{type:"boolean",doc:"Whether it raises dust where it meets the ground — a flame reaching loose, dry soil does, the more the nearer it gets."}}},motions:{type:"object",doc:"How far along each of its model's own movements it is, by the movement's name in the model (a glTF animation): 0 at its start, 1 at its end, and on past 1 for one that repeats — a turn made three times is 3."},lights:{type:"object",doc:"The luminance of each of its model's own lights, cd/m², by the name of the light's material in the model: what lets one body carry lights that behave each their own way — a steady white at each end, a red one flashing between."}}}}},smoke:{type:"array",doc:"Fires the interpretation lights on the ground, as their smoke — see SmokeSource.",fields:{eastM:{type:"number"},northM:{type:"number"},fromT:{type:"number"},untilT:{type:"number"},halfLifeS:{type:"number",doc:"How fast it dies down, seconds to half its thickness — brush flares and smoulders."}}},reentries:{type:"array",doc:"Re-entries it claims were seen: placed on the Earth, not round the observer — see ReentryJson.",fields:{id:{type:"string"},title:{type:"string",loose:!0},explains:{type:"array",doc:"The phenomena of the account (their `sourceId`s) this re-entry claims to be — see BodyJson.explains."},object:{type:"object",doc:"The object that came down, when it is known — the catalogue says which piece it was.",fields:{name:{type:"string",doc:'Its catalogue name — "SL-12 R/B".'},cosparId:{type:"string",doc:'International designator — "1968-013C".'},norad:{type:"number",doc:"US Space Surveillance Network catalogue number — 3136."}}},track:{type:"array",doc:"Where the leading point of the break-up was, at instants of the recording.",fields:{t:{type:"number"},lat:{type:"number"},lng:{type:"number"},altitudeKm:{type:"number",doc:"Height above the ellipsoid, km."}}},fragments:{type:"array",doc:"The pieces seen, each following the same path some seconds behind the leading point.",fields:{id:{type:"string"},lagS:{type:"number",doc:"Seconds behind the leading point, along the same path."},fromT:{type:"number",doc:"When it is first seen, ms of the recording — when it broke off, or when it began to glow."},untilT:{type:"number",doc:"When it goes out, ms — burned up, or slowed below glowing."},absoluteMagnitude:{type:"number",doc:"Its brightness as a magnitude at 100 km — the meteor astronomers' absolute magnitude, which a fireball report gives — from which the brightness at the observer's actual distance follows."},color:{type:"string",doc:"Its colour, as a CSS hex colour."},trainS:{type:"number",doc:"How long a stretch of its own past path still glows behind it, seconds: the tail observers describe."}}}}}}},z={version:e,id:t,time:o,endTime:r,durationSeconds:n,utcOffsetHours:i,timeZone:s,place:a,observer:d,account:c,sway:h,vehicle:l,description:p,tags:u,timeline:y,observerTrack:m,weatherTrack:g,weather:b,soundTrack:f,decor:w,roads:v,traces:k,weatherSource:S,instrument:D,exposureSeconds:M,iso:T,lightPollution:W,observerMap:j,milestones:H,references:x,sources:C,interpretation:I};export{c as account,w as decor,z as default,p as description,n as durationSeconds,r as endTime,M as exposureSeconds,t as id,D as instrument,I as interpretation,T as iso,W as lightPollution,H as milestones,d as observer,j as observerMap,m as observerTrack,a as place,x as references,v as roads,f as soundTrack,C as sources,h as sway,u as tags,o as time,s as timeZone,y as timeline,k as traces,i as utcOffsetHours,l as vehicle,e as version,b as weather,S as weatherSource,g as weatherTrack};
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@rr0/ufoathome",
3
3
  "type": "module",
4
- "version": "0.93.1",
4
+ "version": "0.94.0",
5
5
  "description": "UFO@home — record and replay a UFO sighting's shape, movement and appearance",
6
6
  "author": "Jérôme Beau <rr0@rr0.org> (https://rr0.org)",
7
7
  "license": "MIT",
@@ -1 +0,0 @@
1
- const e={type:"number"},t={type:"string",doc:'Which account this is, unique across every recording anywhere: the day it happened, then who saw it ("1964-04-24-ZamoraLonnie"), or where for an anonymous observer.'},o={type:"object",fields:{year:{type:"number"},month:{type:"number"},day:{type:"number"},hour:{type:"number"},minute:{type:"number"},second:{type:"number"},raw:{type:"string",doc:"The exact EDTF-ish text as typed in the editor UI (e.g."}}},r={type:"object",doc:"See SightingEvent.endTime.",fields:{year:{type:"number"},month:{type:"number"},day:{type:"number"},hour:{type:"number"},minute:{type:"number"},second:{type:"number"},raw:{type:"string",doc:"The exact EDTF-ish text as typed in the editor UI (e.g."}}},n={type:"number",doc:"See SightingEvent.durationSeconds."},i={type:"number",doc:"See SightingEvent.utcOffsetHours — the legal time zone `time`/`endTime` are expressed in."},s={type:"string",doc:"See SightingEvent.timeZone — the IANA rule `utcOffsetHours` was derived from, when it was."},a={type:"array",fields:{lat:{type:"number"},lng:{type:"number"},name:{type:"string",doc:'The place as it is named, fully qualified — "Valensole, Alpes-de-Haute-Provence, …, France".'}}},d={type:"object",doc:"See Sighting.observer.",fields:{id:{type:"string",doc:'Who this is, as a reference: last name then first names, run together ("ZamoraLonnie"), whether or not a page exists for them yet.'},title:{type:"string"},lastName:{type:"string"},firstNames:{type:"array"}}},c={type:"object",doc:"Who saw it and how their account travelled — see Account, and Sighting.account.",fields:{observerAgeYears:{type:"number",doc:"The main observer's age in years AT THE TIME, not today — a 1974 account is read by whoever finds it decades later, and the number that means anything is the one from then."},observerOccupation:{type:"string",doc:'What the main observer did, as they are described: "boulanger", "pilote de ligne", "gendarme".',loose:!0},source:{type:"enum",doc:"How the account reached the person who wrote this recording.",values:["on-site","interview","telephone","questionnaire","letter","social-media","press"]},followedUp:{type:"boolean",doc:"Whether the observer was gone back to after the first account."}}},l={type:"number",doc:"How much the observer's body sways the view at rest: 1 a person, 0 a tripod — see Sighting.sway."},h={type:"object",doc:"The vehicle the observer was in, when the decor does not draw it — see Sighting.vehicle.",fields:{kind:{type:"enum",values:["car","van","truck","motorcycle","generic"]},windowsOpen:{type:"boolean",doc:"Whether the windows were open: the road and the wind come in, the cabin no longer muffles the engine."},noise:{type:"number",doc:'How loud it was, against an ordinary one of its kind: 1 by default, 1.5 for "very noisy".'}}},u={type:"string",doc:"See SightingEvent.description — a plain string, or one per language.",loose:!0},p={type:"array",doc:"See SightingEvent.tags."},y={type:"object",fields:{keyframes:{type:"array",fields:{t:{type:"number"},shapes:{type:"array",fields:{sourceId:{type:"string"},shape:{type:"object",fields:{kind:{type:"enum",values:["oval","polygon"]},bounds:{type:"object",fields:{x:{type:"number"},y:{type:"number"},width:{type:"number"},height:{type:"number"}}},color:{type:"string",doc:"CSS color"},angle:{type:"number",doc:"Rotation in radians about the shape's centre, positive = clockwise on screen; 0 = no rotation"},transparency:{type:"number",doc:"0 = opaque, 1 = fully transparent"},haloScale:{type:"number",doc:"0 = no halo/glow, >1 = larger glow radius"},blur:{type:"number",doc:"How indistinct the observer said its edges were — 0 for a hard outline, 1 for a shape with no edge at all."},brightness:{type:"number",doc:"How dazzling the observer said it was — 0 for a light you can look at, 1 for one you cannot."},selected:{type:"boolean"},title:{type:"string",doc:"What the observer calls it, if anything.",loose:!0},angular:{type:"object",doc:"How big this looked to the observer, in degrees of arc (see AngularExtent) — the recording's OWN statement of size, and the one it is allowed to make.",fields:{widthDeg:{type:"number",doc:"How wide it looked, in degrees of arc."},heightDeg:{type:"number",doc:"How tall it looked, in degrees of arc."}}},aim:{type:"object",doc:"Where the phenomenon itself was in the observer's sky (the direction of the shape's centre, not the way the observer was facing) — degrees of azimuth from true north and of altitude above the horizon, the same conventions as ObserverPose.",fields:{azimuthDeg:{type:"number",doc:"Degrees clockwise from true north, the same convention as ObserverPose.headingDeg."},altitudeDeg:{type:"number",doc:"Degrees above (positive) or below the horizon."}}},points:{type:"array",doc:"Points relative to bounds origin (0,0 = bounds.x, bounds.y)",fields:{x:{type:"number"},y:{type:"number"}}}}}}}}},order:{type:"array",doc:"Back-to-front paint/hit-test order — see Timeline's own `order` field."},groups:{type:"array",doc:"Each inner array is one group's member sourceIds (always >= 2 members) — see Timeline's own `groups` field."}}},m={type:"object",doc:"The observer's position/elevation/orientation over time — absent for older recordings, which fall back to the legacy static place[0] (see Sighting.ts's resolveObserverPoseAt).",fields:{keyframes:{type:"array",fields:{t:{type:"number"},pose:{type:"object",fields:{lat:{type:"number",doc:"Decimal degrees."},lng:{type:"number"},elevationM:{type:"number",doc:"Metres above the local ground under the observer, not above sea level: 0 for someone standing on it, the height of a window or a cliff top otherwise."},headingDeg:{type:"number",doc:"Degrees clockwise from true north."},pitchDeg:{type:"number",doc:"Degrees above (positive) or below (negative) the local horizontal — how far up/down the observer was looking, e.g."},rollDeg:{type:"number",doc:"How far the instrument itself was tilted about its own line of sight, degrees, positive clockwise as the observer saw it — a camera held askew, a head leaned over."},fovDeg:{type:"number",doc:"Vertical field of view in degrees, as a Three.js PerspectiveCamera would take it."},fNumber:{type:"number",doc:"How far the lens was stopped down — undefined for anything the recording did not state, which then falls back to the instrument's own setting (see Instrument.fNumber)."},focusDistanceM:{type:"number",doc:"How far away the lens was focused, metres — undefined meaning at infinity, which is where a camera pointed at the sky sits and the only setting under which everything celestial comes out sharp."}}}}}}},g={type:"object",doc:"Weather over time — absent for older recordings, which fall back to the legacy static `weather` field below (see Sighting.ts's resolveWeatherAt).",fields:{keyframes:{type:"array",fields:{t:{type:"number"},weather:{type:"object",fields:{cloudLayers:{type:"array",doc:"Explicit layers override the historical cloud fields; [] means no clouds.",fields:{id:{type:"string",doc:"Stable across keyframes: reordering layers must not regenerate their cloud pattern."},instances:{type:"array",doc:"Optional explicit masses, independent of the generated coverage percentage.",fields:{id:{type:"string"},eastM:{type:"number",doc:"Position relative to the recording's initial observer, in metres east/north."},northM:{type:"number"},baseM:{type:"number"},thicknessM:{type:"number"},widthM:{type:"number"},depthM:{type:"number"},rotationDeg:{type:"number"},density:{type:"number"},darkness:{type:"number",doc:"Visual shading, 0 (white) to 1 (very dark); absent inherits the parent layer."},seed:{type:"number"}}},type:{type:"enum",values:["cumulus","stratus","stratocumulus","cirrus","unknown"]},baseM:{type:"number",doc:"Base in metres above the recording's reference ground, not above the moving observer."},thicknessM:{type:"number",doc:"Vertical extent in metres."},coverage:{type:"number",doc:"Horizontal coverage, 0–1."},sizeM:{type:"number",doc:"Characteristic horizontal cloud size in metres."},density:{type:"number",doc:"Relative optical density, 0–2; zero is transparent."},darkness:{type:"number",doc:"Visual shading, 0 (white) to 1 (very dark)."},iceCrystalAlignment:{type:"number",doc:"Degree of preferential crystal orientation, meaningful only for cirrus."},seed:{type:"number",doc:"Reproducible variation; defaults to a hash of the stable layer id."},windDirectionDeg:{type:"number",doc:"Optional wind overrides; bearing TOWARD which the cloud travels, clockwise from north."},windSpeed:{type:"number"}}},cloudCover:{type:"number",doc:"0 = clear sky, 1 = fully overcast."},cloudDarkness:{type:"number",doc:"0 = light/clear clouds, 1 = dark/stormy character."},cloudBaseM:{type:"number",doc:"Height of the cloud layer's BASE above the ground, in meters — 600 to 2000 m covers most real low cloud."},highCloudCover:{type:"number",doc:"How much of the sky the HIGH deck covered, 0 to 1 — cirrus and cirrostratus, above about six kilometres, where anything present is ice rather than water."},lowerCloudCover:{type:"number",doc:"How much of the sky the LOW and MIDDLE decks covered, 0 to 1 — the cloud that stands between a observer and anything higher up."},iceCrystalAlignment:{type:"number",doc:"How steadily the ice crystals were falling, 0 to 1 — the one thing about the sky that decides which halo forms stood, and the one thing no record of any sighting holds."},relativeHumidity:{type:"number",doc:"Relative humidity near the ground, 0 to 1."},precipitationType:{type:"enum",values:["none","rain","snow","hail"]},precipitationIntensity:{type:"number",doc:'0-1; meaningless while precipitationType is "none".'},precipitationAmount:{type:"number",doc:"How much of that precipitation is actually falling yet, 0 to 1 — absent meaning all of it."},windDirectionDeg:{type:"number",doc:"Degrees clockwise from true north — same convention as ObserverPose.headingDeg, and the direction the wind blows *toward*, not the one it comes from: SceneRenderer drifts every precipitation particle and cloud field along exactly this bearing (`sin/-cos`, north = -Z), so 0 means snow drifting northward."},windSpeed:{type:"number",doc:"Real-world wind speed in m/s (0 = calm, ~30 = violent storm/hurricane-force) — drives both cloud advection, visual precipitation drift and wind audio volume directly."},storm:{type:"boolean",doc:"Whether a thunderstorm was reported — drives both a scene-fog lightning flash and a delayed thunderclap (see SceneRenderer's lightning-flash scheduling, named for the visual mechanism it implements internally, not for this field)."}}}}}}},b={type:"object",doc:`Legacy static weather condition, kept only as weatherTrack's own fallback for recordings made before it existed — absent means "unknown/not recorded", not "clear skies" (renderers default to DEFAULT_WEATHER, see Weather.ts).`,fields:{cloudLayers:{type:"array",doc:"Explicit layers override the historical cloud fields; [] means no clouds.",fields:{id:{type:"string",doc:"Stable across keyframes: reordering layers must not regenerate their cloud pattern."},instances:{type:"array",doc:"Optional explicit masses, independent of the generated coverage percentage.",fields:{id:{type:"string"},eastM:{type:"number",doc:"Position relative to the recording's initial observer, in metres east/north."},northM:{type:"number"},baseM:{type:"number"},thicknessM:{type:"number"},widthM:{type:"number"},depthM:{type:"number"},rotationDeg:{type:"number"},density:{type:"number"},darkness:{type:"number",doc:"Visual shading, 0 (white) to 1 (very dark); absent inherits the parent layer."},seed:{type:"number"}}},type:{type:"enum",values:["cumulus","stratus","stratocumulus","cirrus","unknown"]},baseM:{type:"number",doc:"Base in metres above the recording's reference ground, not above the moving observer."},thicknessM:{type:"number",doc:"Vertical extent in metres."},coverage:{type:"number",doc:"Horizontal coverage, 0–1."},sizeM:{type:"number",doc:"Characteristic horizontal cloud size in metres."},density:{type:"number",doc:"Relative optical density, 0–2; zero is transparent."},darkness:{type:"number",doc:"Visual shading, 0 (white) to 1 (very dark)."},iceCrystalAlignment:{type:"number",doc:"Degree of preferential crystal orientation, meaningful only for cirrus."},seed:{type:"number",doc:"Reproducible variation; defaults to a hash of the stable layer id."},windDirectionDeg:{type:"number",doc:"Optional wind overrides; bearing TOWARD which the cloud travels, clockwise from north."},windSpeed:{type:"number"}}},cloudCover:{type:"number",doc:"0 = clear sky, 1 = fully overcast."},cloudDarkness:{type:"number",doc:"0 = light/clear clouds, 1 = dark/stormy character."},cloudBaseM:{type:"number",doc:"Height of the cloud layer's BASE above the ground, in meters — 600 to 2000 m covers most real low cloud."},highCloudCover:{type:"number",doc:"How much of the sky the HIGH deck covered, 0 to 1 — cirrus and cirrostratus, above about six kilometres, where anything present is ice rather than water."},lowerCloudCover:{type:"number",doc:"How much of the sky the LOW and MIDDLE decks covered, 0 to 1 — the cloud that stands between a observer and anything higher up."},iceCrystalAlignment:{type:"number",doc:"How steadily the ice crystals were falling, 0 to 1 — the one thing about the sky that decides which halo forms stood, and the one thing no record of any sighting holds."},relativeHumidity:{type:"number",doc:"Relative humidity near the ground, 0 to 1."},precipitationType:{type:"enum",values:["none","rain","snow","hail"]},precipitationIntensity:{type:"number",doc:'0-1; meaningless while precipitationType is "none".'},precipitationAmount:{type:"number",doc:"How much of that precipitation is actually falling yet, 0 to 1 — absent meaning all of it."},windDirectionDeg:{type:"number",doc:"Degrees clockwise from true north — same convention as ObserverPose.headingDeg, and the direction the wind blows *toward*, not the one it comes from: SceneRenderer drifts every precipitation particle and cloud field along exactly this bearing (`sin/-cos`, north = -Z), so 0 means snow drifting northward."},windSpeed:{type:"number",doc:"Real-world wind speed in m/s (0 = calm, ~30 = violent storm/hurricane-force) — drives both cloud advection, visual precipitation drift and wind audio volume directly."},storm:{type:"boolean",doc:"Whether a thunderstorm was reported — drives both a scene-fog lightning flash and a delayed thunderclap (see SceneRenderer's lightning-flash scheduling, named for the visual mechanism it implements internally, not for this field)."}}},f={type:"object",doc:"What the sighting sounded like over time — see SoundTrack.",fields:{keyframes:{type:"array",fields:{t:{type:"number"},sound:{type:"object",fields:{kind:{type:"enum",values:["none","hum","whistle","rumble","crackle"]},volume:{type:"number",doc:"How loud it was, 0 (inaudible) to 1 (as loud as the observer could describe) — deliberately relative rather than a dB SPL figure: nobody reports a sound level in decibels, and inventing one would claim a measurement where there is only an impression."},pitchHz:{type:"number",doc:`The sound's own frequency in Hz — the oscillator's pitch for the pitched kinds ("hum", "whistle"), and the noise filter's centre for the unpitched ones ("rumble", "crackle"), where it reads as how deep or how sharp the noise is.`},src:{type:"string",doc:"An actual audio recording of the sound, when one exists (a observer who filmed the event, a later recording of the same phenomenon) — replaces synthesis entirely while it is set, with `volume` still scaling it."}}}}}}},w={type:"array",doc:"See Sighting.decor.",fields:{id:{type:"string"},kind:{type:"enum",values:["building","tree","crop","mound","streetlight","vehicle","observer","aircraft","shrub","bridge","entity"]},title:{type:"string",doc:'Optional display name, same role as Shape.title — falls back to a generic "{kind} {n}" label (see SightingEditorElement.decorLabel) when absent.',loose:!0},eastM:{type:"number",doc:"Meters from the observer's own position — eastM positive = east, northM positive = north."},northM:{type:"number"},headingDeg:{type:"number",doc:"Degrees clockwise from true north, same convention as ObserverPose.headingDeg — which way a vehicle is facing, or a observer looking."},lit:{type:"boolean",doc:"Streetlight lamp / vehicle headlights switched on."},litKeyframes:{type:"array",doc:"Sorted by t.",fields:{t:{type:"number"},lit:{type:"boolean"}}},lights:{type:"array",doc:"The object's individual lamps, each with its own place on the body and its own rhythm — see DecorLight, and LIGHT_RIGS for the ready-made sets.",fields:{id:{type:"string"},offsetM:{type:"object",doc:"Where it sits on the object, in meters relative to the object's own centre and heading: +x is its right, +y up, +z its front.",fields:{x:{type:"number"},y:{type:"number"},z:{type:"number"}}},color:{type:"string",doc:"CSS hex colour, as emitted — the regulated red/green/white of navigation lights, the amber of a hazard flasher."},intensity:{type:"number",doc:"Peak luminous intensity as a ratio to an ordinary navigation light's (1, about a hundred candela — see DecorSystem's LAMP_CANDELA); the airliner rig (LIGHT_RIGS) gives its beacon 1.5 and its wingtip strobes 20."},pattern:{type:"object",fields:{kind:{type:"enum",values:["steady","flash"]},perMinute:{type:"number"},dutyCycle:{type:"number"},phase:{type:"number"}}}}},track:{type:"array",doc:"Where the object is over time, when it moves — an aircraft crossing the sky, a car driving past.",fields:{t:{type:"number"},eastM:{type:"number"},northM:{type:"number"},altitudeM:{type:"number",doc:"Meters above the observer's own elevation."},headingDeg:{type:"number"}}},sightingUrl:{type:"string",doc:`For kind "observer" only: the URL of that observer's own sighting.json recording, if known — lets the 3D scene's own context menu offer "view this observer's account" (loading it the same way SightingEditorElement.importFromUrl already does).`},windows:{type:"object",doc:"Per-side window opacity, 0 (fully open — the pane is invisible, and DecorSystem.addRoom's own interior wall panel is skipped there too, same as no window at all) to 100 (fully closed — a solid-looking pane)."},color:{type:"string",doc:'What colour this object actually is, as a CSS colour — the same way a shape states its own (see Shape.color), because a recording is written and read by people and "#8f86a8" is a colour a person can type.'},observerSide:{type:"enum",values:["front","behind","left","right","front-left","front-right","behind-left","behind-right"]},engine:{type:"object",doc:"A vehicle heard running — see DecorEngine: its engine turning with its own `track`, heard less the further it is from the observer.",fields:{kind:{type:"enum",doc:'Which sound: a decor object\'s own `kind` says only "vehicle".',values:["car","van","truck","motorcycle","generic"]},noise:{type:"number",doc:"As ObserverVehicle.noise."}}},bridge:{type:"object",doc:'Kind "bridge" only: how it is built, where that is known — see BridgeStructure.',fields:{spanM:{type:"number",doc:"Metres of open span under the deck, centred on the object."},deckThicknessM:{type:"number",doc:"Thickness of the deck slab, metres."},railing:{type:"object",doc:"The railing along both edges: its height above the road, the spacing of its posts, and how many horizontal rails it has — two rails make two rows of rectangular openings.",fields:{heightM:{type:"number"},postSpacingM:{type:"number"},rails:{type:"number"}}}}},floors:{type:"number",doc:'Kind "building" only: number of upper stories above the ground floor, set when the building is created (default 2, see SightingEditorElement.addDecor) and editable afterward.'},occupiedFloor:{type:"number",doc:'Kind "building" only, meaningful once observerSide is set: which floor the observer is on, 0 (ground floor) up to floors.'},occludesSourceIds:{type:"array",doc:"Shape sourceIds (see Timeline.sourceIds/Shape) this decor object sits in front of, from the observer's own reported viewpoint — occluding that shape wherever their screen positions line up (see SceneRenderer.isScreenPointOccluded)."},sizeM:{type:"object",doc:"How big it really is, in meters, along its own axes — see DecorSize.",fields:{widthM:{type:"number"},lengthM:{type:"number"},heightM:{type:"number"}}},model:{type:"object",doc:"The real 3D model that stands in for the primitive, if one does — see DecorModelRef.",fields:{id:{type:"string",doc:"Catalogue entry, resolved by the live DecorModelProvider."},url:{type:"string",doc:"Direct glTF/GLB address, taking precedence over `id`."},headingOffsetDeg:{type:"number",doc:"Degrees to turn the loaded model about its own vertical axis so its nose points the way this scene's heading convention expects (0 faces -Z — see DecorSystem's build)."},credit:{type:"object",doc:"Who made it and under what licence.",fields:{title:{type:"string"},author:{type:"string"},license:{type:"string",doc:"Licence name as its author states it, e.g."},sourceUrl:{type:"string",doc:"Where it came from, so the claim can be checked."}}}}}}},v={type:"array",doc:"The roads the account's own plan draws — see Sighting.roads and Road.ts.",fields:{id:{type:"string"},title:{type:"string",doc:"What the account calls it, where it calls it anything.",loose:!0},surface:{type:"enum",values:["paved","gravel","dirt"]},widthM:{type:"number",doc:"Carriageway width, metres."},path:{type:"array",doc:"The centre line, in metres east and north of the observer's place at t=0.",fields:{eastM:{type:"number"},northM:{type:"number"}}},source:{type:"string",doc:"Where this line comes from — the plan, the survey, the report it was read off.",loose:!0}}},k={type:"array",doc:"What an investigator drew over the place, imported from their file — see Sighting.traces and Trace.ts.",fields:{id:{type:"string"},title:{type:"string",doc:'What its author called it ("Ligne de visée depuis la ferme").',loose:!0},kind:{type:"enum",values:["polygon","point","line"]},points:{type:"array",doc:"One point for a marker, the vertices of a line, the vertices of an outline (not repeated at the end: it is closed by being a polygon).",fields:{lat:{type:"number"},lng:{type:"number"},altM:{type:"number",doc:"Metres, read as `InvestigatorTrace.altitude` says."}}},altitude:{type:"enum",doc:"How `altM` is read.",values:["ground","relative","absolute"]},color:{type:"string",doc:"CSS colour the author gave it, `#rrggbb`."},source:{type:"string",doc:"Whose it is and where it comes from — the person, the report, the file.",loose:!0}}},S={type:"object",doc:"Which meteorological record `weatherTrack` was looked up from, when it wasn't the observer who stated the conditions — see Sighting.weatherSource.",fields:{id:{type:"string",doc:"Stable dataset id, e.g."},name:{type:"string",doc:"Human-readable dataset name, e.g."},url:{type:"string",doc:"The exact request that produced these values, so the claim stays checkable years later."}}},D={type:"string",doc:"Which INSTRUMENTS entry this was observed through — see Sighting.instrumentId."},M={type:"number",doc:"How long the shutter stayed open, seconds — one value for the whole observation, see Sighting.exposureSeconds."},T={type:"number",doc:"The speed of the film or sensor this picture was taken on — see Sighting.iso."},W={type:"number",doc:`How bright the night sky is at the place, towns and all: the zenith of a moonless night in magnitudes per square arcsecond, a Sky Quality Meter's reading or the World Atlas's "SQM" figure (Falchi et al.`},j={type:"boolean",doc:"Whether the map of where the observer stood starts open — see Sighting.observerMap."},H={type:"array",doc:"The named moments of the account — see Milestone.",fields:{t:{type:"number",doc:"When, in milliseconds from the start of the recording — the same scale every track uses."},label:{type:"string",doc:'Short label, shown on the seek bar: the letter or number the account itself uses ("A", "B"), or a couple of words where it uses none.',loose:!0},note:{type:"string",doc:"What happened at that moment, in the account's own words where possible.",loose:!0}}},x={type:"array",doc:"Pictures of the place, laid over the reconstruction at the direction each was registered in — see SceneReference.",fields:{id:{type:"string",doc:"Stable id, what the editor's own list and a future trace on the picture name."},kind:{type:"enum",values:["photo","panorama"]},src:{type:"string",doc:"Where the picture is: an address, or the picture itself as a `data:` URL."},title:{type:"string",doc:'What to call it — "Vue depuis le muret, fin été 1968".',loose:!0},credit:{type:"string",doc:"Who made it and on what terms — shown wherever the picture is, because a credit that is not displayed is not a licence (see DataSource for the same rule on the data)."},creditUrl:{type:"string",doc:"Where that credit points: the source page, the licence."},t:{type:"number",doc:"The instant of the timeline it was taken at, milliseconds, for a picture made DURING the observation — by the observer, or by whoever was there."},from:{type:"object",doc:"Where it was taken from — the one point its registration holds for.",fields:{lat:{type:"number"},lng:{type:"number"}}},drawing:{type:"boolean",doc:"Whether somebody drew on it — a trajectory, an outline, an arrow — so that what the picture shows of the phenomenon is a statement made afterwards, not a thing the camera recorded."},opacity:{type:"number",doc:"How much of it shows, 0 to 1 — the starting point of the reader's own slider, since the comparison is made by sliding: all picture, all render, and the registration checked at every step between."},registration:{type:"object",fields:{headingDeg:{type:"number",doc:"Degrees clockwise from true north, the direction the picture's centre looks at."},pitchDeg:{type:"number",doc:"Degrees above the local horizontal, positive up."},rollDeg:{type:"number",doc:"Degrees the picture is tilted about its own axis, positive clockwise as it is looked at — see ObserverPose.rollDeg."},fovDeg:{type:"number",doc:"The picture's VERTICAL field, degrees — what the lens took in top to bottom, its horizontal field following from the image's own aspect ratio."}}},landmarks:{type:"array",doc:"The details it was lined up on — see PictureLandmark.",fields:{id:{type:"string"},label:{type:"string",doc:'What the detail is — "Arbre masquant", "barrière".',loose:!0},picture:{type:"object",doc:"Where it is on the picture, 0..1 from the top-left corner.",fields:{u:{type:"number"},v:{type:"number"}}},scene:{type:"object",doc:"Where it is from the observer, in the scene.",fields:{azimuthDeg:{type:"number"},altitudeDeg:{type:"number"}}}}}}},C={type:"array",doc:"Where the account can be read as it was given, each one a source — see RecordingSource.",fields:{type:{type:"enum",values:["book","article"]},title:{type:"string"},authors:{type:"array",doc:"The author(s) name(s): for a post, the account that posted it."},url:{type:"string",doc:"Where it can be read."},publication:{type:"object",doc:"Who published it and when (EDTF).",fields:{publisher:{type:"string"},time:{type:"string"}}},index:{type:"string",doc:"Chapter, page, etc."}}},I={type:"object",doc:"What the observer took it to be, in metres — see InterpretationJson.",fields:{title:{type:"string",doc:'What the claim is, in a few words — "Craft on its legs", "Weather balloon at 3 km".',loose:!0},bodies:{type:"array",fields:{id:{type:"string"},title:{type:"string",loose:!0},explains:{type:"array",doc:"The phenomena of the account (their `sourceId`s) this body claims to be — what its projected outline is measured against at each instant, and what is drawn as a ghost beside it."},model:{type:"object",doc:"What it is shaped like.",fields:{id:{type:"string",doc:"Catalogue entry, resolved by the live DecorModelProvider."},url:{type:"string",doc:"Direct glTF/GLB address, taking precedence over `id`."},headingOffsetDeg:{type:"number",doc:"Degrees to turn the loaded model about its own vertical axis so its nose points the way this scene's heading convention expects (0 faces -Z — see DecorSystem's build)."},credit:{type:"object",doc:"Who made it and under what licence.",fields:{title:{type:"string"},author:{type:"string"},license:{type:"string",doc:"Licence name as its author states it, e.g."},sourceUrl:{type:"string",doc:"Where it came from, so the claim can be checked."}}}}},outlineNode:{type:"string",doc:'The node of the model that IS what the observer drew — "hull" for a craft on legs the observer drew as an oval — and so what its outline is measured by (see BodyConfrontation).'},track:{type:"array",fields:{t:{type:"number"},eastM:{type:"number"},northM:{type:"number"},azimuthDeg:{type:"number"},altitudeDeg:{type:"number"},distanceM:{type:"number"},onGround:{type:"boolean",doc:"Standing on the ground."},present:{type:"boolean",doc:"Gone from here on — `false` — or back — `true`."},altitudeAboveGroundM:{type:"number",doc:"Metres between the ground under it and its lowest point."},sizeM:{type:"object",fields:{widthM:{type:"number"},lengthM:{type:"number"},heightM:{type:"number"}}},attitude:{type:"object",fields:{headingDeg:{type:"number"},pitchDeg:{type:"number"},rollDeg:{type:"number"}}},appearance:{type:"object",fields:{color:{type:"string",doc:"Its surface colour, CSS."},albedo:{type:"number",doc:"How much of the light falling on it it sends back, 0-1: aluminium ~0.7, a matt dark hull ~0.1."},luminanceCdM2:{type:"number",doc:"What it gives out of itself, candela per square metre — read through the scene's own photometry exactly as a flame's is (see BodyFlame), so that the same figure is a lamp at night and nothing at all against a noon sky."}}},flame:{type:"object",doc:"A flame coming out of it, from here on — see BodyFlame.",fields:{node:{type:"string"},lengthM:{type:"number",doc:"How far it reaches from the node, metres."},widthM:{type:"number",doc:"How wide it is at its widest, metres."},color:{type:"string",doc:"Its colour where it leaves the node, CSS."},tipColor:{type:"string",doc:"Its colour at its far end; the same as `color` when absent."},luminanceCdM2:{type:"number"},raisesDust:{type:"boolean",doc:"Whether it raises dust where it meets the ground — a flame reaching loose, dry soil does, the more the nearer it gets."}}},motions:{type:"object",doc:"How far along each of its model's own movements it is, by the movement's name in the model (a glTF animation): 0 at its start, 1 at its end, and on past 1 for one that repeats — a turn made three times is 3."},lights:{type:"object",doc:"The luminance of each of its model's own lights, cd/m², by the name of the light's material in the model: what lets one body carry lights that behave each their own way — a steady white at each end, a red one flashing between."}}}}},smoke:{type:"array",doc:"Fires the interpretation lights on the ground, as their smoke — see SmokeSource.",fields:{eastM:{type:"number"},northM:{type:"number"},fromT:{type:"number"},untilT:{type:"number"},halfLifeS:{type:"number",doc:"How fast it dies down, seconds to half its thickness — brush flares and smoulders."}}},reentries:{type:"array",doc:"Re-entries it claims were seen: placed on the Earth, not round the observer — see ReentryJson.",fields:{id:{type:"string"},title:{type:"string",loose:!0},explains:{type:"array",doc:"The phenomena of the account (their `sourceId`s) this re-entry claims to be — see BodyJson.explains."},object:{type:"object",doc:"The object that came down, when it is known — the catalogue says which piece it was.",fields:{name:{type:"string",doc:'Its catalogue name — "SL-12 R/B".'},cosparId:{type:"string",doc:'International designator — "1968-013C".'},norad:{type:"number",doc:"US Space Surveillance Network catalogue number — 3136."}}},track:{type:"array",doc:"Where the leading point of the break-up was, at instants of the recording.",fields:{t:{type:"number"},lat:{type:"number"},lng:{type:"number"},altitudeKm:{type:"number",doc:"Height above the ellipsoid, km."}}},fragments:{type:"array",doc:"The pieces seen, each following the same path some seconds behind the leading point.",fields:{id:{type:"string"},lagS:{type:"number",doc:"Seconds behind the leading point, along the same path."},fromT:{type:"number",doc:"When it is first seen, ms of the recording — when it broke off, or when it began to glow."},untilT:{type:"number",doc:"When it goes out, ms — burned up, or slowed below glowing."},absoluteMagnitude:{type:"number",doc:"Its brightness as a magnitude at 100 km — the meteor astronomers' absolute magnitude, which a fireball report gives — from which the brightness at the observer's actual distance follows."},color:{type:"string",doc:"Its colour, as a CSS hex colour."},trainS:{type:"number",doc:"How long a stretch of its own past path still glows behind it, seconds: the tail observers describe."}}}}}}},z={version:e,id:t,time:o,endTime:r,durationSeconds:n,utcOffsetHours:i,timeZone:s,place:a,observer:d,account:c,sway:l,vehicle:h,description:u,tags:p,timeline:y,observerTrack:m,weatherTrack:g,weather:b,soundTrack:f,decor:w,roads:v,traces:k,weatherSource:S,instrument:D,exposureSeconds:M,iso:T,lightPollution:W,observerMap:j,milestones:H,references:x,sources:C,interpretation:I};export{c as account,w as decor,z as default,u as description,n as durationSeconds,r as endTime,M as exposureSeconds,t as id,D as instrument,I as interpretation,T as iso,W as lightPollution,H as milestones,d as observer,j as observerMap,m as observerTrack,a as place,x as references,v as roads,f as soundTrack,C as sources,l as sway,p as tags,o as time,s as timeZone,y as timeline,k as traces,i as utcOffsetHours,h as vehicle,e as version,b as weather,S as weatherSource,g as weatherTrack};
@@ -1 +0,0 @@
1
- const e={type:"number"},t={type:"string",doc:'Which account this is, unique across every recording anywhere: the day it happened, then who saw it ("1964-04-24-ZamoraLonnie"), or where for an anonymous observer.'},o={type:"object",fields:{year:{type:"number"},month:{type:"number"},day:{type:"number"},hour:{type:"number"},minute:{type:"number"},second:{type:"number"},raw:{type:"string",doc:"The exact EDTF-ish text as typed in the editor UI (e.g."}}},r={type:"object",doc:"See SightingEvent.endTime.",fields:{year:{type:"number"},month:{type:"number"},day:{type:"number"},hour:{type:"number"},minute:{type:"number"},second:{type:"number"},raw:{type:"string",doc:"The exact EDTF-ish text as typed in the editor UI (e.g."}}},n={type:"number",doc:"See SightingEvent.durationSeconds."},i={type:"number",doc:"See SightingEvent.utcOffsetHours — the legal time zone `time`/`endTime` are expressed in."},s={type:"string",doc:"See SightingEvent.timeZone — the IANA rule `utcOffsetHours` was derived from, when it was."},a={type:"array",fields:{lat:{type:"number"},lng:{type:"number"},name:{type:"string",doc:'The place as it is named, fully qualified — "Valensole, Alpes-de-Haute-Provence, …, France".'}}},d={type:"object",doc:"See Sighting.observer.",fields:{id:{type:"string",doc:'Who this is, as a reference: last name then first names, run together ("ZamoraLonnie"), whether or not a page exists for them yet.'},title:{type:"string"},lastName:{type:"string"},firstNames:{type:"array"}}},c={type:"object",doc:"Who saw it and how their account travelled — see Account, and Sighting.account.",fields:{observerAgeYears:{type:"number",doc:"The main observer's age in years AT THE TIME, not today — a 1974 account is read by whoever finds it decades later, and the number that means anything is the one from then."},observerOccupation:{type:"string",doc:'What the main observer did, as they are described: "boulanger", "pilote de ligne", "gendarme".',loose:!0},source:{type:"enum",doc:"How the account reached the person who wrote this recording.",values:["on-site","interview","telephone","questionnaire","letter","social-media","press"]},followedUp:{type:"boolean",doc:"Whether the observer was gone back to after the first account."}}},l={type:"number",doc:"How much the observer's body sways the view at rest: 1 a person, 0 a tripod — see Sighting.sway."},h={type:"object",doc:"The vehicle the observer was in, when the decor does not draw it — see Sighting.vehicle.",fields:{kind:{type:"enum",values:["car","van","truck","motorcycle","generic"]},windowsOpen:{type:"boolean",doc:"Whether the windows were open: the road and the wind come in, the cabin no longer muffles the engine."},noise:{type:"number",doc:'How loud it was, against an ordinary one of its kind: 1 by default, 1.5 for "very noisy".'}}},u={type:"string",doc:"See SightingEvent.description — a plain string, or one per language.",loose:!0},p={type:"array",doc:"See SightingEvent.tags."},y={type:"object",fields:{keyframes:{type:"array",fields:{t:{type:"number"},shapes:{type:"array",fields:{sourceId:{type:"string"},shape:{type:"object",fields:{kind:{type:"enum",values:["oval","polygon"]},bounds:{type:"object",fields:{x:{type:"number"},y:{type:"number"},width:{type:"number"},height:{type:"number"}}},color:{type:"string",doc:"CSS color"},angle:{type:"number",doc:"Rotation in radians about the shape's centre, positive = clockwise on screen; 0 = no rotation"},transparency:{type:"number",doc:"0 = opaque, 1 = fully transparent"},haloScale:{type:"number",doc:"0 = no halo/glow, >1 = larger glow radius"},blur:{type:"number",doc:"How indistinct the observer said its edges were — 0 for a hard outline, 1 for a shape with no edge at all."},brightness:{type:"number",doc:"How dazzling the observer said it was — 0 for a light you can look at, 1 for one you cannot."},selected:{type:"boolean"},title:{type:"string",doc:"What the observer calls it, if anything.",loose:!0},angular:{type:"object",doc:"How big this looked to the observer, in degrees of arc (see AngularExtent) — the recording's OWN statement of size, and the one it is allowed to make.",fields:{widthDeg:{type:"number",doc:"How wide it looked, in degrees of arc."},heightDeg:{type:"number",doc:"How tall it looked, in degrees of arc."}}},aim:{type:"object",doc:"Where the phenomenon itself was in the observer's sky (the direction of the shape's centre, not the way the observer was facing) — degrees of azimuth from true north and of altitude above the horizon, the same conventions as ObserverPose.",fields:{azimuthDeg:{type:"number",doc:"Degrees clockwise from true north, the same convention as ObserverPose.headingDeg."},altitudeDeg:{type:"number",doc:"Degrees above (positive) or below the horizon."}}},points:{type:"array",doc:"Points relative to bounds origin (0,0 = bounds.x, bounds.y)",fields:{x:{type:"number"},y:{type:"number"}}}}}}}}},order:{type:"array",doc:"Back-to-front paint/hit-test order — see Timeline's own `order` field."},groups:{type:"array",doc:"Each inner array is one group's member sourceIds (always >= 2 members) — see Timeline's own `groups` field."}}},m={type:"object",doc:"The observer's position/elevation/orientation over time — absent for older recordings, which fall back to the legacy static place[0] (see Sighting.ts's resolveObserverPoseAt).",fields:{keyframes:{type:"array",fields:{t:{type:"number"},pose:{type:"object",fields:{lat:{type:"number",doc:"Decimal degrees."},lng:{type:"number"},elevationM:{type:"number",doc:"Metres above the local ground under the observer, not above sea level: 0 for someone standing on it, the height of a window or a cliff top otherwise."},headingDeg:{type:"number",doc:"Degrees clockwise from true north."},pitchDeg:{type:"number",doc:"Degrees above (positive) or below (negative) the local horizontal — how far up/down the observer was looking, e.g."},rollDeg:{type:"number",doc:"How far the instrument itself was tilted about its own line of sight, degrees, positive clockwise as the observer saw it — a camera held askew, a head leaned over."},fovDeg:{type:"number",doc:"Vertical field of view in degrees, as a Three.js PerspectiveCamera would take it."},fNumber:{type:"number",doc:"How far the lens was stopped down — undefined for anything the recording did not state, which then falls back to the instrument's own setting (see Instrument.fNumber)."},focusDistanceM:{type:"number",doc:"How far away the lens was focused, metres — undefined meaning at infinity, which is where a camera pointed at the sky sits and the only setting under which everything celestial comes out sharp."}}}}}}},g={type:"object",doc:"Weather over time — absent for older recordings, which fall back to the legacy static `weather` field below (see Sighting.ts's resolveWeatherAt).",fields:{keyframes:{type:"array",fields:{t:{type:"number"},weather:{type:"object",fields:{cloudLayers:{type:"array",doc:"Explicit layers override the historical cloud fields; [] means no clouds.",fields:{id:{type:"string",doc:"Stable across keyframes: reordering layers must not regenerate their cloud pattern."},instances:{type:"array",doc:"Optional explicit masses, independent of the generated coverage percentage.",fields:{id:{type:"string"},eastM:{type:"number",doc:"Position relative to the recording's initial observer, in metres east/north."},northM:{type:"number"},baseM:{type:"number"},thicknessM:{type:"number"},widthM:{type:"number"},depthM:{type:"number"},rotationDeg:{type:"number"},density:{type:"number"},darkness:{type:"number",doc:"Visual shading, 0 (white) to 1 (very dark); absent inherits the parent layer."},seed:{type:"number"}}},type:{type:"enum",values:["cumulus","stratus","stratocumulus","cirrus","unknown"]},baseM:{type:"number",doc:"Base in metres above the recording's reference ground, not above the moving observer."},thicknessM:{type:"number",doc:"Vertical extent in metres."},coverage:{type:"number",doc:"Horizontal coverage, 0–1."},sizeM:{type:"number",doc:"Characteristic horizontal cloud size in metres."},density:{type:"number",doc:"Relative optical density, 0–2; zero is transparent."},darkness:{type:"number",doc:"Visual shading, 0 (white) to 1 (very dark)."},iceCrystalAlignment:{type:"number",doc:"Degree of preferential crystal orientation, meaningful only for cirrus."},seed:{type:"number",doc:"Reproducible variation; defaults to a hash of the stable layer id."},windDirectionDeg:{type:"number",doc:"Optional wind overrides; bearing TOWARD which the cloud travels, clockwise from north."},windSpeed:{type:"number"}}},cloudCover:{type:"number",doc:"0 = clear sky, 1 = fully overcast."},cloudDarkness:{type:"number",doc:"0 = light/clear clouds, 1 = dark/stormy character."},cloudBaseM:{type:"number",doc:"Height of the cloud layer's BASE above the ground, in meters — 600 to 2000 m covers most real low cloud."},highCloudCover:{type:"number",doc:"How much of the sky the HIGH deck covered, 0 to 1 — cirrus and cirrostratus, above about six kilometres, where anything present is ice rather than water."},lowerCloudCover:{type:"number",doc:"How much of the sky the LOW and MIDDLE decks covered, 0 to 1 — the cloud that stands between a observer and anything higher up."},iceCrystalAlignment:{type:"number",doc:"How steadily the ice crystals were falling, 0 to 1 — the one thing about the sky that decides which halo forms stood, and the one thing no record of any sighting holds."},relativeHumidity:{type:"number",doc:"Relative humidity near the ground, 0 to 1."},precipitationType:{type:"enum",values:["none","rain","snow","hail"]},precipitationIntensity:{type:"number",doc:'0-1; meaningless while precipitationType is "none".'},precipitationAmount:{type:"number",doc:"How much of that precipitation is actually falling yet, 0 to 1 — absent meaning all of it."},windDirectionDeg:{type:"number",doc:"Degrees clockwise from true north — same convention as ObserverPose.headingDeg, and the direction the wind blows *toward*, not the one it comes from: SceneRenderer drifts every precipitation particle and cloud field along exactly this bearing (`sin/-cos`, north = -Z), so 0 means snow drifting northward."},windSpeed:{type:"number",doc:"Real-world wind speed in m/s (0 = calm, ~30 = violent storm/hurricane-force) — drives both cloud advection, visual precipitation drift and wind audio volume directly."},storm:{type:"boolean",doc:"Whether a thunderstorm was reported — drives both a scene-fog lightning flash and a delayed thunderclap (see SceneRenderer's lightning-flash scheduling, named for the visual mechanism it implements internally, not for this field)."}}}}}}},b={type:"object",doc:`Legacy static weather condition, kept only as weatherTrack's own fallback for recordings made before it existed — absent means "unknown/not recorded", not "clear skies" (renderers default to DEFAULT_WEATHER, see Weather.ts).`,fields:{cloudLayers:{type:"array",doc:"Explicit layers override the historical cloud fields; [] means no clouds.",fields:{id:{type:"string",doc:"Stable across keyframes: reordering layers must not regenerate their cloud pattern."},instances:{type:"array",doc:"Optional explicit masses, independent of the generated coverage percentage.",fields:{id:{type:"string"},eastM:{type:"number",doc:"Position relative to the recording's initial observer, in metres east/north."},northM:{type:"number"},baseM:{type:"number"},thicknessM:{type:"number"},widthM:{type:"number"},depthM:{type:"number"},rotationDeg:{type:"number"},density:{type:"number"},darkness:{type:"number",doc:"Visual shading, 0 (white) to 1 (very dark); absent inherits the parent layer."},seed:{type:"number"}}},type:{type:"enum",values:["cumulus","stratus","stratocumulus","cirrus","unknown"]},baseM:{type:"number",doc:"Base in metres above the recording's reference ground, not above the moving observer."},thicknessM:{type:"number",doc:"Vertical extent in metres."},coverage:{type:"number",doc:"Horizontal coverage, 0–1."},sizeM:{type:"number",doc:"Characteristic horizontal cloud size in metres."},density:{type:"number",doc:"Relative optical density, 0–2; zero is transparent."},darkness:{type:"number",doc:"Visual shading, 0 (white) to 1 (very dark)."},iceCrystalAlignment:{type:"number",doc:"Degree of preferential crystal orientation, meaningful only for cirrus."},seed:{type:"number",doc:"Reproducible variation; defaults to a hash of the stable layer id."},windDirectionDeg:{type:"number",doc:"Optional wind overrides; bearing TOWARD which the cloud travels, clockwise from north."},windSpeed:{type:"number"}}},cloudCover:{type:"number",doc:"0 = clear sky, 1 = fully overcast."},cloudDarkness:{type:"number",doc:"0 = light/clear clouds, 1 = dark/stormy character."},cloudBaseM:{type:"number",doc:"Height of the cloud layer's BASE above the ground, in meters — 600 to 2000 m covers most real low cloud."},highCloudCover:{type:"number",doc:"How much of the sky the HIGH deck covered, 0 to 1 — cirrus and cirrostratus, above about six kilometres, where anything present is ice rather than water."},lowerCloudCover:{type:"number",doc:"How much of the sky the LOW and MIDDLE decks covered, 0 to 1 — the cloud that stands between a observer and anything higher up."},iceCrystalAlignment:{type:"number",doc:"How steadily the ice crystals were falling, 0 to 1 — the one thing about the sky that decides which halo forms stood, and the one thing no record of any sighting holds."},relativeHumidity:{type:"number",doc:"Relative humidity near the ground, 0 to 1."},precipitationType:{type:"enum",values:["none","rain","snow","hail"]},precipitationIntensity:{type:"number",doc:'0-1; meaningless while precipitationType is "none".'},precipitationAmount:{type:"number",doc:"How much of that precipitation is actually falling yet, 0 to 1 — absent meaning all of it."},windDirectionDeg:{type:"number",doc:"Degrees clockwise from true north — same convention as ObserverPose.headingDeg, and the direction the wind blows *toward*, not the one it comes from: SceneRenderer drifts every precipitation particle and cloud field along exactly this bearing (`sin/-cos`, north = -Z), so 0 means snow drifting northward."},windSpeed:{type:"number",doc:"Real-world wind speed in m/s (0 = calm, ~30 = violent storm/hurricane-force) — drives both cloud advection, visual precipitation drift and wind audio volume directly."},storm:{type:"boolean",doc:"Whether a thunderstorm was reported — drives both a scene-fog lightning flash and a delayed thunderclap (see SceneRenderer's lightning-flash scheduling, named for the visual mechanism it implements internally, not for this field)."}}},f={type:"object",doc:"What the sighting sounded like over time — see SoundTrack.",fields:{keyframes:{type:"array",fields:{t:{type:"number"},sound:{type:"object",fields:{kind:{type:"enum",values:["none","hum","whistle","rumble","crackle"]},volume:{type:"number",doc:"How loud it was, 0 (inaudible) to 1 (as loud as the observer could describe) — deliberately relative rather than a dB SPL figure: nobody reports a sound level in decibels, and inventing one would claim a measurement where there is only an impression."},pitchHz:{type:"number",doc:`The sound's own frequency in Hz — the oscillator's pitch for the pitched kinds ("hum", "whistle"), and the noise filter's centre for the unpitched ones ("rumble", "crackle"), where it reads as how deep or how sharp the noise is.`},src:{type:"string",doc:"An actual audio recording of the sound, when one exists (a observer who filmed the event, a later recording of the same phenomenon) — replaces synthesis entirely while it is set, with `volume` still scaling it."}}}}}}},w={type:"array",doc:"See Sighting.decor.",fields:{id:{type:"string"},kind:{type:"enum",values:["building","tree","crop","mound","streetlight","vehicle","observer","aircraft","shrub","bridge","entity"]},title:{type:"string",doc:'Optional display name, same role as Shape.title — falls back to a generic "{kind} {n}" label (see SightingEditorElement.decorLabel) when absent.',loose:!0},eastM:{type:"number",doc:"Meters from the observer's own position — eastM positive = east, northM positive = north."},northM:{type:"number"},headingDeg:{type:"number",doc:"Degrees clockwise from true north, same convention as ObserverPose.headingDeg — which way a vehicle is facing, or a observer looking."},lit:{type:"boolean",doc:"Streetlight lamp / vehicle headlights switched on."},litKeyframes:{type:"array",doc:"Sorted by t.",fields:{t:{type:"number"},lit:{type:"boolean"}}},lights:{type:"array",doc:"The object's individual lamps, each with its own place on the body and its own rhythm — see DecorLight, and LIGHT_RIGS for the ready-made sets.",fields:{id:{type:"string"},offsetM:{type:"object",doc:"Where it sits on the object, in meters relative to the object's own centre and heading: +x is its right, +y up, +z its front.",fields:{x:{type:"number"},y:{type:"number"},z:{type:"number"}}},color:{type:"string",doc:"CSS hex colour, as emitted — the regulated red/green/white of navigation lights, the amber of a hazard flasher."},intensity:{type:"number",doc:"Peak luminous intensity as a ratio to an ordinary navigation light's (1, about a hundred candela — see DecorSystem's LAMP_CANDELA); the airliner rig (LIGHT_RIGS) gives its beacon 1.5 and its wingtip strobes 20."},pattern:{type:"object",fields:{kind:{type:"enum",values:["steady","flash"]},perMinute:{type:"number"},dutyCycle:{type:"number"},phase:{type:"number"}}}}},track:{type:"array",doc:"Where the object is over time, when it moves — an aircraft crossing the sky, a car driving past.",fields:{t:{type:"number"},eastM:{type:"number"},northM:{type:"number"},altitudeM:{type:"number",doc:"Meters above the observer's own elevation."},headingDeg:{type:"number"}}},sightingUrl:{type:"string",doc:`For kind "observer" only: the URL of that observer's own sighting.json recording, if known — lets the 3D scene's own context menu offer "view this observer's account" (loading it the same way SightingEditorElement.importFromUrl already does).`},windows:{type:"object",doc:"Per-side window opacity, 0 (fully open — the pane is invisible, and DecorSystem.addRoom's own interior wall panel is skipped there too, same as no window at all) to 100 (fully closed — a solid-looking pane)."},color:{type:"string",doc:'What colour this object actually is, as a CSS colour — the same way a shape states its own (see Shape.color), because a recording is written and read by people and "#8f86a8" is a colour a person can type.'},observerSide:{type:"enum",values:["front","behind","left","right","front-left","front-right","behind-left","behind-right"]},engine:{type:"object",doc:"A vehicle heard running — see DecorEngine: its engine turning with its own `track`, heard less the further it is from the observer.",fields:{kind:{type:"enum",doc:'Which sound: a decor object\'s own `kind` says only "vehicle".',values:["car","van","truck","motorcycle","generic"]},noise:{type:"number",doc:"As ObserverVehicle.noise."}}},bridge:{type:"object",doc:'Kind "bridge" only: how it is built, where that is known — see BridgeStructure.',fields:{spanM:{type:"number",doc:"Metres of open span under the deck, centred on the object."},deckThicknessM:{type:"number",doc:"Thickness of the deck slab, metres."},railing:{type:"object",doc:"The railing along both edges: its height above the road, the spacing of its posts, and how many horizontal rails it has — two rails make two rows of rectangular openings.",fields:{heightM:{type:"number"},postSpacingM:{type:"number"},rails:{type:"number"}}}}},floors:{type:"number",doc:'Kind "building" only: number of upper stories above the ground floor, set when the building is created (default 2, see SightingEditorElement.addDecor) and editable afterward.'},occupiedFloor:{type:"number",doc:'Kind "building" only, meaningful once observerSide is set: which floor the observer is on, 0 (ground floor) up to floors.'},occludesSourceIds:{type:"array",doc:"Shape sourceIds (see Timeline.sourceIds/Shape) this decor object sits in front of, from the observer's own reported viewpoint — occluding that shape wherever their screen positions line up (see SceneRenderer.isScreenPointOccluded)."},sizeM:{type:"object",doc:"How big it really is, in meters, along its own axes — see DecorSize.",fields:{widthM:{type:"number"},lengthM:{type:"number"},heightM:{type:"number"}}},model:{type:"object",doc:"The real 3D model that stands in for the primitive, if one does — see DecorModelRef.",fields:{id:{type:"string",doc:"Catalogue entry, resolved by the live DecorModelProvider."},url:{type:"string",doc:"Direct glTF/GLB address, taking precedence over `id`."},headingOffsetDeg:{type:"number",doc:"Degrees to turn the loaded model about its own vertical axis so its nose points the way this scene's heading convention expects (0 faces -Z — see DecorSystem's build)."},credit:{type:"object",doc:"Who made it and under what licence.",fields:{title:{type:"string"},author:{type:"string"},license:{type:"string",doc:"Licence name as its author states it, e.g."},sourceUrl:{type:"string",doc:"Where it came from, so the claim can be checked."}}}}}}},v={type:"array",doc:"The roads the account's own plan draws — see Sighting.roads and Road.ts.",fields:{id:{type:"string"},title:{type:"string",doc:"What the account calls it, where it calls it anything.",loose:!0},surface:{type:"enum",values:["paved","gravel","dirt"]},widthM:{type:"number",doc:"Carriageway width, metres."},path:{type:"array",doc:"The centre line, in metres east and north of the observer's place at t=0.",fields:{eastM:{type:"number"},northM:{type:"number"}}},source:{type:"string",doc:"Where this line comes from — the plan, the survey, the report it was read off.",loose:!0}}},k={type:"array",doc:"What an investigator drew over the place, imported from their file — see Sighting.traces and Trace.ts.",fields:{id:{type:"string"},title:{type:"string",doc:'What its author called it ("Ligne de visée depuis la ferme").',loose:!0},kind:{type:"enum",values:["polygon","point","line"]},points:{type:"array",doc:"One point for a marker, the vertices of a line, the vertices of an outline (not repeated at the end: it is closed by being a polygon).",fields:{lat:{type:"number"},lng:{type:"number"},altM:{type:"number",doc:"Metres, read as `InvestigatorTrace.altitude` says."}}},altitude:{type:"enum",doc:"How `altM` is read.",values:["ground","relative","absolute"]},color:{type:"string",doc:"CSS colour the author gave it, `#rrggbb`."},source:{type:"string",doc:"Whose it is and where it comes from — the person, the report, the file.",loose:!0}}},S={type:"object",doc:"Which meteorological record `weatherTrack` was looked up from, when it wasn't the observer who stated the conditions — see Sighting.weatherSource.",fields:{id:{type:"string",doc:"Stable dataset id, e.g."},name:{type:"string",doc:"Human-readable dataset name, e.g."},url:{type:"string",doc:"The exact request that produced these values, so the claim stays checkable years later."}}},D={type:"string",doc:"Which INSTRUMENTS entry this was observed through — see Sighting.instrumentId."},M={type:"number",doc:"How long the shutter stayed open, seconds — one value for the whole observation, see Sighting.exposureSeconds."},T={type:"number",doc:"The speed of the film or sensor this picture was taken on — see Sighting.iso."},W={type:"number",doc:`How bright the night sky is at the place, towns and all: the zenith of a moonless night in magnitudes per square arcsecond, a Sky Quality Meter's reading or the World Atlas's "SQM" figure (Falchi et al.`},j={type:"boolean",doc:"Whether the map of where the observer stood starts open — see Sighting.observerMap."},H={type:"array",doc:"The named moments of the account — see Milestone.",fields:{t:{type:"number",doc:"When, in milliseconds from the start of the recording — the same scale every track uses."},label:{type:"string",doc:'Short label, shown on the seek bar: the letter or number the account itself uses ("A", "B"), or a couple of words where it uses none.',loose:!0},note:{type:"string",doc:"What happened at that moment, in the account's own words where possible.",loose:!0}}},x={type:"array",doc:"Pictures of the place, laid over the reconstruction at the direction each was registered in — see SceneReference.",fields:{id:{type:"string",doc:"Stable id, what the editor's own list and a future trace on the picture name."},kind:{type:"enum",values:["photo","panorama"]},src:{type:"string",doc:"Where the picture is: an address, or the picture itself as a `data:` URL."},title:{type:"string",doc:'What to call it — "Vue depuis le muret, fin été 1968".',loose:!0},credit:{type:"string",doc:"Who made it and on what terms — shown wherever the picture is, because a credit that is not displayed is not a licence (see DataSource for the same rule on the data)."},creditUrl:{type:"string",doc:"Where that credit points: the source page, the licence."},t:{type:"number",doc:"The instant of the timeline it was taken at, milliseconds, for a picture made DURING the observation — by the observer, or by whoever was there."},from:{type:"object",doc:"Where it was taken from — the one point its registration holds for.",fields:{lat:{type:"number"},lng:{type:"number"}}},drawing:{type:"boolean",doc:"Whether somebody drew on it — a trajectory, an outline, an arrow — so that what the picture shows of the phenomenon is a statement made afterwards, not a thing the camera recorded."},opacity:{type:"number",doc:"How much of it shows, 0 to 1 — the starting point of the reader's own slider, since the comparison is made by sliding: all picture, all render, and the registration checked at every step between."},registration:{type:"object",fields:{headingDeg:{type:"number",doc:"Degrees clockwise from true north, the direction the picture's centre looks at."},pitchDeg:{type:"number",doc:"Degrees above the local horizontal, positive up."},rollDeg:{type:"number",doc:"Degrees the picture is tilted about its own axis, positive clockwise as it is looked at — see ObserverPose.rollDeg."},fovDeg:{type:"number",doc:"The picture's VERTICAL field, degrees — what the lens took in top to bottom, its horizontal field following from the image's own aspect ratio."}}},landmarks:{type:"array",doc:"The details it was lined up on — see PictureLandmark.",fields:{id:{type:"string"},label:{type:"string",doc:'What the detail is — "Arbre masquant", "barrière".',loose:!0},picture:{type:"object",doc:"Where it is on the picture, 0..1 from the top-left corner.",fields:{u:{type:"number"},v:{type:"number"}}},scene:{type:"object",doc:"Where it is from the observer, in the scene.",fields:{azimuthDeg:{type:"number"},altitudeDeg:{type:"number"}}}}}}},C={type:"array",doc:"Where the account can be read as it was given, each one a source — see RecordingSource.",fields:{type:{type:"enum",values:["book","article"]},title:{type:"string"},authors:{type:"array",doc:"The author(s) name(s): for a post, the account that posted it."},url:{type:"string",doc:"Where it can be read."},publication:{type:"object",doc:"Who published it and when (EDTF).",fields:{publisher:{type:"string"},time:{type:"string"}}},index:{type:"string",doc:"Chapter, page, etc."}}},I={type:"object",doc:"What the observer took it to be, in metres — see InterpretationJson.",fields:{title:{type:"string",doc:'What the claim is, in a few words — "Craft on its legs", "Weather balloon at 3 km".',loose:!0},bodies:{type:"array",fields:{id:{type:"string"},title:{type:"string",loose:!0},explains:{type:"array",doc:"The phenomena of the account (their `sourceId`s) this body claims to be — what its projected outline is measured against at each instant, and what is drawn as a ghost beside it."},model:{type:"object",doc:"What it is shaped like.",fields:{id:{type:"string",doc:"Catalogue entry, resolved by the live DecorModelProvider."},url:{type:"string",doc:"Direct glTF/GLB address, taking precedence over `id`."},headingOffsetDeg:{type:"number",doc:"Degrees to turn the loaded model about its own vertical axis so its nose points the way this scene's heading convention expects (0 faces -Z — see DecorSystem's build)."},credit:{type:"object",doc:"Who made it and under what licence.",fields:{title:{type:"string"},author:{type:"string"},license:{type:"string",doc:"Licence name as its author states it, e.g."},sourceUrl:{type:"string",doc:"Where it came from, so the claim can be checked."}}}}},outlineNode:{type:"string",doc:'The node of the model that IS what the observer drew — "hull" for a craft on legs the observer drew as an oval — and so what its outline is measured by (see BodyConfrontation).'},track:{type:"array",fields:{t:{type:"number"},eastM:{type:"number"},northM:{type:"number"},azimuthDeg:{type:"number"},altitudeDeg:{type:"number"},distanceM:{type:"number"},onGround:{type:"boolean",doc:"Standing on the ground."},present:{type:"boolean",doc:"Gone from here on — `false` — or back — `true`."},altitudeAboveGroundM:{type:"number",doc:"Metres between the ground under it and its lowest point."},sizeM:{type:"object",fields:{widthM:{type:"number"},lengthM:{type:"number"},heightM:{type:"number"}}},attitude:{type:"object",fields:{headingDeg:{type:"number"},pitchDeg:{type:"number"},rollDeg:{type:"number"}}},appearance:{type:"object",fields:{color:{type:"string",doc:"Its surface colour, CSS."},albedo:{type:"number",doc:"How much of the light falling on it it sends back, 0-1: aluminium ~0.7, a matt dark hull ~0.1."},luminanceCdM2:{type:"number",doc:"What it gives out of itself, candela per square metre — read through the scene's own photometry exactly as a flame's is (see BodyFlame), so that the same figure is a lamp at night and nothing at all against a noon sky."}}},flame:{type:"object",doc:"A flame coming out of it, from here on — see BodyFlame.",fields:{node:{type:"string"},lengthM:{type:"number",doc:"How far it reaches from the node, metres."},widthM:{type:"number",doc:"How wide it is at its widest, metres."},color:{type:"string",doc:"Its colour where it leaves the node, CSS."},tipColor:{type:"string",doc:"Its colour at its far end; the same as `color` when absent."},luminanceCdM2:{type:"number"},raisesDust:{type:"boolean",doc:"Whether it raises dust where it meets the ground — a flame reaching loose, dry soil does, the more the nearer it gets."}}},motions:{type:"object",doc:"How far along each of its model's own movements it is, by the movement's name in the model (a glTF animation): 0 at its start, 1 at its end, and on past 1 for one that repeats — a turn made three times is 3."},lights:{type:"object",doc:"The luminance of each of its model's own lights, cd/m², by the name of the light's material in the model: what lets one body carry lights that behave each their own way — a steady white at each end, a red one flashing between."}}}}},smoke:{type:"array",doc:"Fires the interpretation lights on the ground, as their smoke — see SmokeSource.",fields:{eastM:{type:"number"},northM:{type:"number"},fromT:{type:"number"},untilT:{type:"number"},halfLifeS:{type:"number",doc:"How fast it dies down, seconds to half its thickness — brush flares and smoulders."}}},reentries:{type:"array",doc:"Re-entries it claims were seen: placed on the Earth, not round the observer — see ReentryJson.",fields:{id:{type:"string"},title:{type:"string",loose:!0},explains:{type:"array",doc:"The phenomena of the account (their `sourceId`s) this re-entry claims to be — see BodyJson.explains."},object:{type:"object",doc:"The object that came down, when it is known — the catalogue says which piece it was.",fields:{name:{type:"string",doc:'Its catalogue name — "SL-12 R/B".'},cosparId:{type:"string",doc:'International designator — "1968-013C".'},norad:{type:"number",doc:"US Space Surveillance Network catalogue number — 3136."}}},track:{type:"array",doc:"Where the leading point of the break-up was, at instants of the recording.",fields:{t:{type:"number"},lat:{type:"number"},lng:{type:"number"},altitudeKm:{type:"number",doc:"Height above the ellipsoid, km."}}},fragments:{type:"array",doc:"The pieces seen, each following the same path some seconds behind the leading point.",fields:{id:{type:"string"},lagS:{type:"number",doc:"Seconds behind the leading point, along the same path."},fromT:{type:"number",doc:"When it is first seen, ms of the recording — when it broke off, or when it began to glow."},untilT:{type:"number",doc:"When it goes out, ms — burned up, or slowed below glowing."},absoluteMagnitude:{type:"number",doc:"Its brightness as a magnitude at 100 km — the meteor astronomers' absolute magnitude, which a fireball report gives — from which the brightness at the observer's actual distance follows."},color:{type:"string",doc:"Its colour, as a CSS hex colour."},trainS:{type:"number",doc:"How long a stretch of its own past path still glows behind it, seconds: the tail observers describe."}}}}}}},z={version:e,id:t,time:o,endTime:r,durationSeconds:n,utcOffsetHours:i,timeZone:s,place:a,observer:d,account:c,sway:l,vehicle:h,description:u,tags:p,timeline:y,observerTrack:m,weatherTrack:g,weather:b,soundTrack:f,decor:w,roads:v,traces:k,weatherSource:S,instrument:D,exposureSeconds:M,iso:T,lightPollution:W,observerMap:j,milestones:H,references:x,sources:C,interpretation:I};export{c as account,w as decor,z as default,u as description,n as durationSeconds,r as endTime,M as exposureSeconds,t as id,D as instrument,I as interpretation,T as iso,W as lightPollution,H as milestones,d as observer,j as observerMap,m as observerTrack,a as place,x as references,v as roads,f as soundTrack,C as sources,l as sway,p as tags,o as time,s as timeZone,y as timeline,k as traces,i as utcOffsetHours,h as vehicle,e as version,b as weather,S as weatherSource,g as weatherTrack};
@@ -1 +0,0 @@
1
- const e={color:"Color",transparency:"Transparencia",halo:"Halo",blur:"Desenfoque",brightness:"Brillo",shapeTitle:"Nombre",utcOffset:"Zona horaria",cloudBase:"Base de las nubes",elevation:"Altitud",heightAboveGround:"Altura sobre el suelo",duration:"Duración",placeName:"Lugar",latitude:"Latitud",longitude:"Longitud",heading:"Orientación",pitch:"Inclinación",roll:"Alabeo",sway:"Vaivén en reposo",swayTitle:"Cuánto mueve la vista el cuerpo que sostiene el instrumento cuando no camina: 1 para una persona de pie, 0 para un trípode. Vacío: 1 (0 si el relato dice que el observador estaba paralizado)",lightPollution:"Cielo nocturno",lightPollutionTitle:"El cenit de una noche sin Luna en este lugar, en magnitudes por segundo de arco cuadrado, tal como lo lee un Sky Quality Meter o lo da el atlas mundial del brillo artificial del cielo (Falchi et al. 2016, lightpollutionmap.info, «SQM»). 22 es un cielo natural; un suburbio ronda 19, el centro de una ciudad 17. Vacío: un cielo natural",observationTime:"Inicio de la observación",observationEndTime:"Fin de la observación",assessmentGroup:"Evaluación",assessmentNames:{coverage:"Datos del observador"},assessmentVerdicts:{"hynek.nl":"NL — luz nocturna","hynek.dd":"DD — disco diurno","hynek.rv":"RV — radar-visual","hynek.ce1":"EC1 — encuentro cercano","hynek.ce2":"EC2 — con huella física","hynek.ce3":"EC3 — con entidades"},observerGroup:"Observador",observerId:"ID",observerTitle:"Tratamiento",observerLastName:"Apellidos",observerFirstNames:"Nombres",sightingId:"ID",tags:"Etiquetas",cloudCover:"Nubosidad",highCloudCover:"Nubes de hielo (cirros)",focalLength:"Distancia focal",fieldOfView:"Campo de visión",aperture:"Apertura",exposure:"Exposición",focusDistance:"Enfocado a",iceCrystalAlignment:"Alineación de los cristales",cloudDarkness:"Oscuridad de las nubes",precipitationType:"Precipitación",precipitationNone:"Ninguna",precipitationRain:"Lluvia",precipitationSnow:"Nieve",precipitationHail:"Granizo",precipitationIntensity:"Intensidad",windDirection:"Dirección del viento",windSpeed:"Velocidad del viento",storm:"Tormenta",cloudsGroup:"Nubes",precipitationGroup:"Precipitación",windGroup:"Viento",soundKind:"Sonido",soundNone:"Ninguno (silencioso)",soundHum:"Zumbido",soundWhistle:"Silbido",soundRumble:"Retumbo",soundCrackle:"Crepitación",soundVolume:"Volumen",soundPitch:"Tono",soundSrc:"Grabación",instrument:"Observado con",decorAircraft:"Aeronave",decorEntity:"Ser",decorAltitude:"Altitud",decorLights:"Luces",decorLightsNone:"ninguna",decor:"Entorno",decorBuilding:"Edificio",decorTree:"Árbol",decorShrub:"Arbusto",decorBridge:"Puente",decorCrop:"Hilera de cultivo",decorMound:"Montón de piedras",decorStreetlight:"Farola",decorVehicle:"Vehículo",decorObserver:"Otro observador",decorEast:"Distancia al este",decorNorth:"Distancia al norte",decorHeading:"Orientación",decorColor:"Color",decorLit:"Encendido",decorTitle:"Nombre",milestones:"Momentos",milestoneLabel:"Etiqueta",milestoneNote:"Qué ocurre",addMilestone:"Nombrar este momento",deleteMilestone:"Eliminar momento",goToMilestone:"Ir a este momento",confirmAccept:"Eliminar",confirmDecline:"Cancelar",decorWidth:"Anchura",decorLength:"Longitud",decorHeight:"Altura",decorModel:"Modelo 3D",decorModelNone:"Forma integrada",decorModelDefault:"Modelo por defecto",decorModelAdvanced:"Modelo desde una dirección",decorModelFromCatalogue:"Del catálogo, por el que la grabación lo nombra. Cambia un campo y pasará a ser la dirección propia de esta grabación.",decorModelUrl:"Dirección glTF/GLB",decorModelTitle:"Nombre del modelo",decorModelAuthor:"Autor",decorModelLicense:"Licencia",decorModelSource:"Procedencia",decorFloors:"Plantas",decorOccupiedFloor:"Planta ocupada",decorObserverSide:"Ubicación del observador",decorObserverSideNone:"No presente",decorWindows:"Ventanas",decorSideFront:"Delante",decorSideBehind:"Detrás",decorSideLeft:"Izquierda",decorSideRight:"Derecha",decorSideFrontLeft:"Delante a la izquierda",decorSideFrontRight:"Delante a la derecha",decorSideBehindLeft:"Detrás a la izquierda",decorSideBehindRight:"Detrás a la derecha"},a={...e,oval:"Óvalo",polygon:"Polígono",addVertex:"Añadir vértice",deleteVertex:"Eliminar vértice",notAPolygon:"Selecciona una sola forma poligonal",tooFewVertices:"Una forma necesita al menos 3 puntos",shape:"Forma",apparentWidth:"Anchura aparente",realWidth:"Anchura real",distance:"Distancia",sizeLock:"Mantener",lockNone:"nada",lockApparent:"la anchura aparente",lockReal:"la anchura real",lockDistance:"la distancia",apparentSize:"{moons}× la Luna",utcOffsetPlaceholder:"según la longitud",realSizeBetween:"La escena acota esa anchura: entre {min} y {max} m, según lo que cruza",realSizeAtLeast:"La escena acota esa anchura: al menos {min} m, según lo que pasa por detrás",realSizeAtMost:"La escena acota esa anchura: como mucho {max} m, según lo que pasa por delante",realSizeUnknown:"Nada en la escena acota esa anchura: solo es lo que implica la distancia",realSizeOutside:" — la anchura de arriba queda fuera",blurBound:"Desenfocado a través de este objetivo: más cerca de {max} m",blurBoundNoInstrument:"El desenfoque a simple vista no acota ninguna distancia — un ojo no tiene diafragma con el que desenfocar",blurBoundNotAtInfinity:"El desenfoque solo acota una distancia con un objetivo enfocado al infinito: este está enfocado a {focus} m, lo que desenfoca a ambos lados",realSizeContradiction:"Contradicción: los cruces declarados no pueden ser todos ciertos",realDistanceHere:" — es decir, aquí entre {min} y {max} m",clearDistanceHypothesis:"Retirar la hipótesis de distancia",clearDistanceHypothesisTitle:"Volver a lo que establece la grabación",depthStated:"Dibujado a {m} m, como indica la grabación",depthHypothesis:"Dibujado a {m} m: tu hipótesis — lo que el decorado oculta de él es lo que perdería algo tan lejano",depthDerived:"Dibujado a {m} m, según la propia marcha del observador",depthBounded:"Dibujado a {m} m, según lo que pasa por detrás y por delante",depthConventional:"Dibujado a {m} m por convención: nada en la grabación establece una distancia",addShape:"Añadir forma",deleteShape:"Eliminar forma",play:"Reproducir",pause:"Pausa",noDuration:"Sin duración de observación",previousKeyframe:"Fotograma clave anterior",nextKeyframe:"Fotograma clave siguiente",keyframeMark:"Fotograma clave",shapesTrack:"formas",observerTrack:"observador",weatherTrack:"meteorología",soundTrack:"sonido",group:"Agrupar",ungroup:"Desagrupar",bringToFront:"Traer al frente",sendToBack:"Enviar al fondo",contextMenuDelete:"Eliminar",confirmDeleteShape:"¿Eliminar {name}? No se puede deshacer.",confirmDeleteShapes:"¿Eliminar {count} formas? No se puede deshacer.",confirmDeleteMilestone:"¿Dejar de nombrar el momento {name}? La grabación en sí no cambia.",onlyOneShape:"Solo hay una forma",alreadyAtFront:"Esta forma ya está al frente",alreadyAtBack:"Esta forma ya está al fondo",needTwoShapesToGroup:"Selecciona al menos dos formas para agruparlas",notGrouped:"Esta forma no forma parte de un grupo",multipleShapesSelected:"Varias formas seleccionadas — selecciona solo una para editar esto",samplingRate:"Frecuencia de muestreo",currentPosition:"Posición actual",switchToElapsed:"haz clic para mostrar el tiempo transcurrido",switchToClockTime:"haz clic para mostrar la hora del día",durationPlaceholder:"duración de la observación",durationImprecise:"Estas fechas no determinan con suficiente precisión una duración — introdúcela manualmente.",export:"Exportar",importFile:"Cargar archivo JSON",importUrl:"O cargar desde una URL",importUrlPlaceholder:"https://…/sighting.json",importButton:"Cargar",importError:"No se pudo cargar esa grabación — revisa el archivo o la URL e inténtalo de nuevo.",importErrorCors:'Esa dirección responde, pero el navegador no tiene permiso para leerla desde esta página. El archivo en sí está bien: su servidor debe enviarlo con la cabecera "Access-Control-Allow-Origin: *". Si no es tu servidor, eso es lo que debes pedir a su administrador.',importErrorMixedContent:"Una página segura no puede cargar una dirección que empiece por http://. Usa https:// si ese servidor lo ofrece.",importErrorUnreachable:"Nada respondió en esa dirección. Revisa cómo está escrita y que tengas conexión.",importErrorStatus:"Ese servidor respondió con un error ({status}). Probablemente la dirección es incorrecta o el archivo se ha movido.",importErrorMalformed:"Esa dirección respondió, pero lo que devolvió no es una grabación.",record:"Grabar",stop:"Detener",according:"según",sourceElevation:"Relieve",sourceImagery:"Imágenes",sourceAircraft:"Tráfico aéreo",placeNamePlaceholder:"Valensole, Francia",searchPlace:"Localizar",placeMatch:"Coincidencias",placeSearching:"Buscando el lugar…",placeMatchFound:"lugar encontrado",placeMatchesFound:"lugares encontrados",placeNotFound:"Ningún lugar con ese nombre",placeSearchFailed:"Búsqueda de lugares no disponible por el momento",utcOffsetImplausible:"Esta zona horaria no corresponde a la longitud introducida, cuya hora solar es UTC{solar} — aun así, la escena y el registro meteorológico obedecen a lo que se declara aquí. Vacía el campo para deducirla de la longitud.",timeZoneManual:"desfase introducido",altitudeAboveSeaLevel:"Altitud del observador sobre el nivel del mar — el suelo del lugar introducido fija su mínimo: un observador en los Alpes no está a 0 m.",groundAt:"suelo a {m} m",headingPlaceholder:"desconocido",edtfInvalid:"Fecha/hora EDTF no válida (p. ej. 1965-07-01T05:00, 2025-06?, 2025~).",edtfPlaceholder:"AAAA-MM-DDThh:mm[?~%] o hh:mm",observationTimeHint:"EDTF — p. ej. 1965-07-01T05:00, 2025-06? (incierto), 2025~ (aproximado), o solo 05:00 si no se conoce la fecha",observationEndTimeHint:"EDTF — p. ej. 1965-07-01T05:10, 2025-06? (incierto), 2025~ (aproximado), o solo 05:10 si no se conoce la fecha",presetsGroupLabel:"Forma del ovni",description:"Descripción",tagsPlaceholder:"separadas por comas",weather:"Meteorología",shapeGroup:"Fenómeno",shapesSubgroup:"Formas",bodiesSubgroup:"Cuerpos",soundGroup:"Sonido",temporalGroup:"Momento",fileGroup:"Archivo",fileLoading:"Cargando el editor…",fileEditorLabel:"El registro como texto JSON",timeQualifierExact:"Exacta",timeQualifierApproximate:"Aproximada",timeQualifierUncertain:"Incierta",timeQualifierBoth:"Incierta y aproximada",edtfModeTitle:"Escribe en su lugar una fecha imprecisa: solo un año, un mes, una hora sin fecha",locationGroup:"Lugar",observationGroup:"Observación",weatherWhilePlaying:"Pausa la grabación para indicar el tiempo — mientras se reproduce, el instante en que se escribiría se está moviendo",weatherInferred:"Según los registros",weatherInferredTitle:"La meteorología no es un relato: es un hecho medible, registrado para la fecha, la hora y el lugar de la observación. Desmarca para indicar las condiciones que refirió el observador, que entonces prevalecen sobre el registro.",weatherLookingUp:"Buscando el registro…",weatherNeedsDateAndPlace:"Se necesitan una fecha completa y un lugar para buscar el registro",weatherNoRecord:"Ningún registro para esta fecha y este lugar",weatherLookupFailed:"Registros meteorológicos inaccesibles por el momento",lightPollutionLookingUp:"Consultando el atlas…",lightPollutionFound:"{artificial} µcd/m² de luz artificial,",lightPollutionNatural:"Ninguna luz artificial aquí,",lightPollutionOutside:"Fuera del atlas (85°N a 60°S),",lightPollutionFailed:"Atlas inaccesible por ahora",lightPollutionTooEarly:"El atlas describe {atlasYear}; el cielo de {year} era más oscuro, indíquelo si se conoce",instrumentOutOfPeriod:"{name} — no es de esta fecha",unitMillimetres:"mm",unitDegrees:"°",fieldOfViewReadout:"{deg}° de campo",soundSrcPlaceholder:"URL de una grabación real",referenceGroup:"Fotos",reference:"Foto",referenceTitle:"Nombre",referenceSrc:"Dirección",referenceSrcPlaceholder:"https://…/photo.jpg",referenceKind:"Tipo",referencePhoto:"Foto",referencePanorama:"Panorama (360°)",referenceCredit:"Crédito",referenceCreditUrl:"Enlace del crédito",referenceT:"Tomada en",referenceDrawing:"Dibujo encima",referenceOpacity:"Opacidad",referenceHeading:"Rumbo",referencePitch:"Cabeceo",referenceRoll:"Alabeo",referenceFov:"Campo vertical",referenceUsePose:"Usar la pose del observador",addReferenceUrl:"Añadir desde una dirección",addReferenceFile:"Añadir un archivo",deleteReference:"Eliminar foto",referenceEmbedded:"{kb} kB incrustados en la grabación — una dirección la mantendría ligera",referenceUnreachable:"No se pudo cargar la foto: revisa la dirección y que su sitio permita que otros sitios la lean",referenceRegisterHint:"Arrastra para girar la foto, rueda para cambiar su campo; «Añadir un punto de referencia» para señalar un detalle en la foto y luego el mismo en el render",referenceLandmarkPicture:"Punto de referencia {n}: haz clic en el punto de la foto",referenceLandmarkScene:"Punto de referencia {n}: haz clic en el mismo punto del render",referenceLandmarkOffPicture:"Ese clic no cae en la foto",referenceNotLoaded:"La foto aún no ha llegado",referenceLandmarksFit:"{n} puntos de referencia — desviación media de {deg}°",referenceLandmarks:"Puntos de referencia",addReferenceLandmark:"Añadir un punto de referencia",deleteReferenceLandmark:"Eliminar punto de referencia",referenceLandmarkLabel:"Nombre",referenceLandmarkLabelPlaceholder:"Árbol que tapa, valla…",referenceAdoptPose:"Adoptar como pose del observador",referenceAdoptRationale:"Medido en la foto «{title}»: {n} puntos de referencia alineados, {deg}° de desviación residual",referenceStreetSearch:"Fotos a pie de calle cercanas",referenceStreetSearching:"Buscando fotos tomadas cerca…",referenceStreetNone:"Ninguna foto a pie de calle a menos de {m} m (Panoramax)",referenceStreetFailed:"No se pudo contactar con Panoramax",referenceStreetAdd:"Añadir",traceImport:"Trazos del investigador (KML, KMZ)",trace:"Trazo",deleteTrace:"Eliminar el trazo",traceTitle:"Nombre",traceSource:"Fuente",traceImported:"{n} importado(s) de {name}.",traceSkipped:"Omitido: {what}.",traceNone:"Ninguna línea, lugar ni contorno en este archivo.",traceFailed:"No se pudo leer este archivo.",traceKindPoint:"lugar",traceKindLine:"línea",traceKindPolygon:"contorno",referenceStreetItem:"{distance} m a {bearing}°, {date}{panorama}",referenceStreetPanorama:" — 360°",referenceStreetTitle:"Foto a pie de calle a {distance} m a {bearing}°, {date}",skyLine:"Cielo: {parts}",skyStarsEye:"estrellas hasta la magnitud {limit}, lo más tenue que alcanzaba un ojo bajo este cielo",skyStarsDeeper:"estrellas hasta la magnitud {limit} a través de un {device} — {gain} magnitudes más allá de las {eye} que alcanzaban los ojos del observador",skyStarsShallower:"estrellas hasta la magnitud {limit} a través de un {device} — {gain} magnitudes por debajo de las {eye} que alcanzaban los ojos del observador",skyStarsCatalogue:", dibujadas hasta {catalogue}, donde se detiene el catálogo de este proyecto",skyStarsNone:"ninguna estrella se distinguía en un cielo tan claro",skyDetails:"Ver los registros completos",skyDetailsHide:"Ocultar los registros",skyShowerActive:"{name} — radiante a {altitude}° sobre el horizonte, {bearing} — unos {rate}/h bajo este cielo, sobre un fondo esporádico de {sporadic}/h",skyShowerBelowHorizon:"{name} está activa, pero su radiante está bajo el horizonte — no ha podido producir nada",skyNothingActive:"ninguna lluvia de meteoros activa en esta fecha — un fondo esporádico de unos {sporadic}/h",showMeteor:"Muéstrame uno",skyComet:"El {name}, magnitud {magnitude}, a {altitude}° sobre el horizonte {bearing}, cola de {tail}° de largo",skyCometNoTail:"El {name}, magnitud {magnitude}, a {altitude}° sobre el horizonte {bearing}",skyCometBelowHorizon:"El {name} estaba ahí, de magnitud {magnitude}, pero bajo el horizonte — nadie aquí lo vio",skyCometInDaylight:"El {name}, magnitud {magnitude}, a {altitude}° sobre el horizonte {bearing} — pero a solo {elongation}° del Sol",showComet:"Muéstrame el cometa",skyNova:"La {name}, una estrella nueva de magnitud {magnitude}, a {altitude}° sobre el horizonte {bearing}",skyNovaBelowHorizon:"La {name} brillaba con magnitud {magnitude}, pero bajo el horizonte: nadie aquí la vio",showNova:"Muéstrame la estrella nueva",skySatellitePasses:"{count} satélites cruzaron este cielo con brillo suficiente para ser vistos, el más brillante {name}, magnitud {magnitude}, a {altitude}° sobre el horizonte {bearing} a las {time}",skySatellitePassesOne:"un satélite cruzó este cielo con brillo suficiente para ser visto: {name}, magnitud {magnitude}, a {altitude}° sobre el horizonte {bearing} a las {time}",skySatelliteTrain:"entre ellos un tren de {count} Starlink lanzados el {date}",skySatellitePassesNone:"según los elementos orbitales archivados para esa fecha, ningún satélite iluminado cruzó este cielo con brillo suficiente para ser visto",skySatelliteElementsGap:"ningún elemento orbital archivado cerca de esa fecha",skyReentries:"reentradas registradas: {list}",skyReentriesMore:"{count} más",skyReentrySeen:"{name} cayó a las {time}, visto desde {place} (a {distance} km)",skyReentryObserved:"{name} cayó a las {time}, visto",skyReentryOffset:", a {minutes} min de la observación",skyReentryPredicted:"{name} cayó hacia las {time} ± {hours} h, no se sabe dónde",skyReentryDay:"{name} cayó el {date} (UTC), sin hora ni lugar conocidos",skyFireballs:"{count} bólidos registrados por la Global Meteor Network, el más brillante de magnitud {magnitude} a las {time}, a {altitude}° de altura {bearing}, a {distance} km ({stations} estaciones)",skyFireballsOne:"un bólido registrado por la Global Meteor Network: magnitud {magnitude} a las {time}, a {altitude}° de altura {bearing}, a {distance} km ({stations} estaciones)",showFireball:"Mostrar el bólido",showSatellite:"Muéstrame un satélite",skyOpticsPossible:"nubes de hielo suficientes, alrededor {source}, para {forms}",skyOpticsAlignment:" — todo salvo los anillos necesita cristales que caigan horizontales, aquí supuestos alineados al {alignment} %, ya que ningún registro lo da",skyOpticsHalo22:"un anillo de {angle}°",skyOpticsHalo46:"un anillo de {angle}°",skyOpticsParhelia:"parhelios a {angle}° a cada lado",skyOpticsTangentArc:"un arco tangente encima",skyOpticsParhelicCircle:"un círculo blanco que da la vuelta al cielo a su misma altura",skyOpticsCircumzenithal:"un arco circuncenital a {angle}° de altura",skyOpticsCircumhorizontal:"un arco circunhorizontal muy por debajo",skyOpticsPillar:"un pilar alzado sobre él",skyOpticsNoIce:"sin nubes de hielo: ni halo ni parhelios",skyOpticsHidden:"nubes de hielo en altura, pero una capa más baja entre ellas y el observador",skyOpticsSun:"del Sol",skyOpticsMoon:"de la Luna",skyBowPossible:"lluvia y sol suficientes para {forms}",skyBowMoon:"lluvia bajo una Luna iluminada al {lit} %, suficiente para {forms} — un arcoíris lunar, que el ojo ve como un arco blanco",skyGlowBand:"la Vía Láctea a {contrast}× el fondo del cielo, a {altitude}° de altura {bearing}",skyGlowCone:"la luz zodiacal a {contrast}× el fondo del cielo, a {altitude}° de altura {bearing}, a {elongation}° del Sol — un tenue cono de luz inclinado, de bordes difusos, desaparecido en menos de una hora",skyGlowZodiacalBand:"la banda zodiacal a {contrast}× el fondo del cielo, a {altitude}° de altura {bearing} — toda la eclíptica débilmente encendida, que no es lo que la gente cuenta",skyGlowMoon:"ni Vía Láctea ni luz zodiacal: una Luna iluminada al {lit} % mantenía el cielo en {sky} magnitudes por segundo de arco cuadrado, cuando necesitan 22",skyGlowTwilight:"ni Vía Láctea ni luz zodiacal: el crepúsculo aún mantenía el cielo en {sky} magnitudes por segundo de arco cuadrado, cuando necesitan 22",skyGlowTowns:"ni Vía Láctea ni luz zodiacal: el resplandor de las ciudades mantenía el cielo en {sky} magnitudes por segundo de arco cuadrado, cuando necesitan 22",skyGlowNothingUp:"cielo bastante oscuro ({sky} magnitudes por segundo de arco cuadrado), pero ni el plano galáctico ni la eclíptica estaban lo bastante altos en él",skyBowPrimary:"un arco de {radius}° de radio, con la cima a {top}° de altura",skyBowSecondary:"un segundo, más tenue, a {radius}°, con los colores invertidos",skyBowSourceTooHigh:"lluvia, pero con el astro a {altitude}° de altura ningún arco podía asomar sobre el horizonte: se sitúan a {radius}° del punto opuesto",skyBowHidden:"lluvia, pero una capa continua entre ella y la luz: ningún arco",skyBowNoSource:"lluvia, y nada iluminado para formar un arco con ella",skySatellitesLit:"la sombra de la Tierra estaba a {height} km sobre el observador, así que la órbita baja seguía al sol — {count} objetos catalogados estaban en órbita ese mes",skySatellitesLitWith:"la sombra de la Tierra estaba a {height} km sobre el observador, así que la órbita baja seguía al sol — {count} objetos catalogados estaban en órbita ese mes, entre ellos {eras}",skySatellitesShadowed:"la sombra de la Tierra estaba a {height} km sobre el observador: de los {count} objetos catalogados en órbita ese mes, nada en órbita baja estaba iluminado",skySatellitesNotYet:"aún no se había puesto nada en órbita",skySatellitesDaylight:"todo lo que estaba en órbita estaba iluminado, como siempre de día, y {eras} podían brillar más que incluso este cielo",skySatellitesDaylightOne:"todo lo que estaba en órbita estaba iluminado, como siempre de día, y {eras} podía brillar más que incluso este cielo",skyUnknown:"no se puede determinar sin una fecha y un lugar",lookAtDecor:"Mirarlo",addDecor:"Añadir",deleteDecor:"Eliminar elemento del decorado",decorSightingUrl:"URL de su propia grabación",viewAccount:"Ver el relato",noObserverRecording:"No hay URL de grabación para este observador",masks:"Oculta",masksNone:"Aún no hay fenómeno que ocultar",modelPickerTitle:"Elegir un modelo 3D",modelPickerClose:"Cerrar",modelPickerChoose:"Elegir un modelo 3D",modelPickerUse:"Usar este modelo",modelPickerIncomplete:"No se dibuja hasta indicar el nombre y la licencia del modelo",addObserver:"Añadir observador",narrativePlaceholder:"Lo que refirió el observador, con sus propias palabras",narrativeSource:"Redactado por",narrativeNeedsSetting:'Rellena "{setting}" ({source}) para generar una reconstrucción a partir del relato',narrativeNeedsAsk:"Nada que enviar todavía",narrativeRemember:"Recordar en este dispositivo",narrativeDraft:"Generar reconstrucción",narrativeStop:"Detener",narrativeWorking:"Leyendo el relato…",narrativeApplied:"{count} campos escritos en el editor",narrativeUnchanged:"El relato no dice nada que la grabación pueda contener todavía",narrativeStated:"Lo que dijo el observador",narrativeDerived:"Deducido del relato",narrativeAssumed:"Supuesto, para que la reconstrucción funcione — compruébalo",narrativeGaps:"Lo que nada pudo resolver",narrativeErrorCredential:"No hay clave, o fue rechazada — compruébala en console.anthropic.com",narrativeErrorRateLimited:"Demasiadas solicitudes en tu cuenta: espera un momento y vuelve a pedirlo",narrativeErrorRefused:"El relato no obtuvo respuesta. Reformularlo puede ayudar; volver a pedirlo, no",narrativeErrorMalformed:"La respuesta no era un borrador utilizable — vale la pena pedirlo una vez más",narrativeErrorUnreachable:"Nada respondió: revisa la conexión",narrativeErrorRejected:"Rechazado: {detail}",observerAge:"Edad entonces",observerOccupation:"Profesión",accountSource:"Relato obtenido",accountUrl:"Fuente (URL)",accountSourceUnknown:"desconocido",accountSourceOnSite:"investigación in situ",accountSourceInterview:"entrevista en persona",accountSourceTelephone:"por teléfono",accountSourceQuestionnaire:"cuestionario",accountSourceLetter:"lo escribió el observador",accountSourceSocialMedia:"lo publicó el observador en internet",accountSourcePress:"prensa o radiodifusión",accountFollowedUp:"Recontactado",accountUnknown:"desconocido",accountYes:"sí",accountNo:"no",questionUnanswered:"Nada en esta grabación responde a una de las preguntas que una reconstrucción necesita resolver",durationRequired:"La observación necesita una duración para poder reproducirse — indícala, o una hora de fin, que puede ser aproximada",questionsUnanswered:"{count} de las preguntas que responde una reconstrucción completa quedan sin respuesta aquí"};export{a as sightingEditorMessages_es};
@@ -1 +0,0 @@
1
- const e={color:"Couleur",transparency:"Transparence",halo:"Halo",blur:"Flou",brightness:"Éclat",shapeTitle:"Nom",utcOffset:"Fuseau horaire",cloudBase:"Base des nuages",elevation:"Altitude",heightAboveGround:"Hauteur au-dessus du sol",duration:"Durée",placeName:"Lieu",latitude:"Latitude",longitude:"Longitude",heading:"Orientation",pitch:"Inclinaison",roll:"Roulis",sway:"Bougé au repos",swayTitle:"Combien le corps qui tient l'instrument fait bouger la vue hors de la marche : 1 pour une personne debout, 0 pour un trépied. Vide : 1 (0 si le compte rendu dit l'observateur paralysé)",lightPollution:"Ciel nocturne",lightPollutionTitle:"Le zénith d'une nuit sans Lune en ce lieu, en magnitudes par seconde d'arc carrée, tel qu'un Sky Quality Meter le lit ou que l'atlas mondial de la brillance artificielle du ciel (Falchi et al. 2016, lightpollutionmap.info, « SQM ») le donne. 22 est un ciel naturel ; une banlieue est vers 19, un centre-ville vers 17. Vide : un ciel naturel",observationTime:"Début de l'observation",observationEndTime:"Fin de l'observation",assessmentGroup:"Évaluation",assessmentNames:{coverage:"Infos de l'observateur"},assessmentVerdicts:{"hynek.nl":"NL — lumière nocturne","hynek.dd":"DD — disque diurne","hynek.rv":"RV — radar-visuel","hynek.ce1":"RR1 — rencontre rapprochée","hynek.ce2":"RR2 — avec trace physique","hynek.ce3":"RR3 — avec occupants"},observerGroup:"Observateur",observerId:"ID",observerTitle:"Titre",observerLastName:"Nom de famille",observerFirstNames:"Prénoms",sightingId:"ID",tags:"Mots-clés",cloudCover:"Couverture nuageuse",highCloudCover:"Nuages de glace (cirrus)",focalLength:"Focale",fieldOfView:"Champ de vision",aperture:"Diaphragme",exposure:"Temps de pose",focusDistance:"Mise au point à",iceCrystalAlignment:"Alignement des cristaux",cloudDarkness:"Obscurité des nuages",precipitationType:"Précipitations",precipitationNone:"Aucune",precipitationRain:"Pluie",precipitationSnow:"Neige",precipitationHail:"Grêle",precipitationIntensity:"Intensité",windDirection:"Direction du vent",windSpeed:"Force du vent",storm:"Orage",cloudsGroup:"Nuages",precipitationGroup:"Précipitations",windGroup:"Vent",soundKind:"Son",soundNone:"Aucun (silencieux)",soundHum:"Bourdonnement",soundWhistle:"Sifflement",soundRumble:"Grondement",soundCrackle:"Crépitement",soundVolume:"Intensité sonore",soundPitch:"Hauteur",soundSrc:"Enregistrement",instrument:"Observé avec",decorAircraft:"Aéronef",decorEntity:"Être",decorAltitude:"Altitude",decorLights:"Feux",decorLightsNone:"aucun",decor:"Environnement",decorBuilding:"Bâtiment",decorTree:"Arbre",decorShrub:"Buisson",decorBridge:"Pont",decorCrop:"Rang de culture",decorMound:"Tas de pierres",decorStreetlight:"Lampadaire",decorVehicle:"Véhicule",decorObserver:"Autre observateur",decorEast:"Distance à l'est",decorNorth:"Distance au nord",decorHeading:"Orientation",decorColor:"Couleur",decorLit:"Allumé",decorTitle:"Nom",milestones:"Moments",milestoneLabel:"Repère",milestoneNote:"Ce qui se passe",addMilestone:"Nommer cet instant",deleteMilestone:"Supprimer le moment",goToMilestone:"Aller à ce moment",confirmAccept:"Supprimer",confirmDecline:"Annuler",decorWidth:"Largeur",decorLength:"Longueur",decorHeight:"Hauteur",decorModel:"Modèle 3D",decorModelNone:"Forme intégrée",decorModelDefault:"Modèle par défaut",decorModelAdvanced:"Modèle depuis une adresse",decorModelFromCatalogue:"Du catalogue, par lequel l'enregistrement le nomme. Modifiez un champ et il devient l'adresse propre à cet enregistrement.",decorModelUrl:"Adresse glTF/GLB",decorModelTitle:"Nom du modèle",decorModelAuthor:"Auteur",decorModelLicense:"Licence",decorModelSource:"Provenance",decorFloors:"Étages",decorOccupiedFloor:"Étage occupé",decorObserverSide:"Emplacement de l'observateur",decorObserverSideNone:"Non présent",decorWindows:"Fenêtres",decorSideFront:"Avant",decorSideBehind:"Arrière",decorSideLeft:"Gauche",decorSideRight:"Droite",decorSideFrontLeft:"Avant-gauche",decorSideFrontRight:"Avant-droit",decorSideBehindLeft:"Arrière-gauche",decorSideBehindRight:"Arrière-droit"},r={...e,oval:"Ovale",polygon:"Polygone",addVertex:"Ajouter un sommet",deleteVertex:"Supprimer le sommet",notAPolygon:"Sélectionnez une seule forme polygonale",tooFewVertices:"Une forme a besoin d'au moins 3 points",shape:"Forme",apparentWidth:"Largeur apparente",realWidth:"Largeur réelle",distance:"Distance",sizeLock:"Maintenir",lockNone:"rien",lockApparent:"la largeur apparente",lockReal:"la largeur réelle",lockDistance:"la distance",apparentSize:"{moons}× la Lune",utcOffsetPlaceholder:"d'après la longitude",realSizeBetween:"La scène borne cette largeur : entre {min} et {max} m, d'après ce qu'il croise",realSizeAtLeast:"La scène borne cette largeur : au moins {min} m, d'après ce qu'il passe derrière",realSizeAtMost:"La scène borne cette largeur : au plus {max} m, d'après ce qu'il passe devant",realSizeUnknown:"Rien dans la scène ne borne cette largeur : elle ne fait que découler de la distance",realSizeOutside:" — la largeur ci-dessus en sort",blurBound:"Flou à travers cet objectif : plus près que {max} m",blurBoundNoInstrument:"Le flou à l'œil nu ne borne aucune distance — un œil n'a pas de diaphragme dont sortir",blurBoundNotAtInfinity:"Le flou ne borne une distance que pour une mise au point à l'infini : celle-ci est à {focus} m, qui floute des deux côtés",realSizeContradiction:"Contradiction : les passages déclarés ne peuvent pas être vrais ensemble",realDistanceHere:" — soit ici entre {min} et {max} m",clearDistanceHypothesis:"Retirer l'hypothèse de distance",clearDistanceHypothesisTitle:"Revenir à ce que l'enregistrement établit",depthStated:"Dessiné à {m} m, comme l'enregistrement l'énonce",depthHypothesis:"Dessiné à {m} m : votre hypothèse — ce que le décor en cache est ce qu'une chose à cette distance perdrait",depthDerived:"Dessiné à {m} m, d'après la marche de l'observateur",depthBounded:"Dessiné à {m} m, d'après ce qu'il passe derrière et devant",depthConventional:"Dessiné à {m} m par convention : rien dans l'enregistrement n'établit de distance",addShape:"Ajouter une forme",deleteShape:"Supprimer la forme",play:"Lecture",pause:"Pause",noDuration:"Aucune durée d'observation",previousKeyframe:"Image clé précédente",nextKeyframe:"Image clé suivante",keyframeMark:"Image clé",shapesTrack:"formes",observerTrack:"observateur",weatherTrack:"météo",soundTrack:"son",group:"Grouper",ungroup:"Dégrouper",bringToFront:"Placer devant",sendToBack:"Placer derrière",contextMenuDelete:"Supprimer",confirmDeleteShape:"Supprimer {name} ? Cette action est irréversible.",confirmDeleteShapes:"Supprimer {count} formes ? Cette action est irréversible.",confirmDeleteMilestone:"Ne plus nommer le moment {name} ? L'enregistrement lui-même est inchangé.",onlyOneShape:"Il n'y a qu'une seule forme",alreadyAtFront:"Cette forme est déjà la plus en avant",alreadyAtBack:"Cette forme est déjà la plus en arrière",needTwoShapesToGroup:"Sélectionnez au moins deux formes pour les grouper",notGrouped:"Cette forme ne fait pas partie d'un groupe",multipleShapesSelected:"Plusieurs formes sélectionnées — sélectionnez-en une seule pour modifier ceci",samplingRate:"Échantillonnage",currentPosition:"Position actuelle",switchToElapsed:"cliquer pour afficher la durée écoulée",switchToClockTime:"cliquer pour afficher l'heure de l'observation",durationPlaceholder:"durée de l'observation",durationImprecise:"Ces dates ne permettent pas de déterminer précisément une durée — saisissez-la manuellement.",export:"Exporter",importFile:"Charger un fichier JSON",importUrl:"Ou charger depuis une URL",importUrlPlaceholder:"https://…/sighting.json",importButton:"Charger",importError:"Impossible de charger cet enregistrement — vérifiez le fichier ou l'URL et réessayez.",importErrorCors:"Cette adresse répond, mais le navigateur n'a pas le droit de la lire depuis cette page. Le fichier lui-même est bon : c'est son serveur qui doit envoyer l'en-tête « Access-Control-Allow-Origin: * » avec. Si ce serveur n'est pas le vôtre, c'est ce qu'il faut demander à son administrateur.",importErrorMixedContent:"Une page sécurisée ne peut pas charger une adresse commençant par http://. Utilisez https:// si ce serveur le propose.",importErrorUnreachable:"Rien n'a répondu à cette adresse. Vérifiez l'orthographe, et que vous êtes connecté.",importErrorStatus:"Ce serveur a répondu par une erreur ({status}). L'adresse est probablement fausse, ou le fichier a été déplacé.",importErrorMalformed:"Cette adresse a répondu, mais ce qui revient n'est pas un enregistrement.",record:"Enregistrer",stop:"Arrêter",according:"selon",sourceElevation:"Relief",sourceImagery:"Imagerie",sourceAircraft:"Trafic aérien",placeNamePlaceholder:"Valensole, France",searchPlace:"Localiser",placeMatch:"Correspondances",placeSearching:"Recherche du lieu…",placeMatchFound:"lieu trouvé",placeMatchesFound:"lieux trouvés",placeNotFound:"Aucun lieu de ce nom",placeSearchFailed:"Recherche de lieu momentanément indisponible",utcOffsetImplausible:"Ce fuseau ne correspond pas à la longitude saisie, dont l'heure solaire est UTC{solar} — la scène et le relevé météo obéissent pourtant à ce qui est déclaré ici. Videz le champ pour le déduire de la longitude.",timeZoneManual:"décalage saisi",altitudeAboveSeaLevel:"Altitude de l'observateur au-dessus du niveau de la mer — le sol du lieu saisi en fixe le minimum : un observateur dans les Alpes n'est pas à 0 m.",groundAt:"sol à {m} m",headingPlaceholder:"inconnu",edtfInvalid:"Date/heure EDTF invalide (ex. 1965-07-01T05:00, 2025-06?, 2025~).",edtfPlaceholder:"AAAA-MM-JJThh:mm[?~%] ou hh:mm",observationTimeHint:"EDTF — ex. 1965-07-01T05:00, 2025-06? (incertain), 2025~ (approximatif), ou juste 05:00 si la date est inconnue",observationEndTimeHint:"EDTF — ex. 1965-07-01T05:10, 2025-06? (incertain), 2025~ (approximatif), ou juste 05:10 si la date est inconnue",presetsGroupLabel:"Forme de l'ovni",description:"Description",tagsPlaceholder:"séparés par des virgules",weather:"Météo",shapeGroup:"Phénomène",shapesSubgroup:"Formes",bodiesSubgroup:"Corps",soundGroup:"Son",temporalGroup:"Moment",fileGroup:"Fichier",fileLoading:"Chargement de l'éditeur…",fileEditorLabel:"L'enregistrement en texte JSON",timeQualifierExact:"Exacte",timeQualifierApproximate:"Approximative",timeQualifierUncertain:"Incertaine",timeQualifierBoth:"Incertaine et approximative",edtfModeTitle:"Saisir plutôt une date imprécise : une année seule, un mois, une heure sans date",locationGroup:"Lieu",observationGroup:"Observation",weatherWhilePlaying:"Mettez la lecture en pause pour décrire le temps — pendant qu'elle tourne, l'instant où ceci s'écrirait se déplace",weatherInferred:"D'après les relevés",weatherInferredTitle:"La météo n'est pas un compte rendu : c'est un fait mesurable, relevé pour la date, l'heure et le lieu de l'observation. Décochez pour saisir les conditions rapportées par l'observateur, qui priment alors sur le relevé.",weatherLookingUp:"Recherche du relevé…",weatherNeedsDateAndPlace:"Date complète et lieu requis pour retrouver le relevé",weatherNoRecord:"Aucun relevé pour cette date et ce lieu",weatherLookupFailed:"Relevés météo momentanément inaccessibles",lightPollutionLookingUp:"Consultation de l'atlas…",lightPollutionFound:"{artificial} µcd/m² de lumière artificielle,",lightPollutionNatural:"Aucune lumière artificielle ici,",lightPollutionOutside:"Hors de l'atlas (85°N à 60°S),",lightPollutionFailed:"Atlas momentanément inaccessible",lightPollutionTooEarly:"L'atlas décrit {atlasYear} ; le ciel de {year} était plus sombre, à indiquer s'il est connu",instrumentOutOfPeriod:"{name} — hors de son époque",unitMillimetres:"mm",unitDegrees:"°",fieldOfViewReadout:"{deg}° de champ",soundSrcPlaceholder:"URL d'un enregistrement réel",referenceGroup:"Photos",reference:"Photo",referenceTitle:"Nom",referenceSrc:"Adresse",referenceSrcPlaceholder:"https://…/photo.jpg",referenceKind:"Type",referencePhoto:"Photo",referencePanorama:"Panorama (360°)",referenceCredit:"Crédit",referenceCreditUrl:"Lien du crédit",referenceT:"Prise à",referenceDrawing:"Dessin par-dessus",referenceOpacity:"Opacité",referenceHeading:"Cap",referencePitch:"Assiette",referenceRoll:"Roulis",referenceFov:"Champ vertical",referenceUsePose:"Prendre la pose de l'observateur",addReferenceUrl:"Ajouter depuis une adresse",addReferenceFile:"Ajouter un fichier",deleteReference:"Supprimer la photo",referenceEmbedded:"{kb} ko embarqués dans l'enregistrement — une adresse le garderait léger",referenceUnreachable:"La photo n'a pas pu être chargée : vérifiez l'adresse, et que son site autorise les autres sites à la lire",referenceRegisterHint:"Glissez pour orienter la photo, molette pour son champ ; « Ajouter un repère » pour pointer un détail sur la photo, puis le même dans le rendu",referenceLandmarkPicture:"Repère {n} : cliquez le point sur la photo",referenceLandmarkScene:"Repère {n} : cliquez le même point dans le rendu",referenceLandmarkOffPicture:"Ce clic ne tombe pas sur la photo",referenceNotLoaded:"La photo n'est pas encore arrivée",referenceLandmarksFit:"{n} repères — écart moyen {deg}°",referenceLandmarks:"Repères",addReferenceLandmark:"Ajouter un repère",deleteReferenceLandmark:"Supprimer le repère",referenceLandmarkLabel:"Nom",referenceLandmarkLabelPlaceholder:"Arbre masquant, barrière…",referenceAdoptPose:"Adopter comme pose de l'observateur",referenceAdoptRationale:"Mesuré sur la photo « {title} » : {n} repères recalés, {deg}° d'écart résiduel",referenceStreetSearch:"Photos de rue à proximité",referenceStreetSearching:"Recherche de photos prises à proximité…",referenceStreetNone:"Aucune photo de rue à moins de {m} m (Panoramax)",referenceStreetFailed:"Panoramax est injoignable",referenceStreetAdd:"Ajouter",traceImport:"Tracés d'enquêteur (KML, KMZ)",trace:"Tracé",deleteTrace:"Supprimer le tracé",traceTitle:"Nom",traceSource:"Source",traceImported:"{n} importé(s) depuis {name}.",traceSkipped:"Écarté : {what}.",traceNone:"Aucune ligne, aucun lieu ni contour dans ce fichier.",traceFailed:"Ce fichier n'a pas pu être lu.",traceKindPoint:"lieu",traceKindLine:"ligne",traceKindPolygon:"contour",referenceStreetItem:"{distance} m au {bearing}°, {date}{panorama}",referenceStreetPanorama:" — 360°",referenceStreetTitle:"Photo de rue à {distance} m au {bearing}°, {date}",skyLine:"Ciel : {parts}",skyStarsEye:"étoiles jusqu'à la magnitude {limit}, ce que l'œil atteignait sous ce ciel",skyStarsDeeper:"étoiles jusqu'à la magnitude {limit} à travers un {device} — {gain} magnitudes au-delà des {eye} qu'atteignaient les yeux de l'observateur",skyStarsShallower:"étoiles jusqu'à la magnitude {limit} à travers un {device} — {gain} magnitudes en deçà des {eye} qu'atteignaient les yeux de l'observateur",skyStarsCatalogue:", dessinées jusqu'à {catalogue}, où s'arrête le catalogue de ce projet",skyStarsNone:"aucune étoile ne se détachait d'un ciel aussi clair",skyDetails:"Voir le détail des relevés",skyDetailsHide:"Masquer le détail des relevés",skyShowerActive:"{name} — radiant à {altitude}° de hauteur, {bearing} — environ {rate}/h sous ce ciel, sur un fond sporadique de {sporadic}/h",skyShowerBelowHorizon:"{name} est actif, mais son radiant est sous l'horizon — il n'a rien pu produire",skyNothingActive:"aucune pluie de météores active à cette date — un fond sporadique d'environ {sporadic}/h",showMeteor:"Montrer un météore",skyComet:"La {name}, magnitude {magnitude}, à {altitude}° de hauteur {bearing}, queue longue de {tail}°",skyCometNoTail:"La {name}, magnitude {magnitude}, à {altitude}° de hauteur {bearing}",skyCometBelowHorizon:"La {name} était là, magnitude {magnitude}, mais sous l'horizon — personne ici ne l'a vue",skyCometInDaylight:"La {name}, magnitude {magnitude}, à {altitude}° de hauteur {bearing} — mais à {elongation}° du Soleil seulement",showComet:"Montrer la comète",skyNova:"La {name}, étoile nouvelle de magnitude {magnitude}, à {altitude}° de hauteur {bearing}",skyNovaBelowHorizon:"La {name} brillait, magnitude {magnitude}, mais sous l'horizon : personne ici ne l'a vue",showNova:"Montrer l'étoile nouvelle",skySatellitePasses:"{count} satellites ont traversé ce ciel assez brillants pour être vus, le plus brillant {name}, magnitude {magnitude}, à {altitude}° de hauteur {bearing} à {time}",skySatellitePassesOne:"un satellite a traversé ce ciel assez brillant pour être vu : {name}, magnitude {magnitude}, à {altitude}° de hauteur {bearing} à {time}",skySatelliteTrain:"dont un train de {count} Starlink lancés le {date}",skySatellitePassesNone:"d'après les éléments orbitaux archivés pour cette date, aucun satellite éclairé n'a traversé ce ciel assez brillant pour être vu",skySatelliteElementsGap:"aucun élément orbital archivé près de cette date",skyReentries:"rentrées au registre : {list}",skyReentriesMore:"{count} autres",skyReentrySeen:"{name} est retombé à {time}, vu depuis {place} (à {distance} km)",skyReentryObserved:"{name} est retombé à {time}, vu",skyReentryOffset:", à {minutes} min de l'observation",skyReentryPredicted:"{name} est retombé vers {time} ± {hours} h, on ne sait où",skyReentryDay:"{name} est retombé le {date} (UTC), ni l'heure ni le lieu connus",skyFireballs:"{count} bolides enregistrés par le Global Meteor Network, le plus brillant de magnitude {magnitude} à {time}, à {altitude}° de hauteur {bearing}, à {distance} km ({stations} stations)",skyFireballsOne:"un bolide enregistré par le Global Meteor Network : magnitude {magnitude} à {time}, à {altitude}° de hauteur {bearing}, à {distance} km ({stations} stations)",showFireball:"Montrer le bolide",showSatellite:"Montrer un satellite",skyOpticsPossible:"nuages de glace suffisants, autour {source}, pour {forms}",skyOpticsAlignment:" — tout sauf les halos exige des cristaux tombant à plat, ici supposés alignés à {alignment} %, qu'aucun relevé ne donne",skyOpticsHalo22:"un halo à {angle}°",skyOpticsHalo46:"un halo à {angle}°",skyOpticsParhelia:"des parhélies à {angle}° de part et d'autre",skyOpticsTangentArc:"un arc tangent au sommet",skyOpticsParhelicCircle:"un cercle parhélique blanc faisant le tour du ciel à sa hauteur",skyOpticsCircumzenithal:"un arc circumzénithal à {angle}° de hauteur",skyOpticsCircumhorizontal:"un arc circumhorizontal très au-dessous",skyOpticsPillar:"un pilier dressé au-dessus",skyOpticsNoIce:"aucun nuage de glace : ni halo ni parhélie",skyOpticsHidden:"des nuages de glace en altitude, mais une couche plus basse les cache",skyOpticsSun:"du Soleil",skyOpticsMoon:"de la Lune",skyBowPossible:"pluie et soleil suffisants pour {forms}",skyBowMoon:"pluie sous une Lune éclairée à {lit} %, de quoi former {forms} — un arc-en-ciel lunaire, que l'œil voit blanc",skyGlowBand:"la Voie lactée à {contrast}× le fond du ciel, à {altitude}° de hauteur {bearing}",skyGlowCone:"la lumière zodiacale à {contrast}× le fond du ciel, à {altitude}° de hauteur {bearing}, à {elongation}° du Soleil — une lueur en cône incliné, aux contours flous, disparue en moins d'une heure",skyGlowZodiacalBand:"la bande zodiacale à {contrast}× le fond du ciel, à {altitude}° de hauteur {bearing} — toute l'écliptique faiblement allumée, ce qui n'est pas ce que les gens rapportent",skyGlowMoon:"ni Voie lactée ni lumière zodiacale : une Lune éclairée à {lit} % tenait le ciel à {sky} magnitudes par seconde d'arc, là où il leur en faut 22",skyGlowTwilight:"ni Voie lactée ni lumière zodiacale : le crépuscule tenait encore le ciel à {sky} magnitudes par seconde d'arc, là où il leur en faut 22",skyGlowTowns:"ni Voie lactée ni lumière zodiacale : la lueur des villes tenait le ciel à {sky} magnitudes par seconde d'arc, là où il leur en faut 22",skyGlowNothingUp:"ciel assez noir ({sky} magnitudes par seconde d'arc), mais ni le plan de la Galaxie ni l'écliptique ne s'y tenaient assez haut",skyBowPrimary:"un arc de {radius}° de rayon, dont le sommet montait à {top}°",skyBowSecondary:"un second, plus pâle, à {radius}°, aux couleurs inversées",skyBowSourceTooHigh:"pluie, mais l'astre à {altitude}° de hauteur : aucun arc ne pouvait dépasser l'horizon, ils se tiennent à {radius}° du point opposé",skyBowHidden:"pluie, mais une couche continue entre elle et la lumière : aucun arc",skyBowNoSource:"pluie, et rien d'allumé pour en tirer un arc",skySatellitesLit:"l'ombre de la Terre montait à {height} km au-dessus de l'observateur, l'orbite basse était donc encore éclairée — {count} objets suivis étaient en orbite ce mois-là",skySatellitesLitWith:"l'ombre de la Terre montait à {height} km au-dessus de l'observateur, l'orbite basse était donc encore éclairée — {count} objets suivis étaient en orbite ce mois-là, dont {eras}",skySatellitesShadowed:"l'ombre de la Terre montait à {height} km au-dessus de l'observateur : sur les {count} objets suivis en orbite ce mois-là, rien en orbite basse n'était éclairé",skySatellitesNotYet:"rien n'était encore en orbite",skySatellitesDaylight:"tout ce qui est en orbite était éclairé, comme toujours de jour, et {eras} pouvaient l'emporter même sur ce ciel",skySatellitesDaylightOne:"tout ce qui est en orbite était éclairé, comme toujours de jour, et {eras} pouvait l'emporter même sur ce ciel",skyUnknown:"indéterminable sans date ni lieu",lookAtDecor:"Regarder cet élément",addDecor:"Ajouter",deleteDecor:"Supprimer l'élément de décor",decorSightingUrl:"URL de son propre enregistrement",viewAccount:"Voir le compte rendu",noObserverRecording:"Aucune URL d'enregistrement définie pour cet observateur",masks:"Masque",masksNone:"Aucun phénomène à masquer pour l'instant",modelPickerTitle:"Choisir un modèle 3D",modelPickerClose:"Fermer",modelPickerChoose:"Choisir un modèle 3D",modelPickerUse:"Utiliser ce modèle",modelPickerIncomplete:"Non dessiné tant que le nom et la licence du modèle ne sont pas donnés",addObserver:"Ajouter un observateur",narrativePlaceholder:"Ce que l'observateur a rapporté, dans ses propres mots",narrativeSource:"Rédigé par",narrativeNeedsSetting:"Renseignez « {setting} » ({source}) pour générer la reconstitution d'après le récit",narrativeNeedsAsk:"Rien à envoyer pour l'instant",narrativeRemember:"Retenir sur cet appareil",narrativeDraft:"Générer la reconstitution",narrativeStop:"Arrêter",narrativeWorking:"Lecture du récit…",narrativeApplied:"{count} champs écrits dans l'éditeur",narrativeUnchanged:"Le récit n'énonce rien que l'enregistrement sache encore porter",narrativeStated:"Ce que l'observateur a dit",narrativeDerived:"Déduit du récit",narrativeAssumed:"Supposé, pour que la reconstitution tourne : à vérifier",narrativeGaps:"Ce que rien n'a pu trancher",narrativeErrorCredential:"Pas de clé, ou une clé refusée : vérifiez-la sur console.anthropic.com",narrativeErrorRateLimited:"Trop de requêtes sur votre compte : patientez un instant et redemandez",narrativeErrorRefused:"Le récit n'a pas reçu de réponse. Le reformuler peut aider, le redemander non",narrativeErrorMalformed:"La réponse n'était pas un brouillon exploitable : cela vaut la peine de redemander",narrativeErrorUnreachable:"Rien n'a répondu : vérifiez la connexion",narrativeErrorRejected:"Refusé : {detail}",observerAge:"Âge alors",observerOccupation:"Profession",accountSource:"Récit recueilli",accountUrl:"Source (URL)",accountSourceUnknown:"on ne sait pas",accountSourceOnSite:"enquête sur site",accountSourceInterview:"entretien en personne",accountSourceTelephone:"par téléphone",accountSourceQuestionnaire:"questionnaire",accountSourceLetter:"écrit par l'observateur",accountSourceSocialMedia:"publié en ligne par l'observateur",accountSourcePress:"presse ou radiodiffusion",accountFollowedUp:"Recontacté",accountUnknown:"on ne sait pas",accountYes:"oui",accountNo:"non",questionUnanswered:"Rien dans cet enregistrement ne répond à l'une des questions qu'une reconstitution doit trancher",durationRequired:"L'observation a besoin d'une longueur pour être rejouée — indiquez-la, ou une heure de fin, qui peut être approximative",questionsUnanswered:"{count} des questions auxquelles une reconstitution complète répond restent sans réponse ici"};export{r as sightingEditorMessages_fr};
@@ -1 +0,0 @@
1
- var C=Uint8Array,M=Uint16Array,xr=Int32Array,or=new C([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),lr=new C([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),Fr=new C([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),ur=function(r,e){for(var n=new M(31),a=0;a<31;++a)n[a]=e+=1<<r[a-1];for(var f=new xr(n[30]),a=1;a<30;++a)for(var l=n[a];l<n[a+1];++l)f[l]=l-n[a]<<5|a;return{b:n,r:f}},tr=ur(or,2),hr=tr.b,Sr=tr.r;hr[28]=258,Sr[258]=28;var kr=ur(lr,0),yr=kr.b,Z=new M(32768);for(var o=0;o<32768;++o){var z=(o&43690)>>1|(o&21845)<<1;z=(z&52428)>>2|(z&13107)<<2,z=(z&61680)>>4|(z&3855)<<4,Z[o]=((z&65280)>>8|(z&255)<<8)>>1}var O=(function(r,e,n){for(var a=r.length,f=0,l=new M(e);f<a;++f)r[f]&&++l[r[f]-1];var t=new M(e);for(f=1;f<e;++f)t[f]=t[f-1]+l[f-1]<<1;var u;if(n){u=new M(1<<e);var w=15-e;for(f=0;f<a;++f)if(r[f])for(var g=f<<4|r[f],h=e-r[f],v=t[r[f]-1]++<<h,i=v|(1<<h)-1;v<=i;++v)u[Z[v]>>w]=g}else for(u=new M(a),f=0;f<a;++f)r[f]&&(u[f]=Z[t[r[f]-1]++]>>15-r[f]);return u}),q=new C(288);for(var o=0;o<144;++o)q[o]=8;for(var o=144;o<256;++o)q[o]=9;for(var o=256;o<280;++o)q[o]=7;for(var o=280;o<288;++o)q[o]=8;var wr=new C(32);for(var o=0;o<32;++o)wr[o]=5;var pr=O(q,9,1),Ar=O(wr,5,1),W=function(r){for(var e=r[0],n=1;n<r.length;++n)r[n]>e&&(e=r[n]);return e},x=function(r,e,n){var a=e/8|0;return(r[a]|r[a+1]<<8)>>(e&7)&n},X=function(r,e){var n=e/8|0;return(r[n]|r[n+1]<<8|r[n+2]<<16)>>(e&7)},zr=function(r){return(r+7)/8|0},j=function(r,e,n){return(e==null||e<0)&&(e=0),(n==null||n>r.length)&&(n=r.length),new C(r.subarray(e,n))},Tr=["unexpected EOF","invalid block type","invalid length/literal","invalid distance","stream finished","no stream handler",,"no callback","invalid UTF-8 data","extra field too long","date not in range 1980-2099","filename too long","stream finishing","invalid zip data"],c=function(r,e,n){var a=new Error(e||Tr[r]);if(a.code=r,Error.captureStackTrace&&Error.captureStackTrace(a,c),!n)throw a;return a},Br=function(r,e,n,a){var f=r.length,l=a?a.length:0;if(!f||e.f&&!e.l)return n||new C(0);var t=!n,u=t||e.i!=2,w=e.i;t&&(n=new C(f*3));var g=function(fr){var vr=n.length;if(fr>vr){var ir=new C(Math.max(vr*2,fr));ir.set(n),n=ir}},h=e.f||0,v=e.p||0,i=e.b||0,F=e.l,y=e.d,T=e.m,B=e.n,p=f*8;do{if(!F){h=x(r,v,1);var H=x(r,v+1,3);if(v+=3,H)if(H==1)F=pr,y=Ar,T=9,B=5;else if(H==2){var N=x(r,v,31)+257,L=x(r,v+10,15)+4,_=N+x(r,v+5,31)+1;v+=14;for(var D=new C(_),P=new C(19),m=0;m<L;++m)P[Fr[m]]=x(r,v+m*3,7);v+=L*3;for(var b=W(P),gr=(1<<b)-1,cr=O(P,b,1),m=0;m<_;){var d=cr[x(r,v,gr)];v+=d&15;var S=d>>4;if(S<16)D[m++]=S;else{var E=0,G=0;for(S==16?(G=3+x(r,v,3),v+=2,E=D[m-1]):S==17?(G=3+x(r,v,7),v+=3):S==18&&(G=11+x(r,v,127),v+=7);G--;)D[m++]=E}}var rr=D.subarray(0,N),A=D.subarray(N);T=W(rr),B=W(A),F=O(rr,T,1),y=O(A,B,1)}else c(1);else{var S=zr(v)+4,J=r[S-4]|r[S-3]<<8,K=S+J;if(K>f){w&&c(0);break}u&&g(i+J),n.set(r.subarray(S,K),i),e.b=i+=J,e.p=v=K*8,e.f=h;continue}if(v>p){w&&c(0);break}}u&&g(i+131072);for(var Cr=(1<<T)-1,mr=(1<<B)-1,Q=v;;Q=v){var E=F[X(r,v)&Cr],U=E>>4;if(v+=E&15,v>p){w&&c(0);break}if(E||c(2),U<256)n[i++]=U;else if(U==256){Q=v,F=null;break}else{var er=U-254;if(U>264){var m=U-257,I=or[m];er=x(r,v,(1<<I)-1)+hr[m],v+=I}var R=y[X(r,v)&mr],V=R>>4;R||c(3),v+=R&15;var A=yr[V];if(V>3){var I=lr[V];A+=X(r,v)&(1<<I)-1,v+=I}if(v>p){w&&c(0);break}u&&g(i+131072);var nr=i+er;if(i<A){var ar=l-A,sr=Math.min(A,nr);for(ar+i<0&&c(3);i<sr;++i)n[i]=a[ar+i]}for(;i<nr;++i)n[i]=n[i-A]}}e.l=F,e.p=Q,e.b=i,e.f=h,F&&(h=1,e.m=T,e.d=y,e.n=B)}while(!h);return i!=n.length&&t?j(n,0,i):n.subarray(0,i)},Er=new C(0),k=function(r,e){return r[e]|r[e+1]<<8},s=function(r,e){return(r[e]|r[e+1]<<8|r[e+2]<<16|r[e+3]<<24)>>>0},Y=function(r,e){return s(r,e)+s(r,e+4)*4294967296};function Ur(r,e){return Br(r,{i:2},e&&e.out,e&&e.dictionary)}var $=typeof TextDecoder<"u"&&new TextDecoder,Mr=0;try{$.decode(Er,{stream:!0}),Mr=1}catch{}var Dr=function(r){for(var e="",n=0;;){var a=r[n++],f=(a>127)+(a>223)+(a>239);if(n+f>r.length)return{s:e,r:j(r,n-1)};f?f==3?(a=((a&15)<<18|(r[n++]&63)<<12|(r[n++]&63)<<6|r[n++]&63)-65536,e+=String.fromCharCode(55296|a>>10,56320|a&1023)):f&1?e+=String.fromCharCode((a&31)<<6|r[n++]&63):e+=String.fromCharCode((a&15)<<12|(r[n++]&63)<<6|r[n++]&63):e+=String.fromCharCode(a)}};function Ir(r,e){if(e){for(var n="",a=0;a<r.length;a+=16384)n+=String.fromCharCode.apply(null,r.subarray(a,a+16384));return n}else{if($)return $.decode(r);var f=Dr(r),l=f.s,n=f.r;return n.length&&c(8),l}}var Or=function(r,e){return e+30+k(r,e+26)+k(r,e+28)},qr=function(r,e,n){var a=k(r,e+28),f=k(r,e+30),l=Ir(r.subarray(e+46,e+46+a),!(k(r,e+8)&2048)),t=e+46+a,u=Gr(r,t,f,n,s(r,e+20),s(r,e+24),s(r,e+42)),w=u[0],g=u[1],h=u[2];return[k(r,e+10),w,g,l,t+f+k(r,e+32),h]},Gr=function(r,e,n,a,f,l,t){var u=f==4294967295,w=l==4294967295,g=t==4294967295,h=e+n,v=u+w+g;if(a&&v){for(;e+4<h;e+=4+k(r,e+2))if(k(r,e)==1)return[u?Y(r,e+4+8*w):f,w?Y(r,e+4):l,g?Y(r,e+4+8*(w+u)):t,1];a<2&&c(13)}return[f,l,t,0]};function Hr(r,e){for(var n={},a=r.length-22;s(r,a)!=101010256;--a)(!a||r.length-a>65558)&&c(13);var f=k(r,a+8);if(!f)return{};var l=s(r,a+16),t=s(r,a-20)==117853008;if(t){var u=s(r,a-12);t=s(r,u)==101075792,t&&(f=s(r,u+32),l=s(r,u+48))}for(var w=e&&e.filter,g=0;g<f;++g){var h=qr(r,l,t),v=h[0],i=h[1],F=h[2],y=h[3],T=h[4],B=h[5],p=Or(r,B);l=T,(!w||w({name:y,size:i,originalSize:F,compression:v}))&&(v?v==8?n[y]=Ur(r.subarray(p,p+i),{out:new C(F)}):c(14,"unknown compression type "+v):n[y]=j(r,p,p+i))}return n}export{Ur as inflateSync,Ir as strFromU8,Hr as unzipSync};
@@ -1 +0,0 @@
1
- const e={type:"number"},t={type:"string",doc:'Which account this is, unique across every recording anywhere: the day it happened, then who saw it ("1964-04-24-ZamoraLonnie"), or where for an anonymous observer.'},o={type:"object",fields:{year:{type:"number"},month:{type:"number"},day:{type:"number"},hour:{type:"number"},minute:{type:"number"},second:{type:"number"},raw:{type:"string",doc:"The exact EDTF-ish text as typed in the editor UI (e.g."}}},r={type:"object",doc:"See SightingEvent.endTime.",fields:{year:{type:"number"},month:{type:"number"},day:{type:"number"},hour:{type:"number"},minute:{type:"number"},second:{type:"number"},raw:{type:"string",doc:"The exact EDTF-ish text as typed in the editor UI (e.g."}}},n={type:"number",doc:"See SightingEvent.durationSeconds."},i={type:"number",doc:"See SightingEvent.utcOffsetHours — the legal time zone `time`/`endTime` are expressed in."},s={type:"string",doc:"See SightingEvent.timeZone — the IANA rule `utcOffsetHours` was derived from, when it was."},a={type:"array",fields:{lat:{type:"number"},lng:{type:"number"},name:{type:"string",doc:'The place as it is named, fully qualified — "Valensole, Alpes-de-Haute-Provence, …, France".'}}},d={type:"object",doc:"See Sighting.observer.",fields:{id:{type:"string",doc:'Who this is, as a reference: last name then first names, run together ("ZamoraLonnie"), whether or not a page exists for them yet.'},title:{type:"string"},lastName:{type:"string"},firstNames:{type:"array"}}},c={type:"object",doc:"Who saw it and how their account travelled — see Account, and Sighting.account.",fields:{observerAgeYears:{type:"number",doc:"The main observer's age in years AT THE TIME, not today — a 1974 account is read by whoever finds it decades later, and the number that means anything is the one from then."},observerOccupation:{type:"string",doc:'What the main observer did, as they are described: "boulanger", "pilote de ligne", "gendarme".',loose:!0},source:{type:"enum",doc:"How the account reached the person who wrote this recording.",values:["on-site","interview","telephone","questionnaire","letter","social-media","press"]},followedUp:{type:"boolean",doc:"Whether the observer was gone back to after the first account."}}},l={type:"number",doc:"How much the observer's body sways the view at rest: 1 a person, 0 a tripod — see Sighting.sway."},h={type:"object",doc:"The vehicle the observer was in, when the decor does not draw it — see Sighting.vehicle.",fields:{kind:{type:"enum",values:["car","van","truck","motorcycle","generic"]},windowsOpen:{type:"boolean",doc:"Whether the windows were open: the road and the wind come in, the cabin no longer muffles the engine."},noise:{type:"number",doc:'How loud it was, against an ordinary one of its kind: 1 by default, 1.5 for "very noisy".'}}},u={type:"string",doc:"See SightingEvent.description — a plain string, or one per language.",loose:!0},p={type:"array",doc:"See SightingEvent.tags."},y={type:"object",fields:{keyframes:{type:"array",fields:{t:{type:"number"},shapes:{type:"array",fields:{sourceId:{type:"string"},shape:{type:"object",fields:{kind:{type:"enum",values:["oval","polygon"]},bounds:{type:"object",fields:{x:{type:"number"},y:{type:"number"},width:{type:"number"},height:{type:"number"}}},color:{type:"string",doc:"CSS color"},angle:{type:"number",doc:"Rotation in radians about the shape's centre, positive = clockwise on screen; 0 = no rotation"},transparency:{type:"number",doc:"0 = opaque, 1 = fully transparent"},haloScale:{type:"number",doc:"0 = no halo/glow, >1 = larger glow radius"},blur:{type:"number",doc:"How indistinct the observer said its edges were — 0 for a hard outline, 1 for a shape with no edge at all."},brightness:{type:"number",doc:"How dazzling the observer said it was — 0 for a light you can look at, 1 for one you cannot."},selected:{type:"boolean"},title:{type:"string",doc:"What the observer calls it, if anything.",loose:!0},angular:{type:"object",doc:"How big this looked to the observer, in degrees of arc (see AngularExtent) — the recording's OWN statement of size, and the one it is allowed to make.",fields:{widthDeg:{type:"number",doc:"How wide it looked, in degrees of arc."},heightDeg:{type:"number",doc:"How tall it looked, in degrees of arc."}}},aim:{type:"object",doc:"Where the phenomenon itself was in the observer's sky (the direction of the shape's centre, not the way the observer was facing) — degrees of azimuth from true north and of altitude above the horizon, the same conventions as ObserverPose.",fields:{azimuthDeg:{type:"number",doc:"Degrees clockwise from true north, the same convention as ObserverPose.headingDeg."},altitudeDeg:{type:"number",doc:"Degrees above (positive) or below the horizon."}}},points:{type:"array",doc:"Points relative to bounds origin (0,0 = bounds.x, bounds.y)",fields:{x:{type:"number"},y:{type:"number"}}}}}}}}},order:{type:"array",doc:"Back-to-front paint/hit-test order — see Timeline's own `order` field."},groups:{type:"array",doc:"Each inner array is one group's member sourceIds (always >= 2 members) — see Timeline's own `groups` field."}}},m={type:"object",doc:"The observer's position/elevation/orientation over time — absent for older recordings, which fall back to the legacy static place[0] (see Sighting.ts's resolveObserverPoseAt).",fields:{keyframes:{type:"array",fields:{t:{type:"number"},pose:{type:"object",fields:{lat:{type:"number",doc:"Decimal degrees."},lng:{type:"number"},elevationM:{type:"number",doc:"Metres above the local ground under the observer, not above sea level: 0 for someone standing on it, the height of a window or a cliff top otherwise."},headingDeg:{type:"number",doc:"Degrees clockwise from true north."},pitchDeg:{type:"number",doc:"Degrees above (positive) or below (negative) the local horizontal — how far up/down the observer was looking, e.g."},rollDeg:{type:"number",doc:"How far the instrument itself was tilted about its own line of sight, degrees, positive clockwise as the observer saw it — a camera held askew, a head leaned over."},fovDeg:{type:"number",doc:"Vertical field of view in degrees, as a Three.js PerspectiveCamera would take it."},fNumber:{type:"number",doc:"How far the lens was stopped down — undefined for anything the recording did not state, which then falls back to the instrument's own setting (see Instrument.fNumber)."},focusDistanceM:{type:"number",doc:"How far away the lens was focused, metres — undefined meaning at infinity, which is where a camera pointed at the sky sits and the only setting under which everything celestial comes out sharp."}}}}}}},g={type:"object",doc:"Weather over time — absent for older recordings, which fall back to the legacy static `weather` field below (see Sighting.ts's resolveWeatherAt).",fields:{keyframes:{type:"array",fields:{t:{type:"number"},weather:{type:"object",fields:{cloudLayers:{type:"array",doc:"Explicit layers override the historical cloud fields; [] means no clouds.",fields:{id:{type:"string",doc:"Stable across keyframes: reordering layers must not regenerate their cloud pattern."},instances:{type:"array",doc:"Optional explicit masses, independent of the generated coverage percentage.",fields:{id:{type:"string"},eastM:{type:"number",doc:"Position relative to the recording's initial observer, in metres east/north."},northM:{type:"number"},baseM:{type:"number"},thicknessM:{type:"number"},widthM:{type:"number"},depthM:{type:"number"},rotationDeg:{type:"number"},density:{type:"number"},darkness:{type:"number",doc:"Visual shading, 0 (white) to 1 (very dark); absent inherits the parent layer."},seed:{type:"number"}}},type:{type:"enum",values:["cumulus","stratus","stratocumulus","cirrus","unknown"]},baseM:{type:"number",doc:"Base in metres above the recording's reference ground, not above the moving observer."},thicknessM:{type:"number",doc:"Vertical extent in metres."},coverage:{type:"number",doc:"Horizontal coverage, 0–1."},sizeM:{type:"number",doc:"Characteristic horizontal cloud size in metres."},density:{type:"number",doc:"Relative optical density, 0–2; zero is transparent."},darkness:{type:"number",doc:"Visual shading, 0 (white) to 1 (very dark)."},iceCrystalAlignment:{type:"number",doc:"Degree of preferential crystal orientation, meaningful only for cirrus."},seed:{type:"number",doc:"Reproducible variation; defaults to a hash of the stable layer id."},windDirectionDeg:{type:"number",doc:"Optional wind overrides; bearing TOWARD which the cloud travels, clockwise from north."},windSpeed:{type:"number"}}},cloudCover:{type:"number",doc:"0 = clear sky, 1 = fully overcast."},cloudDarkness:{type:"number",doc:"0 = light/clear clouds, 1 = dark/stormy character."},cloudBaseM:{type:"number",doc:"Height of the cloud layer's BASE above the ground, in meters — 600 to 2000 m covers most real low cloud."},highCloudCover:{type:"number",doc:"How much of the sky the HIGH deck covered, 0 to 1 — cirrus and cirrostratus, above about six kilometres, where anything present is ice rather than water."},lowerCloudCover:{type:"number",doc:"How much of the sky the LOW and MIDDLE decks covered, 0 to 1 — the cloud that stands between a observer and anything higher up."},iceCrystalAlignment:{type:"number",doc:"How steadily the ice crystals were falling, 0 to 1 — the one thing about the sky that decides which halo forms stood, and the one thing no record of any sighting holds."},relativeHumidity:{type:"number",doc:"Relative humidity near the ground, 0 to 1."},precipitationType:{type:"enum",values:["none","rain","snow","hail"]},precipitationIntensity:{type:"number",doc:'0-1; meaningless while precipitationType is "none".'},precipitationAmount:{type:"number",doc:"How much of that precipitation is actually falling yet, 0 to 1 — absent meaning all of it."},windDirectionDeg:{type:"number",doc:"Degrees clockwise from true north — same convention as ObserverPose.headingDeg, and the direction the wind blows *toward*, not the one it comes from: SceneRenderer drifts every precipitation particle and cloud field along exactly this bearing (`sin/-cos`, north = -Z), so 0 means snow drifting northward."},windSpeed:{type:"number",doc:"Real-world wind speed in m/s (0 = calm, ~30 = violent storm/hurricane-force) — drives both cloud advection, visual precipitation drift and wind audio volume directly."},storm:{type:"boolean",doc:"Whether a thunderstorm was reported — drives both a scene-fog lightning flash and a delayed thunderclap (see SceneRenderer's lightning-flash scheduling, named for the visual mechanism it implements internally, not for this field)."}}}}}}},b={type:"object",doc:`Legacy static weather condition, kept only as weatherTrack's own fallback for recordings made before it existed — absent means "unknown/not recorded", not "clear skies" (renderers default to DEFAULT_WEATHER, see Weather.ts).`,fields:{cloudLayers:{type:"array",doc:"Explicit layers override the historical cloud fields; [] means no clouds.",fields:{id:{type:"string",doc:"Stable across keyframes: reordering layers must not regenerate their cloud pattern."},instances:{type:"array",doc:"Optional explicit masses, independent of the generated coverage percentage.",fields:{id:{type:"string"},eastM:{type:"number",doc:"Position relative to the recording's initial observer, in metres east/north."},northM:{type:"number"},baseM:{type:"number"},thicknessM:{type:"number"},widthM:{type:"number"},depthM:{type:"number"},rotationDeg:{type:"number"},density:{type:"number"},darkness:{type:"number",doc:"Visual shading, 0 (white) to 1 (very dark); absent inherits the parent layer."},seed:{type:"number"}}},type:{type:"enum",values:["cumulus","stratus","stratocumulus","cirrus","unknown"]},baseM:{type:"number",doc:"Base in metres above the recording's reference ground, not above the moving observer."},thicknessM:{type:"number",doc:"Vertical extent in metres."},coverage:{type:"number",doc:"Horizontal coverage, 0–1."},sizeM:{type:"number",doc:"Characteristic horizontal cloud size in metres."},density:{type:"number",doc:"Relative optical density, 0–2; zero is transparent."},darkness:{type:"number",doc:"Visual shading, 0 (white) to 1 (very dark)."},iceCrystalAlignment:{type:"number",doc:"Degree of preferential crystal orientation, meaningful only for cirrus."},seed:{type:"number",doc:"Reproducible variation; defaults to a hash of the stable layer id."},windDirectionDeg:{type:"number",doc:"Optional wind overrides; bearing TOWARD which the cloud travels, clockwise from north."},windSpeed:{type:"number"}}},cloudCover:{type:"number",doc:"0 = clear sky, 1 = fully overcast."},cloudDarkness:{type:"number",doc:"0 = light/clear clouds, 1 = dark/stormy character."},cloudBaseM:{type:"number",doc:"Height of the cloud layer's BASE above the ground, in meters — 600 to 2000 m covers most real low cloud."},highCloudCover:{type:"number",doc:"How much of the sky the HIGH deck covered, 0 to 1 — cirrus and cirrostratus, above about six kilometres, where anything present is ice rather than water."},lowerCloudCover:{type:"number",doc:"How much of the sky the LOW and MIDDLE decks covered, 0 to 1 — the cloud that stands between a observer and anything higher up."},iceCrystalAlignment:{type:"number",doc:"How steadily the ice crystals were falling, 0 to 1 — the one thing about the sky that decides which halo forms stood, and the one thing no record of any sighting holds."},relativeHumidity:{type:"number",doc:"Relative humidity near the ground, 0 to 1."},precipitationType:{type:"enum",values:["none","rain","snow","hail"]},precipitationIntensity:{type:"number",doc:'0-1; meaningless while precipitationType is "none".'},precipitationAmount:{type:"number",doc:"How much of that precipitation is actually falling yet, 0 to 1 — absent meaning all of it."},windDirectionDeg:{type:"number",doc:"Degrees clockwise from true north — same convention as ObserverPose.headingDeg, and the direction the wind blows *toward*, not the one it comes from: SceneRenderer drifts every precipitation particle and cloud field along exactly this bearing (`sin/-cos`, north = -Z), so 0 means snow drifting northward."},windSpeed:{type:"number",doc:"Real-world wind speed in m/s (0 = calm, ~30 = violent storm/hurricane-force) — drives both cloud advection, visual precipitation drift and wind audio volume directly."},storm:{type:"boolean",doc:"Whether a thunderstorm was reported — drives both a scene-fog lightning flash and a delayed thunderclap (see SceneRenderer's lightning-flash scheduling, named for the visual mechanism it implements internally, not for this field)."}}},f={type:"object",doc:"What the sighting sounded like over time — see SoundTrack.",fields:{keyframes:{type:"array",fields:{t:{type:"number"},sound:{type:"object",fields:{kind:{type:"enum",values:["none","hum","whistle","rumble","crackle"]},volume:{type:"number",doc:"How loud it was, 0 (inaudible) to 1 (as loud as the observer could describe) — deliberately relative rather than a dB SPL figure: nobody reports a sound level in decibels, and inventing one would claim a measurement where there is only an impression."},pitchHz:{type:"number",doc:`The sound's own frequency in Hz — the oscillator's pitch for the pitched kinds ("hum", "whistle"), and the noise filter's centre for the unpitched ones ("rumble", "crackle"), where it reads as how deep or how sharp the noise is.`},src:{type:"string",doc:"An actual audio recording of the sound, when one exists (a observer who filmed the event, a later recording of the same phenomenon) — replaces synthesis entirely while it is set, with `volume` still scaling it."}}}}}}},w={type:"array",doc:"See Sighting.decor.",fields:{id:{type:"string"},kind:{type:"enum",values:["building","tree","crop","mound","streetlight","vehicle","observer","aircraft","shrub","bridge","entity"]},title:{type:"string",doc:'Optional display name, same role as Shape.title — falls back to a generic "{kind} {n}" label (see SightingEditorElement.decorLabel) when absent.',loose:!0},eastM:{type:"number",doc:"Meters from the observer's own position — eastM positive = east, northM positive = north."},northM:{type:"number"},headingDeg:{type:"number",doc:"Degrees clockwise from true north, same convention as ObserverPose.headingDeg — which way a vehicle is facing, or a observer looking."},lit:{type:"boolean",doc:"Streetlight lamp / vehicle headlights switched on."},litKeyframes:{type:"array",doc:"Sorted by t.",fields:{t:{type:"number"},lit:{type:"boolean"}}},lights:{type:"array",doc:"The object's individual lamps, each with its own place on the body and its own rhythm — see DecorLight, and LIGHT_RIGS for the ready-made sets.",fields:{id:{type:"string"},offsetM:{type:"object",doc:"Where it sits on the object, in meters relative to the object's own centre and heading: +x is its right, +y up, +z its front.",fields:{x:{type:"number"},y:{type:"number"},z:{type:"number"}}},color:{type:"string",doc:"CSS hex colour, as emitted — the regulated red/green/white of navigation lights, the amber of a hazard flasher."},intensity:{type:"number",doc:"Peak luminous intensity as a ratio to an ordinary navigation light's (1, about a hundred candela — see DecorSystem's LAMP_CANDELA); the airliner rig (LIGHT_RIGS) gives its beacon 1.5 and its wingtip strobes 20."},pattern:{type:"object",fields:{kind:{type:"enum",values:["steady","flash"]},perMinute:{type:"number"},dutyCycle:{type:"number"},phase:{type:"number"}}}}},track:{type:"array",doc:"Where the object is over time, when it moves — an aircraft crossing the sky, a car driving past.",fields:{t:{type:"number"},eastM:{type:"number"},northM:{type:"number"},altitudeM:{type:"number",doc:"Meters above the observer's own elevation."},headingDeg:{type:"number"}}},sightingUrl:{type:"string",doc:`For kind "observer" only: the URL of that observer's own sighting.json recording, if known — lets the 3D scene's own context menu offer "view this observer's account" (loading it the same way SightingEditorElement.importFromUrl already does).`},windows:{type:"object",doc:"Per-side window opacity, 0 (fully open — the pane is invisible, and DecorSystem.addRoom's own interior wall panel is skipped there too, same as no window at all) to 100 (fully closed — a solid-looking pane)."},color:{type:"string",doc:'What colour this object actually is, as a CSS colour — the same way a shape states its own (see Shape.color), because a recording is written and read by people and "#8f86a8" is a colour a person can type.'},observerSide:{type:"enum",values:["front","behind","left","right","front-left","front-right","behind-left","behind-right"]},engine:{type:"object",doc:"A vehicle heard running — see DecorEngine: its engine turning with its own `track`, heard less the further it is from the observer.",fields:{kind:{type:"enum",doc:'Which sound: a decor object\'s own `kind` says only "vehicle".',values:["car","van","truck","motorcycle","generic"]},noise:{type:"number",doc:"As ObserverVehicle.noise."}}},bridge:{type:"object",doc:'Kind "bridge" only: how it is built, where that is known — see BridgeStructure.',fields:{spanM:{type:"number",doc:"Metres of open span under the deck, centred on the object."},deckThicknessM:{type:"number",doc:"Thickness of the deck slab, metres."},railing:{type:"object",doc:"The railing along both edges: its height above the road, the spacing of its posts, and how many horizontal rails it has — two rails make two rows of rectangular openings.",fields:{heightM:{type:"number"},postSpacingM:{type:"number"},rails:{type:"number"}}}}},floors:{type:"number",doc:'Kind "building" only: number of upper stories above the ground floor, set when the building is created (default 2, see SightingEditorElement.addDecor) and editable afterward.'},occupiedFloor:{type:"number",doc:'Kind "building" only, meaningful once observerSide is set: which floor the observer is on, 0 (ground floor) up to floors.'},occludesSourceIds:{type:"array",doc:"Shape sourceIds (see Timeline.sourceIds/Shape) this decor object sits in front of, from the observer's own reported viewpoint — occluding that shape wherever their screen positions line up (see SceneRenderer.isScreenPointOccluded)."},sizeM:{type:"object",doc:"How big it really is, in meters, along its own axes — see DecorSize.",fields:{widthM:{type:"number"},lengthM:{type:"number"},heightM:{type:"number"}}},model:{type:"object",doc:"The real 3D model that stands in for the primitive, if one does — see DecorModelRef.",fields:{id:{type:"string",doc:"Catalogue entry, resolved by the live DecorModelProvider."},url:{type:"string",doc:"Direct glTF/GLB address, taking precedence over `id`."},headingOffsetDeg:{type:"number",doc:"Degrees to turn the loaded model about its own vertical axis so its nose points the way this scene's heading convention expects (0 faces -Z — see DecorSystem's build)."},credit:{type:"object",doc:"Who made it and under what licence.",fields:{title:{type:"string"},author:{type:"string"},license:{type:"string",doc:"Licence name as its author states it, e.g."},sourceUrl:{type:"string",doc:"Where it came from, so the claim can be checked."}}}}}}},v={type:"array",doc:"The roads the account's own plan draws — see Sighting.roads and Road.ts.",fields:{id:{type:"string"},title:{type:"string",doc:"What the account calls it, where it calls it anything.",loose:!0},surface:{type:"enum",values:["paved","gravel","dirt"]},widthM:{type:"number",doc:"Carriageway width, metres."},path:{type:"array",doc:"The centre line, in metres east and north of the observer's place at t=0.",fields:{eastM:{type:"number"},northM:{type:"number"}}},source:{type:"string",doc:"Where this line comes from — the plan, the survey, the report it was read off.",loose:!0}}},k={type:"array",doc:"What an investigator drew over the place, imported from their file — see Sighting.traces and Trace.ts.",fields:{id:{type:"string"},title:{type:"string",doc:'What its author called it ("Ligne de visée depuis la ferme").',loose:!0},kind:{type:"enum",values:["polygon","point","line"]},points:{type:"array",doc:"One point for a marker, the vertices of a line, the vertices of an outline (not repeated at the end: it is closed by being a polygon).",fields:{lat:{type:"number"},lng:{type:"number"},altM:{type:"number",doc:"Metres, read as `InvestigatorTrace.altitude` says."}}},altitude:{type:"enum",doc:"How `altM` is read.",values:["ground","relative","absolute"]},color:{type:"string",doc:"CSS colour the author gave it, `#rrggbb`."},source:{type:"string",doc:"Whose it is and where it comes from — the person, the report, the file.",loose:!0}}},S={type:"object",doc:"Which meteorological record `weatherTrack` was looked up from, when it wasn't the observer who stated the conditions — see Sighting.weatherSource.",fields:{id:{type:"string",doc:"Stable dataset id, e.g."},name:{type:"string",doc:"Human-readable dataset name, e.g."},url:{type:"string",doc:"The exact request that produced these values, so the claim stays checkable years later."}}},D={type:"string",doc:"Which INSTRUMENTS entry this was observed through — see Sighting.instrumentId."},M={type:"number",doc:"How long the shutter stayed open, seconds — one value for the whole observation, see Sighting.exposureSeconds."},T={type:"number",doc:"The speed of the film or sensor this picture was taken on — see Sighting.iso."},W={type:"number",doc:`How bright the night sky is at the place, towns and all: the zenith of a moonless night in magnitudes per square arcsecond, a Sky Quality Meter's reading or the World Atlas's "SQM" figure (Falchi et al.`},j={type:"boolean",doc:"Whether the map of where the observer stood starts open — see Sighting.observerMap."},H={type:"array",doc:"The named moments of the account — see Milestone.",fields:{t:{type:"number",doc:"When, in milliseconds from the start of the recording — the same scale every track uses."},label:{type:"string",doc:'Short label, shown on the seek bar: the letter or number the account itself uses ("A", "B"), or a couple of words where it uses none.',loose:!0},note:{type:"string",doc:"What happened at that moment, in the account's own words where possible.",loose:!0}}},x={type:"array",doc:"Pictures of the place, laid over the reconstruction at the direction each was registered in — see SceneReference.",fields:{id:{type:"string",doc:"Stable id, what the editor's own list and a future trace on the picture name."},kind:{type:"enum",values:["photo","panorama"]},src:{type:"string",doc:"Where the picture is: an address, or the picture itself as a `data:` URL."},title:{type:"string",doc:'What to call it — "Vue depuis le muret, fin été 1968".',loose:!0},credit:{type:"string",doc:"Who made it and on what terms — shown wherever the picture is, because a credit that is not displayed is not a licence (see DataSource for the same rule on the data)."},creditUrl:{type:"string",doc:"Where that credit points: the source page, the licence."},t:{type:"number",doc:"The instant of the timeline it was taken at, milliseconds, for a picture made DURING the observation — by the observer, or by whoever was there."},from:{type:"object",doc:"Where it was taken from — the one point its registration holds for.",fields:{lat:{type:"number"},lng:{type:"number"}}},drawing:{type:"boolean",doc:"Whether somebody drew on it — a trajectory, an outline, an arrow — so that what the picture shows of the phenomenon is a statement made afterwards, not a thing the camera recorded."},opacity:{type:"number",doc:"How much of it shows, 0 to 1 — the starting point of the reader's own slider, since the comparison is made by sliding: all picture, all render, and the registration checked at every step between."},registration:{type:"object",fields:{headingDeg:{type:"number",doc:"Degrees clockwise from true north, the direction the picture's centre looks at."},pitchDeg:{type:"number",doc:"Degrees above the local horizontal, positive up."},rollDeg:{type:"number",doc:"Degrees the picture is tilted about its own axis, positive clockwise as it is looked at — see ObserverPose.rollDeg."},fovDeg:{type:"number",doc:"The picture's VERTICAL field, degrees — what the lens took in top to bottom, its horizontal field following from the image's own aspect ratio."}}},landmarks:{type:"array",doc:"The details it was lined up on — see PictureLandmark.",fields:{id:{type:"string"},label:{type:"string",doc:'What the detail is — "Arbre masquant", "barrière".',loose:!0},picture:{type:"object",doc:"Where it is on the picture, 0..1 from the top-left corner.",fields:{u:{type:"number"},v:{type:"number"}}},scene:{type:"object",doc:"Where it is from the observer, in the scene.",fields:{azimuthDeg:{type:"number"},altitudeDeg:{type:"number"}}}}}}},C={type:"array",doc:"Where the account can be read as it was given, each one a source — see RecordingSource.",fields:{type:{type:"enum",values:["book","article"]},title:{type:"string"},authors:{type:"array",doc:"The author(s) name(s): for a post, the account that posted it."},url:{type:"string",doc:"Where it can be read."},publication:{type:"object",doc:"Who published it and when (EDTF).",fields:{publisher:{type:"string"},time:{type:"string"}}},index:{type:"string",doc:"Chapter, page, etc."}}},I={type:"object",doc:"What the observer took it to be, in metres — see InterpretationJson.",fields:{title:{type:"string",doc:'What the claim is, in a few words — "Craft on its legs", "Weather balloon at 3 km".',loose:!0},bodies:{type:"array",fields:{id:{type:"string"},title:{type:"string",loose:!0},explains:{type:"array",doc:"The phenomena of the account (their `sourceId`s) this body claims to be — what its projected outline is measured against at each instant, and what is drawn as a ghost beside it."},model:{type:"object",doc:"What it is shaped like.",fields:{id:{type:"string",doc:"Catalogue entry, resolved by the live DecorModelProvider."},url:{type:"string",doc:"Direct glTF/GLB address, taking precedence over `id`."},headingOffsetDeg:{type:"number",doc:"Degrees to turn the loaded model about its own vertical axis so its nose points the way this scene's heading convention expects (0 faces -Z — see DecorSystem's build)."},credit:{type:"object",doc:"Who made it and under what licence.",fields:{title:{type:"string"},author:{type:"string"},license:{type:"string",doc:"Licence name as its author states it, e.g."},sourceUrl:{type:"string",doc:"Where it came from, so the claim can be checked."}}}}},outlineNode:{type:"string",doc:'The node of the model that IS what the observer drew — "hull" for a craft on legs the observer drew as an oval — and so what its outline is measured by (see BodyConfrontation).'},track:{type:"array",fields:{t:{type:"number"},eastM:{type:"number"},northM:{type:"number"},azimuthDeg:{type:"number"},altitudeDeg:{type:"number"},distanceM:{type:"number"},onGround:{type:"boolean",doc:"Standing on the ground."},present:{type:"boolean",doc:"Gone from here on — `false` — or back — `true`."},altitudeAboveGroundM:{type:"number",doc:"Metres between the ground under it and its lowest point."},sizeM:{type:"object",fields:{widthM:{type:"number"},lengthM:{type:"number"},heightM:{type:"number"}}},attitude:{type:"object",fields:{headingDeg:{type:"number"},pitchDeg:{type:"number"},rollDeg:{type:"number"}}},appearance:{type:"object",fields:{color:{type:"string",doc:"Its surface colour, CSS."},albedo:{type:"number",doc:"How much of the light falling on it it sends back, 0-1: aluminium ~0.7, a matt dark hull ~0.1."},luminanceCdM2:{type:"number",doc:"What it gives out of itself, candela per square metre — read through the scene's own photometry exactly as a flame's is (see BodyFlame), so that the same figure is a lamp at night and nothing at all against a noon sky."}}},flame:{type:"object",doc:"A flame coming out of it, from here on — see BodyFlame.",fields:{node:{type:"string"},lengthM:{type:"number",doc:"How far it reaches from the node, metres."},widthM:{type:"number",doc:"How wide it is at its widest, metres."},color:{type:"string",doc:"Its colour where it leaves the node, CSS."},tipColor:{type:"string",doc:"Its colour at its far end; the same as `color` when absent."},luminanceCdM2:{type:"number"},raisesDust:{type:"boolean",doc:"Whether it raises dust where it meets the ground — a flame reaching loose, dry soil does, the more the nearer it gets."}}},motions:{type:"object",doc:"How far along each of its model's own movements it is, by the movement's name in the model (a glTF animation): 0 at its start, 1 at its end, and on past 1 for one that repeats — a turn made three times is 3."},lights:{type:"object",doc:"The luminance of each of its model's own lights, cd/m², by the name of the light's material in the model: what lets one body carry lights that behave each their own way — a steady white at each end, a red one flashing between."}}}}},smoke:{type:"array",doc:"Fires the interpretation lights on the ground, as their smoke — see SmokeSource.",fields:{eastM:{type:"number"},northM:{type:"number"},fromT:{type:"number"},untilT:{type:"number"},halfLifeS:{type:"number",doc:"How fast it dies down, seconds to half its thickness — brush flares and smoulders."}}},reentries:{type:"array",doc:"Re-entries it claims were seen: placed on the Earth, not round the observer — see ReentryJson.",fields:{id:{type:"string"},title:{type:"string",loose:!0},explains:{type:"array",doc:"The phenomena of the account (their `sourceId`s) this re-entry claims to be — see BodyJson.explains."},object:{type:"object",doc:"The object that came down, when it is known — the catalogue says which piece it was.",fields:{name:{type:"string",doc:'Its catalogue name — "SL-12 R/B".'},cosparId:{type:"string",doc:'International designator — "1968-013C".'},norad:{type:"number",doc:"US Space Surveillance Network catalogue number — 3136."}}},track:{type:"array",doc:"Where the leading point of the break-up was, at instants of the recording.",fields:{t:{type:"number"},lat:{type:"number"},lng:{type:"number"},altitudeKm:{type:"number",doc:"Height above the ellipsoid, km."}}},fragments:{type:"array",doc:"The pieces seen, each following the same path some seconds behind the leading point.",fields:{id:{type:"string"},lagS:{type:"number",doc:"Seconds behind the leading point, along the same path."},fromT:{type:"number",doc:"When it is first seen, ms of the recording — when it broke off, or when it began to glow."},untilT:{type:"number",doc:"When it goes out, ms — burned up, or slowed below glowing."},absoluteMagnitude:{type:"number",doc:"Its brightness as a magnitude at 100 km — the meteor astronomers' absolute magnitude, which a fireball report gives — from which the brightness at the observer's actual distance follows."},color:{type:"string",doc:"Its colour, as a CSS hex colour."},trainS:{type:"number",doc:"How long a stretch of its own past path still glows behind it, seconds: the tail observers describe."}}}}}}},z={version:e,id:t,time:o,endTime:r,durationSeconds:n,utcOffsetHours:i,timeZone:s,place:a,observer:d,account:c,sway:l,vehicle:h,description:u,tags:p,timeline:y,observerTrack:m,weatherTrack:g,weather:b,soundTrack:f,decor:w,roads:v,traces:k,weatherSource:S,instrument:D,exposureSeconds:M,iso:T,lightPollution:W,observerMap:j,milestones:H,references:x,sources:C,interpretation:I};export{c as account,w as decor,z as default,u as description,n as durationSeconds,r as endTime,M as exposureSeconds,t as id,D as instrument,I as interpretation,T as iso,W as lightPollution,H as milestones,d as observer,j as observerMap,m as observerTrack,a as place,x as references,v as roads,f as soundTrack,C as sources,l as sway,p as tags,o as time,s as timeZone,y as timeline,k as traces,i as utcOffsetHours,h as vehicle,e as version,b as weather,S as weatherSource,g as weatherTrack};