1import{a as d}from"./app-F39tXj7K.js";import{push as p}from"./index-CzTpxCJR.js";import{E as n,F as c}from"./src-pages-app-index-CBI1rolp.js";import{r as u}from"./index-okwOQ6Bo.js";import"./index-HYjaO52u.js";import"./router-B4-bvdrn.js";import"./index-DqRvP2h-.js";import"./state-C7hNOihD.js";import"./index-DDlvirwQ.js";import"./MorphSVGPlugin-B-vk8YRp.js";import"./index-B79LEOz5.js";import"./index-B9fViuMG.js";import"./urls-Dlhz5ZoX.js";import"./haptics-EMPnpCo7.js";import"./index-CFenC0TT.js";import"./info-BM0dH7bn.js";import"./init-BMyMGI5-.js";import"./index-D9tXI2hI.js";import"./_commonjsHelpers-CE1G-McA.js";import"./index-FRaZuSR_.js";import"./route-resolver-B7oJAapS.js";import"./datetime-DB4dKE0E.js";import"./deep-links-B_JhV1Lb.js";/* empty css *//* empty css */import"./index-DXT6OdaW.js";import"./index.esm-DVXwz09-.js";import"./index-DtljZvJM.js";import"./base-Cxvbrg-u.js";import"./utils-BZQ5PvAP.js";import"./index-DL1oSN-7.js";import"./card-DoC5SNzl.js";import"./index-Cf6pUz87.js";import"./purify.es-Cz4mVeUR.js";import"./chip-D1B9yXwC.js";import"./nfc-Czb1hNmf.js";import"./ble-protocol-Bz9lw6YH.js";import"./review-BJ2TxDyf.js";import"./index-B2zDUSUP.js";import"./window-CSfQsvbn.js";import"./index-C3r2inTX.js";import"./select-mHgn3TAd.js";let e=null;function l(i){return Number(i?.count||0)>=1}function f(i,t=""){const r=l(i),a=r?"Update Simulation":"Add Simulation";return` 2 <section class="dashboard-sim-editor" data-simulation-editor="1" data-sim-set-id="${String(i.id||"").attr()}"> 3 <div class="dashboard-sim-editor-head"> 4 <div> 5 <p class="dashboard-eyebrow no-margin">${r?"Edit Simulation":"Add Simulation"}</p> 6 <p class="dashboard-muted no-margin">Upload an exported simulation HTML file or paste its HTML below.</p> 7 </div> 8 </div> 9 <div class="dashboard-sim-editor-card"> 10 <label class="dashboard-sim-file-label" for="simulationFile-${String(i.id||"").attr()}">Upload File</label> 11 <input id="simulationFile-${String(i.id||"").attr()}" class="dashboard-sim-file" type="file" data-sim-file accept=".html,text/html"> 12 </div> 13 <div class="dashboard-sim-editor-card"> 14 <label class="dashboard-sim-html-label" for="simulationHtml-${String(i.id||"").attr()}">HTML</label> 15 <textarea id="simulationHtml-${String(i.id||"").attr()}" class="dashboard-sim-html resizable" data-sim-html placeholder="Paste simulation HTML here">${String(t||"").html()}</textarea> 16 </div> 17 <div class="dashboard-sim-editor-actions"> 18 <button class="btn0 gold" type="button" data-click="saveLibrarySimulation"> 19 <i class="fa-solid fa-check"></i> ${a} 20 </button> 21 </div> 22 </section>`}function m(i,{html:t="",error:r=""}={}){const a=n(),o=l(i)?` 23 <div class="dashboard-sim-preview-frame"> 24 <iframe title="${String(i.name||"Simulation").attr()}"></iframe> 25 </div>`:` 26 <div class="dashboard-sim-empty"> 27 <i class="fa-solid fa-file-circle-plus" aria-hidden="true"></i> 28 <p class="no-margin">This simulation does not have content yet.</p> 29 </div>`;a.getViewElement().innerHTML=` 30 <div class="dashboard-sim-preview"> 31 ${o} 32 ${r?`<p class="dashboard-sim-load-error no-margin">${String(r).html()}</p>`:""} 33 ${f(i,t)} 34 </div>`;const s=a.getViewElement().querySelector("iframe");s&&t&&(s.srcdoc=t)}async function h(i){const t=i.closest('[data-simulation-editor="1"]'),r=Number(t?.dataset?.simSetId||0);if(!t||!e||Number(e.id||0)!==r)return;const a=t.querySelector("[data-sim-file]")?.files?.[0];let o=String(t.querySelector("[data-sim-html]")?.value||"").trim();if(a&&(o=String(await a.text()).trim()),!o){p("warning","Add simulation HTML or choose an HTML file.");return}(await d.fetch({action:"dev:addSim",setId:e.id,html:o},{error:!0,success:"Simulation updated."}))?.success&&(e.count=1,e.runtime?.simulation&&delete e.runtime.simulation.html,await c.render(e))}d.click.register({saveLibrarySimulation:h});async function oi(i){const t=n();if(e=i,t.setSet(i),t.setActions(u(i)),!l(i))return m(i),t.setLoading(!1),i;m(i);let r="",a="";try{const o=await d.fetch({action:"simulation:get",id:i.id},{error:!1});o?.success&&o?.html?r=String(o.html):a="Failed to load simulation."}catch{a="Failed to load simulation."}return t.get()?.dataset?.setId!==String(i.id)||(m(i,{html:r,error:a}),t.setLoading(!1)),i}export{oi as render};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.