@mavea/mavea 1.0.8 → 1.0.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (172) hide show
  1. package/dist/.vite/manifest.json +668 -662
  2. package/dist/assets/{AppCommandPalette-DUMSp3rd.js → AppCommandPalette-BrvbfsdK.js} +1 -1
  3. package/dist/assets/{AtlasView-Dl2fssaG.js → AtlasView-B8b67dk0.js} +1 -1
  4. package/dist/assets/{BlockEmpty-CLtVQf6c.js → BlockEmpty-L6Ii29YE.js} +1 -1
  5. package/dist/assets/{BriefingPlayer-DO205Qkh.js → BriefingPlayer-CtB3h9TJ.js} +1 -1
  6. package/dist/assets/{CanvasSkeleton-BZZPCuRZ.js → CanvasSkeleton-CqvzF0Ix.js} +2 -2
  7. package/dist/assets/{CheckLogRail-wUfby67Z.js → CheckLogRail-Dr0S3LeI.js} +1 -1
  8. package/dist/assets/{CodeOutput-Kh6ldxQz.js → CodeOutput-BGCRjlET.js} +1 -1
  9. package/dist/assets/{CommandPalette-Kl00mMZm.js → CommandPalette-D2kV4Mdl.js} +1 -1
  10. package/dist/assets/{CourseLessonReader-MBHoknUz.js → CourseLessonReader-ItmH7ccs.js} +2 -2
  11. package/dist/assets/{CourseRail-q6x5cCpW.js → CourseRail-B8Ot8hW9.js} +1 -1
  12. package/dist/assets/{CoursesApp-v89OVJvg.js → CoursesApp-DSu2zswg.js} +2 -2
  13. package/dist/assets/{CrossExamPanel-DH04p6VS.js → CrossExamPanel-xOgmL2kl.js} +1 -1
  14. package/dist/assets/{DashPresent-BYXbPuGj.js → DashPresent-C8Yk9AOu.js} +1 -1
  15. package/dist/assets/{DashboardDetail-B50ZkeVK.js → DashboardDetail-BK3ozdBm.js} +2 -2
  16. package/dist/assets/DashboardLoopRuntime-elAVdpQj.js +1 -0
  17. package/dist/assets/{DashboardOverview-C-FdGWM5.js → DashboardOverview-Bhiwt3py.js} +1 -1
  18. package/dist/assets/{DashboardSettings-Dmw6JTbI.js → DashboardSettings-ConUIT2l.js} +1 -1
  19. package/dist/assets/{DashboardsApp-JSY_bVfi.js → DashboardsApp-CAxFYHsK.js} +2 -2
  20. package/dist/assets/{DeepZoomApp-BFNwli7l.js → DeepZoomApp-B1uh9Yyg.js} +1 -1
  21. package/dist/assets/{DelegatePanel-BK7rEhIc.js → DelegatePanel-CDOU8DfD.js} +1 -1
  22. package/dist/assets/{DemoGallery-BPtVG7_y.js → DemoGallery-D1YRuz0S.js} +1 -1
  23. package/dist/assets/{DropSelect-DUhdQSta.js → DropSelect-DZGCKxxw.js} +1 -1
  24. package/dist/assets/{ExportModal-D65cGyj_.js → ExportModal-DhM80yeB.js} +2 -2
  25. package/dist/assets/{ExtractionPreview-Iwfg2Ogl.js → ExtractionPreview-CEVvwL6Z.js} +1 -1
  26. package/dist/assets/{FeatureUseNotice-DPtQ0OGb.js → FeatureUseNotice-CoK5HkbR.js} +1 -1
  27. package/dist/assets/FeatureUseNotice-CsCxxfOl.css +1 -0
  28. package/dist/assets/{FlagshipCTA-BXntKhxb.js → FlagshipCTA-CYkF5LO_.js} +1 -1
  29. package/dist/assets/{FlagshipCommandPalette-BDJfasI-.js → FlagshipCommandPalette-gbdvHS2L.js} +1 -1
  30. package/dist/assets/{FlagshipShowcase-DJ8Gxk_G.js → FlagshipShowcase-BB4BJP3V.js} +1 -1
  31. package/dist/assets/{FlashcardsApp-CLNo4WX7.js → FlashcardsApp-kGal2QE_.js} +1 -1
  32. package/dist/assets/{ForecastPanel-PBO2-dgS.js → ForecastPanel-gs5apRKg.js} +1 -1
  33. package/dist/assets/{GalleryApp-DM03CMRy.js → GalleryApp-DPdu4q7k.js} +1 -1
  34. package/dist/assets/{HonestByDesign-Dqyth6nW.js → HonestByDesign-CKnSiPcq.js} +1 -1
  35. package/dist/assets/{HowItWorks-C0zosIvq.js → HowItWorks-DWp-ASxN.js} +1 -1
  36. package/dist/assets/{LegalApp-DZBdExTy.js → LegalApp-D17oe1-B.js} +1 -1
  37. package/dist/assets/{LegalMarkdownDocument-CSZhRG5r.js → LegalMarkdownDocument-B-0LA_X_.js} +1 -1
  38. package/dist/assets/{LegalPageShell-DTeXqWyc.js → LegalPageShell-CY2O507f.js} +1 -1
  39. package/dist/assets/{LeverPanel-aZfhtVJX.js → LeverPanel-CiRg_mFN.js} +1 -1
  40. package/dist/assets/{Library-D2XGNXz7.js → Library-DhMHA6Q_.js} +1 -1
  41. package/dist/assets/{LibraryOverlay-B2WQSgwr.js → LibraryOverlay-C3ECZIkZ.js} +1 -1
  42. package/dist/assets/LiveApp-CPPQzp34.js +61 -0
  43. package/dist/assets/{LiveApp-BVZGpJ1S.css → LiveApp-D2QFBykD.css} +1 -1
  44. package/dist/assets/LiveSettings-Bk-_UwJ6.js +6 -0
  45. package/dist/assets/{MindMapViewerDrawer-YYyZqmAd.js → MindMapViewerDrawer-C25mTggg.js} +1 -1
  46. package/dist/assets/{MindShape-mTlN5mPZ.js → MindShape-BxkLfo53.js} +1 -1
  47. package/dist/assets/{PinToDashboard-_kIOHs0k.js → PinToDashboard-D7IJhkHd.js} +1 -1
  48. package/dist/assets/{PlanReview-33V8GTNB.js → PlanReview-Cr5XQnuN.js} +1 -1
  49. package/dist/assets/{Presence-CzLJIeSD.js → Presence-DKuWuuqK.js} +1 -1
  50. package/dist/assets/{PresentationDeck-BDoGecxr.js → PresentationDeck-Cd0r3n1O.js} +1 -1
  51. package/dist/assets/{PrismApp-PfBTFhMF.js → PrismApp-DcKFHKlU.js} +2 -2
  52. package/dist/assets/{PrismAskController-DbQDrlU9.js → PrismAskController-PncuR6Km.js} +1 -1
  53. package/dist/assets/{PrismBriefingPlayer-1fvlfLR8.js → PrismBriefingPlayer-DPVF0uAk.js} +2 -2
  54. package/dist/assets/{PrismOverlay-B7lEspdu.js → PrismOverlay-COemfAxM.js} +4 -4
  55. package/dist/assets/{PrivacyApp-CR4lRs0L.js → PrivacyApp-C8D6D4ug.js} +1 -1
  56. package/dist/assets/{Recap-H5fhj5Tc.js → Recap-BiNtOx5h.js} +1 -1
  57. package/dist/assets/{ReelJelly-3jSVsJsy.js → ReelJelly-DlUpsGvm.js} +1 -1
  58. package/dist/assets/{RehearsalPanel-BVgjrOPg.js → RehearsalPanel-BzjZl2d1.js} +1 -1
  59. package/dist/assets/ReplayCard-EEL3-N3E.js +2 -0
  60. package/dist/assets/{ReplayOverlay-DXmVdeIr.js → ReplayOverlay-D30116VF.js} +1 -1
  61. package/dist/assets/{RewindOverlay-BusfWeFq.js → RewindOverlay-C4W4TlTA.js} +1 -1
  62. package/dist/assets/{RippleApp-9KrJPYgN.js → RippleApp-Bp3koJmT.js} +2 -2
  63. package/dist/assets/{RippleAskController-CO9wE7hU.js → RippleAskController-fvq109Pn.js} +1 -1
  64. package/dist/assets/{RippleOverlay-DMHLbfh8.js → RippleOverlay-BDc4eEW2.js} +2 -2
  65. package/dist/assets/{SeeDontRead-C389viue.js → SeeDontRead-D-Cpq9BU.js} +1 -1
  66. package/dist/assets/ShareModal-jNmCfrjC.js +32 -0
  67. package/dist/assets/{ShipCascade-BUtwvQoW.js → ShipCascade-Dy1JkWLT.js} +1 -1
  68. package/dist/assets/{ShipCourse-B7lG6DYW.js → ShipCourse-wmdSNt0D.js} +1 -1
  69. package/dist/assets/{ShipHotspots-Bj2CovtT.js → ShipHotspots-BJESX960.js} +1 -1
  70. package/dist/assets/{ShipIncident-DcmindmE.js → ShipIncident-DZ7YVj3U.js} +1 -1
  71. package/dist/assets/{ShipMigration-s0hVjDQl.js → ShipMigration-Cw2fI6TU.js} +1 -1
  72. package/dist/assets/{ShipOnboarding-ekbHL7OH.js → ShipOnboarding-v3pjB9Dd.js} +1 -1
  73. package/dist/assets/{ShipRead-BVNgQT6L.js → ShipRead-D8nzUWiX.js} +1 -1
  74. package/dist/assets/{ShipRollout-BdUQzMyP.js → ShipRollout-CEIWoYzI.js} +1 -1
  75. package/dist/assets/{ShipSuggestions-B6fKYh8L.js → ShipSuggestions-DcKMr0By.js} +1 -1
  76. package/dist/assets/{ShipWorkspace-3D3Rrs1p.js → ShipWorkspace-Ck-C4iW9.js} +1 -1
  77. package/dist/assets/{SignatureLoop-C60r8Wm5.js → SignatureLoop-bo7wU13q.js} +1 -1
  78. package/dist/assets/{SynthesisApp-vJ2Jq0Qe.js → SynthesisApp-2uQFqWDb.js} +2 -2
  79. package/dist/assets/{SynthesisOverlay-CkERphvG.js → SynthesisOverlay-_lC1TNb0.js} +1 -1
  80. package/dist/assets/{TermsApp-C70tW6m6.js → TermsApp-BVBZzP88.js} +1 -1
  81. package/dist/assets/{TopicCanvas-CT0eSj2M.js → TopicCanvas-B1WcxoEs.js} +2 -2
  82. package/dist/assets/{TourPrism-BvucSkcs.js → TourPrism-BfJXC1SR.js} +1 -1
  83. package/dist/assets/{TrackerTile-CasZNmt4.js → TrackerTile-Bp2KIlOe.js} +2 -2
  84. package/dist/assets/{TwoSurfaces-C90X7Aj5.js → TwoSurfaces-BH7wc_Ep.js} +1 -1
  85. package/dist/assets/{UnderstoodPanel-CHPD2Ttj.js → UnderstoodPanel-BNsNgsry.js} +1 -1
  86. package/dist/assets/{WhyMachineOverlay-CB0_n6Sy.js → WhyMachineOverlay-DtuKQK6a.js} +1 -1
  87. package/dist/assets/{WowFeatures-Ci_H5QYX.js → WowFeatures-AtKR62OJ.js} +1 -1
  88. package/dist/assets/{ZoomDeck-BQHO79ZU.js → ZoomDeck-Cjxd13Gj.js} +1 -1
  89. package/dist/assets/{alternateFinishes-DZ-rkpkX.js → alternateFinishes-0zAldUWA.js} +1 -1
  90. package/dist/assets/{annotationAuto-B0nihA4F.js → annotationAuto-LzJWWed8.js} +1 -1
  91. package/dist/assets/{annotationReel-BcU9Q0Sw.js → annotationReel-_G28azfX.js} +1 -1
  92. package/dist/assets/backup-BEABatjO.js +1 -0
  93. package/dist/assets/canvas-zLlyd97t.js +1 -0
  94. package/dist/assets/{catalog-Dqaq2YFd.js → catalog-DPzc-MaH.js} +1 -1
  95. package/dist/assets/chapters-Cbe53c3W.js +1 -0
  96. package/dist/assets/{dashboardEvents-DR9d_c74.js → dashboardEvents-CCCsM3Bq.js} +2 -2
  97. package/dist/assets/{dist-BFx3nZg4.js → dist-PCzrhF4p.js} +1 -1
  98. package/dist/assets/{fit-0HxU-rtB.js → fit-B4AIV3jM.js} +1 -1
  99. package/dist/assets/{generateLive-D4B30fnF.js → generateLive-B4vyL_X9.js} +18 -18
  100. package/dist/assets/homeTarget-BcZYH3DY.js +1 -0
  101. package/dist/assets/{index-y8GL67bB.js → index-DiPGFGsJ.js} +3 -3
  102. package/dist/assets/{jspdf.es.min-C-Pf79px.js → jspdf.es.min-CuE7vq_-.js} +1 -1
  103. package/dist/assets/kokoro-BAiRCDY0.js +1 -0
  104. package/dist/assets/{lib-VFqp6Y3w.js → lib-CQDCalVC.js} +1 -1
  105. package/dist/assets/{liveSchema-CJ49PX5R.js → liveSchema-Df33WFbg.js} +3 -2
  106. package/dist/assets/{mastery-BPjxP0fN.js → mastery-D7xYf5D7.js} +1 -1
  107. package/dist/assets/{motion-S0NRruNj.js → motion-S_ZJkP9s.js} +1 -1
  108. package/dist/assets/{neighborhoods-C-1Tjr1r.js → neighborhoods-DFqKm9Xi.js} +1 -1
  109. package/dist/assets/{notes-lROPCorS.js → notes-CRP7J2eu.js} +1 -1
  110. package/dist/assets/{pdf-Df7PCH7q.js → pdf-C80f-ORI.js} +1 -1
  111. package/dist/assets/{perfProbe-COAp9PAa.js → perfProbe-CBJQvhlT.js} +1 -1
  112. package/dist/assets/{pin-CXSuPJYL.js → pin-Le0tONqk.js} +1 -1
  113. package/dist/assets/{portal-DMw7C32j.js → portal-4ZN6jo0N.js} +1 -1
  114. package/dist/assets/{pptxgen.es-CvTILmV9.js → pptxgen.es-DCKUqU8v.js} +1 -1
  115. package/dist/assets/{prewarm--whjQhWJ.js → prewarm-CTFQ2mCg.js} +1 -1
  116. package/dist/assets/{quietHours-BvcsBKKK.js → quietHours-CzNHI0JD.js} +1 -1
  117. package/dist/assets/{registry-DujBAgn_.js → registry-2H41hRIB.js} +1 -1
  118. package/dist/assets/{registry-Buq5uuCv.js → registry-B2ntaO2N.js} +1 -1
  119. package/dist/assets/{registry-QcULZpdE.js → registry-BXafX9C8.js} +2 -2
  120. package/dist/assets/{registry-B940W2j5.js → registry-BeStN3Pr.js} +1 -1
  121. package/dist/assets/{registry-DUvXX_d0.js → registry-BftXZ9vp.js} +1 -1
  122. package/dist/assets/{registry-DCI_BeFJ.js → registry-Bl7cQtEK.js} +1 -1
  123. package/dist/assets/{registry-aazwkBJp.js → registry-BqcHHCvG.js} +1 -1
  124. package/dist/assets/{registry-B8DStMJk.js → registry-BsYURZ0N.js} +1 -1
  125. package/dist/assets/{registry-CKjKq6ct.js → registry-CGZNwEdk.js} +1 -1
  126. package/dist/assets/{registry-DDLSYDVA.js → registry-CQzRD746.js} +1 -1
  127. package/dist/assets/{registry-1GuPBfQK.js → registry-CS2QCeW9.js} +1 -1
  128. package/dist/assets/{registry-CEVrY72Z.js → registry-CgrywLei.js} +1 -1
  129. package/dist/assets/{registry-Cg7qUZPS.js → registry-Cm59DqEh.js} +1 -1
  130. package/dist/assets/{registry-CAusoyBh.js → registry-CmrE7O4v.js} +1 -1
  131. package/dist/assets/{registry-2v0jlh5Q.js → registry-D6rlO36K.js} +2 -2
  132. package/dist/assets/{registry-DI1wSG1Y.js → registry-DOWgQUqz.js} +1 -1
  133. package/dist/assets/{registry-BPvIPLke.js → registry-DOt6RM72.js} +1 -1
  134. package/dist/assets/{registry-BgGeRiDA.js → registry-DYzIwDFU.js} +1 -1
  135. package/dist/assets/{registry-Cix-yqch.js → registry-Dmrednfo.js} +1 -1
  136. package/dist/assets/{registry-Dpb8EXHn.js → registry-DygrqpKl.js} +1 -1
  137. package/dist/assets/{registry-D_URPoL4.js → registry-HN-JpqFb.js} +1 -1
  138. package/dist/assets/{registry-DJinB5ye.js → registry-ejl3mwuM.js} +1 -1
  139. package/dist/assets/{registry-zRPjWNl5.js → registry-jZYQkNJ2.js} +1 -1
  140. package/dist/assets/{relate-A9ZeaaAI.js → relate-C5sGCY-w.js} +1 -1
  141. package/dist/assets/{run-C_0B_41W.js → run-Dc2ZJz6n.js} +1 -1
  142. package/dist/assets/search-Be63DJkp.js +1 -0
  143. package/dist/assets/shapes-Cw7tCHIp.js +1 -0
  144. package/dist/assets/{shikiHighlight-DUCYbsJ2.js → shikiHighlight-CifX0fpk.js} +1 -1
  145. package/dist/assets/{store-DgG0C1Qx.js → store-BMRQiV1z.js} +1 -1
  146. package/dist/assets/{store-BFC7DZcg.js → store-Dn23_Ymr.js} +1 -1
  147. package/dist/assets/{store-BFrJaSxJ.js → store-DoJn3lBF.js} +1 -1
  148. package/dist/assets/{store-4JNNn732.js → store-DrBDvqXF.js} +1 -1
  149. package/dist/assets/threads-CkMgrSDP.js +1 -0
  150. package/dist/assets/{useDashboardLoop-B6ByHWoE.js → useDashboardLoop-Bj1otKTo.js} +3 -3
  151. package/dist/assets/useLiveConfig-CbMkeKrN.js +1 -0
  152. package/dist/assets/{useSpatialCanvas-DogK9457.js → useSpatialCanvas-CgmEY3Ri.js} +1 -1
  153. package/dist/assets/{useSpotlightWalk-rMbmNBKK.js → useSpotlightWalk-aimD20cU.js} +1 -1
  154. package/dist/assets/{useSrsCards-CagZefwX.js → useSrsCards-DItrX8z6.js} +1 -1
  155. package/dist/assets/{useStudy-Bflreq2a.js → useStudy-DyBiirxE.js} +1 -1
  156. package/dist/assets/{useZoomGesture-CYc3tf2z.js → useZoomGesture-iiPgDTx_.js} +1 -1
  157. package/dist/index.html +1 -1
  158. package/package.json +1 -1
  159. package/dist/assets/DashboardLoopRuntime-CFXPx3v_.js +0 -1
  160. package/dist/assets/FeatureUseNotice-CWt7gOwS.css +0 -1
  161. package/dist/assets/LiveApp-B9zwXlGC.js +0 -61
  162. package/dist/assets/LiveSettings-D9OcWlm6.js +0 -6
  163. package/dist/assets/ReplayCard-BpYO5vX-.js +0 -2
  164. package/dist/assets/ShareModal-ClnEkudw.js +0 -32
  165. package/dist/assets/backup-c-Btapzp.js +0 -1
  166. package/dist/assets/canvas-QTEIiK23.js +0 -1
  167. package/dist/assets/chapters-BiUsDClQ.js +0 -1
  168. package/dist/assets/homeTarget-BgWKI_E1.js +0 -1
  169. package/dist/assets/kokoro-D4GKpSL0.js +0 -1
  170. package/dist/assets/search-DnjHupRf.js +0 -1
  171. package/dist/assets/shapes-RqjqC0ay.js +0 -1
  172. package/dist/assets/useLiveConfig-X9Wxh90k.js +0 -1
