UNPKG

4.5 kBJavaScriptView Raw
1!function(){var Runtime,dataName,document,__slice=[].slice;dataName="__hamlJR_data";if(typeof window!=="undefined"&&window!==null){document=window.document}else{document=global.document}Runtime=function(context){var append,bindObservable,classes,id,lastParent,observeAttribute,observeText,pop,push,render,stack,top;stack=[];lastParent=function(){var element,i;i=stack.length-1;while((element=stack[i])&&element.nodeType===11){i-=1}return element};top=function(){return stack[stack.length-1]};append=function(child){var _ref;if((_ref=top())!=null){_ref.appendChild(child)}return child};push=function(child){return stack.push(child)};pop=function(){return append(stack.pop())};render=function(child){push(child);return pop()};bindObservable=function(element,value,update){var observable;if(typeof Observable==="undefined"||Observable===null){update(value);return}observable=Observable(value);observable.observe(update);return update(observable())};id=function(){var element,sources,update,value;sources=1<=arguments.length?__slice.call(arguments,0):[];element=top();update=function(newValue){if(typeof newValue==="function"){newValue=newValue()}return element.id=newValue};value=function(){var possibleValues;possibleValues=sources.map(function(source){if(typeof source==="function"){return source()}else{return source}}).filter(function(idValue){return idValue!=null});return possibleValues[possibleValues.length-1]};return bindObservable(element,value,update)};classes=function(){var element,sources,update,value;sources=1<=arguments.length?__slice.call(arguments,0):[];element=top();update=function(newValue){if(typeof newValue==="function"){newValue=newValue()}return element.className=newValue};value=function(){var possibleValues;possibleValues=sources.map(function(source){if(typeof source==="function"){return source()}else{return source}}).filter(function(sourceValue){return sourceValue!=null});return possibleValues.join(" ")};return bindObservable(element,value,update)};observeAttribute=function(name,value){var element,update;element=top();update=function(newValue){return element.setAttribute(name,newValue)};return bindObservable(element,value,update)};observeText=function(value){var element,update;switch(value!=null?value.nodeType:void 0){case 1:case 3:case 11:render(value);return}element=document.createTextNode("");update=function(newValue){return element.nodeValue=newValue};bindObservable(element,value,update);return render(element)};return{push:push,pop:pop,id:id,classes:classes,attribute:observeAttribute,text:observeText,filter:function(name,content){},each:function(items,fn){var elements,parent,replace;items=Observable(items);elements=[];parent=lastParent();items.observe(function(newItems){return replace(elements,newItems)});replace=function(oldElements,items){var firstElement;if(oldElements){firstElement=oldElements[0];parent=(firstElement!=null?firstElement.parentElement:void 0)||parent;elements=items.map(function(item,index,array){var element;element=fn.call(item,item,index,array);element[dataName]=item;parent.insertBefore(element,firstElement);return element});return oldElements.each(function(element){return element.remove()})}else{return elements=items.map(function(item,index,array){var element;element=fn.call(item,item,index,array);element[dataName]=item;return element})}};return replace(null,items)},"with":function(item,fn){var element,replace,value;element=null;item=Observable(item);item.observe(function(newValue){return replace(element,newValue)});value=item();replace=function(oldElement,value){var parent;element=fn.call(value);element[dataName]=item;if(oldElement){parent=oldElement.parentElement;parent.insertBefore(element,oldElement);return oldElement.remove()}else{}};return replace(element,value)},on:function(eventName,fn){var element;element=lastParent();if(eventName==="change"){switch(element.nodeName){case"SELECT":element["on"+eventName]=function(){var selectedOption;selectedOption=this.options[this.selectedIndex];return fn(selectedOption[dataName])};if(fn.observe){return fn.observe(function(newValue){return Array.prototype.forEach.call(element.options,function(option,index){if(option[dataName]===newValue){return element.selectedIndex=index}})})}break;default:element["on"+eventName]=function(){return fn(element.value)};if(fn.observe){return fn.observe(function(newValue){return element.value=newValue})}}}else{return element["on"+eventName]=function(){return fn.call(context,event)}}}}};exports.Runtime=Runtime}.call(this);
\No newline at end of file