git.fiddlerwoaroof.com
Raw Blame History
// Compiled by ClojureScript 1.9.293 {}
goog.provide('javelin.core');
goog.require('cljs.core');
goog.require('tailrecursion.priority_map');




javelin.core._STAR_tx_STAR_ = null;
javelin.core.last_rank = cljs.core.atom.call(null,(0));
/**
 * Like tree-seq but traversal is breadth-first instead of depth-first.
 */
javelin.core.bf_seq = (function javelin$core$bf_seq(branch_QMARK_,children,root){
var walk = (function javelin$core$bf_seq_$_walk(queue){
var temp__4657__auto__ = cljs.core.peek.call(null,queue);
if(cljs.core.truth_(temp__4657__auto__)){
var node = temp__4657__auto__;
return (new cljs.core.LazySeq(null,((function (node,temp__4657__auto__){
return (function (){
return cljs.core.cons.call(null,node,javelin$core$bf_seq_$_walk.call(null,cljs.core.into.call(null,cljs.core.pop.call(null,queue),(cljs.core.truth_(branch_QMARK_.call(null,node))?children.call(null,node):null))));
});})(node,temp__4657__auto__))
,null,null));
} else {
return null;
}
});
return walk.call(null,cljs.core.conj.call(null,cljs.core.PersistentQueue.EMPTY,root));
});
javelin.core.propagate_STAR_ = (function javelin$core$propagate_STAR_(pri_map){
while(true){
var temp__4657__auto__ = cljs.core.first.call(null,cljs.core.peek.call(null,pri_map));
if(cljs.core.truth_(temp__4657__auto__)){
var next = temp__4657__auto__;
var popq = cljs.core.pop.call(null,pri_map);
var old = next.prev;
var new$ = (function (){var temp__4655__auto__ = next.thunk;
if(cljs.core.truth_(temp__4655__auto__)){
var f = temp__4655__auto__;
return f.call(null);
} else {
return next.state;
}
})();
var diff_QMARK_ = cljs.core.not_EQ_.call(null,new$,old);
if(diff_QMARK_){
next.prev = new$;

cljs.core._notify_watches.call(null,next,old,new$);
} else {
}

var G__26943 = ((!(diff_QMARK_))?popq:cljs.core.reduce.call(null,((function (pri_map,popq,old,new$,diff_QMARK_,next,temp__4657__auto__){
return (function (p1__26941_SHARP_,p2__26942_SHARP_){
return cljs.core.assoc.call(null,p1__26941_SHARP_,p2__26942_SHARP_,p2__26942_SHARP_.rank);
});})(pri_map,popq,old,new$,diff_QMARK_,next,temp__4657__auto__))
,popq,next.sinks));
pri_map = G__26943;
continue;
} else {
return null;
}
break;
}
});
javelin.core.deref_STAR_ = (function javelin$core$deref_STAR_(x){
if(cljs.core.truth_(javelin.core.cell_QMARK_.call(null,x))){
return cljs.core.deref.call(null,x);
} else {
return x;
}
});
javelin.core.next_rank = (function javelin$core$next_rank(){
return cljs.core.swap_BANG_.call(null,javelin.core.last_rank,cljs.core.inc);
});
javelin.core.cell__GT_pm = (function javelin$core$cell__GT_pm(c){
return tailrecursion.priority_map.priority_map.call(null,c,c.rank);
});
javelin.core.add_sync_BANG_ = (function javelin$core$add_sync_BANG_(c){
return cljs.core.swap_BANG_.call(null,javelin.core._STAR_tx_STAR_,cljs.core.assoc,c,c.rank);
});
javelin.core.safe_nth = (function javelin$core$safe_nth(c,i){
try{return cljs.core.nth.call(null,c,i);
}catch (e26945){if((e26945 instanceof Error)){
var _ = e26945;
return null;
} else {
throw e26945;

}
}});
javelin.core.propagate_BANG_ = (function javelin$core$propagate_BANG_(c){
if(cljs.core.truth_(javelin.core._STAR_tx_STAR_)){
var G__26948 = c;
javelin.core.add_sync_BANG_.call(null,G__26948);

return G__26948;
} else {
var G__26949 = c;
javelin.core.propagate_STAR_.call(null,javelin.core.cell__GT_pm.call(null,G__26949));

return G__26949;
}
});
javelin.core.destroy_cell_BANG_ = (function javelin$core$destroy_cell_BANG_(var_args){
var args__26159__auto__ = [];
var len__26152__auto___26960 = arguments.length;
var i__26153__auto___26961 = (0);
while(true){
if((i__26153__auto___26961 < len__26152__auto___26960)){
args__26159__auto__.push((arguments[i__26153__auto___26961]));

var G__26962 = (i__26153__auto___26961 + (1));
i__26153__auto___26961 = G__26962;
continue;
} else {
}
break;
}

var argseq__26160__auto__ = ((((1) < args__26159__auto__.length))?(new cljs.core.IndexedSeq(args__26159__auto__.slice((1)),(0),null)):null);
return javelin.core.destroy_cell_BANG_.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),argseq__26160__auto__);
});

