maquette 3.4.1 → 3.5.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- !function(e,r){"object"==typeof exports&&"undefined"!=typeof module?r(exports):"function"==typeof define&&define.amd?define(["exports"],r):r((e=e||self).maquette={})}(this,function(e){"use strict";function f(r,t){var n={};return Object.keys(r).forEach(function(e){n[e]=r[e]}),t&&Object.keys(t).forEach(function(e){n[e]=t[e]}),n}function h(e,r){return e.vnodeSelector===r.vnodeSelector&&(e.properties&&r.properties?e.properties.key===r.properties.key&&e.properties.bind===r.properties.bind:!e.properties&&!r.properties)}function A(e){if("string"!=typeof e)throw Error("Style values must be strings")}function m(e,r,t,n){var o=e[r];if(""!==o.vnodeSelector){var i=o.properties;if(!(i&&(void 0===i.key?i.bind:i.key)))for(var d=0;d<e.length;d++)if(d!==r&&h(e[d],o))throw Error(t.vnodeSelector+" had a "+o.vnodeSelector+" child "+("added"===n?n:"removed")+", but there is now more than one. You must add unique key properties to make them distinguishable.")}}function r(){d=!1,i.forEach(a),i.length=0}function n(e){i.push(e),d||(d=!0,"undefined"!=typeof window&&"requestIdleCallback"in window?window.requestIdleCallback(r,{timeout:16}):setTimeout(r,16))}function g(e){var r=e.domNode;if(e.properties){var t=e.properties.exitAnimation;if(t)return r.style.pointerEvents="none",t(r,function(){r.parentNode&&(r.parentNode.removeChild(r),n(e))},e.properties),0}r.parentNode&&(r.parentNode.removeChild(r),n(e))}function u(e,r,t){!function(e,r,t){if(r)for(var n=0,o=r;n<o.length;n++){var i=o[n];N(i,e,void 0,t)}}(e,r.children,t),r.text&&(e.textContent=r.text),function(f,u,v){if(u)for(var h=v.eventHandlerInterceptor,m=Object.keys(u),e=m.length,g=0;g<e;g++)!function(){var e,r,t=m[g],n=u[t];if("className"===t)throw Error('Property "className" is not supported, use "class".');if("class"===t)E(f,n,!0);else if("classes"===t)for(var o=Object.keys(n),i=o.length,d=0;d<i;d++){var a=o[d];n[a]&&f.classList.add(a)}else if("styles"===t)for(var p=Object.keys(n),s=p.length,d=0;d<s;d++){var c=p[d],l=n[c];l&&(A(l),v.styleApplyer(f,c,l))}else"key"!==t&&null!=n&&("function"==(e=typeof n)?t.lastIndexOf("on",0)||(h&&(n=h(t,n,f,u)),"oninput"===t&&(r=n,n=function(e){r.call(this,e),e.target["oninput-value"]=e.target.value}),f[t]=n):v.namespace===S?"href"===t?f.setAttributeNS(k,t,n):f.setAttribute(t,n):"string"==e&&"value"!==t&&"innerHTML"!==t?f.setAttribute(t,n):f[t]=n)}()}(e,r.properties,t),r.properties&&r.properties.afterCreate&&r.properties.afterCreate.call(r.properties.bind||r.properties,e,t,r.vnodeSelector,r.properties,r.children)}function o(r,t){return{getLastRender:function(){return r},update:function(e){if(r.vnodeSelector!==e.vnodeSelector)throw Error("The selector for the root VNode may not be changed. (consider using dom.merge and add one extra level to the virtual DOM)");b(r,r=e,t)},domNode:r.domNode}}function p(e){return f(s,e)}var t="http://www.w3.org/",S=t+"2000/svg",k=t+"1999/xlink",y=[],i=[],d=!1,a=function(e){(e.children||[]).forEach(a),e.properties&&e.properties.afterRemoved&&e.properties.afterRemoved.call(e.properties.bind||e.properties,e.domNode)},N=function(e,r,t,n){var o,i=0,d=e.vnodeSelector,a=r.ownerDocument;if(""===d)o=e.domNode=a.createTextNode(e.text),void 0!==t?r.insertBefore(o,t):r.appendChild(o);else{for(var p=0;p<=d.length;++p){var s,c,l=d[0|p];p!==d.length&&"."!=l&&"#"!=l||(s=d[0|i-1],c=d.slice(i,p),"."==s?o.classList.add(c):"#"==s?o.id=c:("svg"===c&&(n=f(n,{namespace:S})),void 0!==n.namespace?o=e.domNode=a.createElementNS(n.namespace,c):(o=e.domNode=e.domNode||a.createElement(c),"input"===c&&e.properties&&void 0!==e.properties.type&&o.setAttribute("type",e.properties.type)),void 0!==t?r.insertBefore(o,t):o.parentNode!==r&&r.appendChild(o)),i=p+1)}u(o,e,n)}},E=function(r,e,t){e&&e.split(" ").forEach(function(e){e&&r.classList.toggle(e,t)})},b=function(e,r,t){var n=e.domNode;if(e===r)return!1;var o=!1;if(""===r.vnodeSelector){if(r.text!==e.text){var i=n.ownerDocument.createTextNode(r.text);return n.parentNode.replaceChild(i,n),r.domNode=i,!0}r.domNode=n}else r.vnodeSelector.lastIndexOf("svg",0)||(t=f(t,{namespace:S})),e.text!==r.text&&(o=!0,void 0===r.text?n.removeChild(n.firstChild):n.textContent=r.text),r.domNode=n,o=function(e,r,t,n,o){if(t===n)return!1;for(var i,d,a=(t=t||y).length,p=(n=n||y).length,s=0,c=0,l=!1;c<p;){var f=s<a?t[s]:void 0,u=n[c];if(void 0!==f&&h(f,u))l=b(f,u,o)||l,s++;else{var v=function(e,r,t){if(""!==r.vnodeSelector)for(var n=t;n<e.length;n++)if(h(e[n],r))return n;return-1}(t,u,s+1);if(v<0)N(u,r,s<a?t[s].domNode:void 0,o),d=void 0,!u.properties||(d=u.properties.enterAnimation)&&d(u.domNode,u.properties),m(n,c,e,"added");else{for(i=s;i<v;i++)g(t[i]),m(t,i,e,"removed");l=b(t[v],u,o)||l,s=v+1}}c++}if(s<a)for(i=s;i<a;i++)g(t[i]),m(t,i,e,"removed");return l}(r,n,e.children,r.children,t)||o,o=function(e,r,t,n){if(t){for(var o=!1,i=Object.keys(t),d=i.length,a=0;a<d;a++){var p,s,c=i[a],l=t[c],f=r[c];if("class"===c)f!==l&&(E(e,f,!1),E(e,l,!0));else if("classes"===c)for(var u=e.classList,v=Object.keys(l),h=v.length,m=0;m<h;m++){var g=v[m],y=!!l[g];y!=!!f[g]&&(o=!0,y?u.add(g):u.remove(g))}else if("styles"===c)for(var N=Object.keys(l),b=N.length,m=0;m<b;m++){var w=N[m],x=l[w];x!==f[w]&&(o=!0,x?(A(x),n.styleApplyer(e,w,x)):n.styleApplyer(e,w,""))}else l||"string"!=typeof f||(l=""),"value"===c?((p=e[c])!==l&&(e["oninput-value"]?p===e["oninput-value"]:l!==f)&&(e[c]=l,e["oninput-value"]=void 0),l!==f&&(o=!0)):l!==f&&("function"==(s=typeof l)&&n.eventHandlerInterceptor||(n.namespace===S?"href"===c?e.setAttributeNS(k,c,l):e.setAttribute(c,l):"string"==s&&"innerHTML"!==c?"role"===c&&""===l?e.removeAttribute(c):e.setAttribute(c,l):e[c]!==l&&(e[c]=l),o=!0))}return o}}(n,e.properties,r.properties,t)||o,r.properties&&r.properties.afterUpdate&&r.properties.afterUpdate.call(r.properties.bind||r.properties,n,t,r.vnodeSelector,r.properties,r.children);return o&&r.properties&&r.properties.updateAnimation&&r.properties.updateAnimation(n,r.properties,e.properties),!1},s={namespace:void 0,performanceLogger:function(){},eventHandlerInterceptor:void 0,styleApplyer:function(e,r,t){"-"==r[0]?e.style.setProperty(r,t):e.style[r]=t}},v={create:function(e,r){return r=p(r),N(e,document.createElement("div"),void 0,r),o(e,r)},append:function(e,r,t){return t=p(t),N(r,e,void 0,t),o(r,t)},insertBefore:function(e,r,t){return t=p(t),N(r,e.parentNode,e,t),o(r,t)},merge:function(e,r,t){return t=p(t),u(r.domNode=e,r,t),o(r,t)},replace:function(e,r,t){return t=p(t),N(r,e.parentNode,e,t),e.parentNode.removeChild(e),o(r,t)}},c=function(e,r,t){for(var n=0,o=r.length;n<o;n++){var i=r[n];Array.isArray(i)?c(e,i,t):null!=i&&!1!==i&&("string"==typeof i&&(i={vnodeSelector:"",properties:void 0,children:void 0,text:i.toString(),domNode:null}),t.push(i))}},w=Array.prototype.find?function(e,r){return e.find(r)}:function(e,r){return e.filter(r)[0]};e.createCache=function(){var n,o;return{invalidate:function(){n=o=void 0},result:function(e,r){if(n)for(var t=0;t<e.length;t++)n[t]!==e[t]&&(o=void 0);return o||(o=r(),n=e),o}}},e.createMapping=function(c,l,f){var u=[],v=[];return{results:v,map:function(e){for(var r=e.map(c),t=v.slice(),n=0,o=0;o<e.length;o++){var i=e[o],d=r[o];if(d===u[n])v[o]=t[n],f(i,t[n],o),n++;else{for(var a=!1,p=1;p<u.length+1;p++){var s=(n+p)%u.length;if(u[s]===d){v[o]=t[s],f(e[o],t[s],o),n=1+s,a=!0;break}}a||(v[o]=l(i,o))}}v.length=e.length,u=r}}},e.createProjector=function(e){function t(e,r,t){var a,p,s;function o(e){s("domEvent",e);var r=a,t=function(e,r){for(var t=[];e&&e!==r;)t.push(e),e=e.parentNode;return t}(e.currentTarget,r.domNode);t.reverse();var n,o,i,d=(n=r.getLastRender(),o=n,t.forEach(function(r){o=o&&o.children?w(o.children,function(e){return e.domNode===r}):void 0}),o);return p.scheduleRender(),d&&(i=d.properties["on"+e.type].apply(d.properties.bind||this,arguments)),s("domEventProcessed",e),i}i.eventHandlerInterceptor=(p=f,s=d,function(e,r,t,n){return o}),a=e(r,t(),i),c.push(a),l.push(t)}function r(){if(n=void 0,o){o=!1,d("renderStart",void 0);for(var e=0;e<c.length;e++){var r=l[e]();d("rendered",void 0),c[e].update(r),d("patched",void 0)}d("renderDone",void 0),o=!0}}var n,i=p(e),d=i.performanceLogger,o=!0,a=!1,c=[],l=[],f={renderNow:r,scheduleRender:function(){n||a||(n=requestAnimationFrame(r))},stop:function(){n&&(cancelAnimationFrame(n),n=void 0),a=!0},resume:function(){o=!(a=!1),f.scheduleRender()},append:function(e,r){t(v.append,e,r)},insertBefore:function(e,r){t(v.insertBefore,e,r)},merge:function(e,r){t(v.merge,e,r)},replace:function(e,r){t(v.replace,e,r)},detach:function(e){for(var r=0;r<l.length;r++)if(l[r]===e)return l.splice(r,1),c.splice(r,1)[0];throw Error("renderFunction was not found")}};return f},e.dom=v,e.h=function(e,r,t){if(Array.isArray(r))t=r,r=void 0;else if(r&&("string"==typeof r||r.hasOwnProperty("vnodeSelector"))||t&&("string"==typeof t||t.hasOwnProperty("vnodeSelector")))throw Error("h called with invalid arguments");var n,o;return t&&1===t.length&&"string"==typeof t[0]?n=t[0]:t&&(c(e,t,o=[]),0===o.length&&(o=void 0)),{vnodeSelector:e,properties:r,children:o,text:""===n?void 0:n,domNode:null}},Object.defineProperty(e,"__esModule",{value:!0})});
1
+ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).maquette={})}(this,function(e){"use strict";function l(t,r){var o={};return Object.keys(t).forEach(function(e){o[e]=t[e]}),r&&Object.keys(r).forEach(function(e){o[e]=r[e]}),o}function h(e,t){return e.vnodeSelector===t.vnodeSelector&&(e.properties&&t.properties?e.properties.key===t.properties.key&&e.properties.bind===t.properties.bind:!e.properties&&!t.properties)}function A(e){if("string"!=typeof e)throw Error("Style values must be strings")}function m(e,t,r,o){var n=e[t];if(""!==n.vnodeSelector){var i=n.properties;if(!(i&&(void 0===i.key?i.bind:i.key)))for(var d=0;d<e.length;d++)if(d!==t&&h(e[d],n))throw{error:Error("".concat(r.vnodeSelector," had a ").concat(n.vnodeSelector," child ").concat("added"===o?o:"removed",", but there is now more than one. You must add unique key properties to make them distinguishable.")),parentNode:r,childNode:n}}}function t(){p=!1,a.forEach(s),a.length=0}function o(e){a.push(e),p||(p=!0,"undefined"!=typeof window&&"requestIdleCallback"in window?window.requestIdleCallback(t,{timeout:16}):setTimeout(t,16))}function g(e){var t=e.domNode;if(e.properties){var r=e.properties.exitAnimation;if(r)return t.style.pointerEvents="none",r(t,function(){t.parentNode&&(t.parentNode.removeChild(t),o(e))},e.properties),0}t.parentNode&&(t.parentNode.removeChild(t),o(e))}function n(f,u,v){if(u)for(var h=v.eventHandlerInterceptor,m=Object.keys(u),e=m.length,g=0;g<e;g++)!function(e){var t,r=m[g],o=u[r];if("className"===r)throw Error('Property "className" is not supported, use "class".');if("class"===r)k(f,o,!0);else if("classes"===r)for(var n=Object.keys(o),i=n.length,d=0;d<i;d++){var a=n[d];o[a]&&f.classList.add(a)}else if("styles"===r)for(var p=Object.keys(o),s=p.length,d=0;d<s;d++){var c=p[d],l=o[c];l&&(A(l),v.styleApplyer(f,c,l))}else"key"!==r&&null!=o&&("function"==(e=typeof o)?(r.lastIndexOf("on",0)||(h&&(o=h(r,o,f,u)),"oninput"===r&&(t=o,o=function(e){t.call(this,e),e.target["oninput-value"]=e.target.value})),f[r]=o):v.namespace===S?"href"===r?f.setAttributeNS(w,r,o):f.setAttribute(r,o):"string"==e&&"value"!==r&&"innerHTML"!==r?f.setAttribute(r,o):f[r]=o)}()}function f(e,t,r){!function(e,t,r){if(t)for(var o=0,n=t;o<n.length;o++){var i=n[o];N(i,e,void 0,r)}}(e,t.children,r),t.text&&(e.textContent=t.text),n(e,t.properties,r),t.properties&&t.properties.afterCreate&&t.properties.afterCreate.call(t.properties.bind||t.properties,e,r,t.vnodeSelector,t.properties,t.children)}function i(t,r){return{getLastRender:function(){return t},update:function(e){if(t.vnodeSelector!==e.vnodeSelector)throw Error("The selector for the root VNode may not be changed. (consider using dom.merge and add one extra level to the virtual DOM)");b(t,t=e,r)},domNode:t.domNode}}function d(e){return l(c,e)}var r="http://www.w3.org/",S="".concat(r,"2000/svg"),w="".concat(r,"1999/xlink"),y=[],a=[],p=!1,s=function(e){(e.children||[]).forEach(s),e.properties&&e.properties.afterRemoved&&e.properties.afterRemoved.call(e.properties.bind||e.properties,e.domNode)},N=function(e,t,r,o){var n,i=0,d=e.vnodeSelector,a=t.ownerDocument;if(""===d)n=e.domNode=a.createTextNode(e.text),void 0!==r?t.insertBefore(n,r):t.appendChild(n);else{for(var p=0;p<=d.length;++p){var s,c=d[0|p]||"";p!==d.length&&"."!=c&&"#"!=c||(s=d[0|i-1]||"",c=d.slice(i,p),"."==s?n.classList.add(c):"#"==s?n.id=c:(void 0!==(o="svg"===c?l(o,{namespace:S}):o).namespace?n=e.domNode=a.createElementNS(o.namespace,c):(n=e.domNode=e.domNode||a.createElement(c),"input"===c&&e.properties&&void 0!==e.properties.type&&n.setAttribute("type",e.properties.type)),void 0!==r?t.insertBefore(n,r):n.parentNode!==t&&t.appendChild(n)),i=p+1)}f(n,e,o)}},k=function(t,e,r){e&&e.split(" ").forEach(function(e){e&&t.classList.toggle(e,r)})},b=function(e,t,r){var o=e.domNode;if(e===t)return!1;var n=!1;if(""===t.vnodeSelector){if(t.text!==e.text){var i=o.ownerDocument.createTextNode(t.text);return o.parentNode.replaceChild(i,o),t.domNode=i,!0}t.domNode=o}else t.vnodeSelector.lastIndexOf("svg",0)||(r=l(r,{namespace:S})),e.text!==t.text&&(n=!0,void 0===t.text?o.removeChild(o.firstChild):o.textContent=t.text),t.domNode=o,n=function(e,t,r,o,n){if(r===o)return!1;for(var i,d,a=(r=r||y).length,p=(o=o||y).length,s=0,c=0,l=!1;c<p;){var f=s<a?r[s]:void 0,u=o[c];if(void 0!==f&&h(f,u))l=b(f,u,n)||l,s++;else{var v=function(e,t){if(""!==t.vnodeSelector)for(var r=s+1;r<e.length;r++)if(h(e[r],t))return r;return-1}(r,u);if(v<0)N(u,t,s<a?r[s].domNode:void 0,n),d=void 0,!(f=u).properties||(d=f.properties.enterAnimation)&&d(f.domNode,f.properties),m(o,c,e,"added");else{for(i=s;i<v;i++)g(r[i]),m(r,i,e,"removed");l=b(r[v],u,n)||l,s=v+1}}c++}if(s<a)for(i=s;i<a;i++)g(r[i]),m(r,i,e,"removed");return l}(t,o,e.children,t.children,r)||n,n=function(e,t,r,o){if(r){for(var n=!1,i=Object.keys(r),d=i.length,a=0;a<d;a++){var p,s=i[a],c=r[s],l=t[s];if("class"===s)l!==c&&(k(e,l,!1),k(e,c,!0));else if("classes"===s)for(var f=e.classList,u=Object.keys(c),v=u.length,h=0;h<v;h++){var m=u[h],g=!!c[m];g!=!!l[m]&&(n=!0,g?f.add(m):f.remove(m))}else if("styles"===s)for(var y=Object.keys(c),N=y.length,h=0;h<N;h++){var b=y[h],x=c[b];x!==l[b]&&(n=!0,x?(A(x),o.styleApplyer(e,b,x)):o.styleApplyer(e,b,""))}else c||"string"!=typeof l||(c=""),"value"===s?((p=e[s])!==c&&(e["oninput-value"]?p===e["oninput-value"]:c!==l)&&(e[s]=c,e["oninput-value"]=void 0),c!==l&&(n=!0)):c!==l&&("function"==(p=typeof c)&&o.eventHandlerInterceptor||(o.namespace===S?"href"===s?e.setAttributeNS(w,s,c):e.setAttribute(s,c):"string"==p&&"innerHTML"!==s?"role"===s&&""===c?e.removeAttribute(s):e.setAttribute(s,c):e[s]!==c&&(e[s]=c),n=!0))}return n}}(o,e.properties,t.properties,r)||n,t.properties&&t.properties.afterUpdate&&t.properties.afterUpdate.call(t.properties.bind||t.properties,o,r,t.vnodeSelector,t.properties,t.children);return n&&t.properties&&t.properties.updateAnimation&&t.properties.updateAnimation(o,t.properties,e.properties),!1},c={namespace:void 0,performanceLogger:function(){},eventHandlerInterceptor:void 0,styleApplyer:function(e,t,r){"-"==(t[0]||"")?e.style.setProperty(t,r):e.style[t]=r}},u={create:function(e,t){return t=d(t),N(e,document.createElement("div"),void 0,t),i(e,t)},append:function(e,t,r){return r=d(r),N(t,e,void 0,r),i(t,r)},insertBefore:function(e,t,r){return r=d(r),N(t,e.parentNode,e,r),i(t,r)},merge:function(e,t,r){return r=d(r),f(t.domNode=e,t,r),i(t,r)},replace:function(e,t,r){return r=d(r),N(t,e.parentNode,e,r),e.parentNode.removeChild(e),i(t,r)}},v=function(e,t,r){for(var o=0,n=t.length;o<n;o++){var i=t[o];Array.isArray(i)?v(e,i,r):null!=i&&!1!==i&&("string"==typeof i&&(i={vnodeSelector:"",properties:void 0,children:void 0,text:i.toString(),domNode:null}),r.push(i))}},x=Array.prototype.find?function(e,t){return e.find(t)}:function(e,t){return e.filter(t)[0]};e.createCache=function(){var o,n;return{invalidate:function(){o=n=void 0},result:function(e,t){if(o)for(var r=0;r<e.length;r++)o[r]!==e[r]&&(n=void 0);return n||(n=t(),o=e),n}}},e.createMapping=function(c,l,f){var u=[],v=[];return{results:v,map:function(e){for(var t=e.map(c),r=v.slice(),o=0,n=0;n<e.length;n++){var i=e[n],d=t[n];if(d===u[o])v[n]=r[o],f(i,r[o],n),o++;else{for(var a=!1,p=1;p<u.length+1;p++){var s=(o+p)%u.length;if(u[s]===d){v[n]=r[s],f(e[n],r[s],n),o=1+s,a=!0;break}}a||(v[n]=l(i,n))}}v.length=e.length,u=t}}},e.createProjector=function(e){function r(e,t,r){var i,d,a;function n(e){a("domEvent",e);var t=i;(n=function(e,t){for(var r=[];e&&e!==t;)r.push(e),e=e.parentNode;return r}(e.currentTarget,t.domNode)).reverse();var r,o,n=(t=t.getLastRender(),r=t,n.forEach(function(t){r=r&&r.children?x(r.children,function(e){return e.domNode===t}):void 0}),r);return d.scheduleRender(),n&&(o=n.properties["on".concat(e.type)].apply(n.properties.bind||this,arguments)),a("domEventProcessed",e),o}p.eventHandlerInterceptor=(d=f,a=s,function(e,t,r,o){return n}),i=e(t,r(),p),c.push(i),l.push(r)}function t(){if(o=void 0,n){n=!1,s("renderStart",void 0);for(var e=0;e<c.length;e++){var t=l[e]();s("rendered",void 0),c[e].update(t),s("patched",void 0)}s("renderDone",void 0),n=!0}}var o,p=d(e),s=p.performanceLogger,n=!0,i=!1,c=[],l=[],f={renderNow:t,scheduleRender:function(){o||i||(o=requestAnimationFrame(t))},stop:function(){o&&(cancelAnimationFrame(o),o=void 0),i=!0},resume:function(){n=!(i=!1),f.scheduleRender()},append:function(e,t){r(u.append,e,t)},insertBefore:function(e,t){r(u.insertBefore,e,t)},merge:function(e,t){r(u.merge,e,t)},replace:function(e,t){r(u.replace,e,t)},detach:function(e){for(var t=0;t<l.length;t++)if(l[t]===e)return l.splice(t,1),c.splice(t,1)[0];throw Error("renderFunction was not found")}};return f},e.dom=u,e.h=function(e,t,r){if(Array.isArray(t))r=t,t=void 0;else if(t&&("string"==typeof t||t.vnodeSelector)||r&&("string"==typeof r||r.vnodeSelector))throw Error("h called with invalid arguments");var o,n;return r&&1===r.length&&"string"==typeof r[0]?o=r[0]:r&&(v(e,r,n=[]),0===n.length&&(n=void 0)),{vnodeSelector:e,properties:t,children:n,text:""===o?void 0:o,domNode:null}},Object.defineProperty(e,"__esModule",{value:!0})});
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Exports here are NOT re-exported to maquette
3
3
  */
