goog.provide('emptyhead.idea.protocol'); emptyhead.idea.protocol.to_reference = (function emptyhead$idea$protocol$to_reference(val){ var ref = cljs.core.get_in.cljs$core$IFn$_invoke$arity$2(val,new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(null,"_meta","_meta",937543236),new cljs.core.Keyword(null,"_reference","_reference",-253513596)], null)); if(cljs.core.truth_(cljs.core.get_in.cljs$core$IFn$_invoke$arity$2(val,new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(null,"_meta","_meta",937543236),new cljs.core.Keyword(null,"_stale-reference","_stale-reference",748081018)], null)))){ return emptyhead.util.logging.error.cljs$core$IFn$_invoke$arity$variadic(["Attempt to find stale reference `",cljs.core.str.cljs$core$IFn$_invoke$arity$1(ref),"` -- this is a copy."].join(''),cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,"value","value",305978217),val,new cljs.core.Keyword(null,"type","type",1174270348),new cljs.core.Keyword(null,"stale-reference","stale-reference",791234536)], null)], 0)); } else { if((!((ref instanceof cljs.core.Symbol)))){ return emptyhead.util.logging.error.cljs$core$IFn$_invoke$arity$variadic(["Attempt to find invalid reference `",cljs.core.str.cljs$core$IFn$_invoke$arity$1(ref),"` -- invalid idea?"].join(''),cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,"value","value",305978217),val,new cljs.core.Keyword(null,"type","type",1174270348),new cljs.core.Keyword(null,"invalid-reference","invalid-reference",450936464)], null)], 0)); } else { return ref; } } }); /** * @interface */ emptyhead.idea.protocol.Idea = function(){}; var emptyhead$idea$protocol$Idea$reference$dyn_30803 = (function (idea){ var x__5350__auto__ = (((idea == null))?null:idea); var m__5351__auto__ = (emptyhead.idea.protocol.reference[goog.typeOf(x__5350__auto__)]); if((!((m__5351__auto__ == null)))){ return (m__5351__auto__.cljs$core$IFn$_invoke$arity$1 ? m__5351__auto__.cljs$core$IFn$_invoke$arity$1(idea) : m__5351__auto__.call(null, idea)); } else { var m__5349__auto__ = (emptyhead.idea.protocol.reference["_"]); if((!((m__5349__auto__ == null)))){ return (m__5349__auto__.cljs$core$IFn$_invoke$arity$1 ? m__5349__auto__.cljs$core$IFn$_invoke$arity$1(idea) : m__5349__auto__.call(null, idea)); } else { throw cljs.core.missing_protocol("Idea.reference",idea); } } }); /** * Reference, i.e. symbol, for `idea`. */ emptyhead.idea.protocol.reference = (function emptyhead$idea$protocol$reference(idea){ if((((!((idea == null)))) && ((!((idea.emptyhead$idea$protocol$Idea$reference$arity$1 == null)))))){ return idea.emptyhead$idea$protocol$Idea$reference$arity$1(idea); } else { return emptyhead$idea$protocol$Idea$reference$dyn_30803(idea); } }); var emptyhead$idea$protocol$Idea$value$dyn_30804 = (function (idea){ var x__5350__auto__ = (((idea == null))?null:idea); var m__5351__auto__ = (emptyhead.idea.protocol.value[goog.typeOf(x__5350__auto__)]); if((!((m__5351__auto__ == null)))){ return (m__5351__auto__.cljs$core$IFn$_invoke$arity$1 ? m__5351__auto__.cljs$core$IFn$_invoke$arity$1(idea) : m__5351__auto__.call(null, idea)); } else { var m__5349__auto__ = (emptyhead.idea.protocol.value["_"]); if((!((m__5349__auto__ == null)))){ return (m__5349__auto__.cljs$core$IFn$_invoke$arity$1 ? m__5349__auto__.cljs$core$IFn$_invoke$arity$1(idea) : m__5349__auto__.call(null, idea)); } else { throw cljs.core.missing_protocol("Idea.value",idea); } } }); /** * Value, i.e. map, of `idea`. */ emptyhead.idea.protocol.value = (function emptyhead$idea$protocol$value(idea){ if((((!((idea == null)))) && ((!((idea.emptyhead$idea$protocol$Idea$value$arity$1 == null)))))){ return idea.emptyhead$idea$protocol$Idea$value$arity$1(idea); } else { return emptyhead$idea$protocol$Idea$value$dyn_30804(idea); } }); (cljs.core.PersistentHashMap.prototype.emptyhead$idea$protocol$Idea$ = cljs.core.PROTOCOL_SENTINEL); (cljs.core.PersistentHashMap.prototype.emptyhead$idea$protocol$Idea$reference$arity$1 = (function (idea){ var idea__$1 = this; return emptyhead.idea.protocol.to_reference(idea__$1); })); (cljs.core.PersistentHashMap.prototype.emptyhead$idea$protocol$Idea$value$arity$1 = (function (idea){ var idea__$1 = this; return idea__$1; })); (cljs.core.PersistentArrayMap.prototype.emptyhead$idea$protocol$Idea$ = cljs.core.PROTOCOL_SENTINEL); (cljs.core.PersistentArrayMap.prototype.emptyhead$idea$protocol$Idea$reference$arity$1 = (function (idea){ var idea__$1 = this; return emptyhead.idea.protocol.to_reference(idea__$1); })); (cljs.core.PersistentArrayMap.prototype.emptyhead$idea$protocol$Idea$value$arity$1 = (function (idea){ var idea__$1 = this; return idea__$1; })); (cljs.core.Symbol.prototype.emptyhead$idea$protocol$Idea$ = cljs.core.PROTOCOL_SENTINEL); (cljs.core.Symbol.prototype.emptyhead$idea$protocol$Idea$reference$arity$1 = (function (idea){ var idea__$1 = this; return idea__$1; })); (cljs.core.Symbol.prototype.emptyhead$idea$protocol$Idea$value$arity$1 = (function (idea){ var idea__$1 = this; return cljs.core.get.cljs$core$IFn$_invoke$arity$2(cljs.core.deref(emptyhead.idea.state.state),idea__$1); })); /** * Make a copy of `idea`. * Returns an object that is identical to the value of `idea`, * but marked as not containing a reference to anything in the state. */ emptyhead.idea.protocol.copy = (function emptyhead$idea$protocol$copy(idea){ return cljs.core.assoc_in(emptyhead.idea.protocol.value(idea),new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(null,"_meta","_meta",937543236),new cljs.core.Keyword(null,"_stale-reference","_stale-reference",748081018)], null),true); }); emptyhead.idea.protocol.non_copy = (function emptyhead$idea$protocol$non_copy(idea){ return cljs.core.assoc_in(emptyhead.idea.protocol.value(idea),new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(null,"_meta","_meta",937543236),new cljs.core.Keyword(null,"_stale-reference","_stale-reference",748081018)], null),false); }); /** * Takes a copied idea and 'uncopies' it, making its reference active again * and updating what is in the game state. */ emptyhead.idea.protocol.uncopy_BANG_ = (function emptyhead$idea$protocol$uncopy_BANG_(copy_obj){ var idea = emptyhead.idea.protocol.non_copy(copy_obj); return cljs.core.swap_BANG_.cljs$core$IFn$_invoke$arity$4(emptyhead.idea.state.state,cljs.core.assoc,emptyhead.idea.protocol.to_reference(idea),idea); }); /** * Get the (now stale!) reference of a copied idea. */ emptyhead.idea.protocol.force_reference = (function emptyhead$idea$protocol$force_reference(copy_obj){ return emptyhead.idea.protocol.to_reference(emptyhead.idea.protocol.non_copy(copy_obj)); }); /** * Execute `fun` on a copy of `idea` with optional additional `args`. */ emptyhead.idea.protocol.copy_fn = (function emptyhead$idea$protocol$copy_fn(var_args){ var args__5732__auto__ = []; var len__5726__auto___30806 = arguments.length; var i__5727__auto___30807 = (0); while(true){ if((i__5727__auto___30807 < len__5726__auto___30806)){ args__5732__auto__.push((arguments[i__5727__auto___30807])); var G__30808 = (i__5727__auto___30807 + (1)); i__5727__auto___30807 = G__30808; continue; } else { } break; } var argseq__5733__auto__ = ((((2) < args__5732__auto__.length))?(new cljs.core.IndexedSeq(args__5732__auto__.slice((2)),(0),null)):null); return emptyhead.idea.protocol.copy_fn.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),(arguments[(1)]),argseq__5733__auto__); }); (emptyhead.idea.protocol.copy_fn.cljs$core$IFn$_invoke$arity$variadic = (function (fun,idea,args){ return cljs.core.apply.cljs$core$IFn$_invoke$arity$3(fun,emptyhead.idea.protocol.copy(idea),args); })); (emptyhead.idea.protocol.copy_fn.cljs$lang$maxFixedArity = (2)); /** @this {Function} */ (emptyhead.idea.protocol.copy_fn.cljs$lang$applyTo = (function (seq30791){ var G__30792 = cljs.core.first(seq30791); var seq30791__$1 = cljs.core.next(seq30791); var G__30793 = cljs.core.first(seq30791__$1); var seq30791__$2 = cljs.core.next(seq30791__$1); var self__5711__auto__ = this; return self__5711__auto__.cljs$core$IFn$_invoke$arity$variadic(G__30792,G__30793,seq30791__$2); })); /** * Execute `fun` on the value of `idea` with optional additional `args`. */ emptyhead.idea.protocol.val_fn = (function emptyhead$idea$protocol$val_fn(var_args){ var args__5732__auto__ = []; var len__5726__auto___30812 = arguments.length; var i__5727__auto___30813 = (0); while(true){ if((i__5727__auto___30813 < len__5726__auto___30812)){ args__5732__auto__.push((arguments[i__5727__auto___30813])); var G__30814 = (i__5727__auto___30813 + (1)); i__5727__auto___30813 = G__30814; continue; } else { } break; } var argseq__5733__auto__ = ((((2) < args__5732__auto__.length))?(new cljs.core.IndexedSeq(args__5732__auto__.slice((2)),(0),null)):null); return emptyhead.idea.protocol.val_fn.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),(arguments[(1)]),argseq__5733__auto__); }); (emptyhead.idea.protocol.val_fn.cljs$core$IFn$_invoke$arity$variadic = (function (fun,idea,args){ return cljs.core.apply.cljs$core$IFn$_invoke$arity$3(fun,emptyhead.idea.protocol.value(idea),args); })); (emptyhead.idea.protocol.val_fn.cljs$lang$maxFixedArity = (2)); /** @this {Function} */ (emptyhead.idea.protocol.val_fn.cljs$lang$applyTo = (function (seq30794){ var G__30795 = cljs.core.first(seq30794); var seq30794__$1 = cljs.core.next(seq30794); var G__30796 = cljs.core.first(seq30794__$1); var seq30794__$2 = cljs.core.next(seq30794__$1); var self__5711__auto__ = this; return self__5711__auto__.cljs$core$IFn$_invoke$arity$variadic(G__30795,G__30796,seq30794__$2); })); /** * Execute `fun` on a reference to `idea` with optional additional `args`. */ emptyhead.idea.protocol.ref_fn = (function emptyhead$idea$protocol$ref_fn(var_args){ var args__5732__auto__ = []; var len__5726__auto___30815 = arguments.length; var i__5727__auto___30816 = (0); while(true){ if((i__5727__auto___30816 < len__5726__auto___30815)){ args__5732__auto__.push((arguments[i__5727__auto___30816])); var G__30817 = (i__5727__auto___30816 + (1)); i__5727__auto___30816 = G__30817; continue; } else { } break; } var argseq__5733__auto__ = ((((2) < args__5732__auto__.length))?(new cljs.core.IndexedSeq(args__5732__auto__.slice((2)),(0),null)):null); return emptyhead.idea.protocol.ref_fn.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),(arguments[(1)]),argseq__5733__auto__); }); (emptyhead.idea.protocol.ref_fn.cljs$core$IFn$_invoke$arity$variadic = (function (fun,idea,args){ return cljs.core.apply.cljs$core$IFn$_invoke$arity$3(fun,emptyhead.idea.protocol.reference(idea),args); })); (emptyhead.idea.protocol.ref_fn.cljs$lang$maxFixedArity = (2)); /** @this {Function} */ (emptyhead.idea.protocol.ref_fn.cljs$lang$applyTo = (function (seq30797){ var G__30798 = cljs.core.first(seq30797); var seq30797__$1 = cljs.core.next(seq30797); var G__30799 = cljs.core.first(seq30797__$1); var seq30797__$2 = cljs.core.next(seq30797__$1); var self__5711__auto__ = this; return self__5711__auto__.cljs$core$IFn$_invoke$arity$variadic(G__30798,G__30799,seq30797__$2); })); /** * Execute `fun` on a reference to `idea` with optional additional `args`. * Unlike [[reference-fn]], this will work on a copy. */ emptyhead.idea.protocol.force_reference_fn = (function emptyhead$idea$protocol$force_reference_fn(var_args){ var args__5732__auto__ = []; var len__5726__auto___30818 = arguments.length; var i__5727__auto___30819 = (0); while(true){ if((i__5727__auto___30819 < len__5726__auto___30818)){ args__5732__auto__.push((arguments[i__5727__auto___30819])); var G__30820 = (i__5727__auto___30819 + (1)); i__5727__auto___30819 = G__30820; continue; } else { } break; } var argseq__5733__auto__ = ((((2) < args__5732__auto__.length))?(new cljs.core.IndexedSeq(args__5732__auto__.slice((2)),(0),null)):null); return emptyhead.idea.protocol.force_reference_fn.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),(arguments[(1)]),argseq__5733__auto__); }); (emptyhead.idea.protocol.force_reference_fn.cljs$core$IFn$_invoke$arity$variadic = (function (fun,idea,args){ return cljs.core.apply.cljs$core$IFn$_invoke$arity$3(fun,emptyhead.idea.protocol.force_reference(idea),args); })); (emptyhead.idea.protocol.force_reference_fn.cljs$lang$maxFixedArity = (2)); /** @this {Function} */ (emptyhead.idea.protocol.force_reference_fn.cljs$lang$applyTo = (function (seq30800){ var G__30801 = cljs.core.first(seq30800); var seq30800__$1 = cljs.core.next(seq30800); var G__30802 = cljs.core.first(seq30800__$1); var seq30800__$2 = cljs.core.next(seq30800__$1); var self__5711__auto__ = this; return self__5711__auto__.cljs$core$IFn$_invoke$arity$variadic(G__30801,G__30802,seq30800__$2); })); //# sourceMappingURL=emptyhead.idea.protocol.js.map