@mavea/mavea 1.1.0 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +83 -0
- package/DISCLAIMER.md +2 -1
- package/PRIVACY.md +5 -4
- package/README.md +20 -15
- package/TERMS.md +3 -1
- package/dist/.vite/manifest.json +638 -569
- package/dist/assets/AnnotationLayer-qV6CIUZv.js +0 -0
- package/dist/assets/{AppCommandPalette-Dm3SedPO.js → AppCommandPalette-BHaYBZ5e.js} +1 -1
- package/dist/assets/AreaChart-DZGCSEwt.js +1 -0
- package/dist/assets/CadenceCard-P4teI7Se.js +1 -0
- package/dist/assets/CanvasSkeleton-CRGWlafo.js +1 -0
- package/dist/assets/{CheckLogRail-BU_rmAFH.js → CheckLogRail-DkHIHL0E.js} +1 -1
- package/dist/assets/{CommandPalette-E3reEqYR.js → CommandPalette-Bs6tpdZl.js} +1 -1
- package/dist/assets/{ConversationVideoStudio-DEZBpJUz.js → ConversationVideoStudio-C1sd4k53.js} +1 -1
- package/dist/assets/CourseLessonReader-YCcNKEW7.js +2 -0
- package/dist/assets/{CourseRail-C8MJG-zf.js → CourseRail-DXt3bzjU.js} +1 -1
- package/dist/assets/{CoursesApp-DFVkhP2f.js → CoursesApp-Dz6xjf4V.js} +2 -2
- package/dist/assets/{DashPresent-DwWDtjrU.js → DashPresent-5SRScC2i.js} +1 -1
- package/dist/assets/DashboardDetail-8J8TsdQg.css +1 -0
- package/dist/assets/DashboardDetail-DOfm8UCQ.js +2 -0
- package/dist/assets/DashboardLoopGate-Cf0y_HQ7.js +2 -0
- package/dist/assets/DashboardLoopRuntime-CnN5VayH.js +1 -0
- package/dist/assets/DashboardSettings-CE0B2y2y.js +1 -0
- package/dist/assets/DashboardsApp-_gbfdbX6.js +2 -0
- package/dist/assets/{DeepZoomApp-CxdcUeFJ.js → DeepZoomApp-BOLEl-kQ.js} +1 -1
- package/dist/assets/{DelegatePanel-B0kIu8Et.js → DelegatePanel-CHEB-OZl.js} +1 -1
- package/dist/assets/{DemoGallery-B__X0_H3.js → DemoGallery-DBqnu8TR.js} +1 -1
- package/dist/assets/{DropSelect-C3uYlej-.js → DropSelect-DjbdVfIR.js} +1 -1
- package/dist/assets/{ExportModal-CDGlhpdH.js → ExportModal-CLobMv1F.js} +1 -1
- package/dist/assets/{ExtractionPreview-CloJnrQi.js → ExtractionPreview-QZ2VHmsb.js} +2 -2
- package/dist/assets/{FeatureUseNotice-CwHstxBh.js → FeatureUseNotice-Dc8joBGM.js} +1 -1
- package/dist/assets/{FlagshipCommandPalette-CHsD5BSH.js → FlagshipCommandPalette-DnWuBjYI.js} +1 -1
- package/dist/assets/{FlagshipShowcase-D53Q_4m0.js → FlagshipShowcase-3qQDOK6g.js} +1 -1
- package/dist/assets/{FlashcardsApp-CnLfEnDH.js → FlashcardsApp-BQGM-Tr1.js} +1 -1
- package/dist/assets/{GalleryApp-2Ffc6CY6.js → GalleryApp-BWQ-J450.js} +1 -1
- package/dist/assets/{HonestByDesign-5jIu2ZC8.js → HonestByDesign-57LDf-gm.js} +1 -1
- package/dist/assets/{HowItWorks-BiJF84EM.js → HowItWorks-DMfPX3GK.js} +1 -1
- package/dist/assets/{LegalApp-zC-rvTww.js → LegalApp-CcO5Qq6R.js} +1 -1
- package/dist/assets/{LegalMarkdownDocument-CJ-gRHdX.js → LegalMarkdownDocument-Be_fQbZ_.js} +1 -1
- package/dist/assets/{LegalPageShell-Dyd4Uh3r.js → LegalPageShell-B-HY1WG7.js} +1 -1
- package/dist/assets/{LibraryOverlay-_xpWdhLN.js → LibraryOverlay-BilW6q_z.js} +1 -1
- package/dist/assets/LiveApp-C-OPBybd.css +1 -0
- package/dist/assets/LiveApp-DH3OxJFV.js +79 -0
- package/dist/assets/{LiveSettings-BceODlOb.js → LiveSettings-CuVMy7rZ.js} +3 -3
- package/dist/assets/{MindMapViewerDrawer-BuDodC0s.js → MindMapViewerDrawer-DI_S7fRZ.js} +1 -1
- package/dist/assets/{MindShape-CBcCC7hP.js → MindShape-C_Bo9hW9.js} +1 -1
- package/dist/assets/{PinToDashboard-DBIXvhlF.js → PinToDashboard-Cz5UJCmq.js} +1 -1
- package/dist/assets/PlanReview-CmUxzNqL.js +1 -0
- package/dist/assets/{Presence-CKSoyuhE.js → Presence-UqXfH4Y-.js} +1 -1
- package/dist/assets/{PresentationDeck-C518t9pP.js → PresentationDeck-B_EI33Pp.js} +1 -1
- package/dist/assets/{PrismApp-DRLl8841.js → PrismApp-DtLsPiQF.js} +2 -2
- package/dist/assets/{PrismAskController-QRwxRP8D.js → PrismAskController-Bt0k9hAA.js} +1 -1
- package/dist/assets/{PrismBriefingPlayer-Kyb8Vs_w.js → PrismBriefingPlayer-DzdtnFj4.js} +2 -2
- package/dist/assets/{PrismOverlay-Bj7tCu5Q.js → PrismOverlay-D1cDZamt.js} +3 -3
- package/dist/assets/{PrismWorkbench-BCnhkp-S.js → PrismWorkbench-BEIp4MiL.js} +1 -1
- package/dist/assets/{PrivacyApp-DHSRr8wq.js → PrivacyApp-B4DT2RUz.js} +6 -5
- package/dist/assets/{ReplayCard-CKo5reXy.js → ReplayCard-Dx46HCBT.js} +2 -2
- package/dist/assets/{ReplayOverlay-DqAwLshS.js → ReplayOverlay-CnJAxf0u.js} +1 -1
- package/dist/assets/{RewindOverlay-CkJIETE0.js → RewindOverlay-CousnxXo.js} +1 -1
- package/dist/assets/{RippleApp-C76VTaZK.js → RippleApp-D5j2VCt2.js} +2 -2
- package/dist/assets/{RippleAskController-CdlMlRH8.js → RippleAskController-9SxpZnHX.js} +1 -1
- package/dist/assets/{RippleOverlay-Mvz3CXhD.js → RippleOverlay-zcXAHPuJ.js} +2 -2
- package/dist/assets/{SeeDontRead-BkySmnP3.js → SeeDontRead-Dqfzha0V.js} +1 -1
- package/dist/assets/{ShareModal-Cl3ryjgK.js → ShareModal-DWxlrJSz.js} +2 -2
- package/dist/assets/{ShipCourse-Cy5ldKLE.js → ShipCourse-BavQppkt.js} +1 -1
- package/dist/assets/{SignatureLoop-Cdkifjb8.js → SignatureLoop-L8W2h62w.js} +1 -1
- package/dist/assets/{SynthesisApp-C5udWwng.js → SynthesisApp-C2O6pFeM.js} +2 -2
- package/dist/assets/{SynthesisOverlay-1o-CJsyX.js → SynthesisOverlay-DLvwiSMv.js} +1 -1
- package/dist/assets/{TermsApp-DIAESAZs.js → TermsApp-CxY1yorm.js} +4 -2
- package/dist/assets/TopicCanvas-LMI0zC7R.js +2 -0
- package/dist/assets/{TourPrism-Bxp--s0i.js → TourPrism-CI-iJZil.js} +1 -1
- package/dist/assets/TrackerTile-oz6IoG8m.js +2 -0
- package/dist/assets/{TwoSurfaces-C_0XBpwA.js → TwoSurfaces-Rnf-_WgY.js} +1 -1
- package/dist/assets/{WhyMachineOverlay-QDSZx5Y7.js → WhyMachineOverlay-ks9-rRiL.js} +1 -1
- package/dist/assets/WorldOverlay-BaQNNClA.js +2 -0
- package/dist/assets/{WorldOverlay-DRdBQMnb.css → WorldOverlay-D7ay5y4D.css} +1 -1
- package/dist/assets/{WowFeatures-DNEeO2pr.js → WowFeatures-C4efSbNV.js} +1 -1
- package/dist/assets/{ZoomDeck-qdlPe_yl.js → ZoomDeck-CBrr0yfy.js} +1 -1
- package/dist/assets/{annotationAuto-BmKrZ3hU.js → annotationAuto-CDv6Es44.js} +1 -1
- package/dist/assets/{backup-PaRBwjJy.js → backup-ZrlVatXc.js} +1 -1
- package/dist/assets/canvas-Bsx3eSaS.js +1 -0
- package/dist/assets/{capture-CL9ENM-c.js → capture-D8uPIcfj.js} +1 -1
- package/dist/assets/confirmAdd-DzMO9jKV.js +1 -0
- package/dist/assets/{coreIcons-BzqW7Qiz.js → coreIcons-DDTChE1H.js} +1 -1
- package/dist/assets/{dashboardEvents-D-wLCp1A.js → dashboardEvents-DKl5rrTD.js} +1 -1
- package/dist/assets/{dashboards-CdzGklae.css → dashboards-C1u2ks-d.css} +1 -1
- package/dist/assets/dataPending-DGdCvY5Y.js +1 -0
- package/dist/assets/display-CAb_PiGv.js +1 -0
- package/dist/assets/{engine-2U7mvPIl.js → engine-BiM6INsW.js} +1 -1
- package/dist/assets/{engine-BF8FqSbi.css → engine-CTvOaA86.css} +1 -1
- package/dist/assets/{explode-qQ7Fzt6V.js → explode-BgZIWY9m.js} +1 -1
- package/dist/assets/format-g3dP8OI3.js +1 -0
- package/dist/assets/{generate-C9vOL1C2.js → generate-Dl2EJ_SR.js} +1 -1
- package/dist/assets/{generateBeats-DpDpBcgV.js → generateBeats-DZHkvFvh.js} +1 -1
- package/dist/assets/{generateCourse-DU281tDE.js → generateCourse-C9qvaJRo.js} +1 -1
- package/dist/assets/{generateLive-_x2tWkBH.js → generateLive-B6purd69.js} +13 -13
- package/dist/assets/index-Dk0QapqQ.js +22 -0
- package/dist/assets/{index-D4FIsool.css → index-DmKgC_TJ.css} +1 -1
- package/dist/assets/{kokoro-CdL8Kl48.js → kokoro-P_fkcX-A.js} +1 -1
- package/dist/assets/lens-ChFJD9il.js +1 -0
- package/dist/assets/loader-DKJEcbPm.js +2 -0
- package/dist/assets/{model-DxwoIVpo.js → model-BFRTN9Eh.js} +1 -1
- package/dist/assets/{notes-CUeZ1cYu.js → notes-B0-EE0FK.js} +1 -1
- package/dist/assets/{number-Bmf7DqLj.js → number-zqlPMliA.js} +1 -1
- package/dist/assets/{pen-BAEq0JnM.js → pen-DNMslo3e.js} +1 -1
- package/dist/assets/{perfProbe-3Ip5n0yx.js → perfProbe-B9zJpjo9.js} +1 -1
- package/dist/assets/{pin-BwWjjqmt.js → pin-CZAIlpXt.js} +1 -1
- package/dist/assets/{planTracker-BI9z_0gW.js → planTracker-KKAtTBWs.js} +1 -1
- package/dist/assets/{portal-BJzn-Tgn.js → portal-Dogggsub.js} +1 -1
- package/dist/assets/{prewarm-CheeUP2L.js → prewarm-B4ELBOxf.js} +1 -1
- package/dist/assets/{providers-B2OCzEo1.js → providers-BovElgRL.js} +1 -1
- package/dist/assets/{quietHours-DCMczU9R.js → quietHours-CeBje_uU.js} +1 -1
- package/dist/assets/{ready-DZY1bETr.js → ready-jtAUOb62.js} +1 -1
- package/dist/assets/receipts-D7zveV-I.js +1 -0
- package/dist/assets/registry-6DGRAB1m.js +1 -0
- package/dist/assets/{registry-BRbEINOV.js → registry-6MOD-I7p.js} +1 -1
- package/dist/assets/registry-BFrgx1tE.js +1 -0
- package/dist/assets/{registry-BM9FDQxO.js → registry-CD1s3eQ-.js} +1 -1
- package/dist/assets/{registry-ChQGee7C.js → registry-CqhpLHM7.js} +1 -1
- package/dist/assets/registry-Cse2wF7x.css +1 -0
- package/dist/assets/registry-DGNSqTxE.js +1 -0
- package/dist/assets/{registry-D_4_HlMg.js → registry-GeAC3ZD7.js} +1 -1
- package/dist/assets/{relate-BXcg3Ioz.js → relate-BYdM5eiV.js} +1 -1
- package/dist/assets/{replay-rSsGKjEc.js → replay-TYXO0Brm.js} +1 -1
- package/dist/assets/{run-ndUTOxjM.js → run-Df10YPyB.js} +1 -1
- package/dist/assets/{run-CkaYNX89.js → run-DlvA3l28.js} +1 -1
- package/dist/assets/{run-aj7robML.js → run-gmqUaxcL.js} +1 -1
- package/dist/assets/seed-D_P5jyog.js +1 -0
- package/dist/assets/shapes-Cx5SCKgj.js +39 -0
- package/dist/assets/store-CsjDEADX.js +1 -0
- package/dist/assets/tiles-D-s6v-mA.js +1 -0
- package/dist/assets/types-DuEbJpIA.js +1 -0
- package/dist/assets/useDashboardLoop-DDqCFJKY.js +5 -0
- package/dist/assets/{useDashboards-GafZIADI.js → useDashboards-SRk8LqHe.js} +1 -1
- package/dist/assets/{useLiveConfig-DWz7BRdk.js → useLiveConfig-Cpy0_E_-.js} +1 -1
- package/dist/assets/{useStudy-CFIuakaM.js → useStudy-GwNcQWtv.js} +1 -1
- package/dist/assets/validate-sGUCmPAs.js +4 -0
- package/dist/assets/value-Dx7DZob4.js +1 -0
- package/dist/assets/{walkSync-AAocUygp.js → walkSync-CPsd-xu7.js} +1 -1
- package/dist/index.html +3 -3
- package/dist/legal/DISCLAIMER.md +2 -1
- package/dist/legal/PRIVACY.md +5 -4
- package/dist/legal/TERMS.md +3 -1
- package/docs/media/course-lesson.jpg +0 -0
- package/docs/media/living-answer.jpg +0 -0
- package/package.json +3 -1
- package/dist/assets/AnnotationLayer-IiuYsoSa.js +0 -0
- package/dist/assets/CanvasSkeleton-CcHXJqdq.js +0 -2
- package/dist/assets/CourseLessonReader-Bpt-DkJo.js +0 -2
- package/dist/assets/DashboardDetail-D4wkiTux.js +0 -2
- package/dist/assets/DashboardLoopGate-B5UBPsvU.js +0 -2
- package/dist/assets/DashboardLoopRuntime-CAnZX234.js +0 -1
- package/dist/assets/DashboardSettings-eMhHliVh.js +0 -1
- package/dist/assets/DashboardsApp-BwFtTdWa.js +0 -2
- package/dist/assets/LiveApp-BNae3fDZ.css +0 -1
- package/dist/assets/LiveApp-DjcJQURO.js +0 -78
- package/dist/assets/PlanReview-DUQ7OMvV.js +0 -1
- package/dist/assets/TopicCanvas-DkzJORfl.js +0 -2
- package/dist/assets/TrackerTile-CyPD0A6b.js +0 -2
- package/dist/assets/WorldOverlay-DorHCLzw.js +0 -1
- package/dist/assets/canvas-BlkTFnVo.js +0 -1
- package/dist/assets/confirmAdd-CZPBG1xe.js +0 -1
- package/dist/assets/dataPending-lZUzUEo6.js +0 -1
- package/dist/assets/display-BrieMea1.js +0 -1
- package/dist/assets/format-rPI6ZwwH.js +0 -1
- package/dist/assets/index-CfcUMOBf.js +0 -22
- package/dist/assets/receipts-ClyzFFGD.js +0 -1
- package/dist/assets/registry-9QjeHgKs.js +0 -1
- package/dist/assets/registry-D4Xdd7dO.js +0 -1
- package/dist/assets/registry-DScSjt8p.css +0 -1
- package/dist/assets/registry-DuP_q42N.js +0 -1
- package/dist/assets/seed-DN4mRJp-.js +0 -1
- package/dist/assets/shapes-C5fjibEc.js +0 -42
- package/dist/assets/store-B39HvB_l.js +0 -1
- package/dist/assets/tiles-pdNi6MGe.js +0 -1
- package/dist/assets/useDashboardLoop-B_YA5jLs.js +0 -5
- package/dist/assets/validate-CnG23_8J.js +0 -1
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./react-BZJXY1be.js";import{t}from"./jsx-runtime-DeHZSEgm.js";import{j as n}from"./index-
|
|
1
|
+
import{t as e}from"./react-BZJXY1be.js";import{t}from"./jsx-runtime-DeHZSEgm.js";import{j as n}from"./index-Dk0QapqQ.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};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as e}from"./react-BZJXY1be.js";import{t}from"./jsx-runtime-DeHZSEgm.js";var n=e(),r=t(),i=200,a=40,o=3;function s({points:e,tone:t=`flat`}){let s=(0,n.useId)();if(e.length<2)return null;let c=e.map(e=>e.value),l=Math.min(...c),u=Math.max(...c)-l||1,d=194/(e.length-1),f=e.map((e,t)=>({x:o+t*d,y:o+(1-(e.value-l)/u)*34})),p=f.map((e,t)=>`${t===0?`M`:`L`}${e.x.toFixed(1)},${e.y.toFixed(1)}`).join(` `),m=f[0],h=`${p} L${f[f.length-1].x.toFixed(1)},37 L${m.x.toFixed(1)},37 Z`,g=t===`up`?`var(--insight)`:t===`down`?`var(--danger)`:`var(--text-secondary)`;return(0,r.jsxs)(`svg`,{className:`tile-viz-svg`,viewBox:`0 0 ${i} ${a}`,preserveAspectRatio:`none`,role:`presentation`,children:[(0,r.jsx)(`defs`,{children:(0,r.jsxs)(`linearGradient`,{id:s,x1:`0`,y1:`0`,x2:`0`,y2:`1`,children:[(0,r.jsx)(`stop`,{offset:`0%`,stopColor:g,stopOpacity:`0.35`}),(0,r.jsx)(`stop`,{offset:`100%`,stopColor:g,stopOpacity:`0`})]})}),(0,r.jsx)(`path`,{d:h,fill:`url(#${s})`,stroke:`none`}),(0,r.jsx)(`path`,{d:p,fill:`none`,stroke:g,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,vectorEffect:`non-scaling-stroke`})]})}export{s as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as e}from"./compiler-runtime-qQQXpJgv.js";import{t}from"./jsx-runtime-DeHZSEgm.js";import{J as n,T as r,j as i,l as a}from"./store-CsjDEADX.js";import{t as o}from"./tiles-D-s6v-mA.js";var s=e(),c=t(),l=[{v:`15min`,label:`15M`},{v:`hourly`,label:`1H`},{v:`6h`,label:`6H`},{v:`daily`,label:`DAILY`},{v:`manual`,label:`MANUAL`}],u={"15min":`Every 15 minutes`,hourly:`Hourly`,"6h":`Every 6 hours`,daily:`Daily`,manual:`Manual`};function d(e){if(e===`manual`)return`Refreshes only when you ask — no automatic searches.`;let t=Math.round(1440/n[e]);return`${u[e]} ≈ up to ~${t} searches/day while Mavéa is open. You provide the key and pay the search provider; a faster cadence can increase those charges. This is never real-time — each check is a snapshot.`}function f(e){return new Date(e).toLocaleString(void 0,{weekday:`short`,hour:`numeric`,minute:`2-digit`})}function p(e){let t=(0,s.c)(23),{dashboard:n,now:u}=e,p=n.cadence.data,m=n.cadence.window,h;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(h=(0,c.jsx)(`div`,{className:`card-eyebrow`,children:`Check cadence`}),t[0]=h):h=t[0];let g;t[1]!==n.id||t[2]!==p?(g=l.map(e=>(0,c.jsx)(`button`,{type:`button`,className:`dash-seg-opt`+(e.v===p?` is-active`:``),"aria-pressed":e.v===p,onClick:()=>i(n.id,{data:e.v}),children:e.label},e.v)),t[1]=n.id,t[2]=p,t[3]=g):g=t[3];let _;t[4]===g?_=t[5]:(_=(0,c.jsx)(`div`,{className:`dash-seg`,role:`group`,"aria-label":`Data refresh cadence`,children:g}),t[4]=g,t[5]=_);let v;t[6]===p?v=t[7]:(v=d(p),t[6]=p,t[7]=v);let y;t[8]===v?y=t[9]:(y=(0,c.jsx)(`p`,{className:`dash-cadence-cost`,children:v}),t[8]=v,t[9]=y);let b;t[10]!==n.id||t[11]!==m?(b=m&&(0,c.jsxs)(`div`,{className:`dash-cadence-window`,children:[(0,c.jsxs)(`p`,{className:`dash-cadence-window-text`,children:[`Live window: `,(0,c.jsx)(`strong`,{children:m.label}),` · `,f(m.startAt),`–`,f(m.endAt)]}),(0,c.jsx)(`button`,{type:`button`,className:`dash-cadence-clear`,onClick:()=>r(n.id,null),children:`Clear`})]}),t[10]=n.id,t[11]=m,t[12]=b):b=t[12];let x;t[13]!==n.id||t[14]!==n.oneShotAt||t[15]!==n.oneShotLabel||t[16]!==u?(x=n.oneShotAt!==void 0&&(0,c.jsxs)(`div`,{className:`dash-cadence-oneshot`,children:[(0,c.jsx)(o,{targetAt:n.oneShotAt,now:u,label:n.oneShotLabel}),(0,c.jsx)(`button`,{type:`button`,className:`dash-cadence-clear`,onClick:()=>a(n.id),children:`Clear`})]}),t[13]=n.id,t[14]=n.oneShotAt,t[15]=n.oneShotLabel,t[16]=u,t[17]=x):x=t[17];let S;return t[18]!==_||t[19]!==y||t[20]!==b||t[21]!==x?(S=(0,c.jsxs)(`section`,{className:`card dash-cadence-card`,"aria-label":`Check cadence`,children:[h,_,y,b,x]}),t[18]=_,t[19]=y,t[20]=b,t[21]=x,t[22]=S):S=t[22],S}export{p as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as e}from"./compiler-runtime-qQQXpJgv.js";import{t}from"./jsx-runtime-DeHZSEgm.js";import{n}from"./icons-gLFQTv74.js";function r(e){let t=(e?.blocks??[]).filter(e=>!!e.id);return t.length>=4&&new Set(t.map(e=>e.type)).size>=3}var i=e(),a=t();function o({file:e,loc:t,color:r=`var(--presence-soft)`,onClick:i}){return(0,a.jsxs)(`button`,{className:`source-chip`,onClick:i,style:{color:r},children:[(0,a.jsx)(n.doc,{style:{width:12,height:12}}),(0,a.jsx)(`span`,{children:e}),t&&(0,a.jsxs)(`span`,{className:`mono`,children:[`· `,t]})]})}var s={strong:`Strong evidence`,partial:`Partial evidence`,inferred:`Inferred`,unverified:`Unverified`},c=`Best estimate from the model's knowledge — not verified`;function l({level:e=`strong`,title:t=`How sure Mavéa is, based on your files`}){return(0,a.jsxs)(`span`,{className:`conf `+e,title:t,children:[(0,a.jsxs)(`span`,{className:`bars`,children:[(0,a.jsx)(`i`,{style:{height:5}}),(0,a.jsx)(`i`,{style:{height:8}}),(0,a.jsx)(`i`,{style:{height:11}})]}),s[e]]})}function u(e){let t=(0,i.c)(8),{name:n,color:r,verb:o}=e,s;t[0]===r?s=t[1]:(s=(0,a.jsx)(`span`,{className:`fdot`,style:{background:r}}),t[0]=r,t[1]=s);let c;t[2]===o?c=t[3]:(c=o&&(0,a.jsx)(`span`,{className:`using`,children:o}),t[2]=o,t[3]=c);let l;return t[4]!==n||t[5]!==s||t[6]!==c?(l=(0,a.jsxs)(`span`,{className:`context-pill`,children:[s,c,` `,n]}),t[4]=n,t[5]=s,t[6]=c,t[7]=l):l=t[7],l}var d=8,f=[[86,62],[74,91,55],[68,80],[90,58,76]];function p(e){let t=(0,i.c)(7),{blocks:n,budget:r}=e,o;if(t[0]!==n||t[1]!==r){let e;t[3]===r?e=t[4]:(e=(e,t)=>{let n=Math.min(12,Math.max(1,e.col??6));return(0,a.jsx)(`div`,{className:`col-`+(r!=null&&r<9?12:n),"aria-hidden":`true`,children:(0,a.jsxs)(`div`,{className:`card skel-card skel-fade`,children:[(0,a.jsx)(`span`,{className:`skel-eyebrow`}),f[t%f.length].map(m)]})},t)},t[3]=r,t[4]=e),o=n.slice(0,d).map(e),t[0]=n,t[1]=r,t[2]=o}else o=t[2];let s;return t[5]===o?s=t[6]:(s=(0,a.jsx)(a.Fragment,{children:o}),t[5]=o,t[6]=s),s}function m(e,t){return(0,a.jsx)(`span`,{className:`skel-line`,style:{width:`${e}%`}},t)}export{o as a,u as i,c as n,r as o,l as r,p as t};
|
|
@@ -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-DKl5rrTD.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};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./react-BZJXY1be.js";import{t}from"./jsx-runtime-DeHZSEgm.js";import{n}from"./preloadableLazy-MIX1ApBW.js";import{n as r}from"./icons-gLFQTv74.js";import{n as i,r as a}from"./registry-
|
|
1
|
+
import{t as e}from"./react-BZJXY1be.js";import{t}from"./jsx-runtime-DeHZSEgm.js";import{n}from"./preloadableLazy-MIX1ApBW.js";import{n as r}from"./icons-gLFQTv74.js";import{n as i,r as a}from"./registry-DGNSqTxE.js";var o=e(),s=t();function c({items:e,surface:t,onClose:c,pinned:l=!1}){let[u,d]=(0,o.useState)(``),[f,p]=(0,o.useState)(0),m=(0,o.useRef)(null),h=(0,o.useRef)(null),g=(0,o.useRef)(null),_=(0,o.useMemo)(()=>{let t=u.trim().toLowerCase();if(!t)return e;let n=t.split(/\s+/);return e.filter(e=>{let t=a(e.feature);return n.every(e=>t.includes(e))})},[e,u]),v=(0,o.useMemo)(()=>i.map(e=>({heading:e,items:_.filter(t=>t.feature.group===e)})).filter(e=>e.items.length>0),[_]),y=(0,o.useMemo)(()=>v.flatMap(e=>e.items),[v]);(0,o.useEffect)(()=>{p(0)},[u]),(0,o.useEffect)(()=>(g.current=document.activeElement??null,m.current?.focus(),()=>g.current?.focus?.()),[]),(0,o.useEffect)(()=>{(h.current?.querySelector(`.is-active`))?.scrollIntoView?.({block:`nearest`})},[f]);let b=(0,o.useCallback)(e=>{e.run(),c()},[c]),x=(0,o.useCallback)(e=>{e.watch?.(),c()},[c]);(0,o.useEffect)(()=>{let e=e=>{if(e.key===`Escape`)e.preventDefault(),l||c();else if(e.key===`ArrowDown`)e.preventDefault(),p(e=>Math.min(Math.max(0,y.length-1),e+1));else if(e.key===`ArrowUp`)e.preventDefault(),p(e=>Math.max(0,e-1));else if(e.key===`Enter`){e.preventDefault();let t=y[f];if(!t)return;(e.metaKey||e.ctrlKey)&&t.watch?x(t):b(t)}};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[f,y,c,b,x,l]);let S=y[f]?.feature.id;return(0,s.jsx)(`div`,{className:`cmdk-scrim`,onClick:e=>{e.target===e.currentTarget&&!l&&c()},role:`button`,tabIndex:0,"aria-label":`Close`,onKeyDown:e=>{e.target===e.currentTarget&&(e.key===`Enter`||e.key===` `)&&(e.key===` `&&e.preventDefault(),l||c())},children:(0,s.jsxs)(`div`,{className:`cmdk-panel`,role:`dialog`,"aria-modal":`true`,"aria-label":`Find a feature`,children:[(0,s.jsxs)(`div`,{className:`cmdk-search`,children:[(0,s.jsx)(r.sparkle,{className:`cmdk-search-icon`,"aria-hidden":`true`}),(0,s.jsx)(`input`,{ref:m,className:`cmdk-input`,value:u,onChange:e=>d(e.target.value),placeholder:t===`demo`?`Find anything Mavéa can do…`:`Search everything Mavéa can do…`,"aria-label":`Search features`,"aria-activedescendant":S?`cmdk-opt-${S}`:void 0,autoComplete:`off`,spellCheck:!1}),!l&&(0,s.jsx)(`kbd`,{className:`cmdk-kbd`,children:`esc`})]}),t===`demo`&&(0,s.jsx)(`p`,{className:`cmdk-note`,children:`Click any feature to see it in action.`}),(0,s.jsx)(`div`,{className:`cmdk-list`,role:`listbox`,"aria-label":`Features`,ref:h,children:y.length===0?(0,s.jsxs)(`div`,{className:`cmdk-empty`,children:[`No features match “`,u.trim(),`”.`]}):v.map(e=>(0,s.jsxs)(`div`,{className:`more-menu-group`,children:[(0,s.jsx)(`span`,{className:`more-menu-heading`,children:e.heading}),e.items.map(e=>{let t=y.indexOf(e),i=t===f;return(0,s.jsxs)(`div`,{className:`cmdk-row-wrap`,role:`presentation`,children:[(0,s.jsxs)(`button`,{type:`button`,role:`option`,id:`cmdk-opt-${e.feature.id}`,"aria-selected":i,className:`more-menu-row cmdk-row${i?` is-active`:``}${e.available?``:` is-unavailable`}`,onMouseMove:()=>p(t),onClick:()=>b(e),...e.preload?n(e.preload):{},children:[(0,s.jsx)(`span`,{className:`more-menu-name`,children:e.feature.label}),(0,s.jsx)(`span`,{className:`more-menu-blurb`,children:e.available?e.feature.blurb:e.reason??e.feature.blurb})]}),e.watch&&(0,s.jsxs)(`button`,{type:`button`,className:`cmdk-watch`,"aria-label":`See how ${e.feature.label} works`,title:`See how it works — a quick demo (⌘↵)`,onMouseMove:()=>p(t),onClick:()=>x(e),children:[(0,s.jsx)(r.play,{className:`cmdk-watch-ic`,"aria-hidden":`true`}),`See how`]})]},e.feature.id)})]},e.heading))})]})})}export{c as CommandPalette};
|
package/dist/assets/{ConversationVideoStudio-DEZBpJUz.js → ConversationVideoStudio-C1sd4k53.js}
RENAMED
|
@@ -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{h as r,u as i}from"./index-CfcUMOBf.js";import{n as a}from"./icons-gLFQTv74.js";import{t as o}from"./TopicCanvas-DkzJORfl.js";import{t as s}from"./motion-BY_Egaxm.js";import{t as c}from"./toast-BBNs2h3L.js";import{t as l}from"./Presence-CKSoyuhE.js";import{a as u,c as d,i as f,r as p,t as m}from"./capture-CL9ENM-c.js";import{i as ee,n as te,r as ne,t as re}from"./share-kW3pZ027.js";import{t as ie}from"./FeatureUseNotice-CwHstxBh.js";import{r as h}from"./history-D2EH2X6D.js";import{t as g}from"./replay-rSsGKjEc.js";import"./canvas-BlkTFnVo.js";import{t as _}from"./AnnotationLayer-IiuYsoSa.js";var v=e(),y=t(),b=18e4,x=650,S=350;function C(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 ae(e){return e.reduce((e,t)=>e+C(t),0)}function oe(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 w(e,t,n){let r=n.spans[e+1];return r?r.startMs:x+Math.max(0,n.durationMs-x-S)*(e+1)/(t+1)}function T(e,t,n){let r=[],i=0;return e.forEach((e,a)=>{let o=t[a];if(!o)return;let s=g(e),c=s.cues.map((e,t)=>w(t,s.cues.length,o)),l=[0,x,...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 ee=[...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?ee?.text??null:null,ink:u,questionOnly:t===0})}i+=o.durationMs}),r}var E=24e3,D=.65,O=.18,k=.35,se=.89,A=6,j=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 M(e){return[e.spoken??e.narration,...e.tour.map(e=>e.saySpoken??e.say??``)].map(e=>e.trim()).filter(Boolean)}function N(e){return e.trim().replace(/\s+/g,` `)}function P(e,t){let n=M(e);return n.length>0&&t.pcm.length>0&&t.spans.length===n.length&&n.every((e,n)=>N(t.spans[n]?.text??``)===N(e)&&t.spans[n].t1>t.spans[n].t0)}function F(e){let t=e.spans.map(e=>({text:e.text,startMs:Math.round((D+e.t0)*1e3),endMs:Math.round((D+e.t1)*1e3)}));return{lines:[{text:t.map(e=>e.text).join(` `),pcm:e.pcm,rate:e.sampleRate}],durationS:D+e.duration+k,spans:t}}async function I(e,t,n){let r=M(e);if(!r.length)throw new j(t,e.question);let i=[];for(let a of r){if(n?.aborted)throw new DOMException(`Cancelled`,`AbortError`);let r=await d(a,n);if(n?.aborted)throw new DOMException(`Cancelled`,`AbortError`);if(!r.length)throw new j(t,e.question);i.push({text:a,pcm:r,rate:E})}let a=[],o=D;for(let e of i){let t=o;o+=e.pcm.length/e.rate,a.push({text:e.text,startMs:Math.round(t*1e3),endMs:Math.round(o*1e3)}),o+=O}return{lines:i,durationS:o+k,spans:a}}async function ce(e,t,n){let r=i();if(!r||typeof OfflineAudioContext>`u`)throw Error(`audio-encoding-unavailable`);let a=[];for(let r=0;r<e.length;r++){let i=e[r],o=t(i);a.push(o&&P(i,o)?F(o):await I(i,r,n))}let o=a.reduce((e,t)=>e+t.durationS,0);if(o*1e3>18e4)throw Error(`conversation-too-long`);let s=0;for(let e of a)for(let t of e.lines)for(let e=0;e<t.pcm.length;e++)s=Math.max(s,Math.abs(t.pcm[e]));let c=s>0?Math.min(A,se/s):1,l=new OfflineAudioContext(1,Math.ceil(o*r.sampleRate),r.sampleRate),u=l.createGain();u.gain.value=c,u.connect(l.destination);let d=0;for(let e of a){let t=d+D;for(let n of e.lines){let e=l.createBuffer(1,n.pcm.length,n.rate);e.getChannelData(0).set(n.pcm);let r=l.createBufferSource();r.buffer=e,r.connect(u),r.start(t),t+=n.pcm.length/n.rate+O}d+=e.durationS}return{buffer:await l.startRendering(),turns:a.map(e=>({durationMs:Math.round(e.durationS*1e3),spans:e.spans})),durationMs:Math.round(o*1e3)}}var le={"1080p":{width:1920,height:1080},"720p":{width:1280,height:720}};function L(e,t,n=r()){let{bitrate:i}=m(e,n);return t===`720p`?Math.round(i*.55):i}async function R(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 ue(){return typeof document<`u`&&(typeof VideoEncoder<`u`&&typeof AudioEncoder<`u`||u()!==null)}async function de(e){let t=r(),n=le[e.size],i=e.scenes[0];i&&await e.applyScene(i,0);let a=getComputedStyle(e.el).backgroundColor,o=await f({el:e.el,audioBuffer:e.audioBuffer,aspect:`16:9`,dims:{w:n.width,h:n.height},quality:e.quality,bitrate:L(e.quality,e.size,t),background:a&&a!==`rgba(0, 0, 0, 0)`?a:void 0,maxDurationMs:e.durationMs}),s=performance.now();try{for(let t=1;t<e.scenes.length;t++){let n=e.scenes[t];for(;performance.now()-s<n.startMs;){if(e.signal.aborted)throw new DOMException(`Cancelled`,`AbortError`);await R(e.signal),await new Promise(e=>setTimeout(e,25))}await e.applyScene(n,t),e.onProgress?.({phase:`render`,completed:t+1,total:e.scenes.length})}for(;performance.now()-s<e.durationMs;){if(e.signal.aborted)throw new DOMException(`Cancelled`,`AbortError`);await R(e.signal),await new Promise(e=>setTimeout(e,25))}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 z=n();function B({scene:e,options:t,frameRef:n,glide:r=!0}){let i=(0,v.useRef)(null),a=(0,v.useRef)(null),[s,c]=(0,v.useState)(0);(0,v.useEffect)(()=>(n?.(i.current),()=>n?.(null)),[n]),(0,v.useEffect)(()=>{let t=a.current;if(!t)return;let n=0;if(e?.spot){let r=[...t.querySelectorAll(`[data-spot-id]`)].find(t=>t.dataset.spotId===e.spot);if(!r)return;let i=t.getBoundingClientRect(),a=r.getBoundingClientRect();n=Math.max(0,t.scrollTop+a.top-i.top-(t.clientHeight-a.height)/2)}typeof t.scrollTo==`function`?t.scrollTo({top:n,behavior:r?`smooth`:`auto`}):t.scrollTop=n;let i=window.setTimeout(()=>c(e=>e+1),420);return()=>window.clearTimeout(i)},[e?.spot,e?.turnIndex,r]);let u=e?.questionOnly??!1,d=e?e.frame.question||e.frame.spec.title:``;return(0,z.jsx)(`div`,{ref:i,className:`cvs-stage`,"data-aspect":`16:9`,"data-question-only":u,"data-captioned":t.captions,children:e?(0,z.jsxs)(z.Fragment,{children:[(0,z.jsxs)(`header`,{className:`cvs-header`,children:[(0,z.jsxs)(`div`,{className:`cvs-brand`,children:[(0,z.jsx)(`span`,{className:`cvs-brand-dot`}),` Mavéa conversation`]}),(0,z.jsxs)(`div`,{className:`cvs-turn`,children:[`Turn `,e.turnIndex+1]}),(0,z.jsx)(`h2`,{children:d})]}),u?(0,z.jsxs)(`div`,{className:`cvs-ask`,children:[(0,z.jsx)(`span`,{className:`cvs-ask-eyebrow`,children:`Asked`}),(0,z.jsx)(`p`,{className:`cvs-ask-line`,children:d})]}):(0,z.jsxs)(`div`,{ref:a,className:`cvs-canvas`,children:[(0,z.jsx)(`div`,{className:`topic-wrap`,children:(0,z.jsx)(o,{data:e.frame.spec,spot:e.spot,built:{},onProve:()=>{}})},e.turnIndex),t.penMarks&&(0,z.jsx)(_,{spots:e.ink,within:i.current,revision:s})]}),t.captions&&e.caption&&(0,z.jsx)(`div`,{className:`cvs-caption`,children:e.caption}),t.presence&&(0,z.jsx)(`div`,{className:`cvs-presence`,children:(0,z.jsx)(l,{state:u?`thinking`:`speaking`})})]}):(0,z.jsx)(`div`,{className:`cvs-empty`,children:`Choose a turn to preview it.`})})}var fe=[{id:`1080p`,label:`1080p`,hint:`1920×1080`},{id:`720p`,label:`720p`,hint:`1280×720`}],pe=[{id:`balanced`,label:`Balanced`},{id:`high`,label:`High`},{id:`ultra`,label:`Ultra`}],V=650;function H(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 me=[{key:`captions`,label:`Captions`},{key:`spotlights`,label:`Spotlights`},{key:`penMarks`,label:`Pen marks`},{key:`presence`,label:`Mavéa`}];function U(e){let t=Math.max(0,Math.round(e/1e3));return`${Math.floor(t/60)}:${String(t%60).padStart(2,`0`)}`}function he(e){let t=(0,y.c)(12),{width:n,height:r,children:i}=e,a=(0,v.useRef)(null),[o,s]=(0,v.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,v.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,z.jsx)(`div`,{ref:a,className:`cvs-viewport`,children:(0,z.jsx)(`div`,{className:`cvs-scaler`,style:f,children:i})}),t[9]=i,t[10]=f,t[11]=p):p=t[11],p}function ge(e){return e.map(e=>{let t=C(e);return{durationMs:t,spans:[{text:e.narration,startMs:650,endMs:Math.max(651,t-350)}]}})}function W({frames:e,retainedAudio:t,onShared:n,onBusyChange:r,frameRef:i}){let o=(0,v.useMemo)(()=>e.filter(e=>!!((e.spoken??e.narration).trim()||e.tour.some(e=>(e.saySpoken??e.say)?.trim()))),[e]),[l,u]=(0,v.useState)(()=>new Set(o.length?[h(o[o.length-1])]:[])),d=(0,v.useMemo)(()=>new Set(o.map(h)),[o]),[f,m]=(0,v.useState)({size:`1080p`,quality:`high`,captions:!0,spotlights:!0,penMarks:!0,presence:!0}),g=(0,v.useMemo)(()=>e.filter(e=>l.has(h(e))),[e,l]),_=(0,v.useMemo)(()=>ae(g),[g]),y=(0,v.useMemo)(()=>T(g,ge(g),f),[g,f]),[x,S]=(0,v.useState)(()=>y[0]??null),[C,w]=(0,v.useState)(null),[E,D]=(0,v.useState)(null),[O,k]=(0,v.useState)(null),[se,A]=(0,v.useState)(!1),[M,N]=(0,v.useState)(!1),[P,F]=(0,v.useState)(0),[I,L]=(0,v.useState)(!1),[R,W]=(0,v.useState)(!1),G=(0,v.useRef)(null),K=(0,v.useRef)(null),q=(0,v.useRef)(null),J=C!==null&&C.phase!==`ready`,Y=ue(),X=(0,v.useMemo)(()=>s(),[]),Z=M&&!J&&!X&&y.length>1;(0,v.useEffect)(()=>r?.(J),[J,r]),(0,v.useEffect)(()=>{if(!J){W(!1);return}let e=()=>W(document.visibilityState===`hidden`);return e(),document.addEventListener(`visibilitychange`,e),()=>document.removeEventListener(`visibilitychange`,e)},[J]),(0,v.useEffect)(()=>N(!0),[]),(0,v.useEffect)(()=>{let e=X?y.findIndex(e=>!e.questionOnly):0;F(Math.max(0,e)),L(!1)},[y,X]),(0,v.useEffect)(()=>{J||S(y[P]??y[0]??null)},[y,P,J]),(0,v.useEffect)(()=>{if(!Z||I)return;let e=y[P]??y[0],t=window.setTimeout(()=>F(e=>(e+1)%y.length),Math.max(V,e?.durationMs??V));return()=>window.clearTimeout(t)},[Z,I,y,P]),(0,v.useEffect)(()=>()=>{G.current?.abort(),K.current?.dispose?.(),K.current=null,r?.(!1)},[r]);let _e=(0,v.useCallback)(async e=>{S(e),await H()},[]),Q=(0,v.useCallback)(()=>{K.current?.dispose?.(),K.current=null,D(null),w(null)},[]),ve=(0,v.useCallback)(async()=>{if(!g.length||_>18e4)return;let e=new AbortController;G.current=e,Q(),k(null),w({phase:`audio`,completed:0,total:g.length}),A(!0);try{await H();let n=q.current;if(!n)throw Error(`capture-stage-unavailable`);let r=await ce(g,t??(()=>null),e.signal),i=T(g,r.turns,f);if(!i.length)throw Error(`empty-video`);w({phase:`render`,completed:1,total:i.length});let a=await de({el:n,scenes:i,audioBuffer:r.buffer,durationMs:r.durationMs,size:f.size,quality:f.quality,signal:e.signal,applyScene:_e,onProgress:w});K.current=a,D(a),w(null)}catch(e){if(e?.name===`AbortError`){w(null);return}let t=e instanceof j?`${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.`;k(t),w(null)}finally{A(!1)}},[_e,Q,_,f,t,g]),$=e=>{J||(u(new Set(e.map(h))),Q(),k(null))},ye=le[f.size],be=re(ee(g[0]?.spec.title||g[0]?.question,new Date),E?.type??``),xe=C?C.phase===`audio`?`Preparing required narration…`:C.phase===`render`?`Rendering scene ${C.completed} of ${C.total}…`:C.phase===`encode`?`Finishing the file…`:`Video ready`:``,Se=_>b;return(0,z.jsxs)(z.Fragment,{children:[(0,z.jsxs)(`div`,{className:`shm-panel cvs-panel`,children:[(0,z.jsx)(`div`,{className:`shm-eyebrow`,children:`▷ CONVERSATION VIDEO`}),(0,z.jsx)(`div`,{className:`cvs-title`,children:`Share this conversation.`}),(0,z.jsx)(`div`,{className:`shm-sub`,children:`Pick the turns worth sending. Mavéa narrates every one. The video renders locally in this browser and is never uploaded.`}),(0,z.jsx)(ie,{kind:`publishing`,from:`live`}),(0,z.jsxs)(`div`,{className:`cvs-presets`,children:[(0,z.jsx)(`button`,{type:`button`,onClick:()=>$(o.slice(-1)),disabled:J,children:`Current turn`}),(0,z.jsx)(`button`,{type:`button`,onClick:()=>$(e.slice(oe(e)).filter(e=>d.has(h(e)))),disabled:J,children:`Current topic`}),(0,z.jsx)(`button`,{type:`button`,onClick:()=>$(o),disabled:J,children:`All turns`})]}),(0,z.jsx)(`div`,{className:`cvs-turns`,role:`group`,"aria-label":`Conversation turns`,children:e.map((e,t)=>{let n=h(e),r=d.has(n);return(0,z.jsxs)(`label`,{className:`cvs-turn-card`,"data-selected":l.has(n),children:[(0,z.jsx)(`input`,{type:`checkbox`,checked:l.has(n),disabled:J||!r,onChange:()=>{u(e=>{let t=new Set(e);return t.has(n)?t.delete(n):t.add(n),t}),Q()}}),(0,z.jsx)(`span`,{className:`cvs-thumb`,"aria-hidden":`true`,children:e.spec.blocks.length}),(0,z.jsxs)(`span`,{className:`cvs-turn-copy`,children:[(0,z.jsx)(`strong`,{children:e.question||e.spec.title}),(0,z.jsxs)(`small`,{children:[new Date(e.at).toLocaleTimeString([],{hour:`numeric`,minute:`2-digit`}),r?``:` · no narration`]})]}),(0,z.jsx)(`span`,{className:`cvs-order`,children:t+1})]},n)})}),(0,z.jsxs)(`div`,{className:`shm-group`,children:[(0,z.jsx)(`div`,{className:`shm-label`,children:`Size`}),(0,z.jsx)(`div`,{className:`shm-chips`,children:fe.map(e=>(0,z.jsx)(`button`,{type:`button`,className:`shm-chip`,"data-active":f.size===e.id,"aria-pressed":f.size===e.id,disabled:J,onClick:()=>{Q(),m(t=>({...t,size:e.id}))},title:e.hint,children:e.label},e.id))})]}),(0,z.jsxs)(`div`,{className:`shm-group`,children:[(0,z.jsx)(`div`,{className:`shm-label`,children:`Quality`}),(0,z.jsx)(`div`,{className:`shm-chips`,children:pe.map(e=>(0,z.jsx)(`button`,{type:`button`,className:`shm-chip`,"data-active":f.quality===e.id,"aria-pressed":f.quality===e.id,disabled:J,onClick:()=>{Q(),m(t=>({...t,quality:e.id}))},title:p(e.id),children:e.label},e.id))})]}),(0,z.jsxs)(`div`,{className:`shm-group`,children:[(0,z.jsx)(`div`,{className:`shm-label`,children:`Include`}),(0,z.jsxs)(`div`,{className:`shm-chips`,children:[me.map(({key:e,label:t})=>(0,z.jsx)(`button`,{type:`button`,className:`shm-chip`,"data-active":f[e],"aria-pressed":f[e],disabled:J,onClick:()=>{Q(),m(t=>({...t,[e]:!t[e]}))},children:t},e)),(0,z.jsx)(`span`,{className:`cvs-audio-lock`,children:`● Audio always on`})]})]}),(0,z.jsxs)(`div`,{className:`cvs-meter`,"data-over":Se,children:[(0,z.jsxs)(`span`,{children:[U(_),` selected`]}),(0,z.jsx)(`span`,{children:`3:00 max`}),(0,z.jsx)(`i`,{style:{width:`${Math.min(100,_/b*100)}%`}})]}),O&&(0,z.jsx)(`div`,{className:`cvs-error`,role:`alert`,children:O}),!Y&&(0,z.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.`}),C&&(0,z.jsxs)(`div`,{className:`cvs-progress`,role:`status`,children:[xe,R&&(0,z.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.`})]}),E&&(0,z.jsxs)(`div`,{className:`cvs-result`,role:`status`,children:[(0,z.jsxs)(`strong`,{children:[`Ready · `,E.width,`×`,E.height]}),(0,z.jsxs)(`span`,{children:[U(E.durationMs),` · `,(E.blob.size/1048576).toFixed(1),` MB`]})]}),(0,z.jsx)(`div`,{className:`shm-actions`,children:E?(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(`button`,{type:`button`,className:`shm-btn shm-btn-primary`,onClick:()=>{K.current=null,te(E.blob,be,()=>void E.dispose?.()),D(null),c(`Saved to your downloads`,`good`),n?.()},children:`↓ Download video`}),typeof navigator<`u`&&typeof navigator.share==`function`&&(0,z.jsx)(`button`,{type:`button`,className:`shm-btn`,onClick:()=>{ne(E,{title:`Mavéa conversation`,filename:be}).then(e=>{e!==`cancelled`&&(K.current=null,D(null),e===`downloaded`&&c(`Saved to your downloads`,`good`),n?.())})},children:`Share`})]}):J?(0,z.jsx)(`button`,{type:`button`,className:`shm-btn`,onClick:()=>G.current?.abort(),children:`Cancel`}):(0,z.jsx)(`button`,{type:`button`,className:`shm-btn shm-btn-primary`,disabled:!g.length||Se||!Y,onClick:()=>void ve(),children:O?`Retry ${f.size} video`:`Create ${f.size} video`})})]}),(0,z.jsx)(`div`,{className:`shm-stage`,children:(0,z.jsxs)(`div`,{className:`shm-frame`,"data-aspect":`16:9`,children:[M?(0,z.jsx)(he,{width:ye.width,height:ye.height,children:(0,z.jsx)(B,{scene:x,options:f,frameRef:i,glide:!X})}):(0,z.jsx)(`div`,{className:`cvs-stage`,"data-aspect":`16:9`,children:(0,z.jsx)(`div`,{className:`cvs-empty`,role:`status`,children:`Preparing preview…`})}),Z&&(0,z.jsx)(`div`,{className:`shm-controls`,children:(0,z.jsx)(`button`,{type:`button`,className:`shm-sound`,"data-on":I,onClick:()=>L(e=>!e),"aria-pressed":I,title:I?`Play preview`:`Pause preview`,children:I?(0,z.jsx)(a.play,{style:{width:17,height:17}}):(0,z.jsx)(a.pause,{style:{width:17,height:17}})})})]})}),se&&(0,z.jsx)(`div`,{className:`cvs-capture-host`,"data-size":f.size,"aria-hidden":`true`,inert:!0,children:(0,z.jsx)(B,{scene:x,options:f,frameRef:e=>{q.current=e}})})]})}export{W as ConversationVideoStudio};
|
|
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{h as r,u as i}from"./index-Dk0QapqQ.js";import{n as a}from"./icons-gLFQTv74.js";import{t as o}from"./TopicCanvas-LMI0zC7R.js";import{t as s}from"./motion-BY_Egaxm.js";import{t as c}from"./toast-BBNs2h3L.js";import{t as l}from"./Presence-UqXfH4Y-.js";import{a as u,c as d,i as f,r as p,t as m}from"./capture-D8uPIcfj.js";import{i as ee,n as te,r as ne,t as re}from"./share-kW3pZ027.js";import{t as ie}from"./FeatureUseNotice-Dc8joBGM.js";import{r as h}from"./history-D2EH2X6D.js";import{t as g}from"./replay-TYXO0Brm.js";import"./canvas-Bsx3eSaS.js";import{t as _}from"./AnnotationLayer-qV6CIUZv.js";var v=e(),y=t(),b=18e4,x=650,S=350;function C(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 ae(e){return e.reduce((e,t)=>e+C(t),0)}function oe(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 w(e,t,n){let r=n.spans[e+1];return r?r.startMs:x+Math.max(0,n.durationMs-x-S)*(e+1)/(t+1)}function T(e,t,n){let r=[],i=0;return e.forEach((e,a)=>{let o=t[a];if(!o)return;let s=g(e),c=s.cues.map((e,t)=>w(t,s.cues.length,o)),l=[0,x,...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 ee=[...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?ee?.text??null:null,ink:u,questionOnly:t===0})}i+=o.durationMs}),r}var E=24e3,D=.65,O=.18,k=.35,se=.89,A=6,j=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 M(e){return[e.spoken??e.narration,...e.tour.map(e=>e.saySpoken??e.say??``)].map(e=>e.trim()).filter(Boolean)}function N(e){return e.trim().replace(/\s+/g,` `)}function P(e,t){let n=M(e);return n.length>0&&t.pcm.length>0&&t.spans.length===n.length&&n.every((e,n)=>N(t.spans[n]?.text??``)===N(e)&&t.spans[n].t1>t.spans[n].t0)}function F(e){let t=e.spans.map(e=>({text:e.text,startMs:Math.round((D+e.t0)*1e3),endMs:Math.round((D+e.t1)*1e3)}));return{lines:[{text:t.map(e=>e.text).join(` `),pcm:e.pcm,rate:e.sampleRate}],durationS:D+e.duration+k,spans:t}}async function I(e,t,n){let r=M(e);if(!r.length)throw new j(t,e.question);let i=[];for(let a of r){if(n?.aborted)throw new DOMException(`Cancelled`,`AbortError`);let r=await d(a,n);if(n?.aborted)throw new DOMException(`Cancelled`,`AbortError`);if(!r.length)throw new j(t,e.question);i.push({text:a,pcm:r,rate:E})}let a=[],o=D;for(let e of i){let t=o;o+=e.pcm.length/e.rate,a.push({text:e.text,startMs:Math.round(t*1e3),endMs:Math.round(o*1e3)}),o+=O}return{lines:i,durationS:o+k,spans:a}}async function ce(e,t,n){let r=i();if(!r||typeof OfflineAudioContext>`u`)throw Error(`audio-encoding-unavailable`);let a=[];for(let r=0;r<e.length;r++){let i=e[r],o=t(i);a.push(o&&P(i,o)?F(o):await I(i,r,n))}let o=a.reduce((e,t)=>e+t.durationS,0);if(o*1e3>18e4)throw Error(`conversation-too-long`);let s=0;for(let e of a)for(let t of e.lines)for(let e=0;e<t.pcm.length;e++)s=Math.max(s,Math.abs(t.pcm[e]));let c=s>0?Math.min(A,se/s):1,l=new OfflineAudioContext(1,Math.ceil(o*r.sampleRate),r.sampleRate),u=l.createGain();u.gain.value=c,u.connect(l.destination);let d=0;for(let e of a){let t=d+D;for(let n of e.lines){let e=l.createBuffer(1,n.pcm.length,n.rate);e.getChannelData(0).set(n.pcm);let r=l.createBufferSource();r.buffer=e,r.connect(u),r.start(t),t+=n.pcm.length/n.rate+O}d+=e.durationS}return{buffer:await l.startRendering(),turns:a.map(e=>({durationMs:Math.round(e.durationS*1e3),spans:e.spans})),durationMs:Math.round(o*1e3)}}var le={"1080p":{width:1920,height:1080},"720p":{width:1280,height:720}};function L(e,t,n=r()){let{bitrate:i}=m(e,n);return t===`720p`?Math.round(i*.55):i}async function R(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 ue(){return typeof document<`u`&&(typeof VideoEncoder<`u`&&typeof AudioEncoder<`u`||u()!==null)}async function de(e){let t=r(),n=le[e.size],i=e.scenes[0];i&&await e.applyScene(i,0);let a=getComputedStyle(e.el).backgroundColor,o=await f({el:e.el,audioBuffer:e.audioBuffer,aspect:`16:9`,dims:{w:n.width,h:n.height},quality:e.quality,bitrate:L(e.quality,e.size,t),background:a&&a!==`rgba(0, 0, 0, 0)`?a:void 0,maxDurationMs:e.durationMs}),s=performance.now();try{for(let t=1;t<e.scenes.length;t++){let n=e.scenes[t];for(;performance.now()-s<n.startMs;){if(e.signal.aborted)throw new DOMException(`Cancelled`,`AbortError`);await R(e.signal),await new Promise(e=>setTimeout(e,25))}await e.applyScene(n,t),e.onProgress?.({phase:`render`,completed:t+1,total:e.scenes.length})}for(;performance.now()-s<e.durationMs;){if(e.signal.aborted)throw new DOMException(`Cancelled`,`AbortError`);await R(e.signal),await new Promise(e=>setTimeout(e,25))}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 z=n();function B({scene:e,options:t,frameRef:n,glide:r=!0}){let i=(0,v.useRef)(null),a=(0,v.useRef)(null),[s,c]=(0,v.useState)(0);(0,v.useEffect)(()=>(n?.(i.current),()=>n?.(null)),[n]),(0,v.useEffect)(()=>{let t=a.current;if(!t)return;let n=0;if(e?.spot){let r=[...t.querySelectorAll(`[data-spot-id]`)].find(t=>t.dataset.spotId===e.spot);if(!r)return;let i=t.getBoundingClientRect(),a=r.getBoundingClientRect();n=Math.max(0,t.scrollTop+a.top-i.top-(t.clientHeight-a.height)/2)}typeof t.scrollTo==`function`?t.scrollTo({top:n,behavior:r?`smooth`:`auto`}):t.scrollTop=n;let i=window.setTimeout(()=>c(e=>e+1),420);return()=>window.clearTimeout(i)},[e?.spot,e?.turnIndex,r]);let u=e?.questionOnly??!1,d=e?e.frame.question||e.frame.spec.title:``;return(0,z.jsx)(`div`,{ref:i,className:`cvs-stage`,"data-aspect":`16:9`,"data-question-only":u,"data-captioned":t.captions,children:e?(0,z.jsxs)(z.Fragment,{children:[(0,z.jsxs)(`header`,{className:`cvs-header`,children:[(0,z.jsxs)(`div`,{className:`cvs-brand`,children:[(0,z.jsx)(`span`,{className:`cvs-brand-dot`}),` Mavéa conversation`]}),(0,z.jsxs)(`div`,{className:`cvs-turn`,children:[`Turn `,e.turnIndex+1]}),(0,z.jsx)(`h2`,{children:d})]}),u?(0,z.jsxs)(`div`,{className:`cvs-ask`,children:[(0,z.jsx)(`span`,{className:`cvs-ask-eyebrow`,children:`Asked`}),(0,z.jsx)(`p`,{className:`cvs-ask-line`,children:d})]}):(0,z.jsxs)(`div`,{ref:a,className:`cvs-canvas`,children:[(0,z.jsx)(`div`,{className:`topic-wrap`,children:(0,z.jsx)(o,{data:e.frame.spec,spot:e.spot,built:{},onProve:()=>{}})},e.turnIndex),t.penMarks&&(0,z.jsx)(_,{spots:e.ink,within:i.current,revision:s})]}),t.captions&&e.caption&&(0,z.jsx)(`div`,{className:`cvs-caption`,children:e.caption}),t.presence&&(0,z.jsx)(`div`,{className:`cvs-presence`,children:(0,z.jsx)(l,{state:u?`thinking`:`speaking`})})]}):(0,z.jsx)(`div`,{className:`cvs-empty`,children:`Choose a turn to preview it.`})})}var fe=[{id:`1080p`,label:`1080p`,hint:`1920×1080`},{id:`720p`,label:`720p`,hint:`1280×720`}],pe=[{id:`balanced`,label:`Balanced`},{id:`high`,label:`High`},{id:`ultra`,label:`Ultra`}],V=650;function H(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 me=[{key:`captions`,label:`Captions`},{key:`spotlights`,label:`Spotlights`},{key:`penMarks`,label:`Pen marks`},{key:`presence`,label:`Mavéa`}];function U(e){let t=Math.max(0,Math.round(e/1e3));return`${Math.floor(t/60)}:${String(t%60).padStart(2,`0`)}`}function he(e){let t=(0,y.c)(12),{width:n,height:r,children:i}=e,a=(0,v.useRef)(null),[o,s]=(0,v.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,v.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,z.jsx)(`div`,{ref:a,className:`cvs-viewport`,children:(0,z.jsx)(`div`,{className:`cvs-scaler`,style:f,children:i})}),t[9]=i,t[10]=f,t[11]=p):p=t[11],p}function ge(e){return e.map(e=>{let t=C(e);return{durationMs:t,spans:[{text:e.narration,startMs:650,endMs:Math.max(651,t-350)}]}})}function W({frames:e,retainedAudio:t,onShared:n,onBusyChange:r,frameRef:i}){let o=(0,v.useMemo)(()=>e.filter(e=>!!((e.spoken??e.narration).trim()||e.tour.some(e=>(e.saySpoken??e.say)?.trim()))),[e]),[l,u]=(0,v.useState)(()=>new Set(o.length?[h(o[o.length-1])]:[])),d=(0,v.useMemo)(()=>new Set(o.map(h)),[o]),[f,m]=(0,v.useState)({size:`1080p`,quality:`high`,captions:!0,spotlights:!0,penMarks:!0,presence:!0}),g=(0,v.useMemo)(()=>e.filter(e=>l.has(h(e))),[e,l]),_=(0,v.useMemo)(()=>ae(g),[g]),y=(0,v.useMemo)(()=>T(g,ge(g),f),[g,f]),[x,S]=(0,v.useState)(()=>y[0]??null),[C,w]=(0,v.useState)(null),[E,D]=(0,v.useState)(null),[O,k]=(0,v.useState)(null),[se,A]=(0,v.useState)(!1),[M,N]=(0,v.useState)(!1),[P,F]=(0,v.useState)(0),[I,L]=(0,v.useState)(!1),[R,W]=(0,v.useState)(!1),G=(0,v.useRef)(null),K=(0,v.useRef)(null),q=(0,v.useRef)(null),J=C!==null&&C.phase!==`ready`,Y=ue(),X=(0,v.useMemo)(()=>s(),[]),Z=M&&!J&&!X&&y.length>1;(0,v.useEffect)(()=>r?.(J),[J,r]),(0,v.useEffect)(()=>{if(!J){W(!1);return}let e=()=>W(document.visibilityState===`hidden`);return e(),document.addEventListener(`visibilitychange`,e),()=>document.removeEventListener(`visibilitychange`,e)},[J]),(0,v.useEffect)(()=>N(!0),[]),(0,v.useEffect)(()=>{let e=X?y.findIndex(e=>!e.questionOnly):0;F(Math.max(0,e)),L(!1)},[y,X]),(0,v.useEffect)(()=>{J||S(y[P]??y[0]??null)},[y,P,J]),(0,v.useEffect)(()=>{if(!Z||I)return;let e=y[P]??y[0],t=window.setTimeout(()=>F(e=>(e+1)%y.length),Math.max(V,e?.durationMs??V));return()=>window.clearTimeout(t)},[Z,I,y,P]),(0,v.useEffect)(()=>()=>{G.current?.abort(),K.current?.dispose?.(),K.current=null,r?.(!1)},[r]);let _e=(0,v.useCallback)(async e=>{S(e),await H()},[]),Q=(0,v.useCallback)(()=>{K.current?.dispose?.(),K.current=null,D(null),w(null)},[]),ve=(0,v.useCallback)(async()=>{if(!g.length||_>18e4)return;let e=new AbortController;G.current=e,Q(),k(null),w({phase:`audio`,completed:0,total:g.length}),A(!0);try{await H();let n=q.current;if(!n)throw Error(`capture-stage-unavailable`);let r=await ce(g,t??(()=>null),e.signal),i=T(g,r.turns,f);if(!i.length)throw Error(`empty-video`);w({phase:`render`,completed:1,total:i.length});let a=await de({el:n,scenes:i,audioBuffer:r.buffer,durationMs:r.durationMs,size:f.size,quality:f.quality,signal:e.signal,applyScene:_e,onProgress:w});K.current=a,D(a),w(null)}catch(e){if(e?.name===`AbortError`){w(null);return}let t=e instanceof j?`${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.`;k(t),w(null)}finally{A(!1)}},[_e,Q,_,f,t,g]),$=e=>{J||(u(new Set(e.map(h))),Q(),k(null))},ye=le[f.size],be=re(ee(g[0]?.spec.title||g[0]?.question,new Date),E?.type??``),xe=C?C.phase===`audio`?`Preparing required narration…`:C.phase===`render`?`Rendering scene ${C.completed} of ${C.total}…`:C.phase===`encode`?`Finishing the file…`:`Video ready`:``,Se=_>b;return(0,z.jsxs)(z.Fragment,{children:[(0,z.jsxs)(`div`,{className:`shm-panel cvs-panel`,children:[(0,z.jsx)(`div`,{className:`shm-eyebrow`,children:`▷ CONVERSATION VIDEO`}),(0,z.jsx)(`div`,{className:`cvs-title`,children:`Share this conversation.`}),(0,z.jsx)(`div`,{className:`shm-sub`,children:`Pick the turns worth sending. Mavéa narrates every one. The video renders locally in this browser and is never uploaded.`}),(0,z.jsx)(ie,{kind:`publishing`,from:`live`}),(0,z.jsxs)(`div`,{className:`cvs-presets`,children:[(0,z.jsx)(`button`,{type:`button`,onClick:()=>$(o.slice(-1)),disabled:J,children:`Current turn`}),(0,z.jsx)(`button`,{type:`button`,onClick:()=>$(e.slice(oe(e)).filter(e=>d.has(h(e)))),disabled:J,children:`Current topic`}),(0,z.jsx)(`button`,{type:`button`,onClick:()=>$(o),disabled:J,children:`All turns`})]}),(0,z.jsx)(`div`,{className:`cvs-turns`,role:`group`,"aria-label":`Conversation turns`,children:e.map((e,t)=>{let n=h(e),r=d.has(n);return(0,z.jsxs)(`label`,{className:`cvs-turn-card`,"data-selected":l.has(n),children:[(0,z.jsx)(`input`,{type:`checkbox`,checked:l.has(n),disabled:J||!r,onChange:()=>{u(e=>{let t=new Set(e);return t.has(n)?t.delete(n):t.add(n),t}),Q()}}),(0,z.jsx)(`span`,{className:`cvs-thumb`,"aria-hidden":`true`,children:e.spec.blocks.length}),(0,z.jsxs)(`span`,{className:`cvs-turn-copy`,children:[(0,z.jsx)(`strong`,{children:e.question||e.spec.title}),(0,z.jsxs)(`small`,{children:[new Date(e.at).toLocaleTimeString([],{hour:`numeric`,minute:`2-digit`}),r?``:` · no narration`]})]}),(0,z.jsx)(`span`,{className:`cvs-order`,children:t+1})]},n)})}),(0,z.jsxs)(`div`,{className:`shm-group`,children:[(0,z.jsx)(`div`,{className:`shm-label`,children:`Size`}),(0,z.jsx)(`div`,{className:`shm-chips`,children:fe.map(e=>(0,z.jsx)(`button`,{type:`button`,className:`shm-chip`,"data-active":f.size===e.id,"aria-pressed":f.size===e.id,disabled:J,onClick:()=>{Q(),m(t=>({...t,size:e.id}))},title:e.hint,children:e.label},e.id))})]}),(0,z.jsxs)(`div`,{className:`shm-group`,children:[(0,z.jsx)(`div`,{className:`shm-label`,children:`Quality`}),(0,z.jsx)(`div`,{className:`shm-chips`,children:pe.map(e=>(0,z.jsx)(`button`,{type:`button`,className:`shm-chip`,"data-active":f.quality===e.id,"aria-pressed":f.quality===e.id,disabled:J,onClick:()=>{Q(),m(t=>({...t,quality:e.id}))},title:p(e.id),children:e.label},e.id))})]}),(0,z.jsxs)(`div`,{className:`shm-group`,children:[(0,z.jsx)(`div`,{className:`shm-label`,children:`Include`}),(0,z.jsxs)(`div`,{className:`shm-chips`,children:[me.map(({key:e,label:t})=>(0,z.jsx)(`button`,{type:`button`,className:`shm-chip`,"data-active":f[e],"aria-pressed":f[e],disabled:J,onClick:()=>{Q(),m(t=>({...t,[e]:!t[e]}))},children:t},e)),(0,z.jsx)(`span`,{className:`cvs-audio-lock`,children:`● Audio always on`})]})]}),(0,z.jsxs)(`div`,{className:`cvs-meter`,"data-over":Se,children:[(0,z.jsxs)(`span`,{children:[U(_),` selected`]}),(0,z.jsx)(`span`,{children:`3:00 max`}),(0,z.jsx)(`i`,{style:{width:`${Math.min(100,_/b*100)}%`}})]}),O&&(0,z.jsx)(`div`,{className:`cvs-error`,role:`alert`,children:O}),!Y&&(0,z.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.`}),C&&(0,z.jsxs)(`div`,{className:`cvs-progress`,role:`status`,children:[xe,R&&(0,z.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.`})]}),E&&(0,z.jsxs)(`div`,{className:`cvs-result`,role:`status`,children:[(0,z.jsxs)(`strong`,{children:[`Ready · `,E.width,`×`,E.height]}),(0,z.jsxs)(`span`,{children:[U(E.durationMs),` · `,(E.blob.size/1048576).toFixed(1),` MB`]})]}),(0,z.jsx)(`div`,{className:`shm-actions`,children:E?(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(`button`,{type:`button`,className:`shm-btn shm-btn-primary`,onClick:()=>{K.current=null,te(E.blob,be,()=>void E.dispose?.()),D(null),c(`Saved to your downloads`,`good`),n?.()},children:`↓ Download video`}),typeof navigator<`u`&&typeof navigator.share==`function`&&(0,z.jsx)(`button`,{type:`button`,className:`shm-btn`,onClick:()=>{ne(E,{title:`Mavéa conversation`,filename:be}).then(e=>{e!==`cancelled`&&(K.current=null,D(null),e===`downloaded`&&c(`Saved to your downloads`,`good`),n?.())})},children:`Share`})]}):J?(0,z.jsx)(`button`,{type:`button`,className:`shm-btn`,onClick:()=>G.current?.abort(),children:`Cancel`}):(0,z.jsx)(`button`,{type:`button`,className:`shm-btn shm-btn-primary`,disabled:!g.length||Se||!Y,onClick:()=>void ve(),children:O?`Retry ${f.size} video`:`Create ${f.size} video`})})]}),(0,z.jsx)(`div`,{className:`shm-stage`,children:(0,z.jsxs)(`div`,{className:`shm-frame`,"data-aspect":`16:9`,children:[M?(0,z.jsx)(he,{width:ye.width,height:ye.height,children:(0,z.jsx)(B,{scene:x,options:f,frameRef:i,glide:!X})}):(0,z.jsx)(`div`,{className:`cvs-stage`,"data-aspect":`16:9`,children:(0,z.jsx)(`div`,{className:`cvs-empty`,role:`status`,children:`Preparing preview…`})}),Z&&(0,z.jsx)(`div`,{className:`shm-controls`,children:(0,z.jsx)(`button`,{type:`button`,className:`shm-sound`,"data-on":I,onClick:()=>L(e=>!e),"aria-pressed":I,title:I?`Play preview`:`Pause preview`,children:I?(0,z.jsx)(a.play,{style:{width:17,height:17}}):(0,z.jsx)(a.pause,{style:{width:17,height:17}})})})]})}),se&&(0,z.jsx)(`div`,{className:`cvs-capture-host`,"data-size":f.size,"aria-hidden":`true`,inert:!0,children:(0,z.jsx)(B,{scene:x,options:f,frameRef:e=>{q.current=e}})})]})}export{W as ConversationVideoStudio};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/TopicCanvas-LMI0zC7R.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-Dk0QapqQ.js","assets/useInView-CXTOAEV3.js","assets/coreIcons-DDTChE1H.js","assets/preloadableLazy-MIX1ApBW.js","assets/cachedImport-DW0gP14h.js","assets/lazyRetry-D50B1UMY.js","assets/theme-7IrMJ70_.js","assets/index-DmKgC_TJ.css","assets/icons-gLFQTv74.js","assets/loader-DKJEcbPm.js","assets/FallbackCard-ap_4wOfj.js","assets/blockLabel-FogyzEQY.js","assets/FallbackCard-D_6ps1xA.css","assets/useFocusTrap-DBtkeyRy.js","assets/motion-BY_Egaxm.js","assets/useSpatialCanvas-CfmZOXXP.js","assets/CanvasSkeleton-CRGWlafo.js","assets/CanvasSkeleton-iy6DBvde.css","assets/richText-BkxJhl9N.js","assets/toast-BBNs2h3L.js","assets/format-q0LwBjID.js","assets/safeImageUrl-BINWXOTz.js","assets/useValidatedImage-BQi2c66o.js","assets/layout-CEoNLr-w.js","assets/catalog-BHjl-1uH.js","assets/http-Lar_UMKb.js","assets/lib-B7OE1ZQQ.js","assets/BlockEmpty-B82uCse8.js","assets/motion-DxHSlPN6.js","assets/lib-DMAxsZKm.css","assets/TopicCanvas-uRuHi99s.css","assets/generateLive-B6purd69.js","assets/history-D2EH2X6D.js","assets/catalog-Db9GWM6N.js","assets/facts-BUGuVUIc.js","assets/blockTypes-DUDdP3pB.js","assets/streamParse-B-Gjwa9T.js","assets/liveSchema-B4bQtO88.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-BovElgRL.js","assets/info-CiqHR5cs.js","assets/shapes-Cx5SCKgj.js","assets/speed-K5_Ebj-8.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-jtAUOb62.js","assets/now-C9-UAzTC.js","assets/useLiveConfig-Cpy0_E_-.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-7IrMJ70_.js";import{k as c}from"./index-Dk0QapqQ.js";import{n as l}from"./icons-gLFQTv74.js";import{t as u}from"./FeatureUseNotice-Dc8joBGM.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-BfHRbVKz.js";import{r as b}from"./courseSeed-CZdNBTTs.js";import{i as x,n as S,r as C}from"./mastery-CUfDeuqO.js";/* empty css */import{CourseRail as w}from"./CourseRail-DXt3bzjU.js";var T=t(),E=e(),D=n();r();var O=a(()=>i(()=>import(`./TopicCanvas-LMI0zC7R.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-B6purd69.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,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68])),i(()=>import(`./useLiveConfig-Cpy0_E_-.js`).then(e=>e.d),__vite__mapDeps([69,1,2,3,50,66,49,31,41,48])),i(()=>import(`./streamParse-B-Gjwa9T.js`).then(e=>e.c),__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 +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{n as r}from"./icons-gLFQTv74.js";import{l as i,n as a}from"./useLiveConfig-
|
|
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{n as r}from"./icons-gLFQTv74.js";import{l as i,n as a}from"./useLiveConfig-Cpy0_E_-.js";import{i as o}from"./store-D2IJF4SA.js";import{d as s,i as c,n as l}from"./store-BfHRbVKz.js";import{t as u}from"./generateCourse-C9qvaJRo.js";import{n as d,t as f}from"./useSrsCards-C27o39fF.js";import{t as p}from"./deckLine-NBd3MyGT.js";var m=e(),h=t(),g=n();function _(){let e=(0,h.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,g.jsxs)(`svg`,{viewBox:`0 0 16 16`,fill:`none`,stroke:`currentColor`,strokeWidth:1.7,"aria-hidden":!0,children:[(0,g.jsx)(`circle`,{cx:`6.5`,cy:`6.5`,r:`4`}),(0,g.jsx)(`line`,{x1:`10`,y1:`10`,x2:`14`,y2:`14`})]}),e[0]=t):t=e[0],t}function v(e){let t=(0,h.c)(20),{questions:n,onDone:i}=e,[a,o]=(0,m.useState)(0),[s,c]=(0,m.useState)(!1),l;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(l=[],t[0]=l):l=t[0];let[u,d]=(0,m.useState)(l),[f,p]=(0,m.useState)(0),_;t[1]!==f||t[2]!==a||t[3]!==u||t[4]!==i||t[5]!==n?(_=e=>{let t=f+ +!!e,r=e?u:[...u,n[a].question];if(a+1>=n.length){i({total:n.length,correct:t,missedFronts:r,at:Date.now()});return}p(t),d(r),o(a+1),c(!1)},t[1]=f,t[2]=a,t[3]=u,t[4]=i,t[5]=n,t[6]=_):_=t[6];let v=_,y=n[a],b=a+1,x;t[7]!==n.length||t[8]!==b?(x=(0,g.jsxs)(`div`,{className:`cx-check-progress`,children:[`Question `,b,` of `,n.length]}),t[7]=n.length,t[8]=b,t[9]=x):x=t[9];let S;t[10]===y.question?S=t[11]:(S=(0,g.jsx)(`div`,{className:`cx-check-q`,children:y.question}),t[10]=y.question,t[11]=S);let C;t[12]!==v||t[13]!==y.answer||t[14]!==s?(C=s?(0,g.jsxs)(g.Fragment,{children:[(0,g.jsx)(`div`,{className:`cx-check-a`,children:y.answer}),(0,g.jsxs)(`div`,{className:`cx-check-actions`,children:[(0,g.jsxs)(`button`,{type:`button`,className:`cx-btn cx-btn-miss`,onClick:()=>v(!1),children:[(0,g.jsx)(r.x,{}),` Missed it`]}),(0,g.jsxs)(`button`,{type:`button`,className:`cx-btn cx-btn-got`,onClick:()=>v(!0),children:[(0,g.jsx)(r.check,{}),` Got it`]})]})]}):(0,g.jsx)(`button`,{type:`button`,className:`cx-btn cx-btn-reveal`,onClick:()=>c(!0),children:`Show answer`}),t[12]=v,t[13]=y.answer,t[14]=s,t[15]=C):C=t[15];let w;return t[16]!==x||t[17]!==S||t[18]!==C?(w=(0,g.jsxs)(`div`,{className:`cx-check`,children:[x,S,C]}),t[16]=x,t[17]=S,t[18]=C,t[19]=w):w=t[19],w}function y({courseTitle:e}){"use no memo";f();let t=o().decks.find(t=>t.name===e);return t?(0,g.jsxs)(`a`,{className:`cx-deck-link`,href:d.deck(e),children:[(0,g.jsx)(r.layers,{}),p(t)]}):null}function b({course:e,lessonIdx:t,progress:n,onPrev:o,onNext:d,onCheckpoint:f,busy:p}){let h=e.lessons[t],[b,x]=(0,m.useState)(`idle`),[S,C]=(0,m.useState)(null),[w,T]=(0,m.useState)(null),E=(0,m.useRef)(null);(0,m.useEffect)(()=>()=>E.current?.abort(),[]);let D=(0,m.useCallback)(async()=>{if(!h)return;let n=c(e.id,h.id)??h.checkpoint;if(n?.length){C(n),T(null),x(`checking`);return}T(null),x(`loading`);let r=new AbortController;E.current=r;try{let n=i(a()),o=await u(e,t,n,r.signal);if(r.signal.aborted)return;l(e.id,h.id,o),C(o),x(`checking`)}catch(e){if(r.signal.aborted)return;T(e instanceof Error?e.message:`Couldn't write the checkpoint — try again in a moment.`),x(`error`)}finally{E.current===r&&(E.current=null)}},[e,h,t]);if(!h)return null;let O=e.lessons.length,k=n.lessons[h.id],A=k?.status===`done`,j=k?.checkpoint;return(0,g.jsxs)(`aside`,{className:`course-rail`,"aria-label":`Course: ${e.title}`,children:[(0,g.jsxs)(`div`,{className:`cx-top`,children:[(0,g.jsxs)(`button`,{type:`button`,className:`cx-back`,onClick:()=>{window.location.hash=`#/courses`},children:[(0,g.jsx)(r.chevL,{}),` Courses`]}),(0,g.jsxs)(`span`,{className:`cx-position`,children:[`Lesson `,t+1,` of `,O]}),A&&(0,g.jsxs)(`span`,{className:`cx-done`,children:[(0,g.jsx)(r.check,{}),` Done`]})]}),(0,g.jsxs)(`div`,{className:`cx-title-row`,children:[(0,g.jsx)(`span`,{className:`cx-course-title`,children:e.title}),(0,g.jsx)(`h2`,{className:`cx-lesson-title`,children:h.title})]}),h.objectives.length>0&&(0,g.jsx)(`ul`,{className:`cx-objectives`,children:h.objectives.map(e=>(0,g.jsx)(`li`,{children:e},e))}),b===`checking`&&S?.length?(0,g.jsx)(v,{questions:S,onDone:e=>{x(`idle`),C(null),f(e)}}):b===`loading`?(0,g.jsxs)(`div`,{className:`cx-check-pending`,role:`status`,"aria-live":`polite`,children:[(0,g.jsx)(`span`,{className:`cx-check-spinner`,"aria-hidden":`true`}),(0,g.jsx)(`span`,{children:`Writing your check…`})]}):b===`error`?(0,g.jsxs)(`div`,{className:`cx-check-failed`,role:`alert`,children:[(0,g.jsx)(`span`,{className:`cx-check-failed-msg`,children:w}),(0,g.jsx)(`button`,{type:`button`,className:`cx-link`,onClick:()=>void D(),children:`Retry`})]}):(0,g.jsxs)(`div`,{className:`cx-checkpoint-status`,children:[(0,g.jsx)(`span`,{className:j?s(j)?`cx-pass`:`cx-fail`:`cx-untaken`,children:j?`Checkpoint: ${j.correct}/${j.total}`:`Checkpoint not yet taken`}),(0,g.jsx)(`button`,{type:`button`,className:`cx-link`,onClick:()=>void D(),children:j?`Retake`:`Take checkpoint`})]}),(0,g.jsxs)(`div`,{className:`cx-secondary-links`,children:[(0,g.jsx)(y,{courseTitle:e.title}),(0,g.jsxs)(`button`,{type:`button`,className:`cx-zoom-link`,onClick:()=>{window.location.hash=`#/deepzoom?q=${encodeURIComponent(h.title)}`},children:[(0,g.jsx)(_,{}),` Zoom into this`]})]}),(0,g.jsxs)(`div`,{className:`cx-nav`,children:[(0,g.jsxs)(`button`,{type:`button`,className:`cx-btn`,onClick:o,disabled:!!p||t<=0,children:[(0,g.jsx)(r.chevL,{}),` Prev`]}),(0,g.jsxs)(`button`,{type:`button`,className:`cx-btn cx-btn-primary`,onClick:d,disabled:!!p||t>=O-1,children:[`Next `,(0,g.jsx)(r.chevR,{})]})]})]})}export{b as CourseRail};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/generateCourse-
|
|
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-7IrMJ70_.js";import{j as l}from"./index-CfcUMOBf.js";import{n as u}from"./icons-gLFQTv74.js";import{t as d}from"./useFocusTrap-DBtkeyRy.js";import{t as f}from"./homeTarget-CsO8nY7z.js";import{t as p}from"./DropSelect-C3uYlej-.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-BfHRbVKz.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-DU281tDE.js`).then(e=>e.n),__vite__mapDeps([0,1,2,3,4,5,6])),i(()=>import(`./useLiveConfig-DWz7BRdk.js`).then(e=>e.d),__vite__mapDeps([7,1,8,9,5,10,2,3,4,6]))]),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
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/generateCourse-C9qvaJRo.js","assets/rolldown-runtime-DkW27tQK.js","assets/providers-BovElgRL.js","assets/http-Lar_UMKb.js","assets/blockTypes-DUDdP3pB.js","assets/info-CiqHR5cs.js","assets/attachments-BW-vki-E.js","assets/useLiveConfig-Cpy0_E_-.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-7IrMJ70_.js";import{j as l}from"./index-Dk0QapqQ.js";import{n as u}from"./icons-gLFQTv74.js";import{t as d}from"./useFocusTrap-DBtkeyRy.js";import{t as f}from"./homeTarget-CsO8nY7z.js";import{t as p}from"./DropSelect-DjbdVfIR.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-BfHRbVKz.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-C9qvaJRo.js`).then(e=>e.n),__vite__mapDeps([0,1,2,3,4,5,6])),i(()=>import(`./useLiveConfig-Cpy0_E_-.js`).then(e=>e.d),__vite__mapDeps([7,1,8,9,5,10,2,3,4,6]))]),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{T 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{T as r}from"./index-Dk0QapqQ.js";/* empty css */import{t as i}from"./useDashboards-SRk8LqHe.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-oz6IoG8m.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};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.crp{width:min(calc(100% - 40px), var(--canvas-col-max));margin:0 auto 12px}.crp-toggle{color:var(--text-muted);font-family:var(--font-data);font-size:var(--fs-2xs);letter-spacing:.04em;text-transform:uppercase;cursor:pointer;background:0 0;border:0;padding:4px 0}.crp-toggle:hover{color:var(--text-secondary)}.crp-steps{border:1px solid var(--line-soft);border-radius:var(--r-md);background:var(--surface-elevated);margin:8px 0 0;padding:12px 14px;list-style:none}.crp-step{color:var(--text-secondary);grid-template-columns:16px minmax(0,7rem) auto;align-items:baseline;gap:8px;padding:3px 0;font-size:13px;display:grid}.crp-step.is-bad{color:var(--text-primary)}.crp-step-mark{color:var(--insight);font-family:var(--font-data)}.crp-step.is-bad .crp-step-mark{color:var(--warning)}.crp-step-name{font-family:var(--font-data);font-size:var(--fs-2xs);letter-spacing:.04em;text-transform:uppercase}.crp-step-count{color:var(--text-muted);font-family:var(--font-data)}.crp-step-detail{color:var(--text-muted);grid-column:3}.crp-foot{border-top:1px solid var(--line-soft);color:var(--text-primary);justify-content:space-between;margin-top:8px;padding-top:8px;font-size:13px;display:flex}.crp-foot-time{color:var(--text-muted);font-family:var(--font-data)}.crp-fix{color:var(--text-secondary);margin-top:6px;font-size:13px}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/generateLive-B6purd69.js","assets/blockLabel-FogyzEQY.js","assets/layout-CEoNLr-w.js","assets/catalog-BHjl-1uH.js","assets/history-D2EH2X6D.js","assets/catalog-Db9GWM6N.js","assets/preload-helper-CiWYd9n-.js","assets/rolldown-runtime-DkW27tQK.js","assets/facts-BUGuVUIc.js","assets/blockTypes-DUDdP3pB.js","assets/streamParse-B-Gjwa9T.js","assets/liveSchema-B4bQtO88.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-BovElgRL.js","assets/http-Lar_UMKb.js","assets/info-CiqHR5cs.js","assets/shapes-Cx5SCKgj.js","assets/speed-K5_Ebj-8.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-jtAUOb62.js","assets/now-C9-UAzTC.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-LMI0zC7R.js";import{a as s}from"./loader-DKJEcbPm.js";import{t as c}from"./useFocusTrap-DBtkeyRy.js";import{r as l}from"./sourceHost-BV3t2XDb.js";import"./canvas-Bsx3eSaS.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-CsjDEADX.js";import{l as C,n as w,r as ee,u as te}from"./useLiveConfig-Cpy0_E_-.js";import{t as T}from"./route-D4kd-D3B.js";import{t as ne}from"./useDashboards-SRk8LqHe.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-DDqCFJKY.js";import{r as le}from"./predictions-CkVKHq-5.js";import{i as ue,n as de,r as P}from"./confirmAdd-DzMO9jKV.js";import{t as fe}from"./planTracker-KKAtTBWs.js";import{t as pe}from"./pin-CZAIlpXt.js";/* empty css */import{t as me}from"./CadenceCard-P4teI7Se.js";import{t as he}from"./CheckLogRail-DkHIHL0E.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-B6purd69.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]));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};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/DashboardLoopRuntime-CnN5VayH.js","assets/useDashboardLoop-DDqCFJKY.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-CsjDEADX.js","assets/friendlyAsk-BBdRZIar.js","assets/contentVault-xfUwSJ3i.js","assets/keyVault-Aw5Y2PjT.js","assets/providers-BovElgRL.js","assets/blockTypes-DUDdP3pB.js","assets/info-CiqHR5cs.js","assets/attachments-BW-vki-E.js","assets/useLiveConfig-Cpy0_E_-.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-DKl5rrTD.js","assets/spokenText-C88IQJ0M.js","assets/kokoro-P_fkcX-A.js","assets/index-Dk0QapqQ.js","assets/useInView-CXTOAEV3.js","assets/jsx-runtime-DeHZSEgm.js","assets/coreIcons-DDTChE1H.js","assets/preloadableLazy-MIX1ApBW.js","assets/cachedImport-DW0gP14h.js","assets/lazyRetry-D50B1UMY.js","assets/theme-7IrMJ70_.js","assets/index-DmKgC_TJ.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-Dk0QapqQ.js";import{t as c}from"./useDashboards-SRk8LqHe.js";var l=t(),u=e(),d=n();r();var f=a(()=>i(()=>import(`./DashboardLoopRuntime-CnN5VayH.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]))).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-DDqCFJKY.js";function t(){return e(),null}export{t as DashboardLoopRuntime};
|
|
@@ -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{C as r,M as i,j as a}from"./store-CsjDEADX.js";import{t as o}from"./route-D4kd-D3B.js";import{t as s}from"./useDashboards-SRk8LqHe.js";import{c,f as l,p as u,s as d}from"./format-g3dP8OI3.js";import{n as f,r as p,t as ee}from"./notify-Bz4wuE4T.js";import{t as te}from"./CadenceCard-P4teI7Se.js";var m=e(),ne=t(),h={"15min":`Every ~15 min while open`,hourly:`Hourly while open`,"6h":`Every 6 hours while open`,daily:`Daily while open`,manual:`Manual only`},g={"15min":4,hourly:3,"6h":2,daily:1,manual:0},re=`You provide the API key and pay that provider directly. Data refreshes and AI analysis can consume quota or incur a third-party charge on every scheduled run. Check your provider’s pricing and make sure this cadence is what you want.`,ie=`Nothing runs on its own with this cadence — it only updates when you supply a value yourself, or when you explicitly pull in a conversation (which does spend a call at that moment).`;function ae(e,t,n){let r=n>0,i=r?g[e.data]:0,a=e.ai===`daily`?2:+(e.ai===`weekly`),o=i+(a+ +!!t),s=o>0,c;c=o===0?`none`:o<=1?`minimal`:o<=3?`light`:o<=5?`moderate`:`frequent`;let l=r?h[e.data]:`Free — no live-fetched metrics`,u;return u=t&&a===0?`Only when a line is crossed`:t?`${_(e.ai)} + when a line is crossed`:a===0?`Only when you ask`:_(e.ai),{level:c,usesKey:s,dataLabel:l,aiLabel:u,warning:s?re:ie}}function _(e){return e===`daily`?`Daily`:e===`weekly`?`Weekly`:`Manual`}var oe={none:`No automatic API usage`,minimal:`Minimal automatic API usage`,light:`Light automatic API usage`,moderate:`Moderate automatic API usage`,frequent:`Frequent automatic API usage`},v=n(),se=[{v:`on-cross`,label:`When a line crosses`,ai:`on-change`,smart:!0},{v:`daily`,label:`Daily`,ai:`daily`,smart:!1},{v:`weekly`,label:`Weekly`,ai:`weekly`,smart:!1},{v:`ask`,label:`Only when I ask`,ai:`manual`,smart:!1}];function ce(e,t){return e===`daily`?`daily`:e===`weekly`?`weekly`:e===`on-change`&&t?`on-cross`:`ask`}function y(e){let t=(0,ne.c)(131),{id:n}=e,l=s(),h;t[0]!==l||t[1]!==n?(h=l.find(e=>e.id===n)??null,t[0]=l,t[1]=n,t[2]=h):h=t[2];let g=h,re=u(),[ie]=(0,m.useState)(de),_;t[3]===g?_=t[4]:(_=g?ae(g.cadence,g.smartTrigger,c(g)+d(g)):null,t[3]=g,t[4]=_);let y=_,[b,me]=(0,m.useState)(!1),he,ge;t[5]===b?(he=t[6],ge=t[7]):(he=()=>{if(!b)return;let e=window.setTimeout(()=>me(!1),5e3);return()=>window.clearTimeout(e)},ge=[b],t[5]=b,t[6]=he,t[7]=ge),(0,m.useEffect)(he,ge);let[_e,ve]=(0,m.useState)(null),[x,ye]=(0,m.useState)(!1),be,xe;t[8]===x?(be=t[9],xe=t[10]):(be=()=>{if(!x)return;let e=window.setTimeout(()=>ye(!1),4e3);return()=>window.clearTimeout(e)},xe=[x],t[8]=x,t[9]=be,t[10]=xe),(0,m.useEffect)(be,xe);let Se;if(t[11]===n?Se=t[12]:(Se=[n],t[11]=n,t[12]=Se),(0,m.useEffect)(ue,Se),!g||!y){let e;t[13]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,v.jsx)(`p`,{className:`dash-empty-title`,children:`That dashboard isn’t here.`}),t[13]=e):e=t[13];let n;return t[14]===Symbol.for(`react.memo_cache_sentinel`)?(n=(0,v.jsx)(`div`,{className:`dash-settings`,children:(0,v.jsxs)(`div`,{className:`dash-empty`,children:[e,(0,v.jsx)(`p`,{className:`dash-empty-how`,children:(0,v.jsx)(`a`,{href:o.gallery,children:`Back to your dashboards →`})})]})}),t[14]=n):n=t[14],n}let Ce;t[15]===Symbol.for(`react.memo_cache_sentinel`)?(Ce=f(),t[15]=Ce):Ce=t[15];let we=Ce,Te=we?_e??`A desktop notification while Mavéa is open`:`Not supported in this browser`,Ee;t[16]!==g.alerts||t[17]!==g.id?(Ee=async()=>{if(g.alerts.push){i(g.id,{alerts:{...g.alerts,push:!1}}),ve(null);return}await p()?(i(g.id,{alerts:{...g.alerts,push:!0}}),ve(null)):ve(`Blocked — allow notifications for this site in your browser, then try again`)},t[16]=g.alerts,t[17]=g.id,t[18]=Ee):Ee=t[18];let De=Ee,Oe;t[19]===g?Oe=t[20]:(Oe=()=>{ee(g,[{id:`test`,label:`Test alert`,metricId:``,comparator:`gt`,threshold:0,state:`TRIGGERED`,sourceQuote:{text:``,saidAt:0}}]),ye(!0)},t[19]=g,t[20]=Oe);let ke=Oe,S;t[21]===g.id?S=t[22]:(S=o.detail(g.id),t[21]=g.id,t[22]=S);let C;t[23]===S?C=t[24]:(C=(0,v.jsx)(`a`,{className:`dash-back`,href:S,"aria-label":`Back to dashboard`,children:`←`}),t[23]=S,t[24]=C);let Ae;t[25]===Symbol.for(`react.memo_cache_sentinel`)?(Ae=(0,v.jsx)(`span`,{className:`dash-detail-title`,children:`Settings`}),t[25]=Ae):Ae=t[25];let w;t[26]===g.title?w=t[27]:(w=(0,v.jsx)(`span`,{className:`dash-detail-q`,children:g.title}),t[26]=g.title,t[27]=w);let T;t[28]!==C||t[29]!==w?(T=(0,v.jsxs)(`header`,{className:`dash-detail-head`,children:[C,Ae,w]}),t[28]=C,t[29]=w,t[30]=T):T=t[30];let E;t[31]!==g||t[32]!==ie?(E=(0,v.jsx)(te,{dashboard:g,now:ie}),t[31]=g,t[32]=ie,t[33]=E):E=t[33];let je,Me;t[34]===Symbol.for(`react.memo_cache_sentinel`)?(je=(0,v.jsx)(`div`,{className:`card-eyebrow`,children:`AI analysis`}),Me=(0,v.jsx)(`p`,{className:`dash-set-blurb`,children:`Mavéa reads the latest numbers and tells you, briefly and honestly, what they show and what’s changed since the last check — grounded in a fresh web search. Its read shows up on the dashboard. Each read is one model call on your API key. Choose when it runs:`}),t[34]=je,t[35]=Me):(je=t[34],Me=t[35]);let D;t[36]!==g.cadence.ai||t[37]!==g.smartTrigger?(D=ce(g.cadence.ai,g.smartTrigger),t[36]=g.cadence.ai,t[37]=g.smartTrigger,t[38]=D):D=t[38];let O;t[39]===g.id?O=t[40]:(O=e=>{let t=se.find(t=>t.v===e);t&&(a(g.id,{ai:t.ai}),i(g.id,{smartTrigger:t.smart}))},t[39]=g.id,t[40]=O);let k;t[41]!==D||t[42]!==O?(k=(0,v.jsx)(fe,{options:se,value:D,onPick:O}),t[41]=D,t[42]=O,t[43]=k):k=t[43];let Ne;t[44]===Symbol.for(`react.memo_cache_sentinel`)?(Ne=(0,v.jsx)(`p`,{className:`dash-set-blurb`,children:`Refreshing the numbers themselves — the web searches — is the Check cadence above. Checking whether a line crossed is a free comparison. This read is the one model call, and you can trigger it anytime from the dashboard with “Read the numbers now.”`}),t[44]=Ne):Ne=t[44];let A;t[45]===k?A=t[46]:(A=(0,v.jsxs)(`section`,{className:`card dash-set-card`,children:[je,Me,k,Ne]}),t[45]=k,t[46]=A);let Pe;t[47]===Symbol.for(`react.memo_cache_sentinel`)?(Pe=(0,v.jsx)(`div`,{className:`card-eyebrow`,children:`Where alerts go`}),t[47]=Pe):Pe=t[47];let j;t[48]!==g.alerts||t[49]!==g.id?(j=()=>i(g.id,{alerts:{...g.alerts,inApp:!g.alerts.inApp}}),t[48]=g.alerts,t[49]=g.id,t[50]=j):j=t[50];let M;t[51]!==g.alerts.inApp||t[52]!==j?(M=(0,v.jsx)(pe,{label:`In-app`,note:`A pop-up notice when a line you set is crossed — this dashboard’s own alert list always updates either way`,on:g.alerts.inApp,onToggle:j}),t[51]=g.alerts.inApp,t[52]=j,t[53]=M):M=t[53];let N;t[54]===De?N=t[55]:(N=()=>void De(),t[54]=De,t[55]=N);let P;t[56]!==g.alerts.push||t[57]!==Te||t[58]!==N?(P=(0,v.jsx)(pe,{label:`Push`,note:Te,on:g.alerts.push,disabled:!we,onToggle:N}),t[56]=g.alerts.push,t[57]=Te,t[58]=N,t[59]=P):P=t[59];let F;t[60]!==g.alerts.push||t[61]!==x||t[62]!==ke?(F=we&&g.alerts.push&&(0,v.jsxs)(`p`,{className:`dash-alert-test-row`,children:[(0,v.jsx)(`button`,{type:`button`,className:`dash-alert-test`,onClick:ke,children:`Send a test`}),x&&(0,v.jsx)(`span`,{className:`dash-alert-test-note`,role:`status`,children:`Sent a test — if nothing appeared, re-check this site’s notification permission.`})]}),t[60]=g.alerts.push,t[61]=x,t[62]=ke,t[63]=F):F=t[63];let I;t[64]!==M||t[65]!==P||t[66]!==F?(I=(0,v.jsxs)(`div`,{className:`dash-set-alerts`,children:[M,P,F]}),t[64]=M,t[65]=P,t[66]=F,t[67]=I):I=t[67];let Fe;t[68]===Symbol.for(`react.memo_cache_sentinel`)?(Fe=(0,v.jsx)(`p`,{className:`dash-set-blurb`,children:`Alerts are best-effort: a check that doesn’t run, a closed Mavéa, or blocked notifications means no alert. Don’t rely on one arriving for anything important.`}),t[68]=Fe):Fe=t[68];let L;t[69]===I?L=t[70]:(L=(0,v.jsxs)(`section`,{className:`card dash-set-card`,children:[Pe,I,Fe]}),t[69]=I,t[70]=L);let Ie;t[71]===Symbol.for(`react.memo_cache_sentinel`)?(Ie=(0,v.jsx)(`div`,{className:`card-eyebrow`,children:`Delete this dashboard`}),t[71]=Ie):Ie=t[71];let R;t[72]===g.title?R=t[73]:(R=(0,v.jsxs)(`p`,{className:`dash-set-blurb`,children:[`Removes “`,g.title,`” and everything tracked on it. The conversations it was built from are untouched.`]}),t[72]=g.title,t[73]=R);let Le=`dash-del-btn`+(b?` armed`:``),z;t[74]!==b||t[75]!==g.id?(z=()=>{if(!b){me(!0);return}r(g.id),window.location.hash=o.gallery},t[74]=b,t[75]=g.id,t[76]=z):z=t[76];let Re;t[77]===Symbol.for(`react.memo_cache_sentinel`)?(Re=()=>me(!1),t[77]=Re):Re=t[77];let ze=b?`Tap again to delete`:`Delete dashboard`,B;t[78]!==Le||t[79]!==z||t[80]!==ze?(B=(0,v.jsx)(`button`,{type:`button`,className:Le,onClick:z,onBlur:Re,children:ze}),t[78]=Le,t[79]=z,t[80]=ze,t[81]=B):B=t[81];let Be=b?`Tap again to delete ${g.title}`:``,V;t[82]===Be?V=t[83]:(V=(0,v.jsx)(`span`,{className:`dash-sr-only`,"aria-live":`polite`,children:Be}),t[82]=Be,t[83]=V);let H;t[84]!==R||t[85]!==B||t[86]!==V?(H=(0,v.jsxs)(`section`,{className:`card dash-set-card dash-set-danger`,children:[Ie,R,B,V]}),t[84]=R,t[85]=B,t[86]=V,t[87]=H):H=t[87];let U;t[88]!==E||t[89]!==A||t[90]!==L||t[91]!==H?(U=(0,v.jsxs)(`div`,{className:`dash-settings-cols`,children:[E,A,L,H]}),t[88]=E,t[89]=A,t[90]=L,t[91]=H,t[92]=U):U=t[92];let Ve;t[93]===Symbol.for(`react.memo_cache_sentinel`)?(Ve=(0,v.jsx)(`div`,{className:`card-eyebrow`,children:`On your API key`}),t[93]=Ve):Ve=t[93];let He=`dash-usage-band dash-usage--${y.level}`,Ue=oe[y.level],W;t[94]!==He||t[95]!==Ue?(W=(0,v.jsx)(`div`,{className:He,children:Ue}),t[94]=He,t[95]=Ue,t[96]=W):W=t[96];let We;t[97]===Symbol.for(`react.memo_cache_sentinel`)?(We=(0,v.jsx)(`span`,{children:`Data refresh`}),t[97]=We):We=t[97];let G;t[98]===y.dataLabel?G=t[99]:(G=(0,v.jsxs)(`div`,{className:`dash-usage-row`,children:[We,(0,v.jsx)(`span`,{className:`dash-usage-val`,children:y.dataLabel})]}),t[98]=y.dataLabel,t[99]=G);let Ge;t[100]===Symbol.for(`react.memo_cache_sentinel`)?(Ge=(0,v.jsx)(`span`,{children:`AI analysis`}),t[100]=Ge):Ge=t[100];let K;t[101]===y.aiLabel?K=t[102]:(K=(0,v.jsxs)(`div`,{className:`dash-usage-row`,children:[Ge,(0,v.jsx)(`span`,{className:`dash-usage-val`,children:y.aiLabel})]}),t[101]=y.aiLabel,t[102]=K);let Ke;t[103]===Symbol.for(`react.memo_cache_sentinel`)?(Ke=(0,v.jsxs)(`div`,{className:`dash-usage-row`,children:[(0,v.jsx)(`span`,{children:`Adding a conversation`}),(0,v.jsx)(`span`,{className:`dash-usage-val`,children:`One model call, each time`})]}),t[103]=Ke):Ke=t[103];let q;t[104]!==G||t[105]!==K?(q=(0,v.jsxs)(`div`,{className:`dash-usage-rows`,children:[G,K,Ke]}),t[104]=G,t[105]=K,t[106]=q):q=t[106];let J;t[107]===y.warning?J=t[108]:(J=(0,v.jsx)(`p`,{className:`dash-usage-warning`,children:y.warning}),t[107]=y.warning,t[108]=J);let qe,Je,Ye;t[109]===Symbol.for(`react.memo_cache_sentinel`)?(qe=(0,v.jsx)(`p`,{className:`dash-usage-warning`,children:`The bands above are the AUTOMATIC cadence only. "Refresh now", "Ask", and pulling in another conversation are things YOU trigger — each one is a real call on your key, regardless of what cadence you've set.`}),Je=(0,v.jsx)(`p`,{className:`dash-usage-warning`,children:`Automatic checks pause for the day once your daily search budget is reached — manual actions like Refresh now always work.`}),Ye=(0,v.jsx)(`div`,{className:`card-eyebrow dash-usage-global`,children:`Every dashboard`}),t[109]=qe,t[110]=Je,t[111]=Ye):(qe=t[109],Je=t[110],Ye=t[111]);let Xe;t[112]===Symbol.for(`react.memo_cache_sentinel`)?(Xe=(0,v.jsx)(`label`,{htmlFor:`dash-budget-input`,children:`Daily search budget (all dashboards)`}),t[112]=Xe):Xe=t[112];let Y;t[113]===re.dailySearchBudget?Y=t[114]:(Y=(0,v.jsxs)(`div`,{className:`dash-usage-budget`,children:[Xe,(0,v.jsx)(`input`,{id:`dash-budget-input`,type:`number`,min:5,max:200,value:re.dailySearchBudget,onChange:le})]}),t[113]=re.dailySearchBudget,t[114]=Y);let X;t[115]===g.id?X=t[116]:(X=o.detail(g.id),t[115]=g.id,t[116]=X);let Z;t[117]===X?Z=t[118]:(Z=(0,v.jsx)(`a`,{className:`dash-usage-done`,href:X,children:`Done`}),t[117]=X,t[118]=Z);let Q;t[119]!==W||t[120]!==q||t[121]!==J||t[122]!==Y||t[123]!==Z?(Q=(0,v.jsxs)(`aside`,{className:`card dash-usage`,"aria-label":`Estimated usage`,children:[Ve,W,q,J,qe,Je,Ye,Y,Z]}),t[119]=W,t[120]=q,t[121]=J,t[122]=Y,t[123]=Z,t[124]=Q):Q=t[124];let $;t[125]!==U||t[126]!==Q?($=(0,v.jsxs)(`div`,{className:`dash-settings-grid`,children:[U,Q]}),t[125]=U,t[126]=Q,t[127]=$):$=t[127];let Ze;return t[128]!==T||t[129]!==$?(Ze=(0,v.jsxs)(`div`,{className:`dash-settings`,children:[T,$]}),t[128]=T,t[129]=$,t[130]=Ze):Ze=t[130],Ze}function le(e){let t=Number(e.target.value);Number.isFinite(t)&&l({dailySearchBudget:t})}function ue(){window.scrollTo(0,0)}function de(){return Date.now()}function fe(e){let t=(0,ne.c)(9),{options:n,value:r,onPick:i}=e,a;if(t[0]!==i||t[1]!==n||t[2]!==r){let e;t[4]!==i||t[5]!==r?(e=e=>(0,v.jsx)(`button`,{type:`button`,className:`dash-seg-opt`+(e.v===r?` is-active`:``),"aria-pressed":e.v===r,onClick:()=>i(e.v),children:e.label},e.v),t[4]=i,t[5]=r,t[6]=e):e=t[6],a=n.map(e),t[0]=i,t[1]=n,t[2]=r,t[3]=a}else a=t[3];let o;return t[7]===a?o=t[8]:(o=(0,v.jsx)(`div`,{className:`dash-seg`,role:`group`,children:a}),t[7]=a,t[8]=o),o}function pe(e){let t=(0,ne.c)(16),{label:n,note:r,on:i,onToggle:a,disabled:o}=e,s=`dash-check`+(i?` on`:``)+(o?` disabled`:``),c=i?`✓`:``,l;t[0]===c?l=t[1]:(l=(0,v.jsx)(`span`,{className:`dash-check-box`,children:c}),t[0]=c,t[1]=l);let u;t[2]===n?u=t[3]:(u=(0,v.jsx)(`span`,{className:`dash-check-label`,children:n}),t[2]=n,t[3]=u);let d;t[4]===r?d=t[5]:(d=(0,v.jsx)(`span`,{className:`dash-check-note`,children:r}),t[4]=r,t[5]=d);let f;t[6]!==u||t[7]!==d?(f=(0,v.jsxs)(`span`,{className:`dash-check-text`,children:[u,d]}),t[6]=u,t[7]=d,t[8]=f):f=t[8];let p;return t[9]!==o||t[10]!==i||t[11]!==a||t[12]!==s||t[13]!==l||t[14]!==f?(p=(0,v.jsxs)(`button`,{type:`button`,className:s,onClick:a,disabled:o,"aria-pressed":i,children:[l,f]}),t[9]=o,t[10]=i,t[11]=a,t[12]=s,t[13]=l,t[14]=f,t[15]=p):p=t[15],p}export{y as DashboardSettings};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/AppCommandPalette-BHaYBZ5e.js","assets/react-BZJXY1be.js","assets/rolldown-runtime-DkW27tQK.js","assets/jsx-runtime-DeHZSEgm.js","assets/index-Dk0QapqQ.js","assets/compiler-runtime-qQQXpJgv.js","assets/useInView-CXTOAEV3.js","assets/coreIcons-DDTChE1H.js","assets/preload-helper-CiWYd9n-.js","assets/preloadableLazy-MIX1ApBW.js","assets/cachedImport-DW0gP14h.js","assets/lazyRetry-D50B1UMY.js","assets/theme-7IrMJ70_.js","assets/index-DmKgC_TJ.css","assets/registry-DGNSqTxE.js","assets/CommandPalette-Bs6tpdZl.js","assets/icons-gLFQTv74.js","assets/CommandPalette-Bb-eErih.css","assets/demoPaletteItems-NPCSaSU6.js","assets/planTracker-KKAtTBWs.js","assets/http-Lar_UMKb.js","assets/providers-BovElgRL.js","assets/blockTypes-DUDdP3pB.js","assets/info-CiqHR5cs.js","assets/attachments-BW-vki-E.js","assets/json-B0N3XRZU.js","assets/now-C9-UAzTC.js","assets/PlanReview-CmUxzNqL.js","assets/store-CsjDEADX.js","assets/friendlyAsk-BBdRZIar.js","assets/contentVault-xfUwSJ3i.js","assets/keyVault-Aw5Y2PjT.js","assets/useDashboardLoop-DDqCFJKY.js","assets/useLiveConfig-Cpy0_E_-.js","assets/number-zqlPMliA.js","assets/ledger-Cv0LBflx.js","assets/format-g3dP8OI3.js","assets/dataPending-DGdCvY5Y.js","assets/predictions-CkVKHq-5.js","assets/notify-Bz4wuE4T.js","assets/dashboardEvents-DKl5rrTD.js","assets/spokenText-C88IQJ0M.js","assets/kokoro-P_fkcX-A.js","assets/confirmAdd-DzMO9jKV.js","assets/relate-BYdM5eiV.js","assets/dashboards-C1u2ks-d.css","assets/dash-composer-DeNWVwpU.css","assets/RewindOverlay-CousnxXo.js","assets/useFocusTrap-DBtkeyRy.js","assets/motion-DxHSlPN6.js","assets/useDashboards-SRk8LqHe.js","assets/useLedger-1WVXef68.js","assets/checkLogModel-BMtruriG.js","assets/RewindOverlay-C92qgvmi.css","assets/DashPresent-5SRScC2i.js","assets/TrackerTile-oz6IoG8m.js","assets/route-D4kd-D3B.js","assets/AreaChart-DZGCSEwt.js","assets/tiles-D-s6v-mA.js","assets/tiles-CBiVVjtT.css","assets/DashPresent-DQYcgp-W.css","assets/templates-DHeyJ32F.css","assets/DashboardDetail-DOfm8UCQ.js","assets/TopicCanvas-LMI0zC7R.js","assets/loader-DKJEcbPm.js","assets/FallbackCard-ap_4wOfj.js","assets/blockLabel-FogyzEQY.js","assets/FallbackCard-D_6ps1xA.css","assets/motion-BY_Egaxm.js","assets/useSpatialCanvas-CfmZOXXP.js","assets/CanvasSkeleton-CRGWlafo.js","assets/CanvasSkeleton-iy6DBvde.css","assets/richText-BkxJhl9N.js","assets/toast-BBNs2h3L.js","assets/format-q0LwBjID.js","assets/safeImageUrl-BINWXOTz.js","assets/useValidatedImage-BQi2c66o.js","assets/layout-CEoNLr-w.js","assets/catalog-BHjl-1uH.js","assets/lib-B7OE1ZQQ.js","assets/BlockEmpty-B82uCse8.js","assets/lib-DMAxsZKm.css","assets/TopicCanvas-uRuHi99s.css","assets/sourceHost-BV3t2XDb.js","assets/canvas-Bsx3eSaS.js","assets/ReplayCard-Dx46HCBT.js","assets/annotationReel-K2FYv-3B.js","assets/registry-Dd1lcXrO.js","assets/svgLabel-BQMDdcT2.js","assets/fit-CMu7prjb.js","assets/ReplayCard-Cs6mzTRa.css","assets/pin-CZAIlpXt.js","assets/pin-D-4Zjiik.css","assets/CadenceCard-P4teI7Se.js","assets/CheckLogRail-DkHIHL0E.js","assets/CheckLogRail-BOaXnqWK.css","assets/DashboardDetail-8J8TsdQg.css","assets/DashboardSettings-CE0B2y2y.js","assets/DashboardOverview-C3hv9sm1.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"./cachedImport-DW0gP14h.js";import{n as o,t as s}from"./preloadableLazy-MIX1ApBW.js";import{n as c,t as l}from"./theme-7IrMJ70_.js";import{$ as u,M as d,N as f,P as p,Q as m,Z as h,it as g,j as _,k as v}from"./index-Dk0QapqQ.js";import{n as y}from"./icons-gLFQTv74.js";import{t as b}from"./useFocusTrap-DBtkeyRy.js";import{r as x}from"./sourceHost-BV3t2XDb.js";import{T as S,w as C}from"./kokoro-P_fkcX-A.js";import{t as w}from"./FeatureUseNotice-Dc8joBGM.js";import{t as T}from"./homeTarget-CsO8nY7z.js";/* empty css */import{m as E}from"./store-CsjDEADX.js";import{l as D,n as O,r as k,u as ee}from"./useLiveConfig-Cpy0_E_-.js";import{t as A}from"./TopbarMenu-DQXxqSWY.js";import{a as j,s as te}from"./useStudy-GwNcQWtv.js";import{n as ne,r as re,t as M}from"./route-D4kd-D3B.js";import{n as N,t as P}from"./useDashboards-SRk8LqHe.js";import{t as F}from"./useLedger-1WVXef68.js";import{i as I,p as L,u as R}from"./format-g3dP8OI3.js";import{n as ie,r as ae,t as z}from"./TrackerTile-oz6IoG8m.js";import{n as oe,o as se,s as B}from"./dashboardEvents-DKl5rrTD.js";/* empty css */import{t as V}from"./CheckLogRail-DkHIHL0E.js";/* empty css */var H=e(),U=t(),W=n();function G({href:e,label:t=`Mavéa`,className:n}){return(0,W.jsxs)(`a`,{className:n,href:e,"aria-label":`${t} home`,children:[(0,W.jsx)(`span`,{className:`jelly-mark`}),t]})}var K=g();function ce(e){let t=(t,n,r)=>({label:t,blurb:n,onClick:()=>{window.location.hash=r},preload:()=>_(r)??Promise.resolve(),show:r!==e.omitHash}),n=(t,n)=>({label:t,blurb:n,onClick:e.enterLive,show:!0});return{create:[n(`New`,`Start a fresh session`)],practice:[n(`Rehearse`,`Practice a hard conversation — take the seat, or send your Mavéa`),t(`Study`,`Go through your flashcards, and organize your decks`,`#/flashcards`),t(`Courses`,`Turn a topic into a structured syllabus — a lesson at a time, at your pace`,`#/courses`)],share:[n(`Present`,`Fill the room — the chrome falls away, the mic stays live`),n(`Export`,`Choose a template and export a polished PDF`),n(`Share`,`Share this conversation as a story`)],explore:[{label:`Search all features`,blurb:`Browse Mavéa’s feature index · ${f}`,onClick:e.openPalette,show:!0},n(`Atlas`,`Kept conversations and topics, as a place`),n(`Watch me think`,`A live map of your thinking`),t(`Prism`,`Split your document into a map of its claims`,`#/prism`),t(`Ripple`,`Model a code change’s impact, risks, and a proposed ship order`,`#/ripple`),t(`Dashboards`,`Dashboards that refresh on schedule while Mavéa is open`,`#/dashboards`),t(`Deep Zoom`,`Telescope any topic from big picture to finest detail`,`#/deepzoom`)]}}r();var q=s(()=>i(()=>import(`./AppCommandPalette-BHaYBZ5e.js`).then(e=>({default:e.AppCommandPalette})),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18]))),le=q.Component;function ue(e){let t=(0,U.c)(26),{omitHash:n}=e,{open:r,openPalette:i,closePalette:a}=p(),o=de,s;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(s=()=>{m(),o()},t[0]=s):s=t[0];let c=s,l;t[1]===Symbol.for(`react.memo_cache_sentinel`)?(l=e=>()=>{m(),h(e),u(),o()},t[1]=l):l=t[1];let f=l,g;t[2]!==n||t[3]!==i?(g=ce({openPalette:i,enterLive:o,omitHash:n}),t[2]=n,t[3]=i,t[4]=g):g=t[4];let _=g,y=j(),b;t[5]===_.create?b=t[6]:(b=(0,W.jsx)(A,{label:`Create`,items:_.create}),t[5]=_.create,t[6]=b);let x;t[7]!==_.practice||t[8]!==y?(x=(0,W.jsx)(A,{label:`Practice`,items:_.practice,badge:y}),t[7]=_.practice,t[8]=y,t[9]=x):x=t[9];let S;t[10]===_.share?S=t[11]:(S=(0,W.jsx)(A,{label:`Share`,items:_.share}),t[10]=_.share,t[11]=S);let C;t[12]===_.explore?C=t[13]:(C=(0,W.jsx)(A,{label:`Explore`,items:_.explore}),t[12]=_.explore,t[13]=C);let w;t[14]===i?w=t[15]:(w=(0,W.jsx)(d,{onOpen:i,preload:q.preload}),t[14]=i,t[15]=w);let T;t[16]!==a||t[17]!==r?(T=r&&(0,K.createPortal)((0,W.jsx)(v,{label:`Feature search`,overlay:!0,children:(0,W.jsx)(le,{onClose:a,startTour:c,watchInLive:f,enterLive:o})}),document.body),t[16]=a,t[17]=r,t[18]=T):T=t[18];let E;return t[19]!==b||t[20]!==x||t[21]!==S||t[22]!==C||t[23]!==w||t[24]!==T?(E=(0,W.jsxs)(W.Fragment,{children:[b,x,S,C,w,T]}),t[19]=b,t[20]=x,t[21]=S,t[22]=C,t[23]=w,t[24]=T,t[25]=E):E=t[25],E}function de(){window.location.hash=`#/live`}function fe(e,t){let n=e.cadence.window;return!!n&&t>=n.startAt&&t<=n.endAt}function pe(e){return new Date(e).toLocaleTimeString([],{hour:`numeric`,minute:`2-digit`})}function me(e){let t=(0,U.c)(18),{state:n}=e;if(n.paused){let e;t[0]===n.resumesAt?e=t[1]:(e=pe(n.resumesAt),t[0]=n.resumesAt,t[1]=e);let r;return t[2]===e?r=t[3]:(r=(0,W.jsx)(`div`,{className:`dash-budget dash-budget--paused`,title:`Automatic checks are paused until your budget resets`,children:(0,W.jsxs)(`span`,{className:`dash-budget-label`,children:[`PAUSED · RESUMES `,e]})}),t[2]=e,t[3]=r),r}let r;t[4]!==n.cap||t[5]!==n.used?(r=n.cap>0?Math.min(100,Math.round(n.used/n.cap*100)):0,t[4]=n.cap,t[5]=n.used,t[6]=r):r=t[6];let i=r,a=`dash-budget`+(n.amber?` dash-budget--amber`:``),o=`${n.used} of ${n.cap} searches used today`,s=`${i}%`,c;t[7]===s?c=t[8]:(c=(0,W.jsx)(`span`,{className:`dash-budget-track`,children:(0,W.jsx)(`span`,{className:`dash-budget-fill`,style:{width:s}})}),t[7]=s,t[8]=c);let l=n.amber?` · LOW`:``,u;t[9]!==n.cap||t[10]!==n.used||t[11]!==l?(u=(0,W.jsxs)(`span`,{className:`dash-budget-label`,children:[n.used,`/`,n.cap,` SEARCHES TODAY`,l]}),t[9]=n.cap,t[10]=n.used,t[11]=l,t[12]=u):u=t[12];let d;return t[13]!==a||t[14]!==o||t[15]!==c||t[16]!==u?(d=(0,W.jsxs)(`div`,{className:a,title:o,children:[c,u]}),t[13]=a,t[14]=o,t[15]=c,t[16]=u,t[17]=d):d=t[17],d}function he(e){let t=(0,U.c)(28),{view:n}=e,r=P(),i=F(),a=L(),[o,s]=(0,H.useState)(ge),c,l;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(c=()=>{let e=window.setInterval(()=>s(Date.now()),3e4);return()=>window.clearInterval(e)},l=[],t[0]=c,t[1]=l):(c=t[0],l=t[1]),(0,H.useEffect)(c,l);let u;t[2]===r?u=t[3]:(u=r.filter(I),t[2]=r,t[3]=u);let d=u.length,f=r.some(e=>fe(e,o)),p;t[4]!==i||t[5]!==o||t[6]!==a.dailySearchBudget?(p=R(i,a.dailySearchBudget,o),t[4]=i,t[5]=o,t[6]=a.dailySearchBudget,t[7]=p):p=t[7];let m=p,h;t[8]===Symbol.for(`react.memo_cache_sentinel`)?(h=(0,W.jsx)(G,{className:`dash-topbar-brand`,href:T().href}),t[8]=h):h=t[8];let g=`dash-watch-pill`+(f?` dash-watch-pill--live`:``),_;t[9]===Symbol.for(`react.memo_cache_sentinel`)?(_=(0,W.jsx)(`i`,{className:`dash-live-dot`,"aria-hidden":`true`}),t[9]=_):_=t[9];let v;t[10]!==d||t[11]!==g?(v=(0,W.jsxs)(`span`,{className:g,children:[_,d,` ON WATCH`]}),t[10]=d,t[11]=g,t[12]=v):v=t[12];let y;t[13]===m?y=t[14]:(y=(0,W.jsx)(me,{state:m}),t[13]=m,t[14]=y);let b;t[15]===n?b=t[16]:(b=n!==`overview`&&(0,W.jsx)(`a`,{className:`dash-topbar-link`,href:M.overview,children:`How it works`}),t[15]=n,t[16]=b);let x;t[17]===Symbol.for(`react.memo_cache_sentinel`)?(x=(0,W.jsx)(`a`,{className:`dash-topbar-link`,href:`#/live`,children:`Live`}),t[17]=x):x=t[17];let S;t[18]!==b||t[19]!==v||t[20]!==y?(S=(0,W.jsxs)(`div`,{className:`dash-topbar-scroll`,children:[v,y,b,x]}),t[18]=b,t[19]=v,t[20]=y,t[21]=S):S=t[21];let C;t[22]===Symbol.for(`react.memo_cache_sentinel`)?(C=(0,W.jsx)(`span`,{className:`topbar-spacer`}),t[22]=C):C=t[22];let w,E;t[23]===Symbol.for(`react.memo_cache_sentinel`)?(w=(0,W.jsx)(`nav`,{className:`dash-topbar-nav`,"aria-label":`App`,children:(0,W.jsx)(ue,{omitHash:M.gallery})}),E=(0,W.jsx)(`span`,{className:`topbar-divider`,"aria-hidden":`true`}),t[23]=w,t[24]=E):(w=t[23],E=t[24]);let D;t[25]===Symbol.for(`react.memo_cache_sentinel`)?(D=(0,W.jsxs)(`div`,{className:`dash-topbar-tools`,children:[(0,W.jsx)(`a`,{className:`dash-topbar-action`,href:M.rewind,children:`✦ Rewind`}),(0,W.jsx)(`a`,{className:`dash-topbar-action`,href:M.present,children:`▸ Present`}),(0,W.jsx)(te,{triggerClassName:`ctrl`})]}),t[25]=D):D=t[25];let O;return t[26]===S?O=t[27]:(O=(0,W.jsxs)(`header`,{className:`dash-topbar`,children:[h,S,C,w,E,D]}),t[26]=S,t[27]=O),O}function ge(){return Date.now()}function _e({label:e,value:t,dashboardId:n,kind:r=`presence`}){return(0,W.jsxs)(`a`,{className:`metric-chip metric-chip--${r}`,href:M.detail(n),children:[(0,W.jsx)(`span`,{className:`metric-chip-value`,children:t}),(0,W.jsx)(`span`,{className:`metric-chip-label`,children:e})]})}function ve(e){return new Date(e).toLocaleTimeString([],{hour:`numeric`,minute:`2-digit`})}function ye({briefing:e}){let[t,n]=(0,H.useState)(!1),r=(0,H.useRef)(t);return r.current=t,(0,H.useEffect)(()=>{if(!t)return;let e=window.setInterval(()=>{S()||n(!1)},300);return()=>window.clearInterval(e)},[t]),(0,H.useEffect)(()=>()=>{r.current&&C()},[]),(0,W.jsxs)(`section`,{className:`card briefing-hero`,children:[(0,W.jsxs)(`div`,{className:`briefing-hero-head`,children:[(0,W.jsxs)(`span`,{className:`card-eyebrow briefing-hero-eyebrow`,children:[`MORNING BRIEFING · `,ve(e.at),` · COMPILED WHILE CHECKING YOUR DASHBOARDS`]}),(0,W.jsx)(`button`,{type:`button`,className:`briefing-hero-listen`,onClick:()=>{if(t){C(),n(!1);return}se(e.text,e.spoken),n(!0)},"aria-pressed":t,children:t?`◼ STOP`:`▸ LISTEN`})]}),(0,W.jsx)(`p`,{className:`briefing-hero-text`,children:e.text}),e.chips.length>0&&(0,W.jsx)(`div`,{className:`briefing-hero-chips`,children:e.chips.map(e=>(0,W.jsx)(_e,{label:e.label,value:e.value,dashboardId:e.dashboardId},e.dashboardId))})]})}function be(e){let t=(0,U.c)(31),{dashboard:n,now:r}=e,i;t[0]!==n||t[1]!==r?(i=ae(n,r),t[0]=n,t[1]=r,t[2]=i):i=t[2];let a=i,o=n.cadence.window;if(!o||a.vizKind!==`livescore`){let e;return t[3]!==n||t[4]!==r?(e=(0,W.jsx)(`div`,{className:`featured-live featured-live--fallback`,children:(0,W.jsx)(z,{dashboard:n,now:r})}),t[3]=n,t[4]=r,t[5]=e):e=t[5],e}let s=a.everChecked?`AS OF ${a.asOf}`:a.asOf,c;t[6]===n.id?c=t[7]:(c=M.detail(n.id),t[6]=n.id,t[7]=c);let l;t[8]===Symbol.for(`react.memo_cache_sentinel`)?(l=(0,W.jsxs)(`span`,{className:`card-eyebrow featured-live-eyebrow`,children:[(0,W.jsx)(`i`,{className:`dash-live-dot`,"aria-hidden":`true`}),`LIVE NOW`]}),t[8]=l):l=t[8];let u;t[9]===n.title?u=t[10]:(u=(0,W.jsxs)(`div`,{className:`featured-live-head`,children:[l,(0,W.jsx)(`h3`,{className:`featured-live-title`,children:n.title})]}),t[9]=n.title,t[10]=u);let d;t[11]!==o||t[12]!==r?(d=(0,W.jsx)(ie,{liveWindow:o,now:r}),t[11]=o,t[12]=r,t[13]=d):d=t[13];let f;t[14]===Symbol.for(`react.memo_cache_sentinel`)?(f=(0,W.jsx)(`span`,{className:`featured-live-check-label`,children:`FROM THE LAST CHECK`}),t[14]=f):f=t[14];let p;t[15]===a.value?p=t[16]:(p=(0,W.jsx)(`span`,{className:`featured-live-check-value`,children:a.value}),t[15]=a.value,t[16]=p);let m;t[17]===a.context?m=t[18]:(m=(0,W.jsx)(`span`,{className:`featured-live-check-context`,children:a.context}),t[17]=a.context,t[18]=m);let h;t[19]!==p||t[20]!==m?(h=(0,W.jsxs)(`p`,{className:`featured-live-check`,children:[f,p,m]}),t[19]=p,t[20]=m,t[21]=h):h=t[21];let g;t[22]!==s||t[23]!==o.label?(g=(0,W.jsxs)(`div`,{className:`featured-live-foot`,children:[s,` · `,o.label,` ONLY`]}),t[22]=s,t[23]=o.label,t[24]=g):g=t[24];let _;return t[25]!==g||t[26]!==c||t[27]!==u||t[28]!==d||t[29]!==h?(_=(0,W.jsxs)(`a`,{className:`card featured-live`,href:c,children:[u,d,h,g]}),t[25]=g,t[26]=c,t[27]=u,t[28]=d,t[29]=h,t[30]=_):_=t[30],_}function xe(e){let t=(0,U.c)(17),{answer:n,onTrackAnyway:r}=e;if(!n){let e;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,W.jsx)(`p`,{className:`dash-answer-text dash-answer-text--fallback`,children:`Mavéa couldn’t reach your model for that — try tracking it instead.`}),t[0]=e):e=t[0];let n;return t[1]===r?n=t[2]:(n=(0,W.jsxs)(`div`,{className:`dash-answer`,children:[e,(0,W.jsx)(`button`,{type:`button`,className:`dash-answer-track`,onClick:r,children:`Track it anyway →`})]}),t[1]=r,t[2]=n),n}let i;t[3]===n.text?i=t[4]:(i=(0,W.jsx)(`p`,{className:`dash-answer-text`,children:n.text}),t[3]=n.text,t[4]=i);let a;t[5]===n.grounded?a=t[6]:(a=!n.grounded&&(0,W.jsx)(`p`,{className:`dash-answer-qualifier`,children:`Based on background knowledge, not a fresh search.`}),t[5]=n.grounded,t[6]=a);let o;t[7]===n.sources?o=t[8]:(o=n.sources.length>0&&(0,W.jsx)(`div`,{className:`dash-answer-sources`,children:n.sources.map(Se)}),t[7]=n.sources,t[8]=o);let s;t[9]===Symbol.for(`react.memo_cache_sentinel`)?(s=(0,W.jsx)(`span`,{className:`dash-answer-badge`,children:`Answered once — nothing worth re-checking`}),t[9]=s):s=t[9];let c;t[10]===r?c=t[11]:(c=(0,W.jsxs)(`div`,{className:`dash-answer-foot`,children:[s,(0,W.jsx)(`button`,{type:`button`,className:`dash-answer-track`,onClick:r,children:`Track it anyway →`})]}),t[10]=r,t[11]=c);let l;return t[12]!==i||t[13]!==a||t[14]!==o||t[15]!==c?(l=(0,W.jsxs)(`div`,{className:`dash-answer`,children:[i,a,o,c]}),t[12]=i,t[13]=a,t[14]=o,t[15]=c,t[16]=l):l=t[16],l}function Se(e){let t=x(e.url);return t?(0,W.jsx)(`a`,{className:`dash-answer-source`,href:t,target:`_blank`,rel:`noopener noreferrer`,title:e.title,children:e.title},e.url):null}r();var J=a(()=>i(()=>import(`./planTracker-KKAtTBWs.js`).then(e=>e.n),__vite__mapDeps([19,2,20,21,22,23,24,25,26]))),Y=s(()=>i(()=>import(`./PlanReview-CmUxzNqL.js`).then(e=>({default:e.PlanReview})),__vite__mapDeps([27,1,2,5,3,28,29,30,31,32,8,20,21,22,23,24,33,25,34,35,36,37,26,38,39,40,41,42,4,6,7,9,10,11,12,13,43,44,45,46]))),Ce=Y.Component;function we(){return Promise.all([J(),Y.preload()]).then(()=>void 0)}function Te({inert:e=!1}){let t=(0,H.useRef)(null),n=(0,H.useRef)(null),[r,i]=(0,H.useState)(``),[a,s]=(0,H.useState)(!1),[c,l]=(0,H.useState)(null),u=(0,H.useRef)(0),d=()=>{u.current++,l(null)};b(n,{onEscape:d,active:!!c}),(0,H.useEffect)(()=>{if(e)return;let n=e=>{(e.metaKey||e.ctrlKey)&&!e.altKey&&!e.shiftKey&&e.key.toLowerCase()===`k`&&(e.preventDefault(),t.current?.focus())};return window.addEventListener(`keydown`,n),()=>window.removeEventListener(`keydown`,n)},[e]),(0,H.useEffect)(()=>()=>{u.current++},[]);let f=async()=>{let e=r.trim();if(!e||a)return;s(!0);let t=++u.current,{planTracker:n,answerOnce:i}=await J(),o=await n(e,D(O()));if(t!==u.current)return;if(s(!1),o.kind!==`static`){l({step:`review`,plan:o});return}l({step:`answering`,plan:o});let c=await i(e,D(O()));t===u.current&&l({step:`answer`,plan:o,answer:c})},p=e=>{u.current++,l(null),i(``),window.location.hash=M.detail(e)};return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(`form`,{className:`dash-composer-bar`,onSubmit:e=>{e.preventDefault(),f()},children:[(0,W.jsx)(`input`,{ref:t,className:`dash-composer-input`,value:r,onChange:e=>i(e.target.value),placeholder:`Track anything — Mavéa will suggest what's worth checking, and how often`,"aria-label":`Track anything`,disabled:a,...o(we)}),(0,W.jsx)(`kbd`,{className:`dash-composer-kbd`,"aria-hidden":`true`,children:`⌘K`}),(0,W.jsx)(`button`,{type:`submit`,className:`dash-composer-submit`,disabled:!r.trim()||a,children:a?`Planning…`:`Track`})]}),c&&(0,W.jsx)(`div`,{className:`xt-scrim`,onClick:e=>{e.target===e.currentTarget&&d()},role:`button`,tabIndex:0,"aria-label":`Close`,onKeyDown:e=>{e.target===e.currentTarget&&(e.key===`Enter`||e.key===` `)&&(e.key===` `&&e.preventDefault(),d())},children:(0,W.jsxs)(`div`,{className:`xt-modal`,ref:n,tabIndex:-1,role:`dialog`,"aria-modal":`true`,"aria-label":`Track anything`,children:[(0,W.jsxs)(`div`,{className:`xt-head`,children:[c.step===`review`?(0,W.jsx)(`button`,{type:`button`,className:`tpl-back`,onClick:d,children:`‹ Change what to track`}):(0,W.jsx)(`span`,{className:`xt-head-title`,children:c.plan.title}),(0,W.jsx)(`button`,{type:`button`,className:`xt-close`,onClick:d,"aria-label":`Close`,children:`×`})]}),c.step===`answering`&&(0,W.jsx)(`div`,{className:`xt-loading`,children:`Mavéa is checking that…`}),c.step===`answer`&&(0,W.jsx)(xe,{answer:c.answer,onTrackAnyway:()=>l({step:`review`,plan:c.plan})}),c.step===`review`&&(0,W.jsx)(v,{label:`tracker plan`,children:(0,W.jsx)(Ce,{plan:c.plan,ask:r,existing:E(),onDone:p})})]})})]})}var Ee=8e3;function De({message:e,onDismiss:t,kind:n=`presence`,href:r}){let i=(0,H.useRef)(t);return i.current=t,(0,H.useEffect)(()=>{let e=window.setTimeout(()=>i.current(),Ee);return()=>window.clearTimeout(e)},[]),(0,W.jsxs)(`div`,{className:`dash-toast dash-toast--${n}`,role:`status`,children:[r?(0,W.jsx)(`a`,{className:`dash-toast-text dash-toast-link`,href:r,children:e}):(0,W.jsx)(`span`,{className:`dash-toast-text`,children:e}),(0,W.jsx)(`button`,{type:`button`,className:`dash-toast-close`,onClick:t,"aria-label":`Dismiss`,children:`×`})]})}r();var Oe=[`AAPL price`,`Yankees scores`,`Weather in Denver`,`Bitcoin price`];function ke(e,t){let n=e.cadence.window;return!!n&&t>=n.startAt&&t<=n.endAt}function Ae(e){return new Date(e).toISOString().slice(0,10)}function X(e){let t=(0,U.c)(11),{eyebrow:n,sub:r}=e,i;t[0]===n?i=t[1]:(i=(0,W.jsx)(`span`,{className:`tile-name`,children:n}),t[0]=n,t[1]=i);let a;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(a=(0,W.jsx)(`span`,{className:`tile-cadence`,children:`EXAMPLE`}),t[2]=a):a=t[2];let o;t[3]===i?o=t[4]:(o=(0,W.jsxs)(`div`,{className:`tile-top`,children:[i,a]}),t[3]=i,t[4]=o);let s;t[5]===Symbol.for(`react.memo_cache_sentinel`)?(s=(0,W.jsx)(`div`,{className:`tile-value-row`,children:(0,W.jsx)(`span`,{className:`tile-value`,children:`—`})}),t[5]=s):s=t[5];let c;t[6]===r?c=t[7]:(c=(0,W.jsx)(`p`,{className:`tile-context`,children:r}),t[6]=r,t[7]=c);let l;return t[8]!==o||t[9]!==c?(l=(0,W.jsxs)(`div`,{className:`tile-frame tile-frame--ghost`,"aria-hidden":`true`,children:[o,s,c]}),t[8]=o,t[9]=c,t[10]=l):l=t[10],l}function je(){let e=(0,U.c)(4),t;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,W.jsx)(`p`,{className:`dash-empty-title`,children:`Nothing on watch yet.`}),e[0]=t):t=e[0];let n;e[1]===Symbol.for(`react.memo_cache_sentinel`)?(n=(0,W.jsxs)(`p`,{className:`dash-empty-how`,children:[`Type anything worth following in the bar below — scores, a price, the weather, a story — and Mavéa plans the live cards and keeps them current. Or talk it through in`,` `,(0,W.jsx)(`a`,{href:`#/live`,children:`Live`}),` and build one from that conversation instead.`]}),e[1]=n):n=e[1];let r;e[2]===Symbol.for(`react.memo_cache_sentinel`)?(r=(0,W.jsxs)(`p`,{className:`dash-empty-how`,children:[`New here? `,(0,W.jsx)(`a`,{href:M.overview,children:`See how it works →`})]}),e[2]=r):r=e[2];let i;return e[3]===Symbol.for(`react.memo_cache_sentinel`)?(i=(0,W.jsxs)(`div`,{className:`card dash-empty dash-empty--hero`,children:[t,n,r,(0,W.jsx)(`div`,{className:`dash-home-examples`,children:Oe.map(Me)})]}),e[3]=i):i=e[3],i}function Me(e){return(0,W.jsx)(`span`,{className:`dash-home-example-chip`,children:e},e)}function Z(){let e=P(),t=F(),n=L(),r=B(),[a]=ee(),[o,s]=(0,H.useState)(()=>Date.now());(0,H.useEffect)(()=>{let e=window.setInterval(()=>s(Date.now()),3e4);return()=>window.clearInterval(e)},[]);let c=(0,H.useMemo)(()=>e.find(e=>ke(e,o))??null,[e,o]),l=r!==null&&r.date===Ae(o),u=(0,H.useMemo)(()=>R(t,n.dailySearchBudget,o),[t,n.dailySearchBudget,o]),d=e.length===0,f=(0,H.useMemo)(()=>e.some(I),[e]),p=k(a),[m,h]=(0,H.useState)(null);(0,H.useEffect)(()=>oe(h),[]);let[g,_]=(0,H.useState)(!1),[v,b]=(0,H.useState)(null),x=async()=>{_(!0),b(null);try{let{checkAllDashboardsNow:e}=await i(async()=>{let{checkAllDashboardsNow:e}=await import(`./useDashboardLoop-DDqCFJKY.js`).then(e=>e.i);return{checkAllDashboardsNow:e}},__vite__mapDeps([32,2,1,5,8,20,28,29,30,31,21,22,23,24,33,25,34,35,36,37,26,38,39,40,41,42,4,6,3,7,9,10,11,12,13]));await e()===`failed`&&b(`Your model provider stopped the run — usually its per-minute limit. Nothing was changed; try again in a minute.`)}finally{_(!1)}},[S,C]=(0,H.useState)(0);return(0,H.useEffect)(()=>{let e=0,t=0;return e=requestAnimationFrame(()=>{C(1),t=requestAnimationFrame(()=>C(2))}),()=>{cancelAnimationFrame(e),cancelAnimationFrame(t)}},[]),(0,W.jsxs)(`div`,{className:`dash-home`,children:[m&&(0,W.jsx)(De,{kind:`danger`,message:`${m.dashboardTitle}: ${m.tripwireLabel} crossed the line you set.`,href:M.detail(m.dashboardId),onDismiss:()=>h(null)},`${m.dashboardId}-${m.tripwireLabel}`),(0,W.jsxs)(`div`,{className:`dash-home-grid`,children:[(0,W.jsxs)(`div`,{className:`dash-home-main`,children:[!d&&!p&&f&&(0,W.jsxs)(`div`,{className:`dash-connect-banner`,children:[(0,W.jsx)(`span`,{className:`dash-connect-banner-text`,children:`These trackers can't fetch anything yet — connect a model to start filling them.`}),(0,W.jsx)(`a`,{className:`dash-connect-banner-link`,href:`#/live`,children:`Connect a model in Live →`})]}),d?(0,W.jsx)(je,{}):(0,W.jsxs)(W.Fragment,{children:[l&&r&&(0,W.jsx)(ye,{briefing:r}),c&&(0,W.jsx)(be,{dashboard:c,now:o})]}),S>=1&&(0,W.jsxs)(`section`,{className:`dash-track`,children:[(0,W.jsxs)(`div`,{className:`dash-track-head`,children:[(0,W.jsxs)(`span`,{className:`dash-track-eyebrow`,children:[`TRACKING · `,e.length]}),(0,W.jsxs)(`div`,{className:`dash-track-head-right`,children:[(0,W.jsx)(`span`,{className:`dash-track-honesty`,children:`NOT REAL-TIME — EVERY VALUE IS AS OF ITS LAST WEB SEARCH`}),p&&f&&(0,W.jsxs)(`button`,{type:`button`,className:`dash-check-all-btn`,onClick:()=>void x(),disabled:g,title:`Check every tracker with live content now`,children:[(0,W.jsx)(y.refresh,{className:g?`dash-refresh-spin`:void 0}),g?`Checking…`:`Check all`]})]})]}),v&&(0,W.jsx)(`p`,{className:`dash-quota-note`,role:`status`,children:v}),(0,W.jsx)(`div`,{className:`dash-track-grid`,children:d?(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(X,{eyebrow:`AAPL`,sub:`Stock price`}),(0,W.jsx)(X,{eyebrow:`Yankees`,sub:`Latest score`}),(0,W.jsx)(X,{eyebrow:`Denver`,sub:`This week's forecast`})]}):e.map(e=>(0,W.jsx)(z,{dashboard:e,now:o,paused:u.paused},e.id))})]})]}),(0,W.jsx)(`aside`,{className:`dash-home-rail`,children:S>=2&&(0,W.jsx)(V,{now:o})})]}),(0,W.jsx)(Te,{})]})}r();var Ne=s(()=>i(()=>import(`./RewindOverlay-CousnxXo.js`).then(e=>({default:e.RewindOverlay})),__vite__mapDeps([47,1,2,5,3,48,49,50,28,29,30,31,35,51,38,52,53]))),Pe=s(()=>i(()=>import(`./DashPresent-5SRScC2i.js`).then(e=>({default:e.DashPresent})),__vite__mapDeps([54,1,2,5,3,4,6,7,8,9,10,11,12,13,50,28,29,30,31,51,35,36,55,16,56,37,57,58,59,60,61]))),Fe=s(()=>i(()=>import(`./DashboardDetail-DOfm8UCQ.js`).then(e=>({default:e.DashboardDetail})),__vite__mapDeps([62,1,2,5,3,8,16,63,4,6,7,9,10,11,12,13,64,65,66,67,48,68,69,70,71,72,73,74,75,76,77,78,20,79,80,49,81,82,83,84,85,86,87,88,89,41,90,28,29,30,31,33,23,21,22,24,56,50,36,35,37,57,58,59,32,25,34,26,38,39,40,42,43,19,91,92,93,94,51,52,95,96,45]))),Ie=s(()=>i(()=>import(`./DashboardSettings-CE0B2y2y.js`).then(e=>({default:e.DashboardSettings})),__vite__mapDeps([97,1,2,5,3,28,29,30,31,56,50,36,35,39,93,58,59]))),Le=s(()=>i(()=>import(`./DashboardOverview-C3hv9sm1.js`).then(e=>({default:e.DashboardOverview})),__vite__mapDeps([98,3,2,56,1,5]))),Re=Ne.Component,Q=Pe.Component,ze=Fe.Component,Be=Ie.Component,Ve=Le.Component;function $(){window.location.hash=M.gallery}function He(){let e=(0,U.c)(22),t;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=[],e[0]=t):t=e[0],(0,H.useEffect)(Ue,t);let n=re(),r;e[1]===n?r=e[2]:(r=ne(n),e[1]=n,e[2]=r);let i=r,a=N();if(i.view===`present`){let t;return e[3]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,W.jsx)(v,{label:`Dashboard presentation`,children:(0,W.jsx)(Q,{onClose:$})}),e[3]=t):t=e[3],t}let o;bb0:switch(i.view){case`detail`:{let t;e[4]===i.id?t=e[5]:(t=i.id?(0,W.jsx)(v,{label:`Dashboard detail`,children:(0,W.jsx)(ze,{id:i.id})}):(0,W.jsx)(Z,{}),e[4]=i.id,e[5]=t),o=t;break bb0}case`settings`:{let t;e[6]===i.id?t=e[7]:(t=i.id?(0,W.jsx)(v,{label:`Dashboard settings`,children:(0,W.jsx)(Be,{id:i.id})}):(0,W.jsx)(Z,{}),e[6]=i.id,e[7]=t),o=t;break bb0}case`overview`:{let t;e[8]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,W.jsx)(v,{label:`Dashboard overview`,children:(0,W.jsx)(Ve,{})}),e[8]=t):t=e[8],o=t;break bb0}case`rewind`:case`gallery`:default:{let t;e[9]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,W.jsx)(Z,{}),e[9]=t):t=e[9],o=t}}let s=o,c;e[10]===i.view?c=e[11]:(c=(0,W.jsx)(he,{view:i.view}),e[10]=i.view,e[11]=c);let l;e[12]===Symbol.for(`react.memo_cache_sentinel`)?(l=(0,W.jsx)(w,{kind:`monitoring`,className:`dash-risk-note`}),e[12]=l):l=e[12];let u;e[13]===a?u=e[14]:(u=a&&(0,W.jsx)(`p`,{className:`dash-quota-note`,role:`status`,children:`This browser’s storage is full, so recent tracker changes are being held in memory and may not survive a reload. Free up space, or remove a tracker you no longer follow.`}),e[13]=a,e[14]=u);let d;e[15]===i.view?d=e[16]:(d=i.view===`rewind`&&(0,W.jsx)(v,{label:`Weekly rewind`,overlay:!0,children:(0,W.jsx)(Re,{onClose:$})}),e[15]=i.view,e[16]=d);let f;return e[17]!==s||e[18]!==c||e[19]!==u||e[20]!==d?(f=(0,W.jsxs)(`div`,{className:`mavea-app dash-app`,children:[c,l,u,s,d]}),e[17]=s,e[18]=c,e[19]=u,e[20]=d,e[21]=f):f=e[21],f}function Ue(){return l(c())}export{He as DashboardsApp};
|
|
@@ -1,4 +1,4 @@
|
|
|
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{n as r,r as i,t as a}from"./theme-7IrMJ70_.js";import{t as o}from"./FeatureUseNotice-
|
|
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{n as r,r as i,t as a}from"./theme-7IrMJ70_.js";import{t as o}from"./FeatureUseNotice-Dc8joBGM.js";import{t as s}from"./homeTarget-CsO8nY7z.js";import{t as c}from"./providers-BovElgRL.js";import{l,n as u}from"./useLiveConfig-Cpy0_E_-.js";import{n as d}from"./courseSeed-CZdNBTTs.js";var f=e(),p=t(),m=[`×1`,`×10`,`×100`,`×1k`,`×10k`,`×100k`,`×1M`,`×10M`,`×100M`,`×1B`,`×10B`,`×100B`,`×1T`,`×10T`,`×100T`,`×1Q`,`×10Q`,`×100Q`,`×1Qn`,`×10Qn`];function h(e,t){if(!e||typeof e!=`object`)return null;let n=e,r=Array.isArray(n.subtopics)?n.subtopics.map(String).filter(Boolean).slice(0,8):[];if(r.length===0)return null;let i=Math.max(0,Math.min(r.length-1,Number(n.selectedIndex??0)));return{scale:t,multiplier:m[t]??`×${10**t}`,scaleLabel:String(n.scaleLabel??`SCALE ${t}`).toUpperCase(),title:String(n.title??``).trim(),body:String(n.body??``).trim(),subtopics:r,selectedIndex:i}}function g(e){return e.replace(/^```[a-z]*\n?/,``).replace(/\n?```$/,``).trim()}function _(e,t,n){let r;try{r=typeof e==`string`?JSON.parse(g(e)):e}catch{let t=typeof e==`string`?e.match(/\{[\s\S]*\}/):null;r=t?JSON.parse(t[0]):{}}let i=Array.isArray(r.levels)?r.levels:Array.isArray(r)?r:[],a=[];for(let e=0;e<Math.min(i.length,n);e++){let n=h(i[e],t+e);n&&a.push(n)}return a}var v=`You are a "Powers of Ten" semantic telescope builder.
|
|
2
2
|
|
|
3
3
|
Given a topic or question, produce EXACTLY 10 zoom levels — level 1 is the broadest possible view of the entire field, level 10 is the finest mechanism or detail.
|
|
4
4
|
|
|
@@ -1,4 +1,4 @@
|
|
|
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{n as r}from"./spokenText-C88IQJ0M.js";import{t as i}from"./useFocusTrap-DBtkeyRy.js";import{t as a}from"./Presence-
|
|
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{n as r}from"./spokenText-C88IQJ0M.js";import{t as i}from"./useFocusTrap-DBtkeyRy.js";import{t as a}from"./Presence-UqXfH4Y-.js";import{w as o}from"./kokoro-P_fkcX-A.js";import{t as s}from"./FeatureUseNotice-Dc8joBGM.js";import{t as c}from"./providers-BovElgRL.js";import{t as l}from"./pageVisibility-BxUVsw7Z.js";var u=e(),d=t(),f=1600,p=1300;function m(e){let t=`right`,n=e.speaking;return n?.side===`yours`?n.pointing?{state:`acting`,emotion:`focused`,gaze:t}:{state:`speaking`,emotion:`focused`,gaze:t}:n?.side===`theirs`?{state:`idle`,emotion:n.offer?`curious`:`neutral`,gaze:t}:e.whoseTurn===`yours`?{state:`thinking`,emotion:e.guarded?`concerned`:`focused`,gaze:t}:{state:`idle`,emotion:`neutral`,gaze:t}}function h(e){let t=`left`,n=e.speaking;return n?.side===`theirs`?{state:`speaking`,emotion:n.offer?`focused`:`neutral`,gaze:t}:n?.side===`yours`?{state:`idle`,emotion:n.offer?`curious`:`neutral`,gaze:t}:e.whoseTurn===`theirs`?{state:`thinking`,emotion:`neutral`,gaze:t}:{state:`idle`,emotion:e.guarded?`curious`:`neutral`,gaze:t}}function g(e){switch(e.kind){case`running`:return{yours:m(e),theirs:h(e)};case`deal`:return{yours:{state:`idle`,emotion:`celebrate`,gaze:`center`},theirs:{state:`idle`,emotion:`warm`,gaze:`center`}};case`approved`:return{yours:{state:`idle`,emotion:`warm`,gaze:`center`},theirs:{state:`idle`,emotion:`neutral`,gaze:`center`}};case`nodeal`:return{yours:{state:`idle`,emotion:e.boundaryHeld?`focused`:`concerned`,gaze:`center`},theirs:{state:`idle`,emotion:`neutral`,gaze:`center`}};case`stopped`:return{yours:{state:`idle`,emotion:`sleepy`,gaze:`down`},theirs:{state:`idle`,emotion:`sleepy`,gaze:`down`}}}}function _(e){return[`You are role-playing the OTHER SIDE of a conversation the user is rehearsing: ${e.counterpart}.`,`The conversation: ${e.scenario}.`,`Ground everything in this context the user supplied — and NOTHING else:`,`"""${e.context||`(none given)`}"""`,`If the context does not tell you how this person would react, play a realistic, generic version of the role — never invent specific facts, history, or quotes about the real person.`,`Stay in character. Push back the way this role realistically would; do not cave easily, do not be cartoonishly hostile.`,`The reply is displayed AND spoken. Keep normal spelling on screen, but wrap every name, place, brand, or non-English term a voice might mispronounce as [[shown|said]] — for example [[Omakase|oh-mah-kah-seh]]. The said side must be lowercase voice-safe syllables matching a native/source-language pronunciation, never IPA or an Anglicized guess.`,`Reply ONLY with JSON: {"reply":"what you say next, 1-3 sentences, spoken language"}. No other keys, no prose outside the JSON.`].join(`
|
|
2
2
|
`)}function v(){return[`You are a direct, warm conversation coach. The user just finished a practice take of a hard conversation.`,`Judge ONLY what is in the transcript — quote or reference their actual words; never invent things they said.`,`If an earlier take summary is given, say concretely what improved or regressed since it.`,`Reply ONLY with JSON: {"note":"how this take went, 1-2 sentences","tip":"ONE concrete thing to do differently next take, 1-2 sentences"}.`].join(`
|
|
3
3
|
`)}var y=900,ee=1e3;function b(e){try{return typeof e==`string`?JSON.parse(e.match(/\{[\s\S]*\}/)?.[0]??`{}`):e}catch{return{}}}function te(e){return e.map(e=>({role:e.who===`you`?`user`:`assistant`,content:e.text}))}async function x(e,t,n,r){try{let i=te(t),a=i.pop();if(!a||a.role!==`user`)return``;let o=await c(n.provider).generate({system:_(e),history:i,user:a.content,maxTokens:y,thinkingLevel:`minimal`,signal:r},n);if(r.aborted)return``;let s=b(o.raw).reply;return typeof s==`string`?s.trim().slice(0,600):``}catch{return``}}async function ne(e,t,n,r,i,a){try{if(!t.some(e=>e.who===`you`))return null;let o=t.map(t=>`${t.who===`you`?`USER`:e.counterpart.toUpperCase()}: ${t.text}`).join(`
|
|
4
4
|
`),s=[`Conversation being rehearsed: ${e.scenario}`,r?`Earlier take, your summary then: ${r}`:null,`Take ${n} transcript:`,o].filter(Boolean).join(`
|