@baicie/zeus
Version:
The progressive JavaScript framework for building modern web applications.
6 lines (5 loc) • 8.95 kB
JavaScript
/**
* zeus vundefined
* (c) 2025 baicie
* Released under the MIT License.
**/var ZeusJs=function(e){"use strict";var t,n;let i;(n=t||(t={}))[n.None=0]="None",n[n.Mutable=1]="Mutable",n[n.Watching=2]="Watching",n[n.RecursedCheck=4]="RecursedCheck",n[n.Recursed=8]="Recursed",n[n.Dirty=16]="Dirty",n[n.Pending=32]="Pending";let o=[],{link:r,unlink:s,propagate:u,checkDirty:l,shallowPropagate:d}=function({update:e,notify:t,unwatched:n}){return{link:function(e,t,n){let i=t.depsTail;if(void 0!==i&&i.dep===e)return;let o=void 0!==i?i.nextDep:t.deps;if(void 0!==o&&o.dep===e){o.version=n,t.depsTail=o;return}let r=e.subsTail;if(void 0!==r&&r.version===n&&r.sub===t)return;let s=t.depsTail=e.subsTail={version:n,dep:e,sub:t,prevDep:i,nextDep:o,prevSub:r,nextSub:void 0};void 0!==o&&(o.prevDep=s),void 0!==i?i.nextDep=s:t.deps=s,void 0!==r?r.nextSub=s:e.subs=s},unlink:function(e,t=e.sub){let i=e.dep,o=e.prevDep,r=e.nextDep,s=e.nextSub,u=e.prevSub;return void 0!==r?r.prevDep=o:t.depsTail=o,void 0!==o?o.nextDep=r:t.deps=r,void 0!==s?s.prevSub=u:i.subsTail=u,void 0!==u?u.nextSub=s:void 0===(i.subs=s)&&n(i),r},propagate:function(e){let n,i=e.nextSub;e:for(;;){let o=e.sub,r=o.flags;if(60&r?12&r?4&r?!(48&r)&&function(e,t){let n=t.depsTail;for(;void 0!==n;){if(n===e)return!0;n=n.prevDep}return!1}(e,o)?(o.flags=40|r,r&=1):r=0:o.flags=-9&r|32:r=0:o.flags=32|r,2&r&&t(o),1&r){let t=o.subs;if(void 0!==t){let o=(e=t).nextSub;void 0!==o&&(n={value:i,prev:n},i=o);continue}}if(void 0!==(e=i)){i=e.nextSub;continue}for(;void 0!==n;)if(e=n.value,n=n.prev,void 0!==e){i=e.nextSub;continue e}break}},checkDirty:function(t,n){let o,r=0,s=!1;e:for(;;){let u=t.dep,l=u.flags;if(16&n.flags)s=!0;else if((17&l)==17){if(e(u)){let e=u.subs;void 0!==e.nextSub&&i(e),s=!0}}else if((33&l)==33){(void 0!==t.nextSub||void 0!==t.prevSub)&&(o={value:t,prev:o}),t=u.deps,n=u,++r;continue}if(!s){let e=t.nextDep;if(void 0!==e){t=e;continue}}for(;r--;){let r=n.subs,u=void 0!==r.nextSub;if(u?(t=o.value,o=o.prev):t=r,s){if(e(n)){u&&i(r),n=t.sub;continue}s=!1}else n.flags&=-33;n=t.sub;let l=t.nextDep;if(void 0!==l){t=l;continue e}}return s}},shallowPropagate:i};function i(e){do{let n=e.sub,i=n.flags;(48&i)==32&&(n.flags=16|i,2&i&&t(n))}while(void 0!==(e=e.nextSub))}}({update:e=>void 0!==e.depsTail?m(e):x(e),notify:function e(t){let n=t.flags;if(!(64&n)){t.flags=64|n;let i=t.subs;void 0!==i?e(i.sub):o[p++]=t}},unwatched(e){1&e.flags?void 0!==e.depsTail&&(e.depsTail=void 0,e.flags=17,y(e)):A.call(e)}}),a=0,c=0,f=0,p=0;function v(e){let t=i;return i=e,t}function h(e){return S.bind({currentValue:e,pendingValue:e,subs:void 0,subsTail:void 0,flags:1})}function b(e){return T.bind({value:void 0,subs:void 0,subsTail:void 0,deps:void 0,depsTail:void 0,flags:17,getter:e})}function g(e){let t={fn:e,subs:void 0,subsTail:void 0,deps:void 0,depsTail:void 0,flags:2},n=v(t);void 0!==n&&r(t,n,0);try{t.fn()}finally{i=n}return E.bind(t)}function m(e){++a,e.depsTail=void 0,e.flags=5;let t=v(e);try{let t=e.value;return t!==(e.value=e.getter(t))}finally{i=t,e.flags&=-5,y(e)}}function x(e){return e.flags=1,e.currentValue!==(e.currentValue=e.pendingValue)}function C(){for(;f<p;){let e=o[f];o[f++]=void 0,function e(t,n){if(16&n||32&n&&(l(t.deps,t)||(t.flags=-33&n,0))){++a,t.depsTail=void 0,t.flags=6;let e=v(t);try{t.fn()}finally{i=e,t.flags&=-5,y(t)}}else{let n=t.deps;for(;void 0!==n;){let t=n.dep,i=t.flags;64&i&&e(t,t.flags=-65&i),n=n.nextDep}}}(e,e.flags&=-65)}f=0,p=0}function T(){let e=this.flags;if((16&e||32&e&&(l(this.deps,this)||(this.flags=-33&e,0)))&&m(this)){let e=this.subs;void 0!==e&&d(e)}let t=i;return void 0!==t&&r(this,t,a),this.value}function S(...e){if(e.length){if(this.pendingValue!==(this.pendingValue=e[0])){this.flags=17;let e=this.subs;void 0!==e&&(u(e),c||C())}}else{if(16&this.flags&&x(this)){let e=this.subs;void 0!==e&&d(e)}let e=i;for(;void 0!==e;){if(3&e.flags){r(this,e,a);break}e=e.subs?.sub}return this.currentValue}}function E(){A.call(this)}function A(){this.depsTail=void 0,this.flags=0,y(this);let e=this.subs;void 0!==e&&s(e)}function y(e){let t=e.depsTail,n=void 0!==t?t.nextDep:e.deps;for(;void 0!==n;)n=s(n,e)}function D(e){return document.createTextNode(String(e))}function N(e){return"string"==typeof e||"number"==typeof e?D(e):e}function k(e,t){Object.entries(t).forEach(([t,n])=>{null==n?e.removeAttribute(t):"boolean"==typeof n?n?e.setAttribute(t,""):e.removeAttribute(t):e.setAttribute(t,String(n))})}function L(e,t){let{shadow:n=!0,styles:i,observedAttributes:o=[],tagName:r}=t;class s extends HTMLElement{constructor(){if(super(),this.renderer=null,this.context={props:{},container:n?this.attachShadow({mode:"open"}):this,cleanup:[],mounted:!1},i&&n){let e=document.createElement("style");e.textContent=i,this.context.container.appendChild(e)}}static get observedAttributes(){return o}connectedCallback(){this.context.mounted=!0,this.render()}disconnectedCallback(){this.context.mounted=!1,this.cleanup()}attributeChangedCallback(e,t,n){t!==n&&(this.context.props[e]=n,this.context.mounted&&this.render())}render(){this.context.mounted&&(this.cleanup(),this.renderer=()=>{if(!this.context.mounted)return;if(this.context.container!==this)this.context.container.innerHTML="";else for(;this.context.container.firstChild;)this.context.container.removeChild(this.context.container.firstChild);let t=e(this.context.props);t instanceof Element?this.context.container.appendChild(t):"string"==typeof t&&(this.context.container.innerHTML=t)},this.renderer())}cleanup(){this.context.cleanup.forEach(e=>e()),this.context.cleanup=[],this.renderer=null}updateProps(e){Object.assign(this.context.props,e),this.context.mounted&&this.render()}}return customElements.define(r,s),s}return e.addEventListener=function(e,t,n,i){e.addEventListener(t,n,i)},e.clear=function(e){for(;e.firstChild;)e.removeChild(e.firstChild)},e.computed=b,e.createElement=function(e,t,...n){let i=document.createElement(e);return t&&k(i,t),n.length>0&&n.forEach(e=>{null!=e&&i.appendChild(N(e))}),i},e.createFragment=function(...e){let t=document.createDocumentFragment();return e.forEach(e=>{null!=e&&t.appendChild(N(e))}),t},e.createFunctionalWC=L,e.createNode=N,e.createText=D,e.defineFunctionalWC=function(e,t,n={}){return L(t,Object.assign({},n,{tagName:e}))},e.delegateEvent=function(e,t,n,i,o){let r=e=>{let n=e.target;n&&n.matches(t)&&i(e)};return e.addEventListener(n,r,o),()=>{e.removeEventListener(n,r,o)}},e.effect=g,e.effectScope=function(e){let t={deps:void 0,depsTail:void 0,subs:void 0,subsTail:void 0,flags:0},n=v(t);void 0!==n&&r(t,n,0);try{e()}finally{i=n}return A.bind(t)},e.endBatch=function(){--c||C()},e.getActiveSub=function(){return i},e.getAttr=function(e,t){return e.getAttribute(t)},e.getBatchDepth=function(){return c},e.hasAttr=function(e,t){return e.hasAttribute(t)},e.hooks={useState:e=>h(e),useComputed:e=>b(e),useEffect:(e,t)=>g(e),useProps:()=>{throw Error("useProps must be used within a functional component context")}},e.insertAfter=function(e,t){if(e.parentNode){let n=e.nextSibling;n?e.parentNode.insertBefore(t,n):e.parentNode.appendChild(t)}},e.insertBefore=function(e,t){e.parentNode&&e.parentNode.insertBefore(t,e)},e.insertText=function(e,t,n){let i=D(t),o=e.childNodes;void 0===n||n>=o.length?e.appendChild(i):e.insertBefore(i,o[n])},e.isComputed=function(e){return e.name==="bound "+T.name},e.isEffect=function(e){return e.name==="bound "+E.name},e.isEffectScope=function(e){return e.name==="bound "+A.name},e.isSignal=function(e){return e.name==="bound "+S.name},e.lifecycle={onMounted:e=>g(e),onUnmounted:e=>g(()=>e),onUpdated:e=>g(e)},e.mount=function(e,t){e.appendChild(t)},e.removeAttr=function(e,t){e.removeAttribute(t)},e.removeEventListener=function(e,t,n,i){e.removeEventListener(t,n,i)},e.replace=function(e,t){e.parentNode&&e.parentNode.replaceChild(t,e)},e.setActiveSub=v,e.setAttr=function(e,t,n){null==n?e.removeAttribute(t):"boolean"==typeof n?n?e.setAttribute(t,""):e.removeAttribute(t):e.setAttribute(t,String(n))},e.setAttrs=k,e.setText=function(e,t){e.textContent=String(t)},e.signal=h,e.startBatch=function(){++c},e.unmount=function(e){e.parentNode&&e.parentNode.removeChild(e)},e.useAttributes=function(){let e=h({});return{get:t=>e()[t],set:(t,n)=>{let i=e();e(Object.assign({},i,{[t]:n}))},has:t=>t in e(),remove:t=>{let n=Object.assign({},e());delete n[t],e(n)},getAll:()=>e()}},e.useCallback=function(e,t){let n=h(e);return g(()=>{n(e)}),n()},e.useComputed=function(e){return b(e)},e.useEffect=function(e,t){return g(e)},e.useEvents=function(){let e=h({});return{emit:(t,n)=>{let i=new CustomEvent(t,{detail:n});(e()[t]||[]).forEach(e=>e(i))},on:(t,n)=>{let i=e(),o=i[t]||[];e(Object.assign({},i,{[t]:[...o,n]}))},off:(t,n)=>{let i=e(),o=i[t]||[];e(Object.assign({},i,{[t]:o.filter(e=>e!==n)}))}}},e.useMemo=function(e,t){return b(e)},e.useRef=function(e){let t=h(e);return{get current(){return t()},set current(value){t(value)}}},e.useState=function(e){return h(e)},e.version="1.0.0",e}({});