4
- import { Projection, ProjectionOptions, VNode } from './interfaces';
4
+ import { Projection, ProjectionOptions, VNode } from "./interfaces";
5
5
  export declare let extend: <T>(base: T, overrides: any) => T;
6
6
  export declare let initPropertiesAndChildren: (domNode: Node, vnode: VNode, projectionOptions: ProjectionOptions) => void;
7
7
  export declare let createDom: (vnode: VNode, parentNode: Node, insertBefore: Node | null | undefined, projectionOptions: ProjectionOptions) => void;
@@ -1,8 +1,6 @@
1
- /* tslint:disable no-http-string */
2
- var NAMESPACE_W3 = 'http://www.w3.org/';
3
- /* tslint:enable no-http-string */
4
- var NAMESPACE_SVG = NAMESPACE_W3 + "2000/svg";
5
- var NAMESPACE_XLINK = NAMESPACE_W3 + "1999/xlink";
1
+ var NAMESPACE_W3 = "http://www.w3.org/";
2
+ var NAMESPACE_SVG = "".concat(NAMESPACE_W3, "2000/svg");
3
+ var NAMESPACE_XLINK = "".concat(NAMESPACE_W3, "1999/xlink");
6
4
  var emptyArray = [];
7
5
  export var extend = function (base, overrides) {
8
6
  var result = {};
@@ -29,12 +27,12 @@ var same = function (vnode1, vnode2) {
29
27
  return !vnode1.properties && !vnode2.properties;
30
28
  };
31
29
  var checkStyleValue = function (styleValue) {
32
- if (typeof styleValue !== 'string') {
33
- throw new Error('Style values must be strings');
30
+ if (typeof styleValue !== "string") {
31
+ throw new Error("Style values must be strings");
34
32
  }
35
33
  };
36
34
  var findIndexOfChild = function (children, sameAs, start) {
37
- if (sameAs.vnodeSelector !== '') {
35
+ if (sameAs.vnodeSelector !== "") {
38
36
  // Never scan for text-nodes
39
37
  for (var i = start; i < children.length; i++) {
40
38
  if (same(children[i], sameAs)) {
@@ -46,17 +44,26 @@ var findIndexOfChild = function (children, sameAs, start) {
46
44
  };
47
45
  var checkDistinguishable = function (childNodes, indexToCheck, parentVNode, operation) {
48
46
  var childNode = childNodes[indexToCheck];
49
- if (childNode.vnodeSelector === '') {
47
+ if (childNode.vnodeSelector === "") {
50
48
  return; // Text nodes need not be distinguishable
51
49
  }
52
50
  var properties = childNode.properties;
53
- var key = properties ? (properties.key === undefined ? properties.bind : properties.key) : undefined;
54
- if (!key) { // A key is just assumed to be unique
51
+ var key = properties
52
+ ? properties.key === undefined
53
+ ? properties.bind
54
+ : properties.key
55
+ : undefined;
56
+ if (!key) {
57
+ // A key is just assumed to be unique
55
58
  for (var i = 0; i < childNodes.length; i++) {
56
59
  if (i !== indexToCheck) {
57
60
  var node = childNodes[i];
58
61
  if (same(node, childNode)) {
59
- throw new Error(parentVNode.vnodeSelector + " had a " + childNode.vnodeSelector + " child " + (operation === 'added' ? operation : 'removed') + ", but there is now more than one. You must add unique key properties to make them distinguishable.");
62
+ throw {
63
+ error: new Error("".concat(parentVNode.vnodeSelector, " had a ").concat(childNode.vnodeSelector, " child ").concat(operation === "added" ? operation : "removed", ", but there is now more than one. You must add unique key properties to make them distinguishable.")),
64
+ parentNode: parentVNode,
65
+ childNode: childNode,
66
+ };
60
67
  }
61
68
  }
62
69
  }
@@ -75,7 +82,9 @@ var requestedIdleCallback = false;
75
82
  var visitRemovedNode = function (node) {
76
83
  (node.children || []).forEach(visitRemovedNode);
77
84
  if (node.properties && node.properties.afterRemoved) {
78
- node.properties.afterRemoved.apply(node.properties.bind || node.properties, [node.domNode]);
85
+ node.properties.afterRemoved.apply(node.properties.bind || node.properties, [
86
+ node.domNode,
87
+ ]);
79
88
  }
80
89
  };
81
90
  var processPendingNodeRemovals = function () {
@@ -87,7 +96,7 @@ var scheduleNodeRemoval = function (vNode) {
87
96
  removedNodes.push(vNode);
88
97
  if (!requestedIdleCallback) {
89
98
  requestedIdleCallback = true;
90
- if (typeof window !== 'undefined' && 'requestIdleCallback' in window) {
99
+ if (typeof window !== "undefined" && "requestIdleCallback" in window) {
91
100
  window.requestIdleCallback(processPendingNodeRemovals, { timeout: 16 });
92
101
  }
93
102
  else {
@@ -100,7 +109,7 @@ var nodeToRemove = function (vNode) {
100
109
  if (vNode.properties) {
101
110
  var exitAnimation = vNode.properties.exitAnimation;
102
111
  if (exitAnimation) {
103
- domNode.style.pointerEvents = 'none';
112
+ domNode.style.pointerEvents = "none";
104
113
  var removeDomNode = function () {
105
114
  if (domNode.parentNode) {
106
115
  domNode.parentNode.removeChild(domNode);
@@ -126,13 +135,13 @@ var setProperties = function (domNode, properties, projectionOptions) {
126
135
  var _loop_1 = function (i) {
127
136
  var propName = propNames[i];
128
137
  var propValue = properties[propName];
129
- if (propName === 'className') {
138
+ if (propName === "className") {
130
139
  throw new Error('Property "className" is not supported, use "class".');
131
140
  }
132
- else if (propName === 'class') {
141
+ else if (propName === "class") {
133
142
  toggleClasses(domNode, propValue, true);
134
143
  }
135
- else if (propName === 'classes') {
144
+ else if (propName === "classes") {
136
145
  // object with string keys and boolean values
137
146
  var classNames = Object.keys(propValue);
138
147
  var classNameCount = classNames.length;
@@ -143,7 +152,7 @@ var setProperties = function (domNode, properties, projectionOptions) {
143
152
  }
144
153
  }
145
154
  }
146
- else if (propName === 'styles') {
155
+ else if (propName === "styles") {
147
156
  // object with string keys and string (!) values
148
157
  var styleNames = Object.keys(propValue);
149
158
  var styleCount = styleNames.length;
@@ -156,30 +165,29 @@ var setProperties = function (domNode, properties, projectionOptions) {
156
165
  }
157
166
  }
158
167
  }
159
- else if (propName !== 'key' && propValue !== null && propValue !== undefined) {
168
+ else if (propName !== "key" && propValue !== null && propValue !== undefined) {
160
169
  var type = typeof propValue;
161
- if (type === 'function') {
162
- if (propName.lastIndexOf('on', 0) === 0) { // lastIndexOf(,0)===0 -> startsWith
170
+ if (type === "function") {
171
+ if (propName.lastIndexOf("on", 0) === 0) {
172
+ // lastIndexOf(,0)===0 -> startsWith
163
173
  if (eventHandlerInterceptor) {
164
174
  propValue = eventHandlerInterceptor(propName, propValue, domNode, properties); // intercept eventhandlers
165
175
  }
166
- if (propName === 'oninput') {
167
- /* tslint:disable no-this-keyword no-invalid-this only-arrow-functions no-void-expression */
176
+ if (propName === "oninput") {
168
177
  (function () {
169
178
  // record the evt.target.value, because IE and Edge sometimes do a requestAnimationFrame between changing value and running oninput
170
179
  var oldPropValue = propValue;
171
180
  propValue = function (evt) {
172
181
  oldPropValue.apply(this, [evt]);
173
- evt.target['oninput-value'] = evt.target.value; // may be HTMLTextAreaElement as well
182
+ evt.target["oninput-value"] = evt.target.value; // may be HTMLTextAreaElement as well
174
183
  };
175
- }());
176
- /* tslint:enable */
184
+ })();
177
185
  }
178
- domNode[propName] = propValue;
179
186
  }
187
+ domNode[propName] = propValue;
180
188
  }
181
189
  else if (projectionOptions.namespace === NAMESPACE_SVG) {
182
- if (propName === 'href') {
190
+ if (propName === "href") {
183
191
  domNode.setAttributeNS(NAMESPACE_XLINK, propName, propValue);
184
192
  }
185
193
  else {
@@ -187,7 +195,7 @@ var setProperties = function (domNode, properties, projectionOptions) {
187
195
  domNode.setAttribute(propName, propValue);
188
196
  }
189
197
  }
190
- else if (type === 'string' && propName !== 'value' && propName !== 'innerHTML') {
198
+ else if (type === "string" && propName !== "value" && propName !== "innerHTML") {
191
199
  domNode.setAttribute(propName, propValue);
192
200
  }
193
201
  else {
@@ -215,7 +223,13 @@ export var initPropertiesAndChildren = function (domNode, vnode, projectionOptio
215
223
  }
216
224
  setProperties(domNode, vnode.properties, projectionOptions);
217
225
  if (vnode.properties && vnode.properties.afterCreate) {
218
- vnode.properties.afterCreate.apply(vnode.properties.bind || vnode.properties, [domNode, projectionOptions, vnode.vnodeSelector, vnode.properties, vnode.children]);
226
+ vnode.properties.afterCreate.apply(vnode.properties.bind || vnode.properties, [
227
+ domNode,
228
+ projectionOptions,
229
+ vnode.vnodeSelector,
230
+ vnode.properties,
231
+ vnode.children,
232
+ ]);
219
233
  }
220
234
  };
221
235
  export var createDom = function (vnode, parentNode, insertBefore, projectionOptions) {
@@ -223,7 +237,7 @@ export var createDom = function (vnode, parentNode, insertBefore, projectionOpti
223
237
  var start = 0;
224
238
  var vnodeSelector = vnode.vnodeSelector;
225
239
  var doc = parentNode.ownerDocument;
226
- if (vnodeSelector === '') {
240
+ if (vnodeSelector === "") {
227
241
  domNode = vnode.domNode = doc.createTextNode(vnode.text);
228
242
  if (insertBefore !== undefined) {
229
243
  parentNode.insertBefore(domNode, insertBefore);
@@ -235,27 +249,29 @@ export var createDom = function (vnode, parentNode, insertBefore, projectionOpti
235
249
  else {
236
250
  for (var i = 0; i <= vnodeSelector.length; ++i) {
237
251
  var c = vnodeSelector.charAt(i);
238
- if (i === vnodeSelector.length || c === '.' || c === '#') {
252
+ if (i === vnodeSelector.length || c === "." || c === "#") {
239
253
  var type = vnodeSelector.charAt(start - 1);
240
254
  var found = vnodeSelector.slice(start, i);
241
- if (type === '.') {
255
+ if (type === ".") {
242
256
  domNode.classList.add(found);
243
257
  }
244
- else if (type === '#') {
258
+ else if (type === "#") {
245
259
  domNode.id = found;
246
260
  }
247
261
  else {
248
- if (found === 'svg') {
249
- projectionOptions = extend(projectionOptions, { namespace: NAMESPACE_SVG });
262
+ if (found === "svg") {
263
+ projectionOptions = extend(projectionOptions, {
264
+ namespace: NAMESPACE_SVG,
265
+ });
250
266
  }
251
267
  if (projectionOptions.namespace !== undefined) {
252
268
  domNode = vnode.domNode = doc.createElementNS(projectionOptions.namespace, found);
253
269
  }
254
270
  else {
255
- domNode = vnode.domNode = (vnode.domNode || doc.createElement(found));
256
- if (found === 'input' && vnode.properties && vnode.properties.type !== undefined) {
271
+ domNode = vnode.domNode = vnode.domNode || doc.createElement(found);
272
+ if (found === "input" && vnode.properties && vnode.properties.type !== undefined) {
257
273
  // IE8 and older don't support setting input type after the DOM Node has been added to the document
258
- domNode.setAttribute('type', vnode.properties.type);
274
+ domNode.setAttribute("type", vnode.properties.type);
259
275
  }
260
276
  }
261
277
  if (insertBefore !== undefined) {
@@ -282,7 +298,7 @@ var toggleClasses = function (domNode, classes, on) {
282
298
  if (!classes) {
283
299
  return;
284
300
  }
285
- classes.split(' ').forEach(function (classToToggle) {
301
+ classes.split(" ").forEach(function (classToToggle) {
286
302
  if (classToToggle) {
287
303
  domNode.classList.toggle(classToToggle, on);
288
304
  }
@@ -300,13 +316,13 @@ var updateProperties = function (domNode, previousProperties, properties, projec
300
316
  // assuming that properties will be nullified instead of missing is by design
301
317
  var propValue = properties[propName];
302
318
  var previousValue = previousProperties[propName];
303
- if (propName === 'class') {
319
+ if (propName === "class") {
304
320
  if (previousValue !== propValue) {
305
321
  toggleClasses(domNode, previousValue, false);
306
322
  toggleClasses(domNode, propValue, true);
307
323
  }
308
324
  }
309
- else if (propName === 'classes') {
325
+ else if (propName === "classes") {
310
326
  var classList = domNode.classList;
311
327
  var classNames = Object.keys(propValue);
312
328
  var classNameCount = classNames.length;
@@ -326,7 +342,7 @@ var updateProperties = function (domNode, previousProperties, properties, projec
326
342
  }
327
343
  }
328
344
  }
329
- else if (propName === 'styles') {
345
+ else if (propName === "styles") {
330
346
  var styleNames = Object.keys(propValue);
331
347
  var styleCount = styleNames.length;
332
348
  for (var j = 0; j < styleCount; j++) {
@@ -342,24 +358,25 @@ var updateProperties = function (domNode, previousProperties, properties, projec
342
358
  projectionOptions.styleApplyer(domNode, styleName, newStyleValue);
343
359
  }
344
360
  else {
345
- projectionOptions.styleApplyer(domNode, styleName, '');
361
+ projectionOptions.styleApplyer(domNode, styleName, "");
346
362
  }
347
363
  }
348
364
  }
349
365
  else {
350
- if (!propValue && typeof previousValue === 'string') {
351
- propValue = '';
366
+ if (!propValue && typeof previousValue === "string") {
367
+ propValue = "";
352
368
  }
353
- if (propName === 'value') { // value can be manipulated by the user directly and using event.preventDefault() is not an option
369
+ if (propName === "value") {
370
+ // value can be manipulated by the user directly and using event.preventDefault() is not an option
354
371
  var domValue = domNode[propName];
355
- if (domValue !== propValue // The 'value' in the DOM tree !== newValue
356
- && (domNode['oninput-value']
357
- ? domValue === domNode['oninput-value'] // If the last reported value to 'oninput' does not match domValue, do nothing and wait for oninput
358
- : propValue !== previousValue // Only update the value if the vdom changed
359
- )) {
372
+ if (domValue !== propValue && // The 'value' in the DOM tree !== newValue
373
+ (domNode["oninput-value"]
374
+ ? domValue === domNode["oninput-value"] // If the last reported value to 'oninput' does not match domValue, do nothing and wait for oninput
375
+ : propValue !== previousValue) // Only update the value if the vdom changed
376
+ ) {
360
377
  // The edge cases are described in the tests
361
378
  domNode[propName] = propValue; // Reset the value, even if the virtual DOM did not change
362
- domNode['oninput-value'] = undefined;
379
+ domNode["oninput-value"] = undefined;
363
380
  } // else do not update the domNode, otherwise the cursor position would be changed
364
381
  if (propValue !== previousValue) {
365
382
  propertiesUpdated = true;
@@ -367,9 +384,10 @@ var updateProperties = function (domNode, previousProperties, properties, projec
367
384
  }
368
385
  else if (propValue !== previousValue) {
369
386
  var type = typeof propValue;
370
- if (type !== 'function' || !projectionOptions.eventHandlerInterceptor) { // Function updates are expected to be handled by the EventHandlerInterceptor
387
+ if (type !== "function" || !projectionOptions.eventHandlerInterceptor) {
388
+ // Function updates are expected to be handled by the EventHandlerInterceptor
371
389
  if (projectionOptions.namespace === NAMESPACE_SVG) {
372
- if (propName === 'href') {
390
+ if (propName === "href") {
373
391
  domNode.setAttributeNS(NAMESPACE_XLINK, propName, propValue);
374
392
  }
375
393
  else {
@@ -377,15 +395,16 @@ var updateProperties = function (domNode, previousProperties, properties, projec
377
395
  domNode.setAttribute(propName, propValue);
378
396
  }
379
397
  }
380
- else if (type === 'string' && propName !== 'innerHTML') {
381
- if (propName === 'role' && propValue === '') {
398
+ else if (type === "string" && propName !== "innerHTML") {
399
+ if (propName === "role" && propValue === "") {
382
400
  domNode.removeAttribute(propName);
383
401
  }
384
402
  else {
385
403
  domNode.setAttribute(propName, propValue);
386
404
  }
387
405
  }
388
- else if (domNode[propName] !== propValue) { // Comparison is here for side-effects in Edge with scrollLeft and scrollTop
406
+ else if (domNode[propName] !== propValue) {
407
+ // Comparison is here for side-effects in Edge with scrollLeft and scrollTop
389
408
  domNode[propName] = propValue;
390
409
  }
391
410
  propertiesUpdated = true;
@@ -408,7 +427,7 @@ var updateChildren = function (vnode, domNode, oldChildren, newChildren, project
408
427
  var i;
409
428
  var textUpdated = false;
410
429
  while (newIndex < newChildrenLength) {
411
- var oldChild = (oldIndex < oldChildrenLength) ? oldChildren[oldIndex] : undefined;
430
+ var oldChild = oldIndex < oldChildrenLength ? oldChildren[oldIndex] : undefined;
412
431
  var newChild = newChildren[newIndex];
413
432
  if (oldChild !== undefined && same(oldChild, newChild)) {
414
433
  textUpdated = updateDom(oldChild, newChild, projectionOptions) || textUpdated;
@@ -420,16 +439,17 @@ var updateChildren = function (vnode, domNode, oldChildren, newChildren, project
420
439
  // Remove preceding missing children
421
440
  for (i = oldIndex; i < findOldIndex; i++) {
422
441
  nodeToRemove(oldChildren[i]);
423
- checkDistinguishable(oldChildren, i, vnode, 'removed');
442
+ checkDistinguishable(oldChildren, i, vnode, "removed");
424
443
  }
425
- textUpdated = updateDom(oldChildren[findOldIndex], newChild, projectionOptions) || textUpdated;
444
+ textUpdated =
445
+ updateDom(oldChildren[findOldIndex], newChild, projectionOptions) || textUpdated;
426
446
  oldIndex = findOldIndex + 1;
427
447
  }
428
448
  else {
429
449
  // New child
430
- createDom(newChild, domNode, (oldIndex < oldChildrenLength) ? oldChildren[oldIndex].domNode : undefined, projectionOptions);
450
+ createDom(newChild, domNode, oldIndex < oldChildrenLength ? oldChildren[oldIndex].domNode : undefined, projectionOptions);
431
451
  nodeAdded(newChild);
432
- checkDistinguishable(newChildren, newIndex, vnode, 'added');
452
+ checkDistinguishable(newChildren, newIndex, vnode, "added");
433
453
  }
434
454
  }
435
455
  newIndex++;
@@ -438,7 +458,7 @@ var updateChildren = function (vnode, domNode, oldChildren, newChildren, project
438
458
  // Remove child fragments
439
459
  for (i = oldIndex; i < oldChildrenLength; i++) {
440
460
  nodeToRemove(oldChildren[i]);
441
- checkDistinguishable(oldChildren, i, vnode, 'removed');
461
+ checkDistinguishable(oldChildren, i, vnode, "removed");
442
462
  }
443
463
  }
444
464
  return textUpdated;
@@ -450,7 +470,7 @@ updateDom = function (previous, vnode, projectionOptions) {
450
470
  return false; // By contract, VNode objects may not be modified anymore after passing them to maquette
451
471
  }
452
472
  var updated = false;
453
- if (vnode.vnodeSelector === '') {
473
+ if (vnode.vnodeSelector === "") {
454
474
  if (vnode.text !== previous.text) {
455
475
  var newTextNode = domNode.ownerDocument.createTextNode(vnode.text);
456
476
  domNode.parentNode.replaceChild(newTextNode, domNode);
@@ -461,8 +481,11 @@ updateDom = function (previous, vnode, projectionOptions) {
461
481
  vnode.domNode = domNode;
462
482
  }
463
483
  else {
464
- if (vnode.vnodeSelector.lastIndexOf('svg', 0) === 0) { // lastIndexOf(needle,0)===0 means StartsWith
465
- projectionOptions = extend(projectionOptions, { namespace: NAMESPACE_SVG });
484
+ if (vnode.vnodeSelector.lastIndexOf("svg", 0) === 0) {
485
+ // lastIndexOf(needle,0)===0 means StartsWith
486
+ projectionOptions = extend(projectionOptions, {
487
+ namespace: NAMESPACE_SVG,
488
+ });
466
489
  }
467
490
  if (previous.text !== vnode.text) {
468
491
  updated = true;
@@ -474,10 +497,20 @@ updateDom = function (previous, vnode, projectionOptions) {
474
497
  }
475
498
  }
476
499
  vnode.domNode = domNode;
477
- updated = updateChildren(vnode, domNode, previous.children, vnode.children, projectionOptions) || updated;
478
- updated = updateProperties(domNode, previous.properties, vnode.properties, projectionOptions) || updated;
500
+ updated =
501
+ updateChildren(vnode, domNode, previous.children, vnode.children, projectionOptions) ||
502
+ updated;
503
+ updated =
504
+ updateProperties(domNode, previous.properties, vnode.properties, projectionOptions) ||
505
+ updated;
479
506
  if (vnode.properties && vnode.properties.afterUpdate) {
480
- vnode.properties.afterUpdate.apply(vnode.properties.bind || vnode.properties, [domNode, projectionOptions, vnode.vnodeSelector, vnode.properties, vnode.children]);
507
+ vnode.properties.afterUpdate.apply(vnode.properties.bind || vnode.properties, [
508
+ domNode,
509
+ projectionOptions,
510
+ vnode.vnodeSelector,
511
+ vnode.properties,
512
+ vnode.children,
513
+ ]);
481
514
  }
482
515
  }
483
516
  if (updated && vnode.properties && vnode.properties.updateAnimation) {
@@ -490,13 +523,13 @@ export var createProjection = function (vnode, projectionOptions) {
490
523
  getLastRender: function () { return vnode; },
491
524
  update: function (updatedVnode) {
492
525
  if (vnode.vnodeSelector !== updatedVnode.vnodeSelector) {
493
- throw new Error('The selector for the root VNode may not be changed. (consider using dom.merge and add one extra level to the virtual DOM)');
526
+ throw new Error("The selector for the root VNode may not be changed. (consider using dom.merge and add one extra level to the virtual DOM)");
494
527
  }
495
528
  var previousVNode = vnode;
496
529
  vnode = updatedVnode;
497
530
  updateDom(previousVNode, updatedVnode, projectionOptions);
498
531
  },
499
- domNode: vnode.domNode
532
+ domNode: vnode.domNode,
500
533
  };
501
534
  };
502
535
  //# sourceMappingURL=projection.js.map