@mavea/mavea 2.0.0 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (270) hide show
  1. package/CHANGELOG.md +101 -0
  2. package/PRIVACY.md +9 -2
  3. package/README.md +19 -3
  4. package/SECURITY.md +1 -1
  5. package/TERMS.md +4 -2
  6. package/TRADEMARKS.md +3 -1
  7. package/bin/mavea.mjs +40 -8
  8. package/dist/.vite/manifest.json +886 -846
  9. package/dist/assets/AnnotationLayer-BRYhJ1LB.css +1 -0
  10. package/dist/assets/AnnotationLayer-Bh1yiSAK.js +2 -0
  11. package/dist/assets/{AppCommandPalette-DdOPNZ0e.js → AppCommandPalette-DS4sLY_K.js} +1 -1
  12. package/dist/assets/{AtlasView-DO_p0TdZ.js → AtlasView-CYZ9sfXb.js} +1 -1
  13. package/dist/assets/BlockEmpty-B-giiUPy.js +1 -0
  14. package/dist/assets/{CadenceCard-DxceyiPA.js → CadenceCard-j1V7XOxX.js} +1 -1
  15. package/dist/assets/{CheckLogRail-BibJTid0.js → CheckLogRail-onH7DaxW.js} +1 -1
  16. package/dist/assets/{CommandPalette-Bs6tpdZl.js → CommandPalette-Cz8h94Jd.js} +1 -1
  17. package/dist/assets/ConversationVideoStudio-adb7legp.js +1 -0
  18. package/dist/assets/CourseLessonReader-CkzViEij.js +2 -0
  19. package/dist/assets/CourseLessonReader-DNHFQOkX.css +1 -0
  20. package/dist/assets/{CourseRail-CUa7uIGG.css → CourseRail-BDQIWara.css} +1 -1
  21. package/dist/assets/{CourseRail-BQmUsG6v.js → CourseRail-DD8gtAn4.js} +1 -1
  22. package/dist/assets/CoursesApp-B0HFM8Al.js +2 -0
  23. package/dist/assets/{DashPresent-BDWgO9am.js → DashPresent-BdOJ7F9D.js} +1 -1
  24. package/dist/assets/DashboardDetail-Chrpi1Yk.js +2 -0
  25. package/dist/assets/DashboardLoopGate-B01Hpm7O.js +2 -0
  26. package/dist/assets/DashboardLoopRuntime-BcdZtIgH.js +1 -0
  27. package/dist/assets/{DashboardSettings-DJon1Q4o.js → DashboardSettings-5tn-dw6G.js} +1 -1
  28. package/dist/assets/DashboardsApp--jjj-GVX.js +2 -0
  29. package/dist/assets/DeepZoomApp-BpQbKTjc.js +37 -0
  30. package/dist/assets/DelegatePanel-e4y0CJsn.js +33 -0
  31. package/dist/assets/{DemoGallery-DrSlMsnu.js → DemoGallery-DF1ShRG4.js} +1 -1
  32. package/dist/assets/{DropSelect-GwIXHA5o.js → DropSelect-D3Q9Su_x.js} +1 -1
  33. package/dist/assets/{ExportModal-DBUjC71U.js → ExportModal-DkmyBpeN.js} +1 -1
  34. package/dist/assets/ExportModal-sX8MPVPW.css +1 -0
  35. package/dist/assets/{ExtractionPreview-D4M6eXqb.js → ExtractionPreview-C6F1q3qG.js} +2 -2
  36. package/dist/assets/FeatureUseNotice-CCI4mM39.js +1 -0
  37. package/dist/assets/{FlagshipCommandPalette-DAO849RC.js → FlagshipCommandPalette-BkjvGrKT.js} +1 -1
  38. package/dist/assets/{FlagshipShowcase-g2x-1c70.js → FlagshipShowcase-Dx2noFrP.js} +1 -1
  39. package/dist/assets/{FlashcardsApp-BUKzCr65.js → FlashcardsApp-C1TeLlkY.js} +1 -1
  40. package/dist/assets/GalleryApp-7oBldBKU.js +1 -0
  41. package/dist/assets/{HonestByDesign-DgZFEpEx.js → HonestByDesign-DlRrxgrO.js} +1 -1
  42. package/dist/assets/{HowItWorks-DPFpdeGE.js → HowItWorks-BM2yn2dq.js} +1 -1
  43. package/dist/assets/LegalApp-DPfTD0jz.js +1 -0
  44. package/dist/assets/{LegalMarkdownDocument-BBTHuW_M.js → LegalMarkdownDocument-DJgwmK1q.js} +1 -1
  45. package/dist/assets/{LegalPageShell-hMA-7JLf.js → LegalPageShell-DuIwSVSJ.js} +1 -1
  46. package/dist/assets/Library-CDgWdTiF.js +1 -0
  47. package/dist/assets/{LibraryOverlay-DSUWcUe4.js → LibraryOverlay-DsLhiJzF.js} +1 -1
  48. package/dist/assets/LiveApp-CEaISHEZ.css +1 -0
  49. package/dist/assets/LiveApp-DNYYimuo.js +79 -0
  50. package/dist/assets/LiveSettings-CDHQnEtF.js +6 -0
  51. package/dist/assets/{MindMapViewerDrawer-CKdJtHno.js → MindMapViewerDrawer-C3BgiubE.js} +1 -1
  52. package/dist/assets/{MindShape-B3lg_z4X.js → MindShape-DVlgSR1B.js} +1 -1
  53. package/dist/assets/{PinToDashboard-DpQjBLPa.js → PinToDashboard-Dd_egidB.js} +1 -1
  54. package/dist/assets/{PlanReview-CrTbmMAd.js → PlanReview-wOsBpofo.js} +1 -1
  55. package/dist/assets/PresentationDeck-BSMzp5T9.js +1 -0
  56. package/dist/assets/PrismApp-DbbDNVpy.js +2 -0
  57. package/dist/assets/{PrismAskController-C4MuB8om.js → PrismAskController-BgwijoI2.js} +1 -1
  58. package/dist/assets/PrismBriefingPlayer-B1_ziOwl.js +2 -0
  59. package/dist/assets/PrismOverlay-5ZVXu4WL.css +1 -0
  60. package/dist/assets/PrismOverlay-DLxvsh9l.js +105 -0
  61. package/dist/assets/PrismWorkbench-ZlhI7Mhw.js +1 -0
  62. package/dist/assets/{PrivacyApp-A2Bu6LVd.js → PrivacyApp-Ki_5bM9Z.js} +10 -3
  63. package/dist/assets/ReplayCard-WKBKeSKc.js +2 -0
  64. package/dist/assets/ReplayOverlay-PFSJv540.js +1 -0
  65. package/dist/assets/{RewindOverlay-BO7YgDsW.js → RewindOverlay-okltPbfw.js} +1 -1
  66. package/dist/assets/{RippleApp-BXt7tenS.js → RippleApp-DqVyZYKV.js} +2 -2
  67. package/dist/assets/{RippleAskController-BzdwYcYY.js → RippleAskController-BqnazbZ7.js} +1 -1
  68. package/dist/assets/{RippleOverlay-BSxubBwj.js → RippleOverlay-4McJCSV8.js} +2 -2
  69. package/dist/assets/{SeeDontRead-0He5hS2C.js → SeeDontRead-gARjJuF7.js} +1 -1
  70. package/dist/assets/ShareModal-C5HVVMtQ.js +2 -0
  71. package/dist/assets/{ShipCourse-Dg6kCWyH.js → ShipCourse-BUm4TKUk.js} +1 -1
  72. package/dist/assets/{SignatureLoop-QPwB2oNN.js → SignatureLoop-CYspJuij.js} +1 -1
  73. package/dist/assets/SynthesisApp-BNhF9aJ2.js +2 -0
  74. package/dist/assets/SynthesisOverlay-Bvwdc8uQ.js +66 -0
  75. package/dist/assets/TemplatePicker-DBa4lkpf.js +1 -0
  76. package/dist/assets/{TermsApp-zcPDYfuh.js → TermsApp-BvwDtgIz.js} +5 -3
  77. package/dist/assets/TopicCanvas-Cwc6-K3q.js +2 -0
  78. package/dist/assets/{TourPrism-DbinDupp.js → TourPrism-CCjys3-x.js} +1 -1
  79. package/dist/assets/{TrackerTile-CrT9u1I4.js → TrackerTile-B4j5qtop.js} +2 -2
  80. package/dist/assets/{TwoSurfaces-L0CDuyOZ.js → TwoSurfaces-fGm1MJrD.js} +1 -1
  81. package/dist/assets/WorldOverlay-CLWtwuSl.css +1 -0
  82. package/dist/assets/WorldOverlay-JOp1rLyU.js +2 -0
  83. package/dist/assets/{WowFeatures-CwBk4ZMO.js → WowFeatures-D5dJvp9W.js} +1 -1
  84. package/dist/assets/{ZoomDeck-DlnesweX.js → ZoomDeck-DYmkT0TA.js} +1 -1
  85. package/dist/assets/{alternateFinishes-Cgks49KV.js → alternateFinishes-BHcX08Hs.js} +2 -2
  86. package/dist/assets/annotationAuto-B8_I3PNS.js +1 -0
  87. package/dist/assets/annotationReel-BA8Fv9Or.js +1 -0
  88. package/dist/assets/audioTrack-BJ2D_nuy.js +1 -0
  89. package/dist/assets/{BlockEmpty-B82uCse8.js → axis-DHAV38YM.js} +1 -1
  90. package/dist/assets/backup-DkCsHNEE.js +1 -0
  91. package/dist/assets/cache-7UEbF3S6.js +1 -0
  92. package/dist/assets/canvas-CYrbzF43.js +1 -0
  93. package/dist/assets/capture-Y6Qm8zCN.js +2 -0
  94. package/dist/assets/{catalog-Db9GWM6N.js → catalog-CRekRbKO.js} +1 -1
  95. package/dist/assets/chapters-DcdG3Lu8.js +1 -0
  96. package/dist/assets/{codeContext-goNoLAIr.js → codeContext-CFnI3GLf.js} +1 -1
  97. package/dist/assets/{confirmAdd-CZ829Mbx.js → confirmAdd-D-TTCQ31.js} +1 -1
  98. package/dist/assets/contentVault-XKWjF2FB.js +1 -0
  99. package/dist/assets/{dashboardEvents-CiayRLrH.js → dashboardEvents-MzCzak6K.js} +1 -1
  100. package/dist/assets/{deepen-DAeHHFiI.js → deepen-FZiVqiEc.js} +1 -1
  101. package/dist/assets/effort-BftNJCCV.js +39 -0
  102. package/dist/assets/empty-D51uhW0E.js +1 -0
  103. package/dist/assets/explode-niun7Zqc.js +15 -0
  104. package/dist/assets/{format-g3dP8OI3.js → format-BkvssSOr.js} +1 -1
  105. package/dist/assets/{generate-COfYQFmT.js → generate-BZobrQPX.js} +1 -1
  106. package/dist/assets/{generateBeats-COflu5Zi.js → generateBeats-Dqtfd8HC.js} +1 -1
  107. package/dist/assets/generateCourse-DPL0bO3L.js +28 -0
  108. package/dist/assets/generateLive-B7nlaqz8.js +24 -0
  109. package/dist/assets/{gesture-Bouqjr3g.js → gesture-BBS5nQEi.js} +2 -2
  110. package/dist/assets/{githubBrowser-BDiuD9dz.js → githubBrowser-CErQprLW.js} +1 -1
  111. package/dist/assets/homeTarget-CDc-r2mj.js +1 -0
  112. package/dist/assets/http-Bqk6nJiH.js +2 -0
  113. package/dist/assets/index-CFE0vqqO.css +1 -0
  114. package/dist/assets/{index-LiHcEJt_.js → index-Db-FgYxX.js} +4 -4
  115. package/dist/assets/json-J4Y32_i9.js +1 -0
  116. package/dist/assets/kokoro-yB7iU_JU.js +1 -0
  117. package/dist/assets/{ledger-Cv0LBflx.js → ledger-DHS2di3l.js} +1 -1
  118. package/dist/assets/lens-DyGK7Owa.js +1 -0
  119. package/dist/assets/{lib-u95BsX_B.js → lib-Dkb5WBRc.js} +1 -1
  120. package/dist/assets/liveSchema-Z_39HuDI.js +125 -0
  121. package/dist/assets/{loader-DgMLGfAC.js → loader-Ciz6XbG-.js} +2 -2
  122. package/dist/assets/{model-CAewjw45.js → model-FR-9md4s.js} +1 -1
  123. package/dist/assets/{neighborhoods-CqECCmo8.js → neighborhoods-B56WegJs.js} +1 -1
  124. package/dist/assets/notes-CEloxKQ3.js +1 -0
  125. package/dist/assets/offers-eBNj_lSP.js +1 -0
  126. package/dist/assets/{openWorld-BHTJM39n.js → openWorld-B4VY6xO7.js} +1 -1
  127. package/dist/assets/{owners-HRBX7JN_.js → owners-CP-4Q59L.js} +1 -1
  128. package/dist/assets/{pen-DtEW1xf4.js → pen-UKrUHlDA.js} +1 -1
  129. package/dist/assets/{penStrokes-DlHnO9xE.js → penStrokes-CTC3AYiz.js} +1 -1
  130. package/dist/assets/{perfProbe-ezVn1mOu.js → perfProbe-DrOeB7yd.js} +1 -1
  131. package/dist/assets/{pin-BPGVDgnq.js → pin-C5_s4Ju5.js} +1 -1
  132. package/dist/assets/{planTracker-BwoKEftp.js → planTracker-BA-x4jbw.js} +1 -1
  133. package/dist/assets/{portal-B9DmFo6J.js → portal-TqJbr2rR.js} +1 -1
  134. package/dist/assets/prewarm-Bt5X_9CM.js +1 -0
  135. package/dist/assets/providers-CPhoN8j0.js +1 -0
  136. package/dist/assets/quietHours-LtXDl4-v.js +1 -0
  137. package/dist/assets/{ready-yBSGJubb.js → ready-_sg3IJkE.js} +1 -1
  138. package/dist/assets/{registry-7tKTrzeZ.js → registry-BHDUu15I.js} +1 -1
  139. package/dist/assets/{registry-D06LKiUk.js → registry-BPLbZIVz.js} +1 -1
  140. package/dist/assets/registry-BQuygaKz.js +1 -0
  141. package/dist/assets/registry-B_wlsfxh.js +1 -0
  142. package/dist/assets/{registry-Bl2qfp5V.js → registry-Bjf2Ggs6.js} +1 -1
  143. package/dist/assets/{registry-CE1T0z9x.js → registry-BmjYillB.js} +1 -1
  144. package/dist/assets/{registry-DGNSqTxE.js → registry-BodYWiga.js} +1 -1
  145. package/dist/assets/{registry-Bl7zAWKt.js → registry-BwlvYVHq.js} +1 -1
  146. package/dist/assets/{registry-BJEvFgoL.js → registry-BxkAuBx8.js} +1 -1
  147. package/dist/assets/{registry-BdHj_oIs.js → registry-C3bIc5Kp.js} +1 -1
  148. package/dist/assets/{registry-CEV5h2cu.css → registry-CIcGBgtK.css} +1 -1
  149. package/dist/assets/{registry-BlujNlQJ.js → registry-CfIJ9dJS.js} +1 -1
  150. package/dist/assets/{registry-CvylL2BN.css → registry-CmWPyj7Q.css} +1 -1
  151. package/dist/assets/{registry-BDXwUn3i.js → registry-CvtHBjkb.js} +1 -1
  152. package/dist/assets/{registry-Dd1lcXrO.js → registry-Cz5cZREW.js} +2 -2
  153. package/dist/assets/registry-Di1fTdpi.js +48 -0
  154. package/dist/assets/registry-GxnzELw0.js +1 -0
  155. package/dist/assets/{registry-Cgo4C0ux.js → registry-JRteQJcE.js} +1 -1
  156. package/dist/assets/registry-MwJlqlFZ.js +1 -0
  157. package/dist/assets/{registry-B53EEn8S.js → registry-YrewlFlo.js} +1 -1
  158. package/dist/assets/{registry-qRfnKTt4.js → registry-uiAoJKXu.js} +1 -1
  159. package/dist/assets/{relate-aQFFr11O.js → relate-CCma73G9.js} +1 -1
  160. package/dist/assets/{replay-CalqEgdW.js → replay-dMDmsTaD.js} +1 -1
  161. package/dist/assets/{run-CwMSPOps.js → run-BVgCc5Xi.js} +1 -1
  162. package/dist/assets/{run-DCQrxgHA.js → run-CW67JOGe.js} +1 -1
  163. package/dist/assets/{run-CuHaB8wF.js → run-DqsfL9JC.js} +1 -1
  164. package/dist/assets/{select-wEtBn9U6.js → select-BuqyXI8k.js} +1 -1
  165. package/dist/assets/sentenceCase-CLDiNB0f.js +1 -0
  166. package/dist/assets/shard054-CNzJxw2V.js +1 -0
  167. package/dist/assets/shard070-BmNyRhxw.js +1 -0
  168. package/dist/assets/spokenText-Dy-GZvZV.js +1 -0
  169. package/dist/assets/store-C9s8Bfz0.js +1 -0
  170. package/dist/assets/store-CgA7mKy1.js +1 -0
  171. package/dist/assets/store-D16dGt7I.js +1 -0
  172. package/dist/assets/{store-BWLbFXiY.js → store-DqOaVRLn.js} +1 -1
  173. package/dist/assets/store-gfPI5TVE.js +1 -0
  174. package/dist/assets/useDashboardLoop-Cnxmf7wU.js +5 -0
  175. package/dist/assets/{useDashboards-lgQnk2Al.js → useDashboards-B-EjE8FH.js} +1 -1
  176. package/dist/assets/{useLedger-1WVXef68.js → useLedger-D4cXEwI0.js} +1 -1
  177. package/dist/assets/useLiveConfig-CvOQTr0s.js +1 -0
  178. package/dist/assets/useStudy-70Iz4ZVn.js +1 -0
  179. package/dist/assets/validate-MQG0EcTD.js +4 -0
  180. package/dist/assets/walkSync-D6leFb_u.js +1 -0
  181. package/dist/fonts/LICENSE.txt +2 -0
  182. package/dist/fonts/PROVENANCE.md +1 -0
  183. package/dist/fonts/caveat-var-latin.woff2 +0 -0
  184. package/dist/fonts/fonts.css +10 -0
  185. package/dist/index.html +6 -2
  186. package/dist/legal/PRIVACY.md +9 -2
  187. package/dist/legal/SECURITY.md +1 -1
  188. package/dist/legal/TERMS.md +4 -2
  189. package/dist/legal/TRADEMARKS.md +3 -1
  190. package/docs/media/go-hub.jpg +0 -0
  191. package/docs/media/living-answer.jpg +0 -0
  192. package/package.json +1 -1
  193. package/dist/assets/AnnotationLayer-Cccb12ps.js +0 -0
  194. package/dist/assets/AnnotationLayer-ClU-e6qL.css +0 -1
  195. package/dist/assets/BriefingPlayer-74mRKyjl.js +0 -1
  196. package/dist/assets/ConversationVideoStudio-DMIPUCcq.js +0 -1
  197. package/dist/assets/CourseLessonReader-COmTQdSK.css +0 -1
  198. package/dist/assets/CourseLessonReader-D29Kix4f.js +0 -2
  199. package/dist/assets/CoursesApp-DcDsS_ZS.js +0 -2
  200. package/dist/assets/DashboardDetail-BrnAdWfy.js +0 -2
  201. package/dist/assets/DashboardLoopGate-NxMcQ4rD.js +0 -2
  202. package/dist/assets/DashboardLoopRuntime-Dsy9u1wa.js +0 -1
  203. package/dist/assets/DashboardsApp-DxyMn3x_.js +0 -2
  204. package/dist/assets/DeepZoomApp-nNjqoyYE.js +0 -37
  205. package/dist/assets/DelegatePanel-DN_ZL0j7.js +0 -33
  206. package/dist/assets/ExportModal-D4WpAg2c.css +0 -1
  207. package/dist/assets/FeatureUseNotice-Bda9jr3W.js +0 -1
  208. package/dist/assets/GalleryApp-ot_A7ZF-.js +0 -1
  209. package/dist/assets/LegalApp-C56kWdmK.js +0 -1
  210. package/dist/assets/Library-CVj7R6F4.js +0 -1
  211. package/dist/assets/LiveApp-B62EMybC.js +0 -79
  212. package/dist/assets/LiveApp-CziqEsOb.css +0 -1
  213. package/dist/assets/LiveSettings-BITIaMoT.js +0 -6
  214. package/dist/assets/PresentationDeck-CfYadu9V.js +0 -1
  215. package/dist/assets/PrismApp-bRKK_3JA.js +0 -2
  216. package/dist/assets/PrismBriefingPlayer-ChJj6hSS.js +0 -2
  217. package/dist/assets/PrismOverlay-BwnF4BEn.css +0 -1
  218. package/dist/assets/PrismOverlay-Pp6ZKmTc.js +0 -105
  219. package/dist/assets/PrismWorkbench-BCV7r4Oa.js +0 -1
  220. package/dist/assets/ReplayCard-B6NYiYzQ.js +0 -2
  221. package/dist/assets/ReplayOverlay-BJKtJ-vc.js +0 -1
  222. package/dist/assets/ShareModal-xYdZWJxy.js +0 -2
  223. package/dist/assets/SynthesisApp-DrCq6NDa.js +0 -2
  224. package/dist/assets/SynthesisOverlay-DCa-2Pz_.js +0 -66
  225. package/dist/assets/TopicCanvas-Bw4bMFpe.js +0 -2
  226. package/dist/assets/WorldOverlay-BcjqG1BR.js +0 -2
  227. package/dist/assets/WorldOverlay-D7ay5y4D.css +0 -1
  228. package/dist/assets/annotationAuto-B2UdfJNj.js +0 -1
  229. package/dist/assets/annotationReel-K2FYv-3B.js +0 -1
  230. package/dist/assets/backup-685QrAjt.js +0 -1
  231. package/dist/assets/cache-CvbSI-pr.js +0 -1
  232. package/dist/assets/canvas-C3O7MEA3.js +0 -1
  233. package/dist/assets/capture-DgJLQ_0-.js +0 -2
  234. package/dist/assets/chapters-CIvdCeBC.js +0 -1
  235. package/dist/assets/contentVault-xfUwSJ3i.js +0 -1
  236. package/dist/assets/effort-jJe4iMIq.js +0 -39
  237. package/dist/assets/empty-BO1NC9qY.js +0 -1
  238. package/dist/assets/explode-CPnvJiTg.js +0 -15
  239. package/dist/assets/friendlyAsk-BBdRZIar.js +0 -1
  240. package/dist/assets/generateCourse-BldPpgdh.js +0 -28
  241. package/dist/assets/generateLive-DGwnpIip.js +0 -24
  242. package/dist/assets/homeTarget-CwFsJYwb.js +0 -1
  243. package/dist/assets/http-Lar_UMKb.js +0 -2
  244. package/dist/assets/index-BIUYTk1W.css +0 -1
  245. package/dist/assets/json-B0N3XRZU.js +0 -1
  246. package/dist/assets/kokoro-DXRj0KQX.js +0 -1
  247. package/dist/assets/lens-ChFJD9il.js +0 -1
  248. package/dist/assets/liveSchema-DyfND6P2.js +0 -100
  249. package/dist/assets/notes-DzIAEESd.js +0 -1
  250. package/dist/assets/prewarm-BgUqAJbF.js +0 -1
  251. package/dist/assets/providers-0DthJW_I.js +0 -1
  252. package/dist/assets/quietHours-DyynzDyC.js +0 -1
  253. package/dist/assets/registry-BQzvA61G.js +0 -1
  254. package/dist/assets/registry-BT6ydF33.js +0 -1
  255. package/dist/assets/registry-CPImC7mO.js +0 -1
  256. package/dist/assets/registry-KRYoVMCh.js +0 -48
  257. package/dist/assets/registry-QbArAJKB.js +0 -1
  258. package/dist/assets/shard054-BoC-LNYu.js +0 -1
  259. package/dist/assets/shard070-Dm9m2a5U.js +0 -1
  260. package/dist/assets/spokenText-C88IQJ0M.js +0 -1
  261. package/dist/assets/store-Ba9vzL4H.js +0 -1
  262. package/dist/assets/store-BwyOArJl.js +0 -1
  263. package/dist/assets/store-D-f8ZuaK.js +0 -1
  264. package/dist/assets/store-ruEsXJjU.js +0 -1
  265. package/dist/assets/useDashboardLoop-ifcuVRo-.js +0 -5
  266. package/dist/assets/useLiveConfig-B4CmBiAK.js +0 -1
  267. package/dist/assets/useStudy-CySgE3Cx.js +0 -1
  268. package/dist/assets/validate-sGUCmPAs.js +0 -4
  269. package/dist/assets/walkSync-DBne70gg.js +0 -1
  270. /package/dist/assets/{BriefingPlayer-DHV4vMga.css → PrismBriefingPlayer-DHV4vMga.css} +0 -0
package/dist/index.html CHANGED
@@ -35,6 +35,10 @@
35
35
  content="default-src 'self'; script-src 'self' 'wasm-unsafe-eval'; style-src 'self' 'unsafe-inline'; font-src 'self'; img-src 'self' data: blob: https://upload.wikimedia.org https://tiles.openfreemap.org; connect-src 'self' https://en.wikipedia.org https://api.anthropic.com https://api.openai.com https://generativelanguage.googleapis.com https://openrouter.ai https://api.x.ai https://api.github.com https://api.search.brave.com https://api.tavily.com https://upload.wikimedia.org https://tiles.openfreemap.org; media-src 'self' blob:; worker-src 'self' blob:; frame-src 'self'; object-src 'none'; base-uri 'self'; form-action 'self'"
36
36
  />
37
37
  <title>Mavéa · Talk to AI. See what it means.</title>
38
+ <meta
39
+ name="description"
40
+ content="Mavéa is a voice-first AI presence. Talk to it and watch the answer appear as charts, timelines, and maps — running locally, with your own API key."
41
+ />
38
42
  <link rel="icon" type="image/svg+xml" href="/favicon.svg" />
39
43
  <!-- Self-hosted fonts (public/fonts, OFL): no third-party request, and the app works offline.
40
44
  Preload only the compact UI face. Newsreader is display:swap and loads at normal priority;
@@ -130,7 +134,7 @@
130
134
  }
131
135
  }
132
136
  </style>
133
- <script type="module" crossorigin src="/assets/index-LiHcEJt_.js"></script>
137
+ <script type="module" crossorigin src="/assets/index-Db-FgYxX.js"></script>
134
138
  <link rel="modulepreload" crossorigin href="/assets/rolldown-runtime-DkW27tQK.js">
135
139
  <link rel="modulepreload" crossorigin href="/assets/react-BZJXY1be.js">
136
140
  <link rel="modulepreload" crossorigin href="/assets/compiler-runtime-qQQXpJgv.js">
@@ -142,7 +146,7 @@
142
146
  <link rel="modulepreload" crossorigin href="/assets/lazyRetry-D50B1UMY.js">
143
147
  <link rel="modulepreload" crossorigin href="/assets/preloadableLazy-MIX1ApBW.js">
144
148
  <link rel="modulepreload" crossorigin href="/assets/theme-D5D55hZi.js">
145
- <link rel="stylesheet" crossorigin href="/assets/index-BIUYTk1W.css">
149
+ <link rel="stylesheet" crossorigin href="/assets/index-CFE0vqqO.css">
146
150
  </head>
147
151
  <body>
148
152
  <div id="boot" role="status" aria-busy="true" aria-label="Loading Mavéa">
@@ -1,6 +1,6 @@
1
1
  # Mavéa Privacy Notice
2
2
 
3
- Effective: August 17, 2026
3
+ Effective: August 22, 2026
4
4
 
5
5
  This notice describes the current, unmodified local and self-hosted Mavéa software. It does not describe a future hosted service. Local-first does not mean every feature stays on your device: connected features send data through the deployment to third parties you choose. If a person or organization deploys Mavéa for others, that operator must provide any additional privacy notices and controls required for its deployment.
6
6
 
@@ -25,7 +25,8 @@ Depending on the features you use, browser storage may contain:
25
25
  - drafts, tracked items, presentation settings, and recent feature state;
26
26
  - provider and model configuration;
27
27
  - remembered provider, search, or optional GitHub credentials;
28
- - a short-lived cache of recent questions and the answers to them, kept on the device so that asking the same thing again does not bill your key a second time; it expires within a day, and it deliberately excludes any answer that drew on attachments, ink, filled-in blanks, cited sources, or your remembered facts;
28
+ - a short-lived cache of recent questions and the answers to them, kept on the device so that asking the same thing again does not bill your key a second time; it expires within a day, and it deliberately excludes any answer that drew on attachments, ink, filled-in blanks, cited sources, or your remembered facts (document text attached to a Prism or Synthesis map is kept separately — see the next entry);
29
+ - the map of a document you exploded with Prism or Synthesis — its claims and the extracted page text they are quoted against — kept on the device so re-opening the same file does not bill your key to read it again. It is filed under that file's identity and the model that read it, so it is only ever reused for the same document; it does not expire on a timer, because the mapping cannot go stale and re-running it would charge you for an identical result. It is bounded instead: the least recently opened entries are dropped once the store passes a fixed number of entries or a fixed total size. Clearing site data removes it;
29
30
  - temporary in-progress and finished video-export files in origin-private browser storage until the export is consumed or discarded; and
30
31
  - short-lived demo, tour, route, and in-progress session data.
31
32
 
@@ -41,6 +42,8 @@ Provider and search keys stay in memory until reload unless you choose Remember.
41
42
 
42
43
  Keys are decrypted when needed and pass through the deployment's same-origin proxy to the provider you selected. The proxy and its host can technically access credentials and content in transit. Browser encryption does not protect against an active compromise of the device, browser, extension, deployment, proxy, or provider.
43
44
 
45
+ The scope you grant is the boundary of what these features can read: a token that can reach private repositories lets any feature you run reach them too, and what it reads can then be sent to your selected model provider (see section 4). Review the scopes at the point of authorization, prefer read-only, and revoke a connection you are no longer using.
46
+
44
47
  Optional GitHub and Google connections can store access tokens, refresh tokens, or repository settings in the actions gateway or its host configuration. The unmodified gateway writes persisted OAuth tokens to an owner-readable host file and keeps limited audit metadata, not request bodies or provider response text. Whoever runs the gateway controls that file, its backups, logs, deletion, and security.
45
48
 
46
49
  The unmodified gateway has no separate Mavéa user accounts. On a shared deployment, everyone allowed to use action features may act through the deployment operator's connected GitHub or Google account. Use a dedicated, least-privilege gateway and do not expose it to people who should not share those permissions.
@@ -51,6 +54,10 @@ Text you type or paste, conversation context, remembered facts, attached files,
51
54
 
52
55
  Prism and Synthesis stage and extract supported files locally where possible, but relevant content can still be sent for analysis. Ripple can parse code locally before optional model enrichment sends relevant code or diffs. Local staging is not a promise that later analysis remains local.
53
56
 
