added github pages support

This commit is contained in:
didier amyot committed 2018-01-27 11:27:33 -05:00
1 parent b14ebdbf63
commit 6ed638a1cc
373 files changed
+185436 -2343

No files matched your search

+155
View File
@@ -0,0 +1,155 @@
(ns accountant.core
"The only namespace in this library."
(:require [clojure.string :as str]
[goog.events :as events]
[goog.history.EventType :as EventType])
(:import goog.history.Event
goog.history.Html5History
goog.Uri))
(defn- transformer-create-url
[token path-prefix location]
(str path-prefix token))
(defn- transformer-retrieve-token
[path-prefix location]
(str (.-pathname location) (.-search location) (.-hash location)))
(defonce history (let [transformer (goog.history.Html5History.TokenTransformer.)]
(set! (.. transformer -retrieveToken) transformer-retrieve-token)
(set! (.. transformer -createUrl) transformer-create-url)
(Html5History. js/window transformer)))
(defn- dispatch-on-navigate
[history nav-handler]
(events/listen
history
EventType/NAVIGATE
(fn [e]
(let [token (.-token e)]
(nav-handler token)))))
(defn- get-href-attribute
"Given a DOM node, if it is an element node, return its href attribute.
Otherwise, return nil."
[node]
(when (and node (= (.-nodeType node) js/Node.ELEMENT_NODE))
(.getAttribute node "href")))
(defn- find-href-node
"Given a DOM element that may or may not be a link, traverse up the DOM tree
to see if any of its parents are links. If so, return the href content, if
it does not have an explicit `data-trigger` attribute to signify a non-navigational
link element."
[e]
(let [href (get-href-attribute e)
attrs (.-attributes e)
navigation-link? (and href attrs (-> attrs (aget "data-trigger") not))]
(if navigation-link?
e
(when-let [parent (.-parentNode e)]
(recur parent)))))
(defn- uri->query [uri]
(let [query (.getQuery uri)]
(when-not (empty? query)
(str "?" query))))
(defn- uri->fragment [uri]
(let [fragment (.getFragment uri)]
(when-not (empty? fragment)
(str "#" fragment))))
(defn- prevent-reload-on-known-path
"Create a click handler that blocks page reloads for known routes"
[history path-exists?]
(events/listen
js/document
"click"
(fn [e]
(let [target (.-target e)
button (.-button e)
meta-key (.-metaKey e)
alt-key (.-altKey e)
ctrl-key (.-ctrlKey e)
shift-key (.-shiftKey e)
any-key (or meta-key alt-key ctrl-key shift-key)
href-node (find-href-node target)
href (when href-node (.-href href-node))
link-target (when href-node (.-target href-node))
uri (.parse Uri href)
path (.getPath uri)
query (uri->query uri)
fragment (uri->fragment uri)
relative-href (str path query fragment)
title (.-title target)
host (.getDomain uri)
port (.getPort uri)
current-host js/window.location.hostname
current-port js/window.location.port
loc js/window.location
current-relative-href (str (.-pathname loc) (.-query loc) (.-hash loc))]
(when (and (not any-key)
(#{"" "_self"} link-target)
(= button 0)
(= host current-host)
(or (not port)
(= (str port) (str current-port)))
(path-exists? path))
(when (not= current-relative-href relative-href) ;; do not add duplicate html5 history state
(. history (setToken relative-href title)))
(.preventDefault e))))))
(defonce nav-handler nil)
(defonce path-exists? nil)
(defn configure-navigation!
"Create and configure HTML5 history navigation.
nav-handler: a fn of one argument, a path. Called when we've decided
to navigate to another page. You'll want to make your app draw the
new page here.
path-exists?: a fn of one argument, a path. Return truthy if this path is handled by the SPA"
[{:keys [nav-handler path-exists?]}]
(.setUseFragment history false)
(.setPathPrefix history "")
(.setEnabled history true)
(set! accountant.core/nav-handler nav-handler)
(set! accountant.core/path-exists? path-exists?)
(dispatch-on-navigate history nav-handler)
(prevent-reload-on-known-path history path-exists?))
(defn map->params [query]
(let [params (map #(name %) (keys query))
values (vals query)
pairs (partition 2 (interleave params values))]
(str/join "&" (map #(str/join "=" %) pairs))))
(defn navigate!
"add a browser history entry. updates window/location"
([route] (navigate! route {}))
([route query]
(if nav-handler
(let [token (.getToken history)
old-route (first (str/split token "?"))
query-string (map->params (reduce-kv (fn [valid k v]
(if v
(assoc valid k v)
valid)) {} query))
with-params (if (empty? query-string)
route
(str route "?" query-string))]
(if (= old-route route)
(. history (replaceToken with-params))
(. history (setToken with-params))))
(js/console.error "can't navigate! until configure-navigation! called"))))
(defn dispatch-current! []
"Dispatch current URI path."
(let [path (-> js/window .-location .-pathname)
query (-> js/window .-location .-search)
hash (-> js/window .-location .-hash)]
(if nav-handler
(nav-handler (str path query hash))
(js/console.error "can't dispatch-current until configure-navigation! called"))))
@@ -0,0 +1 @@
{:rename-macros {}, :renames {}, :externs {window {location {hostname {}, port {}, pathname {}, query {}, hash {}, search {}}}, Node {ELEMENT_NODE {}}, document {}, Error {}, console {error {}}}, :use-macros {}, :excludes #{}, :name accountant.core, :imports {Event goog.history.Event, Html5History goog.history.Html5History, Uri goog.Uri}, :requires {str clojure.string, clojure.string clojure.string, events goog.events, goog.events goog.events, EventType goog.history.EventType, goog.history.EventType goog.history.EventType, Event goog.history.Event, Html5History goog.history.Html5History, Uri goog.Uri}, :cljs.spec/speced-vars [], :uses nil, :defs {nav-handler {:name accountant.core/nav-handler, :file "target/cljsbuild/public/js/out/accountant/core.cljs", :line 103, :column 1, :end-line 103, :end-column 21, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/accountant/core.cljs", :line 103, :column 10, :end-line 103, :end-column 21}, :tag clj-nil}, transformer-create-url {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/accountant/core.cljs", :line 10, :column 8, :end-line 10, :end-column 30, :private true, :arglists (quote ([token path-prefix location]))}, :private true, :name accountant.core/transformer-create-url, :variadic false, :file "target/cljsbuild/public/js/out/accountant/core.cljs", :end-column 30, :method-params ([token path-prefix location]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :line 10, :end-line 10, :max-fixed-arity 3, :fn-var true, :arglists (quote ([token path-prefix location]))}, uri->fragment {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/accountant/core.cljs", :line 58, :column 8, :end-line 58, :end-column 21, :private true, :arglists (quote ([uri]))}, :private true, :name accountant.core/uri->fragment, :variadic false, :file "target/cljsbuild/public/js/out/accountant/core.cljs", :end-column 21, :method-params ([uri]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :line 58, :end-line 58, :max-fixed-arity 1, :fn-var true, :arglists (quote ([uri]))}, map->params {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/accountant/core.cljs", :line 123, :column 7, :end-line 123, :end-column 18, :arglists (quote ([query]))}, :name accountant.core/map->params, :variadic false, :file "target/cljsbuild/public/js/out/accountant/core.cljs", :end-column 18, :method-params ([query]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :line 123, :end-line 123, :max-fixed-arity 1, :fn-var true, :arglists (quote ([query]))}, path-exists? {:name accountant.core/path-exists?, :file "target/cljsbuild/public/js/out/accountant/core.cljs", :line 104, :column 1, :end-line 104, :end-column 22, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/accountant/core.cljs", :line 104, :column 10, :end-line 104, :end-column 22}, :tag clj-nil}, transformer-retrieve-token {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/accountant/core.cljs", :line 14, :column 8, :end-line 14, :end-column 34, :private true, :arglists (quote ([path-prefix location]))}, :private true, :name accountant.core/transformer-retrieve-token, :variadic false, :file "target/cljsbuild/public/js/out/accountant/core.cljs", :end-column 34, :method-params ([path-prefix location]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :line 14, :end-line 14, :max-fixed-arity 2, :fn-var true, :arglists (quote ([path-prefix location]))}, get-href-attribute {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/accountant/core.cljs", :line 32, :column 8, :end-line 32, :end-column 26, :private true, :arglists (quote ([node])), :doc "Given a DOM node, if it is an element node, return its href attribute.\n Otherwise, return nil."}, :private true, :name accountant.core/get-href-attribute, :variadic false, :file "target/cljsbuild/public/js/out/accountant/core.cljs", :end-column 26, :method-params ([node]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :line 32, :end-line 32, :max-fixed-arity 1, :fn-var true, :arglists (quote ([node])), :doc "Given a DOM node, if it is an element node, return its href attribute.\n Otherwise, return nil."}, uri->query {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/accountant/core.cljs", :line 53, :column 8, :end-line 53, :end-column 18, :private true, :arglists (quote ([uri]))}, :private true, :name accountant.core/uri->query, :variadic false, :file "target/cljsbuild/public/js/out/accountant/core.cljs", :end-column 18, :method-params ([uri]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :line 53, :end-line 53, :max-fixed-arity 1, :fn-var true, :arglists (quote ([uri]))}, history {:name accountant.core/history, :file "target/cljLine truncated
+294
View File
@@ -0,0 +1,294 @@
// Compiled by ClojureScript 1.9.946 {}
goog.provide('accountant.core');
goog.require('cljs.core');
goog.require('clojure.string');
goog.require('goog.events');
goog.require('goog.history.EventType');
goog.require('goog.history.Event');
goog.require('goog.history.Html5History');
goog.require('goog.Uri');
accountant.core.transformer_create_url = (function accountant$core$transformer_create_url(token,path_prefix,location){
return [cljs.core.str.cljs$core$IFn$_invoke$arity$1(path_prefix),cljs.core.str.cljs$core$IFn$_invoke$arity$1(token)].join('');
});
accountant.core.transformer_retrieve_token = (function accountant$core$transformer_retrieve_token(path_prefix,location){
return [cljs.core.str.cljs$core$IFn$_invoke$arity$1(location.pathname),cljs.core.str.cljs$core$IFn$_invoke$arity$1(location.search),cljs.core.str.cljs$core$IFn$_invoke$arity$1(location.hash)].join('');
});
if(typeof accountant.core.history !== 'undefined'){
} else {
accountant.core.history = (function (){var transformer = (new goog.history.Html5History.TokenTransformer());
transformer.retrieveToken = accountant.core.transformer_retrieve_token;
transformer.createUrl = accountant.core.transformer_create_url;
return (new goog.history.Html5History(window,transformer));
})();
}
accountant.core.dispatch_on_navigate = (function accountant$core$dispatch_on_navigate(history,nav_handler){
return goog.events.listen(history,goog.history.EventType.NAVIGATE,(function (e){
var token = e.token;
return nav_handler.call(null,token);
}));
});
/**
* Given a DOM node, if it is an element node, return its href attribute.
* Otherwise, return nil.
*/
accountant.core.get_href_attribute = (function accountant$core$get_href_attribute(node){
if(cljs.core.truth_((function (){var and__35486__auto__ = node;
if(cljs.core.truth_(and__35486__auto__)){
return cljs.core._EQ_.call(null,node.nodeType,Node.ELEMENT_NODE);
} else {
return and__35486__auto__;
}
})())){
return node.getAttribute("href");
} else {
return null;
}
});
/**
* Given a DOM element that may or may not be a link, traverse up the DOM tree
* to see if any of its parents are links. If so, return the href content, if
* it does not have an explicit `data-trigger` attribute to signify a non-navigational
* link element.
*/
accountant.core.find_href_node = (function accountant$core$find_href_node(e){
while(true){
var href = accountant.core.get_href_attribute.call(null,e);
var attrs = e.attributes;
var navigation_link_QMARK_ = (function (){var and__35486__auto__ = href;
if(cljs.core.truth_(and__35486__auto__)){
var and__35486__auto____$1 = attrs;
if(cljs.core.truth_(and__35486__auto____$1)){
return cljs.core.not.call(null,(attrs["data-trigger"]));
} else {
return and__35486__auto____$1;
}
} else {
return and__35486__auto__;
}
})();
if(cljs.core.truth_(navigation_link_QMARK_)){
return e;
} else {
var temp__5457__auto__ = e.parentNode;
if(cljs.core.truth_(temp__5457__auto__)){
var parent = temp__5457__auto__;
var G__37812 = parent;
e = G__37812;
continue;
} else {
return null;
}
}
break;
}
});
accountant.core.uri__GT_query = (function accountant$core$uri__GT_query(uri){
var query = uri.getQuery();
if(cljs.core.empty_QMARK_.call(null,query)){
return null;
} else {
return ["?",cljs.core.str.cljs$core$IFn$_invoke$arity$1(query)].join('');
}
});
accountant.core.uri__GT_fragment = (function accountant$core$uri__GT_fragment(uri){
var fragment = uri.getFragment();
if(cljs.core.empty_QMARK_.call(null,fragment)){
return null;
} else {
return ["#",cljs.core.str.cljs$core$IFn$_invoke$arity$1(fragment)].join('');
}
});
/**
* Create a click handler that blocks page reloads for known routes
*/
accountant.core.prevent_reload_on_known_path = (function accountant$core$prevent_reload_on_known_path(history,path_exists_QMARK_){
return goog.events.listen(document,"click",(function (e){
var target = e.target;
var button = e.button;
var meta_key = e.metaKey;
var alt_key = e.altKey;
var ctrl_key = e.ctrlKey;
var shift_key = e.shiftKey;
var any_key = (function (){var or__35498__auto__ = meta_key;
if(cljs.core.truth_(or__35498__auto__)){
return or__35498__auto__;
} else {
var or__35498__auto____$1 = alt_key;
if(cljs.core.truth_(or__35498__auto____$1)){
return or__35498__auto____$1;
} else {
var or__35498__auto____$2 = ctrl_key;
if(cljs.core.truth_(or__35498__auto____$2)){
return or__35498__auto____$2;
} else {
return shift_key;
}
}
}
})();
var href_node = accountant.core.find_href_node.call(null,target);
var href = (cljs.core.truth_(href_node)?href_node.href:null);
var link_target = (cljs.core.truth_(href_node)?href_node.target:null);
var uri = goog.Uri.parse(href);
var path = uri.getPath();
var query = accountant.core.uri__GT_query.call(null,uri);
var fragment = accountant.core.uri__GT_fragment.call(null,uri);
var relative_href = [cljs.core.str.cljs$core$IFn$_invoke$arity$1(path),cljs.core.str.cljs$core$IFn$_invoke$arity$1(query),cljs.core.str.cljs$core$IFn$_invoke$arity$1(fragment)].join('');
var title = target.title;
var host = uri.getDomain();
var port = uri.getPort();
var current_host = window.location.hostname;
var current_port = window.location.port;
var loc = window.location;
var current_relative_href = [cljs.core.str.cljs$core$IFn$_invoke$arity$1(loc.pathname),cljs.core.str.cljs$core$IFn$_invoke$arity$1(loc.query),cljs.core.str.cljs$core$IFn$_invoke$arity$1(loc.hash)].join('');
if(cljs.core.truth_((function (){var and__35486__auto__ = cljs.core.not.call(null,any_key);
if(and__35486__auto__){
var and__35486__auto____$1 = new cljs.core.PersistentHashSet(null, new cljs.core.PersistentArrayMap(null, 2, ["",null,"_self",null], null), null).call(null,link_target);
if(cljs.core.truth_(and__35486__auto____$1)){
var and__35486__auto____$2 = cljs.core._EQ_.call(null,button,(0));
if(and__35486__auto____$2){
var and__35486__auto____$3 = cljs.core._EQ_.call(null,host,current_host);
if(and__35486__auto____$3){
var and__35486__auto____$4 = (cljs.core.not.call(null,port)) || (cljs.core._EQ_.call(null,[cljs.core.str.cljs$core$IFn$_invoke$arity$1(port)].join(''),[cljs.core.str.cljs$core$IFn$_invoke$arity$1(current_port)].join('')));
if(and__35486__auto____$4){
return path_exists_QMARK_.call(null,path);
} else {
return and__35486__auto____$4;
}
} else {
return and__35486__auto____$3;
}
} else {
return and__35486__auto____$2;
}
} else {
return and__35486__auto____$1;
}
} else {
return and__35486__auto__;
}
})())){
if(cljs.core.not_EQ_.call(null,current_relative_href,relative_href)){
history.setToken(relative_href,title);
} else {
}
return e.preventDefault();
} else {
return null;
}
}));
});
if(typeof accountant.core.nav_handler !== 'undefined'){
} else {
accountant.core.nav_handler = null;
}
if(typeof accountant.core.path_exists_QMARK_ !== 'undefined'){
} else {
accountant.core.path_exists_QMARK_ = null;
}
/**
* Create and configure HTML5 history navigation.
*
* nav-handler: a fn of one argument, a path. Called when we've decided
* to navigate to another page. You'll want to make your app draw the
* new page here.
*
* path-exists?: a fn of one argument, a path. Return truthy if this path is handled by the SPA
*/
accountant.core.configure_navigation_BANG_ = (function accountant$core$configure_navigation_BANG_(p__37813){
var map__37814 = p__37813;
var map__37814__$1 = ((((!((map__37814 == null)))?((((map__37814.cljs$lang$protocol_mask$partition0$ & (64))) || ((cljs.core.PROTOCOL_SENTINEL === map__37814.cljs$core$ISeq$)))?true:false):false))?cljs.core.apply.call(null,cljs.core.hash_map,map__37814):map__37814);
var nav_handler = cljs.core.get.call(null,map__37814__$1,new cljs.core.Keyword(null,"nav-handler","nav-handler",2039495484));
var path_exists_QMARK_ = cljs.core.get.call(null,map__37814__$1,new cljs.core.Keyword(null,"path-exists?","path-exists?",1473384514));
accountant.core.history.setUseFragment(false);
accountant.core.history.setPathPrefix("");
accountant.core.history.setEnabled(true);
accountant.core.nav_handler = nav_handler;
accountant.core.path_exists_QMARK_ = path_exists_QMARK_;
accountant.core.dispatch_on_navigate.call(null,accountant.core.history,nav_handler);
return accountant.core.prevent_reload_on_known_path.call(null,accountant.core.history,path_exists_QMARK_);
});
accountant.core.map__GT_params = (function accountant$core$map__GT_params(query){
var params = cljs.core.map.call(null,(function (p1__37816_SHARP_){
return cljs.core.name.call(null,p1__37816_SHARP_);
}),cljs.core.keys.call(null,query));
var values = cljs.core.vals.call(null,query);
var pairs = cljs.core.partition.call(null,(2),cljs.core.interleave.call(null,params,values));
return clojure.string.join.call(null,"&",cljs.core.map.call(null,((function (params,values,pairs){
return (function (p1__37817_SHARP_){
return clojure.string.join.call(null,"=",p1__37817_SHARP_);
});})(params,values,pairs))
,pairs));
});
/**
* add a browser history entry. updates window/location
*/
accountant.core.navigate_BANG_ = (function accountant$core$navigate_BANG_(var_args){
var G__37819 = arguments.length;
switch (G__37819) {
case 1:
return accountant.core.navigate_BANG_.cljs$core$IFn$_invoke$arity$1((arguments[(0)]));
break;
case 2:
return accountant.core.navigate_BANG_.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
break;
default:
throw (new Error(["Invalid arity: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));
}
});
accountant.core.navigate_BANG_.cljs$core$IFn$_invoke$arity$1 = (function (route){
return accountant.core.navigate_BANG_.call(null,route,cljs.core.PersistentArrayMap.EMPTY);
});
accountant.core.navigate_BANG_.cljs$core$IFn$_invoke$arity$2 = (function (route,query){
if(cljs.core.truth_(accountant.core.nav_handler)){
var token = accountant.core.history.getToken();
var old_route = cljs.core.first.call(null,clojure.string.split.call(null,token,"?"));
var query_string = accountant.core.map__GT_params.call(null,cljs.core.reduce_kv.call(null,((function (token,old_route){
return (function (valid,k,v){
if(cljs.core.truth_(v)){
return cljs.core.assoc.call(null,valid,k,v);
} else {
return valid;
}
});})(token,old_route))
,cljs.core.PersistentArrayMap.EMPTY,query));
var with_params = ((cljs.core.empty_QMARK_.call(null,query_string))?route:[cljs.core.str.cljs$core$IFn$_invoke$arity$1(route),"?",cljs.core.str.cljs$core$IFn$_invoke$arity$1(query_string)].join(''));
if(cljs.core._EQ_.call(null,old_route,route)){
return accountant.core.history.replaceToken(with_params);
} else {
return accountant.core.history.setToken(with_params);
}
} else {
return console.error("can't navigate! until configure-navigation! called");
}
});
accountant.core.navigate_BANG_.cljs$lang$maxFixedArity = 2;
accountant.core.dispatch_current_BANG_ = (function accountant$core$dispatch_current_BANG_(){
var path = window.location.pathname;
var query = window.location.search;
var hash = window.location.hash;
if(cljs.core.truth_(accountant.core.nav_handler)){
return accountant.core.nav_handler.call(null,[cljs.core.str.cljs$core$IFn$_invoke$arity$1(path),cljs.core.str.cljs$core$IFn$_invoke$arity$1(query),cljs.core.str.cljs$core$IFn$_invoke$arity$1(hash)].join(''));
} else {
return console.error("can't dispatch-current until configure-navigation! called");
}
});
//# sourceMappingURL=core.js.map?rel=1517021941432
+1
View File
@@ -0,0 +1 @@
{"version":3,"file":"\/home\/didier\/clojupyter\/website\/target\/cljsbuild\/public\/js\/out\/accountant\/core.js","sources":["core.cljs?rel=1517021941433"],"lineCount":294,"mappings":"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\/DAAMD,0EAEFE;AAFJ,AAEW,sDAAA,\/CAACF,yCAAUE;;;AAFtB,AAAA,+DAAA,\/DAAMF,0EAGFE,MAAMzD;AAHV,AAIG,oBAAI+B;AACF,IAAM5D,QAAM,AAAWI;IACjBmF,YAAU,AAACC,0BAAM,qCAAA,rCAACC,+BAAUzF;IAC5B0F,eAAa,AAACrB,yCAAY,AAACsB,8BAAU;kBAAKC,MAAMC,EAAEC;AAAb,AACE,oBAAIA;AACF,OAACC,0BAAMH,MAAMC,EAAEC;;AACfF;;;CAHf,mCAG0B\/D;IACpDmE,cAAY,EAAI,AAAClE,iCAAO4D,eACVJ,MACA,oDAAA,PAAKA,uDAAUI;AARnC,AASE,GAAI,AAACxE,yBAAEqE,UAAUD;AACf,OAAGlF,qCAAsB4F;;AACzB,OAAG5F,iCAAkB4F;;;AACzB,qBAAA,dAACC;;;;AAjBN,AAAA,yDAAA,zDAAMb;;AAAN,AAmBA,yCAAA,zCAAMc;AAAN,AAAA;AAEE,IAAMnD,OAAK,AAAA,AAAIvC;IACTqB,QAAM,AAAA,AAAIrB;IACV2F,OAAK,AAAA,AAAI3F;AAFf,AAGE,oBAAIoD;AACF,OAACA,sCAAY,6CAAKb,kDAAKlB,mDAAMsE;;AAC7B,qBAAA,dAACF","names":["accountant.core\/transformer-create-url","token","path-prefix","location","accountant.core\/transformer-retrieve-token","accountant.core\/history","transformer","goog\/history.Html5History.TokenTransformer","goog\/history.Html5History","js\/window","accountant.core\/dispatch-on-navigate","history","nav-handler","goog.events\/listen","goog.history.EventType\/NAVIGATE","e","accountant.core\/get-href-attribute","node","and__35486__auto__","cljs.core\/=","js\/Node.ELEMENT_NODE","accountant.core\/find-href-node","href","attrs","navigation-link?","cljs.core\/not","temp__5457__auto__","parent","accountant.core\/uri->query","uri","query","cljs.core\/empty?","accountant.core\/uri->fragment","fragment","accountant.core\/prevent-reloadLine truncated