@@ -1,5 +1,5 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/liveSchema-CJ49PX5R.js","assets/catalog-Dqaq2YFd.js","assets/index-y8GL67bB.js","assets/chunk-BVpWp9h4.js","assets/jsx-runtime-DaSxXjOY.js","assets/react-BQSORdFI.js","assets/lazyRetry-D50B1UMY.js","assets/index-CepQEz75.css","assets/facts-BBTt3ImG.js","assets/annotations-D2K9A5GB.js","assets/providers-wzm7E8Pa.js","assets/http-CJCtjYpA.js","assets/info-CiqHR5cs.js","assets/icons-CHVz6kv_.js","assets/catalog-BHjl-1uH.js","assets/safeImageUrl-CUkucDUu.js","assets/sourceHost-BV3t2XDb.js","assets/spokenText-D4zPX9JY.js","assets/streamParse-DRgMHWye.js"])))=>i.map(i=>d[i]);
2
- import{r as e}from"./chunk-BVpWp9h4.js";import{t}from"./react-BQSORdFI.js";import{J as n,ht as r,q as i}from"./index-y8GL67bB.js";import{i as a,t as o}from"./http-CJCtjYpA.js";import{t as s}from"./providers-wzm7E8Pa.js";import{C as c,R as l,S as u,T as d,h as f,j as p,w as m,x as h}from"./useStudy-Bflreq2a.js";import{l as g,n as _}from"./useLiveConfig-X9Wxh90k.js";import{a as v,b as y,d as b,i as x,m as S,p as C,r as w,t as T,u as ee,v as E,y as te}from"./dashboardEvents-DR9d_c74.js";import{i as D}from"./format-hc2QOoIu.js";import{n as ne}from"./number-DXgzss0v.js";import{t as O}from"./json-B0N3XRZU.js";import{t as k}from"./now-C9-UAzTC.js";import{n as re,t as ie}from"./predictions-CYS7Vo39.js";import{t as A}from"./notify-Bz4wuE4T.js";var j=t(),ae=r();function oe(e){return new Set(e.toLowerCase().replace(/[^a-z0-9 ]/g,` `).replace(/\s+/g,` `).trim().split(` `).filter(e=>e.length>3))}function M(e){return e.replace(/\s+/g,` `).trim().toLowerCase()}n();function se(e,t,n,r){switch(e){case`gt`:return t>r;case`gte`:return t>=r;case`lt`:return t<r;case`lte`:return t<=r;case`crosses_up`:return n!==null&&n<r&&t>=r;case`crosses_down`:return n!==null&&n>r&&t<=r;case`pct_rise`:return n!==null&&n!==0&&(t-n)/Math.abs(n)*100>=r;case`pct_drop`:return n!==null&&n!==0&&(n-t)/Math.abs(n)*100>=r;default:return!1}}function ce(e,t,n){if(n===0)return!0;let r=t/n;switch(e){case`gt`:case`gte`:return r>=.9;case`lt`:case`lte`:return r<=1.1;default:return!0}}function le(e,t,n){return t===null?`AWAITING`:se(e.comparator,t,n,e.threshold)?`TRIGGERED`:ce(e.comparator,t,e.threshold)?`WATCHING`:`CLEAR`}function N(e,t={}){let n=new Map(e.metrics.map(e=>[e.id,e])),r=[];return{tripwires:e.tripwires.map(e=>{let i=n.get(e.metricId),a=i?i.lastValue:null,o=le(e,a,e.metricId in t?t[e.metricId]:a),s=o===`TRIGGERED`&&e.state!==`TRIGGERED`?{...e,state:o,brokenValue:a??void 0,brokenAt:i?.asOf}:{...e,state:o};return o===`TRIGGERED`&&e.state!==`TRIGGERED`&&r.push(s),s}),newlyTriggered:r}}function ue(e,t){return e.nextDataAt<=t||e.oneShotAt!==void 0&&e.oneShotAt<=t}function P(e){return e.oneShotAt===void 0?e.nextDataAt:Math.min(e.nextDataAt,e.oneShotAt)}function de(e,t=Date.now(),n=4){return e.filter(e=>ue(e,t)).sort((e,t)=>P(e)-P(t)).slice(0,n)}function fe(e,t=Date.now()){return e.filter(e=>e.nextAiAt<=t).sort((e,t)=>e.nextAiAt-t.nextAiAt)[0]??null}function F(e,t,n=Date.now()){return e.smartTrigger&&t.length>0?{fire:!0,trigger:t[0]}:(e.cadence.ai===`daily`||e.cadence.ai===`weekly`)&&n>=e.nextAiAt?{fire:!0,trigger:`scheduled`}:{fire:!1,trigger:null}}function I(e){let t=[];for(let n of o(e.sources)){let e=a(n);typeof e.title==`string`&&typeof e.url==`string`&&t.push({title:e.title,url:e.url})}return t}function L(e,t){return(e.sources?.length??0)>0||I(t).length>0}function pe(e){return`- VALUE "${e.label}" — ${e.query}`}function me(e,t){return`- BLOCK #${t} [${e.block.type}] ${e.refreshQuery}\n current content: ${JSON.stringify(e.block.props??{}).slice(0,600)}`}function R(){return{values:{},widgets:{}}}function he(e){return{metrics:e.metrics.filter(e=>e.query.trim()!==``&&!e.blankKey),targets:e.widgets.filter(e=>!!e.refreshQuery?.trim())}}function z(e,t,n){return 400+t.length*120+n.length*1200+(e.prediction?150:0)}var ge=12e3;function B(e){let t=[],n=1200;for(let r of e){let{metrics:e,targets:i}=he(r);if(e.length===0&&i.length===0)continue;let a=z(r,e,i);if(t.length>0&&n+a>ge)break;n+=a,t.push({d:r,metrics:e,targets:i})}return t}function _e(e,t){let n=Math.max(0,Math.round((t-e)/6e4));if(n<60)return`${n}m ago`;let r=Math.round(n/60);return r<24?`${r}h ago`:`${Math.round(r/24)}d ago`}function ve(e,t){let n=[...e.metrics.map(pe),...e.targets.map((e,t)=>me(e,t)),...e.d.prediction?[`- PREVIOUS EXPECTATION (made ${_e(e.d.prediction.at,t)}): "${e.d.prediction.text}" — grade it.`]:[]];return`DASHBOARD ${e.d.id} "${e.d.title}"\n${n.join(`
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/liveSchema-Df33WFbg.js","assets/catalog-DPzc-MaH.js","assets/index-DiPGFGsJ.js","assets/chunk-BVpWp9h4.js","assets/jsx-runtime-DaSxXjOY.js","assets/react-BQSORdFI.js","assets/lazyRetry-D50B1UMY.js","assets/index-CepQEz75.css","assets/facts-BBTt3ImG.js","assets/annotations-D2K9A5GB.js","assets/providers-wzm7E8Pa.js","assets/http-CJCtjYpA.js","assets/info-CiqHR5cs.js","assets/icons-CHVz6kv_.js","assets/catalog-BHjl-1uH.js","assets/safeImageUrl-CUkucDUu.js","assets/sourceHost-BV3t2XDb.js","assets/spokenText-D4zPX9JY.js","assets/streamParse-DRgMHWye.js"])))=>i.map(i=>d[i]);
2
+ import{r as e}from"./chunk-BVpWp9h4.js";import{t}from"./react-BQSORdFI.js";import{J as n,ht as r,q as i}from"./index-DiPGFGsJ.js";import{i as a,t as o}from"./http-CJCtjYpA.js";import{t as s}from"./providers-wzm7E8Pa.js";import{C as c,R as l,S as u,T as d,h as f,j as p,w as m,x as h}from"./useStudy-DyBiirxE.js";import{l as g,n as _}from"./useLiveConfig-CbMkeKrN.js";import{a as v,b as y,d as b,i as x,m as S,p as C,r as w,t as T,u as ee,v as E,y as te}from"./dashboardEvents-CCCsM3Bq.js";import{i as D}from"./format-hc2QOoIu.js";import{n as ne}from"./number-DXgzss0v.js";import{t as O}from"./json-B0N3XRZU.js";import{t as k}from"./now-C9-UAzTC.js";import{n as re,t as ie}from"./predictions-CYS7Vo39.js";import{t as A}from"./notify-Bz4wuE4T.js";var j=t(),ae=r();function oe(e){return new Set(e.toLowerCase().replace(/[^a-z0-9 ]/g,` `).replace(/\s+/g,` `).trim().split(` `).filter(e=>e.length>3))}function M(e){return e.replace(/\s+/g,` `).trim().toLowerCase()}n();function se(e,t,n,r){switch(e){case`gt`:return t>r;case`gte`:return t>=r;case`lt`:return t<r;case`lte`:return t<=r;case`crosses_up`:return n!==null&&n<r&&t>=r;case`crosses_down`:return n!==null&&n>r&&t<=r;case`pct_rise`:return n!==null&&n!==0&&(t-n)/Math.abs(n)*100>=r;case`pct_drop`:return n!==null&&n!==0&&(n-t)/Math.abs(n)*100>=r;default:return!1}}function ce(e,t,n){if(n===0)return!0;let r=t/n;switch(e){case`gt`:case`gte`:return r>=.9;case`lt`:case`lte`:return r<=1.1;default:return!0}}function le(e,t,n){return t===null?`AWAITING`:se(e.comparator,t,n,e.threshold)?`TRIGGERED`:ce(e.comparator,t,e.threshold)?`WATCHING`:`CLEAR`}function N(e,t={}){let n=new Map(e.metrics.map(e=>[e.id,e])),r=[];return{tripwires:e.tripwires.map(e=>{let i=n.get(e.metricId),a=i?i.lastValue:null,o=le(e,a,e.metricId in t?t[e.metricId]:a),s=o===`TRIGGERED`&&e.state!==`TRIGGERED`?{...e,state:o,brokenValue:a??void 0,brokenAt:i?.asOf}:{...e,state:o};return o===`TRIGGERED`&&e.state!==`TRIGGERED`&&r.push(s),s}),newlyTriggered:r}}function ue(e,t){return e.nextDataAt<=t||e.oneShotAt!==void 0&&e.oneShotAt<=t}function P(e){return e.oneShotAt===void 0?e.nextDataAt:Math.min(e.nextDataAt,e.oneShotAt)}function de(e,t=Date.now(),n=4){return e.filter(e=>ue(e,t)).sort((e,t)=>P(e)-P(t)).slice(0,n)}function fe(e,t=Date.now()){return e.filter(e=>e.nextAiAt<=t).sort((e,t)=>e.nextAiAt-t.nextAiAt)[0]??null}function F(e,t,n=Date.now()){return e.smartTrigger&&t.length>0?{fire:!0,trigger:t[0]}:(e.cadence.ai===`daily`||e.cadence.ai===`weekly`)&&n>=e.nextAiAt?{fire:!0,trigger:`scheduled`}:{fire:!1,trigger:null}}function I(e){let t=[];for(let n of o(e.sources)){let e=a(n);typeof e.title==`string`&&typeof e.url==`string`&&t.push({title:e.title,url:e.url})}return t}function L(e,t){return(e.sources?.length??0)>0||I(t).length>0}function pe(e){return`- VALUE "${e.label}" — ${e.query}`}function me(e,t){return`- BLOCK #${t} [${e.block.type}] ${e.refreshQuery}\n current content: ${JSON.stringify(e.block.props??{}).slice(0,600)}`}function R(){return{values:{},widgets:{}}}function he(e){return{metrics:e.metrics.filter(e=>e.query.trim()!==``&&!e.blankKey),targets:e.widgets.filter(e=>!!e.refreshQuery?.trim())}}function z(e,t,n){return 400+t.length*120+n.length*1200+(e.prediction?150:0)}var ge=12e3;function B(e){let t=[],n=1200;for(let r of e){let{metrics:e,targets:i}=he(r);if(e.length===0&&i.length===0)continue;let a=z(r,e,i);if(t.length>0&&n+a>ge)break;n+=a,t.push({d:r,metrics:e,targets:i})}return t}function _e(e,t){let n=Math.max(0,Math.round((t-e)/6e4));if(n<60)return`${n}m ago`;let r=Math.round(n/60);return r<24?`${r}h ago`:`${Math.round(r/24)}d ago`}function ve(e,t){let n=[...e.metrics.map(pe),...e.targets.map((e,t)=>me(e,t)),...e.d.prediction?[`- PREVIOUS EXPECTATION (made ${_e(e.d.prediction.at,t)}): "${e.d.prediction.text}" — grade it.`]:[]];return`DASHBOARD ${e.d.id} "${e.d.title}"\n${n.join(`
3
3
  `)}`}function ye(e){return!!e&&typeof e==`object`&&!Array.isArray(e)}function be(e,t){let n=e.dashboards;if(n===void 0&&t.length===1)return{[t[0].d.id]:e};let r=new Map,i=[];if(Array.isArray(n))for(let e of n){let t=a(e);i.push(t),typeof t.id==`string`&&t.id&&r.set(t.id,t)}else if(ye(n))for(let[e,t]of Object.entries(n))r.set(e,a(t));let o={};return t.forEach((e,t)=>{o[e.d.id]=r.get(e.d.id)??i[t]??{}}),o}function xe(e){let t=a(e);if(typeof t.metricLabel!=`string`||!t.metricLabel.trim())return;let n=o(t.readings).filter(e=>typeof e==`string`&&!!e.trim());if(!(n.length<2))return{metricLabel:t.metricLabel.trim(),readings:n,note:typeof t.note==`string`?t.note.trim().slice(0,200):``}}function Se(e){let t=a(e),n=typeof t.start==`string`?Date.parse(t.start):NaN,r=typeof t.end==`string`?Date.parse(t.end):NaN;if(!(!Number.isFinite(n)||!Number.isFinite(r)||r<=n)&&!(r-n>10080*60*1e3))return{startAt:n,endAt:r,label:typeof t.label==`string`?t.label.trim().slice(0,60):``}}var Ce=` YOUR PREVIOUS ATTEMPT DID NOT ACTUALLY SEARCH (no citations came back). Before answering this time, you MUST run a real web search for every DASHBOARD section above and report only what those searches returned, listing the real URLs relied on in "sources" — this is not optional. If search is genuinely unavailable or turns up nothing, return null values and omit "sources" entirely; never invent a value or a source just to satisfy this instruction.`;async function V(e,t,n={}){let r=Date.now(),c={ok:!0,grounded:!1,perDashboard:{},sources:[],attempts:0};if(e.length===0&&!n.briefingContext)return c;try{let c=s(t.provider),l=new Set(e.flatMap(e=>e.targets.map(e=>e.block.type))),u=l.size>0,d=e.map(e=>ve(e,r)).join(`
4
4
 
5
- `),f={type:`object`,properties:{dashboards:{type:`array`,description:`One object per DASHBOARD section above, in the same order, each echoing its id.`,items:{type:`object`,properties:{id:{type:`string`},values:{type:`object`,description:`Map of VALUE label -> current numeric value, or null.`},blocks:{type:`array`,description:`Exactly one block per BLOCK item for this dashboard, in order.`,items:{type:`object`,properties:{type:{type:`string`},props:{type:`object`}},required:[`type`,`props`]}},expects:{type:`string`,description:`A short "by next check" expectation — omit if nothing here is genuinely predictable.`},grade:{type:`object`,description:`ONLY when this dashboard has a PREVIOUS EXPECTATION line.`,properties:{result:{type:`string`},note:{type:`string`}}},disagreement:{type:`object`,description:`ONLY when two real sources genuinely disagreed on a value.`,properties:{metricLabel:{type:`string`},readings:{type:`array`,items:{type:`string`}},note:{type:`string`}}},liveWindow:{type:`object`,description:`ONLY when search revealed a real, bounded live-event window.`,properties:{start:{type:`string`},end:{type:`string`},label:{type:`string`}}}},required:[`id`]}},...n.briefingContext?{briefing:{type:`string`,description:`2-4 sentences summarizing ALL dashboards (this batch + the given CONTEXT), real values only; use [[shown|said]] pronunciation twins for speech-risky terms.`}}:{},sources:{type:`array`,description:`OMIT unless this call used web search. Real source URLs actually relied on — never invented.`,items:{type:`object`,properties:{title:{type:`string`},url:{type:`string`}},required:[`title`,`url`]}}},required:[`dashboards`]},p=Math.min(14e3,Math.max(3e3,1200+e.reduce((e,t)=>e+z(t.d,t.metrics,t.targets),0)+(n.briefingContext?700:0))),m=k()+` You are checking several standing trackers at once. Return ONLY JSON: {"dashboards": [{"id": string, "values": {...}, "blocks": [...], "expects"?: string, "grade"?: {...}, "disagreement"?: {...}, "liveWindow"?: {...}}, ...], `+(n.briefingContext?`"briefing": string, `:``)+`"sources": [...]}. Use web search for every DASHBOARD section below — never invent a value or detail. ECHO each dashboard's exact "id" so results map back correctly. For a VALUE item, give its CURRENT real number (no units) or null if unverifiable. For a BLOCK item, produce exactly one block whose "type" is the EXACT bracketed type given — never substitute a different one — matching its current content for detail level (real names, numbers, dates). CRITICAL — a "current content" showing something live, in progress, or upcoming is NOT necessarily still true right now: explicitly check whether it has SINCE concluded and report the concluding outcome if so, reasoning from the date/time above which of upcoming/live/finished applies at this exact moment. If a dashboard has a PREVIOUS EXPECTATION line, grade it honestly ("hit" it came true, "miss" it did not, "unclear" if genuinely unknowable yet) — grade ONLY dashboards that have this line, never invent a grade otherwise. Offer a fresh "expects" only when something is genuinely predictable by the next check; most checks have nothing worth predicting, so omit it far more often than not. If two real sources genuinely disagree on a value, report it in "disagreement" instead of silently picking one. If search reveals a real bounded live-event window (a match's actual start/end time) for a dashboard, report it in "liveWindow" with ISO start/end — never invent a time. `+(n.briefingContext?`Also compose "briefing": 2-4 warm, concrete sentences summarizing ALL dashboards — this batch PLUS the CONTEXT lines below (already-known values — do NOT search for those, use them as given) — real values only, never memory. The briefing is displayed and spoken: preserve normal spelling on the left, 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. `:``)+`If search genuinely turns up nothing more specific than what is already shown, say so honestly rather than inventing new specifics or repeating the old ones as if just confirmed. CITE SOURCES — every real URL actually relied on, in "sources"; omit it entirely if you used no search.`,h=`Use web search.\n\n${d}`+(n.briefingContext?`\n\nCONTEXT (already known — do not search these):\n${n.briefingContext}`:``),g=e=>c.generate({system:e?m+Ce:m,history:[],user:h,maxTokens:p,temperature:.15,thinkingLevel:e?`high`:`low`,tools:{webSearch:!0},format:f,...u?{blockTypes:[...l],complexity:`brief`}:{}},t).then(e=>({rr:e,grounded:L(e,a(O(e.raw)))})),_=await g(!1),v=1;!_.grounded&&e.length>0&&(_=await g(!0),v=2);let{rr:y}=_,b=a(O(y.raw)),x=L(y,b),S=be(b,e),C=u?(await i(async()=>{let{validateLiveResponse:e}=await import(`./liveSchema-CJ49PX5R.js`);return{validateLiveResponse:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18]))).validateLiveResponse:null,w={};for(let t of e){let e=S[t.d.id]??{},n=R();if(x&&t.metrics.length>0){let r=a(e.values),i=new Map(Object.entries(r).map(([e,t])=>[M(e),t]));for(let e of t.metrics){let t=ne(r[e.label]??i.get(M(e.label)));t!==null&&(n.values[e.id]={value:t,raw:`${t}${e.unit??``}`})}}if(t.targets.length>0&&C){let r=o(e.blocks);t.targets.forEach((e,t)=>{let i=r[t];if(!i)return;let a=C({narration:``,title:`x`,sub:``,blocks:[i]},new Set([e.block.type]),1,x)?.blocks[0];a&&a.type===e.block.type&&(n.widgets[e.id]=a)})}if(x){let r=ie(e.expects);if(r&&(n.expects=r),t.d.prediction){let t=re(e.grade);t&&(n.grade=t)}let i=xe(e.disagreement);i&&(n.disagreement=i);let a=Se(e.liveWindow);a&&(n.liveWindow=a)}w[t.d.id]=n}Object.values(w).every(e=>Object.keys(e.values).length===0&&Object.keys(e.widgets).length===0&&!e.expects)&&console.warn(`[dashboards] refreshDashboards got a response but nothing parsed out of it for any dashboard (${x?`empty/unparseable`:`ungrounded after ${v} attempt${v>1?`s`:``}, discarded`})`,{dashboardIds:e.map(e=>e.d.id),raw:y.raw});let T=n.briefingContext&&x&&typeof b.briefing==`string`&&b.briefing.trim()?b.briefing.trim():void 0;return{ok:!0,grounded:x,perDashboard:w,sources:y.sources&&y.sources.length?y.sources:I(b),attempts:v,...T?{briefing:T}:{}}}catch(t){console.error(`[dashboards] refreshDashboards failed`,t);let n={};for(let t of e)n[t.d.id]=R();return{ok:!1,grounded:!1,perDashboard:n,sources:[],attempts:0}}}function we(e){let t=Array.isArray(e?.sources)?e.sources:[],n=[];for(let e of t){let t=e&&typeof e==`object`?e:{};typeof t.title==`string`&&typeof t.url==`string`&&n.push({title:t.title,url:t.url})}return n}function Te(e){try{let t=typeof e==`string`?JSON.parse(Ee(e)):e,n=t?.verdict;return{text:typeof n==`string`&&n.trim()?n.trim():null,sources:we(t)}}catch{return{text:typeof e==`string`&&e.trim()?e.trim():null,sources:[]}}}function Ee(e){let t=e.indexOf(`{`),n=e.lastIndexOf(`}`);return t>=0&&n>t?e.slice(t,n+1):e}async function H(e,t,n,r=Date.now()){try{let i=s(n.provider),a=t===`scheduled`?null:t,o=a?e.metrics.find(e=>e.id===a.metricId):void 0,c=e.metrics.map(e=>`${e.label}=${e.lastRaw??`—`}`).join(`, `),l=a?`A line the user set just crossed: "${a.label}" — ${o?.label??a.label} is now ${o?.lastRaw??a.brokenValue??`past the threshold`}. Currently tracked: ${c}. Using web search, say briefly and honestly what the latest numbers show and whether this reads as a real move or just noise.`:`Currently tracked: ${c}. Using web search, give a brief, honest read: what the latest numbers show and what has materially changed since the last check.`,u=await i.generate({system:k()+` You give a brief, honest read on the latest numbers a user is tracking: what they show now, what has materially changed since the last check, and — if a specific line was crossed — whether that looks like a real move or noise. One or two plain sentences. Never invent data. CITE YOUR SOURCES — whenever you used web search, include the exact source URLs you actually relied on as a top-level "sources": [{"title": string, "url": string}] array; only real URLs from the search results — never invent one, and omit "sources" entirely if you didn’t search. Return ONLY JSON: {"verdict":"…","sources":[...]}.`,history:[],user:l,maxTokens:700,temperature:.3,thinkingLevel:`low`,tools:{webSearch:!0}},n),{text:d,sources:f}=Te(u.raw);return d?{text:d,at:r,grounded:(u.sources?.length??0)>0||f.length>0,...u.sources&&u.sources.length?{sources:u.sources}:{},...a?{tripwireId:a.id}:{}}:null}catch(e){return console.error(`[dashboards] analyzeMove failed`,e),null}}var U=`mavea-dash-opens-v1`,W=720*60*60*1e3;function De(e){return!!e&&typeof e==`object`}function Oe(e,t){if(!De(e))return{};let n=t-W,r={};for(let[t,i]of Object.entries(e)){if(!t||!Array.isArray(i))continue;let e=i.filter(e=>typeof e==`number`&&Number.isFinite(e)&&e>=n).slice(-30);e.length&&(r[t]=e)}return r}var G;function ke(e){try{if(typeof localStorage>`u`)return{};let t=localStorage.getItem(U);return t?Oe(JSON.parse(t),e):{}}catch{return{}}}function K(e=Date.now()){return G??=ke(e),G}function Ae(e){G=e;try{typeof localStorage<`u`&&localStorage.setItem(U,JSON.stringify(e))}catch{}}function je(e,t=Date.now()){if(!e)return;let n=K(t),r=[...n[e]??[],t].filter(e=>e>=t-W).slice(-30);Ae({...n,[e]:r})}function Me(e,t,n=Date.now()){return(K(n)[e]??[]).filter(e=>e>=t).length}function q(e){let t=(e??[]).slice(-3);if(t.length<3)return 0;let[n,r,i]=t;return n.value<r.value&&r.value<i.value?1:n.value>r.value&&r.value>i.value?-1:0}function Ne(e){let t=e.metrics.filter(e=>(e.history?.length??0)>=3);for(let n=0;n<t.length;n++)for(let r=n+1;r<t.length;r++){let i=t[n],a=t[r],o=q(i.history);if(o!==0&&o===q(a.history))return{text:`${i.label} and ${a.label} have moved together over the last three checks.`,dashboardIds:[e.id]}}return null}function Pe(e,t){let n=e.filter(e=>{let n=e.cadence.window;return!!n&&t>=n.startAt&&t<=n.endAt});if(n.length<2)return null;let[r,i]=n;return{text:`${r.title} and ${i.title} overlap right now — their checks are batched into shared searches while both are live.`,dashboardIds:[r.id,i.id]}}var J=5;function Fe(e){if(e.cadence.data!==`15min`&&e.cadence.data!==`hourly`)return null;let t=e.metrics.find(e=>(e.history?.length??0)>=J);if(!t?.history)return null;let n=t.history.slice(-5);return n.every(e=>e.value===n[0].value)?{text:`${t.label} hasn't moved across ${e.title}'s last ${J} checks.`,dashboardIds:[e.id]}:null}function Ie(e,t){let n=t.note?` ${t.note}`:``;return{text:`Sources disagreed on ${t.metricLabel}: ${t.readings.join(` vs `)}.${n}`,dashboardIds:[e.id]}}var Le=720*60*1e3;function Re(e,t,n){let r=n-Le;return e.some(e=>e.kind===`insight`&&e.at>=r&&e.text===t.text)}function ze(e,t,n,r=2){let i=[],a=Pe(e,n);a&&i.push(a);for(let t of e){let e=Ne(t);e&&i.push(e);let n=Fe(t);n&&i.push(n)}return i.filter(e=>!Re(t,e,n)).slice(0,r)}var Be=e({checkAllDashboardsNow:()=>et,readDashboardNow:()=>tt,refreshDashboardNow:()=>$e,runRefreshBatch:()=>$,selectTickTargets:()=>nt,useDashboardLoop:()=>rt,useVerdictPending:()=>We}),Ve=15e3,He=5*6e4,Y=new Set,X=new Set,Z=`mavea-dashboard-verdict-pending`;function Q(e,t){t?X.add(e):X.delete(e);try{typeof window<`u`&&typeof CustomEvent==`function`&&window.dispatchEvent(new CustomEvent(Z,{detail:e}))}catch{}}function Ue(e){return window.addEventListener(Z,e),()=>window.removeEventListener(Z,e)}function We(e){let t=(0,ae.c)(2),n;return t[0]===e?n=t[1]:(n=()=>X.has(e),t[0]=e,t[1]=n),(0,j.useSyncExternalStore)(Ue,n,Ge)}function Ge(){return!1}function Ke(e){try{return new URL(e).hostname.replace(/^www\./,``)}catch{return``}}function qe(e,t){return e.map(e=>{let n=t.perDashboard[e.d.id]??{values:{},widgets:{}},r=e.metrics.find(e=>n.values[e.id]);return r?`${e.d.title} at ${n.values[r.id].raw}`:e.targets.some(e=>n.widgets[e.id])?`${e.d.title} updated`:t.grounded?`${e.d.title} checked`:`${e.d.title} — couldn't verify`}).join(` · `)}var Je=`Daily search budget reached — auto-checks paused until midnight. Manual checks still work.`;function Ye(e){let t=new Date(e);return t.setHours(0,0,0,0),t.getTime()}function Xe(e){let t=Ye(e);y().some(e=>e.kind===`savings`&&e.at>=t&&e.text===Je)||E({kind:`savings`,text:Je,dashboardIds:[],searches:0})}async function Ze(e,t,n,r,i,a,o=!1){let{d:s}=e,l=Object.keys(t.values).length>0||Object.keys(t.widgets).length>0?`updated`:o?`unverified`:`no-change`,u=s.metrics.map(e=>{let n=t.values[e.id];return n?{...e,lastValue:n.value}:e}),m={...s,metrics:u},{tripwires:h,newlyTriggered:g}=N(m,n),_=s.oneShotAt!==void 0&&s.oneShotAt<=a;f(s.id,{values:Object.entries(t.values).map(([e,t])=>({metricId:e,value:t.value,raw:t.raw,origin:`search`})),blocks:Object.entries(t.widgets).map(([e,t])=>({widgetId:e,block:t})),tripwires:h,outcome:l,...t.expects?{expects:t.expects}:{},...t.grade?{grade:t.grade}:{},..._?{consumedOneShot:!0}:{}},a),g.length&&(A(m,g),E({kind:`alert`,text:`${g.map(e=>e.label).join(`, `)} crossed the line you set.`,dashboardIds:[s.id],searches:0}),m.alerts.inApp&&T({dashboardId:s.id,dashboardTitle:s.title,tripwireLabel:g[0].label})),t.disagreement&&E({kind:`insight`,text:Ie(s,t.disagreement).text,dashboardIds:[s.id],searches:0});let v={...s,tripwires:h},y=F(v,g,a);if(y.fire&&y.trigger&&i){Q(s.id,!0);let e=await H(v,y.trigger,r,a);Q(s.id,!1),e?p(s.id,e,a):d(s.id,a,`Mavéa couldn't get a fresh read — will try again.`),c(s.id,a),E({kind:y.trigger===`scheduled`?`check`:`alert`,text:e?e.text.slice(0,200):`Couldn't get a fresh read on ${s.title}.`,dashboardIds:[s.id],searches:1,...e?.sources?.length?{sourceCount:e.sources.length}:{}})}else y.fire&&y.trigger&&c(s.id,a);return l}async function $(e,t,n,r={}){let i=Date.now(),a={},o=B(e),s=e.filter(e=>!o.some(t=>t.d.id===e.id)),c={};for(let t of e)c[t.id]=Object.fromEntries(t.metrics.map(e=>[e.id,e.lastValue]));for(let e of s)a[e.id]=await Ze({d:e,metrics:[],targets:[]},{values:{},widgets:{}},c[e.id],t,n,i);if(o.length===0||!n)return a;let l=o.map(e=>e.d.id);b(l,!0);try{let e=await V(o,t,r.briefing?{briefingContext:r.briefing.context}:{});if(!e.ok){for(let e of o)m(e.d.id,i+He),a[e.d.id]=`failed`;return a}for(let r of o){let o=e.perDashboard[r.d.id]??{values:{},widgets:{}};a[r.d.id]=await Ze(r,o,c[r.d.id],t,n,i,!e.grounded)}r.briefing&&e.briefing&&(v(e.briefing,r.briefing.allDashboards,i),E({kind:`briefing`,text:`Morning briefing compiled — folded into this batched search.`,dashboardIds:o.map(e=>e.d.id),searches:0}));let s=[...new Set(e.sources.map(e=>Ke(e.url)))].filter(Boolean);return E({kind:`check`,text:qe(o,e),dashboardIds:o.map(e=>e.d.id),...s.length?{domains:s}:{},searches:1,...e.sources.length?{sourceCount:e.sources.length}:{},...r.manual?{manual:!0}:{}}),a}finally{b(l,!1)}}async function Qe(e,t,n,r){let{tripwires:i,newlyTriggered:a}=N(e);l(e.id,i,r),a.length&&(A(e,a),e.alerts.inApp&&T({dashboardId:e.id,dashboardTitle:e.title,tripwireLabel:a[0].label}));let o={...e,tripwires:i},s=F(o,a,r);if(!s.fire||!s.trigger||!n)return;Q(e.id,!0);let u=await H(o,s.trigger,t,r);Q(e.id,!1),u?p(e.id,u,r):d(e.id,r,`Mavéa couldn't get a fresh read — will try again.`),c(e.id,r),E({kind:s.trigger===`scheduled`?`check`:`alert`,text:u?u.text.slice(0,200):`Couldn't get a fresh read on ${e.title}.`,dashboardIds:[e.id],searches:1,...u?.sources?.length?{sourceCount:u.sources.length}:{}})}async function $e(e){if(Y.has(e))return`busy`;let t=h(e);if(!t)return`busy`;let n=g(_());if(!n.apiKey)return`no-model`;Y.add(e);try{return(await $([t],n,!0,{manual:!0}))[e]===`failed`?`failed`:`done`}finally{Y.delete(e)}}async function et(){let e=g(_());if(!e.apiKey)return`no-model`;let t=u().filter(D),n=t.filter(e=>!Y.has(e.id));if(n.length===0)return t.length>0?`busy`:`done`;for(;n.length>0;){let t=B(n);if(t.length===0)break;let r=t.map(e=>e.d.id);r.forEach(e=>Y.add(e));try{await $(t.map(e=>e.d),e,!0,{manual:!0})}finally{r.forEach(e=>Y.delete(e))}n=n.filter(e=>!r.includes(e.id))}return`done`}async function tt(e){if(X.has(e))return`busy`;let t=h(e);if(!t)return`failed`;let n=g(_());if(!n.apiKey)return`no-model`;let r=Date.now(),i=t.tripwires.find(e=>e.state===`TRIGGERED`),a=i??`scheduled`;Q(e,!0);let o;try{o=await H(t,a,n,r)}finally{Q(e,!1)}return o?p(e,o,r):d(e,r,`Mavéa couldn’t get a fresh read — try again in a moment.`),c(e,r),E({kind:i?`alert`:`check`,text:o?o.text.slice(0,200):`Couldn’t get a fresh read on ${t.title}.`,dashboardIds:[e],searches:1,manual:!0,...o?.sources?.length?{sourceCount:o.sources.length}:{}}),o?`done`:`failed`}function nt(e,t,n,r,i){let a=de(e,r).filter(e=>!i.has(e.id)),o=fe(e,r);o&&i.has(o.id)&&(o=null);let s=C(t,n,r),c=!1;s.paused&&(c=a.some(D)||!!o,a=a.filter(e=>!D(e)),o=null);let l=B(a);return o&&l.some(e=>e.d.id===o.id)&&(o=null),{dueData:a,dueAi:o,pausedAndBlocked:c}}function rt(){let e=(0,j.useRef)(!1);(0,j.useEffect)(()=>{let t=!0,n=async()=>{if(e.current||!t||typeof document<`u`&&document.visibilityState!==`visible`)return;let n=g(_()),r=!!n.apiKey,i=Date.now(),a=u(),o=S(),s=y();ee(a,s,e=>te(s,e,i),e=>Me(e,i-10080*60*1e3,i),i);for(let e of ze(a,s,i))E({kind:`insight`,text:e.text,dashboardIds:e.dashboardIds,searches:0});let{dueData:c,dueAi:l,pausedAndBlocked:d}=nt(a,s,o.dailySearchBudget,i,Y);d&&Xe(i);let f=r&&o.briefingEnabled&&w(i);if(c.length===0&&!l){if(f&&!a.some(D)){let e=x(a,new Set);if(e){let t=await V([],n,{briefingContext:e});t.briefing&&(v(t.briefing,a,i),E({kind:`briefing`,text:`Morning briefing compiled.`,dashboardIds:[],searches:1}))}}return}e.current=!0,c.forEach(e=>Y.add(e.id)),l&&Y.add(l.id);try{if(c.length>0){let e=f?{context:x(a,new Set(B(c).map(e=>e.d.id))),allDashboards:a}:void 0;await $(c,n,r,e?{briefing:e}:{})}l&&await Qe(l,n,r,i)}finally{c.forEach(e=>Y.delete(e.id)),l&&Y.delete(l.id),e.current=!1}},r=window.setInterval(()=>void n(),Ve),i=()=>{document.visibilityState===`visible`&&n()};return document.addEventListener(`visibilitychange`,i),n(),()=>{t=!1,window.clearInterval(r),document.removeEventListener(`visibilitychange`,i)}},[])}export{We as a,oe as c,Be as i,M as l,$e as n,je as o,rt as r,N as s,tt as t};
5
+ `),f={type:`object`,properties:{dashboards:{type:`array`,description:`One object per DASHBOARD section above, in the same order, each echoing its id.`,items:{type:`object`,properties:{id:{type:`string`},values:{type:`object`,description:`Map of VALUE label -> current numeric value, or null.`},blocks:{type:`array`,description:`Exactly one block per BLOCK item for this dashboard, in order.`,items:{type:`object`,properties:{type:{type:`string`},props:{type:`object`}},required:[`type`,`props`]}},expects:{type:`string`,description:`A short "by next check" expectation — omit if nothing here is genuinely predictable.`},grade:{type:`object`,description:`ONLY when this dashboard has a PREVIOUS EXPECTATION line.`,properties:{result:{type:`string`},note:{type:`string`}}},disagreement:{type:`object`,description:`ONLY when two real sources genuinely disagreed on a value.`,properties:{metricLabel:{type:`string`},readings:{type:`array`,items:{type:`string`}},note:{type:`string`}}},liveWindow:{type:`object`,description:`ONLY when search revealed a real, bounded live-event window.`,properties:{start:{type:`string`},end:{type:`string`},label:{type:`string`}}}},required:[`id`]}},...n.briefingContext?{briefing:{type:`string`,description:`2-4 sentences summarizing ALL dashboards (this batch + the given CONTEXT), real values only; use [[shown|said]] pronunciation twins for speech-risky terms.`}}:{},sources:{type:`array`,description:`OMIT unless this call used web search. Real source URLs actually relied on — never invented.`,items:{type:`object`,properties:{title:{type:`string`},url:{type:`string`}},required:[`title`,`url`]}}},required:[`dashboards`]},p=Math.min(14e3,Math.max(3e3,1200+e.reduce((e,t)=>e+z(t.d,t.metrics,t.targets),0)+(n.briefingContext?700:0))),m=k()+` You are checking several standing trackers at once. Return ONLY JSON: {"dashboards": [{"id": string, "values": {...}, "blocks": [...], "expects"?: string, "grade"?: {...}, "disagreement"?: {...}, "liveWindow"?: {...}}, ...], `+(n.briefingContext?`"briefing": string, `:``)+`"sources": [...]}. Use web search for every DASHBOARD section below — never invent a value or detail. ECHO each dashboard's exact "id" so results map back correctly. For a VALUE item, give its CURRENT real number (no units) or null if unverifiable. For a BLOCK item, produce exactly one block whose "type" is the EXACT bracketed type given — never substitute a different one — matching its current content for detail level (real names, numbers, dates). CRITICAL — a "current content" showing something live, in progress, or upcoming is NOT necessarily still true right now: explicitly check whether it has SINCE concluded and report the concluding outcome if so, reasoning from the date/time above which of upcoming/live/finished applies at this exact moment. If a dashboard has a PREVIOUS EXPECTATION line, grade it honestly ("hit" it came true, "miss" it did not, "unclear" if genuinely unknowable yet) — grade ONLY dashboards that have this line, never invent a grade otherwise. Offer a fresh "expects" only when something is genuinely predictable by the next check; most checks have nothing worth predicting, so omit it far more often than not. If two real sources genuinely disagree on a value, report it in "disagreement" instead of silently picking one. If search reveals a real bounded live-event window (a match's actual start/end time) for a dashboard, report it in "liveWindow" with ISO start/end — never invent a time. `+(n.briefingContext?`Also compose "briefing": 2-4 warm, concrete sentences summarizing ALL dashboards — this batch PLUS the CONTEXT lines below (already-known values — do NOT search for those, use them as given) — real values only, never memory. The briefing is displayed and spoken: preserve normal spelling on the left, 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. `:``)+`If search genuinely turns up nothing more specific than what is already shown, say so honestly rather than inventing new specifics or repeating the old ones as if just confirmed. CITE SOURCES — every real URL actually relied on, in "sources"; omit it entirely if you used no search.`,h=`Use web search.\n\n${d}`+(n.briefingContext?`\n\nCONTEXT (already known — do not search these):\n${n.briefingContext}`:``),g=e=>c.generate({system:e?m+Ce:m,history:[],user:h,maxTokens:p,temperature:.15,thinkingLevel:e?`high`:`low`,tools:{webSearch:!0},format:f,...u?{blockTypes:[...l],complexity:`brief`}:{}},t).then(e=>({rr:e,grounded:L(e,a(O(e.raw)))})),_=await g(!1),v=1;!_.grounded&&e.length>0&&(_=await g(!0),v=2);let{rr:y}=_,b=a(O(y.raw)),x=L(y,b),S=be(b,e),C=u?(await i(async()=>{let{validateLiveResponse:e}=await import(`./liveSchema-Df33WFbg.js`);return{validateLiveResponse:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18]))).validateLiveResponse:null,w={};for(let t of e){let e=S[t.d.id]??{},n=R();if(x&&t.metrics.length>0){let r=a(e.values),i=new Map(Object.entries(r).map(([e,t])=>[M(e),t]));for(let e of t.metrics){let t=ne(r[e.label]??i.get(M(e.label)));t!==null&&(n.values[e.id]={value:t,raw:`${t}${e.unit??``}`})}}if(t.targets.length>0&&C){let r=o(e.blocks);t.targets.forEach((e,t)=>{let i=r[t];if(!i)return;let a=C({narration:``,title:`x`,sub:``,blocks:[i]},new Set([e.block.type]),1,x)?.blocks[0];a&&a.type===e.block.type&&(n.widgets[e.id]=a)})}if(x){let r=ie(e.expects);if(r&&(n.expects=r),t.d.prediction){let t=re(e.grade);t&&(n.grade=t)}let i=xe(e.disagreement);i&&(n.disagreement=i);let a=Se(e.liveWindow);a&&(n.liveWindow=a)}w[t.d.id]=n}Object.values(w).every(e=>Object.keys(e.values).length===0&&Object.keys(e.widgets).length===0&&!e.expects)&&console.warn(`[dashboards] refreshDashboards got a response but nothing parsed out of it for any dashboard (${x?`empty/unparseable`:`ungrounded after ${v} attempt${v>1?`s`:``}, discarded`})`,{dashboardIds:e.map(e=>e.d.id),raw:y.raw});let T=n.briefingContext&&x&&typeof b.briefing==`string`&&b.briefing.trim()?b.briefing.trim():void 0;return{ok:!0,grounded:x,perDashboard:w,sources:y.sources&&y.sources.length?y.sources:I(b),attempts:v,...T?{briefing:T}:{}}}catch(t){console.error(`[dashboards] refreshDashboards failed`,t);let n={};for(let t of e)n[t.d.id]=R();return{ok:!1,grounded:!1,perDashboard:n,sources:[],attempts:0}}}function we(e){let t=Array.isArray(e?.sources)?e.sources:[],n=[];for(let e of t){let t=e&&typeof e==`object`?e:{};typeof t.title==`string`&&typeof t.url==`string`&&n.push({title:t.title,url:t.url})}return n}function Te(e){try{let t=typeof e==`string`?JSON.parse(Ee(e)):e,n=t?.verdict;return{text:typeof n==`string`&&n.trim()?n.trim():null,sources:we(t)}}catch{return{text:typeof e==`string`&&e.trim()?e.trim():null,sources:[]}}}function Ee(e){let t=e.indexOf(`{`),n=e.lastIndexOf(`}`);return t>=0&&n>t?e.slice(t,n+1):e}async function H(e,t,n,r=Date.now()){try{let i=s(n.provider),a=t===`scheduled`?null:t,o=a?e.metrics.find(e=>e.id===a.metricId):void 0,c=e.metrics.map(e=>`${e.label}=${e.lastRaw??`—`}`).join(`, `),l=a?`A line the user set just crossed: "${a.label}" — ${o?.label??a.label} is now ${o?.lastRaw??a.brokenValue??`past the threshold`}. Currently tracked: ${c}. Using web search, say briefly and honestly what the latest numbers show and whether this reads as a real move or just noise.`:`Currently tracked: ${c}. Using web search, give a brief, honest read: what the latest numbers show and what has materially changed since the last check.`,u=await i.generate({system:k()+` You give a brief, honest read on the latest numbers a user is tracking: what they show now, what has materially changed since the last check, and — if a specific line was crossed — whether that looks like a real move or noise. One or two plain sentences. Never invent data. CITE YOUR SOURCES — whenever you used web search, include the exact source URLs you actually relied on as a top-level "sources": [{"title": string, "url": string}] array; only real URLs from the search results — never invent one, and omit "sources" entirely if you didn’t search. Return ONLY JSON: {"verdict":"…","sources":[...]}.`,history:[],user:l,maxTokens:700,temperature:.3,thinkingLevel:`low`,tools:{webSearch:!0}},n),{text:d,sources:f}=Te(u.raw);return d?{text:d,at:r,grounded:(u.sources?.length??0)>0||f.length>0,...u.sources&&u.sources.length?{sources:u.sources}:{},...a?{tripwireId:a.id}:{}}:null}catch(e){return console.error(`[dashboards] analyzeMove failed`,e),null}}var U=`mavea-dash-opens-v1`,W=720*60*60*1e3;function De(e){return!!e&&typeof e==`object`}function Oe(e,t){if(!De(e))return{};let n=t-W,r={};for(let[t,i]of Object.entries(e)){if(!t||!Array.isArray(i))continue;let e=i.filter(e=>typeof e==`number`&&Number.isFinite(e)&&e>=n).slice(-30);e.length&&(r[t]=e)}return r}var G;function ke(e){try{if(typeof localStorage>`u`)return{};let t=localStorage.getItem(U);return t?Oe(JSON.parse(t),e):{}}catch{return{}}}function K(e=Date.now()){return G??=ke(e),G}function Ae(e){G=e;try{typeof localStorage<`u`&&localStorage.setItem(U,JSON.stringify(e))}catch{}}function je(e,t=Date.now()){if(!e)return;let n=K(t),r=[...n[e]??[],t].filter(e=>e>=t-W).slice(-30);Ae({...n,[e]:r})}function Me(e,t,n=Date.now()){return(K(n)[e]??[]).filter(e=>e>=t).length}function q(e){let t=(e??[]).slice(-3);if(t.length<3)return 0;let[n,r,i]=t;return n.value<r.value&&r.value<i.value?1:n.value>r.value&&r.value>i.value?-1:0}function Ne(e){let t=e.metrics.filter(e=>(e.history?.length??0)>=3);for(let n=0;n<t.length;n++)for(let r=n+1;r<t.length;r++){let i=t[n],a=t[r],o=q(i.history);if(o!==0&&o===q(a.history))return{text:`${i.label} and ${a.label} have moved together over the last three checks.`,dashboardIds:[e.id]}}return null}function Pe(e,t){let n=e.filter(e=>{let n=e.cadence.window;return!!n&&t>=n.startAt&&t<=n.endAt});if(n.length<2)return null;let[r,i]=n;return{text:`${r.title} and ${i.title} overlap right now — their checks are batched into shared searches while both are live.`,dashboardIds:[r.id,i.id]}}var J=5;function Fe(e){if(e.cadence.data!==`15min`&&e.cadence.data!==`hourly`)return null;let t=e.metrics.find(e=>(e.history?.length??0)>=J);if(!t?.history)return null;let n=t.history.slice(-5);return n.every(e=>e.value===n[0].value)?{text:`${t.label} hasn't moved across ${e.title}'s last ${J} checks.`,dashboardIds:[e.id]}:null}function Ie(e,t){let n=t.note?` ${t.note}`:``;return{text:`Sources disagreed on ${t.metricLabel}: ${t.readings.join(` vs `)}.${n}`,dashboardIds:[e.id]}}var Le=720*60*1e3;function Re(e,t,n){let r=n-Le;return e.some(e=>e.kind===`insight`&&e.at>=r&&e.text===t.text)}function ze(e,t,n,r=2){let i=[],a=Pe(e,n);a&&i.push(a);for(let t of e){let e=Ne(t);e&&i.push(e);let n=Fe(t);n&&i.push(n)}return i.filter(e=>!Re(t,e,n)).slice(0,r)}var Be=e({checkAllDashboardsNow:()=>et,readDashboardNow:()=>tt,refreshDashboardNow:()=>$e,runRefreshBatch:()=>$,selectTickTargets:()=>nt,useDashboardLoop:()=>rt,useVerdictPending:()=>We}),Ve=15e3,He=5*6e4,Y=new Set,X=new Set,Z=`mavea-dashboard-verdict-pending`;function Q(e,t){t?X.add(e):X.delete(e);try{typeof window<`u`&&typeof CustomEvent==`function`&&window.dispatchEvent(new CustomEvent(Z,{detail:e}))}catch{}}function Ue(e){return window.addEventListener(Z,e),()=>window.removeEventListener(Z,e)}function We(e){let t=(0,ae.c)(2),n;return t[0]===e?n=t[1]:(n=()=>X.has(e),t[0]=e,t[1]=n),(0,j.useSyncExternalStore)(Ue,n,Ge)}function Ge(){return!1}function Ke(e){try{return new URL(e).hostname.replace(/^www\./,``)}catch{return``}}function qe(e,t){return e.map(e=>{let n=t.perDashboard[e.d.id]??{values:{},widgets:{}},r=e.metrics.find(e=>n.values[e.id]);return r?`${e.d.title} at ${n.values[r.id].raw}`:e.targets.some(e=>n.widgets[e.id])?`${e.d.title} updated`:t.grounded?`${e.d.title} checked`:`${e.d.title} — couldn't verify`}).join(` · `)}var Je=`Daily search budget reached — auto-checks paused until midnight. Manual checks still work.`;function Ye(e){let t=new Date(e);return t.setHours(0,0,0,0),t.getTime()}function Xe(e){let t=Ye(e);y().some(e=>e.kind===`savings`&&e.at>=t&&e.text===Je)||E({kind:`savings`,text:Je,dashboardIds:[],searches:0})}async function Ze(e,t,n,r,i,a,o=!1){let{d:s}=e,l=Object.keys(t.values).length>0||Object.keys(t.widgets).length>0?`updated`:o?`unverified`:`no-change`,u=s.metrics.map(e=>{let n=t.values[e.id];return n?{...e,lastValue:n.value}:e}),m={...s,metrics:u},{tripwires:h,newlyTriggered:g}=N(m,n),_=s.oneShotAt!==void 0&&s.oneShotAt<=a;f(s.id,{values:Object.entries(t.values).map(([e,t])=>({metricId:e,value:t.value,raw:t.raw,origin:`search`})),blocks:Object.entries(t.widgets).map(([e,t])=>({widgetId:e,block:t})),tripwires:h,outcome:l,...t.expects?{expects:t.expects}:{},...t.grade?{grade:t.grade}:{},..._?{consumedOneShot:!0}:{}},a),g.length&&(A(m,g),E({kind:`alert`,text:`${g.map(e=>e.label).join(`, `)} crossed the line you set.`,dashboardIds:[s.id],searches:0}),m.alerts.inApp&&T({dashboardId:s.id,dashboardTitle:s.title,tripwireLabel:g[0].label})),t.disagreement&&E({kind:`insight`,text:Ie(s,t.disagreement).text,dashboardIds:[s.id],searches:0});let v={...s,tripwires:h},y=F(v,g,a);if(y.fire&&y.trigger&&i){Q(s.id,!0);let e=await H(v,y.trigger,r,a);Q(s.id,!1),e?p(s.id,e,a):d(s.id,a,`Mavéa couldn't get a fresh read — will try again.`),c(s.id,a),E({kind:y.trigger===`scheduled`?`check`:`alert`,text:e?e.text.slice(0,200):`Couldn't get a fresh read on ${s.title}.`,dashboardIds:[s.id],searches:1,...e?.sources?.length?{sourceCount:e.sources.length}:{}})}else y.fire&&y.trigger&&c(s.id,a);return l}async function $(e,t,n,r={}){let i=Date.now(),a={},o=B(e),s=e.filter(e=>!o.some(t=>t.d.id===e.id)),c={};for(let t of e)c[t.id]=Object.fromEntries(t.metrics.map(e=>[e.id,e.lastValue]));for(let e of s)a[e.id]=await Ze({d:e,metrics:[],targets:[]},{values:{},widgets:{}},c[e.id],t,n,i);if(o.length===0||!n)return a;let l=o.map(e=>e.d.id);b(l,!0);try{let e=await V(o,t,r.briefing?{briefingContext:r.briefing.context}:{});if(!e.ok){for(let e of o)m(e.d.id,i+He),a[e.d.id]=`failed`;return a}for(let r of o){let o=e.perDashboard[r.d.id]??{values:{},widgets:{}};a[r.d.id]=await Ze(r,o,c[r.d.id],t,n,i,!e.grounded)}r.briefing&&e.briefing&&(v(e.briefing,r.briefing.allDashboards,i),E({kind:`briefing`,text:`Morning briefing compiled — folded into this batched search.`,dashboardIds:o.map(e=>e.d.id),searches:0}));let s=[...new Set(e.sources.map(e=>Ke(e.url)))].filter(Boolean);return E({kind:`check`,text:qe(o,e),dashboardIds:o.map(e=>e.d.id),...s.length?{domains:s}:{},searches:1,...e.sources.length?{sourceCount:e.sources.length}:{},...r.manual?{manual:!0}:{}}),a}finally{b(l,!1)}}async function Qe(e,t,n,r){let{tripwires:i,newlyTriggered:a}=N(e);l(e.id,i,r),a.length&&(A(e,a),e.alerts.inApp&&T({dashboardId:e.id,dashboardTitle:e.title,tripwireLabel:a[0].label}));let o={...e,tripwires:i},s=F(o,a,r);if(!s.fire||!s.trigger||!n)return;Q(e.id,!0);let u=await H(o,s.trigger,t,r);Q(e.id,!1),u?p(e.id,u,r):d(e.id,r,`Mavéa couldn't get a fresh read — will try again.`),c(e.id,r),E({kind:s.trigger===`scheduled`?`check`:`alert`,text:u?u.text.slice(0,200):`Couldn't get a fresh read on ${e.title}.`,dashboardIds:[e.id],searches:1,...u?.sources?.length?{sourceCount:u.sources.length}:{}})}async function $e(e){if(Y.has(e))return`busy`;let t=h(e);if(!t)return`busy`;let n=g(_());if(!n.apiKey)return`no-model`;Y.add(e);try{return(await $([t],n,!0,{manual:!0}))[e]===`failed`?`failed`:`done`}finally{Y.delete(e)}}async function et(){let e=g(_());if(!e.apiKey)return`no-model`;let t=u().filter(D),n=t.filter(e=>!Y.has(e.id));if(n.length===0)return t.length>0?`busy`:`done`;for(;n.length>0;){let t=B(n);if(t.length===0)break;let r=t.map(e=>e.d.id);r.forEach(e=>Y.add(e));try{await $(t.map(e=>e.d),e,!0,{manual:!0})}finally{r.forEach(e=>Y.delete(e))}n=n.filter(e=>!r.includes(e.id))}return`done`}async function tt(e){if(X.has(e))return`busy`;let t=h(e);if(!t)return`failed`;let n=g(_());if(!n.apiKey)return`no-model`;let r=Date.now(),i=t.tripwires.find(e=>e.state===`TRIGGERED`),a=i??`scheduled`;Q(e,!0);let o;try{o=await H(t,a,n,r)}finally{Q(e,!1)}return o?p(e,o,r):d(e,r,`Mavéa couldn’t get a fresh read — try again in a moment.`),c(e,r),E({kind:i?`alert`:`check`,text:o?o.text.slice(0,200):`Couldn’t get a fresh read on ${t.title}.`,dashboardIds:[e],searches:1,manual:!0,...o?.sources?.length?{sourceCount:o.sources.length}:{}}),o?`done`:`failed`}function nt(e,t,n,r,i){let a=de(e,r).filter(e=>!i.has(e.id)),o=fe(e,r);o&&i.has(o.id)&&(o=null);let s=C(t,n,r),c=!1;s.paused&&(c=a.some(D)||!!o,a=a.filter(e=>!D(e)),o=null);let l=B(a);return o&&l.some(e=>e.d.id===o.id)&&(o=null),{dueData:a,dueAi:o,pausedAndBlocked:c}}function rt(){let e=(0,j.useRef)(!1);(0,j.useEffect)(()=>{let t=!0,n=async()=>{if(e.current||!t||typeof document<`u`&&document.visibilityState!==`visible`)return;let n=g(_()),r=!!n.apiKey,i=Date.now(),a=u(),o=S(),s=y();ee(a,s,e=>te(s,e,i),e=>Me(e,i-10080*60*1e3,i),i);for(let e of ze(a,s,i))E({kind:`insight`,text:e.text,dashboardIds:e.dashboardIds,searches:0});let{dueData:c,dueAi:l,pausedAndBlocked:d}=nt(a,s,o.dailySearchBudget,i,Y);d&&Xe(i);let f=r&&o.briefingEnabled&&w(i);if(c.length===0&&!l){if(f&&!a.some(D)){let e=x(a,new Set);if(e){let t=await V([],n,{briefingContext:e});t.briefing&&(v(t.briefing,a,i),E({kind:`briefing`,text:`Morning briefing compiled.`,dashboardIds:[],searches:1}))}}return}e.current=!0,c.forEach(e=>Y.add(e.id)),l&&Y.add(l.id);try{if(c.length>0){let e=f?{context:x(a,new Set(B(c).map(e=>e.d.id))),allDashboards:a}:void 0;await $(c,n,r,e?{briefing:e}:{})}l&&await Qe(l,n,r,i)}finally{c.forEach(e=>Y.delete(e.id)),l&&Y.delete(l.id),e.current=!1}},r=window.setInterval(()=>void n(),Ve),i=()=>{document.visibilityState===`visible`&&n()};return document.addEventListener(`visibilitychange`,i),n(),()=>{t=!1,window.clearInterval(r),document.removeEventListener(`visibilitychange`,i)}},[])}export{We as a,oe as c,Be as i,M as l,$e as n,je as o,rt as r,N as s,tt as t};
@@ -0,0 +1 @@
1
+ import{r as e}from"./chunk-BVpWp9h4.js";import{t}from"./react-BQSORdFI.js";import{ht as n}from"./index-DiPGFGsJ.js";import"./providers-wzm7E8Pa.js";import{i as r,n as i}from"./info-CiqHR5cs.js";import{r as a,t as o}from"./keyVault-DEsNh9FR.js";var s=e({LIVE_V2_EVENT:()=>f,exportConfig:()=>B,getLiveConfigV2:()=>D,hasModelConfigured:()=>z,importConfig:()=>V,resetLiveConfig:()=>I,setLiveConfigV2:()=>P,setProviderField:()=>L,toCaps:()=>H,toModelConfig:()=>R,useLiveConfig:()=>U}),c=n(),l=t(),u=`mavea-live-v2`,d=`mavea-live-v2:secrets`,f=u,p={provider:`gemini`,models:{},keys:{},rememberKey:!1,webSearch:!1,searchMode:`off`,quality:`balanced`,searchProvider:`wikipedia`,searchKeys:{},memoryEnabled:!1,autoSaveFlashcards:!1,generativeBlocks:!0,libraryEnabled:!0,teachMode:!1,annotationsEnabled:!0,morningBrief:!1,explainLevel:`standard`,fontScale:`normal`,pttKey:`Alt`,pttSide:`any`,voiceSpeed:1};function m(e){return e===`left`||e===`right`?e:`any`}var h=null;function g(e){return i.some(t=>t.id===e)?e:p.provider}function _(e){let t={};if(e&&typeof e==`object`)for(let n of i){let r=e[n.id];typeof r==`string`&&(t[n.id]=r)}return t}function v(e,t){return typeof e==`boolean`?e:t}function y(e){return typeof e==`number`&&Number.isFinite(e)?Math.min(2,Math.max(.75,e)):p.voiceSpeed}function b(e){return e===`wikipedia`||e===`brave`||e===`tavily`?e:p.searchProvider}function x(e){return e===`off`||e===`realtime`?e:void 0}function S(e){return e===`fast`||e===`balanced`||e===`thorough`?e:p.quality}function C(e){return e===`simple`||e===`deep`?e:p.explainLevel}function w(e){return e===`smaller`||e===`larger`?e:p.fontScale}function T(e){let t={};if(e&&typeof e==`object`)for(let n of[`brave`,`tavily`]){let r=e[n];typeof r==`string`&&(t[n]=r)}return t}function E(){try{if(typeof localStorage>`u`)return{...p};let e=localStorage.getItem(u);if(!e)return{...p};let t=JSON.parse(e),n=v(t.webSearch,p.webSearch),r=x(t.searchMode)??(t.searchMode===void 0&&n?`realtime`:`off`);return{provider:g(t.provider),models:_(t.models),keys:_(t.keys),rememberKey:v(t.rememberKey,p.rememberKey),webSearch:n,searchMode:r,quality:S(t.quality),searchProvider:b(t.searchProvider),searchKeys:T(t.searchKeys),memoryEnabled:v(t.memoryEnabled,p.memoryEnabled),autoSaveFlashcards:v(t.autoSaveFlashcards,p.autoSaveFlashcards),generativeBlocks:v(t.generativeBlocks,p.generativeBlocks),libraryEnabled:v(t.libraryEnabled,p.libraryEnabled),teachMode:v(t.teachMode,p.teachMode),annotationsEnabled:v(t.annotationsEnabled,p.annotationsEnabled),morningBrief:v(t.morningBrief,p.morningBrief),explainLevel:C(t.explainLevel),fontScale:w(t.fontScale),pttKey:typeof t.pttKey==`string`&&t.pttKey?t.pttKey:p.pttKey,pttSide:m(t.pttSide),voiceSpeed:y(t.voiceSpeed)}}catch{return{...p}}}function D(){return h||(h=E(),h)}function O(e){try{typeof window<`u`&&typeof CustomEvent==`function`&&window.dispatchEvent(new CustomEvent(u,{detail:e}))}catch{}}function k(e){return Object.keys(e.keys).length>0||Object.keys(e.searchKeys).length>0}var A=0,j=!1;async function M(e){let t=++A;if(!(typeof localStorage>`u`)){if(!e.rememberKey||!k(e)){if(e.rememberKey&&!j)return;try{localStorage.removeItem(d)}catch{}return}try{let n=await a(JSON.stringify({keys:e.keys,searchKeys:e.searchKeys}));if(t!==A)return;localStorage.setItem(d,n)}catch{if(t!==A)return;try{localStorage.removeItem(d)}catch{}}}}async function N(){if(typeof localStorage>`u`)return;let e;try{e=localStorage.getItem(d)}catch{j=!0;return}if(!e){j=!0;return}let t=A;try{let n=JSON.parse(await o(e));if(t===A){let e=D();h={...e,keys:{...e.keys,..._(n.keys)},searchKeys:{...e.searchKeys,...T(n.searchKeys)}},O(h)}}catch{}finally{j=!0}}function P(e){let t={...D(),...e};h=t;try{if(typeof localStorage<`u`){let e={...t,keys:{},searchKeys:{}};localStorage.setItem(u,JSON.stringify(e)),M(t)}}catch{}return O(t),t}function F(){typeof localStorage>`u`||(k(D())?(j=!0,P({})):N())}F();function I(){return P(p)}function L(e,t,n){let r=D(),i=t===`model`?`models`:`keys`;return P({[i]:{...r[i],[e]:n}})}function R(e){return{provider:e.provider,model:e.models[e.provider]||r(e.provider).defaultModel,apiKey:e.keys[e.provider]}}function z(e){let t=r(e.provider);return!!(e.models[e.provider]||t.defaultModel)&&(!t.needsKey||!!e.keys[e.provider])}function B(){let e={...D(),keys:{},searchKeys:{},rememberKey:!1};return JSON.stringify(e,null,2)}function V(e){try{let t=JSON.parse(e),n=v(t.webSearch,p.webSearch),r=x(t.searchMode)??(t.searchMode===void 0&&n?`realtime`:`off`);return P({provider:g(t.provider),models:_(t.models),keys:_(t.keys),rememberKey:!1,webSearch:n,searchMode:r,quality:S(t.quality),searchProvider:b(t.searchProvider),searchKeys:T(t.searchKeys),memoryEnabled:v(t.memoryEnabled,p.memoryEnabled),autoSaveFlashcards:v(t.autoSaveFlashcards,p.autoSaveFlashcards),generativeBlocks:v(t.generativeBlocks,p.generativeBlocks),libraryEnabled:v(t.libraryEnabled,p.libraryEnabled),teachMode:v(t.teachMode,p.teachMode),annotationsEnabled:v(t.annotationsEnabled,p.annotationsEnabled),morningBrief:v(t.morningBrief,p.morningBrief),explainLevel:C(t.explainLevel),fontScale:w(t.fontScale),pttKey:typeof t.pttKey==`string`&&t.pttKey?t.pttKey:p.pttKey,pttSide:m(t.pttSide),voiceSpeed:y(t.voiceSpeed)})}catch{throw Error(`Invalid config file — could not parse JSON.`)}}function H(e){return{webSearch:e.searchMode!==`off`,searchMode:e.searchMode,quality:e.quality,memoryEnabled:e.memoryEnabled,generativeBlocks:e.generativeBlocks,explainLevel:e.explainLevel}}function U(){let e=(0,c.c)(4),[t,n]=(0,l.useState)(W),r,i;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(r=()=>{if(typeof window>`u`)return;let e=()=>n(D());return window.addEventListener(f,e),e(),()=>window.removeEventListener(f,e)},i=[],e[0]=r,e[1]=i):(r=e[0],i=e[1]),(0,l.useEffect)(r,i);let a;return e[2]===t?a=e[3]:(a=[t,P],e[2]=t,e[3]=a),a}function W(){return D()}export{I as a,H as c,s as d,V as i,R as l,D as n,P as o,z as r,L as s,B as t,U as u};
@@ -1 +1 @@
1
- import{t as e}from"./react-BQSORdFI.js";import{ht as t}from"./index-y8GL67bB.js";var n=e(),r=t(),i={min:.1,max:4};function a(e,t=i){return Math.min(t.max,Math.max(t.min,e))}function o(e,t,n=0){let r=Math.max(e.w,1),i=Math.max(e.h,1),a=Math.max(t.w-n*2,1),o=Math.max(t.h-n*2,1);return Math.min(a/r,o/i)}function s(e,t,n=0,r=i){let s=a(o(e,t,n),r),c=e.x+e.w/2,l=e.y+e.h/2;return{x:t.w/2-c*s,y:t.h/2-l*s,scale:s}}function c(e,t,n,r,o=i){let s=a(e.scale*t,o);if(s===e.scale)return e;let c=(n-e.x)/e.scale,l=(r-e.y)/e.scale;return{x:n-c*s,y:r-l*s,scale:s}}function l(e,t,n){return{...e,x:e.x+t,y:e.y+n}}function u(e,t,n,r,o=i){let s=a(n,o);return{x:r.w/2-e*s,y:r.h/2-t*s,scale:s}}function d(e){return`translate(${Math.round(e.x)}px, ${Math.round(e.y)}px) scale(${e.scale})`}function f(e,t,n){return{x:(t-e.x)/e.scale,y:(n-e.y)/e.scale}}function p(e){let t=(0,r.c)(24),a;t[0]===e?a=t[1]:(a=e===void 0?{}:e,t[0]=e,t[1]=a);let o=a,u=o.clamp?.min??i.min,f=o.clamp?.max??i.max,p=o.margin??0,m=(0,n.useRef)(null),h;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(h={x:0,y:0,scale:1},t[2]=h):h=t[2];let[g,_]=(0,n.useState)(h),v=(0,n.useRef)(null),y;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(y=()=>{let e=m.current;if(!e)return null;let t=e.getBoundingClientRect();return t.width===0&&t.height===0?null:{w:t.width,h:t.height}},t[3]=y):y=t[3];let b=y,x;t[4]!==f||t[5]!==u||t[6]!==p?(x=e=>{if(v.current=e,!e)return;let t=b();t&&_(s(e,t,p,{min:u,max:f}))},t[4]=f,t[5]=u,t[6]=p,t[7]=x):x=t[7];let S=x,C;t[8]!==f||t[9]!==u?(C=(e,t,n)=>{let r=m.current;if(!r)return;let i=r.getBoundingClientRect();_(r=>c(r,e,t-i.left,n-i.top,{min:u,max:f}))},t[8]=f,t[9]=u,t[10]=C):C=t[10];let w=C,T;t[11]===Symbol.for(`react.memo_cache_sentinel`)?(T=(e,t)=>{_(n=>l(n,e,t))},t[11]=T):T=t[11];let E=T,D,O;t[12]!==f||t[13]!==u||t[14]!==p?(D=()=>{let e=m.current;if(!e||typeof ResizeObserver>`u`)return;let t=0,n=new ResizeObserver(()=>{cancelAnimationFrame(t),t=requestAnimationFrame(()=>{let t=v.current;if(!t)return;let n=e.getBoundingClientRect();n.width===0&&n.height===0||_(s(t,{w:n.width,h:n.height},p,{min:u,max:f}))})});return n.observe(e),()=>{cancelAnimationFrame(t),n.disconnect()}},O=[p,u,f],t[12]=f,t[13]=u,t[14]=p,t[15]=D,t[16]=O):(D=t[15],O=t[16]),(0,n.useEffect)(D,O);let k;t[17]===g?k=t[18]:(k=d(g),t[17]=g,t[18]=k);let A;return t[19]!==g||t[20]!==S||t[21]!==k||t[22]!==w?(A={camera:g,transform:k,viewportRef:m,fitTo:S,zoomAtClient:w,pan:E,setCamera:_},t[19]=g,t[20]=S,t[21]=k,t[22]=w,t[23]=A):A=t[23],A}export{u as n,f as r,p as t};
1
+ import{t as e}from"./react-BQSORdFI.js";import{ht as t}from"./index-DiPGFGsJ.js";var n=e(),r=t(),i={min:.1,max:4};function a(e,t=i){return Math.min(t.max,Math.max(t.min,e))}function o(e,t,n=0){let r=Math.max(e.w,1),i=Math.max(e.h,1),a=Math.max(t.w-n*2,1),o=Math.max(t.h-n*2,1);return Math.min(a/r,o/i)}function s(e,t,n=0,r=i){let s=a(o(e,t,n),r),c=e.x+e.w/2,l=e.y+e.h/2;return{x:t.w/2-c*s,y:t.h/2-l*s,scale:s}}function c(e,t,n,r,o=i){let s=a(e.scale*t,o);if(s===e.scale)return e;let c=(n-e.x)/e.scale,l=(r-e.y)/e.scale;return{x:n-c*s,y:r-l*s,scale:s}}function l(e,t,n){return{...e,x:e.x+t,y:e.y+n}}function u(e,t,n,r,o=i){let s=a(n,o);return{x:r.w/2-e*s,y:r.h/2-t*s,scale:s}}function d(e){return`translate(${Math.round(e.x)}px, ${Math.round(e.y)}px) scale(${e.scale})`}function f(e,t,n){return{x:(t-e.x)/e.scale,y:(n-e.y)/e.scale}}function p(e){let t=(0,r.c)(24),a;t[0]===e?a=t[1]:(a=e===void 0?{}:e,t[0]=e,t[1]=a);let o=a,u=o.clamp?.min??i.min,f=o.clamp?.max??i.max,p=o.margin??0,m=(0,n.useRef)(null),h;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(h={x:0,y:0,scale:1},t[2]=h):h=t[2];let[g,_]=(0,n.useState)(h),v=(0,n.useRef)(null),y;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(y=()=>{let e=m.current;if(!e)return null;let t=e.getBoundingClientRect();return t.width===0&&t.height===0?null:{w:t.width,h:t.height}},t[3]=y):y=t[3];let b=y,x;t[4]!==f||t[5]!==u||t[6]!==p?(x=e=>{if(v.current=e,!e)return;let t=b();t&&_(s(e,t,p,{min:u,max:f}))},t[4]=f,t[5]=u,t[6]=p,t[7]=x):x=t[7];let S=x,C;t[8]!==f||t[9]!==u?(C=(e,t,n)=>{let r=m.current;if(!r)return;let i=r.getBoundingClientRect();_(r=>c(r,e,t-i.left,n-i.top,{min:u,max:f}))},t[8]=f,t[9]=u,t[10]=C):C=t[10];let w=C,T;t[11]===Symbol.for(`react.memo_cache_sentinel`)?(T=(e,t)=>{_(n=>l(n,e,t))},t[11]=T):T=t[11];let E=T,D,O;t[12]!==f||t[13]!==u||t[14]!==p?(D=()=>{let e=m.current;if(!e||typeof ResizeObserver>`u`)return;let t=0,n=new ResizeObserver(()=>{cancelAnimationFrame(t),t=requestAnimationFrame(()=>{let t=v.current;if(!t)return;let n=e.getBoundingClientRect();n.width===0&&n.height===0||_(s(t,{w:n.width,h:n.height},p,{min:u,max:f}))})});return n.observe(e),()=>{cancelAnimationFrame(t),n.disconnect()}},O=[p,u,f],t[12]=f,t[13]=u,t[14]=p,t[15]=D,t[16]=O):(D=t[15],O=t[16]),(0,n.useEffect)(D,O);let k;t[17]===g?k=t[18]:(k=d(g),t[17]=g,t[18]=k);let A;return t[19]!==g||t[20]!==S||t[21]!==k||t[22]!==w?(A={camera:g,transform:k,viewportRef:m,fitTo:S,zoomAtClient:w,pan:E,setCamera:_},t[19]=g,t[20]=S,t[21]=k,t[22]=w,t[23]=A):A=t[23],A}export{u as n,f as r,p as t};
@@ -1 +1 @@
1
- import{t as e}from"./react-BQSORdFI.js";import{s as t}from"./CanvasSkeleton-BZZPCuRZ.js";var n=e();function r(e,r,i,a=1700){let o=(0,n.useMemo)(t,[]);(0,n.useEffect)(()=>{if(!e||o||r<2)return;i(0);let t=0,n=window.setInterval(()=>{t=(t+1)%r,i(t)},a);return()=>window.clearInterval(n)},[e,o,r,a,i])}export{r as t};
1
+ import{t as e}from"./react-BQSORdFI.js";import{s as t}from"./CanvasSkeleton-CqvzF0Ix.js";var n=e();function r(e,r,i,a=1700){let o=(0,n.useMemo)(t,[]);(0,n.useEffect)(()=>{if(!e||o||r<2)return;i(0);let t=0,n=window.setInterval(()=>{t=(t+1)%r,i(t)},a);return()=>window.clearInterval(n)},[e,o,r,a,i])}export{r as t};
@@ -1 +1 @@
1
- import{t as e}from"./react-BQSORdFI.js";import{ht as t}from"./index-y8GL67bB.js";import{t as n}from"./store-DXmC_fP2.js";var r=t(),i=e(),a=`#/flashcards`;function o(e){if(!e.startsWith(a))return{view:`gallery`};let t=e.slice(12).replace(/^\//,``).split(`/`).filter(Boolean);return t.length===0?{view:`gallery`}:t[0]===`deck`&&t[1]?{view:`deck`,deck:decodeURIComponent(t[1])}:{view:`gallery`}}var s={gallery:a,deck:e=>`${a}/deck/${encodeURIComponent(e)}`};function c(){let e=(0,r.c)(2),[t,n]=(0,i.useState)(l),a,o;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(a=()=>{let e=()=>n(window.location.hash);return window.addEventListener(`hashchange`,e),()=>window.removeEventListener(`hashchange`,e)},o=[],e[0]=a,e[1]=o):(a=e[0],o=e[1]),(0,i.useEffect)(a,o),t}function l(){return typeof window<`u`?window.location.hash:``}function u(){let e=(0,r.c)(2),[t,a]=(0,i.useState)(0),o,s;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(o=()=>{if(typeof window>`u`)return;let e=()=>a(d);return window.addEventListener(n,e),()=>window.removeEventListener(n,e)},s=[],e[0]=o,e[1]=s):(o=e[0],s=e[1]),(0,i.useEffect)(o,s),t}function d(e){return e+1}export{c as i,s as n,o as r,u as t};
1
+ import{t as e}from"./react-BQSORdFI.js";import{ht as t}from"./index-DiPGFGsJ.js";import{t as n}from"./store-DXmC_fP2.js";var r=t(),i=e(),a=`#/flashcards`;function o(e){if(!e.startsWith(a))return{view:`gallery`};let t=e.slice(12).replace(/^\//,``).split(`/`).filter(Boolean);return t.length===0?{view:`gallery`}:t[0]===`deck`&&t[1]?{view:`deck`,deck:decodeURIComponent(t[1])}:{view:`gallery`}}var s={gallery:a,deck:e=>`${a}/deck/${encodeURIComponent(e)}`};function c(){let e=(0,r.c)(2),[t,n]=(0,i.useState)(l),a,o;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(a=()=>{let e=()=>n(window.location.hash);return window.addEventListener(`hashchange`,e),()=>window.removeEventListener(`hashchange`,e)},o=[],e[0]=a,e[1]=o):(a=e[0],o=e[1]),(0,i.useEffect)(a,o),t}function l(){return typeof window<`u`?window.location.hash:``}function u(){let e=(0,r.c)(2),[t,a]=(0,i.useState)(0),o,s;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(o=()=>{if(typeof window>`u`)return;let e=()=>a(d);return window.addEventListener(n,e),()=>window.removeEventListener(n,e)},s=[],e[0]=o,e[1]=s):(o=e[0],s=e[1]),(0,i.useEffect)(o,s),t}function d(e){return e+1}export{c as i,s as n,o as r,u as t};
@@ -1 +1 @@
1
- import{t as e}from"./react-BQSORdFI.js";import{t}from"./jsx-runtime-DaSxXjOY.js";import{C as n,D as r,E as i,L as a,M as o,N as s,O as c,P as l,T as u,ht as d,x as f}from"./index-y8GL67bB.js";import{l as p}from"./store-4JNNn732.js";import{n as m,t as h}from"./contentVault-DzTYWcbD.js";import{r as g,t as _}from"./queue-J4h7E3uc.js";import{u as v}from"./useLiveConfig-X9Wxh90k.js";import{a as y,i as b,o as x,t as S}from"./store-DXmC_fP2.js";var C=e(),w=d(),T=t(),E={"15min":15,hourly:60,"6h":360,daily:1440,manual:1/0},D={daily:1440,weekly:10080,"on-change":1/0,manual:1/0};function O(e,t){return Number.isFinite(t)?e+t*6e4:2**53-1}function ee(e){return e===`manual`?0:Math.round(720*60/E[e])}function k(e,t){let n=e.window;if(n){if(t<n.startAt)return n.startAt;if(t>n.endAt)return 2**53-1}return O(t,E[e.data])}var A=`mavea-dashboards-v1`,j=A,te=`${A}:quota`,ne=24,re=4096,ie=60,M=null,N=0;function P(){try{let e=globalThis.crypto;if(e?.randomUUID)return e.randomUUID()}catch{}return N+=1,`dash-${N.toString(36)}-${Math.floor(Math.random()*1e9).toString(36)}`}function ae(e){let t=JSON.stringify(e,(e,t)=>typeof t==`string`&&t.length>re&&t.startsWith(`data:`)?``:t);return JSON.parse(t)}function F(e){return!!e&&typeof e==`object`}function I(e,t){return typeof e==`number`&&Number.isFinite(e)?e:t}function L(e,t=``){return typeof e==`string`?e:t}function oe(e){return e===`5min`?`15min`:L(e,`manual`)}function se(e){if(!F(e))return null;let t=e.at,n=e.value;return typeof t!=`number`||!Number.isFinite(t)||typeof n!=`number`||!Number.isFinite(n)?null:{at:t,value:n}}function ce(e){if(!F(e))return null;let t=(Array.isArray(e.history)?e.history:[]).map(se).filter(e=>e!==null).slice(-60);return{...e,history:t.length?t:void 0}}function le(e){if(!F(e))return;let t=e.startAt,n=e.endAt;if(!(typeof t!=`number`||!Number.isFinite(t))&&!(typeof n!=`number`||!Number.isFinite(n)||n<=t))return{label:L(e.label),startAt:t,endAt:n,origin:e.origin===`search`?`search`:`user`}}function ue(e){if(!(!F(e)||typeof e.text!=`string`||!e.text))return{text:e.text,at:I(e.at,0)}}function de(e){if(!Array.isArray(e))return[];let t=[];for(let n of e){if(!F(n)||typeof n.expected!=`string`||!n.expected)continue;let e=n.result;e!==`hit`&&e!==`miss`&&e!==`unclear`||t.push({at:I(n.at,0),expected:n.expected,result:e,...typeof n.note==`string`&&n.note?{note:n.note}:{}})}return t.slice(-20)}function fe(e,t){if(!e.window||t<=e.window.endAt)return e;let{window:n,...r}=e;return r}var R=new Set([`thesis`,`alignmentgauge`,`standingalerts`,`sourceslineage`]);function pe(e,t,n){let r=n||t;return r?e.map(e=>{if(e.refreshQuery?.trim()||e.metricId||R.has(e.block.type))return e;let t=e.block.props?.title,n=typeof t==`string`&&t.trim()?`${r} — ${t.trim()}`:r;return{...e,refreshQuery:n}}):e}function me(e){if(!F(e))return null;let t=L(e.id);if(!t)return null;let n=F(e.thesis)?e.thesis:null,r=Array.isArray(e.widgets)?e.widgets.filter(e=>F(e)&&F(e.block)):[],i=F(e.cadence)?e.cadence:{},a=F(e.alerts)?e.alerts:{},o=he(e.lastVerdict),s=L(e.title,`Untitled`),c=p(L(e.question)),l=le(i.window),u=ue(e.prediction),d=de(e.predictionHistory);return{id:t,title:s,question:c,thesis:{text:L(n?.text),saidAt:I(n?.saidAt,0)},tripwires:Array.isArray(e.tripwires)?e.tripwires:[],metrics:Array.isArray(e.metrics)?e.metrics.map(ce).filter(e=>e!==null):[],sources:Array.isArray(e.sources)?e.sources:[],widgets:pe(r.slice(0,12),s,c),cadence:{data:oe(i.data),ai:L(i.ai,`manual`),...l?{window:l}:{}},smartTrigger:typeof e.smartTrigger==`boolean`?e.smartTrigger:!0,alerts:{inApp:a.inApp!==!1,push:a.push===!0},...typeof e.topic==`string`&&e.topic?{topic:e.topic}:{},createdAt:I(e.createdAt,0),updatedAt:I(e.updatedAt,0),...typeof e.lastTouchedByUserAt==`number`&&Number.isFinite(e.lastTouchedByUserAt)?{lastTouchedByUserAt:e.lastTouchedByUserAt}:{},nextDataAt:I(e.nextDataAt,0),nextAiAt:I(e.nextAiAt,2**53-1),...typeof e.oneShotAt==`number`&&Number.isFinite(e.oneShotAt)?{oneShotAt:e.oneShotAt,oneShotLabel:L(e.oneShotLabel)}:{},...u?{prediction:u}:{},...d.length?{predictionHistory:d}:{},lastRefreshedAt:typeof e.lastRefreshedAt==`number`&&Number.isFinite(e.lastRefreshedAt)?e.lastRefreshedAt:null,...e.lastDataOutcome===`updated`||e.lastDataOutcome===`no-change`||e.lastDataOutcome===`unverified`?{lastDataOutcome:e.lastDataOutcome}:{},...o?{lastVerdict:o}:{},...typeof e.lastVerdictAttemptAt==`number`&&Number.isFinite(e.lastVerdictAttemptAt)?{lastVerdictAttemptAt:e.lastVerdictAttemptAt}:{},...typeof e.lastVerdictError==`string`&&e.lastVerdictError?{lastVerdictError:e.lastVerdictError}:{}}}function he(e){return!F(e)||typeof e.text!=`string`||!e.text?null:{text:e.text,at:I(e.at,0),grounded:e.grounded===!0,...Array.isArray(e.sources)?{sources:e.sources}:{},...typeof e.tripwireId==`string`?{tripwireId:e.tripwireId}:{}}}var z=!1,B=0;function V(e){return Array.isArray(e)?e.map(me).filter(e=>e!==null):[]}async function H(e){let t=++B;try{if(typeof localStorage>`u`)return;let n=await m(e);if(t!==B)return;localStorage.setItem(A,n)}catch(e){let t=e;if(t&&(t.name===`QuotaExceededError`||t.name===`NS_ERROR_DOM_QUOTA_REACHED`||t.code===22||t.code===1014))try{typeof window<`u`&&typeof CustomEvent==`function`&&window.dispatchEvent(new CustomEvent(te))}catch{}}}function ge(){try{if(typeof localStorage>`u`)return[];let e=localStorage.getItem(A);if(!e)return[];let t=V(JSON.parse(e));return t.length&&H(t),t}catch{return[]}}async function U(){try{if(typeof localStorage>`u`)return;let e=localStorage.getItem(A);if(!e)return;try{JSON.parse(e);return}catch{}let t=V(await h(e));if(z)return;M=t,z=!0,typeof window<`u`&&typeof CustomEvent==`function`&&window.dispatchEvent(new CustomEvent(j,{detail:t}))}catch{}}U();function W(){return M??=ge(),M}function _e(){M=null,z=!1,U()}function G(e){return e.length<=ne?e:[...e].sort((e,t)=>(t.lastTouchedByUserAt??t.updatedAt)-(e.lastTouchedByUserAt??e.updatedAt)).slice(0,ne)}function K(e){let t=V(e);M=t,z=!0,H(t);try{typeof window<`u`&&typeof CustomEvent==`function`&&window.dispatchEvent(new CustomEvent(j,{detail:t}))}catch{}}function q(e,t,n=Date.now(),r={}){let i=!1,a=W().map(a=>a.id===e?(i=!0,{...t(a),updatedAt:n,...r.userTouch?{lastTouchedByUserAt:n}:{}}):a);i&&K(a)}var J=null,Y=null;function ve(){let e=W();return(Y!==e||J===null)&&(J=[...e].sort((e,t)=>t.updatedAt-e.updatedAt),Y=e),J}function ye(e){return W().find(t=>t.id===e)??null}function be(e){K(G([ae({...e,lastTouchedByUserAt:e.lastTouchedByUserAt??e.updatedAt}),...W().filter(t=>t.id!==e.id)]))}function xe(e){let t=V(e);if(!t.length)return 0;let n=new Map(W().map(e=>[e.id,e]));for(let e of t){let t=n.get(e.id);(!t||e.updatedAt>=t.updatedAt)&&n.set(e.id,e)}return K(G([...n.values()])),t.length}function Se(e){let t=e.now??Date.now();return{id:P(),title:e.title||`Untitled dashboard`,question:e.question??``,thesis:{text:``,saidAt:t},tripwires:[],metrics:[],sources:[{kind:`ORIGIN`,conversationId:`pin`,title:e.title||`Pinned cards`,contributed:`Started by pinning a card.`,at:t}],widgets:[],cadence:{data:`manual`,ai:`manual`},smartTrigger:!1,alerts:{inApp:!0,push:!1},...e.topic?{topic:e.topic}:{},createdAt:t,updatedAt:t,nextDataAt:2**53-1,nextAiAt:2**53-1,lastRefreshedAt:null}}function Ce(e,t=`pin`,n){let r=new Set([`chart`,`plot`,`dualaxis`,`bars`,`timeline`,`breakdown`,`table`]);return{id:`w-pin-`+Math.random().toString(36).slice(2,9),block:e,span:r.has(e.type)?2:1,fromSource:t,...n?.trim()?{refreshQuery:n.trim()}:{}}}function we(e,t){q(e,e=>({...e,...t}),void 0,{userTouch:!0})}function Te(e,t,n=Date.now()){q(e,e=>{let r={...e.cadence,...t};return{...e,cadence:r,...t.data===void 0?{}:{nextDataAt:k(r,n)},...t.ai===void 0?{}:{nextAiAt:O(n,D[r.ai])}}},n,{userTouch:!0})}function Ee(e){let t=W().filter(t=>t.id!==e);t.length!==W().length&&K(t)}function De(e,t,n){q(e,e=>({...e,widgets:e.widgets.map(e=>e.id===t?{...e,span:n}:e)}),void 0,{userTouch:!0})}function Oe(e,t){q(e,e=>({...e,widgets:e.widgets.filter(e=>e.id!==t)}),void 0,{userTouch:!0})}function ke(e,t,n={}){let r=Array.isArray(t)?t:[t];r.length!==0&&q(e,e=>{let t=Math.max(0,Math.min(n.at??e.widgets.length,e.widgets.length)),i=[...e.widgets.slice(0,t),...r,...e.widgets.slice(t)],a=i;if(i.length>12){let e=i.filter(e=>!R.has(e.block.type)),t=i.length-12;if(e.length>=t){let n=new Set(e.slice(-t).map(e=>e.id));a=i.filter(e=>!n.has(e.id))}else a=i.slice(0,12)}return{...e,widgets:a,...n.source?{sources:[...e.sources,n.source].slice(-Me)}:{}}},void 0,{userTouch:!0})}function Ae(e,t,n){let r=n.trim();if(!r||t.length===0)return;let i=new Set(t);q(e,e=>({...e,widgets:e.widgets.map(e=>i.has(e.id)?{...e,refreshQuery:r}:e)}))}function je(e,t){q(e,e=>{let n=new Map(e.widgets.map(e=>[e.id,e])),r=t.map(e=>n.get(e)).filter(e=>!!e),i=new Set(r.map(e=>e.id)),a=e.widgets.filter(e=>!i.has(e.id));return{...e,widgets:[...r,...a]}},void 0,{userTouch:!0})}var Me=24;function Ne(e,t){q(e,e=>({...e,metrics:[...e.metrics,...t.metrics].slice(0,12),tripwires:[...e.tripwires,...t.tripwires].slice(0,12),widgets:[...e.widgets,...t.widgets].slice(0,12),sources:[...e.sources,t.source].slice(-24)}),void 0,{userTouch:!0})}function Pe(e,t,n){if(n===null)return e;let r=[...e??[],{at:t,value:n}];return r.length>ie?r.slice(-60):r}function Fe(e,t,n,r,i,a=Date.now()){q(e,e=>({...e,metrics:e.metrics.map(e=>e.id===t?{...e,lastValue:n,lastRaw:r,origin:i,asOf:a,history:Pe(e.history,a,n)}:e)}),a,{userTouch:i===`user`})}function Ie(e,t,n=Date.now()){q(e,e=>({...e,tripwires:t}),n)}function Le(e,t,n=Date.now()){q(e,e=>({...e,lastVerdict:t,lastVerdictAttemptAt:n,lastVerdictError:void 0}),n)}function Re(e,t,n){q(e,e=>({...e,lastVerdictAttemptAt:t,lastVerdictError:n}),t)}function ze(e,t){q(e,e=>({...e,nextDataAt:t,...e.oneShotAt!==void 0&&e.oneShotAt<t?{oneShotAt:t}:{}}))}function Be(e,t=Date.now()){q(e,e=>e.oneShotAt===void 0?{...e,oneShotAt:t,oneShotLabel:`first check`}:e)}function Ve(e,t=Date.now()){q(e,e=>({...e,nextAiAt:O(t,D[e.cadence.ai])}))}function He(e,t,n=Date.now()){q(e,e=>{let r=t?{...e.cadence,window:t}:{...e.cadence,window:void 0};return{...e,cadence:r,nextDataAt:k(r,n)}},n,{userTouch:t?.origin===`user`})}function Ue(e,t=Date.now()){q(e,e=>({...e,oneShotAt:void 0,oneShotLabel:void 0}),t)}var We=5*6e4;function Ge(e,t,n=Date.now()){q(e,e=>{let r=new Map((t.values??[]).map(e=>[e.metricId,e])),i=new Map((t.blocks??[]).map(e=>[e.widgetId,e.block])),a=e.prediction,o=e.predictionHistory;if(t.grade&&a){let e={at:n,expected:a.text,result:t.grade.result,...t.grade.note?{note:t.grade.note}:{}};o=[...o??[],e].slice(-20),a=void 0}t.expects?.trim()&&(a={text:t.expects.trim(),at:n});let s=fe(e.cadence,n),c=k(s,n),l=t.outcome===`unverified`&&e.lastDataOutcome!==`unverified`&&c!==2**53-1&&(!s.window||n>=s.window.startAt)?Math.min(c,n+We):c;return{...e,cadence:s,metrics:e.metrics.map(e=>{let t=r.get(e.id);return t?{...e,lastValue:t.value,lastRaw:t.raw,origin:t.origin,asOf:n,history:Pe(e.history,n,t.value)}:e}),widgets:e.widgets.map(e=>{let t=i.get(e.id);return t?{...e,block:t}:e}),...t.tripwires?{tripwires:t.tripwires}:{},...t.consumedOneShot?{oneShotAt:void 0,oneShotLabel:void 0}:{},nextDataAt:l,lastRefreshedAt:n,lastDataOutcome:t.outcome,prediction:a,predictionHistory:o}},n)}function Ke(e){let t=(0,w.c)(17),{label:n,items:r,badge:i}=e,o=r.filter(Je),[s,c]=(0,C.useState)(!1),l=(0,C.useRef)(null),u=(0,C.useRef)(null),[d,f]=(0,C.useState)(0),p,m;t[0]===s?(p=t[1],m=t[2]):(p=()=>{if(!s)return;let e=()=>{let e=l.current,t=u.current;if(!e||!t)return;let n=e.getBoundingClientRect().right-t.offsetWidth;f(n<8?Math.round(8-n):0)};return e(),window.addEventListener(`resize`,e),()=>window.removeEventListener(`resize`,e)},m=[s],t[0]=s,t[1]=p,t[2]=m),(0,C.useLayoutEffect)(p,m);let h,g;if(t[3]===s?(h=t[4],g=t[5]):(h=()=>{if(!s)return;let e=e=>{l.current&&!l.current.contains(e.target)&&c(!1)},t=e=>{e.key===`Escape`&&(c(!1),l.current?.querySelector(`.more-menu-trigger`)?.focus())};return window.addEventListener(`pointerdown`,e),window.addEventListener(`keydown`,t),()=>{window.removeEventListener(`pointerdown`,e),window.removeEventListener(`keydown`,t)}},g=[s],t[3]=s,t[4]=h,t[5]=g),(0,C.useEffect)(h,g),o.length===0)return null;let _;t[6]===Symbol.for(`react.memo_cache_sentinel`)?(_=()=>c(qe),t[6]=_):_=t[6];let v;t[7]===i?v=t[8]:(v=i!=null&&i>0&&(0,T.jsx)(`span`,{className:`topbar-badge`,children:i}),t[7]=i,t[8]=v);let y;t[9]===Symbol.for(`react.memo_cache_sentinel`)?(y=(0,T.jsx)(`span`,{className:`more-menu-caret`,"aria-hidden":`true`}),t[9]=y):y=t[9];let b;t[10]!==n||t[11]!==s||t[12]!==v?(b=(0,T.jsxs)(`button`,{type:`button`,className:`topbar-text-btn more-menu-trigger`,onClick:_,"aria-expanded":s,"aria-haspopup":`menu`,children:[n,v,y]}),t[10]=n,t[11]=s,t[12]=v,t[13]=b):b=t[13];let x=s&&(0,T.jsx)(`div`,{className:`tpl-menu more-menu`,role:`menu`,"aria-label":n,ref:u,style:d?{transform:`translateX(${d}px)`}:void 0,children:o.map(e=>(0,T.jsxs)(`button`,{type:`button`,role:`menuitem`,className:`more-menu-row`,onClick:()=>{e.onClick(),c(!1)},...e.preload?a(e.preload):{},children:[(0,T.jsx)(`span`,{className:`more-menu-name`,children:e.label}),(0,T.jsx)(`span`,{className:`more-menu-blurb`,children:e.blurb})]},e.label))}),S;return t[14]!==x||t[15]!==b?(S=(0,T.jsxs)(`div`,{className:`more-menu-root`,ref:l,children:[b,x]}),t[14]=x,t[15]=b,t[16]=S):S=t[16],S}function qe(e){return!e}function Je(e){return e.show}var Ye=[`smaller`,`normal`,`larger`],Xe={smaller:`Smaller`,normal:`Normal`,larger:`Larger`},X=`mavea:appearancechange`;function Ze(e){window.dispatchEvent(new CustomEvent(X,{detail:e}))}function Qe(){let e=(0,w.c)(11),[t,a]=(0,C.useState)(et),[u,d]=(0,C.useState)($e),[f,p]=v(),m,h;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(m=()=>{let e=e=>{let t=e.detail;t&&(a(t.template),d(t.theme))};return window.addEventListener(X,e),()=>window.removeEventListener(X,e)},h=[],e[0]=m,e[1]=h):(m=e[0],h=e[1]),(0,C.useEffect)(m,h);let g;e[2]===Symbol.for(`react.memo_cache_sentinel`)?(g=e=>{r(document,e),n(document,e),i(e);let t={template:e,theme:s()};a(e),d(t.theme),Ze(t)},e[2]=g):g=e[2];let _=g,y;e[3]===Symbol.for(`react.memo_cache_sentinel`)?(y=e=>{o(e),l(e);let t={template:c(),theme:e};a(t.template),d(e),Ze(t)},e[3]=y):y=e[3];let b=y,x;e[4]===p?x=e[5]:(x=e=>p({fontScale:e}),e[4]=p,e[5]=x);let S=x,T;return e[6]!==t||e[7]!==f.fontScale||e[8]!==S||e[9]!==u?(T={active:t,theme:u,fontScale:f.fontScale,pickTemplate:_,pickTheme:b,pickFontScale:S},e[6]=t,e[7]=f.fontScale,e[8]=S,e[9]=u,e[10]=T):T=e[10],T}function $e(){return s()}function et(){return c()}function tt(e){let t=(0,w.c)(13),{templateId:n}=e,r;t[0]===n?r=t[1]:(r=f.find(e=>e.id===n)??f[0],t[0]=n,t[1]=r);let i=r,a;t[2]!==i.preview.accent||t[3]!==i.preview.background||t[4]!==i.preview.ink||t[5]!==i.preview.surface?(a={"--preview-bg":i.preview.background,"--preview-surface":i.preview.surface,"--preview-ink":i.preview.ink,"--preview-accent":i.preview.accent},t[2]=i.preview.accent,t[3]=i.preview.background,t[4]=i.preview.ink,t[5]=i.preview.surface,t[6]=a):a=t[6];let o=a,s=`appearance-preview appearance-preview--${i.preview.geometry}`,c;t[7]===Symbol.for(`react.memo_cache_sentinel`)?(c=(0,T.jsx)(`span`,{className:`appearance-preview-aa`,children:`Aa`}),t[7]=c):c=t[7];let l,u;t[8]===Symbol.for(`react.memo_cache_sentinel`)?(l=(0,T.jsxs)(`span`,{className:`appearance-preview-copy`,children:[(0,T.jsx)(`i`,{}),(0,T.jsx)(`i`,{})]}),u=(0,T.jsx)(`span`,{className:`appearance-preview-data`,children:`08`}),t[8]=l,t[9]=u):(l=t[8],u=t[9]);let d;return t[10]!==o||t[11]!==s?(d=(0,T.jsxs)(`span`,{className:s,style:o,"aria-hidden":`true`,children:[c,l,u]}),t[10]=o,t[11]=s,t[12]=d):d=t[12],d}function Z({active:e,theme:t,fontScale:n,embedded:r=!1,onPickTemplate:i,onPickTheme:a,onPickFontScale:o,onClose:s,optionRefs:c}){let l=(0,C.useId)(),u=(e,t)=>{let n;if(e.key===`ArrowRight`||e.key===`ArrowDown`)n=(t+1)%f.length;else if(e.key===`ArrowLeft`||e.key===`ArrowUp`)n=(t-1+f.length)%f.length;else if(e.key===`Home`)n=0;else if(e.key===`End`)n=f.length-1;else return;e.preventDefault(),c?.current[n]?.focus()};return(0,T.jsxs)(`div`,{className:`appearance-panel${r?` is-embedded`:``}`,role:r?void 0:`dialog`,"aria-modal":r?void 0:!0,"aria-labelledby":l,children:[(0,T.jsxs)(`div`,{className:`appearance-head`,children:[(0,T.jsxs)(`div`,{children:[(0,T.jsx)(`h2`,{id:l,children:r?`Appearance`:`Choose your workspace`}),(0,T.jsx)(`p`,{children:`A visual identity for how you think.`})]}),s&&(0,T.jsx)(`button`,{type:`button`,className:`appearance-close`,onClick:s,"aria-label":`Close appearance`,children:`×`})]}),(0,T.jsxs)(`div`,{className:`appearance-mode`,"aria-label":`Color mode`,children:[(0,T.jsx)(`span`,{children:`Color mode`}),(0,T.jsx)(`div`,{className:`appearance-segmented`,children:[`light`,`dark`].map(e=>(0,T.jsxs)(`button`,{type:`button`,"aria-pressed":t===e,className:t===e?`is-active`:``,onClick:()=>a(e),children:[(0,T.jsx)(`span`,{className:`appearance-mode-icon is-${e}`,"aria-hidden":`true`}),e===`light`?`Light`:`Dark`]},e))})]}),(0,T.jsxs)(`div`,{className:`appearance-mode`,"aria-label":`Text size`,children:[(0,T.jsx)(`span`,{children:`Text size`}),(0,T.jsx)(`div`,{className:`appearance-segmented is-triple`,children:Ye.map(e=>(0,T.jsx)(`button`,{type:`button`,"aria-pressed":n===e,className:n===e?`is-active`:``,onClick:()=>o(e),children:Xe[e]},e))})]}),(0,T.jsx)(`div`,{className:`appearance-grid`,role:`radiogroup`,"aria-label":`Workspace themes`,children:f.map((t,n)=>(0,T.jsxs)(`button`,{ref:e=>{c&&(c.current[n]=e)},type:`button`,role:`radio`,"aria-label":`${t.label}, ${t.persona}. ${t.tagline} Best for ${t.bestFor}.`,"aria-checked":t.id===e,tabIndex:t.id===e?0:-1,className:`appearance-option${t.id===e?` is-active`:``}`,onClick:()=>i(t.id),onKeyDown:e=>u(e,n),children:[(0,T.jsx)(tt,{templateId:t.id}),(0,T.jsxs)(`span`,{className:`appearance-option-copy`,children:[(0,T.jsxs)(`span`,{className:`appearance-option-title`,children:[(0,T.jsx)(`strong`,{children:t.label}),(0,T.jsx)(`em`,{children:t.persona})]}),(0,T.jsx)(`span`,{className:`appearance-option-tagline`,children:t.tagline}),(0,T.jsxs)(`span`,{className:`appearance-option-best`,children:[`Best for `,t.bestFor.toLowerCase()]}),(0,T.jsx)(`span`,{className:`appearance-option-font`,children:t.preview.fontRole})]}),(0,T.jsx)(`span`,{className:`appearance-check`,"aria-hidden":`true`,children:`✓`})]},t.id))})]})}function nt({triggerClassName:e=`topbar-icon-btn`}={}){let{active:t,theme:n,fontScale:i,pickTemplate:a,pickTheme:o,pickFontScale:s}=Qe(),[c,l]=(0,C.useState)(!1),d=(0,C.useRef)(null),p=(0,C.useRef)(null),m=(0,C.useRef)([]);(0,C.useEffect)(()=>u(document),[]);let h=(0,C.useCallback)(()=>{l(!1),requestAnimationFrame(()=>p.current?.focus())},[]);(0,C.useEffect)(()=>{if(!c)return;r(document);let e=f.findIndex(e=>e.id===t);requestAnimationFrame(()=>{if(window.matchMedia?.(`(max-width: 720px)`).matches??!1){d.current?.querySelector(`.appearance-close`)?.focus({preventScroll:!0});return}m.current[Math.max(0,e)]?.focus({preventScroll:!0})});let n=e=>{d.current&&!d.current.contains(e.target)&&h()},i=e=>{if(e.key===`Escape`){e.preventDefault(),h();return}if(e.key!==`Tab`||!d.current)return;let t=Array.from(d.current.querySelectorAll(`button:not([disabled])`));if(!t.length)return;let n=t[0],r=t[t.length-1];e.shiftKey&&document.activeElement===n?(e.preventDefault(),r.focus()):!e.shiftKey&&document.activeElement===r&&(e.preventDefault(),n.focus())};return window.addEventListener(`pointerdown`,n),window.addEventListener(`keydown`,i),()=>{window.removeEventListener(`pointerdown`,n),window.removeEventListener(`keydown`,i)}},[t,h,c]);let g=f.find(e=>e.id===t)??f[0];return(0,T.jsxs)(`div`,{className:`tpl-picker appearance-picker`,ref:d,children:[(0,T.jsx)(`button`,{ref:p,type:`button`,className:`${e} tpl-btn appearance-trigger`,onClick:()=>l(e=>!e),title:`Appearance: ${g.label} · ${g.persona} · ${n===`light`?`Light`:`Dark`}`,"aria-label":`Choose appearance (current: ${g.label}, ${g.persona}, ${n} mode)`,"aria-expanded":c,"aria-haspopup":`dialog`,children:(0,T.jsxs)(`span`,{className:`appearance-mark`,"aria-hidden":`true`,children:[(0,T.jsx)(`i`,{style:{background:g.preview.accent}}),(0,T.jsx)(`i`,{style:{background:g.preview.surface}})]})}),c&&(0,T.jsxs)(T.Fragment,{children:[(0,T.jsx)(`button`,{className:`appearance-backdrop`,type:`button`,onClick:h,"aria-label":`Close appearance`}),(0,T.jsx)(Z,{active:t,theme:n,fontScale:i,onPickTemplate:a,onPickTheme:o,onPickFontScale:s,onClose:h,optionRefs:m})]})]})}function rt(){let e=(0,w.c)(7),{active:t,theme:n,fontScale:r,pickTemplate:i,pickTheme:a,pickFontScale:o}=Qe(),s;return e[0]!==t||e[1]!==r||e[2]!==o||e[3]!==i||e[4]!==a||e[5]!==n?(s=(0,T.jsx)(Z,{embedded:!0,active:t,theme:n,fontScale:r,onPickTemplate:i,onPickTheme:a,onPickFontScale:o}),e[0]=t,e[1]=r,e[2]=o,e[3]=i,e[4]=a,e[5]=n,e[6]=s):s=e[6],s}var Q=`#/dashboards`;function it(e){if(!e.startsWith(Q))return{view:`gallery`};let t=e.slice(12).replace(/^\//,``).split(`/`).filter(Boolean);return t.length===0?{view:`gallery`}:t[0]===`overview`?{view:`overview`}:t[0]===`rewind`?{view:`rewind`}:t[0]===`present`?{view:`present`}:t.length>=2&&t[1]===`settings`?{view:`settings`,id:t[0]}:{view:`detail`,id:t[0]}}var at={gallery:Q,overview:`${Q}/overview`,rewind:`${Q}/rewind`,present:`${Q}/present`,detail:e=>`${Q}/${e}`,settings:e=>`${Q}/${e}/settings`};function ot(){let e=(0,w.c)(2),[t,n]=(0,C.useState)(st),r,i;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(r=()=>{let e=()=>n(window.location.hash);return window.addEventListener(`hashchange`,e),()=>window.removeEventListener(`hashchange`,e)},i=[],e[0]=r,e[1]=i):(r=e[0],i=e[1]),(0,C.useEffect)(r,i),t}function st(){return typeof window<`u`?window.location.hash:``}function ct(e){let t=t=>{t.key!==null&&t.key!==`mavea-dashboards-v1`||(_e(),e())};return window.addEventListener(j,e),window.addEventListener(`storage`,t),()=>{window.removeEventListener(j,e),window.removeEventListener(`storage`,t)}}function lt(){return(0,C.useSyncExternalStore)(ct,ve)}function $(e){let[t,n]=(0,C.useState)(e);return(0,C.useEffect)(()=>{if(typeof window>`u`)return;let t=()=>n(e());return t(),window.addEventListener(S,t),window.addEventListener(`focus`,t),document.addEventListener(`visibilitychange`,t),()=>{window.removeEventListener(S,t),window.removeEventListener(`focus`,t),document.removeEventListener(`visibilitychange`,t)}},[]),t}function ut(){return $(_)}function dt(){return $(x)}function ft(){return $(y)}function pt(){return $(mt)}function mt(){return b()}function ht(){return $(gt)}function gt(){return g()}export{He as A,E as B,Ve as C,P as D,xe as E,Te as F,k as H,we as I,Fe as L,je as M,Ae as N,Ee as O,De as P,Ie as R,ve as S,Re as T,O as U,ee as V,Ue as _,ut as a,Ne as b,it as c,nt as d,Ke as f,Ce as g,Ge as h,dt as i,Le as j,Oe as k,ot as l,ke as m,ft as n,lt as o,be as p,ht as r,at as s,pt as t,rt as u,Se as v,ze as w,ye as x,Be as y,D as z};
1
+ import{t as e}from"./react-BQSORdFI.js";import{t}from"./jsx-runtime-DaSxXjOY.js";import{C as n,D as r,E as i,L as a,M as o,N as s,O as c,P as l,T as u,ht as d,x as f}from"./index-DiPGFGsJ.js";import{l as p}from"./store-DrBDvqXF.js";import{n as m,t as h}from"./contentVault-DzTYWcbD.js";import{r as g,t as _}from"./queue-J4h7E3uc.js";import{u as v}from"./useLiveConfig-CbMkeKrN.js";import{a as y,i as b,o as x,t as S}from"./store-DXmC_fP2.js";var C=e(),w=d(),T=t(),E={"15min":15,hourly:60,"6h":360,daily:1440,manual:1/0},D={daily:1440,weekly:10080,"on-change":1/0,manual:1/0};function O(e,t){return Number.isFinite(t)?e+t*6e4:2**53-1}function ee(e){return e===`manual`?0:Math.round(720*60/E[e])}function k(e,t){let n=e.window;if(n){if(t<n.startAt)return n.startAt;if(t>n.endAt)return 2**53-1}return O(t,E[e.data])}var A=`mavea-dashboards-v1`,j=A,te=`${A}:quota`,ne=24,re=4096,ie=60,M=null,N=0;function P(){try{let e=globalThis.crypto;if(e?.randomUUID)return e.randomUUID()}catch{}return N+=1,`dash-${N.toString(36)}-${Math.floor(Math.random()*1e9).toString(36)}`}function ae(e){let t=JSON.stringify(e,(e,t)=>typeof t==`string`&&t.length>re&&t.startsWith(`data:`)?``:t);return JSON.parse(t)}function F(e){return!!e&&typeof e==`object`}function I(e,t){return typeof e==`number`&&Number.isFinite(e)?e:t}function L(e,t=``){return typeof e==`string`?e:t}function oe(e){return e===`5min`?`15min`:L(e,`manual`)}function se(e){if(!F(e))return null;let t=e.at,n=e.value;return typeof t!=`number`||!Number.isFinite(t)||typeof n!=`number`||!Number.isFinite(n)?null:{at:t,value:n}}function ce(e){if(!F(e))return null;let t=(Array.isArray(e.history)?e.history:[]).map(se).filter(e=>e!==null).slice(-60);return{...e,history:t.length?t:void 0}}function le(e){if(!F(e))return;let t=e.startAt,n=e.endAt;if(!(typeof t!=`number`||!Number.isFinite(t))&&!(typeof n!=`number`||!Number.isFinite(n)||n<=t))return{label:L(e.label),startAt:t,endAt:n,origin:e.origin===`search`?`search`:`user`}}function ue(e){if(!(!F(e)||typeof e.text!=`string`||!e.text))return{text:e.text,at:I(e.at,0)}}function de(e){if(!Array.isArray(e))return[];let t=[];for(let n of e){if(!F(n)||typeof n.expected!=`string`||!n.expected)continue;let e=n.result;e!==`hit`&&e!==`miss`&&e!==`unclear`||t.push({at:I(n.at,0),expected:n.expected,result:e,...typeof n.note==`string`&&n.note?{note:n.note}:{}})}return t.slice(-20)}function fe(e,t){if(!e.window||t<=e.window.endAt)return e;let{window:n,...r}=e;return r}var R=new Set([`thesis`,`alignmentgauge`,`standingalerts`,`sourceslineage`]);function pe(e,t,n){let r=n||t;return r?e.map(e=>{if(e.refreshQuery?.trim()||e.metricId||R.has(e.block.type))return e;let t=e.block.props?.title,n=typeof t==`string`&&t.trim()?`${r} — ${t.trim()}`:r;return{...e,refreshQuery:n}}):e}function me(e){if(!F(e))return null;let t=L(e.id);if(!t)return null;let n=F(e.thesis)?e.thesis:null,r=Array.isArray(e.widgets)?e.widgets.filter(e=>F(e)&&F(e.block)):[],i=F(e.cadence)?e.cadence:{},a=F(e.alerts)?e.alerts:{},o=he(e.lastVerdict),s=L(e.title,`Untitled`),c=p(L(e.question)),l=le(i.window),u=ue(e.prediction),d=de(e.predictionHistory);return{id:t,title:s,question:c,thesis:{text:L(n?.text),saidAt:I(n?.saidAt,0)},tripwires:Array.isArray(e.tripwires)?e.tripwires:[],metrics:Array.isArray(e.metrics)?e.metrics.map(ce).filter(e=>e!==null):[],sources:Array.isArray(e.sources)?e.sources:[],widgets:pe(r.slice(0,12),s,c),cadence:{data:oe(i.data),ai:L(i.ai,`manual`),...l?{window:l}:{}},smartTrigger:typeof e.smartTrigger==`boolean`?e.smartTrigger:!0,alerts:{inApp:a.inApp!==!1,push:a.push===!0},...typeof e.topic==`string`&&e.topic?{topic:e.topic}:{},createdAt:I(e.createdAt,0),updatedAt:I(e.updatedAt,0),...typeof e.lastTouchedByUserAt==`number`&&Number.isFinite(e.lastTouchedByUserAt)?{lastTouchedByUserAt:e.lastTouchedByUserAt}:{},nextDataAt:I(e.nextDataAt,0),nextAiAt:I(e.nextAiAt,2**53-1),...typeof e.oneShotAt==`number`&&Number.isFinite(e.oneShotAt)?{oneShotAt:e.oneShotAt,oneShotLabel:L(e.oneShotLabel)}:{},...u?{prediction:u}:{},...d.length?{predictionHistory:d}:{},lastRefreshedAt:typeof e.lastRefreshedAt==`number`&&Number.isFinite(e.lastRefreshedAt)?e.lastRefreshedAt:null,...e.lastDataOutcome===`updated`||e.lastDataOutcome===`no-change`||e.lastDataOutcome===`unverified`?{lastDataOutcome:e.lastDataOutcome}:{},...o?{lastVerdict:o}:{},...typeof e.lastVerdictAttemptAt==`number`&&Number.isFinite(e.lastVerdictAttemptAt)?{lastVerdictAttemptAt:e.lastVerdictAttemptAt}:{},...typeof e.lastVerdictError==`string`&&e.lastVerdictError?{lastVerdictError:e.lastVerdictError}:{}}}function he(e){return!F(e)||typeof e.text!=`string`||!e.text?null:{text:e.text,at:I(e.at,0),grounded:e.grounded===!0,...Array.isArray(e.sources)?{sources:e.sources}:{},...typeof e.tripwireId==`string`?{tripwireId:e.tripwireId}:{}}}var z=!1,B=0;function V(e){return Array.isArray(e)?e.map(me).filter(e=>e!==null):[]}async function H(e){let t=++B;try{if(typeof localStorage>`u`)return;let n=await m(e);if(t!==B)return;localStorage.setItem(A,n)}catch(e){let t=e;if(t&&(t.name===`QuotaExceededError`||t.name===`NS_ERROR_DOM_QUOTA_REACHED`||t.code===22||t.code===1014))try{typeof window<`u`&&typeof CustomEvent==`function`&&window.dispatchEvent(new CustomEvent(te))}catch{}}}function ge(){try{if(typeof localStorage>`u`)return[];let e=localStorage.getItem(A);if(!e)return[];let t=V(JSON.parse(e));return t.length&&H(t),t}catch{return[]}}async function U(){try{if(typeof localStorage>`u`)return;let e=localStorage.getItem(A);if(!e)return;try{JSON.parse(e);return}catch{}let t=V(await h(e));if(z)return;M=t,z=!0,typeof window<`u`&&typeof CustomEvent==`function`&&window.dispatchEvent(new CustomEvent(j,{detail:t}))}catch{}}U();function W(){return M??=ge(),M}function _e(){M=null,z=!1,U()}function G(e){return e.length<=ne?e:[...e].sort((e,t)=>(t.lastTouchedByUserAt??t.updatedAt)-(e.lastTouchedByUserAt??e.updatedAt)).slice(0,ne)}function K(e){let t=V(e);M=t,z=!0,H(t);try{typeof window<`u`&&typeof CustomEvent==`function`&&window.dispatchEvent(new CustomEvent(j,{detail:t}))}catch{}}function q(e,t,n=Date.now(),r={}){let i=!1,a=W().map(a=>a.id===e?(i=!0,{...t(a),updatedAt:n,...r.userTouch?{lastTouchedByUserAt:n}:{}}):a);i&&K(a)}var J=null,Y=null;function ve(){let e=W();return(Y!==e||J===null)&&(J=[...e].sort((e,t)=>t.updatedAt-e.updatedAt),Y=e),J}function ye(e){return W().find(t=>t.id===e)??null}function be(e){K(G([ae({...e,lastTouchedByUserAt:e.lastTouchedByUserAt??e.updatedAt}),...W().filter(t=>t.id!==e.id)]))}function xe(e){let t=V(e);if(!t.length)return 0;let n=new Map(W().map(e=>[e.id,e]));for(let e of t){let t=n.get(e.id);(!t||e.updatedAt>=t.updatedAt)&&n.set(e.id,e)}return K(G([...n.values()])),t.length}function Se(e){let t=e.now??Date.now();return{id:P(),title:e.title||`Untitled dashboard`,question:e.question??``,thesis:{text:``,saidAt:t},tripwires:[],metrics:[],sources:[{kind:`ORIGIN`,conversationId:`pin`,title:e.title||`Pinned cards`,contributed:`Started by pinning a card.`,at:t}],widgets:[],cadence:{data:`manual`,ai:`manual`},smartTrigger:!1,alerts:{inApp:!0,push:!1},...e.topic?{topic:e.topic}:{},createdAt:t,updatedAt:t,nextDataAt:2**53-1,nextAiAt:2**53-1,lastRefreshedAt:null}}function Ce(e,t=`pin`,n){let r=new Set([`chart`,`plot`,`dualaxis`,`bars`,`timeline`,`breakdown`,`table`]);return{id:`w-pin-`+Math.random().toString(36).slice(2,9),block:e,span:r.has(e.type)?2:1,fromSource:t,...n?.trim()?{refreshQuery:n.trim()}:{}}}function we(e,t){q(e,e=>({...e,...t}),void 0,{userTouch:!0})}function Te(e,t,n=Date.now()){q(e,e=>{let r={...e.cadence,...t};return{...e,cadence:r,...t.data===void 0?{}:{nextDataAt:k(r,n)},...t.ai===void 0?{}:{nextAiAt:O(n,D[r.ai])}}},n,{userTouch:!0})}function Ee(e){let t=W().filter(t=>t.id!==e);t.length!==W().length&&K(t)}function De(e,t,n){q(e,e=>({...e,widgets:e.widgets.map(e=>e.id===t?{...e,span:n}:e)}),void 0,{userTouch:!0})}function Oe(e,t){q(e,e=>({...e,widgets:e.widgets.filter(e=>e.id!==t)}),void 0,{userTouch:!0})}function ke(e,t,n={}){let r=Array.isArray(t)?t:[t];r.length!==0&&q(e,e=>{let t=Math.max(0,Math.min(n.at??e.widgets.length,e.widgets.length)),i=[...e.widgets.slice(0,t),...r,...e.widgets.slice(t)],a=i;if(i.length>12){let e=i.filter(e=>!R.has(e.block.type)),t=i.length-12;if(e.length>=t){let n=new Set(e.slice(-t).map(e=>e.id));a=i.filter(e=>!n.has(e.id))}else a=i.slice(0,12)}return{...e,widgets:a,...n.source?{sources:[...e.sources,n.source].slice(-Me)}:{}}},void 0,{userTouch:!0})}function Ae(e,t,n){let r=n.trim();if(!r||t.length===0)return;let i=new Set(t);q(e,e=>({...e,widgets:e.widgets.map(e=>i.has(e.id)?{...e,refreshQuery:r}:e)}))}function je(e,t){q(e,e=>{let n=new Map(e.widgets.map(e=>[e.id,e])),r=t.map(e=>n.get(e)).filter(e=>!!e),i=new Set(r.map(e=>e.id)),a=e.widgets.filter(e=>!i.has(e.id));return{...e,widgets:[...r,...a]}},void 0,{userTouch:!0})}var Me=24;function Ne(e,t){q(e,e=>({...e,metrics:[...e.metrics,...t.metrics].slice(0,12),tripwires:[...e.tripwires,...t.tripwires].slice(0,12),widgets:[...e.widgets,...t.widgets].slice(0,12),sources:[...e.sources,t.source].slice(-24)}),void 0,{userTouch:!0})}function Pe(e,t,n){if(n===null)return e;let r=[...e??[],{at:t,value:n}];return r.length>ie?r.slice(-60):r}function Fe(e,t,n,r,i,a=Date.now()){q(e,e=>({...e,metrics:e.metrics.map(e=>e.id===t?{...e,lastValue:n,lastRaw:r,origin:i,asOf:a,history:Pe(e.history,a,n)}:e)}),a,{userTouch:i===`user`})}function Ie(e,t,n=Date.now()){q(e,e=>({...e,tripwires:t}),n)}function Le(e,t,n=Date.now()){q(e,e=>({...e,lastVerdict:t,lastVerdictAttemptAt:n,lastVerdictError:void 0}),n)}function Re(e,t,n){q(e,e=>({...e,lastVerdictAttemptAt:t,lastVerdictError:n}),t)}function ze(e,t){q(e,e=>({...e,nextDataAt:t,...e.oneShotAt!==void 0&&e.oneShotAt<t?{oneShotAt:t}:{}}))}function Be(e,t=Date.now()){q(e,e=>e.oneShotAt===void 0?{...e,oneShotAt:t,oneShotLabel:`first check`}:e)}function Ve(e,t=Date.now()){q(e,e=>({...e,nextAiAt:O(t,D[e.cadence.ai])}))}function He(e,t,n=Date.now()){q(e,e=>{let r=t?{...e.cadence,window:t}:{...e.cadence,window:void 0};return{...e,cadence:r,nextDataAt:k(r,n)}},n,{userTouch:t?.origin===`user`})}function Ue(e,t=Date.now()){q(e,e=>({...e,oneShotAt:void 0,oneShotLabel:void 0}),t)}var We=5*6e4;function Ge(e,t,n=Date.now()){q(e,e=>{let r=new Map((t.values??[]).map(e=>[e.metricId,e])),i=new Map((t.blocks??[]).map(e=>[e.widgetId,e.block])),a=e.prediction,o=e.predictionHistory;if(t.grade&&a){let e={at:n,expected:a.text,result:t.grade.result,...t.grade.note?{note:t.grade.note}:{}};o=[...o??[],e].slice(-20),a=void 0}t.expects?.trim()&&(a={text:t.expects.trim(),at:n});let s=fe(e.cadence,n),c=k(s,n),l=t.outcome===`unverified`&&e.lastDataOutcome!==`unverified`&&c!==2**53-1&&(!s.window||n>=s.window.startAt)?Math.min(c,n+We):c;return{...e,cadence:s,metrics:e.metrics.map(e=>{let t=r.get(e.id);return t?{...e,lastValue:t.value,lastRaw:t.raw,origin:t.origin,asOf:n,history:Pe(e.history,n,t.value)}:e}),widgets:e.widgets.map(e=>{let t=i.get(e.id);return t?{...e,block:t}:e}),...t.tripwires?{tripwires:t.tripwires}:{},...t.consumedOneShot?{oneShotAt:void 0,oneShotLabel:void 0}:{},nextDataAt:l,lastRefreshedAt:n,lastDataOutcome:t.outcome,prediction:a,predictionHistory:o}},n)}function Ke(e){let t=(0,w.c)(17),{label:n,items:r,badge:i}=e,o=r.filter(Je),[s,c]=(0,C.useState)(!1),l=(0,C.useRef)(null),u=(0,C.useRef)(null),[d,f]=(0,C.useState)(0),p,m;t[0]===s?(p=t[1],m=t[2]):(p=()=>{if(!s)return;let e=()=>{let e=l.current,t=u.current;if(!e||!t)return;let n=e.getBoundingClientRect().right-t.offsetWidth;f(n<8?Math.round(8-n):0)};return e(),window.addEventListener(`resize`,e),()=>window.removeEventListener(`resize`,e)},m=[s],t[0]=s,t[1]=p,t[2]=m),(0,C.useLayoutEffect)(p,m);let h,g;if(t[3]===s?(h=t[4],g=t[5]):(h=()=>{if(!s)return;let e=e=>{l.current&&!l.current.contains(e.target)&&c(!1)},t=e=>{e.key===`Escape`&&(c(!1),l.current?.querySelector(`.more-menu-trigger`)?.focus())};return window.addEventListener(`pointerdown`,e),window.addEventListener(`keydown`,t),()=>{window.removeEventListener(`pointerdown`,e),window.removeEventListener(`keydown`,t)}},g=[s],t[3]=s,t[4]=h,t[5]=g),(0,C.useEffect)(h,g),o.length===0)return null;let _;t[6]===Symbol.for(`react.memo_cache_sentinel`)?(_=()=>c(qe),t[6]=_):_=t[6];let v;t[7]===i?v=t[8]:(v=i!=null&&i>0&&(0,T.jsx)(`span`,{className:`topbar-badge`,children:i}),t[7]=i,t[8]=v);let y;t[9]===Symbol.for(`react.memo_cache_sentinel`)?(y=(0,T.jsx)(`span`,{className:`more-menu-caret`,"aria-hidden":`true`}),t[9]=y):y=t[9];let b;t[10]!==n||t[11]!==s||t[12]!==v?(b=(0,T.jsxs)(`button`,{type:`button`,className:`topbar-text-btn more-menu-trigger`,onClick:_,"aria-expanded":s,"aria-haspopup":`menu`,children:[n,v,y]}),t[10]=n,t[11]=s,t[12]=v,t[13]=b):b=t[13];let x=s&&(0,T.jsx)(`div`,{className:`tpl-menu more-menu`,role:`menu`,"aria-label":n,ref:u,style:d?{transform:`translateX(${d}px)`}:void 0,children:o.map(e=>(0,T.jsxs)(`button`,{type:`button`,role:`menuitem`,className:`more-menu-row`,onClick:()=>{e.onClick(),c(!1)},...e.preload?a(e.preload):{},children:[(0,T.jsx)(`span`,{className:`more-menu-name`,children:e.label}),(0,T.jsx)(`span`,{className:`more-menu-blurb`,children:e.blurb})]},e.label))}),S;return t[14]!==x||t[15]!==b?(S=(0,T.jsxs)(`div`,{className:`more-menu-root`,ref:l,children:[b,x]}),t[14]=x,t[15]=b,t[16]=S):S=t[16],S}function qe(e){return!e}function Je(e){return e.show}var Ye=[`smaller`,`normal`,`larger`],Xe={smaller:`Smaller`,normal:`Normal`,larger:`Larger`},X=`mavea:appearancechange`;function Ze(e){window.dispatchEvent(new CustomEvent(X,{detail:e}))}function Qe(){let e=(0,w.c)(11),[t,a]=(0,C.useState)(et),[u,d]=(0,C.useState)($e),[f,p]=v(),m,h;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(m=()=>{let e=e=>{let t=e.detail;t&&(a(t.template),d(t.theme))};return window.addEventListener(X,e),()=>window.removeEventListener(X,e)},h=[],e[0]=m,e[1]=h):(m=e[0],h=e[1]),(0,C.useEffect)(m,h);let g;e[2]===Symbol.for(`react.memo_cache_sentinel`)?(g=e=>{r(document,e),n(document,e),i(e);let t={template:e,theme:s()};a(e),d(t.theme),Ze(t)},e[2]=g):g=e[2];let _=g,y;e[3]===Symbol.for(`react.memo_cache_sentinel`)?(y=e=>{o(e),l(e);let t={template:c(),theme:e};a(t.template),d(e),Ze(t)},e[3]=y):y=e[3];let b=y,x;e[4]===p?x=e[5]:(x=e=>p({fontScale:e}),e[4]=p,e[5]=x);let S=x,T;return e[6]!==t||e[7]!==f.fontScale||e[8]!==S||e[9]!==u?(T={active:t,theme:u,fontScale:f.fontScale,pickTemplate:_,pickTheme:b,pickFontScale:S},e[6]=t,e[7]=f.fontScale,e[8]=S,e[9]=u,e[10]=T):T=e[10],T}function $e(){return s()}function et(){return c()}function tt(e){let t=(0,w.c)(13),{templateId:n}=e,r;t[0]===n?r=t[1]:(r=f.find(e=>e.id===n)??f[0],t[0]=n,t[1]=r);let i=r,a;t[2]!==i.preview.accent||t[3]!==i.preview.background||t[4]!==i.preview.ink||t[5]!==i.preview.surface?(a={"--preview-bg":i.preview.background,"--preview-surface":i.preview.surface,"--preview-ink":i.preview.ink,"--preview-accent":i.preview.accent},t[2]=i.preview.accent,t[3]=i.preview.background,t[4]=i.preview.ink,t[5]=i.preview.surface,t[6]=a):a=t[6];let o=a,s=`appearance-preview appearance-preview--${i.preview.geometry}`,c;t[7]===Symbol.for(`react.memo_cache_sentinel`)?(c=(0,T.jsx)(`span`,{className:`appearance-preview-aa`,children:`Aa`}),t[7]=c):c=t[7];let l,u;t[8]===Symbol.for(`react.memo_cache_sentinel`)?(l=(0,T.jsxs)(`span`,{className:`appearance-preview-copy`,children:[(0,T.jsx)(`i`,{}),(0,T.jsx)(`i`,{})]}),u=(0,T.jsx)(`span`,{className:`appearance-preview-data`,children:`08`}),t[8]=l,t[9]=u):(l=t[8],u=t[9]);let d;return t[10]!==o||t[11]!==s?(d=(0,T.jsxs)(`span`,{className:s,style:o,"aria-hidden":`true`,children:[c,l,u]}),t[10]=o,t[11]=s,t[12]=d):d=t[12],d}function Z({active:e,theme:t,fontScale:n,embedded:r=!1,onPickTemplate:i,onPickTheme:a,onPickFontScale:o,onClose:s,optionRefs:c}){let l=(0,C.useId)(),u=(e,t)=>{let n;if(e.key===`ArrowRight`||e.key===`ArrowDown`)n=(t+1)%f.length;else if(e.key===`ArrowLeft`||e.key===`ArrowUp`)n=(t-1+f.length)%f.length;else if(e.key===`Home`)n=0;else if(e.key===`End`)n=f.length-1;else return;e.preventDefault(),c?.current[n]?.focus()};return(0,T.jsxs)(`div`,{className:`appearance-panel${r?` is-embedded`:``}`,role:r?void 0:`dialog`,"aria-modal":r?void 0:!0,"aria-labelledby":l,children:[(0,T.jsxs)(`div`,{className:`appearance-head`,children:[(0,T.jsxs)(`div`,{children:[(0,T.jsx)(`h2`,{id:l,children:r?`Appearance`:`Choose your workspace`}),(0,T.jsx)(`p`,{children:`A visual identity for how you think.`})]}),s&&(0,T.jsx)(`button`,{type:`button`,className:`appearance-close`,onClick:s,"aria-label":`Close appearance`,children:`×`})]}),(0,T.jsxs)(`div`,{className:`appearance-mode`,"aria-label":`Color mode`,children:[(0,T.jsx)(`span`,{children:`Color mode`}),(0,T.jsx)(`div`,{className:`appearance-segmented`,children:[`light`,`dark`].map(e=>(0,T.jsxs)(`button`,{type:`button`,"aria-pressed":t===e,className:t===e?`is-active`:``,onClick:()=>a(e),children:[(0,T.jsx)(`span`,{className:`appearance-mode-icon is-${e}`,"aria-hidden":`true`}),e===`light`?`Light`:`Dark`]},e))})]}),(0,T.jsxs)(`div`,{className:`appearance-mode`,"aria-label":`Text size`,children:[(0,T.jsx)(`span`,{children:`Text size`}),(0,T.jsx)(`div`,{className:`appearance-segmented is-triple`,children:Ye.map(e=>(0,T.jsx)(`button`,{type:`button`,"aria-pressed":n===e,className:n===e?`is-active`:``,onClick:()=>o(e),children:Xe[e]},e))})]}),(0,T.jsx)(`div`,{className:`appearance-grid`,role:`radiogroup`,"aria-label":`Workspace themes`,children:f.map((t,n)=>(0,T.jsxs)(`button`,{ref:e=>{c&&(c.current[n]=e)},type:`button`,role:`radio`,"aria-label":`${t.label}, ${t.persona}. ${t.tagline} Best for ${t.bestFor}.`,"aria-checked":t.id===e,tabIndex:t.id===e?0:-1,className:`appearance-option${t.id===e?` is-active`:``}`,onClick:()=>i(t.id),onKeyDown:e=>u(e,n),children:[(0,T.jsx)(tt,{templateId:t.id}),(0,T.jsxs)(`span`,{className:`appearance-option-copy`,children:[(0,T.jsxs)(`span`,{className:`appearance-option-title`,children:[(0,T.jsx)(`strong`,{children:t.label}),(0,T.jsx)(`em`,{children:t.persona})]}),(0,T.jsx)(`span`,{className:`appearance-option-tagline`,children:t.tagline}),(0,T.jsxs)(`span`,{className:`appearance-option-best`,children:[`Best for `,t.bestFor.toLowerCase()]}),(0,T.jsx)(`span`,{className:`appearance-option-font`,children:t.preview.fontRole})]}),(0,T.jsx)(`span`,{className:`appearance-check`,"aria-hidden":`true`,children:`✓`})]},t.id))})]})}function nt({triggerClassName:e=`topbar-icon-btn`}={}){let{active:t,theme:n,fontScale:i,pickTemplate:a,pickTheme:o,pickFontScale:s}=Qe(),[c,l]=(0,C.useState)(!1),d=(0,C.useRef)(null),p=(0,C.useRef)(null),m=(0,C.useRef)([]);(0,C.useEffect)(()=>u(document),[]);let h=(0,C.useCallback)(()=>{l(!1),requestAnimationFrame(()=>p.current?.focus())},[]);(0,C.useEffect)(()=>{if(!c)return;r(document);let e=f.findIndex(e=>e.id===t);requestAnimationFrame(()=>{if(window.matchMedia?.(`(max-width: 720px)`).matches??!1){d.current?.querySelector(`.appearance-close`)?.focus({preventScroll:!0});return}m.current[Math.max(0,e)]?.focus({preventScroll:!0})});let n=e=>{d.current&&!d.current.contains(e.target)&&h()},i=e=>{if(e.key===`Escape`){e.preventDefault(),h();return}if(e.key!==`Tab`||!d.current)return;let t=Array.from(d.current.querySelectorAll(`button:not([disabled])`));if(!t.length)return;let n=t[0],r=t[t.length-1];e.shiftKey&&document.activeElement===n?(e.preventDefault(),r.focus()):!e.shiftKey&&document.activeElement===r&&(e.preventDefault(),n.focus())};return window.addEventListener(`pointerdown`,n),window.addEventListener(`keydown`,i),()=>{window.removeEventListener(`pointerdown`,n),window.removeEventListener(`keydown`,i)}},[t,h,c]);let g=f.find(e=>e.id===t)??f[0];return(0,T.jsxs)(`div`,{className:`tpl-picker appearance-picker`,ref:d,children:[(0,T.jsx)(`button`,{ref:p,type:`button`,className:`${e} tpl-btn appearance-trigger`,onClick:()=>l(e=>!e),title:`Appearance: ${g.label} · ${g.persona} · ${n===`light`?`Light`:`Dark`}`,"aria-label":`Choose appearance (current: ${g.label}, ${g.persona}, ${n} mode)`,"aria-expanded":c,"aria-haspopup":`dialog`,children:(0,T.jsxs)(`span`,{className:`appearance-mark`,"aria-hidden":`true`,children:[(0,T.jsx)(`i`,{style:{background:g.preview.accent}}),(0,T.jsx)(`i`,{style:{background:g.preview.surface}})]})}),c&&(0,T.jsxs)(T.Fragment,{children:[(0,T.jsx)(`button`,{className:`appearance-backdrop`,type:`button`,onClick:h,"aria-label":`Close appearance`}),(0,T.jsx)(Z,{active:t,theme:n,fontScale:i,onPickTemplate:a,onPickTheme:o,onPickFontScale:s,onClose:h,optionRefs:m})]})]})}function rt(){let e=(0,w.c)(7),{active:t,theme:n,fontScale:r,pickTemplate:i,pickTheme:a,pickFontScale:o}=Qe(),s;return e[0]!==t||e[1]!==r||e[2]!==o||e[3]!==i||e[4]!==a||e[5]!==n?(s=(0,T.jsx)(Z,{embedded:!0,active:t,theme:n,fontScale:r,onPickTemplate:i,onPickTheme:a,onPickFontScale:o}),e[0]=t,e[1]=r,e[2]=o,e[3]=i,e[4]=a,e[5]=n,e[6]=s):s=e[6],s}var Q=`#/dashboards`;function it(e){if(!e.startsWith(Q))return{view:`gallery`};let t=e.slice(12).replace(/^\//,``).split(`/`).filter(Boolean);return t.length===0?{view:`gallery`}:t[0]===`overview`?{view:`overview`}:t[0]===`rewind`?{view:`rewind`}:t[0]===`present`?{view:`present`}:t.length>=2&&t[1]===`settings`?{view:`settings`,id:t[0]}:{view:`detail`,id:t[0]}}var at={gallery:Q,overview:`${Q}/overview`,rewind:`${Q}/rewind`,present:`${Q}/present`,detail:e=>`${Q}/${e}`,settings:e=>`${Q}/${e}/settings`};function ot(){let e=(0,w.c)(2),[t,n]=(0,C.useState)(st),r,i;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(r=()=>{let e=()=>n(window.location.hash);return window.addEventListener(`hashchange`,e),()=>window.removeEventListener(`hashchange`,e)},i=[],e[0]=r,e[1]=i):(r=e[0],i=e[1]),(0,C.useEffect)(r,i),t}function st(){return typeof window<`u`?window.location.hash:``}function ct(e){let t=t=>{t.key!==null&&t.key!==`mavea-dashboards-v1`||(_e(),e())};return window.addEventListener(j,e),window.addEventListener(`storage`,t),()=>{window.removeEventListener(j,e),window.removeEventListener(`storage`,t)}}function lt(){return(0,C.useSyncExternalStore)(ct,ve)}function $(e){let[t,n]=(0,C.useState)(e);return(0,C.useEffect)(()=>{if(typeof window>`u`)return;let t=()=>n(e());return t(),window.addEventListener(S,t),window.addEventListener(`focus`,t),document.addEventListener(`visibilitychange`,t),()=>{window.removeEventListener(S,t),window.removeEventListener(`focus`,t),document.removeEventListener(`visibilitychange`,t)}},[]),t}function ut(){return $(_)}function dt(){return $(x)}function ft(){return $(y)}function pt(){return $(mt)}function mt(){return b()}function ht(){return $(gt)}function gt(){return g()}export{He as A,E as B,Ve as C,P as D,xe as E,Te as F,k as H,we as I,Fe as L,je as M,Ae as N,Ee as O,De as P,Ie as R,ve as S,Re as T,O as U,ee as V,Ue as _,ut as a,Ne as b,it as c,nt as d,Ke as f,Ce as g,Ge as h,dt as i,Le as j,Oe as k,ot as l,ke as m,ft as n,lt as o,be as p,ht as r,at as s,pt as t,rt as u,Se as v,ze as w,ye as x,Be as y,D as z};
@@ -1 +1 @@
1
- import{t as e}from"./react-BQSORdFI.js";import{ht as t}from"./index-y8GL67bB.js";var n=t(),r=e(),i=90;function a(e,t){let a=(0,n.c)(6),o=(0,r.useRef)(0),s;a[0]!==t||a[1]!==e.current?(s=()=>{let n=e.current;if(!n)return;let r=e=>{e.ctrlKey&&(e.preventDefault(),o.current+=e.deltaY,o.current>=i?(o.current=0,t(`out`)):o.current<=-90&&(o.current=0,t(`in`)))};return n.addEventListener(`wheel`,r,{passive:!1}),()=>n.removeEventListener(`wheel`,r)},a[0]=t,a[1]=e.current,a[2]=s):s=a[2];let c;a[3]!==t||a[4]!==e?(c=[e,t],a[3]=t,a[4]=e,a[5]=c):c=a[5],(0,r.useEffect)(s,c)}export{a as t};
1
+ import{t as e}from"./react-BQSORdFI.js";import{ht as t}from"./index-DiPGFGsJ.js";var n=t(),r=e(),i=90;function a(e,t){let a=(0,n.c)(6),o=(0,r.useRef)(0),s;a[0]!==t||a[1]!==e.current?(s=()=>{let n=e.current;if(!n)return;let r=e=>{e.ctrlKey&&(e.preventDefault(),o.current+=e.deltaY,o.current>=i?(o.current=0,t(`out`)):o.current<=-90&&(o.current=0,t(`in`)))};return n.addEventListener(`wheel`,r,{passive:!1}),()=>n.removeEventListener(`wheel`,r)},a[0]=t,a[1]=e.current,a[2]=s):s=a[2];let c;a[3]!==t||a[4]!==e?(c=[e,t],a[3]=t,a[4]=e,a[5]=c):c=a[5],(0,r.useEffect)(s,c)}export{a as t};
package/dist/index.html CHANGED
@@ -101,7 +101,7 @@
101
101
  }
102
102
  }
103
103
  </style>
104
- <script type="module" crossorigin src="/assets/index-y8GL67bB.js"></script>
104
+ <script type="module" crossorigin src="/assets/index-DiPGFGsJ.js"></script>
105
105
  <link rel="modulepreload" crossorigin href="/assets/chunk-BVpWp9h4.js">
106
106
  <link rel="modulepreload" crossorigin href="/assets/jsx-runtime-DaSxXjOY.js">
107
107
  <link rel="modulepreload" crossorigin href="/assets/react-BQSORdFI.js">
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mavea/mavea",
3
- "version": "1.0.8",
3
+ "version": "1.0.10",
4
4
  "type": "module",
5
5
  "description": "Mavéa — an AI Presence interface. Talk to AI. See what it means.",
6
6
  "license": "PolyForm-Noncommercial-1.0.0",
@@ -1 +0,0 @@
1
- import{r as e}from"./useDashboardLoop-B6ByHWoE.js";function t(){return e(),null}export{t as DashboardLoopRuntime};
@@ -1 +0,0 @@
1
- .feature-use-notice{box-sizing:border-box;border:1px solid color-mix(in oklab, var(--warning) 22%, var(--line));background:color-mix(in oklab, var(--surface-elevated) 94%, var(--warning) 6%);width:100%;color:var(--text-secondary);font:500 11.5px/1.5 var(--font);border-radius:10px;grid-template-columns:auto minmax(0,1fr) auto;align-items:start;gap:8px;padding:9px 11px;display:grid}.feature-use-notice-dot{background:var(--warning);border-radius:50%;width:6px;height:6px;margin-top:4px}.feature-use-notice p{margin:0}.feature-use-notice strong{color:var(--text-primary);font-weight:700}.feature-use-notice-actions{align-items:center;gap:6px;margin:-4px -4px -4px 0;display:flex}.feature-use-notice a{color:var(--text-secondary);white-space:nowrap;font-weight:700;text-decoration:none}.feature-use-notice a:hover,.feature-use-notice a:focus-visible{color:var(--text-primary);text-underline-offset:2px;text-decoration:underline}.feature-use-notice-dismiss,.feature-use-notice-reopen{appearance:none;font:inherit;color:var(--text-secondary);cursor:pointer;border:0}.feature-use-notice-dismiss{background:0 0;border-radius:7px;flex:none;place-items:center;width:32px;height:32px;padding:0;font-size:18px;line-height:1;display:grid}.feature-use-notice-dismiss:hover,.feature-use-notice-dismiss:focus-visible,.feature-use-notice-reopen:hover,.feature-use-notice-reopen:focus-visible{color:var(--text-primary);background:color-mix(in oklab, var(--text-primary) 7%, transparent);outline:none}.feature-use-notice-dismiss:focus-visible,.feature-use-notice-reopen:focus-visible{box-shadow:0 0 0 2px color-mix(in oklab, var(--presence) 65%, transparent)}.feature-use-notice.feature-use-notice--compact{grid-template-columns:auto auto;align-items:center;gap:5px;width:max-content;max-width:100%;padding:5px 6px}.feature-use-notice-reopen{background:0 0;border-radius:6px;align-items:center;gap:7px;min-height:26px;padding:2px 7px;font-weight:700;display:inline-flex}.feature-use-notice-reopen .feature-use-notice-dot{margin-top:0}.feature-use-notice--compact>a{padding:5px 7px}@media (width<=560px){.feature-use-notice{grid-template-columns:auto minmax(0,1fr)}.feature-use-notice-actions{grid-column:2;justify-content:flex-end}.feature-use-notice-dismiss{width:36px;height:36px}.feature-use-notice.feature-use-notice--compact{grid-template-columns:auto auto}}