57
+ Two of these flows do not wait for you to press anything, which is the part worth knowing. Features that watch something for you — tracked items, dashboards, and the morning brief — re-issue requests on the cadence you configure, so the same content and credentials go out again on a timer rather than only when you ask; most run only while Mavéa is open, and each run can bill your provider. And remembered facts are attached to later requests: something you told Mavéa once can be included in a request you make weeks afterwards, to whichever provider is selected at that time. You can review or forget remembered items, and turning a tracked item or a dashboard off stops its checks.
58
+
59
+ Connecting a code host is the same boundary, and it is worth stating plainly because the content is not something you typed: when you point Mavéa at a repository, the files, documentation, diffs, commit messages, issues, and other repository data a feature reads can be sent through the deployment to the model provider you selected. **A private repository is not treated differently from a public one** — if you grant a token or OAuth scope that can read private repositories, private source and internal documentation can leave your control the same way a pasted snippet does, and the provider's own retention and processing terms then apply to it. Grant the narrowest scope that makes the feature work, prefer read-only and a repository allowlist where your host offers one, use a dedicated account for shared deployments, and do not connect a repository whose contents you are not permitted to disclose to that provider.
60
+
54
61
  ## 5. Voice, microphone, speech, and reels
55
62
 
56
63
  If you enable listening, the browser captures microphone input. Audio is processed by the deployment's configured speech-to-text endpoint — by default a local one on the same machine, though an operator can configure a different endpoint — which converts speech to text. Recognized transcripts may then be sent to your selected model provider, including while listening continues.
@@ -16,7 +16,7 @@ Please **do not** open a public issue for security problems. Instead:
16
16
  - **Preferred** — open a private report through GitHub:
