mini-js
Version:
Mini Js is a Javascript library/framework which is inspired by vue.js, it supports two way data binding, virtual dom, directives, routing etc.
51 lines • 20.8 kB
JavaScript
var $jscomp=$jscomp||{};$jscomp.scope={};$jscomp.ASSUME_ES5=!1;$jscomp.ASSUME_NO_NATIVE_MAP=!1;$jscomp.ASSUME_NO_NATIVE_SET=!1;$jscomp.defineProperty=$jscomp.ASSUME_ES5||"function"==typeof Object.defineProperties?Object.defineProperty:function(a,b,c){a!=Array.prototype&&a!=Object.prototype&&(a[b]=c.value)};$jscomp.getGlobal=function(a){return"undefined"!=typeof window&&window===a?a:"undefined"!=typeof global&&null!=global?global:a};$jscomp.global=$jscomp.getGlobal(this);$jscomp.SYMBOL_PREFIX="jscomp_symbol_";
$jscomp.initSymbol=function(){$jscomp.initSymbol=function(){};$jscomp.global.Symbol||($jscomp.global.Symbol=$jscomp.Symbol)};$jscomp.symbolCounter_=0;$jscomp.Symbol=function(a){return $jscomp.SYMBOL_PREFIX+(a||"")+$jscomp.symbolCounter_++};
$jscomp.initSymbolIterator=function(){$jscomp.initSymbol();var a=$jscomp.global.Symbol.iterator;a||(a=$jscomp.global.Symbol.iterator=$jscomp.global.Symbol("iterator"));"function"!=typeof Array.prototype[a]&&$jscomp.defineProperty(Array.prototype,a,{configurable:!0,writable:!0,value:function(){return $jscomp.arrayIterator(this)}});$jscomp.initSymbolIterator=function(){}};$jscomp.arrayIterator=function(a){var b=0;return $jscomp.iteratorPrototype(function(){return b<a.length?{done:!1,value:a[b++]}:{done:!0}})};
$jscomp.iteratorPrototype=function(a){$jscomp.initSymbolIterator();a={next:a};a[$jscomp.global.Symbol.iterator]=function(){return this};return a};$jscomp.iteratorFromArray=function(a,b){$jscomp.initSymbolIterator();a instanceof String&&(a+="");var c=0,d={next:function(){if(c<a.length){var e=c++;return{value:b(e,a[e]),done:!1}}d.next=function(){return{done:!0,value:void 0}};return d.next()}};d[Symbol.iterator]=function(){return d};return d};
$jscomp.polyfill=function(a,b,c,d){if(b){c=$jscomp.global;a=a.split(".");for(d=0;d<a.length-1;d++){var e=a[d];e in c||(c[e]={});c=c[e]}a=a[a.length-1];d=c[a];b=b(d);b!=d&&null!=b&&$jscomp.defineProperty(c,a,{configurable:!0,writable:!0,value:b})}};$jscomp.polyfill("Array.prototype.keys",function(a){return a?a:function(){return $jscomp.iteratorFromArray(this,function(a){return a})}},"es6","es3");
var generate_event_listeners=function(a){var b='"event_listeners": {',c;for(c in a){var d=a[c];b+='"'+c+'": [';for(var e=0;e<d.length;e++)b+=d[e]+", ";b=b.substring(0,b.length-2)+"], "}return b=b.substring(0,b.length-2)+"}, "},generate_meta=function(a){var b="{",c;for(c in a)b="event_listeners"==c?b+generate_event_listeners(a[c]):b+('"'+c+'": '+a[c]+", ");return b=b.substring(0,b.length-2)+"}, "},default_metadata=function(){return{should_render:!1}},empty_v_node='m("#text", '+generate_meta(default_metadata())+
'"")',special_directives={},directives={},noop=function(){},add_event_listener_code_to_v_node=function(a,b,c){var d=c.meta;c=d.event_listeners;void 0===c&&(c=d.event_listeners={});d=c[a];void 0===d?c[a]=[b]:d.push(b)},event_modifiers_code={stop:"event.stopPropagation();",prevent:"event.preventDefault();",ctrl:"if(event.ctrlKey \x3d\x3d\x3d false) {return null;};",shift:"if(event.shiftKey \x3d\x3d\x3d false) {return null;};",alt:"if(event.altKey \x3d\x3d\x3d false) {return null;};",enter:"if(event.keyCode !\x3d\x3d 13) {return null;};"};
special_directives["m-if"]={after_generate:function(a,b,c,d){a=a.value;compile_template_expression(a,d.dependencies);return a+" ? "+b+" : "+empty_v_node}};
special_directives["m-for"]={before_generate:function(a,b,c,d){c.deep=!0},after_generate:function(a,b,c,d){c=d.dependencies;d=a.value.split(" in ");a=d[0].split(",");d=d[1];compile_template_expression(d,c);for(var e=a.join(","),f=0;f<a.length;f++){var g=c.indexOf(a[f]);-1!==g&&c.splice(g,1)}return"m.render_loop("+d+", function("+e+") { return "+b+"; })"}};
special_directives["m-on"]={before_generate:function(a,b,c,d){c=a.value;a=a.meta.args.split(".");var e=a.shift(),f="event",g=c.split("(");1<g.length&&(c=g.shift(),f=g.join("(").slice(0,-1),compile_template_expression(f,d.dependencies));d="";for(g=0;g<a.length;g++){var n=event_modifiers_code[a[g]];d=void 0===n?d+('if(m.render_event_modifier(event.keyCode, "'+a[g]+'") \x3d\x3d\x3d false) {return null;};'):d+n}add_event_listener_code_to_v_node(e,"function(event) {"+d+'instance.call_method("'+c+'", ['+
f+"])}",b)}};
special_directives["m-model"]={before_generate:function(a,b,c,d){a=a.value;var e=b.props.attrs,f=d.dependencies;noop(" m-model :: ",a,e);compile_template_expression(a,f);var g="input";d="value";var n=c=a,k="event.target."+d,l=e.type;if(void 0!==l){l=l.value;var h=!1;if("checkbox"===l||"radio"===l&&(h=!0))if(g="change",d="checked",!0===h){k=e.value;l=null;h="null";if(void 0!==k)h='"'+compile_template(k.value,f,!0)+'"';else if(l=e["m-literal:value"])h=""+compile_template(l.value,f,!0);c=c+" \x3d\x3d\x3d "+
h;k=h}else k="event.target."+d}e=n.indexOf("[");f=n.indexOf(".");h=l=null;h=-1;if(-1!==e||-1!==f)h=-1===e?f:-1===f?e:e<f?e:f,l=a.substring(0,h),h=a.substring(h),n=l+h.replace(expression_RE,function(a,b){return void 0!==b?'" + '+b+' + "':a});add_event_listener_code_to_v_node(g,'function(event) {instance.set("'+n+'", '+k+")}",b);a=b.props.dom;void 0===a&&(b.props.dom=a={});a[d]=c}};
special_directives["m-literal"]={during_prop_generate:function(a,b,c){b=a.meta.args;a=a.value;compile_template_expression(a,c.dependencies);!1===c.hasAttrs&&(c.hasAttrs=!0);return"class"===b?'"class": m.render_class('+a+"), ":'"'+b+'": '+a+", "}};special_directives["m-html"]={before_generate:function(a,b,c,d){a=a.value;c=b.props.dom;void 0===c&&(b.props.dom=c={});compile_template_expression(a,d.dependencies);c.innerHTML='("" + '+a+")"}};special_directives["m-mask"]={};
directives["m-show"]=function(a,b,c){a.style.display=b?"":"none"};
var generate_node=function(a,b,c){if("string"===typeof a){c=compile_template(a,c.dependencies,!0);var d=default_metadata();a!==c&&(d.should_render=!0,b.meta.should_render=!0);return'm("#text", '+generate_meta(d)+'"'+c+'")'}d='m("'+a.type+'", ';var e=default_metadata();a.meta=e;var f=generate_props(a,b,c),g=c.special_directives_after;null!==g&&(c.special_directives_after=null);var n=a.children,k=n.length,l="[";if(0==k)l+="]";else{for(var h=0;h<k;h++)l+=generate_node(n[h],a,c)+", ";l=l.substring(0,
l.length-2)+"]"}1==a.deep&&(l="[].concat.apply([], "+l+")");1==a.meta.should_render&&void 0!==b&&(b.meta.should_render=!0);d=d+f+generate_meta(e);d=d+l+")";if(null!==g)for(var p in g)b=g[p],d=b.after_generate(b.prop,d,a,c);return d},generate_props=function(a,b,c){var d=a.props;a.props={attrs:d};var e=!1,f=[],g=!1,n={},k=null,l=null,h="{attrs: {",p=null;for(k in d){var q=d[k];var r=q.name;void 0!==(l=special_directives[r])&&void 0!==(p=l.before_generate)&&p(q,a,b,c)}var t;for(k in d)q=d[k],r=q.name,
void 0!==(l=special_directives[r])?(void 0!==(b=l.after_generate)&&(n[r]={prop:q,after_generate:b},g=!0),void 0!==(t=l.during_prop_generate)&&(h+=t(q,a,c)),a.meta.should_render=!0):"m"==r[0]&&"-"==r[1]?(f.push(q),e=!0,a.meta.should_render=!0):(r=q.value,q=compile_template(r,c.dependencies,!0),r!==q&&(a.meta.should_render=!0),0==c.has_attrs&&(c.has_attrs=!0),h+='"'+k+'": "'+q+'", ');1==c.has_attrs?(h=h.substring(0,h.length-2)+"}",c.has_attrs=!1):h+="}";if(1==e){h+=", {directives: {";for(k=0;k<f.length;k++)d=
f[k],e=d.value,compile_template_expression(e,c.dependencies),h+='"'+d.name+'": "'+(0==e.length?"":e)+'", ';h=h.substring(0,h.length-2)+"}"}1==g&&(c.special_directives_after=n);a=a.props.dom;if(void 0!==a){h+=", dom: {";for(var u in a)h+='"'+u+'": '+a[u]+", ";h=h.substring(0,h.length-2)+"}"}return h+"}, "},compile_template=function(a,b,c){a={template:a,current:0,dependencies:b,output:""};compile_template_state(a,c);return a.output},open_RE=/\{\{/,close_RE=/\}\}/,compile_template_state=function(a,b){for(var c=
a.template.length;a.current<c;){var d=scan_template_until(a,open_RE);0!==d.length&&(a.output+=escape_string(d));if(a.current==c)break;a.current+=2;scan_template_for_white_space(a);d=scan_template_until(a,close_RE);if(a.current==c){console.error('Expected closing delimiter "}}" after "'+d+'"');break}0!==d.length&&(compile_template_expression(d,a.dependencies),b&&(d='" + '+d+' + "'),a.output+=d);scan_template_for_white_space(a);a.current+=2}},scan_template_until=function(a,b){var c=a.template.substring(a.current);
b=c.search(b);switch(b){case -1:break;case 0:c="";break;default:c=c.substring(0,b)}a.current+=c.length;return c},expression_RE=/"[^"]*"|'[^']*'|\.\w*[a-zA-Z$_]\w*|\w*[a-zA-Z$_]\w*:|(\w*[a-zA-Z$_]\w*)/g,globals="true false undefined null NaN typeof in".split(" "),compile_template_expression=function(a,b){a.replace(expression_RE,function(a,d){void 0!==d&&-1==b.indexOf(d)&&-1==globals.indexOf(d)&&b.push(d)});return b},escapeRE=/(?:(?:&(?:lt|gt|quot|amp);)|"|\\|\n)/g,escapeMap={"\x26lt;":"\x3c","\x26gt;":"\x3e",
"\x26quot;":'\\"',"\x26amp;":"\x26","\\":"\\\\",'"':'\\"',"\n":"\\n"},escape_string=function(a){return a.replace(escapeRE,function(a){return escapeMap[a]})},white_space_RE=/\s/,scan_template_for_white_space=function(a){for(var b=a.template,c=b[a.current];white_space_RE.test(c);)c=b[++a.current]},generator=function(a){var b={has_attrs:!1,dependencies:[],special_directives_after:null};a=generate_node(a.children[0],void 0,b);b=b.dependencies;for(var c="",d=0;d<b.length;d++){var e=b[d];c+="var "+e+' \x3d instance.get("'+
e+'"); '}a="var instance \x3d this; "+c+" return "+a+";";noop(" generated code is :: ",a);try{return new Function("m",a)}catch(f){return noop(" Unable to create render function, ",f),noop}},lexical_analysis=function(a){a={str:a,tokens:[],current:0};lex_state(a);noop(" lex : ",a.tokens);return a.tokens};function lex_state(a){for(var b=a.str,c=a.str.length;a.current<c;)"\x3c"!==b.charAt(a.current)?get_text(a):"\x3c!--"==b.substr(a.current,4)?get_comment(a):get_tag(a)}
function get_text(a){var b=a.str,c=a.str.length,d=a.current,e=b.substring(d).search(/<\/?(?:[A-Za-z]+\w*)|\x3c!--/);-1==e?(a.tokens.push({type:"text",value:b.slice(d)}),a.current=c):0!==e&&(e+=d,a.tokens.push({type:"text",value:b.slice(d,e)}),a.current=e)}function get_comment(a){var b=a.current+4,c=a.str,d=a.str.length,e=c.indexOf("--\x3e",b);-1==e?(a.tokens.push({type:"comment",value:c.slice(b)}),a.current=d):(a.tokens.push({type:"comment",value:c.slice(b,e)}),a.current=e+3)}
function get_tag(a){var b=a.str,c="/"==b.charAt(a.current+1);a.current+=c?2:1;var d=get_tag_name(a);get_tag_attributes(d,a);b="/"==b.charAt(a.current);a.current+=b?2:1;c&&(d.tag_closing=!0);b&&(d.tag_self_closing=!0);noop("done with get tag ")}function get_tag_name(a){for(var b=a.current,c=a.str.length,d=a.str,e="";b<c;){var f=d.charAt(b);if("/"==f||" "==f||"\x3e"==f)break;else e+=f;b++}a.current=b;b={type:"tag",value:e};a.tokens.push(b);return b}
function get_tag_attributes(a,b){function c(){f++;g=d.charAt(f);n=d.charAt(f+1)}for(var d=b.str,e=b.str.length,f=b.current,g=d.charAt(f),n=d.charAt(f+1),k={};f<e&&"\x3e"!=g&&("/"!=g||"\x3e"!=n);)if(" "==g)c();else{for(var l="",h=!1;f<e&&"\x3d"!==g;){if(" "==g||"/"==g&&"\x3e"==n){h=!0;break}l+=g;c()}c();var p={name:l,value:"",meta:{}};noop(l,h,g);if(!h){h="";if("'"==g||'"'==g)h=g,c();for(;f<e&&g!==h;)p.value+=g,c();noop(" val : ",p.value,h);c();-1!==l.indexOf(":")&&(h=l.split(":"),p.name=
h[0],p.meta.args=h[1])}k[l]=p}noop(" att ",k);b.current=f;a.attributes=k}
var __router__=!1,define_property=function(a,b,c,d){a[b]=void 0==c?d:c},init_methods=function(a,b){function c(b,c){d[b]=function(){a.$data.get=a.get.bind(a);a.$data.set=a.set.bind(a);return c.apply(a.$data,arguments)}}var d=a.$data,e;for(e in b)c(e,b[e])},call_hooks=function(a,b){b=a.$hooks[b];void 0!==b&&b.call(a)},Observer=function(a){this.instance=a;this.cache={};this.setters={};this.clear={};this.target=null;this.map={}},create_element=function(a,b,c,d,e){return{type:a,val:b,props:c,children:e,
meta:d||default_metadata()}},TEXT_TYPE="#text",eventModifiers={},components={},m=function(a,b,c,d){return a==TEXT_TYPE?create_element(TEXT_TYPE,c,{attrs:{}},b,[]):create_element(a,"",b,c,d)};m.render_class=function(a){if("string"===typeof a)return a;var b="";if(Array.isArray(a))for(var c=0;c<a.length;c++)b+=m.render_class(a[c])+" ";else if("object"===typeof a)for(c in a)a[c]&&(b+=c+" ");return b=b.slice(0,-1)};
m.render_loop=function(a,b){var c=null;if(Array.isArray(a)){c=Array(a.length);for(var d=0;d<a.length;d++)c[d]=b(a[d],d)}else if("object"===typeof a)for(d in c=[],a)c.push(b(a[d],d));else if("number"===typeof a)for(c=Array(a),d=0;d<a;d++)c[d]=b(d+1,d);return c};m.render_event_modifier=function(a,b){return a===eventModifiers[b]};
function Mini(a){void 0===a&&(a={});this.$options=a;define_property(this,"$name",a.name,"root");var b=a.data;this.$data=void 0==b?{}:"function"==typeof b?b():b;define_property(this,"$render",a.render,noop);define_property(this,"$hooks",a.hooks,{});a=a.methods;void 0!==a&&init_methods(this,a);this.make_reactive(this.$data);this.$events={};this.$dom={};this.$observer=new Observer(this);this.$destroyed=!0;this.$queued=!1;noop(" checking for router :: ",__router__);__router__||(noop(" no router found"),
this.init())}
var append_child=function(a,b,c){c.appendChild(a)},add_event_listeners=function(a,b){var c=function(c){var d=function(a){for(var b=d.handlers,c=0;c<b.length;c++)b[c](a)};d.handlers=b[c];b[c]=d;a.addEventListener(c,d)},d;for(d in b)c(d)},diff_props=function(a,b,c,d){var e=d.attrs,f;for(f in e){var g=e[f],n=b[f];void 0===g||null===g||!1===g||void 0!=n&&!n&&g===n||a.setAttribute(f,1==g?"":g)}for(var k in b)b=e[k],void 0!=b&&0!=b&&null!=b||a.removeAttribute(k);if(void 0!==(e=d.directives))for(var l in e){var h;void 0!==
(h=e[l])&&h(a,e[l],c)}if(void 0!==(c=d.dom))for(var p in c)d=c[p],void 0!==a[p]&&(a[p]=d)},diff_event_listeners=function(a,b,c){for(var d in b){var e=c[d];void 0==e?a.removeEventListener(d,e):c[d].handler=b[d]}},create_node_from_v_node=function(a){var b=a.type,c=a.meta;if("#text"==b)b=document.createTextNode(a.val);else{var d=a.children;b=document.createElement(b);var e=d[0];if(1==d.length&&"#text"==e.type)b.textContent=e.val,e.meta.el=b.firstChild;else for(e=0;e<d.length;e++)append_child(create_node_from_v_node(d[e]),
a,b);var f;void 0!==(f=c.event_listeners)&&add_event_listeners(b,f)}diff_props(b,{},a,a.props);return a.meta.el=b},replace_child=function(a,b,c,d){var e;void 0!==(e=a._mini_)&&e.destroy();d.replaceChild(b,a);var f;void 0!==(f=c.meta.component)&&create_node_from_v_node(b,c,f)},remove_child=function(a,b){var c;void 0!==(c=a._mini_)&&c.destroy();b.removeChild(a)},extract_attrs=function(a){var b={};a=a.attributes;for(var c=a.length;c--;)b[a[c].name]=a[c].value;return b},hydrate=function(a,b,c){var d=
null!==a?a.nodeName.toUpperCase():null,e=b.meta;if(d!==b.type)return e=create_node_from_v_node(b),replace_child(a,e,b,c),e;if(b==TEXT_TYPE)a.textContent!==b.val&&(a.textContent=b.val),e.el=a;else if(void 0===e.component){e.el=a;c=b.props;diff_props(a,extract_attrs(a),b,c);var f;void 0!==(f=e.event_listeners)&&add_event_listeners(a,f);c=c.dom;if(void 0==c||void 0==c.innerHTML){b=b.children;c=b.length;e=0;f=a.firstChild;d=0!==c?b[0]:null;for(var g;null!==d||null!==f;)g=null,void 0==f?append_child(create_node_from_v_node(d),
d,a):(g=f.nextSibling,null==d?remove_child(f,a):hydrate(f,d,a)),e++,d=e<c?b[e]:null,f=g}return a}},diff=function(a,b,c,d,e,f){d=a.meta;var g=c.meta;if(a.type!==c.type)b[e]=c,replace_child(d.el,create_node_from_v_node(c),c,f);else if(1==g.should_render)if(c.type==TEXT_TYPE)b=c.val,a.val!==b&&(a.val=b,d.el.textContent=b);else if(void 0===g.component){b=d.el;e=a.props;f=c.props;diff_props(b,e.attrs,c,f);e.attrs=f.attrs;var n;void 0!==(n=g.event_listeners)&&diff_event_listeners(b,n,d.event_listeners);
d=f.dom;if(void 0==d||void 0==d.innerHTML)if(c=c.children,n=a.children,g=n.length,d=c.length,0==d&&0!==g){for(;null!==(c=b.firstChild);)remove_child(c,b);a.children=[]}else if(0==g){for(g=0;g<d;g++)n=c[g],append_child(create_node_from_v_node(n),n,b);a.children=c}else{a=d>g?d:g;for(var k=0;k<a;k++)k>=d?remove_child(n.pop().meta.el,b):k>=g?(f=c[k],append_child(create_node_from_v_node(f),f,b),n.push(f)):(e=n[k],f=c[k],e!==f&&diff(e,n,f,c,k,b))}}},hash_RE=/\[(\w+)\]/g,resolve_key_path=function(a,b,c,
d){c=c.replace(hash_RE,"$1");c=c.split(".");var e=0;for(e;e<c.length-1;e++)b=b[c[e]];b[c[e]]=d;a.make_reactive(b,d);return c[0]},queue_build=function(a){if(!1===a.$queued||0==a.$destroyed)a.$queued=!0,setTimeout(function(){a.build();call_hooks(a,"updated");a.$queued=!1},0)};Mini.prototype.get=function(a){return this.$data[a]};Mini.prototype.set=function(a,b){resolve_key_path(this,this.$data,a,b);queue_build(this)};
Mini.prototype.call_method=function(a,b){b=b||[];b.push(this.$data);return this.$data[a].apply(this,b)};Mini.prototype.off=function(a,b){void 0===a?this.$events={}:void 0===b?this.$events[a]=[]:(a=this.$events[a],b=a.indexOf(b),a.splice(b,1))};Mini.prototype.destroy=function(){this.off();this.$el=null;this.$destroyed=!0;call_hooks(this,"destroyed")};Mini.prototype.render=function(){return this.$render(m)};
Mini.prototype.patch=function(a,b,c){if(void 0!==a.meta)if(a.type!==b.type){var d=create_node_from_v_node(b);replace_child(a.meta.el,d,b,c);d._mini_=this;this.$el=d}else diff(a,[],b,[],0,c);else a instanceof Node&&hydrate(a,b,c)!==a&&(this.$el=b.meta.el,this.$el._mini_=this)};
Mini.prototype.build=function(){var a=this.render();noop("this.$dom.meta :: ",this.$dom.meta);if(void 0!==this.$dom.meta)var b=this.$dom;else b=this.$el,this.$dom=a;noop(" initial dom ins :: ",a,b);this.patch(b,a,this.$el.parentNode)};Mini.compile=function(a){a=lexical_analysis(a);a=parser(a);return generator(a)};
Mini.prototype.mount=function(a){this.$el="string"==typeof a?document.querySelector(a):a;this.$destroyed=!1;this.$el._mini_=this;noop(" checking for template: ",this.$options.template,this.$el.outerHTML,this.$render);define_property(this,"$template",this.$options.template,this.$el.outerHTML);this.$render===noop&&(this.$render=Mini.compile(this.$template));noop(" template is : ",this.$template);this.build();call_hooks(this,"mounted")};
Mini.prototype.init=function(){call_hooks(this);var a=this.$options.el;void 0!==a&&this.mount(a)};function parser(a){for(var b={type:"root",children:[]},c={current:0,tokens:a};c.current<a.length;){var d=getChild(c);d&&b.children.push(d)}noop(" root is :: ",b);return b}var SELF_CLOSING_ELEMENTS="area base br command embed hr img input keygen link meta param source track wbr".split(" "),SVG_ELEMENTS="svg animate circle clippath cursor defs desc ellipse filter font-face foreignObject g glyph image line marker mask missing-glyph path pattern polygon polyline rect switch symbol text textpath tspan use view".split(" ");
function createNode(a,b,c){return{type:a,props:b,children:c}}
function getChild(a){var b=a.tokens[a.current],c=a.tokens[a.current-1],d=function(d){a.current+=void 0==d?1:d;b=a.tokens[a.current];c=a.tokens[a.current-1]};if("text"==b.type)return d(),c.value;if("comment"==b.type)return d(),null;if("tag"==b.type){var e=b.value,f=b.tag_self_closing,g=b.tag_closing,n=-1!==SVG_ELEMENTS.indexOf(e),k=-1!==SELF_CLOSING_ELEMENTS.indexOf(e)||1==f;f=createNode(e,b.attributes,[]);d();n&&(f.is_svg=!0);if(!k){if(g)return console.error(" Cannot find a closing tag for element : ",f.type),
null;if(void 0!==b){for(;"tag"!==b.type||"tag"==b.type&&(void 0==b.tag_self_closing&&void 0==b.tag_closing||b.value!==e);)if(g=getChild(a),null!==g&&f.children.push(g),d(0),void 0==b){console.error('The element "'+f.type+'" was left unclosed');break}d()}}return f}d()}
function set_object_setter_getter(a,b,c){var d=Object.getOwnPropertyDescriptor(a,b);if(!d||!1!==d.configurable){var e=a[b];Object.defineProperty(a,b,{enumerable:!0,configurable:!0,get:function(){return e},set:function(a){e=a;queue_build(c)}})}}
Mini.prototype.make_reactive=function(a){noop(" making reactive ",a);for(var b=Object.keys(a),c,d,e=0;e<b.length;e++){c=b[e];d=a[c];if("object"==typeof d)this.make_reactive(d);else if(Array.isArray(d))for(var f=0;f<d.length;f++)this.make_reactive(d[e]);set_object_setter_getter(a,c,this)}};
var MiniRouter=function(){var a={},b={},c=function(a,c){c.$dom.meta=void 0;b.route&&(b={});c.init();b.route=a;b.initial_data=JSON.parse(JSON.stringify(c.$data));noop(" initial data set : ",a,b.initial_data)},d=function(b){noop(" route changed called");""==location.hash||"#/"==location.hash?(noop(" in home page :: ",a["#/"]),b=a["#/"].controller,c("#/",b)):void 0!==(b=a[location.hash])?(b=b.controller,c(location.hash,b)):void 0===a["404"]&&console.error(" sorry the route not found :-( !! ")},
e=function(){var a=window.location;window.onhashchange=function(b){noop("has chnaged :: ",b,a.hash);b="#"+b.oldURL.split("#")[1];noop(" old hash is :: ",b,b.length);d(b)};d()};return{when:function(b,c){b="#"==b.trim().charAt(0)?b:"#"+b;a[b]=c;return this},done:function(){noop("router running :: ",a,__router__);__router__=!0;e()}}}();