// Compiled by ClojureScript 1.9.946 {} goog.provide('secretary.core'); goog.require('cljs.core'); goog.require('clojure.string'); goog.require('clojure.walk'); /** * @interface */ secretary.core.IRouteMatches = function(){}; secretary.core.route_matches = (function secretary$core$route_matches(this$,route){ if((!((this$ == null))) && (!((this$.secretary$core$IRouteMatches$route_matches$arity$2 == null)))){ return this$.secretary$core$IRouteMatches$route_matches$arity$2(this$,route); } else { var x__36231__auto__ = (((this$ == null))?null:this$); var m__36232__auto__ = (secretary.core.route_matches[goog.typeOf(x__36231__auto__)]); if(!((m__36232__auto__ == null))){ return m__36232__auto__.call(null,this$,route); } else { var m__36232__auto____$1 = (secretary.core.route_matches["_"]); if(!((m__36232__auto____$1 == null))){ return m__36232__auto____$1.call(null,this$,route); } else { throw cljs.core.missing_protocol.call(null,"IRouteMatches.route-matches",this$); } } } }); /** * @interface */ secretary.core.IRouteValue = function(){}; secretary.core.route_value = (function secretary$core$route_value(this$){ if((!((this$ == null))) && (!((this$.secretary$core$IRouteValue$route_value$arity$1 == null)))){ return this$.secretary$core$IRouteValue$route_value$arity$1(this$); } else { var x__36231__auto__ = (((this$ == null))?null:this$); var m__36232__auto__ = (secretary.core.route_value[goog.typeOf(x__36231__auto__)]); if(!((m__36232__auto__ == null))){ return m__36232__auto__.call(null,this$); } else { var m__36232__auto____$1 = (secretary.core.route_value["_"]); if(!((m__36232__auto____$1 == null))){ return m__36232__auto____$1.call(null,this$); } else { throw cljs.core.missing_protocol.call(null,"IRouteValue.route-value",this$); } } } }); /** * @interface */ secretary.core.IRenderRoute = function(){}; secretary.core.render_route = (function secretary$core$render_route(var_args){ var G__37845 = arguments.length; switch (G__37845) { case 1: return secretary.core.render_route.cljs$core$IFn$_invoke$arity$1((arguments[(0)])); break; case 2: return secretary.core.render_route.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(''))); } }); secretary.core.render_route.cljs$core$IFn$_invoke$arity$1 = (function (this$){ if((!((this$ == null))) && (!((this$.secretary$core$IRenderRoute$render_route$arity$1 == null)))){ return this$.secretary$core$IRenderRoute$render_route$arity$1(this$); } else { var x__36231__auto__ = (((this$ == null))?null:this$); var m__36232__auto__ = (secretary.core.render_route[goog.typeOf(x__36231__auto__)]); if(!((m__36232__auto__ == null))){ return m__36232__auto__.call(null,this$); } else { var m__36232__auto____$1 = (secretary.core.render_route["_"]); if(!((m__36232__auto____$1 == null))){ return m__36232__auto____$1.call(null,this$); } else { throw cljs.core.missing_protocol.call(null,"IRenderRoute.render-route",this$); } } } }); secretary.core.render_route.cljs$core$IFn$_invoke$arity$2 = (function (this$,params){ if((!((this$ == null))) && (!((this$.secretary$core$IRenderRoute$render_route$arity$2 == null)))){ return this$.secretary$core$IRenderRoute$render_route$arity$2(this$,params); } else { var x__36231__auto__ = (((this$ == null))?null:this$); var m__36232__auto__ = (secretary.core.render_route[goog.typeOf(x__36231__auto__)]); if(!((m__36232__auto__ == null))){ return m__36232__auto__.call(null,this$,params); } else { var m__36232__auto____$1 = (secretary.core.render_route["_"]); if(!((m__36232__auto____$1 == null))){ return m__36232__auto____$1.call(null,this$,params); } else { throw cljs.core.missing_protocol.call(null,"IRenderRoute.render-route",this$); } } } }); secretary.core.render_route.cljs$lang$maxFixedArity = 2; secretary.core._STAR_config_STAR_ = cljs.core.atom.call(null,new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"prefix","prefix",-265908465),""], null)); /** * Gets a value for *config* at path. */ secretary.core.get_config = (function secretary$core$get_config(path){ var path__$1 = ((cljs.core.sequential_QMARK_.call(null,path))?path:new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [path], null)); return cljs.core.get_in.call(null,cljs.core.deref.call(null,secretary.core._STAR_config_STAR_),path__$1); }); /** * Associates a value val for *config* at path. */ secretary.core.set_config_BANG_ = (function secretary$core$set_config_BANG_(path,val){ var path__$1 = ((cljs.core.sequential_QMARK_.call(null,path))?path:new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [path], null)); return cljs.core.swap_BANG_.call(null,secretary.core._STAR_config_STAR_,cljs.core.assoc_in,path__$1,val); }); secretary.core.encode = encodeURIComponent; if(typeof secretary.core.encode_pair !== 'undefined'){ } else { /** * Given a key and a value return and encoded key-value pair. */ secretary.core.encode_pair = (function (){var method_table__36553__auto__ = cljs.core.atom.call(null,cljs.core.PersistentArrayMap.EMPTY); var prefer_table__36554__auto__ = cljs.core.atom.call(null,cljs.core.PersistentArrayMap.EMPTY); var method_cache__36555__auto__ = cljs.core.atom.call(null,cljs.core.PersistentArrayMap.EMPTY); var cached_hierarchy__36556__auto__ = cljs.core.atom.call(null,cljs.core.PersistentArrayMap.EMPTY); var hierarchy__36557__auto__ = cljs.core.get.call(null,cljs.core.PersistentArrayMap.EMPTY,new cljs.core.Keyword(null,"hierarchy","hierarchy",-1053470341),cljs.core.get_global_hierarchy.call(null)); return (new cljs.core.MultiFn(cljs.core.symbol.call(null,"secretary.core","encode-pair"),((function (method_table__36553__auto__,prefer_table__36554__auto__,method_cache__36555__auto__,cached_hierarchy__36556__auto__,hierarchy__36557__auto__){ return (function (p__37847){ var vec__37848 = p__37847; var k = cljs.core.nth.call(null,vec__37848,(0),null); var v = cljs.core.nth.call(null,vec__37848,(1),null); if((cljs.core.sequential_QMARK_.call(null,v)) || (cljs.core.set_QMARK_.call(null,v))){ return new cljs.core.Keyword("secretary.core","sequential","secretary.core/sequential",-347187207); } else { if((function (){var or__35498__auto__ = cljs.core.map_QMARK_.call(null,v); if(or__35498__auto__){ return or__35498__auto__; } else { if(!((v == null))){ if(((v.cljs$lang$protocol_mask$partition0$ & (67108864))) || ((cljs.core.PROTOCOL_SENTINEL === v.cljs$core$IRecord$))){ return true; } else { if((!v.cljs$lang$protocol_mask$partition0$)){ return cljs.core.native_satisfies_QMARK_.call(null,cljs.core.IRecord,v); } else { return false; } } } else { return cljs.core.native_satisfies_QMARK_.call(null,cljs.core.IRecord,v); } } })()){ return new cljs.core.Keyword("secretary.core","map","secretary.core/map",-31086646); } else { return null; } } });})(method_table__36553__auto__,prefer_table__36554__auto__,method_cache__36555__auto__,cached_hierarchy__36556__auto__,hierarchy__36557__auto__)) ,new cljs.core.Keyword(null,"default","default",-1987822328),hierarchy__36557__auto__,method_table__36553__auto__,prefer_table__36554__auto__,method_cache__36555__auto__,cached_hierarchy__36556__auto__)); })(); } secretary.core.key_index = (function secretary$core$key_index(var_args){ var G__37854 = arguments.length; switch (G__37854) { case 1: return secretary.core.key_index.cljs$core$IFn$_invoke$arity$1((arguments[(0)])); break; case 2: return secretary.core.key_index.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(''))); } }); secretary.core.key_index.cljs$core$IFn$_invoke$arity$1 = (function (k){ return [cljs.core.str.cljs$core$IFn$_invoke$arity$1(cljs.core.name.call(null,k)),"[]"].join(''); }); secretary.core.key_index.cljs$core$IFn$_invoke$arity$2 = (function (k,index){ return [cljs.core.str.cljs$core$IFn$_invoke$arity$1(cljs.core.name.call(null,k)),"[",cljs.core.str.cljs$core$IFn$_invoke$arity$1(index),"]"].join(''); }); secretary.core.key_index.cljs$lang$maxFixedArity = 2; cljs.core._add_method.call(null,secretary.core.encode_pair,new cljs.core.Keyword("secretary.core","sequential","secretary.core/sequential",-347187207),(function (p__37856){ var vec__37857 = p__37856; var k = cljs.core.nth.call(null,vec__37857,(0),null); var v = cljs.core.nth.call(null,vec__37857,(1),null); var encoded = cljs.core.map_indexed.call(null,((function (vec__37857,k,v){ return (function (i,x){ var pair = ((cljs.core.coll_QMARK_.call(null,x))?new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [secretary.core.key_index.call(null,k,i),x], null):new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [secretary.core.key_index.call(null,k),x], null)); return secretary.core.encode_pair.call(null,pair); });})(vec__37857,k,v)) ,v); return clojure.string.join.call(null,"&",encoded); })); cljs.core._add_method.call(null,secretary.core.encode_pair,new cljs.core.Keyword("secretary.core","map","secretary.core/map",-31086646),(function (p__37860){ var vec__37861 = p__37860; var k = cljs.core.nth.call(null,vec__37861,(0),null); var v = cljs.core.nth.call(null,vec__37861,(1),null); var encoded = cljs.core.map.call(null,((function (vec__37861,k,v){ return (function (p__37864){ var vec__37865 = p__37864; var ik = cljs.core.nth.call(null,vec__37865,(0),null); var iv = cljs.core.nth.call(null,vec__37865,(1),null); return secretary.core.encode_pair.call(null,new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [secretary.core.key_index.call(null,k,cljs.core.name.call(null,ik)),iv], null)); });})(vec__37861,k,v)) ,v); return clojure.string.join.call(null,"&",encoded); })); cljs.core._add_method.call(null,secretary.core.encode_pair,new cljs.core.Keyword(null,"default","default",-1987822328),(function (p__37868){ var vec__37869 = p__37868; var k = cljs.core.nth.call(null,vec__37869,(0),null); var v = cljs.core.nth.call(null,vec__37869,(1),null); return [cljs.core.str.cljs$core$IFn$_invoke$arity$1(cljs.core.name.call(null,k)),cljs.core.str.cljs$core$IFn$_invoke$arity$1("="),cljs.core.str.cljs$core$IFn$_invoke$arity$1(secretary.core.encode.call(null,[cljs.core.str.cljs$core$IFn$_invoke$arity$1(v)].join('')))].join(''); })); /** * Convert a map of query parameters into url encoded string. */ secretary.core.encode_query_params = (function secretary$core$encode_query_params(query_params){ return clojure.string.join.call(null,"&",cljs.core.map.call(null,secretary.core.encode_pair,query_params)); }); /** * Like js/encodeURIComponent excepts ignore slashes. */ secretary.core.encode_uri = (function secretary$core$encode_uri(uri){ return clojure.string.join.call(null,"/",cljs.core.map.call(null,secretary.core.encode,clojure.string.split.call(null,uri,/\//))); }); secretary.core.decode = decodeURIComponent; /** * Parse a value from a serialized query-string key index. If the * index value is empty 0 is returned, if it's a digit it returns the * js/parseInt value, otherwise it returns the extracted index. */ secretary.core.parse_path = (function secretary$core$parse_path(path){ var index_re = /\[([^\]]*)\]*/; var parts = cljs.core.re_seq.call(null,index_re,path); return cljs.core.map.call(null,((function (index_re,parts){ return (function (p__37872){ var vec__37873 = p__37872; var _ = cljs.core.nth.call(null,vec__37873,(0),null); var part = cljs.core.nth.call(null,vec__37873,(1),null); if(cljs.core.empty_QMARK_.call(null,part)){ return (0); } else { if(cljs.core.truth_(cljs.core.re_matches.call(null,/\d+/,part))){ return parseInt(part); } else { return part; } } });})(index_re,parts)) ,parts); }); /** * Return a key path for a serialized query-string entry. * * Ex. * * (key-parse "foo[][a][][b]") * ;; => ("foo" 0 "a" 0 "b") * */ secretary.core.key_parse = (function secretary$core$key_parse(k){ var re = /([^\[\]]+)((?:\[[^\]]*\])*)?/; var vec__37876 = cljs.core.re_matches.call(null,re,k); var _ = cljs.core.nth.call(null,vec__37876,(0),null); var key = cljs.core.nth.call(null,vec__37876,(1),null); var path = cljs.core.nth.call(null,vec__37876,(2),null); var parsed_path = (cljs.core.truth_(path)?secretary.core.parse_path.call(null,path):null); return cljs.core.cons.call(null,key,parsed_path); }); /** * Like assoc-in but numbers in path create vectors instead of maps. * * Ex. * * (assoc-in-query-params {} ["foo" 0] 1) * ;; => {"foo" [1]} * * (assoc-in-query-params {} ["foo" 0 "a"] 1) * ;; => {"foo" [{"a" 1}]} * */ secretary.core.assoc_in_query_params = (function secretary$core$assoc_in_query_params(m,path,v){ var heads = (function (xs){ return cljs.core.map_indexed.call(null,(function (i,_){ return cljs.core.take.call(null,(i + (1)),xs); }),xs); }); var hs = heads.call(null,path); var m__$1 = cljs.core.reduce.call(null,((function (heads,hs){ return (function (m__$1,h){ if((typeof cljs.core.last.call(null,h) === 'number') && (!(cljs.core.vector_QMARK_.call(null,cljs.core.get_in.call(null,m__$1,cljs.core.butlast.call(null,h)))))){ return cljs.core.assoc_in.call(null,m__$1,cljs.core.butlast.call(null,h),cljs.core.PersistentVector.EMPTY); } else { return m__$1; } });})(heads,hs)) ,m,hs); if((cljs.core.last.call(null,path) === (0))){ return cljs.core.update_in.call(null,m__$1,cljs.core.butlast.call(null,path),cljs.core.conj,v); } else { return cljs.core.assoc_in.call(null,m__$1,path,v); } }); /** * Extract a map of query parameters from a query string. */ secretary.core.decode_query_params = (function secretary$core$decode_query_params(query_string){ var parts = clojure.string.split.call(null,query_string,/&/); var params = cljs.core.reduce.call(null,((function (parts){ return (function (m,part){ var vec__37879 = clojure.string.split.call(null,part,/=/,(2)); var k = cljs.core.nth.call(null,vec__37879,(0),null); var v = cljs.core.nth.call(null,vec__37879,(1),null); return secretary.core.assoc_in_query_params.call(null,m,secretary.core.key_parse.call(null,k),secretary.core.decode.call(null,v)); });})(parts)) ,cljs.core.PersistentArrayMap.EMPTY,parts); var params__$1 = clojure.walk.keywordize_keys.call(null,params); return params__$1; }); /** * Like re-matches but result is a always vector. If re does not * capture matches then it will return a vector of [m m] as if it had a * single capture. Other wise it maintains consistent behavior with * re-matches. */ secretary.core.re_matches_STAR_ = (function secretary$core$re_matches_STAR_(re,s){ var ms = cljs.core.re_matches.call(null,re,s); if(cljs.core.truth_(ms)){ if(cljs.core.sequential_QMARK_.call(null,ms)){ return ms; } else { return new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [ms,ms], null); } } else { return null; } }); secretary.core.re_escape_chars = cljs.core.set.call(null,"\\.*+|?()[]{}$^"); secretary.core.re_escape = (function secretary$core$re_escape(s){ return cljs.core.reduce.call(null,(function (s__$1,c){ if(cljs.core.truth_(secretary.core.re_escape_chars.call(null,c))){ return [cljs.core.str.cljs$core$IFn$_invoke$arity$1(s__$1),cljs.core.str.cljs$core$IFn$_invoke$arity$1("\\"),cljs.core.str.cljs$core$IFn$_invoke$arity$1(c)].join(''); } else { return [cljs.core.str.cljs$core$IFn$_invoke$arity$1(s__$1),cljs.core.str.cljs$core$IFn$_invoke$arity$1(c)].join(''); } }),"",s); }); /** * Attempt to lex a single token from s with clauses. Each clause is a * pair of [regexp action] where action is a function. regexp is * expected to begin with ^ and contain a single capture. If the * attempt is successful a vector of [s-without-token (action capture)] * is returned. Otherwise the result is nil. */ secretary.core.lex_STAR_ = (function secretary$core$lex_STAR_(s,clauses){ return cljs.core.some.call(null,(function (p__37882){ var vec__37883 = p__37882; var re = cljs.core.nth.call(null,vec__37883,(0),null); var action = cljs.core.nth.call(null,vec__37883,(1),null); var temp__5457__auto__ = cljs.core.re_find.call(null,re,s); if(cljs.core.truth_(temp__5457__auto__)){ var vec__37886 = temp__5457__auto__; var m = cljs.core.nth.call(null,vec__37886,(0),null); var c = cljs.core.nth.call(null,vec__37886,(1),null); return new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [cljs.core.subs.call(null,s,cljs.core.count.call(null,m)),action.call(null,c)], null); } else { return null; } }),clauses); }); /** * Return a pair of [regex params]. regex is a compiled regular * expression for matching routes. params is a list of route param * names (:*, :id, etc.). */ secretary.core.lex_route = (function secretary$core$lex_route(s,clauses){ var s__$1 = s; var pattern = ""; var params = cljs.core.PersistentVector.EMPTY; while(true){ if(cljs.core.seq.call(null,s__$1)){ var vec__37889 = secretary.core.lex_STAR_.call(null,s__$1,clauses); var s__$2 = cljs.core.nth.call(null,vec__37889,(0),null); var vec__37892 = cljs.core.nth.call(null,vec__37889,(1),null); var r = cljs.core.nth.call(null,vec__37892,(0),null); var p = cljs.core.nth.call(null,vec__37892,(1),null); var G__37895 = s__$2; var G__37896 = [cljs.core.str.cljs$core$IFn$_invoke$arity$1(pattern),cljs.core.str.cljs$core$IFn$_invoke$arity$1(r)].join(''); var G__37897 = cljs.core.conj.call(null,params,p); s__$1 = G__37895; pattern = G__37896; params = G__37897; continue; } else { return new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [cljs.core.re_pattern.call(null,[cljs.core.str.cljs$core$IFn$_invoke$arity$1("^"),cljs.core.str.cljs$core$IFn$_invoke$arity$1(pattern),cljs.core.str.cljs$core$IFn$_invoke$arity$1("$")].join('')),cljs.core.remove.call(null,cljs.core.nil_QMARK_,params)], null); } break; } }); /** * Given a route return an instance of IRouteMatches. */ secretary.core.compile_route = (function secretary$core$compile_route(orig_route){ var clauses = new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [/^\*([^\s.:*\/]*)/,(function (v){ var r = "(.*?)"; var p = ((cljs.core.seq.call(null,v))?cljs.core.keyword.call(null,v):new cljs.core.Keyword(null,"*","*",-1294732318)); return new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [r,p], null); })], null),new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [/^\:([^\s.:*\/]+)/,(function (v){ var r = "([^,;?/]+)"; var p = cljs.core.keyword.call(null,v); return new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [r,p], null); })], null),new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [/^([^:*]+)/,(function (v){ var r = secretary.core.re_escape.call(null,v); return new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [r], null); })], null)], null); var vec__37898 = secretary.core.lex_route.call(null,orig_route,clauses); var re = cljs.core.nth.call(null,vec__37898,(0),null); var params = cljs.core.nth.call(null,vec__37898,(1),null); if(typeof secretary.core.t_secretary$core37901 !== 'undefined'){ } else { /** * @constructor * @implements {secretary.core.IRouteValue} * @implements {cljs.core.IMeta} * @implements {cljs.core.IWithMeta} * @implements {secretary.core.IRouteMatches} */ secretary.core.t_secretary$core37901 = (function (orig_route,clauses,vec__37898,re,params,meta37902){ this.orig_route = orig_route; this.clauses = clauses; this.vec__37898 = vec__37898; this.re = re; this.params = params; this.meta37902 = meta37902; this.cljs$lang$protocol_mask$partition0$ = 393216; this.cljs$lang$protocol_mask$partition1$ = 0; }); secretary.core.t_secretary$core37901.prototype.cljs$core$IWithMeta$_with_meta$arity$2 = ((function (clauses,vec__37898,re,params){ return (function (_37903,meta37902__$1){ var self__ = this; var _37903__$1 = this; return (new secretary.core.t_secretary$core37901(self__.orig_route,self__.clauses,self__.vec__37898,self__.re,self__.params,meta37902__$1)); });})(clauses,vec__37898,re,params)) ; secretary.core.t_secretary$core37901.prototype.cljs$core$IMeta$_meta$arity$1 = ((function (clauses,vec__37898,re,params){ return (function (_37903){ var self__ = this; var _37903__$1 = this; return self__.meta37902; });})(clauses,vec__37898,re,params)) ; secretary.core.t_secretary$core37901.prototype.secretary$core$IRouteValue$ = cljs.core.PROTOCOL_SENTINEL; secretary.core.t_secretary$core37901.prototype.secretary$core$IRouteValue$route_value$arity$1 = ((function (clauses,vec__37898,re,params){ return (function (this$){ var self__ = this; var this$__$1 = this; return self__.orig_route; });})(clauses,vec__37898,re,params)) ; secretary.core.t_secretary$core37901.prototype.secretary$core$IRouteMatches$ = cljs.core.PROTOCOL_SENTINEL; secretary.core.t_secretary$core37901.prototype.secretary$core$IRouteMatches$route_matches$arity$2 = ((function (clauses,vec__37898,re,params){ return (function (_,route){ var self__ = this; var ___$1 = this; var temp__5457__auto__ = secretary.core.re_matches_STAR_.call(null,self__.re,route); if(cljs.core.truth_(temp__5457__auto__)){ var vec__37904 = temp__5457__auto__; var seq__37905 = cljs.core.seq.call(null,vec__37904); var first__37906 = cljs.core.first.call(null,seq__37905); var seq__37905__$1 = cljs.core.next.call(null,seq__37905); var ___$2 = first__37906; var ms = seq__37905__$1; return cljs.core.merge_with.call(null,cljs.core.vector,cljs.core.PersistentArrayMap.EMPTY,cljs.core.partition.call(null,(2),cljs.core.interleave.call(null,self__.params,cljs.core.map.call(null,secretary.core.decode,ms)))); } else { return null; } });})(clauses,vec__37898,re,params)) ; secretary.core.t_secretary$core37901.getBasis = ((function (clauses,vec__37898,re,params){ return (function (){ return new cljs.core.PersistentVector(null, 6, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Symbol(null,"orig-route","orig-route",899103121,null),new cljs.core.Symbol(null,"clauses","clauses",-1199594528,null),new cljs.core.Symbol(null,"vec__37898","vec__37898",-236727605,null),new cljs.core.Symbol(null,"re","re",1869207729,null),new cljs.core.Symbol(null,"params","params",-1943919534,null),new cljs.core.Symbol(null,"meta37902","meta37902",715394286,null)], null); });})(clauses,vec__37898,re,params)) ; secretary.core.t_secretary$core37901.cljs$lang$type = true; secretary.core.t_secretary$core37901.cljs$lang$ctorStr = "secretary.core/t_secretary$core37901"; secretary.core.t_secretary$core37901.cljs$lang$ctorPrWriter = ((function (clauses,vec__37898,re,params){ return (function (this__36169__auto__,writer__36170__auto__,opt__36171__auto__){ return cljs.core._write.call(null,writer__36170__auto__,"secretary.core/t_secretary$core37901"); });})(clauses,vec__37898,re,params)) ; secretary.core.__GT_t_secretary$core37901 = ((function (clauses,vec__37898,re,params){ return (function secretary$core$compile_route_$___GT_t_secretary$core37901(orig_route__$1,clauses__$1,vec__37898__$1,re__$1,params__$1,meta37902){ return (new secretary.core.t_secretary$core37901(orig_route__$1,clauses__$1,vec__37898__$1,re__$1,params__$1,meta37902)); });})(clauses,vec__37898,re,params)) ; } return (new secretary.core.t_secretary$core37901(orig_route,clauses,vec__37898,re,params,cljs.core.PersistentArrayMap.EMPTY)); }); secretary.core.render_route_STAR_ = (function secretary$core$render_route_STAR_(var_args){ var args__36784__auto__ = []; var len__36777__auto___37910 = arguments.length; var i__36778__auto___37911 = (0); while(true){ if((i__36778__auto___37911 < len__36777__auto___37910)){ args__36784__auto__.push((arguments[i__36778__auto___37911])); var G__37912 = (i__36778__auto___37911 + (1)); i__36778__auto___37911 = G__37912; continue; } else { } break; } var argseq__36785__auto__ = ((((1) < args__36784__auto__.length))?(new cljs.core.IndexedSeq(args__36784__auto__.slice((1)),(0),null)):null); return secretary.core.render_route_STAR_.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),argseq__36785__auto__); }); secretary.core.render_route_STAR_.cljs$core$IFn$_invoke$arity$variadic = (function (obj,args){ if(((!((obj == null)))?(((false) || ((cljs.core.PROTOCOL_SENTINEL === obj.secretary$core$IRenderRoute$)))?true:(((!obj.cljs$lang$protocol_mask$partition$))?cljs.core.native_satisfies_QMARK_.call(null,secretary.core.IRenderRoute,obj):false)):cljs.core.native_satisfies_QMARK_.call(null,secretary.core.IRenderRoute,obj))){ return cljs.core.apply.call(null,secretary.core.render_route,obj,args); } else { return null; } }); secretary.core.render_route_STAR_.cljs$lang$maxFixedArity = (1); secretary.core.render_route_STAR_.cljs$lang$applyTo = (function (seq37907){ var G__37908 = cljs.core.first.call(null,seq37907); var seq37907__$1 = cljs.core.next.call(null,seq37907); return secretary.core.render_route_STAR_.cljs$core$IFn$_invoke$arity$variadic(G__37908,seq37907__$1); }); secretary.core._STAR_routes_STAR_ = cljs.core.atom.call(null,cljs.core.PersistentVector.EMPTY); secretary.core.add_route_BANG_ = (function secretary$core$add_route_BANG_(obj,action){ var obj__$1 = ((typeof obj === 'string')?secretary.core.compile_route.call(null,obj):obj); return cljs.core.swap_BANG_.call(null,secretary.core._STAR_routes_STAR_,cljs.core.conj,new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [obj__$1,action], null)); }); secretary.core.remove_route_BANG_ = (function secretary$core$remove_route_BANG_(obj){ return cljs.core.swap_BANG_.call(null,secretary.core._STAR_routes_STAR_,(function (rs){ return cljs.core.filterv.call(null,(function (p__37913){ var vec__37914 = p__37913; var x = cljs.core.nth.call(null,vec__37914,(0),null); var _ = cljs.core.nth.call(null,vec__37914,(1),null); return cljs.core.not_EQ_.call(null,x,obj); }),rs); })); }); secretary.core.reset_routes_BANG_ = (function secretary$core$reset_routes_BANG_(){ return cljs.core.reset_BANG_.call(null,secretary.core._STAR_routes_STAR_,cljs.core.PersistentVector.EMPTY); }); secretary.core.locate_route = (function secretary$core$locate_route(route){ return cljs.core.some.call(null,(function (p__37917){ var vec__37918 = p__37917; var compiled_route = cljs.core.nth.call(null,vec__37918,(0),null); var action = cljs.core.nth.call(null,vec__37918,(1),null); var temp__5457__auto__ = secretary.core.route_matches.call(null,compiled_route,route); if(cljs.core.truth_(temp__5457__auto__)){ var params = temp__5457__auto__; return new cljs.core.PersistentArrayMap(null, 3, [new cljs.core.Keyword(null,"action","action",-811238024),action,new cljs.core.Keyword(null,"params","params",710516235),params,new cljs.core.Keyword(null,"route","route",329891309),compiled_route], null); } else { return null; } }),cljs.core.deref.call(null,secretary.core._STAR_routes_STAR_)); }); /** * Returns original route value as set in defroute when passed a URI path. */ secretary.core.locate_route_value = (function secretary$core$locate_route_value(uri){ return secretary.core.route_value.call(null,new cljs.core.Keyword(null,"route","route",329891309).cljs$core$IFn$_invoke$arity$1(secretary.core.locate_route.call(null,uri))); }); secretary.core.prefix = (function secretary$core$prefix(){ return [cljs.core.str.cljs$core$IFn$_invoke$arity$1(secretary.core.get_config.call(null,new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(null,"prefix","prefix",-265908465)], null)))].join(''); }); secretary.core.uri_without_prefix = (function secretary$core$uri_without_prefix(uri){ return clojure.string.replace.call(null,uri,cljs.core.re_pattern.call(null,["^",cljs.core.str.cljs$core$IFn$_invoke$arity$1(secretary.core.prefix.call(null))].join('')),""); }); /** * Ensures that the uri has a leading slash */ secretary.core.uri_with_leading_slash = (function secretary$core$uri_with_leading_slash(uri){ if(cljs.core._EQ_.call(null,"/",cljs.core.first.call(null,uri))){ return uri; } else { return ["/",cljs.core.str.cljs$core$IFn$_invoke$arity$1(uri)].join(''); } }); /** * Dispatch an action for a given route if it matches the URI path. */ secretary.core.dispatch_BANG_ = (function secretary$core$dispatch_BANG_(uri){ var vec__37921 = clojure.string.split.call(null,secretary.core.uri_without_prefix.call(null,uri),/\?/); var uri_path = cljs.core.nth.call(null,vec__37921,(0),null); var query_string = cljs.core.nth.call(null,vec__37921,(1),null); var uri_path__$1 = secretary.core.uri_with_leading_slash.call(null,uri_path); var query_params = (cljs.core.truth_(query_string)?new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"query-params","query-params",900640534),secretary.core.decode_query_params.call(null,query_string)], null):null); var map__37924 = secretary.core.locate_route.call(null,uri_path__$1); var map__37924__$1 = ((((!((map__37924 == null)))?((((map__37924.cljs$lang$protocol_mask$partition0$ & (64))) || ((cljs.core.PROTOCOL_SENTINEL === map__37924.cljs$core$ISeq$)))?true:false):false))?cljs.core.apply.call(null,cljs.core.hash_map,map__37924):map__37924); var action = cljs.core.get.call(null,map__37924__$1,new cljs.core.Keyword(null,"action","action",-811238024)); var params = cljs.core.get.call(null,map__37924__$1,new cljs.core.Keyword(null,"params","params",710516235)); var action__$1 = (function (){var or__35498__auto__ = action; if(cljs.core.truth_(or__35498__auto__)){ return or__35498__auto__; } else { return cljs.core.identity; } })(); var params__$1 = cljs.core.merge.call(null,params,query_params); return action__$1.call(null,params__$1); }); secretary.core.invalid_params = (function secretary$core$invalid_params(params,validations){ return cljs.core.reduce.call(null,(function (m,p__37926){ var vec__37927 = p__37926; var key = cljs.core.nth.call(null,vec__37927,(0),null); var validation = cljs.core.nth.call(null,vec__37927,(1),null); var value = cljs.core.get.call(null,params,key); if(cljs.core.truth_(cljs.core.re_matches.call(null,validation,value))){ return m; } else { return cljs.core.assoc.call(null,m,key,new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [value,validation], null)); } }),cljs.core.PersistentArrayMap.EMPTY,cljs.core.partition.call(null,(2),validations)); }); secretary.core.params_valid_QMARK_ = (function secretary$core$params_valid_QMARK_(params,validations){ return cljs.core.empty_QMARK_.call(null,secretary.core.invalid_params.call(null,params,validations)); }); goog.object.set(secretary.core.IRouteMatches,"string",true); goog.object.set(secretary.core.route_matches,"string",(function (this$,route){ return secretary.core.route_matches.call(null,secretary.core.compile_route.call(null,this$),route); })); RegExp.prototype.secretary$core$IRouteMatches$ = cljs.core.PROTOCOL_SENTINEL; RegExp.prototype.secretary$core$IRouteMatches$route_matches$arity$2 = (function (this$,route){ var this$__$1 = this; var temp__5457__auto__ = secretary.core.re_matches_STAR_.call(null,this$__$1,route); if(cljs.core.truth_(temp__5457__auto__)){ var vec__37930 = temp__5457__auto__; var seq__37931 = cljs.core.seq.call(null,vec__37930); var first__37932 = cljs.core.first.call(null,seq__37931); var seq__37931__$1 = cljs.core.next.call(null,seq__37931); var _ = first__37932; var ms = seq__37931__$1; return cljs.core.vec.call(null,ms); } else { return null; } }); cljs.core.PersistentVector.prototype.secretary$core$IRouteMatches$ = cljs.core.PROTOCOL_SENTINEL; cljs.core.PersistentVector.prototype.secretary$core$IRouteMatches$route_matches$arity$2 = (function (p__37933,route){ var vec__37934 = p__37933; var seq__37935 = cljs.core.seq.call(null,vec__37934); var first__37936 = cljs.core.first.call(null,seq__37935); var seq__37935__$1 = cljs.core.next.call(null,seq__37935); var route_string = first__37936; var validations = seq__37935__$1; var vec__37937 = this; var seq__37938 = cljs.core.seq.call(null,vec__37937); var first__37939 = cljs.core.first.call(null,seq__37938); var seq__37938__$1 = cljs.core.next.call(null,seq__37938); var route_string__$1 = first__37939; var validations__$1 = seq__37938__$1; var params = secretary.core.route_matches.call(null,secretary.core.compile_route.call(null,route_string__$1),route); if(cljs.core.truth_(secretary.core.params_valid_QMARK_.call(null,params,validations__$1))){ return params; } else { return null; } }); goog.object.set(secretary.core.IRouteValue,"string",true); goog.object.set(secretary.core.route_value,"string",(function (this$){ return secretary.core.route_value.call(null,secretary.core.compile_route.call(null,this$)); })); RegExp.prototype.secretary$core$IRouteValue$ = cljs.core.PROTOCOL_SENTINEL; RegExp.prototype.secretary$core$IRouteValue$route_value$arity$1 = (function (this$){ var this$__$1 = this; return this$__$1; }); cljs.core.PersistentVector.prototype.secretary$core$IRouteValue$ = cljs.core.PROTOCOL_SENTINEL; cljs.core.PersistentVector.prototype.secretary$core$IRouteValue$route_value$arity$1 = (function (p__37940){ var vec__37941 = p__37940; var seq__37942 = cljs.core.seq.call(null,vec__37941); var first__37943 = cljs.core.first.call(null,seq__37942); var seq__37942__$1 = cljs.core.next.call(null,seq__37942); var route_string = first__37943; var validations = seq__37942__$1; var vec__37944 = this; var seq__37945 = cljs.core.seq.call(null,vec__37944); var first__37946 = cljs.core.first.call(null,seq__37945); var seq__37945__$1 = cljs.core.next.call(null,seq__37945); var route_string__$1 = first__37946; var validations__$1 = seq__37945__$1; return cljs.core.vec.call(null,cljs.core.cons.call(null,secretary.core.route_value.call(null,route_string__$1),validations__$1)); }); goog.object.set(secretary.core.IRenderRoute,"string",true); goog.object.set(secretary.core.render_route,"string",(function() { var G__37956 = null; var G__37956__1 = (function (this$){ return secretary.core.render_route.call(null,this$,cljs.core.PersistentArrayMap.EMPTY); }); var G__37956__2 = (function (this$,params){ var map__37947 = params; var map__37947__$1 = ((((!((map__37947 == null)))?((((map__37947.cljs$lang$protocol_mask$partition0$ & (64))) || ((cljs.core.PROTOCOL_SENTINEL === map__37947.cljs$core$ISeq$)))?true:false):false))?cljs.core.apply.call(null,cljs.core.hash_map,map__37947):map__37947); var m = map__37947__$1; var query_params = cljs.core.get.call(null,map__37947__$1,new cljs.core.Keyword(null,"query-params","query-params",900640534)); var a = cljs.core.atom.call(null,m); var path = this$.replace((new RegExp(":[^\\s.:*/]+|\\*[^\\s.:*/]*","g")),((function (map__37947,map__37947__$1,m,query_params,a){ return (function ($1){ var lookup = cljs.core.keyword.call(null,((cljs.core._EQ_.call(null,$1,"*"))?$1:cljs.core.subs.call(null,$1,(1)))); var v = cljs.core.get.call(null,cljs.core.deref.call(null,a),lookup); var replacement = ((cljs.core.sequential_QMARK_.call(null,v))?(function (){ cljs.core.swap_BANG_.call(null,a,cljs.core.assoc,lookup,cljs.core.next.call(null,v)); return secretary.core.encode_uri.call(null,cljs.core.first.call(null,v)); })() :(cljs.core.truth_(v)?secretary.core.encode_uri.call(null,v):$1)); return replacement; });})(map__37947,map__37947__$1,m,query_params,a)) ); var path__$1 = [cljs.core.str.cljs$core$IFn$_invoke$arity$1(secretary.core.get_config.call(null,new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(null,"prefix","prefix",-265908465)], null))),cljs.core.str.cljs$core$IFn$_invoke$arity$1(path)].join(''); var temp__5455__auto__ = (function (){var and__35486__auto__ = query_params; if(cljs.core.truth_(and__35486__auto__)){ return secretary.core.encode_query_params.call(null,query_params); } else { return and__35486__auto__; } })(); if(cljs.core.truth_(temp__5455__auto__)){ var query_string = temp__5455__auto__; return [cljs.core.str.cljs$core$IFn$_invoke$arity$1(path__$1),"?",cljs.core.str.cljs$core$IFn$_invoke$arity$1(query_string)].join(''); } else { return path__$1; } }); G__37956 = function(this$,params){ switch(arguments.length){ case 1: return G__37956__1.call(this,this$); case 2: return G__37956__2.call(this,this$,params); } throw(new Error('Invalid arity: ' + (arguments.length - 1))); }; G__37956.cljs$core$IFn$_invoke$arity$1 = G__37956__1; G__37956.cljs$core$IFn$_invoke$arity$2 = G__37956__2; return G__37956; })() ); cljs.core.PersistentVector.prototype.secretary$core$IRenderRoute$ = cljs.core.PROTOCOL_SENTINEL; cljs.core.PersistentVector.prototype.secretary$core$IRenderRoute$render_route$arity$1 = (function (this$){ var this$__$1 = this; return secretary.core.render_route.call(null,this$__$1,cljs.core.PersistentArrayMap.EMPTY); }); cljs.core.PersistentVector.prototype.secretary$core$IRenderRoute$render_route$arity$2 = (function (p__37949,params){ var vec__37950 = p__37949; var seq__37951 = cljs.core.seq.call(null,vec__37950); var first__37952 = cljs.core.first.call(null,seq__37951); var seq__37951__$1 = cljs.core.next.call(null,seq__37951); var route_string = first__37952; var validations = seq__37951__$1; var vec__37953 = this; var seq__37954 = cljs.core.seq.call(null,vec__37953); var first__37955 = cljs.core.first.call(null,seq__37954); var seq__37954__$1 = cljs.core.next.call(null,seq__37954); var route_string__$1 = first__37955; var validations__$1 = seq__37954__$1; var invalid = secretary.core.invalid_params.call(null,params,validations__$1); if(cljs.core.empty_QMARK_.call(null,invalid)){ return secretary.core.render_route.call(null,route_string__$1,params); } else { throw cljs.core.ex_info.call(null,"Could not build route: invalid params",invalid); } }); //# sourceMappingURL=core.js.map?rel=1517021941569