Comparing version 0.9.0-alpha to 0.9.0-alpha2
@@ -1,1 +0,1 @@ | ||
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e=e||self).Brahmos={})}(this,function(e){"use strict";function v(e,t){var n=e;if(te(n)||Array.isArray(n)){var r=Array.isArray(n)?[]:{},o=t||r;if(Array.isArray(n))for(var i=n,a=function(e){for(var t={},n=0,r=e.length;n<r;n++){var o=e[n];t[Z(o,n)]=o}return t}(o),s=0,u=i.length;s<u;s++){var c=i[s],f=a[Z(c,s)];f&&v(c,f)}else if(n.__$isBrahmosTag$__){if(n.template!==o.template||n.element!==o.element)return;n.templateNode=o.templateNode,n.oldValues=o.values,o.isReused=!0;for(var l=0,p=n.values.length;l<p;l++){var d=o.values||[];v(n.values[l],d[l])}}else if(n.__$isBrahmosComponent$__){if(n.type!==o.type)return;n.componentInstance=o.componentInstance,o.isReused=!0}}}var _={key:1,ref:1},g={className:"class",htmlFor:"for",acceptCharset:"accept-charset",httpEquiv:"http-equiv"},h={doubleclick:"dblclick"},m=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|^--/i,y="http://www.w3.org/1999/xlink",b=new WeakMap;function C(e){var t=e.type,n=Y(e);return"input"!==n||"radio"!==t&&"checkbox"!==t?"input"===n||"select"===n||"textarea"===n?"value":void 0:"checked"}function N(r,o,i,a){o=o||{},Object.entries(r).forEach(function(e){var t=e[0],n=e[1],r=o[t];n!==r&&a(t,n,r)}),Object.entries(o).forEach(function(e){var t=e[0],n=e[1];void 0===r[t]&&a(t,i,n)})}function x(e,t,n,r,o){if(function(e){return 0===e.indexOf("on")}(t)){var i=function(e){return e.replace("on","").toLowerCase()}(t);if(i=function(e,t){var n=Y(t);return h[e]?h[e]:"input"===n&&"change"===e?"input":e}(i,e),r){var a=b.get(r)||r;e.removeEventListener(i,a)}if(n){var s=function(t,n){var e=b.get(n);if(e)return e;function r(){var e=t.checkedProp;e!==t.checked&&(t.checked=e)}function o(){var e=t.valueProp;e!==t.value&&(t.value=e)}var i=C(t);return e=function(e){if("checked"===i)void 0!==t.checkedProp&&requestAnimationFrame(r);else if("value"===i){void 0!==t.valueProp&&requestAnimationFrame(o)}n&&n.call(this,e)},b.set(n,e),e}(e,n);e.addEventListener(i,s)}}else if("style"===t){var u=e.style;N(n,r,"",function(e,t){"-"===e[0]?u.setProperty(e,t):u[e]="number"==typeof t&&!1===m.test(e)?t+"px":t})}else if("dangerouslySetInnerHTML"===t){var c=r&&r.__html,f=n&&n.__html;f!==c&&(e.innerHTML=null==f?"":f)}else if(t in e&&!o){var l=C(e);l?function(e,t,n,r){"checked"===e?"checked"===n?(t.checked=r,t.checkedProp=r):"defaultChecked"===n&&void 0===t.checkedProp?t.checked=r:t[n]=r:"value"===e&&("value"===n?(t.value=r,t.valueProp=r):"defaultValue"===n&&void 0===t.valueProp?t.value=r:t[n]=r)}(l,e,t,n):e[t]=null==n?"":n}else{var p=t.replace(/^xlink:?/,""),d=null==n||!1===n;t!==p?(p=p.toLowerCase(),d?e.removeAttributeNS(y,p):e.setAttributeNS(y,p,n)):d?e.removeAttribute(t):e.setAttribute(t,n)}}var S=/[<>"]/g,$=/(^|\s)([^\s"'=<]+)(?=[\s=>])/g,k="data-brahmos-attr",t="{{brahmos}}";function o(e){this.strings=e}o.prototype.create=function(e){e&&this.svgTemplate||this.template||(this.partsMeta=this.getPartsMeta(),this.createTemplate(e))},o.prototype.getPartsMeta=function(){for(var c,f,l=this.strings,p=[],d=[],e=function(e,t){for(var n=l[e],r=void 0,o=void 0,i=void 0,a=void 0,s=void 0,u=function(){var e=n.substring(a||0,s||n.length);p.push.apply(p,function(e){for(var t,n=[];null!==(t=$.exec(e));){t[2]&&n.push(t[2])}return n}(e))};null!==(r=S.exec(n));)"<"!==r[0]||f?'"'===r[0]?f=!f:c&&">"===r[0]&&!f&&(c=!1,s=r.index,void 0===a&&u()):(c=!0,p=[],a=r.index,s=void 0);c&&u(),c?o=!0:i=!0,e<t-1&&d.push({tagAttrs:p,attrIndex:p.length,isAttribute:o,isNode:i})},t=0,n=l.length;t<n;t++)e(t,n);return d},o.prototype.createTemplate=function(e){for(var t=this.partsMeta,n=this.strings,r=document.createElement("template"),o="",i=0,a=n.length-1;i<a;i++){var s=n[i];o=t[i].isNode?o+s+"\x3c!--{{brahmos}}--\x3e":o+s+k}o+=n[n.length-1],r.innerHTML=e?"<svg>"+o+"</svg>":o,e&&function(e){var t=e.parentNode;for(;e.firstChild;)t.insertBefore(e.firstChild,e);t.removeChild(e)}(r.content.firstChild),this[e?"svgTemplate":"template"]=r};var A=function(e,t){(this.templateResult=e).create(t),this.fragment=this.createNode(t),this.parts=this.getParts(),this.nodes=ee(this.fragment.childNodes)};A.prototype.createNode=function(e){var t=this.templateResult,n=t.template,r=t.svgTemplate,o=e?r:n;return document.importNode(o.content,!0)},A.prototype.createWalker=function(e){return document.createTreeWalker(e,NodeFilter.SHOW_ALL,function(e){var t=e.nodeType;return 1===t||8===t?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP},!1)},A.prototype.isBrahmosCommentNode=function(e){return e&&8===e.nodeType&&e.textContent===t},A.prototype.getParts=function(){for(var e=this.fragment,t=this.templateResult,n=this.isBrahmosCommentNode,r=t.partsMeta,o=this.createWalker(e),i=0,a=r[i],s=[],u=[],c=function(){a=r[++i]};o.nextNode();){var f=o.currentNode,l=f.nodeType,p=f.parentNode;if(1===l&&f.hasAttribute(k)){f.removeAttribute(k);for(var d=a.tagAttrs;a&&a.isAttribute&&a.tagAttrs===d;)s.push(Object.assign({},a,{node:f})),c()}else if(n(f)){var v=f.previousSibling,h=f.nextSibling;n(v)&&(v=ce(f)),n(h)&&(h=ce(f)),s.push(Object.assign({},a,{parentNode:p,previousSibling:v,nextSibling:h})),c(),u.push(f)}}return function(e){Array.isArray(e)||(e=[e]);for(var t=e.length-1;0<=t;t--){var n=e[t];n.parentNode.removeChild(n)}}(u),s},A.prototype.patchParts=function(e){var t=this.parts,n=e.parentNode,r=e.nextSibling,o=e.previousSibling;if(!this.patched){for(var i=0,a=t.length;i<a;i++){var s=t[i];s.isNode&&s.parentNode instanceof DocumentFragment&&(s.parentNode=n,s.nextSibling=s.nextSibling||r,s.previousSibling=s.previousSibling||o)}this.patched=!0}};var a,i=1;function s(t){return function(e){setTimeout(function(){t.context!==e&&t.__mounted&&(t.context=e,J(t))})}}function n(e){var t="cC"+i++,n=function(t){function e(e){t.call(this,e),this.subs=[]}return t&&(e.__proto__=t),((e.prototype=Object.create(t&&t.prototype)).constructor=e).prototype.shouldComponentUpdate=function(t){return this.props.value!==t.value&&this.subs.forEach(function(e){return e(t.value)}),!0},e.prototype.sub=function(e){var t=this.subs,n=s(e);t.push(n);var r=e.componentWillUnmount;e.componentWillUnmount=function(){t.splice(t.indexOf(n),1),r&&r()}},e.prototype.render=function(){return this.props.children},e}(Q);n.__ccId=t;var r=function(e){function t(){e.apply(this,arguments)}return e&&(t.__proto__=e),((t.prototype=Object.create(e&&e.prototype)).constructor=t).prototype.render=function(){return this.props.children(this.context)},t}(Q),o={id:t,defaultValue:e,Provider:n,Consumer:r};return r.contextType=o}function u(e,t){if(!e||!t||e.length!==t.length)return!0;for(var n=0,r=e.length;n<r;n++)if(e[n]!==t[n])return!0;return!1}function c(e,t,n){Object.is(t,n)||J(e)}function f(e,t,n){void 0===t&&(t=function(e){return!1}),void 0===n&&(n=function(e){return e});var r=a.pointer,o=a.hooks,i=o[r];return i&&!t(i)||(i=e(),o[r]=i),a.pointer+=1,n(i)}function r(e){var r=a;return f(function(){var n=[e,function(e){var t=n[0];n[0]=e,c(r,e,t)}];return n})}function l(e){return f(function(){return{current:e}})}function p(o,e,t){var i=a;return f(function(){var r=[t?t(e):e,function(e){var t=r[0],n=o(t,e);r[0]=n,c(i,n,t)}];return r})}function d(e,t){return f(function(){return{value:e(),dependencies:t}},function(e){return u(t,e.dependencies)},function(e){return e.value})}function E(e,t){return d(function(){return e},t)}function P(e,t){var n=a.pointer,r=a.hooks,o=r[n]||{},i=Object.assign({},o,{isDependenciesChanged:u(t,o.dependencies),dependencies:t,effect:function(){i.isDependenciesChanged&&e(i)}});r[n]=i,a.pointer+=1}function T(t,e){P(function(e){cancelAnimationFrame(e.animationFrame),e.animationFrame=requestAnimationFrame(function(){setTimeout(function(){e.cleanEffect=t()})})},e)}function B(t,e){P(function(e){e.cleanEffect=t()},e)}function O(e){var t=e.id,n=e.defaultValue,r=a.__context[t],o=r?r.props.value:n;return B(function(){if(r){var e=r.subs,t=s(a);return e.push(t),function(){e.splice(e.indexOf(t),1)}}},[]),a.context=o}function j(e){for(var t=e.hooks,n=0,r=t.length;n<r;n++){var o=t[n];o.effect&&o.effect()}}function w(e,t){for(var n=e.hooks,r=0,o=n.length;r<o;r++){var i=n[r];i.cleanEffect&&(i.isDependenciesChanged||t)&&i.cleanEffect()}}function R(n){return{hooks:[],__render:function(e){!function(e){(a=e).pointer=0,e.hooks=e.hooks||[]}(this);var t=n(e);return v(t,this.__nodes),this.__nodes=t}}}function F(r){function e(e){var t=e.ref,n=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&-1===t.indexOf(r)&&(n[r]=e[r]);return n}(e,["ref"]);return r(n,t)}return e.__isForwardRef=!0,e}function I(){return{current:null}}function L(e,t){var n=typeof e;"function"==n?e(t):"object"==n&&(e.current=t)}var M=[];function D(e,t){if(Object.is(e,t))return!0;if("object"!=typeof e||null===e||"object"!=typeof t||null===t)return!1;var n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(var o=0;o<n.length;o++)if(!hasOwnProperty.call(t,n[o])||!Object.is(e[n[o]],t[n[o]]))return!1;return!0}function H(e,t,n,r,o,i){var a=t.type,s=t.props;void 0===s&&(s={});var u=t.__$isBrahmosClassComponent$__,c=t.ref,f=!1,l=!0,p=t.componentInstance;p||((p=u?new a(s):R(a)).__part=e,t.componentInstance=p,f=!0),r=function(e,t,n){var r=e.__ccId,o=t.__context;if(!r)return n;if(o)return o;var i=Object.create(n);return i[r]=t,i}(a,p,r),p.__context=r,p.__componentNode=t;var d,v=p.__unCommittedState,h=p.shouldComponentUpdate,m=p.props,_=p.state;if(u){var g=v||_,y=!f&&"current"!==o;g=se(g,ue(a,"getDerivedStateFromProps",[s,g])),p instanceof X&&y&&(l=!D(g,_)||!D(s,m)),h&&l&&y&&(l=h.call(p,s,g));var b,C=a.contextType;if(C){var N=C.id,x=C.defaultValue,S=r[N];b=S?S.props.value:x,S&&f&&S.sub(p)}p.state=g,p.props=s,p.context=b,p.__unCommittedState=void 0,L(c,p),d=ue(p,"getSnapshotBeforeUpdate",[m,_])}return!l&&"all"!==o||function t(n,r,o,i,a,s,u,c){var e,f,l=r.type,p=r.componentInstance,d=r.props,v=r.__$isBrahmosClassComponent$__,h="all"===a,m=p.__nodes;h&&!i?(f=(e=function(e){for(var t,n;e&&(t=e.componentInstance)&&t.__nodes;)e=t.__nodes,n=t.__context;return{node:e,context:n}}(r)).node,o=e.context,m=f):f=p.__render(d),u||v||!i||w(p);try{p.__lastNode=q(n,f,m,o,h,s),p instanceof ge&&0<p.lazyElements.length&&p.state.resolved&&t(n,r,o,i,a,s,u,p.state.resolved=!1)}catch(e){if(!v||!c)throw e;var _=p.state,g=p.componentDidCatch,y=l.getDerivedStateFromError,b=ue(l,"getDerivedStateFromError",[d,_]);if(b&&(_=se(_,b),p.state=_,t(n,r,o,i,a,s,u,!1)),ue(p,"componentDidCatch",[e]),!g&&!y)throw e}}(e,t,r,l,o,i,f,!0),f?(t.mountHandler=function(){u?ue(p,"componentDidMount"):j(p),p.__mounted=!0},function(e){M.push(e)}(t.mountHandler)):u?ue(p,"componentDidUpdate",[m,_,d]):j(p),p.__lastNode}function U(e){var t=e.componentInstance,n=e.ref,r=e.mountHandler;if(t&&t.__mounted?e.__$isBrahmosClassComponent$__?(ue(t,"componentWillUnmount"),L(n,null)):w(t,!0):r&&function(e){var t=M.indexOf(e);-1!==t&&M.splice(t,1)}(e.mountHandler),Array.isArray(e))for(var o=0,i=e.length;o<i;o++)W(e[o]);else if(e.__$isBrahmosTag$__){for(var a=e.values,s=e.templateNode.parts,u=0,c=s.length;u<c;u++){var f=s[u],l=a[u];f.isNode&&W(l),f.isAttribute&&Object.entries(l).forEach(function(e){var t=e[0],n=e[1];"ref"===t&&L(n,null)})}e.templateNode=null}else e.__$isBrahmosComponent$__&&(W(t.__nodes),t.__mounted=!1,e.componentInstance=null)}function W(e,t){if(re(e)&&!e.isReused){var n=e.portalContainer;if(n&&(t={parentNode:n,isNode:!0}),U(e),t)ie(t.parentNode,t.previousSibling,t.nextSibling)}}function z(e,t,n,r){for(var o,i,a=t[e];te(a)&&!a.isReused;)W(a,{parentNode:n,previousSibling:r,nextSibling:(o=a,i=void 0,o.__$isBrahmosTag$__?i=oe(o.templateNode.nodes):o.__$isBrahmosComponent$__&&(i=o.componentInstance.__lastNode),i&&i.nextSibling)}),t.splice(e,1),a=t[e];return a}function V(e,t,n,r,o,i){var a,s=e.parentNode,u=e.previousSibling,c=e.nextSibling,f=t.templateNode,l=t.values,p=t.oldValues,d=t.__$isBrahmosTagElement$__,v=t.element;i=i||"svg"===v,f?d||f.patchParts(e):(a=!0,f=d?function(e,t){var n=e.element,r=e.values,o=t?document.createElementNS("http://www.w3.org/2000/svg",n):document.createElement(n);return{fragment:o,nodes:[o],parts:[{isAttribute:!0,tagAttrs:[],attrIndex:0,node:o},{parentNode:o,isNode:!0}],values:r}}(t,i):new A(t.template,i),t.templateNode=f),t!==n&&K(f.parts,l,p,r,!1,i),a&&(W(n,e),f.nodes=ae(s,c,f.fragment));var h=f.nodes[0],m=h&&h.previousSibling===u;return h&&o&&!m&&ae(s,c,f.nodes),oe(f.nodes)}function q(e,t,n,r,o,i){if(re(t)){if(Array.isArray(t))return function(e,t,n,r,o){void 0===n&&(n=[]);for(var i=e.parentNode,a=e.previousSibling,s=e.nextSibling,u=t.length,c=a,f=0;f<u;f++){var l=t[f],p=z(f,n,i,c),d=(ne(l)||l&&p&&l.key!==p.key)&&"all";c=q({parentNode:i,previousSibling:c,nextSibling:c?c.nextSibling:i.firstChild,isNode:!0},l,p,r,d,o)||c}for(var v=u,h=n.length;v<h;v++)W(n[v]);return ie(i,c,s),c}(e,t,n,r,i);if(t.__$isBrahmosComponent$__)return H(e,t,0,r,o,i);if(t.__$isBrahmosTag$__)return V(e,t,n,r,o,i);if(ne(t)&&(t!==n||o))return function(e,t,n){var r=e.parentNode,o=e.previousSibling,i=e.nextSibling,a=function(e,t,n){return t?t.nextSibling:n?n.previousSibling:e.firstChild}(r,o,null);return ne(n)&&a?a.textContent=t:(void 0!==n&&W(n,e),a=ae(r,i,t)),a}(e,t,n)}else void 0!==n&&W(n,e)}function K(f,l,p,d,v,h,e){void 0===p&&(p=[]);for(var t=function(e,t){var a=f[e],n=l[e],r=p[e],o=a.isAttribute,i=a.isNode;if(o){for(var s=a.node,u={};a&&s===a.node;)Object.entries(l[e]).forEach(function(e){var t,n,r=e[0],o=e[1],i=g[r];(t=a.tagAttrs,n=i,a.attrIndex<=t.lastIndexOf(n))||_[r]?"ref"===r&&L(o,s):u[r]=o}),a=f[++e];e--;var c=s.__dynamicAttributes||{};s.__dynamicAttributes=u,function(r,e,t,o){N(e,t,null,function(e,t,n){x(r,e,t,n,o)})}(s,u,c,h)}else i&&q(a,n,r,d,v,h);m=e},m=0,n=f.length;m<n;m++)t(m);e&&function(){for(var e=0,t=M.length;e<t;e++)M[e]();M=[]}()}function G(e,t){var n={parentNode:t,isNode:!0},r=t.__brahmosNode;return r&&v(e,r),K([n],[e],[],{},!1,!1,!0),(t.__brahmosNode=e).componentInstance}function J(e,t){K([e.__part],[e.__componentNode],[],e.__context,t,!1,!0)}var Q=function(e){this.props=e};Q.prototype.setState=function(e,t){var n=this,r=this.__unCommittedState||this.state||{};r=se(r,"function"==typeof e?e(r):e),this.__unCommittedState=r,this.__batchStateChange().then(function(){t&&t(n.state)})},Q.prototype.forceUpdate=function(e){J(this,"current"),e&&e(this.state)},Q.prototype.__batchStateChange=function(){var e=this;return this.__updatesPromise||(this.__updatesPromise=Promise.resolve().then(function(){e.__updatesPromise=null,e.__unCommittedState&&J(e)})),this.__updatesPromise},Q.prototype.__render=function(){var e=this.render();return v(e,this.__nodes),this.__nodes=e};var X=function(e){function t(){e.apply(this,arguments)}return e&&(t.__proto__=e),(t.prototype=Object.create(e&&e.prototype)).constructor=t}(Q);function Y(e){return e.nodeName.toLowerCase()}function Z(e,t){var n=e&&e.key;if(void 0===n&&e&&e.__$isBrahmosTag$__){for(var r=e.values,o=0,i=r.length;o<i;o++){var a=r[o];if(void 0!==a.key){n=a.key;break}}e.key=n}return(void 0!==n?n:t).toString()}function ee(e){return Array.prototype.slice.call(e)}function te(e){return e&&(e.__$isBrahmosComponent$__||e.__$isBrahmosTag$__)}function ne(e){return"string"==typeof e||"number"==typeof e}function re(e){return ne(e)||te(e)||Array.isArray(e)}function oe(e){return Array.isArray(e)?e[e.length-1]:e}function ie(e,t,n){var r;if(t||n)for(r=t?t.nextSibling:e.firstChild;r&&r!==n;){var o=r.nextSibling;e.removeChild(r),r=o}else e.innerHTML=""}function ae(e,t,n){void 0===t&&(t=null);var r=function(e){var t=e instanceof NodeList;if(e instanceof Node)return e;if(Array.isArray(e)||t){for(var n=document.createDocumentFragment(),r=0;e[r];)n.appendChild(e[r]),t||(r+=1);return n}return document.createTextNode(e.toString())}(n),o=r instanceof DocumentFragment?ee(r.childNodes):r;return e.insertBefore(r,t),o}function se(e,t){return t&&"object"==typeof t&&(e=Object.assign({},e,t)),e}function ue(e,t,n){if(e[t])return e[t].apply(e,n)}function ce(e){var t=e.parentNode,n=document.createTextNode("");return t.insertBefore(n,e),n}function fe(e,t,n){return{element:e,values:[t,n],__$isBrahmosTag$__:!0,__$isBrahmosTagElement$__:!0}}function le(e,t,n){if("string"==typeof e)return fe(e,t,n);var r=Object.assign({},e.defaultProps,function(e,t){for(var n={},r=Object.keys(e),o=0,i=r.length;o<i;o++){var a=r[o];t[a]||(n[a]=e[a])}return n}(t,{key:1,ref:!e.__isForwardRef}));r.children=n;var o=t.key,i=t.ref,a=function(e){return e.prototype instanceof Q}(e);return{type:e,props:r,key:o,ref:a?i:null,children:n,configs:t,__$isBrahmosComponent$__:!0,__$isBrahmosClassComponent$__:a,__$isBrahmosFunctionalComponent$__:!a}}function pe(e){if(te(e)){if(e.added){if(e.__$isBrahmosComponent$__)return le(e.type,e.configs,e.children);if(e.__$isBrahmosTagElement$__){var t=e.element,n=e.values;return fe(t,n[0],n[1])}return{template:e.template,values:pe(e.values),__$isBrahmosTag$__:!0}}return e.added=!0,e.__$isBrahmosTag$__&&e.values.forEach(pe),e}if(Array.isArray(e)){for(var r=[],o=0,i=e.length;o<i;o++)r.push(pe(e[o]));return r}return e}function de(e,t){return e.portalContainer=t,G(e,t),e}function ve(o){var i;return F(function(n,r){return React.createElement(_e,null,function(e){if(i)return React.createElement(i,Object.assign({},n,{ref:r}));var t=o();t.then(function(e){i=e.default||e}),e.push(t)})})}var he=n(),me=he.Provider,_e=he.Consumer,ge=function(t){function e(e){t.call(this,e),this.state={resolved:!0},this.lazyElements=[]}return t&&(e.__proto__=t),((e.prototype=Object.create(t&&t.prototype)).constructor=e).prototype.componentDidMount=function(){this.handlePromise()},e.prototype.componentDidUpdate=function(){this.handlePromise()},e.prototype.handlePromise=function(){var t=this,e=this.lazyElements;e.length&&Promise.all(e).then(function(e){t.lazyElements=[],t.setState({resolved:!0})})},e.prototype.render=function(){var e=this.lazyElements,t=this.props,n=t.fallback,r=t.children,o=this.state.resolved;return React.createElement(me,{value:e},o?r:n)},e}(Q),ye=new WeakMap;function be(e){for(var t=[],n=arguments.length-1;0<n--;)t[n]=arguments[n+1];var r=ye.get(e);return r||(r=new o(e),ye.set(e,r)),{template:r,values:t,__$isBrahmosTag$__:!0}}function Ce(e){return!!e.__brahmosNode&&(W(e.__brahmosNode,{parentNode:e}),!0)}var Ne={createElement:le,expression:pe,render:G,Component:Q,PureComponent:X,html:be,useState:r,useEffect:T,useRef:l,useReducer:p,useMemo:d,useCallback:E,useLayoutEffect:B,useContext:O,createContext:n,forwardRef:F,createRef:I,createPortal:de,unmountComponentAtNode:Ce,Suspense:ge,lazy:ve};e.Component=Q,e.PureComponent=X,e.Suspense=ge,e.createContext=n,e.createElement=le,e.createPortal=de,e.createRef=I,e.default=Ne,e.expression=pe,e.forwardRef=F,e.html=be,e.lazy=ve,e.render=G,e.unmountComponentAtNode=Ce,e.useCallback=E,e.useContext=O,e.useEffect=T,e.useLayoutEffect=B,e.useMemo=d,e.useReducer=p,e.useRef=l,e.useState=r,Object.defineProperty(e,"__esModule",{value:!0})}); | ||
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e=e||self).Brahmos={})}(this,(function(e){"use strict";var t={key:1,ref:1},n={className:"class",htmlFor:"for",acceptCharset:"accept-charset",httpEquiv:"http-equiv"},r={doubleclick:"dblclick"},o=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|^--/i,i="http://www.w3.org/1999/xlink";function a(e){return e.nodeName.toLowerCase()}function s(e){return null==e}var u=0;function c(){return u++}function d(e){e.__brahmosData={events:{}}}function f(e,t){var n,r={};for(n in e)"key"===n||"ref"===n&&!t||(r[n]=e[n]);return r}function p(e,t){for(var n=Object.keys(e),r=0,o=n.length;r<o;r++){var i=n[r];t(i,e[i])}}function l(e){Array.isArray(e)||(e=[e]);for(var t=e.length-1;t>=0;t--){var n=e[t];n.parentNode.removeChild(n)}}function h(e){return Array.prototype.slice.call(e)}function v(e,t,n){t=void 0===t?null:t;var r=function(e){var t=e instanceof NodeList;if(e instanceof Node)return e;if(Array.isArray(e)||t){for(var n=document.createDocumentFragment(),r=0;e[r];)n.appendChild(e[r]),t||(r+=1);return n}return document.createTextNode(e)}(n),o=r instanceof DocumentFragment?h(r.childNodes):r;return e.insertBefore(r,t),o}function m(e,t){return t?t.nextSibling:e.firstChild}function y(e,t,n){if(e[t])return e[t].apply(e,n)}function g(e){var t=e.parentNode,n=document.createTextNode("");return t.insertBefore(n,e),n}var b=Promise.resolve();function S(e){return b.then(e)}function T(){return c()+"-"+1e6*Math.random()}var _={transitionId:"",tryCount:0,transitionState:"timedOut"},C={transitionId:T(),tryCount:0,transitionState:"timedOut"};function I(e){var t=e.transitionState;return"start"===t||"resolved"===t||"timedOut"===t}function D(e){var t=e.transitionState;return"completed"===t||"timedOut"===t}function N(e,t){return t=t||_,e.root.currentTransition||t}function k(e){return e.pendingTransitions.find(I)}var w="js",x=_;function E(){return w}function U(){return x}function P(e,t){w=e,t(),S((function(){w="js"}))}function A(e,t){var n=x;x=e,P("transition",t),x=n}function F(){return"deferredUpdate"===w||"transition"===w?"deferred":"sync"}function M(e){return"deferred"===e?"pendingDeferredUpdates":"pendingSyncUpdates"}function O(e){var t=e.root.updateType,n=e.nodeInstance.__brahmosData,r=N(e).transitionId;return n[M(t)].filter((function(e){return e.transitionId===r}))}var j,L=Symbol("tag"),R=Symbol("tag-element"),H=Symbol("class-component"),V=Symbol("functional-component"),W=Symbol("attribute");function z(e){var t=e.nodeType;return t===L||t===R}function B(e){var t=e.nodeType;return t===H||t===V}function q(e){return"string"==typeof e||"number"==typeof e}function $(e){return!(s(e)||"boolean"==typeof e)}function G(e,t){var n=e&&e.key;if(""===n&&e&&z(e)){for(var r=e.values,o=0,i=r.length;o<i;o++){var a=r[o];if(void 0!==a.key){n=""+a.key;break}}e.key=void 0===n?"":""+n}return""===n?""+t:n}function J(e,t,n){return{nodeType:null,key:n,added:!1,ref:null,portalContainer:null,type:null,props:e,element:"",values:t,template:null}}function K(){return j}function Q(e){return"deferred"===e?"lastDeferredCompleteTime":"lastCompleteTime"}function X(e){return"deferred"===e?"deferredUpdateTime":"updateTime"}function Y(e,t){for(var n=X(t),r=c();e;)e[n]=r,e=e.parent}function Z(e,t,n){t===n?n.child=e:t.sibling=e,e.parent=n}function ee(e,t){e.hasUncommittedEffect=t,e.root.hasUncommittedEffect=!0}function te(e,t,n,r){var o=e.root,i=e.node,a=e.part,s=e.nodeInstance,u=e.child,d=X(o.updateType);return t?(t.node=i,t.part=a,t.createdAt=c()):function(e,t){e&&(e.alternate=t);t.alternate=e}(e,t=oe(o,i,a)),e.shouldTearDown=!1,t.nodeInstance=s,t.child=u,t[d]=r[d],Z(t,n,r),t}function ne(e,t){return e===t?e.child:e.sibling}function re(e){var t=e.child;if("sync"!==e.root.updateType)for(var n;t;){n=te(t,t.alternate,n||e,e),t=t.sibling}}function oe(e,t,n){return t&&t.portalContainer&&(n.parentNode=t.portalContainer),{node:t,nodeInstance:null,root:e,parent:null,child:null,sibling:null,part:n,alternate:null,context:null,childFiberError:null,isSvgPart:!1,deferredUpdateTime:0,updateTime:0,processedTime:0,createdAt:c(),shouldTearDown:!1,hasUncommittedEffect:0}}function ie(e,t,n,r,o){var i,a,u,c=r.root,d=X(c.updateType);return n&&!s(n.node)&&!s(e)&&(a=e,u=n.node,q(a)&&q(u)||a.nodeType===W||Array.isArray(a)&&Array.isArray(u)||B(a)&&a.type===u.type||z(a)&&a.template===u.template)?((i=te(n,n.alternate,r,o)).node=e,i.part=t):(i=oe(c,e,t),n&&de(n)),Z(i,r,o),i.processedTime=0,i[d]=o[d],i.context=o.context,i.isSvgPart=o.isSvgPart,i}function ae(e,t,n){return e&&e[n]>=t}function se(e,t,n){if(e){for(;e&&!ae(e,t,n);)e=e.sibling;return e}}function ue(e,t,n,r){var o,i=se(e.child,n,r);if(i)return i;for(;!(o=se(e.sibling,n,r));)if((e=e.parent)===t)return e;return o}function ce(e){return e.__brahmosData.fiber}function de(e){e.shouldTearDown=!0,e.root.tearDownFibers.push(e)}var fe=1;function pe(e){return function(t){var n=ce(e),r=n.root.updateType;e.context!==t&&Y(n,r)}}function le(e){var t="cC"+fe++,n=function(e){function t(t){e.call(this,t),this.subs=[]}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.shouldComponentUpdate=function(e){return this.props.value!==e.value&&this.subs.forEach((function(t){return t(e.value)})),!0},t.prototype.sub=function(e){var t=this.subs,n=pe(e);t.push(n);var r=e.componentWillUnmount;e.componentWillUnmount=function(){t.splice(t.indexOf(n),1),r&&r()}},t.prototype.render=function(){return this.props.children},t}(mt);n.__ccId=t;var r=function(e){function t(){e.apply(this,arguments)}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.render=function(){return this.props.children(this.context)},t}(mt),o={id:t,defaultValue:e,Provider:n,Consumer:r};return r.contextType=o,o}function he(){return K().nodeInstance}function ve(e){e.deferredHooks=e.syncHooks.map((function(e,t){return Array.isArray(e)?[].concat(e):e.transitionId?e:Object.assign({},e)}))}function me(e,t){var n=t.syncHooks,r=t.deferredHooks;return"sync"===e?n:r}function ye(e){var t=e.nodeInstance;return me(e.root.updateType,t)}function ge(e,t,n){return"deferred"!==e||n.deferredHooks.length||ve(n),me(e,n)[t]}function be(e,t){if(!e||!t||e.length!==t.length)return!0;for(var n=0,r=e.length;n<r;n++)if(e[n]!==t[n])return!0;return!1}function Se(e,t,n){void 0===t&&(t=function(e){return!1}),void 0===n&&(n=function(e){return e});var r=K(),o=r.nodeInstance,i=o.pointer,a=ye(r),s=a[i];return s&&!t(s)||(s=e(),a[i]=s),o.pointer+=1,n(s)}function Te(e,t){var n=he(),r=n.pointer;return Se((function(){return"function"==typeof e&&(e=e()),[e,function(e){var o=F(),i=ge(o,r,n),a=i[0],s=t(e,a),u=M(o),c={transitionId:U().transitionId,updater:function(){ge(o,r,n)[0]=t(e,i[0])}};n.__brahmosData[u].push(c),function(e,t,n){Object.is(t,n)||vt(e)}(n,s,a)}]}))}function _e(e){return Te(e,(function(e,t){return"function"==typeof e&&(e=e(t)),e}))}function Ce(e){return Se((function(){return{current:e}}))}function Ie(e,t,n){return Te(n?function(){return n(t)}:t,(function(t,n){return e(n,t)}))}function De(e,t){return Se((function(){return{value:e(),dependencies:t}}),(function(e){return be(t,e.dependencies)}),(function(e){return e.value}))}function Ne(e,t){return De((function(){return e}),t)}function ke(e,t){var n=K(),r=n.nodeInstance,o=r.pointer,i=ye(n),a=i[o]||{animationFrame:null,cleanEffect:null},s=Object.assign({},a,{isDependenciesChanged:be(t,a.dependencies),dependencies:t,effect:function(){s.isDependenciesChanged&&e(s)}});i[o]=s,r.pointer+=1}function we(e,t){ke((function(t){cancelAnimationFrame(t.animationFrame),t.animationFrame=requestAnimationFrame((function(){setTimeout((function(){t.cleanEffect=e()}))}))}),t)}function xe(e,t){ke((function(t){t.cleanEffect=e()}),t)}function Ee(e){var t=K(),n=t.nodeInstance,r=t.context,o=e.id,i=e.defaultValue,a=r[o],s=a?a.props.value:i;return xe((function(){if(a){var e=a.subs,t=pe(n);return e.push(t),function(){e.splice(e.indexOf(t),1)}}}),[]),n.context=s,s}function Ue(e){e.timeoutMs;var t=he();return Se((function(){var e={transitionId:T(),tryCount:0,isPending:!1,transitionTimeout:null,pendingSuspense:[],transitionState:"initial",clearTimeout:function(){clearTimeout(e.transitionTimeout)},updatePendingState:function(n,r){e.isPending=n,t.__brahmosData.isDirty=!0;var o=function(){vt(t)};"transition"===r?A(e,o):P(r,o)},startTransition:function(n){var r=E(),o=ce(t).root;e.transitionState="start",e.pendingSuspense=[],e.clearTimeout(),A(e,n),o.lastDeferredCompleteTime<o.deferredUpdateTime&&e.updatePendingState(!0,r)}};return e}),void 0,(function(e){return[e.startTransition,e.isPending]}))}function Pe(e,t){for(var n=ye(e),r=0,o=n.length;r<o;r++){var i=n[r];i.cleanEffect&&(i.isDependenciesChanged||t)&&i.cleanEffect(),i.clearTimeout&&t&&i.clearTimeout()}}function Ae(e){var t;return(t={syncHooks:[],deferredHooks:[],pointer:0,__render:function(t){var n,r,o;n=K(),r=n.nodeInstance,o=n.root.updateType,r.pointer=0,"deferred"===o&&ve(r),O(n).forEach((function(e){return e.updater()}));var i=e(t);return this.__brahmosData.nodes=i,i}}).__brahmosData={pendingSyncUpdates:[],pendingDeferredUpdates:[],fiber:null,nodes:null,isDirty:!1,mounted:!1},t}function Fe(e,t){if(Object.is(e,t))return!0;if("object"!=typeof e||null===e||"object"!=typeof t||null===t)return!1;var n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(var o=0;o<n.length;o++)if(!hasOwnProperty.call(t,n[o])||!Object.is(e[n[o]],t[n[o]]))return!1;return!0}function Me(e){for(var t=e.root;(e=e.parent)&&!(e.nodeInstance instanceof mt&&(e.nodeInstance.componentDidCatch||e.node.type.getDerivedStateFromError));)if(e===t)return null;return e}function Oe(e){var t=e.root;e.nodeInstance.__brahmosData.isDirty=!0,t.retryFiber=e}function je(e){var t,n=e.node,r=e.part,o=e.root,i=e.childFiberError,a=n.type,s=n.nodeType,u=n.props;void 0===u&&(u={});var c="deferred"===o.updateType,d=!0,f=!1,p=s===H;!function(e){var t=e.root,n=e.child,r=e.alternate;n&&n.createdAt>t.lastCompleteTime&&(e.child=r&&r.child)}(e);var l=e.nodeInstance,h=!1;l||(l=p?new a(u):Ae(a),e.nodeInstance=l,h=!0);var v=l.__brahmosData,m=function(e){var t=e.node.type,n=e.nodeInstance,r=e.parent,o=e.context,i=t.__ccId,a=r.context||{};if(!i)return a;if(o)return o;var s=Object.create(a);return s[i]=n,s}(e);if(e.context=m,p){var g=v.committedValues,b=v.memoizedValues;h&&(g.state=l.state);var S=g.props,T=g.state;b&&c&&(S=(t=b).props,T=t.state,f=!0),l.props=S,l.state=T;var _=l.shouldComponentUpdate,C=T,I=O(e);I.length&&(C=function(e,t){return t.reduce((function(e,t){var n=t.state;return"function"==typeof n&&(n=n(e)),Object.assign({},e,n)}),e)}(T,I));var D=!h&&o.forcedUpdateWith!==l,N=y(a,"getDerivedStateFromProps",[u,C]),k=i?y(a,"getDerivedStateFromError",[i.error]):void 0;(N||k)&&(C=Object.assign({},C,N,k)),I.forEach((function(e){var t=e.callback;t&&t(C)})),l.isPureReactComponent&&D&&(d=!Fe(C,T)||!Fe(u,S)),_&&d&&D&&(d=_.call(l,u,C));var w=a.contextType;if(w){var x=w.id,E=w.defaultValue,U=m[x],P=U?U.props.value:E;U&&h&&U.sub(l),l.context=P}l.state=C,l.props=u,c&&(v.memoizedValues={state:C,props:u})}else h||Pe(e);if(d){try{!function(e){j=e}(e),ie(i&&!a.getDerivedStateFromError?null:l.__render(u),r,e.child,e,e)}catch(t){var A=Me(e);if("function"==typeof t.then){var F=St(e);if(!F)throw new Error("Rendering which got suspended can't be used outside of suspense.");F.nodeInstance.handleSuspender(t,F),Oe(F)}else{if(!A||A.childFiberError)throw t;var M=function(e){var t=e.node.type;return{componentStack:"The above error occurred in the <"+(t.displayName||t.name)+"> component:"}}(e);console.error(t),console.error(M.componentStack),A.childFiberError={error:t,errorInfo:M},Oe(A)}return}ee(e,2)}else if(f){var L=e.child;L&&L.node===v.nodes||(ie(v.nodes,r,L,e,e),ee(e,2))}else re(e)}var Le=/[<>"]/g,Re=/(^|\s)([^\s"'=<]+)(?=[\s=>])/g;var He=function(e){this.strings=e,this.template=null,this.svgTemplate=null,this.partsMeta=[]};He.prototype.create=function(e){e&&this.svgTemplate||this.template||(this.partsMeta=this.getPartsMeta(),this.createTemplate(e))},He.prototype.getPartsMeta=function(){for(var e,t,n=this.strings,r=[],o=[],i=function(i,a){for(var s=n[i],u=void 0,c=void 0,d=void 0,f=void 0,p=void 0,l=function(){var e=s.substring(f||0,p||s.length);r.push.apply(r,function(e){for(var t,n=[];null!==(t=Re.exec(e));){t[2]&&n.push(t[2])}return n}(e))};null!==(u=Le.exec(s));)"<"!==u[0]||t?'"'===u[0]?t=!t:e&&">"===u[0]&&!t&&(e=!1,p=u.index,void 0===f&&l()):(e=!0,r=[],f=u.index,p=void 0);e&&l(),e?c=!0:d=!0,i<a-1&&o.push({tagAttrs:r,attrIndex:r.length,isAttribute:c,isNode:d})},a=0,s=n.length;a<s;a++)i(a,s);return o},He.prototype.createTemplate=function(e){for(var t=this.partsMeta,n=this.strings,r=document.createElement("template"),o="",i=0,a=n.length-1;i<a;i++){var s=n[i];o=t[i].isNode?o+s+"\x3c!--{{brahmos}}--\x3e":o+s+"data-brahmos-attr"}o+=n[n.length-1],r.innerHTML=e?"<svg>"+o+"</svg>":o,e&&function(e){for(var t=e.parentNode;e.firstChild;)t.insertBefore(e.firstChild,e);t.removeChild(e)}(r.content.firstChild),this[e?"svgTemplate":"template"]=r};var Ve=function(e,t){this.templateResult=e,e.create(t),this.fragment=this.createNode(t),this.parts=this.getParts(),this.domNodes=h(this.fragment.childNodes),this.patched=!1};function We(e,t,n){return n<=e.lastIndexOf(t)}function ze(e,r,o){for(var i=o,a=o.child,s=function(s,c){var d=e[s],f=r[s],l=d.isAttribute,h=d.isNode,v=void 0;if(l){for(var m=d.domNode,y={},g=void 0;d&&m===d.domNode;)p(r[s],(function(e,r){var o=n[e];We(d.tagAttrs,o,d.attrIndex)||t[e]?"ref"===e&&(g=r):y[e]=r})),d=e[++s];s--,d=e[s],v={nodeType:W,attributes:y,ref:g}}else h&&(v=f);i=ie(v,d,a,i,o),a=a&&a.sibling,u=s},u=0,c=e.length;u<c;u++)s(u)}function Be(e){var t=e.node,n=e.part,r=e.alternate,o=e.parent.context,i=r&&r.node,a=t.values,s=t.nodeType===R,u=e.isSvgPart||s&&"svg"===t.element;e.isSvgPart=u;var c=e.nodeInstance;c||(c=s?function(e,t){var n=e.element,r=e.values,o=t?document.createElementNS("http://www.w3.org/2000/svg",n):document.createElement(n);return d(o),{fragment:o,nodes:[o],parts:[{isAttribute:!0,tagAttrs:[],attrIndex:0,domNode:o},{parentNode:o,isNode:!0}],values:r}}(t,u):new Ve(t.template,u),e.nodeInstance=c),s||c.patchParts(n),t!==i?ze(c.parts,a,e):re(e),ee(e,2),e.context=o}function qe(e){var t=e.type,n=a(e);return"input"!==n||"radio"!==t&&"checkbox"!==t?"input"===n||"select"===n||"textarea"===n?"value":void 0:"checked"}function $e(e,t,n,r){t=t||{},p(e,(function(e,n){var o=t[e];n!==o&&r(e,n,o)})),p(t,(function(t,o){void 0===e[t]&&r(t,n,o)}))}function Ge(e,t,n,s,u){if(function(e){return 0===e.indexOf("on")}(t)){var c=function(e){return e.replace("on","").toLowerCase()}(t);c=function(e,t){var n=a(t);return r[e]?r[e]:"input"===n&&"change"===e?"input":e}(c,e);var d=function(e,t,n){var r=e.__brahmosData.events,o=r[t];return o?(o.handler=n,o.patched):((o=r[t]={handler:n,patched:null}).patched=function(e){var t=this;o.handler&&P("event",(function(){o.handler.call(t,e)}))},o.patched)}(e,t,n);s&&!n?e.removeEventListener(c,d):!s&&n&&e.addEventListener(c,d)}else if("style"===t){var f=e.style;$e(n,s,"",(function(e,t){"-"===e[0]?f.setProperty(e,t):f[e]="number"==typeof t&&!1===o.test(e)?t+"px":t}))}else if("dangerouslySetInnerHTML"===t){var p=s&&s.__html,l=n&&n.__html;l!==p&&(e.innerHTML=null==l?"":l)}else if(t in e&&!u){var h=qe(e);h?function(e,t,n,r){"checked"===e?"checked"===n?(t.checked=r,t.checkedProp=r):"defaultChecked"===n&&void 0===t.checkedProp?t.checked=r:t[n]=r:"value"===e&&("value"===n?(t.value=r,t.valueProp=r):"defaultValue"===n&&void 0===t.valueProp?t.value=r:t[n]=r)}(h,e,t,n):e[t]=null==n?"":n}else{var v=t.replace(/^xlink:?/,""),m=null==n||!1===n;t!==v?(v=v.toLowerCase(),m?e.removeAttributeNS(i,v):e.setAttributeNS(i,v,n)):m?e.removeAttribute(t):e.setAttribute(t,n)}}function Je(e,t,n,r){$e(t,n,null,(function(t,n,o){Ge(e,t,n,o,r)})),function(e){var t=qe(e);if(t){var n=e[t+"Prop"],r=e[t];void 0!==n&&n!==r&&(e[t]=n)}}(e)}function Ke(e){function t(t){return e(f(t,!1),t.ref)}return t.__isForwardRef=!0,t}function Qe(){return{current:null}}function Xe(e,t){var n=typeof e;"function"===n?e(t):"object"===n&&(e.current=t)}function Ye(e,t){var n=t.domNodes;e.__brahmosLastArrayDom=n[n.length-1]}function Ze(e){var t=e.previousSibling;return e.isArrayNode&&(t=0===e.nodeIndex?t:e.parentNode.__brahmosLastArrayDom),t}function et(e,t){var n=e.part;if(n.isArrayNode){var r=n.nodeIndex,o=n.parentNode,i=t.part.nodeIndex,a=function(e){for(;e.node&&!z(e.node);)e=e.child;return e}(e),s=a.nodeInstance,u=a!==e&&a.hasUncommittedEffect;if(s&&!u){if(r!==i){var c=s.domNodes,d=Ze(n),f=m(o,d),p=c[0];p&&p.previousSibling!==d&&p!==f&&v(o,f,c)}Ye(o,s)}}}function tt(e){var t=e.node,n=e.nodeInstance,r=e.root,o=e.childFiberError,i=r.updateType,a=t.nodeType,s=t.ref,u=n.__brahmosData;if(a===H){var c=n.props,d=n.state,f=u.committedValues,p=u.lastSnapshot,l=f.props,h=f.state;l?y(n,"componentDidUpdate",[l,h,p]):y(n,"componentDidMount"),o&&(y(n,"componentDidCatch",[o.error,o.errorInfo]),e.childFiberError=null),s&&Xe(s,n),f.props=c,f.state=d,u.memoizedValues=null}else if(function(e){for(var t=ye(e),n=0,r=t.length;n<r;n++){var o=t[n];o.effect&&o.effect()}}(e),"deferred"===i){var v=n.syncHooks,m=n.deferredHooks;n.deferredHooks=v,n.syncHooks=m}u.mounted=!0,u.fiber=e}function nt(e){e.tearDownFibers=[],e.postCommitEffects=[],e.hasUncommittedEffect=!1,e.resetRenderCallbacks()}function rt(e){var t=e.currentTransition,n=e.pendingTransitions,r=n.indexOf(t);-1!==r&&n.splice(r,1)}function ot(e){var t=e.node,n=e.alternate,r=t&&B(t);r&&n&&et(e,n),2===e.hasUncommittedEffect&&(q(t)?function(e){var t=e.part,n=e.node,r=e.alternate,o=t.parentNode,i=m(o,t.previousSibling);r?i.nodeValue=n:v(o,i,n)}(e):z(t)?function(e){var t=e.part,n=e.nodeInstance,r=e.alternate,o=t.parentNode;if(r)et(e,r);else{var i=m(o,Ze(t));n.domNodes=v(o,i,n.fragment),Ye(o,n)}}(e):r?function(e){var t=e.node,n=e.nodeInstance,r=e.root,o=r.updateType,i=t.nodeType,a=n.__brahmosData;if(i===H){var s=a.committedValues,u=s.props,c=s.state;a.lastSnapshot=y(n,"getSnapshotBeforeUpdate",[u,c])}var d=N(e).transitionId,f=M(o);a[f]=a[f].filter((function(e){return e.transitionId!==d})),a.isDirty=!1,r.postCommitEffects.push(e)}(e):t.nodeType===W&&function(e){var t=e.part,n=e.node,r=e.alternate,o=e.isSvgPart,i=t.domNode,a=n.attributes,s=n.ref;Je(i,a,r&&r.node.attributes,o),s&&Xe(s,i)}(e),e.hasUncommittedEffect=!1),n&&function(e){e.node=null,e.nodeInstance=null,e.child=null,e.sibling=null}(n)}function it(e,t,n,r){var o=(e.part.parentNode===t.parentNode||!n)&&r,i=e.node;i&&i.portalContainer&&(o=!0),at(e,o)}function at(e,t){var n=e.node,r=e.part,o=e.nodeInstance;if($(n)){var i=z(n),a=e.child;if(a)for(it(a,r,i,t);a.sibling;)it(a=a.sibling,r,i,t);if(q(n)&&t){l(m(r.parentNode,r.previousSibling))}else{var s=n.ref;if(s&&Xe(s,null),o)if(i){var u=o.domNodes;t&&l(u)}else B(n)&&o.__brahmosData.mounted&&(n.nodeType===H?y(o,"componentWillUnmount"):Pe(e,!0))}}}function st(e){e.tearDownFibers.forEach((function(e){e.shouldTearDown&&at(e,!0)})),e.tearDownFibers=[]}Ve.prototype.createNode=function(e){var t=this.templateResult,n=t.template,r=t.svgTemplate,o=e?r:n;return document.importNode(o.content,!0)},Ve.prototype.createWalker=function(e){return document.createTreeWalker(e,129,null,!1)},Ve.prototype.isBrahmosCommentNode=function(e){return e&&8===e.nodeType&&"{{brahmos}}"===e.textContent},Ve.prototype.getParts=function(){for(var e=this.fragment,t=this.templateResult,n=this.isBrahmosCommentNode,r=t.partsMeta,o=this.createWalker(e),i=0,a=r[i],s=[],u=[],c=function(){i++,a=r[i]};o.nextNode();){var f=o.currentNode,p=f.nodeType,h=f.parentNode;if(1===p&&f.hasAttribute("data-brahmos-attr")){f.removeAttribute("data-brahmos-attr");for(var v=a.tagAttrs;a&&a.isAttribute&&a.tagAttrs===v;)s.push(Object.assign({},a,{domNode:f})),c();d(f)}else if(n(f)){var m=f.previousSibling;n(m)&&(m=g(f)),s.push(Object.assign({},a,{parentNode:h,previousSibling:m})),c(),u.push(f)}}return l(u),s},Ve.prototype.patchParts=function(e){var t=this.parts,n=e.parentNode,r=e.previousSibling;if(!this.patched){for(var o=0,i=t.length;o<i;o++){var a=t[o];a.isNode&&a.parentNode instanceof DocumentFragment&&(a.parentNode=n,a.previousSibling=a.previousSibling||r)}this.patched=!0}};var ut;function ct(e){return ut+e-performance.now()}function dt(e){var t=e.node,n=e.alternate;if($(t)){var r=function(e){var t=e.node,n=e.nodeInstance;return!(!B(t)||!n)&&(!!O(e).length||n.__brahmosData.isDirty)}(e);!e.processedTime||r?(q(t)?function(e){var t=e.node,n=e.alternate;t!==(n&&n.node)&&ee(e,2)}(e):Array.isArray(t)?function(e){for(var t=e.node,n=e.part,r=e,o=n.parentNode,i=n.previousSibling,a=new Map,s=0,u=e;u=ne(u,e);){var c=G(u.node,s);a.set(c,u),s++}e.child=null,t.forEach((function(t,n){var s=G(t,n),u=a.get(s);u&&a.delete(s);var c=r;(r=ie(t,{parentNode:o,previousSibling:i,a:void 0,isArrayNode:!0,nodeIndex:n},u,c,e)).sibling=null,u&&u.part.nodeIndex!==n&&(ee(r,1),0!==n&&ee(c,1))})),a.forEach((function(e){de(e)})),ee(e,2)}(e):z(t)?Be(e):B(t)?je(e):t.nodeType===W&&ee(e,2),e.processedTime=c()):re(e)}else n&&de(n)}function ft(e){var t=e.updateType,n=e.current,r=Q(t);st(e);var o=function(e){for(var t=e.updateType,n=e.wip,r=e.current,o=X(t),i=e[Q(t)],a=[],s="sync"===t?r:n;s;){var u=s.createdAt,c=s.node,d=s.child,f=s.hasUncommittedEffect,p=s[o],l=u>i,h=f||p>i;if(f&&a.push(s),l&&(d&&d.parent!==s&&(d.parent=s),c&&B(c)&&(s.nodeInstance.__brahmosData.fiber=s)),d&&h)s=d;else{for(;s!==e&&!s.sibling;)s=s.parent;s=s.sibling}}return a}(e);e[r]=e.lastCompleteTime=c(),"deferred"===t&&(e.current=e.wip,e.wip=n),function(e,t){for(var n=0,r=t.length;n<r;n++)ot(t[n]);for(var o=e.postCommitEffects,i=o.length-1;i>=0;i--)tt(o[i]);rt(e),nt(e),e.requestIdleHandle=null,e.forcedUpdateWith=null}(e,o)}function pt(e,t){var n=e.root,r=n.updateType,o=n.currentTransition,i=Q(r),a=X(r),s=n[i],u=!function(e){var t=e.updateSource;return e.preventSchedule||"event"===t}(n);!function(e,t,n){var r=e.scheduleId;if(r&&clearTimeout(r),t){var o=ct(16);e.scheduleId=setTimeout((function(){var t=e.currentTransition,r=Math.min(25,t?t.tryCount:0);n((function(){return ct(5+r)}))}),o)}else{n((function(){return 1}))}}(n,u,(function(r){for(;e!==t;){if(!(r()>0))return void pt(e,t);dt(e);var i=n.retryFiber;i?(e=i,t=n,n.retryFiber=null):e=ue(e,t,s,a)}var u,c;n.callRenderCallbacks(),o&&("timedOut"!==(c=(u=o).transitionState)&&"suspended"!==c&&(u.isPending?(u.clearTimeout(),u.updatePendingState(!1,"transition")):u.transitionState="completed"),o.tryCount=0,!n.hasUncommittedEffect&&D(o)&&rt(n)),function(e){return"transition"!==e.updateSource||e.lastCompleteTime>=e.updateTime&&e.hasUncommittedEffect&&D(e.currentTransition)}(n)&&ft(n),k(n)&&P("transition",(function(){n.updateSource="transition",lt(n)}))}))}function lt(e){var t=k(e);t&&(e.updateType="deferred",nt(e),e.currentTransition=t,t.tryCount+=1,e.wip=te(e.current,e.wip,e,e),pt(e.wip,e))}function ht(e){var t=e.root,n=e.parent;t.updateType="sync",t.currentTransition=null,nt(t),pt(e,n)}function vt(e){var t=ce(e),n=t.root,r=E(),o=U(),i=F();if(Y(t,i),"transition"===r){var a=n.pendingTransitions,s=o===C?"unshift":"push";a.includes(o)||a[s](o)}n.batchUpdates[r]||(n.batchUpdates[r]=S((function(){if(n.batchUpdates[r]=null,n.updateSource=r,n.lastCompleteTime<n.updateTime){var e="sync"===n.updateType&&n.requestIdleHandle;ht("event"===r&&!e?t:n.current)}else lt(n)})))}!function e(){requestAnimationFrame((function(t){ut=t,e()}))}();var mt=function(e){this.props=e,this.state=void 0,this.__brahmosData={lastSnapshot:null,pendingSyncUpdates:[],pendingDeferredUpdates:[],fiber:null,nodes:null,mounted:!1,committedValues:{},memoizedValues:null,isDirty:!1},this.context=void 0};mt.prototype.setState=function(e,t,n){var r=F(),o={state:e,transitionId:U().transitionId,callback:t},i=M(r);this.__brahmosData[i].push(o),vt(this)},mt.prototype.forceUpdate=function(e){var t=this.__brahmosData.fiber;t&&(t.root.forcedUpdateWith=this,this.__brahmosData.isDirty=!0,vt(this),e&&e(this.state))},mt.prototype.__render=function(){var e=this.render();return this.__brahmosData.nodes=e,e};var yt=function(e){function t(t){e.call(this,t),this.isPureReactComponent=!0}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t}(mt);function gt(e,t,n){if("string"==typeof e)return function(e,t,n){var r=J(null,[t,n],"");return r.element=e,r.nodeType=R,r}(e,t,n);var r=Object.assign({},e.defaultProps,f(t,e.__isForwardRef),{children:n});e.__loadLazyComponent&&e.__loadLazyComponent();var o=t.key;void 0===o&&(o="");var i=t.ref,a=function(e){return e.prototype instanceof mt}(e),s=J(r,null,""+o);return s.nodeType=a?H:V,s.type=e,s.ref=a?i:null,s}function bt(e){A(C,e)}function St(e,t){for(var n=e.root,r=e.nodeInstance;!(r instanceof kt||t&&r instanceof Nt);){if((e=e.parent)===n)return null;r=e.nodeInstance}return e}function Tt(e){var t=e.parentSuspenseManager;return t&&t.isSuspenseList?t:null}function _t(e,t){var n=e.nodeInstance;if(!n)return null;var r=n.suspenseManagers,o=t.transitionId,i=r[o];return i||(i=r[o]=new It(e,t)),i}function Ct(e){e.__brahmosData.isDirty=!0}var It=function(e,t){var n=e.nodeInstance;this.fiber=e,this.component=n,this.transition=t,this.childManagers=[],this.suspender=null,this.isSuspenseList=n instanceof Nt;var r=St(e.parent,!0);this.parentSuspenseManager=r&&_t(r,t),this.rootSuspenseManager=null,this.recordChildSuspense(),this.handleSuspense=this.handleSuspense.bind(this)};function Dt(e){var t=N(K(),C);return"resolved"!==t.transitionState||t.pendingSuspense.includes(e)||(t=C),t}It.prototype.recordChildSuspense=function(){var e=this.parentSuspenseManager;e?(e.childManagers.push(this),this.rootSuspenseManager=e.rootSuspenseManager):this.rootSuspenseManager=this},It.prototype.addRootToProcess=function(){var e=this.rootSuspenseManager;K().root.afterRender(e.handleSuspense)},It.prototype.suspend=function(e){this.suspender=e,this.addRootToProcess()},It.prototype.handleSuspense=function(){var e=this.component,t=this.suspender;return e instanceof Nt?this.handleSuspenseList():Promise.resolve(t).then(this.resolve.bind(this,t))},It.prototype.isUnresolved=function(){return this.isSuspenseList?this.childManagers.some((function(e){return e.isUnresolved()})):this.suspender},It.prototype.shouldShowFallback=function(){var e=Tt(this);if(!e)return!0;var t=e.component,n=e.childManagers,r=t.props.tail;if(Tt(e)&&!e.shouldShowFallback())return!1;if("collapsed"===r)for(var o=0,i=n.length;o<i;o++){var a=n[o];if("collapsed"===r&&a.isUnresolved())return a===this}return"hidden"!==r},It.prototype.resolve=function(e){var t=this,n=this.component,r=this.transition,o=this.suspender,i=this.childManagers,a=r.pendingSuspense||[];if(e===o)if(o){this.suspender=null,Ct(this.component);var s="timedOut"===r.transitionState,u=a.filter((function(e){return e.suspenseManagers[r.transitionId].suspender})).length;s||u||(r.transitionState="resolved");var c=function(){var e=n;ce(n)||(e=t.fiber.root.wip.nodeInstance),vt(e)};setTimeout((function(){s||!a.includes(n)?bt(c):A(r,c)}),Date.now()%100)}else i.forEach((function(e){e.handleSuspense()}))},It.prototype.getChildrenSuspenders=function(){var e=[];return this.childManagers.forEach((function(t){t.isSuspenseList?e=e.concat(t.getChildrenSuspenders()):t.suspender&&e.push(t.suspender)})),e},It.prototype.handleSuspenseList=function(){var e=this.component,t=this.childManagers,n=e.props,r=n.revealOrder;void 0===r&&(r="together");var o=n.tail,i=function(e,t){return e.then((function(){return"forwards"===r&&"collapsed"===o&&function(e){var t=ce(e.component);e.isUnresolved()&&t&&(Ct(e.component),Y(t,"deferred"))}(t),t.handleSuspense()}))},a=Promise.all(this.getChildrenSuspenders());if("together"===r)a.then((function(){t.forEach((function(e){return e.handleSuspense()}))}));else if("forwards"===r)for(var s=Promise.resolve(),u=0,c=t.length;u<c;u++)s=i(s,t[u]);else if("backwards"===r)for(var d=Promise.resolve(),f=t.length-1;f>=0;f--)d=i(d,t[f]);return a};var Nt=function(e){function t(t){e.call(this,t),this.suspenseManagers={}}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.render=function(){return this.props.children},t}(mt),kt=function(e){function t(t){e.call(this,t),this.suspenseManagers={}}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.handleSuspender=function(e,t){var n=Dt(this),r=_t(t,n);D(n)||(n.pendingSuspense.includes(this)||n.pendingSuspense.push(this),n.transitionState="suspended"),r.suspend(e)},t.prototype.render=function(){var e=Dt(this),t=_t(K(),e),n=!t.suspender,r=this.props,o=r.fallback,i=r.children;return n?i:t.shouldShowFallback()?o:null},t}(mt),wt=function(e){var t,n=Ke((function(e,n){return gt(t.read().default,Object.assign({},e,{ref:n}),e.children)}));return n.__loadLazyComponent=function(){var n,r,o,i;t||(n=e(),o="pending",i=n.then((function(e){o="success",r=e}),(function(e){o="error",r=e})),t={read:function(){if("pending"===o)throw i;if("error"===o)throw r;if("success"===o)return r}})},n};function xt(e){return e.children}function Et(e,t){var n,r,o=gt(xt,{},e),i={parentNode:t,isNode:!0},a=t.__rootFiber;a?((n=a.current).processedTime=0,n.node=o):(r=[],(n=oe(a={updateType:"sync",updateSource:"js",scheduleId:0,domNode:t,forcedUpdateWith:null,current:null,wip:null,child:null,retryFiber:null,preventSchedule:!1,currentTransition:null,hasUncommittedEffect:!1,pendingTransitions:[],tearDownFibers:[],postCommitEffects:[],batchUpdates:{},lastDeferredCompleteTime:0,lastCompleteTime:0,deferredUpdateTime:0,updateTime:0,afterRender:function(e){r.includes(e)||r.push(e)},callRenderCallbacks:function(){for(var e=0,t=r.length;e<t;e++)r[e]()},resetRenderCallbacks:function(){r=[]}},o,i)).parent=a,a.current=n,t.__rootFiber=a,a.preventSchedule=!0),ht(a.current),S((function(){a.preventSchedule=!1}))}var Ut=new WeakMap;function Pt(e,t){var n=J(null,t,"");return n.nodeType=L,n.template=e,n}function At(e){for(var t=[],n=arguments.length-1;n-- >0;)t[n]=arguments[n+1];var r=Ut.get(e);return r||(r=new He(e),Ut.set(e,r)),Pt(r,t)}function Ft(e,t){return e&&(e.portalContainer=t),e}function Mt(e){var t=e.__rootFiber;return!!t&&(de(t.current),st(t),e.__rootFiber=void 0,!0)}var Ot={createElement:gt,render:Et,Component:mt,PureComponent:yt,html:At,useState:_e,useEffect:we,useRef:Ce,useReducer:Ie,useMemo:De,useCallback:Ne,useLayoutEffect:xe,useContext:Ee,useTransition:Ue,createContext:le,forwardRef:Ke,createRef:Qe,createPortal:Ft,unmountComponentAtNode:Mt,Suspense:kt,SuspenseList:Nt,lazy:wt,unstable_deferredUpdates:bt};e.Component=mt,e.PureComponent=yt,e.Suspense=kt,e.SuspenseList=Nt,e.createContext=le,e.createElement=gt,e.createPortal=Ft,e.createRef=Qe,e.default=Ot,e.forwardRef=Ke,e.html=At,e.lazy=wt,e.render=Et,e.unmountComponentAtNode=Mt,e.unstable_deferredUpdates=bt,e.useCallback=Ne,e.useContext=Ee,e.useEffect=we,e.useLayoutEffect=xe,e.useMemo=De,e.useReducer=Ie,e.useRef=Ce,e.useState=_e,e.useTransition=Ue,Object.defineProperty(e,"__esModule",{value:!0})})); |
@@ -65,3 +65,3 @@ "use strict"; | ||
renders++; | ||
return _["default"].html(_templateObject(), _["default"].expression(this.props.text[0])); | ||
return _["default"].html(_templateObject(), this.props.text[0]); | ||
} | ||
@@ -68,0 +68,0 @@ }]); |
@@ -20,7 +20,5 @@ "use strict"; | ||
var _associateInstance = _interopRequireDefault(require("./associateInstance")); | ||
var _render = require("./render"); | ||
var _utils = require("./utils"); | ||
var _updateMetaUtils = require("./updateMetaUtils"); | ||
@@ -33,2 +31,12 @@ var Component = | ||
this.props = props; | ||
this.state = undefined; | ||
this.__pendingSyncUpdates = []; | ||
this.__pendingDeferredUpdates = []; | ||
this.context = undefined; | ||
this.__fiber = null; | ||
this.__componentNode = null; | ||
this.__nodes = null; | ||
this.__lastNode = null; | ||
this.__mounted = false; | ||
this.__brahmosNode = null; | ||
} | ||
@@ -38,5 +46,4 @@ | ||
key: "setState", | ||
value: function setState(newState, callback) { | ||
var _this = this; | ||
value: function setState(newState, callback, type) { | ||
var updateType = (0, _updateMetaUtils.getUpdateType)(); | ||
/** | ||
@@ -50,12 +57,11 @@ * When setState is called batch all the state changes | ||
*/ | ||
var state = this.__unCommittedState || this.state || {}; | ||
var _newState = typeof newState === 'function' ? newState(state) : newState; | ||
state = (0, _utils.mergeState)(state, _newState); | ||
this.__unCommittedState = state; // when the rerender is done call the callback if provided | ||
this.__batchStateChange().then(function () { | ||
if (callback) callback(_this.state); | ||
}); | ||
var stateMeta = { | ||
state: newState, | ||
transitionId: _updateMetaUtils.currentTransition.transitionId, | ||
callback: callback | ||
}; | ||
var pendingUpdateKey = (0, _updateMetaUtils.getPendingUpdatesKey)(updateType); | ||
this[pendingUpdateKey].push(stateMeta); | ||
(0, _render.reRender)(this); | ||
} | ||
@@ -65,22 +71,8 @@ }, { | ||
value: function forceUpdate(callback) { | ||
(0, _render.reRender)(this, 'current'); | ||
if (callback) callback(this.state); | ||
} | ||
}, { | ||
key: "__batchStateChange", | ||
value: function __batchStateChange() { | ||
var _this2 = this; | ||
var _this = this; | ||
if (this.__updatesPromise) return this.__updatesPromise; | ||
this.__updatesPromise = Promise.resolve().then(function () { | ||
_this2.__updatesPromise = null; | ||
/** | ||
* reRender only if there are uncommitted state | ||
* __unCommittedState state may have have been applied by | ||
* force update or calling render method on parent node. | ||
*/ | ||
if (_this2.__unCommittedState) (0, _render.reRender)(_this2); | ||
(0, _updateMetaUtils.withUpdateSource)(_updateMetaUtils.UPDATE_SOURCE_FORCE_UPDATE, function () { | ||
(0, _render.reRender)(); | ||
if (callback) callback(_this.state); | ||
}); | ||
return this.__updatesPromise; | ||
} | ||
@@ -91,6 +83,4 @@ }, { | ||
// get the new rendered node | ||
var nodes = this.render(); // associate instance from the old node to the new rendered node | ||
var nodes = this.render(); // store the current reference of nodes so we can use this this on next render cycle | ||
(0, _associateInstance["default"])(nodes, this.__nodes); // store the current reference of nodes so we can use this this on next render cycle | ||
this.__nodes = nodes; | ||
@@ -118,3 +108,2 @@ return nodes; | ||
exports.PureComponent = PureComponent; | ||
; | ||
exports.PureComponent = PureComponent; |
@@ -9,3 +9,3 @@ "use strict"; | ||
exports.createTagElement = createTagElement; | ||
exports["default"] = createElement; | ||
exports.createElement = createElement; | ||
@@ -16,2 +16,4 @@ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); | ||
var _brahmosNode = require("./brahmosNode"); | ||
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } | ||
@@ -29,8 +31,6 @@ | ||
function createTagElement(element, configs, children) { | ||
return { | ||
element: element, | ||
values: [configs, children], | ||
__$isBrahmosTag$__: true, | ||
__$isBrahmosTagElement$__: true | ||
}; | ||
var node = (0, _brahmosNode.brahmosNode)(null, [configs, children], ''); | ||
node.element = element; | ||
node.nodeType = _brahmosNode.TAG_ELEMENT_NODE; | ||
return node; | ||
} | ||
@@ -43,3 +43,3 @@ | ||
*/ | ||
if (typeof element === 'string') return createTagElement(element, configs, children); | ||
if (typeof element === 'string') return createTagElement(element, configs, children); // create a prop object excluding the key and ref prop and adding children prop | ||
@@ -49,7 +49,8 @@ var props = _objectSpread({}, element.defaultProps, {}, (0, _utils.omit)(configs, { | ||
ref: !element.__isForwardRef | ||
})); // add children to props | ||
}), { | ||
children: children | ||
}); | ||
props.children = children; | ||
var key = configs.key, | ||
var _configs$key = configs.key, | ||
key = _configs$key === void 0 ? '' : _configs$key, | ||
ref = configs.ref; | ||
@@ -59,14 +60,7 @@ | ||
return { | ||
type: element, | ||
props: props, | ||
key: key, | ||
ref: _isClassComponent ? ref : null, | ||
children: children, | ||
configs: configs, | ||
// keeping the original config for reference | ||
__$isBrahmosComponent$__: true, | ||
__$isBrahmosClassComponent$__: _isClassComponent, | ||
__$isBrahmosFunctionalComponent$__: !_isClassComponent | ||
}; | ||
var node = (0, _brahmosNode.brahmosNode)(props, null, '' + key); | ||
node.nodeType = _isClassComponent ? _brahmosNode.CLASS_COMPONENT_NODE : _brahmosNode.FUNCTIONAL_COMPONENT_NODE; | ||
node.type = element; | ||
node.ref = _isClassComponent ? ref : null; | ||
return node; | ||
} |
@@ -17,3 +17,3 @@ "use strict"; | ||
function createPortal(child, container) { | ||
// mark the childe node as ported node | ||
// mark the child node as ported node | ||
child.portalContainer = container; | ||
@@ -20,0 +20,0 @@ (0, _render["default"])(child, container); // We need to return the rendered child node so that life cycles are handled properly on render flow |
"use strict"; | ||
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); | ||
Object.defineProperty(exports, "__esModule", { | ||
@@ -10,4 +8,2 @@ value: true | ||
var _associateInstance = _interopRequireDefault(require("./associateInstance")); | ||
var _hooks = require("./hooks"); | ||
@@ -17,8 +13,10 @@ | ||
return { | ||
hooks: [], | ||
syncHooks: [], | ||
deferredHooks: [], | ||
__pendingSyncUpdates: [], | ||
__pendingDeferredUpdates: [], | ||
__fiber: null, | ||
__render: function __render(props) { | ||
(0, _hooks.setCurrentComponent)(this); | ||
var nodes = FuncComponent(props); // associate instance from the old node to the new rendered node | ||
(0, _associateInstance["default"])(nodes, this.__nodes); | ||
var nodes = FuncComponent(props); | ||
this.__nodes = nodes; | ||
@@ -25,0 +23,0 @@ return nodes; |
209
lib/hooks.js
@@ -18,2 +18,3 @@ "use strict"; | ||
exports.useContext = useContext; | ||
exports.useTransition = useTransition; | ||
exports.runEffects = runEffects; | ||
@@ -24,2 +25,4 @@ exports.cleanEffects = cleanEffects; | ||
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray")); | ||
var _render = require("./render"); | ||
@@ -29,2 +32,8 @@ | ||
var _utils = require("./utils"); | ||
var _updateMetaUtils = require("./updateMetaUtils"); | ||
var _transitionUtils = require("./transitionUtils"); | ||
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } | ||
@@ -34,7 +43,55 @@ | ||
/** | ||
* TODO: Rename currentComponent to currentComponentInstance | ||
* and component to component | ||
*/ | ||
var currentComponent; | ||
/** | ||
* get updateType from component | ||
*/ | ||
function getUpdateTypeFromComponent(component) { | ||
return component.__fiber.root.updateType; | ||
} | ||
/** | ||
* clone hooks, syncHooks to deferredHooks | ||
*/ | ||
function cloneHooks(hooks) { | ||
return hooks.map(function (hook) { | ||
if (Array.isArray(hook)) { | ||
return (0, _toConsumableArray2["default"])(hook); | ||
} | ||
return _objectSpread({}, hook); | ||
}); | ||
} | ||
/** | ||
* Get the current hooks array based on updateType | ||
*/ | ||
function getHooksList(updateType, component) { | ||
var syncHooks = component.syncHooks, | ||
deferredHooks = component.deferredHooks; | ||
return updateType === _updateMetaUtils.UPDATE_TYPE_SYNC ? syncHooks : deferredHooks; | ||
} | ||
/** | ||
* Get current hook, based on the type of update we are doing | ||
* If it is inside transition of deferred update we need deferredHooksList, | ||
* or else we need the sync hooks list | ||
*/ | ||
function getCurrentHook(updateType, component) { | ||
var pointer = component.pointer; | ||
var hooks = getHooksList(updateType, component); | ||
return hooks[pointer]; | ||
} | ||
/** | ||
* Method to check if two dependency array are same | ||
*/ | ||
function isDependenciesChanged(deps, oldDeps) { | ||
@@ -76,4 +133,5 @@ // if oldDeps or deps are not defined consider it is changed every time | ||
var _currentComponent = currentComponent, | ||
pointer = _currentComponent.pointer, | ||
hooks = _currentComponent.hooks; | ||
pointer = _currentComponent.pointer; | ||
var updateType = getUpdateTypeFromComponent(currentComponent); | ||
var hooks = getHooksList(updateType, currentComponent); | ||
var hook = hooks[pointer]; // if hook is not there initialize and add it to the pointer | ||
@@ -97,11 +155,22 @@ | ||
currentComponent = component; | ||
component.pointer = 0; | ||
component.hooks = component.hooks || []; | ||
component.pointer = 0; // based on update type clone the hooks to deferred hooks | ||
var updateType = getUpdateTypeFromComponent(component); | ||
if (updateType === _updateMetaUtils.UPDATE_TYPE_DEFERRED) { | ||
component.deferredHooks = cloneHooks(component.hooks); | ||
} // call all the pending update before trying to render, | ||
var pendingUpdates = (0, _updateMetaUtils.getPendingUpdates)(updateType, component); | ||
pendingUpdates.forEach(function (task) { | ||
return task.updater(); | ||
}); | ||
} | ||
/** | ||
* Use state hook | ||
* Base logic for state hooks | ||
*/ | ||
function useState(initialState) { | ||
function useStateBase(initialState, getNewState) { | ||
var component = currentComponent; | ||
@@ -112,5 +181,17 @@ return getHook(function () { | ||
*/ | ||
var hook = [initialState, function (state) { | ||
var lastState = hook[0]; | ||
hook[0] = state; | ||
if (typeof initialState === 'function') initialState = initialState(); | ||
var hook = [initialState, function (param) { | ||
var updateType = (0, _updateMetaUtils.getUpdateType)(); | ||
var currentHook = getCurrentHook(updateType, component); | ||
var lastState = currentHook[0]; | ||
var state = getNewState(param, lastState); | ||
var pendingUpdatesKey = (0, _updateMetaUtils.getPendingUpdatesKey)(updateType); | ||
var stateMeta = { | ||
transitionId: _updateMetaUtils.currentTransition.transitionId, | ||
updater: function updater() { | ||
// call getNewState again as currentHook[0] might change if there are multiple setState | ||
currentHook[0] = getNewState(param, currentHook[0]); | ||
} | ||
}; | ||
component[pendingUpdatesKey].push(stateMeta); | ||
reRenderComponentIfRequired(component, state, lastState); | ||
@@ -122,2 +203,13 @@ }]; | ||
/** | ||
* Use state hook | ||
*/ | ||
function useState(initialState) { | ||
return useStateBase(initialState, function (state, lastState) { | ||
if (typeof state === 'function') state = state(lastState); | ||
return state; | ||
}); | ||
} | ||
/** | ||
* Use ref hook | ||
@@ -143,18 +235,13 @@ */ | ||
function useReducer(reducer, initialState, getInitialState) { | ||
var component = currentComponent; | ||
return getHook(function () { | ||
/** | ||
* If getInitialState method is provided, use that to form correct initial state | ||
* Or else use passed initialState | ||
*/ | ||
var _initialState = getInitialState ? getInitialState(initialState) : initialState; // create a reducer hook | ||
/** | ||
* If getInitialState method is provided, use that to form correct initial state | ||
* Or else use passed initialState | ||
*/ | ||
var _initialState = getInitialState ? function () { | ||
return getInitialState(initialState); | ||
} : initialState; | ||
var hook = [_initialState, function (action) { | ||
var lastState = hook[0]; | ||
var state = reducer(lastState, action); | ||
hook[0] = state; | ||
reRenderComponentIfRequired(component, state, lastState); | ||
}]; | ||
return hook; | ||
return useStateBase(_initialState, function (action, lastState) { | ||
var state = reducer(lastState, action); | ||
return state; | ||
}); | ||
@@ -204,3 +291,6 @@ } | ||
hooks = _currentComponent2.hooks; | ||
var lastHook = hooks[pointer] || {}; | ||
var lastHook = hooks[pointer] || { | ||
animationFrame: null, | ||
cleanEffect: null | ||
}; | ||
@@ -284,2 +374,60 @@ var hook = _objectSpread({}, lastHook, { | ||
/** | ||
* Transition hook | ||
*/ | ||
function useTransition(_ref) { | ||
var timeoutMs = _ref.timeoutMs; | ||
var component = currentComponent; | ||
return getHook(function () { | ||
/** | ||
* create a transition hook | ||
*/ | ||
var hook = { | ||
transitionId: (0, _utils.getUniqueId)(), | ||
isPending: false, | ||
transitionTimeout: null, | ||
transitionState: _transitionUtils.TRANSITION_STATE_INITIAL, | ||
suspendCount: 0, | ||
resetIsPending: function resetIsPending() { | ||
var currentHook = getCurrentHook(_updateMetaUtils.UPDATE_TYPE_DEFERRED, component); | ||
clearTimeout(hook.transitionTimeout); | ||
currentHook.isPending = false; | ||
}, | ||
startTransition: function startTransition(cb) { | ||
var currentHook = getCurrentHook(_updateMetaUtils.UPDATE_TYPE_DEFERRED, component); | ||
var root = component.__fiber.root; // set the transitionId globally so that state updates can get the transition id | ||
(0, _updateMetaUtils.withTransition)(currentHook, cb); | ||
/** | ||
* If cb does not have any setState, we don't have to unnecessary | ||
* set isPending flag, transitionState and trigger reRender. | ||
*/ | ||
if (root.lastDeferredCompleteTime > root.deferredUpdateTime) { | ||
currentHook.isPending = true; | ||
currentHook.transitionState = _transitionUtils.TRANSITION_STATE_PENDING; // after setting isPending we will have to re-render the component | ||
(0, _render.reRender)(component); | ||
} | ||
/** | ||
* Set a timeout which set's the is pending to false and then triggers a deferred update | ||
*/ | ||
currentHook.transitionTimeout = setTimeout(function () { | ||
currentHook.transitionState = _transitionUtils.TRANSITION_STATE_TIMED_OUT; | ||
currentHook.isPending = false; | ||
(0, _render.reRender)(component); | ||
}, timeoutMs); | ||
} | ||
}; | ||
return hook; | ||
}, undefined, function (_ref2) { | ||
var startTransition = _ref2.startTransition, | ||
isPending = _ref2.isPending; | ||
return [startTransition, isPending]; | ||
}); | ||
} | ||
/** | ||
* Method to run all the effects of a component | ||
@@ -290,3 +438,4 @@ */ | ||
function runEffects(component) { | ||
var hooks = component.hooks; | ||
var updateType = getUpdateTypeFromComponent(component); | ||
var hooks = getHooksList(updateType, component); | ||
@@ -307,3 +456,4 @@ for (var i = 0, ln = hooks.length; i < ln; i++) { | ||
function cleanEffects(component, unmount) { | ||
var hooks = component.hooks; | ||
var updateType = getUpdateTypeFromComponent(component); | ||
var hooks = getHooksList(updateType, component); | ||
@@ -315,4 +465,9 @@ for (var i = 0, ln = hooks.length; i < ln; i++) { | ||
hook.cleanEffect(); | ||
} // clear any pending transitions on unmount | ||
if (hook.resetIsPending && unmount) { | ||
hook.resetIsPending(); | ||
} | ||
} | ||
} |
@@ -11,11 +11,5 @@ "use strict"; | ||
get: function get() { | ||
return _createElement["default"]; | ||
return _createElement.createElement; | ||
} | ||
}); | ||
Object.defineProperty(exports, "expression", { | ||
enumerable: true, | ||
get: function get() { | ||
return _expression["default"]; | ||
} | ||
}); | ||
Object.defineProperty(exports, "createPortal", { | ||
@@ -135,8 +129,12 @@ enumerable: true, | ||
}); | ||
Object.defineProperty(exports, "unstable_deferredUpdates", { | ||
enumerable: true, | ||
get: function get() { | ||
return _deferredUpdates.deferredUpdates; | ||
} | ||
}); | ||
exports["default"] = void 0; | ||
var _createElement = _interopRequireDefault(require("./createElement")); | ||
var _createElement = require("./createElement"); | ||
var _expression = _interopRequireDefault(require("./expression")); | ||
var _createPortal = _interopRequireDefault(require("./createPortal")); | ||
@@ -160,2 +158,4 @@ | ||
var _deferredUpdates = require("./deferredUpdates"); | ||
/** Portal */ | ||
@@ -178,5 +178,6 @@ | ||
/** unmountComponentAtNode */ | ||
/** unstableBatchedUpdate */ | ||
var Brahmos = { | ||
createElement: _createElement["default"], | ||
expression: _expression["default"], | ||
createElement: _createElement.createElement, | ||
render: _render["default"], | ||
@@ -200,5 +201,6 @@ Component: _Component.Component, | ||
Suspense: _Suspense.Suspense, | ||
lazy: _Suspense.lazy | ||
lazy: _Suspense.lazy, | ||
unstable_deferredUpdates: _deferredUpdates.deferredUpdates | ||
}; | ||
var _default = Brahmos; | ||
exports["default"] = _default; |
@@ -8,13 +8,12 @@ "use strict"; | ||
exports.getInputStateType = getInputStateType; | ||
exports.handleControlledReset = handleControlledReset; | ||
exports.handleInputProperty = handleInputProperty; | ||
exports.getPatchedEventHandler = getPatchedEventHandler; | ||
exports.eventHandlerCache = void 0; | ||
var _utils = require("./utils"); | ||
var _updateMetaUtils = require("./updateMetaUtils"); | ||
var _configs = require("./configs"); | ||
var eventHandlerCache = new WeakMap(); | ||
exports.eventHandlerCache = eventHandlerCache; | ||
function getEffectiveEventName(eventName, node) { | ||
@@ -37,2 +36,14 @@ var nodeName = (0, _utils.getNodeName)(node); | ||
function handleControlledReset(node) { | ||
var inputStateType = getInputStateType(node); // if it is not an controlled input type return | ||
if (!inputStateType) return; | ||
var propValue = node["".concat(inputStateType, "Prop")]; | ||
var value = node[inputStateType]; | ||
if (propValue !== undefined && propValue !== value) { | ||
node[inputStateType] = propValue; | ||
} | ||
} | ||
function handleInputProperty(inputStateType, node, attrName, attrValue) { | ||
@@ -67,48 +78,37 @@ /** | ||
function getPatchedEventHandler(node, handler) { | ||
var patchedHandler = eventHandlerCache.get(handler); | ||
if (patchedHandler) return patchedHandler; | ||
var inputStateType = getInputStateType(node); | ||
function getPatchedEventHandler(node, attrName, handler) { | ||
var eventHandlers = node.__brahmosData.events; | ||
var eventHandlerObj = eventHandlers[attrName]; | ||
/** | ||
* if eventHandlerObj is already defined update it with new handler | ||
* or else create a new object | ||
*/ | ||
// | ||
var scheduleCheckedReset = function scheduleCheckedReset() { | ||
var checkedProp = node.checkedProp, | ||
checked = node.checked; | ||
if (eventHandlerObj) { | ||
eventHandlerObj.handler = handler; | ||
return eventHandlerObj.patched; | ||
} else { | ||
eventHandlerObj = eventHandlers[attrName] = { | ||
handler: handler, | ||
patched: null | ||
}; | ||
} | ||
if (checkedProp !== checked) { | ||
node.checked = checkedProp; | ||
} | ||
}; | ||
eventHandlerObj.patched = function (event) { | ||
var _this = this; | ||
var scheduleValueReset = function scheduleValueReset() { | ||
var valueProp = node.valueProp, | ||
value = node.value; | ||
if (valueProp !== value) { | ||
node.value = valueProp; | ||
// if the handler is defined call the handler | ||
if (eventHandlerObj.handler) { | ||
/** | ||
* set update source as event which will make sure things | ||
* are rendered and committed synchronously | ||
*/ | ||
(0, _updateMetaUtils.withUpdateSource)(_updateMetaUtils.UPDATE_SOURCE_EVENT, function () { | ||
eventHandlerObj.handler.call(_this, event); | ||
}); | ||
} | ||
}; | ||
patchedHandler = function patchedHandler(event) { | ||
if (inputStateType === 'checked') { | ||
var checkedProp = node.checkedProp; | ||
if (checkedProp !== undefined) { | ||
requestAnimationFrame(scheduleCheckedReset); | ||
} | ||
} else if (inputStateType === 'value') { | ||
var valueProp = node.valueProp; | ||
if (valueProp !== undefined) { | ||
requestAnimationFrame(scheduleValueReset); | ||
} | ||
} // if the handler is defined call the handler | ||
if (handler) { | ||
handler.call(this, event); | ||
} | ||
}; | ||
eventHandlerCache.set(handler, patchedHandler); | ||
return patchedHandler; | ||
return eventHandlerObj.patched; | ||
} |
"use strict"; | ||
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); | ||
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard"); | ||
@@ -11,37 +11,112 @@ Object.defineProperty(exports, "__esModule", { | ||
var _updater = _interopRequireDefault(require("./updater")); | ||
var Brahmos = _interopRequireWildcard(require("./createElement")); | ||
var _associateInstance = _interopRequireDefault(require("./associateInstance")); | ||
var _updateMetaUtils = require("./updateMetaUtils"); | ||
var _transitionUtils = require("./transitionUtils"); | ||
var _fiber = require("./fiber"); | ||
var _workLoop = require("./workLoop"); | ||
var _utils = require("./utils"); | ||
function BrahmosRootComponent(_ref) { | ||
var children = _ref.children; | ||
return children; | ||
} | ||
/** | ||
* Method to render a node | ||
*/ | ||
function render(node, target) { | ||
var rootNode = Brahmos.createElement(BrahmosRootComponent, {}, node); | ||
var part = { | ||
parentNode: target, | ||
isNode: true | ||
}; // associate instance on node using last rendered node | ||
}; | ||
var rootFiber = target.__rootFiber; | ||
var fiber; | ||
var renderedNode = target.__brahmosNode; | ||
if (!rootFiber) { | ||
rootFiber = (0, _fiber.createHostFiber)(target); | ||
fiber = (0, _fiber.createFiber)(rootFiber, rootNode, part); // make the rootFiber parent of fiber | ||
if (renderedNode) { | ||
(0, _associateInstance["default"])(node, renderedNode); | ||
} // pass the context as empty object | ||
fiber.parent = rootFiber; // make the root fiber the wip fiber of rootFiber | ||
rootFiber.current = fiber; // add root fiber on target | ||
(0, _updater["default"])([part], [node], [], {}, false, false, true); // store the node reference on target | ||
target.__rootFiber = rootFiber; | ||
/** | ||
* do not schedule in first render | ||
* NOTE: This will also affect sync setStates inside componentDidMount, or useEffects. | ||
* This is expected to prevent multiple repaints | ||
*/ | ||
target.__brahmosNode = node; | ||
return node.componentInstance; | ||
rootFiber.preventSchedule = true; | ||
} else { | ||
/** | ||
* TODO: Check this part of logic looks incorrect | ||
* if we are calling render method again, start again, | ||
* no need to clone the root fiber as it will always be different | ||
*/ | ||
fiber = rootFiber.current; | ||
fiber.processedTime = 0; | ||
fiber.node = rootNode; | ||
} | ||
(0, _workLoop.doSyncProcessing)(rootFiber.current); | ||
(0, _utils.afterCurrentStack)(function () { | ||
// reset preventSchedule after render | ||
rootFiber.preventSchedule = false; | ||
}); | ||
} | ||
/** | ||
* Method to rerender a given component | ||
* In case of reRender, start from the root, | ||
* clone the current fiber to wip, and use the wip which is pointing | ||
* to children of current tree. | ||
*/ | ||
function reRender(component, forceUpdate) { | ||
var part = component.__part, | ||
node = component.__componentNode, | ||
context = component.__context; | ||
(0, _updater["default"])([part], [node], [], context, forceUpdate, false, true); | ||
function reRender(component) { | ||
var fiber = component.__fiber; | ||
var root = fiber.root; // set updateTime on fiber parent hierarchy based on updateType | ||
var updateType = (0, _updateMetaUtils.getUpdateType)(); | ||
(0, _fiber.setUpdateTime)(fiber, updateType); // if the update source is transition add the transition in pending transition | ||
if (_updateMetaUtils.updateSource === _updateMetaUtils.UPDATE_SOURCE_TRANSITION) { | ||
var pendingTransitions = root.pendingTransitions; | ||
/** | ||
* If it is predefined deferred transition, we need to add current transition | ||
* as first item as PREDEFINED_TRANSITION_DEFERRED has more priority | ||
* or else add it in last of pendingTransitions | ||
*/ | ||
var arrayAddMethod = _updateMetaUtils.currentTransition === _transitionUtils.PREDEFINED_TRANSITION_DEFERRED ? 'unshift' : 'push'; // add the current transition to pending transition if it isn't already there. | ||
if (!pendingTransitions.includes(_updateMetaUtils.currentTransition)) { | ||
pendingTransitions[arrayAddMethod](_updateMetaUtils.currentTransition); | ||
} | ||
} | ||
/** | ||
* if there is already a batch update happening, early return | ||
* as all the state change will be covered with that batch update | ||
*/ | ||
if (root.batchUpdates[_updateMetaUtils.updateSource]) return; | ||
root.batchUpdates[_updateMetaUtils.updateSource] = (0, _utils.afterCurrentStack)(function () { | ||
// reset batch update so it can start taking new updates | ||
root.batchUpdates[_updateMetaUtils.updateSource] = null; | ||
root.updateSource = _updateMetaUtils.updateSource; // if there is any work to done, perform the work else do deferred processing | ||
if (root.lastCompleteTime < root.updateTime) { | ||
(0, _workLoop.doSyncProcessing)(_updateMetaUtils.updateSource === _updateMetaUtils.UPDATE_SOURCE_EVENT ? fiber : root.current); | ||
} else { | ||
(0, _workLoop.doDeferredProcessing)(root); | ||
} | ||
}); | ||
} |
"use strict"; | ||
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard"); | ||
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); | ||
@@ -22,3 +24,3 @@ | ||
var _index = _interopRequireDefault(require("./index")); | ||
var Brahmos = _interopRequireWildcard(require("./createElement")); | ||
@@ -101,3 +103,3 @@ var _Component2 = require("./Component"); | ||
return _index["default"].createElement(Provider, { | ||
return Brahmos.createElement(Provider, { | ||
value: lazyElements | ||
@@ -115,3 +117,3 @@ }, resolved ? children : fallback); | ||
return (0, _refs.forwardRef)(function (props, ref) { | ||
return _index["default"].createElement(Consumer, {}, function (lazyElements) { | ||
return Brahmos.createElement(Consumer, {}, function (lazyElements) { | ||
/** | ||
@@ -122,3 +124,3 @@ * if lazy component is already loaded just render it, | ||
if (Component) { | ||
return _index["default"].createElement(Component, _objectSpread({}, props, { | ||
return Brahmos.createElement(Component, _objectSpread({}, props, { | ||
ref: ref | ||
@@ -125,0 +127,0 @@ })); |
@@ -8,2 +8,4 @@ "use strict"; | ||
var _utils = require("./utils"); | ||
/** | ||
@@ -21,2 +23,3 @@ * Generate a similar structure as Template node from BrahmosTagElement, | ||
var domElement = isSvgPart ? document.createElementNS('http://www.w3.org/2000/svg', element) : document.createElement(element); | ||
(0, _utils.addDataContainer)(domElement); | ||
var attributePart = { | ||
@@ -26,3 +29,3 @@ isAttribute: true, | ||
attrIndex: 0, | ||
node: domElement | ||
domNode: domElement | ||
}; | ||
@@ -29,0 +32,0 @@ var nodePart = { |
@@ -8,2 +8,3 @@ "use strict"; | ||
}); | ||
exports.createTagNode = createTagNode; | ||
exports.html = html; | ||
@@ -13,4 +14,13 @@ | ||
var _brahmosNode = require("./brahmosNode"); | ||
var templateTagCache = new WeakMap(); | ||
function createTagNode(template, values) { | ||
var node = (0, _brahmosNode.brahmosNode)(null, values, ''); | ||
node.nodeType = _brahmosNode.TAG_NODE; | ||
node.template = template; | ||
return node; | ||
} | ||
function html(strings) { | ||
@@ -28,7 +38,3 @@ var template = templateTagCache.get(strings); | ||
return { | ||
template: template, | ||
values: values, | ||
__$isBrahmosTag$__: true | ||
}; | ||
return createTagNode(template, values); | ||
} |
"use strict"; | ||
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); | ||
Object.defineProperty(exports, "__esModule", { | ||
value: true | ||
}); | ||
exports["default"] = tearDown; | ||
exports["default"] = _default; | ||
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray")); | ||
var _utils = require("./utils"); | ||
var _brahmosNode = require("./brahmosNode"); | ||
var _mountAndEffectQueue = require("./mountAndEffectQueue"); | ||
@@ -31,3 +29,3 @@ | ||
if (componentInstance && componentInstance.__mounted) { | ||
if (node.__$isBrahmosClassComponent$__) { | ||
if (node.nodeType === _brahmosNode.CLASS_COMPONENT_NODE) { | ||
(0, _utils.callLifeCycle)(componentInstance, 'componentWillUnmount'); // set the ref as null of a class component | ||
@@ -52,7 +50,9 @@ | ||
for (var i = 0, ln = node.length; i < ln; i++) { | ||
tearDown(node[i]); | ||
tearDownNode(node[i]); | ||
} | ||
} else if (node.__$isBrahmosTag$__) { | ||
} else if ((0, _brahmosNode.isTagNode)(node)) { | ||
var values = node.values, | ||
parts = node.templateNode.parts; | ||
_node$templateNode = node.templateNode, | ||
parts = _node$templateNode.parts, | ||
domNodes = _node$templateNode.domNodes; | ||
@@ -64,3 +64,3 @@ for (var _i = 0, _ln = parts.length; _i < _ln; _i++) { | ||
if (part.isNode) { | ||
tearDown(value); | ||
tearDownNode(value); | ||
} // if part is attribute type look for ref attribute and set the ref as null | ||
@@ -70,7 +70,3 @@ | ||
if (part.isAttribute) { | ||
Object.entries(value).forEach(function (_ref) { | ||
var _ref2 = (0, _slicedToArray2["default"])(_ref, 2), | ||
attrName = _ref2[0], | ||
attrValue = _ref2[1]; | ||
(0, _utils.loopEntries)(value, function (attrName, attrValue) { | ||
if (attrName === 'ref') { | ||
@@ -81,8 +77,10 @@ (0, _refs.setRef)(attrValue, null); | ||
} | ||
} // remove the template node | ||
} // remove all the elements of templateNode | ||
(0, _utils.remove)(domNodes); // remove the template node | ||
node.templateNode = null; // call the ref methods of attribute parts | ||
} else if (node.__$isBrahmosComponent$__) { | ||
tearDown(componentInstance.__nodes); // mark componentInstance as unmounted | ||
} else if ((0, _brahmosNode.isComponentNode)(node)) { | ||
tearDownNode(componentInstance.__nodes); // mark componentInstance as unmounted | ||
@@ -95,5 +93,5 @@ componentInstance.__mounted = false; // remove the componentInstance from node; | ||
function tearDown(node, part) { | ||
function tearDownNode(node, part) { | ||
// bail out if node is non-renderable node or if the node is reused (It might be on different index ) | ||
if (!(0, _utils.isRenderableNode)(node) || node.isReused) return; | ||
if (!(0, _brahmosNode.isRenderableNode)(node) || node.isReused) return; | ||
/** | ||
@@ -115,11 +113,21 @@ * in case of portal nodes the passed part information will be incorrect | ||
handleUnmount(node); // if part is defined it means we need to delete all nodes on a given part | ||
handleUnmount(node); // // if part is defined it means we need to delete all nodes on a given part | ||
// if (part) { | ||
// const { parentNode, previousSibling, nextSibling } = part; | ||
// deleteNodesBetween(parentNode, previousSibling, nextSibling); | ||
// } | ||
} | ||
if (part) { | ||
var _part = part, | ||
parentNode = _part.parentNode, | ||
previousSibling = _part.previousSibling, | ||
nextSibling = _part.nextSibling; | ||
(0, _utils.deleteNodesBetween)(parentNode, previousSibling, nextSibling); | ||
} | ||
function _default(root) { | ||
var tearDownFibers = root.tearDownFibers; | ||
for (var i = 0, ln = tearDownFibers.length; i < ln; i++) { | ||
var _tearDownFibers$i = tearDownFibers[i], | ||
node = _tearDownFibers$i.node, | ||
part = _tearDownFibers$i.part; | ||
tearDownNode(node, part); | ||
} // rest the tear down fibers | ||
root.tearDownFibers = []; | ||
} |
@@ -37,3 +37,4 @@ "use strict"; | ||
this.nodes = (0, _utils.toArray)(this.fragment.childNodes); | ||
this.domNodes = (0, _utils.toArray)(this.fragment.childNodes); | ||
this.patched = false; | ||
} | ||
@@ -57,11 +58,5 @@ | ||
*/ | ||
return document.createTreeWalker(node, NodeFilter.SHOW_ALL, function (node) { | ||
var nodeType = node.nodeType; | ||
if (nodeType === 1 || nodeType === 8) { | ||
return NodeFilter.FILTER_ACCEPT; | ||
} | ||
return NodeFilter.FILTER_SKIP; | ||
}, false); | ||
return document.createTreeWalker(node, 129, // NodeFilter.SHOW_ELEMENT + NodeFilter.COMMENT | ||
null, // Don't use tree walker filter function. Its painfully slow, try to find better filter code instead. You can add multiple filter type to form a number | ||
false); | ||
} | ||
@@ -115,6 +110,9 @@ }, { | ||
parts.push(_objectSpread({}, partMeta, { | ||
node: current | ||
// Spread object is slow, but bublejs compiles it to Object.assign which is optimized | ||
domNode: current | ||
})); | ||
goToNextPart(); | ||
} | ||
(0, _utils.addDataContainer)(current); | ||
} else if (isBrahmosCommentNode(current)) { | ||
@@ -143,2 +141,3 @@ /** | ||
parts.push(_objectSpread({}, partMeta, { | ||
// Spread object is slow, but bublejs compiles it to Object.assign which is optimized | ||
parentNode: parentNode, | ||
@@ -145,0 +144,0 @@ previousSibling: previousSibling, |
@@ -55,2 +55,5 @@ "use strict"; | ||
this.strings = strings; | ||
this.template = null; | ||
this.svgTemplate = null; | ||
this.partsMeta = []; | ||
} | ||
@@ -57,0 +60,0 @@ |
"use strict"; | ||
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); | ||
Object.defineProperty(exports, "__esModule", { | ||
@@ -10,4 +8,2 @@ value: true | ||
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray")); | ||
var _utils = require("./utils"); | ||
@@ -27,7 +23,3 @@ | ||
Object.entries(newObj).forEach(function (_ref) { | ||
var _ref2 = (0, _slicedToArray2["default"])(_ref, 2), | ||
key = _ref2[0], | ||
value = _ref2[1]; | ||
(0, _utils.loopEntries)(newObj, function (key, value) { | ||
var oldValue = oldObj[key]; | ||
@@ -40,7 +32,3 @@ | ||
Object.entries(oldObj).forEach(function (_ref3) { | ||
var _ref4 = (0, _slicedToArray2["default"])(_ref3, 2), | ||
key = _ref4[0], | ||
value = _ref4[1]; | ||
(0, _utils.loopEntries)(oldObj, function (key, value) { | ||
if (newObj[key] === undefined) { | ||
@@ -61,13 +49,10 @@ cb(key, resetValue, value); | ||
var eventName = (0, _utils.getEventName)(attrName); | ||
eventName = (0, _reactEvents.getEffectiveEventName)(eventName, node); // remove old event and assign it again | ||
eventName = (0, _reactEvents.getEffectiveEventName)(eventName, node); // get patched event handler | ||
if (oldAttrValue) { | ||
var oldPatchedHandler = _reactEvents.eventHandlerCache.get(oldAttrValue) || oldAttrValue; | ||
node.removeEventListener(eventName, oldPatchedHandler); | ||
} // if new event is defined assign new event handler | ||
var patchedHandler = (0, _reactEvents.getPatchedEventHandler)(node, attrName, attrValue); // if new event handler is not there but it had old handler, remove the old one | ||
if (attrValue) { | ||
var patchedEventHandler = (0, _reactEvents.getPatchedEventHandler)(node, attrValue); | ||
node.addEventListener(eventName, patchedEventHandler); | ||
if (oldAttrValue && !attrValue) { | ||
node.removeEventListener(eventName, patchedHandler); // if the event is getting added first time add a listener | ||
} else if (!oldAttrValue && attrValue) { | ||
node.addEventListener(eventName, patchedHandler); | ||
} // handle style attributes | ||
@@ -138,3 +123,5 @@ | ||
setAttribute(node, attrName, attrValue, oldAttrValue, isSvgAttribute); | ||
}); | ||
}); // handle controlled input resetting | ||
(0, _reactEvents.handleControlledReset)(node); | ||
} |
"use strict"; | ||
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard"); | ||
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); | ||
@@ -10,2 +12,4 @@ | ||
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); | ||
var _functionalComponentInstance = _interopRequireDefault(require("./functionalComponentInstance")); | ||
@@ -21,2 +25,4 @@ | ||
var _brahmosNode = require("./brahmosNode"); | ||
var _hooks = require("./hooks"); | ||
@@ -26,6 +32,10 @@ | ||
var _updateNode = _interopRequireDefault(require("./updateNode")); | ||
var _updateNode = _interopRequireWildcard(require("./updateNode")); | ||
var _shallowEqual = _interopRequireDefault(require("./helpers/shallowEqual")); | ||
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } | ||
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } | ||
function getCurrentContext(Component, componentInstance, context) { | ||
@@ -36,3 +46,3 @@ // if component has createContext index, we treat it as provider | ||
if (!__ccId) return context; // if componentInstance has context return that | ||
if (!__ccId) return context; // if it is a provider and componentInstance has context return that | ||
@@ -63,5 +73,6 @@ if (__context) return __context; // if it is provider create a new context extending the parent context | ||
var Component = node.type, | ||
nodeType = node.nodeType, | ||
componentInstance = node.componentInstance, | ||
props = node.props, | ||
isClassComponent = node.__$isBrahmosClassComponent$__; | ||
props = node.props; | ||
var isClassComponent = nodeType === _brahmosNode.CLASS_COMPONENT_NODE; | ||
var forceUpdateAll = forceUpdate === 'all'; | ||
@@ -108,2 +119,15 @@ var oldNodes = componentInstance.__nodes; | ||
/** | ||
* Fiber architecture related code | ||
*/ | ||
var childNodes = (0, _updateNode.getChildNodes)(part, newNodes, oldNodes, context, forceUpdateAll, isSvgPart); | ||
if (childNodes) { | ||
(0, _brahmosNode.link)(node, childNodes); | ||
} | ||
/** | ||
* Fiber architecture related code end | ||
*/ | ||
/** | ||
* For Suspense component if there are lazy elements which are not loaded yet | ||
@@ -117,2 +141,3 @@ * If the status is resolved it means it means the suspended node are still attached | ||
if (componentInstance instanceof _index.Suspense && componentInstance.lazyElements.length > 0 && componentInstance.state.resolved) { | ||
@@ -154,13 +179,34 @@ componentInstance.state.resolved = false; | ||
function updateComponentNode(part, node, oldNode, context, forceUpdate, isSvgPart) { | ||
var Component = node.type, | ||
_node$props = node.props, | ||
var _node = node, | ||
Component = _node.type, | ||
nodeType = _node.nodeType, | ||
_node$props = _node.props, | ||
props = _node$props === void 0 ? {} : _node$props, | ||
isClassComponent = node.__$isBrahmosClassComponent$__, | ||
ref = node.ref; | ||
ref = _node.ref; | ||
oldNode = oldNode || {}; | ||
var isFirstRender = false; | ||
var shouldUpdate = true; | ||
var isClassComponent = nodeType === _brahmosNode.CLASS_COMPONENT_NODE; | ||
/** | ||
* if the node already has componentInstance, and node reference is different from oldNode, | ||
* it means the node is already being used somewhere, so duplicate the node | ||
*/ | ||
if (node.componentInstance && node !== oldNode) { | ||
node = _objectSpread({}, node, { | ||
componentInstance: null, | ||
mountHandler: null | ||
}); | ||
} | ||
if (oldNode && oldNode.type === node.type) { | ||
node.componentInstance = oldNode.componentInstance; | ||
oldNode.isReused = true; | ||
} | ||
/** If Component instance is not present on node create a new instance */ | ||
var componentInstance = node.componentInstance; | ||
var _node2 = node, | ||
componentInstance = _node2.componentInstance; | ||
if (!componentInstance) { | ||
@@ -250,8 +296,7 @@ // create an instance of the component | ||
(0, _refs.setRef)(ref, componentInstance); // call getSnapshotBeforeUpdate life cycle method | ||
snapshot = (0, _utils.callLifeCycle)(componentInstance, 'getSnapshotBeforeUpdate', [prevProps, prevState]); | ||
(0, _refs.setRef)(ref, componentInstance); | ||
} | ||
/** | ||
* update a component update only if it can be updated based on shouldComponentUpdate | ||
* update a component update only if it can be updated based on shouldComponentUpdate, Pure Component, firstRender | ||
* shouldUpdate will hold correct value for it | ||
* Or if the child component has to render based on forceUpdate | ||
@@ -262,16 +307,31 @@ */ | ||
if (shouldUpdate || forceUpdate === 'all') { | ||
// call getSnapshotBeforeUpdate life cycle method | ||
snapshot = (0, _utils.callLifeCycle)(componentInstance, 'getSnapshotBeforeUpdate', [prevProps, prevState]); // render component with error boundaries | ||
renderWithErrorBoundaries(part, node, context, shouldUpdate, forceUpdate, isSvgPart, isFirstRender, true); | ||
} | ||
/** | ||
* if it is a first render then schedule the componentDidMount/runEffects | ||
* We schedule componentDidMount/runEffects as the component may mount in fragment, but we want to | ||
* call componentDidMount/runEffects only after it is attached to the DOM | ||
*/ | ||
/** | ||
* if it is a first render then schedule the componentDidMount/runEffects | ||
* We schedule componentDidMount/runEffects as the component may mount in fragment, but we want to | ||
* call componentDidMount/runEffects only after it is attached to the DOM | ||
*/ | ||
if (isFirstRender) { | ||
node.mountHandler = function () { | ||
if (isClassComponent) { | ||
// call componentDidMount for class components | ||
(0, _utils.callLifeCycle)(componentInstance, 'componentDidMount'); | ||
} else { | ||
// call effects of functional component | ||
(0, _hooks.runEffects)(componentInstance); | ||
} | ||
if (isFirstRender) { | ||
node.mountHandler = function () { | ||
componentInstance.__mounted = true; | ||
}; | ||
(0, _mountAndEffectQueue.addHandler)(node.mountHandler); | ||
} else { | ||
// on updates call componentDidUpdate/runEffects directly | ||
if (isClassComponent) { | ||
// call componentDidMount for class components | ||
(0, _utils.callLifeCycle)(componentInstance, 'componentDidMount'); | ||
// call componentDidUpdate for class components | ||
(0, _utils.callLifeCycle)(componentInstance, 'componentDidUpdate', [prevProps, prevState, snapshot]); | ||
} else { | ||
@@ -281,15 +341,2 @@ // call effects of functional component | ||
} | ||
componentInstance.__mounted = true; | ||
}; | ||
(0, _mountAndEffectQueue.addHandler)(node.mountHandler); | ||
} else { | ||
// on updates call componentDidUpdate/runEffects directly | ||
if (isClassComponent) { | ||
// call componentDidUpdate for class components | ||
(0, _utils.callLifeCycle)(componentInstance, 'componentDidUpdate', [prevProps, prevState, snapshot]); | ||
} else { | ||
// call effects of functional component | ||
(0, _hooks.runEffects)(componentInstance); | ||
} | ||
@@ -296,0 +343,0 @@ } // return the component's lastNode |
@@ -9,3 +9,6 @@ "use strict"; | ||
exports["default"] = updateNode; | ||
exports.getChildNodes = getChildNodes; | ||
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); | ||
var _TemplateNode = _interopRequireDefault(require("./TemplateNode")); | ||
@@ -17,2 +20,4 @@ | ||
var _brahmosNode = require("./brahmosNode"); | ||
var _tearDown = _interopRequireDefault(require("./tearDown")); | ||
@@ -24,2 +29,6 @@ | ||
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } | ||
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } | ||
/** | ||
@@ -42,7 +51,7 @@ * Updater to handle text node | ||
/** | ||
* In case of old node is not a text node or undefined, or textNode is not present | ||
* delete old node and add new node | ||
*/ | ||
* In case of old node is not a text node or undefined, or textNode is not present | ||
* delete old node and add new node | ||
*/ | ||
if (!(0, _utils.isPrimitiveNode)(oldNode) || !textNode) { | ||
if (!(0, _brahmosNode.isPrimitiveNode)(oldNode) || !textNode) { | ||
if (oldNode !== undefined) { | ||
@@ -65,5 +74,5 @@ // delete the existing elements | ||
if (oldNode.__$isBrahmosTag$__) { | ||
lastNode = (0, _utils.lastItem)(oldNode.templateNode.nodes); | ||
} else if (oldNode.__$isBrahmosComponent$__) { | ||
if ((0, _brahmosNode.isTagNode)(oldNode)) { | ||
lastNode = (0, _utils.lastItem)(oldNode.templateNode.domNodes); | ||
} else if ((0, _brahmosNode.isComponentNode)(oldNode)) { | ||
lastNode = oldNode.componentInstance.__lastNode; | ||
@@ -91,3 +100,3 @@ } | ||
while ((0, _utils.isBrahmosNode)(oldNode) && !oldNode.isReused) { | ||
while ((0, _brahmosNode.isBrahmosNode)(oldNode) && !oldNode.isReused) { | ||
(0, _tearDown["default"])(oldNode, { | ||
@@ -104,5 +113,17 @@ parentNode: parentNode, | ||
} | ||
function formNodeMap(nodes) { | ||
var maps = new Map(); | ||
for (var i = 0, ln = nodes.length; i < ln; i++) { | ||
var node = nodes[i]; | ||
var key = (0, _utils.getKey)(node, i); | ||
maps.set(key, node); | ||
} | ||
return maps; | ||
} | ||
/** | ||
* Updater to handle array of nodes | ||
*/ | ||
* Updater to handle array of nodes | ||
*/ | ||
@@ -119,14 +140,30 @@ | ||
var lastChild = previousSibling; | ||
var oldNodesMap = formNodeMap(oldNodes); // mark oldNodes reused if it is used on new node | ||
for (var i = 0; i < nodesLength; i++) { | ||
var node = nodes[i]; // delete unused non brahmos node | ||
for (var i = 0, ln = nodes.length; i < ln; i++) { | ||
var node = nodes[i]; | ||
var key = (0, _utils.getKey)(node, i); | ||
var oldNode = oldNodesMap.get(key); | ||
var oldNode = spliceUnusedNodes(i, oldNodes, parentNode, lastChild); | ||
if (oldNode && (0, _brahmosNode.isBrahmosNode)(oldNode)) { | ||
oldNode.isReused = true; | ||
} | ||
} | ||
for (var _i = 0; _i < nodesLength; _i++) { | ||
var _node = nodes[_i]; | ||
var _key = (0, _utils.getKey)(_node, _i); | ||
var _oldNode = oldNodesMap.get(_key); // delete unused non brahmos node | ||
var currentOldNode = spliceUnusedNodes(_i, oldNodes, parentNode, lastChild); | ||
/** | ||
* Pass forceUpdate as all when | ||
* - node is primitive type as they don't have any key | ||
* - when newNodes and oldNodes keys are not same | ||
*/ | ||
* Pass forceUpdate as all when | ||
* - node is primitive type as they don't have any key | ||
* - when newNodes and oldNodes keys are not same | ||
*/ | ||
var forceUpdate = ((0, _utils.isPrimitiveNode)(node) || node && oldNode && node.key !== oldNode.key) && 'all'; | ||
var forceUpdate = ((0, _brahmosNode.isPrimitiveNode)(_node) || _node && currentOldNode && _node.key !== currentOldNode.key) && 'all'; | ||
/** | ||
@@ -151,8 +188,8 @@ * if lasChild is not present it means the node has to be added before the firstChild | ||
isNode: true | ||
}, node, oldNode, context, forceUpdate, isSvgPart) || lastChild; | ||
}, _node, _oldNode, context, forceUpdate, isSvgPart) || lastChild; | ||
} // teardown all extra pending old nodes | ||
for (var _i = nodesLength, ln = oldNodes.length; _i < ln; _i++) { | ||
(0, _tearDown["default"])(oldNodes[_i]); | ||
for (var _i2 = nodesLength, _ln = oldNodes.length; _i2 < _ln; _i2++) { | ||
(0, _tearDown["default"])(oldNodes[_i2]); | ||
} // remove all extra nodes between lastChild and nextSibling | ||
@@ -173,15 +210,34 @@ | ||
nextSibling = part.nextSibling; | ||
var templateNode = node.templateNode, | ||
values = node.values, | ||
oldValues = node.oldValues, | ||
isTagElement = node.__$isBrahmosTagElement$__, | ||
element = node.element; | ||
var freshRender; // if the node is an svg element set the isSvgPart true | ||
var _node2 = node, | ||
values = _node2.values, | ||
nodeType = _node2.nodeType, | ||
element = _node2.element; | ||
var isTagElement = nodeType === _brahmosNode.TAG_ELEMENT_NODE; // if the node is an svg element set the isSvgPart true | ||
isSvgPart = isSvgPart || element === 'svg'; | ||
/** | ||
* if you don't get the old template node it means you have to render the node first time | ||
* in such cases delete the nodes where the template node is supposed to be present. | ||
*/ | ||
* if the node already has templateNode, and node reference is different from oldNode, | ||
* it means the node is already being used somewhere, so duplicate the node | ||
*/ | ||
if (node.templateNode && node !== oldNode) { | ||
node = _objectSpread({}, node, { | ||
templateNode: null | ||
}); | ||
} | ||
if (oldNode && oldNode.template === node.template) { | ||
node.templateNode = oldNode.templateNode; | ||
oldNode.isReused = true; | ||
} | ||
var oldValues = oldNode && oldNode.values ? oldNode.values : []; | ||
var freshRender; | ||
var _node3 = node, | ||
templateNode = _node3.templateNode; | ||
/** | ||
* if you don't get the old template node it means you have to render the node first time | ||
* in such cases delete the nodes where the template node is supposed to be present. | ||
*/ | ||
if (!templateNode) { | ||
@@ -208,3 +264,4 @@ freshRender = true; | ||
if (node !== oldNode) { | ||
(0, _updater["default"])(templateNode.parts, values, oldValues, context, false, isSvgPart); | ||
var children = (0, _updater["default"])(templateNode.parts, values, oldValues, context, false, isSvgPart); | ||
(0, _brahmosNode.link)(node, children); | ||
} | ||
@@ -221,10 +278,10 @@ | ||
templateNode.nodes = (0, _utils.insertBefore)(parentNode, nextSibling, templateNode.fragment); | ||
templateNode.domNodes = (0, _utils.insertBefore)(parentNode, nextSibling, templateNode.fragment); | ||
} | ||
/** | ||
* Rearrange node if forceUpdate is set and the element is not on correct position | ||
*/ | ||
* Rearrange node if forceUpdate is set and the element is not on correct position | ||
*/ | ||
var firstChild = templateNode.nodes[0]; | ||
var firstChild = templateNode.domNodes[0]; | ||
var onCorrectPos = firstChild && firstChild.previousSibling === previousSibling; | ||
@@ -234,18 +291,18 @@ | ||
// add nodes at the right position | ||
(0, _utils.insertBefore)(parentNode, nextSibling, templateNode.nodes); | ||
(0, _utils.insertBefore)(parentNode, nextSibling, templateNode.domNodes); | ||
} | ||
return (0, _utils.lastItem)(templateNode.nodes); | ||
return (0, _utils.lastItem)(templateNode.domNodes); | ||
} | ||
/** | ||
* Updater to handle any type of node | ||
*/ | ||
* Updater to handle any type of node | ||
*/ | ||
function updateNode(part, node, oldNode, context, forceUpdate, isSvgPart) { | ||
if (!(0, _utils.isRenderableNode)(node)) { | ||
if (!(0, _brahmosNode.isRenderableNode)(node)) { | ||
/** | ||
* If the new node is falsy value and | ||
* the oldNode is present we have to delete the old node | ||
* */ | ||
* If the new node is falsy value and | ||
* the oldNode is present we have to delete the old node | ||
* */ | ||
if (oldNode !== undefined) { | ||
@@ -257,9 +314,34 @@ // delete the existing elements | ||
return updateArrayNodes(part, node, oldNode, context, isSvgPart); | ||
} else if (node.__$isBrahmosComponent$__) { | ||
} else if ((0, _brahmosNode.isComponentNode)(node)) { | ||
return (0, _updateComponentNode["default"])(part, node, oldNode, context, forceUpdate, isSvgPart); | ||
} else if (node.__$isBrahmosTag$__) { | ||
} else if ((0, _brahmosNode.isTagNode)(node)) { | ||
return updateTagNode(part, node, oldNode, context, forceUpdate, isSvgPart); | ||
} else if ((0, _utils.isPrimitiveNode)(node) && (node !== oldNode || forceUpdate)) { | ||
} else if ((0, _brahmosNode.isPrimitiveNode)(node) && (node !== oldNode || forceUpdate)) { | ||
return updateTextNode(part, node, oldNode); | ||
} | ||
} | ||
function getChildNodes(part, node, oldNode, context, forceUpdate, isSvgPart) { | ||
if (!(0, _brahmosNode.isRenderableNode)(node)) { | ||
/** | ||
* If the new node is falsy value and | ||
* the oldNode is present we have to delete the old node | ||
* */ | ||
if (oldNode !== undefined) { | ||
// delete the existing elements | ||
(0, _tearDown["default"])(oldNode, part); | ||
} | ||
} else if (Array.isArray(node)) { | ||
return updateArrayNodes(part, node, oldNode, context, isSvgPart); | ||
} else if ((0, _brahmosNode.isBrahmosNode)(node)) { | ||
node.part = part; | ||
node.oldNode = oldNode; | ||
return node; | ||
} else if ((0, _brahmosNode.isPrimitiveNode)(node) && (node !== oldNode || forceUpdate)) { | ||
var primitiveNode = (0, _brahmosNode.brahmosNode)(); | ||
primitiveNode.part = part; | ||
primitiveNode.value = node; | ||
primitiveNode.oldNode = oldNode; | ||
return primitiveNode; | ||
} | ||
} |
@@ -9,6 +9,8 @@ "use strict"; | ||
exports.isAttrOverridden = isAttrOverridden; | ||
exports["default"] = updater; | ||
exports["default"] = partsToNode; | ||
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray")); | ||
var _utils = require("./utils"); | ||
var _brahmosNode = require("./brahmosNode"); | ||
var _updateAttribute = _interopRequireDefault(require("./updateAttribute")); | ||
@@ -30,8 +32,4 @@ | ||
function updater(parts, values) { | ||
var oldValues = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : []; | ||
var context = arguments.length > 3 ? arguments[3] : undefined; | ||
var forceUpdate = arguments.length > 4 ? arguments[4] : undefined; | ||
var isSvgPart = arguments.length > 5 ? arguments[5] : undefined; | ||
var root = arguments.length > 6 ? arguments[6] : undefined; | ||
function partsToNode(parts, values, oldValues, context, forceUpdate, isSvgPart, root) { | ||
var children = []; | ||
@@ -45,2 +43,3 @@ var _loop = function _loop(_i, ln) { | ||
isNode = _part.isNode; | ||
var node = (0, _brahmosNode.brahmosNode)(); | ||
@@ -50,12 +49,8 @@ if (isAttribute) { | ||
var _part2 = part, | ||
node = _part2.node; // mix all the consecutive attributes if they belong to same node | ||
domNode = _part2.domNode; // mix all the consecutive attributes if they belong to same domNode | ||
var dynamicAttributes = {}; | ||
while (part && node === part.node) { | ||
Object.entries(values[_i]).forEach(function (_ref) { | ||
var _ref2 = (0, _slicedToArray2["default"])(_ref, 2), | ||
attrName = _ref2[0], | ||
attrValue = _ref2[1]; | ||
while (part && domNode === part.domNode) { | ||
(0, _utils.loopEntries)(values[_i], function (attrName, attrValue) { | ||
var overrideAttrNameCheck = _configs.MODIFIED_ATTRIBUTES[attrName]; | ||
@@ -68,3 +63,3 @@ var isOverridden = isAttrOverridden(part.tagAttrs, overrideAttrNameCheck, part.attrIndex); | ||
// Note only functional refs are supported | ||
(0, _refs.setRef)(attrValue, node); | ||
(0, _refs.setRef)(attrValue, domNode); | ||
} | ||
@@ -77,11 +72,25 @@ }); | ||
_i--; | ||
var oldDynamicAttributes = node.__dynamicAttributes || {}; // store the dynamic attribute reference on node so it can be used on next render | ||
var brahmosData = domNode.__brahmosData; | ||
var oldDynamicAttributes = brahmosData.attributes || {}; // store the dynamic attribute reference on node so it can be used on next render | ||
node.__dynamicAttributes = dynamicAttributes; | ||
(0, _updateAttribute["default"])(node, dynamicAttributes, oldDynamicAttributes, isSvgPart); | ||
brahmosData.attributes = dynamicAttributes; | ||
node.value = dynamicAttributes; | ||
node.oldValue = oldDynamicAttributes; | ||
(0, _updateAttribute["default"])(domNode, dynamicAttributes, oldDynamicAttributes, isSvgPart); | ||
})(); | ||
} else if (isNode) { | ||
if ((0, _brahmosNode.isBrahmosNode)(value)) { | ||
node = value; | ||
} else { | ||
node.value = value; | ||
} | ||
node.oldValue = oldValue; // check if node is used earlier | ||
(0, _updateNode["default"])(part, value, oldValue, context, forceUpdate, isSvgPart); | ||
} | ||
node.part = part; | ||
node.isSvgPart = isSvgPart; | ||
children.push(node); | ||
i = _i; | ||
@@ -102,2 +111,4 @@ }; | ||
} | ||
return children; | ||
} |
110
lib/utils.js
@@ -13,3 +13,6 @@ "use strict"; | ||
exports.isCustomElement = isCustomElement; | ||
exports.isNil = isNil; | ||
exports.addDataContainer = addDataContainer; | ||
exports.omit = omit; | ||
exports.loopEntries = loopEntries; | ||
exports.remove = remove; | ||
@@ -19,6 +22,2 @@ exports.getKey = getKey; | ||
exports.toArray = toArray; | ||
exports.isBrahmosNode = isBrahmosNode; | ||
exports.isBrahmosComponent = isBrahmosComponent; | ||
exports.isPrimitiveNode = isPrimitiveNode; | ||
exports.isRenderableNode = isRenderableNode; | ||
exports.lastItem = lastItem; | ||
@@ -33,2 +32,4 @@ exports.changeToNode = changeToNode; | ||
exports.createEmptyTextNode = createEmptyTextNode; | ||
exports.afterCurrentStack = afterCurrentStack; | ||
exports.getUniqueId = getUniqueId; | ||
@@ -41,2 +42,4 @@ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); | ||
var _brahmosNode = require("./brahmosNode"); | ||
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } | ||
@@ -73,2 +76,16 @@ | ||
return isHTMLElement(tagName) && tagName.indexOf('-') !== -1; | ||
} // check if value is null or undefined | ||
function isNil(val) { | ||
return val === undefined || val === null; | ||
} // add brahmos data container to domNode | ||
function addDataContainer(domNode) { | ||
// add brahmos data container | ||
domNode.__brahmosData = { | ||
attributes: {}, | ||
events: {} | ||
}; | ||
} | ||
@@ -92,2 +109,16 @@ /** | ||
/** | ||
* Function to loop over object entries | ||
*/ | ||
function loopEntries(obj, cb) { | ||
var keys = Object.keys(obj); | ||
for (var i = 0, ln = keys.length; i < ln; i++) { | ||
var key = keys[i]; | ||
var value = obj[key]; | ||
cb(key, value); | ||
} | ||
} | ||
/** | ||
* Remove nodes from parent | ||
@@ -117,7 +148,7 @@ */ | ||
if (key === undefined && node && node.__$isBrahmosTag$__) { | ||
if (key === '' && node && (0, _brahmosNode.isTagNode)(node)) { | ||
/** | ||
* TODO: This might be buggy, it can give key from any node, | ||
* not necessarily key from the root node. | ||
*/ | ||
* TODO: This might be buggy, it can give key from any node, | ||
* not necessarily key from the root node. | ||
*/ | ||
var values = node.values; | ||
@@ -129,3 +160,3 @@ | ||
if (value.key !== undefined) { | ||
key = value.key; | ||
key = '' + value.key; | ||
break; | ||
@@ -136,3 +167,3 @@ } | ||
node.key = key; | ||
node.key = key === undefined ? '' : '' + key; | ||
} | ||
@@ -145,3 +176,3 @@ /** | ||
return (key !== undefined ? key : index).toString(); | ||
return key === '' ? '' + index : key; | ||
} | ||
@@ -161,34 +192,2 @@ | ||
/** | ||
* Check if a given object is a react lit node | ||
*/ | ||
function isBrahmosNode(node) { | ||
return node && (node.__$isBrahmosComponent$__ || node.__$isBrahmosTag$__); | ||
} | ||
/** | ||
* Check if a given object is a BrahmosComponent | ||
*/ | ||
function isBrahmosComponent(node) { | ||
return node && node.__$isBrahmosComponent$__; | ||
} | ||
/** | ||
* Function to check if a node should be rendered as string | ||
*/ | ||
function isPrimitiveNode(node) { | ||
return typeof node === 'string' || typeof node === 'number'; | ||
} | ||
/** | ||
* Function to check if node can be rendered or not | ||
*/ | ||
function isRenderableNode(node) { | ||
return isPrimitiveNode(node) || isBrahmosNode(node) || Array.isArray(node); | ||
} | ||
/** | ||
* Function to return lastItem in the list | ||
@@ -226,3 +225,3 @@ */ | ||
return document.createTextNode(value.toString()); | ||
return document.createTextNode(value); | ||
} | ||
@@ -262,5 +261,4 @@ /** | ||
function insertBefore(parent) { | ||
var end = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; | ||
var value = arguments.length > 2 ? arguments[2] : undefined; | ||
function insertBefore(parent, end, value) { | ||
end = end === undefined ? null : end; | ||
var node = changeToNode(value); | ||
@@ -342,2 +340,20 @@ /** | ||
return textNode; | ||
} | ||
/** | ||
* Put a code execution in micro task, so that it's executed after current stack | ||
*/ | ||
var resolvedPromise = Promise.resolve(); | ||
function afterCurrentStack(cb) { | ||
return resolvedPromise.then(cb); | ||
} | ||
/** | ||
* Function to create a unique id | ||
*/ | ||
function getUniqueId() { | ||
return performance.now() + '-' + Math.random() * 1000000; | ||
} |
{ | ||
"name": "brahmos", | ||
"version": "0.9.0-alpha", | ||
"version": "0.9.0-alpha2", | ||
"description": "Super charged UI library with modern React API and native templates.", | ||
@@ -38,10 +38,12 @@ "main": "dist/brahmos.js", | ||
"babel-loader": "^8.0.6", | ||
"babel-plugin-brahmos": "git://github.com/s-yadav/babel-plugin-brahmos.git#0.5.0-alpha", | ||
"babel-plugin-brahmos": "git://github.com/s-yadav/babel-plugin-brahmos.git#0.5.0-alpha2", | ||
"bundlesize": "^0.18.0", | ||
"cross-env": "^5.2.0", | ||
"eslint": "^6.0.1", | ||
"css-loader": "^4.2.0", | ||
"eslint": "^6.4.0", | ||
"eslint-config-prettier": "^6.10.0", | ||
"eslint-config-standard": "^13.0.1", | ||
"eslint-plugin-import": "^2.18.0", | ||
"eslint-plugin-jest": "^22.7.2", | ||
"eslint-plugin-node": "^9.1.0", | ||
"eslint-plugin-node": "^10.0.0", | ||
"eslint-plugin-promise": "^4.2.1", | ||
@@ -51,2 +53,3 @@ "eslint-plugin-standard": "^4.0.0", | ||
"jest": "^24.8.0", | ||
"prettier": "^1.19.1", | ||
"rollup": "^1.12.3", | ||
@@ -60,3 +63,7 @@ "rollup-plugin-buble": "^0.19.6", | ||
"rollup-plugin-replace": "^2.2.0", | ||
"rollup-plugin-terser": "6.1.0", | ||
"rollup-plugin-uglify": "^6.0.2", | ||
"sass": "^1.26.10", | ||
"sass-loader": "^9.0.2", | ||
"style-loader": "^1.2.1", | ||
"webpack": "^4.31.0", | ||
@@ -63,0 +70,0 @@ "webpack-cli": "^3.3.2", |
@@ -1,2 +0,2 @@ | ||
import { uglify } from 'rollup-plugin-uglify'; | ||
import { terser } from 'rollup-plugin-terser'; | ||
import fileSize from 'rollup-plugin-filesize'; | ||
@@ -14,3 +14,5 @@ import commonjs from 'rollup-plugin-commonjs'; | ||
Author : ${PACKAGE.author} | ||
Copyright (c) ${(fullYear !== 2016 ? '2016,' : '')} ${fullYear} to ${PACKAGE.author}, released under the ${PACKAGE.license} license. | ||
Copyright (c) ${fullYear !== 2016 ? '2016,' : ''} ${fullYear} to ${ | ||
PACKAGE.author | ||
}, released under the ${PACKAGE.license} license. | ||
${PACKAGE.repository.url}`; | ||
@@ -20,10 +22,13 @@ | ||
input: './src/index.js', | ||
output: [{ | ||
file: 'dist/brahmos.mjs', | ||
format: 'esm', | ||
}, { | ||
file: 'dist/brahmos.js', | ||
format: 'umd', | ||
name: 'Brahmos', | ||
}], | ||
output: [ | ||
{ | ||
file: 'dist/brahmos.es.js', | ||
format: 'esm', | ||
}, | ||
{ | ||
file: 'dist/brahmos.js', | ||
format: 'umd', | ||
name: 'Brahmos', | ||
}, | ||
], | ||
plugins: [ | ||
@@ -44,2 +49,3 @@ buble({ | ||
}), | ||
terser(), | ||
], | ||
@@ -55,8 +61,5 @@ }; | ||
}, | ||
plugins: [ | ||
...defaultConfig.plugins, | ||
uglify(), | ||
], | ||
plugins: [...defaultConfig.plugins], | ||
}; | ||
export default [defaultConfig, minConfig]; |
Sorry, the diff of this file is too big to display
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
59
1
298161
41
5296
1