javelin.core.destroy_cell_BANG_.cljs$core$IFn$_invoke$arity$variadic = (function (this$,p__26952){
var vec__26953 = p__26952;
var keep_watches_QMARK_ = cljs.core.nth.call(null,vec__26953,(0),null);
var srcs = this$.sources;
this$.sources = cljs.core.PersistentVector.EMPTY;

this$.update = null;

this$.thunk = null;

if(cljs.core.truth_(keep_watches_QMARK_)){
} else {
this$.watches = cljs.core.PersistentArrayMap.EMPTY;
}

var seq__26956 = cljs.core.seq.call(null,srcs);
var chunk__26957 = null;
var count__26958 = (0);
var i__26959 = (0);
while(true){
if((i__26959 < count__26958)){
var src = cljs.core._nth.call(null,chunk__26957,i__26959);
if(cljs.core.truth_(javelin.core.cell_QMARK_.call(null,src))){
src.sinks = cljs.core.disj.call(null,src.sinks,this$);
} else {
}

var G__26963 = seq__26956;
var G__26964 = chunk__26957;
var G__26965 = count__26958;
var G__26966 = (i__26959 + (1));
seq__26956 = G__26963;
chunk__26957 = G__26964;
count__26958 = G__26965;
i__26959 = G__26966;
continue;
} else {
var temp__4657__auto__ = cljs.core.seq.call(null,seq__26956);
if(temp__4657__auto__){
var seq__26956__$1 = temp__4657__auto__;
if(cljs.core.chunked_seq_QMARK_.call(null,seq__26956__$1)){
var c__25858__auto__ = cljs.core.chunk_first.call(null,seq__26956__$1);
var G__26967 = cljs.core.chunk_rest.call(null,seq__26956__$1);
var G__26968 = c__25858__auto__;
var G__26969 = cljs.core.count.call(null,c__25858__auto__);
var G__26970 = (0);
seq__26956 = G__26967;
chunk__26957 = G__26968;
count__26958 = G__26969;
i__26959 = G__26970;
continue;
} else {
var src = cljs.core.first.call(null,seq__26956__$1);
if(cljs.core.truth_(javelin.core.cell_QMARK_.call(null,src))){
src.sinks = cljs.core.disj.call(null,src.sinks,this$);
} else {
}

var G__26971 = cljs.core.next.call(null,seq__26956__$1);
var G__26972 = null;
var G__26973 = (0);
var G__26974 = (0);
seq__26956 = G__26971;
chunk__26957 = G__26972;
count__26958 = G__26973;
i__26959 = G__26974;
continue;
}
} else {
return null;
}
}
break;
}
});

javelin.core.destroy_cell_BANG_.cljs$lang$maxFixedArity = (1);

javelin.core.destroy_cell_BANG_.cljs$lang$applyTo = (function (seq26950){
var G__26951 = cljs.core.first.call(null,seq26950);
var seq26950__$1 = cljs.core.next.call(null,seq26950);
return javelin.core.destroy_cell_BANG_.cljs$core$IFn$_invoke$arity$variadic(G__26951,seq26950__$1);
});

javelin.core.set_formula_BANG_ = (function javelin$core$set_formula_BANG_(var_args){
var args__26159__auto__ = [];
var len__26152__auto___26995 = arguments.length;
var i__26153__auto___26996 = (0);
while(true){
if((i__26153__auto___26996 < len__26152__auto___26995)){
args__26159__auto__.push((arguments[i__26153__auto___26996]));

var G__26997 = (i__26153__auto___26996 + (1));
i__26153__auto___26996 = G__26997;
continue;
} else {
}
break;
}

var argseq__26160__auto__ = ((((1) < args__26159__auto__.length))?(new cljs.core.IndexedSeq(args__26159__auto__.slice((1)),(0),null)):null);
return javelin.core.set_formula_BANG_.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),argseq__26160__auto__);
});

