weifuwu 0.77.0 → 0.79.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +8 -6
- package/dist/components/AlertGroup/AlertGroup.d.ts +1 -1
- package/dist/components/Anchor/Anchor.d.ts +1 -1
- package/dist/components/AuthPage/AuthPage.d.ts +36 -0
- package/dist/components/AutoComplete/AutoComplete.d.ts +3 -1
- package/dist/components/AvatarGroup/AvatarGroup.d.ts +1 -1
- package/dist/components/Calendar/Calendar.d.ts +1 -1
- package/dist/components/Carousel/Carousel.d.ts +1 -1
- package/dist/components/Cascader/Cascader.d.ts +1 -1
- package/dist/components/ChatInput/ChatInput.d.ts +51 -0
- package/dist/components/ColorPicker/ColorPicker.d.ts +1 -1
- package/dist/components/DatePicker/DatePicker.d.ts +2 -0
- package/dist/components/FloatButton/FloatButton.d.ts +1 -1
- package/dist/components/Grid/Grid.d.ts +1 -1
- package/dist/components/InputNumber/InputNumber.d.ts +1 -1
- package/dist/components/JSONViewer/JSONViewer.d.ts +1 -1
- package/dist/components/Link/Link.d.ts +1 -1
- package/dist/components/List/List.d.ts +3 -0
- package/dist/components/LogViewer/LogViewer.d.ts +1 -1
- package/dist/components/Markdown/parser.d.ts +1 -1
- package/dist/components/Mentions/Mentions.d.ts +1 -1
- package/dist/components/Menu/Menu.d.ts +1 -1
- package/dist/components/Menubar/Menubar.d.ts +1 -1
- package/dist/components/MessageBubble/MessageBubble.d.ts +1 -1
- package/dist/components/NavMenu/NavMenu.d.ts +1 -1
- package/dist/components/Popconfirm/Popconfirm.d.ts +1 -1
- package/dist/components/Result/Result.d.ts +1 -1
- package/dist/components/Scrollbar/Scrollbar.d.ts +1 -1
- package/dist/components/SearchInput/SearchInput.d.ts +1 -0
- package/dist/components/Slider/Slider.d.ts +1 -0
- package/dist/components/TagsInput/TagsInput.d.ts +1 -1
- package/dist/components/Timeline/Timeline.d.ts +1 -1
- package/dist/components/Transfer/Transfer.d.ts +1 -1
- package/dist/components/TreeSelect/TreeSelect.d.ts +2 -0
- package/dist/components/VirtualList/VirtualList.d.ts +3 -1
- package/dist/components/VirtualTable/VirtualTable.d.ts +1 -1
- package/dist/components/Watermark/Watermark.d.ts +1 -1
- package/dist/components/index.d.ts +4 -0
- package/dist/components/index.js +12 -12
- package/dist/components/style.css +77 -23
- package/dist/index.js +74 -3
- package/dist/ui-dom/index.js +11 -11
- package/dist/ui-dom/jsx-runtime.js +1 -1
- package/dist/ui-dom/testing.js +1 -1
- package/dist/ui-dom/types.d.ts +2 -0
- package/dist/ui-dom/vdom/audit.d.ts +20 -0
- package/dist/ui-dom/vdom/diff.d.ts +3 -7
- package/dist/ui-dom/vdom/render.d.ts +5 -3
- package/dist/ui-dom/vdom/transform.d.ts +47 -0
- package/dist/ui-dom/vnode.d.ts +8 -1
- package/docs/components-map.md +3 -1
- package/docs/components.md +7 -4
- package/docs/custom-components.md +8 -0
- package/docs/frontend-ui-dom.md +1 -0
- package/package.json +1 -1
package/dist/ui-dom/index.js
CHANGED
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
function yn(e){let n=[],t=(e||"/").replace(/:(\w+)/g,(r,o)=>(n.push(o),"([^/]+)")).replace(/\*/g,".*");return{re:new RegExp(`^${t}$`),keys:n}}var be=class{_routes=[];_middlewares=[];_injections=[];_injected=!1;_mode;_notFound;constructor(n={}){this._mode=n.mode??"history"}get mode(){return this._mode}use(n,t){if(typeof n=="string"&&t){let r=this,o=n,s=async(i,l,u)=>{let d=l.__routePath??r.getPath(),a=null;return d===o?a="/":(o==="/"?d!=="/"&&d.startsWith("/"):d.startsWith(o+"/"))&&(a=d.slice(o.length)),a===null?u:async(c,p)=>{let w=await t._handle(a,c,p);return w===null?u(c,p):w}};return this._middlewares.push(s),this}return n.length<=1?(this._injections.push(n),this):(this._middlewares.push(n),this)}async _ensureInjected(n){if(!this._injected){this._injected=!0;for(let t of this._injections){let r=await t(n);r&&r!==n&&Object.assign(n,r)}}}get(n,t,r){return this._routes.push({path:n,handler:t,title:r?.title}),this}notFound(n){return this._notFound=n,this}getPath(){return this._getPath(void 0)}_getPath(n){let t=n?.location??(typeof window<"u"?window.location:null);return this._mode==="hash"?(t?.hash??"").replace(/^#/,"")||"/":t?.pathname??"/"}match(n){let t=null;for(let r of this._routes){let{re:o,keys:s}=yn(r.path),i=n.match(o);if(!i)continue;let l={};for(let u=0;u<s.length;u++)l[s[u]]=decodeURIComponent(i[u+1]);t={handler:r.handler,params:l,title:r.title};break}return t||(t={handler:this._notFound??(()=>null),params:{}}),t}async _handle(n,t,r){await this._ensureInjected(r);let o=this.match(n);o.title&&typeof document<"u"&&(document.title=o.title),r.params=o.params,r.route&&(r.route.params=o.params);let i=o.handler,l=r.__routePath;r.__routePath=n;try{for(let u=this._middlewares.length-1;u>=0;u--){let d=this._middlewares[u],a=i;i=await d(t,r,a)??a}return await i(t,r)}finally{r.__routePath=l}}async execute(n,t,r){await this._ensureInjected(t);let o=this.match(r);o.title&&typeof document<"u"&&(document.title=o.title),t.params=o.params,t.route&&(t.route.params=o.params);let i=o.handler;for(let l=this._middlewares.length-1;l>=0;l--){let u=this._middlewares[l],d=i;i=await u(n,t,d)??d}return await i(n,t)}};var L=Symbol("Fragment"),H=Symbol("Portal");function ve(e,n,t){return{type:e,props:Ge(n),key:t??void 0}}var gn=ve;function hn(e,n,t){return ve(e,n,t)}function j(e,n,...t){let r=Ge(n??{});return t.length>0&&(r.children=t.length===1?t[0]:t),{type:e,props:r,key:n?.key??void 0}}function Ge(e){if(!e)return{};let n={};for(let t of Object.keys(e))t!=="key"&&(n[t]=e[t]);return n}function F(e){if(e==null||typeof e=="boolean")return[];if(Array.isArray(e)){let n=!1;for(let o=0;o<e.length;o++)if(Array.isArray(e[o])){n=!0;break}if(!n)return e;let t=[],r=[...e].reverse();for(;r.length>0;){let o=r.pop();if(Array.isArray(o))for(let s=o.length-1;s>=0;s--)r.push(o[s]);else t.push(o)}return t}return[e]}function te(e,n){return{type:H,props:{children:e,portalKey:n},key:n??void 0,_placement:"remote"}}function _(){return{activeElement:()=>typeof document<"u"?document.activeElement:null,byId:e=>typeof document<"u"?document.getElementById(e):null,query:e=>typeof document<"u"?document.querySelector(e):null,queryAll:e=>typeof document<"u"?document.querySelectorAll(e):null,createElement:e=>typeof document<"u"?document.createElement(e):null,createElementNS:(e,n)=>typeof document<"u"?document.createElementNS(e,n):null,createDocumentFragment:()=>typeof document<"u"?document.createDocumentFragment():null,createComment:e=>typeof document<"u"?document.createComment(e):null,createTextNode:e=>typeof document<"u"?document.createTextNode(e):null,addEventListener:(e,n,t)=>{typeof window<"u"&&window.addEventListener(e,n,t)},removeEventListener:(e,n,t)=>{typeof window<"u"&&window.removeEventListener(e,n,t)},scrollTo:e=>{typeof window<"u"&&window.scrollTo(0,e)},matchMedia:e=>typeof window<"u"&&typeof window.matchMedia=="function"?window.matchMedia(e):null,visualViewport:()=>(typeof window<"u"?window:null)?.visualViewport??null,scrollingElement:()=>typeof document<"u"?document.scrollingElement:null,bodyElement:()=>typeof document<"u"?document.body:null,bodyAppend:e=>{typeof document<"u"&&document.body.appendChild(e)},bodyRemove:e=>{typeof document<"u"&&e.parentNode&&document.body.removeChild(e)},clearBody:()=>{typeof document<"u"&&(document.body.innerHTML="")},event:(e,n)=>{let t=typeof window<"u"?window:null,r=n&&(n.key||n.code)?"KeyboardEvent":n&&(n.clientX!==void 0||n.clientY!==void 0||n.pointerId!==void 0)?"PointerEvent":"Event";try{return new t[r](e,n)}catch{return new t.Event(e,n)}},dispatchEvent:(e,n)=>typeof e<"u"?e.dispatchEvent(n):!1,navigate:e=>{typeof window>"u"||(window.history.pushState(null,"",e),window.dispatchEvent(new PopStateEvent("popstate",{state:null})))},copyText:async e=>{let n=typeof window<"u"?window:null;if(n?.navigator?.clipboard?.writeText)try{return await n.navigator.clipboard.writeText(e),!0}catch{}try{if(typeof document>"u")return!1;let t=document.createElement("textarea");t.value=e,t.style.position="fixed",t.style.opacity="0",document.body.appendChild(t),t.select();let r=document.execCommand("copy");return document.body.removeChild(t),r}catch{return!1}},execCommand:(e,n)=>typeof document<"u"?document.execCommand(e,!1,n):!1,queryCommandState:e=>typeof document<"u"?document.queryCommandState(e):!1,queryCommandValue:e=>typeof document<"u"?document.queryCommandValue(e):"",selectionText:()=>typeof window<"u"?window.getSelection?.()?.toString()??null:null,getSelection:()=>typeof window<"u"?window.getSelection():null,viewportHeight:()=>typeof window<"u"?window.innerHeight:0,viewportWidth:()=>typeof window<"u"?window.innerWidth:0,pathname:()=>typeof window<"u"?window.location.pathname:"",createTreeWalker:(e,n)=>typeof document<"u"?document.createTreeWalker(e,n??NodeFilter.SHOW_ALL):null,scrollTop:()=>{let e=typeof document<"u"?document:null,n=typeof window<"u"?window:null;return e?.scrollingElement?.scrollTop??n?.scrollY??0},hash:()=>typeof window<"u"?window.location?.hash??"":"",setHash:e=>{typeof window<"u"&&(window.location.hash=e)},timeout:(e,n)=>typeof window<"u"?window.setTimeout(e,n):0,rootElement:()=>typeof document<"u"?document.documentElement:null,storageGet:e=>{try{return typeof window<"u"?window.localStorage?.getItem(e)??null:null}catch{return null}},storageSet:(e,n)=>{try{typeof window<"u"&&window.localStorage?.setItem(e,n)}catch{}}}}function wn(e,n,t=400){let r=!1,o=()=>{r||(r=!0,e.removeEventListener("animationend",o),clearTimeout(s),n())};e.addEventListener("animationend",o);let s=setTimeout(o,t)}function B(e,n){return Object.assign(Object.create(e),n)}function bn(e){let n={baseURL:e?.baseURL??"",headers:{"Content-Type":"application/json",...e?.headers}},t=e?.onRequest,r=e?.onResponse,o=e?.timeout??0;async function s(i,l,u,d){let a=n.baseURL+l,c={method:i,headers:{...n.headers,...d?.headers}},p=e?.token?.();p&&!c.headers.Authorization&&(c.headers.Authorization=`Bearer ${p}`);let w=o>0,b=!!d?.signal,m=null,g=null;(w||b)&&(m=new AbortController,c.signal=m.signal,w&&(g=setTimeout(()=>m.abort(new Error("Request timed out")),o)),b&&d.signal.addEventListener("abort",()=>m.abort())),u!==void 0&&i!=="GET"&&i!=="HEAD"&&(c.body=JSON.stringify(u));let y={url:a,init:c};t&&(y=t(y));try{let f=await fetch(y.url,y.init);if(r)return r(f);if(!f.ok){let P=await f.text().catch(()=>"");throw new Ce(f.status,P||f.statusText)}let h=f.headers.get("content-length");if(f.status===204||h==="0")return;let x=(f.headers.get("content-type")||"").toLowerCase();return x.includes("application/json")||x.includes("json")?f.json():f.text()}finally{g&&clearTimeout(g)}}return i=>B(i,{api:{get:(u,d)=>s("GET",u,void 0,d),post:(u,d,a)=>s("POST",u,d,a),put:(u,d,a)=>s("PUT",u,d,a),patch:(u,d,a)=>s("PATCH",u,d,a),delete:(u,d)=>s("DELETE",u,void 0,d)}})}var Ce=class extends Error{status;body;constructor(n,t){super(`API Error ${n}: ${t}`),this.name="ApiError",this.status=n,this.body=t}};function vn(e){try{let n=e.split(".");if(n.length!==3)return null;let t=n[1].replace(/-/g,"+").replace(/_/g,"/");return JSON.parse(atob(t))}catch{return null}}function Cn(e){let n=vn(e);return n?.exp?n.exp*1e3-3e4<Date.now():!0}function xn(e){let n=e?.storage??localStorage,t=e?.tokenKey??"weifuwu_token",r=e?.userKey??"weifuwu_user",o=e?.refreshTokenKey??"weifuwu_refresh",s=e?.refreshEndpoint??"/api/auth/refresh";return i=>{let l=n.getItem(t),u=n.getItem(r),d={token:l,user:u?JSON.parse(u):null,get isLoggedIn(){return this.token!==null},login(a,c,p){d.token=a,d.user=c,n.setItem(t,a),n.setItem(r,JSON.stringify(c)),p&&n.setItem(o,p)},logout(){d.token=null,d.user=null,n.removeItem(t),n.removeItem(r),n.removeItem(o)},setUser(a){d.user=a,n.setItem(r,JSON.stringify(a))},async refresh(){let a=n.getItem(o);if(!a)return!1;try{let c=await fetch(s,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({refreshToken:a})});if(!c.ok)return d.logout(),!1;let p=await c.json();return d.token=p.token,n.setItem(t,p.token),p.refreshToken&&n.setItem(o,p.refreshToken),!0}catch{return!1}}};return l&&Cn(l)&&d.refresh().catch(()=>{}),B(i,{auth:d})}}function En(e={}){let n=e.url??"/ws",t=e.reconnectInterval??3e3,r=e.maxReconnect??10,o=e.pingInterval??3e4,s=e.pingTimeout??1e4;return i=>{let l=new Set,u=null,d=0,a=null,c=null,p=null,w=!1,b={isConnected:!1,onMessage:h=>(l.add(h),()=>{l.delete(h)}),send:h=>{u?.readyState===WebSocket.OPEN&&u.send(JSON.stringify(h))},_connect:m,close:()=>{w=!0,f(),u?.close(),u=null,b.isConnected=!1}};async function m(){if(!w)try{u=new WebSocket(n),u.onopen=()=>{b.isConnected=!0,d=0,g()},u.onmessage=h=>{try{let x=JSON.parse(h.data);for(let P of l)P(x)}catch{}y()},u.onclose=()=>{b.isConnected=!1,f(),!w&&d<r&&(d++,a=setTimeout(m,t*Math.min(d,5)))},u.onerror=()=>{u?.close()}}catch{w||(a=setTimeout(m,t))}}function g(){o<=0||(c=setInterval(()=>{u?.readyState===WebSocket.OPEN&&u.send(JSON.stringify({type:"ping"})),p=setTimeout(()=>{u?.close()},s)},o))}function y(){clearTimeout(p)}function f(){clearInterval(c),clearTimeout(p),clearTimeout(a)}return m(),B(i,{ws:b})}}function Tn(e,n){if(e===n)return!0;let t=Object.keys(e),r=Object.keys(n);if(t.length!==r.length)return!1;for(let o of t)if(e[o]!==n[o])return!1;return!0}async function Ye(e,n,t,r){e._id||(r?.reuse?._id?e._id=r.reuse._id:e._id=t.nextId(),t.idRegistry.set(e._id,e)),r?.reuse&&(r.reuse._parentNode&&(e._parentNode=r.reuse._parentNode),r.reuse._refNode&&(e._refNode=r.reuse._refNode),r.reuse._ctxVersion!=null&&(e._ctxVersion=r.reuse._ctxVersion));let o=Object.create(n);o.ui=Object.create(n.ui);let s=o.ui;if(s._selfId=e._id,s._selfVNode=e,s.render=function(i){return i==null&&e._id?n.ui.render([e._id]):n.ui.render(i)},typeof e._render!="function"&&typeof r?.reuse?._render=="function"&&(e._render=r.reuse._render),typeof e._render!="function"){n.ui?.setMounting?.(!0);let i;try{i=await e.type(e.props??{},o)}finally{n.ui?.endMounting?.()}if(typeof i!="function")throw new Error(`Component ${e.type.name||"anonymous"} must return a render function. Use (init_props, ctx) => (props) => VNode pattern.`);e._render=i}return{renderFn:e._render,childCtx:o}}function xe(e){return!!e&&typeof e.then=="function"}function M(e,n,t,r,o){if(e==null||typeof e=="boolean"||typeof e=="string"||typeof e=="number")return e;if(Array.isArray(e)){let u=Array.isArray(t)?t:[],d=e.map((c,p)=>M(c,n,u[p],r,o)),a=!1;for(let c=0;c<d.length;c++)if(xe(d[c])){a=!0;break}return a?Promise.all(d).then(()=>e):e}let s=e,i=r??n.__registry,l=t!=null&&typeof t=="object"&&!Array.isArray(t)&&t.type===s.type?t:null;if(typeof s.type=="function"){s._id||(s._id=l?._id??i.nextId(),i.idRegistry.set(s._id,s)),l&&(l._parentNode&&(s._parentNode=l._parentNode),l._refNode&&(s._refNode=l._refNode),l._ctxVersion!=null&&(s._ctxVersion=l._ctxVersion),typeof l._render=="function"&&(s._render=l._render));let u=Tn(l?.props??{},s.props??{}),d=n?.ui?._ctxVersion??0,a=(l?._ctxVersion??-1)===d;return!o?.force&&u&&a&&l?._child!=null?(s._child=l._child,s._ctxVersion=l._ctxVersion,s):(async()=>{let{childCtx:c}=await Ye(s,n,i,{reuse:l??void 0}),p=await M(await s._render(s.props),c,l?._child,i);return s._child=p??null,s._ctxVersion=d,s})()}if(s.type===L){let u=M(s.props?.children??null,n,l?._child??l?.props?.children,i);return xe(u)?u.then(d=>(s._child=d??null,s)):(s._child=u??null,s)}if(typeof s.type=="string"||typeof s.type=="symbol"){let u=M(s.props?.children??null,n,l?.props?.children,i);return xe(u)?u.then(d=>(s._child=d??null,s)):(s._child=u??null,s)}return s}var Ee=new Set(["svg","path","circle","rect","line","polyline","polygon","g","text","defs","use","clipPath"]),re=/^on[A-Z]/,Nn=new Set(["zIndex","opacity","lineHeight","fontWeight","fontSizeAdjust","flex","flexGrow","flexShrink","order","zoom","aspectRatio","gridRow","gridColumn","scale","rotate","animationIterationCount","columnCount","fillOpacity","strokeOpacity","stopOpacity","floodOpacity"]);function Y(e,n,t){if(t==null||t===!1)return;let r=e.ownerDocument?.defaultView;if(n==="class"||n==="className"){if(typeof t=="object")for(let[o,s]of Object.entries(t))s&&e.classList.add(o);else e.setAttribute("class",String(t));return}if(n==="style"){if(typeof t=="string")e.setAttribute("style",t);else{let o=e.style;for(let[s,i]of Object.entries(t))i==null?o[s]="":s.startsWith("--")?o.setProperty(s,String(i)):typeof i=="number"&&!Nn.has(s)?o[s]=`${i}px`:o[s]=String(i)}return}if(n==="ref"){if(typeof t=="function")try{t(e)}catch(o){console.error("[weifuwu] ref error",o)}return}if(re.test(n)){let o=n.slice(2).toLowerCase();if(typeof t!="function"){console.warn(`[weifuwu] event prop ${n} expects a function, got ${typeof t} \u2014 ignored`);return}e.addEventListener(o,t);return}if(n==="value"){e.value=t;return}if(n==="indeterminate"){e.indeterminate=!!t;return}if(n==="innerHTML"){e.innerHTML=String(t??"");return}if(n==="draggable"||n==="contenteditable"||n==="spellcheck"){e.setAttribute(n,t?"true":"false");return}if(n.startsWith("aria-")&&typeof t=="boolean"){e.setAttribute(n,t?"true":"false");return}if(t===!0){e.setAttribute(n,"");return}try{e[n]=t,e.getAttribute(n)!==String(t)&&e.setAttribute(n,String(t))}catch{e.setAttribute(n,String(t))}}function S(e,n,t){let r=n?.browser??t;if(!r)throw new Error("[vdom] renderValue requires browser env (ctx.browser)");if(e==null||typeof e=="boolean")return null;if(typeof e=="string"||typeof e=="number")return r.createTextNode(String(e));if(Array.isArray(e)){let u=r.createDocumentFragment();if(!u)return null;for(let d of e){let a=S(d,n,r);a!=null&&u.appendChild(a)}return u}let o=e;if(o.type===H){let u=r.bodyElement();if(!u)return null;let d=u.querySelector("#__wf_portal");d||(d=r.createElement("div"),d&&(d.id="__wf_portal",u.appendChild(d)));let a=r.createElement("div");if(a){a.setAttribute("data-portal",String(o.props?.portalKey??"wf"));let c=S(o.props?.children??null,n,r);c!=null&&a.appendChild(c),d&&d.appendChild(a),o._remoteEl=a}return null}if(o.type===L){let u=r.createDocumentFragment();if(!u)return null;for(let d of F(o.props?.children)){let a=S(d,n,r);a!=null&&u.appendChild(a)}return o._childNodes=Array.from(u.childNodes),u}if(typeof o.type=="function"){if(typeof o._render!="function")throw new Error(`[vdom] component ${o.type.name||"anonymous"} not built (missing _render) \u2014 buildVNode must run before renderValue`);if(o._child===void 0)throw new Error(`[vdom] component ${o.type.name||"anonymous"} not built (missing _child) \u2014 buildVNode must run before renderValue`);let u=o._child;if(u==null)return o._child=null,null;let d=(Array.isArray(u)||typeof u=="object"&&typeof u.type=="function",u);o._child=d,typeof d=="object"&&!Array.isArray(d)&&(d._parentVNode=o);let a=S(d,n,r);return a&&(o._refNode=a),a}let s=o.type,i=Ee.has(s)?r.createElementNS("http://www.w3.org/2000/svg",s):r.createElement(s);if(!i)return null;o.el=i;let l;for(let[u,d]of Object.entries(o.props??{}))if(!(u==="children"||u==="key")){if(u==="value"&&i instanceof HTMLSelectElement){l=d;continue}Y(i,u,d)}if(!("innerHTML"in(o.props??{})))for(let u of F(o.props?.children)){let d=S(u,n,r);if(d!=null&&(i.appendChild(d),u&&typeof u=="object"&&!Array.isArray(u)&&typeof u.type=="function")){let a=u;a._parentNode||(a._parentNode=i,a._refNode=d)}}return l!==void 0&&(i.value=String(l)),i}var Pn=0;function Te(){return{idRegistry:new Map,unmountHooks:[],nextId:()=>`_wf_${Pn++}`}}function Ne(e,n){return e.unmountHooks.push(n),()=>{let t=e.unmountHooks.indexOf(n);t>=0&&e.unmountHooks.splice(t,1)}}function oe(e,n){for(let t of[...e.unmountHooks])t(n);e.idRegistry.delete(n),e.idRegistry.delete(`custom:${n}`)}function Vn(e,n,t,r){try{e(n)}catch(o){console.error(`[weifuwu] ref ${t} error in <${r??"anonymous"}>`,o)}}function R(e,n){if(e==null||typeof e!="object")return;let t=e;if(t._id){if(t._customId&&n.idRegistry.delete(t._customId),n.idRegistry.delete(t._id),n.unmountHooks.length>0){let r=[...n.unmountHooks];for(let o of r)o(t._id);if(t._customId)for(let o of r)o(t._customId)}t._id=void 0,t._customId=void 0,t._render=void 0,t._parentNode=void 0,t._refNode=void 0}if(t._child!=null){if(Array.isArray(t._child))for(let r of t._child)r&&typeof r=="object"&&R(r,n);else R(t._child,n);t._child=void 0}if(t.props?.children&&typeof t.type=="string"){let r=Array.isArray(t.props.children)?t.props.children:[t.props.children];for(let o of r)o&&typeof o=="object"&&R(o,n)}if(typeof t.props?.ref=="function"&&Vn(t.props.ref,null,"cleanup"),t._remoteEl){let r=t._child;if(r!=null)if(Array.isArray(r))for(let o of r)o&&typeof o=="object"&&R(o,n);else typeof r=="object"&&R(r,n);t._remoteEl.remove(),t._remoteEl=void 0}}function ie(e,n){if(n&&typeof e.type=="function"&&e._id){try{R(e,n)}catch(t){console.error("[weifuwu] ref cleanup error",t)}oe(n,e._id)}}function X(e){if(e==null||typeof e!="object"||Array.isArray(e))return;let n=e;return n._placement==="remote"?n.props?.portalKey:n.key}function Pe(e,n){if(n&&e&&typeof e=="object"&&!Array.isArray(e)&&e.type===L){let t=e._childNodes;if(t&&t.length)return t}return[n]}function O(e,n,t,r,o){if(typeof r=="string"||typeof r=="number"){if(typeof t=="string"||typeof t=="number"){if(String(t)!==String(r)){if(n&&n.nodeType===3)return n.nodeValue=String(r),n;let c=e.ownerDocument.createTextNode(String(r));return n?.parentNode?n.parentNode.replaceChild(c,n):e.appendChild(c),c}return n}let a=e.ownerDocument.createTextNode(String(r));return n?.parentNode?n.parentNode.replaceChild(a,n):e.appendChild(a),a}if(r==null||typeof r=="boolean"){if(t&&typeof t=="object"&&!Array.isArray(t)&&t.type===H){let a=t._remoteEl;try{R(t.props?.children,o.registry)}catch(c){console.error("[weifuwu] portal ref cleanup error",c)}return a?.parentNode?.removeChild(a),null}if(t&&typeof t=="object"&&!Array.isArray(t))if(typeof t.type=="function")ie(t,o.registry);else try{R(t,o.registry)}catch(a){console.error("[weifuwu] ref cleanup error",a)}return n?.parentNode&&n.parentNode.removeChild(n),null}if(Array.isArray(r)){if(t===r&&n?.parentNode)return n;let a=e.ownerDocument.createDocumentFragment(),c=se(e,t,r,o,n?[n]:void 0);for(let p of c)p&&a.appendChild(p);return n?.parentNode?a.contains(n)?e.appendChild(a):n.parentNode.replaceChild(a,n):e.appendChild(a),a}let s=r;if(s.type===H){let a=t&&typeof t=="object"&&!Array.isArray(t)?t:null;if(a?.type===H){let c=a._remoteEl;if(c){let p=a.props?.children??null,w=s.props?.children??null;se(c,p,w,o)}return s._remoteEl=a._remoteEl,null}return S(s,o,o.browser??_()),null}if(s.type===L){let a=t&&typeof t=="object"&&!Array.isArray(t)?t:null,c=a?._childNodes,p=se(e,a?.props?.children??t,s.props?.children??null,o,c);return s._childNodes=p.filter(Boolean),n?.parentNode&&n.nodeType===8&&n.parentNode.removeChild(n),n&&n.nodeType===1?n:p[0]??null}if(typeof s.type=="function"){if(typeof s._render!="function")throw new Error(`[vdom] component ${s.type.name||"anonymous"} not built in diff \u2014 buildVNode must run before patchValue`);let a=t&&typeof t=="object"&&!Array.isArray(t)?t:null,c=a?.type===s.type;if(!o.force&&a&&c&&a._child!==void 0&&s._child===a._child)return n;a?.type===s.type&&a._id&&(s._id=a._id,o.registry.idRegistry.set(s._id,s)),s._parentNode=e,n&&(s._refNode=n);let p;if(s._child===void 0)throw new Error(`[vdom] component ${s.type.name||"anonymous"} not built (missing _child) \u2014 buildVNode must run before patchValue`);p=s._child;let w=O(e,n,a?._child,p,o);return w&&(s._refNode=w),w}let i=t&&typeof t=="object"&&!Array.isArray(t)?t:null,l=i?.type??null,u=s.type;if(n&&n.nodeType===1&&l===u){let a=n;return s.el=a,_n(a,i?.props??{},s.props??{}),se(a,i?.props?.children??null,s.props?.children??null,o),a}let d=S(s,o,o.browser??_());if(d==null)return null;if(n?.parentNode)if(t!=null&&typeof t!="boolean"){if(typeof t=="object"&&!Array.isArray(t))try{R(t,o.registry)}catch(a){console.error("[weifuwu] ref cleanup error",a)}n.parentNode.replaceChild(d,n)}else n.parentNode.insertBefore(d,n);else e.appendChild(d);return d}function _n(e,n,t){let r=Object.keys(n),o=Object.keys(t);if(r.length===o.length){let i=!0;for(let l=0;l<r.length;l++)if(r[l]!==o[l]||n[r[l]]!==t[r[l]]){i=!1;break}if(i)return}let s=new Set([...r,...o]);for(let i of s){if(i==="children"||i==="key")continue;let l=n[i],u=t[i];if(l!==u){if(re.test(i)){typeof l=="function"&&e.removeEventListener(i.slice(2).toLowerCase(),l),u!=null&&u!==!1&&(typeof u!="function"?console.warn(`[weifuwu] event prop ${i} expects a function, got ${typeof u} \u2014 ignored`):e.addEventListener(i.slice(2).toLowerCase(),u));continue}if(u==null||u===!1){if(i==="class"||i==="className")e.removeAttribute("class");else if(re.test(i))e.removeEventListener(i.slice(2).toLowerCase(),l);else if(i==="ref"){if(typeof l=="function")try{l(null)}catch(d){console.error("[weifuwu] ref cleanup error",d)}}else if(i==="value")e.value="";else if(i==="indeterminate")e.indeterminate=!1;else{e.removeAttribute(i);try{delete e[i]}catch{}}continue}Y(e,i,u)}}}function se(e,n,t,r,o){let s=F(n),i=F(t),l=o??Array.from(e.childNodes);if(i.some(m=>{if(m==null||typeof m!="object"||Array.isArray(m))return!1;let g=m;return g._placement!=="remote"&&g.key!==void 0})){for(let m=0;m<i.length;m++){let g=i[m];g&&typeof g=="object"&&!Array.isArray(g)&&X(g)===void 0&&(g.key=`pos:${m}`)}for(let m=0;m<s.length;m++){let g=s[m];g&&typeof g=="object"&&!Array.isArray(g)&&X(g)===void 0&&(g.key=`pos:${m}`)}}let d=s.map((m,g)=>{if(m==null||typeof m!="object"||Array.isArray(m))return l[g]??null;let y=m;return y._placement==="remote"?y._remoteEl??null:y.type===L?y._childNodes?.[0]??null:y._refNode??y.el??null});if(!i.some(m=>{if(m==null||typeof m!="object"||Array.isArray(m))return!1;let g=m;return g._placement!=="remote"&&g.key!==void 0})){let m=Math.max(s.length,i.length),g=[];for(let y=0;y<m;y++){let f=y<s.length?s[y]:null,h=y<i.length?i[y]:null;if(h==null||typeof h=="boolean"){if(f&&typeof f=="object"&&!Array.isArray(f))if(typeof f.type=="function")ie(f,r.registry);else try{R(f,r.registry)}catch(C){console.error("[weifuwu] ref cleanup error",C)}let P=d[y];P?.parentNode&&P.parentNode.removeChild(P),g.push(null);continue}if(f!=null&&typeof f=="object"&&!Array.isArray(f)&&h!=null&&typeof h=="object"&&!Array.isArray(h)&&h===f){g.push(d[y]);continue}if(f==null||typeof f=="boolean"){let P=S(h,r,r.browser??_());if(P==null){g.push(null);continue}let C=null;for(let T=y+1;T<d.length;T++){let E=d[T];if(E&&E.parentNode===e){C=E;break}}if(!C){let T=null;for(let E=g.length-1;E>=0;E--)if(g[E]){T=g[E];break}if(T&&T.parentNode===e&&(C=T.nextSibling),!C){let E=d[d.length-1];E&&E.parentNode===e&&(C=E.nextSibling)}}C&&C.parentNode===e?e.insertBefore(P,C):e.appendChild(P),g.push(P);continue}let x=O(e,d[y],f,h,r);g.push(...Pe(h,x))}return g}let c=new Map;s.forEach((m,g)=>{let y=X(m);y!==void 0&&m&&typeof m=="object"&&!Array.isArray(m)&&c.set(y,{vnode:m,nodes:[d[g]??null].filter(Boolean),index:g})});let p=[],w=new Set,b=null;return i.forEach((m,g)=>{let y=X(m),f=m;if(y!==void 0&&c.has(y)){let h=c.get(y),x=h.nodes[0]??null;w.add(y);let P=O(e,x,h.vnode,f,r),C=Pe(f,P),T=C[C.length-1]??P;T&&T.parentNode===e&&b&&T.previousSibling!==b&&e.insertBefore(T,b.nextSibling),p.push(...C),T&&(b=T)}else if(f?._placement==="remote"){let h=s[g]??null,x=O(e,d[g]??null,h,f,r),P=Pe(f,x);p.push(...P);let C=P[P.length-1]??x;C&&(b=C)}else{let h=S(f,r,r.browser??_());p.push(h),h!=null&&(b?e.insertBefore(h,b.nextSibling):e.insertBefore(h,e.firstChild),b=h)}}),s.forEach((m,g)=>{let y=X(m),f=m&&typeof m=="object"&&!Array.isArray(m)&&typeof m.type=="function";if(y!==void 0&&!w.has(y)){if(m&&typeof m=="object"&&!Array.isArray(m))if(f)ie(m,r.registry);else try{R(m,r.registry)}catch(x){console.error("[weifuwu] ref cleanup error",x)}let h=d[g];h?.parentNode&&h.parentNode.removeChild(h)}else if(y===void 0){if(m&&typeof m=="object"&&!Array.isArray(m))if(f)ie(m,r.registry);else try{R(m,r.registry)}catch(x){console.error("[weifuwu] ref cleanup error",x)}let h=d[g];h?.parentNode&&h.parentNode.removeChild(h)}}),p}var Xe=_();function Je(e,n="bottom",t=6,r=!0){switch(n){case"bottom":return{top:e.bottom+t,left:r?e.left+e.width/2:e.left};case"top":return{top:e.top-t,left:r?e.left+e.width/2:e.left};case"left":return{top:r?e.top+e.height/2:e.top,left:e.left-t};case"right":return{top:r?e.top+e.height/2:e.top,left:e.right+t}}}function ae(e,n,t=8){if(!n)return e;let r=n.getBoundingClientRect();if(r.width===0&&r.height===0)return e;let o=Number.parseFloat(n.style.top)||r.top,s=Number.parseFloat(n.style.left)||r.left,i=e.top-o,l=e.left-s,u={top:r.top+i,bottom:r.bottom+i,left:r.left+l,right:r.right+l},d=Xe.viewportWidth(),a=Xe.viewportHeight(),c=e.top,p=e.left;return u.bottom>a-t&&(c=Math.max(t,c-(u.bottom-(a-t)))),u.top<t&&(c=Math.max(t,c+(t-u.top))),u.right>d-t&&(p=Math.max(t,p-(u.right-(d-t)))),u.left<t&&(p=Math.max(t,p+(t-u.left))),{top:c,left:p,width:e.width}}var K=_();function Qe(e){let n=new Map,t=new Map,r=!1,o=0;function s(){o||(o=requestAnimationFrame(()=>{o=0;let a=[];for(let[c,p]of n){if(!p.isOpen())continue;let w=p.getEl();if(!w)continue;let b=w.getBoundingClientRect();if(b.width===0&&b.height===0)continue;let m=p.compute(b);Object.assign(p.pos,ae(m,p.panel?.(),p.margin)),a.push(c)}for(let[c,p]of t){let w=p.getScroller(),b=w instanceof Window?K.scrollingElement()?.scrollTop??K.scrollTop():w.scrollTop??0;b!==p.handle.y&&(p.handle.y=b,a.push(c))}a.length>0&&e(a)}))}function i(){r||(r=!0,K.addEventListener("scroll",s,{capture:!0,passive:!0}),K.addEventListener("resize",s))}function l(){r&&(K.removeEventListener("scroll",s,{capture:!0}),K.removeEventListener("resize",s),r=!1)}function u(a){for(let c of[...n.keys()])(c.startsWith(`popup:${a}:`)||c===`popup:${a}`||c===a)&&n.delete(c);t.delete(a)}function d(){l(),o&&(cancelAnimationFrame(o),o=0),n.clear(),t.clear()}return{popupTrackers:n,scrollTrackers:t,schedulePopupRecompute:s,ensurePopupListeners:i,destroyPopupListeners:l,cleanupTrackers:u,destroy:d}}function Ve(e,n,t){return o=>{o?n(o):t?.()}}function J(e){return typeof window<"u"&&!!window.matchMedia?.("(hover: hover)").matches}function le(e){return typeof window<"u"&&!!window.matchMedia?.("(prefers-reduced-motion: reduce)").matches}function _e(e,n,t){let r=null,o=()=>{n(),t?.once&&r&&r.removeEventListener("animationend",o)};return i=>{i?(r=i,i.addEventListener("animationend",o)):r&&(r.removeEventListener("animationend",o),r=null)}}function ke(e,n){let{onLongPress:t,duration:r=500}=n,o,s=0,i=0,l=null,u=()=>{clearTimeout(o),o=void 0},d=e.selfId();if(d){let a=e.onUnmount(c=>{c===d&&(u(),a())})}return{onPointerDown:a=>{s=a.clientX??0,i=a.clientY??0,l=a,u(),o=setTimeout(()=>{o=void 0,l&&t(l)},r)},onPointerUp:u,onPointerLeave:u,onPointerMove:a=>{let c=Math.abs((a.clientX??0)-s),p=Math.abs((a.clientY??0)-i);(c>10||p>10)&&u()},onContextMenu:a=>{a.preventDefault(),t(a)}}}function Q(e,n){let t=e.selfId(),r="closed",o,s=()=>{r="closed",t?e.render([t]):e.render()};return{get phase(){return r},ref:l=>{l?o||(o=()=>{r==="exit"&&s()},l.addEventListener("animationend",o)):o=void 0},sync:l=>(l?r="open":r==="open"&&(r="exit"),r)}}function Se(e,n,t){let r=e.selfId(),o=le(e),s=t?.duration??400,i=t?.ease==="linear"?p=>p:p=>1-Math.pow(1-p,3),l,u=n,d={value:o?n:0,reset:()=>{}},a=()=>{r?e.render([r]):e.render()},c=p=>{if(u=p,o){d.value=p,a();return}if(p===d.value)return;l&&cancelAnimationFrame(l);let w=d.value,b=performance.now(),m=g=>{let y=Math.min(1,(g-b)/s);d.value=Math.round(w+(p-w)*i(y)),y<1?(l=requestAnimationFrame(m),a()):(l=void 0,a())};l=requestAnimationFrame(m)};if(d.reset=p=>{p===u&&l||c(p)},r){let p=e.onUnmount(w=>{w===r&&(l&&(cancelAnimationFrame(l),l=void 0),p())})}return queueMicrotask(()=>c(n)),d}function Re(e,n,t){let r=e.selfId(),o=e.browser,s=`media:${r}:${n}`;if(!e.mediaRegistry.has(s)){let i=o.matchMedia(n);t(i.matches);let l=d=>t(d.matches);i.addEventListener("change",l),e.mediaRegistry.set(s,{mql:i,handler:l});let u=e.onUnmount(d=>{if(d!==r)return;let a=e.mediaRegistry.get(s);if(a?.mql&&a.handler)try{a.mql.removeEventListener("change",a.handler)}catch{}e.mediaRegistry.delete(s),u()})}}function Ae(e,n,t){let r=e.browser,o=typeof n=="function"?{mobile:"(max-width: 639px)",tablet:"(min-width: 640px) and (max-width: 1023px)",desktop:"(min-width: 1024px)"}:n,s=typeof n=="function"?n:t,i=e.selfId(),l=`bp:${i}`;function u(){for(let[d,a]of Object.entries(o))if(r.matchMedia(a).matches)return d;return Object.keys(o)[0]??""}if(!e.mediaRegistry.has(l)){s(u());let d=[];for(let c of Object.values(o)){let p=r.matchMedia(c),w=()=>s(u());p.addEventListener("change",w),d.push({mql:p,handler:w})}e.mediaRegistry.set(l,{mqls:d});let a=e.onUnmount(c=>{if(c!==i)return;let p=e.mediaRegistry.get(l);if(p?.mqls)for(let w of p.mqls)try{w.mql.removeEventListener("change",w.handler)}catch{}e.mediaRegistry.delete(l),a()})}}function Me(e){let n=e.selfId(),t=e.browser,r={height:t.viewportHeight(),offsetTop:0,keyboardOpen:!1},o=()=>{n?e.render([n]):e.render()},s=()=>{let l=t.visualViewport();r.height=l?.height??t.viewportHeight(),r.offsetTop=l?.offsetTop??0,r.keyboardOpen=r.height<t.viewportHeight()*.9,o()},i=t.visualViewport();if(i?.addEventListener?(i.addEventListener("resize",s),i.addEventListener("scroll",s)):t.addEventListener("resize",s),n){let l=e.onUnmount(u=>{u===n&&(i?.removeEventListener?(i.removeEventListener("resize",s),i.removeEventListener("scroll",s)):t.removeEventListener("resize",s),l())})}return r}function Le(e,n){let t=e.selfId(),r={isIn:!1,ready:!1,observe:u,refresh:d,disconnect:a},o=null,s=null,i=()=>{t?e.render([t]):e.render()};function l(){if(s?.disconnect(),s=null,!o)return;let c=typeof n.rootMargin=="function"?n.rootMargin():n.rootMargin,p=typeof n.threshold=="function"?n.threshold():n.threshold;s=new IntersectionObserver(w=>{let b=w[w.length-1];if(!b)return;let m=b.isIntersecting,g=m!==r.isIn,y=!r.ready;r.isIn=m,r.ready=!0,n.onChange?.(b,m),(g||y)&&i()},{root:n.root?n.root():null,rootMargin:c??"0px",threshold:p??0}),s.observe(o)}function u(c){o=c,c?l():(s?.disconnect(),s=null,r.isIn=!1)}function d(){l()}function a(){s?.disconnect(),s=null}if(t){let c=e.onUnmount(p=>{p===t&&(a(),c())})}return r}function He(e,n){let t=e.selfId(),r=e.browser,o={y:0,refresh(){let l=s.getScroller();o.y=l instanceof Window?r.scrollingElement()?.scrollTop??r.scrollTop():l.scrollTop??0}},s={handle:o,getScroller:n.getScroller??(()=>window)};if(!t)return o.refresh(),o;e.scrollTrackers.set(t,s),e.ensurePopupListeners(),o.refresh();let i=e.onUnmount(l=>{l===t&&(e.scrollTrackers.delete(t),i())});return o}function ue(e,n){let t=e.selfId(),r=n.value!==void 0;if(r&&!n.onChange&&n.name&&(e.warned.has(n.name)||(e.warned.add(n.name),console.warn(`[weifuwu/${n.name}] \u53D7\u63A7\u6A21\u5F0F\uFF08value \u5DF2\u4F20\uFF09\u4F46\u672A\u63D0\u4F9B onChange\uFF0C\u4EA4\u4E92\u65E0\u6CD5\u751F\u6548\u3002
|
|
2
|
-
\u975E\u53D7\u63A7\uFF1A\u53BB\u6389 value\uFF1B\u53D7\u63A7\uFF1A\u4F20\u5165 onChange={(v) => setValue(v)}`))),!
|
|
3
|
-
\u975E\u53D7\u63A7\uFF1A\u53BB\u6389 open\uFF1B\u53D7\u63A7\uFF1A\u4F20\u5165 onOpenChange={(o) => setOpen(o)}`));let
|
|
1
|
+
function kn(e){let n=[],t=(e||"/").replace(/:(\w+)/g,(o,s)=>(n.push(s),"([^/]+)")).replace(/\*/g,".*");return{re:new RegExp(`^${t}$`),keys:n}}var Se=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,s=n,r=async(i,a,u)=>{let c=a.__routePath??o.getPath(),l=null;return c===s?l="/":(s==="/"?c!=="/"&&c.startsWith("/"):c.startsWith(s+"/"))&&(l=c.slice(s.length)),l===null?u:async(f,d)=>{let y=await t._handle(l,f,d);return y===null?u(f,d):y}};return this._middlewares.push(r),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:s,keys:r}=kn(o.path),i=n.match(s);if(!i)continue;let a={};for(let u=0;u<r.length;u++)a[r[u]]=decodeURIComponent(i[u+1]);t={handler:o.handler,params:a,title:o.title};break}return t||(t={handler:this._notFound??(()=>null),params:{}}),t}async _handle(n,t,o){await this._ensureInjected(o);let s=this.match(n);s.title&&typeof document<"u"&&(document.title=s.title),o.params=s.params,o.route&&(o.route.params=s.params);let i=s.handler,a=o.__routePath;o.__routePath=n;try{for(let u=this._middlewares.length-1;u>=0;u--){let c=this._middlewares[u],l=i;i=await c(t,o,l)??l}return await i(t,o)}finally{o.__routePath=a}}async execute(n,t,o){await this._ensureInjected(t);let s=this.match(o);s.title&&typeof document<"u"&&(document.title=s.title),t.params=s.params,t.route&&(t.route.params=s.params);let i=s.handler;for(let a=this._middlewares.length-1;a>=0;a--){let u=this._middlewares[a],c=i;i=await u(n,t,c)??c}return await i(n,t)}};var H=Symbol("Fragment"),U=Symbol("Portal");function Re(e,n,t){return{type:e,props:ln(n),key:t??void 0}}var Pn=Re;function An(e,n,t){return Re(e,n,t)}function G(e,n,...t){let o=ln(n??{});return t.length>0&&(o.children=t.length===1?t[0]:t),{type:e,props:o,key:n?.key??void 0}}function ln(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 me(e,n){return{type:U,props:{children:e,portalKey:n},key:n??void 0,_placement:"remote"}}function L(){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 Sn(e,n,t=400){let o=!1,s=()=>{o||(o=!0,e.removeEventListener("animationend",s),clearTimeout(r),n())};e.addEventListener("animationend",s);let r=setTimeout(s,t)}function Q(e,n){return Object.assign(Object.create(e),n)}function Rn(e){let n={baseURL:e?.baseURL??"",headers:{"Content-Type":"application/json",...e?.headers}},t=e?.onRequest,o=e?.onResponse,s=e?.timeout??0;async function r(i,a,u,c){let l=n.baseURL+a,f={method:i,headers:{...n.headers,...c?.headers}},d=e?.token?.();d&&!f.headers.Authorization&&(f.headers.Authorization=`Bearer ${d}`);let y=s>0,g=!!c?.signal,h=null,x=null;(y||g)&&(h=new AbortController,f.signal=h.signal,y&&(x=setTimeout(()=>h.abort(new Error("Request timed out")),s)),g&&c.signal.addEventListener("abort",()=>h.abort())),u!==void 0&&i!=="GET"&&i!=="HEAD"&&(f.body=JSON.stringify(u));let b={url:l,init:f};t&&(b=t(b));try{let m=await fetch(b.url,b.init);if(o)return o(m);if(!m.ok){let _=await m.text().catch(()=>"");throw new Me(m.status,_||m.statusText)}let p=m.headers.get("content-length");if(m.status===204||p==="0")return;let w=(m.headers.get("content-type")||"").toLowerCase();return w.includes("application/json")||w.includes("json")?m.json():m.text()}finally{x&&clearTimeout(x)}}return i=>Q(i,{api:{get:(u,c)=>r("GET",u,void 0,c),post:(u,c,l)=>r("POST",u,c,l),put:(u,c,l)=>r("PUT",u,c,l),patch:(u,c,l)=>r("PATCH",u,c,l),delete:(u,c)=>r("DELETE",u,void 0,c)}})}var Me=class extends Error{status;body;constructor(n,t){super(`API Error ${n}: ${t}`),this.name="ApiError",this.status=n,this.body=t}};function Mn(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 Ln(e){let n=Mn(e);return n?.exp?n.exp*1e3-3e4<Date.now():!0}function Hn(e){let n=e?.storage??localStorage,t=e?.tokenKey??"weifuwu_token",o=e?.userKey??"weifuwu_user",s=e?.refreshTokenKey??"weifuwu_refresh",r=e?.refreshEndpoint??"/api/auth/refresh";return i=>{let a=n.getItem(t),u=n.getItem(o),c={token:a,user:u?JSON.parse(u):null,get isLoggedIn(){return this.token!==null},login(l,f,d){c.token=l,c.user=f,n.setItem(t,l),n.setItem(o,JSON.stringify(f)),d&&n.setItem(s,d)},logout(){c.token=null,c.user=null,n.removeItem(t),n.removeItem(o),n.removeItem(s)},setUser(l){c.user=l,n.setItem(o,JSON.stringify(l))},async refresh(){let l=n.getItem(s);if(!l)return!1;try{let f=await fetch(r,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({refreshToken:l})});if(!f.ok)return c.logout(),!1;let d=await f.json();return c.token=d.token,n.setItem(t,d.token),d.refreshToken&&n.setItem(s,d.refreshToken),!0}catch{return!1}}};return a&&Ln(a)&&c.refresh().catch(()=>{}),Q(i,{auth:c})}}function Un(e={}){let n=e.url??"/ws",t=e.reconnectInterval??3e3,o=e.maxReconnect??10,s=e.pingInterval??3e4,r=e.pingTimeout??1e4;return i=>{let a=new Set,u=null,c=0,l=null,f=null,d=null,y=!1,g={isConnected:!1,onMessage:p=>(a.add(p),()=>{a.delete(p)}),send:p=>{u?.readyState===WebSocket.OPEN&&u.send(JSON.stringify(p))},_connect:h,close:()=>{y=!0,m(),u?.close(),u=null,g.isConnected=!1}};async function h(){if(!y)try{u=new WebSocket(n),u.onopen=()=>{g.isConnected=!0,c=0,x()},u.onmessage=p=>{try{let w=JSON.parse(p.data);for(let _ of a)_(w)}catch{}b()},u.onclose=()=>{g.isConnected=!1,m(),!y&&c<o&&(c++,l=setTimeout(h,t*Math.min(c,5)))},u.onerror=()=>{u?.close()}}catch{y||(l=setTimeout(h,t))}}function x(){s<=0||(f=setInterval(()=>{u?.readyState===WebSocket.OPEN&&u.send(JSON.stringify({type:"ping"})),d=setTimeout(()=>{u?.close()},r)},s))}function b(){clearTimeout(d)}function m(){clearInterval(f),clearTimeout(d),clearTimeout(l)}return h(),Q(i,{ws:g})}}function In(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 s of t)if(e[s]!==n[s])return!1;return!0}async function un(e,n,t,o){e._id||(o?.reuse?._id?e._id=o.reuse._id:e._id=t.nextId(),t.idRegistry.set(e._id,e)),o?.reuse&&(o.reuse._parentNode&&(e._parentNode=o.reuse._parentNode),o.reuse._refNode&&(e._refNode=o.reuse._refNode),o.reuse._ctxVersion!=null&&(e._ctxVersion=o.reuse._ctxVersion));let s=Object.create(n);s.ui=Object.create(n.ui);let r=s.ui;if(r._selfId=e._id,r._selfVNode=e,r.render=function(i){return i==null&&e._id?n.ui.render([e._id]):n.ui.render(i)},typeof e._render!="function"&&typeof o?.reuse?._render=="function"&&(e._render=o.reuse._render),typeof e._render!="function"){n.ui?.setMounting?.(!0);let i;try{i=await e.type(e.props??{},s)}finally{n.ui?.endMounting?.()}if(typeof i!="function")throw new Error(`Component ${e.type.name||"anonymous"} must return a render function. Use (init_props, ctx) => (props) => VNode pattern.`);e._render=i}return{renderFn:e._render,childCtx:s}}function Le(e){return!!e&&typeof e.then=="function"}function W(e,n,t,o,s){if(e==null||typeof e=="boolean"||typeof e=="string"||typeof e=="number")return e;if(Array.isArray(e)){for(let f=0;f<e.length;f++){let d=e[f];if(d!=null&&typeof d=="object"&&!Array.isArray(d)){let y=d;y.key===void 0?y.key=String(f):y.key=String(y.key)}}let u=Array.isArray(t)?t:[],c=e.map((f,d)=>W(f,n,u[d],o,s)),l=!1;for(let f=0;f<c.length;f++)if(Le(c[f])){l=!0;break}return l?Promise.all(c).then(()=>e):e}let r=e,i=o??n.__registry,a=t!=null&&typeof t=="object"&&!Array.isArray(t)&&t.type===r.type?t:null;if(typeof r.type=="function"){r._id||(r._id=a?._id??i.nextId(),i.idRegistry.set(r._id,r)),a&&(a._parentNode&&(r._parentNode=a._parentNode),a._refNode&&(r._refNode=a._refNode),a._ctxVersion!=null&&(r._ctxVersion=a._ctxVersion),typeof a._render=="function"&&(r._render=a._render));let u=In(a?.props??{},r.props??{}),c=n?.ui?._ctxVersion??0,l=(a?._ctxVersion??-1)===c;return!s?.force&&u&&l&&a?._child!=null?(r._child=a._child,r._ctxVersion=a._ctxVersion,r):(async()=>{let{childCtx:f}=await un(r,n,i,{reuse:a??void 0}),d=await W(await r._render(r.props),f,a?._child,i);return r._child=d??null,r._ctxVersion=c,r})()}if(r.type===H){let u=W(r.props?.children??null,n,a?._child??a?.props?.children,i);return Le(u)?u.then(c=>(r._child=c??null,r)):(r._child=u??null,r)}if(typeof r.type=="string"||typeof r.type=="symbol"){let u=W(r.props?.children??null,n,a?.props?.children,i);return Le(u)?u.then(c=>(r._child=c??null,r)):(r._child=u??null,r)}return r}function ge(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 ye(e){return/[\s"=]/.test(e)?`"${e.replace(/"/g,"'")}"`:e}function q(e){let n=[`type=${e.type}`];return e.value!==void 0&&n.push(`value=${ye(ge(e.value))}`),e.key!=null&&n.push(`key=${ye(e.key)}`),e.id!=null&&n.push(`id=${ye(e.id)}`),e.fid!=null&&n.push(`fid=${ye(e.fid)}`),`wf-hole: ${n.join(" ")}`}function he(e){return typeof e!="string"&&typeof e!="function"&&e!==H&&e!==U}function dn(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===void 0?o.key=String(n):o.key=String(o.key)}}}var Z=/^on[A-Z]/,On=/^on[A-Z].*Capture$/;function oe(e){let n=On.test(e);return{type:(n?e.slice(2,-7):e.slice(2)).toLowerCase(),capture:n}}var re=new Set(["draggable","contenteditable","spellcheck","translate"]),cn=new Set(["zIndex","opacity","lineHeight","fontWeight","fontSizeAdjust","flex","flexGrow","flexShrink","order","zoom","aspectRatio","gridRow","gridColumn","scale","rotate","animationIterationCount","columnCount","fillOpacity","strokeOpacity","stopOpacity","floodOpacity"]);var He=new Set(["svg","path","circle","rect","line","polyline","polygon","g","text","defs","use","clipPath"]);function ee(e,n,t){if(t==null)return;let o=e.ownerDocument?.defaultView;if(re.has(n)){e.setAttribute(n,t?"true":"false");return}if(t!==!1){if(n==="class"||n==="className"){if(typeof t=="object")for(let[s,r]of Object.entries(t))r&&e.classList.add(s);else e.setAttribute("class",String(t));return}if(n==="style"){if(typeof t=="string")e.setAttribute("style",t);else{let s=e.style;for(let[r,i]of Object.entries(t))i==null?s[r]="":r.startsWith("--")?s.setProperty(r,String(i)):typeof i=="number"&&!cn.has(r)?s[r]=`${i}px`:s[r]=String(i)}return}if(n==="ref"){if(typeof t=="function")try{t(e)}catch(s){console.error("[weifuwu] ref error",s)}return}if(Z.test(n)){let{type:s,capture:r}=oe(n);if(typeof t!="function"){console.warn(`[weifuwu] event prop ${n} expects a function, got ${typeof t} \u2014 ignored`);return}e.addEventListener(s,t,r?{capture:!0}:void 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 z(e,n){return e.createComment(q({type:"hole",value:n}))}function I(e,n,t,o,s,r){let i=n?.browser??t;if(!i)throw new Error("[vdom] renderValue requires browser env (ctx.browser)");if(e==null||typeof e=="boolean")return null;if(typeof e=="string"||typeof e=="number")return i.createTextNode(String(e));if(Array.isArray(e)){let d=i.createDocumentFragment();if(!d)return null;let y=i.createComment(q({type:"fragment-start",key:o,id:s,fid:r??void 0})),g=i.createComment(q({type:"fragment-end",key:o,id:s,fid:r??void 0}));y&&d.appendChild(y);for(let h=0;h<e.length;h++){let x=e[h],b=r!=null?`${r}-${h}`:String(h),m=x==null||typeof x=="boolean"?z(i,x):I(x,n,i,String(h),void 0,b);m!=null&&d.appendChild(m)}return g&&d.appendChild(g),d}let a=e,u=a.type;if(typeof u!="string"&&typeof u!="function"&&u!==H&&u!==U)return console.warn(`[weifuwu] children \u9879\u975E\u6CD5\uFF1Atype=${String(u)}\uFF08${typeof u}\uFF09\uFF0C\u503C=${ge(e)}\u2014\u2014\u5DF2\u5360\u4F4D\uFF08wf-hole\uFF09\uFF0C\u68C0\u67E5\u4F20\u5165\u7684 children`),z(i,e);if(a.type===U){let d=i.bodyElement();if(!d)return null;let y=d.querySelector("#__wf_portal");y||(y=i.createElement("div"),y&&(y.id="__wf_portal",d.appendChild(y)));let g=i.createElement("div");if(g){g.setAttribute("data-portal",String(a.props?.portalKey??"wf"));let h=I(a.props?.children??null,n,i);h!=null&&g.appendChild(h),y&&y.appendChild(g),a._remoteEl=g}return null}if(a.type===H){let d=i.createDocumentFragment();if(!d)return null;for(let y of $(a.props?.children)){let g=y==null||typeof y=="boolean"?z(i,y):I(y,n,i);g!=null&&d.appendChild(g)}return a._childNodes=Array.from(d.childNodes),d}if(typeof a.type=="function"){if(typeof a._render!="function")throw new Error(`[vdom] component ${a.type.name||"anonymous"} not built (missing _render) \u2014 buildVNode must run before renderValue`);if(a._child===void 0)throw new Error(`[vdom] component ${a.type.name||"anonymous"} not built (missing _child) \u2014 buildVNode must run before renderValue`);let d=a._child;if(d==null)return a._child=null,null;let y=(Array.isArray(d)||typeof d=="object"&&typeof d.type=="function",d);a._child=y,typeof y=="object"&&!Array.isArray(y)&&(y._parentVNode=a);let g=I(y,n,i);if(g){if(a._refNode=g,a._id)if(g.nodeType===11)for(let h of Array.from(g.childNodes))h.nodeType===1&&h.setAttribute("data-wf-id",a._id);else g.nodeType===1&&g.setAttribute("data-wf-id",a._id);if(a.key!=null)if(g.nodeType===11)for(let h of Array.from(g.childNodes))h.nodeType===1&&h.setAttribute("data-wf-key",a.key);else g.nodeType===1&&g.setAttribute("data-wf-key",a.key)}return g}let c=a.type,l=He.has(c)?i.createElementNS("http://www.w3.org/2000/svg",c):i.createElement(c);if(!l)return null;a.el=l,a.key!=null&&l.setAttribute("data-wf-key",a.key);let f;for(let[d,y]of Object.entries(a.props??{}))if(!(d==="children"||d==="key")){if(d==="value"&&l instanceof HTMLSelectElement){f=y;continue}ee(l,d,y)}if(!("innerHTML"in(a.props??{}))){let d=[],y=$(a.props?.children);for(let g=0;g<y.length;g++){let h=y[g],x=r!=null?`${r}-${g}`:String(g),b=h==null||typeof h=="boolean"?z(i,h):I(h,n,i,String(g),void 0,x);if(b==null){d.push(null);continue}let m=b.nodeType===11?b.firstChild:b;if(l.appendChild(b),d.push(m),h&&typeof h=="object"&&!Array.isArray(h)&&typeof h.type=="function"){let p=h;p._parentNode||(p._parentNode=l,p._refNode=b)}}a._childAnchors=d}return f!==void 0&&(l.value=String(f)),l}var Dn=0;function Ue(){return{idRegistry:new Map,unmountHooks:[],nextId:()=>`_wf_${Dn++}`}}function be(e,n){return e.unmountHooks.push(n),()=>{let t=e.unmountHooks.indexOf(n);t>=0&&e.unmountHooks.splice(t,1)}}function we(e,n){for(let t of[...e.unmountHooks])t(n);e.idRegistry.delete(n),e.idRegistry.delete(`custom:${n}`)}function Wn(e,n,t,o){try{e(n)}catch(s){console.error(`[weifuwu] ref ${t} error in <${o??"anonymous"}>`,s)}}function O(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 s of o)s(t._id);if(t._customId)for(let s of o)s(t._customId)}t._id=void 0,t._customId=void 0,t._render=void 0,t._parentNode=void 0,t._refNode=void 0}if(t._child!=null){if(Array.isArray(t._child))for(let o of t._child)o&&typeof o=="object"&&O(o,n);else O(t._child,n);t._child=void 0}if(t.props?.children&&typeof t.type=="string"){let o=Array.isArray(t.props.children)?t.props.children:[t.props.children];for(let s of o)s&&typeof s=="object"&&O(s,n)}if(typeof t.props?.ref=="function"&&Wn(t.props.ref,null,"cleanup"),t._remoteEl){let o=t._child;if(o!=null)if(Array.isArray(o))for(let s of o)s&&typeof s=="object"&&O(s,n);else typeof o=="object"&&O(o,n);t._remoteEl.remove(),t._remoteEl=void 0}}function K(e,n){if(n&&typeof e.type=="function"&&e._id){try{O(e,n)}catch(t){console.error("[weifuwu] ref cleanup error",t)}we(n,e._id)}}function se(e){if(e==null||typeof e!="object"||Array.isArray(e))return;let n=e;return n._placement==="remote"?n.props?.portalKey:n.key}function Ie(e,n){if(n&&e&&typeof e=="object"&&!Array.isArray(e)&&e.type===H){let t=e._childNodes;if(t&&t.length)return t}return[n]}function F(e,n,t,o,s){if(typeof o=="string"||typeof o=="number"){if(typeof t=="string"||typeof t=="number"){if(String(t)!==String(o)){if(n&&n.nodeType===3)return n.nodeValue=String(o),n;let f=e.ownerDocument.createTextNode(String(o));return n?.parentNode?n.parentNode.replaceChild(f,n):e.appendChild(f),f}return n}let l=e.ownerDocument.createTextNode(String(o));return n?.parentNode?n.parentNode.replaceChild(l,n):e.appendChild(l),l}if(o==null||typeof o=="boolean"){if(t&&typeof t=="object"&&!Array.isArray(t)&&t.type===U){let l=t._remoteEl;try{O(t.props?.children,s.registry)}catch(f){console.error("[weifuwu] portal ref cleanup error",f)}return l?.parentNode?.removeChild(l),null}if(t&&typeof t=="object"&&!Array.isArray(t))if(typeof t.type=="function")K(t,s.registry);else try{O(t,s.registry)}catch(l){console.error("[weifuwu] ref cleanup error",l)}return n?.parentNode&&n.parentNode.removeChild(n),null}if(Array.isArray(o)){if(t===o&&n?.parentNode)return n;let l=e.ownerDocument.createDocumentFragment(),f=ie(e,t,o,s,n?[n]:void 0);for(let d of f)d&&l.appendChild(d);return n?.parentNode?l.contains(n)?e.appendChild(l):n.parentNode.replaceChild(l,n):e.appendChild(l),l}let r=o;if(r.type===U){let l=t&&typeof t=="object"&&!Array.isArray(t)?t:null;if(l?.type===U){let f=l._remoteEl;if(f){let d=l.props?.children??null,y=r.props?.children??null;ie(f,d,y,s)}return r._remoteEl=l._remoteEl,null}return I(r,s,s.browser??L()),null}if(r.type===H){let l=t&&typeof t=="object"&&!Array.isArray(t)?t:null,f=l?._childNodes,d=ie(e,l?.props?.children??t,r.props?.children??null,s,f);return r._childNodes=d.filter(Boolean),n?.parentNode&&n.nodeType===8&&n.parentNode.removeChild(n),n&&n.nodeType===1?n:d[0]??null}if(typeof r.type=="function"){if(typeof r._render!="function")throw new Error(`[vdom] component ${r.type.name||"anonymous"} not built in diff \u2014 buildVNode must run before patchValue`);let l=t&&typeof t=="object"&&!Array.isArray(t)?t:null,f=l?.type===r.type;if(!s.force&&l&&f&&l._child!==void 0&&r._child===l._child)return n;l?.type===r.type&&l._id&&(r._id=l._id,s.registry.idRegistry.set(r._id,r)),r._parentNode=e,n&&(r._refNode=n);let d;if(r._child===void 0)throw new Error(`[vdom] component ${r.type.name||"anonymous"} not built (missing _child) \u2014 buildVNode must run before patchValue`);d=r._child;let y=F(e,n,l?._child,d,s);return y&&(r._refNode=y),y}let i=t&&typeof t=="object"&&!Array.isArray(t)?t:null,a=i?.type??null,u=r.type;if(n&&n.nodeType===1&&a===u){let l=n;if(r.el=l,jn(l,i?.props??{},r.props??{}),!("innerHTML"in(r.props??{}))){let f=[];ie(l,i?.props?.children??null,r.props?.children??null,s,void 0,i?._childAnchors,f),r._childAnchors=f}return l}let c=I(r,s,s.browser??L());if(c==null)return null;if(n?.parentNode)if(t!=null&&typeof t!="boolean"){if(typeof t=="object"&&!Array.isArray(t))try{O(t,s.registry)}catch(l){console.error("[weifuwu] ref cleanup error",l)}n.parentNode.replaceChild(c,n)}else n.parentNode.insertBefore(c,n);else e.appendChild(c);return c}function jn(e,n,t){let o=Object.keys(n),s=Object.keys(t);if(o.length===s.length){let i=!0;for(let a=0;a<o.length;a++)if(o[a]!==s[a]||n[o[a]]!==t[o[a]]){i=!1;break}if(i)return}let r=new Set([...o,...s]);for(let i of r){if(i==="children"||i==="key")continue;let a=n[i],u=t[i];if(a!==u){if(Z.test(i)){let{type:c,capture:l}=oe(i);typeof a=="function"&&e.removeEventListener(c,a,l?{capture:!0}:void 0),u!=null&&u!==!1&&(typeof u!="function"?console.warn(`[weifuwu] event prop ${i} expects a function, got ${typeof u} \u2014 ignored`):e.addEventListener(c,u,l?{capture:!0}:void 0));continue}if(i==="class"||i==="className"){u==null||u===!1?e.removeAttribute("class"):(e.className="",ee(e,i,u));continue}if(u==null||u===!1){if(i==="class"||i==="className")e.removeAttribute("class");else if(Z.test(i))e.removeEventListener(i.slice(2).toLowerCase(),a);else if(i==="ref"){if(typeof a=="function")try{a(null)}catch(c){console.error("[weifuwu] ref cleanup error",c)}}else if(i==="value")e.value="";else if(i==="indeterminate")e.indeterminate=!1;else{e.removeAttribute(i);try{delete e[i]}catch{}}continue}ee(e,i,u)}}}function Oe(e,n,t){let o=e[n];if(!o)return[];if(o.nodeType===8&&o.nodeValue?.includes("type=fragment-start")){let a=[o],u=/fid=([^\s"]+)/.exec(o.nodeValue)?.[1]??"",c=o.nextSibling;for(;c&&(a.push(c),!(c.nodeType===8&&c.nodeValue?.includes("type=fragment-end")&&(/fid=([^\s"]+)/.exec(c.nodeValue)?.[1]??u)===u));)c=c.nextSibling;return a}let s=e[n+1]??null,r=[],i=o;for(;i&&i!==s&&i.parentNode===t;)r.push(i),i=i.nextSibling;return r}function ie(e,n,t,o,s,r,i){let a=$(n),u=$(t),c=r??s??Array.from(e.childNodes),l=u.some(p=>{if(p==null||typeof p!="object"||Array.isArray(p))return!1;let w=p;return w._placement!=="remote"&&w.key!==void 0}),f=u.some(p=>Array.isArray(p))||a.some(p=>Array.isArray(p));if(l){for(let p=0;p<u.length;p++){let w=u[p];w&&typeof w=="object"&&!Array.isArray(w)&&se(w)===void 0&&(w.key=`pos:${p}`)}for(let p=0;p<a.length;p++){let w=a[p];w&&typeof w=="object"&&!Array.isArray(w)&&se(w)===void 0&&(w.key=`pos:${p}`)}}let d=r?r.map((p,w)=>p??(w<a.length?a[w]?._refNode??null:null)):(()=>{let p=c;p.length>=2&&p[0]?.nodeType===8&&p[0].nodeValue?.includes("fragment-start")&&p[p.length-1]?.nodeType===8&&p[p.length-1].nodeValue?.includes("fragment-end")&&(p=p.slice(1,-1));let w=[],_=0;for(let E=0;E<a.length;E++){let C=a[E];if(Array.isArray(C)){w.push(p[_]??null),_++;continue}if(C==null||typeof C=="boolean"){w.push(p[_]??null),_++;continue}if(typeof C=="string"||typeof C=="number"){w.push(p[_]??null),_++;continue}let v=C;if(v._placement==="remote"){w.push(v._remoteEl??null);continue}if(v.type===H){w.push(v._childNodes?.[0]??null),_++;continue}w.push(v._refNode??v.el??p[_]??null),_++}return w})();if(f||!u.some(p=>{if(p==null||typeof p!="object"||Array.isArray(p))return!1;let w=p;return w._placement!=="remote"&&w.key!==void 0})){let p=Math.max(a.length,u.length),w=[],_=E=>{i&&i.push(E)};for(let E=0;E<p;E++){let C=E<a.length?a[E]:null,v=E<u.length?u[E]:null;if(v==null||typeof v=="boolean"){let V=d[E],A=o.browser??L();if(E>=u.length){if(Array.isArray(C)){let M=Oe(d,E,e);for(let P of M)P.parentNode?.removeChild(P);for(let P of C)P!=null&&typeof P=="object"&&!Array.isArray(P)&&typeof P.type=="function"&&K(P,o.registry)}else if(C&&typeof C=="object"&&!Array.isArray(C)){if(typeof C.type=="function")K(C,o.registry);else try{O(C,o.registry)}catch(M){console.error("[weifuwu] ref cleanup error",M)}V?.parentNode&&V.parentNode.removeChild(V)}else V?.parentNode&&V.parentNode.removeChild(V);w.push(null),_(null);continue}let k=z(A,v);if(C==null||typeof C=="boolean"){V?.nodeType===8?(k&&V.nodeValue!==k.nodeValue&&(V.nodeValue=k.nodeValue),w.push(V),_(V)):(k&&V?.parentNode?V.parentNode.replaceChild(k,V):k&&e.appendChild(k),w.push(k),_(k));continue}if(C&&typeof C=="object"&&!Array.isArray(C))if(typeof C.type=="function")K(C,o.registry);else try{O(C,o.registry)}catch(M){console.error("[weifuwu] ref cleanup error",M)}k&&V?.parentNode?V.parentNode.replaceChild(k,V):k&&e.appendChild(k),w.push(k),_(k);continue}if(C!=null&&typeof C=="object"&&!Array.isArray(C)&&v!=null&&typeof v=="object"&&!Array.isArray(v)&&v===C){w.push(d[E]),_(d[E]);continue}if(C==null||typeof C=="boolean"){let V=I(v,o,o.browser??L());if(V==null){w.push(null),_(null);continue}let A=d[E];if(A&&A.nodeType===8&&A.nodeValue?.startsWith("wf-hole:")){A.parentNode?.replaceChild(V,A),w.push(V),_(V);continue}let k=null;for(let M=E+1;M<d.length;M++){let P=d[M];if(P&&P.parentNode===e){k=P;break}}if(!k){let M=null;for(let P=w.length-1;P>=0;P--)if(w[P]){M=w[P];break}if(M&&M.parentNode===e&&(k=M.nextSibling),!k){let P=d[d.length-1];P&&P.parentNode===e&&(k=P.nextSibling)}}k&&k.parentNode===e?e.insertBefore(V,k):e.appendChild(V),w.push(V),_(V);continue}if(Array.isArray(v)){let V=o.browser??L();if(Array.isArray(C)){let P=Oe(d,E,e),fe=ie(e,C,v,o,P);w.push(...fe),_(fe[0]??null);continue}let A=I(v,o,V);if(A==null){w.push(null),_(null);continue}let k=d[E];k?.parentNode?k.parentNode.replaceChild(A,k):e.appendChild(A);let M=A.nodeType===11?Array.from(A.childNodes):[A];w.push(...M),_(M[0]??A);continue}if(Array.isArray(C)){let V=o.browser??L(),A=Oe(d,E,e);for(let P of A)P.parentNode?.removeChild(P);for(let P of C)P!=null&&typeof P=="object"&&!Array.isArray(P)&&typeof P.type=="function"&&K(P,o.registry);let k=I(v,o,V);if(k==null){w.push(null),_(null);continue}let M=d[E+1]??null;M?.parentNode?M.parentNode.insertBefore(k,M):e.appendChild(k),w.push(k),_(k);continue}let N=F(e,d[E],C,v,o),R=Ie(v,N);w.push(...R),_(R[0]??N??null)}return w}let g=new Map;a.forEach((p,w)=>{let _=se(p);_!==void 0&&p&&typeof p=="object"&&!Array.isArray(p)&&g.set(_,{vnode:p,nodes:[d[w]??null].filter(Boolean),index:w})});let h=[],x=new Set,b=p=>{i&&i.push(p)},m=null;return u.forEach((p,w)=>{let _=se(p),E=p;if(_!==void 0&&g.has(_)){let C=g.get(_),v=C.nodes[0]??null;x.add(_);let N=F(e,v,C.vnode,E,o),R=Ie(E,N),V=R[R.length-1]??N;V&&V.parentNode===e&&m&&V.previousSibling!==m&&e.insertBefore(V,m.nextSibling),h.push(...R),b(R[0]??N??null),V&&(m=V)}else{if(p==null||typeof p=="boolean"){let C=a[w]??null,v=d[w]??null,N=z(o.browser??L(),p);if(C==null||typeof C=="boolean")v?.nodeType===8?(N&&v.nodeValue!==N.nodeValue&&(v.nodeValue=N.nodeValue),h.push(v),b(v),v&&(m=v)):(N&&v?.parentNode?v.parentNode.replaceChild(N,v):N&&e.appendChild(N),h.push(N),b(N),N&&(m=N));else{if(typeof C=="object"&&!Array.isArray(C))if(typeof C.type=="function")K(C,o.registry);else try{O(C,o.registry)}catch(R){console.error("[weifuwu] ref cleanup error",R)}N&&v?.parentNode?v.parentNode.replaceChild(N,v):N&&e.appendChild(N),h.push(N),b(N),N&&(m=N)}return}if(E?._placement==="remote"){let C=a[w]??null,v=F(e,d[w]??null,C,E,o),N=Ie(E,v);h.push(...N),b(N[0]??v??null);let R=N[N.length-1]??v;R&&(m=R)}else{let C=I(E,o,o.browser??L());if(h.push(C),b(C??null),C!=null){let v=d[w];v&&v.nodeType===8&&v.nodeValue?.startsWith("wf-hole:")?(v.parentNode?.replaceChild(C,v),m=C):(m?e.insertBefore(C,m.nextSibling):e.insertBefore(C,e.firstChild),m=C)}}}}),a.forEach((p,w)=>{let _=se(p),E=p&&typeof p=="object"&&!Array.isArray(p)&&typeof p.type=="function";if(_!==void 0&&!x.has(_)){if(p&&typeof p=="object"&&!Array.isArray(p))if(E)K(p,o.registry);else try{O(p,o.registry)}catch(v){console.error("[weifuwu] ref cleanup error",v)}let C=d[w];C?.parentNode&&C.parentNode.removeChild(C)}else if(_===void 0){let C=w<u.length?u[w]:null,v=d[w];if(!(v?.nodeType===8&&v.nodeValue?.startsWith("wf-hole:"))||C==null){if(p&&typeof p=="object"&&!Array.isArray(p))if(E)K(p,o.registry);else try{O(p,o.registry)}catch(R){console.error("[weifuwu] ref cleanup error",R)}v?.parentNode&&v.parentNode.removeChild(v)}}}),h}function De(){return!!globalThis?.__WF_VDOM_AUDIT}function ve(e,n,t){if(n==null||n.length===0)return;let o=Array.from(e.childNodes);if(!n.some(r=>{if(r==null||typeof r!="object")return!1;if(Array.isArray(r))return!0;let i=r.type;return i===H||i===U}))for(let r=0;r<n.length;r++){let i=n[r];if(i==null||typeof i=="boolean"){let a=o[r];(!a||a.nodeType!==8||!a.nodeValue?.startsWith("wf-hole:"))&&t(`[audit] \u5360\u4F4D\u9519\u4F4D\uFF1A\u4F4D\u7F6E ${r} \u671F\u671B\u6CE8\u91CA(wf-hole)\uFF0C\u5B9E\u9645 ${a?.nodeName??"null"}\uFF08${e.nodeName}\uFF09`)}else if(typeof i=="string"||typeof i=="number"){let a=o[r];a&&a.nodeType!==3&&t(`[audit] \u6587\u672C\u9519\u4F4D\uFF1A\u4F4D\u7F6E ${r} \u671F\u671B\u6587\u672C\u8282\u70B9\uFF0C\u5B9E\u9645 ${a.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)){ve(e,n,t);for(let r of n)if(r!=null&&typeof r=="object"&&Array.isArray(r))for(let i of r)ne(e,i,t);else r!=null&&typeof r=="object"&&!Array.isArray(r)&&r.type===H&&ve(e,$(r.props?.children),t);return}let o=n;if(o.type===U)return;if(o.type===H){ve(e,$(o.props?.children),t);return}if(he(o.type))return;if(typeof o.type=="function"){let r=o._refNode;r&&r.parentNode!==e&&t(`[audit] \u7EC4\u4EF6\u951A\u70B9\u9519\u4F4D\uFF1A${o.type.name||"anonymous"} _refNode \u4E0D\u5728\u7236\u8282\u70B9\u5185`),o._child!=null&&ne(e,o._child,t);return}let s=o.el??o._refNode;if(s&&s.nodeType===1&&s.tagName.toLowerCase()!==String(o.type)&&t(`[audit] \u5143\u7D20\u7C7B\u578B\u9519\u4F4D\uFF1A\u671F\u671B <${String(o.type)}>\uFF0C\u5B9E\u9645 ${s.tagName}`),s&&s.nodeType===1&&!("innerHTML"in(o.props??{}))){ve(s,$(o.props?.children),t);for(let r of $(o.props?.children))r!=null&&typeof r=="object"&&!Array.isArray(r)&&typeof r.type=="function"&&ne(s,r,t)}}var fn=L();function pn(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 Ce(e,n,t=8){if(!n)return e;let o=n.getBoundingClientRect();if(o.width===0&&o.height===0)return e;let s=Number.parseFloat(n.style.top)||o.top,r=Number.parseFloat(n.style.left)||o.left,i=e.top-s,a=e.left-r,u={top:o.top+i,bottom:o.bottom+i,left:o.left+a,right:o.right+a},c=fn.viewportWidth(),l=fn.viewportHeight(),f=e.top,d=e.left;return u.bottom>l-t&&(f=Math.max(t,f-(u.bottom-(l-t)))),u.top<t&&(f=Math.max(t,f+(t-u.top))),u.right>c-t&&(d=Math.max(t,d-(u.right-(c-t)))),u.left<t&&(d=Math.max(t,d+(t-u.left))),{top:f,left:d,width:e.width}}var te=L();function mn(e){let n=new Map,t=new Map,o=!1,s=0;function r(){s||(s=requestAnimationFrame(()=>{s=0;let l=[];for(let[f,d]of n){if(!d.isOpen())continue;let y=d.getEl();if(!y)continue;let g=y.getBoundingClientRect();if(g.width===0&&g.height===0)continue;let h=d.compute(g);Object.assign(d.pos,Ce(h,d.panel?.(),d.margin)),l.push(f)}for(let[f,d]of t){let y=d.getScroller(),g=y instanceof Window?te.scrollingElement()?.scrollTop??te.scrollTop():y.scrollTop??0;g!==d.handle.y&&(d.handle.y=g,l.push(f))}l.length>0&&e(l)}))}function i(){o||(o=!0,te.addEventListener("scroll",r,{capture:!0,passive:!0}),te.addEventListener("resize",r))}function a(){o&&(te.removeEventListener("scroll",r,{capture:!0}),te.removeEventListener("resize",r),o=!1)}function u(l){for(let f of[...n.keys()])(f.startsWith(`popup:${l}:`)||f===`popup:${l}`||f===l)&&n.delete(f);t.delete(l)}function c(){a(),s&&(cancelAnimationFrame(s),s=0),n.clear(),t.clear()}return{popupTrackers:n,scrollTrackers:t,schedulePopupRecompute:r,ensurePopupListeners:i,destroyPopupListeners:a,cleanupTrackers:u,destroy:c}}function We(e,n,t){return s=>{s?n(s):t?.()}}function ae(e){return typeof window<"u"&&!!window.matchMedia?.("(hover: hover)").matches}function Ee(e){return typeof window<"u"&&!!window.matchMedia?.("(prefers-reduced-motion: reduce)").matches}function je(e,n,t){let o=null,s=()=>{n(),t?.once&&o&&o.removeEventListener("animationend",s)};return i=>{i?(o=i,i.addEventListener("animationend",s)):o&&(o.removeEventListener("animationend",s),o=null)}}function $e(e,n){let{onLongPress:t,duration:o=500}=n,s,r=0,i=0,a=null,u=()=>{clearTimeout(s),s=void 0},c=e.selfId();if(c){let l=e.onUnmount(f=>{f===c&&(u(),l())})}return{onPointerDown:l=>{r=l.clientX??0,i=l.clientY??0,a=l,u(),s=setTimeout(()=>{s=void 0,a&&t(a)},o)},onPointerUp:u,onPointerLeave:u,onPointerMove:l=>{let f=Math.abs((l.clientX??0)-r),d=Math.abs((l.clientY??0)-i);(f>10||d>10)&&u()},onContextMenu:l=>{l.preventDefault(),t(l)}}}function le(e,n){let t=e.selfId(),o="closed",s,r=()=>{o="closed",t?e.render([t]):e.render()};return{get phase(){return o},ref:a=>{a?s||(s=()=>{o==="exit"&&r()},a.addEventListener("animationend",s)):s=void 0},sync:a=>(a?o="open":o==="open"&&(o="exit"),o)}}function qe(e,n,t){let o=e.selfId(),s=Ee(e),r=t?.duration??400,i=t?.ease==="linear"?d=>d:d=>1-Math.pow(1-d,3),a,u=n,c={value:s?n:0,reset:()=>{}},l=()=>{o?e.render([o]):e.render()},f=d=>{if(u=d,s){c.value=d,l();return}if(d===c.value)return;a&&cancelAnimationFrame(a);let y=c.value,g=performance.now(),h=x=>{let b=Math.min(1,(x-g)/r);c.value=Math.round(y+(d-y)*i(b)),b<1?(a=requestAnimationFrame(h),l()):(a=void 0,l())};a=requestAnimationFrame(h)};if(c.reset=d=>{d===u&&a||f(d)},o){let d=e.onUnmount(y=>{y===o&&(a&&(cancelAnimationFrame(a),a=void 0),d())})}return queueMicrotask(()=>f(n)),c}function Fe(e,n,t){let o=e.selfId(),s=e.browser,r=`media:${o}:${n}`;if(!e.mediaRegistry.has(r)){let i=s.matchMedia(n);t(i.matches);let a=c=>t(c.matches);i.addEventListener("change",a),e.mediaRegistry.set(r,{mql:i,handler:a});let u=e.onUnmount(c=>{if(c!==o)return;let l=e.mediaRegistry.get(r);if(l?.mql&&l.handler)try{l.mql.removeEventListener("change",l.handler)}catch{}e.mediaRegistry.delete(r),u()})}}function Be(e,n,t){let o=e.browser,s=typeof n=="function"?{mobile:"(max-width: 639px)",tablet:"(min-width: 640px) and (max-width: 1023px)",desktop:"(min-width: 1024px)"}:n,r=typeof n=="function"?n:t,i=e.selfId(),a=`bp:${i}`;function u(){for(let[c,l]of Object.entries(s))if(o.matchMedia(l).matches)return c;return Object.keys(s)[0]??""}if(!e.mediaRegistry.has(a)){r(u());let c=[];for(let f of Object.values(s)){let d=o.matchMedia(f),y=()=>r(u());d.addEventListener("change",y),c.push({mql:d,handler:y})}e.mediaRegistry.set(a,{mqls:c});let l=e.onUnmount(f=>{if(f!==i)return;let d=e.mediaRegistry.get(a);if(d?.mqls)for(let y of d.mqls)try{y.mql.removeEventListener("change",y.handler)}catch{}e.mediaRegistry.delete(a),l()})}}function Ke(e){let n=e.selfId(),t=e.browser,o={height:t.viewportHeight(),offsetTop:0,keyboardOpen:!1},s=()=>{n?e.render([n]):e.render()},r=()=>{let a=t.visualViewport();o.height=a?.height??t.viewportHeight(),o.offsetTop=a?.offsetTop??0,o.keyboardOpen=o.height<t.viewportHeight()*.9,s()},i=t.visualViewport();if(i?.addEventListener?(i.addEventListener("resize",r),i.addEventListener("scroll",r)):t.addEventListener("resize",r),n){let a=e.onUnmount(u=>{u===n&&(i?.removeEventListener?(i.removeEventListener("resize",r),i.removeEventListener("scroll",r)):t.removeEventListener("resize",r),a())})}return o}function Ge(e,n){let t=e.selfId(),o={isIn:!1,ready:!1,observe:u,refresh:c,disconnect:l},s=null,r=null,i=()=>{t?e.render([t]):e.render()};function a(){if(r?.disconnect(),r=null,!s)return;let f=typeof n.rootMargin=="function"?n.rootMargin():n.rootMargin,d=typeof n.threshold=="function"?n.threshold():n.threshold;r=new IntersectionObserver(y=>{let g=y[y.length-1];if(!g)return;let h=g.isIntersecting,x=h!==o.isIn,b=!o.ready;o.isIn=h,o.ready=!0,n.onChange?.(g,h),(x||b)&&i()},{root:n.root?n.root():null,rootMargin:f??"0px",threshold:d??0}),r.observe(s)}function u(f){s=f,f?a():(r?.disconnect(),r=null,o.isIn=!1)}function c(){a()}function l(){r?.disconnect(),r=null}if(t){let f=e.onUnmount(d=>{d===t&&(l(),f())})}return o}function ze(e,n){let t=e.selfId(),o=e.browser,s={y:0,refresh(){let a=r.getScroller();s.y=a instanceof Window?o.scrollingElement()?.scrollTop??o.scrollTop():a.scrollTop??0}},r={handle:s,getScroller:n.getScroller??(()=>window)};if(!t)return s.refresh(),s;e.scrollTrackers.set(t,r),e.ensurePopupListeners(),s.refresh();let i=e.onUnmount(a=>{a===t&&(e.scrollTrackers.delete(t),i())});return s}function Te(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 r=e.onUnmount(i=>{i===t&&(e.uncontrolledValues.delete(t),r())})}let s=r=>{if(o){n.onChange?.(r);return}t&&e.uncontrolledValues.set(t,r),t?e.render([t]):e.render()};return{value:o?n.value:t?e.uncontrolledValues.get(t):n.value,setValue:s,controlled:o}}function Ye(e,n){let t=e.selfId(),o=Te(e,{value:n.value,onChange:n.onChange,name:n.name});if(t&&!e.inputStates.has(t)){e.inputStates.set(t,{keyword:"",selectedLabel:""});let i=e.onUnmount(a=>{a===t&&(e.inputStates.delete(t),i())})}let s=t?e.inputStates.get(t):{keyword:"",selectedLabel:""},r=()=>{t?e.render([t]):e.render()};return{...o,get keyword(){return s.keyword},setKeyword(i){s.keyword=i,r()},get selectedLabel(){return s.selectedLabel},setSelectedLabel(i){s.selectedLabel=i,r()}}}function Je(e,n){let t=e.selfId(),o=!1;if(t){let u=e.onUnmount(c=>{c===t&&(o=!0,u())})}let s=()=>{o||(t?e.render([t]):e.render())},r={data:void 0,loading:!1,error:void 0},i=0,a=()=>{let u=++i;r.loading=!0,r.error=null,s(),Promise.resolve().then(()=>n()).then(c=>{i===u&&(r.data=c,r.loading=!1,s())}).catch(c=>{i===u&&(r.error=c,r.loading=!1,s())})};return a(),r.reload=a,r}function Xe(e,n){let t=e.selfId(),o=e.browser;if(typeof window>"u")return()=>{};if(o.addEventListener("keydown",n),t){let s=e.onUnmount(r=>{r===t&&(o.removeEventListener("keydown",n),s())})}return()=>o.removeEventListener("keydown",n)}function Qe(e,n){let t=e.browser,o=0,s=0,r=!1,i=l=>{r&&n.onMove(l,{x:l.clientX-o,y:l.clientY-s})},a=l=>{r&&(r=!1,t.removeEventListener("pointermove",i),t.removeEventListener("pointerup",a),n.onEnd?.(l))},u=l=>{r||(l.preventDefault(),r=!0,o=l.clientX,s=l.clientY,t.addEventListener("pointermove",i),t.addEventListener("pointerup",a),n.onStart?.(l))},c=e.selfId();if(c){let l=e.onUnmount(f=>{f===c&&(r&&(t.removeEventListener("pointermove",i),t.removeEventListener("pointerup",a),r=!1),l())})}return{onPointerDown:u}}function Ze(e,n){let t={};n.onDrop&&(t.onDrop=s=>{s.preventDefault(),n.onDrop(s)}),n.onDragOver&&(t.onDragOver=s=>{s.preventDefault(),n.onDragOver(s)}),n.onDragLeave&&(t.onDragLeave=s=>n.onDragLeave(s));let o={draggable:!0};if(n.onDragStart){let s=n.onDragStart;o.onDragStart=r=>{typeof document<"u"&&document.body.classList.add("wf-dragging"),s(r)}}if(n.onDragEnd){let s=n.onDragEnd;o.onDragEnd=r=>{typeof document<"u"&&document.body.classList.remove("wf-dragging"),s(r)}}return{dropProps:t,dragProps:o}}function Ne(e,n){let t=e.selfId(),o={top:0,left:0,refresh:()=>{}};if(!t)return o;let s={pos:o,getEl:n.el,isOpen:n.isOpen,compute:n.compute,panel:n.panel,margin:n.margin??8};e.popupTrackers.set(t,s),e.ensurePopupListeners();let r=e.onUnmount(i=>{i===t&&(e.popupTrackers.delete(t),r())});return o.refresh=()=>{let i=s.getEl();if(!i)return;let a=i.getBoundingClientRect();if(a.width===0&&a.height===0)return;let u=s.compute(a);Object.assign(o,Ce(u,s.panel?.(),s.margin))},o}function en(e,n){let t=e.selfId(),o=e.browser,s=ae(e),r=()=>typeof n.trigger=="function"?n.trigger():n.trigger??"manual",i=n.open!==void 0,a=()=>!!n.disabled?.(),u=()=>i?typeof n.open=="function"?!!n.open():!!n.open:n.isOpen(),c=n.presence?le(e,{name:n.name}):null,l,f=!1,d=T=>{if(!c)return T?"open":"closed";let S=c.sync(T);return T&&n.lockScroll&&!f&&($n(),f=!0),S},y=T=>{a()||(i?n.onOpenChange?.(T):c?T?d(!0):u()&&d(!1):n.setOpen(T))},g=()=>{let T=n.placement;return typeof T=="function"?T():T??"bottom"},h=null,x=!1,b=Ne(e,{el:n.el??(()=>null),isOpen:()=>u(),compute:T=>{if(n.position){let S=n.position();return{top:S.y,left:S.x,width:S.width}}return pn(T,g(),n.gap??6,n.center!==!1)},panel:()=>h,margin:n.margin??8}),m=T=>{if(n.closeOnOutside===!1||n.mask||!u())return;let S=T.target;if(!(S instanceof Node))return;let j=n.el?.()??null;j&&j.contains(S)||h&&h.contains(S)||y(!1)},p=T=>{n.closeOnEscape!==!1&&(T.key!=="Escape"||!u()||y(!1))};if(o.addEventListener("mousedown",m),o.addEventListener("keydown",p),t){let T=e.onUnmount(S=>{S===t&&(o.removeEventListener("mousedown",m),o.removeEventListener("keydown",p),T())})}let w={},_=T=>typeof T=="function"?T():T??0,E=()=>_(n.openDelay),C=()=>_(n.closeDelay),v,N,R=()=>{clearTimeout(v),clearTimeout(N),v=void 0,N=void 0},V=T=>{if(a())return;let S=T.currentTarget,j=T.relatedTarget;S.contains(j)||(clearTimeout(N),N=void 0,v=setTimeout(()=>{v=void 0,y(!0)},E()))},A=T=>{if(a())return;let S=T.currentTarget,j=T.relatedTarget;S.contains(j)||(clearTimeout(v),v=void 0,N=setTimeout(()=>{N=void 0,y(!1)},C()))},k=()=>{a()||(clearTimeout(N),N=void 0,v=setTimeout(()=>{v=void 0,y(!0)},E()))},M=()=>{a()||(clearTimeout(v),v=void 0,N=setTimeout(()=>{N=void 0,y(!1)},C()))},P=()=>r()==="hover";if(w.onMouseOver=T=>{P()&&V(T)},w.onMouseOut=T=>{P()&&A(T)},w.onClick=()=>{P()?s||y(!u()):r()==="click"&&y(!0)},w.onFocus=()=>{P()?k():r()==="focus"&&(clearTimeout(N),N=void 0,y(!0))},w.onBlur=()=>{P()?M():r()==="focus"&&(clearTimeout(v),v=void 0,N=setTimeout(()=>{N=void 0,y(!1)},C()))},r()==="longpress"){let T,S=0,j=0,B=()=>{clearTimeout(T),T=void 0};w.onPointerDown=D=>{a()||(S=D.clientX??0,j=D.clientY??0,B(),T=setTimeout(()=>{T=void 0,n.onTrigger?.({clientX:S,clientY:j}),y(!0)},n.longPressDuration??500))},w.onPointerUp=B,w.onPointerLeave=B,w.onPointerMove=D=>{let Pe=Math.abs((D.clientX??0)-S),Ae=Math.abs((D.clientY??0)-j);(Pe>10||Ae>10)&&B()},w.onContextMenu=D=>{D.preventDefault(),n.onTrigger?.({clientX:D.clientX??0,clientY:D.clientY??0}),y(!0)}}if(w.onKeyDown=T=>{T.key==="Escape"&&n.closeOnEscape!==!1&&y(!1)},t){let T=e.onUnmount(S=>{S===t&&(R(),T())})}let fe=T=>{if(T){h=T;let S=()=>b.refresh();T.addEventListener("animationend",S,{once:!0})}else h=null},_e=null,ke=null,an=T=>{fe(T),ke&&ke(T),c?.ref(T),n.trapFocus&&(T?l=Bn(T):(l?.(),l=void 0)),n.lockScroll&&!T&&f&&(qn(),f=!1)};return{get open(){return u()},setOpen:y,get phase(){return c?c.phase:u()?"open":"closed"},sync:d,wrapProps:w,portal:(T,S="popover")=>{if(a())return null;if(!(c?c.phase!=="closed":u()))return x=!1,_e=null,null;let B=n.el?.()??null;(!x||B!==_e)&&(B?b.refresh():queueMicrotask(()=>{u()&&b.refresh()}),x=!0,_e=B);let D=T.props??{};ke=D.ref??null;let Pe=n.positioning==="none"?D.class??"":["wf-popup",D.class].filter(Boolean).join(" "),Ae=n.positioning==="none"?{...D.style??{},position:"fixed"}:{...D.style??{},position:"fixed",top:`${b.top}px`,left:`${b.left}px`,...b.width!==void 0?{width:`${b.width}px`}:{},maxWidth:(()=>{let pe=typeof n.width=="function"?n.width():n.width;return pe!==void 0?`min(${pe}px, calc(100vw - 32px))`:"calc(100vw - 32px)"})()},X={...T,props:{...D,class:Pe,style:Ae,ref:an}};if(n.mask){let pe=typeof n.mask=="object"?n.mask:G("div",{class:"wf-popup-mask","data-portal-mask":S,onClick:n.maskClosable===!1?void 0:()=>y(!1)}),Nn=n.maskCentered?G("div",{class:"wf-cover",style:{"--wf-z":"var(--wf-z-popover)",pointerEvents:"none"}},{...X,props:{...X.props,style:{...D.style??{},pointerEvents:"auto"},ref:an}}):null,Vn=n.maskCentered?void 0:{...X.props?.style??{},zIndex:"var(--wf-z-popover)"},_n=n.maskCentered?Nn:{...X,props:{...X.props,style:Vn}};return me([pe,_n],S)}return me(X,S)},refresh:()=>b.refresh()}}function nn(e,n){let t=e.selfId();if(t&&!e.openStates.has(t)){e.openStates.set(t,!1);let a=e.onUnmount(u=>{u===t&&(e.openStates.delete(t),a())})}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 s=()=>o?!!n.open:t?e.openStates.get(t)??!1:!1,r=()=>{t?e.render([t]):e.render()},i=a=>{if(o){n.onOpenChange?.(a);return}t&&e.openStates.set(t,a),r()};return{get open(){return s()},setOpen:i,triggerProps:{onClick:()=>i(!0),onFocus:()=>{n.openOnFocus&&i(!0)}}}}var Y=L(),ue=0,yn="",gn="",hn="",bn="",xe=0;function wn(){return typeof window<"u"&&typeof document<"u"}function $n(){if(ue++,ue>1||!wn())return;xe=Y.scrollTop();let e=Y.bodyElement();yn=e.style.overflow,gn=e.style.position,hn=e.style.top,bn=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=`-${xe}px`,e.style.width="100%")}function qn(){if(ue===0||(ue--,ue>0)||!wn())return;let e=Y.bodyElement();e.style.overflow=yn,e.style.position=gn,e.style.top=hn,e.style.width=bn,xe>0&&Y.scrollTo(xe)}var Fn='a[href], button:not([disabled]), input:not([disabled]), textarea:not([disabled]), select:not([disabled]), [tabindex]:not([tabindex="-1"])';function Bn(e){let n;return queueMicrotask(()=>{let t=e.querySelectorAll(Fn);if(t.length===0)return;let o=t[0],s=t[t.length-1],r=a=>{a.key==="Tab"&&(a.shiftKey&&Y.activeElement()===o?(a.preventDefault(),s.focus()):!a.shiftKey&&Y.activeElement()===s&&(a.preventDefault(),o.focus()))},i=Y.activeElement();o.focus(),e.addEventListener("keydown",r),n=()=>{e.removeEventListener("keydown",r),i?.focus()}}),()=>n?.()}function Kn(e){return e.map(n=>{let t={role:n.role,content:n.content};return n.reasoning&&(t.reasoning_content=n.reasoning),t})}function tn(){return typeof crypto<"u"&&typeof crypto.randomUUID=="function"?crypto.randomUUID():`msg-${Date.now()}-${Math.random().toString(36).slice(2,10)}`}function vn(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 s=null;function r(){if(!e.streaming)return;let g=e.messages[e.messages.length-1];return g&&g.role==="assistant"&&g.status==="streaming"?g:void 0}function i(g,h,x){let b=r();switch(g){case"wf:token":b&&(b.content+=h.text);break;case"wf:tool_call":{b&&(b.toolCalls||(b.toolCalls=[]),b.toolCalls.push({call:h,status:"running"}));break}case"wf:tool_progress":{let m=h,p=b?.toolCalls?.find(w=>w.call.id===m.toolCallId);p&&(p.progress=m);break}case"wf:tool_result":{let m=h,p=b?.toolCalls?.find(w=>w.call.id===m.id);p&&(p.result=m,p.status=m.ok?"ok":"error");break}case"wf:approval_request":b&&(b.approval=h);break;case"wf:usage":b&&(b.usage=h);break;case"wf:step":e.step=h;break;case"wf:done":if(b){b.status="done",b.approval=void 0;let m=h;m.reasoning&&(b.reasoning=m.reasoning)}e.streaming=!1,e.step=null;break;case"wf:error":b&&(b.status="error",b.error=h,b.approval=void 0),e.error=h,e.streaming=!1,e.step=null;break;default:x?.(g,h);break}o?.()}function a(){let g=t.body?t.body(e.messages):{messages:Kn(e.messages)};s=n(t.url,g,{onToken:x=>i("wf:token",{text:x}),onToolCall:x=>i("wf:tool_call",x),onToolProgress:x=>i("wf:tool_progress",x),onToolResult:x=>i("wf:tool_result",x),onApproval:x=>i("wf:approval_request",x),onUsage:x=>i("wf:usage",x),onStep:x=>i("wf:step",x),onDone:x=>i("wf:done",x),onError:x=>i("wf:error",x),onEvent:(x,b)=>i(x,b,t.onEvent)},{signal:t.signal,headers:t.headers}),e.streaming=!0;let h=r();h&&s?.traceId&&(h.id=s.traceId)}function u(){if(e.streaming)return;let g=String(e.input??"").trim();g&&(e.input="",e.error=null,e.usage=null,e.step=null,e.messages.push({id:tn(),role:"user",content:g,status:"done"},{id:tn(),role:"assistant",content:"",status:"streaming",toolCalls:[]}),a(),o?.())}function c(){s?.abort(),e.streaming=!1,e.step=null;let g=e.messages[e.messages.length-1];g&&g.role==="assistant"&&g.status==="streaming"&&(!g.content&&(!g.toolCalls||g.toolCalls.length===0)?e.messages.pop():g.status="done"),o?.()}function l(){if(e.streaming)return;let g=-1;for(let h=e.messages.length-1;h>=0;h--)if(e.messages[h].role==="user"){g=h;break}g!==-1&&(e.messages.splice(g+1),e.error=null,e.usage=null,e.step=null,e.messages.push({id:tn(),role:"assistant",content:"",status:"streaming",toolCalls:[]}),a(),o?.())}function f(){s?.abort(),e.messages=[],e.input="",e.streaming=!1,e.error=null,e.usage=null,e.step=null,o?.()}async function d(g,h,x){let b=e.messages[e.messages.length-1],m=b?.role==="assistant"?b.approval:void 0;if(m&&(b.approval=void 0,o?.(),!!t.approveUrl))try{await fetch(t.approveUrl,{method:"POST",headers:{"Content-Type":"application/json",...t.headers},body:JSON.stringify(x?{id:m.id,decision:g,note:h,modifiedArgs:x}:{id:m.id,decision:g,note:h}),signal:t.signal})}catch(p){if(t.signal?.aborted)return;e.error={code:"provider_error",message:p instanceof Error?p.message:String(p)},o?.()}}function y(){s?.abort(),s=null}return{send:u,stop:c,retry:l,clear:f,approve:d,dispose:y}}function Cn(e,n,t){let o=new AbortController,s=t?.signal;s&&(s.aborted?o.abort():s.addEventListener("abort",()=>o.abort(),{once:!0}));let r=t?.traceId??Xn(),i=t?.record!==!1,a=[],u=(async()=>{let c;try{c=await fetch(e,{method:"POST",headers:{"Content-Type":"application/json","X-Trace-Id":r,Accept:"text/event-stream",...t?.headers},body:JSON.stringify(n),signal:o.signal})}catch(l){if(o.signal.aborted)return;t?.onError?.({code:"provider_error",message:l instanceof Error?l.message:String(l)});return}if(!c.ok){t?.onError?.({code:Jn(c.status),message:`HTTP ${c.status} ${c.statusText}`});return}try{for await(let{name:l,data:f}of zn(c.body)){if(o.signal.aborted)return;Yn(a,{name:l,data:f},i),Gn(l,f,t??{})}}catch(l){if(o.signal.aborted)return;t?.onError?.({code:"provider_error",message:l instanceof Error?l.message:String(l)})}})();return{abort:()=>o.abort(),done:u,traceId:r,events:a}}function Gn(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*zn(e){let n=e.getReader(),t=new TextDecoder,o="";try{for(;;){let{done:s,value:r}=await n.read();if(s)break;o+=t.decode(r,{stream:!0});let i=o.split(`
|
|
4
4
|
|
|
5
|
-
`);
|
|
6
|
-
`))a.startsWith("event: ")?u=a.slice(7):a.startsWith("data: ")&&(d+=a.slice(6));if(d)try{yield{name:u,data:JSON.parse(d)}}catch{}}}}finally{n.releaseLock()}}function In(e,n,t){t&&(e.length>=1e3&&e.shift(),e.push(n))}function On(e){return e===401||e===403?"auth_failed":e===429?"rate_limited":e>=500?"provider_error":"invalid_request"}function Un(){return typeof crypto<"u"&&typeof crypto.randomUUID=="function"?crypto.randomUUID():`trace-${Date.now()}-${Math.random().toString(36).slice(2,10)}`}function Fe(e,n){let t={messages:[],input:"",streaming:!1,error:null,usage:null,step:null},r=new Set,s=on(t,sn,n,()=>{for(let l of[...r])l()});Object.assign(t,s),t.subscribe=l=>(r.add(l),()=>{r.delete(l)});let i=e.selfId();if(i){let l=e.onUnmount(u=>{u===i&&(s.dispose(),l())})}return t}function Be(e,n){let t=e.selfId(),r;return t&&(r=n.subscribe(()=>e.render([t])),e.onUnmount(()=>r?.())),n}function an(e){let n=new Map;async function t(s){let i=n.get(s);if(i)return await i,n.has(s)?void 0:t(s);let l=r(s);n.set(s,l);try{await l}finally{n.delete(s)}}async function r(s){let i=e.registry.idRegistry.get(s);if(!(!i||typeof i._render!="function"))try{let l={browser:e.ctx.browser,registry:e.registry,ctxVersion:e.ctx?.ui?._ctxVersion??0},u=await i._render(i.props),d=await M(u,e.ctx,i._child,e.registry)??null,a=i._child;i._child=d;let c=i._parentNode??i._refNode?.parentNode??e.rootEl??null;if(c){let p=O(c,i._refNode??null,a,d,l);p?i._refNode=p:i._refNode=null}}catch(l){e.onError?e.onError(l):console.error("[weifuwu] render error:",l?.stack??l)}}function o(s){if(s==null){let i=e.ctx.ui?._selfId;return i?t(i):Promise.resolve()}return Promise.all(s.map(i=>t(i))).then(()=>{})}return{render:o}}function fe(e){let n=e.registry??Te(),t={_selfId:"_wf_root",_mounting:!1,_ctxVersion:0,_rootVNodeId:void 0},r={browser:e.browser,__registry:n},o=e.renderer??an({registry:n,ctx:r,rootEl:e.root}),s=!1;t.render=function(f){if(f==null){let h=this._selfId!=="_wf_root"&&this._selfId?this._selfId:t._rootVNodeId;return h?o.render([h]):(s||(s=!0,console.warn("[weifuwu] render() \u65E0\u53C2\u4F46\u65E0\u6E32\u67D3\u76EE\u6807\uFF1A\u9875\u9762\u6839\u662F native vnode\uFF08UIHandler \u76F4\u63A5\u8FD4\u56DE vnode \u7684\u9875\u9762\u5F62\u6001\uFF09\uFF0C\u5185\u90E8\u72B6\u6001\u6E32\u67D3\u65E0\u6548\u3002\u6539\u7528 async \u7EC4\u4EF6\u5F62\u6001\uFF08const Page: Component = async ... => (props) => ...\uFF09\u6216 createStore + useExternal \u5171\u4EAB\u72B6\u6001\u3002")),Promise.resolve())}return o.render(f)},t.setMounting=f=>{t._mounting=f},t.endMounting=()=>{t._mounting=!1},r.ui=t;let i=Qe(f=>{for(let h of f)o.render([h])}),{mediaRegistry:l,popupTrackers:u,scrollTrackers:d,ensurePopupListeners:a,destroyPopupListeners:c,cleanupTrackers:p}=i;Ne(n,f=>{p(f),u.has(f)&&u.delete(f)});let w=new Set,b=new Map,m=new Map,g=new Map,y=f=>({selfId:()=>{let h=f?._selfVNode?._id??f?._selfId;return typeof h=="string"?h:void 0},render:h=>o.render(h),browser:e.browser,onUnmount:h=>Ne(n,h),registry:n,mediaRegistry:l,popupTrackers:u,scrollTrackers:d,isMounting:()=>t._mounting===!0,warned:w,uncontrolledValues:b,inputStates:m,openStates:g,ensurePopupListeners:a});return t.bumpCtxVersion=()=>{t._ctxVersion=(t._ctxVersion??0)+1},t.selfId=function(f){if(typeof f!="string"||!f)throw new Error(`[weifuwu] selfId requires a non-empty string, got ${typeof f}`);if(n.idRegistry.has(f))throw new Error(`[weifuwu] Duplicate component ID: "${f}". Each component must have a unique custom ID.`);let h=this._selfVNode;h&&(h._customId=f,n.idRegistry.set(f,h))},t.useChat=function(f){return Fe(y(this),f)},t.useMedia=function(f,h){return Re(y(this),f,h)},t.useBreakpoint=function(f,h){return Ae(y(this),f,h)},t.usePopupPosition=function(f){return ce(y(this),f)},t.useHoverCapable=function(){return J(y(this))},t.useStableRef=function(f,h){return Ve(y(this),f,h)},t.useVisualViewport=function(){return Me(y(this))},t.usePopup=function(f){return je(y(this),f)},t.useLongPress=function(f){return ke(y(this),f)},t.useInView=function(f){return Le(y(this),f)},t.useScrollPosition=function(f){return He(y(this),f)},t.useAsync=function(f){return Oe(y(this),f)},t.useControlled=function(f){return ue(y(this),f)},t.useControlledInput=function(f){return Ie(y(this),f)},t.useOpen=function(f){return $e(y(this),f)},t.usePresence=function(f){return Q(y(this),f)},t.useGlobalKey=function(f){return Ue(y(this),f)},t.useDrag=function(f){return We(y(this),f)},t.useDragDrop=function(f){return De(y(this),f)},t.useExternal=function(f){return Be(y(this),f)},t.useReducedMotion=function(){return le(y(this))},t.useAnimationEnd=function(f,h){return _e(y(this),f,h)},t.useTween=function(f,h){return Se(y(this),f,h)},t.destroyPopupListeners=c,{ctx:r,registry:n,renderer:o,rootUi:t,destroyPopupListeners:c}}function Wn(e){let{ctx:n,registry:t,renderer:r,rootUi:o,destroyPopupListeners:s}=fe(e),i=null,l=null;return{ctx:n,registry:t,renderer:r,async mount(d){i=d;let a=await M(d,n,void 0,t);e.root.innerHTML="";let c=S(a,n,e.browser);c!=null&&e.root.appendChild(c),l=a?._child??a,o._rootVNodeId=a?._id},async rerender(){if(i==null)return;let d=await M(i,n,i,t,{force:!0}),a=i,c=l,p=a._child,w=e.root.firstChild;O(e.root,w,c,p,{browser:e.browser,registry:t,ctxVersion:n?.ui?._ctxVersion??0,force:!0}),l=p},unmount(){for(let[,d]of t.idRegistry)try{R(d,t)}catch(a){console.error("[weifuwu] unmount ref error",a)}e.root.innerHTML="",t.idRegistry.clear(),s()}}}function Dn(e){return e.__registry??(e.__registry=Te())}function jn(e,n,t,r){let o=Dn(t),s=t.browser??_();return Promise.resolve(M(n,t,void 0,o)).then(()=>{let i=S(n,t,s);if(i!=null&&e.appendChild(i),n._id&&o){let l=o.idRegistry.get(n._id);l&&(l._parentNode=e)}r?.onMounted?.()}).catch(i=>console.error("[weifuwu] command mount error",i)),{id:n._id??""}}function $n(e,n,t){let r=t.__registry;n&&r&&(R(n,r),n._id&&oe(r,n._id)),e.remove()}function qn(){let e=_(),n=e.createElement("div");return n?(e.bodyAppend(n),n):null}function Fn(e,n){let t=_(),r=typeof n.root=="string"?t.query(n.root):n.root;if(!r)throw new Error(`uiServe: root not found: ${n.root}`);let o=r;!n.hydrate&&!n.loading&&(o.innerHTML="");let{ctx:i,registry:l,renderer:u,rootUi:d,destroyPopupListeners:a}=fe({browser:t,root:o}),c=new Map,p=globalThis.__DATA__??window.__DATA__;if(p&&typeof p=="object")for(let[C,T]of Object.entries(p))c.set(C,{value:T});i.data={async get(C,T){let E=c.get(C);if(E&&"value"in E)return E.value;if(E?.promise)return E.promise;if(!T)return;let V=Promise.resolve().then(()=>T()).then(W=>(c.set(C,{value:W}),W));return c.set(C,{promise:V}),V},set(C,T){c.set(C,{value:T})},has(C){return c.has(C)}},i.route={params:{},query:{},path:""};let w=null,b="",m=0,g,y=new Promise(C=>{g=C}),f=!1;async function h(C,T){let E=++m,V={pathname:C,search:""};i.route.path=C;let W;try{W=await e.execute(V,i,C)}catch(A){W=j("div",{class:"ui-dom-error"},`\u9875\u9762\u6E32\u67D3\u5931\u8D25: ${A?.message??String(A)}`)}if(f||E!==m)return;let U;try{U=await M(W,i,w,l)}catch(A){U=j("div",{class:"ui-dom-error"},`\u7EC4\u4EF6\u6E32\u67D3\u5931\u8D25: ${A?.message??String(A)}`)}if(!(f||E!==m)){if(T){o.innerHTML="";let A=S(U,i,t);A!=null&&o.appendChild(A)}else if(w!==void 0){let A=w;w=U;let me=A?.el??A?._refNode??null;O(o,me,A,U,{browser:t,registry:l,ctxVersion:i?.ui?._ctxVersion??0})}w=U,b=C,d._rootVNodeId=U?._id}}let x=t.pathname();h(x,!0).finally(()=>{f||g()});let P=()=>{let C=t.pathname();C!==b&&h(C,!1)};return t.addEventListener("popstate",P),{close(){f=!0,t.removeEventListener("popstate",P),a(),l.idRegistry.clear()},ready:y,ctx:i}}function Ke(e){e.node=e.node?e.node.nextSibling:null}function Bn(e,n){e.node&&e.node.parentNode?e.node.parentNode.insertBefore(n,e.node):e.parent.appendChild(n)}function Kn(e,n){e.node&&e.node.parentNode?(e.node.parentNode.replaceChild(n,e.node),Ke(e)):e.parent.appendChild(n)}function zn(e,n){for(let[t,r]of Object.entries(n))t==="children"||t==="key"||t==="innerHTML"||Y(e,t,r)}function ee(e,n,t){let r=n.browser??_();if(e==null||typeof e=="boolean")return null;if(typeof e=="string"||typeof e=="number"){let u=String(e);if(t.node&&t.node.nodeType===3)return t.node.textContent!==u&&(t.node.textContent=u),Ke(t),t.node;let d=r.createTextNode(u);return Bn(t,d),d}if(Array.isArray(e)){let u=null;for(let d of e){let a=ee(d,n,t);a!=null&&!u&&(u=a)}return u}let o=e;if(o.type===H||o.type===L){let u=o.props?.children,d=u==null?[]:Array.isArray(u)?u:[u],a=null;for(let c of d){let p=ee(c,n,t);p!=null&&!a&&(a=p)}return a}if(typeof o.type=="function"){let u=o._child;if(u==null){if(typeof o._render!="function")throw new Error(`[vdom] component ${o.type.name||"anonymous"} not built before hydration`);return o._child=null,null}let d=ee(u,n,t);return o._refNode||(o._refNode=d),d}let s=o.type,i=o.props??{},l;if(t.node&&t.node.nodeType===1&&t.node.tagName.toLowerCase()===s.toLowerCase()?(l=t.node,Ke(t)):(l=Ee.has(s)?r.createElementNS("http://www.w3.org/2000/svg",s):r.createElement(s),Kn(t,l)),o.el=l,zn(l,i),!("innerHTML"in i)){let u={parent:l,node:l.firstChild},d=(Array.isArray(i.children)?i.children:[i.children]).flat(1/0);for(let a of d){let c=ee(a,n,u);if(c!=null&&c.parentNode!==l&&l.appendChild(c),a&&typeof a=="object"&&!Array.isArray(a)&&typeof a.type=="function"){let p=a;p._parentNode||(p._parentNode=l,p._refNode=c)}}for(;u.node;){let a=u.node;u.node=a.nextSibling,a.parentNode?.removeChild(a)}}return"value"in i&&l instanceof HTMLSelectElement&&(l.value=String(i.value??"")),l}async function Gn(e,n,t){let r=t.__registry;await M(n,t,void 0,r);let o={parent:e,node:e.firstChild};for(ee(n,t,o);o.node;){let s=o.node;o.node=s.nextSibling,s.parentNode?.removeChild(s)}}var Yn=new Set(["area","base","br","col","embed","hr","img","input","link","meta","param","source","track","wbr"]),Xn=new Set(["svg","path","circle","rect","line","polyline","polygon","g","text","defs","use","clipPath"]);function pe(e){return e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")}function Jn(e){return typeof e=="string"?e:Array.isArray(e)?e.filter(Boolean).join(" "):e&&typeof e=="object"?Object.entries(e).filter(([,n])=>n).map(([n])=>n).join(" "):""}function Qn(e){return Object.entries(e).filter(([,n])=>n!=null).map(([n,t])=>{let r=n.replace(/[A-Z]/g,s=>"-"+s.toLowerCase()),o=typeof t=="number"&&t!==0?`${t}px`:String(t);return`${r}:${o}`}).join(";")}async function z(e,n){if(e==null||typeof e=="boolean")return"";if(typeof e=="string"||typeof e=="number")return pe(String(e));if(Array.isArray(e))return(await Promise.all(e.map(c=>z(c,n)))).join("");let t=e;if(t.type===H||t.type===L)return z(t.props?.children,n);if(typeof t.type=="function"){let a=Object.create(n),c=await t.type(t.props??{},a);if(typeof c!="function")throw new Error(`Component ${t.type.name||"anonymous"} must return a render function. Use (init_props, ctx) => (props) => VNode pattern.`);return z(await c(t.props??{}),a)}let r=t.type,o=t.props??{},s=[],i;for(let[a,c]of Object.entries(o))if(!(a==="children"||a==="key")&&a!=="ref"&&!(a.startsWith("on")&&typeof c=="function")){if(a==="innerHTML"){i=String(c??"");continue}if(a==="class"||a==="className"){let p=Jn(c);p&&s.push(` class="${pe(p)}"`);continue}if(a==="style"&&c&&typeof c=="object"){s.push(` style="${pe(Qn(c))}"`);continue}if(a==="draggable"||a==="contenteditable"||a==="spellcheck"){s.push(` ${a}="${c?"true":"false"}"`);continue}if(c===!0){s.push(` ${a}`);continue}c===!1||c==null||s.push(` ${a}="${pe(String(c))}"`)}let l=s.join(""),u=Xn.has(r);if(Yn.has(r))return`<${r}${l}>`;if(i!==void 0)return`<${r}${l}>${i}</${r}>`;let d=await z(o.children,n);return u?`<${r}${l}>${d}</${r}>`:`<${r}${l}>${d}</${r}>`}function Zn(){let e=()=>()=>{},n=()=>({});return{_selfId:"_wf_root",render:()=>{},selfId:()=>{},bumpCtxVersion:()=>{},setMounting:()=>{},endMounting:()=>{},useChat:()=>({messages:[],input:"",streaming:!1,error:null,usage:null,step:null,send:()=>{},stop:()=>{},retry:()=>{},clear:()=>{},approve:()=>{},subscribe:()=>()=>{}}),useExternal:t=>t,useMedia:e,useBreakpoint:e,usePopupPosition:()=>({top:0,left:0,refresh:()=>{}}),useHoverCapable:()=>!1,useStableRef:t=>r=>{r&&t?.(r)},useVisualViewport:()=>({height:0,offsetTop:0,keyboardOpen:!1}),usePopup:()=>({open:!1,setOpen:()=>{},phase:"closed",sync:t=>t?"open":"closed",wrapProps:{},portal:t=>t,refresh:()=>{}}),useLongPress:n,useInView:()=>({isIn:!1,ready:!1,observe:()=>{},refresh:()=>{},disconnect:()=>{}}),useScrollPosition:()=>({y:0,refresh:()=>{}}),useAsync:()=>({data:void 0,loading:!0,error:void 0,reload:()=>{}}),useControlled:()=>({value:void 0,setValue:()=>{},controlled:!1}),useControlledInput:()=>({value:void 0,setValue:()=>{},keyword:"",setKeyword:()=>{},selectedLabel:"",setSelectedLabel:()=>{},controlled:!1}),useOpen:()=>({open:!1,setOpen:()=>{},triggerProps:{}}),usePresence:()=>({phase:"closed",ref:()=>{},sync:()=>"closed"}),useGlobalKey:()=>()=>{},useDrag:n,useDragDrop:()=>({dropProps:{},dragProps:{}}),useReducedMotion:()=>!0,useAnimationEnd:()=>()=>{},useTween:t=>{let r=t;return{get value(){return r},set value(o){r=o},reset:o=>(o!==void 0&&(r=o),r)}}}}function ln(e,n){let t={...e,ui:Zn(),browser:void 0},r=new Map;return t.data={async get(o,s){let i=r.get(o);if(i&&"value"in i)return i.value;if(i?.promise)return i.promise;if(!s)return;let l=Promise.resolve().then(()=>s()).then(u=>(r.set(o,{value:u}),n.set(o,u),u));return r.set(o,{promise:l}),l},set(o,s){r.set(o,{value:s}),n.set(o,s)},has(o){return r.has(o)}},t}function un(e){return`<script>window.__DATA__=${JSON.stringify(Object.fromEntries(e)).replace(/</g,"\\u003c")};<\/script>`}async function et(e,n){let t=new Map,o=ln({params:{},query:{}},t),s=n.url.split("?")[0].split("#")[0],i=e.match(s);o.params=i.params,o.query=Object.fromEntries(new URLSearchParams(n.url.split("?")[1]??""));let l=new URL(n.url.startsWith("http")?n.url:`http://localhost${n.url.startsWith("/")?n.url:"/"+n.url}`),u=await e.execute(l,o,s),d=await z(u,o),a=un(t),c=i.title??n.title??"",p=n.rootId??"root",w=(n.styles??[]).map(m=>` <link rel="stylesheet" href="${m}">`).join(`
|
|
7
|
-
`),
|
|
5
|
+
`);o=i.pop()??"";for(let a of i){let u="message",c="";for(let l of a.split(`
|
|
6
|
+
`))l.startsWith("event: ")?u=l.slice(7):l.startsWith("data: ")&&(c+=l.slice(6));if(c)try{yield{name:u,data:JSON.parse(c)}}catch{}}}}finally{n.releaseLock()}}function Yn(e,n,t){t&&(e.length>=1e3&&e.shift(),e.push(n))}function Jn(e){return e===401||e===403?"auth_failed":e===429?"rate_limited":e>=500?"provider_error":"invalid_request"}function Xn(){return typeof crypto<"u"&&typeof crypto.randomUUID=="function"?crypto.randomUUID():`trace-${Date.now()}-${Math.random().toString(36).slice(2,10)}`}function on(e,n){let t={messages:[],input:"",streaming:!1,error:null,usage:null,step:null},o=new Set,r=vn(t,Cn,n,()=>{for(let a of[...o])a()});Object.assign(t,r),t.subscribe=a=>(o.add(a),()=>{o.delete(a)});let i=e.selfId();if(i){let a=e.onUnmount(u=>{u===i&&(r.dispose(),a())})}return t}function rn(e,n){let t=e.selfId(),o;return t&&(o=n.subscribe(()=>e.render([t])),e.onUnmount(()=>o?.())),n}function En(e){let n=new Map;async function t(r){let i=n.get(r);if(i)return await i,n.has(r)?void 0:t(r);let a=o(r);n.set(r,a);try{await a}finally{n.delete(r)}}async function o(r){let i=e.registry.idRegistry.get(r);if(!i||typeof i._render!="function")return;let a=!!globalThis?.__WF_VDOM_DEBUG;try{let u={browser:e.ctx.browser,registry:e.registry,ctxVersion:e.ctx?.ui?._ctxVersion??0};a&&console.log(`[vdom/trace] render id=${r} comp=${i.type?.name||"?"}`);let c=await i._render(i.props),l=await W(c,e.ctx,i._child,e.registry)??null,f=i._child;i._child=l;let d=i._parentNode??i._refNode?.parentNode??e.rootEl??null;if(d){let y=F(d,i._refNode??null,f,l,u);if(y?i._refNode=y:i._refNode=null,a&&console.log(`[vdom/trace] patch parent=${d.nodeName} ref=${i._refNode?.nodeName??"null"}`),De())try{let g=[];ne(d,l,h=>g.push(h)),g.length?console.error("[weifuwu/audit] "+g.join(" | ")):a&&console.log("[vdom/trace] audit \u2713 \u4E00\u81F4")}catch(g){console.error("[weifuwu/audit] \u6821\u9A8C\u5F02\u5E38:",g)}}}catch(u){e.onError?e.onError(u):console.error("[weifuwu] render error:",u?.stack??u)}}function s(r){if(r==null){let i=e.ctx.ui?._selfId;return i?t(i):Promise.resolve()}return Promise.all(r.map(i=>t(i))).then(()=>{})}return{render:s}}function Ve(e){let n=e.registry??Ue(),t={_selfId:"_wf_root",_mounting:!1,_ctxVersion:0,_rootVNodeId:void 0},o={browser:e.browser,__registry:n};o.app={navigate:m=>e.browser.navigate(m)};let s=e.renderer??En({registry:n,ctx:o,rootEl:e.root}),r=!1;t.render=function(m){if(m==null){let p=this._selfId!=="_wf_root"&&this._selfId?this._selfId:t._rootVNodeId;return p?s.render([p]):(r||(r=!0,console.warn("[weifuwu] render() \u65E0\u53C2\u4F46\u65E0\u6E32\u67D3\u76EE\u6807\uFF1A\u9875\u9762\u6839\u662F native vnode\uFF08UIHandler \u76F4\u63A5\u8FD4\u56DE vnode \u7684\u9875\u9762\u5F62\u6001\uFF09\uFF0C\u5185\u90E8\u72B6\u6001\u6E32\u67D3\u65E0\u6548\u3002\u6539\u7528 async \u7EC4\u4EF6\u5F62\u6001\uFF08const Page: Component = async ... => (props) => ...\uFF09\u6216 createStore + useExternal \u5171\u4EAB\u72B6\u6001\u3002")),Promise.resolve())}return s.render(m)},t.setMounting=m=>{t._mounting=m},t.endMounting=()=>{t._mounting=!1},t.onUnmount=function(m){let p=this?._selfVNode?._id??this?._selfId;if(p)return be(n,w=>{w===p&&m()})},o.ui=t;let i=mn(m=>{for(let p of m)s.render([p])}),a=new Map,{popupTrackers:u,scrollTrackers:c,ensurePopupListeners:l,destroyPopupListeners:f,cleanupTrackers:d}=i;be(n,m=>{d(m),u.has(m)&&u.delete(m)});let y=new Set,g=new Map,h=new Map,x=new Map,b=m=>({selfId:()=>{let p=m?._selfVNode?._id??m?._selfId;return typeof p=="string"?p:void 0},render:p=>s.render(p),browser:e.browser,onUnmount:p=>be(n,p),registry:n,mediaRegistry:a,popupTrackers:u,scrollTrackers:c,isMounting:()=>t._mounting===!0,warned:y,uncontrolledValues:g,inputStates:h,openStates:x,ensurePopupListeners:l});return t.bumpCtxVersion=()=>{t._ctxVersion=(t._ctxVersion??0)+1},t.selfId=function(m){if(typeof m!="string"||!m)throw new Error(`[weifuwu] selfId requires a non-empty string, got ${typeof m}`);if(n.idRegistry.has(m))throw new Error(`[weifuwu] Duplicate component ID: "${m}". Each component must have a unique custom ID.`);let p=this._selfVNode;p&&(p._customId=m,n.idRegistry.set(m,p))},t.useChat=function(m){return on(b(this),m)},t.useMedia=function(m,p){return Fe(b(this),m,p)},t.useBreakpoint=function(m,p){return Be(b(this),m,p)},t.usePopupPosition=function(m){return Ne(b(this),m)},t.useHoverCapable=function(){return ae(b(this))},t.useStableRef=function(m,p){return We(b(this),m,p)},t.useVisualViewport=function(){return Ke(b(this))},t.usePopup=function(m){return en(b(this),m)},t.useLongPress=function(m){return $e(b(this),m)},t.useInView=function(m){return Ge(b(this),m)},t.useScrollPosition=function(m){return ze(b(this),m)},t.useAsync=function(m){return Je(b(this),m)},t.useControlled=function(m){return Te(b(this),m)},t.useControlledInput=function(m){return Ye(b(this),m)},t.useOpen=function(m){return nn(b(this),m)},t.usePresence=function(m){return le(b(this),m)},t.useGlobalKey=function(m){return Xe(b(this),m)},t.useDrag=function(m){return Qe(b(this),m)},t.useDragDrop=function(m){return Ze(b(this),m)},t.useExternal=function(m){return rn(b(this),m)},t.useReducedMotion=function(){return Ee(b(this))},t.useAnimationEnd=function(m,p){return je(b(this),m,p)},t.useTween=function(m,p){return qe(b(this),m,p)},t.destroyPopupListeners=f,{ctx:o,registry:n,renderer:s,rootUi:t,destroyPopupListeners:f}}function Qn(e){let{ctx:n,registry:t,renderer:o,rootUi:s,destroyPopupListeners:r}=Ve(e),i=null,a=null;return{ctx:n,registry:t,renderer:o,async mount(c){i=c;let l=await W(c,n,void 0,t);e.root.innerHTML="";let f=I(l,n,e.browser);if(f!=null&&e.root.appendChild(f),De())try{let d=[];ne(e.root,l,y=>d.push(y)),d.length&&console.error("[weifuwu/audit] "+d.join(" | "))}catch(d){console.error("[weifuwu/audit] \u6821\u9A8C\u5F02\u5E38:",d)}a=l?._child??l,s._rootVNodeId=l?._id},async rerender(){if(i==null)return;let c=await W(i,n,i,t,{force:!0}),l=i,f=a,d=l._child,y=e.root.firstChild;F(e.root,y,f,d,{browser:e.browser,registry:t,ctxVersion:n?.ui?._ctxVersion??0,force:!0}),a=d},unmount(){for(let[,c]of t.idRegistry)try{O(c,t)}catch(l){console.error("[weifuwu] unmount ref error",l)}e.root.innerHTML="",t.idRegistry.clear(),r()}}}function Zn(e){return e.__registry??(e.__registry=Ue())}function et(e,n,t,o){let s=Zn(t),r=t.browser??L();return Promise.resolve(W(n,t,void 0,s)).then(()=>{let i=I(n,t,r);if(i!=null&&e.appendChild(i),n._id&&s){let a=s.idRegistry.get(n._id);a&&(a._parentNode=e)}o?.onMounted?.()}).catch(i=>console.error("[weifuwu] command mount error",i)),{id:n._id??""}}function nt(e,n,t){let o=t.__registry;n&&o&&(O(n,o),n._id&&we(o,n._id)),e.remove()}function tt(){let e=L(),n=e.createElement("div");return n?(e.bodyAppend(n),n):null}function ot(e,n){let t=L(),o=typeof n.root=="string"?t.query(n.root):n.root;if(!o)throw new Error(`uiServe: root not found: ${n.root}`);let s=o;!n.hydrate&&!n.loading&&(s.innerHTML="");try{(new URLSearchParams(globalThis?.location?.search??"").get("vdom_debug")==="1"||globalThis?.localStorage?.getItem?.("__WF_VDOM_DEBUG")==="1")&&(globalThis.__WF_VDOM_DEBUG=!0,globalThis.__WF_VDOM_AUDIT=!0,console.log("[weifuwu] vdom debug + audit \u5DF2\u5F00\u542F\uFF08?vdom_debug=1\uFF09"))}catch{}let{ctx:i,registry:a,renderer:u,rootUi:c,destroyPopupListeners:l}=Ve({browser:t,root:s}),f=new Map,d=globalThis.__DATA__??window.__DATA__;if(d&&typeof d=="object")for(let[E,C]of Object.entries(d))f.set(E,{value:C});i.data={async get(E,C){let v=f.get(E);if(v&&"value"in v)return v.value;if(v?.promise)return v.promise;if(!C)return;let N=Promise.resolve().then(()=>C()).then(R=>(f.set(E,{value:R}),R));return f.set(E,{promise:N}),N},set(E,C){f.set(E,{value:C})},has(E){return f.has(E)}},i.route={params:{},query:{},path:""};let y=null,g="",h=0,x,b=new Promise(E=>{x=E}),m=!1;async function p(E,C){let v=++h,N={pathname:E,search:""};i.route.path=E;let R;try{R=await e.execute(N,i,E)}catch(A){R=G("div",{class:"ui-dom-error"},`\u9875\u9762\u6E32\u67D3\u5931\u8D25: ${A?.message??String(A)}`)}if(m||v!==h)return;let V;try{V=await W(R,i,y,a)}catch(A){V=G("div",{class:"ui-dom-error"},`\u7EC4\u4EF6\u6E32\u67D3\u5931\u8D25: ${A?.message??String(A)}`)}if(!(m||v!==h)){if(C){s.innerHTML="";let A=I(V,i,t);A!=null&&s.appendChild(A)}else if(y!==void 0){let A=y;y=V;let k=A?.el??A?._refNode??null;F(s,k,A,V,{browser:t,registry:a,ctxVersion:i?.ui?._ctxVersion??0})}y=V,g=E,c._rootVNodeId=V?._id}}let w=t.pathname();p(w,!0).finally(()=>{m||x()});let _=()=>{let E=t.pathname();E!==g&&p(E,!1)};return t.addEventListener("popstate",_),{close(){m=!0,t.removeEventListener("popstate",_),l(),a.idRegistry.clear()},ready:b,ctx:i}}function sn(e){e.node=e.node?e.node.nextSibling:null}function rt(e,n){e.node&&e.node.parentNode?e.node.parentNode.insertBefore(n,e.node):e.parent.appendChild(n)}function st(e,n){e.node&&e.node.parentNode?(e.node.parentNode.replaceChild(n,e.node),sn(e)):e.parent.appendChild(n)}function it(e,n){for(let[t,o]of Object.entries(n))t==="children"||t==="key"||t==="innerHTML"||ee(e,t,o)}function de(e,n,t){let o=n.browser??L();if(e==null||typeof e=="boolean")return null;if(typeof e=="string"||typeof e=="number"){let u=String(e);if(t.node&&t.node.nodeType===3)return t.node.textContent!==u&&(t.node.textContent=u),sn(t),t.node;let c=o.createTextNode(u);return rt(t,c),c}if(Array.isArray(e)){let u=null;for(let c of e){let l=de(c,n,t);l!=null&&!u&&(u=l)}return u}let s=e;if(s.type===U||s.type===H){let u=s.props?.children,c=u==null?[]:Array.isArray(u)?u:[u],l=null;for(let f of c){let d=de(f,n,t);d!=null&&!l&&(l=d)}return l}if(typeof s.type=="function"){let u=s._child;if(u==null){if(typeof s._render!="function")throw new Error(`[vdom] component ${s.type.name||"anonymous"} not built before hydration`);return s._child=null,null}let c=de(u,n,t);return s._refNode||(s._refNode=c),c}let r=s.type,i=s.props??{},a;if(t.node&&t.node.nodeType===1&&t.node.tagName.toLowerCase()===r.toLowerCase()?(a=t.node,sn(t)):(a=He.has(r)?o.createElementNS("http://www.w3.org/2000/svg",r):o.createElement(r),st(t,a)),s.el=a,it(a,i),!("innerHTML"in i)){let u={parent:a,node:a.firstChild},c=(Array.isArray(i.children)?i.children:[i.children]).flat(1/0);for(let l of c){let f=de(l,n,u);if(f!=null&&f.parentNode!==a&&a.appendChild(f),l&&typeof l=="object"&&!Array.isArray(l)&&typeof l.type=="function"){let d=l;d._parentNode||(d._parentNode=a,d._refNode=f)}}for(;u.node;){let l=u.node;u.node=l.nextSibling,l.parentNode?.removeChild(l)}}return"value"in i&&a instanceof HTMLSelectElement&&(a.value=String(i.value??"")),a}async function at(e,n,t){let o=t.__registry;await W(n,t,void 0,o);let s={parent:e,node:e.firstChild};for(de(n,t,s);s.node;){let r=s.node;s.node=r.nextSibling,r.parentNode?.removeChild(r)}}var lt=new Set(["area","base","br","col","embed","hr","img","input","link","meta","param","source","track","wbr"]),ut=new Set(["svg","path","circle","rect","line","polyline","polygon","g","text","defs","use","clipPath"]);function ce(e){return e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")}function dt(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 ct(e){return Object.entries(e).filter(([,n])=>n!=null).map(([n,t])=>{let o=n.replace(/[A-Z]/g,r=>"-"+r.toLowerCase()),s=typeof t=="number"&&t!==0?`${t}px`:String(t);return`${o}:${s}`}).join(";")}async function J(e,n){if(e==null||typeof e=="boolean")return"";if(typeof e=="string"||typeof e=="number")return ce(String(e));if(Array.isArray(e)){dn(e);let l=n._fidPath;return(await Promise.all(e.map(async(d,y)=>{let g=l!=null?`${l}-${y}`:String(y);if(d==null||typeof d=="boolean")return Promise.resolve(`<!--${q({type:"hole",value:d})}-->`);if(Array.isArray(d)){let h=await J(d,{...n,_fidPath:g});return`<!--${q({type:"fragment-start",key:String(y),fid:g})}-->${h}<!--${q({type:"fragment-end",key:String(y),fid:g})}-->`}return J(d,n)}))).join("")}let t=e;if(he(t.type))return console.warn(`[weifuwu] children \u9879\u975E\u6CD5\uFF1Atype=${String(t.type)}\uFF08${typeof t.type}\uFF09\u2014\u2014\u5DF2\u5360\u4F4D\uFF08wf-hole\uFF09`),`<!--${q({type:"hole",value:e})}-->`;if(t.type===U||t.type===H)return J(t.props?.children,n);if(typeof t.type=="function"){let l=Object.create(n);delete l._fidPath;let f=await t.type(t.props??{},l);if(typeof f!="function")throw new Error(`Component ${t.type.name||"anonymous"} must return a render function. Use (init_props, ctx) => (props) => VNode pattern.`);let d=await f(t.props??{});if(t.key!=null&&d!=null&&typeof d=="object")if(Array.isArray(d))for(let y of d)y!=null&&typeof y=="object"&&!Array.isArray(y)&&(y.key=t.key);else d.key=t.key;return J(d,l)}let o=t.type,s=t.props??{},r=[],i;t.key!=null&&r.push(` data-wf-key="${ce(String(t.key))}"`);for(let[l,f]of Object.entries(s))if(!(l==="children"||l==="key")&&l!=="ref"&&!(l.startsWith("on")&&typeof f=="function")){if(l==="innerHTML"){i=String(f??"");continue}if(l==="class"||l==="className"){let d=dt(f);d&&r.push(` class="${ce(d)}"`);continue}if(l==="style"&&f&&typeof f=="object"){r.push(` style="${ce(ct(f))}"`);continue}if(re.has(l)){r.push(` ${l}="${f?"true":"false"}"`);continue}if(f===!0){r.push(` ${l}`);continue}f===!1||f==null||r.push(` ${l}="${ce(String(f))}"`)}let a=r.join(""),u=ut.has(o);if(lt.has(o))return`<${o}${a}>`;if(i!==void 0)return`<${o}${a}>${i}</${o}>`;let c=await J(s.children,n);return u?`<${o}${a}>${c}</${o}>`:`<${o}${a}>${c}</${o}>`}function ft(){let e=()=>()=>{},n=()=>({});return{_selfId:"_wf_root",render:()=>{},selfId:()=>{},bumpCtxVersion:()=>{},setMounting:()=>{},endMounting:()=>{},onUnmount:()=>{},useChat:()=>({messages:[],input:"",streaming:!1,error:null,usage:null,step:null,send:()=>{},stop:()=>{},retry:()=>{},clear:()=>{},approve:()=>{},subscribe:()=>()=>{}}),useExternal:t=>t,useMedia:e,useBreakpoint:e,usePopupPosition:()=>({top:0,left:0,refresh:()=>{}}),useHoverCapable:()=>!1,useStableRef:t=>o=>{o&&t?.(o)},useVisualViewport:()=>({height:0,offsetTop:0,keyboardOpen:!1}),usePopup:()=>({open:!1,setOpen:()=>{},phase:"closed",sync:t=>t?"open":"closed",wrapProps:{},portal:t=>t,refresh:()=>{}}),useLongPress:n,useInView:()=>({isIn:!1,ready:!1,observe:()=>{},refresh:()=>{},disconnect:()=>{}}),useScrollPosition:()=>({y:0,refresh:()=>{}}),useAsync:()=>({data:void 0,loading:!0,error:void 0,reload:()=>{}}),useControlled:()=>({value:void 0,setValue:()=>{},controlled:!1}),useControlledInput:()=>({value:void 0,setValue:()=>{},keyword:"",setKeyword:()=>{},selectedLabel:"",setSelectedLabel:()=>{},controlled:!1}),useOpen:()=>({open:!1,setOpen:()=>{},triggerProps:{}}),usePresence:()=>({phase:"closed",ref:()=>{},sync:()=>"closed"}),useGlobalKey:()=>()=>{},useDrag:n,useDragDrop:()=>({dropProps:{},dragProps:{}}),useReducedMotion:()=>!0,useAnimationEnd:()=>()=>{},useTween:t=>{let o=t;return{get value(){return o},set value(s){o=s},reset:s=>(s!==void 0&&(o=s),o)}}}}function Tn(e,n){let t={...e,ui:ft(),browser:void 0},o=new Map;return t.data={async get(s,r){let i=o.get(s);if(i&&"value"in i)return i.value;if(i?.promise)return i.promise;if(!r)return;let a=Promise.resolve().then(()=>r()).then(u=>(o.set(s,{value:u}),n.set(s,u),u));return o.set(s,{promise:a}),a},set(s,r){o.set(s,{value:r}),n.set(s,r)},has(s){return o.has(s)}},t}function xn(e){return`<script>window.__DATA__=${JSON.stringify(Object.fromEntries(e)).replace(/</g,"\\u003c")};<\/script>`}async function pt(e,n){let t=new Map,s=Tn({params:{},query:{}},t),r=n.url.split("?")[0].split("#")[0],i=e.match(r);s.params=i.params,s.query=Object.fromEntries(new URLSearchParams(n.url.split("?")[1]??""));let a=new URL(n.url.startsWith("http")?n.url:`http://localhost${n.url.startsWith("/")?n.url:"/"+n.url}`),u=await e.execute(a,s,r),c=await J(u,s),l=xn(t),f=i.title??n.title??"",d=n.rootId??"root",y=(n.styles??[]).map(h=>` <link rel="stylesheet" href="${h}">`).join(`
|
|
7
|
+
`),g=`<!DOCTYPE html>
|
|
8
8
|
<html lang="${n.lang??"zh-CN"}">
|
|
9
9
|
<head>
|
|
10
10
|
<meta charset="UTF-8">
|
|
11
11
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
12
|
-
${
|
|
13
|
-
${
|
|
12
|
+
${f?`<title>${f}</title>`:""}
|
|
13
|
+
${y}
|
|
14
14
|
</head>
|
|
15
15
|
<body>
|
|
16
|
-
<div id="${
|
|
17
|
-
${
|
|
16
|
+
<div id="${d}">${c}</div>
|
|
17
|
+
${l}
|
|
18
18
|
<script src="/app.js"><\/script>
|
|
19
19
|
</body>
|
|
20
|
-
</html>`;return{html:
|
|
20
|
+
</html>`;return{html:c,dataScript:l,page:g}}async function mt(e,n,t,o={}){let s=o.data??new Map,r=Tn(t,s);return J({type:e,props:n??{},key:void 0},r)}function yt(e){let n={...e},t=new Set,o=()=>{for(let s of[...t])s()};return{state:n,subscribe(s){return t.add(s),()=>{t.delete(s)}},set(s){Object.assign(n,s),o()},update(s){s(n),o()},notify:o}}export{H as Fragment,U as Portal,Se as UIRouter,Sn as animateOut,Rn as api,Hn as auth,W as buildVNode,L as createClientBrowser,tt as createCommandContainer,me as createPortal,En as createRenderer,yt as createStore,Ve as createVdomContext,G as h,at as hydrateVNode,Re as jsx,An as jsxDEV,Pn as jsxs,et as mountCommand,Qn as mountRoot,F as patchValue,I as renderValue,xn as serializeData,pt as ssrPage,mt as ssrToString,ot as uiServe,nt as unmountCommand,Un as ws};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
var r=Symbol("Fragment");function o(e,t,n){return{type:e,props:
|
|
1
|
+
var r=Symbol("Fragment");function o(e,t,n){return{type:e,props:l(t),key:n??void 0}}var i=o;function d(e,t,n){return o(e,t,n)}function l(e){if(!e)return{};let t={};for(let n of Object.keys(e))n!=="key"&&(t[n]=e[n]);return t}export{r as Fragment,o as jsx,d as jsxDEV,i as jsxs};
|
package/dist/ui-dom/testing.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var P=Symbol("Fragment"),T=Symbol("Portal");function S(e){if(e==null||typeof e=="boolean")return[];if(Array.isArray(e)){let n=!1;for(let o=0;o<e.length;o++)if(Array.isArray(e[o])){n=!0;break}if(!n)return e;let t=[],r=[...e].reverse();for(;r.length>0;){let o=r.pop();if(Array.isArray(o))for(let i=o.length-1;i>=0;i--)r.push(o[i]);else t.push(o)}return t}return[e]}function q(e,n){if(e===n)return!0;let t=Object.keys(e),r=Object.keys(n);if(t.length!==r.length)return!1;for(let o of t)if(e[o]!==n[o])return!1;return!0}async function K(e,n,t,r){e._id||(r?.reuse?._id?e._id=r.reuse._id:e._id=t.nextId(),t.idRegistry.set(e._id,e)),r?.reuse&&(r.reuse._parentNode&&(e._parentNode=r.reuse._parentNode),r.reuse._refNode&&(e._refNode=r.reuse._refNode),r.reuse._ctxVersion!=null&&(e._ctxVersion=r.reuse._ctxVersion));let o=Object.create(n);o.ui=Object.create(n.ui);let i=o.ui;if(i._selfId=e._id,i._selfVNode=e,i.render=function(s){return s==null&&e._id?n.ui.render([e._id]):n.ui.render(s)},typeof e._render!="function"&&typeof r?.reuse?._render=="function"&&(e._render=r.reuse._render),typeof e._render!="function"){n.ui?.setMounting?.(!0);let s;try{s=await e.type(e.props??{},o)}finally{n.ui?.endMounting?.()}if(typeof s!="function")throw new Error(`Component ${e.type.name||"anonymous"} must return a render function. Use (init_props, ctx) => (props) => VNode pattern.`);e._render=s}return{renderFn:e._render,childCtx:o}}function O(e){return!!e&&typeof e.then=="function"}function E(e,n,t,r,o){if(e==null||typeof e=="boolean"||typeof e=="string"||typeof e=="number")return e;if(Array.isArray(e)){let u=Array.isArray(t)?t:[],l=e.map((y,g)=>E(y,n,u[g],r,o)),d=!1;for(let y=0;y<l.length;y++)if(O(l[y])){d=!0;break}return d?Promise.all(l).then(()=>e):e}let i=e,s=r??n.__registry,f=t!=null&&typeof t=="object"&&!Array.isArray(t)&&t.type===i.type?t:null;if(typeof i.type=="function"){i._id||(i._id=f?._id??s.nextId(),s.idRegistry.set(i._id,i)),f&&(f._parentNode&&(i._parentNode=f._parentNode),f._refNode&&(i._refNode=f._refNode),f._ctxVersion!=null&&(i._ctxVersion=f._ctxVersion),typeof f._render=="function"&&(i._render=f._render));let u=q(f?.props??{},i.props??{}),l=n?.ui?._ctxVersion??0,d=(f?._ctxVersion??-1)===l;return!o?.force&&u&&d&&f?._child!=null?(i._child=f._child,i._ctxVersion=f._ctxVersion,i):(async()=>{let{childCtx:y}=await K(i,n,s,{reuse:f??void 0}),g=await E(await i._render(i.props),y,f?._child,s);return i._child=g??null,i._ctxVersion=l,i})()}if(i.type===P){let u=E(i.props?.children??null,n,f?._child??f?.props?.children,s);return O(u)?u.then(l=>(i._child=l??null,i)):(i._child=u??null,i)}if(typeof i.type=="string"||typeof i.type=="symbol"){let u=E(i.props?.children??null,n,f?.props?.children,s);return O(u)?u.then(l=>(i._child=l??null,i)):(i._child=u??null,i)}return i}var z=new Set(["svg","path","circle","rect","line","polyline","polygon","g","text","defs","use","clipPath"]),j=/^on[A-Z]/,G=new Set(["zIndex","opacity","lineHeight","fontWeight","fontSizeAdjust","flex","flexGrow","flexShrink","order","zoom","aspectRatio","gridRow","gridColumn","scale","rotate","animationIterationCount","columnCount","fillOpacity","strokeOpacity","stopOpacity","floodOpacity"]);function D(e,n,t){if(t==null||t===!1)return;let r=e.ownerDocument?.defaultView;if(n==="class"||n==="className"){if(typeof t=="object")for(let[o,i]of Object.entries(t))i&&e.classList.add(o);else e.setAttribute("class",String(t));return}if(n==="style"){if(typeof t=="string")e.setAttribute("style",t);else{let o=e.style;for(let[i,s]of Object.entries(t))s==null?o[i]="":i.startsWith("--")?o.setProperty(i,String(s)):typeof s=="number"&&!G.has(i)?o[i]=`${s}px`:o[i]=String(s)}return}if(n==="ref"){if(typeof t=="function")try{t(e)}catch(o){console.error("[weifuwu] ref error",o)}return}if(j.test(n)){let o=n.slice(2).toLowerCase();if(typeof t!="function"){console.warn(`[weifuwu] event prop ${n} expects a function, got ${typeof t} \u2014 ignored`);return}e.addEventListener(o,t);return}if(n==="value"){e.value=t;return}if(n==="indeterminate"){e.indeterminate=!!t;return}if(n==="innerHTML"){e.innerHTML=String(t??"");return}if(n==="draggable"||n==="contenteditable"||n==="spellcheck"){e.setAttribute(n,t?"true":"false");return}if(n.startsWith("aria-")&&typeof t=="boolean"){e.setAttribute(n,t?"true":"false");return}if(t===!0){e.setAttribute(n,"");return}try{e[n]=t,e.getAttribute(n)!==String(t)&&e.setAttribute(n,String(t))}catch{e.setAttribute(n,String(t))}}function C(e,n,t){let r=n?.browser??t;if(!r)throw new Error("[vdom] renderValue requires browser env (ctx.browser)");if(e==null||typeof e=="boolean")return null;if(typeof e=="string"||typeof e=="number")return r.createTextNode(String(e));if(Array.isArray(e)){let u=r.createDocumentFragment();if(!u)return null;for(let l of e){let d=C(l,n,r);d!=null&&u.appendChild(d)}return u}let o=e;if(o.type===T){let u=r.bodyElement();if(!u)return null;let l=u.querySelector("#__wf_portal");l||(l=r.createElement("div"),l&&(l.id="__wf_portal",u.appendChild(l)));let d=r.createElement("div");if(d){d.setAttribute("data-portal",String(o.props?.portalKey??"wf"));let y=C(o.props?.children??null,n,r);y!=null&&d.appendChild(y),l&&l.appendChild(d),o._remoteEl=d}return null}if(o.type===P){let u=r.createDocumentFragment();if(!u)return null;for(let l of S(o.props?.children)){let d=C(l,n,r);d!=null&&u.appendChild(d)}return o._childNodes=Array.from(u.childNodes),u}if(typeof o.type=="function"){if(typeof o._render!="function")throw new Error(`[vdom] component ${o.type.name||"anonymous"} not built (missing _render) \u2014 buildVNode must run before renderValue`);if(o._child===void 0)throw new Error(`[vdom] component ${o.type.name||"anonymous"} not built (missing _child) \u2014 buildVNode must run before renderValue`);let u=o._child;if(u==null)return o._child=null,null;let l=(Array.isArray(u)||typeof u=="object"&&typeof u.type=="function",u);o._child=l,typeof l=="object"&&!Array.isArray(l)&&(l._parentVNode=o);let d=C(l,n,r);return d&&(o._refNode=d),d}let i=o.type,s=z.has(i)?r.createElementNS("http://www.w3.org/2000/svg",i):r.createElement(i);if(!s)return null;o.el=s;let f;for(let[u,l]of Object.entries(o.props??{}))if(!(u==="children"||u==="key")){if(u==="value"&&s instanceof HTMLSelectElement){f=l;continue}D(s,u,l)}if(!("innerHTML"in(o.props??{})))for(let u of S(o.props?.children)){let l=C(u,n,r);if(l!=null&&(s.appendChild(l),u&&typeof u=="object"&&!Array.isArray(u)&&typeof u.type=="function")){let d=u;d._parentNode||(d._parentNode=s,d._refNode=l)}}return f!==void 0&&(s.value=String(f)),s}function v(){return{activeElement:()=>typeof document<"u"?document.activeElement:null,byId:e=>typeof document<"u"?document.getElementById(e):null,query:e=>typeof document<"u"?document.querySelector(e):null,queryAll:e=>typeof document<"u"?document.querySelectorAll(e):null,createElement:e=>typeof document<"u"?document.createElement(e):null,createElementNS:(e,n)=>typeof document<"u"?document.createElementNS(e,n):null,createDocumentFragment:()=>typeof document<"u"?document.createDocumentFragment():null,createComment:e=>typeof document<"u"?document.createComment(e):null,createTextNode:e=>typeof document<"u"?document.createTextNode(e):null,addEventListener:(e,n,t)=>{typeof window<"u"&&window.addEventListener(e,n,t)},removeEventListener:(e,n,t)=>{typeof window<"u"&&window.removeEventListener(e,n,t)},scrollTo:e=>{typeof window<"u"&&window.scrollTo(0,e)},matchMedia:e=>typeof window<"u"&&typeof window.matchMedia=="function"?window.matchMedia(e):null,visualViewport:()=>(typeof window<"u"?window:null)?.visualViewport??null,scrollingElement:()=>typeof document<"u"?document.scrollingElement:null,bodyElement:()=>typeof document<"u"?document.body:null,bodyAppend:e=>{typeof document<"u"&&document.body.appendChild(e)},bodyRemove:e=>{typeof document<"u"&&e.parentNode&&document.body.removeChild(e)},clearBody:()=>{typeof document<"u"&&(document.body.innerHTML="")},event:(e,n)=>{let t=typeof window<"u"?window:null,r=n&&(n.key||n.code)?"KeyboardEvent":n&&(n.clientX!==void 0||n.clientY!==void 0||n.pointerId!==void 0)?"PointerEvent":"Event";try{return new t[r](e,n)}catch{return new t.Event(e,n)}},dispatchEvent:(e,n)=>typeof e<"u"?e.dispatchEvent(n):!1,navigate:e=>{typeof window>"u"||(window.history.pushState(null,"",e),window.dispatchEvent(new PopStateEvent("popstate",{state:null})))},copyText:async e=>{let n=typeof window<"u"?window:null;if(n?.navigator?.clipboard?.writeText)try{return await n.navigator.clipboard.writeText(e),!0}catch{}try{if(typeof document>"u")return!1;let t=document.createElement("textarea");t.value=e,t.style.position="fixed",t.style.opacity="0",document.body.appendChild(t),t.select();let r=document.execCommand("copy");return document.body.removeChild(t),r}catch{return!1}},execCommand:(e,n)=>typeof document<"u"?document.execCommand(e,!1,n):!1,queryCommandState:e=>typeof document<"u"?document.queryCommandState(e):!1,queryCommandValue:e=>typeof document<"u"?document.queryCommandValue(e):"",selectionText:()=>typeof window<"u"?window.getSelection?.()?.toString()??null:null,getSelection:()=>typeof window<"u"?window.getSelection():null,viewportHeight:()=>typeof window<"u"?window.innerHeight:0,viewportWidth:()=>typeof window<"u"?window.innerWidth:0,pathname:()=>typeof window<"u"?window.location.pathname:"",createTreeWalker:(e,n)=>typeof document<"u"?document.createTreeWalker(e,n??NodeFilter.SHOW_ALL):null,scrollTop:()=>{let e=typeof document<"u"?document:null,n=typeof window<"u"?window:null;return e?.scrollingElement?.scrollTop??n?.scrollY??0},hash:()=>typeof window<"u"?window.location?.hash??"":"",setHash:e=>{typeof window<"u"&&(window.location.hash=e)},timeout:(e,n)=>typeof window<"u"?window.setTimeout(e,n):0,rootElement:()=>typeof document<"u"?document.documentElement:null,storageGet:e=>{try{return typeof window<"u"?window.localStorage?.getItem(e)??null:null}catch{return null}},storageSet:(e,n)=>{try{typeof window<"u"&&window.localStorage?.setItem(e,n)}catch{}}}}var X=0;function L(){return{idRegistry:new Map,unmountHooks:[],nextId:()=>`_wf_${X++}`}}function B(e,n){for(let t of[...e.unmountHooks])t(n);e.idRegistry.delete(n),e.idRegistry.delete(`custom:${n}`)}function Y(e,n,t,r){try{e(n)}catch(o){console.error(`[weifuwu] ref ${t} error in <${r??"anonymous"}>`,o)}}function _(e,n){if(e==null||typeof e!="object")return;let t=e;if(t._id){if(t._customId&&n.idRegistry.delete(t._customId),n.idRegistry.delete(t._id),n.unmountHooks.length>0){let r=[...n.unmountHooks];for(let o of r)o(t._id);if(t._customId)for(let o of r)o(t._customId)}t._id=void 0,t._customId=void 0,t._render=void 0,t._parentNode=void 0,t._refNode=void 0}if(t._child!=null){if(Array.isArray(t._child))for(let r of t._child)r&&typeof r=="object"&&_(r,n);else _(t._child,n);t._child=void 0}if(t.props?.children&&typeof t.type=="string"){let r=Array.isArray(t.props.children)?t.props.children:[t.props.children];for(let o of r)o&&typeof o=="object"&&_(o,n)}if(typeof t.props?.ref=="function"&&Y(t.props.ref,null,"cleanup"),t._remoteEl){let r=t._child;if(r!=null)if(Array.isArray(r))for(let o of r)o&&typeof o=="object"&&_(o,n);else typeof r=="object"&&_(r,n);t._remoteEl.remove(),t._remoteEl=void 0}}function W(e,n){if(n&&typeof e.type=="function"&&e._id){try{_(e,n)}catch(t){console.error("[weifuwu] ref cleanup error",t)}B(n,e._id)}}function M(e){if(e==null||typeof e!="object"||Array.isArray(e))return;let n=e;return n._placement==="remote"?n.props?.portalKey:n.key}function $(e,n){if(n&&e&&typeof e=="object"&&!Array.isArray(e)&&e.type===P){let t=e._childNodes;if(t&&t.length)return t}return[n]}function k(e,n,t,r,o){if(typeof r=="string"||typeof r=="number"){if(typeof t=="string"||typeof t=="number"){if(String(t)!==String(r)){if(n&&n.nodeType===3)return n.nodeValue=String(r),n;let y=e.ownerDocument.createTextNode(String(r));return n?.parentNode?n.parentNode.replaceChild(y,n):e.appendChild(y),y}return n}let d=e.ownerDocument.createTextNode(String(r));return n?.parentNode?n.parentNode.replaceChild(d,n):e.appendChild(d),d}if(r==null||typeof r=="boolean"){if(t&&typeof t=="object"&&!Array.isArray(t)&&t.type===T){let d=t._remoteEl;try{_(t.props?.children,o.registry)}catch(y){console.error("[weifuwu] portal ref cleanup error",y)}return d?.parentNode?.removeChild(d),null}if(t&&typeof t=="object"&&!Array.isArray(t))if(typeof t.type=="function")W(t,o.registry);else try{_(t,o.registry)}catch(d){console.error("[weifuwu] ref cleanup error",d)}return n?.parentNode&&n.parentNode.removeChild(n),null}if(Array.isArray(r)){if(t===r&&n?.parentNode)return n;let d=e.ownerDocument.createDocumentFragment(),y=H(e,t,r,o,n?[n]:void 0);for(let g of y)g&&d.appendChild(g);return n?.parentNode?d.contains(n)?e.appendChild(d):n.parentNode.replaceChild(d,n):e.appendChild(d),d}let i=r;if(i.type===T){let d=t&&typeof t=="object"&&!Array.isArray(t)?t:null;if(d?.type===T){let y=d._remoteEl;if(y){let g=d.props?.children??null,A=i.props?.children??null;H(y,g,A,o)}return i._remoteEl=d._remoteEl,null}return C(i,o,o.browser??v()),null}if(i.type===P){let d=t&&typeof t=="object"&&!Array.isArray(t)?t:null,y=d?._childNodes,g=H(e,d?.props?.children??t,i.props?.children??null,o,y);return i._childNodes=g.filter(Boolean),n?.parentNode&&n.nodeType===8&&n.parentNode.removeChild(n),n&&n.nodeType===1?n:g[0]??null}if(typeof i.type=="function"){if(typeof i._render!="function")throw new Error(`[vdom] component ${i.type.name||"anonymous"} not built in diff \u2014 buildVNode must run before patchValue`);let d=t&&typeof t=="object"&&!Array.isArray(t)?t:null,y=d?.type===i.type;if(!o.force&&d&&y&&d._child!==void 0&&i._child===d._child)return n;d?.type===i.type&&d._id&&(i._id=d._id,o.registry.idRegistry.set(i._id,i)),i._parentNode=e,n&&(i._refNode=n);let g;if(i._child===void 0)throw new Error(`[vdom] component ${i.type.name||"anonymous"} not built (missing _child) \u2014 buildVNode must run before patchValue`);g=i._child;let A=k(e,n,d?._child,g,o);return A&&(i._refNode=A),A}let s=t&&typeof t=="object"&&!Array.isArray(t)?t:null,f=s?.type??null,u=i.type;if(n&&n.nodeType===1&&f===u){let d=n;return i.el=d,J(d,s?.props??{},i.props??{}),H(d,s?.props?.children??null,i.props?.children??null,o),d}let l=C(i,o,o.browser??v());if(l==null)return null;if(n?.parentNode)if(t!=null&&typeof t!="boolean"){if(typeof t=="object"&&!Array.isArray(t))try{_(t,o.registry)}catch(d){console.error("[weifuwu] ref cleanup error",d)}n.parentNode.replaceChild(l,n)}else n.parentNode.insertBefore(l,n);else e.appendChild(l);return l}function J(e,n,t){let r=Object.keys(n),o=Object.keys(t);if(r.length===o.length){let s=!0;for(let f=0;f<r.length;f++)if(r[f]!==o[f]||n[r[f]]!==t[r[f]]){s=!1;break}if(s)return}let i=new Set([...r,...o]);for(let s of i){if(s==="children"||s==="key")continue;let f=n[s],u=t[s];if(f!==u){if(j.test(s)){typeof f=="function"&&e.removeEventListener(s.slice(2).toLowerCase(),f),u!=null&&u!==!1&&(typeof u!="function"?console.warn(`[weifuwu] event prop ${s} expects a function, got ${typeof u} \u2014 ignored`):e.addEventListener(s.slice(2).toLowerCase(),u));continue}if(u==null||u===!1){if(s==="class"||s==="className")e.removeAttribute("class");else if(j.test(s))e.removeEventListener(s.slice(2).toLowerCase(),f);else if(s==="ref"){if(typeof f=="function")try{f(null)}catch(l){console.error("[weifuwu] ref cleanup error",l)}}else if(s==="value")e.value="";else if(s==="indeterminate")e.indeterminate=!1;else{e.removeAttribute(s);try{delete e[s]}catch{}}continue}D(e,s,u)}}}function H(e,n,t,r,o){let i=S(n),s=S(t),f=o??Array.from(e.childNodes);if(s.some(a=>{if(a==null||typeof a!="object"||Array.isArray(a))return!1;let c=a;return c._placement!=="remote"&&c.key!==void 0})){for(let a=0;a<s.length;a++){let c=s[a];c&&typeof c=="object"&&!Array.isArray(c)&&M(c)===void 0&&(c.key=`pos:${a}`)}for(let a=0;a<i.length;a++){let c=i[a];c&&typeof c=="object"&&!Array.isArray(c)&&M(c)===void 0&&(c.key=`pos:${a}`)}}let l=i.map((a,c)=>{if(a==null||typeof a!="object"||Array.isArray(a))return f[c]??null;let p=a;return p._placement==="remote"?p._remoteEl??null:p.type===P?p._childNodes?.[0]??null:p._refNode??p.el??null});if(!s.some(a=>{if(a==null||typeof a!="object"||Array.isArray(a))return!1;let c=a;return c._placement!=="remote"&&c.key!==void 0})){let a=Math.max(i.length,s.length),c=[];for(let p=0;p<a;p++){let h=p<i.length?i[p]:null,m=p<s.length?s[p]:null;if(m==null||typeof m=="boolean"){if(h&&typeof h=="object"&&!Array.isArray(h))if(typeof h.type=="function")W(h,r.registry);else try{_(h,r.registry)}catch(w){console.error("[weifuwu] ref cleanup error",w)}let N=l[p];N?.parentNode&&N.parentNode.removeChild(N),c.push(null);continue}if(h!=null&&typeof h=="object"&&!Array.isArray(h)&&m!=null&&typeof m=="object"&&!Array.isArray(m)&&m===h){c.push(l[p]);continue}if(h==null||typeof h=="boolean"){let N=C(m,r,r.browser??v());if(N==null){c.push(null);continue}let w=null;for(let V=p+1;V<l.length;V++){let b=l[V];if(b&&b.parentNode===e){w=b;break}}if(!w){let V=null;for(let b=c.length-1;b>=0;b--)if(c[b]){V=c[b];break}if(V&&V.parentNode===e&&(w=V.nextSibling),!w){let b=l[l.length-1];b&&b.parentNode===e&&(w=b.nextSibling)}}w&&w.parentNode===e?e.insertBefore(N,w):e.appendChild(N),c.push(N);continue}let x=k(e,l[p],h,m,r);c.push(...$(m,x))}return c}let y=new Map;i.forEach((a,c)=>{let p=M(a);p!==void 0&&a&&typeof a=="object"&&!Array.isArray(a)&&y.set(p,{vnode:a,nodes:[l[c]??null].filter(Boolean),index:c})});let g=[],A=new Set,R=null;return s.forEach((a,c)=>{let p=M(a),h=a;if(p!==void 0&&y.has(p)){let m=y.get(p),x=m.nodes[0]??null;A.add(p);let N=k(e,x,m.vnode,h,r),w=$(h,N),V=w[w.length-1]??N;V&&V.parentNode===e&&R&&V.previousSibling!==R&&e.insertBefore(V,R.nextSibling),g.push(...w),V&&(R=V)}else if(h?._placement==="remote"){let m=i[c]??null,x=k(e,l[c]??null,m,h,r),N=$(h,x);g.push(...N);let w=N[N.length-1]??x;w&&(R=w)}else{let m=C(h,r,r.browser??v());g.push(m),m!=null&&(R?e.insertBefore(m,R.nextSibling):e.insertBefore(m,e.firstChild),R=m)}}),i.forEach((a,c)=>{let p=M(a),h=a&&typeof a=="object"&&!Array.isArray(a)&&typeof a.type=="function";if(p!==void 0&&!A.has(p)){if(a&&typeof a=="object"&&!Array.isArray(a))if(h)W(a,r.registry);else try{_(a,r.registry)}catch(x){console.error("[weifuwu] ref cleanup error",x)}let m=l[c];m?.parentNode&&m.parentNode.removeChild(m)}else if(p===void 0){if(a&&typeof a=="object"&&!Array.isArray(a))if(h)W(a,r.registry);else try{_(a,r.registry)}catch(x){console.error("[weifuwu] ref cleanup error",x)}let m=l[c];m?.parentNode&&m.parentNode.removeChild(m)}}),g}function Z(e){return e.__registry??(e.__registry=L())}function U(e,n,t,r){let o=Z(t),i=t.browser??v();return Promise.resolve(E(n,t,void 0,o)).then(()=>{let s=C(n,t,i);if(s!=null&&e.appendChild(s),n._id&&o){let f=o.idRegistry.get(n._id);f&&(f._parentNode=e)}r?.onMounted?.()}).catch(s=>console.error("[weifuwu] command mount error",s)),{id:n._id??""}}function _e(e,n,t){return new Promise(r=>{U(e,n,t,{onMounted:r})})}async function be(e,n,t,r,o){return await E(r,o,t,o.__registry),k(e,n,t,r,{browser:o.browser??o.__browser,registry:o.__registry})}function Ce(e,n){let t=n.__registry??(n.__registry=L());return Promise.resolve(E(e,n,void 0,t))}async function xe(e,n,t){let r=await e(n,t);return typeof r=="function"?r(n):r}async function Ee(e,n,t){let r=await e(n,t);return()=>typeof r=="function"?r(n):r}function F(e,n){if(e==null||typeof e!="object")return;if(Array.isArray(e)){for(let r of e)F(r,n);return}n(e);let t=e?.props?.children;t!=null&&F(t,n)}function Ae(e,n){let t;return F(e,r=>{!t&&n(r)&&(t=r)}),t}function Re(e,n){let t=[];return F(e,r=>{typeof r?.props?.class=="string"&&r.props.class.split(" ").includes(n)&&t.push(r)}),t}function Pe(e){let n={ui:{render:()=>{},ready:!0,useExternal:()=>{}}};return e?{ui:{...n.ui,...e.ui??{}},...e.browser?{browser:e.browser}:{}}:n}function ve(e=()=>!1,n){return{get open(){return e()},setOpen:n??(t=>{}),refresh:()=>{},portal:(t,r)=>e()?t:null,wrapProps:{}}}export{Ce as buildToDom,ve as createPopupMock,Pe as createTestCtx,Re as findByClass,Ae as findVNode,Ee as mountComponent,_e as mountToDom,be as patchToDom,xe as renderVNode,F as walkVNode};
|
|
1
|
+
var H=Symbol("Fragment"),W=Symbol("Portal");function F(e){return e==null||typeof e=="boolean"?[]:Array.isArray(e)?e:[e]}function se(e,n){if(e===n)return!0;let t=Object.keys(e),r=Object.keys(n);if(t.length!==r.length)return!1;for(let u of t)if(e[u]!==n[u])return!1;return!0}async function le(e,n,t,r){e._id||(r?.reuse?._id?e._id=r.reuse._id:e._id=t.nextId(),t.idRegistry.set(e._id,e)),r?.reuse&&(r.reuse._parentNode&&(e._parentNode=r.reuse._parentNode),r.reuse._refNode&&(e._refNode=r.reuse._refNode),r.reuse._ctxVersion!=null&&(e._ctxVersion=r.reuse._ctxVersion));let u=Object.create(n);u.ui=Object.create(n.ui);let o=u.ui;if(o._selfId=e._id,o._selfVNode=e,o.render=function(s){return s==null&&e._id?n.ui.render([e._id]):n.ui.render(s)},typeof e._render!="function"&&typeof r?.reuse?._render=="function"&&(e._render=r.reuse._render),typeof e._render!="function"){n.ui?.setMounting?.(!0);let s;try{s=await e.type(e.props??{},u)}finally{n.ui?.endMounting?.()}if(typeof s!="function")throw new Error(`Component ${e.type.name||"anonymous"} must return a render function. Use (init_props, ctx) => (props) => VNode pattern.`);e._render=s}return{renderFn:e._render,childCtx:u}}function Q(e){return!!e&&typeof e.then=="function"}function L(e,n,t,r,u){if(e==null||typeof e=="boolean"||typeof e=="string"||typeof e=="number")return e;if(Array.isArray(e)){for(let g=0;g<e.length;g++){let d=e[g];if(d!=null&&typeof d=="object"&&!Array.isArray(d)){let m=d;m.key===void 0?m.key=String(g):m.key=String(m.key)}}let p=Array.isArray(t)?t:[],w=e.map((g,d)=>L(g,n,p[d],r,u)),c=!1;for(let g=0;g<w.length;g++)if(Q(w[g])){c=!0;break}return c?Promise.all(w).then(()=>e):e}let o=e,s=r??n.__registry,i=t!=null&&typeof t=="object"&&!Array.isArray(t)&&t.type===o.type?t:null;if(typeof o.type=="function"){o._id||(o._id=i?._id??s.nextId(),s.idRegistry.set(o._id,o)),i&&(i._parentNode&&(o._parentNode=i._parentNode),i._refNode&&(o._refNode=i._refNode),i._ctxVersion!=null&&(o._ctxVersion=i._ctxVersion),typeof i._render=="function"&&(o._render=i._render));let p=se(i?.props??{},o.props??{}),w=n?.ui?._ctxVersion??0,c=(i?._ctxVersion??-1)===w;return!u?.force&&p&&c&&i?._child!=null?(o._child=i._child,o._ctxVersion=i._ctxVersion,o):(async()=>{let{childCtx:g}=await le(o,n,s,{reuse:i??void 0}),d=await L(await o._render(o.props),g,i?._child,s);return o._child=d??null,o._ctxVersion=w,o})()}if(o.type===H){let p=L(o.props?.children??null,n,i?._child??i?.props?.children,s);return Q(p)?p.then(w=>(o._child=w??null,o)):(o._child=p??null,o)}if(typeof o.type=="string"||typeof o.type=="symbol"){let p=L(o.props?.children??null,n,i?.props?.children,s);return Q(p)?p.then(w=>(o._child=w??null,o)):(o._child=p??null,o)}return o}function J(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 z(e){return/[\s"=]/.test(e)?`"${e.replace(/"/g,"'")}"`:e}function U(e){let n=[`type=${e.type}`];return e.value!==void 0&&n.push(`value=${z(J(e.value))}`),e.key!=null&&n.push(`key=${z(e.key)}`),e.id!=null&&n.push(`id=${z(e.id)}`),e.fid!=null&&n.push(`fid=${z(e.fid)}`),`wf-hole: ${n.join(" ")}`}var B=/^on[A-Z]/,ue=/^on[A-Z].*Capture$/;function q(e){let n=ue.test(e);return{type:(n?e.slice(2,-7):e.slice(2)).toLowerCase(),capture:n}}var I=new Set(["draggable","contenteditable","spellcheck","translate"]),oe=new Set(["zIndex","opacity","lineHeight","fontWeight","fontSizeAdjust","flex","flexGrow","flexShrink","order","zoom","aspectRatio","gridRow","gridColumn","scale","rotate","animationIterationCount","columnCount","fillOpacity","strokeOpacity","stopOpacity","floodOpacity"]);var de=new Set(["svg","path","circle","rect","line","polyline","polygon","g","text","defs","use","clipPath"]);function X(e,n,t){if(t==null)return;let r=e.ownerDocument?.defaultView;if(I.has(n)){e.setAttribute(n,t?"true":"false");return}if(t!==!1){if(n==="class"||n==="className"){if(typeof t=="object")for(let[u,o]of Object.entries(t))o&&e.classList.add(u);else e.setAttribute("class",String(t));return}if(n==="style"){if(typeof t=="string")e.setAttribute("style",t);else{let u=e.style;for(let[o,s]of Object.entries(t))s==null?u[o]="":o.startsWith("--")?u.setProperty(o,String(s)):typeof s=="number"&&!oe.has(o)?u[o]=`${s}px`:u[o]=String(s)}return}if(n==="ref"){if(typeof t=="function")try{t(e)}catch(u){console.error("[weifuwu] ref error",u)}return}if(B.test(n)){let{type:u,capture:o}=q(n);if(typeof t!="function"){console.warn(`[weifuwu] event prop ${n} expects a function, got ${typeof t} \u2014 ignored`);return}e.addEventListener(u,t,o?{capture:!0}:void 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 D(e,n){return e.createComment(U({type:"hole",value:n}))}function P(e,n,t,r,u,o){let s=n?.browser??t;if(!s)throw new Error("[vdom] renderValue requires browser env (ctx.browser)");if(e==null||typeof e=="boolean")return null;if(typeof e=="string"||typeof e=="number")return s.createTextNode(String(e));if(Array.isArray(e)){let d=s.createDocumentFragment();if(!d)return null;let m=s.createComment(U({type:"fragment-start",key:r,id:u,fid:o??void 0})),V=s.createComment(U({type:"fragment-end",key:r,id:u,fid:o??void 0}));m&&d.appendChild(m);for(let C=0;C<e.length;C++){let j=e[C],R=o!=null?`${o}-${C}`:String(C),v=j==null||typeof j=="boolean"?D(s,j):P(j,n,s,String(C),void 0,R);v!=null&&d.appendChild(v)}return V&&d.appendChild(V),d}let i=e,p=i.type;if(typeof p!="string"&&typeof p!="function"&&p!==H&&p!==W)return console.warn(`[weifuwu] children \u9879\u975E\u6CD5\uFF1Atype=${String(p)}\uFF08${typeof p}\uFF09\uFF0C\u503C=${J(e)}\u2014\u2014\u5DF2\u5360\u4F4D\uFF08wf-hole\uFF09\uFF0C\u68C0\u67E5\u4F20\u5165\u7684 children`),D(s,e);if(i.type===W){let d=s.bodyElement();if(!d)return null;let m=d.querySelector("#__wf_portal");m||(m=s.createElement("div"),m&&(m.id="__wf_portal",d.appendChild(m)));let V=s.createElement("div");if(V){V.setAttribute("data-portal",String(i.props?.portalKey??"wf"));let C=P(i.props?.children??null,n,s);C!=null&&V.appendChild(C),m&&m.appendChild(V),i._remoteEl=V}return null}if(i.type===H){let d=s.createDocumentFragment();if(!d)return null;for(let m of F(i.props?.children)){let V=m==null||typeof m=="boolean"?D(s,m):P(m,n,s);V!=null&&d.appendChild(V)}return i._childNodes=Array.from(d.childNodes),d}if(typeof i.type=="function"){if(typeof i._render!="function")throw new Error(`[vdom] component ${i.type.name||"anonymous"} not built (missing _render) \u2014 buildVNode must run before renderValue`);if(i._child===void 0)throw new Error(`[vdom] component ${i.type.name||"anonymous"} not built (missing _child) \u2014 buildVNode must run before renderValue`);let d=i._child;if(d==null)return i._child=null,null;let m=(Array.isArray(d)||typeof d=="object"&&typeof d.type=="function",d);i._child=m,typeof m=="object"&&!Array.isArray(m)&&(m._parentVNode=i);let V=P(m,n,s);if(V){if(i._refNode=V,i._id)if(V.nodeType===11)for(let C of Array.from(V.childNodes))C.nodeType===1&&C.setAttribute("data-wf-id",i._id);else V.nodeType===1&&V.setAttribute("data-wf-id",i._id);if(i.key!=null)if(V.nodeType===11)for(let C of Array.from(V.childNodes))C.nodeType===1&&C.setAttribute("data-wf-key",i.key);else V.nodeType===1&&V.setAttribute("data-wf-key",i.key)}return V}let w=i.type,c=de.has(w)?s.createElementNS("http://www.w3.org/2000/svg",w):s.createElement(w);if(!c)return null;i.el=c,i.key!=null&&c.setAttribute("data-wf-key",i.key);let g;for(let[d,m]of Object.entries(i.props??{}))if(!(d==="children"||d==="key")){if(d==="value"&&c instanceof HTMLSelectElement){g=m;continue}X(c,d,m)}if(!("innerHTML"in(i.props??{}))){let d=[],m=F(i.props?.children);for(let V=0;V<m.length;V++){let C=m[V],j=o!=null?`${o}-${V}`:String(V),R=C==null||typeof C=="boolean"?D(s,C):P(C,n,s,String(V),void 0,j);if(R==null){d.push(null);continue}let v=R.nodeType===11?R.firstChild:R;if(c.appendChild(R),d.push(v),C&&typeof C=="object"&&!Array.isArray(C)&&typeof C.type=="function"){let l=C;l._parentNode||(l._parentNode=c,l._refNode=R)}}i._childAnchors=d}return g!==void 0&&(c.value=String(g)),c}function M(){return{activeElement:()=>typeof document<"u"?document.activeElement:null,byId:e=>typeof document<"u"?document.getElementById(e):null,query:e=>typeof document<"u"?document.querySelector(e):null,queryAll:e=>typeof document<"u"?document.querySelectorAll(e):null,createElement:e=>typeof document<"u"?document.createElement(e):null,createElementNS:(e,n)=>typeof document<"u"?document.createElementNS(e,n):null,createDocumentFragment:()=>typeof document<"u"?document.createDocumentFragment():null,createComment:e=>typeof document<"u"?document.createComment(e):null,createTextNode:e=>typeof document<"u"?document.createTextNode(e):null,addEventListener:(e,n,t)=>{typeof window<"u"&&window.addEventListener(e,n,t)},removeEventListener:(e,n,t)=>{typeof window<"u"&&window.removeEventListener(e,n,t)},scrollTo:e=>{typeof window<"u"&&window.scrollTo(0,e)},matchMedia:e=>typeof window<"u"&&typeof window.matchMedia=="function"?window.matchMedia(e):null,visualViewport:()=>(typeof window<"u"?window:null)?.visualViewport??null,scrollingElement:()=>typeof document<"u"?document.scrollingElement:null,bodyElement:()=>typeof document<"u"?document.body:null,bodyAppend:e=>{typeof document<"u"&&document.body.appendChild(e)},bodyRemove:e=>{typeof document<"u"&&e.parentNode&&document.body.removeChild(e)},clearBody:()=>{typeof document<"u"&&(document.body.innerHTML="")},event:(e,n)=>{let t=typeof window<"u"?window:null,r=n&&(n.key||n.code)?"KeyboardEvent":n&&(n.clientX!==void 0||n.clientY!==void 0||n.pointerId!==void 0)?"PointerEvent":"Event";try{return new t[r](e,n)}catch{return new t.Event(e,n)}},dispatchEvent:(e,n)=>typeof e<"u"?e.dispatchEvent(n):!1,navigate:e=>{typeof window>"u"||(window.history.pushState(null,"",e),window.dispatchEvent(new PopStateEvent("popstate",{state:null})))},copyText:async e=>{let n=typeof window<"u"?window:null;if(n?.navigator?.clipboard?.writeText)try{return await n.navigator.clipboard.writeText(e),!0}catch{}try{if(typeof document>"u")return!1;let t=document.createElement("textarea");t.value=e,t.style.position="fixed",t.style.opacity="0",document.body.appendChild(t),t.select();let r=document.execCommand("copy");return document.body.removeChild(t),r}catch{return!1}},execCommand:(e,n)=>typeof document<"u"?document.execCommand(e,!1,n):!1,queryCommandState:e=>typeof document<"u"?document.queryCommandState(e):!1,queryCommandValue:e=>typeof document<"u"?document.queryCommandValue(e):"",selectionText:()=>typeof window<"u"?window.getSelection?.()?.toString()??null:null,getSelection:()=>typeof window<"u"?window.getSelection():null,viewportHeight:()=>typeof window<"u"?window.innerHeight:0,viewportWidth:()=>typeof window<"u"?window.innerWidth:0,pathname:()=>typeof window<"u"?window.location.pathname:"",createTreeWalker:(e,n)=>typeof document<"u"?document.createTreeWalker(e,n??NodeFilter.SHOW_ALL):null,scrollTop:()=>{let e=typeof document<"u"?document:null,n=typeof window<"u"?window:null;return e?.scrollingElement?.scrollTop??n?.scrollY??0},hash:()=>typeof window<"u"?window.location?.hash??"":"",setHash:e=>{typeof window<"u"&&(window.location.hash=e)},timeout:(e,n)=>typeof window<"u"?window.setTimeout(e,n):0,rootElement:()=>typeof document<"u"?document.documentElement:null,storageGet:e=>{try{return typeof window<"u"?window.localStorage?.getItem(e)??null:null}catch{return null}},storageSet:(e,n)=>{try{typeof window<"u"&&window.localStorage?.setItem(e,n)}catch{}}}}var ae=0;function Y(){return{idRegistry:new Map,unmountHooks:[],nextId:()=>`_wf_${ae++}`}}function ee(e,n){for(let t of[...e.unmountHooks])t(n);e.idRegistry.delete(n),e.idRegistry.delete(`custom:${n}`)}function fe(e,n,t,r){try{e(n)}catch(u){console.error(`[weifuwu] ref ${t} error in <${r??"anonymous"}>`,u)}}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 r=[...n.unmountHooks];for(let u of r)u(t._id);if(t._customId)for(let u of r)u(t._customId)}t._id=void 0,t._customId=void 0,t._render=void 0,t._parentNode=void 0,t._refNode=void 0}if(t._child!=null){if(Array.isArray(t._child))for(let r of t._child)r&&typeof r=="object"&&k(r,n);else k(t._child,n);t._child=void 0}if(t.props?.children&&typeof t.type=="string"){let r=Array.isArray(t.props.children)?t.props.children:[t.props.children];for(let u of r)u&&typeof u=="object"&&k(u,n)}if(typeof t.props?.ref=="function"&&fe(t.props.ref,null,"cleanup"),t._remoteEl){let r=t._child;if(r!=null)if(Array.isArray(r))for(let u of r)u&&typeof u=="object"&&k(u,n);else typeof r=="object"&&k(r,n);t._remoteEl.remove(),t._remoteEl=void 0}}function $(e,n){if(n&&typeof e.type=="function"&&e._id){try{k(e,n)}catch(t){console.error("[weifuwu] ref cleanup error",t)}ee(n,e._id)}}function K(e){if(e==null||typeof e!="object"||Array.isArray(e))return;let n=e;return n._placement==="remote"?n.props?.portalKey:n.key}function ne(e,n){if(n&&e&&typeof e=="object"&&!Array.isArray(e)&&e.type===H){let t=e._childNodes;if(t&&t.length)return t}return[n]}function O(e,n,t,r,u){if(typeof r=="string"||typeof r=="number"){if(typeof t=="string"||typeof t=="number"){if(String(t)!==String(r)){if(n&&n.nodeType===3)return n.nodeValue=String(r),n;let g=e.ownerDocument.createTextNode(String(r));return n?.parentNode?n.parentNode.replaceChild(g,n):e.appendChild(g),g}return n}let c=e.ownerDocument.createTextNode(String(r));return n?.parentNode?n.parentNode.replaceChild(c,n):e.appendChild(c),c}if(r==null||typeof r=="boolean"){if(t&&typeof t=="object"&&!Array.isArray(t)&&t.type===W){let c=t._remoteEl;try{k(t.props?.children,u.registry)}catch(g){console.error("[weifuwu] portal ref cleanup error",g)}return c?.parentNode?.removeChild(c),null}if(t&&typeof t=="object"&&!Array.isArray(t))if(typeof t.type=="function")$(t,u.registry);else try{k(t,u.registry)}catch(c){console.error("[weifuwu] ref cleanup error",c)}return n?.parentNode&&n.parentNode.removeChild(n),null}if(Array.isArray(r)){if(t===r&&n?.parentNode)return n;let c=e.ownerDocument.createDocumentFragment(),g=G(e,t,r,u,n?[n]:void 0);for(let d of g)d&&c.appendChild(d);return n?.parentNode?c.contains(n)?e.appendChild(c):n.parentNode.replaceChild(c,n):e.appendChild(c),c}let o=r;if(o.type===W){let c=t&&typeof t=="object"&&!Array.isArray(t)?t:null;if(c?.type===W){let g=c._remoteEl;if(g){let d=c.props?.children??null,m=o.props?.children??null;G(g,d,m,u)}return o._remoteEl=c._remoteEl,null}return P(o,u,u.browser??M()),null}if(o.type===H){let c=t&&typeof t=="object"&&!Array.isArray(t)?t:null,g=c?._childNodes,d=G(e,c?.props?.children??t,o.props?.children??null,u,g);return o._childNodes=d.filter(Boolean),n?.parentNode&&n.nodeType===8&&n.parentNode.removeChild(n),n&&n.nodeType===1?n:d[0]??null}if(typeof o.type=="function"){if(typeof o._render!="function")throw new Error(`[vdom] component ${o.type.name||"anonymous"} not built in diff \u2014 buildVNode must run before patchValue`);let c=t&&typeof t=="object"&&!Array.isArray(t)?t:null,g=c?.type===o.type;if(!u.force&&c&&g&&c._child!==void 0&&o._child===c._child)return n;c?.type===o.type&&c._id&&(o._id=c._id,u.registry.idRegistry.set(o._id,o)),o._parentNode=e,n&&(o._refNode=n);let d;if(o._child===void 0)throw new Error(`[vdom] component ${o.type.name||"anonymous"} not built (missing _child) \u2014 buildVNode must run before patchValue`);d=o._child;let m=O(e,n,c?._child,d,u);return m&&(o._refNode=m),m}let s=t&&typeof t=="object"&&!Array.isArray(t)?t:null,i=s?.type??null,p=o.type;if(n&&n.nodeType===1&&i===p){let c=n;if(o.el=c,ce(c,s?.props??{},o.props??{}),!("innerHTML"in(o.props??{}))){let g=[];G(c,s?.props?.children??null,o.props?.children??null,u,void 0,s?._childAnchors,g),o._childAnchors=g}return c}let w=P(o,u,u.browser??M());if(w==null)return null;if(n?.parentNode)if(t!=null&&typeof t!="boolean"){if(typeof t=="object"&&!Array.isArray(t))try{k(t,u.registry)}catch(c){console.error("[weifuwu] ref cleanup error",c)}n.parentNode.replaceChild(w,n)}else n.parentNode.insertBefore(w,n);else e.appendChild(w);return w}function ce(e,n,t){let r=Object.keys(n),u=Object.keys(t);if(r.length===u.length){let s=!0;for(let i=0;i<r.length;i++)if(r[i]!==u[i]||n[r[i]]!==t[r[i]]){s=!1;break}if(s)return}let o=new Set([...r,...u]);for(let s of o){if(s==="children"||s==="key")continue;let i=n[s],p=t[s];if(i!==p){if(B.test(s)){let{type:w,capture:c}=q(s);typeof i=="function"&&e.removeEventListener(w,i,c?{capture:!0}:void 0),p!=null&&p!==!1&&(typeof p!="function"?console.warn(`[weifuwu] event prop ${s} expects a function, got ${typeof p} \u2014 ignored`):e.addEventListener(w,p,c?{capture:!0}:void 0));continue}if(s==="class"||s==="className"){p==null||p===!1?e.removeAttribute("class"):(e.className="",X(e,s,p));continue}if(p==null||p===!1){if(s==="class"||s==="className")e.removeAttribute("class");else if(B.test(s))e.removeEventListener(s.slice(2).toLowerCase(),i);else if(s==="ref"){if(typeof i=="function")try{i(null)}catch(w){console.error("[weifuwu] ref cleanup error",w)}}else if(s==="value")e.value="";else if(s==="indeterminate")e.indeterminate=!1;else{e.removeAttribute(s);try{delete e[s]}catch{}}continue}X(e,s,p)}}}function te(e,n,t){let r=e[n];if(!r)return[];if(r.nodeType===8&&r.nodeValue?.includes("type=fragment-start")){let i=[r],p=/fid=([^\s"]+)/.exec(r.nodeValue)?.[1]??"",w=r.nextSibling;for(;w&&(i.push(w),!(w.nodeType===8&&w.nodeValue?.includes("type=fragment-end")&&(/fid=([^\s"]+)/.exec(w.nodeValue)?.[1]??p)===p));)w=w.nextSibling;return i}let u=e[n+1]??null,o=[],s=r;for(;s&&s!==u&&s.parentNode===t;)o.push(s),s=s.nextSibling;return o}function G(e,n,t,r,u,o,s){let i=F(n),p=F(t),w=o??u??Array.from(e.childNodes),c=p.some(l=>{if(l==null||typeof l!="object"||Array.isArray(l))return!1;let f=l;return f._placement!=="remote"&&f.key!==void 0}),g=p.some(l=>Array.isArray(l))||i.some(l=>Array.isArray(l));if(c){for(let l=0;l<p.length;l++){let f=p[l];f&&typeof f=="object"&&!Array.isArray(f)&&K(f)===void 0&&(f.key=`pos:${l}`)}for(let l=0;l<i.length;l++){let f=i[l];f&&typeof f=="object"&&!Array.isArray(f)&&K(f)===void 0&&(f.key=`pos:${l}`)}}let d=o?o.map((l,f)=>l??(f<i.length?i[f]?._refNode??null:null)):(()=>{let l=w;l.length>=2&&l[0]?.nodeType===8&&l[0].nodeValue?.includes("fragment-start")&&l[l.length-1]?.nodeType===8&&l[l.length-1].nodeValue?.includes("fragment-end")&&(l=l.slice(1,-1));let f=[],N=0;for(let _=0;_<i.length;_++){let a=i[_];if(Array.isArray(a)){f.push(l[N]??null),N++;continue}if(a==null||typeof a=="boolean"){f.push(l[N]??null),N++;continue}if(typeof a=="string"||typeof a=="number"){f.push(l[N]??null),N++;continue}let y=a;if(y._placement==="remote"){f.push(y._remoteEl??null);continue}if(y.type===H){f.push(y._childNodes?.[0]??null),N++;continue}f.push(y._refNode??y.el??l[N]??null),N++}return f})();if(g||!p.some(l=>{if(l==null||typeof l!="object"||Array.isArray(l))return!1;let f=l;return f._placement!=="remote"&&f.key!==void 0})){let l=Math.max(i.length,p.length),f=[],N=_=>{s&&s.push(_)};for(let _=0;_<l;_++){let a=_<i.length?i[_]:null,y=_<p.length?p[_]:null;if(y==null||typeof y=="boolean"){let h=d[_],T=r.browser??M();if(_>=p.length){if(Array.isArray(a)){let x=te(d,_,e);for(let A of x)A.parentNode?.removeChild(A);for(let A of a)A!=null&&typeof A=="object"&&!Array.isArray(A)&&typeof A.type=="function"&&$(A,r.registry)}else if(a&&typeof a=="object"&&!Array.isArray(a)){if(typeof a.type=="function")$(a,r.registry);else try{k(a,r.registry)}catch(x){console.error("[weifuwu] ref cleanup error",x)}h?.parentNode&&h.parentNode.removeChild(h)}else h?.parentNode&&h.parentNode.removeChild(h);f.push(null),N(null);continue}let b=D(T,y);if(a==null||typeof a=="boolean"){h?.nodeType===8?(b&&h.nodeValue!==b.nodeValue&&(h.nodeValue=b.nodeValue),f.push(h),N(h)):(b&&h?.parentNode?h.parentNode.replaceChild(b,h):b&&e.appendChild(b),f.push(b),N(b));continue}if(a&&typeof a=="object"&&!Array.isArray(a))if(typeof a.type=="function")$(a,r.registry);else try{k(a,r.registry)}catch(x){console.error("[weifuwu] ref cleanup error",x)}b&&h?.parentNode?h.parentNode.replaceChild(b,h):b&&e.appendChild(b),f.push(b),N(b);continue}if(a!=null&&typeof a=="object"&&!Array.isArray(a)&&y!=null&&typeof y=="object"&&!Array.isArray(y)&&y===a){f.push(d[_]),N(d[_]);continue}if(a==null||typeof a=="boolean"){let h=P(y,r,r.browser??M());if(h==null){f.push(null),N(null);continue}let T=d[_];if(T&&T.nodeType===8&&T.nodeValue?.startsWith("wf-hole:")){T.parentNode?.replaceChild(h,T),f.push(h),N(h);continue}let b=null;for(let x=_+1;x<d.length;x++){let A=d[x];if(A&&A.parentNode===e){b=A;break}}if(!b){let x=null;for(let A=f.length-1;A>=0;A--)if(f[A]){x=f[A];break}if(x&&x.parentNode===e&&(b=x.nextSibling),!b){let A=d[d.length-1];A&&A.parentNode===e&&(b=A.nextSibling)}}b&&b.parentNode===e?e.insertBefore(h,b):e.appendChild(h),f.push(h),N(h);continue}if(Array.isArray(y)){let h=r.browser??M();if(Array.isArray(a)){let A=te(d,_,e),re=G(e,a,y,r,A);f.push(...re),N(re[0]??null);continue}let T=P(y,r,h);if(T==null){f.push(null),N(null);continue}let b=d[_];b?.parentNode?b.parentNode.replaceChild(T,b):e.appendChild(T);let x=T.nodeType===11?Array.from(T.childNodes):[T];f.push(...x),N(x[0]??T);continue}if(Array.isArray(a)){let h=r.browser??M(),T=te(d,_,e);for(let A of T)A.parentNode?.removeChild(A);for(let A of a)A!=null&&typeof A=="object"&&!Array.isArray(A)&&typeof A.type=="function"&&$(A,r.registry);let b=P(y,r,h);if(b==null){f.push(null),N(null);continue}let x=d[_+1]??null;x?.parentNode?x.parentNode.insertBefore(b,x):e.appendChild(b),f.push(b),N(b);continue}let E=O(e,d[_],a,y,r),S=ne(y,E);f.push(...S),N(S[0]??E??null)}return f}let V=new Map;i.forEach((l,f)=>{let N=K(l);N!==void 0&&l&&typeof l=="object"&&!Array.isArray(l)&&V.set(N,{vnode:l,nodes:[d[f]??null].filter(Boolean),index:f})});let C=[],j=new Set,R=l=>{s&&s.push(l)},v=null;return p.forEach((l,f)=>{let N=K(l),_=l;if(N!==void 0&&V.has(N)){let a=V.get(N),y=a.nodes[0]??null;j.add(N);let E=O(e,y,a.vnode,_,r),S=ne(_,E),h=S[S.length-1]??E;h&&h.parentNode===e&&v&&h.previousSibling!==v&&e.insertBefore(h,v.nextSibling),C.push(...S),R(S[0]??E??null),h&&(v=h)}else{if(l==null||typeof l=="boolean"){let a=i[f]??null,y=d[f]??null,E=D(r.browser??M(),l);if(a==null||typeof a=="boolean")y?.nodeType===8?(E&&y.nodeValue!==E.nodeValue&&(y.nodeValue=E.nodeValue),C.push(y),R(y),y&&(v=y)):(E&&y?.parentNode?y.parentNode.replaceChild(E,y):E&&e.appendChild(E),C.push(E),R(E),E&&(v=E));else{if(typeof a=="object"&&!Array.isArray(a))if(typeof a.type=="function")$(a,r.registry);else try{k(a,r.registry)}catch(S){console.error("[weifuwu] ref cleanup error",S)}E&&y?.parentNode?y.parentNode.replaceChild(E,y):E&&e.appendChild(E),C.push(E),R(E),E&&(v=E)}return}if(_?._placement==="remote"){let a=i[f]??null,y=O(e,d[f]??null,a,_,r),E=ne(_,y);C.push(...E),R(E[0]??y??null);let S=E[E.length-1]??y;S&&(v=S)}else{let a=P(_,r,r.browser??M());if(C.push(a),R(a??null),a!=null){let y=d[f];y&&y.nodeType===8&&y.nodeValue?.startsWith("wf-hole:")?(y.parentNode?.replaceChild(a,y),v=a):(v?e.insertBefore(a,v.nextSibling):e.insertBefore(a,e.firstChild),v=a)}}}}),i.forEach((l,f)=>{let N=K(l),_=l&&typeof l=="object"&&!Array.isArray(l)&&typeof l.type=="function";if(N!==void 0&&!j.has(N)){if(l&&typeof l=="object"&&!Array.isArray(l))if(_)$(l,r.registry);else try{k(l,r.registry)}catch(y){console.error("[weifuwu] ref cleanup error",y)}let a=d[f];a?.parentNode&&a.parentNode.removeChild(a)}else if(N===void 0){let a=f<p.length?p[f]:null,y=d[f];if(!(y?.nodeType===8&&y.nodeValue?.startsWith("wf-hole:"))||a==null){if(l&&typeof l=="object"&&!Array.isArray(l))if(_)$(l,r.registry);else try{k(l,r.registry)}catch(S){console.error("[weifuwu] ref cleanup error",S)}y?.parentNode&&y.parentNode.removeChild(y)}}}),C}function ye(e){return e.__registry??(e.__registry=Y())}function ie(e,n,t,r){let u=ye(t),o=t.browser??M();return Promise.resolve(L(n,t,void 0,u)).then(()=>{let s=P(n,t,o);if(s!=null&&e.appendChild(s),n._id&&u){let i=u.idRegistry.get(n._id);i&&(i._parentNode=e)}r?.onMounted?.()}).catch(s=>console.error("[weifuwu] command mount error",s)),{id:n._id??""}}function Oe(e,n,t){return new Promise(r=>{ie(e,n,t,{onMounted:r})})}async function Ue(e,n,t,r,u){return await L(r,u,t,u.__registry),O(e,n,t,r,{browser:u.browser??u.__browser,registry:u.__registry})}function qe(e,n){let t=n.__registry??(n.__registry=Y());return Promise.resolve(L(e,n,void 0,t))}async function Ke(e,n,t){let r=await e(n,t);return typeof r=="function"?r(n):r}async function Ge(e,n,t){let r=await e(n,t);return()=>typeof r=="function"?r(n):r}function Z(e,n){if(e==null||typeof e!="object")return;if(Array.isArray(e)){for(let r of e)Z(r,n);return}n(e);let t=e?.props?.children;t!=null&&Z(t,n)}function ze(e,n){let t;return Z(e,r=>{!t&&n(r)&&(t=r)}),t}function Je(e,n){let t=[];return Z(e,r=>{typeof r?.props?.class=="string"&&r.props.class.split(" ").includes(n)&&t.push(r)}),t}function Xe(e){let n={ui:{render:()=>{},ready:!0,useExternal:()=>{}}};return e?{ui:{...n.ui,...e.ui??{}},...e.browser?{browser:e.browser}:{}}:n}function Ye(e=()=>!1,n){return{get open(){return e()},setOpen:n??(t=>{}),refresh:()=>{},portal:(t,r)=>e()?t:null,wrapProps:{}}}export{qe as buildToDom,Ye as createPopupMock,Xe as createTestCtx,Je as findByClass,ze as findVNode,Ge as mountComponent,Oe as mountToDom,Ue as patchToDom,Ke as renderVNode,Z as walkVNode};
|
package/dist/ui-dom/types.d.ts
CHANGED
|
@@ -280,6 +280,8 @@ export interface WfuiContext {
|
|
|
280
280
|
ui: {
|
|
281
281
|
/** 触发组件重渲染(同步,无参 = 当前组件) */
|
|
282
282
|
render: (ids?: string[]) => Promise<void>;
|
|
283
|
+
/** 组件卸载钩子(mount 阶段注册——组件卸载时调用 fn;SSR no-op;返回退订) */
|
|
284
|
+
onUnmount?: (fn: () => void) => (() => void) | undefined;
|
|
283
285
|
/**
|
|
284
286
|
* AI 对话会话:$ 超集(会话语义 + 工具调用内嵌 + HITL 审批)
|
|
285
287
|
*
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* vdom/audit — 结构一致性运行时校验(design/vdom-consistency-plan.md 阶段 C)
|
|
3
|
+
*
|
|
4
|
+
* 规则表(design/vdom-transform-rules.md)的运行时保证:把「用户的想法 = vnode = DOM」从
|
|
5
|
+
* 设计承诺变成每次 patch 的断言——错位即报错(dev),不静默传播(提交按钮消失事故的根治)。
|
|
6
|
+
*
|
|
7
|
+
* 开关:`__WF_VDOM_AUDIT`(dev/测试全开,生产默认关——O(n) 递归零生产开销)。
|
|
8
|
+
* 校验项:
|
|
9
|
+
* A1 数组数量:childNodes.length === children 数组长度(无 fragment/数组项展开时)
|
|
10
|
+
* A2 占位位置:数组占位项(false/null)⟷ childNodes 对应位置是注释(wf-hole)
|
|
11
|
+
* A3 元素类型:native vnode.type === DOM tagName
|
|
12
|
+
* A4 锚点:组件 _refNode 指向的节点仍在父 DOM 中
|
|
13
|
+
*/
|
|
14
|
+
import type { VNodeChild } from '../vnode.ts';
|
|
15
|
+
/** audit 开关(dev/测试注入;生产默认关) */
|
|
16
|
+
export declare function auditEnabled(): boolean;
|
|
17
|
+
/** 数组级校验:childNodes 与 children 数组对齐(A1/A2——占位错位/数量错位,本次事故类别) */
|
|
18
|
+
export declare function auditChildren(parent: Node, children: VNodeChild[] | null | undefined, report: (msg: string) => void): void;
|
|
19
|
+
/** 树级校验:vnode 树 ↔ DOM 树递归对照(A3/A4)——入口调用一次 */
|
|
20
|
+
export declare function auditTree(parent: Node, child: VNodeChild, report: (msg: string) => void): void;
|