diff options
| author | Jake Zerrer <him@jakezerrer.com> | 2025-11-26 15:10:20 -0500 |
|---|---|---|
| committer | Jake Zerrer <him@jakezerrer.com> | 2025-12-09 18:10:02 -0500 |
| commit | 02dce7d08f92b1d255e3afca33034f481d1371a7 (patch) | |
| tree | 18cebc9ab1ee73642ae1294b1c50173b977e29dc /portal.clj | |
| parent | 34bdba657919a38d26f698024f37d649931ac368 (diff) | |
Diffstat (limited to 'portal.clj')
| -rw-r--r-- | portal.clj | 65 |
1 files changed, 23 insertions, 42 deletions
@@ -11,56 +11,38 @@ (defn rec "Record flow f, tagging with id." [id f] - (m/ap - (let [capturing? (atom nil) - [tag value] - (m/amb= [:focused-tags (m/?< >focused-tags)] - [:event (m/?< f)])] - (case tag - :focused-tags - (do - (reset! capturing? (boolean (value id))) - (m/amb)) + (m/ap (let [capturing? (atom nil) + [tag value] (m/amb= [:focused-tags (m/?< >focused-tags)] + [:event (m/?< f)])] + (case tag + :focused-tags (do (reset! capturing? (boolean (value id))) (m/amb)) + :event (do (swap! seen-tags conj id) + (when @capturing? + (m/? (m/via m/blk + ((requiring-resolve 'portal.api/submit) + [id value])))) + value))))) - :event - (do - (swap! seen-tags conj id) - (when @capturing? - (m/? (m/via m/blk ((requiring-resolve 'portal.api/submit) [id value])))) - value))))) - -(defn ptags - "Print all available tags." - [] @seen-tags) +(defn ptags "Print all available tags." [] @seen-tags) (def show-portal? (atom false)) (def >show-portal? (rec :show-portal? (m/signal (m/watch show-portal?)))) -(defn show-portal - "Show portal window." - [] - (reset! show-portal? true)) +(defn show-portal "Show portal window." [] (reset! show-portal? true)) -(defn hide-portal - "Hide portal window." - [] - (reset! show-portal? false)) +(defn hide-portal "Hide portal window." [] (reset! show-portal? false)) (def >portal-ui - (m/ap - (let [ui (m/? (m/via m/blk ((requiring-resolve 'portal.api/open))))] - (m/amb= ui - (try (m/? m/never) - (finally - ;; Were this blocking, I would put this on m/blk - ((requiring-resolve 'portal.api/close) ui) - (m/amb))))))) + (m/ap (let [ui (m/? (m/via m/blk ((requiring-resolve 'portal.api/open))))] + (m/amb= ui + (try (m/? m/never) + (finally + ;; Were this blocking, I would put this on m/blk + ((requiring-resolve 'portal.api/close) ui) + (m/amb))))))) (def >portal-ui-toggle - (m/ap - (when (m/?< >show-portal?) - (m/?< >portal-ui) - (m/amb)))) + (m/ap (when (m/?< >show-portal?) (m/?< >portal-ui) (m/amb)))) (defn cap "Capture flow elements with specified ids to portal" @@ -79,5 +61,4 @@ (def >portal-main "Main entrypoint." - (m/ap (m/amb= (do (m/?< >portal-ui-toggle) - (m/amb))))) + (m/ap (m/amb= (do (m/?< >portal-ui-toggle) (m/amb))))) |