javelin.core.set_formula_BANG_.cljs$core$IFn$_invoke$arity$variadic = (function (this$,p__26979){
var vec__26980 = p__26979;
var f = cljs.core.nth.call(null,vec__26980,(0),null);
var sources = cljs.core.nth.call(null,vec__26980,(1),null);
javelin.core.destroy_cell_BANG_.call(null,this$,true);

if(cljs.core.truth_(f)){
this$.sources = cljs.core.conj.call(null,cljs.core.vec.call(null,sources),f);

var seq__26983_26998 = cljs.core.seq.call(null,this$.sources);
var chunk__26984_26999 = null;
var count__26985_27000 = (0);
var i__26986_27001 = (0);
while(true){
if((i__26986_27001 < count__26985_27000)){
var source_27002 = cljs.core._nth.call(null,chunk__26984_26999,i__26986_27001);
if(cljs.core.truth_(javelin.core.cell_QMARK_.call(null,source_27002))){
source_27002.sinks = cljs.core.conj.call(null,source_27002.sinks,this$);

if((source_27002.rank > this$.rank)){
var seq__26987_27003 = cljs.core.seq.call(null,javelin.core.bf_seq.call(null,cljs.core.identity,((function (seq__26983_26998,chunk__26984_26999,count__26985_27000,i__26986_27001,source_27002,vec__26980,f,sources){
return (function (p1__26975_SHARP_){
return p1__26975_SHARP_.sinks;
});})(seq__26983_26998,chunk__26984_26999,count__26985_27000,i__26986_27001,source_27002,vec__26980,f,sources))
,source_27002));
var chunk__26988_27004 = null;
var count__26989_27005 = (0);
var i__26990_27006 = (0);
while(true){
if((i__26990_27006 < count__26989_27005)){
var dep_27007 = cljs.core._nth.call(null,chunk__26988_27004,i__26990_27006);
dep_27007.rank = javelin.core.next_rank.call(null);

var G__27008 = seq__26987_27003;
var G__27009 = chunk__26988_27004;
var G__27010 = count__26989_27005;
var G__27011 = (i__26990_27006 + (1));
seq__26987_27003 = G__27008;
chunk__26988_27004 = G__27009;
count__26989_27005 = G__27010;
i__26990_27006 = G__27011;
continue;
} else {
var temp__4657__auto___27012 = cljs.core.seq.call(null,seq__26987_27003);
if(temp__4657__auto___27012){
var seq__26987_27013__$1 = temp__4657__auto___27012;
if(cljs.core.chunked_seq_QMARK_.call(null,seq__26987_27013__$1)){
var c__25858__auto___27014 = cljs.core.chunk_first.call(null,seq__26987_27013__$1);
var G__27015 = cljs.core.chunk_rest.call(null,seq__26987_27013__$1);
var G__27016 = c__25858__auto___27014;
var G__27017 = cljs.core.count.call(null,c__25858__auto___27014);
var G__27018 = (0);
seq__26987_27003 = G__27015;
chunk__26988_27004 = G__27016;
count__26989_27005 = G__27017;
i__26990_27006 = G__27018;
continue;
} else {
var dep_27019 = cljs.core.first.call(null,seq__26987_27013__$1);
dep_27019.rank = javelin.core.next_rank.call(null);

var G__27020 = cljs.core.next.call(null,seq__26987_27013__$1);
var G__27021 = null;
var G__27022 = (0);
var G__27023 = (0);
seq__26987_27003 = G__27020;
chunk__26988_27004 = G__27021;
count__26989_27005 = G__27022;
i__26990_27006 = G__27023;
continue;
}
} else {
}
}
break;
}
} else {
}
} else {
}

var G__27024 = seq__26983_26998;
var G__27025 = chunk__26984_26999;
var G__27026 = count__26985_27000;
var G__27027 = (i__26986_27001 + (1));
seq__26983_26998 = G__27024;
chunk__26984_26999 = G__27025;
count__26985_27000 = G__27026;
i__26986_27001 = G__27027;
continue;
} else {
var temp__4657__auto___27028 = cljs.core.seq.call(null,seq__26983_26998);
if(temp__4657__auto___27028){
var seq__26983_27029__$1 = temp__4657__auto___27028;
if(cljs.core.chunked_seq_QMARK_.call(null,seq__26983_27029__$1)){
var c__25858__auto___27030 = cljs.core.chunk_first.call(null,seq__26983_27029__$1);
var G__27031 = cljs.core.chunk_rest.call(null,seq__26983_27029__$1);
var G__27032 = c__25858__auto___27030;
var G__27033 = cljs.core.count.call(null,c__25858__auto___27030);
var G__27034 = (0);
seq__26983_26998 = G__27031;
chunk__26984_26999 = G__27032;
count__26985_27000 = G__27033;
i__26986_27001 = G__27034;
continue;
} else {
var source_27035 = cljs.core.first.call(null,seq__26983_27029__$1);
if(cljs.core.truth_(javelin.core.cell_QMARK_.call(null,source_27035))){
source_27035.sinks = cljs.core.conj.call(null,source_27035.sinks,this$);

if((source_27035.rank > this$.rank)){
var seq__26991_27036 = cljs.core.seq.call(null,javelin.core.bf_seq.call(null,cljs.core.identity,((function (seq__26983_26998,chunk__26984_26999,count__26985_27000,i__26986_27001,source_27035,seq__26983_27029__$1,temp__4657__auto___27028,vec__26980,f,sources){
return (function (p1__26975_SHARP_){
return p1__26975_SHARP_.sinks;
});})(seq__26983_26998,chunk__26984_26999,count__26985_27000,i__26986_27001,source_27035,seq__26983_27029__$1,temp__4657__auto___27028,vec__26980,f,sources))
,source_27035));
var chunk__26992_27037 = null;
var count__26993_27038 = (0);
var i__26994_27039 = (0);
while(true){
if((i__26994_27039 < count__26993_27038)){
var dep_27040 = cljs.core._nth.call(null,chunk__26992_27037,i__26994_27039);
dep_27040.rank = javelin.core.next_rank.call(null);

var G__27041 = seq__26991_27036;
var G__27042 = chunk__26992_27037;
var G__27043 = count__26993_27038;
var G__27044 = (i__26994_27039 + (1));
seq__26991_27036 = G__27041;
chunk__26992_27037 = G__27042;
count__26993_27038 = G__27043;
i__26994_27039 = G__27044;
continue;
} else {
var temp__4657__auto___27045__$1 = cljs.core.seq.call(null,seq__26991_27036);
if(temp__4657__auto___27045__$1){
var seq__26991_27046__$1 = temp__4657__auto___27045__$1;
if(cljs.core.chunked_seq_QMARK_.call(null,seq__26991_27046__$1)){
var c__25858__auto___27047 = cljs.core.chunk_first.call(null,seq__26991_27046__$1);
var G__27048 = cljs.core.chunk_rest.call(null,seq__26991_27046__$1);
var G__27049 = c__25858__auto___27047;
var G__27050 = cljs.core.count.call(null,c__25858__auto___27047);
var G__27051 = (0);
seq__26991_27036 = G__27048;
chunk__26992_27037 = G__27049;
count__26993_27038 = G__27050;
i__26994_27039 = G__27051;
continue;
} else {
var dep_27052 = cljs.core.first.call(null,seq__26991_27046__$1);
dep_27052.rank = javelin.core.next_rank.call(null);

var G__27053 = cljs.core.next.call(null,seq__26991_27046__$1);
var G__27054 = null;
var G__27055 = (0);
var G__27056 = (0);
seq__26991_27036 = G__27053;
chunk__26992_27037 = G__27054;
count__26993_27038 = G__27055;
i__26994_27039 = G__27056;
continue;
}
} else {
}
}
break;
}
} else {
}
} else {
}

var G__27057 = cljs.core.next.call(null,seq__26983_27029__$1);
var G__27058 = null;
var G__27059 = (0);
var G__27060 = (0);
seq__26983_26998 = G__27057;
chunk__26984_26999 = G__27058;
count__26985_27000 = G__27059;
i__26986_27001 = G__27060;
continue;
}
} else {
}
}
break;
}

var compute_27061 = ((function (vec__26980,f,sources){
return (function (p1__26976_SHARP_){
return cljs.core.apply.call(null,javelin.core.deref_STAR_.call(null,cljs.core.peek.call(null,p1__26976_SHARP_)),cljs.core.map.call(null,javelin.core.deref_STAR_,cljs.core.pop.call(null,p1__26976_SHARP_)));
});})(vec__26980,f,sources))
;
this$.thunk = ((function (compute_27061,vec__26980,f,sources){
return (function (){
return this$.state = compute_27061.call(null,this$.sources);
});})(compute_27061,vec__26980,f,sources))
;
} else {
}

return javelin.core.propagate_BANG_.call(null,this$);
});

