re-frame/src/re_frame/core.cljc

115 lines
3.8 KiB
Plaintext
Raw Normal View History

2015-02-25 11:03:02 +00:00
(ns re-frame.core
(:require
2016-07-07 04:52:13 +00:00
[re-frame.events :as events]
2015-02-25 11:03:25 +00:00
[re-frame.subs :as subs]
[re-frame.fx :as fx]
[re-frame.router :as router]
2016-06-24 12:09:07 +00:00
[re-frame.loggers :as loggers]
2015-03-01 20:58:34 +00:00
[re-frame.middleware :as middleware]))
2015-02-25 11:03:02 +00:00
2016-07-13 14:32:36 +00:00
;; -- dispatch
(def dispatch router/dispatch)
(def dispatch-sync router/dispatch-sync)
2015-02-25 11:03:02 +00:00
2016-07-13 14:32:36 +00:00
;; -- subscribe
(def reg-sub-raw subs/register)
(def reg-sub subs/register-pure)
2016-07-13 14:32:36 +00:00
(def clear-all-subs! subs/clear-all-handlers!)
(def subscribe subs/subscribe)
2015-02-25 11:03:02 +00:00
;; -- effects
(def reg-fx fx/register)
(def clear-fx! fx/clear-handler!)
(def clear-all-fx! fx/clear-all-handlers!)
2016-07-13 14:32:36 +00:00
;; -- middleware
2015-02-25 11:03:02 +00:00
(def pure middleware/pure)
(def fx fx/fx)
2015-03-01 20:58:34 +00:00
(def debug middleware/debug)
2015-02-25 11:03:02 +00:00
(def path middleware/path)
2015-03-05 00:32:36 +00:00
(def enrich middleware/enrich)
(def trim-v middleware/trim-v)
(def after middleware/after)
(def on-changes middleware/on-changes)
2016-07-13 14:32:36 +00:00
;; -- Events
(def clear-all-events! events/clear-all-handlers!)
(def clear-event! events/clear-handler!)
2016-07-20 00:35:19 +00:00
;; Registers a pure event handler. Places pure middleware in the correct, LHS position.
(defn reg-event
2016-07-13 14:32:36 +00:00
([id handler]
(events/register-base id pure handler))
([id middleware handler]
(events/register-base id [pure middleware] handler)))
2016-07-20 00:35:19 +00:00
;; Registers an effectful event handler. Places fx middleware in the correct, LHS position.
(defn reg-event-fx
2016-07-13 14:32:36 +00:00
([id handler]
(events/register-base id fx handler))
([id middleware handler]
(events/register-base id [fx middleware] handler)))
2015-04-26 21:38:37 +00:00
;; -- Logging -----
;; Internally, re-frame uses the logging functions: warn, log, error, group and groupEnd
;; By default, these functions map directly to the js/console implementations,
;; but you can override with your own fns (set or subset).
2016-06-03 02:58:06 +00:00
;; Example Usage:
2016-07-07 04:52:13 +00:00
;; (defn my-fn [& args] (post-it-somewhere (apply str args)))
;; (re-frame.core/set-loggers! {:warn my-fn :log my-fn}) ;; I should override the rest of them too.
2016-06-24 12:09:07 +00:00
(def set-loggers! loggers/set-loggers!)
2016-07-19 04:33:52 +00:00
;; If you are writing an extension to re-frame, like perhaps
;; an effeects handler, you may want to use re-frame logging.
;;
;; usage: (console :error "this is bad: " a-variable " and " anotherv)
;; (console :warn "possible breach of containment wall at: " dt)
2016-07-18 09:37:01 +00:00
(def console loggers/console)
2015-05-02 00:46:05 +00:00
;; -- Event Procssing Callbacks
(defn add-post-event-callback
"Registers a callback function 'f'.
2015-12-08 20:40:47 +00:00
f will be called after each dispatched event is procecessed
f will be called with two arguments:
- the event's vector. That which was dispatched orignally.
2015-12-08 20:40:47 +00:00
- the further event queue - what is still to be processed. A PersistentQueue.
This is useful in advanced cases like:
- you are implementing a complex bootstrap pipeline
- you want to create your own handling infrastructure, with perhaps multiple
handlers for the one event, etc. Hook in here.
- libraries providing 'isomorphic javascript' rendering on Nodejs or Nashorn.
"
[f]
(router/add-post-event-callback re-frame.router/event-queue f))
(defn remove-post-event-callback
[f]
(router/remove-post-event-callback re-frame.router/event-queue f))
;; -- Helpful Message
;; Assisting the v0.0.7 -> v0.0.8 tranistion. Remove in v0.0.9
(defn register-handler
[& args]
(console :error "re-frame: \"register-handler\" has been renamed \"reg-event\""))
(defn register-sub
[& args]
(console :error "re-frame: \"register-sub\" has been renamed \"reg-sub-raw\"."))
;; v0.0.8 alpha2 -> alpha3
(defn def-fx [& args] (console :error "re-frame: in v0.0.8-alpha3 \"def-fx\" was renamed \"reg-fx\"."))
(defn def-event [& args] (console :error "re-frame: in v0.0.8-alpha3 \"def-event\" was renamed \"reg-event\"."))
(defn def-sub [& args] (console :error "re-frame: in v0.0.8-alpha3 \"def-sub\" was renamed \"reg-sub\"."))