literaljs 7.0.2 → 8.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +242 -24
- package/build/index.js +1 -2
- package/build/index.m.js +1 -2
- package/build/index.modern.mjs +1 -0
- package/build/index.umd.js +1 -2
- package/package.json +22 -12
- package/.gitlab-ci.yml +0 -15
- package/build/index.js.map +0 -1
- package/build/index.m.js.map +0 -1
- package/build/index.modern.js +0 -2
- package/build/index.modern.js.map +0 -1
- package/build/index.umd.js.map +0 -1
- package/literalJS.png +0 -0
- package/test/component.test.js +0 -95
- package/test/h.test.js +0 -207
- package/test/lifecycle.test.js +0 -115
- package/test/render.test.js +0 -195
- package/yarn-error.log +0 -4258
package/build/index.m.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.m.js","sources":["../src/index.js"],"sourcesContent":["let ROOT_NODE, SAVED_TREE, CURRENT_TREE;\nlet GLOBAL_STORE = {};\nlet COMPONENT_STATE = {};\nconst EVENTS_KEY = 'eid';\nconst DELEGATED_EVENTS_ADDED = [];\nconst EVENTS_CACHE = {};\nconst LIFECYCLE_QUEUE = [];\nconst NON_DELEGATED_EVENTS = [\n\t'abort',\n\t'blur',\n\t'error',\n\t'focus',\n\t'load',\n\t'mouseenter',\n\t'mouseleave',\n\t'resize',\n\t'scroll',\n\t'unload'\n];\nconst STRING_TYPE = 'string';\nconst NUMBER_TYPE = 'number';\nconst BOOLEAN_TYPE = 'boolean';\nconst UNDEFINED_TYPE = 'undefined';\nconst OBJECT_TYPE = 'object';\nconst FUNCTION_TYPE = 'function';\nconst EVENTS_TYPE = 'events';\nconst STYLE_TYPE = 'style';\nconst VALUE_TYPE = 'value';\n\nfunction isArray(val) {\n\treturn Array.isArray(val);\n}\n\nfunction generateUUID() {\n\treturn (\n\t\tMath.random()\n\t\t\t.toString(36)\n\t\t\t.substring(2) + new Date().getTime().toString(36)\n\t);\n}\n\nfunction flatten(out, a) {\n\tfor (let i = 0, len = a.length; i < len; i++) {\n\t\tif (isArray(a[i])) flatten(out, a[i]);\n\t\telse out.push(a[i]);\n\t}\n\treturn out;\n}\n\nfunction assign(out, a) {\n\tfor (let i in a) out[i] = a[i];\n\treturn out;\n}\n\nfunction merge(out, a, b) {\n\treturn assign(assign(out, a), b);\n}\n\nexport function h(el, attr, ...children) {\n\treturn {\n\t\te: el,\n\t\ta: assign({}, attr),\n\t\tc: flatten([], children)\n\t};\n}\n\nexport function render(components, documentNodeID, state = {}) {\n\t// Initialize application state\n\tGLOBAL_STORE = assign({}, state);\n\t// Cache initial tree for re-instanting with new states\n\t// Cache the initial tree for diffing later\n\tSAVED_TREE = components;\n\t// Grab root node to mount application on\n\tROOT_NODE = document.getElementById(documentNodeID);\n\t// Create first component tree\n\tCURRENT_TREE = generateTreeVN(components());\n\t// Append the new tree to our application for the first paint\n\tappendChild(ROOT_NODE, CURRENT_TREE);\n\t// Initial Lifecycle Trigger\n\tshiftLifcycleQueue();\n}\n\nexport function component({\n\tname = '',\n\tstate = {},\n\tmounted = function() {},\n\tupdated = function() {},\n\tunmounted = function() {},\n\tmethods = function() {},\n\trender = function() {}\n} = {}) {\n\tconst componentUUID = generateUUID();\n\treturn function(props = {}) {\n\t\treturn {\n\t\t\tid: componentUUID,\n\t\t\tinit: function() {\n\t\t\t\tthis.id = componentUUID;\n\t\t\t\tthis.name = name + (props.key ? '_' + props.key : '');\n\t\t\t\tthis.key = this.id + (this.name || '');\n\t\t\t\tthis.props = props;\n\t\t\t\tthis.store = GLOBAL_STORE;\n\t\t\t\tthis.getStore = getStore;\n\t\t\t\tthis.setStore = setStore.bind(this);\n\t\t\t\tthis.getState = getState.bind(this);\n\t\t\t\tthis.setState = setState.bind(this);\n\t\t\t\tthis.createState = function() {\n\t\t\t\t\tif (typeof COMPONENT_STATE[this.key] === UNDEFINED_TYPE) {\n\t\t\t\t\t\tCOMPONENT_STATE[this.key] = state;\n\t\t\t\t\t}\n\t\t\t\t}.bind(this)();\n\t\t\t\tthis.deleteState = function() {\n\t\t\t\t\tdelete COMPONENT_STATE[this.key];\n\t\t\t\t}.bind(this);\n\t\t\t\tthis.mounted = mounted.bind(this);\n\t\t\t\tthis.updated = updated.bind(this);\n\t\t\t\tthis.unmounted = unmounted.bind(this);\n\t\t\t\tbindMethods(this, methods);\n\t\t\t\tthis.render = render.bind(this);\n\t\t\t\treturn this;\n\t\t\t}\n\t\t};\n\t};\n}\n\nfunction getStore() {\n\treturn assign({}, GLOBAL_STORE);\n}\n\nfunction setStore(newStore, callback) {\n\tif (typeof newStore === FUNCTION_TYPE) {\n\t\tnewStore = newStore(GLOBAL_STORE);\n\t}\n\tGLOBAL_STORE = merge({}, GLOBAL_STORE, newStore);\n\tinitiateDiff();\n\tif (typeof callback === FUNCTION_TYPE) callback.bind(this)();\n}\n\nfunction getState() {\n\treturn assign({}, COMPONENT_STATE[this.key]);\n}\n\nfunction setState(newState, callback) {\n\tif (typeof newState === FUNCTION_TYPE) {\n\t\tnewState = newState(COMPONENT_STATE[this.key]);\n\t}\n\tCOMPONENT_STATE[this.key] = merge({}, COMPONENT_STATE[this.key], newState);\n\tinitiateDiff();\n\tif (typeof callback === FUNCTION_TYPE) callback.bind(this)();\n}\n\nfunction bindMethods(component, methods) {\n\tif (typeof methods === FUNCTION_TYPE) {\n\t\tmethods = methods.bind(component)();\n\t}\n\n\tfor (let func in methods) {\n\t\tcomponent[func] = methods[func].bind(component);\n\t}\n}\n\nfunction generateTreeVN(newC) {\n\tif (typeof newC === UNDEFINED_TYPE) {\n\t\treturn newC;\n\t} else if (typeof newC.e === FUNCTION_TYPE) {\n\t\t// For Components in the application to inject props.\n\t\tconst props = assign({}, newC.a.props);\n\t\tdelete newC.a.props;\n\t\tnewC = newC.e(props);\n\t}\n\n\tif (typeof newC.init === FUNCTION_TYPE) {\n\t\t// For the Root Component And Componets\n\t\t// Initialize The Component\n\t\tconst cObj = new newC.init();\n\t\t// Render Component Markup\n\t\tnewC = cObj.render();\n\n\t\tif (typeof newC === OBJECT_TYPE) {\n\t\t\t// Attach Id and LC Methods To Render Object\n\t\t\tnewC.id = cObj.id;\n\t\t\tnewC.m = cObj.mounted;\n\t\t\tnewC.up = cObj.updated;\n\t\t\tnewC.un = cObj.unmounted;\n\t\t\tnewC.d = cObj.deleteState;\n\t\t}\n\t}\n\n\tif (isArray(newC.c)) {\n\t\tfor (let i = 0, len = newC.c.length; i < len; i++) {\n\t\t\tnewC.c[i] = generateTreeVN(newC.c[i]);\n\t\t}\n\t}\n\n\treturn newC;\n}\n\nfunction createDomNode(data) {\n\tconst type = typeof data;\n\tif (type === STRING_TYPE || type === NUMBER_TYPE) {\n\t\treturn document.createTextNode(data);\n\t} else if (type === BOOLEAN_TYPE || type === UNDEFINED_TYPE) {\n\t\treturn document.createTextNode('');\n\t} else {\n\t\tconst newE = document.createElement(data.e);\n\n\t\tif (typeof data.a === OBJECT_TYPE) {\n\t\t\tconst keys = Object.keys(data.a);\n\t\t\tfor (let i = keys.length; i--; ) {\n\t\t\t\tif (keys[i] === EVENTS_TYPE) {\n\t\t\t\t\tdata.eid = generateUUID();\n\t\t\t\t\taddEvents(data.eid, data.a[keys[i]], newE);\n\t\t\t\t} else if (keys[i] === STYLE_TYPE) {\n\t\t\t\t\taddStyles(data.a[keys[i]], newE);\n\t\t\t\t} else {\n\t\t\t\t\tnewE.setAttribute(keys[i], data.a[keys[i]]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tpushLifecycle(data, 'm');\n\n\t\tif (isArray(data.c)) {\n\t\t\tfor (let i = 0, len = data.c.length; i < len; i++) {\n\t\t\t\tappendChild(newE, data.c[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn newE;\n\t}\n}\n\nfunction getEventUUID(element) {\n\tif (element.parentNode.nodeName === '#document') return;\n\tconst eid = element.getAttribute('data-' + EVENTS_KEY);\n\tif (typeof eid === STRING_TYPE) return eid;\n\treturn getEventUUID(element.parentNode);\n}\n\nfunction addEvents(eid, eventObj, targetNode) {\n\t// Generate UUID here for event functions\n\t// Send event functions into a cache for lookup by UUID\n\t// UUID is pulled during Event Delegation and the appropriate\n\t// event is picked by type.\n\ttargetNode.setAttribute('data-' + EVENTS_KEY, eid);\n\tEVENTS_CACHE[eid] = eventObj;\n\n\t// Prevent certain events from being delegated due to them not bubbling.\n\tconst keys = Object.keys(eventObj);\n\tfor (let i = keys.length; i--; ) {\n\t\tif (NON_DELEGATED_EVENTS.includes(keys[i])) {\n\t\t\t// Attach event directly if non-bubbling / non-delegated\n\t\t\ttargetNode.addEventListener(keys[i], EVENTS_CACHE[eid][keys[i]]);\n\t\t} else if (!DELEGATED_EVENTS_ADDED.includes(keys[i])) {\n\t\t\t// Added listener type to keep track of what kinds of events\n\t\t\t// are added to the root node.\n\t\t\tDELEGATED_EVENTS_ADDED.push(keys[i]);\n\t\t\tROOT_NODE.addEventListener(keys[i], function(e) {\n\t\t\t\tconst uuid = getEventUUID(e.target);\n\t\t\t\tif (typeof uuid === STRING_TYPE && EVENTS_CACHE[uuid]) {\n\t\t\t\t\tconst event = EVENTS_CACHE[uuid][e.type];\n\t\t\t\t\tif (typeof event === FUNCTION_TYPE) event(e);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n}\n\nfunction addStyles(styles, e) {\n\tif (typeof styles === UNDEFINED_TYPE) return;\n\tconst keys = Object.keys(styles);\n\tfor (let i = keys.length; i--; ) {\n\t\te.style[keys[i]] = styles[keys[i]];\n\t}\n}\n\nfunction initiateDiff(uuid) {\n\t// Generate new and old trees\n\tconst oldTree = assign({}, CURRENT_TREE);\n\tconst newTree = generateTreeVN(SAVED_TREE());\n\t// Cache new tree for future diffs\n\tCURRENT_TREE = newTree;\n\t// Initiate diff of trees...\n\tdiffAndPatch(ROOT_NODE, ROOT_NODE.firstChild, newTree, oldTree);\n\t// Trigger Lifecycle Methods...\n\tshiftLifcycleQueue();\n}\n\nfunction diffAndPatch(parentNode, targetNode, newVN, oldVN) {\n\tconst nType = typeof newVN;\n\tconst oType = typeof oldVN;\n\n\tif (oType === UNDEFINED_TYPE) {\n\t\tappendChild(parentNode, newVN);\n\t} else if (nType === UNDEFINED_TYPE) {\n\t\tunmountNodeAndChildren(oldVN);\n\t\ttargetNode.remove();\n\t} else if (nodesNotEqual(newVN, oldVN, nType, oType)) {\n\t\tunmountNodeAndChildren(oldVN);\n\t\tparentNode.replaceChild(createDomNode(newVN), targetNode);\n\t} else if (nType === OBJECT_TYPE) {\n\t\tupdateNodes(targetNode, newVN, oldVN);\n\n\t\tlet lastChild;\n\t\tfor (let i = oldVN.c.length; i--; ) {\n\t\t\tif (typeof newVN.c[i] !== UNDEFINED_TYPE) break;\n\t\t\tlastChild = targetNode.lastChild;\n\t\t\tif (typeof lastChild === OBJECT_TYPE) {\n\t\t\t\tunmountNodeAndChildren(oldVN.c[i]);\n\t\t\t\tlastChild.remove();\n\t\t\t}\n\t\t}\n\n\t\t// Recurse through children and diff.\n\t\tfor (let i = 0, len = newVN.c.length; i < len; i++) {\n\t\t\tdiffAndPatch(\n\t\t\t\ttargetNode,\n\t\t\t\ttargetNode.childNodes[i],\n\t\t\t\tnewVN.c[i],\n\t\t\t\toldVN.c[i]\n\t\t\t);\n\t\t}\n\t}\n}\n\nfunction appendChild(parentNode, newNode) {\n\tparentNode.appendChild(createDomNode(newNode));\n}\n\nfunction nodesNotEqual(newVN, oldVN, nType, oType) {\n\treturn (\n\t\tnType !== oType ||\n\t\tnewVN.e !== oldVN.e ||\n\t\tnewVN.id !== oldVN.id ||\n\t\t((nType === STRING_TYPE || nType === NUMBER_TYPE) && newVN !== oldVN)\n\t);\n}\n\nfunction updateNodes(targetNode, newVN, oldVN) {\n\tpushLifecycle(newVN, 'up');\n\n\tconst keys = Object.keys(newVN.a);\n\tlet oldVal, newVal;\n\tfor (let i = keys.length; i--; ) {\n\t\tnewVal = newVN.a[keys[i]];\n\t\toldVal = oldVN.a[keys[i]];\n\t\tif (keys[i] === STYLE_TYPE) {\n\t\t\tif (stylesAreEqual(newVal, oldVal)) continue;\n\t\t\ttargetNode.removeAttribute(keys[i]);\n\t\t\taddStyles(newVal, targetNode);\n\t\t} else if (keys[i] === EVENTS_TYPE) {\n\t\t\tremoveIndividuallyBoundEvents(targetNode, oldVN.eid);\n\t\t\tdeleteCachedEvent(oldVN.eid);\n\t\t\tnewVN.eid = generateUUID();\n\t\t\taddEvents(newVN.eid, newVal, targetNode);\n\t\t} else if (keys[i] === VALUE_TYPE && newVal !== oldVal) {\n\t\t\ttargetNode.value = newVal;\n\t\t} else if (typeof oldVal === UNDEFINED_TYPE || newVal !== oldVal) {\n\t\t\ttargetNode.setAttribute(keys[i], newVal);\n\t\t}\n\t}\n}\n\nfunction unmountNodeAndChildren(node) {\n\t// Recursivly unmounts all children.\n\tif (typeof node === UNDEFINED_TYPE) return;\n\tpushLifecycle(node, 'un');\n\tpushLifecycle(node, 'd');\n\tdeleteCachedEvent(node.eid);\n\tif (isArray(node.c)) {\n\t\tfor (let i = node.c.length; i--; ) {\n\t\t\tunmountNodeAndChildren(node.c[i]);\n\t\t}\n\t}\n}\n\nfunction deleteCachedEvent(eid) {\n\tif (typeof eid === STRING_TYPE) delete EVENTS_CACHE[eid];\n}\n\nfunction removeIndividuallyBoundEvents(targetNode, eid) {\n\tconst keys = Object.keys(EVENTS_CACHE[eid]);\n\tfor (let i = keys.length; i--; ) {\n\t\tif (NON_DELEGATED_EVENTS.includes(keys[i])) {\n\t\t\ttargetNode.removeEventListener(keys[i], EVENTS_CACHE[eid][keys[i]]);\n\t\t}\n\t}\n}\n\nfunction stylesAreEqual(newStyle, oldStyle) {\n\tconst newType = typeof newStyle;\n\tconst oldType = typeof oldStyle;\n\n\treturn (\n\t\t(newType === OBJECT_TYPE &&\n\t\t\toldType === OBJECT_TYPE &&\n\t\t\tJSON.stringify(newStyle) === JSON.stringify(oldStyle)) ||\n\t\t(newType === UNDEFINED_TYPE && oldType === UNDEFINED_TYPE)\n\t);\n}\n\nfunction shiftLifcycleQueue() {\n\tlet lc;\n\twhile ((lc = LIFECYCLE_QUEUE.shift())) lc();\n}\n\nfunction pushLifecycle(node, lcName) {\n\tif (typeof node === OBJECT_TYPE && typeof node[lcName] === FUNCTION_TYPE) {\n\t\tLIFECYCLE_QUEUE.push(node[lcName]);\n\t}\n}\n\nmodule.exports = {\n\tcomponent,\n\trender,\n\th\n};\n"],"names":["ROOT_NODE","SAVED_TREE","CURRENT_TREE","GLOBAL_STORE","COMPONENT_STATE","DELEGATED_EVENTS_ADDED","EVENTS_CACHE","LIFECYCLE_QUEUE","NON_DELEGATED_EVENTS","isArray","val","Array","generateUUID","Math","random","toString","substring","Date","getTime","flatten","out","a","i","len","length","push","assign","merge","b","h","el","attr","e","c","render","components","documentNodeID","state","document","getElementById","generateTreeVN","appendChild","shiftLifcycleQueue","component","name","mounted","updated","unmounted","methods","componentUUID","props","id","init","this","key","store","getStore","setStore","bind","getState","setState","createState","deleteState","func","bindMethods","newStore","callback","initiateDiff","newState","newC","cObj","m","up","un","d","createDomNode","data","type","createTextNode","newE","createElement","keys","Object","eid","addEvents","addStyles","setAttribute","pushLifecycle","getEventUUID","element","parentNode","nodeName","getAttribute","eventObj","targetNode","includes","addEventListener","uuid","target","event","styles","style","oldTree","newTree","diffAndPatch","firstChild","newVN","oldVN","nType","oType","unmountNodeAndChildren","remove","nodesNotEqual","replaceChild","lastChild","oldVal","newVal","newType","oldType","oldStyle","newStyle","JSON","stringify","removeAttribute","removeIndividuallyBoundEvents","deleteCachedEvent","value","updateNodes","childNodes","newNode","node","removeEventListener","lc","shift","lcName","module","exports"],"mappings":"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"}
|
package/build/index.modern.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
let t,e,n,i={},o={};const r=[],u={},c=[],f=["abort","blur","error","focus","load","mouseenter","mouseleave","resize","scroll","unload"];function s(t){return Array.isArray(t)}function d(){return Math.random().toString(36).substring(2)+(new Date).getTime().toString(36)}function l(t,e){for(let n=0,i=e.length;n<i;n++)s(e[n])?l(t,e[n]):t.push(e[n]);return t}function h(t,e){for(let n in e)t[n]=e[n];return t}function a(t,e,n){return h(h(t,e),n)}function y(t,e,...n){return{e:t,a:h({},e),c:l([],n)}}function p(o,r,u={}){i=h({},u),e=o,t=document.getElementById(r),n=j(o()),C(t,n),z()}function b({name:t="",state:e={},mounted:n=function(){},updated:r=function(){},unmounted:u=function(){},methods:c=function(){},render:f=function(){}}={}){const s=d();return function(d={}){return{id:s,init:function(){return this.id=s,this.name=t+(d.key?"_"+d.key:""),this.key=this.id+(this.name||""),this.props=d,this.store=i,this.getStore=m,this.setStore=g.bind(this),this.getState=v.bind(this),this.setState=k.bind(this),this.createState=function(){void 0===o[this.key]&&(o[this.key]=e)}.bind(this)(),this.deleteState=function(){delete o[this.key]}.bind(this),this.mounted=n.bind(this),this.updated=r.bind(this),this.unmounted=u.bind(this),function(t,e){"function"==typeof e&&(e=e.bind(t)());for(let n in e)t[n]=e[n].bind(t)}(this,c),this.render=f.bind(this),this}}}}function m(){return h({},i)}function g(t,e){"function"==typeof t&&(t=t(i)),i=a({},i,t),E(),"function"==typeof e&&e.bind(this)()}function v(){return h({},o[this.key])}function k(t,e){"function"==typeof t&&(t=t(o[this.key])),o[this.key]=a({},o[this.key],t),E(),"function"==typeof e&&e.bind(this)()}function j(t){if(void 0===t)return t;if("function"==typeof t.e){const e=h({},t.a.props);delete t.a.props,t=t.e(e)}if("function"==typeof t.init){const e=new t.init;"object"==typeof(t=e.render())&&(t.id=e.id,t.m=e.mounted,t.up=e.updated,t.un=e.unmounted,t.d=e.deleteState)}if(s(t.c))for(let e=0,n=t.c.length;e<n;e++)t.c[e]=j(t.c[e]);return t}function S(t){const e=typeof t;if("string"===e||"number"===e)return document.createTextNode(t);if("boolean"===e||"undefined"===e)return document.createTextNode("");{const e=document.createElement(t.e);if("object"==typeof t.a){const n=Object.keys(t.a);for(let i=n.length;i--;)"events"===n[i]?(t.eid=d(),A(t.eid,t.a[n[i]],e)):"style"===n[i]?O(t.a[n[i]],e):e.setAttribute(n[i],t.a[n[i]])}if(B(t,"m"),s(t.c))for(let n=0,i=t.c.length;n<i;n++)C(e,t.c[n]);return e}}function N(t){if("#document"===t.parentNode.nodeName)return;const e=t.getAttribute("data-eid");return"string"==typeof e?e:N(t.parentNode)}function A(e,n,i){i.setAttribute("data-eid",e),u[e]=n;const o=Object.keys(n);for(let n=o.length;n--;)f.includes(o[n])?i.addEventListener(o[n],u[e][o[n]]):r.includes(o[n])||(r.push(o[n]),t.addEventListener(o[n],function(t){const e=N(t.target);if("string"==typeof e&&u[e]){const n=u[e][t.type];"function"==typeof n&&n(t)}}))}function O(t,e){if(void 0===t)return;const n=Object.keys(t);for(let i=n.length;i--;)e.style[n[i]]=t[n[i]]}function E(i){const o=h({},n),r=j(e());n=r,x(t,t.firstChild,r,o),z()}function x(t,e,n,i){const o=typeof n,r=typeof i;if("undefined"===r)C(t,n);else if("undefined"===o)L(i),e.remove();else if(function(t,e,n,i){return n!==i||t.e!==e.e||t.id!==e.id||("string"===n||"number"===n)&&t!==e}(n,i,o,r))L(i),t.replaceChild(S(n),e);else if("object"===o){let t;!function(t,e,n){B(e,"up");const i=Object.keys(e.a);let o,r;for(let u=i.length;u--;)if(r=e.a[i[u]],o=n.a[i[u]],"style"===i[u]){if(J(r,o))continue;t.removeAttribute(i[u]),O(r,t)}else"events"===i[u]?(w(t,n.eid),T(n.eid),e.eid=d(),A(e.eid,r,t)):"value"===i[u]&&r!==o?t.value=r:void 0!==o&&r===o||t.setAttribute(i[u],r)}(e,n,i);for(let o=i.c.length;o--&&void 0===n.c[o];)t=e.lastChild,"object"==typeof t&&(L(i.c[o]),t.remove());for(let t=0,o=n.c.length;t<o;t++)x(e,e.childNodes[t],n.c[t],i.c[t])}}function C(t,e){t.appendChild(S(e))}function L(t){if(void 0!==t&&(B(t,"un"),B(t,"d"),T(t.eid),s(t.c)))for(let e=t.c.length;e--;)L(t.c[e])}function T(t){"string"==typeof t&&delete u[t]}function w(t,e){const n=Object.keys(u[e]);for(let i=n.length;i--;)f.includes(n[i])&&t.removeEventListener(n[i],u[e][n[i]])}function J(t,e){const n=typeof t,i=typeof e;return"object"===n&&"object"===i&&JSON.stringify(t)===JSON.stringify(e)||"undefined"===n&&"undefined"===i}function z(){let t;for(;t=c.shift();)t()}function B(t,e){"object"==typeof t&&"function"==typeof t[e]&&c.push(t[e])}module.exports={component:b,render:p,h:y};export{b as component,y as h,p as render};
|
|
2
|
-
//# sourceMappingURL=index.modern.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.modern.js","sources":["../src/index.js"],"sourcesContent":["let ROOT_NODE, SAVED_TREE, CURRENT_TREE;\nlet GLOBAL_STORE = {};\nlet COMPONENT_STATE = {};\nconst EVENTS_KEY = 'eid';\nconst DELEGATED_EVENTS_ADDED = [];\nconst EVENTS_CACHE = {};\nconst LIFECYCLE_QUEUE = [];\nconst NON_DELEGATED_EVENTS = [\n\t'abort',\n\t'blur',\n\t'error',\n\t'focus',\n\t'load',\n\t'mouseenter',\n\t'mouseleave',\n\t'resize',\n\t'scroll',\n\t'unload'\n];\nconst STRING_TYPE = 'string';\nconst NUMBER_TYPE = 'number';\nconst BOOLEAN_TYPE = 'boolean';\nconst UNDEFINED_TYPE = 'undefined';\nconst OBJECT_TYPE = 'object';\nconst FUNCTION_TYPE = 'function';\nconst EVENTS_TYPE = 'events';\nconst STYLE_TYPE = 'style';\nconst VALUE_TYPE = 'value';\n\nfunction isArray(val) {\n\treturn Array.isArray(val);\n}\n\nfunction generateUUID() {\n\treturn (\n\t\tMath.random()\n\t\t\t.toString(36)\n\t\t\t.substring(2) + new Date().getTime().toString(36)\n\t);\n}\n\nfunction flatten(out, a) {\n\tfor (let i = 0, len = a.length; i < len; i++) {\n\t\tif (isArray(a[i])) flatten(out, a[i]);\n\t\telse out.push(a[i]);\n\t}\n\treturn out;\n}\n\nfunction assign(out, a) {\n\tfor (let i in a) out[i] = a[i];\n\treturn out;\n}\n\nfunction merge(out, a, b) {\n\treturn assign(assign(out, a), b);\n}\n\nexport function h(el, attr, ...children) {\n\treturn {\n\t\te: el,\n\t\ta: assign({}, attr),\n\t\tc: flatten([], children)\n\t};\n}\n\nexport function render(components, documentNodeID, state = {}) {\n\t// Initialize application state\n\tGLOBAL_STORE = assign({}, state);\n\t// Cache initial tree for re-instanting with new states\n\t// Cache the initial tree for diffing later\n\tSAVED_TREE = components;\n\t// Grab root node to mount application on\n\tROOT_NODE = document.getElementById(documentNodeID);\n\t// Create first component tree\n\tCURRENT_TREE = generateTreeVN(components());\n\t// Append the new tree to our application for the first paint\n\tappendChild(ROOT_NODE, CURRENT_TREE);\n\t// Initial Lifecycle Trigger\n\tshiftLifcycleQueue();\n}\n\nexport function component({\n\tname = '',\n\tstate = {},\n\tmounted = function() {},\n\tupdated = function() {},\n\tunmounted = function() {},\n\tmethods = function() {},\n\trender = function() {}\n} = {}) {\n\tconst componentUUID = generateUUID();\n\treturn function(props = {}) {\n\t\treturn {\n\t\t\tid: componentUUID,\n\t\t\tinit: function() {\n\t\t\t\tthis.id = componentUUID;\n\t\t\t\tthis.name = name + (props.key ? '_' + props.key : '');\n\t\t\t\tthis.key = this.id + (this.name || '');\n\t\t\t\tthis.props = props;\n\t\t\t\tthis.store = GLOBAL_STORE;\n\t\t\t\tthis.getStore = getStore;\n\t\t\t\tthis.setStore = setStore.bind(this);\n\t\t\t\tthis.getState = getState.bind(this);\n\t\t\t\tthis.setState = setState.bind(this);\n\t\t\t\tthis.createState = function() {\n\t\t\t\t\tif (typeof COMPONENT_STATE[this.key] === UNDEFINED_TYPE) {\n\t\t\t\t\t\tCOMPONENT_STATE[this.key] = state;\n\t\t\t\t\t}\n\t\t\t\t}.bind(this)();\n\t\t\t\tthis.deleteState = function() {\n\t\t\t\t\tdelete COMPONENT_STATE[this.key];\n\t\t\t\t}.bind(this);\n\t\t\t\tthis.mounted = mounted.bind(this);\n\t\t\t\tthis.updated = updated.bind(this);\n\t\t\t\tthis.unmounted = unmounted.bind(this);\n\t\t\t\tbindMethods(this, methods);\n\t\t\t\tthis.render = render.bind(this);\n\t\t\t\treturn this;\n\t\t\t}\n\t\t};\n\t};\n}\n\nfunction getStore() {\n\treturn assign({}, GLOBAL_STORE);\n}\n\nfunction setStore(newStore, callback) {\n\tif (typeof newStore === FUNCTION_TYPE) {\n\t\tnewStore = newStore(GLOBAL_STORE);\n\t}\n\tGLOBAL_STORE = merge({}, GLOBAL_STORE, newStore);\n\tinitiateDiff();\n\tif (typeof callback === FUNCTION_TYPE) callback.bind(this)();\n}\n\nfunction getState() {\n\treturn assign({}, COMPONENT_STATE[this.key]);\n}\n\nfunction setState(newState, callback) {\n\tif (typeof newState === FUNCTION_TYPE) {\n\t\tnewState = newState(COMPONENT_STATE[this.key]);\n\t}\n\tCOMPONENT_STATE[this.key] = merge({}, COMPONENT_STATE[this.key], newState);\n\tinitiateDiff();\n\tif (typeof callback === FUNCTION_TYPE) callback.bind(this)();\n}\n\nfunction bindMethods(component, methods) {\n\tif (typeof methods === FUNCTION_TYPE) {\n\t\tmethods = methods.bind(component)();\n\t}\n\n\tfor (let func in methods) {\n\t\tcomponent[func] = methods[func].bind(component);\n\t}\n}\n\nfunction generateTreeVN(newC) {\n\tif (typeof newC === UNDEFINED_TYPE) {\n\t\treturn newC;\n\t} else if (typeof newC.e === FUNCTION_TYPE) {\n\t\t// For Components in the application to inject props.\n\t\tconst props = assign({}, newC.a.props);\n\t\tdelete newC.a.props;\n\t\tnewC = newC.e(props);\n\t}\n\n\tif (typeof newC.init === FUNCTION_TYPE) {\n\t\t// For the Root Component And Componets\n\t\t// Initialize The Component\n\t\tconst cObj = new newC.init();\n\t\t// Render Component Markup\n\t\tnewC = cObj.render();\n\n\t\tif (typeof newC === OBJECT_TYPE) {\n\t\t\t// Attach Id and LC Methods To Render Object\n\t\t\tnewC.id = cObj.id;\n\t\t\tnewC.m = cObj.mounted;\n\t\t\tnewC.up = cObj.updated;\n\t\t\tnewC.un = cObj.unmounted;\n\t\t\tnewC.d = cObj.deleteState;\n\t\t}\n\t}\n\n\tif (isArray(newC.c)) {\n\t\tfor (let i = 0, len = newC.c.length; i < len; i++) {\n\t\t\tnewC.c[i] = generateTreeVN(newC.c[i]);\n\t\t}\n\t}\n\n\treturn newC;\n}\n\nfunction createDomNode(data) {\n\tconst type = typeof data;\n\tif (type === STRING_TYPE || type === NUMBER_TYPE) {\n\t\treturn document.createTextNode(data);\n\t} else if (type === BOOLEAN_TYPE || type === UNDEFINED_TYPE) {\n\t\treturn document.createTextNode('');\n\t} else {\n\t\tconst newE = document.createElement(data.e);\n\n\t\tif (typeof data.a === OBJECT_TYPE) {\n\t\t\tconst keys = Object.keys(data.a);\n\t\t\tfor (let i = keys.length; i--; ) {\n\t\t\t\tif (keys[i] === EVENTS_TYPE) {\n\t\t\t\t\tdata.eid = generateUUID();\n\t\t\t\t\taddEvents(data.eid, data.a[keys[i]], newE);\n\t\t\t\t} else if (keys[i] === STYLE_TYPE) {\n\t\t\t\t\taddStyles(data.a[keys[i]], newE);\n\t\t\t\t} else {\n\t\t\t\t\tnewE.setAttribute(keys[i], data.a[keys[i]]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tpushLifecycle(data, 'm');\n\n\t\tif (isArray(data.c)) {\n\t\t\tfor (let i = 0, len = data.c.length; i < len; i++) {\n\t\t\t\tappendChild(newE, data.c[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn newE;\n\t}\n}\n\nfunction getEventUUID(element) {\n\tif (element.parentNode.nodeName === '#document') return;\n\tconst eid = element.getAttribute('data-' + EVENTS_KEY);\n\tif (typeof eid === STRING_TYPE) return eid;\n\treturn getEventUUID(element.parentNode);\n}\n\nfunction addEvents(eid, eventObj, targetNode) {\n\t// Generate UUID here for event functions\n\t// Send event functions into a cache for lookup by UUID\n\t// UUID is pulled during Event Delegation and the appropriate\n\t// event is picked by type.\n\ttargetNode.setAttribute('data-' + EVENTS_KEY, eid);\n\tEVENTS_CACHE[eid] = eventObj;\n\n\t// Prevent certain events from being delegated due to them not bubbling.\n\tconst keys = Object.keys(eventObj);\n\tfor (let i = keys.length; i--; ) {\n\t\tif (NON_DELEGATED_EVENTS.includes(keys[i])) {\n\t\t\t// Attach event directly if non-bubbling / non-delegated\n\t\t\ttargetNode.addEventListener(keys[i], EVENTS_CACHE[eid][keys[i]]);\n\t\t} else if (!DELEGATED_EVENTS_ADDED.includes(keys[i])) {\n\t\t\t// Added listener type to keep track of what kinds of events\n\t\t\t// are added to the root node.\n\t\t\tDELEGATED_EVENTS_ADDED.push(keys[i]);\n\t\t\tROOT_NODE.addEventListener(keys[i], function(e) {\n\t\t\t\tconst uuid = getEventUUID(e.target);\n\t\t\t\tif (typeof uuid === STRING_TYPE && EVENTS_CACHE[uuid]) {\n\t\t\t\t\tconst event = EVENTS_CACHE[uuid][e.type];\n\t\t\t\t\tif (typeof event === FUNCTION_TYPE) event(e);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n}\n\nfunction addStyles(styles, e) {\n\tif (typeof styles === UNDEFINED_TYPE) return;\n\tconst keys = Object.keys(styles);\n\tfor (let i = keys.length; i--; ) {\n\t\te.style[keys[i]] = styles[keys[i]];\n\t}\n}\n\nfunction initiateDiff(uuid) {\n\t// Generate new and old trees\n\tconst oldTree = assign({}, CURRENT_TREE);\n\tconst newTree = generateTreeVN(SAVED_TREE());\n\t// Cache new tree for future diffs\n\tCURRENT_TREE = newTree;\n\t// Initiate diff of trees...\n\tdiffAndPatch(ROOT_NODE, ROOT_NODE.firstChild, newTree, oldTree);\n\t// Trigger Lifecycle Methods...\n\tshiftLifcycleQueue();\n}\n\nfunction diffAndPatch(parentNode, targetNode, newVN, oldVN) {\n\tconst nType = typeof newVN;\n\tconst oType = typeof oldVN;\n\n\tif (oType === UNDEFINED_TYPE) {\n\t\tappendChild(parentNode, newVN);\n\t} else if (nType === UNDEFINED_TYPE) {\n\t\tunmountNodeAndChildren(oldVN);\n\t\ttargetNode.remove();\n\t} else if (nodesNotEqual(newVN, oldVN, nType, oType)) {\n\t\tunmountNodeAndChildren(oldVN);\n\t\tparentNode.replaceChild(createDomNode(newVN), targetNode);\n\t} else if (nType === OBJECT_TYPE) {\n\t\tupdateNodes(targetNode, newVN, oldVN);\n\n\t\tlet lastChild;\n\t\tfor (let i = oldVN.c.length; i--; ) {\n\t\t\tif (typeof newVN.c[i] !== UNDEFINED_TYPE) break;\n\t\t\tlastChild = targetNode.lastChild;\n\t\t\tif (typeof lastChild === OBJECT_TYPE) {\n\t\t\t\tunmountNodeAndChildren(oldVN.c[i]);\n\t\t\t\tlastChild.remove();\n\t\t\t}\n\t\t}\n\n\t\t// Recurse through children and diff.\n\t\tfor (let i = 0, len = newVN.c.length; i < len; i++) {\n\t\t\tdiffAndPatch(\n\t\t\t\ttargetNode,\n\t\t\t\ttargetNode.childNodes[i],\n\t\t\t\tnewVN.c[i],\n\t\t\t\toldVN.c[i]\n\t\t\t);\n\t\t}\n\t}\n}\n\nfunction appendChild(parentNode, newNode) {\n\tparentNode.appendChild(createDomNode(newNode));\n}\n\nfunction nodesNotEqual(newVN, oldVN, nType, oType) {\n\treturn (\n\t\tnType !== oType ||\n\t\tnewVN.e !== oldVN.e ||\n\t\tnewVN.id !== oldVN.id ||\n\t\t((nType === STRING_TYPE || nType === NUMBER_TYPE) && newVN !== oldVN)\n\t);\n}\n\nfunction updateNodes(targetNode, newVN, oldVN) {\n\tpushLifecycle(newVN, 'up');\n\n\tconst keys = Object.keys(newVN.a);\n\tlet oldVal, newVal;\n\tfor (let i = keys.length; i--; ) {\n\t\tnewVal = newVN.a[keys[i]];\n\t\toldVal = oldVN.a[keys[i]];\n\t\tif (keys[i] === STYLE_TYPE) {\n\t\t\tif (stylesAreEqual(newVal, oldVal)) continue;\n\t\t\ttargetNode.removeAttribute(keys[i]);\n\t\t\taddStyles(newVal, targetNode);\n\t\t} else if (keys[i] === EVENTS_TYPE) {\n\t\t\tremoveIndividuallyBoundEvents(targetNode, oldVN.eid);\n\t\t\tdeleteCachedEvent(oldVN.eid);\n\t\t\tnewVN.eid = generateUUID();\n\t\t\taddEvents(newVN.eid, newVal, targetNode);\n\t\t} else if (keys[i] === VALUE_TYPE && newVal !== oldVal) {\n\t\t\ttargetNode.value = newVal;\n\t\t} else if (typeof oldVal === UNDEFINED_TYPE || newVal !== oldVal) {\n\t\t\ttargetNode.setAttribute(keys[i], newVal);\n\t\t}\n\t}\n}\n\nfunction unmountNodeAndChildren(node) {\n\t// Recursivly unmounts all children.\n\tif (typeof node === UNDEFINED_TYPE) return;\n\tpushLifecycle(node, 'un');\n\tpushLifecycle(node, 'd');\n\tdeleteCachedEvent(node.eid);\n\tif (isArray(node.c)) {\n\t\tfor (let i = node.c.length; i--; ) {\n\t\t\tunmountNodeAndChildren(node.c[i]);\n\t\t}\n\t}\n}\n\nfunction deleteCachedEvent(eid) {\n\tif (typeof eid === STRING_TYPE) delete EVENTS_CACHE[eid];\n}\n\nfunction removeIndividuallyBoundEvents(targetNode, eid) {\n\tconst keys = Object.keys(EVENTS_CACHE[eid]);\n\tfor (let i = keys.length; i--; ) {\n\t\tif (NON_DELEGATED_EVENTS.includes(keys[i])) {\n\t\t\ttargetNode.removeEventListener(keys[i], EVENTS_CACHE[eid][keys[i]]);\n\t\t}\n\t}\n}\n\nfunction stylesAreEqual(newStyle, oldStyle) {\n\tconst newType = typeof newStyle;\n\tconst oldType = typeof oldStyle;\n\n\treturn (\n\t\t(newType === OBJECT_TYPE &&\n\t\t\toldType === OBJECT_TYPE &&\n\t\t\tJSON.stringify(newStyle) === JSON.stringify(oldStyle)) ||\n\t\t(newType === UNDEFINED_TYPE && oldType === UNDEFINED_TYPE)\n\t);\n}\n\nfunction shiftLifcycleQueue() {\n\tlet lc;\n\twhile ((lc = LIFECYCLE_QUEUE.shift())) lc();\n}\n\nfunction pushLifecycle(node, lcName) {\n\tif (typeof node === OBJECT_TYPE && typeof node[lcName] === FUNCTION_TYPE) {\n\t\tLIFECYCLE_QUEUE.push(node[lcName]);\n\t}\n}\n\nmodule.exports = {\n\tcomponent,\n\trender,\n\th\n};\n"],"names":["ROOT_NODE","SAVED_TREE","CURRENT_TREE","GLOBAL_STORE","COMPONENT_STATE","DELEGATED_EVENTS_ADDED","EVENTS_CACHE","LIFECYCLE_QUEUE","NON_DELEGATED_EVENTS","isArray","val","Array","generateUUID","Math","random","toString","substring","Date","getTime","flatten","out","a","i","len","length","push","assign","merge","b","h","el","attr","children","e","c","render","components","documentNodeID","state","document","getElementById","generateTreeVN","appendChild","shiftLifcycleQueue","component","name","mounted","updated","unmounted","methods","componentUUID","props","id","init","this","key","store","getStore","setStore","bind","getState","setState","createState","deleteState","func","bindMethods","newStore","callback","initiateDiff","newState","newC","cObj","m","up","un","d","createDomNode","data","type","createTextNode","newE","createElement","keys","Object","eid","addEvents","addStyles","setAttribute","pushLifecycle","getEventUUID","element","parentNode","nodeName","getAttribute","eventObj","targetNode","includes","addEventListener","uuid","target","event","styles","style","oldTree","newTree","diffAndPatch","firstChild","newVN","oldVN","nType","oType","unmountNodeAndChildren","remove","nodesNotEqual","replaceChild","lastChild","oldVal","newVal","stylesAreEqual","removeAttribute","removeIndividuallyBoundEvents","deleteCachedEvent","value","updateNodes","childNodes","newNode","node","removeEventListener","newStyle","oldStyle","newType","oldType","JSON","stringify","lc","shift","lcName","module","exports"],"mappings":"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"}
|
package/build/index.umd.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.umd.js","sources":["../src/index.js"],"sourcesContent":["let ROOT_NODE, SAVED_TREE, CURRENT_TREE;\nlet GLOBAL_STORE = {};\nlet COMPONENT_STATE = {};\nconst EVENTS_KEY = 'eid';\nconst DELEGATED_EVENTS_ADDED = [];\nconst EVENTS_CACHE = {};\nconst LIFECYCLE_QUEUE = [];\nconst NON_DELEGATED_EVENTS = [\n\t'abort',\n\t'blur',\n\t'error',\n\t'focus',\n\t'load',\n\t'mouseenter',\n\t'mouseleave',\n\t'resize',\n\t'scroll',\n\t'unload'\n];\nconst STRING_TYPE = 'string';\nconst NUMBER_TYPE = 'number';\nconst BOOLEAN_TYPE = 'boolean';\nconst UNDEFINED_TYPE = 'undefined';\nconst OBJECT_TYPE = 'object';\nconst FUNCTION_TYPE = 'function';\nconst EVENTS_TYPE = 'events';\nconst STYLE_TYPE = 'style';\nconst VALUE_TYPE = 'value';\n\nfunction isArray(val) {\n\treturn Array.isArray(val);\n}\n\nfunction generateUUID() {\n\treturn (\n\t\tMath.random()\n\t\t\t.toString(36)\n\t\t\t.substring(2) + new Date().getTime().toString(36)\n\t);\n}\n\nfunction flatten(out, a) {\n\tfor (let i = 0, len = a.length; i < len; i++) {\n\t\tif (isArray(a[i])) flatten(out, a[i]);\n\t\telse out.push(a[i]);\n\t}\n\treturn out;\n}\n\nfunction assign(out, a) {\n\tfor (let i in a) out[i] = a[i];\n\treturn out;\n}\n\nfunction merge(out, a, b) {\n\treturn assign(assign(out, a), b);\n}\n\nexport function h(el, attr, ...children) {\n\treturn {\n\t\te: el,\n\t\ta: assign({}, attr),\n\t\tc: flatten([], children)\n\t};\n}\n\nexport function render(components, documentNodeID, state = {}) {\n\t// Initialize application state\n\tGLOBAL_STORE = assign({}, state);\n\t// Cache initial tree for re-instanting with new states\n\t// Cache the initial tree for diffing later\n\tSAVED_TREE = components;\n\t// Grab root node to mount application on\n\tROOT_NODE = document.getElementById(documentNodeID);\n\t// Create first component tree\n\tCURRENT_TREE = generateTreeVN(components());\n\t// Append the new tree to our application for the first paint\n\tappendChild(ROOT_NODE, CURRENT_TREE);\n\t// Initial Lifecycle Trigger\n\tshiftLifcycleQueue();\n}\n\nexport function component({\n\tname = '',\n\tstate = {},\n\tmounted = function() {},\n\tupdated = function() {},\n\tunmounted = function() {},\n\tmethods = function() {},\n\trender = function() {}\n} = {}) {\n\tconst componentUUID = generateUUID();\n\treturn function(props = {}) {\n\t\treturn {\n\t\t\tid: componentUUID,\n\t\t\tinit: function() {\n\t\t\t\tthis.id = componentUUID;\n\t\t\t\tthis.name = name + (props.key ? '_' + props.key : '');\n\t\t\t\tthis.key = this.id + (this.name || '');\n\t\t\t\tthis.props = props;\n\t\t\t\tthis.store = GLOBAL_STORE;\n\t\t\t\tthis.getStore = getStore;\n\t\t\t\tthis.setStore = setStore.bind(this);\n\t\t\t\tthis.getState = getState.bind(this);\n\t\t\t\tthis.setState = setState.bind(this);\n\t\t\t\tthis.createState = function() {\n\t\t\t\t\tif (typeof COMPONENT_STATE[this.key] === UNDEFINED_TYPE) {\n\t\t\t\t\t\tCOMPONENT_STATE[this.key] = state;\n\t\t\t\t\t}\n\t\t\t\t}.bind(this)();\n\t\t\t\tthis.deleteState = function() {\n\t\t\t\t\tdelete COMPONENT_STATE[this.key];\n\t\t\t\t}.bind(this);\n\t\t\t\tthis.mounted = mounted.bind(this);\n\t\t\t\tthis.updated = updated.bind(this);\n\t\t\t\tthis.unmounted = unmounted.bind(this);\n\t\t\t\tbindMethods(this, methods);\n\t\t\t\tthis.render = render.bind(this);\n\t\t\t\treturn this;\n\t\t\t}\n\t\t};\n\t};\n}\n\nfunction getStore() {\n\treturn assign({}, GLOBAL_STORE);\n}\n\nfunction setStore(newStore, callback) {\n\tif (typeof newStore === FUNCTION_TYPE) {\n\t\tnewStore = newStore(GLOBAL_STORE);\n\t}\n\tGLOBAL_STORE = merge({}, GLOBAL_STORE, newStore);\n\tinitiateDiff();\n\tif (typeof callback === FUNCTION_TYPE) callback.bind(this)();\n}\n\nfunction getState() {\n\treturn assign({}, COMPONENT_STATE[this.key]);\n}\n\nfunction setState(newState, callback) {\n\tif (typeof newState === FUNCTION_TYPE) {\n\t\tnewState = newState(COMPONENT_STATE[this.key]);\n\t}\n\tCOMPONENT_STATE[this.key] = merge({}, COMPONENT_STATE[this.key], newState);\n\tinitiateDiff();\n\tif (typeof callback === FUNCTION_TYPE) callback.bind(this)();\n}\n\nfunction bindMethods(component, methods) {\n\tif (typeof methods === FUNCTION_TYPE) {\n\t\tmethods = methods.bind(component)();\n\t}\n\n\tfor (let func in methods) {\n\t\tcomponent[func] = methods[func].bind(component);\n\t}\n}\n\nfunction generateTreeVN(newC) {\n\tif (typeof newC === UNDEFINED_TYPE) {\n\t\treturn newC;\n\t} else if (typeof newC.e === FUNCTION_TYPE) {\n\t\t// For Components in the application to inject props.\n\t\tconst props = assign({}, newC.a.props);\n\t\tdelete newC.a.props;\n\t\tnewC = newC.e(props);\n\t}\n\n\tif (typeof newC.init === FUNCTION_TYPE) {\n\t\t// For the Root Component And Componets\n\t\t// Initialize The Component\n\t\tconst cObj = new newC.init();\n\t\t// Render Component Markup\n\t\tnewC = cObj.render();\n\n\t\tif (typeof newC === OBJECT_TYPE) {\n\t\t\t// Attach Id and LC Methods To Render Object\n\t\t\tnewC.id = cObj.id;\n\t\t\tnewC.m = cObj.mounted;\n\t\t\tnewC.up = cObj.updated;\n\t\t\tnewC.un = cObj.unmounted;\n\t\t\tnewC.d = cObj.deleteState;\n\t\t}\n\t}\n\n\tif (isArray(newC.c)) {\n\t\tfor (let i = 0, len = newC.c.length; i < len; i++) {\n\t\t\tnewC.c[i] = generateTreeVN(newC.c[i]);\n\t\t}\n\t}\n\n\treturn newC;\n}\n\nfunction createDomNode(data) {\n\tconst type = typeof data;\n\tif (type === STRING_TYPE || type === NUMBER_TYPE) {\n\t\treturn document.createTextNode(data);\n\t} else if (type === BOOLEAN_TYPE || type === UNDEFINED_TYPE) {\n\t\treturn document.createTextNode('');\n\t} else {\n\t\tconst newE = document.createElement(data.e);\n\n\t\tif (typeof data.a === OBJECT_TYPE) {\n\t\t\tconst keys = Object.keys(data.a);\n\t\t\tfor (let i = keys.length; i--; ) {\n\t\t\t\tif (keys[i] === EVENTS_TYPE) {\n\t\t\t\t\tdata.eid = generateUUID();\n\t\t\t\t\taddEvents(data.eid, data.a[keys[i]], newE);\n\t\t\t\t} else if (keys[i] === STYLE_TYPE) {\n\t\t\t\t\taddStyles(data.a[keys[i]], newE);\n\t\t\t\t} else {\n\t\t\t\t\tnewE.setAttribute(keys[i], data.a[keys[i]]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tpushLifecycle(data, 'm');\n\n\t\tif (isArray(data.c)) {\n\t\t\tfor (let i = 0, len = data.c.length; i < len; i++) {\n\t\t\t\tappendChild(newE, data.c[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn newE;\n\t}\n}\n\nfunction getEventUUID(element) {\n\tif (element.parentNode.nodeName === '#document') return;\n\tconst eid = element.getAttribute('data-' + EVENTS_KEY);\n\tif (typeof eid === STRING_TYPE) return eid;\n\treturn getEventUUID(element.parentNode);\n}\n\nfunction addEvents(eid, eventObj, targetNode) {\n\t// Generate UUID here for event functions\n\t// Send event functions into a cache for lookup by UUID\n\t// UUID is pulled during Event Delegation and the appropriate\n\t// event is picked by type.\n\ttargetNode.setAttribute('data-' + EVENTS_KEY, eid);\n\tEVENTS_CACHE[eid] = eventObj;\n\n\t// Prevent certain events from being delegated due to them not bubbling.\n\tconst keys = Object.keys(eventObj);\n\tfor (let i = keys.length; i--; ) {\n\t\tif (NON_DELEGATED_EVENTS.includes(keys[i])) {\n\t\t\t// Attach event directly if non-bubbling / non-delegated\n\t\t\ttargetNode.addEventListener(keys[i], EVENTS_CACHE[eid][keys[i]]);\n\t\t} else if (!DELEGATED_EVENTS_ADDED.includes(keys[i])) {\n\t\t\t// Added listener type to keep track of what kinds of events\n\t\t\t// are added to the root node.\n\t\t\tDELEGATED_EVENTS_ADDED.push(keys[i]);\n\t\t\tROOT_NODE.addEventListener(keys[i], function(e) {\n\t\t\t\tconst uuid = getEventUUID(e.target);\n\t\t\t\tif (typeof uuid === STRING_TYPE && EVENTS_CACHE[uuid]) {\n\t\t\t\t\tconst event = EVENTS_CACHE[uuid][e.type];\n\t\t\t\t\tif (typeof event === FUNCTION_TYPE) event(e);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n}\n\nfunction addStyles(styles, e) {\n\tif (typeof styles === UNDEFINED_TYPE) return;\n\tconst keys = Object.keys(styles);\n\tfor (let i = keys.length; i--; ) {\n\t\te.style[keys[i]] = styles[keys[i]];\n\t}\n}\n\nfunction initiateDiff(uuid) {\n\t// Generate new and old trees\n\tconst oldTree = assign({}, CURRENT_TREE);\n\tconst newTree = generateTreeVN(SAVED_TREE());\n\t// Cache new tree for future diffs\n\tCURRENT_TREE = newTree;\n\t// Initiate diff of trees...\n\tdiffAndPatch(ROOT_NODE, ROOT_NODE.firstChild, newTree, oldTree);\n\t// Trigger Lifecycle Methods...\n\tshiftLifcycleQueue();\n}\n\nfunction diffAndPatch(parentNode, targetNode, newVN, oldVN) {\n\tconst nType = typeof newVN;\n\tconst oType = typeof oldVN;\n\n\tif (oType === UNDEFINED_TYPE) {\n\t\tappendChild(parentNode, newVN);\n\t} else if (nType === UNDEFINED_TYPE) {\n\t\tunmountNodeAndChildren(oldVN);\n\t\ttargetNode.remove();\n\t} else if (nodesNotEqual(newVN, oldVN, nType, oType)) {\n\t\tunmountNodeAndChildren(oldVN);\n\t\tparentNode.replaceChild(createDomNode(newVN), targetNode);\n\t} else if (nType === OBJECT_TYPE) {\n\t\tupdateNodes(targetNode, newVN, oldVN);\n\n\t\tlet lastChild;\n\t\tfor (let i = oldVN.c.length; i--; ) {\n\t\t\tif (typeof newVN.c[i] !== UNDEFINED_TYPE) break;\n\t\t\tlastChild = targetNode.lastChild;\n\t\t\tif (typeof lastChild === OBJECT_TYPE) {\n\t\t\t\tunmountNodeAndChildren(oldVN.c[i]);\n\t\t\t\tlastChild.remove();\n\t\t\t}\n\t\t}\n\n\t\t// Recurse through children and diff.\n\t\tfor (let i = 0, len = newVN.c.length; i < len; i++) {\n\t\t\tdiffAndPatch(\n\t\t\t\ttargetNode,\n\t\t\t\ttargetNode.childNodes[i],\n\t\t\t\tnewVN.c[i],\n\t\t\t\toldVN.c[i]\n\t\t\t);\n\t\t}\n\t}\n}\n\nfunction appendChild(parentNode, newNode) {\n\tparentNode.appendChild(createDomNode(newNode));\n}\n\nfunction nodesNotEqual(newVN, oldVN, nType, oType) {\n\treturn (\n\t\tnType !== oType ||\n\t\tnewVN.e !== oldVN.e ||\n\t\tnewVN.id !== oldVN.id ||\n\t\t((nType === STRING_TYPE || nType === NUMBER_TYPE) && newVN !== oldVN)\n\t);\n}\n\nfunction updateNodes(targetNode, newVN, oldVN) {\n\tpushLifecycle(newVN, 'up');\n\n\tconst keys = Object.keys(newVN.a);\n\tlet oldVal, newVal;\n\tfor (let i = keys.length; i--; ) {\n\t\tnewVal = newVN.a[keys[i]];\n\t\toldVal = oldVN.a[keys[i]];\n\t\tif (keys[i] === STYLE_TYPE) {\n\t\t\tif (stylesAreEqual(newVal, oldVal)) continue;\n\t\t\ttargetNode.removeAttribute(keys[i]);\n\t\t\taddStyles(newVal, targetNode);\n\t\t} else if (keys[i] === EVENTS_TYPE) {\n\t\t\tremoveIndividuallyBoundEvents(targetNode, oldVN.eid);\n\t\t\tdeleteCachedEvent(oldVN.eid);\n\t\t\tnewVN.eid = generateUUID();\n\t\t\taddEvents(newVN.eid, newVal, targetNode);\n\t\t} else if (keys[i] === VALUE_TYPE && newVal !== oldVal) {\n\t\t\ttargetNode.value = newVal;\n\t\t} else if (typeof oldVal === UNDEFINED_TYPE || newVal !== oldVal) {\n\t\t\ttargetNode.setAttribute(keys[i], newVal);\n\t\t}\n\t}\n}\n\nfunction unmountNodeAndChildren(node) {\n\t// Recursivly unmounts all children.\n\tif (typeof node === UNDEFINED_TYPE) return;\n\tpushLifecycle(node, 'un');\n\tpushLifecycle(node, 'd');\n\tdeleteCachedEvent(node.eid);\n\tif (isArray(node.c)) {\n\t\tfor (let i = node.c.length; i--; ) {\n\t\t\tunmountNodeAndChildren(node.c[i]);\n\t\t}\n\t}\n}\n\nfunction deleteCachedEvent(eid) {\n\tif (typeof eid === STRING_TYPE) delete EVENTS_CACHE[eid];\n}\n\nfunction removeIndividuallyBoundEvents(targetNode, eid) {\n\tconst keys = Object.keys(EVENTS_CACHE[eid]);\n\tfor (let i = keys.length; i--; ) {\n\t\tif (NON_DELEGATED_EVENTS.includes(keys[i])) {\n\t\t\ttargetNode.removeEventListener(keys[i], EVENTS_CACHE[eid][keys[i]]);\n\t\t}\n\t}\n}\n\nfunction stylesAreEqual(newStyle, oldStyle) {\n\tconst newType = typeof newStyle;\n\tconst oldType = typeof oldStyle;\n\n\treturn (\n\t\t(newType === OBJECT_TYPE &&\n\t\t\toldType === OBJECT_TYPE &&\n\t\t\tJSON.stringify(newStyle) === JSON.stringify(oldStyle)) ||\n\t\t(newType === UNDEFINED_TYPE && oldType === UNDEFINED_TYPE)\n\t);\n}\n\nfunction shiftLifcycleQueue() {\n\tlet lc;\n\twhile ((lc = LIFECYCLE_QUEUE.shift())) lc();\n}\n\nfunction pushLifecycle(node, lcName) {\n\tif (typeof node === OBJECT_TYPE && typeof node[lcName] === FUNCTION_TYPE) {\n\t\tLIFECYCLE_QUEUE.push(node[lcName]);\n\t}\n}\n\nmodule.exports = {\n\tcomponent,\n\trender,\n\th\n};\n"],"names":["ROOT_NODE","SAVED_TREE","CURRENT_TREE","GLOBAL_STORE","COMPONENT_STATE","DELEGATED_EVENTS_ADDED","EVENTS_CACHE","LIFECYCLE_QUEUE","NON_DELEGATED_EVENTS","STRING_TYPE","NUMBER_TYPE","UNDEFINED_TYPE","OBJECT_TYPE","FUNCTION_TYPE","EVENTS_TYPE","STYLE_TYPE","isArray","val","Array","generateUUID","Math","random","toString","substring","Date","getTime","flatten","out","a","i","len","length","push","assign","merge","b","h","el","attr","e","c","render","components","documentNodeID","state","document","getElementById","generateTreeVN","appendChild","shiftLifcycleQueue","component","name","mounted","updated","unmounted","methods","componentUUID","props","id","init","this","key","store","getStore","setStore","bind","getState","setState","createState","deleteState","func","bindMethods","newStore","callback","initiateDiff","newState","newC","cObj","m","up","un","d","createDomNode","data","type","createTextNode","newE","createElement","keys","Object","eid","addEvents","addStyles","setAttribute","pushLifecycle","getEventUUID","element","parentNode","nodeName","getAttribute","eventObj","targetNode","includes","addEventListener","uuid","target","event","styles","style","oldTree","newTree","diffAndPatch","firstChild","newVN","oldVN","nType","oType","unmountNodeAndChildren","remove","nodesNotEqual","replaceChild","lastChild","oldVal","newVal","newType","oldType","oldStyle","newStyle","JSON","stringify","removeAttribute","removeIndividuallyBoundEvents","deleteCachedEvent","value","updateNodes","childNodes","newNode","node","removeEventListener","lc","shift","lcName","module","exports"],"mappings":"mOAAA,IAAIA,EAAWC,EAAYC,EACvBC,EAAe,GACfC,EAAkB,GAEhBC,EAAyB,GACzBC,EAAe,GACfC,EAAkB,GAClBC,EAAuB,CAC5B,QACA,OACA,QACA,QACA,OACA,aACA,aACA,SACA,SACA,UAEKC,EAAc,SACdC,EAAc,SAEdC,EAAiB,YACjBC,EAAc,SACdC,EAAgB,WAChBC,EAAc,SACdC,EAAa,QAGnB,SAASC,EAAQC,GAChB,OAAOC,MAAMF,QAAQC,GAGtB,SAASE,IACR,OACCC,KAAKC,SACHC,SAAS,IACTC,UAAU,IAAK,IAAIC,MAAOC,UAAUH,SAAS,IAIjD,SAASI,EAAQC,EAAKC,GACrB,IAAK,IAAIC,EAAI,EAAGC,EAAMF,EAAEG,OAAQF,EAAIC,EAAKD,IACpCb,EAAQY,EAAEC,IAAKH,EAAQC,EAAKC,EAAEC,IAC7BF,EAAIK,KAAKJ,EAAEC,IAEjB,OAAOF,EAGR,SAASM,EAAON,EAAKC,GACpB,IAAK,IAAIC,KAAKD,EAAGD,EAAIE,GAAKD,EAAEC,GAC5B,OAAOF,EAGR,SAASO,EAAMP,EAAKC,EAAGO,GACtB,OAAOF,EAAOA,EAAON,EAAKC,GAAIO,YAGfC,EAAEC,EAAIC,GACrB,MAAO,CACNC,EAAGF,EACHT,EAAGK,EAAO,GAAIK,GACdE,EAAGd,EAAQ,yCAIGe,EAAOC,EAAYC,EAAgBC,YAAAA,IAAAA,EAAQ,IAE1DzC,EAAe8B,EAAO,GAAIW,GAG1B3C,EAAayC,EAEb1C,EAAY6C,SAASC,eAAeH,GAEpCzC,EAAe6C,EAAeL,KAE9BM,EAAYhD,EAAWE,GAEvB+C,aAGeC,sBAQZ,SAPHC,KAAAA,aAAO,SACPP,MAAAA,aAAQ,SACRQ,QAAAA,aAAU,mBACVC,QAAAA,aAAU,mBACVC,UAAAA,aAAY,mBACZC,QAAAA,aAAU,mBACVd,OAAAA,aAAS,eAEHe,EAAgBrC,IACtB,gBAAgBsC,GACf,gBADeA,IAAAA,EAAQ,IAChB,CACNC,GAAIF,EACJG,KAAM,WAuBL,OAtBAC,KAAKF,GAAKF,EACVI,KAAKT,KAAOA,GAAQM,EAAMI,IAAM,IAAMJ,EAAMI,IAAM,IAClDD,KAAKC,IAAMD,KAAKF,IAAME,KAAKT,MAAQ,IACnCS,KAAKH,MAAQA,EACbG,KAAKE,MAAQ3D,EACbyD,KAAKG,SAAWA,EAChBH,KAAKI,SAAWA,EAASC,KAAKL,MAC9BA,KAAKM,SAAWA,EAASD,KAAKL,MAC9BA,KAAKO,SAAWA,EAASF,KAAKL,MAC9BA,KAAKQ,YAAc,kBACPhE,EAAgBwD,KAAKC,OAASlD,IACxCP,EAAgBwD,KAAKC,KAAOjB,IAE5BqB,KAAKL,KAJY,GAKnBA,KAAKS,YAAc,kBACXjE,EAAgBwD,KAAKC,MAC3BI,KAAKL,MACPA,KAAKR,QAAUA,EAAQa,KAAKL,MAC5BA,KAAKP,QAAUA,EAAQY,KAAKL,MAC5BA,KAAKN,UAAYA,EAAUW,KAAKL,MAmCpC,SAAqBV,EAAWK,GAK/B,IAAK,IAAIe,YAJEf,IAAY1C,IACtB0C,EAAUA,EAAQU,KAAKf,EAAbK,IAGMA,EAChBL,EAAUoB,GAAQf,EAAQe,GAAML,KAAKf,GAxCnCqB,CAAYX,KAAML,GAClBK,KAAKnB,OAASA,EAAOwB,KAAKL,cAO9B,SAASG,IACR,OAAO9B,EAAO,GAAI9B,GAGnB,SAAS6D,EAASQ,EAAUC,UAChBD,IAAa3D,IACvB2D,EAAWA,EAASrE,IAErBA,EAAe+B,EAAM,GAAI/B,EAAcqE,GACvCE,WACWD,IAAa5D,GAAe4D,EAASR,KAAKL,KAAda,GAGxC,SAASP,IACR,OAAOjC,EAAO,GAAI7B,EAAgBwD,KAAKC,MAGxC,SAASM,EAASQ,EAAUF,UAChBE,IAAa9D,IACvB8D,EAAWA,EAASvE,EAAgBwD,KAAKC,OAE1CzD,EAAgBwD,KAAKC,KAAO3B,EAAM,GAAI9B,EAAgBwD,KAAKC,KAAMc,GACjED,WACWD,IAAa5D,GAAe4D,EAASR,KAAKL,KAAda,GAaxC,SAAS1B,EAAe6B,GACvB,UAAWA,IAASjE,EACnB,OAAOiE,YACUA,EAAKrC,IAAM1B,EAAe,CAE3C,IAAM4C,EAAQxB,EAAO,GAAI2C,EAAKhD,EAAE6B,cACzBmB,EAAKhD,EAAE6B,MACdmB,EAAOA,EAAKrC,EAAEkB,GAGf,UAAWmB,EAAKjB,OAAS9C,EAAe,CAGvC,IAAMgE,EAAO,IAAID,EAAKjB,YAEtBiB,EAAOC,EAAKpC,YAEQ7B,IAEnBgE,EAAKlB,GAAKmB,EAAKnB,GACfkB,EAAKE,EAAID,EAAKzB,QACdwB,EAAKG,GAAKF,EAAKxB,QACfuB,EAAKI,GAAKH,EAAKvB,UACfsB,EAAKK,EAAIJ,EAAKR,aAIhB,GAAIrD,EAAQ4D,EAAKpC,GAChB,IAAK,IAAIX,EAAI,EAAGC,EAAM8C,EAAKpC,EAAET,OAAQF,EAAIC,EAAKD,IAC7C+C,EAAKpC,EAAEX,GAAKkB,EAAe6B,EAAKpC,EAAEX,IAIpC,OAAO+C,EAGR,SAASM,EAAcC,GACtB,IAAMC,SAAcD,EACpB,GAAIC,IAAS3E,GAAe2E,IAAS1E,EACpC,OAAOmC,SAASwC,eAAeF,MAlLZ,YAmLTC,GAAyBA,IAASzE,EAC5C,OAAOkC,SAASwC,eAAe,IAE/B,IAAMC,EAAOzC,SAAS0C,cAAcJ,EAAK5C,GAEzC,UAAW4C,EAAKvD,IAAMhB,EAErB,IADA,IAAM4E,EAAOC,OAAOD,KAAKL,EAAKvD,GACrBC,EAAI2D,EAAKzD,OAAQF,KACrB2D,EAAK3D,KAAOf,GACfqE,EAAKO,IAAMvE,IACXwE,EAAUR,EAAKO,IAAKP,EAAKvD,EAAE4D,EAAK3D,IAAKyD,IAC3BE,EAAK3D,KAAOd,EACtB6E,EAAUT,EAAKvD,EAAE4D,EAAK3D,IAAKyD,GAE3BA,EAAKO,aAAaL,EAAK3D,GAAIsD,EAAKvD,EAAE4D,EAAK3D,KAO1C,GAFAiE,EAAcX,EAAM,KAEhBnE,EAAQmE,EAAK3C,GAChB,IAAK,IAAIX,EAAI,EAAGC,EAAMqD,EAAK3C,EAAET,OAAQF,EAAIC,EAAKD,IAC7CmB,EAAYsC,EAAMH,EAAK3C,EAAEX,IAI3B,OAAOyD,EAIT,SAASS,EAAaC,GACrB,GAAoC,cAAhCA,EAAQC,WAAWC,SAAvB,CACA,IAAMR,EAAMM,EAAQG,aAAa,YACjC,cAAWT,IAAQjF,EAAoBiF,EAChCK,EAAaC,EAAQC,aAG7B,SAASN,EAAUD,EAAKU,EAAUC,GAKjCA,EAAWR,aAAa,WAAsBH,GAC9CpF,EAAaoF,GAAOU,EAIpB,IADA,IAAMZ,EAAOC,OAAOD,KAAKY,GAChBvE,EAAI2D,EAAKzD,OAAQF,KACrBrB,EAAqB8F,SAASd,EAAK3D,IAEtCwE,EAAWE,iBAAiBf,EAAK3D,GAAIvB,EAAaoF,GAAKF,EAAK3D,KACjDxB,EAAuBiG,SAASd,EAAK3D,MAGhDxB,EAAuB2B,KAAKwD,EAAK3D,IACjC7B,EAAUuG,iBAAiBf,EAAK3D,GAAI,SAASU,GAC5C,IAAMiE,EAAOT,EAAaxD,EAAEkE,QAC5B,UAAWD,IAAS/F,GAAeH,EAAakG,GAAO,CACtD,IAAME,EAAQpG,EAAakG,GAAMjE,EAAE6C,aACxBsB,IAAU7F,GAAe6F,EAAMnE,OAO/C,SAASqD,EAAUe,EAAQpE,GAC1B,UAAWoE,IAAWhG,EAEtB,IADA,IAAM6E,EAAOC,OAAOD,KAAKmB,GAChB9E,EAAI2D,EAAKzD,OAAQF,KACzBU,EAAEqE,MAAMpB,EAAK3D,IAAM8E,EAAOnB,EAAK3D,IAIjC,SAAS6C,EAAa8B,GAErB,IAAMK,EAAU5E,EAAO,GAAI/B,GACrB4G,EAAU/D,EAAe9C,KAE/BC,EAAe4G,EAEfC,EAAa/G,EAAWA,EAAUgH,WAAYF,EAASD,GAEvD5D,IAGD,SAAS8D,EAAad,EAAYI,EAAYY,EAAOC,GACpD,IAAMC,SAAeF,EACfG,SAAeF,EAErB,GAAIE,IAAUzG,EACbqC,EAAYiD,EAAYgB,WACdE,IAAUxG,EACpB0G,EAAuBH,GACvBb,EAAWiB,iBAiCb,SAAuBL,EAAOC,EAAOC,EAAOC,GAC3C,OACCD,IAAUC,GACVH,EAAM1E,IAAM2E,EAAM3E,GAClB0E,EAAMvD,KAAOwD,EAAMxD,KACjByD,IAAU1G,GAAe0G,IAAUzG,IAAgBuG,IAAUC,EArCrDK,CAAcN,EAAOC,EAAOC,EAAOC,GAC7CC,EAAuBH,GACvBjB,EAAWuB,aAAatC,EAAc+B,GAAQZ,WACpCc,IAAUvG,EAAa,CAGjC,IAAI6G,GAmCN,SAAqBpB,EAAYY,EAAOC,GACvCpB,EAAcmB,EAAO,MAIrB,IAFA,IACIS,EAAQC,EADNnC,EAAOC,OAAOD,KAAKyB,EAAMrF,GAEtBC,EAAI2D,EAAKzD,OAAQF,KAGzB,GAFA8F,EAASV,EAAMrF,EAAE4D,EAAK3D,IACtB6F,EAASR,EAAMtF,EAAE4D,EAAK3D,IAClB2D,EAAK3D,KAAOd,EAAY,CAC3B,QA2CI6G,OACAC,EAAAA,SAF2BC,EA1CJJ,IA2CvBE,SADiBG,EA1CFJ,MA+CP/G,GACZiH,IAAYjH,GACZoH,KAAKC,UAAUF,KAAcC,KAAKC,UAAUH,IAC5CF,IAAYjH,GAAkBkH,IAAYlH,EAlDN,SACpC0F,EAAW6B,gBAAgB1C,EAAK3D,IAChC+D,EAAU+B,EAAQtB,QACRb,EAAK3D,KAAOf,GACtBqH,EAA8B9B,EAAYa,EAAMxB,KAChD0C,EAAkBlB,EAAMxB,KACxBuB,EAAMvB,IAAMvE,IACZwE,EAAUsB,EAAMvB,IAAKiC,EAAQtB,IAtUb,UAuUNb,EAAK3D,IAAqB8F,IAAWD,EAC/CrB,EAAWgC,MAAQV,SACFD,IAAW/G,GAAkBgH,IAAWD,GACzDrB,EAAWR,aAAaL,EAAK3D,GAAI8F,GA+BpC,IAAwBI,EAAUD,EAC3BF,EACAC,EA1FLS,CAAYjC,EAAYY,EAAOC,GAG/B,IAAK,IAAIrF,EAAIqF,EAAM1E,EAAET,OAAQF,YACjBoF,EAAMzE,EAAEX,KAAOlB,UAC1B8G,EAAYpB,EAAWoB,aACE7G,IACxByG,EAAuBH,EAAM1E,EAAEX,IAC/B4F,EAAUH,UAKZ,IAAK,IAAIzF,EAAI,EAAGC,EAAMmF,EAAMzE,EAAET,OAAQF,EAAIC,EAAKD,IAC9CkF,EACCV,EACAA,EAAWkC,WAAW1G,GACtBoF,EAAMzE,EAAEX,GACRqF,EAAM1E,EAAEX,KAMZ,SAASmB,EAAYiD,EAAYuC,GAChCvC,EAAWjD,YAAYkC,EAAcsD,IAqCtC,SAASnB,EAAuBoB,GAE/B,UAAWA,IAAS9H,IACpBmF,EAAc2C,EAAM,MACpB3C,EAAc2C,EAAM,KACpBL,EAAkBK,EAAK/C,KACnB1E,EAAQyH,EAAKjG,IAChB,IAAK,IAAIX,EAAI4G,EAAKjG,EAAET,OAAQF,KAC3BwF,EAAuBoB,EAAKjG,EAAEX,IAKjC,SAASuG,EAAkB1C,UACfA,IAAQjF,UAAoBH,EAAaoF,GAGrD,SAASyC,EAA8B9B,EAAYX,GAElD,IADA,IAAMF,EAAOC,OAAOD,KAAKlF,EAAaoF,IAC7B7D,EAAI2D,EAAKzD,OAAQF,KACrBrB,EAAqB8F,SAASd,EAAK3D,KACtCwE,EAAWqC,oBAAoBlD,EAAK3D,GAAIvB,EAAaoF,GAAKF,EAAK3D,KAiBlE,SAASoB,IAER,IADA,IAAI0F,EACIA,EAAKpI,EAAgBqI,SAAUD,IAGxC,SAAS7C,EAAc2C,EAAMI,UACjBJ,IAAS7H,UAAsB6H,EAAKI,KAAYhI,GAC1DN,EAAgByB,KAAKyG,EAAKI,IAI5BC,OAAOC,QAAU,CAChB7F,UAAAA,EACAT,OAAAA,EACAL,EAAAA"}
|
package/literalJS.png
DELETED
|
Binary file
|
package/test/component.test.js
DELETED
|
@@ -1,95 +0,0 @@
|
|
|
1
|
-
import { component, h } from '../src';
|
|
2
|
-
|
|
3
|
-
describe('Component Tests', () => {
|
|
4
|
-
test('Component H Syntax Works', () => {
|
|
5
|
-
const Comp = new component({
|
|
6
|
-
render() {
|
|
7
|
-
return h('div', {}, h('span', {}, 'Hello World'));
|
|
8
|
-
}
|
|
9
|
-
})().init();
|
|
10
|
-
|
|
11
|
-
expect(Comp.render()).toEqual({
|
|
12
|
-
e: 'div',
|
|
13
|
-
a: {},
|
|
14
|
-
c: [
|
|
15
|
-
{
|
|
16
|
-
e: 'span',
|
|
17
|
-
a: {},
|
|
18
|
-
c: ['Hello World']
|
|
19
|
-
}
|
|
20
|
-
]
|
|
21
|
-
});
|
|
22
|
-
});
|
|
23
|
-
|
|
24
|
-
test('Component Props Injection Works', () => {
|
|
25
|
-
const count = 1;
|
|
26
|
-
const Comp = new component({
|
|
27
|
-
render() {
|
|
28
|
-
return h('div', {}, h('span', {}, this.props.count));
|
|
29
|
-
}
|
|
30
|
-
})({ count: count }).init();
|
|
31
|
-
|
|
32
|
-
expect(Comp.render()).toEqual({
|
|
33
|
-
e: 'div',
|
|
34
|
-
a: {},
|
|
35
|
-
c: [
|
|
36
|
-
{
|
|
37
|
-
e: 'span',
|
|
38
|
-
a: {},
|
|
39
|
-
c: [count]
|
|
40
|
-
}
|
|
41
|
-
]
|
|
42
|
-
});
|
|
43
|
-
});
|
|
44
|
-
|
|
45
|
-
test('Component State Injection Works', () => {
|
|
46
|
-
const count = 1;
|
|
47
|
-
const Comp = component({
|
|
48
|
-
state: {
|
|
49
|
-
count: count
|
|
50
|
-
},
|
|
51
|
-
render() {
|
|
52
|
-
return h('div', {}, h('span', {}, this.getState().count));
|
|
53
|
-
}
|
|
54
|
-
})().init();
|
|
55
|
-
|
|
56
|
-
expect(Comp.render()).toEqual({
|
|
57
|
-
e: 'div',
|
|
58
|
-
a: {},
|
|
59
|
-
c: [
|
|
60
|
-
{
|
|
61
|
-
e: 'span',
|
|
62
|
-
a: {},
|
|
63
|
-
c: [count]
|
|
64
|
-
}
|
|
65
|
-
]
|
|
66
|
-
});
|
|
67
|
-
});
|
|
68
|
-
|
|
69
|
-
test('Component Method Injection Works', () => {
|
|
70
|
-
const count = 1;
|
|
71
|
-
const Comp = component({
|
|
72
|
-
methods() {
|
|
73
|
-
return {
|
|
74
|
-
count() {
|
|
75
|
-
return count;
|
|
76
|
-
}
|
|
77
|
-
};
|
|
78
|
-
},
|
|
79
|
-
render() {
|
|
80
|
-
return h('div', {}, h('span', {}, this.count()));
|
|
81
|
-
}
|
|
82
|
-
})().init();
|
|
83
|
-
expect(Comp.render()).toEqual({
|
|
84
|
-
e: 'div',
|
|
85
|
-
a: {},
|
|
86
|
-
c: [
|
|
87
|
-
{
|
|
88
|
-
e: 'span',
|
|
89
|
-
a: {},
|
|
90
|
-
c: [count]
|
|
91
|
-
}
|
|
92
|
-
]
|
|
93
|
-
});
|
|
94
|
-
});
|
|
95
|
-
});
|
package/test/h.test.js
DELETED
|
@@ -1,207 +0,0 @@
|
|
|
1
|
-
import { h } from '../src';
|
|
2
|
-
|
|
3
|
-
describe('H Tests', () => {
|
|
4
|
-
test('H Node Created', () => {
|
|
5
|
-
expect(h('div')).toEqual({
|
|
6
|
-
e: 'div',
|
|
7
|
-
a: {},
|
|
8
|
-
c: []
|
|
9
|
-
});
|
|
10
|
-
});
|
|
11
|
-
|
|
12
|
-
test('H Node Created With Single Child', () => {
|
|
13
|
-
expect(h('div', {}, ['hello'])).toEqual({
|
|
14
|
-
e: 'div',
|
|
15
|
-
a: {},
|
|
16
|
-
c: ['hello']
|
|
17
|
-
});
|
|
18
|
-
|
|
19
|
-
expect(h('div', {}, 'world')).toEqual({
|
|
20
|
-
e: 'div',
|
|
21
|
-
a: {},
|
|
22
|
-
c: ['world']
|
|
23
|
-
});
|
|
24
|
-
});
|
|
25
|
-
|
|
26
|
-
test('H Node Create With Multiple Children Of VNodes, Different Types, And Same Types', () => {
|
|
27
|
-
expect(h('div', {}, ['foo', 'bar', 'baz'])).toEqual({
|
|
28
|
-
e: 'div',
|
|
29
|
-
a: {},
|
|
30
|
-
c: ['foo', 'bar', 'baz']
|
|
31
|
-
});
|
|
32
|
-
|
|
33
|
-
expect(h('div', {}, 'foo', 'bar', 'baz')).toEqual({
|
|
34
|
-
e: 'div',
|
|
35
|
-
a: {},
|
|
36
|
-
c: ['foo', 'bar', 'baz']
|
|
37
|
-
});
|
|
38
|
-
|
|
39
|
-
expect(h('div', {}, [0, 1, 2, 3, 4])).toEqual({
|
|
40
|
-
e: 'div',
|
|
41
|
-
a: {},
|
|
42
|
-
c: [0, 1, 2, 3, 4]
|
|
43
|
-
});
|
|
44
|
-
|
|
45
|
-
expect(h('div', {}, 0, 1, 2, 3, 4)).toEqual({
|
|
46
|
-
e: 'div',
|
|
47
|
-
a: {},
|
|
48
|
-
c: [0, 1, 2, 3, 4]
|
|
49
|
-
});
|
|
50
|
-
|
|
51
|
-
expect(h('div', {}, ['foo', 1, 'baz'])).toEqual({
|
|
52
|
-
e: 'div',
|
|
53
|
-
a: {},
|
|
54
|
-
c: ['foo', 1, 'baz']
|
|
55
|
-
});
|
|
56
|
-
|
|
57
|
-
expect(h('div', {}, 'foo', 1, 'baz')).toEqual({
|
|
58
|
-
e: 'div',
|
|
59
|
-
a: {},
|
|
60
|
-
c: ['foo', 1, 'baz']
|
|
61
|
-
});
|
|
62
|
-
|
|
63
|
-
expect(
|
|
64
|
-
h('div', {}, [h('div', {}, 'hello'), h('div', {}, 'world')])
|
|
65
|
-
).toEqual({
|
|
66
|
-
e: 'div',
|
|
67
|
-
a: {},
|
|
68
|
-
c: [
|
|
69
|
-
{
|
|
70
|
-
e: 'div',
|
|
71
|
-
a: {},
|
|
72
|
-
c: ['hello']
|
|
73
|
-
},
|
|
74
|
-
{
|
|
75
|
-
e: 'div',
|
|
76
|
-
a: {},
|
|
77
|
-
c: ['world']
|
|
78
|
-
}
|
|
79
|
-
]
|
|
80
|
-
});
|
|
81
|
-
|
|
82
|
-
expect(h('div', {}, h('div', {}, 'hello'), h('div', {}, 'world'))).toEqual({
|
|
83
|
-
e: 'div',
|
|
84
|
-
a: {},
|
|
85
|
-
c: [
|
|
86
|
-
{
|
|
87
|
-
e: 'div',
|
|
88
|
-
a: {},
|
|
89
|
-
c: ['hello']
|
|
90
|
-
},
|
|
91
|
-
{
|
|
92
|
-
e: 'div',
|
|
93
|
-
a: {},
|
|
94
|
-
c: ['world']
|
|
95
|
-
}
|
|
96
|
-
]
|
|
97
|
-
});
|
|
98
|
-
|
|
99
|
-
expect(
|
|
100
|
-
h('div', {}, [
|
|
101
|
-
'foo',
|
|
102
|
-
'bar',
|
|
103
|
-
h('div', {}, 'hello'),
|
|
104
|
-
1,
|
|
105
|
-
2,
|
|
106
|
-
h('div', {}, 'world')
|
|
107
|
-
])
|
|
108
|
-
).toEqual({
|
|
109
|
-
e: 'div',
|
|
110
|
-
a: {},
|
|
111
|
-
c: [
|
|
112
|
-
'foo',
|
|
113
|
-
'bar',
|
|
114
|
-
{
|
|
115
|
-
e: 'div',
|
|
116
|
-
a: {},
|
|
117
|
-
c: ['hello']
|
|
118
|
-
},
|
|
119
|
-
1,
|
|
120
|
-
2,
|
|
121
|
-
{
|
|
122
|
-
e: 'div',
|
|
123
|
-
a: {},
|
|
124
|
-
c: ['world']
|
|
125
|
-
}
|
|
126
|
-
]
|
|
127
|
-
});
|
|
128
|
-
|
|
129
|
-
expect(
|
|
130
|
-
h(
|
|
131
|
-
'div',
|
|
132
|
-
{},
|
|
133
|
-
'foo',
|
|
134
|
-
'bar',
|
|
135
|
-
h('div', {}, 'hello'),
|
|
136
|
-
1,
|
|
137
|
-
2,
|
|
138
|
-
h('div', {}, 'world')
|
|
139
|
-
)
|
|
140
|
-
).toEqual({
|
|
141
|
-
e: 'div',
|
|
142
|
-
a: {},
|
|
143
|
-
c: [
|
|
144
|
-
'foo',
|
|
145
|
-
'bar',
|
|
146
|
-
{
|
|
147
|
-
e: 'div',
|
|
148
|
-
a: {},
|
|
149
|
-
c: ['hello']
|
|
150
|
-
},
|
|
151
|
-
1,
|
|
152
|
-
2,
|
|
153
|
-
{
|
|
154
|
-
e: 'div',
|
|
155
|
-
a: {},
|
|
156
|
-
c: ['world']
|
|
157
|
-
}
|
|
158
|
-
]
|
|
159
|
-
});
|
|
160
|
-
});
|
|
161
|
-
|
|
162
|
-
test('H Node With Attributes', () => {
|
|
163
|
-
expect(
|
|
164
|
-
h(
|
|
165
|
-
'div',
|
|
166
|
-
{
|
|
167
|
-
class: 'container'
|
|
168
|
-
},
|
|
169
|
-
'!'
|
|
170
|
-
)
|
|
171
|
-
).toEqual({
|
|
172
|
-
e: 'div',
|
|
173
|
-
a: {
|
|
174
|
-
class: 'container'
|
|
175
|
-
},
|
|
176
|
-
c: ['!']
|
|
177
|
-
});
|
|
178
|
-
|
|
179
|
-
expect(
|
|
180
|
-
h(
|
|
181
|
-
'div',
|
|
182
|
-
{
|
|
183
|
-
class: 'container',
|
|
184
|
-
id: 'foo'
|
|
185
|
-
},
|
|
186
|
-
1,
|
|
187
|
-
2,
|
|
188
|
-
3
|
|
189
|
-
)
|
|
190
|
-
).toEqual({
|
|
191
|
-
e: 'div',
|
|
192
|
-
a: {
|
|
193
|
-
class: 'container',
|
|
194
|
-
id: 'foo'
|
|
195
|
-
},
|
|
196
|
-
c: [1, 2, 3]
|
|
197
|
-
});
|
|
198
|
-
});
|
|
199
|
-
|
|
200
|
-
test('H Node Flattens Children', () => {
|
|
201
|
-
expect(h('div', {}, [['foo'], ['bar'], ['baz']])).toEqual({
|
|
202
|
-
e: 'div',
|
|
203
|
-
a: {},
|
|
204
|
-
c: ['foo', 'bar', 'baz']
|
|
205
|
-
});
|
|
206
|
-
});
|
|
207
|
-
});
|
package/test/lifecycle.test.js
DELETED
|
@@ -1,115 +0,0 @@
|
|
|
1
|
-
import { render, component, h } from '../src';
|
|
2
|
-
|
|
3
|
-
describe('Lifecycle Tests', () => {
|
|
4
|
-
beforeEach(() => {
|
|
5
|
-
document.body.innerHTML = '<div id="root"></div>';
|
|
6
|
-
});
|
|
7
|
-
|
|
8
|
-
test('Lifecycle mounted works with getState and setState', (done) => {
|
|
9
|
-
const Comp2 = component({
|
|
10
|
-
state: { show: false, count: 1 },
|
|
11
|
-
mounted() {
|
|
12
|
-
this.setState({ count: this.getState().count + 1 });
|
|
13
|
-
const { count } = this.getState();
|
|
14
|
-
expect(count).toBe(2);
|
|
15
|
-
done();
|
|
16
|
-
},
|
|
17
|
-
render() {
|
|
18
|
-
return h(
|
|
19
|
-
'button',
|
|
20
|
-
{
|
|
21
|
-
id: 'button',
|
|
22
|
-
events: {
|
|
23
|
-
click: () => {
|
|
24
|
-
this.setState({ show: !this.getState().show });
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
},
|
|
28
|
-
this.getState().show &&
|
|
29
|
-
h('span', {}, [
|
|
30
|
-
h('span', { id: 'count' }, this.getState().count)
|
|
31
|
-
])
|
|
32
|
-
);
|
|
33
|
-
}
|
|
34
|
-
});
|
|
35
|
-
|
|
36
|
-
const Comp = component({
|
|
37
|
-
render() {
|
|
38
|
-
return h('div', { class: 'container' }, Comp2());
|
|
39
|
-
}
|
|
40
|
-
});
|
|
41
|
-
|
|
42
|
-
render(Comp, 'root', {});
|
|
43
|
-
|
|
44
|
-
document.getElementById('button').click();
|
|
45
|
-
});
|
|
46
|
-
|
|
47
|
-
test('Lifecycle unmounted works with getState and setState', (done) => {
|
|
48
|
-
const Comp2 = component({
|
|
49
|
-
state: { count: 1 },
|
|
50
|
-
unmounted() {
|
|
51
|
-
expect(this.getState().count).toBe(1);
|
|
52
|
-
done();
|
|
53
|
-
},
|
|
54
|
-
render() {
|
|
55
|
-
return h(
|
|
56
|
-
'div',
|
|
57
|
-
{ },
|
|
58
|
-
h('span', {}), [
|
|
59
|
-
h('span', { id: 'count' }, this.getState().count)
|
|
60
|
-
]
|
|
61
|
-
);
|
|
62
|
-
}
|
|
63
|
-
});
|
|
64
|
-
|
|
65
|
-
const Comp = component({
|
|
66
|
-
state: { show: true },
|
|
67
|
-
mounted() {
|
|
68
|
-
this.setState({ show: !this.getState().show });
|
|
69
|
-
},
|
|
70
|
-
render() {
|
|
71
|
-
return h('div', { class: 'container' }, [
|
|
72
|
-
this.getState().show && Comp2()
|
|
73
|
-
]);
|
|
74
|
-
}
|
|
75
|
-
});
|
|
76
|
-
|
|
77
|
-
render(Comp, 'root', {});
|
|
78
|
-
});
|
|
79
|
-
|
|
80
|
-
test('Lifecycle updated works with getState and setState', (done) => {
|
|
81
|
-
const Comp2 = component({
|
|
82
|
-
state: { count: 1 },
|
|
83
|
-
mounted() {
|
|
84
|
-
this.setState((state) => ({ count: state.count + 1 }));
|
|
85
|
-
},
|
|
86
|
-
updated() {
|
|
87
|
-
expect(this.getState().count).toBe(2);
|
|
88
|
-
done();
|
|
89
|
-
},
|
|
90
|
-
render() {
|
|
91
|
-
return h(
|
|
92
|
-
'div',
|
|
93
|
-
{ },
|
|
94
|
-
h('span', {}), [
|
|
95
|
-
h('span', { id: 'count' }, this.getState().count)
|
|
96
|
-
]
|
|
97
|
-
);
|
|
98
|
-
}
|
|
99
|
-
});
|
|
100
|
-
|
|
101
|
-
const Comp = component({
|
|
102
|
-
state: { show: false },
|
|
103
|
-
mounted() {
|
|
104
|
-
this.setState({ show: !this.getState().show });
|
|
105
|
-
},
|
|
106
|
-
render() {
|
|
107
|
-
return h('div', { class: 'container' }, [
|
|
108
|
-
this.getState().show && Comp2()
|
|
109
|
-
]);
|
|
110
|
-
}
|
|
111
|
-
});
|
|
112
|
-
|
|
113
|
-
render(Comp, 'root', {});
|
|
114
|
-
});
|
|
115
|
-
});
|