maquette 4.1.2 → 4.1.3
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.
- package/dist/maquette.cjs.js +13 -5
- package/dist/maquette.umd.js +13 -5
- package/dist/maquette.umd.min.js +1 -1
- package/dist/projection.js +13 -5
- package/dist/projection.js.map +1 -1
- package/package.json +2 -1
package/dist/maquette.cjs.js
CHANGED
|
@@ -450,7 +450,8 @@ var updateChildren = function (vnode, domNode, oldChildren, newChildren, project
|
|
|
450
450
|
var oldChild = oldIndex < oldChildrenLength ? oldChildren[oldIndex] : undefined;
|
|
451
451
|
var newChild = newChildren[newIndex];
|
|
452
452
|
if (oldChild !== undefined && same(oldChild, newChild)) {
|
|
453
|
-
textUpdated =
|
|
453
|
+
textUpdated =
|
|
454
|
+
updateDom(oldChild, newChild, projectionOptions, domNode, oldChildren) || textUpdated;
|
|
454
455
|
oldIndex++;
|
|
455
456
|
}
|
|
456
457
|
else {
|
|
@@ -462,7 +463,8 @@ var updateChildren = function (vnode, domNode, oldChildren, newChildren, project
|
|
|
462
463
|
checkDistinguishable(oldChildren, i, vnode, "removed");
|
|
463
464
|
}
|
|
464
465
|
textUpdated =
|
|
465
|
-
updateDom(oldChildren[findOldIndex], newChild, projectionOptions) ||
|
|
466
|
+
updateDom(oldChildren[findOldIndex], newChild, projectionOptions, domNode, oldChildren) ||
|
|
467
|
+
textUpdated;
|
|
466
468
|
oldIndex = findOldIndex + 1;
|
|
467
469
|
}
|
|
468
470
|
else {
|
|
@@ -483,7 +485,7 @@ var updateChildren = function (vnode, domNode, oldChildren, newChildren, project
|
|
|
483
485
|
}
|
|
484
486
|
return textUpdated;
|
|
485
487
|
};
|
|
486
|
-
updateDom = function (previous, vnode, projectionOptions) {
|
|
488
|
+
updateDom = function (previous, vnode, projectionOptions, parentNode, oldChildren) {
|
|
487
489
|
var domNode = previous.domNode;
|
|
488
490
|
var textUpdated = false;
|
|
489
491
|
if (previous === vnode) {
|
|
@@ -493,7 +495,13 @@ updateDom = function (previous, vnode, projectionOptions) {
|
|
|
493
495
|
if (vnode.vnodeSelector === "") {
|
|
494
496
|
if (vnode.text !== previous.text) {
|
|
495
497
|
var newTextNode = domNode.ownerDocument.createTextNode(vnode.text);
|
|
496
|
-
|
|
498
|
+
try {
|
|
499
|
+
parentNode.replaceChild(newTextNode, domNode);
|
|
500
|
+
}
|
|
501
|
+
catch (e) {
|
|
502
|
+
// Text nodes can be substituted by google translate
|
|
503
|
+
parentNode.replaceChild(newTextNode, parentNode.childNodes[oldChildren.indexOf(previous)]);
|
|
504
|
+
}
|
|
497
505
|
vnode.domNode = newTextNode;
|
|
498
506
|
textUpdated = true;
|
|
499
507
|
return textUpdated;
|
|
@@ -547,7 +555,7 @@ var createProjection = function (vnode, projectionOptions) {
|
|
|
547
555
|
}
|
|
548
556
|
var previousVNode = vnode;
|
|
549
557
|
vnode = updatedVnode;
|
|
550
|
-
updateDom(previousVNode, updatedVnode, projectionOptions);
|
|
558
|
+
updateDom(previousVNode, updatedVnode, projectionOptions, previousVNode.domNode.parentNode, [previousVNode]);
|
|
551
559
|
},
|
|
552
560
|
domNode: vnode.domNode,
|
|
553
561
|
};
|
package/dist/maquette.umd.js
CHANGED
|
@@ -454,7 +454,8 @@
|
|
|
454
454
|
var oldChild = oldIndex < oldChildrenLength ? oldChildren[oldIndex] : undefined;
|
|
455
455
|
var newChild = newChildren[newIndex];
|
|
456
456
|
if (oldChild !== undefined && same(oldChild, newChild)) {
|
|
457
|
-
textUpdated =
|
|
457
|
+
textUpdated =
|
|
458
|
+
updateDom(oldChild, newChild, projectionOptions, domNode, oldChildren) || textUpdated;
|
|
458
459
|
oldIndex++;
|
|
459
460
|
}
|
|
460
461
|
else {
|
|
@@ -466,7 +467,8 @@
|
|
|
466
467
|
checkDistinguishable(oldChildren, i, vnode, "removed");
|
|
467
468
|
}
|
|
468
469
|
textUpdated =
|
|
469
|
-
updateDom(oldChildren[findOldIndex], newChild, projectionOptions) ||
|
|
470
|
+
updateDom(oldChildren[findOldIndex], newChild, projectionOptions, domNode, oldChildren) ||
|
|
471
|
+
textUpdated;
|
|
470
472
|
oldIndex = findOldIndex + 1;
|
|
471
473
|
}
|
|
472
474
|
else {
|
|
@@ -487,7 +489,7 @@
|
|
|
487
489
|
}
|
|
488
490
|
return textUpdated;
|
|
489
491
|
};
|
|
490
|
-
updateDom = function (previous, vnode, projectionOptions) {
|
|
492
|
+
updateDom = function (previous, vnode, projectionOptions, parentNode, oldChildren) {
|
|
491
493
|
var domNode = previous.domNode;
|
|
492
494
|
var textUpdated = false;
|
|
493
495
|
if (previous === vnode) {
|
|
@@ -497,7 +499,13 @@
|
|
|
497
499
|
if (vnode.vnodeSelector === "") {
|
|
498
500
|
if (vnode.text !== previous.text) {
|
|
499
501
|
var newTextNode = domNode.ownerDocument.createTextNode(vnode.text);
|
|
500
|
-
|
|
502
|
+
try {
|
|
503
|
+
parentNode.replaceChild(newTextNode, domNode);
|
|
504
|
+
}
|
|
505
|
+
catch (e) {
|
|
506
|
+
// Text nodes can be substituted by google translate
|
|
507
|
+
parentNode.replaceChild(newTextNode, parentNode.childNodes[oldChildren.indexOf(previous)]);
|
|
508
|
+
}
|
|
501
509
|
vnode.domNode = newTextNode;
|
|
502
510
|
textUpdated = true;
|
|
503
511
|
return textUpdated;
|
|
@@ -551,7 +559,7 @@
|
|
|
551
559
|
}
|
|
552
560
|
var previousVNode = vnode;
|
|
553
561
|
vnode = updatedVnode;
|
|
554
|
-
updateDom(previousVNode, updatedVnode, projectionOptions);
|
|
562
|
+
updateDom(previousVNode, updatedVnode, projectionOptions, previousVNode.domNode.parentNode, [previousVNode]);
|
|
555
563
|
},
|
|
556
564
|
domNode: vnode.domNode,
|
|
557
565
|
};
|
package/dist/maquette.umd.min.js
CHANGED
|
@@ -1 +1 @@
|
|
|
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 t(e){(e.children||[]).forEach(t),e.properties&&e.properties.afterRemoved&&e.properties.afterRemoved.call(e.properties.bind||e.properties,e.domNode)}function r(){d=!1,i.forEach(t),i.length=0}function o(e){i.push(e),d||(d=!0,"undefined"!=typeof window&&"requestIdleCallback"in window?window.requestIdleCallback(r,{timeout:16}):setTimeout(r,16))}var n="http://www.w3.org/",S="".concat(n,"2000/svg"),w="".concat(n,"1999/xlink"),v=[],h=function(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)},E=function(e){if("string"!=typeof e)throw Error("Style values must be strings")},m=function(e,t,r){if(""!==t.vnodeSelector)for(var o=r;o<e.length;o++)if(h(e[o],t))return o;return-1},g=function(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){var a=e[d];if(h(a,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}}}},y=function(e){var t;e.properties&&(t=e.properties.enterAnimation)&&t(e.domNode,e.properties)},i=[],d=!1,N=function(e){var t=e.domNode;if(e.properties){var r=e.properties.exitAnimation;if(r)return t.style.pointerEvents="none",void r(t,function(){t.parentNode&&(t.parentNode.removeChild(t),o(e))},e.properties)}t.parentNode&&(t.parentNode.removeChild(t),o(e))},a=["afterCreate","afterUpdate","afterRemoved","enterAnimation","exitAnimation","updateAnimation"];function k(e){return!a.includes(e)}function f(e,t,r){c(e,t.children,r),t.text&&(e.textContent=t.text),p(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 s(
|
|
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 t(e){(e.children||[]).forEach(t),e.properties&&e.properties.afterRemoved&&e.properties.afterRemoved.call(e.properties.bind||e.properties,e.domNode)}function r(){d=!1,i.forEach(t),i.length=0}function o(e){i.push(e),d||(d=!0,"undefined"!=typeof window&&"requestIdleCallback"in window?window.requestIdleCallback(r,{timeout:16}):setTimeout(r,16))}var n="http://www.w3.org/",S="".concat(n,"2000/svg"),w="".concat(n,"1999/xlink"),v=[],h=function(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)},E=function(e){if("string"!=typeof e)throw Error("Style values must be strings")},m=function(e,t,r){if(""!==t.vnodeSelector)for(var o=r;o<e.length;o++)if(h(e[o],t))return o;return-1},g=function(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){var a=e[d];if(h(a,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}}}},y=function(e){var t;e.properties&&(t=e.properties.enterAnimation)&&t(e.domNode,e.properties)},i=[],d=!1,N=function(e){var t=e.domNode;if(e.properties){var r=e.properties.exitAnimation;if(r)return t.style.pointerEvents="none",void r(t,function(){t.parentNode&&(t.parentNode.removeChild(t),o(e))},e.properties)}t.parentNode&&(t.parentNode.removeChild(t),o(e))},a=["afterCreate","afterUpdate","afterRemoved","enterAnimation","exitAnimation","updateAnimation"];function k(e){return!a.includes(e)}function f(e,t,r){c(e,t.children,r),t.text&&(e.textContent=t.text),p(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 s(r,o){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)");var t=r;x(t,r=e,o,t.domNode.parentNode,[t])},domNode:r.domNode}}function u(e){return l(A,e)}var p=function(e,t,r){if(t)for(var o=r.eventHandlerInterceptor,n=Object.keys(t).filter(k),i=n.length,d=0;d<i;d++){var a,s=n[d],p=t[s];if("className"===s)throw Error('Property "className" is not supported, use "class".');if("class"===s)C(e,p,!0);else if("classes"===s)for(var c=Object.keys(p),l=c.length,f=0;f<l;f++){var u=c[f];p[u]&&e.classList.add(u)}else if("styles"===s)for(var v=Object.keys(p),h=v.length,f=0;f<h;f++){var m=v[f],g=p[m];g&&(E(g),r.styleApplyer(e,m,g))}else if("on"===s&&p)for(var y=0,N=Object.entries(t.on);y<N.length;y++){var b=N[y],x=b[0],b=b[1],A="function"==typeof b?b:b.listener;(A=o?o(x,A,e,t):A)&&e.addEventListener(x,A,"function"==typeof b?void 0:b.options)}else"key"!==s&&null!=p&&("function"==(a=typeof p)?(s.lastIndexOf("on",0)||o&&(p=o(s,p,e,t)),e[s]=p):r.namespace===S?"href"===s?e.setAttributeNS(w,s,p):e.setAttribute(s,p):"string"==a&&"value"!==s&&"innerHTML"!==s?e.setAttribute(s,p):e[s]=p)}},c=function(e,t,r){if(t)for(var o=0,n=t;o<n.length;o++){var i=n[o];b(i,e,void 0,r)}},b=function(e,t,r,o){var n,i=0,d=e.vnodeSelector,a=t.ownerDocument;if(""===d)e.domNode?e.domNode.nodeValue=e.text:(n=e.domNode=a.createTextNode(e.text),void 0!==r?t.insertBefore(n,r):t.appendChild(n));else{for(var s=0;s<=d.length;++s){var p,c=d[0|s]||"";s!==d.length&&"."!=c&&"#"!=c||(c=d[0|i-1]||"",p=d.slice(i,s),"."==c?n.classList.add(p):"#"==c?n.id=p:(void 0!==(o="svg"===p?l(o,{namespace:S}):o).namespace?n=e.domNode=a.createElementNS(o.namespace,p):(n=e.domNode=e.domNode||(null!=(c=e.properties)&&c.is?a.createElement(p,{is:e.properties.is}):a.createElement(p)),"input"===p&&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=s+1)}f(n,e,o)}},C=function(t,e,r){e&&e.split(" ").forEach(function(e){e&&t.classList.toggle(e,r)})},x=function(t,e,r,o,n){var i=t.domNode;if(t!==e){var d=!1;if(""===e.vnodeSelector){if(e.text!==t.text){var a=i.ownerDocument.createTextNode(e.text);try{o.replaceChild(a,i)}catch(e){o.replaceChild(a,o.childNodes[n.indexOf(t)])}return e.domNode=a,!0}e.domNode=i}else e.vnodeSelector.lastIndexOf("svg",0)||(r=l(r,{namespace:S})),t.text!==e.text&&(d=!0,void 0===e.text?i.removeChild(i.firstChild):i.textContent=e.text),e.domNode=i,d=function(e,t,r,o,n){if(r===o)return!1;for(var i,d=(r=r||v).length,a=(o=o||v).length,s=0,p=0,c=!1;p<a;){var l=s<d?r[s]:void 0,f=o[p];if(void 0!==l&&h(l,f))c=x(l,f,n,t,r)||c,s++;else{var u=m(r,f,s+1);if(u<0)b(f,t,s<d?r[s].domNode:void 0,n),y(f),g(o,p,e,"added");else{for(i=s;i<u;i++)N(r[i]),g(r,i,e,"removed");c=x(r[u],f,n,t,r)||c,s=u+1}}p++}if(s<d)for(i=s;i<d;i++)N(r[i]),g(r,i,e,"removed");return c}(e,i,t.children,e.children,r)||d,d=function(e,t,r,o){if(r){for(var n=!1,i=Object.keys(r).filter(k),d=i.length,a=0;a<d;a++){var s,p=i[a],c=r[p],l=t[p];if("class"===p)l!==c&&(C(e,l,!1),C(e,c,!0));else if("classes"===p)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"===p)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?(E(x),o.styleApplyer(e,b,x)):o.styleApplyer(e,b,""))}else c||"string"!=typeof l||(c=""),"value"===p?(e[p]!==c&&c!==l&&(e[p]=c),c!==l&&(n=!0)):c===l||"function"==(s=typeof c)&&o.eventHandlerInterceptor||(o.namespace===S?"href"===p?e.setAttributeNS(w,p,c):e.setAttribute(p,c):"string"==s&&"innerHTML"!==p?"role"===p&&""===c?e.removeAttribute(p):e.setAttribute(p,c):e[p]!==c&&(e[p]=c),n=!0)}return n}}(i,t.properties,e.properties,r)||d,e.properties&&e.properties.afterUpdate&&e.properties.afterUpdate.call(e.properties.bind||e.properties,i,r,e.vnodeSelector,e.properties,e.children);d&&e.properties&&e.properties.updateAnimation&&e.properties.updateAnimation(i,e.properties,t.properties)}return!1},A={namespace:void 0,performanceLogger:function(){},eventHandlerInterceptor:void 0,styleApplyer:function(e,t,r){"-"==(t[0]||"")?e.style.setProperty(t,r):e.style[t]=r}},O={create:function(e,t){return t=u(t),b(e,document.createElement("div"),void 0,t),s(e,t)},append:function(e,t,r){return r=u(r),b(t,e,void 0,r),s(t,r)},insertBefore:function(e,t,r){return r=u(r),b(t,e.parentNode,e,r),s(t,r)},merge:function(e,t,r){return r=u(r),f(t.domNode=e,t,r),s(t,r)},replace:function(e,t,r){return r=u(r),b(t,e.parentNode,e,r),e.parentNode.removeChild(e),s(t,r)}},j=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,s=1;s<u.length+1;s++){var p=(o+s)%u.length;if(u[p]===d){v[n]=r[p],f(e[n],r[p],n),o=1+p,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,r,o=i,n=function(e,t){for(var r=[];e&&e!==t;)r.push(e),e=e.parentNode;return r}(e.currentTarget,o.domNode),o=(n.reverse(),o=o.getLastRender(),r=o,n.forEach(function(t){r=r&&r.children?j(r.children,function(e){return e.domNode===t}):void 0}),r);return d.scheduleRender(),o&&(t=(null!=(n=null!=(n=o.properties["on".concat(e.type)])?n:o.properties.on[e.type].listener)?n:o.properties.on[e.type]).apply(o.properties.bind||this,arguments)),a("domEventProcessed",e),t}s.eventHandlerInterceptor=(d=f,a=p,function(e,t,r,o){return n}),i=e(t,r(),s),c.push(i),l.push(r)}function t(){if(o=void 0,n){n=!1,p("renderStart",void 0);for(var e=0;e<c.length;e++){var t=l[e]();p("rendered",void 0),c[e].update(t),p("patched",void 0)}p("renderDone",void 0),n=!0}}var o,s=u(e),p=s.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(O.append,e,t)},insertBefore:function(e,t){r(O.insertBefore,e,t)},merge:function(e,t){r(O.merge,e,t)},replace:function(e,t){r(O.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=O,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&&(function e(t,r,o){for(var n=0,i=r.length;n<i;n++){var d=r[n];Array.isArray(d)?e(t,d,o):null!=d&&!1!==d&&("string"==typeof d&&(d={vnodeSelector:"",properties:void 0,children:void 0,text:d.toString(),domNode:null}),o.push(d))}}(e,r,n=[]),0===n.length)&&(n=void 0),{vnodeSelector:e,properties:t,children:n,text:""===o?void 0:o,domNode:null}}});
|
package/dist/projection.js
CHANGED
|
@@ -448,7 +448,8 @@ var updateChildren = function (vnode, domNode, oldChildren, newChildren, project
|
|
|
448
448
|
var oldChild = oldIndex < oldChildrenLength ? oldChildren[oldIndex] : undefined;
|
|
449
449
|
var newChild = newChildren[newIndex];
|
|
450
450
|
if (oldChild !== undefined && same(oldChild, newChild)) {
|
|
451
|
-
textUpdated =
|
|
451
|
+
textUpdated =
|
|
452
|
+
updateDom(oldChild, newChild, projectionOptions, domNode, oldChildren) || textUpdated;
|
|
452
453
|
oldIndex++;
|
|
453
454
|
}
|
|
454
455
|
else {
|
|
@@ -460,7 +461,8 @@ var updateChildren = function (vnode, domNode, oldChildren, newChildren, project
|
|
|
460
461
|
checkDistinguishable(oldChildren, i, vnode, "removed");
|
|
461
462
|
}
|
|
462
463
|
textUpdated =
|
|
463
|
-
updateDom(oldChildren[findOldIndex], newChild, projectionOptions) ||
|
|
464
|
+
updateDom(oldChildren[findOldIndex], newChild, projectionOptions, domNode, oldChildren) ||
|
|
465
|
+
textUpdated;
|
|
464
466
|
oldIndex = findOldIndex + 1;
|
|
465
467
|
}
|
|
466
468
|
else {
|
|
@@ -481,7 +483,7 @@ var updateChildren = function (vnode, domNode, oldChildren, newChildren, project
|
|
|
481
483
|
}
|
|
482
484
|
return textUpdated;
|
|
483
485
|
};
|
|
484
|
-
updateDom = function (previous, vnode, projectionOptions) {
|
|
486
|
+
updateDom = function (previous, vnode, projectionOptions, parentNode, oldChildren) {
|
|
485
487
|
var domNode = previous.domNode;
|
|
486
488
|
var textUpdated = false;
|
|
487
489
|
if (previous === vnode) {
|
|
@@ -491,7 +493,13 @@ updateDom = function (previous, vnode, projectionOptions) {
|
|
|
491
493
|
if (vnode.vnodeSelector === "") {
|
|
492
494
|
if (vnode.text !== previous.text) {
|
|
493
495
|
var newTextNode = domNode.ownerDocument.createTextNode(vnode.text);
|
|
494
|
-
|
|
496
|
+
try {
|
|
497
|
+
parentNode.replaceChild(newTextNode, domNode);
|
|
498
|
+
}
|
|
499
|
+
catch (e) {
|
|
500
|
+
// Text nodes can be substituted by google translate
|
|
501
|
+
parentNode.replaceChild(newTextNode, parentNode.childNodes[oldChildren.indexOf(previous)]);
|
|
502
|
+
}
|
|
495
503
|
vnode.domNode = newTextNode;
|
|
496
504
|
textUpdated = true;
|
|
497
505
|
return textUpdated;
|
|
@@ -545,7 +553,7 @@ export var createProjection = function (vnode, projectionOptions) {
|
|
|
545
553
|
}
|
|
546
554
|
var previousVNode = vnode;
|
|
547
555
|
vnode = updatedVnode;
|
|
548
|
-
updateDom(previousVNode, updatedVnode, projectionOptions);
|
|
556
|
+
updateDom(previousVNode, updatedVnode, projectionOptions, previousVNode.domNode.parentNode, [previousVNode]);
|
|
549
557
|
},
|
|
550
558
|
domNode: vnode.domNode,
|
|
551
559
|
};
|
package/dist/projection.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"projection.js","sourceRoot":"","sources":["../src/projection.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Exports here are NOT re-exported to maquette\n */\nimport { EventHandler, Projection, ProjectionOptions, VNode, VNodeProperties } from \"./interfaces\";\n\nconst NAMESPACE_W3 = \"http://www.w3.org/\";\nconst NAMESPACE_SVG = `${NAMESPACE_W3}2000/svg`;\nconst NAMESPACE_XLINK = `${NAMESPACE_W3}1999/xlink`;\n\nlet emptyArray = <VNode[]>[];\n\nexport let extend = <T extends object>(base: T, overrides: any): T => {\n let result = {} as any;\n Object.keys(base).forEach((key) => {\n result[key] = (base as any)[key];\n });\n if (overrides) {\n Object.keys(overrides).forEach((key) => {\n result[key] = overrides[key];\n });\n }\n return result;\n};\n\nlet same = (vnode1: VNode, vnode2: VNode) => {\n if (vnode1.vnodeSelector !== vnode2.vnodeSelector) {\n return false;\n }\n if (vnode1.properties && vnode2.properties) {\n if (vnode1.properties.key !== vnode2.properties.key) {\n return false;\n }\n return vnode1.properties.bind === vnode2.properties.bind;\n }\n return !vnode1.properties && !vnode2.properties;\n};\n\nlet checkStyleValue = (styleValue: unknown) => {\n if (typeof styleValue !== \"string\") {\n throw new Error(\"Style values must be strings\");\n }\n};\n\nlet findIndexOfChild = (children: VNode[], sameAs: VNode, start: number) => {\n if (sameAs.vnodeSelector !== \"\") {\n // Never scan for text-nodes\n for (let i = start; i < children.length; i++) {\n if (same(children[i], sameAs)) {\n return i;\n }\n }\n }\n return -1;\n};\n\nlet checkDistinguishable = (\n childNodes: VNode[],\n indexToCheck: number,\n parentVNode: VNode,\n operation: string\n) => {\n let childNode = childNodes[indexToCheck];\n if (childNode.vnodeSelector === \"\") {\n return; // Text nodes need not be distinguishable\n }\n let properties = childNode.properties;\n let key = properties\n ? properties.key === undefined\n ? properties.bind\n : properties.key\n : undefined;\n if (!key) {\n // A key is just assumed to be unique\n for (let i = 0; i < childNodes.length; i++) {\n if (i !== indexToCheck) {\n let node = childNodes[i];\n if (same(node, childNode)) {\n throw {\n error: new Error(\n `${parentVNode.vnodeSelector} had a ${childNode.vnodeSelector} child ${\n operation === \"added\" ? operation : \"removed\"\n }, but there is now more than one. You must add unique key properties to make them distinguishable.`\n ),\n parentNode: parentVNode,\n childNode,\n };\n }\n }\n }\n }\n};\n\nlet nodeAdded = (vNode: VNode) => {\n if (vNode.properties) {\n let enterAnimation = vNode.properties.enterAnimation;\n if (enterAnimation) {\n enterAnimation(vNode.domNode as Element, vNode.properties);\n }\n }\n};\n\nlet removedNodes: VNode[] = [];\nlet requestedIdleCallback = false;\n\nlet visitRemovedNode = (node: VNode) => {\n (node.children || []).forEach(visitRemovedNode);\n\n if (node.properties && node.properties.afterRemoved) {\n node.properties.afterRemoved.apply(node.properties.bind || node.properties, [\n <Element>node.domNode,\n ]);\n }\n};\n\nlet processPendingNodeRemovals = (): void => {\n requestedIdleCallback = false;\n\n removedNodes.forEach(visitRemovedNode);\n removedNodes.length = 0;\n};\n\nlet scheduleNodeRemoval = (vNode: VNode): void => {\n removedNodes.push(vNode);\n\n if (!requestedIdleCallback) {\n requestedIdleCallback = true;\n if (typeof window !== \"undefined\" && \"requestIdleCallback\" in window) {\n window.requestIdleCallback(processPendingNodeRemovals, { timeout: 16 });\n } else {\n setTimeout(processPendingNodeRemovals, 16);\n }\n }\n};\n\nlet nodeToRemove = (vNode: VNode) => {\n let domNode: Node = vNode.domNode!;\n if (vNode.properties) {\n let exitAnimation = vNode.properties.exitAnimation;\n if (exitAnimation) {\n (domNode as HTMLElement).style.pointerEvents = \"none\";\n let removeDomNode = () => {\n if (domNode.parentNode) {\n domNode.parentNode.removeChild(domNode);\n scheduleNodeRemoval(vNode);\n }\n };\n exitAnimation(domNode as Element, removeDomNode, vNode.properties);\n return;\n }\n }\n if (domNode.parentNode) {\n domNode.parentNode.removeChild(domNode);\n scheduleNodeRemoval(vNode);\n }\n};\n\nconst vnodeOnlyProps = [\n \"afterCreate\",\n \"afterUpdate\",\n \"afterRemoved\",\n \"enterAnimation\",\n \"exitAnimation\",\n \"updateAnimation\",\n];\n\nfunction filterVNodeOnlyProps(name: string): boolean {\n return !vnodeOnlyProps.includes(name);\n}\n\nlet setProperties = (\n domNode: Node,\n properties: VNodeProperties | undefined,\n projectionOptions: ProjectionOptions\n) => {\n if (!properties) {\n return;\n }\n let eventHandlerInterceptor = projectionOptions.eventHandlerInterceptor;\n let propNames = Object.keys(properties).filter(filterVNodeOnlyProps);\n let propCount = propNames.length;\n for (let i = 0; i < propCount; i++) {\n let propName = propNames[i];\n let propValue = properties[propName];\n if (propName === \"className\") {\n throw new Error('Property \"className\" is not supported, use \"class\".');\n } else if (propName === \"class\") {\n toggleClasses(domNode as HTMLElement, propValue as string, true);\n } else if (propName === \"classes\") {\n // object with string keys and boolean values\n let classNames = Object.keys(propValue);\n let classNameCount = classNames.length;\n for (let j = 0; j < classNameCount; j++) {\n let className = classNames[j];\n if (propValue[className]) {\n (domNode as Element).classList.add(className);\n }\n }\n } else if (propName === \"styles\") {\n // object with string keys and string (!) values\n let styleNames = Object.keys(propValue);\n let styleCount = styleNames.length;\n for (let j = 0; j < styleCount; j++) {\n let styleName = styleNames[j];\n let styleValue = propValue[styleName];\n if (styleValue) {\n checkStyleValue(styleValue);\n projectionOptions.styleApplyer!(<HTMLElement>domNode, styleName, styleValue);\n }\n }\n } else if (propName === \"on\" && propValue) {\n // object with string keys and function values\n for (let [key, handler] of Object.entries(properties.on!)) {\n let listener: EventHandler | undefined =\n typeof handler === \"function\" ? handler : handler.listener;\n if (eventHandlerInterceptor) {\n listener = eventHandlerInterceptor(key, listener, domNode, properties);\n }\n if (listener) {\n domNode.addEventListener(\n key,\n listener,\n typeof handler === \"function\" ? undefined : handler.options\n );\n }\n }\n } else if (propName !== \"key\" && propValue !== null && propValue !== undefined) {\n let type = typeof propValue;\n if (type === \"function\") {\n if (propName.lastIndexOf(\"on\", 0) === 0) {\n // lastIndexOf(,0)===0 -> startsWith\n if (eventHandlerInterceptor) {\n propValue = eventHandlerInterceptor(propName, propValue, domNode, properties); // intercept eventhandlers\n }\n }\n (domNode as any)[propName] = propValue;\n } else if (projectionOptions.namespace === NAMESPACE_SVG) {\n if (propName === \"href\") {\n (domNode as Element).setAttributeNS(NAMESPACE_XLINK, propName, propValue);\n } else {\n // all SVG attributes are read-only in DOM, so...\n (domNode as Element).setAttribute(propName, propValue);\n }\n } else if (type === \"string\" && propName !== \"value\" && propName !== \"innerHTML\") {\n (domNode as Element).setAttribute(propName, propValue);\n } else {\n (domNode as any)[propName] = propValue;\n }\n }\n }\n};\n\nlet addChildren = (\n domNode: Node,\n children: VNode[] | undefined,\n projectionOptions: ProjectionOptions\n) => {\n if (!children) {\n return;\n }\n for (let child of children) {\n createDom(child, domNode, undefined, projectionOptions);\n }\n};\n\nexport let initPropertiesAndChildren = (\n domNode: Node,\n vnode: VNode,\n projectionOptions: ProjectionOptions\n): void => {\n addChildren(domNode, vnode.children, projectionOptions); // children before properties, needed for value property of <select>.\n if (vnode.text) {\n domNode.textContent = vnode.text;\n }\n setProperties(domNode, vnode.properties, projectionOptions);\n if (vnode.properties && vnode.properties.afterCreate) {\n vnode.properties.afterCreate.apply(vnode.properties.bind || vnode.properties, [\n domNode as Element,\n projectionOptions,\n vnode.vnodeSelector,\n vnode.properties,\n vnode.children,\n ]);\n }\n};\n\nexport let createDom = (\n vnode: VNode,\n parentNode: Node,\n insertBefore: Node | null | undefined,\n projectionOptions: ProjectionOptions\n): void => {\n let domNode: Node | undefined;\n let start = 0;\n let vnodeSelector = vnode.vnodeSelector;\n let doc = parentNode.ownerDocument!;\n if (vnodeSelector === \"\") {\n if (vnode.domNode) {\n vnode.domNode.nodeValue = vnode.text!;\n } else {\n domNode = vnode.domNode = doc.createTextNode(vnode.text!);\n if (insertBefore !== undefined) {\n parentNode.insertBefore(domNode, insertBefore);\n } else {\n parentNode.appendChild(domNode);\n }\n }\n } else {\n for (let i = 0; i <= vnodeSelector.length; ++i) {\n let c = vnodeSelector.charAt(i);\n if (i === vnodeSelector.length || c === \".\" || c === \"#\") {\n let type = vnodeSelector.charAt(start - 1);\n let found = vnodeSelector.slice(start, i);\n if (type === \".\") {\n (domNode! as HTMLElement).classList.add(found);\n } else if (type === \"#\") {\n (domNode! as Element).id = found;\n } else {\n if (found === \"svg\") {\n projectionOptions = extend(projectionOptions, {\n namespace: NAMESPACE_SVG,\n });\n }\n if (projectionOptions.namespace !== undefined) {\n domNode = vnode.domNode = doc.createElementNS(projectionOptions.namespace, found);\n } else {\n domNode = vnode.domNode =\n vnode.domNode ||\n (vnode.properties?.is\n ? doc.createElement(found, { is: vnode.properties.is })\n : doc.createElement(found));\n if (found === \"input\" && vnode.properties && vnode.properties.type !== undefined) {\n // IE8 and older don't support setting input type after the DOM Node has been added to the document\n (domNode as Element).setAttribute(\"type\", vnode.properties.type);\n }\n }\n if (insertBefore !== undefined) {\n parentNode.insertBefore(domNode, insertBefore);\n } else if (domNode.parentNode !== parentNode) {\n parentNode.appendChild(domNode);\n }\n }\n start = i + 1;\n }\n }\n initPropertiesAndChildren(domNode!, vnode, projectionOptions);\n }\n};\n\nlet updateDom: (previous: VNode, vnode: VNode, projectionOptions: ProjectionOptions) => boolean;\n\n/**\n * Adds or removes classes from an Element\n * @param domNode the element\n * @param classes a string separated list of classes\n * @param on true means add classes, false means remove\n */\nlet toggleClasses = (domNode: HTMLElement, classes: string | null | undefined, on: boolean) => {\n if (!classes) {\n return;\n }\n classes.split(\" \").forEach((classToToggle) => {\n if (classToToggle) {\n domNode.classList.toggle(classToToggle, on);\n }\n });\n};\n\nlet updateProperties = (\n domNode: Node,\n previousProperties: VNodeProperties | undefined,\n properties: VNodeProperties | undefined,\n projectionOptions: ProjectionOptions\n) => {\n if (!properties) {\n return;\n }\n let propertiesUpdated = false;\n\n let propNames = Object.keys(properties).filter(filterVNodeOnlyProps);\n let propCount = propNames.length;\n for (let i = 0; i < propCount; i++) {\n let propName = propNames[i];\n // assuming that properties will be nullified instead of missing is by design\n let propValue = properties[propName];\n let previousValue = previousProperties![propName];\n if (propName === \"class\") {\n if (previousValue !== propValue) {\n toggleClasses(domNode as HTMLElement, previousValue, false);\n toggleClasses(domNode as HTMLElement, propValue, true);\n }\n } else if (propName === \"classes\") {\n let classList = (domNode as Element).classList;\n let classNames = Object.keys(propValue);\n let classNameCount = classNames.length;\n for (let j = 0; j < classNameCount; j++) {\n let className = classNames[j];\n let on = !!propValue[className];\n let previousOn = !!previousValue[className];\n if (on === previousOn) {\n continue;\n }\n propertiesUpdated = true;\n if (on) {\n classList.add(className);\n } else {\n classList.remove(className);\n }\n }\n } else if (propName === \"styles\") {\n let styleNames = Object.keys(propValue);\n let styleCount = styleNames.length;\n for (let j = 0; j < styleCount; j++) {\n let styleName = styleNames[j];\n let newStyleValue = propValue[styleName];\n let oldStyleValue = previousValue[styleName];\n if (newStyleValue === oldStyleValue) {\n continue;\n }\n propertiesUpdated = true;\n if (newStyleValue) {\n checkStyleValue(newStyleValue);\n projectionOptions.styleApplyer!(domNode as HTMLElement, styleName, newStyleValue);\n } else {\n projectionOptions.styleApplyer!(domNode as HTMLElement, styleName, \"\");\n }\n }\n } else {\n if (!propValue && typeof previousValue === \"string\") {\n propValue = \"\";\n }\n if (propName === \"value\") {\n // value can be manipulated by the user directly and using event.preventDefault() is not an option\n let domValue = (domNode as any)[propName];\n if (\n domValue !== propValue && // The 'value' in the DOM tree !== newValue\n propValue !== previousValue // Only update the value if the vdom changed\n ) {\n // The edge cases are described in the tests\n (domNode as any)[propName] = propValue; // Reset the value, even if the virtual DOM did not change\n } // else do not update the domNode, otherwise the cursor position would be changed\n if (propValue !== previousValue) {\n propertiesUpdated = true;\n }\n } else if (propValue !== previousValue) {\n let type = typeof propValue;\n if (type !== \"function\" || !projectionOptions.eventHandlerInterceptor) {\n // Function updates are expected to be handled by the EventHandlerInterceptor\n if (projectionOptions.namespace === NAMESPACE_SVG) {\n if (propName === \"href\") {\n (domNode as Element).setAttributeNS(NAMESPACE_XLINK, propName, propValue);\n } else {\n // all SVG attributes are read-only in DOM, so...\n (domNode as Element).setAttribute(propName, propValue);\n }\n } else if (type === \"string\" && propName !== \"innerHTML\") {\n if (propName === \"role\" && propValue === \"\") {\n (domNode as any).removeAttribute(propName);\n } else {\n (domNode as Element).setAttribute(propName, propValue);\n }\n } else if ((domNode as any)[propName] !== propValue) {\n // Comparison is here for side-effects in Edge with scrollLeft and scrollTop\n (domNode as any)[propName] = propValue;\n }\n\n propertiesUpdated = true;\n }\n }\n }\n }\n return propertiesUpdated;\n};\n\nlet updateChildren = (\n vnode: VNode,\n domNode: Node,\n oldChildren: VNode[] | undefined,\n newChildren: VNode[] | undefined,\n projectionOptions: ProjectionOptions\n) => {\n if (oldChildren === newChildren) {\n return false;\n }\n oldChildren = oldChildren || emptyArray;\n newChildren = newChildren || emptyArray;\n let oldChildrenLength = oldChildren.length;\n let newChildrenLength = newChildren.length;\n\n let oldIndex = 0;\n let newIndex = 0;\n let i: number;\n let textUpdated = false;\n while (newIndex < newChildrenLength) {\n let oldChild = oldIndex < oldChildrenLength ? oldChildren[oldIndex] : undefined;\n let newChild = newChildren[newIndex];\n if (oldChild !== undefined && same(oldChild, newChild)) {\n textUpdated = updateDom(oldChild, newChild, projectionOptions) || textUpdated;\n oldIndex++;\n } else {\n let findOldIndex = findIndexOfChild(oldChildren, newChild, oldIndex + 1);\n if (findOldIndex >= 0) {\n // Remove preceding missing children\n for (i = oldIndex; i < findOldIndex; i++) {\n nodeToRemove(oldChildren[i]);\n checkDistinguishable(oldChildren, i, vnode, \"removed\");\n }\n textUpdated =\n updateDom(oldChildren[findOldIndex], newChild, projectionOptions) || textUpdated;\n oldIndex = findOldIndex + 1;\n } else {\n // New child\n createDom(\n newChild,\n domNode,\n oldIndex < oldChildrenLength ? oldChildren[oldIndex].domNode : undefined,\n projectionOptions\n );\n nodeAdded(newChild);\n checkDistinguishable(newChildren, newIndex, vnode, \"added\");\n }\n }\n newIndex++;\n }\n if (oldChildrenLength > oldIndex) {\n // Remove child fragments\n for (i = oldIndex; i < oldChildrenLength; i++) {\n nodeToRemove(oldChildren[i]);\n checkDistinguishable(oldChildren, i, vnode, \"removed\");\n }\n }\n return textUpdated;\n};\n\nupdateDom = (previous, vnode, projectionOptions) => {\n let domNode = previous.domNode!;\n let textUpdated = false;\n if (previous === vnode) {\n return false; // By contract, VNode objects may not be modified anymore after passing them to maquette\n }\n let updated = false;\n if (vnode.vnodeSelector === \"\") {\n if (vnode.text !== previous.text) {\n let newTextNode = domNode.ownerDocument!.createTextNode(vnode.text!);\n domNode.parentNode!.replaceChild(newTextNode, domNode);\n vnode.domNode = newTextNode;\n textUpdated = true;\n return textUpdated;\n }\n vnode.domNode = domNode;\n } else {\n if (vnode.vnodeSelector.lastIndexOf(\"svg\", 0) === 0) {\n // lastIndexOf(needle,0)===0 means StartsWith\n projectionOptions = extend(projectionOptions, {\n namespace: NAMESPACE_SVG,\n });\n }\n if (previous.text !== vnode.text) {\n updated = true;\n if (vnode.text === undefined) {\n domNode.removeChild(domNode.firstChild!); // the only textnode presumably\n } else {\n domNode.textContent = vnode.text;\n }\n }\n vnode.domNode = domNode;\n updated =\n updateChildren(vnode, domNode, previous.children, vnode.children, projectionOptions) ||\n updated;\n updated =\n updateProperties(domNode, previous.properties, vnode.properties, projectionOptions) ||\n updated;\n if (vnode.properties && vnode.properties.afterUpdate) {\n vnode.properties.afterUpdate.apply(vnode.properties.bind || vnode.properties, [\n <Element>domNode,\n projectionOptions,\n vnode.vnodeSelector,\n vnode.properties,\n vnode.children,\n ]);\n }\n }\n if (updated && vnode.properties && vnode.properties.updateAnimation) {\n vnode.properties.updateAnimation(<Element>domNode, vnode.properties, previous.properties);\n }\n return textUpdated;\n};\n\nexport let createProjection = (vnode: VNode, projectionOptions: ProjectionOptions): Projection => {\n return {\n getLastRender: () => vnode,\n update: (updatedVnode: VNode) => {\n if (vnode.vnodeSelector !== updatedVnode.vnodeSelector) {\n throw new Error(\n \"The selector for the root VNode may not be changed. (consider using dom.merge and add one extra level to the virtual DOM)\"\n );\n }\n let previousVNode = vnode;\n vnode = updatedVnode;\n updateDom(previousVNode, updatedVnode, projectionOptions);\n },\n domNode: <Element>vnode.domNode,\n };\n};\n"]}
|
|
1
|
+
{"version":3,"file":"projection.js","sourceRoot":"","sources":["../src/projection.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Exports here are NOT re-exported to maquette\n */\nimport { EventHandler, Projection, ProjectionOptions, VNode, VNodeProperties } from \"./interfaces\";\n\nconst NAMESPACE_W3 = \"http://www.w3.org/\";\nconst NAMESPACE_SVG = `${NAMESPACE_W3}2000/svg`;\nconst NAMESPACE_XLINK = `${NAMESPACE_W3}1999/xlink`;\n\nlet emptyArray = <VNode[]>[];\n\nexport let extend = <T extends object>(base: T, overrides: any): T => {\n let result = {} as any;\n Object.keys(base).forEach((key) => {\n result[key] = (base as any)[key];\n });\n if (overrides) {\n Object.keys(overrides).forEach((key) => {\n result[key] = overrides[key];\n });\n }\n return result;\n};\n\nlet same = (vnode1: VNode, vnode2: VNode) => {\n if (vnode1.vnodeSelector !== vnode2.vnodeSelector) {\n return false;\n }\n if (vnode1.properties && vnode2.properties) {\n if (vnode1.properties.key !== vnode2.properties.key) {\n return false;\n }\n return vnode1.properties.bind === vnode2.properties.bind;\n }\n return !vnode1.properties && !vnode2.properties;\n};\n\nlet checkStyleValue = (styleValue: unknown) => {\n if (typeof styleValue !== \"string\") {\n throw new Error(\"Style values must be strings\");\n }\n};\n\nlet findIndexOfChild = (children: VNode[], sameAs: VNode, start: number) => {\n if (sameAs.vnodeSelector !== \"\") {\n // Never scan for text-nodes\n for (let i = start; i < children.length; i++) {\n if (same(children[i], sameAs)) {\n return i;\n }\n }\n }\n return -1;\n};\n\nlet checkDistinguishable = (\n childNodes: VNode[],\n indexToCheck: number,\n parentVNode: VNode,\n operation: string\n) => {\n let childNode = childNodes[indexToCheck];\n if (childNode.vnodeSelector === \"\") {\n return; // Text nodes need not be distinguishable\n }\n let properties = childNode.properties;\n let key = properties\n ? properties.key === undefined\n ? properties.bind\n : properties.key\n : undefined;\n if (!key) {\n // A key is just assumed to be unique\n for (let i = 0; i < childNodes.length; i++) {\n if (i !== indexToCheck) {\n let node = childNodes[i];\n if (same(node, childNode)) {\n throw {\n error: new Error(\n `${parentVNode.vnodeSelector} had a ${childNode.vnodeSelector} child ${\n operation === \"added\" ? operation : \"removed\"\n }, but there is now more than one. You must add unique key properties to make them distinguishable.`\n ),\n parentNode: parentVNode,\n childNode,\n };\n }\n }\n }\n }\n};\n\nlet nodeAdded = (vNode: VNode) => {\n if (vNode.properties) {\n let enterAnimation = vNode.properties.enterAnimation;\n if (enterAnimation) {\n enterAnimation(vNode.domNode as Element, vNode.properties);\n }\n }\n};\n\nlet removedNodes: VNode[] = [];\nlet requestedIdleCallback = false;\n\nlet visitRemovedNode = (node: VNode) => {\n (node.children || []).forEach(visitRemovedNode);\n\n if (node.properties && node.properties.afterRemoved) {\n node.properties.afterRemoved.apply(node.properties.bind || node.properties, [\n <Element>node.domNode,\n ]);\n }\n};\n\nlet processPendingNodeRemovals = (): void => {\n requestedIdleCallback = false;\n\n removedNodes.forEach(visitRemovedNode);\n removedNodes.length = 0;\n};\n\nlet scheduleNodeRemoval = (vNode: VNode): void => {\n removedNodes.push(vNode);\n\n if (!requestedIdleCallback) {\n requestedIdleCallback = true;\n if (typeof window !== \"undefined\" && \"requestIdleCallback\" in window) {\n window.requestIdleCallback(processPendingNodeRemovals, { timeout: 16 });\n } else {\n setTimeout(processPendingNodeRemovals, 16);\n }\n }\n};\n\nlet nodeToRemove = (vNode: VNode) => {\n let domNode: Node = vNode.domNode!;\n if (vNode.properties) {\n let exitAnimation = vNode.properties.exitAnimation;\n if (exitAnimation) {\n (domNode as HTMLElement).style.pointerEvents = \"none\";\n let removeDomNode = () => {\n if (domNode.parentNode) {\n domNode.parentNode.removeChild(domNode);\n scheduleNodeRemoval(vNode);\n }\n };\n exitAnimation(domNode as Element, removeDomNode, vNode.properties);\n return;\n }\n }\n if (domNode.parentNode) {\n domNode.parentNode.removeChild(domNode);\n scheduleNodeRemoval(vNode);\n }\n};\n\nconst vnodeOnlyProps = [\n \"afterCreate\",\n \"afterUpdate\",\n \"afterRemoved\",\n \"enterAnimation\",\n \"exitAnimation\",\n \"updateAnimation\",\n];\n\nfunction filterVNodeOnlyProps(name: string): boolean {\n return !vnodeOnlyProps.includes(name);\n}\n\nlet setProperties = (\n domNode: Node,\n properties: VNodeProperties | undefined,\n projectionOptions: ProjectionOptions\n) => {\n if (!properties) {\n return;\n }\n let eventHandlerInterceptor = projectionOptions.eventHandlerInterceptor;\n let propNames = Object.keys(properties).filter(filterVNodeOnlyProps);\n let propCount = propNames.length;\n for (let i = 0; i < propCount; i++) {\n let propName = propNames[i];\n let propValue = properties[propName];\n if (propName === \"className\") {\n throw new Error('Property \"className\" is not supported, use \"class\".');\n } else if (propName === \"class\") {\n toggleClasses(domNode as HTMLElement, propValue as string, true);\n } else if (propName === \"classes\") {\n // object with string keys and boolean values\n let classNames = Object.keys(propValue);\n let classNameCount = classNames.length;\n for (let j = 0; j < classNameCount; j++) {\n let className = classNames[j];\n if (propValue[className]) {\n (domNode as Element).classList.add(className);\n }\n }\n } else if (propName === \"styles\") {\n // object with string keys and string (!) values\n let styleNames = Object.keys(propValue);\n let styleCount = styleNames.length;\n for (let j = 0; j < styleCount; j++) {\n let styleName = styleNames[j];\n let styleValue = propValue[styleName];\n if (styleValue) {\n checkStyleValue(styleValue);\n projectionOptions.styleApplyer!(<HTMLElement>domNode, styleName, styleValue);\n }\n }\n } else if (propName === \"on\" && propValue) {\n // object with string keys and function values\n for (let [key, handler] of Object.entries(properties.on!)) {\n let listener: EventHandler | undefined =\n typeof handler === \"function\" ? handler : handler.listener;\n if (eventHandlerInterceptor) {\n listener = eventHandlerInterceptor(key, listener, domNode, properties);\n }\n if (listener) {\n domNode.addEventListener(\n key,\n listener,\n typeof handler === \"function\" ? undefined : handler.options\n );\n }\n }\n } else if (propName !== \"key\" && propValue !== null && propValue !== undefined) {\n let type = typeof propValue;\n if (type === \"function\") {\n if (propName.lastIndexOf(\"on\", 0) === 0) {\n // lastIndexOf(,0)===0 -> startsWith\n if (eventHandlerInterceptor) {\n propValue = eventHandlerInterceptor(propName, propValue, domNode, properties); // intercept eventhandlers\n }\n }\n (domNode as any)[propName] = propValue;\n } else if (projectionOptions.namespace === NAMESPACE_SVG) {\n if (propName === \"href\") {\n (domNode as Element).setAttributeNS(NAMESPACE_XLINK, propName, propValue);\n } else {\n // all SVG attributes are read-only in DOM, so...\n (domNode as Element).setAttribute(propName, propValue);\n }\n } else if (type === \"string\" && propName !== \"value\" && propName !== \"innerHTML\") {\n (domNode as Element).setAttribute(propName, propValue);\n } else {\n (domNode as any)[propName] = propValue;\n }\n }\n }\n};\n\nlet addChildren = (\n domNode: Node,\n children: VNode[] | undefined,\n projectionOptions: ProjectionOptions\n) => {\n if (!children) {\n return;\n }\n for (let child of children) {\n createDom(child, domNode, undefined, projectionOptions);\n }\n};\n\nexport let initPropertiesAndChildren = (\n domNode: Node,\n vnode: VNode,\n projectionOptions: ProjectionOptions\n): void => {\n addChildren(domNode, vnode.children, projectionOptions); // children before properties, needed for value property of <select>.\n if (vnode.text) {\n domNode.textContent = vnode.text;\n }\n setProperties(domNode, vnode.properties, projectionOptions);\n if (vnode.properties && vnode.properties.afterCreate) {\n vnode.properties.afterCreate.apply(vnode.properties.bind || vnode.properties, [\n domNode as Element,\n projectionOptions,\n vnode.vnodeSelector,\n vnode.properties,\n vnode.children,\n ]);\n }\n};\n\nexport let createDom = (\n vnode: VNode,\n parentNode: Node,\n insertBefore: Node | null | undefined,\n projectionOptions: ProjectionOptions\n): void => {\n let domNode: Node | undefined;\n let start = 0;\n let vnodeSelector = vnode.vnodeSelector;\n let doc = parentNode.ownerDocument!;\n if (vnodeSelector === \"\") {\n if (vnode.domNode) {\n vnode.domNode.nodeValue = vnode.text!;\n } else {\n domNode = vnode.domNode = doc.createTextNode(vnode.text!);\n if (insertBefore !== undefined) {\n parentNode.insertBefore(domNode, insertBefore);\n } else {\n parentNode.appendChild(domNode);\n }\n }\n } else {\n for (let i = 0; i <= vnodeSelector.length; ++i) {\n let c = vnodeSelector.charAt(i);\n if (i === vnodeSelector.length || c === \".\" || c === \"#\") {\n let type = vnodeSelector.charAt(start - 1);\n let found = vnodeSelector.slice(start, i);\n if (type === \".\") {\n (domNode! as HTMLElement).classList.add(found);\n } else if (type === \"#\") {\n (domNode! as Element).id = found;\n } else {\n if (found === \"svg\") {\n projectionOptions = extend(projectionOptions, {\n namespace: NAMESPACE_SVG,\n });\n }\n if (projectionOptions.namespace !== undefined) {\n domNode = vnode.domNode = doc.createElementNS(projectionOptions.namespace, found);\n } else {\n domNode = vnode.domNode =\n vnode.domNode ||\n (vnode.properties?.is\n ? doc.createElement(found, { is: vnode.properties.is })\n : doc.createElement(found));\n if (found === \"input\" && vnode.properties && vnode.properties.type !== undefined) {\n // IE8 and older don't support setting input type after the DOM Node has been added to the document\n (domNode as Element).setAttribute(\"type\", vnode.properties.type);\n }\n }\n if (insertBefore !== undefined) {\n parentNode.insertBefore(domNode, insertBefore);\n } else if (domNode.parentNode !== parentNode) {\n parentNode.appendChild(domNode);\n }\n }\n start = i + 1;\n }\n }\n initPropertiesAndChildren(domNode!, vnode, projectionOptions);\n }\n};\n\nlet updateDom: (\n previous: VNode,\n vnode: VNode,\n projectionOptions: ProjectionOptions,\n parentNode: Node,\n oldChildren: VNode[]\n) => boolean;\n\n/**\n * Adds or removes classes from an Element\n * @param domNode the element\n * @param classes a string separated list of classes\n * @param on true means add classes, false means remove\n */\nlet toggleClasses = (domNode: HTMLElement, classes: string | null | undefined, on: boolean) => {\n if (!classes) {\n return;\n }\n classes.split(\" \").forEach((classToToggle) => {\n if (classToToggle) {\n domNode.classList.toggle(classToToggle, on);\n }\n });\n};\n\nlet updateProperties = (\n domNode: Node,\n previousProperties: VNodeProperties | undefined,\n properties: VNodeProperties | undefined,\n projectionOptions: ProjectionOptions\n) => {\n if (!properties) {\n return;\n }\n let propertiesUpdated = false;\n\n let propNames = Object.keys(properties).filter(filterVNodeOnlyProps);\n let propCount = propNames.length;\n for (let i = 0; i < propCount; i++) {\n let propName = propNames[i];\n // assuming that properties will be nullified instead of missing is by design\n let propValue = properties[propName];\n let previousValue = previousProperties![propName];\n if (propName === \"class\") {\n if (previousValue !== propValue) {\n toggleClasses(domNode as HTMLElement, previousValue, false);\n toggleClasses(domNode as HTMLElement, propValue, true);\n }\n } else if (propName === \"classes\") {\n let classList = (domNode as Element).classList;\n let classNames = Object.keys(propValue);\n let classNameCount = classNames.length;\n for (let j = 0; j < classNameCount; j++) {\n let className = classNames[j];\n let on = !!propValue[className];\n let previousOn = !!previousValue[className];\n if (on === previousOn) {\n continue;\n }\n propertiesUpdated = true;\n if (on) {\n classList.add(className);\n } else {\n classList.remove(className);\n }\n }\n } else if (propName === \"styles\") {\n let styleNames = Object.keys(propValue);\n let styleCount = styleNames.length;\n for (let j = 0; j < styleCount; j++) {\n let styleName = styleNames[j];\n let newStyleValue = propValue[styleName];\n let oldStyleValue = previousValue[styleName];\n if (newStyleValue === oldStyleValue) {\n continue;\n }\n propertiesUpdated = true;\n if (newStyleValue) {\n checkStyleValue(newStyleValue);\n projectionOptions.styleApplyer!(domNode as HTMLElement, styleName, newStyleValue);\n } else {\n projectionOptions.styleApplyer!(domNode as HTMLElement, styleName, \"\");\n }\n }\n } else {\n if (!propValue && typeof previousValue === \"string\") {\n propValue = \"\";\n }\n if (propName === \"value\") {\n // value can be manipulated by the user directly and using event.preventDefault() is not an option\n let domValue = (domNode as any)[propName];\n if (\n domValue !== propValue && // The 'value' in the DOM tree !== newValue\n propValue !== previousValue // Only update the value if the vdom changed\n ) {\n // The edge cases are described in the tests\n (domNode as any)[propName] = propValue; // Reset the value, even if the virtual DOM did not change\n } // else do not update the domNode, otherwise the cursor position would be changed\n if (propValue !== previousValue) {\n propertiesUpdated = true;\n }\n } else if (propValue !== previousValue) {\n let type = typeof propValue;\n if (type !== \"function\" || !projectionOptions.eventHandlerInterceptor) {\n // Function updates are expected to be handled by the EventHandlerInterceptor\n if (projectionOptions.namespace === NAMESPACE_SVG) {\n if (propName === \"href\") {\n (domNode as Element).setAttributeNS(NAMESPACE_XLINK, propName, propValue);\n } else {\n // all SVG attributes are read-only in DOM, so...\n (domNode as Element).setAttribute(propName, propValue);\n }\n } else if (type === \"string\" && propName !== \"innerHTML\") {\n if (propName === \"role\" && propValue === \"\") {\n (domNode as any).removeAttribute(propName);\n } else {\n (domNode as Element).setAttribute(propName, propValue);\n }\n } else if ((domNode as any)[propName] !== propValue) {\n // Comparison is here for side-effects in Edge with scrollLeft and scrollTop\n (domNode as any)[propName] = propValue;\n }\n\n propertiesUpdated = true;\n }\n }\n }\n }\n return propertiesUpdated;\n};\n\nlet updateChildren = (\n vnode: VNode,\n domNode: Node,\n oldChildren: VNode[] | undefined,\n newChildren: VNode[] | undefined,\n projectionOptions: ProjectionOptions\n) => {\n if (oldChildren === newChildren) {\n return false;\n }\n oldChildren = oldChildren || emptyArray;\n newChildren = newChildren || emptyArray;\n let oldChildrenLength = oldChildren.length;\n let newChildrenLength = newChildren.length;\n\n let oldIndex = 0;\n let newIndex = 0;\n let i: number;\n let textUpdated = false;\n while (newIndex < newChildrenLength) {\n let oldChild = oldIndex < oldChildrenLength ? oldChildren[oldIndex] : undefined;\n let newChild = newChildren[newIndex];\n if (oldChild !== undefined && same(oldChild, newChild)) {\n textUpdated =\n updateDom(oldChild, newChild, projectionOptions, domNode, oldChildren) || textUpdated;\n oldIndex++;\n } else {\n let findOldIndex = findIndexOfChild(oldChildren, newChild, oldIndex + 1);\n if (findOldIndex >= 0) {\n // Remove preceding missing children\n for (i = oldIndex; i < findOldIndex; i++) {\n nodeToRemove(oldChildren[i]);\n checkDistinguishable(oldChildren, i, vnode, \"removed\");\n }\n textUpdated =\n updateDom(oldChildren[findOldIndex], newChild, projectionOptions, domNode, oldChildren) ||\n textUpdated;\n oldIndex = findOldIndex + 1;\n } else {\n // New child\n createDom(\n newChild,\n domNode,\n oldIndex < oldChildrenLength ? oldChildren[oldIndex].domNode : undefined,\n projectionOptions\n );\n nodeAdded(newChild);\n checkDistinguishable(newChildren, newIndex, vnode, \"added\");\n }\n }\n newIndex++;\n }\n if (oldChildrenLength > oldIndex) {\n // Remove child fragments\n for (i = oldIndex; i < oldChildrenLength; i++) {\n nodeToRemove(oldChildren[i]);\n checkDistinguishable(oldChildren, i, vnode, \"removed\");\n }\n }\n return textUpdated;\n};\n\nupdateDom = (previous, vnode, projectionOptions, parentNode, oldChildren) => {\n let domNode = previous.domNode!;\n let textUpdated = false;\n if (previous === vnode) {\n return false; // By contract, VNode objects may not be modified anymore after passing them to maquette\n }\n let updated = false;\n if (vnode.vnodeSelector === \"\") {\n if (vnode.text !== previous.text) {\n let newTextNode = domNode.ownerDocument!.createTextNode(vnode.text!);\n try {\n parentNode.replaceChild(newTextNode, domNode);\n } catch (e) {\n // Text nodes can be substituted by google translate\n parentNode.replaceChild(newTextNode, parentNode.childNodes[oldChildren.indexOf(previous)]);\n }\n vnode.domNode = newTextNode;\n textUpdated = true;\n return textUpdated;\n }\n vnode.domNode = domNode;\n } else {\n if (vnode.vnodeSelector.lastIndexOf(\"svg\", 0) === 0) {\n // lastIndexOf(needle,0)===0 means StartsWith\n projectionOptions = extend(projectionOptions, {\n namespace: NAMESPACE_SVG,\n });\n }\n if (previous.text !== vnode.text) {\n updated = true;\n if (vnode.text === undefined) {\n domNode.removeChild(domNode.firstChild!); // the only textnode presumably\n } else {\n domNode.textContent = vnode.text;\n }\n }\n vnode.domNode = domNode;\n updated =\n updateChildren(vnode, domNode, previous.children, vnode.children, projectionOptions) ||\n updated;\n updated =\n updateProperties(domNode, previous.properties, vnode.properties, projectionOptions) ||\n updated;\n if (vnode.properties && vnode.properties.afterUpdate) {\n vnode.properties.afterUpdate.apply(vnode.properties.bind || vnode.properties, [\n <Element>domNode,\n projectionOptions,\n vnode.vnodeSelector,\n vnode.properties,\n vnode.children,\n ]);\n }\n }\n if (updated && vnode.properties && vnode.properties.updateAnimation) {\n vnode.properties.updateAnimation(<Element>domNode, vnode.properties, previous.properties);\n }\n return textUpdated;\n};\n\nexport let createProjection = (vnode: VNode, projectionOptions: ProjectionOptions): Projection => {\n return {\n getLastRender: () => vnode,\n update: (updatedVnode: VNode) => {\n if (vnode.vnodeSelector !== updatedVnode.vnodeSelector) {\n throw new Error(\n \"The selector for the root VNode may not be changed. (consider using dom.merge and add one extra level to the virtual DOM)\"\n );\n }\n let previousVNode = vnode;\n vnode = updatedVnode;\n updateDom(\n previousVNode,\n updatedVnode,\n projectionOptions,\n previousVNode.domNode!.parentNode!,\n [previousVNode]\n );\n },\n domNode: <Element>vnode.domNode,\n };\n};\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "maquette",
|
|
3
|
-
"version": "4.1.
|
|
3
|
+
"version": "4.1.3",
|
|
4
4
|
"description": "Minimalistic Virtual DOM implementation with support for animated transitions.",
|
|
5
5
|
"homepage": "https://maquettejs.org/",
|
|
6
6
|
"keywords": [
|
|
@@ -29,6 +29,7 @@
|
|
|
29
29
|
"dist": "tsc -p ./src/tsconfig.json && tsc -p ./examples/tsconfig.json && rollup -c --bundleConfigAsCjs && uglifyjs ./dist/maquette.umd.js -c unsafe=true,unsafe_comps=true,unsafe_math=true,passes=3 -m -o ./dist/maquette.umd.min.js",
|
|
30
30
|
"start": "npm -s run dist && npx http-server . -p 8080 -o",
|
|
31
31
|
"test": "tsa ci",
|
|
32
|
+
"test-raw": "npx mocha test/**/*-tests.ts -r ts-node/register",
|
|
32
33
|
"ci": "tsa ci && npm -s run dist && ts-node ./tools/check-file-size",
|
|
33
34
|
"publish-website": "cd website && npm install --no-optional --force && npm run deploy",
|
|
34
35
|
"test-also-with-browser": "npm run dist && cd examples/todomvc && npm install --no-save bower && bower install && cd ../../browser-tests && npm install && npm test"
|