@mavea/mavea 2.0.0 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +101 -0
- package/PRIVACY.md +9 -2
- package/README.md +19 -3
- package/SECURITY.md +1 -1
- package/TERMS.md +4 -2
- package/TRADEMARKS.md +3 -1
- package/bin/mavea.mjs +40 -8
- package/dist/.vite/manifest.json +886 -846
- package/dist/assets/AnnotationLayer-BRYhJ1LB.css +1 -0
- package/dist/assets/AnnotationLayer-Bh1yiSAK.js +2 -0
- package/dist/assets/{AppCommandPalette-DdOPNZ0e.js → AppCommandPalette-DS4sLY_K.js} +1 -1
- package/dist/assets/{AtlasView-DO_p0TdZ.js → AtlasView-CYZ9sfXb.js} +1 -1
- package/dist/assets/BlockEmpty-B-giiUPy.js +1 -0
- package/dist/assets/{CadenceCard-DxceyiPA.js → CadenceCard-j1V7XOxX.js} +1 -1
- package/dist/assets/{CheckLogRail-BibJTid0.js → CheckLogRail-onH7DaxW.js} +1 -1
- package/dist/assets/{CommandPalette-Bs6tpdZl.js → CommandPalette-Cz8h94Jd.js} +1 -1
- package/dist/assets/ConversationVideoStudio-adb7legp.js +1 -0
- package/dist/assets/CourseLessonReader-CkzViEij.js +2 -0
- package/dist/assets/CourseLessonReader-DNHFQOkX.css +1 -0
- package/dist/assets/{CourseRail-CUa7uIGG.css → CourseRail-BDQIWara.css} +1 -1
- package/dist/assets/{CourseRail-BQmUsG6v.js → CourseRail-DD8gtAn4.js} +1 -1
- package/dist/assets/CoursesApp-B0HFM8Al.js +2 -0
- package/dist/assets/{DashPresent-BDWgO9am.js → DashPresent-BdOJ7F9D.js} +1 -1
- package/dist/assets/DashboardDetail-Chrpi1Yk.js +2 -0
- package/dist/assets/DashboardLoopGate-B01Hpm7O.js +2 -0
- package/dist/assets/DashboardLoopRuntime-BcdZtIgH.js +1 -0
- package/dist/assets/{DashboardSettings-DJon1Q4o.js → DashboardSettings-5tn-dw6G.js} +1 -1
- package/dist/assets/DashboardsApp--jjj-GVX.js +2 -0
- package/dist/assets/DeepZoomApp-BpQbKTjc.js +37 -0
- package/dist/assets/DelegatePanel-e4y0CJsn.js +33 -0
- package/dist/assets/{DemoGallery-DrSlMsnu.js → DemoGallery-DF1ShRG4.js} +1 -1
- package/dist/assets/{DropSelect-GwIXHA5o.js → DropSelect-D3Q9Su_x.js} +1 -1
- package/dist/assets/{ExportModal-DBUjC71U.js → ExportModal-DkmyBpeN.js} +1 -1
- package/dist/assets/ExportModal-sX8MPVPW.css +1 -0
- package/dist/assets/{ExtractionPreview-D4M6eXqb.js → ExtractionPreview-C6F1q3qG.js} +2 -2
- package/dist/assets/FeatureUseNotice-CCI4mM39.js +1 -0
- package/dist/assets/{FlagshipCommandPalette-DAO849RC.js → FlagshipCommandPalette-BkjvGrKT.js} +1 -1
- package/dist/assets/{FlagshipShowcase-g2x-1c70.js → FlagshipShowcase-Dx2noFrP.js} +1 -1
- package/dist/assets/{FlashcardsApp-BUKzCr65.js → FlashcardsApp-C1TeLlkY.js} +1 -1
- package/dist/assets/GalleryApp-7oBldBKU.js +1 -0
- package/dist/assets/{HonestByDesign-DgZFEpEx.js → HonestByDesign-DlRrxgrO.js} +1 -1
- package/dist/assets/{HowItWorks-DPFpdeGE.js → HowItWorks-BM2yn2dq.js} +1 -1
- package/dist/assets/LegalApp-DPfTD0jz.js +1 -0
- package/dist/assets/{LegalMarkdownDocument-BBTHuW_M.js → LegalMarkdownDocument-DJgwmK1q.js} +1 -1
- package/dist/assets/{LegalPageShell-hMA-7JLf.js → LegalPageShell-DuIwSVSJ.js} +1 -1
- package/dist/assets/Library-CDgWdTiF.js +1 -0
- package/dist/assets/{LibraryOverlay-DSUWcUe4.js → LibraryOverlay-DsLhiJzF.js} +1 -1
- package/dist/assets/LiveApp-CEaISHEZ.css +1 -0
- package/dist/assets/LiveApp-DNYYimuo.js +79 -0
- package/dist/assets/LiveSettings-CDHQnEtF.js +6 -0
- package/dist/assets/{MindMapViewerDrawer-CKdJtHno.js → MindMapViewerDrawer-C3BgiubE.js} +1 -1
- package/dist/assets/{MindShape-B3lg_z4X.js → MindShape-DVlgSR1B.js} +1 -1
- package/dist/assets/{PinToDashboard-DpQjBLPa.js → PinToDashboard-Dd_egidB.js} +1 -1
- package/dist/assets/{PlanReview-CrTbmMAd.js → PlanReview-wOsBpofo.js} +1 -1
- package/dist/assets/PresentationDeck-BSMzp5T9.js +1 -0
- package/dist/assets/PrismApp-DbbDNVpy.js +2 -0
- package/dist/assets/{PrismAskController-C4MuB8om.js → PrismAskController-BgwijoI2.js} +1 -1
- package/dist/assets/PrismBriefingPlayer-B1_ziOwl.js +2 -0
- package/dist/assets/PrismOverlay-5ZVXu4WL.css +1 -0
- package/dist/assets/PrismOverlay-DLxvsh9l.js +105 -0
- package/dist/assets/PrismWorkbench-ZlhI7Mhw.js +1 -0
- package/dist/assets/{PrivacyApp-A2Bu6LVd.js → PrivacyApp-Ki_5bM9Z.js} +10 -3
- package/dist/assets/ReplayCard-WKBKeSKc.js +2 -0
- package/dist/assets/ReplayOverlay-PFSJv540.js +1 -0
- package/dist/assets/{RewindOverlay-BO7YgDsW.js → RewindOverlay-okltPbfw.js} +1 -1
- package/dist/assets/{RippleApp-BXt7tenS.js → RippleApp-DqVyZYKV.js} +2 -2
- package/dist/assets/{RippleAskController-BzdwYcYY.js → RippleAskController-BqnazbZ7.js} +1 -1
- package/dist/assets/{RippleOverlay-BSxubBwj.js → RippleOverlay-4McJCSV8.js} +2 -2
- package/dist/assets/{SeeDontRead-0He5hS2C.js → SeeDontRead-gARjJuF7.js} +1 -1
- package/dist/assets/ShareModal-C5HVVMtQ.js +2 -0
- package/dist/assets/{ShipCourse-Dg6kCWyH.js → ShipCourse-BUm4TKUk.js} +1 -1
- package/dist/assets/{SignatureLoop-QPwB2oNN.js → SignatureLoop-CYspJuij.js} +1 -1
- package/dist/assets/SynthesisApp-BNhF9aJ2.js +2 -0
- package/dist/assets/SynthesisOverlay-Bvwdc8uQ.js +66 -0
- package/dist/assets/TemplatePicker-DBa4lkpf.js +1 -0
- package/dist/assets/{TermsApp-zcPDYfuh.js → TermsApp-BvwDtgIz.js} +5 -3
- package/dist/assets/TopicCanvas-Cwc6-K3q.js +2 -0
- package/dist/assets/{TourPrism-DbinDupp.js → TourPrism-CCjys3-x.js} +1 -1
- package/dist/assets/{TrackerTile-CrT9u1I4.js → TrackerTile-B4j5qtop.js} +2 -2
- package/dist/assets/{TwoSurfaces-L0CDuyOZ.js → TwoSurfaces-fGm1MJrD.js} +1 -1
- package/dist/assets/WorldOverlay-CLWtwuSl.css +1 -0
- package/dist/assets/WorldOverlay-JOp1rLyU.js +2 -0
- package/dist/assets/{WowFeatures-CwBk4ZMO.js → WowFeatures-D5dJvp9W.js} +1 -1
- package/dist/assets/{ZoomDeck-DlnesweX.js → ZoomDeck-DYmkT0TA.js} +1 -1
- package/dist/assets/{alternateFinishes-Cgks49KV.js → alternateFinishes-BHcX08Hs.js} +2 -2
- package/dist/assets/annotationAuto-B8_I3PNS.js +1 -0
- package/dist/assets/annotationReel-BA8Fv9Or.js +1 -0
- package/dist/assets/audioTrack-BJ2D_nuy.js +1 -0
- package/dist/assets/{BlockEmpty-B82uCse8.js → axis-DHAV38YM.js} +1 -1
- package/dist/assets/backup-DkCsHNEE.js +1 -0
- package/dist/assets/cache-7UEbF3S6.js +1 -0
- package/dist/assets/canvas-CYrbzF43.js +1 -0
- package/dist/assets/capture-Y6Qm8zCN.js +2 -0
- package/dist/assets/{catalog-Db9GWM6N.js → catalog-CRekRbKO.js} +1 -1
- package/dist/assets/chapters-DcdG3Lu8.js +1 -0
- package/dist/assets/{codeContext-goNoLAIr.js → codeContext-CFnI3GLf.js} +1 -1
- package/dist/assets/{confirmAdd-CZ829Mbx.js → confirmAdd-D-TTCQ31.js} +1 -1
- package/dist/assets/contentVault-XKWjF2FB.js +1 -0
- package/dist/assets/{dashboardEvents-CiayRLrH.js → dashboardEvents-MzCzak6K.js} +1 -1
- package/dist/assets/{deepen-DAeHHFiI.js → deepen-FZiVqiEc.js} +1 -1
- package/dist/assets/effort-BftNJCCV.js +39 -0
- package/dist/assets/empty-D51uhW0E.js +1 -0
- package/dist/assets/explode-niun7Zqc.js +15 -0
- package/dist/assets/{format-g3dP8OI3.js → format-BkvssSOr.js} +1 -1
- package/dist/assets/{generate-COfYQFmT.js → generate-BZobrQPX.js} +1 -1
- package/dist/assets/{generateBeats-COflu5Zi.js → generateBeats-Dqtfd8HC.js} +1 -1
- package/dist/assets/generateCourse-DPL0bO3L.js +28 -0
- package/dist/assets/generateLive-B7nlaqz8.js +24 -0
- package/dist/assets/{gesture-Bouqjr3g.js → gesture-BBS5nQEi.js} +2 -2
- package/dist/assets/{githubBrowser-BDiuD9dz.js → githubBrowser-CErQprLW.js} +1 -1
- package/dist/assets/homeTarget-CDc-r2mj.js +1 -0
- package/dist/assets/http-Bqk6nJiH.js +2 -0
- package/dist/assets/index-CFE0vqqO.css +1 -0
- package/dist/assets/{index-LiHcEJt_.js → index-Db-FgYxX.js} +4 -4
- package/dist/assets/json-J4Y32_i9.js +1 -0
- package/dist/assets/kokoro-yB7iU_JU.js +1 -0
- package/dist/assets/{ledger-Cv0LBflx.js → ledger-DHS2di3l.js} +1 -1
- package/dist/assets/lens-DyGK7Owa.js +1 -0
- package/dist/assets/{lib-u95BsX_B.js → lib-Dkb5WBRc.js} +1 -1
- package/dist/assets/liveSchema-Z_39HuDI.js +125 -0
- package/dist/assets/{loader-DgMLGfAC.js → loader-Ciz6XbG-.js} +2 -2
- package/dist/assets/{model-CAewjw45.js → model-FR-9md4s.js} +1 -1
- package/dist/assets/{neighborhoods-CqECCmo8.js → neighborhoods-B56WegJs.js} +1 -1
- package/dist/assets/notes-CEloxKQ3.js +1 -0
- package/dist/assets/offers-eBNj_lSP.js +1 -0
- package/dist/assets/{openWorld-BHTJM39n.js → openWorld-B4VY6xO7.js} +1 -1
- package/dist/assets/{owners-HRBX7JN_.js → owners-CP-4Q59L.js} +1 -1
- package/dist/assets/{pen-DtEW1xf4.js → pen-UKrUHlDA.js} +1 -1
- package/dist/assets/{penStrokes-DlHnO9xE.js → penStrokes-CTC3AYiz.js} +1 -1
- package/dist/assets/{perfProbe-ezVn1mOu.js → perfProbe-DrOeB7yd.js} +1 -1
- package/dist/assets/{pin-BPGVDgnq.js → pin-C5_s4Ju5.js} +1 -1
- package/dist/assets/{planTracker-BwoKEftp.js → planTracker-BA-x4jbw.js} +1 -1
- package/dist/assets/{portal-B9DmFo6J.js → portal-TqJbr2rR.js} +1 -1
- package/dist/assets/prewarm-Bt5X_9CM.js +1 -0
- package/dist/assets/providers-CPhoN8j0.js +1 -0
- package/dist/assets/quietHours-LtXDl4-v.js +1 -0
- package/dist/assets/{ready-yBSGJubb.js → ready-_sg3IJkE.js} +1 -1
- package/dist/assets/{registry-7tKTrzeZ.js → registry-BHDUu15I.js} +1 -1
- package/dist/assets/{registry-D06LKiUk.js → registry-BPLbZIVz.js} +1 -1
- package/dist/assets/registry-BQuygaKz.js +1 -0
- package/dist/assets/registry-B_wlsfxh.js +1 -0
- package/dist/assets/{registry-Bl2qfp5V.js → registry-Bjf2Ggs6.js} +1 -1
- package/dist/assets/{registry-CE1T0z9x.js → registry-BmjYillB.js} +1 -1
- package/dist/assets/{registry-DGNSqTxE.js → registry-BodYWiga.js} +1 -1
- package/dist/assets/{registry-Bl7zAWKt.js → registry-BwlvYVHq.js} +1 -1
- package/dist/assets/{registry-BJEvFgoL.js → registry-BxkAuBx8.js} +1 -1
- package/dist/assets/{registry-BdHj_oIs.js → registry-C3bIc5Kp.js} +1 -1
- package/dist/assets/{registry-CEV5h2cu.css → registry-CIcGBgtK.css} +1 -1
- package/dist/assets/{registry-BlujNlQJ.js → registry-CfIJ9dJS.js} +1 -1
- package/dist/assets/{registry-CvylL2BN.css → registry-CmWPyj7Q.css} +1 -1
- package/dist/assets/{registry-BDXwUn3i.js → registry-CvtHBjkb.js} +1 -1
- package/dist/assets/{registry-Dd1lcXrO.js → registry-Cz5cZREW.js} +2 -2
- package/dist/assets/registry-Di1fTdpi.js +48 -0
- package/dist/assets/registry-GxnzELw0.js +1 -0
- package/dist/assets/{registry-Cgo4C0ux.js → registry-JRteQJcE.js} +1 -1
- package/dist/assets/registry-MwJlqlFZ.js +1 -0
- package/dist/assets/{registry-B53EEn8S.js → registry-YrewlFlo.js} +1 -1
- package/dist/assets/{registry-qRfnKTt4.js → registry-uiAoJKXu.js} +1 -1
- package/dist/assets/{relate-aQFFr11O.js → relate-CCma73G9.js} +1 -1
- package/dist/assets/{replay-CalqEgdW.js → replay-dMDmsTaD.js} +1 -1
- package/dist/assets/{run-CwMSPOps.js → run-BVgCc5Xi.js} +1 -1
- package/dist/assets/{run-DCQrxgHA.js → run-CW67JOGe.js} +1 -1
- package/dist/assets/{run-CuHaB8wF.js → run-DqsfL9JC.js} +1 -1
- package/dist/assets/{select-wEtBn9U6.js → select-BuqyXI8k.js} +1 -1
- package/dist/assets/sentenceCase-CLDiNB0f.js +1 -0
- package/dist/assets/shard054-CNzJxw2V.js +1 -0
- package/dist/assets/shard070-BmNyRhxw.js +1 -0
- package/dist/assets/spokenText-Dy-GZvZV.js +1 -0
- package/dist/assets/store-C9s8Bfz0.js +1 -0
- package/dist/assets/store-CgA7mKy1.js +1 -0
- package/dist/assets/store-D16dGt7I.js +1 -0
- package/dist/assets/{store-BWLbFXiY.js → store-DqOaVRLn.js} +1 -1
- package/dist/assets/store-gfPI5TVE.js +1 -0
- package/dist/assets/useDashboardLoop-Cnxmf7wU.js +5 -0
- package/dist/assets/{useDashboards-lgQnk2Al.js → useDashboards-B-EjE8FH.js} +1 -1
- package/dist/assets/{useLedger-1WVXef68.js → useLedger-D4cXEwI0.js} +1 -1
- package/dist/assets/useLiveConfig-CvOQTr0s.js +1 -0
- package/dist/assets/useStudy-70Iz4ZVn.js +1 -0
- package/dist/assets/validate-MQG0EcTD.js +4 -0
- package/dist/assets/walkSync-D6leFb_u.js +1 -0
- package/dist/fonts/LICENSE.txt +2 -0
- package/dist/fonts/PROVENANCE.md +1 -0
- package/dist/fonts/caveat-var-latin.woff2 +0 -0
- package/dist/fonts/fonts.css +10 -0
- package/dist/index.html +6 -2
- package/dist/legal/PRIVACY.md +9 -2
- package/dist/legal/SECURITY.md +1 -1
- package/dist/legal/TERMS.md +4 -2
- package/dist/legal/TRADEMARKS.md +3 -1
- package/docs/media/go-hub.jpg +0 -0
- package/docs/media/living-answer.jpg +0 -0
- package/package.json +1 -1
- package/dist/assets/AnnotationLayer-Cccb12ps.js +0 -0
- package/dist/assets/AnnotationLayer-ClU-e6qL.css +0 -1
- package/dist/assets/BriefingPlayer-74mRKyjl.js +0 -1
- package/dist/assets/ConversationVideoStudio-DMIPUCcq.js +0 -1
- package/dist/assets/CourseLessonReader-COmTQdSK.css +0 -1
- package/dist/assets/CourseLessonReader-D29Kix4f.js +0 -2
- package/dist/assets/CoursesApp-DcDsS_ZS.js +0 -2
- package/dist/assets/DashboardDetail-BrnAdWfy.js +0 -2
- package/dist/assets/DashboardLoopGate-NxMcQ4rD.js +0 -2
- package/dist/assets/DashboardLoopRuntime-Dsy9u1wa.js +0 -1
- package/dist/assets/DashboardsApp-DxyMn3x_.js +0 -2
- package/dist/assets/DeepZoomApp-nNjqoyYE.js +0 -37
- package/dist/assets/DelegatePanel-DN_ZL0j7.js +0 -33
- package/dist/assets/ExportModal-D4WpAg2c.css +0 -1
- package/dist/assets/FeatureUseNotice-Bda9jr3W.js +0 -1
- package/dist/assets/GalleryApp-ot_A7ZF-.js +0 -1
- package/dist/assets/LegalApp-C56kWdmK.js +0 -1
- package/dist/assets/Library-CVj7R6F4.js +0 -1
- package/dist/assets/LiveApp-B62EMybC.js +0 -79
- package/dist/assets/LiveApp-CziqEsOb.css +0 -1
- package/dist/assets/LiveSettings-BITIaMoT.js +0 -6
- package/dist/assets/PresentationDeck-CfYadu9V.js +0 -1
- package/dist/assets/PrismApp-bRKK_3JA.js +0 -2
- package/dist/assets/PrismBriefingPlayer-ChJj6hSS.js +0 -2
- package/dist/assets/PrismOverlay-BwnF4BEn.css +0 -1
- package/dist/assets/PrismOverlay-Pp6ZKmTc.js +0 -105
- package/dist/assets/PrismWorkbench-BCV7r4Oa.js +0 -1
- package/dist/assets/ReplayCard-B6NYiYzQ.js +0 -2
- package/dist/assets/ReplayOverlay-BJKtJ-vc.js +0 -1
- package/dist/assets/ShareModal-xYdZWJxy.js +0 -2
- package/dist/assets/SynthesisApp-DrCq6NDa.js +0 -2
- package/dist/assets/SynthesisOverlay-DCa-2Pz_.js +0 -66
- package/dist/assets/TopicCanvas-Bw4bMFpe.js +0 -2
- package/dist/assets/WorldOverlay-BcjqG1BR.js +0 -2
- package/dist/assets/WorldOverlay-D7ay5y4D.css +0 -1
- package/dist/assets/annotationAuto-B2UdfJNj.js +0 -1
- package/dist/assets/annotationReel-K2FYv-3B.js +0 -1
- package/dist/assets/backup-685QrAjt.js +0 -1
- package/dist/assets/cache-CvbSI-pr.js +0 -1
- package/dist/assets/canvas-C3O7MEA3.js +0 -1
- package/dist/assets/capture-DgJLQ_0-.js +0 -2
- package/dist/assets/chapters-CIvdCeBC.js +0 -1
- package/dist/assets/contentVault-xfUwSJ3i.js +0 -1
- package/dist/assets/effort-jJe4iMIq.js +0 -39
- package/dist/assets/empty-BO1NC9qY.js +0 -1
- package/dist/assets/explode-CPnvJiTg.js +0 -15
- package/dist/assets/friendlyAsk-BBdRZIar.js +0 -1
- package/dist/assets/generateCourse-BldPpgdh.js +0 -28
- package/dist/assets/generateLive-DGwnpIip.js +0 -24
- package/dist/assets/homeTarget-CwFsJYwb.js +0 -1
- package/dist/assets/http-Lar_UMKb.js +0 -2
- package/dist/assets/index-BIUYTk1W.css +0 -1
- package/dist/assets/json-B0N3XRZU.js +0 -1
- package/dist/assets/kokoro-DXRj0KQX.js +0 -1
- package/dist/assets/lens-ChFJD9il.js +0 -1
- package/dist/assets/liveSchema-DyfND6P2.js +0 -100
- package/dist/assets/notes-DzIAEESd.js +0 -1
- package/dist/assets/prewarm-BgUqAJbF.js +0 -1
- package/dist/assets/providers-0DthJW_I.js +0 -1
- package/dist/assets/quietHours-DyynzDyC.js +0 -1
- package/dist/assets/registry-BQzvA61G.js +0 -1
- package/dist/assets/registry-BT6ydF33.js +0 -1
- package/dist/assets/registry-CPImC7mO.js +0 -1
- package/dist/assets/registry-KRYoVMCh.js +0 -48
- package/dist/assets/registry-QbArAJKB.js +0 -1
- package/dist/assets/shard054-BoC-LNYu.js +0 -1
- package/dist/assets/shard070-Dm9m2a5U.js +0 -1
- package/dist/assets/spokenText-C88IQJ0M.js +0 -1
- package/dist/assets/store-Ba9vzL4H.js +0 -1
- package/dist/assets/store-BwyOArJl.js +0 -1
- package/dist/assets/store-D-f8ZuaK.js +0 -1
- package/dist/assets/store-ruEsXJjU.js +0 -1
- package/dist/assets/useDashboardLoop-ifcuVRo-.js +0 -5
- package/dist/assets/useLiveConfig-B4CmBiAK.js +0 -1
- package/dist/assets/useStudy-CySgE3Cx.js +0 -1
- package/dist/assets/validate-sGUCmPAs.js +0 -4
- package/dist/assets/walkSync-DBne70gg.js +0 -1
- /package/dist/assets/{BriefingPlayer-DHV4vMga.css → PrismBriefingPlayer-DHV4vMga.css} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
:root{--ink-gesture:#e8963f;--ink-key:var(--presence);--ink-cool:#5b8dee}:root[data-theme=light]{--ink-gesture:#c2722e;--ink-cool:#3566c9}.live-voice .card-grid>div,.live-voice .focus-hero-card.focus-in{position:relative}.ink-layer{pointer-events:none;z-index:5;width:100%;height:100%;position:absolute;inset:0;overflow:hidden}.live-voice .card-grid{position:relative}.ink-connect-layer{pointer-events:none;z-index:7;width:100%;height:100%;position:absolute;inset:0;overflow:visible}.ink-stroke{fill:none;stroke:var(--ink-gesture,var(--warning));stroke-width:2.6px;stroke-linecap:round;stroke-linejoin:round;opacity:.92;stroke-dasharray:1;stroke-dashoffset:1px;animation:ink-draw 1s cubic-bezier(.45, 0, .3, 1) var(--ink-delay,0s) forwards}.ink-halo{fill:none;stroke:var(--ink-gesture,var(--warning));stroke-width:7px;stroke-linecap:round;stroke-linejoin:round;opacity:.13;stroke-dasharray:1;stroke-dashoffset:1px;animation:ink-draw 1s cubic-bezier(.45, 0, .3, 1) var(--ink-delay,0s) forwards}.ink-stroke.ink-head{stroke-width:2.4px;animation-duration:.28s;animation-delay:calc(var(--ink-delay,0s) + .96s)}@keyframes ink-draw{to{stroke-dashoffset:0}}.ink-stroke[data-color=key],.ink-halo[data-color=key]{stroke:var(--ink-key)}.ink-stroke[data-color=cool],.ink-halo[data-color=cool]{stroke:var(--ink-cool)}.ink-fill{fill:var(--ink-gesture);stroke:none;opacity:.18;transform-origin:0;transform-box:fill-box;animation:ink-fill-reveal .7s cubic-bezier(.4, 0, .2, 1) var(--ink-delay,0s) forwards}.ink-fill[data-color=key]{fill:var(--ink-key)}.ink-fill[data-color=cool]{fill:var(--ink-cool)}@keyframes ink-fill-reveal{0%{opacity:.04;transform:scaleX(0)}to{opacity:.18;transform:scaleX(1)}}.ink-note{fill:var(--ink-gesture,var(--warning));letter-spacing:.01em;opacity:0;animation:ink-note-in .4s ease-out calc(var(--ink-delay,0s) + .5s) forwards;font-family:Caveat,Bradley Hand,Segoe Print,Marker Felt,cursive;font-size:16px;font-weight:600}.ink-note[data-color=key]{fill:var(--ink-key)}.ink-note[data-color=cool]{fill:var(--ink-cool)}.ink-note.ink-glyph{letter-spacing:0;font-size:26px;font-style:normal;font-weight:700}@keyframes ink-note-in{0%{opacity:0;transform:translateY(2px)}to{opacity:.95;transform:translateY(0)}}.ink-step-dot{fill:var(--ink-gesture,var(--warning));opacity:0;animation:ink-note-in .35s ease-out var(--ink-delay,0s) forwards}.ink-step-dot[data-color=key]{fill:var(--ink-key)}.ink-step-dot[data-color=cool]{fill:var(--ink-cool)}.ink-step-num{fill:#fff;opacity:0;animation:ink-note-in .35s ease-out var(--ink-delay,0s) forwards;font-family:inherit;font-size:10px;font-weight:700}@media (prefers-reduced-motion:reduce){.ink-stroke,.ink-halo{stroke-dashoffset:0;animation:none}.ink-fill{opacity:.18;animation:none}.ink-note{opacity:.95;animation:none}.ink-step-dot,.ink-step-num{opacity:1;animation:none}}[data-inking]:after{content:"✦ MAVÉA IS DRAWING";letter-spacing:.1em;text-transform:uppercase;color:var(--ink-gesture);pointer-events:none;z-index:6;white-space:nowrap;animation:ink-badge var(--ink-badge-dur,2.4s) ease forwards;font-size:9px;font-weight:700;position:absolute;top:10px;right:12px}[data-inking=key]:after{color:var(--ink-key)}[data-inking=cool]:after{color:var(--ink-cool)}@keyframes ink-badge{0%{opacity:0;transform:translateY(-3px)}12%{opacity:.9;transform:translateY(0)}70%{opacity:.9;transform:translateY(0)}to{opacity:0;transform:translateY(-2px)}}@media (prefers-reduced-motion:reduce){[data-inking]:after{animation:none;display:none}}.ink-user-overlay{pointer-events:none;z-index:10;width:100%;height:100%;position:absolute;inset:0;overflow:visible}.ink-armed{cursor:crosshair;touch-action:none}.ink-capturing{touch-action:none}.ink-jump-glow{animation:.75s ease-out both ink-jump-glow}@keyframes ink-jump-glow{0%{box-shadow:0 0 0 0 color-mix(in oklab, var(--ink-gesture) 55%, transparent), var(--shadow-card,none)}35%{box-shadow:0 0 0 5px color-mix(in oklab, var(--ink-gesture) 28%, transparent), var(--shadow-card,none)}to{box-shadow:0 0 0 0 transparent, var(--shadow-card,none)}}.ink-user-stroke{fill:none;stroke:var(--ink-cool);stroke-width:2.4px;stroke-linecap:round;stroke-linejoin:round;opacity:.85;transition:opacity .4s}.ink-user-halo{fill:none;stroke:var(--ink-cool);stroke-width:7px;stroke-linecap:round;stroke-linejoin:round;opacity:.11;transition:opacity .4s}.ink-user-settled{opacity:.9}.ink-highlight{fill:color-mix(in oklab, var(--ink-cool) 22%, transparent);stroke:color-mix(in oklab, var(--ink-cool) 55%, transparent);stroke-width:1px}.mark-toggle{border:1px solid var(--line);border-radius:var(--r-full);background:var(--surface-elevated);color:var(--text-secondary);font:inherit;cursor:pointer;align-items:center;gap:5px;padding:5px 10px;font-size:12px;font-weight:600;transition:color .18s,border-color .18s,background .18s;display:inline-flex}.mark-toggle:hover{color:var(--text-primary);border-color:color-mix(in oklab, var(--ink-cool) 45%, var(--line))}.mark-toggle.on{color:var(--ink-cool);border-color:color-mix(in oklab, var(--ink-cool) 60%, transparent);background:color-mix(in oklab, var(--ink-cool) 12%, var(--surface-elevated))}.ink-bar{width:100%;max-width:var(--canvas-col-max);flex-wrap:wrap;align-items:center;gap:8px;margin-inline:auto;display:flex}.ink-miss{color:var(--text-secondary);border-radius:var(--r-sm);background:color-mix(in oklab, var(--warning) 12%, var(--surface-elevated));padding:3px 10px;font-size:12px;line-height:1.3;animation:.3s cubic-bezier(.16,1,.3,1) both ink-coach-in}.ink-howto{border-radius:var(--r-full);background:color-mix(in oklab, var(--ink-cool) 11%, var(--surface-elevated));color:var(--text-secondary);align-items:center;gap:8px;padding:4px 11px;font-size:12px;line-height:1.3;animation:.3s cubic-bezier(.16,1,.3,1) both ink-coach-in;display:inline-flex}.ink-howto-dot{background:var(--ink-cool);width:7px;height:7px;box-shadow:0 0 0 3px color-mix(in oklab, var(--ink-cool) 22%, transparent);border-radius:50%;flex:none}.ink-coach{border:1px solid color-mix(in oklab, var(--ink-cool) 38%, var(--line));border-radius:var(--r-md);background:color-mix(in oklab, var(--ink-cool) 9%, var(--surface-elevated));max-width:540px;color:var(--text-secondary);align-items:center;gap:8px;padding:6px 8px 6px 12px;font-size:12px;line-height:1.35;animation:.4s cubic-bezier(.16,1,.3,1) both ink-coach-in;display:inline-flex}.ink-coach strong{color:var(--text-primary);font-weight:650}.ink-coach-spark{font-size:14px}.ink-coach-text{flex:1}.ink-coach-x{border-radius:var(--r-full);width:22px;height:22px;color:var(--text-secondary);cursor:pointer;background:0 0;border:none;flex:none;justify-content:center;align-items:center;padding:0;display:inline-flex}.ink-coach-x:hover{color:var(--text-primary);background:color-mix(in oklab, var(--text-primary) 8%, transparent)}@keyframes ink-coach-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}.ink-bar.coaching .mark-toggle{animation:2.1s ease-in-out infinite ink-mark-pulse}@keyframes ink-mark-pulse{0%{box-shadow:0 0 0 0 color-mix(in oklab, var(--ink-cool) 45%, transparent)}70%{box-shadow:0 0 0 6px color-mix(in oklab, var(--ink-cool) 0%, transparent)}to{box-shadow:0 0 0 0 color-mix(in oklab, var(--ink-cool) 0%, transparent)}}.ink-dock{flex-wrap:wrap;align-items:center;gap:6px;padding:6px 2px;display:flex}.ink-chip{border:1px solid color-mix(in oklab, var(--ink-cool) 40%, var(--line));border-radius:var(--r-full);background:color-mix(in oklab, var(--ink-cool) 9%, var(--surface-elevated));max-width:240px;color:var(--text-primary);align-items:center;gap:4px;padding:4px 6px 4px 10px;font-size:12px;line-height:1.3;display:inline-flex}.ink-chip-text{white-space:nowrap;text-overflow:ellipsis;min-width:0;overflow:hidden}.ink-chip-x{border-radius:var(--r-full);width:16px;height:16px;color:var(--ink-cool);cursor:pointer;background:0 0;border:none;flex:none;justify-content:center;align-items:center;padding:0;display:inline-flex}.ink-chip-x:hover{background:color-mix(in oklab, var(--ink-cool) 18%, transparent)}.ink-chip-act{border:1px solid var(--line);border-radius:var(--r-full);background:var(--surface-elevated);color:var(--text-secondary);font:inherit;cursor:pointer;padding:4px 11px;font-size:12px;font-weight:600}.ink-chip-act:hover{color:var(--text-primary)}.ink-chip-act.primary{color:var(--surface-default);background:var(--ink-cool);border-color:#0000}.ink-sr{clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}@media (width<=600px){.ink-coach-text{-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}}@media (prefers-reduced-motion:reduce){.ink-user-stroke,.ink-user-halo,.mark-toggle{transition:none}.ink-coach,.ink-bar.coaching .mark-toggle{animation:none}}.live-voice .card-grid.note-gutter{padding-left:218px;padding-right:218px}.note-rail{pointer-events:none;z-index:6;position:absolute;top:0;bottom:0;right:0}.note-rail.left{left:0;right:auto}.margin-note{border-left:2.5px solid var(--ink-gesture,var(--warning));border-radius:var(--r-sm);background:color-mix(in oklab, var(--ink-gesture,var(--warning)) 6%, var(--surface-elevated));box-shadow:var(--shadow-raised);color:var(--text-primary);opacity:0;animation:margin-note-in .42s var(--ease-out,ease) both;animation-delay:var(--note-delay,0s);padding:8px 10px 8px 12px;font-size:12px;font-style:italic;line-height:1.5;position:absolute;left:0;right:0}@keyframes margin-note-in{0%{opacity:0;transform:translate(8px)}to{opacity:1;transform:translate(0)}}.note-rail-arrows{pointer-events:none;z-index:6;width:100%;height:100%;position:absolute;inset:0;overflow:visible}.note-tether{stroke:var(--ink-gesture,var(--warning));stroke-width:1.8px;stroke-linecap:round;stroke-linejoin:round;fill:none;opacity:.75;stroke-dasharray:1;stroke-dashoffset:1px;animation:note-tether-draw .6s var(--ease-out,ease) forwards;animation-delay:calc(var(--note-delay,0s) + .12s)}.note-tether-head{animation-delay:calc(var(--note-delay,0s) + .62s);animation-duration:.22s}@keyframes note-tether-draw{to{stroke-dashoffset:0}}@media (width<=1279px){.live-voice .card-grid.note-gutter{padding-left:0;padding-right:0}.note-rail,.note-rail-arrows{display:none}}@media (prefers-reduced-motion:reduce){.margin-note{opacity:1;animation:none}.note-tether{stroke-dashoffset:0;animation:none}}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{t as e}from"./react-BZJXY1be.js";import{t}from"./compiler-runtime-qQQXpJgv.js";import{t as n}from"./jsx-runtime-DeHZSEgm.js";import{lt as r}from"./index-Db-FgYxX.js";import{r as i}from"./format-q0LwBjID.js";import{i as a,n as o,r as s,t as c}from"./gesture-BBS5nQEi.js";import{n as l}from"./number-zqlPMliA.js";import{t as u}from"./emphasize-BqCIst-B.js";var d=e(),f=t(),p=r(),m=`svg text, img, canvas, video, button, input, select, textarea, a`,h=`.ink-layer, .ink-connect-layer, .note-rail`,g=600,_={left:-1e9,top:-1e9,width:2e9,height:2e9};function v(e){let t=[],n=e=>{e.width>0&&e.height>0&&t.length<g&&t.push(e)},r=document.createTreeWalker(e,NodeFilter.SHOW_TEXT),i;for(;i=r.nextNode();){if(t.length>=g)return[_];let e=i;if(!e.textContent?.trim()||e.parentElement?.closest(h))continue;let r=document.createRange();if(r.selectNodeContents(e),typeof r.getClientRects==`function`)for(let e of Array.from(r.getClientRects()))n(e)}for(let r of Array.from(e.querySelectorAll(m))){if(t.length>=g)return[_];r.closest(h)||n(r.getBoundingClientRect())}return t}function y(e,t,n=3){return e.left-n<t.left+t.width&&e.left+e.width+n>t.left&&e.top-n<t.top+t.height&&e.top+e.height+n>t.top}function b(e,t,n=3){for(let r of e)if(!t.some(e=>y(r.box,e,n)))return r.place;return null}var x=2,S=.5,C=28,w=/^[+\-\u2212]?\s*[$€£¥₹]?\s*\d[\d,]*(?:\.\d+)?\s*(?:%|pts?|×|x|k|m|bn)?$/i;function T(e){let t=Math.abs(e)>=10?Math.round(e):Math.round(e*10)/10;return i(t,{decimals:+!Number.isInteger(t)})}function E(e,t){return`${e<0?`−`:`+`}${T(Math.abs(e))}${t}`}function ee(e,t,n){if(n&&!w.test(n))return n;let r=l(e),i=l(t);if(!r||!i||r.kind!==i.kind)return n;let a=e=>e.length>C?e.slice(0,C):e;if(r.kind===`pct`){let e=i.value-r.value;return Math.abs(e)<S?n:a(E(e,` pts`))}if(r.value===0)return n;let o=i.value/r.value;if(o>=x)return a(`${T(o)}×`);let s=(i.value-r.value)/Math.abs(r.value)*100;return Math.abs(s)<S?n:a(E(s,`%`))}function te(e){let t=u(e).filter(e=>e.accent).map(e=>e.text.trim()),n=[],r=/\b[A-Z][\w+#.&-]*(?:\s+[A-Z][\w+#.&-]*)*/g;for(let t=r.exec(e);t;t=r.exec(e)){let r=e.slice(0,t.index).trimEnd();if((r===``||/[.!?…:—]$/.test(r)||/["“]$/.test(r))&&!t[0].includes(` `))continue;let i=t[0].replace(/[.,;:!?]+$/,``);i.length<3||n.push(i)}return{figures:t,labels:n}}function D(e){let t=``,n=[];for(let r=0;r<e.length;r++){let i=e[r];/[\s,\u00a0$€£¥₹₩₽+%°]/.test(i)||(t+=i.toLowerCase(),n.push(r))}return{norm:t,map:n}}var O=/[0-9.]/;function ne(e){return e.length>0&&[...e].every(e=>O.test(e))}function re(e,t,n){let r=t>0?e[t-1]:``,i=t+n<e.length?e[t+n]:``;return O.test(r)||O.test(i)}var ie=`.ink-layer, .block-ask, .card-eyebrow`;function k(e){let t=[],n=document.createTreeWalker(e,NodeFilter.SHOW_TEXT);for(let e=n.nextNode();e;e=n.nextNode()){let n=e,r=n.textContent??``;if(!r.trim()||n.parentElement?.closest(ie))continue;let{norm:i,map:a}=D(r);t.push({node:n,raw:r,norm:i,map:a})}return t}function A(e,t){for(let n of t){let t=D(n).norm;if(t.length<2)continue;let r=ne(t);for(let{node:n,norm:i,map:a}of e){let e=i.indexOf(t);for(;e>=0;){if(!r||!re(i,e,t.length))return{node:n,start:a[e],end:a[e+t.length-1]+1};e=i.indexOf(t,e+1)}}}return null}function j(e,t){return A(k(e),t)}var M=4,N=40,P=new Set([`the`,`and`,`with`,`from`,`into`,`this`,`that`,`then`,`than`,`over`,`under`,`each`,`both`,`more`,`less`,`total`,`other`]);function F(e,t){let n=D(t).norm;if(n.length<M)return null;let r=new Set,i=[];for(let t of e){let e=t.raw.trim();if(e.length<M||e.length>N)continue;let a=t.norm;a.length<M||P.has(a)||r.has(a)||n.includes(a)&&(r.add(a),i.push(e))}return i.sort((e,t)=>t.length-e.length),i.length?A(e,i):null}function I(e){let t=k(e);return{find:e=>A(t,e),echoed:e=>F(t,e)}}function ae(e,t){let n=e.node.parentElement;for(let e=0;n&&n!==t&&e<4;e++,n=n.parentElement)if(n.matches(`li, tr, .bar-col, .cat-row, .kpi, [class*="-row"], [class*="-item"], [class*="-col"]`))return n;return null}var oe=e=>[e.overflow,e.overflowX,e.overflowY].some(e=>e!==``&&e!==`visible`);function L(e){let t=e.nodeType===Node.ELEMENT_NODE?e:e.parentElement;for(let e=t;e;e=e.parentElement){let t=getComputedStyle(e);if(t.display===`none`||t.visibility===`hidden`||Number(t.opacity)===0)return!1;if(!oe(t))continue;let n=e.getBoundingClientRect();if(n.height<=1||n.width<=1)return!1}return!0}function R(e){let t=document.createRange();if(t.setStart(e.node,e.start),t.setEnd(e.node,e.end),typeof t.getClientRects!=`function`)return null;let n=t.getClientRects(),r=n.length>0?n[0]:t.getBoundingClientRect();return!r||r.width<=0||r.height<=0?null:L(e.node)?r:null}function se(e){let t=document.createRange();return t.setStart(e.node,e.start),t.setEnd(e.node,e.end),typeof t.getClientRects!=`function`||!L(e.node)?[]:Array.from(t.getClientRects()).filter(e=>e.width>0&&e.height>0)}var z=100,ce=500,B=18,V=2,H=`.ink-layer, .ink-connect-layer, .note-rail`;function U(e){return!!(e instanceof Element?e:e.parentElement)?.closest(H)}function W(e,t,n,r){let i=!1,a,o=0,s=null,c=0,l,u,d,f=e=>{if(!l&&typeof ResizeObserver<`u`&&(l=new ResizeObserver(()=>h()),l.observe(e)),u||(u=e,e.addEventListener(`transitionend`,h)),!d&&typeof MutationObserver<`u`){let t=t=>U(t.target)?!1:t.type===`attributes`?t.target!==e||t.attributeName!==`style`&&t.attributeName!==`data-inking`:t.type!==`childList`||[...Array.from(t.addedNodes),...Array.from(t.removedNodes)].some(e=>!U(e));d=new MutationObserver(e=>{e.some(t)&&h()}),d.observe(e,{subtree:!0,childList:!0,attributes:!0,characterData:!0})}},p=()=>o>=B?ce:z,m=()=>{if(i)return;let l=e();if(l){f(n(l));let e=t(l);if(c=e===s?c+1:1,s=e,r(l),c>=V){o=0;return}}o++,!(o>=(s===null?B:30))&&(a=window.setTimeout(m,p()))},h=()=>{i||(window.clearTimeout(a),s===null&&(o=0),a=window.setTimeout(m,p()))};return a=window.setTimeout(m,z),window.addEventListener(`resize`,h),()=>{i=!0,window.clearTimeout(a),window.removeEventListener(`resize`,h),l?.disconnect(),d?.disconnect(),u?.removeEventListener(`transitionend`,h)}}function G(e){for(let t=e.length-1;t>=0;t--){let n=e[t].getBoundingClientRect();if(n.width>0&&n.height>0)return e[t]}return e[e.length-1]??null}var le=140;function ue(e,t=le){let n=e.trim().replace(/\s+/g,` `);if(!n)return``;let r=/^(.*?[.!?])(?:\s|$)/.exec(n)?.[1]??n;if(r.length<=t)return r;let i=r.slice(0,t+1),a=i.lastIndexOf(` `);return(a>0?i.slice(0,a):i.slice(0,t)).replace(/[,;:\s]+$/,``)+`…`}function de(e,t=12,n){if(e.length===0)return[];let r=e.map((e,t)=>({top:e.top,h:e.height??84,i:t})).sort((e,t)=>e.top-t.top||e.i-t.i),i=Array(e.length).fill(0),a=-1/0,o=-1/0;for(let{top:e,h:n,i:s}of r){let r=Math.max(e,a);i[s]=r,a=r+n+t,o=r+n}if(n!==void 0&&o>n){let e=Math.min(o-n,Math.max(0,Math.min(...i)));if(e>0)for(let t=0;t<i.length;t++)i[t]-=e}return i}var K=n(),fe=12,pe=e=>Math.ceil(Math.max(1,e.length)/26)*18+18,me=218,q=18;function J(e,t,n,r,i){let a=Math.min(n,r),o=Math.max(n,r);return e.some(e=>e!==t&&e.right>a&&e.left<o&&e.bottom>i-10&&e.top<i+10)}function he(e,t){let n=(t??document).querySelector(`.card-grid.note-gutter`);if(!n)return null;let r=n.getBoundingClientRect();if(r.width<=0)return null;let i=parseFloat(getComputedStyle(n).paddingRight)||me,o=i-q;if(o<=0)return null;let s=i-q,c=r.width-i+q,l=[],u=new Map;for(let e of Array.from(n.querySelectorAll(`[data-spot-id]`))){let t=e.getBoundingClientRect();if(t.width<=0||t.height<=0)continue;let n={left:t.left-r.left,top:t.top-r.top,right:t.left-r.left+t.width,bottom:t.top-r.top+t.height};l.push(n),u.set(e,n)}let d=[];for(let t of e){let e=G(n.querySelectorAll(`[data-spot-id="${CSS.escape(t.spot)}"]`)),i=e?u.get(e):void 0;if(!i)continue;let a=i.top+Math.min(36,(i.bottom-i.top)/2),o=!J(l,i,s,i.left,a),f=!J(l,i,i.right,c,a),p=(i.left+i.right)/2<=r.width/2?`left`:`right`,m=o&&f?p:o?`left`:f?`right`:p,h=m===`left`?o:f;d.push({note:t,box:i,side:m,tethered:h})}if(!d.length)return null;let f=[];for(let e of[`left`,`right`]){let t=d.filter(t=>t.side===e);if(!t.length)continue;let n=de(t.map(e=>({top:e.box.top+4,height:pe(e.note.text)})),fe,r.height-8);t.forEach((t,r)=>{let i=t.box.top+Math.min(36,(t.box.bottom-t.box.top)/2);f.push({...t.note,top:n[r],side:e,...t.tethered?{tether:e===`right`?a({x:c-6,y:n[r]+16},{x:t.box.right+3,y:i},t.note.spot):a({x:s+6,y:n[r]+16},{x:t.box.left-3,y:i},t.note.spot)}:{}})})}return{grid:n,railWidth:o,notes:f}}function ge({notes:e,within:t,revision:n}){let[r,i]=(0,d.useState)(null),a=(0,d.useRef)(e);a.current=e;let o=e.map(e=>`${e.spot}${e.text}`).join(``);return(0,d.useEffect)(()=>W(()=>he(a.current,t),e=>e.notes.map(e=>`${e.spot}@${Math.round(e.top)}`).join(`|`)+`|${e.railWidth}`,e=>e.grid,i),[o,t,n]),!r||r.notes.length===0?null:(0,p.createPortal)((0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`svg`,{className:`note-rail-arrows`,"aria-hidden":`true`,children:r.notes.map((e,t)=>e.tether&&(0,K.jsxs)(`g`,{style:{"--note-delay":`${t*120}ms`},children:[(0,K.jsx)(`path`,{className:`note-tether`,d:e.tether.d,pathLength:1,fill:`none`}),(0,K.jsx)(`path`,{className:`note-tether note-tether-head`,d:e.tether.head,pathLength:1,fill:`none`})]},e.spot))}),[`left`,`right`].map(e=>{let t=r.notes.filter(t=>t.side===e);return t.length?(0,K.jsx)(`aside`,{className:`note-rail`+(e===`left`?` left`:``),role:`list`,"aria-label":`Mavéa's notes`,style:{width:r.railWidth},children:t.map((e,t)=>(0,K.jsx)(`div`,{role:`listitem`,className:`margin-note`,style:{top:e.top,"--note-delay":`${t*120}ms`},children:e.text},e.spot))},e):null})]}),r.grid)}var _e=`600 16px Caveat`,Y=!1;function ve(){if(!Y){Y=!0;try{document.fonts?.load?.(_e)}catch{}}}var X=9;function ye(e){return e===`rising`||e===`falling`||e===`bracket`||e===`brace`}function be(e,t,n){let r={rect:e,kind:t.kind};if(ye(t.kind)&&t.to){let e=n.find([t.to]),i=e&&R(e);i&&(r.toRect=i)}let i=t.kind===`bracket`&&r.toRect&&t.to?ee(t.at,t.to,t.label):t.label;return(t.kind===`note`||t.kind===`bracket`||t.kind===`brace`)&&i&&(r.label=i),r}function xe(e,t,n,r=!1){if(n){let t=I(e),r=t.find([n.at]),i=r&&R(r);if(r&&i){if(n.kind===`circle`){let t=ae(r,e)?.getBoundingClientRect(),n=e.getBoundingClientRect();if(t&&t.width>0&&t.width<=n.width*.6&&t.height<=n.height*.6&&t.width/Math.max(t.height,1)<=5)return{rect:t,kind:`circle`,el:r.node.parentElement??void 0}}let a=be(i,n,t);if(a.el=r.node.parentElement??void 0,n.kind===`highlight`){let e=se(r);e.length>1&&(a.rects=e)}return a}return null}if(!r)return null;let i=null,a=()=>i??=I(e),o=t?te(t):null;if(o?.figures.length){let e=a().find(o.figures),t=e&&R(e);if(t)return{rect:t,kind:`underline`,el:e?.node.parentElement??void 0}}let s=e.querySelector(`[data-mark]`),l=c(s?.getAttribute(`data-mark`));if(s&&l){let e=s.getBoundingClientRect();if(e.width>0)return{rect:e,kind:l,el:s}}if(o?.labels.length){let e=a().find(o.labels),t=e&&R(e);if(t)return{rect:t,kind:`underline`,el:e?.node.parentElement??void 0}}if(t){let e=a().echoed(t),n=e&&R(e);if(n)return{rect:n,kind:`underline`,el:e?.node.parentElement??void 0}}return null}var Z=`ink-mount`;function Q(e){let t=e.querySelector(`:scope > .${Z}`);if(t)return t;let n=document.createElement(`div`);return n.className=Z,n.style.display=`contents`,e.appendChild(n),n}function Se(e,t){let n=e;for(;n&&n!==t;){let e=getComputedStyle(n),t=n.scrollHeight>n.clientHeight+1&&/(auto|scroll|overlay)/.test(e.overflowY),r=n.scrollWidth>n.clientWidth+1&&/(auto|scroll|overlay)/.test(e.overflowX);if(t||r)return n;n=n.parentElement}return null}function Ce(e,t){let n=[];for(let r of Array.from(e.querySelectorAll(`:scope > .${Z} > .ink-layer`))){let e=Number(r.querySelector(`.ink-step-num`)?.textContent);if(!(!Number.isFinite(e)||e>=t))for(let e of Array.from(r.querySelectorAll(`.ink-stroke, .ink-fill, .ink-step-dot, .ink-note`))){let t=e.getBoundingClientRect();t.width>0&&t.height>0&&n.push(t)}}return n}function we(e,t,n,r,i,a){let c=G((i??document).querySelectorAll(`[data-spot-id="${CSS.escape(e)}"]`));if(!c)return null;let l=xe(c,t,n,r);if(!l)return null;let u=c.getBoundingClientRect();if(u.width<=0||u.height<=0)return null;let d=l.el?Se(l.el,c):null,f=d??c;d&&getComputedStyle(d).position===`static`&&(d.style.position=`relative`);let p=d?d.getBoundingClientRect():null,m=p&&p.width>0&&d.offsetWidth>0?p.width/d.offsetWidth:1,h=d?{w:d.scrollWidth,h:d.scrollHeight}:{w:u.width,h:u.height},g=e=>d&&p?{left:(e.left-p.left)/m+d.scrollLeft,top:(e.top-p.top)/m+d.scrollTop,width:e.width/m,height:e.height/m}:{left:e.left-u.left,top:e.top-u.top,width:e.width,height:e.height},_=g(l.rect),x={left:0,top:0,width:h.w,height:h.h},S={...l.toRect?{to:g(l.toRect)}:{},...l.label?{label:l.label}:{},...l.rects?.length?{rects:l.rects.map(g)}:{}},C=null,w=()=>C??=v(f).map(g);if(l.kind===`note`||l.kind===`question`||(l.kind===`bracket`||l.kind===`brace`)&&S.label){let e=l.kind===`question`?`?`:S.label??``,t=b(o(l.kind,_,x,e,S.to),w());if(t)S.place=t;else if(l.kind===`note`||l.kind===`question`)return null;else delete S.label}if(l.kind===`underline`||l.kind===`circle`){let e={left:_.left,top:_.top+_.height+2,width:_.width,height:9};w().some(t=>y(e,t,0))&&(S.tight=!0)}let T=s(l.kind,_,x,e,S);if(!T)return null;let E;if(typeof a==`number`){let e=(e,t,n)=>Math.min(Math.max(e,t),n),t=[{x:_.left-X-2,y:_.top-X-2},{x:_.left-X-4,y:_.top+_.height/2},{x:_.left+_.width+X+3,y:_.top-X-2},{x:_.left-X-2,y:_.top+_.height+X+3}].map(t=>({x:e(t.x,10,x.width-X-1),y:e(t.y,10,x.height-X-1)})),n=Ce(f,a).map(g);E=t.find(e=>{let t={left:e.x-X,top:e.y-X,width:18,height:18};return!w().some(e=>y(t,e,2))&&!n.some(e=>y(t,e,2))})}return{host:c,container:f,stroke:T,anchor:_,view:{w:h.w,h:h.h},...E?{chip:E}:{}}}var Te=2400;function Ee({spot:e,line:t,mark:n,generous:r,within:i,delayMs:a,badgeMs:o,revision:s,stepNumber:c,onPlaced:l}){let[u,f]=(0,d.useState)(null);(0,d.useEffect)(()=>W(()=>we(e,t,n,r,i,c),e=>e.stroke.d+(e.chip?`|${Math.round(e.chip.x)},${Math.round(e.chip.y)}`:``),e=>e.host,f),[e,t,n,r,i,s,c]);let m=(0,d.useRef)(!1);if((0,d.useEffect)(()=>{!u||m.current||(m.current=!0,l?.())},[u,l]),(0,d.useEffect)(()=>{if(!u)return;let{host:e}=u,t=o??2400;e.style.setProperty(`--ink-badge-dur`,`${t/1e3}s`),e.dataset.inking=n?.color===`key`?`key`:n?.color===`cool`?`cool`:``;let r=window.setTimeout(()=>{delete e.dataset.inking,e.style.removeProperty(`--ink-badge-dur`)},t);return()=>{window.clearTimeout(r),delete e.dataset.inking,e.style.removeProperty(`--ink-badge-dur`)}},[u,n?.color,o]),!u||!u.container.isConnected)return null;let{host:h,container:g,stroke:_,view:v,chip:y}=u,b=Q(g);if(!b)return null;let x=n?.color&&n.color!==`warm`?n.color:void 0,S=g!==h,C={...a?{"--ink-delay":`${a}ms`}:{},...S?{inset:`auto`,top:0,left:0,width:`${Math.max(1,Math.round(v.w))}px`,height:`${Math.max(1,Math.round(v.h))}px`}:{}};return(0,p.createPortal)((0,K.jsxs)(`svg`,{className:`ink-layer`,"aria-hidden":`true`,style:C,viewBox:`0 0 ${Math.max(1,Math.round(v.w))} ${Math.max(1,Math.round(v.h))}`,preserveAspectRatio:`none`,children:[_.fill?(0,K.jsx)(`path`,{className:`ink-fill`,d:_.d,...x?{"data-color":x}:{}}):(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`path`,{className:`ink-halo`,d:_.d,pathLength:1,...x?{"data-color":x}:{}}),(0,K.jsx)(`path`,{className:`ink-stroke`,d:_.d,pathLength:1,...x?{"data-color":x}:{}}),_.head&&(0,K.jsx)(`path`,{className:`ink-stroke ink-head`,d:_.head,pathLength:1,...x?{"data-color":x}:{}})]}),_.label&&(0,K.jsx)(`text`,{className:`ink-note`+(_.kind===`question`?` ink-glyph`:``),x:_.label.x,y:_.label.y,textAnchor:_.label.anchor,..._.label.size?{fontSize:_.label.size}:{},...x?{"data-color":x}:{},children:_.label.text.split(`
|
|
2
|
+
`).map((e,t)=>(0,K.jsx)(`tspan`,{x:_.label.x,dy:t===0?0:`1.25em`,children:e},t))}),typeof c==`number`&&y&&(0,K.jsxs)(`g`,{"aria-hidden":`true`,children:[(0,K.jsx)(`circle`,{className:`ink-step-dot`,cx:y.x,cy:y.y,r:8,...x?{"data-color":x}:{}}),(0,K.jsx)(`text`,{className:`ink-step-num`,x:y.x,y:y.y,textAnchor:`middle`,dominantBaseline:`middle`,children:c})]})]}),b)}function De(e,t,n,r){let i=r??document,a=i.querySelector(`.card-grid`);if(!a)return null;let o=G(i.querySelectorAll(`[data-spot-id="${CSS.escape(e)}"]`)),c=G(i.querySelectorAll(`[data-spot-id="${CSS.escape(t)}"]`));if(!o||!c||o===c)return null;let l=j(o,[n.at]),u=l&&R(l),d=n.to?j(c,[n.to]):null,f=d&&R(d);if(!u||!f)return null;let p=a.getBoundingClientRect(),m=s(`connect`,u,p,`${e}>${t}`,{to:f});return m?{grid:a,stroke:m}:null}function $(e){let t=(0,f.c)(41),{spot:n,toSpot:r,mark:i,within:a,delayMs:o,revision:s,onPlaced:c}=e,[l,u]=(0,d.useState)(null),m;t[0]!==i||t[1]!==n||t[2]!==r||t[3]!==a?(m=()=>W(()=>De(n,r,i,a),ke,Oe,u),t[0]=i,t[1]=n,t[2]=r,t[3]=a,t[4]=m):m=t[4];let h;t[5]!==i||t[6]!==s||t[7]!==n||t[8]!==r||t[9]!==a?(h=[n,r,i,a,s],t[5]=i,t[6]=s,t[7]=n,t[8]=r,t[9]=a,t[10]=h):h=t[10],(0,d.useEffect)(m,h);let g=(0,d.useRef)(!1),_,v;if(t[11]!==c||t[12]!==l?(_=()=>{!l||g.current||(g.current=!0,c?.())},v=[l,c],t[11]=c,t[12]=l,t[13]=_,t[14]=v):(_=t[13],v=t[14]),(0,d.useEffect)(_,v),!l||!l.grid.isConnected)return null;let{grid:y,stroke:b}=l,x,S;if(t[15]!==o||t[16]!==y||t[17]!==i||t[18]!==b){S=Symbol.for(`react.early_return_sentinel`);bb0:{let e=Q(y);if(!e){S=null;break bb0}let n=i.color&&i.color!==`warm`?i.color:void 0,r;t[21]===o?r=t[22]:(r=o?{"--ink-delay":`${o}ms`}:void 0,t[21]=o,t[22]=r);let a=r,s;t[23]===n?s=t[24]:(s=n?{"data-color":n}:{},t[23]=n,t[24]=s);let c;t[25]!==b.d||t[26]!==s?(c=(0,K.jsx)(`path`,{className:`ink-halo`,d:b.d,pathLength:1,...s}),t[25]=b.d,t[26]=s,t[27]=c):c=t[27];let l;t[28]===n?l=t[29]:(l=n?{"data-color":n}:{},t[28]=n,t[29]=l);let u;t[30]!==b.d||t[31]!==l?(u=(0,K.jsx)(`path`,{className:`ink-stroke`,d:b.d,pathLength:1,...l}),t[30]=b.d,t[31]=l,t[32]=u):u=t[32];let d;t[33]!==n||t[34]!==b.head?(d=b.head&&(0,K.jsx)(`path`,{className:`ink-stroke ink-head`,d:b.head,pathLength:1,...n?{"data-color":n}:{}}),t[33]=n,t[34]=b.head,t[35]=d):d=t[35];let f;t[36]!==a||t[37]!==u||t[38]!==d||t[39]!==c?(f=(0,K.jsxs)(`svg`,{className:`ink-connect-layer`,"aria-hidden":`true`,style:a,children:[c,u,d]}),t[36]=a,t[37]=u,t[38]=d,t[39]=c,t[40]=f):f=t[40],x=(0,p.createPortal)(f,e)}t[15]=o,t[16]=y,t[17]=i,t[18]=b,t[19]=x,t[20]=S}else x=t[19],S=t[20];return S===Symbol.for(`react.early_return_sentinel`)?x:S}function Oe(e){return e.grid}function ke(e){return e.stroke.d}function Ae(e){let t=(0,f.c)(13),{spots:n,within:r,revision:i,onPlaced:a}=e;if(n.length===0)return null;ve();let o,s;if(t[0]!==a||t[1]!==i||t[2]!==n||t[3]!==r){let e=n.filter(Ne),c=n.filter(Me);o=e.length>0&&(0,K.jsx)(ge,{notes:e.map(je),within:r,revision:i});let l;t[6]!==a||t[7]!==i||t[8]!==r?(l=(e,t)=>{let n=`${e.spot}|${e.mark?.kind??``}|${e.mark?.at??t}`;return e.mark?.kind===`connect`&&e.toSpot?(0,K.jsx)($,{spot:e.spot,toSpot:e.toSpot,mark:e.mark,within:r,delayMs:e.delayMs,revision:i,onPlaced:a&&(()=>a(e))},n):(0,K.jsx)(Ee,{spot:e.spot,line:e.line,mark:e.mark,generous:e.generous,within:r,delayMs:e.delayMs,badgeMs:e.badgeMs,revision:i,stepNumber:e.stepNumber,onPlaced:a&&(()=>a(e))},n)},t[6]=a,t[7]=i,t[8]=r,t[9]=l):l=t[9],s=c.map(l),t[0]=a,t[1]=i,t[2]=n,t[3]=r,t[4]=o,t[5]=s}else o=t[4],s=t[5];let c;return t[10]!==o||t[11]!==s?(c=(0,K.jsxs)(K.Fragment,{children:[o,s]}),t[10]=o,t[11]=s,t[12]=c):c=t[12],c}function je(e){return{spot:e.spot,text:e.noteText}}function Me(e){return!e.noteText}function Ne(e){return e.noteText}export{Te as n,ue as r,Ae as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./react-BZJXY1be.js";import{t}from"./jsx-runtime-DeHZSEgm.js";import{O as n}from"./index-
|
|
1
|
+
import{t as e}from"./react-BZJXY1be.js";import{t}from"./jsx-runtime-DeHZSEgm.js";import{O as n}from"./index-Db-FgYxX.js";import{t as r}from"./registry-BodYWiga.js";import{CommandPalette as i}from"./CommandPalette-Cz8h94Jd.js";import{t as a}from"./demoPaletteItems-NPCSaSU6.js";var o=e(),s=t();function c({onClose:e,startTour:t,watchInLive:c,enterLive:l}){let u=(0,o.useMemo)(()=>a(r,{direct:{dashboards:()=>{window.location.hash=`#/dashboards`},how:t},watchInLive:c,enterLive:l}).map(e=>({...e,watch:e.feature.id===`how`?t:e.watch,preload:e.feature.id===`dashboards`?()=>n(`#/dashboards`)??Promise.resolve():()=>n(`#/live`)??Promise.resolve()})),[l,t,c]);return(0,s.jsx)(i,{items:u,surface:`demo`,onClose:e})}export{c as AppCommandPalette};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./react-BZJXY1be.js";import{t}from"./jsx-runtime-DeHZSEgm.js";import{a as n,n as r,o as i,r as a,t as o}from"./neighborhoods-CqECCmo8.js";import{t as s}from"./time-BHTmJR1s.js";import{i as c,n as l}from"./store-D-f8ZuaK.js";var u=e(),d=1280;function f(e){let t=d/720,n=Math.max(1,e)*226*106,r=Math.max(d*720,n/.2),i=Math.sqrt(r/t);return{width:Math.round(i*t),height:Math.round(i)}}function p(e,t){let n=40+Math.sqrt(e)/Math.sqrt(Math.max(1,t))*44;return{rx:n,ry:n*.62}}function m(e){let{width:t,height:r}=f(e.length),o=e.length?e[0].records.length:1,s=n(e.map(e=>i(e.records.flatMap(e=>a(e)),e.name))),c=.12,l=e.map(e=>{let t=Math.max(e.name.length,`${e.records.length} conversations`.length);return{hx:Math.max(70,t*5.4),hy:34}}),u=e.map((e,n)=>{let{rx:i,ry:a}=p(e.records.length,o);return{x:t*(c+s[n].x*(1-2*c)),y:r*(c+s[n].y*(1-2*c)),rx:i,ry:a}}),d=(e,n)=>{let i=Math.max(e.rx*.7,l[n].hx),a=Math.max(e.ry*.8,l[n].hy);e.x=Math.min(t-i,Math.max(i,e.x)),e.y=Math.min(r-a,Math.max(a,e.y))};for(let e=0;e<400;e+=1){let e=!1;for(let n=0;n<u.length;n+=1)for(let i=n+1;i<u.length;i+=1){let a=u[n],o=u[i],s=o.x-a.x,c=o.y-a.y;Math.abs(s)<1&&Math.abs(c)<1&&(s=((n+i)%2==0?1:-1)*8,c=(n%2==0?1:-1)*8);let f=Math.max(a.rx+o.rx,l[n].hx+l[i].hx)+30,p=Math.max(a.ry+o.ry,l[n].hy+l[i].hy)+30,m=f-Math.abs(s),h=p-Math.abs(c);if(m>0&&h>0){let u=a.y<=l[n].hy+1&&o.y<=l[i].hy+1||a.y>=r-l[n].hy-1&&o.y>=r-l[i].hy-1;if(!(a.x<=l[n].hx+1&&o.x<=l[i].hx+1||a.x>=t-l[n].hx-1&&o.x>=t-l[i].hx-1)&&(u||m<h)){let e=(m/2+.5)*(s<0?-1:1);a.x-=e,o.x+=e}else{let e=(h/2+.5)*(c<0?-1:1);a.y-=e,o.y+=e}d(a,n),d(o,i),e=!0}}if(!e)break}for(let e=0;e<u.length;e+=1)d(u[e],e);return{places:u,width:t,height:r}}function h(e,t,n=d,r=720){let i=Math.min(e/n,t/r);return{x:(e-n*i)/2,y:(t-r*i)/2,scale:i}}function ee(e,t,n){let r=Math.min(2,Math.min(t/(e.rx*2.6),n/(e.ry*3.2)));return{x:t/2-e.x*r,y:n/2-e.y*r,scale:r}}function te(e,t,n=8){let r=t.length;if(r===0)return[];let i=[],a=new Set,o=e=>{e>=0&&e<r&&!a.has(e)&&(i.push(e),a.add(e))};for(let t of e)o(t);for(i.length===0&&o(0);i.length<r&&i.length<n;){let e=t[i[i.length-1]],n=-1,s=1/0;for(let i=0;i<r;i+=1){if(a.has(i))continue;let r=t[i].x-e.x,o=t[i].y-e.y,c=r*r+o*o;c<s&&(s=c,n=i)}if(n<0)break;o(n)}return i}function ne(e){return`translate(${Math.round(e.x)}px, ${Math.round(e.y)}px) scale(${e.scale})`}var g=.15,_=3;function re(e,t,n,r){let i=Math.min(_,Math.max(g,e.scale*t));if(i===e.scale)return e;let a=(n-e.x)/e.scale,o=(r-e.y)/e.scale;return{x:n-a*i,y:r-o*i,scale:i}}var v=864e5,y=7*v,b=16*v,ie=6;function x(e,t){return Math.floor(e/t)}function S(e,t,n){let r=new Set;for(let i of e.records)i.savedAt>=t&&r.add(x(i.savedAt,n));return r}function ae(e,t){let n=0;for(let r of e.records)r.savedAt>=t&&(n+=1);return n}function C(e,t){let n=0;for(let r of e)for(let e of r.records)e.savedAt>=t&&e.savedAt>n&&(n=e.savedAt);return n}function w(e,t){return t===v?e<=1?`same day`:`together · ${e} days`:`spikes together · ${e} weeks`}function oe(e,t,n=0){let r=C(e,n);if(r===0)return[];let i=r-n,a=n>0&&i<=b,o=a?v:y,s=a?1:2,c=e.map((e,t)=>({i:t,buckets:S(e,n,o),size:ae(e,n)})).filter(e=>e.size>=2&&e.buckets.size>=1),l=[];for(let e=0;e<c.length;e+=1)for(let t=e+1;t<c.length;t+=1){let n=c[e],r=c[t],i=0;for(let e of n.buckets)r.buckets.has(e)&&(i+=1);i>=s&&l.push({a:n.i,b:r.i,shared:i})}return l.sort((e,t)=>t.shared-e.shared||e.a-t.a||e.b-t.b),l.slice(0,ie).map(({a:e,b:n,shared:r})=>{let i=t[e],a=t[n],s=(i.x+a.x)/2,c=(i.y+a.y)/2,l=a.x-i.x,u=a.y-i.y,d=Math.hypot(l,u)||1,f=Math.min(120,d*.22),p=s+-u/d*f,m=c+l/d*f;return{a:e,b:n,d:`M ${i.x} ${i.y} Q ${p} ${m} ${a.x} ${a.y}`,lx:(s+p)/2,ly:(c+m)/2,label:w(r,o)}})}var T=864e5;function E(e){let t=(e.title+` `+e.question).toLowerCase();return/\b(should i|should we|decide|whether|or not|do i|is it worth|worth it|the offer|\?)\b/.test(t)}function D(e){let t=(e.title||e.question).trim().replace(/\s+/g,` `);return t.length>38?t.slice(0,37).trimEnd()+`…`:t}function se(e,t,n,r){let i=[],o=Date.now(),s=t=>e.findIndex(e=>e.records.some(e=>e.id===t)),c=n.filter(E).sort((e,t)=>e.savedAt-t.savedAt)[0];if(c){let e=Math.floor((o-c.savedAt)/T);i.push({kind:`open-loop`,kindLabel:`OPEN LOOP`,text:e>=1?`${D(c)} — you left this open ${e===1?`a day`:`${e} days`} ago, still unsettled.`:`${D(c)} — still open from today.`,cta:`Reopen it`,color:`var(--warning)`,hoodIndex:s(c.id),recordId:c.id})}let l=oe(e,t)[0];if(l){let t=e[l.a].name.charAt(0)+e[l.a].name.slice(1).toLowerCase(),n=e[l.b].name.charAt(0)+e[l.b].name.slice(1).toLowerCase();i.push({kind:`connection`,kindLabel:`CONNECTION`,text:`Your ${t} and ${n} nights ${l.label}.`,cta:`Show the link`,color:`var(--presence)`,hoodIndex:l.a})}let u=new Map;for(let e of n)for(let t of new Set(a(e))){let n=u.get(t)??{n:0,ids:[]};n.n+=1,n.ids.push(e.id),u.set(t,n)}let d=null;for(let[e,t]of u)t.n>=3&&(!d||t.n>d.n)&&(d={term:e,n:t.n,ids:t.ids});if(d){let t=s(d.ids[0]),n=t>=0?e[t].name.charAt(0)+e[t].name.slice(1).toLowerCase():``;i.push({kind:`pattern`,kindLabel:`PATTERN`,text:`You've circled “${d.term}” ${d.n} times${n?` across ${n}`:``}.`,cta:n?`Go to ${n}`:`Explore it`,color:`var(--insight)`,hoodIndex:t})}return i.slice(0,3)}function O(e){let t=e>>>0;return()=>{t|=0,t=t+1831565813|0;let e=Math.imul(t^t>>>15,1|t);return e=e+Math.imul(e^e>>>7,61|e)^e,((e^e>>>14)>>>0)/4294967296}}function ce(e){let t=Math.min(64,34+Math.floor(e/4)),n=O((e+7)*2654435761),r=[];for(let e=0;e<t;e+=1)r.push({x:+(n()*100).toFixed(2),y:+(n()*100).toFixed(2),r:+(n()*1.6+.7).toFixed(2),dur:+(n()*2.6+2.4).toFixed(2),delay:+(n()*3).toFixed(2)});return r}var k=t();function le(e,t){let n=Math.max(1,Math.floor((t-e)/864e5));return n<14?n===1?`1 day`:`${n} days`:n<60?`${Math.floor(n/7)} weeks`:`${Math.floor(n/30)} months`}function ue(e,t=30){let n=(e.title||e.question).trim().replace(/\s+/g,` `);return n.length>t?n.slice(0,t-1).trimEnd()+`…`:n}function de(e){let t=e.slice(0,5).map(e=>e.title||e.question),n=e.length>t.length?`, among others`:``;return`Looking across ${e.length} of my past conversations — ${t.join(`, `)}${n} — what are the common threads, what did I learn, and what's still unresolved?`}var A=196,j=84;function fe(e,t){let n=Math.max(A,j)*.62,r=[];for(let i=0;i<e;i+=1){if(i===0){r.push({x:t.x,y:t.y});continue}let e=n*Math.sqrt(i)*1.05,a=i*2.39996322;r.push({x:t.x+Math.cos(a)*e,y:t.y+Math.sin(a)*e*.82})}for(let e=0;e<160;e+=1){let e=!1;for(let t=0;t<r.length;t+=1)for(let n=t+1;n<r.length;n+=1){let i=r[t],a=r[n],o=a.x-i.x,s=a.y-i.y,c=214-Math.abs(o),l=102-Math.abs(s);if(c>0&&l>0){if(c<l){let e=(c/2+.5)*(o<0?-1:1);i.x-=e,a.x+=e}else{let e=(l/2+.5)*(s<0?-1:1);i.y-=e,a.y+=e}e=!0}}if(!e)break}return r}function pe(e){let t=(e.title+` `+e.question).toLowerCase();return/\b(map|route|trip|where|location|place)\b/.test(t)?`MAP`:/\b(should|vs|versus|or|decide|choice|option)\b/.test(t)?`BRANCH`:/\b(table|compare|list|rank|breakdown)\b/.test(t)?`TABLE`:/\b(recipe|cook|bake|dish|dinner|meal)\b/.test(t)?`RECIPE`:/\b(chart|trend|graph|growth|over time|history of)\b/.test(t)?`CHART`:/\b(plan|steps|schedule|timeline)\b/.test(t)?`PLAN`:`NOTE`}function M({records:e,chapters:t,onLand:n,onGoDeeper:i,autoTour:a,onClose:d}){let f=(0,u.useMemo)(()=>o(e),[e]),p=(0,u.useMemo)(()=>m(f),[f]),g=p.places,_=(0,u.useMemo)(()=>({w:p.width,h:p.height}),[p]),v=(0,u.useRef)(l());(0,u.useEffect)(()=>{c()},[]);let y=(0,u.useMemo)(()=>{let e=[];for(let n of t){let t=r(n.title+` `+(n.moments[0]?.question??``),f);t>=0&&e[e.length-1]!==t&&e.push(t)}return e},[t,f]),[b,ie]=(0,u.useState)(`all`),x=(0,u.useMemo)(()=>{let e=b===`all`?0:Date.now()-(b===`month`?30:7)*864e5;return oe(f,g,e)},[f,g,b]),S=(0,u.useMemo)(()=>se(f,g,e,v.current),[f,g,e]),ae=(0,u.useMemo)(()=>ce(e.length),[e.length]),[C,w]=(0,u.useState)(`galaxy`),[T,E]=(0,u.useState)(null),D=(0,u.useMemo)(()=>T===null?-1:f.findIndex(e=>e.id===T),[T,f]),[O,A]=(0,u.useState)(null),[j,M]=(0,u.useState)(!1),N=(0,u.useRef)(null),[P,me]=(0,u.useState)(null),[F,I]=(0,u.useState)({x:0,y:0,scale:1}),L=(0,u.useRef)(`galaxy`);L.current=C;let R=(0,u.useRef)(_);R.current=_,(0,u.useLayoutEffect)(()=>{let e=N.current;if(!e)return;let t=()=>{let t=e.clientWidth,n=e.clientHeight;me({w:t,h:n}),L.current===`galaxy`&&I(h(t,n,R.current.w,R.current.h))};if(t(),typeof ResizeObserver>`u`)return;let n=new ResizeObserver(t);return n.observe(e),()=>n.disconnect()},[]),(0,u.useLayoutEffect)(()=>{L.current===`galaxy`&&P&&I(h(P.w,P.h,_.w,_.h))},[_,P]);let z=(0,u.useRef)(null),B=(0,u.useCallback)(()=>{z.current!==null&&clearTimeout(z.current),z.current=null},[]);(0,u.useEffect)(()=>B,[B]);let V=(0,u.useCallback)(e=>{P&&(B(),w(`hood`),E(f[e]?.id??null),A(null),I(ee(g[e],P.w,P.h)))},[P,f,g,B]),he=(0,u.useCallback)(e=>{B(),w(`night`),A(e)},[B]),H=(0,u.useCallback)(()=>{P&&(B(),C===`night`?(w(`hood`),A(null)):C===`hood`&&(w(`galaxy`),E(null),I(h(P.w,P.h,_.w,_.h))))},[C,P,_,B]),U=(0,u.useMemo)(()=>te(y,g),[y,g]),W=(0,u.useCallback)(()=>{if(!P||U.length===0)return;B();let e=0,t=()=>{if(e<U.length){let n=U[e];w(`hood`),E(f[n]?.id??null),A(null),I(ee(g[n],P.w,P.h)),e+=1,z.current=setTimeout(t,1700)}else w(`galaxy`),E(null),A(null),I(h(P.w,P.h,_.w,_.h)),z.current=null};t()},[P,U,f,g,_,B]),ge=(0,u.useRef)(!1);(0,u.useEffect)(()=>{!a||ge.current||!P||U.length===0||(ge.current=!0,W())},[a,P,U.length,W]);let[_e,ve]=(0,u.useState)(!1),[G,K]=(0,u.useState)(``),ye=(0,u.useMemo)(()=>{let t=G.trim().toLowerCase();return t.length<2?[]:e.filter(e=>e.question.toLowerCase().includes(t)||e.title.toLowerCase().includes(t)).slice(0,6)},[G,e]),[be,xe]=(0,u.useState)(null),Se=(0,u.useCallback)(e=>{let t=f.findIndex(t=>t.records.some(t=>t.id===e.id));t>=0&&V(t),xe(e.id),K(``)},[f,V]);(0,u.useEffect)(()=>{let e=N.current;if(!e)return;let t=t=>{if(C!==`galaxy`)return;t.preventDefault();let n=e.getBoundingClientRect();B(),I(e=>re(e,t.deltaY<0?1.12:1/1.12,t.clientX-n.left,t.clientY-n.top))};return e.addEventListener(`wheel`,t,{passive:!1}),()=>e.removeEventListener(`wheel`,t)},[C,B]);let q=(0,u.useRef)(null),[Ce,we]=(0,u.useState)(!1),J=(0,u.useRef)(!1),Te=(0,u.useCallback)(e=>{e.button===0&&(q.current={id:e.pointerId,x:e.clientX,y:e.clientY,moved:!1},J.current=!1)},[]),Ee=(0,u.useCallback)(e=>{let t=q.current;if(!t||e.pointerId!==t.id)return;let n=e.clientX-t.x,r=e.clientY-t.y;if(!(!t.moved&&Math.hypot(n,r)<4)){if(!t.moved){t.moved=!0,we(!0),B();try{e.currentTarget.setPointerCapture(t.id)}catch{}}t.x=e.clientX,t.y=e.clientY,J.current=!0,I(e=>({...e,x:e.x+n,y:e.y+r}))}},[B]),De=(0,u.useCallback)(e=>{let t=q.current;if(!t||e.pointerId!==t.id)return;let n=t.moved;if(n)try{e.currentTarget.releasePointerCapture(t.id)}catch{}q.current=null,we(!1),n&&requestAnimationFrame(()=>J.current=!1)},[]),Oe=(0,u.useCallback)(e=>{J.current&&=(e.stopPropagation(),e.preventDefault(),!1)},[]);(0,u.useEffect)(()=>{let e=e=>{if(e.key===`Escape`){if(G){K(``);return}C===`galaxy`?d():H()}};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[C,H,d,G]);let Y=Date.now(),ke=e.length?Math.min(...e.map(e=>e.firstSeen)):Y,Ae=(0,u.useMemo)(()=>e.reduce((e,t)=>e+ +(t.blocks>2),0),[e]),je=e.length===0?`Nothing here yet`:`${le(ke,Y)} · ${e.length} conversation${e.length===1?``:`s`} · ${Ae} artifact${Ae===1?``:`s`}`,Me=y.length>0?y[y.length-1]:-1,X=D>=0?f[D]:null,Z=D>=0?g[D]:null,Q=(0,u.useMemo)(()=>X&&Z?fe(X.records.length,Z):[],[X,Z]),$=O?e.find(e=>e.id===O)??null:null,Ne=C===`galaxy`?`Your atlas`:X?X.name.charAt(0)+X.name.slice(1).toLowerCase():`Your atlas`,Pe=(0,u.useCallback)(t=>{if(t.kind===`open-loop`&&t.recordId){let r=e.find(e=>e.id===t.recordId);r&&n(r)}else t.hoodIndex>=0&&V(t.hoodIndex)},[e,n,V]);return(0,k.jsx)(`div`,{className:`atlas-scrim`,"data-expanded":j?`true`:void 0,onClick:e=>{e.target===e.currentTarget&&d()},role:`button`,tabIndex:0,"aria-label":`Close atlas`,onKeyDown:e=>{e.target===e.currentTarget&&(e.key===`Enter`||e.key===` `)&&(e.key===` `&&e.preventDefault(),d())},children:(0,k.jsxs)(`section`,{className:`atlas-panel`,role:`dialog`,"aria-label":`Your atlas`,"data-tier":C,children:[(0,k.jsxs)(`header`,{className:`atlas-head`,children:[(0,k.jsxs)(`div`,{className:`atlas-crumbs`,children:[C!==`galaxy`&&(0,k.jsxs)(`button`,{type:`button`,className:`atlas-back`,onClick:H,"aria-label":C===`night`?`Back to the neighborhood`:`Back to the galaxy`,children:[`← `,C===`night`&&X?Ne:`Galaxy`]}),(0,k.jsxs)(`div`,{className:`atlas-title-wrap`,children:[(0,k.jsx)(`h2`,{className:`atlas-title`,children:Ne}),(0,k.jsx)(`span`,{className:`atlas-meta`,children:C===`galaxy`?je:X?`${X.records.length} conversation${X.records.length===1?``:`s`} · named from how you talk about it`:je})]})]}),(0,k.jsxs)(`div`,{className:`atlas-head-search`,children:[(0,k.jsxs)(`div`,{className:`atlas-fly`,children:[(0,k.jsx)(`input`,{className:`atlas-fly-input`,type:`search`,value:G,onChange:e=>K(e.target.value),placeholder:`⌕ Fly to… “that thing about vesting”`,"aria-label":`Find a conversation`}),ye.length>0&&(0,k.jsx)(`ul`,{className:`atlas-fly-matches`,role:`listbox`,children:ye.map(e=>(0,k.jsx)(`li`,{children:(0,k.jsxs)(`button`,{type:`button`,className:`atlas-fly-match`,onClick:()=>Se(e),children:[(0,k.jsx)(`span`,{className:`atlas-fly-match-label`,children:ue(e)}),(0,k.jsx)(`span`,{className:`atlas-fly-match-ago`,children:s(e.savedAt,Y)})]})},e.id))})]}),U.length>=2&&C===`galaxy`&&(0,k.jsx)(`button`,{type:`button`,className:`atlas-tour`,onClick:W,children:`▶ Fly the tour`})]}),(0,k.jsx)(`button`,{type:`button`,className:`atlas-close`,onClick:()=>M(e=>!e),"aria-label":j?`Exit full screen`:`Expand to full screen`,title:j?`Exit full screen`:`Full screen`,children:j?`⤡`:`⤢`}),(0,k.jsx)(`button`,{type:`button`,className:`atlas-close`,onClick:d,"aria-label":`Close the atlas`,children:`✕`})]}),(0,k.jsxs)(`div`,{className:`atlas-viewport`+(Ce?` is-panning`:``),ref:N,onPointerDown:Te,onPointerMove:Ee,onPointerUp:De,onPointerCancel:De,onClickCapture:Oe,children:[e.length===0?(0,k.jsx)(`p`,{className:`atlas-empty`,children:`Your atlas grows as you talk — every saved conversation becomes a place here.`}):(0,k.jsxs)(k.Fragment,{children:[(0,k.jsx)(`div`,{className:`atlas-stars`,"aria-hidden":`true`,children:ae.map((e,t)=>(0,k.jsx)(`span`,{className:`atlas-star`,style:{left:`${e.x}%`,top:`${e.y}%`,width:e.r,height:e.r,"--tw-dur":`${e.dur}s`,"--tw-delay":`${e.delay}s`}},t))}),(0,k.jsxs)(`div`,{className:`atlas-world`,"data-tier":C,style:{transform:ne(F),width:_.w,height:_.h,"--atlas-cam-scale":F.scale},children:[C===`galaxy`&&x.length>0&&(0,k.jsx)(`svg`,{className:`atlas-connections`,width:_.w,height:_.h,"aria-hidden":`true`,children:x.map((e,t)=>(0,k.jsxs)(`g`,{children:[(0,k.jsx)(`path`,{d:e.d,fill:`none`}),(0,k.jsx)(`foreignObject`,{x:e.lx-90,y:e.ly-11,width:`180`,height:`22`,children:(0,k.jsx)(`span`,{className:`atlas-conn-label`,children:e.label})})]},t))}),y.length>=1&&C===`galaxy`&&(0,k.jsxs)(`svg`,{className:`atlas-trail`,width:_.w,height:_.h,"aria-hidden":`true`,children:[y.length>1&&(0,k.jsx)(`polyline`,{points:y.map(e=>`${g[e].x},${g[e].y}`).join(` `),fill:`none`}),y.map((e,t)=>(0,k.jsx)(`circle`,{cx:g[e].x,cy:g[e].y,r:`5`},t)),(0,k.jsx)(`circle`,{className:`atlas-trail-pulse`,cx:g[Me].x,cy:g[Me].y,r:`5`})]}),f.map((e,t)=>{let n=g[t],r=e.records.filter(e=>e.savedAt>v.current).length,i=S.some(e=>e.kind===`open-loop`&&e.hoodIndex===t);return(0,k.jsxs)(`button`,{type:`button`,className:`atlas-hood`+(C!==`galaxy`&&t!==D?` is-dim`:``),"aria-label":`${e.name}, ${e.records.length} conversations`,style:{left:n.x,top:n.y,"--hood-color":e.color,"--name-size":`${15+Math.min(9,e.records.length/6)}px`},onClick:()=>V(t),children:[(0,k.jsx)(`span`,{className:`atlas-hood-name`,children:e.name}),(0,k.jsxs)(`span`,{className:`atlas-hood-count`,children:[e.records.length,` conversation`,e.records.length===1?``:`s`]}),i&&(0,k.jsxs)(`span`,{className:`atlas-hood-loop`,children:[(0,k.jsx)(`span`,{className:`atlas-hood-loop-dot`,"aria-hidden":`true`}),`1 open loop`]}),r>0&&!i&&(0,k.jsxs)(`span`,{className:`atlas-hood-badge`,"aria-label":`${r} new`,children:[r,` new`]}),(0,k.jsx)(`span`,{className:`atlas-hood-core`,"aria-hidden":`true`})]},e.id)}),C!==`galaxy`&&X&&Z&&(0,k.jsxs)(`div`,{className:`atlas-constellation`,children:[(0,k.jsx)(`svg`,{className:`atlas-night-links`,width:_.w,height:_.h,"aria-hidden":`true`,style:{"--hood-color":X.color},children:Q.slice(1).map((e,t)=>(0,k.jsx)(`line`,{x1:Q[t].x,y1:Q[t].y,x2:e.x,y2:e.y},t))}),X.records.map((e,t)=>{let n=Q[t]??{x:Z.x,y:Z.y},r=e.savedAt>v.current;return(0,k.jsxs)(`button`,{type:`button`,className:`atlas-night`+(be===e.id?` is-found`:``)+(r?` is-new`:``),style:{left:n.x,top:n.y,"--hood-color":X.color},onClick:()=>he(e.id),title:`${e.question} — saved ${s(e.savedAt,Y)}`,children:[(0,k.jsx)(`span`,{className:`atlas-night-dot`,"aria-hidden":`true`}),(0,k.jsxs)(`span`,{className:`atlas-night-card`,children:[(0,k.jsx)(`span`,{className:`atlas-night-date`,children:s(e.savedAt,Y)}),(0,k.jsx)(`span`,{className:`atlas-night-title`,children:ue(e,36)})]})]},e.id)})]})]}),C===`hood`&&X&&(0,k.jsxs)(`div`,{className:`atlas-hood-chrome`,children:[i&&X.records.length>=2&&(0,k.jsx)(`button`,{type:`button`,className:`atlas-hood-deeper`,title:`Find the common threads, lessons, and open questions across these ${X.records.length} conversations`,onClick:()=>i(de(X.records)),children:`Synthesize →`}),(0,k.jsxs)(`span`,{className:`atlas-hood-chrome-hint`,children:[X.records.length,` night`,X.records.length===1?``:`s`,` `,`· tap one to drop back into it`]})]}),y.length>=1&&C===`galaxy`&&(0,k.jsx)(`div`,{className:`atlas-trail-caption`,children:y.length>1?`TONIGHT — ONE SESSION, ${y.length} NEIGHBORHOODS`:`TONIGHT — YOU ARE HERE`}),C===`night`&&$&&(0,k.jsx)(`div`,{className:`atlas-night-stage`,onClick:e=>{e.target===e.currentTarget&&H()},role:`button`,tabIndex:0,"aria-label":`Back out of the rehydrated night`,onKeyDown:e=>{e.target===e.currentTarget&&(e.key===`Enter`||e.key===` `)&&(e.key===` `&&e.preventDefault(),H())},children:(0,k.jsxs)(`article`,{className:`atlas-rehydrate`,style:{"--hood-color":X?.color??`var(--presence)`},children:[(0,k.jsxs)(`header`,{className:`atlas-rehydrate-head`,children:[(0,k.jsxs)(`span`,{className:`atlas-rehydrate-tag`,children:[(0,k.jsx)(`span`,{className:`atlas-rehydrate-tag-dot`,"aria-hidden":`true`}),`REHYDRATED · `,s($.savedAt,Y).toUpperCase(),X?` · ${X.name}`:``]}),(0,k.jsx)(`span`,{className:`atlas-rehydrate-asis`,children:`exactly as you left it`})]}),(0,k.jsx)(`h3`,{className:`atlas-rehydrate-title`,children:$.title||$.question}),(0,k.jsxs)(`div`,{className:`atlas-rehydrate-thread`,children:[(0,k.jsx)(`p`,{className:`atlas-rehydrate-q`,children:$.question}),(0,k.jsxs)(`div`,{className:`atlas-rehydrate-a`,children:[(0,k.jsx)(`span`,{className:`atlas-rehydrate-orb`,"aria-hidden":`true`}),(0,k.jsxs)(`div`,{className:`atlas-rehydrate-art`,children:[(0,k.jsx)(`span`,{className:`atlas-rehydrate-art-kind`,children:pe($)}),(0,k.jsxs)(`div`,{className:`atlas-rehydrate-art-body`,children:[(0,k.jsx)(`span`,{className:`atlas-rehydrate-art-line`,style:{width:`92%`}}),(0,k.jsx)(`span`,{className:`atlas-rehydrate-art-line`,style:{width:`76%`}}),(0,k.jsx)(`span`,{className:`atlas-rehydrate-art-line`,style:{width:`84%`}})]}),(0,k.jsx)(`span`,{className:`atlas-rehydrate-art-open`,children:`OPEN →`})]})]})]}),(0,k.jsx)(`p`,{className:`atlas-rehydrate-foot`,children:`This night was stored as a snapshot — nothing re-summarized. Step back inside it.`}),(0,k.jsxs)(`div`,{className:`atlas-rehydrate-actions`,children:[(0,k.jsx)(`button`,{type:`button`,className:`atlas-rehydrate-land`,onClick:()=>n($),children:`Drop back into it →`}),(0,k.jsx)(`button`,{type:`button`,className:`atlas-rehydrate-back`,onClick:H,children:`Back to the constellation`})]})]})})]}),C===`galaxy`&&S.length>0&&(_e?(0,k.jsxs)(`aside`,{className:`atlas-noticed`,"aria-label":`What Mavéa noticed`,children:[(0,k.jsxs)(`header`,{className:`atlas-noticed-head`,children:[(0,k.jsx)(`span`,{className:`atlas-noticed-orb`,"aria-hidden":`true`}),(0,k.jsx)(`span`,{className:`atlas-noticed-title`,children:`MAVÉA NOTICED`}),(0,k.jsx)(`span`,{className:`atlas-noticed-sub`,children:`while you were away`}),(0,k.jsx)(`button`,{type:`button`,className:`atlas-noticed-collapse`,onClick:()=>ve(!1),"aria-label":`Minimize what Mavéa noticed`,title:`Minimize`,children:`–`})]}),S.map((e,t)=>(0,k.jsxs)(`button`,{type:`button`,className:`atlas-noticed-item`,onClick:()=>Pe(e),children:[(0,k.jsx)(`span`,{className:`atlas-noticed-dot`,style:{"--ins-color":e.color},"aria-hidden":`true`}),(0,k.jsxs)(`span`,{className:`atlas-noticed-body`,children:[(0,k.jsx)(`span`,{className:`atlas-noticed-kind`,style:{"--ins-color":e.color},children:e.kindLabel}),(0,k.jsx)(`span`,{className:`atlas-noticed-text`,children:e.text}),(0,k.jsxs)(`span`,{className:`atlas-noticed-cta`,style:{"--ins-color":e.color},children:[e.cta,` →`]})]})]},t))]}):(0,k.jsxs)(`button`,{type:`button`,className:`atlas-noticed-pill`,onClick:()=>ve(!0),"aria-label":`Show what Mavéa noticed (${S.length})`,children:[(0,k.jsx)(`span`,{className:`atlas-noticed-orb`,"aria-hidden":`true`}),(0,k.jsx)(`span`,{className:`atlas-noticed-pill-label`,children:`MAVÉA NOTICED`}),(0,k.jsx)(`span`,{className:`atlas-noticed-pill-count`,children:S.length})]})),C===`galaxy`&&e.length>0&&ke<Y-6048e5&&(0,k.jsxs)(`div`,{className:`atlas-range`,role:`group`,"aria-label":`Connections over which time window`,children:[(0,k.jsx)(`span`,{className:`atlas-range-label`,children:`CONNECTIONS OVER`}),[`week`,`month`,`all`].map(e=>(0,k.jsx)(`button`,{type:`button`,className:`atlas-range-btn`+(b===e?` is-active`:``),"aria-pressed":b===e,onClick:()=>ie(e),children:e===`week`?`Last week`:e===`month`?`Last month`:`All time`},e))]}),C===`galaxy`&&e.length>0&&(0,k.jsxs)(`div`,{className:`atlas-idle-hint`,children:[`Click a neighborhood to fly in`,U.length>=2?` — or take the tour.`:`.`]})]}),(0,k.jsxs)(`footer`,{className:`atlas-foot`,children:[(0,k.jsxs)(`p`,{className:`atlas-foot-line`,children:[`Neighborhoods grow as you talk. Fly into one to wander its nights — the atlas`,` `,(0,k.jsx)(`em`,{children:`is`}),` the history.`]}),(0,k.jsx)(`button`,{type:`button`,className:`atlas-keep`,onClick:d,children:`Keep talking`})]})]})})}export{M as AtlasView};
|
|
1
|
+
import{t as e}from"./react-BZJXY1be.js";import{t}from"./jsx-runtime-DeHZSEgm.js";import{a as n,n as r,o as i,r as a,t as o}from"./neighborhoods-B56WegJs.js";import{t as s}from"./time-BHTmJR1s.js";import{i as c,n as l}from"./store-CgA7mKy1.js";var u=e(),d=1280;function f(e){let t=d/720,n=Math.max(1,e)*226*106,r=Math.max(d*720,n/.2),i=Math.sqrt(r/t);return{width:Math.round(i*t),height:Math.round(i)}}function p(e,t){let n=40+Math.sqrt(e)/Math.sqrt(Math.max(1,t))*44;return{rx:n,ry:n*.62}}function m(e){let{width:t,height:r}=f(e.length),o=e.length?e[0].records.length:1,s=n(e.map(e=>i(e.records.flatMap(e=>a(e)),e.name))),c=.12,l=e.map(e=>{let t=Math.max(e.name.length,`${e.records.length} conversations`.length);return{hx:Math.max(70,t*5.4),hy:34}}),u=e.map((e,n)=>{let{rx:i,ry:a}=p(e.records.length,o);return{x:t*(c+s[n].x*(1-2*c)),y:r*(c+s[n].y*(1-2*c)),rx:i,ry:a}}),d=(e,n)=>{let i=Math.max(e.rx*.7,l[n].hx),a=Math.max(e.ry*.8,l[n].hy);e.x=Math.min(t-i,Math.max(i,e.x)),e.y=Math.min(r-a,Math.max(a,e.y))};for(let e=0;e<400;e+=1){let e=!1;for(let n=0;n<u.length;n+=1)for(let i=n+1;i<u.length;i+=1){let a=u[n],o=u[i],s=o.x-a.x,c=o.y-a.y;Math.abs(s)<1&&Math.abs(c)<1&&(s=((n+i)%2==0?1:-1)*8,c=(n%2==0?1:-1)*8);let f=Math.max(a.rx+o.rx,l[n].hx+l[i].hx)+30,p=Math.max(a.ry+o.ry,l[n].hy+l[i].hy)+30,m=f-Math.abs(s),h=p-Math.abs(c);if(m>0&&h>0){let u=a.y<=l[n].hy+1&&o.y<=l[i].hy+1||a.y>=r-l[n].hy-1&&o.y>=r-l[i].hy-1;if(!(a.x<=l[n].hx+1&&o.x<=l[i].hx+1||a.x>=t-l[n].hx-1&&o.x>=t-l[i].hx-1)&&(u||m<h)){let e=(m/2+.5)*(s<0?-1:1);a.x-=e,o.x+=e}else{let e=(h/2+.5)*(c<0?-1:1);a.y-=e,o.y+=e}d(a,n),d(o,i),e=!0}}if(!e)break}for(let e=0;e<u.length;e+=1)d(u[e],e);return{places:u,width:t,height:r}}function h(e,t,n=d,r=720){let i=Math.min(e/n,t/r);return{x:(e-n*i)/2,y:(t-r*i)/2,scale:i}}function ee(e,t,n){let r=Math.min(2,Math.min(t/(e.rx*2.6),n/(e.ry*3.2)));return{x:t/2-e.x*r,y:n/2-e.y*r,scale:r}}function te(e,t,n=8){let r=t.length;if(r===0)return[];let i=[],a=new Set,o=e=>{e>=0&&e<r&&!a.has(e)&&(i.push(e),a.add(e))};for(let t of e)o(t);for(i.length===0&&o(0);i.length<r&&i.length<n;){let e=t[i[i.length-1]],n=-1,s=1/0;for(let i=0;i<r;i+=1){if(a.has(i))continue;let r=t[i].x-e.x,o=t[i].y-e.y,c=r*r+o*o;c<s&&(s=c,n=i)}if(n<0)break;o(n)}return i}function ne(e){return`translate(${Math.round(e.x)}px, ${Math.round(e.y)}px) scale(${e.scale})`}var g=.15,_=3;function re(e,t,n,r){let i=Math.min(_,Math.max(g,e.scale*t));if(i===e.scale)return e;let a=(n-e.x)/e.scale,o=(r-e.y)/e.scale;return{x:n-a*i,y:r-o*i,scale:i}}var v=864e5,y=7*v,b=16*v,ie=6;function x(e,t){return Math.floor(e/t)}function S(e,t,n){let r=new Set;for(let i of e.records)i.savedAt>=t&&r.add(x(i.savedAt,n));return r}function ae(e,t){let n=0;for(let r of e.records)r.savedAt>=t&&(n+=1);return n}function C(e,t){let n=0;for(let r of e)for(let e of r.records)e.savedAt>=t&&e.savedAt>n&&(n=e.savedAt);return n}function w(e,t){return t===v?e<=1?`same day`:`together · ${e} days`:`spikes together · ${e} weeks`}function oe(e,t,n=0){let r=C(e,n);if(r===0)return[];let i=r-n,a=n>0&&i<=b,o=a?v:y,s=a?1:2,c=e.map((e,t)=>({i:t,buckets:S(e,n,o),size:ae(e,n)})).filter(e=>e.size>=2&&e.buckets.size>=1),l=[];for(let e=0;e<c.length;e+=1)for(let t=e+1;t<c.length;t+=1){let n=c[e],r=c[t],i=0;for(let e of n.buckets)r.buckets.has(e)&&(i+=1);i>=s&&l.push({a:n.i,b:r.i,shared:i})}return l.sort((e,t)=>t.shared-e.shared||e.a-t.a||e.b-t.b),l.slice(0,ie).map(({a:e,b:n,shared:r})=>{let i=t[e],a=t[n],s=(i.x+a.x)/2,c=(i.y+a.y)/2,l=a.x-i.x,u=a.y-i.y,d=Math.hypot(l,u)||1,f=Math.min(120,d*.22),p=s+-u/d*f,m=c+l/d*f;return{a:e,b:n,d:`M ${i.x} ${i.y} Q ${p} ${m} ${a.x} ${a.y}`,lx:(s+p)/2,ly:(c+m)/2,label:w(r,o)}})}var T=864e5;function E(e){let t=(e.title+` `+e.question).toLowerCase();return/\b(should i|should we|decide|whether|or not|do i|is it worth|worth it|the offer|\?)\b/.test(t)}function D(e){let t=(e.title||e.question).trim().replace(/\s+/g,` `);return t.length>38?t.slice(0,37).trimEnd()+`…`:t}function se(e,t,n,r){let i=[],o=Date.now(),s=t=>e.findIndex(e=>e.records.some(e=>e.id===t)),c=n.filter(E).sort((e,t)=>e.savedAt-t.savedAt)[0];if(c){let e=Math.floor((o-c.savedAt)/T);i.push({kind:`open-loop`,kindLabel:`OPEN LOOP`,text:e>=1?`${D(c)} — you left this open ${e===1?`a day`:`${e} days`} ago, still unsettled.`:`${D(c)} — still open from today.`,cta:`Reopen it`,color:`var(--warning)`,hoodIndex:s(c.id),recordId:c.id})}let l=oe(e,t)[0];if(l){let t=e[l.a].name.charAt(0)+e[l.a].name.slice(1).toLowerCase(),n=e[l.b].name.charAt(0)+e[l.b].name.slice(1).toLowerCase();i.push({kind:`connection`,kindLabel:`CONNECTION`,text:`Your ${t} and ${n} nights ${l.label}.`,cta:`Show the link`,color:`var(--presence)`,hoodIndex:l.a})}let u=new Map;for(let e of n)for(let t of new Set(a(e))){let n=u.get(t)??{n:0,ids:[]};n.n+=1,n.ids.push(e.id),u.set(t,n)}let d=null;for(let[e,t]of u)t.n>=3&&(!d||t.n>d.n)&&(d={term:e,n:t.n,ids:t.ids});if(d){let t=s(d.ids[0]),n=t>=0?e[t].name.charAt(0)+e[t].name.slice(1).toLowerCase():``;i.push({kind:`pattern`,kindLabel:`PATTERN`,text:`You've circled “${d.term}” ${d.n} times${n?` across ${n}`:``}.`,cta:n?`Go to ${n}`:`Explore it`,color:`var(--insight)`,hoodIndex:t})}return i.slice(0,3)}function O(e){let t=e>>>0;return()=>{t|=0,t=t+1831565813|0;let e=Math.imul(t^t>>>15,1|t);return e=e+Math.imul(e^e>>>7,61|e)^e,((e^e>>>14)>>>0)/4294967296}}function ce(e){let t=Math.min(64,34+Math.floor(e/4)),n=O((e+7)*2654435761),r=[];for(let e=0;e<t;e+=1)r.push({x:+(n()*100).toFixed(2),y:+(n()*100).toFixed(2),r:+(n()*1.6+.7).toFixed(2),dur:+(n()*2.6+2.4).toFixed(2),delay:+(n()*3).toFixed(2)});return r}var k=t();function le(e,t){let n=Math.max(1,Math.floor((t-e)/864e5));return n<14?n===1?`1 day`:`${n} days`:n<60?`${Math.floor(n/7)} weeks`:`${Math.floor(n/30)} months`}function ue(e,t=30){let n=(e.title||e.question).trim().replace(/\s+/g,` `);return n.length>t?n.slice(0,t-1).trimEnd()+`…`:n}function de(e){let t=e.slice(0,5).map(e=>e.title||e.question),n=e.length>t.length?`, among others`:``;return`Looking across ${e.length} of my past conversations — ${t.join(`, `)}${n} — what are the common threads, what did I learn, and what's still unresolved?`}var A=196,j=84;function fe(e,t){let n=Math.max(A,j)*.62,r=[];for(let i=0;i<e;i+=1){if(i===0){r.push({x:t.x,y:t.y});continue}let e=n*Math.sqrt(i)*1.05,a=i*2.39996322;r.push({x:t.x+Math.cos(a)*e,y:t.y+Math.sin(a)*e*.82})}for(let e=0;e<160;e+=1){let e=!1;for(let t=0;t<r.length;t+=1)for(let n=t+1;n<r.length;n+=1){let i=r[t],a=r[n],o=a.x-i.x,s=a.y-i.y,c=214-Math.abs(o),l=102-Math.abs(s);if(c>0&&l>0){if(c<l){let e=(c/2+.5)*(o<0?-1:1);i.x-=e,a.x+=e}else{let e=(l/2+.5)*(s<0?-1:1);i.y-=e,a.y+=e}e=!0}}if(!e)break}return r}function pe(e){let t=(e.title+` `+e.question).toLowerCase();return/\b(map|route|trip|where|location|place)\b/.test(t)?`MAP`:/\b(should|vs|versus|or|decide|choice|option)\b/.test(t)?`BRANCH`:/\b(table|compare|list|rank|breakdown)\b/.test(t)?`TABLE`:/\b(recipe|cook|bake|dish|dinner|meal)\b/.test(t)?`RECIPE`:/\b(chart|trend|graph|growth|over time|history of)\b/.test(t)?`CHART`:/\b(plan|steps|schedule|timeline)\b/.test(t)?`PLAN`:`NOTE`}function M({records:e,chapters:t,onLand:n,onGoDeeper:i,autoTour:a,onClose:d}){let f=(0,u.useMemo)(()=>o(e),[e]),p=(0,u.useMemo)(()=>m(f),[f]),g=p.places,_=(0,u.useMemo)(()=>({w:p.width,h:p.height}),[p]),v=(0,u.useRef)(l());(0,u.useEffect)(()=>{c()},[]);let y=(0,u.useMemo)(()=>{let e=[];for(let n of t){let t=r(n.title+` `+(n.moments[0]?.question??``),f);t>=0&&e[e.length-1]!==t&&e.push(t)}return e},[t,f]),[b,ie]=(0,u.useState)(`all`),x=(0,u.useMemo)(()=>{let e=b===`all`?0:Date.now()-(b===`month`?30:7)*864e5;return oe(f,g,e)},[f,g,b]),S=(0,u.useMemo)(()=>se(f,g,e,v.current),[f,g,e]),ae=(0,u.useMemo)(()=>ce(e.length),[e.length]),[C,w]=(0,u.useState)(`galaxy`),[T,E]=(0,u.useState)(null),D=(0,u.useMemo)(()=>T===null?-1:f.findIndex(e=>e.id===T),[T,f]),[O,A]=(0,u.useState)(null),[j,M]=(0,u.useState)(!1),N=(0,u.useRef)(null),[P,me]=(0,u.useState)(null),[F,I]=(0,u.useState)({x:0,y:0,scale:1}),L=(0,u.useRef)(`galaxy`);L.current=C;let R=(0,u.useRef)(_);R.current=_,(0,u.useLayoutEffect)(()=>{let e=N.current;if(!e)return;let t=()=>{let t=e.clientWidth,n=e.clientHeight;me({w:t,h:n}),L.current===`galaxy`&&I(h(t,n,R.current.w,R.current.h))};if(t(),typeof ResizeObserver>`u`)return;let n=new ResizeObserver(t);return n.observe(e),()=>n.disconnect()},[]),(0,u.useLayoutEffect)(()=>{L.current===`galaxy`&&P&&I(h(P.w,P.h,_.w,_.h))},[_,P]);let z=(0,u.useRef)(null),B=(0,u.useCallback)(()=>{z.current!==null&&clearTimeout(z.current),z.current=null},[]);(0,u.useEffect)(()=>B,[B]);let V=(0,u.useCallback)(e=>{P&&(B(),w(`hood`),E(f[e]?.id??null),A(null),I(ee(g[e],P.w,P.h)))},[P,f,g,B]),he=(0,u.useCallback)(e=>{B(),w(`night`),A(e)},[B]),H=(0,u.useCallback)(()=>{P&&(B(),C===`night`?(w(`hood`),A(null)):C===`hood`&&(w(`galaxy`),E(null),I(h(P.w,P.h,_.w,_.h))))},[C,P,_,B]),U=(0,u.useMemo)(()=>te(y,g),[y,g]),W=(0,u.useCallback)(()=>{if(!P||U.length===0)return;B();let e=0,t=()=>{if(e<U.length){let n=U[e];w(`hood`),E(f[n]?.id??null),A(null),I(ee(g[n],P.w,P.h)),e+=1,z.current=setTimeout(t,1700)}else w(`galaxy`),E(null),A(null),I(h(P.w,P.h,_.w,_.h)),z.current=null};t()},[P,U,f,g,_,B]),ge=(0,u.useRef)(!1);(0,u.useEffect)(()=>{!a||ge.current||!P||U.length===0||(ge.current=!0,W())},[a,P,U.length,W]);let[_e,ve]=(0,u.useState)(!1),[G,K]=(0,u.useState)(``),ye=(0,u.useMemo)(()=>{let t=G.trim().toLowerCase();return t.length<2?[]:e.filter(e=>e.question.toLowerCase().includes(t)||e.title.toLowerCase().includes(t)).slice(0,6)},[G,e]),[be,xe]=(0,u.useState)(null),Se=(0,u.useCallback)(e=>{let t=f.findIndex(t=>t.records.some(t=>t.id===e.id));t>=0&&V(t),xe(e.id),K(``)},[f,V]);(0,u.useEffect)(()=>{let e=N.current;if(!e)return;let t=t=>{if(C!==`galaxy`)return;t.preventDefault();let n=e.getBoundingClientRect();B(),I(e=>re(e,t.deltaY<0?1.12:1/1.12,t.clientX-n.left,t.clientY-n.top))};return e.addEventListener(`wheel`,t,{passive:!1}),()=>e.removeEventListener(`wheel`,t)},[C,B]);let q=(0,u.useRef)(null),[Ce,we]=(0,u.useState)(!1),J=(0,u.useRef)(!1),Te=(0,u.useCallback)(e=>{e.button===0&&(q.current={id:e.pointerId,x:e.clientX,y:e.clientY,moved:!1},J.current=!1)},[]),Ee=(0,u.useCallback)(e=>{let t=q.current;if(!t||e.pointerId!==t.id)return;let n=e.clientX-t.x,r=e.clientY-t.y;if(!(!t.moved&&Math.hypot(n,r)<4)){if(!t.moved){t.moved=!0,we(!0),B();try{e.currentTarget.setPointerCapture(t.id)}catch{}}t.x=e.clientX,t.y=e.clientY,J.current=!0,I(e=>({...e,x:e.x+n,y:e.y+r}))}},[B]),De=(0,u.useCallback)(e=>{let t=q.current;if(!t||e.pointerId!==t.id)return;let n=t.moved;if(n)try{e.currentTarget.releasePointerCapture(t.id)}catch{}q.current=null,we(!1),n&&requestAnimationFrame(()=>J.current=!1)},[]),Oe=(0,u.useCallback)(e=>{J.current&&=(e.stopPropagation(),e.preventDefault(),!1)},[]);(0,u.useEffect)(()=>{let e=e=>{if(e.key===`Escape`){if(G){K(``);return}C===`galaxy`?d():H()}};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[C,H,d,G]);let Y=Date.now(),ke=e.length?Math.min(...e.map(e=>e.firstSeen)):Y,Ae=(0,u.useMemo)(()=>e.reduce((e,t)=>e+ +(t.blocks>2),0),[e]),je=e.length===0?`Nothing here yet`:`${le(ke,Y)} · ${e.length} conversation${e.length===1?``:`s`} · ${Ae} artifact${Ae===1?``:`s`}`,Me=y.length>0?y[y.length-1]:-1,X=D>=0?f[D]:null,Z=D>=0?g[D]:null,Q=(0,u.useMemo)(()=>X&&Z?fe(X.records.length,Z):[],[X,Z]),$=O?e.find(e=>e.id===O)??null:null,Ne=C===`galaxy`?`Your atlas`:X?X.name.charAt(0)+X.name.slice(1).toLowerCase():`Your atlas`,Pe=(0,u.useCallback)(t=>{if(t.kind===`open-loop`&&t.recordId){let r=e.find(e=>e.id===t.recordId);r&&n(r)}else t.hoodIndex>=0&&V(t.hoodIndex)},[e,n,V]);return(0,k.jsx)(`div`,{className:`atlas-scrim`,"data-expanded":j?`true`:void 0,onClick:e=>{e.target===e.currentTarget&&d()},role:`button`,tabIndex:0,"aria-label":`Close atlas`,onKeyDown:e=>{e.target===e.currentTarget&&(e.key===`Enter`||e.key===` `)&&(e.key===` `&&e.preventDefault(),d())},children:(0,k.jsxs)(`section`,{className:`atlas-panel`,role:`dialog`,"aria-label":`Your atlas`,"data-tier":C,children:[(0,k.jsxs)(`header`,{className:`atlas-head`,children:[(0,k.jsxs)(`div`,{className:`atlas-crumbs`,children:[C!==`galaxy`&&(0,k.jsxs)(`button`,{type:`button`,className:`atlas-back`,onClick:H,"aria-label":C===`night`?`Back to the neighborhood`:`Back to the galaxy`,children:[`← `,C===`night`&&X?Ne:`Galaxy`]}),(0,k.jsxs)(`div`,{className:`atlas-title-wrap`,children:[(0,k.jsx)(`h2`,{className:`atlas-title`,children:Ne}),(0,k.jsx)(`span`,{className:`atlas-meta`,children:C===`galaxy`?je:X?`${X.records.length} conversation${X.records.length===1?``:`s`} · named from how you talk about it`:je})]})]}),(0,k.jsxs)(`div`,{className:`atlas-head-search`,children:[(0,k.jsxs)(`div`,{className:`atlas-fly`,children:[(0,k.jsx)(`input`,{className:`atlas-fly-input`,type:`search`,value:G,onChange:e=>K(e.target.value),placeholder:`⌕ Fly to… “that thing about vesting”`,"aria-label":`Find a conversation`}),ye.length>0&&(0,k.jsx)(`ul`,{className:`atlas-fly-matches`,role:`listbox`,children:ye.map(e=>(0,k.jsx)(`li`,{children:(0,k.jsxs)(`button`,{type:`button`,className:`atlas-fly-match`,onClick:()=>Se(e),children:[(0,k.jsx)(`span`,{className:`atlas-fly-match-label`,children:ue(e)}),(0,k.jsx)(`span`,{className:`atlas-fly-match-ago`,children:s(e.savedAt,Y)})]})},e.id))})]}),U.length>=2&&C===`galaxy`&&(0,k.jsx)(`button`,{type:`button`,className:`atlas-tour`,onClick:W,children:`▶ Fly the tour`})]}),(0,k.jsx)(`button`,{type:`button`,className:`atlas-close`,onClick:()=>M(e=>!e),"aria-label":j?`Exit full screen`:`Expand to full screen`,title:j?`Exit full screen`:`Full screen`,children:j?`⤡`:`⤢`}),(0,k.jsx)(`button`,{type:`button`,className:`atlas-close`,onClick:d,"aria-label":`Close the atlas`,children:`✕`})]}),(0,k.jsxs)(`div`,{className:`atlas-viewport`+(Ce?` is-panning`:``),ref:N,onPointerDown:Te,onPointerMove:Ee,onPointerUp:De,onPointerCancel:De,onClickCapture:Oe,children:[e.length===0?(0,k.jsx)(`p`,{className:`atlas-empty`,children:`Your atlas grows as you talk — every saved conversation becomes a place here.`}):(0,k.jsxs)(k.Fragment,{children:[(0,k.jsx)(`div`,{className:`atlas-stars`,"aria-hidden":`true`,children:ae.map((e,t)=>(0,k.jsx)(`span`,{className:`atlas-star`,style:{left:`${e.x}%`,top:`${e.y}%`,width:e.r,height:e.r,"--tw-dur":`${e.dur}s`,"--tw-delay":`${e.delay}s`}},t))}),(0,k.jsxs)(`div`,{className:`atlas-world`,"data-tier":C,style:{transform:ne(F),width:_.w,height:_.h,"--atlas-cam-scale":F.scale},children:[C===`galaxy`&&x.length>0&&(0,k.jsx)(`svg`,{className:`atlas-connections`,width:_.w,height:_.h,"aria-hidden":`true`,children:x.map((e,t)=>(0,k.jsxs)(`g`,{children:[(0,k.jsx)(`path`,{d:e.d,fill:`none`}),(0,k.jsx)(`foreignObject`,{x:e.lx-90,y:e.ly-11,width:`180`,height:`22`,children:(0,k.jsx)(`span`,{className:`atlas-conn-label`,children:e.label})})]},t))}),y.length>=1&&C===`galaxy`&&(0,k.jsxs)(`svg`,{className:`atlas-trail`,width:_.w,height:_.h,"aria-hidden":`true`,children:[y.length>1&&(0,k.jsx)(`polyline`,{points:y.map(e=>`${g[e].x},${g[e].y}`).join(` `),fill:`none`}),y.map((e,t)=>(0,k.jsx)(`circle`,{cx:g[e].x,cy:g[e].y,r:`5`},t)),(0,k.jsx)(`circle`,{className:`atlas-trail-pulse`,cx:g[Me].x,cy:g[Me].y,r:`5`})]}),f.map((e,t)=>{let n=g[t],r=e.records.filter(e=>e.savedAt>v.current).length,i=S.some(e=>e.kind===`open-loop`&&e.hoodIndex===t);return(0,k.jsxs)(`button`,{type:`button`,className:`atlas-hood`+(C!==`galaxy`&&t!==D?` is-dim`:``),"aria-label":`${e.name}, ${e.records.length} conversations`,style:{left:n.x,top:n.y,"--hood-color":e.color,"--name-size":`${15+Math.min(9,e.records.length/6)}px`},onClick:()=>V(t),children:[(0,k.jsx)(`span`,{className:`atlas-hood-name`,children:e.name}),(0,k.jsxs)(`span`,{className:`atlas-hood-count`,children:[e.records.length,` conversation`,e.records.length===1?``:`s`]}),i&&(0,k.jsxs)(`span`,{className:`atlas-hood-loop`,children:[(0,k.jsx)(`span`,{className:`atlas-hood-loop-dot`,"aria-hidden":`true`}),`1 open loop`]}),r>0&&!i&&(0,k.jsxs)(`span`,{className:`atlas-hood-badge`,"aria-label":`${r} new`,children:[r,` new`]}),(0,k.jsx)(`span`,{className:`atlas-hood-core`,"aria-hidden":`true`})]},e.id)}),C!==`galaxy`&&X&&Z&&(0,k.jsxs)(`div`,{className:`atlas-constellation`,children:[(0,k.jsx)(`svg`,{className:`atlas-night-links`,width:_.w,height:_.h,"aria-hidden":`true`,style:{"--hood-color":X.color},children:Q.slice(1).map((e,t)=>(0,k.jsx)(`line`,{x1:Q[t].x,y1:Q[t].y,x2:e.x,y2:e.y},t))}),X.records.map((e,t)=>{let n=Q[t]??{x:Z.x,y:Z.y},r=e.savedAt>v.current;return(0,k.jsxs)(`button`,{type:`button`,className:`atlas-night`+(be===e.id?` is-found`:``)+(r?` is-new`:``),style:{left:n.x,top:n.y,"--hood-color":X.color},onClick:()=>he(e.id),title:`${e.question} — saved ${s(e.savedAt,Y)}`,children:[(0,k.jsx)(`span`,{className:`atlas-night-dot`,"aria-hidden":`true`}),(0,k.jsxs)(`span`,{className:`atlas-night-card`,children:[(0,k.jsx)(`span`,{className:`atlas-night-date`,children:s(e.savedAt,Y)}),(0,k.jsx)(`span`,{className:`atlas-night-title`,children:ue(e,36)})]})]},e.id)})]})]}),C===`hood`&&X&&(0,k.jsxs)(`div`,{className:`atlas-hood-chrome`,children:[i&&X.records.length>=2&&(0,k.jsx)(`button`,{type:`button`,className:`atlas-hood-deeper`,title:`Find the common threads, lessons, and open questions across these ${X.records.length} conversations`,onClick:()=>i(de(X.records)),children:`Synthesize →`}),(0,k.jsxs)(`span`,{className:`atlas-hood-chrome-hint`,children:[X.records.length,` night`,X.records.length===1?``:`s`,` `,`· tap one to drop back into it`]})]}),y.length>=1&&C===`galaxy`&&(0,k.jsx)(`div`,{className:`atlas-trail-caption`,children:y.length>1?`TONIGHT — ONE SESSION, ${y.length} NEIGHBORHOODS`:`TONIGHT — YOU ARE HERE`}),C===`night`&&$&&(0,k.jsx)(`div`,{className:`atlas-night-stage`,onClick:e=>{e.target===e.currentTarget&&H()},role:`button`,tabIndex:0,"aria-label":`Back out of the rehydrated night`,onKeyDown:e=>{e.target===e.currentTarget&&(e.key===`Enter`||e.key===` `)&&(e.key===` `&&e.preventDefault(),H())},children:(0,k.jsxs)(`article`,{className:`atlas-rehydrate`,style:{"--hood-color":X?.color??`var(--presence)`},children:[(0,k.jsxs)(`header`,{className:`atlas-rehydrate-head`,children:[(0,k.jsxs)(`span`,{className:`atlas-rehydrate-tag`,children:[(0,k.jsx)(`span`,{className:`atlas-rehydrate-tag-dot`,"aria-hidden":`true`}),`REHYDRATED · `,s($.savedAt,Y).toUpperCase(),X?` · ${X.name}`:``]}),(0,k.jsx)(`span`,{className:`atlas-rehydrate-asis`,children:`exactly as you left it`})]}),(0,k.jsx)(`h3`,{className:`atlas-rehydrate-title`,children:$.title||$.question}),(0,k.jsxs)(`div`,{className:`atlas-rehydrate-thread`,children:[(0,k.jsx)(`p`,{className:`atlas-rehydrate-q`,children:$.question}),(0,k.jsxs)(`div`,{className:`atlas-rehydrate-a`,children:[(0,k.jsx)(`span`,{className:`atlas-rehydrate-orb`,"aria-hidden":`true`}),(0,k.jsxs)(`div`,{className:`atlas-rehydrate-art`,children:[(0,k.jsx)(`span`,{className:`atlas-rehydrate-art-kind`,children:pe($)}),(0,k.jsxs)(`div`,{className:`atlas-rehydrate-art-body`,children:[(0,k.jsx)(`span`,{className:`atlas-rehydrate-art-line`,style:{width:`92%`}}),(0,k.jsx)(`span`,{className:`atlas-rehydrate-art-line`,style:{width:`76%`}}),(0,k.jsx)(`span`,{className:`atlas-rehydrate-art-line`,style:{width:`84%`}})]}),(0,k.jsx)(`span`,{className:`atlas-rehydrate-art-open`,children:`OPEN →`})]})]})]}),(0,k.jsx)(`p`,{className:`atlas-rehydrate-foot`,children:`This night was stored as a snapshot — nothing re-summarized. Step back inside it.`}),(0,k.jsxs)(`div`,{className:`atlas-rehydrate-actions`,children:[(0,k.jsx)(`button`,{type:`button`,className:`atlas-rehydrate-land`,onClick:()=>n($),children:`Drop back into it →`}),(0,k.jsx)(`button`,{type:`button`,className:`atlas-rehydrate-back`,onClick:H,children:`Back to the constellation`})]})]})})]}),C===`galaxy`&&S.length>0&&(_e?(0,k.jsxs)(`aside`,{className:`atlas-noticed`,"aria-label":`What Mavéa noticed`,children:[(0,k.jsxs)(`header`,{className:`atlas-noticed-head`,children:[(0,k.jsx)(`span`,{className:`atlas-noticed-orb`,"aria-hidden":`true`}),(0,k.jsx)(`span`,{className:`atlas-noticed-title`,children:`MAVÉA NOTICED`}),(0,k.jsx)(`span`,{className:`atlas-noticed-sub`,children:`while you were away`}),(0,k.jsx)(`button`,{type:`button`,className:`atlas-noticed-collapse`,onClick:()=>ve(!1),"aria-label":`Minimize what Mavéa noticed`,title:`Minimize`,children:`–`})]}),S.map((e,t)=>(0,k.jsxs)(`button`,{type:`button`,className:`atlas-noticed-item`,onClick:()=>Pe(e),children:[(0,k.jsx)(`span`,{className:`atlas-noticed-dot`,style:{"--ins-color":e.color},"aria-hidden":`true`}),(0,k.jsxs)(`span`,{className:`atlas-noticed-body`,children:[(0,k.jsx)(`span`,{className:`atlas-noticed-kind`,style:{"--ins-color":e.color},children:e.kindLabel}),(0,k.jsx)(`span`,{className:`atlas-noticed-text`,children:e.text}),(0,k.jsxs)(`span`,{className:`atlas-noticed-cta`,style:{"--ins-color":e.color},children:[e.cta,` →`]})]})]},t))]}):(0,k.jsxs)(`button`,{type:`button`,className:`atlas-noticed-pill`,onClick:()=>ve(!0),"aria-label":`Show what Mavéa noticed (${S.length})`,children:[(0,k.jsx)(`span`,{className:`atlas-noticed-orb`,"aria-hidden":`true`}),(0,k.jsx)(`span`,{className:`atlas-noticed-pill-label`,children:`MAVÉA NOTICED`}),(0,k.jsx)(`span`,{className:`atlas-noticed-pill-count`,children:S.length})]})),C===`galaxy`&&e.length>0&&ke<Y-6048e5&&(0,k.jsxs)(`div`,{className:`atlas-range`,role:`group`,"aria-label":`Connections over which time window`,children:[(0,k.jsx)(`span`,{className:`atlas-range-label`,children:`CONNECTIONS OVER`}),[`week`,`month`,`all`].map(e=>(0,k.jsx)(`button`,{type:`button`,className:`atlas-range-btn`+(b===e?` is-active`:``),"aria-pressed":b===e,onClick:()=>ie(e),children:e===`week`?`Last week`:e===`month`?`Last month`:`All time`},e))]}),C===`galaxy`&&e.length>0&&(0,k.jsxs)(`div`,{className:`atlas-idle-hint`,children:[`Click a neighborhood to fly in`,U.length>=2?` — or take the tour.`:`.`]})]}),(0,k.jsxs)(`footer`,{className:`atlas-foot`,children:[(0,k.jsxs)(`p`,{className:`atlas-foot-line`,children:[`Neighborhoods grow as you talk. Fly into one to wander its nights — the atlas`,` `,(0,k.jsx)(`em`,{children:`is`}),` the history.`]}),(0,k.jsx)(`button`,{type:`button`,className:`atlas-keep`,onClick:d,children:`Keep talking`})]})]})})}export{M as AtlasView};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as e}from"./jsx-runtime-DeHZSEgm.js";var t=e();function n({message:e=`No data to show`,hint:n}){return(0,t.jsxs)(`div`,{className:`cx-empty`,role:`status`,children:[(0,t.jsx)(`span`,{className:`cx-empty-msg`,children:e}),n&&(0,t.jsx)(`span`,{className:`cx-empty-hint`,children:n})]})}export{n as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./compiler-runtime-qQQXpJgv.js";import{t}from"./jsx-runtime-DeHZSEgm.js";import{J as n,T as r,j as i,l as a}from"./store-
|
|
1
|
+
import{t as e}from"./compiler-runtime-qQQXpJgv.js";import{t}from"./jsx-runtime-DeHZSEgm.js";import{J as n,T as r,j as i,l as a}from"./store-D16dGt7I.js";import{t as o}from"./tiles-D-s6v-mA.js";var s=e(),c=t(),l=[{v:`15min`,label:`15M`},{v:`hourly`,label:`1H`},{v:`6h`,label:`6H`},{v:`daily`,label:`DAILY`},{v:`manual`,label:`MANUAL`}],u={"15min":`Every 15 minutes`,hourly:`Hourly`,"6h":`Every 6 hours`,daily:`Daily`,manual:`Manual`};function d(e){if(e===`manual`)return`Refreshes only when you ask — no automatic searches.`;let t=Math.round(1440/n[e]);return`${u[e]} ≈ up to ~${t} searches/day while Mavéa is open. You provide the key and pay the search provider; a faster cadence can increase those charges. This is never real-time — each check is a snapshot.`}function f(e){return new Date(e).toLocaleString(void 0,{weekday:`short`,hour:`numeric`,minute:`2-digit`})}function p(e){let t=(0,s.c)(23),{dashboard:n,now:u}=e,p=n.cadence.data,m=n.cadence.window,h;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(h=(0,c.jsx)(`div`,{className:`card-eyebrow`,children:`Check cadence`}),t[0]=h):h=t[0];let g;t[1]!==n.id||t[2]!==p?(g=l.map(e=>(0,c.jsx)(`button`,{type:`button`,className:`dash-seg-opt`+(e.v===p?` is-active`:``),"aria-pressed":e.v===p,onClick:()=>i(n.id,{data:e.v}),children:e.label},e.v)),t[1]=n.id,t[2]=p,t[3]=g):g=t[3];let _;t[4]===g?_=t[5]:(_=(0,c.jsx)(`div`,{className:`dash-seg`,role:`group`,"aria-label":`Data refresh cadence`,children:g}),t[4]=g,t[5]=_);let v;t[6]===p?v=t[7]:(v=d(p),t[6]=p,t[7]=v);let y;t[8]===v?y=t[9]:(y=(0,c.jsx)(`p`,{className:`dash-cadence-cost`,children:v}),t[8]=v,t[9]=y);let b;t[10]!==n.id||t[11]!==m?(b=m&&(0,c.jsxs)(`div`,{className:`dash-cadence-window`,children:[(0,c.jsxs)(`p`,{className:`dash-cadence-window-text`,children:[`Live window: `,(0,c.jsx)(`strong`,{children:m.label}),` · `,f(m.startAt),`–`,f(m.endAt)]}),(0,c.jsx)(`button`,{type:`button`,className:`dash-cadence-clear`,onClick:()=>r(n.id,null),children:`Clear`})]}),t[10]=n.id,t[11]=m,t[12]=b):b=t[12];let x;t[13]!==n.id||t[14]!==n.oneShotAt||t[15]!==n.oneShotLabel||t[16]!==u?(x=n.oneShotAt!==void 0&&(0,c.jsxs)(`div`,{className:`dash-cadence-oneshot`,children:[(0,c.jsx)(o,{targetAt:n.oneShotAt,now:u,label:n.oneShotLabel}),(0,c.jsx)(`button`,{type:`button`,className:`dash-cadence-clear`,onClick:()=>a(n.id),children:`Clear`})]}),t[13]=n.id,t[14]=n.oneShotAt,t[15]=n.oneShotLabel,t[16]=u,t[17]=x):x=t[17];let S;return t[18]!==_||t[19]!==y||t[20]!==b||t[21]!==x?(S=(0,c.jsxs)(`section`,{className:`card dash-cadence-card`,"aria-label":`Check cadence`,children:[h,_,y,b,x]}),t[18]=_,t[19]=y,t[20]=b,t[21]=x,t[22]=S):S=t[22],S}export{p as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./react-BZJXY1be.js";import{t}from"./compiler-runtime-qQQXpJgv.js";import{t as n}from"./jsx-runtime-DeHZSEgm.js";import{o as r}from"./ledger-
|
|
1
|
+
import{t as e}from"./react-BZJXY1be.js";import{t}from"./compiler-runtime-qQQXpJgv.js";import{t as n}from"./jsx-runtime-DeHZSEgm.js";import{o as r}from"./ledger-DHS2di3l.js";import{t as i}from"./useLedger-D4cXEwI0.js";import{c as a,l as o}from"./dashboardEvents-MzCzak6K.js";import{n as s,t as c}from"./checkLogModel-BMtruriG.js";var l=e(),u=t(),d=n();function f(e){return e.domains?.length?e.domains.join(`, `):e.manual?`MANUAL`:`MAVÉA`}function p(e){let t=(0,u.c)(34),{entry:n}=e,r;t[0]===n?r=t[1]:(r=c(n),t[0]=n,t[1]=r);let i=r,l=n.kind===`savings`?n.suggestion:void 0,p;t[2]===n.at?p=t[3]:(p=s(n.at),t[2]=n.at,t[3]=p);let m;t[4]===p?m=t[5]:(m=(0,d.jsx)(`span`,{className:`dash-log-time`,children:p}),t[4]=p,t[5]=m);let h;t[6]===i?h=t[7]:(h=i&&(0,d.jsx)(`span`,{className:`dash-log-chip dash-log-chip--${i.tone}`,children:i.label}),t[6]=i,t[7]=h);let g;t[8]!==m||t[9]!==h?(g=(0,d.jsxs)(`div`,{className:`dash-log-row-top`,children:[m,h]}),t[8]=m,t[9]=h,t[10]=g):g=t[10];let _;t[11]===n.text?_=t[12]:(_=(0,d.jsx)(`p`,{className:`dash-log-text`,children:n.text}),t[11]=n.text,t[12]=_);let v;t[13]!==n.id||t[14]!==l?(v=l&&l.state===`open`&&(0,d.jsxs)(`div`,{className:`dash-log-suggestion`,children:[(0,d.jsxs)(`button`,{type:`button`,className:`dash-log-apply-btn`,onClick:()=>a(n.id,l.dashboardId,l.to),children:[`Apply — save ~`,l.savesPerMonth,` searches/mo`]}),(0,d.jsx)(`button`,{type:`button`,className:`dash-log-dismiss-btn`,onClick:()=>o(n.id),children:`Dismiss`})]}),t[13]=n.id,t[14]=l,t[15]=v):v=t[15];let y;t[16]===l?y=t[17]:(y=l&&l.state===`applied`&&(0,d.jsx)(`div`,{className:`dash-log-suggestion`,children:(0,d.jsx)(`span`,{className:`dash-log-applied`,children:`Applied ✓`})}),t[16]=l,t[17]=y);let b;t[18]===n?b=t[19]:(b=f(n),t[18]=n,t[19]=b);let x;t[20]===b?x=t[21]:(x=(0,d.jsx)(`span`,{className:`dash-log-source`,children:b}),t[20]=b,t[21]=x);let S;t[22]===Symbol.for(`react.memo_cache_sentinel`)?(S=(0,d.jsx)(`span`,{className:`dash-log-dot`,"aria-hidden":`true`}),t[22]=S):S=t[22];let C=n.searches===1?`1 SEARCH`:`NO SEARCH SPENT`,w;t[23]===C?w=t[24]:(w=(0,d.jsx)(`span`,{className:`dash-log-cost`,children:C}),t[23]=C,t[24]=w);let T;t[25]!==x||t[26]!==w?(T=(0,d.jsxs)(`div`,{className:`dash-log-foot`,children:[x,S,w]}),t[25]=x,t[26]=w,t[27]=T):T=t[27];let E;return t[28]!==T||t[29]!==g||t[30]!==_||t[31]!==v||t[32]!==y?(E=(0,d.jsxs)(`li`,{className:`dash-log-row`,children:[g,_,v,y,T]}),t[28]=T,t[29]=g,t[30]=_,t[31]=v,t[32]=y,t[33]=E):E=t[33],E}var m=100;function h({dashboardId:e,now:t,limit:n=m}){let a=i(),o=(0,l.useMemo)(()=>e?a.filter(t=>t.dashboardIds.includes(e)):a,[a,e]),s=(0,l.useMemo)(()=>r(o,t),[o,t]),c=(0,l.useMemo)(()=>o.slice(0,Math.max(0,n)),[o,n]);return(0,d.jsxs)(`section`,{className:`card dash-log-card`,"aria-label":`Check log`,children:[(0,d.jsxs)(`div`,{className:`card-eyebrow dash-log-head`,children:[e?`CHECK LOG · `:``,`TODAY · `,s,` SEARCHES USED`]}),c.length===0?(0,d.jsx)(`p`,{className:`dash-log-empty`,children:`Your check log will appear here.`}):(0,d.jsx)(`ul`,{className:`dash-log-list`,role:`log`,"aria-live":`polite`,"aria-relevant":`additions`,children:c.map(e=>(0,d.jsx)(p,{entry:e},e.id))})]})}export{h as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./react-BZJXY1be.js";import{t}from"./jsx-runtime-DeHZSEgm.js";import{n}from"./preloadableLazy-MIX1ApBW.js";import{n as r}from"./icons-gLFQTv74.js";import{n as i,r as a}from"./registry-
|
|
1
|
+
import{t as e}from"./react-BZJXY1be.js";import{t}from"./jsx-runtime-DeHZSEgm.js";import{n}from"./preloadableLazy-MIX1ApBW.js";import{n as r}from"./icons-gLFQTv74.js";import{n as i,r as a}from"./registry-BodYWiga.js";var o=e(),s=t();function c({items:e,surface:t,onClose:c,pinned:l=!1}){let[u,d]=(0,o.useState)(``),[f,p]=(0,o.useState)(0),m=(0,o.useRef)(null),h=(0,o.useRef)(null),g=(0,o.useRef)(null),_=(0,o.useMemo)(()=>{let t=u.trim().toLowerCase();if(!t)return e;let n=t.split(/\s+/);return e.filter(e=>{let t=a(e.feature);return n.every(e=>t.includes(e))})},[e,u]),v=(0,o.useMemo)(()=>i.map(e=>({heading:e,items:_.filter(t=>t.feature.group===e)})).filter(e=>e.items.length>0),[_]),y=(0,o.useMemo)(()=>v.flatMap(e=>e.items),[v]);(0,o.useEffect)(()=>{p(0)},[u]),(0,o.useEffect)(()=>(g.current=document.activeElement??null,m.current?.focus(),()=>g.current?.focus?.()),[]),(0,o.useEffect)(()=>{(h.current?.querySelector(`.is-active`))?.scrollIntoView?.({block:`nearest`})},[f]);let b=(0,o.useCallback)(e=>{e.run(),c()},[c]),x=(0,o.useCallback)(e=>{e.watch?.(),c()},[c]);(0,o.useEffect)(()=>{let e=e=>{if(e.key===`Escape`)e.preventDefault(),l||c();else if(e.key===`ArrowDown`)e.preventDefault(),p(e=>Math.min(Math.max(0,y.length-1),e+1));else if(e.key===`ArrowUp`)e.preventDefault(),p(e=>Math.max(0,e-1));else if(e.key===`Enter`){e.preventDefault();let t=y[f];if(!t)return;(e.metaKey||e.ctrlKey)&&t.watch?x(t):b(t)}};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[f,y,c,b,x,l]);let S=y[f]?.feature.id;return(0,s.jsx)(`div`,{className:`cmdk-scrim`,onClick:e=>{e.target===e.currentTarget&&!l&&c()},role:`button`,tabIndex:0,"aria-label":`Close`,onKeyDown:e=>{e.target===e.currentTarget&&(e.key===`Enter`||e.key===` `)&&(e.key===` `&&e.preventDefault(),l||c())},children:(0,s.jsxs)(`div`,{className:`cmdk-panel`,role:`dialog`,"aria-modal":`true`,"aria-label":`Find a feature`,children:[(0,s.jsxs)(`div`,{className:`cmdk-search`,children:[(0,s.jsx)(r.sparkle,{className:`cmdk-search-icon`,"aria-hidden":`true`}),(0,s.jsx)(`input`,{ref:m,className:`cmdk-input`,value:u,onChange:e=>d(e.target.value),placeholder:t===`demo`?`Find anything Mavéa can do…`:`Search everything Mavéa can do…`,"aria-label":`Search features`,"aria-activedescendant":S?`cmdk-opt-${S}`:void 0,autoComplete:`off`,spellCheck:!1}),!l&&(0,s.jsx)(`kbd`,{className:`cmdk-kbd`,children:`esc`})]}),t===`demo`&&(0,s.jsx)(`p`,{className:`cmdk-note`,children:`Click any feature to see it in action.`}),(0,s.jsx)(`div`,{className:`cmdk-list`,role:`listbox`,"aria-label":`Features`,ref:h,children:y.length===0?(0,s.jsxs)(`div`,{className:`cmdk-empty`,children:[`No features match “`,u.trim(),`”.`]}):v.map(e=>(0,s.jsxs)(`div`,{className:`more-menu-group`,children:[(0,s.jsx)(`span`,{className:`more-menu-heading`,children:e.heading}),e.items.map(e=>{let t=y.indexOf(e),i=t===f;return(0,s.jsxs)(`div`,{className:`cmdk-row-wrap`,role:`presentation`,children:[(0,s.jsxs)(`button`,{type:`button`,role:`option`,id:`cmdk-opt-${e.feature.id}`,"aria-selected":i,className:`more-menu-row cmdk-row${i?` is-active`:``}${e.available?``:` is-unavailable`}`,onMouseMove:()=>p(t),onClick:()=>b(e),...e.preload?n(e.preload):{},children:[(0,s.jsx)(`span`,{className:`more-menu-name`,children:e.feature.label}),(0,s.jsx)(`span`,{className:`more-menu-blurb`,children:e.available?e.feature.blurb:e.reason??e.feature.blurb})]}),e.watch&&(0,s.jsxs)(`button`,{type:`button`,className:`cmdk-watch`,"aria-label":`See how ${e.feature.label} works`,title:`See how it works — a quick demo (⌘↵)`,onMouseMove:()=>p(t),onClick:()=>x(e),children:[(0,s.jsx)(r.play,{className:`cmdk-watch-ic`,"aria-hidden":`true`}),`See how`]})]},e.feature.id)})]},e.heading))})]})})}export{c as CommandPalette};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as e}from"./react-BZJXY1be.js";import{t}from"./compiler-runtime-qQQXpJgv.js";import{t as n}from"./jsx-runtime-DeHZSEgm.js";import{F as r,R as i,f as a}from"./index-Db-FgYxX.js";import{n as o}from"./icons-gLFQTv74.js";import{t as s}from"./TopicCanvas-Cwc6-K3q.js";import{t as c}from"./motion-BY_Egaxm.js";import{t as l}from"./toast-BBNs2h3L.js";import{t as u}from"./Presence-UqXfH4Y-.js";import{t as d}from"./sentenceCase-CLDiNB0f.js";import{a as f,i as p,r as m,t as h}from"./capture-Y6Qm8zCN.js";import{n as ee,r as g,t as _}from"./share--tpc1nLE.js";import{t as v}from"./FeatureUseNotice-CCI4mM39.js";import{r as y}from"./history-D2EH2X6D.js";import{n as b,r as x}from"./audioTrack-BJ2D_nuy.js";import{t as S}from"./replay-dMDmsTaD.js";import"./canvas-CYrbzF43.js";import{t as C}from"./AnnotationLayer-Bh1yiSAK.js";var w=e(),T=t(),te=18e4,E=650,D=350,O=700;function k(e){let t=[e.spoken??e.narration,...e.tour.map(e=>e.saySpoken??e.say??``)].reduce((e,t)=>e+t.trim().length,0);return 1e3+Math.max(1800,t/14*1e3)}function ne(e){return e.reduce((e,t)=>e+k(t),0)}function re(e){let t=k(e),n=[e.spoken??e.narration,...e.tour.map(e=>e.saySpoken??e.say??``)].map(e=>e.trim()).filter(Boolean),r=n.reduce((e,t)=>e+t.length,0),i=t-E-D,a=E;return{durationMs:t,spans:n.map(e=>{let t=Math.round(a);return a+=r?i*e.length/r:0,{text:e,startMs:t,endMs:Math.round(a)}})}}function ie(e){for(let t=e.length-1;t>=0;t--){let n=e[t];if(n?.topicShift===!0||n?.topicShift===void 0&&n?.mode===`replace`)return t}return 0}function A(e,t,n){let r=n.spans[e+1];return r?r.startMs:E+Math.max(0,n.durationMs-E-D)*(e+1)/(t+1)}function ae(e,t,n){let r=[],i=0;return e.forEach((e,a)=>{let o=t[a];if(!o)return;let s=S(e),c=s.cues.map((e,t)=>A(t,s.cues.length,o)),l=[0,E,...c,o.durationMs].map(e=>Math.max(0,Math.min(o.durationMs,e))).filter((e,t,n)=>t===0||e>n[t-1]),u=[];for(let t=0;t<l.length-1;t++){let d=l[t],f=l[t+1],p=c.findIndex(e=>e===d),m=p>=0?s.cues[p]:void 0;m&&n.penMarks&&(u=[...u,...m.marks.map((t,n)=>({spot:m.spot,line:m.say,mark:t,delayMs:n*240,...t.kind===`connect`&&typeof t.onIndex==`number`?{toSpot:e.spec.blocks[t.onIndex]?.id}:{}}))]);let h=[...o.spans].reverse().find(e=>e.startMs<=d&&e.endMs>d);r.push({frame:e,turnIndex:a,startMs:i+d,durationMs:Math.max(1,f-d),spot:n.spotlights?m?.spot??null:null,caption:n.captions?h?.text??null:null,ink:u,questionOnly:t===0})}i+=o.durationMs}),j(r)}function j(e){let t=e[e.length-1];if(!t?.spot)return e;if(t.durationMs<=O*2)return e[e.length-1]={...t,spot:null},e;let n=t.durationMs-O;return e[e.length-1]={...t,durationMs:n},e.push({...t,startMs:t.startMs+n,durationMs:O,spot:null}),e}var M=24e3,N=.65,P=.18,F=.35,I=.89,L=6,R=class extends Error{turnIndex;question;constructor(e,t){super(`Narration is unavailable for “${t||`turn ${e+1}`}”.`),this.turnIndex=e,this.question=t,this.name=`RequiredConversationAudioError`}};function z(e){return[e.spoken??e.narration,...e.tour.map(e=>e.saySpoken??e.say??``)].map(e=>e.trim()).filter(Boolean)}function B(e){return e.trim().replace(/\s+/g,` `)}function V(e,t){let n=z(e);return n.length>0&&t.pcm.length>0&&t.spans.length===n.length&&n.every((e,n)=>B(t.spans[n]?.text??``)===B(e)&&t.spans[n].t1>t.spans[n].t0)}function H(e){let t=e.spans.map(e=>({text:e.text,startMs:Math.round((N+e.t0)*1e3),endMs:Math.round((N+e.t1)*1e3)})),n=new Float32Array(e.pcm.length);for(let t=0;t<e.pcm.length;t++)n[t]=e.pcm[t]/32768;return{lines:[{text:t.map(e=>e.text).join(` `),pcm:n,rate:e.sampleRate}],durationS:N+e.duration+F,spans:t}}async function U(e,t,n,r){let i=z(e);if(!i.length)throw new R(t,e.question);let a=[];for(let o of i){if(n?.aborted)throw new DOMException(`Cancelled`,`AbortError`);let i=await b(o,n);if(n?.aborted)throw new DOMException(`Cancelled`,`AbortError`);if(!i.length)throw new R(t,e.question);a.push({text:o,pcm:i,rate:M}),r?.(i.length/M+P)}let o=[],s=N;for(let e of a){let t=s;s+=e.pcm.length/e.rate,o.push({text:e.text,startMs:Math.round(t*1e3),endMs:Math.round(s*1e3)}),s+=P}return{lines:a,durationS:s+F,spans:o}}async function oe(e,t,n,i){let a=r();if(a===null||typeof OfflineAudioContext>`u`)throw Error(`audio-encoding-unavailable`);let o=e.map(e=>{let n=t(e);return n&&V(e,n)?H(n):null}),s=o.reduce((e,t)=>e+(t?.durationS??1),0),c=e.reduce((e,t,n)=>e+(o[n]?0:z(t).length),0),l=0,u=new AbortController,d=()=>u.abort();n?.addEventListener(`abort`,d,{once:!0}),n?.aborted&&u.abort();let f=e=>{if(s+=e,i?.(++l,c),s*1e3>18e4)throw u.abort(),Error(`conversation-too-long`)},p;try{p=await x(e,2,(e,t)=>{let n=o[t];return n?Promise.resolve(n):U(e,t,u.signal,f)})}finally{n?.removeEventListener(`abort`,d)}let m=p.reduce((e,t)=>e+t.durationS,0);if(m*1e3>18e4)throw Error(`conversation-too-long`);let h=0;for(let e of p)for(let t of e.lines)for(let e=0;e<t.pcm.length;e++)h=Math.max(h,Math.abs(t.pcm[e]));let ee=h>0?Math.min(L,I/h):1,g=new OfflineAudioContext(1,Math.ceil(m*a),a),_=g.createGain();_.gain.value=ee,_.connect(g.destination);let v=0;for(let e of p){let t=v+N;for(let n of e.lines){let e=g.createBuffer(1,n.pcm.length,n.rate);e.getChannelData(0).set(n.pcm);let r=g.createBufferSource();r.buffer=e,r.connect(_),r.start(t),t+=n.pcm.length/n.rate+P}v+=e.durationS}return{buffer:await g.startRendering(),turns:p.map(e=>({durationMs:Math.round(e.durationS*1e3),spans:e.spans})),durationMs:Math.round(m*1e3)}}var se={"1080p":{width:1920,height:1080},"720p":{width:1280,height:720}};function W(e,t,n=a()){let{bitrate:r}=h(e,n);return t===`720p`?Math.round(r*.55):r}async function G(e){document.visibilityState===`hidden`&&await new Promise((t,n)=>{let r=()=>a(new DOMException(`Cancelled`,`AbortError`)),i=()=>{document.visibilityState!==`hidden`&&a()},a=a=>{document.removeEventListener(`visibilitychange`,i),e.removeEventListener(`abort`,r),a?n(a):t()};document.addEventListener(`visibilitychange`,i),e.addEventListener(`abort`,r,{once:!0})})}function ce(){return typeof document<`u`&&(typeof VideoEncoder<`u`&&typeof AudioEncoder<`u`||f()!==null)}var K={selector:`.cvs-presence`,bleed:96};async function le(e){let t=a(),n=se[e.size],r=e.scenes[0];r&&await e.applyScene(r,0);let i=getComputedStyle(e.el).backgroundColor,o=await p({el:e.el,audioBuffer:e.audioBuffer,aspect:`16:9`,dims:{w:n.width,h:n.height},quality:e.quality,bitrate:W(e.quality,e.size,t),background:i&&i!==`rgba(0, 0, 0, 0)`?i:void 0,maxDurationMs:e.durationMs,liveLayer:K,onFrame:e.onFrame,cues:e.scenes.slice(1).map((t,n)=>({atMs:t.startMs,apply:async()=>{let r=n+1;await e.applyScene(t,r),e.onProgress?.({phase:`render`,completed:r+1,total:e.scenes.length})}})),gate:async()=>{if(e.signal.aborted)throw new DOMException(`Cancelled`,`AbortError`);await G(e.signal)}});try{await o.done(),e.onProgress?.({phase:`encode`,completed:0,total:1});let t=await o.stop();return e.onProgress?.({phase:`ready`,completed:1,total:1}),{...t,...n}}catch(e){throw o.cancel(),e}}var q=n();function ue({scene:e,options:t,frameRef:n,glide:r=!0}){let a=(0,w.useRef)(null),o=(0,w.useRef)(null),c=(0,w.useRef)(null),l=i(),d=(0,w.useRef)(null),[f,p]=(0,w.useState)(0);(0,w.useEffect)(()=>(n?.(a.current),()=>n?.(null)),[n]),(0,w.useEffect)(()=>{let t=o.current,n=c.current;if(!t||!n)return;let r=d.current!==e?.turnIndex;d.current=e?.turnIndex??null;let i=r?0:null;if(e?.spot){let r=[...t.querySelectorAll(`[data-spot-id]`)].find(t=>t.dataset.spotId===e.spot);if(r){let e=0;for(let n=r;n&&n!==t;n=n.offsetParent)e+=n.offsetTop;i=Math.max(0,Math.min(e-(t.clientHeight-r.offsetHeight)/2,n.offsetHeight-t.clientHeight))}}if(i===null)return;n.style.setProperty(`--cvs-shift`,`${-i}px`);let a=window.setTimeout(()=>p(e=>e+1),420);return()=>window.clearTimeout(a)},[e?.spot,e?.turnIndex]);let m=e?.questionOnly??!1,h=e?e.frame.question||e.frame.spec.title:``;return(0,q.jsx)(`div`,{ref:a,className:`cvs-stage`,"data-aspect":`16:9`,"data-question-only":m,"data-captioned":t.captions,children:e?(0,q.jsxs)(q.Fragment,{children:[(0,q.jsxs)(`header`,{className:`cvs-header`,children:[(0,q.jsxs)(`div`,{className:`cvs-brand`,children:[(0,q.jsx)(`span`,{className:`cvs-brand-dot`}),` Mavéa conversation`]}),(0,q.jsxs)(`div`,{className:`cvs-turn`,children:[`Turn `,e.turnIndex+1]}),(0,q.jsx)(`h2`,{children:h})]}),m?(0,q.jsxs)(`div`,{className:`cvs-ask`,children:[(0,q.jsx)(`span`,{className:`cvs-ask-eyebrow`,children:`Asked`}),(0,q.jsx)(`p`,{className:`cvs-ask-line`,children:h})]}):(0,q.jsxs)(`div`,{ref:o,className:`cvs-canvas`,children:[(0,q.jsx)(`div`,{className:`topic-wrap`,ref:c,"data-glide":r,children:(0,q.jsx)(s,{data:e.frame.spec,spot:e.spot,built:{},onProve:()=>{}})},e.turnIndex),t.penMarks&&(0,q.jsx)(C,{spots:e.ink,within:a.current,revision:f})]}),t.captions&&e.caption&&(0,q.jsx)(`div`,{className:`cvs-caption`,children:e.caption}),t.presence&&(0,q.jsx)(`div`,{className:`cvs-presence`,ref:l,children:(0,q.jsx)(u,{state:m?`thinking`:`speaking`})})]}):(0,q.jsx)(`div`,{className:`cvs-empty`,children:`Choose a turn to preview it.`})})}var de=[{id:`1080p`,label:`1080p`,hint:`1920×1080`},{id:`720p`,label:`720p`,hint:`1280×720`}],fe=[{id:`balanced`,label:`Balanced`},{id:`high`,label:`High`},{id:`ultra`,label:`Ultra`}],J=650,pe=640,me=360;function he(e=300){return Promise.race([(async()=>{await new Promise(e=>requestAnimationFrame(()=>e())),await new Promise(e=>requestAnimationFrame(()=>e()))})(),new Promise(t=>window.setTimeout(t,e))])}var ge=[{key:`captions`,label:`Captions`},{key:`spotlights`,label:`Spotlights`},{key:`penMarks`,label:`Pen marks`},{key:`presence`,label:`Mavéa`},{key:`audio`,label:`Audio`}];function _e(e){let t=Math.max(0,Math.round(e/1e3));return`${Math.floor(t/60)}:${String(t%60).padStart(2,`0`)}`}function ve(e){let t=(0,T.c)(12),{width:n,height:r,children:i}=e,a=(0,w.useRef)(null),[o,s]=(0,w.useState)(0),c,l;t[0]!==r||t[1]!==n?(c=()=>{let e=a.current;if(!e)return;let t=()=>{let{width:t,height:i}=e.getBoundingClientRect();!t||!i||s(Math.min(t/n,i/r))};if(t(),typeof ResizeObserver>`u`)return;let i=new ResizeObserver(t);return i.observe(e),()=>i.disconnect()},l=[n,r],t[0]=r,t[1]=n,t[2]=c,t[3]=l):(c=t[2],l=t[3]),(0,w.useLayoutEffect)(c,l);let u=`scale(${o})`,d=o?void 0:`hidden`,f;t[4]!==r||t[5]!==u||t[6]!==d||t[7]!==n?(f={width:n,height:r,transform:u,visibility:d},t[4]=r,t[5]=u,t[6]=d,t[7]=n,t[8]=f):f=t[8];let p;return t[9]!==i||t[10]!==f?(p=(0,q.jsx)(`div`,{ref:a,className:`cvs-viewport`,children:(0,q.jsx)(`div`,{className:`cvs-scaler`,style:f,children:i})}),t[9]=i,t[10]=f,t[11]=p):p=t[11],p}function ye(e){return e.map(e=>{let t=k(e);return{durationMs:t,spans:[{text:e.narration,startMs:650,endMs:Math.max(651,t-350)}]}})}function Y({frames:e,retainedAudio:t,onShared:n,onBusyChange:r}){let i=(0,w.useMemo)(()=>e.filter(e=>!!((e.spoken??e.narration).trim()||e.tour.some(e=>(e.saySpoken??e.say)?.trim()))),[e]),[a,s]=(0,w.useState)(()=>new Set(i.length?[y(i[i.length-1])]:[])),u=(0,w.useMemo)(()=>new Set(i.map(y)),[i]),[f,p]=(0,w.useState)({size:`1080p`,quality:`high`,captions:!0,spotlights:!0,penMarks:!0,presence:!0,audio:!0}),h=(0,w.useMemo)(()=>e.filter(e=>a.has(y(e))),[e,a]),b=(0,w.useMemo)(()=>ne(h),[h]),x=(0,w.useMemo)(()=>ae(h,ye(h),f),[h,f]),[S,C]=(0,w.useState)(()=>x[0]??null),[T,E]=(0,w.useState)(null),[D,O]=(0,w.useState)(null),[k,A]=(0,w.useState)(null),[j,M]=(0,w.useState)(!1),[N,P]=(0,w.useState)(!1),[F,I]=(0,w.useState)(0),[L,z]=(0,w.useState)(!1),[B,V]=(0,w.useState)(!1),H=(0,w.useRef)(null),U=(0,w.useRef)(null),W=(0,w.useRef)(null),G=(0,w.useRef)(null),K=(0,w.useRef)(null),Y=T!==null&&T.phase!==`ready`,be=Y&&T?.phase!==`audio`,xe=ce(),X=(0,w.useMemo)(()=>c(),[]),Z=N&&!Y&&!X&&x.length>1;(0,w.useEffect)(()=>r?.(Y),[Y,r]),(0,w.useEffect)(()=>{if(!Y){V(!1);return}let e=()=>V(document.visibilityState===`hidden`);return e(),document.addEventListener(`visibilitychange`,e),()=>document.removeEventListener(`visibilitychange`,e)},[Y]),(0,w.useEffect)(()=>P(!0),[]),(0,w.useEffect)(()=>{let e=X?x.findIndex(e=>!e.questionOnly):0;I(Math.max(0,e)),z(!1)},[x,X]),(0,w.useEffect)(()=>{Y||C(x[F]??x[0]??null)},[x,F,Y]),(0,w.useEffect)(()=>{if(!Z||L)return;let e=x[F]??x[0],t=window.setTimeout(()=>I(e=>(e+1)%x.length),Math.max(J,e?.durationMs??J));return()=>window.clearTimeout(t)},[Z,L,x,F]),(0,w.useEffect)(()=>()=>{H.current?.abort(),U.current?.dispose?.(),U.current=null,r?.(!1)},[r]),(0,w.useEffect)(()=>{let e=G.current;if(!e)return;let t=()=>{e.dataset.overflowing=String(e.scrollHeight>e.clientHeight+1)};if(t(),typeof ResizeObserver>`u`)return;let n=new ResizeObserver(t);return n.observe(e),()=>n.disconnect()},[e]);let Se=(0,w.useCallback)(async e=>{C(e),await he()},[]),Ce=(0,w.useCallback)(e=>{let t=K.current,n=t?.getContext(`2d`);!t||!n||n.drawImage(e,0,0,t.width,t.height)},[]),Q=(0,w.useCallback)(()=>{U.current?.dispose?.(),U.current=null,O(null),E(null)},[]),we=(0,w.useCallback)(async()=>{if(!h.length||b>18e4)return;let e=new AbortController;H.current=e,Q(),A(null),E(f.audio?{phase:`audio`,completed:0,total:h.length}:{phase:`render`,completed:1,total:1}),M(!0);try{await he();let n=W.current;if(!n)throw Error(`capture-stage-unavailable`);let r=f.audio?await oe(h,t??(()=>null),e.signal):null,i=r?r.turns:h.map(re),a=ae(h,i,f);if(!a.length)throw Error(`empty-video`);E({phase:`render`,completed:1,total:a.length});let o=await le({el:n,scenes:a,audioBuffer:r?.buffer??null,durationMs:r?.durationMs??i.reduce((e,t)=>e+t.durationMs,0),size:f.size,quality:f.quality,signal:e.signal,applyScene:Se,onProgress:E,onFrame:Ce});U.current=o,O(o),E(null)}catch(e){if(e?.name===`AbortError`){E(null);return}let t=e instanceof R?`${e.message} Check the local voice service, then retry.`:e instanceof Error&&e.message===`conversation-too-long`?`The voiced result is over three minutes. Remove a turn and retry.`:e instanceof Error&&e.message===`open-codec-unavailable`?`This browser cannot encode an approved open-media format (AV1/VP9/VP8 with Opus). Try the current Chrome, Edge, or Firefox.`:`The video could not be created in this browser. Your conversation is unchanged.`;A(t),E(null)}finally{M(!1)}},[Se,Q,b,f,t,h,Ce]),$=e=>{Y||(s(new Set(e.map(y))),Q(),A(null))},Te=se[f.size],Ee=_(g(h[0]?.spec.title||h[0]?.question,new Date),D?.type??``),De=T?T.phase===`audio`?`Preparing required narration…`:T.phase===`render`?`Rendering scene ${T.completed} of ${T.total}…`:T.phase===`encode`?`Finishing the file…`:`Video ready`:``,Oe=b>te;return(0,q.jsxs)(q.Fragment,{children:[(0,q.jsxs)(`div`,{className:`shm-panel cvs-panel`,children:[(0,q.jsx)(`div`,{className:`shm-eyebrow`,children:`▷ CONVERSATION VIDEO`}),(0,q.jsx)(`div`,{className:`cvs-title`,children:`Share this conversation.`}),(0,q.jsx)(`div`,{className:`shm-sub`,children:`Pick the turns worth sending. Mavéa narrates every one unless Audio is off. The video renders locally in this browser and is never uploaded.`}),(0,q.jsx)(v,{kind:`publishing`,from:`live`}),(0,q.jsxs)(`div`,{className:`cvs-presets`,children:[(0,q.jsx)(`button`,{type:`button`,onClick:()=>$(i.slice(-1)),disabled:Y,children:`Current turn`}),(0,q.jsx)(`button`,{type:`button`,onClick:()=>$(e.slice(ie(e)).filter(e=>u.has(y(e)))),disabled:Y,children:`Current topic`}),(0,q.jsx)(`button`,{type:`button`,onClick:()=>$(i),disabled:Y,children:`All turns`})]}),(0,q.jsx)(`div`,{className:`cvs-turns`,role:`group`,"aria-label":`Conversation turns`,ref:G,children:e.map((e,t)=>{let n=y(e),r=u.has(n);return(0,q.jsxs)(`label`,{className:`cvs-turn-card`,"data-selected":a.has(n),children:[(0,q.jsx)(`input`,{type:`checkbox`,checked:a.has(n),disabled:Y||!r,onChange:()=>{s(e=>{let t=new Set(e);return t.has(n)?t.delete(n):t.add(n),t}),Q()}}),(0,q.jsx)(`span`,{className:`cvs-thumb`,"aria-hidden":`true`,children:e.spec.blocks.length}),(0,q.jsxs)(`span`,{className:`cvs-turn-copy`,children:[(0,q.jsx)(`strong`,{children:d(e.question||e.spec.title)}),(0,q.jsxs)(`small`,{children:[new Date(e.at).toLocaleTimeString([],{hour:`numeric`,minute:`2-digit`}),r?``:` · no narration`]})]}),(0,q.jsx)(`span`,{className:`cvs-order`,children:t+1})]},n)})}),(0,q.jsxs)(`div`,{className:`shm-group`,children:[(0,q.jsx)(`div`,{className:`shm-label`,children:`Size`}),(0,q.jsx)(`div`,{className:`shm-chips`,children:de.map(e=>(0,q.jsx)(`button`,{type:`button`,className:`shm-chip`,"data-active":f.size===e.id,"aria-pressed":f.size===e.id,disabled:Y,onClick:()=>{Q(),p(t=>({...t,size:e.id}))},title:e.hint,children:e.label},e.id))})]}),(0,q.jsxs)(`div`,{className:`shm-group`,children:[(0,q.jsx)(`div`,{className:`shm-label`,children:`Quality`}),(0,q.jsx)(`div`,{className:`shm-chips`,children:fe.map(e=>(0,q.jsx)(`button`,{type:`button`,className:`shm-chip`,"data-active":f.quality===e.id,"aria-pressed":f.quality===e.id,disabled:Y,onClick:()=>{Q(),p(t=>({...t,quality:e.id}))},title:m(e.id),children:e.label},e.id))})]}),(0,q.jsxs)(`div`,{className:`shm-group`,children:[(0,q.jsx)(`div`,{className:`shm-label`,children:`Include`}),(0,q.jsx)(`div`,{className:`shm-chips`,children:ge.map(({key:e,label:t})=>(0,q.jsx)(`button`,{type:`button`,className:`shm-chip`,"data-active":f[e],"aria-pressed":f[e],disabled:Y,onClick:()=>{Q(),p(t=>({...t,[e]:!t[e]}))},children:t},e))})]}),(0,q.jsxs)(`div`,{className:`cvs-meter`,"data-over":Oe,children:[(0,q.jsxs)(`span`,{children:[_e(b),` selected`]}),(0,q.jsx)(`span`,{children:`3:00 max`}),(0,q.jsx)(`i`,{style:{width:`${Math.min(100,b/te*100)}%`}})]}),k&&(0,q.jsx)(`div`,{className:`cvs-error`,role:`alert`,children:k}),!xe&&(0,q.jsx)(`div`,{className:`cvs-error`,role:`alert`,children:`Video export needs an approved open video codec (AV1/VP9/VP8) and Opus audio. Try the current Chrome, Edge, or Firefox.`}),T&&(0,q.jsxs)(`div`,{className:`cvs-progress`,role:`status`,children:[De,B&&(0,q.jsx)(`em`,{className:`cvs-paused`,children:`Paused while this window is in the background — come back to it and the render picks up where it left off.`})]}),D&&(0,q.jsxs)(`div`,{className:`cvs-result`,role:`status`,children:[(0,q.jsxs)(`strong`,{children:[`Ready · `,D.width,`×`,D.height]}),(0,q.jsxs)(`span`,{children:[_e(D.durationMs),` · `,(D.blob.size/1048576).toFixed(1),` MB`]})]}),(0,q.jsx)(`div`,{className:`shm-actions`,children:D?(0,q.jsx)(`button`,{type:`button`,className:`shm-btn shm-btn-primary`,onClick:()=>{U.current=null,ee(D.blob,Ee,()=>void D.dispose?.()),O(null),l(`Saved to your downloads`,`good`),n?.()},children:`↓ Download video`}):Y?(0,q.jsx)(`button`,{type:`button`,className:`shm-btn`,onClick:()=>H.current?.abort(),children:`Cancel`}):(0,q.jsx)(`button`,{type:`button`,className:`shm-btn shm-btn-primary`,disabled:!h.length||Oe||!xe,onClick:()=>void we(),children:k?`Retry ${f.size} video`:`Create ${f.size} video`})})]}),(0,q.jsx)(`div`,{className:`shm-stage`,children:(0,q.jsxs)(`div`,{className:`shm-frame`,"data-aspect":`16:9`,children:[be?(0,q.jsx)(`canvas`,{ref:K,className:`cvs-monitor`,width:pe,height:me,role:`img`,"aria-label":`The frames being rendered`}):N?(0,q.jsx)(ve,{width:Te.width,height:Te.height,children:(0,q.jsx)(ue,{scene:S,options:f,glide:!X})}):(0,q.jsx)(`div`,{className:`cvs-stage`,"data-aspect":`16:9`,children:(0,q.jsx)(`div`,{className:`cvs-empty`,role:`status`,children:`Preparing preview…`})}),Z&&(0,q.jsx)(`div`,{className:`shm-controls`,children:(0,q.jsx)(`button`,{type:`button`,className:`shm-sound`,"data-on":L,onClick:()=>z(e=>!e),"aria-pressed":L,title:L?`Play preview`:`Pause preview`,children:L?(0,q.jsx)(o.play,{style:{width:17,height:17}}):(0,q.jsx)(o.pause,{style:{width:17,height:17}})})})]})}),j&&(0,q.jsx)(`div`,{className:`cvs-capture-host`,"data-size":f.size,"aria-hidden":`true`,inert:!0,children:(0,q.jsx)(ue,{scene:S,options:f,frameRef:e=>{W.current=e}})})]})}export{Y as ConversationVideoStudio};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/TopicCanvas-Cwc6-K3q.js","assets/rolldown-runtime-DkW27tQK.js","assets/react-BZJXY1be.js","assets/compiler-runtime-qQQXpJgv.js","assets/jsx-runtime-DeHZSEgm.js","assets/preload-helper-CiWYd9n-.js","assets/index-Db-FgYxX.js","assets/useInView-DsTvv7L_.js","assets/coreIcons-DDTChE1H.js","assets/preloadableLazy-MIX1ApBW.js","assets/cachedImport-DW0gP14h.js","assets/lazyRetry-D50B1UMY.js","assets/theme-D5D55hZi.js","assets/index-CFE0vqqO.css","assets/icons-gLFQTv74.js","assets/loader-Ciz6XbG-.js","assets/FallbackCard-ap_4wOfj.js","assets/blockLabel-FogyzEQY.js","assets/FallbackCard-D_6ps1xA.css","assets/useFocusTrap-CJmpNZv2.js","assets/motion-BY_Egaxm.js","assets/useSpatialCanvas-CfmZOXXP.js","assets/CanvasSkeleton-BmGjJHUQ.js","assets/CanvasSkeleton-DYASkTjW.css","assets/richText-BkxJhl9N.js","assets/toast-BBNs2h3L.js","assets/format-q0LwBjID.js","assets/safeImageUrl-BINWXOTz.js","assets/useValidatedImage-BQi2c66o.js","assets/empty-D51uhW0E.js","assets/deepenStore-BWLLzLCY.js","assets/catalog-BHjl-1uH.js","assets/http-Bqk6nJiH.js","assets/lib-Dkb5WBRc.js","assets/BlockEmpty-B-giiUPy.js","assets/motion-DxHSlPN6.js","assets/lib-DP9Kuxqk.css","assets/TopicCanvas-DWTm611H.css","assets/generateLive-B7nlaqz8.js","assets/history-D2EH2X6D.js","assets/number-zqlPMliA.js","assets/catalog-CRekRbKO.js","assets/facts-BUGuVUIc.js","assets/blockTypes-DUDdP3pB.js","assets/streamParse-BX0bAppQ.js","assets/liveSchema-Z_39HuDI.js","assets/sourceHost-BV3t2XDb.js","assets/spokenText-Dy-GZvZV.js","assets/annotations-CftUUB13.js","assets/contentVault-XKWjF2FB.js","assets/keyVault-Aw5Y2PjT.js","assets/screen-DFWKge3-.js","assets/attachments-BW-vki-E.js","assets/providers-CPhoN8j0.js","assets/info-CiqHR5cs.js","assets/route-CMdTFx0P.js","assets/effort-BftNJCCV.js","assets/speed-BOytg6bC.js","assets/cache-7UEbF3S6.js","assets/validate-MQG0EcTD.js","assets/types-C42I77wh.js","assets/json-J4Y32_i9.js","assets/verbatim-DBTj9sPD.js","assets/citation-BsSvaaer.js","assets/receipts-D7zveV-I.js","assets/officeDoc-GU6Cssjf.js","assets/csv-DAqzYXUs.js","assets/search-ZN7v_P5B.js","assets/store-DqOaVRLn.js","assets/ready-_sg3IJkE.js","assets/shapes-BwoDrn09.js","assets/ledger-BssK9Pv2.js","assets/now-C9-UAzTC.js","assets/select-BuqyXI8k.js","assets/offers-eBNj_lSP.js","assets/scale-Bcgfo6Hp.js","assets/spreadLabels-CQ8hufvK.js","assets/useLiveConfig-CvOQTr0s.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{t as e}from"./react-BZJXY1be.js";import{t}from"./compiler-runtime-qQQXpJgv.js";import{t as n}from"./jsx-runtime-DeHZSEgm.js";import{n as r,t as i}from"./preload-helper-CiWYd9n-.js";import{t as a}from"./preloadableLazy-MIX1ApBW.js";import{E as o,S as s}from"./index-Db-FgYxX.js";import{n as c}from"./icons-gLFQTv74.js";import{t as l}from"./FeatureUseNotice-CCI4mM39.js";import{n as u}from"./history-D2EH2X6D.js";/* empty css */import{n as d}from"./TemplatePicker-DBa4lkpf.js";import{_ as f,a as p,g as m,l as h,o as g,p as _,r as v,s as y}from"./store-B2Rpbqgg.js";import{r as b}from"./courseSeed-CZdNBTTs.js";import{i as x,n as S,r as C}from"./mastery-DB5qpRAy.js";/* empty css */import{CourseRail as w}from"./CourseRail-DD8gtAn4.js";var T=t(),E=e(),D=n();r();var O=a(()=>i(()=>import(`./TopicCanvas-Cwc6-K3q.js`).then(e=>e.n).then(e=>({default:e.TopicCanvas})),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37]))),k=O.Component,A=9e4;function j(){return(0,E.useSyncExternalStore)(f,y,y)}function M(){let e=b();if(e)return{courseId:e.courseId,lessonIdx:e.lessonIdx};try{let e=new URLSearchParams(window.location.hash.split(`?`)[1]??``),t=e.get(`c`)?.trim();if(!t)return null;let n=Number(e.get(`l`));return{courseId:t,lessonIdx:Number.isFinite(n)&&n>=0?Math.round(n):0}}catch{return null}}function N(e,t){try{let n=`#/course?c=${encodeURIComponent(e)}&l=${t}`;window.location.hash!==n&&window.history.replaceState(null,``,n)}catch{}}function P(e,t){let n=Date.now();return{id:u(n),question:t,narration:e.narration,...e.spoken?{spoken:e.spoken}:{},mode:`replace`,tour:(e.tour??[]).map(e=>({index:e.index,...e.say?{say:e.say}:{},...e.saySpoken?{saySpoken:e.saySpoken}:{},...e.mark?{mark:e.mark}:{},...e.marks?{marks:e.marks}:{}})),spec:e.spec,at:n}}function F(){"use no memo";(0,E.useEffect)(()=>s(document),[]),j(),(0,E.useEffect)(()=>S(),[]);let e=(0,E.useRef)(M()),t=e.current?.courseId,n=t?g(t):void 0,[r,a]=(0,E.useState)(()=>{let t=e.current?.lessonIdx??0;return n?Math.min(Math.max(0,t),n.lessons.length-1):Math.max(0,t)}),[u,f]=(0,E.useState)(`loading`),[y,b]=(0,E.useState)(null),[T,F]=(0,E.useState)(``),[L,R]=(0,E.useState)(null),[V,H]=(0,E.useState)(!1),[U,W]=(0,E.useState)(null),G=(0,E.useRef)(null),K=(0,E.useCallback)(e=>{let n=t?g(t):void 0,r=n?.lessons[e];if(!n||!r)return;G.current?.ctrl.abort(),m(n.id,e),N(n.id,e);let a=`Lesson ${e+1}: ${r.title}`,o=p(n.id,r.id);if(O.preload().catch(()=>{}),o){G.current=null,b(o.spec),F(o.narration),R(null),H(!1),W(null),f(`ready`);return}b(null),F(``),R(null),H(!1),f(`loading`),W(null);let s={ctrl:new AbortController,timedOut:!1};G.current=s;let c=setTimeout(()=>{s.timedOut=!0,s.ctrl.abort()},A);(async()=>{try{let[t,o,c]=await Promise.all([i(()=>import(`./generateLive-B7nlaqz8.js`),__vite__mapDeps([38,17,30,31,32,39,40,41,5,1,42,43,44,45,14,4,27,29,46,47,48,49,50,51,52,53,54,55,56,6,2,3,7,8,9,10,11,12,13,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76])),i(()=>import(`./useLiveConfig-CvOQTr0s.js`).then(e=>e.f),__vite__mapDeps([77,1,2,3,54,50,53,32,43,52,55])),i(()=>import(`./streamParse-BX0bAppQ.js`).then(e=>e.s),__vite__mapDeps([44,1]))]),l=x(n,e,h(n.id),C(n.topic)),u=o.toModelConfig(o.getLiveConfigV2()),d=``,p=``,m=()=>G.current===s&&!s.ctrl.signal.aborted,g=await t.generateLive(`Teach this lesson: "${r.title}" — ${r.goal}`,[],u,e=>{if(!m())return;d+=e;let t=c.extractNarrationProgress(d);if(!t)return;let n=c.nextSpeakableChunk(t.text,p.length,t.done);n.chunk&&(p=t.text.slice(0,n.consumed),F(p),f(`streaming`))},{lesson:l,signal:s.ctrl.signal,onPartial:e=>{m()&&(b(e.spec),e.narration&&(p=e.narration,F(e.narration)),f(`streaming`))},onPending:e=>{m()&&(R(e),e&&f(`streaming`))},onThinking:e=>{m()&&(H(e),e&&f(`streaming`))}});if(s.ctrl.signal.aborted&&!s.timedOut)return;if(s.timedOut){W(`Building this lesson took too long and was stopped — the model may be slow or rate-limited right now. Try again in a moment.`),f(`error`);return}if(g.error){W(g.error.message),f(`error`);return}v(n.id,r.id,P(g,a)),b(g.spec),F(g.narration),R(null),H(!1),W(null),f(`ready`)}catch{if(s.ctrl.signal.aborted&&!s.timedOut)return;W(s.timedOut?`Building this lesson took too long and was stopped — try again in a moment.`:`Couldn't build this lesson — check your connection and model settings, then try again.`),f(`error`)}finally{clearTimeout(c),G.current===s&&(G.current=null)}})()},[t]);(0,E.useEffect)(()=>(K(r),()=>G.current?.ctrl.abort()),[r,K]);let q=(0,E.useCallback)(e=>{let n=t?g(t):void 0,i=n?.lessons[r];!n||!i||_(n.id,i.id,e)},[t,r]),J=(0,E.useCallback)(()=>{window.location.hash=`#/courses`},[]);if(!n)return(0,D.jsx)(`div`,{className:`mavea-app clr-app`,children:(0,D.jsx)(`main`,{className:`clr-stage clr-stage-center`,children:(0,D.jsxs)(`div`,{className:`clr-empty`,children:[(0,D.jsx)(`div`,{className:`clr-empty-icon`,"aria-hidden":`true`,children:(0,D.jsx)(c.layers,{})}),(0,D.jsx)(`div`,{className:`clr-empty-head`,children:`This lesson isn’t here`}),(0,D.jsx)(`div`,{className:`clr-empty-sub`,children:`The course may have been removed, or the link is out of date. Head back and pick one to open.`}),(0,D.jsxs)(`button`,{type:`button`,className:`clr-btn clr-btn-primary`,onClick:J,children:[(0,D.jsx)(c.chevL,{}),` Back to courses`]})]})})});let Y=u===`loading`||u===`streaming`,X=h(n.id);return(0,D.jsx)(`div`,{className:`mavea-app clr-app`,children:(0,D.jsx)(`main`,{className:`clr-stage`,children:(0,D.jsxs)(`div`,{className:`clr-col`,children:[(0,D.jsx)(`div`,{className:`clr-top`,children:(0,D.jsx)(d,{triggerClassName:`ctrl`})}),(0,D.jsx)(l,{kind:`learning`}),(0,D.jsx)(w,{course:n,lessonIdx:r,progress:X,onPrev:()=>a(e=>Math.max(0,e-1)),onNext:()=>a(e=>Math.min(n.lessons.length-1,e+1)),onCheckpoint:q,busy:Y},`${n.id}:${r}`),u===`loading`&&(0,D.jsx)(I,{lessonNumber:r+1,course:n}),u===`streaming`&&(0,D.jsx)(z,{narration:T,pendingShape:L,thinking:V}),u===`error`&&(0,D.jsx)(B,{message:U??`Something went wrong building this lesson.`,onRetry:()=>K(r)}),(u===`streaming`||u===`ready`)&&y&&(0,D.jsx)(`div`,{className:`clr-canvas`,children:(0,D.jsx)(o,{label:`Lesson canvas`,children:(0,D.jsx)(k,{data:y,spot:null,built:{},onProve:()=>{}})})})]})})})}function I(e){let t=(0,T.c)(8),{lessonNumber:n,course:r}=e,i=r.lessons[n-1],a;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(a=(0,D.jsxs)(`div`,{className:`clr-lens`,"aria-hidden":`true`,children:[(0,D.jsx)(`span`,{}),(0,D.jsx)(`span`,{}),(0,D.jsx)(`span`,{})]}),t[0]=a):a=t[0];let o;t[1]===n?o=t[2]:(o=(0,D.jsxs)(`div`,{className:`clr-state-head`,children:[`Building lesson `,n,`…`]}),t[1]=n,t[2]=o);let s;t[3]===i?s=t[4]:(s=i&&(0,D.jsxs)(D.Fragment,{children:[(0,D.jsx)(`div`,{className:`clr-state-sub`,children:i.goal}),(0,D.jsx)(`div`,{className:`clr-lesson-outline`,"aria-label":`Lesson outline`,children:i.objectives.slice(0,3).map(L)})]}),t[3]=i,t[4]=s);let c;return t[5]!==o||t[6]!==s?(c=(0,D.jsxs)(`div`,{className:`clr-state`,role:`status`,"aria-live":`polite`,children:[a,o,s]}),t[5]=o,t[6]=s,t[7]=c):c=t[7],c}function L(e,t){return(0,D.jsxs)(`div`,{className:`clr-lesson-outline-row`,children:[(0,D.jsx)(`span`,{"aria-hidden":`true`,children:t+1}),(0,D.jsx)(`strong`,{children:e})]},e)}function R(e){return e?`Building ${e.replace(/[_-]+/g,` `)}`:`Building the next section`}function z(e){let t=(0,T.c)(11),{narration:n,pendingShape:r,thinking:i}=e,a;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(a=(0,D.jsx)(`span`,{className:`clr-stream-pulse`,"aria-hidden":`true`}),t[0]=a):a=t[0];let o;t[1]!==r||t[2]!==i?(o=i?`Thinking through the lesson`:R(r),t[1]=r,t[2]=i,t[3]=o):o=t[3];let s;t[4]===o?s=t[5]:(s=(0,D.jsxs)(`div`,{className:`clr-stream-label`,children:[o,`…`]}),t[4]=o,t[5]=s);let c;t[6]===n?c=t[7]:(c=n&&(0,D.jsx)(`p`,{children:n}),t[6]=n,t[7]=c);let l;return t[8]!==s||t[9]!==c?(l=(0,D.jsxs)(`div`,{className:`clr-stream`,role:`status`,"aria-live":`polite`,"aria-atomic":`false`,children:[a,(0,D.jsxs)(`div`,{className:`clr-stream-copy`,children:[s,c]})]}),t[8]=s,t[9]=c,t[10]=l):l=t[10],l}function B(e){let t=(0,T.c)(10),{message:n,onRetry:r}=e,i,a;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(i=(0,D.jsx)(`div`,{className:`clr-state-icon clr-state-icon-warn`,"aria-hidden":`true`,children:(0,D.jsx)(c.alert,{})}),a=(0,D.jsx)(`div`,{className:`clr-state-head`,children:`Couldn’t build this lesson`}),t[0]=i,t[1]=a):(i=t[0],a=t[1]);let o;t[2]===n?o=t[3]:(o=(0,D.jsx)(`div`,{className:`clr-state-sub clr-state-error`,children:n}),t[2]=n,t[3]=o);let s;t[4]===Symbol.for(`react.memo_cache_sentinel`)?(s=(0,D.jsx)(c.refresh,{}),t[4]=s):s=t[4];let l;t[5]===r?l=t[6]:(l=(0,D.jsxs)(`button`,{type:`button`,className:`clr-btn clr-btn-primary`,onClick:r,children:[s,` Try again`]}),t[5]=r,t[6]=l);let u;return t[7]!==o||t[8]!==l?(u=(0,D.jsxs)(`div`,{className:`clr-state`,children:[i,a,o,l]}),t[7]=o,t[8]=l,t[9]=u):u=t[9],u}export{F as CourseLessonReader};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.clr-app{background:var(--surface-deep,var(--surface-default));height:100%;color:var(--text-primary);font-family:var(--font);flex-direction:column;display:flex;overflow:hidden}.clr-stage{flex:1;min-height:0;padding:clamp(18px,3vw,34px) clamp(16px,3vw,30px) 72px;overflow-y:auto}.clr-stage-center{justify-content:center;align-items:center;display:flex}.clr-col{width:100%;max-width:var(--canvas-col-max,1080px);margin-inline:auto}.clr-top{justify-content:flex-end;margin-bottom:8px;display:flex}.clr-canvas{margin-top:2px}.clr-state{text-align:center;flex-direction:column;align-items:center;gap:12px;padding:clamp(40px,9vh,96px) 24px;display:flex}.clr-state-head{font:700 17px/1.3 var(--font);letter-spacing:-.01em;color:var(--text-primary)}.clr-state-sub{max-width:460px;font:500 13.5px/1.55 var(--font);color:var(--text-muted)}.clr-state-error{color:var(--danger)}.clr-lesson-outline{text-align:left;gap:8px;width:min(100%,560px);margin-top:6px;display:grid}.clr-lesson-outline-row{border:1px solid var(--line-soft);border-radius:var(--r-md);background:var(--surface-glass);grid-template-columns:24px minmax(0,1fr);align-items:center;gap:10px;padding:10px 12px;display:grid}.clr-lesson-outline-row>span{background:color-mix(in oklab, var(--presence) 13%, transparent);width:24px;height:24px;color:var(--presence);font:700 11px/1 var(--font);border-radius:50%;place-items:center;display:grid}.clr-lesson-outline-row>strong{font:600 13px/1.35 var(--font);color:var(--text-secondary)}.clr-state-icon{background:var(--surface-glass);width:44px;height:44px;color:var(--text-muted);border-radius:50%;justify-content:center;align-items:center;display:flex}.clr-state-icon svg{width:20px;height:20px}.clr-state-icon-warn{color:var(--warning);background:color-mix(in oklab, var(--warning) 14%, transparent)}.clr-lens{gap:7px;display:flex}.clr-lens span{background:var(--presence);opacity:.35;border-radius:50%;width:9px;height:9px;animation:1.1s ease-in-out infinite clr-pulse}.clr-lens span:nth-child(2){animation-delay:.16s}.clr-lens span:nth-child(3){animation-delay:.32s}@keyframes clr-pulse{0%,to{opacity:.3;transform:translateY(0)}40%{opacity:1;transform:translateY(-3px)}}.clr-stream{border:1px solid color-mix(in oklab, var(--presence) 24%, var(--line-soft));border-radius:var(--r-md);background:color-mix(in oklab, var(--presence) 5%, var(--surface-glass));align-items:flex-start;gap:11px;margin:0 0 14px;padding:12px 14px;display:flex}.clr-stream-pulse{background:var(--presence);width:9px;height:9px;box-shadow:0 0 0 0 color-mix(in oklab, var(--presence) 35%, transparent);border-radius:50%;flex:none;margin-top:3px;animation:1.4s ease-out infinite clr-stream-pulse}.clr-stream-copy{min-width:0}.clr-stream-label{color:var(--presence);font:700 11px/1.2 var(--font);letter-spacing:.055em;text-transform:uppercase}.clr-stream-copy p{max-width:760px;color:var(--text-secondary);font:500 14px/1.5 var(--font);margin:5px 0 0}@keyframes clr-stream-pulse{70%,to{box-shadow:0 0 0 8px #0000}}.clr-empty{text-align:center;flex-direction:column;align-items:center;gap:10px;max-width:400px;padding:32px;display:flex}.clr-empty-icon{background:var(--surface-glass);width:44px;height:44px;color:var(--text-muted);border-radius:50%;justify-content:center;align-items:center;margin-bottom:4px;display:flex}.clr-empty-icon svg{width:20px;height:20px}.clr-empty-head{font:700 17px/1.2 var(--font);color:var(--text-primary)}.clr-empty-sub{font:500 13.5px/1.55 var(--font);color:var(--text-muted)}.clr-btn{border:1px solid var(--line-mid);border-radius:var(--r-full);background:var(--surface-elevated);color:var(--text-primary);font:600 13px/1 var(--font);cursor:pointer;transition:background var(--m-quick), border-color var(--m-quick);justify-content:center;align-items:center;gap:6px;margin-top:6px;padding:9px 16px;display:inline-flex}.clr-btn svg{width:14px;height:14px}.clr-btn:hover{background:var(--surface-glass);border-color:var(--line-strong)}.clr-btn-primary{background:var(--presence);border-color:var(--presence);color:#fff}.clr-btn-primary:hover{background:color-mix(in oklab, var(--presence) 88%, #000);border-color:color-mix(in oklab, var(--presence) 88%, #000)}@media (prefers-reduced-motion:reduce){.clr-lens span{opacity:.7;animation:none}.clr-stream-pulse{animation:none}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
.course-rail{border:1px solid var(--line-soft);border-radius:var(--r-lg);background:var(--surface-glass);-webkit-backdrop-filter:var(--glass-blur-soft);backdrop-filter:var(--glass-blur-soft);flex-direction:column;gap:10px;margin:0 0 18px;padding:14px 18px 16px;display:flex}.cx-top{align-items:center;gap:10px;display:flex}.cx-back{color:var(--text-muted);font:600
|
|
1
|
+
.course-rail{border:1px solid var(--line-soft);border-radius:var(--r-lg);background:var(--surface-glass);-webkit-backdrop-filter:var(--glass-blur-soft);backdrop-filter:var(--glass-blur-soft);flex-direction:column;gap:10px;margin:0 0 18px;padding:14px 18px 16px;display:flex}.cx-top{align-items:center;gap:10px;display:flex}.cx-back{color:var(--text-muted);font:600 13px/1 var(--font);cursor:pointer;background:0 0;border:none;align-items:center;gap:3px;padding:0;display:inline-flex}.cx-back svg{width:15px;height:15px}.cx-back:hover{color:var(--text-primary)}.cx-position{font:700 12px/1 var(--font);letter-spacing:.06em;text-transform:uppercase;color:var(--presence)}.cx-done{font:700 11px/1 var(--font);color:var(--insight);align-items:center;gap:4px;margin-left:auto;display:inline-flex}.cx-done svg{width:12px;height:12px}.cx-title-row{flex-direction:column;gap:2px;display:flex}.cx-course-title{font:600 11.5px/1 var(--font);color:var(--text-muted)}.cx-lesson-title{font:700 19px/1.25 var(--font);letter-spacing:-.01em;color:var(--text-primary);margin:0}.cx-objectives{font:450 13px/1.45 var(--font);color:var(--text-secondary);flex-direction:column;gap:4px;margin:2px 0 0;padding-left:18px;display:flex}.cx-objectives li{list-style:outside}.cx-checkpoint-status{font:600 12.5px/1 var(--font);align-items:center;gap:10px;display:flex}.cx-untaken{color:var(--text-muted)}.cx-pass{color:var(--insight)}.cx-fail{color:var(--warning)}.cx-link{color:var(--presence);font:600 12.5px/1 var(--font);cursor:pointer;background:0 0;border:none;padding:0}.cx-link:hover{text-decoration:underline}.cx-check{border:1px solid var(--line-soft);border-radius:var(--r-md);background:var(--surface-elevated-2,var(--surface-glass));flex-direction:column;gap:8px;padding:12px 14px;display:flex}.cx-check-progress{font:700 10px/1 var(--font);letter-spacing:.08em;text-transform:uppercase;color:var(--text-faint)}.cx-check-q{font:600 14px/1.4 var(--font);color:var(--text-primary)}.cx-check-a{font:450 13.5px/1.5 var(--font);color:var(--text-secondary);border-top:1px dashed var(--line-soft);padding-top:2px}.cx-check-actions{gap:8px;margin-top:2px;display:flex}.cx-check-pending{font:600 12.5px/1 var(--font);color:var(--text-muted);align-items:center;gap:9px;display:flex}.cx-check-spinner{border:2px solid color-mix(in oklab, var(--presence) 30%, transparent);border-top-color:var(--presence);border-radius:50%;flex:none;width:13px;height:13px;animation:.7s linear infinite cx-check-spin}@keyframes cx-check-spin{to{transform:rotate(360deg)}}.cx-check-failed{font:600 12.5px/1.4 var(--font);flex-wrap:wrap;align-items:baseline;gap:4px 10px;display:flex}.cx-check-failed-msg{color:var(--warning)}@media (prefers-reduced-motion:reduce){.cx-check-spinner{animation-duration:1.6s}}.cx-btn{border:1px solid var(--line-mid);border-radius:var(--r-full);background:var(--surface-elevated);color:var(--text-primary);font:600 12.5px/1 var(--font);cursor:pointer;transition:background var(--m-quick), border-color var(--m-quick), opacity var(--m-quick);justify-content:center;align-items:center;gap:5px;padding:8px 14px;display:inline-flex}.cx-btn svg{width:13px;height:13px}.cx-btn:hover{background:var(--surface-glass);border-color:var(--line-strong)}.cx-btn:disabled{opacity:.45;cursor:default}.cx-btn-primary{background:var(--presence);border-color:var(--presence);color:#fff}.cx-btn-primary:hover{background:color-mix(in oklab, var(--presence) 88%, #000);border-color:color-mix(in oklab, var(--presence) 88%, #000)}.cx-btn-got{border-color:color-mix(in oklab, var(--insight) 55%, transparent);color:var(--insight)}.cx-btn-miss{border-color:color-mix(in oklab, var(--danger) 55%, transparent);color:var(--danger)}.cx-btn-reveal{align-self:flex-start}.cx-deck-link{font:600 12px/1 var(--font);color:var(--text-muted);align-self:flex-start;align-items:center;gap:6px;text-decoration:none;display:inline-flex}.cx-deck-link svg{width:13px;height:13px}.cx-deck-link:hover{color:var(--presence)}.cx-secondary-links{flex-wrap:wrap;align-items:center;gap:14px;display:flex}.cx-zoom-link{font:600 12px/1 var(--font);color:var(--text-muted);cursor:pointer;background:0 0;border:none;align-self:flex-start;align-items:center;gap:6px;padding:0;display:inline-flex}.cx-zoom-link svg{width:13px;height:13px}.cx-zoom-link:hover{color:var(--presence)}.cx-nav{gap:8px;margin-top:2px;display:flex}.cx-nav .cx-btn{flex:1}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./react-BZJXY1be.js";import{t}from"./compiler-runtime-qQQXpJgv.js";import{t as n}from"./jsx-runtime-DeHZSEgm.js";import{n as r}from"./icons-gLFQTv74.js";import{
|
|
1
|
+
import{t as e}from"./react-BZJXY1be.js";import{t}from"./compiler-runtime-qQQXpJgv.js";import{t as n}from"./jsx-runtime-DeHZSEgm.js";import{n as r}from"./icons-gLFQTv74.js";import{n as i,u as a}from"./useLiveConfig-CvOQTr0s.js";import{i as o}from"./store-D2IJF4SA.js";import{d as s,i as c,n as l}from"./store-B2Rpbqgg.js";import{t as u}from"./generateCourse-DPL0bO3L.js";import{n as d,t as f}from"./useSrsCards-C27o39fF.js";import{t as p}from"./deckLine-NBd3MyGT.js";var m=e(),h=t(),g=n();function _(){let e=(0,h.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,g.jsxs)(`svg`,{viewBox:`0 0 16 16`,fill:`none`,stroke:`currentColor`,strokeWidth:1.7,"aria-hidden":!0,children:[(0,g.jsx)(`circle`,{cx:`6.5`,cy:`6.5`,r:`4`}),(0,g.jsx)(`line`,{x1:`10`,y1:`10`,x2:`14`,y2:`14`})]}),e[0]=t):t=e[0],t}function v(e){let t=(0,h.c)(20),{questions:n,onDone:i}=e,[a,o]=(0,m.useState)(0),[s,c]=(0,m.useState)(!1),l;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(l=[],t[0]=l):l=t[0];let[u,d]=(0,m.useState)(l),[f,p]=(0,m.useState)(0),_;t[1]!==f||t[2]!==a||t[3]!==u||t[4]!==i||t[5]!==n?(_=e=>{let t=f+ +!!e,r=e?u:[...u,n[a].question];if(a+1>=n.length){i({total:n.length,correct:t,missedFronts:r,at:Date.now()});return}p(t),d(r),o(a+1),c(!1)},t[1]=f,t[2]=a,t[3]=u,t[4]=i,t[5]=n,t[6]=_):_=t[6];let v=_,y=n[a],b=a+1,x;t[7]!==n.length||t[8]!==b?(x=(0,g.jsxs)(`div`,{className:`cx-check-progress`,children:[`Question `,b,` of `,n.length]}),t[7]=n.length,t[8]=b,t[9]=x):x=t[9];let S;t[10]===y.question?S=t[11]:(S=(0,g.jsx)(`div`,{className:`cx-check-q`,children:y.question}),t[10]=y.question,t[11]=S);let C;t[12]!==v||t[13]!==y.answer||t[14]!==s?(C=s?(0,g.jsxs)(g.Fragment,{children:[(0,g.jsx)(`div`,{className:`cx-check-a`,children:y.answer}),(0,g.jsxs)(`div`,{className:`cx-check-actions`,children:[(0,g.jsxs)(`button`,{type:`button`,className:`cx-btn cx-btn-miss`,onClick:()=>v(!1),children:[(0,g.jsx)(r.x,{}),` Missed it`]}),(0,g.jsxs)(`button`,{type:`button`,className:`cx-btn cx-btn-got`,onClick:()=>v(!0),children:[(0,g.jsx)(r.check,{}),` Got it`]})]})]}):(0,g.jsx)(`button`,{type:`button`,className:`cx-btn cx-btn-reveal`,onClick:()=>c(!0),children:`Show answer`}),t[12]=v,t[13]=y.answer,t[14]=s,t[15]=C):C=t[15];let w;return t[16]!==x||t[17]!==S||t[18]!==C?(w=(0,g.jsxs)(`div`,{className:`cx-check`,children:[x,S,C]}),t[16]=x,t[17]=S,t[18]=C,t[19]=w):w=t[19],w}function y({courseTitle:e}){"use no memo";f();let t=o().decks.find(t=>t.name===e);return t?(0,g.jsxs)(`a`,{className:`cx-deck-link`,href:d.deck(e),children:[(0,g.jsx)(r.layers,{}),p(t)]}):null}function b({course:e,lessonIdx:t,progress:n,onPrev:o,onNext:d,onCheckpoint:f,busy:p}){let h=e.lessons[t],[b,x]=(0,m.useState)(`idle`),[S,C]=(0,m.useState)(null),[w,T]=(0,m.useState)(null),E=(0,m.useRef)(null);(0,m.useEffect)(()=>()=>E.current?.abort(),[]);let D=(0,m.useCallback)(async()=>{if(!h)return;let n=c(e.id,h.id)??h.checkpoint;if(n?.length){C(n),T(null),x(`checking`);return}T(null),x(`loading`);let r=new AbortController;E.current=r;try{let n=a(i()),o=await u(e,t,n,r.signal);if(r.signal.aborted)return;l(e.id,h.id,o),C(o),x(`checking`)}catch(e){if(r.signal.aborted)return;T(e instanceof Error?e.message:`Couldn't write the checkpoint — try again in a moment.`),x(`error`)}finally{E.current===r&&(E.current=null)}},[e,h,t]);if(!h)return null;let O=e.lessons.length,k=n.lessons[h.id],A=k?.status===`done`,j=k?.checkpoint;return(0,g.jsxs)(`aside`,{className:`course-rail`,"aria-label":`Course: ${e.title}`,children:[(0,g.jsxs)(`div`,{className:`cx-top`,children:[(0,g.jsxs)(`button`,{type:`button`,className:`cx-back`,onClick:()=>{window.location.hash=`#/courses`},children:[(0,g.jsx)(r.chevL,{}),` Courses`]}),(0,g.jsxs)(`span`,{className:`cx-position`,children:[`Lesson `,t+1,` of `,O]}),A&&(0,g.jsxs)(`span`,{className:`cx-done`,children:[(0,g.jsx)(r.check,{}),` Done`]})]}),(0,g.jsxs)(`div`,{className:`cx-title-row`,children:[(0,g.jsx)(`span`,{className:`cx-course-title`,children:e.title}),(0,g.jsx)(`h2`,{className:`cx-lesson-title`,children:h.title})]}),h.objectives.length>0&&(0,g.jsx)(`ul`,{className:`cx-objectives`,children:h.objectives.map(e=>(0,g.jsx)(`li`,{children:e},e))}),b===`checking`&&S?.length?(0,g.jsx)(v,{questions:S,onDone:e=>{x(`idle`),C(null),f(e)}}):b===`loading`?(0,g.jsxs)(`div`,{className:`cx-check-pending`,role:`status`,"aria-live":`polite`,children:[(0,g.jsx)(`span`,{className:`cx-check-spinner`,"aria-hidden":`true`}),(0,g.jsx)(`span`,{children:`Writing your check…`})]}):b===`error`?(0,g.jsxs)(`div`,{className:`cx-check-failed`,role:`alert`,children:[(0,g.jsx)(`span`,{className:`cx-check-failed-msg`,children:w}),(0,g.jsx)(`button`,{type:`button`,className:`cx-link`,onClick:()=>void D(),children:`Retry`})]}):(0,g.jsxs)(`div`,{className:`cx-checkpoint-status`,children:[(0,g.jsx)(`span`,{className:j?s(j)?`cx-pass`:`cx-fail`:`cx-untaken`,children:j?`Checkpoint: ${j.correct}/${j.total}`:`Checkpoint not yet taken`}),(0,g.jsx)(`button`,{type:`button`,className:`cx-link`,onClick:()=>void D(),children:j?`Retake`:`Take checkpoint`})]}),(0,g.jsxs)(`div`,{className:`cx-secondary-links`,children:[(0,g.jsx)(y,{courseTitle:e.title}),(0,g.jsxs)(`button`,{type:`button`,className:`cx-zoom-link`,onClick:()=>{window.location.hash=`#/deepzoom?q=${encodeURIComponent(h.title)}`},children:[(0,g.jsx)(_,{}),` Zoom into this`]})]}),(0,g.jsxs)(`div`,{className:`cx-nav`,children:[(0,g.jsxs)(`button`,{type:`button`,className:`cx-btn`,onClick:o,disabled:!!p||t<=0,children:[(0,g.jsx)(r.chevL,{}),` Prev`]}),(0,g.jsxs)(`button`,{type:`button`,className:`cx-btn cx-btn-primary`,onClick:d,disabled:!!p||t>=O-1,children:[`Next `,(0,g.jsx)(r.chevR,{})]})]})]})}export{b as CourseRail};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/TemplatePicker-DBa4lkpf.js","assets/rolldown-runtime-DkW27tQK.js","assets/react-BZJXY1be.js","assets/compiler-runtime-qQQXpJgv.js","assets/jsx-runtime-DeHZSEgm.js","assets/theme-D5D55hZi.js","assets/index-Db-FgYxX.js","assets/useInView-DsTvv7L_.js","assets/coreIcons-DDTChE1H.js","assets/preload-helper-CiWYd9n-.js","assets/preloadableLazy-MIX1ApBW.js","assets/cachedImport-DW0gP14h.js","assets/lazyRetry-D50B1UMY.js","assets/index-CFE0vqqO.css","assets/useLiveConfig-CvOQTr0s.js","assets/info-CiqHR5cs.js","assets/keyVault-Aw5Y2PjT.js","assets/providers-CPhoN8j0.js","assets/http-Bqk6nJiH.js","assets/blockTypes-DUDdP3pB.js","assets/attachments-BW-vki-E.js","assets/route-CMdTFx0P.js","assets/generateCourse-DPL0bO3L.js","assets/json-J4Y32_i9.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{t as e}from"./react-BZJXY1be.js";import{t}from"./compiler-runtime-qQQXpJgv.js";import{t as n}from"./jsx-runtime-DeHZSEgm.js";import{n as r,t as i}from"./preload-helper-CiWYd9n-.js";import{n as a,r as o,t as s}from"./preloadableLazy-MIX1ApBW.js";import{O as c,S as l}from"./index-Db-FgYxX.js";import{n as u}from"./icons-gLFQTv74.js";import{t as d}from"./useFocusTrap-CJmpNZv2.js";import{t as f}from"./homeTarget-CDc-r2mj.js";/* empty css */import{t as p}from"./DropSelect-D3Q9Su_x.js";import{i as m}from"./store-D2IJF4SA.js";import{_ as h,c as g,h as _,l as v,m as y,s as b}from"./store-B2Rpbqgg.js";import{i as x,t as S}from"./courseSeed-CZdNBTTs.js";/* empty css */import{n as ee,t as te}from"./useSrsCards-C27o39fF.js";import{t as ne}from"./deckLine-NBd3MyGT.js";var re=t(),C=e(),w=n();r();var T=s(()=>i(()=>import(`./TemplatePicker-DBa4lkpf.js`).then(e=>e.r).then(e=>({default:e.TemplatePicker})),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21]))).Component,E;function D(){return E??=Promise.all([i(()=>import(`./generateCourse-DPL0bO3L.js`).then(e=>e.n),__vite__mapDeps([22,1,17,18,19,15,20,21,23])),i(()=>import(`./useLiveConfig-CvOQTr0s.js`).then(e=>e.f),__vite__mapDeps([14,1,2,3,15,16,17,18,19,20,21]))]),E}function O(){D().catch(()=>{})}function k(){return(0,C.useSyncExternalStore)(h,b,b)}function ie(e,t){S({courseId:e,lessonIdx:t}),window.location.hash=`#/course`}function ae(e,t){let n=e.lessons.filter(e=>t.lessons[e.id]?.status===`done`).length;return n>=e.lessons.length?`complete`:n>0||t.current>0?`in-progress`:`new`}var oe={beginner:`Beginner`,intermediate:`Intermediate`,expert:`Expert`},A=[`Personal finance basics`,`How the internet works`,`Spanish for travel`];function j(e){let t=(0,re.c)(67),{course:n,progress:r,onRemove:i}=e,s=(0,C.useRef)(null),[c,l]=(0,C.useState)(!1),d=n.lessons.length,f;if(t[0]!==n.lessons||t[1]!==r.lessons){let e;t[3]===r.lessons?e=t[4]:(e=e=>r.lessons[e.id]?.status===`done`,t[3]=r.lessons,t[4]=e),f=n.lessons.filter(e),t[0]=n.lessons,t[1]=r.lessons,t[2]=f}else f=t[2];let p=f.length,h;t[5]!==p||t[6]!==d?(h=d?Math.round(p/d*100):0,t[5]=p,t[6]=d,t[7]=h):h=t[7];let g=h,_=ae(n,r),v=Math.max(0,Math.min(r.current,d-1)),y=n.lessons[v],b=`Lesson ${v+1} of ${d}`,x=_===`complete`?`Review`:_===`in-progress`?`Continue`:`Start course`;te();let S;t[8]===n.title?S=t[9]:(S=e=>e.name===n.title,t[8]=n.title,t[9]=S);let T=m().decks.find(S),E,D;t[10]===Symbol.for(`react.memo_cache_sentinel`)?(E=()=>{let e=s.current;if(!e)return;let t=ue,n=()=>{t=o(le)};if(!(`IntersectionObserver`in window))return n(),t;let r=new IntersectionObserver(e=>{e.some(ce)&&(r.disconnect(),n())});return r.observe(e),()=>{r.disconnect(),t()}},D=[],t[10]=E,t[11]=D):(E=t[10],D=t[11]),(0,C.useEffect)(E,D);let O=`cr-card cr-card-${_}`,k;t[12]===n.level?k=t[13]:(k=n.level&&(0,w.jsx)(`span`,{className:`cr-badge`,children:oe[n.level]}),t[12]=n.level,t[13]=k);let A=`cr-status cr-status-`+_,j=_===`complete`?`Complete`:_===`in-progress`?`In progress`:`New`,M;t[14]!==A||t[15]!==j?(M=(0,w.jsx)(`span`,{className:A,children:j}),t[14]=A,t[15]=j,t[16]=M):M=t[16];let N;t[17]!==M||t[18]!==k?(N=(0,w.jsxs)(`div`,{className:`cr-card-top`,children:[k,M]}),t[17]=M,t[18]=k,t[19]=N):N=t[19];let P;t[20]===n.title?P=t[21]:(P=(0,w.jsx)(`h3`,{className:`cr-card-title`,children:n.title}),t[20]=n.title,t[21]=P);let F=n.subtitle||n.topic,I;t[22]===F?I=t[23]:(I=(0,w.jsx)(`p`,{className:`cr-card-sub`,children:F}),t[22]=F,t[23]=I);let L=`${n.title} progress`,R=`${p} of ${d} lessons complete`,z=`${g}%`,B;t[24]===z?B=t[25]:(B=(0,w.jsx)(`div`,{className:`cr-progress-fill`,style:{width:z}}),t[24]=z,t[25]=B);let V;t[26]!==g||t[27]!==L||t[28]!==R||t[29]!==B?(V=(0,w.jsx)(`div`,{className:`cr-progress`,role:`progressbar`,"aria-label":L,"aria-valuemin":0,"aria-valuemax":100,"aria-valuenow":g,"aria-valuetext":R,children:B}),t[26]=g,t[27]=L,t[28]=R,t[29]=B,t[30]=V):V=t[30];let H;t[31]===b?H=t[32]:(H=(0,w.jsx)(`span`,{children:b}),t[31]=b,t[32]=H);let U;t[33]===Symbol.for(`react.memo_cache_sentinel`)?(U=(0,w.jsx)(`span`,{className:`cr-card-meta-dot`,"aria-hidden":`true`}),t[33]=U):U=t[33];let W;t[34]!==p||t[35]!==d?(W=(0,w.jsxs)(`span`,{children:[p,`/`,d,` done`]}),t[34]=p,t[35]=d,t[36]=W):W=t[36];let G;t[37]!==H||t[38]!==W?(G=(0,w.jsxs)(`div`,{className:`cr-card-meta`,children:[H,U,W]}),t[37]=H,t[38]=W,t[39]=G):G=t[39];let K;t[40]!==y||t[41]!==_?(K=y&&(0,w.jsxs)(`div`,{className:`cr-current-lesson`,children:[(0,w.jsx)(`span`,{children:_===`complete`?`Review from`:`Up next`}),(0,w.jsx)(`strong`,{children:y.title})]}),t[40]=y,t[41]=_,t[42]=K):K=t[42];let de=T&&(0,w.jsxs)(`a`,{className:`cr-deck-link`,href:ee.deck(n.title),children:[(0,w.jsx)(u.layers,{}),ne(T)]}),q;t[43]!==n.id||t[44]!==r.current?(q=()=>ie(n.id,r.current),t[43]=n.id,t[44]=r.current,t[45]=q):q=t[45];let J,Y;t[46]===Symbol.for(`react.memo_cache_sentinel`)?(J=a(se),Y=(0,w.jsx)(u.play,{}),t[46]=J,t[47]=Y):(J=t[46],Y=t[47]);let X;t[48]!==x||t[49]!==q?(X=(0,w.jsxs)(`button`,{type:`button`,className:`cr-btn cr-btn-primary`,onClick:q,...J,children:[Y,` `,x]}),t[48]=x,t[49]=q,t[50]=X):X=t[50];let Z;t[51]!==c||t[52]!==i?(Z=c?(0,w.jsxs)(`div`,{className:`cr-delete-confirm`,role:`group`,"aria-label":`Confirm course deletion`,children:[(0,w.jsx)(`span`,{children:`Delete?`}),(0,w.jsx)(`button`,{type:`button`,className:`cr-delete-cancel`,onClick:()=>l(!1),children:`Cancel`}),(0,w.jsx)(`button`,{type:`button`,className:`cr-icon-btn cr-icon-danger`,"aria-label":`Confirm delete course`,onClick:i,children:(0,w.jsx)(u.check,{})})]}):(0,w.jsx)(`button`,{type:`button`,className:`cr-icon-btn`,"aria-label":`Delete course`,onClick:()=>l(!0),children:(0,w.jsx)(u.x,{})}),t[51]=c,t[52]=i,t[53]=Z):Z=t[53];let Q;t[54]!==X||t[55]!==Z?(Q=(0,w.jsxs)(`div`,{className:`cr-card-actions`,children:[X,Z]}),t[54]=X,t[55]=Z,t[56]=Q):Q=t[56];let $;return t[57]!==N||t[58]!==P||t[59]!==I||t[60]!==V||t[61]!==G||t[62]!==K||t[63]!==de||t[64]!==Q||t[65]!==O?($=(0,w.jsxs)(`article`,{className:O,ref:s,children:[N,P,I,V,G,K,de,Q]}),t[57]=N,t[58]=P,t[59]=I,t[60]=V,t[61]=G,t[62]=K,t[63]=de,t[64]=Q,t[65]=O,t[66]=$):$=t[66],$}function se(){return c(`#/course`)??Promise.resolve()}function ce(e){return e.isIntersecting}function le(){return c(`#/course`)??Promise.resolve()}function ue(){}function M({initialTopic:e,onClose:t}){let n=(0,C.useRef)(null),r=(0,C.useRef)(null);d(r);let[i,o]=(0,C.useState)(e??``),[s,c]=(0,C.useState)(``),[l,f]=(0,C.useState)(!1),[m,h]=(0,C.useState)(null),g=(0,C.useRef)(null);(0,C.useEffect)(()=>()=>g.current?.abort(),[]);let v=(0,C.useCallback)(()=>{g.current?.abort(),t()},[t]);(0,C.useEffect)(()=>{let e=e=>{e.key===`Escape`&&(e.preventDefault(),v())};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[v]);let y=(0,C.useRef)(null);(0,C.useEffect)(()=>{e?.trim()||y.current?.focus()},[]),(0,C.useEffect)(()=>{let e=n.current;if(!e)return;let t=t=>{t.target===e&&v()};return e.addEventListener(`pointerdown`,t),()=>e.removeEventListener(`pointerdown`,t)},[v]);let b=async e=>{if(!e||l)return;f(!0),h(null);let t=new AbortController;g.current=t;try{let[{generateCourse:n},{getLiveConfigV2:r,toModelConfig:i}]=await D(),a=await n(e,i(r()),{level:s||void 0,signal:t.signal});if(t.signal.aborted)return;_(a),ie(a.id,0)}catch(e){if(t.signal.aborted)return;h(e instanceof Error?e.message:`Something went wrong building that course.`),f(!1)}},x=async e=>{e.preventDefault(),await b(i.trim())};return(0,w.jsx)(`div`,{className:`cr-scrim`,ref:n,children:(0,w.jsxs)(`div`,{className:`cr-sheet`,ref:r,role:`dialog`,"aria-modal":`true`,"aria-labelledby":`cr-sheet-title`,"aria-describedby":`cr-sheet-subtitle`,tabIndex:-1,children:[(0,w.jsxs)(`div`,{className:`cr-sheet-head`,children:[(0,w.jsx)(`div`,{className:`cr-sheet-mark`,"aria-hidden":`true`,children:(0,w.jsx)(u.layers,{})}),(0,w.jsxs)(`div`,{className:`cr-sheet-heading`,children:[(0,w.jsx)(`span`,{className:`cr-sheet-title`,id:`cr-sheet-title`,children:`New course`}),(0,w.jsx)(`span`,{className:`cr-sheet-subtitle`,id:`cr-sheet-subtitle`,children:`A tailored syllabus, built around what you want to understand.`})]}),(0,w.jsx)(`button`,{type:`button`,className:`cr-ed-close`,"aria-label":l?`Cancel building course`:`Close`,onClick:v,children:(0,w.jsx)(u.x,{})})]}),(0,w.jsxs)(`form`,{className:`cr-sheet-body`,"aria-busy":l,onSubmit:e=>void x(e),children:[(0,w.jsxs)(`p`,{className:`cr-legal-note`,children:[(0,w.jsx)(`strong`,{children:`Learning aid, not an authority.`}),` Lessons are AI-generated and may be wrong or incomplete. Verify consequential or professional topics with authoritative sources. `,(0,w.jsx)(`a`,{href:`#/legal?from=home`,children:`Details`})]}),(0,w.jsxs)(`label`,{className:`cr-field`,children:[(0,w.jsx)(`span`,{className:`cr-field-label`,children:`Topic`}),(0,w.jsx)(`input`,{ref:y,type:`text`,className:`cr-input`,placeholder:`e.g. linear algebra, the French Revolution, Rust ownership`,value:i,onFocus:O,onChange:e=>{O(),o(e.target.value)},disabled:l,autoComplete:`off`})]}),(0,w.jsx)(`div`,{className:`cr-topic-picks`,"aria-label":`Topic suggestions`,children:A.map(e=>(0,w.jsx)(`button`,{type:`button`,onClick:()=>o(e),disabled:l,children:e},e))}),(0,w.jsxs)(`div`,{className:`cr-field`,children:[(0,w.jsx)(`span`,{className:`cr-field-label`,children:`Starting level`}),(0,w.jsx)(p,{ariaLabel:`Starting level`,triggerClassName:`cr-input`,value:s,onChange:e=>c(e),disabled:l,focusOnMount:!!e?.trim(),options:[{value:``,label:`Pick for me`},{value:`beginner`,label:`Beginner`},{value:`intermediate`,label:`Intermediate`},{value:`expert`,label:`Expert`}]}),(0,w.jsx)(`span`,{className:`cr-field-hint`,children:`Pick for me lets Mavéa infer the right starting point from your topic.`})]}),m&&(0,w.jsx)(`div`,{className:`cr-error`,role:`alert`,children:m}),(0,w.jsx)(`button`,{type:`submit`,className:`cr-btn cr-btn-primary cr-btn-wide`,disabled:!i.trim()||l,...a(()=>D().then(()=>void 0)),children:l?(0,w.jsxs)(w.Fragment,{children:[(0,w.jsx)(`span`,{className:`cr-spinner`,"aria-hidden":`true`}),` Building your syllabus…`]}):`Build course`})]})]})})}function N(){"use no memo";let e=f();(0,C.useEffect)(()=>l(document),[]),k();let t=(0,C.useRef)(x()),[n,r]=(0,C.useState)(!!t.current),[i,a]=(0,C.useState)(t.current??``),o=g(),s=(e=``)=>{a(e),r(!0)};return(0,w.jsxs)(`div`,{className:`mavea-app cr-app`,children:[(0,w.jsxs)(`header`,{className:`cr-nav`,children:[(0,w.jsxs)(`button`,{type:`button`,className:`cr-nav-back`,onClick:()=>{window.location.hash=e.href},children:[(0,w.jsx)(u.chevL,{}),` `,e.label]}),(0,w.jsxs)(`div`,{className:`cr-nav-title`,children:[`Courses`,(0,w.jsxs)(`span`,{className:`cr-nav-sub`,children:[o.length,` course`,o.length===1?``:`s`]})]}),(0,w.jsxs)(`button`,{type:`button`,className:`cr-btn cr-btn-primary`,onClick:()=>s(),children:[(0,w.jsx)(u.plus,{}),` New course`]}),(0,w.jsx)(C.Suspense,{fallback:null,children:(0,w.jsx)(T,{triggerClassName:`ctrl`})})]}),(0,w.jsx)(`main`,{className:`cr-main`,children:o.length===0?(0,w.jsxs)(`section`,{className:`cr-empty`,"aria-labelledby":`cr-empty-title`,children:[(0,w.jsxs)(`div`,{className:`cr-empty-copy`,children:[(0,w.jsx)(`div`,{className:`cr-empty-icon`,"aria-hidden":`true`,children:(0,w.jsx)(u.layers,{})}),(0,w.jsx)(`div`,{className:`cr-empty-eyebrow`,children:`No courses yet`}),(0,w.jsx)(`h1`,{className:`cr-empty-head`,id:`cr-empty-title`,children:`Build a clear path through anything`}),(0,w.jsx)(`p`,{className:`cr-empty-sub`,children:`Name what you want to understand. Mavéa maps the syllabus, teaches one focused lesson at a time, and turns missed checkpoints into review cards.`}),(0,w.jsxs)(`button`,{type:`button`,className:`cr-btn cr-btn-primary cr-empty-cta`,onClick:()=>s(),children:[(0,w.jsx)(u.plus,{}),` Build your first course`]}),(0,w.jsxs)(`div`,{className:`cr-starter-row`,"aria-label":`Try a topic`,children:[(0,w.jsx)(`span`,{children:`Or try`}),A.map(e=>(0,w.jsx)(`button`,{type:`button`,onClick:()=>s(e),children:e},e))]})]}),(0,w.jsxs)(`div`,{className:`cr-course-path`,"aria-label":`How a Mavéa course works`,children:[(0,w.jsxs)(`div`,{children:[(0,w.jsx)(`span`,{children:`01`}),(0,w.jsx)(`strong`,{children:`Shape the syllabus`}),(0,w.jsx)(`p`,{children:`A useful sequence, matched to your starting level.`})]}),(0,w.jsxs)(`div`,{children:[(0,w.jsx)(`span`,{children:`02`}),(0,w.jsx)(`strong`,{children:`Learn visually`}),(0,w.jsx)(`p`,{children:`Focused lessons use the clearest canvas for each idea.`})]}),(0,w.jsxs)(`div`,{children:[(0,w.jsx)(`span`,{children:`03`}),(0,w.jsx)(`strong`,{children:`Make it stick`}),(0,w.jsx)(`p`,{children:`Checkpoints and spaced review close the gaps.`})]})]})]}):(0,w.jsx)(`div`,{className:`cr-grid`,children:o.map(e=>(0,w.jsx)(j,{course:e,progress:v(e.id),onRemove:()=>y(e.id)},e.id))})}),n&&(0,w.jsx)(M,{initialTopic:i,onClose:()=>r(!1)})]})}export{N as CoursesApp};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./react-BZJXY1be.js";import{t}from"./compiler-runtime-qQQXpJgv.js";import{t as n}from"./jsx-runtime-DeHZSEgm.js";import{S as r}from"./index-
|
|
1
|
+
import{t as e}from"./react-BZJXY1be.js";import{t}from"./compiler-runtime-qQQXpJgv.js";import{t as n}from"./jsx-runtime-DeHZSEgm.js";import{S as r}from"./index-Db-FgYxX.js";/* empty css */import{t as i}from"./useDashboards-B-EjE8FH.js";import{t as a}from"./useLedger-D4cXEwI0.js";import{p as o,u as s}from"./format-BkvssSOr.js";import{t as c}from"./TrackerTile-B4j5qtop.js";var l=e(),u=t(),d=n(),f=3e4,p=12e3,m=3e3;function h(e){return new Date(e).toLocaleTimeString([],{hour:`numeric`,minute:`2-digit`})}function g(e){let t=(0,u.c)(9),{state:n}=e;if(n.paused){let e;t[0]===n.resumesAt?e=t[1]:(e=h(n.resumesAt),t[0]=n.resumesAt,t[1]=e);let r;return t[2]===e?r=t[3]:(r=(0,d.jsxs)(`span`,{className:`dash-present-budget dash-present-budget--paused`,children:[`Paused · resumes `,e]}),t[2]=e,t[3]=r),r}let r=`dash-present-budget`+(n.amber?` dash-present-budget--amber`:``),i=n.amber?` · low`:``,a;return t[4]!==n.cap||t[5]!==n.used||t[6]!==r||t[7]!==i?(a=(0,d.jsxs)(`span`,{className:r,children:[n.used,`/`,n.cap,` searches today`,i]}),t[4]=n.cap,t[5]=n.used,t[6]=r,t[7]=i,t[8]=a):a=t[8],a}function _(e){let t=(0,u.c)(42),{onClose:n}=e,r=i(),h=a(),_=o(),b;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(b=[],t[0]=b):b=t[0],(0,l.useEffect)(y,b);let[x,S]=(0,l.useState)(v),C,w;t[1]===Symbol.for(`react.memo_cache_sentinel`)?(C=()=>{let e=window.setInterval(()=>S(Date.now()),f);return()=>window.clearInterval(e)},w=[],t[1]=C,t[2]=w):(C=t[1],w=t[2]),(0,l.useEffect)(C,w);let[T,E]=(0,l.useState)(null),D,O;t[3]===r.length?(D=t[4],O=t[5]):(D=()=>{if(r.length<2){E(null);return}let e=window.matchMedia(`(prefers-reduced-motion: reduce)`),t,n=e=>{if(t!==void 0&&window.clearInterval(t),e){E(null);return}E(0),t=window.setInterval(()=>{E(e=>((e??-1)+1)%r.length)},p)};n(e.matches);let i=e=>n(e.matches);return e.addEventListener(`change`,i),()=>{e.removeEventListener(`change`,i),t!==void 0&&window.clearInterval(t)}},O=[r.length],t[3]=r.length,t[4]=D,t[5]=O),(0,l.useEffect)(D,O);let[k,A]=(0,l.useState)(!1),j,M;t[6]===Symbol.for(`react.memo_cache_sentinel`)?(j=()=>{let e,t=()=>{A(!1),e!==void 0&&window.clearTimeout(e),e=window.setTimeout(()=>A(!0),m)};return t(),window.addEventListener(`mousemove`,t),()=>{window.removeEventListener(`mousemove`,t),e!==void 0&&window.clearTimeout(e)}},M=[],t[6]=j,t[7]=M):(j=t[6],M=t[7]),(0,l.useEffect)(j,M);let N,P;t[8]===n?(N=t[9],P=t[10]):(N=()=>{let e=e=>{e.key===`Escape`&&n()};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},P=[n],t[8]=n,t[9]=N,t[10]=P),(0,l.useEffect)(N,P);let F;t[11]!==h||t[12]!==x||t[13]!==_.dailySearchBudget?(F=s(h,_.dailySearchBudget,x),t[11]=h,t[12]=x,t[13]=_.dailySearchBudget,t[14]=F):F=t[14];let I=F,L;t[15]===x?L=t[16]:(L=new Date(x).toLocaleTimeString([],{hour:`numeric`,minute:`2-digit`}),t[15]=x,t[16]=L);let R=L,z;t[17]===x?z=t[18]:(z=new Date(x).toLocaleDateString([],{weekday:`long`,month:`long`,day:`numeric`}),t[17]=x,t[18]=z);let B=z,V=`dash-present`+(k?` dash-present--cursor-hidden`:``),H;t[19]===R?H=t[20]:(H=(0,d.jsx)(`span`,{className:`dash-present-time`,children:R}),t[19]=R,t[20]=H);let U;t[21]===B?U=t[22]:(U=(0,d.jsx)(`span`,{className:`dash-present-date`,children:B}),t[21]=B,t[22]=U);let W;t[23]!==H||t[24]!==U?(W=(0,d.jsxs)(`div`,{className:`dash-present-clock`,children:[H,U]}),t[23]=H,t[24]=U,t[25]=W):W=t[25];let G;t[26]===I?G=t[27]:(G=(0,d.jsx)(g,{state:I}),t[26]=I,t[27]=G);let K;t[28]!==W||t[29]!==G?(K=(0,d.jsxs)(`header`,{className:`dash-present-head`,children:[W,G]}),t[28]=W,t[29]=G,t[30]=K):K=t[30];let q;t[31]!==I||t[32]!==r||t[33]!==x||t[34]!==T?(q=(0,d.jsx)(`div`,{className:`dash-present-body`,children:r.length===0?(0,d.jsx)(`p`,{className:`dash-present-empty`,children:`Nothing on watch yet.`}):(0,d.jsx)(`div`,{className:`dash-present-grid`,children:r.map((e,t)=>(0,d.jsx)(`div`,{className:`dash-present-tile-wrap`,"data-spotlight":T===null?void 0:t===T?`on`:`off`,children:(0,d.jsx)(c,{dashboard:e,now:x,paused:I.paused})},e.id))})}),t[31]=I,t[32]=r,t[33]=x,t[34]=T,t[35]=q):q=t[35];let J;t[36]===Symbol.for(`react.memo_cache_sentinel`)?(J=(0,d.jsx)(`p`,{className:`dash-present-hint`,children:`Esc or click anywhere to exit`}),t[36]=J):J=t[36];let Y;return t[37]!==n||t[38]!==V||t[39]!==K||t[40]!==q?(Y=(0,d.jsxs)(`div`,{className:V,role:`presentation`,onClick:n,children:[K,q,J]}),t[37]=n,t[38]=V,t[39]=K,t[40]=q,t[41]=Y):Y=t[41],Y}function v(){return Date.now()}function y(){return r(document)}export{_ as DashPresent};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/generateLive-B7nlaqz8.js","assets/blockLabel-FogyzEQY.js","assets/deepenStore-BWLLzLCY.js","assets/catalog-BHjl-1uH.js","assets/http-Bqk6nJiH.js","assets/history-D2EH2X6D.js","assets/number-zqlPMliA.js","assets/catalog-CRekRbKO.js","assets/preload-helper-CiWYd9n-.js","assets/rolldown-runtime-DkW27tQK.js","assets/facts-BUGuVUIc.js","assets/blockTypes-DUDdP3pB.js","assets/streamParse-BX0bAppQ.js","assets/liveSchema-Z_39HuDI.js","assets/icons-gLFQTv74.js","assets/jsx-runtime-DeHZSEgm.js","assets/safeImageUrl-BINWXOTz.js","assets/empty-D51uhW0E.js","assets/sourceHost-BV3t2XDb.js","assets/spokenText-Dy-GZvZV.js","assets/annotations-CftUUB13.js","assets/contentVault-XKWjF2FB.js","assets/keyVault-Aw5Y2PjT.js","assets/screen-DFWKge3-.js","assets/attachments-BW-vki-E.js","assets/providers-CPhoN8j0.js","assets/info-CiqHR5cs.js","assets/route-CMdTFx0P.js","assets/effort-BftNJCCV.js","assets/index-Db-FgYxX.js","assets/react-BZJXY1be.js","assets/compiler-runtime-qQQXpJgv.js","assets/useInView-DsTvv7L_.js","assets/coreIcons-DDTChE1H.js","assets/preloadableLazy-MIX1ApBW.js","assets/cachedImport-DW0gP14h.js","assets/lazyRetry-D50B1UMY.js","assets/theme-D5D55hZi.js","assets/index-CFE0vqqO.css","assets/speed-BOytg6bC.js","assets/cache-7UEbF3S6.js","assets/validate-MQG0EcTD.js","assets/types-C42I77wh.js","assets/json-J4Y32_i9.js","assets/verbatim-DBTj9sPD.js","assets/citation-BsSvaaer.js","assets/receipts-D7zveV-I.js","assets/officeDoc-GU6Cssjf.js","assets/csv-DAqzYXUs.js","assets/search-ZN7v_P5B.js","assets/store-DqOaVRLn.js","assets/ready-_sg3IJkE.js","assets/shapes-BwoDrn09.js","assets/ledger-BssK9Pv2.js","assets/now-C9-UAzTC.js","assets/select-BuqyXI8k.js","assets/offers-eBNj_lSP.js","assets/scale-Bcgfo6Hp.js","assets/spreadLabels-CQ8hufvK.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{t as e}from"./react-BZJXY1be.js";import{t}from"./compiler-runtime-qQQXpJgv.js";import{t as n}from"./jsx-runtime-DeHZSEgm.js";import{n as r,t as i}from"./preload-helper-CiWYd9n-.js";import{n as a}from"./icons-gLFQTv74.js";import{t as o}from"./TopicCanvas-Cwc6-K3q.js";import{a as s}from"./loader-Ciz6XbG-.js";import{t as c}from"./useFocusTrap-CJmpNZv2.js";import{r as l}from"./sourceHost-BV3t2XDb.js";import"./canvas-CYrbzF43.js";import{B as u,D as d,K as f,L as p,N as m,P as h,W as g,d as _,f as v,k as y,o as b,p as x,w as S}from"./store-D16dGt7I.js";import{d as C,n as w,r as ee,u as T}from"./useLiveConfig-CvOQTr0s.js";import{t as E}from"./route-D4kd-D3B.js";import{t as te}from"./useDashboards-B-EjE8FH.js";import{a as D,f as O,i as k,l as A,n as ne,p as re,t as ie}from"./format-BkvssSOr.js";import{n as ae}from"./dataPending-DGdCvY5Y.js";import{t as j}from"./AreaChart-DZGCSEwt.js";import"./tiles-D-s6v-mA.js";import{a as M,n as oe,o as N,s as P,t as se}from"./useDashboardLoop-Cnxmf7wU.js";import{r as ce}from"./predictions-CkVKHq-5.js";import{i as le,n as ue,r as F}from"./confirmAdd-D-TTCQ31.js";import{t as de}from"./planTracker-BA-x4jbw.js";import{t as fe}from"./pin-C5_s4Ju5.js";/* empty css */import{t as pe}from"./CadenceCard-j1V7XOxX.js";import{t as me}from"./CheckLogRail-onH7DaxW.js";var I=t(),L=e();function he(e,t){for(let n of document.elementsFromPoint(e,t)){let e=n.closest(`[data-dash-widget]`);if(e)return e.getAttribute(`data-dash-widget`)}return null}function ge(e,t){let[n,r]=(0,L.useState)(null),[i,a]=(0,L.useState)(null),o=(0,L.useRef)({working:null,draggingId:null,onCommit:t,sourceIds:e,cleanup:null});o.current.onCommit=t,o.current.sourceIds=e,(0,L.useEffect)(()=>()=>o.current.cleanup?.(),[]);let s=(0,L.useCallback)(e=>t=>{if(t.button!==0&&t.pointerType===`mouse`)return;t.preventDefault();let n=[...o.current.sourceIds];o.current.working=n,o.current.draggingId=e,r(n),a(e);let i=e=>{let t=he(e.clientX,e.clientY),n=o.current.draggingId,i=o.current.working;if(!t||!n||!i||t===n)return;let a=i.indexOf(n),s=i.indexOf(t);if(a<0||s<0||a===s)return;let c=[...i];c.splice(s,0,c.splice(a,1)[0]),o.current.working=c,r(c)},s=()=>{window.removeEventListener(`pointermove`,i),window.removeEventListener(`pointerup`,s),window.removeEventListener(`pointercancel`,s),o.current.cleanup=null;let e=o.current.working;o.current.working=null,o.current.draggingId=null,r(null),a(null),e&&o.current.onCommit(e)};o.current.cleanup=s,window.addEventListener(`pointermove`,i),window.addEventListener(`pointerup`,s),window.addEventListener(`pointercancel`,s)},[]),c=(0,L.useCallback)(e=>t=>{if(t.key!==`ArrowUp`&&t.key!==`ArrowDown`)return;t.preventDefault();let n=o.current.sourceIds,r=n.indexOf(e),i=t.key===`ArrowUp`?r-1:r+1;if(r<0||i<0||i>=n.length)return;let a=[...n];a.splice(i,0,a.splice(r,1)[0]),o.current.onCommit(a)},[]);return{draggingId:i,order:n??e,handleProps:e=>({onPointerDown:s(e),onKeyDown:c(e),tabIndex:0,role:`button`,"aria-label":`Drag to reorder, or use arrow keys`})}}var R=n();function _e(e){return{id:`dash-`+(e.id??e.type),workspace:`Dashboards`,title:``,sub:``,opener:``,context:[],blocks:[{...e,col:12,delay:0}],proof:null,extras:{},group:`home`,suggests:[],keywords:[]}}function ve(e){let t=(0,I.c)(18),{dashboard:n,widget:r,editing:i,dragging:a,children:s,footer:c}=e,l;t[0]!==n||t[1]!==r?(l=P(n,r),t[0]=n,t[1]=r,t[2]=l):l=t[2];let u=l,d;t[3]===u?d=t[4]:(d=_e(u),t[3]=u,t[4]=d);let f=d,p=`dash-span-${r.span}`,m=i?`dash-tile--editing`:``,h=a?`dash-tile--dragging`:``,g;t[5]!==p||t[6]!==m||t[7]!==h?(g=[`dash-tile`,p,m,h].filter(Boolean),t[5]=p,t[6]=m,t[7]=h,t[8]=g):g=t[8];let _=g.join(` `),v;t[9]===Symbol.for(`react.memo_cache_sentinel`)?(v={},t[9]=v):v=t[9];let y;t[10]===f?y=t[11]:(y=(0,R.jsx)(o,{data:f,spot:null,built:v,onProve:ye}),t[10]=f,t[11]=y);let b;return t[12]!==s||t[13]!==_||t[14]!==c||t[15]!==y||t[16]!==r.id?(b=(0,R.jsxs)(`div`,{className:_,"data-dash-widget":r.id,children:[s,y,c]}),t[12]=s,t[13]=_,t[14]=c,t[15]=y,t[16]=r.id,t[17]=b):b=t[17],b}function ye(){}function z(){return`w-`+Math.random().toString(36).slice(2,8)}function be(e){let t=new Set(e.widgets.map(e=>e.block.type));return[{key:`note`,label:`Note`,make:()=>({block:{type:`list`,col:12,id:z(),props:{title:`Note`,items:[`Add a note about this dashboard.`]}},span:2})},{key:`thesis`,label:`Reasoning note`,make:()=>({block:{type:`thesis`,col:12,id:z(),props:{reasoning:``}},span:2})},{key:`alignmentgauge`,label:`Alignment gauge`,make:()=>({block:{type:`alignmentgauge`,col:12,id:z(),props:{pct:null}},span:1})},{key:`standingalerts`,label:`Standing alerts`,make:()=>({block:{type:`standingalerts`,col:12,id:z(),props:{alerts:[]}},span:1})},{key:`sourceslineage`,label:`Sources`,make:()=>({block:{type:`sourceslineage`,col:12,id:z(),props:{rows:[]}},span:2})}].filter(e=>e.key===`note`||!t.has(e.key))}function xe(e){let t=(0,I.c)(26),{dashboard:n,onClose:r}=e,[i,a]=(0,L.useState)(`menu`),[o,s]=(0,L.useState)(``),[l,u]=(0,L.useState)(!1),[d,f]=(0,L.useState)(null),p=be(n),m=!!T(w()).apiKey,h;t[0]!==n||t[1]!==r?(h=e=>{let{block:t,span:i}=e.make(),a={id:z(),block:t,span:i,fromSource:`manual`};b(n.id,a),r()},t[0]=n,t[1]=r,t[2]=h):h=t[2];let g=h,y=(0,L.useRef)(!0),x,S;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(x=()=>(y.current=!0,()=>{y.current=!1}),S=[],t[3]=x,t[4]=S):(x=t[3],S=t[4]),(0,L.useEffect)(x,S);let C;t[5]!==o||t[6]!==n||t[7]!==r||t[8]!==l?(C=async()=>{let e=o.trim();if(!e||l)return;if(n.metrics.length>=12||n.widgets.length>=12){f(`This board is full — remove a card or metric first, then track another number.`);return}u(!0),f(null);let t=await de(e,T(w()));if(!y.current)return;let i=t.metrics[0];if(!i){u(!1),f(`No single number found in that — the Track bar on the Dashboards home builds richer trackers.`);return}let a=Date.now(),s={id:`m-${a}`,label:i.label,query:i.query,...i.unit?{unit:i.unit}:{},sourceQuote:{text:i.label,saidAt:a},lastValue:null,origin:`empty`},c={id:z(),block:{type:`insight`,col:12,id:`blk-${a}`,num:`1`,props:{title:s.label,stat:`—`,conf:`inferred`,summary:s.label}},span:1,metricId:s.id,fromSource:`manual`},d=ue(n);v(n.id,{metrics:[s],tripwires:[],widgets:[c],source:{kind:`ADDED`,conversationId:`manual`,title:`Added by hand`,contributed:`Tracking ${s.label}`,at:a}}),_(n.id,a);let p=await le(n.id,d);if(y.current){if(p!==`confirmed`){u(!1),f(F(p));return}r()}},t[5]=o,t[6]=n,t[7]=r,t[8]=l,t[9]=C):C=t[9];let ee=C,E=(0,L.useRef)(null),te;t[10]===r?te=t[11]:(te={onEscape:r},t[10]=r,t[11]=te),c(E,te);let D=(0,L.useRef)(null),O,k;t[12]===i?(O=t[13],k=t[14]):(O=()=>{i===`track`?D.current?.focus():E.current?.querySelector(`.dash-palette-item`)?.focus()},k=[i],t[12]=i,t[13]=O,t[14]=k),(0,L.useEffect)(O,k);let A,ne;t[15]===r?(A=t[16],ne=t[17]):(A=()=>{let e=E.current?.parentElement;if(!e)return;let t=t=>{e.contains(t.target)||r()};return document.addEventListener(`pointerdown`,t),()=>document.removeEventListener(`pointerdown`,t)},ne=[r],t[15]=r,t[16]=A,t[17]=ne),(0,L.useEffect)(A,ne);let re;t[18]===Symbol.for(`react.memo_cache_sentinel`)?(re=e=>{let t=Array.from(E.current?.querySelectorAll(`.dash-palette-item`)??[]);t.length&&t[(t.indexOf(document.activeElement)+e+t.length)%t.length]?.focus()},t[18]=re):re=t[18];let ie=re,ae=i===`menu`?`menu`:`dialog`,j=i===`menu`?`Add a widget`:`Track a number`,M;t[19]===i?M=t[20]:(M=e=>{i===`menu`&&(e.key===`ArrowDown`||e.key===`ArrowUp`)&&(e.preventDefault(),ie(e.key===`ArrowDown`?1:-1))},t[19]=i,t[20]=M);let oe=i===`menu`?(0,R.jsxs)(R.Fragment,{children:[(0,R.jsx)(`button`,{type:`button`,role:`menuitem`,className:`dash-palette-item dash-palette-lead`,onClick:()=>a(`track`),children:`+ Track a number`}),p.map(e=>(0,R.jsxs)(`button`,{type:`button`,role:`menuitem`,className:`dash-palette-item`,onClick:()=>g(e),children:[`+ `,e.label]},e.key))]}):(0,R.jsxs)(`div`,{className:`dash-ptrack`,children:[(0,R.jsxs)(`div`,{className:`dash-ptrack-head`,children:[(0,R.jsx)(`button`,{type:`button`,className:`dash-ptrack-back`,"aria-label":`Back to widget list`,onClick:()=>a(`menu`),children:`←`}),(0,R.jsx)(`span`,{className:`dash-ptrack-kicker`,children:`Track a number`})]}),m?(0,R.jsxs)(`form`,{className:`dash-ptrack-form`,onSubmit:e=>{e.preventDefault(),ee()},children:[(0,R.jsx)(`input`,{ref:D,className:`dash-ptrack-input`,value:o,placeholder:`BTC price, SF temperature, 10-year yield…`,"aria-label":`What number to track`,disabled:l,onChange:e=>s(e.target.value)}),d&&(0,R.jsx)(`p`,{className:`dash-ptrack-err`,children:d}),(0,R.jsx)(`button`,{type:`submit`,className:`dash-ptrack-go`,disabled:l||!o.trim(),children:l?`Planning…`:`Track · 1 call + 1 search`})]}):(0,R.jsxs)(`p`,{className:`dash-ptrack-gate`,children:[`A tracked number is fetched by real web searches on your own key — nothing is ever made up. `,(0,R.jsx)(`a`,{href:`#/live`,children:`Connect a model in Live`}),` first.`]})]}),N;return t[21]!==ae||t[22]!==j||t[23]!==M||t[24]!==oe?(N=(0,R.jsx)(`div`,{ref:E,className:`dash-palette`,role:ae,"aria-label":j,tabIndex:-1,onKeyDown:M,children:oe}),t[21]=ae,t[22]=j,t[23]=M,t[24]=oe,t[25]=N):N=t[25],N}function Se(e){let t=(0,I.c)(24),{dashboardId:n,metric:r}=e,i=r.lastValue===null?``:String(r.lastValue),[a,o]=(0,L.useState)(i),[s,c]=(0,L.useState)(i);i!==s&&(c(i),o(i));let l;t[0]!==n||t[1]!==r.id||t[2]!==r.lastValue||t[3]!==r.unit||t[4]!==a?(l=()=>{let e=Number(a.replace(/[^0-9.+-]/g,``));if(a.trim()===``||!Number.isFinite(e))return;let t=Date.now(),i=r.lastValue;m(n,r.id,e,A(String(e),r.unit),`user`,t);let o=x(n);if(o){let{tripwires:e}=N(o,{[r.id]:i});h(n,e,t)}},t[0]=n,t[1]=r.id,t[2]=r.lastValue,t[3]=r.unit,t[4]=a,t[5]=l):l=t[5];let u=l,d;t[6]===u?d=t[7]:(d=e=>{e.preventDefault(),u()},t[6]=u,t[7]=d);let f=`Set ${r.label}…`,p=`Set ${r.label}`,g;t[8]===Symbol.for(`react.memo_cache_sentinel`)?(g=e=>o(e.target.value),t[8]=g):g=t[8];let _;t[9]!==f||t[10]!==p||t[11]!==a?(_=(0,R.jsx)(`input`,{className:`dash-fill-input`,value:a,inputMode:`decimal`,placeholder:f,"aria-label":p,onChange:g}),t[9]=f,t[10]=p,t[11]=a,t[12]=_):_=t[12];let v;t[13]===r.unit?v=t[14]:(v=r.unit&&(0,R.jsx)(`span`,{className:`dash-fill-unit`,children:r.unit}),t[13]=r.unit,t[14]=v);let y;t[15]===a?y=t[16]:(y=a.trim(),t[15]=a,t[16]=y);let b=y===``,S;t[17]===b?S=t[18]:(S=(0,R.jsx)(`button`,{type:`submit`,className:`dash-fill-save`,disabled:b,children:`Save`}),t[17]=b,t[18]=S);let C;return t[19]!==S||t[20]!==d||t[21]!==_||t[22]!==v?(C=(0,R.jsxs)(`form`,{className:`dash-fill`,onSubmit:d,children:[_,v,S]}),t[19]=S,t[20]=d,t[21]=_,t[22]=v,t[23]=C):C=t[23],C}r();var Ce=()=>i(()=>import(`./generateLive-B7nlaqz8.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58]));function B(){return!!T(w()).apiKey}function V(e){let t=(0,I.c)(15),[n,r]=(0,L.useState)(!1),[i,a]=(0,L.useState)(null),[o,s]=(0,L.useState)(null),c;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(c=[],t[0]=c):c=t[0];let l=(0,L.useRef)(c),u=(0,L.useRef)(!1),d=(0,L.useRef)(null),f;t[1]===Symbol.for(`react.memo_cache_sentinel`)?(f=()=>{d.current?.abort(),d.current=null,u.current=!1,l.current=[],r(!1),a(null),s(null)},t[1]=f):f=t[1];let p;t[2]===e.id?p=t[3]:(p=[e.id],t[2]=e.id,t[3]=p),(0,L.useEffect)(f,p);let m,h;t[4]===Symbol.for(`react.memo_cache_sentinel`)?(m=()=>()=>d.current?.abort(),h=[],t[4]=m,t[5]=h):(m=t[4],h=t[5]),(0,L.useEffect)(m,h);let g;t[6]===e?g=t[7]:(g=t=>{let n=t.trim();if(!n||u.current||!B())return;u.current=!0,r(!0),s(n);let i=T(w()),o=e.widgets.map(t=>P(e,t)),c=new AbortController;d.current=c,Ce().then(e=>{let{generateLive:t}=e;return t(n,l.current,i,void 0,{selectedBlocks:o,signal:c.signal,caps:{searchMode:`realtime`}})}).then(e=>{c.signal.aborted||(e.error||(l.current=[...l.current,{role:`user`,content:n},{role:`assistant`,content:e.narration}].slice(-8)),a(e))}).catch(()=>{c.signal.aborted||a(null)}).finally(()=>{c.signal.aborted||(u.current=!1,r(!1))})},t[6]=e,t[7]=g);let _=g,v;t[8]===Symbol.for(`react.memo_cache_sentinel`)?(v=()=>{d.current?.abort(),u.current=!1,r(!1),a(null),s(null)},t[8]=v):v=t[8];let y=v,b;t[9]===Symbol.for(`react.memo_cache_sentinel`)?(b=B(),t[9]=b):b=t[9];let x;return t[10]!==o||t[11]!==n||t[12]!==i||t[13]!==_?(x={ready:b,loading:n,result:i,lastAsk:o,run:_,reset:y},t[10]=o,t[11]=n,t[12]=i,t[13]=_,t[14]=x):x=t[14],x}var we=/^(add|track|watch|monitor|follow)\b/i;function H(e){let t=e.trim();return t&&we.test(t)?`add`:`ask`}function Te(e){let t=[];return e.tripwires.length>0&&t.push(`Are the numbers holding where I want?`,`Which alert is closest to triggering?`),e.metrics[0]&&t.push(`What does ${e.metrics[0].label} tell me right now?`),t.push(`What changed since the last update?`),t.slice(0,3)}function U(e,t,n){n.length!==0&&fe({block:n,question:t,target:e,fromSource:`talk`,firstCheck:!1,source:{kind:`ADDED`,conversationId:`talk`,title:`Asked: “${t}”`,contributed:`Pinned ${Math.min(n.length,4)} from this question`,at:Date.now()}})}function Ee(e){let t=(0,I.c)(29),{dashboard:n}=e,r=V(n),[i,a]=(0,L.useState)(``),[s,c]=(0,L.useState)(!1),[l,u]=(0,L.useState)(`ask`),d;t[0]===n?d=t[1]:(d=Te(n),t[0]=n,t[1]=d);let f=d,p;t[2]===r?p=t[3]:(p=e=>{c(!1),u(H(e)),r.run(e),a(``)},t[2]=r,t[3]=p);let m=p,h,g;t[4]!==l||t[5]!==n.id||t[6]!==s||t[7]!==r.lastAsk||t[8]!==r.loading||t[9]!==r.result?(h=()=>{l===`add`&&!r.loading&&r.result&&!r.result.error&&r.result.spec.blocks.length>0&&!s&&(U(n.id,r.lastAsk??``,r.result.spec.blocks),c(!0))},g=[l,r.loading,r.result,r.lastAsk,s,n.id],t[4]=l,t[5]=n.id,t[6]=s,t[7]=r.lastAsk,t[8]=r.loading,t[9]=r.result,t[10]=h,t[11]=g):(h=t[10],g=t[11]),(0,L.useEffect)(h,g);let _;t[12]===Symbol.for(`react.memo_cache_sentinel`)?(_=(0,R.jsx)(`div`,{className:`card-eyebrow dash-talk-eyebrow`,children:`Talk to this dashboard`}),t[12]=_):_=t[12];let v;t[13]!==f||t[14]!==i||t[15]!==m||t[16]!==r.loading||t[17]!==r.ready?(v=r.ready?(0,R.jsxs)(R.Fragment,{children:[(0,R.jsx)(`div`,{className:`dash-talk-chips`,children:f.map(e=>(0,R.jsxs)(`button`,{type:`button`,className:`dash-talk-chip`,disabled:r.loading,onClick:()=>m(e),children:[(0,R.jsx)(`span`,{className:`dash-talk-chip-orb`}),(0,R.jsxs)(`span`,{className:`dash-talk-chip-t`,children:[`“`,e,`”`]})]},e))}),(0,R.jsxs)(`form`,{className:`dash-talk-ask`,onSubmit:e=>{e.preventDefault(),m(i)},children:[(0,R.jsx)(`input`,{className:`dash-talk-input`,value:i,placeholder:`Ask a question, or type "add …" / "track …" to add it in one step`,onChange:e=>a(e.target.value),disabled:r.loading}),(0,R.jsx)(`button`,{type:`submit`,className:`dash-talk-send`,disabled:r.loading||!i.trim(),children:r.loading?`Thinking…`:`Ask`})]})]}):(0,R.jsxs)(`p`,{className:`dash-talk-gate`,children:[`Connect a model in `,(0,R.jsx)(`a`,{href:`#/live`,children:`Live`}),` to ask questions grounded in this dashboard.`]}),t[13]=f,t[14]=i,t[15]=m,t[16]=r.loading,t[17]=r.ready,t[18]=v):v=t[18];let y;t[19]!==l||t[20]!==n.id||t[21]!==s||t[22]!==r.lastAsk||t[23]!==r.loading||t[24]!==r.result?(y=r.lastAsk&&(0,R.jsxs)(`div`,{className:`dash-talk-answer`,children:[(0,R.jsxs)(`div`,{className:`dash-talk-q`,children:[`“`,r.lastAsk,`”`]}),r.loading?(0,R.jsx)(`div`,{className:`dash-talk-thinking`,children:`Mavéa is looking at your dashboard…`}):r.result?.error?(0,R.jsxs)(`div`,{className:`dash-talk-error`,children:[`That didn’t go through. Check your model in `,(0,R.jsx)(`a`,{href:`#/live`,children:`Live`}),` and try again.`]}):r.result?(0,R.jsxs)(R.Fragment,{children:[r.result.narration&&(0,R.jsx)(`p`,{className:`dash-talk-narration`,children:r.result.narration}),(0,R.jsx)(o,{data:r.result.spec,spot:null,built:{},onProve:W}),r.result.spec.blocks.length>0&&(s?(0,R.jsx)(`div`,{className:`dash-talk-pinned`,children:l===`add`?(0,R.jsx)(R.Fragment,{children:`Auto-added — this read like a command, not a question. Remove it from Edit layout if that’s wrong.`}):`Added to this dashboard ✓`}):l===`add`?null:(0,R.jsx)(`button`,{type:`button`,className:`dash-talk-pin`,onClick:()=>{U(n.id,r.lastAsk??``,r.result.spec.blocks),c(!0)},children:`+ Add this to the dashboard`}))]}):null]}),t[19]=l,t[20]=n.id,t[21]=s,t[22]=r.lastAsk,t[23]=r.loading,t[24]=r.result,t[25]=y):y=t[25];let b;return t[26]!==v||t[27]!==y?(b=(0,R.jsxs)(`section`,{className:`dash-talk`,children:[_,v,y]}),t[26]=v,t[27]=y,t[28]=b):b=t[28],b}function W(){}function De(e){if(!e.history||e.history.length<2)return null;let t=e.history[e.history.length-2].value,n=e.history[e.history.length-1].value;if(n===t)return null;let r=n>t?`up`:`down`,i=Math.round(Math.abs(n-t)*100)/100;if(i===0)return null;let a=Number.isInteger(i)?String(i):i.toFixed(2),o=e.unit===`$`?`$`:``,s=e.unit&&e.unit!==`$`?e.unit:``;return{direction:r,text:`${r===`up`?`+`:`-`}${o}${a}${s}`}}function Oe(e){return new Date(e).toLocaleTimeString(void 0,{hour:`numeric`,minute:`2-digit`})}function G(e){if(e<=0)return`due now`;let t=Math.round(e/6e4);if(t<60)return`${t}m`;let n=Math.floor(t/60),r=t%60;if(n<24)return r?`${n}h ${r}m`:`${n}h`;let i=Math.floor(n/24),a=n%24;return a?`${i}d ${a}h`:`${i}d`}function ke({dashboard:e,now:t,checking:n=!1}){let r=(0,L.useMemo)(()=>e.metrics.find(e=>e.lastValue!==null)??e.metrics[0],[e.metrics]),i=D(e);if(!i||!r)return null;let a=De(r),o=i.label||e.title,s=r.asOf??e.lastRefreshedAt??null,c=e.cadence.data===`manual`?`when you refresh`:G(e.nextDataAt-t),l=r.history??[];return(0,R.jsxs)(`section`,{className:`card dash-hero`,"aria-label":`${o} — as of last check`,children:[(0,R.jsxs)(`div`,{className:`dash-hero-top`,children:[(0,R.jsxs)(`span`,{className:`dash-hero-eyebrow`,children:[o,`: as of last check`]}),(0,R.jsx)(`span`,{className:`dash-hero-meta`,children:n?`checking for new data…`:`as of ${s?Oe(s):`not yet checked`} / not real-time — next check ${c}`})]}),(0,R.jsxs)(`div`,{className:`dash-hero-value-row`,children:[(0,R.jsx)(`span`,{className:`dash-hero-value${n?` tile-value--checking`:``}`,children:i.value}),a&&(0,R.jsx)(`span`,{className:`dash-hero-delta dash-hero-delta--${a.direction}`,children:a.text})]}),(0,R.jsx)(`div`,{className:`dash-hero-chart`,children:l.length>=2?(0,R.jsx)(j,{points:l,tone:a?.direction??`flat`}):(0,R.jsx)(`p`,{className:`dash-hero-chart-empty`,children:`Not enough history yet for a chart.`})})]})}function Ae(e){let t=(0,I.c)(6),{dashboard:n}=e,[r,i]=C();if(re().keyNudgeShown||!ee(r)||r.rememberKey||!k(n))return null;let a=je,o;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(o=(0,R.jsx)(`p`,{className:`dash-key-nudge-text`,children:`Mavéa checks this with your key, which currently lives only in this tab. Keep it on this device (encrypted) so checks still work after a reload?`}),t[0]=o):o=t[0];let s;t[1]===i?s=t[2]:(s=(0,R.jsx)(`button`,{type:`button`,className:`dash-key-nudge-keep`,onClick:()=>{i({rememberKey:!0}),a()},children:`Keep key on this device`}),t[1]=i,t[2]=s);let c;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(c=(0,R.jsx)(`button`,{type:`button`,className:`dash-key-nudge-dismiss`,onClick:a,children:`Not now`}),t[3]=c):c=t[3];let l;return t[4]===s?l=t[5]:(l=(0,R.jsxs)(`div`,{className:`card dash-key-nudge`,children:[o,(0,R.jsxs)(`div`,{className:`dash-key-nudge-actions`,children:[s,c]})]}),t[4]=s,t[5]=l),l}function je(){return O({keyNudgeShown:!0})}var K={hit:{label:`Called it ✓`,className:`is-hit`},miss:{label:`Missed ✗`,className:`is-miss`},unclear:{label:`Unclear`,className:`is-unclear`}};function q(e){let t=(0,I.c)(21),{dashboard:n,now:r}=e,i;t[0]===n.predictionHistory?i=t[1]:(i=n.predictionHistory??[],t[0]=n.predictionHistory,t[1]=i);let a=i,o=a.length>0?a[a.length-1]:null;if(!n.prediction&&!o)return null;let s;t[2]!==n.predictionHistory||t[3]!==r?(s=ce(n.predictionHistory,r),t[2]=n.predictionHistory,t[3]=r,t[4]=s):s=t[4];let c=s,l=o?K[o.result]:null,u;t[5]===Symbol.for(`react.memo_cache_sentinel`)?(u=(0,R.jsx)(`span`,{className:`card-eyebrow dash-expects-eyebrow`,children:`Expects by next check`}),t[5]=u):u=t[5];let d;t[6]===n.prediction?d=t[7]:(d=n.prediction&&(0,R.jsx)(`p`,{className:`dash-expects-text`,children:n.prediction.text}),t[6]=n.prediction,t[7]=d);let f;t[8]!==l||t[9]!==o?(f=o&&l&&(0,R.jsxs)(`div`,{className:`dash-expects-grade`,children:[(0,R.jsxs)(`span`,{className:`dash-expects-chip ${l.className}`,children:[`Last call: `,l.label]}),(0,R.jsxs)(`p`,{className:`dash-expects-expected`,children:[`“`,o.expected,`”`]}),o.note&&(0,R.jsx)(`p`,{className:`dash-expects-note`,children:o.note})]}),t[8]=l,t[9]=o,t[10]=f):f=t[10];let p;t[11]!==c.hits||t[12]!==c.total?(p=c.total>0&&(0,R.jsxs)(`span`,{className:`dash-expects-tally`,children:[`Calls this week · `,c.hits,`/`,c.total]}),t[11]=c.hits,t[12]=c.total,t[13]=p):p=t[13];let m;t[14]===Symbol.for(`react.memo_cache_sentinel`)?(m=(0,R.jsx)(`span`,{className:`dash-expects-label`,children:`Predictions are free — written from checks you already paid for`}),t[14]=m):m=t[14];let h;t[15]===p?h=t[16]:(h=(0,R.jsxs)(`div`,{className:`dash-expects-foot`,children:[p,m]}),t[15]=p,t[16]=h);let g;return t[17]!==d||t[18]!==f||t[19]!==h?(g=(0,R.jsxs)(`div`,{className:`dash-expects`,children:[u,d,f,h]}),t[17]=d,t[18]=f,t[19]=h,t[20]=g):g=t[20],g}function Me(e){let t=(0,I.c)(23),{dashboard:n,now:r}=e,i=M(n.id);if(!(n.tripwires.length>0||n.lastVerdict||n.prediction||i))return null;let a=n.lastVerdict,o;t[0]!==n.tripwires||t[1]!==a?(o=a?n.tripwires.find(e=>e.id===a.tripwireId)??null:null,t[0]=n.tripwires,t[1]=a,t[2]=o):o=t[2];let s=o,c=!!n.lastVerdictError&&(n.lastVerdictAttemptAt??0)>(a?.at??0),l;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(l=(0,R.jsx)(`span`,{className:`card-eyebrow dash-lastcheck-eyebrow`,children:`From the last check`}),t[3]=l):l=t[3];let u;t[4]!==r||t[5]!==a?(u=a&&(0,R.jsx)(`span`,{className:`dash-lastcheck-when`,children:ie(a.at,r).replace(/^updated /,`checked `)}),t[4]=r,t[5]=a,t[6]=u):u=t[6];let d;t[7]===u?d=t[8]:(d=(0,R.jsxs)(`div`,{className:`dash-lastcheck-head`,children:[l,u]}),t[7]=u,t[8]=d);let f;t[9]!==n||t[10]!==c||t[11]!==r||t[12]!==i||t[13]!==s||t[14]!==a?(f=a?(0,R.jsxs)(R.Fragment,{children:[s&&(0,R.jsxs)(`p`,{className:`dash-lastcheck-text dash-lastcheck-about`,children:[`About: `,s.label]}),i?(0,R.jsx)(`p`,{className:`dash-lastcheck-text dash-lastcheck-pending`,children:`Mavéa is reading the latest numbers…`}):c&&(0,R.jsxs)(`p`,{className:`dash-lastcheck-text dash-lastcheck-error`,children:[`A newer check just failed: `,n.lastVerdictError]}),(0,R.jsx)(`p`,{className:`dash-lastcheck-text`,children:a.text}),a.grounded===!1&&(0,R.jsx)(`p`,{className:`dash-lastcheck-text dash-lastcheck-qualifier`,children:`Based on background knowledge, not a fresh search.`}),a.sources&&a.sources.length>0&&(0,R.jsx)(`div`,{className:`dash-lastcheck-sources`,children:a.sources.map(J)})]}):i?(0,R.jsx)(`p`,{className:`dash-lastcheck-text dash-lastcheck-pending`,children:`Mavéa is reading the latest numbers…`}):c?(0,R.jsx)(`p`,{className:`dash-lastcheck-text dash-lastcheck-error`,children:n.lastVerdictError}):(0,R.jsx)(`p`,{className:`dash-lastcheck-text dash-lastcheck-muted`,children:ne(n,r)}),t[9]=n,t[10]=c,t[11]=r,t[12]=i,t[13]=s,t[14]=a,t[15]=f):f=t[15];let p;t[16]!==n||t[17]!==r?(p=(0,R.jsx)(q,{dashboard:n,now:r}),t[16]=n,t[17]=r,t[18]=p):p=t[18];let m;return t[19]!==d||t[20]!==f||t[21]!==p?(m=(0,R.jsxs)(`section`,{className:`dash-lastcheck`,"aria-label":`From the last check`,children:[d,f,p]}),t[19]=d,t[20]=f,t[21]=p,t[22]=m):m=t[22],m}function J(e){let t=l(e.url);return t?(0,R.jsx)(`a`,{className:`dash-lastcheck-source`,href:t,target:`_blank`,rel:`noopener noreferrer`,title:e.title,children:e.title},e.url):null}var Y={WATCHING:`Watching`,CLEAR:`Clear`,AWAITING:`Awaiting data`,TRIGGERED:`Triggered`};function X(e){let t=(0,I.c)(15),{tripwire:n}=e,r=n.state===`TRIGGERED`,i=`dash-alertcard-row`+(r?` is-triggered`:``),a=`dash-switch`+(n.state===`AWAITING`?``:` on`),o;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(o=(0,R.jsx)(`span`,{className:`dash-switch-knob`}),t[0]=o):o=t[0];let s;t[1]===a?s=t[2]:(s=(0,R.jsx)(`span`,{className:a,"aria-hidden":`true`,children:o}),t[1]=a,t[2]=s);let c=n.sourceQuote.text||n.label,l;t[3]===c?l=t[4]:(l=(0,R.jsx)(`span`,{className:`dash-alertcard-line`,children:c}),t[3]=c,t[4]=l);let u;t[5]!==r||t[6]!==n.state?(u=r?(0,R.jsx)(`span`,{className:`dash-alertcard-crossed`,children:`A line you set has been crossed`}):(0,R.jsx)(`span`,{className:`dash-alertcard-state`,children:Y[n.state]}),t[5]=r,t[6]=n.state,t[7]=u):u=t[7];let d;t[8]!==l||t[9]!==u?(d=(0,R.jsxs)(`div`,{className:`dash-alertcard-body`,children:[l,u]}),t[8]=l,t[9]=u,t[10]=d):d=t[10];let f;return t[11]!==i||t[12]!==s||t[13]!==d?(f=(0,R.jsxs)(`li`,{className:i,children:[s,d]}),t[11]=i,t[12]=s,t[13]=d,t[14]=f):f=t[14],f}function Ne(e){let t=(0,I.c)(5),{dashboard:n}=e;if(n.tripwires.length===0)return null;let r;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(r=(0,R.jsx)(`div`,{className:`card-eyebrow`,children:`Your alerts`}),t[0]=r):r=t[0];let i;t[1]===n.tripwires?i=t[2]:(i=n.tripwires.map(Z),t[1]=n.tripwires,t[2]=i);let a;return t[3]===i?a=t[4]:(a=(0,R.jsxs)(`section`,{className:`card dash-alertcard`,"aria-label":`Your alerts`,children:[r,(0,R.jsx)(`ul`,{className:`dash-alertcard-list`,children:i})]}),t[3]=i,t[4]=a),a}function Z(e){return(0,R.jsx)(X,{tripwire:e},e.id)}var Q={scheduled:`Scheduled`,search:`Search`,sources:`Sources`,extraction:`Extraction`,grounding:`Grounding`,saved:`Saved`,tripwires:`Lines checked`},Pe={updated:`New data saved`,"no-change":`Checked — nothing new`,unverified:`Nothing could be verified`,failed:`The check could not run`};function Fe(e){if(e.endedAt===void 0)return`…`;let t=(e.endedAt-e.startedAt)/1e3;return t<1?`${Math.max(1,Math.round(t*1e3))}ms`:`${t.toFixed(1)}s`}function Ie(e){let t=(0,I.c)(13),{dashboardId:n}=e,r,i;t[0]===n?(r=t[1],i=t[2]):(r=()=>u(n),i=()=>u(n),t[0]=n,t[1]=r,t[2]=i);let a=(0,L.useSyncExternalStore)(g,r,i),[o,s]=(0,L.useState)(!1),c=a[0];if(!c)return null;let l;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(l=()=>s($),t[3]=l):l=t[3];let d=o?`Hide`:`What happened on the last check?`,f;t[4]!==o||t[5]!==d?(f=(0,R.jsx)(`button`,{type:`button`,className:`crp-toggle`,"aria-expanded":o,onClick:l,children:d}),t[4]=o,t[5]=d,t[6]=f):f=t[6];let m;t[7]!==c||t[8]!==o?(m=o&&(0,R.jsxs)(`ol`,{className:`crp-steps`,children:[c.steps.map(Le),(0,R.jsxs)(`li`,{className:`crp-foot`,children:[(0,R.jsx)(`span`,{children:c.outcome?Pe[c.outcome]:`Running…`}),(0,R.jsx)(`span`,{className:`crp-foot-time`,children:Fe(c)})]}),c.failure&&(0,R.jsx)(`li`,{className:`crp-fix`,children:p(c.failure)})]}),t[7]=c,t[8]=o,t[9]=m):m=t[9];let h;return t[10]!==f||t[11]!==m?(h=(0,R.jsxs)(`section`,{className:`crp`,children:[f,m]}),t[10]=f,t[11]=m,t[12]=h):h=t[12],h}function Le(e,t){return(0,R.jsxs)(`li`,{className:e.ok?`crp-step`:`crp-step is-bad`,children:[(0,R.jsx)(`span`,{className:`crp-step-mark`,"aria-hidden":`true`,children:e.ok?`✓`:`✕`}),(0,R.jsx)(`span`,{className:`crp-step-name`,children:Q[e.name]}),e.count!==void 0&&(0,R.jsx)(`span`,{className:`crp-step-count`,children:e.count}),e.detail&&(0,R.jsx)(`span`,{className:`crp-step-detail`,children:e.detail})]},`${e.name}-${t}`)}function $(e){return!e}var Re={1:`S`,2:`M`,3:`L`};function ze(e){let t=(0,I.c)(120),{id:n}=e,r=te(),i;t[0]!==r||t[1]!==n?(i=r.find(e=>e.id===n)??null,t[0]=r,t[1]=n,t[2]=i):i=t[2];let o=i,[c,l]=(0,L.useState)(!1),[u,p]=(0,L.useState)(!1),m;t[3]===o?.widgets?m=t[4]:(m=o?.widgets.map(Ge)??[],t[3]=o?.widgets,t[4]=m);let h=m,g;t[5]===o?g=t[6]:(g=e=>o&&d(o.id,e),t[5]=o,t[6]=g);let _=ge(h,g),v;t[7]===o?.widgets?v=t[8]:(v=new Map((o?.widgets??[]).map(We)),t[7]=o?.widgets,t[8]=v);let b=v,x,w;t[9]===o?(x=t[10],w=t[11]):(x=()=>{o&&s(o.widgets.map(Ue))},w=[o],t[9]=o,t[10]=x,t[11]=w),(0,L.useEffect)(x,w);let T=o?.id,D,O;t[12]===T?(D=t[13],O=t[14]):(D=()=>{T&&f(T)},O=[T],t[12]=T,t[13]=D,t[14]=O),(0,L.useEffect)(D,O);let[A,re]=(0,L.useState)(He),ie,j;t[15]===Symbol.for(`react.memo_cache_sentinel`)?(j=()=>{let e=window.setInterval(()=>re(Date.now()),3e4);return()=>window.clearInterval(e)},ie=[],t[15]=ie,t[16]=j):(ie=t[15],j=t[16]),(0,L.useEffect)(j,ie);let[M]=C(),N=ae(o?.id??``),[P,ce]=(0,L.useState)(`idle`),le;t[17]===Symbol.for(`react.memo_cache_sentinel`)?(le=async e=>{ce(`busy`);let t=await oe(e);ce(t===`no-model`||t===`failed`||t===`unverified`?t:`idle`)},t[17]=le):le=t[17];let ue=le,[F,de]=(0,L.useState)(`idle`),fe;t[18]===Symbol.for(`react.memo_cache_sentinel`)?(fe=async e=>{de(`busy`);let t=await se(e);de(t===`no-model`||t===`failed`?t:`idle`)},t[18]=fe):fe=t[18];let he=fe;if(!o){let e;t[19]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,R.jsx)(`p`,{className:`dash-empty-title`,children:`That dashboard isn’t here.`}),t[19]=e):e=t[19];let n;return t[20]===Symbol.for(`react.memo_cache_sentinel`)?(n=(0,R.jsx)(`div`,{className:`dash-detail`,children:(0,R.jsxs)(`div`,{className:`dash-empty`,children:[e,(0,R.jsxs)(`p`,{className:`dash-empty-how`,children:[`It may have been removed. `,(0,R.jsx)(`a`,{href:E.gallery,children:`Back to your dashboards →`})]})]})}),t[20]=n):n=t[20],n}let _e;t[21]===o.id?_e=t[22]:(_e=(e,t)=>{y(o.id,e,t>=3?1:t+1)},t[21]=o.id,t[22]=_e);let ye=_e,z;t[23]!==b||t[24]!==ye||t[25]!==o||t[26]!==c||t[27]!==_?(z=_.order.map(e=>{let t=b.get(e);if(!t)return null;let n=t.metricId?o.metrics.find(e=>e.id===t.metricId):null,r=!c&&n?.blankKey?(0,R.jsx)(Se,{dashboardId:o.id,metric:n}):void 0;return(0,R.jsx)(ve,{dashboard:o,widget:t,editing:c,dragging:_.draggingId===t.id,footer:r,children:c&&(0,R.jsxs)(`div`,{className:`dash-tile-chrome`,children:[(0,R.jsx)(`span`,{className:`dash-tile-handle`,..._.handleProps(t.id),children:`⠿`}),(0,R.jsxs)(`div`,{className:`dash-tile-ctrls`,children:[(0,R.jsx)(`button`,{type:`button`,className:`dash-tile-size`,onClick:()=>ye(t.id,t.span),title:`Resize`,children:Re[t.span]}),(0,R.jsx)(`button`,{type:`button`,className:`dash-tile-x`,onClick:()=>S(o.id,t.id),"aria-label":`Remove widget`,children:`×`})]})]})},t.id)}),t[23]=b,t[24]=ye,t[25]=o,t[26]=c,t[27]=_,t[28]=z):z=t[28];let be=z,Ce;t[29]===Symbol.for(`react.memo_cache_sentinel`)?(Ce=(0,R.jsx)(`a`,{className:`dash-back`,href:E.gallery,"aria-label":`Back to dashboards`,children:`←`}),t[29]=Ce):Ce=t[29];let B;t[30]===o.title?B=t[31]:(B=(0,R.jsx)(`span`,{className:`dash-detail-title`,children:o.title}),t[30]=o.title,t[31]=B);let V;t[32]===o.question?V=t[33]:(V=o.question&&(0,R.jsxs)(`span`,{className:`dash-detail-q`,title:o.question,children:[`“`,o.question,`”`]}),t[32]=o.question,t[33]=V);let we;t[34]===Symbol.for(`react.memo_cache_sentinel`)?(we=(0,R.jsx)(`i`,{className:`dash-live-dot`}),t[34]=we):we=t[34];let H;t[35]!==o||t[36]!==N||t[37]!==A?(H=N?`checking for new data…`:ne(o,A),t[35]=o,t[36]=N,t[37]=A,t[38]=H):H=t[38];let Te=!N&&k(o)&&o.cadence.data!==`manual`?` · refreshes while open`:``,U;t[39]!==H||t[40]!==Te?(U=(0,R.jsxs)(`span`,{className:`dash-detail-clock`,children:[we,H,Te]}),t[39]=H,t[40]=Te,t[41]=U):U=t[41];let W;t[42]===o.id?W=t[43]:(W=()=>void ue(o.id),t[42]=o.id,t[43]=W);let De=P===`busy`,Oe=P===`busy`?`dash-refresh-spin`:void 0,G;t[44]===Oe?G=t[45]:(G=(0,R.jsx)(a.refresh,{className:Oe}),t[44]=Oe,t[45]=G);let je=P===`busy`?`Refreshing…`:`Refresh now`,K;t[46]!==W||t[47]!==De||t[48]!==G||t[49]!==je?(K=(0,R.jsxs)(`button`,{type:`button`,className:`dash-edit-btn dash-refresh-btn`,onClick:W,disabled:De,title:`Fetch current values now, regardless of cadence`,children:[G,je]}),t[46]=W,t[47]=De,t[48]=G,t[49]=je,t[50]=K):K=t[50];let q;t[51]!==o||t[52]!==M||t[53]!==P?(q=(P===`no-model`||!ee(M)&&k(o))&&(0,R.jsx)(`span`,{className:`dash-refresh-hint`,children:`Connect a model in Live settings to refresh.`}),t[51]=o,t[52]=M,t[53]=P,t[54]=q):q=t[54];let J;t[55]===P?J=t[56]:(J=P===`failed`&&(0,R.jsx)(`span`,{className:`dash-refresh-hint`,children:`Couldn’t reach your model — check its key or quota, then try again.`}),t[55]=P,t[56]=J);let Y;t[57]===P?Y=t[58]:(Y=P===`unverified`&&(0,R.jsx)(`span`,{className:`dash-refresh-hint`,children:`Checked, but no source could verify new values — keeping the last real ones.`}),t[57]=P,t[58]=Y);let X;t[59]!==o.id||t[60]!==o.metrics.length||t[61]!==F?(X=o.metrics.length>0&&(0,R.jsxs)(`button`,{type:`button`,className:`dash-edit-btn dash-read-btn`,onClick:()=>void he(o.id),disabled:F===`busy`,title:`Ask Mavéa to read the latest numbers now`,children:[(0,R.jsx)(a.sparkle,{className:F===`busy`?`dash-refresh-spin`:void 0}),F===`busy`?`Reading…`:`Read the numbers now`]}),t[59]=o.id,t[60]=o.metrics.length,t[61]=F,t[62]=X):X=t[62];let Z;t[63]===F?Z=t[64]:(Z=F===`no-model`&&(0,R.jsx)(`span`,{className:`dash-refresh-hint`,children:`Connect a model in Live settings to read.`}),t[63]=F,t[64]=Z);let Q;t[65]===F?Q=t[66]:(Q=F===`failed`&&(0,R.jsx)(`span`,{className:`dash-refresh-hint`,children:`Couldn’t reach your model — check its key or quota, then try again.`}),t[65]=F,t[66]=Q);let Pe=`dash-edit-btn`+(c?` is-active`:``),Fe;t[67]===Symbol.for(`react.memo_cache_sentinel`)?(Fe=()=>{l(Ve),p(!1)},t[67]=Fe):Fe=t[67];let Le=c?`Done`:`Edit layout`,$;t[68]!==Pe||t[69]!==Le?($=(0,R.jsx)(`button`,{type:`button`,className:Pe,onClick:Fe,children:Le}),t[68]=Pe,t[69]=Le,t[70]=$):$=t[70];let ze;t[71]===o.id?ze=t[72]:(ze=E.settings(o.id),t[71]=o.id,t[72]=ze);let Ke;t[73]===ze?Ke=t[74]:(Ke=(0,R.jsx)(`a`,{className:`dash-gear`,href:ze,"aria-label":`Dashboard settings`,title:`Settings`,children:`⚙`}),t[73]=ze,t[74]=Ke);let qe;t[75]!==B||t[76]!==V||t[77]!==U||t[78]!==K||t[79]!==q||t[80]!==J||t[81]!==Y||t[82]!==X||t[83]!==Z||t[84]!==Q||t[85]!==$||t[86]!==Ke?(qe=(0,R.jsxs)(`header`,{className:`dash-detail-head`,children:[Ce,B,V,U,K,q,J,Y,X,Z,Q,$,Ke]}),t[75]=B,t[76]=V,t[77]=U,t[78]=K,t[79]=q,t[80]=J,t[81]=Y,t[82]=X,t[83]=Z,t[84]=Q,t[85]=$,t[86]=Ke,t[87]=qe):qe=t[87];let Je;t[88]!==o||t[89]!==c?(Je=!c&&(0,R.jsx)(Ae,{dashboard:o}),t[88]=o,t[89]=c,t[90]=Je):Je=t[90];let Ye;t[91]!==o||t[92]!==N||t[93]!==c||t[94]!==A?(Ye=!c&&(0,R.jsx)(ke,{dashboard:o,now:A,checking:N}),t[91]=o,t[92]=N,t[93]=c,t[94]=A,t[95]=Ye):Ye=t[95];let Xe;t[96]!==o||t[97]!==c||t[98]!==A?(Xe=!c&&(0,R.jsx)(Me,{dashboard:o,now:A}),t[96]=o,t[97]=c,t[98]=A,t[99]=Xe):Xe=t[99];let Ze;t[100]!==o||t[101]!==c||t[102]!==u?(Ze=c&&(0,R.jsxs)(`div`,{className:`dash-edit-bar`,children:[(0,R.jsxs)(`span`,{className:`dash-edit-hint`,children:[`Drag a tile by its `,(0,R.jsx)(`strong`,{children:`⠿`}),` handle to reorder, tap `,(0,R.jsx)(`strong`,{children:`S/M/L`}),` to resize, `,(0,R.jsx)(`strong`,{children:`×`}),` to remove.`]}),(0,R.jsx)(`button`,{type:`button`,className:`dash-edit-add`,onClick:()=>p(Be),"aria-expanded":u,children:`+ Add widget`}),u&&(0,R.jsx)(xe,{dashboard:o,onClose:()=>p(!1)})]}),t[100]=o,t[101]=c,t[102]=u,t[103]=Ze):Ze=t[103];let Qe;t[104]!==o||t[105]!==c||t[106]!==A||t[107]!==be?(Qe=c?(0,R.jsx)(`div`,{className:`dash-grid`,children:be}):(0,R.jsxs)(`div`,{className:`dash-detail-cols`,children:[(0,R.jsxs)(`div`,{className:`dash-detail-main`,children:[o.widgets.length>0&&(0,R.jsxs)(`div`,{className:`dash-detail-section`,children:[(0,R.jsx)(`div`,{className:`card-eyebrow dash-detail-section-title`,children:`Cards`}),(0,R.jsx)(`div`,{className:`dash-grid`,children:be})]}),(0,R.jsx)(me,{dashboardId:o.id,now:A}),(0,R.jsx)(Ie,{dashboardId:o.id})]}),(0,R.jsxs)(`div`,{className:`dash-detail-side`,children:[(0,R.jsx)(pe,{dashboard:o,now:A}),(0,R.jsx)(Ne,{dashboard:o})]})]}),t[104]=o,t[105]=c,t[106]=A,t[107]=be,t[108]=Qe):Qe=t[108];let $e;t[109]!==o||t[110]!==c?($e=!c&&(0,R.jsx)(Ee,{dashboard:o},o.id),t[109]=o,t[110]=c,t[111]=$e):$e=t[111];let et;return t[112]!==qe||t[113]!==Je||t[114]!==Ye||t[115]!==Xe||t[116]!==Ze||t[117]!==Qe||t[118]!==$e?(et=(0,R.jsxs)(`div`,{className:`dash-detail`,children:[qe,Je,Ye,Xe,Ze,Qe,$e]}),t[112]=qe,t[113]=Je,t[114]=Ye,t[115]=Xe,t[116]=Ze,t[117]=Qe,t[118]=$e,t[119]=et):et=t[119],et}function Be(e){return!e}function Ve(e){return!e}function He(){return Date.now()}function Ue(e){return e.block}function We(e){return[e.id,e]}function Ge(e){return e.id}export{ze as DashboardDetail};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/DashboardLoopRuntime-BcdZtIgH.js","assets/useDashboardLoop-Cnxmf7wU.js","assets/rolldown-runtime-DkW27tQK.js","assets/react-BZJXY1be.js","assets/compiler-runtime-qQQXpJgv.js","assets/preload-helper-CiWYd9n-.js","assets/http-Bqk6nJiH.js","assets/number-zqlPMliA.js","assets/store-D16dGt7I.js","assets/contentVault-XKWjF2FB.js","assets/keyVault-Aw5Y2PjT.js","assets/localBudget-CxLP6bjE.js","assets/providers-CPhoN8j0.js","assets/blockTypes-DUDdP3pB.js","assets/info-CiqHR5cs.js","assets/attachments-BW-vki-E.js","assets/route-CMdTFx0P.js","assets/useLiveConfig-CvOQTr0s.js","assets/json-J4Y32_i9.js","assets/ledger-DHS2di3l.js","assets/format-BkvssSOr.js","assets/dataPending-DGdCvY5Y.js","assets/now-C9-UAzTC.js","assets/predictions-CkVKHq-5.js","assets/notify-Bz4wuE4T.js","assets/dashboardEvents-MzCzak6K.js","assets/spokenText-Dy-GZvZV.js","assets/kokoro-yB7iU_JU.js","assets/index-Db-FgYxX.js","assets/useInView-DsTvv7L_.js","assets/jsx-runtime-DeHZSEgm.js","assets/coreIcons-DDTChE1H.js","assets/preloadableLazy-MIX1ApBW.js","assets/cachedImport-DW0gP14h.js","assets/lazyRetry-D50B1UMY.js","assets/theme-D5D55hZi.js","assets/index-CFE0vqqO.css"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{t as e}from"./react-BZJXY1be.js";import{t}from"./compiler-runtime-qQQXpJgv.js";import{t as n}from"./jsx-runtime-DeHZSEgm.js";import{n as r,t as i}from"./preload-helper-CiWYd9n-.js";import{t as a}from"./preloadableLazy-MIX1ApBW.js";import{a as o,s}from"./index-Db-FgYxX.js";import{t as c}from"./useDashboards-B-EjE8FH.js";var l=t(),u=e(),d=n();r();var f=a(()=>i(()=>import(`./DashboardLoopRuntime-BcdZtIgH.js`).then(e=>({default:e.DashboardLoopRuntime})),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36]))).Component;function p(){let e=(0,l.c)(1),t=(0,u.useSyncExternalStore)(s,o,m),n=c();if(!t||n.length===0)return null;let r;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(r=(0,d.jsx)(u.Suspense,{fallback:null,children:(0,d.jsx)(f,{})}),e[0]=r):r=e[0],r}function m(){return!1}export{p as DashboardLoopGate};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as e}from"./useDashboardLoop-Cnxmf7wU.js";function t(){return e(),null}export{t as DashboardLoopRuntime};
|