// Compiled by ClojureScript 1.9.229 {} goog.provide('reagent.impl.template'); goog.require('cljs.core'); goog.require('reagent.impl.util'); goog.require('reagent.impl.component'); goog.require('reagent.interop'); goog.require('reagent.ratom'); goog.require('reagent.impl.batching'); goog.require('clojure.string'); goog.require('reagent.debug'); goog.require('clojure.walk'); /** * Regular expression that parses a CSS-style id and class * from a tag name. */ reagent.impl.template.re_tag = /([^\s\.#]+)(?:#([^\s\.#]+))?(?:\.([^\s#]+))?/; /** * @constructor */ reagent.impl.template.NativeWrapper = (function (){ }) reagent.impl.template.NativeWrapper.getBasis = (function (){ return cljs.core.PersistentVector.EMPTY; }); reagent.impl.template.NativeWrapper.cljs$lang$type = true; reagent.impl.template.NativeWrapper.cljs$lang$ctorStr = "reagent.impl.template/NativeWrapper"; reagent.impl.template.NativeWrapper.cljs$lang$ctorPrWriter = (function (this__25736__auto__,writer__25737__auto__,opt__25738__auto__){ return cljs.core._write.call(null,writer__25737__auto__,"reagent.impl.template/NativeWrapper"); }); reagent.impl.template.__GT_NativeWrapper = (function reagent$impl$template$__GT_NativeWrapper(){ return (new reagent.impl.template.NativeWrapper()); }); reagent.impl.template.named_QMARK_ = (function reagent$impl$template$named_QMARK_(x){ return ((x instanceof cljs.core.Keyword)) || ((x instanceof cljs.core.Symbol)); }); reagent.impl.template.hiccup_tag_QMARK_ = (function reagent$impl$template$hiccup_tag_QMARK_(x){ return (reagent.impl.template.named_QMARK_.call(null,x)) || (typeof x === 'string'); }); reagent.impl.template.valid_tag_QMARK_ = (function reagent$impl$template$valid_tag_QMARK_(x){ return (reagent.impl.template.hiccup_tag_QMARK_.call(null,x)) || (cljs.core.ifn_QMARK_.call(null,x)) || ((x instanceof reagent.impl.template.NativeWrapper)); }); reagent.impl.template.prop_name_cache = ({"class": "className", "for": "htmlFor", "charset": "charSet"}); reagent.impl.template.cache_get = (function reagent$impl$template$cache_get(o,k){ if(o.hasOwnProperty(k)){ return (o[k]); } else { return null; } }); reagent.impl.template.cached_prop_name = (function reagent$impl$template$cached_prop_name(k){ if(reagent.impl.template.named_QMARK_.call(null,k)){ var temp__4659__auto__ = reagent.impl.template.cache_get.call(null,reagent.impl.template.prop_name_cache,cljs.core.name.call(null,k)); if((temp__4659__auto__ == null)){ return (reagent.impl.template.prop_name_cache[cljs.core.name.call(null,k)] = reagent.impl.util.dash_to_camel.call(null,k)); } else { var k_SINGLEQUOTE_ = temp__4659__auto__; return k_SINGLEQUOTE_; } } else { return k; } }); reagent.impl.template.js_val_QMARK_ = (function reagent$impl$template$js_val_QMARK_(x){ return !(("object" === goog.typeOf(x))); }); reagent.impl.template.kv_conv = (function reagent$impl$template$kv_conv(o,k,v){ var G__26841 = o; (G__26841[reagent.impl.template.cached_prop_name.call(null,k)] = reagent.impl.template.convert_prop_value.call(null,v)); return G__26841; }); reagent.impl.template.convert_prop_value = (function reagent$impl$template$convert_prop_value(x){ if(reagent.impl.template.js_val_QMARK_.call(null,x)){ return x; } else { if(reagent.impl.template.named_QMARK_.call(null,x)){ return cljs.core.name.call(null,x); } else { if(cljs.core.map_QMARK_.call(null,x)){ return cljs.core.reduce_kv.call(null,reagent.impl.template.kv_conv,({}),x); } else { if(cljs.core.coll_QMARK_.call(null,x)){ return cljs.core.clj__GT_js.call(null,x); } else { if(cljs.core.ifn_QMARK_.call(null,x)){ return (function() { var G__26842__delegate = function (args){ return cljs.core.apply.call(null,x,args); }; var G__26842 = function (var_args){ var args = null; if (arguments.length > 0) { var G__26843__i = 0, G__26843__a = new Array(arguments.length - 0); while (G__26843__i < G__26843__a.length) {G__26843__a[G__26843__i] = arguments[G__26843__i + 0]; ++G__26843__i;} args = new cljs.core.IndexedSeq(G__26843__a,0); } return G__26842__delegate.call(this,args);}; G__26842.cljs$lang$maxFixedArity = 0; G__26842.cljs$lang$applyTo = (function (arglist__26844){ var args = cljs.core.seq(arglist__26844); return G__26842__delegate(args); }); G__26842.cljs$core$IFn$_invoke$arity$variadic = G__26842__delegate; return G__26842; })() ; } else { return cljs.core.clj__GT_js.call(null,x); } } } } } }); reagent.impl.template.oset = (function reagent$impl$template$oset(o,k,v){ var G__26846 = (((o == null))?({}):o); (G__26846[k] = v); return G__26846; }); reagent.impl.template.oget = (function reagent$impl$template$oget(o,k){ if((o == null)){ return null; } else { return (o[k]); } }); reagent.impl.template.set_id_class = (function reagent$impl$template$set_id_class(p,id_class){ var id = (id_class["id"]); var p__$1 = (((cljs.core.some_QMARK_.call(null,id)) && ((reagent.impl.template.oget.call(null,p,"id") == null)))?reagent.impl.template.oset.call(null,p,"id",id):p); var temp__4659__auto__ = (id_class["className"]); if((temp__4659__auto__ == null)){ return p__$1; } else { var class$ = temp__4659__auto__; var old = reagent.impl.template.oget.call(null,p__$1,"className"); return reagent.impl.template.oset.call(null,p__$1,"className",(((old == null))?class$:[cljs.core.str(class$),cljs.core.str(" "),cljs.core.str(old)].join(''))); } }); reagent.impl.template.convert_props = (function reagent$impl$template$convert_props(props,id_class){ return reagent.impl.template.set_id_class.call(null,reagent.impl.template.convert_prop_value.call(null,props),id_class); }); reagent.impl.template.these_inputs_have_selection_api = new cljs.core.PersistentHashSet(null, new cljs.core.PersistentArrayMap(null, 6, ["url",null,"tel",null,"text",null,"textarea",null,"password",null,"search",null], null), null); reagent.impl.template.has_selection_api_QMARK_ = (function reagent$impl$template$has_selection_api_QMARK_(input_type){ return cljs.core.contains_QMARK_.call(null,reagent.impl.template.these_inputs_have_selection_api,input_type); }); reagent.impl.template.input_set_value = (function reagent$impl$template$input_set_value(this$){ var temp__4661__auto__ = (this$["cljsInputElement"]); if((temp__4661__auto__ == null)){ return null; } else { var node = temp__4661__auto__; (this$["cljsInputDirty"] = false); var rendered_value = (this$["cljsRenderedValue"]); var dom_value = (this$["cljsDOMValue"]); if(cljs.core.not_EQ_.call(null,rendered_value,dom_value)){ if(!(((node === (document["activeElement"]))) && (reagent.impl.template.has_selection_api_QMARK_.call(null,(node["type"]))) && (typeof rendered_value === 'string') && (typeof dom_value === 'string'))){ (this$["cljsDOMValue"] = rendered_value); return (node["value"] = rendered_value); } else { var node_value = (node["value"]); if(cljs.core.not_EQ_.call(null,node_value,dom_value)){ return reagent.impl.batching.do_after_render.call(null,((function (node_value,rendered_value,dom_value,node,temp__4661__auto__){ return (function (){ return reagent$impl$template$input_set_value.call(null,this$); });})(node_value,rendered_value,dom_value,node,temp__4661__auto__)) ); } else { var existing_offset_from_end = (cljs.core.count.call(null,node_value) - (node["selectionStart"])); var new_cursor_offset = (cljs.core.count.call(null,rendered_value) - existing_offset_from_end); (this$["cljsDOMValue"] = rendered_value); (node["value"] = rendered_value); (node["selectionStart"] = new_cursor_offset); return (node["selectionEnd"] = new_cursor_offset); } } } else { return null; } } }); reagent.impl.template.input_handle_change = (function reagent$impl$template$input_handle_change(this$,on_change,e){ (this$["cljsDOMValue"] = e.target.value); if(cljs.core.truth_((this$["cljsInputDirty"]))){ } else { (this$["cljsInputDirty"] = true); reagent.impl.batching.do_after_render.call(null,(function (){ return reagent.impl.template.input_set_value.call(null,this$); })); } return on_change.call(null,e); }); reagent.impl.template.input_render_setup = (function reagent$impl$template$input_render_setup(this$,jsprops){ if(cljs.core.truth_((function (){var and__25118__auto__ = cljs.core.some_QMARK_.call(null,jsprops); if(and__25118__auto__){ var and__25118__auto____$1 = jsprops.hasOwnProperty("onChange"); if(cljs.core.truth_(and__25118__auto____$1)){ return jsprops.hasOwnProperty("value"); } else { return and__25118__auto____$1; } } else { return and__25118__auto__; } })())){ var v = (jsprops["value"]); var value = (((v == null))?"":v); var on_change = (jsprops["onChange"]); if(((this$["cljsInputElement"]) == null)){ (this$["cljsDOMValue"] = value); } else { } (this$["cljsRenderedValue"] = value); delete jsprops["value"]; var G__26850 = jsprops; (G__26850["defaultValue"] = value); (G__26850["onChange"] = ((function (G__26850,v,value,on_change){ return (function (p1__26847_SHARP_){ return reagent.impl.template.input_handle_change.call(null,this$,on_change,p1__26847_SHARP_); });})(G__26850,v,value,on_change)) ); (G__26850["ref"] = ((function (G__26850,v,value,on_change){ return (function (p1__26848_SHARP_){ return (this$["cljsInputElement"] = p1__26848_SHARP_); });})(G__26850,v,value,on_change)) ); return G__26850; } else { return null; } }); reagent.impl.template.input_component_QMARK_ = (function reagent$impl$template$input_component_QMARK_(x){ var G__26852 = x; switch (G__26852) { case "input": case "textarea": return true; break; default: return false; } }); reagent.impl.template.reagent_input_class = null; reagent.impl.template.input_spec = new cljs.core.PersistentArrayMap(null, 3, [new cljs.core.Keyword(null,"display-name","display-name",694513143),"ReagentInput",new cljs.core.Keyword(null,"component-did-update","component-did-update",-1468549173),reagent.impl.template.input_set_value,new cljs.core.Keyword(null,"reagent-render","reagent-render",-985383853),(function (argv,comp,jsprops,first_child){ var this$ = reagent.impl.component._STAR_current_component_STAR_; reagent.impl.template.input_render_setup.call(null,this$,jsprops); return reagent.impl.template.make_element.call(null,argv,comp,jsprops,first_child); })], null); reagent.impl.template.reagent_input = (function reagent$impl$template$reagent_input(){ if((reagent.impl.template.reagent_input_class == null)){ reagent.impl.template.reagent_input_class = reagent.impl.component.create_class.call(null,reagent.impl.template.input_spec); } else { } return reagent.impl.template.reagent_input_class; }); reagent.impl.template.parse_tag = (function reagent$impl$template$parse_tag(hiccup_tag){ var vec__26857 = cljs.core.next.call(null,cljs.core.re_matches.call(null,reagent.impl.template.re_tag,cljs.core.name.call(null,hiccup_tag))); var tag = cljs.core.nth.call(null,vec__26857,(0),null); var id = cljs.core.nth.call(null,vec__26857,(1),null); var class$ = cljs.core.nth.call(null,vec__26857,(2),null); var class$__$1 = (((class$ == null))?null:clojure.string.replace.call(null,class$,/\./," ")); if(cljs.core.truth_(tag)){ } else { throw (new Error([cljs.core.str("Assert failed: "),cljs.core.str([cljs.core.str("Invalid tag: '"),cljs.core.str(hiccup_tag),cljs.core.str("'"),cljs.core.str(reagent.impl.component.comp_name.call(null))].join('')),cljs.core.str("\n"),cljs.core.str("tag")].join(''))); } return ({"name": tag, "id": id, "className": class$__$1}); }); reagent.impl.template.try_get_key = (function reagent$impl$template$try_get_key(x){ try{return cljs.core.get.call(null,x,new cljs.core.Keyword(null,"key","key",-1516042587)); }catch (e26861){var e = e26861; return null; }}); reagent.impl.template.get_key = (function reagent$impl$template$get_key(x){ if(cljs.core.map_QMARK_.call(null,x)){ return reagent.impl.template.try_get_key.call(null,x); } else { return null; } }); reagent.impl.template.key_from_vec = (function reagent$impl$template$key_from_vec(v){ var temp__4659__auto__ = reagent.impl.template.get_key.call(null,cljs.core.meta.call(null,v)); if((temp__4659__auto__ == null)){ return reagent.impl.template.get_key.call(null,cljs.core.nth.call(null,v,(1),null)); } else { var k = temp__4659__auto__; return k; } }); reagent.impl.template.reag_element = (function reagent$impl$template$reag_element(tag,v){ var c = reagent.impl.component.as_class.call(null,tag); var jsprops = ({"argv": v}); var temp__4661__auto___26862 = reagent.impl.template.key_from_vec.call(null,v); if((temp__4661__auto___26862 == null)){ } else { var key_26863 = temp__4661__auto___26862; (jsprops["key"] = key_26863); } return (reagent.impl.util.react["createElement"])(c,jsprops); }); reagent.impl.template.adapt_react_class = (function reagent$impl$template$adapt_react_class(c){ var G__26865 = (new reagent.impl.template.NativeWrapper()); (G__26865["name"] = c); (G__26865["id"] = null); (G__26865["class"] = null); return G__26865; }); reagent.impl.template.tag_name_cache = ({}); reagent.impl.template.cached_parse = (function reagent$impl$template$cached_parse(x){ var temp__4659__auto__ = reagent.impl.template.cache_get.call(null,reagent.impl.template.tag_name_cache,x); if((temp__4659__auto__ == null)){ return (reagent.impl.template.tag_name_cache[x] = reagent.impl.template.parse_tag.call(null,x)); } else { var s = temp__4659__auto__; return s; } }); reagent.impl.template.native_element = (function reagent$impl$template$native_element(parsed,argv,first){ var comp = (parsed["name"]); var props = cljs.core.nth.call(null,argv,first,null); var hasprops = ((props == null)) || (cljs.core.map_QMARK_.call(null,props)); var jsprops = reagent.impl.template.convert_props.call(null,((hasprops)?props:null),parsed); var first_child = (first + ((hasprops)?(1):(0))); if(reagent.impl.template.input_component_QMARK_.call(null,comp)){ return reagent.impl.template.as_element.call(null,cljs.core.with_meta.call(null,new cljs.core.PersistentVector(null, 5, 5, cljs.core.PersistentVector.EMPTY_NODE, [reagent.impl.template.reagent_input.call(null),argv,comp,jsprops,first_child], null),cljs.core.meta.call(null,argv))); } else { var key = reagent.impl.template.get_key.call(null,cljs.core.meta.call(null,argv)); var p = (((key == null))?jsprops:reagent.impl.template.oset.call(null,jsprops,"key",key)); return reagent.impl.template.make_element.call(null,argv,comp,p,first_child); } }); reagent.impl.template.str_coll = (function reagent$impl$template$str_coll(coll){ return [cljs.core.str(clojure.walk.prewalk.call(null,(function (x){ if(cljs.core.fn_QMARK_.call(null,x)){ var n = reagent.impl.util.fun_name.call(null,x); var G__26867 = n; switch (G__26867) { case "": return x; break; default: return cljs.core.symbol.call(null,n); } } else { return x; } }),coll))].join(''); }); reagent.impl.template.hiccup_err = (function reagent$impl$template$hiccup_err(var_args){ var args__26212__auto__ = []; var len__26205__auto___26871 = arguments.length; var i__26206__auto___26872 = (0); while(true){ if((i__26206__auto___26872 < len__26205__auto___26871)){ args__26212__auto__.push((arguments[i__26206__auto___26872])); var G__26873 = (i__26206__auto___26872 + (1)); i__26206__auto___26872 = G__26873; continue; } else { } break; } var argseq__26213__auto__ = ((((1) < args__26212__auto__.length))?(new cljs.core.IndexedSeq(args__26212__auto__.slice((1)),(0),null)):null); return reagent.impl.template.hiccup_err.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),argseq__26213__auto__); }); reagent.impl.template.hiccup_err.cljs$core$IFn$_invoke$arity$variadic = (function (v,msg){ return [cljs.core.str(cljs.core.apply.call(null,cljs.core.str,msg)),cljs.core.str(": "),cljs.core.str(reagent.impl.template.str_coll.call(null,v)),cljs.core.str("\n"),cljs.core.str(reagent.impl.component.comp_name.call(null))].join(''); }); reagent.impl.template.hiccup_err.cljs$lang$maxFixedArity = (1); reagent.impl.template.hiccup_err.cljs$lang$applyTo = (function (seq26869){ var G__26870 = cljs.core.first.call(null,seq26869); var seq26869__$1 = cljs.core.next.call(null,seq26869); return reagent.impl.template.hiccup_err.cljs$core$IFn$_invoke$arity$variadic(G__26870,seq26869__$1); }); reagent.impl.template.vec_to_elem = (function reagent$impl$template$vec_to_elem(v){ while(true){ if((cljs.core.count.call(null,v) > (0))){ } else { throw (new Error([cljs.core.str("Assert failed: "),cljs.core.str(reagent.impl.template.hiccup_err.call(null,v,"Hiccup form should not be empty")),cljs.core.str("\n"),cljs.core.str("(pos? (count v))")].join(''))); } var tag = cljs.core.nth.call(null,v,(0),null); if(reagent.impl.template.valid_tag_QMARK_.call(null,tag)){ } else { throw (new Error([cljs.core.str("Assert failed: "),cljs.core.str(reagent.impl.template.hiccup_err.call(null,v,"Invalid Hiccup form")),cljs.core.str("\n"),cljs.core.str("(valid-tag? tag)")].join(''))); } if(reagent.impl.template.hiccup_tag_QMARK_.call(null,tag)){ var n = cljs.core.name.call(null,tag); var pos = n.indexOf(">"); var G__26875 = pos; switch (G__26875) { case (-1): return reagent.impl.template.native_element.call(null,reagent.impl.template.cached_parse.call(null,n),v,(1)); break; case (0): var comp = cljs.core.nth.call(null,v,(1),null); if(cljs.core._EQ_.call(null,">",n)){ } else { throw (new Error([cljs.core.str("Assert failed: "),cljs.core.str(reagent.impl.template.hiccup_err.call(null,v,"Invalid Hiccup tag")),cljs.core.str("\n"),cljs.core.str("(= \">\" n)")].join(''))); } if((typeof comp === 'string') || (cljs.core.fn_QMARK_.call(null,comp))){ } else { throw (new Error([cljs.core.str("Assert failed: "),cljs.core.str(reagent.impl.template.hiccup_err.call(null,v,"Expected React component in")),cljs.core.str("\n"),cljs.core.str("(or (string? comp) (fn? comp))")].join(''))); } return reagent.impl.template.native_element.call(null,({"name": comp}),v,(2)); break; default: var G__26877 = new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [cljs.core.subs.call(null,n,(0),pos),cljs.core.assoc.call(null,v,(0),cljs.core.subs.call(null,n,(pos + (1))))], null); v = G__26877; continue; } } else { if((tag instanceof reagent.impl.template.NativeWrapper)){ return reagent.impl.template.native_element.call(null,tag,v,(1)); } else { return reagent.impl.template.reag_element.call(null,tag,v); } } break; } }); reagent.impl.template.as_element = (function reagent$impl$template$as_element(x){ if(reagent.impl.template.js_val_QMARK_.call(null,x)){ return x; } else { if(cljs.core.vector_QMARK_.call(null,x)){ return reagent.impl.template.vec_to_elem.call(null,x); } else { if(cljs.core.seq_QMARK_.call(null,x)){ return reagent.impl.template.expand_seq_check.call(null,x); } else { if(reagent.impl.template.named_QMARK_.call(null,x)){ return cljs.core.name.call(null,x); } else { if(((!((x == null)))?((((x.cljs$lang$protocol_mask$partition0$ & (2147483648))) || (x.cljs$core$IPrintWithWriter$))?true:(((!x.cljs$lang$protocol_mask$partition0$))?cljs.core.native_satisfies_QMARK_.call(null,cljs.core.IPrintWithWriter,x):false)):cljs.core.native_satisfies_QMARK_.call(null,cljs.core.IPrintWithWriter,x))){ return cljs.core.pr_str.call(null,x); } else { return x; } } } } } }); reagent.impl.component.as_element = reagent.impl.template.as_element; reagent.impl.template.expand_seq = (function reagent$impl$template$expand_seq(s){ var a = cljs.core.into_array.call(null,s); var n__26045__auto___26880 = a.length; var i_26881 = (0); while(true){ if((i_26881 < n__26045__auto___26880)){ (a[i_26881] = reagent.impl.template.as_element.call(null,(a[i_26881]))); var G__26882 = (i_26881 + (1)); i_26881 = G__26882; continue; } else { } break; } return a; }); reagent.impl.template.expand_seq_dev = (function reagent$impl$template$expand_seq_dev(s,o){ var a = cljs.core.into_array.call(null,s); var n__26045__auto___26883 = a.length; var i_26884 = (0); while(true){ if((i_26884 < n__26045__auto___26883)){ var val_26885 = (a[i_26884]); if((cljs.core.vector_QMARK_.call(null,val_26885)) && ((reagent.impl.template.key_from_vec.call(null,val_26885) == null))){ (o["no-key"] = true); } else { } (a[i_26884] = reagent.impl.template.as_element.call(null,val_26885)); var G__26886 = (i_26884 + (1)); i_26884 = G__26886; continue; } else { } break; } return a; }); reagent.impl.template.expand_seq_check = (function reagent$impl$template$expand_seq_check(x){ var ctx = ({}); var vec__26890 = reagent.ratom.check_derefs.call(null,((function (ctx){ return (function (){ return reagent.impl.template.expand_seq_dev.call(null,x,ctx); });})(ctx)) ); var res = cljs.core.nth.call(null,vec__26890,(0),null); var derefed = cljs.core.nth.call(null,vec__26890,(1),null); if(cljs.core.truth_(derefed)){ if(cljs.core.truth_(reagent.debug.has_console)){ (cljs.core.truth_(reagent.debug.tracking)?reagent.debug.track_console:console).warn([cljs.core.str("Warning: "),cljs.core.str(reagent.impl.template.hiccup_err.call(null,x,"Reactive deref not supported in lazy seq, ","it should be wrapped in doall"))].join('')); } else { } } else { } if(cljs.core.truth_((ctx["no-key"]))){ if(cljs.core.truth_(reagent.debug.has_console)){ (cljs.core.truth_(reagent.debug.tracking)?reagent.debug.track_console:console).warn([cljs.core.str("Warning: "),cljs.core.str(reagent.impl.template.hiccup_err.call(null,x,"Every element in a seq should have a unique :key"))].join('')); } else { } } else { } return res; }); reagent.impl.template.make_element = (function reagent$impl$template$make_element(argv,comp,jsprops,first_child){ var G__26894 = (cljs.core.count.call(null,argv) - first_child); switch (G__26894) { case (0): return (reagent.impl.util.react["createElement"])(comp,jsprops); break; case (1): return (reagent.impl.util.react["createElement"])(comp,jsprops,reagent.impl.template.as_element.call(null,cljs.core.nth.call(null,argv,first_child,null))); break; default: return (reagent.impl.util.react["createElement"]).apply(null,cljs.core.reduce_kv.call(null,((function (G__26894){ return (function (a,k,v){ if((k >= first_child)){ a.push(reagent.impl.template.as_element.call(null,v)); } else { } return a; });})(G__26894)) ,[comp,jsprops],argv)); } }); //# sourceMappingURL=template.js.map?rel=1603199188788