javelin.core.set_formula_BANG_.cljs$lang$maxFixedArity = (1);

javelin.core.set_formula_BANG_.cljs$lang$applyTo = (function (seq26977){
var G__26978 = cljs.core.first.call(null,seq26977);
var seq26977__$1 = cljs.core.next.call(null,seq26977);
return javelin.core.set_formula_BANG_.cljs$core$IFn$_invoke$arity$variadic(G__26978,seq26977__$1);
});


/**
* @constructor
 * @implements {cljs.core.IWatchable}
 * @implements {cljs.core.IReset}
 * @implements {cljs.core.ISwap}
 * @implements {cljs.core.IMeta}
 * @implements {cljs.core.IDeref}
 * @implements {cljs.core.IPrintWithWriter}
 * @implements {cljs.core.IWithMeta}
*/
javelin.core.Cell = (function (meta,state,rank,prev,sources,sinks,thunk,watches,update){
this.meta = meta;
this.state = state;
this.rank = rank;
this.prev = prev;
this.sources = sources;
this.sinks = sinks;
this.thunk = thunk;
this.watches = watches;
this.update = update;
this.cljs$lang$protocol_mask$partition0$ = 2147909632;
this.cljs$lang$protocol_mask$partition1$ = 98306;
})
javelin.core.Cell.prototype.cljs$core$IPrintWithWriter$_pr_writer$arity$3 = (function (this$,w,_){
var self__ = this;
var this$__$1 = this;
return cljs.core.write_all.call(null,w,"#<Cell: ",cljs.core.pr_str.call(null,self__.state),">");
});

javelin.core.Cell.prototype.cljs$core$IWithMeta$_with_meta$arity$2 = (function (this$,meta__$1){
var self__ = this;
var this$__$1 = this;
return (new javelin.core.Cell(meta__$1,self__.state,self__.rank,self__.prev,self__.sources,self__.sinks,self__.thunk,self__.watches,self__.update));
});

javelin.core.Cell.prototype.cljs$core$IMeta$_meta$arity$1 = (function (this$){
var self__ = this;
var this$__$1 = this;
return self__.meta;
});

javelin.core.Cell.prototype.cljs$core$IDeref$_deref$arity$1 = (function (this$){
var self__ = this;
var this$__$1 = this;
return this$__$1.state;
});