17
17
  [**Report a vulnerability**](https://github.com/TryMaveaAI/mavea/security/advisories/new)
18
18
  (the repository's _Security → Advisories_ tab), or
19
- - email the maintainers at **akash.maitra@gmail.com**.
19
+ - email the maintainers at **trymavea@gmail.com**.
20
20
 
21
21
  Do not submit a public or external security pull request or attach exploit code unless a maintainer
22
22
  requests it through the private reporting channel.
@@ -1,6 +1,6 @@
1
1
  # Mavéa Terms of Use
2
2
 
3
- Effective: August 17, 2026
3
+ Effective: August 22, 2026
4
4
 
5
5
  These Terms of Use (the **Terms**) govern your use of the Mavéa application, command-line package, demos, documentation, and related materials (collectively, the **Service**). **Licensor** means each applicable copyright holder offering software under the PolyForm license. **Maintainers** means the people who publish or contribute to Mavéa; a Maintainer is not necessarily a Licensor. **Deployment operator** means the person or organization hosting the copy you use. **Responsible Party** means the applicable Licensor, Maintainer, or deployment operator responsible for a statement, obligation, service, or claim. In these Terms, **we**, **us**, or **our** means the relevant Responsible Party or Parties in context. A separately operated deployment remains independent from the Licensors and Maintainers unless the same person or organization serves both roles.
6
6
 
@@ -38,6 +38,8 @@ You must independently review and verify important output against qualified prof
38
38
 
39
39
  Mavéa can communicate with model, search, speech, media, hosting, OAuth, and action providers that you select. Those services are independent third parties and are governed by their own contracts, privacy policies, acceptable-use rules, retention practices, availability, and pricing.
40
40
 
41
+ Connecting a code host or other content account authorizes Mavéa to read what that credential can reach and to include the relevant parts in requests to the provider you select. This applies to private repositories exactly as it does to public ones: if the scope you grant can read private source, internal documentation, diffs, or issues, that material can be sent to a third party under that party's own terms. You are responsible for having the right to disclose it, for granting the narrowest scope that works, and for revoking connections you no longer use.
42
+
41
43
  You provide and control your own accounts, API keys, OAuth grants, and other credentials. Requests send relevant credentials and content through the deployment's same-origin proxy before reaching the selected third party. The proxy operator can access that material in transit. You must use a deployment operator you trust.
42
44
 
43
45
  All costs of using the Service are your responsibility, including hardware, electricity, network access, hosting, domains, model tokens, search requests, speech services, storage, OAuth applications, connected-account activity, taxes, and any other third-party charges. Labels such as "fast", "balanced", or "thorough" are relative product descriptions, not price quotes or spending limits. Any token counts or usage figures the Service displays are informational only: they report what a provider stated for the current session in this browser, are not a billing record, and may be incomplete, unavailable, or wrong — your provider's own account is the authoritative measure of what you were charged. You are responsible for provider budgets, quotas, and billing alerts.
@@ -131,4 +133,4 @@ No governing-law, arbitration, venue, or class-action-waiver clause is included
131
133
 
132
134
  ## 16. Contact
133
135
 
134
- For a hosted copy, contact the person or organization that gave you access. For the public repository, use the Mavéa GitHub issue tracker for non-sensitive questions. Do not put confidential information in a public issue. Security reports must follow [SECURITY.md](./SECURITY.md).
136
+ For a hosted copy, contact the person or organization that gave you access. For the public repository, use the Mavéa GitHub issue tracker for non-sensitive questions. Do not put confidential information in a public issue. Security reports must follow [SECURITY.md](./SECURITY.md). Commercial licensing, trademark permission, and other business inquiries may be sent to trymavea@gmail.com. Correspondence does not create a license, warranty, support obligation, or commercial right; see Section 2.
@@ -1,4 +1,4 @@
1
- # Mavéa Trademark Policy
1
+ # Mavéa Trademark Policy
2
2
 
3
3
  Effective: July 19, 2026
4
4
 
@@ -13,3 +13,5 @@ You may make truthful, nominative references such as "runs with Mavéa" or "a no
13
13
  - preserve all required copyright and license notices.
14
14
 
15
15
  You may not use the Mavéa Marks for commercial promotion, merchandise, advertising, or fundraising without prior written permission from the applicable rights holders. No permission is granted by silence, issue discussion, or software-license compliance.
16
+
17
+ Requests for written permission may be sent to trymavea@gmail.com. A request is not permission; only a signed writing from the applicable rights holder grants it.
Binary file
Binary file
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mavea/mavea",
3
- "version": "2.0.0",
3
+ "version": "2.1.0",
4
4
  "type": "module",
5
5
  "description": "Mavéa — an AI Presence interface. Talk to AI. See what it means.",
6
6
  "keywords": [
@@ -1 +0,0 @@
1
- :root{--ink-gesture:#e8963f;--ink-key:var(--presence);--ink-cool:#5b8dee}:root[data-theme=light]{--ink-gesture:#c2722e;--ink-cool:#3566c9}.live-voice .card-grid>div,.live-voice .focus-hero-card.focus-in{position:relative}.ink-layer{pointer-events:none;z-index:5;width:100%;height:100%;position:absolute;inset:0;overflow:hidden}.live-voice .card-grid{position:relative}.ink-connect-layer{pointer-events:none;z-index:7;width:100%;height:100%;position:absolute;inset:0;overflow:visible}.ink-stroke{fill:none;stroke:var(--ink-gesture,var(--warning));stroke-width:2.6px;stroke-linecap:round;stroke-linejoin:round;opacity:.92;stroke-dasharray:1;stroke-dashoffset:1px;animation:ink-draw 1s cubic-bezier(.45, 0, .3, 1) var(--ink-delay,0s) forwards}.ink-halo{fill:none;stroke:var(--ink-gesture,var(--warning));stroke-width:7px;stroke-linecap:round;stroke-linejoin:round;opacity:.13;stroke-dasharray:1;stroke-dashoffset:1px;animation:ink-draw 1s cubic-bezier(.45, 0, .3, 1) var(--ink-delay,0s) forwards}.ink-stroke.ink-head{stroke-width:2.4px;animation-duration:.28s;animation-delay:calc(var(--ink-delay,0s) + .96s)}@keyframes ink-draw{to{stroke-dashoffset:0}}.ink-stroke[data-color=key],.ink-halo[data-color=key]{stroke:var(--ink-key)}.ink-stroke[data-color=cool],.ink-halo[data-color=cool]{stroke:var(--ink-cool)}.ink-fill{fill:var(--ink-gesture);stroke:none;opacity:.18;transform-origin:0;transform-box:fill-box;animation:ink-fill-reveal .7s cubic-bezier(.4, 0, .2, 1) var(--ink-delay,0s) forwards}.ink-fill[data-color=key]{fill:var(--ink-key)}.ink-fill[data-color=cool]{fill:var(--ink-cool)}@keyframes ink-fill-reveal{0%{opacity:.04;transform:scaleX(0)}to{opacity:.18;transform:scaleX(1)}}.ink-note{fill:var(--ink-gesture,var(--warning));letter-spacing:.01em;opacity:0;animation:ink-note-in .4s ease-out calc(var(--ink-delay,0s) + .5s) forwards;font-family:Bradley Hand,Segoe Print,Comic Sans MS,Marker Felt,cursive;font-size:14px;font-style:italic;font-weight:600}.ink-note[data-color=key]{fill:var(--ink-key)}.ink-note[data-color=cool]{fill:var(--ink-cool)}.ink-note.ink-glyph{letter-spacing:0;font-size:26px;font-style:normal;font-weight:700}@keyframes ink-note-in{0%{opacity:0;transform:translateY(2px)}to{opacity:.95;transform:translateY(0)}}.ink-step-dot{fill:var(--ink-gesture,var(--warning));opacity:0;animation:ink-note-in .35s ease-out var(--ink-delay,0s) forwards}.ink-step-dot[data-color=key]{fill:var(--ink-key)}.ink-step-dot[data-color=cool]{fill:var(--ink-cool)}.ink-step-num{fill:#fff;opacity:0;animation:ink-note-in .35s ease-out var(--ink-delay,0s) forwards;font-family:inherit;font-size:10px;font-weight:700}@media (prefers-reduced-motion:reduce){.ink-stroke,.ink-halo{stroke-dashoffset:0;animation:none}.ink-fill{opacity:.18;animation:none}.ink-note{opacity:.95;animation:none}.ink-step-dot,.ink-step-num{opacity:1;animation:none}}[data-inking]:after{content:"✦ MAVÉA IS DRAWING";letter-spacing:.1em;text-transform:uppercase;color:var(--ink-gesture);pointer-events:none;z-index:6;white-space:nowrap;animation:ink-badge var(--ink-badge-dur,2.4s) ease forwards;font-size:9px;font-weight:700;position:absolute;top:10px;right:12px}[data-inking=key]:after{color:var(--ink-key)}[data-inking=cool]:after{color:var(--ink-cool)}@keyframes ink-badge{0%{opacity:0;transform:translateY(-3px)}12%{opacity:.9;transform:translateY(0)}70%{opacity:.9;transform:translateY(0)}to{opacity:0;transform:translateY(-2px)}}@media (prefers-reduced-motion:reduce){[data-inking]:after{animation:none;display:none}}.ink-user-overlay{pointer-events:none;z-index:10;width:100%;height:100%;position:absolute;inset:0;overflow:visible}.ink-armed{cursor:crosshair;touch-action:none}.ink-capturing{touch-action:none}.ink-jump-glow{animation:.75s ease-out both ink-jump-glow}@keyframes ink-jump-glow{0%{box-shadow:0 0 0 0 color-mix(in oklab, var(--ink-gesture) 55%, transparent), var(--shadow-card,none)}35%{box-shadow:0 0 0 5px color-mix(in oklab, var(--ink-gesture) 28%, transparent), var(--shadow-card,none)}to{box-shadow:0 0 0 0 transparent, var(--shadow-card,none)}}.ink-user-stroke{fill:none;stroke:var(--ink-cool);stroke-width:2.4px;stroke-linecap:round;stroke-linejoin:round;opacity:.85;transition:opacity .4s}.ink-user-halo{fill:none;stroke:var(--ink-cool);stroke-width:7px;stroke-linecap:round;stroke-linejoin:round;opacity:.11;transition:opacity .4s}.ink-user-settled{opacity:.9}.ink-highlight{fill:color-mix(in oklab, var(--ink-cool) 22%, transparent);stroke:color-mix(in oklab, var(--ink-cool) 55%, transparent);stroke-width:1px}.mark-toggle{border:1px solid var(--line);border-radius:var(--r-full);background:var(--surface-elevated);color:var(--text-secondary);font:inherit;cursor:pointer;align-items:center;gap:5px;padding:5px 10px;font-size:12px;font-weight:600;transition:color .18s,border-color .18s,background .18s;display:inline-flex}.mark-toggle:hover{color:var(--text-primary);border-color:color-mix(in oklab, var(--ink-cool) 45%, var(--line))}.mark-toggle.on{color:var(--ink-cool);border-color:color-mix(in oklab, var(--ink-cool) 60%, transparent);background:color-mix(in oklab, var(--ink-cool) 12%, var(--surface-elevated))}.ink-bar{width:100%;max-width:var(--canvas-col-max);flex-wrap:wrap;align-items:center;gap:8px;margin-inline:auto;display:flex}.ink-miss{color:var(--text-secondary);border-radius:var(--r-sm);background:color-mix(in oklab, var(--warning) 12%, var(--surface-elevated));padding:3px 10px;font-size:12px;line-height:1.3;animation:.3s cubic-bezier(.16,1,.3,1) both ink-coach-in}.ink-howto{border-radius:var(--r-full);background:color-mix(in oklab, var(--ink-cool) 11%, var(--surface-elevated));color:var(--text-secondary);align-items:center;gap:8px;padding:4px 11px;font-size:12px;line-height:1.3;animation:.3s cubic-bezier(.16,1,.3,1) both ink-coach-in;display:inline-flex}.ink-howto-dot{background:var(--ink-cool);width:7px;height:7px;box-shadow:0 0 0 3px color-mix(in oklab, var(--ink-cool) 22%, transparent);border-radius:50%;flex:none}.ink-coach{border:1px solid color-mix(in oklab, var(--ink-cool) 38%, var(--line));border-radius:var(--r-md);background:color-mix(in oklab, var(--ink-cool) 9%, var(--surface-elevated));max-width:540px;color:var(--text-secondary);align-items:center;gap:8px;padding:6px 8px 6px 12px;font-size:12px;line-height:1.35;animation:.4s cubic-bezier(.16,1,.3,1) both ink-coach-in;display:inline-flex}.ink-coach strong{color:var(--text-primary);font-weight:650}.ink-coach-spark{font-size:14px}.ink-coach-text{flex:1}.ink-coach-x{border-radius:var(--r-full);width:22px;height:22px;color:var(--text-secondary);cursor:pointer;background:0 0;border:none;flex:none;justify-content:center;align-items:center;padding:0;display:inline-flex}.ink-coach-x:hover{color:var(--text-primary);background:color-mix(in oklab, var(--text-primary) 8%, transparent)}@keyframes ink-coach-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}.ink-bar.coaching .mark-toggle{animation:2.1s ease-in-out infinite ink-mark-pulse}@keyframes ink-mark-pulse{0%{box-shadow:0 0 0 0 color-mix(in oklab, var(--ink-cool) 45%, transparent)}70%{box-shadow:0 0 0 6px color-mix(in oklab, var(--ink-cool) 0%, transparent)}to{box-shadow:0 0 0 0 color-mix(in oklab, var(--ink-cool) 0%, transparent)}}.ink-dock{flex-wrap:wrap;align-items:center;gap:6px;padding:6px 2px;display:flex}.ink-chip{border:1px solid color-mix(in oklab, var(--ink-cool) 40%, var(--line));border-radius:var(--r-full);background:color-mix(in oklab, var(--ink-cool) 9%, var(--surface-elevated));max-width:240px;color:var(--text-primary);align-items:center;gap:4px;padding:4px 6px 4px 10px;font-size:12px;line-height:1.3;display:inline-flex}.ink-chip-text{white-space:nowrap;text-overflow:ellipsis;min-width:0;overflow:hidden}.ink-chip-x{border-radius:var(--r-full);width:16px;height:16px;color:var(--ink-cool);cursor:pointer;background:0 0;border:none;flex:none;justify-content:center;align-items:center;padding:0;display:inline-flex}.ink-chip-x:hover{background:color-mix(in oklab, var(--ink-cool) 18%, transparent)}.ink-chip-act{border:1px solid var(--line);border-radius:var(--r-full);background:var(--surface-elevated);color:var(--text-secondary);font:inherit;cursor:pointer;padding:4px 11px;font-size:12px;font-weight:600}.ink-chip-act:hover{color:var(--text-primary)}.ink-chip-act.primary{color:var(--surface-default);background:var(--ink-cool);border-color:#0000}.ink-sr{clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}@media (width<=600px){.ink-coach-text{-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}}@media (prefers-reduced-motion:reduce){.ink-user-stroke,.ink-user-halo,.mark-toggle{transition:none}.ink-coach,.ink-bar.coaching .mark-toggle{animation:none}}.live-voice .card-grid.note-gutter{padding-left:218px;padding-right:218px}.note-rail{pointer-events:none;z-index:6;position:absolute;top:0;bottom:0;right:0}.note-rail.left{left:0;right:auto}.margin-note{border-left:2.5px solid var(--ink-gesture,var(--warning));border-radius:var(--r-sm);background:color-mix(in oklab, var(--ink-gesture,var(--warning)) 6%, var(--surface-elevated));box-shadow:var(--shadow-raised);color:var(--text-primary);opacity:0;animation:margin-note-in .42s var(--ease-out,ease) both;animation-delay:var(--note-delay,0s);padding:8px 10px 8px 12px;font-size:12px;font-style:italic;line-height:1.5;position:absolute;left:0;right:0}@keyframes margin-note-in{0%{opacity:0;transform:translate(8px)}to{opacity:1;transform:translate(0)}}.note-rail-arrows{pointer-events:none;z-index:6;width:100%;height:100%;position:absolute;inset:0;overflow:visible}.note-tether{stroke:var(--ink-gesture,var(--warning));stroke-width:1.8px;stroke-linecap:round;stroke-linejoin:round;fill:none;opacity:.75;stroke-dasharray:1;stroke-dashoffset:1px;animation:note-tether-draw .6s var(--ease-out,ease) forwards;animation-delay:calc(var(--note-delay,0s) + .12s)}.note-tether-head{animation-delay:calc(var(--note-delay,0s) + .62s);animation-duration:.22s}@keyframes note-tether-draw{to{stroke-dashoffset:0}}@media (width<=1279px){.live-voice .card-grid.note-gutter{padding-left:0;padding-right:0}.note-rail,.note-rail-arrows{display:none}}@media (prefers-reduced-motion:reduce){.margin-note{opacity:1;animation:none}.note-tether{stroke-dashoffset:0;animation:none}}
@@ -1 +0,0 @@
1
- import{t as e}from"./react-BZJXY1be.js";import{t}from"./compiler-runtime-qQQXpJgv.js";import{t as n}from"./jsx-runtime-DeHZSEgm.js";var r=e(),i=t(),a=n(),o={open:`THE CASE`,tension:`TENSION`,verdict:`THE VERDICT`,context:`CONTEXT`,close:`IN CLOSING`};function s(){let e=(0,i.c)(2),[t,n]=(0,r.useState)(c),a,o;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(a=()=>{let e=window.matchMedia(`(prefers-reduced-motion: reduce)`),t=()=>n(e.matches);return e.addEventListener(`change`,t),()=>e.removeEventListener(`change`,t)},o=[],e[0]=a,e[1]=o):(a=e[0],o=e[1]),(0,r.useEffect)(a,o),t}function c(){return typeof window<`u`&&window.matchMedia(`(prefers-reduced-motion: reduce)`).matches}function l({beats:e,onBeat:t,onExit:n,speak:i,cancelSpeak:c}){let l=s(),[u,d]=(0,r.useState)(0),[f,p]=(0,r.useState)(!l),[m,h]=(0,r.useState)(!1),g=(0,r.useRef)({onBeat:t,speak:i,cancelSpeak:c});g.current={onBeat:t,speak:i,cancelSpeak:c};let _=e[u],v=u>=e.length-1;(0,r.useEffect)(()=>{_&&(g.current.onBeat(_),m&&(g.current.cancelSpeak(),g.current.speak(_.spoken)))},[_,m]),(0,r.useEffect)(()=>{if(!f||l||!_||v)return;let t=setTimeout(()=>d(t=>Math.min(e.length-1,t+1)),_.dwellMs);return()=>clearTimeout(t)},[_,f,l,v,e.length]),(0,r.useEffect)(()=>{v&&p(!1)},[v]),(0,r.useEffect)(()=>()=>g.current.cancelSpeak(),[]);let y=(0,r.useCallback)(()=>d(e=>Math.max(0,e-1)),[]),b=(0,r.useCallback)(()=>d(t=>Math.min(e.length-1,t+1)),[e.length]),x=(0,r.useCallback)(()=>{v?(d(0),p(!0)):p(e=>!e)},[v]),S=(0,r.useCallback)(()=>{h(e=>(e&&g.current.cancelSpeak(),!e))},[]),C=(0,r.useCallback)(e=>e.stopPropagation(),[]);return _?(0,a.jsxs)(`div`,{className:`prism-brief`,onPointerDown:C,onWheel:C,onClick:C,children:[(0,a.jsxs)(`div`,{className:`prism-brief-caption`,role:`status`,"aria-live":`polite`,children:[(0,a.jsx)(`span`,{className:`prism-brief-eyebrow`,"data-kind":_.kind,children:o[_.kind]}),(0,a.jsx)(`p`,{className:`prism-brief-line`,children:_.caption})]}),(0,a.jsxs)(`div`,{className:`prism-brief-bar`,children:[(0,a.jsx)(`button`,{type:`button`,className:`prism-brief-btn`,onClick:y,disabled:u===0,"aria-label":`Previous beat`,children:`‹`}),(0,a.jsx)(`button`,{type:`button`,className:`prism-brief-btn prism-brief-play`,onClick:x,"aria-label":v?`Replay`:f?`Pause`:`Play`,children:v?`↺`:f?`❙❙`:`▶`}),(0,a.jsx)(`button`,{type:`button`,className:`prism-brief-btn`,onClick:b,disabled:v,"aria-label":`Next beat`,children:`›`}),(0,a.jsxs)(`span`,{className:`prism-brief-progress`,"aria-hidden":`true`,children:[u+1,` / `,e.length]}),(0,a.jsx)(`span`,{className:`prism-brief-spacer`}),(0,a.jsx)(`button`,{type:`button`,className:`prism-brief-btn prism-brief-audio`+(m?` is-on`:``),onClick:S,"aria-pressed":m,title:m?`Mute narration`:`Play with audio`,children:m?`🔊`:`🔇`}),(0,a.jsx)(`button`,{type:`button`,className:`prism-brief-exit`,onClick:n,"aria-label":`Exit the briefing`,children:`✕ Exit`})]})]}):(0,a.jsx)(a.Fragment,{})}export{l as t};
@@ -1 +0,0 @@
1
- import{t as e}from"./react-BZJXY1be.js";import{t}from"./compiler-runtime-qQQXpJgv.js";import{t as n}from"./jsx-runtime-DeHZSEgm.js";import{F as r,R as i,f as a}from"./index-LiHcEJt_.js";import{n as o}from"./icons-gLFQTv74.js";import{t as s}from"./TopicCanvas-Bw4bMFpe.js";import{t as c}from"./motion-BY_Egaxm.js";import{t as l}from"./toast-BBNs2h3L.js";import{t as u}from"./Presence-UqXfH4Y-.js";import{a as d,c as f,i as p,l as m,r as h,t as g}from"./capture-DgJLQ_0-.js";import{n as _,r as v,t as y}from"./share--tpc1nLE.js";import{t as b}from"./FeatureUseNotice-Bda9jr3W.js";import{r as x}from"./history-D2EH2X6D.js";import{t as S}from"./replay-CalqEgdW.js";import"./canvas-C3O7MEA3.js";import{t as C}from"./AnnotationLayer-Cccb12ps.js";var w=e(),T=t(),E=18e4,D=650,O=350;function k(e){let t=[e.spoken??e.narration,...e.tour.map(e=>e.saySpoken??e.say??``)].reduce((e,t)=>e+t.trim().length,0);return 1e3+Math.max(1800,t/14*1e3)}function ee(e){return e.reduce((e,t)=>e+k(t),0)}function te(e){let t=k(e),n=[e.spoken??e.narration,...e.tour.map(e=>e.saySpoken??e.say??``)].map(e=>e.trim()).filter(Boolean),r=n.reduce((e,t)=>e+t.length,0),i=t-D-O,a=D;return{durationMs:t,spans:n.map(e=>{let t=Math.round(a);return a+=r?i*e.length/r:0,{text:e,startMs:t,endMs:Math.round(a)}})}}function ne(e){for(let t=e.length-1;t>=0;t--){let n=e[t];if(n?.topicShift===!0||n?.topicShift===void 0&&n?.mode===`replace`)return t}return 0}function A(e,t,n){let r=n.spans[e+1];return r?r.startMs:D+Math.max(0,n.durationMs-D-O)*(e+1)/(t+1)}function j(e,t,n){let r=[],i=0;return e.forEach((e,a)=>{let o=t[a];if(!o)return;let s=S(e),c=s.cues.map((e,t)=>A(t,s.cues.length,o)),l=[0,D,...c,o.durationMs].map(e=>Math.max(0,Math.min(o.durationMs,e))).filter((e,t,n)=>t===0||e>n[t-1]),u=[];for(let t=0;t<l.length-1;t++){let d=l[t],f=l[t+1],p=c.findIndex(e=>e===d),m=p>=0?s.cues[p]:void 0;m&&n.penMarks&&(u=[...u,...m.marks.map((t,n)=>({spot:m.spot,line:m.say,mark:t,delayMs:n*240,...t.kind===`connect`&&typeof t.onIndex==`number`?{toSpot:e.spec.blocks[t.onIndex]?.id}:{}}))]);let h=[...o.spans].reverse().find(e=>e.startMs<=d&&e.endMs>d);r.push({frame:e,turnIndex:a,startMs:i+d,durationMs:Math.max(1,f-d),spot:n.spotlights?m?.spot??null:null,caption:n.captions?h?.text??null:null,ink:u,questionOnly:t===0})}i+=o.durationMs}),r}var M=24e3,N=.65,P=.18,F=.35,re=.89,I=6,L=class extends Error{turnIndex;question;constructor(e,t){super(`Narration is unavailable for “${t||`turn ${e+1}`}”.`),this.turnIndex=e,this.question=t,this.name=`RequiredConversationAudioError`}};function R(e){return[e.spoken??e.narration,...e.tour.map(e=>e.saySpoken??e.say??``)].map(e=>e.trim()).filter(Boolean)}function z(e){return e.trim().replace(/\s+/g,` `)}function B(e,t){let n=R(e);return n.length>0&&t.pcm.length>0&&t.spans.length===n.length&&n.every((e,n)=>z(t.spans[n]?.text??``)===z(e)&&t.spans[n].t1>t.spans[n].t0)}function V(e){let t=e.spans.map(e=>({text:e.text,startMs:Math.round((N+e.t0)*1e3),endMs:Math.round((N+e.t1)*1e3)})),n=new Float32Array(e.pcm.length);for(let t=0;t<e.pcm.length;t++)n[t]=e.pcm[t]/32768;return{lines:[{text:t.map(e=>e.text).join(` `),pcm:n,rate:e.sampleRate}],durationS:N+e.duration+F,spans:t}}async function H(e,t,n,r){let i=R(e);if(!i.length)throw new L(t,e.question);let a=[];for(let o of i){if(n?.aborted)throw new DOMException(`Cancelled`,`AbortError`);let i=await f(o,n);if(n?.aborted)throw new DOMException(`Cancelled`,`AbortError`);if(!i.length)throw new L(t,e.question);a.push({text:o,pcm:i,rate:M}),r?.(i.length/M+P)}let o=[],s=N;for(let e of a){let t=s;s+=e.pcm.length/e.rate,o.push({text:e.text,startMs:Math.round(t*1e3),endMs:Math.round(s*1e3)}),s+=P}return{lines:a,durationS:s+F,spans:o}}async function ie(e,t,n,i){let a=r();if(a===null||typeof OfflineAudioContext>`u`)throw Error(`audio-encoding-unavailable`);let o=e.map(e=>{let n=t(e);return n&&B(e,n)?V(n):null}),s=o.reduce((e,t)=>e+(t?.durationS??1),0),c=e.reduce((e,t,n)=>e+(o[n]?0:R(t).length),0),l=0,u=new AbortController,d=()=>u.abort();n?.addEventListener(`abort`,d,{once:!0}),n?.aborted&&u.abort();let f=e=>{if(s+=e,i?.(++l,c),s*1e3>18e4)throw u.abort(),Error(`conversation-too-long`)},p;try{p=await m(e,2,(e,t)=>{let n=o[t];return n?Promise.resolve(n):H(e,t,u.signal,f)})}finally{n?.removeEventListener(`abort`,d)}let h=p.reduce((e,t)=>e+t.durationS,0);if(h*1e3>18e4)throw Error(`conversation-too-long`);let g=0;for(let e of p)for(let t of e.lines)for(let e=0;e<t.pcm.length;e++)g=Math.max(g,Math.abs(t.pcm[e]));let _=g>0?Math.min(I,re/g):1,v=new OfflineAudioContext(1,Math.ceil(h*a),a),y=v.createGain();y.gain.value=_,y.connect(v.destination);let b=0;for(let e of p){let t=b+N;for(let n of e.lines){let e=v.createBuffer(1,n.pcm.length,n.rate);e.getChannelData(0).set(n.pcm);let r=v.createBufferSource();r.buffer=e,r.connect(y),r.start(t),t+=n.pcm.length/n.rate+P}b+=e.durationS}return{buffer:await v.startRendering(),turns:p.map(e=>({durationMs:Math.round(e.durationS*1e3),spans:e.spans})),durationMs:Math.round(h*1e3)}}var U={"1080p":{width:1920,height:1080},"720p":{width:1280,height:720}};function W(e,t,n=a()){let{bitrate:r}=g(e,n);return t===`720p`?Math.round(r*.55):r}async function G(e){document.visibilityState===`hidden`&&await new Promise((t,n)=>{let r=()=>a(new DOMException(`Cancelled`,`AbortError`)),i=()=>{document.visibilityState!==`hidden`&&a()},a=a=>{document.removeEventListener(`visibilitychange`,i),e.removeEventListener(`abort`,r),a?n(a):t()};document.addEventListener(`visibilitychange`,i),e.addEventListener(`abort`,r,{once:!0})})}function ae(){return typeof document<`u`&&(typeof VideoEncoder<`u`&&typeof AudioEncoder<`u`||d()!==null)}var K={selector:`.cvs-presence`,bleed:96};async function oe(e){let t=a(),n=U[e.size],r=e.scenes[0];r&&await e.applyScene(r,0);let i=getComputedStyle(e.el).backgroundColor,o=await p({el:e.el,audioBuffer:e.audioBuffer,aspect:`16:9`,dims:{w:n.width,h:n.height},quality:e.quality,bitrate:W(e.quality,e.size,t),background:i&&i!==`rgba(0, 0, 0, 0)`?i:void 0,maxDurationMs:e.durationMs,liveLayer:K,onFrame:e.onFrame,cues:e.scenes.slice(1).map((t,n)=>({atMs:t.startMs,apply:async()=>{let r=n+1;await e.applyScene(t,r),e.onProgress?.({phase:`render`,completed:r+1,total:e.scenes.length})}})),gate:async()=>{if(e.signal.aborted)throw new DOMException(`Cancelled`,`AbortError`);await G(e.signal)}});try{await o.done(),e.onProgress?.({phase:`encode`,completed:0,total:1});let t=await o.stop();return e.onProgress?.({phase:`ready`,completed:1,total:1}),{...t,...n}}catch(e){throw o.cancel(),e}}var q=n();function se({scene:e,options:t,frameRef:n,glide:r=!0}){let a=(0,w.useRef)(null),o=(0,w.useRef)(null),c=(0,w.useRef)(null),l=i(),d=(0,w.useRef)(null),[f,p]=(0,w.useState)(0);(0,w.useEffect)(()=>(n?.(a.current),()=>n?.(null)),[n]),(0,w.useEffect)(()=>{let t=o.current,n=c.current;if(!t||!n)return;let r=d.current!==e?.turnIndex;d.current=e?.turnIndex??null;let i=r?0:null;if(e?.spot){let r=[...t.querySelectorAll(`[data-spot-id]`)].find(t=>t.dataset.spotId===e.spot);if(r){let e=0;for(let n=r;n&&n!==t;n=n.offsetParent)e+=n.offsetTop;i=Math.max(0,Math.min(e-(t.clientHeight-r.offsetHeight)/2,n.offsetHeight-t.clientHeight))}}if(i===null)return;n.style.setProperty(`--cvs-shift`,`${-i}px`);let a=window.setTimeout(()=>p(e=>e+1),420);return()=>window.clearTimeout(a)},[e?.spot,e?.turnIndex]);let m=e?.questionOnly??!1,h=e?e.frame.question||e.frame.spec.title:``;return(0,q.jsx)(`div`,{ref:a,className:`cvs-stage`,"data-aspect":`16:9`,"data-question-only":m,"data-captioned":t.captions,children:e?(0,q.jsxs)(q.Fragment,{children:[(0,q.jsxs)(`header`,{className:`cvs-header`,children:[(0,q.jsxs)(`div`,{className:`cvs-brand`,children:[(0,q.jsx)(`span`,{className:`cvs-brand-dot`}),` Mavéa conversation`]}),(0,q.jsxs)(`div`,{className:`cvs-turn`,children:[`Turn `,e.turnIndex+1]}),(0,q.jsx)(`h2`,{children:h})]}),m?(0,q.jsxs)(`div`,{className:`cvs-ask`,children:[(0,q.jsx)(`span`,{className:`cvs-ask-eyebrow`,children:`Asked`}),(0,q.jsx)(`p`,{className:`cvs-ask-line`,children:h})]}):(0,q.jsxs)(`div`,{ref:o,className:`cvs-canvas`,children:[(0,q.jsx)(`div`,{className:`topic-wrap`,ref:c,"data-glide":r,children:(0,q.jsx)(s,{data:e.frame.spec,spot:e.spot,built:{},onProve:()=>{}})},e.turnIndex),t.penMarks&&(0,q.jsx)(C,{spots:e.ink,within:a.current,revision:f})]}),t.captions&&e.caption&&(0,q.jsx)(`div`,{className:`cvs-caption`,children:e.caption}),t.presence&&(0,q.jsx)(`div`,{className:`cvs-presence`,ref:l,children:(0,q.jsx)(u,{state:m?`thinking`:`speaking`})})]}):(0,q.jsx)(`div`,{className:`cvs-empty`,children:`Choose a turn to preview it.`})})}var ce=[{id:`1080p`,label:`1080p`,hint:`1920×1080`},{id:`720p`,label:`720p`,hint:`1280×720`}],le=[{id:`balanced`,label:`Balanced`},{id:`high`,label:`High`},{id:`ultra`,label:`Ultra`}],ue=650,de=640,fe=360;function pe(e=300){return Promise.race([(async()=>{await new Promise(e=>requestAnimationFrame(()=>e())),await new Promise(e=>requestAnimationFrame(()=>e()))})(),new Promise(t=>window.setTimeout(t,e))])}var me=[{key:`captions`,label:`Captions`},{key:`spotlights`,label:`Spotlights`},{key:`penMarks`,label:`Pen marks`},{key:`presence`,label:`Mavéa`},{key:`audio`,label:`Audio`}];function he(e){let t=Math.max(0,Math.round(e/1e3));return`${Math.floor(t/60)}:${String(t%60).padStart(2,`0`)}`}function ge(e){let t=(0,T.c)(12),{width:n,height:r,children:i}=e,a=(0,w.useRef)(null),[o,s]=(0,w.useState)(0),c,l;t[0]!==r||t[1]!==n?(c=()=>{let e=a.current;if(!e)return;let t=()=>{let{width:t,height:i}=e.getBoundingClientRect();!t||!i||s(Math.min(t/n,i/r))};if(t(),typeof ResizeObserver>`u`)return;let i=new ResizeObserver(t);return i.observe(e),()=>i.disconnect()},l=[n,r],t[0]=r,t[1]=n,t[2]=c,t[3]=l):(c=t[2],l=t[3]),(0,w.useLayoutEffect)(c,l);let u=`scale(${o})`,d=o?void 0:`hidden`,f;t[4]!==r||t[5]!==u||t[6]!==d||t[7]!==n?(f={width:n,height:r,transform:u,visibility:d},t[4]=r,t[5]=u,t[6]=d,t[7]=n,t[8]=f):f=t[8];let p;return t[9]!==i||t[10]!==f?(p=(0,q.jsx)(`div`,{ref:a,className:`cvs-viewport`,children:(0,q.jsx)(`div`,{className:`cvs-scaler`,style:f,children:i})}),t[9]=i,t[10]=f,t[11]=p):p=t[11],p}function _e(e){return e.map(e=>{let t=k(e);return{durationMs:t,spans:[{text:e.narration,startMs:650,endMs:Math.max(651,t-350)}]}})}function J({frames:e,retainedAudio:t,onShared:n,onBusyChange:r}){let i=(0,w.useMemo)(()=>e.filter(e=>!!((e.spoken??e.narration).trim()||e.tour.some(e=>(e.saySpoken??e.say)?.trim()))),[e]),[a,s]=(0,w.useState)(()=>new Set(i.length?[x(i[i.length-1])]:[])),u=(0,w.useMemo)(()=>new Set(i.map(x)),[i]),[d,f]=(0,w.useState)({size:`1080p`,quality:`high`,captions:!0,spotlights:!0,penMarks:!0,presence:!0,audio:!0}),p=(0,w.useMemo)(()=>e.filter(e=>a.has(x(e))),[e,a]),m=(0,w.useMemo)(()=>ee(p),[p]),g=(0,w.useMemo)(()=>j(p,_e(p),d),[p,d]),[S,C]=(0,w.useState)(()=>g[0]??null),[T,D]=(0,w.useState)(null),[O,k]=(0,w.useState)(null),[A,M]=(0,w.useState)(null),[N,P]=(0,w.useState)(!1),[F,re]=(0,w.useState)(!1),[I,R]=(0,w.useState)(0),[z,B]=(0,w.useState)(!1),[V,H]=(0,w.useState)(!1),W=(0,w.useRef)(null),G=(0,w.useRef)(null),K=(0,w.useRef)(null),J=(0,w.useRef)(null),ve=(0,w.useRef)(null),Y=T!==null&&T.phase!==`ready`,ye=Y&&T?.phase!==`audio`,be=ae(),X=(0,w.useMemo)(()=>c(),[]),Z=F&&!Y&&!X&&g.length>1;(0,w.useEffect)(()=>r?.(Y),[Y,r]),(0,w.useEffect)(()=>{if(!Y){H(!1);return}let e=()=>H(document.visibilityState===`hidden`);return e(),document.addEventListener(`visibilitychange`,e),()=>document.removeEventListener(`visibilitychange`,e)},[Y]),(0,w.useEffect)(()=>re(!0),[]),(0,w.useEffect)(()=>{let e=X?g.findIndex(e=>!e.questionOnly):0;R(Math.max(0,e)),B(!1)},[g,X]),(0,w.useEffect)(()=>{Y||C(g[I]??g[0]??null)},[g,I,Y]),(0,w.useEffect)(()=>{if(!Z||z)return;let e=g[I]??g[0],t=window.setTimeout(()=>R(e=>(e+1)%g.length),Math.max(ue,e?.durationMs??ue));return()=>window.clearTimeout(t)},[Z,z,g,I]),(0,w.useEffect)(()=>()=>{W.current?.abort(),G.current?.dispose?.(),G.current=null,r?.(!1)},[r]),(0,w.useEffect)(()=>{let e=J.current;if(!e)return;let t=()=>{e.dataset.overflowing=String(e.scrollHeight>e.clientHeight+1)};if(t(),typeof ResizeObserver>`u`)return;let n=new ResizeObserver(t);return n.observe(e),()=>n.disconnect()},[e]);let xe=(0,w.useCallback)(async e=>{C(e),await pe()},[]),Se=(0,w.useCallback)(e=>{let t=ve.current,n=t?.getContext(`2d`);!t||!n||n.drawImage(e,0,0,t.width,t.height)},[]),Q=(0,w.useCallback)(()=>{G.current?.dispose?.(),G.current=null,k(null),D(null)},[]),Ce=(0,w.useCallback)(async()=>{if(!p.length||m>18e4)return;let e=new AbortController;W.current=e,Q(),M(null),D(d.audio?{phase:`audio`,completed:0,total:p.length}:{phase:`render`,completed:1,total:1}),P(!0);try{await pe();let n=K.current;if(!n)throw Error(`capture-stage-unavailable`);let r=d.audio?await ie(p,t??(()=>null),e.signal):null,i=r?r.turns:p.map(te),a=j(p,i,d);if(!a.length)throw Error(`empty-video`);D({phase:`render`,completed:1,total:a.length});let o=await oe({el:n,scenes:a,audioBuffer:r?.buffer??null,durationMs:r?.durationMs??i.reduce((e,t)=>e+t.durationMs,0),size:d.size,quality:d.quality,signal:e.signal,applyScene:xe,onProgress:D,onFrame:Se});G.current=o,k(o),D(null)}catch(e){if(e?.name===`AbortError`){D(null);return}let t=e instanceof L?`${e.message} Check the local voice service, then retry.`:e instanceof Error&&e.message===`conversation-too-long`?`The voiced result is over three minutes. Remove a turn and retry.`:e instanceof Error&&e.message===`open-codec-unavailable`?`This browser cannot encode an approved open-media format (AV1/VP9/VP8 with Opus). Try the current Chrome, Edge, or Firefox.`:`The video could not be created in this browser. Your conversation is unchanged.`;M(t),D(null)}finally{P(!1)}},[xe,Q,m,d,t,p,Se]),$=e=>{Y||(s(new Set(e.map(x))),Q(),M(null))},we=U[d.size],Te=y(v(p[0]?.spec.title||p[0]?.question,new Date),O?.type??``),Ee=T?T.phase===`audio`?`Preparing required narration…`:T.phase===`render`?`Rendering scene ${T.completed} of ${T.total}…`:T.phase===`encode`?`Finishing the file…`:`Video ready`:``,De=m>E;return(0,q.jsxs)(q.Fragment,{children:[(0,q.jsxs)(`div`,{className:`shm-panel cvs-panel`,children:[(0,q.jsx)(`div`,{className:`shm-eyebrow`,children:`▷ CONVERSATION VIDEO`}),(0,q.jsx)(`div`,{className:`cvs-title`,children:`Share this conversation.`}),(0,q.jsx)(`div`,{className:`shm-sub`,children:`Pick the turns worth sending. Mavéa narrates every one unless Audio is off. The video renders locally in this browser and is never uploaded.`}),(0,q.jsx)(b,{kind:`publishing`,from:`live`}),(0,q.jsxs)(`div`,{className:`cvs-presets`,children:[(0,q.jsx)(`button`,{type:`button`,onClick:()=>$(i.slice(-1)),disabled:Y,children:`Current turn`}),(0,q.jsx)(`button`,{type:`button`,onClick:()=>$(e.slice(ne(e)).filter(e=>u.has(x(e)))),disabled:Y,children:`Current topic`}),(0,q.jsx)(`button`,{type:`button`,onClick:()=>$(i),disabled:Y,children:`All turns`})]}),(0,q.jsx)(`div`,{className:`cvs-turns`,role:`group`,"aria-label":`Conversation turns`,ref:J,children:e.map((e,t)=>{let n=x(e),r=u.has(n);return(0,q.jsxs)(`label`,{className:`cvs-turn-card`,"data-selected":a.has(n),children:[(0,q.jsx)(`input`,{type:`checkbox`,checked:a.has(n),disabled:Y||!r,onChange:()=>{s(e=>{let t=new Set(e);return t.has(n)?t.delete(n):t.add(n),t}),Q()}}),(0,q.jsx)(`span`,{className:`cvs-thumb`,"aria-hidden":`true`,children:e.spec.blocks.length}),(0,q.jsxs)(`span`,{className:`cvs-turn-copy`,children:[(0,q.jsx)(`strong`,{children:e.question||e.spec.title}),(0,q.jsxs)(`small`,{children:[new Date(e.at).toLocaleTimeString([],{hour:`numeric`,minute:`2-digit`}),r?``:` · no narration`]})]}),(0,q.jsx)(`span`,{className:`cvs-order`,children:t+1})]},n)})}),(0,q.jsxs)(`div`,{className:`shm-group`,children:[(0,q.jsx)(`div`,{className:`shm-label`,children:`Size`}),(0,q.jsx)(`div`,{className:`shm-chips`,children:ce.map(e=>(0,q.jsx)(`button`,{type:`button`,className:`shm-chip`,"data-active":d.size===e.id,"aria-pressed":d.size===e.id,disabled:Y,onClick:()=>{Q(),f(t=>({...t,size:e.id}))},title:e.hint,children:e.label},e.id))})]}),(0,q.jsxs)(`div`,{className:`shm-group`,children:[(0,q.jsx)(`div`,{className:`shm-label`,children:`Quality`}),(0,q.jsx)(`div`,{className:`shm-chips`,children:le.map(e=>(0,q.jsx)(`button`,{type:`button`,className:`shm-chip`,"data-active":d.quality===e.id,"aria-pressed":d.quality===e.id,disabled:Y,onClick:()=>{Q(),f(t=>({...t,quality:e.id}))},title:h(e.id),children:e.label},e.id))})]}),(0,q.jsxs)(`div`,{className:`shm-group`,children:[(0,q.jsx)(`div`,{className:`shm-label`,children:`Include`}),(0,q.jsx)(`div`,{className:`shm-chips`,children:me.map(({key:e,label:t})=>(0,q.jsx)(`button`,{type:`button`,className:`shm-chip`,"data-active":d[e],"aria-pressed":d[e],disabled:Y,onClick:()=>{Q(),f(t=>({...t,[e]:!t[e]}))},children:t},e))})]}),(0,q.jsxs)(`div`,{className:`cvs-meter`,"data-over":De,children:[(0,q.jsxs)(`span`,{children:[he(m),` selected`]}),(0,q.jsx)(`span`,{children:`3:00 max`}),(0,q.jsx)(`i`,{style:{width:`${Math.min(100,m/E*100)}%`}})]}),A&&(0,q.jsx)(`div`,{className:`cvs-error`,role:`alert`,children:A}),!be&&(0,q.jsx)(`div`,{className:`cvs-error`,role:`alert`,children:`Video export needs an approved open video codec (AV1/VP9/VP8) and Opus audio. Try the current Chrome, Edge, or Firefox.`}),T&&(0,q.jsxs)(`div`,{className:`cvs-progress`,role:`status`,children:[Ee,V&&(0,q.jsx)(`em`,{className:`cvs-paused`,children:`Paused while this window is in the background — come back to it and the render picks up where it left off.`})]}),O&&(0,q.jsxs)(`div`,{className:`cvs-result`,role:`status`,children:[(0,q.jsxs)(`strong`,{children:[`Ready · `,O.width,`×`,O.height]}),(0,q.jsxs)(`span`,{children:[he(O.durationMs),` · `,(O.blob.size/1048576).toFixed(1),` MB`]})]}),(0,q.jsx)(`div`,{className:`shm-actions`,children:O?(0,q.jsx)(`button`,{type:`button`,className:`shm-btn shm-btn-primary`,onClick:()=>{G.current=null,_(O.blob,Te,()=>void O.dispose?.()),k(null),l(`Saved to your downloads`,`good`),n?.()},children:`↓ Download video`}):Y?(0,q.jsx)(`button`,{type:`button`,className:`shm-btn`,onClick:()=>W.current?.abort(),children:`Cancel`}):(0,q.jsx)(`button`,{type:`button`,className:`shm-btn shm-btn-primary`,disabled:!p.length||De||!be,onClick:()=>void Ce(),children:A?`Retry ${d.size} video`:`Create ${d.size} video`})})]}),(0,q.jsx)(`div`,{className:`shm-stage`,children:(0,q.jsxs)(`div`,{className:`shm-frame`,"data-aspect":`16:9`,children:[ye?(0,q.jsx)(`canvas`,{ref:ve,className:`cvs-monitor`,width:de,height:fe,role:`img`,"aria-label":`The frames being rendered`}):F?(0,q.jsx)(ge,{width:we.width,height:we.height,children:(0,q.jsx)(se,{scene:S,options:d,glide:!X})}):(0,q.jsx)(`div`,{className:`cvs-stage`,"data-aspect":`16:9`,children:(0,q.jsx)(`div`,{className:`cvs-empty`,role:`status`,children:`Preparing preview…`})}),Z&&(0,q.jsx)(`div`,{className:`shm-controls`,children:(0,q.jsx)(`button`,{type:`button`,className:`shm-sound`,"data-on":z,onClick:()=>B(e=>!e),"aria-pressed":z,title:z?`Play preview`:`Pause preview`,children:z?(0,q.jsx)(o.play,{style:{width:17,height:17}}):(0,q.jsx)(o.pause,{style:{width:17,height:17}})})})]})}),N&&(0,q.jsx)(`div`,{className:`cvs-capture-host`,"data-size":d.size,"aria-hidden":`true`,inert:!0,children:(0,q.jsx)(se,{scene:S,options:d,frameRef:e=>{K.current=e}})})]})}export{J as ConversationVideoStudio};
@@ -1 +0,0 @@
1
- .clr-app{background:var(--surface-deep,var(--surface-default));height:100%;color:var(--text-primary);font-family:var(--font);flex-direction:column;display:flex;overflow:hidden}.clr-stage{flex:1;min-height:0;padding:clamp(18px,3vw,34px) clamp(16px,3vw,30px) 72px;overflow-y:auto}.clr-stage-center{justify-content:center;align-items:center;display:flex}.clr-col{width:100%;max-width:var(--canvas-col-max,1080px);margin-inline:auto}.clr-canvas{margin-top:2px}.clr-state{text-align:center;flex-direction:column;align-items:center;gap:12px;padding:clamp(40px,9vh,96px) 24px;display:flex}.clr-state-head{font:700 17px/1.3 var(--font);letter-spacing:-.01em;color:var(--text-primary)}.clr-state-sub{max-width:460px;font:500 13.5px/1.55 var(--font);color:var(--text-muted)}.clr-state-error{color:var(--danger)}.clr-lesson-outline{text-align:left;gap:8px;width:min(100%,560px);margin-top:6px;display:grid}.clr-lesson-outline-row{border:1px solid var(--line-soft);border-radius:var(--r-md);background:var(--surface-glass);grid-template-columns:24px minmax(0,1fr);align-items:center;gap:10px;padding:10px 12px;display:grid}.clr-lesson-outline-row>span{background:color-mix(in oklab, var(--presence) 13%, transparent);width:24px;height:24px;color:var(--presence);font:700 11px/1 var(--font);border-radius:50%;place-items:center;display:grid}.clr-lesson-outline-row>strong{font:600 13px/1.35 var(--font);color:var(--text-secondary)}.clr-state-icon{background:var(--surface-glass);width:44px;height:44px;color:var(--text-muted);border-radius:50%;justify-content:center;align-items:center;display:flex}.clr-state-icon svg{width:20px;height:20px}.clr-state-icon-warn{color:var(--warning);background:color-mix(in oklab, var(--warning) 14%, transparent)}.clr-lens{gap:7px;display:flex}.clr-lens span{background:var(--presence);opacity:.35;border-radius:50%;width:9px;height:9px;animation:1.1s ease-in-out infinite clr-pulse}.clr-lens span:nth-child(2){animation-delay:.16s}.clr-lens span:nth-child(3){animation-delay:.32s}@keyframes clr-pulse{0%,to{opacity:.3;transform:translateY(0)}40%{opacity:1;transform:translateY(-3px)}}.clr-stream{border:1px solid color-mix(in oklab, var(--presence) 24%, var(--line-soft));border-radius:var(--r-md);background:color-mix(in oklab, var(--presence) 5%, var(--surface-glass));align-items:flex-start;gap:11px;margin:0 0 14px;padding:12px 14px;display:flex}.clr-stream-pulse{background:var(--presence);width:9px;height:9px;box-shadow:0 0 0 0 color-mix(in oklab, var(--presence) 35%, transparent);border-radius:50%;flex:none;margin-top:3px;animation:1.4s ease-out infinite clr-stream-pulse}.clr-stream-copy{min-width:0}.clr-stream-label{color:var(--presence);font:700 11px/1.2 var(--font);letter-spacing:.055em;text-transform:uppercase}.clr-stream-copy p{max-width:760px;color:var(--text-secondary);font:500 14px/1.5 var(--font);margin:5px 0 0}@keyframes clr-stream-pulse{70%,to{box-shadow:0 0 0 8px #0000}}.clr-empty{text-align:center;flex-direction:column;align-items:center;gap:10px;max-width:400px;padding:32px;display:flex}.clr-empty-icon{background:var(--surface-glass);width:44px;height:44px;color:var(--text-muted);border-radius:50%;justify-content:center;align-items:center;margin-bottom:4px;display:flex}.clr-empty-icon svg{width:20px;height:20px}.clr-empty-head{font:700 17px/1.2 var(--font);color:var(--text-primary)}.clr-empty-sub{font:500 13.5px/1.55 var(--font);color:var(--text-muted)}.clr-btn{border:1px solid var(--line-mid);border-radius:var(--r-full);background:var(--surface-elevated);color:var(--text-primary);font:600 13px/1 var(--font);cursor:pointer;transition:background var(--m-quick), border-color var(--m-quick);justify-content:center;align-items:center;gap:6px;margin-top:6px;padding:9px 16px;display:inline-flex}.clr-btn svg{width:14px;height:14px}.clr-btn:hover{background:var(--surface-glass);border-color:var(--line-strong)}.clr-btn-primary{background:var(--presence);border-color:var(--presence);color:#fff}.clr-btn-primary:hover{background:color-mix(in oklab, var(--presence) 88%, #000);border-color:color-mix(in oklab, var(--presence) 88%, #000)}@media (prefers-reduced-motion:reduce){.clr-lens span{opacity:.7;animation:none}.clr-stream-pulse{animation:none}}
@@ -1,2 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/TopicCanvas-Bw4bMFpe.js","assets/rolldown-runtime-DkW27tQK.js","assets/react-BZJXY1be.js","assets/compiler-runtime-qQQXpJgv.js","assets/jsx-runtime-DeHZSEgm.js","assets/preload-helper-CiWYd9n-.js","assets/index-LiHcEJt_.js","assets/useInView-DsTvv7L_.js","assets/coreIcons-DDTChE1H.js","assets/preloadableLazy-MIX1ApBW.js","assets/cachedImport-DW0gP14h.js","assets/lazyRetry-D50B1UMY.js","assets/theme-D5D55hZi.js","assets/index-BIUYTk1W.css","assets/icons-gLFQTv74.js","assets/loader-DgMLGfAC.js","assets/FallbackCard-ap_4wOfj.js","assets/blockLabel-FogyzEQY.js","assets/FallbackCard-D_6ps1xA.css","assets/useFocusTrap-CJmpNZv2.js","assets/motion-BY_Egaxm.js","assets/useSpatialCanvas-CfmZOXXP.js","assets/CanvasSkeleton-BmGjJHUQ.js","assets/CanvasSkeleton-DYASkTjW.css","assets/richText-BkxJhl9N.js","assets/toast-BBNs2h3L.js","assets/format-q0LwBjID.js","assets/safeImageUrl-BINWXOTz.js","assets/useValidatedImage-BQi2c66o.js","assets/deepenStore-BWLLzLCY.js","assets/catalog-BHjl-1uH.js","assets/http-Lar_UMKb.js","assets/lib-u95BsX_B.js","assets/BlockEmpty-B82uCse8.js","assets/motion-DxHSlPN6.js","assets/lib-DP9Kuxqk.css","assets/TopicCanvas-DWTm611H.css","assets/generateLive-DGwnpIip.js","assets/history-D2EH2X6D.js","assets/catalog-Db9GWM6N.js","assets/facts-BUGuVUIc.js","assets/blockTypes-DUDdP3pB.js","assets/streamParse-BX0bAppQ.js","assets/liveSchema-DyfND6P2.js","assets/spokenText-C88IQJ0M.js","assets/sourceHost-BV3t2XDb.js","assets/annotations-CftUUB13.js","assets/screen-DFWKge3-.js","assets/attachments-BW-vki-E.js","assets/providers-0DthJW_I.js","assets/info-CiqHR5cs.js","assets/route-CMdTFx0P.js","assets/effort-jJe4iMIq.js","assets/speed-BOytg6bC.js","assets/cache-CvbSI-pr.js","assets/validate-sGUCmPAs.js","assets/types-C42I77wh.js","assets/json-B0N3XRZU.js","assets/verbatim-DBTj9sPD.js","assets/citation-BsSvaaer.js","assets/number-zqlPMliA.js","assets/receipts-D7zveV-I.js","assets/officeDoc-GU6Cssjf.js","assets/csv-DAqzYXUs.js","assets/search-ZN7v_P5B.js","assets/store-BWLbFXiY.js","assets/contentVault-xfUwSJ3i.js","assets/keyVault-Aw5Y2PjT.js","assets/ready-yBSGJubb.js","assets/shapes-BwoDrn09.js","assets/ledger-BssK9Pv2.js","assets/now-C9-UAzTC.js","assets/select-wEtBn9U6.js","assets/useLiveConfig-B4CmBiAK.js"])))=>i.map(i=>d[i]);
2
- import{t as e}from"./react-BZJXY1be.js";import{t}from"./compiler-runtime-qQQXpJgv.js";import{t as n}from"./jsx-runtime-DeHZSEgm.js";import{n as r,t as i}from"./preload-helper-CiWYd9n-.js";import{t as a}from"./preloadableLazy-MIX1ApBW.js";import{n as o,t as s}from"./theme-D5D55hZi.js";import{E as c}from"./index-LiHcEJt_.js";import{n as l}from"./icons-gLFQTv74.js";import{t as u}from"./FeatureUseNotice-Bda9jr3W.js";import{n as d}from"./history-D2EH2X6D.js";import{_ as f,a as p,g as m,l as h,o as g,p as _,r as v,s as y}from"./store-B2Rpbqgg.js";import{r as b}from"./courseSeed-CZdNBTTs.js";import{i as x,n as S,r as C}from"./mastery-DB5qpRAy.js";/* empty css */import{CourseRail as w}from"./CourseRail-BQmUsG6v.js";var T=t(),E=e(),D=n();r();var O=a(()=>i(()=>import(`./TopicCanvas-Bw4bMFpe.js`).then(e=>e.n).then(e=>({default:e.TopicCanvas})),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36]))),k=O.Component,A=9e4;function j(){return(0,E.useSyncExternalStore)(f,y,y)}function M(){let e=b();if(e)return{courseId:e.courseId,lessonIdx:e.lessonIdx};try{let e=new URLSearchParams(window.location.hash.split(`?`)[1]??``),t=e.get(`c`)?.trim();if(!t)return null;let n=Number(e.get(`l`));return{courseId:t,lessonIdx:Number.isFinite(n)&&n>=0?Math.round(n):0}}catch{return null}}function N(e,t){try{let n=`#/course?c=${encodeURIComponent(e)}&l=${t}`;window.location.hash!==n&&window.history.replaceState(null,``,n)}catch{}}function P(e,t){let n=Date.now();return{id:d(n),question:t,narration:e.narration,...e.spoken?{spoken:e.spoken}:{},mode:`replace`,tour:(e.tour??[]).map(e=>({index:e.index,...e.say?{say:e.say}:{},...e.saySpoken?{saySpoken:e.saySpoken}:{},...e.mark?{mark:e.mark}:{},...e.marks?{marks:e.marks}:{}})),spec:e.spec,at:n}}function F(){"use no memo";(0,E.useEffect)(()=>s(o()),[]),j(),(0,E.useEffect)(()=>S(),[]);let e=(0,E.useRef)(M()),t=e.current?.courseId,n=t?g(t):void 0,[r,a]=(0,E.useState)(()=>{let t=e.current?.lessonIdx??0;return n?Math.min(Math.max(0,t),n.lessons.length-1):Math.max(0,t)}),[d,f]=(0,E.useState)(`loading`),[y,b]=(0,E.useState)(null),[T,F]=(0,E.useState)(``),[L,R]=(0,E.useState)(null),[V,H]=(0,E.useState)(!1),[U,W]=(0,E.useState)(null),G=(0,E.useRef)(null),K=(0,E.useCallback)(e=>{let n=t?g(t):void 0,r=n?.lessons[e];if(!n||!r)return;G.current?.ctrl.abort(),m(n.id,e),N(n.id,e);let a=`Lesson ${e+1}: ${r.title}`,o=p(n.id,r.id);if(O.preload().catch(()=>{}),o){G.current=null,b(o.spec),F(o.narration),R(null),H(!1),W(null),f(`ready`);return}b(null),F(``),R(null),H(!1),f(`loading`),W(null);let s={ctrl:new AbortController,timedOut:!1};G.current=s;let c=setTimeout(()=>{s.timedOut=!0,s.ctrl.abort()},A);(async()=>{try{let[t,o,c]=await Promise.all([i(()=>import(`./generateLive-DGwnpIip.js`),__vite__mapDeps([37,17,29,30,38,39,5,1,40,41,42,43,14,4,44,27,45,46,47,48,49,31,50,51,52,6,2,3,7,8,9,10,11,12,13,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72])),i(()=>import(`./useLiveConfig-B4CmBiAK.js`).then(e=>e.d),__vite__mapDeps([73,1,2,3,50,67,49,31,41,48,51])),i(()=>import(`./streamParse-BX0bAppQ.js`).then(e=>e.s),__vite__mapDeps([42,1]))]),l=x(n,e,h(n.id),C(n.topic)),u=o.toModelConfig(o.getLiveConfigV2()),d=``,p=``,m=()=>G.current===s&&!s.ctrl.signal.aborted,g=await t.generateLive(`Teach this lesson: "${r.title}" — ${r.goal}`,[],u,e=>{if(!m())return;d+=e;let t=c.extractNarrationProgress(d);if(!t)return;let n=c.nextSpeakableChunk(t.text,p.length,t.done);n.chunk&&(p=t.text.slice(0,n.consumed),F(p),f(`streaming`))},{lesson:l,signal:s.ctrl.signal,onPartial:e=>{m()&&(b(e.spec),e.narration&&(p=e.narration,F(e.narration)),f(`streaming`))},onPending:e=>{m()&&(R(e),e&&f(`streaming`))},onThinking:e=>{m()&&(H(e),e&&f(`streaming`))}});if(s.ctrl.signal.aborted&&!s.timedOut)return;if(s.timedOut){W(`Building this lesson took too long and was stopped — the model may be slow or rate-limited right now. Try again in a moment.`),f(`error`);return}if(g.error){W(g.error.message),f(`error`);return}v(n.id,r.id,P(g,a)),b(g.spec),F(g.narration),R(null),H(!1),W(null),f(`ready`)}catch{if(s.ctrl.signal.aborted&&!s.timedOut)return;W(s.timedOut?`Building this lesson took too long and was stopped — try again in a moment.`:`Couldn't build this lesson — check your connection and model settings, then try again.`),f(`error`)}finally{clearTimeout(c),G.current===s&&(G.current=null)}})()},[t]);(0,E.useEffect)(()=>(K(r),()=>G.current?.ctrl.abort()),[r,K]);let q=(0,E.useCallback)(e=>{let n=t?g(t):void 0,i=n?.lessons[r];!n||!i||_(n.id,i.id,e)},[t,r]),J=(0,E.useCallback)(()=>{window.location.hash=`#/courses`},[]);if(!n)return(0,D.jsx)(`div`,{className:`mavea-app clr-app`,children:(0,D.jsx)(`main`,{className:`clr-stage clr-stage-center`,children:(0,D.jsxs)(`div`,{className:`clr-empty`,children:[(0,D.jsx)(`div`,{className:`clr-empty-icon`,"aria-hidden":`true`,children:(0,D.jsx)(l.layers,{})}),(0,D.jsx)(`div`,{className:`clr-empty-head`,children:`This lesson isn’t here`}),(0,D.jsx)(`div`,{className:`clr-empty-sub`,children:`The course may have been removed, or the link is out of date. Head back and pick one to open.`}),(0,D.jsxs)(`button`,{type:`button`,className:`clr-btn clr-btn-primary`,onClick:J,children:[(0,D.jsx)(l.chevL,{}),` Back to courses`]})]})})});let Y=d===`loading`||d===`streaming`,X=h(n.id);return(0,D.jsx)(`div`,{className:`mavea-app clr-app`,children:(0,D.jsx)(`main`,{className:`clr-stage`,children:(0,D.jsxs)(`div`,{className:`clr-col`,children:[(0,D.jsx)(u,{kind:`learning`}),(0,D.jsx)(w,{course:n,lessonIdx:r,progress:X,onPrev:()=>a(e=>Math.max(0,e-1)),onNext:()=>a(e=>Math.min(n.lessons.length-1,e+1)),onCheckpoint:q,busy:Y},`${n.id}:${r}`),d===`loading`&&(0,D.jsx)(I,{lessonNumber:r+1,course:n}),d===`streaming`&&(0,D.jsx)(z,{narration:T,pendingShape:L,thinking:V}),d===`error`&&(0,D.jsx)(B,{message:U??`Something went wrong building this lesson.`,onRetry:()=>K(r)}),(d===`streaming`||d===`ready`)&&y&&(0,D.jsx)(`div`,{className:`clr-canvas`,children:(0,D.jsx)(c,{label:`Lesson canvas`,children:(0,D.jsx)(k,{data:y,spot:null,built:{},onProve:()=>{}})})})]})})})}function I(e){let t=(0,T.c)(8),{lessonNumber:n,course:r}=e,i=r.lessons[n-1],a;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(a=(0,D.jsxs)(`div`,{className:`clr-lens`,"aria-hidden":`true`,children:[(0,D.jsx)(`span`,{}),(0,D.jsx)(`span`,{}),(0,D.jsx)(`span`,{})]}),t[0]=a):a=t[0];let o;t[1]===n?o=t[2]:(o=(0,D.jsxs)(`div`,{className:`clr-state-head`,children:[`Building lesson `,n,`…`]}),t[1]=n,t[2]=o);let s;t[3]===i?s=t[4]:(s=i&&(0,D.jsxs)(D.Fragment,{children:[(0,D.jsx)(`div`,{className:`clr-state-sub`,children:i.goal}),(0,D.jsx)(`div`,{className:`clr-lesson-outline`,"aria-label":`Lesson outline`,children:i.objectives.slice(0,3).map(L)})]}),t[3]=i,t[4]=s);let c;return t[5]!==o||t[6]!==s?(c=(0,D.jsxs)(`div`,{className:`clr-state`,role:`status`,"aria-live":`polite`,children:[a,o,s]}),t[5]=o,t[6]=s,t[7]=c):c=t[7],c}function L(e,t){return(0,D.jsxs)(`div`,{className:`clr-lesson-outline-row`,children:[(0,D.jsx)(`span`,{"aria-hidden":`true`,children:t+1}),(0,D.jsx)(`strong`,{children:e})]},e)}function R(e){return e?`Building ${e.replace(/[_-]+/g,` `)}`:`Building the next section`}function z(e){let t=(0,T.c)(11),{narration:n,pendingShape:r,thinking:i}=e,a;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(a=(0,D.jsx)(`span`,{className:`clr-stream-pulse`,"aria-hidden":`true`}),t[0]=a):a=t[0];let o;t[1]!==r||t[2]!==i?(o=i?`Thinking through the lesson`:R(r),t[1]=r,t[2]=i,t[3]=o):o=t[3];let s;t[4]===o?s=t[5]:(s=(0,D.jsxs)(`div`,{className:`clr-stream-label`,children:[o,`…`]}),t[4]=o,t[5]=s);let c;t[6]===n?c=t[7]:(c=n&&(0,D.jsx)(`p`,{children:n}),t[6]=n,t[7]=c);let l;return t[8]!==s||t[9]!==c?(l=(0,D.jsxs)(`div`,{className:`clr-stream`,role:`status`,"aria-live":`polite`,"aria-atomic":`false`,children:[a,(0,D.jsxs)(`div`,{className:`clr-stream-copy`,children:[s,c]})]}),t[8]=s,t[9]=c,t[10]=l):l=t[10],l}function B(e){let t=(0,T.c)(10),{message:n,onRetry:r}=e,i,a;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(i=(0,D.jsx)(`div`,{className:`clr-state-icon clr-state-icon-warn`,"aria-hidden":`true`,children:(0,D.jsx)(l.alert,{})}),a=(0,D.jsx)(`div`,{className:`clr-state-head`,children:`Couldn’t build this lesson`}),t[0]=i,t[1]=a):(i=t[0],a=t[1]);let o;t[2]===n?o=t[3]:(o=(0,D.jsx)(`div`,{className:`clr-state-sub clr-state-error`,children:n}),t[2]=n,t[3]=o);let s;t[4]===Symbol.for(`react.memo_cache_sentinel`)?(s=(0,D.jsx)(l.refresh,{}),t[4]=s):s=t[4];let c;t[5]===r?c=t[6]:(c=(0,D.jsxs)(`button`,{type:`button`,className:`clr-btn clr-btn-primary`,onClick:r,children:[s,` Try again`]}),t[5]=r,t[6]=c);let u;return t[7]!==o||t[8]!==c?(u=(0,D.jsxs)(`div`,{className:`clr-state`,children:[i,a,o,c]}),t[7]=o,t[8]=c,t[9]=u):u=t[9],u}export{F as CourseLessonReader};
@@ -1,2 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/generateCourse-BldPpgdh.js","assets/rolldown-runtime-DkW27tQK.js","assets/providers-0DthJW_I.js","assets/http-Lar_UMKb.js","assets/blockTypes-DUDdP3pB.js","assets/info-CiqHR5cs.js","assets/attachments-BW-vki-E.js","assets/route-CMdTFx0P.js","assets/useLiveConfig-B4CmBiAK.js","assets/react-BZJXY1be.js","assets/compiler-runtime-qQQXpJgv.js","assets/keyVault-Aw5Y2PjT.js"])))=>i.map(i=>d[i]);
2
- import{t as e}from"./react-BZJXY1be.js";import{t}from"./compiler-runtime-qQQXpJgv.js";import{t as n}from"./jsx-runtime-DeHZSEgm.js";import{n as r,t as i}from"./preload-helper-CiWYd9n-.js";import{n as a,r as o}from"./preloadableLazy-MIX1ApBW.js";import{n as s,t as c}from"./theme-D5D55hZi.js";import{O as l}from"./index-LiHcEJt_.js";import{n as u}from"./icons-gLFQTv74.js";import{t as d}from"./useFocusTrap-CJmpNZv2.js";import{t as f}from"./homeTarget-CwFsJYwb.js";import{t as p}from"./DropSelect-GwIXHA5o.js";import{i as m}from"./store-D2IJF4SA.js";import{_ as h,c as g,h as _,l as v,m as y,s as b}from"./store-B2Rpbqgg.js";import{i as x,t as S}from"./courseSeed-CZdNBTTs.js";/* empty css */import{n as ee,t as te}from"./useSrsCards-C27o39fF.js";import{t as ne}from"./deckLine-NBd3MyGT.js";var re=t(),C=e(),w=n();r();var T;function E(){return T??=Promise.all([i(()=>import(`./generateCourse-BldPpgdh.js`).then(e=>e.n),__vite__mapDeps([0,1,2,3,4,5,6,7])),i(()=>import(`./useLiveConfig-B4CmBiAK.js`).then(e=>e.d),__vite__mapDeps([8,1,9,10,5,11,2,3,4,6,7]))]),T}function D(){E().catch(()=>{})}function O(){return(0,C.useSyncExternalStore)(h,b,b)}function ie(e,t){S({courseId:e,lessonIdx:t}),window.location.hash=`#/course`}function ae(e,t){let n=e.lessons.filter(e=>t.lessons[e.id]?.status===`done`).length;return n>=e.lessons.length?`complete`:n>0||t.current>0?`in-progress`:`new`}var oe={beginner:`Beginner`,intermediate:`Intermediate`,expert:`Expert`},k=[`Personal finance basics`,`How the internet works`,`Spanish for travel`];function A(e){let t=(0,re.c)(67),{course:n,progress:r,onRemove:i}=e,s=(0,C.useRef)(null),[c,l]=(0,C.useState)(!1),d=n.lessons.length,f;if(t[0]!==n.lessons||t[1]!==r.lessons){let e;t[3]===r.lessons?e=t[4]:(e=e=>r.lessons[e.id]?.status===`done`,t[3]=r.lessons,t[4]=e),f=n.lessons.filter(e),t[0]=n.lessons,t[1]=r.lessons,t[2]=f}else f=t[2];let p=f.length,h;t[5]!==p||t[6]!==d?(h=d?Math.round(p/d*100):0,t[5]=p,t[6]=d,t[7]=h):h=t[7];let g=h,_=ae(n,r),v=Math.max(0,Math.min(r.current,d-1)),y=n.lessons[v],b=`Lesson ${v+1} of ${d}`,x=_===`complete`?`Review`:_===`in-progress`?`Continue`:`Start course`;te();let S;t[8]===n.title?S=t[9]:(S=e=>e.name===n.title,t[8]=n.title,t[9]=S);let T=m().decks.find(S),E,D;t[10]===Symbol.for(`react.memo_cache_sentinel`)?(E=()=>{let e=s.current;if(!e)return;let t=ue,n=()=>{t=o(le)};if(!(`IntersectionObserver`in window))return n(),t;let r=new IntersectionObserver(e=>{e.some(ce)&&(r.disconnect(),n())});return r.observe(e),()=>{r.disconnect(),t()}},D=[],t[10]=E,t[11]=D):(E=t[10],D=t[11]),(0,C.useEffect)(E,D);let O=`cr-card cr-card-${_}`,k;t[12]===n.level?k=t[13]:(k=n.level&&(0,w.jsx)(`span`,{className:`cr-badge`,children:oe[n.level]}),t[12]=n.level,t[13]=k);let A=`cr-status cr-status-`+_,j=_===`complete`?`Complete`:_===`in-progress`?`In progress`:`New`,M;t[14]!==A||t[15]!==j?(M=(0,w.jsx)(`span`,{className:A,children:j}),t[14]=A,t[15]=j,t[16]=M):M=t[16];let N;t[17]!==M||t[18]!==k?(N=(0,w.jsxs)(`div`,{className:`cr-card-top`,children:[k,M]}),t[17]=M,t[18]=k,t[19]=N):N=t[19];let P;t[20]===n.title?P=t[21]:(P=(0,w.jsx)(`h3`,{className:`cr-card-title`,children:n.title}),t[20]=n.title,t[21]=P);let F=n.subtitle||n.topic,I;t[22]===F?I=t[23]:(I=(0,w.jsx)(`p`,{className:`cr-card-sub`,children:F}),t[22]=F,t[23]=I);let L=`${n.title} progress`,R=`${p} of ${d} lessons complete`,z=`${g}%`,B;t[24]===z?B=t[25]:(B=(0,w.jsx)(`div`,{className:`cr-progress-fill`,style:{width:z}}),t[24]=z,t[25]=B);let V;t[26]!==g||t[27]!==L||t[28]!==R||t[29]!==B?(V=(0,w.jsx)(`div`,{className:`cr-progress`,role:`progressbar`,"aria-label":L,"aria-valuemin":0,"aria-valuemax":100,"aria-valuenow":g,"aria-valuetext":R,children:B}),t[26]=g,t[27]=L,t[28]=R,t[29]=B,t[30]=V):V=t[30];let H;t[31]===b?H=t[32]:(H=(0,w.jsx)(`span`,{children:b}),t[31]=b,t[32]=H);let U;t[33]===Symbol.for(`react.memo_cache_sentinel`)?(U=(0,w.jsx)(`span`,{className:`cr-card-meta-dot`,"aria-hidden":`true`}),t[33]=U):U=t[33];let W;t[34]!==p||t[35]!==d?(W=(0,w.jsxs)(`span`,{children:[p,`/`,d,` done`]}),t[34]=p,t[35]=d,t[36]=W):W=t[36];let G;t[37]!==H||t[38]!==W?(G=(0,w.jsxs)(`div`,{className:`cr-card-meta`,children:[H,U,W]}),t[37]=H,t[38]=W,t[39]=G):G=t[39];let K;t[40]!==y||t[41]!==_?(K=y&&(0,w.jsxs)(`div`,{className:`cr-current-lesson`,children:[(0,w.jsx)(`span`,{children:_===`complete`?`Review from`:`Up next`}),(0,w.jsx)(`strong`,{children:y.title})]}),t[40]=y,t[41]=_,t[42]=K):K=t[42];let de=T&&(0,w.jsxs)(`a`,{className:`cr-deck-link`,href:ee.deck(n.title),children:[(0,w.jsx)(u.layers,{}),ne(T)]}),q;t[43]!==n.id||t[44]!==r.current?(q=()=>ie(n.id,r.current),t[43]=n.id,t[44]=r.current,t[45]=q):q=t[45];let J,Y;t[46]===Symbol.for(`react.memo_cache_sentinel`)?(J=a(se),Y=(0,w.jsx)(u.play,{}),t[46]=J,t[47]=Y):(J=t[46],Y=t[47]);let X;t[48]!==x||t[49]!==q?(X=(0,w.jsxs)(`button`,{type:`button`,className:`cr-btn cr-btn-primary`,onClick:q,...J,children:[Y,` `,x]}),t[48]=x,t[49]=q,t[50]=X):X=t[50];let Z;t[51]!==c||t[52]!==i?(Z=c?(0,w.jsxs)(`div`,{className:`cr-delete-confirm`,role:`group`,"aria-label":`Confirm course deletion`,children:[(0,w.jsx)(`span`,{children:`Delete?`}),(0,w.jsx)(`button`,{type:`button`,className:`cr-delete-cancel`,onClick:()=>l(!1),children:`Cancel`}),(0,w.jsx)(`button`,{type:`button`,className:`cr-icon-btn cr-icon-danger`,"aria-label":`Confirm delete course`,onClick:i,children:(0,w.jsx)(u.check,{})})]}):(0,w.jsx)(`button`,{type:`button`,className:`cr-icon-btn`,"aria-label":`Delete course`,onClick:()=>l(!0),children:(0,w.jsx)(u.x,{})}),t[51]=c,t[52]=i,t[53]=Z):Z=t[53];let Q;t[54]!==X||t[55]!==Z?(Q=(0,w.jsxs)(`div`,{className:`cr-card-actions`,children:[X,Z]}),t[54]=X,t[55]=Z,t[56]=Q):Q=t[56];let $;return t[57]!==N||t[58]!==P||t[59]!==I||t[60]!==V||t[61]!==G||t[62]!==K||t[63]!==de||t[64]!==Q||t[65]!==O?($=(0,w.jsxs)(`article`,{className:O,ref:s,children:[N,P,I,V,G,K,de,Q]}),t[57]=N,t[58]=P,t[59]=I,t[60]=V,t[61]=G,t[62]=K,t[63]=de,t[64]=Q,t[65]=O,t[66]=$):$=t[66],$}function se(){return l(`#/course`)??Promise.resolve()}function ce(e){return e.isIntersecting}function le(){return l(`#/course`)??Promise.resolve()}function ue(){}function j({initialTopic:e,onClose:t}){let n=(0,C.useRef)(null),r=(0,C.useRef)(null);d(r);let[i,o]=(0,C.useState)(e??``),[s,c]=(0,C.useState)(``),[l,f]=(0,C.useState)(!1),[m,h]=(0,C.useState)(null),g=(0,C.useRef)(null);(0,C.useEffect)(()=>()=>g.current?.abort(),[]);let v=(0,C.useCallback)(()=>{g.current?.abort(),t()},[t]);(0,C.useEffect)(()=>{let e=e=>{e.key===`Escape`&&(e.preventDefault(),v())};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[v]);let y=(0,C.useRef)(null);(0,C.useEffect)(()=>{e?.trim()||y.current?.focus()},[]),(0,C.useEffect)(()=>{let e=n.current;if(!e)return;let t=t=>{t.target===e&&v()};return e.addEventListener(`pointerdown`,t),()=>e.removeEventListener(`pointerdown`,t)},[v]);let b=async e=>{if(!e||l)return;f(!0),h(null);let t=new AbortController;g.current=t;try{let[{generateCourse:n},{getLiveConfigV2:r,toModelConfig:i}]=await E(),a=await n(e,i(r()),{level:s||void 0,signal:t.signal});if(t.signal.aborted)return;_(a),ie(a.id,0)}catch(e){if(t.signal.aborted)return;h(e instanceof Error?e.message:`Something went wrong building that course.`),f(!1)}},x=async e=>{e.preventDefault(),await b(i.trim())};return(0,w.jsx)(`div`,{className:`cr-scrim`,ref:n,children:(0,w.jsxs)(`div`,{className:`cr-sheet`,ref:r,role:`dialog`,"aria-modal":`true`,"aria-labelledby":`cr-sheet-title`,"aria-describedby":`cr-sheet-subtitle`,tabIndex:-1,children:[(0,w.jsxs)(`div`,{className:`cr-sheet-head`,children:[(0,w.jsx)(`div`,{className:`cr-sheet-mark`,"aria-hidden":`true`,children:(0,w.jsx)(u.layers,{})}),(0,w.jsxs)(`div`,{className:`cr-sheet-heading`,children:[(0,w.jsx)(`span`,{className:`cr-sheet-title`,id:`cr-sheet-title`,children:`New course`}),(0,w.jsx)(`span`,{className:`cr-sheet-subtitle`,id:`cr-sheet-subtitle`,children:`A tailored syllabus, built around what you want to understand.`})]}),(0,w.jsx)(`button`,{type:`button`,className:`cr-ed-close`,"aria-label":l?`Cancel building course`:`Close`,onClick:v,children:(0,w.jsx)(u.x,{})})]}),(0,w.jsxs)(`form`,{className:`cr-sheet-body`,"aria-busy":l,onSubmit:e=>void x(e),children:[(0,w.jsxs)(`p`,{className:`cr-legal-note`,children:[(0,w.jsx)(`strong`,{children:`Learning aid, not an authority.`}),` Lessons are AI-generated and may be wrong or incomplete. Verify consequential or professional topics with authoritative sources. `,(0,w.jsx)(`a`,{href:`#/legal?from=home`,children:`Details`})]}),(0,w.jsxs)(`label`,{className:`cr-field`,children:[(0,w.jsx)(`span`,{className:`cr-field-label`,children:`Topic`}),(0,w.jsx)(`input`,{ref:y,type:`text`,className:`cr-input`,placeholder:`e.g. linear algebra, the French Revolution, Rust ownership`,value:i,onFocus:D,onChange:e=>{D(),o(e.target.value)},disabled:l,autoComplete:`off`})]}),(0,w.jsx)(`div`,{className:`cr-topic-picks`,"aria-label":`Topic suggestions`,children:k.map(e=>(0,w.jsx)(`button`,{type:`button`,onClick:()=>o(e),disabled:l,children:e},e))}),(0,w.jsxs)(`div`,{className:`cr-field`,children:[(0,w.jsx)(`span`,{className:`cr-field-label`,children:`Starting level`}),(0,w.jsx)(p,{ariaLabel:`Starting level`,triggerClassName:`cr-input`,value:s,onChange:e=>c(e),disabled:l,focusOnMount:!!e?.trim(),options:[{value:``,label:`Pick for me`},{value:`beginner`,label:`Beginner`},{value:`intermediate`,label:`Intermediate`},{value:`expert`,label:`Expert`}]}),(0,w.jsx)(`span`,{className:`cr-field-hint`,children:`Pick for me lets Mavéa infer the right starting point from your topic.`})]}),m&&(0,w.jsx)(`div`,{className:`cr-error`,role:`alert`,children:m}),(0,w.jsx)(`button`,{type:`submit`,className:`cr-btn cr-btn-primary cr-btn-wide`,disabled:!i.trim()||l,...a(()=>E().then(()=>void 0)),children:l?(0,w.jsxs)(w.Fragment,{children:[(0,w.jsx)(`span`,{className:`cr-spinner`,"aria-hidden":`true`}),` Building your syllabus…`]}):`Build course`})]})]})})}function M(){"use no memo";let e=f();(0,C.useEffect)(()=>c(s()),[]),O();let t=(0,C.useRef)(x()),[n,r]=(0,C.useState)(!!t.current),[i,a]=(0,C.useState)(t.current??``),o=g(),l=(e=``)=>{a(e),r(!0)};return(0,w.jsxs)(`div`,{className:`mavea-app cr-app`,children:[(0,w.jsxs)(`header`,{className:`cr-nav`,children:[(0,w.jsxs)(`button`,{type:`button`,className:`cr-nav-back`,onClick:()=>{window.location.hash=e.href},children:[(0,w.jsx)(u.chevL,{}),` `,e.label]}),(0,w.jsxs)(`div`,{className:`cr-nav-title`,children:[`Courses`,(0,w.jsxs)(`span`,{className:`cr-nav-sub`,children:[o.length,` course`,o.length===1?``:`s`]})]}),(0,w.jsxs)(`button`,{type:`button`,className:`cr-btn cr-btn-primary`,onClick:()=>l(),children:[(0,w.jsx)(u.plus,{}),` New course`]})]}),(0,w.jsx)(`main`,{className:`cr-main`,children:o.length===0?(0,w.jsxs)(`section`,{className:`cr-empty`,"aria-labelledby":`cr-empty-title`,children:[(0,w.jsxs)(`div`,{className:`cr-empty-copy`,children:[(0,w.jsx)(`div`,{className:`cr-empty-icon`,"aria-hidden":`true`,children:(0,w.jsx)(u.layers,{})}),(0,w.jsx)(`div`,{className:`cr-empty-eyebrow`,children:`No courses yet`}),(0,w.jsx)(`h1`,{className:`cr-empty-head`,id:`cr-empty-title`,children:`Build a clear path through anything`}),(0,w.jsx)(`p`,{className:`cr-empty-sub`,children:`Name what you want to understand. Mavéa maps the syllabus, teaches one focused lesson at a time, and turns missed checkpoints into review cards.`}),(0,w.jsxs)(`button`,{type:`button`,className:`cr-btn cr-btn-primary cr-empty-cta`,onClick:()=>l(),children:[(0,w.jsx)(u.plus,{}),` Build your first course`]}),(0,w.jsxs)(`div`,{className:`cr-starter-row`,"aria-label":`Try a topic`,children:[(0,w.jsx)(`span`,{children:`Or try`}),k.map(e=>(0,w.jsx)(`button`,{type:`button`,onClick:()=>l(e),children:e},e))]})]}),(0,w.jsxs)(`div`,{className:`cr-course-path`,"aria-label":`How a Mavéa course works`,children:[(0,w.jsxs)(`div`,{children:[(0,w.jsx)(`span`,{children:`01`}),(0,w.jsx)(`strong`,{children:`Shape the syllabus`}),(0,w.jsx)(`p`,{children:`A useful sequence, matched to your starting level.`})]}),(0,w.jsxs)(`div`,{children:[(0,w.jsx)(`span`,{children:`02`}),(0,w.jsx)(`strong`,{children:`Learn visually`}),(0,w.jsx)(`p`,{children:`Focused lessons use the clearest canvas for each idea.`})]}),(0,w.jsxs)(`div`,{children:[(0,w.jsx)(`span`,{children:`03`}),(0,w.jsx)(`strong`,{children:`Make it stick`}),(0,w.jsx)(`p`,{children:`Checkpoints and spaced review close the gaps.`})]})]})]}):(0,w.jsx)(`div`,{className:`cr-grid`,children:o.map(e=>(0,w.jsx)(A,{course:e,progress:v(e.id),onRemove:()=>y(e.id)},e.id))})}),n&&(0,w.jsx)(j,{initialTopic:i,onClose:()=>r(!1)})]})}export{M as CoursesApp};
@@ -1,2 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/generateLive-DGwnpIip.js","assets/blockLabel-FogyzEQY.js","assets/deepenStore-BWLLzLCY.js","assets/catalog-BHjl-1uH.js","assets/history-D2EH2X6D.js","assets/catalog-Db9GWM6N.js","assets/preload-helper-CiWYd9n-.js","assets/rolldown-runtime-DkW27tQK.js","assets/facts-BUGuVUIc.js","assets/blockTypes-DUDdP3pB.js","assets/streamParse-BX0bAppQ.js","assets/liveSchema-DyfND6P2.js","assets/icons-gLFQTv74.js","assets/jsx-runtime-DeHZSEgm.js","assets/spokenText-C88IQJ0M.js","assets/safeImageUrl-BINWXOTz.js","assets/sourceHost-BV3t2XDb.js","assets/annotations-CftUUB13.js","assets/screen-DFWKge3-.js","assets/attachments-BW-vki-E.js","assets/providers-0DthJW_I.js","assets/http-Lar_UMKb.js","assets/info-CiqHR5cs.js","assets/route-CMdTFx0P.js","assets/effort-jJe4iMIq.js","assets/index-LiHcEJt_.js","assets/react-BZJXY1be.js","assets/compiler-runtime-qQQXpJgv.js","assets/useInView-DsTvv7L_.js","assets/coreIcons-DDTChE1H.js","assets/preloadableLazy-MIX1ApBW.js","assets/cachedImport-DW0gP14h.js","assets/lazyRetry-D50B1UMY.js","assets/theme-D5D55hZi.js","assets/index-BIUYTk1W.css","assets/speed-BOytg6bC.js","assets/cache-CvbSI-pr.js","assets/validate-sGUCmPAs.js","assets/types-C42I77wh.js","assets/json-B0N3XRZU.js","assets/verbatim-DBTj9sPD.js","assets/citation-BsSvaaer.js","assets/number-zqlPMliA.js","assets/receipts-D7zveV-I.js","assets/officeDoc-GU6Cssjf.js","assets/csv-DAqzYXUs.js","assets/search-ZN7v_P5B.js","assets/store-BWLbFXiY.js","assets/contentVault-xfUwSJ3i.js","assets/keyVault-Aw5Y2PjT.js","assets/ready-yBSGJubb.js","assets/shapes-BwoDrn09.js","assets/ledger-BssK9Pv2.js","assets/now-C9-UAzTC.js","assets/select-wEtBn9U6.js"])))=>i.map(i=>d[i]);
2
- import{t as e}from"./react-BZJXY1be.js";import{t}from"./compiler-runtime-qQQXpJgv.js";import{t as n}from"./jsx-runtime-DeHZSEgm.js";import{n as r,t as i}from"./preload-helper-CiWYd9n-.js";import{n as a}from"./icons-gLFQTv74.js";import{t as o}from"./TopicCanvas-Bw4bMFpe.js";import{a as s}from"./loader-DgMLGfAC.js";import{t as c}from"./useFocusTrap-CJmpNZv2.js";import{r as l}from"./sourceHost-BV3t2XDb.js";import"./canvas-C3O7MEA3.js";import{B as u,D as d,K as f,L as p,N as m,P as h,W as g,d as _,f as v,k as y,o as b,p as x,w as S}from"./store-Ba9vzL4H.js";import{l as C,n as w,r as ee,u as te}from"./useLiveConfig-B4CmBiAK.js";import{t as T}from"./route-D4kd-D3B.js";import{t as ne}from"./useDashboards-lgQnk2Al.js";import{a as E,f as D,i as O,l as k,n as re,p as ie,t as ae}from"./format-g3dP8OI3.js";import{n as oe}from"./dataPending-DGdCvY5Y.js";import{t as A}from"./AreaChart-DZGCSEwt.js";import"./tiles-D-s6v-mA.js";import{a as j,n as se,o as M,s as N,t as ce}from"./useDashboardLoop-ifcuVRo-.js";import{r as le}from"./predictions-CkVKHq-5.js";import{i as ue,n as de,r as P}from"./confirmAdd-CZ829Mbx.js";import{t as fe}from"./planTracker-BwoKEftp.js";import{t as pe}from"./pin-BPGVDgnq.js";/* empty css */import{t as me}from"./CadenceCard-DxceyiPA.js";import{t as he}from"./CheckLogRail-BibJTid0.js";var F=t(),I=e();function ge(e,t){for(let n of document.elementsFromPoint(e,t)){let e=n.closest(`[data-dash-widget]`);if(e)return e.getAttribute(`data-dash-widget`)}return null}function _e(e,t){let[n,r]=(0,I.useState)(null),[i,a]=(0,I.useState)(null),o=(0,I.useRef)({working:null,draggingId:null,onCommit:t,sourceIds:e,cleanup:null});o.current.onCommit=t,o.current.sourceIds=e,(0,I.useEffect)(()=>()=>o.current.cleanup?.(),[]);let s=(0,I.useCallback)(e=>t=>{if(t.button!==0&&t.pointerType===`mouse`)return;t.preventDefault();let n=[...o.current.sourceIds];o.current.working=n,o.current.draggingId=e,r(n),a(e);let i=e=>{let t=ge(e.clientX,e.clientY),n=o.current.draggingId,i=o.current.working;if(!t||!n||!i||t===n)return;let a=i.indexOf(n),s=i.indexOf(t);if(a<0||s<0||a===s)return;let c=[...i];c.splice(s,0,c.splice(a,1)[0]),o.current.working=c,r(c)},s=()=>{window.removeEventListener(`pointermove`,i),window.removeEventListener(`pointerup`,s),window.removeEventListener(`pointercancel`,s),o.current.cleanup=null;let e=o.current.working;o.current.working=null,o.current.draggingId=null,r(null),a(null),e&&o.current.onCommit(e)};o.current.cleanup=s,window.addEventListener(`pointermove`,i),window.addEventListener(`pointerup`,s),window.addEventListener(`pointercancel`,s)},[]),c=(0,I.useCallback)(e=>t=>{if(t.key!==`ArrowUp`&&t.key!==`ArrowDown`)return;t.preventDefault();let n=o.current.sourceIds,r=n.indexOf(e),i=t.key===`ArrowUp`?r-1:r+1;if(r<0||i<0||i>=n.length)return;let a=[...n];a.splice(i,0,a.splice(r,1)[0]),o.current.onCommit(a)},[]);return{draggingId:i,order:n??e,handleProps:e=>({onPointerDown:s(e),onKeyDown:c(e),tabIndex:0,role:`button`,"aria-label":`Drag to reorder, or use arrow keys`})}}var L=n();function ve(e){return{id:`dash-`+(e.id??e.type),workspace:`Dashboards`,title:``,sub:``,opener:``,context:[],blocks:[{...e,col:12,delay:0}],proof:null,extras:{},group:`home`,suggests:[],keywords:[]}}function ye(e){let t=(0,F.c)(18),{dashboard:n,widget:r,editing:i,dragging:a,children:s,footer:c}=e,l;t[0]!==n||t[1]!==r?(l=N(n,r),t[0]=n,t[1]=r,t[2]=l):l=t[2];let u=l,d;t[3]===u?d=t[4]:(d=ve(u),t[3]=u,t[4]=d);let f=d,p=`dash-span-${r.span}`,m=i?`dash-tile--editing`:``,h=a?`dash-tile--dragging`:``,g;t[5]!==p||t[6]!==m||t[7]!==h?(g=[`dash-tile`,p,m,h].filter(Boolean),t[5]=p,t[6]=m,t[7]=h,t[8]=g):g=t[8];let _=g.join(` `),v;t[9]===Symbol.for(`react.memo_cache_sentinel`)?(v={},t[9]=v):v=t[9];let y;t[10]===f?y=t[11]:(y=(0,L.jsx)(o,{data:f,spot:null,built:v,onProve:be}),t[10]=f,t[11]=y);let b;return t[12]!==s||t[13]!==_||t[14]!==c||t[15]!==y||t[16]!==r.id?(b=(0,L.jsxs)(`div`,{className:_,"data-dash-widget":r.id,children:[s,y,c]}),t[12]=s,t[13]=_,t[14]=c,t[15]=y,t[16]=r.id,t[17]=b):b=t[17],b}function be(){}function R(){return`w-`+Math.random().toString(36).slice(2,8)}function xe(e){let t=new Set(e.widgets.map(e=>e.block.type));return[{key:`note`,label:`Note`,make:()=>({block:{type:`list`,col:12,id:R(),props:{title:`Note`,items:[`Add a note about this dashboard.`]}},span:2})},{key:`thesis`,label:`Reasoning note`,make:()=>({block:{type:`thesis`,col:12,id:R(),props:{reasoning:``}},span:2})},{key:`alignmentgauge`,label:`Alignment gauge`,make:()=>({block:{type:`alignmentgauge`,col:12,id:R(),props:{pct:null}},span:1})},{key:`standingalerts`,label:`Standing alerts`,make:()=>({block:{type:`standingalerts`,col:12,id:R(),props:{alerts:[]}},span:1})},{key:`sourceslineage`,label:`Sources`,make:()=>({block:{type:`sourceslineage`,col:12,id:R(),props:{rows:[]}},span:2})}].filter(e=>e.key===`note`||!t.has(e.key))}function Se(e){let t=(0,F.c)(26),{dashboard:n,onClose:r}=e,[i,a]=(0,I.useState)(`menu`),[o,s]=(0,I.useState)(``),[l,u]=(0,I.useState)(!1),[d,f]=(0,I.useState)(null),p=xe(n),m=!!C(w()).apiKey,h;t[0]!==n||t[1]!==r?(h=e=>{let{block:t,span:i}=e.make(),a={id:R(),block:t,span:i,fromSource:`manual`};b(n.id,a),r()},t[0]=n,t[1]=r,t[2]=h):h=t[2];let g=h,y=(0,I.useRef)(!0),x,S;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(x=()=>(y.current=!0,()=>{y.current=!1}),S=[],t[3]=x,t[4]=S):(x=t[3],S=t[4]),(0,I.useEffect)(x,S);let ee;t[5]!==o||t[6]!==n||t[7]!==r||t[8]!==l?(ee=async()=>{let e=o.trim();if(!e||l)return;if(n.metrics.length>=12||n.widgets.length>=12){f(`This board is full — remove a card or metric first, then track another number.`);return}u(!0),f(null);let t=await fe(e,C(w()));if(!y.current)return;let i=t.metrics[0];if(!i){u(!1),f(`No single number found in that — the Track bar on the Dashboards home builds richer trackers.`);return}let a=Date.now(),s={id:`m-${a}`,label:i.label,query:i.query,...i.unit?{unit:i.unit}:{},sourceQuote:{text:i.label,saidAt:a},lastValue:null,origin:`empty`},c={id:R(),block:{type:`insight`,col:12,id:`blk-${a}`,num:`1`,props:{title:s.label,stat:`—`,conf:`inferred`,summary:s.label}},span:1,metricId:s.id,fromSource:`manual`},d=de(n);v(n.id,{metrics:[s],tripwires:[],widgets:[c],source:{kind:`ADDED`,conversationId:`manual`,title:`Added by hand`,contributed:`Tracking ${s.label}`,at:a}}),_(n.id,a);let p=await ue(n.id,d);if(y.current){if(p!==`confirmed`){u(!1),f(P(p));return}r()}},t[5]=o,t[6]=n,t[7]=r,t[8]=l,t[9]=ee):ee=t[9];let te=ee,T=(0,I.useRef)(null),ne;t[10]===r?ne=t[11]:(ne={onEscape:r},t[10]=r,t[11]=ne),c(T,ne);let E=(0,I.useRef)(null),D,O;t[12]===i?(D=t[13],O=t[14]):(D=()=>{i===`track`?E.current?.focus():T.current?.querySelector(`.dash-palette-item`)?.focus()},O=[i],t[12]=i,t[13]=D,t[14]=O),(0,I.useEffect)(D,O);let k,re;t[15]===r?(k=t[16],re=t[17]):(k=()=>{let e=T.current?.parentElement;if(!e)return;let t=t=>{e.contains(t.target)||r()};return document.addEventListener(`pointerdown`,t),()=>document.removeEventListener(`pointerdown`,t)},re=[r],t[15]=r,t[16]=k,t[17]=re),(0,I.useEffect)(k,re);let ie;t[18]===Symbol.for(`react.memo_cache_sentinel`)?(ie=e=>{let t=Array.from(T.current?.querySelectorAll(`.dash-palette-item`)??[]);t.length&&t[(t.indexOf(document.activeElement)+e+t.length)%t.length]?.focus()},t[18]=ie):ie=t[18];let ae=ie,oe=i===`menu`?`menu`:`dialog`,A=i===`menu`?`Add a widget`:`Track a number`,j;t[19]===i?j=t[20]:(j=e=>{i===`menu`&&(e.key===`ArrowDown`||e.key===`ArrowUp`)&&(e.preventDefault(),ae(e.key===`ArrowDown`?1:-1))},t[19]=i,t[20]=j);let se=i===`menu`?(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(`button`,{type:`button`,role:`menuitem`,className:`dash-palette-item dash-palette-lead`,onClick:()=>a(`track`),children:`+ Track a number`}),p.map(e=>(0,L.jsxs)(`button`,{type:`button`,role:`menuitem`,className:`dash-palette-item`,onClick:()=>g(e),children:[`+ `,e.label]},e.key))]}):(0,L.jsxs)(`div`,{className:`dash-ptrack`,children:[(0,L.jsxs)(`div`,{className:`dash-ptrack-head`,children:[(0,L.jsx)(`button`,{type:`button`,className:`dash-ptrack-back`,"aria-label":`Back to widget list`,onClick:()=>a(`menu`),children:`←`}),(0,L.jsx)(`span`,{className:`dash-ptrack-kicker`,children:`Track a number`})]}),m?(0,L.jsxs)(`form`,{className:`dash-ptrack-form`,onSubmit:e=>{e.preventDefault(),te()},children:[(0,L.jsx)(`input`,{ref:E,className:`dash-ptrack-input`,value:o,placeholder:`BTC price, SF temperature, 10-year yield…`,"aria-label":`What number to track`,disabled:l,onChange:e=>s(e.target.value)}),d&&(0,L.jsx)(`p`,{className:`dash-ptrack-err`,children:d}),(0,L.jsx)(`button`,{type:`submit`,className:`dash-ptrack-go`,disabled:l||!o.trim(),children:l?`Planning…`:`Track · 1 call + 1 search`})]}):(0,L.jsxs)(`p`,{className:`dash-ptrack-gate`,children:[`A tracked number is fetched by real web searches on your own key — nothing is ever made up. `,(0,L.jsx)(`a`,{href:`#/live`,children:`Connect a model in Live`}),` first.`]})]}),M;return t[21]!==oe||t[22]!==A||t[23]!==j||t[24]!==se?(M=(0,L.jsx)(`div`,{ref:T,className:`dash-palette`,role:oe,"aria-label":A,tabIndex:-1,onKeyDown:j,children:se}),t[21]=oe,t[22]=A,t[23]=j,t[24]=se,t[25]=M):M=t[25],M}function Ce(e){let t=(0,F.c)(24),{dashboardId:n,metric:r}=e,i=r.lastValue===null?``:String(r.lastValue),[a,o]=(0,I.useState)(i),[s,c]=(0,I.useState)(i);i!==s&&(c(i),o(i));let l;t[0]!==n||t[1]!==r.id||t[2]!==r.lastValue||t[3]!==r.unit||t[4]!==a?(l=()=>{let e=Number(a.replace(/[^0-9.+-]/g,``));if(a.trim()===``||!Number.isFinite(e))return;let t=Date.now(),i=r.lastValue;m(n,r.id,e,k(String(e),r.unit),`user`,t);let o=x(n);if(o){let{tripwires:e}=M(o,{[r.id]:i});h(n,e,t)}},t[0]=n,t[1]=r.id,t[2]=r.lastValue,t[3]=r.unit,t[4]=a,t[5]=l):l=t[5];let u=l,d;t[6]===u?d=t[7]:(d=e=>{e.preventDefault(),u()},t[6]=u,t[7]=d);let f=`Set ${r.label}…`,p=`Set ${r.label}`,g;t[8]===Symbol.for(`react.memo_cache_sentinel`)?(g=e=>o(e.target.value),t[8]=g):g=t[8];let _;t[9]!==f||t[10]!==p||t[11]!==a?(_=(0,L.jsx)(`input`,{className:`dash-fill-input`,value:a,inputMode:`decimal`,placeholder:f,"aria-label":p,onChange:g}),t[9]=f,t[10]=p,t[11]=a,t[12]=_):_=t[12];let v;t[13]===r.unit?v=t[14]:(v=r.unit&&(0,L.jsx)(`span`,{className:`dash-fill-unit`,children:r.unit}),t[13]=r.unit,t[14]=v);let y;t[15]===a?y=t[16]:(y=a.trim(),t[15]=a,t[16]=y);let b=y===``,S;t[17]===b?S=t[18]:(S=(0,L.jsx)(`button`,{type:`submit`,className:`dash-fill-save`,disabled:b,children:`Save`}),t[17]=b,t[18]=S);let C;return t[19]!==S||t[20]!==d||t[21]!==_||t[22]!==v?(C=(0,L.jsxs)(`form`,{className:`dash-fill`,onSubmit:d,children:[_,v,S]}),t[19]=S,t[20]=d,t[21]=_,t[22]=v,t[23]=C):C=t[23],C}r();var we=()=>i(()=>import(`./generateLive-DGwnpIip.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54]));function z(){return!!C(w()).apiKey}function B(e){let t=(0,F.c)(15),[n,r]=(0,I.useState)(!1),[i,a]=(0,I.useState)(null),[o,s]=(0,I.useState)(null),c;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(c=[],t[0]=c):c=t[0];let l=(0,I.useRef)(c),u=(0,I.useRef)(!1),d=(0,I.useRef)(null),f;t[1]===Symbol.for(`react.memo_cache_sentinel`)?(f=()=>{d.current?.abort(),d.current=null,u.current=!1,l.current=[],r(!1),a(null),s(null)},t[1]=f):f=t[1];let p;t[2]===e.id?p=t[3]:(p=[e.id],t[2]=e.id,t[3]=p),(0,I.useEffect)(f,p);let m,h;t[4]===Symbol.for(`react.memo_cache_sentinel`)?(m=()=>()=>d.current?.abort(),h=[],t[4]=m,t[5]=h):(m=t[4],h=t[5]),(0,I.useEffect)(m,h);let g;t[6]===e?g=t[7]:(g=t=>{let n=t.trim();if(!n||u.current||!z())return;u.current=!0,r(!0),s(n);let i=C(w()),o=e.widgets.map(t=>N(e,t)),c=new AbortController;d.current=c,we().then(e=>{let{generateLive:t}=e;return t(n,l.current,i,void 0,{selectedBlocks:o,signal:c.signal,caps:{searchMode:`realtime`}})}).then(e=>{c.signal.aborted||(e.error||(l.current=[...l.current,{role:`user`,content:n},{role:`assistant`,content:e.narration}].slice(-8)),a(e))}).catch(()=>{c.signal.aborted||a(null)}).finally(()=>{c.signal.aborted||(u.current=!1,r(!1))})},t[6]=e,t[7]=g);let _=g,v;t[8]===Symbol.for(`react.memo_cache_sentinel`)?(v=()=>{d.current?.abort(),u.current=!1,r(!1),a(null),s(null)},t[8]=v):v=t[8];let y=v,b;t[9]===Symbol.for(`react.memo_cache_sentinel`)?(b=z(),t[9]=b):b=t[9];let x;return t[10]!==o||t[11]!==n||t[12]!==i||t[13]!==_?(x={ready:b,loading:n,result:i,lastAsk:o,run:_,reset:y},t[10]=o,t[11]=n,t[12]=i,t[13]=_,t[14]=x):x=t[14],x}var Te=/^(add|track|watch|monitor|follow)\b/i;function V(e){let t=e.trim();return t&&Te.test(t)?`add`:`ask`}function Ee(e){let t=[];return e.tripwires.length>0&&t.push(`Are the numbers holding where I want?`,`Which alert is closest to triggering?`),e.metrics[0]&&t.push(`What does ${e.metrics[0].label} tell me right now?`),t.push(`What changed since the last update?`),t.slice(0,3)}function H(e,t,n){n.length!==0&&pe({block:n,question:t,target:e,fromSource:`talk`,firstCheck:!1,source:{kind:`ADDED`,conversationId:`talk`,title:`Asked: “${t}”`,contributed:`Pinned ${Math.min(n.length,4)} from this question`,at:Date.now()}})}function De(e){let t=(0,F.c)(29),{dashboard:n}=e,r=B(n),[i,a]=(0,I.useState)(``),[s,c]=(0,I.useState)(!1),[l,u]=(0,I.useState)(`ask`),d;t[0]===n?d=t[1]:(d=Ee(n),t[0]=n,t[1]=d);let f=d,p;t[2]===r?p=t[3]:(p=e=>{c(!1),u(V(e)),r.run(e),a(``)},t[2]=r,t[3]=p);let m=p,h,g;t[4]!==l||t[5]!==n.id||t[6]!==s||t[7]!==r.lastAsk||t[8]!==r.loading||t[9]!==r.result?(h=()=>{l===`add`&&!r.loading&&r.result&&!r.result.error&&r.result.spec.blocks.length>0&&!s&&(H(n.id,r.lastAsk??``,r.result.spec.blocks),c(!0))},g=[l,r.loading,r.result,r.lastAsk,s,n.id],t[4]=l,t[5]=n.id,t[6]=s,t[7]=r.lastAsk,t[8]=r.loading,t[9]=r.result,t[10]=h,t[11]=g):(h=t[10],g=t[11]),(0,I.useEffect)(h,g);let _;t[12]===Symbol.for(`react.memo_cache_sentinel`)?(_=(0,L.jsx)(`div`,{className:`card-eyebrow dash-talk-eyebrow`,children:`Talk to this dashboard`}),t[12]=_):_=t[12];let v;t[13]!==f||t[14]!==i||t[15]!==m||t[16]!==r.loading||t[17]!==r.ready?(v=r.ready?(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(`div`,{className:`dash-talk-chips`,children:f.map(e=>(0,L.jsxs)(`button`,{type:`button`,className:`dash-talk-chip`,disabled:r.loading,onClick:()=>m(e),children:[(0,L.jsx)(`span`,{className:`dash-talk-chip-orb`}),(0,L.jsxs)(`span`,{className:`dash-talk-chip-t`,children:[`“`,e,`”`]})]},e))}),(0,L.jsxs)(`form`,{className:`dash-talk-ask`,onSubmit:e=>{e.preventDefault(),m(i)},children:[(0,L.jsx)(`input`,{className:`dash-talk-input`,value:i,placeholder:`Ask a question, or type "add …" / "track …" to add it in one step`,onChange:e=>a(e.target.value),disabled:r.loading}),(0,L.jsx)(`button`,{type:`submit`,className:`dash-talk-send`,disabled:r.loading||!i.trim(),children:r.loading?`Thinking…`:`Ask`})]})]}):(0,L.jsxs)(`p`,{className:`dash-talk-gate`,children:[`Connect a model in `,(0,L.jsx)(`a`,{href:`#/live`,children:`Live`}),` to ask questions grounded in this dashboard.`]}),t[13]=f,t[14]=i,t[15]=m,t[16]=r.loading,t[17]=r.ready,t[18]=v):v=t[18];let y;t[19]!==l||t[20]!==n.id||t[21]!==s||t[22]!==r.lastAsk||t[23]!==r.loading||t[24]!==r.result?(y=r.lastAsk&&(0,L.jsxs)(`div`,{className:`dash-talk-answer`,children:[(0,L.jsxs)(`div`,{className:`dash-talk-q`,children:[`“`,r.lastAsk,`”`]}),r.loading?(0,L.jsx)(`div`,{className:`dash-talk-thinking`,children:`Mavéa is looking at your dashboard…`}):r.result?.error?(0,L.jsxs)(`div`,{className:`dash-talk-error`,children:[`That didn’t go through. Check your model in `,(0,L.jsx)(`a`,{href:`#/live`,children:`Live`}),` and try again.`]}):r.result?(0,L.jsxs)(L.Fragment,{children:[r.result.narration&&(0,L.jsx)(`p`,{className:`dash-talk-narration`,children:r.result.narration}),(0,L.jsx)(o,{data:r.result.spec,spot:null,built:{},onProve:U}),r.result.spec.blocks.length>0&&(s?(0,L.jsx)(`div`,{className:`dash-talk-pinned`,children:l===`add`?(0,L.jsx)(L.Fragment,{children:`Auto-added — this read like a command, not a question. Remove it from Edit layout if that’s wrong.`}):`Added to this dashboard ✓`}):l===`add`?null:(0,L.jsx)(`button`,{type:`button`,className:`dash-talk-pin`,onClick:()=>{H(n.id,r.lastAsk??``,r.result.spec.blocks),c(!0)},children:`+ Add this to the dashboard`}))]}):null]}),t[19]=l,t[20]=n.id,t[21]=s,t[22]=r.lastAsk,t[23]=r.loading,t[24]=r.result,t[25]=y):y=t[25];let b;return t[26]!==v||t[27]!==y?(b=(0,L.jsxs)(`section`,{className:`dash-talk`,children:[_,v,y]}),t[26]=v,t[27]=y,t[28]=b):b=t[28],b}function U(){}function Oe(e){if(!e.history||e.history.length<2)return null;let t=e.history[e.history.length-2].value,n=e.history[e.history.length-1].value;if(n===t)return null;let r=n>t?`up`:`down`,i=Math.round(Math.abs(n-t)*100)/100;if(i===0)return null;let a=Number.isInteger(i)?String(i):i.toFixed(2),o=e.unit===`$`?`$`:``,s=e.unit&&e.unit!==`$`?e.unit:``;return{direction:r,text:`${r===`up`?`+`:`-`}${o}${a}${s}`}}function ke(e){return new Date(e).toLocaleTimeString(void 0,{hour:`numeric`,minute:`2-digit`})}function W(e){if(e<=0)return`due now`;let t=Math.round(e/6e4);if(t<60)return`${t}m`;let n=Math.floor(t/60),r=t%60;if(n<24)return r?`${n}h ${r}m`:`${n}h`;let i=Math.floor(n/24),a=n%24;return a?`${i}d ${a}h`:`${i}d`}function Ae({dashboard:e,now:t,checking:n=!1}){let r=(0,I.useMemo)(()=>e.metrics.find(e=>e.lastValue!==null)??e.metrics[0],[e.metrics]),i=E(e);if(!i||!r)return null;let a=Oe(r),o=i.label||e.title,s=r.asOf??e.lastRefreshedAt??null,c=e.cadence.data===`manual`?`when you refresh`:W(e.nextDataAt-t),l=r.history??[];return(0,L.jsxs)(`section`,{className:`card dash-hero`,"aria-label":`${o} — as of last check`,children:[(0,L.jsxs)(`div`,{className:`dash-hero-top`,children:[(0,L.jsxs)(`span`,{className:`dash-hero-eyebrow`,children:[o,`: as of last check`]}),(0,L.jsx)(`span`,{className:`dash-hero-meta`,children:n?`checking for new data…`:`as of ${s?ke(s):`not yet checked`} / not real-time — next check ${c}`})]}),(0,L.jsxs)(`div`,{className:`dash-hero-value-row`,children:[(0,L.jsx)(`span`,{className:`dash-hero-value${n?` tile-value--checking`:``}`,children:i.value}),a&&(0,L.jsx)(`span`,{className:`dash-hero-delta dash-hero-delta--${a.direction}`,children:a.text})]}),(0,L.jsx)(`div`,{className:`dash-hero-chart`,children:l.length>=2?(0,L.jsx)(A,{points:l,tone:a?.direction??`flat`}):(0,L.jsx)(`p`,{className:`dash-hero-chart-empty`,children:`Not enough history yet for a chart.`})})]})}function je(e){let t=(0,F.c)(6),{dashboard:n}=e,[r,i]=te();if(ie().keyNudgeShown||!ee(r)||r.rememberKey||!O(n))return null;let a=Me,o;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(o=(0,L.jsx)(`p`,{className:`dash-key-nudge-text`,children:`Mavéa checks this with your key, which currently lives only in this tab. Keep it on this device (encrypted) so checks still work after a reload?`}),t[0]=o):o=t[0];let s;t[1]===i?s=t[2]:(s=(0,L.jsx)(`button`,{type:`button`,className:`dash-key-nudge-keep`,onClick:()=>{i({rememberKey:!0}),a()},children:`Keep key on this device`}),t[1]=i,t[2]=s);let c;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(c=(0,L.jsx)(`button`,{type:`button`,className:`dash-key-nudge-dismiss`,onClick:a,children:`Not now`}),t[3]=c):c=t[3];let l;return t[4]===s?l=t[5]:(l=(0,L.jsxs)(`div`,{className:`card dash-key-nudge`,children:[o,(0,L.jsxs)(`div`,{className:`dash-key-nudge-actions`,children:[s,c]})]}),t[4]=s,t[5]=l),l}function Me(){return D({keyNudgeShown:!0})}var G={hit:{label:`Called it ✓`,className:`is-hit`},miss:{label:`Missed ✗`,className:`is-miss`},unclear:{label:`Unclear`,className:`is-unclear`}};function K(e){let t=(0,F.c)(21),{dashboard:n,now:r}=e,i;t[0]===n.predictionHistory?i=t[1]:(i=n.predictionHistory??[],t[0]=n.predictionHistory,t[1]=i);let a=i,o=a.length>0?a[a.length-1]:null;if(!n.prediction&&!o)return null;let s;t[2]!==n.predictionHistory||t[3]!==r?(s=le(n.predictionHistory,r),t[2]=n.predictionHistory,t[3]=r,t[4]=s):s=t[4];let c=s,l=o?G[o.result]:null,u;t[5]===Symbol.for(`react.memo_cache_sentinel`)?(u=(0,L.jsx)(`span`,{className:`card-eyebrow dash-expects-eyebrow`,children:`Expects by next check`}),t[5]=u):u=t[5];let d;t[6]===n.prediction?d=t[7]:(d=n.prediction&&(0,L.jsx)(`p`,{className:`dash-expects-text`,children:n.prediction.text}),t[6]=n.prediction,t[7]=d);let f;t[8]!==l||t[9]!==o?(f=o&&l&&(0,L.jsxs)(`div`,{className:`dash-expects-grade`,children:[(0,L.jsxs)(`span`,{className:`dash-expects-chip ${l.className}`,children:[`Last call: `,l.label]}),(0,L.jsxs)(`p`,{className:`dash-expects-expected`,children:[`“`,o.expected,`”`]}),o.note&&(0,L.jsx)(`p`,{className:`dash-expects-note`,children:o.note})]}),t[8]=l,t[9]=o,t[10]=f):f=t[10];let p;t[11]!==c.hits||t[12]!==c.total?(p=c.total>0&&(0,L.jsxs)(`span`,{className:`dash-expects-tally`,children:[`Calls this week · `,c.hits,`/`,c.total]}),t[11]=c.hits,t[12]=c.total,t[13]=p):p=t[13];let m;t[14]===Symbol.for(`react.memo_cache_sentinel`)?(m=(0,L.jsx)(`span`,{className:`dash-expects-label`,children:`Predictions are free — written from checks you already paid for`}),t[14]=m):m=t[14];let h;t[15]===p?h=t[16]:(h=(0,L.jsxs)(`div`,{className:`dash-expects-foot`,children:[p,m]}),t[15]=p,t[16]=h);let g;return t[17]!==d||t[18]!==f||t[19]!==h?(g=(0,L.jsxs)(`div`,{className:`dash-expects`,children:[u,d,f,h]}),t[17]=d,t[18]=f,t[19]=h,t[20]=g):g=t[20],g}function Ne(e){let t=(0,F.c)(23),{dashboard:n,now:r}=e,i=j(n.id);if(!(n.tripwires.length>0||n.lastVerdict||n.prediction||i))return null;let a=n.lastVerdict,o;t[0]!==n.tripwires||t[1]!==a?(o=a?n.tripwires.find(e=>e.id===a.tripwireId)??null:null,t[0]=n.tripwires,t[1]=a,t[2]=o):o=t[2];let s=o,c=!!n.lastVerdictError&&(n.lastVerdictAttemptAt??0)>(a?.at??0),l;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(l=(0,L.jsx)(`span`,{className:`card-eyebrow dash-lastcheck-eyebrow`,children:`From the last check`}),t[3]=l):l=t[3];let u;t[4]!==r||t[5]!==a?(u=a&&(0,L.jsx)(`span`,{className:`dash-lastcheck-when`,children:ae(a.at,r).replace(/^updated /,`checked `)}),t[4]=r,t[5]=a,t[6]=u):u=t[6];let d;t[7]===u?d=t[8]:(d=(0,L.jsxs)(`div`,{className:`dash-lastcheck-head`,children:[l,u]}),t[7]=u,t[8]=d);let f;t[9]!==n||t[10]!==c||t[11]!==r||t[12]!==i||t[13]!==s||t[14]!==a?(f=a?(0,L.jsxs)(L.Fragment,{children:[s&&(0,L.jsxs)(`p`,{className:`dash-lastcheck-text dash-lastcheck-about`,children:[`About: `,s.label]}),i?(0,L.jsx)(`p`,{className:`dash-lastcheck-text dash-lastcheck-pending`,children:`Mavéa is reading the latest numbers…`}):c&&(0,L.jsxs)(`p`,{className:`dash-lastcheck-text dash-lastcheck-error`,children:[`A newer check just failed: `,n.lastVerdictError]}),(0,L.jsx)(`p`,{className:`dash-lastcheck-text`,children:a.text}),a.grounded===!1&&(0,L.jsx)(`p`,{className:`dash-lastcheck-text dash-lastcheck-qualifier`,children:`Based on background knowledge, not a fresh search.`}),a.sources&&a.sources.length>0&&(0,L.jsx)(`div`,{className:`dash-lastcheck-sources`,children:a.sources.map(q)})]}):i?(0,L.jsx)(`p`,{className:`dash-lastcheck-text dash-lastcheck-pending`,children:`Mavéa is reading the latest numbers…`}):c?(0,L.jsx)(`p`,{className:`dash-lastcheck-text dash-lastcheck-error`,children:n.lastVerdictError}):(0,L.jsx)(`p`,{className:`dash-lastcheck-text dash-lastcheck-muted`,children:re(n,r)}),t[9]=n,t[10]=c,t[11]=r,t[12]=i,t[13]=s,t[14]=a,t[15]=f):f=t[15];let p;t[16]!==n||t[17]!==r?(p=(0,L.jsx)(K,{dashboard:n,now:r}),t[16]=n,t[17]=r,t[18]=p):p=t[18];let m;return t[19]!==d||t[20]!==f||t[21]!==p?(m=(0,L.jsxs)(`section`,{className:`dash-lastcheck`,"aria-label":`From the last check`,children:[d,f,p]}),t[19]=d,t[20]=f,t[21]=p,t[22]=m):m=t[22],m}function q(e){let t=l(e.url);return t?(0,L.jsx)(`a`,{className:`dash-lastcheck-source`,href:t,target:`_blank`,rel:`noopener noreferrer`,title:e.title,children:e.title},e.url):null}var J={WATCHING:`Watching`,CLEAR:`Clear`,AWAITING:`Awaiting data`,TRIGGERED:`Triggered`};function Y(e){let t=(0,F.c)(15),{tripwire:n}=e,r=n.state===`TRIGGERED`,i=`dash-alertcard-row`+(r?` is-triggered`:``),a=`dash-switch`+(n.state===`AWAITING`?``:` on`),o;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(o=(0,L.jsx)(`span`,{className:`dash-switch-knob`}),t[0]=o):o=t[0];let s;t[1]===a?s=t[2]:(s=(0,L.jsx)(`span`,{className:a,"aria-hidden":`true`,children:o}),t[1]=a,t[2]=s);let c=n.sourceQuote.text||n.label,l;t[3]===c?l=t[4]:(l=(0,L.jsx)(`span`,{className:`dash-alertcard-line`,children:c}),t[3]=c,t[4]=l);let u;t[5]!==r||t[6]!==n.state?(u=r?(0,L.jsx)(`span`,{className:`dash-alertcard-crossed`,children:`A line you set has been crossed`}):(0,L.jsx)(`span`,{className:`dash-alertcard-state`,children:J[n.state]}),t[5]=r,t[6]=n.state,t[7]=u):u=t[7];let d;t[8]!==l||t[9]!==u?(d=(0,L.jsxs)(`div`,{className:`dash-alertcard-body`,children:[l,u]}),t[8]=l,t[9]=u,t[10]=d):d=t[10];let f;return t[11]!==i||t[12]!==s||t[13]!==d?(f=(0,L.jsxs)(`li`,{className:i,children:[s,d]}),t[11]=i,t[12]=s,t[13]=d,t[14]=f):f=t[14],f}function Pe(e){let t=(0,F.c)(5),{dashboard:n}=e;if(n.tripwires.length===0)return null;let r;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(r=(0,L.jsx)(`div`,{className:`card-eyebrow`,children:`Your alerts`}),t[0]=r):r=t[0];let i;t[1]===n.tripwires?i=t[2]:(i=n.tripwires.map(X),t[1]=n.tripwires,t[2]=i);let a;return t[3]===i?a=t[4]:(a=(0,L.jsxs)(`section`,{className:`card dash-alertcard`,"aria-label":`Your alerts`,children:[r,(0,L.jsx)(`ul`,{className:`dash-alertcard-list`,children:i})]}),t[3]=i,t[4]=a),a}function X(e){return(0,L.jsx)(Y,{tripwire:e},e.id)}var Z={scheduled:`Scheduled`,search:`Search`,sources:`Sources`,extraction:`Extraction`,grounding:`Grounding`,saved:`Saved`,tripwires:`Lines checked`},Fe={updated:`New data saved`,"no-change":`Checked — nothing new`,unverified:`Nothing could be verified`,failed:`The check could not run`};function Ie(e){if(e.endedAt===void 0)return`…`;let t=(e.endedAt-e.startedAt)/1e3;return t<1?`${Math.max(1,Math.round(t*1e3))}ms`:`${t.toFixed(1)}s`}function Le(e){let t=(0,F.c)(13),{dashboardId:n}=e,r,i;t[0]===n?(r=t[1],i=t[2]):(r=()=>u(n),i=()=>u(n),t[0]=n,t[1]=r,t[2]=i);let a=(0,I.useSyncExternalStore)(g,r,i),[o,s]=(0,I.useState)(!1),c=a[0];if(!c)return null;let l;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(l=()=>s(Q),t[3]=l):l=t[3];let d=o?`Hide`:`What happened on the last check?`,f;t[4]!==o||t[5]!==d?(f=(0,L.jsx)(`button`,{type:`button`,className:`crp-toggle`,"aria-expanded":o,onClick:l,children:d}),t[4]=o,t[5]=d,t[6]=f):f=t[6];let m;t[7]!==c||t[8]!==o?(m=o&&(0,L.jsxs)(`ol`,{className:`crp-steps`,children:[c.steps.map(Re),(0,L.jsxs)(`li`,{className:`crp-foot`,children:[(0,L.jsx)(`span`,{children:c.outcome?Fe[c.outcome]:`Running…`}),(0,L.jsx)(`span`,{className:`crp-foot-time`,children:Ie(c)})]}),c.failure&&(0,L.jsx)(`li`,{className:`crp-fix`,children:p(c.failure)})]}),t[7]=c,t[8]=o,t[9]=m):m=t[9];let h;return t[10]!==f||t[11]!==m?(h=(0,L.jsxs)(`section`,{className:`crp`,children:[f,m]}),t[10]=f,t[11]=m,t[12]=h):h=t[12],h}function Re(e,t){return(0,L.jsxs)(`li`,{className:e.ok?`crp-step`:`crp-step is-bad`,children:[(0,L.jsx)(`span`,{className:`crp-step-mark`,"aria-hidden":`true`,children:e.ok?`✓`:`✕`}),(0,L.jsx)(`span`,{className:`crp-step-name`,children:Z[e.name]}),e.count!==void 0&&(0,L.jsx)(`span`,{className:`crp-step-count`,children:e.count}),e.detail&&(0,L.jsx)(`span`,{className:`crp-step-detail`,children:e.detail})]},`${e.name}-${t}`)}function Q(e){return!e}var ze={1:`S`,2:`M`,3:`L`};function $(e){let t=(0,F.c)(120),{id:n}=e,r=ne(),i;t[0]!==r||t[1]!==n?(i=r.find(e=>e.id===n)??null,t[0]=r,t[1]=n,t[2]=i):i=t[2];let o=i,[c,l]=(0,I.useState)(!1),[u,p]=(0,I.useState)(!1),m;t[3]===o?.widgets?m=t[4]:(m=o?.widgets.map(Ge)??[],t[3]=o?.widgets,t[4]=m);let h=m,g;t[5]===o?g=t[6]:(g=e=>o&&d(o.id,e),t[5]=o,t[6]=g);let _=_e(h,g),v;t[7]===o?.widgets?v=t[8]:(v=new Map((o?.widgets??[]).map(We)),t[7]=o?.widgets,t[8]=v);let b=v,x,C;t[9]===o?(x=t[10],C=t[11]):(x=()=>{o&&s(o.widgets.map(Ue))},C=[o],t[9]=o,t[10]=x,t[11]=C),(0,I.useEffect)(x,C);let w=o?.id,E,D;t[12]===w?(E=t[13],D=t[14]):(E=()=>{w&&f(w)},D=[w],t[12]=w,t[13]=E,t[14]=D),(0,I.useEffect)(E,D);let[k,ie]=(0,I.useState)(He),ae,A;t[15]===Symbol.for(`react.memo_cache_sentinel`)?(A=()=>{let e=window.setInterval(()=>ie(Date.now()),3e4);return()=>window.clearInterval(e)},ae=[],t[15]=ae,t[16]=A):(ae=t[15],A=t[16]),(0,I.useEffect)(A,ae);let[j]=te(),M=oe(o?.id??``),[N,le]=(0,I.useState)(`idle`),ue;t[17]===Symbol.for(`react.memo_cache_sentinel`)?(ue=async e=>{le(`busy`);let t=await se(e);le(t===`no-model`||t===`failed`||t===`unverified`?t:`idle`)},t[17]=ue):ue=t[17];let de=ue,[P,fe]=(0,I.useState)(`idle`),pe;t[18]===Symbol.for(`react.memo_cache_sentinel`)?(pe=async e=>{fe(`busy`);let t=await ce(e);fe(t===`no-model`||t===`failed`?t:`idle`)},t[18]=pe):pe=t[18];let ge=pe;if(!o){let e;t[19]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,L.jsx)(`p`,{className:`dash-empty-title`,children:`That dashboard isn’t here.`}),t[19]=e):e=t[19];let n;return t[20]===Symbol.for(`react.memo_cache_sentinel`)?(n=(0,L.jsx)(`div`,{className:`dash-detail`,children:(0,L.jsxs)(`div`,{className:`dash-empty`,children:[e,(0,L.jsxs)(`p`,{className:`dash-empty-how`,children:[`It may have been removed. `,(0,L.jsx)(`a`,{href:T.gallery,children:`Back to your dashboards →`})]})]})}),t[20]=n):n=t[20],n}let ve;t[21]===o.id?ve=t[22]:(ve=(e,t)=>{y(o.id,e,t>=3?1:t+1)},t[21]=o.id,t[22]=ve);let be=ve,R;t[23]!==b||t[24]!==be||t[25]!==o||t[26]!==c||t[27]!==_?(R=_.order.map(e=>{let t=b.get(e);if(!t)return null;let n=t.metricId?o.metrics.find(e=>e.id===t.metricId):null,r=!c&&n?.blankKey?(0,L.jsx)(Ce,{dashboardId:o.id,metric:n}):void 0;return(0,L.jsx)(ye,{dashboard:o,widget:t,editing:c,dragging:_.draggingId===t.id,footer:r,children:c&&(0,L.jsxs)(`div`,{className:`dash-tile-chrome`,children:[(0,L.jsx)(`span`,{className:`dash-tile-handle`,..._.handleProps(t.id),children:`⠿`}),(0,L.jsxs)(`div`,{className:`dash-tile-ctrls`,children:[(0,L.jsx)(`button`,{type:`button`,className:`dash-tile-size`,onClick:()=>be(t.id,t.span),title:`Resize`,children:ze[t.span]}),(0,L.jsx)(`button`,{type:`button`,className:`dash-tile-x`,onClick:()=>S(o.id,t.id),"aria-label":`Remove widget`,children:`×`})]})]})},t.id)}),t[23]=b,t[24]=be,t[25]=o,t[26]=c,t[27]=_,t[28]=R):R=t[28];let xe=R,we;t[29]===Symbol.for(`react.memo_cache_sentinel`)?(we=(0,L.jsx)(`a`,{className:`dash-back`,href:T.gallery,"aria-label":`Back to dashboards`,children:`←`}),t[29]=we):we=t[29];let z;t[30]===o.title?z=t[31]:(z=(0,L.jsx)(`span`,{className:`dash-detail-title`,children:o.title}),t[30]=o.title,t[31]=z);let B;t[32]===o.question?B=t[33]:(B=o.question&&(0,L.jsxs)(`span`,{className:`dash-detail-q`,title:o.question,children:[`“`,o.question,`”`]}),t[32]=o.question,t[33]=B);let Te;t[34]===Symbol.for(`react.memo_cache_sentinel`)?(Te=(0,L.jsx)(`i`,{className:`dash-live-dot`}),t[34]=Te):Te=t[34];let V;t[35]!==o||t[36]!==M||t[37]!==k?(V=M?`checking for new data…`:re(o,k),t[35]=o,t[36]=M,t[37]=k,t[38]=V):V=t[38];let Ee=!M&&O(o)&&o.cadence.data!==`manual`?` · refreshes while open`:``,H;t[39]!==V||t[40]!==Ee?(H=(0,L.jsxs)(`span`,{className:`dash-detail-clock`,children:[Te,V,Ee]}),t[39]=V,t[40]=Ee,t[41]=H):H=t[41];let U;t[42]===o.id?U=t[43]:(U=()=>void de(o.id),t[42]=o.id,t[43]=U);let Oe=N===`busy`,ke=N===`busy`?`dash-refresh-spin`:void 0,W;t[44]===ke?W=t[45]:(W=(0,L.jsx)(a.refresh,{className:ke}),t[44]=ke,t[45]=W);let Me=N===`busy`?`Refreshing…`:`Refresh now`,G;t[46]!==U||t[47]!==Oe||t[48]!==W||t[49]!==Me?(G=(0,L.jsxs)(`button`,{type:`button`,className:`dash-edit-btn dash-refresh-btn`,onClick:U,disabled:Oe,title:`Fetch current values now, regardless of cadence`,children:[W,Me]}),t[46]=U,t[47]=Oe,t[48]=W,t[49]=Me,t[50]=G):G=t[50];let K;t[51]!==o||t[52]!==j||t[53]!==N?(K=(N===`no-model`||!ee(j)&&O(o))&&(0,L.jsx)(`span`,{className:`dash-refresh-hint`,children:`Connect a model in Live settings to refresh.`}),t[51]=o,t[52]=j,t[53]=N,t[54]=K):K=t[54];let q;t[55]===N?q=t[56]:(q=N===`failed`&&(0,L.jsx)(`span`,{className:`dash-refresh-hint`,children:`Couldn’t reach your model — check its key or quota, then try again.`}),t[55]=N,t[56]=q);let J;t[57]===N?J=t[58]:(J=N===`unverified`&&(0,L.jsx)(`span`,{className:`dash-refresh-hint`,children:`Checked, but no source could verify new values — keeping the last real ones.`}),t[57]=N,t[58]=J);let Y;t[59]!==o.id||t[60]!==o.metrics.length||t[61]!==P?(Y=o.metrics.length>0&&(0,L.jsxs)(`button`,{type:`button`,className:`dash-edit-btn dash-read-btn`,onClick:()=>void ge(o.id),disabled:P===`busy`,title:`Ask Mavéa to read the latest numbers now`,children:[(0,L.jsx)(a.sparkle,{className:P===`busy`?`dash-refresh-spin`:void 0}),P===`busy`?`Reading…`:`Read the numbers now`]}),t[59]=o.id,t[60]=o.metrics.length,t[61]=P,t[62]=Y):Y=t[62];let X;t[63]===P?X=t[64]:(X=P===`no-model`&&(0,L.jsx)(`span`,{className:`dash-refresh-hint`,children:`Connect a model in Live settings to read.`}),t[63]=P,t[64]=X);let Z;t[65]===P?Z=t[66]:(Z=P===`failed`&&(0,L.jsx)(`span`,{className:`dash-refresh-hint`,children:`Couldn’t reach your model — check its key or quota, then try again.`}),t[65]=P,t[66]=Z);let Fe=`dash-edit-btn`+(c?` is-active`:``),Ie;t[67]===Symbol.for(`react.memo_cache_sentinel`)?(Ie=()=>{l(Ve),p(!1)},t[67]=Ie):Ie=t[67];let Re=c?`Done`:`Edit layout`,Q;t[68]!==Fe||t[69]!==Re?(Q=(0,L.jsx)(`button`,{type:`button`,className:Fe,onClick:Ie,children:Re}),t[68]=Fe,t[69]=Re,t[70]=Q):Q=t[70];let $;t[71]===o.id?$=t[72]:($=T.settings(o.id),t[71]=o.id,t[72]=$);let Ke;t[73]===$?Ke=t[74]:(Ke=(0,L.jsx)(`a`,{className:`dash-gear`,href:$,"aria-label":`Dashboard settings`,title:`Settings`,children:`⚙`}),t[73]=$,t[74]=Ke);let qe;t[75]!==z||t[76]!==B||t[77]!==H||t[78]!==G||t[79]!==K||t[80]!==q||t[81]!==J||t[82]!==Y||t[83]!==X||t[84]!==Z||t[85]!==Q||t[86]!==Ke?(qe=(0,L.jsxs)(`header`,{className:`dash-detail-head`,children:[we,z,B,H,G,K,q,J,Y,X,Z,Q,Ke]}),t[75]=z,t[76]=B,t[77]=H,t[78]=G,t[79]=K,t[80]=q,t[81]=J,t[82]=Y,t[83]=X,t[84]=Z,t[85]=Q,t[86]=Ke,t[87]=qe):qe=t[87];let Je;t[88]!==o||t[89]!==c?(Je=!c&&(0,L.jsx)(je,{dashboard:o}),t[88]=o,t[89]=c,t[90]=Je):Je=t[90];let Ye;t[91]!==o||t[92]!==M||t[93]!==c||t[94]!==k?(Ye=!c&&(0,L.jsx)(Ae,{dashboard:o,now:k,checking:M}),t[91]=o,t[92]=M,t[93]=c,t[94]=k,t[95]=Ye):Ye=t[95];let Xe;t[96]!==o||t[97]!==c||t[98]!==k?(Xe=!c&&(0,L.jsx)(Ne,{dashboard:o,now:k}),t[96]=o,t[97]=c,t[98]=k,t[99]=Xe):Xe=t[99];let Ze;t[100]!==o||t[101]!==c||t[102]!==u?(Ze=c&&(0,L.jsxs)(`div`,{className:`dash-edit-bar`,children:[(0,L.jsxs)(`span`,{className:`dash-edit-hint`,children:[`Drag a tile by its `,(0,L.jsx)(`strong`,{children:`⠿`}),` handle to reorder, tap `,(0,L.jsx)(`strong`,{children:`S/M/L`}),` to resize, `,(0,L.jsx)(`strong`,{children:`×`}),` to remove.`]}),(0,L.jsx)(`button`,{type:`button`,className:`dash-edit-add`,onClick:()=>p(Be),"aria-expanded":u,children:`+ Add widget`}),u&&(0,L.jsx)(Se,{dashboard:o,onClose:()=>p(!1)})]}),t[100]=o,t[101]=c,t[102]=u,t[103]=Ze):Ze=t[103];let Qe;t[104]!==o||t[105]!==c||t[106]!==k||t[107]!==xe?(Qe=c?(0,L.jsx)(`div`,{className:`dash-grid`,children:xe}):(0,L.jsxs)(`div`,{className:`dash-detail-cols`,children:[(0,L.jsxs)(`div`,{className:`dash-detail-main`,children:[o.widgets.length>0&&(0,L.jsxs)(`div`,{className:`dash-detail-section`,children:[(0,L.jsx)(`div`,{className:`card-eyebrow dash-detail-section-title`,children:`Cards`}),(0,L.jsx)(`div`,{className:`dash-grid`,children:xe})]}),(0,L.jsx)(he,{dashboardId:o.id,now:k}),(0,L.jsx)(Le,{dashboardId:o.id})]}),(0,L.jsxs)(`div`,{className:`dash-detail-side`,children:[(0,L.jsx)(me,{dashboard:o,now:k}),(0,L.jsx)(Pe,{dashboard:o})]})]}),t[104]=o,t[105]=c,t[106]=k,t[107]=xe,t[108]=Qe):Qe=t[108];let $e;t[109]!==o||t[110]!==c?($e=!c&&(0,L.jsx)(De,{dashboard:o},o.id),t[109]=o,t[110]=c,t[111]=$e):$e=t[111];let et;return t[112]!==qe||t[113]!==Je||t[114]!==Ye||t[115]!==Xe||t[116]!==Ze||t[117]!==Qe||t[118]!==$e?(et=(0,L.jsxs)(`div`,{className:`dash-detail`,children:[qe,Je,Ye,Xe,Ze,Qe,$e]}),t[112]=qe,t[113]=Je,t[114]=Ye,t[115]=Xe,t[116]=Ze,t[117]=Qe,t[118]=$e,t[119]=et):et=t[119],et}function Be(e){return!e}function Ve(e){return!e}function He(){return Date.now()}function Ue(e){return e.block}function We(e){return[e.id,e]}function Ge(e){return e.id}export{$ as DashboardDetail};
@@ -1,2 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/DashboardLoopRuntime-Dsy9u1wa.js","assets/useDashboardLoop-ifcuVRo-.js","assets/rolldown-runtime-DkW27tQK.js","assets/react-BZJXY1be.js","assets/compiler-runtime-qQQXpJgv.js","assets/preload-helper-CiWYd9n-.js","assets/http-Lar_UMKb.js","assets/store-Ba9vzL4H.js","assets/friendlyAsk-BBdRZIar.js","assets/contentVault-xfUwSJ3i.js","assets/keyVault-Aw5Y2PjT.js","assets/localBudget-CxLP6bjE.js","assets/providers-0DthJW_I.js","assets/blockTypes-DUDdP3pB.js","assets/info-CiqHR5cs.js","assets/attachments-BW-vki-E.js","assets/route-CMdTFx0P.js","assets/useLiveConfig-B4CmBiAK.js","assets/json-B0N3XRZU.js","assets/number-zqlPMliA.js","assets/ledger-Cv0LBflx.js","assets/format-g3dP8OI3.js","assets/dataPending-DGdCvY5Y.js","assets/now-C9-UAzTC.js","assets/predictions-CkVKHq-5.js","assets/notify-Bz4wuE4T.js","assets/dashboardEvents-CiayRLrH.js","assets/spokenText-C88IQJ0M.js","assets/kokoro-DXRj0KQX.js","assets/index-LiHcEJt_.js","assets/useInView-DsTvv7L_.js","assets/jsx-runtime-DeHZSEgm.js","assets/coreIcons-DDTChE1H.js","assets/preloadableLazy-MIX1ApBW.js","assets/cachedImport-DW0gP14h.js","assets/lazyRetry-D50B1UMY.js","assets/theme-D5D55hZi.js","assets/index-BIUYTk1W.css"])))=>i.map(i=>d[i]);
2
- import{t as e}from"./react-BZJXY1be.js";import{t}from"./compiler-runtime-qQQXpJgv.js";import{t as n}from"./jsx-runtime-DeHZSEgm.js";import{n as r,t as i}from"./preload-helper-CiWYd9n-.js";import{t as a}from"./preloadableLazy-MIX1ApBW.js";import{a as o,s}from"./index-LiHcEJt_.js";import{t as c}from"./useDashboards-lgQnk2Al.js";var l=t(),u=e(),d=n();r();var f=a(()=>i(()=>import(`./DashboardLoopRuntime-Dsy9u1wa.js`).then(e=>({default:e.DashboardLoopRuntime})),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37]))).Component;function p(){let e=(0,l.c)(1),t=(0,u.useSyncExternalStore)(s,o,m),n=c();if(!t||n.length===0)return null;let r;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(r=(0,d.jsx)(u.Suspense,{fallback:null,children:(0,d.jsx)(f,{})}),e[0]=r):r=e[0],r}function m(){return!1}export{p as DashboardLoopGate};
@@ -1 +0,0 @@
1
- import{r as e}from"./useDashboardLoop-ifcuVRo-.js";function t(){return e(),null}export{t as DashboardLoopRuntime};
@@ -1,2 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/AppCommandPalette-DdOPNZ0e.js","assets/react-BZJXY1be.js","assets/rolldown-runtime-DkW27tQK.js","assets/jsx-runtime-DeHZSEgm.js","assets/index-LiHcEJt_.js","assets/compiler-runtime-qQQXpJgv.js","assets/useInView-DsTvv7L_.js","assets/coreIcons-DDTChE1H.js","assets/preload-helper-CiWYd9n-.js","assets/preloadableLazy-MIX1ApBW.js","assets/cachedImport-DW0gP14h.js","assets/lazyRetry-D50B1UMY.js","assets/theme-D5D55hZi.js","assets/index-BIUYTk1W.css","assets/registry-DGNSqTxE.js","assets/CommandPalette-Bs6tpdZl.js","assets/icons-gLFQTv74.js","assets/CommandPalette-Bb-eErih.css","assets/demoPaletteItems-NPCSaSU6.js","assets/planTracker-BwoKEftp.js","assets/http-Lar_UMKb.js","assets/providers-0DthJW_I.js","assets/blockTypes-DUDdP3pB.js","assets/info-CiqHR5cs.js","assets/attachments-BW-vki-E.js","assets/route-CMdTFx0P.js","assets/json-B0N3XRZU.js","assets/now-C9-UAzTC.js","assets/PlanReview-CrTbmMAd.js","assets/store-Ba9vzL4H.js","assets/friendlyAsk-BBdRZIar.js","assets/contentVault-xfUwSJ3i.js","assets/keyVault-Aw5Y2PjT.js","assets/localBudget-CxLP6bjE.js","assets/useDashboardLoop-ifcuVRo-.js","assets/useLiveConfig-B4CmBiAK.js","assets/number-zqlPMliA.js","assets/ledger-Cv0LBflx.js","assets/format-g3dP8OI3.js","assets/dataPending-DGdCvY5Y.js","assets/predictions-CkVKHq-5.js","assets/notify-Bz4wuE4T.js","assets/dashboardEvents-CiayRLrH.js","assets/spokenText-C88IQJ0M.js","assets/kokoro-DXRj0KQX.js","assets/confirmAdd-CZ829Mbx.js","assets/relate-aQFFr11O.js","assets/dashboards-Cvs28p3Z.css","assets/dash-composer-DeNWVwpU.css","assets/RewindOverlay-BO7YgDsW.js","assets/useFocusTrap-CJmpNZv2.js","assets/motion-DxHSlPN6.js","assets/useDashboards-lgQnk2Al.js","assets/useLedger-1WVXef68.js","assets/checkLogModel-BMtruriG.js","assets/RewindOverlay-C92qgvmi.css","assets/DashPresent-BDWgO9am.js","assets/TrackerTile-CrT9u1I4.js","assets/route-D4kd-D3B.js","assets/AreaChart-DZGCSEwt.js","assets/tiles-D-s6v-mA.js","assets/tiles-CBiVVjtT.css","assets/DashPresent-DQYcgp-W.css","assets/templates-BIkAr4YH.css","assets/DashboardDetail-BrnAdWfy.js","assets/TopicCanvas-Bw4bMFpe.js","assets/loader-DgMLGfAC.js","assets/FallbackCard-ap_4wOfj.js","assets/blockLabel-FogyzEQY.js","assets/FallbackCard-D_6ps1xA.css","assets/motion-BY_Egaxm.js","assets/useSpatialCanvas-CfmZOXXP.js","assets/CanvasSkeleton-BmGjJHUQ.js","assets/CanvasSkeleton-DYASkTjW.css","assets/richText-BkxJhl9N.js","assets/toast-BBNs2h3L.js","assets/format-q0LwBjID.js","assets/safeImageUrl-BINWXOTz.js","assets/useValidatedImage-BQi2c66o.js","assets/deepenStore-BWLLzLCY.js","assets/catalog-BHjl-1uH.js","assets/lib-u95BsX_B.js","assets/BlockEmpty-B82uCse8.js","assets/lib-DP9Kuxqk.css","assets/TopicCanvas-DWTm611H.css","assets/sourceHost-BV3t2XDb.js","assets/canvas-C3O7MEA3.js","assets/ReplayCard-B6NYiYzQ.js","assets/annotationReel-K2FYv-3B.js","assets/registry-Dd1lcXrO.js","assets/svgLabel-BQMDdcT2.js","assets/fit-CMu7prjb.js","assets/ReplayCard-Cs6mzTRa.css","assets/pin-BPGVDgnq.js","assets/pin-BXyyKnci.css","assets/CadenceCard-DxceyiPA.js","assets/CheckLogRail-BibJTid0.js","assets/CheckLogRail-BOaXnqWK.css","assets/DashboardDetail-8J8TsdQg.css","assets/DashboardSettings-DJon1Q4o.js","assets/DashboardOverview-C3hv9sm1.js"])))=>i.map(i=>d[i]);
2
- import{t as e}from"./react-BZJXY1be.js";import{t}from"./compiler-runtime-qQQXpJgv.js";import{t as n}from"./jsx-runtime-DeHZSEgm.js";import{n as r,t as i}from"./preload-helper-CiWYd9n-.js";import{t as a}from"./cachedImport-DW0gP14h.js";import{n as o,t as s}from"./preloadableLazy-MIX1ApBW.js";import{n as c,t as l}from"./theme-D5D55hZi.js";import{A as u,E as d,O as f,it as p,j as m,k as h,lt as g,nt as _,rt as v}from"./index-LiHcEJt_.js";import{n as y}from"./icons-gLFQTv74.js";import{t as b}from"./useFocusTrap-CJmpNZv2.js";import{r as x}from"./sourceHost-BV3t2XDb.js";import{T as S,w as C}from"./kokoro-DXRj0KQX.js";import{t as w}from"./FeatureUseNotice-Bda9jr3W.js";import{t as T}from"./homeTarget-CwFsJYwb.js";/* empty css */import{m as E}from"./store-Ba9vzL4H.js";import{l as D,n as O,r as k,u as ee}from"./useLiveConfig-B4CmBiAK.js";import{t as A}from"./TopbarMenu-DQXxqSWY.js";import{a as j,s as te}from"./useStudy-CySgE3Cx.js";import{n as ne,r as re,t as M}from"./route-D4kd-D3B.js";import{n as N,t as P}from"./useDashboards-lgQnk2Al.js";import{t as F}from"./useLedger-1WVXef68.js";import{i as I,p as L,u as R}from"./format-g3dP8OI3.js";import{n as ie,r as ae,t as z}from"./TrackerTile-CrT9u1I4.js";import{n as oe,o as se,s as B}from"./dashboardEvents-CiayRLrH.js";/* empty css */import{t as V}from"./CheckLogRail-BibJTid0.js";/* empty css */var H=e(),U=t(),W=n();function G({href:e,label:t=`Mavéa`,className:n}){return(0,W.jsxs)(`a`,{className:n,href:e,"aria-label":`${t} home`,children:[(0,W.jsx)(`span`,{className:`jelly-mark`}),t]})}var K=g();function ce(e){let t=(t,n,r)=>({label:t,blurb:n,onClick:()=>{window.location.hash=r},preload:()=>f(r)??Promise.resolve(),show:r!==e.omitHash}),n=(t,n)=>({label:t,blurb:n,onClick:e.enterLive,show:!0});return{create:[n(`New`,`Start a fresh session`)],practice:[n(`Rehearse`,`Practice a hard conversation — take the seat, or send your Mavéa`),t(`Study`,`Go through your flashcards, and organize your decks`,`#/flashcards`),t(`Courses`,`Turn a topic into a structured syllabus — a lesson at a time, at your pace`,`#/courses`)],share:[n(`Present`,`Fill the room — the chrome falls away, the mic stays live`),n(`Export`,`Choose a template and export a polished PDF`),n(`Share`,`Share this conversation as a story`)],explore:[{label:`Search all features`,blurb:`Browse Mavéa’s feature index · ${u}`,onClick:e.openPalette,show:!0},n(`Atlas`,`Kept conversations and topics, as a place`),n(`Watch me think`,`A live map of your thinking`),t(`Prism`,`Split your document into a map of its claims`,`#/prism`),t(`Ripple`,`Model a code change’s impact, risks, and a proposed ship order`,`#/ripple`),t(`Dashboards`,`Dashboards that refresh on schedule while Mavéa is open`,`#/dashboards`),t(`Deep Zoom`,`Telescope any topic from big picture to finest detail`,`#/deepzoom`)]}}r();var q=s(()=>i(()=>import(`./AppCommandPalette-DdOPNZ0e.js`).then(e=>({default:e.AppCommandPalette})),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18]))),le=q.Component;function ue(e){let t=(0,U.c)(26),{omitHash:n}=e,{open:r,openPalette:i,closePalette:a}=m(),o=de,s;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(s=()=>{v(),o()},t[0]=s):s=t[0];let c=s,l;t[1]===Symbol.for(`react.memo_cache_sentinel`)?(l=e=>()=>{v(),_(e),p(),o()},t[1]=l):l=t[1];let u=l,f;t[2]!==n||t[3]!==i?(f=ce({openPalette:i,enterLive:o,omitHash:n}),t[2]=n,t[3]=i,t[4]=f):f=t[4];let g=f,y=j(),b;t[5]===g.create?b=t[6]:(b=(0,W.jsx)(A,{label:`Create`,items:g.create}),t[5]=g.create,t[6]=b);let x;t[7]!==g.practice||t[8]!==y?(x=(0,W.jsx)(A,{label:`Practice`,items:g.practice,badge:y}),t[7]=g.practice,t[8]=y,t[9]=x):x=t[9];let S;t[10]===g.share?S=t[11]:(S=(0,W.jsx)(A,{label:`Share`,items:g.share}),t[10]=g.share,t[11]=S);let C;t[12]===g.explore?C=t[13]:(C=(0,W.jsx)(A,{label:`Explore`,items:g.explore}),t[12]=g.explore,t[13]=C);let w;t[14]===i?w=t[15]:(w=(0,W.jsx)(h,{onOpen:i,preload:q.preload}),t[14]=i,t[15]=w);let T;t[16]!==a||t[17]!==r?(T=r&&(0,K.createPortal)((0,W.jsx)(d,{label:`Feature search`,overlay:!0,children:(0,W.jsx)(le,{onClose:a,startTour:c,watchInLive:u,enterLive:o})}),document.body),t[16]=a,t[17]=r,t[18]=T):T=t[18];let E;return t[19]!==b||t[20]!==x||t[21]!==S||t[22]!==C||t[23]!==w||t[24]!==T?(E=(0,W.jsxs)(W.Fragment,{children:[b,x,S,C,w,T]}),t[19]=b,t[20]=x,t[21]=S,t[22]=C,t[23]=w,t[24]=T,t[25]=E):E=t[25],E}function de(){window.location.hash=`#/live`}function fe(e,t){let n=e.cadence.window;return!!n&&t>=n.startAt&&t<=n.endAt}function pe(e){return new Date(e).toLocaleTimeString([],{hour:`numeric`,minute:`2-digit`})}function me(e){let t=(0,U.c)(18),{state:n}=e;if(n.paused){let e;t[0]===n.resumesAt?e=t[1]:(e=pe(n.resumesAt),t[0]=n.resumesAt,t[1]=e);let r;return t[2]===e?r=t[3]:(r=(0,W.jsx)(`div`,{className:`dash-budget dash-budget--paused`,title:`Automatic checks are paused until your budget resets`,children:(0,W.jsxs)(`span`,{className:`dash-budget-label`,children:[`PAUSED · RESUMES `,e]})}),t[2]=e,t[3]=r),r}let r;t[4]!==n.cap||t[5]!==n.used?(r=n.cap>0?Math.min(100,Math.round(n.used/n.cap*100)):0,t[4]=n.cap,t[5]=n.used,t[6]=r):r=t[6];let i=r,a=`dash-budget`+(n.amber?` dash-budget--amber`:``),o=`${n.used} of ${n.cap} searches used today`,s=`${i}%`,c;t[7]===s?c=t[8]:(c=(0,W.jsx)(`span`,{className:`dash-budget-track`,children:(0,W.jsx)(`span`,{className:`dash-budget-fill`,style:{width:s}})}),t[7]=s,t[8]=c);let l=n.amber?` · LOW`:``,u;t[9]!==n.cap||t[10]!==n.used||t[11]!==l?(u=(0,W.jsxs)(`span`,{className:`dash-budget-label`,children:[n.used,`/`,n.cap,` SEARCHES TODAY`,l]}),t[9]=n.cap,t[10]=n.used,t[11]=l,t[12]=u):u=t[12];let d;return t[13]!==a||t[14]!==o||t[15]!==c||t[16]!==u?(d=(0,W.jsxs)(`div`,{className:a,title:o,children:[c,u]}),t[13]=a,t[14]=o,t[15]=c,t[16]=u,t[17]=d):d=t[17],d}function he(e){let t=(0,U.c)(28),{view:n}=e,r=P(),i=F(),a=L(),[o,s]=(0,H.useState)(ge),c,l;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(c=()=>{let e=window.setInterval(()=>s(Date.now()),3e4);return()=>window.clearInterval(e)},l=[],t[0]=c,t[1]=l):(c=t[0],l=t[1]),(0,H.useEffect)(c,l);let u;t[2]===r?u=t[3]:(u=r.filter(I),t[2]=r,t[3]=u);let d=u.length,f=r.some(e=>fe(e,o)),p;t[4]!==i||t[5]!==o||t[6]!==a.dailySearchBudget?(p=R(i,a.dailySearchBudget,o),t[4]=i,t[5]=o,t[6]=a.dailySearchBudget,t[7]=p):p=t[7];let m=p,h;t[8]===Symbol.for(`react.memo_cache_sentinel`)?(h=(0,W.jsx)(G,{className:`dash-topbar-brand`,href:T().href}),t[8]=h):h=t[8];let g=`dash-watch-pill`+(f?` dash-watch-pill--live`:``),_;t[9]===Symbol.for(`react.memo_cache_sentinel`)?(_=(0,W.jsx)(`i`,{className:`dash-live-dot`,"aria-hidden":`true`}),t[9]=_):_=t[9];let v;t[10]!==d||t[11]!==g?(v=(0,W.jsxs)(`span`,{className:g,children:[_,d,` ON WATCH`]}),t[10]=d,t[11]=g,t[12]=v):v=t[12];let y;t[13]===m?y=t[14]:(y=(0,W.jsx)(me,{state:m}),t[13]=m,t[14]=y);let b;t[15]===n?b=t[16]:(b=n!==`overview`&&(0,W.jsx)(`a`,{className:`dash-topbar-link`,href:M.overview,children:`How it works`}),t[15]=n,t[16]=b);let x;t[17]===Symbol.for(`react.memo_cache_sentinel`)?(x=(0,W.jsx)(`a`,{className:`dash-topbar-link`,href:`#/live`,children:`Live`}),t[17]=x):x=t[17];let S;t[18]!==b||t[19]!==v||t[20]!==y?(S=(0,W.jsxs)(`div`,{className:`dash-topbar-scroll`,children:[v,y,b,x]}),t[18]=b,t[19]=v,t[20]=y,t[21]=S):S=t[21];let C;t[22]===Symbol.for(`react.memo_cache_sentinel`)?(C=(0,W.jsx)(`span`,{className:`topbar-spacer`}),t[22]=C):C=t[22];let w,E;t[23]===Symbol.for(`react.memo_cache_sentinel`)?(w=(0,W.jsx)(`nav`,{className:`dash-topbar-nav`,"aria-label":`App`,children:(0,W.jsx)(ue,{omitHash:M.gallery})}),E=(0,W.jsx)(`span`,{className:`topbar-divider`,"aria-hidden":`true`}),t[23]=w,t[24]=E):(w=t[23],E=t[24]);let D;t[25]===Symbol.for(`react.memo_cache_sentinel`)?(D=(0,W.jsxs)(`div`,{className:`dash-topbar-tools`,children:[(0,W.jsx)(`a`,{className:`dash-topbar-action`,href:M.rewind,children:`✦ Rewind`}),(0,W.jsx)(`a`,{className:`dash-topbar-action`,href:M.present,children:`▸ Present`}),(0,W.jsx)(te,{triggerClassName:`ctrl`})]}),t[25]=D):D=t[25];let O;return t[26]===S?O=t[27]:(O=(0,W.jsxs)(`header`,{className:`dash-topbar`,children:[h,S,C,w,E,D]}),t[26]=S,t[27]=O),O}function ge(){return Date.now()}function _e({label:e,value:t,dashboardId:n,kind:r=`presence`}){return(0,W.jsxs)(`a`,{className:`metric-chip metric-chip--${r}`,href:M.detail(n),children:[(0,W.jsx)(`span`,{className:`metric-chip-value`,children:t}),(0,W.jsx)(`span`,{className:`metric-chip-label`,children:e})]})}function ve(e){return new Date(e).toLocaleTimeString([],{hour:`numeric`,minute:`2-digit`})}function ye({briefing:e}){let[t,n]=(0,H.useState)(!1),r=(0,H.useRef)(t);return r.current=t,(0,H.useEffect)(()=>{if(!t)return;let e=window.setInterval(()=>{S()||n(!1)},300);return()=>window.clearInterval(e)},[t]),(0,H.useEffect)(()=>()=>{r.current&&C()},[]),(0,W.jsxs)(`section`,{className:`card briefing-hero`,children:[(0,W.jsxs)(`div`,{className:`briefing-hero-head`,children:[(0,W.jsxs)(`span`,{className:`card-eyebrow briefing-hero-eyebrow`,children:[`MORNING BRIEFING · `,ve(e.at),` · COMPILED WHILE CHECKING YOUR DASHBOARDS`]}),(0,W.jsx)(`button`,{type:`button`,className:`briefing-hero-listen`,onClick:()=>{if(t){C(),n(!1);return}se(e.text,e.spoken),n(!0)},"aria-pressed":t,children:t?`◼ STOP`:`▸ LISTEN`})]}),(0,W.jsx)(`p`,{className:`briefing-hero-text`,children:e.text}),e.chips.length>0&&(0,W.jsx)(`div`,{className:`briefing-hero-chips`,children:e.chips.map(e=>(0,W.jsx)(_e,{label:e.label,value:e.value,dashboardId:e.dashboardId},e.dashboardId))})]})}function be(e){let t=(0,U.c)(31),{dashboard:n,now:r}=e,i;t[0]!==n||t[1]!==r?(i=ae(n,r),t[0]=n,t[1]=r,t[2]=i):i=t[2];let a=i,o=n.cadence.window;if(!o||a.vizKind!==`livescore`){let e;return t[3]!==n||t[4]!==r?(e=(0,W.jsx)(`div`,{className:`featured-live featured-live--fallback`,children:(0,W.jsx)(z,{dashboard:n,now:r})}),t[3]=n,t[4]=r,t[5]=e):e=t[5],e}let s=a.everChecked?`AS OF ${a.asOf}`:a.asOf,c;t[6]===n.id?c=t[7]:(c=M.detail(n.id),t[6]=n.id,t[7]=c);let l;t[8]===Symbol.for(`react.memo_cache_sentinel`)?(l=(0,W.jsxs)(`span`,{className:`card-eyebrow featured-live-eyebrow`,children:[(0,W.jsx)(`i`,{className:`dash-live-dot`,"aria-hidden":`true`}),`LIVE NOW`]}),t[8]=l):l=t[8];let u;t[9]===n.title?u=t[10]:(u=(0,W.jsxs)(`div`,{className:`featured-live-head`,children:[l,(0,W.jsx)(`h3`,{className:`featured-live-title`,children:n.title})]}),t[9]=n.title,t[10]=u);let d;t[11]!==o||t[12]!==r?(d=(0,W.jsx)(ie,{liveWindow:o,now:r}),t[11]=o,t[12]=r,t[13]=d):d=t[13];let f;t[14]===Symbol.for(`react.memo_cache_sentinel`)?(f=(0,W.jsx)(`span`,{className:`featured-live-check-label`,children:`FROM THE LAST CHECK`}),t[14]=f):f=t[14];let p;t[15]===a.value?p=t[16]:(p=(0,W.jsx)(`span`,{className:`featured-live-check-value`,children:a.value}),t[15]=a.value,t[16]=p);let m;t[17]===a.context?m=t[18]:(m=(0,W.jsx)(`span`,{className:`featured-live-check-context`,children:a.context}),t[17]=a.context,t[18]=m);let h;t[19]!==p||t[20]!==m?(h=(0,W.jsxs)(`p`,{className:`featured-live-check`,children:[f,p,m]}),t[19]=p,t[20]=m,t[21]=h):h=t[21];let g;t[22]!==s||t[23]!==o.label?(g=(0,W.jsxs)(`div`,{className:`featured-live-foot`,children:[s,` · `,o.label,` ONLY`]}),t[22]=s,t[23]=o.label,t[24]=g):g=t[24];let _;return t[25]!==g||t[26]!==c||t[27]!==u||t[28]!==d||t[29]!==h?(_=(0,W.jsxs)(`a`,{className:`card featured-live`,href:c,children:[u,d,h,g]}),t[25]=g,t[26]=c,t[27]=u,t[28]=d,t[29]=h,t[30]=_):_=t[30],_}function xe(e){let t=(0,U.c)(17),{answer:n,onTrackAnyway:r}=e;if(!n){let e;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,W.jsx)(`p`,{className:`dash-answer-text dash-answer-text--fallback`,children:`Mavéa couldn’t reach your model for that — try tracking it instead.`}),t[0]=e):e=t[0];let n;return t[1]===r?n=t[2]:(n=(0,W.jsxs)(`div`,{className:`dash-answer`,children:[e,(0,W.jsx)(`button`,{type:`button`,className:`dash-answer-track`,onClick:r,children:`Track it anyway →`})]}),t[1]=r,t[2]=n),n}let i;t[3]===n.text?i=t[4]:(i=(0,W.jsx)(`p`,{className:`dash-answer-text`,children:n.text}),t[3]=n.text,t[4]=i);let a;t[5]===n.grounded?a=t[6]:(a=!n.grounded&&(0,W.jsx)(`p`,{className:`dash-answer-qualifier`,children:`Based on background knowledge, not a fresh search.`}),t[5]=n.grounded,t[6]=a);let o;t[7]===n.sources?o=t[8]:(o=n.sources.length>0&&(0,W.jsx)(`div`,{className:`dash-answer-sources`,children:n.sources.map(Se)}),t[7]=n.sources,t[8]=o);let s;t[9]===Symbol.for(`react.memo_cache_sentinel`)?(s=(0,W.jsx)(`span`,{className:`dash-answer-badge`,children:`Answered once — nothing worth re-checking`}),t[9]=s):s=t[9];let c;t[10]===r?c=t[11]:(c=(0,W.jsxs)(`div`,{className:`dash-answer-foot`,children:[s,(0,W.jsx)(`button`,{type:`button`,className:`dash-answer-track`,onClick:r,children:`Track it anyway →`})]}),t[10]=r,t[11]=c);let l;return t[12]!==i||t[13]!==a||t[14]!==o||t[15]!==c?(l=(0,W.jsxs)(`div`,{className:`dash-answer`,children:[i,a,o,c]}),t[12]=i,t[13]=a,t[14]=o,t[15]=c,t[16]=l):l=t[16],l}function Se(e){let t=x(e.url);return t?(0,W.jsx)(`a`,{className:`dash-answer-source`,href:t,target:`_blank`,rel:`noopener noreferrer`,title:e.title,children:e.title},e.url):null}r();var J=a(()=>i(()=>import(`./planTracker-BwoKEftp.js`).then(e=>e.n),__vite__mapDeps([19,2,20,21,22,23,24,25,26,27]))),Y=s(()=>i(()=>import(`./PlanReview-CrTbmMAd.js`).then(e=>({default:e.PlanReview})),__vite__mapDeps([28,1,2,5,3,29,30,31,32,33,34,8,20,21,22,23,24,25,35,26,36,37,38,39,27,40,41,42,43,44,4,6,7,9,10,11,12,13,45,46,47,48]))),Ce=Y.Component;function we(){return Promise.all([J(),Y.preload()]).then(()=>void 0)}function Te({inert:e=!1}){let t=(0,H.useRef)(null),n=(0,H.useRef)(null),[r,i]=(0,H.useState)(``),[a,s]=(0,H.useState)(!1),[c,l]=(0,H.useState)(null),u=(0,H.useRef)(0),f=()=>{u.current++,l(null)};b(n,{onEscape:f,active:!!c}),(0,H.useEffect)(()=>{if(e)return;let n=e=>{(e.metaKey||e.ctrlKey)&&!e.altKey&&!e.shiftKey&&e.key.toLowerCase()===`k`&&(e.preventDefault(),t.current?.focus())};return window.addEventListener(`keydown`,n),()=>window.removeEventListener(`keydown`,n)},[e]),(0,H.useEffect)(()=>()=>{u.current++},[]);let p=async()=>{let e=r.trim();if(!e||a)return;s(!0);let t=++u.current,{planTracker:n,answerOnce:i}=await J(),o=await n(e,D(O()));if(t!==u.current)return;if(s(!1),o.kind!==`static`){l({step:`review`,plan:o});return}l({step:`answering`,plan:o});let c=await i(e,D(O()));t===u.current&&l({step:`answer`,plan:o,answer:c})},m=e=>{u.current++,l(null),i(``),window.location.hash=M.detail(e)};return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(`form`,{className:`dash-composer-bar`,onSubmit:e=>{e.preventDefault(),p()},children:[(0,W.jsx)(`input`,{ref:t,className:`dash-composer-input`,value:r,onChange:e=>i(e.target.value),placeholder:`Track anything — Mavéa will suggest what's worth checking, and how often`,"aria-label":`Track anything`,disabled:a,...o(we)}),(0,W.jsx)(`kbd`,{className:`dash-composer-kbd`,"aria-hidden":`true`,children:`⌘K`}),(0,W.jsx)(`button`,{type:`submit`,className:`dash-composer-submit`,disabled:!r.trim()||a,children:a?`Planning…`:`Track`})]}),c&&(0,W.jsx)(`div`,{className:`xt-scrim`,onClick:e=>{e.target===e.currentTarget&&f()},role:`button`,tabIndex:0,"aria-label":`Close`,onKeyDown:e=>{e.target===e.currentTarget&&(e.key===`Enter`||e.key===` `)&&(e.key===` `&&e.preventDefault(),f())},children:(0,W.jsxs)(`div`,{className:`xt-modal`,ref:n,tabIndex:-1,role:`dialog`,"aria-modal":`true`,"aria-label":`Track anything`,children:[(0,W.jsxs)(`div`,{className:`xt-head`,children:[c.step===`review`?(0,W.jsx)(`button`,{type:`button`,className:`tpl-back`,onClick:f,children:`‹ Change what to track`}):(0,W.jsx)(`span`,{className:`xt-head-title`,children:c.plan.title}),(0,W.jsx)(`button`,{type:`button`,className:`xt-close`,onClick:f,"aria-label":`Close`,children:`×`})]}),c.step===`answering`&&(0,W.jsx)(`div`,{className:`xt-loading`,children:`Mavéa is checking that…`}),c.step===`answer`&&(0,W.jsx)(xe,{answer:c.answer,onTrackAnyway:()=>l({step:`review`,plan:c.plan})}),c.step===`review`&&(0,W.jsx)(d,{label:`tracker plan`,children:(0,W.jsx)(Ce,{plan:c.plan,ask:r,existing:E(),onDone:m})})]})})]})}var Ee=8e3;function De({message:e,onDismiss:t,kind:n=`presence`,href:r}){let i=(0,H.useRef)(t);return i.current=t,(0,H.useEffect)(()=>{let e=window.setTimeout(()=>i.current(),Ee);return()=>window.clearTimeout(e)},[]),(0,W.jsxs)(`div`,{className:`dash-toast dash-toast--${n}`,role:`status`,children:[r?(0,W.jsx)(`a`,{className:`dash-toast-text dash-toast-link`,href:r,children:e}):(0,W.jsx)(`span`,{className:`dash-toast-text`,children:e}),(0,W.jsx)(`button`,{type:`button`,className:`dash-toast-close`,onClick:t,"aria-label":`Dismiss`,children:`×`})]})}r();var Oe=[`AAPL price`,`Yankees scores`,`Weather in Denver`,`Bitcoin price`];function ke(e,t){let n=e.cadence.window;return!!n&&t>=n.startAt&&t<=n.endAt}function Ae(e){return new Date(e).toISOString().slice(0,10)}function X(e){let t=(0,U.c)(11),{eyebrow:n,sub:r}=e,i;t[0]===n?i=t[1]:(i=(0,W.jsx)(`span`,{className:`tile-name`,children:n}),t[0]=n,t[1]=i);let a;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(a=(0,W.jsx)(`span`,{className:`tile-cadence`,children:`EXAMPLE`}),t[2]=a):a=t[2];let o;t[3]===i?o=t[4]:(o=(0,W.jsxs)(`div`,{className:`tile-top`,children:[i,a]}),t[3]=i,t[4]=o);let s;t[5]===Symbol.for(`react.memo_cache_sentinel`)?(s=(0,W.jsx)(`div`,{className:`tile-value-row`,children:(0,W.jsx)(`span`,{className:`tile-value`,children:`—`})}),t[5]=s):s=t[5];let c;t[6]===r?c=t[7]:(c=(0,W.jsx)(`p`,{className:`tile-context`,children:r}),t[6]=r,t[7]=c);let l;return t[8]!==o||t[9]!==c?(l=(0,W.jsxs)(`div`,{className:`tile-frame tile-frame--ghost`,"aria-hidden":`true`,children:[o,s,c]}),t[8]=o,t[9]=c,t[10]=l):l=t[10],l}function je(){let e=(0,U.c)(4),t;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,W.jsx)(`p`,{className:`dash-empty-title`,children:`Nothing on watch yet.`}),e[0]=t):t=e[0];let n;e[1]===Symbol.for(`react.memo_cache_sentinel`)?(n=(0,W.jsxs)(`p`,{className:`dash-empty-how`,children:[`Type anything worth following in the bar below — scores, a price, the weather, a story — and Mavéa plans the live cards and keeps them current. Or talk it through in`,` `,(0,W.jsx)(`a`,{href:`#/live`,children:`Live`}),` and build one from that conversation instead.`]}),e[1]=n):n=e[1];let r;e[2]===Symbol.for(`react.memo_cache_sentinel`)?(r=(0,W.jsxs)(`p`,{className:`dash-empty-how`,children:[`New here? `,(0,W.jsx)(`a`,{href:M.overview,children:`See how it works →`})]}),e[2]=r):r=e[2];let i;return e[3]===Symbol.for(`react.memo_cache_sentinel`)?(i=(0,W.jsxs)(`div`,{className:`card dash-empty dash-empty--hero`,children:[t,n,r,(0,W.jsx)(`div`,{className:`dash-home-examples`,children:Oe.map(Me)})]}),e[3]=i):i=e[3],i}function Me(e){return(0,W.jsx)(`span`,{className:`dash-home-example-chip`,children:e},e)}function Z(){let e=P(),t=F(),n=L(),r=B(),[a]=ee(),[o,s]=(0,H.useState)(()=>Date.now());(0,H.useEffect)(()=>{let e=window.setInterval(()=>s(Date.now()),3e4);return()=>window.clearInterval(e)},[]);let c=(0,H.useMemo)(()=>e.find(e=>ke(e,o))??null,[e,o]),l=r!==null&&r.date===Ae(o),u=(0,H.useMemo)(()=>R(t,n.dailySearchBudget,o),[t,n.dailySearchBudget,o]),d=e.length===0,f=(0,H.useMemo)(()=>e.some(I),[e]),p=k(a),[m,h]=(0,H.useState)(null);(0,H.useEffect)(()=>oe(h),[]);let[g,_]=(0,H.useState)(!1),[v,b]=(0,H.useState)(null),x=async()=>{_(!0),b(null);try{let{checkAllDashboardsNow:e}=await i(async()=>{let{checkAllDashboardsNow:e}=await import(`./useDashboardLoop-ifcuVRo-.js`).then(e=>e.i);return{checkAllDashboardsNow:e}},__vite__mapDeps([34,2,1,5,8,20,29,30,31,32,33,21,22,23,24,25,35,26,36,37,38,39,27,40,41,42,43,44,4,6,3,7,9,10,11,12,13]));await e()===`failed`&&b(`Your model provider stopped the run — usually its per-minute limit. Nothing was changed; try again in a minute.`)}finally{_(!1)}},[S,C]=(0,H.useState)(0);return(0,H.useEffect)(()=>{let e=0,t=0;return e=requestAnimationFrame(()=>{C(1),t=requestAnimationFrame(()=>C(2))}),()=>{cancelAnimationFrame(e),cancelAnimationFrame(t)}},[]),(0,W.jsxs)(`div`,{className:`dash-home`,children:[m&&(0,W.jsx)(De,{kind:`danger`,message:`${m.dashboardTitle}: ${m.tripwireLabel} crossed the line you set.`,href:M.detail(m.dashboardId),onDismiss:()=>h(null)},`${m.dashboardId}-${m.tripwireLabel}`),(0,W.jsxs)(`div`,{className:`dash-home-grid`,children:[(0,W.jsxs)(`div`,{className:`dash-home-main`,children:[!d&&!p&&f&&(0,W.jsxs)(`div`,{className:`dash-connect-banner`,children:[(0,W.jsx)(`span`,{className:`dash-connect-banner-text`,children:`These trackers can't fetch anything yet — connect a model to start filling them.`}),(0,W.jsx)(`a`,{className:`dash-connect-banner-link`,href:`#/live`,children:`Connect a model in Live →`})]}),d?(0,W.jsx)(je,{}):(0,W.jsxs)(W.Fragment,{children:[l&&r&&(0,W.jsx)(ye,{briefing:r}),c&&(0,W.jsx)(be,{dashboard:c,now:o})]}),S>=1&&(0,W.jsxs)(`section`,{className:`dash-track`,children:[(0,W.jsxs)(`div`,{className:`dash-track-head`,children:[(0,W.jsxs)(`span`,{className:`dash-track-eyebrow`,children:[`TRACKING · `,e.length]}),(0,W.jsxs)(`div`,{className:`dash-track-head-right`,children:[(0,W.jsx)(`span`,{className:`dash-track-honesty`,children:`NOT REAL-TIME — EVERY VALUE IS AS OF ITS LAST WEB SEARCH`}),p&&f&&(0,W.jsxs)(`button`,{type:`button`,className:`dash-check-all-btn`,onClick:()=>void x(),disabled:g,title:`Check every tracker with live content now`,children:[(0,W.jsx)(y.refresh,{className:g?`dash-refresh-spin`:void 0}),g?`Checking…`:`Check all`]})]})]}),v&&(0,W.jsx)(`p`,{className:`dash-quota-note`,role:`status`,children:v}),(0,W.jsx)(`div`,{className:`dash-track-grid`,children:d?(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(X,{eyebrow:`AAPL`,sub:`Stock price`}),(0,W.jsx)(X,{eyebrow:`Yankees`,sub:`Latest score`}),(0,W.jsx)(X,{eyebrow:`Denver`,sub:`This week's forecast`})]}):e.map(e=>(0,W.jsx)(z,{dashboard:e,now:o,paused:u.paused},e.id))})]})]}),(0,W.jsx)(`aside`,{className:`dash-home-rail`,children:S>=2&&(0,W.jsx)(V,{now:o})})]}),(0,W.jsx)(Te,{})]})}r();var Ne=s(()=>i(()=>import(`./RewindOverlay-BO7YgDsW.js`).then(e=>({default:e.RewindOverlay})),__vite__mapDeps([49,1,2,5,3,50,51,52,29,30,31,32,33,37,53,40,54,55]))),Pe=s(()=>i(()=>import(`./DashPresent-BDWgO9am.js`).then(e=>({default:e.DashPresent})),__vite__mapDeps([56,1,2,5,3,4,6,7,8,9,10,11,12,13,52,29,30,31,32,33,53,37,38,57,16,58,39,59,60,61,62,63]))),Fe=s(()=>i(()=>import(`./DashboardDetail-BrnAdWfy.js`).then(e=>({default:e.DashboardDetail})),__vite__mapDeps([64,1,2,5,3,8,16,65,4,6,7,9,10,11,12,13,66,67,68,69,50,70,71,72,73,74,75,76,77,78,79,80,20,81,82,51,83,84,85,86,87,88,89,90,91,43,92,29,30,31,32,33,35,23,21,22,24,25,58,52,38,37,39,59,60,61,34,26,36,27,40,41,42,44,45,19,93,94,95,96,53,54,97,98,47]))),Ie=s(()=>i(()=>import(`./DashboardSettings-DJon1Q4o.js`).then(e=>({default:e.DashboardSettings})),__vite__mapDeps([99,1,2,5,3,29,30,31,32,33,58,52,38,37,41,95,60,61]))),Le=s(()=>i(()=>import(`./DashboardOverview-C3hv9sm1.js`).then(e=>({default:e.DashboardOverview})),__vite__mapDeps([100,3,2,58,1,5]))),Re=Ne.Component,Q=Pe.Component,ze=Fe.Component,Be=Ie.Component,Ve=Le.Component;function $(){window.location.hash=M.gallery}function He(){let e=(0,U.c)(22),t;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=[],e[0]=t):t=e[0],(0,H.useEffect)(Ue,t);let n=re(),r;e[1]===n?r=e[2]:(r=ne(n),e[1]=n,e[2]=r);let i=r,a=N();if(i.view===`present`){let t;return e[3]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,W.jsx)(d,{label:`Dashboard presentation`,children:(0,W.jsx)(Q,{onClose:$})}),e[3]=t):t=e[3],t}let o;bb0:switch(i.view){case`detail`:{let t;e[4]===i.id?t=e[5]:(t=i.id?(0,W.jsx)(d,{label:`Dashboard detail`,children:(0,W.jsx)(ze,{id:i.id})}):(0,W.jsx)(Z,{}),e[4]=i.id,e[5]=t),o=t;break bb0}case`settings`:{let t;e[6]===i.id?t=e[7]:(t=i.id?(0,W.jsx)(d,{label:`Dashboard settings`,children:(0,W.jsx)(Be,{id:i.id})}):(0,W.jsx)(Z,{}),e[6]=i.id,e[7]=t),o=t;break bb0}case`overview`:{let t;e[8]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,W.jsx)(d,{label:`Dashboard overview`,children:(0,W.jsx)(Ve,{})}),e[8]=t):t=e[8],o=t;break bb0}case`rewind`:case`gallery`:default:{let t;e[9]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,W.jsx)(Z,{}),e[9]=t):t=e[9],o=t}}let s=o,c;e[10]===i.view?c=e[11]:(c=(0,W.jsx)(he,{view:i.view}),e[10]=i.view,e[11]=c);let l;e[12]===Symbol.for(`react.memo_cache_sentinel`)?(l=(0,W.jsx)(w,{kind:`monitoring`,className:`dash-risk-note`}),e[12]=l):l=e[12];let u;e[13]===a?u=e[14]:(u=a&&(0,W.jsx)(`p`,{className:`dash-quota-note`,role:`status`,children:`This browser’s storage is full, so recent tracker changes are being held in memory and may not survive a reload. Free up space, or remove a tracker you no longer follow.`}),e[13]=a,e[14]=u);let f;e[15]===i.view?f=e[16]:(f=i.view===`rewind`&&(0,W.jsx)(d,{label:`Weekly rewind`,overlay:!0,children:(0,W.jsx)(Re,{onClose:$})}),e[15]=i.view,e[16]=f);let p;return e[17]!==s||e[18]!==c||e[19]!==u||e[20]!==f?(p=(0,W.jsxs)(`div`,{className:`mavea-app dash-app`,children:[c,l,u,s,f]}),e[17]=s,e[18]=c,e[19]=u,e[20]=f,e[21]=p):p=e[21],p}function Ue(){return l(c())}export{He as DashboardsApp};
@@ -1,37 +0,0 @@
1
- import{t as e}from"./react-BZJXY1be.js";import{t}from"./compiler-runtime-qQQXpJgv.js";import{t as n}from"./jsx-runtime-DeHZSEgm.js";import{n as r,r as i,t as a}from"./theme-D5D55hZi.js";import{t as o}from"./FeatureUseNotice-Bda9jr3W.js";import{t as s}from"./homeTarget-CwFsJYwb.js";import{t as c}from"./providers-0DthJW_I.js";import{l,n as u}from"./useLiveConfig-B4CmBiAK.js";import{n as d}from"./courseSeed-CZdNBTTs.js";var f=e(),p=t(),m=[`×1`,`×10`,`×100`,`×1k`,`×10k`,`×100k`,`×1M`,`×10M`,`×100M`,`×1B`,`×10B`,`×100B`,`×1T`,`×10T`,`×100T`,`×1Q`,`×10Q`,`×100Q`,`×1Qn`,`×10Qn`];function h(e,t){if(!e||typeof e!=`object`)return null;let n=e,r=Array.isArray(n.subtopics)?n.subtopics.map(String).filter(Boolean).slice(0,8):[];if(r.length===0)return null;let i=Math.max(0,Math.min(r.length-1,Number(n.selectedIndex??0)));return{scale:t,multiplier:m[t]??`×${10**t}`,scaleLabel:String(n.scaleLabel??`SCALE ${t}`).toUpperCase(),title:String(n.title??``).trim(),body:String(n.body??``).trim(),subtopics:r,selectedIndex:i}}function g(e){return e.replace(/^```[a-z]*\n?/,``).replace(/\n?```$/,``).trim()}function _(e,t,n){let r;try{r=typeof e==`string`?JSON.parse(g(e)):e}catch{let t=typeof e==`string`?e.match(/\{[\s\S]*\}/):null;r=t?JSON.parse(t[0]):{}}let i=Array.isArray(r.levels)?r.levels:Array.isArray(r)?r:[],a=[];for(let e=0;e<Math.min(i.length,n);e++){let n=h(i[e],t+e);n&&a.push(n)}return a}var v=`You are a "Powers of Ten" semantic telescope builder.
2
-
3
- Given a topic or question, produce EXACTLY 10 zoom levels — level 1 is the broadest possible view of the entire field, level 10 is the finest mechanism or detail.
4
-
5
- Rules:
6
- - Each level zooms into subtopics[selectedIndex] of the previous level
7
- - Each level must be more specific and granular than the one before
8
- - subtopics: 3–5 sub-areas visible at THIS scale (2–5 words each)
9
- - selectedIndex: which subtopic the NEXT level zooms into (pick the most illuminating path)
10
- - scaleLabel: 1–3 word ALL_CAPS poetic label (e.g. "THE FIELD", "THE PROCESS", "THE MOLECULE", "THE BOND")
11
- - body: exactly 2 vivid, dense sentences grounding the reader at this exact scale — be concrete
12
-
13
- Return ONLY valid JSON, no markdown fences, no prose:
14
- {
15
- "rangeStart": "2–4 word phrase for the broadest scope (e.g. 'all of biology')",
16
- "levels": [
17
- { "scaleLabel": "...", "title": "...", "body": "...", "subtopics": [...], "selectedIndex": 0 },
18
- ...9 more objects...
19
- ]
20
- }`,y=`You are extending a "Powers of Ten" semantic telescope by branching into a chosen subtopic.
21
-
22
- Produce EXACTLY 10 new zoom levels starting one scale deeper than the given parent level, each more specific than the last.
23
-
24
- Rules:
25
- - Level 1 focuses on the chosen subtopic at the next scale depth
26
- - Each level zooms into subtopics[selectedIndex] of the previous level
27
- - scaleLabel: 1–3 word ALL_CAPS label (e.g. "THE REACTION", "THE PROTEIN", "THE SITE")
28
- - body: exactly 2 vivid, dense sentences at this exact scale
29
- - subtopics: 3–5 sub-parts visible at this scale
30
-
31
- Return ONLY valid JSON, no markdown fences, no prose:
32
- {
33
- "levels": [
34
- { "scaleLabel": "...", "title": "...", "body": "...", "subtopics": [...], "selectedIndex": 0 },
35
- ...9 more objects...
36
- ]
37
- }`;async function b(e,t,n){let r=await c(t.provider).generate({system:v,history:[],user:e,maxTokens:3200,temperature:.4,format:null,signal:n},t),i;try{i=JSON.parse(g(typeof r.raw==`string`?r.raw:``))}catch{let e=typeof r.raw==`string`?r.raw.match(/\{[\s\S]*\}/):null;i=e?JSON.parse(e[0]):{}}let a=_(i,0,10);if(a.length===0)throw Error(`No zoom levels in model response`);return{rangeStart:String(i.rangeStart??a[0].title),levels:a}}async function x(e,t,n,r,i,a){let o=c(i.provider),s=`Topic: "${e}"\nCurrent level (${t.scaleLabel}): "${t.title}"\nForking into: "${n}"`,l=_((await o.generate({system:y,history:[],user:s,maxTokens:3200,temperature:.4,format:null,signal:a},i)).raw,r+1,10);if(l.length===0)throw Error(`No branch levels in model response`);return l}var S=[`×1`,`×10`,`×100`,`×1k`,`×10k`,`×100k`,`×1M`,`×10M`],C=[{scaleLabel:`THE PLANT`,title:`A plant, quietly eating light`,body:`Every green thing you can see is running the same trick: turning sunlight, air, and water into sugar. The work happens where the light lands — the leaves.`,subtopics:[`The leaves`,`The roots`,`The stem`,`The flowers`],selectedIndex:0},{scaleLabel:`THE LEAF`,title:`One leaf, a solar panel`,body:`A single leaf spreads thin and flat to catch as much sun as it can. Veins pipe water in, tiny pores let air in, and the green comes from the layer inside.`,subtopics:[`The waxy surface`,`The veins`,`The inner tissue`,`The pores`],selectedIndex:2},{scaleLabel:`THE TISSUE`,title:`Cells stacked like bricks of green`,body:`Just under the surface, cells sit shoulder to shoulder, each stuffed with green specks. Gaps between them let carbon dioxide drift in to be caught.`,subtopics:[`Column-shaped cells`,`Air spaces`,`Guard cells`],selectedIndex:0},{scaleLabel:`THE CELL`,title:`Inside a single plant cell`,body:`A stiff wall holds the cell’s shape while everything important floats inside. Dozens of green ovals drift through it — the cell’s own power plants.`,subtopics:[`The cell wall`,`The chloroplasts`,`The nucleus`,`The water sac`],selectedIndex:1},{scaleLabel:`THE CHLOROPLAST`,title:`The green engine`,body:`This oval is where sunlight actually becomes food. Inside it, membranes fold into neat stacks of discs, packed with the pigment that makes the whole thing green.`,subtopics:[`Stacks of discs`,`The fluid around them`,`The outer membranes`],selectedIndex:0},{scaleLabel:`THE MEMBRANE`,title:`Stacked discs that trap the sun`,body:`Each disc is a sheet studded with light-catching machines, stacked like coins to pack in as many as possible. Light hits here and the energy starts to move.`,subtopics:[`The light-catchers`,`The chlorophyll`,`The electron relay`],selectedIndex:1},{scaleLabel:`THE MOLECULE`,title:`A single chlorophyll molecule`,body:`Here is the green itself: a flat ring of carbon cradling one magnesium atom at its centre. That ring is shaped to grab a particle of light and hold its energy.`,subtopics:[`The magnesium core`,`The carbon ring`,`The long tail`],selectedIndex:0},{scaleLabel:`THE PHOTON`,title:`Where light becomes life`,body:`A single packet of sunlight strikes the ring and is gone — swapped for a jolt of energy in one of the molecule’s electrons. That one kick begins everything that feeds the plant, and eventually, us.`,subtopics:[`The strike`,`The excited electron`,`The handoff`],selectedIndex:1}].map((e,t)=>({...e,scale:t,multiplier:S[t]??`×${10**t}`})),w=C.map((e,t)=>({id:t,parentId:t===0?null:t-1,viaSubtopic:t===0?null:C[t-1].subtopics[C[t-1].selectedIndex]??null,level:e,depth:t})),T={query:`How does a leaf make food?`,rangeStart:`All of life`,nodes:w,trunkIds:w.map(e=>e.id)},E=10;function D(e){return`var(--dz-${(e%E+E)%E})`}function O(e,t){let n=[t],r=t;for(;;){let t=r.level.subtopics[r.level.selectedIndex],i=e.find(e=>e.parentId===r.id&&e.viaSubtopic===t);if(!i)break;n.push(i),r=i}return n}function k(e,t,n,r){let i=t[r],a=e.nodes.find(e=>e.id===i);if(!a)return null;let o=n[r]??a.level.selectedIndex,s=a.level.subtopics[o]??a.level.subtopics[0],c=t[r+1];if(c!==void 0&&e.nodes.find(e=>e.id===c)?.viaSubtopic===s)return{kind:`navigate`,navPath:t,chipSels:n,target:r+1};let l=e.nodes.find(e=>e.parentId===i&&e.viaSubtopic===s);if(l){let i=O(e.nodes,l),a=t.slice(0,r+1),o=n.slice(0,r+1);return{kind:`navigate`,navPath:[...a,...i.map(e=>e.id)],chipSels:[...o,...i.map(e=>e.level.selectedIndex)],target:r+1}}return{kind:`branch`,navPath:t.slice(0,r+1),chipSels:n.slice(0,r+1),parentId:i,subtopic:s,parentLevel:a.level,parentDepth:a.depth}}function A(e,t){return e.map((e,n)=>({id:e.id,index:n,multiplier:e.level.multiplier,label:e.level.scaleLabel,title:e.level.title,color:D(e.depth),state:n===t?`current`:n<t?`past`:`future`}))}var j=n(),M=560;function N(e){return typeof window>`u`?``:new URLSearchParams(window.location.hash.split(`?`)[1]??``).get(e)?.trim()??``}function P(e){let t=(0,p.c)(4),{className:n}=e,r,i;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(r=(0,j.jsx)(`circle`,{cx:`6.5`,cy:`6.5`,r:`4`}),i=(0,j.jsx)(`line`,{x1:`10`,y1:`10`,x2:`14`,y2:`14`}),t[0]=r,t[1]=i):(r=t[0],i=t[1]);let a;return t[2]===n?a=t[3]:(a=(0,j.jsxs)(`svg`,{viewBox:`0 0 16 16`,fill:`none`,stroke:`currentColor`,strokeWidth:1.8,strokeLinecap:`round`,strokeLinejoin:`round`,className:n,"aria-hidden":!0,children:[r,i]}),t[2]=n,t[3]=a),a}function F(){let e=(0,p.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,j.jsxs)(`svg`,{viewBox:`0 0 20 20`,fill:`none`,stroke:`currentColor`,strokeWidth:1.6,"aria-hidden":!0,children:[(0,j.jsx)(`circle`,{cx:`10`,cy:`10`,r:`3.6`}),(0,j.jsx)(`path`,{strokeLinecap:`round`,d:`M10 2.4v1.8M10 15.8v1.8M17.6 10h-1.8M4.2 10H2.4M15.4 4.6l-1.3 1.3M5.9 14.1l-1.3 1.3M15.4 15.4l-1.3-1.3M5.9 5.9L4.6 4.6`})]}),e[0]=t):t=e[0],t}function I(){let e=(0,p.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,j.jsx)(`svg`,{viewBox:`0 0 20 20`,fill:`none`,stroke:`currentColor`,strokeWidth:1.6,"aria-hidden":!0,children:(0,j.jsx)(`path`,{strokeLinejoin:`round`,d:`M16.5 11.4A6.6 6.6 0 1 1 8.6 3.5a5.2 5.2 0 0 0 7.9 7.9Z`})}),e[0]=t):t=e[0],t}function L(){let e=(0,p.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,j.jsxs)(`svg`,{viewBox:`0 0 16 16`,fill:`none`,stroke:`currentColor`,strokeWidth:1.6,"aria-hidden":!0,children:[(0,j.jsx)(`path`,{strokeLinecap:`round`,strokeLinejoin:`round`,d:`M1.5 5 8 2l6.5 3-6.5 3-6.5-3Z`}),(0,j.jsx)(`path`,{strokeLinecap:`round`,strokeLinejoin:`round`,d:`M4 6.6v3.2c0 .9 1.8 2.2 4 2.2s4-1.3 4-2.2V6.6`})]}),e[0]=t):t=e[0],t}function R(){let e=(0,p.c)(7),[t,n]=(0,f.useState)(B),r;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(r=()=>{n(z)},e[0]=r):r=e[0];let i=r,a=t===`light`?`Switch to dark theme`:`Switch to light theme`,o=t===`light`?`Dark theme`:`Light theme`,s;e[1]===t?s=e[2]:(s=t===`light`?(0,j.jsx)(I,{}):(0,j.jsx)(F,{}),e[1]=t,e[2]=s);let c;return e[3]!==a||e[4]!==o||e[5]!==s?(c=(0,j.jsx)(`button`,{type:`button`,className:`dz-theme-toggle`,onClick:i,"aria-label":a,title:o,children:s}),e[3]=a,e[4]=o,e[5]=s,e[6]=c):c=e[6],c}function z(e){let t=e===`light`?`dark`:`light`;return a(t),i(t),t}function B(){return r()}function V(e){let t=(0,p.c)(19),{query:n,onMakeCourse:r,onNew:i}=e,a;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(a=s(),t[0]=a):a=t[0];let o=a,c;t[1]===Symbol.for(`react.memo_cache_sentinel`)?(c=()=>{window.location.hash=o.href},t[1]=c):c=t[1];let l;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(l=(0,j.jsx)(`button`,{type:`button`,className:`dz-back-btn`,"aria-label":`Back to ${o.label}`,title:`Back to ${o.label}`,onClick:c,children:(0,j.jsx)(`svg`,{viewBox:`0 0 16 16`,fill:`none`,stroke:`currentColor`,strokeWidth:1.7,"aria-hidden":!0,children:(0,j.jsx)(`path`,{strokeLinecap:`round`,strokeLinejoin:`round`,d:`M9.5 3.5 5 8l4.5 4.5`})})}),t[2]=l):l=t[2];let u;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(u=(0,j.jsxs)(`span`,{className:`dz-wordmark`,children:[`Deep Zoom`,(0,j.jsx)(`span`,{className:`dz-wordmark-sub`,children:`powers of ten`})]}),t[3]=u):u=t[3];let d;t[4]===n?d=t[5]:(d=n&&(0,j.jsx)(`span`,{className:`dz-query`,children:n}),t[4]=n,t[5]=d);let f;t[6]===d?f=t[7]:(f=(0,j.jsxs)(`div`,{className:`dz-topbar-left`,children:[l,u,d]}),t[6]=d,t[7]=f);let m;t[8]===i?m=t[9]:(m=i&&(0,j.jsxs)(`button`,{type:`button`,className:`dz-new-btn`,onClick:i,"aria-label":`Start a new deep zoom`,title:`Start a new deep zoom on a different topic`,children:[(0,j.jsx)(`svg`,{viewBox:`0 0 16 16`,fill:`none`,stroke:`currentColor`,strokeWidth:1.7,"aria-hidden":!0,children:(0,j.jsx)(`path`,{strokeLinecap:`round`,strokeLinejoin:`round`,d:`M8 3.5v9M3.5 8h9`})}),(0,j.jsx)(`span`,{className:`dz-new-btn-label`,children:`New`})]}),t[8]=i,t[9]=m);let h;t[10]===r?h=t[11]:(h=r&&(0,j.jsxs)(`button`,{type:`button`,className:`dz-course-btn`,onClick:r,"aria-label":`Turn this into a course`,title:`Turn this into a course`,children:[(0,j.jsx)(L,{}),(0,j.jsx)(`span`,{className:`dz-course-btn-label`,children:`Turn this into a course`})]}),t[10]=r,t[11]=h);let g;t[12]===Symbol.for(`react.memo_cache_sentinel`)?(g=(0,j.jsx)(R,{}),t[12]=g):g=t[12];let _;t[13]!==m||t[14]!==h?(_=(0,j.jsxs)(`div`,{className:`dz-topbar-right`,children:[m,h,g]}),t[13]=m,t[14]=h,t[15]=_):_=t[15];let v;return t[16]!==_||t[17]!==f?(v=(0,j.jsxs)(`header`,{className:`dz-topbar`,children:[f,_]}),t[16]=_,t[17]=f,t[18]=v):v=t[18],v}function H(e){let t=(0,p.c)(7),{navNodes:n,current:r,onJump:i}=e,a=A(n,r),o=(0,f.useRef)(null),s;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(s=()=>{let e=o.current?.querySelector(`.dz-stop.is-current`);typeof e?.scrollIntoView==`function`&&e.scrollIntoView({block:`nearest`,inline:`nearest`})},t[0]=s):s=t[0],(0,f.useEffect)(s,[r,a.length]);let c;t[1]===Symbol.for(`react.memo_cache_sentinel`)?(c=(0,j.jsx)(`span`,{children:`The descent`}),t[1]=c):c=t[1];let l;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(l=(0,j.jsx)(`span`,{className:`dz-ladder-count-sep`,children:`/`}),t[2]=l):l=t[2];let u;t[3]===i?u=t[4]:(u=e=>(0,j.jsxs)(`button`,{type:`button`,className:`dz-stop is-${e.state}`,style:{"--stop-color":e.color},"aria-current":e.state===`current`?`true`:void 0,"aria-label":`${e.multiplier} · ${e.label} · ${e.title}`,onClick:()=>i(e.index),children:[(0,j.jsx)(`span`,{className:`dz-stop-node`,"aria-hidden":!0}),(0,j.jsx)(`span`,{className:`dz-stop-mult`,children:e.multiplier}),(0,j.jsx)(`span`,{className:`dz-stop-label`,children:e.label})]},e.id),t[3]=i,t[4]=u);let d=a.map(u),m;return t[5]===d?m=t[6]:(m=(0,j.jsx)(`div`,{className:`dz-ladder-track`,ref:o,children:d}),t[5]=d,t[6]=m),(0,j.jsxs)(`nav`,{className:`dz-ladder`,"aria-label":`Scale — jump to any level`,children:[(0,j.jsxs)(`div`,{className:`dz-ladder-cap`,children:[c,(0,j.jsxs)(`span`,{className:`dz-ladder-count`,children:[r+1,l,a.length]})]}),m]})}function U(e){let t=(0,p.c)(66),{node:n,layer:r,dir:i,selectedIndex:a,generating:o,onChipSelect:s,onZoomIn:c}=e,{level:l,depth:u}=n,d;t[0]===u?d=t[1]:(d=D(u),t[0]=u,t[1]=d);let f=d,m=r===`current`,h=l.subtopics[a]??l.subtopics[0],g,_,v,y,b,x,S,C,w,T,E,O;if(t[2]!==f||t[3]!==i||t[4]!==m||t[5]!==r||t[6]!==l.body||t[7]!==l.multiplier||t[8]!==l.scaleLabel||t[9]!==l.subtopics||t[10]!==l.title||t[11]!==s||t[12]!==a){let e=l.subtopics.slice(0,5);g=l.subtopics.length-e.length,w=`dz-level is-${r}`,T=i;let n;t[25]===f?n=t[26]:(n={"--dz-current":f},t[25]=f,t[26]=n),E=n,O=!m;let o;t[27]===l.multiplier?o=t[28]:(o=(0,j.jsx)(`span`,{className:`dz-scale-mult`,children:l.multiplier}),t[27]=l.multiplier,t[28]=o);let c;t[29]===Symbol.for(`react.memo_cache_sentinel`)?(c=(0,j.jsx)(`span`,{className:`dz-scale-tick`}),t[29]=c):c=t[29];let u;t[30]===l.scaleLabel?u=t[31]:(u=(0,j.jsx)(`span`,{className:`dz-scale-label`,children:l.scaleLabel}),t[30]=l.scaleLabel,t[31]=u),t[32]!==o||t[33]!==u?(_=(0,j.jsxs)(`div`,{className:`dz-scale-eyebrow`,children:[o,c,u]}),t[32]=o,t[33]=u,t[34]=_):_=t[34],t[35]===l.title?v=t[36]:(v=(0,j.jsx)(`h2`,{className:`dz-title`,children:l.title}),t[35]=l.title,t[36]=v),t[37]===l.body?y=t[38]:(y=(0,j.jsx)(`p`,{className:`dz-body`,children:l.body}),t[37]=l.body,t[38]=y),b=`dz-chips`,x=`group`,S=`Zoom into a sub-area`;let d;t[39]!==m||t[40]!==s||t[41]!==a?(d=(e,t)=>(0,j.jsxs)(`button`,{type:`button`,tabIndex:m?0:-1,className:`dz-chip`+(t===a?` is-selected`:``),"aria-pressed":t===a,onClick:()=>m&&s(t),children:[(0,j.jsx)(`span`,{className:`dz-chip-dot`,"aria-hidden":!0}),e]},`${e}-${t}`),t[39]=m,t[40]=s,t[41]=a,t[42]=d):d=t[42],C=e.map(d),t[2]=f,t[3]=i,t[4]=m,t[5]=r,t[6]=l.body,t[7]=l.multiplier,t[8]=l.scaleLabel,t[9]=l.subtopics,t[10]=l.title,t[11]=s,t[12]=a,t[13]=g,t[14]=_,t[15]=v,t[16]=y,t[17]=b,t[18]=x,t[19]=S,t[20]=C,t[21]=w,t[22]=T,t[23]=E,t[24]=O}else g=t[13],_=t[14],v=t[15],y=t[16],b=t[17],x=t[18],S=t[19],C=t[20],w=t[21],T=t[22],E=t[23],O=t[24];let k;t[43]===g?k=t[44]:(k=g>0&&(0,j.jsxs)(`span`,{className:`dz-chip dz-chip-more`,"aria-hidden":!0,children:[`+`,g]}),t[43]=g,t[44]=k);let A;t[45]!==k||t[46]!==b||t[47]!==x||t[48]!==S||t[49]!==C?(A=(0,j.jsxs)(`div`,{className:b,role:x,"aria-label":S,children:[C,k]}),t[45]=k,t[46]=b,t[47]=x,t[48]=S,t[49]=C,t[50]=A):A=t[50];let M;t[51]!==o||t[52]!==m||t[53]!==c||t[54]!==h?(M=o?(0,j.jsxs)(`p`,{className:`dz-zoom is-loading`,children:[(0,j.jsx)(`span`,{className:`dz-zoom-spinner`,"aria-hidden":!0}),`opening ten more levels…`]}):(0,j.jsxs)(`button`,{type:`button`,tabIndex:m?0:-1,className:`dz-zoom`,onClick:()=>m&&c(),children:[(0,j.jsx)(`span`,{className:`dz-zoom-glyph`,"aria-hidden":!0,children:(0,j.jsx)(P,{})}),`Zoom into `,(0,j.jsx)(`strong`,{children:h})]}),t[51]=o,t[52]=m,t[53]=c,t[54]=h,t[55]=M):M=t[55];let N;return t[56]!==_||t[57]!==v||t[58]!==y||t[59]!==A||t[60]!==M||t[61]!==w||t[62]!==T||t[63]!==E||t[64]!==O?(N=(0,j.jsxs)(`article`,{className:w,"data-dir":T,style:E,"aria-hidden":O,children:[_,v,y,A,M]}),t[56]=_,t[57]=v,t[58]=y,t[59]=A,t[60]=M,t[61]=w,t[62]=T,t[63]=E,t[64]=O,t[65]=N):N=t[65],N}function W({tree:e,generatingForId:t,query:n,allowBranchGeneration:r=!0,onBranchRequest:i,onNew:a}){let[o,s]=(0,f.useState)(()=>[...e.trunkIds]),[c,l]=(0,f.useState)(0),[u,p]=(0,f.useState)(()=>e.trunkIds.map(t=>e.nodes.find(e=>e.id===t)?.level.selectedIndex??0)),[m,h]=(0,f.useState)(null),g=(0,f.useRef)(0),_=(0,f.useCallback)((e,t)=>{let n=g.current;e!==n&&(h({from:n,dir:t}),g.current=e,l(e))},[]),v=(0,f.useCallback)(e=>{let t=g.current,n=Math.max(0,Math.min(o.length-1,e));n!==t&&_(n,n>t?`in`:`out`)},[o.length,_]),y=(0,f.useRef)(e.nodes.length);(0,f.useEffect)(()=>{if(e.nodes.length===y.current||(y.current=e.nodes.length,o.length===0))return;let t=o[o.length-1],n=e.nodes.find(e=>e.id===t);if(!n)return;let r=u[o.length-1]??n.level.selectedIndex,i=n.level.subtopics[r],a=e.nodes.find(e=>e.parentId===t&&e.viaSubtopic===i);if(!a||o.includes(a.id))return;let c=O(e.nodes,a),l=o.length;s(e=>[...e,...c.map(e=>e.id)]),p(e=>[...e,...c.map(e=>e.level.selectedIndex)]),_(l,`in`)},[e.nodes.length]);let b=(0,f.useMemo)(()=>new Map(e.nodes.map(e=>[e.id,e])),[e.nodes]),x=o.map(e=>b.get(e)).filter(Boolean),S=(0,f.useCallback)(n=>{let a=k(e,o,u,n);if(a){if(a.kind===`navigate`){s(a.navPath),p(a.chipSels),_(a.target,`in`);return}r&&(s(a.navPath),p(a.chipSels),t!==a.parentId&&i(a.parentId,a.subtopic,a.parentLevel,a.parentDepth))}},[e,o,u,_,t,r,i]);(0,f.useEffect)(()=>{let e=e=>{let t=e.target.tagName;if(t!==`INPUT`&&t!==`TEXTAREA`)switch(e.key){case`ArrowRight`:case`ArrowDown`:case` `:e.preventDefault(),c<o.length-1?v(c+1):S(c);break;case`ArrowLeft`:case`ArrowUp`:e.preventDefault(),v(c-1);break;case`Escape`:e.preventDefault(),v(0)}};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[c,o.length,v,S]),(0,f.useEffect)(()=>{if(m===null)return;let e=window.setTimeout(()=>h(null),M);return()=>window.clearTimeout(e)},[m]);let C=(0,f.useCallback)((e,t)=>{p(n=>{let r=[...n];return r[e]=t,r})},[]),w=x[c],T=D(w?.depth??0),E=c===o.length-1&&t===o[c],A=m?.dir??`in`,N=m?x[m.from]:void 0,P=(0,f.useCallback)(()=>{d(n),window.location.hash=`#/courses`},[n]);return(0,j.jsxs)(j.Fragment,{children:[(0,j.jsx)(V,{query:n,onMakeCourse:P,onNew:a}),(0,j.jsxs)(`div`,{className:`dz-stage`,children:[(0,j.jsx)(H,{navNodes:x,current:c,onJump:v}),(0,j.jsxs)(`div`,{className:`dz-reading`,style:{"--dz-current":T},children:[(0,j.jsx)(`div`,{className:`dz-field`,"aria-hidden":!0}),(0,j.jsxs)(`div`,{className:`dz-levels`,children:[N&&(0,j.jsx)(U,{node:N,layer:`exiting`,dir:A,selectedIndex:u[m?.from??0]??N.level.selectedIndex,generating:!1,onChipSelect:()=>{},onZoomIn:()=>{}},`x${m?.from}`),w&&(0,j.jsx)(U,{node:w,layer:`current`,dir:A,selectedIndex:u[c]??w.level.selectedIndex,generating:E,onChipSelect:e=>C(c,e),onZoomIn:()=>S(c)},`c${c}`)]})]})]})]})}var G=[`How does my body make energy?`,`What is quantum entanglement?`,`How does memory work?`,`What is photosynthesis?`,`How do vaccines work?`,`What is machine learning?`];function K(e){let t=(0,p.c)(35),{onSubmit:n,seed:r}=e,[i,a]=(0,f.useState)(r??``),s=(0,f.useRef)(null),c,l;t[0]===r?(c=t[1],l=t[2]):(c=()=>{s.current?.focus(),r&&s.current?.select()},l=[r],t[0]=r,t[1]=c,t[2]=l),(0,f.useEffect)(c,l);let u;t[3]!==n||t[4]!==i?(u=e=>{e.preventDefault(),i.trim()&&n(i.trim())},t[3]=n,t[4]=i,t[5]=u):u=t[5];let d=u,m;t[6]===Symbol.for(`react.memo_cache_sentinel`)?(m=(0,j.jsx)(V,{}),t[6]=m):m=t[6];let h;t[7]===Symbol.for(`react.memo_cache_sentinel`)?(h=(0,j.jsxs)(`p`,{className:`dz-start-eyebrow`,children:[(0,j.jsx)(`span`,{className:`dz-start-eyebrow-dot`,"aria-hidden":!0}),`×1 → ×1,000,000,000`]}),t[7]=h):h=t[7];let g,_,v;t[8]===Symbol.for(`react.memo_cache_sentinel`)?(g=(0,j.jsxs)(`h1`,{className:`dz-start-title`,children:[`Zoom into anything,`,(0,j.jsx)(`br`,{}),`one power of ten at a time.`]}),_=(0,j.jsx)(`p`,{className:`dz-start-sub`,children:`Ten nested scales, from the broadest field down to the finest mechanism. Fork at any level to fall down a different path.`}),v=(0,j.jsx)(o,{kind:`learning`}),t[8]=g,t[9]=_,t[10]=v):(g=t[8],_=t[9],v=t[10]);let y;t[11]===r?y=t[12]:(y=r&&(0,j.jsx)(`p`,{className:`dz-start-carry`,role:`status`,children:`Carried over from your conversation — zoom into it, or ask about anything else.`}),t[11]=r,t[12]=y);let b;t[13]===Symbol.for(`react.memo_cache_sentinel`)?(b=(0,j.jsx)(P,{className:`dz-start-composer-icon`}),t[13]=b):b=t[13];let x;t[14]===Symbol.for(`react.memo_cache_sentinel`)?(x=e=>a(e.target.value),t[14]=x):x=t[14];let S;t[15]===i?S=t[16]:(S=(0,j.jsx)(`input`,{ref:s,className:`dz-start-input`,type:`text`,placeholder:`how does my body make energy?`,value:i,"aria-label":`Topic to zoom into`,onChange:x}),t[15]=i,t[16]=S);let C;t[17]===i?C=t[18]:(C=i.trim(),t[17]=i,t[18]=C);let w=!C,T;t[19]===w?T=t[20]:(T=(0,j.jsx)(`button`,{type:`submit`,className:`dz-start-btn`,disabled:w,children:`Zoom in`}),t[19]=w,t[20]=T);let E;t[21]!==S||t[22]!==T?(E=(0,j.jsxs)(`div`,{className:`dz-start-composer`,children:[b,S,T]}),t[21]=S,t[22]=T,t[23]=E):E=t[23];let D;t[24]!==d||t[25]!==E?(D=(0,j.jsx)(`form`,{className:`dz-start-form`,onSubmit:d,children:E}),t[24]=d,t[25]=E,t[26]=D):D=t[26];let O;t[27]===n?O=t[28]:(O=G.map(e=>(0,j.jsx)(`button`,{type:`button`,className:`dz-start-chip`,onClick:()=>n(e),children:e},e)),t[27]=n,t[28]=O);let k;t[29]===O?k=t[30]:(k=(0,j.jsx)(`div`,{className:`dz-start-chips`,children:O}),t[29]=O,t[30]=k);let A;return t[31]!==D||t[32]!==k||t[33]!==y?(A=(0,j.jsxs)(`div`,{className:`dz-start`,children:[m,(0,j.jsxs)(`div`,{className:`dz-start-body`,children:[h,g,_,v,y,D,k]})]}),t[31]=D,t[32]=k,t[33]=y,t[34]=A):A=t[34],A}function q(e){let t=(0,p.c)(8),{query:n}=e,r;t[0]===n?r=t[1]:(r=(0,j.jsx)(V,{query:n}),t[0]=n,t[1]=r);let i;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(i=(0,j.jsxs)(`div`,{className:`dz-loading-lens`,"aria-hidden":!0,children:[(0,j.jsx)(`span`,{}),(0,j.jsx)(`span`,{}),(0,j.jsx)(`span`,{})]}),t[2]=i):i=t[2];let a;t[3]===n?a=t[4]:(a=(0,j.jsxs)(`div`,{className:`dz-loading`,children:[i,(0,j.jsxs)(`span`,{className:`dz-loading-text`,children:[`Building ten scales of “`,n,`”…`]})]}),t[3]=n,t[4]=a);let o;return t[5]!==r||t[6]!==a?(o=(0,j.jsxs)(`div`,{className:`dz-loading-screen`,children:[r,a]}),t[5]=r,t[6]=a,t[7]=o):o=t[7],o}function J(e){let t=(0,p.c)(9),{message:n,onRetry:r}=e,i;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(i=(0,j.jsx)(V,{}),t[0]=i):i=t[0];let a;t[1]===Symbol.for(`react.memo_cache_sentinel`)?(a=(0,j.jsx)(`div`,{className:`dz-error-title`,children:`Couldn't build the zoom`}),t[1]=a):a=t[1];let o;t[2]===n?o=t[3]:(o=(0,j.jsx)(`div`,{className:`dz-error-body`,children:n}),t[2]=n,t[3]=o);let s;t[4]===r?s=t[5]:(s=(0,j.jsx)(`button`,{type:`button`,className:`dz-start-btn`,onClick:r,children:`Try another topic`}),t[4]=r,t[5]=s);let c;return t[6]!==o||t[7]!==s?(c=(0,j.jsxs)(`div`,{className:`dz-loading-screen`,children:[i,(0,j.jsxs)(`div`,{className:`dz-error`,children:[a,o,s]})]}),t[6]=o,t[7]=s,t[8]=c):c=t[8],c}function Y(){(0,f.useEffect)(()=>a(r()),[]);let[e,t]=(0,f.useState)(``),[n,i]=(0,f.useState)(null),[o,s]=(0,f.useState)(!1),[c,d]=(0,f.useState)(null),[p,m]=(0,f.useState)(null),[h,g]=(0,f.useState)(N(`seed`)),_=(0,f.useRef)(0),v=(0,f.useRef)(null),y=(0,f.useRef)(``),S=(0,f.useRef)(null),C=(0,f.useCallback)(async e=>{S.current?.abort();let n=new AbortController;S.current=n,y.current=e,_.current=0,t(e),i(null),d(null),m(null),s(!0);try{let t=l(u());v.current=t;let{rangeStart:r,levels:a}=await b(e,t,n.signal);if(n.signal.aborted)return;let o=[],c=[],d=null;for(let e=0;e<a.length;e++){let t=_.current++,n=d===null?null:o.find(e=>e.id===d),r=n?n.level.subtopics[n.level.selectedIndex]??null:null;o.push({id:t,parentId:d,viaSubtopic:r,level:a[e],depth:e}),c.push(t),d=t}i({query:e,rangeStart:r,nodes:o,trunkIds:c}),s(!1)}catch(e){n.signal.aborted||(d(e instanceof Error?e.message:`Something went wrong.`),s(!1))}},[]),w=(0,f.useCallback)(async(e,t,n,r)=>{let a=v.current??l(u());S.current?.abort();let o=new AbortController;S.current=o,m(e);try{let s=await x(y.current,n,t,r,a,o.signal);if(o.signal.aborted)return;i(n=>{if(!n)return n;let i=[...n.nodes],a=e;for(let e=0;e<s.length;e++){let n=_.current++,o=e===0?t:s[e-1].subtopics[s[e-1].selectedIndex];i.push({id:n,parentId:a,viaSubtopic:o,level:s[e],depth:r+1+e}),a=n}return{...n,nodes:i}}),m(null)}catch{o.signal.aborted||m(null)}},[]),E=(0,f.useCallback)(()=>{S.current?.abort(),t(T.query),i(T),d(null),s(!1)},[]);(0,f.useEffect)(()=>{let e=new URLSearchParams(window.location.hash.split(`?`)[1]??``);if(e.get(`demo`)===`1`){E();return}let t=e.get(`q`)?.trim()??``;return t&&C(t),()=>S.current?.abort()},[]),(0,f.useEffect)(()=>{let n=()=>{let n=window.location.hash;if(!n.startsWith(`#/deepzoom`))return;let r=new URLSearchParams(n.split(`?`)[1]??``);if(r.get(`demo`)===`1`){e!==T.query&&E();return}let a=r.get(`q`)?.trim()??``;if(a&&a!==e)C(a);else if(!a){let e=r.get(`seed`)?.trim()??``;S.current?.abort(),t(``),i(null),d(null),g(e)}};return window.addEventListener(`hashchange`,n),()=>window.removeEventListener(`hashchange`,n)},[e,C,E]);let D=(0,f.useCallback)(()=>{S.current?.abort(),window.location.hash!==`#/deepzoom`&&(window.location.hash=`#/deepzoom`),d(null),g(``),t(``),i(null)},[]),O=(0,f.useCallback)(()=>{d(null),t(``),i(null)},[]),k=new URLSearchParams(window.location.hash.split(`?`)[1]??``).get(`demo`)===`1`;return(0,j.jsxs)(`div`,{className:`deepzoom-app mavea-app`,children:[!e&&!o&&!n&&!c&&(0,j.jsx)(K,{onSubmit:e=>void C(e),seed:h}),o&&(0,j.jsx)(q,{query:e}),c&&!o&&(0,j.jsx)(J,{message:c,onRetry:O}),n&&!o&&(0,j.jsx)(W,{tree:n,query:e,generatingForId:p,allowBranchGeneration:!k,onBranchRequest:w,onNew:D})]})}export{Y as DeepZoomApp};