maquette 4.1.1 → 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.
@@ -145,7 +145,7 @@ var setProperties = function (domNode, properties, projectionOptions) {
145
145
  var eventHandlerInterceptor = projectionOptions.eventHandlerInterceptor;
146
146
  var propNames = Object.keys(properties).filter(filterVNodeOnlyProps);
147
147
  var propCount = propNames.length;
148
- var _loop_1 = function (i) {
148
+ for (var i = 0; i < propCount; i++) {
149
149
  var propName = propNames[i];
150
150
  var propValue = properties[propName];
151
151
  if (propName === "className") {
@@ -199,16 +199,6 @@ var setProperties = function (domNode, properties, projectionOptions) {
199
199
  if (eventHandlerInterceptor) {
200
200
  propValue = eventHandlerInterceptor(propName, propValue, domNode, properties); // intercept eventhandlers
201
201
  }
202
- if (propName === "oninput") {
203
- (function () {
204
- // record the evt.target.value, because IE and Edge sometimes do a requestAnimationFrame between changing value and running oninput
205
- var oldPropValue = propValue;
206
- propValue = function (evt) {
207
- oldPropValue.apply(this, [evt]);
208
- evt.target["oninput-value"] = evt.target.value; // may be HTMLTextAreaElement as well
209
- };
210
- })();
211
- }
212
202
  }
213
203
  domNode[propName] = propValue;
214
204
  }
@@ -228,9 +218,6 @@ var setProperties = function (domNode, properties, projectionOptions) {
228
218
  domNode[propName] = propValue;
229
219
  }
230
220
  }
231
- };
232
- for (var i = 0; i < propCount; i++) {
233
- _loop_1(i);
234
221
  }
235
222
  };