javelin.core.Cell.prototype.cljs$core$IReset$_reset_BANG_$arity$2 = (function (this$,x){
var self__ = this;
var this$__$1 = this;
if(cljs.core.truth_(javelin.core.lens_QMARK_.call(null,this$__$1))){
this$__$1.update.call(null,x);
} else {
if(cljs.core.truth_(javelin.core.input_QMARK_.call(null,this$__$1))){
this$__$1.state = x;

javelin.core.propagate_BANG_.call(null,this$__$1);
} else {
throw (new Error("can't swap! or reset! formula cell"));

}
}

return this$__$1.state;
});

javelin.core.Cell.prototype.cljs$core$ISwap$_swap_BANG_$arity$2 = (function (this$,f){
var self__ = this;
var this$__$1 = this;
return cljs.core.reset_BANG_.call(null,this$__$1,f.call(null,this$__$1.state));
});

javelin.core.Cell.prototype.cljs$core$ISwap$_swap_BANG_$arity$3 = (function (this$,f,a){
var self__ = this;
var this$__$1 = this;
return cljs.core.reset_BANG_.call(null,this$__$1,f.call(null,this$__$1.state,a));
});

javelin.core.Cell.prototype.cljs$core$ISwap$_swap_BANG_$arity$4 = (function (this$,f,a,b){
var self__ = this;
var this$__$1 = this;
return cljs.core.reset_BANG_.call(null,this$__$1,f.call(null,this$__$1.state,a,b));
});

javelin.core.Cell.prototype.cljs$core$ISwap$_swap_BANG_$arity$5 = (function (this$,f,a,b,xs){
var self__ = this;
var this$__$1 = this;
return cljs.core.reset_BANG_.call(null,this$__$1,cljs.core.apply.call(null,f,this$__$1.state,a,b,xs));
});

javelin.core.Cell.prototype.cljs$core$IWatchable$_notify_watches$arity$3 = (function (this$,o,n){
var self__ = this;
var this$__$1 = this;
var seq__27062 = cljs.core.seq.call(null,self__.watches);
var chunk__27063 = null;
var count__27064 = (0);
var i__27065 = (0);
while(true){
if((i__27065 < count__27064)){
var vec__27066 = cljs.core._nth.call(null,chunk__27063,i__27065);
var key = cljs.core.nth.call(null,vec__27066,(0),null);
var f = cljs.core.nth.call(null,vec__27066,(1),null);
f.call(null,key,this$__$1,o,n);

var G__27072 = seq__27062;
var G__27073 = chunk__27063;
var G__27074 = count__27064;
var G__27075 = (i__27065 + (1));
seq__27062 = G__27072;
chunk__27063 = G__27073;
count__27064 = G__27074;
i__27065 = G__27075;
continue;
} else {
var temp__4657__auto__ = cljs.core.seq.call(null,seq__27062);
if(temp__4657__auto__){
var seq__27062__$1 = temp__4657__auto__;
if(cljs.core.chunked_seq_QMARK_.call(null,seq__27062__$1)){
var c__25858__auto__ = cljs.core.chunk_first.call(null,seq__27062__$1);
var G__27076 = cljs.core.chunk_rest.call(null,seq__27062__$1);
var G__27077 = c__25858__auto__;
var G__27078 = cljs.core.count.call(null,c__25858__auto__);
var G__27079 = (0);
seq__27062 = G__27076;
chunk__27063 = G__27077;
count__27064 = G__27078;
i__27065 = G__27079;
continue;
} else {
var vec__27069 = cljs.core.first.call(null,seq__27062__$1);
var key = cljs.core.nth.call(null,vec__27069,(0),null);
var f = cljs.core.nth.call(null,vec__27069,(1),null);
f.call(null,key,this$__$1,o,n);

var G__27080 = cljs.core.next.call(null,seq__27062__$1);
var G__27081 = null;
var G__27082 = (0);
var G__27083 = (0);
seq__27062 = G__27080;
chunk__27063 = G__27081;
count__27064 = G__27082;
i__27065 = G__27083;
continue;
}
} else {
return null;
}
}
break;
}
});

javelin.core.Cell.prototype.cljs$core$IWatchable$_add_watch$arity$3 = (function (this$,k,f){
var self__ = this;
var this$__$1 = this;
return this$__$1.watches = cljs.core.assoc.call(null,self__.watches,k,f);
});

javelin.core.Cell.prototype.cljs$core$IWatchable$_remove_watch$arity$2 = (function (this$,k){
var self__ = this;
var this$__$1 = this;
return this$__$1.watches = cljs.core.dissoc.call(null,self__.watches,k);
});

javelin.core.Cell.getBasis = (function (){
return new cljs.core.PersistentVector(null, 9, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Symbol(null,"meta","meta",-1154898805,null),new cljs.core.Symbol(null,"state","state",-348086572,null),new cljs.core.Symbol(null,"rank","rank",-66196975,null),new cljs.core.Symbol(null,"prev","prev",43462301,null),new cljs.core.Symbol(null,"sources","sources",1319365103,null),new cljs.core.Symbol(null,"sinks","sinks",-1243609492,null),new cljs.core.Symbol(null,"thunk","thunk",74255732,null),new cljs.core.Symbol(null,"watches","watches",1367433992,null),new cljs.core.Symbol(null,"update","update",-1608859373,null)], null);
});

