js-marketplace-2014/dist/minimart.min.js

2 lines
54 KiB
JavaScript
Raw Normal View History

!function(e){if("object"==typeof exports)module.exports=e();else if("function"==typeof define&&define.amd)define(e);else{var f;"undefined"!=typeof window?f=window:"undefined"!=typeof global?f=global:"undefined"!=typeof self&&(f=self),f.Minimart=e()}}(function(){var define,module,exports;return 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(_dereq_,module,exports){var Minimart=_dereq_("./minimart.js");var World=Minimart.World;var sub=Minimart.sub;var pub=Minimart.pub;var __=Minimart.__;var _$=Minimart._$;function spawnDOMDriver(){var d=new Minimart.DemandMatcher(["DOM",_$,_$,_$]);d.onDemandIncrease=function(captures){var selector=captures[0];var fragmentClass=captures[1];var fragmentSpec=captures[2];World.spawn(new DOMFragment(selector,fragmentClass,fragmentSpec),[sub(["DOM",selector,fragmentClass,fragmentSpec]),sub(["DOM",selector,fragmentClass,fragmentSpec],0,1)])};World.spawn(d)}function DOMFragment(selector,fragmentClass,fragmentSpec){this.selector=selector;this.fragmentClass=fragmentClass;this.fragmentSpec=fragmentSpec;this.nodes=this.buildNodes()}DOMFragment.prototype.boot=function(){var self=this;var monitoring=sub(["DOM",self.selector,self.fragmentClass,self.fragmentSpec],1,2);World.spawn(new World(function(){Minimart.JQuery.spawnJQueryDriver(self.selector+" > ."+self.fragmentClass,1);World.spawn({handleEvent:function(e){if(e.type==="routes"){var level=e.gestalt.getLevel(1,0);if(!e.gestalt.isEmpty()&&level.isEmpty()){World.shutdownWorld()}}}},[monitoring])}))};DOMFragment.prototype.handleEvent=function(e){if(e.type==="routes"&&e.gestalt.isEmpty()){for(var i=0;i<this.nodes.length;i++){var n=this.nodes[i];n.parentNode.removeChild(n)}World.exit()}};DOMFragment.prototype.interpretSpec=function(spec){if(typeof spec==="string"||typeof spec==="number"){return document.createTextNode(spec)}else if($.isArray(spec)){var tagName=spec[0];var hasAttrs=$.isPlainObject(spec[1]);var attrs=hasAttrs?spec[1]:{};var kidIndex=hasAttrs?2:1;var n=document.createElement(tagName);for(var attr in attrs){if(attrs.hasOwnProperty(attr)){n.setAttribute(attr,attrs[attr])}}for(var i=kidIndex;i<spec.length;i++){n.appendChild(this.interpretSpec(spec[i]))}return n}};DOMFragment.prototype.buildNodes=function(){var self=this;var nodes=[];$(self.selector).each(function(index,domNode){var n=self.interpretSpec(self.fragmentSpec);n.classList.add(self.fragmentClass);domNode.appendChild(n);nodes.push(n)});return nodes};module.exports.spawnDOMDriver=spawnDOMDriver},{"./minimart.js":4}],2:[function(_dereq_,module,exports){var Minimart=_dereq_("./minimart.js");var World=Minimart.World;var sub=Minimart.sub;var pub=Minimart.pub;var __=Minimart.__;var _$=Minimart._$;function spawnJQueryDriver(baseSelector,metaLevel){metaLevel=metaLevel||0;var d=new Minimart.DemandMatcher(["jQuery",_$,_$,__],metaLevel,{demandSideIsSubscription:true});d.onDemandIncrease=function(captures){var selector=captures[0];var eventName=captures[1];World.spawn(new JQueryEventRouter(baseSelector,selector,eventName,metaLevel),[pub(["jQuery",selector,eventName,__],metaLevel),pub(["jQuery",selector,eventName,__],metaLevel,1)])};World.spawn(d)}function JQueryEventRouter(baseSelector,selector,eventName,metaLevel){var self=this;this.baseSelector=baseSelector||null;this.selector=selector;this.eventName=eventName;this.metaLevel=metaLevel||0;this.preventDefault=this.eventName.charAt(0)!=="+";this.handler=World.wrap(function(e){World.send(["jQuery",self.selector,self.eventName,e],self.metaLevel);if(self.preventDefault)e.preventDefault();return!self.preventDefault});this.computeNodes().on(this.preventDefault?this.eventName:this.eventName.substring(1),this.handler)}JQueryEventRouter.prototype.handleEvent=function(e){if(e.type==="routes"
}return result}function captureNested(m,cont){if(m instanceof $WildcardSequence){return rwildseq(cont(m.matcher))}if(is_emptyMatcher(m)||m instanceof $Success){return emptyMatcher}var target=new $Dict;rupdateInplace(target,__,captureNested(m.get(__),cont));for(var key in m.entries){if(key!==__){var mk=m.get(key);if(is_keyOpen(key)){function cont2(mk2){return captureNested(mk2,cont)}rupdateInplace(target,key,captureNested(mk,cont2))}else if(is_keyClose(key)){rupdateInplace(target,key,cont(mk))}else{rupdateInplace(target,key,captureNested(mk,cont))}}}return target.emptyGuard()}function skipNested(m,cont){if(m instanceof $WildcardSequence){return cont(m.matcher)}if(is_emptyMatcher(m)||m instanceof $Success){return emptyMatcher}var target=skipNested(m.get(__),cont);for(var key in m.entries){if(key!==__){var mk=m.get(key);if(is_keyOpen(key)){function cont2(mk2){return skipNested(mk2,cont)}target=union(target,skipNested(mk,cont2))}else if(is_keyClose(key)){target=union(target,cont(mk))}else{target=union(target,skipNested(mk,cont))}}}return target}}function matcherKeys(m){if(is_emptyMatcher(m))return[];return walkSeq(m,function(vss,vsk){return vss});function walk(m,k){if(m instanceof $WildcardSequence)return null;if(m instanceof $Success)return[];if(m.has(__))return null;var acc=[];for(var key in m.entries){var mk=m.get(key);var piece;if(is_keyOpen(key)){function seqK(vss,vsk){var acc=[];for(var i=0;i<vss.length;i++){var vs=vss[i];acc=acc.concat(k(transformSeqs(vs,key),vsk))}return acc}piece=walkSeq(mk,seqK)}else if(is_keyClose(key)){die("matcherKeys: internal error: unexpected key-close")}else{piece=k(JSON.parse(key),mk)}if(piece==null)return null;acc=acc.concat(piece)}return acc}function walkSeq(m,k){if(m instanceof $WildcardSequence)return null;if(m instanceof $Success)return k([],emptyMatcher);if(m.has(__))return null;var acc=[];for(var key in m.entries){var mk=m.get(key);var piece;if(is_keyClose(key)){piece=k([[]],mk)}else{function outerK(v,vk){return walkSeq(vk,innerK);function innerK(vss,vsk){var acc=[];for(var i=0;i<vss.length;i++){var vs=shallowCopyArray(vss[i]);vs.unshift(v);acc.push(vs)}return k(acc,vsk)}}piece=walk(rseq(key,mk),outerK)}if(piece==null)return null;acc=acc.concat(piece)}return acc}function transformSeqs(vs,opener){if(opener===SOA)return vs;die("Internal error: unknown opener "+opener)}}function prettyMatcher(m,initialIndent){var acc=[];walk(initialIndent||0,m);return acc.join("");function walk(i,m){if(is_emptyMatcher(m)){acc.push("::: no further matches possible");return}if(m instanceof $WildcardSequence){acc.push("...>");walk(i+4,m.matcher);return}if(m instanceof $Success){var vs=JSON.stringify(typeof m.value==="object"?setToArray(m.value):m.value);acc.push("{"+vs+"}");return}if(m.length===0){acc.push(" ::: empty hash!");return}var needSep=false;var keys=m.sortedKeys();for(var keyi=0;keyi<keys.length;keyi++){var key=keys[keyi];var k=m.entries[key];if(needSep){acc.push("\n");acc.push(indentStr(i))}else{needSep=true}acc.push(" ");if(key===__)key="★";if(key===SOA)key="<";if(key===EOA)key=">";acc.push(key);walk(i+key.length+1,k)}}function indentStr(i){return new Array(i+1).join(" ")}}function serializeMatcher(m,serializeSuccess){return walk(m);function walk(m){if(is_emptyMatcher(m))return[];if(m instanceof $WildcardSequence){return["...)",walk(m.matcher)]}if(m instanceof $Success){return["",serializeSuccess(m.value)]}var acc=[];for(var key in m.entries){var k=m.entries[key];if(key===__)key=["__"];else if(key===SOA)key=["("];else if(key===EOA)key=[")"];else key=JSON.parse(key);acc.push([key,walk(k)])}return acc}}function deserializeMatcher(r,deserializeSuccess){return walk(r);function walk(r){if(r.length===0)return emptyMatcher;if(r[0]==="...)")return rwildseq(walk(r[1]));if(r[0]==="")return rsuccess(deserializeSuccess(r[1]));var acc=new $Dict;for(var i=0;i<r.length;i++){var rkey=r[i][0];var rk=r[i][1];var key;if(Array.isArray(rkey)){switch(rkey[0]){case"__":key=__;break;case"(":key=SOA;break;case")":key=EOA;break;default:die("Invalid serialized special key: "+rkey[0])}}else{key=JSON.stringify(rkey)}rup