weifuwu 0.76.0 → 0.77.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/README.md +36 -41
- package/dist/components/DatePicker/DatePicker.d.ts +1 -1
- package/dist/components/Tour/Tour.d.ts +1 -1
- package/dist/components/index.js +12 -12
- package/dist/components/style.css +17 -0
- package/dist/index.js +1215 -1224
- package/dist/scheduler/index.d.ts +7 -2
- package/dist/ui-dom/hooks/index.d.ts +0 -1
- package/dist/ui-dom/hooks/popup.d.ts +1 -10
- package/dist/ui-dom/hooks/stable.d.ts +1 -1
- package/dist/ui-dom/hooks/types.d.ts +0 -1
- package/dist/ui-dom/index.d.ts +1 -1
- package/dist/ui-dom/index.js +10 -10
- package/dist/ui-dom/jsx-runtime.js +1 -1
- package/dist/ui-dom/testing.js +1 -1
- package/dist/ui-dom/types.d.ts +29 -41
- package/dist/ui-dom/vdom/build.d.ts +10 -3
- package/dist/ui-dom/vdom/diff.d.ts +6 -7
- package/dist/ui-dom/vdom/index.d.ts +1 -1
- package/dist/ui-dom/vdom/mount.d.ts +14 -5
- package/dist/ui-dom/vdom/render.d.ts +2 -0
- package/dist/ui-dom/vdom/serve.d.ts +1 -1
- package/dist/ui-dom/vnode.d.ts +15 -10
- package/docs/components.md +4 -4
- package/docs/custom-components.md +78 -54
- package/docs/examples.md +35 -41
- package/docs/frontend-middleware.md +3 -4
- package/docs/frontend-ui-dom.md +21 -18
- package/docs/frontend.md +243 -168
- package/docs/mobile.md +2 -2
- package/docs/realtime.md +8 -3
- package/package.json +1 -1
- package/dist/ui-dom/focus-trap.d.ts +0 -4
- package/dist/ui-dom/scroll-lock.d.ts +0 -5
- package/dist/ui-dom/vdom/scheduler.d.ts +0 -13
|
@@ -8,10 +8,15 @@
|
|
|
8
8
|
* 依赖:queue(参数传入——触发后入队执行)
|
|
9
9
|
*/
|
|
10
10
|
import type { Context, Middleware } from '../types.ts';
|
|
11
|
+
import type { Redis } from '../db/contracts.ts';
|
|
11
12
|
import type { QueueClientModule } from '../queue/index.ts';
|
|
12
13
|
export interface SchedulerOptions {
|
|
13
|
-
/**
|
|
14
|
-
|
|
14
|
+
/**
|
|
15
|
+
* Redis 客户端(必传——模式 A 显式注入,对齐 queue({ redis })):
|
|
16
|
+
* 守护循环走 redis.createConnection() 独立连接(不占池——对齐 queue worker 阻塞读);
|
|
17
|
+
* 所有权在调用方:scheduler.close() 不关闭注入的 redis(只关守护连接)。
|
|
18
|
+
*/
|
|
19
|
+
redis: Redis;
|
|
15
20
|
/** key 前缀。默认 'wf:sched:'。 */
|
|
16
21
|
prefix?: string;
|
|
17
22
|
/** 守护循环扫描间隔 ms。默认 1000(延时任务精度上限)。 */
|
|
@@ -26,6 +26,5 @@ export { useDragDrop } from './events.ts';
|
|
|
26
26
|
export { usePopupPosition } from './popup.ts';
|
|
27
27
|
export { usePopup } from './popup.ts';
|
|
28
28
|
export { useOpen } from './popup.ts';
|
|
29
|
-
export { useDialog } from './popup.ts';
|
|
30
29
|
export { useChat } from './chat.ts';
|
|
31
30
|
export { useExternal } from './external.ts';
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* hooks/popup — 弹层 hooks
|
|
3
3
|
*
|
|
4
|
-
* usePopupPosition / usePopup / useOpen
|
|
4
|
+
* usePopupPosition / usePopup / useOpen
|
|
5
5
|
*/
|
|
6
6
|
import type { HookEnv } from './types.ts';
|
|
7
7
|
import type { PopupPositionOptions, PopupPosition, UsePopupOptions, UsePopupHandle } from '../types.ts';
|
|
@@ -26,12 +26,3 @@ export declare function useOpen(env: HookEnv, options: {
|
|
|
26
26
|
onFocus: () => void;
|
|
27
27
|
};
|
|
28
28
|
};
|
|
29
|
-
/** 全屏对话框组合器:退场状态机 + 滚动锁 + 焦点 trap(基于 usePresence) */
|
|
30
|
-
export declare function useDialog(env: HookEnv, options?: {
|
|
31
|
-
name?: string;
|
|
32
|
-
}): {
|
|
33
|
-
readonly phase: "closed" | "open" | "exit";
|
|
34
|
-
rootRef: (el: HTMLElement | null) => void;
|
|
35
|
-
panelRef: (el: HTMLElement | null) => void;
|
|
36
|
-
sync: (open: boolean) => "closed" | "open" | "exit";
|
|
37
|
-
};
|
|
@@ -20,7 +20,7 @@ export declare function useAnimationEnd(env: HookEnv, cb: () => void, opts?: {
|
|
|
20
20
|
export declare function useLongPress(env: HookEnv, options: UseLongPressOptions): UseLongPressHandle;
|
|
21
21
|
/**
|
|
22
22
|
* 通用显隐状态机:open → exit → closed(animationend 延迟卸载)。
|
|
23
|
-
*
|
|
23
|
+
* usePopup presence 模式基于它——状态机单点实现。
|
|
24
24
|
*/
|
|
25
25
|
export declare function usePresence(env: HookEnv, options?: {
|
|
26
26
|
name?: string;
|
package/dist/ui-dom/index.d.ts
CHANGED
|
@@ -30,6 +30,6 @@ export { ssrPage, ssrToString, serializeData } from './vdom/ssr.ts';
|
|
|
30
30
|
export { mountRoot, createVdomContext, mountCommand, unmountCommand, createCommandContainer } from './vdom/mount.ts';
|
|
31
31
|
export { buildVNode } from './vdom/build.ts';
|
|
32
32
|
export { renderValue } from './vdom/render.ts';
|
|
33
|
-
export {
|
|
33
|
+
export { createRenderer, type Renderer } from './vdom/mount.ts';
|
|
34
34
|
export { createStore } from './store.ts';
|
|
35
35
|
export type { ExternalStore } from './store.ts';
|
package/dist/ui-dom/index.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
function mn(e){let t=[],n=(e||"/").replace(/:(\w+)/g,(r,o)=>(t.push(o),"([^/]+)")).replace(/\*/g,".*");return{re:new RegExp(`^${n}$`),keys:t}}var me=class{_routes=[];_middlewares=[];_injections=[];_injected=!1;_mode;_notFound;constructor(t={}){this._mode=t.mode??"history"}get mode(){return this._mode}use(t,n){if(typeof t=="string"&&n){let r=this,o=t,s=async(a,d,l)=>{let u=d.__routePath??r.getPath(),i=null;return u===o?i="/":(o==="/"?u!=="/"&&u.startsWith("/"):u.startsWith(o+"/"))&&(i=u.slice(o.length)),i===null?l:async(c,y)=>{let w=await n._handle(i,c,y);return w===null?l(c,y):w}};return this._middlewares.push(s),this}return t.length<=1?(this._injections.push(t),this):(this._middlewares.push(t),this)}async _ensureInjected(t){if(!this._injected){this._injected=!0;for(let n of this._injections){let r=await n(t);r&&r!==t&&Object.assign(t,r)}}}get(t,n,r){return this._routes.push({path:t,handler:n,title:r?.title}),this}notFound(t){return this._notFound=t,this}getPath(){return this._getPath(void 0)}_getPath(t){let n=t?.location??(typeof window<"u"?window.location:null);return this._mode==="hash"?(n?.hash??"").replace(/^#/,"")||"/":n?.pathname??"/"}match(t){let n=null;for(let r of this._routes){let{re:o,keys:s}=mn(r.path),a=t.match(o);if(!a)continue;let d={};for(let l=0;l<s.length;l++)d[s[l]]=decodeURIComponent(a[l+1]);n={handler:r.handler,params:d,title:r.title};break}return n||(n={handler:this._notFound??(()=>null),params:{}}),n}async _handle(t,n,r){await this._ensureInjected(r);let o=this.match(t);o.title&&typeof document<"u"&&(document.title=o.title),r.params=o.params,r.route&&(r.route.params=o.params);let a=o.handler,d=r.__routePath;r.__routePath=t;try{for(let l=this._middlewares.length-1;l>=0;l--){let u=this._middlewares[l],i=a;a=await u(n,r,i)??i}return await a(n,r)}finally{r.__routePath=d}}async execute(t,n,r){await this._ensureInjected(n);let o=this.match(r);o.title&&typeof document<"u"&&(document.title=o.title),n.params=o.params,n.route&&(n.route.params=o.params);let a=o.handler;for(let d=this._middlewares.length-1;d>=0;d--){let l=this._middlewares[d],u=a;a=await l(t,n,u)??u}return await a(t,n)}};var L=Symbol("Fragment"),H=Symbol("Portal");function ye(e,t,n){return{type:e,props:Ke(t),key:n??void 0}}var yn=ye;function gn(e,t,n){return ye(e,t,n)}function W(e,t,...n){let r=Ke(t??{});return n.length>0&&(r.children=n.length===1?n[0]:n),{type:e,props:r,key:t?.key??void 0}}function Ke(e){if(!e)return{};let t={};for(let n of Object.keys(e))n!=="key"&&(t[n]=e[n]);return t}function Z(e,t){return{type:H,props:{children:e,portalKey:t},key:t??void 0,_placement:"remote"}}function P(){return{activeElement:()=>typeof document<"u"?document.activeElement:null,byId:e=>typeof document<"u"?document.getElementById(e):null,query:e=>typeof document<"u"?document.querySelector(e):null,queryAll:e=>typeof document<"u"?document.querySelectorAll(e):null,createElement:e=>typeof document<"u"?document.createElement(e):null,createElementNS:(e,t)=>typeof document<"u"?document.createElementNS(e,t):null,createDocumentFragment:()=>typeof document<"u"?document.createDocumentFragment():null,createComment:e=>typeof document<"u"?document.createComment(e):null,createTextNode:e=>typeof document<"u"?document.createTextNode(e):null,addEventListener:(e,t,n)=>{typeof window<"u"&&window.addEventListener(e,t,n)},removeEventListener:(e,t,n)=>{typeof window<"u"&&window.removeEventListener(e,t,n)},scrollTo:e=>{typeof window<"u"&&window.scrollTo(0,e)},matchMedia:e=>typeof window<"u"&&typeof window.matchMedia=="function"?window.matchMedia(e):null,visualViewport:()=>(typeof window<"u"?window:null)?.visualViewport??null,scrollingElement:()=>typeof document<"u"?document.scrollingElement:null,bodyElement:()=>typeof document<"u"?document.body:null,bodyAppend:e=>{typeof document<"u"&&document.body.appendChild(e)},bodyRemove:e=>{typeof document<"u"&&e.parentNode&&document.body.removeChild(e)},clearBody:()=>{typeof document<"u"&&(document.body.innerHTML="")},event:(e,t)=>{let n=typeof window<"u"?window:null,r=t&&(t.key||t.code)?"KeyboardEvent":t&&(t.clientX!==void 0||t.clientY!==void 0||t.pointerId!==void 0)?"PointerEvent":"Event";try{return new n[r](e,t)}catch{return new n.Event(e,t)}},dispatchEvent:(e,t)=>typeof e<"u"?e.dispatchEvent(t):!1,navigate:e=>{typeof window>"u"||(window.history.pushState(null,"",e),window.dispatchEvent(new PopStateEvent("popstate",{state:null})))},copyText:async e=>{let t=typeof window<"u"?window:null;if(t?.navigator?.clipboard?.writeText)try{return await t.navigator.clipboard.writeText(e),!0}catch{}try{if(typeof document>"u")return!1;let n=document.createElement("textarea");n.value=e,n.style.position="fixed",n.style.opacity="0",document.body.appendChild(n),n.select();let r=document.execCommand("copy");return document.body.removeChild(n),r}catch{return!1}},execCommand:(e,t)=>typeof document<"u"?document.execCommand(e,!1,t):!1,queryCommandState:e=>typeof document<"u"?document.queryCommandState(e):!1,queryCommandValue:e=>typeof document<"u"?document.queryCommandValue(e):"",selectionText:()=>typeof window<"u"?window.getSelection?.()?.toString()??null:null,getSelection:()=>typeof window<"u"?window.getSelection():null,viewportHeight:()=>typeof window<"u"?window.innerHeight:0,viewportWidth:()=>typeof window<"u"?window.innerWidth:0,pathname:()=>typeof window<"u"?window.location.pathname:"",createTreeWalker:(e,t)=>typeof document<"u"?document.createTreeWalker(e,t??NodeFilter.SHOW_ALL):null,scrollTop:()=>{let e=typeof document<"u"?document:null,t=typeof window<"u"?window:null;return e?.scrollingElement?.scrollTop??t?.scrollY??0},hash:()=>typeof window<"u"?window.location?.hash??"":"",setHash:e=>{typeof window<"u"&&(window.location.hash=e)},timeout:(e,t)=>typeof window<"u"?window.setTimeout(e,t):0,rootElement:()=>typeof document<"u"?document.documentElement:null,storageGet:e=>{try{return typeof window<"u"?window.localStorage?.getItem(e)??null:null}catch{return null}},storageSet:(e,t)=>{try{typeof window<"u"&&window.localStorage?.setItem(e,t)}catch{}}}}function hn(e,t,n=400){let r=!1,o=()=>{r||(r=!0,e.removeEventListener("animationend",o),clearTimeout(s),t())};e.addEventListener("animationend",o);let s=setTimeout(o,n)}function $(e,t){return Object.assign(Object.create(e),t)}function wn(e){let t={baseURL:e?.baseURL??"",headers:{"Content-Type":"application/json",...e?.headers}},n=e?.onRequest,r=e?.onResponse,o=e?.timeout??0;async function s(a,d,l,u){let i=t.baseURL+d,c={method:a,headers:{...t.headers,...u?.headers}},y=e?.token?.();y&&!c.headers.Authorization&&(c.headers.Authorization=`Bearer ${y}`);let w=o>0,h=!!u?.signal,m=null,p=null;(w||h)&&(m=new AbortController,c.signal=m.signal,w&&(p=setTimeout(()=>m.abort(new Error("Request timed out")),o)),h&&u.signal.addEventListener("abort",()=>m.abort())),l!==void 0&&a!=="GET"&&a!=="HEAD"&&(c.body=JSON.stringify(l));let f={url:i,init:c};n&&(f=n(f));try{let g=await fetch(f.url,f.init);if(r)return r(g);if(!g.ok){let C=await g.text().catch(()=>"");throw new ge(g.status,C||g.statusText)}let v=g.headers.get("content-length");if(g.status===204||v==="0")return;let E=(g.headers.get("content-type")||"").toLowerCase();return E.includes("application/json")||E.includes("json")?g.json():g.text()}finally{p&&clearTimeout(p)}}return a=>$(a,{api:{get:(l,u)=>s("GET",l,void 0,u),post:(l,u,i)=>s("POST",l,u,i),put:(l,u,i)=>s("PUT",l,u,i),patch:(l,u,i)=>s("PATCH",l,u,i),delete:(l,u)=>s("DELETE",l,void 0,u)}})}var ge=class extends Error{status;body;constructor(t,n){super(`API Error ${t}: ${n}`),this.name="ApiError",this.status=t,this.body=n}};function vn(e){try{let t=e.split(".");if(t.length!==3)return null;let n=t[1].replace(/-/g,"+").replace(/_/g,"/");return JSON.parse(atob(n))}catch{return null}}function bn(e){let t=vn(e);return t?.exp?t.exp*1e3-3e4<Date.now():!0}function Cn(e){let t=e?.storage??localStorage,n=e?.tokenKey??"weifuwu_token",r=e?.userKey??"weifuwu_user",o=e?.refreshTokenKey??"weifuwu_refresh",s=e?.refreshEndpoint??"/api/auth/refresh";return a=>{let d=t.getItem(n),l=t.getItem(r),u={token:d,user:l?JSON.parse(l):null,get isLoggedIn(){return this.token!==null},login(i,c,y){u.token=i,u.user=c,t.setItem(n,i),t.setItem(r,JSON.stringify(c)),y&&t.setItem(o,y)},logout(){u.token=null,u.user=null,t.removeItem(n),t.removeItem(r),t.removeItem(o)},setUser(i){u.user=i,t.setItem(r,JSON.stringify(i))},async refresh(){let i=t.getItem(o);if(!i)return!1;try{let c=await fetch(s,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({refreshToken:i})});if(!c.ok)return u.logout(),!1;let y=await c.json();return u.token=y.token,t.setItem(n,y.token),y.refreshToken&&t.setItem(o,y.refreshToken),!0}catch{return!1}}};return d&&bn(d)&&u.refresh().catch(()=>{}),$(a,{auth:u})}}function En(e={}){let t=e.url??"/ws",n=e.reconnectInterval??3e3,r=e.maxReconnect??10,o=e.pingInterval??3e4,s=e.pingTimeout??1e4;return a=>{let d=new Set,l=null,u=0,i=null,c=null,y=null,w=!1,h={isConnected:!1,onMessage:v=>(d.add(v),()=>{d.delete(v)}),send:v=>{l?.readyState===WebSocket.OPEN&&l.send(JSON.stringify(v))},_connect:m,close:()=>{w=!0,g(),l?.close(),l=null,h.isConnected=!1}};async function m(){if(!w)try{l=new WebSocket(t),l.onopen=()=>{h.isConnected=!0,u=0,p()},l.onmessage=v=>{try{let E=JSON.parse(v.data);for(let C of d)C(E)}catch{}f()},l.onclose=()=>{h.isConnected=!1,g(),!w&&u<r&&(u++,i=setTimeout(m,n*Math.min(u,5)))},l.onerror=()=>{l?.close()}}catch{w||(i=setTimeout(m,n))}}function p(){o<=0||(c=setInterval(()=>{l?.readyState===WebSocket.OPEN&&l.send(JSON.stringify({type:"ping"})),y=setTimeout(()=>{l?.close()},s)},o))}function f(){clearTimeout(y)}function g(){clearInterval(c),clearTimeout(y),clearTimeout(i)}return m(),$(a,{ws:h})}}function he(e,t){if(e===t)return!0;let n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(let o of n)if(e[o]!==t[o])return!1;return!0}async function ze(e,t,n,r){e._id||(r?.reuse?._id?e._id=r.reuse._id:e._id=n.nextId(),n.idRegistry.set(e._id,e)),r?.reuse&&(r.reuse._parentNode&&(e._parentNode=r.reuse._parentNode),r.reuse._refNode&&(e._refNode=r.reuse._refNode));let o=Object.create(t);o.ui=Object.create(t.ui);let s=o.ui;if(s._selfId=e._id,s._selfVNode=e,s.render=function(a){return a==null&&e._id?t.ui.render([e._id]):t.ui.render(a)},typeof e._render!="function"&&typeof r?.reuse?._render=="function"&&(e._render=r.reuse._render),typeof e._render!="function"){t.ui?.setMounting?.(!0);let a;try{a=await e.type(e.props??{},o)}finally{t.ui?.endMounting?.()}if(typeof a!="function")throw new Error(`Component ${e.type.name||"anonymous"} must return a render function. Use (init_props, ctx) => (props) => VNode pattern.`);e._render=a}return{renderFn:e._render,childCtx:o}}async function _(e,t,n,r,o){if(e==null||typeof e=="boolean"||typeof e=="string"||typeof e=="number")return e;if(Array.isArray(e)){let l=Array.isArray(n)?n:[];return await Promise.all(e.map((u,i)=>_(u,t,l[i],r,o))),e}let s=e,a=r??t.__registry,d=n!=null&&typeof n=="object"&&!Array.isArray(n)&&n.type===s.type?n:null;if(typeof s.type=="function"){let{childCtx:l}=await ze(s,t,a,{reuse:d??void 0}),u=he(d?.props??{},s.props??{});if(o?.force||!u||d?._child==null){let i=await _(s._render(s.props),l,d?._child,a);s._child=i??null}else s._child=d._child;return s}if(s.type===L){let l=await _(s.props?.children??null,t,d?._child??d?.props?.children,a);return s._child=l??null,s}if(typeof s.type=="string"||typeof s.type=="symbol"){let l=await _(s.props?.children??null,t,d?.props?.children,a);return s._child=l??null,s}return s}var we=new Set(["svg","path","circle","rect","line","polyline","polygon","g","text","defs","use","clipPath"]),xn=/^on[A-Z]/,Tn=new Set(["zIndex","opacity","lineHeight","fontWeight","fontSizeAdjust","flex","flexGrow","flexShrink","order","zoom","aspectRatio","gridRow","gridColumn","scale","rotate","animationIterationCount","columnCount","fillOpacity","strokeOpacity","stopOpacity","floodOpacity"]);function G(e,t,n){if(n==null||n===!1)return;let r=e.ownerDocument?.defaultView;if(t==="class"||t==="className"){if(typeof n=="object")for(let[o,s]of Object.entries(n))s&&e.classList.add(o);else e.setAttribute("class",String(n));return}if(t==="style"){if(typeof n=="string")e.setAttribute("style",n);else{let o=e.style;for(let[s,a]of Object.entries(n))a==null?o[s]="":s.startsWith("--")?o.setProperty(s,String(a)):typeof a=="number"&&!Tn.has(s)?o[s]=`${a}px`:o[s]=String(a)}return}if(t==="ref"){if(typeof n=="function")try{n(e)}catch(o){console.error("[weifuwu] ref error",o)}return}if(xn.test(t)){let o=t.slice(2).toLowerCase();e.addEventListener(o,n);return}if(t==="value"){e.value=n;return}if(t==="indeterminate"){e.indeterminate=!!n;return}if(t==="innerHTML"){e.innerHTML=String(n??"");return}if(t==="draggable"||t==="contenteditable"||t==="spellcheck"){e.setAttribute(t,n?"true":"false");return}if(t.startsWith("aria-")&&typeof n=="boolean"){e.setAttribute(t,n?"true":"false");return}if(n===!0){e.setAttribute(t,"");return}try{e[t]=n,e.getAttribute(t)!==String(n)&&e.setAttribute(t,String(n))}catch{e.setAttribute(t,String(n))}}function k(e,t,n){let r=t?.browser??n;if(!r)throw new Error("[vdom] renderValue requires browser env (ctx.browser)");if(e==null||typeof e=="boolean")return null;if(typeof e=="string"||typeof e=="number")return r.createTextNode(String(e));if(Array.isArray(e)){let l=r.createDocumentFragment();if(!l)return null;for(let u of e){let i=k(u,t,r);i!=null&&l.appendChild(i)}return l}let o=e;if(o.type===H){let l=r.bodyElement();if(!l)return null;let u=l.querySelector("#__wf_portal");u||(u=r.createElement("div"),u&&(u.id="__wf_portal",l.appendChild(u)));let i=r.createElement("div");if(i){i.setAttribute("data-portal",String(o.props?.portalKey??"wf"));let c=k(o.props?.children??null,t,r);c!=null&&i.appendChild(c),u&&u.appendChild(i),o._remoteEl=i}return null}if(o.type===L){let l=r.createDocumentFragment();if(!l)return null;let u=(Array.isArray(o.props?.children)?o.props.children:[o.props?.children]).flat(1/0);for(let i of u){let c=k(i,t,r);c!=null&&l.appendChild(c)}return o._childNodes=Array.from(l.childNodes),l}if(typeof o.type=="function"){if(typeof o._render!="function")throw new Error(`[vdom] component ${o.type.name||"anonymous"} not built (missing _render) \u2014 buildVNode must run before renderValue`);let l=o._child!==void 0?o._child:o._render(o.props);if(l==null)return o._child=null,null;let u=(Array.isArray(l)||typeof l=="object"&&typeof l.type=="function",l);o._child=u,typeof u=="object"&&!Array.isArray(u)&&(u._parentVNode=o);let i=k(u,t,r);return i&&(o._refNode=i),i}let s=o.type,a=we.has(s)?r.createElementNS("http://www.w3.org/2000/svg",s):r.createElement(s);if(!a)return null;o.el=a;let d;for(let[l,u]of Object.entries(o.props??{}))if(!(l==="children"||l==="key")){if(l==="value"&&a instanceof HTMLSelectElement){d=u;continue}G(a,l,u)}if(!("innerHTML"in(o.props??{}))){let l=(Array.isArray(o.props?.children)?o.props.children:[o.props?.children]).flat(1/0);for(let u of l){let i=k(u,t,r);if(i!=null&&(a.appendChild(i),u&&typeof u=="object"&&!Array.isArray(u)&&typeof u.type=="function")){let c=u;c._parentNode||(c._parentNode=a,c._refNode=i)}}}return d!==void 0&&(a.value=String(d)),a}var Pn=0;function ve(){return{idRegistry:new Map,unmountHooks:[],nextId:()=>`_wf_${Pn++}`}}function be(e,t){return e.unmountHooks.push(t),()=>{let n=e.unmountHooks.indexOf(t);n>=0&&e.unmountHooks.splice(n,1)}}function ee(e,t){for(let n of[...e.unmountHooks])n(t);e.idRegistry.delete(t),e.idRegistry.delete(`custom:${t}`)}function kn(e,t,n,r){try{e(t)}catch(o){console.error(`[weifuwu] ref ${n} error in <${r??"anonymous"}>`,o)}}function N(e,t){if(e==null||typeof e!="object")return;let n=e;if(n._id){if(n._customId&&t.idRegistry.delete(n._customId),t.idRegistry.delete(n._id),t.unmountHooks.length>0){let r=[...t.unmountHooks];for(let o of r)o(n._id);if(n._customId)for(let o of r)o(n._customId)}n._id=void 0,n._customId=void 0,n._render=void 0,n._parentNode=void 0,n._refNode=void 0}if(n._child!=null){if(Array.isArray(n._child))for(let r of n._child)r&&typeof r=="object"&&N(r,t);else N(n._child,t);n._child=void 0}if(n.props?.children&&typeof n.type=="string"){let r=Array.isArray(n.props.children)?n.props.children:[n.props.children];for(let o of r)o&&typeof o=="object"&&N(o,t)}if(typeof n.props?.ref=="function"&&kn(n.props.ref,null,"cleanup"),n._remoteEl){let r=n._child;if(r!=null)if(Array.isArray(r))for(let o of r)o&&typeof o=="object"&&N(o,t);else typeof r=="object"&&N(r,t);n._remoteEl.remove(),n._remoteEl=void 0}}function te(e,t){if(t&&typeof e.type=="function"&&e._id){try{N(e,t)}catch(n){console.error("[weifuwu] ref cleanup error",n)}ee(t,e._id)}}function Ge(e){if(e==null||typeof e=="boolean")return[];let t=[],n=Array.isArray(e)?[...e]:[e];for(;n.length>0;){let r=n.shift();Array.isArray(r)?n.unshift(...r):t.push(r)}return t}function F(e){if(e==null||typeof e!="object"||Array.isArray(e))return;let t=e;return t._placement==="remote"?t.props?.portalKey:t.key}function O(e,t,n,r,o){if(typeof r=="string"||typeof r=="number"){if(typeof n=="string"||typeof n=="number"){if(String(n)!==String(r)){let c=e.ownerDocument.createTextNode(String(r));return t?.parentNode?t.parentNode.replaceChild(c,t):e.appendChild(c),c}return t}let i=e.ownerDocument.createTextNode(String(r));return t?.parentNode?t.parentNode.replaceChild(i,t):e.appendChild(i),i}if(r==null||typeof r=="boolean"){if(n&&typeof n=="object"&&!Array.isArray(n)&&n.type===H){let i=n._remoteEl;try{N(n.props?.children,o.registry)}catch(c){console.error("[weifuwu] portal ref cleanup error",c)}return i?.parentNode?.removeChild(i),null}if(n&&typeof n=="object"&&!Array.isArray(n))if(typeof n.type=="function")te(n,o.registry);else try{N(n,o.registry)}catch(i){console.error("[weifuwu] ref cleanup error",i)}return t?.parentNode&&t.parentNode.removeChild(t),null}if(Array.isArray(r)){let i=e.ownerDocument.createDocumentFragment(),c=ne(e,n,r,o,t?[t]:void 0);for(let y of c)y&&i.appendChild(y);return t?.parentNode?i.contains(t)?e.appendChild(i):t.parentNode.replaceChild(i,t):e.appendChild(i),i}let s=r;if(s.type===H){let i=n&&typeof n=="object"&&!Array.isArray(n)?n:null;if(i?.type===H){let c=i._remoteEl;if(c){let y=i.props?.children??null,w=s.props?.children??null;ne(c,y,w,o)}return s._remoteEl=i._remoteEl,null}return k(s,o,o.browser??P()),null}if(s.type===L){let c=(n&&typeof n=="object"&&!Array.isArray(n)?n:null)?._childNodes,y=ne(e,n,s.props?.children??null,o,c);return s._childNodes=y.filter(Boolean),t?.parentNode&&t.nodeType===8&&t.parentNode.removeChild(t),t&&t.nodeType===1?t:y[0]??null}if(typeof s.type=="function"){if(typeof s._render!="function")throw new Error(`[vdom] component ${s.type.name||"anonymous"} not built in diff \u2014 buildVNode must run before patchValue`);let i=n&&typeof n=="object"&&!Array.isArray(n)?n:null;i?.type===s.type&&i._id&&(s._id=i._id,o.registry.idRegistry.set(s._id,s)),s._parentNode=e,t&&(s._refNode=t);let c=i?.type===s.type,y=he(i?.props??{},s.props??{}),w=o.getCtxVersion?o.getCtxVersion(s._id??""):void 0,h=w===void 0||(o.ctxVersion??0)===w;if(i&&c&&y&&h&&i._child!==void 0)return s._child=i._child,t;let m;s._child!==void 0?m=s._child:(m=s._render(s.props),s._child=m);let p=O(e,t,i?._child,m,o);return p&&(s._refNode=p),p}let a=n&&typeof n=="object"&&!Array.isArray(n)?n:null,d=a?.type??null,l=s.type;if(t&&t.nodeType===1&&d===l){let i=t;return s.el=i,Nn(i,a?.props??{},s.props??{}),ne(i,a?.props?.children??null,s.props?.children??null,o),i}let u=k(s,o,o.browser??P());if(u==null)return null;if(t?.parentNode)if(n!=null&&typeof n!="boolean"){if(typeof n=="object"&&!Array.isArray(n))try{N(n,o.registry)}catch(i){console.error("[weifuwu] ref cleanup error",i)}t.parentNode.replaceChild(u,t)}else t.parentNode.insertBefore(u,t);else e.appendChild(u);return u}function Nn(e,t,n){let r=new Set([...Object.keys(t),...Object.keys(n)]);for(let o of r){if(o==="children"||o==="key")continue;let s=t[o],a=n[o];if(s!==a){if(o.startsWith("on")){typeof s=="function"&&e.removeEventListener(o.slice(2).toLowerCase(),s),a!=null&&a!==!1&&e.addEventListener(o.slice(2).toLowerCase(),a);continue}if(a==null||a===!1){if(o==="class"||o==="className")e.removeAttribute("class");else if(o.startsWith("on"))e.removeEventListener(o.slice(2).toLowerCase(),s);else if(o==="ref"){if(typeof s=="function")try{s(null)}catch(d){console.error("[weifuwu] ref cleanup error",d)}}else if(o==="value")e.value="";else if(o==="indeterminate")e.indeterminate=!1;else{e.removeAttribute(o);try{delete e[o]}catch{}}continue}G(e,o,a)}}}function ne(e,t,n,r,o){let s=Ge(t),a=Ge(n),d=o??Array.from(e.childNodes);if(a.some(m=>F(m)!==void 0)){for(let m=0;m<a.length;m++){let p=a[m];p&&typeof p=="object"&&!Array.isArray(p)&&F(p)===void 0&&(p.key=`pos:${m}`)}for(let m=0;m<s.length;m++){let p=s[m];p&&typeof p=="object"&&!Array.isArray(p)&&F(p)===void 0&&(p.key=`pos:${m}`)}}let u=s.map((m,p)=>{if(m==null||typeof m!="object"||Array.isArray(m))return d[p]??null;let f=m;return f._placement==="remote"?f._remoteEl??null:f.type===L?f._childNodes?.[0]??null:f._refNode??f.el??null});if(!a.some(m=>{if(m==null||typeof m!="object"||Array.isArray(m))return!1;let p=m;return p._placement!=="remote"&&p.key!==void 0})){let m=Math.max(s.length,a.length),p=[];for(let f=0;f<m;f++){let g=f<s.length?s[f]:null,v=f<a.length?a[f]:null;if(v==null||typeof v=="boolean"){if(g&&typeof g=="object"&&!Array.isArray(g))if(typeof g.type=="function")te(g,r.registry);else try{N(g,r.registry)}catch(x){console.error("[weifuwu] ref cleanup error",x)}let C=u[f];C?.parentNode&&C.parentNode.removeChild(C),p.push(null);continue}if(g==null||typeof g=="boolean"){let C=k(v,r,r.browser??P());if(C==null){p.push(null);continue}let x=null;for(let S=f+1;S<u.length;S++){let R=u[S];if(R&&R.parentNode===e){x=R;break}}x&&x.parentNode===e?e.insertBefore(C,x):e.appendChild(C),p.push(C);continue}let E=O(e,u[f],g,v,r);p.push(E)}return p}let c=new Map;s.forEach((m,p)=>{let f=F(m);f!==void 0&&m&&typeof m=="object"&&!Array.isArray(m)&&c.set(f,{vnode:m,nodes:[u[p]??null].filter(Boolean),index:p})});let y=[],w=new Set,h=null;return a.forEach((m,p)=>{let f=F(m),g=m;if(f!==void 0&&c.has(f)){let v=c.get(f),E=v.nodes[0]??null;w.add(f);let C=O(e,E,v.vnode,g,r);C&&C.parentNode===e&&h&&C.previousSibling!==h&&e.insertBefore(C,h.nextSibling),y.push(C),C&&(h=C)}else if(g?._placement==="remote"){let v=s[p]??null,E=O(e,u[p]??null,v,g,r);y.push(E),E&&(h=E)}else{let v=k(g,r,r.browser??P());y.push(v),v!=null&&(e.appendChild(v),h&&v.previousSibling!==h&&e.insertBefore(v,h.nextSibling),h=v)}}),s.forEach((m,p)=>{let f=F(m),g=m&&typeof m=="object"&&!Array.isArray(m)&&typeof m.type=="function";if(f!==void 0&&!w.has(f)){if(m&&typeof m=="object"&&!Array.isArray(m))if(g)te(m,r.registry);else try{N(m,r.registry)}catch(E){console.error("[weifuwu] ref cleanup error",E)}let v=u[p];v?.parentNode&&v.parentNode.removeChild(v)}else if(f===void 0){if(m&&typeof m=="object"&&!Array.isArray(m))if(g)te(m,r.registry);else try{N(m,r.registry)}catch(E){console.error("[weifuwu] ref cleanup error",E)}let v=u[p];v?.parentNode&&v.parentNode.removeChild(v)}}),y}function Ce(e){let t=Promise.resolve();async function n(s){let a=e.registry.idRegistry.get(s);if(!(!a||typeof a._render!="function"))try{let d={browser:e.ctx.browser,registry:e.registry,ctxVersion:e.getCtxVersion?.(s)??0,getCtxVersion:e.getCtxVersion},l=a._render(a.props),u=await _(l,e.ctx,a._child,e.registry)??null,i=a._child;a._child=u;let c=a._parentNode??a._refNode?.parentNode??e.rootEl??null;if(c){let y=O(c,a._refNode??null,i,u,d);y?a._refNode=y:a._refNode=null}}catch(d){e.onError?e.onError(d):console.error("[weifuwu] render error:",d?.stack??d)}}function r(s){let a=e.registry.idRegistry.get(s);if(!a||typeof a._render!="function")return Promise.resolve();let d=t.then(()=>n(s));return t=d.catch(()=>{}),d}function o(s){if(s==null){let a=e.ctx.ui?._selfId;return a?r(a):Promise.resolve()}return Promise.all(s.map(a=>r(a))).then(()=>{})}return{render:o}}var Ye=P();function Xe(e,t="bottom",n=6,r=!0){switch(t){case"bottom":return{top:e.bottom+n,left:r?e.left+e.width/2:e.left};case"top":return{top:e.top-n,left:r?e.left+e.width/2:e.left};case"left":return{top:r?e.top+e.height/2:e.top,left:e.left-n};case"right":return{top:r?e.top+e.height/2:e.top,left:e.right+n}}}function oe(e,t,n=8){if(!t)return e;let r=t.getBoundingClientRect();if(r.width===0&&r.height===0)return e;let o=Number.parseFloat(t.style.top)||r.top,s=Number.parseFloat(t.style.left)||r.left,a=e.top-o,d=e.left-s,l={top:r.top+a,bottom:r.bottom+a,left:r.left+d,right:r.right+d},u=Ye.viewportWidth(),i=Ye.viewportHeight(),c=e.top,y=e.left;return l.bottom>i-n&&(c=Math.max(n,c-(l.bottom-(i-n)))),l.top<n&&(c=Math.max(n,c+(n-l.top))),l.right>u-n&&(y=Math.max(n,y-(l.right-(u-n)))),l.left<n&&(y=Math.max(n,y+(n-l.left))),{top:c,left:y,width:e.width}}var B=P();function Je(e){let t=new Map,n=new Map,r=!1,o=0;function s(){o||(o=requestAnimationFrame(()=>{o=0;let i=[];for(let[c,y]of t){if(!y.isOpen())continue;let w=y.getEl();if(!w)continue;let h=w.getBoundingClientRect();if(h.width===0&&h.height===0)continue;let m=y.compute(h);Object.assign(y.pos,oe(m,y.panel?.(),y.margin)),i.push(c)}for(let[c,y]of n){let w=y.getScroller(),h=w instanceof Window?B.scrollingElement()?.scrollTop??B.scrollTop():w.scrollTop??0;h!==y.handle.y&&(y.handle.y=h,i.push(c))}i.length>0&&e(i)}))}function a(){r||(r=!0,B.addEventListener("scroll",s,{capture:!0,passive:!0}),B.addEventListener("resize",s))}function d(){r&&(B.removeEventListener("scroll",s,{capture:!0}),B.removeEventListener("resize",s),r=!1)}function l(i){for(let c of[...t.keys()])(c.startsWith(`popup:${i}:`)||c===`popup:${i}`||c===i)&&t.delete(c);n.delete(i)}function u(){d(),o&&(cancelAnimationFrame(o),o=0),t.clear(),n.clear()}return{popupTrackers:t,scrollTrackers:n,schedulePopupRecompute:s,ensurePopupListeners:a,destroyPopupListeners:d,cleanupTrackers:l,destroy:u}}function Ee(e,t,n){return o=>{o?t(o):n?.()}}function Y(e){return typeof window<"u"&&!!window.matchMedia?.("(hover: hover)").matches}function re(e){return typeof window<"u"&&!!window.matchMedia?.("(prefers-reduced-motion: reduce)").matches}function xe(e,t,n){let r=null,o=()=>{t(),n?.once&&r&&r.removeEventListener("animationend",o)};return a=>{a?(r=a,a.addEventListener("animationend",o)):r&&(r.removeEventListener("animationend",o),r=null)}}function Te(e,t){let{onLongPress:n,duration:r=500}=t,o,s=0,a=0,d=null,l=()=>{clearTimeout(o),o=void 0},u=e.selfId();if(u){let i=e.onUnmount(c=>{c===u&&(l(),i())})}return{onPointerDown:i=>{s=i.clientX??0,a=i.clientY??0,d=i,l(),o=setTimeout(()=>{o=void 0,d&&n(d)},r)},onPointerUp:l,onPointerLeave:l,onPointerMove:i=>{let c=Math.abs((i.clientX??0)-s),y=Math.abs((i.clientY??0)-a);(c>10||y>10)&&l()},onContextMenu:i=>{i.preventDefault(),n(i)}}}function X(e,t){let n=e.selfId(),r="closed",o,s=()=>{r="closed",n?e.render([n]):e.render()};return{get phase(){return r},ref:d=>{d?o||(o=()=>{r==="exit"&&s()},d.addEventListener("animationend",o)):o=void 0},sync:d=>(d?r="open":r==="open"&&(r="exit"),r)}}function Pe(e,t,n){let r=e.selfId(),o=re(e),s=n?.duration??400,a=n?.ease==="linear"?y=>y:y=>1-Math.pow(1-y,3),d,l=t,u={value:o?t:0,reset:()=>{}},i=()=>{r?e.render([r]):e.render()},c=y=>{if(l=y,o){u.value=y,i();return}if(y===u.value)return;d&&cancelAnimationFrame(d);let w=u.value,h=performance.now(),m=p=>{let f=Math.min(1,(p-h)/s);u.value=Math.round(w+(y-w)*a(f)),f<1?(d=requestAnimationFrame(m),i()):(d=void 0,i())};d=requestAnimationFrame(m)};if(u.reset=y=>{y===l&&d||c(y)},r){let y=e.onUnmount(w=>{w===r&&(d&&(cancelAnimationFrame(d),d=void 0),y())})}return queueMicrotask(()=>c(t)),u}function ke(e,t,n){let r=e.selfId(),o=e.browser,s=`media:${r}:${t}`;if(!e.mediaRegistry.has(s)){let a=o.matchMedia(t);n(a.matches);let d=u=>n(u.matches);a.addEventListener("change",d),e.mediaRegistry.set(s,{mql:a,handler:d});let l=e.onUnmount(u=>{if(u!==r)return;let i=e.mediaRegistry.get(s);if(i?.mql&&i.handler)try{i.mql.removeEventListener("change",i.handler)}catch{}e.mediaRegistry.delete(s),l()})}}function Ne(e,t,n){let r=e.browser,o=typeof t=="function"?{mobile:"(max-width: 639px)",tablet:"(min-width: 640px) and (max-width: 1023px)",desktop:"(min-width: 1024px)"}:t,s=typeof t=="function"?t:n,a=e.selfId(),d=`bp:${a}`;function l(){for(let[u,i]of Object.entries(o))if(r.matchMedia(i).matches)return u;return Object.keys(o)[0]??""}if(!e.mediaRegistry.has(d)){s(l());let u=[];for(let c of Object.values(o)){let y=r.matchMedia(c),w=()=>s(l());y.addEventListener("change",w),u.push({mql:y,handler:w})}e.mediaRegistry.set(d,{mqls:u});let i=e.onUnmount(c=>{if(c!==a)return;let y=e.mediaRegistry.get(d);if(y?.mqls)for(let w of y.mqls)try{w.mql.removeEventListener("change",w.handler)}catch{}e.mediaRegistry.delete(d),i()})}}function Ve(e){let t=e.selfId(),n=e.browser,r={height:n.viewportHeight(),offsetTop:0,keyboardOpen:!1},o=()=>{t?e.render([t]):e.render()},s=()=>{let d=n.visualViewport();r.height=d?.height??n.viewportHeight(),r.offsetTop=d?.offsetTop??0,r.keyboardOpen=r.height<n.viewportHeight()*.9,o()},a=n.visualViewport();if(a?.addEventListener?(a.addEventListener("resize",s),a.addEventListener("scroll",s)):n.addEventListener("resize",s),t){let d=e.onUnmount(l=>{l===t&&(a?.removeEventListener?(a.removeEventListener("resize",s),a.removeEventListener("scroll",s)):n.removeEventListener("resize",s),d())})}return r}function _e(e,t){let n=e.selfId(),r={isIn:!1,ready:!1,observe:l,refresh:u,disconnect:i},o=null,s=null,a=()=>{n?e.render([n]):e.render()};function d(){if(s?.disconnect(),s=null,!o)return;let c=typeof t.rootMargin=="function"?t.rootMargin():t.rootMargin,y=typeof t.threshold=="function"?t.threshold():t.threshold;s=new IntersectionObserver(w=>{let h=w[w.length-1];if(!h)return;let m=h.isIntersecting,p=m!==r.isIn,f=!r.ready;r.isIn=m,r.ready=!0,t.onChange?.(h,m),(p||f)&&a()},{root:t.root?t.root():null,rootMargin:c??"0px",threshold:y??0}),s.observe(o)}function l(c){o=c,c?d():(s?.disconnect(),s=null,r.isIn=!1)}function u(){d()}function i(){s?.disconnect(),s=null}if(n){let c=e.onUnmount(y=>{y===n&&(i(),c())})}return r}function Se(e,t){let n=e.selfId(),r=e.browser,o={y:0,refresh(){let d=s.getScroller();o.y=d instanceof Window?r.scrollingElement()?.scrollTop??r.scrollTop():d.scrollTop??0}},s={handle:o,getScroller:t.getScroller??(()=>window)};if(!n)return o.refresh(),o;e.scrollTrackers.set(n,s),e.ensurePopupListeners(),o.refresh();let a=e.onUnmount(d=>{d===n&&(e.scrollTrackers.delete(n),a())});return o}function se(e,t){let n=e.selfId(),r=t.value!==void 0;if(r&&!t.onChange&&t.name&&(e.warned.has(t.name)||(e.warned.add(t.name),console.warn(`[weifuwu/${t.name}] \u53D7\u63A7\u6A21\u5F0F\uFF08value \u5DF2\u4F20\uFF09\u4F46\u672A\u63D0\u4F9B onChange\uFF0C\u4EA4\u4E92\u65E0\u6CD5\u751F\u6548\u3002
|
|
2
|
-
\u975E\u53D7\u63A7\uFF1A\u53BB\u6389 value\uFF1B\u53D7\u63A7\uFF1A\u4F20\u5165 onChange={(v) => setValue(v)}`))),!r&&
|
|
3
|
-
\u975E\u53D7\u63A7\uFF1A\u53BB\u6389 open\uFF1B\u53D7\u63A7\uFF1A\u4F20\u5165 onOpenChange={(o) => setOpen(o)}`));let o=()=>r?!!
|
|
1
|
+
function yn(e){let n=[],t=(e||"/").replace(/:(\w+)/g,(r,o)=>(n.push(o),"([^/]+)")).replace(/\*/g,".*");return{re:new RegExp(`^${t}$`),keys:n}}var be=class{_routes=[];_middlewares=[];_injections=[];_injected=!1;_mode;_notFound;constructor(n={}){this._mode=n.mode??"history"}get mode(){return this._mode}use(n,t){if(typeof n=="string"&&t){let r=this,o=n,s=async(i,l,u)=>{let d=l.__routePath??r.getPath(),a=null;return d===o?a="/":(o==="/"?d!=="/"&&d.startsWith("/"):d.startsWith(o+"/"))&&(a=d.slice(o.length)),a===null?u:async(c,p)=>{let w=await t._handle(a,c,p);return w===null?u(c,p):w}};return this._middlewares.push(s),this}return n.length<=1?(this._injections.push(n),this):(this._middlewares.push(n),this)}async _ensureInjected(n){if(!this._injected){this._injected=!0;for(let t of this._injections){let r=await t(n);r&&r!==n&&Object.assign(n,r)}}}get(n,t,r){return this._routes.push({path:n,handler:t,title:r?.title}),this}notFound(n){return this._notFound=n,this}getPath(){return this._getPath(void 0)}_getPath(n){let t=n?.location??(typeof window<"u"?window.location:null);return this._mode==="hash"?(t?.hash??"").replace(/^#/,"")||"/":t?.pathname??"/"}match(n){let t=null;for(let r of this._routes){let{re:o,keys:s}=yn(r.path),i=n.match(o);if(!i)continue;let l={};for(let u=0;u<s.length;u++)l[s[u]]=decodeURIComponent(i[u+1]);t={handler:r.handler,params:l,title:r.title};break}return t||(t={handler:this._notFound??(()=>null),params:{}}),t}async _handle(n,t,r){await this._ensureInjected(r);let o=this.match(n);o.title&&typeof document<"u"&&(document.title=o.title),r.params=o.params,r.route&&(r.route.params=o.params);let i=o.handler,l=r.__routePath;r.__routePath=n;try{for(let u=this._middlewares.length-1;u>=0;u--){let d=this._middlewares[u],a=i;i=await d(t,r,a)??a}return await i(t,r)}finally{r.__routePath=l}}async execute(n,t,r){await this._ensureInjected(t);let o=this.match(r);o.title&&typeof document<"u"&&(document.title=o.title),t.params=o.params,t.route&&(t.route.params=o.params);let i=o.handler;for(let l=this._middlewares.length-1;l>=0;l--){let u=this._middlewares[l],d=i;i=await u(n,t,d)??d}return await i(n,t)}};var L=Symbol("Fragment"),H=Symbol("Portal");function ve(e,n,t){return{type:e,props:Ge(n),key:t??void 0}}var gn=ve;function hn(e,n,t){return ve(e,n,t)}function j(e,n,...t){let r=Ge(n??{});return t.length>0&&(r.children=t.length===1?t[0]:t),{type:e,props:r,key:n?.key??void 0}}function Ge(e){if(!e)return{};let n={};for(let t of Object.keys(e))t!=="key"&&(n[t]=e[t]);return n}function F(e){if(e==null||typeof e=="boolean")return[];if(Array.isArray(e)){let n=!1;for(let o=0;o<e.length;o++)if(Array.isArray(e[o])){n=!0;break}if(!n)return e;let t=[],r=[...e].reverse();for(;r.length>0;){let o=r.pop();if(Array.isArray(o))for(let s=o.length-1;s>=0;s--)r.push(o[s]);else t.push(o)}return t}return[e]}function te(e,n){return{type:H,props:{children:e,portalKey:n},key:n??void 0,_placement:"remote"}}function _(){return{activeElement:()=>typeof document<"u"?document.activeElement:null,byId:e=>typeof document<"u"?document.getElementById(e):null,query:e=>typeof document<"u"?document.querySelector(e):null,queryAll:e=>typeof document<"u"?document.querySelectorAll(e):null,createElement:e=>typeof document<"u"?document.createElement(e):null,createElementNS:(e,n)=>typeof document<"u"?document.createElementNS(e,n):null,createDocumentFragment:()=>typeof document<"u"?document.createDocumentFragment():null,createComment:e=>typeof document<"u"?document.createComment(e):null,createTextNode:e=>typeof document<"u"?document.createTextNode(e):null,addEventListener:(e,n,t)=>{typeof window<"u"&&window.addEventListener(e,n,t)},removeEventListener:(e,n,t)=>{typeof window<"u"&&window.removeEventListener(e,n,t)},scrollTo:e=>{typeof window<"u"&&window.scrollTo(0,e)},matchMedia:e=>typeof window<"u"&&typeof window.matchMedia=="function"?window.matchMedia(e):null,visualViewport:()=>(typeof window<"u"?window:null)?.visualViewport??null,scrollingElement:()=>typeof document<"u"?document.scrollingElement:null,bodyElement:()=>typeof document<"u"?document.body:null,bodyAppend:e=>{typeof document<"u"&&document.body.appendChild(e)},bodyRemove:e=>{typeof document<"u"&&e.parentNode&&document.body.removeChild(e)},clearBody:()=>{typeof document<"u"&&(document.body.innerHTML="")},event:(e,n)=>{let t=typeof window<"u"?window:null,r=n&&(n.key||n.code)?"KeyboardEvent":n&&(n.clientX!==void 0||n.clientY!==void 0||n.pointerId!==void 0)?"PointerEvent":"Event";try{return new t[r](e,n)}catch{return new t.Event(e,n)}},dispatchEvent:(e,n)=>typeof e<"u"?e.dispatchEvent(n):!1,navigate:e=>{typeof window>"u"||(window.history.pushState(null,"",e),window.dispatchEvent(new PopStateEvent("popstate",{state:null})))},copyText:async e=>{let n=typeof window<"u"?window:null;if(n?.navigator?.clipboard?.writeText)try{return await n.navigator.clipboard.writeText(e),!0}catch{}try{if(typeof document>"u")return!1;let t=document.createElement("textarea");t.value=e,t.style.position="fixed",t.style.opacity="0",document.body.appendChild(t),t.select();let r=document.execCommand("copy");return document.body.removeChild(t),r}catch{return!1}},execCommand:(e,n)=>typeof document<"u"?document.execCommand(e,!1,n):!1,queryCommandState:e=>typeof document<"u"?document.queryCommandState(e):!1,queryCommandValue:e=>typeof document<"u"?document.queryCommandValue(e):"",selectionText:()=>typeof window<"u"?window.getSelection?.()?.toString()??null:null,getSelection:()=>typeof window<"u"?window.getSelection():null,viewportHeight:()=>typeof window<"u"?window.innerHeight:0,viewportWidth:()=>typeof window<"u"?window.innerWidth:0,pathname:()=>typeof window<"u"?window.location.pathname:"",createTreeWalker:(e,n)=>typeof document<"u"?document.createTreeWalker(e,n??NodeFilter.SHOW_ALL):null,scrollTop:()=>{let e=typeof document<"u"?document:null,n=typeof window<"u"?window:null;return e?.scrollingElement?.scrollTop??n?.scrollY??0},hash:()=>typeof window<"u"?window.location?.hash??"":"",setHash:e=>{typeof window<"u"&&(window.location.hash=e)},timeout:(e,n)=>typeof window<"u"?window.setTimeout(e,n):0,rootElement:()=>typeof document<"u"?document.documentElement:null,storageGet:e=>{try{return typeof window<"u"?window.localStorage?.getItem(e)??null:null}catch{return null}},storageSet:(e,n)=>{try{typeof window<"u"&&window.localStorage?.setItem(e,n)}catch{}}}}function wn(e,n,t=400){let r=!1,o=()=>{r||(r=!0,e.removeEventListener("animationend",o),clearTimeout(s),n())};e.addEventListener("animationend",o);let s=setTimeout(o,t)}function B(e,n){return Object.assign(Object.create(e),n)}function bn(e){let n={baseURL:e?.baseURL??"",headers:{"Content-Type":"application/json",...e?.headers}},t=e?.onRequest,r=e?.onResponse,o=e?.timeout??0;async function s(i,l,u,d){let a=n.baseURL+l,c={method:i,headers:{...n.headers,...d?.headers}},p=e?.token?.();p&&!c.headers.Authorization&&(c.headers.Authorization=`Bearer ${p}`);let w=o>0,b=!!d?.signal,m=null,g=null;(w||b)&&(m=new AbortController,c.signal=m.signal,w&&(g=setTimeout(()=>m.abort(new Error("Request timed out")),o)),b&&d.signal.addEventListener("abort",()=>m.abort())),u!==void 0&&i!=="GET"&&i!=="HEAD"&&(c.body=JSON.stringify(u));let y={url:a,init:c};t&&(y=t(y));try{let f=await fetch(y.url,y.init);if(r)return r(f);if(!f.ok){let P=await f.text().catch(()=>"");throw new Ce(f.status,P||f.statusText)}let h=f.headers.get("content-length");if(f.status===204||h==="0")return;let x=(f.headers.get("content-type")||"").toLowerCase();return x.includes("application/json")||x.includes("json")?f.json():f.text()}finally{g&&clearTimeout(g)}}return i=>B(i,{api:{get:(u,d)=>s("GET",u,void 0,d),post:(u,d,a)=>s("POST",u,d,a),put:(u,d,a)=>s("PUT",u,d,a),patch:(u,d,a)=>s("PATCH",u,d,a),delete:(u,d)=>s("DELETE",u,void 0,d)}})}var Ce=class extends Error{status;body;constructor(n,t){super(`API Error ${n}: ${t}`),this.name="ApiError",this.status=n,this.body=t}};function vn(e){try{let n=e.split(".");if(n.length!==3)return null;let t=n[1].replace(/-/g,"+").replace(/_/g,"/");return JSON.parse(atob(t))}catch{return null}}function Cn(e){let n=vn(e);return n?.exp?n.exp*1e3-3e4<Date.now():!0}function xn(e){let n=e?.storage??localStorage,t=e?.tokenKey??"weifuwu_token",r=e?.userKey??"weifuwu_user",o=e?.refreshTokenKey??"weifuwu_refresh",s=e?.refreshEndpoint??"/api/auth/refresh";return i=>{let l=n.getItem(t),u=n.getItem(r),d={token:l,user:u?JSON.parse(u):null,get isLoggedIn(){return this.token!==null},login(a,c,p){d.token=a,d.user=c,n.setItem(t,a),n.setItem(r,JSON.stringify(c)),p&&n.setItem(o,p)},logout(){d.token=null,d.user=null,n.removeItem(t),n.removeItem(r),n.removeItem(o)},setUser(a){d.user=a,n.setItem(r,JSON.stringify(a))},async refresh(){let a=n.getItem(o);if(!a)return!1;try{let c=await fetch(s,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({refreshToken:a})});if(!c.ok)return d.logout(),!1;let p=await c.json();return d.token=p.token,n.setItem(t,p.token),p.refreshToken&&n.setItem(o,p.refreshToken),!0}catch{return!1}}};return l&&Cn(l)&&d.refresh().catch(()=>{}),B(i,{auth:d})}}function En(e={}){let n=e.url??"/ws",t=e.reconnectInterval??3e3,r=e.maxReconnect??10,o=e.pingInterval??3e4,s=e.pingTimeout??1e4;return i=>{let l=new Set,u=null,d=0,a=null,c=null,p=null,w=!1,b={isConnected:!1,onMessage:h=>(l.add(h),()=>{l.delete(h)}),send:h=>{u?.readyState===WebSocket.OPEN&&u.send(JSON.stringify(h))},_connect:m,close:()=>{w=!0,f(),u?.close(),u=null,b.isConnected=!1}};async function m(){if(!w)try{u=new WebSocket(n),u.onopen=()=>{b.isConnected=!0,d=0,g()},u.onmessage=h=>{try{let x=JSON.parse(h.data);for(let P of l)P(x)}catch{}y()},u.onclose=()=>{b.isConnected=!1,f(),!w&&d<r&&(d++,a=setTimeout(m,t*Math.min(d,5)))},u.onerror=()=>{u?.close()}}catch{w||(a=setTimeout(m,t))}}function g(){o<=0||(c=setInterval(()=>{u?.readyState===WebSocket.OPEN&&u.send(JSON.stringify({type:"ping"})),p=setTimeout(()=>{u?.close()},s)},o))}function y(){clearTimeout(p)}function f(){clearInterval(c),clearTimeout(p),clearTimeout(a)}return m(),B(i,{ws:b})}}function Tn(e,n){if(e===n)return!0;let t=Object.keys(e),r=Object.keys(n);if(t.length!==r.length)return!1;for(let o of t)if(e[o]!==n[o])return!1;return!0}async function Ye(e,n,t,r){e._id||(r?.reuse?._id?e._id=r.reuse._id:e._id=t.nextId(),t.idRegistry.set(e._id,e)),r?.reuse&&(r.reuse._parentNode&&(e._parentNode=r.reuse._parentNode),r.reuse._refNode&&(e._refNode=r.reuse._refNode),r.reuse._ctxVersion!=null&&(e._ctxVersion=r.reuse._ctxVersion));let o=Object.create(n);o.ui=Object.create(n.ui);let s=o.ui;if(s._selfId=e._id,s._selfVNode=e,s.render=function(i){return i==null&&e._id?n.ui.render([e._id]):n.ui.render(i)},typeof e._render!="function"&&typeof r?.reuse?._render=="function"&&(e._render=r.reuse._render),typeof e._render!="function"){n.ui?.setMounting?.(!0);let i;try{i=await e.type(e.props??{},o)}finally{n.ui?.endMounting?.()}if(typeof i!="function")throw new Error(`Component ${e.type.name||"anonymous"} must return a render function. Use (init_props, ctx) => (props) => VNode pattern.`);e._render=i}return{renderFn:e._render,childCtx:o}}function xe(e){return!!e&&typeof e.then=="function"}function M(e,n,t,r,o){if(e==null||typeof e=="boolean"||typeof e=="string"||typeof e=="number")return e;if(Array.isArray(e)){let u=Array.isArray(t)?t:[],d=e.map((c,p)=>M(c,n,u[p],r,o)),a=!1;for(let c=0;c<d.length;c++)if(xe(d[c])){a=!0;break}return a?Promise.all(d).then(()=>e):e}let s=e,i=r??n.__registry,l=t!=null&&typeof t=="object"&&!Array.isArray(t)&&t.type===s.type?t:null;if(typeof s.type=="function"){s._id||(s._id=l?._id??i.nextId(),i.idRegistry.set(s._id,s)),l&&(l._parentNode&&(s._parentNode=l._parentNode),l._refNode&&(s._refNode=l._refNode),l._ctxVersion!=null&&(s._ctxVersion=l._ctxVersion),typeof l._render=="function"&&(s._render=l._render));let u=Tn(l?.props??{},s.props??{}),d=n?.ui?._ctxVersion??0,a=(l?._ctxVersion??-1)===d;return!o?.force&&u&&a&&l?._child!=null?(s._child=l._child,s._ctxVersion=l._ctxVersion,s):(async()=>{let{childCtx:c}=await Ye(s,n,i,{reuse:l??void 0}),p=await M(await s._render(s.props),c,l?._child,i);return s._child=p??null,s._ctxVersion=d,s})()}if(s.type===L){let u=M(s.props?.children??null,n,l?._child??l?.props?.children,i);return xe(u)?u.then(d=>(s._child=d??null,s)):(s._child=u??null,s)}if(typeof s.type=="string"||typeof s.type=="symbol"){let u=M(s.props?.children??null,n,l?.props?.children,i);return xe(u)?u.then(d=>(s._child=d??null,s)):(s._child=u??null,s)}return s}var Ee=new Set(["svg","path","circle","rect","line","polyline","polygon","g","text","defs","use","clipPath"]),re=/^on[A-Z]/,Nn=new Set(["zIndex","opacity","lineHeight","fontWeight","fontSizeAdjust","flex","flexGrow","flexShrink","order","zoom","aspectRatio","gridRow","gridColumn","scale","rotate","animationIterationCount","columnCount","fillOpacity","strokeOpacity","stopOpacity","floodOpacity"]);function Y(e,n,t){if(t==null||t===!1)return;let r=e.ownerDocument?.defaultView;if(n==="class"||n==="className"){if(typeof t=="object")for(let[o,s]of Object.entries(t))s&&e.classList.add(o);else e.setAttribute("class",String(t));return}if(n==="style"){if(typeof t=="string")e.setAttribute("style",t);else{let o=e.style;for(let[s,i]of Object.entries(t))i==null?o[s]="":s.startsWith("--")?o.setProperty(s,String(i)):typeof i=="number"&&!Nn.has(s)?o[s]=`${i}px`:o[s]=String(i)}return}if(n==="ref"){if(typeof t=="function")try{t(e)}catch(o){console.error("[weifuwu] ref error",o)}return}if(re.test(n)){let o=n.slice(2).toLowerCase();if(typeof t!="function"){console.warn(`[weifuwu] event prop ${n} expects a function, got ${typeof t} \u2014 ignored`);return}e.addEventListener(o,t);return}if(n==="value"){e.value=t;return}if(n==="indeterminate"){e.indeterminate=!!t;return}if(n==="innerHTML"){e.innerHTML=String(t??"");return}if(n==="draggable"||n==="contenteditable"||n==="spellcheck"){e.setAttribute(n,t?"true":"false");return}if(n.startsWith("aria-")&&typeof t=="boolean"){e.setAttribute(n,t?"true":"false");return}if(t===!0){e.setAttribute(n,"");return}try{e[n]=t,e.getAttribute(n)!==String(t)&&e.setAttribute(n,String(t))}catch{e.setAttribute(n,String(t))}}function S(e,n,t){let r=n?.browser??t;if(!r)throw new Error("[vdom] renderValue requires browser env (ctx.browser)");if(e==null||typeof e=="boolean")return null;if(typeof e=="string"||typeof e=="number")return r.createTextNode(String(e));if(Array.isArray(e)){let u=r.createDocumentFragment();if(!u)return null;for(let d of e){let a=S(d,n,r);a!=null&&u.appendChild(a)}return u}let o=e;if(o.type===H){let u=r.bodyElement();if(!u)return null;let d=u.querySelector("#__wf_portal");d||(d=r.createElement("div"),d&&(d.id="__wf_portal",u.appendChild(d)));let a=r.createElement("div");if(a){a.setAttribute("data-portal",String(o.props?.portalKey??"wf"));let c=S(o.props?.children??null,n,r);c!=null&&a.appendChild(c),d&&d.appendChild(a),o._remoteEl=a}return null}if(o.type===L){let u=r.createDocumentFragment();if(!u)return null;for(let d of F(o.props?.children)){let a=S(d,n,r);a!=null&&u.appendChild(a)}return o._childNodes=Array.from(u.childNodes),u}if(typeof o.type=="function"){if(typeof o._render!="function")throw new Error(`[vdom] component ${o.type.name||"anonymous"} not built (missing _render) \u2014 buildVNode must run before renderValue`);if(o._child===void 0)throw new Error(`[vdom] component ${o.type.name||"anonymous"} not built (missing _child) \u2014 buildVNode must run before renderValue`);let u=o._child;if(u==null)return o._child=null,null;let d=(Array.isArray(u)||typeof u=="object"&&typeof u.type=="function",u);o._child=d,typeof d=="object"&&!Array.isArray(d)&&(d._parentVNode=o);let a=S(d,n,r);return a&&(o._refNode=a),a}let s=o.type,i=Ee.has(s)?r.createElementNS("http://www.w3.org/2000/svg",s):r.createElement(s);if(!i)return null;o.el=i;let l;for(let[u,d]of Object.entries(o.props??{}))if(!(u==="children"||u==="key")){if(u==="value"&&i instanceof HTMLSelectElement){l=d;continue}Y(i,u,d)}if(!("innerHTML"in(o.props??{})))for(let u of F(o.props?.children)){let d=S(u,n,r);if(d!=null&&(i.appendChild(d),u&&typeof u=="object"&&!Array.isArray(u)&&typeof u.type=="function")){let a=u;a._parentNode||(a._parentNode=i,a._refNode=d)}}return l!==void 0&&(i.value=String(l)),i}var Pn=0;function Te(){return{idRegistry:new Map,unmountHooks:[],nextId:()=>`_wf_${Pn++}`}}function Ne(e,n){return e.unmountHooks.push(n),()=>{let t=e.unmountHooks.indexOf(n);t>=0&&e.unmountHooks.splice(t,1)}}function oe(e,n){for(let t of[...e.unmountHooks])t(n);e.idRegistry.delete(n),e.idRegistry.delete(`custom:${n}`)}function Vn(e,n,t,r){try{e(n)}catch(o){console.error(`[weifuwu] ref ${t} error in <${r??"anonymous"}>`,o)}}function R(e,n){if(e==null||typeof e!="object")return;let t=e;if(t._id){if(t._customId&&n.idRegistry.delete(t._customId),n.idRegistry.delete(t._id),n.unmountHooks.length>0){let r=[...n.unmountHooks];for(let o of r)o(t._id);if(t._customId)for(let o of r)o(t._customId)}t._id=void 0,t._customId=void 0,t._render=void 0,t._parentNode=void 0,t._refNode=void 0}if(t._child!=null){if(Array.isArray(t._child))for(let r of t._child)r&&typeof r=="object"&&R(r,n);else R(t._child,n);t._child=void 0}if(t.props?.children&&typeof t.type=="string"){let r=Array.isArray(t.props.children)?t.props.children:[t.props.children];for(let o of r)o&&typeof o=="object"&&R(o,n)}if(typeof t.props?.ref=="function"&&Vn(t.props.ref,null,"cleanup"),t._remoteEl){let r=t._child;if(r!=null)if(Array.isArray(r))for(let o of r)o&&typeof o=="object"&&R(o,n);else typeof r=="object"&&R(r,n);t._remoteEl.remove(),t._remoteEl=void 0}}function ie(e,n){if(n&&typeof e.type=="function"&&e._id){try{R(e,n)}catch(t){console.error("[weifuwu] ref cleanup error",t)}oe(n,e._id)}}function X(e){if(e==null||typeof e!="object"||Array.isArray(e))return;let n=e;return n._placement==="remote"?n.props?.portalKey:n.key}function Pe(e,n){if(n&&e&&typeof e=="object"&&!Array.isArray(e)&&e.type===L){let t=e._childNodes;if(t&&t.length)return t}return[n]}function O(e,n,t,r,o){if(typeof r=="string"||typeof r=="number"){if(typeof t=="string"||typeof t=="number"){if(String(t)!==String(r)){if(n&&n.nodeType===3)return n.nodeValue=String(r),n;let c=e.ownerDocument.createTextNode(String(r));return n?.parentNode?n.parentNode.replaceChild(c,n):e.appendChild(c),c}return n}let a=e.ownerDocument.createTextNode(String(r));return n?.parentNode?n.parentNode.replaceChild(a,n):e.appendChild(a),a}if(r==null||typeof r=="boolean"){if(t&&typeof t=="object"&&!Array.isArray(t)&&t.type===H){let a=t._remoteEl;try{R(t.props?.children,o.registry)}catch(c){console.error("[weifuwu] portal ref cleanup error",c)}return a?.parentNode?.removeChild(a),null}if(t&&typeof t=="object"&&!Array.isArray(t))if(typeof t.type=="function")ie(t,o.registry);else try{R(t,o.registry)}catch(a){console.error("[weifuwu] ref cleanup error",a)}return n?.parentNode&&n.parentNode.removeChild(n),null}if(Array.isArray(r)){if(t===r&&n?.parentNode)return n;let a=e.ownerDocument.createDocumentFragment(),c=se(e,t,r,o,n?[n]:void 0);for(let p of c)p&&a.appendChild(p);return n?.parentNode?a.contains(n)?e.appendChild(a):n.parentNode.replaceChild(a,n):e.appendChild(a),a}let s=r;if(s.type===H){let a=t&&typeof t=="object"&&!Array.isArray(t)?t:null;if(a?.type===H){let c=a._remoteEl;if(c){let p=a.props?.children??null,w=s.props?.children??null;se(c,p,w,o)}return s._remoteEl=a._remoteEl,null}return S(s,o,o.browser??_()),null}if(s.type===L){let a=t&&typeof t=="object"&&!Array.isArray(t)?t:null,c=a?._childNodes,p=se(e,a?.props?.children??t,s.props?.children??null,o,c);return s._childNodes=p.filter(Boolean),n?.parentNode&&n.nodeType===8&&n.parentNode.removeChild(n),n&&n.nodeType===1?n:p[0]??null}if(typeof s.type=="function"){if(typeof s._render!="function")throw new Error(`[vdom] component ${s.type.name||"anonymous"} not built in diff \u2014 buildVNode must run before patchValue`);let a=t&&typeof t=="object"&&!Array.isArray(t)?t:null,c=a?.type===s.type;if(!o.force&&a&&c&&a._child!==void 0&&s._child===a._child)return n;a?.type===s.type&&a._id&&(s._id=a._id,o.registry.idRegistry.set(s._id,s)),s._parentNode=e,n&&(s._refNode=n);let p;if(s._child===void 0)throw new Error(`[vdom] component ${s.type.name||"anonymous"} not built (missing _child) \u2014 buildVNode must run before patchValue`);p=s._child;let w=O(e,n,a?._child,p,o);return w&&(s._refNode=w),w}let i=t&&typeof t=="object"&&!Array.isArray(t)?t:null,l=i?.type??null,u=s.type;if(n&&n.nodeType===1&&l===u){let a=n;return s.el=a,_n(a,i?.props??{},s.props??{}),se(a,i?.props?.children??null,s.props?.children??null,o),a}let d=S(s,o,o.browser??_());if(d==null)return null;if(n?.parentNode)if(t!=null&&typeof t!="boolean"){if(typeof t=="object"&&!Array.isArray(t))try{R(t,o.registry)}catch(a){console.error("[weifuwu] ref cleanup error",a)}n.parentNode.replaceChild(d,n)}else n.parentNode.insertBefore(d,n);else e.appendChild(d);return d}function _n(e,n,t){let r=Object.keys(n),o=Object.keys(t);if(r.length===o.length){let i=!0;for(let l=0;l<r.length;l++)if(r[l]!==o[l]||n[r[l]]!==t[r[l]]){i=!1;break}if(i)return}let s=new Set([...r,...o]);for(let i of s){if(i==="children"||i==="key")continue;let l=n[i],u=t[i];if(l!==u){if(re.test(i)){typeof l=="function"&&e.removeEventListener(i.slice(2).toLowerCase(),l),u!=null&&u!==!1&&(typeof u!="function"?console.warn(`[weifuwu] event prop ${i} expects a function, got ${typeof u} \u2014 ignored`):e.addEventListener(i.slice(2).toLowerCase(),u));continue}if(u==null||u===!1){if(i==="class"||i==="className")e.removeAttribute("class");else if(re.test(i))e.removeEventListener(i.slice(2).toLowerCase(),l);else if(i==="ref"){if(typeof l=="function")try{l(null)}catch(d){console.error("[weifuwu] ref cleanup error",d)}}else if(i==="value")e.value="";else if(i==="indeterminate")e.indeterminate=!1;else{e.removeAttribute(i);try{delete e[i]}catch{}}continue}Y(e,i,u)}}}function se(e,n,t,r,o){let s=F(n),i=F(t),l=o??Array.from(e.childNodes);if(i.some(m=>{if(m==null||typeof m!="object"||Array.isArray(m))return!1;let g=m;return g._placement!=="remote"&&g.key!==void 0})){for(let m=0;m<i.length;m++){let g=i[m];g&&typeof g=="object"&&!Array.isArray(g)&&X(g)===void 0&&(g.key=`pos:${m}`)}for(let m=0;m<s.length;m++){let g=s[m];g&&typeof g=="object"&&!Array.isArray(g)&&X(g)===void 0&&(g.key=`pos:${m}`)}}let d=s.map((m,g)=>{if(m==null||typeof m!="object"||Array.isArray(m))return l[g]??null;let y=m;return y._placement==="remote"?y._remoteEl??null:y.type===L?y._childNodes?.[0]??null:y._refNode??y.el??null});if(!i.some(m=>{if(m==null||typeof m!="object"||Array.isArray(m))return!1;let g=m;return g._placement!=="remote"&&g.key!==void 0})){let m=Math.max(s.length,i.length),g=[];for(let y=0;y<m;y++){let f=y<s.length?s[y]:null,h=y<i.length?i[y]:null;if(h==null||typeof h=="boolean"){if(f&&typeof f=="object"&&!Array.isArray(f))if(typeof f.type=="function")ie(f,r.registry);else try{R(f,r.registry)}catch(C){console.error("[weifuwu] ref cleanup error",C)}let P=d[y];P?.parentNode&&P.parentNode.removeChild(P),g.push(null);continue}if(f!=null&&typeof f=="object"&&!Array.isArray(f)&&h!=null&&typeof h=="object"&&!Array.isArray(h)&&h===f){g.push(d[y]);continue}if(f==null||typeof f=="boolean"){let P=S(h,r,r.browser??_());if(P==null){g.push(null);continue}let C=null;for(let T=y+1;T<d.length;T++){let E=d[T];if(E&&E.parentNode===e){C=E;break}}if(!C){let T=null;for(let E=g.length-1;E>=0;E--)if(g[E]){T=g[E];break}if(T&&T.parentNode===e&&(C=T.nextSibling),!C){let E=d[d.length-1];E&&E.parentNode===e&&(C=E.nextSibling)}}C&&C.parentNode===e?e.insertBefore(P,C):e.appendChild(P),g.push(P);continue}let x=O(e,d[y],f,h,r);g.push(...Pe(h,x))}return g}let c=new Map;s.forEach((m,g)=>{let y=X(m);y!==void 0&&m&&typeof m=="object"&&!Array.isArray(m)&&c.set(y,{vnode:m,nodes:[d[g]??null].filter(Boolean),index:g})});let p=[],w=new Set,b=null;return i.forEach((m,g)=>{let y=X(m),f=m;if(y!==void 0&&c.has(y)){let h=c.get(y),x=h.nodes[0]??null;w.add(y);let P=O(e,x,h.vnode,f,r),C=Pe(f,P),T=C[C.length-1]??P;T&&T.parentNode===e&&b&&T.previousSibling!==b&&e.insertBefore(T,b.nextSibling),p.push(...C),T&&(b=T)}else if(f?._placement==="remote"){let h=s[g]??null,x=O(e,d[g]??null,h,f,r),P=Pe(f,x);p.push(...P);let C=P[P.length-1]??x;C&&(b=C)}else{let h=S(f,r,r.browser??_());p.push(h),h!=null&&(b?e.insertBefore(h,b.nextSibling):e.insertBefore(h,e.firstChild),b=h)}}),s.forEach((m,g)=>{let y=X(m),f=m&&typeof m=="object"&&!Array.isArray(m)&&typeof m.type=="function";if(y!==void 0&&!w.has(y)){if(m&&typeof m=="object"&&!Array.isArray(m))if(f)ie(m,r.registry);else try{R(m,r.registry)}catch(x){console.error("[weifuwu] ref cleanup error",x)}let h=d[g];h?.parentNode&&h.parentNode.removeChild(h)}else if(y===void 0){if(m&&typeof m=="object"&&!Array.isArray(m))if(f)ie(m,r.registry);else try{R(m,r.registry)}catch(x){console.error("[weifuwu] ref cleanup error",x)}let h=d[g];h?.parentNode&&h.parentNode.removeChild(h)}}),p}var Xe=_();function Je(e,n="bottom",t=6,r=!0){switch(n){case"bottom":return{top:e.bottom+t,left:r?e.left+e.width/2:e.left};case"top":return{top:e.top-t,left:r?e.left+e.width/2:e.left};case"left":return{top:r?e.top+e.height/2:e.top,left:e.left-t};case"right":return{top:r?e.top+e.height/2:e.top,left:e.right+t}}}function ae(e,n,t=8){if(!n)return e;let r=n.getBoundingClientRect();if(r.width===0&&r.height===0)return e;let o=Number.parseFloat(n.style.top)||r.top,s=Number.parseFloat(n.style.left)||r.left,i=e.top-o,l=e.left-s,u={top:r.top+i,bottom:r.bottom+i,left:r.left+l,right:r.right+l},d=Xe.viewportWidth(),a=Xe.viewportHeight(),c=e.top,p=e.left;return u.bottom>a-t&&(c=Math.max(t,c-(u.bottom-(a-t)))),u.top<t&&(c=Math.max(t,c+(t-u.top))),u.right>d-t&&(p=Math.max(t,p-(u.right-(d-t)))),u.left<t&&(p=Math.max(t,p+(t-u.left))),{top:c,left:p,width:e.width}}var K=_();function Qe(e){let n=new Map,t=new Map,r=!1,o=0;function s(){o||(o=requestAnimationFrame(()=>{o=0;let a=[];for(let[c,p]of n){if(!p.isOpen())continue;let w=p.getEl();if(!w)continue;let b=w.getBoundingClientRect();if(b.width===0&&b.height===0)continue;let m=p.compute(b);Object.assign(p.pos,ae(m,p.panel?.(),p.margin)),a.push(c)}for(let[c,p]of t){let w=p.getScroller(),b=w instanceof Window?K.scrollingElement()?.scrollTop??K.scrollTop():w.scrollTop??0;b!==p.handle.y&&(p.handle.y=b,a.push(c))}a.length>0&&e(a)}))}function i(){r||(r=!0,K.addEventListener("scroll",s,{capture:!0,passive:!0}),K.addEventListener("resize",s))}function l(){r&&(K.removeEventListener("scroll",s,{capture:!0}),K.removeEventListener("resize",s),r=!1)}function u(a){for(let c of[...n.keys()])(c.startsWith(`popup:${a}:`)||c===`popup:${a}`||c===a)&&n.delete(c);t.delete(a)}function d(){l(),o&&(cancelAnimationFrame(o),o=0),n.clear(),t.clear()}return{popupTrackers:n,scrollTrackers:t,schedulePopupRecompute:s,ensurePopupListeners:i,destroyPopupListeners:l,cleanupTrackers:u,destroy:d}}function Ve(e,n,t){return o=>{o?n(o):t?.()}}function J(e){return typeof window<"u"&&!!window.matchMedia?.("(hover: hover)").matches}function le(e){return typeof window<"u"&&!!window.matchMedia?.("(prefers-reduced-motion: reduce)").matches}function _e(e,n,t){let r=null,o=()=>{n(),t?.once&&r&&r.removeEventListener("animationend",o)};return i=>{i?(r=i,i.addEventListener("animationend",o)):r&&(r.removeEventListener("animationend",o),r=null)}}function ke(e,n){let{onLongPress:t,duration:r=500}=n,o,s=0,i=0,l=null,u=()=>{clearTimeout(o),o=void 0},d=e.selfId();if(d){let a=e.onUnmount(c=>{c===d&&(u(),a())})}return{onPointerDown:a=>{s=a.clientX??0,i=a.clientY??0,l=a,u(),o=setTimeout(()=>{o=void 0,l&&t(l)},r)},onPointerUp:u,onPointerLeave:u,onPointerMove:a=>{let c=Math.abs((a.clientX??0)-s),p=Math.abs((a.clientY??0)-i);(c>10||p>10)&&u()},onContextMenu:a=>{a.preventDefault(),t(a)}}}function Q(e,n){let t=e.selfId(),r="closed",o,s=()=>{r="closed",t?e.render([t]):e.render()};return{get phase(){return r},ref:l=>{l?o||(o=()=>{r==="exit"&&s()},l.addEventListener("animationend",o)):o=void 0},sync:l=>(l?r="open":r==="open"&&(r="exit"),r)}}function Se(e,n,t){let r=e.selfId(),o=le(e),s=t?.duration??400,i=t?.ease==="linear"?p=>p:p=>1-Math.pow(1-p,3),l,u=n,d={value:o?n:0,reset:()=>{}},a=()=>{r?e.render([r]):e.render()},c=p=>{if(u=p,o){d.value=p,a();return}if(p===d.value)return;l&&cancelAnimationFrame(l);let w=d.value,b=performance.now(),m=g=>{let y=Math.min(1,(g-b)/s);d.value=Math.round(w+(p-w)*i(y)),y<1?(l=requestAnimationFrame(m),a()):(l=void 0,a())};l=requestAnimationFrame(m)};if(d.reset=p=>{p===u&&l||c(p)},r){let p=e.onUnmount(w=>{w===r&&(l&&(cancelAnimationFrame(l),l=void 0),p())})}return queueMicrotask(()=>c(n)),d}function Re(e,n,t){let r=e.selfId(),o=e.browser,s=`media:${r}:${n}`;if(!e.mediaRegistry.has(s)){let i=o.matchMedia(n);t(i.matches);let l=d=>t(d.matches);i.addEventListener("change",l),e.mediaRegistry.set(s,{mql:i,handler:l});let u=e.onUnmount(d=>{if(d!==r)return;let a=e.mediaRegistry.get(s);if(a?.mql&&a.handler)try{a.mql.removeEventListener("change",a.handler)}catch{}e.mediaRegistry.delete(s),u()})}}function Ae(e,n,t){let r=e.browser,o=typeof n=="function"?{mobile:"(max-width: 639px)",tablet:"(min-width: 640px) and (max-width: 1023px)",desktop:"(min-width: 1024px)"}:n,s=typeof n=="function"?n:t,i=e.selfId(),l=`bp:${i}`;function u(){for(let[d,a]of Object.entries(o))if(r.matchMedia(a).matches)return d;return Object.keys(o)[0]??""}if(!e.mediaRegistry.has(l)){s(u());let d=[];for(let c of Object.values(o)){let p=r.matchMedia(c),w=()=>s(u());p.addEventListener("change",w),d.push({mql:p,handler:w})}e.mediaRegistry.set(l,{mqls:d});let a=e.onUnmount(c=>{if(c!==i)return;let p=e.mediaRegistry.get(l);if(p?.mqls)for(let w of p.mqls)try{w.mql.removeEventListener("change",w.handler)}catch{}e.mediaRegistry.delete(l),a()})}}function Me(e){let n=e.selfId(),t=e.browser,r={height:t.viewportHeight(),offsetTop:0,keyboardOpen:!1},o=()=>{n?e.render([n]):e.render()},s=()=>{let l=t.visualViewport();r.height=l?.height??t.viewportHeight(),r.offsetTop=l?.offsetTop??0,r.keyboardOpen=r.height<t.viewportHeight()*.9,o()},i=t.visualViewport();if(i?.addEventListener?(i.addEventListener("resize",s),i.addEventListener("scroll",s)):t.addEventListener("resize",s),n){let l=e.onUnmount(u=>{u===n&&(i?.removeEventListener?(i.removeEventListener("resize",s),i.removeEventListener("scroll",s)):t.removeEventListener("resize",s),l())})}return r}function Le(e,n){let t=e.selfId(),r={isIn:!1,ready:!1,observe:u,refresh:d,disconnect:a},o=null,s=null,i=()=>{t?e.render([t]):e.render()};function l(){if(s?.disconnect(),s=null,!o)return;let c=typeof n.rootMargin=="function"?n.rootMargin():n.rootMargin,p=typeof n.threshold=="function"?n.threshold():n.threshold;s=new IntersectionObserver(w=>{let b=w[w.length-1];if(!b)return;let m=b.isIntersecting,g=m!==r.isIn,y=!r.ready;r.isIn=m,r.ready=!0,n.onChange?.(b,m),(g||y)&&i()},{root:n.root?n.root():null,rootMargin:c??"0px",threshold:p??0}),s.observe(o)}function u(c){o=c,c?l():(s?.disconnect(),s=null,r.isIn=!1)}function d(){l()}function a(){s?.disconnect(),s=null}if(t){let c=e.onUnmount(p=>{p===t&&(a(),c())})}return r}function He(e,n){let t=e.selfId(),r=e.browser,o={y:0,refresh(){let l=s.getScroller();o.y=l instanceof Window?r.scrollingElement()?.scrollTop??r.scrollTop():l.scrollTop??0}},s={handle:o,getScroller:n.getScroller??(()=>window)};if(!t)return o.refresh(),o;e.scrollTrackers.set(t,s),e.ensurePopupListeners(),o.refresh();let i=e.onUnmount(l=>{l===t&&(e.scrollTrackers.delete(t),i())});return o}function ue(e,n){let t=e.selfId(),r=n.value!==void 0;if(r&&!n.onChange&&n.name&&(e.warned.has(n.name)||(e.warned.add(n.name),console.warn(`[weifuwu/${n.name}] \u53D7\u63A7\u6A21\u5F0F\uFF08value \u5DF2\u4F20\uFF09\u4F46\u672A\u63D0\u4F9B onChange\uFF0C\u4EA4\u4E92\u65E0\u6CD5\u751F\u6548\u3002
|
|
2
|
+
\u975E\u53D7\u63A7\uFF1A\u53BB\u6389 value\uFF1B\u53D7\u63A7\uFF1A\u4F20\u5165 onChange={(v) => setValue(v)}`))),!r&&t&&!e.uncontrolledValues.has(t)){e.uncontrolledValues.set(t,n.value);let s=e.onUnmount(i=>{i===t&&(e.uncontrolledValues.delete(t),s())})}let o=s=>{if(r){n.onChange?.(s);return}t&&e.uncontrolledValues.set(t,s),t?e.render([t]):e.render()};return{value:r?n.value:t?e.uncontrolledValues.get(t):n.value,setValue:o,controlled:r}}function Ie(e,n){let t=e.selfId(),r=ue(e,{value:n.value,onChange:n.onChange,name:n.name});if(t&&!e.inputStates.has(t)){e.inputStates.set(t,{keyword:"",selectedLabel:""});let i=e.onUnmount(l=>{l===t&&(e.inputStates.delete(t),i())})}let o=t?e.inputStates.get(t):{keyword:"",selectedLabel:""},s=()=>{t?e.render([t]):e.render()};return{...r,get keyword(){return o.keyword},setKeyword(i){o.keyword=i,s()},get selectedLabel(){return o.selectedLabel},setSelectedLabel(i){o.selectedLabel=i,s()}}}function Oe(e,n){let t=e.selfId(),r=!1;if(t){let u=e.onUnmount(d=>{d===t&&(r=!0,u())})}let o=()=>{r||(t?e.render([t]):e.render())},s={data:void 0,loading:!1,error:void 0},i=0,l=()=>{let u=++i;s.loading=!0,s.error=null,o(),Promise.resolve().then(()=>n()).then(d=>{i===u&&(s.data=d,s.loading=!1,o())}).catch(d=>{i===u&&(s.error=d,s.loading=!1,o())})};return l(),s.reload=l,s}function Ue(e,n){let t=e.selfId(),r=e.browser;if(typeof window>"u")return()=>{};if(r.addEventListener("keydown",n),t){let o=e.onUnmount(s=>{s===t&&(r.removeEventListener("keydown",n),o())})}return()=>r.removeEventListener("keydown",n)}function We(e,n){let t=e.browser,r=0,o=0,s=!1,i=a=>{s&&n.onMove(a,{x:a.clientX-r,y:a.clientY-o})},l=a=>{s&&(s=!1,t.removeEventListener("pointermove",i),t.removeEventListener("pointerup",l),n.onEnd?.(a))},u=a=>{s||(a.preventDefault(),s=!0,r=a.clientX,o=a.clientY,t.addEventListener("pointermove",i),t.addEventListener("pointerup",l),n.onStart?.(a))},d=e.selfId();if(d){let a=e.onUnmount(c=>{c===d&&(s&&(t.removeEventListener("pointermove",i),t.removeEventListener("pointerup",l),s=!1),a())})}return{onPointerDown:u}}function De(e,n){let t={};n.onDrop&&(t.onDrop=o=>{o.preventDefault(),n.onDrop(o)}),n.onDragOver&&(t.onDragOver=o=>{o.preventDefault(),n.onDragOver(o)}),n.onDragLeave&&(t.onDragLeave=o=>n.onDragLeave(o));let r={draggable:!0};if(n.onDragStart){let o=n.onDragStart;r.onDragStart=s=>{typeof document<"u"&&document.body.classList.add("wf-dragging"),o(s)}}if(n.onDragEnd){let o=n.onDragEnd;r.onDragEnd=s=>{typeof document<"u"&&document.body.classList.remove("wf-dragging"),o(s)}}return{dropProps:t,dragProps:r}}function ce(e,n){let t=e.selfId(),r={top:0,left:0,refresh:()=>{}};if(!t)return r;let o={pos:r,getEl:n.el,isOpen:n.isOpen,compute:n.compute,panel:n.panel,margin:n.margin??8};e.popupTrackers.set(t,o),e.ensurePopupListeners();let s=e.onUnmount(i=>{i===t&&(e.popupTrackers.delete(t),s())});return r.refresh=()=>{let i=o.getEl();if(!i)return;let l=i.getBoundingClientRect();if(l.width===0&&l.height===0)return;let u=o.compute(l);Object.assign(r,ae(u,o.panel?.(),o.margin))},r}function je(e,n){let t=e.selfId(),r=e.browser,o=J(e),s=()=>typeof n.trigger=="function"?n.trigger():n.trigger??"manual",i=n.open!==void 0,l=()=>!!n.disabled?.(),u=()=>i?typeof n.open=="function"?!!n.open():!!n.open:n.isOpen(),d=n.presence?Q(e,{name:n.name}):null,a,c=!1,p=v=>{if(!d)return v?"open":"closed";let N=d.sync(v);return v&&n.lockScroll&&!c&&(kn(),c=!0),N},w=v=>{l()||(i?n.onOpenChange?.(v):d?v?p(!0):u()&&p(!1):n.setOpen(v))},b=()=>{let v=n.placement;return typeof v=="function"?v():v??"bottom"},m=null,g=!1,y=ce(e,{el:n.el??(()=>null),isOpen:()=>u(),compute:v=>{if(n.position){let N=n.position();return{top:N.y,left:N.x,width:N.width}}return Je(v,b(),n.gap??6,n.center!==!1)},panel:()=>m,margin:n.margin??8}),f=v=>{if(n.closeOnOutside===!1||n.mask||!u())return;let N=v.target;if(!(N instanceof Node))return;let I=n.el?.()??null;I&&I.contains(N)||m&&m.contains(N)||w(!1)},h=v=>{n.closeOnEscape!==!1&&(v.key!=="Escape"||!u()||w(!1))};if(r.addEventListener("mousedown",f),r.addEventListener("keydown",h),t){let v=e.onUnmount(N=>{N===t&&(r.removeEventListener("mousedown",f),r.removeEventListener("keydown",h),v())})}let x={},P=v=>typeof v=="function"?v():v??0,C=()=>P(n.openDelay),T=()=>P(n.closeDelay),E,V,W=()=>{clearTimeout(E),clearTimeout(V),E=void 0,V=void 0},U=v=>{if(l())return;let N=v.currentTarget,I=v.relatedTarget;N.contains(I)||(clearTimeout(V),V=void 0,E=setTimeout(()=>{E=void 0,w(!0)},C()))},A=v=>{if(l())return;let N=v.currentTarget,I=v.relatedTarget;N.contains(I)||(clearTimeout(E),E=void 0,V=setTimeout(()=>{V=void 0,w(!1)},T()))},me=()=>{l()||(clearTimeout(V),V=void 0,E=setTimeout(()=>{E=void 0,w(!0)},C()))},dn=()=>{l()||(clearTimeout(E),E=void 0,V=setTimeout(()=>{V=void 0,w(!1)},T()))},G=()=>s()==="hover";if(x.onMouseOver=v=>{G()&&U(v)},x.onMouseOut=v=>{G()&&A(v)},x.onClick=()=>{G()?o||w(!u()):s()==="click"&&w(!0)},x.onFocus=()=>{G()?me():s()==="focus"&&(clearTimeout(V),V=void 0,w(!0))},x.onBlur=()=>{G()?dn():s()==="focus"&&(clearTimeout(E),E=void 0,V=setTimeout(()=>{V=void 0,w(!1)},T()))},s()==="longpress"){let v,N=0,I=0,D=()=>{clearTimeout(v),v=void 0};x.onPointerDown=k=>{l()||(N=k.clientX??0,I=k.clientY??0,D(),v=setTimeout(()=>{v=void 0,n.onTrigger?.({clientX:N,clientY:I}),w(!0)},n.longPressDuration??500))},x.onPointerUp=D,x.onPointerLeave=D,x.onPointerMove=k=>{let he=Math.abs((k.clientX??0)-N),we=Math.abs((k.clientY??0)-I);(he>10||we>10)&&D()},x.onContextMenu=k=>{k.preventDefault(),n.onTrigger?.({clientX:k.clientX??0,clientY:k.clientY??0}),w(!0)}}if(x.onKeyDown=v=>{v.key==="Escape"&&n.closeOnEscape!==!1&&w(!1)},t){let v=e.onUnmount(N=>{N===t&&(W(),v())})}let cn=v=>{if(v){m=v;let N=()=>y.refresh();v.addEventListener("animationend",N,{once:!0})}else m=null},ye=null,ge=null,ze=v=>{cn(v),ge&&ge(v),d?.ref(v),n.trapFocus&&(v?a=An(v):(a?.(),a=void 0)),n.lockScroll&&!v&&c&&(Sn(),c=!1)};return{get open(){return u()},setOpen:w,get phase(){return d?d.phase:u()?"open":"closed"},sync:p,wrapProps:x,portal:(v,N="popover")=>{if(l())return null;if(!(d?d.phase!=="closed":u()))return g=!1,ye=null,null;let D=n.el?.()??null;(!g||D!==ye)&&(D?y.refresh():queueMicrotask(()=>{u()&&y.refresh()}),g=!0,ye=D);let k=v.props??{};ge=k.ref??null;let he=n.positioning==="none"?k.class??"":["wf-popup",k.class].filter(Boolean).join(" "),we=n.positioning==="none"?{...k.style??{},position:"fixed"}:{...k.style??{},position:"fixed",top:`${y.top}px`,left:`${y.left}px`,...y.width!==void 0?{width:`${y.width}px`}:{},maxWidth:(()=>{let ne=typeof n.width=="function"?n.width():n.width;return ne!==void 0?`min(${ne}px, calc(100vw - 32px))`:"calc(100vw - 32px)"})()},q={...v,props:{...k,class:he,style:we,ref:ze}};if(n.mask){let ne=typeof n.mask=="object"?n.mask:j("div",{class:"wf-popup-mask","data-portal-mask":N,onClick:n.maskClosable===!1?void 0:()=>w(!1)}),fn=n.maskCentered?j("div",{class:"wf-cover",style:{"--wf-z":"var(--wf-z-popover)",pointerEvents:"none"}},{...q,props:{...q.props,style:{...k.style??{},pointerEvents:"auto"},ref:ze}}):null,pn=n.maskCentered?void 0:{...q.props?.style??{},zIndex:"var(--wf-z-popover)"},mn=n.maskCentered?fn:{...q,props:{...q.props,style:pn}};return te([ne,mn],N)}return te(q,N)},refresh:()=>y.refresh()}}function $e(e,n){let t=e.selfId();if(t&&!e.openStates.has(t)){e.openStates.set(t,!1);let l=e.onUnmount(u=>{u===t&&(e.openStates.delete(t),l())})}let r=n.open!==void 0;r&&!n.onOpenChange&&n.name&&!e.warned.has(n.name)&&(e.warned.add(n.name),console.warn(`[weifuwu/${n.name}] \u53D7\u63A7\u6A21\u5F0F\uFF08open \u5DF2\u4F20\uFF09\u4F46\u672A\u63D0\u4F9B onOpenChange\uFF0C\u4EA4\u4E92\u65E0\u6CD5\u751F\u6548\u3002
|
|
3
|
+
\u975E\u53D7\u63A7\uFF1A\u53BB\u6389 open\uFF1B\u53D7\u63A7\uFF1A\u4F20\u5165 onOpenChange={(o) => setOpen(o)}`));let o=()=>r?!!n.open:t?e.openStates.get(t)??!1:!1,s=()=>{t?e.render([t]):e.render()},i=l=>{if(r){n.onOpenChange?.(l);return}t&&e.openStates.set(t,l),s()};return{get open(){return o()},setOpen:i,triggerProps:{onClick:()=>i(!0),onFocus:()=>{n.openOnFocus&&i(!0)}}}}var $=_(),Z=0,Ze="",en="",nn="",tn="",de=0;function rn(){return typeof window<"u"&&typeof document<"u"}function kn(){if(Z++,Z>1||!rn())return;de=$.scrollTop();let e=$.bodyElement();Ze=e.style.overflow,en=e.style.position,nn=e.style.top,tn=e.style.width,e.style.overflow="hidden",(/iPhone|iPad|iPod/.test(navigator.platform)||/Mac/.test(navigator.platform)&&"ontouchend"in document)&&(e.style.position="fixed",e.style.top=`-${de}px`,e.style.width="100%")}function Sn(){if(Z===0||(Z--,Z>0)||!rn())return;let e=$.bodyElement();e.style.overflow=Ze,e.style.position=en,e.style.top=nn,e.style.width=tn,de>0&&$.scrollTo(de)}var Rn='a[href], button:not([disabled]), input:not([disabled]), textarea:not([disabled]), select:not([disabled]), [tabindex]:not([tabindex="-1"])';function An(e){let n;return queueMicrotask(()=>{let t=e.querySelectorAll(Rn);if(t.length===0)return;let r=t[0],o=t[t.length-1],s=l=>{l.key==="Tab"&&(l.shiftKey&&$.activeElement()===r?(l.preventDefault(),o.focus()):!l.shiftKey&&$.activeElement()===o&&(l.preventDefault(),r.focus()))},i=$.activeElement();r.focus(),e.addEventListener("keydown",s),n=()=>{e.removeEventListener("keydown",s),i?.focus()}}),()=>n?.()}function Mn(e){return e.map(n=>{let t={role:n.role,content:n.content};return n.reasoning&&(t.reasoning_content=n.reasoning),t})}function qe(){return typeof crypto<"u"&&typeof crypto.randomUUID=="function"?crypto.randomUUID():`msg-${Date.now()}-${Math.random().toString(36).slice(2,10)}`}function on(e,n,t,r){t.initialMessages?e.messages=structuredClone(t.initialMessages):e.messages===void 0&&(e.messages=[]),e.input===void 0&&(e.input=""),e.streaming===void 0&&(e.streaming=!1),e.error===void 0&&(e.error=null),e.usage===void 0&&(e.usage=null),e.step===void 0&&(e.step=null);let o=null;function s(){if(!e.streaming)return;let b=e.messages[e.messages.length-1];return b&&b.role==="assistant"&&b.status==="streaming"?b:void 0}function i(b,m,g){let y=s();switch(b){case"wf:token":y&&(y.content+=m.text);break;case"wf:tool_call":{y&&(y.toolCalls||(y.toolCalls=[]),y.toolCalls.push({call:m,status:"running"}));break}case"wf:tool_progress":{let f=m,h=y?.toolCalls?.find(x=>x.call.id===f.toolCallId);h&&(h.progress=f);break}case"wf:tool_result":{let f=m,h=y?.toolCalls?.find(x=>x.call.id===f.id);h&&(h.result=f,h.status=f.ok?"ok":"error");break}case"wf:approval_request":y&&(y.approval=m);break;case"wf:usage":y&&(y.usage=m);break;case"wf:step":e.step=m;break;case"wf:done":if(y){y.status="done",y.approval=void 0;let f=m;f.reasoning&&(y.reasoning=f.reasoning)}e.streaming=!1,e.step=null;break;case"wf:error":y&&(y.status="error",y.error=m,y.approval=void 0),e.error=m,e.streaming=!1,e.step=null;break;default:g?.(b,m);break}r?.()}function l(){let b=t.body?t.body(e.messages):{messages:Mn(e.messages)};o=n(t.url,b,{onToken:g=>i("wf:token",{text:g}),onToolCall:g=>i("wf:tool_call",g),onToolProgress:g=>i("wf:tool_progress",g),onToolResult:g=>i("wf:tool_result",g),onApproval:g=>i("wf:approval_request",g),onUsage:g=>i("wf:usage",g),onStep:g=>i("wf:step",g),onDone:g=>i("wf:done",g),onError:g=>i("wf:error",g),onEvent:(g,y)=>i(g,y,t.onEvent)},{signal:t.signal,headers:t.headers}),e.streaming=!0;let m=s();m&&o?.traceId&&(m.id=o.traceId)}function u(){if(e.streaming)return;let b=String(e.input??"").trim();b&&(e.input="",e.error=null,e.usage=null,e.step=null,e.messages.push({id:qe(),role:"user",content:b,status:"done"},{id:qe(),role:"assistant",content:"",status:"streaming",toolCalls:[]}),l(),r?.())}function d(){o?.abort(),e.streaming=!1,e.step=null;let b=e.messages[e.messages.length-1];b&&b.role==="assistant"&&b.status==="streaming"&&(!b.content&&(!b.toolCalls||b.toolCalls.length===0)?e.messages.pop():b.status="done"),r?.()}function a(){if(e.streaming)return;let b=-1;for(let m=e.messages.length-1;m>=0;m--)if(e.messages[m].role==="user"){b=m;break}b!==-1&&(e.messages.splice(b+1),e.error=null,e.usage=null,e.step=null,e.messages.push({id:qe(),role:"assistant",content:"",status:"streaming",toolCalls:[]}),l(),r?.())}function c(){o?.abort(),e.messages=[],e.input="",e.streaming=!1,e.error=null,e.usage=null,e.step=null,r?.()}async function p(b,m,g){let y=e.messages[e.messages.length-1],f=y?.role==="assistant"?y.approval:void 0;if(f&&(y.approval=void 0,r?.(),!!t.approveUrl))try{await fetch(t.approveUrl,{method:"POST",headers:{"Content-Type":"application/json",...t.headers},body:JSON.stringify(g?{id:f.id,decision:b,note:m,modifiedArgs:g}:{id:f.id,decision:b,note:m}),signal:t.signal})}catch(h){if(t.signal?.aborted)return;e.error={code:"provider_error",message:h instanceof Error?h.message:String(h)},r?.()}}function w(){o?.abort(),o=null}return{send:u,stop:d,retry:a,clear:c,approve:p,dispose:w}}function sn(e,n,t){let r=new AbortController,o=t?.signal;o&&(o.aborted?r.abort():o.addEventListener("abort",()=>r.abort(),{once:!0}));let s=t?.traceId??Un(),i=t?.record!==!1,l=[],u=(async()=>{let d;try{d=await fetch(e,{method:"POST",headers:{"Content-Type":"application/json","X-Trace-Id":s,Accept:"text/event-stream",...t?.headers},body:JSON.stringify(n),signal:r.signal})}catch(a){if(r.signal.aborted)return;t?.onError?.({code:"provider_error",message:a instanceof Error?a.message:String(a)});return}if(!d.ok){t?.onError?.({code:On(d.status),message:`HTTP ${d.status} ${d.statusText}`});return}try{for await(let{name:a,data:c}of Hn(d.body)){if(r.signal.aborted)return;In(l,{name:a,data:c},i),Ln(a,c,t??{})}}catch(a){if(r.signal.aborted)return;t?.onError?.({code:"provider_error",message:a instanceof Error?a.message:String(a)})}})();return{abort:()=>r.abort(),done:u,traceId:s,events:l}}function Ln(e,n,t){switch(e){case"wf:token":return t.onToken?.(n.text);case"wf:tool_call":return t.onToolCall?.(n);case"wf:tool_result":return t.onToolResult?.(n);case"wf:tool_progress":return t.onToolProgress?.(n);case"wf:step":return t.onStep?.(n);case"wf:approval_request":return t.onApproval?.(n);case"wf:usage":return t.onUsage?.(n);case"wf:done":return t.onDone?.(n);case"wf:error":return t.onError?.(n);default:return t.onEvent?.(e,n)}}async function*Hn(e){let n=e.getReader(),t=new TextDecoder,r="";try{for(;;){let{done:o,value:s}=await n.read();if(o)break;r+=t.decode(s,{stream:!0});let i=r.split(`
|
|
4
4
|
|
|
5
|
-
`);r=
|
|
6
|
-
`))i.startsWith("event: ")?l=i.slice(7):i.startsWith("data: ")&&(u+=i.slice(6));if(u)try{yield{name:l,data:JSON.parse(u)}}catch{}}}}finally{t.releaseLock()}}function Mn(e,t,n){n&&(e.length>=1e3&&e.shift(),e.push(t))}function An(e){return e===401||e===403?"auth_failed":e===429?"rate_limited":e>=500?"provider_error":"invalid_request"}function Ln(){return typeof crypto<"u"&&typeof crypto.randomUUID=="function"?crypto.randomUUID():`trace-${Date.now()}-${Math.random().toString(36).slice(2,10)}`}function qe(e,t){let n={messages:[],input:"",streaming:!1,error:null,usage:null,step:null},r=new Set,s=sn(n,an,t,()=>{for(let d of[...r])d()});Object.assign(n,s),n.subscribe=d=>(r.add(d),()=>{r.delete(d)});let a=e.selfId();if(a){let d=e.onUnmount(l=>{l===a&&(s.dispose(),d())})}return n}function $e(e,t){let n=e.selfId(),r;return n&&(r=t.subscribe(()=>e.render([n])),e.onUnmount(()=>r?.())),t}function ue(e){let t=e.registry??ve(),n={_selfId:"_wf_root",_mounting:!1,_rendering:!1,_ctxVersion:0},r={browser:e.browser,__registry:t},o=e.scheduler??Ce({registry:t,ctx:r,rootEl:e.root});n.render=function(f){if(f==null){let g=this._selfId??"_wf_root";return g?o.render([g]):Promise.resolve()}return o.render(f)},n.setMounting=f=>{n._mounting=f},n.endMounting=()=>{n._mounting=!1},r.ui=n;let s=Je(f=>{for(let g of f)o.render([g])}),{mediaRegistry:a,popupTrackers:d,scrollTrackers:l,ensurePopupListeners:u,destroyPopupListeners:i,cleanupTrackers:c}=s;be(t,f=>{c(f),d.has(f)&&d.delete(f)});let y=new Set,w=new Map,h=new Map,m=new Map,p=f=>({selfId:()=>{let g=f?._selfVNode?._id??f?._selfId;return typeof g=="string"?g:void 0},render:g=>o.render(g),browser:e.browser,onUnmount:g=>be(t,g),registry:t,mediaRegistry:a,popupTrackers:d,scrollTrackers:l,isMounting:()=>n._mounting===!0,isRendering:()=>n._rendering===!0,warned:y,uncontrolledValues:w,inputStates:h,openStates:m,ensurePopupListeners:u});return n.bumpCtxVersion=()=>{n._ctxVersion=(n._ctxVersion??0)+1},n.selfId=function(f){if(typeof f!="string"||!f)throw new Error(`[weifuwu] selfId requires a non-empty string, got ${typeof f}`);if(t.idRegistry.has(f))throw new Error(`[weifuwu] Duplicate component ID: "${f}". Each component must have a unique custom ID.`);let g=this._selfVNode;g&&(g._customId=f,t.idRegistry.set(f,g))},n.useChat=function(f){return qe(p(this),f)},n.useMedia=function(f,g){return ke(p(this),f,g)},n.useBreakpoint=function(f,g){return Ne(p(this),f,g)},n.usePopupPosition=function(f){return le(p(this),f)},n.useHoverCapable=function(){return Y(p(this))},n.useStableRef=function(f,g){return Ee(p(this),f,g)},n.useVisualViewport=function(){return Ve(p(this))},n.usePopup=function(f){return Ue(p(this),f)},n.useLongPress=function(f){return Te(p(this),f)},n.useInView=function(f){return _e(p(this),f)},n.useScrollPosition=function(f){return Se(p(this),f)},n.useAsync=function(f){return Me(p(this),f)},n.useControlled=function(f){return se(p(this),f)},n.useControlledInput=function(f){return Re(p(this),f)},n.useOpen=function(f){return De(p(this),f)},n.usePresence=function(f){return X(p(this),f)},n.useDialog=function(f){return We(p(this),f)},n.useGlobalKey=function(f){return Ae(p(this),f)},n.useDrag=function(f){return Le(p(this),f)},n.useDragDrop=function(f){return He(p(this),f)},n.useExternal=function(f){return $e(p(this),f)},n.useReducedMotion=function(){return re(p(this))},n.useAnimationEnd=function(f,g){return xe(p(this),f,g)},n.useTween=function(f,g){return Pe(p(this),f,g)},n.destroyPopupListeners=i,{ctx:r,registry:t,scheduler:o,rootUi:n,destroyPopupListeners:i}}function Hn(e){let{ctx:t,registry:n,scheduler:r,rootUi:o,destroyPopupListeners:s}=ue(e),a=null,d=null;return{ctx:t,registry:n,scheduler:r,async mount(u){a=u;let i=await _(u,t,void 0,n);e.root.innerHTML="";let c=k(i,t,e.browser);c!=null&&e.root.appendChild(c),d=i?._child??i},async rerender(){if(a==null)return;let u=await _(a,t,a,n,{force:!0}),i=a,c=d,y=i._child,w=e.root.firstChild;O(e.root,w,c,y,{browser:e.browser,registry:n}),d=y},unmount(){for(let[,u]of n.idRegistry)try{N(u,n)}catch(i){console.error("[weifuwu] unmount ref error",i)}e.root.innerHTML="",n.idRegistry.clear(),s()}}}function In(e){return e.__registry??(e.__registry=ve())}function On(e,t,n,r){let o=In(n),s=n.browser??P();return _(t,n,void 0,o).then(()=>{let a=k(t,n,s);if(a!=null&&e.appendChild(a),t._id&&o){let d=o.idRegistry.get(t._id);d&&(d._parentNode=e)}r?.onMounted?.()}).catch(a=>console.error("[weifuwu] command mount error",a)),{id:t._id??""}}function Un(e,t,n){let r=n.__registry;t&&r&&(N(t,r),t._id&&ee(r,t._id)),e.remove()}function Dn(){let e=P(),t=e.createElement("div");return t?(e.bodyAppend(t),t):null}function Wn(e,t){let n=P(),r=typeof t.root=="string"?n.query(t.root):t.root;if(!r)throw new Error(`uiServe: root not found: ${t.root}`);let o=r;!t.hydrate&&!t.loading&&(o.innerHTML="");let{ctx:a,registry:d,scheduler:l,rootUi:u,destroyPopupListeners:i}=ue({browser:n,root:o}),c=new Map,y=globalThis.__DATA__??window.__DATA__;if(y&&typeof y=="object")for(let[x,S]of Object.entries(y))c.set(x,{value:S});a.data={async get(x,S){let R=c.get(x);if(R&&"value"in R)return R.value;if(R?.promise)return R.promise;if(!S)return;let j=Promise.resolve().then(()=>S()).then(U=>(c.set(x,{value:U}),U));return c.set(x,{promise:j}),j},set(x,S){c.set(x,{value:S})},has(x){return c.has(x)}},a.route={params:{},query:{},path:""};let w=null,h="",m=0,p,f=new Promise(x=>{p=x}),g=!1;async function v(x,S){let R=++m,j={pathname:x,search:""};a.route.path=x;let U;try{U=await e.execute(j,a,x)}catch(M){U=W("div",{class:"ui-dom-error"},`\u9875\u9762\u6E32\u67D3\u5931\u8D25: ${M?.message??String(M)}`)}if(g||R!==m)return;let A;try{A=await _(U,a,w,d)}catch(M){A=W("div",{class:"ui-dom-error"},`\u7EC4\u4EF6\u6E32\u67D3\u5931\u8D25: ${M?.message??String(M)}`)}if(!(g||R!==m)){if(S){o.innerHTML="";let M=k(A,a,n);M!=null&&o.appendChild(M)}else if(w!==void 0){let M=w;w=A;let z=M?.el??M?._refNode??null;O(o,z,M,A,{browser:n,registry:d,ctxVersion:0})}w=A,h=x}}let E=n.pathname();v(E,!0).finally(()=>{g||p()});let C=()=>{let x=n.pathname();x!==h&&v(x,!1)};return n.addEventListener("popstate",C),{close(){g=!0,n.removeEventListener("popstate",C),i(),d.idRegistry.clear()},ready:f,ctx:a}}function Fe(e){e.node=e.node?e.node.nextSibling:null}function jn(e,t){e.node&&e.node.parentNode?e.node.parentNode.insertBefore(t,e.node):e.parent.appendChild(t)}function qn(e,t){e.node&&e.node.parentNode?(e.node.parentNode.replaceChild(t,e.node),Fe(e)):e.parent.appendChild(t)}function $n(e,t){for(let[n,r]of Object.entries(t))n==="children"||n==="key"||n==="innerHTML"||G(e,n,r)}function Q(e,t,n){let r=t.browser??P();if(e==null||typeof e=="boolean")return null;if(typeof e=="string"||typeof e=="number"){let l=String(e);if(n.node&&n.node.nodeType===3)return n.node.textContent!==l&&(n.node.textContent=l),Fe(n),n.node;let u=r.createTextNode(l);return jn(n,u),u}if(Array.isArray(e)){let l=null;for(let u of e){let i=Q(u,t,n);i!=null&&!l&&(l=i)}return l}let o=e;if(o.type===H||o.type===L){let l=o.props?.children,u=l==null?[]:Array.isArray(l)?l:[l],i=null;for(let c of u){let y=Q(c,t,n);y!=null&&!i&&(i=y)}return i}if(typeof o.type=="function"){let l=o._child;if(l==null){if(typeof o._render!="function"&&!(o._asyncDef||typeof o._render=="function"))throw new Error(`[vdom] component ${o.type.name||"anonymous"} not built before hydration`);return o._child=null,null}let u=Q(l,t,n);return o._refNode||(o._refNode=u),u}let s=o.type,a=o.props??{},d;if(n.node&&n.node.nodeType===1&&n.node.tagName.toLowerCase()===s.toLowerCase()?(d=n.node,Fe(n)):(d=we.has(s)?r.createElementNS("http://www.w3.org/2000/svg",s):r.createElement(s),qn(n,d)),o.el=d,$n(d,a),!("innerHTML"in a)){let l={parent:d,node:d.firstChild},u=(Array.isArray(a.children)?a.children:[a.children]).flat(1/0);for(let i of u){let c=Q(i,t,l);if(c!=null&&c.parentNode!==d&&d.appendChild(c),i&&typeof i=="object"&&!Array.isArray(i)&&typeof i.type=="function"){let y=i;y._parentNode||(y._parentNode=d,y._refNode=c)}}for(;l.node;){let i=l.node;l.node=i.nextSibling,i.parentNode?.removeChild(i)}}return"value"in a&&d instanceof HTMLSelectElement&&(d.value=String(a.value??"")),d}async function Fn(e,t,n){let r=n.__registry;await _(t,n,void 0,r);let o={parent:e,node:e.firstChild};for(Q(t,n,o);o.node;){let s=o.node;o.node=s.nextSibling,s.parentNode?.removeChild(s)}}var Bn=new Set(["area","base","br","col","embed","hr","img","input","link","meta","param","source","track","wbr"]),Kn=new Set(["svg","path","circle","rect","line","polyline","polygon","g","text","defs","use","clipPath"]);function de(e){return e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")}function zn(e){return typeof e=="string"?e:Array.isArray(e)?e.filter(Boolean).join(" "):e&&typeof e=="object"?Object.entries(e).filter(([,t])=>t).map(([t])=>t).join(" "):""}function Gn(e){return Object.entries(e).filter(([,t])=>t!=null).map(([t,n])=>{let r=t.replace(/[A-Z]/g,s=>"-"+s.toLowerCase()),o=typeof n=="number"&&n!==0?`${n}px`:String(n);return`${r}:${o}`}).join(";")}async function K(e,t){if(e==null||typeof e=="boolean")return"";if(typeof e=="string"||typeof e=="number")return de(String(e));if(Array.isArray(e)){let i="";for(let c of e)i+=await K(c,t);return i}let n=e;if(n.type===H||n.type===L)return K(n.props?.children,t);if(typeof n.type=="function"){let i=Object.create(t),c=await n.type(n.props??{},i);if(typeof c!="function")throw new Error(`Component ${n.type.name||"anonymous"} must return a render function. Use (init_props, ctx) => (props) => VNode pattern.`);return K(c(n.props??{}),i)}let r=n.type,o=n.props??{},s=[],a;for(let[i,c]of Object.entries(o))if(!(i==="children"||i==="key")&&i!=="ref"&&!(i.startsWith("on")&&typeof c=="function")){if(i==="innerHTML"){a=String(c??"");continue}if(i==="class"||i==="className"){let y=zn(c);y&&s.push(` class="${de(y)}"`);continue}if(i==="style"&&c&&typeof c=="object"){s.push(` style="${de(Gn(c))}"`);continue}if(i==="draggable"||i==="contenteditable"||i==="spellcheck"){s.push(` ${i}="${c?"true":"false"}"`);continue}if(c===!0){s.push(` ${i}`);continue}c===!1||c==null||s.push(` ${i}="${de(String(c))}"`)}let d=s.join(""),l=Kn.has(r);if(Bn.has(r))return`<${r}${d}>`;if(a!==void 0)return`<${r}${d}>${a}</${r}>`;let u=await K(o.children,t);return l?`<${r}${d}>${u}</${r}>`:`<${r}${d}>${u}</${r}>`}function Yn(){let e=()=>()=>{},t=()=>({});return{_selfId:"_wf_root",render:()=>{},dirty:()=>{},$:()=>({}),selfId:()=>{},bumpCtxVersion:()=>{},setMounting:()=>{},endMounting:()=>{},useChat:()=>({messages:[],input:"",streaming:!1,error:null,usage:null,step:null,send:()=>{},stop:()=>{},retry:()=>{},clear:()=>{},approve:()=>{},subscribe:()=>()=>{}}),useExternal:n=>n,useMedia:e,useBreakpoint:e,usePopupPosition:()=>({top:0,left:0,refresh:()=>{}}),useHoverCapable:()=>!1,useStableRef:n=>r=>{r&&n?.(r)},useVisualViewport:()=>({height:0,offsetTop:0,keyboardOpen:!1}),usePopup:()=>({open:!1,setOpen:()=>{},wrapProps:{},portal:()=>null,refresh:()=>{}}),useLongPress:t,useInView:()=>({isIn:!1,ready:!1,observe:()=>{},refresh:()=>{},disconnect:()=>{}}),useScrollPosition:()=>({y:0,refresh:()=>{}}),useAsync:()=>({data:void 0,loading:!0,error:void 0,reload:()=>{}}),useControlled:()=>({value:void 0,setValue:()=>{},controlled:!1}),useControlledInput:()=>({value:void 0,setValue:()=>{},keyword:"",setKeyword:()=>{},selectedLabel:"",setSelectedLabel:()=>{},controlled:!1}),useOpen:()=>({open:!1,setOpen:()=>{},triggerProps:{}}),usePresence:()=>({phase:"closed",ref:()=>{},sync:()=>"closed"}),useDialog:()=>({phase:"closed",rootRef:()=>{},panelRef:()=>{},sync:n=>n?"open":"closed"}),useGlobalKey:()=>()=>{},useDrag:t,useDragDrop:()=>({dropProps:{},dragProps:{}}),useReducedMotion:()=>!0,useAnimationEnd:()=>()=>{},useTween:n=>{let r=n;return{get value(){return r},set value(o){r=o},reset:o=>(o!==void 0&&(r=o),r)}}}}function ln(e,t){let n={...e,ui:Yn(),browser:void 0},r=new Map;return n.data={async get(o,s){let a=r.get(o);if(a&&"value"in a)return a.value;if(a?.promise)return a.promise;if(!s)return;let d=Promise.resolve().then(()=>s()).then(l=>(r.set(o,{value:l}),t.set(o,l),l));return r.set(o,{promise:d}),d},set(o,s){r.set(o,{value:s}),t.set(o,s)},has(o){return r.has(o)}},n}function un(e){return`<script>window.__DATA__=${JSON.stringify(Object.fromEntries(e)).replace(/</g,"\\u003c")};<\/script>`}async function Xn(e,t){let n=new Map,o=ln({params:{},query:{}},n),s=t.url.split("?")[0].split("#")[0],a=e.match(s);o.params=a.params,o.query=Object.fromEntries(new URLSearchParams(t.url.split("?")[1]??""));let d=new URL(t.url.startsWith("http")?t.url:`http://localhost${t.url.startsWith("/")?t.url:"/"+t.url}`),l=await e.execute(d,o,s),u=await K(l,o),i=un(n),c=a.title??t.title??"",y=t.rootId??"root",w=(t.styles??[]).map(m=>` <link rel="stylesheet" href="${m}">`).join(`
|
|
7
|
-
`),
|
|
8
|
-
<html lang="${
|
|
5
|
+
`);r=i.pop()??"";for(let l of i){let u="message",d="";for(let a of l.split(`
|
|
6
|
+
`))a.startsWith("event: ")?u=a.slice(7):a.startsWith("data: ")&&(d+=a.slice(6));if(d)try{yield{name:u,data:JSON.parse(d)}}catch{}}}}finally{n.releaseLock()}}function In(e,n,t){t&&(e.length>=1e3&&e.shift(),e.push(n))}function On(e){return e===401||e===403?"auth_failed":e===429?"rate_limited":e>=500?"provider_error":"invalid_request"}function Un(){return typeof crypto<"u"&&typeof crypto.randomUUID=="function"?crypto.randomUUID():`trace-${Date.now()}-${Math.random().toString(36).slice(2,10)}`}function Fe(e,n){let t={messages:[],input:"",streaming:!1,error:null,usage:null,step:null},r=new Set,s=on(t,sn,n,()=>{for(let l of[...r])l()});Object.assign(t,s),t.subscribe=l=>(r.add(l),()=>{r.delete(l)});let i=e.selfId();if(i){let l=e.onUnmount(u=>{u===i&&(s.dispose(),l())})}return t}function Be(e,n){let t=e.selfId(),r;return t&&(r=n.subscribe(()=>e.render([t])),e.onUnmount(()=>r?.())),n}function an(e){let n=new Map;async function t(s){let i=n.get(s);if(i)return await i,n.has(s)?void 0:t(s);let l=r(s);n.set(s,l);try{await l}finally{n.delete(s)}}async function r(s){let i=e.registry.idRegistry.get(s);if(!(!i||typeof i._render!="function"))try{let l={browser:e.ctx.browser,registry:e.registry,ctxVersion:e.ctx?.ui?._ctxVersion??0},u=await i._render(i.props),d=await M(u,e.ctx,i._child,e.registry)??null,a=i._child;i._child=d;let c=i._parentNode??i._refNode?.parentNode??e.rootEl??null;if(c){let p=O(c,i._refNode??null,a,d,l);p?i._refNode=p:i._refNode=null}}catch(l){e.onError?e.onError(l):console.error("[weifuwu] render error:",l?.stack??l)}}function o(s){if(s==null){let i=e.ctx.ui?._selfId;return i?t(i):Promise.resolve()}return Promise.all(s.map(i=>t(i))).then(()=>{})}return{render:o}}function fe(e){let n=e.registry??Te(),t={_selfId:"_wf_root",_mounting:!1,_ctxVersion:0,_rootVNodeId:void 0},r={browser:e.browser,__registry:n},o=e.renderer??an({registry:n,ctx:r,rootEl:e.root}),s=!1;t.render=function(f){if(f==null){let h=this._selfId!=="_wf_root"&&this._selfId?this._selfId:t._rootVNodeId;return h?o.render([h]):(s||(s=!0,console.warn("[weifuwu] render() \u65E0\u53C2\u4F46\u65E0\u6E32\u67D3\u76EE\u6807\uFF1A\u9875\u9762\u6839\u662F native vnode\uFF08UIHandler \u76F4\u63A5\u8FD4\u56DE vnode \u7684\u9875\u9762\u5F62\u6001\uFF09\uFF0C\u5185\u90E8\u72B6\u6001\u6E32\u67D3\u65E0\u6548\u3002\u6539\u7528 async \u7EC4\u4EF6\u5F62\u6001\uFF08const Page: Component = async ... => (props) => ...\uFF09\u6216 createStore + useExternal \u5171\u4EAB\u72B6\u6001\u3002")),Promise.resolve())}return o.render(f)},t.setMounting=f=>{t._mounting=f},t.endMounting=()=>{t._mounting=!1},r.ui=t;let i=Qe(f=>{for(let h of f)o.render([h])}),{mediaRegistry:l,popupTrackers:u,scrollTrackers:d,ensurePopupListeners:a,destroyPopupListeners:c,cleanupTrackers:p}=i;Ne(n,f=>{p(f),u.has(f)&&u.delete(f)});let w=new Set,b=new Map,m=new Map,g=new Map,y=f=>({selfId:()=>{let h=f?._selfVNode?._id??f?._selfId;return typeof h=="string"?h:void 0},render:h=>o.render(h),browser:e.browser,onUnmount:h=>Ne(n,h),registry:n,mediaRegistry:l,popupTrackers:u,scrollTrackers:d,isMounting:()=>t._mounting===!0,warned:w,uncontrolledValues:b,inputStates:m,openStates:g,ensurePopupListeners:a});return t.bumpCtxVersion=()=>{t._ctxVersion=(t._ctxVersion??0)+1},t.selfId=function(f){if(typeof f!="string"||!f)throw new Error(`[weifuwu] selfId requires a non-empty string, got ${typeof f}`);if(n.idRegistry.has(f))throw new Error(`[weifuwu] Duplicate component ID: "${f}". Each component must have a unique custom ID.`);let h=this._selfVNode;h&&(h._customId=f,n.idRegistry.set(f,h))},t.useChat=function(f){return Fe(y(this),f)},t.useMedia=function(f,h){return Re(y(this),f,h)},t.useBreakpoint=function(f,h){return Ae(y(this),f,h)},t.usePopupPosition=function(f){return ce(y(this),f)},t.useHoverCapable=function(){return J(y(this))},t.useStableRef=function(f,h){return Ve(y(this),f,h)},t.useVisualViewport=function(){return Me(y(this))},t.usePopup=function(f){return je(y(this),f)},t.useLongPress=function(f){return ke(y(this),f)},t.useInView=function(f){return Le(y(this),f)},t.useScrollPosition=function(f){return He(y(this),f)},t.useAsync=function(f){return Oe(y(this),f)},t.useControlled=function(f){return ue(y(this),f)},t.useControlledInput=function(f){return Ie(y(this),f)},t.useOpen=function(f){return $e(y(this),f)},t.usePresence=function(f){return Q(y(this),f)},t.useGlobalKey=function(f){return Ue(y(this),f)},t.useDrag=function(f){return We(y(this),f)},t.useDragDrop=function(f){return De(y(this),f)},t.useExternal=function(f){return Be(y(this),f)},t.useReducedMotion=function(){return le(y(this))},t.useAnimationEnd=function(f,h){return _e(y(this),f,h)},t.useTween=function(f,h){return Se(y(this),f,h)},t.destroyPopupListeners=c,{ctx:r,registry:n,renderer:o,rootUi:t,destroyPopupListeners:c}}function Wn(e){let{ctx:n,registry:t,renderer:r,rootUi:o,destroyPopupListeners:s}=fe(e),i=null,l=null;return{ctx:n,registry:t,renderer:r,async mount(d){i=d;let a=await M(d,n,void 0,t);e.root.innerHTML="";let c=S(a,n,e.browser);c!=null&&e.root.appendChild(c),l=a?._child??a,o._rootVNodeId=a?._id},async rerender(){if(i==null)return;let d=await M(i,n,i,t,{force:!0}),a=i,c=l,p=a._child,w=e.root.firstChild;O(e.root,w,c,p,{browser:e.browser,registry:t,ctxVersion:n?.ui?._ctxVersion??0,force:!0}),l=p},unmount(){for(let[,d]of t.idRegistry)try{R(d,t)}catch(a){console.error("[weifuwu] unmount ref error",a)}e.root.innerHTML="",t.idRegistry.clear(),s()}}}function Dn(e){return e.__registry??(e.__registry=Te())}function jn(e,n,t,r){let o=Dn(t),s=t.browser??_();return Promise.resolve(M(n,t,void 0,o)).then(()=>{let i=S(n,t,s);if(i!=null&&e.appendChild(i),n._id&&o){let l=o.idRegistry.get(n._id);l&&(l._parentNode=e)}r?.onMounted?.()}).catch(i=>console.error("[weifuwu] command mount error",i)),{id:n._id??""}}function $n(e,n,t){let r=t.__registry;n&&r&&(R(n,r),n._id&&oe(r,n._id)),e.remove()}function qn(){let e=_(),n=e.createElement("div");return n?(e.bodyAppend(n),n):null}function Fn(e,n){let t=_(),r=typeof n.root=="string"?t.query(n.root):n.root;if(!r)throw new Error(`uiServe: root not found: ${n.root}`);let o=r;!n.hydrate&&!n.loading&&(o.innerHTML="");let{ctx:i,registry:l,renderer:u,rootUi:d,destroyPopupListeners:a}=fe({browser:t,root:o}),c=new Map,p=globalThis.__DATA__??window.__DATA__;if(p&&typeof p=="object")for(let[C,T]of Object.entries(p))c.set(C,{value:T});i.data={async get(C,T){let E=c.get(C);if(E&&"value"in E)return E.value;if(E?.promise)return E.promise;if(!T)return;let V=Promise.resolve().then(()=>T()).then(W=>(c.set(C,{value:W}),W));return c.set(C,{promise:V}),V},set(C,T){c.set(C,{value:T})},has(C){return c.has(C)}},i.route={params:{},query:{},path:""};let w=null,b="",m=0,g,y=new Promise(C=>{g=C}),f=!1;async function h(C,T){let E=++m,V={pathname:C,search:""};i.route.path=C;let W;try{W=await e.execute(V,i,C)}catch(A){W=j("div",{class:"ui-dom-error"},`\u9875\u9762\u6E32\u67D3\u5931\u8D25: ${A?.message??String(A)}`)}if(f||E!==m)return;let U;try{U=await M(W,i,w,l)}catch(A){U=j("div",{class:"ui-dom-error"},`\u7EC4\u4EF6\u6E32\u67D3\u5931\u8D25: ${A?.message??String(A)}`)}if(!(f||E!==m)){if(T){o.innerHTML="";let A=S(U,i,t);A!=null&&o.appendChild(A)}else if(w!==void 0){let A=w;w=U;let me=A?.el??A?._refNode??null;O(o,me,A,U,{browser:t,registry:l,ctxVersion:i?.ui?._ctxVersion??0})}w=U,b=C,d._rootVNodeId=U?._id}}let x=t.pathname();h(x,!0).finally(()=>{f||g()});let P=()=>{let C=t.pathname();C!==b&&h(C,!1)};return t.addEventListener("popstate",P),{close(){f=!0,t.removeEventListener("popstate",P),a(),l.idRegistry.clear()},ready:y,ctx:i}}function Ke(e){e.node=e.node?e.node.nextSibling:null}function Bn(e,n){e.node&&e.node.parentNode?e.node.parentNode.insertBefore(n,e.node):e.parent.appendChild(n)}function Kn(e,n){e.node&&e.node.parentNode?(e.node.parentNode.replaceChild(n,e.node),Ke(e)):e.parent.appendChild(n)}function zn(e,n){for(let[t,r]of Object.entries(n))t==="children"||t==="key"||t==="innerHTML"||Y(e,t,r)}function ee(e,n,t){let r=n.browser??_();if(e==null||typeof e=="boolean")return null;if(typeof e=="string"||typeof e=="number"){let u=String(e);if(t.node&&t.node.nodeType===3)return t.node.textContent!==u&&(t.node.textContent=u),Ke(t),t.node;let d=r.createTextNode(u);return Bn(t,d),d}if(Array.isArray(e)){let u=null;for(let d of e){let a=ee(d,n,t);a!=null&&!u&&(u=a)}return u}let o=e;if(o.type===H||o.type===L){let u=o.props?.children,d=u==null?[]:Array.isArray(u)?u:[u],a=null;for(let c of d){let p=ee(c,n,t);p!=null&&!a&&(a=p)}return a}if(typeof o.type=="function"){let u=o._child;if(u==null){if(typeof o._render!="function")throw new Error(`[vdom] component ${o.type.name||"anonymous"} not built before hydration`);return o._child=null,null}let d=ee(u,n,t);return o._refNode||(o._refNode=d),d}let s=o.type,i=o.props??{},l;if(t.node&&t.node.nodeType===1&&t.node.tagName.toLowerCase()===s.toLowerCase()?(l=t.node,Ke(t)):(l=Ee.has(s)?r.createElementNS("http://www.w3.org/2000/svg",s):r.createElement(s),Kn(t,l)),o.el=l,zn(l,i),!("innerHTML"in i)){let u={parent:l,node:l.firstChild},d=(Array.isArray(i.children)?i.children:[i.children]).flat(1/0);for(let a of d){let c=ee(a,n,u);if(c!=null&&c.parentNode!==l&&l.appendChild(c),a&&typeof a=="object"&&!Array.isArray(a)&&typeof a.type=="function"){let p=a;p._parentNode||(p._parentNode=l,p._refNode=c)}}for(;u.node;){let a=u.node;u.node=a.nextSibling,a.parentNode?.removeChild(a)}}return"value"in i&&l instanceof HTMLSelectElement&&(l.value=String(i.value??"")),l}async function Gn(e,n,t){let r=t.__registry;await M(n,t,void 0,r);let o={parent:e,node:e.firstChild};for(ee(n,t,o);o.node;){let s=o.node;o.node=s.nextSibling,s.parentNode?.removeChild(s)}}var Yn=new Set(["area","base","br","col","embed","hr","img","input","link","meta","param","source","track","wbr"]),Xn=new Set(["svg","path","circle","rect","line","polyline","polygon","g","text","defs","use","clipPath"]);function pe(e){return e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")}function Jn(e){return typeof e=="string"?e:Array.isArray(e)?e.filter(Boolean).join(" "):e&&typeof e=="object"?Object.entries(e).filter(([,n])=>n).map(([n])=>n).join(" "):""}function Qn(e){return Object.entries(e).filter(([,n])=>n!=null).map(([n,t])=>{let r=n.replace(/[A-Z]/g,s=>"-"+s.toLowerCase()),o=typeof t=="number"&&t!==0?`${t}px`:String(t);return`${r}:${o}`}).join(";")}async function z(e,n){if(e==null||typeof e=="boolean")return"";if(typeof e=="string"||typeof e=="number")return pe(String(e));if(Array.isArray(e))return(await Promise.all(e.map(c=>z(c,n)))).join("");let t=e;if(t.type===H||t.type===L)return z(t.props?.children,n);if(typeof t.type=="function"){let a=Object.create(n),c=await t.type(t.props??{},a);if(typeof c!="function")throw new Error(`Component ${t.type.name||"anonymous"} must return a render function. Use (init_props, ctx) => (props) => VNode pattern.`);return z(await c(t.props??{}),a)}let r=t.type,o=t.props??{},s=[],i;for(let[a,c]of Object.entries(o))if(!(a==="children"||a==="key")&&a!=="ref"&&!(a.startsWith("on")&&typeof c=="function")){if(a==="innerHTML"){i=String(c??"");continue}if(a==="class"||a==="className"){let p=Jn(c);p&&s.push(` class="${pe(p)}"`);continue}if(a==="style"&&c&&typeof c=="object"){s.push(` style="${pe(Qn(c))}"`);continue}if(a==="draggable"||a==="contenteditable"||a==="spellcheck"){s.push(` ${a}="${c?"true":"false"}"`);continue}if(c===!0){s.push(` ${a}`);continue}c===!1||c==null||s.push(` ${a}="${pe(String(c))}"`)}let l=s.join(""),u=Xn.has(r);if(Yn.has(r))return`<${r}${l}>`;if(i!==void 0)return`<${r}${l}>${i}</${r}>`;let d=await z(o.children,n);return u?`<${r}${l}>${d}</${r}>`:`<${r}${l}>${d}</${r}>`}function Zn(){let e=()=>()=>{},n=()=>({});return{_selfId:"_wf_root",render:()=>{},selfId:()=>{},bumpCtxVersion:()=>{},setMounting:()=>{},endMounting:()=>{},useChat:()=>({messages:[],input:"",streaming:!1,error:null,usage:null,step:null,send:()=>{},stop:()=>{},retry:()=>{},clear:()=>{},approve:()=>{},subscribe:()=>()=>{}}),useExternal:t=>t,useMedia:e,useBreakpoint:e,usePopupPosition:()=>({top:0,left:0,refresh:()=>{}}),useHoverCapable:()=>!1,useStableRef:t=>r=>{r&&t?.(r)},useVisualViewport:()=>({height:0,offsetTop:0,keyboardOpen:!1}),usePopup:()=>({open:!1,setOpen:()=>{},phase:"closed",sync:t=>t?"open":"closed",wrapProps:{},portal:t=>t,refresh:()=>{}}),useLongPress:n,useInView:()=>({isIn:!1,ready:!1,observe:()=>{},refresh:()=>{},disconnect:()=>{}}),useScrollPosition:()=>({y:0,refresh:()=>{}}),useAsync:()=>({data:void 0,loading:!0,error:void 0,reload:()=>{}}),useControlled:()=>({value:void 0,setValue:()=>{},controlled:!1}),useControlledInput:()=>({value:void 0,setValue:()=>{},keyword:"",setKeyword:()=>{},selectedLabel:"",setSelectedLabel:()=>{},controlled:!1}),useOpen:()=>({open:!1,setOpen:()=>{},triggerProps:{}}),usePresence:()=>({phase:"closed",ref:()=>{},sync:()=>"closed"}),useGlobalKey:()=>()=>{},useDrag:n,useDragDrop:()=>({dropProps:{},dragProps:{}}),useReducedMotion:()=>!0,useAnimationEnd:()=>()=>{},useTween:t=>{let r=t;return{get value(){return r},set value(o){r=o},reset:o=>(o!==void 0&&(r=o),r)}}}}function ln(e,n){let t={...e,ui:Zn(),browser:void 0},r=new Map;return t.data={async get(o,s){let i=r.get(o);if(i&&"value"in i)return i.value;if(i?.promise)return i.promise;if(!s)return;let l=Promise.resolve().then(()=>s()).then(u=>(r.set(o,{value:u}),n.set(o,u),u));return r.set(o,{promise:l}),l},set(o,s){r.set(o,{value:s}),n.set(o,s)},has(o){return r.has(o)}},t}function un(e){return`<script>window.__DATA__=${JSON.stringify(Object.fromEntries(e)).replace(/</g,"\\u003c")};<\/script>`}async function et(e,n){let t=new Map,o=ln({params:{},query:{}},t),s=n.url.split("?")[0].split("#")[0],i=e.match(s);o.params=i.params,o.query=Object.fromEntries(new URLSearchParams(n.url.split("?")[1]??""));let l=new URL(n.url.startsWith("http")?n.url:`http://localhost${n.url.startsWith("/")?n.url:"/"+n.url}`),u=await e.execute(l,o,s),d=await z(u,o),a=un(t),c=i.title??n.title??"",p=n.rootId??"root",w=(n.styles??[]).map(m=>` <link rel="stylesheet" href="${m}">`).join(`
|
|
7
|
+
`),b=`<!DOCTYPE html>
|
|
8
|
+
<html lang="${n.lang??"zh-CN"}">
|
|
9
9
|
<head>
|
|
10
10
|
<meta charset="UTF-8">
|
|
11
11
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
@@ -13,8 +13,8 @@ function mn(e){let t=[],n=(e||"/").replace(/:(\w+)/g,(r,o)=>(t.push(o),"([^/]+)"
|
|
|
13
13
|
${w}
|
|
14
14
|
</head>
|
|
15
15
|
<body>
|
|
16
|
-
<div id="${
|
|
17
|
-
${
|
|
16
|
+
<div id="${p}">${d}</div>
|
|
17
|
+
${a}
|
|
18
18
|
<script src="/app.js"><\/script>
|
|
19
19
|
</body>
|
|
20
|
-
</html>`;return{html:
|
|
20
|
+
</html>`;return{html:d,dataScript:a,page:b}}async function nt(e,n,t,r={}){let o=r.data??new Map,s=ln(t,o);return z({type:e,props:n??{},key:void 0},s)}function tt(e){let n={...e},t=new Set,r=()=>{for(let o of[...t])o()};return{state:n,subscribe(o){return t.add(o),()=>{t.delete(o)}},set(o){Object.assign(n,o),r()},update(o){o(n),r()},notify:r}}export{L as Fragment,H as Portal,be as UIRouter,wn as animateOut,bn as api,xn as auth,M as buildVNode,_ as createClientBrowser,qn as createCommandContainer,te as createPortal,an as createRenderer,tt as createStore,fe as createVdomContext,j as h,Gn as hydrateVNode,ve as jsx,hn as jsxDEV,gn as jsxs,jn as mountCommand,Wn as mountRoot,O as patchValue,S as renderValue,un as serializeData,et as ssrPage,nt as ssrToString,Fn as uiServe,$n as unmountCommand,En as ws};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
var r=Symbol("Fragment");function o(e,t,n){return{type:e,props:
|
|
1
|
+
var r=Symbol("Fragment");function o(e,t,n){return{type:e,props:d(t),key:n??void 0}}var i=o;function l(e,t,n){return o(e,t,n)}function d(e){if(!e)return{};let t={};for(let n of Object.keys(e))n!=="key"&&(t[n]=e[n]);return t}export{r as Fragment,o as jsx,l as jsxDEV,i as jsxs};
|
package/dist/ui-dom/testing.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var A=Symbol("Fragment"),S=Symbol("Portal");function W(e,n){if(e===n)return!0;let t=Object.keys(e),r=Object.keys(n);if(t.length!==r.length)return!1;for(let o of t)if(e[o]!==n[o])return!1;return!0}async function q(e,n,t,r){e._id||(r?.reuse?._id?e._id=r.reuse._id:e._id=t.nextId(),t.idRegistry.set(e._id,e)),r?.reuse&&(r.reuse._parentNode&&(e._parentNode=r.reuse._parentNode),r.reuse._refNode&&(e._refNode=r.reuse._refNode));let o=Object.create(n);o.ui=Object.create(n.ui);let i=o.ui;if(i._selfId=e._id,i._selfVNode=e,i.render=function(u){return u==null&&e._id?n.ui.render([e._id]):n.ui.render(u)},typeof e._render!="function"&&typeof r?.reuse?._render=="function"&&(e._render=r.reuse._render),typeof e._render!="function"){n.ui?.setMounting?.(!0);let u;try{u=await e.type(e.props??{},o)}finally{n.ui?.endMounting?.()}if(typeof u!="function")throw new Error(`Component ${e.type.name||"anonymous"} must return a render function. Use (init_props, ctx) => (props) => VNode pattern.`);e._render=u}return{renderFn:e._render,childCtx:o}}async function C(e,n,t,r,o){if(e==null||typeof e=="boolean"||typeof e=="string"||typeof e=="number")return e;if(Array.isArray(e)){let a=Array.isArray(t)?t:[];return await Promise.all(e.map((l,s)=>C(l,n,a[s],r,o))),e}let i=e,u=r??n.__registry,m=t!=null&&typeof t=="object"&&!Array.isArray(t)&&t.type===i.type?t:null;if(typeof i.type=="function"){let{childCtx:a}=await q(i,n,u,{reuse:m??void 0}),l=W(m?.props??{},i.props??{});if(o?.force||!l||m?._child==null){let s=await C(i._render(i.props),a,m?._child,u);i._child=s??null}else i._child=m._child;return i}if(i.type===A){let a=await C(i.props?.children??null,n,m?._child??m?.props?.children,u);return i._child=a??null,i}if(typeof i.type=="string"||typeof i.type=="symbol"){let a=await C(i.props?.children??null,n,m?.props?.children,u);return i._child=a??null,i}return i}var U=new Set(["svg","path","circle","rect","line","polyline","polygon","g","text","defs","use","clipPath"]),$=/^on[A-Z]/,K=new Set(["zIndex","opacity","lineHeight","fontWeight","fontSizeAdjust","flex","flexGrow","flexShrink","order","zoom","aspectRatio","gridRow","gridColumn","scale","rotate","animationIterationCount","columnCount","fillOpacity","strokeOpacity","stopOpacity","floodOpacity"]);function D(e,n,t){if(t==null||t===!1)return;let r=e.ownerDocument?.defaultView;if(n==="class"||n==="className"){if(typeof t=="object")for(let[o,i]of Object.entries(t))i&&e.classList.add(o);else e.setAttribute("class",String(t));return}if(n==="style"){if(typeof t=="string")e.setAttribute("style",t);else{let o=e.style;for(let[i,u]of Object.entries(t))u==null?o[i]="":i.startsWith("--")?o.setProperty(i,String(u)):typeof u=="number"&&!K.has(i)?o[i]=`${u}px`:o[i]=String(u)}return}if(n==="ref"){if(typeof t=="function")try{t(e)}catch(o){console.error("[weifuwu] ref error",o)}return}if($.test(n)){let o=n.slice(2).toLowerCase();e.addEventListener(o,t);return}if(n==="value"){e.value=t;return}if(n==="indeterminate"){e.indeterminate=!!t;return}if(n==="innerHTML"){e.innerHTML=String(t??"");return}if(n==="draggable"||n==="contenteditable"||n==="spellcheck"){e.setAttribute(n,t?"true":"false");return}if(n.startsWith("aria-")&&typeof t=="boolean"){e.setAttribute(n,t?"true":"false");return}if(t===!0){e.setAttribute(n,"");return}try{e[n]=t,e.getAttribute(n)!==String(t)&&e.setAttribute(n,String(t))}catch{e.setAttribute(n,String(t))}}function V(e,n,t){let r=n?.browser??t;if(!r)throw new Error("[vdom] renderValue requires browser env (ctx.browser)");if(e==null||typeof e=="boolean")return null;if(typeof e=="string"||typeof e=="number")return r.createTextNode(String(e));if(Array.isArray(e)){let a=r.createDocumentFragment();if(!a)return null;for(let l of e){let s=V(l,n,r);s!=null&&a.appendChild(s)}return a}let o=e;if(o.type===S){let a=r.bodyElement();if(!a)return null;let l=a.querySelector("#__wf_portal");l||(l=r.createElement("div"),l&&(l.id="__wf_portal",a.appendChild(l)));let s=r.createElement("div");if(s){s.setAttribute("data-portal",String(o.props?.portalKey??"wf"));let c=V(o.props?.children??null,n,r);c!=null&&s.appendChild(c),l&&l.appendChild(s),o._remoteEl=s}return null}if(o.type===A){let a=r.createDocumentFragment();if(!a)return null;let l=(Array.isArray(o.props?.children)?o.props.children:[o.props?.children]).flat(1/0);for(let s of l){let c=V(s,n,r);c!=null&&a.appendChild(c)}return o._childNodes=Array.from(a.childNodes),a}if(typeof o.type=="function"){if(typeof o._render!="function")throw new Error(`[vdom] component ${o.type.name||"anonymous"} not built (missing _render) \u2014 buildVNode must run before renderValue`);let a=o._child!==void 0?o._child:o._render(o.props);if(a==null)return o._child=null,null;let l=(Array.isArray(a)||typeof a=="object"&&typeof a.type=="function",a);o._child=l,typeof l=="object"&&!Array.isArray(l)&&(l._parentVNode=o);let s=V(l,n,r);return s&&(o._refNode=s),s}let i=o.type,u=U.has(i)?r.createElementNS("http://www.w3.org/2000/svg",i):r.createElement(i);if(!u)return null;o.el=u;let m;for(let[a,l]of Object.entries(o.props??{}))if(!(a==="children"||a==="key")){if(a==="value"&&u instanceof HTMLSelectElement){m=l;continue}D(u,a,l)}if(!("innerHTML"in(o.props??{}))){let a=(Array.isArray(o.props?.children)?o.props.children:[o.props?.children]).flat(1/0);for(let l of a){let s=V(l,n,r);if(s!=null&&(u.appendChild(s),l&&typeof l=="object"&&!Array.isArray(l)&&typeof l.type=="function")){let c=l;c._parentNode||(c._parentNode=u,c._refNode=s)}}}return m!==void 0&&(u.value=String(m)),u}function x(){return{activeElement:()=>typeof document<"u"?document.activeElement:null,byId:e=>typeof document<"u"?document.getElementById(e):null,query:e=>typeof document<"u"?document.querySelector(e):null,queryAll:e=>typeof document<"u"?document.querySelectorAll(e):null,createElement:e=>typeof document<"u"?document.createElement(e):null,createElementNS:(e,n)=>typeof document<"u"?document.createElementNS(e,n):null,createDocumentFragment:()=>typeof document<"u"?document.createDocumentFragment():null,createComment:e=>typeof document<"u"?document.createComment(e):null,createTextNode:e=>typeof document<"u"?document.createTextNode(e):null,addEventListener:(e,n,t)=>{typeof window<"u"&&window.addEventListener(e,n,t)},removeEventListener:(e,n,t)=>{typeof window<"u"&&window.removeEventListener(e,n,t)},scrollTo:e=>{typeof window<"u"&&window.scrollTo(0,e)},matchMedia:e=>typeof window<"u"&&typeof window.matchMedia=="function"?window.matchMedia(e):null,visualViewport:()=>(typeof window<"u"?window:null)?.visualViewport??null,scrollingElement:()=>typeof document<"u"?document.scrollingElement:null,bodyElement:()=>typeof document<"u"?document.body:null,bodyAppend:e=>{typeof document<"u"&&document.body.appendChild(e)},bodyRemove:e=>{typeof document<"u"&&e.parentNode&&document.body.removeChild(e)},clearBody:()=>{typeof document<"u"&&(document.body.innerHTML="")},event:(e,n)=>{let t=typeof window<"u"?window:null,r=n&&(n.key||n.code)?"KeyboardEvent":n&&(n.clientX!==void 0||n.clientY!==void 0||n.pointerId!==void 0)?"PointerEvent":"Event";try{return new t[r](e,n)}catch{return new t.Event(e,n)}},dispatchEvent:(e,n)=>typeof e<"u"?e.dispatchEvent(n):!1,navigate:e=>{typeof window>"u"||(window.history.pushState(null,"",e),window.dispatchEvent(new PopStateEvent("popstate",{state:null})))},copyText:async e=>{let n=typeof window<"u"?window:null;if(n?.navigator?.clipboard?.writeText)try{return await n.navigator.clipboard.writeText(e),!0}catch{}try{if(typeof document>"u")return!1;let t=document.createElement("textarea");t.value=e,t.style.position="fixed",t.style.opacity="0",document.body.appendChild(t),t.select();let r=document.execCommand("copy");return document.body.removeChild(t),r}catch{return!1}},execCommand:(e,n)=>typeof document<"u"?document.execCommand(e,!1,n):!1,queryCommandState:e=>typeof document<"u"?document.queryCommandState(e):!1,queryCommandValue:e=>typeof document<"u"?document.queryCommandValue(e):"",selectionText:()=>typeof window<"u"?window.getSelection?.()?.toString()??null:null,getSelection:()=>typeof window<"u"?window.getSelection():null,viewportHeight:()=>typeof window<"u"?window.innerHeight:0,viewportWidth:()=>typeof window<"u"?window.innerWidth:0,pathname:()=>typeof window<"u"?window.location.pathname:"",createTreeWalker:(e,n)=>typeof document<"u"?document.createTreeWalker(e,n??NodeFilter.SHOW_ALL):null,scrollTop:()=>{let e=typeof document<"u"?document:null,n=typeof window<"u"?window:null;return e?.scrollingElement?.scrollTop??n?.scrollY??0},hash:()=>typeof window<"u"?window.location?.hash??"":"",setHash:e=>{typeof window<"u"&&(window.location.hash=e)},timeout:(e,n)=>typeof window<"u"?window.setTimeout(e,n):0,rootElement:()=>typeof document<"u"?document.documentElement:null,storageGet:e=>{try{return typeof window<"u"?window.localStorage?.getItem(e)??null:null}catch{return null}},storageSet:(e,n)=>{try{typeof window<"u"&&window.localStorage?.setItem(e,n)}catch{}}}}var G=0;function T(){return{idRegistry:new Map,unmountHooks:[],nextId:()=>`_wf_${G++}`}}function F(e,n){for(let t of[...e.unmountHooks])t(n);e.idRegistry.delete(n),e.idRegistry.delete(`custom:${n}`)}function z(e,n,t,r){try{e(n)}catch(o){console.error(`[weifuwu] ref ${t} error in <${r??"anonymous"}>`,o)}}function N(e,n){if(e==null||typeof e!="object")return;let t=e;if(t._id){if(t._customId&&n.idRegistry.delete(t._customId),n.idRegistry.delete(t._id),n.unmountHooks.length>0){let r=[...n.unmountHooks];for(let o of r)o(t._id);if(t._customId)for(let o of r)o(t._customId)}t._id=void 0,t._customId=void 0,t._render=void 0,t._parentNode=void 0,t._refNode=void 0}if(t._child!=null){if(Array.isArray(t._child))for(let r of t._child)r&&typeof r=="object"&&N(r,n);else N(t._child,n);t._child=void 0}if(t.props?.children&&typeof t.type=="string"){let r=Array.isArray(t.props.children)?t.props.children:[t.props.children];for(let o of r)o&&typeof o=="object"&&N(o,n)}if(typeof t.props?.ref=="function"&&z(t.props.ref,null,"cleanup"),t._remoteEl){let r=t._child;if(r!=null)if(Array.isArray(r))for(let o of r)o&&typeof o=="object"&&N(o,n);else typeof r=="object"&&N(r,n);t._remoteEl.remove(),t._remoteEl=void 0}}function M(e,n){if(n&&typeof e.type=="function"&&e._id){try{N(e,n)}catch(t){console.error("[weifuwu] ref cleanup error",t)}F(n,e._id)}}function B(e){if(e==null||typeof e=="boolean")return[];let n=[],t=Array.isArray(e)?[...e]:[e];for(;t.length>0;){let r=t.shift();Array.isArray(r)?t.unshift(...r):n.push(r)}return n}function v(e){if(e==null||typeof e!="object"||Array.isArray(e))return;let n=e;return n._placement==="remote"?n.props?.portalKey:n.key}function P(e,n,t,r,o){if(typeof r=="string"||typeof r=="number"){if(typeof t=="string"||typeof t=="number"){if(String(t)!==String(r)){let c=e.ownerDocument.createTextNode(String(r));return n?.parentNode?n.parentNode.replaceChild(c,n):e.appendChild(c),c}return n}let s=e.ownerDocument.createTextNode(String(r));return n?.parentNode?n.parentNode.replaceChild(s,n):e.appendChild(s),s}if(r==null||typeof r=="boolean"){if(t&&typeof t=="object"&&!Array.isArray(t)&&t.type===S){let s=t._remoteEl;try{N(t.props?.children,o.registry)}catch(c){console.error("[weifuwu] portal ref cleanup error",c)}return s?.parentNode?.removeChild(s),null}if(t&&typeof t=="object"&&!Array.isArray(t))if(typeof t.type=="function")M(t,o.registry);else try{N(t,o.registry)}catch(s){console.error("[weifuwu] ref cleanup error",s)}return n?.parentNode&&n.parentNode.removeChild(n),null}if(Array.isArray(r)){let s=e.ownerDocument.createDocumentFragment(),c=k(e,t,r,o,n?[n]:void 0);for(let w of c)w&&s.appendChild(w);return n?.parentNode?s.contains(n)?e.appendChild(s):n.parentNode.replaceChild(s,n):e.appendChild(s),s}let i=r;if(i.type===S){let s=t&&typeof t=="object"&&!Array.isArray(t)?t:null;if(s?.type===S){let c=s._remoteEl;if(c){let w=s.props?.children??null,E=i.props?.children??null;k(c,w,E,o)}return i._remoteEl=s._remoteEl,null}return V(i,o,o.browser??x()),null}if(i.type===A){let c=(t&&typeof t=="object"&&!Array.isArray(t)?t:null)?._childNodes,w=k(e,t,i.props?.children??null,o,c);return i._childNodes=w.filter(Boolean),n?.parentNode&&n.nodeType===8&&n.parentNode.removeChild(n),n&&n.nodeType===1?n:w[0]??null}if(typeof i.type=="function"){if(typeof i._render!="function")throw new Error(`[vdom] component ${i.type.name||"anonymous"} not built in diff \u2014 buildVNode must run before patchValue`);let s=t&&typeof t=="object"&&!Array.isArray(t)?t:null;s?.type===i.type&&s._id&&(i._id=s._id,o.registry.idRegistry.set(i._id,i)),i._parentNode=e,n&&(i._refNode=n);let c=s?.type===i.type,w=W(s?.props??{},i.props??{}),E=o.getCtxVersion?o.getCtxVersion(i._id??""):void 0,_=E===void 0||(o.ctxVersion??0)===E;if(s&&c&&w&&_&&s._child!==void 0)return i._child=s._child,n;let d;i._child!==void 0?d=i._child:(d=i._render(i.props),i._child=d);let f=P(e,n,s?._child,d,o);return f&&(i._refNode=f),f}let u=t&&typeof t=="object"&&!Array.isArray(t)?t:null,m=u?.type??null,a=i.type;if(n&&n.nodeType===1&&m===a){let s=n;return i.el=s,X(s,u?.props??{},i.props??{}),k(s,u?.props?.children??null,i.props?.children??null,o),s}let l=V(i,o,o.browser??x());if(l==null)return null;if(n?.parentNode)if(t!=null&&typeof t!="boolean"){if(typeof t=="object"&&!Array.isArray(t))try{N(t,o.registry)}catch(s){console.error("[weifuwu] ref cleanup error",s)}n.parentNode.replaceChild(l,n)}else n.parentNode.insertBefore(l,n);else e.appendChild(l);return l}function X(e,n,t){let r=new Set([...Object.keys(n),...Object.keys(t)]);for(let o of r){if(o==="children"||o==="key")continue;let i=n[o],u=t[o];if(i!==u){if(o.startsWith("on")){typeof i=="function"&&e.removeEventListener(o.slice(2).toLowerCase(),i),u!=null&&u!==!1&&e.addEventListener(o.slice(2).toLowerCase(),u);continue}if(u==null||u===!1){if(o==="class"||o==="className")e.removeAttribute("class");else if(o.startsWith("on"))e.removeEventListener(o.slice(2).toLowerCase(),i);else if(o==="ref"){if(typeof i=="function")try{i(null)}catch(m){console.error("[weifuwu] ref cleanup error",m)}}else if(o==="value")e.value="";else if(o==="indeterminate")e.indeterminate=!1;else{e.removeAttribute(o);try{delete e[o]}catch{}}continue}D(e,o,u)}}}function k(e,n,t,r,o){let i=B(n),u=B(t),m=o??Array.from(e.childNodes);if(u.some(d=>v(d)!==void 0)){for(let d=0;d<u.length;d++){let f=u[d];f&&typeof f=="object"&&!Array.isArray(f)&&v(f)===void 0&&(f.key=`pos:${d}`)}for(let d=0;d<i.length;d++){let f=i[d];f&&typeof f=="object"&&!Array.isArray(f)&&v(f)===void 0&&(f.key=`pos:${d}`)}}let l=i.map((d,f)=>{if(d==null||typeof d!="object"||Array.isArray(d))return m[f]??null;let y=d;return y._placement==="remote"?y._remoteEl??null:y.type===A?y._childNodes?.[0]??null:y._refNode??y.el??null});if(!u.some(d=>{if(d==null||typeof d!="object"||Array.isArray(d))return!1;let f=d;return f._placement!=="remote"&&f.key!==void 0})){let d=Math.max(i.length,u.length),f=[];for(let y=0;y<d;y++){let h=y<i.length?i[y]:null,p=y<u.length?u[y]:null;if(p==null||typeof p=="boolean"){if(h&&typeof h=="object"&&!Array.isArray(h))if(typeof h.type=="function")M(h,r.registry);else try{N(h,r.registry)}catch(R){console.error("[weifuwu] ref cleanup error",R)}let g=l[y];g?.parentNode&&g.parentNode.removeChild(g),f.push(null);continue}if(h==null||typeof h=="boolean"){let g=V(p,r,r.browser??x());if(g==null){f.push(null);continue}let R=null;for(let j=y+1;j<l.length;j++){let H=l[j];if(H&&H.parentNode===e){R=H;break}}R&&R.parentNode===e?e.insertBefore(g,R):e.appendChild(g),f.push(g);continue}let b=P(e,l[y],h,p,r);f.push(b)}return f}let c=new Map;i.forEach((d,f)=>{let y=v(d);y!==void 0&&d&&typeof d=="object"&&!Array.isArray(d)&&c.set(y,{vnode:d,nodes:[l[f]??null].filter(Boolean),index:f})});let w=[],E=new Set,_=null;return u.forEach((d,f)=>{let y=v(d),h=d;if(y!==void 0&&c.has(y)){let p=c.get(y),b=p.nodes[0]??null;E.add(y);let g=P(e,b,p.vnode,h,r);g&&g.parentNode===e&&_&&g.previousSibling!==_&&e.insertBefore(g,_.nextSibling),w.push(g),g&&(_=g)}else if(h?._placement==="remote"){let p=i[f]??null,b=P(e,l[f]??null,p,h,r);w.push(b),b&&(_=b)}else{let p=V(h,r,r.browser??x());w.push(p),p!=null&&(e.appendChild(p),_&&p.previousSibling!==_&&e.insertBefore(p,_.nextSibling),_=p)}}),i.forEach((d,f)=>{let y=v(d),h=d&&typeof d=="object"&&!Array.isArray(d)&&typeof d.type=="function";if(y!==void 0&&!E.has(y)){if(d&&typeof d=="object"&&!Array.isArray(d))if(h)M(d,r.registry);else try{N(d,r.registry)}catch(b){console.error("[weifuwu] ref cleanup error",b)}let p=l[f];p?.parentNode&&p.parentNode.removeChild(p)}else if(y===void 0){if(d&&typeof d=="object"&&!Array.isArray(d))if(h)M(d,r.registry);else try{N(d,r.registry)}catch(b){console.error("[weifuwu] ref cleanup error",b)}let p=l[f];p?.parentNode&&p.parentNode.removeChild(p)}}),w}function Y(e){return e.__registry??(e.__registry=T())}function O(e,n,t,r){let o=Y(t),i=t.browser??x();return C(n,t,void 0,o).then(()=>{let u=V(n,t,i);if(u!=null&&e.appendChild(u),n._id&&o){let m=o.idRegistry.get(n._id);m&&(m._parentNode=e)}r?.onMounted?.()}).catch(u=>console.error("[weifuwu] command mount error",u)),{id:n._id??""}}function Ve(e,n,t){return new Promise(r=>{O(e,n,t,{onMounted:r})})}async function _e(e,n,t,r,o){return await C(r,o,t,o.__registry),P(e,n,t,r,{browser:o.browser??o.__browser,registry:o.__registry})}function be(e,n){let t=n.__registry??(n.__registry=T());return C(e,n,void 0,t)}async function Ce(e,n,t){let r=await e(n,t);return typeof r=="function"?r(n):r}async function Ee(e,n,t){let r=await e(n,t);return()=>typeof r=="function"?r(n):r}function L(e,n){if(e==null||typeof e!="object")return;if(Array.isArray(e)){for(let r of e)L(r,n);return}n(e);let t=e?.props?.children;t!=null&&L(t,n)}function Ae(e,n){let t;return L(e,r=>{!t&&n(r)&&(t=r)}),t}function xe(e,n){let t=[];return L(e,r=>{typeof r?.props?.class=="string"&&r.props.class.split(" ").includes(n)&&t.push(r)}),t}function Re(e){let n={ui:{render:()=>{},ready:!0,useExternal:()=>{}}};return e?{ui:{...n.ui,...e.ui??{}},...e.browser?{browser:e.browser}:{}}:n}function Se(e=()=>!1,n){return{get open(){return e()},setOpen:n??(t=>{}),refresh:()=>{},portal:(t,r)=>e()?t:null,wrapProps:{}}}export{be as buildToDom,Se as createPopupMock,Re as createTestCtx,xe as findByClass,Ae as findVNode,Ee as mountComponent,Ve as mountToDom,_e as patchToDom,Ce as renderVNode,L as walkVNode};
|
|
1
|
+
var P=Symbol("Fragment"),T=Symbol("Portal");function S(e){if(e==null||typeof e=="boolean")return[];if(Array.isArray(e)){let n=!1;for(let o=0;o<e.length;o++)if(Array.isArray(e[o])){n=!0;break}if(!n)return e;let t=[],r=[...e].reverse();for(;r.length>0;){let o=r.pop();if(Array.isArray(o))for(let i=o.length-1;i>=0;i--)r.push(o[i]);else t.push(o)}return t}return[e]}function q(e,n){if(e===n)return!0;let t=Object.keys(e),r=Object.keys(n);if(t.length!==r.length)return!1;for(let o of t)if(e[o]!==n[o])return!1;return!0}async function K(e,n,t,r){e._id||(r?.reuse?._id?e._id=r.reuse._id:e._id=t.nextId(),t.idRegistry.set(e._id,e)),r?.reuse&&(r.reuse._parentNode&&(e._parentNode=r.reuse._parentNode),r.reuse._refNode&&(e._refNode=r.reuse._refNode),r.reuse._ctxVersion!=null&&(e._ctxVersion=r.reuse._ctxVersion));let o=Object.create(n);o.ui=Object.create(n.ui);let i=o.ui;if(i._selfId=e._id,i._selfVNode=e,i.render=function(s){return s==null&&e._id?n.ui.render([e._id]):n.ui.render(s)},typeof e._render!="function"&&typeof r?.reuse?._render=="function"&&(e._render=r.reuse._render),typeof e._render!="function"){n.ui?.setMounting?.(!0);let s;try{s=await e.type(e.props??{},o)}finally{n.ui?.endMounting?.()}if(typeof s!="function")throw new Error(`Component ${e.type.name||"anonymous"} must return a render function. Use (init_props, ctx) => (props) => VNode pattern.`);e._render=s}return{renderFn:e._render,childCtx:o}}function O(e){return!!e&&typeof e.then=="function"}function E(e,n,t,r,o){if(e==null||typeof e=="boolean"||typeof e=="string"||typeof e=="number")return e;if(Array.isArray(e)){let u=Array.isArray(t)?t:[],l=e.map((y,g)=>E(y,n,u[g],r,o)),d=!1;for(let y=0;y<l.length;y++)if(O(l[y])){d=!0;break}return d?Promise.all(l).then(()=>e):e}let i=e,s=r??n.__registry,f=t!=null&&typeof t=="object"&&!Array.isArray(t)&&t.type===i.type?t:null;if(typeof i.type=="function"){i._id||(i._id=f?._id??s.nextId(),s.idRegistry.set(i._id,i)),f&&(f._parentNode&&(i._parentNode=f._parentNode),f._refNode&&(i._refNode=f._refNode),f._ctxVersion!=null&&(i._ctxVersion=f._ctxVersion),typeof f._render=="function"&&(i._render=f._render));let u=q(f?.props??{},i.props??{}),l=n?.ui?._ctxVersion??0,d=(f?._ctxVersion??-1)===l;return!o?.force&&u&&d&&f?._child!=null?(i._child=f._child,i._ctxVersion=f._ctxVersion,i):(async()=>{let{childCtx:y}=await K(i,n,s,{reuse:f??void 0}),g=await E(await i._render(i.props),y,f?._child,s);return i._child=g??null,i._ctxVersion=l,i})()}if(i.type===P){let u=E(i.props?.children??null,n,f?._child??f?.props?.children,s);return O(u)?u.then(l=>(i._child=l??null,i)):(i._child=u??null,i)}if(typeof i.type=="string"||typeof i.type=="symbol"){let u=E(i.props?.children??null,n,f?.props?.children,s);return O(u)?u.then(l=>(i._child=l??null,i)):(i._child=u??null,i)}return i}var z=new Set(["svg","path","circle","rect","line","polyline","polygon","g","text","defs","use","clipPath"]),j=/^on[A-Z]/,G=new Set(["zIndex","opacity","lineHeight","fontWeight","fontSizeAdjust","flex","flexGrow","flexShrink","order","zoom","aspectRatio","gridRow","gridColumn","scale","rotate","animationIterationCount","columnCount","fillOpacity","strokeOpacity","stopOpacity","floodOpacity"]);function D(e,n,t){if(t==null||t===!1)return;let r=e.ownerDocument?.defaultView;if(n==="class"||n==="className"){if(typeof t=="object")for(let[o,i]of Object.entries(t))i&&e.classList.add(o);else e.setAttribute("class",String(t));return}if(n==="style"){if(typeof t=="string")e.setAttribute("style",t);else{let o=e.style;for(let[i,s]of Object.entries(t))s==null?o[i]="":i.startsWith("--")?o.setProperty(i,String(s)):typeof s=="number"&&!G.has(i)?o[i]=`${s}px`:o[i]=String(s)}return}if(n==="ref"){if(typeof t=="function")try{t(e)}catch(o){console.error("[weifuwu] ref error",o)}return}if(j.test(n)){let o=n.slice(2).toLowerCase();if(typeof t!="function"){console.warn(`[weifuwu] event prop ${n} expects a function, got ${typeof t} \u2014 ignored`);return}e.addEventListener(o,t);return}if(n==="value"){e.value=t;return}if(n==="indeterminate"){e.indeterminate=!!t;return}if(n==="innerHTML"){e.innerHTML=String(t??"");return}if(n==="draggable"||n==="contenteditable"||n==="spellcheck"){e.setAttribute(n,t?"true":"false");return}if(n.startsWith("aria-")&&typeof t=="boolean"){e.setAttribute(n,t?"true":"false");return}if(t===!0){e.setAttribute(n,"");return}try{e[n]=t,e.getAttribute(n)!==String(t)&&e.setAttribute(n,String(t))}catch{e.setAttribute(n,String(t))}}function C(e,n,t){let r=n?.browser??t;if(!r)throw new Error("[vdom] renderValue requires browser env (ctx.browser)");if(e==null||typeof e=="boolean")return null;if(typeof e=="string"||typeof e=="number")return r.createTextNode(String(e));if(Array.isArray(e)){let u=r.createDocumentFragment();if(!u)return null;for(let l of e){let d=C(l,n,r);d!=null&&u.appendChild(d)}return u}let o=e;if(o.type===T){let u=r.bodyElement();if(!u)return null;let l=u.querySelector("#__wf_portal");l||(l=r.createElement("div"),l&&(l.id="__wf_portal",u.appendChild(l)));let d=r.createElement("div");if(d){d.setAttribute("data-portal",String(o.props?.portalKey??"wf"));let y=C(o.props?.children??null,n,r);y!=null&&d.appendChild(y),l&&l.appendChild(d),o._remoteEl=d}return null}if(o.type===P){let u=r.createDocumentFragment();if(!u)return null;for(let l of S(o.props?.children)){let d=C(l,n,r);d!=null&&u.appendChild(d)}return o._childNodes=Array.from(u.childNodes),u}if(typeof o.type=="function"){if(typeof o._render!="function")throw new Error(`[vdom] component ${o.type.name||"anonymous"} not built (missing _render) \u2014 buildVNode must run before renderValue`);if(o._child===void 0)throw new Error(`[vdom] component ${o.type.name||"anonymous"} not built (missing _child) \u2014 buildVNode must run before renderValue`);let u=o._child;if(u==null)return o._child=null,null;let l=(Array.isArray(u)||typeof u=="object"&&typeof u.type=="function",u);o._child=l,typeof l=="object"&&!Array.isArray(l)&&(l._parentVNode=o);let d=C(l,n,r);return d&&(o._refNode=d),d}let i=o.type,s=z.has(i)?r.createElementNS("http://www.w3.org/2000/svg",i):r.createElement(i);if(!s)return null;o.el=s;let f;for(let[u,l]of Object.entries(o.props??{}))if(!(u==="children"||u==="key")){if(u==="value"&&s instanceof HTMLSelectElement){f=l;continue}D(s,u,l)}if(!("innerHTML"in(o.props??{})))for(let u of S(o.props?.children)){let l=C(u,n,r);if(l!=null&&(s.appendChild(l),u&&typeof u=="object"&&!Array.isArray(u)&&typeof u.type=="function")){let d=u;d._parentNode||(d._parentNode=s,d._refNode=l)}}return f!==void 0&&(s.value=String(f)),s}function v(){return{activeElement:()=>typeof document<"u"?document.activeElement:null,byId:e=>typeof document<"u"?document.getElementById(e):null,query:e=>typeof document<"u"?document.querySelector(e):null,queryAll:e=>typeof document<"u"?document.querySelectorAll(e):null,createElement:e=>typeof document<"u"?document.createElement(e):null,createElementNS:(e,n)=>typeof document<"u"?document.createElementNS(e,n):null,createDocumentFragment:()=>typeof document<"u"?document.createDocumentFragment():null,createComment:e=>typeof document<"u"?document.createComment(e):null,createTextNode:e=>typeof document<"u"?document.createTextNode(e):null,addEventListener:(e,n,t)=>{typeof window<"u"&&window.addEventListener(e,n,t)},removeEventListener:(e,n,t)=>{typeof window<"u"&&window.removeEventListener(e,n,t)},scrollTo:e=>{typeof window<"u"&&window.scrollTo(0,e)},matchMedia:e=>typeof window<"u"&&typeof window.matchMedia=="function"?window.matchMedia(e):null,visualViewport:()=>(typeof window<"u"?window:null)?.visualViewport??null,scrollingElement:()=>typeof document<"u"?document.scrollingElement:null,bodyElement:()=>typeof document<"u"?document.body:null,bodyAppend:e=>{typeof document<"u"&&document.body.appendChild(e)},bodyRemove:e=>{typeof document<"u"&&e.parentNode&&document.body.removeChild(e)},clearBody:()=>{typeof document<"u"&&(document.body.innerHTML="")},event:(e,n)=>{let t=typeof window<"u"?window:null,r=n&&(n.key||n.code)?"KeyboardEvent":n&&(n.clientX!==void 0||n.clientY!==void 0||n.pointerId!==void 0)?"PointerEvent":"Event";try{return new t[r](e,n)}catch{return new t.Event(e,n)}},dispatchEvent:(e,n)=>typeof e<"u"?e.dispatchEvent(n):!1,navigate:e=>{typeof window>"u"||(window.history.pushState(null,"",e),window.dispatchEvent(new PopStateEvent("popstate",{state:null})))},copyText:async e=>{let n=typeof window<"u"?window:null;if(n?.navigator?.clipboard?.writeText)try{return await n.navigator.clipboard.writeText(e),!0}catch{}try{if(typeof document>"u")return!1;let t=document.createElement("textarea");t.value=e,t.style.position="fixed",t.style.opacity="0",document.body.appendChild(t),t.select();let r=document.execCommand("copy");return document.body.removeChild(t),r}catch{return!1}},execCommand:(e,n)=>typeof document<"u"?document.execCommand(e,!1,n):!1,queryCommandState:e=>typeof document<"u"?document.queryCommandState(e):!1,queryCommandValue:e=>typeof document<"u"?document.queryCommandValue(e):"",selectionText:()=>typeof window<"u"?window.getSelection?.()?.toString()??null:null,getSelection:()=>typeof window<"u"?window.getSelection():null,viewportHeight:()=>typeof window<"u"?window.innerHeight:0,viewportWidth:()=>typeof window<"u"?window.innerWidth:0,pathname:()=>typeof window<"u"?window.location.pathname:"",createTreeWalker:(e,n)=>typeof document<"u"?document.createTreeWalker(e,n??NodeFilter.SHOW_ALL):null,scrollTop:()=>{let e=typeof document<"u"?document:null,n=typeof window<"u"?window:null;return e?.scrollingElement?.scrollTop??n?.scrollY??0},hash:()=>typeof window<"u"?window.location?.hash??"":"",setHash:e=>{typeof window<"u"&&(window.location.hash=e)},timeout:(e,n)=>typeof window<"u"?window.setTimeout(e,n):0,rootElement:()=>typeof document<"u"?document.documentElement:null,storageGet:e=>{try{return typeof window<"u"?window.localStorage?.getItem(e)??null:null}catch{return null}},storageSet:(e,n)=>{try{typeof window<"u"&&window.localStorage?.setItem(e,n)}catch{}}}}var X=0;function L(){return{idRegistry:new Map,unmountHooks:[],nextId:()=>`_wf_${X++}`}}function B(e,n){for(let t of[...e.unmountHooks])t(n);e.idRegistry.delete(n),e.idRegistry.delete(`custom:${n}`)}function Y(e,n,t,r){try{e(n)}catch(o){console.error(`[weifuwu] ref ${t} error in <${r??"anonymous"}>`,o)}}function _(e,n){if(e==null||typeof e!="object")return;let t=e;if(t._id){if(t._customId&&n.idRegistry.delete(t._customId),n.idRegistry.delete(t._id),n.unmountHooks.length>0){let r=[...n.unmountHooks];for(let o of r)o(t._id);if(t._customId)for(let o of r)o(t._customId)}t._id=void 0,t._customId=void 0,t._render=void 0,t._parentNode=void 0,t._refNode=void 0}if(t._child!=null){if(Array.isArray(t._child))for(let r of t._child)r&&typeof r=="object"&&_(r,n);else _(t._child,n);t._child=void 0}if(t.props?.children&&typeof t.type=="string"){let r=Array.isArray(t.props.children)?t.props.children:[t.props.children];for(let o of r)o&&typeof o=="object"&&_(o,n)}if(typeof t.props?.ref=="function"&&Y(t.props.ref,null,"cleanup"),t._remoteEl){let r=t._child;if(r!=null)if(Array.isArray(r))for(let o of r)o&&typeof o=="object"&&_(o,n);else typeof r=="object"&&_(r,n);t._remoteEl.remove(),t._remoteEl=void 0}}function W(e,n){if(n&&typeof e.type=="function"&&e._id){try{_(e,n)}catch(t){console.error("[weifuwu] ref cleanup error",t)}B(n,e._id)}}function M(e){if(e==null||typeof e!="object"||Array.isArray(e))return;let n=e;return n._placement==="remote"?n.props?.portalKey:n.key}function $(e,n){if(n&&e&&typeof e=="object"&&!Array.isArray(e)&&e.type===P){let t=e._childNodes;if(t&&t.length)return t}return[n]}function k(e,n,t,r,o){if(typeof r=="string"||typeof r=="number"){if(typeof t=="string"||typeof t=="number"){if(String(t)!==String(r)){if(n&&n.nodeType===3)return n.nodeValue=String(r),n;let y=e.ownerDocument.createTextNode(String(r));return n?.parentNode?n.parentNode.replaceChild(y,n):e.appendChild(y),y}return n}let d=e.ownerDocument.createTextNode(String(r));return n?.parentNode?n.parentNode.replaceChild(d,n):e.appendChild(d),d}if(r==null||typeof r=="boolean"){if(t&&typeof t=="object"&&!Array.isArray(t)&&t.type===T){let d=t._remoteEl;try{_(t.props?.children,o.registry)}catch(y){console.error("[weifuwu] portal ref cleanup error",y)}return d?.parentNode?.removeChild(d),null}if(t&&typeof t=="object"&&!Array.isArray(t))if(typeof t.type=="function")W(t,o.registry);else try{_(t,o.registry)}catch(d){console.error("[weifuwu] ref cleanup error",d)}return n?.parentNode&&n.parentNode.removeChild(n),null}if(Array.isArray(r)){if(t===r&&n?.parentNode)return n;let d=e.ownerDocument.createDocumentFragment(),y=H(e,t,r,o,n?[n]:void 0);for(let g of y)g&&d.appendChild(g);return n?.parentNode?d.contains(n)?e.appendChild(d):n.parentNode.replaceChild(d,n):e.appendChild(d),d}let i=r;if(i.type===T){let d=t&&typeof t=="object"&&!Array.isArray(t)?t:null;if(d?.type===T){let y=d._remoteEl;if(y){let g=d.props?.children??null,A=i.props?.children??null;H(y,g,A,o)}return i._remoteEl=d._remoteEl,null}return C(i,o,o.browser??v()),null}if(i.type===P){let d=t&&typeof t=="object"&&!Array.isArray(t)?t:null,y=d?._childNodes,g=H(e,d?.props?.children??t,i.props?.children??null,o,y);return i._childNodes=g.filter(Boolean),n?.parentNode&&n.nodeType===8&&n.parentNode.removeChild(n),n&&n.nodeType===1?n:g[0]??null}if(typeof i.type=="function"){if(typeof i._render!="function")throw new Error(`[vdom] component ${i.type.name||"anonymous"} not built in diff \u2014 buildVNode must run before patchValue`);let d=t&&typeof t=="object"&&!Array.isArray(t)?t:null,y=d?.type===i.type;if(!o.force&&d&&y&&d._child!==void 0&&i._child===d._child)return n;d?.type===i.type&&d._id&&(i._id=d._id,o.registry.idRegistry.set(i._id,i)),i._parentNode=e,n&&(i._refNode=n);let g;if(i._child===void 0)throw new Error(`[vdom] component ${i.type.name||"anonymous"} not built (missing _child) \u2014 buildVNode must run before patchValue`);g=i._child;let A=k(e,n,d?._child,g,o);return A&&(i._refNode=A),A}let s=t&&typeof t=="object"&&!Array.isArray(t)?t:null,f=s?.type??null,u=i.type;if(n&&n.nodeType===1&&f===u){let d=n;return i.el=d,J(d,s?.props??{},i.props??{}),H(d,s?.props?.children??null,i.props?.children??null,o),d}let l=C(i,o,o.browser??v());if(l==null)return null;if(n?.parentNode)if(t!=null&&typeof t!="boolean"){if(typeof t=="object"&&!Array.isArray(t))try{_(t,o.registry)}catch(d){console.error("[weifuwu] ref cleanup error",d)}n.parentNode.replaceChild(l,n)}else n.parentNode.insertBefore(l,n);else e.appendChild(l);return l}function J(e,n,t){let r=Object.keys(n),o=Object.keys(t);if(r.length===o.length){let s=!0;for(let f=0;f<r.length;f++)if(r[f]!==o[f]||n[r[f]]!==t[r[f]]){s=!1;break}if(s)return}let i=new Set([...r,...o]);for(let s of i){if(s==="children"||s==="key")continue;let f=n[s],u=t[s];if(f!==u){if(j.test(s)){typeof f=="function"&&e.removeEventListener(s.slice(2).toLowerCase(),f),u!=null&&u!==!1&&(typeof u!="function"?console.warn(`[weifuwu] event prop ${s} expects a function, got ${typeof u} \u2014 ignored`):e.addEventListener(s.slice(2).toLowerCase(),u));continue}if(u==null||u===!1){if(s==="class"||s==="className")e.removeAttribute("class");else if(j.test(s))e.removeEventListener(s.slice(2).toLowerCase(),f);else if(s==="ref"){if(typeof f=="function")try{f(null)}catch(l){console.error("[weifuwu] ref cleanup error",l)}}else if(s==="value")e.value="";else if(s==="indeterminate")e.indeterminate=!1;else{e.removeAttribute(s);try{delete e[s]}catch{}}continue}D(e,s,u)}}}function H(e,n,t,r,o){let i=S(n),s=S(t),f=o??Array.from(e.childNodes);if(s.some(a=>{if(a==null||typeof a!="object"||Array.isArray(a))return!1;let c=a;return c._placement!=="remote"&&c.key!==void 0})){for(let a=0;a<s.length;a++){let c=s[a];c&&typeof c=="object"&&!Array.isArray(c)&&M(c)===void 0&&(c.key=`pos:${a}`)}for(let a=0;a<i.length;a++){let c=i[a];c&&typeof c=="object"&&!Array.isArray(c)&&M(c)===void 0&&(c.key=`pos:${a}`)}}let l=i.map((a,c)=>{if(a==null||typeof a!="object"||Array.isArray(a))return f[c]??null;let p=a;return p._placement==="remote"?p._remoteEl??null:p.type===P?p._childNodes?.[0]??null:p._refNode??p.el??null});if(!s.some(a=>{if(a==null||typeof a!="object"||Array.isArray(a))return!1;let c=a;return c._placement!=="remote"&&c.key!==void 0})){let a=Math.max(i.length,s.length),c=[];for(let p=0;p<a;p++){let h=p<i.length?i[p]:null,m=p<s.length?s[p]:null;if(m==null||typeof m=="boolean"){if(h&&typeof h=="object"&&!Array.isArray(h))if(typeof h.type=="function")W(h,r.registry);else try{_(h,r.registry)}catch(w){console.error("[weifuwu] ref cleanup error",w)}let N=l[p];N?.parentNode&&N.parentNode.removeChild(N),c.push(null);continue}if(h!=null&&typeof h=="object"&&!Array.isArray(h)&&m!=null&&typeof m=="object"&&!Array.isArray(m)&&m===h){c.push(l[p]);continue}if(h==null||typeof h=="boolean"){let N=C(m,r,r.browser??v());if(N==null){c.push(null);continue}let w=null;for(let V=p+1;V<l.length;V++){let b=l[V];if(b&&b.parentNode===e){w=b;break}}if(!w){let V=null;for(let b=c.length-1;b>=0;b--)if(c[b]){V=c[b];break}if(V&&V.parentNode===e&&(w=V.nextSibling),!w){let b=l[l.length-1];b&&b.parentNode===e&&(w=b.nextSibling)}}w&&w.parentNode===e?e.insertBefore(N,w):e.appendChild(N),c.push(N);continue}let x=k(e,l[p],h,m,r);c.push(...$(m,x))}return c}let y=new Map;i.forEach((a,c)=>{let p=M(a);p!==void 0&&a&&typeof a=="object"&&!Array.isArray(a)&&y.set(p,{vnode:a,nodes:[l[c]??null].filter(Boolean),index:c})});let g=[],A=new Set,R=null;return s.forEach((a,c)=>{let p=M(a),h=a;if(p!==void 0&&y.has(p)){let m=y.get(p),x=m.nodes[0]??null;A.add(p);let N=k(e,x,m.vnode,h,r),w=$(h,N),V=w[w.length-1]??N;V&&V.parentNode===e&&R&&V.previousSibling!==R&&e.insertBefore(V,R.nextSibling),g.push(...w),V&&(R=V)}else if(h?._placement==="remote"){let m=i[c]??null,x=k(e,l[c]??null,m,h,r),N=$(h,x);g.push(...N);let w=N[N.length-1]??x;w&&(R=w)}else{let m=C(h,r,r.browser??v());g.push(m),m!=null&&(R?e.insertBefore(m,R.nextSibling):e.insertBefore(m,e.firstChild),R=m)}}),i.forEach((a,c)=>{let p=M(a),h=a&&typeof a=="object"&&!Array.isArray(a)&&typeof a.type=="function";if(p!==void 0&&!A.has(p)){if(a&&typeof a=="object"&&!Array.isArray(a))if(h)W(a,r.registry);else try{_(a,r.registry)}catch(x){console.error("[weifuwu] ref cleanup error",x)}let m=l[c];m?.parentNode&&m.parentNode.removeChild(m)}else if(p===void 0){if(a&&typeof a=="object"&&!Array.isArray(a))if(h)W(a,r.registry);else try{_(a,r.registry)}catch(x){console.error("[weifuwu] ref cleanup error",x)}let m=l[c];m?.parentNode&&m.parentNode.removeChild(m)}}),g}function Z(e){return e.__registry??(e.__registry=L())}function U(e,n,t,r){let o=Z(t),i=t.browser??v();return Promise.resolve(E(n,t,void 0,o)).then(()=>{let s=C(n,t,i);if(s!=null&&e.appendChild(s),n._id&&o){let f=o.idRegistry.get(n._id);f&&(f._parentNode=e)}r?.onMounted?.()}).catch(s=>console.error("[weifuwu] command mount error",s)),{id:n._id??""}}function _e(e,n,t){return new Promise(r=>{U(e,n,t,{onMounted:r})})}async function be(e,n,t,r,o){return await E(r,o,t,o.__registry),k(e,n,t,r,{browser:o.browser??o.__browser,registry:o.__registry})}function Ce(e,n){let t=n.__registry??(n.__registry=L());return Promise.resolve(E(e,n,void 0,t))}async function xe(e,n,t){let r=await e(n,t);return typeof r=="function"?r(n):r}async function Ee(e,n,t){let r=await e(n,t);return()=>typeof r=="function"?r(n):r}function F(e,n){if(e==null||typeof e!="object")return;if(Array.isArray(e)){for(let r of e)F(r,n);return}n(e);let t=e?.props?.children;t!=null&&F(t,n)}function Ae(e,n){let t;return F(e,r=>{!t&&n(r)&&(t=r)}),t}function Re(e,n){let t=[];return F(e,r=>{typeof r?.props?.class=="string"&&r.props.class.split(" ").includes(n)&&t.push(r)}),t}function Pe(e){let n={ui:{render:()=>{},ready:!0,useExternal:()=>{}}};return e?{ui:{...n.ui,...e.ui??{}},...e.browser?{browser:e.browser}:{}}:n}function ve(e=()=>!1,n){return{get open(){return e()},setOpen:n??(t=>{}),refresh:()=>{},portal:(t,r)=>e()?t:null,wrapProps:{}}}export{Ce as buildToDom,ve as createPopupMock,Pe as createTestCtx,Re as findByClass,Ae as findVNode,Ee as mountComponent,_e as mountToDom,be as patchToDom,xe as renderVNode,F as walkVNode};
|