javelin.core.Cell.cljs$lang$type = true;

javelin.core.Cell.cljs$lang$ctorStr = "javelin.core/Cell";

javelin.core.Cell.cljs$lang$ctorPrWriter = (function (this__25650__auto__,writer__25651__auto__,opt__25652__auto__){
return cljs.core._write.call(null,writer__25651__auto__,"javelin.core/Cell");
});

javelin.core.__GT_Cell = (function javelin$core$__GT_Cell(meta,state,rank,prev,sources,sinks,thunk,watches,update){
return (new javelin.core.Cell(meta,state,rank,prev,sources,sinks,thunk,watches,update));
});

javelin.core.cell_QMARK_ = (function javelin$core$cell_QMARK_(c){
if(cljs.core._EQ_.call(null,cljs.core.type.call(null,c),javelin.core.Cell)){
return c;
} else {
return null;
}
});
javelin.core.formula_QMARK_ = (function javelin$core$formula_QMARK_(c){
if(cljs.core.truth_((function (){var and__25032__auto__ = javelin.core.cell_QMARK_.call(null,c);
if(cljs.core.truth_(and__25032__auto__)){
return c.thunk;
} else {
return and__25032__auto__;
}
})())){
return c;
} else {
return null;
}
});
javelin.core.lens_QMARK_ = (function javelin$core$lens_QMARK_(c){
if(cljs.core.truth_((function (){var and__25032__auto__ = javelin.core.cell_QMARK_.call(null,c);
if(cljs.core.truth_(and__25032__auto__)){
return c.update;
} else {
return and__25032__auto__;
}
})())){
return c;
} else {
return null;
}
});
javelin.core.input_QMARK_ = (function javelin$core$input_QMARK_(c){
if(cljs.core.truth_((function (){var and__25032__auto__ = javelin.core.cell_QMARK_.call(null,c);
if(cljs.core.truth_(and__25032__auto__)){
return cljs.core.not.call(null,javelin.core.formula_QMARK_.call(null,c));
} else {
return and__25032__auto__;
}
})())){
return c;
} else {
return null;
}
});
javelin.core.set_cell_BANG_ = (function javelin$core$set_cell_BANG_(c,x){
c.state = x;

return javelin.core.set_formula_BANG_.call(null,c);
});
javelin.core.formula = (function javelin$core$formula(f){
return (function() { 
var G__27084__delegate = function (sources){
return javelin.core.set_formula_BANG_.call(null,javelin.core.cell.call(null,new cljs.core.Keyword("javelin.core","none","javelin.core/none",1150337088)),f,sources);
};
var G__27084 = function (var_args){
var sources = null;
if (arguments.length > 0) {
var G__27085__i = 0, G__27085__a = new Array(arguments.length -  0);
while (G__27085__i < G__27085__a.length) {G__27085__a[G__27085__i] = arguments[G__27085__i + 0]; ++G__27085__i;}
  sources = new cljs.core.IndexedSeq(G__27085__a,0);
} 
return G__27084__delegate.call(this,sources);};
G__27084.cljs$lang$maxFixedArity = 0;
G__27084.cljs$lang$applyTo = (function (arglist__27086){
var sources = cljs.core.seq(arglist__27086);
return G__27084__delegate(sources);
});
G__27084.cljs$core$IFn$_invoke$arity$variadic = G__27084__delegate;
return G__27084;
})()
;
});
javelin.core.lens = (function javelin$core$lens(c,f){
var c__$1 = javelin.core.formula.call(null,cljs.core.identity).call(null,c);
c__$1.update = f;

return c__$1;
});
javelin.core.cell = (function javelin$core$cell(var_args){
var args27087 = [];
var len__26152__auto___27095 = arguments.length;
var i__26153__auto___27096 = (0);
while(true){
if((i__26153__auto___27096 < len__26152__auto___27095)){
args27087.push((arguments[i__26153__auto___27096]));

var G__27097 = (i__26153__auto___27096 + (1));
i__26153__auto___27096 = G__27097;
continue;
} else {
}
break;
}

var G__27091 = args27087.length;
switch (G__27091) {
case 1:
return javelin.core.cell.cljs$core$IFn$_invoke$arity$1((arguments[(0)]));

break;
default:
var argseq__26171__auto__ = (new cljs.core.IndexedSeq(args27087.slice((1)),(0),null));
return javelin.core.cell.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),argseq__26171__auto__);

}
});

javelin.core.cell.cljs$core$IFn$_invoke$arity$1 = (function (x){
return javelin.core.set_formula_BANG_.call(null,(new javelin.core.Cell(null,x,javelin.core.next_rank.call(null),x,cljs.core.PersistentVector.EMPTY,cljs.core.PersistentHashSet.EMPTY,null,cljs.core.PersistentArrayMap.EMPTY,null)));
});

