{"version":3,"sources":["../node_modules/superfine/src/index.js","../src/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","../src/libs/router.js","../src/index.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","console","log","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","loc","matchedRoute","Render","view","Router","StateStore","fName","lName","age","fullName","old","oldornot","App","Display","Controller","e","value","View","render","getElementById"],"mappings":"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AAC9F,MAAJ,GAAa,IAAb;AACA,eAAO8H,KAAP;AACH,OAf2B;AAiB5BT,MAAAA,GAjB4B,iBAiBvB;AAAC;AAAe;AAjBO,KAAhC;AAmBH,GA5BD;;AA8BA,MAAIU,iBAAiB,GAAG,SAApBA,iBAAoB,CAACC,QAAD,EAAWC,OAAX,EAAuB;AAC3C,SAAK,IAAI9E,GAAT,IAAgB6E,QAAhB,EAAyB;AACrB,UAAGA,QAAQ,CAACR,cAAT,CAAwBrE,GAAxB,CAAH,EAAgC;AAC5BsD,QAAAA,OAAO,CAACtD,GAAD,EAAM6E,QAAQ,CAAC7E,GAAD,CAAR,CAAc+E,IAAd,CAAmBD,OAAnB,CAAN,CAAP;AACH;AACJ;AACJ,GAND;;AAQAV,EAAAA,WAAW,CAAC3B,OAAO,CAACuC,IAAT,CAAX;AACAJ,EAAAA,iBAAiB,CAACnC,OAAO,CAACwC,KAAT,EAAgBxC,OAAO,CAACuC,IAAxB,CAAjB;AAEA,SAAO;AACHE,IAAAA,KAAK,EAAEzC,OAAO,CAACuC,IADZ;AAEH1B,IAAAA,OAAO,EAAPA,OAFG;AAGHD,IAAAA,MAAM,EAANA;AAHG,GAAP;AAMH,CAtID;;AAwIC8B,MAAM,CAACC,OAAP,GAAiB;AACV5C,EAAAA,UAAU,EAAEA;AADF,CAAjB;;ACxID;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;;AACA;;;;AAEA,IAAM6C,SAAS,GAAG,yBAAlB;;AAEA,IAAIC,MAAM,GAAG,SAATA,MAAS,CAACC,MAAD;AAAA,SAAY,UAAAC,GAAG,EAAK;AAC7B,QAAIC,YAAY,GAAGJ,SAAS,CAAC9I,GAAV,CAAciJ,GAAd,EAAkBD,MAAlB,CAAnB;AACA,WAAQE,YAAR;AACH,GAHY;AAAA,CAAb;;AAMAN,MAAM,CAACC,OAAP,GAAiB;AACbE,EAAAA,MAAM,EAAEA;AADK,CAAjB;;;;ACXA;;AACA;;AACA;;AAEA,IAAMI,MAAM,GAAG,SAATA,MAAS,CAACC,IAAD,EAAOzD,SAAP,EAAkB3D,IAAlB;AAAA,SAA2B,UAAA2G,KAAK,EAAI;AAC/C3G,IAAAA,IAAI,GAAG,sBAAMA,IAAN,EAAYoH,IAAI,CAACT,KAAD,CAAhB,EAAyBhD,SAAzB,CAAP;AACH,GAFc;AAAA,CAAf;;AAMAiD,MAAM,CAACC,OAAP,GAAiB;AACb/C,EAAAA,CAAC,EAAEA,YADU;AAEbF,EAAAA,KAAK,EAAEA,gBAFM;AAGbK,EAAAA,UAAU,EAAEA,iBAHC;AAIbkD,EAAAA,MAAM,EAAEA,MAJK;AAKbE,EAAAA,MAAM,EAAEN;AALK,CAAjB;;;;ACVA;;AAEA,IAAIO,UAAU,GAAG;AACTb,EAAAA,IAAI,EAAE;AACFc,IAAAA,KAAK,EAAE,QADL;AAEFC,IAAAA,KAAK,EAAE,WAFL;AAGFC,IAAAA,GAAG,EAAC,EAHF;AAIFC,IAAAA,QAJE,sBAIU;AACJ,aAAO,KAAKH,KAAL,GAAa,GAAb,GAAmB,KAAKC,KAA/B;AACH,KANH;AAOFG,IAAAA,GAPE,iBAOK;AACH,UAAIC,QAAQ,GAAC,OAAb;;AACA,UAAG,KAAKH,GAAL,GAAW,EAAd,EAAiB;AACbG,QAAAA,QAAQ,GAAG,aAAX;AACH;;AACD,aAAOA,QAAP;AACH;AAbC;AADG,CAAjB;AAkBA,IAAIC,GAAG,GAAG,IAAI5D,eAAJ,CAAeqD,UAAf,CAAV;;AAEA,IAAIQ,OAAO,GAAG,SAAVA,OAAU,GAAM;AAChB,SACE;AAAK,IAAA,QAAQ,EAAE5C,OAAO,CAACC,GAAR,CAAY,oCAAZ;AAAf,KACE,wBAAK0C,GAAG,CAAClB,KAAJ,CAAUe,QAAf,CADF,EAEE,yBAAMG,GAAG,CAAClB,KAAJ,CAAUc,GAAhB,CAFF,EAGE,yBAAMI,GAAG,CAAClB,KAAJ,CAAUgB,GAAhB,CAHF,CADF;AAOH,CARD;;AAUA,IAAII,UAAU,GAAG,SAAbA,UAAa,GAAK;AAChB,SACE,yBACE;AAAO,IAAA,KAAK,EAAIF,GAAG,CAAClB,KAAJ,CAAUY,KAA1B;AAAiC,IAAA,OAAO,EAAE,iBAACS,CAAD,EAAK;AAACH,MAAAA,GAAG,CAAClB,KAAJ,CAAUY,KAAV,GAAkBS,CAAC,CAAC1J,MAAF,CAAS2J,KAA3B;AAAkC;AAAlF,IADF,EAEE;AAAO,IAAA,KAAK,EAAIJ,GAAG,CAAClB,KAAJ,CAAUa,KAA1B;AAAiC,IAAA,OAAO,EAAE,iBAACQ,CAAD,EAAK;AAACH,MAAAA,GAAG,CAAClB,KAAJ,CAAUa,KAAV,GAAkBQ,CAAC,CAAC1J,MAAF,CAAS2J,KAA3B;AAAkC;AAAlF,IAFF,EAGE;AAAO,IAAA,IAAI,EAAC,OAAZ;AAAoB,IAAA,KAAK,EAAEJ,GAAG,CAAClB,KAAJ,CAAUc,GAArC;AAA2C,IAAA,OAAO,EAAE,iBAACO,CAAD,EAAK;AAACH,MAAAA,GAAG,CAAClB,KAAJ,CAAUc,GAAV,GAAgBO,CAAC,CAAC1J,MAAF,CAAS2J,KAAzB;AAAgC;AAA1F,IAHF,CADF;AAOL,CARD;;AAUA,IAAIC,IAAI,GAAG,SAAPA,IAAO,GAAO;AACZ,SACE,yBACC,YAAC,OAAD,OADD,EAEC,YAAC,UAAD,OAFD,CADF;AAML,CAPD;;AASA,IAAMC,MAAM,GAAG,iBAAOD,IAAP,EAAahI,QAAQ,CAACkI,cAAT,CAAwB,MAAxB,CAAb,CAAf;AAEAD,MAAM,CAACN,GAAD,CAAN;AACAA,GAAG,CAAC9C,OAAJ,CAAY,OAAZ,EAAqB,YAAK;AAACoD,EAAAA,MAAM,CAACN,GAAD,CAAN;AAAY,CAAvC;AACAA,GAAG,CAAC9C,OAAJ,CAAY,OAAZ,EAAqB,YAAK;AAACoD,EAAAA,MAAM,CAACN,GAAD,CAAN;AAAY,CAAvC;AACAA,GAAG,CAAC9C,OAAJ,CAAY,KAAZ,EAAmB,YAAK;AAACoD,EAAAA,MAAM,CAACN,GAAD,CAAN;AAAY,CAArC","file":"app.e31bb0bc.map","sourceRoot":"..\\app","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) => {\n    let signals = {}\n    let Dep = {\n        target: null,\n        subs:{},\n        depend (deps,dep){\n            if(!deps.includes(this.target)){\n                deps.push(this.target)\n            }\n            if(!Dep.subs[this.target].includes(dep)){\n                Dep.subs[this.target].push(dep)\n            }\n        },\n        getValidDeps (deps, key){\n            return deps.filter(dep => this.subs[dep].includes(key))\n        },\n        notifyDeps(deps){\n            //deps.forEach(notify)\n            deps.map( (sig) => notify(sig))\n        }\n    }\n    \n    /**\n     * Observe function\n     * \n     * @param {*} property \n     * @param {function} cb \n     */\n    let observe = (property, cb) => {\n        if(!signals[property]) signals[property] = []\n        signals[property].push(cb)  \n    }\n\n    let autorender = ()=>{\n        console.log('rerender')\n    }\n    \n    /**\n     * \n     * @param {object} obj \n     * @param {*} key \n     */\n    let makeReactive = (obj, key, computeFunc) => {\n        let val = obj[key]\n        let deps =[]\n    \n        Object.defineProperty(obj, key,{\n            get(){\n                if(Dep.target) {\n                   \n                    Dep.depend(deps,key)\n                    }\n                    return val       \n            },\n             set(newVal){\n                val = newVal\n                deps = Dep.getValidDeps(deps, key)\n                Dep.notifyDeps(deps, key)\n                notify(key)\n                autorender()\n                \n            }\n        })\n    }\n    \n    /**\n     * \n     * @param {object} obj \n     */\n    let observeData = (obj) =>{\n        for (let key in obj){\n            if( obj.hasOwnProperty(key)){\n                if(typeof obj[key] === 'function'){\n                    makeComputed(obj,key, obj[key])\n                } else{\n                    makeReactive(obj, key)\n                }      \n            }\n        }\n    }\n    \n    let notify = (signal) => {\n        if(!signals[signal] || signals[signal].lenght <1) return\n         \n         signals[signal].forEach( (signalHandler) => signalHandler() )\n    }\n    \n    let makeComputed = (obj, key, computeFunc) =>{\n        let cache = null\n        let deps = []\n        observe(key, ()=>{\n            cache = null //clear cache\n            deps = Dep.getValidDeps(deps,key)\n            Dep.notifyDeps(deps, key)\n        })\n    \n        Object.defineProperty(obj, key, {\n    \n            get() {\n                if(Dep.target) {\n                    Dep.depend(deps, key)\n                }\n                Dep.target = key\n    \n                if(!cache){\n                    Dep.subs[key] =[]\n                    cache = computeFunc.call(obj)\n                }\n                //Clear target context\n                Dep.target = null\n                return cache\n            },\n    \n            set(){/*Do nothing*/}\n        })\n    }\n    \n    let subscribeWatchers = (watchers, context) => {\n        for( let key in watchers){\n            if(watchers.hasOwnProperty(key)){\n                observe(key, watchers[key].bind(context))\n            }\n        }\n    }\n    \n    observeData(dataObj.data)\n    subscribeWatchers(dataObj.watch, dataObj.data)\n    \n    return {\n        state: dataObj.data,\n        observe,\n        notify\n    }\n    \n}\n    \n module.exports = {\n        Observable: Observable\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 === '$' ? '$' : '(?=' + endsWith + ')'\n  } else {\n    if (!strict) route += '(?:' + delimiter + '(?=' + endsWith + '))?'\n    if (!isEndDelimited) route += '(?=' + delimiter + '|' + endsWith + ')'\n  }\n\n  return new RegExp(route, flags(options))\n}\n\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n *\n * @param  {(string|RegExp|Array)} path\n * @param  {Array=}                keys\n * @param  {Object=}               options\n * @return {!RegExp}\n */\nfunction pathToRegexp (path, keys, options) {\n  if (path instanceof RegExp) {\n    return regexpToRegexp(path, keys)\n  }\n\n  if (Array.isArray(path)) {\n    return arrayToRegexp(/** @type {!Array} */ (path), keys, options)\n  }\n\n  return stringToRegexp(/** @type {string} */ (path), keys, options)\n}\n","'use strict'\nvar URLON = require('urlon')\nvar pathToRegexp = require('path-to-regexp')\n\nfunction getKeyName (key) {\n  return key.name.toString()\n}\n\n// loose escaping for segment part\n// see: https://github.com/pillarjs/path-to-regexp/pull/75\nfunction encodeSegment (str) {\n  return encodeURI(str).replace(/[/?#'\"]/g, function (c) {\n    return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n  })\n}\n\nfunction compileRoute (route, options) {\n  var re\n  var compiled\n  var keys = []\n  var querySeparator = options.querySeparator || '?'\n\n  re = pathToRegexp(route, keys)\n  keys = keys.map(getKeyName)\n  compiled = pathToRegexp.compile(route)\n\n  return {\n    parse: function (url) {\n      var path = url\n      var result = {}\n\n      if (~path.indexOf('#') && !~querySeparator.indexOf('#')) {\n        path = path.split('#')[0]\n      }\n\n      if (~path.indexOf(querySeparator)) {\n        if (options.query) {\n          var queryString = '$' + path.slice(path.indexOf(querySeparator) + querySeparator.length)\n          result = URLON.parse(queryString)\n        }\n        path = path.split(querySeparator)[0]\n      }\n\n      var match = re.exec(path)\n      if (!match) return null\n\n      for (var i = 1; i < match.length; ++i) {\n        var key = keys[i - 1]\n        var value = match[i] && decodeURIComponent(match[i])\n        result[key] = (value && value[0] === ':')\n          ? URLON.parse(value)\n          : value\n      }\n\n      return result\n    },\n\n    stringify: function (values) {\n      var pathParams = {}\n      var queryParams = {}\n\n      Object.keys(values).forEach(function (key) {\n        if (~keys.indexOf(key)) {\n          switch (typeof values[key]) {\n            case 'boolean':\n            case 'number':\n              pathParams[key] = URLON.stringify(values[key])\n              break\n\n            case 'object':\n              if (values[key]) {\n                throw new Error('URL Mapper - objects are not allowed to be stringified as part of path')\n              } else { // null\n                pathParams[key] = URLON.stringify(values[key])\n              }\n              break\n\n            default:\n              pathParams[key] = values[key]\n          }\n        } else {\n          queryParams[key] = values[key]\n        }\n      })\n\n      var path = compiled(pathParams, { encode: encodeSegment })\n      var queryString = ''\n\n      if (options.query) {\n        if (Object.keys(queryParams).length) {\n          queryString = URLON.stringify(queryParams).slice(1)\n        }\n      }\n\n      return path + (queryString ? querySeparator + queryString : '')\n    }\n  }\n}\n\nmodule.exports = compileRoute\n","'use strict'\nvar mapper = require('./mapper')\nvar compileRoute = require('./compileRoute')\n\nmodule.exports = function urlMapper (options) {\n  return mapper(compileRoute, options)\n}\n","import {Observable} from './model'\nimport Mapper from 'url-mapper'\n\nconst urlMapper = Mapper()\n\nlet router = (routes) => loc  => {\n    var matchedRoute = urlMapper.map(loc,routes)\n    return (matchedRoute)\n}\n\n\nmodule.exports = {\n    router: router\n}","import {patch, h} from 'superfine'\nimport {Observable} from './libs/model'\nimport {router} from './libs/router'\n\nconst Render = (view, container, node) => state => {\n    node = patch(node, view(state), container)\n}\n\n\n\nmodule.exports = {\n    h: h,\n    patch: patch,\n    Observable: Observable,\n    Render: Render,\n    Router: router\n}","import {h, Render, Observable} from '../src'\r\n\r\nlet StateStore = {\r\n        data: {\r\n            fName: 'Falcon',\r\n            lName: 'Framework',\r\n            age:25,\r\n            fullName () {\r\n                    return this.fName + ' ' + this.lName\r\n                },\r\n            old () {\r\n                let oldornot='Young'\r\n                if(this.age > 50){\r\n                    oldornot = 'Old is Gold'\r\n                }\r\n                return oldornot\r\n            }\r\n        }\r\n}\r\n\r\nlet App = new Observable(StateStore)\r\n\r\nlet Display = () => {\r\n    return(\r\n      <div onupdate={console.log('Display Component has been updated')}>\r\n        <h1>{App.state.fullName}</h1>\r\n        <div>{App.state.age}</div>\r\n        <div>{App.state.old}</div>\r\n      </div>     \r\n    )\r\n}\r\n    \r\nlet Controller = () =>{      \r\n      return(\r\n        <div >\r\n          <input value = {App.state.fName} oninput={(e)=>{App.state.fName = e.target.value }}></input>\r\n          <input value = {App.state.lName} oninput={(e)=>{App.state.lName = e.target.value }}></input>\r\n          <input type='range' value={App.state.age}  oninput={(e)=>{App.state.age = e.target.value }} ></input>\r\n        </div>\r\n      )\r\n}\r\n\r\nlet View = ()  => {\r\n      return(\r\n        <div>\r\n         <Display/>\r\n         <Controller/>\r\n        </div>\r\n      )\r\n} \r\n    \r\nconst render = Render(View, document.getElementById('root'))\r\n\r\nrender(App)\r\nApp.observe('fName', () =>{render(App)} )\r\nApp.observe('lName', () =>{render(App)} )\r\nApp.observe('age', () =>{render(App)} )"]}