@falconjs.io/falcon
Version:
Falcon Frontend Framework
1 lines • 55.7 kB
Source Map (JSON)
{"version":3,"sources":["..\\node_modules\\superfine\\src\\index.js","libs\\model.js","..\\node_modules\\url-mapper\\mapper.js","..\\node_modules\\urlon\\lib\\urlon.js","..\\node_modules\\path-to-regexp\\index.js","..\\node_modules\\url-mapper\\compileRoute.js","..\\node_modules\\url-mapper\\index.js","libs\\router.js","utils.js","index.js"],"names":["DEFAULT","RECYCLED_NODE","TEXT_NODE","XLINK_NS","SVG_NS","EMPTY_OBJECT","EMPTY_ARRAY","map","isArray","Array","merge","a","b","target","i","eventProxy","event","currentTarget","events","type","updateProperty","element","name","lastValue","nextValue","isSvg","style","setProperty","slice","removeEventListener","addEventListener","nullOrFalse","removeAttribute","ns","replace","removeAttributeNS","setAttributeNS","setAttribute","createElement","node","lifecycle","document","createTextNode","createElementNS","props","oncreate","push","length","children","appendChild","updateElement","lastProps","nextProps","isRecycled","cb","onupdate","removeChildren","ondestroy","removeElement","parent","remove","removeChild","onremove","getKey","key","createKeyMap","start","end","out","patchElement","lastNode","nextNode","nodeValue","newElement","insertBefore","savedNode","childNode","lastKey","lastChildren","lastChStart","lastChEnd","nextKey","nextChildren","nextChStart","nextChEnd","lastKeyed","nextKeyed","createVNode","createTextVNode","text","recycleChild","nodeType","recycleElement","nodeName","toLowerCase","call","childNodes","recycle","container","patch","pop","h","rest","arguments","Observable","dataObj","signals","Dep","subs","depend","deps","dep","includes","getValidDeps","filter","notifyDeps","sig","notify","observe","property","autorender","makeReactive","obj","computeFunc","val","Object","defineProperty","get","set","newVal","observeData","hasOwnProperty","makeComputed","signal","lenght","forEach","signalHandler","cache","subscribeWatchers","watchers","context","bind","data","watch","state","module","exports","urlMapper","router","routes","matchedRoute","loc","Navigate","App","route","location","Component","match","values","render","transLink","link","querySelectorAll","attributes","href","value","charAt","url","e","preventDefault","history","pushState","Utils","Render","view","Router"],"mappings":"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AGxEH,AF6Ca,aAf2B;AE7BxC,AF8CYkH,eAjB4B,iBAiBvB,CAAC,cAAe;AD2B/B,AGxEF,AF4BwC,MD4ClC1E,GC5CE,ED4CGf,KAAKK,KAAL,CAAWa,SAApB;AACA,AGxEF,AF8CK,KA5BD,CDsDEH,MAAM,IAAV,EAAgB;AACdA,AGxEJ,OHwEOf,KAAKlB,OAAR;AACD,AGxEH,AF8CI,QAAIqH,oBAAoB,SAApBA,iBAAoB,CAACC,QAAD,EAAWC,OAAX,EAAuB;AE7CnD,AF8CQ,aAAK,IAAI5E,GAAT,IAAgB2E,QAAhB,EAAyB;AD2B/B,AGxEF,AF8CY,SD0BHpG,KAAKlB,EC1BCsH,KD0Bb,IC1BsBR,cAAT,CAAwBnE,GAAxB,CAAH,EAAgC;AD2B3C,AGxED,AF8CgBsD,CDehB,uBCfwBtD,GAAR,EAAa2E,SAAS3E,GAAT,EAAc6E,IAAd,CAAmBD,OAAnB,CAAb;AE7ChB,AF8Ca;AD2Bb,AGxEA,AF8CS,ID0BLlF,gBAAgB,UAASC,MAAT,EAAiBpB,IAAjB,EAAuB;AACzC,AGxEF,AF8CK,KAND,CDgCEqB,SAAS,YAAW;AACtBD,AGxEJ,WHwEWE,WAAP,CAAmBL,eAAejB,IAAf,CAAnB;AACD,AGxEH,AF8CI2F,GDwBF,aCxBczB,QAAQqC,IAApB;AE7CJ,AF8CIJ,sBAAkBjC,QAAQsC,KAA1B,EAAiCtC,QAAQqC,IAAzC;AD2BF,AGxEF,MHwEMxF,KAAKf,KAAKK,KAAL,IAAcL,KAAKK,KAAL,CAAWkB,QAAlC;AACA,AGxEF,AF8CI,MD0BER,KC1BK,CD0BC,IAAV,EAAgB;AACdA,AGxEJ,AF8CQ0F,OD0BDzG,KAAKlB,GC1BGoF,ID0BX,EAAiB7C,EC1BEkF,ID0BnB,AC3BO;AD4BR,AGxEH,AF8CQxB,GDwBN,MAEO,eC5BE;AD6BP1D,AGxEJ,AF8CQyD;AD2BL,AGxEH,AF0CW,KAAP;AD+BH,AGxED,AF+CC,CDcD,ACpJA;AEwFA;AHyEA,AGxEA,AF+CC4B,IDyBGlF,GCzBImF,MDyBK,CCzBZ,GAAiB,MDyBI3G,IAAT,EAAe;AAC1B,AGxEF,AF+CQiE,SDyBCjE,OCzBWiE,CDyBH,IAAR,GA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D,CAFJ;AI9SF,AJiTC,CA7BM;AInRP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;ACPA;;AAEA,ACFA;;ACAA;ADGA,IAAIgK,YAAY,SAAZA,SAAY,CAACP,GAAD,EAAQ;ACFxB,ADGI,MAAIQ,OAAOxH,SAASyH,gBAAT,CAA0B,GAA1B,CAAX;AACJ,OAAM,IAAIlG,GAAV,IAAiBiG,IAAjB,EAAsB;ACHtB,AFEA,ACEE,IDFId,ICED,QDFa,ACENc,KAAKjG,GAAL,CAAP,MAAqB,QAArB,GDFL,CCEsCiG,KAAKjG,GAAL,EAAUmG,UAAV,CAAqBC,IAArB,CAA0BC,KAA1B,CAAgCC,MAAhC,CAAuC,CAAvC,MAA6C,GAAjF,EAAqF;ADLvF,ACKuF;ACHvF,ADII,YAAIC,MAAMN,KAAKjG,GAAL,EAAUmG,UAAV,CAAqBC,IAArB,CAA0BC,KAApC;AACAJ,aAAKjG,GAAL,EAAUlC,gBAAV,CAA2B,OAA3B,EAAoC,UAAC0I,CAAD,EAAK;ADF7C,ACGMA,ICNMI,AFGRxB,QCGIqB,CDHK,SAATrB,ICGE,EDHO,CAACC,MAAD;AAAA,ACIPI,SDJmB,KCIfT,KAAJ,CAAUW,IDJiB,ICI3B,GAAqBY,GAArB;ADHF,ACIEG,QDJEpB,UCIMqB,KDJSxB,ICIjB,CAAkB,EAAlB,EAAsB,CDJK5I,GAAV,ACIjB,CDJ+BgJ,CCIHgB,EDJX,CCIjB,CDJmClB,MAAlB,CAAnB;AACA,ACIC,SAJD,EDAQC,YAAR;AEHJ,AFIC,ACHsF,GDA1E,CEDPuB,SAAS,SAATA,MAAS,CAACC,IAAD,EAAO5E,SAAP,EAAkB3D,IAAlB;AAAA,AFCF,ACOV,CDPH,UED0C,iBAAS;AAC/CA,ADQH,eCRU,sBAAMA,IAAN,EAAYuI,KAAK9B,KAAL,CAAZ,EAAyB9C,SAAzB,CAAP;AACH,AFID,ACIC,CAZD,GDQIsD,CENW,UFMA,SAAXA,QAAW,CAACC,GAAD,EAAQ;AENR,AFOX,CEPJ,KFOQC,QAAQD,IAAIT,KAAJ,CAAUI,MAAV,CAAiBK,IAAIT,KAAJ,CAAUW,QAA3B,CAAZ;AACE,ACINV,MDJSS,CCIFR,IDJD,EAAS,CCIf,GAAgB;ACNhBD,AFGQ,ACIJe,OCPGd,CFGKU,KCIGI,CCPf,GAAiB,GFGON,MAAMG,KAAtB;AEFJxD,AFGI,ACEQ,CAAhB,MCLOA,CFGKzD,QAAQ8G,GEJH,GFISI,MAAlB;AEFJ3D,AFGIsD,QAAIT,GEHD7C,EFGH,CAAU4D,MAAV,CAAiBH,MELR,GFKT;AEFJpD,AFGG,GAJD,MAIK,OEHKA,iBAHC;AAIbqE,AFGI,QAAIjB,IEHAiB,MAJK,GFOOpB,IAAIT,KAAJ,CAAUK,MAAV,CAAiB,GAAjB,CAAhB;AEFJ0B,AFGItB,QAAIT,IEHAI,CFGJ,CAAUW,MAAV,CAAiBH,KERR,KFQT;AEFJJ,AFGG,cEHOA,gBANG;AAOboB,AFGC,CAVL,UEOWA;AAPM,CAAjB;AFYA3B,OAAOC,OAAP,GAAiB;AACbE,UAAQA,MADK;AAEbI,YAAUA;AAFG,CAAjB","file":"index.map","sourceRoot":"..\\src","sourcesContent":["var DEFAULT = 0\nvar RECYCLED_NODE = 1\nvar TEXT_NODE = 2\n\nvar XLINK_NS = \"http://www.w3.org/1999/xlink\"\nvar SVG_NS = \"http://www.w3.org/2000/svg\"\n\nvar EMPTY_OBJECT = {}\nvar EMPTY_ARRAY = []\n\nvar map = EMPTY_ARRAY.map\nvar isArray = Array.isArray\n\nvar merge = function(a, b) {\n var target = {}\n\n for (var i in a) target[i] = a[i]\n for (var i in b) target[i] = b[i]\n\n return target\n}\n\nvar eventProxy = function(event) {\n return event.currentTarget.events[event.type](event)\n}\n\nvar updateProperty = function(element, name, lastValue, nextValue, isSvg) {\n if (name === \"key\") {\n } else if (name === \"style\") {\n for (var i in merge(lastValue, nextValue)) {\n var style = nextValue == null || nextValue[i] == null ? \"\" : nextValue[i]\n if (i[0] === \"-\") {\n element[name].setProperty(i, style)\n } else {\n element[name][i] = style\n }\n }\n } else {\n if (name[0] === \"o\" && name[1] === \"n\") {\n if (!element.events) element.events = {}\n\n element.events[(name = name.slice(2))] = nextValue\n\n if (nextValue == null) {\n element.removeEventListener(name, eventProxy)\n } else if (lastValue == null) {\n element.addEventListener(name, eventProxy)\n }\n } else {\n var nullOrFalse = nextValue == null || nextValue === false\n\n if (\n name in element &&\n name !== \"list\" &&\n name !== \"draggable\" &&\n name !== \"spellcheck\" &&\n name !== \"translate\" &&\n !isSvg\n ) {\n element[name] = nextValue == null ? \"\" : nextValue\n if (nullOrFalse) {\n element.removeAttribute(name)\n }\n } else {\n var ns = isSvg && name !== (name = name.replace(/^xlink:?/, \"\"))\n if (ns) {\n if (nullOrFalse) {\n element.removeAttributeNS(XLINK_NS, name)\n } else {\n element.setAttributeNS(XLINK_NS, name, nextValue)\n }\n } else {\n if (nullOrFalse) {\n element.removeAttribute(name)\n } else {\n element.setAttribute(name, nextValue)\n }\n }\n }\n }\n }\n}\n\nvar createElement = function(node, lifecycle, isSvg) {\n var element =\n node.type === TEXT_NODE\n ? document.createTextNode(node.name)\n : (isSvg = isSvg || node.name === \"svg\")\n ? document.createElementNS(SVG_NS, node.name)\n : document.createElement(node.name)\n\n var props = node.props\n if (props.oncreate) {\n lifecycle.push(function() {\n props.oncreate(element)\n })\n }\n\n for (var i = 0, length = node.children.length; i < length; i++) {\n element.appendChild(createElement(node.children[i], lifecycle, isSvg))\n }\n\n for (var name in props) {\n updateProperty(element, name, null, props[name], isSvg)\n }\n\n return (node.element = element)\n}\n\nvar updateElement = function(\n element,\n lastProps,\n nextProps,\n lifecycle,\n isSvg,\n isRecycled\n) {\n for (var name in merge(lastProps, nextProps)) {\n if (\n (name === \"value\" || name === \"checked\"\n ? element[name]\n : lastProps[name]) !== nextProps[name]\n ) {\n updateProperty(element, name, lastProps[name], nextProps[name], isSvg)\n }\n }\n\n var cb = isRecycled ? nextProps.oncreate : nextProps.onupdate\n if (cb != null) {\n lifecycle.push(function() {\n cb(element, lastProps)\n })\n }\n}\n\nvar removeChildren = function(node) {\n for (var i = 0, length = node.children.length; i < length; i++) {\n removeChildren(node.children[i])\n }\n\n var cb = node.props.ondestroy\n if (cb != null) {\n cb(node.element)\n }\n\n return node.element\n}\n\nvar removeElement = function(parent, node) {\n var remove = function() {\n parent.removeChild(removeChildren(node))\n }\n\n var cb = node.props && node.props.onremove\n if (cb != null) {\n cb(node.element, remove)\n } else {\n remove()\n }\n}\n\nvar getKey = function(node) {\n return node == null ? null : node.key\n}\n\nvar createKeyMap = function(children, start, end) {\n var out = {}\n var key\n var node\n\n for (; start <= end; start++) {\n if ((key = (node = children[start]).key) != null) {\n out[key] = node\n }\n }\n\n return out\n}\n\nvar patchElement = function(\n parent,\n element,\n lastNode,\n nextNode,\n lifecycle,\n isSvg\n) {\n if (nextNode === lastNode) {\n } else if (\n lastNode != null &&\n lastNode.type === TEXT_NODE &&\n nextNode.type === TEXT_NODE\n ) {\n if (lastNode.name !== nextNode.name) {\n element.nodeValue = nextNode.name\n }\n } else if (lastNode == null || lastNode.name !== nextNode.name) {\n var newElement = parent.insertBefore(\n createElement(nextNode, lifecycle, isSvg),\n element\n )\n\n if (lastNode != null) removeElement(parent, lastNode)\n\n element = newElement\n } else {\n updateElement(\n element,\n lastNode.props,\n nextNode.props,\n lifecycle,\n (isSvg = isSvg || nextNode.name === \"svg\"),\n lastNode.type === RECYCLED_NODE\n )\n\n var savedNode\n var childNode\n\n var lastKey\n var lastChildren = lastNode.children\n var lastChStart = 0\n var lastChEnd = lastChildren.length - 1\n\n var nextKey\n var nextChildren = nextNode.children\n var nextChStart = 0\n var nextChEnd = nextChildren.length - 1\n\n while (nextChStart <= nextChEnd && lastChStart <= lastChEnd) {\n lastKey = getKey(lastChildren[lastChStart])\n nextKey = getKey(nextChildren[nextChStart])\n\n if (lastKey == null || lastKey !== nextKey) break\n\n patchElement(\n element,\n lastChildren[lastChStart].element,\n lastChildren[lastChStart],\n nextChildren[nextChStart],\n lifecycle,\n isSvg\n )\n\n lastChStart++\n nextChStart++\n }\n\n while (nextChStart <= nextChEnd && lastChStart <= lastChEnd) {\n lastKey = getKey(lastChildren[lastChEnd])\n nextKey = getKey(nextChildren[nextChEnd])\n\n if (lastKey == null || lastKey !== nextKey) break\n\n patchElement(\n element,\n lastChildren[lastChEnd].element,\n lastChildren[lastChEnd],\n nextChildren[nextChEnd],\n lifecycle,\n isSvg\n )\n\n lastChEnd--\n nextChEnd--\n }\n\n if (lastChStart > lastChEnd) {\n while (nextChStart <= nextChEnd) {\n element.insertBefore(\n createElement(nextChildren[nextChStart++], lifecycle, isSvg),\n (childNode = lastChildren[lastChStart]) && childNode.element\n )\n }\n } else if (nextChStart > nextChEnd) {\n while (lastChStart <= lastChEnd) {\n removeElement(element, lastChildren[lastChStart++])\n }\n } else {\n var lastKeyed = createKeyMap(lastChildren, lastChStart, lastChEnd)\n var nextKeyed = {}\n\n while (nextChStart <= nextChEnd) {\n lastKey = getKey((childNode = lastChildren[lastChStart]))\n nextKey = getKey(nextChildren[nextChStart])\n\n if (\n nextKeyed[lastKey] ||\n (nextKey != null && nextKey === getKey(lastChildren[lastChStart + 1]))\n ) {\n if (lastKey == null) {\n removeElement(element, childNode)\n }\n lastChStart++\n continue\n }\n\n if (nextKey == null || lastNode.type === RECYCLED_NODE) {\n if (lastKey == null) {\n patchElement(\n element,\n childNode && childNode.element,\n childNode,\n nextChildren[nextChStart],\n lifecycle,\n isSvg\n )\n nextChStart++\n }\n lastChStart++\n } else {\n if (lastKey === nextKey) {\n patchElement(\n element,\n childNode.element,\n childNode,\n nextChildren[nextChStart],\n lifecycle,\n isSvg\n )\n nextKeyed[nextKey] = true\n lastChStart++\n } else {\n if ((savedNode = lastKeyed[nextKey]) != null) {\n patchElement(\n element,\n element.insertBefore(\n savedNode.element,\n childNode && childNode.element\n ),\n savedNode,\n nextChildren[nextChStart],\n lifecycle,\n isSvg\n )\n nextKeyed[nextKey] = true\n } else {\n patchElement(\n element,\n childNode && childNode.element,\n null,\n nextChildren[nextChStart],\n lifecycle,\n isSvg\n )\n }\n }\n nextChStart++\n }\n }\n\n while (lastChStart <= lastChEnd) {\n if (getKey((childNode = lastChildren[lastChStart++])) == null) {\n removeElement(element, childNode)\n }\n }\n\n for (var key in lastKeyed) {\n if (nextKeyed[key] == null) {\n removeElement(element, lastKeyed[key])\n }\n }\n }\n }\n\n return (nextNode.element = element)\n}\n\nvar createVNode = function(name, props, children, element, key, type) {\n return {\n name: name,\n props: props,\n children: children,\n element: element,\n key: key,\n type: type\n }\n}\n\nvar createTextVNode = function(text, element) {\n return createVNode(text, EMPTY_OBJECT, EMPTY_ARRAY, element, null, TEXT_NODE)\n}\n\nvar recycleChild = function(element) {\n return element.nodeType === 3 // Node.TEXT_NODE\n ? createTextVNode(element.nodeValue, element)\n : recycleElement(element)\n}\n\nvar recycleElement = function(element) {\n return createVNode(\n element.nodeName.toLowerCase(),\n EMPTY_OBJECT,\n map.call(element.childNodes, recycleChild),\n element,\n null,\n RECYCLED_NODE\n )\n}\n\nexport var recycle = function(container) {\n return recycleElement(container.children[0])\n}\n\nexport var patch = function(lastNode, nextNode, container) {\n var lifecycle = []\n\n patchElement(container, container.children[0], lastNode, nextNode, lifecycle)\n\n while (lifecycle.length > 0) lifecycle.pop()()\n\n return nextNode\n}\n\nexport var h = function(name, props) {\n var node\n var rest = []\n var children = []\n var length = arguments.length\n\n while (length-- > 2) rest.push(arguments[length])\n\n if ((props = props == null ? {} : props).children != null) {\n if (rest.length <= 0) {\n rest.push(props.children)\n }\n delete props.children\n }\n\n while (rest.length > 0) {\n if (isArray((node = rest.pop()))) {\n for (length = node.length; length-- > 0; ) {\n rest.push(node[length])\n }\n } else if (node === false || node === true || node == null) {\n } else {\n children.push(typeof node === \"object\" ? node : createTextVNode(node))\n }\n }\n\n return typeof name === \"function\"\n ? name(props, (props.children = children))\n : createVNode(name, props, children, null, props.key, DEFAULT)\n}\n","let Observable = (dataObj) => {\r\n let signals = {}\r\n let Dep = {\r\n target: null,\r\n subs:{},\r\n depend (deps,dep){\r\n if(!deps.includes(this.target)){\r\n deps.push(this.target)\r\n }\r\n if(!Dep.subs[this.target].includes(dep)){\r\n Dep.subs[this.target].push(dep)\r\n }\r\n },\r\n getValidDeps (deps, key){\r\n return deps.filter(dep => this.subs[dep].includes(key))\r\n },\r\n notifyDeps(deps){\r\n //deps.forEach(notify)\r\n deps.map( (sig) => notify(sig))\r\n }\r\n }\r\n \r\n /**\r\n * Observe function\r\n * \r\n * @param {*} property \r\n * @param {function} cb \r\n */\r\n let observe = (property, cb) => {\r\n if(!signals[property]) signals[property] = []\r\n signals[property].push(cb) \r\n }\r\n //TODO\r\n let autorender = ()=>{\r\n // console.log('rerender')\r\n }\r\n \r\n /**\r\n * \r\n * @param {object} obj \r\n * @param {*} key \r\n */\r\n let makeReactive = (obj, key, computeFunc) => {\r\n let val = obj[key]\r\n let deps =[]\r\n \r\n Object.defineProperty(obj, key,{\r\n get(){\r\n if(Dep.target) {\r\n \r\n Dep.depend(deps,key)\r\n }\r\n return val \r\n },\r\n set(newVal){\r\n val = newVal\r\n deps = Dep.getValidDeps(deps, key)\r\n Dep.notifyDeps(deps, key)\r\n notify(key)\r\n autorender()\r\n \r\n }\r\n })\r\n }\r\n \r\n /**\r\n * \r\n * @param {object} obj \r\n */\r\n let observeData = (obj) =>{\r\n for (let key in obj){\r\n if( obj.hasOwnProperty(key)){\r\n if(typeof obj[key] === 'function'){\r\n makeComputed(obj,key, obj[key])\r\n } else{\r\n makeReactive(obj, key)\r\n } \r\n }\r\n }\r\n }\r\n \r\n let notify = (signal) => {\r\n if(!signals[signal] || signals[signal].lenght <1) return\r\n \r\n signals[signal].forEach( (signalHandler) => signalHandler() )\r\n }\r\n \r\n let makeComputed = (obj, key, computeFunc) =>{\r\n let cache = null\r\n let deps = []\r\n observe(key, ()=>{\r\n cache = null //clear cache\r\n deps = Dep.getValidDeps(deps,key)\r\n Dep.notifyDeps(deps, key)\r\n })\r\n \r\n Object.defineProperty(obj, key, {\r\n \r\n get() {\r\n if(Dep.target) {\r\n Dep.depend(deps, key)\r\n }\r\n Dep.target = key\r\n \r\n if(!cache){\r\n Dep.subs[key] =[]\r\n cache = computeFunc.call(obj)\r\n }\r\n //Clear target context\r\n Dep.target = null\r\n return cache\r\n },\r\n \r\n set(){/*Do nothing*/}\r\n })\r\n }\r\n \r\n let subscribeWatchers = (watchers, context) => {\r\n for( let key in watchers){\r\n if(watchers.hasOwnProperty(key)){\r\n observe(key, watchers[key].bind(context))\r\n }\r\n }\r\n }\r\n \r\n observeData(dataObj.data)\r\n subscribeWatchers(dataObj.watch, dataObj.data)\r\n \r\n return {\r\n state: dataObj.data,\r\n observe,\r\n notify\r\n }\r\n \r\n}\r\n \r\n module.exports = {\r\n Observable: Observable\r\n}","module.exports = function mapper (compileFn, options) {\n if (typeof compileFn !== 'function') throw new Error('URL Mapper - function to compile a route expected as first argument')\n\n options = options || {}\n var cache = {}\n\n function getCompiledRoute (route) {\n if (!cache[route]) {\n cache[route] = compileFn(route, options)\n }\n\n return cache[route]\n }\n\n function parse (route, url) {\n if (arguments.length < 2) throw new Error('URL Mapper - parse method expects 2 arguments')\n return getCompiledRoute(route).parse(url)\n }\n\n function stringify (route, values) {\n if (arguments.length < 2) throw new Error('URL Mapper - stringify method expects 2 arguments')\n return getCompiledRoute(route).stringify(values)\n }\n\n function map (url, routes) {\n if (arguments.length < 2) throw new Error('URL Mapper - map method expects 2 arguments')\n for (var route in routes) {\n var compiled = getCompiledRoute(route)\n var values = compiled.parse(url)\n if (values) {\n var match = routes[route]\n\n return {\n route: route,\n match: match,\n values: values\n }\n }\n }\n }\n\n return {\n parse: parse,\n stringify: stringify,\n map: map\n }\n}\n","/* eslint-disable no-labels */\n'use strict'\n\nvar keyStringifyRegexp = /([=:@$/])/g\nvar valueStringifyRegexp = /([&;/])/g\nvar keyParseRegexp = /[=:@$]/\nvar valueParseRegexp = /[&;]/\n\nfunction encodeString (str, regexp) {\n return encodeURI(str.replace(regexp, '/$1'))\n}\n\nfunction trim (res) {\n return typeof res === 'string' ? res.replace(/;+$/g, '') : res\n}\n\nfunction stringify (input, recursive) {\n if (!recursive) {\n return trim(stringify(input, true))\n }\n // Number, Boolean or Null\n if (\n typeof input === 'number' ||\n input === true ||\n input === false ||\n input === null\n ) {\n return ':' + input\n }\n var res = []\n // Array\n if (input instanceof Array) {\n for (var i = 0; i < input.length; ++i) {\n typeof input[i] === 'undefined'\n ? res.push(':null')\n : res.push(stringify(input[i], true))\n }\n return '@' + res.join('&') + ';'\n }\n // Object\n if (typeof input === 'object') {\n for (var key in input) {\n var val = stringify(input[key], true)\n if (val) {\n res.push(encodeString(key, keyStringifyRegexp) + val)\n }\n }\n return '$' + res.join('&') + ';'\n }\n // undefined\n if (typeof input === 'undefined') {\n return\n }\n // String\n return '=' + encodeString(input.toString(), valueStringifyRegexp)\n}\n\nfunction parse (str) {\n var pos = 0\n str = decodeURI(str)\n\n function readToken (regexp) {\n var token = ''\n for (; pos !== str.length; ++pos) {\n if (str.charAt(pos) === '/') {\n pos += 1\n if (pos === str.length) {\n token += ';'\n break\n }\n } else if (str.charAt(pos).match(regexp)) {\n break\n }\n token += str.charAt(pos)\n }\n return token\n }\n\n function parseToken () {\n var type = str.charAt(pos++)\n // String\n if (type === '=') {\n return readToken(valueParseRegexp)\n }\n // Number, Boolean or Null\n if (type === ':') {\n var value = readToken(valueParseRegexp)\n if (value === 'true') {\n return true\n }\n if (value === 'false') {\n return false\n }\n value = parseFloat(value)\n return isNaN(value) ? null : value\n }\n var res\n // Array\n if (type === '@') {\n res = []\n loop: {\n // empty array\n if (pos >= str.length || str.charAt(pos) === ';') {\n break loop\n }\n // parse array items\n while (1) {\n res.push(parseToken())\n if (pos >= str.length || str.charAt(pos) === ';') {\n break loop\n }\n pos += 1\n }\n }\n pos += 1\n return res\n }\n // Object\n if (type === '$') {\n res = {}\n loop: {\n if (pos >= str.length || str.charAt(pos) === ';') {\n break loop\n }\n while (1) {\n var name = readToken(keyParseRegexp)\n res[name] = parseToken()\n if (pos >= str.length || str.charAt(pos) === ';') {\n break loop\n }\n pos += 1\n }\n }\n pos += 1\n return res\n }\n // Error\n throw new Error('Unexpected char ' + type)\n }\n\n return parseToken()\n}\n\nmodule.exports = {\n stringify: stringify,\n parse: parse\n}\n","/**\n * Expose `pathToRegexp`.\n */\nmodule.exports = pathToRegexp\nmodule.exports.parse = parse\nmodule.exports.compile = compile\nmodule.exports.tokensToFunction = tokensToFunction\nmodule.exports.tokensToRegExp = tokensToRegExp\n\n/**\n * Default configs.\n */\nvar DEFAULT_DELIMITER = '/'\nvar DEFAULT_DELIMITERS = './'\n\n/**\n * The main path matching regexp utility.\n *\n * @type {RegExp}\n */\nvar PATH_REGEXP = new RegExp([\n // Match escaped characters that would otherwise appear in future matches.\n // This allows the user to escape special characters that won't transform.\n '(\\\\\\\\.)',\n // Match Express-style parameters and un-named parameters with a prefix\n // and optional suffixes. Matches appear as:\n //\n // \":test(\\\\d+)?\" => [\"test\", \"\\d+\", undefined, \"?\"]\n // \"(\\\\d+)\" => [undefined, undefined, \"\\d+\", undefined]\n '(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?'\n].join('|'), 'g')\n\n/**\n * Parse a string for the raw tokens.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!Array}\n */\nfunction parse (str, options) {\n var tokens = []\n var key = 0\n var index = 0\n var path = ''\n var defaultDelimiter = (options && options.delimiter) || DEFAULT_DELIMITER\n var delimiters = (options && options.delimiters) || DEFAULT_DELIMITERS\n var pathEscaped = false\n var res\n\n while ((res = PATH_REGEXP.exec(str)) !== null) {\n var m = res[0]\n var escaped = res[1]\n var offset = res.index\n path += str.slice(index, offset)\n index = offset + m.length\n\n // Ignore already escaped sequences.\n if (escaped) {\n path += escaped[1]\n pathEscaped = true\n continue\n }\n\n var prev = ''\n var next = str[index]\n var name = res[2]\n var capture = res[3]\n var group = res[4]\n var modifier = res[5]\n\n if (!pathEscaped && path.length) {\n var k = path.length - 1\n\n if (delimiters.indexOf(path[k]) > -1) {\n prev = path[k]\n path = path.slice(0, k)\n }\n }\n\n // Push the current path onto the tokens.\n if (path) {\n tokens.push(path)\n path = ''\n pathEscaped = false\n }\n\n var partial = prev !== '' && next !== undefined && next !== prev\n var repeat = modifier === '+' || modifier === '*'\n var optional = modifier === '?' || modifier === '*'\n var delimiter = prev || defaultDelimiter\n var pattern = capture || group\n\n tokens.push({\n name: name || key++,\n prefix: prev,\n delimiter: delimiter,\n optional: optional,\n repeat: repeat,\n partial: partial,\n pattern: pattern ? escapeGroup(pattern) : '[^' + escapeString(delimiter) + ']+?'\n })\n }\n\n // Push any remaining characters.\n if (path || index < str.length) {\n tokens.push(path + str.substr(index))\n }\n\n return tokens\n}\n\n/**\n * Compile a string to a template function for the path.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!function(Object=, Object=)}\n */\nfunction compile (str, options) {\n return tokensToFunction(parse(str, options))\n}\n\n/**\n * Expose a method for transforming tokens into the path function.\n */\nfunction tokensToFunction (tokens) {\n // Compile all the tokens into regexps.\n var matches = new Array(tokens.length)\n\n // Compile all the patterns before compilation.\n for (var i = 0; i < tokens.length; i++) {\n if (typeof tokens[i] === 'object') {\n matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$')\n }\n }\n\n return function (data, options) {\n var path = ''\n var encode = (options && options.encode) || encodeURIComponent\n\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n path += token\n continue\n }\n\n var value = data ? data[token.name] : undefined\n var segment\n\n if (Array.isArray(value)) {\n if (!token.repeat) {\n throw new TypeError('Expected \"' + token.name + '\" to not repeat, but got array')\n }\n\n if (value.length === 0) {\n if (token.optional) continue\n\n throw new TypeError('Expected \"' + token.name + '\" to not be empty')\n }\n\n for (var j = 0; j < value.length; j++) {\n segment = encode(value[j], token)\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected all \"' + token.name + '\" to match \"' + token.pattern + '\"')\n }\n\n path += (j === 0 ? token.prefix : token.delimiter) + segment\n }\n\n continue\n }\n\n if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {\n segment = encode(String(value), token)\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected \"' + token.name + '\" to match \"' + token.pattern + '\", but got \"' + segment + '\"')\n }\n\n path += token.prefix + segment\n continue\n }\n\n if (token.optional) {\n // Prepend partial segment prefixes.\n if (token.partial) path += token.prefix\n\n continue\n }\n\n throw new TypeError('Expected \"' + token.name + '\" to be ' + (token.repeat ? 'an array' : 'a string'))\n }\n\n return path\n }\n}\n\n/**\n * Escape a regular expression string.\n *\n * @param {string} str\n * @return {string}\n */\nfunction escapeString (str) {\n return str.replace(/([.+*?=^!:${}()[\\]|/\\\\])/g, '\\\\$1')\n}\n\n/**\n * Escape the capturing group by escaping special characters and meaning.\n *\n * @param {string} group\n * @return {string}\n */\nfunction escapeGroup (group) {\n return group.replace(/([=!:$/()])/g, '\\\\$1')\n}\n\n/**\n * Get the flags for a regexp from the options.\n *\n * @param {Object} options\n * @return {string}\n */\nfunction flags (options) {\n return options && options.sensitive ? '' : 'i'\n}\n\n/**\n * Pull out keys from a regexp.\n *\n * @param {!RegExp} path\n * @param {Array=} keys\n * @return {!RegExp}\n */\nfunction regexpToRegexp (path, keys) {\n if (!keys) return path\n\n // Use a negative lookahead to match only capturing groups.\n var groups = path.source.match(/\\((?!\\?)/g)\n\n if (groups) {\n for (var i = 0; i < groups.length; i++) {\n keys.push({\n name: i,\n prefix: null,\n delimiter: null,\n optional: false,\n repeat: false,\n partial: false,\n pattern: null\n })\n }\n }\n\n return path\n}\n\n/**\n * Transform an array into a regexp.\n *\n * @param {!Array} path\n * @param {Array=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction arrayToRegexp (path, keys, options) {\n var parts = []\n\n for (var i = 0; i < path.length; i++) {\n parts.push(pathToRegexp(path[i], keys, options).source)\n }\n\n return new RegExp('(?:' + parts.join('|') + ')', flags(options))\n}\n\n/**\n * Create a path regexp from string input.\n *\n * @param {string} path\n * @param {Array=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction stringToRegexp (path, keys, options) {\n return tokensToRegExp(parse(path, options), keys, options)\n}\n\n/**\n * Expose a function for taking tokens and returning a RegExp.\n *\n * @param {!Array} tokens\n * @param {Array=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction tokensToRegExp (tokens, keys, options) {\n options = options || {}\n\n var strict = options.strict\n var start = options.start !== false\n var end = options.end !== false\n var delimiter = escapeString(options.delimiter || DEFAULT_DELIMITER)\n var delimiters = options.delimiters || DEFAULT_DELIMITERS\n var endsWith = [].concat(options.endsWith || []).map(escapeString).concat('$').join('|')\n var route = start ? '^' : ''\n var isEndDelimited = tokens.length === 0\n\n // Iterate over the tokens and create our regexp string.\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n route += escapeString(token)\n isEndDelimited = i === tokens.length - 1 && delimiters.indexOf(token[token.length - 1]) > -1\n } else {\n var capture = token.repeat\n ? '(?:' + token.pattern + ')(?:' + escapeString(token.delimiter) + '(?:' + token.pattern + '))*'\n : token.pattern\n\n if (keys) keys.push(token)\n\n if (token.optional) {\n if (token.partial) {\n route += escapeString(token.prefix) + '(' + capture + ')?'\n } else {\n route += '(?:' + escapeString(token.prefix) + '(' + capture + '))?'\n }\n } else {\n route += escapeString(token.prefix) + '(' + capture + ')'\n }\n }\n }\n\n if (end) {\n if (!strict) route += '(?:' + delimiter + ')?'\n\n route += endsWith =