javelin.core.cell.cljs$core$IFn$_invoke$arity$variadic = (function (x,p__27092){
var map__27093 = p__27092;
var map__27093__$1 = ((((!((map__27093 == null)))?((((map__27093.cljs$lang$protocol_mask$partition0$ & (64))) || ((cljs.core.PROTOCOL_SENTINEL === map__27093.cljs$core$ISeq$)))?true:false):false))?cljs.core.apply.call(null,cljs.core.hash_map,map__27093):map__27093);
var meta = cljs.core.get.call(null,map__27093__$1,new cljs.core.Keyword(null,"meta","meta",1499536964));
return javelin.core.set_formula_BANG_.call(null,(new javelin.core.Cell(meta,x,javelin.core.next_rank.call(null),x,cljs.core.PersistentVector.EMPTY,cljs.core.PersistentHashSet.EMPTY,null,cljs.core.PersistentArrayMap.EMPTY,null)));
});

javelin.core.cell.cljs$lang$applyTo = (function (seq27088){
var G__27089 = cljs.core.first.call(null,seq27088);
var seq27088__$1 = cljs.core.next.call(null,seq27088);
return javelin.core.cell.cljs$core$IFn$_invoke$arity$variadic(G__27089,seq27088__$1);
});

javelin.core.cell.cljs$lang$maxFixedArity = (1);

javelin.core.lift = javelin.core.formula;
javelin.core.dosync_STAR_ = (function javelin$core$dosync_STAR_(thunk){
var bind = (function (p1__27099_SHARP_){
var _STAR_tx_STAR_27102 = javelin.core._STAR_tx_STAR_;
javelin.core._STAR_tx_STAR_ = cljs.core.atom.call(null,tailrecursion.priority_map.priority_map.call(null));

try{return p1__27099_SHARP_.call(null);
}finally {javelin.core._STAR_tx_STAR_ = _STAR_tx_STAR_27102;
}});
var prop = ((function (bind){
return (function (){
var tx = cljs.core.deref.call(null,javelin.core._STAR_tx_STAR_);
var _STAR_tx_STAR_27103 = javelin.core._STAR_tx_STAR_;
javelin.core._STAR_tx_STAR_ = null;

try{return javelin.core.propagate_STAR_.call(null,tx);
}finally {javelin.core._STAR_tx_STAR_ = _STAR_tx_STAR_27103;
}});})(bind))
;
if(cljs.core.truth_(javelin.core._STAR_tx_STAR_)){
return thunk.call(null);
} else {
return bind.call(null,((function (bind,prop){
return (function (){
thunk.call(null);

return prop.call(null);
});})(bind,prop))
);
}
});
javelin.core.alts_BANG_ = (function javelin$core$alts_BANG_(var_args){
var args__26159__auto__ = [];
var len__26152__auto___27110 = arguments.length;
var i__26153__auto___27111 = (0);
while(true){
if((i__26153__auto___27111 < len__26152__auto___27110)){
args__26159__auto__.push((arguments[i__26153__auto___27111]));

var G__27112 = (i__26153__auto___27111 + (1));
i__26153__auto___27111 = G__27112;
continue;
} else {
}
break;
}

var argseq__26160__auto__ = ((((0) < args__26159__auto__.length))?(new cljs.core.IndexedSeq(args__26159__auto__.slice((0)),(0),null)):null);
return javelin.core.alts_BANG_.cljs$core$IFn$_invoke$arity$variadic(argseq__26160__auto__);
});

javelin.core.alts_BANG_.cljs$core$IFn$_invoke$arity$variadic = (function (cells){
var olds = cljs.core.atom.call(null,cljs.core.repeat.call(null,cljs.core.count.call(null,cells),new cljs.core.Keyword("javelin.core","none","javelin.core/none",1150337088)));
var tag_neq = ((function (olds){
return (function (p1__27104_SHARP_,p2__27105_SHARP_){
return (new cljs.core.PersistentVector(null,2,(5),cljs.core.PersistentVector.EMPTY_NODE,[cljs.core.not_EQ_.call(null,p1__27104_SHARP_,p2__27105_SHARP_),p2__27105_SHARP_],null));
});})(olds))
;
var diff = ((function (olds,tag_neq){
return (function (p1__27107_SHARP_,p2__27106_SHARP_){
return cljs.core.distinct.call(null,cljs.core.map.call(null,cljs.core.second,cljs.core.filter.call(null,cljs.core.first,cljs.core.map.call(null,tag_neq,p1__27107_SHARP_,p2__27106_SHARP_))));
});})(olds,tag_neq))
;
var proc = ((function (olds,tag_neq,diff){
return (function() { 
var G__27113__delegate = function (rest__27108_SHARP_){
var news = diff.call(null,cljs.core.deref.call(null,olds),rest__27108_SHARP_);
cljs.core.reset_BANG_.call(null,olds,rest__27108_SHARP_);

return news;
};
var G__27113 = function (var_args){
var rest__27108_SHARP_ = null;
if (arguments.length > 0) {
var G__27114__i = 0, G__27114__a = new Array(arguments.length -  0);
while (G__27114__i < G__27114__a.length) {G__27114__a[G__27114__i] = arguments[G__27114__i + 0]; ++G__27114__i;}
  rest__27108_SHARP_ = new cljs.core.IndexedSeq(G__27114__a,0);
} 
return G__27113__delegate.call(this,rest__27108_SHARP_);};
G__27113.cljs$lang$maxFixedArity = 0;
G__27113.cljs$lang$applyTo = (function (arglist__27115){
var rest__27108_SHARP_ = cljs.core.seq(arglist__27115);
return G__27113__delegate(rest__27108_SHARP_);
});
G__27113.cljs$core$IFn$_invoke$arity$variadic = G__27113__delegate;
return G__27113;
})()
;})(olds,tag_neq,diff))
;
return cljs.core.apply.call(null,javelin.core.formula.call(null,proc),cells);
});

