what-core 0.6.2 → 0.7.0
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/index.js +312 -182
- package/dist/index.js.map +3 -3
- package/dist/index.min.js +6 -6
- package/dist/index.min.js.map +3 -3
- package/dist/jsx-dev-runtime.js +37 -16
- package/dist/jsx-dev-runtime.js.map +2 -2
- package/dist/jsx-dev-runtime.min.js +1 -1
- package/dist/jsx-dev-runtime.min.js.map +3 -3
- package/dist/jsx-runtime.js +37 -16
- package/dist/jsx-runtime.js.map +2 -2
- package/dist/jsx-runtime.min.js +1 -1
- package/dist/jsx-runtime.min.js.map +3 -3
- package/dist/render.js +256 -194
- package/dist/render.js.map +3 -3
- package/dist/render.min.js +1 -1
- package/dist/render.min.js.map +3 -3
- package/dist/testing.js +174 -149
- package/dist/testing.js.map +2 -2
- package/dist/testing.min.js +1 -1
- package/dist/testing.min.js.map +3 -3
- package/package.json +1 -1
- package/src/dom.js +78 -47
- package/src/h.js +43 -18
- package/src/reactive.js +176 -101
- package/src/render.js +118 -34
package/dist/testing.min.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var p=!(typeof process<"u"),f=null;var d=null,B=null,M=null,V=!1,R=0,b=[],q=!1,ue=new WeakMap,ae=Symbol("needs_upstream");function A(e,t){let n=e,o=new Set;function s(...r){if(r.length===0)return d&&(o.add(d),d.deps.push(o)),n;p&&V&&console.warn("[what] Signal.set() called inside a computed function. This may cause infinite loops. Use effect() instead."+(t?` (signal: ${t})`:""));let i=typeof r[0]=="function"?r[0](n):r[0];Object.is(n,i)||(n=i,p&&f&&f.onSignalUpdate(s),o.size>0&&W(o))}return s.set=r=>{p&&V&&console.warn("[what] Signal.set() called inside a computed function. This may cause infinite loops. Use effect() instead."+(t?` (signal: ${t})`:""));let i=typeof r=="function"?r(n):r;Object.is(n,i)||(n=i,p&&f&&f.onSignalUpdate(s),o.size>0&&W(o))},s.peek=()=>n,s.subscribe=r=>C(()=>r(s())),s._signal=!0,p&&(s._subs=o,t&&(s._debugName=t)),p&&f&&f.onSignalCreate(s),s}function z(e){let t=0,n=e.deps;for(let o=0;o<n.length;o++){let s=ue.get(n[o]);if(s){let r=s._level;r>t&&(t=r)}}e._level=t+1}function C(e,t){let n=fe(e);n._level=1;let o=d;d=n;try{let r=n.fn();typeof r=="function"&&(n._cleanup=r)}finally{d=o}z(n),t?.stable&&(n._stable=!0);let s=()=>de(n);return B&&B.disposals.push(s),s}function fe(e,t){let n={fn:e,deps:[],lazy:t||!1,_onNotify:null,disposed:!1,_pending:!1,_stable:!1,_level:0,_computed:!1,_computedSubs:null,_isDirty:null,_markDirty:null};return p&&f&&f.onEffectCreate(n),n}function pe(e){if(e.disposed)return;if(e._stable){if(e._cleanup){try{e._cleanup()}catch(o){p&&console.warn("[what] Error in effect cleanup:",o)}e._cleanup=null}let n=d;d=null;try{let o=e.fn();typeof o=="function"&&(e._cleanup=o)}catch(o){f?.onError&&f.onError(o,{type:"effect",effect:e}),p&&console.warn("[what] Error in stable effect:",o)}finally{d=n}p&&f?.onEffectRun&&f.onEffectRun(e);return}if(U(e),e._cleanup){try{e._cleanup()}catch(n){f?.onError&&f.onError(n,{type:"effect-cleanup",effect:e}),p&&console.warn("[what] Error in effect cleanup:",n)}e._cleanup=null}let t=d;d=e;try{let n=e.fn();typeof n=="function"&&(e._cleanup=n)}catch(n){throw n===ae||f?.onError&&f.onError(n,{type:"effect",effect:e}),n}finally{d=t}p&&f?.onEffectRun&&f.onEffectRun(e)}function de(e){if(e.disposed=!0,p&&f&&f.onEffectDispose(e),U(e),e._cleanup){try{e._cleanup()}catch(t){p&&console.warn("[what] Error in effect cleanup on dispose:",t)}e._cleanup=null}}function U(e){let t=e.deps;for(let n=0;n<t.length;n++)t[n].delete(e);t.length=0}var I=0,S=null,L=0;function W(e){if(I===0){I=1;try{for(let t of e)if(!t.disposed){if(t._onNotify)t._onNotify();else if(R===0&&t._stable){let n=d;d=null;try{let o=t.fn();if(typeof o=="function"){if(t._cleanup)try{t._cleanup()}catch{}t._cleanup=o}}catch(o){f?.onError&&f.onError(o,{type:"effect",effect:t}),p&&console.warn("[what] Error in stable effect:",o)}finally{d=n}}else if(!t._pending){t._pending=!0;let n=t._level,o=b.length;o>0&&b[o-1]._level>n&&(q=!0),b.push(t)}}if(L>0){let t=0;for(;t<L;){let n=S[t];S[t]=null,t++;for(let o of n)if(!o.disposed){if(o._onNotify)o._onNotify();else if(R===0&&o._stable){let s=d;d=null;try{let r=o.fn();if(typeof r=="function"){if(o._cleanup)try{o._cleanup()}catch{}o._cleanup=r}}catch(r){f?.onError&&f.onError(r,{type:"effect",effect:o}),p&&console.warn("[what] Error in stable effect:",r)}finally{d=s}}else if(!o._pending){o._pending=!0;let s=o._level,r=b.length;r>0&&b[r-1]._level>s&&(q=!0),b.push(o)}}}L=0}}finally{I=0}R===0&&b.length>0&&he()}else S===null&&(S=[]),L>=S.length?S.push(e):S[L]=e,L++}var D=!1;function he(){D||(D=!0,queueMicrotask(()=>{D=!1,G()}))}var O=!1;function G(){if(!O){O=!0;try{let e=0;for(;b.length>0&&e<25;){let t=b;b=[],t.length>1&&q&&t.sort((n,o)=>n._level-o._level),q=!1;for(let n=0;n<t.length;n++){let o=t[n];if(o._pending=!1,!o.disposed&&!o._onNotify){let s=o.deps.length;pe(o),!o._computed&&o.deps.length!==s&&z(o)}}e++}if(e>=25){for(let t=0;t<b.length;t++)b[t]._pending=!1;if(b.length=0,p){let n=b.slice(0,3).map(o=>o.fn?.name||o.fn?.toString().slice(0,60)||"(anonymous)");console.warn(`[what] Possible infinite effect loop detected (25 iterations). Likely cause: an effect writes to a signal it also reads, creating a cycle. Use untrack() to read signals without subscribing. Looping effects: ${n.join(", ")}`)}else console.warn("[what] Possible infinite effect loop detected")}}finally{O=!1}}}function j(){if(O){p&&console.warn("[what] flushSync() called during an active flush (e.g., inside a component render or effect). This is a no-op to prevent infinite loops. Move flushSync() to an event handler or onMount callback.");return}if(d){p&&console.warn("[what] flushSync() called during effect execution. This is a no-op to prevent infinite loops. Move flushSync() to an event handler or onMount callback.");return}D=!1,G()}function K(e){let t=d;d=null;try{return e()}finally{d=t}}function F(e){let t=B,n=M,o={disposals:[],owner:M,children:[],_disposed:!1};M&&M.children.push(o),B=o,M=o;try{return e(()=>{if(!o._disposed){o._disposed=!0;for(let r=o.children.length-1;r>=0;r--)Z(o.children[r]);o.children.length=0;for(let r=o.disposals.length-1;r>=0;r--)o.disposals[r]();if(o.disposals.length=0,o.owner){let r=o.owner.children.indexOf(o);r>=0&&o.owner.children.splice(r,1)}}})}finally{B=t,M=n}}function Z(e){if(!e._disposed){e._disposed=!0;for(let t=e.children.length-1;t>=0;t--)Z(e.children[t]);e.children.length=0;for(let t=e.disposals.length-1;t>=0;t--)e.disposals[t]();e.disposals.length=0}}var me=Object.create(null);function H(e,t,...n){t=t||me;let o=J(n),s=t.key??null;return t.key!==void 0&&(t={...t},delete t.key),{tag:e,props:t,children:o,key:s,_vnode:!0}}function J(e){let t=[];for(let n=0;n<e.length;n++){let o=e[n];o==null||o===!1||o===!0||(Array.isArray(o)?t.push(...J(o)):typeof o=="object"&&o._vnode||typeof o=="function"?t.push(o):t.push(String(o)))}return t}var X=null;function Q(e){X=e}function Y(e,t){let n=t||X?.();for(;n;){if(n._errorBoundary)return n._errorBoundary(e),!0;n=n._parentCtx}return!1}var ye=null;function ee(e){ye=e}var ge=new Set(["svg","path","circle","rect","line","polyline","polygon","ellipse","g","defs","use","symbol","clipPath","mask","pattern","image","text","tspan","textPath","foreignObject","linearGradient","radialGradient","stop","marker","animate","animateTransform","animateMotion","set","filter","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feFlood","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","feSpecularLighting","feTile","feTurbulence"]),_e="http://www.w3.org/2000/svg",oe=new Set,$=new WeakMap;function we(e){return!e||typeof e!="object"?!1:typeof Node<"u"&&e instanceof Node?!0:typeof e.nodeType=="number"&&typeof e.nodeName=="string"}function te(e){return!!e&&typeof e=="object"&&(e._vnode===!0||"tag"in e)}function ne(e){if(!e.disposed){if(e.disposed=!0,e.cleanups)for(let t of e.cleanups)try{t()}catch(n){console.error("[what] cleanup error:",n)}if(e.effects)for(let t of e.effects)try{t()}catch{}if(e.hooks){for(let t of e.hooks)if(t&&typeof t.cleanup=="function")try{t.cleanup()}catch(n){console.error("[what] hook cleanup error:",n)}}if(e._cleanupCallbacks)for(let t of e._cleanupCallbacks)try{t()}catch(n){console.error("[what] onCleanup error:",n)}p&&f?.onComponentUnmount&&f.onComponentUnmount(e),oe.delete(e)}}function N(e){if(!e)return;e._componentCtx&&ne(e._componentCtx);let t=$.get(e);if(t&&ne(t),e._dispose)try{e._dispose()}catch{}if(e._propEffects)for(let n in e._propEffects)try{e._propEffects[n]()}catch{}if(e.childNodes)for(let n of e.childNodes)N(n)}function P(e,t){typeof t=="string"&&(t=document.querySelector(t)),N(t),t.textContent="";let n=v(e,t);return n&&t.appendChild(n),()=>{N(t),t.textContent=""}}function v(e,t,n){if(e==null||e===!1||e===!0)return document.createComment("");if(typeof e=="string"||typeof e=="number")return document.createTextNode(String(e));if(we(e))return e;if(typeof e=="function"){let o=document.createComment("fn"),s=document.createComment("/fn"),r=[],i=document.createDocumentFragment();i.appendChild(o),i.appendChild(s);let c=C(()=>{let l=e(),u=l==null||l===!1||l===!0?[]:Array.isArray(l)?l:[l],y=s.parentNode;if(y){for(let h of r)N(h),h.parentNode===y&&y.removeChild(h);r=[];for(let h of u){let _=v(h,y,t?._isSvg);if(_)if(_.nodeType===11){let g=Array.from(_.childNodes);y.insertBefore(_,s);for(let w of g)r.push(w)}else y.insertBefore(_,s),r.push(_)}}});return o._dispose=c,s._dispose=c,i}if(Array.isArray(e)){let o=document.createDocumentFragment();for(let s of e){let r=v(s,t,n);r&&o.appendChild(r)}return o}return te(e)&&typeof e.tag=="function"?be(e,t,n):te(e)?ve(e,t,n):document.createTextNode(String(e))}var m=[];function re(){return m[m.length-1]}Q(re);ee(re);function be(e,t,n){let{tag:o,props:s,children:r}=e;if(typeof o=="function"&&(o.prototype?.isReactComponent||o.prototype?.render)){let a=o;o=function(k){return new a(k).render()},o.displayName=a.displayName||a.name||"ClassComponent"}if(o==="__errorBoundary"||e.tag==="__errorBoundary")return Ee(e,t);if(o==="__suspense"||e.tag==="__suspense")return xe(e,t);if(o==="__portal"||e.tag==="__portal")return Ce(e,t);let i={hooks:[],hookIndex:0,effects:[],cleanups:[],mounted:!1,disposed:!1,Component:o,_parentCtx:m[m.length-1]||null,_errorBoundary:(()=>{let a=m[m.length-1];for(;a;){if(a._errorBoundary)return a._errorBoundary;a=a._parentCtx}return null})()},c=document.createComment("c:start"),l=document.createComment("c:end");$.set(c,i),i._startComment=c,i._endComment=l;let u=document.createDocumentFragment();u._componentCtx=i,i._wrapper=c,oe.add(i),p&&f?.onComponentMount&&f.onComponentMount(i);let y=r.length===0?void 0:r.length===1?r[0]:r,h=A({...s,children:y});i._propsSignal=h;let _=new Proxy({},{get(a,E){return h()[E]},has(a,E){let k=h();return E in k},ownKeys(){let a=h();return Reflect.ownKeys(a)},getOwnPropertyDescriptor(a,E){let k=h();if(E in k)return{value:k[E],writable:!1,enumerable:!0,configurable:!0}}});m.push(i);let g;try{g=o(_)}catch(a){if(m.pop(),!Y(a,i))throw console.error("[what] Uncaught error in component:",o.name||"Anonymous",a),a;return u.appendChild(c),u.appendChild(l),u}m.pop(),i.mounted=!0,i._mountCallbacks&&queueMicrotask(()=>{if(!i.disposed)for(let a of i._mountCallbacks)try{a()}catch(E){console.error("[what] onMount error:",E)}}),u.appendChild(c);let w=Array.isArray(g)?g:[g];for(let a of w){let E=v(a,u,n);E&&u.appendChild(E)}return u.appendChild(l),u}function Ee(e,t){let{errorState:n,handleError:o,fallback:s,reset:r}=e.props,i=e.children,c=document.createComment("eb:start"),l=document.createComment("eb:end"),u={hooks:[],hookIndex:0,effects:[],cleanups:[],mounted:!1,disposed:!1,_parentCtx:m[m.length-1]||null,_errorBoundary:o,_startComment:c,_endComment:l};$.set(c,u);let y=document.createDocumentFragment();y._componentCtx=u,y.appendChild(c),y.appendChild(l);let h=C(()=>{let _=n();if(m.push(u),c.parentNode)for(;c.nextSibling&&c.nextSibling!==l;){let w=c.nextSibling;N(w),w.parentNode.removeChild(w)}let g;_?g=typeof s=="function"?[s({error:_,reset:r})]:[s]:g=i,g=Array.isArray(g)?g:[g];for(let w of g){let a=v(w,t);a&&(l.parentNode?l.parentNode.insertBefore(a,l):y.insertBefore(a,l))}m.pop()});return u.effects.push(h),y}function xe(e,t){let{boundary:n,fallback:o,loading:s}=e.props,r=e.children,i=document.createComment("sb:start"),c=document.createComment("sb:end"),l={hooks:[],hookIndex:0,effects:[],cleanups:[],mounted:!1,disposed:!1,_parentCtx:m[m.length-1]||null,_startComment:i,_endComment:c};$.set(i,l);let u=document.createDocumentFragment();u._componentCtx=l,u.appendChild(i),u.appendChild(c);let y=C(()=>{let _=s()?[o]:r,g=Array.isArray(_)?_:[_];if(m.push(l),i.parentNode)for(;i.nextSibling&&i.nextSibling!==c;){let w=i.nextSibling;N(w),w.parentNode.removeChild(w)}for(let w of g){let a=v(w,t);a&&(c.parentNode?c.parentNode.insertBefore(a,c):u.insertBefore(a,c))}m.pop()});return l.effects.push(y),u}function Ce(e,t){let{container:n}=e.props,o=e.children;if(!n)return console.warn("[what] Portal: target container not found"),document.createComment("portal:empty");let s={hooks:[],hookIndex:0,effects:[],cleanups:[],mounted:!1,disposed:!1,_parentCtx:m[m.length-1]||null},r=document.createComment("portal");r._componentCtx=s;let i=[];for(let c of o){let l=v(c,n);l&&(n.appendChild(l),i.push(l))}return s._cleanupCallbacks=[()=>{for(let c of i)N(c),c.parentNode&&c.parentNode.removeChild(c)}],r}function ve(e,t,n){let{tag:o,props:s,children:r}=e,i=n||ge.has(o),c=i?document.createElementNS(_e,o):document.createElement(o);s&&ke(c,s,{},i);for(let l of r){let u=v(l,c,i&&o!=="foreignObject");u&&c.appendChild(u)}return c._vnode=e,c}function ke(e,t,n,o){t=t||{},n=n||{};for(let s in t)if(!(s==="key"||s==="children")){if(s==="ref"){typeof t.ref=="function"?t.ref(e):t.ref&&(t.ref.current=e);continue}se(e,s,t[s],o)}}function se(e,t,n,o){if(typeof n=="function"&&!(t.startsWith("on")&&t.length>2)&&t!=="ref"){if(e._propEffects||(e._propEffects={}),e._propEffects[t])try{e._propEffects[t]()}catch{}e._propEffects[t]=C(()=>{let s=n();se(e,t,s,o)});return}if(t.startsWith("on")&&t.length>2){let s=t.slice(2),r=!1;s.endsWith("Capture")&&(s=s.slice(0,-7),r=!0);let i=s.toLowerCase(),c=r?i+"_capture":i,l=e._events?.[c];if(l&&l._original===n||(l&&e.removeEventListener(i,l,r),n==null))return;e._events||(e._events={});let u=h=>(h.nativeEvent||(h.nativeEvent=h),K(()=>n(h)));u._original=n,e._events[c]=u;let y=n._eventOpts;e.addEventListener(i,u,y||r||void 0);return}if(t==="className"||t==="class"){o?e.setAttribute("class",n||""):e.className=n||"";return}if(t==="style"){if(typeof n=="string")e.style.cssText=n,e._prevStyle=null;else if(typeof n=="object"){let s=e._prevStyle||{};for(let r in s)r in n||(e.style[r]="");for(let r in n)e.style[r]=n[r]??"";e._prevStyle={...n}}return}if(t==="dangerouslySetInnerHTML"){e.innerHTML=n?.__html??"";return}if(t==="innerHTML"){if(n==null)return;if(n&&typeof n=="object"&&"__html"in n)e.innerHTML=n.__html??"";else{p&&console.warn("[what] innerHTML received a raw string. This is a security risk (XSS). Use innerHTML={{ __html: trustedString }} or dangerouslySetInnerHTML={{ __html: trustedString }} instead.");return}return}if(typeof n=="boolean"){n?e.setAttribute(t,""):e.removeAttribute(t);return}if(t.startsWith("data-")||t.startsWith("aria-")){e.setAttribute(t,n);return}if(o){n===!1||n==null?e.removeAttribute(t):e.setAttribute(t,n===!0?"":String(n));return}t in e?e[t]=n:e.setAttribute(t,n)}var x=null;function ce(){return typeof document<"u"&&(x=document.createElement("div"),x.id="test-root",document.body.appendChild(x)),x}function Se(){x&&(x.innerHTML="",x.parentNode&&x.parentNode.removeChild(x),x=null)}function We(e,t={}){let{container:n}=t,o=n||ce();if(!o)throw new Error("No DOM container available. Are you running in Node.js without jsdom?");let s=P(e,o);return{container:o,unmount:s,getByText:r=>T(o,r),getByTestId:r=>o.querySelector(`[data-testid="${r}"]`),getByRole:r=>o.querySelector(`[role="${r}"]`),getAllByText:r=>le(o,r),queryByText:r=>T(o,r),queryByTestId:r=>o.querySelector(`[data-testid="${r}"]`),debug:()=>console.log(o.innerHTML),findByText:(r,i)=>ie(()=>T(o,r),{timeout:i}),findByTestId:(r,i)=>ie(()=>o.querySelector(`[data-testid="${r}"]`),{timeout:i})}}function ze(e,t){let n=ce();if(!n)throw new Error("No DOM container available. Are you running in Node.js without jsdom?");let o={},s=null,r;return F(i=>{s=i;let c=H(e,t||{});r=P(c,n)}),{container:n,signals:new Proxy(o,{get(i,c){if(c in i)return i[c]},set(i,c,l){return i[c]=l,!0}}),update(){j()},unmount(){r&&r(),s&&s(),Se()},getByText:i=>T(n,i),getByTestId:i=>n.querySelector(`[data-testid="${i}"]`),queryByText:i=>T(n,i),debug:()=>console.log(n.innerHTML)}}function Ue(){j()}function Ge(e){let t=[],n=[],o=A,s=new Map,r=l=>{t.includes(l)||t.push(l)},i=l=>{n.includes(l)||n.push(l)},c;return F(l=>{c=l;let u=C(()=>{e()})}),c&&c(),{accessed:t,written:n}}function Ke(e,t){let n=[t],o=0,s=A(t,e),r=s.set;s.set=function(l){let u=typeof l=="function"?l(s.peek()):l;return Object.is(s.peek(),u)||(o++,n.push(u)),r(u)};let i=s,c=function(...l){if(l.length===0)return i();let u=typeof l[0]=="function"?l[0](i.peek()):l[0];return Object.is(i.peek(),u)||(o++,n.push(u)),i(u)};return c._signal=!0,c.peek=s.peek,c.set=s.set,c.subscribe=s.subscribe,s._debugName&&(c._debugName=s._debugName),s._subs&&(c._subs=s._subs),Object.defineProperty(c,"history",{get(){return n}}),Object.defineProperty(c,"setCount",{get(){return o}}),c.reset=function(l){let u=l!==void 0?l:t;n.length=0,n.push(u),o=0,i(u)},c}function T(e,t){let n=t instanceof RegExp?t:null,o=document.createTreeWalker(e,NodeFilter.SHOW_TEXT,null,!1);for(;o.nextNode();){let s=o.currentNode;if(n?n.test(s.textContent):s.textContent.includes(t))return s.parentElement}return null}function le(e,t){let n=[],o=t instanceof RegExp?t:null,s=document.createTreeWalker(e,NodeFilter.SHOW_TEXT,null,!1);for(;s.nextNode();){let r=s.currentNode;(o?o.test(r.textContent):r.textContent.includes(t))&&n.push(r.parentElement)}return n}var Ze={click(e){let t=new MouseEvent("click",{bubbles:!0,cancelable:!0,view:typeof window<"u"?window:void 0});return e.dispatchEvent(t),t},change(e,t){e.value=t;let n=new Event("input",{bubbles:!0});e.dispatchEvent(n);let o=new Event("change",{bubbles:!0});return e.dispatchEvent(o),o},input(e,t){e.value=t;let n=new Event("input",{bubbles:!0});return e.dispatchEvent(n),n},submit(e){let t=new Event("submit",{bubbles:!0,cancelable:!0});return e.dispatchEvent(t),t},focus(e){e.focus();let t=new FocusEvent("focus",{bubbles:!0});return e.dispatchEvent(t),t},blur(e){e.blur();let t=new FocusEvent("blur",{bubbles:!0});return e.dispatchEvent(t),t},keyDown(e,t,n={}){let o=new KeyboardEvent("keydown",{bubbles:!0,cancelable:!0,key:t,...n});return e.dispatchEvent(o),o},keyUp(e,t,n={}){let o=new KeyboardEvent("keyup",{bubbles:!0,cancelable:!0,key:t,...n});return e.dispatchEvent(o),o},mouseEnter(e){let t=new MouseEvent("mouseenter",{bubbles:!0});return e.dispatchEvent(t),t},mouseLeave(e){let t=new MouseEvent("mouseleave",{bubbles:!0});return e.dispatchEvent(t),t}};async function ie(e,t={}){let{timeout:n=1e3,interval:o=50}=t,s=Date.now();for(;Date.now()-s<n;){try{let r=e();if(r)return r}catch{}await new Promise(r=>setTimeout(r,o))}throw new Error(`waitFor timed out after ${n}ms`)}async function Je(e,t={}){let{timeout:n=1e3,interval:o=50}=t,s=Date.now(),r=e();if(!r)throw new Error("Element not found");for(;Date.now()-s<n;){if(r=e(),!r)return;await new Promise(i=>setTimeout(i,o))}throw new Error(`Element still present after ${n}ms`)}async function Xe(e){let t=await e();return j(),await new Promise(n=>queueMicrotask(n)),await new Promise(n=>setTimeout(n,0)),t}function Qe(e){let t=A(e),n=[e];return C(()=>{n.push(t())}),{signal:t,get value(){return t()},set value(o){t.set(o)},history:n,reset(){n.length=0,n.push(t())}}}function Ye(e="MockComponent"){let t=[];function n(o){return t.push({props:o,timestamp:Date.now()}),H("div",{"data-testid":`mock-${e}`},JSON.stringify(o,null,2))}return n.displayName=e,n.calls=t,n.lastCall=()=>t[t.length-1],n.reset=()=>{t.length=0},n}var et={toBeInTheDocument(e){if(!e||!e.parentNode)throw new Error("Expected element to be in the document")},toHaveTextContent(e,t){if(!e)throw new Error("Element not found");let n=e.textContent;if(!(t instanceof RegExp?t.test(n):n.includes(t)))throw new Error(`Expected "${n}" to contain "${t}"`)},toHaveAttribute(e,t,n){if(!e)throw new Error("Element not found");let o=e.getAttribute(t);if(n!==void 0&&o!==n)throw new Error(`Expected attribute "${t}" to be "${n}", got "${o}"`);if(n===void 0&&o===null)throw new Error(`Expected element to have attribute "${t}"`)},toHaveClass(e,t){if(!e)throw new Error("Element not found");if(!e.classList.contains(t))throw new Error(`Expected element to have class "${t}"`)},toBeVisible(e){if(!e)throw new Error("Element not found");let t=window.getComputedStyle(e);if(t.display==="none"||t.visibility==="hidden"||t.opacity==="0")throw new Error("Expected element to be visible")},toBeDisabled(e){if(!e)throw new Error("Element not found");if(!e.disabled)throw new Error("Expected element to be disabled")},toHaveValue(e,t){if(!e)throw new Error("Element not found");if(e.value!==t)throw new Error(`Expected value to be "${t}", got "${e.value}"`)}},tt={getByText:e=>T(document.body,e),getByTestId:e=>document.querySelector(`[data-testid="${e}"]`),getByRole:e=>document.querySelector(`[role="${e}"]`),getAllByText:e=>le(document.body,e),queryByText:e=>T(document.body,e),queryByTestId:e=>document.querySelector(`[data-testid="${e}"]`),debug:()=>console.log(document.body.innerHTML)};export{Xe as act,Se as cleanup,Qe as createTestSignal,et as expect,Ze as fireEvent,Ue as flushEffects,Ye as mockComponent,Ke as mockSignal,We as render,ze as renderTest,tt as screen,ce as setupDOM,Ge as trackSignals,ie as waitFor,Je as waitForElementToBeRemoved};
|
|
1
|
+
var d=!(typeof process<"u"),a=null;var y=null,B=null,N=null,pe=!1,z=0,b=[],I=!1,de=Symbol("needs_upstream");function A(e,t){let n=e,o=new Set,s=null,r=0;function l(i){d&&pe&&console.warn("[what] Signal.set() called inside a computed function. This may cause infinite loops. Use effect() instead."+(t?` (signal: ${t})`:""));let u=typeof i=="function"?i(n):i;n===u||n!==n&&u!==u||(n=u,s=null,d&&a&&a.onSignalUpdate(c),o.size>0&&ge(o))}function c(i){if(arguments.length===0){let u=y;return u!==null&&(u!==s||u._epoch!==r)&&(s=u,r=u._epoch,o.add(u),u.deps.push(o)),n}l(i)}return c.set=l,c.peek=()=>n,c.subscribe=i=>C(()=>i(c())),c._signal=!0,d&&(c._subs=o,t&&(c._debugName=t)),d&&a&&a.onSignalCreate(c),c}function U(e){let t=0,n=e.deps;for(let o=0;o<n.length;o++){let s=n[o]._owner;if(s){let r=s._level;r>t&&(t=r)}}e._level=t+1}function C(e,t){let n=he(e);n._level=1;let o=y;y=n;try{let r=n.fn();typeof r=="function"&&(n._cleanup=r)}finally{y=o}U(n),t?.stable&&(n._stable=!0);let s=()=>ye(n);return B&&B.disposals.push(s),s}function he(e,t){let n={fn:e,deps:[],lazy:t||!1,_onNotify:null,disposed:!1,_pending:!1,_stable:!1,_level:0,_computed:!1,_computedSubs:null,_isDirty:null,_markDirty:null,_cleanup:null,_epoch:0};return d&&a&&a.onEffectCreate(n),n}function me(e){if(e.disposed)return;if(e._stable){if(e._cleanup){try{e._cleanup()}catch(s){d&&console.warn("[what] Error in effect cleanup:",s)}e._cleanup=null}let o=y;y=null;try{let s=e.fn();typeof s=="function"&&(e._cleanup=s)}catch(s){a?.onError&&a.onError(s,{type:"effect",effect:e}),d&&console.warn("[what] Error in stable effect:",s)}finally{y=o}d&&a?.onEffectRun&&a.onEffectRun(e);return}let t=e.deps.length===1?e.deps[0]:null;if(G(e),e._cleanup){try{e._cleanup()}catch(o){d&&a?.onError&&a.onError(o,{type:"effect-cleanup",effect:e}),d&&console.warn("[what] Error in effect cleanup:",o)}e._cleanup=null}let n=y;y=e;try{let o=e.fn();typeof o=="function"&&(e._cleanup=o)}catch(o){throw o===de||d&&a?.onError&&a.onError(o,{type:"effect",effect:e}),o}finally{y=n}t!==null&&e.deps.length===1&&e.deps[0]===t&&!e._cleanup&&!e._pending&&(e._stable=!0),d&&a?.onEffectRun&&a.onEffectRun(e)}function ye(e){if(e.disposed=!0,d&&a&&a.onEffectDispose(e),G(e),e._cleanup){try{e._cleanup()}catch(t){d&&console.warn("[what] Error in effect cleanup on dispose:",t)}e._cleanup=null}}function G(e){let t=e.deps;for(let n=0;n<t.length;n++)t[n].delete(e);t.length=0,e._epoch++}var R=0,k=null,M=0;function V(e){if(!e.disposed){if(e._onNotify)e._onNotify();else if(!e._pending)if(z===0&&e._stable){let t=y;y=null;try{let n=e.fn();if(typeof n=="function"){if(e._cleanup)try{e._cleanup()}catch{}e._cleanup=n}}catch(n){d&&a?.onError&&a.onError(n,{type:"effect",effect:e}),d&&console.warn("[what] Error in stable effect:",n)}finally{y=t}}else{e._pending=!0;let t=e._level,n=b.length;n>0&&b[n-1]._level>t&&(I=!0),b.push(e)}}}function ge(e){if(R===0){R=1;try{for(let t of e)V(t);if(M>0){let t=0;for(;t<M;){let n=k[t];k[t]=null,t++;for(let o of n)V(o)}M=0}}finally{R=0}z===0&&b.length>0&&_e()}else k===null&&(k=[]),M>=k.length?k.push(e):k[M]=e,M++}var O=!1;function _e(){O||(O=!0,queueMicrotask(()=>{O=!1,K()}))}var j=!1;function K(){if(!j){j=!0;try{let e=0;for(;b.length>0&&e<25;){let t=b;b=[],t.length>1&&I&&t.sort((n,o)=>n._level-o._level),I=!1;for(let n=0;n<t.length;n++){let o=t[n];if(o._pending=!1,!o.disposed&&!o._onNotify){let s=o.deps.length;me(o),!o._computed&&o.deps.length!==s&&U(o)}}e++}if(e>=25){if(d){let n=b.slice(0,3).map(o=>o.fn?.name||o.fn?.toString().slice(0,60)||"(anonymous)");console.warn(`[what] Possible infinite effect loop detected (25 iterations). Likely cause: an effect writes to a signal it also reads, creating a cycle. Use untrack() to read signals without subscribing. Looping effects: ${n.join(", ")}`)}else console.warn("[what] Possible infinite effect loop detected");for(let t=0;t<b.length;t++)b[t]._pending=!1;b.length=0}}finally{j=!1}}}function q(){if(j){d&&console.warn("[what] flushSync() called during an active flush (e.g., inside a component render or effect). This is a no-op to prevent infinite loops. Move flushSync() to an event handler or onMount callback.");return}if(y){d&&console.warn("[what] flushSync() called during effect execution. This is a no-op to prevent infinite loops. Move flushSync() to an event handler or onMount callback.");return}O=!1,K()}function Z(e){let t=y;y=null;try{return e()}finally{y=t}}function P(e){let t=B,n=N,o={disposals:[],owner:N,children:[],_disposed:!1};N&&N.children.push(o),B=o,N=o;try{return e(()=>{if(!o._disposed){o._disposed=!0;for(let r=o.children.length-1;r>=0;r--)J(o.children[r]);o.children.length=0;for(let r=o.disposals.length-1;r>=0;r--)o.disposals[r]();if(o.disposals.length=0,o.owner){let r=o.owner.children.indexOf(o);r>=0&&o.owner.children.splice(r,1)}}})}finally{B=t,N=n}}function J(e){if(!e._disposed){e._disposed=!0;for(let t=e.children.length-1;t>=0;t--)J(e.children[t]);e.children.length=0;for(let t=e.disposals.length-1;t>=0;t--)e.disposals[t]();e.disposals.length=0}}var we=Object.create(null),X=[];function F(e,t){t=t||we;let n=arguments.length,o;if(n<=2)o=X;else if(n===3)o=be(arguments[2]);else{let r=[];for(let l=2;l<n;l++)H(arguments[l],r);o=r}let s=t.key??null;return t.key!==void 0&&(t={...t},delete t.key),{tag:e,props:t,children:o,key:s,_vnode:!0}}function be(e){if(e==null||e===!1||e===!0)return X;if(Array.isArray(e)){let t=[];return H(e,t),t}return typeof e=="object"&&e._vnode?[e]:typeof e=="function"?[e]:[String(e)]}function H(e,t){if(!(e==null||e===!1||e===!0))if(Array.isArray(e))for(let n=0;n<e.length;n++)H(e[n],t);else typeof e=="object"&&e._vnode||typeof e=="function"?t.push(e):t.push(String(e))}var Q=null;function Y(e){Q=e}function ee(e,t){let n=t||Q?.();for(;n;){if(n._errorBoundary)return n._errorBoundary(e),!0;n=n._parentCtx}return!1}var Ee=null;function te(e){Ee=e}var xe=new Set(["svg","path","circle","rect","line","polyline","polygon","ellipse","g","defs","use","symbol","clipPath","mask","pattern","image","text","tspan","textPath","foreignObject","linearGradient","radialGradient","stop","marker","animate","animateTransform","animateMotion","set","filter","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feFlood","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","feSpecularLighting","feTile","feTurbulence"]),Ce="http://www.w3.org/2000/svg",re=new Set,$=new WeakMap;function ve(e){return!e||typeof e!="object"?!1:typeof Node<"u"&&e instanceof Node?!0:typeof e.nodeType=="number"&&typeof e.nodeName=="string"}function ne(e){return!!e&&typeof e=="object"&&(e._vnode===!0||"tag"in e)}function oe(e){if(!e.disposed){if(e.disposed=!0,e.cleanups)for(let t of e.cleanups)try{t()}catch(n){console.error("[what] cleanup error:",n)}if(e.effects)for(let t of e.effects)try{t()}catch{}if(e.hooks){for(let t of e.hooks)if(t&&typeof t.cleanup=="function")try{t.cleanup()}catch(n){console.error("[what] hook cleanup error:",n)}}if(e._cleanupCallbacks)for(let t of e._cleanupCallbacks)try{t()}catch(n){console.error("[what] onCleanup error:",n)}d&&a?.onComponentUnmount&&a.onComponentUnmount(e),re.delete(e)}}function S(e){if(!e)return;if(e._componentCtx&&oe(e._componentCtx),e.nodeType===8){let n=$.get(e);n&&oe(n)}if(e._dispose)try{e._dispose()}catch{}if(e._propEffects)for(let n in e._propEffects)try{e._propEffects[n]()}catch{}let t=e.childNodes;if(t&&t.length>0)for(let n=0;n<t.length;n++)S(t[n])}function W(e,t){typeof t=="string"&&(t=document.querySelector(t)),S(t),t.textContent="";let n=v(e,t);return n&&t.appendChild(n),()=>{S(t),t.textContent=""}}function v(e,t,n){if(e==null||e===!1||e===!0)return document.createComment("");if(typeof e=="string"||typeof e=="number")return document.createTextNode(String(e));if(ve(e))return e;if(typeof e=="function"){let o=document.createComment("fn"),s=document.createComment("/fn"),r=[],l=document.createDocumentFragment();l.appendChild(o),l.appendChild(s);let c=C(()=>{let i=e(),u=i==null||i===!1||i===!0?[]:Array.isArray(i)?i:[i],f=s.parentNode;if(f){for(let p of r)S(p),p.parentNode===f&&f.removeChild(p);r=[];for(let p of u){let h=v(p,f,t?._isSvg);if(h)if(h.nodeType===11){let w=Array.from(h.childNodes);f.insertBefore(h,s);for(let _ of w)r.push(_)}else f.insertBefore(h,s),r.push(h)}}});return o._dispose=c,s._dispose=c,l}if(Array.isArray(e)){let o=document.createDocumentFragment();for(let s of e){let r=v(s,t,n);r&&o.appendChild(r)}return o}return ne(e)&&typeof e.tag=="function"?Se(e,t,n):ne(e)?Ae(e,t,n):document.createTextNode(String(e))}var ke={get(e,t){if(t!=="_sig")return e._sig()[t]},has(e,t){return t==="_sig"?!1:t in e._sig()},ownKeys(e){return Reflect.ownKeys(e._sig())},getOwnPropertyDescriptor(e,t){if(t==="_sig")return;let n=e._sig();if(t in n)return{value:n[t],writable:!1,enumerable:!0,configurable:!0}}},g=[];function se(){return g[g.length-1]}Y(se);te(se);function Se(e,t,n){let{tag:o,props:s,children:r}=e;if(typeof o=="function"&&(o.prototype?.isReactComponent||o.prototype?.render)){let m=o;o=function(fe){return new m(fe).render()},o.displayName=m.displayName||m.name||"ClassComponent"}if(o==="__errorBoundary"||e.tag==="__errorBoundary")return Te(e,t);if(o==="__suspense"||e.tag==="__suspense")return Ne(e,t);if(o==="__portal"||e.tag==="__portal")return Me(e,t);let l=g[g.length-1]||null,c=null;if(l&&(c=l._errorBoundary||null,!c)){let m=l._parentCtx;for(;m;){if(m._errorBoundary){c=m._errorBoundary;break}m=m._parentCtx}}let i={hooks:[],hookIndex:0,effects:[],cleanups:[],mounted:!1,disposed:!1,Component:o,_parentCtx:l,_errorBoundary:c},u=document.createComment("c:start"),f=document.createComment("c:end");$.set(u,i),i._startComment=u,i._endComment=f;let p=document.createDocumentFragment();p._componentCtx=i,i._wrapper=u,re.add(i),d&&a?.onComponentMount&&a.onComponentMount(i);let h=r.length===0?void 0:r.length===1?r[0]:r,w;h!==void 0?w=s?Object.assign({},s,{children:h}):{children:h}:w=s?Object.assign({},s):{};let _=A(w);i._propsSignal=_;let x=new Proxy({_sig:_},ke);g.push(i);let D;try{D=o(x)}catch(m){if(g.pop(),!ee(m,i))throw console.error("[what] Uncaught error in component:",o.name||"Anonymous",m),m;return p.appendChild(u),p.appendChild(f),p}g.pop(),i.mounted=!0,i._mountCallbacks&&queueMicrotask(()=>{if(!i.disposed)for(let m of i._mountCallbacks)try{m()}catch(L){console.error("[what] onMount error:",L)}}),p.appendChild(u);let ae=Array.isArray(D)?D:[D];for(let m of ae){let L=v(m,p,n);L&&p.appendChild(L)}return p.appendChild(f),p}function Te(e,t){let{errorState:n,handleError:o,fallback:s,reset:r}=e.props,l=e.children,c=document.createComment("eb:start"),i=document.createComment("eb:end"),u={hooks:[],hookIndex:0,effects:[],cleanups:[],mounted:!1,disposed:!1,_parentCtx:g[g.length-1]||null,_errorBoundary:o,_startComment:c,_endComment:i};$.set(c,u);let f=document.createDocumentFragment();f._componentCtx=u,f.appendChild(c),f.appendChild(i);let p=C(()=>{let h=n();if(g.push(u),c.parentNode)for(;c.nextSibling&&c.nextSibling!==i;){let _=c.nextSibling;S(_),_.parentNode.removeChild(_)}let w;h?w=typeof s=="function"?[s({error:h,reset:r})]:[s]:w=l,w=Array.isArray(w)?w:[w];for(let _ of w){let x=v(_,t);x&&(i.parentNode?i.parentNode.insertBefore(x,i):f.insertBefore(x,i))}g.pop()});return u.effects.push(p),f}function Ne(e,t){let{boundary:n,fallback:o,loading:s}=e.props,r=e.children,l=document.createComment("sb:start"),c=document.createComment("sb:end"),i={hooks:[],hookIndex:0,effects:[],cleanups:[],mounted:!1,disposed:!1,_parentCtx:g[g.length-1]||null,_startComment:l,_endComment:c};$.set(l,i);let u=document.createDocumentFragment();u._componentCtx=i,u.appendChild(l),u.appendChild(c);let f=C(()=>{let h=s()?[o]:r,w=Array.isArray(h)?h:[h];if(g.push(i),l.parentNode)for(;l.nextSibling&&l.nextSibling!==c;){let _=l.nextSibling;S(_),_.parentNode.removeChild(_)}for(let _ of w){let x=v(_,t);x&&(c.parentNode?c.parentNode.insertBefore(x,c):u.insertBefore(x,c))}g.pop()});return i.effects.push(f),u}function Me(e,t){let{container:n}=e.props,o=e.children;if(!n)return console.warn("[what] Portal: target container not found"),document.createComment("portal:empty");let s={hooks:[],hookIndex:0,effects:[],cleanups:[],mounted:!1,disposed:!1,_parentCtx:g[g.length-1]||null},r=document.createComment("portal");r._componentCtx=s;let l=[];for(let c of o){let i=v(c,n);i&&(n.appendChild(i),l.push(i))}return s._cleanupCallbacks=[()=>{for(let c of l)S(c),c.parentNode&&c.parentNode.removeChild(c)}],r}function Ae(e,t,n){let{tag:o,props:s,children:r}=e,l=n||xe.has(o),c=l?document.createElementNS(Ce,o):document.createElement(o);s&&Le(c,s,{},l);let i=l&&o!=="foreignObject";for(let u=0;u<r.length;u++){let f=v(r[u],c,i);f&&c.appendChild(f)}return c._vnode=e,c}function Le(e,t,n,o){if(t){for(let s in t)if(!(s==="key"||s==="children")){if(s==="ref"){let r=t.ref;typeof r=="function"?r(e):r&&(r.current=e);continue}ie(e,s,t[s],o)}}}function ie(e,t,n,o){if(typeof n=="function"&&!(t.startsWith("on")&&t.length>2)&&t!=="ref"){if(e._propEffects||(e._propEffects={}),e._propEffects[t])try{e._propEffects[t]()}catch{}e._propEffects[t]=C(()=>{let s=n();ie(e,t,s,o)});return}if(t.startsWith("on")&&t.length>2){let s=t.slice(2),r=!1;s.endsWith("Capture")&&(s=s.slice(0,-7),r=!0);let l=s.toLowerCase(),c=r?l+"_capture":l,i=e._events?.[c];if(i&&i._original===n||(i&&e.removeEventListener(l,i,r),n==null))return;e._events||(e._events={});let u=p=>(p.nativeEvent||(p.nativeEvent=p),Z(()=>u._handler(p)));u._handler=n,u._original=n,e._events[c]=u;let f=n._eventOpts;e.addEventListener(l,u,f||r||void 0);return}if(t==="className"||t==="class"){o?e.setAttribute("class",n||""):e.className=n||"";return}if(t==="style"){if(typeof n=="string")e.style.cssText=n,e._prevStyle=null;else if(typeof n=="object"){let s=e._prevStyle||{};for(let r in s)r in n||(e.style[r]="");for(let r in n)e.style[r]=n[r]??"";e._prevStyle={...n}}return}if(t==="dangerouslySetInnerHTML"){e.innerHTML=n?.__html??"";return}if(t==="innerHTML"){if(n==null)return;if(n&&typeof n=="object"&&"__html"in n)e.innerHTML=n.__html??"";else{d&&console.warn("[what] innerHTML received a raw string. This is a security risk (XSS). Use innerHTML={{ __html: trustedString }} or dangerouslySetInnerHTML={{ __html: trustedString }} instead.");return}return}if(typeof n=="boolean"){n?e.setAttribute(t,""):e.removeAttribute(t);return}if(t.startsWith("data-")||t.startsWith("aria-")){e.setAttribute(t,n);return}if(o){n===!1||n==null?e.removeAttribute(t):e.setAttribute(t,n===!0?"":String(n));return}t in e?e[t]=n:e.setAttribute(t,n)}var E=null;function le(){return typeof document<"u"&&(E=document.createElement("div"),E.id="test-root",document.body.appendChild(E)),E}function Be(){E&&(E.innerHTML="",E.parentNode&&E.parentNode.removeChild(E),E=null)}function Je(e,t={}){let{container:n}=t,o=n||le();if(!o)throw new Error("No DOM container available. Are you running in Node.js without jsdom?");let s=W(e,o);return{container:o,unmount:s,getByText:r=>T(o,r),getByTestId:r=>o.querySelector(`[data-testid="${r}"]`),getByRole:r=>o.querySelector(`[role="${r}"]`),getAllByText:r=>ue(o,r),queryByText:r=>T(o,r),queryByTestId:r=>o.querySelector(`[data-testid="${r}"]`),debug:()=>console.log(o.innerHTML),findByText:(r,l)=>ce(()=>T(o,r),{timeout:l}),findByTestId:(r,l)=>ce(()=>o.querySelector(`[data-testid="${r}"]`),{timeout:l})}}function Xe(e,t){let n=le();if(!n)throw new Error("No DOM container available. Are you running in Node.js without jsdom?");let o={},s=null,r;return P(l=>{s=l;let c=F(e,t||{});r=W(c,n)}),{container:n,signals:new Proxy(o,{get(l,c){if(c in l)return l[c]},set(l,c,i){return l[c]=i,!0}}),update(){q()},unmount(){r&&r(),s&&s(),Be()},getByText:l=>T(n,l),getByTestId:l=>n.querySelector(`[data-testid="${l}"]`),queryByText:l=>T(n,l),debug:()=>console.log(n.innerHTML)}}function Qe(){q()}function Ye(e){let t=[],n=[],o=A,s=new Map,r=i=>{t.includes(i)||t.push(i)},l=i=>{n.includes(i)||n.push(i)},c;return P(i=>{c=i;let u=C(()=>{e()})}),c&&c(),{accessed:t,written:n}}function et(e,t){let n=[t],o=0,s=A(t,e),r=s.set;s.set=function(i){let u=typeof i=="function"?i(s.peek()):i;return Object.is(s.peek(),u)||(o++,n.push(u)),r(u)};let l=s,c=function(...i){if(i.length===0)return l();let u=typeof i[0]=="function"?i[0](l.peek()):i[0];return Object.is(l.peek(),u)||(o++,n.push(u)),l(u)};return c._signal=!0,c.peek=s.peek,c.set=s.set,c.subscribe=s.subscribe,s._debugName&&(c._debugName=s._debugName),s._subs&&(c._subs=s._subs),Object.defineProperty(c,"history",{get(){return n}}),Object.defineProperty(c,"setCount",{get(){return o}}),c.reset=function(i){let u=i!==void 0?i:t;n.length=0,n.push(u),o=0,l(u)},c}function T(e,t){let n=t instanceof RegExp?t:null,o=document.createTreeWalker(e,NodeFilter.SHOW_TEXT,null,!1);for(;o.nextNode();){let s=o.currentNode;if(n?n.test(s.textContent):s.textContent.includes(t))return s.parentElement}return null}function ue(e,t){let n=[],o=t instanceof RegExp?t:null,s=document.createTreeWalker(e,NodeFilter.SHOW_TEXT,null,!1);for(;s.nextNode();){let r=s.currentNode;(o?o.test(r.textContent):r.textContent.includes(t))&&n.push(r.parentElement)}return n}var tt={click(e){let t=new MouseEvent("click",{bubbles:!0,cancelable:!0,view:typeof window<"u"?window:void 0});return e.dispatchEvent(t),t},change(e,t){e.value=t;let n=new Event("input",{bubbles:!0});e.dispatchEvent(n);let o=new Event("change",{bubbles:!0});return e.dispatchEvent(o),o},input(e,t){e.value=t;let n=new Event("input",{bubbles:!0});return e.dispatchEvent(n),n},submit(e){let t=new Event("submit",{bubbles:!0,cancelable:!0});return e.dispatchEvent(t),t},focus(e){e.focus();let t=new FocusEvent("focus",{bubbles:!0});return e.dispatchEvent(t),t},blur(e){e.blur();let t=new FocusEvent("blur",{bubbles:!0});return e.dispatchEvent(t),t},keyDown(e,t,n={}){let o=new KeyboardEvent("keydown",{bubbles:!0,cancelable:!0,key:t,...n});return e.dispatchEvent(o),o},keyUp(e,t,n={}){let o=new KeyboardEvent("keyup",{bubbles:!0,cancelable:!0,key:t,...n});return e.dispatchEvent(o),o},mouseEnter(e){let t=new MouseEvent("mouseenter",{bubbles:!0});return e.dispatchEvent(t),t},mouseLeave(e){let t=new MouseEvent("mouseleave",{bubbles:!0});return e.dispatchEvent(t),t}};async function ce(e,t={}){let{timeout:n=1e3,interval:o=50}=t,s=Date.now();for(;Date.now()-s<n;){try{let r=e();if(r)return r}catch{}await new Promise(r=>setTimeout(r,o))}throw new Error(`waitFor timed out after ${n}ms`)}async function nt(e,t={}){let{timeout:n=1e3,interval:o=50}=t,s=Date.now(),r=e();if(!r)throw new Error("Element not found");for(;Date.now()-s<n;){if(r=e(),!r)return;await new Promise(l=>setTimeout(l,o))}throw new Error(`Element still present after ${n}ms`)}async function ot(e){let t=await e();return q(),await new Promise(n=>queueMicrotask(n)),await new Promise(n=>setTimeout(n,0)),t}function rt(e){let t=A(e),n=[e];return C(()=>{n.push(t())}),{signal:t,get value(){return t()},set value(o){t.set(o)},history:n,reset(){n.length=0,n.push(t())}}}function st(e="MockComponent"){let t=[];function n(o){return t.push({props:o,timestamp:Date.now()}),F("div",{"data-testid":`mock-${e}`},JSON.stringify(o,null,2))}return n.displayName=e,n.calls=t,n.lastCall=()=>t[t.length-1],n.reset=()=>{t.length=0},n}var it={toBeInTheDocument(e){if(!e||!e.parentNode)throw new Error("Expected element to be in the document")},toHaveTextContent(e,t){if(!e)throw new Error("Element not found");let n=e.textContent;if(!(t instanceof RegExp?t.test(n):n.includes(t)))throw new Error(`Expected "${n}" to contain "${t}"`)},toHaveAttribute(e,t,n){if(!e)throw new Error("Element not found");let o=e.getAttribute(t);if(n!==void 0&&o!==n)throw new Error(`Expected attribute "${t}" to be "${n}", got "${o}"`);if(n===void 0&&o===null)throw new Error(`Expected element to have attribute "${t}"`)},toHaveClass(e,t){if(!e)throw new Error("Element not found");if(!e.classList.contains(t))throw new Error(`Expected element to have class "${t}"`)},toBeVisible(e){if(!e)throw new Error("Element not found");let t=window.getComputedStyle(e);if(t.display==="none"||t.visibility==="hidden"||t.opacity==="0")throw new Error("Expected element to be visible")},toBeDisabled(e){if(!e)throw new Error("Element not found");if(!e.disabled)throw new Error("Expected element to be disabled")},toHaveValue(e,t){if(!e)throw new Error("Element not found");if(e.value!==t)throw new Error(`Expected value to be "${t}", got "${e.value}"`)}},ct={getByText:e=>T(document.body,e),getByTestId:e=>document.querySelector(`[data-testid="${e}"]`),getByRole:e=>document.querySelector(`[role="${e}"]`),getAllByText:e=>ue(document.body,e),queryByText:e=>T(document.body,e),queryByTestId:e=>document.querySelector(`[data-testid="${e}"]`),debug:()=>console.log(document.body.innerHTML)};export{ot as act,Be as cleanup,rt as createTestSignal,it as expect,tt as fireEvent,Qe as flushEffects,st as mockComponent,et as mockSignal,Je as render,Xe as renderTest,ct as screen,le as setupDOM,Ye as trackSignals,ce as waitFor,nt as waitForElementToBeRemoved};
|
|
2
2
|
//# sourceMappingURL=testing.min.js.map
|