Skip to content

Instantly share code, notes, and snippets.

@neonstalwart
Created May 30, 2014 17:51
Show Gist options
  • Save neonstalwart/1396c7a72df55085d0b7 to your computer and use it in GitHub Desktop.
Save neonstalwart/1396c7a72df55085d0b7 to your computer and use it in GitHub Desktop.
requirebin sketch
var mercury = require("mercury")
var h = mercury.h
var state = mercury.hash({})
function render(state) {
return h("ul", [
h('li', h('a', { href: '#foo' }, 'link without array')),
h('li', [ h('a', { href: '#bar' }, 'link with array') ])
])
}
mercury.app(document.body, state, render)
require=function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);throw new Error("Cannot find module '"+o+"'")}var f=n[o]={exports:{}};t[o][0].call(f.exports,function(e){var n=t[o][1][e];return s(n?n:e)},f,f.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s}({1:[function(require,module,exports){},{}],MNaJAE:[function(require,module,exports){var SingleEvent=require("geval/single");var MultipleEvent=require("geval/multiple");var mercury=module.exports={main:require("main-loop"),Delegator:require("dom-delegator"),input:input,event:require("value-event/event"),valueEvent:require("value-event/value"),submitEvent:require("value-event/submit"),changeEvent:require("value-event/change"),keyEvent:require("value-event/key"),array:require("observ-array"),hash:require("observ-hash"),value:require("observ"),diff:require("virtual-dom/diff"),patch:require("virtual-dom/patch"),partial:require("vdom-thunk"),create:require("virtual-dom/create-element"),h:require("virtual-hyperscript"),svg:require("virtual-hyperscript/svg"),app:app};function input(names){if(!names){return SingleEvent()}return MultipleEvent(names)}function app(elem,observ,render){mercury.Delegator();var loop=mercury.main(observ(),render);observ(loop.update);elem.appendChild(loop.target)}},{"dom-delegator":6,"geval/multiple":16,"geval/single":17,"main-loop":19,observ:27,"observ-array":23,"observ-hash":25,"value-event/change":28,"value-event/event":29,"value-event/key":30,"value-event/submit":36,"value-event/value":37,"vdom-thunk":38,"virtual-dom/create-element":39,"virtual-dom/diff":40,"virtual-dom/patch":44,"virtual-hyperscript":63,"virtual-hyperscript/svg":70}],mercury:[function(require,module,exports){module.exports=require("MNaJAE")},{}],4:[function(require,module,exports){var DataSet=require("data-set");module.exports=addEvent;function addEvent(target,type,handler){var ds=DataSet(target);var events=ds[type];if(!events){ds[type]=handler}else if(Array.isArray(events)){if(events.indexOf(handler)===-1){events.push(handler)}}else if(events!==handler){ds[type]=[events,handler]}}},{"data-set":8}],5:[function(require,module,exports){var document=require("global/document");var DataSet=require("data-set");var addEvent=require("./add-event.js");var removeEvent=require("./remove-event.js");var ProxyEvent=require("./proxy-event.js");module.exports=DOMDelegator;function DOMDelegator(){this.target=document.documentElement;this.events={};this.rawEventListeners={};this.globalListeners={}}DOMDelegator.prototype.addEventListener=addEvent;DOMDelegator.prototype.removeEventListener=removeEvent;DOMDelegator.prototype.addGlobalEventListener=function addGlobalEventListener(eventName,fn){var listeners=this.globalListeners[eventName];if(!listeners){listeners=this.globalListeners[eventName]=[]}if(listeners.indexOf(fn)===-1){listeners.push(fn)}};DOMDelegator.prototype.removeGlobalEventListener=function removeGlobalEventListener(eventName,fn){var listeners=this.globalListeners[eventName];if(!listeners){return}var index=listeners.indexOf(fn);if(index!==-1){listeners.splice(index,1)}};DOMDelegator.prototype.listenTo=function listenTo(eventName){if(this.events[eventName]){return}this.events[eventName]=true;listen(this,eventName)};DOMDelegator.prototype.unlistenTo=function unlistenTo(eventName){if(!this.events[eventName]){return}this.events[eventName]=false;unlisten(this,eventName)};function listen(delegator,eventName){var listener=delegator.rawEventListeners[eventName];if(!listener){listener=delegator.rawEventListeners[eventName]=createHandler(eventName,delegator.globalListeners)}delegator.target.addEventListener(eventName,listener,true)}function unlisten(delegator,eventName){var listener=delegator.rawEventListeners[eventName];if(!listener){throw new Error("dom-delegator#unlistenTo: cannot "+"unlisten to "+eventName)}delegator.target.removeEventListener(eventName,listener,true)}function createHandler(eventName,globalListeners){return handler;function handler(ev){var globalHandlers=globalListeners[eventName]||[];var listener=getListener(ev.target,eventName);var handlers=globalHandlers.concat(listener?listener.handlers:[]);if(handlers.length===0){return}var arg=new ProxyEvent(ev,listener);handlers.forEach(function(handler){typeof handler==="function"?handler(arg):handler.handleEvent(arg)})}}function getListener(target,type){if(target===null){return null}var ds=DataSet(target);var handler=ds[type];var allHandler=ds.event;if(!handler&&!allHandler){return getListener(target.parentNode,type)}var handlers=[].concat(handler||[],allHandler||[]);return new Listener(target,handlers)}function Listener(target,handlers){this.currentTarget=target;this.handlers=handlers}},{"./add-event.js":4,"./proxy-event.js":13,"./remove-event.js":14,"data-set":8,"global/document":18}],6:[function(require,module,exports){var Individual=require("individual");var DOMDelegator=require("./dom-delegator.js");var delegatorCache=Individual("__DOM_DELEGATOR_CACHE@7",{});var commonEvents=["blur","change","click","contextmenu","dblclick","error","focus","focusin","focusout","input","keydown","keypress","keyup","load","mousedown","mouseup","resize","scroll","select","submit","unload"];module.exports=Delegator;function Delegator(opts){opts=opts||{};var delegator=delegatorCache.delegator;if(!delegator){delegator=delegatorCache.delegator=new DOMDelegator}if(opts.defaultEvents!==false){for(var i=0;i<commonEvents.length;i++){delegator.listenTo(commonEvents[i])}}return delegator}},{"./dom-delegator.js":5,individual:11}],7:[function(require,module,exports){module.exports=createHash;function createHash(elem){var attributes=elem.attributes;var hash={};if(attributes===null||attributes===undefined){return hash}for(var i=0;i<attributes.length;i++){var attr=attributes[i];if(attr.name.substr(0,5)!=="data-"){continue}hash[attr.name.substr(5)]=attr.value}return hash}},{}],8:[function(require,module,exports){var createStore=require("weakmap-shim/create-store");var Individual=require("individual");var createHash=require("./create-hash.js");var hashStore=Individual("__DATA_SET_WEAKMAP@3",createStore());module.exports=DataSet;function DataSet(elem){var store=hashStore(elem);if(!store.hash){store.hash=createHash(elem)}return store.hash}},{"./create-hash.js":7,individual:11,"weakmap-shim/create-store":9}],9:[function(require,module,exports){var hiddenStore=require("./hidden-store.js");module.exports=createStore;function createStore(){var key={};return function(obj){if(typeof obj!=="object"||obj===null){throw new Error("Weakmap-shim: Key must be object")}var store=obj.valueOf(key);return store&&store.identity===key?store:hiddenStore(obj,key)}}},{"./hidden-store.js":10}],10:[function(require,module,exports){module.exports=hiddenStore;function hiddenStore(obj,key){var store={identity:key};var valueOf=obj.valueOf;Object.defineProperty(obj,"valueOf",{value:function(value){return value!==key?valueOf.apply(this,arguments):store},writable:true});return store}},{}],11:[function(require,module,exports){(function(global){var root=typeof window!=="undefined"?window:typeof global!=="undefined"?global:{};module.exports=Individual;function Individual(key,value){if(root[key]){return root[key]}Object.defineProperty(root,key,{value:value,configurable:true});return value}}).call(this,typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{}],12:[function(require,module,exports){if(typeof Object.create==="function"){module.exports=function inherits(ctor,superCtor){ctor.super_=superCtor;ctor.prototype=Object.create(superCtor.prototype,{constructor:{value:ctor,enumerable:false,writable:true,configurable:true}})}}else{module.exports=function inherits(ctor,superCtor){ctor.super_=superCtor;var TempCtor=function(){};TempCtor.prototype=superCtor.prototype;ctor.prototype=new TempCtor;ctor.prototype.constructor=ctor}}},{}],13:[function(require,module,exports){var inherits=require("inherits");var ALL_PROPS=["altKey","bubbles","cancelable","ctrlKey","eventPhase","metaKey","relatedTarget","shiftKey","target","timeStamp","type","view","which"];var KEY_PROPS=["char","charCode","key","keyCode"];var MOUSE_PROPS=["button","buttons","clientX","clientY","layerX","layerY","offsetX","offsetY","pageX","pageY","screenX","screenY","toElement"];var rkeyEvent=/^key|input/;var rmouseEvent=/^(?:mouse|pointer|contextmenu)|click/;module.exports=ProxyEvent;function ProxyEvent(ev,listener){if(!(this instanceof ProxyEvent)){return new ProxyEvent(ev,listener)}if(rkeyEvent.test(ev.type)){return new KeyEvent(ev,listener)}else if(rmouseEvent.test(ev.type)){return new MouseEvent(ev,listener)}for(var i=0;i<ALL_PROPS.length;i++){var propKey=ALL_PROPS[i];this[propKey]=ev[propKey]}this._rawEvent=ev;this.currentTarget=listener?listener.currentTarget:null}ProxyEvent.prototype.preventDefault=function(){this._rawEvent.preventDefault()};function MouseEvent(ev,listener){for(var i=0;i<ALL_PROPS.length;i++){var propKey=ALL_PROPS[i];this[propKey]=ev[propKey]}for(var j=0;j<MOUSE_PROPS.length;j++){var mousePropKey=MOUSE_PROPS[j];this[mousePropKey]=ev[mousePropKey]}this._rawEvent=ev;this.currentTarget=listener?listener.currentTarget:null}inherits(MouseEvent,ProxyEvent);function KeyEvent(ev,listener){for(var i=0;i<ALL_PROPS.length;i++){var propKey=ALL_PROPS[i];this[propKey]=ev[propKey]}for(var j=0;j<KEY_PROPS.length;j++){var keyPropKey=KEY_PROPS[j];this[keyPropKey]=ev[keyPropKey]}this._rawEvent=ev;this.currentTarget=listener?listener.currentTarget:null}inherits(KeyEvent,ProxyEvent)},{inherits:12}],14:[function(require,module,exports){var DataSet=require("data-set");module.exports=removeEvent;function removeEvent(target,type,handler){var ds=DataSet(target);var events=ds[type];if(!events){return}else if(Array.isArray(events)){var index=events.indexOf(handler);if(index!==-1){events.splice(index,1)}}else if(events===handler){ds[type]=null}}},{"data-set":8}],15:[function(require,module,exports){module.exports=Event;function Event(){var listeners=[];return{broadcast:broadcast,listen:event};function broadcast(value){for(var i=0;i<listeners.length;i++){listeners[i](value)}}function event(listener){listeners.push(listener);return removeListener;function removeListener(){var index=listeners.indexOf(listener);if(index!==-1){listeners.splice(index,1)}}}}},{}],16:[function(require,module,exports){var event=require("./single.js");module.exports=multiple;function multiple(names){return names.reduce(function(acc,name){acc[name]=event();return acc},{})}},{"./single.js":17}],17:[function(require,module,exports){var Event=require("./event.js");module.exports=Single;function Single(){var tuple=Event();return function event(value){if(typeof value==="function"){return tuple.listen(value)}else{return tuple.broadcast(value)}}}},{"./event.js":15}],18:[function(require,module,exports){(function(global){var topLevel=typeof global!=="undefined"?global:typeof window!=="undefined"?window:{};var minDoc=require("min-document");if(typeof document!=="undefined"){module.exports=document}else{var doccy=topLevel["__GLOBAL_DOCUMENT_CACHE@4"];if(!doccy){doccy=topLevel["__GLOBAL_DOCUMENT_CACHE@4"]=minDoc}module.exports=doccy}}).call(this,typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{"min-document":1}],19:[function(require,module,exports){var raf=require("raf/polyfill");var vdomCreate=require("virtual-dom/create-element");var vdomDiff=require("virtual-dom/diff");var vdomPatch=require("virtual-dom/patch");module.exports=main;function main(initialState,view,opts){opts=opts||{};var currentState=initialState;var create=opts.create||vdomCreate;var diff=opts.diff||vdomDiff;var patch=opts.patch||vdomPatch;var redrawScheduled=false;var tree=view(currentState);var target=create(tree,opts);currentState=null;return{target:target,update:update};function update(state){if(currentState===null&&!redrawScheduled){redrawScheduled=true;raf(redraw)}currentState=state}function redraw(){redrawScheduled=false;if(currentState===null){return}var newTree=view(currentState);if(opts.createOnly){create(newTree,opts)}else{var patches=diff(tree,newTree,opts);patch(target,patches,opts)}tree=newTree;currentState=null}}},{"raf/polyfill":20,"virtual-dom/create-element":39,"virtual-dom/diff":40,"virtual-dom/patch":44}],20:[function(require,module,exports){var global=typeof window==="undefined"?this:window;var _raf=global.requestAnimationFrame||global.webkitRequestAnimationFrame||global.mozRequestAnimationFrame||global.msRequestAnimationFrame||global.oRequestAnimationFrame||(global.setImmediate?function(fn,el){setImmediate(fn)}:function(fn,el){setTimeout(fn,0)});module.exports=_raf},{}],21:[function(require,module,exports){module.exports=addListener;function addListener(observArray,observ){var list=observArray._list;return observ(function(value){var valueList=observArray().slice();var index=list.indexOf(observ);if(index===-1){var message="observ-array: Unremoved observ listener";var err=new Error(message);err.list=list;err.index=index;err.observ=observ;throw err}valueList.splice(index,1,value);valueList._diff=[index,1,value];observArray.set(valueList)})}},{}],22:[function(require,module,exports){var ObservArray=require("./index.js");var slice=Array.prototype.slice;var ARRAY_METHODS=["concat","slice","every","filter","forEach","indexOf","join","lastIndexOf","map","reduce","reduceRight","some","toString","toLocaleString"];var methods=ARRAY_METHODS.map(function(name){return[name,function(){var res=this._list[name].apply(this._list,arguments);if(res&&Array.isArray(res)){res=ObservArray(res)}return res}]});module.exports=ArrayMethods;function ArrayMethods(obs){obs.push=observArrayPush;obs.pop=observArrayPop;obs.shift=observArrayShift;obs.unshift=observArrayUnshift;obs.reverse=notImplemented;obs.sort=notImplemented;methods.forEach(function(tuple){obs[tuple[0]]=tuple[1]});return obs}function observArrayPush(){var args=slice.call(arguments);args.unshift(this._list.length,0);this.splice.apply(this,args);return this._list.length}function observArrayPop(){return this.splice(this._list.length-1,1)[0]}function observArrayShift(){return this.splice(0,1)[0]}function observArrayUnshift(){var args=slice.call(arguments);args.unshift(0,0);this.splice.apply(this,args);return this._list.length}function notImplemented(){throw new Error("Pull request welcome")}},{"./index.js":23}],23:[function(require,module,exports){var Observ=require("observ");module.exports=ObservArray;var splice=require("./splice.js");var ArrayMethods=require("./array-methods.js");var addListener=require("./add-listener.js");function ObservArray(initialList){var list=initialList;var initialState=[];list.forEach(function(observ,index){initialState[index]=typeof observ==="function"?observ():observ});var obs=Observ(initialState);obs.splice=splice;obs.get=get;obs.getLength=getLength;obs.put=put;obs._list=list;var removeListeners=list.map(function(observ){return typeof observ==="function"?addListener(obs,observ):null});obs._removeListeners=removeListeners;return ArrayMethods(obs,list)}function get(index){return this._list[index]}function put(index,value){this.splice(index,1,value)}function getLength(){return this._list.length}},{"./add-listener.js":21,"./array-methods.js":22,"./splice.js":24,observ:27}],24:[function(require,module,exports){var slice=Array.prototype.slice;var addListener=require("./add-listener.js");module.exports=splice;function splice(index,amount){var obs=this;var args=slice.call(arguments,0);var valueList=obs().slice();var valueArgs=args.map(function(value,index){if(index===0||index===1){return value}return typeof value==="function"?value():value});valueList.splice.apply(valueList,valueArgs);var removed=obs._list.splice.apply(obs._list,args);var extraRemoveListeners=args.slice(2).map(function(observ){return typeof observ==="function"?addListener(obs,observ):null});extraRemoveListeners.unshift(args[0],args[1]);var removedListeners=obs._removeListeners.splice.apply(obs._removeListeners,extraRemoveListeners);removedListeners.forEach(function(removeObservListener){if(removeObservListener){removeObservListener()}});valueList._diff=valueArgs;obs.set(valueList);return removed}},{"./add-listener.js":21}],25:[function(require,module,exports){var Observ=require("observ");var extend=require("xtend");module.exports=ObservHash;function ObservHash(hash){var keys=Object.keys(hash);var initialState={};keys.forEach(function(key){var observ=hash[key];initialState[key]=typeof observ==="function"?observ():observ});var obs=Observ(initialState);keys.forEach(function(key){var observ=hash[key];obs[key]=observ;if(typeof observ==="function"){observ(function(value){var state=extend(obs());state[key]=value;var diff={};diff[key]=value&&value._diff?value._diff:value;state._diff=diff;obs.set(state)})}});return obs}},{observ:27,xtend:26}],26:[function(require,module,exports){module.exports=extend;function extend(){var target={};for(var i=0;i<arguments.length;i++){var source=arguments[i];for(var key in source){if(source.hasOwnProperty(key)){target[key]=source[key]}}}return target}},{}],27:[function(require,module,exports){module.exports=Observable;function Observable(value){var listeners=[];value=value===undefined?null:value;observable.set=function(v){value=v;listeners.forEach(function(f){f(v)})};return observable;function observable(listener){if(!listener){return value}listeners.push(listener);return function remove(){listeners.splice(listeners.indexOf(listener),1)}}}},{}],28:[function(require,module,exports){var extend=require("xtend");var getFormData=require("form-data-set/element");module.exports=ChangeSinkHandler;function ChangeSinkHandler(sink,data){if(!(this instanceof ChangeSinkHandler)){return new ChangeSinkHandler(sink,data)}this.sink=sink;this.data=data;this.type="change";this.id=sink.id}ChangeSinkHandler.prototype.handleEvent=handleEvent;function handleEvent(ev){var target=ev.target;var isValid=ev.type==="change"&&target.type==="checkbox"||ev.type==="input"&&target.type==="text"||ev.type==="change"&&target.type==="range";if(!isValid){return}var value=getFormData(ev.currentTarget);var data=extend(value,this.data);if(typeof this.sink==="function"){this.sink(data)}else{this.sink.write(data)}}},{"form-data-set/element":32,xtend:35}],29:[function(require,module,exports){module.exports=SinkEventHandler;function SinkEventHandler(sink,data){if(!(this instanceof SinkEventHandler)){return new SinkEventHandler(sink,data)}this.sink=sink;this.id=sink.id;this.data=data}SinkEventHandler.prototype.handleEvent=handleEvent;function handleEvent(ev){if(typeof this.sink==="function"){this.sink(this.data)}else{this.sink.write(this.data)}}},{}],30:[function(require,module,exports){module.exports=KeyEventHandler;function KeyEventHandler(fn,key,data){if(!(this instanceof KeyEventHandler)){return new KeyEventHandler(fn,key,data)}this.fn=fn;this.data=data;this.key=key}KeyEventHandler.prototype.handleEvent=handleEvent;function handleEvent(ev){if(ev.keyCode===this.key){this.fn(this.data)}}},{}],31:[function(require,module,exports){var slice=Array.prototype.slice;module.exports=iterativelyWalk;function iterativelyWalk(nodes,cb){if(!("length"in nodes)){nodes=[nodes]}nodes=slice.call(nodes);while(nodes.length){var node=nodes.shift(),ret=cb(node);if(ret){return ret}if(node.childNodes.length){nodes=slice.call(node.childNodes).concat(nodes)}}}},{}],32:[function(require,module,exports){var walk=require("dom-walk");var FormData=require("./index.js");module.exports=getFormData;function buildElems(rootElem){var hash={};walk(rootElem,function(child){if(child.name){hash[child.name]=child}});return hash}function getFormData(rootElem){var elements=buildElems(rootElem);return FormData(elements)}},{"./index.js":33,"dom-walk":31}],33:[function(require,module,exports){module.exports=FormData;function FormData(elements){return Object.keys(elements).reduce(function(acc,key){var elem=elements[key];acc[key]=valueOfElement(elem);return acc},{})}function valueOfElement(elem){if(typeof elem==="function"){return elem()}else if(containsRadio(elem)){var elems=toList(elem);var checked=elems.filter(function(elem){return elem.checked})[0]||null;return checked?checked.value:null}else if(Array.isArray(elem)){return elem.map(valueOfElement).filter(filterNull)}else if(elem.tagName===undefined&&elem.nodeType===undefined){return FormData(elem)}else if(elem.tagName==="INPUT"&&isChecked(elem)){if(elem.hasAttribute("value")){return elem.checked?elem.value:null}else{return elem.checked}}else if(elem.tagName==="INPUT"){return elem.value}else if(elem.tagName==="TEXTAREA"){return elem.value}else if(elem.tagName==="SELECT"){return elem.value}}function isChecked(elem){return elem.type==="checkbox"||elem.type==="radio"}function containsRadio(value){if(value.tagName||value.nodeType){return false}var elems=toList(value);return elems.some(function(elem){return elem.tagName==="INPUT"&&elem.type==="radio"})}function toList(value){if(Array.isArray(value)){return value}return Object.keys(value).map(prop,value)}function prop(x){return this[x]}function filterNull(val){return val!==null}},{}],34:[function(require,module,exports){module.exports=hasKeys;function hasKeys(source){return source!==null&&(typeof source==="object"||typeof source==="function")}},{}],35:[function(require,module,exports){var hasKeys=require("./has-keys");module.exports=extend;function extend(){var target={};for(var i=0;i<arguments.length;i++){var source=arguments[i];if(!hasKeys(source)){continue}for(var key in source){if(source.hasOwnProperty(key)){target[key]=source[key]}}}return target}},{"./has-keys":34}],36:[function(require,module,exports){var extend=require("xtend");var getFormData=require("form-data-set/element");var ENTER=13;module.exports=SubmitSinkHandler;function SubmitSinkHandler(sink,data){if(!(this instanceof SubmitSinkHandler)){return new SubmitSinkHandler(sink,data)}this.sink=sink;this.data=data;this.id=sink.id;this.type="submit"}SubmitSinkHandler.prototype.handleEvent=handleEvent;function handleEvent(ev){var target=ev.target;var isValid=ev.type==="click"&&target.tagName==="BUTTON"||(target.type==="text"||target.tagName==="TEXTAREA")&&(ev.keyCode===ENTER&&!ev.shiftKey&&ev.type==="keydown");if(!isValid){return}var value=getFormData(ev.currentTarget);var data=extend(value,this.data);if(typeof this.sink==="function"){this.sink(data)}else{this.sink.write(data)}}},{"form-data-set/element":32,xtend:35}],37:[function(require,module,exports){var extend=require("xtend");var getFormData=require("form-data-set/element");module.exports=ValueEventHandler;function ValueEventHandler(sink,data){if(!(this instanceof ValueEventHandler)){return new ValueEventHandler(sink,data)}this.sink=sink;this.data=data;this.id=sink.id}ValueEventHandler.prototype.handleEvent=handleEvent;function handleEvent(ev){var value=getFormData(ev.currentTarget);var data=extend(value,this.data);if(typeof this.sink==="function"){this.sink(data)}else{this.sink.write(data)}}},{"form-data-set/element":32,xtend:35}],38:[function(require,module,exports){var createElement=require("virtual-dom/create-element");var diff=require("virtual-dom/diff");var patch=require("virtual-dom/patch");var MESSAGE="partial() cannot cache on values. "+"You must specify object arguments. partial(";function copyOver(list,offset){var newList=[];for(var i=offset;i<list.length;i++){newList[i-offset]=list[i]}return newList}module.exports=partial;function partial(fn){var args=copyOver(arguments,1);var firstArg=args[0];var hasObjects=args.length===0;var key;if(typeof firstArg==="object"&&firstArg!==null){hasObjects=true;if("key"in firstArg){key=firstArg.key}else if("id"in firstArg){key=firstArg.id}}for(var i=1;!hasObjects&&i<args.length;i++){var arg=args[i];if(typeof arg==="object"&&arg!==null){hasObjects=true}}if(!hasObjects){throw new Error(MESSAGE+args+")")}return new Thunk(fn,args,key)}function Thunk(fn,args,key){this.fn=fn;this.args=args;this.vnode=null;this.key=key}Thunk.prototype.type="immutable-thunk";Thunk.prototype.update=update;Thunk.prototype.init=init;function shouldUpdate(current,previous){if(current.fn!==previous.fn){return true}var cargs=current.args;var pargs=previous.args;if(cargs.length===0&&pargs.length===0){return false}if(cargs.length!==pargs.length){return true}var max=cargs.length>pargs.length?cargs.length:pargs.length;for(var i=0;i<max;i++){if(cargs[i]!==pargs[i]){return true}}return false}function update(previous,domNode){if(!shouldUpdate(this,previous)){this.vnode=previous.vnode;return}if(!this.vnode){this.vnode=this.fn.apply(null,this.args)}var patches=diff(previous.vnode,this.vnode);patch(domNode,patches)}function init(){this.vnode=this.fn.apply(null,this.args);return createElement(this.vnode)}},{"virtual-dom/create-element":39,"virtual-dom/diff":40,"virtual-dom/patch":44}],39:[function(require,module,exports){var createElement=require("./vdom/create-element");module.exports=createElement},{"./vdom/create-element":46}],40:[function(require,module,exports){var diff=require("./vtree/diff");module.exports=diff},{"./vtree/diff":51}],41:[function(require,module,exports){if(typeof document!=="undefined"){module.exports=document}else{module.exports=require("min-document")}},{"min-document":1}],42:[function(require,module,exports){module.exports=isObject;function isObject(x){return typeof x==="object"&&x!==null}},{}],43:[function(require,module,exports){var nativeIsArray=Array.isArray;var toString=Object.prototype.toString;module.exports=nativeIsArray||isArray;function isArray(obj){return toString.call(obj)==="[object Array]"}},{}],44:[function(require,module,exports){var patch=require("./vdom/patch");module.exports=patch},{"./vdom/patch":49}],45:[function(require,module,exports){var isObject=require("is-object");var isHook=require("../vtree/is-vhook");module.exports=applyProperties;function applyProperties(node,props,previous){for(var propName in props){var propValue=props[propName];if(isHook(propValue)){propValue.hook(node,propName,previous?previous[propName]:undefined)}else{if(isObject(propValue)){if(!isObject(node[propName])){node[propName]={}}for(var k in propValue){node[propName][k]=propValue[k]}}else if(propValue!==undefined){node[propName]=propValue}}}}},{"../vtree/is-vhook":52,"is-object":42}],46:[function(require,module,exports){var document=require("global/document");var applyProperties=require("./apply-properties");var isVNode=require("../vtree/is-vnode");var isVText=require("../vtree/is-vtext");var isWidget=require("../vtree/is-widget");module.exports=createElement;function createElement(vnode,opts){var doc=opts?opts.document||document:document;var warn=opts?opts.warn:null;if(isWidget(vnode)){return vnode.init()}else if(isVText(vnode)){return doc.createTextNode(vnode.text)}else if(!isVNode(vnode)){if(warn){warn("Item is not a valid virtual dom node",vnode)}return null}var node=vnode.namespace===null?doc.createElement(vnode.tagName):doc.createElementNS(vnode.namespace,vnode.tagName);var props=vnode.properties;applyProperties(node,props);var children=vnode.children;for(var i=0;i<children.length;i++){var childNode=createElement(children[i],opts);if(childNode){node.appendChild(childNode)}}return node}},{"../vtree/is-vnode":53,"../vtree/is-vtext":54,"../vtree/is-widget":55,"./apply-properties":45,"global/document":41}],47:[function(require,module,exports){var noChild={};module.exports=domIndex;function domIndex(rootNode,tree,indices,nodes){if(!indices||indices.length===0){return{}}else{indices.sort(ascending);return recurse(rootNode,tree,indices,nodes,0)}}function recurse(rootNode,tree,indices,nodes,rootIndex){nodes=nodes||{};if(rootNode){if(indexInRange(indices,rootIndex,rootIndex)){nodes[rootIndex]=rootNode}var vChildren=tree.children;if(vChildren){var childNodes=rootNode.childNodes;for(var i=0;i<tree.children.length;i++){rootIndex+=1;var vChild=vChildren[i]||noChild;var nextIndex=rootIndex+(vChild.count||0);if(indexInRange(indices,rootIndex,nextIndex)){recurse(childNodes[i],vChild,indices,nodes,rootIndex)}rootIndex=nextIndex}}}return nodes}function indexInRange(indices,left,right){if(indices.length===0){return false}var minIndex=0;var maxIndex=indices.length-1;var currentIndex;var currentItem;while(minIndex<=maxIndex){currentIndex=(maxIndex+minIndex)/2>>0;currentItem=indices[currentIndex];if(minIndex===maxIndex){return currentItem>=left&&currentItem<=right}else if(currentItem<left){minIndex=currentIndex+1}else if(currentItem>right){maxIndex=currentIndex-1}else{return true}}return false}function ascending(a,b){return a>b?1:-1}},{}],48:[function(require,module,exports){var applyProperties=require("./apply-properties");var isWidget=require("../vtree/is-widget");var VPatch=require("../vtree/vpatch");var render=require("./create-element");var updateWidget=require("./update-widget");module.exports=applyPatch;function applyPatch(vpatch,domNode,renderOptions){var type=vpatch.type;var vNode=vpatch.vNode;var patch=vpatch.patch;switch(type){case VPatch.REMOVE:return removeNode(domNode,vNode);case VPatch.INSERT:return insertNode(domNode,patch,renderOptions);case VPatch.VTEXT:return stringPatch(domNode,vNode,patch,renderOptions);case VPatch.WIDGET:return widgetPatch(domNode,vNode,patch,renderOptions);case VPatch.VNODE:return vNodePatch(domNode,vNode,patch,renderOptions);case VPatch.ORDER:reorderChildren(domNode,patch);return domNode;case VPatch.PROPS:applyProperties(domNode,patch,vNode.propeties);return domNode;default:return domNode}}function removeNode(domNode,vNode){var parentNode=domNode.parentNode;if(parentNode){parentNode.removeChild(domNode)}destroyWidget(domNode,vNode);return null}function insertNode(parentNode,vNode,renderOptions){var newNode=render(vNode,renderOptions);if(parentNode){parentNode.appendChild(newNode)}return parentNode}function stringPatch(domNode,leftVNode,vText,renderOptions){var newNode;if(domNode.nodeType===3){domNode.replaceData(0,domNode.length,vText.text);newNode=domNode}else{var parentNode=domNode.parentNode;newNode=render(vText,renderOptions);if(parentNode){parentNode.replaceChild(newNode,domNode)}}destroyWidget(domNode,leftVNode);return newNode}function widgetPatch(domNode,leftVNode,widget,renderOptions){if(updateWidget(leftVNode,widget)){return widget.update(leftVNode,domNode)||domNode}var parentNode=domNode.parentNode;var newWidget=render(widget,renderOptions);if(parentNode){parentNode.replaceChild(newWidget,domNode)}destroyWidget(domNode,leftVNode);return newWidget}function vNodePatch(domNode,leftVNode,vNode,renderOptions){var parentNode=domNode.parentNode;var newNode=render(vNode,renderOptions);if(parentNode){parentNode.replaceChild(newNode,domNode)}destroyWidget(domNode,leftVNode);return newNode}function destroyWidget(domNode,w){if(typeof w.destroy==="function"&&isWidget(w)){w.destroy(domNode)}}function reorderChildren(domNode,bIndex){var children=[];var childNodes=domNode.childNodes;var len=childNodes.length;var i;for(i=0;i<len;i++){children.push(domNode.childNodes[i])}for(i=0;i<len;i++){var move=bIndex[i];if(move!==undefined){var node=children[move];domNode.removeChild(node);domNode.insertBefore(node,childNodes[i])}}}},{"../vtree/is-widget":55,"../vtree/vpatch":58,"./apply-properties":45,"./create-element":46,"./update-widget":50}],49:[function(require,module,exports){var document=require("global/document");var isArray=require("x-is-array");var domIndex=require("./dom-index");var patchOp=require("./patch-op");module.exports=patch;function patch(rootNode,patches){var indices=patchIndices(patches);if(indices.length===0){return rootNode}var index=domIndex(rootNode,patches.a,indices);var ownerDocument=rootNode.ownerDocument;var renderOptions;if(ownerDocument!==document){renderOptions={document:ownerDocument}}for(var i=0;i<indices.length;i++){var nodeIndex=indices[i];rootNode=applyPatch(rootNode,index[nodeIndex],patches[nodeIndex],renderOptions)}return rootNode}function applyPatch(rootNode,domNode,patchList,renderOptions){if(!domNode){return rootNode}var newNode;
if(isArray(patchList)){for(var i=0;i<patchList.length;i++){newNode=patchOp(patchList[i],domNode,renderOptions);if(domNode===rootNode){rootNode=newNode}}}else{newNode=patchOp(patchList,domNode,renderOptions);if(domNode===rootNode){rootNode=newNode}}return rootNode}function patchIndices(patches){var indices=[];for(var key in patches){if(key!=="a"){indices.push(Number(key))}}return indices}},{"./dom-index":47,"./patch-op":48,"global/document":41,"x-is-array":43}],50:[function(require,module,exports){var isWidget=require("../vtree/is-widget");module.exports=updateWidget;function updateWidget(a,b){if(isWidget(a)&&isWidget(b)){if("type"in a&&"type"in b){return a.type===b.type}else{return a.init===b.init}}return false}},{"../vtree/is-widget":55}],51:[function(require,module,exports){var isArray=require("x-is-array");var isObject=require("is-object");var VPatch=require("./vpatch");var isVNode=require("./is-vnode");var isVText=require("./is-vtext");var isWidget=require("./is-widget");module.exports=diff;function diff(a,b){var patch={a:a};walk(a,b,patch,0);return patch}function walk(a,b,patch,index){if(a===b){hooks(b,patch,index);return}var apply=patch[index];if(isWidget(b)){apply=appendPatch(apply,new VPatch(VPatch.WIDGET,a,b));if(!isWidget(a)){destroyWidgets(a,patch,index)}}else if(isVText(b)){if(!isVText(a)){apply=appendPatch(apply,new VPatch(VPatch.VTEXT,a,b));destroyWidgets(a,patch,index)}else if(a.text!==b.text){apply=appendPatch(apply,new VPatch(VPatch.VTEXT,a,b))}}else if(isVNode(b)){if(isVNode(a)){if(a.tagName===b.tagName&&a.namespace===b.namespace&&a.key===b.key){var propsPatch=diffProps(a.properties,b.properties,b.hooks);if(propsPatch){apply=appendPatch(apply,new VPatch(VPatch.PROPS,a,propsPatch))}}else{apply=appendPatch(apply,new VPatch(VPatch.VNODE,a,b));destroyWidgets(a,patch,index)}apply=diffChildren(a,b,patch,apply,index)}else{apply=appendPatch(apply,new VPatch(VPatch.VNODE,a,b));destroyWidgets(a,patch,index)}}else if(b==null){apply=appendPatch(apply,new VPatch(VPatch.REMOVE,a,b));destroyWidgets(a,patch,index)}if(apply){patch[index]=apply}}function diffProps(a,b,hooks){var diff;for(var aKey in a){if(!(aKey in b)){continue}var aValue=a[aKey];var bValue=b[aKey];if(hooks&&aKey in hooks){diff=diff||{};diff[aKey]=bValue}else{if(isObject(aValue)&&isObject(bValue)){if(getPrototype(bValue)!==getPrototype(aValue)){diff=diff||{};diff[aKey]=bValue}else{var objectDiff=diffProps(aValue,bValue);if(objectDiff){diff=diff||{};diff[aKey]=objectDiff}}}else if(aValue!==bValue&&bValue!==undefined){diff=diff||{};diff[aKey]=bValue}}}for(var bKey in b){if(!(bKey in a)){diff=diff||{};diff[bKey]=b[bKey]}}return diff}function getPrototype(value){if(Object.getPrototypeOf){return Object.getPrototypeOf(value)}else if(value.__proto__){return value.__proto__}else if(value.constructor){return value.constructor.prototype}}function diffChildren(a,b,patch,apply,index){var aChildren=a.children;var bChildren=reorder(aChildren,b.children);var aLen=aChildren.length;var bLen=bChildren.length;var len=aLen>bLen?aLen:bLen;for(var i=0;i<len;i++){var leftNode=aChildren[i];var rightNode=bChildren[i];index+=1;if(!leftNode){if(rightNode){apply=appendPatch(apply,new VPatch(VPatch.INSERT,null,rightNode))}}else if(!rightNode){if(leftNode){patch[index]=new VPatch(VPatch.REMOVE,leftNode,null);destroyWidgets(leftNode,patch,index)}}else{walk(leftNode,rightNode,patch,index)}if(isVNode(leftNode)&&leftNode.count){index+=leftNode.count}}if(bChildren.moves){apply=appendPatch(apply,new VPatch(VPatch.ORDER,a,bChildren.moves))}return apply}function destroyWidgets(vNode,patch,index){if(isWidget(vNode)){if(typeof vNode.destroy==="function"){patch[index]=new VPatch(VPatch.REMOVE,vNode,null)}}else if(isVNode(vNode)&&vNode.hasWidgets){var children=vNode.children;var len=children.length;for(var i=0;i<len;i++){var child=children[i];index+=1;destroyWidgets(child,patch,index);if(isVNode(child)&&child.count){index+=child.count}}}}function hooks(vNode,patch,index){if(isVNode(vNode)){if(vNode.hooks){patch[index]=new VPatch(VPatch.PROPS,vNode.hooks,vNode.hooks)}if(vNode.descendantHooks){var children=vNode.children;var len=children.length;for(var i=0;i<len;i++){var child=children[i];index+=1;hooks(child,patch,index);if(isVNode(child)&&child.count){index+=child.count}}}}}function reorder(aChildren,bChildren){var bKeys=keyIndex(bChildren);if(!bKeys){return bChildren}var aKeys=keyIndex(aChildren);if(!aKeys){return bChildren}var bMatch={},aMatch={};for(var key in bKeys){bMatch[bKeys[key]]=aKeys[key]}for(var key in aKeys){aMatch[aKeys[key]]=bKeys[key]}var aLen=aChildren.length;var bLen=bChildren.length;var len=aLen>bLen?aLen:bLen;var shuffle=[];var freeIndex=0;var i=0;var moveIndex=0;var moves=shuffle.moves={};while(freeIndex<len){var move=aMatch[i];if(move!==undefined){shuffle[i]=bChildren[move];moves[move]=moveIndex++}else if(i in aMatch){shuffle[i]=undefined}else{while(bMatch[freeIndex]!==undefined){freeIndex++}if(freeIndex<len){moves[freeIndex]=moveIndex++;shuffle[i]=bChildren[freeIndex];freeIndex++}}i++}return shuffle}function keyIndex(children){var i,keys;for(i=0;i<children.length;i++){var child=children[i];if(child.key!==undefined){keys=keys||{};keys[child.key]=i}}return keys}function appendPatch(apply,patch){if(apply){if(isArray(apply)){apply.push(patch)}else{apply=[apply,patch]}return apply}else{return patch}}},{"./is-vnode":53,"./is-vtext":54,"./is-widget":55,"./vpatch":58,"is-object":42,"x-is-array":43}],52:[function(require,module,exports){module.exports=isHook;function isHook(hook){return hook&&typeof hook.hook==="function"&&!hook.hasOwnProperty("hook")}},{}],53:[function(require,module,exports){var version=require("./version");module.exports=isVirtualNode;function isVirtualNode(x){if(!x){return false}return x.type==="VirtualNode"&&x.version===version}},{"./version":56}],54:[function(require,module,exports){var version=require("./version");module.exports=isVirtualText;function isVirtualText(x){if(!x){return false}return x.type==="VirtualText"&&x.version===version}},{"./version":56}],55:[function(require,module,exports){module.exports=isWidget;function isWidget(w){return w&&typeof w.init==="function"&&typeof w.update==="function"}},{}],56:[function(require,module,exports){module.exports="1"},{}],57:[function(require,module,exports){var version=require("./version");var isVNode=require("./is-vnode");var isWidget=require("./is-widget");var isVHook=require("./is-vhook");module.exports=VirtualNode;var noProperties={};var noChildren=[];function VirtualNode(tagName,properties,children,key,namespace){this.tagName=tagName;this.properties=properties||noProperties;this.children=children||noChildren;this.key=key!=null?String(key):undefined;this.namespace=typeof namespace==="string"?namespace:null;var count=children&&children.length||0;var descendants=0;var hasWidgets=false;var descendantHooks=false;var hooks;for(var propName in properties){if(properties.hasOwnProperty(propName)){var property=properties[propName];if(isVHook(property)){if(!hooks){hooks={}}hooks[propName]=property}}}for(var i=0;i<count;i++){var child=children[i];if(isVNode(child)){descendants+=child.count||0;if(!hasWidgets&&child.hasWidgets){hasWidgets=true}if(!descendantHooks&&(child.hooks||child.descendantHooks)){descendantHooks=true}}else if(!hasWidgets&&isWidget(child)){if(typeof child.destroy==="function"){hasWidgets=true}}}this.count=count+descendants;this.hasWidgets=hasWidgets;this.hooks=hooks;this.descendantHooks=descendantHooks}VirtualNode.prototype.version=version;VirtualNode.prototype.type="VirtualNode"},{"./is-vhook":52,"./is-vnode":53,"./is-widget":55,"./version":56}],58:[function(require,module,exports){var version=require("./version");VirtualPatch.NONE=0;VirtualPatch.VTEXT=1;VirtualPatch.VNODE=2;VirtualPatch.WIDGET=3;VirtualPatch.PROPS=4;VirtualPatch.ORDER=5;VirtualPatch.INSERT=6;VirtualPatch.REMOVE=7;module.exports=VirtualPatch;function VirtualPatch(type,vNode,patch){this.type=Number(type);this.vNode=vNode;this.patch=patch}VirtualPatch.prototype.version=version.split(".");VirtualPatch.prototype.type="VirtualPatch"},{"./version":56}],59:[function(require,module,exports){var version=require("./version");module.exports=VirtualText;function VirtualText(text){this.text=String(text)}VirtualText.prototype.version=version;VirtualText.prototype.type="VirtualText"},{"./version":56}],60:[function(require,module,exports){module.exports=AttributeHook;function AttributeHook(value){if(!(this instanceof AttributeHook)){return new AttributeHook(value)}this.value=value}AttributeHook.prototype.hook=function(node,prop,prev){if(prev&&prev.value===this.value){return}node.setAttributeNS(null,prop,this.value)}},{}],61:[function(require,module,exports){var DataSet=require("data-set");module.exports=DataSetHook;function DataSetHook(value){if(!(this instanceof DataSetHook)){return new DataSetHook(value)}this.value=value}DataSetHook.prototype.hook=function(node,propertyName){var ds=DataSet(node);var propName=propertyName.substr(5);ds[propName]=this.value}},{"data-set":65}],62:[function(require,module,exports){module.exports=SoftSetHook;function SoftSetHook(value){if(!(this instanceof SoftSetHook)){return new SoftSetHook(value)}this.value=value}SoftSetHook.prototype.hook=function(node,propertyName){if(node[propertyName]!==this.value){node[propertyName]=this.value}}},{}],63:[function(require,module,exports){var VNode=require("virtual-dom/vtree/vnode.js");var VText=require("virtual-dom/vtree/vtext.js");var isVNode=require("virtual-dom/vtree/is-vnode");var isVText=require("virtual-dom/vtree/is-vtext");var isWidget=require("virtual-dom/vtree/is-widget");var isHook=require("virtual-dom/vtree/is-vhook");var parseTag=require("./parse-tag.js");var softSetHook=require("./hooks/soft-set-hook.js");var dataSetHook=require("./hooks/data-set-hook.js");module.exports=h;function h(tagName,properties,children){var childNodes=[];var tag,props,key,namespace;if(!children&&isChildren(properties)){children=properties;props={}}props=props||properties||{};tag=parseTag(tagName,props);if(children){if(Array.isArray(children)){for(var i=0;i<children.length;i++){addChild(children[i],childNodes)}}else{addChild(children,childNodes)}}if("key"in props){key=props.key;props.key=undefined}if("namespace"in props){namespace=props.namespace;props.namespace=undefined}if(tag==="input"&&"value"in props&&props.value!==undefined&&!isHook(props.value)){props.value=softSetHook(props.value)}var keys=Object.keys(props);for(var j=0;j<keys.length;j++){var propName=keys[j];var value=props[propName];if(!isHook(value)&&propName.substr(0,5)==="data-"){props[propName]=dataSetHook(value)}}return new VNode(tag,props,childNodes,key,namespace)}function addChild(c,childNodes){if(typeof c==="string"){childNodes.push(new VText(c))}else if(isChild(c)){childNodes.push(c)}}function isChild(x){return isVNode(x)||isVText(x)||isWidget(x)}function isChildren(x){return typeof x==="string"||Array.isArray(x)}},{"./hooks/data-set-hook.js":61,"./hooks/soft-set-hook.js":62,"./parse-tag.js":69,"virtual-dom/vtree/is-vhook":52,"virtual-dom/vtree/is-vnode":53,"virtual-dom/vtree/is-vtext":54,"virtual-dom/vtree/is-widget":55,"virtual-dom/vtree/vnode.js":57,"virtual-dom/vtree/vtext.js":59}],64:[function(require,module,exports){module.exports=require(7)},{}],65:[function(require,module,exports){module.exports=require(8)},{"./create-hash.js":64,individual:66,"weakmap-shim/create-store":67}],66:[function(require,module,exports){module.exports=require(11)},{}],67:[function(require,module,exports){module.exports=require(9)},{"./hidden-store.js":68}],68:[function(require,module,exports){module.exports=require(10)},{}],69:[function(require,module,exports){var classIdSplit=/([\.#]?[a-zA-Z0-9_:-]+)/;var notClassId=/^\.|#/;module.exports=parseTag;function parseTag(tag,props){if(!tag){return"div"}var noId=!("id"in props);var tagParts=tag.split(classIdSplit);var tagName=null;if(notClassId.test(tagParts[1])){tagName="div"}var classes,part,type,i;for(i=0;i<tagParts.length;i++){part=tagParts[i];if(!part){continue}type=part.charAt(0);if(!tagName){tagName=part}else if(type==="."){classes=classes||[];classes.push(part.substring(1,part.length))}else if(type==="#"&&noId){props.id=part.substring(1,part.length)}}if(classes){if(props.className){classes.push(props.className)}props.className=classes.join(" ")}return tagName?tagName.toLowerCase():"div"}},{}],70:[function(require,module,exports){var attributeHook=require("./hooks/attribute-hook.js");var h=require("./index.js");var BLACKLISTED_KEYS={style:true,namespace:true,key:true};var SVG_NAMESPACE="http://www.w3.org/2000/svg";module.exports=svg;function svg(tagName,properties,children){if(!children&&isChildren(properties)){children=properties;properties={}}properties=properties||{};properties.namespace=SVG_NAMESPACE;for(var key in properties){if(!properties.hasOwnProperty(key)){continue}if(BLACKLISTED_KEYS[key]){continue}var value=properties[key];if(typeof value!=="string"&&typeof value!=="number"&&typeof value!=="boolean"){continue}properties[key]=attributeHook(value)}return h(tagName,properties,children)}function isChildren(x){return typeof x==="string"||Array.isArray(x)}},{"./hooks/attribute-hook.js":60,"./index.js":63}]},{},[]);var mercury=require("mercury");var h=mercury.h;var state=mercury.hash({});function render(state){return h("ul",[h("li",h("a",{href:"#foo"},"link without array")),h("li",[h("a",{href:"#bar"},"link with array")])])}mercury.app(document.body,state,render);
{
"name": "requirebin-sketch",
"version": "1.0.0",
"dependencies": {
"mercury": "3.2.2"
}
}
<style type='text/css'>html, body { margin: 0; padding: 0; border: 0; }
body, html { height: 100%; width: 100%; }</style>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment