@mavea/mavea 2.0.0 → 2.0.1
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/CHANGELOG.md +26 -0
- package/README.md +6 -2
- package/bin/mavea.mjs +40 -8
- package/dist/.vite/manifest.json +393 -393
- package/dist/assets/{AnnotationLayer-Cccb12ps.js → AnnotationLayer-BsAcAd59.js} +0 -0
- package/dist/assets/{AppCommandPalette-DdOPNZ0e.js → AppCommandPalette-Cucwjk5N.js} +1 -1
- package/dist/assets/{CheckLogRail-BibJTid0.js → CheckLogRail-vq2lZ7a5.js} +1 -1
- package/dist/assets/ConversationVideoStudio-Df892wqs.js +1 -0
- package/dist/assets/{CourseLessonReader-D29Kix4f.js → CourseLessonReader-DKQimh2S.js} +2 -2
- package/dist/assets/{CoursesApp-DcDsS_ZS.js → CoursesApp-LeqL6dWT.js} +1 -1
- package/dist/assets/{DashPresent-BDWgO9am.js → DashPresent-DZcRdu6R.js} +1 -1
- package/dist/assets/{DashboardDetail-BrnAdWfy.js → DashboardDetail-2XL-J4rS.js} +2 -2
- package/dist/assets/{DashboardLoopGate-NxMcQ4rD.js → DashboardLoopGate-B95S4oKR.js} +2 -2
- package/dist/assets/DashboardLoopRuntime-Wzk85QXi.js +1 -0
- package/dist/assets/{DashboardsApp-DxyMn3x_.js → DashboardsApp-ZGuT2QBi.js} +2 -2
- package/dist/assets/{DeepZoomApp-nNjqoyYE.js → DeepZoomApp-CPOsar8c.js} +1 -1
- package/dist/assets/{DelegatePanel-DN_ZL0j7.js → DelegatePanel-BkTtUMSl.js} +1 -1
- package/dist/assets/{DemoGallery-DrSlMsnu.js → DemoGallery-BcQ9yz2u.js} +1 -1
- package/dist/assets/{DropSelect-GwIXHA5o.js → DropSelect-GKioj__f.js} +1 -1
- package/dist/assets/{ExportModal-DBUjC71U.js → ExportModal-1pWr-c7I.js} +1 -1
- package/dist/assets/{ExtractionPreview-D4M6eXqb.js → ExtractionPreview-TKyfEqwM.js} +1 -1
- package/dist/assets/{FeatureUseNotice-Bda9jr3W.js → FeatureUseNotice-pQe4YHgJ.js} +1 -1
- package/dist/assets/{FlagshipCommandPalette-DAO849RC.js → FlagshipCommandPalette-D1pv3hfZ.js} +1 -1
- package/dist/assets/{FlagshipShowcase-g2x-1c70.js → FlagshipShowcase-CCFFcaL7.js} +1 -1
- package/dist/assets/{FlashcardsApp-BUKzCr65.js → FlashcardsApp-Dbe-8UkQ.js} +1 -1
- package/dist/assets/{GalleryApp-ot_A7ZF-.js → GalleryApp-CCLYcEqn.js} +1 -1
- package/dist/assets/{HonestByDesign-DgZFEpEx.js → HonestByDesign-ByOR1sRQ.js} +1 -1
- package/dist/assets/{HowItWorks-DPFpdeGE.js → HowItWorks-Dllc30ph.js} +1 -1
- package/dist/assets/{LegalApp-C56kWdmK.js → LegalApp-CpblxmmB.js} +1 -1
- package/dist/assets/{LegalMarkdownDocument-BBTHuW_M.js → LegalMarkdownDocument-CmxHsXlb.js} +1 -1
- package/dist/assets/{LegalPageShell-hMA-7JLf.js → LegalPageShell-CDD6D6T_.js} +1 -1
- package/dist/assets/{LibraryOverlay-DSUWcUe4.js → LibraryOverlay-CHmubwG3.js} +1 -1
- package/dist/assets/{LiveApp-B62EMybC.js → LiveApp-CSbjhgzM.js} +4 -4
- package/dist/assets/{LiveSettings-BITIaMoT.js → LiveSettings-B4T6x41n.js} +3 -3
- package/dist/assets/{MindMapViewerDrawer-CKdJtHno.js → MindMapViewerDrawer-BLRBWsTz.js} +1 -1
- package/dist/assets/{MindShape-B3lg_z4X.js → MindShape-CaDuLyGa.js} +1 -1
- package/dist/assets/{PinToDashboard-DpQjBLPa.js → PinToDashboard-ChK2Ou73.js} +1 -1
- package/dist/assets/{PlanReview-CrTbmMAd.js → PlanReview-Dg6VE0xF.js} +1 -1
- package/dist/assets/{PresentationDeck-CfYadu9V.js → PresentationDeck-oEd6TXdN.js} +1 -1
- package/dist/assets/{PrismApp-bRKK_3JA.js → PrismApp-Bju264hL.js} +2 -2
- package/dist/assets/{PrismBriefingPlayer-ChJj6hSS.js → PrismBriefingPlayer-BY0RREUu.js} +2 -2
- package/dist/assets/{PrismOverlay-Pp6ZKmTc.js → PrismOverlay-DOWyOUVW.js} +3 -3
- package/dist/assets/{PrismWorkbench-BCV7r4Oa.js → PrismWorkbench-9RonO2uv.js} +1 -1
- package/dist/assets/{PrivacyApp-A2Bu6LVd.js → PrivacyApp-CBPMqUEA.js} +1 -1
- package/dist/assets/{ReplayCard-B6NYiYzQ.js → ReplayCard-BnX73r9n.js} +2 -2
- package/dist/assets/{ReplayOverlay-BJKtJ-vc.js → ReplayOverlay-B-Ok0mEs.js} +1 -1
- package/dist/assets/{RippleApp-BXt7tenS.js → RippleApp-BnIUhIA0.js} +2 -2
- package/dist/assets/{RippleOverlay-BSxubBwj.js → RippleOverlay-C9W7uVOp.js} +2 -2
- package/dist/assets/{SeeDontRead-0He5hS2C.js → SeeDontRead-ByW9HnOj.js} +1 -1
- package/dist/assets/{ShareModal-xYdZWJxy.js → ShareModal-Mo-dkgAZ.js} +2 -2
- package/dist/assets/{ShipCourse-Dg6kCWyH.js → ShipCourse-CT_F9oJH.js} +1 -1
- package/dist/assets/{SignatureLoop-QPwB2oNN.js → SignatureLoop-DejFTZ-Y.js} +1 -1
- package/dist/assets/{SynthesisApp-DrCq6NDa.js → SynthesisApp-6W04mrMU.js} +2 -2
- package/dist/assets/{SynthesisOverlay-DCa-2Pz_.js → SynthesisOverlay-DDyFFiO8.js} +1 -1
- package/dist/assets/{TermsApp-zcPDYfuh.js → TermsApp-ZzlhrXhd.js} +1 -1
- package/dist/assets/{TopicCanvas-Bw4bMFpe.js → TopicCanvas-CkqP92SC.js} +2 -2
- package/dist/assets/{TourPrism-DbinDupp.js → TourPrism-Cng4h9Ly.js} +1 -1
- package/dist/assets/{TrackerTile-CrT9u1I4.js → TrackerTile-DuUsFQTj.js} +2 -2
- package/dist/assets/{TwoSurfaces-L0CDuyOZ.js → TwoSurfaces-BeYMvVuX.js} +1 -1
- package/dist/assets/{WorldOverlay-BcjqG1BR.js → WorldOverlay-DeVpS8HE.js} +1 -1
- package/dist/assets/{WowFeatures-CwBk4ZMO.js → WowFeatures-D58JgpLg.js} +1 -1
- package/dist/assets/{ZoomDeck-DlnesweX.js → ZoomDeck-CPG2XQhr.js} +1 -1
- package/dist/assets/{backup-685QrAjt.js → backup-CtEvuZoL.js} +1 -1
- package/dist/assets/canvas-Ct-O9Jok.js +1 -0
- package/dist/assets/{capture-DgJLQ_0-.js → capture-CgaD86-q.js} +1 -1
- package/dist/assets/{catalog-Db9GWM6N.js → catalog-DfIYAG3v.js} +1 -1
- package/dist/assets/{confirmAdd-CZ829Mbx.js → confirmAdd-CxWIORcu.js} +1 -1
- package/dist/assets/{dashboardEvents-CiayRLrH.js → dashboardEvents-D1OP4ARB.js} +1 -1
- package/dist/assets/{deepen-DAeHHFiI.js → deepen-BhP9OmH3.js} +1 -1
- package/dist/assets/{effort-jJe4iMIq.js → effort-Bqti44UZ.js} +1 -1
- package/dist/assets/{generateBeats-COflu5Zi.js → generateBeats-CtffeoEa.js} +1 -1
- package/dist/assets/{generateLive-DGwnpIip.js → generateLive-D5M8v38b.js} +1 -1
- package/dist/assets/{index-LiHcEJt_.js → index-CdUH6Eo9.js} +3 -3
- package/dist/assets/{kokoro-DXRj0KQX.js → kokoro-D15HDMcP.js} +1 -1
- package/dist/assets/{liveSchema-DyfND6P2.js → liveSchema-B8Y9HZxd.js} +1 -1
- package/dist/assets/{loader-DgMLGfAC.js → loader-ChcXMM9W.js} +2 -2
- package/dist/assets/{notes-DzIAEESd.js → notes-BG5pIVAJ.js} +1 -1
- package/dist/assets/{perfProbe-ezVn1mOu.js → perfProbe-DaLsQQBb.js} +1 -1
- package/dist/assets/{pin-BPGVDgnq.js → pin-BcKMUOiV.js} +1 -1
- package/dist/assets/{portal-B9DmFo6J.js → portal-BIN_aqvw.js} +1 -1
- package/dist/assets/{prewarm-BgUqAJbF.js → prewarm-CyvSJKv4.js} +1 -1
- package/dist/assets/{quietHours-DyynzDyC.js → quietHours-D1nboK5q.js} +1 -1
- package/dist/assets/{registry-BlujNlQJ.js → registry-BFQQpjO2.js} +1 -1
- package/dist/assets/{registry-D06LKiUk.js → registry-C8FuGbOr.js} +1 -1
- package/dist/assets/{registry-CEV5h2cu.css → registry-CIcGBgtK.css} +1 -1
- package/dist/assets/{registry-BJEvFgoL.js → registry-CcHxIYQN.js} +1 -1
- package/dist/assets/{registry-BT6ydF33.js → registry-DPBJYRmC.js} +1 -1
- package/dist/assets/registry-DdVZGvkL.js +48 -0
- package/dist/assets/{registry-7tKTrzeZ.js → registry-DdgeK4fY.js} +1 -1
- package/dist/assets/{registry-Bl7zAWKt.js → registry-Dt0wu9rC.js} +1 -1
- package/dist/assets/{relate-aQFFr11O.js → relate-CqYpFpsO.js} +1 -1
- package/dist/assets/{replay-CalqEgdW.js → replay-NognvQfM.js} +1 -1
- package/dist/assets/{select-wEtBn9U6.js → select-Dp-OeZfq.js} +1 -1
- package/dist/assets/shard054-CNzJxw2V.js +1 -0
- package/dist/assets/{useDashboardLoop-ifcuVRo-.js → useDashboardLoop-C3iCNS8X.js} +3 -3
- package/dist/assets/{useStudy-CySgE3Cx.js → useStudy-CwCIyiTb.js} +1 -1
- package/dist/assets/{walkSync-DBne70gg.js → walkSync-DC9iE0BX.js} +1 -1
- package/dist/index.html +1 -1
- package/package.json +1 -1
- package/dist/assets/ConversationVideoStudio-DMIPUCcq.js +0 -1
- package/dist/assets/DashboardLoopRuntime-Dsy9u1wa.js +0 -1
- package/dist/assets/canvas-C3O7MEA3.js +0 -1
- package/dist/assets/registry-KRYoVMCh.js +0 -48
- package/dist/assets/shard054-BoC-LNYu.js +0 -1
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./react-BZJXY1be.js";import{t}from"./jsx-runtime-DeHZSEgm.js";import{O as n}from"./index-
|
|
1
|
+
import{t as e}from"./react-BZJXY1be.js";import{t}from"./jsx-runtime-DeHZSEgm.js";import{O as n}from"./index-CdUH6Eo9.js";import{t as r}from"./registry-DGNSqTxE.js";import{CommandPalette as i}from"./CommandPalette-Bs6tpdZl.js";import{t as a}from"./demoPaletteItems-NPCSaSU6.js";var o=e(),s=t();function c({onClose:e,startTour:t,watchInLive:c,enterLive:l}){let u=(0,o.useMemo)(()=>a(r,{direct:{dashboards:()=>{window.location.hash=`#/dashboards`},how:t},watchInLive:c,enterLive:l}).map(e=>({...e,watch:e.feature.id===`how`?t:e.watch,preload:e.feature.id===`dashboards`?()=>n(`#/dashboards`)??Promise.resolve():()=>n(`#/live`)??Promise.resolve()})),[l,t,c]);return(0,s.jsx)(i,{items:u,surface:`demo`,onClose:e})}export{c as AppCommandPalette};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./react-BZJXY1be.js";import{t}from"./compiler-runtime-qQQXpJgv.js";import{t as n}from"./jsx-runtime-DeHZSEgm.js";import{o as r}from"./ledger-Cv0LBflx.js";import{t as i}from"./useLedger-1WVXef68.js";import{c as a,l as o}from"./dashboardEvents-
|
|
1
|
+
import{t as e}from"./react-BZJXY1be.js";import{t}from"./compiler-runtime-qQQXpJgv.js";import{t as n}from"./jsx-runtime-DeHZSEgm.js";import{o as r}from"./ledger-Cv0LBflx.js";import{t as i}from"./useLedger-1WVXef68.js";import{c as a,l as o}from"./dashboardEvents-D1OP4ARB.js";import{n as s,t as c}from"./checkLogModel-BMtruriG.js";var l=e(),u=t(),d=n();function f(e){return e.domains?.length?e.domains.join(`, `):e.manual?`MANUAL`:`MAVÉA`}function p(e){let t=(0,u.c)(34),{entry:n}=e,r;t[0]===n?r=t[1]:(r=c(n),t[0]=n,t[1]=r);let i=r,l=n.kind===`savings`?n.suggestion:void 0,p;t[2]===n.at?p=t[3]:(p=s(n.at),t[2]=n.at,t[3]=p);let m;t[4]===p?m=t[5]:(m=(0,d.jsx)(`span`,{className:`dash-log-time`,children:p}),t[4]=p,t[5]=m);let h;t[6]===i?h=t[7]:(h=i&&(0,d.jsx)(`span`,{className:`dash-log-chip dash-log-chip--${i.tone}`,children:i.label}),t[6]=i,t[7]=h);let g;t[8]!==m||t[9]!==h?(g=(0,d.jsxs)(`div`,{className:`dash-log-row-top`,children:[m,h]}),t[8]=m,t[9]=h,t[10]=g):g=t[10];let _;t[11]===n.text?_=t[12]:(_=(0,d.jsx)(`p`,{className:`dash-log-text`,children:n.text}),t[11]=n.text,t[12]=_);let v;t[13]!==n.id||t[14]!==l?(v=l&&l.state===`open`&&(0,d.jsxs)(`div`,{className:`dash-log-suggestion`,children:[(0,d.jsxs)(`button`,{type:`button`,className:`dash-log-apply-btn`,onClick:()=>a(n.id,l.dashboardId,l.to),children:[`Apply — save ~`,l.savesPerMonth,` searches/mo`]}),(0,d.jsx)(`button`,{type:`button`,className:`dash-log-dismiss-btn`,onClick:()=>o(n.id),children:`Dismiss`})]}),t[13]=n.id,t[14]=l,t[15]=v):v=t[15];let y;t[16]===l?y=t[17]:(y=l&&l.state===`applied`&&(0,d.jsx)(`div`,{className:`dash-log-suggestion`,children:(0,d.jsx)(`span`,{className:`dash-log-applied`,children:`Applied ✓`})}),t[16]=l,t[17]=y);let b;t[18]===n?b=t[19]:(b=f(n),t[18]=n,t[19]=b);let x;t[20]===b?x=t[21]:(x=(0,d.jsx)(`span`,{className:`dash-log-source`,children:b}),t[20]=b,t[21]=x);let S;t[22]===Symbol.for(`react.memo_cache_sentinel`)?(S=(0,d.jsx)(`span`,{className:`dash-log-dot`,"aria-hidden":`true`}),t[22]=S):S=t[22];let C=n.searches===1?`1 SEARCH`:`NO SEARCH SPENT`,w;t[23]===C?w=t[24]:(w=(0,d.jsx)(`span`,{className:`dash-log-cost`,children:C}),t[23]=C,t[24]=w);let T;t[25]!==x||t[26]!==w?(T=(0,d.jsxs)(`div`,{className:`dash-log-foot`,children:[x,S,w]}),t[25]=x,t[26]=w,t[27]=T):T=t[27];let E;return t[28]!==T||t[29]!==g||t[30]!==_||t[31]!==v||t[32]!==y?(E=(0,d.jsxs)(`li`,{className:`dash-log-row`,children:[g,_,v,y,T]}),t[28]=T,t[29]=g,t[30]=_,t[31]=v,t[32]=y,t[33]=E):E=t[33],E}var m=100;function h({dashboardId:e,now:t,limit:n=m}){let a=i(),o=(0,l.useMemo)(()=>e?a.filter(t=>t.dashboardIds.includes(e)):a,[a,e]),s=(0,l.useMemo)(()=>r(o,t),[o,t]),c=(0,l.useMemo)(()=>o.slice(0,Math.max(0,n)),[o,n]);return(0,d.jsxs)(`section`,{className:`card dash-log-card`,"aria-label":`Check log`,children:[(0,d.jsxs)(`div`,{className:`card-eyebrow dash-log-head`,children:[e?`CHECK LOG · `:``,`TODAY · `,s,` SEARCHES USED`]}),c.length===0?(0,d.jsx)(`p`,{className:`dash-log-empty`,children:`Your check log will appear here.`}):(0,d.jsx)(`ul`,{className:`dash-log-list`,role:`log`,"aria-live":`polite`,"aria-relevant":`additions`,children:c.map(e=>(0,d.jsx)(p,{entry:e},e.id))})]})}export{h as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as e}from"./react-BZJXY1be.js";import{t}from"./compiler-runtime-qQQXpJgv.js";import{t as n}from"./jsx-runtime-DeHZSEgm.js";import{F as r,R as i,f as a}from"./index-CdUH6Eo9.js";import{n as o}from"./icons-gLFQTv74.js";import{t as s}from"./TopicCanvas-CkqP92SC.js";import{t as c}from"./motion-BY_Egaxm.js";import{t as l}from"./toast-BBNs2h3L.js";import{t as u}from"./Presence-UqXfH4Y-.js";import{a as d,c as f,i as p,l as m,r as h,t as g}from"./capture-CgaD86-q.js";import{n as ee,r as _,t as v}from"./share--tpc1nLE.js";import{t as y}from"./FeatureUseNotice-pQe4YHgJ.js";import{r as b}from"./history-D2EH2X6D.js";import{t as x}from"./replay-NognvQfM.js";import"./canvas-Ct-O9Jok.js";import{t as S}from"./AnnotationLayer-BsAcAd59.js";var C=e(),w=t(),T=18e4,E=650,D=350,O=700;function k(e){let t=[e.spoken??e.narration,...e.tour.map(e=>e.saySpoken??e.say??``)].reduce((e,t)=>e+t.trim().length,0);return 1e3+Math.max(1800,t/14*1e3)}function te(e){return e.reduce((e,t)=>e+k(t),0)}function ne(e){let t=k(e),n=[e.spoken??e.narration,...e.tour.map(e=>e.saySpoken??e.say??``)].map(e=>e.trim()).filter(Boolean),r=n.reduce((e,t)=>e+t.length,0),i=t-E-D,a=E;return{durationMs:t,spans:n.map(e=>{let t=Math.round(a);return a+=r?i*e.length/r:0,{text:e,startMs:t,endMs:Math.round(a)}})}}function re(e){for(let t=e.length-1;t>=0;t--){let n=e[t];if(n?.topicShift===!0||n?.topicShift===void 0&&n?.mode===`replace`)return t}return 0}function A(e,t,n){let r=n.spans[e+1];return r?r.startMs:E+Math.max(0,n.durationMs-E-D)*(e+1)/(t+1)}function j(e,t,n){let r=[],i=0;return e.forEach((e,a)=>{let o=t[a];if(!o)return;let s=x(e),c=s.cues.map((e,t)=>A(t,s.cues.length,o)),l=[0,E,...c,o.durationMs].map(e=>Math.max(0,Math.min(o.durationMs,e))).filter((e,t,n)=>t===0||e>n[t-1]),u=[];for(let t=0;t<l.length-1;t++){let d=l[t],f=l[t+1],p=c.findIndex(e=>e===d),m=p>=0?s.cues[p]:void 0;m&&n.penMarks&&(u=[...u,...m.marks.map((t,n)=>({spot:m.spot,line:m.say,mark:t,delayMs:n*240,...t.kind===`connect`&&typeof t.onIndex==`number`?{toSpot:e.spec.blocks[t.onIndex]?.id}:{}}))]);let h=[...o.spans].reverse().find(e=>e.startMs<=d&&e.endMs>d);r.push({frame:e,turnIndex:a,startMs:i+d,durationMs:Math.max(1,f-d),spot:n.spotlights?m?.spot??null:null,caption:n.captions?h?.text??null:null,ink:u,questionOnly:t===0})}i+=o.durationMs}),M(r)}function M(e){let t=e[e.length-1];if(!t?.spot)return e;if(t.durationMs<=O*2)return e[e.length-1]={...t,spot:null},e;let n=t.durationMs-O;return e[e.length-1]={...t,durationMs:n},e.push({...t,startMs:t.startMs+n,durationMs:O,spot:null}),e}var N=24e3,P=.65,F=.18,I=.35,L=.89,R=6,z=class extends Error{turnIndex;question;constructor(e,t){super(`Narration is unavailable for “${t||`turn ${e+1}`}”.`),this.turnIndex=e,this.question=t,this.name=`RequiredConversationAudioError`}};function B(e){return[e.spoken??e.narration,...e.tour.map(e=>e.saySpoken??e.say??``)].map(e=>e.trim()).filter(Boolean)}function V(e){return e.trim().replace(/\s+/g,` `)}function H(e,t){let n=B(e);return n.length>0&&t.pcm.length>0&&t.spans.length===n.length&&n.every((e,n)=>V(t.spans[n]?.text??``)===V(e)&&t.spans[n].t1>t.spans[n].t0)}function U(e){let t=e.spans.map(e=>({text:e.text,startMs:Math.round((P+e.t0)*1e3),endMs:Math.round((P+e.t1)*1e3)})),n=new Float32Array(e.pcm.length);for(let t=0;t<e.pcm.length;t++)n[t]=e.pcm[t]/32768;return{lines:[{text:t.map(e=>e.text).join(` `),pcm:n,rate:e.sampleRate}],durationS:P+e.duration+I,spans:t}}async function W(e,t,n,r){let i=B(e);if(!i.length)throw new z(t,e.question);let a=[];for(let o of i){if(n?.aborted)throw new DOMException(`Cancelled`,`AbortError`);let i=await f(o,n);if(n?.aborted)throw new DOMException(`Cancelled`,`AbortError`);if(!i.length)throw new z(t,e.question);a.push({text:o,pcm:i,rate:N}),r?.(i.length/N+F)}let o=[],s=P;for(let e of a){let t=s;s+=e.pcm.length/e.rate,o.push({text:e.text,startMs:Math.round(t*1e3),endMs:Math.round(s*1e3)}),s+=F}return{lines:a,durationS:s+I,spans:o}}async function ie(e,t,n,i){let a=r();if(a===null||typeof OfflineAudioContext>`u`)throw Error(`audio-encoding-unavailable`);let o=e.map(e=>{let n=t(e);return n&&H(e,n)?U(n):null}),s=o.reduce((e,t)=>e+(t?.durationS??1),0),c=e.reduce((e,t,n)=>e+(o[n]?0:B(t).length),0),l=0,u=new AbortController,d=()=>u.abort();n?.addEventListener(`abort`,d,{once:!0}),n?.aborted&&u.abort();let f=e=>{if(s+=e,i?.(++l,c),s*1e3>18e4)throw u.abort(),Error(`conversation-too-long`)},p;try{p=await m(e,2,(e,t)=>{let n=o[t];return n?Promise.resolve(n):W(e,t,u.signal,f)})}finally{n?.removeEventListener(`abort`,d)}let h=p.reduce((e,t)=>e+t.durationS,0);if(h*1e3>18e4)throw Error(`conversation-too-long`);let g=0;for(let e of p)for(let t of e.lines)for(let e=0;e<t.pcm.length;e++)g=Math.max(g,Math.abs(t.pcm[e]));let ee=g>0?Math.min(R,L/g):1,_=new OfflineAudioContext(1,Math.ceil(h*a),a),v=_.createGain();v.gain.value=ee,v.connect(_.destination);let y=0;for(let e of p){let t=y+P;for(let n of e.lines){let e=_.createBuffer(1,n.pcm.length,n.rate);e.getChannelData(0).set(n.pcm);let r=_.createBufferSource();r.buffer=e,r.connect(v),r.start(t),t+=n.pcm.length/n.rate+F}y+=e.durationS}return{buffer:await _.startRendering(),turns:p.map(e=>({durationMs:Math.round(e.durationS*1e3),spans:e.spans})),durationMs:Math.round(h*1e3)}}var ae={"1080p":{width:1920,height:1080},"720p":{width:1280,height:720}};function G(e,t,n=a()){let{bitrate:r}=g(e,n);return t===`720p`?Math.round(r*.55):r}async function K(e){document.visibilityState===`hidden`&&await new Promise((t,n)=>{let r=()=>a(new DOMException(`Cancelled`,`AbortError`)),i=()=>{document.visibilityState!==`hidden`&&a()},a=a=>{document.removeEventListener(`visibilitychange`,i),e.removeEventListener(`abort`,r),a?n(a):t()};document.addEventListener(`visibilitychange`,i),e.addEventListener(`abort`,r,{once:!0})})}function oe(){return typeof document<`u`&&(typeof VideoEncoder<`u`&&typeof AudioEncoder<`u`||d()!==null)}var q={selector:`.cvs-presence`,bleed:96};async function se(e){let t=a(),n=ae[e.size],r=e.scenes[0];r&&await e.applyScene(r,0);let i=getComputedStyle(e.el).backgroundColor,o=await p({el:e.el,audioBuffer:e.audioBuffer,aspect:`16:9`,dims:{w:n.width,h:n.height},quality:e.quality,bitrate:G(e.quality,e.size,t),background:i&&i!==`rgba(0, 0, 0, 0)`?i:void 0,maxDurationMs:e.durationMs,liveLayer:q,onFrame:e.onFrame,cues:e.scenes.slice(1).map((t,n)=>({atMs:t.startMs,apply:async()=>{let r=n+1;await e.applyScene(t,r),e.onProgress?.({phase:`render`,completed:r+1,total:e.scenes.length})}})),gate:async()=>{if(e.signal.aborted)throw new DOMException(`Cancelled`,`AbortError`);await K(e.signal)}});try{await o.done(),e.onProgress?.({phase:`encode`,completed:0,total:1});let t=await o.stop();return e.onProgress?.({phase:`ready`,completed:1,total:1}),{...t,...n}}catch(e){throw o.cancel(),e}}var J=n();function ce({scene:e,options:t,frameRef:n,glide:r=!0}){let a=(0,C.useRef)(null),o=(0,C.useRef)(null),c=(0,C.useRef)(null),l=i(),d=(0,C.useRef)(null),[f,p]=(0,C.useState)(0);(0,C.useEffect)(()=>(n?.(a.current),()=>n?.(null)),[n]),(0,C.useEffect)(()=>{let t=o.current,n=c.current;if(!t||!n)return;let r=d.current!==e?.turnIndex;d.current=e?.turnIndex??null;let i=r?0:null;if(e?.spot){let r=[...t.querySelectorAll(`[data-spot-id]`)].find(t=>t.dataset.spotId===e.spot);if(r){let e=0;for(let n=r;n&&n!==t;n=n.offsetParent)e+=n.offsetTop;i=Math.max(0,Math.min(e-(t.clientHeight-r.offsetHeight)/2,n.offsetHeight-t.clientHeight))}}if(i===null)return;n.style.setProperty(`--cvs-shift`,`${-i}px`);let a=window.setTimeout(()=>p(e=>e+1),420);return()=>window.clearTimeout(a)},[e?.spot,e?.turnIndex]);let m=e?.questionOnly??!1,h=e?e.frame.question||e.frame.spec.title:``;return(0,J.jsx)(`div`,{ref:a,className:`cvs-stage`,"data-aspect":`16:9`,"data-question-only":m,"data-captioned":t.captions,children:e?(0,J.jsxs)(J.Fragment,{children:[(0,J.jsxs)(`header`,{className:`cvs-header`,children:[(0,J.jsxs)(`div`,{className:`cvs-brand`,children:[(0,J.jsx)(`span`,{className:`cvs-brand-dot`}),` Mavéa conversation`]}),(0,J.jsxs)(`div`,{className:`cvs-turn`,children:[`Turn `,e.turnIndex+1]}),(0,J.jsx)(`h2`,{children:h})]}),m?(0,J.jsxs)(`div`,{className:`cvs-ask`,children:[(0,J.jsx)(`span`,{className:`cvs-ask-eyebrow`,children:`Asked`}),(0,J.jsx)(`p`,{className:`cvs-ask-line`,children:h})]}):(0,J.jsxs)(`div`,{ref:o,className:`cvs-canvas`,children:[(0,J.jsx)(`div`,{className:`topic-wrap`,ref:c,"data-glide":r,children:(0,J.jsx)(s,{data:e.frame.spec,spot:e.spot,built:{},onProve:()=>{}})},e.turnIndex),t.penMarks&&(0,J.jsx)(S,{spots:e.ink,within:a.current,revision:f})]}),t.captions&&e.caption&&(0,J.jsx)(`div`,{className:`cvs-caption`,children:e.caption}),t.presence&&(0,J.jsx)(`div`,{className:`cvs-presence`,ref:l,children:(0,J.jsx)(u,{state:m?`thinking`:`speaking`})})]}):(0,J.jsx)(`div`,{className:`cvs-empty`,children:`Choose a turn to preview it.`})})}var le=[{id:`1080p`,label:`1080p`,hint:`1920×1080`},{id:`720p`,label:`720p`,hint:`1280×720`}],ue=[{id:`balanced`,label:`Balanced`},{id:`high`,label:`High`},{id:`ultra`,label:`Ultra`}],de=650,fe=640,pe=360;function me(e=300){return Promise.race([(async()=>{await new Promise(e=>requestAnimationFrame(()=>e())),await new Promise(e=>requestAnimationFrame(()=>e()))})(),new Promise(t=>window.setTimeout(t,e))])}var he=[{key:`captions`,label:`Captions`},{key:`spotlights`,label:`Spotlights`},{key:`penMarks`,label:`Pen marks`},{key:`presence`,label:`Mavéa`},{key:`audio`,label:`Audio`}];function ge(e){let t=Math.max(0,Math.round(e/1e3));return`${Math.floor(t/60)}:${String(t%60).padStart(2,`0`)}`}function _e(e){let t=(0,w.c)(12),{width:n,height:r,children:i}=e,a=(0,C.useRef)(null),[o,s]=(0,C.useState)(0),c,l;t[0]!==r||t[1]!==n?(c=()=>{let e=a.current;if(!e)return;let t=()=>{let{width:t,height:i}=e.getBoundingClientRect();!t||!i||s(Math.min(t/n,i/r))};if(t(),typeof ResizeObserver>`u`)return;let i=new ResizeObserver(t);return i.observe(e),()=>i.disconnect()},l=[n,r],t[0]=r,t[1]=n,t[2]=c,t[3]=l):(c=t[2],l=t[3]),(0,C.useLayoutEffect)(c,l);let u=`scale(${o})`,d=o?void 0:`hidden`,f;t[4]!==r||t[5]!==u||t[6]!==d||t[7]!==n?(f={width:n,height:r,transform:u,visibility:d},t[4]=r,t[5]=u,t[6]=d,t[7]=n,t[8]=f):f=t[8];let p;return t[9]!==i||t[10]!==f?(p=(0,J.jsx)(`div`,{ref:a,className:`cvs-viewport`,children:(0,J.jsx)(`div`,{className:`cvs-scaler`,style:f,children:i})}),t[9]=i,t[10]=f,t[11]=p):p=t[11],p}function ve(e){return e.map(e=>{let t=k(e);return{durationMs:t,spans:[{text:e.narration,startMs:650,endMs:Math.max(651,t-350)}]}})}function Y({frames:e,retainedAudio:t,onShared:n,onBusyChange:r}){let i=(0,C.useMemo)(()=>e.filter(e=>!!((e.spoken??e.narration).trim()||e.tour.some(e=>(e.saySpoken??e.say)?.trim()))),[e]),[a,s]=(0,C.useState)(()=>new Set(i.length?[b(i[i.length-1])]:[])),u=(0,C.useMemo)(()=>new Set(i.map(b)),[i]),[d,f]=(0,C.useState)({size:`1080p`,quality:`high`,captions:!0,spotlights:!0,penMarks:!0,presence:!0,audio:!0}),p=(0,C.useMemo)(()=>e.filter(e=>a.has(b(e))),[e,a]),m=(0,C.useMemo)(()=>te(p),[p]),g=(0,C.useMemo)(()=>j(p,ve(p),d),[p,d]),[x,S]=(0,C.useState)(()=>g[0]??null),[w,E]=(0,C.useState)(null),[D,O]=(0,C.useState)(null),[k,A]=(0,C.useState)(null),[M,N]=(0,C.useState)(!1),[P,F]=(0,C.useState)(!1),[I,L]=(0,C.useState)(0),[R,B]=(0,C.useState)(!1),[V,H]=(0,C.useState)(!1),U=(0,C.useRef)(null),W=(0,C.useRef)(null),G=(0,C.useRef)(null),K=(0,C.useRef)(null),q=(0,C.useRef)(null),Y=w!==null&&w.phase!==`ready`,ye=Y&&w?.phase!==`audio`,be=oe(),X=(0,C.useMemo)(()=>c(),[]),Z=P&&!Y&&!X&&g.length>1;(0,C.useEffect)(()=>r?.(Y),[Y,r]),(0,C.useEffect)(()=>{if(!Y){H(!1);return}let e=()=>H(document.visibilityState===`hidden`);return e(),document.addEventListener(`visibilitychange`,e),()=>document.removeEventListener(`visibilitychange`,e)},[Y]),(0,C.useEffect)(()=>F(!0),[]),(0,C.useEffect)(()=>{let e=X?g.findIndex(e=>!e.questionOnly):0;L(Math.max(0,e)),B(!1)},[g,X]),(0,C.useEffect)(()=>{Y||S(g[I]??g[0]??null)},[g,I,Y]),(0,C.useEffect)(()=>{if(!Z||R)return;let e=g[I]??g[0],t=window.setTimeout(()=>L(e=>(e+1)%g.length),Math.max(de,e?.durationMs??de));return()=>window.clearTimeout(t)},[Z,R,g,I]),(0,C.useEffect)(()=>()=>{U.current?.abort(),W.current?.dispose?.(),W.current=null,r?.(!1)},[r]),(0,C.useEffect)(()=>{let e=K.current;if(!e)return;let t=()=>{e.dataset.overflowing=String(e.scrollHeight>e.clientHeight+1)};if(t(),typeof ResizeObserver>`u`)return;let n=new ResizeObserver(t);return n.observe(e),()=>n.disconnect()},[e]);let xe=(0,C.useCallback)(async e=>{S(e),await me()},[]),Se=(0,C.useCallback)(e=>{let t=q.current,n=t?.getContext(`2d`);!t||!n||n.drawImage(e,0,0,t.width,t.height)},[]),Q=(0,C.useCallback)(()=>{W.current?.dispose?.(),W.current=null,O(null),E(null)},[]),Ce=(0,C.useCallback)(async()=>{if(!p.length||m>18e4)return;let e=new AbortController;U.current=e,Q(),A(null),E(d.audio?{phase:`audio`,completed:0,total:p.length}:{phase:`render`,completed:1,total:1}),N(!0);try{await me();let n=G.current;if(!n)throw Error(`capture-stage-unavailable`);let r=d.audio?await ie(p,t??(()=>null),e.signal):null,i=r?r.turns:p.map(ne),a=j(p,i,d);if(!a.length)throw Error(`empty-video`);E({phase:`render`,completed:1,total:a.length});let o=await se({el:n,scenes:a,audioBuffer:r?.buffer??null,durationMs:r?.durationMs??i.reduce((e,t)=>e+t.durationMs,0),size:d.size,quality:d.quality,signal:e.signal,applyScene:xe,onProgress:E,onFrame:Se});W.current=o,O(o),E(null)}catch(e){if(e?.name===`AbortError`){E(null);return}let t=e instanceof z?`${e.message} Check the local voice service, then retry.`:e instanceof Error&&e.message===`conversation-too-long`?`The voiced result is over three minutes. Remove a turn and retry.`:e instanceof Error&&e.message===`open-codec-unavailable`?`This browser cannot encode an approved open-media format (AV1/VP9/VP8 with Opus). Try the current Chrome, Edge, or Firefox.`:`The video could not be created in this browser. Your conversation is unchanged.`;A(t),E(null)}finally{N(!1)}},[xe,Q,m,d,t,p,Se]),$=e=>{Y||(s(new Set(e.map(b))),Q(),A(null))},we=ae[d.size],Te=v(_(p[0]?.spec.title||p[0]?.question,new Date),D?.type??``),Ee=w?w.phase===`audio`?`Preparing required narration…`:w.phase===`render`?`Rendering scene ${w.completed} of ${w.total}…`:w.phase===`encode`?`Finishing the file…`:`Video ready`:``,De=m>T;return(0,J.jsxs)(J.Fragment,{children:[(0,J.jsxs)(`div`,{className:`shm-panel cvs-panel`,children:[(0,J.jsx)(`div`,{className:`shm-eyebrow`,children:`▷ CONVERSATION VIDEO`}),(0,J.jsx)(`div`,{className:`cvs-title`,children:`Share this conversation.`}),(0,J.jsx)(`div`,{className:`shm-sub`,children:`Pick the turns worth sending. Mavéa narrates every one unless Audio is off. The video renders locally in this browser and is never uploaded.`}),(0,J.jsx)(y,{kind:`publishing`,from:`live`}),(0,J.jsxs)(`div`,{className:`cvs-presets`,children:[(0,J.jsx)(`button`,{type:`button`,onClick:()=>$(i.slice(-1)),disabled:Y,children:`Current turn`}),(0,J.jsx)(`button`,{type:`button`,onClick:()=>$(e.slice(re(e)).filter(e=>u.has(b(e)))),disabled:Y,children:`Current topic`}),(0,J.jsx)(`button`,{type:`button`,onClick:()=>$(i),disabled:Y,children:`All turns`})]}),(0,J.jsx)(`div`,{className:`cvs-turns`,role:`group`,"aria-label":`Conversation turns`,ref:K,children:e.map((e,t)=>{let n=b(e),r=u.has(n);return(0,J.jsxs)(`label`,{className:`cvs-turn-card`,"data-selected":a.has(n),children:[(0,J.jsx)(`input`,{type:`checkbox`,checked:a.has(n),disabled:Y||!r,onChange:()=>{s(e=>{let t=new Set(e);return t.has(n)?t.delete(n):t.add(n),t}),Q()}}),(0,J.jsx)(`span`,{className:`cvs-thumb`,"aria-hidden":`true`,children:e.spec.blocks.length}),(0,J.jsxs)(`span`,{className:`cvs-turn-copy`,children:[(0,J.jsx)(`strong`,{children:e.question||e.spec.title}),(0,J.jsxs)(`small`,{children:[new Date(e.at).toLocaleTimeString([],{hour:`numeric`,minute:`2-digit`}),r?``:` · no narration`]})]}),(0,J.jsx)(`span`,{className:`cvs-order`,children:t+1})]},n)})}),(0,J.jsxs)(`div`,{className:`shm-group`,children:[(0,J.jsx)(`div`,{className:`shm-label`,children:`Size`}),(0,J.jsx)(`div`,{className:`shm-chips`,children:le.map(e=>(0,J.jsx)(`button`,{type:`button`,className:`shm-chip`,"data-active":d.size===e.id,"aria-pressed":d.size===e.id,disabled:Y,onClick:()=>{Q(),f(t=>({...t,size:e.id}))},title:e.hint,children:e.label},e.id))})]}),(0,J.jsxs)(`div`,{className:`shm-group`,children:[(0,J.jsx)(`div`,{className:`shm-label`,children:`Quality`}),(0,J.jsx)(`div`,{className:`shm-chips`,children:ue.map(e=>(0,J.jsx)(`button`,{type:`button`,className:`shm-chip`,"data-active":d.quality===e.id,"aria-pressed":d.quality===e.id,disabled:Y,onClick:()=>{Q(),f(t=>({...t,quality:e.id}))},title:h(e.id),children:e.label},e.id))})]}),(0,J.jsxs)(`div`,{className:`shm-group`,children:[(0,J.jsx)(`div`,{className:`shm-label`,children:`Include`}),(0,J.jsx)(`div`,{className:`shm-chips`,children:he.map(({key:e,label:t})=>(0,J.jsx)(`button`,{type:`button`,className:`shm-chip`,"data-active":d[e],"aria-pressed":d[e],disabled:Y,onClick:()=>{Q(),f(t=>({...t,[e]:!t[e]}))},children:t},e))})]}),(0,J.jsxs)(`div`,{className:`cvs-meter`,"data-over":De,children:[(0,J.jsxs)(`span`,{children:[ge(m),` selected`]}),(0,J.jsx)(`span`,{children:`3:00 max`}),(0,J.jsx)(`i`,{style:{width:`${Math.min(100,m/T*100)}%`}})]}),k&&(0,J.jsx)(`div`,{className:`cvs-error`,role:`alert`,children:k}),!be&&(0,J.jsx)(`div`,{className:`cvs-error`,role:`alert`,children:`Video export needs an approved open video codec (AV1/VP9/VP8) and Opus audio. Try the current Chrome, Edge, or Firefox.`}),w&&(0,J.jsxs)(`div`,{className:`cvs-progress`,role:`status`,children:[Ee,V&&(0,J.jsx)(`em`,{className:`cvs-paused`,children:`Paused while this window is in the background — come back to it and the render picks up where it left off.`})]}),D&&(0,J.jsxs)(`div`,{className:`cvs-result`,role:`status`,children:[(0,J.jsxs)(`strong`,{children:[`Ready · `,D.width,`×`,D.height]}),(0,J.jsxs)(`span`,{children:[ge(D.durationMs),` · `,(D.blob.size/1048576).toFixed(1),` MB`]})]}),(0,J.jsx)(`div`,{className:`shm-actions`,children:D?(0,J.jsx)(`button`,{type:`button`,className:`shm-btn shm-btn-primary`,onClick:()=>{W.current=null,ee(D.blob,Te,()=>void D.dispose?.()),O(null),l(`Saved to your downloads`,`good`),n?.()},children:`↓ Download video`}):Y?(0,J.jsx)(`button`,{type:`button`,className:`shm-btn`,onClick:()=>U.current?.abort(),children:`Cancel`}):(0,J.jsx)(`button`,{type:`button`,className:`shm-btn shm-btn-primary`,disabled:!p.length||De||!be,onClick:()=>void Ce(),children:k?`Retry ${d.size} video`:`Create ${d.size} video`})})]}),(0,J.jsx)(`div`,{className:`shm-stage`,children:(0,J.jsxs)(`div`,{className:`shm-frame`,"data-aspect":`16:9`,children:[ye?(0,J.jsx)(`canvas`,{ref:q,className:`cvs-monitor`,width:fe,height:pe,role:`img`,"aria-label":`The frames being rendered`}):P?(0,J.jsx)(_e,{width:we.width,height:we.height,children:(0,J.jsx)(ce,{scene:x,options:d,glide:!X})}):(0,J.jsx)(`div`,{className:`cvs-stage`,"data-aspect":`16:9`,children:(0,J.jsx)(`div`,{className:`cvs-empty`,role:`status`,children:`Preparing preview…`})}),Z&&(0,J.jsx)(`div`,{className:`shm-controls`,children:(0,J.jsx)(`button`,{type:`button`,className:`shm-sound`,"data-on":R,onClick:()=>B(e=>!e),"aria-pressed":R,title:R?`Play preview`:`Pause preview`,children:R?(0,J.jsx)(o.play,{style:{width:17,height:17}}):(0,J.jsx)(o.pause,{style:{width:17,height:17}})})})]})}),M&&(0,J.jsx)(`div`,{className:`cvs-capture-host`,"data-size":d.size,"aria-hidden":`true`,inert:!0,children:(0,J.jsx)(ce,{scene:x,options:d,frameRef:e=>{G.current=e}})})]})}export{Y as ConversationVideoStudio};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/TopicCanvas-
|
|
2
|
-
import{t as e}from"./react-BZJXY1be.js";import{t}from"./compiler-runtime-qQQXpJgv.js";import{t as n}from"./jsx-runtime-DeHZSEgm.js";import{n as r,t as i}from"./preload-helper-CiWYd9n-.js";import{t as a}from"./preloadableLazy-MIX1ApBW.js";import{n as o,t as s}from"./theme-D5D55hZi.js";import{E as c}from"./index-
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/TopicCanvas-CkqP92SC.js","assets/rolldown-runtime-DkW27tQK.js","assets/react-BZJXY1be.js","assets/compiler-runtime-qQQXpJgv.js","assets/jsx-runtime-DeHZSEgm.js","assets/preload-helper-CiWYd9n-.js","assets/index-CdUH6Eo9.js","assets/useInView-DsTvv7L_.js","assets/coreIcons-DDTChE1H.js","assets/preloadableLazy-MIX1ApBW.js","assets/cachedImport-DW0gP14h.js","assets/lazyRetry-D50B1UMY.js","assets/theme-D5D55hZi.js","assets/index-BIUYTk1W.css","assets/icons-gLFQTv74.js","assets/loader-ChcXMM9W.js","assets/FallbackCard-ap_4wOfj.js","assets/blockLabel-FogyzEQY.js","assets/FallbackCard-D_6ps1xA.css","assets/useFocusTrap-CJmpNZv2.js","assets/motion-BY_Egaxm.js","assets/useSpatialCanvas-CfmZOXXP.js","assets/CanvasSkeleton-BmGjJHUQ.js","assets/CanvasSkeleton-DYASkTjW.css","assets/richText-BkxJhl9N.js","assets/toast-BBNs2h3L.js","assets/format-q0LwBjID.js","assets/safeImageUrl-BINWXOTz.js","assets/useValidatedImage-BQi2c66o.js","assets/deepenStore-BWLLzLCY.js","assets/catalog-BHjl-1uH.js","assets/http-Lar_UMKb.js","assets/lib-u95BsX_B.js","assets/BlockEmpty-B82uCse8.js","assets/motion-DxHSlPN6.js","assets/lib-DP9Kuxqk.css","assets/TopicCanvas-DWTm611H.css","assets/generateLive-D5M8v38b.js","assets/history-D2EH2X6D.js","assets/catalog-DfIYAG3v.js","assets/facts-BUGuVUIc.js","assets/blockTypes-DUDdP3pB.js","assets/streamParse-BX0bAppQ.js","assets/liveSchema-B8Y9HZxd.js","assets/spokenText-C88IQJ0M.js","assets/sourceHost-BV3t2XDb.js","assets/annotations-CftUUB13.js","assets/screen-DFWKge3-.js","assets/attachments-BW-vki-E.js","assets/providers-0DthJW_I.js","assets/info-CiqHR5cs.js","assets/route-CMdTFx0P.js","assets/effort-Bqti44UZ.js","assets/speed-BOytg6bC.js","assets/cache-CvbSI-pr.js","assets/validate-sGUCmPAs.js","assets/types-C42I77wh.js","assets/json-B0N3XRZU.js","assets/verbatim-DBTj9sPD.js","assets/citation-BsSvaaer.js","assets/number-zqlPMliA.js","assets/receipts-D7zveV-I.js","assets/officeDoc-GU6Cssjf.js","assets/csv-DAqzYXUs.js","assets/search-ZN7v_P5B.js","assets/store-BWLbFXiY.js","assets/contentVault-xfUwSJ3i.js","assets/keyVault-Aw5Y2PjT.js","assets/ready-yBSGJubb.js","assets/shapes-BwoDrn09.js","assets/ledger-BssK9Pv2.js","assets/now-C9-UAzTC.js","assets/select-Dp-OeZfq.js","assets/useLiveConfig-B4CmBiAK.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{t as e}from"./react-BZJXY1be.js";import{t}from"./compiler-runtime-qQQXpJgv.js";import{t as n}from"./jsx-runtime-DeHZSEgm.js";import{n as r,t as i}from"./preload-helper-CiWYd9n-.js";import{t as a}from"./preloadableLazy-MIX1ApBW.js";import{n as o,t as s}from"./theme-D5D55hZi.js";import{E as c}from"./index-CdUH6Eo9.js";import{n as l}from"./icons-gLFQTv74.js";import{t as u}from"./FeatureUseNotice-pQe4YHgJ.js";import{n as d}from"./history-D2EH2X6D.js";import{_ as f,a as p,g as m,l as h,o as g,p as _,r as v,s as y}from"./store-B2Rpbqgg.js";import{r as b}from"./courseSeed-CZdNBTTs.js";import{i as x,n as S,r as C}from"./mastery-DB5qpRAy.js";/* empty css */import{CourseRail as w}from"./CourseRail-BQmUsG6v.js";var T=t(),E=e(),D=n();r();var O=a(()=>i(()=>import(`./TopicCanvas-CkqP92SC.js`).then(e=>e.n).then(e=>({default:e.TopicCanvas})),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36]))),k=O.Component,A=9e4;function j(){return(0,E.useSyncExternalStore)(f,y,y)}function M(){let e=b();if(e)return{courseId:e.courseId,lessonIdx:e.lessonIdx};try{let e=new URLSearchParams(window.location.hash.split(`?`)[1]??``),t=e.get(`c`)?.trim();if(!t)return null;let n=Number(e.get(`l`));return{courseId:t,lessonIdx:Number.isFinite(n)&&n>=0?Math.round(n):0}}catch{return null}}function N(e,t){try{let n=`#/course?c=${encodeURIComponent(e)}&l=${t}`;window.location.hash!==n&&window.history.replaceState(null,``,n)}catch{}}function P(e,t){let n=Date.now();return{id:d(n),question:t,narration:e.narration,...e.spoken?{spoken:e.spoken}:{},mode:`replace`,tour:(e.tour??[]).map(e=>({index:e.index,...e.say?{say:e.say}:{},...e.saySpoken?{saySpoken:e.saySpoken}:{},...e.mark?{mark:e.mark}:{},...e.marks?{marks:e.marks}:{}})),spec:e.spec,at:n}}function F(){"use no memo";(0,E.useEffect)(()=>s(o()),[]),j(),(0,E.useEffect)(()=>S(),[]);let e=(0,E.useRef)(M()),t=e.current?.courseId,n=t?g(t):void 0,[r,a]=(0,E.useState)(()=>{let t=e.current?.lessonIdx??0;return n?Math.min(Math.max(0,t),n.lessons.length-1):Math.max(0,t)}),[d,f]=(0,E.useState)(`loading`),[y,b]=(0,E.useState)(null),[T,F]=(0,E.useState)(``),[L,R]=(0,E.useState)(null),[V,H]=(0,E.useState)(!1),[U,W]=(0,E.useState)(null),G=(0,E.useRef)(null),K=(0,E.useCallback)(e=>{let n=t?g(t):void 0,r=n?.lessons[e];if(!n||!r)return;G.current?.ctrl.abort(),m(n.id,e),N(n.id,e);let a=`Lesson ${e+1}: ${r.title}`,o=p(n.id,r.id);if(O.preload().catch(()=>{}),o){G.current=null,b(o.spec),F(o.narration),R(null),H(!1),W(null),f(`ready`);return}b(null),F(``),R(null),H(!1),f(`loading`),W(null);let s={ctrl:new AbortController,timedOut:!1};G.current=s;let c=setTimeout(()=>{s.timedOut=!0,s.ctrl.abort()},A);(async()=>{try{let[t,o,c]=await Promise.all([i(()=>import(`./generateLive-D5M8v38b.js`),__vite__mapDeps([37,17,29,30,38,39,5,1,40,41,42,43,14,4,44,27,45,46,47,48,49,31,50,51,52,6,2,3,7,8,9,10,11,12,13,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72])),i(()=>import(`./useLiveConfig-B4CmBiAK.js`).then(e=>e.d),__vite__mapDeps([73,1,2,3,50,67,49,31,41,48,51])),i(()=>import(`./streamParse-BX0bAppQ.js`).then(e=>e.s),__vite__mapDeps([42,1]))]),l=x(n,e,h(n.id),C(n.topic)),u=o.toModelConfig(o.getLiveConfigV2()),d=``,p=``,m=()=>G.current===s&&!s.ctrl.signal.aborted,g=await t.generateLive(`Teach this lesson: "${r.title}" — ${r.goal}`,[],u,e=>{if(!m())return;d+=e;let t=c.extractNarrationProgress(d);if(!t)return;let n=c.nextSpeakableChunk(t.text,p.length,t.done);n.chunk&&(p=t.text.slice(0,n.consumed),F(p),f(`streaming`))},{lesson:l,signal:s.ctrl.signal,onPartial:e=>{m()&&(b(e.spec),e.narration&&(p=e.narration,F(e.narration)),f(`streaming`))},onPending:e=>{m()&&(R(e),e&&f(`streaming`))},onThinking:e=>{m()&&(H(e),e&&f(`streaming`))}});if(s.ctrl.signal.aborted&&!s.timedOut)return;if(s.timedOut){W(`Building this lesson took too long and was stopped — the model may be slow or rate-limited right now. Try again in a moment.`),f(`error`);return}if(g.error){W(g.error.message),f(`error`);return}v(n.id,r.id,P(g,a)),b(g.spec),F(g.narration),R(null),H(!1),W(null),f(`ready`)}catch{if(s.ctrl.signal.aborted&&!s.timedOut)return;W(s.timedOut?`Building this lesson took too long and was stopped — try again in a moment.`:`Couldn't build this lesson — check your connection and model settings, then try again.`),f(`error`)}finally{clearTimeout(c),G.current===s&&(G.current=null)}})()},[t]);(0,E.useEffect)(()=>(K(r),()=>G.current?.ctrl.abort()),[r,K]);let q=(0,E.useCallback)(e=>{let n=t?g(t):void 0,i=n?.lessons[r];!n||!i||_(n.id,i.id,e)},[t,r]),J=(0,E.useCallback)(()=>{window.location.hash=`#/courses`},[]);if(!n)return(0,D.jsx)(`div`,{className:`mavea-app clr-app`,children:(0,D.jsx)(`main`,{className:`clr-stage clr-stage-center`,children:(0,D.jsxs)(`div`,{className:`clr-empty`,children:[(0,D.jsx)(`div`,{className:`clr-empty-icon`,"aria-hidden":`true`,children:(0,D.jsx)(l.layers,{})}),(0,D.jsx)(`div`,{className:`clr-empty-head`,children:`This lesson isn’t here`}),(0,D.jsx)(`div`,{className:`clr-empty-sub`,children:`The course may have been removed, or the link is out of date. Head back and pick one to open.`}),(0,D.jsxs)(`button`,{type:`button`,className:`clr-btn clr-btn-primary`,onClick:J,children:[(0,D.jsx)(l.chevL,{}),` Back to courses`]})]})})});let Y=d===`loading`||d===`streaming`,X=h(n.id);return(0,D.jsx)(`div`,{className:`mavea-app clr-app`,children:(0,D.jsx)(`main`,{className:`clr-stage`,children:(0,D.jsxs)(`div`,{className:`clr-col`,children:[(0,D.jsx)(u,{kind:`learning`}),(0,D.jsx)(w,{course:n,lessonIdx:r,progress:X,onPrev:()=>a(e=>Math.max(0,e-1)),onNext:()=>a(e=>Math.min(n.lessons.length-1,e+1)),onCheckpoint:q,busy:Y},`${n.id}:${r}`),d===`loading`&&(0,D.jsx)(I,{lessonNumber:r+1,course:n}),d===`streaming`&&(0,D.jsx)(z,{narration:T,pendingShape:L,thinking:V}),d===`error`&&(0,D.jsx)(B,{message:U??`Something went wrong building this lesson.`,onRetry:()=>K(r)}),(d===`streaming`||d===`ready`)&&y&&(0,D.jsx)(`div`,{className:`clr-canvas`,children:(0,D.jsx)(c,{label:`Lesson canvas`,children:(0,D.jsx)(k,{data:y,spot:null,built:{},onProve:()=>{}})})})]})})})}function I(e){let t=(0,T.c)(8),{lessonNumber:n,course:r}=e,i=r.lessons[n-1],a;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(a=(0,D.jsxs)(`div`,{className:`clr-lens`,"aria-hidden":`true`,children:[(0,D.jsx)(`span`,{}),(0,D.jsx)(`span`,{}),(0,D.jsx)(`span`,{})]}),t[0]=a):a=t[0];let o;t[1]===n?o=t[2]:(o=(0,D.jsxs)(`div`,{className:`clr-state-head`,children:[`Building lesson `,n,`…`]}),t[1]=n,t[2]=o);let s;t[3]===i?s=t[4]:(s=i&&(0,D.jsxs)(D.Fragment,{children:[(0,D.jsx)(`div`,{className:`clr-state-sub`,children:i.goal}),(0,D.jsx)(`div`,{className:`clr-lesson-outline`,"aria-label":`Lesson outline`,children:i.objectives.slice(0,3).map(L)})]}),t[3]=i,t[4]=s);let c;return t[5]!==o||t[6]!==s?(c=(0,D.jsxs)(`div`,{className:`clr-state`,role:`status`,"aria-live":`polite`,children:[a,o,s]}),t[5]=o,t[6]=s,t[7]=c):c=t[7],c}function L(e,t){return(0,D.jsxs)(`div`,{className:`clr-lesson-outline-row`,children:[(0,D.jsx)(`span`,{"aria-hidden":`true`,children:t+1}),(0,D.jsx)(`strong`,{children:e})]},e)}function R(e){return e?`Building ${e.replace(/[_-]+/g,` `)}`:`Building the next section`}function z(e){let t=(0,T.c)(11),{narration:n,pendingShape:r,thinking:i}=e,a;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(a=(0,D.jsx)(`span`,{className:`clr-stream-pulse`,"aria-hidden":`true`}),t[0]=a):a=t[0];let o;t[1]!==r||t[2]!==i?(o=i?`Thinking through the lesson`:R(r),t[1]=r,t[2]=i,t[3]=o):o=t[3];let s;t[4]===o?s=t[5]:(s=(0,D.jsxs)(`div`,{className:`clr-stream-label`,children:[o,`…`]}),t[4]=o,t[5]=s);let c;t[6]===n?c=t[7]:(c=n&&(0,D.jsx)(`p`,{children:n}),t[6]=n,t[7]=c);let l;return t[8]!==s||t[9]!==c?(l=(0,D.jsxs)(`div`,{className:`clr-stream`,role:`status`,"aria-live":`polite`,"aria-atomic":`false`,children:[a,(0,D.jsxs)(`div`,{className:`clr-stream-copy`,children:[s,c]})]}),t[8]=s,t[9]=c,t[10]=l):l=t[10],l}function B(e){let t=(0,T.c)(10),{message:n,onRetry:r}=e,i,a;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(i=(0,D.jsx)(`div`,{className:`clr-state-icon clr-state-icon-warn`,"aria-hidden":`true`,children:(0,D.jsx)(l.alert,{})}),a=(0,D.jsx)(`div`,{className:`clr-state-head`,children:`Couldn’t build this lesson`}),t[0]=i,t[1]=a):(i=t[0],a=t[1]);let o;t[2]===n?o=t[3]:(o=(0,D.jsx)(`div`,{className:`clr-state-sub clr-state-error`,children:n}),t[2]=n,t[3]=o);let s;t[4]===Symbol.for(`react.memo_cache_sentinel`)?(s=(0,D.jsx)(l.refresh,{}),t[4]=s):s=t[4];let c;t[5]===r?c=t[6]:(c=(0,D.jsxs)(`button`,{type:`button`,className:`clr-btn clr-btn-primary`,onClick:r,children:[s,` Try again`]}),t[5]=r,t[6]=c);let u;return t[7]!==o||t[8]!==c?(u=(0,D.jsxs)(`div`,{className:`clr-state`,children:[i,a,o,c]}),t[7]=o,t[8]=c,t[9]=u):u=t[9],u}export{F as CourseLessonReader};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/generateCourse-BldPpgdh.js","assets/rolldown-runtime-DkW27tQK.js","assets/providers-0DthJW_I.js","assets/http-Lar_UMKb.js","assets/blockTypes-DUDdP3pB.js","assets/info-CiqHR5cs.js","assets/attachments-BW-vki-E.js","assets/route-CMdTFx0P.js","assets/useLiveConfig-B4CmBiAK.js","assets/react-BZJXY1be.js","assets/compiler-runtime-qQQXpJgv.js","assets/keyVault-Aw5Y2PjT.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{t as e}from"./react-BZJXY1be.js";import{t}from"./compiler-runtime-qQQXpJgv.js";import{t as n}from"./jsx-runtime-DeHZSEgm.js";import{n as r,t as i}from"./preload-helper-CiWYd9n-.js";import{n as a,r as o}from"./preloadableLazy-MIX1ApBW.js";import{n as s,t as c}from"./theme-D5D55hZi.js";import{O as l}from"./index-LiHcEJt_.js";import{n as u}from"./icons-gLFQTv74.js";import{t as d}from"./useFocusTrap-CJmpNZv2.js";import{t as f}from"./homeTarget-CwFsJYwb.js";import{t as p}from"./DropSelect-GwIXHA5o.js";import{i as m}from"./store-D2IJF4SA.js";import{_ as h,c as g,h as _,l as v,m as y,s as b}from"./store-B2Rpbqgg.js";import{i as x,t as S}from"./courseSeed-CZdNBTTs.js";/* empty css */import{n as ee,t as te}from"./useSrsCards-C27o39fF.js";import{t as ne}from"./deckLine-NBd3MyGT.js";var re=t(),C=e(),w=n();r();var T;function E(){return T??=Promise.all([i(()=>import(`./generateCourse-BldPpgdh.js`).then(e=>e.n),__vite__mapDeps([0,1,2,3,4,5,6,7])),i(()=>import(`./useLiveConfig-B4CmBiAK.js`).then(e=>e.d),__vite__mapDeps([8,1,9,10,5,11,2,3,4,6,7]))]),T}function D(){E().catch(()=>{})}function O(){return(0,C.useSyncExternalStore)(h,b,b)}function ie(e,t){S({courseId:e,lessonIdx:t}),window.location.hash=`#/course`}function ae(e,t){let n=e.lessons.filter(e=>t.lessons[e.id]?.status===`done`).length;return n>=e.lessons.length?`complete`:n>0||t.current>0?`in-progress`:`new`}var oe={beginner:`Beginner`,intermediate:`Intermediate`,expert:`Expert`},k=[`Personal finance basics`,`How the internet works`,`Spanish for travel`];function A(e){let t=(0,re.c)(67),{course:n,progress:r,onRemove:i}=e,s=(0,C.useRef)(null),[c,l]=(0,C.useState)(!1),d=n.lessons.length,f;if(t[0]!==n.lessons||t[1]!==r.lessons){let e;t[3]===r.lessons?e=t[4]:(e=e=>r.lessons[e.id]?.status===`done`,t[3]=r.lessons,t[4]=e),f=n.lessons.filter(e),t[0]=n.lessons,t[1]=r.lessons,t[2]=f}else f=t[2];let p=f.length,h;t[5]!==p||t[6]!==d?(h=d?Math.round(p/d*100):0,t[5]=p,t[6]=d,t[7]=h):h=t[7];let g=h,_=ae(n,r),v=Math.max(0,Math.min(r.current,d-1)),y=n.lessons[v],b=`Lesson ${v+1} of ${d}`,x=_===`complete`?`Review`:_===`in-progress`?`Continue`:`Start course`;te();let S;t[8]===n.title?S=t[9]:(S=e=>e.name===n.title,t[8]=n.title,t[9]=S);let T=m().decks.find(S),E,D;t[10]===Symbol.for(`react.memo_cache_sentinel`)?(E=()=>{let e=s.current;if(!e)return;let t=ue,n=()=>{t=o(le)};if(!(`IntersectionObserver`in window))return n(),t;let r=new IntersectionObserver(e=>{e.some(ce)&&(r.disconnect(),n())});return r.observe(e),()=>{r.disconnect(),t()}},D=[],t[10]=E,t[11]=D):(E=t[10],D=t[11]),(0,C.useEffect)(E,D);let O=`cr-card cr-card-${_}`,k;t[12]===n.level?k=t[13]:(k=n.level&&(0,w.jsx)(`span`,{className:`cr-badge`,children:oe[n.level]}),t[12]=n.level,t[13]=k);let A=`cr-status cr-status-`+_,j=_===`complete`?`Complete`:_===`in-progress`?`In progress`:`New`,M;t[14]!==A||t[15]!==j?(M=(0,w.jsx)(`span`,{className:A,children:j}),t[14]=A,t[15]=j,t[16]=M):M=t[16];let N;t[17]!==M||t[18]!==k?(N=(0,w.jsxs)(`div`,{className:`cr-card-top`,children:[k,M]}),t[17]=M,t[18]=k,t[19]=N):N=t[19];let P;t[20]===n.title?P=t[21]:(P=(0,w.jsx)(`h3`,{className:`cr-card-title`,children:n.title}),t[20]=n.title,t[21]=P);let F=n.subtitle||n.topic,I;t[22]===F?I=t[23]:(I=(0,w.jsx)(`p`,{className:`cr-card-sub`,children:F}),t[22]=F,t[23]=I);let L=`${n.title} progress`,R=`${p} of ${d} lessons complete`,z=`${g}%`,B;t[24]===z?B=t[25]:(B=(0,w.jsx)(`div`,{className:`cr-progress-fill`,style:{width:z}}),t[24]=z,t[25]=B);let V;t[26]!==g||t[27]!==L||t[28]!==R||t[29]!==B?(V=(0,w.jsx)(`div`,{className:`cr-progress`,role:`progressbar`,"aria-label":L,"aria-valuemin":0,"aria-valuemax":100,"aria-valuenow":g,"aria-valuetext":R,children:B}),t[26]=g,t[27]=L,t[28]=R,t[29]=B,t[30]=V):V=t[30];let H;t[31]===b?H=t[32]:(H=(0,w.jsx)(`span`,{children:b}),t[31]=b,t[32]=H);let U;t[33]===Symbol.for(`react.memo_cache_sentinel`)?(U=(0,w.jsx)(`span`,{className:`cr-card-meta-dot`,"aria-hidden":`true`}),t[33]=U):U=t[33];let W;t[34]!==p||t[35]!==d?(W=(0,w.jsxs)(`span`,{children:[p,`/`,d,` done`]}),t[34]=p,t[35]=d,t[36]=W):W=t[36];let G;t[37]!==H||t[38]!==W?(G=(0,w.jsxs)(`div`,{className:`cr-card-meta`,children:[H,U,W]}),t[37]=H,t[38]=W,t[39]=G):G=t[39];let K;t[40]!==y||t[41]!==_?(K=y&&(0,w.jsxs)(`div`,{className:`cr-current-lesson`,children:[(0,w.jsx)(`span`,{children:_===`complete`?`Review from`:`Up next`}),(0,w.jsx)(`strong`,{children:y.title})]}),t[40]=y,t[41]=_,t[42]=K):K=t[42];let de=T&&(0,w.jsxs)(`a`,{className:`cr-deck-link`,href:ee.deck(n.title),children:[(0,w.jsx)(u.layers,{}),ne(T)]}),q;t[43]!==n.id||t[44]!==r.current?(q=()=>ie(n.id,r.current),t[43]=n.id,t[44]=r.current,t[45]=q):q=t[45];let J,Y;t[46]===Symbol.for(`react.memo_cache_sentinel`)?(J=a(se),Y=(0,w.jsx)(u.play,{}),t[46]=J,t[47]=Y):(J=t[46],Y=t[47]);let X;t[48]!==x||t[49]!==q?(X=(0,w.jsxs)(`button`,{type:`button`,className:`cr-btn cr-btn-primary`,onClick:q,...J,children:[Y,` `,x]}),t[48]=x,t[49]=q,t[50]=X):X=t[50];let Z;t[51]!==c||t[52]!==i?(Z=c?(0,w.jsxs)(`div`,{className:`cr-delete-confirm`,role:`group`,"aria-label":`Confirm course deletion`,children:[(0,w.jsx)(`span`,{children:`Delete?`}),(0,w.jsx)(`button`,{type:`button`,className:`cr-delete-cancel`,onClick:()=>l(!1),children:`Cancel`}),(0,w.jsx)(`button`,{type:`button`,className:`cr-icon-btn cr-icon-danger`,"aria-label":`Confirm delete course`,onClick:i,children:(0,w.jsx)(u.check,{})})]}):(0,w.jsx)(`button`,{type:`button`,className:`cr-icon-btn`,"aria-label":`Delete course`,onClick:()=>l(!0),children:(0,w.jsx)(u.x,{})}),t[51]=c,t[52]=i,t[53]=Z):Z=t[53];let Q;t[54]!==X||t[55]!==Z?(Q=(0,w.jsxs)(`div`,{className:`cr-card-actions`,children:[X,Z]}),t[54]=X,t[55]=Z,t[56]=Q):Q=t[56];let $;return t[57]!==N||t[58]!==P||t[59]!==I||t[60]!==V||t[61]!==G||t[62]!==K||t[63]!==de||t[64]!==Q||t[65]!==O?($=(0,w.jsxs)(`article`,{className:O,ref:s,children:[N,P,I,V,G,K,de,Q]}),t[57]=N,t[58]=P,t[59]=I,t[60]=V,t[61]=G,t[62]=K,t[63]=de,t[64]=Q,t[65]=O,t[66]=$):$=t[66],$}function se(){return l(`#/course`)??Promise.resolve()}function ce(e){return e.isIntersecting}function le(){return l(`#/course`)??Promise.resolve()}function ue(){}function j({initialTopic:e,onClose:t}){let n=(0,C.useRef)(null),r=(0,C.useRef)(null);d(r);let[i,o]=(0,C.useState)(e??``),[s,c]=(0,C.useState)(``),[l,f]=(0,C.useState)(!1),[m,h]=(0,C.useState)(null),g=(0,C.useRef)(null);(0,C.useEffect)(()=>()=>g.current?.abort(),[]);let v=(0,C.useCallback)(()=>{g.current?.abort(),t()},[t]);(0,C.useEffect)(()=>{let e=e=>{e.key===`Escape`&&(e.preventDefault(),v())};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[v]);let y=(0,C.useRef)(null);(0,C.useEffect)(()=>{e?.trim()||y.current?.focus()},[]),(0,C.useEffect)(()=>{let e=n.current;if(!e)return;let t=t=>{t.target===e&&v()};return e.addEventListener(`pointerdown`,t),()=>e.removeEventListener(`pointerdown`,t)},[v]);let b=async e=>{if(!e||l)return;f(!0),h(null);let t=new AbortController;g.current=t;try{let[{generateCourse:n},{getLiveConfigV2:r,toModelConfig:i}]=await E(),a=await n(e,i(r()),{level:s||void 0,signal:t.signal});if(t.signal.aborted)return;_(a),ie(a.id,0)}catch(e){if(t.signal.aborted)return;h(e instanceof Error?e.message:`Something went wrong building that course.`),f(!1)}},x=async e=>{e.preventDefault(),await b(i.trim())};return(0,w.jsx)(`div`,{className:`cr-scrim`,ref:n,children:(0,w.jsxs)(`div`,{className:`cr-sheet`,ref:r,role:`dialog`,"aria-modal":`true`,"aria-labelledby":`cr-sheet-title`,"aria-describedby":`cr-sheet-subtitle`,tabIndex:-1,children:[(0,w.jsxs)(`div`,{className:`cr-sheet-head`,children:[(0,w.jsx)(`div`,{className:`cr-sheet-mark`,"aria-hidden":`true`,children:(0,w.jsx)(u.layers,{})}),(0,w.jsxs)(`div`,{className:`cr-sheet-heading`,children:[(0,w.jsx)(`span`,{className:`cr-sheet-title`,id:`cr-sheet-title`,children:`New course`}),(0,w.jsx)(`span`,{className:`cr-sheet-subtitle`,id:`cr-sheet-subtitle`,children:`A tailored syllabus, built around what you want to understand.`})]}),(0,w.jsx)(`button`,{type:`button`,className:`cr-ed-close`,"aria-label":l?`Cancel building course`:`Close`,onClick:v,children:(0,w.jsx)(u.x,{})})]}),(0,w.jsxs)(`form`,{className:`cr-sheet-body`,"aria-busy":l,onSubmit:e=>void x(e),children:[(0,w.jsxs)(`p`,{className:`cr-legal-note`,children:[(0,w.jsx)(`strong`,{children:`Learning aid, not an authority.`}),` Lessons are AI-generated and may be wrong or incomplete. Verify consequential or professional topics with authoritative sources. `,(0,w.jsx)(`a`,{href:`#/legal?from=home`,children:`Details`})]}),(0,w.jsxs)(`label`,{className:`cr-field`,children:[(0,w.jsx)(`span`,{className:`cr-field-label`,children:`Topic`}),(0,w.jsx)(`input`,{ref:y,type:`text`,className:`cr-input`,placeholder:`e.g. linear algebra, the French Revolution, Rust ownership`,value:i,onFocus:D,onChange:e=>{D(),o(e.target.value)},disabled:l,autoComplete:`off`})]}),(0,w.jsx)(`div`,{className:`cr-topic-picks`,"aria-label":`Topic suggestions`,children:k.map(e=>(0,w.jsx)(`button`,{type:`button`,onClick:()=>o(e),disabled:l,children:e},e))}),(0,w.jsxs)(`div`,{className:`cr-field`,children:[(0,w.jsx)(`span`,{className:`cr-field-label`,children:`Starting level`}),(0,w.jsx)(p,{ariaLabel:`Starting level`,triggerClassName:`cr-input`,value:s,onChange:e=>c(e),disabled:l,focusOnMount:!!e?.trim(),options:[{value:``,label:`Pick for me`},{value:`beginner`,label:`Beginner`},{value:`intermediate`,label:`Intermediate`},{value:`expert`,label:`Expert`}]}),(0,w.jsx)(`span`,{className:`cr-field-hint`,children:`Pick for me lets Mavéa infer the right starting point from your topic.`})]}),m&&(0,w.jsx)(`div`,{className:`cr-error`,role:`alert`,children:m}),(0,w.jsx)(`button`,{type:`submit`,className:`cr-btn cr-btn-primary cr-btn-wide`,disabled:!i.trim()||l,...a(()=>E().then(()=>void 0)),children:l?(0,w.jsxs)(w.Fragment,{children:[(0,w.jsx)(`span`,{className:`cr-spinner`,"aria-hidden":`true`}),` Building your syllabus…`]}):`Build course`})]})]})})}function M(){"use no memo";let e=f();(0,C.useEffect)(()=>c(s()),[]),O();let t=(0,C.useRef)(x()),[n,r]=(0,C.useState)(!!t.current),[i,a]=(0,C.useState)(t.current??``),o=g(),l=(e=``)=>{a(e),r(!0)};return(0,w.jsxs)(`div`,{className:`mavea-app cr-app`,children:[(0,w.jsxs)(`header`,{className:`cr-nav`,children:[(0,w.jsxs)(`button`,{type:`button`,className:`cr-nav-back`,onClick:()=>{window.location.hash=e.href},children:[(0,w.jsx)(u.chevL,{}),` `,e.label]}),(0,w.jsxs)(`div`,{className:`cr-nav-title`,children:[`Courses`,(0,w.jsxs)(`span`,{className:`cr-nav-sub`,children:[o.length,` course`,o.length===1?``:`s`]})]}),(0,w.jsxs)(`button`,{type:`button`,className:`cr-btn cr-btn-primary`,onClick:()=>l(),children:[(0,w.jsx)(u.plus,{}),` New course`]})]}),(0,w.jsx)(`main`,{className:`cr-main`,children:o.length===0?(0,w.jsxs)(`section`,{className:`cr-empty`,"aria-labelledby":`cr-empty-title`,children:[(0,w.jsxs)(`div`,{className:`cr-empty-copy`,children:[(0,w.jsx)(`div`,{className:`cr-empty-icon`,"aria-hidden":`true`,children:(0,w.jsx)(u.layers,{})}),(0,w.jsx)(`div`,{className:`cr-empty-eyebrow`,children:`No courses yet`}),(0,w.jsx)(`h1`,{className:`cr-empty-head`,id:`cr-empty-title`,children:`Build a clear path through anything`}),(0,w.jsx)(`p`,{className:`cr-empty-sub`,children:`Name what you want to understand. Mavéa maps the syllabus, teaches one focused lesson at a time, and turns missed checkpoints into review cards.`}),(0,w.jsxs)(`button`,{type:`button`,className:`cr-btn cr-btn-primary cr-empty-cta`,onClick:()=>l(),children:[(0,w.jsx)(u.plus,{}),` Build your first course`]}),(0,w.jsxs)(`div`,{className:`cr-starter-row`,"aria-label":`Try a topic`,children:[(0,w.jsx)(`span`,{children:`Or try`}),k.map(e=>(0,w.jsx)(`button`,{type:`button`,onClick:()=>l(e),children:e},e))]})]}),(0,w.jsxs)(`div`,{className:`cr-course-path`,"aria-label":`How a Mavéa course works`,children:[(0,w.jsxs)(`div`,{children:[(0,w.jsx)(`span`,{children:`01`}),(0,w.jsx)(`strong`,{children:`Shape the syllabus`}),(0,w.jsx)(`p`,{children:`A useful sequence, matched to your starting level.`})]}),(0,w.jsxs)(`div`,{children:[(0,w.jsx)(`span`,{children:`02`}),(0,w.jsx)(`strong`,{children:`Learn visually`}),(0,w.jsx)(`p`,{children:`Focused lessons use the clearest canvas for each idea.`})]}),(0,w.jsxs)(`div`,{children:[(0,w.jsx)(`span`,{children:`03`}),(0,w.jsx)(`strong`,{children:`Make it stick`}),(0,w.jsx)(`p`,{children:`Checkpoints and spaced review close the gaps.`})]})]})]}):(0,w.jsx)(`div`,{className:`cr-grid`,children:o.map(e=>(0,w.jsx)(A,{course:e,progress:v(e.id),onRemove:()=>y(e.id)},e.id))})}),n&&(0,w.jsx)(j,{initialTopic:i,onClose:()=>r(!1)})]})}export{M as CoursesApp};
|
|
2
|
+
import{t as e}from"./react-BZJXY1be.js";import{t}from"./compiler-runtime-qQQXpJgv.js";import{t as n}from"./jsx-runtime-DeHZSEgm.js";import{n as r,t as i}from"./preload-helper-CiWYd9n-.js";import{n as a,r as o}from"./preloadableLazy-MIX1ApBW.js";import{n as s,t as c}from"./theme-D5D55hZi.js";import{O as l}from"./index-CdUH6Eo9.js";import{n as u}from"./icons-gLFQTv74.js";import{t as d}from"./useFocusTrap-CJmpNZv2.js";import{t as f}from"./homeTarget-CwFsJYwb.js";import{t as p}from"./DropSelect-GKioj__f.js";import{i as m}from"./store-D2IJF4SA.js";import{_ as h,c as g,h as _,l as v,m as y,s as b}from"./store-B2Rpbqgg.js";import{i as x,t as S}from"./courseSeed-CZdNBTTs.js";/* empty css */import{n as ee,t as te}from"./useSrsCards-C27o39fF.js";import{t as ne}from"./deckLine-NBd3MyGT.js";var re=t(),C=e(),w=n();r();var T;function E(){return T??=Promise.all([i(()=>import(`./generateCourse-BldPpgdh.js`).then(e=>e.n),__vite__mapDeps([0,1,2,3,4,5,6,7])),i(()=>import(`./useLiveConfig-B4CmBiAK.js`).then(e=>e.d),__vite__mapDeps([8,1,9,10,5,11,2,3,4,6,7]))]),T}function D(){E().catch(()=>{})}function O(){return(0,C.useSyncExternalStore)(h,b,b)}function ie(e,t){S({courseId:e,lessonIdx:t}),window.location.hash=`#/course`}function ae(e,t){let n=e.lessons.filter(e=>t.lessons[e.id]?.status===`done`).length;return n>=e.lessons.length?`complete`:n>0||t.current>0?`in-progress`:`new`}var oe={beginner:`Beginner`,intermediate:`Intermediate`,expert:`Expert`},k=[`Personal finance basics`,`How the internet works`,`Spanish for travel`];function A(e){let t=(0,re.c)(67),{course:n,progress:r,onRemove:i}=e,s=(0,C.useRef)(null),[c,l]=(0,C.useState)(!1),d=n.lessons.length,f;if(t[0]!==n.lessons||t[1]!==r.lessons){let e;t[3]===r.lessons?e=t[4]:(e=e=>r.lessons[e.id]?.status===`done`,t[3]=r.lessons,t[4]=e),f=n.lessons.filter(e),t[0]=n.lessons,t[1]=r.lessons,t[2]=f}else f=t[2];let p=f.length,h;t[5]!==p||t[6]!==d?(h=d?Math.round(p/d*100):0,t[5]=p,t[6]=d,t[7]=h):h=t[7];let g=h,_=ae(n,r),v=Math.max(0,Math.min(r.current,d-1)),y=n.lessons[v],b=`Lesson ${v+1} of ${d}`,x=_===`complete`?`Review`:_===`in-progress`?`Continue`:`Start course`;te();let S;t[8]===n.title?S=t[9]:(S=e=>e.name===n.title,t[8]=n.title,t[9]=S);let T=m().decks.find(S),E,D;t[10]===Symbol.for(`react.memo_cache_sentinel`)?(E=()=>{let e=s.current;if(!e)return;let t=ue,n=()=>{t=o(le)};if(!(`IntersectionObserver`in window))return n(),t;let r=new IntersectionObserver(e=>{e.some(ce)&&(r.disconnect(),n())});return r.observe(e),()=>{r.disconnect(),t()}},D=[],t[10]=E,t[11]=D):(E=t[10],D=t[11]),(0,C.useEffect)(E,D);let O=`cr-card cr-card-${_}`,k;t[12]===n.level?k=t[13]:(k=n.level&&(0,w.jsx)(`span`,{className:`cr-badge`,children:oe[n.level]}),t[12]=n.level,t[13]=k);let A=`cr-status cr-status-`+_,j=_===`complete`?`Complete`:_===`in-progress`?`In progress`:`New`,M;t[14]!==A||t[15]!==j?(M=(0,w.jsx)(`span`,{className:A,children:j}),t[14]=A,t[15]=j,t[16]=M):M=t[16];let N;t[17]!==M||t[18]!==k?(N=(0,w.jsxs)(`div`,{className:`cr-card-top`,children:[k,M]}),t[17]=M,t[18]=k,t[19]=N):N=t[19];let P;t[20]===n.title?P=t[21]:(P=(0,w.jsx)(`h3`,{className:`cr-card-title`,children:n.title}),t[20]=n.title,t[21]=P);let F=n.subtitle||n.topic,I;t[22]===F?I=t[23]:(I=(0,w.jsx)(`p`,{className:`cr-card-sub`,children:F}),t[22]=F,t[23]=I);let L=`${n.title} progress`,R=`${p} of ${d} lessons complete`,z=`${g}%`,B;t[24]===z?B=t[25]:(B=(0,w.jsx)(`div`,{className:`cr-progress-fill`,style:{width:z}}),t[24]=z,t[25]=B);let V;t[26]!==g||t[27]!==L||t[28]!==R||t[29]!==B?(V=(0,w.jsx)(`div`,{className:`cr-progress`,role:`progressbar`,"aria-label":L,"aria-valuemin":0,"aria-valuemax":100,"aria-valuenow":g,"aria-valuetext":R,children:B}),t[26]=g,t[27]=L,t[28]=R,t[29]=B,t[30]=V):V=t[30];let H;t[31]===b?H=t[32]:(H=(0,w.jsx)(`span`,{children:b}),t[31]=b,t[32]=H);let U;t[33]===Symbol.for(`react.memo_cache_sentinel`)?(U=(0,w.jsx)(`span`,{className:`cr-card-meta-dot`,"aria-hidden":`true`}),t[33]=U):U=t[33];let W;t[34]!==p||t[35]!==d?(W=(0,w.jsxs)(`span`,{children:[p,`/`,d,` done`]}),t[34]=p,t[35]=d,t[36]=W):W=t[36];let G;t[37]!==H||t[38]!==W?(G=(0,w.jsxs)(`div`,{className:`cr-card-meta`,children:[H,U,W]}),t[37]=H,t[38]=W,t[39]=G):G=t[39];let K;t[40]!==y||t[41]!==_?(K=y&&(0,w.jsxs)(`div`,{className:`cr-current-lesson`,children:[(0,w.jsx)(`span`,{children:_===`complete`?`Review from`:`Up next`}),(0,w.jsx)(`strong`,{children:y.title})]}),t[40]=y,t[41]=_,t[42]=K):K=t[42];let de=T&&(0,w.jsxs)(`a`,{className:`cr-deck-link`,href:ee.deck(n.title),children:[(0,w.jsx)(u.layers,{}),ne(T)]}),q;t[43]!==n.id||t[44]!==r.current?(q=()=>ie(n.id,r.current),t[43]=n.id,t[44]=r.current,t[45]=q):q=t[45];let J,Y;t[46]===Symbol.for(`react.memo_cache_sentinel`)?(J=a(se),Y=(0,w.jsx)(u.play,{}),t[46]=J,t[47]=Y):(J=t[46],Y=t[47]);let X;t[48]!==x||t[49]!==q?(X=(0,w.jsxs)(`button`,{type:`button`,className:`cr-btn cr-btn-primary`,onClick:q,...J,children:[Y,` `,x]}),t[48]=x,t[49]=q,t[50]=X):X=t[50];let Z;t[51]!==c||t[52]!==i?(Z=c?(0,w.jsxs)(`div`,{className:`cr-delete-confirm`,role:`group`,"aria-label":`Confirm course deletion`,children:[(0,w.jsx)(`span`,{children:`Delete?`}),(0,w.jsx)(`button`,{type:`button`,className:`cr-delete-cancel`,onClick:()=>l(!1),children:`Cancel`}),(0,w.jsx)(`button`,{type:`button`,className:`cr-icon-btn cr-icon-danger`,"aria-label":`Confirm delete course`,onClick:i,children:(0,w.jsx)(u.check,{})})]}):(0,w.jsx)(`button`,{type:`button`,className:`cr-icon-btn`,"aria-label":`Delete course`,onClick:()=>l(!0),children:(0,w.jsx)(u.x,{})}),t[51]=c,t[52]=i,t[53]=Z):Z=t[53];let Q;t[54]!==X||t[55]!==Z?(Q=(0,w.jsxs)(`div`,{className:`cr-card-actions`,children:[X,Z]}),t[54]=X,t[55]=Z,t[56]=Q):Q=t[56];let $;return t[57]!==N||t[58]!==P||t[59]!==I||t[60]!==V||t[61]!==G||t[62]!==K||t[63]!==de||t[64]!==Q||t[65]!==O?($=(0,w.jsxs)(`article`,{className:O,ref:s,children:[N,P,I,V,G,K,de,Q]}),t[57]=N,t[58]=P,t[59]=I,t[60]=V,t[61]=G,t[62]=K,t[63]=de,t[64]=Q,t[65]=O,t[66]=$):$=t[66],$}function se(){return l(`#/course`)??Promise.resolve()}function ce(e){return e.isIntersecting}function le(){return l(`#/course`)??Promise.resolve()}function ue(){}function j({initialTopic:e,onClose:t}){let n=(0,C.useRef)(null),r=(0,C.useRef)(null);d(r);let[i,o]=(0,C.useState)(e??``),[s,c]=(0,C.useState)(``),[l,f]=(0,C.useState)(!1),[m,h]=(0,C.useState)(null),g=(0,C.useRef)(null);(0,C.useEffect)(()=>()=>g.current?.abort(),[]);let v=(0,C.useCallback)(()=>{g.current?.abort(),t()},[t]);(0,C.useEffect)(()=>{let e=e=>{e.key===`Escape`&&(e.preventDefault(),v())};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[v]);let y=(0,C.useRef)(null);(0,C.useEffect)(()=>{e?.trim()||y.current?.focus()},[]),(0,C.useEffect)(()=>{let e=n.current;if(!e)return;let t=t=>{t.target===e&&v()};return e.addEventListener(`pointerdown`,t),()=>e.removeEventListener(`pointerdown`,t)},[v]);let b=async e=>{if(!e||l)return;f(!0),h(null);let t=new AbortController;g.current=t;try{let[{generateCourse:n},{getLiveConfigV2:r,toModelConfig:i}]=await E(),a=await n(e,i(r()),{level:s||void 0,signal:t.signal});if(t.signal.aborted)return;_(a),ie(a.id,0)}catch(e){if(t.signal.aborted)return;h(e instanceof Error?e.message:`Something went wrong building that course.`),f(!1)}},x=async e=>{e.preventDefault(),await b(i.trim())};return(0,w.jsx)(`div`,{className:`cr-scrim`,ref:n,children:(0,w.jsxs)(`div`,{className:`cr-sheet`,ref:r,role:`dialog`,"aria-modal":`true`,"aria-labelledby":`cr-sheet-title`,"aria-describedby":`cr-sheet-subtitle`,tabIndex:-1,children:[(0,w.jsxs)(`div`,{className:`cr-sheet-head`,children:[(0,w.jsx)(`div`,{className:`cr-sheet-mark`,"aria-hidden":`true`,children:(0,w.jsx)(u.layers,{})}),(0,w.jsxs)(`div`,{className:`cr-sheet-heading`,children:[(0,w.jsx)(`span`,{className:`cr-sheet-title`,id:`cr-sheet-title`,children:`New course`}),(0,w.jsx)(`span`,{className:`cr-sheet-subtitle`,id:`cr-sheet-subtitle`,children:`A tailored syllabus, built around what you want to understand.`})]}),(0,w.jsx)(`button`,{type:`button`,className:`cr-ed-close`,"aria-label":l?`Cancel building course`:`Close`,onClick:v,children:(0,w.jsx)(u.x,{})})]}),(0,w.jsxs)(`form`,{className:`cr-sheet-body`,"aria-busy":l,onSubmit:e=>void x(e),children:[(0,w.jsxs)(`p`,{className:`cr-legal-note`,children:[(0,w.jsx)(`strong`,{children:`Learning aid, not an authority.`}),` Lessons are AI-generated and may be wrong or incomplete. Verify consequential or professional topics with authoritative sources. `,(0,w.jsx)(`a`,{href:`#/legal?from=home`,children:`Details`})]}),(0,w.jsxs)(`label`,{className:`cr-field`,children:[(0,w.jsx)(`span`,{className:`cr-field-label`,children:`Topic`}),(0,w.jsx)(`input`,{ref:y,type:`text`,className:`cr-input`,placeholder:`e.g. linear algebra, the French Revolution, Rust ownership`,value:i,onFocus:D,onChange:e=>{D(),o(e.target.value)},disabled:l,autoComplete:`off`})]}),(0,w.jsx)(`div`,{className:`cr-topic-picks`,"aria-label":`Topic suggestions`,children:k.map(e=>(0,w.jsx)(`button`,{type:`button`,onClick:()=>o(e),disabled:l,children:e},e))}),(0,w.jsxs)(`div`,{className:`cr-field`,children:[(0,w.jsx)(`span`,{className:`cr-field-label`,children:`Starting level`}),(0,w.jsx)(p,{ariaLabel:`Starting level`,triggerClassName:`cr-input`,value:s,onChange:e=>c(e),disabled:l,focusOnMount:!!e?.trim(),options:[{value:``,label:`Pick for me`},{value:`beginner`,label:`Beginner`},{value:`intermediate`,label:`Intermediate`},{value:`expert`,label:`Expert`}]}),(0,w.jsx)(`span`,{className:`cr-field-hint`,children:`Pick for me lets Mavéa infer the right starting point from your topic.`})]}),m&&(0,w.jsx)(`div`,{className:`cr-error`,role:`alert`,children:m}),(0,w.jsx)(`button`,{type:`submit`,className:`cr-btn cr-btn-primary cr-btn-wide`,disabled:!i.trim()||l,...a(()=>E().then(()=>void 0)),children:l?(0,w.jsxs)(w.Fragment,{children:[(0,w.jsx)(`span`,{className:`cr-spinner`,"aria-hidden":`true`}),` Building your syllabus…`]}):`Build course`})]})]})})}function M(){"use no memo";let e=f();(0,C.useEffect)(()=>c(s()),[]),O();let t=(0,C.useRef)(x()),[n,r]=(0,C.useState)(!!t.current),[i,a]=(0,C.useState)(t.current??``),o=g(),l=(e=``)=>{a(e),r(!0)};return(0,w.jsxs)(`div`,{className:`mavea-app cr-app`,children:[(0,w.jsxs)(`header`,{className:`cr-nav`,children:[(0,w.jsxs)(`button`,{type:`button`,className:`cr-nav-back`,onClick:()=>{window.location.hash=e.href},children:[(0,w.jsx)(u.chevL,{}),` `,e.label]}),(0,w.jsxs)(`div`,{className:`cr-nav-title`,children:[`Courses`,(0,w.jsxs)(`span`,{className:`cr-nav-sub`,children:[o.length,` course`,o.length===1?``:`s`]})]}),(0,w.jsxs)(`button`,{type:`button`,className:`cr-btn cr-btn-primary`,onClick:()=>l(),children:[(0,w.jsx)(u.plus,{}),` New course`]})]}),(0,w.jsx)(`main`,{className:`cr-main`,children:o.length===0?(0,w.jsxs)(`section`,{className:`cr-empty`,"aria-labelledby":`cr-empty-title`,children:[(0,w.jsxs)(`div`,{className:`cr-empty-copy`,children:[(0,w.jsx)(`div`,{className:`cr-empty-icon`,"aria-hidden":`true`,children:(0,w.jsx)(u.layers,{})}),(0,w.jsx)(`div`,{className:`cr-empty-eyebrow`,children:`No courses yet`}),(0,w.jsx)(`h1`,{className:`cr-empty-head`,id:`cr-empty-title`,children:`Build a clear path through anything`}),(0,w.jsx)(`p`,{className:`cr-empty-sub`,children:`Name what you want to understand. Mavéa maps the syllabus, teaches one focused lesson at a time, and turns missed checkpoints into review cards.`}),(0,w.jsxs)(`button`,{type:`button`,className:`cr-btn cr-btn-primary cr-empty-cta`,onClick:()=>l(),children:[(0,w.jsx)(u.plus,{}),` Build your first course`]}),(0,w.jsxs)(`div`,{className:`cr-starter-row`,"aria-label":`Try a topic`,children:[(0,w.jsx)(`span`,{children:`Or try`}),k.map(e=>(0,w.jsx)(`button`,{type:`button`,onClick:()=>l(e),children:e},e))]})]}),(0,w.jsxs)(`div`,{className:`cr-course-path`,"aria-label":`How a Mavéa course works`,children:[(0,w.jsxs)(`div`,{children:[(0,w.jsx)(`span`,{children:`01`}),(0,w.jsx)(`strong`,{children:`Shape the syllabus`}),(0,w.jsx)(`p`,{children:`A useful sequence, matched to your starting level.`})]}),(0,w.jsxs)(`div`,{children:[(0,w.jsx)(`span`,{children:`02`}),(0,w.jsx)(`strong`,{children:`Learn visually`}),(0,w.jsx)(`p`,{children:`Focused lessons use the clearest canvas for each idea.`})]}),(0,w.jsxs)(`div`,{children:[(0,w.jsx)(`span`,{children:`03`}),(0,w.jsx)(`strong`,{children:`Make it stick`}),(0,w.jsx)(`p`,{children:`Checkpoints and spaced review close the gaps.`})]})]})]}):(0,w.jsx)(`div`,{className:`cr-grid`,children:o.map(e=>(0,w.jsx)(A,{course:e,progress:v(e.id),onRemove:()=>y(e.id)},e.id))})}),n&&(0,w.jsx)(j,{initialTopic:i,onClose:()=>r(!1)})]})}export{M as CoursesApp};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./react-BZJXY1be.js";import{t}from"./compiler-runtime-qQQXpJgv.js";import{t as n}from"./jsx-runtime-DeHZSEgm.js";import{S as r}from"./index-
|
|
1
|
+
import{t as e}from"./react-BZJXY1be.js";import{t}from"./compiler-runtime-qQQXpJgv.js";import{t as n}from"./jsx-runtime-DeHZSEgm.js";import{S as r}from"./index-CdUH6Eo9.js";/* empty css */import{t as i}from"./useDashboards-lgQnk2Al.js";import{t as a}from"./useLedger-1WVXef68.js";import{p as o,u as s}from"./format-g3dP8OI3.js";import{t as c}from"./TrackerTile-DuUsFQTj.js";var l=e(),u=t(),d=n(),f=3e4,p=12e3,m=3e3;function h(e){return new Date(e).toLocaleTimeString([],{hour:`numeric`,minute:`2-digit`})}function g(e){let t=(0,u.c)(9),{state:n}=e;if(n.paused){let e;t[0]===n.resumesAt?e=t[1]:(e=h(n.resumesAt),t[0]=n.resumesAt,t[1]=e);let r;return t[2]===e?r=t[3]:(r=(0,d.jsxs)(`span`,{className:`dash-present-budget dash-present-budget--paused`,children:[`Paused · resumes `,e]}),t[2]=e,t[3]=r),r}let r=`dash-present-budget`+(n.amber?` dash-present-budget--amber`:``),i=n.amber?` · low`:``,a;return t[4]!==n.cap||t[5]!==n.used||t[6]!==r||t[7]!==i?(a=(0,d.jsxs)(`span`,{className:r,children:[n.used,`/`,n.cap,` searches today`,i]}),t[4]=n.cap,t[5]=n.used,t[6]=r,t[7]=i,t[8]=a):a=t[8],a}function _(e){let t=(0,u.c)(42),{onClose:n}=e,r=i(),h=a(),_=o(),b;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(b=[],t[0]=b):b=t[0],(0,l.useEffect)(y,b);let[x,S]=(0,l.useState)(v),C,w;t[1]===Symbol.for(`react.memo_cache_sentinel`)?(C=()=>{let e=window.setInterval(()=>S(Date.now()),f);return()=>window.clearInterval(e)},w=[],t[1]=C,t[2]=w):(C=t[1],w=t[2]),(0,l.useEffect)(C,w);let[T,E]=(0,l.useState)(null),D,O;t[3]===r.length?(D=t[4],O=t[5]):(D=()=>{if(r.length<2){E(null);return}let e=window.matchMedia(`(prefers-reduced-motion: reduce)`),t,n=e=>{if(t!==void 0&&window.clearInterval(t),e){E(null);return}E(0),t=window.setInterval(()=>{E(e=>((e??-1)+1)%r.length)},p)};n(e.matches);let i=e=>n(e.matches);return e.addEventListener(`change`,i),()=>{e.removeEventListener(`change`,i),t!==void 0&&window.clearInterval(t)}},O=[r.length],t[3]=r.length,t[4]=D,t[5]=O),(0,l.useEffect)(D,O);let[k,A]=(0,l.useState)(!1),j,M;t[6]===Symbol.for(`react.memo_cache_sentinel`)?(j=()=>{let e,t=()=>{A(!1),e!==void 0&&window.clearTimeout(e),e=window.setTimeout(()=>A(!0),m)};return t(),window.addEventListener(`mousemove`,t),()=>{window.removeEventListener(`mousemove`,t),e!==void 0&&window.clearTimeout(e)}},M=[],t[6]=j,t[7]=M):(j=t[6],M=t[7]),(0,l.useEffect)(j,M);let N,P;t[8]===n?(N=t[9],P=t[10]):(N=()=>{let e=e=>{e.key===`Escape`&&n()};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},P=[n],t[8]=n,t[9]=N,t[10]=P),(0,l.useEffect)(N,P);let F;t[11]!==h||t[12]!==x||t[13]!==_.dailySearchBudget?(F=s(h,_.dailySearchBudget,x),t[11]=h,t[12]=x,t[13]=_.dailySearchBudget,t[14]=F):F=t[14];let I=F,L;t[15]===x?L=t[16]:(L=new Date(x).toLocaleTimeString([],{hour:`numeric`,minute:`2-digit`}),t[15]=x,t[16]=L);let R=L,z;t[17]===x?z=t[18]:(z=new Date(x).toLocaleDateString([],{weekday:`long`,month:`long`,day:`numeric`}),t[17]=x,t[18]=z);let B=z,V=`dash-present`+(k?` dash-present--cursor-hidden`:``),H;t[19]===R?H=t[20]:(H=(0,d.jsx)(`span`,{className:`dash-present-time`,children:R}),t[19]=R,t[20]=H);let U;t[21]===B?U=t[22]:(U=(0,d.jsx)(`span`,{className:`dash-present-date`,children:B}),t[21]=B,t[22]=U);let W;t[23]!==H||t[24]!==U?(W=(0,d.jsxs)(`div`,{className:`dash-present-clock`,children:[H,U]}),t[23]=H,t[24]=U,t[25]=W):W=t[25];let G;t[26]===I?G=t[27]:(G=(0,d.jsx)(g,{state:I}),t[26]=I,t[27]=G);let K;t[28]!==W||t[29]!==G?(K=(0,d.jsxs)(`header`,{className:`dash-present-head`,children:[W,G]}),t[28]=W,t[29]=G,t[30]=K):K=t[30];let q;t[31]!==I||t[32]!==r||t[33]!==x||t[34]!==T?(q=(0,d.jsx)(`div`,{className:`dash-present-body`,children:r.length===0?(0,d.jsx)(`p`,{className:`dash-present-empty`,children:`Nothing on watch yet.`}):(0,d.jsx)(`div`,{className:`dash-present-grid`,children:r.map((e,t)=>(0,d.jsx)(`div`,{className:`dash-present-tile-wrap`,"data-spotlight":T===null?void 0:t===T?`on`:`off`,children:(0,d.jsx)(c,{dashboard:e,now:x,paused:I.paused})},e.id))})}),t[31]=I,t[32]=r,t[33]=x,t[34]=T,t[35]=q):q=t[35];let J;t[36]===Symbol.for(`react.memo_cache_sentinel`)?(J=(0,d.jsx)(`p`,{className:`dash-present-hint`,children:`Esc or click anywhere to exit`}),t[36]=J):J=t[36];let Y;return t[37]!==n||t[38]!==V||t[39]!==K||t[40]!==q?(Y=(0,d.jsxs)(`div`,{className:V,role:`presentation`,onClick:n,children:[K,q,J]}),t[37]=n,t[38]=V,t[39]=K,t[40]=q,t[41]=Y):Y=t[41],Y}function v(){return Date.now()}function y(){return r(document)}export{_ as DashPresent};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/generateLive-
|
|
2
|
-
import{t as e}from"./react-BZJXY1be.js";import{t}from"./compiler-runtime-qQQXpJgv.js";import{t as n}from"./jsx-runtime-DeHZSEgm.js";import{n as r,t as i}from"./preload-helper-CiWYd9n-.js";import{n as a}from"./icons-gLFQTv74.js";import{t as o}from"./TopicCanvas-Bw4bMFpe.js";import{a as s}from"./loader-DgMLGfAC.js";import{t as c}from"./useFocusTrap-CJmpNZv2.js";import{r as l}from"./sourceHost-BV3t2XDb.js";import"./canvas-C3O7MEA3.js";import{B as u,D as d,K as f,L as p,N as m,P as h,W as g,d as _,f as v,k as y,o as b,p as x,w as S}from"./store-Ba9vzL4H.js";import{l as C,n as w,r as ee,u as te}from"./useLiveConfig-B4CmBiAK.js";import{t as T}from"./route-D4kd-D3B.js";import{t as ne}from"./useDashboards-lgQnk2Al.js";import{a as E,f as D,i as O,l as k,n as re,p as ie,t as ae}from"./format-g3dP8OI3.js";import{n as oe}from"./dataPending-DGdCvY5Y.js";import{t as A}from"./AreaChart-DZGCSEwt.js";import"./tiles-D-s6v-mA.js";import{a as j,n as se,o as M,s as N,t as ce}from"./useDashboardLoop-ifcuVRo-.js";import{r as le}from"./predictions-CkVKHq-5.js";import{i as ue,n as de,r as P}from"./confirmAdd-CZ829Mbx.js";import{t as fe}from"./planTracker-BwoKEftp.js";import{t as pe}from"./pin-BPGVDgnq.js";/* empty css */import{t as me}from"./CadenceCard-DxceyiPA.js";import{t as he}from"./CheckLogRail-BibJTid0.js";var F=t(),I=e();function ge(e,t){for(let n of document.elementsFromPoint(e,t)){let e=n.closest(`[data-dash-widget]`);if(e)return e.getAttribute(`data-dash-widget`)}return null}function _e(e,t){let[n,r]=(0,I.useState)(null),[i,a]=(0,I.useState)(null),o=(0,I.useRef)({working:null,draggingId:null,onCommit:t,sourceIds:e,cleanup:null});o.current.onCommit=t,o.current.sourceIds=e,(0,I.useEffect)(()=>()=>o.current.cleanup?.(),[]);let s=(0,I.useCallback)(e=>t=>{if(t.button!==0&&t.pointerType===`mouse`)return;t.preventDefault();let n=[...o.current.sourceIds];o.current.working=n,o.current.draggingId=e,r(n),a(e);let i=e=>{let t=ge(e.clientX,e.clientY),n=o.current.draggingId,i=o.current.working;if(!t||!n||!i||t===n)return;let a=i.indexOf(n),s=i.indexOf(t);if(a<0||s<0||a===s)return;let c=[...i];c.splice(s,0,c.splice(a,1)[0]),o.current.working=c,r(c)},s=()=>{window.removeEventListener(`pointermove`,i),window.removeEventListener(`pointerup`,s),window.removeEventListener(`pointercancel`,s),o.current.cleanup=null;let e=o.current.working;o.current.working=null,o.current.draggingId=null,r(null),a(null),e&&o.current.onCommit(e)};o.current.cleanup=s,window.addEventListener(`pointermove`,i),window.addEventListener(`pointerup`,s),window.addEventListener(`pointercancel`,s)},[]),c=(0,I.useCallback)(e=>t=>{if(t.key!==`ArrowUp`&&t.key!==`ArrowDown`)return;t.preventDefault();let n=o.current.sourceIds,r=n.indexOf(e),i=t.key===`ArrowUp`?r-1:r+1;if(r<0||i<0||i>=n.length)return;let a=[...n];a.splice(i,0,a.splice(r,1)[0]),o.current.onCommit(a)},[]);return{draggingId:i,order:n??e,handleProps:e=>({onPointerDown:s(e),onKeyDown:c(e),tabIndex:0,role:`button`,"aria-label":`Drag to reorder, or use arrow keys`})}}var L=n();function ve(e){return{id:`dash-`+(e.id??e.type),workspace:`Dashboards`,title:``,sub:``,opener:``,context:[],blocks:[{...e,col:12,delay:0}],proof:null,extras:{},group:`home`,suggests:[],keywords:[]}}function ye(e){let t=(0,F.c)(18),{dashboard:n,widget:r,editing:i,dragging:a,children:s,footer:c}=e,l;t[0]!==n||t[1]!==r?(l=N(n,r),t[0]=n,t[1]=r,t[2]=l):l=t[2];let u=l,d;t[3]===u?d=t[4]:(d=ve(u),t[3]=u,t[4]=d);let f=d,p=`dash-span-${r.span}`,m=i?`dash-tile--editing`:``,h=a?`dash-tile--dragging`:``,g;t[5]!==p||t[6]!==m||t[7]!==h?(g=[`dash-tile`,p,m,h].filter(Boolean),t[5]=p,t[6]=m,t[7]=h,t[8]=g):g=t[8];let _=g.join(` `),v;t[9]===Symbol.for(`react.memo_cache_sentinel`)?(v={},t[9]=v):v=t[9];let y;t[10]===f?y=t[11]:(y=(0,L.jsx)(o,{data:f,spot:null,built:v,onProve:be}),t[10]=f,t[11]=y);let b;return t[12]!==s||t[13]!==_||t[14]!==c||t[15]!==y||t[16]!==r.id?(b=(0,L.jsxs)(`div`,{className:_,"data-dash-widget":r.id,children:[s,y,c]}),t[12]=s,t[13]=_,t[14]=c,t[15]=y,t[16]=r.id,t[17]=b):b=t[17],b}function be(){}function R(){return`w-`+Math.random().toString(36).slice(2,8)}function xe(e){let t=new Set(e.widgets.map(e=>e.block.type));return[{key:`note`,label:`Note`,make:()=>({block:{type:`list`,col:12,id:R(),props:{title:`Note`,items:[`Add a note about this dashboard.`]}},span:2})},{key:`thesis`,label:`Reasoning note`,make:()=>({block:{type:`thesis`,col:12,id:R(),props:{reasoning:``}},span:2})},{key:`alignmentgauge`,label:`Alignment gauge`,make:()=>({block:{type:`alignmentgauge`,col:12,id:R(),props:{pct:null}},span:1})},{key:`standingalerts`,label:`Standing alerts`,make:()=>({block:{type:`standingalerts`,col:12,id:R(),props:{alerts:[]}},span:1})},{key:`sourceslineage`,label:`Sources`,make:()=>({block:{type:`sourceslineage`,col:12,id:R(),props:{rows:[]}},span:2})}].filter(e=>e.key===`note`||!t.has(e.key))}function Se(e){let t=(0,F.c)(26),{dashboard:n,onClose:r}=e,[i,a]=(0,I.useState)(`menu`),[o,s]=(0,I.useState)(``),[l,u]=(0,I.useState)(!1),[d,f]=(0,I.useState)(null),p=xe(n),m=!!C(w()).apiKey,h;t[0]!==n||t[1]!==r?(h=e=>{let{block:t,span:i}=e.make(),a={id:R(),block:t,span:i,fromSource:`manual`};b(n.id,a),r()},t[0]=n,t[1]=r,t[2]=h):h=t[2];let g=h,y=(0,I.useRef)(!0),x,S;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(x=()=>(y.current=!0,()=>{y.current=!1}),S=[],t[3]=x,t[4]=S):(x=t[3],S=t[4]),(0,I.useEffect)(x,S);let ee;t[5]!==o||t[6]!==n||t[7]!==r||t[8]!==l?(ee=async()=>{let e=o.trim();if(!e||l)return;if(n.metrics.length>=12||n.widgets.length>=12){f(`This board is full — remove a card or metric first, then track another number.`);return}u(!0),f(null);let t=await fe(e,C(w()));if(!y.current)return;let i=t.metrics[0];if(!i){u(!1),f(`No single number found in that — the Track bar on the Dashboards home builds richer trackers.`);return}let a=Date.now(),s={id:`m-${a}`,label:i.label,query:i.query,...i.unit?{unit:i.unit}:{},sourceQuote:{text:i.label,saidAt:a},lastValue:null,origin:`empty`},c={id:R(),block:{type:`insight`,col:12,id:`blk-${a}`,num:`1`,props:{title:s.label,stat:`—`,conf:`inferred`,summary:s.label}},span:1,metricId:s.id,fromSource:`manual`},d=de(n);v(n.id,{metrics:[s],tripwires:[],widgets:[c],source:{kind:`ADDED`,conversationId:`manual`,title:`Added by hand`,contributed:`Tracking ${s.label}`,at:a}}),_(n.id,a);let p=await ue(n.id,d);if(y.current){if(p!==`confirmed`){u(!1),f(P(p));return}r()}},t[5]=o,t[6]=n,t[7]=r,t[8]=l,t[9]=ee):ee=t[9];let te=ee,T=(0,I.useRef)(null),ne;t[10]===r?ne=t[11]:(ne={onEscape:r},t[10]=r,t[11]=ne),c(T,ne);let E=(0,I.useRef)(null),D,O;t[12]===i?(D=t[13],O=t[14]):(D=()=>{i===`track`?E.current?.focus():T.current?.querySelector(`.dash-palette-item`)?.focus()},O=[i],t[12]=i,t[13]=D,t[14]=O),(0,I.useEffect)(D,O);let k,re;t[15]===r?(k=t[16],re=t[17]):(k=()=>{let e=T.current?.parentElement;if(!e)return;let t=t=>{e.contains(t.target)||r()};return document.addEventListener(`pointerdown`,t),()=>document.removeEventListener(`pointerdown`,t)},re=[r],t[15]=r,t[16]=k,t[17]=re),(0,I.useEffect)(k,re);let ie;t[18]===Symbol.for(`react.memo_cache_sentinel`)?(ie=e=>{let t=Array.from(T.current?.querySelectorAll(`.dash-palette-item`)??[]);t.length&&t[(t.indexOf(document.activeElement)+e+t.length)%t.length]?.focus()},t[18]=ie):ie=t[18];let ae=ie,oe=i===`menu`?`menu`:`dialog`,A=i===`menu`?`Add a widget`:`Track a number`,j;t[19]===i?j=t[20]:(j=e=>{i===`menu`&&(e.key===`ArrowDown`||e.key===`ArrowUp`)&&(e.preventDefault(),ae(e.key===`ArrowDown`?1:-1))},t[19]=i,t[20]=j);let se=i===`menu`?(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(`button`,{type:`button`,role:`menuitem`,className:`dash-palette-item dash-palette-lead`,onClick:()=>a(`track`),children:`+ Track a number`}),p.map(e=>(0,L.jsxs)(`button`,{type:`button`,role:`menuitem`,className:`dash-palette-item`,onClick:()=>g(e),children:[`+ `,e.label]},e.key))]}):(0,L.jsxs)(`div`,{className:`dash-ptrack`,children:[(0,L.jsxs)(`div`,{className:`dash-ptrack-head`,children:[(0,L.jsx)(`button`,{type:`button`,className:`dash-ptrack-back`,"aria-label":`Back to widget list`,onClick:()=>a(`menu`),children:`←`}),(0,L.jsx)(`span`,{className:`dash-ptrack-kicker`,children:`Track a number`})]}),m?(0,L.jsxs)(`form`,{className:`dash-ptrack-form`,onSubmit:e=>{e.preventDefault(),te()},children:[(0,L.jsx)(`input`,{ref:E,className:`dash-ptrack-input`,value:o,placeholder:`BTC price, SF temperature, 10-year yield…`,"aria-label":`What number to track`,disabled:l,onChange:e=>s(e.target.value)}),d&&(0,L.jsx)(`p`,{className:`dash-ptrack-err`,children:d}),(0,L.jsx)(`button`,{type:`submit`,className:`dash-ptrack-go`,disabled:l||!o.trim(),children:l?`Planning…`:`Track · 1 call + 1 search`})]}):(0,L.jsxs)(`p`,{className:`dash-ptrack-gate`,children:[`A tracked number is fetched by real web searches on your own key — nothing is ever made up. `,(0,L.jsx)(`a`,{href:`#/live`,children:`Connect a model in Live`}),` first.`]})]}),M;return t[21]!==oe||t[22]!==A||t[23]!==j||t[24]!==se?(M=(0,L.jsx)(`div`,{ref:T,className:`dash-palette`,role:oe,"aria-label":A,tabIndex:-1,onKeyDown:j,children:se}),t[21]=oe,t[22]=A,t[23]=j,t[24]=se,t[25]=M):M=t[25],M}function Ce(e){let t=(0,F.c)(24),{dashboardId:n,metric:r}=e,i=r.lastValue===null?``:String(r.lastValue),[a,o]=(0,I.useState)(i),[s,c]=(0,I.useState)(i);i!==s&&(c(i),o(i));let l;t[0]!==n||t[1]!==r.id||t[2]!==r.lastValue||t[3]!==r.unit||t[4]!==a?(l=()=>{let e=Number(a.replace(/[^0-9.+-]/g,``));if(a.trim()===``||!Number.isFinite(e))return;let t=Date.now(),i=r.lastValue;m(n,r.id,e,k(String(e),r.unit),`user`,t);let o=x(n);if(o){let{tripwires:e}=M(o,{[r.id]:i});h(n,e,t)}},t[0]=n,t[1]=r.id,t[2]=r.lastValue,t[3]=r.unit,t[4]=a,t[5]=l):l=t[5];let u=l,d;t[6]===u?d=t[7]:(d=e=>{e.preventDefault(),u()},t[6]=u,t[7]=d);let f=`Set ${r.label}…`,p=`Set ${r.label}`,g;t[8]===Symbol.for(`react.memo_cache_sentinel`)?(g=e=>o(e.target.value),t[8]=g):g=t[8];let _;t[9]!==f||t[10]!==p||t[11]!==a?(_=(0,L.jsx)(`input`,{className:`dash-fill-input`,value:a,inputMode:`decimal`,placeholder:f,"aria-label":p,onChange:g}),t[9]=f,t[10]=p,t[11]=a,t[12]=_):_=t[12];let v;t[13]===r.unit?v=t[14]:(v=r.unit&&(0,L.jsx)(`span`,{className:`dash-fill-unit`,children:r.unit}),t[13]=r.unit,t[14]=v);let y;t[15]===a?y=t[16]:(y=a.trim(),t[15]=a,t[16]=y);let b=y===``,S;t[17]===b?S=t[18]:(S=(0,L.jsx)(`button`,{type:`submit`,className:`dash-fill-save`,disabled:b,children:`Save`}),t[17]=b,t[18]=S);let C;return t[19]!==S||t[20]!==d||t[21]!==_||t[22]!==v?(C=(0,L.jsxs)(`form`,{className:`dash-fill`,onSubmit:d,children:[_,v,S]}),t[19]=S,t[20]=d,t[21]=_,t[22]=v,t[23]=C):C=t[23],C}r();var we=()=>i(()=>import(`./generateLive-DGwnpIip.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54]));function z(){return!!C(w()).apiKey}function B(e){let t=(0,F.c)(15),[n,r]=(0,I.useState)(!1),[i,a]=(0,I.useState)(null),[o,s]=(0,I.useState)(null),c;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(c=[],t[0]=c):c=t[0];let l=(0,I.useRef)(c),u=(0,I.useRef)(!1),d=(0,I.useRef)(null),f;t[1]===Symbol.for(`react.memo_cache_sentinel`)?(f=()=>{d.current?.abort(),d.current=null,u.current=!1,l.current=[],r(!1),a(null),s(null)},t[1]=f):f=t[1];let p;t[2]===e.id?p=t[3]:(p=[e.id],t[2]=e.id,t[3]=p),(0,I.useEffect)(f,p);let m,h;t[4]===Symbol.for(`react.memo_cache_sentinel`)?(m=()=>()=>d.current?.abort(),h=[],t[4]=m,t[5]=h):(m=t[4],h=t[5]),(0,I.useEffect)(m,h);let g;t[6]===e?g=t[7]:(g=t=>{let n=t.trim();if(!n||u.current||!z())return;u.current=!0,r(!0),s(n);let i=C(w()),o=e.widgets.map(t=>N(e,t)),c=new AbortController;d.current=c,we().then(e=>{let{generateLive:t}=e;return t(n,l.current,i,void 0,{selectedBlocks:o,signal:c.signal,caps:{searchMode:`realtime`}})}).then(e=>{c.signal.aborted||(e.error||(l.current=[...l.current,{role:`user`,content:n},{role:`assistant`,content:e.narration}].slice(-8)),a(e))}).catch(()=>{c.signal.aborted||a(null)}).finally(()=>{c.signal.aborted||(u.current=!1,r(!1))})},t[6]=e,t[7]=g);let _=g,v;t[8]===Symbol.for(`react.memo_cache_sentinel`)?(v=()=>{d.current?.abort(),u.current=!1,r(!1),a(null),s(null)},t[8]=v):v=t[8];let y=v,b;t[9]===Symbol.for(`react.memo_cache_sentinel`)?(b=z(),t[9]=b):b=t[9];let x;return t[10]!==o||t[11]!==n||t[12]!==i||t[13]!==_?(x={ready:b,loading:n,result:i,lastAsk:o,run:_,reset:y},t[10]=o,t[11]=n,t[12]=i,t[13]=_,t[14]=x):x=t[14],x}var Te=/^(add|track|watch|monitor|follow)\b/i;function V(e){let t=e.trim();return t&&Te.test(t)?`add`:`ask`}function Ee(e){let t=[];return e.tripwires.length>0&&t.push(`Are the numbers holding where I want?`,`Which alert is closest to triggering?`),e.metrics[0]&&t.push(`What does ${e.metrics[0].label} tell me right now?`),t.push(`What changed since the last update?`),t.slice(0,3)}function H(e,t,n){n.length!==0&&pe({block:n,question:t,target:e,fromSource:`talk`,firstCheck:!1,source:{kind:`ADDED`,conversationId:`talk`,title:`Asked: “${t}”`,contributed:`Pinned ${Math.min(n.length,4)} from this question`,at:Date.now()}})}function De(e){let t=(0,F.c)(29),{dashboard:n}=e,r=B(n),[i,a]=(0,I.useState)(``),[s,c]=(0,I.useState)(!1),[l,u]=(0,I.useState)(`ask`),d;t[0]===n?d=t[1]:(d=Ee(n),t[0]=n,t[1]=d);let f=d,p;t[2]===r?p=t[3]:(p=e=>{c(!1),u(V(e)),r.run(e),a(``)},t[2]=r,t[3]=p);let m=p,h,g;t[4]!==l||t[5]!==n.id||t[6]!==s||t[7]!==r.lastAsk||t[8]!==r.loading||t[9]!==r.result?(h=()=>{l===`add`&&!r.loading&&r.result&&!r.result.error&&r.result.spec.blocks.length>0&&!s&&(H(n.id,r.lastAsk??``,r.result.spec.blocks),c(!0))},g=[l,r.loading,r.result,r.lastAsk,s,n.id],t[4]=l,t[5]=n.id,t[6]=s,t[7]=r.lastAsk,t[8]=r.loading,t[9]=r.result,t[10]=h,t[11]=g):(h=t[10],g=t[11]),(0,I.useEffect)(h,g);let _;t[12]===Symbol.for(`react.memo_cache_sentinel`)?(_=(0,L.jsx)(`div`,{className:`card-eyebrow dash-talk-eyebrow`,children:`Talk to this dashboard`}),t[12]=_):_=t[12];let v;t[13]!==f||t[14]!==i||t[15]!==m||t[16]!==r.loading||t[17]!==r.ready?(v=r.ready?(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(`div`,{className:`dash-talk-chips`,children:f.map(e=>(0,L.jsxs)(`button`,{type:`button`,className:`dash-talk-chip`,disabled:r.loading,onClick:()=>m(e),children:[(0,L.jsx)(`span`,{className:`dash-talk-chip-orb`}),(0,L.jsxs)(`span`,{className:`dash-talk-chip-t`,children:[`“`,e,`”`]})]},e))}),(0,L.jsxs)(`form`,{className:`dash-talk-ask`,onSubmit:e=>{e.preventDefault(),m(i)},children:[(0,L.jsx)(`input`,{className:`dash-talk-input`,value:i,placeholder:`Ask a question, or type "add …" / "track …" to add it in one step`,onChange:e=>a(e.target.value),disabled:r.loading}),(0,L.jsx)(`button`,{type:`submit`,className:`dash-talk-send`,disabled:r.loading||!i.trim(),children:r.loading?`Thinking…`:`Ask`})]})]}):(0,L.jsxs)(`p`,{className:`dash-talk-gate`,children:[`Connect a model in `,(0,L.jsx)(`a`,{href:`#/live`,children:`Live`}),` to ask questions grounded in this dashboard.`]}),t[13]=f,t[14]=i,t[15]=m,t[16]=r.loading,t[17]=r.ready,t[18]=v):v=t[18];let y;t[19]!==l||t[20]!==n.id||t[21]!==s||t[22]!==r.lastAsk||t[23]!==r.loading||t[24]!==r.result?(y=r.lastAsk&&(0,L.jsxs)(`div`,{className:`dash-talk-answer`,children:[(0,L.jsxs)(`div`,{className:`dash-talk-q`,children:[`“`,r.lastAsk,`”`]}),r.loading?(0,L.jsx)(`div`,{className:`dash-talk-thinking`,children:`Mavéa is looking at your dashboard…`}):r.result?.error?(0,L.jsxs)(`div`,{className:`dash-talk-error`,children:[`That didn’t go through. Check your model in `,(0,L.jsx)(`a`,{href:`#/live`,children:`Live`}),` and try again.`]}):r.result?(0,L.jsxs)(L.Fragment,{children:[r.result.narration&&(0,L.jsx)(`p`,{className:`dash-talk-narration`,children:r.result.narration}),(0,L.jsx)(o,{data:r.result.spec,spot:null,built:{},onProve:U}),r.result.spec.blocks.length>0&&(s?(0,L.jsx)(`div`,{className:`dash-talk-pinned`,children:l===`add`?(0,L.jsx)(L.Fragment,{children:`Auto-added — this read like a command, not a question. Remove it from Edit layout if that’s wrong.`}):`Added to this dashboard ✓`}):l===`add`?null:(0,L.jsx)(`button`,{type:`button`,className:`dash-talk-pin`,onClick:()=>{H(n.id,r.lastAsk??``,r.result.spec.blocks),c(!0)},children:`+ Add this to the dashboard`}))]}):null]}),t[19]=l,t[20]=n.id,t[21]=s,t[22]=r.lastAsk,t[23]=r.loading,t[24]=r.result,t[25]=y):y=t[25];let b;return t[26]!==v||t[27]!==y?(b=(0,L.jsxs)(`section`,{className:`dash-talk`,children:[_,v,y]}),t[26]=v,t[27]=y,t[28]=b):b=t[28],b}function U(){}function Oe(e){if(!e.history||e.history.length<2)return null;let t=e.history[e.history.length-2].value,n=e.history[e.history.length-1].value;if(n===t)return null;let r=n>t?`up`:`down`,i=Math.round(Math.abs(n-t)*100)/100;if(i===0)return null;let a=Number.isInteger(i)?String(i):i.toFixed(2),o=e.unit===`$`?`$`:``,s=e.unit&&e.unit!==`$`?e.unit:``;return{direction:r,text:`${r===`up`?`+`:`-`}${o}${a}${s}`}}function ke(e){return new Date(e).toLocaleTimeString(void 0,{hour:`numeric`,minute:`2-digit`})}function W(e){if(e<=0)return`due now`;let t=Math.round(e/6e4);if(t<60)return`${t}m`;let n=Math.floor(t/60),r=t%60;if(n<24)return r?`${n}h ${r}m`:`${n}h`;let i=Math.floor(n/24),a=n%24;return a?`${i}d ${a}h`:`${i}d`}function Ae({dashboard:e,now:t,checking:n=!1}){let r=(0,I.useMemo)(()=>e.metrics.find(e=>e.lastValue!==null)??e.metrics[0],[e.metrics]),i=E(e);if(!i||!r)return null;let a=Oe(r),o=i.label||e.title,s=r.asOf??e.lastRefreshedAt??null,c=e.cadence.data===`manual`?`when you refresh`:W(e.nextDataAt-t),l=r.history??[];return(0,L.jsxs)(`section`,{className:`card dash-hero`,"aria-label":`${o} — as of last check`,children:[(0,L.jsxs)(`div`,{className:`dash-hero-top`,children:[(0,L.jsxs)(`span`,{className:`dash-hero-eyebrow`,children:[o,`: as of last check`]}),(0,L.jsx)(`span`,{className:`dash-hero-meta`,children:n?`checking for new data…`:`as of ${s?ke(s):`not yet checked`} / not real-time — next check ${c}`})]}),(0,L.jsxs)(`div`,{className:`dash-hero-value-row`,children:[(0,L.jsx)(`span`,{className:`dash-hero-value${n?` tile-value--checking`:``}`,children:i.value}),a&&(0,L.jsx)(`span`,{className:`dash-hero-delta dash-hero-delta--${a.direction}`,children:a.text})]}),(0,L.jsx)(`div`,{className:`dash-hero-chart`,children:l.length>=2?(0,L.jsx)(A,{points:l,tone:a?.direction??`flat`}):(0,L.jsx)(`p`,{className:`dash-hero-chart-empty`,children:`Not enough history yet for a chart.`})})]})}function je(e){let t=(0,F.c)(6),{dashboard:n}=e,[r,i]=te();if(ie().keyNudgeShown||!ee(r)||r.rememberKey||!O(n))return null;let a=Me,o;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(o=(0,L.jsx)(`p`,{className:`dash-key-nudge-text`,children:`Mavéa checks this with your key, which currently lives only in this tab. Keep it on this device (encrypted) so checks still work after a reload?`}),t[0]=o):o=t[0];let s;t[1]===i?s=t[2]:(s=(0,L.jsx)(`button`,{type:`button`,className:`dash-key-nudge-keep`,onClick:()=>{i({rememberKey:!0}),a()},children:`Keep key on this device`}),t[1]=i,t[2]=s);let c;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(c=(0,L.jsx)(`button`,{type:`button`,className:`dash-key-nudge-dismiss`,onClick:a,children:`Not now`}),t[3]=c):c=t[3];let l;return t[4]===s?l=t[5]:(l=(0,L.jsxs)(`div`,{className:`card dash-key-nudge`,children:[o,(0,L.jsxs)(`div`,{className:`dash-key-nudge-actions`,children:[s,c]})]}),t[4]=s,t[5]=l),l}function Me(){return D({keyNudgeShown:!0})}var G={hit:{label:`Called it ✓`,className:`is-hit`},miss:{label:`Missed ✗`,className:`is-miss`},unclear:{label:`Unclear`,className:`is-unclear`}};function K(e){let t=(0,F.c)(21),{dashboard:n,now:r}=e,i;t[0]===n.predictionHistory?i=t[1]:(i=n.predictionHistory??[],t[0]=n.predictionHistory,t[1]=i);let a=i,o=a.length>0?a[a.length-1]:null;if(!n.prediction&&!o)return null;let s;t[2]!==n.predictionHistory||t[3]!==r?(s=le(n.predictionHistory,r),t[2]=n.predictionHistory,t[3]=r,t[4]=s):s=t[4];let c=s,l=o?G[o.result]:null,u;t[5]===Symbol.for(`react.memo_cache_sentinel`)?(u=(0,L.jsx)(`span`,{className:`card-eyebrow dash-expects-eyebrow`,children:`Expects by next check`}),t[5]=u):u=t[5];let d;t[6]===n.prediction?d=t[7]:(d=n.prediction&&(0,L.jsx)(`p`,{className:`dash-expects-text`,children:n.prediction.text}),t[6]=n.prediction,t[7]=d);let f;t[8]!==l||t[9]!==o?(f=o&&l&&(0,L.jsxs)(`div`,{className:`dash-expects-grade`,children:[(0,L.jsxs)(`span`,{className:`dash-expects-chip ${l.className}`,children:[`Last call: `,l.label]}),(0,L.jsxs)(`p`,{className:`dash-expects-expected`,children:[`“`,o.expected,`”`]}),o.note&&(0,L.jsx)(`p`,{className:`dash-expects-note`,children:o.note})]}),t[8]=l,t[9]=o,t[10]=f):f=t[10];let p;t[11]!==c.hits||t[12]!==c.total?(p=c.total>0&&(0,L.jsxs)(`span`,{className:`dash-expects-tally`,children:[`Calls this week · `,c.hits,`/`,c.total]}),t[11]=c.hits,t[12]=c.total,t[13]=p):p=t[13];let m;t[14]===Symbol.for(`react.memo_cache_sentinel`)?(m=(0,L.jsx)(`span`,{className:`dash-expects-label`,children:`Predictions are free — written from checks you already paid for`}),t[14]=m):m=t[14];let h;t[15]===p?h=t[16]:(h=(0,L.jsxs)(`div`,{className:`dash-expects-foot`,children:[p,m]}),t[15]=p,t[16]=h);let g;return t[17]!==d||t[18]!==f||t[19]!==h?(g=(0,L.jsxs)(`div`,{className:`dash-expects`,children:[u,d,f,h]}),t[17]=d,t[18]=f,t[19]=h,t[20]=g):g=t[20],g}function Ne(e){let t=(0,F.c)(23),{dashboard:n,now:r}=e,i=j(n.id);if(!(n.tripwires.length>0||n.lastVerdict||n.prediction||i))return null;let a=n.lastVerdict,o;t[0]!==n.tripwires||t[1]!==a?(o=a?n.tripwires.find(e=>e.id===a.tripwireId)??null:null,t[0]=n.tripwires,t[1]=a,t[2]=o):o=t[2];let s=o,c=!!n.lastVerdictError&&(n.lastVerdictAttemptAt??0)>(a?.at??0),l;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(l=(0,L.jsx)(`span`,{className:`card-eyebrow dash-lastcheck-eyebrow`,children:`From the last check`}),t[3]=l):l=t[3];let u;t[4]!==r||t[5]!==a?(u=a&&(0,L.jsx)(`span`,{className:`dash-lastcheck-when`,children:ae(a.at,r).replace(/^updated /,`checked `)}),t[4]=r,t[5]=a,t[6]=u):u=t[6];let d;t[7]===u?d=t[8]:(d=(0,L.jsxs)(`div`,{className:`dash-lastcheck-head`,children:[l,u]}),t[7]=u,t[8]=d);let f;t[9]!==n||t[10]!==c||t[11]!==r||t[12]!==i||t[13]!==s||t[14]!==a?(f=a?(0,L.jsxs)(L.Fragment,{children:[s&&(0,L.jsxs)(`p`,{className:`dash-lastcheck-text dash-lastcheck-about`,children:[`About: `,s.label]}),i?(0,L.jsx)(`p`,{className:`dash-lastcheck-text dash-lastcheck-pending`,children:`Mavéa is reading the latest numbers…`}):c&&(0,L.jsxs)(`p`,{className:`dash-lastcheck-text dash-lastcheck-error`,children:[`A newer check just failed: `,n.lastVerdictError]}),(0,L.jsx)(`p`,{className:`dash-lastcheck-text`,children:a.text}),a.grounded===!1&&(0,L.jsx)(`p`,{className:`dash-lastcheck-text dash-lastcheck-qualifier`,children:`Based on background knowledge, not a fresh search.`}),a.sources&&a.sources.length>0&&(0,L.jsx)(`div`,{className:`dash-lastcheck-sources`,children:a.sources.map(q)})]}):i?(0,L.jsx)(`p`,{className:`dash-lastcheck-text dash-lastcheck-pending`,children:`Mavéa is reading the latest numbers…`}):c?(0,L.jsx)(`p`,{className:`dash-lastcheck-text dash-lastcheck-error`,children:n.lastVerdictError}):(0,L.jsx)(`p`,{className:`dash-lastcheck-text dash-lastcheck-muted`,children:re(n,r)}),t[9]=n,t[10]=c,t[11]=r,t[12]=i,t[13]=s,t[14]=a,t[15]=f):f=t[15];let p;t[16]!==n||t[17]!==r?(p=(0,L.jsx)(K,{dashboard:n,now:r}),t[16]=n,t[17]=r,t[18]=p):p=t[18];let m;return t[19]!==d||t[20]!==f||t[21]!==p?(m=(0,L.jsxs)(`section`,{className:`dash-lastcheck`,"aria-label":`From the last check`,children:[d,f,p]}),t[19]=d,t[20]=f,t[21]=p,t[22]=m):m=t[22],m}function q(e){let t=l(e.url);return t?(0,L.jsx)(`a`,{className:`dash-lastcheck-source`,href:t,target:`_blank`,rel:`noopener noreferrer`,title:e.title,children:e.title},e.url):null}var J={WATCHING:`Watching`,CLEAR:`Clear`,AWAITING:`Awaiting data`,TRIGGERED:`Triggered`};function Y(e){let t=(0,F.c)(15),{tripwire:n}=e,r=n.state===`TRIGGERED`,i=`dash-alertcard-row`+(r?` is-triggered`:``),a=`dash-switch`+(n.state===`AWAITING`?``:` on`),o;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(o=(0,L.jsx)(`span`,{className:`dash-switch-knob`}),t[0]=o):o=t[0];let s;t[1]===a?s=t[2]:(s=(0,L.jsx)(`span`,{className:a,"aria-hidden":`true`,children:o}),t[1]=a,t[2]=s);let c=n.sourceQuote.text||n.label,l;t[3]===c?l=t[4]:(l=(0,L.jsx)(`span`,{className:`dash-alertcard-line`,children:c}),t[3]=c,t[4]=l);let u;t[5]!==r||t[6]!==n.state?(u=r?(0,L.jsx)(`span`,{className:`dash-alertcard-crossed`,children:`A line you set has been crossed`}):(0,L.jsx)(`span`,{className:`dash-alertcard-state`,children:J[n.state]}),t[5]=r,t[6]=n.state,t[7]=u):u=t[7];let d;t[8]!==l||t[9]!==u?(d=(0,L.jsxs)(`div`,{className:`dash-alertcard-body`,children:[l,u]}),t[8]=l,t[9]=u,t[10]=d):d=t[10];let f;return t[11]!==i||t[12]!==s||t[13]!==d?(f=(0,L.jsxs)(`li`,{className:i,children:[s,d]}),t[11]=i,t[12]=s,t[13]=d,t[14]=f):f=t[14],f}function Pe(e){let t=(0,F.c)(5),{dashboard:n}=e;if(n.tripwires.length===0)return null;let r;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(r=(0,L.jsx)(`div`,{className:`card-eyebrow`,children:`Your alerts`}),t[0]=r):r=t[0];let i;t[1]===n.tripwires?i=t[2]:(i=n.tripwires.map(X),t[1]=n.tripwires,t[2]=i);let a;return t[3]===i?a=t[4]:(a=(0,L.jsxs)(`section`,{className:`card dash-alertcard`,"aria-label":`Your alerts`,children:[r,(0,L.jsx)(`ul`,{className:`dash-alertcard-list`,children:i})]}),t[3]=i,t[4]=a),a}function X(e){return(0,L.jsx)(Y,{tripwire:e},e.id)}var Z={scheduled:`Scheduled`,search:`Search`,sources:`Sources`,extraction:`Extraction`,grounding:`Grounding`,saved:`Saved`,tripwires:`Lines checked`},Fe={updated:`New data saved`,"no-change":`Checked — nothing new`,unverified:`Nothing could be verified`,failed:`The check could not run`};function Ie(e){if(e.endedAt===void 0)return`…`;let t=(e.endedAt-e.startedAt)/1e3;return t<1?`${Math.max(1,Math.round(t*1e3))}ms`:`${t.toFixed(1)}s`}function Le(e){let t=(0,F.c)(13),{dashboardId:n}=e,r,i;t[0]===n?(r=t[1],i=t[2]):(r=()=>u(n),i=()=>u(n),t[0]=n,t[1]=r,t[2]=i);let a=(0,I.useSyncExternalStore)(g,r,i),[o,s]=(0,I.useState)(!1),c=a[0];if(!c)return null;let l;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(l=()=>s(Q),t[3]=l):l=t[3];let d=o?`Hide`:`What happened on the last check?`,f;t[4]!==o||t[5]!==d?(f=(0,L.jsx)(`button`,{type:`button`,className:`crp-toggle`,"aria-expanded":o,onClick:l,children:d}),t[4]=o,t[5]=d,t[6]=f):f=t[6];let m;t[7]!==c||t[8]!==o?(m=o&&(0,L.jsxs)(`ol`,{className:`crp-steps`,children:[c.steps.map(Re),(0,L.jsxs)(`li`,{className:`crp-foot`,children:[(0,L.jsx)(`span`,{children:c.outcome?Fe[c.outcome]:`Running…`}),(0,L.jsx)(`span`,{className:`crp-foot-time`,children:Ie(c)})]}),c.failure&&(0,L.jsx)(`li`,{className:`crp-fix`,children:p(c.failure)})]}),t[7]=c,t[8]=o,t[9]=m):m=t[9];let h;return t[10]!==f||t[11]!==m?(h=(0,L.jsxs)(`section`,{className:`crp`,children:[f,m]}),t[10]=f,t[11]=m,t[12]=h):h=t[12],h}function Re(e,t){return(0,L.jsxs)(`li`,{className:e.ok?`crp-step`:`crp-step is-bad`,children:[(0,L.jsx)(`span`,{className:`crp-step-mark`,"aria-hidden":`true`,children:e.ok?`✓`:`✕`}),(0,L.jsx)(`span`,{className:`crp-step-name`,children:Z[e.name]}),e.count!==void 0&&(0,L.jsx)(`span`,{className:`crp-step-count`,children:e.count}),e.detail&&(0,L.jsx)(`span`,{className:`crp-step-detail`,children:e.detail})]},`${e.name}-${t}`)}function Q(e){return!e}var ze={1:`S`,2:`M`,3:`L`};function $(e){let t=(0,F.c)(120),{id:n}=e,r=ne(),i;t[0]!==r||t[1]!==n?(i=r.find(e=>e.id===n)??null,t[0]=r,t[1]=n,t[2]=i):i=t[2];let o=i,[c,l]=(0,I.useState)(!1),[u,p]=(0,I.useState)(!1),m;t[3]===o?.widgets?m=t[4]:(m=o?.widgets.map(Ge)??[],t[3]=o?.widgets,t[4]=m);let h=m,g;t[5]===o?g=t[6]:(g=e=>o&&d(o.id,e),t[5]=o,t[6]=g);let _=_e(h,g),v;t[7]===o?.widgets?v=t[8]:(v=new Map((o?.widgets??[]).map(We)),t[7]=o?.widgets,t[8]=v);let b=v,x,C;t[9]===o?(x=t[10],C=t[11]):(x=()=>{o&&s(o.widgets.map(Ue))},C=[o],t[9]=o,t[10]=x,t[11]=C),(0,I.useEffect)(x,C);let w=o?.id,E,D;t[12]===w?(E=t[13],D=t[14]):(E=()=>{w&&f(w)},D=[w],t[12]=w,t[13]=E,t[14]=D),(0,I.useEffect)(E,D);let[k,ie]=(0,I.useState)(He),ae,A;t[15]===Symbol.for(`react.memo_cache_sentinel`)?(A=()=>{let e=window.setInterval(()=>ie(Date.now()),3e4);return()=>window.clearInterval(e)},ae=[],t[15]=ae,t[16]=A):(ae=t[15],A=t[16]),(0,I.useEffect)(A,ae);let[j]=te(),M=oe(o?.id??``),[N,le]=(0,I.useState)(`idle`),ue;t[17]===Symbol.for(`react.memo_cache_sentinel`)?(ue=async e=>{le(`busy`);let t=await se(e);le(t===`no-model`||t===`failed`||t===`unverified`?t:`idle`)},t[17]=ue):ue=t[17];let de=ue,[P,fe]=(0,I.useState)(`idle`),pe;t[18]===Symbol.for(`react.memo_cache_sentinel`)?(pe=async e=>{fe(`busy`);let t=await ce(e);fe(t===`no-model`||t===`failed`?t:`idle`)},t[18]=pe):pe=t[18];let ge=pe;if(!o){let e;t[19]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,L.jsx)(`p`,{className:`dash-empty-title`,children:`That dashboard isn’t here.`}),t[19]=e):e=t[19];let n;return t[20]===Symbol.for(`react.memo_cache_sentinel`)?(n=(0,L.jsx)(`div`,{className:`dash-detail`,children:(0,L.jsxs)(`div`,{className:`dash-empty`,children:[e,(0,L.jsxs)(`p`,{className:`dash-empty-how`,children:[`It may have been removed. `,(0,L.jsx)(`a`,{href:T.gallery,children:`Back to your dashboards →`})]})]})}),t[20]=n):n=t[20],n}let ve;t[21]===o.id?ve=t[22]:(ve=(e,t)=>{y(o.id,e,t>=3?1:t+1)},t[21]=o.id,t[22]=ve);let be=ve,R;t[23]!==b||t[24]!==be||t[25]!==o||t[26]!==c||t[27]!==_?(R=_.order.map(e=>{let t=b.get(e);if(!t)return null;let n=t.metricId?o.metrics.find(e=>e.id===t.metricId):null,r=!c&&n?.blankKey?(0,L.jsx)(Ce,{dashboardId:o.id,metric:n}):void 0;return(0,L.jsx)(ye,{dashboard:o,widget:t,editing:c,dragging:_.draggingId===t.id,footer:r,children:c&&(0,L.jsxs)(`div`,{className:`dash-tile-chrome`,children:[(0,L.jsx)(`span`,{className:`dash-tile-handle`,..._.handleProps(t.id),children:`⠿`}),(0,L.jsxs)(`div`,{className:`dash-tile-ctrls`,children:[(0,L.jsx)(`button`,{type:`button`,className:`dash-tile-size`,onClick:()=>be(t.id,t.span),title:`Resize`,children:ze[t.span]}),(0,L.jsx)(`button`,{type:`button`,className:`dash-tile-x`,onClick:()=>S(o.id,t.id),"aria-label":`Remove widget`,children:`×`})]})]})},t.id)}),t[23]=b,t[24]=be,t[25]=o,t[26]=c,t[27]=_,t[28]=R):R=t[28];let xe=R,we;t[29]===Symbol.for(`react.memo_cache_sentinel`)?(we=(0,L.jsx)(`a`,{className:`dash-back`,href:T.gallery,"aria-label":`Back to dashboards`,children:`←`}),t[29]=we):we=t[29];let z;t[30]===o.title?z=t[31]:(z=(0,L.jsx)(`span`,{className:`dash-detail-title`,children:o.title}),t[30]=o.title,t[31]=z);let B;t[32]===o.question?B=t[33]:(B=o.question&&(0,L.jsxs)(`span`,{className:`dash-detail-q`,title:o.question,children:[`“`,o.question,`”`]}),t[32]=o.question,t[33]=B);let Te;t[34]===Symbol.for(`react.memo_cache_sentinel`)?(Te=(0,L.jsx)(`i`,{className:`dash-live-dot`}),t[34]=Te):Te=t[34];let V;t[35]!==o||t[36]!==M||t[37]!==k?(V=M?`checking for new data…`:re(o,k),t[35]=o,t[36]=M,t[37]=k,t[38]=V):V=t[38];let Ee=!M&&O(o)&&o.cadence.data!==`manual`?` · refreshes while open`:``,H;t[39]!==V||t[40]!==Ee?(H=(0,L.jsxs)(`span`,{className:`dash-detail-clock`,children:[Te,V,Ee]}),t[39]=V,t[40]=Ee,t[41]=H):H=t[41];let U;t[42]===o.id?U=t[43]:(U=()=>void de(o.id),t[42]=o.id,t[43]=U);let Oe=N===`busy`,ke=N===`busy`?`dash-refresh-spin`:void 0,W;t[44]===ke?W=t[45]:(W=(0,L.jsx)(a.refresh,{className:ke}),t[44]=ke,t[45]=W);let Me=N===`busy`?`Refreshing…`:`Refresh now`,G;t[46]!==U||t[47]!==Oe||t[48]!==W||t[49]!==Me?(G=(0,L.jsxs)(`button`,{type:`button`,className:`dash-edit-btn dash-refresh-btn`,onClick:U,disabled:Oe,title:`Fetch current values now, regardless of cadence`,children:[W,Me]}),t[46]=U,t[47]=Oe,t[48]=W,t[49]=Me,t[50]=G):G=t[50];let K;t[51]!==o||t[52]!==j||t[53]!==N?(K=(N===`no-model`||!ee(j)&&O(o))&&(0,L.jsx)(`span`,{className:`dash-refresh-hint`,children:`Connect a model in Live settings to refresh.`}),t[51]=o,t[52]=j,t[53]=N,t[54]=K):K=t[54];let q;t[55]===N?q=t[56]:(q=N===`failed`&&(0,L.jsx)(`span`,{className:`dash-refresh-hint`,children:`Couldn’t reach your model — check its key or quota, then try again.`}),t[55]=N,t[56]=q);let J;t[57]===N?J=t[58]:(J=N===`unverified`&&(0,L.jsx)(`span`,{className:`dash-refresh-hint`,children:`Checked, but no source could verify new values — keeping the last real ones.`}),t[57]=N,t[58]=J);let Y;t[59]!==o.id||t[60]!==o.metrics.length||t[61]!==P?(Y=o.metrics.length>0&&(0,L.jsxs)(`button`,{type:`button`,className:`dash-edit-btn dash-read-btn`,onClick:()=>void ge(o.id),disabled:P===`busy`,title:`Ask Mavéa to read the latest numbers now`,children:[(0,L.jsx)(a.sparkle,{className:P===`busy`?`dash-refresh-spin`:void 0}),P===`busy`?`Reading…`:`Read the numbers now`]}),t[59]=o.id,t[60]=o.metrics.length,t[61]=P,t[62]=Y):Y=t[62];let X;t[63]===P?X=t[64]:(X=P===`no-model`&&(0,L.jsx)(`span`,{className:`dash-refresh-hint`,children:`Connect a model in Live settings to read.`}),t[63]=P,t[64]=X);let Z;t[65]===P?Z=t[66]:(Z=P===`failed`&&(0,L.jsx)(`span`,{className:`dash-refresh-hint`,children:`Couldn’t reach your model — check its key or quota, then try again.`}),t[65]=P,t[66]=Z);let Fe=`dash-edit-btn`+(c?` is-active`:``),Ie;t[67]===Symbol.for(`react.memo_cache_sentinel`)?(Ie=()=>{l(Ve),p(!1)},t[67]=Ie):Ie=t[67];let Re=c?`Done`:`Edit layout`,Q;t[68]!==Fe||t[69]!==Re?(Q=(0,L.jsx)(`button`,{type:`button`,className:Fe,onClick:Ie,children:Re}),t[68]=Fe,t[69]=Re,t[70]=Q):Q=t[70];let $;t[71]===o.id?$=t[72]:($=T.settings(o.id),t[71]=o.id,t[72]=$);let Ke;t[73]===$?Ke=t[74]:(Ke=(0,L.jsx)(`a`,{className:`dash-gear`,href:$,"aria-label":`Dashboard settings`,title:`Settings`,children:`⚙`}),t[73]=$,t[74]=Ke);let qe;t[75]!==z||t[76]!==B||t[77]!==H||t[78]!==G||t[79]!==K||t[80]!==q||t[81]!==J||t[82]!==Y||t[83]!==X||t[84]!==Z||t[85]!==Q||t[86]!==Ke?(qe=(0,L.jsxs)(`header`,{className:`dash-detail-head`,children:[we,z,B,H,G,K,q,J,Y,X,Z,Q,Ke]}),t[75]=z,t[76]=B,t[77]=H,t[78]=G,t[79]=K,t[80]=q,t[81]=J,t[82]=Y,t[83]=X,t[84]=Z,t[85]=Q,t[86]=Ke,t[87]=qe):qe=t[87];let Je;t[88]!==o||t[89]!==c?(Je=!c&&(0,L.jsx)(je,{dashboard:o}),t[88]=o,t[89]=c,t[90]=Je):Je=t[90];let Ye;t[91]!==o||t[92]!==M||t[93]!==c||t[94]!==k?(Ye=!c&&(0,L.jsx)(Ae,{dashboard:o,now:k,checking:M}),t[91]=o,t[92]=M,t[93]=c,t[94]=k,t[95]=Ye):Ye=t[95];let Xe;t[96]!==o||t[97]!==c||t[98]!==k?(Xe=!c&&(0,L.jsx)(Ne,{dashboard:o,now:k}),t[96]=o,t[97]=c,t[98]=k,t[99]=Xe):Xe=t[99];let Ze;t[100]!==o||t[101]!==c||t[102]!==u?(Ze=c&&(0,L.jsxs)(`div`,{className:`dash-edit-bar`,children:[(0,L.jsxs)(`span`,{className:`dash-edit-hint`,children:[`Drag a tile by its `,(0,L.jsx)(`strong`,{children:`⠿`}),` handle to reorder, tap `,(0,L.jsx)(`strong`,{children:`S/M/L`}),` to resize, `,(0,L.jsx)(`strong`,{children:`×`}),` to remove.`]}),(0,L.jsx)(`button`,{type:`button`,className:`dash-edit-add`,onClick:()=>p(Be),"aria-expanded":u,children:`+ Add widget`}),u&&(0,L.jsx)(Se,{dashboard:o,onClose:()=>p(!1)})]}),t[100]=o,t[101]=c,t[102]=u,t[103]=Ze):Ze=t[103];let Qe;t[104]!==o||t[105]!==c||t[106]!==k||t[107]!==xe?(Qe=c?(0,L.jsx)(`div`,{className:`dash-grid`,children:xe}):(0,L.jsxs)(`div`,{className:`dash-detail-cols`,children:[(0,L.jsxs)(`div`,{className:`dash-detail-main`,children:[o.widgets.length>0&&(0,L.jsxs)(`div`,{className:`dash-detail-section`,children:[(0,L.jsx)(`div`,{className:`card-eyebrow dash-detail-section-title`,children:`Cards`}),(0,L.jsx)(`div`,{className:`dash-grid`,children:xe})]}),(0,L.jsx)(he,{dashboardId:o.id,now:k}),(0,L.jsx)(Le,{dashboardId:o.id})]}),(0,L.jsxs)(`div`,{className:`dash-detail-side`,children:[(0,L.jsx)(me,{dashboard:o,now:k}),(0,L.jsx)(Pe,{dashboard:o})]})]}),t[104]=o,t[105]=c,t[106]=k,t[107]=xe,t[108]=Qe):Qe=t[108];let $e;t[109]!==o||t[110]!==c?($e=!c&&(0,L.jsx)(De,{dashboard:o},o.id),t[109]=o,t[110]=c,t[111]=$e):$e=t[111];let et;return t[112]!==qe||t[113]!==Je||t[114]!==Ye||t[115]!==Xe||t[116]!==Ze||t[117]!==Qe||t[118]!==$e?(et=(0,L.jsxs)(`div`,{className:`dash-detail`,children:[qe,Je,Ye,Xe,Ze,Qe,$e]}),t[112]=qe,t[113]=Je,t[114]=Ye,t[115]=Xe,t[116]=Ze,t[117]=Qe,t[118]=$e,t[119]=et):et=t[119],et}function Be(e){return!e}function Ve(e){return!e}function He(){return Date.now()}function Ue(e){return e.block}function We(e){return[e.id,e]}function Ge(e){return e.id}export{$ as DashboardDetail};
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/generateLive-D5M8v38b.js","assets/blockLabel-FogyzEQY.js","assets/deepenStore-BWLLzLCY.js","assets/catalog-BHjl-1uH.js","assets/history-D2EH2X6D.js","assets/catalog-DfIYAG3v.js","assets/preload-helper-CiWYd9n-.js","assets/rolldown-runtime-DkW27tQK.js","assets/facts-BUGuVUIc.js","assets/blockTypes-DUDdP3pB.js","assets/streamParse-BX0bAppQ.js","assets/liveSchema-B8Y9HZxd.js","assets/icons-gLFQTv74.js","assets/jsx-runtime-DeHZSEgm.js","assets/spokenText-C88IQJ0M.js","assets/safeImageUrl-BINWXOTz.js","assets/sourceHost-BV3t2XDb.js","assets/annotations-CftUUB13.js","assets/screen-DFWKge3-.js","assets/attachments-BW-vki-E.js","assets/providers-0DthJW_I.js","assets/http-Lar_UMKb.js","assets/info-CiqHR5cs.js","assets/route-CMdTFx0P.js","assets/effort-Bqti44UZ.js","assets/index-CdUH6Eo9.js","assets/react-BZJXY1be.js","assets/compiler-runtime-qQQXpJgv.js","assets/useInView-DsTvv7L_.js","assets/coreIcons-DDTChE1H.js","assets/preloadableLazy-MIX1ApBW.js","assets/cachedImport-DW0gP14h.js","assets/lazyRetry-D50B1UMY.js","assets/theme-D5D55hZi.js","assets/index-BIUYTk1W.css","assets/speed-BOytg6bC.js","assets/cache-CvbSI-pr.js","assets/validate-sGUCmPAs.js","assets/types-C42I77wh.js","assets/json-B0N3XRZU.js","assets/verbatim-DBTj9sPD.js","assets/citation-BsSvaaer.js","assets/number-zqlPMliA.js","assets/receipts-D7zveV-I.js","assets/officeDoc-GU6Cssjf.js","assets/csv-DAqzYXUs.js","assets/search-ZN7v_P5B.js","assets/store-BWLbFXiY.js","assets/contentVault-xfUwSJ3i.js","assets/keyVault-Aw5Y2PjT.js","assets/ready-yBSGJubb.js","assets/shapes-BwoDrn09.js","assets/ledger-BssK9Pv2.js","assets/now-C9-UAzTC.js","assets/select-Dp-OeZfq.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{t as e}from"./react-BZJXY1be.js";import{t}from"./compiler-runtime-qQQXpJgv.js";import{t as n}from"./jsx-runtime-DeHZSEgm.js";import{n as r,t as i}from"./preload-helper-CiWYd9n-.js";import{n as a}from"./icons-gLFQTv74.js";import{t as o}from"./TopicCanvas-CkqP92SC.js";import{a as s}from"./loader-ChcXMM9W.js";import{t as c}from"./useFocusTrap-CJmpNZv2.js";import{r as l}from"./sourceHost-BV3t2XDb.js";import"./canvas-Ct-O9Jok.js";import{B as u,D as d,K as f,L as p,N as m,P as h,W as g,d as _,f as v,k as y,o as b,p as x,w as S}from"./store-Ba9vzL4H.js";import{l as C,n as w,r as ee,u as te}from"./useLiveConfig-B4CmBiAK.js";import{t as T}from"./route-D4kd-D3B.js";import{t as ne}from"./useDashboards-lgQnk2Al.js";import{a as E,f as D,i as O,l as k,n as re,p as ie,t as ae}from"./format-g3dP8OI3.js";import{n as oe}from"./dataPending-DGdCvY5Y.js";import{t as A}from"./AreaChart-DZGCSEwt.js";import"./tiles-D-s6v-mA.js";import{a as j,n as se,o as M,s as N,t as ce}from"./useDashboardLoop-C3iCNS8X.js";import{r as le}from"./predictions-CkVKHq-5.js";import{i as ue,n as de,r as P}from"./confirmAdd-CxWIORcu.js";import{t as fe}from"./planTracker-BwoKEftp.js";import{t as pe}from"./pin-BcKMUOiV.js";/* empty css */import{t as me}from"./CadenceCard-DxceyiPA.js";import{t as he}from"./CheckLogRail-vq2lZ7a5.js";var F=t(),I=e();function ge(e,t){for(let n of document.elementsFromPoint(e,t)){let e=n.closest(`[data-dash-widget]`);if(e)return e.getAttribute(`data-dash-widget`)}return null}function _e(e,t){let[n,r]=(0,I.useState)(null),[i,a]=(0,I.useState)(null),o=(0,I.useRef)({working:null,draggingId:null,onCommit:t,sourceIds:e,cleanup:null});o.current.onCommit=t,o.current.sourceIds=e,(0,I.useEffect)(()=>()=>o.current.cleanup?.(),[]);let s=(0,I.useCallback)(e=>t=>{if(t.button!==0&&t.pointerType===`mouse`)return;t.preventDefault();let n=[...o.current.sourceIds];o.current.working=n,o.current.draggingId=e,r(n),a(e);let i=e=>{let t=ge(e.clientX,e.clientY),n=o.current.draggingId,i=o.current.working;if(!t||!n||!i||t===n)return;let a=i.indexOf(n),s=i.indexOf(t);if(a<0||s<0||a===s)return;let c=[...i];c.splice(s,0,c.splice(a,1)[0]),o.current.working=c,r(c)},s=()=>{window.removeEventListener(`pointermove`,i),window.removeEventListener(`pointerup`,s),window.removeEventListener(`pointercancel`,s),o.current.cleanup=null;let e=o.current.working;o.current.working=null,o.current.draggingId=null,r(null),a(null),e&&o.current.onCommit(e)};o.current.cleanup=s,window.addEventListener(`pointermove`,i),window.addEventListener(`pointerup`,s),window.addEventListener(`pointercancel`,s)},[]),c=(0,I.useCallback)(e=>t=>{if(t.key!==`ArrowUp`&&t.key!==`ArrowDown`)return;t.preventDefault();let n=o.current.sourceIds,r=n.indexOf(e),i=t.key===`ArrowUp`?r-1:r+1;if(r<0||i<0||i>=n.length)return;let a=[...n];a.splice(i,0,a.splice(r,1)[0]),o.current.onCommit(a)},[]);return{draggingId:i,order:n??e,handleProps:e=>({onPointerDown:s(e),onKeyDown:c(e),tabIndex:0,role:`button`,"aria-label":`Drag to reorder, or use arrow keys`})}}var L=n();function ve(e){return{id:`dash-`+(e.id??e.type),workspace:`Dashboards`,title:``,sub:``,opener:``,context:[],blocks:[{...e,col:12,delay:0}],proof:null,extras:{},group:`home`,suggests:[],keywords:[]}}function ye(e){let t=(0,F.c)(18),{dashboard:n,widget:r,editing:i,dragging:a,children:s,footer:c}=e,l;t[0]!==n||t[1]!==r?(l=N(n,r),t[0]=n,t[1]=r,t[2]=l):l=t[2];let u=l,d;t[3]===u?d=t[4]:(d=ve(u),t[3]=u,t[4]=d);let f=d,p=`dash-span-${r.span}`,m=i?`dash-tile--editing`:``,h=a?`dash-tile--dragging`:``,g;t[5]!==p||t[6]!==m||t[7]!==h?(g=[`dash-tile`,p,m,h].filter(Boolean),t[5]=p,t[6]=m,t[7]=h,t[8]=g):g=t[8];let _=g.join(` `),v;t[9]===Symbol.for(`react.memo_cache_sentinel`)?(v={},t[9]=v):v=t[9];let y;t[10]===f?y=t[11]:(y=(0,L.jsx)(o,{data:f,spot:null,built:v,onProve:be}),t[10]=f,t[11]=y);let b;return t[12]!==s||t[13]!==_||t[14]!==c||t[15]!==y||t[16]!==r.id?(b=(0,L.jsxs)(`div`,{className:_,"data-dash-widget":r.id,children:[s,y,c]}),t[12]=s,t[13]=_,t[14]=c,t[15]=y,t[16]=r.id,t[17]=b):b=t[17],b}function be(){}function R(){return`w-`+Math.random().toString(36).slice(2,8)}function xe(e){let t=new Set(e.widgets.map(e=>e.block.type));return[{key:`note`,label:`Note`,make:()=>({block:{type:`list`,col:12,id:R(),props:{title:`Note`,items:[`Add a note about this dashboard.`]}},span:2})},{key:`thesis`,label:`Reasoning note`,make:()=>({block:{type:`thesis`,col:12,id:R(),props:{reasoning:``}},span:2})},{key:`alignmentgauge`,label:`Alignment gauge`,make:()=>({block:{type:`alignmentgauge`,col:12,id:R(),props:{pct:null}},span:1})},{key:`standingalerts`,label:`Standing alerts`,make:()=>({block:{type:`standingalerts`,col:12,id:R(),props:{alerts:[]}},span:1})},{key:`sourceslineage`,label:`Sources`,make:()=>({block:{type:`sourceslineage`,col:12,id:R(),props:{rows:[]}},span:2})}].filter(e=>e.key===`note`||!t.has(e.key))}function Se(e){let t=(0,F.c)(26),{dashboard:n,onClose:r}=e,[i,a]=(0,I.useState)(`menu`),[o,s]=(0,I.useState)(``),[l,u]=(0,I.useState)(!1),[d,f]=(0,I.useState)(null),p=xe(n),m=!!C(w()).apiKey,h;t[0]!==n||t[1]!==r?(h=e=>{let{block:t,span:i}=e.make(),a={id:R(),block:t,span:i,fromSource:`manual`};b(n.id,a),r()},t[0]=n,t[1]=r,t[2]=h):h=t[2];let g=h,y=(0,I.useRef)(!0),x,S;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(x=()=>(y.current=!0,()=>{y.current=!1}),S=[],t[3]=x,t[4]=S):(x=t[3],S=t[4]),(0,I.useEffect)(x,S);let ee;t[5]!==o||t[6]!==n||t[7]!==r||t[8]!==l?(ee=async()=>{let e=o.trim();if(!e||l)return;if(n.metrics.length>=12||n.widgets.length>=12){f(`This board is full — remove a card or metric first, then track another number.`);return}u(!0),f(null);let t=await fe(e,C(w()));if(!y.current)return;let i=t.metrics[0];if(!i){u(!1),f(`No single number found in that — the Track bar on the Dashboards home builds richer trackers.`);return}let a=Date.now(),s={id:`m-${a}`,label:i.label,query:i.query,...i.unit?{unit:i.unit}:{},sourceQuote:{text:i.label,saidAt:a},lastValue:null,origin:`empty`},c={id:R(),block:{type:`insight`,col:12,id:`blk-${a}`,num:`1`,props:{title:s.label,stat:`—`,conf:`inferred`,summary:s.label}},span:1,metricId:s.id,fromSource:`manual`},d=de(n);v(n.id,{metrics:[s],tripwires:[],widgets:[c],source:{kind:`ADDED`,conversationId:`manual`,title:`Added by hand`,contributed:`Tracking ${s.label}`,at:a}}),_(n.id,a);let p=await ue(n.id,d);if(y.current){if(p!==`confirmed`){u(!1),f(P(p));return}r()}},t[5]=o,t[6]=n,t[7]=r,t[8]=l,t[9]=ee):ee=t[9];let te=ee,T=(0,I.useRef)(null),ne;t[10]===r?ne=t[11]:(ne={onEscape:r},t[10]=r,t[11]=ne),c(T,ne);let E=(0,I.useRef)(null),D,O;t[12]===i?(D=t[13],O=t[14]):(D=()=>{i===`track`?E.current?.focus():T.current?.querySelector(`.dash-palette-item`)?.focus()},O=[i],t[12]=i,t[13]=D,t[14]=O),(0,I.useEffect)(D,O);let k,re;t[15]===r?(k=t[16],re=t[17]):(k=()=>{let e=T.current?.parentElement;if(!e)return;let t=t=>{e.contains(t.target)||r()};return document.addEventListener(`pointerdown`,t),()=>document.removeEventListener(`pointerdown`,t)},re=[r],t[15]=r,t[16]=k,t[17]=re),(0,I.useEffect)(k,re);let ie;t[18]===Symbol.for(`react.memo_cache_sentinel`)?(ie=e=>{let t=Array.from(T.current?.querySelectorAll(`.dash-palette-item`)??[]);t.length&&t[(t.indexOf(document.activeElement)+e+t.length)%t.length]?.focus()},t[18]=ie):ie=t[18];let ae=ie,oe=i===`menu`?`menu`:`dialog`,A=i===`menu`?`Add a widget`:`Track a number`,j;t[19]===i?j=t[20]:(j=e=>{i===`menu`&&(e.key===`ArrowDown`||e.key===`ArrowUp`)&&(e.preventDefault(),ae(e.key===`ArrowDown`?1:-1))},t[19]=i,t[20]=j);let se=i===`menu`?(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(`button`,{type:`button`,role:`menuitem`,className:`dash-palette-item dash-palette-lead`,onClick:()=>a(`track`),children:`+ Track a number`}),p.map(e=>(0,L.jsxs)(`button`,{type:`button`,role:`menuitem`,className:`dash-palette-item`,onClick:()=>g(e),children:[`+ `,e.label]},e.key))]}):(0,L.jsxs)(`div`,{className:`dash-ptrack`,children:[(0,L.jsxs)(`div`,{className:`dash-ptrack-head`,children:[(0,L.jsx)(`button`,{type:`button`,className:`dash-ptrack-back`,"aria-label":`Back to widget list`,onClick:()=>a(`menu`),children:`←`}),(0,L.jsx)(`span`,{className:`dash-ptrack-kicker`,children:`Track a number`})]}),m?(0,L.jsxs)(`form`,{className:`dash-ptrack-form`,onSubmit:e=>{e.preventDefault(),te()},children:[(0,L.jsx)(`input`,{ref:E,className:`dash-ptrack-input`,value:o,placeholder:`BTC price, SF temperature, 10-year yield…`,"aria-label":`What number to track`,disabled:l,onChange:e=>s(e.target.value)}),d&&(0,L.jsx)(`p`,{className:`dash-ptrack-err`,children:d}),(0,L.jsx)(`button`,{type:`submit`,className:`dash-ptrack-go`,disabled:l||!o.trim(),children:l?`Planning…`:`Track · 1 call + 1 search`})]}):(0,L.jsxs)(`p`,{className:`dash-ptrack-gate`,children:[`A tracked number is fetched by real web searches on your own key — nothing is ever made up. `,(0,L.jsx)(`a`,{href:`#/live`,children:`Connect a model in Live`}),` first.`]})]}),M;return t[21]!==oe||t[22]!==A||t[23]!==j||t[24]!==se?(M=(0,L.jsx)(`div`,{ref:T,className:`dash-palette`,role:oe,"aria-label":A,tabIndex:-1,onKeyDown:j,children:se}),t[21]=oe,t[22]=A,t[23]=j,t[24]=se,t[25]=M):M=t[25],M}function Ce(e){let t=(0,F.c)(24),{dashboardId:n,metric:r}=e,i=r.lastValue===null?``:String(r.lastValue),[a,o]=(0,I.useState)(i),[s,c]=(0,I.useState)(i);i!==s&&(c(i),o(i));let l;t[0]!==n||t[1]!==r.id||t[2]!==r.lastValue||t[3]!==r.unit||t[4]!==a?(l=()=>{let e=Number(a.replace(/[^0-9.+-]/g,``));if(a.trim()===``||!Number.isFinite(e))return;let t=Date.now(),i=r.lastValue;m(n,r.id,e,k(String(e),r.unit),`user`,t);let o=x(n);if(o){let{tripwires:e}=M(o,{[r.id]:i});h(n,e,t)}},t[0]=n,t[1]=r.id,t[2]=r.lastValue,t[3]=r.unit,t[4]=a,t[5]=l):l=t[5];let u=l,d;t[6]===u?d=t[7]:(d=e=>{e.preventDefault(),u()},t[6]=u,t[7]=d);let f=`Set ${r.label}…`,p=`Set ${r.label}`,g;t[8]===Symbol.for(`react.memo_cache_sentinel`)?(g=e=>o(e.target.value),t[8]=g):g=t[8];let _;t[9]!==f||t[10]!==p||t[11]!==a?(_=(0,L.jsx)(`input`,{className:`dash-fill-input`,value:a,inputMode:`decimal`,placeholder:f,"aria-label":p,onChange:g}),t[9]=f,t[10]=p,t[11]=a,t[12]=_):_=t[12];let v;t[13]===r.unit?v=t[14]:(v=r.unit&&(0,L.jsx)(`span`,{className:`dash-fill-unit`,children:r.unit}),t[13]=r.unit,t[14]=v);let y;t[15]===a?y=t[16]:(y=a.trim(),t[15]=a,t[16]=y);let b=y===``,S;t[17]===b?S=t[18]:(S=(0,L.jsx)(`button`,{type:`submit`,className:`dash-fill-save`,disabled:b,children:`Save`}),t[17]=b,t[18]=S);let C;return t[19]!==S||t[20]!==d||t[21]!==_||t[22]!==v?(C=(0,L.jsxs)(`form`,{className:`dash-fill`,onSubmit:d,children:[_,v,S]}),t[19]=S,t[20]=d,t[21]=_,t[22]=v,t[23]=C):C=t[23],C}r();var we=()=>i(()=>import(`./generateLive-D5M8v38b.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54]));function z(){return!!C(w()).apiKey}function B(e){let t=(0,F.c)(15),[n,r]=(0,I.useState)(!1),[i,a]=(0,I.useState)(null),[o,s]=(0,I.useState)(null),c;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(c=[],t[0]=c):c=t[0];let l=(0,I.useRef)(c),u=(0,I.useRef)(!1),d=(0,I.useRef)(null),f;t[1]===Symbol.for(`react.memo_cache_sentinel`)?(f=()=>{d.current?.abort(),d.current=null,u.current=!1,l.current=[],r(!1),a(null),s(null)},t[1]=f):f=t[1];let p;t[2]===e.id?p=t[3]:(p=[e.id],t[2]=e.id,t[3]=p),(0,I.useEffect)(f,p);let m,h;t[4]===Symbol.for(`react.memo_cache_sentinel`)?(m=()=>()=>d.current?.abort(),h=[],t[4]=m,t[5]=h):(m=t[4],h=t[5]),(0,I.useEffect)(m,h);let g;t[6]===e?g=t[7]:(g=t=>{let n=t.trim();if(!n||u.current||!z())return;u.current=!0,r(!0),s(n);let i=C(w()),o=e.widgets.map(t=>N(e,t)),c=new AbortController;d.current=c,we().then(e=>{let{generateLive:t}=e;return t(n,l.current,i,void 0,{selectedBlocks:o,signal:c.signal,caps:{searchMode:`realtime`}})}).then(e=>{c.signal.aborted||(e.error||(l.current=[...l.current,{role:`user`,content:n},{role:`assistant`,content:e.narration}].slice(-8)),a(e))}).catch(()=>{c.signal.aborted||a(null)}).finally(()=>{c.signal.aborted||(u.current=!1,r(!1))})},t[6]=e,t[7]=g);let _=g,v;t[8]===Symbol.for(`react.memo_cache_sentinel`)?(v=()=>{d.current?.abort(),u.current=!1,r(!1),a(null),s(null)},t[8]=v):v=t[8];let y=v,b;t[9]===Symbol.for(`react.memo_cache_sentinel`)?(b=z(),t[9]=b):b=t[9];let x;return t[10]!==o||t[11]!==n||t[12]!==i||t[13]!==_?(x={ready:b,loading:n,result:i,lastAsk:o,run:_,reset:y},t[10]=o,t[11]=n,t[12]=i,t[13]=_,t[14]=x):x=t[14],x}var Te=/^(add|track|watch|monitor|follow)\b/i;function V(e){let t=e.trim();return t&&Te.test(t)?`add`:`ask`}function Ee(e){let t=[];return e.tripwires.length>0&&t.push(`Are the numbers holding where I want?`,`Which alert is closest to triggering?`),e.metrics[0]&&t.push(`What does ${e.metrics[0].label} tell me right now?`),t.push(`What changed since the last update?`),t.slice(0,3)}function H(e,t,n){n.length!==0&&pe({block:n,question:t,target:e,fromSource:`talk`,firstCheck:!1,source:{kind:`ADDED`,conversationId:`talk`,title:`Asked: “${t}”`,contributed:`Pinned ${Math.min(n.length,4)} from this question`,at:Date.now()}})}function De(e){let t=(0,F.c)(29),{dashboard:n}=e,r=B(n),[i,a]=(0,I.useState)(``),[s,c]=(0,I.useState)(!1),[l,u]=(0,I.useState)(`ask`),d;t[0]===n?d=t[1]:(d=Ee(n),t[0]=n,t[1]=d);let f=d,p;t[2]===r?p=t[3]:(p=e=>{c(!1),u(V(e)),r.run(e),a(``)},t[2]=r,t[3]=p);let m=p,h,g;t[4]!==l||t[5]!==n.id||t[6]!==s||t[7]!==r.lastAsk||t[8]!==r.loading||t[9]!==r.result?(h=()=>{l===`add`&&!r.loading&&r.result&&!r.result.error&&r.result.spec.blocks.length>0&&!s&&(H(n.id,r.lastAsk??``,r.result.spec.blocks),c(!0))},g=[l,r.loading,r.result,r.lastAsk,s,n.id],t[4]=l,t[5]=n.id,t[6]=s,t[7]=r.lastAsk,t[8]=r.loading,t[9]=r.result,t[10]=h,t[11]=g):(h=t[10],g=t[11]),(0,I.useEffect)(h,g);let _;t[12]===Symbol.for(`react.memo_cache_sentinel`)?(_=(0,L.jsx)(`div`,{className:`card-eyebrow dash-talk-eyebrow`,children:`Talk to this dashboard`}),t[12]=_):_=t[12];let v;t[13]!==f||t[14]!==i||t[15]!==m||t[16]!==r.loading||t[17]!==r.ready?(v=r.ready?(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(`div`,{className:`dash-talk-chips`,children:f.map(e=>(0,L.jsxs)(`button`,{type:`button`,className:`dash-talk-chip`,disabled:r.loading,onClick:()=>m(e),children:[(0,L.jsx)(`span`,{className:`dash-talk-chip-orb`}),(0,L.jsxs)(`span`,{className:`dash-talk-chip-t`,children:[`“`,e,`”`]})]},e))}),(0,L.jsxs)(`form`,{className:`dash-talk-ask`,onSubmit:e=>{e.preventDefault(),m(i)},children:[(0,L.jsx)(`input`,{className:`dash-talk-input`,value:i,placeholder:`Ask a question, or type "add …" / "track …" to add it in one step`,onChange:e=>a(e.target.value),disabled:r.loading}),(0,L.jsx)(`button`,{type:`submit`,className:`dash-talk-send`,disabled:r.loading||!i.trim(),children:r.loading?`Thinking…`:`Ask`})]})]}):(0,L.jsxs)(`p`,{className:`dash-talk-gate`,children:[`Connect a model in `,(0,L.jsx)(`a`,{href:`#/live`,children:`Live`}),` to ask questions grounded in this dashboard.`]}),t[13]=f,t[14]=i,t[15]=m,t[16]=r.loading,t[17]=r.ready,t[18]=v):v=t[18];let y;t[19]!==l||t[20]!==n.id||t[21]!==s||t[22]!==r.lastAsk||t[23]!==r.loading||t[24]!==r.result?(y=r.lastAsk&&(0,L.jsxs)(`div`,{className:`dash-talk-answer`,children:[(0,L.jsxs)(`div`,{className:`dash-talk-q`,children:[`“`,r.lastAsk,`”`]}),r.loading?(0,L.jsx)(`div`,{className:`dash-talk-thinking`,children:`Mavéa is looking at your dashboard…`}):r.result?.error?(0,L.jsxs)(`div`,{className:`dash-talk-error`,children:[`That didn’t go through. Check your model in `,(0,L.jsx)(`a`,{href:`#/live`,children:`Live`}),` and try again.`]}):r.result?(0,L.jsxs)(L.Fragment,{children:[r.result.narration&&(0,L.jsx)(`p`,{className:`dash-talk-narration`,children:r.result.narration}),(0,L.jsx)(o,{data:r.result.spec,spot:null,built:{},onProve:U}),r.result.spec.blocks.length>0&&(s?(0,L.jsx)(`div`,{className:`dash-talk-pinned`,children:l===`add`?(0,L.jsx)(L.Fragment,{children:`Auto-added — this read like a command, not a question. Remove it from Edit layout if that’s wrong.`}):`Added to this dashboard ✓`}):l===`add`?null:(0,L.jsx)(`button`,{type:`button`,className:`dash-talk-pin`,onClick:()=>{H(n.id,r.lastAsk??``,r.result.spec.blocks),c(!0)},children:`+ Add this to the dashboard`}))]}):null]}),t[19]=l,t[20]=n.id,t[21]=s,t[22]=r.lastAsk,t[23]=r.loading,t[24]=r.result,t[25]=y):y=t[25];let b;return t[26]!==v||t[27]!==y?(b=(0,L.jsxs)(`section`,{className:`dash-talk`,children:[_,v,y]}),t[26]=v,t[27]=y,t[28]=b):b=t[28],b}function U(){}function Oe(e){if(!e.history||e.history.length<2)return null;let t=e.history[e.history.length-2].value,n=e.history[e.history.length-1].value;if(n===t)return null;let r=n>t?`up`:`down`,i=Math.round(Math.abs(n-t)*100)/100;if(i===0)return null;let a=Number.isInteger(i)?String(i):i.toFixed(2),o=e.unit===`$`?`$`:``,s=e.unit&&e.unit!==`$`?e.unit:``;return{direction:r,text:`${r===`up`?`+`:`-`}${o}${a}${s}`}}function ke(e){return new Date(e).toLocaleTimeString(void 0,{hour:`numeric`,minute:`2-digit`})}function W(e){if(e<=0)return`due now`;let t=Math.round(e/6e4);if(t<60)return`${t}m`;let n=Math.floor(t/60),r=t%60;if(n<24)return r?`${n}h ${r}m`:`${n}h`;let i=Math.floor(n/24),a=n%24;return a?`${i}d ${a}h`:`${i}d`}function Ae({dashboard:e,now:t,checking:n=!1}){let r=(0,I.useMemo)(()=>e.metrics.find(e=>e.lastValue!==null)??e.metrics[0],[e.metrics]),i=E(e);if(!i||!r)return null;let a=Oe(r),o=i.label||e.title,s=r.asOf??e.lastRefreshedAt??null,c=e.cadence.data===`manual`?`when you refresh`:W(e.nextDataAt-t),l=r.history??[];return(0,L.jsxs)(`section`,{className:`card dash-hero`,"aria-label":`${o} — as of last check`,children:[(0,L.jsxs)(`div`,{className:`dash-hero-top`,children:[(0,L.jsxs)(`span`,{className:`dash-hero-eyebrow`,children:[o,`: as of last check`]}),(0,L.jsx)(`span`,{className:`dash-hero-meta`,children:n?`checking for new data…`:`as of ${s?ke(s):`not yet checked`} / not real-time — next check ${c}`})]}),(0,L.jsxs)(`div`,{className:`dash-hero-value-row`,children:[(0,L.jsx)(`span`,{className:`dash-hero-value${n?` tile-value--checking`:``}`,children:i.value}),a&&(0,L.jsx)(`span`,{className:`dash-hero-delta dash-hero-delta--${a.direction}`,children:a.text})]}),(0,L.jsx)(`div`,{className:`dash-hero-chart`,children:l.length>=2?(0,L.jsx)(A,{points:l,tone:a?.direction??`flat`}):(0,L.jsx)(`p`,{className:`dash-hero-chart-empty`,children:`Not enough history yet for a chart.`})})]})}function je(e){let t=(0,F.c)(6),{dashboard:n}=e,[r,i]=te();if(ie().keyNudgeShown||!ee(r)||r.rememberKey||!O(n))return null;let a=Me,o;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(o=(0,L.jsx)(`p`,{className:`dash-key-nudge-text`,children:`Mavéa checks this with your key, which currently lives only in this tab. Keep it on this device (encrypted) so checks still work after a reload?`}),t[0]=o):o=t[0];let s;t[1]===i?s=t[2]:(s=(0,L.jsx)(`button`,{type:`button`,className:`dash-key-nudge-keep`,onClick:()=>{i({rememberKey:!0}),a()},children:`Keep key on this device`}),t[1]=i,t[2]=s);let c;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(c=(0,L.jsx)(`button`,{type:`button`,className:`dash-key-nudge-dismiss`,onClick:a,children:`Not now`}),t[3]=c):c=t[3];let l;return t[4]===s?l=t[5]:(l=(0,L.jsxs)(`div`,{className:`card dash-key-nudge`,children:[o,(0,L.jsxs)(`div`,{className:`dash-key-nudge-actions`,children:[s,c]})]}),t[4]=s,t[5]=l),l}function Me(){return D({keyNudgeShown:!0})}var G={hit:{label:`Called it ✓`,className:`is-hit`},miss:{label:`Missed ✗`,className:`is-miss`},unclear:{label:`Unclear`,className:`is-unclear`}};function K(e){let t=(0,F.c)(21),{dashboard:n,now:r}=e,i;t[0]===n.predictionHistory?i=t[1]:(i=n.predictionHistory??[],t[0]=n.predictionHistory,t[1]=i);let a=i,o=a.length>0?a[a.length-1]:null;if(!n.prediction&&!o)return null;let s;t[2]!==n.predictionHistory||t[3]!==r?(s=le(n.predictionHistory,r),t[2]=n.predictionHistory,t[3]=r,t[4]=s):s=t[4];let c=s,l=o?G[o.result]:null,u;t[5]===Symbol.for(`react.memo_cache_sentinel`)?(u=(0,L.jsx)(`span`,{className:`card-eyebrow dash-expects-eyebrow`,children:`Expects by next check`}),t[5]=u):u=t[5];let d;t[6]===n.prediction?d=t[7]:(d=n.prediction&&(0,L.jsx)(`p`,{className:`dash-expects-text`,children:n.prediction.text}),t[6]=n.prediction,t[7]=d);let f;t[8]!==l||t[9]!==o?(f=o&&l&&(0,L.jsxs)(`div`,{className:`dash-expects-grade`,children:[(0,L.jsxs)(`span`,{className:`dash-expects-chip ${l.className}`,children:[`Last call: `,l.label]}),(0,L.jsxs)(`p`,{className:`dash-expects-expected`,children:[`“`,o.expected,`”`]}),o.note&&(0,L.jsx)(`p`,{className:`dash-expects-note`,children:o.note})]}),t[8]=l,t[9]=o,t[10]=f):f=t[10];let p;t[11]!==c.hits||t[12]!==c.total?(p=c.total>0&&(0,L.jsxs)(`span`,{className:`dash-expects-tally`,children:[`Calls this week · `,c.hits,`/`,c.total]}),t[11]=c.hits,t[12]=c.total,t[13]=p):p=t[13];let m;t[14]===Symbol.for(`react.memo_cache_sentinel`)?(m=(0,L.jsx)(`span`,{className:`dash-expects-label`,children:`Predictions are free — written from checks you already paid for`}),t[14]=m):m=t[14];let h;t[15]===p?h=t[16]:(h=(0,L.jsxs)(`div`,{className:`dash-expects-foot`,children:[p,m]}),t[15]=p,t[16]=h);let g;return t[17]!==d||t[18]!==f||t[19]!==h?(g=(0,L.jsxs)(`div`,{className:`dash-expects`,children:[u,d,f,h]}),t[17]=d,t[18]=f,t[19]=h,t[20]=g):g=t[20],g}function Ne(e){let t=(0,F.c)(23),{dashboard:n,now:r}=e,i=j(n.id);if(!(n.tripwires.length>0||n.lastVerdict||n.prediction||i))return null;let a=n.lastVerdict,o;t[0]!==n.tripwires||t[1]!==a?(o=a?n.tripwires.find(e=>e.id===a.tripwireId)??null:null,t[0]=n.tripwires,t[1]=a,t[2]=o):o=t[2];let s=o,c=!!n.lastVerdictError&&(n.lastVerdictAttemptAt??0)>(a?.at??0),l;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(l=(0,L.jsx)(`span`,{className:`card-eyebrow dash-lastcheck-eyebrow`,children:`From the last check`}),t[3]=l):l=t[3];let u;t[4]!==r||t[5]!==a?(u=a&&(0,L.jsx)(`span`,{className:`dash-lastcheck-when`,children:ae(a.at,r).replace(/^updated /,`checked `)}),t[4]=r,t[5]=a,t[6]=u):u=t[6];let d;t[7]===u?d=t[8]:(d=(0,L.jsxs)(`div`,{className:`dash-lastcheck-head`,children:[l,u]}),t[7]=u,t[8]=d);let f;t[9]!==n||t[10]!==c||t[11]!==r||t[12]!==i||t[13]!==s||t[14]!==a?(f=a?(0,L.jsxs)(L.Fragment,{children:[s&&(0,L.jsxs)(`p`,{className:`dash-lastcheck-text dash-lastcheck-about`,children:[`About: `,s.label]}),i?(0,L.jsx)(`p`,{className:`dash-lastcheck-text dash-lastcheck-pending`,children:`Mavéa is reading the latest numbers…`}):c&&(0,L.jsxs)(`p`,{className:`dash-lastcheck-text dash-lastcheck-error`,children:[`A newer check just failed: `,n.lastVerdictError]}),(0,L.jsx)(`p`,{className:`dash-lastcheck-text`,children:a.text}),a.grounded===!1&&(0,L.jsx)(`p`,{className:`dash-lastcheck-text dash-lastcheck-qualifier`,children:`Based on background knowledge, not a fresh search.`}),a.sources&&a.sources.length>0&&(0,L.jsx)(`div`,{className:`dash-lastcheck-sources`,children:a.sources.map(q)})]}):i?(0,L.jsx)(`p`,{className:`dash-lastcheck-text dash-lastcheck-pending`,children:`Mavéa is reading the latest numbers…`}):c?(0,L.jsx)(`p`,{className:`dash-lastcheck-text dash-lastcheck-error`,children:n.lastVerdictError}):(0,L.jsx)(`p`,{className:`dash-lastcheck-text dash-lastcheck-muted`,children:re(n,r)}),t[9]=n,t[10]=c,t[11]=r,t[12]=i,t[13]=s,t[14]=a,t[15]=f):f=t[15];let p;t[16]!==n||t[17]!==r?(p=(0,L.jsx)(K,{dashboard:n,now:r}),t[16]=n,t[17]=r,t[18]=p):p=t[18];let m;return t[19]!==d||t[20]!==f||t[21]!==p?(m=(0,L.jsxs)(`section`,{className:`dash-lastcheck`,"aria-label":`From the last check`,children:[d,f,p]}),t[19]=d,t[20]=f,t[21]=p,t[22]=m):m=t[22],m}function q(e){let t=l(e.url);return t?(0,L.jsx)(`a`,{className:`dash-lastcheck-source`,href:t,target:`_blank`,rel:`noopener noreferrer`,title:e.title,children:e.title},e.url):null}var J={WATCHING:`Watching`,CLEAR:`Clear`,AWAITING:`Awaiting data`,TRIGGERED:`Triggered`};function Y(e){let t=(0,F.c)(15),{tripwire:n}=e,r=n.state===`TRIGGERED`,i=`dash-alertcard-row`+(r?` is-triggered`:``),a=`dash-switch`+(n.state===`AWAITING`?``:` on`),o;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(o=(0,L.jsx)(`span`,{className:`dash-switch-knob`}),t[0]=o):o=t[0];let s;t[1]===a?s=t[2]:(s=(0,L.jsx)(`span`,{className:a,"aria-hidden":`true`,children:o}),t[1]=a,t[2]=s);let c=n.sourceQuote.text||n.label,l;t[3]===c?l=t[4]:(l=(0,L.jsx)(`span`,{className:`dash-alertcard-line`,children:c}),t[3]=c,t[4]=l);let u;t[5]!==r||t[6]!==n.state?(u=r?(0,L.jsx)(`span`,{className:`dash-alertcard-crossed`,children:`A line you set has been crossed`}):(0,L.jsx)(`span`,{className:`dash-alertcard-state`,children:J[n.state]}),t[5]=r,t[6]=n.state,t[7]=u):u=t[7];let d;t[8]!==l||t[9]!==u?(d=(0,L.jsxs)(`div`,{className:`dash-alertcard-body`,children:[l,u]}),t[8]=l,t[9]=u,t[10]=d):d=t[10];let f;return t[11]!==i||t[12]!==s||t[13]!==d?(f=(0,L.jsxs)(`li`,{className:i,children:[s,d]}),t[11]=i,t[12]=s,t[13]=d,t[14]=f):f=t[14],f}function Pe(e){let t=(0,F.c)(5),{dashboard:n}=e;if(n.tripwires.length===0)return null;let r;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(r=(0,L.jsx)(`div`,{className:`card-eyebrow`,children:`Your alerts`}),t[0]=r):r=t[0];let i;t[1]===n.tripwires?i=t[2]:(i=n.tripwires.map(X),t[1]=n.tripwires,t[2]=i);let a;return t[3]===i?a=t[4]:(a=(0,L.jsxs)(`section`,{className:`card dash-alertcard`,"aria-label":`Your alerts`,children:[r,(0,L.jsx)(`ul`,{className:`dash-alertcard-list`,children:i})]}),t[3]=i,t[4]=a),a}function X(e){return(0,L.jsx)(Y,{tripwire:e},e.id)}var Z={scheduled:`Scheduled`,search:`Search`,sources:`Sources`,extraction:`Extraction`,grounding:`Grounding`,saved:`Saved`,tripwires:`Lines checked`},Fe={updated:`New data saved`,"no-change":`Checked — nothing new`,unverified:`Nothing could be verified`,failed:`The check could not run`};function Ie(e){if(e.endedAt===void 0)return`…`;let t=(e.endedAt-e.startedAt)/1e3;return t<1?`${Math.max(1,Math.round(t*1e3))}ms`:`${t.toFixed(1)}s`}function Le(e){let t=(0,F.c)(13),{dashboardId:n}=e,r,i;t[0]===n?(r=t[1],i=t[2]):(r=()=>u(n),i=()=>u(n),t[0]=n,t[1]=r,t[2]=i);let a=(0,I.useSyncExternalStore)(g,r,i),[o,s]=(0,I.useState)(!1),c=a[0];if(!c)return null;let l;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(l=()=>s(Q),t[3]=l):l=t[3];let d=o?`Hide`:`What happened on the last check?`,f;t[4]!==o||t[5]!==d?(f=(0,L.jsx)(`button`,{type:`button`,className:`crp-toggle`,"aria-expanded":o,onClick:l,children:d}),t[4]=o,t[5]=d,t[6]=f):f=t[6];let m;t[7]!==c||t[8]!==o?(m=o&&(0,L.jsxs)(`ol`,{className:`crp-steps`,children:[c.steps.map(Re),(0,L.jsxs)(`li`,{className:`crp-foot`,children:[(0,L.jsx)(`span`,{children:c.outcome?Fe[c.outcome]:`Running…`}),(0,L.jsx)(`span`,{className:`crp-foot-time`,children:Ie(c)})]}),c.failure&&(0,L.jsx)(`li`,{className:`crp-fix`,children:p(c.failure)})]}),t[7]=c,t[8]=o,t[9]=m):m=t[9];let h;return t[10]!==f||t[11]!==m?(h=(0,L.jsxs)(`section`,{className:`crp`,children:[f,m]}),t[10]=f,t[11]=m,t[12]=h):h=t[12],h}function Re(e,t){return(0,L.jsxs)(`li`,{className:e.ok?`crp-step`:`crp-step is-bad`,children:[(0,L.jsx)(`span`,{className:`crp-step-mark`,"aria-hidden":`true`,children:e.ok?`✓`:`✕`}),(0,L.jsx)(`span`,{className:`crp-step-name`,children:Z[e.name]}),e.count!==void 0&&(0,L.jsx)(`span`,{className:`crp-step-count`,children:e.count}),e.detail&&(0,L.jsx)(`span`,{className:`crp-step-detail`,children:e.detail})]},`${e.name}-${t}`)}function Q(e){return!e}var ze={1:`S`,2:`M`,3:`L`};function $(e){let t=(0,F.c)(120),{id:n}=e,r=ne(),i;t[0]!==r||t[1]!==n?(i=r.find(e=>e.id===n)??null,t[0]=r,t[1]=n,t[2]=i):i=t[2];let o=i,[c,l]=(0,I.useState)(!1),[u,p]=(0,I.useState)(!1),m;t[3]===o?.widgets?m=t[4]:(m=o?.widgets.map(Ge)??[],t[3]=o?.widgets,t[4]=m);let h=m,g;t[5]===o?g=t[6]:(g=e=>o&&d(o.id,e),t[5]=o,t[6]=g);let _=_e(h,g),v;t[7]===o?.widgets?v=t[8]:(v=new Map((o?.widgets??[]).map(We)),t[7]=o?.widgets,t[8]=v);let b=v,x,C;t[9]===o?(x=t[10],C=t[11]):(x=()=>{o&&s(o.widgets.map(Ue))},C=[o],t[9]=o,t[10]=x,t[11]=C),(0,I.useEffect)(x,C);let w=o?.id,E,D;t[12]===w?(E=t[13],D=t[14]):(E=()=>{w&&f(w)},D=[w],t[12]=w,t[13]=E,t[14]=D),(0,I.useEffect)(E,D);let[k,ie]=(0,I.useState)(He),ae,A;t[15]===Symbol.for(`react.memo_cache_sentinel`)?(A=()=>{let e=window.setInterval(()=>ie(Date.now()),3e4);return()=>window.clearInterval(e)},ae=[],t[15]=ae,t[16]=A):(ae=t[15],A=t[16]),(0,I.useEffect)(A,ae);let[j]=te(),M=oe(o?.id??``),[N,le]=(0,I.useState)(`idle`),ue;t[17]===Symbol.for(`react.memo_cache_sentinel`)?(ue=async e=>{le(`busy`);let t=await se(e);le(t===`no-model`||t===`failed`||t===`unverified`?t:`idle`)},t[17]=ue):ue=t[17];let de=ue,[P,fe]=(0,I.useState)(`idle`),pe;t[18]===Symbol.for(`react.memo_cache_sentinel`)?(pe=async e=>{fe(`busy`);let t=await ce(e);fe(t===`no-model`||t===`failed`?t:`idle`)},t[18]=pe):pe=t[18];let ge=pe;if(!o){let e;t[19]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,L.jsx)(`p`,{className:`dash-empty-title`,children:`That dashboard isn’t here.`}),t[19]=e):e=t[19];let n;return t[20]===Symbol.for(`react.memo_cache_sentinel`)?(n=(0,L.jsx)(`div`,{className:`dash-detail`,children:(0,L.jsxs)(`div`,{className:`dash-empty`,children:[e,(0,L.jsxs)(`p`,{className:`dash-empty-how`,children:[`It may have been removed. `,(0,L.jsx)(`a`,{href:T.gallery,children:`Back to your dashboards →`})]})]})}),t[20]=n):n=t[20],n}let ve;t[21]===o.id?ve=t[22]:(ve=(e,t)=>{y(o.id,e,t>=3?1:t+1)},t[21]=o.id,t[22]=ve);let be=ve,R;t[23]!==b||t[24]!==be||t[25]!==o||t[26]!==c||t[27]!==_?(R=_.order.map(e=>{let t=b.get(e);if(!t)return null;let n=t.metricId?o.metrics.find(e=>e.id===t.metricId):null,r=!c&&n?.blankKey?(0,L.jsx)(Ce,{dashboardId:o.id,metric:n}):void 0;return(0,L.jsx)(ye,{dashboard:o,widget:t,editing:c,dragging:_.draggingId===t.id,footer:r,children:c&&(0,L.jsxs)(`div`,{className:`dash-tile-chrome`,children:[(0,L.jsx)(`span`,{className:`dash-tile-handle`,..._.handleProps(t.id),children:`⠿`}),(0,L.jsxs)(`div`,{className:`dash-tile-ctrls`,children:[(0,L.jsx)(`button`,{type:`button`,className:`dash-tile-size`,onClick:()=>be(t.id,t.span),title:`Resize`,children:ze[t.span]}),(0,L.jsx)(`button`,{type:`button`,className:`dash-tile-x`,onClick:()=>S(o.id,t.id),"aria-label":`Remove widget`,children:`×`})]})]})},t.id)}),t[23]=b,t[24]=be,t[25]=o,t[26]=c,t[27]=_,t[28]=R):R=t[28];let xe=R,we;t[29]===Symbol.for(`react.memo_cache_sentinel`)?(we=(0,L.jsx)(`a`,{className:`dash-back`,href:T.gallery,"aria-label":`Back to dashboards`,children:`←`}),t[29]=we):we=t[29];let z;t[30]===o.title?z=t[31]:(z=(0,L.jsx)(`span`,{className:`dash-detail-title`,children:o.title}),t[30]=o.title,t[31]=z);let B;t[32]===o.question?B=t[33]:(B=o.question&&(0,L.jsxs)(`span`,{className:`dash-detail-q`,title:o.question,children:[`“`,o.question,`”`]}),t[32]=o.question,t[33]=B);let Te;t[34]===Symbol.for(`react.memo_cache_sentinel`)?(Te=(0,L.jsx)(`i`,{className:`dash-live-dot`}),t[34]=Te):Te=t[34];let V;t[35]!==o||t[36]!==M||t[37]!==k?(V=M?`checking for new data…`:re(o,k),t[35]=o,t[36]=M,t[37]=k,t[38]=V):V=t[38];let Ee=!M&&O(o)&&o.cadence.data!==`manual`?` · refreshes while open`:``,H;t[39]!==V||t[40]!==Ee?(H=(0,L.jsxs)(`span`,{className:`dash-detail-clock`,children:[Te,V,Ee]}),t[39]=V,t[40]=Ee,t[41]=H):H=t[41];let U;t[42]===o.id?U=t[43]:(U=()=>void de(o.id),t[42]=o.id,t[43]=U);let Oe=N===`busy`,ke=N===`busy`?`dash-refresh-spin`:void 0,W;t[44]===ke?W=t[45]:(W=(0,L.jsx)(a.refresh,{className:ke}),t[44]=ke,t[45]=W);let Me=N===`busy`?`Refreshing…`:`Refresh now`,G;t[46]!==U||t[47]!==Oe||t[48]!==W||t[49]!==Me?(G=(0,L.jsxs)(`button`,{type:`button`,className:`dash-edit-btn dash-refresh-btn`,onClick:U,disabled:Oe,title:`Fetch current values now, regardless of cadence`,children:[W,Me]}),t[46]=U,t[47]=Oe,t[48]=W,t[49]=Me,t[50]=G):G=t[50];let K;t[51]!==o||t[52]!==j||t[53]!==N?(K=(N===`no-model`||!ee(j)&&O(o))&&(0,L.jsx)(`span`,{className:`dash-refresh-hint`,children:`Connect a model in Live settings to refresh.`}),t[51]=o,t[52]=j,t[53]=N,t[54]=K):K=t[54];let q;t[55]===N?q=t[56]:(q=N===`failed`&&(0,L.jsx)(`span`,{className:`dash-refresh-hint`,children:`Couldn’t reach your model — check its key or quota, then try again.`}),t[55]=N,t[56]=q);let J;t[57]===N?J=t[58]:(J=N===`unverified`&&(0,L.jsx)(`span`,{className:`dash-refresh-hint`,children:`Checked, but no source could verify new values — keeping the last real ones.`}),t[57]=N,t[58]=J);let Y;t[59]!==o.id||t[60]!==o.metrics.length||t[61]!==P?(Y=o.metrics.length>0&&(0,L.jsxs)(`button`,{type:`button`,className:`dash-edit-btn dash-read-btn`,onClick:()=>void ge(o.id),disabled:P===`busy`,title:`Ask Mavéa to read the latest numbers now`,children:[(0,L.jsx)(a.sparkle,{className:P===`busy`?`dash-refresh-spin`:void 0}),P===`busy`?`Reading…`:`Read the numbers now`]}),t[59]=o.id,t[60]=o.metrics.length,t[61]=P,t[62]=Y):Y=t[62];let X;t[63]===P?X=t[64]:(X=P===`no-model`&&(0,L.jsx)(`span`,{className:`dash-refresh-hint`,children:`Connect a model in Live settings to read.`}),t[63]=P,t[64]=X);let Z;t[65]===P?Z=t[66]:(Z=P===`failed`&&(0,L.jsx)(`span`,{className:`dash-refresh-hint`,children:`Couldn’t reach your model — check its key or quota, then try again.`}),t[65]=P,t[66]=Z);let Fe=`dash-edit-btn`+(c?` is-active`:``),Ie;t[67]===Symbol.for(`react.memo_cache_sentinel`)?(Ie=()=>{l(Ve),p(!1)},t[67]=Ie):Ie=t[67];let Re=c?`Done`:`Edit layout`,Q;t[68]!==Fe||t[69]!==Re?(Q=(0,L.jsx)(`button`,{type:`button`,className:Fe,onClick:Ie,children:Re}),t[68]=Fe,t[69]=Re,t[70]=Q):Q=t[70];let $;t[71]===o.id?$=t[72]:($=T.settings(o.id),t[71]=o.id,t[72]=$);let Ke;t[73]===$?Ke=t[74]:(Ke=(0,L.jsx)(`a`,{className:`dash-gear`,href:$,"aria-label":`Dashboard settings`,title:`Settings`,children:`⚙`}),t[73]=$,t[74]=Ke);let qe;t[75]!==z||t[76]!==B||t[77]!==H||t[78]!==G||t[79]!==K||t[80]!==q||t[81]!==J||t[82]!==Y||t[83]!==X||t[84]!==Z||t[85]!==Q||t[86]!==Ke?(qe=(0,L.jsxs)(`header`,{className:`dash-detail-head`,children:[we,z,B,H,G,K,q,J,Y,X,Z,Q,Ke]}),t[75]=z,t[76]=B,t[77]=H,t[78]=G,t[79]=K,t[80]=q,t[81]=J,t[82]=Y,t[83]=X,t[84]=Z,t[85]=Q,t[86]=Ke,t[87]=qe):qe=t[87];let Je;t[88]!==o||t[89]!==c?(Je=!c&&(0,L.jsx)(je,{dashboard:o}),t[88]=o,t[89]=c,t[90]=Je):Je=t[90];let Ye;t[91]!==o||t[92]!==M||t[93]!==c||t[94]!==k?(Ye=!c&&(0,L.jsx)(Ae,{dashboard:o,now:k,checking:M}),t[91]=o,t[92]=M,t[93]=c,t[94]=k,t[95]=Ye):Ye=t[95];let Xe;t[96]!==o||t[97]!==c||t[98]!==k?(Xe=!c&&(0,L.jsx)(Ne,{dashboard:o,now:k}),t[96]=o,t[97]=c,t[98]=k,t[99]=Xe):Xe=t[99];let Ze;t[100]!==o||t[101]!==c||t[102]!==u?(Ze=c&&(0,L.jsxs)(`div`,{className:`dash-edit-bar`,children:[(0,L.jsxs)(`span`,{className:`dash-edit-hint`,children:[`Drag a tile by its `,(0,L.jsx)(`strong`,{children:`⠿`}),` handle to reorder, tap `,(0,L.jsx)(`strong`,{children:`S/M/L`}),` to resize, `,(0,L.jsx)(`strong`,{children:`×`}),` to remove.`]}),(0,L.jsx)(`button`,{type:`button`,className:`dash-edit-add`,onClick:()=>p(Be),"aria-expanded":u,children:`+ Add widget`}),u&&(0,L.jsx)(Se,{dashboard:o,onClose:()=>p(!1)})]}),t[100]=o,t[101]=c,t[102]=u,t[103]=Ze):Ze=t[103];let Qe;t[104]!==o||t[105]!==c||t[106]!==k||t[107]!==xe?(Qe=c?(0,L.jsx)(`div`,{className:`dash-grid`,children:xe}):(0,L.jsxs)(`div`,{className:`dash-detail-cols`,children:[(0,L.jsxs)(`div`,{className:`dash-detail-main`,children:[o.widgets.length>0&&(0,L.jsxs)(`div`,{className:`dash-detail-section`,children:[(0,L.jsx)(`div`,{className:`card-eyebrow dash-detail-section-title`,children:`Cards`}),(0,L.jsx)(`div`,{className:`dash-grid`,children:xe})]}),(0,L.jsx)(he,{dashboardId:o.id,now:k}),(0,L.jsx)(Le,{dashboardId:o.id})]}),(0,L.jsxs)(`div`,{className:`dash-detail-side`,children:[(0,L.jsx)(me,{dashboard:o,now:k}),(0,L.jsx)(Pe,{dashboard:o})]})]}),t[104]=o,t[105]=c,t[106]=k,t[107]=xe,t[108]=Qe):Qe=t[108];let $e;t[109]!==o||t[110]!==c?($e=!c&&(0,L.jsx)(De,{dashboard:o},o.id),t[109]=o,t[110]=c,t[111]=$e):$e=t[111];let et;return t[112]!==qe||t[113]!==Je||t[114]!==Ye||t[115]!==Xe||t[116]!==Ze||t[117]!==Qe||t[118]!==$e?(et=(0,L.jsxs)(`div`,{className:`dash-detail`,children:[qe,Je,Ye,Xe,Ze,Qe,$e]}),t[112]=qe,t[113]=Je,t[114]=Ye,t[115]=Xe,t[116]=Ze,t[117]=Qe,t[118]=$e,t[119]=et):et=t[119],et}function Be(e){return!e}function Ve(e){return!e}function He(){return Date.now()}function Ue(e){return e.block}function We(e){return[e.id,e]}function Ge(e){return e.id}export{$ as DashboardDetail};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/DashboardLoopRuntime-
|
|
2
|
-
import{t as e}from"./react-BZJXY1be.js";import{t}from"./compiler-runtime-qQQXpJgv.js";import{t as n}from"./jsx-runtime-DeHZSEgm.js";import{n as r,t as i}from"./preload-helper-CiWYd9n-.js";import{t as a}from"./preloadableLazy-MIX1ApBW.js";import{a as o,s}from"./index-
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/DashboardLoopRuntime-Wzk85QXi.js","assets/useDashboardLoop-C3iCNS8X.js","assets/rolldown-runtime-DkW27tQK.js","assets/react-BZJXY1be.js","assets/compiler-runtime-qQQXpJgv.js","assets/preload-helper-CiWYd9n-.js","assets/http-Lar_UMKb.js","assets/store-Ba9vzL4H.js","assets/friendlyAsk-BBdRZIar.js","assets/contentVault-xfUwSJ3i.js","assets/keyVault-Aw5Y2PjT.js","assets/localBudget-CxLP6bjE.js","assets/providers-0DthJW_I.js","assets/blockTypes-DUDdP3pB.js","assets/info-CiqHR5cs.js","assets/attachments-BW-vki-E.js","assets/route-CMdTFx0P.js","assets/useLiveConfig-B4CmBiAK.js","assets/json-B0N3XRZU.js","assets/number-zqlPMliA.js","assets/ledger-Cv0LBflx.js","assets/format-g3dP8OI3.js","assets/dataPending-DGdCvY5Y.js","assets/now-C9-UAzTC.js","assets/predictions-CkVKHq-5.js","assets/notify-Bz4wuE4T.js","assets/dashboardEvents-D1OP4ARB.js","assets/spokenText-C88IQJ0M.js","assets/kokoro-D15HDMcP.js","assets/index-CdUH6Eo9.js","assets/useInView-DsTvv7L_.js","assets/jsx-runtime-DeHZSEgm.js","assets/coreIcons-DDTChE1H.js","assets/preloadableLazy-MIX1ApBW.js","assets/cachedImport-DW0gP14h.js","assets/lazyRetry-D50B1UMY.js","assets/theme-D5D55hZi.js","assets/index-BIUYTk1W.css"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{t as e}from"./react-BZJXY1be.js";import{t}from"./compiler-runtime-qQQXpJgv.js";import{t as n}from"./jsx-runtime-DeHZSEgm.js";import{n as r,t as i}from"./preload-helper-CiWYd9n-.js";import{t as a}from"./preloadableLazy-MIX1ApBW.js";import{a as o,s}from"./index-CdUH6Eo9.js";import{t as c}from"./useDashboards-lgQnk2Al.js";var l=t(),u=e(),d=n();r();var f=a(()=>i(()=>import(`./DashboardLoopRuntime-Wzk85QXi.js`).then(e=>({default:e.DashboardLoopRuntime})),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37]))).Component;function p(){let e=(0,l.c)(1),t=(0,u.useSyncExternalStore)(s,o,m),n=c();if(!t||n.length===0)return null;let r;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(r=(0,d.jsx)(u.Suspense,{fallback:null,children:(0,d.jsx)(f,{})}),e[0]=r):r=e[0],r}function m(){return!1}export{p as DashboardLoopGate};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as e}from"./useDashboardLoop-C3iCNS8X.js";function t(){return e(),null}export{t as DashboardLoopRuntime};
|