@mavea/mavea 2.1.0 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (307) hide show
  1. package/CHANGELOG.md +44 -0
  2. package/README.md +1 -7
  3. package/TERMS.md +9 -3
  4. package/dist/.vite/manifest.json +610 -540
  5. package/dist/assets/{AnnotationLayer-Bh1yiSAK.js → AnnotationLayer-HanjTRYY.js} +1 -1
  6. package/dist/assets/{AppCommandPalette-DS4sLY_K.js → AppCommandPalette-DBiuHUNL.js} +1 -1
  7. package/dist/assets/{CheckLogRail-onH7DaxW.js → CheckLogRail-CfoGgTqv.js} +1 -1
  8. package/dist/assets/{ConversationVideoStudio-adb7legp.js → ConversationVideoStudio-CEi_cgBR.js} +1 -1
  9. package/dist/assets/{CourseLessonReader-CkzViEij.js → CourseLessonReader-CaLT_Y6N.js} +2 -2
  10. package/dist/assets/{CoursesApp-B0HFM8Al.js → CoursesApp-IfWCeml5.js} +2 -2
  11. package/dist/assets/{DashPresent-BdOJ7F9D.js → DashPresent-T7I-lAng.js} +1 -1
  12. package/dist/assets/{DashboardDetail-Chrpi1Yk.js → DashboardDetail-BhRSDenD.js} +2 -2
  13. package/dist/assets/{DashboardLoopGate-B01Hpm7O.js → DashboardLoopGate-DBVAR7IS.js} +2 -2
  14. package/dist/assets/DashboardLoopRuntime-B55z8L4b.js +1 -0
  15. package/dist/assets/{DashboardsApp--jjj-GVX.js → DashboardsApp-C_awJ3hM.js} +2 -2
  16. package/dist/assets/{DeepZoomApp-BpQbKTjc.js → DeepZoomApp-C-66OasV.js} +1 -1
  17. package/dist/assets/{DelegatePanel-e4y0CJsn.js → DelegatePanel-DaJTDkYu.js} +1 -1
  18. package/dist/assets/{DemoGallery-DF1ShRG4.js → DemoGallery-B9F7SUzp.js} +1 -1
  19. package/dist/assets/{DropSelect-D3Q9Su_x.js → DropSelect-IBjV5Ol1.js} +1 -1
  20. package/dist/assets/{ExportModal-DkmyBpeN.js → ExportModal-gckBiikq.js} +1 -1
  21. package/dist/assets/{ExtractionPreview-C6F1q3qG.js → ExtractionPreview-DDOkCH9u.js} +1 -1
  22. package/dist/assets/FallbackCard-CUe6i-zT.js +1 -0
  23. package/dist/assets/{FeatureUseNotice-CCI4mM39.js → FeatureUseNotice-BfnZH8Vt.js} +1 -1
  24. package/dist/assets/{FlagshipCommandPalette-BkjvGrKT.js → FlagshipCommandPalette-CYQdl3Zu.js} +1 -1
  25. package/dist/assets/{FlagshipShowcase-Dx2noFrP.js → FlagshipShowcase-CFMmbeff.js} +1 -1
  26. package/dist/assets/{FlashcardsApp-C1TeLlkY.js → FlashcardsApp-KJ1bmlbp.js} +1 -1
  27. package/dist/assets/GalleryApp-B4KBdNyu.css +1 -0
  28. package/dist/assets/GalleryApp-Dh8Nc_So.js +2 -0
  29. package/dist/assets/{HonestByDesign-DlRrxgrO.js → HonestByDesign-C3LTj4Bx.js} +1 -1
  30. package/dist/assets/{HowItWorks-BM2yn2dq.js → HowItWorks-C5Dqqvl-.js} +1 -1
  31. package/dist/assets/{LegalApp-DPfTD0jz.js → LegalApp-DYVJIUyF.js} +1 -1
  32. package/dist/assets/{LegalMarkdownDocument-DJgwmK1q.js → LegalMarkdownDocument-CbuQ-pLN.js} +1 -1
  33. package/dist/assets/{LegalPageShell-DuIwSVSJ.js → LegalPageShell-CoEyiZGz.js} +1 -1
  34. package/dist/assets/{LibraryOverlay-DsLhiJzF.js → LibraryOverlay-TQnxY9R8.js} +1 -1
  35. package/dist/assets/LiveApp-DRnphsFA.js +79 -0
  36. package/dist/assets/{LiveApp-CEaISHEZ.css → LiveApp-Dc7Mk5oS.css} +1 -1
  37. package/dist/assets/{LiveSettings-CDHQnEtF.js → LiveSettings-Cz3XSqv8.js} +3 -3
  38. package/dist/assets/{MindMapViewerDrawer-C3BgiubE.js → MindMapViewerDrawer-AUJlLC2R.js} +1 -1
  39. package/dist/assets/{MindShape-DVlgSR1B.js → MindShape-BbuVOTaR.js} +1 -1
  40. package/dist/assets/{PinToDashboard-Dd_egidB.js → PinToDashboard-BdXI7oo9.js} +1 -1
  41. package/dist/assets/{PlanReview-wOsBpofo.js → PlanReview-CGRvSRAt.js} +1 -1
  42. package/dist/assets/{PresentationDeck-BSMzp5T9.js → PresentationDeck-CoPmOr2f.js} +1 -1
  43. package/dist/assets/{PrismApp-DbbDNVpy.js → PrismApp-DPECS285.js} +2 -2
  44. package/dist/assets/{PrismBriefingPlayer-B1_ziOwl.js → PrismBriefingPlayer-BvpG7oZs.js} +2 -2
  45. package/dist/assets/{PrismOverlay-DLxvsh9l.js → PrismOverlay-c8rcvt4V.js} +3 -3
  46. package/dist/assets/{PrismWorkbench-ZlhI7Mhw.js → PrismWorkbench-BEaD7Arj.js} +1 -1
  47. package/dist/assets/{PrivacyApp-Ki_5bM9Z.js → PrivacyApp-_O_MR088.js} +1 -1
  48. package/dist/assets/{ReplayCard-WKBKeSKc.js → ReplayCard-IN-ilb2E.js} +2 -2
  49. package/dist/assets/{ReplayOverlay-PFSJv540.js → ReplayOverlay-ZRjFP-zf.js} +1 -1
  50. package/dist/assets/{RippleApp-DqVyZYKV.js → RippleApp-D_Gd8Lw8.js} +2 -2
  51. package/dist/assets/{RippleOverlay-4McJCSV8.js → RippleOverlay-vP2KxTiI.js} +2 -2
  52. package/dist/assets/{SeeDontRead-gARjJuF7.js → SeeDontRead-BmUyUai5.js} +1 -1
  53. package/dist/assets/{ShareModal-C5HVVMtQ.js → ShareModal-_KYCohqO.js} +2 -2
  54. package/dist/assets/{ShipCourse-BUm4TKUk.js → ShipCourse--ajDej06.js} +1 -1
  55. package/dist/assets/{SignatureLoop-CYspJuij.js → SignatureLoop-DDw2gtQ_.js} +1 -1
  56. package/dist/assets/{SynthesisApp-BNhF9aJ2.js → SynthesisApp-CilzogOF.js} +2 -2
  57. package/dist/assets/{SynthesisOverlay-Bvwdc8uQ.js → SynthesisOverlay-CAK5h0hB.js} +1 -1
  58. package/dist/assets/{TemplatePicker-DBa4lkpf.js → TemplatePicker-3w18ViSc.js} +1 -1
  59. package/dist/assets/{TermsApp-BvwDtgIz.js → TermsApp-BfTGOTq6.js} +10 -4
  60. package/dist/assets/TopicCanvas-DSCNWNjv.js +2 -0
  61. package/dist/assets/TopicCanvas-sGuo7pnQ.css +1 -0
  62. package/dist/assets/{TourPrism-CCjys3-x.js → TourPrism-Y47m-KGq.js} +1 -1
  63. package/dist/assets/{TrackerTile-B4j5qtop.js → TrackerTile-LXFQXcvH.js} +2 -2
  64. package/dist/assets/{TwoSurfaces-fGm1MJrD.js → TwoSurfaces-CSpKrgfJ.js} +1 -1
  65. package/dist/assets/{WorldOverlay-JOp1rLyU.js → WorldOverlay-D5FWgYe3.js} +2 -2
  66. package/dist/assets/{WowFeatures-D5dJvp9W.js → WowFeatures-e6mkftpD.js} +1 -1
  67. package/dist/assets/{ZoomDeck-DYmkT0TA.js → ZoomDeck-CC9zXPxF.js} +1 -1
  68. package/dist/assets/{audioTrack-BJ2D_nuy.js → audioTrack-w1tZwSoU.js} +1 -1
  69. package/dist/assets/{backup-DkCsHNEE.js → backup-AymOkasb.js} +1 -1
  70. package/dist/assets/briefs-5oOobpyS.js +1 -0
  71. package/dist/assets/canvas-BRGFkCD-.js +1 -0
  72. package/dist/assets/{capture-Y6Qm8zCN.js → capture-Bomj_Egy.js} +1 -1
  73. package/dist/assets/catalog-vLsIS_Na.js +1 -0
  74. package/dist/assets/{confirmAdd-D-TTCQ31.js → confirmAdd-CUFiPNWz.js} +1 -1
  75. package/dist/assets/{dashboardEvents-MzCzak6K.js → dashboardEvents-PktCbV72.js} +1 -1
  76. package/dist/assets/{deepen-FZiVqiEc.js → deepen-Dz4yTyJs.js} +1 -1
  77. package/dist/assets/{effort-BftNJCCV.js → effort-BKGxLYoq.js} +1 -1
  78. package/dist/assets/facts-CNQz8OQz.js +1 -0
  79. package/dist/assets/{generateBeats-Dqtfd8HC.js → generateBeats-BjWC2fwl.js} +1 -1
  80. package/dist/assets/{generateLive-B7nlaqz8.js → generateLive-BLajGcNK.js} +1 -1
  81. package/dist/assets/{index-Db-FgYxX.js → index-CKRjGbeR.js} +3 -3
  82. package/dist/assets/{kokoro-yB7iU_JU.js → kokoro-B-rc224u.js} +1 -1
  83. package/dist/assets/{lens-DyGK7Owa.js → lens-Ba83fBmq.js} +1 -1
  84. package/dist/assets/liveSchema-eKgFc5D0.js +127 -0
  85. package/dist/assets/loader-BiYFMeRS.js +2 -0
  86. package/dist/assets/notes-nfocTnUv.js +1 -0
  87. package/dist/assets/overflowAudit-DQLYFrM8.js +1 -0
  88. package/dist/assets/{perfProbe-DrOeB7yd.js → perfProbe-BqMK4N56.js} +1 -1
  89. package/dist/assets/{pin-C5_s4Ju5.js → pin-IyE46GaQ.js} +1 -1
  90. package/dist/assets/{portal-TqJbr2rR.js → portal-C2b5NoMN.js} +1 -1
  91. package/dist/assets/{prewarm-Bt5X_9CM.js → prewarm-Pvdu5Jt0.js} +1 -1
  92. package/dist/assets/{quietHours-LtXDl4-v.js → quietHours-lWcjQ2Iu.js} +1 -1
  93. package/dist/assets/registry-B3HqLZyO.css +1 -0
  94. package/dist/assets/registry-BD1Zyd46.js +1 -0
  95. package/dist/assets/registry-BJFqryP_.js +1 -0
  96. package/dist/assets/registry-BTUHr4mQ.js +1 -0
  97. package/dist/assets/registry-BZsqAOnQ.css +1 -0
  98. package/dist/assets/registry-BiT0eNZb.js +2 -0
  99. package/dist/assets/registry-BoLdoGPW.js +1 -0
  100. package/dist/assets/registry-CLHP_r7X.js +1 -0
  101. package/dist/assets/registry-CT85vG1M.js +1 -0
  102. package/dist/assets/{registry-CIcGBgtK.css → registry-CnNL4jmR.css} +1 -1
  103. package/dist/assets/{registry-BHDUu15I.js → registry-CnmuVlAA.js} +1 -1
  104. package/dist/assets/registry-CyPRooIp.css +1 -0
  105. package/dist/assets/registry-D5O0Ptw_.css +1 -0
  106. package/dist/assets/registry-DOctfuxc.js +1 -0
  107. package/dist/assets/{registry-BZuT2Epw.css → registry-DhWVSz_J.css} +1 -1
  108. package/dist/assets/{registry-BPLbZIVz.js → registry-OUL5YJry.js} +1 -1
  109. package/dist/assets/registry-brX673Dg.css +1 -0
  110. package/dist/assets/{registry-C4Yh05pk.js → registry-nCDSZOmZ.js} +1 -1
  111. package/dist/assets/registry-sT9NoG1k.css +1 -0
  112. package/dist/assets/registry-yzYj0SNk.css +1 -0
  113. package/dist/assets/{relate-CCma73G9.js → relate-ZHm-ZvaR.js} +1 -1
  114. package/dist/assets/{replay-dMDmsTaD.js → replay-DBeCo_vn.js} +1 -1
  115. package/dist/assets/select-CejTsgpx.js +3 -0
  116. package/dist/assets/shapes-BwXCYTlu.js +1 -0
  117. package/dist/assets/shard001-BrI-88cO.js +1 -0
  118. package/dist/assets/shard002-CVTdbXod.js +1 -0
  119. package/dist/assets/shard003-Bilw1tcB.js +1 -0
  120. package/dist/assets/shard004-Cq0Or-2a.js +1 -0
  121. package/dist/assets/shard005-Wh3WypcW.js +1 -0
  122. package/dist/assets/shard006-BAUUhTjB.js +1 -0
  123. package/dist/assets/shard007-DYMH8Yxn.js +1 -0
  124. package/dist/assets/shard008-DsrV7tH6.js +1 -0
  125. package/dist/assets/shard009-Bsf_hKwR.js +1 -0
  126. package/dist/assets/shard010-B5P3ny1k.js +1 -0
  127. package/dist/assets/shard011-BgeG9-or.js +1 -0
  128. package/dist/assets/shard012-BDkbj6cq.js +1 -0
  129. package/dist/assets/shard013-G23LG7Fa.js +1 -0
  130. package/dist/assets/shard014-CnDxCS2j.js +1 -0
  131. package/dist/assets/shard015-JvmiIIrG.js +1 -0
  132. package/dist/assets/shard016-BVcRKptB.js +1 -0
  133. package/dist/assets/shard017-DrpF6FaE.js +1 -0
  134. package/dist/assets/shard018-Bi11C9yu.js +1 -0
  135. package/dist/assets/shard019-QyeKtIb0.js +1 -0
  136. package/dist/assets/shard020-Djc1cf5i.js +1 -0
  137. package/dist/assets/shard021-D2RM4FCA.js +1 -0
  138. package/dist/assets/shard022-DRT0Qsp3.js +1 -0
  139. package/dist/assets/shard023-COM71H0n.js +1 -0
  140. package/dist/assets/shard024-DEnCOj6l.js +1 -0
  141. package/dist/assets/shard025-DHxYqsae.js +1 -0
  142. package/dist/assets/shard026-BIgdfcha.js +1 -0
  143. package/dist/assets/shard027-CvJzY_e0.js +1 -0
  144. package/dist/assets/shard028-57qhg2sc.js +1 -0
  145. package/dist/assets/shard029-Dx2Qnz9G.js +1 -0
  146. package/dist/assets/shard030-CtC4LpQR.js +1 -0
  147. package/dist/assets/shard031-jLIDhN2C.js +1 -0
  148. package/dist/assets/shard032-BDQTeOZV.js +1 -0
  149. package/dist/assets/shard033-955G5ec6.js +1 -0
  150. package/dist/assets/shard034-Bu3aEL9i.js +1 -0
  151. package/dist/assets/shard035-B2E-tzQZ.js +1 -0
  152. package/dist/assets/shard036-BEyPFMoV.js +1 -0
  153. package/dist/assets/shard037-CFQfstFa.js +1 -0
  154. package/dist/assets/shard038-C3QlFW5S.js +1 -0
  155. package/dist/assets/shard039-DFpQvV8e.js +1 -0
  156. package/dist/assets/shard040-I3SaNaKO.js +1 -0
  157. package/dist/assets/shard041-B1UVtmcS.js +1 -0
  158. package/dist/assets/shard042-DGJ4rHUt.js +1 -0
  159. package/dist/assets/shard043-BCie8K9U.js +1 -0
  160. package/dist/assets/shard044-DeFpPsR0.js +1 -0
  161. package/dist/assets/{shard043-BKoTEB-H.js → shard045-COwX5PHB.js} +1 -1
  162. package/dist/assets/shard046-CDOiSCGB.js +1 -0
  163. package/dist/assets/shard047-CuL2iVAe.js +1 -0
  164. package/dist/assets/shard048-B7z0WHO6.js +1 -0
  165. package/dist/assets/shard049-D1yDablJ.js +1 -0
  166. package/dist/assets/shard050-DJi3AgeT.js +1 -0
  167. package/dist/assets/shard051-D_2ipfUr.js +1 -0
  168. package/dist/assets/shard052-1aGgWZdd.js +1 -0
  169. package/dist/assets/shard053-Bjwa0Og4.js +1 -0
  170. package/dist/assets/shard054-Cx_GAk3v.js +1 -0
  171. package/dist/assets/shard055-LaeOD3V5.js +1 -0
  172. package/dist/assets/shard056-CAArZwW0.js +1 -0
  173. package/dist/assets/shard057-CM8eSRQk.js +1 -0
  174. package/dist/assets/shard058-QRpDl4Vs.js +1 -0
  175. package/dist/assets/shard059-DkY7CQm3.js +1 -0
  176. package/dist/assets/shard060-BVCgf7o0.js +1 -0
  177. package/dist/assets/shard061-93aGtdrX.js +1 -0
  178. package/dist/assets/shard062-rJE9X1_I.js +1 -0
  179. package/dist/assets/shard063-Co_V_D1g.js +1 -0
  180. package/dist/assets/{shard062-BJ8OX6CJ.js → shard064-C9A8iNiq.js} +1 -1
  181. package/dist/assets/shard065-CpmX_yt1.js +1 -0
  182. package/dist/assets/shard066-C_uen3Ub.js +1 -0
  183. package/dist/assets/shard067-Dl5k0N1Z.js +1 -0
  184. package/dist/assets/shard068-DLIIO7yh.js +1 -0
  185. package/dist/assets/shard069-D15zOFva.js +1 -0
  186. package/dist/assets/shard070-BwHL1JLg.js +1 -0
  187. package/dist/assets/shard071-BFQhwU3I.js +1 -0
  188. package/dist/assets/shard072-DC9v9Ysb.js +1 -0
  189. package/dist/assets/shard073-CicaGoa8.js +1 -0
  190. package/dist/assets/shard074-BvwBlB0R.js +1 -0
  191. package/dist/assets/shard075-BDKPICyR.js +1 -0
  192. package/dist/assets/shard076-COQxCeXV.js +1 -0
  193. package/dist/assets/{shard076-DZHs0uzd.js → shard076-b5-2mnEN.js} +1 -1
  194. package/dist/assets/shard077-DGa0bRNk.js +1 -0
  195. package/dist/assets/shard077-wv2mA5w5.js +1 -0
  196. package/dist/assets/shard078-CI97pFkb.js +1 -0
  197. package/dist/assets/shard078-D64eVQuV.js +1 -0
  198. package/dist/assets/{useDashboardLoop-Cnxmf7wU.js → useDashboardLoop-SPlr1Mrm.js} +3 -3
  199. package/dist/assets/{walkSync-D6leFb_u.js → walkSync-BtO3jsqQ.js} +1 -1
  200. package/dist/index.html +1 -1
  201. package/dist/legal/TERMS.md +9 -3
  202. package/package.json +1 -1
  203. package/dist/assets/DashboardLoopRuntime-BcdZtIgH.js +0 -1
  204. package/dist/assets/FallbackCard-ap_4wOfj.js +0 -1
  205. package/dist/assets/GalleryApp-7oBldBKU.js +0 -1
  206. package/dist/assets/GalleryApp-B1CB3_81.css +0 -1
  207. package/dist/assets/LiveApp-DNYYimuo.js +0 -79
  208. package/dist/assets/TopicCanvas-Cwc6-K3q.js +0 -2
  209. package/dist/assets/TopicCanvas-DWTm611H.css +0 -1
  210. package/dist/assets/canvas-CYrbzF43.js +0 -1
  211. package/dist/assets/catalog-CRekRbKO.js +0 -1
  212. package/dist/assets/facts-BUGuVUIc.js +0 -1
  213. package/dist/assets/liveSchema-Z_39HuDI.js +0 -125
  214. package/dist/assets/loader-Ciz6XbG-.js +0 -2
  215. package/dist/assets/notes-CEloxKQ3.js +0 -1
  216. package/dist/assets/registry-B5S3brjM.css +0 -1
  217. package/dist/assets/registry-BAoRB8rd.css +0 -1
  218. package/dist/assets/registry-B_wlsfxh.js +0 -1
  219. package/dist/assets/registry-BwlvYVHq.js +0 -2
  220. package/dist/assets/registry-BxkAuBx8.js +0 -1
  221. package/dist/assets/registry-C3ezxLR3.css +0 -1
  222. package/dist/assets/registry-CfIJ9dJS.js +0 -1
  223. package/dist/assets/registry-CwRTUk0R.js +0 -1
  224. package/dist/assets/registry-Dbe9TQPw.css +0 -1
  225. package/dist/assets/registry-S3j4OpCH.js +0 -1
  226. package/dist/assets/registry-YrewlFlo.js +0 -1
  227. package/dist/assets/registry-dmR14XnY.css +0 -1
  228. package/dist/assets/registry-twSIyxJQ.css +0 -1
  229. package/dist/assets/select-BuqyXI8k.js +0 -3
  230. package/dist/assets/shapes-BwoDrn09.js +0 -1
  231. package/dist/assets/shard001-gQEQs7_F.js +0 -1
  232. package/dist/assets/shard002-DbDas-W-.js +0 -1
  233. package/dist/assets/shard003-DxMszG4_.js +0 -1
  234. package/dist/assets/shard004-DZMpLBw1.js +0 -1
  235. package/dist/assets/shard005-Dp5TM33O.js +0 -1
  236. package/dist/assets/shard006-DpJfkjmW.js +0 -1
  237. package/dist/assets/shard007-CIQN8OfZ.js +0 -1
  238. package/dist/assets/shard008-BFiyL7r6.js +0 -1
  239. package/dist/assets/shard009-0s30Tkk9.js +0 -1
  240. package/dist/assets/shard010-DPhgF5ck.js +0 -1
  241. package/dist/assets/shard011-C2jVsC25.js +0 -1
  242. package/dist/assets/shard012-DYtN5yzJ.js +0 -1
  243. package/dist/assets/shard013-1D6_Qy9C.js +0 -1
  244. package/dist/assets/shard014-D8s7GHnm.js +0 -1
  245. package/dist/assets/shard015-16W6KgnL.js +0 -1
  246. package/dist/assets/shard016-B4PpWmro.js +0 -1
  247. package/dist/assets/shard017-BO1sA5b3.js +0 -1
  248. package/dist/assets/shard018-D4gn8z25.js +0 -1
  249. package/dist/assets/shard019-vSbfaqRA.js +0 -1
  250. package/dist/assets/shard020-DwbHP8bp.js +0 -1
  251. package/dist/assets/shard021-BhEyVVAL.js +0 -1
  252. package/dist/assets/shard022-BdT7zFy3.js +0 -1
  253. package/dist/assets/shard023-Dga_NQcm.js +0 -1
  254. package/dist/assets/shard024-CXHofcxc.js +0 -1
  255. package/dist/assets/shard025-a4CQKYw1.js +0 -1
  256. package/dist/assets/shard026-0rhLKfDL.js +0 -1
  257. package/dist/assets/shard027-C9GMfOtn.js +0 -1
  258. package/dist/assets/shard028-D9__rPnw.js +0 -1
  259. package/dist/assets/shard029-BSdYKGgG.js +0 -1
  260. package/dist/assets/shard030-DceOU7pS.js +0 -1
  261. package/dist/assets/shard031-C6_p076r.js +0 -1
  262. package/dist/assets/shard032-Cah16sJi.js +0 -1
  263. package/dist/assets/shard033-D-iobGzc.js +0 -1
  264. package/dist/assets/shard034-DIyfCKl8.js +0 -1
  265. package/dist/assets/shard035-BHWs8v0a.js +0 -1
  266. package/dist/assets/shard036-AhOPHqzq.js +0 -1
  267. package/dist/assets/shard037-CuAGDOOu.js +0 -1
  268. package/dist/assets/shard038-CYdtnPjK.js +0 -1
  269. package/dist/assets/shard039-DgvXKOyi.js +0 -1
  270. package/dist/assets/shard040-DO012waT.js +0 -1
  271. package/dist/assets/shard041-BeUicA1R.js +0 -1
  272. package/dist/assets/shard042-D2zbq14A.js +0 -1
  273. package/dist/assets/shard044-bmYKfH3A.js +0 -1
  274. package/dist/assets/shard045-i_R1olD9.js +0 -1
  275. package/dist/assets/shard046-CFk2L0GQ.js +0 -1
  276. package/dist/assets/shard047-pjHCnVaT.js +0 -1
  277. package/dist/assets/shard048-Cc7tGz6R.js +0 -1
  278. package/dist/assets/shard049-C9eoD-6Z.js +0 -1
  279. package/dist/assets/shard050-V3c_ZDrB.js +0 -1
  280. package/dist/assets/shard051-D1ISwZzf.js +0 -1
  281. package/dist/assets/shard052-Dy09xx3S.js +0 -1
  282. package/dist/assets/shard053-Bi4Z4cwW.js +0 -1
  283. package/dist/assets/shard054-CNzJxw2V.js +0 -1
  284. package/dist/assets/shard055-D2NJeMN1.js +0 -1
  285. package/dist/assets/shard056-sSFMbxXN.js +0 -1
  286. package/dist/assets/shard057-DhNK5nyZ.js +0 -1
  287. package/dist/assets/shard058-Du4SjxeD.js +0 -1
  288. package/dist/assets/shard059-fGiLnJzG.js +0 -1
  289. package/dist/assets/shard060-l84MDY2t.js +0 -1
  290. package/dist/assets/shard061-B3aIa7Aa.js +0 -1
  291. package/dist/assets/shard063-CMo-7Qit.js +0 -1
  292. package/dist/assets/shard064-B0EEOnfG.js +0 -1
  293. package/dist/assets/shard065-D-StlUHp.js +0 -1
  294. package/dist/assets/shard066-C2edvdvh.js +0 -1
  295. package/dist/assets/shard067-DFcuVhZm.js +0 -1
  296. package/dist/assets/shard068-BN8DM8JZ.js +0 -1
  297. package/dist/assets/shard069-i464K77p.js +0 -1
  298. package/dist/assets/shard070-BmNyRhxw.js +0 -1
  299. package/dist/assets/shard071-BPVvR8GH.js +0 -1
  300. package/dist/assets/shard072-Bal_0d9L.js +0 -1
  301. package/dist/assets/shard073-CBQu62kt.js +0 -1
  302. package/dist/assets/shard074-D5BRae0w.js +0 -1
  303. package/dist/assets/shard075-DtFvcBnZ.js +0 -1
  304. package/docs/media/go-hub.jpg +0 -0
  305. /package/dist/assets/{registry-Ci65uThi.js → registry-C4RNoF_2.js} +0 -0
  306. /package/dist/assets/{registry-Bjf2Ggs6.js → registry-CbKXa68-.js} +0 -0
  307. /package/dist/assets/{registry-Di1fTdpi.js → registry-Cdk7NOiD.js} +0 -0
@@ -1,6 +1,6 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/backup-DkCsHNEE.js","assets/catalog-CRekRbKO.js","assets/preload-helper-CiWYd9n-.js","assets/rolldown-runtime-DkW27tQK.js","assets/facts-BUGuVUIc.js","assets/blockTypes-DUDdP3pB.js","assets/liveSchema-Z_39HuDI.js","assets/icons-gLFQTv74.js","assets/jsx-runtime-DeHZSEgm.js","assets/safeImageUrl-BINWXOTz.js","assets/empty-D51uhW0E.js","assets/catalog-BHjl-1uH.js","assets/sourceHost-BV3t2XDb.js","assets/spokenText-Dy-GZvZV.js","assets/annotations-CftUUB13.js","assets/streamParse-BX0bAppQ.js","assets/store-C9s8Bfz0.js","assets/contentVault-XKWjF2FB.js","assets/keyVault-Aw5Y2PjT.js","assets/localBudget-CxLP6bjE.js","assets/store-D16dGt7I.js","assets/useLiveConfig-CvOQTr0s.js","assets/react-BZJXY1be.js","assets/compiler-runtime-qQQXpJgv.js","assets/info-CiqHR5cs.js","assets/providers-CPhoN8j0.js","assets/http-Bqk6nJiH.js","assets/attachments-BW-vki-E.js","assets/route-CMdTFx0P.js","assets/store-DqOaVRLn.js","assets/store-D2IJF4SA.js","assets/store-CgA7mKy1.js","assets/store-B2Rpbqgg.js","assets/ready-_sg3IJkE.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{_ as a,d as o,h as s,o as c,st as l,v as u}from"./index-Db-FgYxX.js";import{n as d}from"./icons-gLFQTv74.js";import{t as f}from"./useFocusTrap-CJmpNZv2.js";import{c as p,d as m,l as h,o as g,u as _}from"./kokoro-yB7iU_JU.js";import{t as v}from"./FeatureUseNotice-CCI4mM39.js";import{i as y,r as b}from"./info-CiqHR5cs.js";import{n as x}from"./store-C9s8Bfz0.js";import{t as ee}from"./time-BHTmJR1s.js";import{t as S}from"./providers-CPhoN8j0.js";import{c as C,d as w,i as T,n as E,s as D,t as te,u as ne}from"./useLiveConfig-CvOQTr0s.js";import{a as re,d as ie,f as ae,l as oe,m as se,n as ce,p as le,r as ue,s as de,u as fe}from"./quietHours-LtXDl4-v.js";import{i as pe,n as me,r as he,s as O}from"./store-DqOaVRLn.js";import{t as ge}from"./TemplatePicker-DBa4lkpf.js";import{t as _e}from"./DropSelect-D3Q9Su_x.js";import{g as ve}from"./store-D2IJF4SA.js";import{n as ye,t as be}from"./useStudy-70Iz4ZVn.js";import{r as xe,t as Se}from"./ledger-BssK9Pv2.js";var k=e(),A=t(),j=n();function Ce(e){return e.reduce((e,t)=>({calls:e.calls+1,input:e.input+t.input,cachedInput:e.cachedInput+t.cachedInput,output:e.output+t.output}),{calls:0,input:0,cachedInput:0,output:0})}var M=new Intl.NumberFormat;function we(){let e=(0,A.c)(30),t=(0,k.useSyncExternalStore)(xe,Se,Se);if(!t.length){let t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,j.jsx)(`p`,{className:`usage-empty`,children:`No model calls yet this session — the tour and the recorded demos never make one.`}),e[0]=t):t=e[0],t}let n,r,i,a;if(e[1]!==t){let o=Ce(t),s=o.input?Math.round(o.cachedInput/o.input*100):0,c=new Map;for(let e of t)c.set(e.label,(c.get(e.label)??0)+e.input+e.output);let l=[...c.entries()].sort(N);i=`usage-panel`;let u;e[6]===Symbol.for(`react.memo_cache_sentinel`)?(u=(0,j.jsx)(`dt`,{children:`Sent`}),e[6]=u):u=e[6];let d;e[7]===Symbol.for(`react.memo_cache_sentinel`)?(d=(0,j.jsx)(`span`,{className:`usage-unit`,children:` in`}),e[7]=d):d=e[7];let f=(0,j.jsxs)(`div`,{children:[u,(0,j.jsxs)(`dd`,{children:[M.format(o.input),d]})]}),p;e[8]===Symbol.for(`react.memo_cache_sentinel`)?(p=(0,j.jsx)(`dt`,{children:`Cached`}),e[8]=p):p=e[8];let m;e[9]===Symbol.for(`react.memo_cache_sentinel`)?(m=(0,j.jsx)(`span`,{className:`usage-unit`,children:`% of that`}),e[9]=m):m=e[9];let h;e[10]===s?h=e[11]:(h=(0,j.jsxs)(`div`,{children:[p,(0,j.jsxs)(`dd`,{children:[s,m]})]}),e[10]=s,e[11]=h);let g;e[12]===Symbol.for(`react.memo_cache_sentinel`)?(g=(0,j.jsx)(`dt`,{children:`Written`}),e[12]=g):g=e[12];let _;e[13]===Symbol.for(`react.memo_cache_sentinel`)?(_=(0,j.jsx)(`span`,{className:`usage-unit`,children:` out`}),e[13]=_):_=e[13];let v=(0,j.jsxs)(`div`,{children:[g,(0,j.jsxs)(`dd`,{children:[M.format(o.output),_]})]}),y;e[14]===Symbol.for(`react.memo_cache_sentinel`)?(y=(0,j.jsx)(`dt`,{children:`Calls`}),e[14]=y):y=e[14];let b=M.format(o.calls),x;e[15]===b?x=e[16]:(x=(0,j.jsxs)(`div`,{children:[y,(0,j.jsx)(`dd`,{children:b})]}),e[15]=b,e[16]=x),e[17]!==v||e[18]!==x||e[19]!==f||e[20]!==h?(a=(0,j.jsxs)(`dl`,{className:`usage-totals`,children:[f,h,v,x]}),e[17]=v,e[18]=x,e[19]=f,e[20]=h,e[21]=a):a=e[21],n=`usage-sites`,r=l.map(Te),e[1]=t,e[2]=n,e[3]=r,e[4]=i,e[5]=a}else n=e[2],r=e[3],i=e[4],a=e[5];let o;e[22]!==n||e[23]!==r?(o=(0,j.jsx)(`ul`,{className:n,children:r}),e[22]=n,e[23]=r,e[24]=o):o=e[24];let s;e[25]===Symbol.for(`react.memo_cache_sentinel`)?(s=(0,j.jsx)(`p`,{className:`usage-note`,children:`Counted from what each provider reported for this session only — nothing is stored, and nothing leaves this device. Output tokens usually cost several times what input does.`}),e[25]=s):s=e[25];let c;return e[26]!==i||e[27]!==a||e[28]!==o?(c=(0,j.jsxs)(`div`,{className:i,children:[a,o,s]}),e[26]=i,e[27]=a,e[28]=o,e[29]=c):c=e[29],c}function Te(e){let[t,n]=e;return(0,j.jsxs)(`li`,{children:[(0,j.jsx)(`span`,{className:`usage-site-name`,children:t}),(0,j.jsx)(`span`,{className:`usage-site-tokens`,children:M.format(n)})]},t)}function N(e,t){return t[1]-e[1]}var P={display:`flex`,flexDirection:`column`,gap:4,fontSize:13,background:`var(--surface-default)`,border:`1px solid var(--line)`,borderRadius:8,padding:`7px 10px`},F={flex:`0 0 auto`,background:`transparent`,border:`none`,color:`var(--text-muted)`,cursor:`pointer`,font:`inherit`,lineHeight:1,padding:0};function Ee(e){let t=(0,A.c)(40),{node:n,ago:r}=e,[i,a]=(0,k.useState)(!1),[o,s]=(0,k.useState)(n.body),c=(0,k.useRef)(null),l,u;t[0]===i?(l=t[1],u=t[2]):(l=()=>{i&&c.current?.focus()},u=[i],t[0]=i,t[1]=l,t[2]=u),(0,k.useEffect)(l,u);let d;t[3]!==o||t[4]!==n.body||t[5]!==n.id?(d=()=>{let e=o.trim();e&&e!==n.body&&he(n.id,e),a(!1)},t[3]=o,t[4]=n.body,t[5]=n.id,t[6]=d):d=t[6];let f=d,p;t[7]===n.body?p=t[8]:(p=()=>{s(n.body),a(!1)},t[7]=n.body,t[8]=p);let m=p,h,g;t[9]===Symbol.for(`react.memo_cache_sentinel`)?(h={display:`flex`,alignItems:`center`,justifyContent:`space-between`,gap:8},g={fontFamily:`var(--font-data, inherit)`,fontSize:10.5,fontWeight:600,color:`var(--presence)`,letterSpacing:`0.02em`},t[9]=h,t[10]=g):(h=t[9],g=t[10]);let _;t[11]===n.concept?_=t[12]:(_=(0,j.jsx)(`span`,{style:g,children:n.concept}),t[11]=n.concept,t[12]=_);let v;t[13]===Symbol.for(`react.memo_cache_sentinel`)?(v={fontSize:10.5,color:`var(--text-muted)`,whiteSpace:`nowrap`},t[13]=v):v=t[13];let y;t[14]===r?y=t[15]:(y=(0,j.jsx)(`span`,{style:v,children:r}),t[14]=r,t[15]=y);let b;t[16]!==i||t[17]!==n.concept?(b=!i&&(0,j.jsx)(`button`,{type:`button`,onClick:()=>a(!0),title:`Edit this fact`,"aria-label":`Edit: ${n.concept}`,style:{...F,fontSize:12},children:`Edit`}),t[16]=i,t[17]=n.concept,t[18]=b):b=t[18];let x;t[19]===n.id?x=t[20]:(x=()=>me(n.id),t[19]=n.id,t[20]=x);let ee=`Forget: ${n.concept}`,S;t[21]===Symbol.for(`react.memo_cache_sentinel`)?(S={...F,fontSize:16},t[21]=S):S=t[21];let C;t[22]!==x||t[23]!==ee?(C=(0,j.jsx)(`button`,{type:`button`,onClick:x,title:`Forget this concept`,"aria-label":ee,style:S,children:`×`}),t[22]=x,t[23]=ee,t[24]=C):C=t[24];let w;t[25]!==b||t[26]!==C||t[27]!==_||t[28]!==y?(w=(0,j.jsxs)(`div`,{style:h,children:[_,y,b,C]}),t[25]=b,t[26]=C,t[27]=_,t[28]=y,t[29]=w):w=t[29];let T;t[30]!==m||t[31]!==o||t[32]!==i||t[33]!==n.body||t[34]!==n.concept||t[35]!==f?(T=i?(0,j.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:6},children:[(0,j.jsx)(`textarea`,{ref:c,value:o,onChange:e=>s(e.target.value),rows:3,"aria-label":`Edit memory: ${n.concept}`,style:{font:`inherit`,fontSize:13,lineHeight:1.4,color:`var(--text-primary)`,background:`var(--surface-elevated)`,border:`1px solid var(--line)`,borderRadius:6,padding:`6px 8px`,resize:`vertical`,width:`100%`,boxSizing:`border-box`}}),(0,j.jsxs)(`div`,{style:{display:`flex`,gap:8,justifyContent:`flex-end`},children:[(0,j.jsx)(`button`,{type:`button`,onClick:m,style:{...F,fontSize:12},children:`Cancel`}),(0,j.jsx)(`button`,{type:`button`,onClick:f,disabled:!o.trim(),style:{...F,fontSize:12,color:`var(--presence)`,fontWeight:600},children:`Save`})]})]}):(0,j.jsx)(`span`,{style:{color:`var(--text-primary)`,lineHeight:1.4},children:n.body}),t[30]=m,t[31]=o,t[32]=i,t[33]=n.body,t[34]=n.concept,t[35]=f,t[36]=T):T=t[36];let E;return t[37]!==w||t[38]!==T?(E=(0,j.jsxs)(`li`,{style:P,children:[w,T]}),t[37]=w,t[38]=T,t[39]=E):E=t[39],E}function I(e){let t=e.concept.indexOf(`.`);return t<0?e.concept:e.concept.slice(0,t)}function De(e){return{profile:`About you`,preferences:`Preferences`,topics:`Topics`,threads:`Open threads`,projects:`Projects`,work:`Work`,life:`Life`}[e]??e.slice(0,1).toUpperCase()+e.slice(1)}function Oe(e){let t=new Map;for(let n of e){let e=I(n),r=t.get(e);r?r.push(n):t.set(e,[n])}return[...t.keys()].sort((e,t)=>e===`profile`?-1:t===`profile`?1:e.localeCompare(t)).map(e=>({namespace:e,nodes:t.get(e).slice().sort((e,t)=>t.updatedAt-e.updatedAt)}))}function ke(e){if(!e)return``;try{return new Date(e).toISOString().split(`T`)[0]}catch{return``}}function L(e){let t=ke(e.updatedAt);return`${t?`---\nconcept: ${e.concept}\nupdated: ${t}\n---`:`---\nconcept: ${e.concept}\n---`}\n\n${e.body}`}function Ae(e){return e.length?[...e].sort((e,t)=>e.concept===`profile`?-1:t.concept===`profile`?1:e.concept.localeCompare(t.concept)).map(L).join(`
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/backup-AymOkasb.js","assets/catalog-vLsIS_Na.js","assets/preload-helper-CiWYd9n-.js","assets/rolldown-runtime-DkW27tQK.js","assets/facts-CNQz8OQz.js","assets/blockTypes-DUDdP3pB.js","assets/liveSchema-eKgFc5D0.js","assets/icons-gLFQTv74.js","assets/jsx-runtime-DeHZSEgm.js","assets/safeImageUrl-BINWXOTz.js","assets/empty-D51uhW0E.js","assets/catalog-BHjl-1uH.js","assets/sourceHost-BV3t2XDb.js","assets/spokenText-Dy-GZvZV.js","assets/annotations-CftUUB13.js","assets/streamParse-BX0bAppQ.js","assets/store-C9s8Bfz0.js","assets/contentVault-XKWjF2FB.js","assets/keyVault-Aw5Y2PjT.js","assets/localBudget-CxLP6bjE.js","assets/store-D16dGt7I.js","assets/useLiveConfig-CvOQTr0s.js","assets/react-BZJXY1be.js","assets/compiler-runtime-qQQXpJgv.js","assets/info-CiqHR5cs.js","assets/providers-CPhoN8j0.js","assets/http-Bqk6nJiH.js","assets/attachments-BW-vki-E.js","assets/route-CMdTFx0P.js","assets/store-DqOaVRLn.js","assets/store-D2IJF4SA.js","assets/store-CgA7mKy1.js","assets/store-B2Rpbqgg.js","assets/ready-_sg3IJkE.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{_ as a,d as o,h as s,o as c,st as l,v as u}from"./index-CKRjGbeR.js";import{n as d}from"./icons-gLFQTv74.js";import{t as f}from"./useFocusTrap-CJmpNZv2.js";import{c as p,d as m,l as h,o as g,u as _}from"./kokoro-B-rc224u.js";import{t as v}from"./FeatureUseNotice-BfnZH8Vt.js";import{i as y,r as b}from"./info-CiqHR5cs.js";import{n as x}from"./store-C9s8Bfz0.js";import{t as ee}from"./time-BHTmJR1s.js";import{t as S}from"./providers-CPhoN8j0.js";import{c as C,d as w,i as T,n as E,s as D,t as te,u as ne}from"./useLiveConfig-CvOQTr0s.js";import{a as re,d as ie,f as ae,l as oe,m as se,n as ce,p as le,r as ue,s as de,u as fe}from"./quietHours-lWcjQ2Iu.js";import{i as pe,n as me,r as he,s as O}from"./store-DqOaVRLn.js";import{t as ge}from"./TemplatePicker-3w18ViSc.js";import{t as _e}from"./DropSelect-IBjV5Ol1.js";import{g as ve}from"./store-D2IJF4SA.js";import{n as ye,t as be}from"./useStudy-70Iz4ZVn.js";import{r as xe,t as Se}from"./ledger-BssK9Pv2.js";var k=e(),A=t(),j=n();function Ce(e){return e.reduce((e,t)=>({calls:e.calls+1,input:e.input+t.input,cachedInput:e.cachedInput+t.cachedInput,output:e.output+t.output}),{calls:0,input:0,cachedInput:0,output:0})}var M=new Intl.NumberFormat;function we(){let e=(0,A.c)(30),t=(0,k.useSyncExternalStore)(xe,Se,Se);if(!t.length){let t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,j.jsx)(`p`,{className:`usage-empty`,children:`No model calls yet this session — the tour and the recorded demos never make one.`}),e[0]=t):t=e[0],t}let n,r,i,a;if(e[1]!==t){let o=Ce(t),s=o.input?Math.round(o.cachedInput/o.input*100):0,c=new Map;for(let e of t)c.set(e.label,(c.get(e.label)??0)+e.input+e.output);let l=[...c.entries()].sort(N);i=`usage-panel`;let u;e[6]===Symbol.for(`react.memo_cache_sentinel`)?(u=(0,j.jsx)(`dt`,{children:`Sent`}),e[6]=u):u=e[6];let d;e[7]===Symbol.for(`react.memo_cache_sentinel`)?(d=(0,j.jsx)(`span`,{className:`usage-unit`,children:` in`}),e[7]=d):d=e[7];let f=(0,j.jsxs)(`div`,{children:[u,(0,j.jsxs)(`dd`,{children:[M.format(o.input),d]})]}),p;e[8]===Symbol.for(`react.memo_cache_sentinel`)?(p=(0,j.jsx)(`dt`,{children:`Cached`}),e[8]=p):p=e[8];let m;e[9]===Symbol.for(`react.memo_cache_sentinel`)?(m=(0,j.jsx)(`span`,{className:`usage-unit`,children:`% of that`}),e[9]=m):m=e[9];let h;e[10]===s?h=e[11]:(h=(0,j.jsxs)(`div`,{children:[p,(0,j.jsxs)(`dd`,{children:[s,m]})]}),e[10]=s,e[11]=h);let g;e[12]===Symbol.for(`react.memo_cache_sentinel`)?(g=(0,j.jsx)(`dt`,{children:`Written`}),e[12]=g):g=e[12];let _;e[13]===Symbol.for(`react.memo_cache_sentinel`)?(_=(0,j.jsx)(`span`,{className:`usage-unit`,children:` out`}),e[13]=_):_=e[13];let v=(0,j.jsxs)(`div`,{children:[g,(0,j.jsxs)(`dd`,{children:[M.format(o.output),_]})]}),y;e[14]===Symbol.for(`react.memo_cache_sentinel`)?(y=(0,j.jsx)(`dt`,{children:`Calls`}),e[14]=y):y=e[14];let b=M.format(o.calls),x;e[15]===b?x=e[16]:(x=(0,j.jsxs)(`div`,{children:[y,(0,j.jsx)(`dd`,{children:b})]}),e[15]=b,e[16]=x),e[17]!==v||e[18]!==x||e[19]!==f||e[20]!==h?(a=(0,j.jsxs)(`dl`,{className:`usage-totals`,children:[f,h,v,x]}),e[17]=v,e[18]=x,e[19]=f,e[20]=h,e[21]=a):a=e[21],n=`usage-sites`,r=l.map(Te),e[1]=t,e[2]=n,e[3]=r,e[4]=i,e[5]=a}else n=e[2],r=e[3],i=e[4],a=e[5];let o;e[22]!==n||e[23]!==r?(o=(0,j.jsx)(`ul`,{className:n,children:r}),e[22]=n,e[23]=r,e[24]=o):o=e[24];let s;e[25]===Symbol.for(`react.memo_cache_sentinel`)?(s=(0,j.jsx)(`p`,{className:`usage-note`,children:`Counted from what each provider reported for this session only — nothing is stored, and nothing leaves this device. Output tokens usually cost several times what input does.`}),e[25]=s):s=e[25];let c;return e[26]!==i||e[27]!==a||e[28]!==o?(c=(0,j.jsxs)(`div`,{className:i,children:[a,o,s]}),e[26]=i,e[27]=a,e[28]=o,e[29]=c):c=e[29],c}function Te(e){let[t,n]=e;return(0,j.jsxs)(`li`,{children:[(0,j.jsx)(`span`,{className:`usage-site-name`,children:t}),(0,j.jsx)(`span`,{className:`usage-site-tokens`,children:M.format(n)})]},t)}function N(e,t){return t[1]-e[1]}var P={display:`flex`,flexDirection:`column`,gap:4,fontSize:13,background:`var(--surface-default)`,border:`1px solid var(--line)`,borderRadius:8,padding:`7px 10px`},F={flex:`0 0 auto`,background:`transparent`,border:`none`,color:`var(--text-muted)`,cursor:`pointer`,font:`inherit`,lineHeight:1,padding:0};function Ee(e){let t=(0,A.c)(40),{node:n,ago:r}=e,[i,a]=(0,k.useState)(!1),[o,s]=(0,k.useState)(n.body),c=(0,k.useRef)(null),l,u;t[0]===i?(l=t[1],u=t[2]):(l=()=>{i&&c.current?.focus()},u=[i],t[0]=i,t[1]=l,t[2]=u),(0,k.useEffect)(l,u);let d;t[3]!==o||t[4]!==n.body||t[5]!==n.id?(d=()=>{let e=o.trim();e&&e!==n.body&&he(n.id,e),a(!1)},t[3]=o,t[4]=n.body,t[5]=n.id,t[6]=d):d=t[6];let f=d,p;t[7]===n.body?p=t[8]:(p=()=>{s(n.body),a(!1)},t[7]=n.body,t[8]=p);let m=p,h,g;t[9]===Symbol.for(`react.memo_cache_sentinel`)?(h={display:`flex`,alignItems:`center`,justifyContent:`space-between`,gap:8},g={fontFamily:`var(--font-data, inherit)`,fontSize:10.5,fontWeight:600,color:`var(--presence)`,letterSpacing:`0.02em`},t[9]=h,t[10]=g):(h=t[9],g=t[10]);let _;t[11]===n.concept?_=t[12]:(_=(0,j.jsx)(`span`,{style:g,children:n.concept}),t[11]=n.concept,t[12]=_);let v;t[13]===Symbol.for(`react.memo_cache_sentinel`)?(v={fontSize:10.5,color:`var(--text-muted)`,whiteSpace:`nowrap`},t[13]=v):v=t[13];let y;t[14]===r?y=t[15]:(y=(0,j.jsx)(`span`,{style:v,children:r}),t[14]=r,t[15]=y);let b;t[16]!==i||t[17]!==n.concept?(b=!i&&(0,j.jsx)(`button`,{type:`button`,onClick:()=>a(!0),title:`Edit this fact`,"aria-label":`Edit: ${n.concept}`,style:{...F,fontSize:12},children:`Edit`}),t[16]=i,t[17]=n.concept,t[18]=b):b=t[18];let x;t[19]===n.id?x=t[20]:(x=()=>me(n.id),t[19]=n.id,t[20]=x);let ee=`Forget: ${n.concept}`,S;t[21]===Symbol.for(`react.memo_cache_sentinel`)?(S={...F,fontSize:16},t[21]=S):S=t[21];let C;t[22]!==x||t[23]!==ee?(C=(0,j.jsx)(`button`,{type:`button`,onClick:x,title:`Forget this concept`,"aria-label":ee,style:S,children:`×`}),t[22]=x,t[23]=ee,t[24]=C):C=t[24];let w;t[25]!==b||t[26]!==C||t[27]!==_||t[28]!==y?(w=(0,j.jsxs)(`div`,{style:h,children:[_,y,b,C]}),t[25]=b,t[26]=C,t[27]=_,t[28]=y,t[29]=w):w=t[29];let T;t[30]!==m||t[31]!==o||t[32]!==i||t[33]!==n.body||t[34]!==n.concept||t[35]!==f?(T=i?(0,j.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:6},children:[(0,j.jsx)(`textarea`,{ref:c,value:o,onChange:e=>s(e.target.value),rows:3,"aria-label":`Edit memory: ${n.concept}`,style:{font:`inherit`,fontSize:13,lineHeight:1.4,color:`var(--text-primary)`,background:`var(--surface-elevated)`,border:`1px solid var(--line)`,borderRadius:6,padding:`6px 8px`,resize:`vertical`,width:`100%`,boxSizing:`border-box`}}),(0,j.jsxs)(`div`,{style:{display:`flex`,gap:8,justifyContent:`flex-end`},children:[(0,j.jsx)(`button`,{type:`button`,onClick:m,style:{...F,fontSize:12},children:`Cancel`}),(0,j.jsx)(`button`,{type:`button`,onClick:f,disabled:!o.trim(),style:{...F,fontSize:12,color:`var(--presence)`,fontWeight:600},children:`Save`})]})]}):(0,j.jsx)(`span`,{style:{color:`var(--text-primary)`,lineHeight:1.4},children:n.body}),t[30]=m,t[31]=o,t[32]=i,t[33]=n.body,t[34]=n.concept,t[35]=f,t[36]=T):T=t[36];let E;return t[37]!==w||t[38]!==T?(E=(0,j.jsxs)(`li`,{style:P,children:[w,T]}),t[37]=w,t[38]=T,t[39]=E):E=t[39],E}function I(e){let t=e.concept.indexOf(`.`);return t<0?e.concept:e.concept.slice(0,t)}function De(e){return{profile:`About you`,preferences:`Preferences`,topics:`Topics`,threads:`Open threads`,projects:`Projects`,work:`Work`,life:`Life`}[e]??e.slice(0,1).toUpperCase()+e.slice(1)}function Oe(e){let t=new Map;for(let n of e){let e=I(n),r=t.get(e);r?r.push(n):t.set(e,[n])}return[...t.keys()].sort((e,t)=>e===`profile`?-1:t===`profile`?1:e.localeCompare(t)).map(e=>({namespace:e,nodes:t.get(e).slice().sort((e,t)=>t.updatedAt-e.updatedAt)}))}function ke(e){if(!e)return``;try{return new Date(e).toISOString().split(`T`)[0]}catch{return``}}function L(e){let t=ke(e.updatedAt);return`${t?`---\nconcept: ${e.concept}\nupdated: ${t}\n---`:`---\nconcept: ${e.concept}\n---`}\n\n${e.body}`}function Ae(e){return e.length?[...e].sort((e,t)=>e.concept===`profile`?-1:t.concept===`profile`?1:e.concept.localeCompare(t.concept)).map(L).join(`
3
3
 
4
4
  ---
5
5
 
6
- `):``}function je(e){let t=Ae(e);if(t)try{let e=new Blob([t],{type:`text/markdown;charset=utf-8`}),n=URL.createObjectURL(e),r=document.createElement(`a`);r.href=n,r.download=`mavea-memory.md`,r.click(),URL.revokeObjectURL(n)}catch{}}var R=420,z=300,B=6,V=[`var(--presence)`,`var(--insight)`,`var(--warning)`,`var(--presence-soft)`,`var(--insight-soft)`,`var(--warning-soft)`],Me={profile:V[0],preferences:V[3],topics:V[1],threads:V[4],projects:V[2]};function Ne(e){return Me[e]??V[H(e)%V.length]}function H(e){let t=0;for(let n=0;n<e.length;n++)t=Math.imul(31,t)+e.charCodeAt(n)|0;return Math.abs(t)}function U(e){let t=[],n=new Set,r=(e,t)=>[e,t].sort().join(`\0`),i=e.filter(e=>e.updatedAt>0).sort((e,t)=>e.updatedAt-t.updatedAt);for(let e=0;e<i.length;e++)for(let a=e+1;a<i.length&&i[a].updatedAt-i[e].updatedAt<200;a++){let o=r(i[e].concept,i[a].concept);n.has(o)||(n.add(o),t.push({a:i[e].concept,b:i[a].concept,cooccurred:!0}))}let a=new Set(e.map(e=>e.concept));for(let i of e){let e=i.concept.split(`.`)[0];if(e!==i.concept&&a.has(e)){let a=r(i.concept,e);n.has(a)||(n.add(a),t.push({a:i.concept,b:e,cooccurred:!1}))}}return t}function Pe(e,t){let n=[...e].sort((e,t)=>e.concept.localeCompare(t.concept)),r=new Map;n.forEach((e,t)=>{let i=t/Math.max(1,n.length)*Math.PI*2,a=Math.min(R,z)*.3;r.set(e.concept,{x:R/2+Math.cos(i)*a,y:z/2+Math.sin(i)*a,vx:0,vy:0})});let i=[...r.values()],a=.82;for(let e=0;e<80;e++){let o=1-e/80,s=.08*Math.sqrt(R*z/Math.max(1,n.length));for(let e=0;e<i.length;e++){let t=i[e];for(let n=e+1;n<i.length;n++){let e=i[n],r=e.x-t.x||.01,a=e.y-t.y||.01,c=Math.hypot(r,a)||.01,l=s*s/c*1.5;t.vx-=r/c*l*o,t.vy-=a/c*l*o,e.vx+=r/c*l*o,e.vy+=a/c*l*o}}for(let e of t){let t=r.get(e.a),n=r.get(e.b);if(!t||!n)continue;let i=n.x-t.x,a=n.y-t.y,s=Math.hypot(i,a)||.01,c=(s-(e.cooccurred?85:120))*.05*o;t.vx+=i/s*c,t.vy+=a/s*c,n.vx-=i/s*c,n.vy-=a/s*c}for(let e of r.values())e.vx+=(R/2-e.x)*.006*o,e.vy+=(z/2-e.y)*.006*o;let c=0;for(let e of i){let t=Math.abs(e.vx)+Math.abs(e.vy);t>c&&(c=t),e.x=Math.max(20,Math.min(400,e.x+e.vx)),e.y=Math.max(20,Math.min(280,e.y+e.vy)),e.vx*=a,e.vy*=a}if(c<.4)break}let o=new Map;for(let[e,t]of r)o.set(e,{x:t.x,y:t.y});return o}function Fe(e){let t=(0,A.c)(39),{nodes:n}=e,[r,i]=(0,k.useState)(null),[a,o]=(0,k.useState)(null),s;t[0]===n?s=t[1]:(s=U(n),t[0]=n,t[1]=s);let c=s,l;t[2]!==c||t[3]!==n?(l=Pe(n,c),t[2]=c,t[3]=n,t[4]=l):l=t[4];let u=l,d;t[5]===c?d=t[6]:(d=c.filter(W),t[5]=c,t[6]=d);let f=d.length,p;t[7]!==a||t[8]!==n?(p=a?n.find(e=>e.concept===a):null,t[7]=a,t[8]=n,t[9]=p):p=t[9];let m=p;if(n.length===0){let e;return t[10]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,j.jsx)(`div`,{className:`mg-empty`,children:`Your knowledge graph appears here as you talk — start a conversation to add concepts.`}),t[10]=e):e=t[10],e}let h;if(t[11]!==c||t[12]!==r||t[13]!==u){let e;t[15]!==r||t[16]!==u?(e=(e,t)=>{let n=u.get(e.a),i=u.get(e.b);if(!n||!i)return null;let a=r===e.a||r===e.b,o=e.cooccurred?.55:.2;return(0,j.jsx)(`line`,{x1:n.x,y1:n.y,x2:i.x,y2:i.y,className:`mg-edge`+(e.cooccurred?` mg-edge--strong`:``),style:{opacity:r?a?o+.3:.05:o}},t)},t[15]=r,t[16]=u,t[17]=e):e=t[17],h=c.map(e),t[11]=c,t[12]=r,t[13]=u,t[14]=h}else h=t[14];let g;if(t[18]!==a||t[19]!==r||t[20]!==n||t[21]!==u){let e;t[23]!==a||t[24]!==r||t[25]!==u?(e=e=>{let t=u.get(e.concept);if(!t)return null;let n=Ne(I(e)),s=Math.max(7,Math.min(18,7+e.body.length/400*11)),c=r===e.concept,l=a===e.concept,d=e.concept.split(`.`).pop()??e.concept,f=O(e.source),p=e.kind===`procedural`,m=l?1:f?.82:.42,h=p||l||!f?n:`none`,g=p?2:l?1.5:+!f;return(0,j.jsxs)(`g`,{className:`mg-node`,transform:`translate(${t.x},${t.y})`,onMouseEnter:()=>i(e.concept),onMouseLeave:()=>i(null),onClick:()=>o(l?null:e.concept),style:{opacity:r&&!c?.3:1},children:[(0,j.jsx)(`title`,{children:`${e.concept} · ${f?`confirmed`:`unconfirmed`}${p?` · lesson`:``}`}),c&&(0,j.jsx)(`circle`,{r:s+5,fill:n,style:{opacity:.15},"aria-hidden":`true`}),(0,j.jsx)(`circle`,{r:s,fill:n,style:{opacity:m},stroke:h,strokeWidth:g,strokeDasharray:f?void 0:`3 2`,strokeOpacity:.5}),(0,j.jsx)(`text`,{className:`mg-label`,y:s+13,textAnchor:`middle`,style:{fill:n,opacity:c||l?1:.65},children:d})]},e.concept)},t[23]=a,t[24]=r,t[25]=u,t[26]=e):e=t[26],g=n.map(e),t[18]=a,t[19]=r,t[20]=n,t[21]=u,t[22]=g}else g=t[22];let _;t[27]!==h||t[28]!==g?(_=(0,j.jsxs)(`svg`,{className:`mg-svg`,viewBox:`0 0 ${R} ${z}`,width:`100%`,height:`auto`,"aria-label":`Memory concept graph`,children:[h,g]}),t[27]=h,t[28]=g,t[29]=_):_=t[29];let v;t[30]===m?v=t[31]:(v=m&&(0,j.jsxs)(`div`,{className:`mg-detail`,onClick:()=>o(null),title:`Click to close`,role:`button`,tabIndex:0,onKeyDown:e=>e.key===`Enter`&&o(null),children:[(0,j.jsx)(`span`,{className:`mg-detail-concept`,children:m.concept}),(0,j.jsx)(`p`,{className:`mg-detail-body`,children:m.body})]}),t[30]=m,t[31]=v);let y;t[32]!==n.length||t[33]!==f?(y=n.length<B?(0,j.jsxs)(`div`,{className:`mg-warmup`,children:[(0,j.jsx)(`div`,{className:`mg-warmup-track`,children:(0,j.jsx)(`div`,{className:`mg-warmup-fill`,style:{width:`${n.length/B*100}%`}})}),(0,j.jsxs)(`span`,{className:`mg-warmup-label`,children:[B-n.length,` more`,` `,B-n.length===1?`concept`:`concepts`,` until your map fills in`]})]}):(0,j.jsxs)(`p`,{className:`mg-foot`,children:[f,` connection`,f===1?``:`s`,` across `,n.length,` `,`concepts`]}),t[32]=n.length,t[33]=f,t[34]=y):y=t[34];let b;return t[35]!==_||t[36]!==v||t[37]!==y?(b=(0,j.jsxs)(`div`,{className:`mg-wrap`,children:[_,v,y]}),t[35]=_,t[36]=v,t[37]=y,t[38]=b):b=t[38],b}function W(e){return e.cooccurred}r();var Ie=1e6;function Le(e){return e instanceof DOMException&&e.name===`AbortError`}function Re(e){return e===`provider-api-keys`?`provider API keys`:e===`search-api-keys`?`search API keys`:`GitHub tokens`}function G(e,t,n=`${t}s`){return`${e} ${e===1?t:n}`}function ze(e,t){return new Promise((n,r)=>{let i=new FileReader,a=()=>t.removeEventListener(`abort`,s),o=e=>{a(),i.onload=null,i.onerror=null,i.onabort=null,e()},s=()=>{i.readyState===FileReader.LOADING?i.abort():o(()=>r(new DOMException(`Import cancelled`,`AbortError`)))};i.onload=()=>o(()=>typeof i.result==`string`?n(i.result):r(Error(`The selected file could not be read as text.`))),i.onerror=()=>o(()=>r(i.error??Error(`The selected file could not be read.`))),i.onabort=()=>o(()=>r(new DOMException(`Import cancelled`,`AbortError`))),t.addEventListener(`abort`,s,{once:!0}),t.aborted?s():i.readAsText(e)})}function Be({children:e,label:t=`More options`,defaultOpen:n=!1}){let[r,i]=(0,k.useState)(n);return(0,j.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:12},children:[(0,j.jsxs)(`button`,{type:`button`,onClick:()=>i(e=>!e),"aria-expanded":r,style:{display:`flex`,alignItems:`center`,gap:6,alignSelf:`flex-start`,padding:`4px 2px`,border:`none`,background:`transparent`,color:`var(--text-muted)`,cursor:`pointer`,font:`inherit`,fontSize:12,fontWeight:600,letterSpacing:`0.02em`},children:[(0,j.jsx)(`span`,{"aria-hidden":`true`,style:{display:`inline-block`,transition:`transform 150ms ease`,transform:r?`rotate(90deg)`:`none`,fontSize:10},children:`▶`}),t]}),r&&(0,j.jsx)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:12,paddingLeft:10,borderLeft:`2px solid var(--line)`},children:e})]})}function Ve(e){return{padding:`5px 14px`,borderRadius:8,border:`1px solid ${e?`var(--presence)`:`var(--line)`}`,background:e?`color-mix(in oklab, var(--presence) 12%, var(--surface-elevated))`:`var(--surface-default)`,color:e?`var(--presence)`:`var(--text-secondary)`,cursor:`pointer`,font:`inherit`,fontSize:12,fontWeight:e?600:400}}var He={background:`var(--surface-elevated)`,border:`1px solid var(--line)`,borderRadius:16,padding:16,display:`flex`,flexDirection:`column`,gap:12,width:`min(460px, calc(100vw - 32px))`,boxShadow:`var(--shadow-modal)`},K={fontSize:12,color:`var(--text-muted)`,textTransform:`uppercase`,letterSpacing:`0.06em`},Ue={background:`var(--surface-default)`,border:`1px solid var(--line)`,borderRadius:10,padding:`9px 11px`,color:`var(--text-primary)`,font:`inherit`,width:`100%`};function We(e,t){try{return localStorage.getItem(e)||t}catch{return t}}function Ge(e){let t=m(e);if(t){g(`mavea`,t.kokoro);try{localStorage.setItem(h,e)}catch{}}}var q=[`model`,`settings`,`you`,`data`];function J(e){let t=(0,A.c)(27),{label:n,on:r,onToggle:i,note:a}=e,o=(0,k.useId)(),s;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(s={display:`flex`,alignItems:`flex-start`,gap:10,cursor:`pointer`},t[0]=s):s=t[0];let c=r?`var(--presence)`:`var(--track)`,l;t[1]===c?l=t[2]:(l={flex:`0 0 auto`,width:38,height:22,borderRadius:999,border:`1px solid var(--line-strong)`,background:c,position:`relative`,cursor:`pointer`,transition:`background 140ms ease`,marginTop:1},t[1]=c,t[2]=l);let u=r?18:2,d=r?`#fff`:`var(--text-muted)`,f;t[3]!==u||t[4]!==d?(f=(0,j.jsx)(`span`,{style:{position:`absolute`,top:2,left:u,width:16,height:16,borderRadius:`50%`,background:d,transition:`left 140ms ease, background 140ms ease`}}),t[3]=u,t[4]=d,t[5]=f):f=t[5];let p;t[6]!==n||t[7]!==o||t[8]!==r||t[9]!==i||t[10]!==l||t[11]!==f?(p=(0,j.jsx)(`button`,{type:`button`,role:`switch`,"aria-checked":r,"aria-label":n,"aria-describedby":o,onClick:i,style:l,children:f}),t[6]=n,t[7]=o,t[8]=r,t[9]=i,t[10]=l,t[11]=f,t[12]=p):p=t[12];let m,h;t[13]===Symbol.for(`react.memo_cache_sentinel`)?(m={display:`flex`,flexDirection:`column`,gap:2},h={fontSize:13},t[13]=m,t[14]=h):(m=t[13],h=t[14]);let g;t[15]===n?g=t[16]:(g=(0,j.jsx)(`span`,{style:h,children:n}),t[15]=n,t[16]=g);let _;t[17]===Symbol.for(`react.memo_cache_sentinel`)?(_={fontSize:12,color:`var(--text-muted)`},t[17]=_):_=t[17];let v;t[18]!==a||t[19]!==o?(v=(0,j.jsx)(`span`,{id:o,style:_,children:a}),t[18]=a,t[19]=o,t[20]=v):v=t[20];let y;t[21]!==g||t[22]!==v?(y=(0,j.jsxs)(`div`,{style:m,children:[g,v]}),t[21]=g,t[22]=v,t[23]=y):y=t[23];let b;return t[24]!==y||t[25]!==p?(b=(0,j.jsxs)(`label`,{style:s,children:[p,y]}),t[24]=y,t[25]=p,t[26]=b):b=t[26],b}function Ke(e){let t=(0,A.c)(14),{label:n,confirmLabel:r,onConfirm:i}=e,[a,o]=(0,k.useState)(!1),s,c;t[0]===a?(s=t[1],c=t[2]):(s=()=>{if(!a)return;let e=window.setTimeout(()=>o(!1),5e3);return()=>window.clearTimeout(e)},c=[a],t[0]=a,t[1]=s,t[2]=c),(0,k.useEffect)(s,c);let l;t[3]!==a||t[4]!==i?(l=()=>{if(!a){o(!0);return}o(!1),i()},t[3]=a,t[4]=i,t[5]=l):l=t[5];let u=a?`color-mix(in oklab, var(--warning) 10%, transparent)`:`transparent`,d=`1px solid ${a?`var(--warning)`:`var(--line)`}`,f=a?`var(--warning)`:`var(--text-muted)`,p;t[6]!==u||t[7]!==d||t[8]!==f?(p={background:u,border:d,borderRadius:8,padding:`3px 9px`,color:f,cursor:`pointer`,font:`inherit`,fontSize:12},t[6]=u,t[7]=d,t[8]=f,t[9]=p):p=t[9];let m=a?r:n,h;return t[10]!==l||t[11]!==p||t[12]!==m?(h=(0,j.jsx)(`button`,{type:`button`,onClick:l,style:p,children:m}),t[10]=l,t[11]=p,t[12]=m,t[13]=h):h=t[13],h}function Y(e){let t=(0,A.c)(24),{value:n,options:r,onPick:i,label:a}=e,o;if(t[0]!==r||t[1]!==n){let e;t[3]===n?e=t[4]:(e=e=>e.value===n,t[3]=n,t[4]=e),o=r.findIndex(e),t[0]=r,t[1]=n,t[2]=o}else o=t[2];let s=Math.max(0,o),c;t[5]!==s||t[6]!==i||t[7]!==r?(c=e=>{let t=e.key===`ArrowRight`||e.key===`ArrowDown`?1:e.key===`ArrowLeft`||e.key===`ArrowUp`?-1:0;if(!t)return;e.preventDefault();let n=(s+t+r.length)%r.length;i(r[n].value),(e.currentTarget.parentElement?.children[n])?.focus()},t[5]=s,t[6]=i,t[7]=r,t[8]=c):c=t[8];let l=c,u;t[9]===Symbol.for(`react.memo_cache_sentinel`)?(u={display:`flex`,gap:4,padding:3,borderRadius:10,background:`var(--track)`,border:`1px solid var(--line)`},t[9]=u):u=t[9];let d;if(t[10]!==s||t[11]!==l||t[12]!==i||t[13]!==r||t[14]!==n){let e;t[16]!==s||t[17]!==l||t[18]!==i||t[19]!==n?(e=(e,t)=>{let r=e.value===n;return(0,j.jsxs)(`button`,{type:`button`,role:`radio`,"aria-checked":r,tabIndex:t===s?0:-1,onClick:()=>i(e.value),onKeyDown:l,style:{flex:1,display:`flex`,flexDirection:`column`,alignItems:`center`,gap:1,padding:`6px 8px`,borderRadius:8,border:`none`,cursor:`pointer`,background:r?`var(--surface-elevated)`:`transparent`,boxShadow:r?`0 1px 2px rgba(0,0,0,0.12)`:`none`,color:`inherit`,font:`inherit`},children:[(0,j.jsx)(`span`,{style:{fontSize:13,fontWeight:r?600:400},children:e.label}),e.badge&&(0,j.jsx)(`span`,{style:{fontSize:10.5,color:`var(--text-muted)`},children:e.badge})]},e.value)},t[16]=s,t[17]=l,t[18]=i,t[19]=n,t[20]=e):e=t[20],d=r.map(e),t[10]=s,t[11]=l,t[12]=i,t[13]=r,t[14]=n,t[15]=d}else d=t[15];let f;return t[21]!==a||t[22]!==d?(f=(0,j.jsx)(`div`,{role:`radiogroup`,"aria-label":a,style:u,children:d}),t[21]=a,t[22]=d,t[23]=f):f=t[23],f}function X({onClose:e,initialTab:t,initialAdvancedYouOpen:n}){let[r]=w(),{style:g,newPerDay:me}=ye(),he=be(),O=y(r.provider),xe=r.models[r.provider]??``,Se=xe||O.defaultModel,A=r.keys[r.provider]??``,Ce=S(r.provider).capabilities,M=ie(),Te=(0,k.useMemo)(()=>Math.max(1,Math.round(JSON.stringify(M).length/1024)),[M]),N=se(),[P,F]=(0,k.useState)(ce),[I,ke]=(0,k.useState)(`list`),[L,Ae]=(0,k.useState)(t??`model`),[R,z]=(0,k.useState)(null),[B,V]=(0,k.useState)(!1),[Me,Ne]=(0,k.useState)(!1),H=(0,k.useRef)(0),U=(0,k.useRef)(!1),Pe=(0,k.useRef)(null),W=(0,k.useRef)(null),[X,qe]=(0,k.useState)(!1),[Je,Ye]=(0,k.useState)(null),[Xe,Ze]=(0,k.useState)(null),Qe=(0,k.useRef)(null),$e=(0,k.useRef)(null),Z=(0,k.useRef)(null),[Q,et]=(0,k.useState)(null),[tt,$]=(0,k.useState)(null),[nt,rt]=(0,k.useState)(null),it=(0,k.useRef)(null);f(it,{onEscape:e}),(0,k.useEffect)(()=>(U.current=!0,()=>{U.current=!1,H.current+=1,W.current?.abort(),$e.current?.abort(),fe()}),[]);function at(){let e=te(),t=new Blob([e],{type:`application/json`}),n=URL.createObjectURL(t),r=document.createElement(`a`);r.href=n,r.download=`mavea-live-v2.json`,r.click(),URL.revokeObjectURL(n)}async function ot(e){let t=e.target.files?.[0];if(e.target.value=``,!t||W.current)return;if(Ze(null),Ye(null),t.size>Ie){Ze(`That file is too large to be a Mavéa settings file.`);return}let n=new AbortController;W.current=n,qe(!0);try{let e=await ze(t,n.signal),r=T(e);if(U.current){let e=r.appliedFields.length?`Imported ${G(r.appliedFields.length,`setting`)}.`:`No recognized settings found.`,t=r.credentialsIgnored.length?` Ignored ${r.credentialsIgnored.map(Re).join(`, `)}; credentials are never imported.`:` Credentials were not imported.`;Ye(`${e}${t}`)}}catch(e){U.current&&!Le(e)&&Ze(e instanceof Error?e.message:`Import failed.`)}finally{W.current===n&&(W.current=null,U.current&&qe(!1))}}async function st(){if(!Z.current){Z.current=`export`,et(`export`),rt(null),$(null);try{let{downloadBackup:e}=await i(async()=>{let{downloadBackup:e}=await import(`./backup-DkCsHNEE.js`);return{downloadBackup:e}},__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]));await e(),U.current&&$(`Backup downloaded.`)}catch{U.current&&rt(`Couldn’t build the backup — please try again.`)}finally{Z.current=null,U.current&&et(null)}}}async function ct(e){let t=e.target.files?.[0];if(e.target.value=``,!t||Z.current)return;Z.current=`import`,et(`import`),rt(null),$(null);let n=new AbortController;$e.current=n;try{let{importBackup:e,MAX_BACKUP_BYTES:r}=await i(async()=>{let{importBackup:e,MAX_BACKUP_BYTES:t}=await import(`./backup-DkCsHNEE.js`);return{importBackup:e,MAX_BACKUP_BYTES:t}},__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]));if(t.size>r)throw Error(`That file is too large to be a Mavéa backup.`);let a=await e(await ze(t,n.signal)),o=[[a.dashboards,`dashboard`],[a.memory,`memory item`],[a.flashcards,`card`],[a.library,`saved canvas`,`saved canvases`],[a.atlas,`map record`],[a.courses,`course`]].filter(([e])=>e>0).map(([e,t,n])=>`${e} ${e===1?t:n??`${t}s`}`);if(U.current){let e=Object.values(a.sections),t=e.reduce((e,t)=>e+t.rejected,0),n=e.reduce((e,t)=>e+t.conflicts,0),r=e.reduce((e,t)=>e+t.evictedExisting,0),i=[o.length?`Merged ${o.join(`, `)}.`:`Nothing new to merge from that file.`];a.settingsApplied&&i.push(`Recognized settings were applied.`),n&&i.push(`${G(n,`incoming ID`)} matched records already present.`),t&&i.push(`${G(t,`entry`,`entries`)} ${t===1?`was`:`were`} rejected as invalid.`),r&&i.push(`${G(r,`existing record`)} ${r===1?`was`:`were`} evicted by bounded store capacity.`),a.credentialsIgnored.length&&i.push(`Ignored ${a.credentialsIgnored.map(Re).join(`, `)}; credentials are never imported.`),a.versionAhead&&i.push(`This backup uses a newer format; only recognized data was merged.`),i.push(`Changes are visible now; persistence is best-effort because browser storage writes cannot be verified.`),$(i.join(` `))}}catch(e){U.current&&!Le(e)&&rt(e instanceof Error?e.message:`Import failed.`)}finally{$e.current===n&&($e.current=null),Z.current=null,U.current&&et(null)}}let[lt,ut]=(0,k.useState)(()=>We(h,p)),[dt,ft]=(0,k.useState)(()=>s()),pt=(0,k.useCallback)(e=>{ft(e),u(e),o(a())},[]),mt=(0,k.useCallback)(async()=>{let e=++H.current;V(!0),Ne(!1);try{let{checkLiveReady:t}=await i(async()=>{let{checkLiveReady:e}=await import(`./ready-_sg3IJkE.js`).then(e=>e.n);return{checkLiveReady:e}},__vite__mapDeps([33,3,26,25,5,24,27,28])),n=await t(ne(E()),{tts:!1});e===H.current&&z({llm:n.llm,model:n.model,statusCode:n.statusCode})}catch{e===H.current&&(z(null),Ne(!0))}finally{e===H.current&&V(!1)}},[]);(0,k.useEffect)(()=>{if(O.needsKey&&!A){z(null);return}let e=setTimeout(()=>void mt(),400);return()=>clearTimeout(e)},[r.provider,Se,A,mt,O.needsKey]);let ht=B?`var(--text-muted)`:R?.llm&&R?.model?`var(--insight)`:`var(--warning)`,gt=B?`Checking…`:Me?`Couldn’t check readiness — try again`:R?.llm&&R?.model?`Ready`:R?.llm?`Reachable — model not found`:O.needsKey&&!A?`Add your API key`:R?.statusCode===401||R?.statusCode===400?`Invalid API key`:R?.statusCode===403?`Key lacks permission`:R?.statusCode===404?`Model not found`:R?.statusCode===void 0?`Not reachable`:`Error ${R.statusCode}`;return(0,j.jsxs)(`div`,{ref:it,style:He,role:`dialog`,"aria-modal":`true`,"aria-label":`Mavéa settings`,children:[(0,j.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,justifyContent:`space-between`},children:[(0,j.jsxs)(`span`,{style:{fontWeight:700,fontSize:15,display:`flex`,alignItems:`center`,gap:8},children:[(0,j.jsx)(d.sparkle,{style:{width:16,height:16,flex:`0 0 auto`,color:`var(--presence)`}}),`Settings`]}),e&&(0,j.jsx)(`button`,{onClick:e,title:`Close`,"aria-label":`Close settings`,style:{display:`inline-grid`,placeItems:`center`,width:28,height:28,padding:0,border:`none`,borderRadius:6,background:`transparent`,color:`var(--text-secondary)`,cursor:`pointer`,flexShrink:0},children:(0,j.jsx)(d.x,{style:{width:16,height:16}})})]}),(0,j.jsx)(`div`,{className:`ls-tabs`,role:`tablist`,"aria-label":`Settings sections`,children:q.map((e,t)=>(0,j.jsx)(`button`,{type:`button`,role:`tab`,id:`ls-tab-${e}`,"aria-selected":L===e,"aria-controls":`ls-panel-${e}`,tabIndex:L===e?0:-1,className:`ls-tab${L===e?` active`:``}`,onClick:()=>Ae(e),onKeyDown:e=>{let n=e.key===`ArrowRight`?1:e.key===`ArrowLeft`?-1:0;if(!n)return;e.preventDefault();let r=q[(t+n+q.length)%q.length];Ae(r),document.getElementById(`ls-tab-${r}`)?.focus()},children:e===`model`?`Model`:e===`settings`?`Settings`:e===`you`?`You`:`Your data`},e))}),(0,j.jsxs)(`div`,{className:`ls-body`,role:`tabpanel`,id:`ls-panel-${L}`,"aria-labelledby":`ls-tab-${L}`,children:[L===`model`&&(0,j.jsxs)(`div`,{className:`settings-model-connect`,children:[(0,j.jsx)(`div`,{className:`settings-provider-picker`,style:{display:`flex`,flexWrap:`wrap`,gap:8},"aria-label":`Model providers`,children:b.map(e=>{let t=e.id===r.provider;return(0,j.jsx)(`button`,{onClick:()=>D({provider:e.id}),style:{...Ue,width:`auto`,cursor:`pointer`,borderColor:t?`var(--presence)`:`var(--line)`,boxShadow:t?`0 0 0 1px var(--presence)`:`none`,opacity:t?1:.7},"aria-pressed":t,children:e.label},e.id)})}),(0,j.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:6},children:[(0,j.jsx)(`span`,{style:K,children:`Model`}),(0,j.jsx)(le,{provider:r.provider,value:xe,onChange:e=>C(r.provider,`model`,e)},r.provider)]}),O.needsKey&&(0,j.jsxs)(`label`,{className:`settings-api-key-field`,style:{display:`flex`,flexDirection:`column`,gap:6},children:[(0,j.jsxs)(`span`,{style:{display:`flex`,alignItems:`center`,gap:8},children:[(0,j.jsx)(`span`,{style:K,children:`API key`}),!r.rememberKey&&(0,j.jsx)(`span`,{className:`settings-session-only`,"aria-label":`Key is not saved to disk`,children:`session only`})]}),(0,j.jsx)(`input`,{style:Ue,type:`password`,value:A,onChange:e=>C(r.provider,`key`,e.target.value),placeholder:r.provider===`anthropic`?`sk-ant-…`:`paste your key`,spellCheck:!1,autoComplete:`off`}),(0,j.jsxs)(`span`,{style:{fontSize:12,color:`var(--text-muted)`},children:[`Kept in memory unless Remember can store encrypted ciphertext on this device. If browser encryption is unavailable, it stays session-only and is never saved as plaintext. Sent through this deployment to`,` `,O.label.split(` · `)[1]??O.label,` when used.`]})]}),(0,j.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8,fontSize:13},children:[(0,j.jsx)(`span`,{style:{width:8,height:8,borderRadius:8,background:ht,flex:`0 0 auto`},"aria-hidden":!0}),(0,j.jsx)(`span`,{role:`status`,"aria-live":`polite`,"aria-busy":B,children:gt}),(0,j.jsx)(`span`,{style:{color:`var(--text-muted)`},children:`·`}),(0,j.jsx)(`span`,{style:{color:`var(--text-muted)`},children:O.hint}),(0,j.jsx)(`button`,{onClick:()=>void mt(),disabled:B,style:{marginLeft:`auto`,background:`transparent`,border:`1px solid var(--line)`,borderRadius:8,padding:`4px 10px`,color:`var(--text-muted)`,cursor:B?`wait`:`pointer`,font:`inherit`,fontSize:12},title:`Re-check readiness`,children:`Recheck`})]}),O.needsKey&&(0,j.jsxs)(`label`,{style:{display:`flex`,alignItems:`center`,gap:8,fontSize:13},children:[(0,j.jsx)(`input`,{type:`checkbox`,checked:r.rememberKey,onChange:e=>D({rememberKey:e.target.checked})}),(0,j.jsx)(`span`,{children:`Remember key on this device`}),(0,j.jsx)(`span`,{style:{color:`var(--text-muted)`,fontSize:12},children:r.rememberKey?`encrypted on this device when supported; otherwise session-only — never saved as plaintext`:`kept in memory only — cleared on reload`})]}),(0,j.jsx)(ae,{}),(0,j.jsxs)(`section`,{"aria-labelledby":`ls-usage-heading`,children:[(0,j.jsx)(`h4`,{id:`ls-usage-heading`,className:`ls-usage-heading`,children:`This session’s tokens`}),(0,j.jsx)(we,{})]}),(0,j.jsxs)(`div`,{className:`settings-transfer-row`,"aria-busy":X,children:[(0,j.jsx)(`button`,{type:`button`,className:`settings-transfer-btn`,onClick:at,children:`Export settings`}),(0,j.jsx)(`button`,{type:`button`,className:`settings-transfer-btn`,disabled:X,onClick:()=>Pe.current?.click(),children:X?`Importing settings…`:`Import settings`}),(0,j.jsx)(`input`,{ref:Pe,type:`file`,accept:`application/json,.json`,disabled:X,style:{display:`none`},"aria-hidden":`true`,onChange:e=>void ot(e)}),(0,j.jsx)(`span`,{style:{fontSize:12,color:`var(--text-muted)`},children:`API and search keys are never included.`}),Xe&&(0,j.jsx)(`span`,{className:`settings-import-error`,role:`alert`,children:Xe}),Je&&(0,j.jsx)(`span`,{style:{fontSize:12,color:`var(--text-muted)`},role:`status`,children:Je})]})]}),L===`settings`&&(0,j.jsxs)(j.Fragment,{children:[(0,j.jsx)(ge,{}),(0,j.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:6},children:[(0,j.jsx)(`span`,{style:{fontSize:13,fontWeight:600},children:`Web search`}),(0,j.jsx)(Y,{label:`Web search`,value:r.searchMode,options:[{value:`off`,label:`Off`},{value:`realtime`,label:`Real-time`}],onPick:e=>D({searchMode:e})}),(0,j.jsx)(`span`,{style:{fontSize:12,color:`var(--text-muted)`},children:r.searchMode===`off`?`Answers from the model's own knowledge — no web calls.`:Ce.nativeWebSearch?`Grounds fresh asks in live results with citations when a question needs it.`:`This model has no built-in search, so Real-time won't ground anything right now. The four direct providers support it; on OpenRouter it depends on the selected model. Pick a search-capable model or leave this off.`})]}),(0,j.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:6},children:[(0,j.jsx)(`span`,{style:{fontSize:13,fontWeight:600},children:`Explanation level`}),(0,j.jsx)(Y,{label:`Explanation level`,value:r.explainLevel,options:[{value:`simple`,label:`Simple`,badge:`like I'm 5`},{value:`standard`,label:`Standard`,badge:`default`},{value:`deep`,label:`In-depth`,badge:`full rigor`}],onPick:e=>D({explainLevel:e})}),(0,j.jsx)(`span`,{style:{fontSize:12,color:`var(--text-muted)`},children:`How answers are written: Simple uses shorter sentences, everyday analogies, and fewer, more-labelled visuals; In-depth goes further — mechanisms, numbers, edge cases. You can also just say "explain it simpler" or "go deeper". (How long Mavéa thinks is Thinking time, below.)`})]}),(0,j.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:6},children:[(0,j.jsx)(`span`,{style:{fontSize:13,fontWeight:600},children:`Thinking time`}),(0,j.jsx)(Y,{label:`Thinking time`,value:r.quality,options:[{value:`fast`,label:`Fast`,badge:`snappiest`},{value:`balanced`,label:`Balanced`,badge:`default`},{value:`thorough`,label:`Thorough`,badge:`thinks longer`}],onPick:e=>D({quality:e})}),(0,j.jsx)(`span`,{style:{fontSize:12,color:`var(--text-muted)`},children:`How long Mavéa reasons before answering — speed versus care on hard questions. (How the answer is written is Explanation level, above.)`})]}),(0,j.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:6},children:[(0,j.jsx)(`span`,{style:{fontSize:13,fontWeight:600},children:`Visual richness`}),(0,j.jsx)(Y,{label:`Visual richness`,value:dt,options:[{value:`auto`,label:`Auto`,badge:`recommended`},{value:`full`,label:`Full`},{value:`lite`,label:`Lite`,badge:`older machines`}],onPick:e=>pt(e)}),(0,j.jsx)(`span`,{style:{fontSize:12,color:`var(--text-muted)`},children:`Auto matches the effects to your machine. Lite calms the animated face and drops the glass blur so Mavéa stays smooth on older or lower-powered computers.`})]}),(0,j.jsxs)(Be,{children:[(0,j.jsx)(J,{label:`Pen mode`,on:r.annotationsEnabled,onToggle:()=>{let e=!r.annotationsEnabled;D({annotationsEnabled:e,teachMode:e})},note:`Mavéa draws on the canvas as it speaks — circling numbers, striking out misconceptions, annotating every walkthrough stop. Muted walks also write margin notes beside the cards, so you keep the marked-up answer. Off: the pen stays quiet entirely.`}),r.searchMode!==`off`&&(0,j.jsxs)(`span`,{style:{fontSize:12,color:`var(--text-muted)`,display:`flex`,gap:6},children:[(0,j.jsx)(d.globe,{style:{width:14,height:14,flex:`0 0 auto`,marginTop:1}}),`You'll see "Searching…" whenever a search actually runs.`]}),(0,j.jsx)(J,{label:`Living answers`,on:r.worldEnabled,onToggle:()=>D({worldEnabled:!r.worldEnabled}),note:`When you ask why something happened, Mavéa offers the causal web behind the answer — every arrow shows its source, and follow-ups reshape the same web instead of starting over. Offering one is free: it is generated only when you open it, once, and then it's kept.`}),(0,j.jsx)(J,{label:`Keep a library`,on:r.libraryEnabled,onToggle:()=>D({libraryEnabled:!r.libraryEnabled}),note:`Saves the canvases you generate on this device so you can pick any one back up from the welcome screen. On by default; turn it off or clear the library any time.`}),N.length>0&&(0,j.jsx)(`div`,{style:{marginLeft:48},children:(0,j.jsx)(Ke,{label:`Clear library (${N.length})`,confirmLabel:`Confirm clear ${N.length===1?`saved canvas`:`${N.length} saved canvases`}`,onConfirm:x})})]})]}),L===`you`&&(0,j.jsxs)(j.Fragment,{children:[(0,j.jsx)(v,{kind:`stored-data`,from:`live`}),(0,j.jsx)(J,{label:`Remember me`,on:r.memoryEnabled,onToggle:()=>D({memoryEnabled:!r.memoryEnabled}),note:`Stored facts stay on this device. While Memory is enabled, relevant facts are included in future requests to your selected model provider. You can inspect, edit, export, or forget each stored fact below.`}),(0,j.jsxs)(`div`,{style:{marginLeft:48,display:`flex`,flexDirection:`column`,gap:8},children:[M.length===0?(0,j.jsx)(`span`,{style:{fontSize:12,color:`var(--text-muted)`},children:r.memoryEnabled?`Nothing remembered yet — Mavéa will build a concept wiki as you talk.`:`No stored concepts. Memory is off, so future conversations will not add any.`}):(0,j.jsxs)(j.Fragment,{children:[(0,j.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,justifyContent:`space-between`},children:[(0,j.jsx)(`div`,{role:`group`,"aria-label":`Memory view`,style:{display:`flex`,gap:2,padding:2,borderRadius:8,background:`var(--track)`,border:`1px solid var(--line)`,alignSelf:`flex-start`},children:[`list`,`graph`].map(e=>(0,j.jsx)(`button`,{type:`button`,"aria-pressed":I===e,onClick:()=>ke(e),style:{padding:`4px 12px`,borderRadius:6,border:`none`,background:I===e?`var(--surface-elevated)`:`transparent`,boxShadow:I===e?`0 1px 2px rgba(0,0,0,0.12)`:`none`,color:I===e?`var(--text-primary)`:`var(--text-muted)`,cursor:`pointer`,font:`inherit`,fontSize:12,fontWeight:I===e?600:400},children:e===`list`?`Concepts`:`Graph`},e))}),(0,j.jsx)(Ke,{label:`Forget all`,confirmLabel:`Confirm forget ${M.length===1?`1 concept`:`${M.length} concepts`}`,onConfirm:pe})]}),I===`graph`?(0,j.jsx)(Fe,{nodes:M}):(0,j.jsx)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:8,maxHeight:280,overflowY:`auto`},children:Oe(M).map(({namespace:e,nodes:t})=>(0,j.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:6},children:[(0,j.jsx)(`span`,{style:{fontFamily:`var(--font-data, inherit)`,fontSize:10,letterSpacing:`0.14em`,textTransform:`uppercase`,color:`var(--text-muted)`,margin:`2px 2px 0`},children:De(e)}),(0,j.jsx)(`ul`,{style:{listStyle:`none`,margin:0,padding:0,display:`flex`,flexDirection:`column`,gap:6},children:t.map(e=>(0,j.jsx)(Ee,{node:e,ago:ee(e.updatedAt)},e.id))})]},e))}),(0,j.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,justifyContent:`space-between`,gap:8},children:[(0,j.jsxs)(`span`,{style:{fontSize:11.5,color:`var(--text-muted)`},children:[M.length,` `,M.length===1?`concept`:`concepts`,` · `,Te,` KB on this device`]}),(0,j.jsx)(`button`,{type:`button`,onClick:()=>je(M),style:{background:`transparent`,border:`1px solid var(--line)`,borderRadius:8,padding:`3px 9px`,color:`var(--text-muted)`,cursor:`pointer`,font:`inherit`,fontSize:12},children:`Export memory`})]})]}),(0,j.jsxs)(`span`,{style:{fontSize:12,color:`var(--text-muted)`,display:`flex`,gap:6},children:[(0,j.jsx)(d.sparkle,{style:{width:14,height:14,flex:`0 0 auto`,marginTop:1}}),r.memoryEnabled?`Stored on this device, and sent to ${O.label.split(` · `)[1]??O.label} inside each prompt to personalize answers — the same path as your questions.`:`Memory is off. Existing concepts stay on this device until you forget them, but they are not included in prompts.`]})]}),(0,j.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:8},children:[(0,j.jsx)(`span`,{style:K,children:`Voice`}),(0,j.jsx)(`span`,{style:{fontSize:12,color:`var(--text-muted)`},children:`Microphone audio goes through this deployment to its configured Whisper endpoint; the default is loopback-only. Spoken replies use its configured Kokoro endpoint. Mavéa does not fall back to a browser-vendor speech service.`}),(0,j.jsx)(`div`,{style:{display:`flex`,gap:12,alignItems:`center`},children:(0,j.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:4,flex:1},children:[(0,j.jsx)(`span`,{style:{fontSize:11,color:`var(--text-muted)`},children:`Mavéa`}),(0,j.jsxs)(`div`,{style:{display:`flex`,gap:6},children:[(0,j.jsx)(`div`,{style:{flex:1},children:(0,j.jsx)(_e,{ariaLabel:`Mavéa's voice`,value:lt,onChange:e=>{ut(e),Ge(e);let t=m(e);t&&oe(t)},options:_.map(e=>({value:e.id,label:e.label,note:e.tone}))})}),(0,j.jsx)(`button`,{type:`button`,onClick:()=>{let e=m(lt);e&&oe(e)},style:{...Ue,width:`auto`,padding:`6px 10px`,cursor:`pointer`,fontSize:11},title:`Preview voice`,"aria-label":`Preview Mavéa's voice`,children:`▶`})]})]})}),(0,j.jsx)(de,{})]}),he.total>0&&(0,j.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:6},children:[(0,j.jsx)(`span`,{style:K,children:`Flashcards`}),(0,j.jsx)(Y,{label:`Flashcards`,value:g,options:[{value:`collection`,label:`Just save them`},{value:`spaced`,label:`Help me remember`}],onPick:e=>ve(e)}),(0,j.jsx)(`span`,{style:{fontSize:12,color:`var(--text-muted)`},children:g===`collection`?`A plain pile you flip through when you feel like it. No dates, no counts, nothing waiting for you.`:`Each card comes back just before you'd forget it. New ones join ${me} a day, so a big pile never lands at once.`})]}),(0,j.jsxs)(Be,{defaultOpen:n,children:[(0,j.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:6},children:[(0,j.jsxs)(`span`,{style:{fontSize:11,color:`var(--text-muted)`},children:[`Hold to talk key `,(0,j.jsx)(`span`,{style:{opacity:.6},children:`(Hold mode only)`})]}),(0,j.jsx)(`div`,{style:{display:`flex`,gap:6},children:[{key:`Alt`,label:`Alt`},{key:`Control`,label:`Ctrl`},{key:`Shift`,label:`Shift`}].map(({key:e,label:t})=>{let n=(r.pttKey||`Alt`)===e;return(0,j.jsx)(`button`,{type:`button`,onClick:()=>D({pttKey:e}),style:Ve(n),"aria-pressed":n,title:`Hold ${t} to talk (shows as ${re(e,r.pttSide)} in the hint)`,children:t},e)})}),(0,j.jsx)(`div`,{style:{display:`flex`,gap:6},children:[{side:`any`,label:`Either side`},{side:`left`,label:`Left`},{side:`right`,label:`Right`}].map(({side:e,label:t})=>{let n=(r.pttSide||`any`)===e;return(0,j.jsx)(`button`,{type:`button`,onClick:()=>D({pttSide:e}),style:Ve(n),"aria-pressed":n,title:e===`any`?`Either side of the key talks`:`Only the ${t.toLowerCase()} key talks`,children:t},e)})})]}),(0,j.jsx)(J,{label:`Morning brief`,on:r.morningBrief,onToggle:()=>D({morningBrief:!r.morningBrief}),note:`On the first open of the day, Mavéa opens with a quick read on the things you track.`}),(0,j.jsx)(J,{label:`Save flashcards automatically`,on:r.autoSaveFlashcards,onToggle:()=>D({autoSaveFlashcards:!r.autoSaveFlashcards}),note:`When an answer already contains flashcards, keep them without asking. Off by default — the usual way is tapping “Cards” on the answer you want. Every save shows a pill with Undo, so it's never silent.`}),(0,j.jsx)(J,{label:`Quiet hours`,on:P,onToggle:()=>{ue(!P),F(!P)},note:`10 PM – 6 AM: the screen dims and voice output is reduced. Audibility still depends on your device volume and surroundings.`})]})]}),L===`data`&&(0,j.jsxs)(j.Fragment,{children:[(0,j.jsx)(v,{kind:`stored-data`,from:`live`}),(0,j.jsxs)(`p`,{style:{fontSize:13,lineHeight:1.5,color:`var(--text-secondary)`,margin:0},children:[`Export a backup, or import one you saved. `,(0,j.jsx)(`strong`,{children:`Saved on this browser.`}),` Some content uses device-bound browser encryption; preferences and other records may use ordinary browser storage. A raw storage copy is not a portable backup — to move data to incognito, another port, browser, or computer, export it here and import it there.`]}),(0,j.jsxs)(`ul`,{style:{margin:0,paddingLeft:18,fontSize:12,lineHeight:1.6,color:`var(--text-muted)`},children:[(0,j.jsx)(`li`,{children:`Includes supported dashboards, memory, flashcards, saved canvases, map records, courses, and settings.`}),(0,j.jsxs)(`li`,{children:[`Provider/search keys and GitHub tokens are `,(0,j.jsx)(`strong`,{children:`never included`}),`. Active turn history, refresh ledgers, caches, Ripple tracking, and device-only appearance, audio, and performance preferences are also excluded.`]}),(0,j.jsxs)(`li`,{children:[`Importing `,(0,j.jsx)(`strong`,{children:`merges`}),` recognized data. It does not clear a store first, but bounded stores can evict older records when an import exceeds their capacity.`]}),(0,j.jsx)(`li`,{children:`The file is plain, unencrypted JSON: keep it somewhere safe, import only files you trust.`})]}),(0,j.jsxs)(`div`,{className:`settings-transfer-row`,"aria-busy":Q!==null,children:[(0,j.jsx)(`button`,{type:`button`,className:`settings-transfer-btn`,disabled:Q!==null,onClick:()=>void st(),children:Q===`export`?`Exporting backup…`:`Export a backup`}),(0,j.jsx)(`button`,{type:`button`,className:`settings-transfer-btn`,disabled:Q!==null,onClick:()=>Qe.current?.click(),children:Q===`import`?`Importing backup…`:`Import a backup`}),(0,j.jsx)(`input`,{ref:Qe,type:`file`,accept:`application/json,.json`,disabled:Q!==null,style:{display:`none`},"aria-hidden":`true`,onChange:e=>void ct(e)}),tt&&(0,j.jsx)(`span`,{style:{fontSize:12,color:`var(--text-muted)`},role:`status`,children:tt}),nt&&(0,j.jsx)(`span`,{className:`settings-import-error`,role:`alert`,children:nt})]})]}),(0,j.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,flexWrap:`wrap`,gap:`6px 12px`,paddingTop:14,borderTop:`1px solid var(--line-soft)`,color:`var(--text-muted)`,fontSize:10.5},children:[(0,j.jsx)(`a`,{href:`#/terms?from=live`,style:{color:`inherit`},children:`Terms`}),(0,j.jsx)(`a`,{href:`#/privacy?from=live`,style:{color:`inherit`},children:`Privacy`}),(0,j.jsx)(`a`,{href:`#/legal?from=live`,style:{color:`inherit`},children:`Important information`}),(0,j.jsx)(`a`,{href:l(`LICENSE.txt`),target:`_blank`,rel:`noreferrer noopener`,style:{color:`inherit`},children:`License`}),(0,j.jsx)(`button`,{type:`button`,onClick:c,style:{marginLeft:`auto`,padding:0,border:0,color:`inherit`,background:`transparent`,font:`inherit`,textDecoration:`underline`,textUnderlineOffset:3,cursor:`pointer`},children:`Review legal acknowledgement now`})]})]})]})}export{X as LiveSettings};
6
+ `):``}function je(e){let t=Ae(e);if(t)try{let e=new Blob([t],{type:`text/markdown;charset=utf-8`}),n=URL.createObjectURL(e),r=document.createElement(`a`);r.href=n,r.download=`mavea-memory.md`,r.click(),URL.revokeObjectURL(n)}catch{}}var R=420,z=300,B=6,V=[`var(--presence)`,`var(--insight)`,`var(--warning)`,`var(--presence-soft)`,`var(--insight-soft)`,`var(--warning-soft)`],Me={profile:V[0],preferences:V[3],topics:V[1],threads:V[4],projects:V[2]};function Ne(e){return Me[e]??V[H(e)%V.length]}function H(e){let t=0;for(let n=0;n<e.length;n++)t=Math.imul(31,t)+e.charCodeAt(n)|0;return Math.abs(t)}function U(e){let t=[],n=new Set,r=(e,t)=>[e,t].sort().join(`\0`),i=e.filter(e=>e.updatedAt>0).sort((e,t)=>e.updatedAt-t.updatedAt);for(let e=0;e<i.length;e++)for(let a=e+1;a<i.length&&i[a].updatedAt-i[e].updatedAt<200;a++){let o=r(i[e].concept,i[a].concept);n.has(o)||(n.add(o),t.push({a:i[e].concept,b:i[a].concept,cooccurred:!0}))}let a=new Set(e.map(e=>e.concept));for(let i of e){let e=i.concept.split(`.`)[0];if(e!==i.concept&&a.has(e)){let a=r(i.concept,e);n.has(a)||(n.add(a),t.push({a:i.concept,b:e,cooccurred:!1}))}}return t}function Pe(e,t){let n=[...e].sort((e,t)=>e.concept.localeCompare(t.concept)),r=new Map;n.forEach((e,t)=>{let i=t/Math.max(1,n.length)*Math.PI*2,a=Math.min(R,z)*.3;r.set(e.concept,{x:R/2+Math.cos(i)*a,y:z/2+Math.sin(i)*a,vx:0,vy:0})});let i=[...r.values()],a=.82;for(let e=0;e<80;e++){let o=1-e/80,s=.08*Math.sqrt(R*z/Math.max(1,n.length));for(let e=0;e<i.length;e++){let t=i[e];for(let n=e+1;n<i.length;n++){let e=i[n],r=e.x-t.x||.01,a=e.y-t.y||.01,c=Math.hypot(r,a)||.01,l=s*s/c*1.5;t.vx-=r/c*l*o,t.vy-=a/c*l*o,e.vx+=r/c*l*o,e.vy+=a/c*l*o}}for(let e of t){let t=r.get(e.a),n=r.get(e.b);if(!t||!n)continue;let i=n.x-t.x,a=n.y-t.y,s=Math.hypot(i,a)||.01,c=(s-(e.cooccurred?85:120))*.05*o;t.vx+=i/s*c,t.vy+=a/s*c,n.vx-=i/s*c,n.vy-=a/s*c}for(let e of r.values())e.vx+=(R/2-e.x)*.006*o,e.vy+=(z/2-e.y)*.006*o;let c=0;for(let e of i){let t=Math.abs(e.vx)+Math.abs(e.vy);t>c&&(c=t),e.x=Math.max(20,Math.min(400,e.x+e.vx)),e.y=Math.max(20,Math.min(280,e.y+e.vy)),e.vx*=a,e.vy*=a}if(c<.4)break}let o=new Map;for(let[e,t]of r)o.set(e,{x:t.x,y:t.y});return o}function Fe(e){let t=(0,A.c)(39),{nodes:n}=e,[r,i]=(0,k.useState)(null),[a,o]=(0,k.useState)(null),s;t[0]===n?s=t[1]:(s=U(n),t[0]=n,t[1]=s);let c=s,l;t[2]!==c||t[3]!==n?(l=Pe(n,c),t[2]=c,t[3]=n,t[4]=l):l=t[4];let u=l,d;t[5]===c?d=t[6]:(d=c.filter(W),t[5]=c,t[6]=d);let f=d.length,p;t[7]!==a||t[8]!==n?(p=a?n.find(e=>e.concept===a):null,t[7]=a,t[8]=n,t[9]=p):p=t[9];let m=p;if(n.length===0){let e;return t[10]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,j.jsx)(`div`,{className:`mg-empty`,children:`Your knowledge graph appears here as you talk — start a conversation to add concepts.`}),t[10]=e):e=t[10],e}let h;if(t[11]!==c||t[12]!==r||t[13]!==u){let e;t[15]!==r||t[16]!==u?(e=(e,t)=>{let n=u.get(e.a),i=u.get(e.b);if(!n||!i)return null;let a=r===e.a||r===e.b,o=e.cooccurred?.55:.2;return(0,j.jsx)(`line`,{x1:n.x,y1:n.y,x2:i.x,y2:i.y,className:`mg-edge`+(e.cooccurred?` mg-edge--strong`:``),style:{opacity:r?a?o+.3:.05:o}},t)},t[15]=r,t[16]=u,t[17]=e):e=t[17],h=c.map(e),t[11]=c,t[12]=r,t[13]=u,t[14]=h}else h=t[14];let g;if(t[18]!==a||t[19]!==r||t[20]!==n||t[21]!==u){let e;t[23]!==a||t[24]!==r||t[25]!==u?(e=e=>{let t=u.get(e.concept);if(!t)return null;let n=Ne(I(e)),s=Math.max(7,Math.min(18,7+e.body.length/400*11)),c=r===e.concept,l=a===e.concept,d=e.concept.split(`.`).pop()??e.concept,f=O(e.source),p=e.kind===`procedural`,m=l?1:f?.82:.42,h=p||l||!f?n:`none`,g=p?2:l?1.5:+!f;return(0,j.jsxs)(`g`,{className:`mg-node`,transform:`translate(${t.x},${t.y})`,onMouseEnter:()=>i(e.concept),onMouseLeave:()=>i(null),onClick:()=>o(l?null:e.concept),style:{opacity:r&&!c?.3:1},children:[(0,j.jsx)(`title`,{children:`${e.concept} · ${f?`confirmed`:`unconfirmed`}${p?` · lesson`:``}`}),c&&(0,j.jsx)(`circle`,{r:s+5,fill:n,style:{opacity:.15},"aria-hidden":`true`}),(0,j.jsx)(`circle`,{r:s,fill:n,style:{opacity:m},stroke:h,strokeWidth:g,strokeDasharray:f?void 0:`3 2`,strokeOpacity:.5}),(0,j.jsx)(`text`,{className:`mg-label`,y:s+13,textAnchor:`middle`,style:{fill:n,opacity:c||l?1:.65},children:d})]},e.concept)},t[23]=a,t[24]=r,t[25]=u,t[26]=e):e=t[26],g=n.map(e),t[18]=a,t[19]=r,t[20]=n,t[21]=u,t[22]=g}else g=t[22];let _;t[27]!==h||t[28]!==g?(_=(0,j.jsxs)(`svg`,{className:`mg-svg`,viewBox:`0 0 ${R} ${z}`,width:`100%`,height:`auto`,"aria-label":`Memory concept graph`,children:[h,g]}),t[27]=h,t[28]=g,t[29]=_):_=t[29];let v;t[30]===m?v=t[31]:(v=m&&(0,j.jsxs)(`div`,{className:`mg-detail`,onClick:()=>o(null),title:`Click to close`,role:`button`,tabIndex:0,onKeyDown:e=>e.key===`Enter`&&o(null),children:[(0,j.jsx)(`span`,{className:`mg-detail-concept`,children:m.concept}),(0,j.jsx)(`p`,{className:`mg-detail-body`,children:m.body})]}),t[30]=m,t[31]=v);let y;t[32]!==n.length||t[33]!==f?(y=n.length<B?(0,j.jsxs)(`div`,{className:`mg-warmup`,children:[(0,j.jsx)(`div`,{className:`mg-warmup-track`,children:(0,j.jsx)(`div`,{className:`mg-warmup-fill`,style:{width:`${n.length/B*100}%`}})}),(0,j.jsxs)(`span`,{className:`mg-warmup-label`,children:[B-n.length,` more`,` `,B-n.length===1?`concept`:`concepts`,` until your map fills in`]})]}):(0,j.jsxs)(`p`,{className:`mg-foot`,children:[f,` connection`,f===1?``:`s`,` across `,n.length,` `,`concepts`]}),t[32]=n.length,t[33]=f,t[34]=y):y=t[34];let b;return t[35]!==_||t[36]!==v||t[37]!==y?(b=(0,j.jsxs)(`div`,{className:`mg-wrap`,children:[_,v,y]}),t[35]=_,t[36]=v,t[37]=y,t[38]=b):b=t[38],b}function W(e){return e.cooccurred}r();var Ie=1e6;function Le(e){return e instanceof DOMException&&e.name===`AbortError`}function Re(e){return e===`provider-api-keys`?`provider API keys`:e===`search-api-keys`?`search API keys`:`GitHub tokens`}function G(e,t,n=`${t}s`){return`${e} ${e===1?t:n}`}function ze(e,t){return new Promise((n,r)=>{let i=new FileReader,a=()=>t.removeEventListener(`abort`,s),o=e=>{a(),i.onload=null,i.onerror=null,i.onabort=null,e()},s=()=>{i.readyState===FileReader.LOADING?i.abort():o(()=>r(new DOMException(`Import cancelled`,`AbortError`)))};i.onload=()=>o(()=>typeof i.result==`string`?n(i.result):r(Error(`The selected file could not be read as text.`))),i.onerror=()=>o(()=>r(i.error??Error(`The selected file could not be read.`))),i.onabort=()=>o(()=>r(new DOMException(`Import cancelled`,`AbortError`))),t.addEventListener(`abort`,s,{once:!0}),t.aborted?s():i.readAsText(e)})}function Be({children:e,label:t=`More options`,defaultOpen:n=!1}){let[r,i]=(0,k.useState)(n);return(0,j.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:12},children:[(0,j.jsxs)(`button`,{type:`button`,onClick:()=>i(e=>!e),"aria-expanded":r,style:{display:`flex`,alignItems:`center`,gap:6,alignSelf:`flex-start`,padding:`4px 2px`,border:`none`,background:`transparent`,color:`var(--text-muted)`,cursor:`pointer`,font:`inherit`,fontSize:12,fontWeight:600,letterSpacing:`0.02em`},children:[(0,j.jsx)(`span`,{"aria-hidden":`true`,style:{display:`inline-block`,transition:`transform 150ms ease`,transform:r?`rotate(90deg)`:`none`,fontSize:10},children:`▶`}),t]}),r&&(0,j.jsx)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:12,paddingLeft:10,borderLeft:`2px solid var(--line)`},children:e})]})}function Ve(e){return{padding:`5px 14px`,borderRadius:8,border:`1px solid ${e?`var(--presence)`:`var(--line)`}`,background:e?`color-mix(in oklab, var(--presence) 12%, var(--surface-elevated))`:`var(--surface-default)`,color:e?`var(--presence)`:`var(--text-secondary)`,cursor:`pointer`,font:`inherit`,fontSize:12,fontWeight:e?600:400}}var He={background:`var(--surface-elevated)`,border:`1px solid var(--line)`,borderRadius:16,padding:16,display:`flex`,flexDirection:`column`,gap:12,width:`min(460px, calc(100vw - 32px))`,boxShadow:`var(--shadow-modal)`},K={fontSize:12,color:`var(--text-muted)`,textTransform:`uppercase`,letterSpacing:`0.06em`},Ue={background:`var(--surface-default)`,border:`1px solid var(--line)`,borderRadius:10,padding:`9px 11px`,color:`var(--text-primary)`,font:`inherit`,width:`100%`};function We(e,t){try{return localStorage.getItem(e)||t}catch{return t}}function Ge(e){let t=m(e);if(t){g(`mavea`,t.kokoro);try{localStorage.setItem(h,e)}catch{}}}var q=[`model`,`settings`,`you`,`data`];function J(e){let t=(0,A.c)(27),{label:n,on:r,onToggle:i,note:a}=e,o=(0,k.useId)(),s;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(s={display:`flex`,alignItems:`flex-start`,gap:10,cursor:`pointer`},t[0]=s):s=t[0];let c=r?`var(--presence)`:`var(--track)`,l;t[1]===c?l=t[2]:(l={flex:`0 0 auto`,width:38,height:22,borderRadius:999,border:`1px solid var(--line-strong)`,background:c,position:`relative`,cursor:`pointer`,transition:`background 140ms ease`,marginTop:1},t[1]=c,t[2]=l);let u=r?18:2,d=r?`#fff`:`var(--text-muted)`,f;t[3]!==u||t[4]!==d?(f=(0,j.jsx)(`span`,{style:{position:`absolute`,top:2,left:u,width:16,height:16,borderRadius:`50%`,background:d,transition:`left 140ms ease, background 140ms ease`}}),t[3]=u,t[4]=d,t[5]=f):f=t[5];let p;t[6]!==n||t[7]!==o||t[8]!==r||t[9]!==i||t[10]!==l||t[11]!==f?(p=(0,j.jsx)(`button`,{type:`button`,role:`switch`,"aria-checked":r,"aria-label":n,"aria-describedby":o,onClick:i,style:l,children:f}),t[6]=n,t[7]=o,t[8]=r,t[9]=i,t[10]=l,t[11]=f,t[12]=p):p=t[12];let m,h;t[13]===Symbol.for(`react.memo_cache_sentinel`)?(m={display:`flex`,flexDirection:`column`,gap:2},h={fontSize:13},t[13]=m,t[14]=h):(m=t[13],h=t[14]);let g;t[15]===n?g=t[16]:(g=(0,j.jsx)(`span`,{style:h,children:n}),t[15]=n,t[16]=g);let _;t[17]===Symbol.for(`react.memo_cache_sentinel`)?(_={fontSize:12,color:`var(--text-muted)`},t[17]=_):_=t[17];let v;t[18]!==a||t[19]!==o?(v=(0,j.jsx)(`span`,{id:o,style:_,children:a}),t[18]=a,t[19]=o,t[20]=v):v=t[20];let y;t[21]!==g||t[22]!==v?(y=(0,j.jsxs)(`div`,{style:m,children:[g,v]}),t[21]=g,t[22]=v,t[23]=y):y=t[23];let b;return t[24]!==y||t[25]!==p?(b=(0,j.jsxs)(`label`,{style:s,children:[p,y]}),t[24]=y,t[25]=p,t[26]=b):b=t[26],b}function Ke(e){let t=(0,A.c)(14),{label:n,confirmLabel:r,onConfirm:i}=e,[a,o]=(0,k.useState)(!1),s,c;t[0]===a?(s=t[1],c=t[2]):(s=()=>{if(!a)return;let e=window.setTimeout(()=>o(!1),5e3);return()=>window.clearTimeout(e)},c=[a],t[0]=a,t[1]=s,t[2]=c),(0,k.useEffect)(s,c);let l;t[3]!==a||t[4]!==i?(l=()=>{if(!a){o(!0);return}o(!1),i()},t[3]=a,t[4]=i,t[5]=l):l=t[5];let u=a?`color-mix(in oklab, var(--warning) 10%, transparent)`:`transparent`,d=`1px solid ${a?`var(--warning)`:`var(--line)`}`,f=a?`var(--warning)`:`var(--text-muted)`,p;t[6]!==u||t[7]!==d||t[8]!==f?(p={background:u,border:d,borderRadius:8,padding:`3px 9px`,color:f,cursor:`pointer`,font:`inherit`,fontSize:12},t[6]=u,t[7]=d,t[8]=f,t[9]=p):p=t[9];let m=a?r:n,h;return t[10]!==l||t[11]!==p||t[12]!==m?(h=(0,j.jsx)(`button`,{type:`button`,onClick:l,style:p,children:m}),t[10]=l,t[11]=p,t[12]=m,t[13]=h):h=t[13],h}function Y(e){let t=(0,A.c)(24),{value:n,options:r,onPick:i,label:a}=e,o;if(t[0]!==r||t[1]!==n){let e;t[3]===n?e=t[4]:(e=e=>e.value===n,t[3]=n,t[4]=e),o=r.findIndex(e),t[0]=r,t[1]=n,t[2]=o}else o=t[2];let s=Math.max(0,o),c;t[5]!==s||t[6]!==i||t[7]!==r?(c=e=>{let t=e.key===`ArrowRight`||e.key===`ArrowDown`?1:e.key===`ArrowLeft`||e.key===`ArrowUp`?-1:0;if(!t)return;e.preventDefault();let n=(s+t+r.length)%r.length;i(r[n].value),(e.currentTarget.parentElement?.children[n])?.focus()},t[5]=s,t[6]=i,t[7]=r,t[8]=c):c=t[8];let l=c,u;t[9]===Symbol.for(`react.memo_cache_sentinel`)?(u={display:`flex`,gap:4,padding:3,borderRadius:10,background:`var(--track)`,border:`1px solid var(--line)`},t[9]=u):u=t[9];let d;if(t[10]!==s||t[11]!==l||t[12]!==i||t[13]!==r||t[14]!==n){let e;t[16]!==s||t[17]!==l||t[18]!==i||t[19]!==n?(e=(e,t)=>{let r=e.value===n;return(0,j.jsxs)(`button`,{type:`button`,role:`radio`,"aria-checked":r,tabIndex:t===s?0:-1,onClick:()=>i(e.value),onKeyDown:l,style:{flex:1,display:`flex`,flexDirection:`column`,alignItems:`center`,gap:1,padding:`6px 8px`,borderRadius:8,border:`none`,cursor:`pointer`,background:r?`var(--surface-elevated)`:`transparent`,boxShadow:r?`0 1px 2px rgba(0,0,0,0.12)`:`none`,color:`inherit`,font:`inherit`},children:[(0,j.jsx)(`span`,{style:{fontSize:13,fontWeight:r?600:400},children:e.label}),e.badge&&(0,j.jsx)(`span`,{style:{fontSize:10.5,color:`var(--text-muted)`},children:e.badge})]},e.value)},t[16]=s,t[17]=l,t[18]=i,t[19]=n,t[20]=e):e=t[20],d=r.map(e),t[10]=s,t[11]=l,t[12]=i,t[13]=r,t[14]=n,t[15]=d}else d=t[15];let f;return t[21]!==a||t[22]!==d?(f=(0,j.jsx)(`div`,{role:`radiogroup`,"aria-label":a,style:u,children:d}),t[21]=a,t[22]=d,t[23]=f):f=t[23],f}function X({onClose:e,initialTab:t,initialAdvancedYouOpen:n}){let[r]=w(),{style:g,newPerDay:me}=ye(),he=be(),O=y(r.provider),xe=r.models[r.provider]??``,Se=xe||O.defaultModel,A=r.keys[r.provider]??``,Ce=S(r.provider).capabilities,M=ie(),Te=(0,k.useMemo)(()=>Math.max(1,Math.round(JSON.stringify(M).length/1024)),[M]),N=se(),[P,F]=(0,k.useState)(ce),[I,ke]=(0,k.useState)(`list`),[L,Ae]=(0,k.useState)(t??`model`),[R,z]=(0,k.useState)(null),[B,V]=(0,k.useState)(!1),[Me,Ne]=(0,k.useState)(!1),H=(0,k.useRef)(0),U=(0,k.useRef)(!1),Pe=(0,k.useRef)(null),W=(0,k.useRef)(null),[X,qe]=(0,k.useState)(!1),[Je,Ye]=(0,k.useState)(null),[Xe,Ze]=(0,k.useState)(null),Qe=(0,k.useRef)(null),$e=(0,k.useRef)(null),Z=(0,k.useRef)(null),[Q,et]=(0,k.useState)(null),[tt,$]=(0,k.useState)(null),[nt,rt]=(0,k.useState)(null),it=(0,k.useRef)(null);f(it,{onEscape:e}),(0,k.useEffect)(()=>(U.current=!0,()=>{U.current=!1,H.current+=1,W.current?.abort(),$e.current?.abort(),fe()}),[]);function at(){let e=te(),t=new Blob([e],{type:`application/json`}),n=URL.createObjectURL(t),r=document.createElement(`a`);r.href=n,r.download=`mavea-live-v2.json`,r.click(),URL.revokeObjectURL(n)}async function ot(e){let t=e.target.files?.[0];if(e.target.value=``,!t||W.current)return;if(Ze(null),Ye(null),t.size>Ie){Ze(`That file is too large to be a Mavéa settings file.`);return}let n=new AbortController;W.current=n,qe(!0);try{let e=await ze(t,n.signal),r=T(e);if(U.current){let e=r.appliedFields.length?`Imported ${G(r.appliedFields.length,`setting`)}.`:`No recognized settings found.`,t=r.credentialsIgnored.length?` Ignored ${r.credentialsIgnored.map(Re).join(`, `)}; credentials are never imported.`:` Credentials were not imported.`;Ye(`${e}${t}`)}}catch(e){U.current&&!Le(e)&&Ze(e instanceof Error?e.message:`Import failed.`)}finally{W.current===n&&(W.current=null,U.current&&qe(!1))}}async function st(){if(!Z.current){Z.current=`export`,et(`export`),rt(null),$(null);try{let{downloadBackup:e}=await i(async()=>{let{downloadBackup:e}=await import(`./backup-AymOkasb.js`);return{downloadBackup:e}},__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]));await e(),U.current&&$(`Backup downloaded.`)}catch{U.current&&rt(`Couldn’t build the backup — please try again.`)}finally{Z.current=null,U.current&&et(null)}}}async function ct(e){let t=e.target.files?.[0];if(e.target.value=``,!t||Z.current)return;Z.current=`import`,et(`import`),rt(null),$(null);let n=new AbortController;$e.current=n;try{let{importBackup:e,MAX_BACKUP_BYTES:r}=await i(async()=>{let{importBackup:e,MAX_BACKUP_BYTES:t}=await import(`./backup-AymOkasb.js`);return{importBackup:e,MAX_BACKUP_BYTES:t}},__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]));if(t.size>r)throw Error(`That file is too large to be a Mavéa backup.`);let a=await e(await ze(t,n.signal)),o=[[a.dashboards,`dashboard`],[a.memory,`memory item`],[a.flashcards,`card`],[a.library,`saved canvas`,`saved canvases`],[a.atlas,`map record`],[a.courses,`course`]].filter(([e])=>e>0).map(([e,t,n])=>`${e} ${e===1?t:n??`${t}s`}`);if(U.current){let e=Object.values(a.sections),t=e.reduce((e,t)=>e+t.rejected,0),n=e.reduce((e,t)=>e+t.conflicts,0),r=e.reduce((e,t)=>e+t.evictedExisting,0),i=[o.length?`Merged ${o.join(`, `)}.`:`Nothing new to merge from that file.`];a.settingsApplied&&i.push(`Recognized settings were applied.`),n&&i.push(`${G(n,`incoming ID`)} matched records already present.`),t&&i.push(`${G(t,`entry`,`entries`)} ${t===1?`was`:`were`} rejected as invalid.`),r&&i.push(`${G(r,`existing record`)} ${r===1?`was`:`were`} evicted by bounded store capacity.`),a.credentialsIgnored.length&&i.push(`Ignored ${a.credentialsIgnored.map(Re).join(`, `)}; credentials are never imported.`),a.versionAhead&&i.push(`This backup uses a newer format; only recognized data was merged.`),i.push(`Changes are visible now; persistence is best-effort because browser storage writes cannot be verified.`),$(i.join(` `))}}catch(e){U.current&&!Le(e)&&rt(e instanceof Error?e.message:`Import failed.`)}finally{$e.current===n&&($e.current=null),Z.current=null,U.current&&et(null)}}let[lt,ut]=(0,k.useState)(()=>We(h,p)),[dt,ft]=(0,k.useState)(()=>s()),pt=(0,k.useCallback)(e=>{ft(e),u(e),o(a())},[]),mt=(0,k.useCallback)(async()=>{let e=++H.current;V(!0),Ne(!1);try{let{checkLiveReady:t}=await i(async()=>{let{checkLiveReady:e}=await import(`./ready-_sg3IJkE.js`).then(e=>e.n);return{checkLiveReady:e}},__vite__mapDeps([33,3,26,25,5,24,27,28])),n=await t(ne(E()),{tts:!1});e===H.current&&z({llm:n.llm,model:n.model,statusCode:n.statusCode})}catch{e===H.current&&(z(null),Ne(!0))}finally{e===H.current&&V(!1)}},[]);(0,k.useEffect)(()=>{if(O.needsKey&&!A){z(null);return}let e=setTimeout(()=>void mt(),400);return()=>clearTimeout(e)},[r.provider,Se,A,mt,O.needsKey]);let ht=B?`var(--text-muted)`:R?.llm&&R?.model?`var(--insight)`:`var(--warning)`,gt=B?`Checking…`:Me?`Couldn’t check readiness — try again`:R?.llm&&R?.model?`Ready`:R?.llm?`Reachable — model not found`:O.needsKey&&!A?`Add your API key`:R?.statusCode===401||R?.statusCode===400?`Invalid API key`:R?.statusCode===403?`Key lacks permission`:R?.statusCode===404?`Model not found`:R?.statusCode===void 0?`Not reachable`:`Error ${R.statusCode}`;return(0,j.jsxs)(`div`,{ref:it,style:He,role:`dialog`,"aria-modal":`true`,"aria-label":`Mavéa settings`,children:[(0,j.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,justifyContent:`space-between`},children:[(0,j.jsxs)(`span`,{style:{fontWeight:700,fontSize:15,display:`flex`,alignItems:`center`,gap:8},children:[(0,j.jsx)(d.sparkle,{style:{width:16,height:16,flex:`0 0 auto`,color:`var(--presence)`}}),`Settings`]}),e&&(0,j.jsx)(`button`,{onClick:e,title:`Close`,"aria-label":`Close settings`,style:{display:`inline-grid`,placeItems:`center`,width:28,height:28,padding:0,border:`none`,borderRadius:6,background:`transparent`,color:`var(--text-secondary)`,cursor:`pointer`,flexShrink:0},children:(0,j.jsx)(d.x,{style:{width:16,height:16}})})]}),(0,j.jsx)(`div`,{className:`ls-tabs`,role:`tablist`,"aria-label":`Settings sections`,children:q.map((e,t)=>(0,j.jsx)(`button`,{type:`button`,role:`tab`,id:`ls-tab-${e}`,"aria-selected":L===e,"aria-controls":`ls-panel-${e}`,tabIndex:L===e?0:-1,className:`ls-tab${L===e?` active`:``}`,onClick:()=>Ae(e),onKeyDown:e=>{let n=e.key===`ArrowRight`?1:e.key===`ArrowLeft`?-1:0;if(!n)return;e.preventDefault();let r=q[(t+n+q.length)%q.length];Ae(r),document.getElementById(`ls-tab-${r}`)?.focus()},children:e===`model`?`Model`:e===`settings`?`Settings`:e===`you`?`You`:`Your data`},e))}),(0,j.jsxs)(`div`,{className:`ls-body`,role:`tabpanel`,id:`ls-panel-${L}`,"aria-labelledby":`ls-tab-${L}`,children:[L===`model`&&(0,j.jsxs)(`div`,{className:`settings-model-connect`,children:[(0,j.jsx)(`div`,{className:`settings-provider-picker`,style:{display:`flex`,flexWrap:`wrap`,gap:8},"aria-label":`Model providers`,children:b.map(e=>{let t=e.id===r.provider;return(0,j.jsx)(`button`,{onClick:()=>D({provider:e.id}),style:{...Ue,width:`auto`,cursor:`pointer`,borderColor:t?`var(--presence)`:`var(--line)`,boxShadow:t?`0 0 0 1px var(--presence)`:`none`,opacity:t?1:.7},"aria-pressed":t,children:e.label},e.id)})}),(0,j.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:6},children:[(0,j.jsx)(`span`,{style:K,children:`Model`}),(0,j.jsx)(le,{provider:r.provider,value:xe,onChange:e=>C(r.provider,`model`,e)},r.provider)]}),O.needsKey&&(0,j.jsxs)(`label`,{className:`settings-api-key-field`,style:{display:`flex`,flexDirection:`column`,gap:6},children:[(0,j.jsxs)(`span`,{style:{display:`flex`,alignItems:`center`,gap:8},children:[(0,j.jsx)(`span`,{style:K,children:`API key`}),!r.rememberKey&&(0,j.jsx)(`span`,{className:`settings-session-only`,"aria-label":`Key is not saved to disk`,children:`session only`})]}),(0,j.jsx)(`input`,{style:Ue,type:`password`,value:A,onChange:e=>C(r.provider,`key`,e.target.value),placeholder:r.provider===`anthropic`?`sk-ant-…`:`paste your key`,spellCheck:!1,autoComplete:`off`}),(0,j.jsxs)(`span`,{style:{fontSize:12,color:`var(--text-muted)`},children:[`Kept in memory unless Remember can store encrypted ciphertext on this device. If browser encryption is unavailable, it stays session-only and is never saved as plaintext. Sent through this deployment to`,` `,O.label.split(` · `)[1]??O.label,` when used.`]})]}),(0,j.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8,fontSize:13},children:[(0,j.jsx)(`span`,{style:{width:8,height:8,borderRadius:8,background:ht,flex:`0 0 auto`},"aria-hidden":!0}),(0,j.jsx)(`span`,{role:`status`,"aria-live":`polite`,"aria-busy":B,children:gt}),(0,j.jsx)(`span`,{style:{color:`var(--text-muted)`},children:`·`}),(0,j.jsx)(`span`,{style:{color:`var(--text-muted)`},children:O.hint}),(0,j.jsx)(`button`,{onClick:()=>void mt(),disabled:B,style:{marginLeft:`auto`,background:`transparent`,border:`1px solid var(--line)`,borderRadius:8,padding:`4px 10px`,color:`var(--text-muted)`,cursor:B?`wait`:`pointer`,font:`inherit`,fontSize:12},title:`Re-check readiness`,children:`Recheck`})]}),O.needsKey&&(0,j.jsxs)(`label`,{style:{display:`flex`,alignItems:`center`,gap:8,fontSize:13},children:[(0,j.jsx)(`input`,{type:`checkbox`,checked:r.rememberKey,onChange:e=>D({rememberKey:e.target.checked})}),(0,j.jsx)(`span`,{children:`Remember key on this device`}),(0,j.jsx)(`span`,{style:{color:`var(--text-muted)`,fontSize:12},children:r.rememberKey?`encrypted on this device when supported; otherwise session-only — never saved as plaintext`:`kept in memory only — cleared on reload`})]}),(0,j.jsx)(ae,{}),(0,j.jsxs)(`section`,{"aria-labelledby":`ls-usage-heading`,children:[(0,j.jsx)(`h4`,{id:`ls-usage-heading`,className:`ls-usage-heading`,children:`This session’s tokens`}),(0,j.jsx)(we,{})]}),(0,j.jsxs)(`div`,{className:`settings-transfer-row`,"aria-busy":X,children:[(0,j.jsx)(`button`,{type:`button`,className:`settings-transfer-btn`,onClick:at,children:`Export settings`}),(0,j.jsx)(`button`,{type:`button`,className:`settings-transfer-btn`,disabled:X,onClick:()=>Pe.current?.click(),children:X?`Importing settings…`:`Import settings`}),(0,j.jsx)(`input`,{ref:Pe,type:`file`,accept:`application/json,.json`,disabled:X,style:{display:`none`},"aria-hidden":`true`,onChange:e=>void ot(e)}),(0,j.jsx)(`span`,{style:{fontSize:12,color:`var(--text-muted)`},children:`API and search keys are never included.`}),Xe&&(0,j.jsx)(`span`,{className:`settings-import-error`,role:`alert`,children:Xe}),Je&&(0,j.jsx)(`span`,{style:{fontSize:12,color:`var(--text-muted)`},role:`status`,children:Je})]})]}),L===`settings`&&(0,j.jsxs)(j.Fragment,{children:[(0,j.jsx)(ge,{}),(0,j.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:6},children:[(0,j.jsx)(`span`,{style:{fontSize:13,fontWeight:600},children:`Web search`}),(0,j.jsx)(Y,{label:`Web search`,value:r.searchMode,options:[{value:`off`,label:`Off`},{value:`realtime`,label:`Real-time`}],onPick:e=>D({searchMode:e})}),(0,j.jsx)(`span`,{style:{fontSize:12,color:`var(--text-muted)`},children:r.searchMode===`off`?`Answers from the model's own knowledge — no web calls.`:Ce.nativeWebSearch?`Grounds fresh asks in live results with citations when a question needs it.`:`This model has no built-in search, so Real-time won't ground anything right now. The four direct providers support it; on OpenRouter it depends on the selected model. Pick a search-capable model or leave this off.`})]}),(0,j.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:6},children:[(0,j.jsx)(`span`,{style:{fontSize:13,fontWeight:600},children:`Explanation level`}),(0,j.jsx)(Y,{label:`Explanation level`,value:r.explainLevel,options:[{value:`simple`,label:`Simple`,badge:`like I'm 5`},{value:`standard`,label:`Standard`,badge:`default`},{value:`deep`,label:`In-depth`,badge:`full rigor`}],onPick:e=>D({explainLevel:e})}),(0,j.jsx)(`span`,{style:{fontSize:12,color:`var(--text-muted)`},children:`How answers are written: Simple uses shorter sentences, everyday analogies, and fewer, more-labelled visuals; In-depth goes further — mechanisms, numbers, edge cases. You can also just say "explain it simpler" or "go deeper". (How long Mavéa thinks is Thinking time, below.)`})]}),(0,j.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:6},children:[(0,j.jsx)(`span`,{style:{fontSize:13,fontWeight:600},children:`Thinking time`}),(0,j.jsx)(Y,{label:`Thinking time`,value:r.quality,options:[{value:`fast`,label:`Fast`,badge:`snappiest`},{value:`balanced`,label:`Balanced`,badge:`default`},{value:`thorough`,label:`Thorough`,badge:`thinks longer`}],onPick:e=>D({quality:e})}),(0,j.jsx)(`span`,{style:{fontSize:12,color:`var(--text-muted)`},children:`How long Mavéa reasons before answering — speed versus care on hard questions. (How the answer is written is Explanation level, above.)`})]}),(0,j.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:6},children:[(0,j.jsx)(`span`,{style:{fontSize:13,fontWeight:600},children:`Visual richness`}),(0,j.jsx)(Y,{label:`Visual richness`,value:dt,options:[{value:`auto`,label:`Auto`,badge:`recommended`},{value:`full`,label:`Full`},{value:`lite`,label:`Lite`,badge:`older machines`}],onPick:e=>pt(e)}),(0,j.jsx)(`span`,{style:{fontSize:12,color:`var(--text-muted)`},children:`Auto matches the effects to your machine. Lite calms the animated face and drops the glass blur so Mavéa stays smooth on older or lower-powered computers.`})]}),(0,j.jsxs)(Be,{children:[(0,j.jsx)(J,{label:`Pen mode`,on:r.annotationsEnabled,onToggle:()=>{let e=!r.annotationsEnabled;D({annotationsEnabled:e,teachMode:e})},note:`Mavéa draws on the canvas as it speaks — circling numbers, striking out misconceptions, annotating every walkthrough stop. Muted walks also write margin notes beside the cards, so you keep the marked-up answer. Off: the pen stays quiet entirely.`}),r.searchMode!==`off`&&(0,j.jsxs)(`span`,{style:{fontSize:12,color:`var(--text-muted)`,display:`flex`,gap:6},children:[(0,j.jsx)(d.globe,{style:{width:14,height:14,flex:`0 0 auto`,marginTop:1}}),`You'll see "Searching…" whenever a search actually runs.`]}),(0,j.jsx)(J,{label:`Living answers`,on:r.worldEnabled,onToggle:()=>D({worldEnabled:!r.worldEnabled}),note:`When you ask why something happened, Mavéa offers the causal web behind the answer — every arrow shows its source, and follow-ups reshape the same web instead of starting over. Offering one is free: it is generated only when you open it, once, and then it's kept.`}),(0,j.jsx)(J,{label:`Keep a library`,on:r.libraryEnabled,onToggle:()=>D({libraryEnabled:!r.libraryEnabled}),note:`Saves the canvases you generate on this device so you can pick any one back up from the welcome screen. On by default; turn it off or clear the library any time.`}),N.length>0&&(0,j.jsx)(`div`,{style:{marginLeft:48},children:(0,j.jsx)(Ke,{label:`Clear library (${N.length})`,confirmLabel:`Confirm clear ${N.length===1?`saved canvas`:`${N.length} saved canvases`}`,onConfirm:x})})]})]}),L===`you`&&(0,j.jsxs)(j.Fragment,{children:[(0,j.jsx)(v,{kind:`stored-data`,from:`live`}),(0,j.jsx)(J,{label:`Remember me`,on:r.memoryEnabled,onToggle:()=>D({memoryEnabled:!r.memoryEnabled}),note:`Stored facts stay on this device. While Memory is enabled, relevant facts are included in future requests to your selected model provider. You can inspect, edit, export, or forget each stored fact below.`}),(0,j.jsxs)(`div`,{style:{marginLeft:48,display:`flex`,flexDirection:`column`,gap:8},children:[M.length===0?(0,j.jsx)(`span`,{style:{fontSize:12,color:`var(--text-muted)`},children:r.memoryEnabled?`Nothing remembered yet — Mavéa will build a concept wiki as you talk.`:`No stored concepts. Memory is off, so future conversations will not add any.`}):(0,j.jsxs)(j.Fragment,{children:[(0,j.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,justifyContent:`space-between`},children:[(0,j.jsx)(`div`,{role:`group`,"aria-label":`Memory view`,style:{display:`flex`,gap:2,padding:2,borderRadius:8,background:`var(--track)`,border:`1px solid var(--line)`,alignSelf:`flex-start`},children:[`list`,`graph`].map(e=>(0,j.jsx)(`button`,{type:`button`,"aria-pressed":I===e,onClick:()=>ke(e),style:{padding:`4px 12px`,borderRadius:6,border:`none`,background:I===e?`var(--surface-elevated)`:`transparent`,boxShadow:I===e?`0 1px 2px rgba(0,0,0,0.12)`:`none`,color:I===e?`var(--text-primary)`:`var(--text-muted)`,cursor:`pointer`,font:`inherit`,fontSize:12,fontWeight:I===e?600:400},children:e===`list`?`Concepts`:`Graph`},e))}),(0,j.jsx)(Ke,{label:`Forget all`,confirmLabel:`Confirm forget ${M.length===1?`1 concept`:`${M.length} concepts`}`,onConfirm:pe})]}),I===`graph`?(0,j.jsx)(Fe,{nodes:M}):(0,j.jsx)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:8,maxHeight:280,overflowY:`auto`},children:Oe(M).map(({namespace:e,nodes:t})=>(0,j.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:6},children:[(0,j.jsx)(`span`,{style:{fontFamily:`var(--font-data, inherit)`,fontSize:10,letterSpacing:`0.14em`,textTransform:`uppercase`,color:`var(--text-muted)`,margin:`2px 2px 0`},children:De(e)}),(0,j.jsx)(`ul`,{style:{listStyle:`none`,margin:0,padding:0,display:`flex`,flexDirection:`column`,gap:6},children:t.map(e=>(0,j.jsx)(Ee,{node:e,ago:ee(e.updatedAt)},e.id))})]},e))}),(0,j.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,justifyContent:`space-between`,gap:8},children:[(0,j.jsxs)(`span`,{style:{fontSize:11.5,color:`var(--text-muted)`},children:[M.length,` `,M.length===1?`concept`:`concepts`,` · `,Te,` KB on this device`]}),(0,j.jsx)(`button`,{type:`button`,onClick:()=>je(M),style:{background:`transparent`,border:`1px solid var(--line)`,borderRadius:8,padding:`3px 9px`,color:`var(--text-muted)`,cursor:`pointer`,font:`inherit`,fontSize:12},children:`Export memory`})]})]}),(0,j.jsxs)(`span`,{style:{fontSize:12,color:`var(--text-muted)`,display:`flex`,gap:6},children:[(0,j.jsx)(d.sparkle,{style:{width:14,height:14,flex:`0 0 auto`,marginTop:1}}),r.memoryEnabled?`Stored on this device, and sent to ${O.label.split(` · `)[1]??O.label} inside each prompt to personalize answers — the same path as your questions.`:`Memory is off. Existing concepts stay on this device until you forget them, but they are not included in prompts.`]})]}),(0,j.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:8},children:[(0,j.jsx)(`span`,{style:K,children:`Voice`}),(0,j.jsx)(`span`,{style:{fontSize:12,color:`var(--text-muted)`},children:`Microphone audio goes through this deployment to its configured Whisper endpoint; the default is loopback-only. Spoken replies use its configured Kokoro endpoint. Mavéa does not fall back to a browser-vendor speech service.`}),(0,j.jsx)(`div`,{style:{display:`flex`,gap:12,alignItems:`center`},children:(0,j.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:4,flex:1},children:[(0,j.jsx)(`span`,{style:{fontSize:11,color:`var(--text-muted)`},children:`Mavéa`}),(0,j.jsxs)(`div`,{style:{display:`flex`,gap:6},children:[(0,j.jsx)(`div`,{style:{flex:1},children:(0,j.jsx)(_e,{ariaLabel:`Mavéa's voice`,value:lt,onChange:e=>{ut(e),Ge(e);let t=m(e);t&&oe(t)},options:_.map(e=>({value:e.id,label:e.label,note:e.tone}))})}),(0,j.jsx)(`button`,{type:`button`,onClick:()=>{let e=m(lt);e&&oe(e)},style:{...Ue,width:`auto`,padding:`6px 10px`,cursor:`pointer`,fontSize:11},title:`Preview voice`,"aria-label":`Preview Mavéa's voice`,children:`▶`})]})]})}),(0,j.jsx)(de,{})]}),he.total>0&&(0,j.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:6},children:[(0,j.jsx)(`span`,{style:K,children:`Flashcards`}),(0,j.jsx)(Y,{label:`Flashcards`,value:g,options:[{value:`collection`,label:`Just save them`},{value:`spaced`,label:`Help me remember`}],onPick:e=>ve(e)}),(0,j.jsx)(`span`,{style:{fontSize:12,color:`var(--text-muted)`},children:g===`collection`?`A plain pile you flip through when you feel like it. No dates, no counts, nothing waiting for you.`:`Each card comes back just before you'd forget it. New ones join ${me} a day, so a big pile never lands at once.`})]}),(0,j.jsxs)(Be,{defaultOpen:n,children:[(0,j.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:6},children:[(0,j.jsxs)(`span`,{style:{fontSize:11,color:`var(--text-muted)`},children:[`Hold to talk key `,(0,j.jsx)(`span`,{style:{opacity:.6},children:`(Hold mode only)`})]}),(0,j.jsx)(`div`,{style:{display:`flex`,gap:6},children:[{key:`Alt`,label:`Alt`},{key:`Control`,label:`Ctrl`},{key:`Shift`,label:`Shift`}].map(({key:e,label:t})=>{let n=(r.pttKey||`Alt`)===e;return(0,j.jsx)(`button`,{type:`button`,onClick:()=>D({pttKey:e}),style:Ve(n),"aria-pressed":n,title:`Hold ${t} to talk (shows as ${re(e,r.pttSide)} in the hint)`,children:t},e)})}),(0,j.jsx)(`div`,{style:{display:`flex`,gap:6},children:[{side:`any`,label:`Either side`},{side:`left`,label:`Left`},{side:`right`,label:`Right`}].map(({side:e,label:t})=>{let n=(r.pttSide||`any`)===e;return(0,j.jsx)(`button`,{type:`button`,onClick:()=>D({pttSide:e}),style:Ve(n),"aria-pressed":n,title:e===`any`?`Either side of the key talks`:`Only the ${t.toLowerCase()} key talks`,children:t},e)})})]}),(0,j.jsx)(J,{label:`Morning brief`,on:r.morningBrief,onToggle:()=>D({morningBrief:!r.morningBrief}),note:`On the first open of the day, Mavéa opens with a quick read on the things you track.`}),(0,j.jsx)(J,{label:`Save flashcards automatically`,on:r.autoSaveFlashcards,onToggle:()=>D({autoSaveFlashcards:!r.autoSaveFlashcards}),note:`When an answer already contains flashcards, keep them without asking. Off by default — the usual way is tapping “Cards” on the answer you want. Every save shows a pill with Undo, so it's never silent.`}),(0,j.jsx)(J,{label:`Quiet hours`,on:P,onToggle:()=>{ue(!P),F(!P)},note:`10 PM – 6 AM: the screen dims and voice output is reduced. Audibility still depends on your device volume and surroundings.`})]})]}),L===`data`&&(0,j.jsxs)(j.Fragment,{children:[(0,j.jsx)(v,{kind:`stored-data`,from:`live`}),(0,j.jsxs)(`p`,{style:{fontSize:13,lineHeight:1.5,color:`var(--text-secondary)`,margin:0},children:[`Export a backup, or import one you saved. `,(0,j.jsx)(`strong`,{children:`Saved on this browser.`}),` Some content uses device-bound browser encryption; preferences and other records may use ordinary browser storage. A raw storage copy is not a portable backup — to move data to incognito, another port, browser, or computer, export it here and import it there.`]}),(0,j.jsxs)(`ul`,{style:{margin:0,paddingLeft:18,fontSize:12,lineHeight:1.6,color:`var(--text-muted)`},children:[(0,j.jsx)(`li`,{children:`Includes supported dashboards, memory, flashcards, saved canvases, map records, courses, and settings.`}),(0,j.jsxs)(`li`,{children:[`Provider/search keys and GitHub tokens are `,(0,j.jsx)(`strong`,{children:`never included`}),`. Active turn history, refresh ledgers, caches, Ripple tracking, and device-only appearance, audio, and performance preferences are also excluded.`]}),(0,j.jsxs)(`li`,{children:[`Importing `,(0,j.jsx)(`strong`,{children:`merges`}),` recognized data. It does not clear a store first, but bounded stores can evict older records when an import exceeds their capacity.`]}),(0,j.jsx)(`li`,{children:`The file is plain, unencrypted JSON: keep it somewhere safe, import only files you trust.`})]}),(0,j.jsxs)(`div`,{className:`settings-transfer-row`,"aria-busy":Q!==null,children:[(0,j.jsx)(`button`,{type:`button`,className:`settings-transfer-btn`,disabled:Q!==null,onClick:()=>void st(),children:Q===`export`?`Exporting backup…`:`Export a backup`}),(0,j.jsx)(`button`,{type:`button`,className:`settings-transfer-btn`,disabled:Q!==null,onClick:()=>Qe.current?.click(),children:Q===`import`?`Importing backup…`:`Import a backup`}),(0,j.jsx)(`input`,{ref:Qe,type:`file`,accept:`application/json,.json`,disabled:Q!==null,style:{display:`none`},"aria-hidden":`true`,onChange:e=>void ct(e)}),tt&&(0,j.jsx)(`span`,{style:{fontSize:12,color:`var(--text-muted)`},role:`status`,children:tt}),nt&&(0,j.jsx)(`span`,{className:`settings-import-error`,role:`alert`,children:nt})]})]}),(0,j.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,flexWrap:`wrap`,gap:`6px 12px`,paddingTop:14,borderTop:`1px solid var(--line-soft)`,color:`var(--text-muted)`,fontSize:10.5},children:[(0,j.jsx)(`a`,{href:`#/terms?from=live`,style:{color:`inherit`},children:`Terms`}),(0,j.jsx)(`a`,{href:`#/privacy?from=live`,style:{color:`inherit`},children:`Privacy`}),(0,j.jsx)(`a`,{href:`#/legal?from=live`,style:{color:`inherit`},children:`Important information`}),(0,j.jsx)(`a`,{href:l(`LICENSE.txt`),target:`_blank`,rel:`noreferrer noopener`,style:{color:`inherit`},children:`License`}),(0,j.jsx)(`button`,{type:`button`,onClick:c,style:{marginLeft:`auto`,padding:0,border:0,color:`inherit`,background:`transparent`,font:`inherit`,textDecoration:`underline`,textUnderlineOffset:3,cursor:`pointer`},children:`Review legal acknowledgement now`})]})]})]})}export{X as LiveSettings};
@@ -1 +1 @@
1
- import{t as e}from"./compiler-runtime-qQQXpJgv.js";import{t}from"./jsx-runtime-DeHZSEgm.js";import{n}from"./icons-gLFQTv74.js";import{t as r}from"./MindShape-DVlgSR1B.js";var i=e(),a=t();function o(e){let t=(0,i.c)(33),{open:o,onClose:s,spec:c}=e,l=`scrim`+(o?` show`:``),u=o?0:-1,d=!o,f;t[0]===s?f=t[1]:(f=e=>{(e.key===`Enter`||e.key===` `)&&(e.key===` `&&e.preventDefault(),s())},t[0]=s,t[1]=f);let p=o?`auto`:`none`,m;t[2]===p?m=t[3]:(m={pointerEvents:p},t[2]=p,t[3]=m);let h;t[4]!==s||t[5]!==l||t[6]!==u||t[7]!==d||t[8]!==f||t[9]!==m?(h=(0,a.jsx)(`div`,{className:l,onClick:s,role:`button`,tabIndex:u,"aria-hidden":d,"aria-label":`Close the map`,onKeyDown:f,style:m}),t[4]=s,t[5]=l,t[6]=u,t[7]=d,t[8]=f,t[9]=m,t[10]=h):h=t[10];let g=`drawer`+(o?` show`:``),_=!o,v=!o,y;t[11]===Symbol.for(`react.memo_cache_sentinel`)?(y=(0,a.jsx)(n.x,{}),t[11]=y):y=t[11];let b;t[12]===s?b=t[13]:(b=(0,a.jsx)(`button`,{className:`drawer-x`,onClick:s,"aria-label":`Close the map`,children:y}),t[12]=s,t[13]=b);let x;t[14]===Symbol.for(`react.memo_cache_sentinel`)?(x=(0,a.jsxs)(`div`,{className:`drawer-eyebrow`,children:[(0,a.jsx)(n.sparkle,{style:{width:14,height:14}}),` The thinking behind this`]}),t[14]=x):x=t[14];let S;t[15]===c?S=t[16]:(S=c?.center&&(0,a.jsx)(`div`,{className:`drawer-claim`,children:c.center}),t[15]=c,t[16]=S);let C;t[17]===S?C=t[18]:(C=(0,a.jsxs)(`div`,{className:`drawer-head`,children:[x,S]}),t[17]=S,t[18]=C);let w;t[19]===c?w=t[20]:(w=c&&(0,a.jsx)(r,{asBlock:!0,center:c.center,atoms:c.atoms,links:c.links,clusters:c.clusters,unsaid:c.unsaid}),t[19]=c,t[20]=w);let T;t[21]===w?T=t[22]:(T=(0,a.jsx)(`div`,{className:`drawer-body`,children:w}),t[21]=w,t[22]=T);let E;t[23]!==v||t[24]!==b||t[25]!==C||t[26]!==T||t[27]!==g||t[28]!==_?(E=(0,a.jsxs)(`aside`,{className:g,"aria-hidden":_,inert:v,children:[b,C,T]}),t[23]=v,t[24]=b,t[25]=C,t[26]=T,t[27]=g,t[28]=_,t[29]=E):E=t[29];let D;return t[30]!==E||t[31]!==h?(D=(0,a.jsxs)(a.Fragment,{children:[h,E]}),t[30]=E,t[31]=h,t[32]=D):D=t[32],D}export{o as MindMapViewerDrawer};
1
+ import{t as e}from"./compiler-runtime-qQQXpJgv.js";import{t}from"./jsx-runtime-DeHZSEgm.js";import{n}from"./icons-gLFQTv74.js";import{t as r}from"./MindShape-BbuVOTaR.js";var i=e(),a=t();function o(e){let t=(0,i.c)(33),{open:o,onClose:s,spec:c}=e,l=`scrim`+(o?` show`:``),u=o?0:-1,d=!o,f;t[0]===s?f=t[1]:(f=e=>{(e.key===`Enter`||e.key===` `)&&(e.key===` `&&e.preventDefault(),s())},t[0]=s,t[1]=f);let p=o?`auto`:`none`,m;t[2]===p?m=t[3]:(m={pointerEvents:p},t[2]=p,t[3]=m);let h;t[4]!==s||t[5]!==l||t[6]!==u||t[7]!==d||t[8]!==f||t[9]!==m?(h=(0,a.jsx)(`div`,{className:l,onClick:s,role:`button`,tabIndex:u,"aria-hidden":d,"aria-label":`Close the map`,onKeyDown:f,style:m}),t[4]=s,t[5]=l,t[6]=u,t[7]=d,t[8]=f,t[9]=m,t[10]=h):h=t[10];let g=`drawer`+(o?` show`:``),_=!o,v=!o,y;t[11]===Symbol.for(`react.memo_cache_sentinel`)?(y=(0,a.jsx)(n.x,{}),t[11]=y):y=t[11];let b;t[12]===s?b=t[13]:(b=(0,a.jsx)(`button`,{className:`drawer-x`,onClick:s,"aria-label":`Close the map`,children:y}),t[12]=s,t[13]=b);let x;t[14]===Symbol.for(`react.memo_cache_sentinel`)?(x=(0,a.jsxs)(`div`,{className:`drawer-eyebrow`,children:[(0,a.jsx)(n.sparkle,{style:{width:14,height:14}}),` The thinking behind this`]}),t[14]=x):x=t[14];let S;t[15]===c?S=t[16]:(S=c?.center&&(0,a.jsx)(`div`,{className:`drawer-claim`,children:c.center}),t[15]=c,t[16]=S);let C;t[17]===S?C=t[18]:(C=(0,a.jsxs)(`div`,{className:`drawer-head`,children:[x,S]}),t[17]=S,t[18]=C);let w;t[19]===c?w=t[20]:(w=c&&(0,a.jsx)(r,{asBlock:!0,center:c.center,atoms:c.atoms,links:c.links,clusters:c.clusters,unsaid:c.unsaid}),t[19]=c,t[20]=w);let T;t[21]===w?T=t[22]:(T=(0,a.jsx)(`div`,{className:`drawer-body`,children:w}),t[21]=w,t[22]=T);let E;t[23]!==v||t[24]!==b||t[25]!==C||t[26]!==T||t[27]!==g||t[28]!==_?(E=(0,a.jsxs)(`aside`,{className:g,"aria-hidden":_,inert:v,children:[b,C,T]}),t[23]=v,t[24]=b,t[25]=C,t[26]=T,t[27]=g,t[28]=_,t[29]=E):E=t[29];let D;return t[30]!==E||t[31]!==h?(D=(0,a.jsxs)(a.Fragment,{children:[h,E]}),t[30]=E,t[31]=h,t[32]=D):D=t[32],D}export{o as MindMapViewerDrawer};
@@ -1 +1 @@
1
- import{t as e}from"./react-BZJXY1be.js";import{t}from"./compiler-runtime-qQQXpJgv.js";import{t as n}from"./jsx-runtime-DeHZSEgm.js";import{R as r}from"./index-Db-FgYxX.js";import{t as i}from"./useSpatialCanvas-CfmZOXXP.js";import{t as a}from"./Presence-UqXfH4Y-.js";var o=e(),s=t(),c=1e3,l=26,u=150,d=105,f=82,p=16,m=1.5,h=324,g=252;.1*c;var _=120,v=80;.82*c;var y=120;function b(e,t,n,r=[],i=!1){let a=Array.from(e.keys()),o=t*2+l,s=n*2+l,c=168+Math.max(0,a.length-6)*10,f=i?h:c+d,p=i?g:c+n*.9,m=i?g:p+u;for(let i=0;i<400;i++){for(let[t,n]of a.entries()){let r=e.get(n);if(r.x===500&&r.y===329){let e=t/Math.max(1,a.length)*2*Math.PI;r.x=500+Math.cos(e),r.y=329+Math.sin(e)}let i=r.x-500,o=r.y-329,s=o>=0?m:p,c=i/f,l=o/s,u=Math.hypot(c,l)||1;u<1&&(r.x=500+c/u*f,r.y=329+l/u*s)}let i=!1;for(let t=0;t<a.length;t++)for(let n=t+1;n<a.length;n++){let r=e.get(a[t]),c=e.get(a[n]),l=c.x-r.x,u=c.y-r.y;l===0&&u===0&&(l=t-n,u=n-t);let d=o-Math.abs(l),f=s-Math.abs(u);if(d>0&&f>0){if(i=!0,d<=f){let e=d/2*(l<0?-1:1);r.x-=e,c.x+=e}else{let e=f/2*(u<0?-1:1);r.y-=e,c.y+=e}}}for(let o of a){let a=e.get(o);for(let e of r){let r=t+e.hw+l-Math.abs(a.x-e.x),o=n+e.hh+l-Math.abs(a.y-e.y);r<=0||o<=0||(i=!0,o<=r?a.y+=a.y>=e.y?o:-o:a.x+=a.x>=e.x?r:-r)}}if(!i)break}}function x(e,t,n){let r=Array.from(t.values()),i=new Map(n.map(e=>[e.id,e.members]));for(let n of e){let a=(i.get(n.id)??[]).map(e=>t.get(e.id)).filter(e=>!!e);if(a.length){let e=Math.min(...a.map(e=>e.x)),t=Math.max(...a.map(e=>e.x)),r=Math.min(...a.map(e=>e.y)),i=Math.max(...a.map(e=>e.y)),o=(e+t)/2,s=(r+i)/2,c=o-500,l=s-329;Math.abs(l)>=Math.abs(c)?(n.x=o,n.y=l>=0?i+78+p+14:r-78-p-14):(n.y=s,n.x=c>=0?t+150+f+14:e-150-f-14)}for(let t=0;t<80;t++){let t=!1,i=[...r.map(e=>({point:e,hw:150,hh:78})),...e.filter(e=>e!==n).map(e=>({point:e,hw:f,hh:p}))];for(let e of i){let r=f+e.hw+12-Math.abs(n.x-e.point.x),i=p+e.hh+10-Math.abs(n.y-e.point.y);r<=0||i<=0||(t=!0,i<=r?n.y+=n.y>=e.point.y?i:-i:n.x+=n.x>=e.point.x?r:-r)}if(!t)break}}}function S(e,t,n,r=!1,i=!1){let a=new Map,o=new Map,s=[],l=new Map(e.map(e=>[e.id,e])),u=new Set,d=[];for(let e of t??[]){let t=e.atomIds.map(e=>l.get(e)).filter(e=>!!e);t.length!==0&&(t.forEach(e=>u.add(e.id)),d.push({id:e.id,label:e.label,members:t}))}let f=e.filter(e=>!u.has(e.id));if(f.length&&d.push({id:`__rest`,members:f}),d.length===0)return{positions:a,centroidOf:o,labels:s};let p=d.length,h=p===1,g=h?0:Math.min(250,180+p*20);if(d.forEach((e,t)=>{let r=t/p*2*Math.PI-Math.PI/2,i=h?500:500+g*Math.cos(r),c=h?329:329+g*Math.sin(r);e.label&&s.push({id:e.id,label:e.label,x:i,y:c});let l=e.members.length,u=Math.max(318,230+l*26),d=l<=1?h?u:0:h?u:Math.min(220,110+l*16),f={x:i,y:c};e.members.forEach((e,r)=>{let s=n?.get(e.id);if(s)a.set(e.id,{x:s.x,y:s.y});else{let n=r/Math.max(1,l)*2*Math.PI-Math.PI/2+t*.4;a.set(e.id,{x:i+d*Math.cos(n),y:c+d*Math.sin(n)})}o.set(e.id,f)})}),b(a,150,78,[...r?[{x:820,y:630,hw:y,hh:78}]:[],...i?[{x:100,y:84,hw:_,hh:v}]:[]],i),i){let e=c*.42;for(let t of a.values()){let n=t.x-500,r=Math.abs(n)*m;t.x=500+Math.sign(n)*Math.min(r,Math.max(Math.abs(n),e))}}for(let e of d){let t=e.members.map(e=>a.get(e.id)).filter(e=>!!e);if(!t.length)continue;let n={x:t.reduce((e,t)=>e+t.x,0)/t.length,y:t.reduce((e,t)=>e+t.y,0)/t.length};for(let t of e.members)a.has(t.id)&&o.set(t.id,n)}return x(s,a,d),{positions:a,centroidOf:o,labels:s}}var C=n(),w={person:`#2E9C8E`,option:`#5B63E8`,want:`#B07A2E`,fear:`#C9705E`,constraint:`#7A8194`,tradeoff:`#8B6FD4`,contradiction:`#C9705E`,open_loop:`#C98A1B`,action:`#5B63E8`,value:`#B07A2E`,question:`#C98A1B`},T={person:`Person`,option:`Option`,want:`Want`,fear:`Worry`,constraint:`Constraint`,tradeoff:`Tradeoff`,contradiction:`Contradiction`,open_loop:`Open loop`,action:`Action`,value:`Value`,question:`Question`},E=96,D=18,O=104;function k(e,t,n,r){let i=n-e,a=r-t,o=Math.hypot(i,a)||1,s=-a/o,c=i/o,l=(e+n)/2,u=(t+r)/2,d=l+s*52,f=u+c*52,p=.25*e+.5*d+.25*n+s*18,m=.25*t+.5*f+.25*r+c*18;return{d:`M ${e} ${t} Q ${d} ${f} ${n} ${r}`,lx:p,ly:m}}function ee({atom:e,x:t,y:n,order:r,onRemove:i}){let[a,s]=(0,o.useState)(!1),c=w[e.kind]??`#7A8194`,l=e.status===`stable`;return(0,C.jsxs)(`div`,{className:`ms-card`,"data-status":e.status,"data-open":a?`true`:void 0,style:{left:`${t}px`,top:`${n}px`,"--ms-kind-color":c,"--ms-i":r},onClick:()=>l&&s(e=>!e),role:l?`button`:void 0,tabIndex:l?0:void 0,"aria-expanded":l?a:void 0,onKeyDown:e=>e.key===`Enter`&&l&&s(e=>!e),children:[i&&(0,C.jsx)(`button`,{type:`button`,className:`ms-card-remove`,"aria-label":`Remove “${e.label}”`,onClick:t=>{t.stopPropagation(),i(e.id)},children:`×`}),(0,C.jsxs)(`div`,{className:`ms-card-header`,children:[(0,C.jsx)(`span`,{className:`ms-kind-dot`,"aria-hidden":`true`}),(0,C.jsx)(`span`,{className:`ms-kind-label`,children:T[e.kind]})]}),(0,C.jsx)(`div`,{className:`ms-atom-label`,children:e.label}),l&&(0,C.jsxs)(`div`,{className:`ms-card-quote`,"aria-hidden":!a,children:[(0,C.jsx)(`span`,{className:`ms-you-said`,children:`you said · `}),e.quote]})]})}function te({unsaid:e,onConfirm:t,onDismiss:n}){let r=!!(t||n);return(0,C.jsxs)(`div`,{className:`ms-card ms-unsaid`,"data-status":`maybe`,"data-interactive":r?`true`:void 0,style:{left:`820px`,top:`630px`,"--ms-i":20},"aria-label":`Maybe: ${e.label}`,children:[(0,C.jsxs)(`div`,{className:`ms-card-header`,children:[(0,C.jsx)(`span`,{className:`ms-kind-dot`,style:{background:`var(--warning)`},"aria-hidden":`true`}),(0,C.jsx)(`span`,{className:`ms-kind-label`,style:{color:`var(--warning)`},children:`Maybe`})]}),(0,C.jsx)(`div`,{className:`ms-atom-label`,children:e.label}),(0,C.jsx)(`div`,{className:`ms-card-quote`,children:e.why}),r&&(0,C.jsxs)(`div`,{className:`ms-unsaid-actions`,children:[t&&(0,C.jsx)(`button`,{type:`button`,className:`ms-unsaid-btn ms-unsaid-confirm`,onClick:e=>{e.stopPropagation(),t()},children:`Yes, that's it`}),n&&(0,C.jsx)(`button`,{type:`button`,className:`ms-unsaid-btn ms-unsaid-dismiss`,onClick:e=>{e.stopPropagation(),n()},children:`Not this`})]})]})}function ne(e){let t=(0,s.c)(4),{signal:n}=e,r;return t[0]!==n.content||t[1]!==n.id||t[2]!==n.kind?(r=(0,C.jsx)(`div`,{className:`ms-signal-chip`,"data-kind":n.kind,"aria-live":`polite`,children:n.content},n.id),t[0]=n.content,t[1]=n.id,t[2]=n.kind,t[3]=r):r=t[3],r}function re(e,t){let n=e.links.filter(e=>e.kind===`tensions`).length,r=e.atoms.filter(e=>e.kind===`question`).length,i=e.atoms.filter(e=>e.kind===`option`).length,a=e.atoms.length;return t&&n>0?n===1?`1 tension. ${t.a.label} vs ${t.b.label}.`:`${n} tensions. The real pull: ${t.a.label} vs ${t.b.label}.`:r>=3?`${r} open questions.`:i>=2?`${i} options. ${a} things on your mind.`:`${a} thought${a===1?``:`s`}. Here's what I heard.`}function A({center:e,atoms:t=[],links:n=[],clusters:s,unsaid:l,title:u,phase:d=`settled`,intent:f=`general`,isRevealing:p=!1,modelUnavailable:m=!1,currentSignal:h,onAction:g,onRemoveAtom:_,onConfirmUnsaid:v,onDismissUnsaid:y,liveTranscript:b,thoughtCount:x,delay:T=0,asBlock:A=!0}){let j=(0,o.useRef)(new Map),M=r(),N=d===`settled`,P=`${N}|${(s??[]).map(e=>`${e.id}:${e.atomIds.join(`,`)}`).join(`|`)}`,F=(0,o.useRef)(``),ie=P===F.current?j.current:void 0,{positions:I,centroidOf:ae,labels:L}=(0,o.useMemo)(()=>S(t,s,ie,!!l,N),[t,s,l,N]);j.current=I,F.current=P;let oe=!!g&&t.length>0,R=i({clamp:{min:.12,max:1.6},margin:20,insetBottom:oe?O:0}),{fitTo:z}=R,B=(0,o.useMemo)(()=>{let e=318,t=195.6;for(let n of I.values())e=Math.max(e,Math.abs(n.x-500)+150),t=Math.max(t,Math.abs(n.y-329)+78);for(let n of L)e=Math.max(e,Math.abs(n.x-500)+E),t=Math.max(t,Math.abs(n.y-329)+D);return l&&(e=Math.max(e,470),t=Math.max(t,379)),e+=24,t+=24,{x:500-e,y:329-t,w:2*e,h:2*t}},[I,L,l]);(0,o.useEffect)(()=>{z(B)},[B,z]);let V=[...n].sort((e,t)=>(e.kind===`tensions`)-+(t.kind===`tensions`)),H=(0,o.useMemo)(()=>new Map(t.map(e=>[e.id,e])),[t]),U=(0,o.useMemo)(()=>{let e=n.filter(e=>e.kind===`tensions`&&!e.provisional&&e.label);if(e.length===0)return null;let t=e=>H.get(e)?.weight??1,r=e.map(e=>({l:e,w:t(e.from)+t(e.to)})).sort((e,t)=>t.w-e.w||(e.l.from+e.l.to).localeCompare(t.l.from+t.l.to))[0],i=H.get(r.l.from),a=H.get(r.l.to);return!i||!a?null:{a:i,b:a,label:r.l.label}},[n,H]),W=(0,o.useMemo)(()=>t.filter(e=>(e.kind===`open_loop`||e.kind===`action`||e.kind===`question`)&&e.quote&&e.status!==`maybe`).map(e=>({id:e.id,label:e.label,quote:e.quote})),[t]),[G,K]=(0,o.useState)(null),[se,ce]=(0,o.useState)(()=>new Set),le=(0,o.useCallback)(e=>{ce(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},[]),q=(0,o.useRef)(!1),J=(0,o.useRef)(!1),Y=(0,o.useRef)(d===`settled`);(0,o.useEffect)(()=>{d===`settled`&&(f===`planning`&&!J.current?(J.current=!0,K(`plan`)):U&&!q.current&&f!==`planning`&&(q.current=!0,K(`tension`)));let e=Y.current;Y.current=d===`settled`,e&&d!==`settled`&&(q.current=!1,J.current=!1,K(null))},[d,U,f]);let X=d===`listening`?`listening`:d===`pausing`?`thinking`:`idle`,ue=d===`settled`?{decision:`THE DECISION`,planning:`THE PLAN`,exploration:`THE QUESTION`,processing:`WHAT'S GOING ON`,general:`WHAT I HEARD`}[f]??`WHAT I HEARD`:`WHAT I'M HEARING`,de={decision:`Help me decide`,planning:`Build this plan`,exploration:`Take me deeper`,processing:`Help me understand`,general:`Answer this`}[f]??`Answer this`,Z=(0,o.useRef)(null),fe=e=>{!N||e.button!==0||e.target.closest(`.ms-card, .ms-hub, button`)||(Z.current={x:e.clientX,y:e.clientY},e.currentTarget.setPointerCapture(e.pointerId))},pe=e=>{let t=Z.current;t&&(R.pan(e.clientX-t.x,e.clientY-t.y),Z.current={x:e.clientX,y:e.clientY})},Q=e=>{Z.current&&(Z.current=null,e.currentTarget.releasePointerCapture?.(e.pointerId))},$=(0,C.jsxs)(`div`,{className:`ms-canvas`,ref:R.viewportRef,onPointerDown:fe,onPointerMove:pe,onPointerUp:Q,onPointerCancel:Q,onWheel:e=>{N&&R.zoomAtClient(e.deltaY<0?1.12:1/1.12,e.clientX,e.clientY)},"data-interactive":!0,"data-explorable":N?`true`:void 0,style:{"--ms-cam-scale":R.camera.scale},"data-phase":d,"data-revealing":p?`true`:void 0,"data-has-actions":g&&t.length>0?`true`:void 0,role:`region`,"aria-label":`Mindshape — the shape of your thought`,children:[(0,C.jsxs)(`div`,{className:`ms-world`,style:{transform:R.transform,"--ms-cam-scale":R.camera.scale},children:[L.map(e=>(0,C.jsx)(`div`,{className:`ms-cluster-label`,style:{left:`${e.x}px`,top:`${e.y}px`},"aria-hidden":`true`,children:e.label},e.id)),(0,C.jsxs)(`svg`,{className:`ms-svg`,viewBox:`0 0 ${c} 700`,"aria-hidden":`true`,children:[t.filter(e=>e.status===`stable`).map((e,t)=>{let n=I.get(e.id),r=ae.get(e.id);return!n||!r?null:(0,C.jsx)(`path`,{className:`ms-spoke`,d:`M ${r.x} ${r.y} L ${n.x} ${n.y}`,pathLength:1,style:{"--ms-spoke-i":t}},`spoke-${e.id}`)}),V.map((e,t)=>{let n=I.get(e.from),r=I.get(e.to);if(!n||!r)return null;let i=e.kind===`tensions`,a=w[H.get(e.from)?.kind??`fear`],{d:o,lx:s,ly:c}=k(n.x,n.y,r.x,r.y),l=i&&U&&e.from===U.a.id&&e.to===U.b.id;return(0,C.jsxs)(`g`,{children:[(0,C.jsx)(`path`,{className:i?`ms-thread`:`ms-link`,"data-kind":e.kind,"data-hero":l?`true`:void 0,d:o,pathLength:i?1:void 0,stroke:i?a:void 0,style:{animationDelay:`${.3+t*.12}s`}}),i&&e.label&&(0,C.jsx)(`text`,{className:`ms-thread-label`,x:s,y:c,textAnchor:`middle`,dominantBaseline:`middle`,children:e.label})]},`link-${e.from}-${e.to}-${e.kind}`)})]}),N&&e&&(0,C.jsx)(`div`,{className:`ms-hub`,style:{left:`500px`,top:`329px`},"aria-live":`polite`,children:(0,C.jsx)(`span`,{className:`ms-hub-text`,children:e})}),t.map((e,t)=>{let n=I.get(e.id);return n?(0,C.jsx)(ee,{atom:e,x:n.x,y:n.y,order:t,onRemove:_},e.id):null}),l&&(0,C.jsx)(te,{unsaid:l,onConfirm:v,onDismiss:y})]}),(0,C.jsxs)(`div`,{className:`ms-center`,children:[h&&d!==`settled`&&(0,C.jsx)(ne,{signal:h}),!N&&(0,C.jsx)(`div`,{className:`ms-center-pip-wrap`,ref:M,children:(0,C.jsx)(a,{state:X,emotion:`neutral`,gaze:`center`})}),(0,C.jsx)(`div`,{className:`ms-center-label`,"aria-hidden":`true`,children:ue}),e&&!N&&(0,C.jsx)(`div`,{className:`ms-center-question`,"aria-live":`polite`,children:e}),d===`settled`&&(t.length>0?(0,C.jsx)(`div`,{className:`ms-synthesis-line`,"aria-live":`polite`,children:re({atoms:t,links:n},U)}):m?(0,C.jsx)(`div`,{className:`ms-synthesis-line`,"aria-live":`polite`,children:`I couldn't reach the model just now — nothing you said was lost. Try again in a moment.`}):(0,C.jsx)(`div`,{className:`ms-synthesis-line`,"aria-live":`polite`,children:`Didn't catch enough to map yet — keep talking and I'll shape it.`})),x!==void 0&&x>=0&&d!==`settled`&&(0,C.jsxs)(`div`,{className:`ms-thought-count`,"aria-live":`polite`,children:[(0,C.jsx)(`span`,{className:`ms-mic-dot`,"aria-hidden":`true`}),(()=>{let e=Math.max(x,t.length);return e===0?`Listening…`:`${e} thought${e===1?``:`s`}`})()]}),b&&(0,C.jsx)(`div`,{className:`ms-live-text`,"aria-live":`polite`,"aria-label":`Currently hearing`,children:b})]}),d===`settled`&&U&&G===`tension`&&(0,C.jsxs)(`div`,{className:`ms-tension-callout`,role:`dialog`,"aria-label":`The tension`,children:[(0,C.jsx)(`button`,{type:`button`,className:`ms-tension-close`,"aria-label":`Dismiss`,onClick:()=>K(null),children:`×`}),(0,C.jsx)(`span`,{className:`ms-tension-eyebrow`,children:`THE TENSION`}),(0,C.jsxs)(`p`,{className:`ms-tension-body`,children:[`You keep coming back to `,(0,C.jsxs)(`strong`,{children:[`“`,U.a.label,`.”`]}),` But you also said`,` `,(0,C.jsxs)(`strong`,{children:[`“`,U.b.label,`.”`]}),` Those may not be the same reason.`]}),g&&(0,C.jsx)(`button`,{type:`button`,className:`ms-tension-cta`,onClick:()=>g(`tell-apart`,{tension:{a:U.a.label,b:U.b.label}}),children:`Help me tell them apart →`})]}),G===`plan`&&(0,C.jsxs)(`div`,{className:`ms-plan`,role:`dialog`,"aria-label":`Turn into a plan`,children:[(0,C.jsxs)(`header`,{className:`ms-plan-head`,children:[(0,C.jsx)(`span`,{className:`ms-plan-title`,children:`The open loops, as steps you control`}),(0,C.jsx)(`button`,{type:`button`,className:`ms-tension-close`,"aria-label":`Close the plan`,onClick:()=>K(null),children:`×`})]}),W.length>0?(0,C.jsx)(`ol`,{className:`ms-plan-steps`,children:W.map(e=>{let t=se.has(e.id);return(0,C.jsxs)(`li`,{className:`ms-plan-step`,"data-done":t?`true`:void 0,children:[(0,C.jsx)(`button`,{type:`button`,className:`ms-plan-check`,role:`checkbox`,"aria-checked":t,"aria-label":`Mark “${e.label}” done`,onClick:()=>le(e.id),children:t&&(0,C.jsx)(`span`,{className:`ms-plan-check-mark`,"aria-hidden":`true`,children:`✓`})}),(0,C.jsxs)(`span`,{className:`ms-plan-step-body`,children:[(0,C.jsx)(`span`,{className:`ms-plan-step-label`,children:e.label}),(0,C.jsxs)(`span`,{className:`ms-plan-step-trace`,children:[`from “`,e.quote,`”`]})]})]},e.id)})}):(0,C.jsx)(`p`,{className:`ms-plan-empty`,children:`No open loops to turn into steps yet — keep talking and they’ll surface.`}),(0,C.jsxs)(`footer`,{className:`ms-plan-foot`,children:[(0,C.jsx)(`span`,{className:`ms-plan-note`,children:`Every step traces back to something you said — nothing invented.`}),g&&W.length>0&&(0,C.jsx)(`button`,{type:`button`,className:`ms-action-btn ms-action-primary`,onClick:()=>g(`commit-plan`),children:`Make it real →`})]})]}),d===`settled`&&G===`kept`&&(0,C.jsxs)(`div`,{className:`ms-kept`,role:`dialog`,"aria-label":`Kept this shape`,children:[(0,C.jsx)(`button`,{type:`button`,className:`ms-tension-close`,"aria-label":`Close`,onClick:()=>K(null),children:`×`}),(0,C.jsx)(`span`,{className:`ms-kept-eyebrow`,children:`KEPT THIS SHAPE`}),(0,C.jsx)(`p`,{className:`ms-kept-body`,children:`This is the shape of what you were thinking. It’s yours to revisit.`}),g&&(0,C.jsxs)(`div`,{className:`ms-kept-actions`,children:[(0,C.jsx)(`button`,{type:`button`,className:`ms-kept-btn`,onClick:()=>g(`answer`),children:`↻ Replay`}),(0,C.jsx)(`button`,{type:`button`,className:`ms-kept-btn`,onClick:()=>g(`share`),children:`↗ Share`}),(0,C.jsx)(`button`,{type:`button`,className:`ms-kept-btn`,onClick:()=>g(`present`),children:`▶ Present mode`})]}),(0,C.jsx)(`span`,{className:`ms-kept-memory`,children:`Nothing was saved to memory — Mavéa asks first before keeping anything personal.`})]}),g&&t.length>0&&(0,C.jsxs)(`div`,{className:`ms-actions`,role:`group`,"aria-label":`What to do with this map`,children:[(0,C.jsx)(`button`,{type:`button`,className:`ms-action-btn ms-action-primary`,onClick:()=>g(`answer`),children:de}),(0,C.jsx)(`button`,{type:`button`,className:`ms-action-btn`+(G===`plan`?` is-active`:``),"aria-pressed":G===`plan`,onClick:()=>K(e=>e===`plan`?null:`plan`),children:`Turn into a plan`}),d===`settled`&&(0,C.jsx)(`button`,{type:`button`,className:`ms-action-btn`+(G===`kept`?` is-active`:``),"aria-pressed":G===`kept`,onClick:()=>K(e=>e===`kept`?null:`kept`),children:`That’s it`}),d===`settled`&&(0,C.jsx)(`button`,{type:`button`,className:`ms-action-btn`,onClick:()=>g(`add-more`),children:`Add more`}),(0,C.jsx)(`button`,{type:`button`,className:`ms-action-btn`,onClick:()=>g(`not-quite`),children:`Not quite`})]})]});return A?(0,C.jsxs)(`div`,{className:`card reveal`,style:{"--delay":`${T}ms`},children:[u&&(0,C.jsx)(`div`,{className:`card-eyebrow`,children:u}),$]}):$}export{A as t};
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{R as r}from"./index-CKRjGbeR.js";import{t as i}from"./useSpatialCanvas-CfmZOXXP.js";import{t as a}from"./Presence-UqXfH4Y-.js";var o=e(),s=t(),c=1e3,l=26,u=150,d=105,f=82,p=16,m=1.5,h=324,g=252;.1*c;var _=120,v=80;.82*c;var y=120;function b(e,t,n,r=[],i=!1){let a=Array.from(e.keys()),o=t*2+l,s=n*2+l,c=168+Math.max(0,a.length-6)*10,f=i?h:c+d,p=i?g:c+n*.9,m=i?g:p+u;for(let i=0;i<400;i++){for(let[t,n]of a.entries()){let r=e.get(n);if(r.x===500&&r.y===329){let e=t/Math.max(1,a.length)*2*Math.PI;r.x=500+Math.cos(e),r.y=329+Math.sin(e)}let i=r.x-500,o=r.y-329,s=o>=0?m:p,c=i/f,l=o/s,u=Math.hypot(c,l)||1;u<1&&(r.x=500+c/u*f,r.y=329+l/u*s)}let i=!1;for(let t=0;t<a.length;t++)for(let n=t+1;n<a.length;n++){let r=e.get(a[t]),c=e.get(a[n]),l=c.x-r.x,u=c.y-r.y;l===0&&u===0&&(l=t-n,u=n-t);let d=o-Math.abs(l),f=s-Math.abs(u);if(d>0&&f>0){if(i=!0,d<=f){let e=d/2*(l<0?-1:1);r.x-=e,c.x+=e}else{let e=f/2*(u<0?-1:1);r.y-=e,c.y+=e}}}for(let o of a){let a=e.get(o);for(let e of r){let r=t+e.hw+l-Math.abs(a.x-e.x),o=n+e.hh+l-Math.abs(a.y-e.y);r<=0||o<=0||(i=!0,o<=r?a.y+=a.y>=e.y?o:-o:a.x+=a.x>=e.x?r:-r)}}if(!i)break}}function x(e,t,n){let r=Array.from(t.values()),i=new Map(n.map(e=>[e.id,e.members]));for(let n of e){let a=(i.get(n.id)??[]).map(e=>t.get(e.id)).filter(e=>!!e);if(a.length){let e=Math.min(...a.map(e=>e.x)),t=Math.max(...a.map(e=>e.x)),r=Math.min(...a.map(e=>e.y)),i=Math.max(...a.map(e=>e.y)),o=(e+t)/2,s=(r+i)/2,c=o-500,l=s-329;Math.abs(l)>=Math.abs(c)?(n.x=o,n.y=l>=0?i+78+p+14:r-78-p-14):(n.y=s,n.x=c>=0?t+150+f+14:e-150-f-14)}for(let t=0;t<80;t++){let t=!1,i=[...r.map(e=>({point:e,hw:150,hh:78})),...e.filter(e=>e!==n).map(e=>({point:e,hw:f,hh:p}))];for(let e of i){let r=f+e.hw+12-Math.abs(n.x-e.point.x),i=p+e.hh+10-Math.abs(n.y-e.point.y);r<=0||i<=0||(t=!0,i<=r?n.y+=n.y>=e.point.y?i:-i:n.x+=n.x>=e.point.x?r:-r)}if(!t)break}}}function S(e,t,n,r=!1,i=!1){let a=new Map,o=new Map,s=[],l=new Map(e.map(e=>[e.id,e])),u=new Set,d=[];for(let e of t??[]){let t=e.atomIds.map(e=>l.get(e)).filter(e=>!!e);t.length!==0&&(t.forEach(e=>u.add(e.id)),d.push({id:e.id,label:e.label,members:t}))}let f=e.filter(e=>!u.has(e.id));if(f.length&&d.push({id:`__rest`,members:f}),d.length===0)return{positions:a,centroidOf:o,labels:s};let p=d.length,h=p===1,g=h?0:Math.min(250,180+p*20);if(d.forEach((e,t)=>{let r=t/p*2*Math.PI-Math.PI/2,i=h?500:500+g*Math.cos(r),c=h?329:329+g*Math.sin(r);e.label&&s.push({id:e.id,label:e.label,x:i,y:c});let l=e.members.length,u=Math.max(318,230+l*26),d=l<=1?h?u:0:h?u:Math.min(220,110+l*16),f={x:i,y:c};e.members.forEach((e,r)=>{let s=n?.get(e.id);if(s)a.set(e.id,{x:s.x,y:s.y});else{let n=r/Math.max(1,l)*2*Math.PI-Math.PI/2+t*.4;a.set(e.id,{x:i+d*Math.cos(n),y:c+d*Math.sin(n)})}o.set(e.id,f)})}),b(a,150,78,[...r?[{x:820,y:630,hw:y,hh:78}]:[],...i?[{x:100,y:84,hw:_,hh:v}]:[]],i),i){let e=c*.42;for(let t of a.values()){let n=t.x-500,r=Math.abs(n)*m;t.x=500+Math.sign(n)*Math.min(r,Math.max(Math.abs(n),e))}}for(let e of d){let t=e.members.map(e=>a.get(e.id)).filter(e=>!!e);if(!t.length)continue;let n={x:t.reduce((e,t)=>e+t.x,0)/t.length,y:t.reduce((e,t)=>e+t.y,0)/t.length};for(let t of e.members)a.has(t.id)&&o.set(t.id,n)}return x(s,a,d),{positions:a,centroidOf:o,labels:s}}var C=n(),w={person:`#2E9C8E`,option:`#5B63E8`,want:`#B07A2E`,fear:`#C9705E`,constraint:`#7A8194`,tradeoff:`#8B6FD4`,contradiction:`#C9705E`,open_loop:`#C98A1B`,action:`#5B63E8`,value:`#B07A2E`,question:`#C98A1B`},T={person:`Person`,option:`Option`,want:`Want`,fear:`Worry`,constraint:`Constraint`,tradeoff:`Tradeoff`,contradiction:`Contradiction`,open_loop:`Open loop`,action:`Action`,value:`Value`,question:`Question`},E=96,D=18,O=104;function k(e,t,n,r){let i=n-e,a=r-t,o=Math.hypot(i,a)||1,s=-a/o,c=i/o,l=(e+n)/2,u=(t+r)/2,d=l+s*52,f=u+c*52,p=.25*e+.5*d+.25*n+s*18,m=.25*t+.5*f+.25*r+c*18;return{d:`M ${e} ${t} Q ${d} ${f} ${n} ${r}`,lx:p,ly:m}}function ee({atom:e,x:t,y:n,order:r,onRemove:i}){let[a,s]=(0,o.useState)(!1),c=w[e.kind]??`#7A8194`,l=e.status===`stable`;return(0,C.jsxs)(`div`,{className:`ms-card`,"data-status":e.status,"data-open":a?`true`:void 0,style:{left:`${t}px`,top:`${n}px`,"--ms-kind-color":c,"--ms-i":r},onClick:()=>l&&s(e=>!e),role:l?`button`:void 0,tabIndex:l?0:void 0,"aria-expanded":l?a:void 0,onKeyDown:e=>e.key===`Enter`&&l&&s(e=>!e),children:[i&&(0,C.jsx)(`button`,{type:`button`,className:`ms-card-remove`,"aria-label":`Remove “${e.label}”`,onClick:t=>{t.stopPropagation(),i(e.id)},children:`×`}),(0,C.jsxs)(`div`,{className:`ms-card-header`,children:[(0,C.jsx)(`span`,{className:`ms-kind-dot`,"aria-hidden":`true`}),(0,C.jsx)(`span`,{className:`ms-kind-label`,children:T[e.kind]})]}),(0,C.jsx)(`div`,{className:`ms-atom-label`,children:e.label}),l&&(0,C.jsxs)(`div`,{className:`ms-card-quote`,"aria-hidden":!a,children:[(0,C.jsx)(`span`,{className:`ms-you-said`,children:`you said · `}),e.quote]})]})}function te({unsaid:e,onConfirm:t,onDismiss:n}){let r=!!(t||n);return(0,C.jsxs)(`div`,{className:`ms-card ms-unsaid`,"data-status":`maybe`,"data-interactive":r?`true`:void 0,style:{left:`820px`,top:`630px`,"--ms-i":20},"aria-label":`Maybe: ${e.label}`,children:[(0,C.jsxs)(`div`,{className:`ms-card-header`,children:[(0,C.jsx)(`span`,{className:`ms-kind-dot`,style:{background:`var(--warning)`},"aria-hidden":`true`}),(0,C.jsx)(`span`,{className:`ms-kind-label`,style:{color:`var(--warning)`},children:`Maybe`})]}),(0,C.jsx)(`div`,{className:`ms-atom-label`,children:e.label}),(0,C.jsx)(`div`,{className:`ms-card-quote`,children:e.why}),r&&(0,C.jsxs)(`div`,{className:`ms-unsaid-actions`,children:[t&&(0,C.jsx)(`button`,{type:`button`,className:`ms-unsaid-btn ms-unsaid-confirm`,onClick:e=>{e.stopPropagation(),t()},children:`Yes, that's it`}),n&&(0,C.jsx)(`button`,{type:`button`,className:`ms-unsaid-btn ms-unsaid-dismiss`,onClick:e=>{e.stopPropagation(),n()},children:`Not this`})]})]})}function ne(e){let t=(0,s.c)(4),{signal:n}=e,r;return t[0]!==n.content||t[1]!==n.id||t[2]!==n.kind?(r=(0,C.jsx)(`div`,{className:`ms-signal-chip`,"data-kind":n.kind,"aria-live":`polite`,children:n.content},n.id),t[0]=n.content,t[1]=n.id,t[2]=n.kind,t[3]=r):r=t[3],r}function re(e,t){let n=e.links.filter(e=>e.kind===`tensions`).length,r=e.atoms.filter(e=>e.kind===`question`).length,i=e.atoms.filter(e=>e.kind===`option`).length,a=e.atoms.length;return t&&n>0?n===1?`1 tension. ${t.a.label} vs ${t.b.label}.`:`${n} tensions. The real pull: ${t.a.label} vs ${t.b.label}.`:r>=3?`${r} open questions.`:i>=2?`${i} options. ${a} things on your mind.`:`${a} thought${a===1?``:`s`}. Here's what I heard.`}function A({center:e,atoms:t=[],links:n=[],clusters:s,unsaid:l,title:u,phase:d=`settled`,intent:f=`general`,isRevealing:p=!1,modelUnavailable:m=!1,currentSignal:h,onAction:g,onRemoveAtom:_,onConfirmUnsaid:v,onDismissUnsaid:y,liveTranscript:b,thoughtCount:x,delay:T=0,asBlock:A=!0}){let j=(0,o.useRef)(new Map),M=r(),N=d===`settled`,P=`${N}|${(s??[]).map(e=>`${e.id}:${e.atomIds.join(`,`)}`).join(`|`)}`,F=(0,o.useRef)(``),ie=P===F.current?j.current:void 0,{positions:I,centroidOf:ae,labels:L}=(0,o.useMemo)(()=>S(t,s,ie,!!l,N),[t,s,l,N]);j.current=I,F.current=P;let oe=!!g&&t.length>0,R=i({clamp:{min:.12,max:1.6},margin:20,insetBottom:oe?O:0}),{fitTo:z}=R,B=(0,o.useMemo)(()=>{let e=318,t=195.6;for(let n of I.values())e=Math.max(e,Math.abs(n.x-500)+150),t=Math.max(t,Math.abs(n.y-329)+78);for(let n of L)e=Math.max(e,Math.abs(n.x-500)+E),t=Math.max(t,Math.abs(n.y-329)+D);return l&&(e=Math.max(e,470),t=Math.max(t,379)),e+=24,t+=24,{x:500-e,y:329-t,w:2*e,h:2*t}},[I,L,l]);(0,o.useEffect)(()=>{z(B)},[B,z]);let V=[...n].sort((e,t)=>(e.kind===`tensions`)-+(t.kind===`tensions`)),H=(0,o.useMemo)(()=>new Map(t.map(e=>[e.id,e])),[t]),U=(0,o.useMemo)(()=>{let e=n.filter(e=>e.kind===`tensions`&&!e.provisional&&e.label);if(e.length===0)return null;let t=e=>H.get(e)?.weight??1,r=e.map(e=>({l:e,w:t(e.from)+t(e.to)})).sort((e,t)=>t.w-e.w||(e.l.from+e.l.to).localeCompare(t.l.from+t.l.to))[0],i=H.get(r.l.from),a=H.get(r.l.to);return!i||!a?null:{a:i,b:a,label:r.l.label}},[n,H]),W=(0,o.useMemo)(()=>t.filter(e=>(e.kind===`open_loop`||e.kind===`action`||e.kind===`question`)&&e.quote&&e.status!==`maybe`).map(e=>({id:e.id,label:e.label,quote:e.quote})),[t]),[G,K]=(0,o.useState)(null),[se,ce]=(0,o.useState)(()=>new Set),le=(0,o.useCallback)(e=>{ce(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},[]),q=(0,o.useRef)(!1),J=(0,o.useRef)(!1),Y=(0,o.useRef)(d===`settled`);(0,o.useEffect)(()=>{d===`settled`&&(f===`planning`&&!J.current?(J.current=!0,K(`plan`)):U&&!q.current&&f!==`planning`&&(q.current=!0,K(`tension`)));let e=Y.current;Y.current=d===`settled`,e&&d!==`settled`&&(q.current=!1,J.current=!1,K(null))},[d,U,f]);let X=d===`listening`?`listening`:d===`pausing`?`thinking`:`idle`,ue=d===`settled`?{decision:`THE DECISION`,planning:`THE PLAN`,exploration:`THE QUESTION`,processing:`WHAT'S GOING ON`,general:`WHAT I HEARD`}[f]??`WHAT I HEARD`:`WHAT I'M HEARING`,de={decision:`Help me decide`,planning:`Build this plan`,exploration:`Take me deeper`,processing:`Help me understand`,general:`Answer this`}[f]??`Answer this`,Z=(0,o.useRef)(null),fe=e=>{!N||e.button!==0||e.target.closest(`.ms-card, .ms-hub, button`)||(Z.current={x:e.clientX,y:e.clientY},e.currentTarget.setPointerCapture(e.pointerId))},pe=e=>{let t=Z.current;t&&(R.pan(e.clientX-t.x,e.clientY-t.y),Z.current={x:e.clientX,y:e.clientY})},Q=e=>{Z.current&&(Z.current=null,e.currentTarget.releasePointerCapture?.(e.pointerId))},$=(0,C.jsxs)(`div`,{className:`ms-canvas`,ref:R.viewportRef,onPointerDown:fe,onPointerMove:pe,onPointerUp:Q,onPointerCancel:Q,onWheel:e=>{N&&R.zoomAtClient(e.deltaY<0?1.12:1/1.12,e.clientX,e.clientY)},"data-interactive":!0,"data-explorable":N?`true`:void 0,style:{"--ms-cam-scale":R.camera.scale},"data-phase":d,"data-revealing":p?`true`:void 0,"data-has-actions":g&&t.length>0?`true`:void 0,role:`region`,"aria-label":`Mindshape — the shape of your thought`,children:[(0,C.jsxs)(`div`,{className:`ms-world`,style:{transform:R.transform,"--ms-cam-scale":R.camera.scale},children:[L.map(e=>(0,C.jsx)(`div`,{className:`ms-cluster-label`,style:{left:`${e.x}px`,top:`${e.y}px`},"aria-hidden":`true`,children:e.label},e.id)),(0,C.jsxs)(`svg`,{className:`ms-svg`,viewBox:`0 0 ${c} 700`,"aria-hidden":`true`,children:[t.filter(e=>e.status===`stable`).map((e,t)=>{let n=I.get(e.id),r=ae.get(e.id);return!n||!r?null:(0,C.jsx)(`path`,{className:`ms-spoke`,d:`M ${r.x} ${r.y} L ${n.x} ${n.y}`,pathLength:1,style:{"--ms-spoke-i":t}},`spoke-${e.id}`)}),V.map((e,t)=>{let n=I.get(e.from),r=I.get(e.to);if(!n||!r)return null;let i=e.kind===`tensions`,a=w[H.get(e.from)?.kind??`fear`],{d:o,lx:s,ly:c}=k(n.x,n.y,r.x,r.y),l=i&&U&&e.from===U.a.id&&e.to===U.b.id;return(0,C.jsxs)(`g`,{children:[(0,C.jsx)(`path`,{className:i?`ms-thread`:`ms-link`,"data-kind":e.kind,"data-hero":l?`true`:void 0,d:o,pathLength:i?1:void 0,stroke:i?a:void 0,style:{animationDelay:`${.3+t*.12}s`}}),i&&e.label&&(0,C.jsx)(`text`,{className:`ms-thread-label`,x:s,y:c,textAnchor:`middle`,dominantBaseline:`middle`,children:e.label})]},`link-${e.from}-${e.to}-${e.kind}`)})]}),N&&e&&(0,C.jsx)(`div`,{className:`ms-hub`,style:{left:`500px`,top:`329px`},"aria-live":`polite`,children:(0,C.jsx)(`span`,{className:`ms-hub-text`,children:e})}),t.map((e,t)=>{let n=I.get(e.id);return n?(0,C.jsx)(ee,{atom:e,x:n.x,y:n.y,order:t,onRemove:_},e.id):null}),l&&(0,C.jsx)(te,{unsaid:l,onConfirm:v,onDismiss:y})]}),(0,C.jsxs)(`div`,{className:`ms-center`,children:[h&&d!==`settled`&&(0,C.jsx)(ne,{signal:h}),!N&&(0,C.jsx)(`div`,{className:`ms-center-pip-wrap`,ref:M,children:(0,C.jsx)(a,{state:X,emotion:`neutral`,gaze:`center`})}),(0,C.jsx)(`div`,{className:`ms-center-label`,"aria-hidden":`true`,children:ue}),e&&!N&&(0,C.jsx)(`div`,{className:`ms-center-question`,"aria-live":`polite`,children:e}),d===`settled`&&(t.length>0?(0,C.jsx)(`div`,{className:`ms-synthesis-line`,"aria-live":`polite`,children:re({atoms:t,links:n},U)}):m?(0,C.jsx)(`div`,{className:`ms-synthesis-line`,"aria-live":`polite`,children:`I couldn't reach the model just now — nothing you said was lost. Try again in a moment.`}):(0,C.jsx)(`div`,{className:`ms-synthesis-line`,"aria-live":`polite`,children:`Didn't catch enough to map yet — keep talking and I'll shape it.`})),x!==void 0&&x>=0&&d!==`settled`&&(0,C.jsxs)(`div`,{className:`ms-thought-count`,"aria-live":`polite`,children:[(0,C.jsx)(`span`,{className:`ms-mic-dot`,"aria-hidden":`true`}),(()=>{let e=Math.max(x,t.length);return e===0?`Listening…`:`${e} thought${e===1?``:`s`}`})()]}),b&&(0,C.jsx)(`div`,{className:`ms-live-text`,"aria-live":`polite`,"aria-label":`Currently hearing`,children:b})]}),d===`settled`&&U&&G===`tension`&&(0,C.jsxs)(`div`,{className:`ms-tension-callout`,role:`dialog`,"aria-label":`The tension`,children:[(0,C.jsx)(`button`,{type:`button`,className:`ms-tension-close`,"aria-label":`Dismiss`,onClick:()=>K(null),children:`×`}),(0,C.jsx)(`span`,{className:`ms-tension-eyebrow`,children:`THE TENSION`}),(0,C.jsxs)(`p`,{className:`ms-tension-body`,children:[`You keep coming back to `,(0,C.jsxs)(`strong`,{children:[`“`,U.a.label,`.”`]}),` But you also said`,` `,(0,C.jsxs)(`strong`,{children:[`“`,U.b.label,`.”`]}),` Those may not be the same reason.`]}),g&&(0,C.jsx)(`button`,{type:`button`,className:`ms-tension-cta`,onClick:()=>g(`tell-apart`,{tension:{a:U.a.label,b:U.b.label}}),children:`Help me tell them apart →`})]}),G===`plan`&&(0,C.jsxs)(`div`,{className:`ms-plan`,role:`dialog`,"aria-label":`Turn into a plan`,children:[(0,C.jsxs)(`header`,{className:`ms-plan-head`,children:[(0,C.jsx)(`span`,{className:`ms-plan-title`,children:`The open loops, as steps you control`}),(0,C.jsx)(`button`,{type:`button`,className:`ms-tension-close`,"aria-label":`Close the plan`,onClick:()=>K(null),children:`×`})]}),W.length>0?(0,C.jsx)(`ol`,{className:`ms-plan-steps`,children:W.map(e=>{let t=se.has(e.id);return(0,C.jsxs)(`li`,{className:`ms-plan-step`,"data-done":t?`true`:void 0,children:[(0,C.jsx)(`button`,{type:`button`,className:`ms-plan-check`,role:`checkbox`,"aria-checked":t,"aria-label":`Mark “${e.label}” done`,onClick:()=>le(e.id),children:t&&(0,C.jsx)(`span`,{className:`ms-plan-check-mark`,"aria-hidden":`true`,children:`✓`})}),(0,C.jsxs)(`span`,{className:`ms-plan-step-body`,children:[(0,C.jsx)(`span`,{className:`ms-plan-step-label`,children:e.label}),(0,C.jsxs)(`span`,{className:`ms-plan-step-trace`,children:[`from “`,e.quote,`”`]})]})]},e.id)})}):(0,C.jsx)(`p`,{className:`ms-plan-empty`,children:`No open loops to turn into steps yet — keep talking and they’ll surface.`}),(0,C.jsxs)(`footer`,{className:`ms-plan-foot`,children:[(0,C.jsx)(`span`,{className:`ms-plan-note`,children:`Every step traces back to something you said — nothing invented.`}),g&&W.length>0&&(0,C.jsx)(`button`,{type:`button`,className:`ms-action-btn ms-action-primary`,onClick:()=>g(`commit-plan`),children:`Make it real →`})]})]}),d===`settled`&&G===`kept`&&(0,C.jsxs)(`div`,{className:`ms-kept`,role:`dialog`,"aria-label":`Kept this shape`,children:[(0,C.jsx)(`button`,{type:`button`,className:`ms-tension-close`,"aria-label":`Close`,onClick:()=>K(null),children:`×`}),(0,C.jsx)(`span`,{className:`ms-kept-eyebrow`,children:`KEPT THIS SHAPE`}),(0,C.jsx)(`p`,{className:`ms-kept-body`,children:`This is the shape of what you were thinking. It’s yours to revisit.`}),g&&(0,C.jsxs)(`div`,{className:`ms-kept-actions`,children:[(0,C.jsx)(`button`,{type:`button`,className:`ms-kept-btn`,onClick:()=>g(`answer`),children:`↻ Replay`}),(0,C.jsx)(`button`,{type:`button`,className:`ms-kept-btn`,onClick:()=>g(`share`),children:`↗ Share`}),(0,C.jsx)(`button`,{type:`button`,className:`ms-kept-btn`,onClick:()=>g(`present`),children:`▶ Present mode`})]}),(0,C.jsx)(`span`,{className:`ms-kept-memory`,children:`Nothing was saved to memory — Mavéa asks first before keeping anything personal.`})]}),g&&t.length>0&&(0,C.jsxs)(`div`,{className:`ms-actions`,role:`group`,"aria-label":`What to do with this map`,children:[(0,C.jsx)(`button`,{type:`button`,className:`ms-action-btn ms-action-primary`,onClick:()=>g(`answer`),children:de}),(0,C.jsx)(`button`,{type:`button`,className:`ms-action-btn`+(G===`plan`?` is-active`:``),"aria-pressed":G===`plan`,onClick:()=>K(e=>e===`plan`?null:`plan`),children:`Turn into a plan`}),d===`settled`&&(0,C.jsx)(`button`,{type:`button`,className:`ms-action-btn`+(G===`kept`?` is-active`:``),"aria-pressed":G===`kept`,onClick:()=>K(e=>e===`kept`?null:`kept`),children:`That’s it`}),d===`settled`&&(0,C.jsx)(`button`,{type:`button`,className:`ms-action-btn`,onClick:()=>g(`add-more`),children:`Add more`}),(0,C.jsx)(`button`,{type:`button`,className:`ms-action-btn`,onClick:()=>g(`not-quite`),children:`Not quite`})]})]});return A?(0,C.jsxs)(`div`,{className:`card reveal`,style:{"--delay":`${T}ms`},children:[u&&(0,C.jsx)(`div`,{className:`card-eyebrow`,children:u}),$]}):$}export{A as t};
@@ -1 +1 @@
1
- import{t as e}from"./react-BZJXY1be.js";import{t}from"./compiler-runtime-qQQXpJgv.js";import{t as n}from"./jsx-runtime-DeHZSEgm.js";import{n as r}from"./icons-gLFQTv74.js";import{n as i}from"./blockLabel-FogyzEQY.js";import{t as a}from"./useFocusTrap-CJmpNZv2.js";import{F as o,Y as s,m as c}from"./store-D16dGt7I.js";import{n as l,u}from"./useLiveConfig-CvOQTr0s.js";import{r as d}from"./format-BkvssSOr.js";import{t as f}from"./pin-C5_s4Ju5.js";var ee=t(),p=e(),m=n(),h=[{v:`15min`,label:`15M`},{v:`hourly`,label:`1H`},{v:`6h`,label:`6H`},{v:`daily`,label:`DAILY`},{v:`manual`,label:`MANUAL`}],g={"15min":{text:`15 MIN`,tone:`fast`},hourly:{text:`HOURLY`,tone:`steady`},"6h":{text:`6 HOURS`,tone:`steady`},daily:{text:`DAILY`,tone:`calm`},manual:{text:`MANUAL`,tone:`calm`}};function _(e){let t=(0,ee.c)(45),{block:n,conversationTitle:_,question:y,onClose:b,onAdded:x}=e,[S,C]=(0,p.useState)(v),w;t[0]===n?w=t[1]:(w=i(n),t[0]=n,t[1]=w);let T=w,[E,D]=(0,p.useState)(S.length===0),O;t[2]!==_||t[3]!==T||t[4]!==y?(O=()=>d(y?.trim()||_||T),t[2]=_,t[3]=T,t[4]=y,t[5]=O):O=t[5];let[k,te]=(0,p.useState)(O),[A,j]=(0,p.useState)(`manual`),M=(0,p.useRef)(!1),N,P;t[6]===Symbol.for(`react.memo_cache_sentinel`)?(N=()=>{let e=!0;return o().then(()=>{e&&C(e=>{if(e.length>0)return e;let t=c();return t.length>0&&!M.current&&D(!1),t})}),()=>{e=!1}},P=[],t[6]=N,t[7]=P):(N=t[6],P=t[7]),(0,p.useEffect)(N,P);let F=(0,p.useRef)(null),I;t[8]===b?I=t[9]:(I={onEscape:b},t[8]=b,t[9]=I),a(F,I);let L=(0,p.useRef)(null),R,z;t[10]===E?(R=t[11],z=t[12]):(R=()=>{E?L.current?.focus():F.current?.querySelector(`.pin-row`)?.focus()},z=[E],t[10]=E,t[11]=R,t[12]=z),(0,p.useEffect)(R,z);let B;t[13]!==n||t[14]!==x||t[15]!==b||t[16]!==y?(B=e=>{let t=f({block:n,question:y,target:e});t&&x?.(t.dashboardId,t.title),b()},t[13]=n,t[14]=x,t[15]=b,t[16]=y,t[17]=B):B=t[17];let V=B,H=s(A),U;t[18]===Symbol.for(`react.memo_cache_sentinel`)?(U=u(l()),t[18]=U):U=t[18];let W=!!U.apiKey,G;t[19]===b?G=t[20]:(G=e=>{e.target===e.currentTarget&&b()},t[19]=b,t[20]=G);let K;t[21]===b?K=t[22]:(K=e=>{e.target===e.currentTarget&&(e.key===`Enter`||e.key===` `)&&(e.key===` `&&e.preventDefault(),b())},t[21]=b,t[22]=K);let q=E?`New dashboard`:`Add to dashboard`,J;t[23]===q?J=t[24]:(J=(0,m.jsx)(`span`,{className:`pin-eyebrow`,children:q}),t[23]=q,t[24]=J);let Y;t[25]===T?Y=t[26]:(Y=(0,m.jsx)(`span`,{className:`pin-subject`,children:T}),t[25]=T,t[26]=Y);let X;t[27]!==J||t[28]!==Y?(X=(0,m.jsxs)(`div`,{className:`pin-head`,children:[J,Y]}),t[27]=J,t[28]=Y,t[29]=X):X=t[29];let Z;t[30]!==A||t[31]!==S||t[32]!==T||t[33]!==k||t[34]!==E||t[35]!==V||t[36]!==H?(Z=E?(0,m.jsxs)(`form`,{className:`pin-new-step`,onSubmit:e=>{e.preventDefault(),V({new:{title:k.trim()||T,cadence:A}})},children:[(0,m.jsxs)(`label`,{className:`pin-name-field`,children:[(0,m.jsx)(`span`,{className:`pin-plan-label`,children:`Name`}),(0,m.jsx)(`input`,{ref:L,className:`pin-name-input`,value:k,onChange:e=>{M.current=!0,te(e.target.value)},"aria-label":`Dashboard name`})]}),(0,m.jsxs)(`div`,{className:`pin-plan-cadence`,children:[(0,m.jsx)(`span`,{className:`pin-plan-label`,children:`Check cadence`}),(0,m.jsx)(`div`,{className:`pin-cadence-seg`,role:`group`,"aria-label":`Check cadence`,children:h.map(e=>(0,m.jsx)(`button`,{type:`button`,className:`pin-cadence-opt`+(e.v===A?` is-active`:``),"aria-pressed":e.v===A,onClick:()=>j(e.v),children:e.label},e.v))}),(0,m.jsx)(`p`,{className:`pin-plan-estimate`,children:H>0?W?`≈ ${H} searches/mo on your key, at this cadence.`:`≈ ${H} searches/mo once a key is connected in Live — parked until then.`:`No standing searches — this refreshes only when you ask.`})]}),(0,m.jsxs)(`div`,{className:`pin-plan-actions`,children:[S.length>0?(0,m.jsx)(`button`,{type:`button`,className:`pin-secondary`,onClick:()=>D(!1),children:`← Back`}):(0,m.jsx)(`span`,{}),(0,m.jsx)(`button`,{type:`submit`,className:`pin-plan-confirm`,children:`Create · first check queued`})]})]}):(0,m.jsxs)(`div`,{className:`pin-list`,role:`menu`,children:[(0,m.jsxs)(`button`,{type:`button`,className:`pin-row pin-new`,role:`menuitem`,onClick:()=>D(!0),children:[(0,m.jsx)(`span`,{className:`pin-row-ic`,children:(0,m.jsx)(r.plus,{})}),(0,m.jsxs)(`span`,{className:`pin-row-text`,children:[(0,m.jsx)(`span`,{className:`pin-row-title`,children:`New dashboard`}),(0,m.jsx)(`span`,{className:`pin-row-sub`,children:`Start one with this card`})]})]}),S.map(e=>{let t=g[e.cadence.data];return(0,m.jsxs)(`button`,{type:`button`,className:`pin-row`,role:`menuitem`,onClick:()=>V(e.id),children:[(0,m.jsx)(`span`,{className:`pin-row-ic`,children:(0,m.jsx)(r.table,{})}),(0,m.jsxs)(`span`,{className:`pin-row-text`,children:[(0,m.jsx)(`span`,{className:`pin-row-title`,children:d(e.title)}),(0,m.jsxs)(`span`,{className:`pin-row-sub`,children:[e.widgets.length,` `,e.widgets.length===1?`card`:`cards`]})]}),(0,m.jsx)(`span`,{className:`pin-row-cad pin-row-cad--${t.tone}`,children:t.text})]},e.id)})]}),t[30]=A,t[31]=S,t[32]=T,t[33]=k,t[34]=E,t[35]=V,t[36]=H,t[37]=Z):Z=t[37];let Q;t[38]!==X||t[39]!==Z?(Q=(0,m.jsxs)(`div`,{className:`pin-sheet`,ref:F,tabIndex:-1,role:`dialog`,"aria-modal":`true`,"aria-label":`Add to a dashboard`,children:[X,Z]}),t[38]=X,t[39]=Z,t[40]=Q):Q=t[40];let $;return t[41]!==G||t[42]!==K||t[43]!==Q?($=(0,m.jsx)(`div`,{className:`pin-scrim`,onClick:G,role:`button`,tabIndex:0,"aria-label":`Close`,onKeyDown:K,children:Q}),t[41]=G,t[42]=K,t[43]=Q,t[44]=$):$=t[44],$}function v(){return c()}export{_ as PinToDashboard};
1
+ import{t as e}from"./react-BZJXY1be.js";import{t}from"./compiler-runtime-qQQXpJgv.js";import{t as n}from"./jsx-runtime-DeHZSEgm.js";import{n as r}from"./icons-gLFQTv74.js";import{n as i}from"./blockLabel-FogyzEQY.js";import{t as a}from"./useFocusTrap-CJmpNZv2.js";import{F as o,Y as s,m as c}from"./store-D16dGt7I.js";import{n as l,u}from"./useLiveConfig-CvOQTr0s.js";import{r as d}from"./format-BkvssSOr.js";import{t as f}from"./pin-IyE46GaQ.js";var ee=t(),p=e(),m=n(),h=[{v:`15min`,label:`15M`},{v:`hourly`,label:`1H`},{v:`6h`,label:`6H`},{v:`daily`,label:`DAILY`},{v:`manual`,label:`MANUAL`}],g={"15min":{text:`15 MIN`,tone:`fast`},hourly:{text:`HOURLY`,tone:`steady`},"6h":{text:`6 HOURS`,tone:`steady`},daily:{text:`DAILY`,tone:`calm`},manual:{text:`MANUAL`,tone:`calm`}};function _(e){let t=(0,ee.c)(45),{block:n,conversationTitle:_,question:y,onClose:b,onAdded:x}=e,[S,C]=(0,p.useState)(v),w;t[0]===n?w=t[1]:(w=i(n),t[0]=n,t[1]=w);let T=w,[E,D]=(0,p.useState)(S.length===0),O;t[2]!==_||t[3]!==T||t[4]!==y?(O=()=>d(y?.trim()||_||T),t[2]=_,t[3]=T,t[4]=y,t[5]=O):O=t[5];let[k,te]=(0,p.useState)(O),[A,j]=(0,p.useState)(`manual`),M=(0,p.useRef)(!1),N,P;t[6]===Symbol.for(`react.memo_cache_sentinel`)?(N=()=>{let e=!0;return o().then(()=>{e&&C(e=>{if(e.length>0)return e;let t=c();return t.length>0&&!M.current&&D(!1),t})}),()=>{e=!1}},P=[],t[6]=N,t[7]=P):(N=t[6],P=t[7]),(0,p.useEffect)(N,P);let F=(0,p.useRef)(null),I;t[8]===b?I=t[9]:(I={onEscape:b},t[8]=b,t[9]=I),a(F,I);let L=(0,p.useRef)(null),R,z;t[10]===E?(R=t[11],z=t[12]):(R=()=>{E?L.current?.focus():F.current?.querySelector(`.pin-row`)?.focus()},z=[E],t[10]=E,t[11]=R,t[12]=z),(0,p.useEffect)(R,z);let B;t[13]!==n||t[14]!==x||t[15]!==b||t[16]!==y?(B=e=>{let t=f({block:n,question:y,target:e});t&&x?.(t.dashboardId,t.title),b()},t[13]=n,t[14]=x,t[15]=b,t[16]=y,t[17]=B):B=t[17];let V=B,H=s(A),U;t[18]===Symbol.for(`react.memo_cache_sentinel`)?(U=u(l()),t[18]=U):U=t[18];let W=!!U.apiKey,G;t[19]===b?G=t[20]:(G=e=>{e.target===e.currentTarget&&b()},t[19]=b,t[20]=G);let K;t[21]===b?K=t[22]:(K=e=>{e.target===e.currentTarget&&(e.key===`Enter`||e.key===` `)&&(e.key===` `&&e.preventDefault(),b())},t[21]=b,t[22]=K);let q=E?`New dashboard`:`Add to dashboard`,J;t[23]===q?J=t[24]:(J=(0,m.jsx)(`span`,{className:`pin-eyebrow`,children:q}),t[23]=q,t[24]=J);let Y;t[25]===T?Y=t[26]:(Y=(0,m.jsx)(`span`,{className:`pin-subject`,children:T}),t[25]=T,t[26]=Y);let X;t[27]!==J||t[28]!==Y?(X=(0,m.jsxs)(`div`,{className:`pin-head`,children:[J,Y]}),t[27]=J,t[28]=Y,t[29]=X):X=t[29];let Z;t[30]!==A||t[31]!==S||t[32]!==T||t[33]!==k||t[34]!==E||t[35]!==V||t[36]!==H?(Z=E?(0,m.jsxs)(`form`,{className:`pin-new-step`,onSubmit:e=>{e.preventDefault(),V({new:{title:k.trim()||T,cadence:A}})},children:[(0,m.jsxs)(`label`,{className:`pin-name-field`,children:[(0,m.jsx)(`span`,{className:`pin-plan-label`,children:`Name`}),(0,m.jsx)(`input`,{ref:L,className:`pin-name-input`,value:k,onChange:e=>{M.current=!0,te(e.target.value)},"aria-label":`Dashboard name`})]}),(0,m.jsxs)(`div`,{className:`pin-plan-cadence`,children:[(0,m.jsx)(`span`,{className:`pin-plan-label`,children:`Check cadence`}),(0,m.jsx)(`div`,{className:`pin-cadence-seg`,role:`group`,"aria-label":`Check cadence`,children:h.map(e=>(0,m.jsx)(`button`,{type:`button`,className:`pin-cadence-opt`+(e.v===A?` is-active`:``),"aria-pressed":e.v===A,onClick:()=>j(e.v),children:e.label},e.v))}),(0,m.jsx)(`p`,{className:`pin-plan-estimate`,children:H>0?W?`≈ ${H} searches/mo on your key, at this cadence.`:`≈ ${H} searches/mo once a key is connected in Live — parked until then.`:`No standing searches — this refreshes only when you ask.`})]}),(0,m.jsxs)(`div`,{className:`pin-plan-actions`,children:[S.length>0?(0,m.jsx)(`button`,{type:`button`,className:`pin-secondary`,onClick:()=>D(!1),children:`← Back`}):(0,m.jsx)(`span`,{}),(0,m.jsx)(`button`,{type:`submit`,className:`pin-plan-confirm`,children:`Create · first check queued`})]})]}):(0,m.jsxs)(`div`,{className:`pin-list`,role:`menu`,children:[(0,m.jsxs)(`button`,{type:`button`,className:`pin-row pin-new`,role:`menuitem`,onClick:()=>D(!0),children:[(0,m.jsx)(`span`,{className:`pin-row-ic`,children:(0,m.jsx)(r.plus,{})}),(0,m.jsxs)(`span`,{className:`pin-row-text`,children:[(0,m.jsx)(`span`,{className:`pin-row-title`,children:`New dashboard`}),(0,m.jsx)(`span`,{className:`pin-row-sub`,children:`Start one with this card`})]})]}),S.map(e=>{let t=g[e.cadence.data];return(0,m.jsxs)(`button`,{type:`button`,className:`pin-row`,role:`menuitem`,onClick:()=>V(e.id),children:[(0,m.jsx)(`span`,{className:`pin-row-ic`,children:(0,m.jsx)(r.table,{})}),(0,m.jsxs)(`span`,{className:`pin-row-text`,children:[(0,m.jsx)(`span`,{className:`pin-row-title`,children:d(e.title)}),(0,m.jsxs)(`span`,{className:`pin-row-sub`,children:[e.widgets.length,` `,e.widgets.length===1?`card`:`cards`]})]}),(0,m.jsx)(`span`,{className:`pin-row-cad pin-row-cad--${t.tone}`,children:t.text})]},e.id)})]}),t[30]=A,t[31]=S,t[32]=T,t[33]=k,t[34]=E,t[35]=V,t[36]=H,t[37]=Z):Z=t[37];let Q;t[38]!==X||t[39]!==Z?(Q=(0,m.jsxs)(`div`,{className:`pin-sheet`,ref:F,tabIndex:-1,role:`dialog`,"aria-modal":`true`,"aria-label":`Add to a dashboard`,children:[X,Z]}),t[38]=X,t[39]=Z,t[40]=Q):Q=t[40];let $;return t[41]!==G||t[42]!==K||t[43]!==Q?($=(0,m.jsx)(`div`,{className:`pin-scrim`,onClick:G,role:`button`,tabIndex:0,"aria-label":`Close`,onKeyDown:K,children:Q}),t[41]=G,t[42]=K,t[43]=Q,t[44]=$):$=t[44],$}function v(){return c()}export{_ as PinToDashboard};
@@ -1 +1 @@
1
- import{t as e}from"./react-BZJXY1be.js";import{t}from"./compiler-runtime-qQQXpJgv.js";import{t as n}from"./jsx-runtime-DeHZSEgm.js";import{S as r,X as i,Y as a,a as o,d as s,f as c}from"./store-D16dGt7I.js";import{l}from"./useDashboardLoop-Cnxmf7wU.js";import{i as u,n as d,r as f}from"./confirmAdd-D-TTCQ31.js";/* empty css *//* empty css */import{t as ee}from"./relate-CCma73G9.js";var p=e(),m=t();function h(e){return e*4}function g(e,t,n,r={}){let i=`template:${e.id}`,a=new Map,o=[];e.metrics.forEach((e,i)=>{if(r.metrics?.[i]===!1)return;let s=`m-${n}-${i}`,c=e.label(t);a.set(i,s),o.push({id:s,label:c,query:e.query(t),...e.unit?{unit:e.unit}:{},sourceQuote:{text:c,saidAt:n},lastValue:null,origin:`empty`})});let s=[];e.tripwires.forEach((e,i)=>{if(!(r.tripwires?.[i]??e.enabledByDefault))return;let o=a.get(e.metricIndex);if(!o)return;let c=e.label(t);s.push({id:`t-${n}-${i}`,label:c,metricId:o,comparator:e.comparator,threshold:e.threshold,...e.unit?{unit:e.unit}:{},sourceQuote:{text:c,saidAt:n},state:`AWAITING`})});let c=[],l=[];return e.widgets.forEach((e,s)=>{if(r.widgets?.[s]===!1)return;if(e.metricIndex!==void 0){let t=a.get(e.metricIndex);if(!t)return;let r=o.find(e=>e.id===t);c.push({id:`w-${n}-${s}`,block:{type:e.blockType,col:h(e.span),id:`wblk-${n}-${s}`,num:String(c.length+1),props:{title:r.label,stat:`—`,conf:`inferred`,summary:r.sourceQuote.text}},span:e.span,metricId:t,fromSource:i});return}let u=e.refreshQuery?.(t),d=e.seedProps?.(t)??{};l.push({id:`w-${n}-${s}`,block:{type:e.blockType,col:h(e.span),id:`wblk-${n}-${s}`,props:u?{title:u,...d}:d},span:e.span,fromSource:i,...u?{refreshQuery:u}:{}})}),{metrics:o,tripwires:s,widgets:[...c,...l]}}function te(e,t,n={}){let a=n.now??Date.now(),o=`template:${e.id}`,s=e.title(t),{metrics:c,tripwires:l,widgets:u}=g(e,t,a,n.toggles),d=l.length>0,f={id:`w-thesis`,block:{type:`thesis`,col:8,id:`w-thesis`,props:{reasoning:e.thesis(t)}},span:2,fromSource:o},ee={id:`w-align`,block:{type:`alignmentgauge`,col:4,id:`w-align`,props:{pct:null}},span:1,fromSource:o},p={id:`w-alerts`,block:{type:`standingalerts`,col:4,id:`w-alerts`,props:{alerts:[]}},span:1,fromSource:o},m={id:`w-sources`,block:{type:`sourceslineage`,col:8,id:`w-sources`,props:{rows:[]}},span:2,fromSource:o},h=n.cadence??e.cadence,te=c.some(e=>e.query.trim()!==``&&!e.blankKey)||u.some(e=>e.refreshQuery?.trim());return{id:r(),title:s,question:s,thesis:{text:e.thesis(t),saidAt:a},tripwires:l,metrics:c,sources:[{kind:`ORIGIN`,conversationId:o,title:e.label,contributed:`Started from the '${e.label}' template.`,at:a}],widgets:[...d?[f,ee]:[],...u,...d?[p]:[],m],cadence:h,smartTrigger:d,alerts:{inApp:!0,push:!1},...e.topic?{topic:e.topic}:{},createdAt:a,updatedAt:a,nextDataAt:i(h,a),nextAiAt:2**53-1,lastRefreshedAt:null,...te?{oneShotAt:a,oneShotLabel:`first check`}:{}}}function ne(e,t,n,r=Date.now()){let i=new Set(e.metrics.map(e=>l(e.label))),a=new Set(e.tripwires.map(e=>l(e.label))),o=g(t,n,r),s=o.metrics.filter(e=>!i.has(l(e.label))),u=new Set(s.map(e=>e.id)),d=o.tripwires.filter(e=>u.has(e.metricId)&&!a.has(l(e.label))),f=o.widgets.filter(e=>!e.metricId||u.has(e.metricId)),ee=s.length+d.length,p=[];s.length&&p.push(`${s.length} metric${s.length>1?`s`:``}`),d.length&&p.push(`${d.length} alert${d.length>1?`s`:``}`);let m={kind:`ADDED`,conversationId:`template:${t.id}`,title:t.label,contributed:p.length?`Added: ${p.join(` + `)}`:`Linked the '${t.label}' template.`,at:r};return c(e.id,{metrics:s,tripwires:d,widgets:f,source:m}),ee}var _={chart:{labels:[],series:[]},scoreboard:{games:[]},standings:{rows:[]},forecast:{days:[]},list:{items:[]},timeline:{events:[]}};function re(e){return{id:`plan`,label:`Track anything`,blurb:``,input:{key:`ask`,label:`Track`,placeholder:``},title:()=>e.title,thesis:()=>`Tracking ${e.title}.`,metrics:e.metrics.map(e=>({label:()=>e.label,query:()=>e.query,...e.unit?{unit:e.unit}:{}})),tripwires:[],widgets:[...e.metrics.map((e,t)=>({blockType:`insight`,span:1,metricIndex:t})),...e.widgets.map(e=>({blockType:e.blockType,span:e.span,refreshQuery:()=>e.query,seedProps:()=>({..._[e.blockType]??{}})}))],cadence:{data:e.cadence,ai:`manual`}}}var v=n(),ie={"15min":`checks every 15 minutes while open`,hourly:`checks hourly while open`,"6h":`checks every 6 hours while open`,daily:`checks daily while open`,manual:`refreshes only when you ask`};function ae(e,t){let n=[...e];return n[t]=!n[t],n}function oe(e){let t=(0,m.c)(102),{plan:n,ask:r,existing:i,onDone:c}=e,[l,h]=(0,p.useState)(n.title),g;t[0]===n.metrics?g=t[1]:(g=()=>n.metrics.map(le),t[0]=n.metrics,t[1]=g);let[_,oe]=(0,p.useState)(g),y;t[2]===n.widgets?y=t[3]:(y=()=>n.widgets.map(ce),t[2]=n.widgets,t[3]=y);let[b,de]=(0,p.useState)(y),[x,fe]=(0,p.useState)(null),[S,pe]=(0,p.useState)(`manual`),C;t[4]===_?C=t[5]:(C=_.filter(Boolean),t[4]=_,t[5]=C);let me=C.length,w;t[6]===b?w=t[7]:(w=b.filter(Boolean),t[6]=b,t[7]=w);let T=me+w.length,he=a(S),[E,ge]=(0,p.useState)(!1),[D,_e]=(0,p.useState)(null),ve=(0,p.useRef)(!0),O,k;t[8]===Symbol.for(`react.memo_cache_sentinel`)?(O=()=>(ve.current=!0,()=>{ve.current=!1}),k=[],t[8]=O,t[9]=k):(O=t[8],k=t[9]),(0,p.useEffect)(O,k);let A;t[10]!==r||t[11]!==S||t[12]!==E||t[13]!==T||t[14]!==_||t[15]!==l||t[16]!==c||t[17]!==n||t[18]!==b?(A=async()=>{if(T===0||E)return;let e=re(n),t=[...n.metrics.map(se),...b],i=te(e,r.trim(),{toggles:{metrics:_,widgets:t},cadence:{data:S,ai:`manual`}});i.title=l.trim()||i.title,i.question=r.trim(),o(i),c(i.id),u(i.id,null)},t[10]=r,t[11]=S,t[12]=E,t[13]=T,t[14]=_,t[15]=l,t[16]=c,t[17]=n,t[18]=b,t[19]=A):A=t[19];let j=A,M;t[20]!==r||t[21]!==E||t[22]!==c||t[23]!==n?(M=async e=>{if(E)return;let t=d(e);ne(e,re(n),r.trim()),s(e.id),ge(!0),_e(null);let i=await u(e.id,t);if(ve.current){if(ge(!1),i!==`confirmed`){_e(f(i,!1));return}c(e.id)}},t[20]=r,t[21]=E,t[22]=c,t[23]=n,t[24]=M):M=t[24];let ye=M,N;t[25]!==r||t[26]!==j||t[27]!==i||t[28]!==n.title?(N=()=>{let e=ee(i,{text:`${n.title} ${r}`});if(e){fe(e);return}j()},t[25]=r,t[26]=j,t[27]=i,t[28]=n.title,t[29]=N):N=t[29];let P=N;if(x){let e;t[30]===x.title?e=t[31]:(e=(0,v.jsxs)(`p`,{className:`tpl-interstitial-text`,children:[`This looks related to your existing “`,x.title,`” dashboard — fold this in instead of creating a new one?`]}),t[30]=x.title,t[31]=e);let n;t[32]!==ye||t[33]!==x?(n=()=>void ye(x),t[32]=ye,t[33]=x,t[34]=n):n=t[34];let r=E?`Confirming live data…`:`Fold into “${x.title}”`,i;t[35]!==E||t[36]!==n||t[37]!==r?(i=(0,v.jsx)(`button`,{type:`button`,className:`tpl-fold-btn`,disabled:E,onClick:n,children:r}),t[35]=E,t[36]=n,t[37]=r,t[38]=i):i=t[38];let a;t[39]===j?a=t[40]:(a=()=>void j(),t[39]=j,t[40]=a);let o;t[41]!==E||t[42]!==a?(o=(0,v.jsx)(`button`,{type:`button`,className:`tpl-create-anyway`,disabled:E,onClick:a,children:`Create new anyway`}),t[41]=E,t[42]=a,t[43]=o):o=t[43];let s;t[44]!==i||t[45]!==o?(s=(0,v.jsxs)(`div`,{className:`tpl-interstitial-actions`,children:[i,o]}),t[44]=i,t[45]=o,t[46]=s):s=t[46];let c;t[47]===E?c=t[48]:(c=E&&(0,v.jsx)(`p`,{className:`tpl-cadence-note`,children:`Checking a live source before this joins your board — a search can take up to a minute. You can close this; the result lands in your check log either way.`}),t[47]=E,t[48]=c);let l;t[49]===D?l=t[50]:(l=D&&(0,v.jsx)(`p`,{className:`tpl-cadence-note`,children:D}),t[49]=D,t[50]=l);let u;return t[51]!==e||t[52]!==s||t[53]!==c||t[54]!==l?(u=(0,v.jsxs)(`div`,{className:`tpl-interstitial`,children:[e,s,c,l]}),t[51]=e,t[52]=s,t[53]=c,t[54]=l,t[55]=u):u=t[55],u}let F;t[56]===Symbol.for(`react.memo_cache_sentinel`)?(F=(0,v.jsx)(`span`,{className:`xt-section-label`,children:`Dashboard name`}),t[56]=F):F=t[56];let I;t[57]===Symbol.for(`react.memo_cache_sentinel`)?(I=e=>h(e.target.value),t[57]=I):I=t[57];let L;t[58]===l?L=t[59]:(L=(0,v.jsxs)(`label`,{className:`tpl-field`,children:[F,(0,v.jsx)(`input`,{className:`xt-name`,value:l,onChange:I,"aria-label":`Dashboard name`})]}),t[58]=l,t[59]=L);let R;t[60]!==_||t[61]!==n.metrics?(R=n.metrics.length>0&&(0,v.jsxs)(`div`,{className:`tpl-chip-group`,children:[(0,v.jsx)(`span`,{className:`xt-section-label`,children:`Numbers to watch`}),(0,v.jsx)(`div`,{className:`tpl-chips`,children:n.metrics.map((e,t)=>(0,v.jsx)(ue,{kind:`METRIC`,label:e.label,detail:e.query,on:_[t]??!0,onToggle:()=>oe(e=>ae(e,t))},`m${t}`))})]}),t[60]=_,t[61]=n.metrics,t[62]=R):R=t[62];let z;t[63]!==n.widgets||t[64]!==b?(z=n.widgets.length>0&&(0,v.jsxs)(`div`,{className:`tpl-chip-group`,children:[(0,v.jsx)(`span`,{className:`xt-section-label`,children:`Live cards`}),(0,v.jsx)(`div`,{className:`tpl-chips`,children:n.widgets.map((e,t)=>(0,v.jsx)(ue,{kind:`CARD`,label:e.query,detail:e.blockType,on:b[t]??!0,onToggle:()=>de(e=>ae(e,t))},`w${t}`))})]}),t[63]=n.widgets,t[64]=b,t[65]=z):z=t[65];let B;t[66]===Symbol.for(`react.memo_cache_sentinel`)?(B=(0,v.jsx)(`span`,{className:`xt-section-label`,children:`How often`}),t[66]=B):B=t[66];let be=`tpl-chip xt-comp--goal${S===`manual`?``:` tpl-chip-off`}`,xe=S===`manual`,V,H;t[67]===Symbol.for(`react.memo_cache_sentinel`)?(V=()=>pe(`manual`),H=(0,v.jsx)(`span`,{className:`tpl-chip-label`,children:`Manual — only when you ask`}),t[67]=V,t[68]=H):(V=t[67],H=t[68]);let U;t[69]!==be||t[70]!==xe?(U=(0,v.jsx)(`button`,{type:`button`,className:be,"aria-pressed":xe,onClick:V,children:H}),t[69]=be,t[70]=xe,t[71]=U):U=t[71];let W;t[72]!==S||t[73]!==n.cadence?(W=n.cadence!==`manual`&&(0,v.jsx)(`button`,{type:`button`,className:`tpl-chip xt-comp--metric${S===n.cadence?``:` tpl-chip-off`}`,"aria-pressed":S===n.cadence,onClick:()=>pe(n.cadence),title:ie[n.cadence],children:(0,v.jsxs)(`span`,{className:`tpl-chip-label`,children:[`Suggested — `,ie[n.cadence]]})}),t[72]=S,t[73]=n.cadence,t[74]=W):W=t[74];let G;t[75]!==U||t[76]!==W?(G=(0,v.jsxs)(`div`,{className:`tpl-chip-group`,children:[B,(0,v.jsxs)(`div`,{className:`tpl-chips`,children:[U,W]})]}),t[75]=U,t[76]=W,t[77]=G):G=t[77];let Se=he>0?`≈ ${he} searches/mo on your key, at this cadence.`:`No standing searches — this refreshes only when you ask.`,K;t[78]===Se?K=t[79]:(K=(0,v.jsx)(`p`,{className:`dash-plan-estimate`,children:Se}),t[78]=Se,t[79]=K);let Ce=ie[S],q;t[80]===Ce?q=t[81]:(q=(0,v.jsx)(`span`,{className:`tpl-cadence-note`,children:Ce}),t[80]=Ce,t[81]=q);let J=T===0||E,we=E?`Confirming live data…`:`Create dashboard →`,Y;t[82]!==P||t[83]!==J||t[84]!==we?(Y=(0,v.jsx)(`button`,{type:`button`,className:`tpl-create`,onClick:P,disabled:J,children:we}),t[82]=P,t[83]=J,t[84]=we,t[85]=Y):Y=t[85];let X;t[86]!==q||t[87]!==Y?(X=(0,v.jsxs)(`div`,{className:`xt-build-row`,children:[q,Y]}),t[86]=q,t[87]=Y,t[88]=X):X=t[88];let Z;t[89]===E?Z=t[90]:(Z=E&&(0,v.jsx)(`p`,{className:`tpl-cadence-note`,children:`Checking a live source before this joins your board — a search can take up to a minute. You can close this; the result lands in your check log either way.`}),t[89]=E,t[90]=Z);let Q;t[91]===D?Q=t[92]:(Q=D&&(0,v.jsx)(`p`,{className:`tpl-cadence-note`,children:D}),t[91]=D,t[92]=Q);let $;return t[93]!==L||t[94]!==R||t[95]!==z||t[96]!==G||t[97]!==K||t[98]!==X||t[99]!==Z||t[100]!==Q?($=(0,v.jsxs)(`div`,{className:`tpl-form`,children:[L,R,z,G,K,X,Z,Q]}),t[93]=L,t[94]=R,t[95]=z,t[96]=G,t[97]=K,t[98]=X,t[99]=Z,t[100]=Q,t[101]=$):$=t[101],$}function se(){return!0}function ce(){return!0}function le(){return!0}function ue(e){let t=(0,m.c)(14),{kind:n,label:r,detail:i,on:a,onToggle:o}=e,s=`tpl-chip xt-comp--${n===`METRIC`?`metric`:`goal`}${a?``:` tpl-chip-off`}`,c;t[0]===n?c=t[1]:(c=(0,v.jsx)(`span`,{className:`tpl-chip-kind`,children:n}),t[0]=n,t[1]=c);let l;t[2]===r?l=t[3]:(l=(0,v.jsx)(`span`,{className:`tpl-chip-label`,children:r}),t[2]=r,t[3]=l);let u=a?`Included ✓`:`Removed ✕`,d;t[4]===u?d=t[5]:(d=(0,v.jsx)(`span`,{className:`tpl-chip-state`,children:u}),t[4]=u,t[5]=d);let f;return t[6]!==i||t[7]!==a||t[8]!==o||t[9]!==s||t[10]!==c||t[11]!==l||t[12]!==d?(f=(0,v.jsxs)(`button`,{type:`button`,className:s,onClick:o,"aria-pressed":a,title:i,children:[c,l,d]}),t[6]=i,t[7]=a,t[8]=o,t[9]=s,t[10]=c,t[11]=l,t[12]=d,t[13]=f):f=t[13],f}export{oe as PlanReview};
1
+ import{t as e}from"./react-BZJXY1be.js";import{t}from"./compiler-runtime-qQQXpJgv.js";import{t as n}from"./jsx-runtime-DeHZSEgm.js";import{S as r,X as i,Y as a,a as o,d as s,f as c}from"./store-D16dGt7I.js";import{l}from"./useDashboardLoop-SPlr1Mrm.js";import{i as u,n as d,r as f}from"./confirmAdd-CUFiPNWz.js";/* empty css *//* empty css */import{t as ee}from"./relate-ZHm-ZvaR.js";var p=e(),m=t();function h(e){return e*4}function g(e,t,n,r={}){let i=`template:${e.id}`,a=new Map,o=[];e.metrics.forEach((e,i)=>{if(r.metrics?.[i]===!1)return;let s=`m-${n}-${i}`,c=e.label(t);a.set(i,s),o.push({id:s,label:c,query:e.query(t),...e.unit?{unit:e.unit}:{},sourceQuote:{text:c,saidAt:n},lastValue:null,origin:`empty`})});let s=[];e.tripwires.forEach((e,i)=>{if(!(r.tripwires?.[i]??e.enabledByDefault))return;let o=a.get(e.metricIndex);if(!o)return;let c=e.label(t);s.push({id:`t-${n}-${i}`,label:c,metricId:o,comparator:e.comparator,threshold:e.threshold,...e.unit?{unit:e.unit}:{},sourceQuote:{text:c,saidAt:n},state:`AWAITING`})});let c=[],l=[];return e.widgets.forEach((e,s)=>{if(r.widgets?.[s]===!1)return;if(e.metricIndex!==void 0){let t=a.get(e.metricIndex);if(!t)return;let r=o.find(e=>e.id===t);c.push({id:`w-${n}-${s}`,block:{type:e.blockType,col:h(e.span),id:`wblk-${n}-${s}`,num:String(c.length+1),props:{title:r.label,stat:`—`,conf:`inferred`,summary:r.sourceQuote.text}},span:e.span,metricId:t,fromSource:i});return}let u=e.refreshQuery?.(t),d=e.seedProps?.(t)??{};l.push({id:`w-${n}-${s}`,block:{type:e.blockType,col:h(e.span),id:`wblk-${n}-${s}`,props:u?{title:u,...d}:d},span:e.span,fromSource:i,...u?{refreshQuery:u}:{}})}),{metrics:o,tripwires:s,widgets:[...c,...l]}}function te(e,t,n={}){let a=n.now??Date.now(),o=`template:${e.id}`,s=e.title(t),{metrics:c,tripwires:l,widgets:u}=g(e,t,a,n.toggles),d=l.length>0,f={id:`w-thesis`,block:{type:`thesis`,col:8,id:`w-thesis`,props:{reasoning:e.thesis(t)}},span:2,fromSource:o},ee={id:`w-align`,block:{type:`alignmentgauge`,col:4,id:`w-align`,props:{pct:null}},span:1,fromSource:o},p={id:`w-alerts`,block:{type:`standingalerts`,col:4,id:`w-alerts`,props:{alerts:[]}},span:1,fromSource:o},m={id:`w-sources`,block:{type:`sourceslineage`,col:8,id:`w-sources`,props:{rows:[]}},span:2,fromSource:o},h=n.cadence??e.cadence,te=c.some(e=>e.query.trim()!==``&&!e.blankKey)||u.some(e=>e.refreshQuery?.trim());return{id:r(),title:s,question:s,thesis:{text:e.thesis(t),saidAt:a},tripwires:l,metrics:c,sources:[{kind:`ORIGIN`,conversationId:o,title:e.label,contributed:`Started from the '${e.label}' template.`,at:a}],widgets:[...d?[f,ee]:[],...u,...d?[p]:[],m],cadence:h,smartTrigger:d,alerts:{inApp:!0,push:!1},...e.topic?{topic:e.topic}:{},createdAt:a,updatedAt:a,nextDataAt:i(h,a),nextAiAt:2**53-1,lastRefreshedAt:null,...te?{oneShotAt:a,oneShotLabel:`first check`}:{}}}function ne(e,t,n,r=Date.now()){let i=new Set(e.metrics.map(e=>l(e.label))),a=new Set(e.tripwires.map(e=>l(e.label))),o=g(t,n,r),s=o.metrics.filter(e=>!i.has(l(e.label))),u=new Set(s.map(e=>e.id)),d=o.tripwires.filter(e=>u.has(e.metricId)&&!a.has(l(e.label))),f=o.widgets.filter(e=>!e.metricId||u.has(e.metricId)),ee=s.length+d.length,p=[];s.length&&p.push(`${s.length} metric${s.length>1?`s`:``}`),d.length&&p.push(`${d.length} alert${d.length>1?`s`:``}`);let m={kind:`ADDED`,conversationId:`template:${t.id}`,title:t.label,contributed:p.length?`Added: ${p.join(` + `)}`:`Linked the '${t.label}' template.`,at:r};return c(e.id,{metrics:s,tripwires:d,widgets:f,source:m}),ee}var _={chart:{labels:[],series:[]},scoreboard:{games:[]},standings:{rows:[]},forecast:{days:[]},list:{items:[]},timeline:{events:[]}};function re(e){return{id:`plan`,label:`Track anything`,blurb:``,input:{key:`ask`,label:`Track`,placeholder:``},title:()=>e.title,thesis:()=>`Tracking ${e.title}.`,metrics:e.metrics.map(e=>({label:()=>e.label,query:()=>e.query,...e.unit?{unit:e.unit}:{}})),tripwires:[],widgets:[...e.metrics.map((e,t)=>({blockType:`insight`,span:1,metricIndex:t})),...e.widgets.map(e=>({blockType:e.blockType,span:e.span,refreshQuery:()=>e.query,seedProps:()=>({..._[e.blockType]??{}})}))],cadence:{data:e.cadence,ai:`manual`}}}var v=n(),ie={"15min":`checks every 15 minutes while open`,hourly:`checks hourly while open`,"6h":`checks every 6 hours while open`,daily:`checks daily while open`,manual:`refreshes only when you ask`};function ae(e,t){let n=[...e];return n[t]=!n[t],n}function oe(e){let t=(0,m.c)(102),{plan:n,ask:r,existing:i,onDone:c}=e,[l,h]=(0,p.useState)(n.title),g;t[0]===n.metrics?g=t[1]:(g=()=>n.metrics.map(le),t[0]=n.metrics,t[1]=g);let[_,oe]=(0,p.useState)(g),y;t[2]===n.widgets?y=t[3]:(y=()=>n.widgets.map(ce),t[2]=n.widgets,t[3]=y);let[b,de]=(0,p.useState)(y),[x,fe]=(0,p.useState)(null),[S,pe]=(0,p.useState)(`manual`),C;t[4]===_?C=t[5]:(C=_.filter(Boolean),t[4]=_,t[5]=C);let me=C.length,w;t[6]===b?w=t[7]:(w=b.filter(Boolean),t[6]=b,t[7]=w);let T=me+w.length,he=a(S),[E,ge]=(0,p.useState)(!1),[D,_e]=(0,p.useState)(null),ve=(0,p.useRef)(!0),O,k;t[8]===Symbol.for(`react.memo_cache_sentinel`)?(O=()=>(ve.current=!0,()=>{ve.current=!1}),k=[],t[8]=O,t[9]=k):(O=t[8],k=t[9]),(0,p.useEffect)(O,k);let A;t[10]!==r||t[11]!==S||t[12]!==E||t[13]!==T||t[14]!==_||t[15]!==l||t[16]!==c||t[17]!==n||t[18]!==b?(A=async()=>{if(T===0||E)return;let e=re(n),t=[...n.metrics.map(se),...b],i=te(e,r.trim(),{toggles:{metrics:_,widgets:t},cadence:{data:S,ai:`manual`}});i.title=l.trim()||i.title,i.question=r.trim(),o(i),c(i.id),u(i.id,null)},t[10]=r,t[11]=S,t[12]=E,t[13]=T,t[14]=_,t[15]=l,t[16]=c,t[17]=n,t[18]=b,t[19]=A):A=t[19];let j=A,M;t[20]!==r||t[21]!==E||t[22]!==c||t[23]!==n?(M=async e=>{if(E)return;let t=d(e);ne(e,re(n),r.trim()),s(e.id),ge(!0),_e(null);let i=await u(e.id,t);if(ve.current){if(ge(!1),i!==`confirmed`){_e(f(i,!1));return}c(e.id)}},t[20]=r,t[21]=E,t[22]=c,t[23]=n,t[24]=M):M=t[24];let ye=M,N;t[25]!==r||t[26]!==j||t[27]!==i||t[28]!==n.title?(N=()=>{let e=ee(i,{text:`${n.title} ${r}`});if(e){fe(e);return}j()},t[25]=r,t[26]=j,t[27]=i,t[28]=n.title,t[29]=N):N=t[29];let P=N;if(x){let e;t[30]===x.title?e=t[31]:(e=(0,v.jsxs)(`p`,{className:`tpl-interstitial-text`,children:[`This looks related to your existing “`,x.title,`” dashboard — fold this in instead of creating a new one?`]}),t[30]=x.title,t[31]=e);let n;t[32]!==ye||t[33]!==x?(n=()=>void ye(x),t[32]=ye,t[33]=x,t[34]=n):n=t[34];let r=E?`Confirming live data…`:`Fold into “${x.title}”`,i;t[35]!==E||t[36]!==n||t[37]!==r?(i=(0,v.jsx)(`button`,{type:`button`,className:`tpl-fold-btn`,disabled:E,onClick:n,children:r}),t[35]=E,t[36]=n,t[37]=r,t[38]=i):i=t[38];let a;t[39]===j?a=t[40]:(a=()=>void j(),t[39]=j,t[40]=a);let o;t[41]!==E||t[42]!==a?(o=(0,v.jsx)(`button`,{type:`button`,className:`tpl-create-anyway`,disabled:E,onClick:a,children:`Create new anyway`}),t[41]=E,t[42]=a,t[43]=o):o=t[43];let s;t[44]!==i||t[45]!==o?(s=(0,v.jsxs)(`div`,{className:`tpl-interstitial-actions`,children:[i,o]}),t[44]=i,t[45]=o,t[46]=s):s=t[46];let c;t[47]===E?c=t[48]:(c=E&&(0,v.jsx)(`p`,{className:`tpl-cadence-note`,children:`Checking a live source before this joins your board — a search can take up to a minute. You can close this; the result lands in your check log either way.`}),t[47]=E,t[48]=c);let l;t[49]===D?l=t[50]:(l=D&&(0,v.jsx)(`p`,{className:`tpl-cadence-note`,children:D}),t[49]=D,t[50]=l);let u;return t[51]!==e||t[52]!==s||t[53]!==c||t[54]!==l?(u=(0,v.jsxs)(`div`,{className:`tpl-interstitial`,children:[e,s,c,l]}),t[51]=e,t[52]=s,t[53]=c,t[54]=l,t[55]=u):u=t[55],u}let F;t[56]===Symbol.for(`react.memo_cache_sentinel`)?(F=(0,v.jsx)(`span`,{className:`xt-section-label`,children:`Dashboard name`}),t[56]=F):F=t[56];let I;t[57]===Symbol.for(`react.memo_cache_sentinel`)?(I=e=>h(e.target.value),t[57]=I):I=t[57];let L;t[58]===l?L=t[59]:(L=(0,v.jsxs)(`label`,{className:`tpl-field`,children:[F,(0,v.jsx)(`input`,{className:`xt-name`,value:l,onChange:I,"aria-label":`Dashboard name`})]}),t[58]=l,t[59]=L);let R;t[60]!==_||t[61]!==n.metrics?(R=n.metrics.length>0&&(0,v.jsxs)(`div`,{className:`tpl-chip-group`,children:[(0,v.jsx)(`span`,{className:`xt-section-label`,children:`Numbers to watch`}),(0,v.jsx)(`div`,{className:`tpl-chips`,children:n.metrics.map((e,t)=>(0,v.jsx)(ue,{kind:`METRIC`,label:e.label,detail:e.query,on:_[t]??!0,onToggle:()=>oe(e=>ae(e,t))},`m${t}`))})]}),t[60]=_,t[61]=n.metrics,t[62]=R):R=t[62];let z;t[63]!==n.widgets||t[64]!==b?(z=n.widgets.length>0&&(0,v.jsxs)(`div`,{className:`tpl-chip-group`,children:[(0,v.jsx)(`span`,{className:`xt-section-label`,children:`Live cards`}),(0,v.jsx)(`div`,{className:`tpl-chips`,children:n.widgets.map((e,t)=>(0,v.jsx)(ue,{kind:`CARD`,label:e.query,detail:e.blockType,on:b[t]??!0,onToggle:()=>de(e=>ae(e,t))},`w${t}`))})]}),t[63]=n.widgets,t[64]=b,t[65]=z):z=t[65];let B;t[66]===Symbol.for(`react.memo_cache_sentinel`)?(B=(0,v.jsx)(`span`,{className:`xt-section-label`,children:`How often`}),t[66]=B):B=t[66];let be=`tpl-chip xt-comp--goal${S===`manual`?``:` tpl-chip-off`}`,xe=S===`manual`,V,H;t[67]===Symbol.for(`react.memo_cache_sentinel`)?(V=()=>pe(`manual`),H=(0,v.jsx)(`span`,{className:`tpl-chip-label`,children:`Manual — only when you ask`}),t[67]=V,t[68]=H):(V=t[67],H=t[68]);let U;t[69]!==be||t[70]!==xe?(U=(0,v.jsx)(`button`,{type:`button`,className:be,"aria-pressed":xe,onClick:V,children:H}),t[69]=be,t[70]=xe,t[71]=U):U=t[71];let W;t[72]!==S||t[73]!==n.cadence?(W=n.cadence!==`manual`&&(0,v.jsx)(`button`,{type:`button`,className:`tpl-chip xt-comp--metric${S===n.cadence?``:` tpl-chip-off`}`,"aria-pressed":S===n.cadence,onClick:()=>pe(n.cadence),title:ie[n.cadence],children:(0,v.jsxs)(`span`,{className:`tpl-chip-label`,children:[`Suggested — `,ie[n.cadence]]})}),t[72]=S,t[73]=n.cadence,t[74]=W):W=t[74];let G;t[75]!==U||t[76]!==W?(G=(0,v.jsxs)(`div`,{className:`tpl-chip-group`,children:[B,(0,v.jsxs)(`div`,{className:`tpl-chips`,children:[U,W]})]}),t[75]=U,t[76]=W,t[77]=G):G=t[77];let Se=he>0?`≈ ${he} searches/mo on your key, at this cadence.`:`No standing searches — this refreshes only when you ask.`,K;t[78]===Se?K=t[79]:(K=(0,v.jsx)(`p`,{className:`dash-plan-estimate`,children:Se}),t[78]=Se,t[79]=K);let Ce=ie[S],q;t[80]===Ce?q=t[81]:(q=(0,v.jsx)(`span`,{className:`tpl-cadence-note`,children:Ce}),t[80]=Ce,t[81]=q);let J=T===0||E,we=E?`Confirming live data…`:`Create dashboard →`,Y;t[82]!==P||t[83]!==J||t[84]!==we?(Y=(0,v.jsx)(`button`,{type:`button`,className:`tpl-create`,onClick:P,disabled:J,children:we}),t[82]=P,t[83]=J,t[84]=we,t[85]=Y):Y=t[85];let X;t[86]!==q||t[87]!==Y?(X=(0,v.jsxs)(`div`,{className:`xt-build-row`,children:[q,Y]}),t[86]=q,t[87]=Y,t[88]=X):X=t[88];let Z;t[89]===E?Z=t[90]:(Z=E&&(0,v.jsx)(`p`,{className:`tpl-cadence-note`,children:`Checking a live source before this joins your board — a search can take up to a minute. You can close this; the result lands in your check log either way.`}),t[89]=E,t[90]=Z);let Q;t[91]===D?Q=t[92]:(Q=D&&(0,v.jsx)(`p`,{className:`tpl-cadence-note`,children:D}),t[91]=D,t[92]=Q);let $;return t[93]!==L||t[94]!==R||t[95]!==z||t[96]!==G||t[97]!==K||t[98]!==X||t[99]!==Z||t[100]!==Q?($=(0,v.jsxs)(`div`,{className:`tpl-form`,children:[L,R,z,G,K,X,Z,Q]}),t[93]=L,t[94]=R,t[95]=z,t[96]=G,t[97]=K,t[98]=X,t[99]=Z,t[100]=Q,t[101]=$):$=t[101],$}function se(){return!0}function ce(){return!0}function le(){return!0}function ue(e){let t=(0,m.c)(14),{kind:n,label:r,detail:i,on:a,onToggle:o}=e,s=`tpl-chip xt-comp--${n===`METRIC`?`metric`:`goal`}${a?``:` tpl-chip-off`}`,c;t[0]===n?c=t[1]:(c=(0,v.jsx)(`span`,{className:`tpl-chip-kind`,children:n}),t[0]=n,t[1]=c);let l;t[2]===r?l=t[3]:(l=(0,v.jsx)(`span`,{className:`tpl-chip-label`,children:r}),t[2]=r,t[3]=l);let u=a?`Included ✓`:`Removed ✕`,d;t[4]===u?d=t[5]:(d=(0,v.jsx)(`span`,{className:`tpl-chip-state`,children:u}),t[4]=u,t[5]=d);let f;return t[6]!==i||t[7]!==a||t[8]!==o||t[9]!==s||t[10]!==c||t[11]!==l||t[12]!==d?(f=(0,v.jsxs)(`button`,{type:`button`,className:s,onClick:o,"aria-pressed":a,title:i,children:[c,l,d]}),t[6]=i,t[7]=a,t[8]=o,t[9]=s,t[10]=c,t[11]=l,t[12]=d,t[13]=f):f=t[13],f}export{oe as PlanReview};
@@ -1 +1 @@
1
- import{t as e}from"./react-BZJXY1be.js";import{t}from"./compiler-runtime-qQQXpJgv.js";import{t as n}from"./jsx-runtime-DeHZSEgm.js";import{l as r}from"./index-Db-FgYxX.js";import{i,n as a,o}from"./notes-CEloxKQ3.js";import{t as s}from"./registry-DLyrLfe-.js";var c=t(),l=e(),u=n(),d=10,f=5,p=1500,m=60,h=1.5;function g(e){return`${Math.floor(e/60)}:${(e%60).toString().padStart(2,`0`)}`}function _(e){return e instanceof HTMLElement?e instanceof HTMLInputElement||e instanceof HTMLTextAreaElement||e.isContentEditable:!1}var v=[{keys:`→ / Space / Page Down`,action:`Next slide`},{keys:`← / Page Up`,action:`Previous slide`},{keys:`Home / End`,action:`First / last slide`},{keys:`0–9, then Enter`,action:`Jump to a slide number`},{keys:`B`,action:`Blackout the screen`},{keys:`W`,action:`Whiteout the screen`},{keys:`F`,action:`Toggle fullscreen`},{keys:`O or G`,action:`Overview — every slide at once`},{keys:`S`,action:`Presenter notes`},{keys:`R`,action:`Reset the timer`},{keys:`X`,action:`Skip this slide for this run (restore it from the overview)`},{keys:`?`,action:`This help`},{keys:`Esc`,action:`Close the topmost panel — or end the show`}];function ee(e){let t=(0,c.c)(24),{slides:n,skipped:r,skin:a,selected:o,presentedIndex:s,onJump:l,onToggleSkip:d,onClose:f}=e,p;t[0]===f?p=t[1]:(p=(0,u.jsx)(`button`,{type:`button`,className:`preso-overview-close`,onClick:f,"aria-label":`Close overview`,children:`×`}),t[0]=f,t[1]=p);let m;t[2]===r.size?m=t[3]:(m=r.size>0&&(0,u.jsxs)(`div`,{className:`preso-overview-skipnote`,children:[r.size,` slide`,r.size===1?``:`s`,` skipped this run`]}),t[2]=r.size,t[3]=m);let h;if(t[4]!==l||t[5]!==d||t[6]!==s||t[7]!==o||t[8]!==a||t[9]!==n){let e;t[11]!==l||t[12]!==d||t[13]!==s||t[14]!==o||t[15]!==a||t[16]!==n.length?(e=(e,t)=>{let r=s(t),c=r<0;return(0,u.jsxs)(`div`,{className:`preso-overview-cell`+(!c&&r===o?` is-selected`:``)+(c?` is-skipped`:``),children:[(0,u.jsxs)(`button`,{type:`button`,role:`option`,"aria-selected":!c&&r===o,className:`preso-overview-open`,"aria-label":c?`Slide ${t+1}, skipped — restore it`:`Go to slide ${t+1}`,onClick:()=>c?d(e.id):l(r),children:[(0,u.jsx)(`span`,{className:`preso-overview-thumb`,children:(0,u.jsx)(i,{slide:e,skin:a,ctx:{index:t,total:n.length}})}),(0,u.jsx)(`span`,{className:`preso-overview-num`,children:t+1})]}),(0,u.jsx)(`button`,{type:`button`,className:`preso-overview-skip`,"aria-label":c?`Restore slide ${t+1}`:`Skip slide ${t+1} this run`,title:c?`Restore`:`Skip for this run`,onClick:()=>d(e.id),children:c?`↩`:`×`})]},e.id)},t[11]=l,t[12]=d,t[13]=s,t[14]=o,t[15]=a,t[16]=n.length,t[17]=e):e=t[17],h=n.map(e),t[4]=l,t[5]=d,t[6]=s,t[7]=o,t[8]=a,t[9]=n,t[10]=h}else h=t[10];let g;t[18]===h?g=t[19]:(g=(0,u.jsx)(`div`,{className:`preso-overview-grid`,children:h}),t[18]=h,t[19]=g);let _;return t[20]!==p||t[21]!==m||t[22]!==g?(_=(0,u.jsxs)(`div`,{className:`preso-overview`,role:`listbox`,"aria-label":`All slides`,children:[p,m,g]}),t[20]=p,t[21]=m,t[22]=g,t[23]=_):_=t[23],_}function te(e){let t=(0,c.c)(6),{onClose:n}=e,r;t[0]===n?r=t[1]:(r=(0,u.jsx)(`button`,{type:`button`,className:`preso-help-close`,onClick:n,"aria-label":`Close help`,children:`×`}),t[0]=n,t[1]=r);let i;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(i=(0,u.jsx)(`h2`,{className:`preso-help-title`,children:`Keyboard shortcuts`}),t[2]=i):i=t[2];let a;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(a=(0,u.jsx)(`dl`,{className:`preso-help-list`,children:v.map(y)}),t[3]=a):a=t[3];let o;return t[4]===r?o=t[5]:(o=(0,u.jsxs)(`div`,{className:`preso-help`,role:`dialog`,"aria-modal":`true`,"aria-label":`Keyboard shortcuts`,children:[r,i,a]}),t[4]=r,t[5]=o),o}function y(e){return(0,u.jsxs)(`div`,{className:`preso-help-row`,children:[(0,u.jsx)(`dt`,{children:e.keys}),(0,u.jsx)(`dd`,{children:e.action})]},e.keys)}function ne(e){let t=(0,c.c)(3),{mode:n,onDismiss:r}=e,i=`preso-curtain preso-curtain-${n}`,a;return t[0]!==r||t[1]!==i?(a=(0,u.jsx)(`div`,{className:i,role:`presentation`,onClick:r}),t[0]=r,t[1]=i,t[2]=a):a=t[2],a}function b({spec:e,question:t,narration:n,skinId:c,autoAdvanceMs:v,onExit:y}){let[b]=(0,l.useState)(()=>Date.now()),x=(0,l.useMemo)(()=>o(e?[e]:[],b),[e,b]).slides,[S,re]=(0,l.useState)(new Set),C=(0,l.useMemo)(()=>x.filter(e=>!S.has(e.id)),[x,S]),w=(0,l.useCallback)(e=>{re(t=>{let n=new Set(t);return n.has(e)?n.delete(e):x.filter(e=>!t.has(e.id)).length>1&&n.add(e),n})},[x]),T=s[c],[E,D]=(0,l.useState)(0),[O,k]=(0,l.useState)(!1),[ie,ae]=(0,l.useState)(0),[A,j]=(0,l.useState)(null),[M,N]=(0,l.useState)(!1),[P,F]=(0,l.useState)(0),[I,L]=(0,l.useState)(!1),[R,z]=(0,l.useState)(``),B=(0,l.useRef)(null),V=(0,l.useRef)(null),H=(0,l.useRef)(null),U=C.length,W=(0,l.useCallback)(e=>Math.max(0,Math.min(U-1,e)),[U]),G=(0,l.useCallback)(()=>D(e=>W(e+1)),[W]),K=(0,l.useCallback)(()=>D(e=>W(e-1)),[W]),q=(0,l.useCallback)(()=>ae(0),[]),J=(0,l.useCallback)(()=>{let e=B.current;e&&(document.fullscreenElement===e?document.exitFullscreen().catch(()=>{}):e.requestFullscreen?.().catch(()=>{}))},[]);(0,l.useEffect)(()=>()=>{V.current!==null&&window.clearTimeout(V.current)},[]);let oe=(0,l.useCallback)(e=>{z(t=>t+e),V.current!==null&&window.clearTimeout(V.current),V.current=window.setTimeout(()=>z(``),p)},[]),se=(0,l.useCallback)(()=>{V.current!==null&&(window.clearTimeout(V.current),V.current=null),R&&D(W(Number(R)-1)),z(``)},[R,W]);(0,l.useEffect)(()=>{let e=window.setInterval(()=>{r()||ae(e=>e+1)},1e3);return()=>window.clearInterval(e)},[]),(0,l.useEffect)(()=>{if(!v)return;let e=window.setInterval(()=>{r()||D(e=>e>=U-1?e:W(e+1))},v);return()=>window.clearInterval(e)},[v,U,W]),(0,l.useEffect)(()=>{B.current?.focus({preventScroll:!0})},[]),(0,l.useEffect)(()=>{let e=e=>{if(!_(e.target)){if(e.key===`Escape`){I?(e.preventDefault(),e.stopPropagation(),L(!1)):M?(e.preventDefault(),e.stopPropagation(),N(!1)):A?(e.preventDefault(),e.stopPropagation(),j(null)):O?(e.preventDefault(),e.stopPropagation(),k(!1)):y();return}if(I){e.key===`?`&&(e.preventDefault(),L(!1));return}if(M){if(e.key===`ArrowRight`){e.preventDefault(),F(e=>Math.min(U-1,e+1));return}if(e.key===`ArrowLeft`){e.preventDefault(),F(e=>Math.max(0,e-1));return}if(e.key===`ArrowDown`){e.preventDefault(),F(e=>Math.min(U-1,e+f));return}if(e.key===`ArrowUp`){e.preventDefault(),F(e=>Math.max(0,e-f));return}if(e.key===`Enter`){e.preventDefault(),D(P),N(!1);return}}if(R&&!/^[0-9]$/.test(e.key)&&e.key!==`Enter`&&(V.current!==null&&(window.clearTimeout(V.current),V.current=null),z(``)),e.key===`ArrowRight`||e.key===`PageDown`||e.key===` `)e.preventDefault(),j(null),G();else if(e.key===`ArrowLeft`||e.key===`PageUp`)e.preventDefault(),j(null),K();else if(e.key===`Home`)e.preventDefault(),j(null),D(0);else if(e.key===`End`)e.preventDefault(),j(null),D(U-1);else if(e.key===`s`||e.key===`S`)k(e=>!e);else if(e.key===`b`||e.key===`B`)j(e=>e===`black`?null:`black`);else if(e.key===`w`||e.key===`W`)j(e=>e===`white`?null:`white`);else if(e.key===`f`||e.key===`F`)J();else if(e.key===`o`||e.key===`O`||e.key===`g`||e.key===`G`)M?N(!1):(F(W(E)),N(!0));else if(e.key===`?`)L(e=>!e);else if(e.key===`x`||e.key===`X`){let e=C[W(E)];e&&w(e.id)}else e.key===`r`||e.key===`R`?q():e.key===`Enter`?R&&(e.preventDefault(),se()):/^[0-9]$/.test(e.key)&&(e.preventDefault(),oe(e.key))}};return window.addEventListener(`keydown`,e,{capture:!0}),()=>window.removeEventListener(`keydown`,e,{capture:!0})},[G,K,U,W,E,y,I,M,P,A,O,R,J,q,oe,se,C,w]);let Y=W(E),X=C[Y],Z=(0,l.useRef)(Y),ce=Y>=Z.current?`next`:`prev`,[Q,le]=(0,l.useState)(null);(0,l.useEffect)(()=>{if(Z.current===Y)return;le(Z.current),Z.current=Y;let e=window.setTimeout(()=>le(null),380);return()=>window.clearTimeout(e)},[Y]);let ue=X?.notes??(X?.kind===`cover`?n||t||``:a(X)),$=C[Y+1],de=$?a($):`— end —`,fe=U?Math.round((Y+1)/U*100):0,pe=(0,l.useCallback)(e=>{(e.pointerType===`touch`||e.pointerType===`pen`)&&(e.target instanceof Element&&e.target.closest(`button`)||(H.current={x:e.clientX,y:e.clientY}))},[]),me=(0,l.useCallback)(e=>{let t=H.current;if(H.current=null,!t||e.pointerType!==`touch`&&e.pointerType!==`pen`)return;let n=e.clientX-t.x,r=e.clientY-t.y;Math.abs(n)<m||Math.abs(n)<Math.abs(r)*h||(j(null),n<0?G():K())},[G,K]),he=A?A===`black`?`Screen blacked out.`:`Screen whited out.`:U?`Slide ${Y+1} of ${U}: ${a(X)||X?.kind||``}`:``;return(0,u.jsxs)(`div`,{className:`preso-deck`,role:`region`,"aria-label":`Presentation`,tabIndex:-1,style:{background:`#0a0c11`},ref:B,children:[(0,u.jsx)(`div`,{className:`preso-sr`,"aria-live":`polite`,"aria-atomic":`true`,children:he}),(0,u.jsx)(`div`,{className:`preso-stage`,onPointerDown:pe,onPointerUp:me,children:(0,u.jsxs)(`div`,{className:`preso-skinframe`,style:{aspectRatio:`16 / 9`,width:`min(86vw, calc(84vh * 16 / 9))`,margin:`auto`,position:`relative`,borderRadius:12,overflow:`hidden`,border:`1px solid rgba(255,255,255,.08)`,boxShadow:`0 30px 90px rgba(0,0,0,.55)`},children:[Q!==null&&Q!==Y&&C[Q]&&(0,u.jsx)(`div`,{className:`preso-slide-ghost`,"aria-hidden":!0,children:(0,u.jsx)(i,{slide:C[Q],skin:T,ctx:{index:Q,total:U}})}),X&&(0,u.jsx)(`div`,{className:`preso-slide-anim preso-dir-${ce}`,children:(0,u.jsx)(i,{slide:X,skin:T,ctx:{index:Y,total:U}})},Y)]})}),(0,u.jsx)(`button`,{type:`button`,className:`preso-zone preso-zone-prev`,onClick:K,"aria-label":`Previous slide`,disabled:E===0}),(0,u.jsx)(`button`,{type:`button`,className:`preso-zone preso-zone-next`,onClick:G,"aria-label":`Next slide`,disabled:E>=U-1}),(0,u.jsxs)(`div`,{className:`preso-rail`,children:[R&&(0,u.jsxs)(`span`,{className:`preso-jumpchip`,role:`status`,children:[(0,u.jsx)(`span`,{"aria-hidden":!0,children:`→`}),` `,R]}),(0,u.jsxs)(`span`,{className:`preso-count`,children:[Y+1,` / `,U]}),(0,u.jsx)(`button`,{type:`button`,className:`preso-jump`,onClick:()=>D(0),"aria-label":`First slide`,disabled:Y===0,children:`⤒`}),U<=d&&(0,u.jsx)(`div`,{className:`preso-dots`,role:`presentation`,children:C.map((e,t)=>(0,u.jsx)(`button`,{type:`button`,className:`preso-dot`+(t===Y?` is-active`:``),onClick:()=>D(t),"aria-label":`Go to slide ${t+1}`,"aria-current":t===Y},t))}),(0,u.jsx)(`button`,{type:`button`,className:`preso-jump`,onClick:()=>D(U-1),"aria-label":`Last slide`,disabled:Y>=U-1,children:`⤓`}),(0,u.jsx)(`button`,{type:`button`,className:`preso-notes-btn`+(O?` is-on`:``),onClick:()=>k(e=>!e),"aria-pressed":O,title:`Presenter notes (S)`,children:`Notes`})]}),O&&(0,u.jsxs)(`aside`,{className:`preso-presenter`,"aria-label":`Presenter notes`,children:[(0,u.jsxs)(`div`,{className:`preso-presenter-head`,children:[(0,u.jsx)(`button`,{type:`button`,className:`preso-timer`,onClick:q,title:`Reset timer (R)`,children:g(ie)}),(0,u.jsxs)(`span`,{className:`preso-presenter-pct`,children:[fe,`%`]}),(0,u.jsx)(`button`,{type:`button`,className:`preso-presenter-close`,onClick:()=>k(!1),"aria-label":`Hide presenter notes`,children:`×`})]}),(0,u.jsx)(`div`,{className:`preso-presenter-progress`,"aria-hidden":!0,children:(0,u.jsx)(`span`,{style:{width:`${fe}%`}})}),(0,u.jsxs)(`p`,{className:`preso-presenter-slide`,children:[Y+1,`. `,a(X)||X?.kind]}),(0,u.jsx)(`p`,{className:`preso-presenter-notes`,children:ue||`No notes for this slide.`}),(0,u.jsxs)(`div`,{className:`preso-presenter-next`,children:[(0,u.jsx)(`span`,{className:`preso-presenter-next-label`,children:`Next`}),$?(0,u.jsx)(`div`,{className:`preso-presenter-thumb`,children:(0,u.jsx)(i,{slide:$,skin:T,ctx:{index:Y+1,total:U}})}):null,(0,u.jsx)(`span`,{className:`preso-presenter-next-text`,children:de})]})]}),A&&(0,u.jsx)(ne,{mode:A,onDismiss:()=>j(null)}),M&&(0,u.jsx)(ee,{slides:x,skipped:S,skin:T,selected:P,presentedIndex:e=>S.has(x[e].id)?-1:x.slice(0,e).filter(e=>!S.has(e.id)).length,onJump:e=>{D(e),N(!1)},onToggleSkip:w,onClose:()=>N(!1)}),I&&(0,u.jsx)(te,{onClose:()=>L(!1)})]})}export{b as PresentationDeck};
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{l as r}from"./index-CKRjGbeR.js";import{i,n as a,o}from"./notes-nfocTnUv.js";import{t as s}from"./registry-DLyrLfe-.js";var c=t(),l=e(),u=n(),d=10,f=5,p=1500,m=60,h=1.5;function g(e){return`${Math.floor(e/60)}:${(e%60).toString().padStart(2,`0`)}`}function _(e){return e instanceof HTMLElement?e instanceof HTMLInputElement||e instanceof HTMLTextAreaElement||e.isContentEditable:!1}var v=[{keys:`→ / Space / Page Down`,action:`Next slide`},{keys:`← / Page Up`,action:`Previous slide`},{keys:`Home / End`,action:`First / last slide`},{keys:`0–9, then Enter`,action:`Jump to a slide number`},{keys:`B`,action:`Blackout the screen`},{keys:`W`,action:`Whiteout the screen`},{keys:`F`,action:`Toggle fullscreen`},{keys:`O or G`,action:`Overview — every slide at once`},{keys:`S`,action:`Presenter notes`},{keys:`R`,action:`Reset the timer`},{keys:`X`,action:`Skip this slide for this run (restore it from the overview)`},{keys:`?`,action:`This help`},{keys:`Esc`,action:`Close the topmost panel — or end the show`}];function ee(e){let t=(0,c.c)(24),{slides:n,skipped:r,skin:a,selected:o,presentedIndex:s,onJump:l,onToggleSkip:d,onClose:f}=e,p;t[0]===f?p=t[1]:(p=(0,u.jsx)(`button`,{type:`button`,className:`preso-overview-close`,onClick:f,"aria-label":`Close overview`,children:`×`}),t[0]=f,t[1]=p);let m;t[2]===r.size?m=t[3]:(m=r.size>0&&(0,u.jsxs)(`div`,{className:`preso-overview-skipnote`,children:[r.size,` slide`,r.size===1?``:`s`,` skipped this run`]}),t[2]=r.size,t[3]=m);let h;if(t[4]!==l||t[5]!==d||t[6]!==s||t[7]!==o||t[8]!==a||t[9]!==n){let e;t[11]!==l||t[12]!==d||t[13]!==s||t[14]!==o||t[15]!==a||t[16]!==n.length?(e=(e,t)=>{let r=s(t),c=r<0;return(0,u.jsxs)(`div`,{className:`preso-overview-cell`+(!c&&r===o?` is-selected`:``)+(c?` is-skipped`:``),children:[(0,u.jsxs)(`button`,{type:`button`,role:`option`,"aria-selected":!c&&r===o,className:`preso-overview-open`,"aria-label":c?`Slide ${t+1}, skipped — restore it`:`Go to slide ${t+1}`,onClick:()=>c?d(e.id):l(r),children:[(0,u.jsx)(`span`,{className:`preso-overview-thumb`,children:(0,u.jsx)(i,{slide:e,skin:a,ctx:{index:t,total:n.length}})}),(0,u.jsx)(`span`,{className:`preso-overview-num`,children:t+1})]}),(0,u.jsx)(`button`,{type:`button`,className:`preso-overview-skip`,"aria-label":c?`Restore slide ${t+1}`:`Skip slide ${t+1} this run`,title:c?`Restore`:`Skip for this run`,onClick:()=>d(e.id),children:c?`↩`:`×`})]},e.id)},t[11]=l,t[12]=d,t[13]=s,t[14]=o,t[15]=a,t[16]=n.length,t[17]=e):e=t[17],h=n.map(e),t[4]=l,t[5]=d,t[6]=s,t[7]=o,t[8]=a,t[9]=n,t[10]=h}else h=t[10];let g;t[18]===h?g=t[19]:(g=(0,u.jsx)(`div`,{className:`preso-overview-grid`,children:h}),t[18]=h,t[19]=g);let _;return t[20]!==p||t[21]!==m||t[22]!==g?(_=(0,u.jsxs)(`div`,{className:`preso-overview`,role:`listbox`,"aria-label":`All slides`,children:[p,m,g]}),t[20]=p,t[21]=m,t[22]=g,t[23]=_):_=t[23],_}function te(e){let t=(0,c.c)(6),{onClose:n}=e,r;t[0]===n?r=t[1]:(r=(0,u.jsx)(`button`,{type:`button`,className:`preso-help-close`,onClick:n,"aria-label":`Close help`,children:`×`}),t[0]=n,t[1]=r);let i;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(i=(0,u.jsx)(`h2`,{className:`preso-help-title`,children:`Keyboard shortcuts`}),t[2]=i):i=t[2];let a;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(a=(0,u.jsx)(`dl`,{className:`preso-help-list`,children:v.map(y)}),t[3]=a):a=t[3];let o;return t[4]===r?o=t[5]:(o=(0,u.jsxs)(`div`,{className:`preso-help`,role:`dialog`,"aria-modal":`true`,"aria-label":`Keyboard shortcuts`,children:[r,i,a]}),t[4]=r,t[5]=o),o}function y(e){return(0,u.jsxs)(`div`,{className:`preso-help-row`,children:[(0,u.jsx)(`dt`,{children:e.keys}),(0,u.jsx)(`dd`,{children:e.action})]},e.keys)}function ne(e){let t=(0,c.c)(3),{mode:n,onDismiss:r}=e,i=`preso-curtain preso-curtain-${n}`,a;return t[0]!==r||t[1]!==i?(a=(0,u.jsx)(`div`,{className:i,role:`presentation`,onClick:r}),t[0]=r,t[1]=i,t[2]=a):a=t[2],a}function b({spec:e,question:t,narration:n,skinId:c,autoAdvanceMs:v,onExit:y}){let[b]=(0,l.useState)(()=>Date.now()),x=(0,l.useMemo)(()=>o(e?[e]:[],b),[e,b]).slides,[S,re]=(0,l.useState)(new Set),C=(0,l.useMemo)(()=>x.filter(e=>!S.has(e.id)),[x,S]),w=(0,l.useCallback)(e=>{re(t=>{let n=new Set(t);return n.has(e)?n.delete(e):x.filter(e=>!t.has(e.id)).length>1&&n.add(e),n})},[x]),T=s[c],[E,D]=(0,l.useState)(0),[O,k]=(0,l.useState)(!1),[ie,ae]=(0,l.useState)(0),[A,j]=(0,l.useState)(null),[M,N]=(0,l.useState)(!1),[P,F]=(0,l.useState)(0),[I,L]=(0,l.useState)(!1),[R,z]=(0,l.useState)(``),B=(0,l.useRef)(null),V=(0,l.useRef)(null),H=(0,l.useRef)(null),U=C.length,W=(0,l.useCallback)(e=>Math.max(0,Math.min(U-1,e)),[U]),G=(0,l.useCallback)(()=>D(e=>W(e+1)),[W]),K=(0,l.useCallback)(()=>D(e=>W(e-1)),[W]),q=(0,l.useCallback)(()=>ae(0),[]),J=(0,l.useCallback)(()=>{let e=B.current;e&&(document.fullscreenElement===e?document.exitFullscreen().catch(()=>{}):e.requestFullscreen?.().catch(()=>{}))},[]);(0,l.useEffect)(()=>()=>{V.current!==null&&window.clearTimeout(V.current)},[]);let oe=(0,l.useCallback)(e=>{z(t=>t+e),V.current!==null&&window.clearTimeout(V.current),V.current=window.setTimeout(()=>z(``),p)},[]),se=(0,l.useCallback)(()=>{V.current!==null&&(window.clearTimeout(V.current),V.current=null),R&&D(W(Number(R)-1)),z(``)},[R,W]);(0,l.useEffect)(()=>{let e=window.setInterval(()=>{r()||ae(e=>e+1)},1e3);return()=>window.clearInterval(e)},[]),(0,l.useEffect)(()=>{if(!v)return;let e=window.setInterval(()=>{r()||D(e=>e>=U-1?e:W(e+1))},v);return()=>window.clearInterval(e)},[v,U,W]),(0,l.useEffect)(()=>{B.current?.focus({preventScroll:!0})},[]),(0,l.useEffect)(()=>{let e=e=>{if(!_(e.target)){if(e.key===`Escape`){I?(e.preventDefault(),e.stopPropagation(),L(!1)):M?(e.preventDefault(),e.stopPropagation(),N(!1)):A?(e.preventDefault(),e.stopPropagation(),j(null)):O?(e.preventDefault(),e.stopPropagation(),k(!1)):y();return}if(I){e.key===`?`&&(e.preventDefault(),L(!1));return}if(M){if(e.key===`ArrowRight`){e.preventDefault(),F(e=>Math.min(U-1,e+1));return}if(e.key===`ArrowLeft`){e.preventDefault(),F(e=>Math.max(0,e-1));return}if(e.key===`ArrowDown`){e.preventDefault(),F(e=>Math.min(U-1,e+f));return}if(e.key===`ArrowUp`){e.preventDefault(),F(e=>Math.max(0,e-f));return}if(e.key===`Enter`){e.preventDefault(),D(P),N(!1);return}}if(R&&!/^[0-9]$/.test(e.key)&&e.key!==`Enter`&&(V.current!==null&&(window.clearTimeout(V.current),V.current=null),z(``)),e.key===`ArrowRight`||e.key===`PageDown`||e.key===` `)e.preventDefault(),j(null),G();else if(e.key===`ArrowLeft`||e.key===`PageUp`)e.preventDefault(),j(null),K();else if(e.key===`Home`)e.preventDefault(),j(null),D(0);else if(e.key===`End`)e.preventDefault(),j(null),D(U-1);else if(e.key===`s`||e.key===`S`)k(e=>!e);else if(e.key===`b`||e.key===`B`)j(e=>e===`black`?null:`black`);else if(e.key===`w`||e.key===`W`)j(e=>e===`white`?null:`white`);else if(e.key===`f`||e.key===`F`)J();else if(e.key===`o`||e.key===`O`||e.key===`g`||e.key===`G`)M?N(!1):(F(W(E)),N(!0));else if(e.key===`?`)L(e=>!e);else if(e.key===`x`||e.key===`X`){let e=C[W(E)];e&&w(e.id)}else e.key===`r`||e.key===`R`?q():e.key===`Enter`?R&&(e.preventDefault(),se()):/^[0-9]$/.test(e.key)&&(e.preventDefault(),oe(e.key))}};return window.addEventListener(`keydown`,e,{capture:!0}),()=>window.removeEventListener(`keydown`,e,{capture:!0})},[G,K,U,W,E,y,I,M,P,A,O,R,J,q,oe,se,C,w]);let Y=W(E),X=C[Y],Z=(0,l.useRef)(Y),ce=Y>=Z.current?`next`:`prev`,[Q,le]=(0,l.useState)(null);(0,l.useEffect)(()=>{if(Z.current===Y)return;le(Z.current),Z.current=Y;let e=window.setTimeout(()=>le(null),380);return()=>window.clearTimeout(e)},[Y]);let ue=X?.notes??(X?.kind===`cover`?n||t||``:a(X)),$=C[Y+1],de=$?a($):`— end —`,fe=U?Math.round((Y+1)/U*100):0,pe=(0,l.useCallback)(e=>{(e.pointerType===`touch`||e.pointerType===`pen`)&&(e.target instanceof Element&&e.target.closest(`button`)||(H.current={x:e.clientX,y:e.clientY}))},[]),me=(0,l.useCallback)(e=>{let t=H.current;if(H.current=null,!t||e.pointerType!==`touch`&&e.pointerType!==`pen`)return;let n=e.clientX-t.x,r=e.clientY-t.y;Math.abs(n)<m||Math.abs(n)<Math.abs(r)*h||(j(null),n<0?G():K())},[G,K]),he=A?A===`black`?`Screen blacked out.`:`Screen whited out.`:U?`Slide ${Y+1} of ${U}: ${a(X)||X?.kind||``}`:``;return(0,u.jsxs)(`div`,{className:`preso-deck`,role:`region`,"aria-label":`Presentation`,tabIndex:-1,style:{background:`#0a0c11`},ref:B,children:[(0,u.jsx)(`div`,{className:`preso-sr`,"aria-live":`polite`,"aria-atomic":`true`,children:he}),(0,u.jsx)(`div`,{className:`preso-stage`,onPointerDown:pe,onPointerUp:me,children:(0,u.jsxs)(`div`,{className:`preso-skinframe`,style:{aspectRatio:`16 / 9`,width:`min(86vw, calc(84vh * 16 / 9))`,margin:`auto`,position:`relative`,borderRadius:12,overflow:`hidden`,border:`1px solid rgba(255,255,255,.08)`,boxShadow:`0 30px 90px rgba(0,0,0,.55)`},children:[Q!==null&&Q!==Y&&C[Q]&&(0,u.jsx)(`div`,{className:`preso-slide-ghost`,"aria-hidden":!0,children:(0,u.jsx)(i,{slide:C[Q],skin:T,ctx:{index:Q,total:U}})}),X&&(0,u.jsx)(`div`,{className:`preso-slide-anim preso-dir-${ce}`,children:(0,u.jsx)(i,{slide:X,skin:T,ctx:{index:Y,total:U}})},Y)]})}),(0,u.jsx)(`button`,{type:`button`,className:`preso-zone preso-zone-prev`,onClick:K,"aria-label":`Previous slide`,disabled:E===0}),(0,u.jsx)(`button`,{type:`button`,className:`preso-zone preso-zone-next`,onClick:G,"aria-label":`Next slide`,disabled:E>=U-1}),(0,u.jsxs)(`div`,{className:`preso-rail`,children:[R&&(0,u.jsxs)(`span`,{className:`preso-jumpchip`,role:`status`,children:[(0,u.jsx)(`span`,{"aria-hidden":!0,children:`→`}),` `,R]}),(0,u.jsxs)(`span`,{className:`preso-count`,children:[Y+1,` / `,U]}),(0,u.jsx)(`button`,{type:`button`,className:`preso-jump`,onClick:()=>D(0),"aria-label":`First slide`,disabled:Y===0,children:`⤒`}),U<=d&&(0,u.jsx)(`div`,{className:`preso-dots`,role:`presentation`,children:C.map((e,t)=>(0,u.jsx)(`button`,{type:`button`,className:`preso-dot`+(t===Y?` is-active`:``),onClick:()=>D(t),"aria-label":`Go to slide ${t+1}`,"aria-current":t===Y},t))}),(0,u.jsx)(`button`,{type:`button`,className:`preso-jump`,onClick:()=>D(U-1),"aria-label":`Last slide`,disabled:Y>=U-1,children:`⤓`}),(0,u.jsx)(`button`,{type:`button`,className:`preso-notes-btn`+(O?` is-on`:``),onClick:()=>k(e=>!e),"aria-pressed":O,title:`Presenter notes (S)`,children:`Notes`})]}),O&&(0,u.jsxs)(`aside`,{className:`preso-presenter`,"aria-label":`Presenter notes`,children:[(0,u.jsxs)(`div`,{className:`preso-presenter-head`,children:[(0,u.jsx)(`button`,{type:`button`,className:`preso-timer`,onClick:q,title:`Reset timer (R)`,children:g(ie)}),(0,u.jsxs)(`span`,{className:`preso-presenter-pct`,children:[fe,`%`]}),(0,u.jsx)(`button`,{type:`button`,className:`preso-presenter-close`,onClick:()=>k(!1),"aria-label":`Hide presenter notes`,children:`×`})]}),(0,u.jsx)(`div`,{className:`preso-presenter-progress`,"aria-hidden":!0,children:(0,u.jsx)(`span`,{style:{width:`${fe}%`}})}),(0,u.jsxs)(`p`,{className:`preso-presenter-slide`,children:[Y+1,`. `,a(X)||X?.kind]}),(0,u.jsx)(`p`,{className:`preso-presenter-notes`,children:ue||`No notes for this slide.`}),(0,u.jsxs)(`div`,{className:`preso-presenter-next`,children:[(0,u.jsx)(`span`,{className:`preso-presenter-next-label`,children:`Next`}),$?(0,u.jsx)(`div`,{className:`preso-presenter-thumb`,children:(0,u.jsx)(i,{slide:$,skin:T,ctx:{index:Y+1,total:U}})}):null,(0,u.jsx)(`span`,{className:`preso-presenter-next-text`,children:de})]})]}),A&&(0,u.jsx)(ne,{mode:A,onDismiss:()=>j(null)}),M&&(0,u.jsx)(ee,{slides:x,skipped:S,skin:T,selected:P,presentedIndex:e=>S.has(x[e].id)?-1:x.slice(0,e).filter(e=>!S.has(e.id)).length,onJump:e=>{D(e),N(!1)},onToggleSkip:w,onClose:()=>N(!1)}),I&&(0,u.jsx)(te,{onClose:()=>L(!1)})]})}export{b as PresentationDeck};
@@ -1,2 +1,2 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/PrismWorkbench-ZlhI7Mhw.js","assets/compiler-runtime-qQQXpJgv.js","assets/rolldown-runtime-DkW27tQK.js","assets/react-BZJXY1be.js","assets/jsx-runtime-DeHZSEgm.js","assets/useLiveConfig-CvOQTr0s.js","assets/info-CiqHR5cs.js","assets/keyVault-Aw5Y2PjT.js","assets/providers-CPhoN8j0.js","assets/http-Bqk6nJiH.js","assets/blockTypes-DUDdP3pB.js","assets/attachments-BW-vki-E.js","assets/route-CMdTFx0P.js","assets/PrismOverlay-DLxvsh9l.js","assets/preload-helper-CiWYd9n-.js","assets/cachedImport-DW0gP14h.js","assets/preloadableLazy-MIX1ApBW.js","assets/lazyRetry-D50B1UMY.js","assets/index-Db-FgYxX.js","assets/useInView-DsTvv7L_.js","assets/coreIcons-DDTChE1H.js","assets/theme-D5D55hZi.js","assets/index-CFE0vqqO.css","assets/useFocusTrap-CJmpNZv2.js","assets/toast-BBNs2h3L.js","assets/sourceHost-BV3t2XDb.js","assets/penStrokes-CTC3AYiz.js","assets/gesture-BBS5nQEi.js","assets/types-CaO6xOn5.js","assets/cache-7UEbF3S6.js","assets/verbatim-DBTj9sPD.js","assets/officeDoc-GU6Cssjf.js","assets/csv-DAqzYXUs.js","assets/pen-UKrUHlDA.js","assets/streamParse-BX0bAppQ.js","assets/citation-BsSvaaer.js","assets/search-ZN7v_P5B.js","assets/PrismOverlay-5ZVXu4WL.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{n as a,t as o}from"./preloadableLazy-MIX1ApBW.js";import{n as s,t as c}from"./theme-D5D55hZi.js";import{E as l}from"./index-Db-FgYxX.js";import{n as u}from"./icons-gLFQTv74.js";import{t as d}from"./FeatureUseNotice-CCI4mM39.js";import{t as ee}from"./homeTarget-CDc-r2mj.js";import{a as te,s as ne,t as re,u as ie}from"./attachments-BW-vki-E.js";/* empty css */var ae=t(),f=e(),p=n();r();var m=o(()=>i(()=>import(`./PrismWorkbench-ZlhI7Mhw.js`).then(e=>({default:e.PrismWorkbench})),__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]))),h=m.Component,g={"too-large":`File is too large. Documents up to 40 MB, images up to 10 MB.`,unsupported:`Unsupported file type. Try a PDF, Word doc, spreadsheet, image, or text file.`};function _(){let e=(0,ae.c)(39),t;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=ee(),e[0]=t):t=e[0];let n=t,r;e[1]===Symbol.for(`react.memo_cache_sentinel`)?(r=[],e[1]=r):r=e[1],(0,f.useEffect)(ue,r);let i;e[2]===Symbol.for(`react.memo_cache_sentinel`)?(i=[],e[2]=i):i=e[2];let[o,s]=(0,f.useState)(i),[c,_]=(0,f.useState)(null),[y,b]=(0,f.useState)(!1),[x,S]=(0,f.useState)(!1),[C,w]=(0,f.useState)(null),T=(0,f.useRef)(null),E;e[3]===Symbol.for(`react.memo_cache_sentinel`)?(E=async e=>{if(!e||e.length===0)return;m.preload().catch(le),w(null);let t=Array.from(e).flatMap(e=>{let t=te(e);return t?(w(g[t]),[]):[e]});t.length>0&&s(e=>{let n=new Set(e.map(ce));return[...e,...t.filter(e=>!n.has(e.name))]}),T.current&&(T.current.value=``)},e[3]=E):E=e[3];let D=E,O;e[4]===Symbol.for(`react.memo_cache_sentinel`)?(O=e=>{s(t=>t.filter(t=>t.name!==e))},e[4]=O):O=e[4];let de=O,k;e[5]!==y||e[6]!==o?(k=async()=>{if(o.length===0||y)return;b(!0),w(null),m.preload().catch(se);let e=await Promise.all(o.map(ie)),t=e.flatMap(oe);t.length===o.length?_(t):w(g[e.find(v)?.error??`unsupported`]),b(!1)},e[5]=y,e[6]=o,e[7]=k):k=e[7];let A=k,j;e[8]===Symbol.for(`react.memo_cache_sentinel`)?(j=e=>{e.preventDefault(),S(!1),D(e.dataTransfer.files)},e[8]=j):j=e[8];let M=j,N;e[9]===Symbol.for(`react.memo_cache_sentinel`)?(N=e=>{e.preventDefault(),S(!0)},e[9]=N):N=e[9];let P=N,F;e[10]===Symbol.for(`react.memo_cache_sentinel`)?(F=e=>{e.currentTarget.contains(e.relatedTarget)||S(!1)},e[10]=F):F=e[10];let I=F;if(c){let t;e[11]===Symbol.for(`react.memo_cache_sentinel`)?(t=()=>_(null),e[11]=t):t=e[11];let n;return e[12]===c?n=e[13]:(n=(0,p.jsx)(l,{label:`Prism workbench`,overlay:!0,children:(0,p.jsx)(h,{pdf:c,onClose:t})}),e[12]=c,e[13]=n),n}let L;e[14]===Symbol.for(`react.memo_cache_sentinel`)?(L=()=>{window.location.hash=n.href},e[14]=L):L=e[14];let R;e[15]===Symbol.for(`react.memo_cache_sentinel`)?(R=(0,p.jsxs)(`header`,{className:`prism-app-header`,children:[(0,p.jsx)(`button`,{type:`button`,className:`prism-app-back`,onClick:L,"aria-label":`Back to ${n.label}`,title:`Back to ${n.label}`,children:(0,p.jsx)(u.chevL,{})}),(0,p.jsx)(`span`,{className:`prism-app-brand`,children:`Prism`})]}),e[15]=R):R=e[15];let z;e[16]===Symbol.for(`react.memo_cache_sentinel`)?(z=(0,p.jsxs)(`div`,{className:`prism-app-hero`,children:[(0,p.jsx)(`h1`,{className:`prism-app-title`,children:`Understand any document`}),(0,p.jsx)(`p`,{className:`prism-app-lede`,children:`Drop a PDF, Word doc, spreadsheet, or text file. Prism maps every claim, finding, and risk — every card cites its exact source.`}),(0,p.jsx)(d,{kind:`upload`})]}),e[16]=z):z=e[16];let B=`prism-dropzone${x?` prism-dropzone--over`:``}`,V;e[17]===Symbol.for(`react.memo_cache_sentinel`)?(V=()=>T.current?.click(),e[17]=V):V=e[17];let H,U;e[18]===Symbol.for(`react.memo_cache_sentinel`)?(H=e=>{(e.key===`Enter`||e.key===` `)&&T.current?.click()},U=a(m.preload),e[18]=H,e[19]=U):(H=e[18],U=e[19]);let W,G;e[20]===Symbol.for(`react.memo_cache_sentinel`)?(W=(0,p.jsx)(`input`,{ref:T,type:`file`,accept:re,multiple:!0,className:`prism-dropzone-input`,onChange:e=>void D(e.target.files),"aria-hidden":`true`}),G=(0,p.jsx)(u.upload,{}),e[20]=W,e[21]=G):(W=e[20],G=e[21]);let K=x?`Drop to add`:o.length>0?`Drop more files or click to add`:`Drop files or click to browse`,q;e[22]===K?q=e[23]:(q=(0,p.jsx)(`span`,{className:`prism-dropzone-label`,children:K}),e[22]=K,e[23]=q);let J;e[24]===Symbol.for(`react.memo_cache_sentinel`)?(J=(0,p.jsx)(`span`,{className:`prism-dropzone-hint`,children:`PDF · Word · Excel · PowerPoint · Image · Text`}),e[24]=J):J=e[24];let Y;e[25]!==B||e[26]!==q?(Y=(0,p.jsxs)(`div`,{className:B,onDrop:M,onDragOver:P,onDragLeave:I,onClick:V,role:`button`,tabIndex:0,"aria-label":`Upload a document`,onKeyDown:H,...U,children:[W,G,q,J]}),e[25]=B,e[26]=q,e[27]=Y):Y=e[27];let X;e[28]===C?X=e[29]:(X=C&&(0,p.jsx)(`p`,{className:`prism-app-error`,role:`alert`,children:C}),e[28]=C,e[29]=X);let Z;e[30]!==A||e[31]!==y||e[32]!==o?(Z=o.length>0&&(0,p.jsxs)(`div`,{className:`prism-staged`,children:[(0,p.jsx)(`p`,{className:`prism-staged-label`,children:o.length===1?`1 document ready`:`${o.length} documents ready`}),(0,p.jsx)(`ul`,{className:`prism-staged-list`,children:o.map(e=>(0,p.jsxs)(`li`,{className:`prism-staged-item`,children:[(0,p.jsx)(u.doc,{}),(0,p.jsx)(`span`,{className:`prism-staged-name`,children:ne({name:e.name,mime:e.type,data:``,size:e.size})}),(0,p.jsx)(`button`,{type:`button`,className:`prism-staged-remove`,onClick:t=>{t.stopPropagation(),de(e.name)},"aria-label":`Remove ${e.name}`,children:(0,p.jsx)(u.x,{})})]},e.name))}),(0,p.jsxs)(`button`,{type:`button`,className:`prism-confirm-btn`,onClick:()=>void A(),disabled:y,...a(m.preload),children:[y?`Preparing documents…`:`Open in Prism`,(0,p.jsx)(u.chevR,{})]})]}),e[30]=A,e[31]=y,e[32]=o,e[33]=Z):Z=e[33];let Q;e[34]===Symbol.for(`react.memo_cache_sentinel`)?(Q=(0,p.jsxs)(`ul`,{className:`prism-app-features`,children:[(0,p.jsxs)(`li`,{children:[(0,p.jsx)(`strong`,{children:`Maps claims spatially`}),` — regions, findings, and risks laid out so you can see the whole shape at once.`]}),(0,p.jsxs)(`li`,{children:[(0,p.jsx)(`strong`,{children:`Every card cites its source`}),` — verbatim quote + page number, always. If Mavéa can't cite it, the card doesn't exist.`]}),(0,p.jsxs)(`li`,{children:[(0,p.jsx)(`strong`,{children:`Ask the whole document`}),` — highlight any claim and ask a follow-up; the answer lights up the exact lines it came from.`]})]}),e[34]=Q):Q=e[34];let $;return e[35]!==Y||e[36]!==X||e[37]!==Z?($=(0,p.jsxs)(`div`,{className:`prism-app`,children:[R,(0,p.jsxs)(`main`,{className:`prism-app-main`,children:[z,Y,X,Z,Q]})]}),e[35]=Y,e[36]=X,e[37]=Z,e[38]=$):$=e[38],$}function v(e){return e.error}function oe(e){return e.attachment?[e.attachment]:[]}function se(){}function ce(e){return e.name}function le(){}function ue(){return c(s())}export{_ as PrismApp};
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/PrismWorkbench-BEaD7Arj.js","assets/compiler-runtime-qQQXpJgv.js","assets/rolldown-runtime-DkW27tQK.js","assets/react-BZJXY1be.js","assets/jsx-runtime-DeHZSEgm.js","assets/useLiveConfig-CvOQTr0s.js","assets/info-CiqHR5cs.js","assets/keyVault-Aw5Y2PjT.js","assets/providers-CPhoN8j0.js","assets/http-Bqk6nJiH.js","assets/blockTypes-DUDdP3pB.js","assets/attachments-BW-vki-E.js","assets/route-CMdTFx0P.js","assets/PrismOverlay-c8rcvt4V.js","assets/preload-helper-CiWYd9n-.js","assets/cachedImport-DW0gP14h.js","assets/preloadableLazy-MIX1ApBW.js","assets/lazyRetry-D50B1UMY.js","assets/index-CKRjGbeR.js","assets/useInView-DsTvv7L_.js","assets/coreIcons-DDTChE1H.js","assets/theme-D5D55hZi.js","assets/index-CFE0vqqO.css","assets/useFocusTrap-CJmpNZv2.js","assets/toast-BBNs2h3L.js","assets/sourceHost-BV3t2XDb.js","assets/penStrokes-CTC3AYiz.js","assets/gesture-BBS5nQEi.js","assets/types-CaO6xOn5.js","assets/cache-7UEbF3S6.js","assets/verbatim-DBTj9sPD.js","assets/officeDoc-GU6Cssjf.js","assets/csv-DAqzYXUs.js","assets/pen-UKrUHlDA.js","assets/streamParse-BX0bAppQ.js","assets/citation-BsSvaaer.js","assets/search-ZN7v_P5B.js","assets/PrismOverlay-5ZVXu4WL.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{n as a,t as o}from"./preloadableLazy-MIX1ApBW.js";import{n as s,t as c}from"./theme-D5D55hZi.js";import{E as l}from"./index-CKRjGbeR.js";import{n as u}from"./icons-gLFQTv74.js";import{t as d}from"./FeatureUseNotice-BfnZH8Vt.js";import{t as ee}from"./homeTarget-CDc-r2mj.js";import{a as te,s as ne,t as re,u as ie}from"./attachments-BW-vki-E.js";/* empty css */var ae=t(),f=e(),p=n();r();var m=o(()=>i(()=>import(`./PrismWorkbench-BEaD7Arj.js`).then(e=>({default:e.PrismWorkbench})),__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]))),h=m.Component,g={"too-large":`File is too large. Documents up to 40 MB, images up to 10 MB.`,unsupported:`Unsupported file type. Try a PDF, Word doc, spreadsheet, image, or text file.`};function _(){let e=(0,ae.c)(39),t;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=ee(),e[0]=t):t=e[0];let n=t,r;e[1]===Symbol.for(`react.memo_cache_sentinel`)?(r=[],e[1]=r):r=e[1],(0,f.useEffect)(ue,r);let i;e[2]===Symbol.for(`react.memo_cache_sentinel`)?(i=[],e[2]=i):i=e[2];let[o,s]=(0,f.useState)(i),[c,_]=(0,f.useState)(null),[y,b]=(0,f.useState)(!1),[x,S]=(0,f.useState)(!1),[C,w]=(0,f.useState)(null),T=(0,f.useRef)(null),E;e[3]===Symbol.for(`react.memo_cache_sentinel`)?(E=async e=>{if(!e||e.length===0)return;m.preload().catch(le),w(null);let t=Array.from(e).flatMap(e=>{let t=te(e);return t?(w(g[t]),[]):[e]});t.length>0&&s(e=>{let n=new Set(e.map(ce));return[...e,...t.filter(e=>!n.has(e.name))]}),T.current&&(T.current.value=``)},e[3]=E):E=e[3];let D=E,O;e[4]===Symbol.for(`react.memo_cache_sentinel`)?(O=e=>{s(t=>t.filter(t=>t.name!==e))},e[4]=O):O=e[4];let de=O,k;e[5]!==y||e[6]!==o?(k=async()=>{if(o.length===0||y)return;b(!0),w(null),m.preload().catch(se);let e=await Promise.all(o.map(ie)),t=e.flatMap(oe);t.length===o.length?_(t):w(g[e.find(v)?.error??`unsupported`]),b(!1)},e[5]=y,e[6]=o,e[7]=k):k=e[7];let A=k,j;e[8]===Symbol.for(`react.memo_cache_sentinel`)?(j=e=>{e.preventDefault(),S(!1),D(e.dataTransfer.files)},e[8]=j):j=e[8];let M=j,N;e[9]===Symbol.for(`react.memo_cache_sentinel`)?(N=e=>{e.preventDefault(),S(!0)},e[9]=N):N=e[9];let P=N,F;e[10]===Symbol.for(`react.memo_cache_sentinel`)?(F=e=>{e.currentTarget.contains(e.relatedTarget)||S(!1)},e[10]=F):F=e[10];let I=F;if(c){let t;e[11]===Symbol.for(`react.memo_cache_sentinel`)?(t=()=>_(null),e[11]=t):t=e[11];let n;return e[12]===c?n=e[13]:(n=(0,p.jsx)(l,{label:`Prism workbench`,overlay:!0,children:(0,p.jsx)(h,{pdf:c,onClose:t})}),e[12]=c,e[13]=n),n}let L;e[14]===Symbol.for(`react.memo_cache_sentinel`)?(L=()=>{window.location.hash=n.href},e[14]=L):L=e[14];let R;e[15]===Symbol.for(`react.memo_cache_sentinel`)?(R=(0,p.jsxs)(`header`,{className:`prism-app-header`,children:[(0,p.jsx)(`button`,{type:`button`,className:`prism-app-back`,onClick:L,"aria-label":`Back to ${n.label}`,title:`Back to ${n.label}`,children:(0,p.jsx)(u.chevL,{})}),(0,p.jsx)(`span`,{className:`prism-app-brand`,children:`Prism`})]}),e[15]=R):R=e[15];let z;e[16]===Symbol.for(`react.memo_cache_sentinel`)?(z=(0,p.jsxs)(`div`,{className:`prism-app-hero`,children:[(0,p.jsx)(`h1`,{className:`prism-app-title`,children:`Understand any document`}),(0,p.jsx)(`p`,{className:`prism-app-lede`,children:`Drop a PDF, Word doc, spreadsheet, or text file. Prism maps every claim, finding, and risk — every card cites its exact source.`}),(0,p.jsx)(d,{kind:`upload`})]}),e[16]=z):z=e[16];let B=`prism-dropzone${x?` prism-dropzone--over`:``}`,V;e[17]===Symbol.for(`react.memo_cache_sentinel`)?(V=()=>T.current?.click(),e[17]=V):V=e[17];let H,U;e[18]===Symbol.for(`react.memo_cache_sentinel`)?(H=e=>{(e.key===`Enter`||e.key===` `)&&T.current?.click()},U=a(m.preload),e[18]=H,e[19]=U):(H=e[18],U=e[19]);let W,G;e[20]===Symbol.for(`react.memo_cache_sentinel`)?(W=(0,p.jsx)(`input`,{ref:T,type:`file`,accept:re,multiple:!0,className:`prism-dropzone-input`,onChange:e=>void D(e.target.files),"aria-hidden":`true`}),G=(0,p.jsx)(u.upload,{}),e[20]=W,e[21]=G):(W=e[20],G=e[21]);let K=x?`Drop to add`:o.length>0?`Drop more files or click to add`:`Drop files or click to browse`,q;e[22]===K?q=e[23]:(q=(0,p.jsx)(`span`,{className:`prism-dropzone-label`,children:K}),e[22]=K,e[23]=q);let J;e[24]===Symbol.for(`react.memo_cache_sentinel`)?(J=(0,p.jsx)(`span`,{className:`prism-dropzone-hint`,children:`PDF · Word · Excel · PowerPoint · Image · Text`}),e[24]=J):J=e[24];let Y;e[25]!==B||e[26]!==q?(Y=(0,p.jsxs)(`div`,{className:B,onDrop:M,onDragOver:P,onDragLeave:I,onClick:V,role:`button`,tabIndex:0,"aria-label":`Upload a document`,onKeyDown:H,...U,children:[W,G,q,J]}),e[25]=B,e[26]=q,e[27]=Y):Y=e[27];let X;e[28]===C?X=e[29]:(X=C&&(0,p.jsx)(`p`,{className:`prism-app-error`,role:`alert`,children:C}),e[28]=C,e[29]=X);let Z;e[30]!==A||e[31]!==y||e[32]!==o?(Z=o.length>0&&(0,p.jsxs)(`div`,{className:`prism-staged`,children:[(0,p.jsx)(`p`,{className:`prism-staged-label`,children:o.length===1?`1 document ready`:`${o.length} documents ready`}),(0,p.jsx)(`ul`,{className:`prism-staged-list`,children:o.map(e=>(0,p.jsxs)(`li`,{className:`prism-staged-item`,children:[(0,p.jsx)(u.doc,{}),(0,p.jsx)(`span`,{className:`prism-staged-name`,children:ne({name:e.name,mime:e.type,data:``,size:e.size})}),(0,p.jsx)(`button`,{type:`button`,className:`prism-staged-remove`,onClick:t=>{t.stopPropagation(),de(e.name)},"aria-label":`Remove ${e.name}`,children:(0,p.jsx)(u.x,{})})]},e.name))}),(0,p.jsxs)(`button`,{type:`button`,className:`prism-confirm-btn`,onClick:()=>void A(),disabled:y,...a(m.preload),children:[y?`Preparing documents…`:`Open in Prism`,(0,p.jsx)(u.chevR,{})]})]}),e[30]=A,e[31]=y,e[32]=o,e[33]=Z):Z=e[33];let Q;e[34]===Symbol.for(`react.memo_cache_sentinel`)?(Q=(0,p.jsxs)(`ul`,{className:`prism-app-features`,children:[(0,p.jsxs)(`li`,{children:[(0,p.jsx)(`strong`,{children:`Maps claims spatially`}),` — regions, findings, and risks laid out so you can see the whole shape at once.`]}),(0,p.jsxs)(`li`,{children:[(0,p.jsx)(`strong`,{children:`Every card cites its source`}),` — verbatim quote + page number, always. If Mavéa can't cite it, the card doesn't exist.`]}),(0,p.jsxs)(`li`,{children:[(0,p.jsx)(`strong`,{children:`Ask the whole document`}),` — highlight any claim and ask a follow-up; the answer lights up the exact lines it came from.`]})]}),e[34]=Q):Q=e[34];let $;return e[35]!==Y||e[36]!==X||e[37]!==Z?($=(0,p.jsxs)(`div`,{className:`prism-app`,children:[R,(0,p.jsxs)(`main`,{className:`prism-app-main`,children:[z,Y,X,Z,Q]})]}),e[35]=Y,e[36]=X,e[37]=Z,e[38]=$):$=e[38],$}function v(e){return e.error}function oe(e){return e.attachment?[e.attachment]:[]}function se(){}function ce(e){return e.name}function le(){}function ue(){return c(s())}export{_ as PrismApp};
@@ -1,2 +1,2 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/kokoro-yB7iU_JU.js","assets/rolldown-runtime-DkW27tQK.js","assets/index-Db-FgYxX.js","assets/react-BZJXY1be.js","assets/compiler-runtime-qQQXpJgv.js","assets/useInView-DsTvv7L_.js","assets/jsx-runtime-DeHZSEgm.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-CFE0vqqO.css","assets/spokenText-Dy-GZvZV.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"./nextFrame-12y0UrAd.js";import{s as o,t as s,u as c}from"./walkSync-D6leFb_u.js";var l=e(),u=t(),d=n(),f=4e3,p={open:`THE CASE`,tension:`TENSION`,verdict:`THE VERDICT`,context:`CONTEXT`,close:`IN CLOSING`};function m(){let e=(0,u.c)(2),[t,n]=(0,l.useState)(h),r,i;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(r=()=>{let e=window.matchMedia(`(prefers-reduced-motion: reduce)`),t=()=>n(e.matches);return e.addEventListener(`change`,t),()=>e.removeEventListener(`change`,t)},i=[],e[0]=r,e[1]=i):(r=e[0],i=e[1]),(0,l.useEffect)(r,i),t}function h(){return typeof window<`u`&&window.matchMedia(`(prefers-reduced-motion: reduce)`).matches}var g=`mavea-brief-audio`;function _(){try{let e=localStorage.getItem(g);return e===`on`||e!==`off`&&null}catch{return null}}function v(e){try{localStorage.setItem(g,e?`on`:`off`)}catch{}}function y({beats:e,onBeat:t,onExit:n,speak:r,cancelSpeak:i,audioDefault:u=!0}){let h=m(),[g,y]=(0,l.useState)(0),[b,x]=(0,l.useState)(!h),[S,C]=(0,l.useState)(()=>u?_()??!0:!1),w=(0,l.useRef)({onBeat:t,speak:r,cancelSpeak:i});w.current={onBeat:t,speak:r,cancelSpeak:i};let T=e[g],E=g>=e.length-1,D=(0,l.useRef)(null);(0,l.useEffect)(()=>{if(T){if(w.current.onBeat(T),!S){D.current=null;return}w.current.cancelSpeak(),D.current=w.current.speak(T.spoken).catch(()=>null)}},[T,S]),(0,l.useEffect)(()=>{if(!b||h||!T||E)return;let t=!1,n=()=>{t||y(t=>Math.min(e.length-1,t+1))};if(!S){let e=setTimeout(n,T.dwellMs);return()=>{t=!0,clearTimeout(e)}}return(async()=>{let e=await a(D.current??Promise.resolve(null),f);t||(e?await c(e,T.dwellMs,s):await o(T.dwellMs),n())})(),()=>{t=!0}},[T,b,h,E,e.length,S]),(0,l.useEffect)(()=>{E&&x(!1)},[E]),(0,l.useEffect)(()=>()=>w.current.cancelSpeak(),[]);let O=(0,l.useCallback)(()=>y(e=>Math.max(0,e-1)),[]),k=(0,l.useCallback)(()=>y(t=>Math.min(e.length-1,t+1)),[e.length]),A=(0,l.useCallback)(()=>{E?(y(0),x(!0)):x(e=>!e)},[E]),j=(0,l.useCallback)(()=>{C(e=>(e&&w.current.cancelSpeak(),v(!e),!e))},[]),M=(0,l.useCallback)(e=>e.stopPropagation(),[]);return T?(0,d.jsxs)(`div`,{className:`prism-brief`,onPointerDown:M,onWheel:M,onClick:M,children:[(0,d.jsxs)(`div`,{className:`prism-brief-caption`,role:`status`,"aria-live":`polite`,children:[(0,d.jsx)(`span`,{className:`prism-brief-eyebrow`,"data-kind":T.kind,children:p[T.kind]}),(0,d.jsx)(`p`,{className:`prism-brief-line`,children:T.caption})]}),(0,d.jsxs)(`div`,{className:`prism-brief-bar`,children:[(0,d.jsx)(`button`,{type:`button`,className:`prism-brief-btn`,onClick:O,disabled:g===0,"aria-label":`Previous beat`,children:`‹`}),(0,d.jsx)(`button`,{type:`button`,className:`prism-brief-btn prism-brief-play`,onClick:A,"aria-label":E?`Replay`:b?`Pause`:`Play`,children:E?`↺`:b?`❙❙`:`▶`}),(0,d.jsx)(`button`,{type:`button`,className:`prism-brief-btn`,onClick:k,disabled:E,"aria-label":`Next beat`,children:`›`}),(0,d.jsxs)(`span`,{className:`prism-brief-progress`,"aria-hidden":`true`,children:[g+1,` / `,e.length]}),(0,d.jsx)(`span`,{className:`prism-brief-spacer`}),(0,d.jsx)(`button`,{type:`button`,className:`prism-brief-btn prism-brief-audio`+(S?` is-on`:``),onClick:j,"aria-pressed":S,"aria-label":S?`Mute narration`:`Play with audio`,title:S?`Mute narration`:`Play with audio`,children:(0,d.jsx)(`span`,{"aria-hidden":`true`,children:S?`🔊`:`🔇`})}),(0,d.jsx)(`button`,{type:`button`,className:`prism-brief-exit`,onClick:n,"aria-label":`Exit the briefing`,children:`✕ Exit`})]})]}):(0,d.jsx)(d.Fragment,{})}r();function b({beats:e,onBeat:t,onExit:n,audioDefault:r}){return(0,d.jsx)(y,{beats:e,onBeat:t,onExit:n,audioDefault:r,speak:e=>i(()=>import(`./kokoro-yB7iU_JU.js`).then(e=>e.a).then(t=>t.speakKokoroLine(e,`mavea`),()=>null),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14])),cancelSpeak:()=>{i(()=>import(`./kokoro-yB7iU_JU.js`).then(e=>e.a).then(e=>e.cancelKokoro()),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14]))}})}export{b as PrismBriefingPlayer};
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/kokoro-B-rc224u.js","assets/rolldown-runtime-DkW27tQK.js","assets/index-CKRjGbeR.js","assets/react-BZJXY1be.js","assets/compiler-runtime-qQQXpJgv.js","assets/useInView-DsTvv7L_.js","assets/jsx-runtime-DeHZSEgm.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-CFE0vqqO.css","assets/spokenText-Dy-GZvZV.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"./nextFrame-12y0UrAd.js";import{s as o,t as s,u as c}from"./walkSync-BtO3jsqQ.js";var l=e(),u=t(),d=n(),f=4e3,p={open:`THE CASE`,tension:`TENSION`,verdict:`THE VERDICT`,context:`CONTEXT`,close:`IN CLOSING`};function m(){let e=(0,u.c)(2),[t,n]=(0,l.useState)(h),r,i;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(r=()=>{let e=window.matchMedia(`(prefers-reduced-motion: reduce)`),t=()=>n(e.matches);return e.addEventListener(`change`,t),()=>e.removeEventListener(`change`,t)},i=[],e[0]=r,e[1]=i):(r=e[0],i=e[1]),(0,l.useEffect)(r,i),t}function h(){return typeof window<`u`&&window.matchMedia(`(prefers-reduced-motion: reduce)`).matches}var g=`mavea-brief-audio`;function _(){try{let e=localStorage.getItem(g);return e===`on`||e!==`off`&&null}catch{return null}}function v(e){try{localStorage.setItem(g,e?`on`:`off`)}catch{}}function y({beats:e,onBeat:t,onExit:n,speak:r,cancelSpeak:i,audioDefault:u=!0}){let h=m(),[g,y]=(0,l.useState)(0),[b,x]=(0,l.useState)(!h),[S,C]=(0,l.useState)(()=>u?_()??!0:!1),w=(0,l.useRef)({onBeat:t,speak:r,cancelSpeak:i});w.current={onBeat:t,speak:r,cancelSpeak:i};let T=e[g],E=g>=e.length-1,D=(0,l.useRef)(null);(0,l.useEffect)(()=>{if(T){if(w.current.onBeat(T),!S){D.current=null;return}w.current.cancelSpeak(),D.current=w.current.speak(T.spoken).catch(()=>null)}},[T,S]),(0,l.useEffect)(()=>{if(!b||h||!T||E)return;let t=!1,n=()=>{t||y(t=>Math.min(e.length-1,t+1))};if(!S){let e=setTimeout(n,T.dwellMs);return()=>{t=!0,clearTimeout(e)}}return(async()=>{let e=await a(D.current??Promise.resolve(null),f);t||(e?await c(e,T.dwellMs,s):await o(T.dwellMs),n())})(),()=>{t=!0}},[T,b,h,E,e.length,S]),(0,l.useEffect)(()=>{E&&x(!1)},[E]),(0,l.useEffect)(()=>()=>w.current.cancelSpeak(),[]);let O=(0,l.useCallback)(()=>y(e=>Math.max(0,e-1)),[]),k=(0,l.useCallback)(()=>y(t=>Math.min(e.length-1,t+1)),[e.length]),A=(0,l.useCallback)(()=>{E?(y(0),x(!0)):x(e=>!e)},[E]),j=(0,l.useCallback)(()=>{C(e=>(e&&w.current.cancelSpeak(),v(!e),!e))},[]),M=(0,l.useCallback)(e=>e.stopPropagation(),[]);return T?(0,d.jsxs)(`div`,{className:`prism-brief`,onPointerDown:M,onWheel:M,onClick:M,children:[(0,d.jsxs)(`div`,{className:`prism-brief-caption`,role:`status`,"aria-live":`polite`,children:[(0,d.jsx)(`span`,{className:`prism-brief-eyebrow`,"data-kind":T.kind,children:p[T.kind]}),(0,d.jsx)(`p`,{className:`prism-brief-line`,children:T.caption})]}),(0,d.jsxs)(`div`,{className:`prism-brief-bar`,children:[(0,d.jsx)(`button`,{type:`button`,className:`prism-brief-btn`,onClick:O,disabled:g===0,"aria-label":`Previous beat`,children:`‹`}),(0,d.jsx)(`button`,{type:`button`,className:`prism-brief-btn prism-brief-play`,onClick:A,"aria-label":E?`Replay`:b?`Pause`:`Play`,children:E?`↺`:b?`❙❙`:`▶`}),(0,d.jsx)(`button`,{type:`button`,className:`prism-brief-btn`,onClick:k,disabled:E,"aria-label":`Next beat`,children:`›`}),(0,d.jsxs)(`span`,{className:`prism-brief-progress`,"aria-hidden":`true`,children:[g+1,` / `,e.length]}),(0,d.jsx)(`span`,{className:`prism-brief-spacer`}),(0,d.jsx)(`button`,{type:`button`,className:`prism-brief-btn prism-brief-audio`+(S?` is-on`:``),onClick:j,"aria-pressed":S,"aria-label":S?`Mute narration`:`Play with audio`,title:S?`Mute narration`:`Play with audio`,children:(0,d.jsx)(`span`,{"aria-hidden":`true`,children:S?`🔊`:`🔇`})}),(0,d.jsx)(`button`,{type:`button`,className:`prism-brief-exit`,onClick:n,"aria-label":`Exit the briefing`,children:`✕ Exit`})]})]}):(0,d.jsx)(d.Fragment,{})}r();function b({beats:e,onBeat:t,onExit:n,audioDefault:r}){return(0,d.jsx)(y,{beats:e,onBeat:t,onExit:n,audioDefault:r,speak:e=>i(()=>import(`./kokoro-B-rc224u.js`).then(e=>e.a).then(t=>t.speakKokoroLine(e,`mavea`),()=>null),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14])),cancelSpeak:()=>{i(()=>import(`./kokoro-B-rc224u.js`).then(e=>e.a).then(e=>e.cancelKokoro()),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14]))}})}export{b as PrismBriefingPlayer};