@mavea/mavea 1.0.16 → 1.0.18

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 (670) hide show
  1. package/DISCLAIMER.md +4 -1
  2. package/PRIVACY.md +14 -8
  3. package/README.md +61 -23
  4. package/TERMS.md +11 -1
  5. package/THIRD-PARTY.txt +25248 -621
  6. package/bin/mavea.mjs +156 -147
  7. package/dist/.vite/manifest.json +2166 -1715
  8. package/dist/assets/AnnotationLayer-ClU-e6qL.css +1 -0
  9. package/dist/assets/AnnotationLayer-DHHGgh8x.js +2 -0
  10. package/dist/assets/AppCommandPalette-DKBglbNo.js +1 -0
  11. package/dist/assets/AtlasView-B82UfrEX.js +1 -0
  12. package/dist/assets/BlockEmpty-B82uCse8.js +1 -0
  13. package/dist/assets/BriefingPlayer-C0D_2ILa.js +1 -0
  14. package/dist/assets/CanvasSkeleton-Bx0s36b_.js +2 -0
  15. package/dist/assets/CardEditor-DABIhGdQ.js +1 -0
  16. package/dist/assets/CheckLogRail-BOaXnqWK.css +1 -0
  17. package/dist/assets/CheckLogRail-Btg7Linv.js +1 -0
  18. package/dist/assets/{CodeOutput-Bg64AyKu.js → CodeOutput-DF892aIR.js} +3 -3
  19. package/dist/assets/CommandPalette-DagPdSGZ.js +1 -0
  20. package/dist/assets/ConversationVideoStudio-CIAMxElj.css +1 -0
  21. package/dist/assets/ConversationVideoStudio-EPw6H4lE.js +1 -0
  22. package/dist/assets/CourseLessonReader-DeAuL1tO.js +2 -0
  23. package/dist/assets/CourseRail-Dx9IIbTZ.js +1 -0
  24. package/dist/assets/CoursesApp-CzUGaYWZ.js +2 -0
  25. package/dist/assets/CrossExamPanel-CdIYUu-B.js +1 -0
  26. package/dist/assets/DashPresent-DXwesMIr.js +1 -0
  27. package/dist/assets/DashboardDetail-CJzB85NC.js +2 -0
  28. package/dist/assets/DashboardLoopRuntime-CEnUpS-I.js +1 -0
  29. package/dist/assets/DashboardOverview-C3hv9sm1.js +1 -0
  30. package/dist/assets/DashboardSettings-CmZWG3US.js +1 -0
  31. package/dist/assets/{DashboardsApp-Dx-EsaPW.css → DashboardsApp-B6yUtkKB.css} +1 -1
  32. package/dist/assets/DashboardsApp-wCgs98G0.js +2 -0
  33. package/dist/assets/{DeepZoomApp-Chz6laKc.js → DeepZoomApp-CwqKpjo7.js} +2 -2
  34. package/dist/assets/DelegatePanel-Bi1qPgGG.js +33 -0
  35. package/dist/assets/DemoGallery-Cg0ykVpG.js +1 -0
  36. package/dist/assets/DropSelect-C3g0PjuN.js +1 -0
  37. package/dist/assets/DropSelect-DilESAgA.css +1 -0
  38. package/dist/assets/ExportModal-rxndDhoO.js +2 -0
  39. package/dist/assets/ExtractionPreview-ChRAimKr.js +18 -0
  40. package/dist/assets/{FallbackCard-B489rTd9.js → FallbackCard-ap_4wOfj.js} +1 -1
  41. package/dist/assets/FeatureUseNotice-BhljPjUv.js +1 -0
  42. package/dist/assets/FlagshipCTA-uoeGMQas.js +1 -0
  43. package/dist/assets/FlagshipCommandPalette-DyNsP8k3.js +1 -0
  44. package/dist/assets/FlagshipShowcase-DHpGPlca.js +1 -0
  45. package/dist/assets/FlashcardsApp-Cm50X3Hl.js +1 -0
  46. package/dist/assets/ForecastPanel-zPUh2ClQ.js +1 -0
  47. package/dist/assets/GalleryApp-BFop9Eu7.js +1 -0
  48. package/dist/assets/{HonestByDesign-hCxc0A7b.js → HonestByDesign-HeTTCiis.js} +1 -1
  49. package/dist/assets/{HowItWorks-BlbQcUxx.js → HowItWorks-gAuUl7VQ.js} +1 -1
  50. package/dist/assets/LegalApp-jOlpLQSV.js +1 -0
  51. package/dist/assets/{LegalMarkdownDocument-Bk3U7ChN.js → LegalMarkdownDocument-RSNiyAu0.js} +2 -2
  52. package/dist/assets/LegalPageShell-CmxGCdqJ.css +1 -0
  53. package/dist/assets/LegalPageShell-Cr90l1I2.js +1 -0
  54. package/dist/assets/LeverPanel-D1SNRGdm.js +1 -0
  55. package/dist/assets/Library-DmdzY2se.js +1 -0
  56. package/dist/assets/LibraryOverlay-DEQ5GuIs.js +1 -0
  57. package/dist/assets/LiveApp-Bl7WBgqJ.css +1 -0
  58. package/dist/assets/LiveApp-CUoQgVo1.js +62 -0
  59. package/dist/assets/LiveSettings-jn26sH4v.js +6 -0
  60. package/dist/assets/MindMapViewerDrawer-CDDzzpFi.js +1 -0
  61. package/dist/assets/MindShape-BeZFay7O.js +1 -0
  62. package/dist/assets/MindShape-CaPeUo-a.css +1 -0
  63. package/dist/assets/{Orb-B0NEVfqL.js → Orb-D8lhTdmY.js} +1 -1
  64. package/dist/assets/PinToDashboard-CSqwDBLD.js +1 -0
  65. package/dist/assets/PlanReview-ChZeUHQO.js +1 -0
  66. package/dist/assets/Presence-CKSoyuhE.js +1 -0
  67. package/dist/assets/PresentationDeck-Dj9MQVZC.js +1 -0
  68. package/dist/assets/PrismApp-Dfs6eAuR.js +2 -0
  69. package/dist/assets/PrismAskController-CSsCkRC8.js +37 -0
  70. package/dist/assets/PrismBriefingPlayer-BoB_PCTT.js +2 -0
  71. package/dist/assets/PrismOverlay-CGtr7lBl.js +109 -0
  72. package/dist/assets/PrismWorkbench-f0rLNBxb.js +1 -0
  73. package/dist/assets/{PrivacyApp-CatB3OpJ.js → PrivacyApp-CFs0PM5C.js} +16 -10
  74. package/dist/assets/Recap-T9DtFaEk.js +1 -0
  75. package/dist/assets/ReelJelly-D5e-jt-8.js +1 -0
  76. package/dist/assets/ReplayCard-BkJbY0-I.js +2 -0
  77. package/dist/assets/ReplayCard-Cs6mzTRa.css +1 -0
  78. package/dist/assets/ReplayOverlay-Dm_k7FBA.js +1 -0
  79. package/dist/assets/ReplayOverlay-DzkcTnCA.css +1 -0
  80. package/dist/assets/RewindOverlay-BSDbLgcN.js +1 -0
  81. package/dist/assets/RippleApp-DW1rpKHe.js +2 -0
  82. package/dist/assets/RippleAskController-CywVzqUA.js +34 -0
  83. package/dist/assets/RippleOverlay-DVxfWEQ8.js +6 -0
  84. package/dist/assets/SeeDontRead-Ct4PY63d.js +1 -0
  85. package/dist/assets/ShareModal-BILPvqjZ.js +2 -0
  86. package/dist/assets/{ShareModal-PobtP7AJ.css → ShareModal-D1QuQEko.css} +1 -1
  87. package/dist/assets/ShipCascade-Bf-qDWMb.js +1 -0
  88. package/dist/assets/ShipCourse-DGj9BbRM.js +1 -0
  89. package/dist/assets/{ShipGate-BYYu9WVq.js → ShipGate-D4BP41-h.js} +1 -1
  90. package/dist/assets/ShipHotspots-lGioTtf1.js +1 -0
  91. package/dist/assets/{ShipIncident-BWxerYtX.js → ShipIncident-DMLb14Lx.js} +1 -1
  92. package/dist/assets/ShipMigration-ZnzL-1rC.js +1 -0
  93. package/dist/assets/ShipOnboarding-DUxtx2Vr.js +1 -0
  94. package/dist/assets/ShipRead-CJJmY-wy.js +1 -0
  95. package/dist/assets/ShipRollout-Dt2TgI0L.js +1 -0
  96. package/dist/assets/ShipSuggestions-BrAXTjAR.js +1 -0
  97. package/dist/assets/ShipWorkspace-_MtKAiKH.js +2 -0
  98. package/dist/assets/SignatureLoop-CfM-rTXb.js +1 -0
  99. package/dist/assets/SrsReview-B1B2VekR.css +1 -0
  100. package/dist/assets/SrsReview-DhWNYYv7.js +1 -0
  101. package/dist/assets/SynthesisApp-C43ZO6Ew.js +2 -0
  102. package/dist/assets/SynthesisOverlay-Dunk_JWD.js +66 -0
  103. package/dist/assets/{TermsApp-CleIlDtR.js → TermsApp-BUQa48cB.js} +13 -3
  104. package/dist/assets/TopbarMenu-DQXxqSWY.js +1 -0
  105. package/dist/assets/TopicCanvas-DR26Swr_.js +2 -0
  106. package/dist/assets/TourPrism-zt1LIaLd.js +1 -0
  107. package/dist/assets/TrackerTile-sYD2MM_4.js +2 -0
  108. package/dist/assets/TwoSurfaces-CLOIlVvY.js +1 -0
  109. package/dist/assets/UnderstoodPanel-DmJph4el.js +1 -0
  110. package/dist/assets/WhyMachineOverlay-Nll4Wco-.js +1 -0
  111. package/dist/assets/WowFeatures-CNVwRlf0.js +1 -0
  112. package/dist/assets/ZoomDeck-DNgyW7Nm.js +1 -0
  113. package/dist/assets/__vite-browser-external-gfE6fZcA.js +1 -0
  114. package/dist/assets/alternateFinishes-Cgks49KV.js +494 -0
  115. package/dist/assets/annotationAuto-C9weSF2k.js +1 -0
  116. package/dist/assets/annotationReel-va1i-lKs.js +1 -0
  117. package/dist/assets/annotations-CftUUB13.js +1 -0
  118. package/dist/assets/attachments-BW-vki-E.js +1 -0
  119. package/dist/assets/backup-D--1WRte.js +1 -0
  120. package/dist/assets/blockLabel-FogyzEQY.js +1 -0
  121. package/dist/assets/blockTypes-CgNGx27_.js +1 -0
  122. package/dist/assets/buildShip-BgFg98tH.js +1 -0
  123. package/dist/assets/cache-CvbSI-pr.js +1 -0
  124. package/dist/assets/cachedImport-DW0gP14h.js +1 -0
  125. package/dist/assets/canvas-DIs20T9l.js +1 -0
  126. package/dist/assets/capture-BBxyt5SN.js +2 -0
  127. package/dist/assets/catalog-Db9GWM6N.js +1 -0
  128. package/dist/assets/{cfo.generated-Bjl5OGay.js → cfo.generated-j5CXp1Zz.js} +1 -1
  129. package/dist/assets/chapters-Dqm4iLDa.js +1 -0
  130. package/dist/assets/charts2-CaKGzkgJ.js +1 -0
  131. package/dist/assets/checkLogModel-BMtruriG.js +1 -0
  132. package/dist/assets/{citation-BcvmjKS8.js → citation-BsSvaaer.js} +1 -1
  133. package/dist/assets/{codeContext-0UMRSGRr.js → codeContext-goNoLAIr.js} +1 -1
  134. package/dist/assets/compiler-runtime-qQQXpJgv.js +1 -0
  135. package/dist/assets/{compose-BJ9EfcQS.js → compose-D-OsDiU9.js} +1 -1
  136. package/dist/assets/confirmAdd-BDNV8RqF.js +1 -0
  137. package/dist/assets/{contentVault-DzTYWcbD.js → contentVault-xfUwSJ3i.js} +1 -1
  138. package/dist/assets/coreIcons-BzqW7Qiz.js +1 -0
  139. package/dist/assets/cpp-CJIxL8VH.js +1 -0
  140. package/dist/assets/cpp-Cts1PyIS.js +1 -0
  141. package/dist/assets/dash-composer-DeNWVwpU.css +1 -0
  142. package/dist/assets/dashboardEvents-BDKxoLch.js +2 -0
  143. package/dist/assets/dashboards-Dy4MTJQ5.css +1 -0
  144. package/dist/assets/dataPending-lZUzUEo6.js +1 -0
  145. package/dist/assets/{diagrams-CaSfjT4I.js → diagrams-1DJMD4j-.js} +1 -1
  146. package/dist/assets/dist-DRo0JOkC.js +14 -0
  147. package/dist/assets/{dist-CBEt6Q8V.js → dist-kNHRtoqd.js} +21 -21
  148. package/dist/assets/empty-BO1NC9qY.js +1 -0
  149. package/dist/assets/{explode-WBykfhqW.js → explode-fgkkWz8o.js} +1 -1
  150. package/dist/assets/facts-BUGuVUIc.js +1 -0
  151. package/dist/assets/fit-CMu7prjb.js +1 -0
  152. package/dist/assets/fitText-DQ2omSN0.js +1 -0
  153. package/dist/assets/format-q0LwBjID.js +1 -0
  154. package/dist/assets/{format-hc2QOoIu.js → format-rPI6ZwwH.js} +1 -1
  155. package/dist/assets/friendlyAsk-BBdRZIar.js +1 -0
  156. package/dist/assets/{generate-8odaTyr4.js → generate-CemSUZ8A.js} +3 -3
  157. package/dist/assets/generateBeats-aqKTlSN2.js +1 -0
  158. package/dist/assets/{generateCourse-Cj_-vDWu.js → generateCourse-BIBbw-ZJ.js} +1 -1
  159. package/dist/assets/generateLive-BsXn4Y_d.js +51 -0
  160. package/dist/assets/githubBrowser-BDiuD9dz.js +1 -0
  161. package/dist/assets/githubToken-Bwa7V9YT.js +1 -0
  162. package/dist/assets/history-D2EH2X6D.js +1 -0
  163. package/dist/assets/homeTarget-CsO8nY7z.js +1 -0
  164. package/dist/assets/http-Lar_UMKb.js +2 -0
  165. package/dist/assets/{icons-CHVz6kv_.js → icons-gLFQTv74.js} +1 -1
  166. package/dist/assets/incident-D3bmMmES.js +10 -0
  167. package/dist/assets/index-B69GkoTc.css +1 -0
  168. package/dist/assets/index-D1SPhBGd.js +22 -0
  169. package/dist/assets/index.es-yrxxdux0.js +5 -0
  170. package/dist/assets/jspdf.es.min-Bbaa2Qun.js +79 -0
  171. package/dist/assets/jsx-runtime-DeHZSEgm.js +1 -0
  172. package/dist/assets/katex-CiJ_n4H9.js +257 -0
  173. package/dist/assets/keyVault-Aw5Y2PjT.js +1 -0
  174. package/dist/assets/kokoro-C6P0LV4L.js +1 -0
  175. package/dist/assets/layout-CEoNLr-w.js +1 -0
  176. package/dist/assets/{layout-CkO0Psde.js → layout-CHn3XWJd.js} +1 -1
  177. package/dist/assets/learn-CXstDWJf.js +1 -0
  178. package/dist/assets/ledger-Cv0LBflx.js +1 -0
  179. package/dist/assets/lib-B7OE1ZQQ.js +1 -0
  180. package/dist/assets/liveSchema-B8OByCPH.js +99 -0
  181. package/dist/assets/maplibre-gl-CrDadnl3.js +801 -0
  182. package/dist/assets/maplibre-gl-worker-DZ7nj4vd.js +11 -0
  183. package/dist/assets/{mastery-D7xYf5D7.js → mastery-CUfDeuqO.js} +2 -2
  184. package/dist/assets/{media-CsrUl279.js → media-BvwzACIX.js} +1 -1
  185. package/dist/assets/{model-BE0UHu1w.js → model-BsQ5ixwB.js} +1 -1
  186. package/dist/assets/motion-BY_Egaxm.js +1 -0
  187. package/dist/assets/motion-DxHSlPN6.js +1 -0
  188. package/dist/assets/{neighborhoods-DFqKm9Xi.js → neighborhoods-D7QjURnE.js} +1 -1
  189. package/dist/assets/notes-U6gRKVHk.js +1 -0
  190. package/dist/assets/officeDoc-Dn8jw1fG.js +3 -0
  191. package/dist/assets/openchemlib-Cz_MN0FG.js +23 -0
  192. package/dist/assets/{owners-FXDGInVq.js → owners-HRBX7JN_.js} +1 -1
  193. package/dist/assets/parseDiff-D8uBQ9mQ.js +2 -0
  194. package/dist/assets/pdf-CUAVYiYW.js +54 -0
  195. package/dist/assets/pdf.worker.min-CHFwMXne.mjs +29 -0
  196. package/dist/assets/pen-D9UT-ioQ.js +24 -0
  197. package/dist/assets/{perfProbe-CCSPF3EA.js → perfProbe-BxyiHsI2.js} +1 -1
  198. package/dist/assets/{php-CYrBA5iX.js → php-CQT4wx5i.js} +1 -1
  199. package/dist/assets/pin-D-4Zjiik.css +1 -0
  200. package/dist/assets/pin-qQrH_dBi.js +1 -0
  201. package/dist/assets/planTracker-CjnznF7v.js +1 -0
  202. package/dist/assets/portal-t0bsUEg2.js +1 -0
  203. package/dist/assets/{pptxgen.es-CwCkoJdp.js → pptxgen.es-zw8PIOkD.js} +11 -11
  204. package/dist/assets/predictions-CkVKHq-5.js +1 -0
  205. package/dist/assets/preload-helper-CiWYd9n-.js +1 -0
  206. package/dist/assets/preloadableLazy-MIX1ApBW.js +1 -0
  207. package/dist/assets/{prewarm--KODwuMi.js → prewarm-CAZcnT4x.js} +1 -1
  208. package/dist/assets/prism.generated-BQkO5r6r.js +41 -0
  209. package/dist/assets/{prismExtract.worker-Cws9K1NG.js → prismExtract.worker-OxGWMXXN.js} +1 -1
  210. package/dist/assets/prismGround.worker-C9hyveb3.js +1 -0
  211. package/dist/assets/prismLayout.worker-CJa4orCT.js +1 -0
  212. package/dist/assets/providers-DdJWf_PE.js +1 -0
  213. package/dist/assets/purify.es-JEAr64Sr.js +3 -0
  214. package/dist/assets/{queue-J4h7E3uc.js → queue-Adae4IzW.js} +1 -1
  215. package/dist/assets/quietHours-_i5Uqz7z.js +1 -0
  216. package/dist/assets/quizResult-DB8yeqDr.js +1 -0
  217. package/dist/assets/react-BZJXY1be.js +1 -0
  218. package/dist/assets/ready-4lPJes2S.js +1 -0
  219. package/dist/assets/ready-LSwk88I-.js +1 -0
  220. package/dist/assets/{reference-sJzyMiL4.js → reference-BjexflMu.js} +1 -1
  221. package/dist/assets/registry-4mMEt1Xy.css +1 -0
  222. package/dist/assets/registry-7poQfBaM.js +4 -0
  223. package/dist/assets/registry-9QjeHgKs.js +1 -0
  224. package/dist/assets/registry-B0GIHERt.js +1 -0
  225. package/dist/assets/{registry-DpaaVbmL.css → registry-B1KQ1VPZ.css} +1 -1
  226. package/dist/assets/registry-B5S3brjM.css +1 -0
  227. package/dist/assets/registry-BFbfXK-W.js +1 -0
  228. package/dist/assets/registry-BSX3aFUw.js +1 -0
  229. package/dist/assets/registry-Bv1f5UU4.js +2 -0
  230. package/dist/assets/registry-BzH7mEl7.js +1 -0
  231. package/dist/assets/registry-C28gYnVq.js +1 -0
  232. package/dist/assets/registry-COkvZrNA.css +1 -0
  233. package/dist/assets/registry-CPImC7mO.js +1 -0
  234. package/dist/assets/registry-CPiwQhAm.js +1 -0
  235. package/dist/assets/registry-CcOO8UZr.js +1 -0
  236. package/dist/assets/registry-Ci65uThi.js +1 -0
  237. package/dist/assets/registry-CkScyZGa.js +1 -0
  238. package/dist/assets/registry-CtvKPLd7.js +1 -0
  239. package/dist/assets/{registry-upbw6pyj.css → registry-CuVk7MAI.css} +1 -1
  240. package/dist/assets/{registry-D5oMqeSa.js → registry-CueC1vq1.js} +1 -1
  241. package/dist/assets/registry-CvylL2BN.css +1 -0
  242. package/dist/assets/registry-CxUmdwDk.js +1 -0
  243. package/dist/assets/registry-D8O0apUT.js +2 -0
  244. package/dist/assets/registry-DLyrLfe-2.js +1 -0
  245. package/dist/assets/registry-DO4hGO5e.js +1 -0
  246. package/dist/assets/{registry-Xzq_Rpmm.css → registry-DScSjt8p.css} +1 -1
  247. package/dist/assets/registry-Daypk4uR.js +1 -0
  248. package/dist/assets/registry-Dd1lcXrO.js +2 -0
  249. package/dist/assets/{registry-DWcNVyI2.css → registry-DpMI23iE.css} +1 -1
  250. package/dist/assets/registry-NbNNn_ra.js +1 -0
  251. package/dist/assets/registry-Vp8VuMV0.js +9 -0
  252. package/dist/assets/registry-WHd1PwU3.js +1 -0
  253. package/dist/assets/registry-Xl8mAnKq.js +1 -0
  254. package/dist/assets/registry-tkd3UhWn.css +1 -0
  255. package/dist/assets/{registry-ei6fIgBT.css → registry-twSIyxJQ.css} +1 -1
  256. package/dist/assets/registry-types-D3q_LrlV.js +1 -0
  257. package/dist/assets/registry-w4R6c89s.js +48 -0
  258. package/dist/assets/{relate-DxAi8xpo.js → relate-DHPSGB7a.js} +1 -1
  259. package/dist/assets/replay-zh4xVk5G.js +1 -0
  260. package/dist/assets/rolldown-runtime-DkW27tQK.js +1 -0
  261. package/dist/assets/route-D4kd-D3B.js +1 -0
  262. package/dist/assets/{ruby-BhrksQMt.js → ruby-D_UtGFHI.js} +1 -1
  263. package/dist/assets/{run-Dc2ZJz6n.js → run-BdDyp6Xv.js} +2 -2
  264. package/dist/assets/run-ByCJN-29.js +23 -0
  265. package/dist/assets/run-DiPX83_J.js +21 -0
  266. package/dist/assets/safeImageUrl-BINWXOTz.js +1 -0
  267. package/dist/assets/screen-DFWKge3-.js +1 -0
  268. package/dist/assets/search-ZN7v_P5B.js +1 -0
  269. package/dist/assets/shapes-DI0LQC8n.js +1 -0
  270. package/dist/assets/shard005-Dp5TM33O.js +1 -0
  271. package/dist/assets/shard006-DpJfkjmW.js +1 -0
  272. package/dist/assets/shard007-CIQN8OfZ.js +1 -0
  273. package/dist/assets/shard008-BFiyL7r6.js +1 -0
  274. package/dist/assets/shard009-0s30Tkk9.js +1 -0
  275. package/dist/assets/shard010-DPhgF5ck.js +1 -0
  276. package/dist/assets/shard011-C2jVsC25.js +1 -0
  277. package/dist/assets/shard012-DYtN5yzJ.js +1 -0
  278. package/dist/assets/shard013-1D6_Qy9C.js +1 -0
  279. package/dist/assets/shard014-D8s7GHnm.js +1 -0
  280. package/dist/assets/shard015-16W6KgnL.js +1 -0
  281. package/dist/assets/shard016-B4PpWmro.js +1 -0
  282. package/dist/assets/shard017-BO1sA5b3.js +1 -0
  283. package/dist/assets/shard018-D4gn8z25.js +1 -0
  284. package/dist/assets/shard019-vSbfaqRA.js +1 -0
  285. package/dist/assets/shard020-DwbHP8bp.js +1 -0
  286. package/dist/assets/{shard021-2FE-tze4.js → shard021-BhEyVVAL.js} +1 -1
  287. package/dist/assets/shard022-BdT7zFy3.js +1 -0
  288. package/dist/assets/shard023-Dga_NQcm.js +1 -0
  289. package/dist/assets/shard024-CXHofcxc.js +1 -0
  290. package/dist/assets/shard025-a4CQKYw1.js +1 -0
  291. package/dist/assets/shard026-0rhLKfDL.js +1 -0
  292. package/dist/assets/shard027-C9GMfOtn.js +1 -0
  293. package/dist/assets/shard028-D9__rPnw.js +1 -0
  294. package/dist/assets/shard029-BSdYKGgG.js +1 -0
  295. package/dist/assets/shard030-DceOU7pS.js +1 -0
  296. package/dist/assets/shard031-C6_p076r.js +1 -0
  297. package/dist/assets/shard032-Cah16sJi.js +1 -0
  298. package/dist/assets/shard033-D-iobGzc.js +1 -0
  299. package/dist/assets/shard034-DIyfCKl8.js +1 -0
  300. package/dist/assets/shard035-BHWs8v0a.js +1 -0
  301. package/dist/assets/shard036-AhOPHqzq.js +1 -0
  302. package/dist/assets/shard037-CuAGDOOu.js +1 -0
  303. package/dist/assets/shard038-CYdtnPjK.js +1 -0
  304. package/dist/assets/shard039-DgvXKOyi.js +1 -0
  305. package/dist/assets/shard040-DO012waT.js +1 -0
  306. package/dist/assets/shard041-BeUicA1R.js +1 -0
  307. package/dist/assets/shard042-D2zbq14A.js +1 -0
  308. package/dist/assets/shard043-BKoTEB-H.js +1 -0
  309. package/dist/assets/shard044-bmYKfH3A.js +1 -0
  310. package/dist/assets/shard045-i_R1olD9.js +1 -0
  311. package/dist/assets/shard046-CFk2L0GQ.js +1 -0
  312. package/dist/assets/shard047-pjHCnVaT.js +1 -0
  313. package/dist/assets/shard048-Cc7tGz6R.js +1 -0
  314. package/dist/assets/shard049-C9eoD-6Z.js +1 -0
  315. package/dist/assets/shard050-V3c_ZDrB.js +1 -0
  316. package/dist/assets/shard051-D1ISwZzf.js +1 -0
  317. package/dist/assets/shard052-Dy09xx3S.js +1 -0
  318. package/dist/assets/shard053-Bi4Z4cwW.js +1 -0
  319. package/dist/assets/shard054-BoC-LNYu.js +1 -0
  320. package/dist/assets/shard055-D2NJeMN1.js +1 -0
  321. package/dist/assets/shard056-sSFMbxXN.js +1 -0
  322. package/dist/assets/shard057-DhNK5nyZ.js +1 -0
  323. package/dist/assets/shard058-Du4SjxeD.js +1 -0
  324. package/dist/assets/shard059-fGiLnJzG.js +1 -0
  325. package/dist/assets/shard060-l84MDY2t.js +1 -0
  326. package/dist/assets/shard061-B3aIa7Aa.js +1 -0
  327. package/dist/assets/{shard061-C9A8iNiq.js → shard062-BJ8OX6CJ.js} +1 -1
  328. package/dist/assets/shard063-CMo-7Qit.js +1 -0
  329. package/dist/assets/shard064-B0EEOnfG.js +1 -0
  330. package/dist/assets/shard065-D-StlUHp.js +1 -0
  331. package/dist/assets/share-kW3pZ027.js +1 -0
  332. package/dist/assets/shikiHighlight-BwX78OP8.js +153 -0
  333. package/dist/assets/speed-K5_Ebj-8.js +1 -0
  334. package/dist/assets/spokenText-D3iS8fuI.js +1 -0
  335. package/dist/assets/spreadLabels-CQ8hufvK.js +1 -0
  336. package/dist/assets/src-DG1n-LFe.js +1 -0
  337. package/dist/assets/store-BWLbFXiY.js +1 -0
  338. package/dist/assets/{store-BMRQiV1z.js → store-BfHRbVKz.js} +1 -1
  339. package/dist/assets/store-D-f8ZuaK.js +1 -0
  340. package/dist/assets/store-D2IJF4SA.js +0 -0
  341. package/dist/assets/store-DpObYU1u.js +1 -0
  342. package/dist/assets/store-DpmbKVs7.js +1 -0
  343. package/dist/assets/store-gohr8YVT.js +1 -0
  344. package/dist/assets/{streamParse-DRgMHWye.js → streamParse-B-Gjwa9T.js} +1 -1
  345. package/dist/assets/svgLabel-BQMDdcT2.js +1 -0
  346. package/dist/assets/swift-CyEgAFGc.js +1 -0
  347. package/dist/assets/theme-f0mztBcq.js +1 -0
  348. package/dist/assets/threads-Cu2t3070.js +1 -0
  349. package/dist/assets/tiles-CBiVVjtT.css +1 -0
  350. package/dist/assets/tiles-pdNi6MGe.js +1 -0
  351. package/dist/assets/types-CaO6xOn5.js +1 -0
  352. package/dist/assets/useDashboardLoop-DuckIfJX.js +5 -0
  353. package/dist/assets/useDashboards-BMcuCWoz.js +1 -0
  354. package/dist/assets/{useFocusTrap-DbfG6zbM.js → useFocusTrap-DBtkeyRy.js} +1 -1
  355. package/dist/assets/useInView-CXTOAEV3.js +1 -0
  356. package/dist/assets/useLedger-1WVXef68.js +1 -0
  357. package/dist/assets/useLiveConfig-9eJ7EM3B.js +1 -0
  358. package/dist/assets/useSpatialCanvas-CtVsYmp8.js +1 -0
  359. package/dist/assets/useSpotlightWalk-DxlxBezO.js +1 -0
  360. package/dist/assets/useSrsCards-C27o39fF.js +1 -0
  361. package/dist/assets/useStudy-B5874Bcg.js +1 -0
  362. package/dist/assets/{useTimeout-BRYvu2jQ.js → useTimeout-Cm4yzted.js} +1 -1
  363. package/dist/assets/{useValidatedImage-D2fhA198.js → useValidatedImage-BQi2c66o.js} +1 -1
  364. package/dist/assets/useZoomGesture-CN0p0lHL.js +1 -0
  365. package/dist/assets/verbatim-DBTj9sPD.js +1 -0
  366. package/dist/assets/worker-D7eK-Ya8.js +2 -0
  367. package/dist/demo-assets/CREDITS.md +75 -24
  368. package/dist/demo-assets/pdf/cfd-primer.pdf +0 -0
  369. package/dist/demo-assets/video/azores-film.webm +0 -0
  370. package/dist/fonts/LICENSE.txt +32 -28
  371. package/dist/fonts/OFL-1.1.txt +81 -0
  372. package/dist/fonts/PROVENANCE.md +38 -0
  373. package/dist/index.html +15 -8
  374. package/dist/legal/DISCLAIMER.md +4 -1
  375. package/dist/legal/PRIVACY.md +14 -8
  376. package/dist/legal/TERMS.md +11 -1
  377. package/dist/legal/THIRD-PARTY.txt +25248 -621
  378. package/dist/pdfjs/LICENSE_JBIG2 +196 -0
  379. package/dist/pdfjs/LICENSE_OPENJPEG +39 -0
  380. package/dist/pdfjs/LICENSE_PDFJS_JBIG2 +13 -0
  381. package/dist/pdfjs/LICENSE_PDFJS_OPENJPEG +22 -0
  382. package/dist/pdfjs/LICENSE_PDFJS_QCMS +22 -0
  383. package/dist/pdfjs/LICENSE_QCMS +21 -0
  384. package/dist/pdfjs/jbig2.wasm +0 -0
  385. package/dist/pdfjs/openjpeg.wasm +0 -0
  386. package/dist/pdfjs/qcms_bg.wasm +0 -0
  387. package/docker-compose.yml +40 -7
  388. package/docs/media/answer-ink.jpg +0 -0
  389. package/docs/media/canvas-view.jpg +0 -0
  390. package/docs/media/deck-export.jpg +0 -0
  391. package/docs/media/deep-zoom.jpg +0 -0
  392. package/docs/media/doc-export.jpg +0 -0
  393. package/docs/media/doc-prism.jpg +0 -0
  394. package/docs/media/repo-course.jpg +0 -0
  395. package/docs/media/think-map.jpg +0 -0
  396. package/docs/media/trip-plan.jpg +0 -0
  397. package/docs/media/voice-scrub.jpg +0 -0
  398. package/package.json +71 -60
  399. package/voice/start-whisper.sh +28 -0
  400. package/voice/whisper.Dockerfile +44 -0
  401. package/dist/assets/AppCommandPalette-Dzl_DbDd.js +0 -1
  402. package/dist/assets/AtlasView-B8b67dk0.js +0 -1
  403. package/dist/assets/BlockEmpty-B5Q0hgDJ.js +0 -1
  404. package/dist/assets/BriefingPlayer-Dy7JCGm-.js +0 -1
  405. package/dist/assets/CanvasSkeleton-CJwPWnFG.js +0 -2
  406. package/dist/assets/CardEditor-DzJXb0G7.js +0 -1
  407. package/dist/assets/CheckLogRail-DNtXlkcR.js +0 -1
  408. package/dist/assets/CheckLogRail-F4AlgAcc.css +0 -1
  409. package/dist/assets/CommandPalette-mO1FEvlx.js +0 -1
  410. package/dist/assets/CourseLessonReader-CKfvBMtL.js +0 -2
  411. package/dist/assets/CourseRail-CRcB319H.js +0 -1
  412. package/dist/assets/CoursesApp-BbCGxAav.js +0 -2
  413. package/dist/assets/CrossExamPanel-Deywo95y.js +0 -1
  414. package/dist/assets/DashPresent-BEm1tGse.js +0 -1
  415. package/dist/assets/DashboardDetail-tK6FpgtH.js +0 -2
  416. package/dist/assets/DashboardLoopRuntime-Cis4WMqk.js +0 -1
  417. package/dist/assets/DashboardOverview-DrdqBgds.js +0 -1
  418. package/dist/assets/DashboardSettings-CBhzLW0P.js +0 -1
  419. package/dist/assets/DashboardsApp-Dc43FBIi.js +0 -2
  420. package/dist/assets/DelegatePanel-DmtTY_lE.js +0 -33
  421. package/dist/assets/DemoGallery-zw3d7ap9.js +0 -1
  422. package/dist/assets/DropSelect-Bo2Oyi-2.js +0 -1
  423. package/dist/assets/ExportModal-DICXavg9.js +0 -2
  424. package/dist/assets/ExtractionPreview-C636AVw-.js +0 -18
  425. package/dist/assets/FeatureUseNotice-CoK5HkbR.js +0 -1
  426. package/dist/assets/FlagshipCTA-B-7nH43r.js +0 -1
  427. package/dist/assets/FlagshipCommandPalette-DgTL_Kjj.js +0 -1
  428. package/dist/assets/FlagshipShowcase-CbAC2s4X.js +0 -1
  429. package/dist/assets/FlashcardsApp-CatYcaJJ.js +0 -1
  430. package/dist/assets/ForecastPanel-BOG361kr.js +0 -1
  431. package/dist/assets/GalleryApp-uW6b1Y0d.js +0 -1
  432. package/dist/assets/LegalApp-sCZjJYWx.js +0 -1
  433. package/dist/assets/LegalPageShell-BsgRV7aL.js +0 -1
  434. package/dist/assets/LegalPageShell-C_HottbD.css +0 -1
  435. package/dist/assets/LeverPanel-CP32QcIf.js +0 -1
  436. package/dist/assets/Library-CJTnp1pC.js +0 -1
  437. package/dist/assets/LibraryOverlay-geQRGAzG.js +0 -1
  438. package/dist/assets/LiveApp-C0BN0o3_.js +0 -61
  439. package/dist/assets/LiveApp-Dj_6EQuL.css +0 -1
  440. package/dist/assets/LiveSettings-CzSXXMoo.js +0 -6
  441. package/dist/assets/MindMapViewerDrawer-7HLErRQF.js +0 -1
  442. package/dist/assets/MindShape-Bhu4yoIj.js +0 -1
  443. package/dist/assets/MindShape-DjHtMW_5.css +0 -1
  444. package/dist/assets/PinToDashboard-Cj8S9XKC.js +0 -1
  445. package/dist/assets/PlanReview-3NxZD9wt.js +0 -1
  446. package/dist/assets/Presence-DDxb6yE5.js +0 -1
  447. package/dist/assets/PresentationDeck-B6AHRYEA.js +0 -1
  448. package/dist/assets/PrismApp-BlPpWxao.js +0 -2
  449. package/dist/assets/PrismAskController-DUvOTeW9.js +0 -37
  450. package/dist/assets/PrismBriefingPlayer-Bmo9tOGX.js +0 -2
  451. package/dist/assets/PrismOverlay-9Q_14eEO.js +0 -131
  452. package/dist/assets/Quiz-CUwtekfu.js +0 -1
  453. package/dist/assets/Recap-DkKrrqi5.js +0 -1
  454. package/dist/assets/ReelJelly-DCD4bG10.js +0 -1
  455. package/dist/assets/ReplayCard-Bz69tOST.js +0 -2
  456. package/dist/assets/ReplayOverlay-DbJX08Kr.js +0 -1
  457. package/dist/assets/RewindOverlay-Bop4a63b.js +0 -1
  458. package/dist/assets/RippleApp-u3hCfb5b.js +0 -2
  459. package/dist/assets/RippleAskController-CK4iSwT0.js +0 -34
  460. package/dist/assets/RippleOverlay-BM_B9JEc.js +0 -6
  461. package/dist/assets/SeeDontRead-CGGKmvBV.js +0 -1
  462. package/dist/assets/ShareModal-D4En6Y3L.js +0 -32
  463. package/dist/assets/ShipCascade-k_GWrcau.js +0 -1
  464. package/dist/assets/ShipCourse-BQOY4MyI.js +0 -1
  465. package/dist/assets/ShipHotspots-vLRK0w_b.js +0 -1
  466. package/dist/assets/ShipMigration-OgAGEbjm.js +0 -1
  467. package/dist/assets/ShipOnboarding-B_2IEq3N.js +0 -1
  468. package/dist/assets/ShipRead--gGqg2SE.js +0 -1
  469. package/dist/assets/ShipRollout-B_U2P8Yw.js +0 -1
  470. package/dist/assets/ShipSuggestions-D9coTmgw.js +0 -1
  471. package/dist/assets/ShipWorkspace-BmdcHZXa.js +0 -2
  472. package/dist/assets/SignatureLoop-KA6Cf93g.js +0 -1
  473. package/dist/assets/SrsReview-BoaYb6XN.js +0 -1
  474. package/dist/assets/SrsReview-DmGdGxT0.css +0 -1
  475. package/dist/assets/SynthesisApp-BCBhCJhx.js +0 -2
  476. package/dist/assets/SynthesisOverlay-BuGIeaKq.js +0 -66
  477. package/dist/assets/TopicCanvas-BRu3xVL8.js +0 -2
  478. package/dist/assets/TourPrism-zbVLe2ag.js +0 -1
  479. package/dist/assets/TrackerTile-D9Wa3CSq.js +0 -2
  480. package/dist/assets/TwoSurfaces-TyWXgAdq.js +0 -1
  481. package/dist/assets/UnderstoodPanel-BS9OhgLJ.js +0 -1
  482. package/dist/assets/WhyMachineOverlay-B-KJhCjr.js +0 -1
  483. package/dist/assets/WowFeatures-Bv1-PmXF.js +0 -1
  484. package/dist/assets/ZoomDeck-C2Q6xbgX.js +0 -1
  485. package/dist/assets/__vite-browser-external-BufR4LQa.js +0 -1
  486. package/dist/assets/alternateFinishes-BG6svkXG.js +0 -494
  487. package/dist/assets/annotationAuto-BpBsjbDQ.js +0 -1
  488. package/dist/assets/annotationReel-yzysA-Gr.js +0 -1
  489. package/dist/assets/annotations-D2K9A5GB.js +0 -1
  490. package/dist/assets/backup-BdeBr3wq.js +0 -1
  491. package/dist/assets/blockLabel-DAqaHKy3.js +0 -1
  492. package/dist/assets/cache-BumECILO.js +0 -1
  493. package/dist/assets/canvas-Ep2Kfupo.js +0 -1
  494. package/dist/assets/catalog-DF7YTNju.js +0 -1
  495. package/dist/assets/chapters-Cbe53c3W.js +0 -1
  496. package/dist/assets/charts2-tyUiQPff.js +0 -1
  497. package/dist/assets/chunk-BVpWp9h4.js +0 -1
  498. package/dist/assets/cpp-BGdv8dzs.js +0 -1
  499. package/dist/assets/cpp-CNAAXZl-.js +0 -1
  500. package/dist/assets/dashboardEvents-C_XvGVLJ.js +0 -2
  501. package/dist/assets/dashboards-rcWxdoXI.css +0 -1
  502. package/dist/assets/dist-xRGLOZwv.js +0 -14
  503. package/dist/assets/facts-BBTt3ImG.js +0 -1
  504. package/dist/assets/fit-B1LJWvMO.js +0 -1
  505. package/dist/assets/fitText-CDFmCQzl.js +0 -1
  506. package/dist/assets/format-DlZTyeMy.js +0 -1
  507. package/dist/assets/generateBeats-b64CL54v.js +0 -1
  508. package/dist/assets/generateLive-ChhSWKbq.js +0 -52
  509. package/dist/assets/githubBrowser-DywfDeYx.js +0 -1
  510. package/dist/assets/githubToken-DtcLYqwm.js +0 -11
  511. package/dist/assets/homeTarget-BcZYH3DY.js +0 -1
  512. package/dist/assets/http-CJCtjYpA.js +0 -2
  513. package/dist/assets/index-C7H7A1rW.js +0 -22
  514. package/dist/assets/index-CepQEz75.css +0 -1
  515. package/dist/assets/index.es-CRLiWwiA.js +0 -5
  516. package/dist/assets/jspdf.es.min-DutJi91O.js +0 -79
  517. package/dist/assets/jsx-runtime-DaSxXjOY.js +0 -1
  518. package/dist/assets/katex-BMCG0xok.js +0 -257
  519. package/dist/assets/keyVault-DEsNh9FR.js +0 -1
  520. package/dist/assets/kokoro-kGWf7M0e.js +0 -1
  521. package/dist/assets/layout-BFQOzXtG.js +0 -1
  522. package/dist/assets/leaflet-src-C_xhOQY7.js +0 -1
  523. package/dist/assets/learn-DVfqN-nf.js +0 -1
  524. package/dist/assets/lib-C7zXL8h0.js +0 -1
  525. package/dist/assets/liveSchema-DCL21WdS.js +0 -99
  526. package/dist/assets/motion-dfA87zbb.js +0 -1
  527. package/dist/assets/notes-DblI4Ko_.js +0 -1
  528. package/dist/assets/officeDoc-B6nEhNp4.js +0 -3
  529. package/dist/assets/openchemlib-nMLMmg26.js +0 -23
  530. package/dist/assets/pdf-DFYCstCC.js +0 -11
  531. package/dist/assets/pdf.worker.min-yatZIOMy.mjs +0 -21
  532. package/dist/assets/pin-Bya3BL_a.css +0 -1
  533. package/dist/assets/pin-D5_Ebl_s.js +0 -1
  534. package/dist/assets/planTracker-7AMCQPNx.js +0 -1
  535. package/dist/assets/portal-BndazODr.js +0 -1
  536. package/dist/assets/predictions-CYS7Vo39.js +0 -1
  537. package/dist/assets/prism.generated-BhbHDHR6.js +0 -41
  538. package/dist/assets/prismGround.worker-CIvKqxm2.js +0 -1
  539. package/dist/assets/prismLayout.worker-CZO2CY7B.js +0 -1
  540. package/dist/assets/providers-wzm7E8Pa.js +0 -1
  541. package/dist/assets/purify.es-adlwq8Pz.js +0 -3
  542. package/dist/assets/quietHours-DVPplPtM.js +0 -1
  543. package/dist/assets/react-BQSORdFI.js +0 -1
  544. package/dist/assets/registry-0E1uKPCI.js +0 -49
  545. package/dist/assets/registry-5a-E7vEN.css +0 -1
  546. package/dist/assets/registry-B3V5-8v0.js +0 -1
  547. package/dist/assets/registry-B51MhOLx.js +0 -2
  548. package/dist/assets/registry-BH6FfyZk.js +0 -1
  549. package/dist/assets/registry-BVHiKEwE.css +0 -1
  550. package/dist/assets/registry-Ba9xMFO4.js +0 -4
  551. package/dist/assets/registry-BcZXBr3y.css +0 -1
  552. package/dist/assets/registry-BlB0FYf0.js +0 -1
  553. package/dist/assets/registry-C30HGS2G.js +0 -1
  554. package/dist/assets/registry-CIa1EU-G.js +0 -1
  555. package/dist/assets/registry-COxprhRN.js +0 -1
  556. package/dist/assets/registry-CWkBxxsI.js +0 -5
  557. package/dist/assets/registry-D-qEhm1d.js +0 -1
  558. package/dist/assets/registry-D7rspCZr.js +0 -1
  559. package/dist/assets/registry-DNzF-nvu.js +0 -1
  560. package/dist/assets/registry-DQIm_hbI.js +0 -2
  561. package/dist/assets/registry-DVzLacl_.css +0 -1
  562. package/dist/assets/registry-Dkc7hN5T.js +0 -1
  563. package/dist/assets/registry-DmQlNN3y.js +0 -1
  564. package/dist/assets/registry-Dphh5ADP.js +0 -1
  565. package/dist/assets/registry-DrNMbrA_.js +0 -1
  566. package/dist/assets/registry-Dvv84L9K.js +0 -1
  567. package/dist/assets/registry-M3VgAiQv.js +0 -1
  568. package/dist/assets/registry-Pr5IKqro.js +0 -1
  569. package/dist/assets/registry-WJE8Z0T1.js +0 -2
  570. package/dist/assets/registry-aIH-Im5Y.css +0 -1
  571. package/dist/assets/registry-hsSlT6pi.js +0 -1
  572. package/dist/assets/registry-nG70-amx.js +0 -1
  573. package/dist/assets/registry-types-DMuK0vJ6.js +0 -1
  574. package/dist/assets/registry-wJhGGVuP.js +0 -1
  575. package/dist/assets/run-BYP2YlZT.js +0 -23
  576. package/dist/assets/run-DSVvshaB.js +0 -21
  577. package/dist/assets/safeImageUrl-CUkucDUu.js +0 -1
  578. package/dist/assets/screen-DLR7p_yP.js +0 -1
  579. package/dist/assets/search-Be63DJkp.js +0 -1
  580. package/dist/assets/shapes-Cw7tCHIp.js +0 -1
  581. package/dist/assets/shard005-DLVkh9IH.js +0 -1
  582. package/dist/assets/shard006-B6efKHov.js +0 -1
  583. package/dist/assets/shard007-AFdZLe38.js +0 -1
  584. package/dist/assets/shard008-LbSBzwRx.js +0 -1
  585. package/dist/assets/shard009-D_6-SUDb.js +0 -1
  586. package/dist/assets/shard010-DbOj-uZW.js +0 -1
  587. package/dist/assets/shard011-BYSz7EEW.js +0 -1
  588. package/dist/assets/shard012-B5Ypj7OV.js +0 -1
  589. package/dist/assets/shard013-BtsliNIe.js +0 -1
  590. package/dist/assets/shard014-15sjmk68.js +0 -1
  591. package/dist/assets/shard015-nnXrqru_.js +0 -1
  592. package/dist/assets/shard016-BayXFE13.js +0 -1
  593. package/dist/assets/shard017-Cy4cGexs.js +0 -1
  594. package/dist/assets/shard018-aO-BYJ8H.js +0 -1
  595. package/dist/assets/shard019-gxaTeA3I.js +0 -1
  596. package/dist/assets/shard020-BibJdMI0.js +0 -1
  597. package/dist/assets/shard022-IXiyG-JK.js +0 -1
  598. package/dist/assets/shard023-314F6NJS.js +0 -1
  599. package/dist/assets/shard024-cN5rpQ_X.js +0 -1
  600. package/dist/assets/shard025-KKTaXOGE.js +0 -1
  601. package/dist/assets/shard026-C2Dkd1t6.js +0 -1
  602. package/dist/assets/shard027-Xy-8x9As.js +0 -1
  603. package/dist/assets/shard028-Bul-klUj.js +0 -1
  604. package/dist/assets/shard029-BbRSUcUZ.js +0 -1
  605. package/dist/assets/shard030-GYllsFVC.js +0 -1
  606. package/dist/assets/shard031-DMigeiyn.js +0 -1
  607. package/dist/assets/shard032-CcvmzK0l.js +0 -1
  608. package/dist/assets/shard033-11AU702M.js +0 -1
  609. package/dist/assets/shard034-Bx3urxjM.js +0 -1
  610. package/dist/assets/shard035-DBdEeyCt.js +0 -1
  611. package/dist/assets/shard036-vYgoRBqS.js +0 -1
  612. package/dist/assets/shard037-DP4MMw91.js +0 -1
  613. package/dist/assets/shard038-ffxsv7d6.js +0 -1
  614. package/dist/assets/shard039-C1JHHNp9.js +0 -1
  615. package/dist/assets/shard040-JbVvCSO_.js +0 -1
  616. package/dist/assets/shard041-5L_eFwGx.js +0 -1
  617. package/dist/assets/shard042-C9nsGL79.js +0 -1
  618. package/dist/assets/shard043-Dx_9HSKI.js +0 -1
  619. package/dist/assets/shard044-B3QQNC4A.js +0 -1
  620. package/dist/assets/shard045-B7z0WHO6.js +0 -1
  621. package/dist/assets/shard046-D1yDablJ.js +0 -1
  622. package/dist/assets/shard047-DJi3AgeT.js +0 -1
  623. package/dist/assets/shard048-D_2ipfUr.js +0 -1
  624. package/dist/assets/shard049-1aGgWZdd.js +0 -1
  625. package/dist/assets/shard050-Bjwa0Og4.js +0 -1
  626. package/dist/assets/shard051-Cx_GAk3v.js +0 -1
  627. package/dist/assets/shard052-LaeOD3V5.js +0 -1
  628. package/dist/assets/shard053-D-da7Foj.js +0 -1
  629. package/dist/assets/shard054-CM8eSRQk.js +0 -1
  630. package/dist/assets/shard055-QRpDl4Vs.js +0 -1
  631. package/dist/assets/shard056-DkY7CQm3.js +0 -1
  632. package/dist/assets/shard057-BVCgf7o0.js +0 -1
  633. package/dist/assets/shard058-93aGtdrX.js +0 -1
  634. package/dist/assets/shard059-rJE9X1_I.js +0 -1
  635. package/dist/assets/shard060-Lu_hfl1r.js +0 -1
  636. package/dist/assets/shard062-BBIpEYZO.js +0 -1
  637. package/dist/assets/shard063-C_uen3Ub.js +0 -1
  638. package/dist/assets/shard064-DAHUsHST.js +0 -1
  639. package/dist/assets/share-QHGHNDhQ.js +0 -1
  640. package/dist/assets/shikiHighlight-B_TEagaE.js +0 -153
  641. package/dist/assets/speed-DwPw9KSv.js +0 -1
  642. package/dist/assets/spokenText-D4zPX9JY.js +0 -1
  643. package/dist/assets/src-B-t8Mww-.js +0 -2
  644. package/dist/assets/store-DXmC_fP2.js +0 -0
  645. package/dist/assets/store-Dn23_Ymr.js +0 -1
  646. package/dist/assets/store-DoJn3lBF.js +0 -1
  647. package/dist/assets/store-DrBDvqXF.js +0 -1
  648. package/dist/assets/swift-DonLKvLd.js +0 -1
  649. package/dist/assets/threads-CkMgrSDP.js +0 -1
  650. package/dist/assets/useDashboardLoop-DzbRz-V9.js +0 -5
  651. package/dist/assets/useLiveConfig-Lm0cYTcu.js +0 -1
  652. package/dist/assets/useSpatialCanvas-D_C8VoCy.js +0 -1
  653. package/dist/assets/useSpotlightWalk-CCQT0-_g.js +0 -1
  654. package/dist/assets/useSrsCards-BKCPBPYw.js +0 -1
  655. package/dist/assets/useStudy-Diy4ITBm.js +0 -1
  656. package/dist/assets/useZoomGesture-B82XnSfi.js +0 -1
  657. package/dist/assets/verbatim-CBMzUDlf.js +0 -1
  658. package/dist/assets/worker-BbLKfGzm.js +0 -2
  659. package/dist/demo-assets/video/azores-film.mp4 +0 -0
  660. /package/dist/assets/{shard065-C2edvdvh.js → shard066-C2edvdvh.js} +0 -0
  661. /package/dist/assets/{shard066-DFcuVhZm.js → shard067-DFcuVhZm.js} +0 -0
  662. /package/dist/assets/{shard067-BN8DM8JZ.js → shard068-BN8DM8JZ.js} +0 -0
  663. /package/dist/assets/{shard068-i464K77p.js → shard069-i464K77p.js} +0 -0
  664. /package/dist/assets/{shard069-Dm9m2a5U.js → shard070-Dm9m2a5U.js} +0 -0
  665. /package/dist/assets/{shard070-BPVvR8GH.js → shard071-BPVvR8GH.js} +0 -0
  666. /package/dist/assets/{shard071-Bal_0d9L.js → shard072-Bal_0d9L.js} +0 -0
  667. /package/dist/assets/{shard072-CBQu62kt.js → shard073-CBQu62kt.js} +0 -0
  668. /package/dist/assets/{shard073-D5BRae0w.js → shard074-D5BRae0w.js} +0 -0
  669. /package/dist/assets/{shard074-DtFvcBnZ.js → shard075-DtFvcBnZ.js} +0 -0
  670. /package/dist/assets/{queue-DHeyJ32F.css → templates-DHeyJ32F.css} +0 -0
@@ -1 +0,0 @@
1
- import{t as e}from"./react-BQSORdFI.js";import{t}from"./jsx-runtime-DaSxXjOY.js";import{t as n}from"./TopicCanvas-BRu3xVL8.js";import"./canvas-Ep2Kfupo.js";import{t as r}from"./generateBeats-b64CL54v.js";var i=e();function a(e){let t=[];for(let n of e.tour){let r=e.spec.blocks[n.index]?.id;r&&t.push(n.say?{spot:r,say:n.say}:{spot:r})}return t}function o(e){let t=a(e),n=r(e.spec.blocks,{opener:e.narration,...t.length?{tour:t}:{}});return{spec:e.spec,say:e.spoken??e.narration,beats:n}}function s(e,t=0){let n=Math.max(0,Math.min(t,e.length));return e.slice(n).map(o)}var c=t(),l=700;function u({frames:e,initialIndex:t,speak:r,cancelSpeak:a,onClose:o}){let[u,d]=(0,i.useState)(()=>Math.min(Math.max(0,t),e.length-1)),[f,p]=(0,i.useState)(null),[m,h]=(0,i.useState)(!1),[g,_]=(0,i.useState)(()=>e[t]?.spec??null),v=(0,i.useRef)(null),y=(0,i.useRef)(null),b=e[u]??null,x=(0,i.useCallback)(()=>{y.current?.(),y.current=null,a?.(),h(!1),p(null)},[a]),S=(0,i.useCallback)((e,t)=>{if(x(),!e.length)return;let n=!1,i;y.current=()=>{n=!0,i&&clearTimeout(i)},h(!0);let o=0,s=()=>{if(n)return;if(o>=e.length){h(!1),p(null);return}let c=e[o];d(t+o),_(c.spec),a?.(),c.say&&r?.(c.say);let u=0,f=()=>{if(n)return;if(u>=c.beats.length){o+=1,i=setTimeout(s,l);return}let e=c.beats[u++];e.set&&`spot`in e.set&&p(e.set.spot??null),i=setTimeout(f,e.ms??0)};f()};s()},[x,r,a]),C=(0,i.useCallback)(()=>{b&&S(s([b],0),u)},[b,u,S]),w=(0,i.useCallback)(()=>{S(s(e,u),u)},[e,u,S]),T=(0,i.useCallback)(()=>{d(0),S(s(e,0),0)},[e,S]),E=(0,i.useCallback)(t=>{x(),d(t),_(e[t]?.spec??null)},[e,x]);return(0,i.useEffect)(()=>{if(!f)return;let e=window.setTimeout(()=>{let e=v.current;if(!e)return;let t=e.querySelector(`.spotlit`);if(!t)return;let n=e.getBoundingClientRect(),r=t.getBoundingClientRect(),i=r.top-n.top-(e.clientHeight-r.height)/2;e.scrollTo({top:Math.max(0,e.scrollTop+i),behavior:`smooth`})},90);return()=>window.clearTimeout(e)},[f]),(0,i.useEffect)(()=>()=>x(),[x]),!b||!g?null:(0,c.jsxs)(`div`,{onClick:()=>{x(),o()},role:`button`,tabIndex:0,"aria-label":`Close replay overlay`,onKeyDown:e=>{(e.key===`Enter`||e.key===` `)&&(e.key===` `&&e.preventDefault(),x(),o())},style:{position:`fixed`,inset:0,background:`rgba(0,0,0,0.6)`,zIndex:60,display:`flex`,padding:20,gap:16},children:[(0,c.jsxs)(`div`,{onClick:e=>e.stopPropagation(),role:`button`,tabIndex:0,onKeyDown:e=>{(e.key===`Enter`||e.key===` `)&&(e.key===` `&&e.preventDefault(),e.stopPropagation())},style:{flex:`0 0 240px`,display:`flex`,flexDirection:`column`,gap:8,overflow:`auto`,background:`var(--surface-elevated)`,border:`1px solid var(--line)`,borderRadius:12,padding:12},children:[(0,c.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,justifyContent:`space-between`},children:[(0,c.jsx)(`span`,{style:{fontSize:13,fontWeight:600},children:`Conversation`}),(0,c.jsx)(`button`,{className:`entry-action`,style:{fontSize:12},onClick:()=>{x(),o()},children:`← Live`})]}),e.map((e,t)=>{let n=t===u;return(0,c.jsxs)(`button`,{onClick:()=>E(t),title:e.question,style:{textAlign:`left`,padding:`8px 10px`,borderRadius:8,border:`1px solid `+(n?`var(--presence)`:`var(--line)`),background:n?`var(--surface-elevated)`:`transparent`,cursor:`pointer`,color:`inherit`,font:`inherit`,display:`flex`,flexDirection:`column`,gap:2},children:[(0,c.jsxs)(`span`,{style:{fontSize:12.5,fontWeight:n?600:400,overflow:`hidden`,textOverflow:`ellipsis`,whiteSpace:`nowrap`},children:[t+1,`. `,e.question||e.spec.title]}),(0,c.jsxs)(`span`,{style:{fontSize:11,color:`var(--text-muted)`},children:[e.spec.blocks.length,` cards`,e.mode===`replace`?``:` · ${e.mode}`]})]},t)})]}),(0,c.jsxs)(`div`,{onClick:e=>e.stopPropagation(),role:`button`,tabIndex:0,onKeyDown:e=>{(e.key===`Enter`||e.key===` `)&&(e.key===` `&&e.preventDefault(),e.stopPropagation())},style:{flex:1,display:`flex`,flexDirection:`column`,gap:10,minWidth:0},children:[(0,c.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8,flexWrap:`wrap`},children:[(0,c.jsx)(`span`,{className:`faint`,style:{fontSize:12.5,marginRight:`auto`},children:b.spec.title}),m?(0,c.jsx)(`button`,{className:`entry-action`,style:{fontSize:13},onClick:x,children:`◼ Stop`}):(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(`button`,{className:`entry-action`,style:{fontSize:13},onClick:C,children:`▶ Replay this`}),(0,c.jsx)(`button`,{className:`entry-action`,style:{fontSize:13},onClick:w,children:`▶ From here`}),(0,c.jsx)(`button`,{className:`entry-action`,style:{fontSize:13},onClick:T,children:`▶ From start`})]})]}),(0,c.jsx)(`div`,{ref:v,className:`canvas-scroll`,style:{flex:1,overflow:`auto`,background:`var(--surface-elevated)`,border:`1px solid var(--line)`,borderRadius:12,padding:16},children:(0,c.jsx)(`div`,{className:`topic-wrap`,children:(0,c.jsx)(n,{data:g,spot:f,built:{},onProve:()=>{}})})})]})]})}export{u as ReplayOverlay};
@@ -1 +0,0 @@
1
- import{t as e}from"./react-BQSORdFI.js";import{t}from"./jsx-runtime-DaSxXjOY.js";import{ht as n}from"./index-C7H7A1rW.js";import{t as r}from"./useFocusTrap-DbfG6zbM.js";import{t as i}from"./motion-dfA87zbb.js";import{o as a}from"./useStudy-Diy4ITBm.js";import{C as o}from"./dashboardEvents-C_XvGVLJ.js";import{n as s,o as c,r as l}from"./CheckLogRail-DNtXlkcR.js";import{r as u}from"./predictions-CYS7Vo39.js";var d=e(),f=n(),p=10080*60*1e3,m=20;function h(e,t){return e.reduce((e,n)=>{let r=u(n.predictionHistory,t);return{hits:e.hits+r.hits,total:e.total+r.total}},{hits:0,total:0})}function g(e,t,n=m){let r=t-p,i=[];for(let t of e)for(let e of t.predictionHistory??[])e.at>=r&&i.push({grade:e,dashboardTitle:t.title});return i.sort((e,t)=>e.grade.at-t.grade.at),i.length>n?i.slice(i.length-n):i}function _(e,t){let n=t-p,r=null,i=-1;for(let t of e)for(let e of t.predictionHistory??[]){if(e.at<n||e.result!==`hit`)continue;let a=e.expected.length+(e.note?.length??0);a>i&&(i=a,r={expected:e.expected,note:e.note,dashboardTitle:t.title})}return r}function v(e,t){let n=[];return e.totalSearches>0&&n.push(`searches`),e.topMoment&&n.push(`moment`),t.total>0&&n.push(`calls`),e.estSavedPerMonth>0&&n.push(`saved`),n}function y(e){return e.length>0?e:[`fallback`]}var b=t(),x=[`S`,`M`,`T`,`W`,`T`,`F`,`S`];function S(e){return x[new Date(`${e}T00:00:00Z`).getUTCDay()]}function C(e){return new Date(e).toLocaleDateString([],{weekday:`long`,month:`long`,day:`numeric`})}function w(e){return{"--d":`${e}ms`}}function T(e){let t=(0,f.c)(22),{rewind:n}=e,r;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(r={duration:1400},t[0]=r):r=t[0];let a=i(n.totalSearches,r),o;t[1]===n.byDay?o=t[2]:(o=Math.max(1,...n.byDay.map(E)),t[1]=n.byDay,t[2]=o);let s=o,c;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(c=(0,b.jsx)(`p`,{className:`rw-eyebrow rw-child`,style:w(20),children:`This week`}),t[3]=c):c=t[3];let l;t[4]===Symbol.for(`react.memo_cache_sentinel`)?(l=w(90),t[4]=l):l=t[4];let u;t[5]===a?u=t[6]:(u=(0,b.jsx)(`p`,{className:`rw-figure rw-child`,style:l,children:a}),t[5]=a,t[6]=u);let d;t[7]===Symbol.for(`react.memo_cache_sentinel`)?(d=w(170),t[7]=d):d=t[7];let p=n.totalSearches===1?``:`es`,m;t[8]===p?m=t[9]:(m=(0,b.jsxs)(`p`,{className:`rw-figure-label rw-child`,style:d,children:[`search`,p,`, all week`]}),t[8]=p,t[9]=m);let h;t[10]===Symbol.for(`react.memo_cache_sentinel`)?(h=w(260),t[10]=h):h=t[10];let g;if(t[11]!==s||t[12]!==n.byDay){let e;t[14]===s?e=t[15]:(e=e=>(0,b.jsxs)(`div`,{className:`rw-bar`,title:`${e.searches} search${e.searches===1?``:`es`}`,children:[(0,b.jsx)(`div`,{className:`rw-bar-track`,children:(0,b.jsx)(`div`,{className:`rw-bar-fill`,style:{height:`${e.searches/s*100}%`}})}),(0,b.jsx)(`span`,{className:`rw-bar-day`,children:S(e.date)})]},e.date),t[14]=s,t[15]=e),g=n.byDay.map(e),t[11]=s,t[12]=n.byDay,t[13]=g}else g=t[13];let _;t[16]===g?_=t[17]:(_=(0,b.jsx)(`div`,{className:`rw-bars rw-child`,style:h,children:g}),t[16]=g,t[17]=_);let v;return t[18]!==_||t[19]!==u||t[20]!==m?(v=(0,b.jsxs)(b.Fragment,{children:[c,u,m,_]}),t[18]=_,t[19]=u,t[20]=m,t[21]=v):v=t[21],v}function E(e){return e.searches}function ee(e){let t=(0,f.c)(22),{rewind:n}=e,r=n.topMoment;if(!r)return null;let i;t[0]===r?i=t[1]:(i=s(r),t[0]=r,t[1]=i);let a=i,o=a?.tone??`plain`,c;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(c=(0,b.jsx)(`p`,{className:`rw-eyebrow rw-child`,style:w(20),children:`The moment that mattered`}),t[2]=c):c=t[2];let u;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(u=w(110),t[3]=u):u=t[3];let d;t[4]===r.text?d=t[5]:(d=(0,b.jsx)(`p`,{className:`rw-moment-text`,children:r.text}),t[4]=r.text,t[5]=d);let p;t[6]===a?p=t[7]:(p=a&&(0,b.jsx)(`span`,{className:`rw-moment-chip`,children:a.label}),t[6]=a,t[7]=p);let m;t[8]===r.at?m=t[9]:(m=C(r.at),t[8]=r.at,t[9]=m);let h;t[10]===r.at?h=t[11]:(h=l(r.at),t[10]=r.at,t[11]=h);let g;t[12]!==m||t[13]!==h?(g=(0,b.jsxs)(`span`,{className:`rw-moment-time`,children:[m,` · `,h]}),t[12]=m,t[13]=h,t[14]=g):g=t[14];let _;t[15]!==p||t[16]!==g?(_=(0,b.jsxs)(`div`,{className:`rw-moment-meta`,children:[p,g]}),t[15]=p,t[16]=g,t[17]=_):_=t[17];let v;return t[18]!==d||t[19]!==_||t[20]!==o?(v=(0,b.jsxs)(b.Fragment,{children:[c,(0,b.jsxs)(`div`,{className:`rw-moment rw-child`,"data-tone":o,style:u,children:[d,_]})]}),t[18]=d,t[19]=_,t[20]=o,t[21]=v):v=t[21],v}var D={hit:`✓`,miss:`✗`,unclear:`—`};function O(e){let t=(0,f.c)(19),{tally:n,grades:r,quote:a}=e,o;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(o={duration:1200},t[0]=o):o=t[0];let s=i(n.hits,o),c;t[1]===Symbol.for(`react.memo_cache_sentinel`)?(c={duration:1200},t[1]=c):c=t[1];let l=i(n.total,c),u;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(u=(0,b.jsx)(`p`,{className:`rw-eyebrow rw-child`,style:w(20),children:`Call record`}),t[2]=u):u=t[2];let d;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(d=w(90),t[3]=d):d=t[3];let p;t[4]!==s||t[5]!==l?(p=(0,b.jsxs)(`p`,{className:`rw-figure rw-child`,style:d,children:[s,`/`,l]}),t[4]=s,t[5]=l,t[6]=p):p=t[6];let m;t[7]===Symbol.for(`react.memo_cache_sentinel`)?(m=(0,b.jsx)(`p`,{className:`rw-figure-label rw-child`,style:w(170),children:`calls graded this week`}),t[7]=m):m=t[7];let h;t[8]===Symbol.for(`react.memo_cache_sentinel`)?(h=w(250),t[8]=h):h=t[8];let g;t[9]===r?g=t[10]:(g=r.map(k),t[9]=r,t[10]=g);let _;t[11]===g?_=t[12]:(_=(0,b.jsx)(`div`,{className:`rw-chips rw-child`,style:h,role:`list`,children:g}),t[11]=g,t[12]=_);let v;t[13]===a?v=t[14]:(v=a&&(0,b.jsxs)(`p`,{className:`rw-quote rw-child`,style:w(330),children:[`“`,a.expected,a.note?` — ${a.note}`:``,`”`,(0,b.jsx)(`span`,{className:`rw-quote-attr`,children:a.dashboardTitle})]}),t[13]=a,t[14]=v);let y;return t[15]!==v||t[16]!==p||t[17]!==_?(y=(0,b.jsxs)(b.Fragment,{children:[u,p,m,_,v]}),t[15]=v,t[16]=p,t[17]=_,t[18]=y):y=t[18],y}function k(e,t){let{grade:n}=e;return(0,b.jsx)(`span`,{className:`rw-chip rw-chip--${n.result}`,role:`listitem`,title:n.expected,children:D[n.result]},`${n.at}-${t}`)}function te(e){let t=(0,f.c)(12),{rewind:n}=e,r;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(r={duration:1400},t[0]=r):r=t[0];let a=i(n.estSavedPerMonth,r),o;t[1]===Symbol.for(`react.memo_cache_sentinel`)?(o=(0,b.jsx)(`p`,{className:`rw-eyebrow rw-child`,style:w(20),children:`If you keep this up`}),t[1]=o):o=t[1];let s;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(s=w(90),t[2]=s):s=t[2];let c;t[3]===a?c=t[4]:(c=(0,b.jsx)(`p`,{className:`rw-figure rw-child`,style:s,children:a}),t[3]=a,t[4]=c);let l;t[5]===Symbol.for(`react.memo_cache_sentinel`)?(l=(0,b.jsx)(`p`,{className:`rw-figure-label rw-child`,style:w(170),children:`searches saved / month`}),t[5]=l):l=t[5];let u;t[6]===Symbol.for(`react.memo_cache_sentinel`)?(u=w(250),t[6]=u):u=t[6];let d;t[7]===n.estSavedPerMonth?d=t[8]:(d=(0,b.jsxs)(`p`,{className:`rw-caption rw-child`,style:u,children:[`Applying Mavéa's suggestions this week is projected to save about `,n.estSavedPerMonth,` `,`searches a month — a rate estimate from real cadence changes, not a count of searches actually skipped this week.`]}),t[7]=n.estSavedPerMonth,t[8]=d);let p;return t[9]!==c||t[10]!==d?(p=(0,b.jsxs)(b.Fragment,{children:[o,c,l,d]}),t[9]=c,t[10]=d,t[11]=p):p=t[11],p}function ne(){let e=(0,f.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,b.jsx)(`p`,{className:`rw-fallback-text rw-child`,style:w(40),children:`Nothing to look back on yet — come back after a week of checks.`}),e[0]=t):t=e[0],t}function A(e){let t=(0,f.c)(70),{onClose:n}=e,i=(0,d.useRef)(null),s;t[0]===n?s=t[1]:(s={onEscape:n},t[0]=n,t[1]=s),r(i,s);let[l]=(0,d.useState)(ie),u=c(),p=a(),m;t[2]!==u||t[3]!==l?(m=o(u,l),t[2]=u,t[3]=l,t[4]=m):m=t[4];let x=m,S;t[5]!==p||t[6]!==l?(S=h(p,l),t[5]=p,t[6]=l,t[7]=S):S=t[7];let C=S,w;t[8]!==p||t[9]!==l?(w=g(p,l),t[8]=p,t[9]=l,t[10]=w):w=t[10];let E=w,D;t[11]!==p||t[12]!==l?(D=_(p,l),t[11]=p,t[12]=l,t[13]=D):D=t[13];let k=D,A;t[14]!==x||t[15]!==C?(A=v(x,C),t[14]=x,t[15]=C,t[16]=A):A=t[16];let j=A,M;t[17]===j?M=t[18]:(M=y(j),t[17]=j,t[18]=M);let N=M,[P,F]=(0,d.useState)(0),I,L;t[19]===N.length?(I=t[20],L=t[21]):(I=()=>{F(e=>Math.min(e,N.length-1))},L=[N.length],t[19]=N.length,t[20]=I,t[21]=L),(0,d.useEffect)(I,L);let R;t[22]===Symbol.for(`react.memo_cache_sentinel`)?(R=()=>F(re),t[22]=R):R=t[22];let z=R,B;t[23]===N.length?B=t[24]:(B=()=>F(e=>Math.min(N.length-1,e+1)),t[23]=N.length,t[24]=B);let V=B,H;t[25]===V?H=t[26]:(H=e=>{e.key===`ArrowRight`||e.key===` `?(e.preventDefault(),V()):e.key===`ArrowLeft`&&(e.preventDefault(),z())},t[25]=V,t[26]=H);let U=H,W=N.length>1,G;t[27]!==W||t[28]!==P||t[29]!==N.length?(G=W&&(0,b.jsxs)(`span`,{className:`rw-counter`,"aria-live":`polite`,children:[P+1,` of `,N.length]}),t[27]=W,t[28]=P,t[29]=N.length,t[30]=G):G=t[30];let K;t[31]===n?K=t[32]:(K=(0,b.jsx)(`button`,{type:`button`,className:`rw-close`,onClick:n,"aria-label":`Close`,children:`×`}),t[31]=n,t[32]=K);let q;t[33]!==G||t[34]!==K?(q=(0,b.jsxs)(`div`,{className:`rw-chrome`,children:[G,K]}),t[33]=G,t[34]=K,t[35]=q):q=t[35];let J;t[36]!==W||t[37]!==P?(J=W&&(0,b.jsx)(`button`,{type:`button`,className:`rw-zone rw-zone--prev`,"aria-label":`Previous slide`,onClick:z,disabled:P===0}),t[36]=W,t[37]=P,t[38]=J):J=t[38];let Y;if(t[39]!==E||t[40]!==P||t[41]!==k||t[42]!==x||t[43]!==N||t[44]!==C){let e;t[46]!==E||t[47]!==P||t[48]!==k||t[49]!==x||t[50]!==C?(e=(e,t)=>(0,b.jsxs)(`div`,{className:`rw-slide`,"data-active":t===P||void 0,children:[e===`searches`&&(0,b.jsx)(T,{rewind:x}),e===`moment`&&(0,b.jsx)(ee,{rewind:x}),e===`calls`&&(0,b.jsx)(O,{tally:C,grades:E,quote:k}),e===`saved`&&(0,b.jsx)(te,{rewind:x}),e===`fallback`&&(0,b.jsx)(ne,{})]},e),t[46]=E,t[47]=P,t[48]=k,t[49]=x,t[50]=C,t[51]=e):e=t[51],Y=N.map(e),t[39]=E,t[40]=P,t[41]=k,t[42]=x,t[43]=N,t[44]=C,t[45]=Y}else Y=t[45];let X;t[52]!==W||t[53]!==V||t[54]!==P||t[55]!==N.length?(X=W&&(0,b.jsx)(`button`,{type:`button`,className:`rw-zone rw-zone--next`,"aria-label":`Next slide`,onClick:V,disabled:P===N.length-1}),t[52]=W,t[53]=V,t[54]=P,t[55]=N.length,t[56]=X):X=t[56];let Z;t[57]!==J||t[58]!==Y||t[59]!==X?(Z=(0,b.jsxs)(`div`,{className:`rw-stage`,children:[J,Y,X]}),t[57]=J,t[58]=Y,t[59]=X,t[60]=Z):Z=t[60];let Q;t[61]!==W||t[62]!==P||t[63]!==N?(Q=W&&(0,b.jsx)(`div`,{className:`rw-dots`,children:N.map((e,t)=>(0,b.jsx)(`button`,{type:`button`,className:`rw-dot`,"data-active":t===P||void 0,"aria-label":`Go to slide ${t+1} of ${N.length}`,onClick:()=>F(t)},e))}),t[61]=W,t[62]=P,t[63]=N,t[64]=Q):Q=t[64];let $;return t[65]!==U||t[66]!==q||t[67]!==Z||t[68]!==Q?($=(0,b.jsxs)(`div`,{className:`rw-overlay`,ref:i,role:`dialog`,"aria-modal":`true`,"aria-label":`Weekly Rewind`,tabIndex:-1,onKeyDown:U,children:[q,Z,Q]}),t[65]=U,t[66]=q,t[67]=Z,t[68]=Q,t[69]=$):$=t[69],$}function re(e){return Math.max(0,e-1)}function ie(){return Date.now()}export{A as RewindOverlay};
@@ -1,2 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/RippleOverlay-BM_B9JEc.js","assets/index-C7H7A1rW.js","assets/chunk-BVpWp9h4.js","assets/jsx-runtime-DaSxXjOY.js","assets/react-BQSORdFI.js","assets/lazyRetry-D50B1UMY.js","assets/index-CepQEz75.css","assets/useSpatialCanvas-D_C8VoCy.js","assets/FeatureUseNotice-CoK5HkbR.js","assets/FeatureUseNotice-CsCxxfOl.css","assets/cache-BumECILO.js","assets/colors-D49Req-e.js","assets/courseStore-DfafnL-9.js","assets/githubToken-DtcLYqwm.js","assets/keyVault-DEsNh9FR.js","assets/useFocusTrap-DbfG6zbM.js","assets/RippleOverlay-_iiZsQVZ.css","assets/useLiveConfig-Lm0cYTcu.js","assets/providers-wzm7E8Pa.js","assets/http-CJCtjYpA.js","assets/info-CiqHR5cs.js","assets/kokoro-kGWf7M0e.js","assets/spokenText-D4zPX9JY.js"])))=>i.map(i=>d[i]);
2
- import{t as e}from"./react-BQSORdFI.js";import{t}from"./jsx-runtime-DaSxXjOY.js";import{t as n}from"./lazyRetry-D50B1UMY.js";import{I as r,J as i,M as a,N as o,k as s,o as c,q as l}from"./index-C7H7A1rW.js";import{t as u}from"./homeTarget-BcZYH3DY.js";var d=e(),f=t();i();var p=r(()=>l(()=>import(`./RippleOverlay-BM_B9JEc.js`).then(e=>({default:e.RippleOverlay})),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]))),m=p.Component,h=n(()=>l(()=>import(`./seed-b1xc0dj2.js`),[]));function g(){(0,d.useEffect)(()=>a(o()),[]);let[e,t]=(0,d.useState)(null);(0,d.useEffect)(()=>{let e=!0;return p.preload().catch(()=>{}),h().then(({SEED_SHIP:n})=>{e&&t(n)}),()=>{e=!1}},[]);let[n,r]=(0,d.useState)(null);(0,d.useEffect)(()=>{let e=!0,t=window.setTimeout(()=>{l(async()=>{let{getLiveConfigV2:e,toModelConfig:t}=await import(`./useLiveConfig-Lm0cYTcu.js`).then(e=>e.d);return{getLiveConfigV2:e,toModelConfig:t}},__vite__mapDeps([17,2,1,3,4,5,6,18,19,20,14])).then(({getLiveConfigV2:t,toModelConfig:n})=>{if(!e)return;let i=n(t());r(i.apiKey?i:null)})},250);return()=>{e=!1,window.clearTimeout(t)}},[]);let i=(0,d.useCallback)(e=>{l(()=>import(`./kokoro-kGWf7M0e.js`).then(e=>e.y).then(t=>t.speak(e,`mavea`)),__vite__mapDeps([21,2,1,3,4,5,6,22]))},[]);return e?(0,f.jsx)(s,{label:`Ripple overview`,children:(0,f.jsx)(m,{model:e,cfg:n,speak:i,onClose:()=>{window.location.hash=u().href}})}):(0,f.jsx)(c,{})}export{g as RippleApp};
@@ -1,34 +0,0 @@
1
- import{t as e}from"./react-BQSORdFI.js";import{t}from"./jsx-runtime-DaSxXjOY.js";import{ht as n}from"./index-C7H7A1rW.js";import{t as r}from"./providers-wzm7E8Pa.js";import{r as i}from"./githubBrowser-DywfDeYx.js";import{t as a}from"./json-B0N3XRZU.js";import{n as o}from"./verbatim-CBMzUDlf.js";import{t as s}from"./links--u_phi0x.js";var c=e(),l=n(),u=t(),d={full:{label:`grounded in the repo`,token:`var(--insight)`},partial:{label:`partly grounded`,token:`var(--warning)`},none:{label:`not covered by what Ripple has read`,token:`var(--text-muted)`}},f={newgrad:[`Explain this repo like I’m new`,`Where should I start reading?`],working:[`What’s the blast radius of this change?`,`What would I need to know to review this?`],principal:[`What’s the crux here?`,`What would a principal push back on?`]};function p(e){let t=e.file?e.file.split(`/`).pop()??e.file:`source`;return e.unpinned?`${t} · unverified`:t}function m(e){let t=(0,l.c)(26),{open:n,onClose:r,turns:i,busy:a,onAsk:o,altitude:m,hasModel:g,seed:_,repo:v,gitRef:y,focusFile:b}=e,[x,S]=(0,c.useState)(``),C=(0,c.useRef)(null),w=(0,c.useRef)(null),T;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(T=()=>{let e=C.current;e&&(e.scrollTop=e.scrollHeight)},t[0]=T):T=t[0];let E;t[1]===i?E=t[2]:(E=[i],t[1]=i,t[2]=E),(0,c.useEffect)(T,E);let D,O;t[3]===_?(D=t[4],O=t[5]):(D=()=>{_&&(S(_.text),w.current?.focus())},O=[_],t[3]=_,t[4]=D,t[5]=O),(0,c.useEffect)(D,O);let k;t[6]!==a||t[7]!==x||t[8]!==o?(k=e=>{let t=(e??x).trim();!t||a||(o(t),S(``))},t[6]=a,t[7]=x,t[8]=o,t[9]=k):k=t[9];let A=k,j=h;if(!n)return null;let M;t[10]===Symbol.for(`react.memo_cache_sentinel`)?(M=(0,u.jsxs)(`span`,{className:`ripple-ask-title`,children:[(0,u.jsx)(`span`,{className:`ripple-ask-spark`,"aria-hidden":`true`}),`Ask`]}),t[10]=M):M=t[10];let N;t[11]===r?N=t[12]:(N=(0,u.jsxs)(`header`,{className:`ripple-ask-head`,children:[M,(0,u.jsx)(`button`,{type:`button`,className:`ripple-ask-min`,onClick:r,"aria-label":`Collapse the ask rail`,children:`✕`})]}),t[11]=r,t[12]=N);let P;t[13]!==m||t[14]!==a||t[15]!==x||t[16]!==b||t[17]!==y||t[18]!==g||t[19]!==v||t[20]!==A||t[21]!==i?(P=g?(0,u.jsxs)(u.Fragment,{children:[(0,u.jsxs)(`div`,{className:`ripple-ask-chips`,role:`group`,"aria-label":`Suggested questions`,children:[f[m].map(e=>(0,u.jsx)(`button`,{type:`button`,className:`ripple-ask-preset`,onClick:()=>A(e),disabled:a,children:e},e)),b&&(0,u.jsxs)(`button`,{type:`button`,className:`ripple-ask-preset`,onClick:()=>A(`What breaks if I change ${b}?`),disabled:a,children:[`What breaks if I change `,b,`?`]})]}),(0,u.jsxs)(`div`,{className:`ripple-ask-thread`,ref:C,children:[i.length===0&&(0,u.jsx)(`p`,{className:`ripple-ask-empty`,children:`Ask anything about this repo or PR. The answer cites real files — and says so honestly when nothing gathered addresses it.`}),i.map(e=>(0,u.jsxs)(`div`,{className:`ripple-ask-turn`,children:[(0,u.jsx)(`p`,{className:`ripple-ask-q`,children:e.question}),e.status===`pending`&&(0,u.jsxs)(`p`,{className:`ripple-ask-pending`,children:[(0,u.jsx)(`span`,{className:`ripple-ask-dot`,"aria-hidden":`true`}),`Reading the repo…`]}),e.status===`error`&&(0,u.jsx)(`p`,{className:`ripple-ask-err`,children:e.error}),e.status===`done`&&e.answer&&(0,u.jsxs)(`div`,{className:`ripple-ask-a`,children:[(0,u.jsxs)(`span`,{className:`ripple-ask-cover`,"data-coverage":e.answer.coverage,style:{"--cover-color":d[e.answer.coverage].token},children:[(0,u.jsx)(`span`,{className:`ripple-ask-cover-dot`,"aria-hidden":`true`}),d[e.answer.coverage].label]}),e.answer.text&&(0,u.jsx)(`p`,{className:`ripple-ask-text`,children:e.answer.text}),e.answer.citations.length>0&&(0,u.jsx)(`div`,{className:`ripple-ask-cites`,role:`group`,"aria-label":`Sources`,children:e.answer.citations.map((e,t)=>{let n=e.unpinned?null:s(v,y,e.file),r=p(e),i=`${e.file}\n“${e.quote}”`;return n?(0,u.jsxs)(`a`,{className:`ripple-ask-cite`,href:n,target:`_blank`,rel:`noopener noreferrer`,title:i,children:[r,` ↗`]},`${e.file}:${t}`):(0,u.jsx)(`span`,{className:`ripple-ask-cite`,"data-unpinned":e.unpinned?`true`:void 0,title:i,children:r},`${e.file}:${t}`)})})]})]},e.id))]}),(0,u.jsxs)(`form`,{className:`ripple-ask-form`,onSubmit:e=>{e.preventDefault(),A()},children:[(0,u.jsx)(`textarea`,{ref:w,className:`ripple-ask-input`,value:x,onChange:e=>S(e.target.value),onKeyDown:e=>{e.key===`Enter`&&!e.shiftKey&&(e.preventDefault(),A())},rows:1,placeholder:a?`Reading the repo…`:`Ask about this repo or PR…`,"aria-label":`Ask about this repo or PR`}),(0,u.jsx)(`button`,{type:`submit`,className:`ripple-ask-send`,disabled:a||x.trim().length===0,"aria-label":`Ask`,children:`↵`})]})]}):(0,u.jsx)(`div`,{className:`ripple-ask-empty-state`,children:(0,u.jsx)(`p`,{children:`Connect a model in Settings → Live to ask questions about this repo.`})}),t[13]=m,t[14]=a,t[15]=x,t[16]=b,t[17]=y,t[18]=g,t[19]=v,t[20]=A,t[21]=i,t[22]=P):P=t[22];let F;return t[23]!==N||t[24]!==P?(F=(0,u.jsxs)(`section`,{className:`ripple-ask-rail`,"aria-label":`Ask`,onPointerDown:j,onWheel:j,onClick:j,children:[N,P]}),t[23]=N,t[24]=P,t[25]=F):F=t[25],F}function h(e){return e.stopPropagation()}var g=3,_=3e3,v=6e3,y=40,b=40,x=30,S=12,C=6;function w(e,t){return`${e}::${t}`}function T(e,t,n=new Set,r=g){let i=Array.from(new Set(t.toLowerCase().match(/[a-z0-9]{4,}/g)??[]));return i.length===0?[]:e.map((e,t)=>({p:e,i:t})).filter(({p:e})=>!n.has(e)).map(({p:e,i:t})=>{let n=e.toLowerCase();return{p:e,i:t,score:i.reduce((e,t)=>e+ +!!n.includes(t),0)}}).filter(e=>e.score>0).sort((e,t)=>t.score-e.score||e.i-t.i).slice(0,r).map(e=>e.p)}async function E(e,t){if(!e.repo||!e.treePaths?.length)return;let n=T(e.treePaths,t,new Set(e.fileCache.keys()));if(n.length===0)return;let r=await Promise.all(n.map(t=>i(t,e.gitRef,e.repo).catch(()=>({ok:!1}))));e.signal?.aborted||r.forEach((t,r)=>{t.ok&&t.content&&e.fileCache.set(n[r],t.content.slice(0,_))})}function D(e,t){let n=[],r=e.pr;return n.push(`REPO: ${r.repo}${r.title?` — ${r.title}`:``}`),r.summary&&n.push(`SUMMARY: ${r.summary}`),r.risks.length&&n.push(`RISKS:\n${r.risks.slice(0,S).map(e=>`- [${e.level}] ${e.text}`).join(`
2
- `)}`),e.changes.length&&n.push(`CHANGES (${e.changes.length}):\n${e.changes.slice(0,y).map(e=>`- ${e.file} [${e.kind}/${e.risk}]: ${e.intent}${e.why?` — ${e.why}`:``}`).join(`
3
- `)}`),e.nodes.length&&n.push(`SYSTEM NODES (${e.nodes.length}):\n${e.nodes.slice(0,b).map(e=>{let t=[e.contract,e.problem,e.fix].filter(Boolean).join(` | `);return`- ${e.label}${e.sub?` (${e.sub})`:``}${t?`: ${t}`:``}`}).join(`
4
- `)}`),e.modules.length&&n.push(`MODULES (${e.modules.length}):\n${e.modules.slice(0,x).map(e=>`- ${e.name}: ${[e.purpose,e.explain].filter(Boolean).join(` `)}`.trim()).join(`
5
- `)}`),e.courses?.length&&n.push(`COURSES:\n${e.courses.map(e=>{let n=e.lessons.map(n=>{let r=t?.get(w(e.title,n.title)),i=r?` — ${r.overview.slice(0,240)}`:``;return` · ${n.title}: ${n.goal}${i}`}).join(`
6
- `);return`- ${e.title}${e.subtitle?` — ${e.subtitle}`:``}\n${n}`}).join(`
7
- `)}`),n.join(`
8
-
9
- `)}var O=`You answer a question about a code repository / pull request strictly from the material given — the grounded facts, the diff, and any real file excerpts — quoting verbatim when you cite a file, and return strict JSON only. You never invent a file, quote, or fact; when the material does not address the question you say so plainly.`,k={newgrad:`Answer for someone brand-new to this codebase: spell out jargon, orient them, connect the dots explicitly. A little more length is fine if it teaches.`,working:`Answer for an engineer with a few years of experience who knows the codebase’s shape but not this specific area: be direct, skip the basics, name the real mechanism.`,principal:`Answer for a principal engineer: get straight to the crux and the tradeoffs. Skip orientation entirely.`};function A(e,t,n,r,i){let a=[`REPO FACTS:\n${n||`(nothing gathered yet)`}`];if(r&&a.push(`DIFF:\n${r.slice(0,v)}`),i.size>0){let e=Array.from(i.entries()).map(([e,t])=>`FILE ${e}:\n${t}`).join(`
10
-
11
- `);a.push(`FILE EXCERPTS:\n${e}`)}return`${a.join(`
12
-
13
- `)}
14
-
15
- ${k[t]}
16
-
17
- QUESTION: ${e}
18
-
19
- Return ONLY a JSON object (no prose, no fences):
20
- {
21
- "answer": "a direct answer drawn STRICTLY from the material above, at the depth the guidance above asks for",
22
- "coverage": "full|partial|none",
23
- "citations": [ { "file": "the real path this came from", "quote": "the exact text copied VERBATIM from that file's excerpt or the diff" } ]
24
- }
25
-
26
- Rules:
27
- - Use ONLY the material above. Never invent a file, fact, or quote.
28
- - Every "quote" MUST be copied character-for-character from the named file's excerpt or the diff (it
29
- is verified before it can show as grounded — anything not found verbatim is still shown, but
30
- labeled honestly rather than presented as a real quote).
31
- - "coverage": "full" if the material fully answers the question; "partial" if only part of it does;
32
- "none" if the material doesn't address it at all.
33
- - If nothing above addresses the question, set "coverage":"none", give a brief honest answer saying
34
- so, and return "citations": [].`}function j(e){return typeof e==`string`?e:``}function M(e){let t=String(e??``).toLowerCase().trim();return t===`full`||t===`partial`||t===`none`?t:`partial`}function N(e,t,n){if(!Array.isArray(e))return[];let r=[],i=new Set;for(let a of e){if(!a||typeof a!=`object`)continue;let e=a,s=j(e.file).trim(),c=j(e.quote).trim();if(!c)continue;let l=`${s}:${c.replace(/\s+/g,` `).toLowerCase()}`;if(i.has(l))continue;i.add(l);let u=s?t.get(s):void 0,d=!!u&&o(c,u)||!!n&&o(c,n);if(r.push(d?{file:s,quote:c}:{file:s,quote:c,unpinned:!0}),r.length>=C)break}return r}async function P(e,t){let n=e.trim();if(!n||(await E(t,n).catch(()=>void 0),t.signal?.aborted))return{text:``,coverage:`none`,citations:[]};let i=D(t.model,t.lessonDetails),o=t.diffText??``,s;try{s=(await r(t.cfg.provider).generate({system:O,history:[],user:A(n,t.altitude,i,o,t.fileCache),maxTokens:1e3,temperature:0,format:null,...t.signal?{signal:t.signal}:{}},t.cfg)).raw}catch(e){return e instanceof DOMException&&e.name===`AbortError`?{text:``,coverage:`none`,citations:[]}:{text:`Couldn’t reach the model just now.`,coverage:`none`,citations:[]}}if(t.signal?.aborted)return{text:``,coverage:`none`,citations:[]};let c=a(s),l=j(c?.answer).trim(),u=M(c?.coverage),d=N(c?.citations,t.fileCache,o);return l?{text:l,coverage:u,citations:d}:{text:`I couldn’t find this addressed in the repo.`,coverage:`none`,citations:[]}}function F(e,t){let[n,r]=(0,c.useState)([]),[i,a]=(0,c.useState)(!1),o=(0,c.useRef)(e);o.current=e;let s=(0,c.useRef)(t);s.current=t;let l=(0,c.useRef)(null),u=(0,c.useRef)(!1),d=(0,c.useRef)(0),f=(0,c.useCallback)(()=>{l.current?.abort(),l.current=null,u.current=!1,a(!1),r([])},[]);return(0,c.useEffect)(()=>()=>l.current?.abort(),[]),{turns:n,busy:i,ask:(0,c.useCallback)(e=>{if(u.current)return;let t=e.trim(),n=o.current;if(!t||!n)return;let i=new AbortController;l.current=i,u.current=!0,a(!0);let c=`q${d.current+=1}`;r(e=>[...e,{id:c,question:t,status:`pending`}]),P(t,{...n,signal:i.signal}).then(e=>{i.signal.aborted||(u.current=!1,a(!1),r(t=>t.map(t=>t.id===c?{...t,status:`done`,answer:e}:t)),s.current?.(e,t))}).catch(e=>{if(i.signal.aborted)return;u.current=!1,a(!1);let t=e instanceof Error?e.message:`Could not answer.`;r(e=>e.map(e=>e.id===c?{...e,status:`error`,error:t}:e))})},[]),reset:f}}function I(e){let t=(0,l.c)(11),{ctx:n,onClose:r,altitude:i,seed:a,repo:o,gitRef:s,focusFile:c}=e,{turns:d,busy:f,ask:p}=F(n),h=!!n,g;return t[0]!==i||t[1]!==p||t[2]!==f||t[3]!==c||t[4]!==s||t[5]!==r||t[6]!==o||t[7]!==a||t[8]!==h||t[9]!==d?(g=(0,u.jsx)(m,{open:!0,onClose:r,turns:d,busy:f,onAsk:p,altitude:i,hasModel:h,seed:a,repo:o,gitRef:s,focusFile:c}),t[0]=i,t[1]=p,t[2]=f,t[3]=c,t[4]=s,t[5]=r,t[6]=o,t[7]=a,t[8]=h,t[9]=d,t[10]=g):g=t[10],g}export{I as RippleAskController};
@@ -1,6 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/generate-8odaTyr4.js","assets/providers-wzm7E8Pa.js","assets/chunk-BVpWp9h4.js","assets/http-CJCtjYpA.js","assets/info-CiqHR5cs.js","assets/cache-BumECILO.js","assets/githubToken-DtcLYqwm.js","assets/keyVault-DEsNh9FR.js","assets/githubBrowser-DywfDeYx.js","assets/streamParse-DRgMHWye.js","assets/owners-FXDGInVq.js","assets/codeContext-0UMRSGRr.js","assets/ShipRead--gGqg2SE.js","assets/index-C7H7A1rW.js","assets/jsx-runtime-DaSxXjOY.js","assets/react-BQSORdFI.js","assets/lazyRetry-D50B1UMY.js","assets/index-CepQEz75.css","assets/ShipIncident-BWxerYtX.js","assets/ShipIncident-BUHvFFiC.css","assets/ShipWorkspace-BmdcHZXa.js","assets/colors-D49Req-e.js","assets/ShipWorkspace-D6XQpGEN.css","assets/ShipCascade-k_GWrcau.js","assets/ShipCascade-CyFnrlET.css","assets/ShipMigration-OgAGEbjm.js","assets/ShipMigration-BznCskNg.css","assets/ShipRollout-B_U2P8Yw.js","assets/ShipRollout-CqeObx5b.css","assets/ShipCourse-BQOY4MyI.js","assets/courseStore-DfafnL-9.js","assets/links--u_phi0x.js","assets/DropSelect-Bo2Oyi-2.js","assets/store-DXmC_fP2.js","assets/ShipCourse-DcT7PUSm.css","assets/ShipOnboarding-B_2IEq3N.js","assets/ShipOnboarding-BC9Vxkpa.css","assets/ShipHotspots-vLRK0w_b.js","assets/ShipHotspots-CLOMutPv.css","assets/ShipSuggestions-D9coTmgw.js","assets/ShipSuggestions-BKRvk5Mj.css","assets/ShipGate-BYYu9WVq.js","assets/ShipGate-BVZfCllb.css","assets/RippleAskController-CK4iSwT0.js","assets/json-B0N3XRZU.js","assets/verbatim-CBMzUDlf.js","assets/RippleAskController-BNAUoIW0.css"])))=>i.map(i=>d[i]);
2
- import{t as e}from"./react-BQSORdFI.js";import{t}from"./jsx-runtime-DaSxXjOY.js";import{I as n,J as r,L as i,ht as a,k as o,q as s}from"./index-C7H7A1rW.js";import{t as c}from"./useFocusTrap-DbfG6zbM.js";import{t as l}from"./FeatureUseNotice-CoK5HkbR.js";import{t as u}from"./useSpatialCanvas-D_C8VoCy.js";import{_ as d,a as f,i as p,m,r as h,t as g,v as _,y as v}from"./githubToken-DtcLYqwm.js";import{i as y,n as b,t as x}from"./cache-BumECILO.js";import{n as S,r as C}from"./colors-D49Req-e.js";import{n as w,r as ee}from"./courseStore-DfafnL-9.js";var T=e(),E=.82;function D(e,t){let n=e.find(e=>e.type===`pr`)??e[0],r=n?.id??``,i=e.filter(e=>e.id!==r),a=e=>230+(e-1)*210,o=e=>Math.max(4,Math.floor(2*Math.PI*a(e)*E/204)),s=[];n&&s.push({node:n,x:0,y:0});let c=1,l=0,u=o(c);for(let e of i){l>=u&&(c+=1,l=0,u=o(c));let t=a(c),n=l/u*Math.PI*2-Math.PI/2+c*.5;s.push({node:e,x:0+Math.cos(n)*t,y:0+Math.sin(n)*t*E}),l+=1}for(let e=0;e<240;e++){let e=!1;for(let t=0;t<s.length;t++)for(let n=t+1;n<s.length;n++){let i=s[t],a=s[n],o=a.x-i.x,c=a.y-i.y,l=204-Math.abs(o),u=112-Math.abs(c);if(!(l<=0||u<=0))if(e=!0,l<u){let e=(l/2+.5)*(o<0?-1:1);i.node.id!==r&&(i.x-=e),a.node.id!==r&&(a.x+=e)}else{let e=(u/2+.5)*(c<0?-1:1);i.node.id!==r&&(i.y-=e),a.node.id!==r&&(a.y+=e)}}if(!e)break}let d=1/0,f=1/0,p=-1/0,m=-1/0;for(let e of s)d=Math.min(d,e.x-168/2),f=Math.min(f,e.y-76/2),p=Math.max(p,e.x+168/2),m=Math.max(m,e.y+76/2);let h=80-d,g=80-f;for(let e of s)e.x+=h,e.y+=g;let _=p-d+160,v=m-f+160;return{centerId:r,nodes:s,w:_,h:v,bbox:{x:0,y:0,w:_,h:v}}}var O=t();function te({nodes:e,edges:t,altitude:n,onAsk:r,animate:i}){let[a,o]=(0,T.useState)(`severity`),[s,c]=(0,T.useState)(!1),[l,d]=(0,T.useState)(null),f=(0,T.useMemo)(()=>{let n=s?e.filter(e=>e.type===`pr`||e.crossRepo):e,r=new Set(n.map(e=>e.id));return D(n,t.filter(e=>r.has(e.from)&&r.has(e.to)))},[e,t,s]),p=(0,T.useMemo)(()=>{let e=new Map;for(let t of f.nodes)e.set(t.node.id,t);return e},[f]),m=(0,T.useMemo)(()=>{let e=new Map,t=p.get(f.centerId);if(!t)return e;let n=1;for(let e of f.nodes)n=Math.max(n,Math.hypot(e.x-t.x,e.y-t.y));for(let r of f.nodes){let i=Math.hypot(r.x-t.x,r.y-t.y);e.set(r.node.id,Math.round(i/n*460))}return e},[f,p]),h=p.get(f.centerId),g=u({clamp:{min:.7,max:2.2},margin:56}),{fitTo:_}=g;(0,T.useEffect)(()=>{_(f.bbox)},[f,_]);let[v,y]=(0,T.useState)(!1),b=(0,T.useRef)(!1),x=(0,T.useRef)(!1),w=(0,T.useRef)({x:0,y:0}),ee=(0,T.useCallback)(e=>{b.current=!0,x.current=!1,y(!0),w.current={x:e.clientX,y:e.clientY},e.currentTarget.setPointerCapture(e.pointerId)},[]),E=(0,T.useCallback)(e=>{if(!b.current)return;let t=e.clientX-w.current.x,n=e.clientY-w.current.y;Math.abs(t)+Math.abs(n)>2&&(x.current=!0),w.current={x:e.clientX,y:e.clientY},g.pan(t,n)},[g]),te=(0,T.useCallback)(e=>{b.current=!1,y(!1);try{e.currentTarget.releasePointerCapture(e.pointerId)}catch{}},[]),k=g.viewportRef,{zoomAtClient:A}=g;(0,T.useEffect)(()=>{let e=k.current;if(!e)return;let t=e=>{e.preventDefault(),A(e.deltaY<0?1.12:1/1.12,e.clientX,e.clientY)};return e.addEventListener(`wheel`,t,{passive:!1}),()=>e.removeEventListener(`wheel`,t)},[k,A]);let j=g.camera.scale>=.7,M=a===`traffic`,N=l?p.get(l)?.node??null:null,P=e.some(e=>typeof e.traffic==`number`),F=e.some(e=>e.crossRepo===!0);return(0,O.jsxs)(`div`,{className:`ripple-impact`,children:[(0,O.jsxs)(`div`,{className:`ripple-impact-controls`,children:[P&&(0,O.jsxs)(`div`,{className:`ripple-lens`,role:`group`,"aria-label":`Map lens`,children:[(0,O.jsx)(`button`,{type:`button`,"data-active":a===`severity`?`true`:void 0,onClick:()=>o(`severity`),children:`Severity`}),(0,O.jsx)(`button`,{type:`button`,"data-active":a===`traffic`?`true`:void 0,onClick:()=>o(`traffic`),children:`Traffic`})]}),F&&(0,O.jsxs)(`label`,{className:`ripple-crossrepo`,children:[(0,O.jsx)(`input`,{type:`checkbox`,checked:s,onChange:e=>c(e.target.checked)}),`Cross-repo only`]}),(0,O.jsx)(`div`,{className:`ripple-zoombtns`,children:(0,O.jsx)(`button`,{type:`button`,onClick:()=>_(f.bbox),title:`Fit the whole map`,"aria-label":`Fit`,children:`⤢`})})]}),(0,O.jsxs)(`div`,{className:`ripple-stage`+(v?` is-panning`:``),ref:g.viewportRef,onPointerDown:ee,onPointerMove:E,onPointerUp:te,onPointerCancel:te,children:[(0,O.jsxs)(`div`,{className:`ripple-world`,"data-animate":i?`true`:void 0,style:{width:f.w,height:f.h,transform:g.transform},children:[i&&h&&(0,O.jsx)(`span`,{className:`ripple-enter-pulse`,"aria-hidden":`true`,style:{left:h.x,top:h.y}}),(0,O.jsx)(`svg`,{className:`ripple-edges`,width:f.w,height:f.h,viewBox:`0 0 ${f.w} ${f.h}`,"aria-hidden":`true`,children:f.nodes.filter(e=>e.node.id!==f.centerId).map(e=>{let n=p.get(f.centerId);if(!n)return null;let r=t.find(t=>t.from===n.node.id&&t.to===e.node.id)??t.find(t=>t.to===n.node.id&&t.from===e.node.id),i=C(e.node.status),a=M?1.3+(e.node.traffic??0)*3:r?.breaking?2.4:1.6;return(0,O.jsx)(`line`,{x1:n.x,y1:n.y,x2:e.x,y2:e.y,stroke:i,strokeWidth:a,strokeLinecap:`round`,strokeDasharray:r?.breaking?`6 5`:r?.dashed?`2 6`:void 0,className:`ripple-edge`+(r?.breaking?` ripple-edge-break`:``),style:{animationDelay:`${m.get(e.node.id)??0}ms`},opacity:l&&l!==e.node.id?.25:.7},e.node.id)})}),j&&f.nodes.filter(e=>e.node.id!==f.centerId).map(e=>{let n=p.get(f.centerId);if(!n)return null;let r=t.find(t=>t.from===n.node.id&&t.to===e.node.id)??t.find(t=>t.to===n.node.id&&t.from===e.node.id);return r?(0,O.jsx)(`div`,{className:`ripple-edge-verb`,style:{left:(n.x+e.x)/2,top:(n.y+e.y)/2,color:C(e.node.status)},children:r.verb},`v-${e.node.id}`):null}),f.nodes.map(e=>{let t=e.node,n=t.id===f.centerId,r=C(t.status),i=M&&!n?1+(t.traffic??0)*.24:1;return(0,O.jsx)(`button`,{type:`button`,className:`ripple-node`,"data-center":n?`true`:void 0,"data-status":t.status,"data-open":l===t.id?`true`:void 0,style:{left:e.x-168/2,top:e.y-76/2,width:168,minHeight:76,transform:`scale(${i.toFixed(3)})`,borderColor:r,opacity:l&&l!==t.id?.55:1,animationDelay:`${m.get(t.id)??0}ms`},onClick:()=>{x.current||d(e=>e===t.id?null:t.id)},children:n?(0,O.jsxs)(O.Fragment,{children:[(0,O.jsx)(`span`,{className:`ripple-node-eyebrow`,style:{color:r},children:`THIS CHANGE`}),(0,O.jsx)(`span`,{className:`ripple-node-name ripple-node-name-lg`,children:t.label})]}):(0,O.jsxs)(O.Fragment,{children:[(0,O.jsxs)(`span`,{className:`ripple-node-top`,children:[(0,O.jsx)(`span`,{className:`ripple-node-dot`,style:{background:r},"aria-hidden":`true`}),(0,O.jsx)(`span`,{className:`ripple-node-status`,style:{color:r},children:S(t.status)}),t.severity&&(0,O.jsx)(`span`,{className:`ripple-node-sev`,style:{background:r},children:t.severity})]}),(0,O.jsx)(`span`,{className:`ripple-node-name`,children:t.label}),j&&(0,O.jsxs)(`span`,{className:`ripple-node-meta`,children:[t.team??t.owner??``,t.trafficLabel?` · ${t.trafficLabel}`:``]}),t.crossRepo&&(0,O.jsx)(`span`,{className:`ripple-node-repo`,children:`other repo`})]})},t.id)})]}),(0,O.jsx)(`div`,{className:`ripple-map-legend`,"aria-hidden":`true`,children:[`breaks`,`migration`,`untested`,`affected`,`safe`].map(e=>(0,O.jsxs)(`span`,{className:`ripple-map-legend-item`,children:[(0,O.jsx)(`span`,{className:`ripple-node-dot`,style:{background:C(e)}}),S(e).toLowerCase()]},e))})]}),N&&(0,O.jsxs)(`aside`,{className:`ripple-inspect`,"aria-label":`${N.label} detail`,children:[(0,O.jsxs)(`div`,{className:`ripple-inspect-head`,children:[(0,O.jsxs)(`div`,{className:`ripple-inspect-titles`,children:[(0,O.jsx)(`span`,{className:`ripple-node-status`,style:{color:C(N.status)},children:S(N.status)}),N.severity&&(0,O.jsxs)(`span`,{className:`ripple-inspect-sev`,style:{background:C(N.status)},children:[`would page · `,N.severity]})]}),(0,O.jsx)(`button`,{type:`button`,className:`ripple-iconbtn`,onClick:()=>d(null),"aria-label":`Close detail`,children:`✕`})]}),(0,O.jsx)(`div`,{className:`ripple-inspect-name`,children:N.label}),(0,O.jsxs)(`div`,{className:`ripple-inspect-owner`,children:[N.team?`owned by ${N.team}`:``,N.cite?(0,O.jsxs)(`span`,{className:`ripple-inspect-cite`,children:[` · `,N.cite.ref]}):null]}),N.trafficLabel&&(0,O.jsxs)(`div`,{className:`ripple-inspect-traffic`,children:[(0,O.jsx)(`strong`,{children:N.trafficLabel}),(0,O.jsx)(`span`,{children:`live traffic, from tracing — not the diff`})]}),N.contract&&(0,O.jsxs)(`div`,{className:`ripple-inspect-block`,children:[(0,O.jsx)(`div`,{className:`ripple-eyebrow`,children:`The contract`}),(0,O.jsx)(`p`,{children:N.contract})]}),N.problem&&(0,O.jsxs)(`div`,{className:`ripple-inspect-block ripple-inspect-problem`,style:{borderColor:`color-mix(in oklab, ${C(N.status)} 40%, transparent)`},children:[(0,O.jsx)(`div`,{className:`ripple-eyebrow`,style:{color:C(N.status)},children:`What happens`}),(0,O.jsx)(`p`,{children:N.problem})]}),N.altitudeNotes?.[n]&&(0,O.jsxs)(`div`,{className:`ripple-inspect-block`,children:[(0,O.jsx)(`div`,{className:`ripple-eyebrow`,children:`At your altitude`}),(0,O.jsx)(`p`,{children:N.altitudeNotes[n]})]}),N.fix&&(0,O.jsxs)(`div`,{className:`ripple-inspect-fix`,children:[(0,O.jsx)(`div`,{className:`ripple-eyebrow`,children:`Mavéa’s call`}),(0,O.jsx)(`p`,{children:N.fix})]}),r&&(0,O.jsxs)(`button`,{type:`button`,className:`ripple-ask-btn`,onClick:()=>r(N),children:[`Ask about `,N.label]})]})]})}function k(e){let t=e.lastIndexOf(`/`),n=t>0?e.slice(0,t):``;return n?n.split(`/`).slice(0,2).join(`/`):`(root)`}function A(e){let t=e.split(`/`);return t[t.length-1]||e}function j(e){let t=e.toLowerCase();return/\b(api|routes?|server|http|controllers?|handlers?)\b/.test(t)?`Routes + request handling.`:/\b(auth|identity|session|login)\b/.test(t)?`Tokens, sessions, permissions.`:/\b(db|data|models?|schema|migrations?|store)\b/.test(t)?`Schemas, queries, persistence.`:/\b(billing|payments?|charge|orders?)\b/.test(t)?`The money path.`:/\b(jobs?|workers?|queue|tasks?|cron)\b/.test(t)?`Async / background work.`:/\b(ui|components?|views?|pages?|client|web)\b/.test(t)?`The user interface.`:/\b(tests?|__tests__|spec|e2e)\b/.test(t)?`Tests.`:/\b(lib|utils?|shared|common|helpers?)\b/.test(t)?`Shared utilities.`:/\b(config|infra|deploy|ci|scripts?)\b/.test(t)?`Config + tooling.`:/\b(webhooks?|events?|integrations?|connectors?)\b/.test(t)?`Outbound events / integrations.`:``}function M(e){return e.find(e=>/\/(index|main|mod|app|server)\.[a-z]+$/i.test(e))||([...e].sort((e,t)=>e.length-t.length)[0]??e[0]??``)}function N(e,t,n=!1){let r=e.filter(e=>typeof e==`string`&&e.length>0),i=new Map;for(let e of r){let t=k(e);(i.get(t)??i.set(t,[]).get(t)).push(e)}let a=[...i.entries()].sort((e,t)=>t[1].length-e[1].length),o=a.map(([e,t],n)=>{let r=M(t),i=`${t.length} file${t.length===1?``:`s`}`,a=j(e);return{id:`m${n}`,name:e,purpose:a||i,entry:r,owner:``,health:i,explain:`${a?a+` `:``}${i} in ${e}.`+(r?` Start with ${A(r)} and follow what it imports.`:``),startHere:t.slice(0,3).map(A),depends:[],usedBy:[]}}),s=[{id:`pr`,label:t.split(`/`).pop()||t,sub:`THIS REPO`,type:`pr`,status:`affected`,scope:`in-pr`}],c=[],l=a.slice(0,9);l.forEach(([e,t],n)=>{let r=`n${n}`,i=M(t);s.push({id:r,label:e,sub:`${t.length} file${t.length===1?``:`s`}`,type:`module`,status:`affected`,scope:`in-pr`,contract:`${j(e)||`${t.length} files`}`+(i?` · start with ${A(i)}`:``)}),c.push({from:`pr`,to:r,verb:`contains`,status:`affected`})});let u=a.slice(0,4).map(([e])=>e).join(`, `);return{pr:{repo:t,title:`${r.length} file${r.length===1?``:`s`}`,files:r.length,summary:`${t} — ${r.length} file${r.length===1?``:`s`} across ${i.size} area${i.size===1?``:`s`}${u?` (${u})`:``}. Start with the busiest areas and follow what they touch.`,risks:[],readScope:`Read the repo tree: ${r.length} file${r.length===1?``:`s`}.`},nodes:s,edges:c,changes:[],cascades:[],rollout:[],workTypes:[],hotspots:[],suggestions:[],suppressedNits:0,modules:o,onboarding:{firstWeek:a.slice(0,5).map(([e,t])=>({team:e.toUpperCase(),title:e,sub:j(e)||`${t.length} files`,file:M(t)})),requestLife:[]},gate:{decision:`watch`,shipSafe:!1,unackedP0:0,requires:[],deployOrder:`unset`,conditions:[],rationale:`Exploring the repo — there’s no change to gate here.`},provenance:{source:`github`,example:!1,notes:[`Exploring ${t} — ${r.length} files grouped into ${i.size} areas.`,`This is the code as it stands, not a change. The gate and diff views don’t apply.`,...a.length>l.length?[`The map shows the ${l.length} busiest areas; the full list is in Onboarding.`]:[],...n?[`Large repo — only the first slice of files was read.`]:[]]}}}var P={tier:`slow-cheap`,enrichMaxTokens:1600,courseCount:3,coursesMaxTokens:2600,closingMaxTokens:3600,lessonMaxTokens:3600,fetchCodeContext:!1,thinkingLevel:`minimal`},F={tier:`frontier-deep`,enrichMaxTokens:2600,courseCount:5,coursesMaxTokens:3e3,closingMaxTokens:4e3,lessonMaxTokens:7e3,fetchCodeContext:!0,thinkingLevel:`low`},I={tier:`frontier-fast`,enrichMaxTokens:2600,courseCount:5,coursesMaxTokens:3e3,closingMaxTokens:4e3,lessonMaxTokens:6e3,fetchCodeContext:!0,thinkingLevel:`minimal`},L=e=>!!e&&/(localhost|127\.0\.0\.1|0\.0\.0\.0|host\.docker\.internal|:11434)/i.test(e);function ne(e){let t=e.model.toLowerCase();return L(e.baseUrl)||/:free\b/.test(t)?`slow-cheap`:/\bopus\b/.test(t)||/\bgpt-5(?!.*mini)/.test(t)||/(^|[^a-z])o[1-9](-|\b)/.test(t)||/gemini-[0-9.]*-?pro/.test(t)||/\bsonnet\b/.test(t)&&!/haiku/.test(t)?`frontier-deep`:`frontier-fast`}function re(e){switch(ne(e)){case`slow-cheap`:return P;case`frontier-deep`:return F;default:return I}}var ie=/^[A-Za-z0-9._-]+$/,R=e=>({kind:`invalid`,reason:e});function ae(e,t){let n=e.trim().replace(/^git@github\.com:/i,`github.com/`);if(!n)return R(`Paste a GitHub PR, compare, or repo URL — or owner/repo#123.`);let r=n.replace(/^https?:\/\//i,``).replace(/^www\./i,``),i=/^github\.com\/(.+)$/i.exec(r),a=/^[A-Za-z0-9._-]+\/[A-Za-z0-9._-]+\/(?:pull|pulls|compare|tree|blob)\b/i.test(n),o=i?i[1]:a?n:null;if(o){let e=o.split(`#`)[0].split(`?`)[0].replace(/\/+$/,``).split(`/`),t=e[0]??``,n=(e[1]??``).replace(/\.git$/,``);if(!t||!n||!ie.test(t)||!ie.test(n))return R(`That GitHub URL is missing an owner/repo.`);let r=`${t}/${n}`,i=e[2],a=e.slice(3);if(!i)return{kind:`repo`,repo:r};if(i===`pull`||i===`pulls`){let e=(a[0]??``).replace(/\D.*$/,``);return e?{kind:`pr`,repo:r,prNumber:e}:R(`That pull-request URL has no number.`)}if(i===`compare`){let e=decodeURIComponent(a.join(`/`)),t=/^(.+?)\.{2,3}(.+)$/.exec(e);return t?{kind:`compare`,repo:r,base:t[1],head:t[2]}:R(`A compare URL looks like base...head.`)}if(i===`tree`||i===`blob`){let e=a[0],t=a.slice(1).join(`/`);return i===`blob`&&t&&(t=t.replace(/\/?[^/]*$/,``)),{kind:`tree`,repo:r,ref:e||void 0,path:t||void 0}}return{kind:`repo`,repo:r}}let s=/^([A-Za-z0-9._-]+)\/([A-Za-z0-9._-]+?)(?:\.git)?#(\d+)$/.exec(n);if(s)return{kind:`pr`,repo:`${s[1]}/${s[2]}`,prNumber:s[3]};let c=/^([A-Za-z0-9._-]+)\/([A-Za-z0-9._-]+?)(?:\.git)?\/?$/.exec(n);if(c)return{kind:`repo`,repo:`${c[1]}/${c[2]}`};let l=/^#?(\d+)$/.exec(n);return l?t?{kind:`pr`,repo:t,prNumber:l[1]}:R(`Enter owner/repo#number, or connect a default repo first.`):R(`Paste a GitHub PR, compare, or repo URL — or owner/repo#123.`)}var oe=`mavea.ripple.tracked.v1`,se=20;function z(){try{let e=localStorage.getItem(oe);if(!e)return[];let t=JSON.parse(e);return Array.isArray(t)?t.filter(e=>e&&e.id&&e.model):[]}catch{return[]}}function B(e){try{localStorage.setItem(oe,JSON.stringify(e.slice(0,se)))}catch{}}function ce(){return z().sort((e,t)=>t.savedAt-e.savedAt)}function le(e,t=Date.now()){let n=e.pr.repo||e.pr.title||`change`,r={id:`${n}::${t}`,label:n,savedAt:t,source:e.provenance.source,model:e};return B([r,...z().filter(e=>e.label!==n)]),r}function ue(e){B(z().filter(t=>t.id!==e))}var V=a();function de(e){return(/^(.*?[.!?])(\s|$)/.exec(e.trim())?.[1]??e).trim()}function fe(e){let t=(0,V.c)(65),{model:n,altitude:r,onNavigate:i,onAsk:a}=e,{pr:o,gate:s}=n,c=n.changes.length===0,l;t[0]!==c||t[1]!==s?(l=c?{label:`Explore`,tone:`neutral`}:s.decision===`pass`?{label:`Clear to ship`,tone:`safe`}:s.decision===`block`?{label:`Hold`,tone:`breaks`}:{label:`Review first`,tone:`watch`},t[0]=c,t[1]=s,t[2]=l):l=t[2];let u=l,d=c?`${Math.max(0,n.nodes.length-1)} areas · ${o.files??0} files`:`+${o.added??0} −${o.removed??0} · ${o.files??n.changes.length} file${(o.files??n.changes.length)===1?``:`s`}`,f;t[3]===o.summary?f=t[4]:(f=de(o.summary),t[3]=o.summary,t[4]=f);let p=f,m=o.risks[0]?.text,h;t[5]!==n.courses||t[6]!==n.modules?(h=n.courses?.length||n.modules.length?[{id:`onboarding`,label:n.courses?.length?`Onboard · ${n.courses.length} course${n.courses.length===1?``:`s`}`:`Onboarding`}]:[],t[5]=n.courses,t[6]=n.modules,t[7]=h):h=t[7];let g;t[8]===n.changes.length?g=t[9]:(g=n.changes.length?[{id:`workspace`,label:`${n.changes.length} change${n.changes.length===1?``:`s`}`}]:[],t[8]=n.changes.length,t[9]=g);let _;t[10]===n.cascades.length?_=t[11]:(_=n.cascades.length?[{id:`cascade`,label:`The cascade`}]:[],t[10]=n.cascades.length,t[11]=_);let v;t[12]===n.migration?v=t[13]:(v=n.migration?[{id:`migration`,label:`The migration`}]:[],t[12]=n.migration,t[13]=v);let y;t[14]===n.rollout.length?y=t[15]:(y=n.rollout.length?[{id:`rollout`,label:`Safe rollout`}]:[],t[14]=n.rollout.length,t[15]=y);let b;t[16]===n.suggestions.length?b=t[17]:(b=n.suggestions.length?[{id:`suggestions`,label:`${n.suggestions.length} suggestion${n.suggestions.length===1?``:`s`}`}]:[],t[16]=n.suggestions.length,t[17]=b);let x;t[18]===n.hotspots.length?x=t[19]:(x=n.hotspots.length?[{id:`hotspots`,label:`The story`}]:[],t[18]=n.hotspots.length,t[19]=x);let S;t[20]===n.incident?S=t[21]:(S=n.incident?[{id:`incident`,label:`Incident`}]:[],t[20]=n.incident,t[21]=S);let C;t[22]===Symbol.for(`react.memo_cache_sentinel`)?(C={id:`read`,label:`Full read`},t[22]=C):C=t[22];let w;t[23]===c?w=t[24]:(w=c?[]:[{id:`gate`,label:`The gate`}],t[23]=c,t[24]=w);let ee;t[25]!==S||t[26]!==w||t[27]!==h||t[28]!==g||t[29]!==_||t[30]!==v||t[31]!==y||t[32]!==b||t[33]!==x?(ee=[...h,...g,..._,...v,...y,...b,...x,...S,C,...w],t[25]=S,t[26]=w,t[27]=h,t[28]=g,t[29]=_,t[30]=v,t[31]=y,t[32]=b,t[33]=x,t[34]=ee):ee=t[34];let T=ee,E;t[35]===u.label?E=t[36]:(E=(0,O.jsx)(`span`,{className:`ripple-verdict-badge`,children:u.label}),t[35]=u.label,t[36]=E);let D;t[37]===d?D=t[38]:(D=(0,O.jsx)(`span`,{className:`ripple-verdict-scale`,children:d}),t[37]=d,t[38]=D);let k;t[39]!==E||t[40]!==D?(k=(0,O.jsxs)(`div`,{className:`ripple-verdict-top`,children:[E,D]}),t[39]=E,t[40]=D,t[41]=k):k=t[41];let A;t[42]===p?A=t[43]:(A=(0,O.jsx)(`p`,{className:`ripple-verdict-what`,children:p}),t[42]=p,t[43]=A);let j;t[44]!==c||t[45]!==m?(j=m?(0,O.jsxs)(`div`,{className:`ripple-verdict-one`,children:[(0,O.jsx)(`span`,{className:`ripple-verdict-one-tag`,children:c?`Where to start`:`The one thing to check`}),(0,O.jsx)(`span`,{className:`ripple-verdict-one-text`,children:m})]}):!c&&(0,O.jsxs)(`div`,{className:`ripple-verdict-one ripple-verdict-clean`,children:[(0,O.jsx)(`span`,{className:`ripple-verdict-one-tag`,children:`Reads clean`}),(0,O.jsx)(`span`,{className:`ripple-verdict-one-text`,children:`Nothing risky pulled to the top — review and ship.`})]}),t[44]=c,t[45]=m,t[46]=j):j=t[46];let M;t[47]!==k||t[48]!==A||t[49]!==j||t[50]!==u.tone?(M=(0,O.jsxs)(`div`,{className:`ripple-verdict-head`,"data-tone":u.tone,children:[k,A,j]}),t[47]=k,t[48]=A,t[49]=j,t[50]=u.tone,t[51]=M):M=t[51];let N;t[52]!==r||t[53]!==n.edges||t[54]!==n.nodes||t[55]!==a?(N=(0,O.jsx)(`div`,{className:`ripple-verdict-map`,children:(0,O.jsx)(te,{nodes:n.nodes,edges:n.edges,altitude:r,onAsk:a,animate:!0})}),t[52]=r,t[53]=n.edges,t[54]=n.nodes,t[55]=a,t[56]=N):N=t[56];let P;t[57]===Symbol.for(`react.memo_cache_sentinel`)?(P=(0,O.jsx)(`span`,{className:`ripple-verdict-chips-tag`,children:`Go deeper`}),t[57]=P):P=t[57];let F;t[58]!==T||t[59]!==i?(F=(0,O.jsxs)(`div`,{className:`ripple-verdict-chips`,"aria-label":`Go deeper`,children:[P,T.map(e=>(0,O.jsx)(`button`,{type:`button`,className:`ripple-verdict-chip`,onClick:()=>i(e.id),children:e.label},e.id))]}),t[58]=T,t[59]=i,t[60]=F):F=t[60];let I;return t[61]!==M||t[62]!==N||t[63]!==F?(I=(0,O.jsxs)(`div`,{className:`ripple-verdict`,children:[M,N,F]}),t[61]=M,t[62]=N,t[63]=F,t[64]=I):I=t[64],I}r();var pe,H=()=>(pe??=s(()=>import(`./generate-8odaTyr4.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9])),pe),me=(...e)=>H().then(t=>t.enrichShipModel(...e)),he=(...e)=>H().then(t=>t.enrichIncident(...e)),ge=(...e)=>H().then(t=>t.enrichOrientation(...e)),_e=(...e)=>H().then(t=>t.enrichCourses(...e)),ve=(...e)=>H().then(t=>t.enrichCourseClosing(...e)),ye=(...e)=>H().then(t=>t.enrichLesson(...e)),be=(...e)=>H().then(t=>t.gatherLessonCode(...e)),xe,U=()=>(xe??=s(()=>import(`./githubBrowser-DywfDeYx.js`).then(e=>e.i),__vite__mapDeps([8,2,3,6,7])),xe),Se=(...e)=>U().then(t=>t.fetchPrDiff(...e)),Ce=(...e)=>U().then(t=>t.compareRefs(...e)),we=(...e)=>U().then(t=>t.fetchRepoTree(...e)),Te,Ee=(...e)=>(Te??=s(()=>import(`./owners-FXDGInVq.js`),__vite__mapDeps([10,8,2,3,6,7])),Te.then(t=>t.resolveOwners(...e))),De,Oe=(...e)=>(De??=s(()=>import(`./codeContext-0UMRSGRr.js`),__vite__mapDeps([11,8,2,3,6,7])),De.then(t=>t.gatherCodeContext(...e))),ke=e=>e?/^([\w.-]+\/[\w.-]+)/.exec(e.trim())?.[1]:void 0,Ae=n(()=>s(()=>import(`./ShipRead--gGqg2SE.js`).then(e=>({default:e.ShipRead})),__vite__mapDeps([12,13,2,14,15,16,17]))),je=n(()=>s(()=>import(`./ShipIncident-BWxerYtX.js`).then(e=>({default:e.ShipIncident})),__vite__mapDeps([18,13,2,14,15,16,17,19]))),Me=n(()=>s(()=>import(`./ShipWorkspace-BmdcHZXa.js`).then(e=>({default:e.ShipWorkspace})),__vite__mapDeps([20,13,2,14,15,16,17,21,22]))),Ne=n(()=>s(()=>import(`./ShipCascade-k_GWrcau.js`).then(e=>({default:e.ShipCascade})),__vite__mapDeps([23,13,2,14,15,16,17,21,24]))),Pe=n(()=>s(()=>import(`./ShipMigration-OgAGEbjm.js`).then(e=>({default:e.ShipMigration})),__vite__mapDeps([25,13,2,14,15,16,17,26]))),Fe=n(()=>s(()=>import(`./ShipRollout-B_U2P8Yw.js`).then(e=>({default:e.ShipRollout})),__vite__mapDeps([27,13,2,14,15,16,17,28]))),Ie=n(()=>s(()=>import(`./ShipCourse-BQOY4MyI.js`).then(e=>({default:e.ShipCourse})),__vite__mapDeps([29,13,2,14,15,16,17,30,6,7,31,32,33,34]))),Le=n(()=>s(()=>import(`./ShipOnboarding-B_2IEq3N.js`).then(e=>({default:e.ShipOnboarding})),__vite__mapDeps([35,13,2,14,15,16,17,36]))),Re=n(()=>s(()=>import(`./ShipHotspots-vLRK0w_b.js`).then(e=>({default:e.ShipHotspots})),__vite__mapDeps([37,13,2,14,15,16,17,38]))),W=n(()=>s(()=>import(`./ShipSuggestions-D9coTmgw.js`).then(e=>({default:e.ShipSuggestions})),__vite__mapDeps([39,13,2,14,15,16,17,40]))),G=n(()=>s(()=>import(`./ShipGate-BYYu9WVq.js`).then(e=>({default:e.ShipGate})),__vite__mapDeps([41,14,2,15,42]))),ze=n(()=>s(()=>import(`./RippleAskController-CK4iSwT0.js`).then(e=>({default:e.RippleAskController})),__vite__mapDeps([43,13,2,14,15,16,17,1,3,4,44,45,8,6,7,31,46]))),Be=ze.Component,Ve=Ae.Component,He=je.Component,Ue=Me.Component,We=Ne.Component,Ge=Pe.Component,Ke=Fe.Component,qe=Ie.Component,Je=Le.Component,Ye=Re.Component,Xe=W.Component,Ze=G.Component,Qe=(e,t)=>`${e}::${t}`;function $e(e){try{return localStorage.getItem(e)}catch{return null}}function et(e,t){try{localStorage.setItem(e,t)}catch{}}var tt=[{id:`newgrad`,label:`New grad`},{id:`working`,label:`Working`},{id:`principal`,label:`Principal`}],nt=new Set([`anthropic`,`openai`,`gemini`,`grok`,`openrouter`]);function rt(e){return{read:Ae.preload,incident:je.preload,workspace:Me.preload,cascade:Ne.preload,migration:Pe.preload,rollout:Fe.preload,course:Ie.preload,onboarding:Le.preload,hotspots:Re.preload,suggestions:W.preload,gate:G.preload}[e]?.()??Promise.resolve()}var it={understand:`Understand`,ship:`Ship the change`},at=e=>e===`course`?`courses`:e===`onboarding`?`orientation`:`verdict`,ot=[{id:`verdict`,label:`Overview`,intent:`The verdict, the one thing to check, and the change rippling out.`,jobs:[`ship`],applies:e=>e.changes.length>0},{id:`read`,label:`Mavéa’s read`,intent:`The whole change in two sentences, risks pulled to the top.`,jobs:[`ship`,`understand`],applies:e=>!!e.pr.summary||e.changes.length>0},{id:`course`,label:`Courses`,intent:`A leveled curriculum built from THIS code — beginner → expert, with checkpoints.`,jobs:[`understand`],applies:(e,t)=>!!e.courses?.length||t.courses===`enriching`||t.hasRepo},{id:`onboarding`,label:`Map & request life`,intent:`The modules, who owns what, and a request’s life through the code.`,jobs:[`understand`],applies:(e,t)=>e.modules.length>0||t.hasRepo},{id:`incident`,label:`Incident`,intent:`A live alert, traced back to its likely cause — the rollback and who to wake.`,jobs:[`ship`,`understand`],applies:e=>!!e.incident},{id:`workspace`,label:`Workspace`,intent:`Pick a change — its diff, intent, and cause & effect assemble.`,jobs:[`ship`],applies:e=>e.changes.length>0},{id:`impact`,label:`Impact map`,intent:`Everything this change touches, and what those changes hit downstream.`,jobs:[`ship`,`understand`],applies:e=>e.nodes.length>0},{id:`cascade`,label:`The cascade`,intent:`How one line becomes a P0 — hop by hop, before anyone gets paged.`,jobs:[`ship`],applies:e=>e.cascades.length>0},{id:`migration`,label:`The migration`,intent:`The cost of a schema change isn’t in the SQL — it’s in the table size.`,jobs:[`ship`],applies:e=>!!e.migration},{id:`rollout`,label:`Safe rollout`,intent:`One safe order — so you ship with your eyes open.`,jobs:[`ship`],applies:e=>e.rollout.length>0},{id:`hotspots`,label:`The story`,intent:`Why a line exists, what it broke, and who to ask.`,jobs:[`understand`],applies:e=>e.hotspots.length>0},{id:`suggestions`,label:`Suggestions`,intent:`The “did you think about X?” a staff engineer would raise — grounded, and rare.`,jobs:[`ship`],applies:e=>e.suggestions.length>0},{id:`gate`,label:`The gate`,intent:`A picture for you, a pre-merge check for the agents.`,jobs:[`ship`],applies:e=>e.changes.length>0}];function st({model:e,cfg:t,speak:n,showcase:r,onClose:a}){let[s,u]=(0,T.useState)(!1),[S,C]=(0,T.useState)(!1),[E,D]=(0,T.useState)(`verdict`),[k,A]=(0,T.useState)(`working`),[j,M]=(0,T.useState)(e),P=(0,T.useRef)(e),[F,I]=(0,T.useState)({verdict:`floor`,orientation:`floor`,courses:`floor`}),L=(0,T.useRef)(0),ne=(0,T.useRef)(null),ie=(0,T.useRef)(null),R=(0,T.useRef)(null),oe=(0,T.useRef)(null),se=(0,T.useRef)(!1),z=(0,T.useRef)(!1),B=(0,T.useRef)(void 0),V=(0,T.useRef)(void 0),de=(0,T.useRef)(void 0),pe=(0,T.useRef)(null),[H,xe]=(0,T.useState)(!1),[U,Te]=(0,T.useState)(!1),[De,Ae]=(0,T.useState)(0),[je,Me]=(0,T.useState)(null),Ne=(0,T.useRef)([]),Pe=(0,T.useRef)(new Map),Fe=(0,T.useRef)(new Map),Ie=(0,T.useCallback)(e=>{Me(t=>({text:e,nonce:(t?.nonce??0)+1})),Te(!0)},[]),Le=(0,T.useMemo)(()=>t?{model:j,cfg:t,altitude:k,diffText:pe.current?.text,repo:B.current,gitRef:V.current,treePaths:Ne.current,lessonDetails:Fe.current,fileCache:Pe.current}:null,[t,j,k]),Re=(0,T.useCallback)(()=>{Ae(e=>e+1),Ne.current=[],Pe.current.clear(),Fe.current.clear()},[]),W=(0,T.useCallback)(()=>{ne.current?.abort(),ie.current?.abort(),R.current?.abort(),oe.current?.abort()},[]);(0,T.useEffect)(()=>W,[W]);let G=(0,T.useRef)(0);(0,T.useEffect)(()=>{M(e),P.current=e,B.current=void 0,se.current=!0,z.current=!0,I({verdict:`done`,orientation:e.modules.length?`done`:`floor`,courses:e.courses?.length?`done`:`floor`})},[e]);let st=(0,T.useRef)(!1);(0,T.useEffect)(()=>{st.current||(st.current=!0,!(!e.provenance.example||r)&&($e(`ripple.seenWorkedExample`)===`1`?(Nt(`github`),Y(!0)):et(`ripple.seenWorkedExample`,`1`)))},[e.provenance.example,r]);let K=(0,T.useMemo)(()=>t&&nt.has(t.provider)?t:{provider:`gemini`,model:`gemini-3.5-flash`,apiKey:``},[t]),q=(0,T.useMemo)(()=>re(K),[K]),[ct,lt]=(0,T.useState)(()=>$e(`ripple.hint.fastModel.dismissed`)===`1`),[ut,dt]=(0,T.useState)(!1),ft=(0,T.useCallback)(()=>{lt(!0),et(`ripple.hint.fastModel.dismissed`,`1`)},[]),pt=(0,T.useCallback)((e,t,n)=>{let r=++L.current;ne.current?.abort();let i=new AbortController;ne.current=i,xe(!1),I(e=>({...e,verdict:`enriching`})),(async()=>{let a=n&&q.fetchCodeContext?await Oe(e,n,void 0,i.signal).catch(()=>``):``;if(i.signal.aborted||L.current!==r)return;let o=await me(e,t,K,{signal:i.signal,codeContext:a||void 0,maxTokens:q.enrichMaxTokens,thinkingLevel:q.thinkingLevel,onPartial:t=>{L.current===r&&M(m(e,t,K.model))}});L.current===r&&(o?(M(o),P.current=o,I(e=>({...e,verdict:`done`}))):(M(e),P.current=e,I(e=>({...e,verdict:`error`}))))})()},[K,q]),mt=(0,T.useCallback)((e,t,n)=>{let r=v(_(e),t);return r.changes.length===0?0:(G.current++,W(),P.current=r,B.current=n,V.current=r.pr.branch||void 0,de.current=void 0,pe.current={text:e,repo:n},se.current=!1,z.current=!1,Re(),M(r),D(`verdict`),dt(!0),I({verdict:`enriching`,orientation:`floor`,courses:`floor`}),pt(r,e,n),r.changes.length)},[W,pt,Re]),ht=(0,T.useCallback)(()=>{let e=pe.current;e&&pt(P.current,e.text,e.repo)},[pt]),gt=(0,T.useCallback)(e=>{let t=P.current;return t.modules.length?t.modules:N(t.changes.map(e=>e.file),e,!1).modules},[]),_t=(0,T.useCallback)((e=!1)=>{let t=B.current;if(!t||se.current&&!e)return;se.current=!0;let n=L.current;ie.current?.abort();let r=new AbortController;ie.current=r,I(e=>({...e,orientation:`enriching`})),(async()=>{let e=await ge({...P.current,modules:gt(t)},t,V.current,K,{signal:r.signal,maxTokens:q.enrichMaxTokens,thinkingLevel:q.thinkingLevel}).catch(()=>null);if(r.signal.aborted||L.current!==n)return;let i=e?await Ee(e,t,V.current,r.signal).catch(()=>e):{...P.current,modules:gt(t)};r.signal.aborted||L.current!==n||(M(e=>({...e,modules:i.modules,nodes:i.nodes,onboarding:i.onboarding})),I(t=>({...t,orientation:e?`done`:`error`})))})()},[K,q,gt]),J=(0,T.useCallback)((e=!1,t)=>{let n=B.current;if(!n||z.current&&!e)return;z.current=!0;let r=L.current;R.current?.abort();let i=new AbortController;R.current=i;let a=setTimeout(()=>i.abort(),9e4);I(e=>({...e,courses:`enriching`})),(async()=>{let o=y(`courses|${n}|${V.current??``}|${t??``}`,K.model),s=e?null:await x(o);if(i.signal.aborted||L.current!==r)return;let c={...P.current,modules:gt(n)},l=s?.courses??await _e(c,n,V.current,K,{signal:i.signal,count:q.courseCount,maxTokens:q.coursesMaxTokens,thinkingLevel:q.thinkingLevel,focus:t}).catch(()=>void 0);if(clearTimeout(a),!(i.signal.aborted||L.current!==r))if(l?.length){M(e=>({...e,courses:l})),I(e=>({...e,courses:`done`}));let e=s?s.commitSha:de.current;s||b(o,{courses:l,commitSha:de.current}),ee(n,{commitSha:e??``,ref:V.current??``,model:K.model,builtAt:Date.now(),courseTitles:l.map(e=>e.title)})}else I(e=>({...e,courses:`error`}))})()},[K,q,gt]),vt=(0,T.useCallback)(()=>J(!0),[J]),[yt,bt]=(0,T.useState)(void 0),xt=(0,T.useCallback)(e=>{bt(e),z.current=!1,J(!0,e)},[J]),St=(0,T.useCallback)((e,t)=>{let n=B.current;return n?Ce(e,t,n):Promise.resolve({ok:!1,detail:`No connected repo.`})},[]),Ct=(0,T.useCallback)(async(e,t,n=!1,r)=>{let i=B.current;if(!i)return null;let{codeContext:a,contentHash:o}=await be(t,V.current,i),s=y(`lesson|${i}|${e.title}|${t.title}|${r??`working`}|${o}`,K.model);if(!n){let n=await x(s);if(n)return Fe.current.set(Qe(e.title,t.title),n),n}let c=await ye(e,t,a,K,{maxTokens:q.lessonMaxTokens,thinkingLevel:q.thinkingLevel,altitude:r}).catch(()=>null);return c&&(b(s,c),Fe.current.set(Qe(e.title,t.title),c)),c},[K,q]),wt=(0,T.useCallback)(async(e,t=!1)=>{let n=B.current;if(!n)return;let r=y(`closing|${n}|${e.title}|${V.current??``}`,K.model);if(!t){let e=await x(r);if(e)return e}let i=new AbortController,a=setTimeout(()=>i.abort(),9e4),o=await ve(e,K,{signal:i.signal,maxTokens:q.closingMaxTokens,thinkingLevel:q.thinkingLevel}).catch(()=>void 0).finally(()=>clearTimeout(a));return o&&b(r,o),o},[K,q]),Tt=(0,T.useCallback)(e=>{D(e);let t=at(e);t===`courses`?J():t===`orientation`&&_t()},[J,_t]),[Et,Y]=(0,T.useState)(!1),[Dt,Ot]=(0,T.useState)(``),[kt,At]=(0,T.useState)(``),jt=(0,T.useCallback)(()=>{let e=Dt.trim();if(!d(e)){At("That doesn’t look like a unified diff — paste the output of `git diff` (or a .diff / .patch file).");return}if(mt(e)===0){At(`No changed files found in that diff.`);return}Y(!1),Ot(``),At(``)},[Dt,mt]),[Mt,Nt]=(0,T.useState)(`github`),[Pt,Ft]=(0,T.useState)(()=>ce()),[It,Lt]=(0,T.useState)(!1),Rt=(0,T.useRef)(void 0),zt=(0,T.useCallback)(()=>{le(j),Lt(!0),window.clearTimeout(Rt.current),Rt.current=window.setTimeout(()=>Lt(!1),1600)},[j]);(0,T.useEffect)(()=>()=>window.clearTimeout(Rt.current),[]);let Bt=(0,T.useCallback)(e=>{Ft(ce()),Nt(e),qt(``),Z(``),ln(``),dn(h()),Y(!0)},[]),[Vt,Ht]=(0,T.useState)(``),[Ut,Wt]=(0,T.useState)(``),Gt=(0,T.useCallback)(()=>{let e=Vt.trim();if(!e){Wt(`Paste the alert, error, or log line that fired.`);return}G.current++;let t=f(e,j.changes.length>0&&!j.provenance.example?j:void 0);if(M(t),D(`incident`),Y(!1),Ht(``),Wt(``),K){oe.current?.abort();let n=new AbortController;oe.current=n,he(t,e,K,n.signal).then(e=>M(n=>n.incident===t.incident?e:n))}},[Vt,j,K]),[Kt,qt]=(0,T.useState)(``),[X,Jt]=(0,T.useState)(``),[Yt,Xt]=(0,T.useState)(``),[Zt,Qt]=(0,T.useState)(``),[$t,en]=(0,T.useState)(``),[tn,nn]=(0,T.useState)(``),[rn,an]=(0,T.useState)(``),[on,Z]=(0,T.useState)(``),[Q,sn]=(0,T.useState)(!1),[cn,ln]=(0,T.useState)(``),[un,dn]=(0,T.useState)(!1),fn=(0,T.useRef)(null);(0,T.useEffect)(()=>()=>fn.current?.abort(),[]);let pn=(0,T.useCallback)(async e=>{let t=G.current;fn.current?.abort();let n=new AbortController;fn.current=n,sn(!0),Z(``);let r=await e(n.signal);if(!(n.signal.aborted||t!==G.current)){if(sn(!1),!r.ok||!r.diff){Z(r.detail);return}if(mt(r.diff,r.label,ke(r.label))===0){Z(`That diff had no changed files to analyze.`);return}Y(!1)}},[mt]),mn=(0,T.useCallback)(()=>{let e=Yt.trim();if(!e){Z(`Enter a pull-request number.`);return}pn(t=>Se(e,X.trim()||void 0,t))},[Yt,X,pn]),hn=(0,T.useCallback)(()=>{let e=Zt.trim(),t=$t.trim();if(!e||!t){Z(`Enter a base and a head ref to compare.`);return}pn(n=>Ce(e,t,X.trim()||void 0,n))},[Zt,$t,X,pn]),gn=(0,T.useCallback)(()=>{let e=cn.trim();e&&p(e).then(e=>{dn(e),ln(``),e&&Z(``)})},[cn]),_n=(0,T.useCallback)(()=>{g().then(()=>{dn(!1),ln(``)})},[]),vn=(0,T.useCallback)(async(e,t,n)=>{let r=(e??X).trim()||void 0,i=(t??tn).trim()||void 0,a=(n??rn).trim(),o=G.current;fn.current?.abort();let s=new AbortController;fn.current=s,sn(!0),Z(``);let c=await we(i,r,s.signal);if(s.signal.aborted||o!==G.current)return;if(sn(!1),!c.ok||!c.paths){Z(c.detail);return}let l=a.replace(/^\/+|\/+$/g,``),u=l?c.paths.filter(e=>e===l||e.startsWith(l+`/`)):c.paths;if(u.length===0){Z(`No files under “${l}”.`);return}let d=N(u,l?`${c.label??`repo`}/${l}`:c.label??`repo`,c.truncated),f=ke(c.label),p=i,m=f?!!w(f):!1;G.current++,W(),++L.current,P.current=d,B.current=f,V.current=p,de.current=c.sha,pe.current=null,se.current=!1,z.current=!1,Re(),Ne.current=u,M(d),D(m?`course`:`onboarding`),dt(!0),Y(!1),I({verdict:`done`,orientation:`floor`,courses:`floor`}),f&&(_t(),m&&J())},[tn,X,rn,W,_t,J,Re]),yn=(0,T.useCallback)(()=>{let e=ae(Kt,X.trim()||void 0);if(e.kind===`invalid`){Z(e.reason);return}if(Z(``),e.kind===`pr`)pn(t=>Se(e.prNumber,e.repo,t));else if(e.kind===`compare`)pn(t=>Ce(e.base,e.head,e.repo,t));else{let t=e.kind===`tree`?e.ref:void 0,n=e.kind===`tree`?e.path:void 0;vn(e.repo,t,n)}},[Kt,X,pn,vn]),bn=j.changes.length>0?`ship`:`understand`,xn=(0,T.useMemo)(()=>{let e={orientation:F.orientation,courses:F.courses,hasRepo:!!B.current},t=ot.filter(t=>t.applies(j,e)),n=bn===`ship`?`understand`:`ship`,r=t.filter(e=>e.jobs.includes(bn)),i=t.filter(e=>!e.jobs.includes(bn)&&e.jobs.includes(n));return[{job:bn,items:r},{job:n,items:i}].filter(e=>e.items.length>0)},[j,F.orientation,F.courses,bn]),Sn=(0,T.useMemo)(()=>xn.flatMap(e=>e.items),[xn]);(0,T.useEffect)(()=>{Sn.length&&!Sn.some(e=>e.id===E)&&D(Sn[0].id)},[Sn,E]);let Cn=(0,T.useCallback)(e=>{S&&n&&n(`${e.label}. ${e.problem??e.contract??``} ${e.fix??``}`.trim()),Ie(`Explain ${e.label}${e.contract?` — ${e.contract}`:``}`)},[S,n,Ie]),wn=(0,T.useCallback)(e=>{let t=j;switch(e){case`verdict`:return t.pr.summary;case`read`:return t.pr.summary;case`incident`:return t.incident?`${t.incident.symptom}. ${t.incident.rootCause}`:``;case`workspace`:return`Here are all ${t.changes.length} changes, grouped by subsystem. Pick one to see its diff and what it touches.`;case`impact`:{let e=t.nodes.filter(e=>e.status===`breaks`).length;return e?`Everything this change touches. ${e} of these break — the coral lines are where.`:`Everything this change touches. Nothing breaks downstream.`}case`cascade`:{let e=t.cascades[0];return e?`Watch how one line becomes a ${e.incidentSeverity}: ${e.trigger}, and ${e.incident}.`:``}case`migration`:return t.migration?`The migration looks harmless, but on ${t.migration.rows} rows it costs ${t.migration.lockCost}.`:``;case`rollout`:return`Ship in this order and the change never breaks a caller mid-rollout.`;case`course`:return t.courses?.length?`A guided curriculum — ${t.courses.length} ${t.courses.length===1?`course`:`courses`} that take you from oriented to fearless, built from this code.`:`A leveled course, built from this code, so you can change it without fear.`;case`onboarding`:return`Understand the whole service — module by module, and a request's life through it.`;case`hotspots`:return`The story behind the lines worth knowing before you touch them.`;case`suggestions`:return`${t.suggestions.length} things worth your time. ${t.suppressedNits} shallow nits suppressed.`;case`gate`:return t.gate.rationale;default:return``}},[j]);(0,T.useEffect)(()=>{let e=e=>{e.key===`Escape`&&a()};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[a]);let Tn=(0,T.useRef)(null);c(Tn);let $=j.pr,En=j.provenance.example,Dn=(0,T.useCallback)(()=>{switch(E){case`verdict`:return(0,O.jsx)(fe,{model:j,altitude:k,onNavigate:e=>Tt(e),onAsk:Cn});case`read`:return(0,O.jsx)(Ve,{model:j,altitude:k});case`incident`:return(0,O.jsx)(He,{model:j,altitude:k});case`impact`:return(0,O.jsx)(te,{nodes:j.nodes,edges:j.edges,altitude:k,onAsk:Cn});case`workspace`:return(0,O.jsx)(Ue,{model:j,altitude:k});case`cascade`:return(0,O.jsx)(We,{model:j});case`migration`:return(0,O.jsx)(Ge,{model:j,altitude:k});case`rollout`:return(0,O.jsx)(Ke,{model:j,altitude:k});case`course`:return(0,O.jsx)(qe,{model:j,altitude:k,building:F.courses===`enriching`,onRegenerate:B.current?vt:void 0,loadLessonDetail:B.current?Ct:void 0,loadCourseClosing:B.current?wt:void 0,courseFocus:yt,onCourseFocus:B.current?xt:void 0,speak:S?n:void 0,commitSha:B.current?de.current:void 0,compareSinceBuilt:B.current?St:void 0,openFullAnalysis:B.current?mt:void 0,onAskAboutLesson:Ie});case`onboarding`:return(0,O.jsx)(Je,{model:j,altitude:k});case`hotspots`:return(0,O.jsx)(Ye,{model:j,altitude:k});case`suggestions`:return(0,O.jsx)(Xe,{model:j,altitude:k});case`gate`:return(0,O.jsx)(Ze,{model:j,altitude:k});default:throw Error(`Ripple: no section renderer for "${E}"`)}},[E,j,k,Cn,Tt,F.courses,vt,Ct,wt,yt,xt,St,mt,S,n,Ie]);return(0,O.jsx)(`div`,{className:`ripple-scrim`,"data-expanded":s?`true`:void 0,onClick:a,role:`button`,tabIndex:0,"aria-label":`Close Ripple`,onKeyDown:e=>{e.key!==`Enter`&&e.key!==` `||(e.preventDefault(),a())},children:(0,O.jsxs)(`section`,{className:`ripple-panel`,role:`dialog`,"aria-label":`Ripple`,ref:Tn,onClick:e=>e.stopPropagation(),children:[(0,O.jsxs)(`header`,{className:`ripple-head`,children:[(0,O.jsxs)(`div`,{className:`ripple-id`,children:[(0,O.jsx)(`span`,{className:`ripple-word`,children:`Ripple`}),(0,O.jsx)(`span`,{className:`ripple-sep`,"aria-hidden":`true`}),(0,O.jsx)(`span`,{className:`ripple-repo`,children:$.repo}),$.number&&(0,O.jsx)(`span`,{className:`ripple-pr`,children:$.number}),$.branch&&(0,O.jsxs)(`span`,{className:`ripple-branch`,children:[$.branch,$.base?` → ${$.base}`:``]})]}),(0,O.jsxs)(`div`,{className:`ripple-head-right`,children:[($.added!=null||$.removed!=null)&&(0,O.jsxs)(`span`,{className:`ripple-stat`,children:[$.added!=null&&(0,O.jsxs)(`span`,{className:`ripple-add`,children:[`+`,$.added.toLocaleString()]}),` `,$.removed!=null&&(0,O.jsxs)(`span`,{className:`ripple-del`,children:[`−`,$.removed.toLocaleString()]}),$.files==null?``:` · ${$.files} files`]}),$.p0Ways?(0,O.jsxs)(`span`,{className:`ripple-p0`,title:`Ways this change could cause a P0`,children:[(0,O.jsx)(`span`,{className:`ripple-p0-dot`,"aria-hidden":`true`}),$.p0Ways,` `,$.p0Ways===1?`way`:`ways`,` to cause a P0`]}):null,!En&&(0,O.jsx)(`button`,{type:`button`,className:`ripple-track-btn`,onClick:zt,title:`Keep an eye on this change — saved on this device`,children:It?`Tracked ✓`:`☆ Track`}),(0,O.jsx)(`button`,{type:`button`,className:`ripple-ask-toggle`+(U?` is-active`:``),onClick:()=>Te(e=>!e),...i(ze.preload),"aria-pressed":U,"aria-label":U?`Close the ask rail`:`Ask about this repo or PR`,title:U?`Hide ask`:`Ask about this repo or PR`,children:`Ask`}),n&&(0,O.jsx)(`button`,{type:`button`,className:`ripple-iconbtn`,onClick:()=>C(e=>!e),"aria-pressed":S,"aria-label":S?`Turn narration off`:`Turn narration on`,title:S?`Narration on — the orb speaks the walkthrough`:`Narration off`,children:S?`🔊`:`🔇`}),(0,O.jsx)(`button`,{type:`button`,className:`ripple-iconbtn`,onClick:()=>u(e=>!e),"aria-label":s?`Exit full screen`:`Expand to full screen`,title:s?`Exit full screen`:`Full screen`,children:s?`⤡`:`⤢`}),(0,O.jsx)(`button`,{type:`button`,className:`ripple-iconbtn`,onClick:a,"aria-label":`Close Ripple`,children:`✕`})]})]}),q.tier===`slow-cheap`&&ut&&!ct&&(0,O.jsxs)(`div`,{className:`ripple-hint`,role:`note`,children:[(0,O.jsx)(`span`,{className:`ripple-hint-text`,children:`Tip: a flash or lite model makes Ripple feel instant — your model still works, it’s just slower here.`}),(0,O.jsx)(`button`,{type:`button`,className:`ripple-hint-dismiss`,onClick:ft,"aria-label":`Dismiss tip`,children:`Got it`})]}),(En||(j.provenance.notes?.length??0)>0)&&(0,O.jsxs)(`div`,{className:`ripple-example`,"data-real":En?void 0:`true`,role:`note`,children:[(0,O.jsx)(`span`,{className:`ripple-example-dot`,"aria-hidden":`true`}),(0,O.jsx)(`span`,{className:`ripple-example-text`,children:En?(0,O.jsxs)(O.Fragment,{children:[(0,O.jsx)(`strong`,{children:`Worked example`}),` — a sample of a GitHub-connected analysis, not your code. It shows only what GitHub gives us (diff, files, in-repo callers).`]}):(0,O.jsxs)(O.Fragment,{children:[(0,O.jsx)(`strong`,{children:j.changes.length===0?`Exploring`:`From your diff`}),` —`,` `,j.provenance.notes?.[0]]})}),(0,O.jsx)(`button`,{type:`button`,className:`ripple-example-cta`,onClick:()=>Bt(`github`),children:En?`Run on your own code →`:`New`})]}),(0,O.jsxs)(`div`,{className:`ripple-body`,children:[(0,O.jsxs)(`nav`,{className:`ripple-rail`,"aria-label":`Sections`,children:[xn.map(e=>(0,O.jsxs)(`div`,{className:`ripple-rail-group`,children:[xn.length>1&&(0,O.jsx)(`div`,{className:`ripple-rail-grouplabel`,children:it[e.job]}),e.items.map(e=>(0,O.jsxs)(`button`,{type:`button`,className:`ripple-rail-item`,"data-ripple-section":e.id,"data-active":e.id===E?`true`:void 0,"data-enriching":F[at(e.id)]===`enriching`?`true`:void 0,onClick:()=>{if(Tt(e.id),S&&n){let t=wn(e.id);t&&n(t)}},...i(()=>rt(e.id)),children:[(0,O.jsx)(`span`,{className:`ripple-rail-label`,children:e.label}),F[at(e.id)]===`enriching`&&(0,O.jsx)(`span`,{className:`ripple-rail-spark`,"aria-hidden":`true`})]},e.id))]},e.job)),(0,O.jsxs)(`div`,{className:`ripple-rail-altitude`,children:[(0,O.jsx)(`div`,{className:`ripple-eyebrow`,children:`Explain for`}),(0,O.jsx)(`div`,{className:`ripple-alt`,role:`group`,"aria-label":`Explanation altitude`,children:tt.map(e=>(0,O.jsx)(`button`,{type:`button`,"data-active":k===e.id?`true`:void 0,onClick:()=>A(e.id),children:e.label},e.id))})]})]}),(0,O.jsxs)(`div`,{className:`ripple-main`,children:[F[at(E)]===`enriching`&&at(E)!==`courses`&&(0,O.jsxs)(`div`,{className:`ripple-sharpening-wrap`,children:[(0,O.jsxs)(`div`,{className:`ripple-sharpening`,role:`status`,"aria-live":`polite`,children:[(0,O.jsx)(`span`,{className:`ripple-sharpening-dot`,"aria-hidden":`true`}),at(E)===`orientation`?`Reading the repo to map it out…`:`Sharpening with the model’s read…`]}),(0,O.jsx)(`div`,{className:`ripple-progress`,"aria-hidden":`true`})]}),at(E)===`verdict`&&F.verdict===`error`&&!H&&(0,O.jsxs)(`div`,{className:`ripple-verdict-err`,role:`note`,children:[(0,O.jsx)(`span`,{className:`ripple-verdict-err-text`,children:`The model’s read didn’t land — showing the grounded floor. Connect a key in Settings → Live, or try again.`}),(0,O.jsxs)(`div`,{className:`ripple-verdict-err-actions`,children:[(0,O.jsx)(`button`,{type:`button`,className:`ripple-verdict-err-retry`,onClick:ht,children:`Try again`}),(0,O.jsx)(`button`,{type:`button`,className:`ripple-verdict-err-dismiss`,onClick:()=>xe(!0),"aria-label":`Dismiss`,children:`Dismiss`})]})]}),(0,O.jsx)(o,{label:`${ot.find(e=>e.id===E)?.label??`Ripple`} section`,children:Dn()})]}),U&&(0,O.jsx)(o,{label:`Ripple ask rail`,children:(0,O.jsx)(Be,{ctx:Le,onClose:()=>Te(!1),altitude:k,seed:je,repo:$.repo||``,gitRef:$.branch||`HEAD`,focusFile:j.changes[0]?.file??j.modules[0]?.entry},De)})]}),Et&&(0,O.jsx)(`div`,{className:`ripple-paste`,role:`dialog`,"aria-label":`Run Ripple on a diff`,children:(0,O.jsxs)(`div`,{className:`ripple-paste-card`,children:[(0,O.jsxs)(`div`,{className:`ripple-paste-head`,children:[(0,O.jsxs)(`div`,{children:[(0,O.jsx)(`div`,{className:`ripple-paste-title`,children:`Run Ripple on your code`}),(0,O.jsx)(`div`,{className:`ripple-paste-sub`,children:`Read-only — Ripple analyzes a change and never writes, comments, or merges.`})]}),(0,O.jsx)(`button`,{type:`button`,className:`ripple-iconbtn`,onClick:()=>Y(!1),"aria-label":`Cancel`,children:`✕`})]}),(0,O.jsx)(l,{kind:`code`,from:`live`}),Mt===`incident`?(0,O.jsxs)(O.Fragment,{children:[(0,O.jsx)(`textarea`,{className:`ripple-paste-input`,value:Vt,onChange:e=>{Ht(e.target.value),Ut&&Wt(``)},placeholder:`PagerDuty: [payments-api] P1 — 5xx rate 38% on /charge
3
- or paste the error / log line that fired`,spellCheck:!1}),Ut&&(0,O.jsx)(`div`,{className:`ripple-paste-err`,children:Ut}),(0,O.jsxs)(`div`,{className:`ripple-paste-actions`,children:[(0,O.jsx)(`button`,{type:`button`,className:`ripple-paste-go`,onClick:Gt,children:`Trace it back`}),(0,O.jsx)(`button`,{type:`button`,className:`ripple-paste-cancel`,onClick:()=>Y(!1),children:`Cancel`})]}),(0,O.jsx)(`div`,{className:`ripple-paste-hint`,children:`Ripple traces the alert back to its likely cause — read-only. If a change is open, the trace grounds in it. It never reverts, deploys, or pages anyone.`})]}):Mt===`tracked`?(0,O.jsx)(`div`,{className:`ripple-tracked`,children:Pt.length===0?(0,O.jsxs)(`div`,{className:`ripple-tracked-empty`,children:[`Nothing tracked yet. Open a change and hit `,(0,O.jsx)(`strong`,{children:`☆ Track`}),` to keep an eye on it — it’s saved on this device only.`]}):Pt.map(e=>(0,O.jsxs)(`div`,{className:`ripple-tracked-row`,children:[(0,O.jsxs)(`button`,{type:`button`,className:`ripple-tracked-open`,onClick:()=>{M(e.model),D(`verdict`),Y(!1)},children:[(0,O.jsx)(`span`,{className:`ripple-tracked-label`,children:e.label}),(0,O.jsxs)(`span`,{className:`ripple-tracked-meta`,children:[e.source,` · `,e.model.changes.length||e.model.modules.length,` items`]})]}),(0,O.jsx)(`button`,{type:`button`,className:`ripple-iconbtn`,"aria-label":`Untrack ${e.label}`,onClick:()=>{ue(e.id),Ft(ce())},children:`✕`})]},e.id))}):Mt===`paste`?(0,O.jsxs)(O.Fragment,{children:[(0,O.jsx)(`textarea`,{className:`ripple-paste-input`,value:Dt,onChange:e=>{Ot(e.target.value),kt&&At(``)},placeholder:`diff --git a/auth/token.ts b/auth/token.ts
4
- @@ -42 +42 @@
5
- -validateToken(t: string)
6
- +validateToken(t: string, opts: VerifyOpts)`,spellCheck:!1}),kt&&(0,O.jsx)(`div`,{className:`ripple-paste-err`,children:kt}),(0,O.jsxs)(`div`,{className:`ripple-paste-actions`,children:[(0,O.jsx)(`button`,{type:`button`,className:`ripple-paste-go`,onClick:jt,children:`Analyze diff`}),(0,O.jsx)(`button`,{type:`button`,className:`ripple-paste-cancel`,onClick:()=>Y(!1),children:`Cancel`})]}),(0,O.jsx)(`div`,{className:`ripple-paste-hint`,children:`Parsed on your device first. The deterministic floor stays local; optional model enrichment sends relevant diff and code context through this deployment to your selected model.`})]}):(0,O.jsxs)(`div`,{className:`ripple-gh`,children:[(0,O.jsxs)(`label`,{className:`ripple-gh-field`,children:[(0,O.jsxs)(`span`,{children:[`Paste a GitHub link`,X.trim()?(0,O.jsxs)(`em`,{children:[` — or a PR number for `,X.trim()]}):null]}),(0,O.jsx)(`input`,{value:Kt,onChange:e=>{qt(e.target.value),on&&Z(``)},onKeyDown:e=>{e.key===`Enter`&&yn()},placeholder:`github.com/owner/repo/pull/482 · owner/repo · a compare URL`,spellCheck:!1})]}),(0,O.jsxs)(`div`,{className:`ripple-paste-actions`,children:[(0,O.jsx)(`button`,{type:`button`,className:`ripple-paste-go`,disabled:Q,onClick:yn,children:Q?`Loading…`:`Analyze`}),(0,O.jsx)(`button`,{type:`button`,className:`ripple-paste-cancel`,onClick:()=>Y(!1),children:`Cancel`})]}),on&&(0,O.jsx)(`div`,{className:`ripple-paste-err`,children:on}),(0,O.jsx)(`div`,{className:`ripple-paste-hint`,children:`Read-only — Ripple reads the diff, files, and in-repo callers of a PR, branch, or repo. It never comments, approves, or merges. Public repos need nothing.`}),(0,O.jsxs)(`div`,{className:`ripple-gh-token`,children:[(0,O.jsxs)(`div`,{className:`ripple-gh-row`,children:[(0,O.jsxs)(`label`,{className:`ripple-gh-field ripple-gh-grow`,children:[(0,O.jsxs)(`span`,{children:[`GitHub token `,(0,O.jsx)(`em`,{children:`— only for private repos`})]}),(0,O.jsx)(`input`,{type:`password`,value:cn,onChange:e=>ln(e.target.value),onKeyDown:e=>{e.key===`Enter`&&cn.trim()&&gn()},placeholder:un?`Saved on this device — paste a new token to replace it`:`github_pat_… or ghp_… (optional)`,autoComplete:`off`,spellCheck:!1})]}),(0,O.jsx)(`button`,{type:`button`,className:`ripple-paste-go`,disabled:!cn.trim(),onClick:gn,children:`Save`}),un&&(0,O.jsx)(`button`,{type:`button`,className:`ripple-paste-cancel`,onClick:_n,children:`Remove`})]}),(0,O.jsx)(`div`,{className:`ripple-paste-hint`,children:`Stored encrypted in this browser and sent directly by the browser to api.github.com for read requests. The token itself is not included in model prompts. Use it only on a trusted device.`}),(0,O.jsxs)(`div`,{className:`ripple-paste-hint`,children:[`Best: a `,(0,O.jsx)(`strong`,{children:`fine-grained`}),` token with`,` `,(0,O.jsx)(`strong`,{children:`Contents: read-only`}),`, scoped to the repos you want — one token covers every repo it’s granted. A classic `,(0,O.jsx)(`code`,{children:`repo`}),`-scoped token reaches all of your private repos.`]})]}),(0,O.jsxs)(`details`,{className:`ripple-gh-adv`,children:[(0,O.jsx)(`summary`,{children:`Advanced — exact PR #, compare refs, or a folder`}),(0,O.jsxs)(`label`,{className:`ripple-gh-field`,children:[(0,O.jsxs)(`span`,{children:[`Repository `,(0,O.jsx)(`em`,{children:`— or paste a full GitHub link above`})]}),(0,O.jsx)(`input`,{value:X,onChange:e=>Jt(e.target.value),placeholder:`owner/repo`,spellCheck:!1})]}),(0,O.jsxs)(`div`,{className:`ripple-gh-row`,children:[(0,O.jsxs)(`label`,{className:`ripple-gh-field ripple-gh-grow`,children:[(0,O.jsx)(`span`,{children:`Pull request #`}),(0,O.jsx)(`input`,{value:Yt,onChange:e=>{Xt(e.target.value),on&&Z(``)},placeholder:`4821`,spellCheck:!1})]}),(0,O.jsx)(`button`,{type:`button`,className:`ripple-paste-go`,disabled:Q,onClick:mn,children:Q?`Loading…`:`Load PR`})]}),(0,O.jsx)(`div`,{className:`ripple-gh-or`,children:`or compare two refs (branch · tag · SHA)`}),(0,O.jsxs)(`div`,{className:`ripple-gh-row`,children:[(0,O.jsxs)(`label`,{className:`ripple-gh-field ripple-gh-grow`,children:[(0,O.jsx)(`span`,{children:`Base`}),(0,O.jsx)(`input`,{value:Zt,onChange:e=>Qt(e.target.value),placeholder:`main`,spellCheck:!1})]}),(0,O.jsxs)(`label`,{className:`ripple-gh-field ripple-gh-grow`,children:[(0,O.jsx)(`span`,{children:`Head`}),(0,O.jsx)(`input`,{value:$t,onChange:e=>en(e.target.value),placeholder:`feat/short-lived-tokens`,spellCheck:!1})]}),(0,O.jsx)(`button`,{type:`button`,className:`ripple-paste-go`,disabled:Q,onClick:hn,children:Q?`Loading…`:`Compare`})]}),(0,O.jsx)(`div`,{className:`ripple-gh-or`,children:`or explore the whole repo (or a folder) — no change`}),(0,O.jsxs)(`div`,{className:`ripple-gh-row`,children:[(0,O.jsxs)(`label`,{className:`ripple-gh-field ripple-gh-grow`,children:[(0,O.jsxs)(`span`,{children:[`Ref `,(0,O.jsx)(`em`,{children:`— branch / tag / SHA, defaults to HEAD`})]}),(0,O.jsx)(`input`,{value:tn,onChange:e=>nn(e.target.value),placeholder:`main`,spellCheck:!1})]}),(0,O.jsxs)(`label`,{className:`ripple-gh-field ripple-gh-grow`,children:[(0,O.jsxs)(`span`,{children:[`Folder `,(0,O.jsx)(`em`,{children:`— optional path`})]}),(0,O.jsx)(`input`,{value:rn,onChange:e=>an(e.target.value),placeholder:`src/auth`,spellCheck:!1})]}),(0,O.jsx)(`button`,{type:`button`,className:`ripple-paste-go`,disabled:Q,onClick:()=>void vn(),children:Q?`Loading…`:`Explore`})]})]})]})]})})]})})}export{st as RippleOverlay};
@@ -1 +0,0 @@
1
- import{t as e}from"./react-BQSORdFI.js";import{t}from"./jsx-runtime-DaSxXjOY.js";import{dt as n,ht as r,ut as i}from"./index-C7H7A1rW.js";var a=r(),o=e(),s=t(),c=[{w:`100%`},{w:`94%`,data:!0},{w:`97%`},{w:`88%`,data:!0},{w:`100%`},{w:`91%`,data:!0},{w:`96%`},{w:`70%`,data:!0},{w:`82%`}],l=[`42%`,`54%`,`48%`,`70%`,`100%`];function u(e,t,n,r){let i=(0,a.c)(6),[s,c]=(0,o.useState)(0),l,u;return i[0]!==r||i[1]!==t||i[2]!==n||i[3]!==e?(l=()=>{if(!r)return;if(window.matchMedia?.(`(prefers-reduced-motion: reduce)`).matches||document.documentElement.dataset.perf===`lite`){c(e);return}let i=0,a=0,o=t=>{a||=t;let r=Math.min(1,(t-a)/n);c(e*(1-(1-r)**3)),r<1&&(i=requestAnimationFrame(o))},s=window.setTimeout(()=>{i=requestAnimationFrame(o)},t);return()=>{clearTimeout(s),cancelAnimationFrame(i)}},u=[r,e,t,n],i[0]=r,i[1]=t,i[2]=n,i[3]=e,i[4]=l,i[5]=u):(l=i[4],u=i[5]),(0,o.useEffect)(l,u),s}function d(){let[e,t]=n({threshold:.3,nearestScrollRoot:!0}),r=u(23.8,1100,900,t);return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(i,{eyebrow:`Why it feels different`,children:[`Stop reading paragraphs.`,(0,s.jsx)(`br`,{}),(0,s.jsx)(`em`,{className:`fl-grad`,children:`Start seeing answers.`})]}),(0,s.jsxs)(`div`,{className:`fl-compare`+(t?` sd-play`:``),ref:e,children:[(0,s.jsxs)(`div`,{className:`fl-compare-wall`,children:[(0,s.jsx)(`div`,{className:`fl-compare-label`,children:`The usual answer · a wall of text`}),(0,s.jsx)(`div`,{className:`fl-wall-lines`,children:c.map((e,t)=>(0,s.jsx)(`div`,{className:`fl-wall-line`+(e.data?` data`:``),style:{width:e.w,"--wl-i":String(t)}},t))}),(0,s.jsx)(`div`,{className:`fl-compare-hand`,children:`…still reading?`})]}),(0,s.jsxs)(`div`,{className:`fl-compare-seen`,children:[(0,s.jsx)(`div`,{className:`fl-compare-label accent`,children:`Mavéa · the same answer, seen`}),(0,s.jsxs)(`div`,{className:`fl-seen-stat`,children:[(0,s.jsxs)(`span`,{className:`fl-seen-num`,children:[`$`,r.toFixed(1),`M`]}),(0,s.jsx)(`span`,{className:`fl-seen-delta`,children:`▲ 18%`})]}),(0,s.jsx)(`div`,{className:`fl-seen-cap`,children:`Q3 revenue · best quarter on record`}),(0,s.jsx)(`div`,{className:`fl-seen-bars`,children:l.map((e,t)=>(0,s.jsx)(`div`,{className:`fl-seen-bar`+(e===`100%`?` peak`:``),style:{"--h":e,"--sb-i":String(t)}},t))}),(0,s.jsx)(`div`,{className:`fl-seen-note`,children:`Illustrative numbers`})]})]})]})}export{d as SeeDontRead};
@@ -1,32 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/src-B-t8Mww-.js","assets/chunk-BVpWp9h4.js","assets/__vite-browser-external-BufR4LQa.js","assets/providers-wzm7E8Pa.js","assets/http-CJCtjYpA.js","assets/info-CiqHR5cs.js"])))=>i.map(i=>d[i]);
2
- import{r as e}from"./chunk-BVpWp9h4.js";import{t}from"./react-BQSORdFI.js";import{t as n}from"./jsx-runtime-DaSxXjOY.js";import{J as r,L as i,c as a,ht as o,q as s}from"./index-C7H7A1rW.js";import{n as c}from"./icons-CHVz6kv_.js";import{t as l}from"./useFocusTrap-DbfG6zbM.js";import{C as u,r as d,x as f}from"./kokoro-kGWf7M0e.js";import{n as p,r as m}from"./spokenText-D4zPX9JY.js";import{n as h,t as g}from"./share-QHGHNDhQ.js";import{t as _}from"./toast-BBNs2h3L.js";import{C as v,D as y,E as b,T as x,a as S,i as C,n as w,o as T,r as E,s as ee,t as D,w as O}from"./registry-B51MhOLx.js";import{t as k}from"./ReelJelly-DCD4bG10.js";import{t as A}from"./threads-CkMgrSDP.js";import{t as te}from"./FeatureUseNotice-CoK5HkbR.js";var j=t(),M=24e3,N=.15,P=.18,F=240,ne=.008,I=.89,L=6;async function R(e,t,n){let r=f(e).trim().slice(0,F);if(!r)return new Float32Array;for(let e=0;e<2;e++)try{let e=await fetch(`/tts/v1/audio/speech`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({model:`kokoro`,input:r,voice:t,response_format:`pcm`,speed:1}),signal:n});if(e.ok)return u(new Uint8Array(await e.arrayBuffer()),null).samples}catch{if(n?.aborted)return new Float32Array}return new Float32Array}async function re(e,t){let n=e.slides,r=n.map(e=>Math.max(800,Math.round(e.durationMs))),i=a();if(!i||typeof OfflineAudioContext>`u`)return{buffer:null,timings:r,missing:0};let o=d(`mavea`),s=await Promise.all(n.map(e=>R(e.voiceover,o,t))),c=n.filter(e=>e.voiceover.trim()).length,l=s.filter(e=>e.length>0).length,u=Math.max(0,c-l);if(l===0)return{buffer:null,timings:r,missing:u};let f=n.map((e,t)=>{let n=s[t].length/M*1e3;return Math.round(n>0?Math.max(r[t],n+P*1e3):r[t])}),p=0;for(let e of s)for(let t=0;t<e.length;t++)p=Math.max(p,Math.abs(e[t]));let m=p>0?Math.min(L,I/p):1,h=i.sampleRate,g=.65+f.reduce((e,t)=>e+t/1e3,0),_=new OfflineAudioContext(1,Math.ceil(g*h),h),v=_.createGain();v.gain.value=m,v.connect(_.destination);let y=N;return f.forEach((e,t)=>{let n=s[t];if(n.length){let e=_.createBuffer(1,n.length,M);e.getChannelData(0).set(n);let t=_.createBufferSource();t.buffer=e;let r=_.createGain(),i=n.length/M,a=Math.min(ne,i/2);r.gain.setValueAtTime(0,y),r.gain.linearRampToValueAtTime(1,y+a),r.gain.setValueAtTime(1,y+i-a),r.gain.linearRampToValueAtTime(0,y+i),t.connect(r).connect(v),t.start(y)}y+=e/1e3}),{buffer:await _.startRendering(),timings:f,missing:u}}function z(e){let t=a();if(!t||typeof t.createMediaStreamDestination!=`function`)return null;let n=t.createMediaStreamDestination(),r=t.createBufferSource();r.buffer=e,r.connect(n);let i=!1;return{stream:n.stream,start(){i||(i=!0,t.state!==`running`&&t.resume().catch(()=>{}),r.start())},stop(){try{r.stop()}catch{}try{r.disconnect()}catch{}}}}function B(e,t,n){return t+Math.max(0,n-e)}function V(e,t){return!Number.isFinite(t)||t<=0||e>=t?null:Math.max(0,e)}function ie(e){let t=a();if(!t)return null;let n=t.createGain();n.connect(t.destination);let r=null,i=0,o=0,s=!1,c=()=>{try{r?.stop(),r?.disconnect()}catch{}r=null},l=a=>{c(),r=t.createBufferSource(),r.buffer=e,r.connect(n),r.start(0,a),i=a,o=t.currentTime,s=!1};return{play(){t.state!==`running`&&t.resume().catch(()=>{}),l(0)},setMuted(e){n.gain.value=+!e},pause(){s||!r||(i=Math.min(e.duration,B(o,i,t.currentTime)),c(),s=!0)},resume(){if(!s)return;s=!1;let n=V(i,e.duration);n!==null&&(t.state!==`running`&&t.resume().catch(()=>{}),l(n))},stop(){c();try{n.disconnect()}catch{}}}}r();var H={balanced:{fps:30,bitrate:6e6},high:{fps:30,bitrate:1e7},ultra:{fps:60,bitrate:16e6}};function ae(e){let{fps:t,bitrate:n}=H[e];return`up to ${t} fps · ${Math.round(n/1e6)} Mbps`}async function U(){try{let{Output:e,Mp4OutputFormat:t,BufferTarget:n,CanvasSource:r,AudioBufferSource:i,canEncodeVideo:a}=await s(async()=>{let{Output:e,Mp4OutputFormat:t,BufferTarget:n,CanvasSource:r,AudioBufferSource:i,canEncodeVideo:a}=await import(`./src-B-t8Mww-.js`);return{Output:e,Mp4OutputFormat:t,BufferTarget:n,CanvasSource:r,AudioBufferSource:i,canEncodeVideo:a}},__vite__mapDeps([0,1,2]));return{Output:e,Mp4OutputFormat:t,BufferTarget:n,CanvasSource:r,AudioBufferSource:i,canEncodeVideo:a}}catch{return null}}async function W(){try{return await s(()=>import(`./dist-xRGLOZwv.js`),[])}catch{return null}}var G={"9:16":{w:1080,h:1920},"1:1":{w:1080,h:1080},"16:9":{w:1920,h:1080}};function oe(){if(typeof document>`u`)return!1;let e=typeof MediaRecorder<`u`,t=typeof VideoEncoder<`u`&&globalThis.AudioEncoder!==void 0;return e||t}async function se(e){let t=H[e.quality??`high`],n=e.fps??t.fps,{w:r,h:i}=G[e.aspect],a=await W();if(!a)throw Error(`rasterizer-unavailable`);let o=e.el.clientWidth||r,s=Math.min(3,Math.max(1,r/o)),c=0,l=0,u=document.createElement(`canvas`);u.width=r,u.height=i;let d=u.getContext(`2d`,{alpha:!1});d.fillStyle=`#05070c`,d.fillRect(0,0,r,i);let f=document.createElement(`canvas`);f.width=Math.round(r/2),f.height=Math.round(i/2);let p=f.getContext(`2d`),m=!1,h=()=>{p&&(p.drawImage(u,0,0,f.width,f.height),m=!0)},g=()=>new Blob([],{type:`image/png`}),_=async()=>(!m&&c>0&&h(),m?await new Promise(e=>f.toBlob(e,`image/png`))??g():g()),v=async()=>{let t;try{t=await a.domToCanvas(e.el,{scale:s,backgroundColor:`#05070c`})}catch{l++;return}if(!t.width||!t.height){l++;return}l=0,c++;let n=Math.max(r/t.width,i/t.height),o=t.width*n,u=t.height*n;d.fillStyle=`#05070c`,d.fillRect(0,0,r,i),d.drawImage(t,(r-o)/2,(i-u)/2,o,u)},y=typeof VideoEncoder<`u`&&globalThis.AudioEncoder!==void 0?await U():null;if(y&&await y.canEncodeVideo(`avc`).catch(()=>!1)&&y){let r=new y.Output({format:new y.Mp4OutputFormat,target:new y.BufferTarget}),i=new y.CanvasSource(u,{codec:`avc`,bitrate:t.bitrate});r.addVideoTrack(i);let a=null;if(e.audioBuffer){let t=new y.AudioBufferSource({codec:`aac`,bitrate:192e3});r.addAudioTrack(t);let n=e.audioBuffer;a=async()=>{try{await t.add(n),t.close()}catch{}}}await r.start(),a?.();let o=!0,s=!0,d=performance.now(),p=0,g=1e3/n,b=e.maxDurationMs??1/0;(async()=>{for(;o;){let e=performance.now();if(await v(),!o)break;let t=s?0:(performance.now()-d)/1e3;s=!1;try{await i.add(t,Math.max(1/n,t-p))}catch{break}if(p=t,t*1e3>=b)break;!m&&t>1.2&&c>2&&l===0&&h();let r=performance.now()-e;await new Promise(e=>setTimeout(e,Math.max(0,g-r)))}})();let x=()=>{o=!1,u.width=u.height=0,f.width=f.height=0};return{async stop(){o=!1;let t=await _();await r.finalize();let n=r.target.buffer;return x(),{blob:new Blob([n??new ArrayBuffer(0)],{type:`video/mp4`}),type:`video/mp4`,poster:t,hasAudio:!!e.audioBuffer,durationMs:Math.round(performance.now()-d)}},cancel(){o=!1,r.cancel?.(),x()}}}let b=u.captureStream(n),x=new MediaStream(b.getVideoTracks()),S=e.audioBuffer?z(e.audioBuffer):null,C=S?.stream.getAudioTracks()[0]??null;C&&x.addTrack(C);let w=MediaRecorder.isTypeSupported(`video/webm;codecs=vp9,opus`)?`video/webm;codecs=vp9,opus`:`video/webm`,T=new MediaRecorder(x,{mimeType:w,videoBitsPerSecond:t.bitrate}),E=[];T.ondataavailable=e=>e.data.size&&E.push(e.data);let ee=new Promise(e=>{T.addEventListener(`stop`,()=>e(),{once:!0})}),D=()=>{try{T.state!==`inactive`&&T.stop()}catch{}};T.start(),S?.start();let O=!0,k=performance.now(),A=e.maxDurationMs??1/0,te=1e3/n;(async()=>{for(;O;){let e=performance.now();await v();let t=performance.now()-k;if(t>=A){D();break}!m&&t>1200&&c>2&&l===0&&h();let n=performance.now()-e;await new Promise(e=>setTimeout(e,Math.max(0,te-n)))}})();let j=()=>{O=!1;for(let e of x.getTracks())e.stop();S?.stop(),u.width=u.height=0,f.width=f.height=0};return{async stop(){O=!1;let e=await _();D(),await ee;let t=new Blob(E,{type:w}),n=Math.round(performance.now()-k);return j(),{blob:t,type:w,poster:e,hasAudio:!!C,durationMs:n}},cancel(){O=!1,D(),j()}}}var K=n();function q({slide:e}){"use no memo";let t=T(e);return(0,K.jsx)(t.Slide,{slots:t.slots})}var ce=o(),le=(0,j.createContext)(0),J=new Set([`hidden`,`clip`,`auto`,`scroll`]);function ue(e){let t=(0,ce.c)(11),{children:n}=e,r=(0,j.useRef)(null),i=(0,j.useRef)(null),a;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(a={k:1,x:0,y:0},t[0]=a):a=t[0];let[o,s]=(0,j.useState)(a),c=(0,j.useContext)(le),l;t[1]===Symbol.for(`react.memo_cache_sentinel`)?(l=()=>{let e=r.current,t=i.current;if(!e||!t)return;let n=()=>{let n=e.clientHeight,r=e.clientWidth;if(!n||!r)return;let i=t.style.transform;t.style.transform=`none`,t.style.left=`0`,t.style.top=`0`;let a=[],o=[...t.querySelectorAll(`*`)],c=new Set;for(let e of t.querySelectorAll(`[data-reel-marquee]`)){for(let n=e;n&&n!==t;n=n.parentElement)c.add(n);for(let t of e.querySelectorAll(`*`))c.add(t)}let l=new Set,u=[];for(let e of o){if(c.has(e))continue;let t=getComputedStyle(e);if(t.webkitLineClamp!==`none`){l.add(e);continue}!J.has(t.overflowX)&&!J.has(t.overflowY)||u.push(e)}for(let e of u)a.push({el:e,o:e.style.overflow,m:e.style.maxHeight}),e.style.overflow=`visible`,e.style.maxHeight=`none`;let d=e=>{for(let n=e;n&&n!==t;n=n.parentElement)if(l.has(n))return!0;return!1},f=e=>{let n=0,r=0;for(let i=e;i&&i!==t&&t.contains(i);i=i.offsetParent)n+=i.offsetLeft,r+=i.offsetTop;return{x:n,y:r}},p=t.scrollWidth,m=t.scrollHeight;for(let e of o)if(!c.has(e)&&!d(e)){if(e.scrollWidth>p&&(p=e.scrollWidth),e.scrollHeight>m&&(m=e.scrollHeight),e.scrollWidth>e.clientWidth+1){let t=f(e);t.x+e.scrollWidth>p&&(p=t.x+e.scrollWidth)}if(e.scrollHeight>e.clientHeight+1){let t=f(e);t.y+e.scrollHeight>m&&(m=t.y+e.scrollHeight)}}for(let e of l){let t=f(e);t.x+e.clientWidth>p&&(p=t.x+e.clientWidth),t.y+e.clientHeight>m&&(m=t.y+e.clientHeight)}for(let e of a)e.el.style.overflow=e.o,e.el.style.maxHeight=e.m;if(t.style.transform=i,!m||!p)return;let h=Math.min(1,n*.95/m,r*.92/p),g=Number.isFinite(h)&&h>0?Math.floor(h*1e3)/1e3:1,_=t.firstElementChild,v=_?.offsetWidth||p,y=_?f(_).x:0,b=Math.max(0,(r-v*g)/2-y*g),x=Math.max(0,(n-m*g)/2);s(e=>Math.abs(e.k-g)>.002||Math.abs(e.x-b)>.5||Math.abs(e.y-x)>.5?{k:g,x:b,y:x}:e)};n();let a=!1,o=0;typeof document<`u`&&document.fonts?.ready&&document.fonts.ready.then(()=>{a||(o=requestAnimationFrame(n))});let c=requestAnimationFrame(n),l=0,u=new ResizeObserver(()=>{cancelAnimationFrame(l),l=requestAnimationFrame(n)});return u.observe(e),u.observe(t),()=>{a=!0,u.disconnect(),cancelAnimationFrame(l),cancelAnimationFrame(c),cancelAnimationFrame(o)}},t[1]=l):l=t[1];let u;t[2]!==n||t[3]!==c?(u=[n,c],t[2]=n,t[3]=c,t[4]=u):u=t[4],(0,j.useLayoutEffect)(l,u);let d;t[5]===Symbol.for(`react.memo_cache_sentinel`)?(d={position:`absolute`,inset:0,overflow:`hidden`},t[5]=d):d=t[5];let f=`translate(${o.x}px, ${o.y}px) scale(${o.k})`,p;t[6]===f?p=t[7]:(p={position:`absolute`,left:0,top:0,transformOrigin:`top left`,transform:f},t[6]=f,t[7]=p);let m;return t[8]!==n||t[9]!==p?(m=(0,K.jsx)(`div`,{ref:r,style:d,children:(0,K.jsx)(`div`,{ref:i,style:p,children:n})}),t[8]=n,t[9]=p,t[10]=m):m=t[10],m}var de=[`up`,`left`,`zoom`,`wipe`,`fade`];function fe(e,t){let n=e/t;return n<.8?`9:16`:n<1.3?`1:1`:`16:9`}function pe(e){let t=e.clientWidth,n=e.clientHeight;if(!t||!n)return!1;let r=Math.min(t,n)/100,i=r*16/9,a=fe(t,n),o=`${r}px`,s=e.style.getPropertyValue(`--rw`)!==o||e.dataset.aspect!==a;return e.style.setProperty(`--ru`,`${i}px`),e.style.setProperty(`--rw`,o),e.dataset.aspect=a,s}var Y=e=>e.template!==`title`&&e.template!==`outro`,me=e=>e.template===`outro`,X=e=>e.template===`title`;function he(e,t){let n=0;for(let r=0;r<t&&r<e.length;r++)Y(e[r])&&n++;return n}function ge(e,t){let n=e[t];return n&&Y(n)?he(e,t):-1}function _e({script:e,timings:t,loop:n=!1,onDone:r,frameRef:i,playKey:a=0,playing:o=!0,initialIndex:s=0,onCycle:c,interactive:l=!1,paused:u,onPausedChange:d}){let f=e.slides,p=f.map((e,n)=>Math.max(800,Math.round(t?.[n]??e.durationMs))),m=Math.max(0,Math.min(s,f.length-1)),[h,g]=(0,j.useState)(m),[_,v]=(0,j.useState)(0),y=u!==void 0,[b,x]=(0,j.useState)(!1),S=y?u:b,w=(0,j.useCallback)(()=>{y?d?.(!S):x(e=>!e)},[y,S,d]),[T,ee]=(0,j.useState)(0),D=(0,j.useRef)(!1),O=(0,j.useRef)(null),A=(0,j.useRef)(null),te=(0,j.useRef)(i);te.current=i;let M=(0,j.useCallback)(e=>{A.current=e,te.current?.(e)},[]);(0,j.useEffect)(()=>{l&&A.current?.focus({preventScroll:!0})},[l]);let N=(0,j.useRef)(!1);N.current=S;let P=(0,j.useRef)(null),F=(0,j.useRef)(0),ne=(0,j.useCallback)(e=>{O.current=e,e&&pe(e)&&ee(e=>e+1)},[]);if((0,j.useLayoutEffect)(()=>{let e=O.current;if(!e)return;let t=new ResizeObserver(()=>{pe(e)&&ee(e=>e+1)});return t.observe(e),()=>t.disconnect()},[]),(0,j.useEffect)(()=>{o&&(D.current=!1,g(m),v(e=>e+1))},[a,o]),(0,j.useEffect)(()=>{if(!o||S||h>=f.length)return;let e=P.current??p[h];P.current=null,F.current=Date.now();let t=window.setTimeout(()=>{h+1<f.length?g(h+1):n?(g(0),v(e=>e+1),c?.()):D.current||(D.current=!0,r?.())},e);return()=>{window.clearTimeout(t),N.current&&(P.current=Math.max(0,e-(Date.now()-F.current)))}},[h,f.length,n,r,a,o,S]),(0,j.useEffect)(()=>{P.current=null},[h]),!f.length)return null;let I=f[Math.min(h,f.length-1)],L=he(f,h),R=ge(f,h),re=f.filter(Y).length,z=e=>{let t=-1;for(let n=0;n<f.length;n++)if(Y(f[n])&&t++,t===e){g(n),v(e=>e+1);return}},B=e=>{if(!re)return;let t=Y(I)?R+e:e>0?L:L-1;z(Math.max(0,Math.min(re-1,t)))},V=f.reduce((e,t,n)=>(X(t)&&e.push(n),e),[]),ie=e=>{if(V.length<=1)return;let t=V.filter(e=>e<=h).length-1;g(V[Math.max(0,Math.min(V.length-1,t+e))]),v(e=>e+1)},H=e=>{switch(e.key){case`ArrowRight`:e.preventDefault(),B(1);break;case`ArrowLeft`:e.preventDefault(),B(-1);break;case`ArrowDown`:e.preventDefault(),ie(1);break;case`ArrowUp`:e.preventDefault(),ie(-1);break;case` `:case`Spacebar`:e.preventDefault(),w();break;default:break}},ae=C(I.template)===`dark`,U=E(I.template),W=h===0?`fade`:de[(h+e.seed)%de.length];return(0,K.jsx)(`div`,{className:`reel`,"data-palette":e.palette,"data-vibe":e.vibe,ref:M,role:l?`application`:void 0,tabIndex:l?0:void 0,onKeyDown:l?H:void 0,"aria-label":l?`Reel preview. Left and right arrows step between beats, up and down jump sections, space bar pauses.`:void 0,children:(0,K.jsxs)(`div`,{className:`reel-board`,ref:ne,"data-surface":ae?`dark`:`light`,"data-bleed":U?`true`:`false`,children:[ae&&(0,K.jsx)(`div`,{className:`reel-darkwash`,"aria-hidden":`true`}),(0,K.jsx)(`div`,{className:`reel-progress`,"data-interactive":l,"aria-hidden":!l,children:Array.from({length:re},(e,t)=>{let n=t===R,r=t<L||me(I),i=(0,K.jsx)(`span`,{className:`reel-seg`,children:(0,K.jsx)(`i`,{style:n?{width:0,animation:`reel-seg-fill ${p[h]}ms linear forwards`,animationPlayState:S?`paused`:`running`}:{width:r?`100%`:`0%`}})},`seg`);return l?(0,K.jsx)(`button`,{type:`button`,className:`reel-seg-hit`,onClick:()=>z(t),"aria-label":`Jump to beat ${t+1}`,children:i},t):(0,K.jsx)(`span`,{className:`reel-seg-hit`,children:i},t)})}),(0,K.jsxs)(`div`,{className:`reel-top`,children:[(0,K.jsxs)(`span`,{className:`reel-wordmark`,children:[(0,K.jsx)(`span`,{className:`reel-dot`,"aria-hidden":`true`}),`Mavéa`]}),(0,K.jsx)(`span`,{className:`reel-palettename`,children:e.palette})]}),!U&&(0,K.jsx)(`div`,{className:`reel-jelly-pos`,"aria-hidden":`true`,children:(0,K.jsx)(k,{})}),(0,K.jsx)(`div`,{className:`reel-stage`,children:(0,K.jsx)(`div`,{className:`reel-trans`,"data-trans":W,children:(0,K.jsx)(le.Provider,{value:T,children:(0,K.jsx)(ue,{children:(0,K.jsx)(q,{slide:I})})})},`${_}-${h}`)}),(0,K.jsx)(`div`,{className:`reel-pause-badge`,"data-show":l&&S,"aria-hidden":`true`,children:(0,K.jsxs)(`div`,{className:`reel-pause-glyph`,children:[(0,K.jsx)(`span`,{}),(0,K.jsx)(`span`,{})]})})]})})}function ve(e){let t=[],n=A(e,null);return e.forEach((e,r)=>{t.length===0||n[r]?t.push([e]):t[t.length-1].push(e)}),t}var ye=/^(how|what|why|should|can|could|would|will|plan|show|make|build|tell|give|explain|who|when|where|which|is|are|do|does|did|help|me)\b[\s,]*/i,be=/\s*[,;:]\s+|\s+—\s+|\s+–\s+|\s+\band\b\s+|\s+\bbut\b\s+|\s+\bso\b\s+/i;function xe(e){let t=e[0];if(!t)return``;let n=t.spec?.title?.trim();if(n)return y(n,b.heading);let r=(t.question||``).trim();if(!r)return``;let i=r.replace(ye,``).replace(/[?!.]+$/,``).trim(),a=(i.split(be)[0]||``).trim()||i;return a?y(a.charAt(0).toUpperCase()+a.slice(1),b.heading):``}r();var Se={palette:`aurora`,vibe:`clean`,maxSlides:6};function Z(e){return y(e[0]?.question||e[0]?.spec?.title||`Mavéa`,b.title)}function Q(e){return e[0]?.spec?.topic||e[0]?.spec?.title||Z(e)}function Ce(e){return(e||``).replace(/\s+/g,` `).split(/(?<=[.!?])\s+/).map(e=>e.trim()).filter(e=>e.length>1)}function we(e){return(e.narration||e.spec?.found||e.spec?.sub||``).trim()}function Te(e){return(e.spoken||e.narration||e.spec?.found||e.spec?.sub||``).trim()}var Ee=0;function De(e,t,n,r,i){let a=y(m(r.voiceover),b.voiceover);return{id:`s${Ee++}`,content:e,template:t,slots:w(e,n,i),voiceover:a,durationMs:Math.max(r.ms,a?Math.round(a.length/13*1e3)+500:0),sourceBlockId:r.sourceBlockId}}function Oe(e,t,n,r,i,a){return De(e,D(e,i,a,S(e,t)),t,n,r)}function ke(e,t){return Math.max(1,Math.min(t,Math.floor((e-1)/2)))}function Ae(e,t,n=0){let r=Math.max(t,e-1-t);return Math.max(1,Math.floor(r/t)+ +(n<r%t))}function je(e,t,n,r){let i=Z(e.frames);return De(`title`,`title`,{question:i,kicker:e.heading||xe(e.frames)||void 0,part:n>1?{index:t+1,count:n}:void 0},{voiceover:i,ms:x.intro},r)}function Me(e,t,n){let r=e.flatMap(e=>e.frames),i=Z(r),a=Q(r),o=[];e.forEach((t,n)=>{let r={topic:Q(t.frames),question:Z(t.frames)};o.push(je(t,n,e.length,r)),o.push(...t.content)});let s={topic:a,question:i};return o.push(De(`outro`,`outro`,{wordmark:`Mavéa`,tagline:`Talk to AI. See what it means.`},{voiceover:`Made with Mavéa.`,ms:x.outro},s)),{topic:a,question:i,palette:t.palette,vibe:t.vibe,seed:n,slides:o,durationMs:o.reduce((e,t)=>e+t.durationMs,0)}}function Ne(e,t){return{...e,seed:t,slides:e.slides.map((e,n)=>e.content===`title`||e.content===`outro`?e:{...e,template:D(e.content,t,n,S(e.content,e.slots),e.template)})}}function Pe(e,t,n){let r=e.flatMap(e=>e.spec?.blocks??[]).map(e=>({shown:p((e.note||``).trim()),spoken:m((e.noteSpoken||e.note||``).trim())})).filter(e=>e.shown.length>8),i=r.map(e=>e.shown),a=r.map(e=>e.spoken||e.shown),o=[];if(e.forEach((e,t)=>{let n=we(e),r=Ce(Te(e)),s=Ce(p(n));s.length&&o.push({speaksFor:t,covers:!0,content:`quote`,raw:{quote:s[0]},voiceover:r.slice(0,2).join(` `)}),t===0&&i.length>=2&&o.push({speaksFor:t,covers:!1,content:`list`,raw:{items:i.slice(0,4)},voiceover:a.slice(0,3).join(`. `)})}),!o.length){let e=t.question;o.push({speaksFor:0,covers:!0,content:`quote`,raw:{quote:e},voiceover:e})}let s=new Set;for(let e of[!0,!1])for(let t of o){if(s.size>=n)break;t.covers===e&&!s.has(t)&&s.add(t)}return o.filter(e=>s.has(e)).map((e,n)=>Oe(e.content,e.raw,{voiceover:e.voiceover,ms:x.default},t,0,n+1))}function Fe(e,t){let n=ve(e);return n.slice(-ke(t,n.length))}function Ie(e,t={}){let n={...Se,...t},r=Fe(e,n.maxSlides);return Me(r.map((e,t)=>({frames:e,content:Pe(e,{topic:Q(e),question:Z(e)},Ae(n.maxSlides,r.length,t))})),n,0)}var $=v,Le=`You are Mavéa's reel director. You recut a finished conversation into a short, vertical (9:16) social video — a sequence of card "beats" for TikTok/Reels/Shorts. Each beat is ONE card with very little room.
3
-
4
- Return ONLY JSON: {"heading": <string>, "slides":[{ "type": <content-type>, "slots": {…}, "voiceover": <string> }]}. Give 3 to 5 content beats (the intro question and the outro are added for you — do NOT include them).
5
-
6
- "heading" is a short, punchy title for this reel — a headline that sums up what it's about, at most 32 characters. It sits ABOVE the literal question (which is quoted verbatim elsewhere), so it must NOT just restate the question — it's the sharper, sub-editor's version of it.
7
-
8
- Choose a "type" per beat — the kind of thing it says — and fill its slots:
9
- - stat {value,label,unit?,prior?} — one headline number.
10
- - metrics {items:[{label,pct}],next?} — a few labelled percentages.
11
- - ranked {title?,items:[{label,score,pct}]} — a ranked comparison.
12
- - quote {quote,highlight?,attribution?} — one strong sentence.
13
- - list {items:[string],title?} — up to 4 short points.
14
- - concept {title,subtitle?,tag?} — a concept/term and a one-line gloss.
15
- - conceptmap {center,nodes:[{label}]} — a concept and what connects to it.
16
- - qa {question,answer} — a question and its answer.
17
- - chat {messages:[{role:"user"|"mavea",text}]} — a short exchange.
18
- - diagram {label,equation?,vectors?:[{label}],note?} — a formula / diagram idea.
19
- - steps {stops:[{label,state:"done"|"active"|"todo"}]} — a path or milestones.
20
- - recap {topic,metrics:[{label,value}]} — a tidy summary of figures.
21
-
22
- Rules:
23
- - REAL DATA ONLY. Use only facts, numbers and wording present in the conversation. Never invent a number, label or statistic. If a type needs data the conversation doesn't have, choose a different type.
24
- - IT MUST FIT THE CARD — write to these MAX CHARACTER limits so every value fits its slide with nothing cut. A beat may be re-styled into any look for its type, so write to the tightest. Counts are characters incl. spaces:
25
- ${[`stat — value ≤${$.stat.value}, label ≤${$.stat.label}, unit ≤${$.stat.unit}, prior ≤${$.stat.prior}.`,`metrics — ≤${$.metrics.items} items, each label ≤${$.metrics.label}; next ≤${$.metrics.next}.`,`ranked — ≤${$.ranked.items} items, label ≤${$.ranked.label}, score ≤${$.ranked.score}; title ≤${$.ranked.title}.`,`quote — quote ≤${$.quote.quote}, highlight ≤${$.quote.highlight}, attribution ≤${$.quote.attribution}.`,`list — ≤${$.list.items} items, each ≤${$.list.item}.`,`concept — title ≤${$.concept.title} (1–2 words), subtitle ≤${$.concept.subtitle}, tag ≤${$.concept.tag}.`,`conceptmap — center ≤${$.conceptmap.center}, ≤${$.conceptmap.nodes} nodes, each label ≤${$.conceptmap.node}.`,`qa — question ≤${$.qa.question}, answer ≤${$.qa.answer}.`,`chat — ≤${$.chat.messages} messages, each ≤${$.chat.message}.`,`diagram — label ≤${$.diagram.label}, equation ≤${$.diagram.equation}, note ≤${$.diagram.note}.`,`steps — ≤${$.steps.stops} stops, each label ≤${$.steps.label}.`,`recap — topic ≤${$.recap.topic}, ≤${$.recap.metrics} metrics, label ≤${$.recap.label}, value ≤${$.recap.value}.`].map(e=>` · ${e}`).join(`
26
- `)}
27
- - Match each beat to the type that fits it best; vary the types across the reel.
28
- - "voiceover" is what's spoken over the slide — one natural, conversational sentence. Condense hard — trim filler, keep the punchy core.
29
- - In every voiceover, preserve normal spelling on the left and provide native/source-language pronunciation for every name, place, brand, or non-English term a voice might misread as [[shown|said]], for example "[[Omakase|oh-mah-kah-seh]]". The said side must be lowercase voice-safe phonetic syllables, never IPA or an Anglicized guess. This is required and does not change the visible slot text.`,Re={type:`object`,properties:{heading:{type:`string`},slides:{type:`array`,items:{type:`object`,properties:{type:{type:`string`,enum:O},slots:{type:`object`},voiceover:{type:`string`}},required:[`type`,`slots`,`voiceover`]}}},required:[`slides`]};function ze(e){let t=(e.note||``).trim(),n=``;try{let t=JSON.stringify(e.props);t&&t!==`{}`&&(n=` data=${y(t,220)}`)}catch{}return`- [${e.type}]${t?` ${y(t,120)}`:``}${n}`}function Be(e){return e.slice(0,4).map(e=>{let t=(e.spec?.blocks??[]).slice(0,8).map(ze).join(`
30
- `);return`Q: ${e.question}\nMavea: ${y(we(e),400)}\nCards:\n${t}`}).join(`
31
-
32
- `)}function Ve(e){let t=e;if(typeof e==`string`){let n=e.indexOf(`{`),r=e.lastIndexOf(`}`);if(n<0||r<0)return{slides:[],heading:``};try{t=JSON.parse(e.slice(n,r+1))}catch{return{slides:[],heading:``}}}let n=t;return{slides:Array.isArray(n?.slides)?n.slides:[],heading:typeof n?.heading==`string`?n.heading:``}}async function He(e,t,n,r){let i=new AbortController,a=setTimeout(()=>i.abort(),18e3);try{let{getAdapter:a}=await s(async()=>{let{getAdapter:e}=await import(`./providers-wzm7E8Pa.js`).then(e=>e.n);return{getAdapter:e}},__vite__mapDeps([3,1,4,5])),{slides:o,heading:c}=Ve((await a(t.provider).generate({system:Le,history:[],user:`Recut this conversation into ${r} or fewer content beats.\n\n${Be(e)}`,maxTokens:Math.min(2200,350+r*260),temperature:.6,format:Re,signal:i.signal},t)).raw),l=new Set(O),u=[];for(let e of o){let t=e,i=t.type;if(!i||!l.has(i))continue;let a=t.slots&&typeof t.slots==`object`?t.slots:{};if(u.push(Oe(i,a,{voiceover:t.voiceover||t.caption||``,ms:x.default},n,0,u.length+1)),u.length>=r)break}return u.length?{frames:e,content:u,heading:c?y(c,b.heading):void 0}:null}catch{return null}finally{clearTimeout(a)}}var Ue=3;async function We(e,t,n={}){let r={...Se,...n},i=Fe(e,r.maxSlides),a=e=>Ae(r.maxSlides,i.length,e);try{let o=[];for(let[r,s]of i.entries()){let i={topic:Q(s),question:Z(s)};if(r<Ue){let c=await He(s,t,i,a(r));if(!c)return Ie(e,n);o.push(c)}else o.push({frames:s,content:Pe(s,i,a(r))})}return Me(o,r,0)}catch{return Ie(e,n)}}var Ge=[{id:`aurora`,label:`Aurora`,dot:`linear-gradient(135deg,#6d6dff,#a78bfa)`,blurb:`Indigo`},{id:`ember`,label:`Ember`,dot:`linear-gradient(135deg,#f4923c,#e0603a)`,blurb:`Warm amber`},{id:`ocean`,label:`Ocean`,dot:`linear-gradient(135deg,#2ad0e6,#0f9bad)`,blurb:`Deep teal`},{id:`chalk`,label:`Chalk`,dot:`linear-gradient(135deg,#c3c8d6,#7d8398)`,blurb:`Editorial`}],Ke=e({ShareModal:()=>$e}),qe=[{id:`9:16`,label:`Story`,w:12,h:20},{id:`1:1`,label:`Square`,w:16,h:16},{id:`16:9`,label:`Landscape`,w:20,h:12}],Je=[{id:`balanced`,label:`Balanced`},{id:`high`,label:`High`},{id:`ultra`,label:`Ultra`}],Ye={idle:``,voicing:`Synthesizing narration…`,recording:`Recording the reel…`,saving:`Finishing the file…`,error:`Something went wrong`},Xe=new Map;function Ze(e,t,n){let r=Xe.get(e);if(r)return r;let i=We(t,n);if(Xe.set(e,i),Xe.size>8){let e=Xe.keys().next().value;e&&Xe.delete(e)}return i}function Qe(e){return e.slides.map(e=>e.voiceover).join(`\0`)}function $e({frames:e,script:t,cfg:n,onClose:r,onShared:a}){let[o,s]=(0,j.useState)(`9:16`),[u,d]=(0,j.useState)(`aurora`),[f,p]=(0,j.useState)(`high`),[m,v]=(0,j.useState)(()=>t??(e?.length?Ie(e):null)),[y,b]=(0,j.useState)(!1),[x,S]=(0,j.useState)(!1),[C,w]=(0,j.useState)(!1),[T,E]=(0,j.useState)(`idle`),[D,O]=(0,j.useState)(!1),[k,A]=(0,j.useState)(!1),[M,N]=(0,j.useState)(!1),[P,F]=(0,j.useState)(!1),[ne,I]=(0,j.useState)(0),L=T===`voicing`||T===`recording`||T===`saving`,R=(0,j.useRef)(null),z=(0,j.useRef)(null),B=(0,j.useRef)(null),V=(0,j.useRef)(void 0),H=(0,j.useRef)(`share`),U=(0,j.useRef)(`high`);U.current=f;let W=(0,j.useRef)(null),G=(0,j.useRef)(null),[q,ce]=(0,j.useState)(null),le=(0,j.useRef)(!1),J=(0,j.useCallback)(()=>{le.current=!0},[]),ue=(0,j.useMemo)(()=>i(()=>ee().then(()=>void 0)),[]),de=(0,j.useRef)(null),[fe,pe]=(0,j.useState)(!1);(0,j.useEffect)(()=>{if(typeof window>`u`||!window.matchMedia)return;let e=window.matchMedia(`(max-width: 820px)`),t=()=>pe(e.matches);return t(),e.addEventListener(`change`,t),()=>e.removeEventListener(`change`,t)},[]),l(de,{onEscape:(0,j.useCallback)(()=>{L||r()},[L,r]),initialFocus:R});let Y=(e??[]).map(e=>`${e.at}:${e.question}`).join(`|`),me=n?`${n.provider}:${n.model}:${n.baseUrl??``}`:``;(0,j.useEffect)(()=>{let r=!0;if(le.current=!1,b(!1),W.current?.stop(),W.current=null,G.current=null,ce(null),A(!1),F(!1),I(0),t)return v(t),()=>{r=!1};let i=e??[];return v(Ie(i)),n&&Ze(`${Y}\u0001${me}`,i,n).then(e=>{!r||le.current||(v(e),b(!0))}),()=>{r=!1}},[Y,me,t]);let X=(0,j.useMemo)(()=>m?{...m,palette:u}:null,[m,u]),he=m?Math.max(6,Math.round(m.durationMs/1e3)):0,ge=q?Math.max(6,Math.round(q.reduce((e,t)=>e+t,0)/1e3)):null,ve=ge??he,ye=X?`${o}-${x?`rec`:`preview-${X.seed}-${q?`synced`:`rough`}`}`:null,be=(0,j.useRef)(!1);be.current=k;let xe=(0,j.useCallback)(async()=>{if(J(),k){W.current?.setMuted(!0),A(!1);return}if(!X)return;let e=Qe(X),t=G.current;if(!t||t.sig!==e){N(!0);try{t={sig:e,...await re(X)},G.current=t}finally{N(!1)}}t.buffer&&(W.current||=ie(t.buffer),W.current?.setMuted(!1),W.current?.play(),P&&W.current?.pause(),ce(t.timings),A(!0))},[k,X,P,J]);(0,j.useEffect)(()=>()=>{W.current?.stop(),W.current=null},[]);let Se=(0,j.useCallback)(e=>{J(),F(e),be.current&&(e?W.current?.pause():W.current?.resume())},[J]),Z=(0,j.useCallback)(()=>{J(),F(!1),I(e=>e+1),be.current&&W.current?.play()},[J]),Q=(0,j.useCallback)((e=`idle`)=>{z.current?.cancel(),z.current=null,B.current=null,V.current=void 0,S(!1),w(!1),E(e)},[]);(0,j.useEffect)(()=>()=>Q(),[Q]),(0,j.useEffect)(()=>{if(!x||!D||z.current||!R.current)return;let e=!1,t=(V.current??[]).reduce((e,t)=>e+t,0);return se({el:R.current,audioBuffer:B.current,aspect:o,quality:U.current,maxDurationMs:t?t+900:void 0}).then(t=>{if(e){t.cancel();return}z.current=t,w(!0)}).catch(()=>{_(`Couldn't render the clip in this browser`,`warn`),Q(`error`)}),()=>{e=!0}},[x,D,o,Q]);let Ce=(0,j.useCallback)(e=>{if(L||!X)return;if(J(),!oe()){_(`This browser can't render a video clip`,`warn`);return}H.current=e,E(`voicing`);let t=Qe(X),n=G.current;(n&&n.sig===t?Promise.resolve(n):re(X)).then(e=>{G.current={sig:t,...e};let{buffer:n,timings:r,missing:i}=e;V.current=r,B.current=n,i>0&&_(`${i} narration line${i===1?``:`s`} couldn’t be voiced — exporting the rest.`,`warn`),w(!1),O(!1),E(`recording`),S(!0)}).catch(()=>{_(`Could not prepare the narration`,`warn`),Q(`error`)})},[L,X,Q,J]),we=(0,j.useCallback)(async()=>{let e=z.current;if(!e){Q();return}z.current=null,E(`saving`);try{let t=await e.stop();H.current===`download`?(g(t.blob),_(`Saved to your downloads`,`good`)):await h(t,{title:`My Mavéa reel`,text:`Made with Mavéa`})===`downloaded`&&_(`Saved to your downloads`,`good`),a?.(),Q()}catch{_(`Could not finish the clip`,`warn`),Q(`error`)}},[Q,a]);if(!t&&!e?.length)return null;let Te=()=>{J(),F(!1),v(e=>e&&Ne(e,e.seed+1))};return(0,K.jsx)(`div`,{className:`shm-scrim`,role:`presentation`,onClick:L?void 0:e=>e.target===e.currentTarget&&r(),children:(0,K.jsxs)(`div`,{ref:de,className:`shm-modal`,role:`dialog`,"aria-modal":`true`,"aria-label":`Share your Mavéa session as a clip`,style:fe?{flexDirection:`column`}:void 0,children:[(0,K.jsxs)(`div`,{className:`shm-panel`,children:[(0,K.jsx)(`div`,{className:`shm-eyebrow`,children:`▷ MAVÉA REPLAY`}),(0,K.jsxs)(`div`,{className:`shm-headline`,children:[`Your session, as`,ge?``:` about`,` a`,` `,(0,K.jsx)(`span`,{style:{color:`var(--presence-soft)`},children:ve?`${ve}-second`:``}),` `,`clip.`]}),(0,K.jsx)(`div`,{className:`shm-sub`,children:`Auto-cut from the conversation and rendered in this browser. Model direction and narration may use your selected providers; sharing sends the finished file to the destination you choose.`}),(0,K.jsx)(te,{kind:`publishing`,from:`live`}),X&&!x&&(0,K.jsxs)(`div`,{className:`shm-kbd-hint`,"aria-hidden":`true`,children:[(0,K.jsx)(`kbd`,{children:`←`}),(0,K.jsx)(`kbd`,{children:`→`}),` beats · `,(0,K.jsx)(`kbd`,{children:`↑`}),(0,K.jsx)(`kbd`,{children:`↓`}),` sections · `,(0,K.jsx)(`kbd`,{children:`space`}),` pause`]}),(0,K.jsxs)(`div`,{className:`shm-group`,children:[(0,K.jsx)(`div`,{className:`shm-label`,children:`Palette`}),(0,K.jsx)(`div`,{className:`shm-chips`,children:Ge.map(e=>(0,K.jsxs)(`button`,{type:`button`,className:`shm-chip`,"data-active":u===e.id,disabled:L,onClick:()=>{J(),d(e.id)},title:e.blurb,children:[(0,K.jsx)(`span`,{className:`shm-dot`,style:{background:e.dot},"aria-hidden":`true`}),e.label]},e.id))})]}),(0,K.jsxs)(`div`,{className:`shm-group`,children:[(0,K.jsx)(`div`,{className:`shm-label`,children:`Format`}),(0,K.jsx)(`div`,{className:`shm-chips`,children:qe.map(e=>(0,K.jsxs)(`button`,{type:`button`,className:`shm-chip`,"data-active":o===e.id,disabled:L,onClick:()=>{J(),s(e.id)},children:[(0,K.jsx)(`span`,{className:`shm-shape`,style:{width:e.w,height:e.h},"aria-hidden":`true`}),e.label]},e.id))})]}),(0,K.jsxs)(`div`,{className:`shm-group`,children:[(0,K.jsx)(`div`,{className:`shm-label`,children:`Quality`}),(0,K.jsx)(`div`,{className:`shm-chips`,children:Je.map(e=>(0,K.jsx)(`button`,{type:`button`,className:`shm-chip`,"data-active":f===e.id,disabled:L,onClick:()=>{J(),p(e.id)},title:ae(e.id),children:e.label},e.id))})]}),(0,K.jsxs)(`div`,{className:`shm-actions`,children:[(0,K.jsxs)(`button`,{type:`button`,className:`shm-btn shm-btn-primary`,disabled:L||!X,onClick:()=>Ce(`share`),children:[L?(0,K.jsx)(`span`,{className:`shm-spin`,"aria-hidden":`true`}):`⤴`,L?Ye[T]:`Share`]}),(0,K.jsx)(`button`,{type:`button`,className:`shm-btn`,disabled:L||!X,onClick:()=>Ce(`download`),children:`↓ Download`}),(0,K.jsx)(`button`,{type:`button`,className:`shm-remix`,...ue,disabled:L||!m||!!t,onClick:Te,title:`Re-roll the look (same content, free)`,children:`↻ Remix`})]}),(0,K.jsxs)(`div`,{className:`shm-progress`,"data-on":L,"aria-hidden":!L,children:[(0,K.jsx)(`div`,{className:`shm-progress-bar`,children:(0,K.jsx)(`i`,{})}),(0,K.jsx)(`span`,{className:`shm-progress-text`,children:Ye[T]||` `})]})]}),(0,K.jsx)(`div`,{className:`shm-stage`,children:(0,K.jsxs)(`div`,{className:`shm-frame`,"data-aspect":o,"data-directed":y,children:[X?(0,K.jsx)(_e,{script:X,timings:x?V.current:q??void 0,loop:!x,playing:x?C:!0,playKey:x?0:ne,paused:x?void 0:P,onPausedChange:x?void 0:Se,initialIndex:!x&&X.seed>0?Math.max(0,X.slides.findIndex(e=>e.content!==`title`&&e.content!==`outro`)):0,interactive:!x,onCycle:()=>{be.current&&W.current?.play()},frameRef:e=>{R.current=e,e&&O(!0)},onDone:x?we:void 0},ye):(0,K.jsxs)(`div`,{className:`shm-composing`,children:[(0,K.jsx)(`span`,{className:`shm-composing-dot`}),`Composing your reel…`]}),X&&!x&&(0,K.jsxs)(`div`,{className:`shm-controls`,children:[(0,K.jsx)(`button`,{type:`button`,className:`shm-sound`,"data-on":k,onClick:xe,disabled:M,"aria-pressed":k,title:k?`Mute preview`:`Play sound`,children:M?(0,K.jsx)(`span`,{className:`shm-spin`,"aria-hidden":`true`}):k?(0,K.jsx)(c.speaker,{style:{width:18,height:18}}):(0,K.jsx)(c.speakerOff,{style:{width:18,height:18}})}),(0,K.jsx)(`button`,{type:`button`,className:`shm-sound`,"data-on":P,onClick:()=>Se(!P),"aria-pressed":P,title:P?`Play`:`Pause`,children:P?(0,K.jsx)(c.play,{style:{width:17,height:17}}):(0,K.jsx)(c.pause,{style:{width:17,height:17}})}),(0,K.jsx)(`button`,{type:`button`,className:`shm-sound`,onClick:Z,title:`Replay from the start`,children:(0,K.jsx)(c.refresh,{style:{width:17,height:17}})})]})]})}),(0,K.jsx)(`button`,{type:`button`,className:`shm-close`,onClick:L?void 0:r,"aria-label":`Close`,children:`✕`})]})})}export{Ke as t};
@@ -1 +0,0 @@
1
- import{t as e}from"./react-BQSORdFI.js";import{t}from"./jsx-runtime-DaSxXjOY.js";import{ht as n}from"./index-C7H7A1rW.js";import{t as r}from"./colors-D49Req-e.js";var i=e(),a=n(),o=t();function s(e){return e===`P0`?`var(--danger)`:`var(--warning)`}function c(){let e=(0,a.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,o.jsx)(`svg`,{className:`ripple-casc-chevron`,viewBox:`0 0 16 16`,"aria-hidden":`true`,focusable:`false`,children:(0,o.jsx)(`path`,{d:`M5.5 3.5 L10 8 L5.5 12.5`,fill:`none`,stroke:`currentColor`,strokeWidth:`1.6`,strokeLinecap:`round`,strokeLinejoin:`round`})}),e[0]=t):t=e[0],t}function l(){let e=(0,a.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,o.jsxs)(`svg`,{className:`ripple-casc-check`,viewBox:`0 0 18 18`,"aria-hidden":`true`,focusable:`false`,children:[(0,o.jsx)(`circle`,{cx:`9`,cy:`9`,r:`8`,fill:`none`,stroke:`currentColor`,strokeWidth:`1.4`}),(0,o.jsx)(`path`,{d:`M5.5 9.2 L8 11.6 L12.5 6.4`,fill:`none`,stroke:`currentColor`,strokeWidth:`1.6`,strokeLinecap:`round`,strokeLinejoin:`round`})]}),e[0]=t):t=e[0],t}function u({cascade:e}){return(0,o.jsxs)(`div`,{className:`ripple-casc-row`,children:[(0,o.jsxs)(`article`,{className:`ripple-casc-card ripple-casc-trigger`,style:{"--casc-tint":`var(--presence)`},children:[(0,o.jsxs)(`div`,{className:`ripple-casc-eyebrow`,children:[(0,o.jsx)(`span`,{className:`ripple-eyebrow`,children:`Your change`}),e.triggerRef?.ref&&(0,o.jsx)(`code`,{className:`ripple-casc-ref`,children:e.triggerRef.ref})]}),(0,o.jsx)(`p`,{className:`ripple-casc-title`,children:e.trigger})]}),e.hops.map((e,t)=>(0,o.jsxs)(`div`,{className:`ripple-casc-step`,children:[(0,o.jsx)(c,{}),(0,o.jsxs)(`article`,{className:`ripple-casc-card ripple-casc-hop`,style:{"--casc-tint":r(e.severity)},children:[(0,o.jsx)(`div`,{className:`ripple-eyebrow ripple-casc-hop-eyebrow`,children:e.context}),(0,o.jsx)(`p`,{className:`ripple-casc-title`,children:e.label})]})]},`${e.context}-${t}`)),(0,o.jsxs)(`div`,{className:`ripple-casc-step`,children:[(0,o.jsx)(c,{}),(0,o.jsxs)(`article`,{className:`ripple-casc-card ripple-casc-incident`,children:[(0,o.jsxs)(`div`,{className:`ripple-casc-incident-top`,children:[(0,o.jsx)(`span`,{className:`ripple-casc-sev`,style:{"--casc-sev":s(e.incidentSeverity)},children:e.incidentSeverity}),(0,o.jsx)(`span`,{className:`ripple-eyebrow ripple-casc-incident-label`,children:`Incident`})]}),(0,o.jsx)(`p`,{className:`ripple-casc-incident-text`,children:e.incident})]})]})]})}function d({model:e}){let{cascades:t}=e,[n,r]=(0,i.useState)(()=>new Set),a=e=>r(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n});return t.length===0?(0,o.jsx)(`div`,{className:`ripple-casc-empty`,role:`status`,children:`No cascade found — nothing in this change reaches far enough to page someone.`}):(0,o.jsxs)(`section`,{className:`ripple-casc`,"aria-label":`How one line becomes an incident`,children:[(0,o.jsxs)(`header`,{className:`ripple-casc-intro`,children:[(0,o.jsx)(`div`,{className:`ripple-eyebrow`,children:`The cascade`}),(0,o.jsx)(`p`,{className:`ripple-casc-lede`,children:`Each chain is one line turning into a page — read it left to right, then read how it’s caught.`})]}),t.map((e,t)=>{let r=n.has(t),i=`ripple-casc-${t}`;return(0,o.jsxs)(`div`,{className:`ripple-casc-item`,children:[t>0&&(0,o.jsx)(`div`,{className:`ripple-casc-divider`,"aria-hidden":`true`}),(0,o.jsxs)(`button`,{type:`button`,className:`ripple-casc-bar`,"aria-expanded":!r,"aria-controls":i,onClick:()=>a(t),children:[(0,o.jsx)(`span`,{className:`ripple-casc-bar-sev`,style:{"--casc-sev":s(e.incidentSeverity)},"aria-hidden":`true`,children:e.incidentSeverity}),(0,o.jsxs)(`span`,{className:`ripple-casc-bar-text`,id:i,children:[e.trigger,` `,(0,o.jsx)(`span`,{className:`ripple-casc-bar-arrow`,children:`→`}),` `,(0,o.jsx)(`strong`,{children:e.incident})]}),(0,o.jsx)(`span`,{className:`ripple-casc-bar-toggle`,"aria-hidden":`true`,children:r?`Show chain`:`Hide chain`})]}),!r&&(0,o.jsxs)(`div`,{className:`ripple-casc-detail`,children:[(0,o.jsx)(`div`,{className:`ripple-casc-scroll`,children:(0,o.jsx)(u,{cascade:e})}),(0,o.jsxs)(`p`,{className:`ripple-casc-resolution`,children:[(0,o.jsx)(`span`,{className:`ripple-casc-resolution-icon`,"aria-hidden":`true`,children:(0,o.jsx)(l,{})}),(0,o.jsxs)(`span`,{className:`ripple-casc-resolution-text`,children:[(0,o.jsx)(`strong`,{children:`Caught before merge.`}),` `,e.caughtBeforeMerge]})]})]})]},`${e.trigger}-${t}`)})]})}export{d as ShipCascade};
@@ -1 +0,0 @@
1
- import{t as e}from"./react-BQSORdFI.js";import{t}from"./jsx-runtime-DaSxXjOY.js";import{ht as n}from"./index-C7H7A1rW.js";import{t as r}from"./DropSelect-Bo2Oyi-2.js";import{n as i}from"./store-DXmC_fP2.js";import{v as a}from"./githubToken-DtcLYqwm.js";import{n as o,t as s}from"./courseStore-DfafnL-9.js";import{t as c}from"./links--u_phi0x.js";var l=e(),u=n(),d=`mavea.ripple.course.v2`,f=`mavea.ripple.course.v1`;function p(){try{let e=localStorage.getItem(f);if(!e)return{};let t=JSON.parse(e);if(!t||typeof t!=`object`||Array.isArray(t))return{};let n={};for(let[e,r]of Object.entries(t))Array.isArray(r)&&(n[e]={lessons:r.filter(e=>typeof e==`number`)});return Object.keys(n).length>0&&h(n),n}catch{return{}}}function m(){try{let e=localStorage.getItem(d);if(e===null)return p();let t=JSON.parse(e);return t&&typeof t==`object`&&!Array.isArray(t)?t:{}}catch{return{}}}function h(e){try{localStorage.setItem(d,JSON.stringify(e))}catch{}}function g(e){return new Set(m()[e]?.lessons??[])}function _(e,t,n){let r=m(),i=new Set(r[e]?.lessons??[]);return n?i.add(t):i.delete(t),r[e]={...r[e],lessons:[...i].sort((e,t)=>e-t)},h(r),i}function v(e){return m()[e]?.quiz}function y(e,t,n){let r=m();r[e]={lessons:r[e]?.lessons??[],quiz:{correct:t,total:n,passedAt:Date.now()}},h(r)}function b(e,t){return t>0&&e>=t-1}function x(e){return!!(!(e.lessonsTotal>0&&e.lessonsDone>=e.lessonsTotal)||e.hasQuiz&&!e.quizPassed)}var S=t();function C(e){let t=(0,u.c)(86),{course:n,lesson:r,altitude:i,fileUrl:a,loadLessonDetail:o,speak:s,onAskAboutLesson:c}=e,[d,f]=(0,l.useState)(r.detail??null),[p,m]=(0,l.useState)(`idle`),[h,g]=(0,l.useState)(null),_=(0,l.useRef)(!1),v=(0,l.useRef)(!0),y=(0,l.useRef)(null),b=(0,l.useRef)(0),x,C;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(x=()=>()=>{v.current=!1,y.current!==null&&clearTimeout(y.current)},C=[],t[0]=x,t[1]=C):(x=t[0],C=t[1]),(0,l.useEffect)(x,C);let k;t[2]!==i||t[3]!==n||t[4]!==r||t[5]!==o?(k=e=>{if(!o)return;y.current!==null&&clearTimeout(y.current);let t=b.current+=1;m(`loading`),f(null);let a=s=>{o(n,r,e,i).then(e=>{!v.current||t!==b.current||(e?(f(e),m(`idle`)):s>0?y.current=setTimeout(()=>a(s-1),2e3):m(`error`))})};a(1)},t[2]=i,t[3]=n,t[4]=r,t[5]=o,t[6]=k):k=t[6];let A=k,j;t[7]!==r.detail||t[8]!==o||t[9]!==A?(j=()=>{if(r.detail){f(r.detail);return}!o||_.current||(_.current=!0,A(!1))},t[7]=r.detail,t[8]=o,t[9]=A,t[10]=j):j=t[10];let M;t[11]!==r||t[12]!==o||t[13]!==A?(M=[r,o,A],t[11]=r,t[12]=o,t[13]=A,t[14]=M):M=t[14],(0,l.useEffect)(j,M);let N;t[15]===d?.walkthrough?N=t[16]:(N=d?.walkthrough??[],t[15]=d?.walkthrough,t[16]=N);let P=N,F,I;t[17]!==s||t[18]!==h||t[19]!==P?(F=()=>{if(h===null||!s)return;let e=P[h];e&&s(`${e.focus?e.focus+`. `:``}${e.explain}`)},I=[h,P,s],t[17]=s,t[18]=h,t[19]=P,t[20]=F,t[21]=I):(F=t[20],I=t[21]),(0,l.useEffect)(F,I);let L=r.goal,R=r.explainFor?.[i]??r.goal,z;t[22]!==n||t[23]!==L||t[24]!==r.title||t[25]!==c?(z=c&&(0,S.jsx)(`button`,{type:`button`,className:`ripple-lesson-ask`,onClick:()=>c(`In "${n.title}" — ${r.title}: ${L||`what should I understand here?`}`),children:`Ask about this lesson`}),t[22]=n,t[23]=L,t[24]=r.title,t[25]=c,t[26]=z):z=t[26];let B=z;if(d){let e,n,r;if(t[27]!==B||t[28]!==d.overview||t[29]!==L){let i=d.overview.split(/\n\n+/).filter(te);t[33]===L?e=t[34]:(e=L&&(0,S.jsx)(`p`,{className:`ripple-course-lede`,children:L}),t[33]=L,t[34]=e),n=B,r=i.length>0&&(0,S.jsx)(`div`,{className:`ripple-lesson-overview`,children:i.map(ee)}),t[27]=B,t[28]=d.overview,t[29]=L,t[30]=e,t[31]=n,t[32]=r}else e=t[30],n=t[31],r=t[32];let i;t[35]!==a||t[36]!==h||t[37]!==P?(i=P.length>0&&(0,S.jsxs)(`section`,{className:`ripple-course-group`,children:[(0,S.jsxs)(`div`,{className:`ripple-lesson-spot-head`,children:[(0,S.jsx)(`div`,{className:`ripple-eyebrow`,children:`Spotlight — walk the real code`}),(0,S.jsxs)(`button`,{type:`button`,className:`ripple-course-reveal`,onClick:()=>g(0),"aria-label":`Step through the code one part at a time`,children:[`▶ Step through (`,P.length,`)`]})]}),h===null?(0,S.jsx)(`ol`,{className:`ripple-walk`,children:P.map((e,t)=>(0,S.jsxs)(`li`,{className:`ripple-walk-step`,children:[(0,S.jsxs)(`div`,{className:`ripple-walk-where`,children:[(0,S.jsx)(`span`,{className:`ripple-walk-num`,"aria-hidden":`true`,children:t+1}),(0,S.jsx)(O,{file:e.file,focus:e.focus,url:a(e.file)})]}),e.code&&(0,S.jsx)(`pre`,{className:`ripple-walk-code`,children:(0,S.jsx)(`code`,{children:e.code})}),(0,S.jsx)(`p`,{className:`ripple-walk-explain`,children:e.explain})]},t))}):(0,S.jsx)(ne,{steps:P,index:h,fileUrl:a,onPrev:()=>g(D),onNext:()=>g(e=>e===null?null:Math.min(P.length-1,e+1)),onClose:()=>g(null)})]}),t[35]=a,t[36]=h,t[37]=P,t[38]=i):i=t[38];let s;t[39]===d.concepts?s=t[40]:(s=d.concepts.length>0&&(0,S.jsxs)(`section`,{className:`ripple-course-group`,children:[(0,S.jsx)(`div`,{className:`ripple-eyebrow`,children:`Key concepts`}),(0,S.jsx)(`dl`,{className:`ripple-lesson-concepts`,children:d.concepts.map(E)})]}),t[39]=d.concepts,t[40]=s);let c;t[41]===d.pitfalls?c=t[42]:(c=d.pitfalls&&d.pitfalls.length>0&&(0,S.jsxs)(`section`,{className:`ripple-course-caution`,role:`note`,children:[(0,S.jsx)(`div`,{className:`ripple-eyebrow`,children:`Watch out for`}),(0,S.jsx)(`ul`,{className:`ripple-lesson-pitfalls`,children:d.pitfalls.map(T)})]}),t[41]=d.pitfalls,t[42]=c);let l;t[43]===d.exercise?l=t[44]:(l=d.exercise&&(0,S.jsxs)(`section`,{className:`ripple-course-group ripple-lesson-exercise`,children:[(0,S.jsx)(`div`,{className:`ripple-eyebrow`,children:`Try it`}),(0,S.jsx)(`p`,{className:`ripple-lesson-task`,children:d.exercise.task}),d.exercise.hint&&(0,S.jsxs)(`p`,{className:`ripple-lesson-hint`,children:[`Hint — `,d.exercise.hint]}),d.exercise.check&&(0,S.jsxs)(`p`,{className:`ripple-lesson-check`,children:[`How you’ll know it worked — `,d.exercise.check]})]}),t[43]=d.exercise,t[44]=l);let u;t[45]!==o||t[46]!==A?(u=o&&(0,S.jsx)(`button`,{type:`button`,className:`ripple-lesson-regen`,onClick:()=>A(!0),title:`Rewrite this lesson from the latest code`,children:`↻ Rewrite this lesson`}),t[45]=o,t[46]=A,t[47]=u):u=t[47];let f;return t[48]!==e||t[49]!==n||t[50]!==r||t[51]!==i||t[52]!==s||t[53]!==c||t[54]!==l||t[55]!==u?(f=(0,S.jsxs)(S.Fragment,{children:[e,n,r,i,s,c,l,u]}),t[48]=e,t[49]=n,t[50]=r,t[51]=i,t[52]=s,t[53]=c,t[54]=l,t[55]=u,t[56]=f):f=t[56],f}if(p===`loading`){let e,n;t[57]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,S.jsx)(`span`,{className:`ripple-sharpening-dot`,"aria-hidden":`true`}),n=(0,S.jsx)(`div`,{className:`ripple-course-skeleton-title`,children:`Writing this lesson from the real code…`}),t[57]=e,t[58]=n):(e=t[57],n=t[58]);let i;t[59]===r.read?i=t[60]:(i=r.read.slice(0,3).join(`, `)||`the relevant files`,t[59]=r.read,t[60]=i);let a;return t[61]===i?a=t[62]:(a=(0,S.jsxs)(`div`,{className:`ripple-course-skeleton`,role:`status`,"aria-live":`polite`,children:[e,n,(0,S.jsxs)(`div`,{className:`ripple-course-skeleton-sub`,children:[`Reading `,i,` to teach it properly — with a walk through the actual code.`]})]}),t[61]=i,t[62]=a),a}if(p===`error`){let e;t[63]===L?e=t[64]:(e=L&&(0,S.jsx)(`p`,{className:`ripple-course-lede`,children:L}),t[63]=L,t[64]=e);let n;t[65]===Symbol.for(`react.memo_cache_sentinel`)?(n=(0,S.jsx)(`p`,{children:`Couldn’t write this lesson from the code just now.`}),t[65]=n):n=t[65];let r;t[66]===A?r=t[67]:(r=(0,S.jsx)(`button`,{type:`button`,className:`ripple-course-reveal`,onClick:()=>A(!0),children:`Try again`}),t[66]=A,t[67]=r);let i;return t[68]!==e||t[69]!==r?(i=(0,S.jsxs)(`div`,{className:`ripple-course-empty`,children:[e,n,r]}),t[68]=e,t[69]=r,t[70]=i):i=t[70],i}let re;t[71]===R?re=t[72]:(re=(0,S.jsx)(`p`,{className:`ripple-course-explain`,children:R}),t[71]=R,t[72]=re);let ie;t[73]!==a||t[74]!==r.read?(ie=r.read.length>0&&(0,S.jsxs)(`section`,{className:`ripple-course-group`,children:[(0,S.jsx)(`div`,{className:`ripple-eyebrow`,children:`Open and read`}),(0,S.jsx)(`div`,{className:`ripple-course-files`,children:r.read.map(e=>(0,S.jsx)(O,{file:e,url:a(e)},e))})]}),t[73]=a,t[74]=r.read,t[75]=ie):ie=t[75];let ae;t[76]===r.concepts?ae=t[77]:(ae=r.concepts.length>0&&(0,S.jsxs)(`section`,{className:`ripple-course-group`,children:[(0,S.jsx)(`div`,{className:`ripple-eyebrow`,children:`Key concepts`}),(0,S.jsx)(`ul`,{className:`ripple-course-concepts`,children:r.concepts.map(w)})]}),t[76]=r.concepts,t[77]=ae);let V;t[78]===r.caution?V=t[79]:(V=r.caution&&(0,S.jsxs)(`section`,{className:`ripple-course-caution`,role:`note`,children:[(0,S.jsx)(`div`,{className:`ripple-eyebrow`,children:`Be careful here — and why`}),(0,S.jsx)(`p`,{className:`ripple-course-caution-text`,children:r.caution})]}),t[78]=r.caution,t[79]=V);let oe;return t[80]!==B||t[81]!==re||t[82]!==ie||t[83]!==ae||t[84]!==V?(oe=(0,S.jsxs)(S.Fragment,{children:[re,B,ie,ae,V]}),t[80]=B,t[81]=re,t[82]=ie,t[83]=ae,t[84]=V,t[85]=oe):oe=t[85],oe}function w(e,t){return(0,S.jsx)(`li`,{children:e},t)}function T(e,t){return(0,S.jsx)(`li`,{children:e},t)}function E(e,t){return(0,S.jsxs)(`div`,{children:[(0,S.jsx)(`dt`,{children:e.term}),(0,S.jsx)(`dd`,{children:e.explain})]},t)}function D(e){return e===null?null:Math.max(0,e-1)}function ee(e,t){return(0,S.jsx)(`p`,{children:e},t)}function te(e){return e.trim().length>0}function O(e){let t=(0,u.c)(3),{file:n,focus:r,url:i}=e,a=r?`${n} · ${r}`:n,o;return t[0]!==a||t[1]!==i?(o=i?(0,S.jsxs)(`a`,{className:`ripple-course-file ripple-course-file-link`,href:i,target:`_blank`,rel:`noreferrer noopener`,children:[a,` ↗`]}):(0,S.jsx)(`code`,{className:`ripple-course-file`,children:a}),t[0]=a,t[1]=i,t[2]=o):o=t[2],o}function ne(e){let t=(0,u.c)(36),{steps:n,index:r,fileUrl:i,onPrev:a,onNext:o,onClose:s}=e,c=n[r],l=r+1,d;t[0]!==n.length||t[1]!==l?(d=(0,S.jsxs)(`span`,{className:`ripple-spotlight-count`,children:[l,` / `,n.length]}),t[0]=n.length,t[1]=l,t[2]=d):d=t[2];let f=c.file,p=c.focus,m;t[3]!==i||t[4]!==c.file?(m=i(c.file),t[3]=i,t[4]=c.file,t[5]=m):m=t[5];let h;t[6]!==c.file||t[7]!==c.focus||t[8]!==m?(h=(0,S.jsx)(O,{file:f,focus:p,url:m}),t[6]=c.file,t[7]=c.focus,t[8]=m,t[9]=h):h=t[9];let g;t[10]===s?g=t[11]:(g=(0,S.jsx)(`button`,{type:`button`,className:`ripple-spotlight-x`,onClick:s,"aria-label":`Exit spotlight`,children:`✕`}),t[10]=s,t[11]=g);let _;t[12]!==d||t[13]!==h||t[14]!==g?(_=(0,S.jsxs)(`div`,{className:`ripple-spotlight-bar`,children:[d,h,g]}),t[12]=d,t[13]=h,t[14]=g,t[15]=_):_=t[15];let v;t[16]===c.code?v=t[17]:(v=c.code&&(0,S.jsx)(`pre`,{className:`ripple-walk-code ripple-spotlight-code`,children:(0,S.jsx)(`code`,{children:c.code})}),t[16]=c.code,t[17]=v);let y;t[18]===c.explain?y=t[19]:(y=(0,S.jsx)(`p`,{className:`ripple-spotlight-explain`,children:c.explain}),t[18]=c.explain,t[19]=y);let b=r===0,x;t[20]!==a||t[21]!==b?(x=(0,S.jsx)(`button`,{type:`button`,className:`ripple-course-skip`,onClick:a,disabled:b,children:`← Back`}),t[20]=a,t[21]=b,t[22]=x):x=t[22];let C;t[23]!==r||t[24]!==s||t[25]!==o||t[26]!==n.length?(C=r<n.length-1?(0,S.jsx)(`button`,{type:`button`,className:`ripple-course-done`,onClick:o,children:`Next →`}):(0,S.jsx)(`button`,{type:`button`,className:`ripple-course-done`,onClick:s,children:`Done ✓`}),t[23]=r,t[24]=s,t[25]=o,t[26]=n.length,t[27]=C):C=t[27];let w;t[28]!==x||t[29]!==C?(w=(0,S.jsxs)(`div`,{className:`ripple-spotlight-nav`,children:[x,C]}),t[28]=x,t[29]=C,t[30]=w):w=t[30];let T;return t[31]!==y||t[32]!==w||t[33]!==_||t[34]!==v?(T=(0,S.jsxs)(`div`,{className:`ripple-spotlight`,role:`group`,"aria-label":`Code spotlight`,children:[_,v,y,w]}),t[31]=y,t[32]=w,t[33]=_,t[34]=v,t[35]=T):T=t[35],T}function k(e){let t=(0,u.c)(56),{questions:n,onFinish:r,children:i}=e,[a,o]=(0,l.useState)(0),[s,c]=(0,l.useState)(`ask`),[d,f]=(0,l.useState)(null),[p,m]=(0,l.useState)(!1),[h,g]=(0,l.useState)(0),[_,v]=(0,l.useState)(!1),[y,x]=(0,l.useState)(null),C=n.length,w=n[Math.min(a,C-1)],T=!!(w.choices&&w.choices.length>=2&&w.correct!==void 0),E;t[0]===s?E=t[1]:(E=e=>{s!==`graded`&&(m(e),c(`graded`),e&&g(j))},t[0]=s,t[1]=E);let D=E,ee;t[2]!==D||t[3]!==s||t[4]!==w.correct?(ee=e=>{s!==`graded`&&(f(e),D(e===w.correct))},t[2]=D,t[3]=s,t[4]=w.correct,t[5]=ee):ee=t[5];let te=ee,O;t[6]===s?O=t[7]:(O=()=>{s===`ask`&&c(`revealed`)},t[6]=s,t[7]=O);let ne=O,k;t[8]!==h||t[9]!==a||t[10]!==r||t[11]!==C?(k=()=>{if(a+1>=C){let e={correct:h,total:C};x(e),v(!0),r?.(e);return}o(A),c(`ask`),f(null),m(!1)},t[8]=h,t[9]=a,t[10]=r,t[11]=C,t[12]=k):k=t[12];let M=k;if(_&&y){let e=y.total-y.correct,n=b(y.correct,y.total),r=n?`true`:void 0,a;t[13]!==y.correct||t[14]!==y.total?(a=(0,S.jsxs)(`div`,{className:`ripple-quiz-score-num`,children:[y.correct,`/`,y.total]}),t[13]=y.correct,t[14]=y.total,t[15]=a):a=t[15];let o=n?`You know this one — nice work.`:`Worth another pass — ${e} to revisit.`,s;t[16]===o?s=t[17]:(s=(0,S.jsx)(`p`,{className:`ripple-quiz-score-text`,children:o}),t[16]=o,t[17]=s);let c;t[18]!==r||t[19]!==a||t[20]!==s?(c=(0,S.jsxs)(`div`,{className:`ripple-quiz-score`,"data-passed":r,role:`status`,children:[a,s]}),t[18]=r,t[19]=a,t[20]=s,t[21]=c):c=t[21];let l;return t[22]!==i||t[23]!==c?(l=(0,S.jsxs)(`div`,{className:`ripple-quiz-done`,children:[c,i]}),t[22]=i,t[23]=c,t[24]=l):l=t[24],l}let N=`Question ${a+1} of ${C}`,P=a+1,F;t[25]!==P||t[26]!==C?(F=(0,S.jsxs)(`div`,{className:`ripple-quiz-progress`,children:[`Question `,P,` of `,C]}),t[25]=P,t[26]=C,t[27]=F):F=t[27];let I;t[28]===w.question?I=t[29]:(I=(0,S.jsx)(`p`,{className:`ripple-course-q`,children:w.question}),t[28]=w.question,t[29]=I);let L;t[30]!==D||t[31]!==T||t[32]!==s||t[33]!==te||t[34]!==d||t[35]!==w.answer||t[36]!==w.choices||t[37]!==w.correct||t[38]!==ne?(L=T?(0,S.jsx)(`ul`,{className:`ripple-quiz-choices`,children:w.choices.map((e,t)=>{let n=`idle`;return s===`graded`&&(t===w.correct?n=`correct`:t===d&&(n=`wrong`)),(0,S.jsx)(`li`,{children:(0,S.jsx)(`button`,{type:`button`,className:`ripple-quiz-choice`,"data-state":n,onClick:()=>te(t),disabled:s===`graded`,"aria-pressed":d===t,children:e})},t)})}):(0,S.jsxs)(`div`,{className:`ripple-quiz-plain`,children:[s===`ask`&&(0,S.jsx)(`button`,{type:`button`,className:`ripple-course-reveal`,onClick:ne,children:`Show answer`}),s!==`ask`&&(0,S.jsx)(`p`,{className:`ripple-course-a`,children:w.answer}),s===`revealed`&&(0,S.jsxs)(`div`,{className:`ripple-quiz-selfgrade`,children:[(0,S.jsx)(`span`,{className:`ripple-quiz-selfgrade-prompt`,children:`Did you get it?`}),(0,S.jsx)(`button`,{type:`button`,className:`ripple-quiz-selfgrade-btn`,"data-answer":`yes`,onClick:()=>D(!0),children:`Yes, I had it`}),(0,S.jsx)(`button`,{type:`button`,className:`ripple-quiz-selfgrade-btn`,"data-answer":`no`,onClick:()=>D(!1),children:`Not quite`})]})]}),t[30]=D,t[31]=T,t[32]=s,t[33]=te,t[34]=d,t[35]=w.answer,t[36]=w.choices,t[37]=w.correct,t[38]=ne,t[39]=L):L=t[39];let R;t[40]!==s||t[41]!==w.explain||t[42]!==p?(R=s===`graded`&&(0,S.jsxs)(`div`,{className:`ripple-quiz-feedback`,"data-right":p?`true`:void 0,children:[(0,S.jsx)(`p`,{className:`ripple-quiz-feedback-label`,children:p?`Correct`:`Not quite`}),w.explain&&(0,S.jsx)(`p`,{className:`ripple-quiz-explain`,children:w.explain})]}),t[40]=s,t[41]=w.explain,t[42]=p,t[43]=R):R=t[43];let z;t[44]!==M||t[45]!==a||t[46]!==s||t[47]!==C?(z=s===`graded`&&(0,S.jsx)(`div`,{className:`ripple-quiz-actions`,children:(0,S.jsx)(`button`,{type:`button`,className:`ripple-course-done`,onClick:M,children:a+1>=C?`See your score →`:`Next question →`})}),t[44]=M,t[45]=a,t[46]=s,t[47]=C,t[48]=z):z=t[48];let B;return t[49]!==R||t[50]!==z||t[51]!==N||t[52]!==F||t[53]!==I||t[54]!==L?(B=(0,S.jsxs)(`div`,{className:`ripple-quiz`,role:`group`,"aria-label":N,children:[F,I,L,R,z]}),t[49]=R,t[50]=z,t[51]=N,t[52]=F,t[53]=I,t[54]=L,t[55]=B):B=t[55],B}function A(e){return e+1}function j(e){return e+1}var M=e=>e.slice(0,7),N={beginner:`Beginner`,intermediate:`Intermediate`,expert:`Expert`};function P({title:e,sub:t,preview:n=!1}){return(0,S.jsxs)(`div`,{className:`ripple-course-skeleton`+(n?` ripple-course-skeleton--preview`:``),role:`status`,"aria-live":`polite`,children:[(0,S.jsxs)(`div`,{className:`ripple-course-skeleton-head`,children:[(0,S.jsx)(`span`,{className:`ripple-sharpening-dot`,"aria-hidden":`true`}),(0,S.jsx)(`div`,{className:`ripple-course-skeleton-title`,children:e})]}),(0,S.jsx)(`div`,{className:`ripple-course-skeleton-sub`,children:t}),(0,S.jsx)(`div`,{className:`ripple-progress`,"aria-hidden":`true`}),n&&(0,S.jsx)(`div`,{className:`ripple-course-skeleton-lessons`,"aria-hidden":`true`,children:[0,1,2,3].map(e=>(0,S.jsxs)(`div`,{className:`ripple-skel-lesson`,children:[(0,S.jsx)(`span`,{className:`ripple-skel-bar ripple-skel-step`}),(0,S.jsxs)(`span`,{className:`ripple-skel-lines`,children:[(0,S.jsx)(`span`,{className:`ripple-skel-bar ripple-skel-line-title`}),(0,S.jsx)(`span`,{className:`ripple-skel-bar ripple-skel-line-meta`})]})]},e))})]})}function F(e){let t=(0,u.c)(137),{model:n,altitude:d,building:f,onRegenerate:p,loadLessonDetail:m,loadCourseClosing:h,courseFocus:w,onCourseFocus:T,speak:E,commitSha:D,compareSinceBuilt:ee,openFullAnalysis:te,onAskAboutLesson:O}=e,ne;t[0]===n.courses?ne=t[1]:(ne=n.courses??[],t[0]=n.courses,t[1]=ne);let A=ne,j=n.pr.repo||``,F=n.pr.branch||`HEAD`,V=j?o(j):void 0,oe=!!(!n.provenance.example&&j&&D&&V?.commitSha&&V.commitSha!==D),[H,se]=(0,l.useState)(0),U=A[Math.min(H,Math.max(0,A.length-1))],W=U?`${j||`repo`}::${U.title}`:`repo`,ce;t[2]===W?ce=t[3]:(ce=()=>g(W),t[2]=W,t[3]=ce);let[G,le]=(0,l.useState)(ce),ue,de;t[4]===W?(ue=t[5],de=t[6]):(ue=()=>le(g(W)),de=[W],t[4]=W,t[5]=ue,t[6]=de),(0,l.useEffect)(ue,de);let fe;t[7]===W?fe=t[8]:(fe=(e,t)=>{le(new Set(_(W,e,t)))},t[7]=W,t[8]=fe);let pe=fe,[K,q]=(0,l.useState)(0),[me,he]=(0,l.useState)(!1),ge;t[9]===W?ge=t[10]:(ge=()=>v(W),t[9]=W,t[10]=ge);let[J,_e]=(0,l.useState)(ge),[ve,ye]=(0,l.useState)(0),[be,xe]=(0,l.useState)(!1),Se;t[11]!==H||t[12]!==A||t[13]!==W||t[14]!==q||t[15]!==xe?(Se=()=>{let e=g(W),t=(A[H]?.lessons??[]).findIndex((t,n)=>!e.has(n));q(t===-1?0:t),_e(v(W)),ye(0),xe(!1)},t[11]=H,t[12]=A,t[13]=W,t[14]=q,t[15]=xe,t[16]=Se):Se=t[16];let Ce;t[17]!==H||t[18]!==A||t[19]!==W?(Ce=[W,H,A],t[17]=H,t[18]=A,t[19]=W,t[20]=Ce):Ce=t[20],(0,l.useEffect)(Se,Ce);let we;t[21]===he?we=t[22]:(we=()=>he(!1),t[21]=he,t[22]=we);let Te;t[23]!==K||t[24]!==H?(Te=[K,H],t[23]=K,t[24]=H,t[25]=Te):Te=t[25],(0,l.useEffect)(we,Te);let[Ee,De]=(0,l.useState)(null),[Oe,ke]=(0,l.useState)(`idle`),[Ae,je]=(0,l.useState)(0),Me=(0,l.useRef)(null),Ne;t[26]===Symbol.for(`react.memo_cache_sentinel`)?(Ne=()=>{De(null),ke(`idle`),Me.current=null},t[26]=Ne):Ne=t[26];let Pe;t[27]===H?Pe=t[28]:(Pe=[H],t[27]=H,t[28]=Pe),(0,l.useEffect)(Ne,Pe);let Fe,Ie;t[29]!==K||t[30]!==Ae||t[31]!==H||t[32]!==A||t[33]!==h?(Fe=()=>{let e=A[H];if(!e||!h||K<e.lessons.length||e.quiz?.length||e.capstone)return;let t=`${H}:${Ae}`;if(Me.current===t)return;Me.current=t;let n=!0;return ke(`loading`),h(e).then(e=>{n&&(e&&(e.quiz?.length||e.capstone)?(De(e),ke(`ready`)):ke(`error`))}),()=>{n=!1}},Ie=[A,H,K,h,Ae],t[29]=K,t[30]=Ae,t[31]=H,t[32]=A,t[33]=h,t[34]=Fe,t[35]=Ie):(Fe=t[34],Ie=t[35]),(0,l.useEffect)(Fe,Ie);let Le;t[36]===Symbol.for(`react.memo_cache_sentinel`)?(Le=()=>je(ae),t[36]=Le):Le=t[36];let Re=Le,[Y,ze]=(0,l.useState)(null),[Be,Ve]=(0,l.useState)(``),[He,Ue]=(0,l.useState)(!1),[We,Ge]=(0,l.useState)(!1),[Ke,qe]=(0,l.useState)(``),Je;if(t[37]===Symbol.for(`react.memo_cache_sentinel`)?(Je=()=>{ze(null),Ve(``),Ue(!1),qe(``)},t[37]=Je):Je=t[37],(0,l.useEffect)(Je,[V?.commitSha,D]),A.length===0||!U){if(f){let e;return t[38]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,S.jsx)(P,{title:`Building your curriculum from the code…`,sub:`Reading the README, the areas, and the real files to write a leveled course you can climb without fear.`,preview:!0}),t[38]=e):e=t[38],e}let e;return t[39]===p?e=t[40]:(e=(0,S.jsx)(`div`,{className:`ripple-course-empty`,children:p?(0,S.jsxs)(S.Fragment,{children:[(0,S.jsx)(`p`,{children:`Couldn’t build a course from this view yet.`}),(0,S.jsx)(`button`,{type:`button`,className:`ripple-course-reveal`,onClick:p,children:`Try again`})]}):(0,S.jsx)(`p`,{children:`Connect a model in Settings to generate a course from this code.`})}),t[39]=p,t[40]=e),e}let X=U.lessons,Z=X[Math.min(K,X.length-1)],Ye=X.reduce(ie,0),Xe;t[41]!==G.size||t[42]!==X.length?(Xe=Math.round(G.size/X.length*100),t[41]=G.size,t[42]=X.length,t[43]=Xe):Xe=t[43];let Ze=Xe,Qe;t[44]!==Ee?.quiz||t[45]!==U.quiz?(Qe=U.quiz??Ee?.quiz??[],t[44]=Ee?.quiz,t[45]=U.quiz,t[46]=Qe):Qe=t[46];let Q=Qe,$=U.capstone??Ee?.capstone,$e=X.length>0&&(Q.length>0||!!$||!!h),et=$e&&K>=X.length,tt=K<X.length-1||$e,nt;t[47]===W?nt=t[48]:(nt=e=>{y(W,e.correct,e.total),_e(v(W))},t[47]=W,t[48]=nt);let rt=nt,it;t[49]!==U.title||t[50]!==Q||t[51]!==j?(it=()=>{ye(i(Q.map(re),{deck:`Ripple · ${j||`this repo`}`,tags:[U.title],source:{topic:U.title,ts:Date.now()},origin:`auto`}).length)},t[49]=U.title,t[50]=Q,t[51]=j,t[52]=it):it=t[52];let at=it,ot;t[53]!==ve||t[54]!==at?(ot=()=>ve>0?(0,S.jsxs)(`p`,{className:`ripple-quiz-flash-saved`,children:[`+`,ve,` card`,ve===1?``:`s`,` saved to your deck`]}):(0,S.jsx)(`button`,{type:`button`,className:`ripple-course-reveal`,onClick:at,children:`Keep these as flashcards`}),t[53]=ve,t[54]=at,t[55]=ot):ot=t[55];let st=ot,ct=oe&&Y?s(X,Y):new Set,lt=async()=>{if(Y)return Y;if(!ee||!V?.commitSha||!D)return null;Ge(!0),qe(``);let e=await ee(V.commitSha,D);if(Ge(!1),!e.ok||!e.diff)return qe(e.detail||`Couldn’t load what changed.`),null;let t=a(e.diff).files.map(B);return ze(t),Ve(e.diff),t},ut=()=>{if(He){Ue(!1);return}lt().then(e=>{e&&Ue(!0)})},dt=()=>{lt().then(e=>{if(!e)return;let t=s(X,e);t.size>0&&q(Math.min(...t))})},ft=()=>{!Be||!te||!V||!D||te(Be,`${j} ${M(V.commitSha)}...${M(D)}`,j)},pt;t[56]===j?pt=t[57]:(pt=e=>{let t=`${j||`repo`}::${e.title}`,n=v(t);return{lessonsDone:g(t).size,lessonsTotal:e.lessons.length,hasQuiz:(e.quiz?.length??0)>0,quizPassed:!!n&&b(n.correct,n.total)}},t[56]=j,t[57]=pt);let mt=pt,ht;t[58]===Symbol.for(`react.memo_cache_sentinel`)?(ht=(0,S.jsx)(`span`,{className:`ripple-course-pill`,children:`Guided curriculum`}),t[58]=ht):ht=t[58];let gt;t[59]!==f||t[60]!==w||t[61]!==n.modules||t[62]!==T?(gt=T&&n.modules.length>1&&(0,S.jsxs)(`div`,{className:`ripple-course-focus`,title:`Build the course around one area — best on a large repo, where a whole-repo course only skims. Whole repo prioritises the highest-impact areas.`,children:[(0,S.jsx)(`span`,{className:`ripple-course-focus-label`,children:`Focus`}),(0,S.jsx)(r,{ariaLabel:`Course focus`,triggerClassName:`ripple-course-focus-select`,value:w??``,onChange:e=>T(e||void 0),disabled:f,options:[{value:``,label:`Whole repo`},...n.modules.slice(0,50).map(z)]})]}),t[59]=f,t[60]=w,t[61]=n.modules,t[62]=T,t[63]=gt):gt=t[63];let _t;t[64]!==f||t[65]!==p?(_t=p&&(0,S.jsx)(`button`,{type:`button`,className:`ripple-course-regen`,onClick:p,disabled:f,title:`Rebuild the curriculum from the latest code`,children:f?`Rebuilding…`:`↻ Regenerate`}),t[64]=f,t[65]=p,t[66]=_t):_t=t[66];let vt;t[67]!==gt||t[68]!==_t?(vt=(0,S.jsxs)(`div`,{className:`ripple-course-head-top`,children:[ht,gt,_t]}),t[67]=gt,t[68]=_t,t[69]=vt):vt=t[69];let yt;t[70]!==H||t[71]!==A||t[72]!==mt||t[73]!==j?(yt=A.length>1&&(0,S.jsx)(`div`,{className:`ripple-course-tracks`,role:`tablist`,"aria-label":`Courses`,children:A.map((e,t)=>{let n=g(`${j||`repo`}::${e.title}`).size,r=n>=e.lessons.length,i=t>0?A[t-1]:void 0,a=!!i&&x(mt(i));return(0,S.jsxs)(`button`,{type:`button`,role:`tab`,className:`ripple-course-track`,"data-active":t===H?`true`:void 0,"data-locked":a?`true`:void 0,"aria-selected":t===H,onClick:()=>se(t),children:[(0,S.jsxs)(`span`,{className:`ripple-course-track-top`,children:[(0,S.jsx)(`span`,{className:`ripple-course-step`,"data-done":r?`true`:void 0,children:r?`✓`:t+1}),e.level?(0,S.jsx)(`span`,{className:`ripple-course-level`,"data-level":e.level,children:N[e.level]}):(0,S.jsxs)(`span`,{className:`ripple-course-track-meta`,children:[n,`/`,e.lessons.length]})]}),(0,S.jsx)(`span`,{className:`ripple-course-track-title`,children:e.title}),a&&(0,S.jsxs)(`span`,{className:`ripple-course-track-lock`,children:[(0,S.jsx)(`span`,{"aria-hidden":`true`,children:`🔒`}),` Usually after “`,i.title,`” —`,` `,(0,S.jsx)(`span`,{className:`ripple-course-track-skip`,children:`I already know this, skip ahead`})]})]},e.title)})}),t[70]=H,t[71]=A,t[72]=mt,t[73]=j,t[74]=yt):yt=t[74];let bt;t[75]===U.title?bt=t[76]:(bt=(0,S.jsx)(`h2`,{className:`ripple-course-title`,children:U.title}),t[75]=U.title,t[76]=bt);let xt;t[77]===U.subtitle?xt=t[78]:(xt=U.subtitle&&(0,S.jsx)(`p`,{className:`ripple-course-sub`,children:U.subtitle}),t[77]=U.subtitle,t[78]=xt);let St=Ye>0?` · ~${Ye} min`:``,Ct;t[79]!==G.size||t[80]!==X.length||t[81]!==St?(Ct=(0,S.jsxs)(`div`,{className:`ripple-course-meta`,children:[X.length,` lessons`,St,` · `,G.size,`/`,X.length,` done`]}),t[79]=G.size,t[80]=X.length,t[81]=St,t[82]=Ct):Ct=t[82];let wt=`${Ze}%`,Tt;t[83]===wt?Tt=t[84]:(Tt=(0,S.jsx)(`div`,{className:`ripple-course-bar`,"aria-hidden":`true`,children:(0,S.jsx)(`span`,{style:{width:wt}})}),t[83]=wt,t[84]=Tt);let Et;t[85]!==vt||t[86]!==yt||t[87]!==bt||t[88]!==xt||t[89]!==Ct||t[90]!==Tt?(Et=(0,S.jsxs)(`header`,{className:`ripple-course-head`,children:[vt,yt,bt,xt,Ct,Tt]}),t[85]=vt,t[86]=yt,t[87]=bt,t[88]=xt,t[89]=Ct,t[90]=Tt,t[91]=Et):Et=t[91];let Dt=oe&&V&&(0,S.jsxs)(`div`,{className:`ripple-course-stale`,role:`status`,children:[(0,S.jsx)(`div`,{className:`ripple-eyebrow`,children:`The code moved`}),(0,S.jsxs)(`p`,{className:`ripple-course-stale-text`,children:[`The code moved since this course was built (`,(0,S.jsx)(`code`,{children:M(V.commitSha)}),` →`,` `,(0,S.jsx)(`code`,{children:M(D)}),`).`]}),Ke&&(0,S.jsx)(`p`,{className:`ripple-course-stale-err`,children:Ke}),(0,S.jsxs)(`div`,{className:`ripple-course-stale-actions`,children:[(0,S.jsx)(`button`,{type:`button`,className:`ripple-course-stale-btn`,onClick:ut,disabled:We,children:We?`Loading…`:He?`Hide what changed`:`See what changed`}),(0,S.jsx)(`button`,{type:`button`,className:`ripple-course-stale-btn`,onClick:dt,disabled:We,children:`Refresh stale lessons`}),p&&(0,S.jsx)(`button`,{type:`button`,className:`ripple-course-stale-btn`,onClick:p,disabled:f,children:`Rebuild course`})]}),He&&Y&&(0,S.jsxs)(`div`,{className:`ripple-course-changed-panel`,children:[(0,S.jsx)(`ul`,{children:Y.slice(0,20).map(R)}),Y.length>20&&(0,S.jsxs)(`p`,{className:`ripple-course-changed-more`,children:[`+`,Y.length-20,` more file`,Y.length-20==1?``:`s`]}),te&&(0,S.jsx)(`button`,{type:`button`,className:`ripple-course-stale-btn`,onClick:ft,children:`Open as a full analysis →`})]})]}),Ot=X.map((e,t)=>{let n=G.has(t),r=ct.has(t);return(0,S.jsxs)(`button`,{type:`button`,className:`ripple-course-item`,"data-active":t===K?`true`:void 0,"data-done":n?`true`:void 0,"data-stale":r?`true`:void 0,onClick:()=>q(t),children:[(0,S.jsx)(`span`,{className:`ripple-course-num`,"aria-hidden":`true`,children:n?`✓`:t+1}),(0,S.jsxs)(`span`,{className:`ripple-course-item-body`,children:[(0,S.jsxs)(`span`,{className:`ripple-course-item-title`,children:[e.title,r&&(0,S.jsx)(`span`,{className:`ripple-course-item-stale`,title:`Its files changed since this course was built`,children:`stale`})]}),e.minutes?(0,S.jsxs)(`span`,{className:`ripple-course-item-min`,children:[`~`,e.minutes,` min`]}):null]})]},t)}),kt;t[92]!==$e||t[93]!==$||t[94]!==X.length||t[95]!==et||t[96]!==Q.length||t[97]!==q?(kt=$e&&(0,S.jsxs)(`button`,{type:`button`,className:`ripple-course-item ripple-course-item-quiz`,"data-active":et?`true`:void 0,onClick:()=>q(X.length),children:[(0,S.jsx)(`span`,{className:`ripple-course-num`,"aria-hidden":`true`,children:`★`}),(0,S.jsxs)(`span`,{className:`ripple-course-item-body`,children:[(0,S.jsx)(`span`,{className:`ripple-course-item-title`,children:Q.length>0?`Quiz`:$?`Capstone`:`Wrap-up`}),(0,S.jsx)(`span`,{className:`ripple-course-item-min`,children:Q.length>0?`${Q.length} question${Q.length===1?``:`s`}`:$?`Closing project`:`Quiz & capstone`})]})]}),t[92]=$e,t[93]=$,t[94]=X.length,t[95]=et,t[96]=Q.length,t[97]=q,t[98]=kt):kt=t[98];let At;t[99]!==Ot||t[100]!==kt?(At=(0,S.jsxs)(`nav`,{className:`ripple-course-list`,"aria-label":`Lessons`,children:[Ot,kt]}),t[99]=Ot,t[100]=kt,t[101]=At):At=t[101];let jt;t[102]!==K||t[103]!==d||t[104]!==$||t[105]!==Oe||t[106]!==U||t[107]!==H||t[108]!==G||t[109]!==rt||t[110]!==st||t[111]!==tt||t[112]!==Z||t[113]!==X.length||t[114]!==m||t[115]!==pe||t[116]!==O||t[117]!==et||t[118]!==Q||t[119]!==J||t[120]!==F||t[121]!==j||t[122]!==be||t[123]!==Re||t[124]!==me||t[125]!==q||t[126]!==xe||t[127]!==he||t[128]!==E?(jt=(0,S.jsx)(`article`,{className:`ripple-course-lesson`,"aria-live":`polite`,children:et?(0,S.jsx)(S.Fragment,{children:Q.length===0&&!$&&Oe===`loading`?(0,S.jsx)(P,{title:`Writing the quiz & capstone for ${U.title}…`,sub:`A few end-of-week questions and a small hands-on project, grounded in what this week studied.`}):Q.length===0&&!$&&Oe===`error`?(0,S.jsxs)(`div`,{className:`ripple-course-empty`,children:[(0,S.jsx)(`p`,{children:`Couldn’t build the quiz & capstone for this course yet.`}),(0,S.jsx)(`button`,{type:`button`,className:`ripple-course-reveal`,onClick:Re,children:`Try again`})]}):(0,S.jsxs)(S.Fragment,{children:[Q.length>0&&(0,S.jsxs)(S.Fragment,{children:[(0,S.jsx)(`div`,{className:`ripple-eyebrow`,children:`Course quiz`}),(0,S.jsx)(`h3`,{className:`ripple-course-lesson-title`,children:`Test yourself`}),(0,S.jsxs)(`p`,{className:`ripple-course-explain`,children:[`Answer these to be sure you really understood `,U.title,`.`]}),J&&!be?(0,S.jsxs)(`div`,{className:`ripple-quiz-done`,children:[(0,S.jsxs)(`div`,{className:`ripple-quiz-score`,"data-passed":b(J.correct,J.total)?`true`:void 0,role:`status`,children:[(0,S.jsxs)(`div`,{className:`ripple-quiz-score-num`,children:[J.correct,`/`,J.total]}),(0,S.jsx)(`p`,{className:`ripple-quiz-score-text`,children:b(J.correct,J.total)?`You know this one — nice work.`:`Worth another pass — ${J.total-J.correct} to revisit.`})]}),(0,S.jsx)(`div`,{className:`ripple-quiz-flashcards`,children:st()}),(0,S.jsx)(`button`,{type:`button`,className:`ripple-course-skip`,onClick:()=>xe(!0),children:`Retake the quiz`})]}):(0,S.jsx)(k,{questions:Q,onFinish:e=>{rt(e),xe(!1)},children:(0,S.jsx)(`div`,{className:`ripple-quiz-flashcards`,children:st()})},`quiz:${H}`)]}),$&&(0,S.jsxs)(`section`,{className:`ripple-course-capstone`,children:[(0,S.jsx)(`div`,{className:`ripple-eyebrow`,children:`Capstone`}),(0,S.jsx)(`h4`,{className:`ripple-course-capstone-title`,children:$.title}),(0,S.jsx)(`p`,{className:`ripple-course-capstone-brief`,children:$.brief}),$.steps.length>0&&(0,S.jsxs)(`div`,{className:`ripple-course-group`,children:[(0,S.jsx)(`div`,{className:`ripple-course-capstone-label`,children:`Do this`}),(0,S.jsx)(`ol`,{className:`ripple-course-capstone-steps`,children:$.steps.map(L)})]}),$.acceptance.length>0&&(0,S.jsxs)(`div`,{className:`ripple-course-group`,children:[(0,S.jsx)(`div`,{className:`ripple-course-capstone-label`,children:`You’ll know it worked when`}),(0,S.jsx)(`ul`,{className:`ripple-course-capstone-accept`,children:$.acceptance.map(I)})]})]})]})}):(0,S.jsxs)(S.Fragment,{children:[(0,S.jsxs)(`div`,{className:`ripple-eyebrow`,children:[`Lesson `,K+1,` of `,X.length,Z.minutes?` · ~${Z.minutes} min`:``]}),(0,S.jsx)(`h3`,{className:`ripple-course-lesson-title`,children:Z.title}),(0,S.jsx)(C,{course:U,lesson:Z,altitude:d,repo:j,gitRef:F,fileUrl:e=>c(j,F,e),loadLessonDetail:m,speak:E,onAskAboutLesson:O},`${H}:${K}:${d}`),Z.checkpoint&&(0,S.jsxs)(`section`,{className:`ripple-course-checkpoint`,children:[(0,S.jsx)(`div`,{className:`ripple-eyebrow`,children:`Check yourself`}),(0,S.jsx)(`p`,{className:`ripple-course-q`,children:Z.checkpoint.question}),me?(0,S.jsx)(`p`,{className:`ripple-course-a`,children:Z.checkpoint.answer}):(0,S.jsx)(`button`,{type:`button`,className:`ripple-course-reveal`,onClick:()=>he(!0),children:`Show answer`})]}),(0,S.jsxs)(`div`,{className:`ripple-course-actions`,children:[(0,S.jsx)(`button`,{type:`button`,className:`ripple-course-done`,onClick:()=>{let e=G.has(K);pe(K,!e),!e&&tt&&q(K+1)},children:G.has(K)?`Done ✓`:tt?`Mark done & next →`:`Mark done ✓`}),tt&&(0,S.jsx)(`button`,{type:`button`,className:`ripple-course-skip`,onClick:()=>q(K+1),children:K===X.length-1?`Take the quiz →`:`Skip ahead`})]})]})}),t[102]=K,t[103]=d,t[104]=$,t[105]=Oe,t[106]=U,t[107]=H,t[108]=G,t[109]=rt,t[110]=st,t[111]=tt,t[112]=Z,t[113]=X.length,t[114]=m,t[115]=pe,t[116]=O,t[117]=et,t[118]=Q,t[119]=J,t[120]=F,t[121]=j,t[122]=be,t[123]=Re,t[124]=me,t[125]=q,t[126]=xe,t[127]=he,t[128]=E,t[129]=jt):jt=t[129];let Mt;t[130]!==At||t[131]!==jt?(Mt=(0,S.jsxs)(`div`,{className:`ripple-course-body`,children:[At,jt]}),t[130]=At,t[131]=jt,t[132]=Mt):Mt=t[132];let Nt;return t[133]!==Et||t[134]!==Dt||t[135]!==Mt?(Nt=(0,S.jsxs)(`div`,{className:`ripple-course`,children:[Et,Dt,Mt]}),t[133]=Et,t[134]=Dt,t[135]=Mt,t[136]=Nt):Nt=t[136],Nt}function I(e,t){return(0,S.jsx)(`li`,{children:e},t)}function L(e,t){return(0,S.jsx)(`li`,{children:e},t)}function R(e){return(0,S.jsx)(`li`,{children:e},e)}function z(e){return{value:e.name,label:e.name}}function B(e){return e.path}function re(e){return{front:e.question,back:e.answer}}function ie(e,t){return e+(t.minutes??0)}function ae(e){return e+1}export{F as ShipCourse};
@@ -1 +0,0 @@
1
- import{t as e}from"./react-BQSORdFI.js";import{t}from"./jsx-runtime-DaSxXjOY.js";import{ht as n}from"./index-C7H7A1rW.js";var r=e(),i=n(),a=t();function o(e){return e===`haunted`?`var(--danger)`:e===`hot`?`var(--warning)`:`var(--insight)`}function s(e){return e===`incident`?`var(--danger)`:`var(--presence)`}function c(e){let t=(0,i.c)(50),{model:n}=e,{hotspots:s}=n,[c,d]=(0,r.useState)(s[0]?.id??``),f;t[0]!==s||t[1]!==c?(f=s.find(e=>e.id===c)??s[0],t[0]=s,t[1]=c,t[2]=f):f=t[2];let p=f;if(!p){let e;return t[3]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,a.jsxs)(`div`,{className:`ripple-hot-empty`,children:[(0,a.jsx)(`div`,{className:`ripple-eyebrow`,children:`The story behind any line`}),(0,a.jsx)(`p`,{children:`No load-bearing lines surfaced for this change.`})]}),t[3]=e):e=t[3],e}let m;t[4]===p.cls?m=t[5]:(m=o(p.cls),t[4]=p.cls,t[5]=m);let h=m,g;t[6]===Symbol.for(`react.memo_cache_sentinel`)?(g=(0,a.jsx)(`div`,{className:`ripple-eyebrow ripple-hot-list-head`,children:`The story behind any line`}),t[6]=g):g=t[6];let _;if(t[7]!==p.id||t[8]!==s){let e;t[10]===p.id?e=t[11]:(e=e=>{let t=e.id===p.id;return(0,a.jsxs)(`button`,{type:`button`,role:`tab`,"aria-selected":t,className:`ripple-hot-item`,"data-active":t,onClick:()=>d(e.id),children:[(0,a.jsx)(`span`,{className:`ripple-hot-cls`,style:{color:o(e.cls),background:`color-mix(in oklab, ${o(e.cls)} 16%, transparent)`,borderColor:`color-mix(in oklab, ${o(e.cls)} 34%, transparent)`},children:e.cls}),(0,a.jsx)(`span`,{className:`ripple-hot-symbol`,children:e.symbol}),(0,a.jsx)(`span`,{className:`ripple-hot-file`,children:e.file})]},e.id)},t[10]=p.id,t[11]=e),_=s.map(e),t[7]=p.id,t[8]=s,t[9]=_}else _=t[9];let v;t[12]===_?v=t[13]:(v=(0,a.jsxs)(`div`,{className:`ripple-hot-list`,role:`tablist`,"aria-label":`Load-bearing lines`,children:[g,_]}),t[12]=_,t[13]=v);let y=`color-mix(in oklab, ${h} 14%, transparent)`,b=`color-mix(in oklab, ${h} 30%, transparent)`,x;t[14]!==h||t[15]!==y||t[16]!==b?(x={color:h,background:y,borderColor:b},t[14]=h,t[15]=y,t[16]=b,t[17]=x):x=t[17];let S;t[18]!==p.symbol||t[19]!==x?(S=(0,a.jsx)(`code`,{className:`ripple-hot-chip`,style:x,children:p.symbol}),t[18]=p.symbol,t[19]=x,t[20]=S):S=t[20];let C;t[21]===p.file?C=t[22]:(C=(0,a.jsx)(`span`,{className:`ripple-hot-detail-file`,children:p.file}),t[21]=p.file,t[22]=C);let w;t[23]!==C||t[24]!==S?(w=(0,a.jsxs)(`div`,{className:`ripple-hot-detail-head`,children:[S,C]}),t[23]=C,t[24]=S,t[25]=w):w=t[25];let T;t[26]===Symbol.for(`react.memo_cache_sentinel`)?(T=(0,a.jsx)(`div`,{className:`ripple-eyebrow`,children:`Why this line exists`}),t[26]=T):T=t[26];let E;t[27]===p.whyExists?E=t[28]:(E=(0,a.jsxs)(`section`,{className:`ripple-hot-why`,children:[T,(0,a.jsx)(`p`,{children:p.whyExists})]}),t[27]=p.whyExists,t[28]=E);let D;t[29]!==h||t[30]!==p.incident?(D=p.incident&&(0,a.jsxs)(`section`,{className:`ripple-hot-incident`,style:{background:`color-mix(in oklab, ${h} 9%, transparent)`,borderColor:`color-mix(in oklab, ${h} 28%, transparent)`},children:[(0,a.jsxs)(`div`,{className:`ripple-hot-incident-head`,children:[(0,a.jsx)(`span`,{className:`ripple-hot-sev`,style:{background:h},children:p.incident.severity}),(0,a.jsx)(`code`,{className:`ripple-hot-incident-id`,children:p.incident.id})]}),(0,a.jsx)(`p`,{children:p.incident.text})]}),t[29]=h,t[30]=p.incident,t[31]=D):D=t[31];let O;t[32]===p.decisionTrail?O=t[33]:(O=p.decisionTrail&&p.decisionTrail.length>0&&(0,a.jsxs)(`section`,{className:`ripple-hot-trail`,children:[(0,a.jsx)(`div`,{className:`ripple-eyebrow`,children:`The decision trail`}),(0,a.jsx)(`ol`,{className:`ripple-hot-timeline`,children:p.decisionTrail.map(u)})]}),t[32]=p.decisionTrail,t[33]=O);let k;t[34]===p.ask?k=t[35]:(k=p.ask&&(0,a.jsxs)(`section`,{className:`ripple-hot-ask`,children:[(0,a.jsx)(`div`,{className:`ripple-eyebrow`,children:`Who to actually ask`}),(0,a.jsxs)(`div`,{className:`ripple-hot-ask-card`,children:[(0,a.jsx)(`span`,{className:`ripple-hot-avatar`,"aria-hidden":`true`,children:p.ask.name.charAt(0)}),(0,a.jsxs)(`div`,{className:`ripple-hot-ask-who`,children:[(0,a.jsx)(`span`,{className:`ripple-hot-ask-name`,children:p.ask.name}),(0,a.jsx)(`span`,{className:`ripple-hot-ask-team`,children:p.ask.team})]})]}),(0,a.jsx)(`p`,{className:`ripple-hot-ask-why`,children:p.ask.why}),p.ask.note&&(0,a.jsx)(`p`,{className:`ripple-hot-ask-note`,children:p.ask.note})]}),t[34]=p.ask,t[35]=k);let A;t[36]===p.riskSignals?A=t[37]:(A=p.riskSignals&&p.riskSignals.length>0&&(0,a.jsxs)(`section`,{className:`ripple-hot-signals`,children:[(0,a.jsx)(`div`,{className:`ripple-eyebrow`,children:`Risk signals`}),(0,a.jsx)(`dl`,{className:`ripple-hot-signal-grid`,children:p.riskSignals.map(l)})]}),t[36]=p.riskSignals,t[37]=A);let j;t[38]!==k||t[39]!==A?(j=(0,a.jsxs)(`div`,{className:`ripple-hot-cols`,children:[k,A]}),t[38]=k,t[39]=A,t[40]=j):j=t[40];let M;t[41]!==w||t[42]!==E||t[43]!==D||t[44]!==O||t[45]!==j?(M=(0,a.jsxs)(`div`,{className:`ripple-hot-detail`,role:`tabpanel`,children:[w,E,D,O,j]}),t[41]=w,t[42]=E,t[43]=D,t[44]=O,t[45]=j,t[46]=M):M=t[46];let N;return t[47]!==M||t[48]!==v?(N=(0,a.jsxs)(`div`,{className:`ripple-hot`,children:[v,M]}),t[47]=M,t[48]=v,t[49]=N):N=t[49],N}function l(e,t){return(0,a.jsxs)(`div`,{className:`ripple-hot-signal`,children:[(0,a.jsx)(`dt`,{children:e.k}),(0,a.jsx)(`dd`,{children:e.v})]},`${e.k}-${t}`)}function u(e,t){return(0,a.jsxs)(`li`,{className:`ripple-hot-event`,children:[(0,a.jsx)(`span`,{className:`ripple-hot-event-dot`,style:{background:s(e.kind)},"aria-hidden":`true`}),(0,a.jsxs)(`div`,{className:`ripple-hot-event-body`,children:[(0,a.jsxs)(`div`,{className:`ripple-hot-event-top`,children:[(0,a.jsx)(`time`,{className:`ripple-hot-event-date`,children:e.date}),(0,a.jsx)(`span`,{className:`ripple-hot-event-kind`,children:e.kind})]}),(0,a.jsx)(`span`,{className:`ripple-hot-event-label`,children:e.label})]})]},`${e.date}-${t}`)}export{c as ShipHotspots};
@@ -1 +0,0 @@
1
- import{t as e}from"./jsx-runtime-DaSxXjOY.js";import{ht as t}from"./index-C7H7A1rW.js";var n=t(),r=e();function i(e){let t=(0,n.c)(51),{model:i}=e,{migration:s}=i;if(!s){let e;return t[0]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,r.jsx)(`p`,{className:`ripple-mig-none`,children:`No schema migration in this change.`}),t[0]=e):e=t[0],e}let{file:c,sql:l,rows:u,lockCost:d,expand:f,note:p}=s,m;if(t[1]!==l){let e=(l??[]).join(` `);m=/\bnot\s+null\b/i.test(e)&&/\bdefault\b/i.test(e),t[1]=l,t[2]=m}else m=t[2];let h=m,g;t[3]===u?g=t[4]:(g=!!u&&/\d/.test(u),t[3]=u,t[4]=g);let _=g,v;t[5]===c?v=t[6]:(v=(0,r.jsx)(`span`,{className:`ripple-mig-code-file`,children:c}),t[5]=c,t[6]=v);let y;t[7]===Symbol.for(`react.memo_cache_sentinel`)?(y=(0,r.jsx)(`span`,{className:`ripple-mig-code-tag`,children:`looks harmless`}),t[7]=y):y=t[7];let b;t[8]===v?b=t[9]:(b=(0,r.jsxs)(`div`,{className:`ripple-mig-code-bar`,children:[v,y]}),t[8]=v,t[9]=b);let x;t[10]===l?x=t[11]:(x=l&&l.length>0&&(0,r.jsx)(`div`,{className:`ripple-mig-code-body`,"aria-label":`The migration SQL`,children:l.map(o)}),t[10]=l,t[11]=x);let S;t[12]!==b||t[13]!==x?(S=(0,r.jsxs)(`div`,{className:`ripple-mig-code`,children:[b,x]}),t[12]=b,t[13]=x,t[14]=S):S=t[14];let C;t[15]===u?C=t[16]:(C=u&&(0,r.jsxs)(`div`,{className:`ripple-mig-stat`,children:[(0,r.jsx)(`span`,{className:`ripple-mig-stat-num`,children:u}),(0,r.jsx)(`span`,{className:`ripple-mig-stat-label`,children:`rows`})]}),t[15]=u,t[16]=C);let w;t[17]===d?w=t[18]:(w=(0,r.jsx)(`span`,{className:`ripple-mig-stat-num`,children:d}),t[17]=d,t[18]=w);let T;t[19]===Symbol.for(`react.memo_cache_sentinel`)?(T=(0,r.jsx)(`span`,{className:`ripple-mig-stat-label`,children:`the cost`}),t[19]=T):T=t[19];let E;t[20]===w?E=t[21]:(E=(0,r.jsxs)(`div`,{className:`ripple-mig-stat`,children:[w,T]}),t[20]=w,t[21]=E);let D;t[22]!==E||t[23]!==C?(D=(0,r.jsxs)(`div`,{className:`ripple-mig-stats`,children:[C,E]}),t[22]=E,t[23]=C,t[24]=D):D=t[24];let O=h?`Why this locks writes`:`Why this is worth a second look`,k;t[25]===O?k=t[26]:(k=(0,r.jsx)(`div`,{className:`ripple-eyebrow`,children:O}),t[25]=O,t[26]=k);let A;t[27]!==h||t[28]!==u||t[29]!==_?(A=(0,r.jsx)(`p`,{className:`ripple-mig-explain-body`,children:h?(0,r.jsxs)(r.Fragment,{children:[`Adding a `,(0,r.jsx)(`code`,{className:`ripple-mig-inline`,children:`NOT NULL DEFAULT`}),` column forces the database to rewrite`,` `,_?`every one of the ${u} rows`:`every existing row`,` behind an exclusive lock — until that finishes, nothing can write to this table.`]}):(0,r.jsxs)(r.Fragment,{children:[`A schema change like this can hold an exclusive lock on the table while it runs, blocking writes until it’s done — whether that’s instant or an outage comes down to `,_?`its ${u} rows`:`how large the real table is`,`.`]})}),t[27]=h,t[28]=u,t[29]=_,t[30]=A):A=t[30];let j;t[31]!==k||t[32]!==A?(j=(0,r.jsxs)(`aside`,{className:`ripple-mig-explain`,children:[k,A]}),t[31]=k,t[32]=A,t[33]=j):j=t[33];let M;t[34]!==D||t[35]!==j||t[36]!==S?(M=(0,r.jsxs)(`div`,{className:`ripple-mig-left`,children:[S,D,j]}),t[34]=D,t[35]=j,t[36]=S,t[37]=M):M=t[37];let N;t[38]===Symbol.for(`react.memo_cache_sentinel`)?(N=(0,r.jsx)(`div`,{className:`ripple-eyebrow`,children:`Ship it this way instead — expand / contract`}),t[38]=N):N=t[38];let P;t[39]===f?P=t[40]:(P=f.map(a),t[39]=f,t[40]=P);let F;t[41]===P?F=t[42]:(F=(0,r.jsx)(`ol`,{className:`ripple-mig-steps`,children:P}),t[41]=P,t[42]=F);let I;t[43]===p?I=t[44]:(I=p&&(0,r.jsxs)(`div`,{className:`ripple-mig-tell`,children:[(0,r.jsx)(`span`,{className:`ripple-mig-tell-dot`,"aria-hidden":`true`}),(0,r.jsxs)(`div`,{className:`ripple-mig-tell-body`,children:[(0,r.jsx)(`span`,{className:`ripple-mig-tell-label`,children:`And tell the team:`}),(0,r.jsx)(`span`,{className:`ripple-mig-tell-text`,children:p})]})]}),t[43]=p,t[44]=I);let L;t[45]!==F||t[46]!==I?(L=(0,r.jsxs)(`div`,{className:`ripple-mig-right`,children:[N,F,I]}),t[45]=F,t[46]=I,t[47]=L):L=t[47];let R;return t[48]!==M||t[49]!==L?(R=(0,r.jsxs)(`div`,{className:`ripple-mig`,children:[M,L]}),t[48]=M,t[49]=L,t[50]=R):R=t[50],R}function a(e,t){return(0,r.jsxs)(`li`,{className:`ripple-mig-step`,children:[(0,r.jsx)(`span`,{className:`ripple-mig-step-rail`,"aria-hidden":`true`,children:(0,r.jsx)(`span`,{className:`ripple-mig-step-dot`})}),(0,r.jsxs)(`div`,{className:`ripple-mig-step-body`,children:[(0,r.jsx)(`span`,{className:`ripple-mig-step-title`,children:e.title}),(0,r.jsx)(`span`,{className:`ripple-mig-step-detail`,children:e.detail})]})]},t)}function o(e,t){return(0,r.jsxs)(`div`,{className:`ripple-mig-code-row`,children:[(0,r.jsx)(`span`,{className:`ripple-mig-code-gutter`,"aria-hidden":`true`,children:`+`}),(0,r.jsx)(`code`,{className:`ripple-mig-code-line`,children:e})]},t)}export{i as ShipMigration};
@@ -1 +0,0 @@
1
- import{t as e}from"./react-BQSORdFI.js";import{t}from"./jsx-runtime-DaSxXjOY.js";import{ht as n}from"./index-C7H7A1rW.js";var r=e(),i=n(),a=t();function o(e){let t=(0,i.c)(24),{model:n}=e,{modules:o,onboarding:d}=n,[f,p]=(0,r.useState)(o[0]?.id),m;t[0]!==o||t[1]!==f?(m=o.find(e=>e.id===f)??o[0],t[0]=o,t[1]=f,t[2]=m):m=t[2];let h=m,g;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(g=(0,a.jsxs)(`header`,{className:`ripple-onb-head`,children:[(0,a.jsx)(`span`,{className:`ripple-onb-pill`,children:`No PR needed`}),(0,a.jsx)(`h2`,{className:`ripple-onb-title`,children:`Understand the whole service`})]}),t[3]=g):g=t[3];let _;t[4]===d?_=t[5]:(_=d&&d.requestLife.length>0&&(0,a.jsxs)(`section`,{className:`ripple-onb-life ripple-onb-life-top`,children:[(0,a.jsx)(`div`,{className:`ripple-eyebrow`,children:`A request’s life`}),(0,a.jsx)(`div`,{className:`ripple-onb-trace`,children:d.requestLife.map((e,t)=>(0,a.jsxs)(`span`,{className:`ripple-onb-trace-step`,children:[(0,a.jsx)(`code`,{className:`ripple-onb-chip`,children:e}),t<d.requestLife.length-1&&(0,a.jsx)(`span`,{className:`ripple-onb-chevron`,"aria-hidden":`true`,children:`›`})]},`${e}-${t}`))})]}),t[4]=d,t[5]=_);let v;if(t[6]!==o||t[7]!==h?.id){let e;t[9]===h?.id?e=t[10]:(e=e=>{let t=e.id===h?.id;return(0,a.jsxs)(`button`,{type:`button`,className:`ripple-onb-item`,"data-active":t,"aria-pressed":t,onClick:()=>p(e.id),children:[(0,a.jsx)(`span`,{className:`ripple-onb-item-name`,children:e.name}),(0,a.jsx)(`span`,{className:`ripple-onb-item-purpose`,children:e.purpose}),(0,a.jsxs)(`span`,{className:`ripple-onb-item-foot`,children:[(0,a.jsx)(`span`,{className:`ripple-onb-item-owner`,children:e.owner}),(0,a.jsx)(`span`,{className:`ripple-onb-item-health`,children:e.health})]})]},e.id)},t[9]=h?.id,t[10]=e),v=o.map(e),t[6]=o,t[7]=h?.id,t[8]=v}else v=t[8];let y;t[11]===v?y=t[12]:(y=(0,a.jsx)(`nav`,{className:`ripple-onb-list`,"aria-label":`Service modules`,children:v}),t[11]=v,t[12]=y);let b;t[13]===h?b=t[14]:(b=h&&(0,a.jsxs)(`article`,{className:`ripple-onb-detail`,"aria-live":`polite`,children:[(0,a.jsxs)(`div`,{className:`ripple-onb-detail-head`,children:[(0,a.jsx)(`h3`,{className:`ripple-onb-detail-name`,children:h.name}),(0,a.jsx)(`p`,{className:`ripple-onb-detail-purpose`,children:h.purpose}),(0,a.jsxs)(`div`,{className:`ripple-onb-detail-meta`,children:[(0,a.jsx)(`code`,{className:`ripple-onb-entry`,children:h.entry}),(0,a.jsxs)(`span`,{className:`ripple-onb-detail-owner`,children:[h.owner,` · `,h.health]})]})]}),(0,a.jsxs)(`div`,{className:`ripple-onb-explain`,children:[(0,a.jsx)(`div`,{className:`ripple-eyebrow`,children:`Mavéa explains`}),(0,a.jsx)(`p`,{children:h.explain})]}),h.startHere.length>0&&(0,a.jsxs)(`section`,{className:`ripple-onb-group`,children:[(0,a.jsx)(`div`,{className:`ripple-eyebrow`,children:`Start here`}),(0,a.jsx)(`div`,{className:`ripple-onb-chips`,children:h.startHere.map(u)})]}),h.depends.length>0&&(0,a.jsxs)(`section`,{className:`ripple-onb-group`,children:[(0,a.jsx)(`div`,{className:`ripple-eyebrow`,children:`Depends on`}),(0,a.jsx)(`div`,{className:`ripple-onb-chips`,children:h.depends.map(l)})]}),h.usedBy.length>0&&(0,a.jsxs)(`section`,{className:`ripple-onb-group`,children:[(0,a.jsx)(`div`,{className:`ripple-eyebrow`,children:`Used by`}),(0,a.jsx)(`div`,{className:`ripple-onb-chips`,children:h.usedBy.map(c)})]})]}),t[13]=h,t[14]=b);let x;t[15]!==y||t[16]!==b?(x=(0,a.jsxs)(`div`,{className:`ripple-onb-panes`,children:[y,b]}),t[15]=y,t[16]=b,t[17]=x):x=t[17];let S;t[18]===d?S=t[19]:(S=d&&(0,a.jsx)(`footer`,{className:`ripple-onb-foot`,children:(0,a.jsxs)(`section`,{children:[(0,a.jsx)(`div`,{className:`ripple-eyebrow`,children:`Your first week, in order`}),(0,a.jsx)(`ol`,{className:`ripple-onb-week`,children:d.firstWeek.map(s)})]})}),t[18]=d,t[19]=S);let C;return t[20]!==_||t[21]!==x||t[22]!==S?(C=(0,a.jsxs)(`div`,{className:`ripple-onb`,children:[g,_,x,S]}),t[20]=_,t[21]=x,t[22]=S,t[23]=C):C=t[23],C}function s(e,t){return(0,a.jsxs)(`li`,{className:`ripple-onb-step`,children:[(0,a.jsx)(`span`,{className:`ripple-onb-step-num`,"aria-hidden":`true`,children:t+1}),(0,a.jsxs)(`span`,{className:`ripple-onb-step-body`,children:[(0,a.jsx)(`span`,{className:`ripple-eyebrow ripple-onb-step-team`,children:e.team}),(0,a.jsx)(`span`,{className:`ripple-onb-step-title`,children:e.title}),(0,a.jsx)(`span`,{className:`ripple-onb-step-sub`,children:e.sub}),(0,a.jsx)(`code`,{className:`ripple-onb-step-file`,children:e.file})]})]},`${e.title}-${t}`)}function c(e){return(0,a.jsx)(`span`,{className:`ripple-onb-chip`,children:e},e)}function l(e){return(0,a.jsx)(`span`,{className:`ripple-onb-chip`,children:e},e)}function u(e){return(0,a.jsx)(`code`,{className:`ripple-onb-chip ripple-onb-chip-go`,children:e},e)}export{o as ShipOnboarding};
@@ -1 +0,0 @@
1
- import{t as e}from"./jsx-runtime-DaSxXjOY.js";import{ht as t}from"./index-C7H7A1rW.js";var n=t(),r=e();function i(e){return e===`breaks`?`var(--danger)`:e===`watch`?`var(--warning)`:`var(--insight)`}function a(e){let t=(0,n.c)(29),{model:i,altitude:a}=e,{pr:c,gate:l}=i,u;t[0]===i.changes?u=t[1]:(u=i.changes.filter(s),t[0]=i.changes,t[1]=u);let d=u.length,f=c.files??i.changes.length,p=f===1?`file`:`files`,m=l.decision===`block`?`Hold`:l.decision===`watch`?`Review first`:l.decision===`pass`?`Clear to ship`:`Exploring`,h=a===`principal`?`${m}.`+(d?` ${d} breaking.`:``)+` ${f} ${p} touched.`:a===`newgrad`?`Here’s the lay of the land — take it one piece at a time, you don’t need the whole system in your head.`:null,g=a===`newgrad`?c.risks.length?`The “Before you merge” notes are the questions to raise in review — you don’t need every answer yet, just to ask.`:`Nothing risky is pulling at the top, so this is a friendly one to read end to end.`:null,_;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(_=(0,r.jsx)(`div`,{className:`ripple-eyebrow`,children:`What this change does`}),t[2]=_):_=t[2];let v;t[3]===h?v=t[4]:(v=h&&(0,r.jsx)(`p`,{className:`ripple-read-lead`,children:h}),t[3]=h,t[4]=v);let y;t[5]===c.summary?y=t[6]:(y=(0,r.jsx)(`p`,{className:`ripple-read-summary`,children:c.summary}),t[5]=c.summary,t[6]=y);let b;t[7]!==a||t[8]!==c.readScope?(b=a!==`principal`&&c.readScope&&(0,r.jsxs)(`p`,{className:`ripple-read-scope`,children:[c.readScope,` Mavéa paraphrases nothing it can’t cite — expand any claim to its line.`]}),t[7]=a,t[8]=c.readScope,t[9]=b):b=t[9];let x;t[10]===g?x=t[11]:(x=g&&(0,r.jsx)(`p`,{className:`ripple-read-scope`,children:g}),t[10]=g,t[11]=x);let S;t[12]!==v||t[13]!==y||t[14]!==b||t[15]!==x?(S=(0,r.jsxs)(`div`,{className:`ripple-read-main`,children:[_,v,y,b,x]}),t[12]=v,t[13]=y,t[14]=b,t[15]=x,t[16]=S):S=t[16];let C;t[17]===Symbol.for(`react.memo_cache_sentinel`)?(C=(0,r.jsx)(`div`,{className:`ripple-eyebrow`,children:`Before you merge`}),t[17]=C):C=t[17];let w;t[18]===c.risks?w=t[19]:(w=c.risks.map(o),t[18]=c.risks,t[19]=w);let T;t[20]===c.risks.length?T=t[21]:(T=c.risks.length===0&&(0,r.jsx)(`div`,{className:`ripple-risk-empty`,children:`Nothing is pulling at the top — this one reads clean.`}),t[20]=c.risks.length,t[21]=T);let E;t[22]!==T||t[23]!==w?(E=(0,r.jsxs)(`aside`,{className:`ripple-read-risks`,"aria-label":`Before you merge`,children:[C,w,T]}),t[22]=T,t[23]=w,t[24]=E):E=t[24];let D;return t[25]!==a||t[26]!==E||t[27]!==S?(D=(0,r.jsxs)(`div`,{className:`ripple-read`,"data-altitude":a,children:[S,E]}),t[25]=a,t[26]=E,t[27]=S,t[28]=D):D=t[28],D}function o(e,t){return(0,r.jsxs)(`div`,{className:`ripple-risk`,children:[(0,r.jsx)(`span`,{className:`ripple-risk-dot`,style:{background:i(e.level)},"aria-hidden":`true`}),(0,r.jsx)(`span`,{className:`ripple-risk-text`,children:e.text})]},t)}function s(e){return e.risk===`breaks`}export{a as ShipRead};
@@ -1 +0,0 @@
1
- import{t as e}from"./jsx-runtime-DaSxXjOY.js";import{ht as t}from"./index-C7H7A1rW.js";var n=t(),r=e();function i(){let e=(0,n.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,r.jsxs)(`svg`,{className:`ripple-roll-tri`,viewBox:`0 0 24 24`,width:`18`,height:`18`,"aria-hidden":`true`,focusable:`false`,children:[(0,r.jsx)(`path`,{d:`M12 3.2 22 20.4H2L12 3.2Z`,fill:`none`,stroke:`currentColor`,strokeWidth:`1.8`,strokeLinejoin:`round`}),(0,r.jsx)(`path`,{d:`M12 9.4v5`,stroke:`currentColor`,strokeWidth:`1.8`,strokeLinecap:`round`}),(0,r.jsx)(`circle`,{cx:`12`,cy:`17.4`,r:`1.05`,fill:`currentColor`})]}),e[0]=t):t=e[0],t}function a(e){let t=(0,n.c)(5),{model:a}=e,{rollout:c}=a,l;if(t[0]!==c){let e=c.find(s),n;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(n=(0,r.jsxs)(`div`,{className:`ripple-roll-intro`,children:[(0,r.jsx)(`div`,{className:`ripple-eyebrow`,children:`Safe rollout order`}),(0,r.jsx)(`p`,{className:`ripple-roll-lead`,children:`Ship in this sequence and the change never breaks a caller — every consumer learns the new contract before the producer drops the old one.`})]}),t[2]=n):n=t[2];let a=c.map(o),u;t[3]===a?u=t[4]:(u=(0,r.jsx)(`ol`,{className:`ripple-roll-grid`,children:a}),t[3]=a,t[4]=u),l=(0,r.jsxs)(`div`,{className:`ripple-roll`,children:[n,u,e&&(0,r.jsxs)(`aside`,{className:`ripple-roll-trap`,"aria-label":`The trap in this rollout`,children:[(0,r.jsxs)(`div`,{className:`ripple-roll-trap-head`,children:[(0,r.jsx)(i,{}),(0,r.jsx)(`span`,{className:`ripple-eyebrow ripple-roll-trap-eyebrow`,children:`The trap`})]}),(0,r.jsxs)(`p`,{className:`ripple-roll-trap-body`,children:[`Step `,e.order,` — `,(0,r.jsx)(`strong`,{children:e.deploy.toLowerCase()}),` (`,e.team,`) — is the one you instinctively do first. Drop the old contract before its consumers are ready and every one of them breaks the moment it ships. Mavéa puts the consumer upgrades ahead of the producer: the old path stays alive until the last caller can speak the new one, then it’s removed.`]})]})]}),t[0]=c,t[1]=l}else l=t[1];return l}function o(e){return(0,r.jsxs)(`li`,{className:`ripple-roll-step`,"data-trap":e.trap?`true`:void 0,children:[(0,r.jsxs)(`div`,{className:`ripple-roll-head`,children:[(0,r.jsx)(`span`,{className:`ripple-roll-order`,"data-trap":e.trap?`true`:void 0,"aria-hidden":`true`,children:e.order}),(0,r.jsx)(`span`,{className:`ripple-eyebrow ripple-roll-team`,children:e.team})]}),(0,r.jsx)(`div`,{className:`ripple-roll-deploy`,children:e.deploy}),(0,r.jsx)(`p`,{className:`ripple-roll-note`,children:e.note})]},e.order)}function s(e){return e.trap}export{a as ShipRollout};
@@ -1 +0,0 @@
1
- import{t as e}from"./react-BQSORdFI.js";import{t}from"./jsx-runtime-DaSxXjOY.js";import{ht as n}from"./index-C7H7A1rW.js";var r=e(),i=n(),a=t(),o={CONCURRENCY:`var(--presence)`,COMPATIBILITY:`var(--warning)`,RESILIENCE:`var(--danger)`,OBSERVABILITY:`var(--insight)`,DATA:`var(--presence-deep)`};function s(e){return o[e.split(/[\s/]/)[0]?.toUpperCase()??``]??`var(--presence)`}function c(e){let t=(0,i.c)(19),{model:n}=e,{suggestions:o,suppressedNits:c}=n,[l,u]=(0,r.useState)(o[0]?.id??null),d;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(d=(0,a.jsx)(`div`,{className:`ripple-eyebrow`,children:`What a principal would flag`}),t[0]=d):d=t[0];let f;t[1]===Symbol.for(`react.memo_cache_sentinel`)?(f=(0,a.jsx)(`span`,{className:`ripple-sg-orb`,"aria-hidden":`true`}),t[1]=f):f=t[1];let p;t[2]===o.length?p=t[3]:(p=(0,a.jsxs)(`span`,{className:`ripple-sg-count`,children:[(0,a.jsx)(`strong`,{children:o.length}),` worth your time`]}),t[2]=o.length,t[3]=p);let m;t[4]===c?m=t[5]:(m=c>0&&(0,a.jsxs)(`span`,{className:`ripple-sg-muted`,children:[c,` shallow nits suppressed`]}),t[4]=c,t[5]=m);let h;t[6]===Symbol.for(`react.memo_cache_sentinel`)?(h=(0,a.jsxs)(`span`,{className:`ripple-sg-grounded`,children:[(0,a.jsx)(`svg`,{viewBox:`0 0 12 12`,"aria-hidden":`true`,focusable:`false`,children:(0,a.jsx)(`path`,{d:`M2.5 6.4 4.8 8.8 9.5 3.4`,fill:`none`,stroke:`currentColor`,strokeWidth:`1.6`,strokeLinecap:`round`,strokeLinejoin:`round`})}),`Every one is grounded`]}),t[6]=h):h=t[6];let g;t[7]!==p||t[8]!==m?(g=(0,a.jsxs)(`div`,{className:`ripple-sg-signal`,children:[f,p,m,h]}),t[7]=p,t[8]=m,t[9]=g):g=t[9];let _;t[10]!==l||t[11]!==o?(_=o.length===0?(0,a.jsx)(`div`,{className:`ripple-sg-empty`,children:`Nothing rose above the noise floor — this change reads clean to a principal eye.`}):(0,a.jsx)(`ul`,{className:`ripple-sg-list`,children:o.map(e=>{let t=e.id===l,n=s(e.category),r=`ripple-sg-panel-${e.id}`;return(0,a.jsxs)(`li`,{className:`ripple-sg-card`,"data-open":t,style:{"--ripple-sg-accent":n},children:[(0,a.jsxs)(`button`,{type:`button`,className:`ripple-sg-trigger`,"aria-expanded":t,"aria-controls":r,onClick:()=>u(t?null:e.id),children:[(0,a.jsx)(`span`,{className:`ripple-sg-cat`,children:e.category}),(0,a.jsx)(`span`,{className:`ripple-sg-title`,children:e.title}),(0,a.jsx)(`span`,{className:`ripple-sg-gist`,children:e.gist}),(0,a.jsx)(`svg`,{className:`ripple-sg-chev`,viewBox:`0 0 12 12`,"aria-hidden":`true`,focusable:`false`,children:(0,a.jsx)(`path`,{d:`M3 4.5 6 7.5 9 4.5`,fill:`none`,stroke:`currentColor`,strokeWidth:`1.5`,strokeLinecap:`round`,strokeLinejoin:`round`})})]}),t&&(0,a.jsxs)(`div`,{className:`ripple-sg-body`,id:r,children:[(0,a.jsx)(`p`,{className:`ripple-sg-why`,children:e.why}),(0,a.jsxs)(`div`,{className:`ripple-sg-evidence`,children:[(0,a.jsx)(`div`,{className:`ripple-eyebrow`,children:`Why you’re seeing this`}),(0,a.jsx)(`p`,{className:`ripple-sg-evidence-text`,children:e.evidence})]}),(0,a.jsxs)(`div`,{className:`ripple-sg-fix`,children:[(0,a.jsx)(`span`,{className:`ripple-sg-check`,"aria-hidden":`true`,children:(0,a.jsx)(`svg`,{viewBox:`0 0 14 14`,focusable:`false`,children:(0,a.jsx)(`path`,{d:`M3 7.4 5.8 10.2 11 4`,fill:`none`,stroke:`currentColor`,strokeWidth:`1.7`,strokeLinecap:`round`,strokeLinejoin:`round`})})}),(0,a.jsxs)(`p`,{className:`ripple-sg-fix-text`,children:[(0,a.jsx)(`span`,{className:`ripple-sg-fix-label`,children:`Suggested:`}),` `,e.fix]})]})]})]},e.id)})}),t[10]=l,t[11]=o,t[12]=_):_=t[12];let v;t[13]===c?v=t[14]:(v=c>0&&(0,a.jsxs)(`div`,{className:`ripple-sg-suppressed`,role:`note`,children:[(0,a.jsxs)(`strong`,{children:[c,` nits suppressed`]}),` — formatting, naming, import order… Mavéa won’t spend your attention on them.`]}),t[13]=c,t[14]=v);let y;return t[15]!==g||t[16]!==_||t[17]!==v?(y=(0,a.jsxs)(`div`,{className:`ripple-sg`,children:[d,g,_,v]}),t[15]=g,t[16]=_,t[17]=v,t[18]=y):y=t[18],y}export{c as ShipSuggestions};
@@ -1,2 +0,0 @@
1
- import{t as e}from"./react-BQSORdFI.js";import{t}from"./jsx-runtime-DaSxXjOY.js";import{ht as n}from"./index-C7H7A1rW.js";import{t as r}from"./colors-D49Req-e.js";var i=e(),a=n(),o=t();function s(e){switch(e){case`updated`:return`var(--insight)`;case`breaks`:return`var(--danger)`;case`affected`:return`var(--presence)`;default:return`var(--text-muted)`}}function c(e){return e===`add`?`+`:e===`del`?`−`:``}function l(e){let t=[],n=new Map;for(let r of e){let e=n.get(r.subsystem);e||(e=[],n.set(r.subsystem,e),t.push({subsystem:r.subsystem,items:e})),e.push(r)}return t}function u({model:e}){let{changes:t}=e,n=(0,i.useMemo)(()=>l(t),[t]),a=(0,i.useMemo)(()=>(t.find(e=>e.risk===`breaks`)??t[0])?.id,[t]),[s,u]=(0,i.useState)(a);(0,i.useEffect)(()=>{u(a)},[t.map(e=>e.file).join(`
2
- `)]);let f=t.find(e=>e.id===s)??t[0];if(!f)return(0,o.jsx)(`div`,{className:`ripple-ws-empty`,children:`No changes in this diff — nothing for the workspace to read.`});let{diff:p}=f,m=f.blastOutside??0;return(0,o.jsxs)(`div`,{className:`ripple-ws`,children:[(0,o.jsx)(`nav`,{className:`ripple-ws-col ripple-ws-list`,"aria-label":`Changes in this pull request`,children:n.map(e=>(0,o.jsxs)(`div`,{className:`ripple-ws-group`,children:[(0,o.jsxs)(`div`,{className:`ripple-ws-group-head`,children:[(0,o.jsx)(`span`,{className:`ripple-eyebrow`,children:e.subsystem}),(0,o.jsx)(`span`,{className:`ripple-ws-group-count`,children:e.items.length})]}),e.items.map(e=>{let t=e.id===f.id,n=e.risk===`breaks`||e.risk===`watch`;return(0,o.jsxs)(`button`,{type:`button`,className:`ripple-ws-row`,"data-active":t,"aria-current":t?`true`:void 0,onClick:()=>u(e.id),children:[(0,o.jsx)(`span`,{className:`ripple-ws-row-dot`,style:{background:r(e.risk)},"aria-hidden":`true`}),(0,o.jsx)(`span`,{className:`ripple-ws-row-title`,children:e.title}),(0,o.jsx)(`span`,{className:`ripple-ws-row-file`,children:e.file}),n&&(0,o.jsx)(`span`,{className:`ripple-ws-row-badge`,style:{color:r(e.risk),background:`color-mix(in oklab, ${r(e.risk)} 15%, transparent)`},children:e.risk===`breaks`?`BREAKS`:`WATCH`})]},e.id)})]},e.subsystem))}),(0,o.jsxs)(`div`,{className:`ripple-ws-col ripple-ws-detail`,children:[(0,o.jsx)(`h3`,{className:`ripple-ws-detail-title`,children:f.title}),(0,o.jsxs)(`div`,{className:`ripple-ws-block`,children:[(0,o.jsx)(`span`,{className:`ripple-eyebrow`,children:`Mavéa’s read`}),(0,o.jsx)(`p`,{children:f.intent})]}),(0,o.jsxs)(`div`,{className:`ripple-ws-diff`,children:[(0,o.jsxs)(`div`,{className:`ripple-ws-diff-head`,children:[(0,o.jsx)(`span`,{className:`ripple-ws-diff-file`,children:p.file}),(0,o.jsxs)(`span`,{className:`ripple-ws-diff-stat`,children:[(0,o.jsxs)(`span`,{className:`ripple-ws-diff-add`,children:[`+`,p.add]}),(0,o.jsxs)(`span`,{className:`ripple-ws-diff-del`,children:[`−`,p.del]})]})]}),(0,o.jsx)(`div`,{className:`ripple-ws-diff-body`,children:p.lines.map((e,t)=>(0,o.jsxs)(`div`,{className:`ripple-ws-diff-line`,"data-t":e.t??`ctx`,children:[(0,o.jsx)(`span`,{className:`ripple-ws-diff-sign`,"aria-hidden":`true`,children:c(e.t)}),(0,o.jsx)(`span`,{className:`ripple-ws-diff-code`,children:e.c})]},t))})]}),(0,o.jsxs)(`div`,{className:`ripple-ws-block ripple-ws-why`,children:[(0,o.jsx)(`span`,{className:`ripple-eyebrow`,children:`Why it’s here`}),(0,o.jsx)(`p`,{children:f.why})]})]}),(0,o.jsxs)(`aside`,{className:`ripple-ws-col ripple-ws-aside`,"aria-label":`Cause and effect`,children:[(0,o.jsxs)(`div`,{className:`ripple-ws-section`,children:[(0,o.jsx)(`span`,{className:`ripple-eyebrow`,children:`Cause & effect`}),(0,o.jsxs)(`div`,{className:`ripple-ws-tiles`,children:[(0,o.jsxs)(`div`,{className:`ripple-ws-tile`,children:[(0,o.jsx)(`span`,{className:`ripple-ws-tile-num`,children:f.blastFiles??0}),(0,o.jsx)(`span`,{className:`ripple-ws-tile-label`,children:`files affected`})]}),(0,o.jsxs)(`div`,{className:`ripple-ws-tile`,"data-alarm":m>0,children:[(0,o.jsx)(`span`,{className:`ripple-ws-tile-num`,children:m}),(0,o.jsx)(`span`,{className:`ripple-ws-tile-label`,children:`outside this PR`})]})]})]}),(0,o.jsxs)(`div`,{className:`ripple-ws-section`,children:[(0,o.jsx)(`span`,{className:`ripple-eyebrow`,children:`What depends on this`}),f.links.length>0?(0,o.jsx)(`div`,{className:`ripple-ws-callers`,children:f.links.map(e=>(0,o.jsx)(d,{link:e},`${e.name}:${e.ref}`))}):(0,o.jsx)(`p`,{className:`ripple-ws-empty`,children:`Nothing else calls into this change — it’s a leaf.`})]}),f.risks&&f.risks.length>0&&(0,o.jsxs)(`div`,{className:`ripple-ws-section`,children:[(0,o.jsx)(`span`,{className:`ripple-eyebrow`,children:`Risk notes`}),(0,o.jsx)(`div`,{className:`ripple-ws-risks`,children:f.risks.map((e,t)=>(0,o.jsxs)(`div`,{className:`ripple-ws-risk`,style:{background:`color-mix(in oklab, ${r(e.level)} 10%, transparent)`,border:`1px solid color-mix(in oklab, ${r(e.level)} 28%, transparent)`},children:[(0,o.jsx)(`span`,{className:`ripple-ws-risk-dot`,style:{background:r(e.level)},"aria-hidden":`true`}),(0,o.jsx)(`span`,{className:`ripple-ws-risk-text`,children:e.text})]},t))})]})]})]})}function d(e){let t=(0,a.c)(21),{link:n}=e,r;t[0]===n.status?r=t[1]:(r=s(n.status),t[0]=n.status,t[1]=r);let i=r,c=n.scope===`cross-repo`,l;t[2]===n.name?l=t[3]:(l=(0,o.jsx)(`span`,{className:`ripple-ws-caller-name`,children:n.name}),t[2]=n.name,t[3]=l);let u;t[4]===n.ref?u=t[5]:(u=(0,o.jsx)(`span`,{className:`ripple-ws-caller-ref`,children:n.ref}),t[4]=n.ref,t[5]=u);let d;t[6]!==l||t[7]!==u?(d=(0,o.jsxs)(`span`,{className:`ripple-ws-caller-main`,children:[l,u]}),t[6]=l,t[7]=u,t[8]=d):d=t[8];let f=`color-mix(in oklab, ${i} 15%, transparent)`,p;t[9]!==i||t[10]!==f?(p={color:i,background:f},t[9]=i,t[10]=f,t[11]=p):p=t[11];let m;t[12]===n.status?m=t[13]:(m=n.status.toUpperCase(),t[12]=n.status,t[13]=m);let h=c?` · OUTSIDE PR`:``,g;t[14]!==p||t[15]!==m||t[16]!==h?(g=(0,o.jsxs)(`span`,{className:`ripple-ws-caller-badge`,style:p,children:[m,h]}),t[14]=p,t[15]=m,t[16]=h,t[17]=g):g=t[17];let _;return t[18]!==d||t[19]!==g?(_=(0,o.jsxs)(`div`,{className:`ripple-ws-caller`,children:[d,g]}),t[18]=d,t[19]=g,t[20]=_):_=t[20],_}export{u as ShipWorkspace};
@@ -1 +0,0 @@
1
- import{t as e}from"./jsx-runtime-DaSxXjOY.js";import{ht as t,ut as n}from"./index-C7H7A1rW.js";import{t as r}from"./Orb-B0NEVfqL.js";var i=t(),a=e(),o=[{title:`Chicago · 4-Day Architectu…`,time:`3:14`,snip:`help me plan a trip t…`,tone:`blue`},{title:`Chicago · 4-Day Culinary…`,time:`3:14`,snip:`what are the restaura…`,tone:`green`},{title:`Chicago · 4-Day Itinerary`,time:`3:14`,snip:`what other things sh…`,tone:`amber`,active:!0}],s=[{name:`Speakeasies`,tag:`Hidden & exclusive`,w:`48%`,tone:`presence`},{name:`Live music`,tag:`Blues & jazz`,w:`78%`,tone:`warning`},{name:`Cocktail bars`,tag:`Modern & craft`,w:`46%`,tone:`presence`}],c=[`Reservations are essential for popular speakeasies.`,`Check the music schedule for blues clubs in advance.`,`Use the “L” train or a rideshare; parking is difficult.`,`Dress codes vary; check the venue’s site before going.`],l=[{left:`62%`,top:`34%`,tone:`presence`,n:`2`},{left:`54%`,top:`66%`,tone:`warning`,n:`3`},{left:`60%`,top:`70%`,tone:`insight`,n:`1`,ring:!0}];function u(e){let t=[];for(let n=-48;n<=448;n+=24)t.push(e?`M${n},-48 V248`:`M-48,${n} H448`);return t.join(` `)}function d(){let e=(0,i.c)(3),t;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,a.jsx)(`rect`,{className:`fl-m-land`,width:`400`,height:`200`}),e[0]=t):t=e[0];let n;e[1]===Symbol.for(`react.memo_cache_sentinel`)?(n=(0,a.jsx)(`path`,{className:`fl-m-minor`,d:u(!0)}),e[1]=n):n=e[1];let r;return e[2]===Symbol.for(`react.memo_cache_sentinel`)?(r=(0,a.jsxs)(`svg`,{className:`fl-map-art`,viewBox:`0 0 400 200`,preserveAspectRatio:`xMidYMid slice`,"aria-hidden":`true`,children:[t,(0,a.jsxs)(`g`,{className:`fl-m-streets`,transform:`rotate(-8 200 100)`,children:[n,(0,a.jsx)(`path`,{className:`fl-m-minor`,d:u(!1)}),(0,a.jsx)(`path`,{className:`fl-m-major`,d:`M88,-48 V248 M168,-48 V248 M248,-48 V248`}),(0,a.jsx)(`path`,{className:`fl-m-major`,d:`M-48,64 H448 M-48,128 H448`}),(0,a.jsx)(`path`,{className:`fl-m-major`,d:`M-10,214 L300,-14`})]}),(0,a.jsx)(`path`,{className:`fl-m-park`,d:`M196,132 C218,124 244,128 250,146 C255,162 236,176 214,174 C192,172 180,152 196,132 Z`}),(0,a.jsx)(`path`,{className:`fl-m-river`,d:`M284,36 C238,52 206,44 168,58 C136,70 104,62 70,76`}),(0,a.jsx)(`path`,{className:`fl-m-water`,d:`M285,0 C270,60 276,140 262,200 L400,200 L400,0 Z`}),(0,a.jsx)(`path`,{className:`fl-m-shore`,d:`M285,0 C270,60 276,140 262,200`}),(0,a.jsx)(`path`,{className:`fl-m-current`,d:`M310,52 C326,46 342,50 356,42`}),(0,a.jsx)(`path`,{className:`fl-m-current`,d:`M318,120 C336,114 350,120 366,110`})]}),e[2]=r):r=e[2],r}function f(){return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)(n,{eyebrow:`The signature move`,children:[`It listens. It speaks. `,(0,a.jsx)(`em`,{children:`Then it draws.`})]}),(0,a.jsxs)(`div`,{className:`fl-window`,children:[(0,a.jsxs)(`div`,{className:`fl-window-bar`,children:[(0,a.jsx)(`span`,{className:`fl-light r`}),(0,a.jsx)(`span`,{className:`fl-light y`}),(0,a.jsx)(`span`,{className:`fl-light g`}),(0,a.jsxs)(`div`,{className:`fl-window-title`,children:[(0,a.jsx)(r,{size:18,className:`fl-orb-inline`}),(0,a.jsx)(`span`,{className:`fl-window-topic`,children:`Chicago Nightlife: A Curated Guide`}),(0,a.jsx)(`span`,{className:`fl-live`,style:{color:`var(--text-muted)`},children:`Example`})]})]}),(0,a.jsxs)(`div`,{className:`fl-window-body`,children:[(0,a.jsxs)(`aside`,{className:`fl-rail`,children:[(0,a.jsxs)(`div`,{className:`fl-rail-head`,children:[(0,a.jsx)(`span`,{children:`This session`}),(0,a.jsx)(`span`,{className:`fl-rail-chip`,children:`Replay`})]}),o.map(e=>(0,a.jsxs)(`div`,{className:`fl-rail-row`+(e.active?` active`:``),children:[(0,a.jsx)(`div`,{className:`fl-rail-title tone-`+e.tone,children:e.title}),(0,a.jsxs)(`div`,{className:`fl-rail-snip`,children:[(0,a.jsx)(`span`,{className:`fl-rail-time`,children:e.time}),(0,a.jsx)(`span`,{className:`fl-rail-text`,children:e.snip})]})]},e.title))]}),(0,a.jsxs)(`div`,{className:`fl-canvas`,children:[(0,a.jsxs)(`div`,{className:`fl-finding`,children:[(0,a.jsxs)(`div`,{className:`fl-finding-kicker`,children:[(0,a.jsx)(`svg`,{viewBox:`0 0 24 24`,"aria-hidden":`true`,children:(0,a.jsx)(`path`,{d:`M12 2l1.6 6.4L20 10l-6.4 1.6L12 18l-1.6-6.4L4 10l6.4-1.6z`})}),`Finding 1`]}),(0,a.jsx)(`div`,{className:`fl-finding-title`,children:`The Chicago after-dark vibe`}),(0,a.jsxs)(`p`,{className:`fl-finding-text`,children:[`Chicago’s nightlife thrives on variety. Whether you’re after a quiet, high-end cocktail lounge or a high-energy blues bar, there’s a district for it.`,(0,a.jsx)(`span`,{className:`fl-caret`})]}),(0,a.jsx)(`span`,{className:`fl-badge inferred`,children:`Inferred`})]}),(0,a.jsxs)(`div`,{className:`fl-fig`,children:[(0,a.jsx)(`div`,{className:`fl-fig-label`,children:`Fig. 1 — Nightlife hotspots`}),(0,a.jsxs)(`div`,{className:`fl-map`,children:[(0,a.jsx)(d,{}),(0,a.jsxs)(`div`,{className:`fl-map-zoom`,children:[(0,a.jsx)(`span`,{children:`+`}),(0,a.jsx)(`span`,{children:`−`})]}),l.map((e,t)=>(0,a.jsx)(`span`,{className:`fl-pin tone-`+e.tone+(e.ring?` ring`:``),style:{left:e.left,top:e.top,"--pin-i":String(t)},children:e.n},e.n)),(0,a.jsx)(`span`,{className:`fl-map-attr`,children:`Illustrated map`})]}),(0,a.jsx)(`div`,{className:`fl-fig-note`,children:`Illustrated example · 3 locations`})]}),(0,a.jsxs)(`div`,{className:`fl-cardrow`,children:[(0,a.jsxs)(`div`,{className:`fl-mini`,children:[(0,a.jsx)(`div`,{className:`fl-mini-label`,children:`▦ Nightlife categories`}),s.map((e,t)=>(0,a.jsxs)(`div`,{className:`fl-bar`,children:[(0,a.jsxs)(`div`,{className:`fl-bar-top`,children:[(0,a.jsx)(`span`,{className:`fl-bar-name`,children:e.name}),(0,a.jsx)(`span`,{className:`fl-bar-tag`,children:e.tag})]}),(0,a.jsx)(`div`,{className:`fl-bar-track`,children:(0,a.jsx)(`div`,{className:`fl-bar-fill tone-`+e.tone,style:{"--w":e.w,"--bar-i":String(t)}})})]},e.name))]}),(0,a.jsxs)(`div`,{className:`fl-mini`,children:[(0,a.jsx)(`div`,{className:`fl-mini-label`,children:`✦ Pro-tips for Chicago nights`}),c.map((e,t)=>(0,a.jsxs)(`div`,{className:`fl-tip`,style:{"--tip-i":String(t)},children:[(0,a.jsx)(`svg`,{viewBox:`0 0 24 24`,"aria-hidden":`true`,children:(0,a.jsx)(`path`,{pathLength:1,d:`M20 6L9 17l-5-5`})}),(0,a.jsx)(`span`,{children:e})]},e))]})]}),(0,a.jsxs)(`div`,{className:`fl-dock`,children:[(0,a.jsx)(`span`,{className:`fl-dock-mic`,children:(0,a.jsx)(`svg`,{viewBox:`0 0 24 24`,"aria-hidden":`true`,children:(0,a.jsx)(`path`,{d:`M12 2a3 3 0 0 0-3 3v7a3 3 0 0 0 6 0V5a3 3 0 0 0-3-3zM5 11a7 7 0 0 0 14 0M12 18v3`})})}),(0,a.jsx)(`span`,{className:`fl-dock-text`,children:`Talk, or type — anything.`}),(0,a.jsxs)(`span`,{className:`fl-dock-mark`,children:[(0,a.jsx)(`svg`,{viewBox:`0 0 24 24`,"aria-hidden":`true`,children:(0,a.jsx)(`path`,{d:`M3 21l3.2-.9L18 8.3l-2.3-2.3L4 17.6 3 21z M14.7 7l2.3 2.3`})}),`Highlight`]}),(0,a.jsx)(`span`,{className:`fl-dock-send`,children:(0,a.jsx)(`svg`,{viewBox:`0 0 24 24`,"aria-hidden":`true`,children:(0,a.jsx)(`path`,{d:`M5 12h14M13 6l6 6-6 6`})})})]})]})]})]})]})}export{f as SignatureLoop};