@rr0/ufoathome 0.71.0 → 0.72.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist-embed-scene/SceneNames_es-C1QdYSKO.js +1 -0
- package/dist-embed-scene/SceneNames_fr-0Wzm8zKy.js +1 -0
- package/dist-embed-scene/SceneNames_it-C5oOps-9.js +1 -0
- package/dist-embed-scene/UfoMessages_es-CzuRdJdo.js +1 -0
- package/dist-embed-scene/UfoMessages_it-C2dUwy6T.js +1 -0
- package/dist-embed-scene/rr0-scene.mjs +277 -277
- package/dist-embed-sighting/SceneNames_es-C1QdYSKO.js +1 -0
- package/dist-embed-sighting/SceneNames_fr-0Wzm8zKy.js +1 -0
- package/dist-embed-sighting/SceneNames_it-C5oOps-9.js +1 -0
- package/dist-embed-sighting/SightingMessages_es-CzQHam8j.js +1 -0
- package/dist-embed-sighting/SightingMessages_it-DddXXNv_.js +1 -0
- package/dist-embed-sighting/TagNames_es-BfnMpc3D.js +1 -0
- package/dist-embed-sighting/TagNames_it-n6E4EGYO.js +1 -0
- package/dist-embed-sighting/UfoMessages_es-CzuRdJdo.js +1 -0
- package/dist-embed-sighting/UfoMessages_it-C2dUwy6T.js +1 -0
- package/dist-embed-sighting/rr0-sighting.mjs +285 -285
- package/dist-embed-sighting-editor/{BodyEditor-Q5FX46YD.js → BodyEditor-CxM4nkOh.js} +2 -2
- package/dist-embed-sighting-editor/BodyEditorMessages_en-DkxURSds.js +1 -0
- package/dist-embed-sighting-editor/BodyEditorMessages_es-SY5kILwg.js +1 -0
- package/dist-embed-sighting-editor/BodyEditorMessages_fr-BtOnUoEQ.js +1 -0
- package/dist-embed-sighting-editor/BodyEditorMessages_it-Dx3dKDeW.js +1 -0
- package/dist-embed-sighting-editor/ClaudeNarrativeTexts_es-BDV0GimU.js +1 -0
- package/dist-embed-sighting-editor/ClaudeNarrativeTexts_fr-DiKzTF9T.js +1 -0
- package/dist-embed-sighting-editor/ClaudeNarrativeTexts_it-DwxjRDVG.js +1 -0
- package/dist-embed-sighting-editor/CloudEditorMessages_es-ozb6J7KN.js +1 -0
- package/dist-embed-sighting-editor/CloudEditorMessages_fr-CpKSij1v.js +1 -0
- package/dist-embed-sighting-editor/CloudEditorMessages_it-CPHBLAsn.js +1 -0
- package/dist-embed-sighting-editor/GLTFLoader-DSbhUTN3.js +1 -0
- package/dist-embed-sighting-editor/SceneNames_es-C1QdYSKO.js +1 -0
- package/dist-embed-sighting-editor/SceneNames_fr-0Wzm8zKy.js +1 -0
- package/dist-embed-sighting-editor/SceneNames_it-C5oOps-9.js +1 -0
- package/dist-embed-sighting-editor/SightingEditorMessages_es-BvzkEkJe.js +1 -0
- package/dist-embed-sighting-editor/SightingEditorMessages_it-BkOdokU1.js +1 -0
- package/dist-embed-sighting-editor/TagNames_es-BfnMpc3D.js +1 -0
- package/dist-embed-sighting-editor/TagNames_it-n6E4EGYO.js +1 -0
- package/dist-embed-sighting-editor/UfoMessages_es-CzuRdJdo.js +1 -0
- package/dist-embed-sighting-editor/UfoMessages_it-C2dUwy6T.js +1 -0
- package/dist-embed-sighting-editor/rr0-sighting-editor.mjs +293 -292
- package/package.json +1 -1
- package/dist-embed-sighting-editor/GLTFLoader-C33uvPO8.js +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{B as
|
|
1
|
+
import{U as v,l as k,B as p,N as f}from"./rr0-sighting-editor.mjs";import{bodyEditorMessages_en as g}from"./BodyEditorMessages_en-DkxURSds.js";class b{constructor(e,t,i){this.container=e,this.host=t,this.render(),this.setLanguage(i)}messages=g;languageToken=0;currentId;catalogueToken=0;shownEntry;syncedId;shownAppearance;static swatchOf(e){const t=/^#([0-9a-f])([0-9a-f])([0-9a-f])$/i.exec(e);return t?`#${t[1]}${t[1]}${t[2]}${t[2]}${t[3]}${t[3]}`.toLowerCase():/^#[0-9a-f]{6}$/i.test(e)?e.toLowerCase():"#c8c8c8"}async setLanguage(e){const t=++this.languageToken,i=v.includes(e)?e:"en",o=i==="en"?g:await k(i);t===this.languageToken&&o!==this.messages&&(this.messages=o,this.render())}sync(){const e=this.bodies;e.some(a=>a.id===this.currentId)||(this.currentId=e[0]?.id),this.input("body-interpretation-title").value=this.host.said().read(this.interpretation?.title)??"";const t=this.select("body-select");t.replaceChildren(...e.map(a=>new Option(this.labelOf(a),a.id))),this.currentId!==void 0&&(t.value=this.currentId);const i=this.host.newBodyStart(),o=this.element("body-add");o.disabled=i===void 0,o.title=i?i.label!==void 0?this.messages.addBodyHint.replace("{shape}",i.label):this.messages.addBodyHintView:this.messages.addBody,this.input("body-interpretation-title").closest("label").hidden=this.interpretation===void 0,this.select("body-select").closest("label").hidden=e.length===0;const d=this.current;if(this.element("body-none").hidden=e.length>0,this.element("body-fields").hidden=d===void 0,!d)return;this.input("body-id").value=d.id,this.input("body-title").value=this.host.said().read(d.title)??"",this.syncExplains(d),this.syncModelOptions(d);const n=d.model;this.input("body-model-url").value=n.url??"",this.input("body-model-title").value=n.credit?.title??"",this.input("body-model-author").value=n.credit?.author??"",this.input("body-model-license").value=n.credit?.license??"",this.input("body-model-source").value=n.credit?.sourceUrl??"";const s=this.element("body-model-advanced");s.open=n.url!==void 0||s.open&&d.id===this.syncedId,this.syncedId=d.id,this.element("body-model-incomplete").hidden=n.url===void 0||n.credit?.title!==void 0&&n.credit.license!==void 0,this.input("body-outline-node").value=d.outlineNode??"",this.element("body-track").textContent=this.trackSummary(d),this.syncKeyframe()}syncKeyframe(){const e=this.current;if(!e)return;const t=this.host.currentTime(),i=this.messages;this.element("body-key-legend").textContent=i.atPlayhead.replace("{t}",b.seconds(t));const o=this.host.readingOf(e,t),d=e.track.find(c=>c.t===t),n=b.keyframeBefore(e,t);this.element("body-key-note").textContent=o?d?i.keyframeHere:i.keyframeAdded:i.notPlaced,this.element("body-key-delete").disabled=d===void 0;const s=this.container.getRootNode().activeElement,a=n?.eastM!==void 0&&n.northM!==void 0?"world":"observer";s!==this.select("body-key-mode")&&(this.select("body-key-mode").value=a);const r=this.select("body-key-mode").value,l=n?.onGround===!0;this.input("body-key-ground").checked=l;for(const c of["body-key-azimuth","body-key-elevation","body-key-distance"])this.input(c).closest("label").hidden=r!=="observer";for(const c of["body-key-east","body-key-north"])this.input(c).closest("label").hidden=r!=="world";if(this.input("body-key-above").closest("label").hidden=r!=="world"||l,!o)return;const u={"body-key-azimuth":o.azimuthDeg,"body-key-elevation":o.altitudeDeg,"body-key-distance":o.distanceM,"body-key-east":o.eastM,"body-key-north":o.northM,"body-key-above":o.aboveGroundM,"body-key-width":o.sizeM.widthM,"body-key-length":o.sizeM.lengthM,"body-key-height":o.sizeM.heightM,"body-key-heading":o.attitude.headingDeg,"body-key-pitch":o.attitude.pitchDeg,"body-key-roll":o.attitude.rollDeg,"body-key-albedo":o.appearance.albedo,"body-key-luminance":o.appearance.luminanceCdM2};this.shownAppearance=o.appearance,this.input("body-key-colour")!==s&&(this.input("body-key-colour").value=b.swatchOf(o.appearance.color));for(const[c,y]of Object.entries(u))this.input(c)!==s&&(this.input(c).value=String(Number(y.toFixed(2))))}render(){const e=this.messages,t=(i,o,d="text",n="",s="",a="")=>`<label><span>${o}</span> <input id="${i}" type="${d}" placeholder="${n}" ${a} autocomplete="off"/>${s?` ${s}`:""}</label>`;this.container.innerHTML=`<div class="body-editor">
|
|
2
2
|
<p class="body-intro">${e.intro}</p>
|
|
3
3
|
${t("body-interpretation-title",e.interpretationTitle)}
|
|
4
4
|
<p id="body-none" class="body-intro">${e.none}</p>
|
|
@@ -48,4 +48,4 @@ import{B as g,N as v}from"./rr0-sighting-editor.mjs";class p{static en={intro:"W
|
|
|
48
48
|
<p class="body-intro">${e.pictureHint}</p>
|
|
49
49
|
</fieldset>
|
|
50
50
|
</div>
|
|
51
|
-
</div>`,this.select("body-select").addEventListener("change",()=>{this.currentId=this.select("body-select").value,this.sync()}),this.input("body-interpretation-title").addEventListener("change",()=>this.updateInterpretationTitle()),this.element("body-delete").addEventListener("click",()=>this.deleteCurrent()),this.element("body-add").addEventListener("click",()=>this.addBody()),this.element("body-look").addEventListener("click",()=>{const i=this.current;i&&this.host.lookAt(i)});for(const i of["body-id","body-title","body-outline-node","body-model-url","body-model-title","body-model-author","body-model-license","body-model-source"])this.input(i).addEventListener("change",()=>this.updateCurrent());this.select("body-model").addEventListener("change",()=>{const i=this.select("body-model").value;i!==""&&(this.input("body-model-url").value=""),this.updateCurrent(),this.syncModelOptions(this.current),i!==""&&this.adoptCatalogueSize(i),this.element("body-model-advanced").open=i!==""&&!g.includes(i)}),this.element("body-explains").addEventListener("change",()=>this.updateCurrent());for(const i of y.KEY_FIELDS)this.input(i).addEventListener("input",()=>this.updateKeyframe()),this.input(i).addEventListener("change",()=>this.updateKeyframe());this.select("body-key-mode").addEventListener("change",()=>this.updateKeyframe()),this.element("body-key-delete").addEventListener("click",()=>this.deleteKeyframe()),v.fit(this.container),this.sync()}syncExplains(e){const t=this.host.shapes(),i=this.element("body-explains"),o=[...new Set([...t.map(d=>d.id),...e.explains??[]])];i.replaceChildren(...o.map(d=>{const n=document.createElement("label"),s=document.createElement("input");return s.type="checkbox",s.value=d,s.checked=e.explains?.includes(d)??!1,n.append(s," ",t.find(a=>a.id===d)?.label??d),n})),o.length===0&&(i.textContent=this.messages.explainsNothing)}async syncModelOptions(e){const t=++this.catalogueToken,i=await this.host.modelProvider().entries().catch(()=>[]);if(t!==this.catalogueToken)return;const o=this.messages,d=document.createElement("optgroup");d.label=o.primitives,d.append(...g.map(r=>new Option(o.primitive[r],r)));const n=document.createElement("optgroup");n.label=o.catalogue,n.append(...i.map(r=>new Option(r.name,r.id)));const s=this.select("body-model");s.replaceChildren(d,n),e.model.url!==void 0&&s.prepend(new Option(o.modelAdvanced,""));const a=e.model.url===void 0?e.model.id:void 0;a!==void 0&&![...s.options].some(r=>r.value===a)&&s.append(new Option(a,a)),s.value=a??"",this.showCatalogueModel(e.model.url===void 0?i.find(r=>r.id===e.model.id):void 0)}showCatalogueModel(e){const t=this.current;if(!t||t.model.url!==void 0){this.shownEntry=void 0,this.element("body-model-catalogue").hidden=!0;return}this.shownEntry=e;const i=this.container.getRootNode().activeElement,o=[["body-model-url",e?.url],["body-model-title",e?.credit.title],["body-model-author",e?.credit.author],["body-model-license",e?.credit.license],["body-model-source",e?.credit.sourceUrl]];for(const[d,n]of o)this.input(d)!==i&&(this.input(d).value=n??"");this.element("body-model-catalogue").hidden=e===void 0,this.element("body-model-incomplete").hidden=!0}updateInterpretationTitle(){const e=this.interpretation??{bodies:[]},t=this.host.said().write(e.title,this.input("body-interpretation-title").value,this.host.writingLanguage());this.write({...e,title:t})}updateCurrent(){const e=this.current;if(!e)return;const t=this.input("body-id").value.trim(),i=t!==""&&!this.bodies.some(n=>n!==e&&n.id===t)?t:e.id,o=[...this.element("body-explains").querySelectorAll("input:checked")].map(n=>n.value),d={...e,id:i,title:this.host.said().write(e.title,this.input("body-title").value,this.host.writingLanguage()),explains:o.length>0?o:void 0,model:this.statedModel(e.model),outlineNode:this.stringOrUndefined(this.input("body-outline-node").value)};this.currentId=i,this.write({...this.interpretation,bodies:this.bodies.map(n=>n===e?d:n)})}addBody(){const e=this.host.newBodyStart();if(!e)return;const t=new Set(this.bodies.map(n=>n.id));let i=t.size+1;for(;t.has(`body-${i}`);)i++;const o={id:`body-${i}`,explains:e.sourceId!==void 0?[e.sourceId]:void 0,model:{id:"ellipsoid"},track:[e.keyframe]};this.currentId=o.id;const d=this.interpretation??{bodies:[]};this.write({...d,bodies:[...this.bodies,o]},!0)}async adoptCatalogueSize(e){const i=(await this.host.modelProvider().entry(e).catch(()=>{}))?.sizeM,o=this.current;if(!i||!o||o.model.id!==e)return;if(!o.track.some(n=>n.sizeM)&&o.track.length>0){const[n,...s]=[...o.track].sort((l,u)=>l.t-u.t),a={widthM:i.widthM??1,lengthM:i.lengthM??i.widthM??1,heightM:i.heightM??1},r=[{...n,sizeM:a},...s];this.write({...this.interpretation,bodies:this.bodies.map(l=>l===o?{...o,track:r}:l)},!0);return}const d=o.track.map(n=>{const s=n.sizeM?.widthM,a=i.widthM??s;if(!n.sizeM||s===void 0||a===void 0||s<=0)return n;const r=a/s,l={widthM:i.widthM??n.sizeM.widthM*r,lengthM:i.lengthM??n.sizeM.lengthM*r,heightM:i.heightM??n.sizeM.heightM*r};return n.distanceM!==void 0&&n.azimuthDeg!==void 0?{...n,sizeM:l,distanceM:Number((n.distanceM*r).toFixed(1))}:{...n,sizeM:l}});this.write({...this.interpretation,bodies:this.bodies.map(n=>n===o?{...o,track:d}:n)},!0)}get currentBodyId(){return this.current?.id}resize(e){const t=(i,o)=>{this.input(i).value=String(Number(Math.max(.01,o).toFixed(2)))};t("body-key-width",e.widthM),t("body-key-length",e.lengthM),t("body-key-height",e.heightM),this.updateKeyframe()}turnTo(e){const t=i=>((i+180)%360+360)%360-180;this.input("body-key-heading").value=String(Number(((e.headingDeg%360+360)%360).toFixed(1))),this.input("body-key-pitch").value=String(Number(Math.max(-90,Math.min(90,e.pitchDeg)).toFixed(1))),this.input("body-key-roll").value=String(Number(t(e.rollDeg).toFixed(1))),this.updateKeyframe()}show(e){!this.bodies.some(t=>t.id===e)||e===this.currentId||(this.currentId=e,this.sync())}readingNow(){const e=this.current;return e&&this.host.readingOf(e,this.host.currentTime())}dragTo(e,t){const i=this.readingNow();if(!i)return;const o=this.host.currentTime(),d=this.input("body-key-ground").checked,n=d?this.host.groundAlong(e,t,o):void 0,s=Math.PI/180,a=(r,l)=>{this.input(r).value=String(Number(l.toFixed(2)))};if(this.select("body-key-mode").value==="world"){const r=Math.cos(i.altitudeDeg*s),l=i.eastM-Math.sin(i.azimuthDeg*s)*r*i.distanceM,u=i.northM-Math.cos(i.azimuthDeg*s)*r*i.distanceM,c=Math.hypot(i.eastM-l,i.northM-u),m=n!==void 0?n*Math.cos(t*s):c;if(a("body-key-east",l+Math.sin(e*s)*m),a("body-key-north",u+Math.cos(e*s)*m),!d){const h=b=>Math.max(-89,Math.min(89,b))*s;a("body-key-above",Math.max(0,i.aboveGroundM+m*(Math.tan(h(t))-Math.tan(h(i.altitudeDeg)))))}}else a("body-key-azimuth",(e%360+360)%360),a("body-key-elevation",Math.max(-90,Math.min(90,t))),n!==void 0&&a("body-key-distance",n);this.updateKeyframe()}scaleDistance(e){const t=this.readingNow();if(!t)return;const i=(o,d)=>{this.input(o).value=String(Number(d.toFixed(2)))};if(this.select("body-key-mode").value==="world"){const o=Math.PI/180,d=Math.cos(t.altitudeDeg*o),n=t.eastM-Math.sin(t.azimuthDeg*o)*d*t.distanceM,s=t.northM-Math.cos(t.azimuthDeg*o)*d*t.distanceM;i("body-key-east",n+(t.eastM-n)*e),i("body-key-north",s+(t.northM-s)*e)}else i("body-key-distance",Math.max(.1,t.distanceM*e));this.updateKeyframe()}updateKeyframe(){const e=this.current;if(!e)return;const t=this.host.currentTime(),i=h=>{const b=Number(this.input(h).value);return Number.isFinite(b)?b:0},o=this.input("body-key-ground").checked,d=this.select("body-key-mode").value==="world"?{t,eastM:i("body-key-east"),northM:i("body-key-north"),...o?{onGround:!0}:{altitudeAboveGroundM:i("body-key-above")}}:{t,azimuthDeg:i("body-key-azimuth"),altitudeDeg:i("body-key-elevation"),distanceM:Math.max(.1,i("body-key-distance")),...o?{onGround:!0}:{}},n=h=>Math.max(.01,i(h)),s={color:this.input("body-key-colour").value,albedo:Math.max(0,Math.min(1,i("body-key-albedo"))),luminanceCdM2:Math.max(0,i("body-key-luminance"))},a=this.shownAppearance,r=!a||y.swatchOf(a.color)!==s.color.toLowerCase()||Math.abs(a.albedo-s.albedo)>1e-6||Math.abs(a.luminanceCdM2-s.luminanceCdM2)>1e-6,l=e.track.find(h=>h.t===t)?.appearance,u=r?s:l??void 0,c={...y.withoutPlacement(e.track.find(h=>h.t===t)),...d,sizeM:{widthM:n("body-key-width"),lengthM:n("body-key-length"),heightM:n("body-key-height")},attitude:{headingDeg:i("body-key-heading"),pitchDeg:i("body-key-pitch"),rollDeg:i("body-key-roll")},...u?{appearance:u}:{}},m=[...e.track.filter(h=>h.t!==t),c].sort((h,b)=>h.t-b.t);this.write({...this.interpretation,bodies:this.bodies.map(h=>h===e?{...e,track:m}:h)}),this.element("body-track").textContent=this.trackSummary({...e,track:m}),this.syncKeyframe()}deleteKeyframe(){const e=this.current;if(!e)return;const t=this.host.currentTime(),i=e.track.filter(o=>o.t!==t);i.length!==e.track.length&&this.write({...this.interpretation,bodies:this.bodies.map(o=>o===e?{...e,track:i}:o)},!0)}static KEY_FIELDS=["body-key-azimuth","body-key-elevation","body-key-distance","body-key-east","body-key-north","body-key-ground","body-key-above","body-key-width","body-key-length","body-key-height","body-key-heading","body-key-pitch","body-key-roll","body-key-colour","body-key-albedo","body-key-luminance"];static withoutPlacement(e){if(!e)return{};const{eastM:t,northM:i,azimuthDeg:o,altitudeDeg:d,distanceM:n,onGround:s,altitudeAboveGroundM:a,sizeM:r,attitude:l,appearance:u,...c}=e;return c}static keyframeBefore(e,t){const i=[...e.track].sort((o,d)=>o.t-d.t);return[...i].reverse().find(o=>o.t<=t)??i[0]}static seconds(e){return`${Math.round(e/100)/10} s`}deleteCurrent(){const e=this.current;e&&(this.currentId=void 0,this.write({...this.interpretation,bodies:this.bodies.filter(t=>t!==e)},!0))}statedModel(e){const t=this.stringOrUndefined(this.input("body-model-url").value),i=this.shownEntry,o=n=>this.stringOrUndefined(this.input(n).value);if(i&&t===i.url&&o("body-model-title")===i.credit.title&&o("body-model-author")===i.credit.author&&o("body-model-license")===i.credit.license&&o("body-model-source")===i.credit.sourceUrl)return{id:i.id};if(t){const n=this.stringOrUndefined(this.input("body-model-title").value),s=this.stringOrUndefined(this.input("body-model-license").value);return{url:t,headingOffsetDeg:e.url!==void 0?e.headingOffsetDeg:void 0,credit:n!==void 0&&s!==void 0?{title:n,license:s,author:this.stringOrUndefined(this.input("body-model-author").value),sourceUrl:this.stringOrUndefined(this.input("body-model-source").value)}:void 0}}return{id:this.stringOrUndefined(this.select("body-model").value)??e.id??"ellipsoid"}}write(e,t=!1){const i=e.bodies.length===0&&e.title===void 0&&e.smoke===void 0;if(this.host.sighting().interpretation=i?void 0:e,this.host.changed(),t){this.sync();return}const o=this.select("body-select");o.replaceChildren(...this.bodies.map(n=>new Option(this.labelOf(n),n.id))),this.currentId!==void 0&&(o.value=this.currentId);const d=this.current;d&&(this.input("body-id").value=d.id,this.element("body-model-incomplete").hidden=d.model.url===void 0||d.model.credit!==void 0,this.syncModelOptions(d))}trackSummary(e){const t=e.track.map(o=>o.t);if(t.length===0)return this.messages.trackEmpty;const i=o=>`${Math.round(o/100)/10} s`;return t.length===1?this.messages.trackSingle.replace("{at}",i(t[0])):this.messages.trackSpan.replace("{n}",String(t.length)).replace("{from}",i(Math.min(...t))).replace("{to}",i(Math.max(...t)))}labelOf(e){const t=this.host.said().read(e.title);return t?`${t} (${e.id})`:e.id}get interpretation(){return this.host.sighting().interpretation}get bodies(){return this.interpretation?.bodies??[]}get current(){return this.bodies.find(e=>e.id===this.currentId)}stringOrUndefined(e){const t=e.trim();return t===""?void 0:t}element(e){return this.container.querySelector("#"+e)}input(e){return this.element(e)}select(e){return this.element(e)}}export{y as BodyEditor};
|
|
51
|
+
</div>`,this.select("body-select").addEventListener("change",()=>{this.currentId=this.select("body-select").value,this.sync()}),this.input("body-interpretation-title").addEventListener("change",()=>this.updateInterpretationTitle()),this.element("body-delete").addEventListener("click",()=>this.deleteCurrent()),this.element("body-add").addEventListener("click",()=>this.addBody()),this.element("body-look").addEventListener("click",()=>{const i=this.current;i&&this.host.lookAt(i)});for(const i of["body-id","body-title","body-outline-node","body-model-url","body-model-title","body-model-author","body-model-license","body-model-source"])this.input(i).addEventListener("change",()=>this.updateCurrent());this.select("body-model").addEventListener("change",()=>{const i=this.select("body-model").value;i!==""&&(this.input("body-model-url").value=""),this.updateCurrent(),this.syncModelOptions(this.current),i!==""&&this.adoptCatalogueSize(i),this.element("body-model-advanced").open=i!==""&&!p.includes(i)}),this.element("body-explains").addEventListener("change",()=>this.updateCurrent());for(const i of b.KEY_FIELDS)this.input(i).addEventListener("input",()=>this.updateKeyframe()),this.input(i).addEventListener("change",()=>this.updateKeyframe());this.select("body-key-mode").addEventListener("change",()=>this.updateKeyframe()),this.element("body-key-delete").addEventListener("click",()=>this.deleteKeyframe()),f.fit(this.container),this.sync()}syncExplains(e){const t=this.host.shapes(),i=this.element("body-explains"),o=[...new Set([...t.map(d=>d.id),...e.explains??[]])];i.replaceChildren(...o.map(d=>{const n=document.createElement("label"),s=document.createElement("input");return s.type="checkbox",s.value=d,s.checked=e.explains?.includes(d)??!1,n.append(s," ",t.find(a=>a.id===d)?.label??d),n})),o.length===0&&(i.textContent=this.messages.explainsNothing)}async syncModelOptions(e){const t=++this.catalogueToken,i=await this.host.modelProvider().entries().catch(()=>[]);if(t!==this.catalogueToken)return;const o=this.messages,d=document.createElement("optgroup");d.label=o.primitives,d.append(...p.map(r=>new Option(o.primitive[r],r)));const n=document.createElement("optgroup");n.label=o.catalogue,n.append(...i.map(r=>new Option(r.name,r.id)));const s=this.select("body-model");s.replaceChildren(d,n),e.model.url!==void 0&&s.prepend(new Option(o.modelAdvanced,""));const a=e.model.url===void 0?e.model.id:void 0;a!==void 0&&![...s.options].some(r=>r.value===a)&&s.append(new Option(a,a)),s.value=a??"",this.showCatalogueModel(e.model.url===void 0?i.find(r=>r.id===e.model.id):void 0)}showCatalogueModel(e){const t=this.current;if(!t||t.model.url!==void 0){this.shownEntry=void 0,this.element("body-model-catalogue").hidden=!0;return}this.shownEntry=e;const i=this.container.getRootNode().activeElement,o=[["body-model-url",e?.url],["body-model-title",e?.credit.title],["body-model-author",e?.credit.author],["body-model-license",e?.credit.license],["body-model-source",e?.credit.sourceUrl]];for(const[d,n]of o)this.input(d)!==i&&(this.input(d).value=n??"");this.element("body-model-catalogue").hidden=e===void 0,this.element("body-model-incomplete").hidden=!0}updateInterpretationTitle(){const e=this.interpretation??{bodies:[]},t=this.host.said().write(e.title,this.input("body-interpretation-title").value,this.host.writingLanguage());this.write({...e,title:t})}updateCurrent(){const e=this.current;if(!e)return;const t=this.input("body-id").value.trim(),i=t!==""&&!this.bodies.some(n=>n!==e&&n.id===t)?t:e.id,o=[...this.element("body-explains").querySelectorAll("input:checked")].map(n=>n.value),d={...e,id:i,title:this.host.said().write(e.title,this.input("body-title").value,this.host.writingLanguage()),explains:o.length>0?o:void 0,model:this.statedModel(e.model),outlineNode:this.stringOrUndefined(this.input("body-outline-node").value)};this.currentId=i,this.write({...this.interpretation,bodies:this.bodies.map(n=>n===e?d:n)})}addBody(){const e=this.host.newBodyStart();if(!e)return;const t=new Set(this.bodies.map(n=>n.id));let i=t.size+1;for(;t.has(`body-${i}`);)i++;const o={id:`body-${i}`,explains:e.sourceId!==void 0?[e.sourceId]:void 0,model:{id:"ellipsoid"},track:[e.keyframe]};this.currentId=o.id;const d=this.interpretation??{bodies:[]};this.write({...d,bodies:[...this.bodies,o]},!0)}async adoptCatalogueSize(e){const i=(await this.host.modelProvider().entry(e).catch(()=>{}))?.sizeM,o=this.current;if(!i||!o||o.model.id!==e)return;if(!o.track.some(n=>n.sizeM)&&o.track.length>0){const[n,...s]=[...o.track].sort((l,u)=>l.t-u.t),a={widthM:i.widthM??1,lengthM:i.lengthM??i.widthM??1,heightM:i.heightM??1},r=[{...n,sizeM:a},...s];this.write({...this.interpretation,bodies:this.bodies.map(l=>l===o?{...o,track:r}:l)},!0);return}const d=o.track.map(n=>{const s=n.sizeM?.widthM,a=i.widthM??s;if(!n.sizeM||s===void 0||a===void 0||s<=0)return n;const r=a/s,l={widthM:i.widthM??n.sizeM.widthM*r,lengthM:i.lengthM??n.sizeM.lengthM*r,heightM:i.heightM??n.sizeM.heightM*r};return n.distanceM!==void 0&&n.azimuthDeg!==void 0?{...n,sizeM:l,distanceM:Number((n.distanceM*r).toFixed(1))}:{...n,sizeM:l}});this.write({...this.interpretation,bodies:this.bodies.map(n=>n===o?{...o,track:d}:n)},!0)}get currentBodyId(){return this.current?.id}resize(e){const t=(i,o)=>{this.input(i).value=String(Number(Math.max(.01,o).toFixed(2)))};t("body-key-width",e.widthM),t("body-key-length",e.lengthM),t("body-key-height",e.heightM),this.updateKeyframe()}turnTo(e){const t=i=>((i+180)%360+360)%360-180;this.input("body-key-heading").value=String(Number(((e.headingDeg%360+360)%360).toFixed(1))),this.input("body-key-pitch").value=String(Number(Math.max(-90,Math.min(90,e.pitchDeg)).toFixed(1))),this.input("body-key-roll").value=String(Number(t(e.rollDeg).toFixed(1))),this.updateKeyframe()}show(e){!this.bodies.some(t=>t.id===e)||e===this.currentId||(this.currentId=e,this.sync())}readingNow(){const e=this.current;return e&&this.host.readingOf(e,this.host.currentTime())}dragTo(e,t){const i=this.readingNow();if(!i)return;const o=this.host.currentTime(),d=this.input("body-key-ground").checked,n=d?this.host.groundAlong(e,t,o):void 0,s=Math.PI/180,a=(r,l)=>{this.input(r).value=String(Number(l.toFixed(2)))};if(this.select("body-key-mode").value==="world"){const r=Math.cos(i.altitudeDeg*s),l=i.eastM-Math.sin(i.azimuthDeg*s)*r*i.distanceM,u=i.northM-Math.cos(i.azimuthDeg*s)*r*i.distanceM,c=Math.hypot(i.eastM-l,i.northM-u),y=n!==void 0?n*Math.cos(t*s):c;if(a("body-key-east",l+Math.sin(e*s)*y),a("body-key-north",u+Math.cos(e*s)*y),!d){const h=m=>Math.max(-89,Math.min(89,m))*s;a("body-key-above",Math.max(0,i.aboveGroundM+y*(Math.tan(h(t))-Math.tan(h(i.altitudeDeg)))))}}else a("body-key-azimuth",(e%360+360)%360),a("body-key-elevation",Math.max(-90,Math.min(90,t))),n!==void 0&&a("body-key-distance",n);this.updateKeyframe()}scaleDistance(e){const t=this.readingNow();if(!t)return;const i=(o,d)=>{this.input(o).value=String(Number(d.toFixed(2)))};if(this.select("body-key-mode").value==="world"){const o=Math.PI/180,d=Math.cos(t.altitudeDeg*o),n=t.eastM-Math.sin(t.azimuthDeg*o)*d*t.distanceM,s=t.northM-Math.cos(t.azimuthDeg*o)*d*t.distanceM;i("body-key-east",n+(t.eastM-n)*e),i("body-key-north",s+(t.northM-s)*e)}else i("body-key-distance",Math.max(.1,t.distanceM*e));this.updateKeyframe()}updateKeyframe(){const e=this.current;if(!e)return;const t=this.host.currentTime(),i=h=>{const m=Number(this.input(h).value);return Number.isFinite(m)?m:0},o=this.input("body-key-ground").checked,d=this.select("body-key-mode").value==="world"?{t,eastM:i("body-key-east"),northM:i("body-key-north"),...o?{onGround:!0}:{altitudeAboveGroundM:i("body-key-above")}}:{t,azimuthDeg:i("body-key-azimuth"),altitudeDeg:i("body-key-elevation"),distanceM:Math.max(.1,i("body-key-distance")),...o?{onGround:!0}:{}},n=h=>Math.max(.01,i(h)),s={color:this.input("body-key-colour").value,albedo:Math.max(0,Math.min(1,i("body-key-albedo"))),luminanceCdM2:Math.max(0,i("body-key-luminance"))},a=this.shownAppearance,r=!a||b.swatchOf(a.color)!==s.color.toLowerCase()||Math.abs(a.albedo-s.albedo)>1e-6||Math.abs(a.luminanceCdM2-s.luminanceCdM2)>1e-6,l=e.track.find(h=>h.t===t)?.appearance,u=r?s:l??void 0,c={...b.withoutPlacement(e.track.find(h=>h.t===t)),...d,sizeM:{widthM:n("body-key-width"),lengthM:n("body-key-length"),heightM:n("body-key-height")},attitude:{headingDeg:i("body-key-heading"),pitchDeg:i("body-key-pitch"),rollDeg:i("body-key-roll")},...u?{appearance:u}:{}},y=[...e.track.filter(h=>h.t!==t),c].sort((h,m)=>h.t-m.t);this.write({...this.interpretation,bodies:this.bodies.map(h=>h===e?{...e,track:y}:h)}),this.element("body-track").textContent=this.trackSummary({...e,track:y}),this.syncKeyframe()}deleteKeyframe(){const e=this.current;if(!e)return;const t=this.host.currentTime(),i=e.track.filter(o=>o.t!==t);i.length!==e.track.length&&this.write({...this.interpretation,bodies:this.bodies.map(o=>o===e?{...e,track:i}:o)},!0)}static KEY_FIELDS=["body-key-azimuth","body-key-elevation","body-key-distance","body-key-east","body-key-north","body-key-ground","body-key-above","body-key-width","body-key-length","body-key-height","body-key-heading","body-key-pitch","body-key-roll","body-key-colour","body-key-albedo","body-key-luminance"];static withoutPlacement(e){if(!e)return{};const{eastM:t,northM:i,azimuthDeg:o,altitudeDeg:d,distanceM:n,onGround:s,altitudeAboveGroundM:a,sizeM:r,attitude:l,appearance:u,...c}=e;return c}static keyframeBefore(e,t){const i=[...e.track].sort((o,d)=>o.t-d.t);return[...i].reverse().find(o=>o.t<=t)??i[0]}static seconds(e){return`${Math.round(e/100)/10} s`}deleteCurrent(){const e=this.current;e&&(this.currentId=void 0,this.write({...this.interpretation,bodies:this.bodies.filter(t=>t!==e)},!0))}statedModel(e){const t=this.stringOrUndefined(this.input("body-model-url").value),i=this.shownEntry,o=n=>this.stringOrUndefined(this.input(n).value);if(i&&t===i.url&&o("body-model-title")===i.credit.title&&o("body-model-author")===i.credit.author&&o("body-model-license")===i.credit.license&&o("body-model-source")===i.credit.sourceUrl)return{id:i.id};if(t){const n=this.stringOrUndefined(this.input("body-model-title").value),s=this.stringOrUndefined(this.input("body-model-license").value);return{url:t,headingOffsetDeg:e.url!==void 0?e.headingOffsetDeg:void 0,credit:n!==void 0&&s!==void 0?{title:n,license:s,author:this.stringOrUndefined(this.input("body-model-author").value),sourceUrl:this.stringOrUndefined(this.input("body-model-source").value)}:void 0}}return{id:this.stringOrUndefined(this.select("body-model").value)??e.id??"ellipsoid"}}write(e,t=!1){const i=e.bodies.length===0&&e.title===void 0&&e.smoke===void 0;if(this.host.sighting().interpretation=i?void 0:e,this.host.changed(),t){this.sync();return}const o=this.select("body-select");o.replaceChildren(...this.bodies.map(n=>new Option(this.labelOf(n),n.id))),this.currentId!==void 0&&(o.value=this.currentId);const d=this.current;d&&(this.input("body-id").value=d.id,this.element("body-model-incomplete").hidden=d.model.url===void 0||d.model.credit!==void 0,this.syncModelOptions(d))}trackSummary(e){const t=e.track.map(o=>o.t);if(t.length===0)return this.messages.trackEmpty;const i=o=>`${Math.round(o/100)/10} s`;return t.length===1?this.messages.trackSingle.replace("{at}",i(t[0])):this.messages.trackSpan.replace("{n}",String(t.length)).replace("{from}",i(Math.min(...t))).replace("{to}",i(Math.max(...t)))}labelOf(e){const t=this.host.said().read(e.title);return t?`${t} (${e.id})`:e.id}get interpretation(){return this.host.sighting().interpretation}get bodies(){return this.interpretation?.bodies??[]}get current(){return this.bodies.find(e=>e.id===this.currentId)}stringOrUndefined(e){const t=e.trim();return t===""?void 0:t}element(e){return this.container.querySelector("#"+e)}input(e){return this.element(e)}select(e){return this.element(e)}}export{b as BodyEditor};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e={intro:"What the observer said the phenomenon was, in 3D: each body stands for one or more of the shapes drawn. Its movement comes from the file.",interpretationTitle:"Interpretation",body:"Body",none:"No body yet: the observer said nothing of what it was, or it is still to be entered",deleteBody:"Delete body",addBody:"Add a body",addBodyHintView:"Where the observer is looking now",lookAtBody:"Look at it",addBodyHint:'Standing for the shape "{shape}", where the scene draws it now',id:"ID",title:"Name",explains:"Stands for the shapes",explainsNothing:"No shape",model:"3D model",primitives:"Built-in shapes",catalogue:"Catalogue",modelAdvanced:"Model from an address",modelUrl:"glTF/GLB address",modelUrlHint:"Absolute, or relative to this sighting.json",modelTitle:"Model name",modelAuthor:"Author",modelLicense:"Licence",modelSource:"Where it came from",modelIncomplete:"Not drawn until the model's name and licence are given",modelFromCatalogue:"From the catalogue, which the recording names it by. Change a field and it becomes this recording's own address.",outlineNode:"Part drawn by the observer",outlineNodeHint:"Node of the model, e.g. hull",track:"Movement",trackEmpty:"No keyframe",trackSpan:"{n} keyframes, from {from} to {to}",trackSingle:"1 keyframe, at {at}",atPlayhead:"At {t}",keyframeHere:"A keyframe stands here: editing changes it",keyframeAdded:"Editing adds a keyframe here",placement:"Position",fromObserver:"From the observer",inWorld:"In the world",azimuth:"Azimuth",elevation:"Elevation",distance:"Distance",east:"East",north:"North",onGround:"On the ground",aboveGround:"Above the ground",width:"Width",length:"Length",height:"Height",heading:"Heading",pitch:"Pitch",roll:"Roll",colour:"Colour",albedo:"Albedo",luminance:"Light of its own",appearanceNote:"The colour and the albedo paint the built-in shapes; a model of its own keeps its materials. Light of its own is what it gives out, lit or not.",deleteKeyframe:"Delete this keyframe",pictureHint:"On the picture: drag the body to move it, the wheel takes it nearer or further, the corners and sides size it, the stem turns it (with Shift: up and down pitches it, sideways rolls it).",notPlaced:"Not in the scene at this instant",primitive:{ellipsoid:"Ellipsoid",sphere:"Sphere",disc:"Disc",cylinder:"Cylinder",cone:"Cone",box:"Box",torus:"Torus",figure:"Human figure"}};export{e as bodyEditorMessages_en};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e={intro:"Lo que el observador dijo que era el fenómeno, en 3D: cada cuerpo representa una o varias de las formas dibujadas. Su movimiento viene del archivo.",interpretationTitle:"Interpretación",body:"Cuerpo",none:"Aún no hay ningún cuerpo: el observador no dijo nada de lo que era, o falta introducirlo",deleteBody:"Eliminar el cuerpo",addBody:"Añadir un cuerpo",addBodyHintView:"Donde mira el observador en este momento",lookAtBody:"Mirarlo",addBodyHint:"Representando la forma «{shape}», donde la escena la dibuja en este momento",id:"Identificador",title:"Nombre",explains:"Representa las formas",explainsNothing:"Ninguna forma",model:"Modelo 3D",primitives:"Formas básicas",catalogue:"Catálogo",modelAdvanced:"Modelo desde una dirección",modelUrl:"Dirección glTF/GLB",modelUrlHint:"Absoluta, o relativa a este sighting.json",modelTitle:"Nombre del modelo",modelAuthor:"Autor",modelLicense:"Licencia",modelSource:"Procedencia",modelIncomplete:"No se dibuja mientras falten el nombre y la licencia del modelo",modelFromCatalogue:"Del catálogo, por el que la grabación lo nombra. Cambia un campo y pasa a ser la dirección propia de esta grabación.",outlineNode:"Parte dibujada por el observador",outlineNodeHint:"Nodo del modelo, p. ej. hull",track:"Movimiento",trackEmpty:"Ningún fotograma clave",trackSpan:"{n} fotogramas clave, de {from} a {to}",trackSingle:"1 fotograma clave, en {at}",atPlayhead:"En {t}",keyframeHere:"Aquí hay un fotograma clave: editar lo modifica",keyframeAdded:"Editar añade aquí un fotograma clave",placement:"Posición",fromObserver:"Desde el observador",inWorld:"En el mundo",azimuth:"Acimut",elevation:"Elevación",distance:"Distancia",east:"Este",north:"Norte",onGround:"En el suelo",aboveGround:"Sobre el suelo",width:"Ancho",length:"Largo",height:"Alto",heading:"Rumbo",pitch:"Cabeceo",roll:"Alabeo",colour:"Color",albedo:"Albedo",luminance:"Luz propia",appearanceNote:"El color y el albedo pintan las formas básicas; un modelo propio conserva sus materiales. La luz propia es la que emite, esté iluminado o no.",deleteKeyframe:"Eliminar este fotograma clave",pictureHint:"En la imagen: arrastrar el cuerpo lo desplaza, la rueda lo acerca o lo aleja, las esquinas y los lados lo dimensionan, el vástago lo gira (con Mayús: arriba y abajo lo cabecean, los lados lo hacen alabear).",notPlaced:"No está en la escena en este instante",primitive:{ellipsoid:"Elipsoide",sphere:"Esfera",disc:"Disco",cylinder:"Cilindro",cone:"Cono",box:"Caja",torus:"Toro",figure:"Silueta humana"}};export{e as bodyEditorMessages_es};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e={intro:"Ce que l'observateur a dit que le phénomène était, en 3D : chaque corps représente une ou plusieurs des formes dessinées. Son mouvement vient du fichier.",interpretationTitle:"Interprétation",body:"Corps",none:"Aucun corps pour l'instant : l'observateur n'a rien dit de ce que c'était, ou c'est encore à saisir",deleteBody:"Supprimer le corps",addBody:"Ajouter un corps",addBodyHintView:"Là où l'observateur regarde à cet instant",lookAtBody:"Le regarder",addBodyHint:"Représentant la forme « {shape} », là où la scène la dessine à cet instant",id:"Identifiant",title:"Nom",explains:"Représente les formes",explainsNothing:"Aucune forme",model:"Modèle 3D",primitives:"Formes de base",catalogue:"Catalogue",modelAdvanced:"Modèle depuis une adresse",modelUrl:"Adresse glTF/GLB",modelUrlHint:"Absolue, ou relative à ce sighting.json",modelTitle:"Nom du modèle",modelAuthor:"Auteur",modelLicense:"Licence",modelSource:"Provenance",modelIncomplete:"Pas dessiné tant que le nom et la licence du modèle manquent",modelFromCatalogue:"Du catalogue, par lequel l'enregistrement le nomme. Modifiez un champ et il devient l'adresse propre à cet enregistrement.",outlineNode:"Partie dessinée par l'observateur",outlineNodeHint:"Nœud du modèle, par ex. hull",track:"Mouvement",trackEmpty:"Aucune image clé",trackSpan:"{n} images clés, de {from} à {to}",trackSingle:"1 image clé, à {at}",atPlayhead:"À {t}",keyframeHere:"Une image clé est ici : l'éditer la modifie",keyframeAdded:"Éditer ajoute une image clé ici",placement:"Position",fromObserver:"Depuis l'observateur",inWorld:"Dans le monde",azimuth:"Azimut",elevation:"Hauteur",distance:"Distance",east:"Est",north:"Nord",onGround:"Au sol",aboveGround:"Au-dessus du sol",width:"Largeur",length:"Longueur",height:"Hauteur",heading:"Cap",pitch:"Tangage",roll:"Roulis",colour:"Couleur",albedo:"Albédo",luminance:"Lumière propre",appearanceNote:"La couleur et l'albédo peignent les formes de base ; un modèle garde ses propres matériaux. La lumière propre est ce qu'il émet, éclairé ou non.",deleteKeyframe:"Supprimer cette image clé",pictureHint:"Sur l'image : glisser le corps le déplace, la molette le rapproche ou l'éloigne, les coins et les côtés le dimensionnent, la tige le tourne (avec Maj : haut et bas le cabrent, les côtés le font rouler).",notPlaced:"Pas dans la scène à cet instant",primitive:{ellipsoid:"Ellipsoïde",sphere:"Sphère",disc:"Disque",cylinder:"Cylindre",cone:"Cône",box:"Boîte",torus:"Tore",figure:"Silhouette humaine"}};export{e as bodyEditorMessages_fr};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const o={intro:"Ciò che l'osservatore ha detto che era il fenomeno, in 3D: ogni corpo rappresenta una o più delle forme disegnate. Il suo movimento viene dal file.",interpretationTitle:"Interpretazione",body:"Corpo",none:"Ancora nessun corpo: l'osservatore non ha detto nulla di ciò che era, o è ancora da inserire",deleteBody:"Elimina il corpo",addBody:"Aggiungi un corpo",addBodyHintView:"Dove guarda l'osservatore in questo momento",lookAtBody:"Guardalo",addBodyHint:"In rappresentanza della forma «{shape}», dove la scena la disegna in questo momento",id:"Identificativo",title:"Nome",explains:"Rappresenta le forme",explainsNothing:"Nessuna forma",model:"Modello 3D",primitives:"Forme di base",catalogue:"Catalogo",modelAdvanced:"Modello da un indirizzo",modelUrl:"Indirizzo glTF/GLB",modelUrlHint:"Assoluto, o relativo a questo sighting.json",modelTitle:"Nome del modello",modelAuthor:"Autore",modelLicense:"Licenza",modelSource:"Provenienza",modelIncomplete:"Non disegnato finché mancano il nome e la licenza del modello",modelFromCatalogue:"Dal catalogo, con cui la registrazione lo nomina. Modifica un campo e diventa l'indirizzo proprio di questa registrazione.",outlineNode:"Parte disegnata dall'osservatore",outlineNodeHint:"Nodo del modello, ad es. hull",track:"Movimento",trackEmpty:"Nessun fotogramma chiave",trackSpan:"{n} fotogrammi chiave, da {from} a {to}",trackSingle:"1 fotogramma chiave, a {at}",atPlayhead:"A {t}",keyframeHere:"Qui c'è un fotogramma chiave: modificarlo lo cambia",keyframeAdded:"Modificare aggiunge qui un fotogramma chiave",placement:"Posizione",fromObserver:"Dall'osservatore",inWorld:"Nel mondo",azimuth:"Azimut",elevation:"Elevazione",distance:"Distanza",east:"Est",north:"Nord",onGround:"A terra",aboveGround:"Sopra il suolo",width:"Larghezza",length:"Lunghezza",height:"Altezza",heading:"Rotta",pitch:"Beccheggio",roll:"Rollio",colour:"Colore",albedo:"Albedo",luminance:"Luce propria",appearanceNote:"Il colore e l'albedo dipingono le forme di base; un modello proprio conserva i suoi materiali. La luce propria è quella che emette, illuminato o no.",deleteKeyframe:"Elimina questo fotogramma chiave",pictureHint:"Sull'immagine: trascinare il corpo lo sposta, la rotellina lo avvicina o lo allontana, gli angoli e i lati lo dimensionano, lo stelo lo ruota (con Maiusc: su e giù lo fanno beccheggiare, i lati lo fanno rollare).",notPlaced:"Non è nella scena in questo istante",primitive:{ellipsoid:"Ellissoide",sphere:"Sfera",disc:"Disco",cylinder:"Cilindro",cone:"Cono",box:"Scatola",torus:"Toro",figure:"Sagoma umana"}};export{o as bodyEditorMessages_it};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const a={keyLabel:"Clave de API de Claude",keySuspect:"Esto no parece una clave de API de Claude: empiezan por sk-ant-",workspaceLabel:"ID del espacio de trabajo",workspacePlaceholder:"solo si tu clave abarca varios",workspaceHint:"Solo para una clave que abarca toda la organización. Más sencillo: déjalo vacío y crea una clave limitada a un espacio de trabajo.",modelLabel:"Modelo",fableChoice:"Claude Fable 5.1 (el más capaz, más caro)",sonnetChoice:"Claude Sonnet 5.5 (más barato)",haikuChoice:"Claude Haiku 4.5 (el más barato)"};export{a as claudeNarrativeTexts_es};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e={keyLabel:"Clé d'API Claude",keySuspect:"Ceci ne ressemble pas à une clé d'API Claude : elles commencent par sk-ant-",workspaceLabel:"ID d'espace de travail",workspacePlaceholder:"seulement si votre clé en couvre plusieurs",workspaceHint:"Seulement pour une clé couvrant toute l'organisation. Plus simple : laissez vide et créez une clé limitée à un espace de travail.",modelLabel:"Modèle",fableChoice:"Claude Fable 5.1 (le plus capable, plus cher)",sonnetChoice:"Claude Sonnet 5.5 (moins cher)",haikuChoice:"Claude Haiku 4.5 (le moins cher)"};export{e as claudeNarrativeTexts_fr};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const a={keyLabel:"Chiave API di Claude",keySuspect:"Questa non sembra una chiave API di Claude: iniziano con sk-ant-",workspaceLabel:"ID dell'area di lavoro",workspacePlaceholder:"solo se la tua chiave ne copre più di una",workspaceHint:"Solo per una chiave valida per tutta l'organizzazione. Più semplice: lascia vuoto e crea una chiave limitata a un'area di lavoro.",modelLabel:"Modello",fableChoice:"Claude Fable 5.1 (il più capace, più caro)",sonnetChoice:"Claude Sonnet 5.5 (più economico)",haikuChoice:"Claude Haiku 4.5 (il più economico)"};export{a as claudeNarrativeTexts_it};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e={intro:"Los registros meteorológicos aportan la cobertura y el viento cuando están disponibles. La forma, el espesor y el tamaño de las nubes son estimaciones visuales, no nubes individuales medidas.",editScope:"Alcance de los cambios",scopeInstant:"Instante actual",scopeObservation:"Toda la observación",layer:"Capa",addLayer:"Añadir capa",deleteLayer:"Eliminar capa",cloudType:"Tipo de nube",unknownType:"Desconocido",base:"Base (m)",thickness:"Espesor (m)",coverage:"Cobertura (%)",cloudSize:"Tamaño de las nubes (m)",density:"Densidad",darkness:"Oscuridad",crystalAlignment:"Alineación de los cristales",layerWindDirection:"Dirección del viento de la capa (°)",layerWindSpeed:"Velocidad del viento de la capa (m/s)",generalWind:"Viento general",patternSeed:"Semilla del patrón",editHelp:"Editar pausa la reproducción y guarda en el instante meteorológico actual. Un viento de capa vacío toma el viento general. Toda la observación aplica la propiedad editada a cada fotograma clave meteorológico.",individualClouds:"Nubes individuales",individualCloud:"Nube individual",addIndividualCloud:"Añadir nube individual",pointAtCloud:"Apuntar a la nube",deleteCloud:"Eliminar nube",manipulate:"Seleccionar y arrastrar nubes en el cielo",instanceEast:"Posición este (m)",instanceNorth:"Posición norte (m)",instanceBase:"Base de la nube (m)",instanceThickness:"Espesor de la nube (m)",instanceWidth:"Anchura de la nube (m)",instanceDepth:"Profundidad de la nube (m)",instanceRotation:"Rotación de la nube (°)",instanceDensity:"Densidad de la nube",layerDarkness:"Oscuridad de la capa",individualHelp:"Las nubes individuales siguen presentes con un 0 % de cobertura global. Arrastrar cambia la posición y la altitud; los campos numéricos fijan las dimensiones con precisión. Las nubes siguen el viento de su capa.",none:"Ninguna",cloud:"Nube",savedAcrossObservation:"Guardado en toda la observación; vientos conservados.",savedAtThisTime:"Meteorología guardada en este instante.",noCloudHere:"No hay ninguna nube individual aquí.",cloudSelected:"Nube seleccionada. Arrástrala para moverla.",cloudAdded:" Nube individual añadida, independiente de la cobertura global."};export{e as cloudEditorMessages_es};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e={intro:"Les relevés fournissent la couverture et le vent lorsqu’ils sont disponibles. La forme, l’épaisseur et la taille des nuages sont des estimations visuelles, pas des nuages individuels mesurés.",editScope:"Portée des modifications",scopeInstant:"Instant courant",scopeObservation:"Toute l’observation",layer:"Couche",addLayer:"Ajouter une couche",deleteLayer:"Supprimer la couche",cloudType:"Type de nuage",unknownType:"Inconnu",base:"Base (m)",thickness:"Épaisseur (m)",coverage:"Couverture (%)",cloudSize:"Taille des nuages (m)",density:"Densité",darkness:"Obscurité",crystalAlignment:"Alignement des cristaux",layerWindDirection:"Direction du vent de la couche (°)",layerWindSpeed:"Vitesse du vent de la couche (m/s)",generalWind:"Vent général",patternSeed:"Graine du motif",editHelp:"L’édition met la lecture en pause et enregistre à l’instant météo courant. Un vent de couche vide reprend le vent général. Toute l’observation applique la propriété modifiée à chaque point de la timeline météo.",individualClouds:"Nuages individuels",individualCloud:"Nuage individuel",addIndividualCloud:"Ajouter un nuage individuel",pointAtCloud:"Pointer le nuage",deleteCloud:"Supprimer ce nuage",manipulate:"Sélectionner et déplacer les nuages dans le ciel",instanceEast:"Position est (m)",instanceNorth:"Position nord (m)",instanceBase:"Base du nuage (m)",instanceThickness:"Épaisseur du nuage (m)",instanceWidth:"Largeur du nuage (m)",instanceDepth:"Profondeur du nuage (m)",instanceRotation:"Rotation du nuage (°)",instanceDensity:"Densité du nuage",layerDarkness:"Obscurité de la couche",individualHelp:"Les nuages individuels restent présents à 0 % de couverture globale. Le glissement change la position et l’altitude ; les champs règlent précisément les dimensions. Les nuages suivent le vent de leur couche.",none:"Aucun",cloud:"Nuage",savedAcrossObservation:"Modifications enregistrées sur toute l’observation, vents conservés.",savedAtThisTime:"Météo enregistrée à cet instant.",noCloudHere:"Aucun nuage individuel à cet endroit.",cloudSelected:"Nuage sélectionné. Faire glisser pour le déplacer.",cloudAdded:" Nuage individuel ajouté : sa présence est indépendante de la couverture globale."};export{e as cloudEditorMessages_fr};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e={intro:"I dati meteorologici forniscono la copertura e il vento quando sono disponibili. Forma, spessore e dimensione delle nuvole sono stime visive, non nuvole singole misurate.",editScope:"Ambito delle modifiche",scopeInstant:"Istante corrente",scopeObservation:"Tutta l’osservazione",layer:"Strato",addLayer:"Aggiungi strato",deleteLayer:"Elimina strato",cloudType:"Tipo di nuvola",unknownType:"Sconosciuto",base:"Base (m)",thickness:"Spessore (m)",coverage:"Copertura (%)",cloudSize:"Dimensione delle nuvole (m)",density:"Densità",darkness:"Oscurità",crystalAlignment:"Allineamento dei cristalli",layerWindDirection:"Direzione del vento dello strato (°)",layerWindSpeed:"Velocità del vento dello strato (m/s)",generalWind:"Vento generale",patternSeed:"Seme del motivo",editHelp:"La modifica mette in pausa la riproduzione e salva all’istante meteorologico corrente. Un vento di strato vuoto riprende il vento generale. Tutta l’osservazione applica la proprietà modificata a ogni fotogramma chiave meteorologico.",individualClouds:"Nuvole singole",individualCloud:"Nuvola singola",addIndividualCloud:"Aggiungi nuvola singola",pointAtCloud:"Punta la nuvola",deleteCloud:"Elimina nuvola",manipulate:"Seleziona e trascina le nuvole nel cielo",instanceEast:"Posizione est (m)",instanceNorth:"Posizione nord (m)",instanceBase:"Base della nuvola (m)",instanceThickness:"Spessore della nuvola (m)",instanceWidth:"Larghezza della nuvola (m)",instanceDepth:"Profondità della nuvola (m)",instanceRotation:"Rotazione della nuvola (°)",instanceDensity:"Densità della nuvola",layerDarkness:"Oscurità dello strato",individualHelp:"Le nuvole singole restano presenti allo 0 % di copertura globale. Il trascinamento cambia posizione e quota; i campi numerici fissano con precisione le dimensioni. Le nuvole seguono il vento del loro strato.",none:"Nessuna",cloud:"Nuvola",savedAcrossObservation:"Salvato su tutta l’osservazione; venti conservati.",savedAtThisTime:"Meteo salvato in questo istante.",noCloudHere:"Nessuna nuvola singola qui.",cloudSelected:"Nuvola selezionata. Trascinala per spostarla.",cloudAdded:" Nuvola singola aggiunta, indipendente dalla copertura globale."};export{e as cloudEditorMessages_it};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{T as Le,a as Q,b as he,L as Se,d as v,F as de,M as w,V as pe,C as F,e as b,f as U,g as ye,P as we,D as be,h as K,I as Ne,i as C,Q as me,j as Ie,O as ge,k as Oe,m as Ce,n as V,o as Fe,q as Te,r as Pe,t as ke,u as He,v as J,w as Re,R as Z,x as De,y as Ge,z as ve,A as X,E as Ue,G as Ee,H as Ke,J as G,K as Be,W as je,X as Ve,Y as Xe,Z as ze,$ as qe,a0 as We,a1 as Ye,a2 as z,a3 as Qe,a4 as Je,a5 as Ze,a6 as $e,a7 as en,a8 as nn,a9 as tn,aa as xe,ab as sn,ac as ne,ad as te,ae as se,af as ie,ag as re,ah as rn,ai as on,aj as an,ak as cn}from"./rr0-sighting-editor.mjs";function oe(f,n){if(n===Le)return console.warn("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Geometry already defined as triangles."),f;if(n===Q||n===he){let e=f.getIndex();if(e===null){const r=[],a=f.getAttribute("position");if(a!==void 0){for(let o=0;o<a.count;o++)r.push(o);f.setIndex(r),e=f.getIndex()}else return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Undefined position attribute. Processing not possible."),f}const s=e.count-2,t=[];if(n===Q)for(let r=1;r<=s;r++)t.push(e.getX(0)),t.push(e.getX(r)),t.push(e.getX(r+1));else for(let r=0;r<s;r++)r%2===0?(t.push(e.getX(r)),t.push(e.getX(r+1)),t.push(e.getX(r+2))):(t.push(e.getX(r+2)),t.push(e.getX(r+1)),t.push(e.getX(r)));t.length/3!==s&&console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unable to generate correct amount of triangles.");const i=f.clone();return i.setIndex(t),i.clearGroups(),i}else return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unknown draw mode:",n),f}function un(f){const n=new Map,e=new Map,s=f.clone();return Ae(f,s,function(t,i){n.set(i,t),e.set(t,i)}),s.traverse(function(t){if(!t.isSkinnedMesh)return;const i=t,r=n.get(t),a=r.skeleton.bones;i.skeleton=r.skeleton.clone(),i.bindMatrix.copy(r.bindMatrix),i.skeleton.bones=a.map(function(o){return e.get(o)}),i.bind(i.skeleton,i.bindMatrix)}),s}function Ae(f,n,e){e(f,n);for(let s=0;s<f.children.length;s++)Ae(f.children[s],n.children[s],e)}class Vn extends Se{constructor(n){super(n),this.dracoLoader=null,this.ktx2Loader=null,this.meshoptDecoder=null,this.pluginCallbacks=[],this.register(function(e){return new pn(e)}),this.register(function(e){return new mn(e)}),this.register(function(e){return new Ln(e)}),this.register(function(e){return new Sn(e)}),this.register(function(e){return new yn(e)}),this.register(function(e){return new Tn(e)}),this.register(function(e){return new Rn(e)}),this.register(function(e){return new En(e)}),this.register(function(e){return new xn(e)}),this.register(function(e){return new dn(e)}),this.register(function(e){return new An(e)}),this.register(function(e){return new gn(e)}),this.register(function(e){return new Mn(e)}),this.register(function(e){return new _n(e)}),this.register(function(e){return new fn(e)}),this.register(function(e){return new ae(e,g.EXT_MESHOPT_COMPRESSION)}),this.register(function(e){return new ae(e,g.KHR_MESHOPT_COMPRESSION)}),this.register(function(e){return new wn(e)})}load(n,e,s,t){const i=this;let r;if(this.resourcePath!=="")r=this.resourcePath;else if(this.path!==""){const c=v.extractUrlBase(n);r=v.resolveURL(c,this.path)}else r=v.extractUrlBase(n);this.manager.itemStart(n);const a=function(c){t?t(c):console.error(c),i.manager.itemError(n),i.manager.itemEnd(n)},o=new de(this.manager);o.setPath(this.path),o.setResponseType("arraybuffer"),o.setRequestHeader(this.requestHeader),o.setWithCredentials(this.withCredentials),o.load(n,function(c){try{i.parse(c,r,function(u){e(u),i.manager.itemEnd(n)},a)}catch(u){a(u)}},s,a)}setDRACOLoader(n){return this.dracoLoader=n,this}setKTX2Loader(n){return this.ktx2Loader=n,this}setMeshoptDecoder(n){return this.meshoptDecoder=n,this}register(n){return this.pluginCallbacks.indexOf(n)===-1&&this.pluginCallbacks.push(n),this}unregister(n){return this.pluginCallbacks.indexOf(n)!==-1&&this.pluginCallbacks.splice(this.pluginCallbacks.indexOf(n),1),this}parse(n,e,s,t){let i;const r={},a={},o=new TextDecoder;if(typeof n=="string")i=JSON.parse(n);else if(n instanceof ArrayBuffer)if(o.decode(new Uint8Array(n,0,4))===_e){try{r[g.KHR_BINARY_GLTF]=new bn(n)}catch(l){t&&t(l);return}i=JSON.parse(r[g.KHR_BINARY_GLTF].content)}else i=JSON.parse(o.decode(n));else i=n;if(i.asset===void 0||i.asset.version[0]<2){t&&t(new Error("THREE.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported."));return}const c=new Kn(i,{path:e||this.resourcePath||"",crossOrigin:this.crossOrigin,requestHeader:this.requestHeader,manager:this.manager,ktx2Loader:this.ktx2Loader,meshoptDecoder:this.meshoptDecoder});c.fileLoader.setRequestHeader(this.requestHeader);for(let u=0;u<this.pluginCallbacks.length;u++){const l=this.pluginCallbacks[u](c);l.name||console.error("THREE.GLTFLoader: Invalid plugin found: missing name"),a[l.name]=l,r[l.name]=!0}if(i.extensionsUsed)for(let u=0;u<i.extensionsUsed.length;++u){const l=i.extensionsUsed[u],h=i.extensionsRequired||[];switch(l){case g.KHR_MATERIALS_UNLIT:r[l]=new hn;break;case g.KHR_DRACO_MESH_COMPRESSION:r[l]=new Nn(i,this.dracoLoader);break;case g.KHR_TEXTURE_TRANSFORM:r[l]=new In;break;case g.KHR_MESH_QUANTIZATION:r[l]=new On;break;default:h.indexOf(l)>=0&&a[l]===void 0&&console.warn('THREE.GLTFLoader: Unknown extension "'+l+'".')}}c.setExtensions(r),c.setPlugins(a),c.parse(s,t)}parseAsync(n,e){const s=this;return new Promise(function(t,i){s.parse(n,e,t,i)})}}function ln(){let f={};return{get:function(n){return f[n]},add:function(n,e){f[n]=e},remove:function(n){delete f[n]},removeAll:function(){f={}}}}function _(f,n,e){const s=f.json.materials[n];return s.extensions&&s.extensions[e]?s.extensions[e]:null}const g={KHR_BINARY_GLTF:"KHR_binary_glTF",KHR_DRACO_MESH_COMPRESSION:"KHR_draco_mesh_compression",KHR_LIGHTS_PUNCTUAL:"KHR_lights_punctual",KHR_MATERIALS_CLEARCOAT:"KHR_materials_clearcoat",KHR_MATERIALS_DISPERSION:"KHR_materials_dispersion",KHR_MATERIALS_IOR:"KHR_materials_ior",KHR_MATERIALS_SHEEN:"KHR_materials_sheen",KHR_MATERIALS_SPECULAR:"KHR_materials_specular",KHR_MATERIALS_TRANSMISSION:"KHR_materials_transmission",KHR_MATERIALS_IRIDESCENCE:"KHR_materials_iridescence",KHR_MATERIALS_ANISOTROPY:"KHR_materials_anisotropy",KHR_MATERIALS_UNLIT:"KHR_materials_unlit",KHR_MATERIALS_VOLUME:"KHR_materials_volume",KHR_TEXTURE_BASISU:"KHR_texture_basisu",KHR_TEXTURE_TRANSFORM:"KHR_texture_transform",KHR_MESH_QUANTIZATION:"KHR_mesh_quantization",KHR_MATERIALS_EMISSIVE_STRENGTH:"KHR_materials_emissive_strength",EXT_MATERIALS_BUMP:"EXT_materials_bump",EXT_TEXTURE_WEBP:"EXT_texture_webp",EXT_TEXTURE_AVIF:"EXT_texture_avif",EXT_MESHOPT_COMPRESSION:"EXT_meshopt_compression",KHR_MESHOPT_COMPRESSION:"KHR_meshopt_compression",EXT_MESH_GPU_INSTANCING:"EXT_mesh_gpu_instancing"};class fn{constructor(n){this.parser=n,this.name=g.KHR_LIGHTS_PUNCTUAL,this.cache={refs:{},uses:{}}}_markDefs(){const n=this.parser,e=this.parser.json.nodes||[];for(let s=0,t=e.length;s<t;s++){const i=e[s];i.extensions&&i.extensions[this.name]&&i.extensions[this.name].light!==void 0&&n._addNodeRef(this.cache,i.extensions[this.name].light)}}_loadLight(n){const e=this.parser,s="light:"+n;let t=e.cache.get(s);if(t)return t;const i=e.json,o=((i.extensions&&i.extensions[this.name]||{}).lights||[])[n];let c;const u=new F(16777215);o.color!==void 0&&u.setRGB(o.color[0],o.color[1],o.color[2],b);const l=o.range!==void 0?o.range:0;switch(o.type){case"directional":c=new be(u),c.target.position.set(0,0,-1),c.add(c.target);break;case"point":c=new we(u),c.distance=l;break;case"spot":c=new ye(u),c.distance=l,o.spot=o.spot||{},o.spot.innerConeAngle=o.spot.innerConeAngle!==void 0?o.spot.innerConeAngle:0,o.spot.outerConeAngle=o.spot.outerConeAngle!==void 0?o.spot.outerConeAngle:Math.PI/4,c.angle=o.spot.outerConeAngle,c.penumbra=1-o.spot.innerConeAngle/o.spot.outerConeAngle,c.target.position.set(0,0,-1),c.add(c.target);break;default:throw new Error("THREE.GLTFLoader: Unexpected light type: "+o.type)}return c.position.set(0,0,0),y(c,o),o.intensity!==void 0&&(c.intensity=o.intensity),c.name=e.createUniqueName(o.name||"light_"+n),t=Promise.resolve(c),e.cache.add(s,t),t}getDependency(n,e){if(n==="light")return this._loadLight(e)}createNodeAttachment(n){const e=this,s=this.parser,i=s.json.nodes[n],a=(i.extensions&&i.extensions[this.name]||{}).light;return a===void 0?null:this._loadLight(a).then(function(o){return s._getNodeRef(e.cache,a,o)})}}class hn{constructor(){this.name=g.KHR_MATERIALS_UNLIT}getMaterialType(){return G}extendParams(n,e,s){const t=[];n.color=new F(1,1,1),n.opacity=1;const i=e.pbrMetallicRoughness;if(i){if(Array.isArray(i.baseColorFactor)){const r=i.baseColorFactor;n.color.setRGB(r[0],r[1],r[2],b),n.opacity=r[3]}i.baseColorTexture!==void 0&&t.push(s.assignTexture(n,"map",i.baseColorTexture,U))}return Promise.all(t)}}class dn{constructor(n){this.parser=n,this.name=g.KHR_MATERIALS_EMISSIVE_STRENGTH}extendMaterialParams(n,e){const s=_(this.parser,n,this.name);return s===null||s.emissiveStrength!==void 0&&(e.emissiveIntensity=s.emissiveStrength),Promise.resolve()}}class pn{constructor(n){this.parser=n,this.name=g.KHR_MATERIALS_CLEARCOAT}getMaterialType(n){return _(this.parser,n,this.name)!==null?w:null}extendMaterialParams(n,e){const s=_(this.parser,n,this.name);if(s===null)return Promise.resolve();const t=[];if(s.clearcoatFactor!==void 0&&(e.clearcoat=s.clearcoatFactor),s.clearcoatTexture!==void 0&&t.push(this.parser.assignTexture(e,"clearcoatMap",s.clearcoatTexture)),s.clearcoatRoughnessFactor!==void 0&&(e.clearcoatRoughness=s.clearcoatRoughnessFactor),s.clearcoatRoughnessTexture!==void 0&&t.push(this.parser.assignTexture(e,"clearcoatRoughnessMap",s.clearcoatRoughnessTexture)),s.clearcoatNormalTexture!==void 0&&(t.push(this.parser.assignTexture(e,"clearcoatNormalMap",s.clearcoatNormalTexture)),s.clearcoatNormalTexture.scale!==void 0)){const i=s.clearcoatNormalTexture.scale;e.clearcoatNormalScale=new pe(i,i)}return Promise.all(t)}}class mn{constructor(n){this.parser=n,this.name=g.KHR_MATERIALS_DISPERSION}getMaterialType(n){return _(this.parser,n,this.name)!==null?w:null}extendMaterialParams(n,e){const s=_(this.parser,n,this.name);return s===null||(e.dispersion=s.dispersion!==void 0?s.dispersion:0),Promise.resolve()}}class gn{constructor(n){this.parser=n,this.name=g.KHR_MATERIALS_IRIDESCENCE}getMaterialType(n){return _(this.parser,n,this.name)!==null?w:null}extendMaterialParams(n,e){const s=_(this.parser,n,this.name);if(s===null)return Promise.resolve();const t=[];return s.iridescenceFactor!==void 0&&(e.iridescence=s.iridescenceFactor),s.iridescenceTexture!==void 0&&t.push(this.parser.assignTexture(e,"iridescenceMap",s.iridescenceTexture)),s.iridescenceIor!==void 0&&(e.iridescenceIOR=s.iridescenceIor),e.iridescenceThicknessRange===void 0&&(e.iridescenceThicknessRange=[100,400]),s.iridescenceThicknessMinimum!==void 0&&(e.iridescenceThicknessRange[0]=s.iridescenceThicknessMinimum),s.iridescenceThicknessMaximum!==void 0&&(e.iridescenceThicknessRange[1]=s.iridescenceThicknessMaximum),s.iridescenceThicknessTexture!==void 0&&t.push(this.parser.assignTexture(e,"iridescenceThicknessMap",s.iridescenceThicknessTexture)),Promise.all(t)}}class Tn{constructor(n){this.parser=n,this.name=g.KHR_MATERIALS_SHEEN}getMaterialType(n){return _(this.parser,n,this.name)!==null?w:null}extendMaterialParams(n,e){const s=_(this.parser,n,this.name);if(s===null)return Promise.resolve();const t=[];if(e.sheenColor=new F(0,0,0),e.sheenRoughness=0,e.sheen=1,s.sheenColorFactor!==void 0){const i=s.sheenColorFactor;e.sheenColor.setRGB(i[0],i[1],i[2],b)}return s.sheenRoughnessFactor!==void 0&&(e.sheenRoughness=s.sheenRoughnessFactor),s.sheenColorTexture!==void 0&&t.push(this.parser.assignTexture(e,"sheenColorMap",s.sheenColorTexture,U)),s.sheenRoughnessTexture!==void 0&&t.push(this.parser.assignTexture(e,"sheenRoughnessMap",s.sheenRoughnessTexture)),Promise.all(t)}}class Rn{constructor(n){this.parser=n,this.name=g.KHR_MATERIALS_TRANSMISSION}getMaterialType(n){return _(this.parser,n,this.name)!==null?w:null}extendMaterialParams(n,e){const s=_(this.parser,n,this.name);if(s===null)return Promise.resolve();const t=[];return s.transmissionFactor!==void 0&&(e.transmission=s.transmissionFactor),s.transmissionTexture!==void 0&&t.push(this.parser.assignTexture(e,"transmissionMap",s.transmissionTexture)),Promise.all(t)}}class En{constructor(n){this.parser=n,this.name=g.KHR_MATERIALS_VOLUME}getMaterialType(n){return _(this.parser,n,this.name)!==null?w:null}extendMaterialParams(n,e){const s=_(this.parser,n,this.name);if(s===null)return Promise.resolve();const t=[];e.thickness=s.thicknessFactor!==void 0?s.thicknessFactor:0,s.thicknessTexture!==void 0&&t.push(this.parser.assignTexture(e,"thicknessMap",s.thicknessTexture)),e.attenuationDistance=s.attenuationDistance||1/0;const i=s.attenuationColor||[1,1,1];return e.attenuationColor=new F().setRGB(i[0],i[1],i[2],b),Promise.all(t)}}class xn{constructor(n){this.parser=n,this.name=g.KHR_MATERIALS_IOR}getMaterialType(n){return _(this.parser,n,this.name)!==null?w:null}extendMaterialParams(n,e){const s=_(this.parser,n,this.name);return s===null||(e.ior=s.ior!==void 0?s.ior:1.5,e.ior===0&&(e.ior=1e3)),Promise.resolve()}}class An{constructor(n){this.parser=n,this.name=g.KHR_MATERIALS_SPECULAR}getMaterialType(n){return _(this.parser,n,this.name)!==null?w:null}extendMaterialParams(n,e){const s=_(this.parser,n,this.name);if(s===null)return Promise.resolve();const t=[];e.specularIntensity=s.specularFactor!==void 0?s.specularFactor:1,s.specularTexture!==void 0&&t.push(this.parser.assignTexture(e,"specularIntensityMap",s.specularTexture));const i=s.specularColorFactor||[1,1,1];return e.specularColor=new F().setRGB(i[0],i[1],i[2],b),s.specularColorTexture!==void 0&&t.push(this.parser.assignTexture(e,"specularColorMap",s.specularColorTexture,U)),Promise.all(t)}}class _n{constructor(n){this.parser=n,this.name=g.EXT_MATERIALS_BUMP}getMaterialType(n){return _(this.parser,n,this.name)!==null?w:null}extendMaterialParams(n,e){const s=_(this.parser,n,this.name);if(s===null)return Promise.resolve();const t=[];return e.bumpScale=s.bumpFactor!==void 0?s.bumpFactor:1,s.bumpTexture!==void 0&&t.push(this.parser.assignTexture(e,"bumpMap",s.bumpTexture)),Promise.all(t)}}class Mn{constructor(n){this.parser=n,this.name=g.KHR_MATERIALS_ANISOTROPY}getMaterialType(n){return _(this.parser,n,this.name)!==null?w:null}extendMaterialParams(n,e){const s=_(this.parser,n,this.name);if(s===null)return Promise.resolve();const t=[];return s.anisotropyStrength!==void 0&&(e.anisotropy=s.anisotropyStrength),s.anisotropyRotation!==void 0&&(e.anisotropyRotation=s.anisotropyRotation),s.anisotropyTexture!==void 0&&t.push(this.parser.assignTexture(e,"anisotropyMap",s.anisotropyTexture)),Promise.all(t)}}class Ln{constructor(n){this.parser=n,this.name=g.KHR_TEXTURE_BASISU}loadTexture(n){const e=this.parser,s=e.json,t=s.textures[n];if(!t.extensions||!t.extensions[this.name])return null;const i=t.extensions[this.name],r=e.options.ktx2Loader;if(!r){if(s.extensionsRequired&&s.extensionsRequired.indexOf(this.name)>=0)throw new Error("THREE.GLTFLoader: setKTX2Loader must be called before loading KTX2 textures");return null}return e.loadTextureImage(n,i.source,r)}}class Sn{constructor(n){this.parser=n,this.name=g.EXT_TEXTURE_WEBP}loadTexture(n){const e=this.name,s=this.parser,t=s.json,i=t.textures[n];if(!i.extensions||!i.extensions[e])return null;const r=i.extensions[e],a=t.images[r.source];let o=s.textureLoader;if(a.uri){const c=s.options.manager.getHandler(a.uri);c!==null&&(o=c)}return s.loadTextureImage(n,r.source,o)}}class yn{constructor(n){this.parser=n,this.name=g.EXT_TEXTURE_AVIF}loadTexture(n){const e=this.name,s=this.parser,t=s.json,i=t.textures[n];if(!i.extensions||!i.extensions[e])return null;const r=i.extensions[e],a=t.images[r.source];let o=s.textureLoader;if(a.uri){const c=s.options.manager.getHandler(a.uri);c!==null&&(o=c)}return s.loadTextureImage(n,r.source,o)}}class ae{constructor(n,e){this.name=e,this.parser=n}loadBufferView(n){const e=this.parser.json,s=e.bufferViews[n];if(s.extensions&&s.extensions[this.name]){const t=s.extensions[this.name],i=this.parser.getDependency("buffer",t.buffer),r=this.parser.options.meshoptDecoder;if(!r||!r.supported){if(e.extensionsRequired&&e.extensionsRequired.indexOf(this.name)>=0)throw new Error("THREE.GLTFLoader: setMeshoptDecoder must be called before loading compressed files");return null}return i.then(function(a){const o=t.byteOffset||0,c=t.byteLength||0,u=t.count,l=t.byteStride,h=new Uint8Array(a,o,c);return r.decodeGltfBufferAsync?r.decodeGltfBufferAsync(u,l,h,t.mode,t.filter).then(function(d){return d.buffer}):r.ready.then(function(){const d=new ArrayBuffer(u*l);return r.decodeGltfBuffer(new Uint8Array(d),u,l,h,t.mode,t.filter),d})})}else return null}}class wn{constructor(n){this.name=g.EXT_MESH_GPU_INSTANCING,this.parser=n}createNodeMesh(n){const e=this.parser.json,s=e.nodes[n];if(!s.extensions||!s.extensions[this.name]||s.mesh===void 0)return null;const t=e.meshes[s.mesh];for(const c of t.primitives)if(c.mode!==L.TRIANGLES&&c.mode!==L.TRIANGLE_STRIP&&c.mode!==L.TRIANGLE_FAN&&c.mode!==void 0)return null;const r=s.extensions[this.name].attributes,a=[],o={};for(const c in r)a.push(this.parser.getDependency("accessor",r[c]).then(u=>(o[c]=u,o[c])));return a.length<1?null:(a.push(this.parser.createNodeMesh(n)),Promise.all(a).then(c=>{const u=c.pop(),l=u.isGroup?u.children:[u],h=c[0].count,d=[];for(const p of l){const R=new K,m=new C,T=new me,A=new C(1,1,1),x=new Ne(p.geometry,p.material,h);for(let E=0;E<h;E++)o.TRANSLATION&&m.fromBufferAttribute(o.TRANSLATION,E),o.ROTATION&&T.fromBufferAttribute(o.ROTATION,E),o.SCALE&&A.fromBufferAttribute(o.SCALE,E),x.setMatrixAt(E,R.compose(m,T,A));for(const E in o)if(E==="_COLOR_0"){const M=o[E];x.instanceColor=new Ie(M.array,M.itemSize,M.normalized)}else E!=="TRANSLATION"&&E!=="ROTATION"&&E!=="SCALE"&&p.geometry.setAttribute(E,o[E]);ge.prototype.copy.call(x,p),this.parser.assignFinalMaterial(x),d.push(x)}return u.isGroup?(u.clear(),u.add(...d),u):d[0]}))}}const _e="glTF",D=12,ce={JSON:1313821514,BIN:5130562};class bn{constructor(n){this.name=g.KHR_BINARY_GLTF,this.content=null,this.body=null;const e=new DataView(n,0,D),s=new TextDecoder;if(this.header={magic:s.decode(new Uint8Array(n.slice(0,4))),version:e.getUint32(4,!0),length:e.getUint32(8,!0)},this.header.magic!==_e)throw new Error("THREE.GLTFLoader: Unsupported glTF-Binary header.");if(this.header.version<2)throw new Error("THREE.GLTFLoader: Legacy binary file detected.");const t=this.header.length-D,i=new DataView(n,D);let r=0;for(;r<t;){const a=i.getUint32(r,!0);r+=4;const o=i.getUint32(r,!0);if(r+=4,o===ce.JSON){const c=new Uint8Array(n,D+r,a);this.content=s.decode(c)}else if(o===ce.BIN){const c=D+r;this.body=n.slice(c,c+a)}r+=a}if(this.content===null)throw new Error("THREE.GLTFLoader: JSON content not found.")}}class Nn{constructor(n,e){if(!e)throw new Error("THREE.GLTFLoader: No DRACOLoader instance provided.");this.name=g.KHR_DRACO_MESH_COMPRESSION,this.json=n,this.dracoLoader=e,this.dracoLoader.preload()}decodePrimitive(n,e){const s=this.json,t=this.dracoLoader,i=n.extensions[this.name].bufferView,r=n.extensions[this.name].attributes,a={},o={},c={};for(const u in r){const l=$[u]||u.toLowerCase();a[l]=r[u]}for(const u in n.attributes){const l=$[u]||u.toLowerCase();if(r[u]!==void 0){const h=s.accessors[n.attributes[u]],d=k[h.componentType];c[l]=d.name,o[l]=h.normalized===!0}}return e.getDependency("bufferView",i).then(function(u){return new Promise(function(l,h){t.decodeDracoFile(u,function(d){for(const p in d.attributes){const R=d.attributes[p],m=o[p];m!==void 0&&(R.normalized=m)}l(d)},a,c,b,h)})})}}class In{constructor(){this.name=g.KHR_TEXTURE_TRANSFORM}extendTexture(n,e){return(e.texCoord===void 0||e.texCoord===n.channel)&&e.offset===void 0&&e.rotation===void 0&&e.scale===void 0||(n=n.clone(),e.texCoord!==void 0&&(n.channel=e.texCoord),e.offset!==void 0&&n.offset.fromArray(e.offset),e.rotation!==void 0&&(n.rotation=e.rotation),e.scale!==void 0&&n.repeat.fromArray(e.scale),n.needsUpdate=!0),n}}class On{constructor(){this.name=g.KHR_MESH_QUANTIZATION}}class Me extends on{constructor(n,e,s,t){super(n,e,s,t)}copySampleValue_(n){const e=this.resultBuffer,s=this.sampleValues,t=this.valueSize,i=n*t*3+t;for(let r=0;r!==t;r++)e[r]=s[i+r];return e}interpolate_(n,e,s,t){const i=this.resultBuffer,r=this.sampleValues,a=this.valueSize,o=a*2,c=a*3,u=t-e,l=(s-e)/u,h=l*l,d=h*l,p=n*c,R=p-c,m=-2*d+3*h,T=d-h,A=1-m,x=T-h+l;for(let E=0;E!==a;E++){const M=r[R+E+a],N=r[R+E+o]*u,S=r[p+E+a],H=r[p+E]*u;i[E]=A*M+x*N+m*S+T*H}return i}}const Cn=new me;class Fn extends Me{interpolate_(n,e,s,t){const i=super.interpolate_(n,e,s,t);return Cn.fromArray(i).normalize().toArray(i),i}}const L={POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6},k={5120:Int8Array,5121:Uint8Array,5122:Int16Array,5123:Uint16Array,5125:Uint32Array,5126:Float32Array},ue={9728:Re,9729:J,9984:He,9985:ke,9986:Pe,9987:Te},le={33071:Ge,33648:De,10497:Z},q={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},$={POSITION:"position",NORMAL:"normal",TANGENT:"tangent",TEXCOORD_0:"uv",TEXCOORD_1:"uv1",TEXCOORD_2:"uv2",TEXCOORD_3:"uv3",COLOR_0:"color",WEIGHTS_0:"skinWeight",JOINTS_0:"skinIndex"},I={scale:"scale",translation:"position",rotation:"quaternion",weights:"morphTargetInfluences"},Pn={CUBICSPLINE:void 0,LINEAR:xe,STEP:tn},W={OPAQUE:"OPAQUE",MASK:"MASK",BLEND:"BLEND"};function kn(f){return f.DefaultMaterial===void 0&&(f.DefaultMaterial=new Ee({color:16777215,emissive:0,metalness:1,roughness:1,transparent:!1,depthTest:!0,side:rn})),f.DefaultMaterial}function O(f,n,e){for(const s in e.extensions)f[s]===void 0&&(n.userData.gltfExtensions=n.userData.gltfExtensions||{},n.userData.gltfExtensions[s]=e.extensions[s])}function y(f,n){n.extras!==void 0&&(typeof n.extras=="object"?Object.assign(f.userData,n.extras):console.warn("THREE.GLTFLoader: Ignoring primitive type .extras, "+n.extras))}function Hn(f,n,e){let s=!1,t=!1,i=!1;for(let c=0,u=n.length;c<u;c++){const l=n[c];if(l.POSITION!==void 0&&(s=!0),l.NORMAL!==void 0&&(t=!0),l.COLOR_0!==void 0&&(i=!0),s&&t&&i)break}if(!s&&!t&&!i)return Promise.resolve(f);const r=[],a=[],o=[];for(let c=0,u=n.length;c<u;c++){const l=n[c];if(s){const h=l.POSITION!==void 0?e.getDependency("accessor",l.POSITION):f.attributes.position;r.push(h)}if(t){const h=l.NORMAL!==void 0?e.getDependency("accessor",l.NORMAL):f.attributes.normal;a.push(h)}if(i){const h=l.COLOR_0!==void 0?e.getDependency("accessor",l.COLOR_0):f.attributes.color;o.push(h)}}return Promise.all([Promise.all(r),Promise.all(a),Promise.all(o)]).then(function(c){const u=c[0],l=c[1],h=c[2];return s&&(f.morphAttributes.position=u),t&&(f.morphAttributes.normal=l),i&&(f.morphAttributes.color=h),f.morphTargetsRelative=!0,f})}function Dn(f,n){if(f.updateMorphTargets(),n.weights!==void 0)for(let e=0,s=n.weights.length;e<s;e++)f.morphTargetInfluences[e]=n.weights[e];if(n.extras&&Array.isArray(n.extras.targetNames)){const e=n.extras.targetNames;if(f.morphTargetInfluences.length===e.length){f.morphTargetDictionary={};for(let s=0,t=e.length;s<t;s++)f.morphTargetDictionary[e[s]]=s}else console.warn("THREE.GLTFLoader: Invalid extras.targetNames length. Ignoring names.")}}function Gn(f){let n;const e=f.extensions&&f.extensions[g.KHR_DRACO_MESH_COMPRESSION];if(e?n="draco:"+e.bufferView+":"+e.indices+":"+Y(e.attributes):n=f.indices+":"+Y(f.attributes)+":"+f.mode,f.targets!==void 0)for(let s=0,t=f.targets.length;s<t;s++)n+=":"+Y(f.targets[s]);return n}function Y(f){let n="";const e=Object.keys(f).sort();for(let s=0,t=e.length;s<t;s++)n+=e[s]+":"+f[e[s]]+";";return n}function ee(f){switch(f){case Int8Array:return 1/127;case Uint8Array:return 1/255;case Int16Array:return 1/32767;case Uint16Array:return 1/65535;default:throw new Error("THREE.GLTFLoader: Unsupported normalized accessor component type.")}}function vn(f){return f.search(/\.jpe?g($|\?)/i)>0||f.search(/^data\:image\/jpeg/)===0?"image/jpeg":f.search(/\.webp($|\?)/i)>0||f.search(/^data\:image\/webp/)===0?"image/webp":f.search(/\.ktx2($|\?)/i)>0||f.search(/^data\:image\/ktx2/)===0?"image/ktx2":"image/png"}const Un=new K;class Kn{constructor(n={},e={}){this.json=n,this.extensions={},this.plugins={},this.options=e,this.cache=new ln,this.associations=new Map,this.primitiveCache={},this.nodeCache={},this.meshCache={refs:{},uses:{}},this.cameraCache={refs:{},uses:{}},this.lightCache={refs:{},uses:{}},this.sourceCache={},this.textureCache={},this.nodeNamesUsed={};let s=!1,t=-1,i=!1,r=-1;if(typeof navigator<"u"&&typeof navigator.userAgent<"u"){const a=navigator.userAgent;s=/^((?!chrome|android).)*safari/i.test(a)===!0;const o=a.match(/Version\/(\d+)/);t=s&&o?parseInt(o[1],10):-1,i=a.indexOf("Firefox")>-1,r=i?a.match(/Firefox\/([0-9]+)\./)[1]:-1}typeof createImageBitmap>"u"||s&&t<17||i&&r<98?this.textureLoader=new Oe(this.options.manager):this.textureLoader=new Ce(this.options.manager),this.textureLoader.setCrossOrigin(this.options.crossOrigin),this.textureLoader.setRequestHeader(this.options.requestHeader),this.fileLoader=new de(this.options.manager),this.fileLoader.setResponseType("arraybuffer"),this.options.crossOrigin==="use-credentials"&&this.fileLoader.setWithCredentials(!0)}setExtensions(n){this.extensions=n}setPlugins(n){this.plugins=n}parse(n,e){const s=this,t=this.json,i=this.extensions;this.cache.removeAll(),this.nodeCache={},this._invokeAll(function(r){return r._markDefs&&r._markDefs()}),Promise.all(this._invokeAll(function(r){return r.beforeRoot&&r.beforeRoot()})).then(function(){return Promise.all([s.getDependencies("scene"),s.getDependencies("animation"),s.getDependencies("camera")])}).then(function(r){const a={scene:r[0][t.scene||0],scenes:r[0],animations:r[1],cameras:r[2],asset:t.asset,parser:s,userData:{}};return O(i,a,t),y(a,t),Promise.all(s._invokeAll(function(o){return o.afterRoot&&o.afterRoot(a)})).then(function(){for(const o of a.scenes)o.updateMatrixWorld();n(a)})}).catch(e)}_markDefs(){const n=this.json.nodes||[],e=this.json.skins||[],s=this.json.meshes||[];for(let t=0,i=e.length;t<i;t++){const r=e[t].joints;for(let a=0,o=r.length;a<o;a++)n[r[a]].isBone=!0}for(let t=0,i=n.length;t<i;t++){const r=n[t];r.mesh!==void 0&&(this._addNodeRef(this.meshCache,r.mesh),r.skin!==void 0&&(s[r.mesh].isSkinnedMesh=!0)),r.camera!==void 0&&this._addNodeRef(this.cameraCache,r.camera)}}_addNodeRef(n,e){e!==void 0&&(n.refs[e]===void 0&&(n.refs[e]=n.uses[e]=0),n.refs[e]++)}_getNodeRef(n,e,s){if(n.refs[e]<=1)return s;const t=s.clone(),i=(r,a)=>{const o=this.associations.get(r);o!=null&&this.associations.set(a,o);for(const[c,u]of r.children.entries())i(u,a.children[c])};return i(s,t),t.name+="_instance_"+n.uses[e]++,t}_invokeOne(n){const e=Object.values(this.plugins);e.push(this);for(let s=0;s<e.length;s++){const t=n(e[s]);if(t)return t}return null}_invokeAll(n){const e=Object.values(this.plugins);e.unshift(this);const s=[];for(let t=0;t<e.length;t++){const i=n(e[t]);i&&s.push(i)}return s}getDependency(n,e){const s=n+":"+e;let t=this.cache.get(s);if(!t){switch(n){case"scene":t=this.loadScene(e);break;case"node":t=this._invokeOne(function(i){return i.loadNode&&i.loadNode(e)});break;case"mesh":t=this._invokeOne(function(i){return i.loadMesh&&i.loadMesh(e)});break;case"accessor":t=this.loadAccessor(e);break;case"bufferView":t=this._invokeOne(function(i){return i.loadBufferView&&i.loadBufferView(e)});break;case"buffer":t=this.loadBuffer(e);break;case"material":t=this._invokeOne(function(i){return i.loadMaterial&&i.loadMaterial(e)});break;case"texture":t=this._invokeOne(function(i){return i.loadTexture&&i.loadTexture(e)});break;case"skin":t=this.loadSkin(e);break;case"animation":t=this._invokeOne(function(i){return i.loadAnimation&&i.loadAnimation(e)});break;case"camera":t=this.loadCamera(e);break;default:if(t=this._invokeOne(function(i){return i!=this&&i.getDependency&&i.getDependency(n,e)}),!t)throw new Error("Unknown type: "+n);break}this.cache.add(s,t)}return t}getDependencies(n){let e=this.cache.get(n);if(!e){const s=this,t=this.json[n+(n==="mesh"?"es":"s")]||[];e=Promise.all(t.map(function(i,r){return s.getDependency(n,r)})),this.cache.add(n,e)}return e}loadBuffer(n){const e=this.json.buffers[n],s=this.fileLoader;if(e.type&&e.type!=="arraybuffer")throw new Error("THREE.GLTFLoader: "+e.type+" buffer type is not supported.");if(e.uri===void 0&&n===0)return Promise.resolve(this.extensions[g.KHR_BINARY_GLTF].body);const t=this.options;return new Promise(function(i,r){s.load(v.resolveURL(e.uri,t.path),i,void 0,function(){r(new Error('THREE.GLTFLoader: Failed to load buffer "'+e.uri+'".'))})})}loadBufferView(n){const e=this.json.bufferViews[n];return this.getDependency("buffer",e.buffer).then(function(s){const t=e.byteLength||0,i=e.byteOffset||0;return s.slice(i,i+t)})}loadAccessor(n){const e=this,s=this.json,t=this.json.accessors[n];if(t.bufferView===void 0&&t.sparse===void 0){const r=q[t.type],a=k[t.componentType],o=t.normalized===!0,c=new a(t.count*r);return Promise.resolve(new V(c,r,o))}const i=[];return t.bufferView!==void 0?i.push(this.getDependency("bufferView",t.bufferView)):i.push(null),t.sparse!==void 0&&(i.push(this.getDependency("bufferView",t.sparse.indices.bufferView)),i.push(this.getDependency("bufferView",t.sparse.values.bufferView))),Promise.all(i).then(function(r){const a=r[0],o=q[t.type],c=k[t.componentType],u=c.BYTES_PER_ELEMENT,l=u*o,h=t.byteOffset||0,d=t.bufferView!==void 0?s.bufferViews[t.bufferView].byteStride:void 0,p=t.normalized===!0;let R,m;if(d&&d!==l){const T=Math.floor(h/d),A="InterleavedBuffer:"+t.bufferView+":"+t.componentType+":"+T+":"+t.count;let x=e.cache.get(A);x||(R=new c(a,T*d,t.count*d/u),x=new Fe(R,d/u),e.cache.add(A,x)),m=new sn(x,o,h%d/u,p)}else a===null?R=new c(t.count*o):R=new c(a,h,t.count*o),m=new V(R,o,p);if(t.sparse!==void 0){const T=q.SCALAR,A=k[t.sparse.indices.componentType],x=t.sparse.indices.byteOffset||0,E=t.sparse.values.byteOffset||0,M=new A(r[1],x,t.sparse.count*T),N=new c(r[2],E,t.sparse.count*o);a!==null&&(m=new V(m.array.slice(),m.itemSize,m.normalized)),m.normalized=!1;for(let S=0,H=M.length;S<H;S++){const P=M[S];if(m.setX(P,N[S*o]),o>=2&&m.setY(P,N[S*o+1]),o>=3&&m.setZ(P,N[S*o+2]),o>=4&&m.setW(P,N[S*o+3]),o>=5)throw new Error("THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.")}m.normalized=p}return m})}loadTexture(n){const e=this.json,s=this.options,i=e.textures[n].source,r=e.images[i];let a=this.textureLoader;if(r.uri){const o=s.manager.getHandler(r.uri);o!==null&&(a=o)}return this.loadTextureImage(n,i,a)}loadTextureImage(n,e,s){const t=this,i=this.json,r=i.textures[n],a=i.images[e],o=(a.uri||a.bufferView)+":"+r.sampler;if(this.textureCache[o])return this.textureCache[o];const c=this.loadImageSource(e,s).then(function(u){u.flipY=!1,u.name=r.name||a.name||"",u.name===""&&typeof a.uri=="string"&&a.uri.startsWith("data:image/")===!1&&(u.name=a.uri);const h=(i.samplers||{})[r.sampler]||{};return u.magFilter=ue[h.magFilter]||J,u.minFilter=ue[h.minFilter]||Te,u.wrapS=le[h.wrapS]||Z,u.wrapT=le[h.wrapT]||Z,u.generateMipmaps=!u.isCompressedTexture&&u.minFilter!==Re&&u.minFilter!==J,t.associations.set(u,{textures:n}),u}).catch(function(){return null});return this.textureCache[o]=c,c}loadImageSource(n,e){const s=this,t=this.json,i=this.options;if(this.sourceCache[n]!==void 0)return this.sourceCache[n].then(l=>l.clone());const r=t.images[n],a=self.URL||self.webkitURL;let o=r.uri||"",c=!1;if(r.bufferView!==void 0)o=s.getDependency("bufferView",r.bufferView).then(function(l){c=!0;const h=new Blob([l],{type:r.mimeType});return o=a.createObjectURL(h),o});else if(r.uri===void 0)throw new Error("THREE.GLTFLoader: Image "+n+" is missing URI and bufferView");const u=Promise.resolve(o).then(function(l){return new Promise(function(h,d){let p=h;e.isImageBitmapLoader===!0&&(p=function(R){const m=new ne(R);m.needsUpdate=!0,h(m)}),e.load(v.resolveURL(l,i.path),p,void 0,d)})}).then(function(l){return c===!0&&a.revokeObjectURL(o),y(l,r),l.userData.mimeType=r.mimeType||vn(r.uri),l}).catch(function(l){throw console.error("THREE.GLTFLoader: Couldn't load texture",o),l});return this.sourceCache[n]=u,u}assignTexture(n,e,s,t){const i=this;return this.getDependency("texture",s.index).then(function(r){if(!r)return null;if(s.texCoord!==void 0&&s.texCoord>0&&(r=r.clone(),r.channel=s.texCoord),i.extensions[g.KHR_TEXTURE_TRANSFORM]){const a=s.extensions!==void 0?s.extensions[g.KHR_TEXTURE_TRANSFORM]:void 0;if(a){const o=i.associations.get(r);r=i.extensions[g.KHR_TEXTURE_TRANSFORM].extendTexture(r,a),i.associations.set(r,o)}}return t!==void 0&&(r.colorSpace=t),n[e]=r,r})}assignFinalMaterial(n){const e=n.geometry;let s=n.material;const t=e.attributes.tangent===void 0,i=e.attributes.color!==void 0,r=e.attributes.normal===void 0;if(n.isPoints){const a="PointsMaterial:"+s.uuid;let o=this.cache.get(a);o||(o=new ve,X.prototype.copy.call(o,s),o.color.copy(s.color),o.map=s.map,o.sizeAttenuation=!1,this.cache.add(a,o)),s=o}else if(n.isLine){const a="LineBasicMaterial:"+s.uuid;let o=this.cache.get(a);o||(o=new Ue,X.prototype.copy.call(o,s),o.color.copy(s.color),o.map=s.map,this.cache.add(a,o)),s=o}if(t||i||r){let a="ClonedMaterial:"+s.uuid+":";t&&(a+="derivative-tangents:"),i&&(a+="vertex-colors:"),r&&(a+="flat-shading:");let o=this.cache.get(a);o||(o=s.clone(),i&&(o.vertexColors=!0),r&&(o.flatShading=!0),t&&(o.normalScale&&(o.normalScale.y*=-1),o.clearcoatNormalScale&&(o.clearcoatNormalScale.y*=-1)),this.cache.add(a,o),this.associations.set(o,this.associations.get(s))),s=o}n.material=s}getMaterialType(){return Ee}loadMaterial(n){const e=this,s=this.json,t=this.extensions,i=s.materials[n];let r;const a={},o=i.extensions||{},c=[];if(o[g.KHR_MATERIALS_UNLIT]){const l=t[g.KHR_MATERIALS_UNLIT];r=l.getMaterialType(),c.push(l.extendParams(a,i,e))}else{const l=i.pbrMetallicRoughness||{};if(a.color=new F(1,1,1),a.opacity=1,Array.isArray(l.baseColorFactor)){const h=l.baseColorFactor;a.color.setRGB(h[0],h[1],h[2],b),a.opacity=h[3]}l.baseColorTexture!==void 0&&c.push(e.assignTexture(a,"map",l.baseColorTexture,U)),a.metalness=l.metallicFactor!==void 0?l.metallicFactor:1,a.roughness=l.roughnessFactor!==void 0?l.roughnessFactor:1,l.metallicRoughnessTexture!==void 0&&(c.push(e.assignTexture(a,"metalnessMap",l.metallicRoughnessTexture)),c.push(e.assignTexture(a,"roughnessMap",l.metallicRoughnessTexture))),r=this._invokeOne(function(h){return h.getMaterialType&&h.getMaterialType(n)}),c.push(Promise.all(this._invokeAll(function(h){return h.extendMaterialParams&&h.extendMaterialParams(n,a)})))}i.doubleSided===!0&&(a.side=Ke);const u=i.alphaMode||W.OPAQUE;if(u===W.BLEND?(a.transparent=!0,a.depthWrite=!1):(a.transparent=!1,u===W.MASK&&(a.alphaTest=i.alphaCutoff!==void 0?i.alphaCutoff:.5)),i.normalTexture!==void 0&&r!==G&&(c.push(e.assignTexture(a,"normalMap",i.normalTexture)),a.normalScale=new pe(1,1),i.normalTexture.scale!==void 0)){const l=i.normalTexture.scale;a.normalScale.set(l,l)}if(i.occlusionTexture!==void 0&&r!==G&&(c.push(e.assignTexture(a,"aoMap",i.occlusionTexture)),i.occlusionTexture.strength!==void 0&&(a.aoMapIntensity=i.occlusionTexture.strength)),i.emissiveFactor!==void 0&&r!==G){const l=i.emissiveFactor;a.emissive=new F().setRGB(l[0],l[1],l[2],b)}return i.emissiveTexture!==void 0&&r!==G&&c.push(e.assignTexture(a,"emissiveMap",i.emissiveTexture,U)),Promise.all(c).then(function(){const l=new r(a);return i.name&&(l.name=i.name),y(l,i),e.associations.set(l,{materials:n}),i.extensions&&O(t,l,i),l})}createUniqueName(n){const e=Be.sanitizeNodeName(n||"");return e in this.nodeNamesUsed?e+"_"+ ++this.nodeNamesUsed[e]:(this.nodeNamesUsed[e]=0,e)}loadGeometries(n){const e=this,s=this.extensions,t=this.primitiveCache;function i(a){return s[g.KHR_DRACO_MESH_COMPRESSION].decodePrimitive(a,e).then(function(o){return fe(o,a,e)})}const r=[];for(let a=0,o=n.length;a<o;a++){const c=n[a],u=Gn(c),l=t[u];if(l)r.push(l.promise);else{let h;c.extensions&&c.extensions[g.KHR_DRACO_MESH_COMPRESSION]?h=i(c):h=fe(new je,c,e),t[u]={primitive:c,promise:h},r.push(h)}}return Promise.all(r)}loadMesh(n){const e=this,s=this.json,t=this.extensions,i=s.meshes[n],r=i.primitives,a=[];for(let o=0,c=r.length;o<c;o++){const u=r[o].material===void 0?kn(this.cache):this.getDependency("material",r[o].material);a.push(u)}return a.push(e.loadGeometries(r)),Promise.all(a).then(function(o){const c=o.slice(0,o.length-1),u=o[o.length-1],l=[];for(let d=0,p=u.length;d<p;d++){const R=u[d],m=r[d];let T;const A=c[d];if(m.mode===L.TRIANGLES||m.mode===L.TRIANGLE_STRIP||m.mode===L.TRIANGLE_FAN||m.mode===void 0)T=i.isSkinnedMesh===!0?new Ve(R,A):new Xe(R,A),T.isSkinnedMesh===!0&&T.normalizeSkinWeights(),m.mode===L.TRIANGLE_STRIP?T.geometry=oe(T.geometry,he):m.mode===L.TRIANGLE_FAN&&(T.geometry=oe(T.geometry,Q));else if(m.mode===L.LINES)T=new ze(R,A);else if(m.mode===L.LINE_STRIP)T=new qe(R,A);else if(m.mode===L.LINE_LOOP)T=new We(R,A);else if(m.mode===L.POINTS)T=new Ye(R,A);else throw new Error("THREE.GLTFLoader: Primitive mode unsupported: "+m.mode);Object.keys(T.geometry.morphAttributes).length>0&&Dn(T,i),T.name=e.createUniqueName(i.name||"mesh_"+n),y(T,i),m.extensions&&O(t,T,m),e.assignFinalMaterial(T),l.push(T)}for(let d=0,p=l.length;d<p;d++)e.associations.set(l[d],{meshes:n,primitives:d});if(l.length===1)return i.extensions&&O(t,l[0],i),l[0];const h=new z;i.extensions&&O(t,h,i),e.associations.set(h,{meshes:n});for(let d=0,p=l.length;d<p;d++)h.add(l[d]);return h})}loadCamera(n){let e;const s=this.json.cameras[n],t=s[s.type];if(!t){console.warn("THREE.GLTFLoader: Missing camera parameters.");return}return s.type==="perspective"?e=new Qe(Je.radToDeg(t.yfov),t.aspectRatio||1,t.znear||1,t.zfar||2e6):s.type==="orthographic"&&(e=new Ze(-t.xmag,t.xmag,t.ymag,-t.ymag,t.znear,t.zfar)),s.name&&(e.name=this.createUniqueName(s.name)),y(e,s),Promise.resolve(e)}loadSkin(n){const e=this.json.skins[n],s=[];for(let t=0,i=e.joints.length;t<i;t++)s.push(this._loadNodeShallow(e.joints[t]));return e.inverseBindMatrices!==void 0?s.push(this.getDependency("accessor",e.inverseBindMatrices)):s.push(null),Promise.all(s).then(function(t){const i=t.pop(),r=t,a=[],o=[];for(let c=0,u=r.length;c<u;c++){const l=r[c];if(l){a.push(l);const h=new K;i!==null&&h.fromArray(i.array,c*16),o.push(h)}else console.warn('THREE.GLTFLoader: Joint "%s" could not be found.',e.joints[c])}return new $e(a,o)})}loadAnimation(n){const e=this.json,s=this,t=e.animations[n],i=t.name?t.name:"animation_"+n,r=[],a=[],o=[],c=[],u=[];for(let l=0,h=t.channels.length;l<h;l++){const d=t.channels[l],p=t.samplers[d.sampler],R=d.target,m=R.node,T=t.parameters!==void 0?t.parameters[p.input]:p.input,A=t.parameters!==void 0?t.parameters[p.output]:p.output;R.node!==void 0&&(r.push(this.getDependency("node",m)),a.push(this.getDependency("accessor",T)),o.push(this.getDependency("accessor",A)),c.push(p),u.push(R))}return Promise.all([Promise.all(r),Promise.all(a),Promise.all(o),Promise.all(c),Promise.all(u)]).then(function(l){const h=l[0],d=l[1],p=l[2],R=l[3],m=l[4],T=[];for(let x=0,E=h.length;x<E;x++){const M=h[x],N=d[x],S=p[x],H=R[x],P=m[x];if(M===void 0)continue;M.updateMatrix&&M.updateMatrix();const B=s._createAnimationTracks(M,N,S,H,P);if(B)for(let j=0;j<B.length;j++)T.push(B[j])}const A=new en(i,void 0,T);return y(A,t),A})}createNodeMesh(n){const e=this.json,s=this,t=e.nodes[n];return t.mesh===void 0?null:s.getDependency("mesh",t.mesh).then(function(i){const r=s._getNodeRef(s.meshCache,t.mesh,i);return t.weights!==void 0&&r.traverse(function(a){if(a.isMesh)for(let o=0,c=t.weights.length;o<c;o++)a.morphTargetInfluences[o]=t.weights[o]}),r})}loadNode(n){const e=this.json,s=this,t=e.nodes[n],i=s._loadNodeShallow(n),r=[],a=t.children||[];for(let c=0,u=a.length;c<u;c++)r.push(s.getDependency("node",a[c]));const o=t.skin===void 0?Promise.resolve(null):s.getDependency("skin",t.skin);return Promise.all([i,Promise.all(r),o]).then(function(c){const u=c[0],l=c[1],h=c[2];h!==null&&u.traverse(function(d){d.isSkinnedMesh&&d.bind(h,Un)});for(let d=0,p=l.length;d<p;d++)u.add(l[d]);if(u.userData.pivot!==void 0&&l.length>0){const d=u.userData.pivot,p=l[0];u.pivot=new C().fromArray(d),u.position.x-=d[0],u.position.y-=d[1],u.position.z-=d[2],p.position.set(0,0,0),delete u.userData.pivot}return u})}_loadNodeShallow(n){const e=this.json,s=this.extensions,t=this;if(this.nodeCache[n]!==void 0)return this.nodeCache[n];const i=e.nodes[n],r=i.name?t.createUniqueName(i.name):"",a=[],o=t._invokeOne(function(c){return c.createNodeMesh&&c.createNodeMesh(n)});return o&&a.push(o),i.camera!==void 0&&a.push(t.getDependency("camera",i.camera).then(function(c){return t._getNodeRef(t.cameraCache,i.camera,c)})),t._invokeAll(function(c){return c.createNodeAttachment&&c.createNodeAttachment(n)}).forEach(function(c){a.push(c)}),this.nodeCache[n]=Promise.all(a).then(function(c){let u;if(i.isBone===!0?u=new nn:c.length>1?u=new z:c.length===1?u=c[0]:u=new ge,u!==c[0])for(let l=0,h=c.length;l<h;l++)u.add(c[l]);if(i.name&&(u.userData.name=i.name,u.name=r),y(u,i),i.extensions&&O(s,u,i),i.matrix!==void 0){const l=new K;l.fromArray(i.matrix),u.applyMatrix4(l)}else i.translation!==void 0&&u.position.fromArray(i.translation),i.rotation!==void 0&&u.quaternion.fromArray(i.rotation),i.scale!==void 0&&u.scale.fromArray(i.scale);if(!t.associations.has(u))t.associations.set(u,{});else if(i.mesh!==void 0&&t.meshCache.refs[i.mesh]>1){const l=t.associations.get(u);t.associations.set(u,{...l})}return t.associations.get(u).nodes=n,u}),this.nodeCache[n]}loadScene(n){const e=this.extensions,s=this.json.scenes[n],t=this,i=new z;s.name&&(i.name=t.createUniqueName(s.name)),y(i,s),s.extensions&&O(e,i,s);const r=s.nodes||[],a=[];for(let o=0,c=r.length;o<c;o++)a.push(t.getDependency("node",r[o]));return Promise.all(a).then(function(o){for(let u=0,l=o.length;u<l;u++){const h=o[u];h.parent!==null?i.add(un(h)):i.add(h)}const c=u=>{const l=new Map;for(const[h,d]of t.associations)(h instanceof X||h instanceof ne)&&l.set(h,d);return u.traverse(h=>{const d=t.associations.get(h);d!=null&&l.set(h,d)}),l};return t.associations=c(i),i})}_createAnimationTracks(n,e,s,t,i){const r=[],a=n.name?n.name:n.uuid,o=[];function c(d){d.morphTargetInfluences&&o.push(d.name?d.name:d.uuid)}I[i.path]===I.weights?(c(n),n.isGroup&&n.children.forEach(c)):o.push(a);let u;switch(I[i.path]){case I.weights:u=se;break;case I.rotation:u=ie;break;case I.translation:case I.scale:u=te;break;default:switch(s.itemSize){case 1:u=se;break;case 2:case 3:default:u=te;break}break}const l=t.interpolation!==void 0?Pn[t.interpolation]:xe,h=this._getArrayFromAccessor(s);for(let d=0,p=o.length;d<p;d++){const R=new u(o[d]+"."+I[i.path],e.array,h,l);t.interpolation==="CUBICSPLINE"&&this._createCubicSplineTrackInterpolant(R),r.push(R)}return r}_getArrayFromAccessor(n){let e=n.array;if(n.normalized){const s=ee(e.constructor),t=new Float32Array(e.length);for(let i=0,r=e.length;i<r;i++)t[i]=e[i]*s;e=t}return e}_createCubicSplineTrackInterpolant(n){n.createInterpolant=function(s){const t=this instanceof ie?Fn:Me;return new t(this.times,this.values,this.getValueSize()/3,s)},n.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline=!0}}function Bn(f,n,e){const s=n.attributes,t=new an;if(s.POSITION!==void 0){const a=e.json.accessors[s.POSITION],o=a.min,c=a.max;if(o!==void 0&&c!==void 0){if(t.set(new C(o[0],o[1],o[2]),new C(c[0],c[1],c[2])),a.normalized){const u=ee(k[a.componentType]);t.min.multiplyScalar(u),t.max.multiplyScalar(u)}}else{console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.");return}}else return;const i=n.targets;if(i!==void 0){const a=new C,o=new C;for(let c=0,u=i.length;c<u;c++){const l=i[c];if(l.POSITION!==void 0){const h=e.json.accessors[l.POSITION],d=h.min,p=h.max;if(d!==void 0&&p!==void 0){if(o.setX(Math.max(Math.abs(d[0]),Math.abs(p[0]))),o.setY(Math.max(Math.abs(d[1]),Math.abs(p[1]))),o.setZ(Math.max(Math.abs(d[2]),Math.abs(p[2]))),h.normalized){const R=ee(k[h.componentType]);o.multiplyScalar(R)}a.max(o)}else console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.")}}t.expandByVector(a)}f.boundingBox=t;const r=new cn;t.getCenter(r.center),r.radius=t.min.distanceTo(t.max)/2,f.boundingSphere=r}function fe(f,n,e){const s=n.attributes,t=[];function i(r,a){return e.getDependency("accessor",r).then(function(o){f.setAttribute(a,o)})}for(const r in s){const a=$[r]||r.toLowerCase();a in f.attributes||t.push(i(s[r],a))}if(n.indices!==void 0&&!f.index){const r=e.getDependency("accessor",n.indices).then(function(a){f.setIndex(a)});t.push(r)}return re.workingColorSpace!==b&&"COLOR_0"in s&&console.warn(`THREE.GLTFLoader: Converting vertex colors from "srgb-linear" to "${re.workingColorSpace}" not supported.`),y(f,n),Bn(f,n,e),Promise.all(t).then(function(){return n.targets!==void 0?Hn(f,n.targets,e):f})}export{Vn as GLTFLoader};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const a={bodies:{sun:"Sol",moon:"Luna",Venus:"Venus",Mars:"Marte",Jupiter:"Júpiter",Saturn:"Saturno"},stars:{Sirius:"Sirio",Canopus:"Canopo",Arcturus:"Arturo",Capella:"Capela",Procyon:"Proción",Aldebaran:"Aldebarán",Spica:"Espiga",Pollux:"Pólux",Castor:"Cástor",Regulus:"Régulo"},comets:{"halley-1910":"cometa Halley","brooks-1911":"cometa Brooks","skjellerup-maristany-1927":"cometa Skjellerup-Maristany","de-kock-paraskevopoulos-1941":"cometa de Kock-Paraskevopoulos","southern-1947":"cometa austral","eclipse-1948":"cometa del eclipse","arend-roland-1957":"cometa Arend-Roland","mrkos-1957":"cometa Mrkos","seki-lines-1962":"cometa Seki-Lines","ikeya-seki-1965":"cometa Ikeya-Seki","bennett-1970":"cometa Bennett","white-ortiz-bolelli-1970":"cometa White-Ortiz-Bolelli","kohoutek-1973":"cometa Kohoutek","west-1976":"cometa West","iras-araki-alcock-1983":"cometa IRAS-Araki-Alcock","halley-1986":"cometa Halley","hyakutake-1996":"cometa Hyakutake","hale-bopp-1997":"cometa Hale-Bopp","mcnaught-2007":"cometa McNaught","lovejoy-2011":"cometa Lovejoy","panstarrs-2013":"cometa PANSTARRS","neowise-2020":"cometa NEOWISE","tsuchinshan-atlas-2024":"cometa Tsuchinshan-ATLAS"},novae:{"sn-1006":"supernova de 1006","sn-1054":"supernova de 1054","sn-1181":"supernova de 1181","sn-1572":"supernova de Tycho","sn-1604":"supernova de Kepler","t-crb-1866":"nova de la Corona Boreal 1866","t-aur-1891":"nova de Auriga 1891","gk-per-1901":"nova de Perseo 1901","dn-gem-1912":"nova de Géminis 1912","v603-aql-1918":"nova del Águila 1918","v476-cyg-1920":"nova del Cisne 1920","rr-pic-1925":"nova del Pintor 1925","dq-her-1934":"nova de Hércules 1934","cp-lac-1936":"nova del Lagarto 1936","cp-pup-1942":"nova de la Popa 1942","t-crb-1946":"nova de la Corona Boreal 1946","v446-her-1960":"nova de Hércules 1960","v533-her-1963":"nova de Hércules 1963","hr-del-1967":"nova del Delfín 1967","lv-vul-1968":"nova de la Zorra 1968","fh-ser-1970":"nova de la Serpiente 1970","v1500-cyg-1975":"nova del Cisne 1975","v842-cen-1986":"nova del Centauro 1986","sn-1987a":"supernova 1987A","v1974-cyg-1992":"nova del Cisne 1992","v382-vel-1999":"nova de las Velas 1999","v1494-aql-1999":"nova del Águila 1999","v4743-sgr-2002":"nova de Sagitario 2002","rs-oph-2006":"nova de Ofiuco 2006","v1280-sco-2007":"nova de Escorpio 2007","v339-del-2013":"nova del Delfín 2013","v1369-cen-2013":"nova del Centauro 2013","rs-oph-2021":"nova de Ofiuco 2021"},satelliteClasses:{echo:"los globos Echo","iridium-flares":"los destellos de los Iridium",iss:"la Estación Espacial Internacional","starlink-trains":"los trenes de Starlink"},showers:{quadrantids:"Cuadrántidas",lyrids:"Líridas de abril","eta-aquariids":"Eta Acuáridas","alpha-capricornids":"Alfa Capricórnidas","southern-delta-aquariids":"Delta Acuáridas del Sur",perseids:"Perseidas","southern-taurids":"Táuridas del Sur",draconids:"Dracónidas de octubre",orionids:"Oriónidas","northern-taurids":"Táuridas del Norte",leonids:"Leónidas",geminids:"Gemínidas",ursids:"Úrsidas"},lightRigs:{airliner:"Avión de pasajeros",helicopter:"Helicóptero","car-headlights":"Coche, faros encendidos","car-hazards":"Coche, luces de emergencia","emergency-beacons":"Rotativos de vehículo de emergencia",streetlamp:"Farola"},instruments:{eye:"A simple vista","rectilinear-lens":"Cámara, modelo desconocido","instamatic-126":"Instamatic, película 126","slr-35mm-50":"Réflex 35 mm, objetivo 50 mm","slr-35mm-zoom":"Réflex 35 mm, zoom 70-210 mm","phone-landscape":"Teléfono, en horizontal","phone-portrait":"Teléfono, en vertical"},decorKinds:{building:"Edificio",tree:"Árbol",shrub:"Arbusto",bridge:"Puente",crop:"Hilera de cultivo",mound:"Montón de piedras",streetlight:"Farola",vehicle:"Vehículo",observer:"Observador",aircraft:"Aeronave",entity:"Ser"},compassPoints:["N","NNE","NE","ENE","E","ESE","SE","SSE","S","SSO","SO","OSO","O","ONO","NO","NNO"],towards:e=>`al ${e}`,starTooltip:"{name} — mag {mag}, {alt}° sobre el horizonte",starTooltipBelow:"{name} — mag {mag}, {alt}° bajo la horizontal",satelliteTooltip:"{name} — satélite, mag {mag}, a {height} km de altitud",credits:"Créditos"};export{a as sceneNames_es};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const a={bodies:{sun:"Soleil",moon:"Lune",Venus:"Vénus",Saturn:"Saturne"},stars:{Betelgeuse:"Bételgeuse",Vega:"Véga",Altair:"Altaïr",Aldebaran:"Aldébaran",Regulus:"Régulus",Antares:"Antarès"},comets:{"halley-1910":"comète de Halley","brooks-1911":"comète Brooks","skjellerup-maristany-1927":"comète Skjellerup-Maristany","de-kock-paraskevopoulos-1941":"comète de Kock-Paraskevopoulos","southern-1947":"comète australe","eclipse-1948":"comète de l'éclipse","arend-roland-1957":"comète Arend-Roland","mrkos-1957":"comète Mrkos","seki-lines-1962":"comète Seki-Lines","ikeya-seki-1965":"comète Ikeya-Seki","bennett-1970":"comète Bennett","white-ortiz-bolelli-1970":"comète White-Ortiz-Bolelli","kohoutek-1973":"comète Kohoutek","west-1976":"comète West","iras-araki-alcock-1983":"comète IRAS-Araki-Alcock","halley-1986":"comète de Halley","hyakutake-1996":"comète Hyakutake","hale-bopp-1997":"comète Hale-Bopp","mcnaught-2007":"comète McNaught","lovejoy-2011":"comète Lovejoy","panstarrs-2013":"comète PANSTARRS","neowise-2020":"comète NEOWISE","tsuchinshan-atlas-2024":"comète Tsuchinshan-ATLAS"},novae:{"sn-1006":"supernova de 1006","sn-1054":"supernova de 1054","sn-1181":"supernova de 1181","sn-1572":"supernova de Tycho","sn-1604":"supernova de Kepler","t-crb-1866":"nova de la Couronne boréale 1866","t-aur-1891":"nova du Cocher 1891","gk-per-1901":"nova de Persée 1901","dn-gem-1912":"nova des Gémeaux 1912","v603-aql-1918":"nova de l'Aigle 1918","v476-cyg-1920":"nova du Cygne 1920","rr-pic-1925":"nova du Peintre 1925","dq-her-1934":"nova d'Hercule 1934","cp-lac-1936":"nova du Lézard 1936","cp-pup-1942":"nova de la Poupe 1942","t-crb-1946":"nova de la Couronne boréale 1946","v446-her-1960":"nova d'Hercule 1960","v533-her-1963":"nova d'Hercule 1963","hr-del-1967":"nova du Dauphin 1967","lv-vul-1968":"nova du Petit Renard 1968","fh-ser-1970":"nova du Serpent 1970","v1500-cyg-1975":"nova du Cygne 1975","v842-cen-1986":"nova du Centaure 1986","sn-1987a":"supernova 1987A","v1974-cyg-1992":"nova du Cygne 1992","v382-vel-1999":"nova des Voiles 1999","v1494-aql-1999":"nova de l'Aigle 1999","v4743-sgr-2002":"nova du Sagittaire 2002","rs-oph-2006":"nova d'Ophiuchus 2006","v1280-sco-2007":"nova du Scorpion 2007","v339-del-2013":"nova du Dauphin 2013","v1369-cen-2013":"nova du Centaure 2013","rs-oph-2021":"nova d'Ophiuchus 2021"},satelliteClasses:{echo:"les ballons Echo","iridium-flares":"les flashes d'Iridium",iss:"la Station spatiale internationale","starlink-trains":"les trains de Starlink"},showers:{quadrantids:"Quadrantides",lyrids:"Lyrides d'avril","eta-aquariids":"Êta Aquarides","alpha-capricornids":"Alpha Capricornides","southern-delta-aquariids":"Delta Aquarides du Sud",perseids:"Perséides","southern-taurids":"Taurides du Sud",draconids:"Draconides d'octobre",orionids:"Orionides","northern-taurids":"Taurides du Nord",leonids:"Léonides",geminids:"Géminides",ursids:"Ursides"},lightRigs:{airliner:"Avion de ligne",helicopter:"Hélicoptère","car-headlights":"Voiture, phares allumés","car-hazards":"Voiture, feux de détresse","emergency-beacons":"Gyrophares de véhicule d'urgence",streetlamp:"Lampadaire"},instruments:{eye:"Œil nu","rectilinear-lens":"Appareil, modèle inconnu","instamatic-126":"Instamatic, film 126","slr-35mm-50":"Reflex 35 mm, objectif 50 mm","slr-35mm-zoom":"Reflex 35 mm, zoom 70-210 mm","phone-landscape":"Téléphone, tenu couché","phone-portrait":"Téléphone, tenu debout"},decorKinds:{building:"Bâtiment",tree:"Arbre",shrub:"Buisson",bridge:"Pont",crop:"Rang de culture",mound:"Tas de pierres",streetlight:"Lampadaire",vehicle:"Véhicule",observer:"Observateur",aircraft:"Aéronef",entity:"Être"},compassPoints:["N","NNE","NE","ENE","E","ESE","SE","SSE","S","SSO","SO","OSO","O","ONO","NO","NNO"],towards:e=>/^[EO]/.test(e)?`à l'${e}`:`au ${e}`,starTooltip:"{name} — mag {mag}, {alt}° au-dessus de l'horizon",starTooltipBelow:"{name} — mag {mag}, {alt}° sous l'horizontale",satelliteTooltip:"{name} — satellite, mag {mag}, à {height} km d'altitude",credits:"Crédits"};export{a as sceneNames_fr};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const o={bodies:{sun:"Sole",moon:"Luna",Venus:"Venere",Mars:"Marte",Jupiter:"Giove",Saturn:"Saturno"},stars:{Sirius:"Sirio",Canopus:"Canopo",Arcturus:"Arturo",Procyon:"Procione",Pollux:"Polluce",Castor:"Castore",Regulus:"Regolo"},comets:{"halley-1910":"cometa di Halley","brooks-1911":"cometa Brooks","skjellerup-maristany-1927":"cometa Skjellerup-Maristany","de-kock-paraskevopoulos-1941":"cometa de Kock-Paraskevopoulos","southern-1947":"cometa australe","eclipse-1948":"cometa dell'eclisse","arend-roland-1957":"cometa Arend-Roland","mrkos-1957":"cometa Mrkos","seki-lines-1962":"cometa Seki-Lines","ikeya-seki-1965":"cometa Ikeya-Seki","bennett-1970":"cometa Bennett","white-ortiz-bolelli-1970":"cometa White-Ortiz-Bolelli","kohoutek-1973":"cometa Kohoutek","west-1976":"cometa West","iras-araki-alcock-1983":"cometa IRAS-Araki-Alcock","halley-1986":"cometa di Halley","hyakutake-1996":"cometa Hyakutake","hale-bopp-1997":"cometa Hale-Bopp","mcnaught-2007":"cometa McNaught","lovejoy-2011":"cometa Lovejoy","panstarrs-2013":"cometa PANSTARRS","neowise-2020":"cometa NEOWISE","tsuchinshan-atlas-2024":"cometa Tsuchinshan-ATLAS"},novae:{"sn-1006":"supernova del 1006","sn-1054":"supernova del 1054","sn-1181":"supernova del 1181","sn-1572":"supernova di Tycho","sn-1604":"supernova di Keplero","t-crb-1866":"nova della Corona Boreale 1866","t-aur-1891":"nova dell'Auriga 1891","gk-per-1901":"nova di Perseo 1901","dn-gem-1912":"nova dei Gemelli 1912","v603-aql-1918":"nova dell'Aquila 1918","v476-cyg-1920":"nova del Cigno 1920","rr-pic-1925":"nova del Pittore 1925","dq-her-1934":"nova di Ercole 1934","cp-lac-1936":"nova della Lucertola 1936","cp-pup-1942":"nova della Poppa 1942","t-crb-1946":"nova della Corona Boreale 1946","v446-her-1960":"nova di Ercole 1960","v533-her-1963":"nova di Ercole 1963","hr-del-1967":"nova del Delfino 1967","lv-vul-1968":"nova della Volpetta 1968","fh-ser-1970":"nova del Serpente 1970","v1500-cyg-1975":"nova del Cigno 1975","v842-cen-1986":"nova del Centauro 1986","sn-1987a":"supernova 1987A","v1974-cyg-1992":"nova del Cigno 1992","v382-vel-1999":"nova delle Vele 1999","v1494-aql-1999":"nova dell'Aquila 1999","v4743-sgr-2002":"nova del Sagittario 2002","rs-oph-2006":"nova di Ofiuco 2006","v1280-sco-2007":"nova dello Scorpione 2007","v339-del-2013":"nova del Delfino 2013","v1369-cen-2013":"nova del Centauro 2013","rs-oph-2021":"nova di Ofiuco 2021"},satelliteClasses:{echo:"i palloni Echo","iridium-flares":"i lampi degli Iridium",iss:"la Stazione Spaziale Internazionale","starlink-trains":"i treni di Starlink"},showers:{quadrantids:"Quadrantidi",lyrids:"Liridi di aprile","eta-aquariids":"Eta Aquaridi","alpha-capricornids":"Alfa Capricornidi","southern-delta-aquariids":"Delta Aquaridi australi",perseids:"Perseidi","southern-taurids":"Tauridi australi",draconids:"Draconidi di ottobre",orionids:"Orionidi","northern-taurids":"Tauridi boreali",leonids:"Leonidi",geminids:"Geminidi",ursids:"Ursidi"},lightRigs:{airliner:"Aereo di linea",helicopter:"Elicottero","car-headlights":"Auto, fari accesi","car-hazards":"Auto, luci di emergenza","emergency-beacons":"Lampeggianti di veicolo di soccorso",streetlamp:"Lampione"},instruments:{eye:"Occhio nudo","rectilinear-lens":"Fotocamera, modello sconosciuto","instamatic-126":"Instamatic, pellicola 126","slr-35mm-50":"Reflex 35 mm, obiettivo 50 mm","slr-35mm-zoom":"Reflex 35 mm, zoom 70-210 mm","phone-landscape":"Telefono, in orizzontale","phone-portrait":"Telefono, in verticale"},decorKinds:{building:"Edificio",tree:"Albero",shrub:"Arbusto",bridge:"Ponte",crop:"Filare di coltura",mound:"Mucchio di pietre",streetlight:"Lampione",vehicle:"Veicolo",observer:"Osservatore",aircraft:"Aeromobile",entity:"Essere"},compassPoints:["N","NNE","NE","ENE","E","ESE","SE","SSE","S","SSO","SO","OSO","O","ONO","NO","NNO"],towards:e=>`verso ${e}`,starTooltip:"{name} — mag {mag}, {alt}° sopra l'orizzonte",starTooltipBelow:"{name} — mag {mag}, {alt}° sotto l'orizzontale",satelliteTooltip:"{name} — satellite, mag {mag}, a {height} km di quota",credits:"Crediti"};export{o as sceneNames_it};
|
|
@@ -0,0 +1 @@
|
|
|
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)",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",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",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",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",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",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",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",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",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",accountSourceUnknown:"desconocido",accountSourceOnSite:"investigación in situ",accountSourceInterview:"entrevista en persona",accountSourceTelephone:"por teléfono",accountSourceQuestionnaire:"cuestionario",accountSourceLetter:"lo escribió el observador",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};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e={color:"Colore",transparency:"Trasparenza",halo:"Alone",blur:"Sfocatura",brightness:"Brillantezza",shapeTitle:"Nome",utcOffset:"Fuso orario",cloudBase:"Base delle nuvole",elevation:"Altitudine",heightAboveGround:"Altezza dal suolo",duration:"Durata",placeName:"Luogo",latitude:"Latitudine",longitude:"Longitudine",heading:"Orientamento",pitch:"Inclinazione",roll:"Rollio",sway:"Oscillazione a riposo",swayTitle:"Quanto il corpo che regge lo strumento muove la vista quando non cammina: 1 per una persona in piedi, 0 per un treppiede. Vuoto: 1 (0 se il resoconto dice che l'osservatore era paralizzato)",observationTime:"Inizio dell'osservazione",observationEndTime:"Fine dell'osservazione",assessmentGroup:"Valutazione",assessmentNames:{coverage:"Dati dell'osservatore"},assessmentVerdicts:{"hynek.nl":"NL — luce notturna","hynek.dd":"DD — disco diurno","hynek.rv":"RV — radar-visivo","hynek.ce1":"IR1 — incontro ravvicinato","hynek.ce2":"IR2 — con traccia fisica","hynek.ce3":"IR3 — con entità"},observerGroup:"Osservatore",observerId:"ID",observerTitle:"Titolo",observerLastName:"Cognome",observerFirstNames:"Nomi",sightingId:"ID",tags:"Etichette",cloudCover:"Copertura nuvolosa",highCloudCover:"Nubi di ghiaccio (cirri)",focalLength:"Lunghezza focale",fieldOfView:"Campo visivo",aperture:"Apertura",exposure:"Esposizione",focusDistance:"Messa a fuoco a",iceCrystalAlignment:"Allineamento dei cristalli",cloudDarkness:"Oscurità delle nuvole",precipitationType:"Precipitazioni",precipitationNone:"Nessuna",precipitationRain:"Pioggia",precipitationSnow:"Neve",precipitationHail:"Grandine",precipitationIntensity:"Intensità",windDirection:"Direzione del vento",windSpeed:"Velocità del vento",storm:"Temporale",cloudsGroup:"Nuvole",precipitationGroup:"Precipitazioni",windGroup:"Vento",soundKind:"Suono",soundNone:"Nessuno (silenzioso)",soundHum:"Ronzio",soundWhistle:"Fischio",soundRumble:"Rombo",soundCrackle:"Crepitio",soundVolume:"Volume",soundPitch:"Tono",soundSrc:"Registrazione",instrument:"Osservato con",decorAircraft:"Aeromobile",decorEntity:"Essere",decorAltitude:"Altitudine",decorLights:"Luci",decorLightsNone:"nessuna",decor:"Ambiente",decorBuilding:"Edificio",decorTree:"Albero",decorShrub:"Cespuglio",decorBridge:"Ponte",decorCrop:"Filare di coltura",decorMound:"Mucchio di pietre",decorStreetlight:"Lampione",decorVehicle:"Veicolo",decorObserver:"Altro osservatore",decorEast:"Distanza a est",decorNorth:"Distanza a nord",decorHeading:"Orientamento",decorColor:"Colore",decorLit:"Acceso",decorTitle:"Nome",milestones:"Momenti",milestoneLabel:"Etichetta",milestoneNote:"Cosa succede",addMilestone:"Dai un nome a questo momento",deleteMilestone:"Elimina momento",goToMilestone:"Vai a questo momento",confirmAccept:"Elimina",confirmDecline:"Annulla",decorWidth:"Larghezza",decorLength:"Lunghezza",decorHeight:"Altezza",decorModel:"Modello 3D",decorModelNone:"Forma integrata",decorModelAdvanced:"Modello da un indirizzo",decorModelFromCatalogue:"Dal catalogo, con cui la registrazione lo nomina. Modifica un campo e diventerà l'indirizzo proprio di questa registrazione.",decorModelUrl:"Indirizzo glTF/GLB",decorModelTitle:"Nome del modello",decorModelAuthor:"Autore",decorModelLicense:"Licenza",decorModelSource:"Provenienza",decorFloors:"Piani",decorOccupiedFloor:"Piano occupato",decorObserverSide:"Posizione dell'osservatore",decorObserverSideNone:"Non presente",decorWindows:"Finestre",decorSideFront:"Davanti",decorSideBehind:"Dietro",decorSideLeft:"Sinistra",decorSideRight:"Destra",decorSideFrontLeft:"Davanti a sinistra",decorSideFrontRight:"Davanti a destra",decorSideBehindLeft:"Dietro a sinistra",decorSideBehindRight:"Dietro a destra"},a={...e,oval:"Ovale",polygon:"Poligono",addVertex:"Aggiungi vertice",deleteVertex:"Elimina vertice",notAPolygon:"Seleziona una sola forma poligonale",tooFewVertices:"Una forma ha bisogno di almeno 3 punti",shape:"Forma",apparentWidth:"Larghezza apparente",realWidth:"Larghezza reale",distance:"Distanza",sizeLock:"Mantieni",lockNone:"niente",lockApparent:"la larghezza apparente",lockReal:"la larghezza reale",lockDistance:"la distanza",apparentSize:"{moons}× la Luna",utcOffsetPlaceholder:"dalla longitudine",realSizeBetween:"La scena delimita quella larghezza: tra {min} e {max} m, in base a ciò che attraversa",realSizeAtLeast:"La scena delimita quella larghezza: almeno {min} m, in base a ciò dietro cui passa",realSizeAtMost:"La scena delimita quella larghezza: al massimo {max} m, in base a ciò davanti a cui passa",realSizeUnknown:"Nulla nella scena delimita quella larghezza: è solo ciò che la distanza implica",realSizeOutside:" — la larghezza qui sopra ne è fuori",blurBound:"Sfocato attraverso questo obiettivo: più vicino di {max} m",blurBoundNoInstrument:"La sfocatura a occhio nudo non delimita alcuna distanza — un occhio non ha un diaframma con cui andare fuori fuoco",blurBoundNotAtInfinity:"La sfocatura delimita una distanza solo per un obiettivo messo a fuoco all'infinito: questo è a fuoco a {focus} m, il che sfoca da entrambi i lati",realSizeContradiction:"Contraddizione: gli attraversamenti dichiarati non possono essere tutti veri",realDistanceHere:" — cioè qui tra {min} e {max} m",clearDistanceHypothesis:"Ritira l'ipotesi di distanza",clearDistanceHypothesisTitle:"Torna a ciò che la registrazione stabilisce",depthStated:"Disegnato a {m} m, come dichiara la registrazione",depthHypothesis:"Disegnato a {m} m: la tua ipotesi — ciò che la scenografia ne nasconde è ciò che perderebbe una cosa così lontana",depthDerived:"Disegnato a {m} m, in base alla camminata stessa dell'osservatore",depthBounded:"Disegnato a {m} m, in base a ciò dietro e davanti a cui passa",depthConventional:"Disegnato a {m} m per convenzione: nulla nella registrazione stabilisce una distanza",addShape:"Aggiungi forma",deleteShape:"Elimina forma",play:"Riproduci",pause:"Pausa",noDuration:"Nessuna durata di osservazione",previousKeyframe:"Fotogramma chiave precedente",nextKeyframe:"Fotogramma chiave successivo",keyframeMark:"Fotogramma chiave",shapesTrack:"forme",observerTrack:"osservatore",weatherTrack:"meteo",soundTrack:"suono",group:"Raggruppa",ungroup:"Separa",bringToFront:"Porta in primo piano",sendToBack:"Porta in fondo",contextMenuDelete:"Elimina",confirmDeleteShape:"Eliminare {name}? L'operazione è irreversibile.",confirmDeleteShapes:"Eliminare {count} forme? L'operazione è irreversibile.",confirmDeleteMilestone:"Smettere di nominare il momento {name}? La registrazione in sé non cambia.",onlyOneShape:"C'è una sola forma",alreadyAtFront:"Questa forma è già in primo piano",alreadyAtBack:"Questa forma è già in fondo",needTwoShapesToGroup:"Seleziona almeno due forme per raggrupparle",notGrouped:"Questa forma non fa parte di un gruppo",multipleShapesSelected:"Più forme selezionate — selezionane una sola per modificare questo",samplingRate:"Frequenza di campionamento",currentPosition:"Posizione attuale",switchToElapsed:"clicca per mostrare il tempo trascorso",switchToClockTime:"clicca per mostrare l'ora del giorno",durationPlaceholder:"durata dell'osservazione",durationImprecise:"Queste date non determinano con sufficiente precisione una durata — inseriscila manualmente.",export:"Esporta",importFile:"Carica file JSON",importUrl:"Oppure carica da URL",importUrlPlaceholder:"https://…/sighting.json",importButton:"Carica",importError:"Impossibile caricare questa registrazione — controlla il file o l'URL e riprova.",importErrorCors:`Questo indirizzo risponde, ma il browser non ha il permesso di leggerlo da questa pagina. Il file in sé va bene: è il suo server che deve inviarlo con l'intestazione "Access-Control-Allow-Origin: *". Se il server non è tuo, è questo che devi chiedere al suo amministratore.`,importErrorMixedContent:"Una pagina sicura non può caricare un indirizzo che inizia con http://. Usa https:// se quel server lo offre.",importErrorUnreachable:"Nulla ha risposto a questo indirizzo. Controlla come è scritto e di essere connesso.",importErrorStatus:"Quel server ha risposto con un errore ({status}). Probabilmente l'indirizzo è sbagliato o il file è stato spostato.",importErrorMalformed:"Questo indirizzo ha risposto, ma ciò che è tornato non è una registrazione.",record:"Registra",stop:"Ferma",according:"secondo",sourceElevation:"Rilievo",sourceImagery:"Immagini",placeNamePlaceholder:"Valensole, Francia",searchPlace:"Localizza",placeMatch:"Corrispondenze",placeSearching:"Ricerca del luogo…",placeMatchFound:"luogo trovato",placeMatchesFound:"luoghi trovati",placeNotFound:"Nessun luogo con questo nome",placeSearchFailed:"Ricerca dei luoghi momentaneamente non disponibile",utcOffsetImplausible:"Questo fuso orario non corrisponde alla longitudine inserita, la cui ora solare è UTC{solar} — eppure la scena e il rilevamento meteo obbediscono a ciò che è dichiarato qui. Svuota il campo per ricavarlo dalla longitudine.",timeZoneManual:"scarto inserito",altitudeAboveSeaLevel:"Altitudine dell'osservatore sul livello del mare — il suolo del luogo inserito ne fissa il minimo: un osservatore sulle Alpi non è a 0 m.",groundAt:"suolo a {m} m",headingPlaceholder:"sconosciuto",edtfInvalid:"Data/ora EDTF non valida (es. 1965-07-01T05:00, 2025-06?, 2025~).",edtfPlaceholder:"AAAA-MM-GGThh:mm[?~%] o hh:mm",observationTimeHint:"EDTF — es. 1965-07-01T05:00, 2025-06? (incerto), 2025~ (approssimativo), o solo 05:00 se la data non è nota",observationEndTimeHint:"EDTF — es. 1965-07-01T05:10, 2025-06? (incerto), 2025~ (approssimativo), o solo 05:10 se la data non è nota",presetsGroupLabel:"Forma dell'UFO",description:"Descrizione",tagsPlaceholder:"separati da virgole",weather:"Meteo",shapeGroup:"Fenomeno",shapesSubgroup:"Forme",bodiesSubgroup:"Corpi",soundGroup:"Suono",temporalGroup:"Momento",timeQualifierExact:"Esatta",timeQualifierApproximate:"Approssimativa",timeQualifierUncertain:"Incerta",timeQualifierBoth:"Incerta e approssimativa",edtfModeTitle:"Scrivi invece una data imprecisa: solo un anno, un mese, un'ora senza data",locationGroup:"Luogo",observationGroup:"Osservazione",weatherWhilePlaying:"Metti in pausa la registrazione per indicare il tempo — mentre scorre, l'istante in cui verrebbe scritto si sposta",weatherInferred:"Dai rilevamenti",weatherInferredTitle:"Il meteo non è un resoconto: è un fatto misurabile, rilevato per la data, l'ora e il luogo dell'osservazione. Deseleziona per indicare le condizioni riferite dall'osservatore, che allora prevalgono sul rilevamento.",weatherLookingUp:"Ricerca del rilevamento…",weatherNeedsDateAndPlace:"Servono una data completa e un luogo per cercare il rilevamento",weatherNoRecord:"Nessun rilevamento per questa data e questo luogo",weatherLookupFailed:"Rilevamenti meteo momentaneamente irraggiungibili",instrumentOutOfPeriod:"{name} — non di quest'epoca",unitMillimetres:"mm",unitDegrees:"°",fieldOfViewReadout:"{deg}° di campo",soundSrcPlaceholder:"URL di una registrazione reale",referenceGroup:"Foto",reference:"Foto",referenceTitle:"Nome",referenceSrc:"Indirizzo",referenceSrcPlaceholder:"https://…/photo.jpg",referenceKind:"Tipo",referencePhoto:"Foto",referencePanorama:"Panorama (360°)",referenceCredit:"Crediti",referenceCreditUrl:"Link dei crediti",referenceT:"Scattata a",referenceDrawing:"Disegno sopra",referenceOpacity:"Opacità",referenceHeading:"Direzione",referencePitch:"Beccheggio",referenceRoll:"Rollio",referenceFov:"Campo verticale",referenceUsePose:"Usa la posa dell'osservatore",addReferenceUrl:"Aggiungi da un indirizzo",addReferenceFile:"Aggiungi un file",deleteReference:"Elimina foto",referenceEmbedded:"{kb} kB incorporati nella registrazione — un indirizzo la terrebbe leggera",referenceUnreachable:"Impossibile caricare la foto: controlla l'indirizzo e che il suo sito permetta ad altri siti di leggerla",referenceRegisterHint:"Trascina per ruotare la foto, rotellina per cambiarne il campo; «Aggiungi un punto di riferimento» per indicare un dettaglio sulla foto, poi lo stesso nel rendering",referenceLandmarkPicture:"Punto di riferimento {n}: clicca il punto sulla foto",referenceLandmarkScene:"Punto di riferimento {n}: clicca lo stesso punto nel rendering",referenceLandmarkOffPicture:"Questo clic non cade sulla foto",referenceNotLoaded:"La foto non è ancora arrivata",referenceLandmarksFit:"{n} punti di riferimento — scarto medio di {deg}°",referenceLandmarks:"Punti di riferimento",addReferenceLandmark:"Aggiungi un punto di riferimento",deleteReferenceLandmark:"Elimina punto di riferimento",referenceLandmarkLabel:"Nome",referenceLandmarkLabelPlaceholder:"Albero che copre, recinzione…",referenceAdoptPose:"Adotta come posa dell'osservatore",referenceAdoptRationale:"Misurato sulla foto «{title}»: {n} punti di riferimento allineati, {deg}° di scarto residuo",referenceStreetSearch:"Foto stradali nei dintorni",referenceStreetSearching:"Ricerca di foto scattate nei dintorni…",referenceStreetNone:"Nessuna foto stradale entro {m} m (Panoramax)",referenceStreetFailed:"Impossibile raggiungere Panoramax",referenceStreetAdd:"Aggiungi",referenceStreetItem:"{distance} m a {bearing}°, {date}{panorama}",referenceStreetPanorama:" — 360°",referenceStreetTitle:"Foto stradale a {distance} m a {bearing}°, {date}",skyLine:"Cielo: {parts}",skyStarsEye:"stelle fino alla magnitudine {limit}, il limite che un occhio raggiungeva sotto questo cielo",skyStarsDeeper:"stelle fino alla magnitudine {limit} attraverso un {device} — {gain} magnitudini oltre le {eye} raggiunte dagli occhi dell'osservatore",skyStarsShallower:"stelle fino alla magnitudine {limit} attraverso un {device} — {gain} magnitudini al di qua delle {eye} raggiunte dagli occhi dell'osservatore",skyStarsCatalogue:", disegnate fino a {catalogue}, dove si ferma il catalogo di questo progetto",skyStarsNone:"nessuna stella si distingueva in un cielo così chiaro",skyDetails:"Mostra i rilevamenti completi",skyDetailsHide:"Nascondi i rilevamenti",skyShowerActive:"{name} — radiante a {altitude}° sopra l'orizzonte, {bearing} — circa {rate}/h sotto questo cielo, su un fondo sporadico di {sporadic}/h",skyShowerBelowHorizon:"{name} è attivo, ma il suo radiante è sotto l'orizzonte — non ha potuto produrre nulla",skyNothingActive:"nessuno sciame meteorico attivo in questa data — un fondo sporadico di circa {sporadic}/h",showMeteor:"Mostrami una meteora",skyComet:"La {name}, magnitudine {magnitude}, a {altitude}° sopra l'orizzonte {bearing}, coda lunga {tail}°",skyCometNoTail:"La {name}, magnitudine {magnitude}, a {altitude}° sopra l'orizzonte {bearing}",skyCometBelowHorizon:"La {name} c'era, di magnitudine {magnitude}, ma sotto l'orizzonte — nessuno qui l'ha vista",skyCometInDaylight:"La {name}, magnitudine {magnitude}, a {altitude}° sopra l'orizzonte {bearing} — ma a soli {elongation}° dal Sole",showComet:"Mostrami la cometa",skyNova:"La {name}, una stella nuova di magnitudine {magnitude}, a {altitude}° sopra l'orizzonte {bearing}",skyNovaBelowHorizon:"La {name} brillava di magnitudine {magnitude}, ma sotto l'orizzonte: nessuno qui l'ha vista",showNova:"Mostrami la stella nuova",skySatellitePasses:"{count} satelliti hanno attraversato questo cielo abbastanza luminosi da essere visti, il più luminoso {name}, magnitudine {magnitude}, a {altitude}° sopra l'orizzonte {bearing} alle {time}",skySatellitePassesOne:"un satellite ha attraversato questo cielo abbastanza luminoso da essere visto: {name}, magnitudine {magnitude}, a {altitude}° sopra l'orizzonte {bearing} alle {time}",skySatelliteTrain:"tra cui un treno di {count} Starlink lanciati il {date}",skySatellitePassesNone:"secondo gli elementi orbitali archiviati per quella data, nessun satellite illuminato ha attraversato questo cielo abbastanza luminoso da essere visto",skySatelliteElementsGap:"nessun elemento orbitale archiviato vicino a quella data",showSatellite:"Mostrami un satellite",skyOpticsPossible:"nubi di ghiaccio sufficienti, intorno {source}, per {forms}",skyOpticsAlignment:" — tutto tranne gli anelli richiede cristalli che cadono orizzontali, qui supposti allineati al {alignment}%, poiché nessun rilevamento lo indica",skyOpticsHalo22:"un anello di {angle}°",skyOpticsHalo46:"un anello di {angle}°",skyOpticsParhelia:"pareli a {angle}° da entrambi i lati",skyOpticsTangentArc:"un arco tangente sopra",skyOpticsParhelicCircle:"un cerchio bianco che fa il giro del cielo alla sua stessa altezza",skyOpticsCircumzenithal:"un arco circumzenitale a {angle}° di altezza",skyOpticsCircumhorizontal:"un arco circumorizzontale molto più in basso",skyOpticsPillar:"una colonna eretta sopra",skyOpticsNoIce:"nessuna nube di ghiaccio: né alone né pareli",skyOpticsHidden:"nubi di ghiaccio in quota, ma uno strato più basso tra loro e l'osservatore",skyOpticsSun:"al Sole",skyOpticsMoon:"alla Luna",skyBowPossible:"pioggia e sole sufficienti per {forms}",skyBowMoon:"pioggia sotto una Luna illuminata al {lit}%, sufficiente per {forms} — un arcobaleno lunare, che l'occhio vede come un arco bianco",skyGlowBand:"la Via Lattea a {contrast}× il fondo del cielo, a {altitude}° di altezza {bearing}",skyGlowCone:"la luce zodiacale a {contrast}× il fondo del cielo, a {altitude}° di altezza {bearing}, a {elongation}° dal Sole — un tenue cono di luce inclinato, dai bordi sfumati, svanito entro un'ora",skyGlowZodiacalBand:"la banda zodiacale a {contrast}× il fondo del cielo, a {altitude}° di altezza {bearing} — tutta l'eclittica debolmente accesa, che non è ciò che la gente riferisce",skyGlowMoon:"né Via Lattea né luce zodiacale: una Luna illuminata al {lit}% teneva il cielo a {sky} magnitudini per secondo d'arco quadrato, dove ne servono 22",skyGlowTwilight:"né Via Lattea né luce zodiacale: il crepuscolo teneva ancora il cielo a {sky} magnitudini per secondo d'arco quadrato, dove ne servono 22",skyGlowNothingUp:"cielo abbastanza buio ({sky} magnitudini per secondo d'arco quadrato), ma né il piano galattico né l'eclittica vi stavano abbastanza in alto",skyBowPrimary:"un arco di {radius}° di raggio, con la sommità a {top}° di altezza",skyBowSecondary:"un secondo, più tenue, a {radius}°, con i colori invertiti",skyBowSourceTooHigh:"pioggia, ma con l'astro a {altitude}° di altezza nessun arco poteva superare l'orizzonte: si trovano a {radius}° dal punto opposto",skyBowHidden:"pioggia, ma uno strato continuo tra essa e la luce: nessun arco",skyBowNoSource:"pioggia, e niente di illuminato per farne un arco",skySatellitesLit:"l'ombra della Terra era a {height} km sopra l'osservatore, quindi l'orbita bassa era ancora al sole — {count} oggetti catalogati erano in orbita quel mese",skySatellitesLitWith:"l'ombra della Terra era a {height} km sopra l'osservatore, quindi l'orbita bassa era ancora al sole — {count} oggetti catalogati erano in orbita quel mese, tra cui {eras}",skySatellitesShadowed:"l'ombra della Terra era a {height} km sopra l'osservatore: dei {count} oggetti catalogati in orbita quel mese, niente in orbita bassa era illuminato",skySatellitesNotYet:"non era ancora stato messo niente in orbita",skySatellitesDaylight:"tutto ciò che era in orbita era illuminato, come sempre di giorno, e {eras} potevano superare in luminosità persino questo cielo",skySatellitesDaylightOne:"tutto ciò che era in orbita era illuminato, come sempre di giorno, e {eras} poteva superare in luminosità persino questo cielo",skyUnknown:"non determinabile senza una data e un luogo",lookAtDecor:"Guardalo",addDecor:"Aggiungi",deleteDecor:"Elimina elemento della scenografia",decorSightingUrl:"URL della sua registrazione",viewAccount:"Vedi il resoconto",noObserverRecording:"Nessun URL di registrazione per questo osservatore",masks:"Nasconde",addObserver:"Aggiungi osservatore",narrativePlaceholder:"Ciò che l'osservatore ha riferito, con parole sue",narrativeSource:"Redatto da",narrativeNeedsSetting:'Compila "{setting}" ({source}) per generare una ricostruzione dal resoconto',narrativeNeedsAsk:"Ancora niente da inviare",narrativeRemember:"Ricorda su questo dispositivo",narrativeDraft:"Genera ricostruzione",narrativeStop:"Ferma",narrativeWorking:"Lettura del resoconto…",narrativeApplied:"{count} campi scritti nell'editor",narrativeUnchanged:"Il resoconto non dice ancora nulla che la registrazione possa contenere",narrativeStated:"Ciò che l'osservatore ha detto",narrativeDerived:"Ricavato dal resoconto",narrativeAssumed:"Supposto, perché la ricostruzione funzioni — da verificare",narrativeGaps:"Ciò che niente ha potuto stabilire",narrativeErrorCredential:"Nessuna chiave, o una chiave rifiutata — controllala su console.anthropic.com",narrativeErrorRateLimited:"Troppe richieste sul tuo account: aspetta un momento e richiedi",narrativeErrorRefused:"Il resoconto non ha avuto risposta. Riformularlo può aiutare; richiederlo no",narrativeErrorMalformed:"La risposta non era una bozza utilizzabile — vale la pena richiederla ancora una volta",narrativeErrorUnreachable:"Nulla ha risposto: controlla la connessione",narrativeErrorRejected:"Rifiutato: {detail}",observerAge:"Età allora",observerOccupation:"Professione",accountSource:"Resoconto raccolto",accountSourceUnknown:"sconosciuto",accountSourceOnSite:"indagine sul posto",accountSourceInterview:"colloquio di persona",accountSourceTelephone:"per telefono",accountSourceQuestionnaire:"questionario",accountSourceLetter:"l'ha scritto l'osservatore",accountSourcePress:"stampa o radiotelevisione",accountFollowedUp:"Ricontattato",accountUnknown:"sconosciuto",accountYes:"sì",accountNo:"no",questionUnanswered:"Nulla in questa registrazione risponde a una delle domande che una ricostruzione deve risolvere",durationRequired:"L'osservazione ha bisogno di una durata per poter essere riprodotta — indicala, o un'ora di fine, che può essere approssimativa",questionsUnanswered:"{count} delle domande a cui risponde una ricostruzione completa restano qui senza risposta"};export{a as sightingEditorMessages_it};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const a={landing:"aterrizaje",trace:"huella","aerial observation":"observación aérea","project sign":"Proyecto Sign",paralysis:"parálisis",contact:"contacto",occupants:"ocupantes","close encounter":"encuentro cercano",photograph:"fotografía",radar:"radar","electromagnetic effect":"efecto electromagnético"};export{a as tagNames_es};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const a={landing:"atterraggio",trace:"traccia","aerial observation":"osservazione aerea","project sign":"Progetto Sign",paralysis:"paralisi",contact:"contatto",occupants:"occupanti","close encounter":"incontro ravvicinato",photograph:"fotografia",radar:"radar","electromagnetic effect":"effetto elettromagnetico"};export{a as tagNames_it};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e={play:"Reproducir",pause:"Pausa",noDuration:"Sin duración de observación",currentPosition:"Posición actual",duration:"Duración",switchToElapsed:"haz clic para mostrar el tiempo transcurrido",switchToClockTime:"haz clic para mostrar la hora del día",fullscreen:"Pantalla completa",exitFullscreen:"Salir de pantalla completa",showObserverMap:"Ver dónde estaba el observador",hideObserverMap:"Ocultar dónde estaba el observador",mapImageryUnavailable:"Vista aérea no disponible",zoomMapIn:"Acercar",zoomMapOut:"Alejar",fitMap:"Volver al trayecto completo",placeObserverHere:"Poner al observador aquí",showReferences:"Ver las fotos del lugar",hideReferences:"Ocultar las fotos del lugar",referenceOpacity:"Opacidad de las fotos",showMilestones:"Ver los momentos del relato",hideMilestones:"Ocultar los momentos del relato",observerHere:"El observador, aquí",decorHere:"Elemento del decorado",recordingIssues:"{count} problema(s) en esta grabación: puede que no se reproduzca como su autor quería",issueTemplates:{"unknown-key":"{path}: clave desconocida, ignorada","wrong-type":"{path}: se esperaba {expected}, se encontró {found}","not-in-list":"{path}: {found} no es uno de {expected}",defaulted:"{path}: ausente, se usa {expected}",unplaced:"{path}: sin aim (ni bounds), dibujado en el centro de la vista",unsized:"{path}: sin tamaño angular (ni bounds), dibujado de un píxel de ancho","pixels-over-angles":"{path}: bounds repetido sin aim ni angular, así que la forma sigue los píxeles"}};export{e as ufoMessages_es};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e={play:"Riproduci",pause:"Pausa",noDuration:"Nessuna durata di osservazione",currentPosition:"Posizione attuale",duration:"Durata",switchToElapsed:"fai clic per mostrare il tempo trascorso",switchToClockTime:"fai clic per mostrare l'ora del giorno",fullscreen:"Schermo intero",exitFullscreen:"Esci dallo schermo intero",showObserverMap:"Mostra dove si trovava l'osservatore",hideObserverMap:"Nascondi dove si trovava l'osservatore",mapImageryUnavailable:"Vista aerea non disponibile",zoomMapIn:"Ingrandisci",zoomMapOut:"Riduci",fitMap:"Torna all'intero percorso",placeObserverHere:"Metti qui l'osservatore",showReferences:"Mostra le foto del luogo",hideReferences:"Nascondi le foto del luogo",referenceOpacity:"Opacità delle foto",showMilestones:"Mostra i momenti del resoconto",hideMilestones:"Nascondi i momenti del resoconto",observerHere:"L'osservatore, qui",decorHere:"Elemento della scenografia",recordingIssues:"{count} problema/i in questa registrazione: potrebbe non essere riprodotta come voleva il suo autore",issueTemplates:{"unknown-key":"{path}: chiave sconosciuta, ignorata","wrong-type":"{path}: atteso {expected}, trovato {found}","not-in-list":"{path}: {found} non è tra {expected}",defaulted:"{path}: assente, usato {expected}",unplaced:"{path}: nessun aim (né bounds), disegnato al centro della vista",unsized:"{path}: nessuna dimensione angolare (né bounds), disegnato largo un pixel","pixels-over-angles":"{path}: bounds ripetuto senza aim né angular, quindi la forma segue i pixel"}};export{e as ufoMessages_it};
|