236
223
  var addChildren = function (domNode, children, projectionOptions) {
@@ -406,13 +393,10 @@ var updateProperties = function (domNode, previousProperties, properties, projec
406
393
  // value can be manipulated by the user directly and using event.preventDefault() is not an option
407
394
  var domValue = domNode[propName];
408
395
  if (domValue !== propValue && // The 'value' in the DOM tree !== newValue
409
- (domNode["oninput-value"]
410
- ? domValue === domNode["oninput-value"] // If the last reported value to 'oninput' does not match domValue, do nothing and wait for oninput
411
- : propValue !== previousValue) // Only update the value if the vdom changed
396
+ propValue !== previousValue // Only update the value if the vdom changed
412
397
  ) {
413
398
  // The edge cases are described in the tests
414
399
  domNode[propName] = propValue; // Reset the value, even if the virtual DOM did not change
415
- domNode["oninput-value"] = undefined;
416
400
  } // else do not update the domNode, otherwise the cursor position would be changed
417
401
  if (propValue !== previousValue) {
418
402
  propertiesUpdated = true;
@@ -466,7 +450,8 @@ var updateChildren = function (vnode, domNode, oldChildren, newChildren, project
466
450
  var oldChild = oldIndex < oldChildrenLength ? oldChildren[oldIndex] : undefined;
467
451
  var newChild = newChildren[newIndex];
468
452
  if (oldChild !== undefined && same(oldChild, newChild)) {
469
- textUpdated = updateDom(oldChild, newChild, projectionOptions) || textUpdated;
453
+ textUpdated =
454
+ updateDom(oldChild, newChild, projectionOptions, domNode, oldChildren) || textUpdated;
470
455
  oldIndex++;
471
456
  }
472
457
  else {
@@ -478,7 +463,8 @@ var updateChildren = function (vnode, domNode, oldChildren, newChildren, project
478
463
  checkDistinguishable(oldChildren, i, vnode, "removed");
479
464
  }
480
465
  textUpdated =
481
- updateDom(oldChildren[findOldIndex], newChild, projectionOptions) || textUpdated;
466
+ updateDom(oldChildren[findOldIndex], newChild, projectionOptions, domNode, oldChildren) ||
467
+ textUpdated;
482
468
  oldIndex = findOldIndex + 1;
483
469
  }
484
470
  else {
@@ -499,7 +485,7 @@ var updateChildren = function (vnode, domNode, oldChildren, newChildren, project
499
485
  }
500
486
  return textUpdated;
501
487
  };
502
- updateDom = function (previous, vnode, projectionOptions) {
488
+ updateDom = function (previous, vnode, projectionOptions, parentNode, oldChildren) {
503
489
  var domNode = previous.domNode;
504
490
  var textUpdated = false;
505
491
  if (previous === vnode) {
@@ -509,7 +495,13 @@ updateDom = function (previous, vnode, projectionOptions) {
509
495
  if (vnode.vnodeSelector === "") {
510
496
  if (vnode.text !== previous.text) {
511
497
  var newTextNode = domNode.ownerDocument.createTextNode(vnode.text);
512
- domNode.parentNode.replaceChild(newTextNode, domNode);
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
+ }
513
505
  vnode.domNode = newTextNode;
514
506
  textUpdated = true;
515
507
  return textUpdated;
@@ -563,7 +555,7 @@ var createProjection = function (vnode, projectionOptions) {
563
555
  }
564
556
  var previousVNode = vnode;
565
557
  vnode = updatedVnode;
566
- updateDom(previousVNode, updatedVnode, projectionOptions);
558
+ updateDom(previousVNode, updatedVnode, projectionOptions, previousVNode.domNode.parentNode, [previousVNode]);
567
559
  },
568
560
  domNode: vnode.domNode,
569
561
  };
@@ -149,7 +149,7 @@
149
149
  var eventHandlerInterceptor = projectionOptions.eventHandlerInterceptor;
150
150
  var propNames = Object.keys(properties).filter(filterVNodeOnlyProps);
151
151
  var propCount = propNames.length;
152
- var _loop_1 = function (i) {
152
+ for (var i = 0; i < propCount; i++) {
153
153
  var propName = propNames[i];
154
154
  var propValue = properties[propName];
155
155
  if (propName === "className") {
@@ -203,16 +203,6 @@
203
203
  if (eventHandlerInterceptor) {
204
204
  propValue = eventHandlerInterceptor(propName, propValue, domNode, properties); // intercept eventhandlers
205
205
  }
206
- if (propName === "oninput") {
207
- (function () {
208
- // record the evt.target.value, because IE and Edge sometimes do a requestAnimationFrame between changing value and running oninput
209
- var oldPropValue = propValue;
210
- propValue = function (evt) {
211
- oldPropValue.apply(this, [evt]);
212
- evt.target["oninput-value"] = evt.target.value; // may be HTMLTextAreaElement as well
213
- };
214
- })();
215
- }
216
206
  }
217
207
  domNode[propName] = propValue;
218
208
  }
@@ -232,9 +222,6 @@
232
222
  domNode[propName] = propValue;
233
223
  }
234
224
  }
235
- };
236
- for (var i = 0; i < propCount; i++) {
237
- _loop_1(i);
238
225
  }
239
226
  };
240
227
  var addChildren = function (domNode, children, projectionOptions) {
@@ -410,13 +397,10 @@
410
397
  // value can be manipulated by the user directly and using event.preventDefault() is not an option
411
398
  var domValue = domNode[propName];
412
399
  if (domValue !== propValue && // The 'value' in the DOM tree !== newValue
413
- (domNode["oninput-value"]
414
- ? domValue === domNode["oninput-value"] // If the last reported value to 'oninput' does not match domValue, do nothing and wait for oninput
415
- : propValue !== previousValue) // Only update the value if the vdom changed
400
+ propValue !== previousValue // Only update the value if the vdom changed
416
401
  ) {
417
402
  // The edge cases are described in the tests
418
403
  domNode[propName] = propValue; // Reset the value, even if the virtual DOM did not change
419
- domNode["oninput-value"] = undefined;
420
404
  } // else do not update the domNode, otherwise the cursor position would be changed
421
405
  if (propValue !== previousValue) {
422
406
  propertiesUpdated = true;
@@ -470,7 +454,8 @@
470
454
  var oldChild = oldIndex < oldChildrenLength ? oldChildren[oldIndex] : undefined;
471
455
  var newChild = newChildren[newIndex];
472
456
  if (oldChild !== undefined && same(oldChild, newChild)) {
473
- textUpdated = updateDom(oldChild, newChild, projectionOptions) || textUpdated;
457
+ textUpdated =
458
+ updateDom(oldChild, newChild, projectionOptions, domNode, oldChildren) || textUpdated;
474
459
  oldIndex++;
475
460
  }
476
461
  else {
@@ -482,7 +467,8 @@
482
467
  checkDistinguishable(oldChildren, i, vnode, "removed");
483
468
  }
484
469
  textUpdated =
485
- updateDom(oldChildren[findOldIndex], newChild, projectionOptions) || textUpdated;
470
+ updateDom(oldChildren[findOldIndex], newChild, projectionOptions, domNode, oldChildren) ||
471
+ textUpdated;
486
472
  oldIndex = findOldIndex + 1;
487
473
  }
488
474
  else {
@@ -503,7 +489,7 @@
503
489
  }
504
490
  return textUpdated;
505
491
  };
506
- updateDom = function (previous, vnode, projectionOptions) {
492
+ updateDom = function (previous, vnode, projectionOptions, parentNode, oldChildren) {
507
493
  var domNode = previous.domNode;
508
494
  var textUpdated = false;
509
495
  if (previous === vnode) {
@@ -513,7 +499,13 @@
513
499
  if (vnode.vnodeSelector === "") {
514
500
  if (vnode.text !== previous.text) {
515
501
  var newTextNode = domNode.ownerDocument.createTextNode(vnode.text);
516
- domNode.parentNode.replaceChild(newTextNode, domNode);
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
+ }
517
509
  vnode.domNode = newTextNode;
518
510
  textUpdated = true;
519
511
  return textUpdated;
@@ -567,7 +559,7 @@
567
559
  }
568
560
  var previousVNode = vnode;
569
561
  vnode = updatedVnode;
570
- updateDom(previousVNode, updatedVnode, projectionOptions);
562
+ updateDom(previousVNode, updatedVnode, projectionOptions, previousVNode.domNode.parentNode, [previousVNode]);
571
563
  },
572
564
  domNode: vnode.domNode,
573
565
  };
@@ -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 n={};return Object.keys(t).forEach(function(e){n[e]=t[e]}),r&&Object.keys(r).forEach(function(e){n[e]=r[e]}),n}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 n(e){i.push(e),d||(d=!0,"undefined"!=typeof window&&"requestIdleCallback"in window?window.requestIdleCallback(r,{timeout:16}):setTimeout(r,16))}var o="http://www.w3.org/",S="".concat(o,"2000/svg"),w="".concat(o,"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 n=r;n<e.length;n++)if(h(e[n],t))return n;return-1},g=function(e,t,r,n){var o=e[t];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!==t){var a=e[d];if(h(a,o))throw{error:Error("".concat(r.vnodeSelector," had a ").concat(o.vnodeSelector," child ").concat("added"===n?n:"removed",", but there is now more than one. You must add unique key properties to make them distinguishable.")),parentNode:r,childNode:o}}}},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),n(e))},e.properties)}t.parentNode&&(t.parentNode.removeChild(t),n(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),s(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 p(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)");x(t,t=e,r)},domNode:t.domNode}}function u(e){return l(A,e)}var s=function(g,y,N){if(y)for(var b=N.eventHandlerInterceptor,x=Object.keys(y).filter(k),e=x.length,A=0;A<e;A++)!function(){var e,t,r=x[A],n=y[r];if("className"===r)throw Error('Property "className" is not supported, use "class".');if("class"===r)C(g,n,!0);else if("classes"===r)for(var o=Object.keys(n),i=o.length,d=0;d<i;d++){var a=o[d];n[a]&&g.classList.add(a)}else if("styles"===r)for(var p=Object.keys(n),s=p.length,d=0;d<s;d++){var c=p[d],l=n[c];l&&(E(l),N.styleApplyer(g,c,l))}else if("on"===r&&n)for(var f=0,u=Object.entries(y.on);f<u.length;f++){var v=u[f],h=v[0],v=v[1],m="function"==typeof v?v:v.listener;(m=b?b(h,m,g,y):m)&&g.addEventListener(h,m,"function"==typeof v?void 0:v.options)}else"key"!==r&&null!=n&&("function"==(e=typeof n)?(r.lastIndexOf("on",0)||(b&&(n=b(r,n,g,y)),"oninput"===r&&(t=n,n=function(e){t.call(this,e),e.target["oninput-value"]=e.target.value})),g[r]=n):N.namespace===S?"href"===r?g.setAttributeNS(w,r,n):g.setAttribute(r,n):"string"==e&&"value"!==r&&"innerHTML"!==r?g.setAttribute(r,n):g[r]=n)}()},c=function(e,t,r){if(t)for(var n=0,o=t;n<o.length;n++){var i=o[n];b(i,e,void 0,r)}},b=function(e,t,r,n){var o,i=0,d=e.vnodeSelector,a=t.ownerDocument;if(""===d)e.domNode?e.domNode.nodeValue=e.text:(o=e.domNode=a.createTextNode(e.text),void 0!==r?t.insertBefore(o,r):t.appendChild(o));else{for(var p=0;p<=d.length;++p){var s,c=d[0|p]||"";p!==d.length&&"."!=c&&"#"!=c||(c=d[0|i-1]||"",s=d.slice(i,p),"."==c?o.classList.add(s):"#"==c?o.id=s:(void 0!==(n="svg"===s?l(n,{namespace:S}):n).namespace?o=e.domNode=a.createElementNS(n.namespace,s):(o=e.domNode=e.domNode||(null!=(c=e.properties)&&c.is?a.createElement(s,{is:e.properties.is}):a.createElement(s)),"input"===s&&e.properties&&void 0!==e.properties.type&&o.setAttribute("type",e.properties.type)),void 0!==r?t.insertBefore(o,r):o.parentNode!==t&&t.appendChild(o)),i=p+1)}f(o,e,n)}},C=function(t,e,r){e&&e.split(" ").forEach(function(e){e&&t.classList.toggle(e,r)})},x=function(e,t,r){var n=e.domNode;if(e!==t){var o,i=!1;if(""===t.vnodeSelector){if(t.text!==e.text)return o=n.ownerDocument.createTextNode(t.text),n.parentNode.replaceChild(o,n),t.domNode=o,!0;t.domNode=n}else t.vnodeSelector.lastIndexOf("svg",0)||(r=l(r,{namespace:S})),e.text!==t.text&&(i=!0,void 0===t.text?n.removeChild(n.firstChild):n.textContent=t.text),t.domNode=n,i=function(e,t,r,n,o){if(r===n)return!1;for(var i,d=(r=r||v).length,a=(n=n||v).length,p=0,s=0,c=!1;s<a;){var l=p<d?r[p]:void 0,f=n[s];if(void 0!==l&&h(l,f))c=x(l,f,o)||c,p++;else{var u=m(r,f,p+1);if(u<0)b(f,t,p<d?r[p].domNode:void 0,o),y(f),g(n,s,e,"added");else{for(i=p;i<u;i++)N(r[i]),g(r,i,e,"removed");c=x(r[u],f,o)||c,p=u+1}}s++}if(p<d)for(i=p;i<d;i++)N(r[i]),g(r,i,e,"removed");return c}(t,n,e.children,t.children,r)||i,i=function(e,t,r,n){if(r){for(var o=!1,i=Object.keys(r).filter(k),d=i.length,a=0;a<d;a++){var p,s=i[a],c=r[s],l=t[s];if("class"===s)l!==c&&(C(e,l,!1),C(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]&&(o=!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]&&(o=!0,x?(E(x),n.styleApplyer(e,b,x)):n.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&&(o=!0)):c===l||"function"==(p=typeof c)&&n.eventHandlerInterceptor||(n.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),o=!0)}return o}}(n,e.properties,t.properties,r)||i,t.properties&&t.properties.afterUpdate&&t.properties.afterUpdate.call(t.properties.bind||t.properties,n,r,t.vnodeSelector,t.properties,t.children);i&&t.properties&&t.properties.updateAnimation&&t.properties.updateAnimation(n,t.properties,e.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),p(e,t)},append:function(e,t,r){return r=u(r),b(t,e,void 0,r),p(t,r)},insertBefore:function(e,t,r){return r=u(r),b(t,e.parentNode,e,r),p(t,r)},merge:function(e,t,r){return r=u(r),f(t.domNode=e,t,r),p(t,r)},replace:function(e,t,r){return r=u(r),b(t,e.parentNode,e,r),e.parentNode.removeChild(e),p(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 n,o;return{invalidate:function(){n=o=void 0},result:function(e,t){if(n)for(var r=0;r<e.length;r++)n[r]!==e[r]&&(o=void 0);return o||(o=t(),n=e),o}}},e.createMapping=function(c,l,f){var u=[],v=[];return{results:v,map:function(e){for(var t=e.map(c),r=v.slice(),n=0,o=0;o<e.length;o++){var i=e[o],d=t[o];if(d===u[n])v[o]=r[n],f(i,r[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]=r[s],f(e[o],r[s],o),n=1+s,a=!0;break}}a||(v[o]=l(i,o))}}v.length=e.length,u=t}}},e.createProjector=function(e){function r(e,t,r){var i,d,a;function o(e){a("domEvent",e);var t,r,n=i,o=function(e,t){for(var r=[];e&&e!==t;)r.push(e),e=e.parentNode;return r}(e.currentTarget,n.domNode),n=(o.reverse(),n=n.getLastRender(),r=n,o.forEach(function(t){r=r&&r.children?j(r.children,function(e){return e.domNode===t}):void 0}),r);return d.scheduleRender(),n&&(t=(null!=(o=null!=(o=n.properties["on".concat(e.type)])?o:n.properties.on[e.type].listener)?o:n.properties.on[e.type]).apply(n.properties.bind||this,arguments)),a("domEventProcessed",e),t}p.eventHandlerInterceptor=(d=f,a=s,function(e,t,r,n){return o}),i=e(t,r(),p),c.push(i),l.push(r)}function t(){if(n=void 0,o){o=!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),o=!0}}var n,p=u(e),s=p.performanceLogger,o=!0,i=!1,c=[],l=[],f={renderNow:t,scheduleRender:function(){n||i||(n=requestAnimationFrame(t))},stop:function(){n&&(cancelAnimationFrame(n),n=void 0),i=!0},resume:function(){o=!(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 n,o;return r&&1===r.length&&"string"==typeof r[0]?n=r[0]:r&&(function e(t,r,n){for(var o=0,i=r.length;o<i;o++){var d=r[o];Array.isArray(d)?e(t,d,n):null!=d&&!1!==d&&("string"==typeof d&&(d={vnodeSelector:"",properties:void 0,children:void 0,text:d.toString(),domNode:null}),n.push(d))}}(e,r,o=[]),0===o.length)&&(o=void 0),{vnodeSelector:e,properties:t,children:o,text:""===n?void 0:n,domNode:null}}});
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}}});
@@ -143,7 +143,7 @@ var setProperties = function (domNode, properties, projectionOptions) {
143
143
  var eventHandlerInterceptor = projectionOptions.eventHandlerInterceptor;
144
144
  var propNames = Object.keys(properties).filter(filterVNodeOnlyProps);
145
145
  var propCount = propNames.length;
146
- var _loop_1 = function (i) {
146
+ for (var i = 0; i < propCount; i++) {
147
147
  var propName = propNames[i];
148
148
  var propValue = properties[propName];
149
149
  if (propName === "className") {
@@ -197,16 +197,6 @@ var setProperties = function (domNode, properties, projectionOptions) {
197
197
  if (eventHandlerInterceptor) {
198
198
  propValue = eventHandlerInterceptor(propName, propValue, domNode, properties); // intercept eventhandlers
199
199
  }
200
- if (propName === "oninput") {
201
- (function () {
202
- // record the evt.target.value, because IE and Edge sometimes do a requestAnimationFrame between changing value and running oninput
203
- var oldPropValue = propValue;
204
- propValue = function (evt) {
205
- oldPropValue.apply(this, [evt]);
206
- evt.target["oninput-value"] = evt.target.value; // may be HTMLTextAreaElement as well
207
- };
208
- })();
209
- }
210
200
  }
211
201
  domNode[propName] = propValue;
212
202
  }
@@ -226,9 +216,6 @@ var setProperties = function (domNode, properties, projectionOptions) {
226
216
  domNode[propName] = propValue;
227
217
  }
228
218
  }
229
- };
230
- for (var i = 0; i < propCount; i++) {
231
- _loop_1(i);
232
219
  }
233
220
  };
