weifuwu 0.80.0 → 0.81.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/index.js +12 -12
- package/dist/index.js +219 -8
- package/dist/ui-dom/Confirm.d.ts +1 -1
- package/dist/ui-dom/Notification.d.ts +1 -1
- package/dist/ui-dom/Toast.d.ts +1 -1
- package/dist/ui-dom/hooks/chat.d.ts +1 -1
- package/dist/ui-dom/hooks/external.d.ts +1 -1
- package/dist/ui-dom/index.d.ts +1 -1
- package/dist/ui-dom/index.js +9 -8
- package/dist/ui-dom/middleware/api.d.ts +3 -0
- package/dist/ui-dom/middleware/auth.d.ts +2 -0
- package/dist/ui-dom/store.d.ts +1 -1
- package/dist/ui-dom/types.d.ts +1 -1
- package/dist/ui-dom/use-chat.d.ts +1 -1
- package/dist/ui-dom/vdom2/audit.d.ts +1 -1
- package/dist/ui-dom/vdom2/mount.d.ts +1 -1
- package/dist/ui-dom/vdom2/trace.d.ts +1 -1
- package/dist/ui-dom/vdom2/transform.d.ts +1 -1
- package/dist/user/index.d.ts +85 -7
- package/package.json +1 -1
package/dist/ui-dom/index.js
CHANGED
|
@@ -1,20 +1,21 @@
|
|
|
1
|
-
function rt(e){let n=[],t=(e||"/").replace(/:(\w+)/g,(o,r)=>(n.push(r),"([^/]+)")).replace(/\*/g,".*");return{re:new RegExp(`^${t}$`),keys:n}}var Qe=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 o=this,r=n,i=async(s,l,a)=>{let u=l.__routePath??o.getPath(),d=null;return u===r?d="/":(r==="/"?u!=="/"&&u.startsWith("/"):u.startsWith(r+"/"))&&(d=u.slice(r.length)),d===null?a:async(f,c)=>{let w=await t._handle(d,f,c);return w===null?a(f,c):w}};return this._middlewares.push(i),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 o=await t(n);o&&o!==n&&Object.assign(n,o)}}}get(n,t,o){return this._routes.push({path:n,handler:t,title:o?.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 o of this._routes){let{re:r,keys:i}=rt(o.path),s=n.match(r);if(!s)continue;let l={};for(let a=0;a<i.length;a++)l[i[a]]=decodeURIComponent(s[a+1]);t={handler:o.handler,params:l,title:o.title};break}return t||(t={handler:this._notFound??(()=>null),params:{}}),t}async _handle(n,t,o){await this._ensureInjected(o);let r=this.match(n);r.title&&typeof document<"u"&&(document.title=r.title),o.params=r.params,o.route&&(o.route.params=r.params);let s=r.handler,l=o.__routePath;o.__routePath=n;try{for(let a=this._middlewares.length-1;a>=0;a--){let u=this._middlewares[a],d=s;s=await u(t,o,d)??d}return await s(t,o)}finally{o.__routePath=l}}async execute(n,t,o){await this._ensureInjected(t);let r=this.match(o);r.title&&typeof document<"u"&&(document.title=r.title),t.params=r.params,t.route&&(t.route.params=r.params);let s=r.handler;for(let l=this._middlewares.length-1;l>=0;l--){let a=this._middlewares[l],u=s;s=await a(n,t,u)??u}return await s(n,t)}};var B=Symbol("Fragment"),te=Symbol("Portal");function He(e){return e!=null&&typeof e=="object"&&typeof e.type=="string"}function D(e){return e!=null&&typeof e=="object"&&e.type===B}function O(e){return e!=null&&typeof e=="object"&&typeof e.type=="function"}function W(e){return e!=null&&typeof e=="object"&&e.type===te}function Me(e,n,t=null){return{type:e,props:n,key:t,_child:null,_parentNode:null,_refNode:null,_id:null,_customId:null,_parentVNode:null,_ctxVersion:null}}function xe(e,n,t=null){return e===B?{...Me(e,n,t),type:e}:e===te?{...Me(e,n,t),type:e,_remoteEl:null,_placement:"remote"}:typeof e=="function"?{...Me(e,n,t),type:e,_render:null,_outputChild:null}:{...Me(e,n,t),type:e,el:null}}function ce(e,n,...t){let o=In(n??{});return t.length>0&&(o.children=t.length===1?t[0]:t),xe(e,o,n?.key??null)}function Ze(e,n,t){return xe(e,In(n),t??null)}var it=Ze;function st(e,n,t){return Ze(e,n,t)}function In(e){if(!e)return{};let n={};for(let t of Object.keys(e))t!=="key"&&(n[t]=e[t]);return n}function $(e){return e==null||typeof e=="boolean"?[]:Array.isArray(e)?e:[e]}function Le(e,n){let t=xe(te,{children:e,portalKey:n});return t.key=n??null,t}function U(){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,o=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[o](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 o=document.execCommand("copy");return document.body.removeChild(t),o}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 lt(e,n,t=400){let o=!1,r=()=>{o||(o=!0,e.removeEventListener("animationend",r),clearTimeout(i),n())};e.addEventListener("animationend",r);let i=setTimeout(r,t)}function ve(e,n){return Object.assign(Object.create(e),n)}function at(e){let n={baseURL:e?.baseURL??"",headers:{"Content-Type":"application/json",...e?.headers}},t=e?.onRequest,o=e?.onResponse,r=e?.timeout??0;async function i(s,l,a,u){let d=n.baseURL+l,f={method:s,headers:{...n.headers,...u?.headers}},c=e?.token?.();c&&!f.headers.Authorization&&(f.headers.Authorization=`Bearer ${c}`);let w=r>0,x=!!u?.signal,N=null,V=null;(w||x)&&(N=new AbortController,f.signal=N.signal,w&&(V=setTimeout(()=>N.abort(new Error("Request timed out")),r)),x&&u.signal.addEventListener("abort",()=>N.abort())),a!==void 0&&s!=="GET"&&s!=="HEAD"&&(f.body=JSON.stringify(a));let T={url:d,init:f};t&&(T=t(T));try{let y=await fetch(T.url,T.init);if(o)return o(y);if(!y.ok){let _=await y.text().catch(()=>"");throw new en(y.status,_||y.statusText)}let m=y.headers.get("content-length");if(y.status===204||m==="0")return;let g=(y.headers.get("content-type")||"").toLowerCase();return g.includes("application/json")||g.includes("json")?y.json():y.text()}finally{V&&clearTimeout(V)}}return s=>ve(s,{api:{get:(a,u)=>i("GET",a,void 0,u),post:(a,u,d)=>i("POST",a,u,d),put:(a,u,d)=>i("PUT",a,u,d),patch:(a,u,d)=>i("PATCH",a,u,d),delete:(a,u)=>i("DELETE",a,void 0,u)}})}var en=class extends Error{status;body;constructor(n,t){super(`API Error ${n}: ${t}`),this.name="ApiError",this.status=n,this.body=t}};function dt(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 ut(e){let n=dt(e);return n?.exp?n.exp*1e3-3e4<Date.now():!0}function ct(e){let n=e?.storage??localStorage,t=e?.tokenKey??"weifuwu_token",o=e?.userKey??"weifuwu_user",r=e?.refreshTokenKey??"weifuwu_refresh",i=e?.refreshEndpoint??"/api/auth/refresh";return s=>{let l=n.getItem(t),a=n.getItem(o),u={token:l,user:a?JSON.parse(a):null,get isLoggedIn(){return this.token!==null},login(d,f,c){u.token=d,u.user=f,n.setItem(t,d),n.setItem(o,JSON.stringify(f)),c&&n.setItem(r,c)},logout(){u.token=null,u.user=null,n.removeItem(t),n.removeItem(o),n.removeItem(r)},setUser(d){u.user=d,n.setItem(o,JSON.stringify(d))},async refresh(){let d=n.getItem(r);if(!d)return!1;try{let f=await fetch(i,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({refreshToken:d})});if(!f.ok)return u.logout(),!1;let c=await f.json();return u.token=c.token,n.setItem(t,c.token),c.refreshToken&&n.setItem(r,c.refreshToken),!0}catch{return!1}}};return l&&ut(l)&&u.refresh().catch(()=>{}),ve(s,{auth:u})}}function ft(e={}){let n=e.url??"/ws",t=e.reconnectInterval??3e3,o=e.maxReconnect??10,r=e.pingInterval??3e4,i=e.pingTimeout??1e4;return s=>{let l=new Set,a=null,u=0,d=null,f=null,c=null,w=!1,x=[],N={isConnected:!1,onMessage:g=>(l.add(g),()=>{l.delete(g)}),send:g=>{let _=JSON.stringify(g);a?.readyState===WebSocket.OPEN?a.send(_):x.push(_)},_connect:V,close:()=>{w=!0,m(),a?.close(),a=null,x=[],N.isConnected=!1}};async function V(){if(!w)try{a=new WebSocket(n),a.onopen=()=>{N.isConnected=!0,u=0;for(let g of x)a.send(g);x=[],T()},a.onmessage=g=>{try{let _=JSON.parse(g.data);for(let C of l)C(_)}catch{}y()},a.onclose=()=>{N.isConnected=!1,m(),!w&&u<o&&(u++,d=setTimeout(V,t*Math.min(u,5)))},a.onerror=()=>{a?.close()}}catch{w||(d=setTimeout(V,t))}}function T(){r<=0||(f=setInterval(()=>{a?.readyState===WebSocket.OPEN&&a.send(JSON.stringify({type:"ping"})),c=setTimeout(()=>{a?.close()},i)},r))}function y(){clearTimeout(c)}function m(){clearInterval(f),clearTimeout(c),clearTimeout(d)}return V(),ve(s,{ws:N})}}var nn={error:0,warn:1,info:2,debug:3,trace:4},Hn=["mount","build","render","diff","audit"],oe={enabled:!1,stages:new Set,level:"info",filter:null},tn=!1;function pt(e){return e&&e in nn?e:"info"}function Mn(e){let n=new Set;if(!e)return n;for(let t of e.split(",")){let o=t.trim().split(":")[0];Hn.includes(o)&&n.add(o)}return n}function on(){if(tn)return oe;tn=!0;try{let e=globalThis,n=new URLSearchParams(typeof e.location?.search=="string"?e.location.search:""),t=n.get("vdom_trace"),o=n.get("vdom_debug"),r=e.__vdom_trace__,i=typeof e.localStorage?.getItem=="function"?e.localStorage.getItem("vdom_trace"):null;if(o==="1"||e?.localStorage?.getItem?.("__WF_VDOM_DEBUG")==="1")oe={enabled:!0,stages:new Set(Hn),level:"debug",filter:null};else if(t||r||i){let s=new Set;if(t)for(let l of Mn(t))s.add(l);if(r?.stages){let l=Array.isArray(r.stages)?r.stages:[...r.stages];for(let a of l)s.add(a)}if(i)for(let l of Mn(i))s.add(l);oe={enabled:!0,stages:s,level:t?.includes(":")?pt(t.split(":")[1]):r?.level??"debug",filter:typeof r?.filter=="string"?r.filter:null}}}catch{}return oe}function R(e,n="info"){return!oe.enabled&&(tn||on(),!oe.enabled)||oe.stages.size&&!oe.stages.has(e)?!1:nn[n]<=nn[oe.level]}function I(e,n,t,...o){if(!R(e,n))return;let r=oe.filter;r&&!t.includes(r)||console.log(`[vdom:${e}] ${t}`,...o)}var mt=0;function Ln(e){return`R${++mt}${e?`:${e}`:""}`}function z(e,n=12){if(!e)return"\u2205";if(typeof e=="string"||typeof e=="number")return`"${e}"`;if(!Array.isArray(e))return se(e);let t=e.slice(0,n).map(se);return e.length>n&&t.push(`\u2026+${e.length-n}`),`[${t.join(" | ")}]`}function se(e){if(e==null||typeof e=="boolean")return String(e);if(typeof e=="string")return`"${e.slice(0,16)}"`;if(typeof e=="number")return String(e);if(Array.isArray(e))return`ARR(${e.length})`;let n=e,t=n.type,o;typeof t=="function"?o=t.name||"Comp":t===B?o="Frag":typeof t=="string"?o=t:o=String(t);let r=n.props?.id?`#${n.props.id}`:n.key!=null?`@${n.key}`:"";return o+r}function re(e){if(!e)return"null";if(e.nodeType===1){let n=e;return`${n.tagName}${n.id?`#${n.id}`:""}${n.getAttribute?.("data-wf-key")?`@${n.getAttribute("data-wf-key")}`:""}`}return e.nodeType===3?`"${(e.textContent??"").slice(0,12)}"`:e.nodeType===8?`<!--${(e.nodeValue??"").slice(0,40)}-->`:`#${e.nodeType}`}function le(e,n=12){if(!e)return"null";let o=Array.from(e.childNodes).slice(0,n).map(re);return e.childNodes.length>n&&o.push(`\u2026+${e.childNodes.length-n}`),`[${o.join(" | ")}]`}function Y(e){return typeof e=="function"&&e.name||"anonymous"}function Ue(e){return e.ui?._ctxVersion??0}function rn(e,n){e.ui?.setMounting?.(n)}var yt=0;function be(){return{idRegistry:new Map,unmountHooks:[],nextId:()=>`_wf_${yt++}`}}function Oe(e,n){return e.unmountHooks.push(n),()=>{let t=e.unmountHooks.indexOf(n);t>=0&&e.unmountHooks.splice(t,1)}}function Un(e,n){for(let t of[...e.unmountHooks])t(n);e.idRegistry.delete(n),e.idRegistry.delete(`custom:${n}`)}function gt(e,n,t,o){try{e(n)}catch(r){console.error(`[weifuwu] ref ${t} error in <${o??"anonymous"}>`,r)}}function K(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 o=[...n.unmountHooks];for(let r of o)r(t._id);if(t._customId)for(let r of o)r(t._customId)}t._id=null,t._customId=null,O(t)&&(t._render=null),t._parentNode=null,t._refNode=null}if(t._child!=null){if(Array.isArray(t._child))for(let o of t._child)o&&typeof o=="object"&&K(o,n);else K(t._child,n);t._child=null}if(t.props?.children&&typeof t.type=="string"){let o=Array.isArray(t.props.children)?t.props.children:[t.props.children];for(let r of o)r&&typeof r=="object"&&K(r,n)}if(typeof t.props?.ref=="function"&>(t.props.ref,null,"cleanup"),W(t)){let o=t._remoteEl;if(o){let r=t._child;if(r!=null)if(Array.isArray(r))for(let i of r)i&&typeof i=="object"&&K(i,n);else typeof r=="object"&&K(r,n);o.remove(),t._remoteEl=null}}}function ht(e,n){if(e===n)return!0;let t=Object.keys(e),o=Object.keys(n);if(t.length!==o.length)return!1;for(let r of t)if(e[r]!==n[r])return!1;return!0}async function vt(e,n,t,o){let r=e;r._id||(o?.reuse?._id?r._id=o.reuse._id:r._id=t.nextId(),t.idRegistry.set(r._id,r)),o?.reuse&&(o.reuse._parentNode&&(r._parentNode=o.reuse._parentNode),o.reuse._refNode&&(r._refNode=o.reuse._refNode),o.reuse._ctxVersion!=null&&(r._ctxVersion=o.reuse._ctxVersion));let i=Object.create(n);i.ui=Object.create(n.ui);let s=i.ui;if(s._selfId=r._id??null,s._selfVNode=r,s.render=function(l){let a=n.ui;return l==null&&r._id?a.render([r._id]):a.render(l)},typeof r._render!="function"&&O(o?.reuse)&&typeof o.reuse._render=="function"&&(r._render=o.reuse._render),typeof r._render!="function"){rn(n,!0);let l;try{l=await r.type(r.props??{},i)}finally{rn(n,!1)}if(typeof l!="function")throw new Error(`Component ${Y(e.type)} must return a render function. Use (init_props, ctx) => (props) => VNode pattern.`);r._render=l}return{renderFn:r._render,childCtx:i}}function sn(e){return!!e&&typeof e.then=="function"}function J(e,n,t,o,r){if(e==null||typeof e=="boolean"||typeof e=="string"||typeof e=="number")return e;if(Array.isArray(e)){R("build")&&I("build","debug","",`array in kids=${z(e)}`);for(let f=0;f<e.length;f++){let c=e[f];if(c!=null&&typeof c=="object"&&!Array.isArray(c)){let w=c;w.key===null?w.key=String(f):w.key=String(w.key)}}let a=Array.isArray(t)?t:[],u=e.map((f,c)=>J(f,n,a[c],o,r));R("build")&&I("build","debug","",`array out kids=${z(e)}`);let d=!1;for(let f=0;f<u.length;f++)if(sn(u[f])){d=!0;break}return d?Promise.all(u).then(()=>e):e}let i=e,s=o??n.__registry??be(),l=t!=null&&typeof t=="object"&&!Array.isArray(t)&&t.type===i.type?t:null;if(typeof i.type=="function"){i._id||(i._id=l?._id??s.nextId(),s.idRegistry.set(i._id,i)),l&&(l._parentNode&&(i._parentNode=l._parentNode),l._refNode&&(i._refNode=l._refNode),l._ctxVersion!=null&&(i._ctxVersion=l._ctxVersion),O(i)&&O(l)&&typeof l._render=="function"&&(i._render=l._render));let a=ht(l?.props??{},i.props??{}),u=Ue(n),d=(l?._ctxVersion??-1)===u;return!r?.force&&a&&d&&l?._child!=null?(i._child=l._child,i._ctxVersion=l._ctxVersion,R("build")&&I("build","debug","",`prune comp=${se(i)} propsSame=${a} verSame=${d}`),i):(R("build")&&I("build","debug","",`mount comp=${se(i)} propsSame=${a} verSame=${d} force=${!!r?.force}`),(async()=>{let{childCtx:f}=await vt(i,n,s,{reuse:l??null}),c=await J(await i._render(i.props),f,l?._child,s,r);return i._child=c??null,i._ctxVersion=u,i})())}if(i.type===B){R("build")&&I("build","debug","",`fragment kids=${z($(i.props?.children))}`);let a=J(i.props?.children??null,n,l?._child??l?.props?.children,s,r);return sn(a)?a.then(u=>(i._child=u??null,i)):(i._child=a??null,i)}if(typeof i.type=="string"||typeof i.type=="symbol"){R("build")&&I("build","trace","",`native <${String(i.type)}> kids=${z($(i.props?.children))}`);let a=J(i.props?.children??null,n,l?.props?.children,s,r);return sn(a)?a.then(u=>(i._child=u??null,i)):(i._child=a??null,i)}return i}function j(e,n){if(e==null||typeof e!="object")return null;if(Array.isArray(e)||D(e)){let o=n;if(o&&o.nodeType===8&&o.nodeValue?.includes("type=fragment-start")){let r=[o],i=/fid=([^\s"]+)/.exec(o.nodeValue)?.[1]??"",s=o.nextSibling;for(;s&&(r.push(s),!(s.nodeType===8&&s.nodeValue?.includes("type=fragment-end")&&(/fid=([^\s"]+)/.exec(s.nodeValue)?.[1]??i)===i));)s=s.nextSibling;return r}return null}let t=e;return O(t)?j(t._outputChild??t._child,n):null}function fe(e){if(e==null||typeof e=="boolean")return"hole";if(typeof e=="string"||typeof e=="number")return"text";if(Array.isArray(e))return"arr";let n=e;return D(n)?"frag":W(n)?"portal":O(n)?"comp":"native"}function bt(e){if(e===!1)return"false";if(e===null)return"null";if(e===void 0)return"undefined";if(e===!0)return"true";if(typeof e=="object")try{let n=JSON.stringify(e);return`object ${n!=null&&n.length>80?n.slice(0,80)+"\u2026":n??""}`}catch{return`object ${Object.prototype.toString.call(e)}`}return`bad-vnode type=${typeof e}`}function $e(e){return/[\s"=]/.test(e)?`"${e.replace(/"/g,"'")}"`:e}function X(e){let n=[`type=${e.type}`];return e.value!==void 0&&n.push(`value=${$e(bt(e.value))}`),e.key!=null&&n.push(`key=${$e(e.key)}`),e.id!=null&&n.push(`id=${$e(e.id)}`),e.fid!=null&&n.push(`fid=${$e(e.fid)}`),`wf-hole: ${n.join(" ")}`}function On(e){return typeof e!="string"&&typeof e!="function"&&e!==B&&e!==te}function $n(e){for(let n=0;n<e.length;n++){let t=e[n];if(t!=null&&typeof t=="object"&&!Array.isArray(t)){let o=t;o.key===null?o.key=String(n):o.key=String(o.key)}}}var je=/^on[A-Z]/,wt=/^on[A-Z].*Capture$/;function ln(e){let n=wt.test(e);return{type:(n?e.slice(2,-7):e.slice(2)).toLowerCase(),capture:n}}var an=new Set(["draggable","contenteditable","spellcheck","translate"]),Nt=new Set(["zIndex","opacity","lineHeight","fontWeight","fontSizeAdjust","flex","flexGrow","flexShrink","order","zoom","aspectRatio","gridRow","gridColumn","scale","rotate","animationIterationCount","columnCount","fillOpacity","strokeOpacity","stopOpacity","floodOpacity"]);function pe(e,n,t){if(t==null)return;let o=e.ownerDocument?.defaultView;if(an.has(n)){e.setAttribute(n,t?"true":"false");return}if(t!==!1){if(n==="class"||n==="className"){if(typeof t=="object")for(let[r,i]of Object.entries(t))i&&e.classList.add(r);else e.setAttribute("class",String(t));return}if(n==="style"){if(typeof t=="string")e.setAttribute("style",t);else{let r=e.style;for(let[i,s]of Object.entries(t))s==null?r[i]="":i.startsWith("--")?r.setProperty(i,String(s)):typeof s=="number"&&!Nt.has(i)?r[i]=`${s}px`:r[i]=String(s)}return}if(n==="ref"){if(typeof t=="function")try{t(e)}catch(r){console.error("[weifuwu] ref error",r)}return}if(je.test(n)){let{type:r,capture:i}=ln(n);if(typeof t!="function"){console.warn(`[weifuwu] event prop ${n} expects a function, got ${typeof t} \u2014 ignored`);return}e.addEventListener(r,t,i?{capture:!0}:{});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.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 Ve(e,n){return e.createComment(X({type:"hole",value:n,key:null,id:null,fid:null}))}var Ct=new Set(["svg","path","circle","rect","line","polyline","polygon","g","text","defs","use","clipPath"]);function Te(e,n){return Ve(e,n)}function F(e,n,t,o=null,r=null,i=null){let s=n?.browser??t;if(!s)throw new Error("[vdom2] renderValue requires browser env (ctx.browser)");return St[fe(e)](e,n,s,o,r,i)}function xt(e,n,t){return null}function Vt(e,n,t){return t.createTextNode(String(e))}function Tt(e,n,t,o=null,r=null,i=null){let s=e,l=t.createDocumentFragment();if(!l)return null;R("render")&&I("render","debug","",`array kids=${z(s)} fid=${i??"-"} key=${o??"-"}`);let a=t.createComment(X({type:"fragment-start",key:o,id:r,fid:i})),u=t.createComment(X({type:"fragment-end",key:o,id:r,fid:i}));a&&l.appendChild(a);for(let d=0;d<s.length;d++){let f=s[d],c=i!=null?`${i}-${d}`:String(d),w=f==null||typeof f=="boolean"?Te(t,f):F(f,n,t,String(d),null,c);w!=null&&l.appendChild(w)}return u&&l.appendChild(u),l}function Et(e,n,t){let o=e,r=o,i=t.bodyElement();if(!i)return null;let s=i.querySelector("#__wf_portal");s||(s=t.createElement("div"),s&&(s.id="__wf_portal",i.appendChild(s)));let l=t.createElement("div");if(l){l.setAttribute("data-portal",String(o.props?.portalKey??"wf"));let a=F(o.props?.children??null,n,t);a!=null&&l.appendChild(a),s&&s.appendChild(l),r._remoteEl=l}return null}function kt(e,n,t,o=null,r=null,i=null){let s=e,l=s,a=t.createDocumentFragment();if(!a)return null;let u=$(s.props?.children);R("render")&&I("render","debug","",`fragment kids=${z(u)} fid=${i??"-"}`);let d=t.createComment(X({type:"fragment-start",key:o,id:r,fid:i})),f=t.createComment(X({type:"fragment-end",key:o,id:r,fid:i}));d&&a.appendChild(d),l._refNode=d;for(let c=0;c<u.length;c++){let w=u[c],x=i!=null?`${i}-${c}`:String(c),N=w==null||typeof w=="boolean"?Te(t,w):F(w,n,t,String(c),null,x);N!=null&&a.appendChild(N)}return f&&a.appendChild(f),a}function _t(e,n,t){let o=e,r=o;if(typeof r._render!="function")throw new Error(`[vdom2] component ${Y(o.type)} not built (missing _render) \u2014 buildVNode must run before renderValue`);let i=r._child;if(i==null)return r._child=null,null;r._child=i,r._outputChild=i,typeof i=="object"&&!Array.isArray(i)&&(i._parentVNode=o);let s=F(i,n,t);if(s){if(r._refNode=s.nodeType===11?s.firstChild:s,r._id)if(s.nodeType===11)for(let l of Array.from(s.childNodes))l.nodeType===1&&l.setAttribute("data-wf-id",r._id);else s.nodeType===1&&s.setAttribute("data-wf-id",r._id);if(r.key!=null)if(s.nodeType===11)for(let l of Array.from(s.childNodes))l.nodeType===1&&l.setAttribute("data-wf-key",r.key);else s.nodeType===1&&s.setAttribute("data-wf-key",r.key)}return s}function Pt(e,n,t,o,r){let i=e,s=i,l=i.type,a=Ct.has(l)?t.createElementNS("http://www.w3.org/2000/svg",l):t.createElement(l);if(!a)return null;s.el=a,s._refNode=a,R("render")&&I("render","trace","",`native <${l}> key=${i.key??"-"} kids=${z($(i.props?.children))}`),i.key!=null&&a.setAttribute("data-wf-key",i.key);let u=null;for(let[d,f]of Object.entries(i.props??{}))if(!(d==="children"||d==="key")){if(d==="value"&&a instanceof HTMLSelectElement){u=f;continue}pe(a,d,f)}if(!("innerHTML"in(i.props??{}))){let d=$(i.props?.children);for(let f=0;f<d.length;f++){let c=d[f],w=r!=null?`${r}-${f}`:String(f),x=c==null||typeof c=="boolean"?Te(t,c):F(c,n,t,String(f),null,w);if(x!=null&&(a.appendChild(x),c&&typeof c=="object"&&!Array.isArray(c)&&typeof c.type=="function")){let N=c;N._parentNode||(N._parentNode=a)}}R("render")&&I("render","trace","",`native <${l}> out=${le(a)}`)}return u!==null&&(a.value=String(u)),a}var St={hole:xt,text:Vt,arr:Tt,portal:Et,frag:kt,comp:_t,native:Pt};function ue(e){let{parent:n,oldNode:t,oldInput:o,ctx:r}=e,i=F(e.newInput,r,r.browser??U());if(i==null)return null;if(t?.parentNode){let s=ye(o,t,n,r);return s&&s.parentNode===n?n.insertBefore(i,s):n.appendChild(i),i}return n.appendChild(i),i}function At(e){return ye(e.oldInput,e.oldNode,e.parent,e.ctx),null}function Rt(e){let n=e.oldNode;if(n?.nodeType===8){let t=Te(e.ctx.browser??U(),e.newInput);return t&&n.nodeValue!==t.nodeValue&&(n.nodeValue=t.nodeValue),n}return null}function we(e){let{parent:n,oldNode:t,ctx:o}=e,r=F(e.newInput,o,o.browser??U());return r==null?null:(t?.parentNode?t.parentNode.replaceChild(r,t):t?n.insertBefore(r,t):n.appendChild(r),r)}function It(e){let{parent:n,oldNode:t,oldInput:o}=e,r=String(e.newInput);if(String(o)!==r){if(t&&t.nodeType===3)return t.nodeValue=r,t;let i=n.ownerDocument.createTextNode(r);return t?.parentNode?t.parentNode.replaceChild(i,t):n.appendChild(i),i}return t}function Mt(e){let{parent:n,oldNode:t,oldInput:o,ctx:r}=e,i=e.newInput,s=o&&typeof o=="object"&&!Array.isArray(o)?o:null,l=i.type;if(t&&t.nodeType===1&&(s?.type??null)===l&&He(i)){let a=t;return i.el=a,i._refNode=a,Dn(a,s?.props??{},i.props??{}),"innerHTML"in(i.props??{})||Ee(a,s?.props?.children??null,i.props?.children??null,r),a}return ue(e)}function Ht(e){let{parent:n,oldNode:t,oldInput:o,ctx:r}=e,i=e.newInput,s=o&&typeof o=="object"&&!Array.isArray(o)?o:null,l=D(s)?j(s,t):null,a=dn(n,s??o,i,r,l);return t?.parentNode?t:a[0]??null}function Lt(e){let{parent:n,oldNode:t,oldInput:o,ctx:r}=e,i=e.newInput;if(!O(i)||typeof i._render!="function")throw new Error(`[vdom2] component ${Y(i.type)} not built in diff \u2014 buildVNode must run before patchValue`);let s=o&&typeof o=="object"&&!Array.isArray(o)?o:null,l=s?.type===i.type;if(!r.force&&s&&l&&s._child!==null&&i._child===s._child)return t;s?.type===i.type&&s._id&&(i._id=s._id,r.registry.idRegistry.set(i._id,i)),i._parentNode=n,t&&(i._refNode=t);let a=i._child;if(a===null)return i._outputChild=null,ne(n,t,s?._child,null,r);i._outputChild=a;let u=ne(n,t,s?._child,a,r);return u&&(i._refNode=u),u}function Ut(e){let{parent:n,oldNode:t,oldInput:o,ctx:r}=e;if(o===e.newInput&&t?.parentNode)return t;let i=n.ownerDocument.createDocumentFragment(),s=Ee(n,o,e.newInput,r,t?[t]:null);for(let l of s)l&&i.appendChild(l);return t?.parentNode?i.contains(t)?n.appendChild(i):t.parentNode.replaceChild(i,t):n.appendChild(i),i}function Ot(e){let{ctx:n,oldInput:t}=e,o=e.newInput,r=t&&typeof t=="object"&&!Array.isArray(t)?t:null;if(W(r)&&W(o)){let i=r._remoteEl;if(i){let s=r.props?.children??null,l=o.props?.children??null;Ee(i,s,l,n)}return o._remoteEl=r._remoteEl,null}return ue(e)}function me(e){return{text:ue,native:ue,frag:ue,comp:ue,arr:ue,hole:At,portal:ue,...e}}var $t={text:me({text:It}),hole:me({text:we,native:we,frag:we,comp:we,arr:we,portal:we,hole:Rt}),native:me({native:Mt}),frag:me({frag:Ht}),comp:me({comp:Lt}),arr:me({arr:Ut}),portal:me({portal:Ot})};function jn(e){let n=fe(e.oldInput),t=fe(e.newInput);return $t[n][t](e)}function Q(e,n){if(n&&typeof e.type=="function"&&e._id){try{K(e,n)}catch(t){console.error("[weifuwu] ref cleanup error",t)}Un(n,e._id)}}function ke(e){if(e==null||typeof e!="object"||Array.isArray(e))return null;let n=e;return W(n)?typeof n.props?.portalKey=="string"?n.props.portalKey:null:n.key}function un(e,n){if(n&&e&&typeof e=="object"&&!Array.isArray(e)){let t=j(e,n);if(t&&t.length>1)return t}return[n]}function Wn(e,n){let t=$(e.props?.children);for(let o of t){if(o==null||typeof o!="object"||Array.isArray(o))continue;let r=o;typeof r.type=="function"?Q(r,n):(r.type===B||typeof r.type=="string"||typeof r.type=="symbol")&&Wn(r,n)}}function ye(e,n,t,o){let r=null;if(Array.isArray(e)){let i=j(e,n);if(i&&i.length){r=(i[i.length-1]??n)?.nextSibling??null;for(let s of i)s.parentNode&&s.parentNode.removeChild(s);return r&&r.parentNode===t?r:null}return n?.parentNode&&n.parentNode.removeChild(n),n?.nextSibling??null}if(e&&typeof e=="object"&&!Array.isArray(e)){let i=e;if(D(i)){let l=j(i,n)??[];r=(l[l.length-1]??n)?.nextSibling??null;for(let a of l)a.parentNode&&a.parentNode.removeChild(a);return Wn(i,o.registry),r&&r.parentNode===t?r:null}if(W(i)){let s=i._remoteEl;try{K(i.props?.children,o.registry)}catch(l){console.error("[weifuwu] portal ref cleanup error",l)}return s?.parentNode?.removeChild(s),null}if(typeof i.type=="function"){let s=j(i,n);if(Q(i,o.registry),s&&s.length>1){r=(s[s.length-1]??n)?.nextSibling??null;for(let l of s)l.parentNode&&l.parentNode.removeChild(l);return r&&r.parentNode===t?r:null}}else try{K(i,o.registry)}catch(s){console.error("[weifuwu] ref cleanup error",s)}}return r=n?.nextSibling??null,n?.parentNode&&n.parentNode.removeChild(n),r&&r.parentNode===t?r:null}function ne(e,n,t,o,r){return jn({parent:e,oldNode:n,oldInput:t,newInput:o,ctx:r})}function Dn(e,n,t){let o=Object.keys(n),r=Object.keys(t);if(o.length===r.length){let s=!0;for(let l=0;l<o.length;l++)if(o[l]!==r[l]||n[o[l]]!==t[o[l]]){s=!1;break}if(s)return}let i=new Set([...o,...r]);for(let s of i){if(s==="children"||s==="key")continue;let l=n[s],a=t[s];if(l!==a){if(je.test(s)){let{type:u,capture:d}=ln(s);typeof l=="function"&&e.removeEventListener(u,l,d?{capture:!0}:{}),a!=null&&a!==!1&&(typeof a!="function"?console.warn(`[weifuwu] event prop ${s} expects a function, got ${typeof a} \u2014 ignored`):e.addEventListener(u,a,d?{capture:!0}:{}));continue}if(s==="class"||s==="className"){a==null||a===!1?e.removeAttribute("class"):(e.className="",pe(e,s,a));continue}if(a==null||a===!1){if(s==="class"||s==="className")e.removeAttribute("class");else if(je.test(s))e.removeEventListener(s.slice(2).toLowerCase(),l);else if(s==="ref"){if(typeof l=="function")try{l(null)}catch(u){console.error("[weifuwu] ref cleanup error",u)}}else if(s==="value")e.value="";else if(s==="indeterminate")e.indeterminate=!1;else{e.removeAttribute(s);try{delete e[s]}catch{}}continue}pe(e,s,a)}}}function dn(e,n,t,o,r){let i=Array.isArray(n)?n:n?.props?.children??null,s=Array.isArray(t)?t:t?.props?.children??null;return Ee(e,i,s,o,r)}function Ee(e,n,t,o,r,i){let s=$(n),l=$(t),a=r??Array.from(e.childNodes);R("diff")&&I("diff","debug","",`patchChildren parent=${re(e)} old=${z(s)} new=${z(l)} dom=${le(e)}`);let u=l.some(m=>{if(m==null||typeof m!="object"||Array.isArray(m))return!1;let g=m;return!W(g)&&g.key!==null}),d=l.some(m=>Array.isArray(m))||s.some(m=>Array.isArray(m));R("diff")&&I("diff","debug","",`mode=${u&&!d?"keyed":"unkeyed"} hasUserKey=${u} hasArrayItem=${d}`);let f=r&&r.length?r[r.length-1]:null;if(u){for(let m=0;m<l.length;m++){let g=l[m];g&&typeof g=="object"&&!Array.isArray(g)&&ke(g)===null&&(g.key=`pos:${m}`)}for(let m=0;m<s.length;m++){let g=s[m];g&&typeof g=="object"&&!Array.isArray(g)&&ke(g)===null&&(g.key=`pos:${m}`)}}let c=(()=>{let m=a;m.length>=2&&m[0]?.nodeType===8&&m[0].nodeValue?.includes("fragment-start")&&m[m.length-1]?.nodeType===8&&m[m.length-1].nodeValue?.includes("fragment-end")&&(m=m.slice(1,-1));let g=[],_=0;for(let C=0;C<s.length;C++){let p=s[C];if(Array.isArray(p)){let h=m[_]??null;g.push(h);let A=j(p,h);_+=A?.length??1;continue}if(p==null||typeof p=="boolean"||typeof p=="string"||typeof p=="number"){g.push(m[_]??null),_++;continue}let v=p;if(W(v)){g.push(v._remoteEl??null);continue}if(g.push(v._refNode??m[_]??null),typeof v.type=="function"||D(v)){let h=j(v,v._refNode??m[_]??null);_+=h?.length??1}else _++}return g})();if(d||!l.some(m=>{if(m==null||typeof m!="object"||Array.isArray(m))return!1;let g=m;return!W(g)&&g.key!==null})){let m=Math.max(s.length,l.length),g=[],_=C=>{i&&i.push(C)};for(let C=0;C<m;C++){let p=C<s.length?s[C]:null,v=C<l.length?l[C]:null;if(R("diff")&&I("diff","trace","",`pos ${C} old=${se(p)} new=${se(v)} oldNode=${re(c[C])}`),v==null||typeof v=="boolean"){let S=c[C],H=o.browser??U();if(C>=l.length){if(Array.isArray(p)){R("diff")&&I("diff","trace","",`remove-arr-item i=${C} range=[${(j(p,c[C])??[]).map(re).join(" | ")}] before=${le(e)}`);let E=j(p,c[C]);for(let P of E??[])P.parentNode?.removeChild(P);R("diff")&&I("diff","trace","",`remove-arr-item after=${le(e)}`);for(let P of p)P!=null&&typeof P=="object"&&!Array.isArray(P)&&typeof P.type=="function"&&Q(P,o.registry)}else if(p&&typeof p=="object"&&!Array.isArray(p)){if(typeof p.type=="function")Q(p,o.registry);else try{K(p,o.registry)}catch(E){console.error("[weifuwu] ref cleanup error",E)}S?.parentNode&&S.parentNode.removeChild(S)}else S?.parentNode&&S.parentNode.removeChild(S);g.push(null),_(null);continue}let b=Ve(H,v);if(p==null||typeof p=="boolean"){if(S?.nodeType===8)b&&S.nodeValue!==b.nodeValue&&(S.nodeValue=b.nodeValue),g.push(S),_(S);else if(b&&S?.parentNode)S.parentNode.replaceChild(b,S);else if(b){let E=null;for(let P=C+1;P<c.length;P++){let L=c[P];if(L&&L.parentNode===e){E=L;break}}if(!E){let P=null;for(let L=g.length-1;L>=0;L--)if(g[L]){P=g[L];break}P&&P.parentNode===e&&(E=P.nextSibling)}E&&E.parentNode===e?e.insertBefore(b,E):e.appendChild(b),g.push(b),_(b)}else g.push(b),_(b);continue}if(Array.isArray(p)||p!=null&&typeof p=="object"&&D(p)){let E=j(p,c[C]),P=((E??[])[E?.length?E.length-1:0]??S)?.nextSibling??null;for(let L of E??[])L.parentNode?.removeChild(L);for(let L of $(p?.props?.children))L!=null&&typeof L=="object"&&!Array.isArray(L)&&typeof L.type=="function"&&Q(L,o.registry);b&&P&&P.parentNode===e?e.insertBefore(b,P):b&&e.appendChild(b),g.push(b),_(b);continue}if(p&&typeof p=="object"&&!Array.isArray(p)&&p.type===B){let E=ye(p,S,e,o);b&&E?e.insertBefore(b,E):b&&e.appendChild(b),g.push(b),_(b);continue}if(p&&typeof p=="object"&&!Array.isArray(p)&&typeof p.type=="function"){let E=ye(p,S,e,o);b&&E?e.insertBefore(b,E):b&&e.appendChild(b),g.push(b),_(b);continue}if(p&&typeof p=="object"&&!Array.isArray(p))if(typeof p.type=="function")Q(p,o.registry);else try{K(p,o.registry)}catch(E){console.error("[weifuwu] ref cleanup error",E)}b&&S?.parentNode?S.parentNode.replaceChild(b,S):b&&e.appendChild(b),g.push(b),_(b);continue}if(p!=null&&typeof p=="object"&&!Array.isArray(p)&&v!=null&&typeof v=="object"&&!Array.isArray(v)&&v===p){g.push(c[C]),_(c[C]);continue}if(p==null||typeof p=="boolean"){if(v==null||typeof v=="boolean"){let E=c[C]??null;g.push(E),_(E);continue}let S=F(v,o,o.browser??U(),String(C));if(S==null){g.push(null),_(null);continue}let H=c[C];if(H&&H.nodeType===8&&H.nodeValue?.includes("type=hole")){H.parentNode?.replaceChild(S,H),g.push(S),_(S);continue}let b=null;for(let E=C+1;E<c.length;E++){let P=c[E];if(P&&P.parentNode===e){b=P;break}}if(!b){let E=null;for(let P=g.length-1;P>=0;P--)if(g[P]){E=g[P];break}if(E&&E.parentNode===e&&(b=E.nextSibling),!b){let P=c[c.length-1];P&&P.parentNode===e&&(b=P.nextSibling)}}b&&b.parentNode===e?e.insertBefore(S,b):e.appendChild(S),g.push(S),_(S);continue}if(Array.isArray(v)||v!=null&&typeof v=="object"&&D(v)){let S=o.browser??U();if(Array.isArray(p)||p!=null&&typeof p=="object"&&D(p)){let ie=j(p,c[C]),Z=dn(e,p,v,o,ie);g.push(...Z),_(c[C]??Z[0]??null);continue}let b=F(v,o,S,String(C));if(b==null){g.push(null),_(null);continue}let E=c[C],P=p&&typeof p=="object"?j(p,E):null;if(P&&P.length>1){let ie=(P[P.length-1]??E)?.nextSibling??null;for(let Z of P)Z.parentNode&&Z.parentNode.removeChild(Z);if(p&&typeof p=="object"&&!Array.isArray(p))if(typeof p.type=="function")Q(p,o.registry);else try{K(p,o.registry)}catch(Z){console.error("[weifuwu] ref cleanup error",Z)}ie&&ie.parentNode===e?e.insertBefore(b,ie):e.appendChild(b)}else E?.parentNode?E.parentNode.replaceChild(b,E):e.appendChild(b);let L=b.nodeType===11?Array.from(b.childNodes):[b];g.push(...L),_(L[0]??b);continue}if(Array.isArray(p)||p!=null&&typeof p=="object"&&D(p)){let S=o.browser??U(),H=j(p,c[C]);R("diff")&&I("diff","debug","",`multi-remove i=${C} range=${H?H.map(re).join(" | "):"null"}`);for(let P of H??[])P.parentNode?.removeChild(P);for(let P of $(p?.props?.children))P!=null&&typeof P=="object"&&!Array.isArray(P)&&typeof P.type=="function"&&Q(P,o.registry);let b=F(v,o,S,String(C));if(b==null){g.push(null),_(null);continue}let E=c[C+1]??null;E?.parentNode?E.parentNode.insertBefore(b,E):e.appendChild(b),g.push(b),_(b);continue}let A=ne(e,c[C],p,v,o);R("diff")&&I("diff","trace","",`after-patch i=${C} new=${se(v)} node=${re(A)} dom=${le(e)}`);let G=un(v,A);g.push(...G),_(G[0]??A??null)}return g}let x=new Map;s.forEach((m,g)=>{let _=ke(m);_!==null&&m&&typeof m=="object"&&!Array.isArray(m)&&x.set(_,{vnode:m,nodes:[c[g]??null].filter(Boolean),index:g})});let N=[],V=new Set,T=m=>{i&&i.push(m)},y=null;return l.forEach((m,g)=>{let _=ke(m),C=m;if(_!==null&&x.has(_)){let p=x.get(_),v=p.nodes[0]??null;V.add(_);let h=ne(e,v,p.vnode,C,o),A=un(C,h),G=A[0]??h,S=A[A.length-1]??h;if(G&&G.parentNode===e&&y&&G.previousSibling!==y){R("diff")&&I("diff","debug","",`keyed-correct i=${g} k=${_} move=[${A.map(re).join(" | ")}] after=${re(y)} before=${le(e)}`);let H=y.nextSibling;for(let b of A)b&&b.parentNode===e&&e.insertBefore(b,H);R("diff")&&I("diff","debug","",`keyed-correct after=${le(e)}`)}N.push(...A),T(A[0]??h??null),S&&(y=S)}else{if(m==null||typeof m=="boolean"){let p=s[g]??null,v=c[g]??null,h=Ve(o.browser??U(),m);if(p==null||typeof p=="boolean")v?.nodeType===8?(h&&v.nodeValue!==h.nodeValue&&(v.nodeValue=h.nodeValue),N.push(v),T(v),v&&(y=v)):(h&&v?.parentNode?v.parentNode.replaceChild(h,v):h&&e.appendChild(h),N.push(h),T(h),h&&(y=h));else{if(Array.isArray(p)||p!=null&&typeof p=="object"&&D(p)){let A=j(p,c[g]),G=((A??[])[A?.length?A.length-1:0]??v)?.nextSibling??null;for(let S of A??[])S.parentNode?.removeChild(S);for(let S of $(p?.props?.children))S!=null&&typeof S=="object"&&!Array.isArray(S)&&typeof S.type=="function"&&Q(S,o.registry);h&&G&&G.parentNode===e?e.insertBefore(h,G):h&&e.appendChild(h),N.push(h),T(h),h&&(y=h);return}if(typeof p=="object"&&!Array.isArray(p)&&p.type===B){let A=ye(p,v,e,o);h&&A?e.insertBefore(h,A):h&&e.appendChild(h),N.push(h),T(h),h&&(y=h);return}if(typeof p=="object"&&!Array.isArray(p)&&typeof p.type=="function"){let A=ye(p,v,e,o);h&&A?e.insertBefore(h,A):h&&e.appendChild(h),N.push(h),T(h),h&&(y=h);return}if(typeof p=="object"&&!Array.isArray(p))if(typeof p.type=="function")Q(p,o.registry);else try{K(p,o.registry)}catch(A){console.error("[weifuwu] ref cleanup error",A)}h&&v?.parentNode?v.parentNode.replaceChild(h,v):h&&e.appendChild(h),N.push(h),T(h),h&&(y=h)}return}if(W(C)){let p=s[g]??null,v=ne(e,c[g]??null,p,C,o),h=un(C,v);N.push(...h),T(h[0]??v??null);let A=h[h.length-1]??v;A&&(y=A)}else{let p=F(C,o,o.browser??U());if(N.push(p),T(p??null),p!=null){let v=c[g];v&&v.nodeType===8&&v.nodeValue?.includes("type=hole")?(v.parentNode?.replaceChild(p,v),y=p):(y?e.insertBefore(p,y.nextSibling):f&&f.parentNode===e?e.insertBefore(p,f):e.insertBefore(p,e.firstChild),y=p)}}}}),s.forEach((m,g)=>{let _=ke(m),C=m&&typeof m=="object"&&!Array.isArray(m)&&typeof m.type=="function";if(_!==null&&!V.has(_)){let p=m&&typeof m=="object"&&!Array.isArray(m)?j(m,c[g]):null;if(R("diff")&&I("diff","trace","",`keyed-delete i=${g} k=${_} range=${p?.length??0} oldNode=${re(c[g])}`),m&&typeof m=="object"&&!Array.isArray(m))if(C)Q(m,o.registry);else try{K(m,o.registry)}catch(h){console.error("[weifuwu] ref cleanup error",h)}let v=c[g];if(p&&p.length>1)for(let h of p)h.parentNode&&h.parentNode.removeChild(h);else v?.parentNode&&v.parentNode.removeChild(v)}else if(_===null){let p=c[g];if(!(p?.nodeType===8&&p.nodeValue?.includes("type=hole"))||g>=l.length){if(m&&typeof m=="object"&&!Array.isArray(m))if(C)Q(m,o.registry);else try{K(m,o.registry)}catch(A){console.error("[weifuwu] ref cleanup error",A)}let h=m&&typeof m=="object"&&!Array.isArray(m)?j(m,p):null;if(h&&h.length>1)for(let A of h)A.parentNode&&A.parentNode.removeChild(A);else p?.parentNode&&p.parentNode.removeChild(p)}}}),N}function cn(){return!!globalThis?.__WF_VDOM_AUDIT}function De(e,n,t){if(n==null||n.length===0)return;let o=Array.from(e.childNodes);if(!n.some(i=>{if(i==null||typeof i!="object")return!1;if(Array.isArray(i))return!0;let s=i.type;return s===B||s===te}))for(let i=0;i<n.length;i++){let s=n[i];if(s==null||typeof s=="boolean"){let l=o[i];(!l||l.nodeType!==8||!l.nodeValue?.includes("type=hole"))&&t(`[audit] \u5360\u4F4D\u9519\u4F4D\uFF1A\u4F4D\u7F6E ${i} \u671F\u671B\u6CE8\u91CA(wf-hole)\uFF0C\u5B9E\u9645 ${l?.nodeName??"null"}\uFF08${e.nodeName}\uFF09`)}else if(typeof s=="string"||typeof s=="number"){let l=o[i];l&&l.nodeType!==3&&t(`[audit] \u6587\u672C\u9519\u4F4D\uFF1A\u4F4D\u7F6E ${i} \u671F\u671B\u6587\u672C\u8282\u70B9\uFF0C\u5B9E\u9645 ${l.nodeName}\uFF08${e.nodeName}\uFF09`)}}}function Ne(e,n,t){if(n==null||typeof n=="boolean"||typeof n=="string"||typeof n=="number")return;if(Array.isArray(n)){De(e,n,t);for(let i of n)if(i!=null&&typeof i=="object"&&Array.isArray(i))for(let s of i)Ne(e,s,t);else i!=null&&typeof i=="object"&&!Array.isArray(i)&&D(i)&&De(e,$(i.props?.children),t);return}let o=n;if(W(o))return;if(D(o)){De(e,$(o.props?.children),t);return}if(On(o.type))return;if(O(o)){let i=o._refNode;i&&i.parentNode!==e&&t(`[audit] \u7EC4\u4EF6\u951A\u70B9\u9519\u4F4D\uFF1A${Y(o.type)} _refNode \u4E0D\u5728\u7236\u8282\u70B9\u5185`),o._child!=null&&Ne(e,o._child,t);return}let r=o.el??o._refNode;if(r&&r.nodeType===1&&r.tagName.toLowerCase()!==String(o.type)&&t(`[audit] \u5143\u7D20\u7C7B\u578B\u9519\u4F4D\uFF1A\u671F\u671B <${String(o.type)}>\uFF0C\u5B9E\u9645 ${r.tagName}`),r&&r.nodeType===1&&!("innerHTML"in(o.props??{}))){De(r,$(o.props?.children),t);for(let i of $(o.props?.children))i!=null&&typeof i=="object"&&!Array.isArray(i)&&O(i)&&Ne(r,i,t)}}function We(e){let{registry:n,ctx:t}=e;async function o(i){let s=n.idRegistry.get(i);if(!s||!O(s)||typeof s._render!="function")return;let l=s;try{let a=await l._render(l.props),u=await J(a,t,l._child,n)??null,d=l._child;l._child=u;let f=l._parentNode??l._refNode?.parentNode??e.rootEl??null;if(f){let c={browser:t.browser??U(),registry:n,ctxVersion:Ue(t)},w=ne(f,l._refNode??null,d,u,c);if(l._refNode=w,cn())try{let x=[];Ne(f,u,N=>x.push(N)),x.length&&console.error("[vdom2/audit] "+x.join(" | "))}catch(x){console.error("[vdom2/audit] \u6821\u9A8C\u5F02\u5E38:",x)}}}catch(a){e.onError?e.onError(a):console.error("[vdom2] render error:",a?.stack??a)}}function r(i){return i==null?Promise.resolve():Promise.all(i.map(s=>o(s))).then(()=>{})}return{render:r}}function Fn(e){let{ctx:n,browser:t}=e,o=e.registry??be(),r=e.renderer??We({registry:o,ctx:n,rootEl:e.root,onError:e.onError}),i=n.ui,s=null,l=null,a={ctx:n,registry:o,renderer:r,async mount(u){s=u;let d=await J(u,n,null,o);e.root.innerHTML="";let f=F(d,n,t);if(f!=null&&e.root.appendChild(f),l=d?._child??d,i&&(i._rootVNodeId=d?._id??null),cn())try{let c=[];Ne(e.root,d,w=>c.push(w)),c.length&&console.error("[vdom2/audit] "+c.join(" | "))}catch(c){console.error("[vdom2/audit] \u6821\u9A8C\u5F02\u5E38:",c)}},async rerender(){if(s==null)return;let u=[];for(let[,d]of o.idRegistry)O(d)&&typeof d._render=="function"&&d._id&&u.push(d._id);await r.render(u)},unmount(){for(let[,u]of o.idRegistry)try{K(u,o)}catch{}e.root.innerHTML=""}};return a.close=()=>a.unmount(),a}var qn=U();function Bn(e,n="bottom",t=6,o=!0){switch(n){case"bottom":return{top:e.bottom+t,left:o?e.left+e.width/2:e.left};case"top":return{top:e.top-t,left:o?e.left+e.width/2:e.left};case"left":return{top:o?e.top+e.height/2:e.top,left:e.left-t};case"right":return{top:o?e.top+e.height/2:e.top,left:e.right+t}}}function Fe(e,n,t=8){if(!n)return e;let o=n.getBoundingClientRect();if(o.width===0&&o.height===0)return e;let r=Number.parseFloat(n.style.top)||o.top,i=Number.parseFloat(n.style.left)||o.left,s=e.top-r,l=e.left-i,a={top:o.top+s,bottom:o.bottom+s,left:o.left+l,right:o.right+l},u=qn.viewportWidth(),d=qn.viewportHeight(),f=e.top,c=e.left;return a.bottom>d-t&&(f=Math.max(t,f-(a.bottom-(d-t)))),a.top<t&&(f=Math.max(t,f+(t-a.top))),a.right>u-t&&(c=Math.max(t,c-(a.right-(u-t)))),a.left<t&&(c=Math.max(t,c+(t-a.left))),{top:f,left:c,width:e.width}}var Ce=U();function Kn(e){let n=new Map,t=new Map,o=!1,r=0;function i(){r||(r=requestAnimationFrame(()=>{r=0;let d=[];for(let[f,c]of n){if(!c.isOpen())continue;let w=c.getEl();if(!w)continue;let x=w.getBoundingClientRect();if(x.width===0&&x.height===0)continue;let N=c.compute(x);Object.assign(c.pos,Fe(N,c.panel?.(),c.margin)),d.push(f)}for(let[f,c]of t){let w=c.getScroller(),x=w instanceof Window?Ce.scrollingElement()?.scrollTop??Ce.scrollTop():w.scrollTop??0;x!==c.handle.y&&(c.handle.y=x,d.push(f))}d.length>0&&e(d)}))}function s(){o||(o=!0,Ce.addEventListener("scroll",i,{capture:!0,passive:!0}),Ce.addEventListener("resize",i))}function l(){o&&(Ce.removeEventListener("scroll",i,{capture:!0}),Ce.removeEventListener("resize",i),o=!1)}function a(d){for(let f of[...n.keys()])(f.startsWith(`popup:${d}:`)||f===`popup:${d}`||f===d)&&n.delete(f);t.delete(d)}function u(){l(),r&&(cancelAnimationFrame(r),r=0),n.clear(),t.clear()}return{popupTrackers:n,scrollTrackers:t,schedulePopupRecompute:i,ensurePopupListeners:s,destroyPopupListeners:l,cleanupTrackers:a,destroy:u}}function fn(e,n,t){return r=>{r?n(r):t?.()}}function _e(e){return typeof window<"u"&&!!window.matchMedia?.("(hover: hover)").matches}function qe(e){return typeof window<"u"&&!!window.matchMedia?.("(prefers-reduced-motion: reduce)").matches}function pn(e,n,t){let o=null,r=()=>{n(),t?.once&&o&&o.removeEventListener("animationend",r)};return s=>{s?(o=s,s.addEventListener("animationend",r)):o&&(o.removeEventListener("animationend",r),o=null)}}function mn(e,n){let{onLongPress:t,duration:o=500}=n,r,i=0,s=0,l=null,a=()=>{clearTimeout(r),r=void 0},u=e.selfId();if(u){let d=e.onUnmount(f=>{f===u&&(a(),d())})}return{onPointerDown:d=>{i=d.clientX??0,s=d.clientY??0,l=d,a(),r=setTimeout(()=>{r=void 0,l&&t(l)},o)},onPointerUp:a,onPointerLeave:a,onPointerMove:d=>{let f=Math.abs((d.clientX??0)-i),c=Math.abs((d.clientY??0)-s);(f>10||c>10)&&a()},onContextMenu:d=>{d.preventDefault(),t(d)}}}function Pe(e,n){let t=e.selfId(),o="closed",r,i=()=>{o="closed",t?e.render([t]):e.render()};return{get phase(){return o},ref:l=>{l?r||(r=()=>{o==="exit"&&i()},l.addEventListener("animationend",r)):r=void 0},sync:l=>(l?o="open":o==="open"&&(o="exit"),o)}}function yn(e,n,t){let o=e.selfId(),r=qe(e),i=t?.duration??400,s=t?.ease==="linear"?c=>c:c=>1-Math.pow(1-c,3),l,a=n,u={value:r?n:0,reset:()=>{}},d=()=>{o?e.render([o]):e.render()},f=c=>{if(a=c,r){u.value=c,d();return}if(c===u.value)return;l&&cancelAnimationFrame(l);let w=u.value,x=performance.now(),N=V=>{let T=Math.min(1,(V-x)/i);u.value=Math.round(w+(c-w)*s(T)),T<1?(l=requestAnimationFrame(N),d()):(l=void 0,d())};l=requestAnimationFrame(N)};if(u.reset=c=>{c===a&&l||f(c)},o){let c=e.onUnmount(w=>{w===o&&(l&&(cancelAnimationFrame(l),l=void 0),c())})}return queueMicrotask(()=>f(n)),u}function gn(e,n,t){let o=e.selfId(),r=e.browser,i=`media:${o}:${n}`;if(!e.mediaRegistry.has(i)){let s=r.matchMedia(n);t(s.matches);let l=u=>t(u.matches);s.addEventListener("change",l),e.mediaRegistry.set(i,{mql:s,handler:l});let a=e.onUnmount(u=>{if(u!==o)return;let d=e.mediaRegistry.get(i);if(d?.mql&&d.handler)try{d.mql.removeEventListener("change",d.handler)}catch{}e.mediaRegistry.delete(i),a()})}}function hn(e,n,t){let o=e.browser,r=typeof n=="function"?{mobile:"(max-width: 639px)",tablet:"(min-width: 640px) and (max-width: 1023px)",desktop:"(min-width: 1024px)"}:n,i=typeof n=="function"?n:t,s=e.selfId(),l=`bp:${s}`;function a(){for(let[u,d]of Object.entries(r))if(o.matchMedia(d).matches)return u;return Object.keys(r)[0]??""}if(!e.mediaRegistry.has(l)){i(a());let u=[];for(let f of Object.values(r)){let c=o.matchMedia(f),w=()=>i(a());c.addEventListener("change",w),u.push({mql:c,handler:w})}e.mediaRegistry.set(l,{mqls:u});let d=e.onUnmount(f=>{if(f!==s)return;let c=e.mediaRegistry.get(l);if(c?.mqls)for(let w of c.mqls)try{w.mql.removeEventListener("change",w.handler)}catch{}e.mediaRegistry.delete(l),d()})}}function vn(e){let n=e.selfId(),t=e.browser,o={height:t.viewportHeight(),offsetTop:0,keyboardOpen:!1},r=()=>{n?e.render([n]):e.render()},i=()=>{let l=t.visualViewport();o.height=l?.height??t.viewportHeight(),o.offsetTop=l?.offsetTop??0,o.keyboardOpen=o.height<t.viewportHeight()*.9,r()},s=t.visualViewport();if(s?.addEventListener?(s.addEventListener("resize",i),s.addEventListener("scroll",i)):t.addEventListener("resize",i),n){let l=e.onUnmount(a=>{a===n&&(s?.removeEventListener?(s.removeEventListener("resize",i),s.removeEventListener("scroll",i)):t.removeEventListener("resize",i),l())})}return o}function bn(e,n){let t=e.selfId(),o={isIn:!1,ready:!1,observe:a,refresh:u,disconnect:d},r=null,i=null,s=()=>{t?e.render([t]):e.render()};function l(){if(i?.disconnect(),i=null,!r)return;let f=typeof n.rootMargin=="function"?n.rootMargin():n.rootMargin,c=typeof n.threshold=="function"?n.threshold():n.threshold;i=new IntersectionObserver(w=>{let x=w[w.length-1];if(!x)return;let N=x.isIntersecting,V=N!==o.isIn,T=!o.ready;o.isIn=N,o.ready=!0,n.onChange?.(x,N),(V||T)&&s()},{root:n.root?n.root():null,rootMargin:f??"0px",threshold:c??0}),i.observe(r)}function a(f){r=f,f?l():(i?.disconnect(),i=null,o.isIn=!1)}function u(){l()}function d(){i?.disconnect(),i=null}if(t){let f=e.onUnmount(c=>{c===t&&(d(),f())})}return o}function wn(e,n){let t=e.selfId(),o=e.browser,r={y:0,refresh(){let l=i.getScroller();r.y=l instanceof Window?o.scrollingElement()?.scrollTop??o.scrollTop():l.scrollTop??0}},i={handle:r,getScroller:n.getScroller??(()=>window)};if(!t)return r.refresh(),r;e.scrollTrackers.set(t,i),e.ensurePopupListeners(),r.refresh();let s=e.onUnmount(l=>{l===t&&(e.scrollTrackers.delete(t),s())});return r}function Be(e,n){let t=e.selfId(),o=n.value!==void 0;if(o&&!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)}`))),!o&&t&&!e.uncontrolledValues.has(t)){e.uncontrolledValues.set(t,n.value);let i=e.onUnmount(s=>{s===t&&(e.uncontrolledValues.delete(t),i())})}let r=i=>{if(o){n.onChange?.(i);return}t&&e.uncontrolledValues.set(t,i),t?e.render([t]):e.render()};return{value:o?n.value:t?e.uncontrolledValues.get(t):n.value,setValue:r,controlled:o}}function Nn(e,n){let t=e.selfId(),o=Be(e,{value:n.value,onChange:n.onChange,name:n.name});if(t&&!e.inputStates.has(t)){e.inputStates.set(t,{keyword:"",selectedLabel:""});let s=e.onUnmount(l=>{l===t&&(e.inputStates.delete(t),s())})}let r=t?e.inputStates.get(t):{keyword:"",selectedLabel:""},i=()=>{t?e.render([t]):e.render()};return{...o,get keyword(){return r.keyword},setKeyword(s){r.keyword=s,i()},get selectedLabel(){return r.selectedLabel},setSelectedLabel(s){r.selectedLabel=s,i()}}}function Cn(e,n){let t=e.selfId(),o=!1;if(t){let a=e.onUnmount(u=>{u===t&&(o=!0,a())})}let r=()=>{o||(t?e.render([t]):e.render())},i={data:void 0,loading:!1,error:void 0},s=0,l=()=>{let a=++s;i.loading=!0,i.error=null,r(),Promise.resolve().then(()=>n()).then(u=>{s===a&&(i.data=u,i.loading=!1,r())}).catch(u=>{s===a&&(i.error=u,i.loading=!1,r())})};return l(),i.reload=l,i}function xn(e,n){let t=e.selfId(),o=e.browser;if(typeof window>"u")return()=>{};if(o.addEventListener("keydown",n),t){let r=e.onUnmount(i=>{i===t&&(o.removeEventListener("keydown",n),r())})}return()=>o.removeEventListener("keydown",n)}function Vn(e,n){let t=e.browser,o=0,r=0,i=!1,s=d=>{i&&n.onMove(d,{x:d.clientX-o,y:d.clientY-r})},l=d=>{i&&(i=!1,t.removeEventListener("pointermove",s),t.removeEventListener("pointerup",l),n.onEnd?.(d))},a=d=>{i||(d.preventDefault(),i=!0,o=d.clientX,r=d.clientY,t.addEventListener("pointermove",s),t.addEventListener("pointerup",l),n.onStart?.(d))},u=e.selfId();if(u){let d=e.onUnmount(
|
|
3
|
-
\u975E\u53D7\u63A7\uFF1A\u53BB\u6389 open\uFF1B\u53D7\u63A7\uFF1A\u4F20\u5165 onOpenChange={(o) => setOpen(o)}`));let r=()=>o?!!n.open:t?e.openStates.get(t)??!1:!1,i=()=>{t?e.render([t]):e.render()},s=l=>{if(o){n.onOpenChange?.(l);return}t&&e.openStates.set(t,l),i()};return{get open(){return r()},setOpen:s,triggerProps:{onClick:()=>s(!0),onFocus:()=>{n.openOnFocus&&s(!0)}}}}var ge=
|
|
1
|
+
function rt(e){let n=[],t=(e||"/").replace(/:(\w+)/g,(o,r)=>(n.push(r),"([^/]+)")).replace(/\*/g,".*");return{re:new RegExp(`^${t}$`),keys:n}}var Qe=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 o=this,r=n,i=async(s,l,a)=>{let u=l.__routePath??o.getPath(),d=null;return u===r?d="/":(r==="/"?u!=="/"&&u.startsWith("/"):u.startsWith(r+"/"))&&(d=u.slice(r.length)),d===null?a:async(m,c)=>{let b=await t._handle(d,m,c);return b===null?a(m,c):b}};return this._middlewares.push(i),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 o=await t(n);o&&o!==n&&Object.assign(n,o)}}}get(n,t,o){return this._routes.push({path:n,handler:t,title:o?.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 o of this._routes){let{re:r,keys:i}=rt(o.path),s=n.match(r);if(!s)continue;let l={};for(let a=0;a<i.length;a++)l[i[a]]=decodeURIComponent(s[a+1]);t={handler:o.handler,params:l,title:o.title};break}return t||(t={handler:this._notFound??(()=>null),params:{}}),t}async _handle(n,t,o){await this._ensureInjected(o);let r=this.match(n);r.title&&typeof document<"u"&&(document.title=r.title),o.params=r.params,o.route&&(o.route.params=r.params);let s=r.handler,l=o.__routePath;o.__routePath=n;try{for(let a=this._middlewares.length-1;a>=0;a--){let u=this._middlewares[a],d=s;s=await u(t,o,d)??d}return await s(t,o)}finally{o.__routePath=l}}async execute(n,t,o){await this._ensureInjected(t);let r=this.match(o);r.title&&typeof document<"u"&&(document.title=r.title),t.params=r.params,t.route&&(t.route.params=r.params);let s=r.handler;for(let l=this._middlewares.length-1;l>=0;l--){let a=this._middlewares[l],u=s;s=await a(n,t,u)??u}return await s(n,t)}};var K=Symbol("Fragment"),te=Symbol("Portal");function He(e){return e!=null&&typeof e=="object"&&typeof e.type=="string"}function W(e){return e!=null&&typeof e=="object"&&e.type===K}function $(e){return e!=null&&typeof e=="object"&&typeof e.type=="function"}function F(e){return e!=null&&typeof e=="object"&&e.type===te}function Me(e,n,t=null){return{type:e,props:n,key:t,_child:null,_parentNode:null,_refNode:null,_id:null,_customId:null,_parentVNode:null,_ctxVersion:null}}function xe(e,n,t=null){return e===K?{...Me(e,n,t),type:e}:e===te?{...Me(e,n,t),type:e,_remoteEl:null,_placement:"remote"}:typeof e=="function"?{...Me(e,n,t),type:e,_render:null,_outputChild:null}:{...Me(e,n,t),type:e,el:null}}function ce(e,n,...t){let o=In(n??{});return t.length>0&&(o.children=t.length===1?t[0]:t),xe(e,o,n?.key??null)}function Ze(e,n,t){return xe(e,In(n),t??null)}var it=Ze;function st(e,n,t){return Ze(e,n,t)}function In(e){if(!e)return{};let n={};for(let t of Object.keys(e))t!=="key"&&(n[t]=e[t]);return n}function j(e){return e==null||typeof e=="boolean"?[]:Array.isArray(e)?e:[e]}function Le(e,n){let t=xe(te,{children:e,portalKey:n});return t.key=n??null,t}function O(){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,o=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[o](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 o=document.execCommand("copy");return document.body.removeChild(t),o}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 lt(e,n,t=400){let o=!1,r=()=>{o||(o=!0,e.removeEventListener("animationend",r),clearTimeout(i),n())};e.addEventListener("animationend",r);let i=setTimeout(r,t)}function ve(e,n){return Object.assign(Object.create(e),n)}function at(e){let n={baseURL:e?.baseURL??"",headers:{"Content-Type":"application/json",...e?.headers}},t=e?.onRequest,o=e?.onResponse,r=e?.timeout??0;async function i(s,l,a,u,d=!1){let m=n.baseURL+l,c={method:s,headers:{...n.headers,...u?.headers}},b=e?.token?.();b&&!c.headers.Authorization&&(c.headers.Authorization=`Bearer ${b}`);let N=r>0,x=!!u?.signal,V=null,E=null;(N||x)&&(V=new AbortController,c.signal=V.signal,N&&(E=setTimeout(()=>V.abort(new Error("Request timed out")),r)),x&&u.signal.addEventListener("abort",()=>V.abort())),a!==void 0&&s!=="GET"&&s!=="HEAD"&&(c.body=JSON.stringify(a));let y={url:m,init:c};t&&(y=t(y));try{let f=await fetch(y.url,y.init);if(f.status===401&&await e?.onUnauthorized?.()&&!d)return i(s,l,a,u,!0);if(o)return o(f);if(!f.ok){let C=await f.text().catch(()=>"");throw new en(f.status,C||f.statusText)}let g=f.headers.get("content-length");if(f.status===204||g==="0")return;let _=(f.headers.get("content-type")||"").toLowerCase();return _.includes("application/json")||_.includes("json")?f.json():f.text()}finally{E&&clearTimeout(E)}}return s=>ve(s,{api:{get:(a,u)=>i("GET",a,void 0,u),post:(a,u,d)=>i("POST",a,u,d),put:(a,u,d)=>i("PUT",a,u,d),patch:(a,u,d)=>i("PATCH",a,u,d),delete:(a,u)=>i("DELETE",a,void 0,u)}})}var en=class extends Error{status;body;constructor(n,t){super(`API Error ${n}: ${t}`),this.name="ApiError",this.status=n,this.body=t}};function dt(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 ut(e){let n=dt(e);return n?.exp?n.exp*1e3-3e4<Date.now():!0}function ct(e){let n=e?.storage??localStorage,t=e?.tokenKey??"weifuwu_token",o=e?.userKey??"weifuwu_user",r=e?.refreshTokenKey??"weifuwu_refresh",i=e?.refreshEndpoint??"/api/auth/refresh";return s=>{let l=n.getItem(t),a=n.getItem(o),u=null,d={token:l,user:a?JSON.parse(a):null,get isLoggedIn(){return this.token!==null},login(c,b,N){d.token=c,d.user=b,n.setItem(t,c),n.setItem(o,JSON.stringify(b)),N&&n.setItem(r,N)},logout(){d.token=null,d.user=null,n.removeItem(t),n.removeItem(o),n.removeItem(r)},setUser(c){d.user=c,n.setItem(o,JSON.stringify(c))},async refresh(){return u||(u=m().finally(()=>{u=null}),u)}};async function m(){let c=n.getItem(r);if(!c)return!1;let b=n.getItem(t);try{let N=await fetch(i,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({refreshToken:c})});if(n.getItem(t)!==b)return!1;if(!N.ok)return d.logout(),!1;let x=await N.json();return n.getItem(t)!==b?!1:(d.token=x.token,n.setItem(t,x.token),x.refreshToken&&n.setItem(r,x.refreshToken),!0)}catch{return!1}}return l&&ut(l)&&d.refresh().catch(()=>{}),e?.onAuth?.(d),ve(s,{auth:d})}}function ft(e={}){let n=e.url??"/ws",t=e.reconnectInterval??3e3,o=e.maxReconnect??10,r=e.pingInterval??3e4,i=e.pingTimeout??1e4;return s=>{let l=new Set,a=null,u=0,d=null,m=null,c=null,b=!1,N=[],x={isConnected:!1,onMessage:g=>(l.add(g),()=>{l.delete(g)}),send:g=>{let _=JSON.stringify(g);a?.readyState===WebSocket.OPEN?a.send(_):N.push(_)},_connect:V,close:()=>{b=!0,f(),a?.close(),a=null,N=[],x.isConnected=!1}};async function V(){if(!b)try{a=new WebSocket(n),a.onopen=()=>{x.isConnected=!0,u=0;for(let g of N)a.send(g);N=[],E()},a.onmessage=g=>{try{let _=JSON.parse(g.data);for(let C of l)C(_)}catch{}y()},a.onclose=()=>{x.isConnected=!1,f(),!b&&u<o&&(u++,d=setTimeout(V,t*Math.min(u,5)))},a.onerror=()=>{a?.close()}}catch{b||(d=setTimeout(V,t))}}function E(){r<=0||(m=setInterval(()=>{a?.readyState===WebSocket.OPEN&&a.send(JSON.stringify({type:"ping"})),c=setTimeout(()=>{a?.close()},i)},r))}function y(){clearTimeout(c)}function f(){clearInterval(m),clearTimeout(c),clearTimeout(d)}return V(),ve(s,{ws:x})}}var nn={error:0,warn:1,info:2,debug:3,trace:4},Hn=["mount","build","render","diff","audit"],oe={enabled:!1,stages:new Set,level:"info",filter:null},tn=!1;function pt(e){return e&&e in nn?e:"info"}function Mn(e){let n=new Set;if(!e)return n;for(let t of e.split(",")){let o=t.trim().split(":")[0];Hn.includes(o)&&n.add(o)}return n}function on(){if(tn)return oe;tn=!0;try{let e=globalThis,n=new URLSearchParams(typeof e.location?.search=="string"?e.location.search:""),t=n.get("vdom_trace"),o=n.get("vdom_debug"),r=e.__vdom_trace__,i=typeof e.localStorage?.getItem=="function"?e.localStorage.getItem("vdom_trace"):null;if(o==="1"||e?.localStorage?.getItem?.("__WF_VDOM_DEBUG")==="1")oe={enabled:!0,stages:new Set(Hn),level:"debug",filter:null};else if(t||r||i){let s=new Set;if(t)for(let l of Mn(t))s.add(l);if(r?.stages){let l=Array.isArray(r.stages)?r.stages:[...r.stages];for(let a of l)s.add(a)}if(i)for(let l of Mn(i))s.add(l);oe={enabled:!0,stages:s,level:t?.includes(":")?pt(t.split(":")[1]):r?.level??"debug",filter:typeof r?.filter=="string"?r.filter:null}}}catch{}return oe}function R(e,n="info"){return!oe.enabled&&(tn||on(),!oe.enabled)||oe.stages.size&&!oe.stages.has(e)?!1:nn[n]<=nn[oe.level]}function I(e,n,t,...o){if(!R(e,n))return;let r=oe.filter;r&&!t.includes(r)||console.log(`[vdom:${e}] ${t}`,...o)}var mt=0;function Ln(e){return`R${++mt}${e?`:${e}`:""}`}function z(e,n=12){if(!e)return"\u2205";if(typeof e=="string"||typeof e=="number")return`"${e}"`;if(!Array.isArray(e))return se(e);let t=e.slice(0,n).map(se);return e.length>n&&t.push(`\u2026+${e.length-n}`),`[${t.join(" | ")}]`}function se(e){if(e==null||typeof e=="boolean")return String(e);if(typeof e=="string")return`"${e.slice(0,16)}"`;if(typeof e=="number")return String(e);if(Array.isArray(e))return`ARR(${e.length})`;let n=e,t=n.type,o;typeof t=="function"?o=t.name||"Comp":t===K?o="Frag":typeof t=="string"?o=t:o=String(t);let r=n.props?.id?`#${n.props.id}`:n.key!=null?`@${n.key}`:"";return o+r}function re(e){if(!e)return"null";if(e.nodeType===1){let n=e;return`${n.tagName}${n.id?`#${n.id}`:""}${n.getAttribute?.("data-wf-key")?`@${n.getAttribute("data-wf-key")}`:""}`}return e.nodeType===3?`"${(e.textContent??"").slice(0,12)}"`:e.nodeType===8?`<!--${(e.nodeValue??"").slice(0,40)}-->`:`#${e.nodeType}`}function le(e,n=12){if(!e)return"null";let o=Array.from(e.childNodes).slice(0,n).map(re);return e.childNodes.length>n&&o.push(`\u2026+${e.childNodes.length-n}`),`[${o.join(" | ")}]`}function Y(e){return typeof e=="function"&&e.name||"anonymous"}function Ue(e){return e.ui?._ctxVersion??0}function rn(e,n){e.ui?.setMounting?.(n)}var yt=0;function be(){return{idRegistry:new Map,unmountHooks:[],nextId:()=>`_wf_${yt++}`}}function Oe(e,n){return e.unmountHooks.push(n),()=>{let t=e.unmountHooks.indexOf(n);t>=0&&e.unmountHooks.splice(t,1)}}function Un(e,n){for(let t of[...e.unmountHooks])t(n);e.idRegistry.delete(n),e.idRegistry.delete(`custom:${n}`)}function gt(e,n,t,o){try{e(n)}catch(r){console.error(`[weifuwu] ref ${t} error in <${o??"anonymous"}>`,r)}}function G(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 o=[...n.unmountHooks];for(let r of o)r(t._id);if(t._customId)for(let r of o)r(t._customId)}t._id=null,t._customId=null,$(t)&&(t._render=null),t._parentNode=null,t._refNode=null}if(t._child!=null){if(Array.isArray(t._child))for(let o of t._child)o&&typeof o=="object"&&G(o,n);else G(t._child,n);t._child=null}if(t.props?.children&&typeof t.type=="string"){let o=Array.isArray(t.props.children)?t.props.children:[t.props.children];for(let r of o)r&&typeof r=="object"&&G(r,n)}if(typeof t.props?.ref=="function"&>(t.props.ref,null,"cleanup"),F(t)){let o=t._remoteEl;if(o){let r=t._child;if(r!=null)if(Array.isArray(r))for(let i of r)i&&typeof i=="object"&&G(i,n);else typeof r=="object"&&G(r,n);o.remove(),t._remoteEl=null}}}function ht(e,n){if(e===n)return!0;let t=Object.keys(e),o=Object.keys(n);if(t.length!==o.length)return!1;for(let r of t)if(e[r]!==n[r])return!1;return!0}async function vt(e,n,t,o){let r=e;r._id||(o?.reuse?._id?r._id=o.reuse._id:r._id=t.nextId(),t.idRegistry.set(r._id,r)),o?.reuse&&(o.reuse._parentNode&&(r._parentNode=o.reuse._parentNode),o.reuse._refNode&&(r._refNode=o.reuse._refNode),o.reuse._ctxVersion!=null&&(r._ctxVersion=o.reuse._ctxVersion));let i=Object.create(n);i.ui=Object.create(n.ui);let s=i.ui;if(s._selfId=r._id??null,s._selfVNode=r,s.render=function(l){let a=n.ui;return l==null&&r._id?a.render([r._id]):a.render(l)},typeof r._render!="function"&&$(o?.reuse)&&typeof o.reuse._render=="function"&&(r._render=o.reuse._render),typeof r._render!="function"){rn(n,!0);let l;try{l=await r.type(r.props??{},i)}finally{rn(n,!1)}if(typeof l!="function")throw new Error(`Component ${Y(e.type)} must return a render function. Use (init_props, ctx) => (props) => VNode pattern.`);r._render=l}return{renderFn:r._render,childCtx:i}}function sn(e){return!!e&&typeof e.then=="function"}function J(e,n,t,o,r){if(e==null||typeof e=="boolean"||typeof e=="string"||typeof e=="number")return e;if(Array.isArray(e)){R("build")&&I("build","debug","",`array in kids=${z(e)}`);for(let m=0;m<e.length;m++){let c=e[m];if(c!=null&&typeof c=="object"&&!Array.isArray(c)){let b=c;b.key===null?b.key=String(m):b.key=String(b.key)}}let a=Array.isArray(t)?t:[],u=e.map((m,c)=>J(m,n,a[c],o,r));R("build")&&I("build","debug","",`array out kids=${z(e)}`);let d=!1;for(let m=0;m<u.length;m++)if(sn(u[m])){d=!0;break}return d?Promise.all(u).then(()=>e):e}let i=e,s=o??n.__registry??be(),l=t!=null&&typeof t=="object"&&!Array.isArray(t)&&t.type===i.type?t:null;if(typeof i.type=="function"){i._id||(i._id=l?._id??s.nextId(),s.idRegistry.set(i._id,i)),l&&(l._parentNode&&(i._parentNode=l._parentNode),l._refNode&&(i._refNode=l._refNode),l._ctxVersion!=null&&(i._ctxVersion=l._ctxVersion),$(i)&&$(l)&&typeof l._render=="function"&&(i._render=l._render));let a=ht(l?.props??{},i.props??{}),u=Ue(n),d=(l?._ctxVersion??-1)===u;return!r?.force&&a&&d&&l?._child!=null?(i._child=l._child,i._ctxVersion=l._ctxVersion,R("build")&&I("build","debug","",`prune comp=${se(i)} propsSame=${a} verSame=${d}`),i):(R("build")&&I("build","debug","",`mount comp=${se(i)} propsSame=${a} verSame=${d} force=${!!r?.force}`),(async()=>{let{childCtx:m}=await vt(i,n,s,{reuse:l??null}),c=await J(await i._render(i.props),m,l?._child,s,r);return i._child=c??null,i._ctxVersion=u,i})())}if(i.type===K){R("build")&&I("build","debug","",`fragment kids=${z(j(i.props?.children))}`);let a=J(i.props?.children??null,n,l?._child??l?.props?.children,s,r);return sn(a)?a.then(u=>(i._child=u??null,i)):(i._child=a??null,i)}if(typeof i.type=="string"||typeof i.type=="symbol"){R("build")&&I("build","trace","",`native <${String(i.type)}> kids=${z(j(i.props?.children))}`);let a=J(i.props?.children??null,n,l?.props?.children,s,r);return sn(a)?a.then(u=>(i._child=u??null,i)):(i._child=a??null,i)}return i}function D(e,n){if(e==null||typeof e!="object")return null;if(Array.isArray(e)||W(e)){let o=n;if(o&&o.nodeType===8&&o.nodeValue?.includes("type=fragment-start")){let r=[o],i=/fid=([^\s"]+)/.exec(o.nodeValue)?.[1]??"",s=o.nextSibling;for(;s&&(r.push(s),!(s.nodeType===8&&s.nodeValue?.includes("type=fragment-end")&&(/fid=([^\s"]+)/.exec(s.nodeValue)?.[1]??i)===i));)s=s.nextSibling;return r}return null}let t=e;return $(t)?D(t._outputChild??t._child,n):null}function fe(e){if(e==null||typeof e=="boolean")return"hole";if(typeof e=="string"||typeof e=="number")return"text";if(Array.isArray(e))return"arr";let n=e;return W(n)?"frag":F(n)?"portal":$(n)?"comp":"native"}function bt(e){if(e===!1)return"false";if(e===null)return"null";if(e===void 0)return"undefined";if(e===!0)return"true";if(typeof e=="object")try{let n=JSON.stringify(e);return`object ${n!=null&&n.length>80?n.slice(0,80)+"\u2026":n??""}`}catch{return`object ${Object.prototype.toString.call(e)}`}return`bad-vnode type=${typeof e}`}function $e(e){return/[\s"=]/.test(e)?`"${e.replace(/"/g,"'")}"`:e}function X(e){let n=[`type=${e.type}`];return e.value!==void 0&&n.push(`value=${$e(bt(e.value))}`),e.key!=null&&n.push(`key=${$e(e.key)}`),e.id!=null&&n.push(`id=${$e(e.id)}`),e.fid!=null&&n.push(`fid=${$e(e.fid)}`),`wf-hole: ${n.join(" ")}`}function On(e){return typeof e!="string"&&typeof e!="function"&&e!==K&&e!==te}function $n(e){for(let n=0;n<e.length;n++){let t=e[n];if(t!=null&&typeof t=="object"&&!Array.isArray(t)){let o=t;o.key===null?o.key=String(n):o.key=String(o.key)}}}var je=/^on[A-Z]/,wt=/^on[A-Z].*Capture$/;function ln(e){let n=wt.test(e);return{type:(n?e.slice(2,-7):e.slice(2)).toLowerCase(),capture:n}}var an=new Set(["draggable","contenteditable","spellcheck","translate"]),Nt=new Set(["zIndex","opacity","lineHeight","fontWeight","fontSizeAdjust","flex","flexGrow","flexShrink","order","zoom","aspectRatio","gridRow","gridColumn","scale","rotate","animationIterationCount","columnCount","fillOpacity","strokeOpacity","stopOpacity","floodOpacity"]);function pe(e,n,t){if(t==null)return;let o=e.ownerDocument?.defaultView;if(an.has(n)){e.setAttribute(n,t?"true":"false");return}if(t!==!1){if(n==="class"||n==="className"){if(typeof t=="object")for(let[r,i]of Object.entries(t))i&&e.classList.add(r);else e.setAttribute("class",String(t));return}if(n==="style"){if(typeof t=="string")e.setAttribute("style",t);else{let r=e.style;for(let[i,s]of Object.entries(t))s==null?r[i]="":i.startsWith("--")?r.setProperty(i,String(s)):typeof s=="number"&&!Nt.has(i)?r[i]=`${s}px`:r[i]=String(s)}return}if(n==="ref"){if(typeof t=="function")try{t(e)}catch(r){console.error("[weifuwu] ref error",r)}return}if(je.test(n)){let{type:r,capture:i}=ln(n);if(typeof t!="function"){console.warn(`[weifuwu] event prop ${n} expects a function, got ${typeof t} \u2014 ignored`);return}e.addEventListener(r,t,i?{capture:!0}:{});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.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 Ve(e,n){return e.createComment(X({type:"hole",value:n,key:null,id:null,fid:null}))}var Ct=new Set(["svg","path","circle","rect","line","polyline","polygon","g","text","defs","use","clipPath"]);function Ee(e,n){return Ve(e,n)}function q(e,n,t,o=null,r=null,i=null){let s=n?.browser??t;if(!s)throw new Error("[vdom2] renderValue requires browser env (ctx.browser)");return St[fe(e)](e,n,s,o,r,i)}function xt(e,n,t){return null}function Vt(e,n,t){return t.createTextNode(String(e))}function Et(e,n,t,o=null,r=null,i=null){let s=e,l=t.createDocumentFragment();if(!l)return null;R("render")&&I("render","debug","",`array kids=${z(s)} fid=${i??"-"} key=${o??"-"}`);let a=t.createComment(X({type:"fragment-start",key:o,id:r,fid:i})),u=t.createComment(X({type:"fragment-end",key:o,id:r,fid:i}));a&&l.appendChild(a);for(let d=0;d<s.length;d++){let m=s[d],c=i!=null?`${i}-${d}`:String(d),b=m==null||typeof m=="boolean"?Ee(t,m):q(m,n,t,String(d),null,c);b!=null&&l.appendChild(b)}return u&&l.appendChild(u),l}function Tt(e,n,t){let o=e,r=o,i=t.bodyElement();if(!i)return null;let s=i.querySelector("#__wf_portal");s||(s=t.createElement("div"),s&&(s.id="__wf_portal",i.appendChild(s)));let l=t.createElement("div");if(l){l.setAttribute("data-portal",String(o.props?.portalKey??"wf"));let a=q(o.props?.children??null,n,t);a!=null&&l.appendChild(a),s&&s.appendChild(l),r._remoteEl=l}return null}function kt(e,n,t,o=null,r=null,i=null){let s=e,l=s,a=t.createDocumentFragment();if(!a)return null;let u=j(s.props?.children);R("render")&&I("render","debug","",`fragment kids=${z(u)} fid=${i??"-"}`);let d=t.createComment(X({type:"fragment-start",key:o,id:r,fid:i})),m=t.createComment(X({type:"fragment-end",key:o,id:r,fid:i}));d&&a.appendChild(d),l._refNode=d;for(let c=0;c<u.length;c++){let b=u[c],N=i!=null?`${i}-${c}`:String(c),x=b==null||typeof b=="boolean"?Ee(t,b):q(b,n,t,String(c),null,N);x!=null&&a.appendChild(x)}return m&&a.appendChild(m),a}function _t(e,n,t){let o=e,r=o;if(typeof r._render!="function")throw new Error(`[vdom2] component ${Y(o.type)} not built (missing _render) \u2014 buildVNode must run before renderValue`);let i=r._child;if(i==null)return r._child=null,null;r._child=i,r._outputChild=i,typeof i=="object"&&!Array.isArray(i)&&(i._parentVNode=o);let s=q(i,n,t);if(s){if(r._refNode=s.nodeType===11?s.firstChild:s,r._id)if(s.nodeType===11)for(let l of Array.from(s.childNodes))l.nodeType===1&&l.setAttribute("data-wf-id",r._id);else s.nodeType===1&&s.setAttribute("data-wf-id",r._id);if(r.key!=null)if(s.nodeType===11)for(let l of Array.from(s.childNodes))l.nodeType===1&&l.setAttribute("data-wf-key",r.key);else s.nodeType===1&&s.setAttribute("data-wf-key",r.key)}return s}function Pt(e,n,t,o,r){let i=e,s=i,l=i.type,a=Ct.has(l)?t.createElementNS("http://www.w3.org/2000/svg",l):t.createElement(l);if(!a)return null;s.el=a,s._refNode=a,R("render")&&I("render","trace","",`native <${l}> key=${i.key??"-"} kids=${z(j(i.props?.children))}`),i.key!=null&&a.setAttribute("data-wf-key",i.key);let u=null;for(let[d,m]of Object.entries(i.props??{}))if(!(d==="children"||d==="key")){if(d==="value"&&a instanceof HTMLSelectElement){u=m;continue}pe(a,d,m)}if(!("innerHTML"in(i.props??{}))){let d=j(i.props?.children);for(let m=0;m<d.length;m++){let c=d[m],b=r!=null?`${r}-${m}`:String(m),N=c==null||typeof c=="boolean"?Ee(t,c):q(c,n,t,String(m),null,b);if(N!=null&&(a.appendChild(N),c&&typeof c=="object"&&!Array.isArray(c)&&typeof c.type=="function")){let x=c;x._parentNode||(x._parentNode=a)}}R("render")&&I("render","trace","",`native <${l}> out=${le(a)}`)}return u!==null&&(a.value=String(u)),a}var St={hole:xt,text:Vt,arr:Et,portal:Tt,frag:kt,comp:_t,native:Pt};function ue(e){let{parent:n,oldNode:t,oldInput:o,ctx:r}=e,i=q(e.newInput,r,r.browser??O());if(i==null)return null;if(t?.parentNode){let s=ye(o,t,n,r);return s&&s.parentNode===n?n.insertBefore(i,s):n.appendChild(i),i}return n.appendChild(i),i}function At(e){return ye(e.oldInput,e.oldNode,e.parent,e.ctx),null}function Rt(e){let n=e.oldNode;if(n?.nodeType===8){let t=Ee(e.ctx.browser??O(),e.newInput);return t&&n.nodeValue!==t.nodeValue&&(n.nodeValue=t.nodeValue),n}return null}function we(e){let{parent:n,oldNode:t,ctx:o}=e,r=q(e.newInput,o,o.browser??O());return r==null?null:(t?.parentNode?t.parentNode.replaceChild(r,t):t?n.insertBefore(r,t):n.appendChild(r),r)}function It(e){let{parent:n,oldNode:t,oldInput:o}=e,r=String(e.newInput);if(String(o)!==r){if(t&&t.nodeType===3)return t.nodeValue=r,t;let i=n.ownerDocument.createTextNode(r);return t?.parentNode?t.parentNode.replaceChild(i,t):n.appendChild(i),i}return t}function Mt(e){let{parent:n,oldNode:t,oldInput:o,ctx:r}=e,i=e.newInput,s=o&&typeof o=="object"&&!Array.isArray(o)?o:null,l=i.type;if(t&&t.nodeType===1&&(s?.type??null)===l&&He(i)){let a=t;return i.el=a,i._refNode=a,Dn(a,s?.props??{},i.props??{}),"innerHTML"in(i.props??{})||Te(a,s?.props?.children??null,i.props?.children??null,r),a}return ue(e)}function Ht(e){let{parent:n,oldNode:t,oldInput:o,ctx:r}=e,i=e.newInput,s=o&&typeof o=="object"&&!Array.isArray(o)?o:null,l=W(s)?D(s,t):null,a=dn(n,s??o,i,r,l);return t?.parentNode?t:a[0]??null}function Lt(e){let{parent:n,oldNode:t,oldInput:o,ctx:r}=e,i=e.newInput;if(!$(i)||typeof i._render!="function")throw new Error(`[vdom2] component ${Y(i.type)} not built in diff \u2014 buildVNode must run before patchValue`);let s=o&&typeof o=="object"&&!Array.isArray(o)?o:null,l=s?.type===i.type;if(!r.force&&s&&l&&s._child!==null&&i._child===s._child)return t;s?.type===i.type&&s._id&&(i._id=s._id,r.registry.idRegistry.set(i._id,i)),i._parentNode=n,t&&(i._refNode=t);let a=i._child;if(a===null)return i._outputChild=null,ne(n,t,s?._child,null,r);i._outputChild=a;let u=ne(n,t,s?._child,a,r);return u&&(i._refNode=u),u}function Ut(e){let{parent:n,oldNode:t,oldInput:o,ctx:r}=e;if(o===e.newInput&&t?.parentNode)return t;let i=n.ownerDocument.createDocumentFragment(),s=Te(n,o,e.newInput,r,t?[t]:null);for(let l of s)l&&i.appendChild(l);return t?.parentNode?i.contains(t)?n.appendChild(i):t.parentNode.replaceChild(i,t):n.appendChild(i),i}function Ot(e){let{ctx:n,oldInput:t}=e,o=e.newInput,r=t&&typeof t=="object"&&!Array.isArray(t)?t:null;if(F(r)&&F(o)){let i=r._remoteEl;if(i){let s=r.props?.children??null,l=o.props?.children??null;Te(i,s,l,n)}return o._remoteEl=r._remoteEl,null}return ue(e)}function me(e){return{text:ue,native:ue,frag:ue,comp:ue,arr:ue,hole:At,portal:ue,...e}}var $t={text:me({text:It}),hole:me({text:we,native:we,frag:we,comp:we,arr:we,portal:we,hole:Rt}),native:me({native:Mt}),frag:me({frag:Ht}),comp:me({comp:Lt}),arr:me({arr:Ut}),portal:me({portal:Ot})};function jn(e){let n=fe(e.oldInput),t=fe(e.newInput);return $t[n][t](e)}function Q(e,n){if(n&&typeof e.type=="function"&&e._id){try{G(e,n)}catch(t){console.error("[weifuwu] ref cleanup error",t)}Un(n,e._id)}}function ke(e){if(e==null||typeof e!="object"||Array.isArray(e))return null;let n=e;return F(n)?typeof n.props?.portalKey=="string"?n.props.portalKey:null:n.key}function un(e,n){if(n&&e&&typeof e=="object"&&!Array.isArray(e)){let t=D(e,n);if(t&&t.length>1)return t}return[n]}function Wn(e,n){let t=j(e.props?.children);for(let o of t){if(o==null||typeof o!="object"||Array.isArray(o))continue;let r=o;typeof r.type=="function"?Q(r,n):(r.type===K||typeof r.type=="string"||typeof r.type=="symbol")&&Wn(r,n)}}function ye(e,n,t,o){let r=null;if(Array.isArray(e)){let i=D(e,n);if(i&&i.length){r=(i[i.length-1]??n)?.nextSibling??null;for(let s of i)s.parentNode&&s.parentNode.removeChild(s);return r&&r.parentNode===t?r:null}return n?.parentNode&&n.parentNode.removeChild(n),n?.nextSibling??null}if(e&&typeof e=="object"&&!Array.isArray(e)){let i=e;if(W(i)){let l=D(i,n)??[];r=(l[l.length-1]??n)?.nextSibling??null;for(let a of l)a.parentNode&&a.parentNode.removeChild(a);return Wn(i,o.registry),r&&r.parentNode===t?r:null}if(F(i)){let s=i._remoteEl;try{G(i.props?.children,o.registry)}catch(l){console.error("[weifuwu] portal ref cleanup error",l)}return s?.parentNode?.removeChild(s),null}if(typeof i.type=="function"){let s=D(i,n);if(Q(i,o.registry),s&&s.length>1){r=(s[s.length-1]??n)?.nextSibling??null;for(let l of s)l.parentNode&&l.parentNode.removeChild(l);return r&&r.parentNode===t?r:null}}else try{G(i,o.registry)}catch(s){console.error("[weifuwu] ref cleanup error",s)}}return r=n?.nextSibling??null,n?.parentNode&&n.parentNode.removeChild(n),r&&r.parentNode===t?r:null}function ne(e,n,t,o,r){return jn({parent:e,oldNode:n,oldInput:t,newInput:o,ctx:r})}function Dn(e,n,t){let o=Object.keys(n),r=Object.keys(t);if(o.length===r.length){let s=!0;for(let l=0;l<o.length;l++)if(o[l]!==r[l]||n[o[l]]!==t[o[l]]){s=!1;break}if(s)return}let i=new Set([...o,...r]);for(let s of i){if(s==="children"||s==="key")continue;let l=n[s],a=t[s];if(l!==a){if(je.test(s)){let{type:u,capture:d}=ln(s);typeof l=="function"&&e.removeEventListener(u,l,d?{capture:!0}:{}),a!=null&&a!==!1&&(typeof a!="function"?console.warn(`[weifuwu] event prop ${s} expects a function, got ${typeof a} \u2014 ignored`):e.addEventListener(u,a,d?{capture:!0}:{}));continue}if(s==="class"||s==="className"){a==null||a===!1?e.removeAttribute("class"):(e.className="",pe(e,s,a));continue}if(a==null||a===!1){if(s==="class"||s==="className")e.removeAttribute("class");else if(je.test(s))e.removeEventListener(s.slice(2).toLowerCase(),l);else if(s==="ref"){if(typeof l=="function")try{l(null)}catch(u){console.error("[weifuwu] ref cleanup error",u)}}else if(s==="value")e.value="";else if(s==="indeterminate")e.indeterminate=!1;else{e.removeAttribute(s);try{delete e[s]}catch{}}continue}pe(e,s,a)}}}function dn(e,n,t,o,r){let i=Array.isArray(n)?n:n?.props?.children??null,s=Array.isArray(t)?t:t?.props?.children??null;return Te(e,i,s,o,r)}function Te(e,n,t,o,r,i){let s=j(n),l=j(t),a=r??Array.from(e.childNodes);R("diff")&&I("diff","debug","",`patchChildren parent=${re(e)} old=${z(s)} new=${z(l)} dom=${le(e)}`);let u=l.some(f=>{if(f==null||typeof f!="object"||Array.isArray(f))return!1;let g=f;return!F(g)&&g.key!==null}),d=l.some(f=>Array.isArray(f))||s.some(f=>Array.isArray(f));R("diff")&&I("diff","debug","",`mode=${u&&!d?"keyed":"unkeyed"} hasUserKey=${u} hasArrayItem=${d}`);let m=r&&r.length?r[r.length-1]:null;if(u){for(let f=0;f<l.length;f++){let g=l[f];g&&typeof g=="object"&&!Array.isArray(g)&&ke(g)===null&&(g.key=`pos:${f}`)}for(let f=0;f<s.length;f++){let g=s[f];g&&typeof g=="object"&&!Array.isArray(g)&&ke(g)===null&&(g.key=`pos:${f}`)}}let c=(()=>{let f=a;f.length>=2&&f[0]?.nodeType===8&&f[0].nodeValue?.includes("fragment-start")&&f[f.length-1]?.nodeType===8&&f[f.length-1].nodeValue?.includes("fragment-end")&&(f=f.slice(1,-1));let g=[],_=0;for(let C=0;C<s.length;C++){let p=s[C];if(Array.isArray(p)){let h=f[_]??null;g.push(h);let A=D(p,h);_+=A?.length??1;continue}if(p==null||typeof p=="boolean"||typeof p=="string"||typeof p=="number"){g.push(f[_]??null),_++;continue}let v=p;if(F(v)){g.push(v._remoteEl??null);continue}if(g.push(v._refNode??f[_]??null),typeof v.type=="function"||W(v)){let h=D(v,v._refNode??f[_]??null);_+=h?.length??1}else _++}return g})();if(d||!l.some(f=>{if(f==null||typeof f!="object"||Array.isArray(f))return!1;let g=f;return!F(g)&&g.key!==null})){let f=Math.max(s.length,l.length),g=[],_=C=>{i&&i.push(C)};for(let C=0;C<f;C++){let p=C<s.length?s[C]:null,v=C<l.length?l[C]:null;if(R("diff")&&I("diff","trace","",`pos ${C} old=${se(p)} new=${se(v)} oldNode=${re(c[C])}`),v==null||typeof v=="boolean"){let k=c[C],M=o.browser??O();if(C>=l.length){if(Array.isArray(p)){R("diff")&&I("diff","trace","",`remove-arr-item i=${C} range=[${(D(p,c[C])??[]).map(re).join(" | ")}] before=${le(e)}`);let T=D(p,c[C]);for(let S of T??[])S.parentNode?.removeChild(S);R("diff")&&I("diff","trace","",`remove-arr-item after=${le(e)}`);for(let S of p)S!=null&&typeof S=="object"&&!Array.isArray(S)&&typeof S.type=="function"&&Q(S,o.registry)}else if(p&&typeof p=="object"&&!Array.isArray(p)){if(typeof p.type=="function")Q(p,o.registry);else try{G(p,o.registry)}catch(T){console.error("[weifuwu] ref cleanup error",T)}k?.parentNode&&k.parentNode.removeChild(k)}else k?.parentNode&&k.parentNode.removeChild(k);g.push(null),_(null);continue}let w=Ve(M,v);if(p==null||typeof p=="boolean"){if(k?.nodeType===8)w&&k.nodeValue!==w.nodeValue&&(k.nodeValue=w.nodeValue),g.push(k),_(k);else if(w&&k?.parentNode)k.parentNode.replaceChild(w,k);else if(w){let T=null;for(let S=C+1;S<c.length;S++){let U=c[S];if(U&&U.parentNode===e){T=U;break}}if(!T){let S=null;for(let U=g.length-1;U>=0;U--)if(g[U]){S=g[U];break}S&&S.parentNode===e&&(T=S.nextSibling)}T&&T.parentNode===e?e.insertBefore(w,T):e.appendChild(w),g.push(w),_(w)}else g.push(w),_(w);continue}if(Array.isArray(p)||p!=null&&typeof p=="object"&&W(p)){let T=D(p,c[C]),S=((T??[])[T?.length?T.length-1:0]??k)?.nextSibling??null;for(let U of T??[])U.parentNode?.removeChild(U);for(let U of j(p?.props?.children))U!=null&&typeof U=="object"&&!Array.isArray(U)&&typeof U.type=="function"&&Q(U,o.registry);w&&S&&S.parentNode===e?e.insertBefore(w,S):w&&e.appendChild(w),g.push(w),_(w);continue}if(p&&typeof p=="object"&&!Array.isArray(p)&&p.type===K){let T=ye(p,k,e,o);w&&T?e.insertBefore(w,T):w&&e.appendChild(w),g.push(w),_(w);continue}if(p&&typeof p=="object"&&!Array.isArray(p)&&typeof p.type=="function"){let T=ye(p,k,e,o);w&&T?e.insertBefore(w,T):w&&e.appendChild(w),g.push(w),_(w);continue}if(p&&typeof p=="object"&&!Array.isArray(p))if(typeof p.type=="function")Q(p,o.registry);else try{G(p,o.registry)}catch(T){console.error("[weifuwu] ref cleanup error",T)}w&&k?.parentNode?k.parentNode.replaceChild(w,k):w&&e.appendChild(w),g.push(w),_(w);continue}if(p!=null&&typeof p=="object"&&!Array.isArray(p)&&v!=null&&typeof v=="object"&&!Array.isArray(v)&&v===p){g.push(c[C]),_(c[C]);continue}if(p==null||typeof p=="boolean"){if(v==null||typeof v=="boolean"){let T=c[C]??null;g.push(T),_(T);continue}let k=q(v,o,o.browser??O(),String(C));if(k==null){g.push(null),_(null);continue}let M=c[C];if(M&&M.nodeType===8&&M.nodeValue?.includes("type=hole")){M.parentNode?.replaceChild(k,M),g.push(k),_(k);continue}let w=null;for(let T=C+1;T<c.length;T++){let S=c[T];if(S&&S.parentNode===e){w=S;break}}if(!w){let T=null;for(let S=g.length-1;S>=0;S--)if(g[S]){T=g[S];break}if(T&&T.parentNode===e&&(w=T.nextSibling),!w){let S=c[c.length-1];S&&S.parentNode===e&&(w=S.nextSibling)}}w&&w.parentNode===e?e.insertBefore(k,w):e.appendChild(k),g.push(k),_(k);continue}if(Array.isArray(v)||v!=null&&typeof v=="object"&&W(v)){let k=o.browser??O();if(Array.isArray(p)||p!=null&&typeof p=="object"&&W(p)){let ie=D(p,c[C]),Z=dn(e,p,v,o,ie);g.push(...Z),_(c[C]??Z[0]??null);continue}let w=q(v,o,k,String(C));if(w==null){g.push(null),_(null);continue}let T=c[C],S=p&&typeof p=="object"?D(p,T):null;if(S&&S.length>1){let ie=(S[S.length-1]??T)?.nextSibling??null;for(let Z of S)Z.parentNode&&Z.parentNode.removeChild(Z);if(p&&typeof p=="object"&&!Array.isArray(p))if(typeof p.type=="function")Q(p,o.registry);else try{G(p,o.registry)}catch(Z){console.error("[weifuwu] ref cleanup error",Z)}ie&&ie.parentNode===e?e.insertBefore(w,ie):e.appendChild(w)}else T?.parentNode?T.parentNode.replaceChild(w,T):e.appendChild(w);let U=w.nodeType===11?Array.from(w.childNodes):[w];g.push(...U),_(U[0]??w);continue}if(Array.isArray(p)||p!=null&&typeof p=="object"&&W(p)){let k=o.browser??O(),M=D(p,c[C]);R("diff")&&I("diff","debug","",`multi-remove i=${C} range=${M?M.map(re).join(" | "):"null"}`);for(let S of M??[])S.parentNode?.removeChild(S);for(let S of j(p?.props?.children))S!=null&&typeof S=="object"&&!Array.isArray(S)&&typeof S.type=="function"&&Q(S,o.registry);let w=q(v,o,k,String(C));if(w==null){g.push(null),_(null);continue}let T=c[C+1]??null;T?.parentNode?T.parentNode.insertBefore(w,T):e.appendChild(w),g.push(w),_(w);continue}let A=ne(e,c[C],p,v,o);R("diff")&&I("diff","trace","",`after-patch i=${C} new=${se(v)} node=${re(A)} dom=${le(e)}`);let L=un(v,A);g.push(...L),_(L[0]??A??null)}return g}let N=new Map;s.forEach((f,g)=>{let _=ke(f);_!==null&&f&&typeof f=="object"&&!Array.isArray(f)&&N.set(_,{vnode:f,nodes:[c[g]??null].filter(Boolean),index:g})});let x=[],V=new Set,E=f=>{i&&i.push(f)},y=null;return l.forEach((f,g)=>{let _=ke(f),C=f;if(_!==null&&N.has(_)){let p=N.get(_),v=p.nodes[0]??null;V.add(_);let h=ne(e,v,p.vnode,C,o),A=un(C,h),L=A[0]??h,k=A[A.length-1]??h;if(L&&L.parentNode===e&&y&&L.previousSibling!==y){R("diff")&&I("diff","debug","",`keyed-correct i=${g} k=${_} move=[${A.map(re).join(" | ")}] after=${re(y)} before=${le(e)}`);let M=y.nextSibling;for(let w of A)w&&w.parentNode===e&&e.insertBefore(w,M);R("diff")&&I("diff","debug","",`keyed-correct after=${le(e)}`)}x.push(...A),E(A[0]??h??null),k&&(y=k)}else{if(f==null||typeof f=="boolean"){let p=s[g]??null,v=c[g]??null,h=Ve(o.browser??O(),f);if(p==null||typeof p=="boolean")v?.nodeType===8?(h&&v.nodeValue!==h.nodeValue&&(v.nodeValue=h.nodeValue),x.push(v),E(v),v&&(y=v)):(h&&v?.parentNode?v.parentNode.replaceChild(h,v):h&&e.appendChild(h),x.push(h),E(h),h&&(y=h));else{if(Array.isArray(p)||p!=null&&typeof p=="object"&&W(p)){let A=D(p,c[g]),L=((A??[])[A?.length?A.length-1:0]??v)?.nextSibling??null;for(let k of A??[])k.parentNode?.removeChild(k);for(let k of j(p?.props?.children))k!=null&&typeof k=="object"&&!Array.isArray(k)&&typeof k.type=="function"&&Q(k,o.registry);h&&L&&L.parentNode===e?e.insertBefore(h,L):h&&e.appendChild(h),x.push(h),E(h),h&&(y=h);return}if(typeof p=="object"&&!Array.isArray(p)&&p.type===K){let A=ye(p,v,e,o);h&&A?e.insertBefore(h,A):h&&e.appendChild(h),x.push(h),E(h),h&&(y=h);return}if(typeof p=="object"&&!Array.isArray(p)&&typeof p.type=="function"){let A=ye(p,v,e,o);h&&A?e.insertBefore(h,A):h&&e.appendChild(h),x.push(h),E(h),h&&(y=h);return}if(typeof p=="object"&&!Array.isArray(p))if(typeof p.type=="function")Q(p,o.registry);else try{G(p,o.registry)}catch(A){console.error("[weifuwu] ref cleanup error",A)}h&&v?.parentNode?v.parentNode.replaceChild(h,v):h&&e.appendChild(h),x.push(h),E(h),h&&(y=h)}return}if(F(C)){let p=s[g]??null,v=ne(e,c[g]??null,p,C,o),h=un(C,v);x.push(...h),E(h[0]??v??null);let A=h[h.length-1]??v;A&&(y=A)}else{let p=q(C,o,o.browser??O());if(x.push(p),E(p??null),p!=null){let v=c[g];v&&v.nodeType===8&&v.nodeValue?.includes("type=hole")?(v.parentNode?.replaceChild(p,v),y=p):(y?e.insertBefore(p,y.nextSibling):m&&m.parentNode===e?e.insertBefore(p,m):e.insertBefore(p,e.firstChild),y=p)}}}}),s.forEach((f,g)=>{let _=ke(f),C=f&&typeof f=="object"&&!Array.isArray(f)&&typeof f.type=="function";if(_!==null&&!V.has(_)){let p=f&&typeof f=="object"&&!Array.isArray(f)?D(f,c[g]):null;if(R("diff")&&I("diff","trace","",`keyed-delete i=${g} k=${_} range=${p?.length??0} oldNode=${re(c[g])}`),f&&typeof f=="object"&&!Array.isArray(f))if(C)Q(f,o.registry);else try{G(f,o.registry)}catch(h){console.error("[weifuwu] ref cleanup error",h)}let v=c[g];if(p&&p.length>1)for(let h of p)h.parentNode&&h.parentNode.removeChild(h);else v?.parentNode&&v.parentNode.removeChild(v)}else if(_===null){let p=c[g];if(!(p?.nodeType===8&&p.nodeValue?.includes("type=hole"))||g>=l.length){if(f&&typeof f=="object"&&!Array.isArray(f))if(C)Q(f,o.registry);else try{G(f,o.registry)}catch(A){console.error("[weifuwu] ref cleanup error",A)}let h=f&&typeof f=="object"&&!Array.isArray(f)?D(f,p):null;if(h&&h.length>1)for(let A of h)A.parentNode&&A.parentNode.removeChild(A);else p?.parentNode&&p.parentNode.removeChild(p)}}}),x}function cn(){return!!globalThis?.__WF_VDOM_AUDIT}function De(e,n,t){if(n==null||n.length===0)return;let o=Array.from(e.childNodes);if(!n.some(i=>{if(i==null||typeof i!="object")return!1;if(Array.isArray(i))return!0;let s=i.type;return s===K||s===te}))for(let i=0;i<n.length;i++){let s=n[i];if(s==null||typeof s=="boolean"){let l=o[i];(!l||l.nodeType!==8||!l.nodeValue?.includes("type=hole"))&&t(`[audit] \u5360\u4F4D\u9519\u4F4D\uFF1A\u4F4D\u7F6E ${i} \u671F\u671B\u6CE8\u91CA(wf-hole)\uFF0C\u5B9E\u9645 ${l?.nodeName??"null"}\uFF08${e.nodeName}\uFF09`)}else if(typeof s=="string"||typeof s=="number"){let l=o[i];l&&l.nodeType!==3&&t(`[audit] \u6587\u672C\u9519\u4F4D\uFF1A\u4F4D\u7F6E ${i} \u671F\u671B\u6587\u672C\u8282\u70B9\uFF0C\u5B9E\u9645 ${l.nodeName}\uFF08${e.nodeName}\uFF09`)}}}function Ne(e,n,t){if(n==null||typeof n=="boolean"||typeof n=="string"||typeof n=="number")return;if(Array.isArray(n)){De(e,n,t);for(let i of n)if(i!=null&&typeof i=="object"&&Array.isArray(i))for(let s of i)Ne(e,s,t);else i!=null&&typeof i=="object"&&!Array.isArray(i)&&W(i)&&De(e,j(i.props?.children),t);return}let o=n;if(F(o))return;if(W(o)){De(e,j(o.props?.children),t);return}if(On(o.type))return;if($(o)){let i=o._refNode;i&&i.parentNode!==e&&t(`[audit] \u7EC4\u4EF6\u951A\u70B9\u9519\u4F4D\uFF1A${Y(o.type)} _refNode \u4E0D\u5728\u7236\u8282\u70B9\u5185`),o._child!=null&&Ne(e,o._child,t);return}let r=o.el??o._refNode;if(r&&r.nodeType===1&&r.tagName.toLowerCase()!==String(o.type)&&t(`[audit] \u5143\u7D20\u7C7B\u578B\u9519\u4F4D\uFF1A\u671F\u671B <${String(o.type)}>\uFF0C\u5B9E\u9645 ${r.tagName}`),r&&r.nodeType===1&&!("innerHTML"in(o.props??{}))){De(r,j(o.props?.children),t);for(let i of j(o.props?.children))i!=null&&typeof i=="object"&&!Array.isArray(i)&&$(i)&&Ne(r,i,t)}}function We(e){let{registry:n,ctx:t}=e;async function o(i){let s=n.idRegistry.get(i);if(!s||!$(s)||typeof s._render!="function")return;let l=s;try{let a=await l._render(l.props),u=await J(a,t,l._child,n)??null,d=l._child;l._child=u;let m=l._parentNode??l._refNode?.parentNode??e.rootEl??null;if(m){let c={browser:t.browser??O(),registry:n,ctxVersion:Ue(t)},b=ne(m,l._refNode??null,d,u,c);if(l._refNode=b,cn())try{let N=[];Ne(m,u,x=>N.push(x)),N.length&&console.error("[vdom2/audit] "+N.join(" | "))}catch(N){console.error("[vdom2/audit] \u6821\u9A8C\u5F02\u5E38:",N)}}}catch(a){e.onError?e.onError(a):console.error("[vdom2] render error:",a?.stack??a)}}function r(i){return i==null?Promise.resolve():Promise.all(i.map(s=>o(s))).then(()=>{})}return{render:r}}function Fn(e){let{ctx:n,browser:t}=e,o=e.registry??be(),r=e.renderer??We({registry:o,ctx:n,rootEl:e.root,onError:e.onError}),i=n.ui,s=null,l=null,a={ctx:n,registry:o,renderer:r,async mount(u){s=u;let d=await J(u,n,null,o);e.root.innerHTML="";let m=q(d,n,t);if(m!=null&&e.root.appendChild(m),l=d?._child??d,i&&(i._rootVNodeId=d?._id??null),cn())try{let c=[];Ne(e.root,d,b=>c.push(b)),c.length&&console.error("[vdom2/audit] "+c.join(" | "))}catch(c){console.error("[vdom2/audit] \u6821\u9A8C\u5F02\u5E38:",c)}},async rerender(){if(s==null)return;let u=[];for(let[,d]of o.idRegistry)$(d)&&typeof d._render=="function"&&d._id&&u.push(d._id);await r.render(u)},unmount(){for(let[,u]of o.idRegistry)try{G(u,o)}catch{}e.root.innerHTML=""}};return a.close=()=>a.unmount(),a}var qn=O();function Bn(e,n="bottom",t=6,o=!0){switch(n){case"bottom":return{top:e.bottom+t,left:o?e.left+e.width/2:e.left};case"top":return{top:e.top-t,left:o?e.left+e.width/2:e.left};case"left":return{top:o?e.top+e.height/2:e.top,left:e.left-t};case"right":return{top:o?e.top+e.height/2:e.top,left:e.right+t}}}function Fe(e,n,t=8){if(!n)return e;let o=n.getBoundingClientRect();if(o.width===0&&o.height===0)return e;let r=Number.parseFloat(n.style.top)||o.top,i=Number.parseFloat(n.style.left)||o.left,s=e.top-r,l=e.left-i,a={top:o.top+s,bottom:o.bottom+s,left:o.left+l,right:o.right+l},u=qn.viewportWidth(),d=qn.viewportHeight(),m=e.top,c=e.left;return a.bottom>d-t&&(m=Math.max(t,m-(a.bottom-(d-t)))),a.top<t&&(m=Math.max(t,m+(t-a.top))),a.right>u-t&&(c=Math.max(t,c-(a.right-(u-t)))),a.left<t&&(c=Math.max(t,c+(t-a.left))),{top:m,left:c,width:e.width}}var Ce=O();function Kn(e){let n=new Map,t=new Map,o=!1,r=0;function i(){r||(r=requestAnimationFrame(()=>{r=0;let d=[];for(let[m,c]of n){if(!c.isOpen())continue;let b=c.getEl();if(!b)continue;let N=b.getBoundingClientRect();if(N.width===0&&N.height===0)continue;let x=c.compute(N);Object.assign(c.pos,Fe(x,c.panel?.(),c.margin)),d.push(m)}for(let[m,c]of t){let b=c.getScroller(),N=b instanceof Window?Ce.scrollingElement()?.scrollTop??Ce.scrollTop():b.scrollTop??0;N!==c.handle.y&&(c.handle.y=N,d.push(m))}d.length>0&&e(d)}))}function s(){o||(o=!0,Ce.addEventListener("scroll",i,{capture:!0,passive:!0}),Ce.addEventListener("resize",i))}function l(){o&&(Ce.removeEventListener("scroll",i,{capture:!0}),Ce.removeEventListener("resize",i),o=!1)}function a(d){for(let m of[...n.keys()])(m.startsWith(`popup:${d}:`)||m===`popup:${d}`||m===d)&&n.delete(m);t.delete(d)}function u(){l(),r&&(cancelAnimationFrame(r),r=0),n.clear(),t.clear()}return{popupTrackers:n,scrollTrackers:t,schedulePopupRecompute:i,ensurePopupListeners:s,destroyPopupListeners:l,cleanupTrackers:a,destroy:u}}function fn(e,n,t){return r=>{r?n(r):t?.()}}function _e(e){return typeof window<"u"&&!!window.matchMedia?.("(hover: hover)").matches}function qe(e){return typeof window<"u"&&!!window.matchMedia?.("(prefers-reduced-motion: reduce)").matches}function pn(e,n,t){let o=null,r=()=>{n(),t?.once&&o&&o.removeEventListener("animationend",r)};return s=>{s?(o=s,s.addEventListener("animationend",r)):o&&(o.removeEventListener("animationend",r),o=null)}}function mn(e,n){let{onLongPress:t,duration:o=500}=n,r,i=0,s=0,l=null,a=()=>{clearTimeout(r),r=void 0},u=e.selfId();if(u){let d=e.onUnmount(m=>{m===u&&(a(),d())})}return{onPointerDown:d=>{i=d.clientX??0,s=d.clientY??0,l=d,a(),r=setTimeout(()=>{r=void 0,l&&t(l)},o)},onPointerUp:a,onPointerLeave:a,onPointerMove:d=>{let m=Math.abs((d.clientX??0)-i),c=Math.abs((d.clientY??0)-s);(m>10||c>10)&&a()},onContextMenu:d=>{d.preventDefault(),t(d)}}}function Pe(e,n){let t=e.selfId(),o="closed",r,i=()=>{o="closed",t?e.render([t]):e.render()};return{get phase(){return o},ref:l=>{l?r||(r=()=>{o==="exit"&&i()},l.addEventListener("animationend",r)):r=void 0},sync:l=>(l?o="open":o==="open"&&(o="exit"),o)}}function yn(e,n,t){let o=e.selfId(),r=qe(e),i=t?.duration??400,s=t?.ease==="linear"?c=>c:c=>1-Math.pow(1-c,3),l,a=n,u={value:r?n:0,reset:()=>{}},d=()=>{o?e.render([o]):e.render()},m=c=>{if(a=c,r){u.value=c,d();return}if(c===u.value)return;l&&cancelAnimationFrame(l);let b=u.value,N=performance.now(),x=V=>{let E=Math.min(1,(V-N)/i);u.value=Math.round(b+(c-b)*s(E)),E<1?(l=requestAnimationFrame(x),d()):(l=void 0,d())};l=requestAnimationFrame(x)};if(u.reset=c=>{c===a&&l||m(c)},o){let c=e.onUnmount(b=>{b===o&&(l&&(cancelAnimationFrame(l),l=void 0),c())})}return queueMicrotask(()=>m(n)),u}function gn(e,n,t){let o=e.selfId(),r=e.browser,i=`media:${o}:${n}`;if(!e.mediaRegistry.has(i)){let s=r.matchMedia(n);t(s.matches);let l=u=>t(u.matches);s.addEventListener("change",l),e.mediaRegistry.set(i,{mql:s,handler:l});let a=e.onUnmount(u=>{if(u!==o)return;let d=e.mediaRegistry.get(i);if(d?.mql&&d.handler)try{d.mql.removeEventListener("change",d.handler)}catch{}e.mediaRegistry.delete(i),a()})}}function hn(e,n,t){let o=e.browser,r=typeof n=="function"?{mobile:"(max-width: 639px)",tablet:"(min-width: 640px) and (max-width: 1023px)",desktop:"(min-width: 1024px)"}:n,i=typeof n=="function"?n:t,s=e.selfId(),l=`bp:${s}`;function a(){for(let[u,d]of Object.entries(r))if(o.matchMedia(d).matches)return u;return Object.keys(r)[0]??""}if(!e.mediaRegistry.has(l)){i(a());let u=[];for(let m of Object.values(r)){let c=o.matchMedia(m),b=()=>i(a());c.addEventListener("change",b),u.push({mql:c,handler:b})}e.mediaRegistry.set(l,{mqls:u});let d=e.onUnmount(m=>{if(m!==s)return;let c=e.mediaRegistry.get(l);if(c?.mqls)for(let b of c.mqls)try{b.mql.removeEventListener("change",b.handler)}catch{}e.mediaRegistry.delete(l),d()})}}function vn(e){let n=e.selfId(),t=e.browser,o={height:t.viewportHeight(),offsetTop:0,keyboardOpen:!1},r=()=>{n?e.render([n]):e.render()},i=()=>{let l=t.visualViewport();o.height=l?.height??t.viewportHeight(),o.offsetTop=l?.offsetTop??0,o.keyboardOpen=o.height<t.viewportHeight()*.9,r()},s=t.visualViewport();if(s?.addEventListener?(s.addEventListener("resize",i),s.addEventListener("scroll",i)):t.addEventListener("resize",i),n){let l=e.onUnmount(a=>{a===n&&(s?.removeEventListener?(s.removeEventListener("resize",i),s.removeEventListener("scroll",i)):t.removeEventListener("resize",i),l())})}return o}function bn(e,n){let t=e.selfId(),o={isIn:!1,ready:!1,observe:a,refresh:u,disconnect:d},r=null,i=null,s=()=>{t?e.render([t]):e.render()};function l(){if(i?.disconnect(),i=null,!r)return;let m=typeof n.rootMargin=="function"?n.rootMargin():n.rootMargin,c=typeof n.threshold=="function"?n.threshold():n.threshold;i=new IntersectionObserver(b=>{let N=b[b.length-1];if(!N)return;let x=N.isIntersecting,V=x!==o.isIn,E=!o.ready;o.isIn=x,o.ready=!0,n.onChange?.(N,x),(V||E)&&s()},{root:n.root?n.root():null,rootMargin:m??"0px",threshold:c??0}),i.observe(r)}function a(m){r=m,m?l():(i?.disconnect(),i=null,o.isIn=!1)}function u(){l()}function d(){i?.disconnect(),i=null}if(t){let m=e.onUnmount(c=>{c===t&&(d(),m())})}return o}function wn(e,n){let t=e.selfId(),o=e.browser,r={y:0,refresh(){let l=i.getScroller();r.y=l instanceof Window?o.scrollingElement()?.scrollTop??o.scrollTop():l.scrollTop??0}},i={handle:r,getScroller:n.getScroller??(()=>window)};if(!t)return r.refresh(),r;e.scrollTrackers.set(t,i),e.ensurePopupListeners(),r.refresh();let s=e.onUnmount(l=>{l===t&&(e.scrollTrackers.delete(t),s())});return r}function Be(e,n){let t=e.selfId(),o=n.value!==void 0;if(o&&!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)}`))),!o&&t&&!e.uncontrolledValues.has(t)){e.uncontrolledValues.set(t,n.value);let i=e.onUnmount(s=>{s===t&&(e.uncontrolledValues.delete(t),i())})}let r=i=>{if(o){n.onChange?.(i);return}t&&e.uncontrolledValues.set(t,i),t?e.render([t]):e.render()};return{value:o?n.value:t?e.uncontrolledValues.get(t):n.value,setValue:r,controlled:o}}function Nn(e,n){let t=e.selfId(),o=Be(e,{value:n.value,onChange:n.onChange,name:n.name});if(t&&!e.inputStates.has(t)){e.inputStates.set(t,{keyword:"",selectedLabel:""});let s=e.onUnmount(l=>{l===t&&(e.inputStates.delete(t),s())})}let r=t?e.inputStates.get(t):{keyword:"",selectedLabel:""},i=()=>{t?e.render([t]):e.render()};return{...o,get keyword(){return r.keyword},setKeyword(s){r.keyword=s,i()},get selectedLabel(){return r.selectedLabel},setSelectedLabel(s){r.selectedLabel=s,i()}}}function Cn(e,n){let t=e.selfId(),o=!1;if(t){let a=e.onUnmount(u=>{u===t&&(o=!0,a())})}let r=()=>{o||(t?e.render([t]):e.render())},i={data:void 0,loading:!1,error:void 0},s=0,l=()=>{let a=++s;i.loading=!0,i.error=null,r(),Promise.resolve().then(()=>n()).then(u=>{s===a&&(i.data=u,i.loading=!1,r())}).catch(u=>{s===a&&(i.error=u,i.loading=!1,r())})};return l(),i.reload=l,i}function xn(e,n){let t=e.selfId(),o=e.browser;if(typeof window>"u")return()=>{};if(o.addEventListener("keydown",n),t){let r=e.onUnmount(i=>{i===t&&(o.removeEventListener("keydown",n),r())})}return()=>o.removeEventListener("keydown",n)}function Vn(e,n){let t=e.browser,o=0,r=0,i=!1,s=d=>{i&&n.onMove(d,{x:d.clientX-o,y:d.clientY-r})},l=d=>{i&&(i=!1,t.removeEventListener("pointermove",s),t.removeEventListener("pointerup",l),n.onEnd?.(d))},a=d=>{i||(d.preventDefault(),i=!0,o=d.clientX,r=d.clientY,t.addEventListener("pointermove",s),t.addEventListener("pointerup",l),n.onStart?.(d))},u=e.selfId();if(u){let d=e.onUnmount(m=>{m===u&&(i&&(t.removeEventListener("pointermove",s),t.removeEventListener("pointerup",l),i=!1),d())})}return{onPointerDown:a}}function En(e,n){let t={};n.onDrop&&(t.onDrop=r=>{r.preventDefault(),n.onDrop(r)}),n.onDragOver&&(t.onDragOver=r=>{r.preventDefault(),n.onDragOver(r)}),n.onDragLeave&&(t.onDragLeave=r=>n.onDragLeave(r));let o={draggable:!0};if(n.onDragStart){let r=n.onDragStart;o.onDragStart=i=>{typeof document<"u"&&document.body.classList.add("wf-dragging"),r(i)}}if(n.onDragEnd){let r=n.onDragEnd;o.onDragEnd=i=>{typeof document<"u"&&document.body.classList.remove("wf-dragging"),r(i)}}return{dropProps:t,dragProps:o}}function Ge(e,n){let t=e.selfId(),o={top:0,left:0,refresh:()=>{}};if(!t)return o;let r={pos:o,getEl:n.el,isOpen:n.isOpen,compute:n.compute,panel:n.panel,margin:n.margin??8};e.popupTrackers.set(t,r),e.ensurePopupListeners();let i=e.onUnmount(s=>{s===t&&(e.popupTrackers.delete(t),i())});return o.refresh=()=>{let s=r.getEl();if(!s)return;let l=s.getBoundingClientRect();if(l.width===0&&l.height===0)return;let a=r.compute(l);Object.assign(o,Fe(a,r.panel?.(),r.margin))},o}function Tn(e,n){let t=e.selfId(),o=e.browser,r=_e(e),i=()=>typeof n.trigger=="function"?n.trigger():n.trigger??"manual",s=n.open!==void 0,l=()=>!!n.disabled?.(),a=()=>s?typeof n.open=="function"?!!n.open():!!n.open:n.isOpen(),u=n.presence?Pe(e,{name:n.name}):null,d,m=!1,c=P=>{if(!u)return P?"open":"closed";let H=u.sync(P);return P&&n.lockScroll&&!m&&(jt(),m=!0),H},b=P=>{l()||(s?n.onOpenChange?.(P):u?P?c(!0):a()&&c(!1):n.setOpen(P))},N=()=>{let P=n.placement;return typeof P=="function"?P():P??"bottom"},x=null,V=!1,E=Ge(e,{el:n.el??(()=>null),isOpen:()=>a(),compute:P=>{if(n.position){let H=n.position();return{top:H.y,left:H.x,width:H.width}}return Bn(P,N(),n.gap??6,n.center!==!1)},panel:()=>x,margin:n.margin??8}),y=P=>{if(n.closeOnOutside===!1||n.mask||!a())return;let H=P.target;if(!(H instanceof Node))return;let ee=n.el?.()??null;ee&&ee.contains(H)||x&&x.contains(H)||b(!1)},f=P=>{n.closeOnEscape!==!1&&(P.key!=="Escape"||!a()||b(!1))};if(o.addEventListener("mousedown",y),o.addEventListener("keydown",f),t){let P=e.onUnmount(H=>{H===t&&(o.removeEventListener("mousedown",y),o.removeEventListener("keydown",f),P())})}let g={},_=P=>typeof P=="function"?P():P??0,C=()=>_(n.openDelay),p=()=>_(n.closeDelay),v,h,A=()=>{clearTimeout(v),clearTimeout(h),v=void 0,h=void 0},L=P=>{if(l())return;let H=P.currentTarget,ee=P.relatedTarget;H.contains(ee)||(clearTimeout(h),h=void 0,v=setTimeout(()=>{v=void 0,b(!0)},C()))},k=P=>{if(l())return;let H=P.currentTarget,ee=P.relatedTarget;H.contains(ee)||(clearTimeout(v),v=void 0,h=setTimeout(()=>{h=void 0,b(!1)},p()))},M=()=>{l()||(clearTimeout(h),h=void 0,v=setTimeout(()=>{v=void 0,b(!0)},C()))},w=()=>{l()||(clearTimeout(v),v=void 0,h=setTimeout(()=>{h=void 0,b(!1)},p()))},T=()=>i()==="hover";if(g.onMouseOver=P=>{T()&&L(P)},g.onMouseOut=P=>{T()&&k(P)},g.onClick=()=>{T()?r||b(!a()):i()==="click"&&b(!0)},g.onFocus=()=>{T()?M():i()==="focus"&&(clearTimeout(h),h=void 0,b(!0))},g.onBlur=()=>{T()?w():i()==="focus"&&(clearTimeout(v),v=void 0,h=setTimeout(()=>{h=void 0,b(!1)},p()))},i()==="longpress"){let P,H=0,ee=0,de=()=>{clearTimeout(P),P=void 0};g.onPointerDown=B=>{l()||(H=B.clientX??0,ee=B.clientY??0,de(),P=setTimeout(()=>{P=void 0,n.onTrigger?.({clientX:H,clientY:ee}),b(!0)},n.longPressDuration??500))},g.onPointerUp=de,g.onPointerLeave=de,g.onPointerMove=B=>{let Je=Math.abs((B.clientX??0)-H),Xe=Math.abs((B.clientY??0)-ee);(Je>10||Xe>10)&&de()},g.onContextMenu=B=>{B.preventDefault(),n.onTrigger?.({clientX:B.clientX??0,clientY:B.clientY??0}),b(!0)}}if(g.onKeyDown=P=>{P.key==="Escape"&&n.closeOnEscape!==!1&&b(!1)},t){let P=e.onUnmount(H=>{H===t&&(A(),P())})}let S=P=>{if(P){x=P;let H=()=>E.refresh();P.addEventListener("animationend",H,{once:!0})}else x=null},U=null,ie=null,Z=P=>{S(P),ie&&ie(P),u?.ref(P),n.trapFocus&&(P?d=Ft(P):(d?.(),d=void 0)),n.lockScroll&&!P&&m&&(Dt(),m=!1)};return{get open(){return a()},setOpen:b,get phase(){return u?u.phase:a()?"open":"closed"},sync:c,wrapProps:g,portal:(P,H="popover")=>{if(l())return null;if(!(u?u.phase!=="closed":a()))return V=!1,U=null,null;let de=n.el?.()??null;(!V||de!==U)&&(de?E.refresh():queueMicrotask(()=>{a()&&E.refresh()}),V=!0,U=de);let B=P.props??{};ie=B.ref??null;let Je=n.positioning==="none"?B.class??"":["wf-popup",B.class].filter(Boolean).join(" "),Xe=n.positioning==="none"?{...B.style??{},position:"fixed"}:{...B.style??{},position:"fixed",top:`${E.top}px`,left:`${E.left}px`,...E.width!==void 0?{width:`${E.width}px`}:{},maxWidth:(()=>{let Ie=typeof n.width=="function"?n.width():n.width;return Ie!==void 0?`min(${Ie}px, calc(100vw - 32px))`:"calc(100vw - 32px)"})()},he={...P,props:{...B,class:Je,style:Xe,ref:Z}};if(n.mask){let Ie=typeof n.mask=="object"?n.mask:ce("div",{class:"wf-popup-mask","data-portal-mask":H,onClick:n.maskClosable===!1?void 0:()=>b(!1)}),nt=n.maskCentered?ce("div",{class:"wf-cover",style:{"--wf-z":"var(--wf-z-popover)",pointerEvents:"none"}},{...he,props:{...he.props,style:{...B.style??{},pointerEvents:"auto"},ref:Z}}):null,tt=n.maskCentered?void 0:{...he.props?.style??{},zIndex:"var(--wf-z-popover)"},ot=n.maskCentered?nt:{...he,props:{...he.props,style:tt}};return Le([Ie,ot],H)}return Le(he,H)},refresh:()=>E.refresh()}}function kn(e,n){let t=e.selfId();if(t&&!e.openStates.has(t)){e.openStates.set(t,!1);let l=e.onUnmount(a=>{a===t&&(e.openStates.delete(t),l())})}let o=n.open!==void 0;o&&!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 r=()=>o?!!n.open:t?e.openStates.get(t)??!1:!1,i=()=>{t?e.render([t]):e.render()},s=l=>{if(o){n.onOpenChange?.(l);return}t&&e.openStates.set(t,l),i()};return{get open(){return r()},setOpen:s,triggerProps:{onClick:()=>s(!0),onFocus:()=>{n.openOnFocus&&s(!0)}}}}var ge=O(),Se=0,Gn="",zn="",Yn="",Jn="",Ke=0;function Xn(){return typeof window<"u"&&typeof document<"u"}function jt(){if(Se++,Se>1||!Xn())return;Ke=ge.scrollTop();let e=ge.bodyElement();Gn=e.style.overflow,zn=e.style.position,Yn=e.style.top,Jn=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=`-${Ke}px`,e.style.width="100%")}function Dt(){if(Se===0||(Se--,Se>0)||!Xn())return;let e=ge.bodyElement();e.style.overflow=Gn,e.style.position=zn,e.style.top=Yn,e.style.width=Jn,Ke>0&&ge.scrollTo(Ke)}var Wt='a[href], button:not([disabled]), input:not([disabled]), textarea:not([disabled]), select:not([disabled]), [tabindex]:not([tabindex="-1"])';function Ft(e){let n;return queueMicrotask(()=>{let t=e.querySelectorAll(Wt);if(t.length===0)return;let o=t[0],r=t[t.length-1],i=l=>{l.key==="Tab"&&(l.shiftKey&&ge.activeElement()===o?(l.preventDefault(),r.focus()):!l.shiftKey&&ge.activeElement()===r&&(l.preventDefault(),o.focus()))},s=ge.activeElement();o.focus(),e.addEventListener("keydown",i),n=()=>{e.removeEventListener("keydown",i),s?.focus()}}),()=>n?.()}function qt(e){return e.map(n=>{let t={role:n.role,content:n.content};return n.reasoning&&(t.reasoning_content=n.reasoning),t})}function _n(){return typeof crypto<"u"&&typeof crypto.randomUUID=="function"?crypto.randomUUID():`msg-${Date.now()}-${Math.random().toString(36).slice(2,10)}`}function Qn(e,n,t,o){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 r=null;function i(){if(!e.streaming)return;let N=e.messages[e.messages.length-1];return N&&N.role==="assistant"&&N.status==="streaming"?N:void 0}function s(N,x,V){let E=i();switch(N){case"wf:token":E&&(E.content+=x.text);break;case"wf:tool_call":{E&&(E.toolCalls||(E.toolCalls=[]),E.toolCalls.push({call:x,status:"running"}));break}case"wf:tool_progress":{let y=x,f=E?.toolCalls?.find(g=>g.call.id===y.toolCallId);f&&(f.progress=y);break}case"wf:tool_result":{let y=x,f=E?.toolCalls?.find(g=>g.call.id===y.id);f&&(f.result=y,f.status=y.ok?"ok":"error");break}case"wf:approval_request":E&&(E.approval=x);break;case"wf:usage":E&&(E.usage=x);break;case"wf:step":e.step=x;break;case"wf:done":if(E){E.status="done",E.approval=void 0;let y=x;y.reasoning&&(E.reasoning=y.reasoning)}e.streaming=!1,e.step=null;break;case"wf:error":E&&(E.status="error",E.error=x,E.approval=void 0),e.error=x,e.streaming=!1,e.step=null;break;default:V?.(N,x);break}o?.()}function l(){let N=t.body?t.body(e.messages):{messages:qt(e.messages)};r=n(t.url,N,{onToken:V=>s("wf:token",{text:V}),onToolCall:V=>s("wf:tool_call",V),onToolProgress:V=>s("wf:tool_progress",V),onToolResult:V=>s("wf:tool_result",V),onApproval:V=>s("wf:approval_request",V),onUsage:V=>s("wf:usage",V),onStep:V=>s("wf:step",V),onDone:V=>s("wf:done",V),onError:V=>s("wf:error",V),onEvent:(V,E)=>s(V,E,t.onEvent)},{signal:t.signal,headers:t.headers}),e.streaming=!0;let x=i();x&&r?.traceId&&(x.id=r.traceId)}function a(){if(e.streaming)return;let N=String(e.input??"").trim();N&&(e.input="",e.error=null,e.usage=null,e.step=null,e.messages.push({id:_n(),role:"user",content:N,status:"done"},{id:_n(),role:"assistant",content:"",status:"streaming",toolCalls:[]}),l(),o?.())}function u(){r?.abort(),e.streaming=!1,e.step=null;let N=e.messages[e.messages.length-1];N&&N.role==="assistant"&&N.status==="streaming"&&(!N.content&&(!N.toolCalls||N.toolCalls.length===0)?e.messages.pop():N.status="done"),o?.()}function d(){if(e.streaming)return;let N=-1;for(let x=e.messages.length-1;x>=0;x--)if(e.messages[x].role==="user"){N=x;break}N!==-1&&(e.messages.splice(N+1),e.error=null,e.usage=null,e.step=null,e.messages.push({id:_n(),role:"assistant",content:"",status:"streaming",toolCalls:[]}),l(),o?.())}function m(){r?.abort(),e.messages=[],e.input="",e.streaming=!1,e.error=null,e.usage=null,e.step=null,o?.()}async function c(N,x,V){let E=e.messages[e.messages.length-1],y=E?.role==="assistant"?E.approval:void 0;if(y&&(E.approval=void 0,o?.(),!!t.approveUrl))try{await fetch(t.approveUrl,{method:"POST",headers:{"Content-Type":"application/json",...t.headers},body:JSON.stringify(V?{id:y.id,decision:N,note:x,modifiedArgs:V}:{id:y.id,decision:N,note:x}),signal:t.signal})}catch(f){if(t.signal?.aborted)return;e.error={code:"provider_error",message:f instanceof Error?f.message:String(f)},o?.()}}function b(){r?.abort(),r=null}return{send:a,stop:u,retry:d,clear:m,approve:c,dispose:b}}function Zn(e,n,t){let o=new AbortController,r=t?.signal;r&&(r.aborted?o.abort():r.addEventListener("abort",()=>o.abort(),{once:!0}));let i=t?.traceId??Yt(),s=t?.record!==!1,l=[],a=(async()=>{let u;try{u=await fetch(e,{method:"POST",headers:{"Content-Type":"application/json","X-Trace-Id":i,Accept:"text/event-stream",...t?.headers},body:JSON.stringify(n),signal:o.signal})}catch(d){if(o.signal.aborted)return;t?.onError?.({code:"provider_error",message:d instanceof Error?d.message:String(d)});return}if(!u.ok){t?.onError?.({code:zt(u.status),message:`HTTP ${u.status} ${u.statusText}`});return}try{for await(let{name:d,data:m}of Kt(u.body)){if(o.signal.aborted)return;Gt(l,{name:d,data:m},s),Bt(d,m,t??{})}}catch(d){if(o.signal.aborted)return;t?.onError?.({code:"provider_error",message:d instanceof Error?d.message:String(d)})}})();return{abort:()=>o.abort(),done:a,traceId:i,events:l}}function Bt(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*Kt(e){let n=e.getReader(),t=new TextDecoder,o="";try{for(;;){let{done:r,value:i}=await n.read();if(r)break;o+=t.decode(i,{stream:!0});let s=o.split(`
|
|
4
4
|
|
|
5
5
|
`);o=s.pop()??"";for(let l of s){let a="message",u="";for(let d of l.split(`
|
|
6
|
-
`))d.startsWith("event: ")?a=d.slice(7):d.startsWith("data: ")&&(u+=d.slice(6));if(u)try{yield{name:a,data:JSON.parse(u)}}catch{}}}}finally{n.releaseLock()}}function Gt(e,n,t){t&&(e.length>=1e3&&e.shift(),e.push(n))}function zt(e){return e===401||e===403?"auth_failed":e===429?"rate_limited":e>=500?"provider_error":"invalid_request"}function Yt(){return typeof crypto<"u"&&typeof crypto.randomUUID=="function"?crypto.randomUUID():`trace-${Date.now()}-${Math.random().toString(36).slice(2,10)}`}function Pn(e,n){let t={messages:[],input:"",streaming:!1,error:null,usage:null,step:null},o=new Set,i=Qn(t,Zn,n,()=>{for(let l of[...o])l()});Object.assign(t,i),t.subscribe=l=>(o.add(l),()=>{o.delete(l)});let s=e.selfId();if(s){let l=e.onUnmount(a=>{a===s&&(i.dispose(),l())})}return t}function Sn(e,n){let t=e.selfId(),o;return t&&(o=n.subscribe(()=>e.render([t])),e.onUnmount(()=>o?.())),n}function ze(e){let n=e.registry??be(),t={_selfId:"_wf_root",_mounting:!1,_ctxVersion:0,_rootVNodeId:null},o={browser:e.browser,__registry:n},r=e.renderer??We({registry:n,ctx:o,rootEl:e.root,onError:e.onError}),i=Kn(y=>{for(let m of y)r.render([m])}),s=new Map,{popupTrackers:l,scrollTrackers:a,ensurePopupListeners:u,destroyPopupListeners:d,cleanupTrackers:f}=i;Oe(n,y=>{f(y),l.has(y)&&l.delete(y)});let c=new Set,w=new Map,x=new Map,N=new Map,V=y=>({selfId:()=>{let m=y?._selfVNode?._id??y?._selfId;return typeof m=="string"?m:void 0},render:m=>r.render(m),browser:e.browser,onUnmount:m=>Oe(n,m),registry:n,mediaRegistry:s,popupTrackers:l,scrollTrackers:a,isMounting:()=>t._mounting===!0,warned:c,uncontrolledValues:w,inputStates:x,openStates:N,ensurePopupListeners:u}),T=!1;return t.render=function(y){if(y==null){let m=this._selfId!=="_wf_root"&&this._selfId?this._selfId:t._rootVNodeId;return m?r.render([m]):(T||(T=!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\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 r.render(y)},t.setMounting=y=>{t._mounting=y},t.endMounting=()=>{t._mounting=!1},t.bumpCtxVersion=()=>{t._ctxVersion=(t._ctxVersion??0)+1},t.selfId=function(y){if(typeof y!="string"||!y)throw new Error(`[weifuwu] selfId requires a non-empty string, got ${typeof y}`);if(n.idRegistry.has(y))throw new Error(`[weifuwu] Duplicate component ID: "${y}". Each component must have a unique custom ID.`);let m=this._selfVNode;m&&(m._customId=y,n.idRegistry.set(y,m))},t.onUnmount=function(y){let m=this?._selfVNode?._id??this?._selfId;if(m)return Oe(n,g=>{g===m&&y()})},t.useChat=function(y){return Pn(V(this),y)},t.useMedia=function(y,m){return gn(V(this),y,m)},t.useBreakpoint=function(y,m){return hn(V(this),y,m)},t.usePopupPosition=function(y){return Ge(V(this),y)},t.useHoverCapable=function(){return _e(V(this))},t.useStableRef=function(y,m){return fn(V(this),y,m)},t.useVisualViewport=function(){return vn(V(this))},t.usePopup=function(y){return En(V(this),y)},t.useLongPress=function(y){return mn(V(this),y)},t.useInView=function(y){return bn(V(this),y)},t.useScrollPosition=function(y){return wn(V(this),y)},t.useAsync=function(y){return Cn(V(this),y)},t.useControlled=function(y){return Be(V(this),y)},t.useControlledInput=function(y){return Nn(V(this),y)},t.useOpen=function(y){return kn(V(this),y)},t.usePresence=function(y){return Pe(V(this),y)},t.useGlobalKey=function(y){return xn(V(this),y)},t.useDrag=function(y){return Vn(V(this),y)},t.useDragDrop=function(y){return Tn(V(this),y)},t.useExternal=function(y){return Sn(V(this),y)},t.useReducedMotion=function(){return qe(V(this))},t.useAnimationEnd=function(y,m){return pn(V(this),y,m)},t.useTween=function(y,m){return yn(V(this),y,m)},t.destroyPopupListeners=d,o.ui=t,{ctx:o,registry:n,renderer:r,rootUi:t,destroyPopupListeners:d}}function Jt(e){let{ctx:n,registry:t,renderer:o}=ze(e);return Fn({root:e.root,browser:e.browser,ctx:n,registry:t,renderer:o,onError:e.onError})}var Xt=new Set(["svg","path","circle","rect","line","polyline","polygon","g","text","defs","use","clipPath"]);function Ye(e){e.node=e.node?e.node.nextSibling:null}function Qt(e,n){e.node&&e.node.parentNode?e.node.parentNode.insertBefore(n,e.node):e.parent.appendChild(n)}function Zt(e,n){e.node&&e.node.parentNode?(e.node.parentNode.replaceChild(n,e.node),Ye(e)):e.parent.appendChild(n)}function eo(e,n){for(let[t,o]of Object.entries(n))t==="children"||t==="key"||t==="innerHTML"||pe(e,t,o)}function Ae(e,n,t){let o=n.browser??U();if(e==null||typeof e=="boolean")return null;if(typeof e=="string"||typeof e=="number"){let a=String(e);if(t.node&&t.node.nodeType===3)return t.node.textContent!==a&&(t.node.textContent=a),Ye(t),t.node;let u=o.createTextNode(a);return Qt(t,u),u}if(Array.isArray(e)){let a=null;for(let u of e){let d=Ae(u,n,t);d!=null&&!a&&(a=d)}return a}let r=e;if(W(r)||D(r)){let a=r.props?.children,u=a==null?[]:Array.isArray(a)?a:[a],d=null;for(let f of u){let c=Ae(f,n,t);c!=null&&!d&&(d=c)}return d}if(O(r)){let a=r._child;if(a==null){if(typeof r._render!="function")throw new Error(`[vdom2] component ${Y(r.type)} not built before hydration`);return r._child=null,null}let u=Ae(a,n,t);return r._refNode||(r._refNode=u),u}let i=r.type,s=r.props??{};for(;t.node&&t.node.nodeType===8&&t.node.nodeValue?.startsWith("wf-hole:");)Ye(t);let l;if(t.node&&t.node.nodeType===1&&t.node.tagName.toLowerCase()===i.toLowerCase()?(l=t.node,Ye(t)):(l=Xt.has(i)?o.createElementNS("http://www.w3.org/2000/svg",i):o.createElement(i),Zt(t,l)),r.el=l,eo(l,s),!("innerHTML"in s)){let a={parent:l,node:l.firstChild},u=(Array.isArray(s.children)?s.children:[s.children]).flat(1/0);for(let d of u){let f=Ae(d,n,a);if(f!=null&&f.parentNode!==l&&l.appendChild(f),d&&typeof d=="object"&&!Array.isArray(d)&&O(d)){let c=d;c._parentNode||(c._parentNode=l,c._refNode=f)}}for(;a.node;){let d=a.node;a.node=d.nextSibling,d.parentNode?.removeChild(d)}}return"value"in s&&l instanceof HTMLSelectElement&&(l.value=String(s.value??"")),l}async function An(e,n,t){let o=t.__registry;await J(n,t,null,o);let r={parent:e,node:e.firstChild};for(Ae(n,t,r);r.node;){let i=r.node;r.node=i.nextSibling,i.parentNode?.removeChild(i)}}function no(e,n){let t=U(),o=typeof n.root=="string"?t.query(n.root):n.root;if(!o)throw new Error(`uiServe: root not found: ${n.root}`);let r=o,i=!!n.hydrate;!i&&!n.loading&&(r.innerHTML="");try{(new URLSearchParams(globalThis?.location?.search??"").get("vdom_debug")==="1"||globalThis?.localStorage?.getItem?.("__WF_VDOM_DEBUG")==="1")&&(globalThis.__WF_VDOM_DEBUG=!0,console.log("[weifuwu] vdom debug \u5DF2\u5F00\u542F\uFF08?vdom_debug=1\uFF09")),on()}catch{}let{ctx:s,registry:l,renderer:a,rootUi:u,destroyPopupListeners:d}=ze({browser:t,root:r}),f=new Map,c=globalThis.__DATA__??window.__DATA__;if(c&&typeof c=="object")for(let[C,p]of Object.entries(c))f.set(C,{value:p});s.data={async get(C,p){let v=f.get(C);if(v&&"value"in v)return v.value;if(v?.promise)return v.promise;if(!p)return;let h=Promise.resolve().then(()=>p()).then(A=>(f.set(C,{value:A}),A));return f.set(C,{promise:h}),h},set(C,p){f.set(C,{value:p})},has(C){return f.has(C)}},s.route={params:{},query:{},path:""};let w=null,x="",N=0,V,T=new Promise(C=>{V=C}),y=!1;async function m(C,p){let v=++N,h={pathname:C,search:""};s.route.path=C;let A;try{A=await e.execute(h,s,C)}catch(b){A=ce("div",{class:"ui-dom-error"},`\u9875\u9762\u6E32\u67D3\u5931\u8D25: ${b?.message??String(b)}`)}if(y||v!==N)return;let G=R("mount"),S=G?Ln("nav"):"";G&&I("mount","info",S,`route path=${C} initial=${p}`);let H;try{H=await J(A,s,w,l)}catch(b){H=ce("div",{class:"ui-dom-error"},`\u7EC4\u4EF6\u6E32\u67D3\u5931\u8D25: ${b?.message??String(b)}`)}if(!(y||v!==N)){if(p)if(i)await An(r,H,s),R("mount")&&I("mount","debug",S,`hydrate done=${r.childNodes.length}`);else{r.innerHTML="";let b=F(H,s,t);R("mount")&&I("mount","debug",S,`first-render node=${b?.nodeName??"null"} fragKids=${b?.nodeType===11?Array.from(b.childNodes).length:"-"}`),b!=null&&r.appendChild(b),R("mount")&&I("mount","debug",S,`root-fill done=${r.childNodes.length} first=${r.firstChild?.nodeName}`)}else if(w!==void 0){let b=w;w=H;let E=b,P=He(E)?E.el??E._refNode:E._refNode;ne(r,P,b,H,{browser:t,registry:l,ctxVersion:s?.ui?._ctxVersion??0})}w=H,x=C,u._rootVNodeId=H?._id}}let g=t.pathname();m(g,!0).finally(()=>{y||V()});let _=()=>{let C=t.pathname();C!==x&&m(C,!1)};return t.addEventListener("popstate",_),{close(){y=!0,t.removeEventListener("popstate",_),d(),l.idRegistry.clear()},ready:T,ctx:s}}function Re(e){return e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")}function to(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 oo(e){return Object.entries(e).filter(([,n])=>n!=null&&n!==!1).map(([n,t])=>`${n}:${typeof t=="number"?t:String(t)}`).join(";")}var ro=new Set(["area","base","br","col","embed","hr","img","input","link","meta","param","source","track","wbr"]),io=new Set(["svg","path","circle","rect","line","polyline","polygon","g","text","defs","use","clipPath"]);async function ae(e,n){return mo[fe(e)](e,n)}async function so(e,n){return""}async function lo(e,n){return Re(String(e))}async function ao(e,n){let t=e;$n(t);let o=n._fidPath;return(await Promise.all(t.map(async(i,s)=>{let l=o!=null?`${o}-${s}`:String(s);if(i==null||typeof i=="boolean")return`<!--${X({type:"hole",value:i,key:null,id:null,fid:null})}-->`;if(Array.isArray(i)){let a=await ae(i,{...n,_fidPath:l});return`<!--${X({type:"fragment-start",key:String(s),id:null,fid:l})}-->${a}<!--${X({type:"fragment-end",key:String(s),id:null,fid:l})}-->`}return ae(i,n)}))).join("")}async function uo(e,n){let t=e,o=n._fidPath??null,r=await ae(t.props?.children,{...n,_fidPath:o??void 0});return`<!--${X({type:"fragment-start",key:null,id:null,fid:o})}-->${r}<!--${X({type:"fragment-end",key:null,id:null,fid:o})}-->`}async function co(e,n){return ae(e.props?.children,n)}async function fo(e,n){let t=e,o=Object.create(n);delete o._fidPath;let r=await t.type(t.props??{},o);if(typeof r!="function")throw new Error(`Component ${Y(t.type)} must return a render function. Use (init_props, ctx) => (props) => VNode pattern.`);let i=await r(t.props??{});if(t.key!=null&&i!=null&&typeof i=="object")if(Array.isArray(i))for(let s of i)s!=null&&typeof s=="object"&&!Array.isArray(s)&&(s.key=t.key);else i.key=t.key;return ae(i,o)}async function po(e,n){let t=e,o=t.type,r=t.props??{},i=[],s=null;t.key!=null&&i.push(` data-wf-key="${Re(String(t.key))}"`);for(let[d,f]of Object.entries(r))if(!(d==="children"||d==="key")&&d!=="ref"&&!(d.startsWith("on")&&typeof f=="function")){if(d==="innerHTML"){s=String(f??"");continue}if(d==="class"||d==="className"){let c=to(f);c&&i.push(` class="${Re(c)}"`);continue}if(d==="style"&&f&&typeof f=="object"){i.push(` style="${Re(oo(f))}"`);continue}if(an.has(d)){i.push(` ${d}="${f?"true":"false"}"`);continue}if(f===!0){i.push(` ${d}`);continue}f===!1||f==null||i.push(` ${d}="${Re(String(f))}"`)}let l=i.join(""),a=io.has(o);if(ro.has(o))return`<${o}${l}>`;if(s!==null)return`<${o}${l}>${s}</${o}>`;let u=await ae(r.children,n);return a?`<${o}${l}>${u}</${o}>`:`<${o}${l}>${u}</${o}>`}var mo={hole:so,text:lo,arr:ao,portal:co,frag:uo,comp:fo,native:po};function et(e){return`<script>window.__DATA__=${JSON.stringify(Object.fromEntries(e)).replace(/</g,"\\u003c")};<\/script>`}function Rn(e,n){let t={...e,browser:null,__registry:null,ui:{_rootVNodeId:null,render:()=>Promise.resolve(),setMounting:()=>{},endMounting:()=>{}}},o=new Map;return t.data={async get(r,i){let s=o.get(r);if(s&&"value"in s)return s.value;if(s?.promise)return s.promise;if(!i)return;let l=Promise.resolve().then(()=>i()).then(a=>(o.set(r,{value:a}),n.set(r,a),a));return o.set(r,{promise:l}),l},set(r,i){o.set(r,{value:i}),n.set(r,i)},has(r){return o.has(r)}},t}async function yo(e,n,t,o={}){let r=o.data??new Map,i=Rn(t??{},r),s=xe(e,n??{});return ae(s,i)}async function go(e,n){let t=new Map,r=Rn({params:{},query:{}},t),i=n.url.split("?")[0].split("#")[0],s=e.match(i);r.params=s.params,r.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}`),a=await e.execute(l,r,i),u=await ae(a,r),d=et(t),f=s.title??n.title??"",c=n.rootId??"root",w=(n.styles??[]).map(N=>` <link rel="stylesheet" href="${N}">`).join(`
|
|
7
|
-
`),x
|
|
6
|
+
`))d.startsWith("event: ")?a=d.slice(7):d.startsWith("data: ")&&(u+=d.slice(6));if(u)try{yield{name:a,data:JSON.parse(u)}}catch{}}}}finally{n.releaseLock()}}function Gt(e,n,t){t&&(e.length>=1e3&&e.shift(),e.push(n))}function zt(e){return e===401||e===403?"auth_failed":e===429?"rate_limited":e>=500?"provider_error":"invalid_request"}function Yt(){return typeof crypto<"u"&&typeof crypto.randomUUID=="function"?crypto.randomUUID():`trace-${Date.now()}-${Math.random().toString(36).slice(2,10)}`}function Pn(e,n){let t={messages:[],input:"",streaming:!1,error:null,usage:null,step:null},o=new Set,i=Qn(t,Zn,n,()=>{for(let l of[...o])l()});Object.assign(t,i),t.subscribe=l=>(o.add(l),()=>{o.delete(l)});let s=e.selfId();if(s){let l=e.onUnmount(a=>{a===s&&(i.dispose(),l())})}return t}function Sn(e,n){let t=e.selfId(),o;return t&&(o=n.subscribe(()=>e.render([t])),e.onUnmount(()=>o?.())),n}function ze(e){let n=e.registry??be(),t={_selfId:"_wf_root",_mounting:!1,_ctxVersion:0,_rootVNodeId:null},o={browser:e.browser,__registry:n};o.app={navigate:y=>e.browser.navigate(y)};let r=e.renderer??We({registry:n,ctx:o,rootEl:e.root,onError:e.onError}),i=Kn(y=>{for(let f of y)r.render([f])}),s=new Map,{popupTrackers:l,scrollTrackers:a,ensurePopupListeners:u,destroyPopupListeners:d,cleanupTrackers:m}=i;Oe(n,y=>{m(y),l.has(y)&&l.delete(y)});let c=new Set,b=new Map,N=new Map,x=new Map,V=y=>({selfId:()=>{let f=y?._selfVNode?._id??y?._selfId;return typeof f=="string"?f:void 0},render:f=>r.render(f),browser:e.browser,onUnmount:f=>Oe(n,f),registry:n,mediaRegistry:s,popupTrackers:l,scrollTrackers:a,isMounting:()=>t._mounting===!0,warned:c,uncontrolledValues:b,inputStates:N,openStates:x,ensurePopupListeners:u}),E=!1;return t.render=function(y){if(y==null){let f=this._selfId!=="_wf_root"&&this._selfId?this._selfId:t._rootVNodeId;return f?r.render([f]):(E||(E=!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\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 r.render(y)},t.setMounting=y=>{t._mounting=y},t.endMounting=()=>{t._mounting=!1},t.bumpCtxVersion=()=>{t._ctxVersion=(t._ctxVersion??0)+1},t.selfId=function(y){if(typeof y!="string"||!y)throw new Error(`[weifuwu] selfId requires a non-empty string, got ${typeof y}`);if(n.idRegistry.has(y))throw new Error(`[weifuwu] Duplicate component ID: "${y}". Each component must have a unique custom ID.`);let f=this._selfVNode;f&&(f._customId=y,n.idRegistry.set(y,f))},t.onUnmount=function(y){let f=this?._selfVNode?._id??this?._selfId;if(f)return Oe(n,g=>{g===f&&y()})},t.useChat=function(y){return Pn(V(this),y)},t.useMedia=function(y,f){return gn(V(this),y,f)},t.useBreakpoint=function(y,f){return hn(V(this),y,f)},t.usePopupPosition=function(y){return Ge(V(this),y)},t.useHoverCapable=function(){return _e(V(this))},t.useStableRef=function(y,f){return fn(V(this),y,f)},t.useVisualViewport=function(){return vn(V(this))},t.usePopup=function(y){return Tn(V(this),y)},t.useLongPress=function(y){return mn(V(this),y)},t.useInView=function(y){return bn(V(this),y)},t.useScrollPosition=function(y){return wn(V(this),y)},t.useAsync=function(y){return Cn(V(this),y)},t.useControlled=function(y){return Be(V(this),y)},t.useControlledInput=function(y){return Nn(V(this),y)},t.useOpen=function(y){return kn(V(this),y)},t.usePresence=function(y){return Pe(V(this),y)},t.useGlobalKey=function(y){return xn(V(this),y)},t.useDrag=function(y){return Vn(V(this),y)},t.useDragDrop=function(y){return En(V(this),y)},t.useExternal=function(y){return Sn(V(this),y)},t.useReducedMotion=function(){return qe(V(this))},t.useAnimationEnd=function(y,f){return pn(V(this),y,f)},t.useTween=function(y,f){return yn(V(this),y,f)},t.destroyPopupListeners=d,o.ui=t,{ctx:o,registry:n,renderer:r,rootUi:t,destroyPopupListeners:d}}function Jt(e){let{ctx:n,registry:t,renderer:o}=ze(e);return Fn({root:e.root,browser:e.browser,ctx:n,registry:t,renderer:o,onError:e.onError})}var Xt=new Set(["svg","path","circle","rect","line","polyline","polygon","g","text","defs","use","clipPath"]);function Ye(e){e.node=e.node?e.node.nextSibling:null}function Qt(e,n){e.node&&e.node.parentNode?e.node.parentNode.insertBefore(n,e.node):e.parent.appendChild(n)}function Zt(e,n){e.node&&e.node.parentNode?(e.node.parentNode.replaceChild(n,e.node),Ye(e)):e.parent.appendChild(n)}function eo(e,n){for(let[t,o]of Object.entries(n))t==="children"||t==="key"||t==="innerHTML"||pe(e,t,o)}function Ae(e,n,t){let o=n.browser??O();if(e==null||typeof e=="boolean")return null;if(typeof e=="string"||typeof e=="number"){let a=String(e);if(t.node&&t.node.nodeType===3)return t.node.textContent!==a&&(t.node.textContent=a),Ye(t),t.node;let u=o.createTextNode(a);return Qt(t,u),u}if(Array.isArray(e)){let a=null;for(let u of e){let d=Ae(u,n,t);d!=null&&!a&&(a=d)}return a}let r=e;if(F(r)||W(r)){let a=r.props?.children,u=a==null?[]:Array.isArray(a)?a:[a],d=null;for(let m of u){let c=Ae(m,n,t);c!=null&&!d&&(d=c)}return d}if($(r)){let a=r._child;if(a==null){if(typeof r._render!="function")throw new Error(`[vdom2] component ${Y(r.type)} not built before hydration`);return r._child=null,null}let u=Ae(a,n,t);return r._refNode||(r._refNode=u),u}let i=r.type,s=r.props??{};for(;t.node&&t.node.nodeType===8&&t.node.nodeValue?.startsWith("wf-hole:");)Ye(t);let l;if(t.node&&t.node.nodeType===1&&t.node.tagName.toLowerCase()===i.toLowerCase()?(l=t.node,Ye(t)):(l=Xt.has(i)?o.createElementNS("http://www.w3.org/2000/svg",i):o.createElement(i),Zt(t,l)),r.el=l,eo(l,s),!("innerHTML"in s)){let a={parent:l,node:l.firstChild},u=(Array.isArray(s.children)?s.children:[s.children]).flat(1/0);for(let d of u){let m=Ae(d,n,a);if(m!=null&&m.parentNode!==l&&l.appendChild(m),d&&typeof d=="object"&&!Array.isArray(d)&&$(d)){let c=d;c._parentNode||(c._parentNode=l,c._refNode=m)}}for(;a.node;){let d=a.node;a.node=d.nextSibling,d.parentNode?.removeChild(d)}}return"value"in s&&l instanceof HTMLSelectElement&&(l.value=String(s.value??"")),l}async function An(e,n,t){let o=t.__registry;await J(n,t,null,o);let r={parent:e,node:e.firstChild};for(Ae(n,t,r);r.node;){let i=r.node;r.node=i.nextSibling,i.parentNode?.removeChild(i)}}function no(e,n){let t=O(),o=typeof n.root=="string"?t.query(n.root):n.root;if(!o)throw new Error(`uiServe: root not found: ${n.root}`);let r=o,i=!!n.hydrate;!i&&!n.loading&&(r.innerHTML="");try{(new URLSearchParams(globalThis?.location?.search??"").get("vdom_debug")==="1"||globalThis?.localStorage?.getItem?.("__WF_VDOM_DEBUG")==="1")&&(globalThis.__WF_VDOM_DEBUG=!0,console.log("[weifuwu] vdom debug \u5DF2\u5F00\u542F\uFF08?vdom_debug=1\uFF09")),on()}catch{}try{if(new URLSearchParams(globalThis?.location?.search??"").get("wf_reflow")==="1"||globalThis?.localStorage?.getItem?.("__WF_REFLOW_DEBUG")==="1"){globalThis.__WF_REFLOW_DEBUG=!0,console.log("[weifuwu] reflow debug \u5DF2\u5F00\u542F\uFF08?wf_reflow=1\u2014\u2014\u5E03\u5C40\u8BFB\u53D6\u8FFD\u8E2A\uFF09");let v=(A,L)=>{let k=typeof document<"u"?document.styleSheets?.length??0:-1,M=L?.tagName?`<${L.tagName}${L.id?"#"+L.id:""}${L.className?"."+String(L.className).split(" ")[0]:""}>`:"",w=(new Error().stack||"").split(`
|
|
7
|
+
`).slice(2,5).map(T=>T.trim().split("/").pop()?.slice(0,80)).join(" \u2190 ");console.log(`[wf-reflow] ${A}${M} styles=${k}${k===0?" \u26A0\uFE0F\u6837\u5F0F\u672A\u52A0\u8F7D\uFF08\u5F3A\u5236\u6392\u7248\u573A\u666F\uFF09":""} :: ${w}`)},h=Element.prototype.getBoundingClientRect;Element.prototype.getBoundingClientRect=function(...A){return v("rect",this),h.apply(this,A)};for(let A of["offsetWidth","offsetHeight","offsetTop","offsetLeft","clientWidth","clientHeight","scrollTop","scrollHeight"]){let L=Object.getOwnPropertyDescriptor(Element.prototype,A);if(L?.get){let k=L.get;Object.defineProperty(Element.prototype,A,{configurable:!0,enumerable:!0,get(){return v(A,this),k.call(this)}})}}}}catch{}let{ctx:s,registry:l,renderer:a,rootUi:u,destroyPopupListeners:d}=ze({browser:t,root:r}),m=new Map,c=globalThis.__DATA__??window.__DATA__;if(c&&typeof c=="object")for(let[C,p]of Object.entries(c))m.set(C,{value:p});s.data={async get(C,p){let v=m.get(C);if(v&&"value"in v)return v.value;if(v?.promise)return v.promise;if(!p)return;let h=Promise.resolve().then(()=>p()).then(A=>(m.set(C,{value:A}),A));return m.set(C,{promise:h}),h},set(C,p){m.set(C,{value:p})},has(C){return m.has(C)}},s.route={params:{},query:{},path:""};let b=null,N="",x=0,V,E=new Promise(C=>{V=C}),y=!1;async function f(C,p){let v=++x,h={pathname:C,search:""};s.route.path=C;let A;try{A=await e.execute(h,s,C)}catch(w){A=ce("div",{class:"ui-dom-error"},`\u9875\u9762\u6E32\u67D3\u5931\u8D25: ${w?.message??String(w)}`)}if(y||v!==x)return;let L=R("mount"),k=L?Ln("nav"):"";L&&I("mount","info",k,`route path=${C} initial=${p}`);let M;try{M=await J(A,s,b,l)}catch(w){M=ce("div",{class:"ui-dom-error"},`\u7EC4\u4EF6\u6E32\u67D3\u5931\u8D25: ${w?.message??String(w)}`)}if(!(y||v!==x)){if(p)if(i)await An(r,M,s),R("mount")&&I("mount","debug",k,`hydrate done=${r.childNodes.length}`);else{r.innerHTML="";let w=q(M,s,t);R("mount")&&I("mount","debug",k,`first-render node=${w?.nodeName??"null"} fragKids=${w?.nodeType===11?Array.from(w.childNodes).length:"-"}`),w!=null&&r.appendChild(w),R("mount")&&I("mount","debug",k,`root-fill done=${r.childNodes.length} first=${r.firstChild?.nodeName}`)}else if(b!==void 0){let w=b;b=M;let T=w,S=He(T)?T.el??T._refNode:T._refNode;ne(r,S,w,M,{browser:t,registry:l,ctxVersion:s?.ui?._ctxVersion??0})}b=M,N=C,u._rootVNodeId=M?._id}}let g=t.pathname();f(g,!0).finally(()=>{y||V()});let _=()=>{let C=t.pathname();C!==N&&f(C,!1)};return t.addEventListener("popstate",_),{close(){y=!0,t.removeEventListener("popstate",_),d(),l.idRegistry.clear()},ready:E,ctx:s}}function Re(e){return e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")}function to(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 oo(e){return Object.entries(e).filter(([,n])=>n!=null&&n!==!1).map(([n,t])=>`${n}:${typeof t=="number"?t:String(t)}`).join(";")}var ro=new Set(["area","base","br","col","embed","hr","img","input","link","meta","param","source","track","wbr"]),io=new Set(["svg","path","circle","rect","line","polyline","polygon","g","text","defs","use","clipPath"]);async function ae(e,n){return mo[fe(e)](e,n)}async function so(e,n){return""}async function lo(e,n){return Re(String(e))}async function ao(e,n){let t=e;$n(t);let o=n._fidPath;return(await Promise.all(t.map(async(i,s)=>{let l=o!=null?`${o}-${s}`:String(s);if(i==null||typeof i=="boolean")return`<!--${X({type:"hole",value:i,key:null,id:null,fid:null})}-->`;if(Array.isArray(i)){let a=await ae(i,{...n,_fidPath:l});return`<!--${X({type:"fragment-start",key:String(s),id:null,fid:l})}-->${a}<!--${X({type:"fragment-end",key:String(s),id:null,fid:l})}-->`}return ae(i,n)}))).join("")}async function uo(e,n){let t=e,o=n._fidPath??null,r=await ae(t.props?.children,{...n,_fidPath:o??void 0});return`<!--${X({type:"fragment-start",key:null,id:null,fid:o})}-->${r}<!--${X({type:"fragment-end",key:null,id:null,fid:o})}-->`}async function co(e,n){return ae(e.props?.children,n)}async function fo(e,n){let t=e,o=Object.create(n);delete o._fidPath;let r=await t.type(t.props??{},o);if(typeof r!="function")throw new Error(`Component ${Y(t.type)} must return a render function. Use (init_props, ctx) => (props) => VNode pattern.`);let i=await r(t.props??{});if(t.key!=null&&i!=null&&typeof i=="object")if(Array.isArray(i))for(let s of i)s!=null&&typeof s=="object"&&!Array.isArray(s)&&(s.key=t.key);else i.key=t.key;return ae(i,o)}async function po(e,n){let t=e,o=t.type,r=t.props??{},i=[],s=null;t.key!=null&&i.push(` data-wf-key="${Re(String(t.key))}"`);for(let[d,m]of Object.entries(r))if(!(d==="children"||d==="key")&&d!=="ref"&&!(d.startsWith("on")&&typeof m=="function")){if(d==="innerHTML"){s=String(m??"");continue}if(d==="class"||d==="className"){let c=to(m);c&&i.push(` class="${Re(c)}"`);continue}if(d==="style"&&m&&typeof m=="object"){i.push(` style="${Re(oo(m))}"`);continue}if(an.has(d)){i.push(` ${d}="${m?"true":"false"}"`);continue}if(m===!0){i.push(` ${d}`);continue}m===!1||m==null||i.push(` ${d}="${Re(String(m))}"`)}let l=i.join(""),a=io.has(o);if(ro.has(o))return`<${o}${l}>`;if(s!==null)return`<${o}${l}>${s}</${o}>`;let u=await ae(r.children,n);return a?`<${o}${l}>${u}</${o}>`:`<${o}${l}>${u}</${o}>`}var mo={hole:so,text:lo,arr:ao,portal:co,frag:uo,comp:fo,native:po};function et(e){return`<script>window.__DATA__=${JSON.stringify(Object.fromEntries(e)).replace(/</g,"\\u003c")};<\/script>`}function Rn(e,n){let t={...e,browser:null,__registry:null,ui:{_rootVNodeId:null,render:()=>Promise.resolve(),setMounting:()=>{},endMounting:()=>{}}},o=new Map;return t.data={async get(r,i){let s=o.get(r);if(s&&"value"in s)return s.value;if(s?.promise)return s.promise;if(!i)return;let l=Promise.resolve().then(()=>i()).then(a=>(o.set(r,{value:a}),n.set(r,a),a));return o.set(r,{promise:l}),l},set(r,i){o.set(r,{value:i}),n.set(r,i)},has(r){return o.has(r)}},t}async function yo(e,n,t,o={}){let r=o.data??new Map,i=Rn(t??{},r),s=xe(e,n??{});return ae(s,i)}async function go(e,n){let t=new Map,r=Rn({params:{},query:{}},t),i=n.url.split("?")[0].split("#")[0],s=e.match(i);r.params=s.params,r.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}`),a=await e.execute(l,r,i),u=await ae(a,r),d=et(t),m=s.title??n.title??"",c=n.rootId??"root",b=(n.styles??[]).map(x=>` <link rel="stylesheet" href="${x}">`).join(`
|
|
8
|
+
`),N=`<!DOCTYPE html>
|
|
8
9
|
<html lang="${n.lang??"zh-CN"}">
|
|
9
10
|
<head>
|
|
10
11
|
<meta charset="UTF-8">
|
|
11
12
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
12
|
-
${
|
|
13
|
-
${
|
|
13
|
+
${m?`<title>${m}</title>`:""}
|
|
14
|
+
${b}
|
|
14
15
|
</head>
|
|
15
16
|
<body>
|
|
16
17
|
<div id="${c}">${u}</div>
|
|
17
18
|
${d}
|
|
18
19
|
<script src="/app.js"><\/script>
|
|
19
20
|
</body>
|
|
20
|
-
</html>`;return{html:u,dataScript:d,page:
|
|
21
|
+
</html>`;return{html:u,dataScript:d,page:N}}function ho(e){let n={...e},t=new Set,o=()=>{for(let r of[...t])r()};return{state:n,subscribe(r){return t.add(r),()=>{t.delete(r)}},set(r){Object.assign(n,r),o()},update(r){r(n),o()},notify:o}}export{K as Fragment,te as Portal,Qe as UIRouter,lt as animateOut,at as api,ct as auth,J as buildVNode,O as createClientBrowser,Le as createPortal,We as createRenderer,Rn as createSsrContext,ho as createStore,ze as createVdomContext,ce as h,An as hydrateVNode,Ze as jsx,st as jsxDEV,it as jsxs,Jt as mountRoot,ne as patchValue,q as renderValue,et as serializeData,go as ssrPage,yo as ssrToString,no as uiServe,ft as ws};
|
|
@@ -37,6 +37,9 @@ export interface ApiOptions {
|
|
|
37
37
|
onResponse?: <T>(res: Response) => Promise<T>;
|
|
38
38
|
/** 请求超时(ms), 默认 0 = 无超时 */
|
|
39
39
|
timeout?: number;
|
|
40
|
+
/** 401 回调(token 过期/无效——刷新凭证或跳转登录;403 不触发——权限不足非认证问题)。
|
|
41
|
+
* async 可返回 true = 已恢复(如 refresh 成功)→ 重试原请求一次;false/void = 未恢复 → 抛 ApiError */
|
|
42
|
+
onUnauthorized?: () => Promise<boolean> | boolean | void;
|
|
40
43
|
}
|
|
41
44
|
export interface ApiClient {
|
|
42
45
|
get: <T>(url: string, options?: ApiRequestOptions) => Promise<T>;
|
|
@@ -11,6 +11,8 @@ export interface AuthOptions {
|
|
|
11
11
|
userKey?: string;
|
|
12
12
|
refreshTokenKey?: string;
|
|
13
13
|
refreshEndpoint?: string;
|
|
14
|
+
/** 注入完成后回调(暴露 authClient——api 中间件 onUnauthorized 等需要调 refresh 的场景) */
|
|
15
|
+
onAuth?: (auth: AuthClient) => void;
|
|
14
16
|
}
|
|
15
17
|
export interface AuthClient {
|
|
16
18
|
token: string | null;
|
package/dist/ui-dom/store.d.ts
CHANGED
package/dist/ui-dom/types.d.ts
CHANGED
|
@@ -381,7 +381,7 @@ export interface WfuiContext {
|
|
|
381
381
|
dragProps: Record<string, any>;
|
|
382
382
|
};
|
|
383
383
|
/**
|
|
384
|
-
* 订阅共享状态(render-only 共享原语——design
|
|
384
|
+
* 订阅共享状态(render-only 共享原语——design 归档):
|
|
385
385
|
* mount 注册订阅(任何变化 → 自身重渲染),unmount 自动退订;返回 store 本身(活引用)。
|
|
386
386
|
* 参数契约:任何 { subscribe(cb): unsub } 的可订阅对象(createStore 产物 / useChat handle)。
|
|
387
387
|
*
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* 消息累积、工具调用内嵌、HITL 审批、错误恢复、stop/retry/clear。
|
|
6
6
|
*
|
|
7
7
|
* - 协议透明:消费 wf: 事件(docs/ai-contract.md),页面不需要知道事件名
|
|
8
|
-
* - 状态即共享 store(render-only 方案——design
|
|
8
|
+
* - 状态即共享 store(render-only 方案——design 归档):
|
|
9
9
|
* state 是**普通对象**(非 Proxy),变化 → notify() → 订阅者(useExternal)重渲染;
|
|
10
10
|
* handle 带 subscribe——可被 useExternal 订阅(AiChat 等共享会话的子组件)
|
|
11
11
|
* - 就地累积:token 经 state.messages[idx] 就地 append(O(1)/token,
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* - ui-dom/middleware/ = 中间件(uiServe 等——后续迁移)
|
|
8
8
|
*
|
|
9
9
|
* 渲染管线:buildVNode(async 预构建——await 全部工厂)→ renderValue(同步落地)
|
|
10
|
-
* ctx.ui.render:render-only(design
|
|
10
|
+
* ctx.ui.render:render-only(design 归档)——唯一渲染触发。
|
|
11
11
|
*/
|
|
12
12
|
import type { VNode, VNodeChild } from '../vnode.ts';
|
|
13
13
|
import { createRegistry, type Registry } from './registry.ts';
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* vdom/trace — 结构化调试 trace(阶段级开关 + 渲染会话 traceId)
|
|
3
3
|
*
|
|
4
|
-
* 目的(design
|
|
4
|
+
* 目的(design 归档):
|
|
5
5
|
* - 一次建立全面 vdom 调试能力:build/render/diff/mount/audit 各阶段独立开关
|
|
6
6
|
* - traceId 关联同一渲染会话(renderByIds/首帧/导航)的全部日志——事故可回放
|
|
7
7
|
* - children 顺序可视化(kidsSeq)——快速定位顺序错乱类 bug(Fragment/数组项)
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* transform — children/属性转化规则单一源(design
|
|
2
|
+
* transform — children/属性转化规则单一源(design 归档 阶段 0)
|
|
3
3
|
*
|
|
4
4
|
* 可推导性 by construction(design/vdom-transform-rules.md):所有 children 形态判定与
|
|
5
5
|
* 属性通道判定收敛到此单一模块——buildVNode / renderValue / patchChildren / renderSsr /
|