hyperapp
Advanced tools
Comparing version 2.0.0-beta.20 to 2.0.0-beta.21
@@ -1,2 +0,2 @@ | ||
var hyperapp=function(n){"use strict";var e={},r=[],t=r.map,o=Array.isArray,l=requestAnimationFrame||setTimeout,u=function(n){var e="";if("string"==typeof n)return n;if(o(n)&&n.length>0)for(var r,t=0;t<n.length;t++)""!==(r=u(n[t]))&&(e+=(e&&" ")+r);else for(var t in n)n[t]&&(e+=(e&&" ")+t);return e},i=function(n,e){var r={};for(var t in n)r[t]=n[t];for(var t in e)r[t]=e[t];return r},f=function(n){return n.reduce(function(n,e){return n.concat(!(!e||!0===e)&&("function"==typeof e[0]?[e]:f(e)))},r)},a=function(n,e){return o(n)&&o(e)&&n[0]===e[0]&&"function"==typeof n[0]},c=function(n,e){for(var r in i(n,e)){if(n[r]!==e[r]&&!a(n[r],e[r]))return!0;e[r]=n[r]}},s=function(n,e,r,t,o,l){if("key"===e);else if("style"===e)for(var f in i(r,t))r=null==t||null==t[f]?"":t[f],"-"===f[0]?n[e].setProperty(f,r):n[e][f]=r;else"o"===e[0]&&"n"===e[1]?((n.actions||(n.actions={}))[e=e.slice(2).toLowerCase()]=t)?r||n.addEventListener(e,o):n.removeEventListener(e,o):!l&&"list"!==e&&e in n?n[e]=null==t?"":t:null==t||!1===t||"class"===e&&!(t=u(t))?n.removeAttribute(e):n.setAttribute(e,t)},d=function(n,e,r){var t=3===n.type?document.createTextNode(n.name):(r=r||"svg"===n.name)?document.createElementNS("http://www.w3.org/2000/svg",n.name):document.createElement(n.name),o=n.props;for(var l in o)s(t,l,null,o[l],e,r);for(var u=0,i=n.children.length;u<i;u++)t.appendChild(d(n.children[u]=y(n.children[u]),e,r));return n.node=t},p=function(n){return null==n?null:n.key},v=function(n,e,r,t,o,l){if(r===t);else if(null!=r&&3===r.type&&3===t.type)r.name!==t.name&&(e.nodeValue=t.name);else if(null==r||r.name!==t.name)e=n.insertBefore(d(t=y(t),o,l),e),null!=r&&n.removeChild(r.node);else{var u,f,a,c,h=r.props,m=t.props,g=r.children,w=t.children,z=0,C=0,k=g.length-1,A=w.length-1;for(var L in l=l||"svg"===t.name,i(h,m))("value"===L||"selected"===L||"checked"===L?e[L]:h[L])!==m[L]&&s(e,L,h[L],m[L],o,l);for(;C<=A&&z<=k&&null!=(a=p(g[z]))&&a===p(w[C]);)v(e,g[z].node,g[z],w[C]=y(w[C++],g[z++]),o,l);for(;C<=A&&z<=k&&null!=(a=p(g[k]))&&a===p(w[A]);)v(e,g[k].node,g[k],w[A]=y(w[A--],g[k--]),o,l);if(z>k)for(;C<=A;)e.insertBefore(d(w[C]=y(w[C++]),o,l),(f=g[z])&&f.node);else if(C>A)for(;z<=k;)e.removeChild(g[z++].node);else{L=z;for(var N={},b={};L<=k;L++)null!=(a=g[L].key)&&(N[a]=g[L]);for(;C<=A;)a=p(f=g[z]),c=p(w[C]=y(w[C],f)),b[a]||null!=c&&c===p(g[z+1])?(null==a&&e.removeChild(f.node),z++):null==c||1===r.type?(null==a&&(v(e,f&&f.node,f,w[C],o,l),C++),z++):(a===c?(v(e,f.node,f,w[C],o,l),b[c]=!0,z++):null!=(u=N[c])?(v(e,e.insertBefore(u.node,f&&f.node),u,w[C],o,l),b[c]=!0):v(e,f&&f.node,null,w[C],o,l),C++);for(;z<=k;)null==p(f=g[z++])&&e.removeChild(f.node);for(var L in N)null==b[L]&&e.removeChild(N[L].node)}}return t.node=e},y=function(n,e){return 2===n.type?((!e||function(n,e){for(var r in n)if(n[r]!==e[r])return!0;for(var r in e)if(n[r]!==e[r])return!0}(e.lazy,n.lazy))&&((e=n.lazy.view(n.lazy)).lazy=n.lazy),e):n},h=function(n,e,r,t,o,l){return{name:n,props:e,children:r,node:t,type:l,key:o}},m=function(n,t){return h(n,e,r,t,null,3)},g=function(n){return 3===n.nodeType?m(n.nodeValue,n):h(n.nodeName.toLowerCase(),e,t.call(n.childNodes,g),n,null,1)};return n.Lazy=function(n){return{lazy:n,type:2}},n.h=function(n,r){for(var t,l=[],u=[],i=arguments.length;i-- >2;)l.push(arguments[i]);for(;l.length>0;)if(o(t=l.pop()))for(i=t.length;i-- >0;)l.push(t[i]);else!1===t||!0===t||null==t||u.push("object"==typeof t?t:m(t));return r=r||e,"function"==typeof n?n(r,u):h(n,r,u,null,r.key)},n.app=function(n,e){var r={},t=!1,u=n.view,i=n.node,a=i&&g(i),s=n.subscriptions,d=[],p=function(n){h(this.actions[n.type],n)},y=function(n){return r!==n&&(s&&(d=function(n,e,r){for(var t,o,l=0,u=[];l<n.length||l<e.length;l++)t=n[l],o=e[l],u.push(o?!t||o[0]!==t[0]||c(o[1],t[1])?[o[0],o[1],o[0](r,o[1]),t&&t[2]()]:t:t&&t[2]());return u}(d,f([s(n)]),h)),t||l(w,t=!0)),r=n},h=(e||function(n){return n})(function(n,e,t){return"function"==typeof n?h(n(r,e),t||e):o(n)?"function"==typeof n[0]?h(n[0],"function"==typeof(n=n[1])?n(e):n,e):(f(n.slice(1)).map(function(n){n&&n[0](h,n[1],e)},y(n[0])),r):y(n)}),w=function(){t=!1,u&&(i=v(i.parentNode,i,a,"string"==typeof(a=u(r))?m(a):a,p))};h(n.init)},n}({}); | ||
var hyperapp=function(e){"use strict";var n={},r=[],t=r.map,o=Array.isArray,l=requestAnimationFrame||setTimeout,i="function"==typeof Promise?Promise.resolve().then.bind(Promise.resolve()):l,u=function(e){var n="";if("string"==typeof e)return e;if(o(e)&&e.length>0)for(var r,t=0;t<e.length;t++)""!==(r=u(e[t]))&&(n+=(n&&" ")+r);else for(var t in e)e[t]&&(n+=(n&&" ")+t);return n},f=function(e,n){var r={};for(var t in e)r[t]=e[t];for(var t in n)r[t]=n[t];return r},a=function(e){return e.reduce(function(e,n){return e.concat(n&&!0!==n?"function"==typeof n[0]?[n]:a(n):0)},r)},c=function(e,n){return o(e)&&o(n)&&e[0]===n[0]&&"function"==typeof e[0]},s=function(e,n){if(e!==n)for(var r in f(e,n)){if(e[r]!==n[r]&&!c(e[r],n[r]))return!0;n[r]=e[r]}},d=function(e,n,r,t,o,l){if("key"===n);else if("style"===n)for(var i in f(r,t))r=null==t||null==t[i]?"":t[i],"-"===i[0]?e[n].setProperty(i,r):e[n][i]=r;else"o"===n[0]&&"n"===n[1]?((e.actions||(e.actions={}))[n=n.slice(2).toLowerCase()]=t)?r||e.addEventListener(n,o):e.removeEventListener(n,o):!l&&"list"!==n&&n in e?e[n]=null==t?"":t:null==t||!1===t||"class"===n&&!(t=u(t))?e.removeAttribute(n):e.setAttribute(n,t)},p=function(e,n,r){var t=3===e.type?document.createTextNode(e.name):(r=r||"svg"===e.name)?document.createElementNS("http://www.w3.org/2000/svg",e.name):document.createElement(e.name),o=e.props;for(var l in o)d(t,l,null,o[l],n,r);for(var i=0,u=e.children.length;i<u;i++)t.appendChild(p(e.children[i]=h(e.children[i]),n,r));return e.node=t},v=function(e){return null==e?null:e.key},y=function(e,n,r,t,o,l){if(r===t);else if(null!=r&&3===r.type&&3===t.type)r.name!==t.name&&(n.nodeValue=t.name);else if(null==r||r.name!==t.name)n=e.insertBefore(p(t=h(t),o,l),n),null!=r&&e.removeChild(r.node);else{var i,u,a,c,s=r.props,m=t.props,g=r.children,w=t.children,z=0,C=0,k=g.length-1,b=w.length-1;for(var A in l=l||"svg"===t.name,f(s,m))("value"===A||"selected"===A||"checked"===A?n[A]:s[A])!==m[A]&&d(n,A,s[A],m[A],o,l);for(;C<=b&&z<=k&&null!=(a=v(g[z]))&&a===v(w[C]);)y(n,g[z].node,g[z],w[C]=h(w[C++],g[z++]),o,l);for(;C<=b&&z<=k&&null!=(a=v(g[k]))&&a===v(w[b]);)y(n,g[k].node,g[k],w[b]=h(w[b--],g[k--]),o,l);if(z>k)for(;C<=b;)n.insertBefore(p(w[C]=h(w[C++]),o,l),(u=g[z])&&u.node);else if(C>b)for(;z<=k;)n.removeChild(g[z++].node);else{A=z;for(var L={},N={};A<=k;A++)null!=(a=g[A].key)&&(L[a]=g[A]);for(;C<=b;)a=v(u=g[z]),c=v(w[C]=h(w[C],u)),N[a]||null!=c&&c===v(g[z+1])?(null==a&&n.removeChild(u.node),z++):null==c||1===r.type?(null==a&&(y(n,u&&u.node,u,w[C],o,l),C++),z++):(a===c?(y(n,u.node,u,w[C],o,l),N[c]=!0,z++):null!=(i=L[c])?(y(n,n.insertBefore(i.node,u&&u.node),i,w[C],o,l),N[c]=!0):y(n,u&&u.node,null,w[C],o,l),C++);for(;z<=k;)null==v(u=g[z++])&&n.removeChild(u.node);for(var A in L)null==N[A]&&n.removeChild(L[A].node)}}return t.node=n},h=function(e,n){return 2===e.type?((!n||function(e,n){for(var r in e)if(e[r]!==n[r])return!0;for(var r in n)if(e[r]!==n[r])return!0}(n.lazy,e.lazy))&&((n=e.lazy.view(e.lazy)).lazy=e.lazy),n):e},m=function(e,n,r,t,o,l){return{name:e,props:n,children:r,node:t,type:l,key:o}},g=function(e,t){return m(e,n,r,t,null,3)},w=function(e){return 3===e.nodeType?g(e.nodeValue,e):m(e.nodeName.toLowerCase(),n,t.call(e.childNodes,w),e,null,1)};return e.Lazy=function(e){return{lazy:e,type:2}},e.h=function(e,r){for(var t,l=[],i=[],u=arguments.length;u-- >2;)l.push(arguments[u]);for(;l.length>0;)if(o(t=l.pop()))for(u=t.length;u-- >0;)l.push(t[u]);else!1===t||!0===t||null==t||i.push("object"==typeof t?t:g(t));return r=r||n,"function"==typeof e?e(r,i):m(e,r,i,null,r.key)},e.app=function(e,n){var r={},t=!1,u=e.view,f=e.node,c=f&&w(f),d=e.subscriptions,p=[],v=function(e){m(this.actions[e.type],e)},h=function(e){return r!==e&&(d&&i(z),u&&!t&&l(C,t=!0)),r=e},m=(n||function(e){return e})(function(e,n,t){return"function"==typeof e?m(e(r,n),t||n):o(e)?"function"==typeof e[0]?m(e[0],"function"==typeof(e=e[1])?e(n):e,n):(a(e.slice(1)).map(function(e){e&&e[0](m,e[1],n)},h(e[0])),r):h(e)}),z=function(){p=function(e,n,r){for(var t,o,l=0,i=[];l<e.length||l<n.length;l++)t=e[l],o=n[l],i.push(o?!t||o[0]!==t[0]||s(o[1],t[1])?[o[0],o[1],o[0](r,o[1]),t&&t[2]()]:t:t&&t[2]());return i}(p,a([d(r)]),m)},C=function(){t=!1,f=y(f.parentNode,f,c,c="string"==typeof(c=u(r))?g(c):c,v)};m(e.init)},e}({}); | ||
//# sourceMappingURL=hyperapp.js.map |
{ | ||
"name": "hyperapp", | ||
"description": "JavaScript micro-framework for building web interfaces.", | ||
"version": "2.0.0-beta.20", | ||
"version": "2.0.0-beta.21", | ||
"main": "src/index.js", | ||
@@ -6,0 +6,0 @@ "module": "src/index.js", |
@@ -9,4 +9,4 @@ # Hyperapp | ||
- **Do more with less**—We have aggressively minimized the concepts you need to learn to be productive in no time. Views, actions, effects and subscriptions are all pretty easy to get to grips with and work together seamlessly. | ||
- **Write what, not how**—Immutable state, effects as data, and declarative subscriptions—we got it all. If you want to develop featureful, browser-based applications using a purely functional paradigm, Hyperapp is your choice. | ||
- **Do more with less**—We have aggressively minimized the concepts you need to learn to be productive right now. Views, actions, effects and subscriptions are all pretty easy to get to grips with and work together seamlessly. | ||
- **Write what, not how**—Create dynamic UIs, run side effects, and subscribe to event streams in the same declarative style. Hyperapp is your tool of choice to develop purely functional, browser-based applications. | ||
- **Batteries-included**—Hyperapp includes state management and a modern Virtual DOM engine that supports keyed updates, components & view memoization out of the box—you'll never go back to DOM traversal and manipulation. | ||
@@ -79,3 +79,3 @@ | ||
First, create a new `index.html` file and paste the following code in it. | ||
First, create a new `index.html` file and paste the following code in it. | ||
@@ -82,0 +82,0 @@ ```html |
@@ -6,6 +6,9 @@ var RECYCLED_NODE = 1 | ||
var EMPTY_ARR = [] | ||
var map = EMPTY_ARR.map | ||
var isArray = Array.isArray | ||
var defer = requestAnimationFrame || setTimeout | ||
var nextFrame = requestAnimationFrame || setTimeout | ||
var nextTask = | ||
typeof Promise == "function" | ||
? Promise.resolve().then.bind(Promise.resolve()) | ||
: nextFrame | ||
@@ -47,3 +50,3 @@ var createClass = function(obj) { | ||
!item || item === true | ||
? false | ||
? 0 | ||
: typeof item[0] === "function" | ||
@@ -61,5 +64,7 @@ ? [item] | ||
var shouldRestart = function(a, b) { | ||
for (var k in merge(a, b)) { | ||
if (a[k] !== b[k] && !isSameAction(a[k], b[k])) return true | ||
b[k] = a[k] | ||
if (a !== b) { | ||
for (var k in merge(a, b)) { | ||
if (a[k] !== b[k] && !isSameAction(a[k], b[k])) return true | ||
b[k] = a[k] | ||
} | ||
} | ||
@@ -171,3 +176,5 @@ } | ||
) | ||
if (oldVNode != null) parent.removeChild(oldVNode.node) | ||
if (oldVNode != null) { | ||
parent.removeChild(oldVNode.node) | ||
} | ||
} else { | ||
@@ -438,6 +445,4 @@ var tmpVKid | ||
if (state !== newState) { | ||
if (subscriptions) { | ||
subs = patchSubs(subs, batch([subscriptions(newState)]), dispatch) | ||
} | ||
if (!lock) defer(render, (lock = true)) | ||
if (subscriptions) nextTask(subscribe) | ||
if (view && !lock) nextFrame(render, (lock = true)) | ||
} | ||
@@ -467,13 +472,18 @@ return (state = newState) | ||
var subscribe = function() { | ||
subs = patchSubs(subs, batch([subscriptions(state)]), dispatch) | ||
} | ||
var render = function() { | ||
lock = false | ||
if (view) { | ||
node = patch( | ||
node.parentNode, | ||
node, | ||
vdom, | ||
typeof (vdom = view(state)) === "string" ? createTextVNode(vdom) : vdom, | ||
listener | ||
) | ||
} | ||
node = patch( | ||
node.parentNode, | ||
node, | ||
vdom, | ||
(vdom = | ||
typeof (vdom = view(state)) === "string" | ||
? createTextVNode(vdom) | ||
: vdom), | ||
listener | ||
) | ||
} | ||
@@ -480,0 +490,0 @@ |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
91439
451