234
221
  var addChildren = function (domNode, children, projectionOptions) {
@@ -404,13 +391,10 @@ var updateProperties = function (domNode, previousProperties, properties, projec
404
391
  // value can be manipulated by the user directly and using event.preventDefault() is not an option
405
392
  var domValue = domNode[propName];
406
393
  if (domValue !== propValue && // The 'value' in the DOM tree !== newValue
407
- (domNode["oninput-value"]
408
- ? domValue === domNode["oninput-value"] // If the last reported value to 'oninput' does not match domValue, do nothing and wait for oninput
409
- : propValue !== previousValue) // Only update the value if the vdom changed
394
+ propValue !== previousValue // Only update the value if the vdom changed
410
395
  ) {
411
396
  // The edge cases are described in the tests
412
397
  domNode[propName] = propValue; // Reset the value, even if the virtual DOM did not change
413
- domNode["oninput-value"] = undefined;
414
398
  } // else do not update the domNode, otherwise the cursor position would be changed
415
399
  if (propValue !== previousValue) {
416
400
  propertiesUpdated = true;
@@ -464,7 +448,8 @@ var updateChildren = function (vnode, domNode, oldChildren, newChildren, project
464
448
  var oldChild = oldIndex < oldChildrenLength ? oldChildren[oldIndex] : undefined;
465
449
  var newChild = newChildren[newIndex];
466
450
  if (oldChild !== undefined && same(oldChild, newChild)) {
467
- textUpdated = updateDom(oldChild, newChild, projectionOptions) || textUpdated;
451
+ textUpdated =
452
+ updateDom(oldChild, newChild, projectionOptions, domNode, oldChildren) || textUpdated;
468
453
  oldIndex++;
469
454
  }
470
455
  else {
@@ -476,7 +461,8 @@ var updateChildren = function (vnode, domNode, oldChildren, newChildren, project
476
461
  checkDistinguishable(oldChildren, i, vnode, "removed");
477
462
  }
478
463
  textUpdated =
479
- updateDom(oldChildren[findOldIndex], newChild, projectionOptions) || textUpdated;
464
+ updateDom(oldChildren[findOldIndex], newChild, projectionOptions, domNode, oldChildren) ||
465
+ textUpdated;
480
466
  oldIndex = findOldIndex + 1;
481
467
  }
482
468
  else {
@@ -497,7 +483,7 @@ var updateChildren = function (vnode, domNode, oldChildren, newChildren, project
497
483
  }
498
484
  return textUpdated;
499
485
  };
500
- updateDom = function (previous, vnode, projectionOptions) {
486
+ updateDom = function (previous, vnode, projectionOptions, parentNode, oldChildren) {
501
487
  var domNode = previous.domNode;
502
488
  var textUpdated = false;
503
489
  if (previous === vnode) {
@@ -507,7 +493,13 @@ updateDom = function (previous, vnode, projectionOptions) {
507
493
  if (vnode.vnodeSelector === "") {
508
494
  if (vnode.text !== previous.text) {
509
495
  var newTextNode = domNode.ownerDocument.createTextNode(vnode.text);
510
- domNode.parentNode.replaceChild(newTextNode, domNode);
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
+ }
511
503
  vnode.domNode = newTextNode;
512
504
  textUpdated = true;
513
505
  return textUpdated;
@@ -561,7 +553,7 @@ export var createProjection = function (vnode, projectionOptions) {
561
553
  }
562
554
  var previousVNode = vnode;
563
555
  vnode = updatedVnode;
564
- updateDom(previousVNode, updatedVnode, projectionOptions);
556
+ updateDom(previousVNode, updatedVnode, projectionOptions, previousVNode.domNode.parentNode, [previousVNode]);
565
557
  },
566
558
  domNode: vnode.domNode,
567
559
  };
@@ -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 if (propName === \"oninput\") {\n (function () {\n // record the evt.target.value, because IE and Edge sometimes do a requestAnimationFrame between changing value and running oninput\n let oldPropValue = propValue;\n propValue = function (this: HTMLElement, evt: Event) {\n oldPropValue.apply(this, [evt]);\n (evt.target as any)[\"oninput-value\"] = (evt.target as HTMLInputElement).value; // may be HTMLTextAreaElement as well\n };\n })();\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 ((domNode as any)[\"oninput-value\"]\n ? domValue === (domNode as any)[\"oninput-value\"] // If the last reported value to 'oninput' does not match domValue, do nothing and wait for oninput\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 (domNode as any)[\"oninput-value\"] = undefined;\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.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"