javelin.core.alts_BANG_.cljs$lang$maxFixedArity = (0);

javelin.core.alts_BANG_.cljs$lang$applyTo = (function (seq27109){
return javelin.core.alts_BANG_.cljs$core$IFn$_invoke$arity$variadic(cljs.core.seq.call(null,seq27109));
});

javelin.core.cell_map = (function javelin$core$cell_map(f,c){
var cseq = javelin.core.formula.call(null,cljs.core.seq).call(null,c);
return cljs.core.map.call(null,((function (cseq){
return (function (p1__27116_SHARP_){
return javelin.core.formula.call(null,cljs.core.comp.call(null,f,javelin.core.safe_nth)).call(null,cseq,p1__27116_SHARP_);
});})(cseq))
,cljs.core.range.call(null,(0),cljs.core.count.call(null,cljs.core.deref.call(null,cseq))));
});
javelin.core.cell_doseq_STAR_ = (function javelin$core$cell_doseq_STAR_(items_seq,f){
var pool_size = javelin.core.cell.call(null,(0));
var cur_count = javelin.core.formula.call(null,cljs.core.count).call(null,items_seq);
var ith_item = ((function (pool_size,cur_count){
return (function (p1__27117_SHARP_){
return javelin.core.formula.call(null,javelin.core.safe_nth).call(null,items_seq,p1__27117_SHARP_);
});})(pool_size,cur_count))
;
return javelin.core.formula.call(null,((function (pool_size,cur_count,ith_item){
return (function (pool_size__$1,cur_count__$1,f__$1,ith_item__$1,reset_pool_size_BANG_){
if((pool_size__$1 < cur_count__$1)){
var seq__27122_27126 = cljs.core.seq.call(null,cljs.core.range.call(null,pool_size__$1,cur_count__$1));
var chunk__27123_27127 = null;
var count__27124_27128 = (0);
var i__27125_27129 = (0);
while(true){
if((i__27125_27129 < count__27124_27128)){
var i_27130 = cljs.core._nth.call(null,chunk__27123_27127,i__27125_27129);
f__$1.call(null,ith_item__$1.call(null,i_27130));

var G__27131 = seq__27122_27126;
var G__27132 = chunk__27123_27127;
var G__27133 = count__27124_27128;
var G__27134 = (i__27125_27129 + (1));
seq__27122_27126 = G__27131;
chunk__27123_27127 = G__27132;
count__27124_27128 = G__27133;
i__27125_27129 = G__27134;
continue;
} else {
var temp__4657__auto___27135 = cljs.core.seq.call(null,seq__27122_27126);
if(temp__4657__auto___27135){
var seq__27122_27136__$1 = temp__4657__auto___27135;
if(cljs.core.chunked_seq_QMARK_.call(null,seq__27122_27136__$1)){
var c__25858__auto___27137 = cljs.core.chunk_first.call(null,seq__27122_27136__$1);
var G__27138 = cljs.core.chunk_rest.call(null,seq__27122_27136__$1);
var G__27139 = c__25858__auto___27137;
var G__27140 = cljs.core.count.call(null,c__25858__auto___27137);
var G__27141 = (0);
seq__27122_27126 = G__27138;
chunk__27123_27127 = G__27139;
count__27124_27128 = G__27140;
i__27125_27129 = G__27141;
continue;
} else {
var i_27142 = cljs.core.first.call(null,seq__27122_27136__$1);
f__$1.call(null,ith_item__$1.call(null,i_27142));

var G__27143 = cljs.core.next.call(null,seq__27122_27136__$1);
var G__27144 = null;
var G__27145 = (0);
var G__27146 = (0);
seq__27122_27126 = G__27143;
chunk__27123_27127 = G__27144;
count__27124_27128 = G__27145;
i__27125_27129 = G__27146;
continue;
}
} else {
}
}
break;
}

return reset_pool_size_BANG_.call(null,cur_count__$1);
} else {
return null;
}
});})(pool_size,cur_count,ith_item))
).call(null,pool_size,cur_count,f,ith_item,cljs.core.partial.call(null,cljs.core.reset_BANG_,pool_size));
});

//# sourceMappingURL=core.js.map