flexium 0.9.0 → 0.9.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/dist/advanced.d.cts +2 -2
- package/dist/advanced.d.ts +2 -2
- package/dist/advanced.js +1 -1
- package/dist/advanced.mjs +1 -1
- package/dist/canvas.d.cts +1 -1
- package/dist/canvas.d.ts +1 -1
- package/dist/canvas.js +1 -1
- package/dist/canvas.mjs +1 -1
- package/dist/chunk-2ZHUQBNI.mjs +2 -0
- package/dist/chunk-2ZHUQBNI.mjs.map +1 -0
- package/dist/{chunk-CBO2X74Q.js → chunk-DFG62GKW.js} +2 -2
- package/dist/{chunk-CBO2X74Q.js.map → chunk-DFG62GKW.js.map} +1 -1
- package/dist/{chunk-LXXN76HJ.mjs → chunk-HDCPA76O.mjs} +2 -2
- package/dist/{chunk-LXXN76HJ.mjs.map → chunk-HDCPA76O.mjs.map} +1 -1
- package/dist/chunk-J4CK5NRW.mjs +3 -0
- package/dist/chunk-J4CK5NRW.mjs.map +1 -0
- package/dist/chunk-JEDCNAAI.mjs +3 -0
- package/dist/chunk-JEDCNAAI.mjs.map +1 -0
- package/dist/{chunk-PDOEMOWN.js → chunk-JHJHIMWD.js} +2 -2
- package/dist/{chunk-PDOEMOWN.js.map → chunk-JHJHIMWD.js.map} +1 -1
- package/dist/{chunk-RIVNKTUR.js → chunk-L4C5UBOX.js} +2 -2
- package/dist/{chunk-RIVNKTUR.js.map → chunk-L4C5UBOX.js.map} +1 -1
- package/dist/{chunk-ZG3LULLU.js → chunk-M4ANLZ6P.js} +3 -3
- package/dist/{chunk-ZG3LULLU.js.map → chunk-M4ANLZ6P.js.map} +1 -1
- package/dist/chunk-RDA77IE6.js +2 -0
- package/dist/chunk-RDA77IE6.js.map +1 -0
- package/dist/{chunk-JDTJFAXO.mjs → chunk-RUXAK74B.mjs} +2 -2
- package/dist/{chunk-JDTJFAXO.mjs.map → chunk-RUXAK74B.mjs.map} +1 -1
- package/dist/chunk-TRIEKNVZ.mjs +2 -0
- package/dist/{chunk-GQKN4NPW.mjs.map → chunk-TRIEKNVZ.mjs.map} +1 -1
- package/dist/chunk-VIVO4FHN.js +3 -0
- package/dist/chunk-VIVO4FHN.js.map +1 -0
- package/dist/chunk-XLE6SMWX.mjs +3 -0
- package/dist/{chunk-6RV7ARJT.mjs.map → chunk-XLE6SMWX.mjs.map} +1 -1
- package/dist/chunk-YGMMJWAA.js +3 -0
- package/dist/chunk-YGMMJWAA.js.map +1 -0
- package/dist/core.js +1 -1
- package/dist/core.mjs +1 -1
- package/dist/dom.js +1 -1
- package/dist/dom.mjs +1 -1
- package/dist/dom.mjs.map +1 -1
- package/dist/index.d.cts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1 -1
- package/dist/index.mjs.map +1 -1
- package/dist/interactive.js +1 -1
- package/dist/interactive.mjs +1 -1
- package/dist/interactive.mjs.map +1 -1
- package/dist/metafile-cjs.json +1 -1
- package/dist/metafile-esm.json +1 -1
- package/dist/{owner-Ce7KCWzi.d.cts → owner-QS9tPwPr.d.cts} +1 -8
- package/dist/{owner-Ce7KCWzi.d.ts → owner-QS9tPwPr.d.ts} +1 -8
- package/dist/primitives/motion.js +1 -1
- package/dist/primitives/motion.mjs +1 -1
- package/dist/primitives/ui.js +1 -1
- package/dist/primitives/ui.mjs +1 -1
- package/dist/primitives/ui.mjs.map +1 -1
- package/dist/primitives.d.cts +1 -1
- package/dist/primitives.d.ts +1 -1
- package/dist/primitives.js +1 -1
- package/dist/primitives.mjs +1 -1
- package/dist/router.js +1 -1
- package/dist/router.mjs +1 -1
- package/dist/server.js +1 -1
- package/dist/server.mjs +1 -1
- package/dist/server.mjs.map +1 -1
- package/dist/signal-3YZHUCLL.js +2 -0
- package/dist/{signal-AXKUQJVA.js.map → signal-3YZHUCLL.js.map} +1 -1
- package/dist/signal-F2HEYB6F.mjs +2 -0
- package/dist/{signal-HM2LG5YL.mjs.map → signal-F2HEYB6F.mjs.map} +1 -1
- package/dist/test-exports.d.cts +2 -2
- package/dist/test-exports.d.ts +2 -2
- package/dist/test-exports.js +1 -1
- package/dist/test-exports.mjs +1 -1
- package/package.json +1 -1
- package/dist/chunk-6RV7ARJT.mjs +0 -3
- package/dist/chunk-GFL4VRAO.mjs +0 -3
- package/dist/chunk-GFL4VRAO.mjs.map +0 -1
- package/dist/chunk-GQKN4NPW.mjs +0 -2
- package/dist/chunk-MKE3KA43.js +0 -3
- package/dist/chunk-MKE3KA43.js.map +0 -1
- package/dist/chunk-TQLZ7UZX.js +0 -2
- package/dist/chunk-TQLZ7UZX.js.map +0 -1
- package/dist/chunk-WEYAKKNF.js +0 -3
- package/dist/chunk-WEYAKKNF.js.map +0 -1
- package/dist/chunk-WO6NQ3KR.mjs +0 -3
- package/dist/chunk-WO6NQ3KR.mjs.map +0 -1
- package/dist/chunk-Y4DUMNIW.mjs +0 -2
- package/dist/chunk-Y4DUMNIW.mjs.map +0 -1
- package/dist/signal-AXKUQJVA.js +0 -2
- package/dist/signal-HM2LG5YL.mjs +0 -2
- /package/dist/{scheduler-Z4QqUDjF.d.cts → sync-Z4QqUDjF.d.cts} +0 -0
- /package/dist/{scheduler-Z4QqUDjF.d.ts → sync-Z4QqUDjF.d.ts} +0 -0
package/dist/chunk-GQKN4NPW.mjs
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import {a}from'./chunk-WVEJT7HD.mjs';import {n}from'./chunk-GFL4VRAO.mjs';function m(e){let t={},i=[];return e.x!==void 0&&i.push(`translateX(${e.x}px)`),e.y!==void 0&&i.push(`translateY(${e.y}px)`),e.scale!==void 0?i.push(`scale(${e.scale})`):(e.scaleX!==void 0&&i.push(`scaleX(${e.scaleX})`),e.scaleY!==void 0&&i.push(`scaleY(${e.scaleY})`)),e.rotate!==void 0&&i.push(`rotate(${e.rotate}deg)`),i.length>0&&(t.transform=i.join(" ")),e.opacity!==void 0&&(t.opacity=e.opacity.toString()),e.width!==void 0&&(t.width=typeof e.width=="number"?`${e.width}px`:e.width),e.height!==void 0&&(t.height=typeof e.height=="number"?`${e.height}px`:e.height),t}function L(e){let t=e.tension??170,i=e.friction??26,o=e.mass??1,r=t,n=i,s=o,l=Math.sqrt(r/s),c=n/(2*Math.sqrt(r*s)),u=4.6/(c*l)*1e3;return c<1?{duration:u,easing:"cubic-bezier(0.34, 1.56, 0.64, 1)"}:{duration:u,easing:"cubic-bezier(0.22, 1, 0.36, 1)"}}var d=null,x=null;function A(){if(d===null)if(typeof window<"u"&&window.matchMedia){let e=window.matchMedia("(prefers-reduced-motion: reduce)");d=e.matches;let t=i=>{d=i.matches;};e.addEventListener("change",t),x=()=>{e.removeEventListener("change",t),d=null,x=null;};}else d=false;return d}function O(){x&&x();}var f=class{constructor(t){this.animation=null;this.resizeObserver=null;this.previousSize=null;this.element=t;}animate(t){let{initial:i,animate:o,duration:r=300,spring:n,easing:s="ease-out",delay:l=0}=t;if(!o)return;if(this.cancel(),A()){let a=m(o);Object.assign(this.element.style,{transform:a.transform||"",opacity:a.opacity||"",width:a.width||"",height:a.height||""}),t.onAnimationStart&&t.onAnimationStart(),t.onAnimationComplete&&t.onAnimationComplete();return}if(i){let a=m(i);Object.assign(this.element.style,{transform:a.transform||"",opacity:a.opacity||"",width:a.width||"",height:a.height||""});}let c=i?m(i):{},u=m(o),h=r,g=s;if(n){let a=L(n);h=a.duration,g=a.easing;}this.animation=this.element.animate([c,u],{duration:h,easing:g,delay:l,fill:"forwards"}),t.onAnimationStart&&t.onAnimationStart(),this.animation.onfinish=()=>{t.onAnimationComplete&&t.onAnimationComplete();};}async animateExit(t,i=300,o="ease-in"){if(this.cancel(),A()){let n=m(t);Object.assign(this.element.style,{transform:n.transform||"",opacity:n.opacity||"",width:n.width||"",height:n.height||""});return}let r=m(t);this.animation=this.element.animate([{},r],{duration:i,easing:o,fill:"forwards"}),await this.animation.finished;}enableLayoutAnimation(t=300,i="ease-out"){let o=this.element.getBoundingClientRect();this.previousSize={width:o.width,height:o.height},this.resizeObserver=new ResizeObserver(r=>{for(let n of r){if(!this.previousSize){this.previousSize={width:n.contentRect.width,height:n.contentRect.height};return}let s=n.contentRect.width,l=n.contentRect.height;(s!==this.previousSize.width||l!==this.previousSize.height)&&(this.cancel(),this.animation=this.element.animate([{width:`${this.previousSize.width}px`,height:`${this.previousSize.height}px`},{width:`${s}px`,height:`${l}px`}],{duration:t,easing:i,fill:"forwards"}),this.previousSize={width:s,height:l});}}),this.resizeObserver.observe(this.element);}disableLayoutAnimation(){this.resizeObserver&&(this.resizeObserver.disconnect(),this.resizeObserver=null,this.previousSize=null);}cancel(){this.animation&&(this.animation.cancel(),this.animation=null);}dispose(){this.cancel(),this.disableLayoutAnimation();}};function R(e){switch(e){case "fade":return {enter:{opacity:0},enterTo:{opacity:1},exit:{opacity:0}};case "slide-up":return {enter:{opacity:0,y:20},enterTo:{opacity:1,y:0},exit:{opacity:0,y:-20}};case "slide-down":return {enter:{opacity:0,y:-20},enterTo:{opacity:1,y:0},exit:{opacity:0,y:20}};case "slide-left":return {enter:{opacity:0,x:20},enterTo:{opacity:1,x:0},exit:{opacity:0,x:-20}};case "slide-right":return {enter:{opacity:0,x:-20},enterTo:{opacity:1,x:0},exit:{opacity:0,x:20}};case "scale":return {enter:{scale:.9},enterTo:{scale:1},exit:{scale:.9}};case "scale-fade":return {enter:{opacity:0,scale:.95},enterTo:{opacity:1,scale:1},exit:{opacity:0,scale:.95}};default:return {enter:{},enterTo:{},exit:{}}}}var y=null;function $(e){let{preset:t,enter:i,enterTo:o,exit:r,enterTiming:n$1={duration:300,easing:"ease-out"},exitTiming:s={duration:200,easing:"ease-in"},onEnterStart:l,onEnterComplete:c,onExitStart:u,onExitComplete:h,children:g}=e,a$1=t?R(t):null,P=i??a$1?.enter??{},C=o??a$1?.enterTo??{},S=r??a$1?.exit??{},b=null,p=null,M=y?.registerChild()??0,z=y?.staggerDelay??0,E=M*z;return n(async()=>{b&&p&&(u?.(),await p.animateExit(S,s.duration,s.easing),h?.());}),a("div",{style:{display:"contents"},ref:T=>{T&&(b=T,p=new f(T),queueMicrotask(()=>{p&&(l?.(),p.animate({initial:P,animate:C,duration:n$1.duration,easing:n$1.easing,delay:(n$1.delay??0)+E,onAnimationComplete:c}));}));}},g)}function G(e){let{stagger:t=50,children:i}=e,o=0,r={registerChild:()=>o++,staggerDelay:t};return ()=>{o=0;let n=y;y=r;try{return i}finally{y=n;}}}var D={fade:{preset:"fade"},slideUp:{preset:"slide-up"},slideDown:{preset:"slide-down"},slideLeft:{preset:"slide-left"},slideRight:{preset:"slide-right"},scale:{preset:"scale"},scaleFade:{preset:"scale-fade"},modal:{enter:{opacity:0,scale:.95,y:-10},enterTo:{opacity:1,scale:1,y:0},exit:{opacity:0,scale:.95,y:10},enterTiming:{duration:200,easing:"cubic-bezier(0.16, 1, 0.3, 1)"},exitTiming:{duration:150,easing:"ease-in"}},dropdown:{enter:{opacity:0,y:-8,scale:.95},enterTo:{opacity:1,y:0,scale:1},exit:{opacity:0,y:-8,scale:.95},enterTiming:{duration:150,easing:"ease-out"},exitTiming:{duration:100,easing:"ease-in"}},tooltip:{enter:{opacity:0,scale:.9},enterTo:{opacity:1,scale:1},exit:{opacity:0,scale:.9},enterTiming:{duration:100,easing:"ease-out"},exitTiming:{duration:75,easing:"ease-in"}},notification:{enter:{opacity:0,x:100},enterTo:{opacity:1,x:0},exit:{opacity:0,x:100},enterTiming:{duration:300,easing:"cubic-bezier(0.16, 1, 0.3, 1)"},exitTiming:{duration:200,easing:"ease-in"}},page:{enter:{opacity:0},enterTo:{opacity:1},exit:{opacity:0},enterTiming:{duration:200,easing:"ease-out"},exitTiming:{duration:150,easing:"ease-in"}}};export{O as a,f as b,$ as c,G as d,D as e};//# sourceMappingURL=chunk-GQKN4NPW.mjs.map
|
|
2
|
-
//# sourceMappingURL=chunk-GQKN4NPW.mjs.map
|
package/dist/chunk-MKE3KA43.js
DELETED
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
'use strict';var i={EFFECT_EXECUTION_FAILED:"FLX101",CLEANUP_OUTSIDE_EFFECT:"FLX102",SIGNAL_UPDATE_DURING_RENDER:"FLX103",COMPUTED_EXECUTION_FAILED:"FLX104",CONTEXT_MISSING_PROVIDER:"FLX201",ROUTER_OUTSIDE_PROVIDER:"FLX202",FORM_VALIDATION_FAILED:"FLX301",FORM_SUBMISSION_FAILED:"FLX302",ASYNC_VALIDATION_FAILED:"FLX303",BUTTON_HANDLER_FAILED:"FLX401",BUTTON_MISSING_ARIA_LABEL:"FLX402",COMPONENT_RENDER_FAILED:"FLX403",HYDRATION_MISMATCH:"FLX501",HYDRATION_TEXT_MISMATCH:"FLX502",HYDRATION_TAG_MISMATCH:"FLX503",HYDRATION_ATTRIBUTE_MISMATCH:"FLX504",DEVTOOLS_LISTENER_ERROR:"FLX601",UNCAUGHT_RENDER_ERROR:"FLX701",ERROR_BOUNDARY_CALLBACK_FAILED:"FLX702",DOM_CLEANUP_FAILED:"FLX703",EVENT_HANDLER_FAILED:"FLX801",KEYBOARD_HANDLER_FAILED:"FLX802",RESOURCE_FETCH_FAILED:"FLX901",RESOURCE_TIMEOUT:"FLX902"};function K(n){return typeof process<"u"&&process.env?.NODE_ENV!=="production"?{[i.EFFECT_EXECUTION_FAILED]:{message:"Effect execution failed",suggestion:"Check the effect callback for runtime errors. Consider wrapping async operations in try-catch."},[i.CLEANUP_OUTSIDE_EFFECT]:{message:"onCleanup must be called from within an effect",suggestion:"Move the onCleanup() call inside an effect() callback."},[i.SIGNAL_UPDATE_DURING_RENDER]:{message:"Signal was updated during render",suggestion:"Avoid updating signals inside render functions. Use effect() for side effects."},[i.CONTEXT_MISSING_PROVIDER]:{message:"Context used outside of Provider",suggestion:"Wrap your component tree with the appropriate Context.Provider."},[i.ROUTER_OUTSIDE_PROVIDER]:{message:"router() must be used within a <Router> component",suggestion:"Ensure your component is a descendant of <Router>."},[i.FORM_VALIDATION_FAILED]:{message:"Form field validation failed",suggestion:"Check the validation rules for the field and the input value."},[i.FORM_SUBMISSION_FAILED]:{message:"Form submission failed",suggestion:"Check the onSubmit handler and network connectivity."},[i.BUTTON_HANDLER_FAILED]:{message:"Button press handler failed",suggestion:"Check the onPress/onClick callback for errors."},[i.BUTTON_MISSING_ARIA_LABEL]:{message:"IconButton is missing an aria-label",suggestion:"Add an aria-label prop to IconButton for screen reader accessibility."},[i.HYDRATION_MISMATCH]:{message:"Hydration mismatch detected",suggestion:"Ensure server and client render the same content. Check for browser-only code."},[i.HYDRATION_TEXT_MISMATCH]:{message:"Text content mismatch during hydration",suggestion:"Server and client rendered different text. Check for Date.now(), Math.random(), or client-only data."},[i.HYDRATION_TAG_MISMATCH]:{message:"Element tag mismatch during hydration",suggestion:"Server and client rendered different elements. Verify conditional rendering logic."},[i.DEVTOOLS_LISTENER_ERROR]:{message:"DevTools listener threw an error",suggestion:"Check your DevTools event listener callback."},[i.UNCAUGHT_RENDER_ERROR]:{message:"Uncaught error during render",suggestion:"Wrap components with <ErrorBoundary> to catch and handle errors gracefully."},[i.ERROR_BOUNDARY_CALLBACK_FAILED]:{message:"ErrorBoundary callback failed",suggestion:"Check your onError or onReset callback for errors."},[i.COMPUTED_EXECUTION_FAILED]:{message:"Computed value execution failed",suggestion:"Check the computed callback for runtime errors. Ensure all dependencies are valid."},[i.ASYNC_VALIDATION_FAILED]:{message:"Async form validation failed",suggestion:"Check the async validation function and ensure it handles errors properly."},[i.COMPONENT_RENDER_FAILED]:{message:"Component render failed",suggestion:"Check the component function for runtime errors. Consider wrapping with <ErrorBoundary>."},[i.HYDRATION_ATTRIBUTE_MISMATCH]:{message:"Attribute mismatch during hydration",suggestion:"Server and client rendered different attribute values. Check for dynamic attributes."},[i.DOM_CLEANUP_FAILED]:{message:"DOM cleanup operation failed",suggestion:"A node may have been removed from the DOM unexpectedly. Check for manual DOM manipulation."},[i.EVENT_HANDLER_FAILED]:{message:"Event handler threw an error",suggestion:"Check your event handler callback. Consider adding try-catch for async operations."},[i.KEYBOARD_HANDLER_FAILED]:{message:"Keyboard event handler failed",suggestion:"Check the onKeyDown/onKeyUp handler for errors."},[i.RESOURCE_FETCH_FAILED]:{message:"Resource fetch failed",suggestion:"Check the async function and network connectivity. The resource will show an error state."},[i.RESOURCE_TIMEOUT]:{message:"Resource fetch timed out",suggestion:"The async operation took too long. Consider adding a timeout handler or retry logic."}}[n]||{message:`Error ${n}`}:{message:`Minified Error ${n}`}}function B(n,e,t){let r=K(n);return {code:n,message:r.message,suggestion:r.suggestion,context:e,originalError:t}}function X(n){let e=`[Flexium ${n.code}] ${n.message}`;if(n.context&&Object.keys(n.context).length>0){let t=Object.entries(n.context).map(([r,o])=>`${r}: ${JSON.stringify(o)}`).join(", ");e+=` (${t})`;}return n.suggestion&&(e+=`
|
|
2
|
-
\u2192 ${n.suggestion}`),e}function P(n,e,t){let r=B(n,e,t),o=X(r);t?console.error(o,t):console.error(o);}function G(n,e){let t=B(n,e),r=X(t);console.warn(r);}var m;(o=>{let n=[],e=0;function t(s,u){if(e>0){let a=n[--e];return a.dep=s,a.sub=u,a.prevSub=void 0,a.nextSub=void 0,a.prevDep=void 0,a.nextDep=void 0,a}return {dep:s,sub:u,prevSub:void 0,nextSub:void 0,prevDep:void 0,nextDep:void 0}}o.alloc=t;function r(s){s.dep=void 0,s.sub=void 0,s.prevSub=void 0,s.nextSub=void 0,s.prevDep=void 0,s.nextDep=void 0,e<1e4&&(n[e++]=s);}o.free=r;})(m||(m={}));var c;(t=>{function n(r,o){let s=m.alloc(r,o),u=o.depsHead;s.nextDep=u,u&&(u.prevDep=s),o.depsHead=s;let a=r.subsHead;s.nextSub=a,a&&(a.prevSub=s),r.subsHead=s;}t.connect=n;function e(r){let o=r.depsHead;for(;o;){let s=o.dep,u=o.nextDep,a=o.prevSub,d=o.nextSub;a?a.nextSub=d:s.subsHead=d,d&&(d.prevSub=a),m.free(o),o=u;}r.depsHead=void 0;}t.disconnectDependencies=e;})(c||(c={}));var Y;(r=>{function n(o,s){return (o.flags&s)!==0}r.has=n;function e(o,s){o.flags|=s;}r.add=e;function t(o,s){o.flags&=~s;}r.remove=t;})(Y||(Y={}));var h=null;function p(){return h}function E(n){h=n;}function $(n){let e=h;h=null;try{return n()}finally{h=e;}}var f=null;function T(){return f}function O(n){f=n;}function j(n){let e=f,t={cleanups:[],context:e?Object.create(e.context):null,owner:e};f=t;let r=()=>{for(let o of t.cleanups)o();t.cleanups=[];};try{return n(r)}finally{f=e;}}function q(n){queueMicrotask(()=>{let e=n();e&&typeof e=="function"&&f&&f.cleanups.push(e);});}var b=0,A=new Set,S=new Set,R=false;function x(){R||(R=true,queueMicrotask(V));}function V(){if(R=false,S.size===0)return;let n=Array.from(S);S.clear();for(let e=0;e<n.length;e++)n[e].execute();}function C(n){S.add(n);}function L(n){A.add(n);}function k(){return b}function te(n){let e;if(n){b++;try{e=n();}finally{if(b--,b===0){let t=Array.from(A);A.clear();for(let r=0;r<t.length;r++)t[r].execute();}}}return V(),e}var F=class{constructor(e,t){this.fn=e;this.onError=t;this.cleanups=[];this.flags=0;this.nodeType=3;this.owner=null;this.owner=T();}execute(){if((this.flags&1)!==0){this.flags|=2;return}this.flags|=1;try{this.run();}finally{this.flags&=-2,(this.flags&2)!==0&&(this.flags&=-3,queueMicrotask(()=>this.execute()));}}run(){if(this.cleanups.length>0){for(let r of this.cleanups)r();this.cleanups=[];}c.disconnectDependencies(this);let e=p(),t=T();E(this),O(this.owner);try{let r=this.fn();typeof r=="function"&&this.cleanups.push(r);}catch(r){this.onError?this.onError(r):P(i.EFFECT_EXECUTION_FAILED,void 0,r);}finally{E(e),O(t);}}dispose(){for(let e of this.cleanups)e();this.cleanups=[],c.disconnectDependencies(this);}};function w(n,e){let t=new F(n,e?.onError);t.execute();let r=()=>t.dispose(),o=T();return o&&o.cleanups.push(r),r}var g=null;function be(n){g=n;}var N=0,H=class{constructor(e){this._value=e;this.version=0;this.nodeType=1;}get(){let e=p();return e&&c.connect(this,e),this._value}set(e){this._value!==e&&(this._value=e,this.version=++N,this.notify());}peek(){return this._value}notify(){if(k()===0){if(this.subsHead){let e=false,t=this.subsHead;for(;t;){let r=t.sub;r.nodeType===2?r.execute():(C(r),e=true),t=t.nextSub;}e&&x();}}else {let e=this.subsHead;for(;e;)e.sub&&L(e.sub),e=e.nextSub;}}},U=class{constructor(e){this.computeFn=e;this.version=0;this.nodeType=2;this.flags=12;this.lastCleanEpoch=0;}execute(){this.flags|=12,this.notify();}_updateIfDirty(){let e=this.flags;if((e&12)===0)return;if((e&4)===0&&(e&8)!==0&&!this._needsRefetch()){this.flags&=-9;return}this.flags&=-13,c.disconnectDependencies(this);let r=p();E(this);try{let o=this.computeFn();this._value!==o&&(this._value=o,this.version=++N),this.lastCleanEpoch=N;}finally{E(r);}}_needsRefetch(){if(!this.depsHead)return true;let e=this.depsHead;for(;e;){let t=e.dep;if(t.version>this.lastCleanEpoch)return true;if(t.nodeType===2){let r=t;if(r.version>this.lastCleanEpoch||(r.flags&12)!==0&&(r.peek(),r.version>this.lastCleanEpoch))return true}e=e.nextDep;}return false}get(){let e=p();return e&&e!==this&&c.connect(this,e),(this.flags&12)!==0&&this._updateIfDirty(),this._value}peek(){return (this.flags&12)!==0&&this._updateIfDirty(),this._value}notify(){if(k()===0){if(this.subsHead){let e=false,t=this.subsHead;for(;t;){let r=t.sub;r.nodeType===2?r.execute():(C(r),e=true),t=t.nextSub;}e&&x();}}else {let e=this.subsHead;for(;e;)e.sub&&L(e.sub),e=e.nextSub;}}};function D(n){let e=new H(n),t=-1,r=function(){return e.get()};return Object.defineProperty(r,"value",{get(){return e.get()},set(o){e.set(o),t>=0&&g?.onSignalUpdate&&g.onSignalUpdate(t,o);},enumerable:true,configurable:true}),r.set=o=>{e.set(o),t>=0&&g?.onSignalUpdate&&g.onSignalUpdate(t,o);},r.peek=()=>e.peek(),r[I]=true,g?.onSignalCreate&&(t=g.onSignalCreate(r)),r}function Se(n){let e=new U(n),t=function(){return e.get()};return Object.defineProperty(t,"value",{get(){return e.get()},enumerable:true,configurable:true}),t.peek=()=>e.peek(),t[I]=true,t}var I=Symbol("flexium.signal");function Q(n){return n!==null&&typeof n=="function"&&I in n}function De(n){let e=p();e&&e.nodeType===3?e.cleanups.push(n):G(i.CLEANUP_OUTSIDE_EFFECT);}function Ie(n,e){let t=D(void 0),r=D(void 0),o=D(false),s=D("unresolved"),u=async(l,M=false)=>{M?(s.value="refreshing",o.value=true):(s.value="pending",o.value=true),r.value=void 0;let v=e(l,{value:t.peek(),refetching:M});a=v;try{let y=await v;a===v&&(t.value=y,s.value="ready",o.value=!1);}catch(y){a===v&&(r.value=y,s.value="errored",o.value=false);}},a=null,d=()=>typeof n=="function"?Q(n)?n.value:n():n;w(()=>{let l=d();u(l,false);});let _=function(){return t()};return Object.defineProperties(_,{value:{get:()=>t.value},loading:{get:()=>o.value},error:{get:()=>r.value},state:{get:()=>s.value},latest:{get:()=>t.peek()},peek:{value:()=>t.peek()},set:{value:l=>t.set(l)}}),_[I]=true,[_,{mutate:l=>t.set(l),refetch:()=>u(d(),true)}]}exports.a=i;exports.b=P;exports.c=G;exports.d=$;exports.e=T;exports.f=j;exports.g=q;exports.h=te;exports.i=w;exports.j=be;exports.k=D;exports.l=Se;exports.m=Q;exports.n=De;exports.o=Ie;//# sourceMappingURL=chunk-MKE3KA43.js.map
|
|
3
|
-
//# sourceMappingURL=chunk-MKE3KA43.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/core/errors.ts","../src/core/graph.ts","../src/core/owner.ts","../src/core/scheduler.ts","../src/core/effect.ts","../src/core/signal.ts"],"names":["ErrorCodes","getErrorDetails","code","createErrorInfo","context","originalError","details","formatErrorMessage","info","message","contextStr","key","value","logError","logWarning","LinkPool","pool","size","alloc","dep","sub","link","free","Graph","connect","depsHead","subsHead","disconnectDependencies","nextDep","prevSub","nextSub","Flags","has","obj","flag","add","remove","activeEffect","getActiveEffect","setActiveEffect","effect","untrack","fn","prev","owner","getOwner","setOwner","newOwner","root","prevOwner","dispose","cleanup","onMount","batchDepth","batchQueue","autoBatchQueue","isAutoBatchScheduled","scheduleAutoBatch","flushAutoBatch","queue","i","addToAutoBatch","addToBatch","getBatchDepth","sync","result","EffectNode","onError","prevEffect","error","options","node","devToolsHooks","setDevToolsHooks","hooks","globalVersion","SignalNode","_value","newValue","shouldSchedule","ComputedNode","computeFn","flags","computedDep","signal","initialValue","devToolsId","sig","SIGNAL_MARKER","computed","comp","isSignal","onCleanup","createResource","source","fetcher","loading","state","load","currentSource","refetching","currentPromise","latestPromise","err","getSource","resource","v"],"mappings":"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","file":"chunk-MKE3KA43.js","sourcesContent":["/**\n * Flexium Error System\n *\n * Standardized error handling with error codes, contextual information,\n * and actionable suggestions for developers.\n */\n\n// Error codes for all Flexium errors\nexport const ErrorCodes = {\n // Signal/Effect errors (1xx)\n EFFECT_EXECUTION_FAILED: 'FLX101',\n CLEANUP_OUTSIDE_EFFECT: 'FLX102',\n SIGNAL_UPDATE_DURING_RENDER: 'FLX103',\n COMPUTED_EXECUTION_FAILED: 'FLX104',\n\n // Context errors (2xx)\n CONTEXT_MISSING_PROVIDER: 'FLX201',\n ROUTER_OUTSIDE_PROVIDER: 'FLX202',\n\n // Form errors (3xx)\n FORM_VALIDATION_FAILED: 'FLX301',\n FORM_SUBMISSION_FAILED: 'FLX302',\n ASYNC_VALIDATION_FAILED: 'FLX303',\n\n // Component errors (4xx)\n BUTTON_HANDLER_FAILED: 'FLX401',\n BUTTON_MISSING_ARIA_LABEL: 'FLX402',\n COMPONENT_RENDER_FAILED: 'FLX403',\n\n // Hydration errors (5xx)\n HYDRATION_MISMATCH: 'FLX501',\n HYDRATION_TEXT_MISMATCH: 'FLX502',\n HYDRATION_TAG_MISMATCH: 'FLX503',\n HYDRATION_ATTRIBUTE_MISMATCH: 'FLX504',\n\n // DevTools errors (6xx)\n DEVTOOLS_LISTENER_ERROR: 'FLX601',\n\n // Render errors (7xx)\n UNCAUGHT_RENDER_ERROR: 'FLX701',\n ERROR_BOUNDARY_CALLBACK_FAILED: 'FLX702',\n DOM_CLEANUP_FAILED: 'FLX703',\n\n // Event errors (8xx)\n EVENT_HANDLER_FAILED: 'FLX801',\n KEYBOARD_HANDLER_FAILED: 'FLX802',\n\n // Resource/Async errors (9xx)\n RESOURCE_FETCH_FAILED: 'FLX901',\n RESOURCE_TIMEOUT: 'FLX902',\n} as const\n\nexport type ErrorCode = (typeof ErrorCodes)[keyof typeof ErrorCodes]\n\ninterface ErrorDefinition {\n message: string\n suggestion?: string\n}\n\n// Error message definitions with suggestions\n// Wrapped in a function to allow tree-shaking in production\nfunction getErrorDetails(code: ErrorCode): {\n message: string\n suggestion?: string\n} {\n const isDev = typeof process !== 'undefined' && process.env?.NODE_ENV !== 'production'\n if (isDev) {\n const errorDefinitions: Record<ErrorCode, ErrorDefinition> = {\n [ErrorCodes.EFFECT_EXECUTION_FAILED]: {\n message: 'Effect execution failed',\n suggestion:\n 'Check the effect callback for runtime errors. Consider wrapping async operations in try-catch.',\n },\n [ErrorCodes.CLEANUP_OUTSIDE_EFFECT]: {\n message: 'onCleanup must be called from within an effect',\n suggestion: 'Move the onCleanup() call inside an effect() callback.',\n },\n [ErrorCodes.SIGNAL_UPDATE_DURING_RENDER]: {\n message: 'Signal was updated during render',\n suggestion:\n 'Avoid updating signals inside render functions. Use effect() for side effects.',\n },\n [ErrorCodes.CONTEXT_MISSING_PROVIDER]: {\n message: 'Context used outside of Provider',\n suggestion:\n 'Wrap your component tree with the appropriate Context.Provider.',\n },\n [ErrorCodes.ROUTER_OUTSIDE_PROVIDER]: {\n message: 'router() must be used within a <Router> component',\n suggestion: 'Ensure your component is a descendant of <Router>.',\n },\n [ErrorCodes.FORM_VALIDATION_FAILED]: {\n message: 'Form field validation failed',\n suggestion:\n 'Check the validation rules for the field and the input value.',\n },\n [ErrorCodes.FORM_SUBMISSION_FAILED]: {\n message: 'Form submission failed',\n suggestion: 'Check the onSubmit handler and network connectivity.',\n },\n [ErrorCodes.BUTTON_HANDLER_FAILED]: {\n message: 'Button press handler failed',\n suggestion: 'Check the onPress/onClick callback for errors.',\n },\n [ErrorCodes.BUTTON_MISSING_ARIA_LABEL]: {\n message: 'IconButton is missing an aria-label',\n suggestion:\n 'Add an aria-label prop to IconButton for screen reader accessibility.',\n },\n [ErrorCodes.HYDRATION_MISMATCH]: {\n message: 'Hydration mismatch detected',\n suggestion:\n 'Ensure server and client render the same content. Check for browser-only code.',\n },\n [ErrorCodes.HYDRATION_TEXT_MISMATCH]: {\n message: 'Text content mismatch during hydration',\n suggestion:\n 'Server and client rendered different text. Check for Date.now(), Math.random(), or client-only data.',\n },\n [ErrorCodes.HYDRATION_TAG_MISMATCH]: {\n message: 'Element tag mismatch during hydration',\n suggestion:\n 'Server and client rendered different elements. Verify conditional rendering logic.',\n },\n [ErrorCodes.DEVTOOLS_LISTENER_ERROR]: {\n message: 'DevTools listener threw an error',\n suggestion: 'Check your DevTools event listener callback.',\n },\n [ErrorCodes.UNCAUGHT_RENDER_ERROR]: {\n message: 'Uncaught error during render',\n suggestion:\n 'Wrap components with <ErrorBoundary> to catch and handle errors gracefully.',\n },\n [ErrorCodes.ERROR_BOUNDARY_CALLBACK_FAILED]: {\n message: 'ErrorBoundary callback failed',\n suggestion: 'Check your onError or onReset callback for errors.',\n },\n [ErrorCodes.COMPUTED_EXECUTION_FAILED]: {\n message: 'Computed value execution failed',\n suggestion:\n 'Check the computed callback for runtime errors. Ensure all dependencies are valid.',\n },\n [ErrorCodes.ASYNC_VALIDATION_FAILED]: {\n message: 'Async form validation failed',\n suggestion:\n 'Check the async validation function and ensure it handles errors properly.',\n },\n [ErrorCodes.COMPONENT_RENDER_FAILED]: {\n message: 'Component render failed',\n suggestion:\n 'Check the component function for runtime errors. Consider wrapping with <ErrorBoundary>.',\n },\n [ErrorCodes.HYDRATION_ATTRIBUTE_MISMATCH]: {\n message: 'Attribute mismatch during hydration',\n suggestion:\n 'Server and client rendered different attribute values. Check for dynamic attributes.',\n },\n [ErrorCodes.DOM_CLEANUP_FAILED]: {\n message: 'DOM cleanup operation failed',\n suggestion:\n 'A node may have been removed from the DOM unexpectedly. Check for manual DOM manipulation.',\n },\n [ErrorCodes.EVENT_HANDLER_FAILED]: {\n message: 'Event handler threw an error',\n suggestion:\n 'Check your event handler callback. Consider adding try-catch for async operations.',\n },\n [ErrorCodes.KEYBOARD_HANDLER_FAILED]: {\n message: 'Keyboard event handler failed',\n suggestion: 'Check the onKeyDown/onKeyUp handler for errors.',\n },\n [ErrorCodes.RESOURCE_FETCH_FAILED]: {\n message: 'Resource fetch failed',\n suggestion:\n 'Check the async function and network connectivity. The resource will show an error state.',\n },\n [ErrorCodes.RESOURCE_TIMEOUT]: {\n message: 'Resource fetch timed out',\n suggestion:\n 'The async operation took too long. Consider adding a timeout handler or retry logic.',\n },\n }\n return errorDefinitions[code] || { message: `Error ${code}` }\n }\n return { message: `Minified Error ${code}` }\n}\n\nexport interface FlexiumErrorInfo {\n code: ErrorCode\n message: string\n suggestion?: string\n context?: Record<string, unknown>\n originalError?: unknown\n}\n\n/**\n * Create a standardized error info object\n */\nexport function createErrorInfo(\n code: ErrorCode,\n context?: Record<string, unknown>,\n originalError?: unknown\n): FlexiumErrorInfo {\n const details = getErrorDetails(code)\n return {\n code,\n message: details.message,\n suggestion: details.suggestion,\n context,\n originalError,\n }\n}\n\n/**\n * Format error message for console output\n */\nexport function formatErrorMessage(info: FlexiumErrorInfo): string {\n let message = `[Flexium ${info.code}] ${info.message}`\n\n if (info.context && Object.keys(info.context).length > 0) {\n const contextStr = Object.entries(info.context)\n .map(([key, value]) => `${key}: ${JSON.stringify(value)}`)\n .join(', ')\n message += ` (${contextStr})`\n }\n\n if (info.suggestion) {\n message += `\\n → ${info.suggestion}`\n }\n\n return message\n}\n\n/**\n * Log an error with standardized formatting\n */\nexport function logError(\n code: ErrorCode,\n context?: Record<string, unknown>,\n originalError?: unknown\n): void {\n const info = createErrorInfo(code, context, originalError)\n const message = formatErrorMessage(info)\n\n if (originalError) {\n console.error(message, originalError)\n } else {\n console.error(message)\n }\n}\n\n/**\n * Log a warning with standardized formatting\n */\nexport function logWarning(\n code: ErrorCode,\n context?: Record<string, unknown>\n): void {\n const info = createErrorInfo(code, context)\n const message = formatErrorMessage(info)\n console.warn(message)\n}\n\n/**\n * Create a FlexiumError with standardized information\n */\nexport class FlexiumError extends Error {\n code: ErrorCode\n suggestion?: string\n context?: Record<string, unknown>\n\n constructor(code: ErrorCode, context?: Record<string, unknown>) {\n const details = getErrorDetails(code)\n super(details.message)\n this.name = 'FlexiumError'\n this.code = code\n this.suggestion = details.suggestion\n this.context = context\n }\n\n toString(): string {\n return formatErrorMessage({\n code: this.code,\n message: this.message,\n suggestion: this.suggestion,\n context: this.context,\n })\n }\n}\n","/**\n * Graph.ts\n *\n * Core Graph Data Structures & Algorithms\n * Implements the \"Hardcore\" Doubly Linked List for dependency tracking.\n *\n * This module is purely internal and has NO dependencies on other core modules\n * to avoid circular references.\n */\n\n// ==================================================================================\n// 1. Data Structures\n// ==================================================================================\n\n/**\n * Flags for subscriber state (Optimization: Bitmasking)\n */\nexport const enum SubscriberFlags {\n Running = 1 << 0,\n Notified = 1 << 1,\n Dirty = 1 << 2,\n Stale = 1 << 3,\n Tracking = 1 << 4,\n}\n\n/**\n * Node type identifiers for fast type checking (Performance: Avoid instanceof)\n */\nexport const enum NodeType {\n Signal = 1,\n Computed = 2,\n Effect = 3,\n Resource = 4,\n}\n\n/**\n * Link node connecting a Subscriber (Effect/Computed) to a Dependency (Signal/Computed).\n *\n * ASCII Visualization of the Doubly Linked Graph:\n *\n * [Signal A] <==> [Link 1] <==> [Effect B]\n * ^\n * | (Prev/Next Sub on Signal A)\n * v\n * [Link 2] <==> [Effect C]\n *\n * Each Link serves as a node in TWO lists simultaneously:\n * 1. The Subscriber's list of dependencies (prevDep/nextDep)\n * 2. The Dependency's list of subscribers (prevSub/nextSub)\n */\nexport interface Link {\n dep: IObservable | undefined\n sub: ISubscriber | undefined\n\n // Pointers for Dependency's subscriber list\n prevSub: Link | undefined\n nextSub: Link | undefined\n\n // Pointers for Subscriber's dependency list\n prevDep: Link | undefined\n nextDep: Link | undefined\n}\n\n/**\n * Base interface for subscriber nodes (Effect, Computed)\n */\nexport interface ISubscriber {\n execute(): void\n depsHead: Link | undefined // Head of dependencies list\n flags: SubscriberFlags\n nodeType: NodeType // Fast type checking (Performance optimization)\n}\n\n/**\n * Base interface for observable nodes (Signal, Computed)\n */\nexport interface IObservable {\n subsHead: Link | undefined // Head of subscribers list\n version: number // For epoch-based check\n notify(): void\n nodeType: NodeType // Fast type checking (Performance optimization)\n}\n\n// ==================================================================================\n// 2. Object Pool (Memory Optimization)\n// ==================================================================================\n\n/**\n * Pool for Link objects to eliminate GC pressure.\n */\nexport namespace LinkPool {\n const pool: Link[] = []\n let size = 0\n\n export function alloc(dep: IObservable, sub: ISubscriber): Link {\n if (size > 0) {\n const link = pool[--size]\n link.dep = dep\n link.sub = sub\n link.prevSub = undefined\n link.nextSub = undefined\n link.prevDep = undefined\n link.nextDep = undefined\n return link\n }\n return {\n dep,\n sub,\n prevSub: undefined,\n nextSub: undefined,\n prevDep: undefined,\n nextDep: undefined,\n }\n }\n\n export function free(link: Link): void {\n link.dep = undefined\n link.sub = undefined\n // Clearing pointers is optional for safety but good for debugging leaks\n link.prevSub = undefined\n link.nextSub = undefined\n link.prevDep = undefined\n link.nextDep = undefined\n\n if (size < 10000) { // Safety cap\n pool[size++] = link\n }\n }\n}\n\n// ==================================================================================\n// 3. Graph Operations\n// ==================================================================================\n\n/**\n * Internal Graph operations to manage the \"Hardcore\" Linked List structure.\n * Encapsulates raw pointer arithmetic for readability.\n */\nexport namespace Graph {\n /**\n * Connects a dependency (Signal) to a subscriber (Effect/Computed).\n * Allocates a Link from the pool and stitches it into both lists.\n */\n export function connect(dep: IObservable, sub: ISubscriber): void {\n const link = LinkPool.alloc(dep, sub)\n\n // Add to Subscriber's dependency list (prepend)\n // Performance: Cache depsHead to avoid repeated property access\n const depsHead = sub.depsHead\n link.nextDep = depsHead\n if (depsHead) {\n depsHead.prevDep = link\n }\n sub.depsHead = link\n\n // Add to Dependency's subscriber list (prepend)\n // Performance: Cache subsHead to avoid repeated property access\n const subsHead = dep.subsHead\n link.nextSub = subsHead\n if (subsHead) {\n subsHead.prevSub = link\n }\n dep.subsHead = link\n }\n\n /**\n * Fully disconnects a subscriber from all its dependencies.\n * Walks the 'depsHead' list and unlinks each one.\n */\n export function disconnectDependencies(sub: ISubscriber): void {\n let link = sub.depsHead\n while (link) {\n const dep = link.dep!\n // Performance: Cache nextDep and pointers before modifying link\n const nextDep = link.nextDep\n const prevSub = link.prevSub\n const nextSub = link.nextSub\n\n // Remove link from dependency's subscriber list\n // This is a standard doubly-linked list removal\n // Performance: Branch prediction - middle nodes are more common\n if (prevSub) {\n prevSub.nextSub = nextSub\n } else {\n dep.subsHead = nextSub\n }\n if (nextSub) {\n nextSub.prevSub = prevSub\n }\n\n LinkPool.free(link)\n link = nextDep\n }\n sub.depsHead = undefined\n }\n}\n\n/**\n * Flag helpers for readability\n */\nexport namespace Flags {\n export function has(obj: { flags: number }, flag: SubscriberFlags): boolean {\n return (obj.flags & flag) !== 0\n }\n\n export function add(obj: { flags: number }, flag: SubscriberFlags): void {\n obj.flags |= flag\n }\n\n export function remove(obj: { flags: number }, flag: SubscriberFlags): void {\n obj.flags &= ~flag\n }\n}\n","/**\n * Owner.ts\n *\n * Managing reactive scopes and cleanup contexts.\n */\n\n// ==================================================================================\n// 1. Owner & Scope Management\n// ==================================================================================\n\nexport interface Owner {\n cleanups: (() => void)[]\n context: Record<symbol, unknown> | null\n owner: Owner | null // Parent owner\n}\n\nimport type { ISubscriber } from './graph'\n\n// Global context for dependency tracking\nlet activeEffect: ISubscriber | null = null\n\nexport function getActiveEffect(): ISubscriber | null {\n return activeEffect\n}\n\nexport function setActiveEffect(effect: ISubscriber | null): void {\n activeEffect = effect\n}\n\n/**\n * Execute a function without tracking signal dependencies.\n * Useful when you need to read signals inside an effect without creating dependencies.\n *\n * @param fn - Function to execute without tracking\n * @returns The return value of fn\n */\nexport function untrack<T>(fn: () => T): T {\n const prev = activeEffect\n activeEffect = null\n try {\n return fn()\n } finally {\n activeEffect = prev\n }\n}\n\nlet owner: Owner | null = null\n\n/**\n * Get the current owner (scope)\n * @internal\n */\nexport function getOwner(): Owner | null {\n return owner\n}\n\n/**\n * Set the current owner (scope)\n * @internal\n */\nexport function setOwner(newOwner: Owner | null): void {\n owner = newOwner\n}\n\n/**\n * Creates a disposal scope.\n * The return value of the function is returned, and a dispose function is returned.\n *\n * @param fn - Function to run within a new root scope\n * @returns [return value of fn, dispose function]\n *\n * @example\n * ```tsx\n * const [val, dispose] = root((dispose) => {\n * effect(() => console.log('Inside root'));\n * return 123;\n * });\n * dispose(); // Cleans up all effects created inside\n * ```\n */\nexport function root<T>(fn: (dispose: () => void) => T): T {\n const prevOwner = owner\n const newOwner: Owner = {\n cleanups: [],\n context: prevOwner ? Object.create(prevOwner.context) : null,\n owner: prevOwner,\n }\n\n owner = newOwner\n\n const dispose = () => {\n for (const cleanup of newOwner.cleanups) {\n cleanup()\n }\n newOwner.cleanups = []\n }\n\n try {\n return fn(dispose)\n } finally {\n owner = prevOwner\n }\n}\n\n/**\n * Runs a function once when the component mounts.\n * Unlike effect(), onMount does not track dependencies - it runs exactly once.\n *\n * @param fn - Function to run on mount. Can return a cleanup function.\n */\nexport function onMount(fn: () => void | (() => void)): void {\n // Schedule the mount callback to run after the current execution\n // This ensures the component is fully rendered before mount runs\n queueMicrotask(() => {\n const cleanup = fn()\n\n // Register cleanup with owner if available\n if (cleanup && typeof cleanup === 'function' && owner) {\n owner.cleanups.push(cleanup)\n }\n })\n}\n","import { ISubscriber } from './graph'\n\n// Batching state\nlet batchDepth = 0\n// Batch queue now needs to store raw subscribers. Set is efficient for uniqueness.\nconst batchQueue = new Set<ISubscriber>()\n\n// Auto-batching state (Microtask Scheduler)\nconst autoBatchQueue = new Set<ISubscriber>()\nlet isAutoBatchScheduled = false\n\nexport function scheduleAutoBatch(): void {\n if (!isAutoBatchScheduled) {\n isAutoBatchScheduled = true\n queueMicrotask(flushAutoBatch)\n }\n}\n\nexport function flushAutoBatch(): void {\n isAutoBatchScheduled = false\n if (autoBatchQueue.size === 0) return\n\n // Performance: Convert Set to array instead of copying Set (faster)\n const queue = Array.from(autoBatchQueue)\n autoBatchQueue.clear()\n\n // Execute effects - use for loop instead of forEach (slightly faster)\n for (let i = 0; i < queue.length; i++) {\n queue[i].execute()\n }\n}\n\nexport function addToAutoBatch(sub: ISubscriber): void {\n autoBatchQueue.add(sub)\n}\n\nexport function addToBatch(sub: ISubscriber): void {\n batchQueue.add(sub)\n}\n\nexport function getBatchDepth(): number {\n return batchDepth\n}\n\n/**\n * Synchronizes state updates.\n * \n * - `sync()`: Force flushes any pending auto-batched effects.\n * - `sync(fn)`: Batches updates within `fn`, then flushes them and any pending effects synchronously.\n *\n * @param fn - Optional function containing state updates\n * @returns The return value of fn, if provided\n *\n * @example\n * ```tsx\n * // 1. Force flush pending effects\n * count.value++\n * sync() // DOM is now updated\n *\n * // 2. Batch updates and flush immediately\n * sync(() => {\n * count.value = 1\n * name.value = 'Bob'\n * }) // Effects run once here, DOM updated\n * ```\n */\nexport function sync<T>(fn?: () => T): T | void {\n let result: T | undefined\n\n if (fn) {\n batchDepth++\n try {\n result = fn()\n } finally {\n batchDepth--\n if (batchDepth === 0) {\n // Execute all queued subscribers from manual batch\n // Performance: Convert Set to array instead of copying Set (faster)\n const queue = Array.from(batchQueue)\n batchQueue.clear()\n // Use for loop instead of forEach (slightly faster)\n for (let i = 0; i < queue.length; i++) {\n queue[i].execute()\n }\n }\n }\n }\n\n // Always flushing auto-batch queue to ensure everything is synced\n flushAutoBatch()\n\n return result\n}\n","import { ErrorCodes, logError } from './errors'\nimport {\n Graph,\n Flags,\n type Link,\n type ISubscriber,\n SubscriberFlags,\n NodeType\n} from './graph'\nimport {\n Owner,\n getOwner,\n setOwner,\n getActiveEffect,\n setActiveEffect\n} from './owner'\n\n/**\n * Internal effect node for dependency tracking\n */\nexport class EffectNode implements ISubscriber {\n depsHead: Link | undefined\n cleanups: (() => void)[] = []\n flags = 0 // detached by default, will set flags during execution\n nodeType = NodeType.Effect\n\n private owner: Owner | null = null\n\n constructor(\n public fn: () => void | (() => void),\n public onError?: (error: Error) => void\n ) {\n this.owner = getOwner()\n }\n\n execute(): void {\n // Performance: Inline bit operations for better performance\n if ((this.flags & SubscriberFlags.Running) !== 0) {\n this.flags |= SubscriberFlags.Notified\n return\n }\n\n this.flags |= SubscriberFlags.Running\n\n try {\n this.run()\n } finally {\n // Performance: Inline bit operations\n this.flags &= ~SubscriberFlags.Running\n if ((this.flags & SubscriberFlags.Notified) !== 0) {\n this.flags &= ~SubscriberFlags.Notified\n // Schedule microtask to avoid stack overflow and infinite sync loops\n queueMicrotask(() => this.execute())\n }\n }\n }\n\n private run(): void {\n // Performance: Fast path when no cleanups\n if (this.cleanups.length > 0) {\n for (const cleanup of this.cleanups) {\n cleanup()\n }\n this.cleanups = []\n }\n\n // Clean up previous dependencies via Graph helper\n Graph.disconnectDependencies(this)\n\n const prevEffect = getActiveEffect()\n const prevOwner = getOwner()\n setActiveEffect(this)\n setOwner(this.owner)\n\n try {\n const result = this.fn()\n if (typeof result === 'function') {\n this.cleanups.push(result)\n }\n } catch (error) {\n if (this.onError) {\n this.onError(error as Error)\n } else {\n logError(ErrorCodes.EFFECT_EXECUTION_FAILED, undefined, error)\n }\n } finally {\n setActiveEffect(prevEffect)\n setOwner(prevOwner)\n }\n }\n\n dispose(): void {\n for (const cleanup of this.cleanups) {\n cleanup()\n }\n this.cleanups = []\n Graph.disconnectDependencies(this)\n }\n}\n\n/**\n * Creates a side effect that runs when dependencies change\n *\n * @param fn - Effect function, can return a cleanup function\n * @param options - Optional error handler\n * @returns Dispose function to stop the effect\n *\n * @example\n * const count = signal(0);\n * const dispose = effect(() => {\n * console.log('Count:', count.value);\n * return () => console.log('Cleanup');\n * });\n */\nexport function effect(\n fn: () => void | (() => void),\n options?: { onError?: (error: Error) => void; name?: string }\n): () => void {\n // DevTools hooks integration would go here if needed\n // For now we rely on the devtools hooks in signal.ts or need to export them properly\n // This implementation is sufficient for core logic\n\n const node = new EffectNode(fn, options?.onError)\n node.execute()\n const dispose = () => node.dispose()\n\n const owner = getOwner()\n if (owner) {\n owner.cleanups.push(dispose)\n }\n\n return dispose\n}\n","/**\n * Signal System - Fine-grained reactivity without VDOM\n *\n * Architecture:\n * - Signals are reactive primitives that notify subscribers on change\n * - Computed signals automatically track dependencies and memoize results\n * - Effects run side effects and auto-track dependencies\n * - Batching prevents cascading updates for performance\n */\n\nimport { ErrorCodes, logError, logWarning } from './errors'\nimport {\n Graph,\n Flags,\n type Link,\n type ISubscriber,\n type IObservable,\n SubscriberFlags,\n NodeType\n} from './graph'\nimport {\n type Owner,\n getOwner,\n setOwner,\n getActiveEffect,\n setActiveEffect,\n} from './owner'\nimport {\n scheduleAutoBatch,\n addToAutoBatch,\n addToBatch,\n getBatchDepth\n} from './scheduler'\nimport { EffectNode, effect } from './effect'\n\n/**\n * DevTools hooks interface - set by devtools module to avoid circular imports\n * @internal\n */\nexport interface DevToolsHooks {\n onSignalCreate?: (signal: Signal<unknown>, name?: string) => number\n onSignalUpdate?: (id: number, value: unknown) => void\n onEffectCreate?: (name?: string) => number\n onEffectRun?: (\n id: number,\n status: 'idle' | 'running' | 'error',\n error?: Error\n ) => void\n}\n\n// Global hooks registry - set by devtools when enabled\nlet devToolsHooks: DevToolsHooks | null = null\n\n/**\n * Register devtools hooks (called by devtools module)\n * @internal\n */\nexport function setDevToolsHooks(hooks: DevToolsHooks | null): void {\n devToolsHooks = hooks\n}\n\n// Global version clock for epoch-based validation (Optimization: Epochs)\nlet globalVersion = 0\n\n// ==================================================================================\n// 3. User Facing API\n// ==================================================================================\n\n/**\n * Base interface for reactive signals\n * @internal\n */\nexport interface Signal<T> {\n value: T;\n (): T\n set(value: T): void\n peek(): T\n}\n\n/**\n * Computed signal interface (read-only)\n * @internal\n */\nexport interface Computed<T> {\n readonly value: T;\n (): T\n peek(): T\n}\n\n\n\n/**\n * Internal signal node for writable signals\n */\nclass SignalNode<T> implements IObservable {\n // Performance: Hot path fields first (CPU cache line optimization)\n version = 0 // Frequently read\n nodeType = NodeType.Signal // Frequently checked\n subsHead: Link | undefined // Frequently accessed\n \n // Cold path field\n constructor(private _value: T) { }\n\n get(): T {\n // Track dependency if inside an effect or computed\n const activeEffect = getActiveEffect()\n if (activeEffect) {\n Graph.connect(this, activeEffect)\n }\n return this._value\n }\n\n set(newValue: T): void {\n if (this._value !== newValue) {\n this._value = newValue\n this.version = ++globalVersion\n this.notify()\n }\n }\n\n peek(): T {\n return this._value\n }\n\n notify(): void {\n // Performance: Branch prediction - check most common case first (no batch)\n if (getBatchDepth() === 0) {\n // Automatic microtask batch (most common path)\n if (this.subsHead) {\n let shouldSchedule = false\n let link: Link | undefined = this.subsHead\n\n while (link) {\n const sub = link.sub!\n // Performance: Use nodeType instead of instanceof (much faster)\n if (sub.nodeType === NodeType.Computed) {\n sub.execute() // Mark dirty immediately\n } else {\n addToAutoBatch(sub)\n shouldSchedule = true\n }\n link = link.nextSub\n }\n\n if (shouldSchedule) {\n scheduleAutoBatch()\n }\n }\n } else {\n // Manual batch: queue subscribers (less common path)\n let link = this.subsHead\n while (link) {\n if (link.sub) addToBatch(link.sub)\n link = link.nextSub\n }\n }\n }\n}\n\n/**\n * Internal computed node for derived values\n */\nclass ComputedNode<T> implements ISubscriber, IObservable {\n // Performance: Hot path fields first (CPU cache line optimization)\n version = 0 // Frequently read\n nodeType = NodeType.Computed // Frequently checked\n flags = SubscriberFlags.Dirty | SubscriberFlags.Stale // Frequently checked\n subsHead: Link | undefined // Frequently accessed\n depsHead: Link | undefined // Frequently accessed\n \n // Cold path fields\n private _value!: T\n // Optimization: Track last clean epoch to avoid redundant re-computation\n private lastCleanEpoch = 0\n\n constructor(private computeFn: () => T) { }\n\n execute(): void {\n // Performance: Inline bit operation instead of function call\n // When a dependency changes, mark as dirty and notify subscribers\n this.flags |= SubscriberFlags.Dirty | SubscriberFlags.Stale\n this.notify()\n }\n\n private _updateIfDirty(): void {\n // Performance: Inline flag checks for better branch prediction\n // 1. If not dirty and not stale, we are valid (most common case)\n // Note: This check is now done in peek()/get() for fast path, but kept here for safety\n const flags = this.flags\n const dirtyOrStale = flags & (SubscriberFlags.Dirty | SubscriberFlags.Stale)\n if (dirtyOrStale === 0) {\n return\n }\n\n // 2. If Stale but not Dirty, check dependencies\n // Performance: Single bit check instead of two function calls\n if ((flags & SubscriberFlags.Dirty) === 0 && (flags & SubscriberFlags.Stale) !== 0) {\n if (!this._needsRefetch()) {\n this.flags &= ~SubscriberFlags.Stale\n return\n }\n }\n\n // 3. Must re-compute\n // Performance: Single bit operation instead of function call\n this.flags &= ~(SubscriberFlags.Dirty | SubscriberFlags.Stale)\n\n // Clear previous dependencies via Graph helper\n Graph.disconnectDependencies(this)\n\n const prevEffect = getActiveEffect()\n // const prevOwner = getOwner() // Not used\n setActiveEffect(this)\n\n try {\n const newValue = this.computeFn()\n if (this._value !== newValue) {\n this._value = newValue\n this.version = ++globalVersion\n }\n this.lastCleanEpoch = globalVersion\n } finally {\n setActiveEffect(prevEffect)\n }\n\n // Actually, we need to import setActiveEffect at the top of the file\n // activeEffect = this -> setActiveEffect(this)\n // activeEffect = prevEffect -> setActiveEffect(prevEffect)\n // But since I am generating this chunk, let me check imports again.\n // I added getActiveEffect to imports. I need setActiveEffect too.\n\n // REVISING CHUNK content below to use imported function properly.\n // note: I must add setActiveEffect to imports in the first chunk.\n\n\n // For this specific Chunk:\n // We will use a hack here or I should update the first chunk to include setActiveEffect.\n // I'll update the first chunk in this tool call to include setActiveEffect.\n\n // import { setActiveEffect } from './owner'\n // ...\n // setActiveEffect(this)\n // ...\n // setActiveEffect(prevEffect)\n }\n\n private _needsRefetch(): boolean {\n if (!this.depsHead) return true;\n\n // Iterate dependencies via linked list\n let link: Link | undefined = this.depsHead\n while (link) {\n const dep = link.dep!\n if (dep.version > this.lastCleanEpoch) {\n return true\n }\n\n // Performance: Use nodeType instead of instanceof\n if (dep.nodeType === NodeType.Computed) {\n const computedDep = dep as ComputedNode<unknown>\n // Performance: Check version first before calling peek() (peek() may trigger computation)\n // If already updated, version will be greater than lastCleanEpoch\n if (computedDep.version > this.lastCleanEpoch) {\n return true\n }\n // Performance: Inline bit check instead of function call\n // Only call peek() if dirty/stale (will update version if needed)\n if ((computedDep.flags & (SubscriberFlags.Dirty | SubscriberFlags.Stale)) !== 0) {\n computedDep.peek()\n // Check version again after peek() (may have been updated)\n if (computedDep.version > this.lastCleanEpoch) {\n return true\n }\n }\n }\n link = link.nextDep\n }\n return false\n }\n\n get(): T {\n // Track dependency if inside an effect or computed\n const activeEffect = getActiveEffect()\n if (activeEffect && activeEffect !== this) {\n Graph.connect(this, activeEffect)\n }\n\n // Performance: Fast path - check if update needed before calling _updateIfDirty\n const flags = this.flags\n const dirtyOrStale = flags & (SubscriberFlags.Dirty | SubscriberFlags.Stale)\n if (dirtyOrStale !== 0) {\n this._updateIfDirty()\n }\n return this._value\n }\n\n peek(): T {\n // Performance: Fast path - check if update needed before calling _updateIfDirty\n const flags = this.flags\n const dirtyOrStale = flags & (SubscriberFlags.Dirty | SubscriberFlags.Stale)\n if (dirtyOrStale !== 0) {\n this._updateIfDirty()\n }\n return this._value\n }\n\n notify(): void {\n // Performance: Branch prediction - check most common case first (no batch)\n if (getBatchDepth() === 0) {\n // Automatic microtask batch (most common path)\n if (this.subsHead) {\n let shouldSchedule = false\n let link: Link | undefined = this.subsHead\n\n while (link) {\n const sub = link.sub!\n // Performance: Use nodeType instead of instanceof (much faster)\n if (sub.nodeType === NodeType.Computed) {\n sub.execute()\n } else {\n addToAutoBatch(sub)\n shouldSchedule = true\n }\n link = link.nextSub\n }\n\n if (shouldSchedule) {\n scheduleAutoBatch()\n }\n }\n } else {\n // Manual batch (less common path)\n let link = this.subsHead\n while (link) {\n if (link.sub) addToBatch(link.sub)\n link = link.nextSub\n }\n }\n }\n}\n\n\n\n\n\n/**\n * Creates a reactive signal\n *\n * @param initialValue - The initial value of the signal\n * @returns A signal object with value getter/setter\n *\n * @example\n * const count = signal(0);\n * count.value++; // triggers subscribers\n * console.log(count()); // alternative getter syntax\n */\nexport function signal<T>(initialValue: T): Signal<T> {\n const node = new SignalNode(initialValue)\n let devToolsId = -1\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const sig = function (this: any) {\n return node.get()\n } as Signal<T>\n\n Object.defineProperty(sig, 'value', {\n get() {\n return node.get()\n },\n set(newValue: T) {\n node.set(newValue)\n // Notify devtools of update\n if (devToolsId >= 0 && devToolsHooks?.onSignalUpdate) {\n devToolsHooks.onSignalUpdate(devToolsId, newValue)\n }\n },\n enumerable: true,\n configurable: true,\n })\n\n sig.set = (newValue: T) => {\n node.set(newValue)\n // Notify devtools of update\n if (devToolsId >= 0 && devToolsHooks?.onSignalUpdate) {\n devToolsHooks.onSignalUpdate(devToolsId, newValue)\n }\n }\n sig.peek = () => node.peek()\n\n // Mark as signal for detection\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ; (sig as any)[SIGNAL_MARKER] = true\n\n // Register with devtools if enabled\n if (devToolsHooks?.onSignalCreate) {\n devToolsId = devToolsHooks.onSignalCreate(sig as Signal<unknown>)\n }\n\n return sig\n}\n\n/**\n * Creates a computed signal (derived value)\n * @internal Use `state(() => ...)` instead\n */\nexport function computed<T>(fn: () => T): Computed<T> {\n const node = new ComputedNode(fn)\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const comp = function (this: any) {\n return node.get()\n } as Computed<T>\n\n Object.defineProperty(comp, 'value', {\n get() {\n return node.get()\n },\n enumerable: true,\n configurable: true,\n })\n\n comp.peek = () => node.peek()\n\n // Mark as signal for detection\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ; (comp as any)[SIGNAL_MARKER] = true\n\n return comp\n}\n\n/**\n * Creates a side effect that runs when dependencies change\n *\n * @param fn - Effect function, can return a cleanup function\n * @param options - Optional error handler\n * @returns Dispose function to stop the effect\n *\n * @example\n * const count = signal(0);\n * const dispose = effect(() => {\n * console.log('Count:', count.value);\n * return () => console.log('Cleanup');\n * });\n */\n\n\n/**\n * Creates a root scope for effects\n * All effects created within the scope can be disposed together\n *\n * @param fn - Function that creates effects\n * @returns Dispose function for all effects in the scope\n */\n\n\n/**\n * Symbol to mark signals for detection\n * @internal\n */\nconst SIGNAL_MARKER = Symbol('flexium.signal')\n\n/**\n * Check if a value is a signal\n * @internal Use state() which handles all reactive patterns\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function isSignal(value: unknown): value is Signal<any> | Computed<any> {\n return value !== null && typeof value === 'function' && SIGNAL_MARKER in value\n}\n\n/**\n * Registers a cleanup function that runs before the current effect re-runs or is disposed\n *\n * @param fn - Cleanup function\n */\nexport function onCleanup(fn: () => void): void {\n const activeEffect = getActiveEffect()\n // Performance: Use nodeType instead of instanceof\n if (activeEffect && activeEffect.nodeType === NodeType.Effect) {\n (activeEffect as EffectNode).cleanups.push(fn)\n } else {\n logWarning(ErrorCodes.CLEANUP_OUTSIDE_EFFECT)\n }\n}\n\n/**\n * Resource interface for async data\n */\nexport interface Resource<T> extends Signal<T | undefined> {\n loading: boolean\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n error: any\n state: 'unresolved' | 'pending' | 'ready' | 'refreshing' | 'errored'\n latest: T | undefined\n}\n\n/**\n * Creates a resource for handling async data\n * @internal Use state(async () => ...) instead which returns [data, refetch, status, error]\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function createResource<T, S = any>(\n source: S | Signal<S> | (() => S),\n fetcher: (\n source: S,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n { value, refetching }: { value: T | undefined; refetching: any }\n ) => Promise<T>\n): [Resource<T>, { mutate: (v: T | undefined) => void; refetch: () => void }] {\n const value = signal<T | undefined>(undefined)\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const error = signal<any>(undefined)\n const loading = signal<boolean>(false)\n const state = signal<\n 'unresolved' | 'pending' | 'ready' | 'refreshing' | 'errored'\n >('unresolved')\n\n const load = async (currentSource: S, refetching = false) => {\n if (refetching) {\n state.value = 'refreshing'\n loading.value = true\n } else {\n state.value = 'pending'\n loading.value = true\n }\n error.value = undefined\n\n // Track the current promise to avoid race conditions\n // We use a local variable instead of a shared 'lastPromise'\n // because we only care about the latest execution within this closure scope\n // if we needed to support cancellation, we'd need more.\n // Actually, for race conditions we DO need to track the active promise ID or similar.\n // Let's use a simpler counter approach or just compare promise references if we kept track.\n // But since we are removing 'lastPromise' which was used for throwing, \n // we still need to handle race conditions (late resolve).\n\n // Re-introducing a local tracking mechanism just for race conditions\n const currentPromise = fetcher(currentSource, { value: value.peek(), refetching })\n // We need to store this on the closure to compare\n latestPromise = currentPromise\n\n try {\n const result = await currentPromise\n if (latestPromise === currentPromise) {\n value.value = result\n state.value = 'ready'\n loading.value = false\n }\n } catch (err) {\n if (latestPromise === currentPromise) {\n error.value = err\n state.value = 'errored'\n loading.value = false\n }\n }\n }\n\n let latestPromise: Promise<T> | null = null\n\n const getSource = () => {\n if (typeof source === 'function') {\n if (isSignal(source)) {\n return source.value\n }\n return (source as () => S)()\n }\n return source\n }\n\n // Track source changes\n effect(() => {\n const currentSource = getSource()\n load(currentSource, false)\n })\n\n const resource = function () {\n return value()\n } as Resource<T>\n\n Object.defineProperties(resource, {\n value: { get: () => value.value },\n loading: { get: () => loading.value },\n error: { get: () => error.value },\n state: { get: () => state.value },\n latest: { get: () => value.peek() },\n peek: { value: () => value.peek() },\n set: { value: (v: T) => value.set(v) },\n })\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ; (resource as any)[SIGNAL_MARKER] = true\n\n const actions = {\n mutate: (v: T | undefined) => value.set(v),\n refetch: () => load(getSource(), true),\n }\n\n return [resource, actions]\n}\n\n// Re-export commonly used functions for convenience\n// These are imported from other modules but re-exported here for backward compatibility\nexport { effect } from './effect'\nexport { root, onMount, untrack } from './owner'\n"]}
|
package/dist/chunk-TQLZ7UZX.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
'use strict';var chunkMKE3KA43_js=require('./chunk-MKE3KA43.js');var g=Symbol.for("flexium.stateSignal");function K(e,a){let o=e;return o._signal=e,o._stateActions=a,o}function N(e){return {value:void 0,peek:e.peek,_signal:e,_isComputed:true}}function F(e){let a=e;return a._signal=e,a}var i=new Map,D=1e4,_=false,y=null;function L(e){y=e;}function G(){return {id:Symbol("component"),hookIndex:0,hooks:[]}}function W(e){e.hookIndex=0;}var z=new WeakMap;function C(e){if(typeof e=="string")return e;let a=z.get(e);if(a!==void 0)return a;try{let o=JSON.stringify(e);return z.set(e,o),o}catch(o){return console.warn("[Flexium] Failed to serialize state key, using fallback:",o),String(e)}}function V(){typeof process<"u"&&process.env?.NODE_ENV!=="production"&&!_&&i.size>=D&&(_=true,console.warn(`[Flexium] Global state registry has ${i.size} entries. Consider using state.delete(key) to clean up unused states, or state.clear() to reset all global states.`));}function j(e){return (typeof e=="object"||typeof e=="function")&&e!==null&&g in e}function H(e){return j(e)?e[g]:null}function J(e,a){return j(e)?e.peek()===a:false}function B(e){return j(e)?!!e.peek():false}function c(e){let a=()=>e.value,o="peek",k="valueOf",S="toString",v="toJSON",R=Symbol.toPrimitive;return new Proxy(a,{apply(){return e.value},get(t,n){if(n===g)return e;if(n===o)return e.peek;if(n===R)return T=>e.value;if(n===k)return ()=>(typeof process<"u"&&process.env?.NODE_ENV!=="production"&&typeof process<"u"&&process.env?.FLEXIUM_WARN_COMPARISON,e.value);if(n===S)return ()=>String(e.value);if(n===v)return ()=>e.value;let r=e.value;if(r===null)return;if(typeof r=="object"){let l=r[n];return typeof l=="function"?l.bind(r):l}},has(t,n){if(n===g)return true;let r=e.value;return r===null?false:typeof r=="object"&&n in r},ownKeys(t){let n=e.value;return n===null?[]:typeof n=="object"?Reflect.ownKeys(n):[]},getOwnPropertyDescriptor(t,n){if(n===g)return {configurable:true,enumerable:false,value:e};let r=e.value;if(r!==null&&typeof r=="object"){let u=Object.getOwnPropertyDescriptor(r,n);if(u)return {...u,configurable:true}}}})}function m(e,a){let o=a?.key?C(a.key):void 0,k=a?.params;if(y&&!o){let t=y,n=t.hookIndex++;if(n<t.hooks.length)return t.hooks[n];let r=y;y=null;let u=m(e,a);return y=r,t.hooks.push(u),u}if(o&&i.has(o)){let t=i.get(o),n="loading"in t&&t._stateActions?.refetch!==void 0,r=t._isComputed,u=c(t._signal);if(r)return [u];if(n){let l=t._stateActions?.refetch||(()=>{}),d=chunkMKE3KA43_js.l(()=>t.error?"error":t.loading?"loading":t.value!==void 0?"success":"idle"),f=chunkMKE3KA43_js.l(()=>t.error),s=c(d),b=c(f);return [u,l,s,b]}return [u,l=>{typeof l=="function"?t.value=l(t.peek()):t.value=l;}]}if(typeof e=="function"){let t=e,n=k!==void 0?()=>t(k):t;if(t.constructor.name==="AsyncFunction"){let[d,f]=chunkMKE3KA43_js.o(n,async x=>x),s=K(d,f);o&&(i.set(o,s),V());let b=c(s._signal),P=chunkMKE3KA43_js.l(()=>s.error?"error":s.loading?"loading":s.value!==void 0?"success":"idle"),O=chunkMKE3KA43_js.l(()=>s.error),A=c(P),w=c(O);return [b,f.refetch,A,w]}let u;try{u=n();}catch{let d=chunkMKE3KA43_js.l(n),f=N(d);return o&&(i.set(o,f),V()),[c(d)]}if(u instanceof Promise){let[d,f]=chunkMKE3KA43_js.o(n,async x=>x),s=K(d,f);o&&(i.set(o,s),V());let b=c(s._signal),P=chunkMKE3KA43_js.l(()=>s.error?"error":s.loading?"loading":s.value!==void 0?"success":"idle"),O=chunkMKE3KA43_js.l(()=>s.error),A=c(P),w=c(O);return [b,f.refetch,A,w]}let T=chunkMKE3KA43_js.l(n),l=N(T);return o&&(i.set(o,l),V()),[c(T)]}let S=chunkMKE3KA43_js.k(e),v=F(S);return o&&(i.set(o,v),V()),[c(S),t=>{typeof t=="function"?S.value=t(S.peek()):S.value=t;}]}m.delete=function(e){let a=C(e);return i.delete(a)};m.clear=function(){i.clear(),_=false;};m.has=function(e){let a=C(e);return i.has(a)};Object.defineProperty(m,"size",{get:()=>i.size,enumerable:true});var U=m;function q(e){return {current:e}}exports.a=L;exports.b=G;exports.c=W;exports.d=j;exports.e=H;exports.f=J;exports.g=B;exports.h=U;exports.i=q;//# sourceMappingURL=chunk-TQLZ7UZX.js.map
|
|
2
|
-
//# sourceMappingURL=chunk-TQLZ7UZX.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/core/state.ts"],"names":["STATE_SIGNAL","toStateObject","res","actions","s","toComputedStateObject","comp","toSignalStateObject","sig","globalStateRegistry","DEV_WARNING_THRESHOLD","hasWarnedAboutSize","currentComponent","setCurrentComponent","instance","createComponentInstance","resetHookIndex","keyCache","serializeKey","key","cached","serialized","error","checkRegistrySize","isStateValue","value","getStateSignal","stateValue","equals","isTruthy","createStateProxy","target","PEEK_PROP","VALUE_OF_PROP","TO_STRING_PROP","TO_JSON_PROP","TO_PRIMITIVE_SYMBOL","_target","prop","_hint","currentValue","propValue","desc","state","initialValueOrFetcher","options","params","hookIndex","savedComponent","result","isAsync","isComputed","proxy","refetch","statusComputed","computed","errorComputed","statusValue","errorValue","newValue","originalFn","fn","resActions","createResource","val","testResult","signal","serializedKey","_state","ref","initialValue"],"mappings":"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","file":"chunk-TQLZ7UZX.js","sourcesContent":["import { signal, computed, createResource } from './signal'\nimport type { Signal, Computed, Resource } from './signal'\n\n/** Symbol to identify StateProxy and access underlying signal */\n// Use Symbol.for() to ensure the symbol is shared across module boundaries\n// This is important for Vite dev mode where modules may be loaded separately\nexport const STATE_SIGNAL = Symbol.for('flexium.stateSignal')\n\n/** Internal state object that may be a Signal, Computed, or Resource */\ninterface StateObject {\n value: unknown\n peek: () => unknown\n loading?: boolean\n error?: unknown\n state?: 'unresolved' | 'pending' | 'ready' | 'refreshing' | 'errored'\n latest?: unknown\n\n _stateActions?: StateActions\n _signal?: Signal<unknown> | Computed<unknown> | Resource<unknown>\n _isComputed?: boolean\n}\n\n/** Actions available for state mutation */\ninterface StateActions {\n mutate?: (value: unknown) => void\n refetch?: () => void\n}\n\n/**\n * Type-safe helper to wrap Resource as StateObject.\n * Consolidates unsafe type assertions in one place.\n * @internal\n */\nfunction toStateObject<T>(\n res: Resource<T>,\n actions: { mutate: (v: T | undefined) => void; refetch: () => void }\n): StateObject {\n const s = res as unknown as StateObject\n s._signal = res as Resource<unknown>\n s._stateActions = actions as StateActions\n return s\n}\n\n/**\n * Type-safe helper to create a computed StateObject.\n * @internal\n */\nfunction toComputedStateObject<T>(comp: Computed<T>): StateObject {\n return {\n value: undefined,\n peek: comp.peek,\n _signal: comp as Computed<unknown>,\n _isComputed: true,\n }\n}\n\n/**\n * Type-safe helper to wrap Signal as StateObject.\n * @internal\n */\nfunction toSignalStateObject<T>(sig: Signal<T>): StateObject {\n const s = sig as unknown as StateObject\n s._signal = sig as Signal<unknown>\n return s\n}\n\n// Global registry for keyed states\nconst globalStateRegistry = new Map<string, StateObject>()\n\n// Dev mode warning thresholds\nconst DEV_WARNING_THRESHOLD = 10000\nlet hasWarnedAboutSize = false\n\n// ============================================================================\n// Component Hook System - enables state() inside components\n// ============================================================================\n\ninterface ComponentInstance {\n id: symbol\n hookIndex: number\n hooks: unknown[]\n}\n\nlet currentComponent: ComponentInstance | null = null\n\n/**\n * Set the current component context for hook tracking.\n * Called by the renderer before executing a component function.\n * @internal\n */\nexport function setCurrentComponent(instance: ComponentInstance | null): void {\n currentComponent = instance\n}\n\n/**\n * Get the current component context.\n * @internal\n */\nexport function getCurrentComponent(): ComponentInstance | null {\n return currentComponent\n}\n\n/**\n * Create a new component instance for hook tracking.\n * @internal\n */\nexport function createComponentInstance(): ComponentInstance {\n return {\n id: Symbol('component'),\n hookIndex: 0,\n hooks: [],\n }\n}\n\n/**\n * Reset hook index for re-renders.\n * @internal\n */\nexport function resetHookIndex(instance: ComponentInstance): void {\n instance.hookIndex = 0\n}\n\n/** Key type - string or array of serializable values */\nexport type StateKey = string | readonly (string | number | boolean | null | undefined | object)[]\n\n// Cache for array key serialization to avoid repeated JSON.stringify calls\nconst keyCache = new WeakMap<readonly unknown[], string>()\n\n/**\n * Serialize a key to a string for registry lookup.\n * Arrays are JSON-stringified for consistent comparison.\n * Uses WeakMap cache to avoid repeated serialization of array keys.\n */\nfunction serializeKey(key: StateKey): string {\n if (typeof key === 'string') {\n return key\n }\n\n // Check cache first for array keys\n const cached = keyCache.get(key)\n if (cached !== undefined) {\n return cached\n }\n\n try {\n const serialized = JSON.stringify(key)\n keyCache.set(key, serialized)\n return serialized\n } catch (error) {\n // Handle circular references or other serialization errors\n console.warn('[Flexium] Failed to serialize state key, using fallback:', error)\n const fallback = String(key)\n return fallback\n }\n}\n\n/**\n * Check global state registry size and warn in development mode.\n * Does not enforce hard limits - use state.delete() or state.clear() for cleanup.\n * @internal\n */\nfunction checkRegistrySize(): void {\n const isDev = typeof process !== 'undefined' && process.env?.NODE_ENV !== 'production'\n if (\n isDev &&\n !hasWarnedAboutSize &&\n globalStateRegistry.size >= DEV_WARNING_THRESHOLD\n ) {\n hasWarnedAboutSize = true\n console.warn(\n `[Flexium] Global state registry has ${globalStateRegistry.size} entries. ` +\n `Consider using state.delete(key) to clean up unused states, ` +\n `or state.clear() to reset all global states.`\n )\n }\n}\n\n/** Action function type for state mutation */\nexport type StateAction<T> = (newValue: T | ((prev: T) => T)) => void\n\n/**\n * StateValue type - a value-like proxy that behaves like T.\n * Can be used directly in expressions and JSX.\n */\nexport type StateValue<T> = T & (() => T) & { peek(): T }\n\n/**\n * Check if a value is a StateValue (created by the state() API).\n * Useful for type guards and runtime detection of reactive state.\n * @internal\n * @param value - The value to check\n * @returns true if the value is a StateValue proxy, false otherwise\n *\n * @example\n * ```tsx\n * const count = state(0)\n * isStateValue(count) // true\n * isStateValue(5) // false\n * ```\n */\nexport function isStateValue(value: unknown): boolean {\n return (\n (typeof value === 'object' || typeof value === 'function') &&\n value !== null &&\n STATE_SIGNAL in value\n )\n}\n\n/**\n * Get the underlying signal from a StateValue proxy.\n * Used internally for reactive binding detection and DOM updates.\n * @internal\n * @param stateValue - The StateValue proxy to extract the signal from\n * @returns The underlying Signal if stateValue is a StateValue, null otherwise\n *\n * @example\n * ```tsx\n * const count = state(0)\n * const signal = getStateSignal(count) // Returns the internal Signal<number>\n * ```\n */\nexport function getStateSignal(stateValue: unknown): Signal<unknown> | null {\n if (isStateValue(stateValue)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return (stateValue as any)[STATE_SIGNAL]\n }\n return null\n}\n\n/**\n * Compare a StateValue with a primitive value safely.\n * Handles Proxy comparison automatically by extracting the underlying value.\n * \n * @param stateValue - The StateValue to compare\n * @param value - The value to compare against\n * @returns true if the StateValue's underlying value equals the comparison value\n * \n * @example\n * ```tsx\n * const [count, setCount] = state(0)\n * \n * // ✅ Safe comparison using helper\n * if (equals(count, 5)) {\n * console.log('Count is 5')\n * }\n * \n * // ❌ Direct comparison (always false)\n * if (count === 5) { ... }\n * ```\n */\nexport function equals<T>(stateValue: StateValue<T>, value: T): boolean {\n if (!isStateValue(stateValue)) {\n return false\n }\n const actualValue = stateValue.peek()\n return actualValue === value\n}\n\n/**\n * Check if a StateValue is truthy.\n * Useful for boolean checks without explicit conversion.\n * \n * @param stateValue - The StateValue to check\n * @returns true if the underlying value is truthy\n * \n * @example\n * ```tsx\n * const [user, setUser] = state<User | null>(null)\n * \n * // ✅ Safe boolean check\n * if (isTruthy(user)) {\n * console.log('User exists:', user.name)\n * }\n * \n * // ❌ Direct check (always true for Proxy)\n * if (user) { ... }\n * ```\n */\nexport function isTruthy<T>(stateValue: StateValue<T>): boolean {\n if (!isStateValue(stateValue)) {\n return false\n }\n return Boolean(stateValue.peek())\n}\n\n/**\n * Create a reactive proxy that behaves like a value but stays reactive.\n * The proxy is also callable - calling it returns the current value.\n * This ensures compatibility with code expecting getter functions.\n * \n * Performance optimization: Cache value and type checks to avoid repeated sig.value calls.\n */\nfunction createStateProxy<T>(sig: Signal<T> | Computed<T>): StateValue<T> {\n // Use an arrow function as the target so the proxy is callable but has no prototype\n // This prevents invariant violations in ownKeys trap\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const target = () => sig.value\n\n // Performance: Cache common property accessors to avoid repeated lookups\n const PEEK_PROP = 'peek'\n const VALUE_OF_PROP = 'valueOf'\n const TO_STRING_PROP = 'toString'\n const TO_JSON_PROP = 'toJSON'\n const TO_PRIMITIVE_SYMBOL = Symbol.toPrimitive\n\n const proxy = new Proxy(target, {\n // Make the proxy callable - returns current value\n apply() {\n return sig.value\n },\n\n get(_target, prop) {\n // Return underlying signal for reactive binding detection\n if (prop === STATE_SIGNAL) {\n return sig\n }\n\n // Allow direct access to peek() without tracking\n if (prop === PEEK_PROP) {\n return sig.peek\n }\n\n // Symbol.toPrimitive - called for +, -, ==, template literals, etc.\n if (prop === TO_PRIMITIVE_SYMBOL) {\n return (_hint: string) => sig.value\n }\n\n // valueOf - called for numeric operations\n if (prop === VALUE_OF_PROP) {\n return () => {\n // Optional dev mode warning for comparison operations\n // Note: This is intentionally minimal to avoid performance overhead\n // Full comparison detection would require stack trace analysis\n const isDev = typeof process !== 'undefined' && process.env?.NODE_ENV !== 'production'\n if (isDev && \n typeof process !== 'undefined' && process.env?.FLEXIUM_WARN_COMPARISON === 'true') {\n // Only warn if explicitly enabled via environment variable\n // Most users should rely on ESLint rules instead\n }\n return sig.value\n }\n }\n\n // toString - called for string concatenation\n if (prop === TO_STRING_PROP) {\n return () => String(sig.value)\n }\n\n // toJSON - called for JSON.stringify\n if (prop === TO_JSON_PROP) {\n return () => sig.value\n }\n\n // Performance: Read value once and cache type check result\n // For object/array values, access properties on current value\n // Note: accessing sig.value here tracks the signal in any enclosing effect\n const currentValue = sig.value\n\n // Performance: Early return for null (most common non-object case)\n if (currentValue === null) {\n return undefined\n }\n\n // Performance: Type check once\n const isObject = typeof currentValue === 'object'\n if (isObject) {\n const obj = currentValue as Record<string | symbol, unknown>\n const propValue = obj[prop]\n // If it's a function (like array methods), bind it to the current value\n if (typeof propValue === 'function') {\n return propValue.bind(currentValue)\n }\n return propValue\n }\n\n return undefined\n },\n\n // For property checks (like 'length' in array)\n has(_target, prop) {\n if (prop === STATE_SIGNAL) return true\n // Performance: Read value once\n const currentValue = sig.value\n // Performance: Early return for null\n if (currentValue === null) return false\n // Performance: Type check once\n return typeof currentValue === 'object' && prop in (currentValue as object)\n },\n\n // For Object.keys, for...in loops\n ownKeys(_target) {\n // Performance: Read value once\n const currentValue = sig.value\n // Performance: Early return for null\n if (currentValue === null) return []\n // Performance: Type check once\n if (typeof currentValue === 'object') {\n return Reflect.ownKeys(currentValue as object)\n }\n return []\n },\n\n getOwnPropertyDescriptor(_target, prop) {\n if (prop === STATE_SIGNAL) {\n return { configurable: true, enumerable: false, value: sig }\n }\n // Performance: Read value once\n const currentValue = sig.value\n // Performance: Early return for null\n if (currentValue === null) return undefined\n // Performance: Type check once\n if (typeof currentValue === 'object') {\n const desc = Object.getOwnPropertyDescriptor(currentValue as object, prop)\n if (desc) {\n // Make it configurable to satisfy Proxy invariants\n return { ...desc, configurable: true }\n }\n }\n return undefined\n },\n })\n\n return proxy as StateValue<T>\n}\n\n/** Async state status */\nexport type AsyncStatus = 'idle' | 'loading' | 'success' | 'error'\n\n/** Options for state() */\nexport interface StateOptions<P = unknown> {\n /**\n * Key for global state sharing. Can be a string or array.\n * Array keys are useful for hierarchical namespacing.\n * @example\n * state('light', { key: 'theme' })\n * state(null, { key: ['user', 'profile', userId] })\n */\n key?: StateKey\n /**\n * Parameters to pass to the function (for computed/async state).\n * Improves DX by making dependencies explicit.\n * @example\n * state(\n * async ({ userId }) => fetch(`/api/users/${userId}`),\n * { key: ['user', userId], params: { userId } }\n * )\n */\n params?: P\n}\n\n/**\n * Unified State API\n *\n * One function for all reactive state needs - always returns an array for consistency:\n * 1. Simple state: const [count, setCount] = state(0)\n * 2. Derived state: const [doubled] = state(() => count * 2)\n * 3. Async state: const [data, refetch, status, error] = state(async () => fetch(...))\n * 4. Global state: const [theme, setTheme] = state('light', { key: 'theme' })\n * 5. With params: const [user] = state(async (p) => fetch(`/api/${p.id}`), { params: { id } })\n *\n * @example\n * ```tsx\n * function Counter() {\n * const [count, setCount] = state(0)\n * const [doubled] = state(() => count * 2)\n * return <Button onPress={() => setCount(count + 1)}>{doubled}</Button>\n * }\n * ```\n */\n// Static methods interface for the state function\ninterface StateFunction {\n // Overloads\n <T>(initialValue: T, options?: StateOptions): [StateValue<T>, StateAction<T>]\n <T, P>(computeFn: (params: P) => T, options: StateOptions<P> & { params: P }): [StateValue<T>]\n <T>(computeFn: () => T, options?: StateOptions): [StateValue<T>]\n <T, P>(fetcher: (params: P) => Promise<T>, options: StateOptions<P> & { params: P }): [StateValue<T | undefined>, () => void, StateValue<AsyncStatus>, StateValue<unknown>]\n <T>(fetcher: () => Promise<T>, options?: StateOptions): [StateValue<T | undefined>, () => void, StateValue<AsyncStatus>, StateValue<unknown>]\n\n /** Delete a specific global state by key */\n delete: (key: StateKey) => boolean\n /** Clear all global states */\n clear: () => void\n /** Check if a global state exists */\n has: (key: StateKey) => boolean\n /** Current number of global states */\n readonly size: number\n}\n\n// Overload 1: Value → [StateValue, Setter]\nfunction state<T>(\n initialValue: T,\n options?: StateOptions\n): [StateValue<T>, StateAction<T>]\n\n// Overload 2: Sync function with params → [StateValue] (derived, no setter)\nfunction state<T, P>(\n computeFn: (params: P) => T,\n options: StateOptions<P> & { params: P }\n): [StateValue<T>]\n\n// Overload 3: Sync function without params → [StateValue] (derived, no setter)\nfunction state<T>(\n computeFn: () => T,\n options?: StateOptions\n): [StateValue<T>]\n\n// Overload 4: Async function with params → [StateValue, refetch, status, error]\nfunction state<T, P>(\n fetcher: (params: P) => Promise<T>,\n options: StateOptions<P> & { params: P }\n): [StateValue<T | undefined>, () => void, StateValue<AsyncStatus>, StateValue<unknown>]\n\n// Overload 5: Async function without params → [StateValue, refetch, status, error]\nfunction state<T>(\n fetcher: () => Promise<T>,\n options?: StateOptions\n): [StateValue<T | undefined>, () => void, StateValue<AsyncStatus>, StateValue<unknown>]\n\nfunction state<T, P = unknown>(\n initialValueOrFetcher: T | ((params?: P) => T) | ((params?: P) => Promise<T>),\n options?: StateOptions<P>\n): [StateValue<T>] | [StateValue<T>, StateAction<T>] | [StateValue<T | undefined>, () => void, StateValue<AsyncStatus>, StateValue<unknown>] {\n const key = options?.key ? serializeKey(options.key) : undefined\n const params = options?.params\n\n // 0. Hook System - reuse state from previous render if inside a component\n if (currentComponent && !key) {\n const comp = currentComponent\n const hookIndex = comp.hookIndex++\n\n // Return existing hook if available\n if (hookIndex < comp.hooks.length) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return comp.hooks[hookIndex] as any\n }\n\n // Create new state and store in hooks array\n // Temporarily clear currentComponent to avoid infinite recursion\n const savedComponent = currentComponent\n currentComponent = null\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const result = state(initialValueOrFetcher as any, options as any)\n currentComponent = savedComponent\n\n comp.hooks.push(result)\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return result as any\n }\n\n // 1. Check Global Registry for keyed state\n if (key && globalStateRegistry.has(key)) {\n const cached = globalStateRegistry.get(key)!\n const isAsync = 'loading' in cached && cached._stateActions?.refetch !== undefined\n const isComputed = cached._isComputed\n\n const proxy = createStateProxy(cached._signal as Signal<T>)\n\n if (isComputed) {\n return [proxy] as [StateValue<T>]\n }\n\n if (isAsync) {\n const refetch = cached._stateActions?.refetch || (() => { })\n // Performance: Use computed directly instead of state() to avoid recursion\n const statusComputed = computed<AsyncStatus>(() => {\n if (cached.error) return 'error'\n if (cached.loading) return 'loading'\n if (cached.value !== undefined) return 'success'\n return 'idle'\n })\n const errorComputed = computed<unknown>(() => cached.error)\n const statusValue = createStateProxy(statusComputed)\n const errorValue = createStateProxy(errorComputed)\n return [proxy, refetch, statusValue, errorValue] as [StateValue<T | undefined>, () => void, StateValue<AsyncStatus>, StateValue<unknown>]\n }\n\n const setter: StateAction<T> = (newValue) => {\n if (typeof newValue === 'function') {\n cached.value = (newValue as (prev: T) => T)(cached.peek() as T)\n } else {\n cached.value = newValue\n }\n }\n return [proxy, setter] as [StateValue<T>, StateAction<T>]\n }\n\n // 2. Handle function input (computed or async)\n if (typeof initialValueOrFetcher === 'function') {\n const originalFn = initialValueOrFetcher as (params?: P) => T | Promise<T>\n // Wrap function to inject params if provided\n const fn = params !== undefined\n ? () => originalFn(params)\n : originalFn as () => T | Promise<T>\n\n // Try to detect if it's async by checking constructor name\n // This handles `async () => ...` functions\n const isAsyncFn = originalFn.constructor.name === 'AsyncFunction'\n\n if (isAsyncFn) {\n // Async function → Resource\n const [res, resActions] = createResource(fn, async (val) => val)\n const s = toStateObject(res, resActions)\n\n if (key) {\n globalStateRegistry.set(key, s)\n checkRegistrySize()\n }\n\n const proxy = createStateProxy(s._signal as Signal<T>)\n // Performance: Use computed directly instead of state() to avoid recursion\n const statusComputed = computed<AsyncStatus>(() => {\n if (s.error) return 'error'\n if (s.loading) return 'loading'\n if (s.value !== undefined) return 'success'\n return 'idle'\n })\n const errorComputed = computed<unknown>(() => s.error)\n const statusValue = createStateProxy(statusComputed)\n const errorValue = createStateProxy(errorComputed)\n\n return [proxy, resActions.refetch, statusValue, errorValue] as [StateValue<T | undefined>, () => void, StateValue<AsyncStatus>, StateValue<unknown>]\n }\n\n // Sync function → Computed\n // First, try running to check if it returns a Promise (for non-async functions that return Promise)\n let testResult: T | Promise<T>\n try {\n testResult = fn()\n } catch {\n // If it throws during initial call, treat as computed (will throw on access)\n const comp = computed(fn as () => T)\n const s = toComputedStateObject(comp)\n if (key) {\n globalStateRegistry.set(key, s)\n checkRegistrySize()\n }\n return [createStateProxy(comp)] as [StateValue<T>]\n }\n\n if (testResult instanceof Promise) {\n // It's a Promise-returning function → Resource\n const [res, resActions] = createResource(fn, async (val) => val)\n const s = toStateObject(res, resActions)\n\n if (key) {\n globalStateRegistry.set(key, s)\n checkRegistrySize()\n }\n\n const proxy = createStateProxy(s._signal as Signal<T>)\n // Performance: Use computed directly instead of state() to avoid recursion\n const statusComputed = computed<AsyncStatus>(() => {\n if (s.error) return 'error'\n if (s.loading) return 'loading'\n if (s.value !== undefined) return 'success'\n return 'idle'\n })\n const errorComputed = computed<unknown>(() => s.error)\n const statusValue = createStateProxy(statusComputed)\n const errorValue = createStateProxy(errorComputed)\n\n return [proxy, resActions.refetch, statusValue, errorValue] as [StateValue<T | undefined>, () => void, StateValue<AsyncStatus>, StateValue<unknown>]\n }\n\n // Sync function → Computed (memoized derived value)\n const comp = computed(fn as () => T)\n const s = toComputedStateObject(comp)\n if (key) {\n globalStateRegistry.set(key, s)\n checkRegistrySize()\n }\n return [createStateProxy(comp)] as [StateValue<T>]\n }\n\n // 3. Plain value → Signal with setter\n const sig = signal<T>(initialValueOrFetcher)\n const s = toSignalStateObject(sig)\n\n if (key) {\n globalStateRegistry.set(key, s)\n checkRegistrySize()\n }\n\n const proxy = createStateProxy(sig)\n const setter: StateAction<T> = (newValue) => {\n if (typeof newValue === 'function') {\n sig.value = (newValue as (prev: T) => T)(sig.peek())\n } else {\n sig.value = newValue\n }\n }\n\n return [proxy, setter] as [StateValue<T>, StateAction<T>]\n}\n\n/**\n * Delete a specific global state by key\n * @param key - The key of the state to delete\n * @returns true if the state was deleted, false if it didn't exist\n *\n * @example\n * ```ts\n * state.delete('theme')\n * state.delete(['user', 'profile', userId])\n * ```\n */\nstate.delete = function (key: StateKey): boolean {\n const serializedKey = serializeKey(key)\n return globalStateRegistry.delete(serializedKey)\n}\n\n/**\n * Clear all global states (useful for testing or resetting app)\n *\n * @example\n * ```ts\n * state.clear()\n * ```\n */\nstate.clear = function (): void {\n globalStateRegistry.clear()\n hasWarnedAboutSize = false\n}\n\n/**\n * Check if a global state exists\n * @param key - The key to check\n * @returns true if the state exists\n *\n * @example\n * ```ts\n * if (state.has('theme')) { ... }\n * ```\n */\nstate.has = function (key: StateKey): boolean {\n const serializedKey = serializeKey(key)\n return globalStateRegistry.has(serializedKey)\n}\n\n/**\n * Get the current number of global states\n */\nObject.defineProperty(state, 'size', {\n get: () => globalStateRegistry.size,\n enumerable: true,\n})\n\n// Export with proper typing (cast to include static methods)\nconst _state = state as StateFunction\nexport { _state as state }\n\n/**\n * Ref object type for DOM element references\n */\nexport interface RefObject<T> {\n current: T | null\n}\n\n/**\n * Create a ref object to hold a reference to a DOM element.\n * Use with the `ref` prop on JSX elements.\n *\n * @param initialValue - Initial value (typically null)\n * @returns A ref object with a `current` property\n *\n * @example\n * ```tsx\n * function MyComponent() {\n * const inputRef = ref<HTMLInputElement>(null)\n *\n * const focusInput = () => {\n * inputRef.current?.focus()\n * }\n *\n * return (\n * <div>\n * <input ref={inputRef} type=\"text\" />\n * <button onclick={focusInput}>Focus</button>\n * </div>\n * )\n * }\n * ```\n */\nexport function ref<T>(initialValue: T | null): RefObject<T> {\n return { current: initialValue }\n}\n\n/**\n * Type helper for creating state with explicit type inference.\n * Useful when TypeScript inference fails or you want clearer types.\n * \n * @param initial - Initial value\n * @returns Tuple of [StateValue, StateAction]\n * \n * @example\n * ```tsx\n * // Better type inference in some cases\n * const [user, setUser] = createState<User | null>(null)\n * ```\n */\nexport function createState<T>(initial: T): [StateValue<T>, StateAction<T>] {\n return state(initial)\n}\n\n/**\n * Type helper for creating computed state with explicit type inference.\n * Useful when TypeScript inference fails or you want clearer types.\n * \n * @param fn - Computed function\n * @returns Tuple of [StateValue]\n * \n * @example\n * ```tsx\n * // Better type inference in some cases\n * const [total] = createComputed(() => items.reduce((sum, item) => sum + item.price, 0))\n * ```\n */\nexport function createComputed<T>(fn: () => T): [StateValue<T>] {\n // Use the imported computed from signal.ts, not state() to avoid recursion\n const comp = computed(fn)\n const s = toComputedStateObject(comp)\n return [createStateProxy(comp)] as [StateValue<T>]\n}\n"]}
|
package/dist/chunk-WEYAKKNF.js
DELETED
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
'use strict';var chunkCBO2X74Q_js=require('./chunk-CBO2X74Q.js'),chunkTQLZ7UZX_js=require('./chunk-TQLZ7UZX.js'),chunkQ7IWDVJ4_js=require('./chunk-Q7IWDVJ4.js'),chunkMKE3KA43_js=require('./chunk-MKE3KA43.js');var fe=new Set,pe=new Set(["focus","blur","mouseenter","mouseleave","load","unload","scroll"]),K=new WeakMap;function Ee(e){e.target;let t=e.type.toLowerCase(),o=!pe.has(t),i=e.composedPath?.()||[],r=e.target;if(i.length===0&&r)for(;r;)i.push(r),r=r.parentNode;for(let d of i){let a=d;if(a===document||!a)break;let l=K.get(a);if(l?.has(t)){let s=l.get(t);if(s){try{s(e);}catch(c){chunkMKE3KA43_js.b(chunkMKE3KA43_js.a.EVENT_HANDLER_FAILED,{eventType:t},c);}if(e.cancelBubble)return}}if(!o)break}}function Se(e){if(!(typeof document>"u")&&!fe.has(e)){let n=pe.has(e);document.addEventListener(e,Ee,{capture:n}),fe.add(e);}}var Q={on(e,n,t){let o=n.toLowerCase(),i=K.get(e);i||(i=new Map,K.set(e,i)),i.set(o,t),Se(o);},off(e,n){let t=n.toLowerCase(),o=K.get(e);o&&o.delete(t);}};var U={width:{cssProp:"width",transform:"px"},height:{cssProp:"height",transform:"px"},flexDirection:{cssProp:"flexDirection",transform:"none"},justifyContent:{cssProp:"justifyContent",transform:"none"},alignItems:{cssProp:"alignItems",transform:"none"},alignSelf:{cssProp:"alignSelf",transform:"none"},flexWrap:{cssProp:"flexWrap",transform:"none"},flex:{cssProp:"flex",transform:"string"},gap:{cssProp:"gap",transform:"px"},justify:{cssProp:"justifyContent",transform:"none"},align:{cssProp:"alignItems",transform:"none"},bg:{cssProp:"backgroundColor",transform:"none"},color:{cssProp:"color",transform:"none"},borderRadius:{cssProp:"borderRadius",transform:"px"},borderWidth:{cssProp:"borderWidth",transform:"px",sideEffect:(e,n)=>{n!==void 0&&e.borderStyle!=="solid"&&(e.borderStyle="solid");}},borderColor:{cssProp:"borderColor",transform:"none"},opacity:{cssProp:"opacity",transform:"string"},fontSize:{cssProp:"fontSize",transform:"px"},fontWeight:{cssProp:"fontWeight",transform:"string"},fontFamily:{cssProp:"fontFamily",transform:"none"},lineHeight:{cssProp:"lineHeight",transform:"string"},textAlign:{cssProp:"textAlign",transform:"none"},padding:{cssProp:"padding",transform:"px"},paddingTop:{cssProp:"paddingTop",transform:"px"},paddingRight:{cssProp:"paddingRight",transform:"px"},paddingBottom:{cssProp:"paddingBottom",transform:"px"},paddingLeft:{cssProp:"paddingLeft",transform:"px"},margin:{cssProp:"margin",transform:"px"},marginTop:{cssProp:"marginTop",transform:"px"},marginRight:{cssProp:"marginRight",transform:"px"},marginBottom:{cssProp:"marginBottom",transform:"px"},marginLeft:{cssProp:"marginLeft",transform:"px"}},ue={Row:"div",Column:"div",Stack:"div",Text:"span",Button:"button",Input:"input",Container:"div"},X={onPress:"click",onHover:"mouseenter",onChange:"input",onFocus:"focus",onBlur:"blur"},me=new Set(["children","key","ref","className","style","width","height","padding","paddingTop","paddingRight","paddingBottom","paddingLeft","margin","marginTop","marginRight","marginBottom","marginLeft","gap","flex","flexDirection","flexWrap","justifyContent","alignItems","alignSelf","align","justify","bg","color","borderRadius","borderWidth","borderColor","opacity","fontSize","fontWeight","fontFamily","lineHeight","textAlign"]),Te="http://www.w3.org/2000/svg",Le=new Set(["svg","path","circle","rect","line","polyline","polygon","ellipse","g","text","tspan","defs","use","symbol","marker","linearGradient","radialGradient","stop","clipPath","pattern","mask","filter"]),ke={viewBox:"viewBox",preserveAspectRatio:"preserveAspectRatio",strokeWidth:"stroke-width",strokeLinecap:"stroke-linecap",strokeLinejoin:"stroke-linejoin",strokeDasharray:"stroke-dasharray",strokeDashoffset:"stroke-dashoffset",fillOpacity:"fill-opacity",strokeOpacity:"stroke-opacity",stopColor:"stop-color",stopOpacity:"stop-opacity",clipPath:"clip-path",markerEnd:"marker-end",markerStart:"marker-start",markerMid:"marker-mid"};function Ae(e){return typeof e=="number"?`${e}px`:e}var ge=new Map;function he(e){let n=ge.get(e);return n===void 0&&(n=e.replace(/[A-Z]/g,t=>`-${t.toLowerCase()}`),ge.set(e,n)),n}function Re(e){return e.replace(/&/g,"&").replace(/"/g,""").replace(/'/g,"'").replace(/</g,"<").replace(/>/g,">")}function we(e,n){if(e!=null)switch(n){case "px":return Ae(e);case "string":return String(e);case "none":default:return e}}function Fe(e,n,t){let o=e.style,i=n.style,r=t.style;if(i!==r){if(i&&typeof i=="object")for(let l in i)(!r||!(l in r))&&o.setProperty(he(l),"");if(r&&typeof r=="object")for(let l in r){let s=r[l];(!i||i[l]!==s)&&o.setProperty(he(l),s);}}let d=e.getAttribute("data-flexium-type");(t.flexDirection||t.justifyContent||t.alignItems||t.flexWrap||t.gap!==void 0||t.justify||t.align||d==="Row"||d==="Column"||d==="Stack")&&(o.display!=="flex"&&(o.display="flex"),d==="Row"&&o.flexDirection!=="row"&&(o.flexDirection="row"),d==="Column"&&o.flexDirection!=="column"&&(o.flexDirection="column"));for(let l in n)if(l in U&&!(l in t)){let s=U[l],c=s.cssProp;o[c]!==""&&(o[c]=""),s.sideEffect&&s.sideEffect(o,void 0);}for(let l in t)if(l in U){let s=n[l],c=t[l];if(s===c)continue;let p=U[l],m=we(c,p.transform),f=p.cssProp;m===void 0?o[f]!==""&&(o[f]=""):o[f]!==m&&(o[f]=m),p.sideEffect&&p.sideEffect(o,m);}}function ye(e){if(typeof e=="string")return e;if(Array.isArray(e)){let n="";for(let t=0;t<e.length;t++){let o=e[t];if(!o)continue;let i=typeof o=="string"?o:ye(o);i&&(n=n?`${n} ${i}`:i);}return n}if(typeof e=="object"&&e!==null){let n="";for(let t in e)e[t]&&(n=n?`${n} ${t}`:t);return n}return ""}var ee=class{createNode(n,t){let o=ue[n]??n,i;return Le.has(o)?i=document.createElementNS(Te,o):i=document.createElement(o),ue[n]&&i.setAttribute("data-flexium-type",n),this.updateNode(i,{},t),i}updateNode(n,t,o){if(o.className!==t.className){let r=ye(o.className);n instanceof SVGElement?n.setAttribute("class",r):n.className=r;}Fe(n,t,o);for(let r in t)if(!(r in o)){if(typeof r=="symbol")continue;if(r.startsWith("on")){let d=X[r]||r.slice(2).toLowerCase();this.removeEventListener(n,d,t[r]);}else me.has(r)||n.removeAttribute(r);}let i=Reflect.ownKeys(o);for(let r of i){if(typeof r=="symbol")continue;let d=r,a=o[d],l=t[d];if(a!==l){if(d.startsWith("on")){let s=X[d]||d.slice(2).toLowerCase();l&&this.removeEventListener(n,s,l),a&&this.addEventListener(n,s,a);}else if(!me.has(d))if(a==null||a===false)n.removeAttribute(d);else if(a===true)n.setAttribute(d,"");else {let s=ke[d]||d;n.setAttribute(s,Re(String(a)));}}}}appendChild(n,t){n.appendChild(t);}insertBefore(n,t,o){n.insertBefore(t,o);}nextSibling(n){return n.nextSibling}removeChild(n,t){n.removeChild(t);}createTextNode(n){return document.createTextNode(n)}updateTextNode(n,t){n.textContent=t;}addEventListener(n,t,o){let i=X[t]||t;Q.on(n,i,o);}removeEventListener(n,t,o){let i=X[t]||t;Q.off(n,i);}},g=new ee;var te=Symbol("flexium.list");function ne(e){return e!==null&&typeof e=="object"&&te in e&&e[te]===true}function Pe(e,n){return typeof e=="number"?e:e.mode==="fixed"?e.itemHeight:e.estimatedItemHeight}function De(e,n,t,o,i){let r=o*t;if(o===0)return {startIndex:0,endIndex:-1,totalHeight:0};let d=Math.floor(e/t),a=Math.ceil(n/t),l=d+a;return {startIndex:Math.max(0,d-i),endIndex:Math.min(o-1,l+i),totalHeight:r}}function oe(e,n,t,o){return e.virtual?Ie(e,n,t,o):Me(e,n,t,o)}function Me(e,n,t,o){let{each:i,renderItem:r,getKey:d,class:a,style:l}=e,s=document.createElement("div");s.setAttribute("role","list"),a&&(s.className=a),l&&Object.entries(l).forEach(([f,u])=>{s.style[f]=typeof u=="number"?`${u}px`:u;}),n.appendChild(s);let c=new Map,p=(f,u)=>d?d(f,u):u,m=chunkMKE3KA43_js.i(()=>{let f=i()||[],u=new Set;f.forEach((T,N)=>{let E=p(T,N);if(u.add(E),!c.has(E)){let A=chunkMKE3KA43_js.k(N),x=r(T,()=>A()),C=t(x);C&&C instanceof HTMLElement&&(C.setAttribute("role","listitem"),s.appendChild(C),c.set(E,{node:C,dispose:()=>{try{o(C);}catch{}}}));}});for(let[T,N]of c)u.has(T)||(N.dispose(),N.node.parentNode===s&&s.removeChild(N.node),c.delete(T));});return ()=>{m();for(let f of c.values())f.dispose();c.clear(),s.parentNode===n&&n.removeChild(s);}}function Ie(e,n,t,o){let{each:i,renderItem:r,height:d,width:a,itemSize:l,overscan:s,getKey:c,onScroll:p,onVisibleRangeChange:m}=e;if(!d||!l)return console.warn("List: height and itemSize are required when virtual is true"),()=>{};let f=document.createElement("div");f.style.height=typeof d=="number"?`${d}px`:d,f.style.width=a?typeof a=="number"?`${a}px`:a:"100%",f.style.overflow="auto",f.style.position="relative",f.setAttribute("role","list"),f.setAttribute("tabindex","0");let u=document.createElement("div");u.style.position="relative",u.style.width="100%",u.style.willChange="transform",f.appendChild(u),n.appendChild(f);let T=chunkMKE3KA43_js.k(0),N=new Map,E=-1,A=-1,x=()=>{T.set(f.scrollTop),p?.(f.scrollTop);};f.addEventListener("scroll",x,{passive:true});let C=(R,B)=>c?c(R,B):B,I=chunkMKE3KA43_js.i(()=>{let R=i()||[],B=T(),Ce=f.clientHeight||parseFloat(String(d)),V=Pe(l),{startIndex:G,endIndex:O,totalHeight:be}=De(B,Ce,V,R.length,s);u.style.height=`${be}px`,f.setAttribute("aria-rowcount",String(R.length)),(G!==E||O!==A)&&(m?.(G,O),E=G,A=O);let re=new Set;for(let y=G;y<=O&&y<R.length;y++){let F=R[y],W=C(F,y);re.add(W);let P=N.get(W);if(P){P.indexSig.peek()!==y&&P.indexSig.set(y);let _=P.node;_.style.transform=`translateY(${y*V}px)`,_.setAttribute("aria-rowindex",String(y+1));}else {let _=chunkMKE3KA43_js.k(y),ve=r(F,()=>_()),b=t(ve);b&&b instanceof HTMLElement&&(b.style.position="absolute",b.style.top="0",b.style.left="0",b.style.right="0",b.style.transform=`translateY(${y*V}px)`,b.style.height=`${V}px`,b.style.boxSizing="border-box",b.setAttribute("role","listitem"),b.setAttribute("aria-rowindex",String(y+1)),u.appendChild(b),P={item:F,key:W,node:b,indexSig:_,dispose:()=>{try{o(b);}catch{}}},N.set(W,P));}}for(let[y,F]of N)re.has(y)||(F.dispose(),F.node.parentNode===u&&u.removeChild(F.node),N.delete(y));});return ()=>{I(),f.removeEventListener("scroll",x);for(let R of N.values())R.dispose();N.clear(),f.parentNode===n&&n.removeChild(f);}}var Ne=new WeakMap;function w(e){return Ne.get(e)}function D(e,n){Ne.set(e,n);}function Y(e,n,t,o){let i=n&&n.length>0,r=t&&t.length>0;if(!i&&!r)return;if(!r){for(let s of n){let c=s&&w(s);c&&(v(c),g.removeChild(e,c));}return}if(!i){let s=document.createDocumentFragment();for(let c of t){let p=h(c,void 0);p&&(D(c,p),s.appendChild(p));}o?e.insertBefore(s,o):e.appendChild(s);return}let d=new Map;for(let s=0;s<n.length;s++){let c=n[s],p=c.key??`__idx_${s}_${c.type}`;d.set(p,c);}let a=new Set,l=e.firstChild;for(let s=0;s<t.length;s++){let c=t[s],p=c.key??`__idx_${s}_${c.type}`;a.add(p);let m=d.get(p),f=l;if(!m||m.type!==c.type){let u=h(c,void 0);u&&(D(c,u),e.insertBefore(u,f));}else {_e(m,c);let u=w(c);u&&(l!==u?e.insertBefore(u,f):l=l?.nextSibling||null);}}for(let[s,c]of d){let p=w(c);!a.has(s)&&p&&(v(p),p.parentNode===e&&g.removeChild(e,p));}}function _e(e,n){let t=w(e);if(!t||(D(n,t),typeof n.type!="string"))return;g.updateNode(t,e.props,n.props);let o=e.children||[],i=n.children||[];if(!(o.length===0&&i.length===0)){if(i.length===1&&(typeof i[0]=="string"||typeof i[0]=="number")&&t.firstChild?.nodeType===Node.TEXT_NODE&&t.childNodes.length===1){let r=String(i[0]);String(o[0])!==r&&g.updateTextNode(t.firstChild,r);return}Y(t,o,i,null);}}var H=new WeakMap;function M(e,n){let t=H.get(e);t||(t=new Set,H.set(e,t)),t.add(n);}function h(e,n){if(e==null||typeof e=="boolean")return null;if(ne(e)){let t=n||document.createDocumentFragment(),o=oe(e,t,r=>h(r),v),i=document.createTextNode("");return M(i,o),n?t.firstChild:t}if(chunkTQLZ7UZX_js.d(e)){let t=chunkTQLZ7UZX_js.e(e);if(t){let o=document.createTextNode(""),i=n||document.createDocumentFragment();g.appendChild(i,o);let r=o,d=chunkMKE3KA43_js.i(()=>{let a=t.value,l=o.parentNode;if(l)if((typeof a=="string"||typeof a=="number")&&r&&r.nodeType===Node.TEXT_NODE&&r!==o)g.updateTextNode(r,String(a));else {let s=h(a);if(s)r&&r!==o&&r.parentNode===l?r.nodeType===Node.TEXT_NODE&&s.nodeType===Node.TEXT_NODE?g.updateTextNode(r,s.textContent||""):(l.replaceChild(s,r),r=s):(l.insertBefore(s,o.nextSibling),r=s);else {if(r&&r!==o&&r.parentNode===l)try{l.removeChild(r);}catch(c){chunkMKE3KA43_js.b(chunkMKE3KA43_js.a.DOM_CLEANUP_FAILED,{operation:"removeChild"},c);}r=o;}}});return M(o,d),n?o:i}}if(chunkMKE3KA43_js.m(e)||typeof e=="function"){let t=document.createTextNode(""),o=n||document.createDocumentFragment();g.appendChild(o,t);let i=[],r=null,d=[],a=chunkMKE3KA43_js.i(()=>{let l=chunkMKE3KA43_js.m(e)?e.value:e(),s=t.parentNode;if(s){if(Array.isArray(l)){let c=l.filter(p=>p!=null);if(d.length>0){let p=t.nextSibling;Y(s,d,c,p);}else {for(let m of i)if(v(m),m.parentNode===s)try{s.removeChild(m);}catch(f){chunkMKE3KA43_js.b(chunkMKE3KA43_js.a.DOM_CLEANUP_FAILED,{operation:"removeChild"},f);}i=[];let p=document.createDocumentFragment();for(let m of c){let f=h(m,p);f&&typeof m=="object"&&D(m,f);}i=Array.from(p.childNodes),s.insertBefore(p,t.nextSibling);}d=c,r=l;return}if(d.length>0){for(let c of d){let p=w(c);if(p&&p.parentNode===s){v(p);try{s.removeChild(p);}catch(m){chunkMKE3KA43_js.b(chunkMKE3KA43_js.a.DOM_CLEANUP_FAILED,{operation:"removeChild"},m);}}}d=[];}if(l!==r){for(let c of i)if(v(c),c.parentNode===s)try{s.removeChild(c);}catch(p){chunkMKE3KA43_js.b(chunkMKE3KA43_js.a.DOM_CLEANUP_FAILED,{operation:"removeChild"},p);}if(i=[],typeof l=="string"||typeof l=="number"){let c=g.createTextNode(String(l));s.insertBefore(c,t.nextSibling),i=[c];}else {let c=h(l);c&&(c.nodeType===Node.DOCUMENT_FRAGMENT_NODE?(i=Array.from(c.childNodes),s.insertBefore(c,t.nextSibling)):(s.insertBefore(c,t.nextSibling),i=[c]));}r=l;}}});return M(t,a),n?t:o}if(Array.isArray(e)){let t=document.createDocumentFragment();for(let o of e)h(o,t);return n&&g.appendChild(n,t),t}if(typeof e=="string"||typeof e=="number"){let t=g.createTextNode(String(e));return n&&g.appendChild(n,t),t}if(chunkQ7IWDVJ4_js.c(e)){if(typeof e.type=="function"){let r=e.type,d=document.createTextNode(""),a=n||document.createDocumentFragment();g.appendChild(a,d);let l=[],s=[],c=chunkTQLZ7UZX_js.b(),p=chunkMKE3KA43_js.i(()=>{chunkTQLZ7UZX_js.c(c),chunkMKE3KA43_js.f(m=>{chunkMKE3KA43_js.n(m);let f=r._contextId;f&&chunkCBO2X74Q_js.c(f,e.props.value);let u;try{chunkTQLZ7UZX_js.a(c),u=r({...e.props,children:e.children});}finally{chunkTQLZ7UZX_js.a(null);}if(Array.isArray(u)&&u.every(x=>chunkQ7IWDVJ4_js.c(x)&&x.type!=="fragment")){let x=d.parentNode;if(x){let C=u;Y(x,s,C,d.nextSibling),s=C,l=C.map(I=>w(I)).filter(I=>I!=null);return}}let E=d.parentNode;if(E){for(let x of l)if(v(x),x.parentNode===E)try{E.removeChild(x);}catch(C){chunkMKE3KA43_js.b(chunkMKE3KA43_js.a.DOM_CLEANUP_FAILED,{operation:"removeChild"},C);}}l=[],s=[];let A=document.createDocumentFragment();h(u,A),E&&(l=Array.from(A.childNodes),E.insertBefore(A,d.nextSibling));});});return M(d,p),n?d:a}if(e.type==="fragment"){let r=document.createDocumentFragment();for(let d of e.children)h(d,r);return n&&g.appendChild(n,r),r}let t=g.createNode(e.type,e.props),o=He(t,e.props);o.length>0&&H.set(t,new Set(o));for(let r of e.children)h(r,t);n&&g.appendChild(n,t);let i=e.props.ref;return i&&(typeof i=="function"?(i(t),M(t,()=>{i(null);})):typeof i=="object"&&"current"in i&&(i.current=t,M(t,()=>{i.current=null;}))),t}return null}var q=Symbol("uninitialized");function He(e,n){let t=[];for(let o in n){let i=n[o];if(!o.startsWith("on")){if(chunkMKE3KA43_js.m(i)){let r=q,d=chunkMKE3KA43_js.i(()=>{let a=i.value;a!==r&&(g.updateNode(e,{[o]:r===q?void 0:r},{[o]:a}),r=a);});t.push(d);continue}if(typeof i=="function"){let r=q,d=chunkMKE3KA43_js.i(()=>{try{let a=i();a!==r&&(g.updateNode(e,{[o]:r===q?void 0:r},{[o]:a}),r=a);}catch(a){chunkMKE3KA43_js.b(chunkMKE3KA43_js.a.DOM_CLEANUP_FAILED,{operation:"updateNode",prop:o},a);}});t.push(d);}}}return t}function v(e){let n=H.get(e);if(n&&(n.forEach(t=>t()),H.delete(e)),e.childNodes&&e.childNodes.length>0){let t=Array.from(e.childNodes);for(let o of t)v(o);}}function xe(e){let n=null,t=null;return {render(o){t&&(v(t),e.innerHTML="",t=null),n&&(n(),n=null),n=chunkMKE3KA43_js.i(()=>{e.innerHTML="",t=h(o,e);});},unmount(){n&&(n(),n=null),v(e),e.innerHTML="";}}}function at(e,n){return n.innerHTML="",h(e,n)}function ft(e){return xe(e)}function gt(e){if(typeof document>"u")return null;let n=e.mount||document.body,t=document.createComment("portal"),o=null;return o=h(e.children,n),chunkMKE3KA43_js.n(()=>{o&&(v(o),o.parentNode===n&&n.removeChild(o));}),t}
|
|
2
|
-
exports.a=ee;exports.b=g;exports.c=te;exports.d=ne;exports.e=h;exports.f=xe;exports.g=at;exports.h=ft;exports.i=gt;//# sourceMappingURL=chunk-WEYAKKNF.js.map
|
|
3
|
-
//# sourceMappingURL=chunk-WEYAKKNF.js.map
|