weifuwu 0.83.0 → 0.84.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 +56 -51
- package/dist/components/ChatInput/ChatInput.d.ts +2 -2
- package/dist/components/Confirm/Confirm.d.ts +2 -2
- package/dist/components/Notification/Notification.d.ts +0 -2
- package/dist/components/Toast/Toast.d.ts +0 -2
- package/dist/components/index.d.ts +3 -3
- package/dist/components/index.js +12 -12
- package/dist/components/style.css +17 -0
- package/dist/index.js +2285 -302
- package/dist/ui-dom/Confirm.d.ts +1 -1
- package/dist/ui-dom/Notification.d.ts +1 -1
- package/dist/ui-dom/Toast.d.ts +1 -1
- package/dist/ui-dom/hooks/index.d.ts +0 -1
- package/dist/ui-dom/hooks/popup.d.ts +2 -0
- package/dist/ui-dom/hooks/stable.d.ts +2 -6
- package/dist/ui-dom/index.d.ts +24 -19
- package/dist/ui-dom/index.js +39 -22
- package/dist/ui-dom/jsx-runtime.js +1 -1
- package/dist/ui-dom/popup-tracker.d.ts +1 -1
- package/dist/ui-dom/testing.d.ts +3 -9
- package/dist/ui-dom/testing.js +7 -1
- package/dist/ui-dom/types.d.ts +7 -37
- package/dist/ui-dom/vdom3/README.d.ts +6 -3
- package/dist/ui-dom/vdom3/app.d.ts +20 -0
- package/dist/ui-dom/vdom3/audit.d.ts +13 -0
- package/dist/ui-dom/vdom3/build.d.ts +7 -3
- package/dist/ui-dom/vdom3/commands.d.ts +13 -3
- package/dist/ui-dom/vdom3/comp-index.d.ts +18 -0
- package/dist/ui-dom/vdom3/delegate.d.ts +44 -0
- package/dist/ui-dom/vdom3/events.d.ts +8 -2
- package/dist/ui-dom/vdom3/index.d.ts +5 -3
- package/dist/ui-dom/vdom3/jsx.d.ts +26 -4
- package/dist/ui-dom/vdom3/record.d.ts +3 -0
- package/dist/ui-dom/vdom3/render.d.ts +19 -6
- package/dist/ui-dom/vdom3/replay.d.ts +11 -8
- package/dist/ui-dom/vdom3/root.d.ts +3 -7
- package/dist/ui-dom/vdom3/types.d.ts +102 -70
- package/dist/ui-dom/vdom3/ui.d.ts +3 -30
- package/dist/ui-dom/vdom3.js +11 -10
- package/dist/ui-dom/vnode.d.ts +9 -89
- package/docs/compat-three-library.md +1 -1
- package/docs/components-map.md +1 -1
- package/docs/frontend-middleware.md +59 -53
- package/docs/frontend-ui-dom.md +114 -132
- package/docs/frontend.md +28 -24
- package/docs/realtime.md +21 -21
- package/package.json +1 -1
- package/dist/test/client/setup.d.ts +0 -12
- package/dist/ui-dom/context.d.ts +0 -32
- package/dist/ui-dom/hooks/test/hooks.test.d.ts +0 -1
- package/dist/ui-dom/middleware/serve.d.ts +0 -27
- package/dist/ui-dom/router.d.ts +0 -73
- package/dist/ui-dom/vdom2/audit.d.ts +0 -28
- package/dist/ui-dom/vdom2/build.d.ts +0 -53
- package/dist/ui-dom/vdom2/ctx.d.ts +0 -32
- package/dist/ui-dom/vdom2/dom-trace.d.ts +0 -4
- package/dist/ui-dom/vdom2/events.d.ts +0 -65
- package/dist/ui-dom/vdom2/hydrate.d.ts +0 -21
- package/dist/ui-dom/vdom2/index.d.ts +0 -13
- package/dist/ui-dom/vdom2/kind.d.ts +0 -44
- package/dist/ui-dom/vdom2/lifecycle.d.ts +0 -54
- package/dist/ui-dom/vdom2/mount.d.ts +0 -77
- package/dist/ui-dom/vdom2/patch.d.ts +0 -116
- package/dist/ui-dom/vdom2/registry.d.ts +0 -27
- package/dist/ui-dom/vdom2/render.d.ts +0 -21
- package/dist/ui-dom/vdom2/route.d.ts +0 -29
- package/dist/ui-dom/vdom2/ssr.d.ts +0 -32
- package/dist/ui-dom/vdom2/trace.d.ts +0 -62
- package/dist/ui-dom/vdom2/transform.d.ts +0 -76
- package/dist/ui-dom/vdom2/transitions.d.ts +0 -24
- package/dist/ui-dom/vdom2/x2html.d.ts +0 -26
- package/dist/ui-dom/vdom3/compat.d.ts +0 -20
package/dist/ui-dom/vdom3.js
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
function ue(e){return e==null||typeof e=="boolean"?[]:Array.isArray(e)?e.flatMap(t=>ue(t)):[e]}function T(e){if(e.children!=null)return ue(e.children);let t=e.props?.children??[];return ue(t)}var A=Symbol("v3-fragment"),F=Symbol("v3-portal");function mt(e,t,...n){let o=n.length===1&&Array.isArray(n[0])?n[0]:n,l=t?{...t}:{};return n.length>0&&(l.children=o),{type:e,props:l,key:t?.key??null}}function yt(e,t){return{type:F,props:{children:Array.isArray(e)?e:[e],portalKey:t??"default"},key:t??null}}function Ne(e=2e4){let t=[],n=0,o=0,l=i=>t[(n+i)%e],s=(i,r)=>{t[(n+i)%e]=r};return{emit(i){o<e?(s(o,i),o++):(s(0,i),n=(n+1)%e)},events(){let i=new Array(o);for(let r=0;r<o;r++)i[r]=l(r);return i},inverse(i){switch(i.type){case"INSERT":return{type:"REMOVE",parent:i.parent,child:i.child,ts:Date.now()};case"REMOVE":return null;case"PROP_UPDATE":return{type:"PROP_UPDATE",target:i.target,key:i.key,value:i.prev,prev:i.value,ts:Date.now()};case"TEXT_UPDATE":return{type:"TEXT_UPDATE",target:i.target,value:i.prev,prev:i.value,ts:Date.now()};case"MOVE":return null;default:return null}},reset(){n=0,o=0}}}var E=Ne(),gt=0;function H(){return`n${++gt}`}function U(e){let t=document.getElementById("__wf_portal");t||(t=document.createElement("div"),t.id="__wf_portal",document.body.appendChild(t));let n=t.querySelector(`[data-wf-portal-key="${e}"]`);return n||(n=document.createElement("div"),n.setAttribute("data-wf-portal-key",e),t.appendChild(n)),n}var V=class{byId=new Map;idByNode=new WeakMap;removed=new Map;static PORTAL=t=>`portal:${t}`;resolveParent(t){return t.startsWith("portal:")?U(t.slice(7)):this.get(t)}get(t){return t.startsWith("portal:")?U(t.slice(7)):this.byId.get(t)??null}register(t,n){this.byId.set(t,n),this.idByNode.set(n,t)}idOf(t){return t?t.nodeType===1?t.getAttribute("data-v3-id")??this.idByNode.get(t)??"el":this.idByNode.get(t)??"node":"null"}unregister(t,n){this.byId.delete(t),this.removed.set(t,n)}takeRemoved(t){let n=this.removed.get(t);return n&&this.removed.delete(t),n??null}static ROOT="root"};function Te(e,t){let n=e.selfId(),o;return n&&(o=t.subscribe(()=>e.render([n])),e.onUnmount(()=>o?.())),t}function de(e,t){let n=e.selfId(),o=t.value!==void 0;if(o&&!t.onChange&&t.name&&(e.warned.has(t.name)||(e.warned.add(t.name),console.warn(`[weifuwu/${t.name}] \u53D7\u63A7\u6A21\u5F0F\uFF08value \u5DF2\u4F20\uFF09\u4F46\u672A\u63D0\u4F9B onChange\uFF0C\u4EA4\u4E92\u65E0\u6CD5\u751F\u6548\u3002
|
|
2
|
-
\u975E\u53D7\u63A7\uFF1A\u53BB\u6389 value\uFF1B\u53D7\u63A7\uFF1A\u4F20\u5165 onChange={(v) => setValue(v)}`))),!o&&n&&!e.uncontrolledValues.has(n)){e.uncontrolledValues.set(n,t.value);let s=e.onUnmount(i=>{i===n&&(e.uncontrolledValues.delete(n),s())})}let l=s=>{if(o){t.onChange?.(s);return}n&&e.uncontrolledValues.set(n,s),n?e.render([n]):e.render()};return{value:o?t.value:n?e.uncontrolledValues.get(n):t.value,setValue:l,controlled:o}}function Ve(e,t){let n=e.selfId(),o=de(e,{value:t.value,onChange:t.onChange,name:t.name});if(n&&!e.inputStates.has(n)){e.inputStates.set(n,{keyword:"",selectedLabel:""});let i=e.onUnmount(r=>{r===n&&(e.inputStates.delete(n),i())})}let l=n?e.inputStates.get(n):{keyword:"",selectedLabel:""},s=()=>{n?e.render([n]):e.render()};return{...o,get keyword(){return l.keyword},setKeyword(i){l.keyword=i,s()},get selectedLabel(){return l.selectedLabel},setSelectedLabel(i){l.selectedLabel=i,s()}}}function xe(e,t){let n=e.selfId(),o=!1;if(n){let u=e.onUnmount(d=>{d===n&&(o=!0,u())})}let l=()=>{o||(n?e.render([n]):e.render())},s={data:void 0,loading:!1,error:void 0},i=0,r=()=>{let u=++i;s.loading=!0,s.error=null,l(),Promise.resolve().then(()=>t()).then(d=>{i===u&&(s.data=d,s.loading=!1,l())}).catch(d=>{i===u&&(s.error=d,s.loading=!1,l())})};return r(),s.reload=r,s}function ke(e,t,n){return l=>{l?t(l):n?.()}}function J(e){return typeof window<"u"&&!!window.matchMedia?.("(hover: hover)").matches}function ce(e){return typeof window<"u"&&!!window.matchMedia?.("(prefers-reduced-motion: reduce)").matches}function Ce(e,t,n){let o=null,l=()=>{t(),n?.once&&o&&o.removeEventListener("animationend",l)};return i=>{i?(o=i,i.addEventListener("animationend",l)):o&&(o.removeEventListener("animationend",l),o=null)}}function Pe(e,t){let{onLongPress:n,duration:o=500}=t,l,s=0,i=0,r=null,u=()=>{clearTimeout(l),l=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,r=a,u(),l=setTimeout(()=>{l=void 0,r&&n(r)},o)},onPointerUp:u,onPointerLeave:u,onPointerMove:a=>{let c=Math.abs((a.clientX??0)-s),f=Math.abs((a.clientY??0)-i);(c>10||f>10)&&u()},onContextMenu:a=>{a.preventDefault(),n(a)}}}function Q(e,t){let n=e.selfId(),o="closed",l,s=()=>{o="closed",n?e.render([n]):e.render()};return{get phase(){return o},ref:r=>{r?l||(l=()=>{o==="exit"&&s()},r.addEventListener("animationend",l)):l=void 0},sync:r=>(r?o="open":o==="open"&&(o="exit"),o)}}function Re(e,t,n){let o=e.selfId(),l=ce(e),s=n?.duration??400,i=n?.ease==="linear"?f=>f:f=>1-Math.pow(1-f,3),r,u=t,d={value:l?t:0,reset:()=>{}},a=()=>{o?e.render([o]):e.render()},c=f=>{if(u=f,l){d.value=f,a();return}if(f===d.value)return;r&&cancelAnimationFrame(r);let g=d.value,m=performance.now(),y=h=>{let v=Math.min(1,(h-m)/s);d.value=Math.round(g+(f-g)*i(v)),v<1?(r=requestAnimationFrame(y),a()):(r=void 0,a())};r=requestAnimationFrame(y)};if(d.reset=f=>{f===u&&r||c(f)},o){let f=e.onUnmount(g=>{g===o&&(r&&(cancelAnimationFrame(r),r=void 0),f())})}return queueMicrotask(()=>c(t)),d}function I(){return{activeElement:()=>typeof document<"u"?document.activeElement:null,byId:e=>typeof document<"u"?document.getElementById(e):null,query:e=>typeof document<"u"?document.querySelector(e):null,queryAll:e=>typeof document<"u"?document.querySelectorAll(e):null,createElement:e=>typeof document<"u"?document.createElement(e):null,createElementNS:(e,t)=>typeof document<"u"?document.createElementNS(e,t):null,createDocumentFragment:()=>typeof document<"u"?document.createDocumentFragment():null,createComment:e=>typeof document<"u"?document.createComment(e):null,createTextNode:e=>typeof document<"u"?document.createTextNode(e):null,addEventListener:(e,t,n)=>{typeof window<"u"&&window.addEventListener(e,t,n)},removeEventListener:(e,t,n)=>{typeof window<"u"&&window.removeEventListener(e,t,n)},scrollTo:e=>{typeof window<"u"&&window.scrollTo(0,e)},matchMedia:e=>typeof window<"u"&&typeof window.matchMedia=="function"?window.matchMedia(e):null,visualViewport:()=>(typeof window<"u"?window:null)?.visualViewport??null,scrollingElement:()=>typeof document<"u"?document.scrollingElement:null,bodyElement:()=>typeof document<"u"?document.body:null,bodyAppend:e=>{typeof document<"u"&&document.body.appendChild(e)},bodyRemove:e=>{typeof document<"u"&&e.parentNode&&document.body.removeChild(e)},clearBody:()=>{typeof document<"u"&&(document.body.innerHTML="")},event:(e,t)=>{let n=typeof window<"u"?window:null,o=t&&(t.key||t.code)?"KeyboardEvent":t&&(t.clientX!==void 0||t.clientY!==void 0||t.pointerId!==void 0)?"PointerEvent":"Event";try{return new n[o](e,t)}catch{return new n.Event(e,t)}},dispatchEvent:(e,t)=>typeof e<"u"?e.dispatchEvent(t):!1,reload:()=>{typeof window<"u"&&window.location.reload()},navigate:e=>{typeof window>"u"||(window.history.pushState(null,"",e),window.dispatchEvent(new PopStateEvent("popstate",{state:null})))},downloadFile:(e,t,n="text/plain")=>{try{if(typeof document>"u"||typeof URL>"u"||!URL.createObjectURL)return!1;let o=new Blob([t],{type:n}),l=URL.createObjectURL(o),s=document.createElement("a");return s.href=l,s.download=e,document.body.appendChild(s),s.click(),document.body.removeChild(s),setTimeout(()=>URL.revokeObjectURL(l),1e3),!0}catch{return!1}},copyText:async e=>{let t=typeof window<"u"?window:null;if(t?.navigator?.clipboard?.writeText)try{return await t.navigator.clipboard.writeText(e),!0}catch{}try{if(typeof document>"u")return!1;let n=document.createElement("textarea");n.value=e,n.style.position="fixed",n.style.opacity="0",document.body.appendChild(n),n.select();let o=document.execCommand("copy");return document.body.removeChild(n),o}catch{return!1}},execCommand:(e,t)=>typeof document<"u"?document.execCommand(e,!1,t):!1,queryCommandState:e=>typeof document<"u"?document.queryCommandState(e):!1,queryCommandValue:e=>typeof document<"u"?document.queryCommandValue(e):"",selectionText:()=>typeof window<"u"?window.getSelection?.()?.toString()??null:null,getSelection:()=>typeof window<"u"?window.getSelection():null,viewportHeight:()=>typeof window<"u"?window.innerHeight:0,viewportWidth:()=>typeof window<"u"?window.innerWidth:0,pathname:()=>typeof window<"u"?window.location.pathname:"",createTreeWalker:(e,t)=>typeof document<"u"?document.createTreeWalker(e,t??NodeFilter.SHOW_ALL):null,scrollTop:()=>{let e=typeof document<"u"?document:null,t=typeof window<"u"?window:null;return e?.scrollingElement?.scrollTop??t?.scrollY??0},hash:()=>typeof window<"u"?window.location?.hash??"":"",setHash:e=>{typeof window<"u"&&(window.location.hash=e)},timeout:(e,t)=>typeof window<"u"?window.setTimeout(e,t):0,rootElement:()=>typeof document<"u"?document.documentElement:null,storageGet:e=>{try{return typeof window<"u"?window.localStorage?.getItem(e)??null:null}catch{return null}},storageSet:(e,t)=>{try{typeof window<"u"&&window.localStorage?.setItem(e,t)}catch{}}}}var Oe=I();function Se(e,t="bottom",n=6,o=!0){switch(t){case"bottom":return{top:e.bottom+n,left:o?e.left+e.width/2:e.left};case"top":return{top:e.top-n,left:o?e.left+e.width/2:e.left};case"left":return{top:o?e.top+e.height/2:e.top,left:e.left-n};case"right":return{top:o?e.top+e.height/2:e.top,left:e.right+n}}}function Me(e,t,n=8){if(!t)return e;let o=t.getBoundingClientRect();if(o.width===0&&o.height===0)return e;let l=Number.parseFloat(t.style.top)||o.top,s=Number.parseFloat(t.style.left)||o.left,i=e.top-l,r=e.left-s,u={top:o.top+i,bottom:o.bottom+i,left:o.left+r,right:o.right+r},d=Oe.viewportWidth(),a=Oe.viewportHeight(),c=e.top,f=e.left;return u.bottom>a-n&&(c=Math.max(n,c-(u.bottom-(a-n)))),u.top<n&&(c=Math.max(n,c+(n-u.top))),u.right>d-n&&(f=Math.max(n,f-(u.right-(d-n)))),u.left<n&&(f=Math.max(n,f+(n-u.left))),{top:c,left:f,width:e.width}}var vt=Symbol("Fragment"),De=Symbol("Portal");function Z(e,t,n=null){return{type:e,props:t,key:n,_child:null,_parentNode:null,_refNode:null,_id:null,_customId:null,_parentVNode:null,_ctxVersion:null,_lifecycle:"fresh"}}function Le(e,t,n=null){return e===vt?{...Z(e,t,n),type:e}:e===De?{...Z(e,t,n),type:e,_remoteEl:null,_placement:"remote"}:typeof e=="function"?{...Z(e,t,n),type:e,_render:null,_outputChild:null}:{...Z(e,t,n),type:e,el:null}}function fe(e,t,...n){let o=ht(t??{});return n.length>0&&(o.children=n.length===1?n[0]:n),Le(e,o,t?.key??null)}function ht(e){if(!e)return{};let t={};for(let n of Object.keys(e))n!=="key"&&(t[n]=e[n]);return t}function pe(e,t){let n=Le(De,{children:e,portalKey:t});return n.key=t??null,n}function me(e,t){let n=e.selfId(),o={top:0,left:0,refresh:()=>{}};if(!n)return o;let l={pos:o,getEl:t.el,isOpen:t.isOpen,compute:t.compute,panel:t.panel,margin:t.margin??8};e.popupTrackers.set(n,l),e.ensurePopupListeners();let s=e.onUnmount(i=>{i===n&&(e.popupTrackers.delete(n),s())});return o.refresh=()=>{let i=l.getEl();if(!i)return;let r=i.getBoundingClientRect();if(r.width===0&&r.height===0)return;let u=l.compute(r);Object.assign(o,Me(u,l.panel?.(),l.margin))},o}function _e(e,t){let n=e.selfId(),o=e.browser,l=J(e),s=()=>typeof t.trigger=="function"?t.trigger():t.trigger??"manual",i=t.open!==void 0,r=()=>!!t.disabled?.(),u=()=>i?typeof t.open=="function"?!!t.open():!!t.open:t.isOpen(),d=t.presence?Q(e,{name:t.name}):null,a,c=!1,f=p=>{if(!d)return p?"open":"closed";let w=d.sync(p);return p&&t.lockScroll&&!c&&(Et(),c=!0),w},g=p=>{r()||(i?t.onOpenChange?.(p):d?p?f(!0):u()&&f(!1):t.setOpen(p))},m=()=>{let p=t.placement;return typeof p=="function"?p():p??"bottom"},y=null,h=!1,v=me(e,{el:t.el??(()=>null),isOpen:()=>u(),compute:p=>{if(t.position){let w=t.position();return{top:w.y,left:w.x,width:w.width}}return Se(p,m(),t.gap??6,t.center!==!1)},panel:()=>y,margin:t.margin??8}),N=p=>{if(t.closeOnOutside===!1||t.mask||!u())return;let w=p.target;if(!(w instanceof Node))return;let S=t.el?.()??null;S&&S.contains(w)||y&&y.contains(w)||g(!1)},P=p=>{t.closeOnEscape!==!1&&(p.key!=="Escape"||!u()||g(!1))};if(o.addEventListener("mousedown",N),o.addEventListener("keydown",P),n){let p=e.onUnmount(w=>{w===n&&(o.removeEventListener("mousedown",N),o.removeEventListener("keydown",P),p())})}let k={},Ee=p=>typeof p=="function"?p():p??0,we=()=>Ee(t.openDelay),re=()=>Ee(t.closeDelay),R,C,st=()=>{clearTimeout(R),clearTimeout(C),R=void 0,C=void 0},it=p=>{if(r())return;let w=p.currentTarget,S=p.relatedTarget;w.contains(S)||(clearTimeout(C),C=void 0,R=setTimeout(()=>{R=void 0,g(!0)},we()))},lt=p=>{if(r())return;let w=p.currentTarget,S=p.relatedTarget;w.contains(S)||(clearTimeout(R),R=void 0,C=setTimeout(()=>{C=void 0,g(!1)},re()))},at=()=>{r()||(clearTimeout(C),C=void 0,R=setTimeout(()=>{R=void 0,g(!0)},we()))},ut=()=>{r()||(clearTimeout(R),R=void 0,C=setTimeout(()=>{C=void 0,g(!1)},re()))},B=()=>s()==="hover";if(k.onMouseOver=p=>{B()&&it(p)},k.onMouseOut=p=>{B()&<(p)},k.onClick=()=>{B()?l||g(!u()):s()==="click"&&g(!0)},k.onFocus=()=>{B()?at():s()==="focus"&&(clearTimeout(C),C=void 0,g(!0))},k.onBlur=()=>{B()?ut():s()==="focus"&&(clearTimeout(R),R=void 0,C=setTimeout(()=>{C=void 0,g(!1)},re()))},s()==="longpress"){let p,w=0,S=0,_=()=>{clearTimeout(p),p=void 0};k.onPointerDown=x=>{r()||(w=x.clientX??0,S=x.clientY??0,_(),p=setTimeout(()=>{p=void 0,t.onTrigger?.({clientX:w,clientY:S}),g(!0)},t.longPressDuration??500))},k.onPointerUp=_,k.onPointerLeave=_,k.onPointerMove=x=>{let le=Math.abs((x.clientX??0)-w),ae=Math.abs((x.clientY??0)-S);(le>10||ae>10)&&_()},k.onContextMenu=x=>{x.preventDefault(),t.onTrigger?.({clientX:x.clientX??0,clientY:x.clientY??0}),g(!0)}}if(k.onKeyDown=p=>{p.key==="Escape"&&t.closeOnEscape!==!1&&g(!1)},n){let p=e.onUnmount(w=>{w===n&&(st(),p())})}let dt=p=>{if(p){y=p;let w=()=>v.refresh();p.addEventListener("animationend",w,{once:!0})}else y=null},se=null,ie=null,be=p=>{dt(p),ie&&ie(p),d?.ref(p),t.trapFocus&&(p?a=Nt(p):(a?.(),a=void 0)),t.lockScroll&&!p&&c&&(wt(),c=!1)};return{get open(){return u()},setOpen:g,get phase(){return d?d.phase:u()?"open":"closed"},sync:f,wrapProps:k,portal:(p,w="popover")=>{if(r())return null;if(!(d?d.phase!=="closed":u()))return h=!1,se=null,null;let _=t.el?.()??null;(!h||_!==se)&&(_?v.refresh():queueMicrotask(()=>{u()&&v.refresh()}),h=!0,se=_);let x=p.props??{};ie=x.ref??null;let le=t.positioning==="none"?x.class??"":["wf-popup",x.class].filter(Boolean).join(" "),ae=t.positioning==="none"?{...x.style??{},position:"fixed"}:{...x.style??{},position:"fixed",top:`${v.top}px`,left:`${v.left}px`,...v.width!==void 0?{width:`${v.width}px`}:{},maxWidth:(()=>{let G=typeof t.width=="function"?t.width():t.width;return G!==void 0?`min(${G}px, calc(100vw - 32px))`:"calc(100vw - 32px)"})()},q={...p,props:{...x,class:le,style:ae,ref:be}};if(t.mask){let G=typeof t.mask=="object"?t.mask:fe("div",{class:"wf-popup-mask","data-portal-mask":w,onClick:t.maskClosable===!1?void 0:()=>g(!1)}),ct=t.maskCentered?fe("div",{class:"wf-cover",style:{"--wf-z":"var(--wf-z-popover)",pointerEvents:"none"}},{...q,props:{...q.props,style:{...x.style??{},pointerEvents:"auto"},ref:be}}):null,ft=t.maskCentered?void 0:{...q.props?.style??{},zIndex:"var(--wf-z-popover)"},pt=t.maskCentered?ct:{...q,props:{...q.props,style:ft}};return pe([G,pt],w)}return pe(q,w)},refresh:()=>v.refresh()}}function Ae(e,t){let n=e.selfId();if(n&&!e.openStates.has(n)){e.openStates.set(n,!1);let r=e.onUnmount(u=>{u===n&&(e.openStates.delete(n),r())})}let o=t.open!==void 0;o&&!t.onOpenChange&&t.name&&!e.warned.has(t.name)&&(e.warned.add(t.name),console.warn(`[weifuwu/${t.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 l=()=>o?!!t.open:n?e.openStates.get(n)??!1:!1,s=()=>{n?e.render([n]):e.render()},i=r=>{if(o){t.onOpenChange?.(r);return}n&&e.openStates.set(n,r),s()};return{get open(){return l()},setOpen:i,triggerProps:{onClick:()=>i(!0),onFocus:()=>{t.openOnFocus&&i(!0)}}}}var W=I(),X=0,He="",Ue="",Ie="",We="",ee=0;function je(){return typeof window<"u"&&typeof document<"u"}function Et(){if(X++,X>1||!je())return;ee=W.scrollTop();let e=W.bodyElement();He=e.style.overflow,Ue=e.style.position,Ie=e.style.top,We=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=`-${ee}px`,e.style.width="100%")}function wt(){if(X===0||(X--,X>0)||!je())return;let e=W.bodyElement();e.style.overflow=He,e.style.position=Ue,e.style.top=Ie,e.style.width=We,ee>0&&W.scrollTo(ee)}var bt='a[href], button:not([disabled]), input:not([disabled]), textarea:not([disabled]), select:not([disabled]), [tabindex]:not([tabindex="-1"])';function Nt(e){let t;return queueMicrotask(()=>{let n=e.querySelectorAll(bt);if(n.length===0)return;let o=n[0],l=n[n.length-1],s=r=>{r.key==="Tab"&&(r.shiftKey&&W.activeElement()===o?(r.preventDefault(),l.focus()):!r.shiftKey&&W.activeElement()===l&&(r.preventDefault(),o.focus()))},i=W.activeElement();o.focus(),e.addEventListener("keydown",s),t=()=>{e.removeEventListener("keydown",s),i?.focus()}}),()=>t?.()}function qe(e,t,n){let o=e.selfId(),l=e.browser,s=`media:${o}:${t}`;if(!e.mediaRegistry.has(s)){let i=l.matchMedia(t);n(i.matches);let r=d=>n(d.matches);i.addEventListener("change",r),e.mediaRegistry.set(s,{mql:i,handler:r});let u=e.onUnmount(d=>{if(d!==o)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 Fe(e,t,n){let o=e.browser,l=typeof t=="function"?{mobile:"(max-width: 639px)",tablet:"(min-width: 640px) and (max-width: 1023px)",desktop:"(min-width: 1024px)"}:t,s=typeof t=="function"?t:n,i=e.selfId(),r=`bp:${i}`;function u(){for(let[d,a]of Object.entries(l))if(o.matchMedia(a).matches)return d;return Object.keys(l)[0]??""}if(!e.mediaRegistry.has(r)){s(u());let d=[];for(let c of Object.values(l)){let f=o.matchMedia(c),g=()=>s(u());f.addEventListener("change",g),d.push({mql:f,handler:g})}e.mediaRegistry.set(r,{mqls:d});let a=e.onUnmount(c=>{if(c!==i)return;let f=e.mediaRegistry.get(r);if(f?.mqls)for(let g of f.mqls)try{g.mql.removeEventListener("change",g.handler)}catch{}e.mediaRegistry.delete(r),a()})}}function $e(e){let t=e.selfId(),n=e.browser,o={height:n.viewportHeight(),offsetTop:0,keyboardOpen:!1},l=()=>{t?e.render([t]):e.render()},s=()=>{let r=n.visualViewport();o.height=r?.height??n.viewportHeight(),o.offsetTop=r?.offsetTop??0,o.keyboardOpen=o.height<n.viewportHeight()*.9,l()},i=n.visualViewport();if(i?.addEventListener?(i.addEventListener("resize",s),i.addEventListener("scroll",s)):n.addEventListener("resize",s),t){let r=e.onUnmount(u=>{u===t&&(i?.removeEventListener?(i.removeEventListener("resize",s),i.removeEventListener("scroll",s)):n.removeEventListener("resize",s),r())})}return o}function Be(e,t){let n=e.selfId(),o={isIn:!1,ready:!1,observe:u,refresh:d,disconnect:a},l=null,s=null,i=()=>{n?e.render([n]):e.render()};function r(){if(s?.disconnect(),s=null,!l)return;let c=typeof t.rootMargin=="function"?t.rootMargin():t.rootMargin,f=typeof t.threshold=="function"?t.threshold():t.threshold;s=new IntersectionObserver(g=>{let m=g[g.length-1];if(!m)return;let y=m.isIntersecting,h=y!==o.isIn,v=!o.ready;o.isIn=y,o.ready=!0,t.onChange?.(m,y),(h||v)&&i()},{root:t.root?t.root():null,rootMargin:c??"0px",threshold:f??0}),s.observe(l)}function u(c){l=c,c?r():(s?.disconnect(),s=null,o.isIn=!1)}function d(){r()}function a(){s?.disconnect(),s=null}if(n){let c=e.onUnmount(f=>{f===n&&(a(),c())})}return o}function Xe(e,t){let n=e.selfId(),o=e.browser,l={y:0,refresh(){let r=s.getScroller();l.y=r instanceof Window?o.scrollingElement()?.scrollTop??o.scrollTop():r.scrollTop??0}},s={handle:l,getScroller:t.getScroller??(()=>window)};if(!n)return l.refresh(),l;e.scrollTrackers.set(n,s),e.ensurePopupListeners(),l.refresh();let i=e.onUnmount(r=>{r===n&&(e.scrollTrackers.delete(n),i())});return l}function Ke(e,t){let n=e.selfId(),o=e.browser;if(typeof window>"u")return()=>{};if(o.addEventListener("keydown",t),n){let l=e.onUnmount(s=>{s===n&&(o.removeEventListener("keydown",t),l())})}return()=>o.removeEventListener("keydown",t)}function ze(e,t){let n=e.browser,o=0,l=0,s=!1,i=a=>{s&&t.onMove(a,{x:a.clientX-o,y:a.clientY-l})},r=a=>{s&&(s=!1,n.removeEventListener("pointermove",i),n.removeEventListener("pointerup",r),t.onEnd?.(a))},u=a=>{s||(a.preventDefault(),s=!0,o=a.clientX,l=a.clientY,n.addEventListener("pointermove",i),n.addEventListener("pointerup",r),t.onStart?.(a))},d=e.selfId();if(d){let a=e.onUnmount(c=>{c===d&&(s&&(n.removeEventListener("pointermove",i),n.removeEventListener("pointerup",r),s=!1),a())})}return{onPointerDown:u}}function Ye(e,t){let n={};t.onDrop&&(n.onDrop=l=>{l.preventDefault(),t.onDrop(l)}),t.onDragOver&&(n.onDragOver=l=>{l.preventDefault(),t.onDragOver(l)}),t.onDragLeave&&(n.onDragLeave=l=>t.onDragLeave(l));let o={draggable:!0};if(t.onDragStart){let l=t.onDragStart;o.onDragStart=s=>{typeof document<"u"&&document.body.classList.add("wf-dragging"),l(s)}}if(t.onDragEnd){let l=t.onDragEnd;o.onDragEnd=s=>{typeof document<"u"&&document.body.classList.remove("wf-dragging"),l(s)}}return{dropProps:n,dragProps:o}}function Tt(e){return e.map(t=>{let n={role:t.role,content:t.content};return t.reasoning&&(n.reasoning_content=t.reasoning),n})}function ye(){return typeof crypto<"u"&&typeof crypto.randomUUID=="function"?crypto.randomUUID():`msg-${Date.now()}-${Math.random().toString(36).slice(2,10)}`}function Ge(e,t,n,o){n.initialMessages?e.messages=structuredClone(n.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 l=null;function s(){if(!e.streaming)return;let m=e.messages[e.messages.length-1];return m&&m.role==="assistant"&&m.status==="streaming"?m:void 0}function i(m,y,h){let v=s();switch(m){case"wf:token":v&&(v.content+=y.text);break;case"wf:tool_call":{v&&(v.toolCalls||(v.toolCalls=[]),v.toolCalls.push({call:y,status:"running"}));break}case"wf:tool_progress":{let N=y,P=v?.toolCalls?.find(k=>k.call.id===N.toolCallId);P&&(P.progress=N);break}case"wf:tool_result":{let N=y,P=v?.toolCalls?.find(k=>k.call.id===N.id);P&&(P.result=N,P.status=N.ok?"ok":"error");break}case"wf:approval_request":v&&(v.approval=y);break;case"wf:usage":v&&(v.usage=y);break;case"wf:step":e.step=y;break;case"wf:done":if(v){v.status="done",v.approval=void 0;let N=y;N.reasoning&&(v.reasoning=N.reasoning)}e.streaming=!1,e.step=null;break;case"wf:error":v&&(v.status="error",v.error=y,v.approval=void 0),e.error=y,e.streaming=!1,e.step=null;break;default:h?.(m,y);break}o?.()}function r(){let m=n.body?n.body(e.messages):{messages:Tt(e.messages)};l=t(n.url,m,{onToken:h=>i("wf:token",{text:h}),onToolCall:h=>i("wf:tool_call",h),onToolProgress:h=>i("wf:tool_progress",h),onToolResult:h=>i("wf:tool_result",h),onApproval:h=>i("wf:approval_request",h),onUsage:h=>i("wf:usage",h),onStep:h=>i("wf:step",h),onDone:h=>i("wf:done",h),onError:h=>i("wf:error",h),onEvent:(h,v)=>i(h,v,n.onEvent)},{signal:n.signal,headers:n.headers}),e.streaming=!0;let y=s();y&&l?.traceId&&(y.id=l.traceId)}function u(){if(e.streaming)return;let m=String(e.input??"").trim();m&&(e.input="",e.error=null,e.usage=null,e.step=null,e.messages.push({id:ye(),role:"user",content:m,status:"done"},{id:ye(),role:"assistant",content:"",status:"streaming",toolCalls:[]}),r(),o?.())}function d(){l?.abort(),e.streaming=!1,e.step=null;let m=e.messages[e.messages.length-1];m&&m.role==="assistant"&&m.status==="streaming"&&(!m.content&&(!m.toolCalls||m.toolCalls.length===0)?e.messages.pop():m.status="done"),o?.()}function a(){if(e.streaming)return;let m=-1;for(let y=e.messages.length-1;y>=0;y--)if(e.messages[y].role==="user"){m=y;break}m!==-1&&(e.messages.splice(m+1),e.error=null,e.usage=null,e.step=null,e.messages.push({id:ye(),role:"assistant",content:"",status:"streaming",toolCalls:[]}),r(),o?.())}function c(){l?.abort(),e.messages=[],e.input="",e.streaming=!1,e.error=null,e.usage=null,e.step=null,o?.()}async function f(m,y,h){let v=e.messages[e.messages.length-1],N=v?.role==="assistant"?v.approval:void 0;if(N&&(v.approval=void 0,o?.(),!!n.approveUrl))try{await fetch(n.approveUrl,{method:"POST",headers:{"Content-Type":"application/json",...n.headers},body:JSON.stringify(h?{id:N.id,decision:m,note:y,modifiedArgs:h}:{id:N.id,decision:m,note:y}),signal:n.signal})}catch(P){if(n.signal?.aborted)return;e.error={code:"provider_error",message:P instanceof Error?P.message:String(P)},o?.()}}function g(){l?.abort(),l=null}return{send:u,stop:d,retry:a,clear:c,approve:f,dispose:g}}function Je(e,t,n){let o=new AbortController,l=n?.signal;l&&(l.aborted?o.abort():l.addEventListener("abort",()=>o.abort(),{once:!0}));let s=n?.traceId??Pt(),i=n?.record!==!1,r=[],u=(async()=>{let d;try{d=await fetch(e,{method:"POST",headers:{"Content-Type":"application/json","X-Trace-Id":s,Accept:"text/event-stream",...n?.headers},body:JSON.stringify(t),signal:o.signal})}catch(a){if(o.signal.aborted)return;n?.onError?.({code:"provider_error",message:a instanceof Error?a.message:String(a)});return}if(!d.ok){n?.onError?.({code:Ct(d.status),message:`HTTP ${d.status} ${d.statusText}`});return}try{for await(let{name:a,data:c}of xt(d.body)){if(o.signal.aborted)return;kt(r,{name:a,data:c},i),Vt(a,c,n??{})}}catch(a){if(o.signal.aborted)return;n?.onError?.({code:"provider_error",message:a instanceof Error?a.message:String(a)})}})();return{abort:()=>o.abort(),done:u,traceId:s,events:r}}function Vt(e,t,n){switch(e){case"wf:token":return n.onToken?.(t.text);case"wf:tool_call":return n.onToolCall?.(t);case"wf:tool_result":return n.onToolResult?.(t);case"wf:tool_progress":return n.onToolProgress?.(t);case"wf:step":return n.onStep?.(t);case"wf:approval_request":return n.onApproval?.(t);case"wf:usage":return n.onUsage?.(t);case"wf:done":return n.onDone?.(t);case"wf:error":return n.onError?.(t);default:return n.onEvent?.(e,t)}}async function*xt(e){let t=e.getReader(),n=new TextDecoder,o="";try{for(;;){let{done:l,value:s}=await t.read();if(l)break;o+=n.decode(s,{stream:!0});let i=o.split(`
|
|
1
|
+
function te(e){if(e==null||typeof e=="boolean")return"null";if(typeof e=="string"||typeof e=="number")return"text";let t=e.type;return typeof t=="function"?"comp":typeof t=="symbol"?t===Y?"app":e.props?.portalKey!=null?"portal":"frag":"native"}function je(e){return e==null||typeof e=="boolean"?[]:Array.isArray(e)?e.flatMap(t=>je(t)):[e]}function C(e){if(e.children!=null)return je(e.children);let t=e.props?.children??[];return je(t)}var F=Symbol("v3-fragment"),ne=Symbol("v3-portal"),Y=Symbol("v3-app");function M(e,t,...n){let o=t?{...t}:{};return n.length>0&&(o.children=n.length===1?n[0]:n),{type:e,props:o,key:t?.key??null}}function ye(e,t){return{type:ne,props:{children:Array.isArray(e)?e:[e],portalKey:t??"default"},key:t??null}}function g(e,t,n,o){let r={entity:e,action:t,ts:Date.now()};return n!=null&&(r.target=n),o!=null&&(r.payload=o),r}function ln(e){return`${e.entity}:${e.action}`}function it(e=2e4,t){let n=[],o=0,r=0,s=0,l=!1,i=t?.watermark??.8,u=new Set,a=c=>n[(o+c)%e],d=(c,p)=>{n[(o+c)%e]=p},f=(c,p)=>{r<e?(d(r,c),r++):(d(0,c),o=(o+1)%e,p||(s++,(s%64===1||s===1)&&f(g("stream","overflow",void 0,{capacity:e,count:s,dropped:`${c.entity}:${c.action}`,droppedTarget:c.target??null}),!0)))};return{emit(c){f(c,!1),i>0&&!l&&r>=e*i&&(l=!0,f(g("stream","watermark",void 0,{usage:r,capacity:e,ratio:i}),!0));for(let p of u)try{p(c)}catch{}},subscribe(c,p){let y=typeof c=="function"?null:c,m=typeof c=="function"?c:p,v=h=>{if(y==null){m(h);return}(Array.isArray(y)?y:[y]).includes(h.entity)&&m(h)};return u.add(v),()=>{u.delete(v)}},size(){return r},capacity(){return e},overflowCount(){return s},events(){let c=new Array(r);for(let p=0;p<r;p++)c[p]=a(p);return c},inverse(c){switch(c.entity+":"+c.action){case"node:insert":return g("node","remove",c.target,{parent:c.payload?.parent});case"node:remove":return null;case"prop:update":return g("prop","update",c.target,{key:c.payload?.key,value:c.payload?.prev,prev:c.payload?.value});case"text:update":return g("text","update",c.target,{value:c.payload?.prev,prev:c.payload?.value});case"node:move":return null;default:return null}},reset(){o=0,r=0,s=0,l=!1}}}var w=it(),un=0;function J(){return`n${++un}`}var de=new Map,Ne=new Set,Ee=new Map,he=new Map,we=new Map,be=new Map,lt={focus:"focusin",blur:"focusout"},dn=new Set(["error","load","loadstart","loadend","abort","unload","resize","message"]),cn=new Set(["input","change","compositionstart","compositionend"]);function ut(e,t,n,o=!1){let r=de.get(t);r||(r=new Map,de.set(t,r)),r.set(e,{handler:n,once:o})}function dt(e,t){de.get(t)?.delete(e)&&w.emit(g("event","unbind",e,{event:t}))}function Me(e){for(let[t,n]of de)n.delete(e)&&w.emit(g("event","unbind",e,{event:t}))}function oe(e,t,n,o=!1){let r=e.getAttribute("data-v3-id");if(!r)return()=>{};ut(r,t,n,o);let s=ct(e);return s&&ft(s,t),()=>dt(r,t)}function fn(){de.clear(),Ne.clear(),Ee.clear(),he.clear(),we.clear(),be.clear();for(let e of ue)e();ue=[],We=!1}function Q(e){Ne.add(e),pn()}var We=!1,ze=0,ue=[];function at(){let e=document.getSelection?.(),t=e?.toString?.()??"",n=e?.anchorNode;return{target:n&&n.nodeType===1?n.getAttribute?.("data-v3-id")??null:n?.parentElement?.getAttribute?.("data-v3-id")??null,text:t}}function pn(){if(We||(We=!0,typeof document>"u"))return;let e=()=>{ze||(ze=requestAnimationFrame(()=>{ze=0;try{let{target:o,text:r}=at();if(!r)return;w.emit(g("text","select",void 0,{target:o,length:r.length,sample:r.slice(0,40)}))}catch{}}))};ue.push(S(document,"selectionchange",e));let t=o=>{let{target:r,text:s}=at(),l=s;return o.type==="paste"&&(l=o.clipboardData?.getData?.("text")??""),{target:r,sample:l.slice(0,40)}},n=o=>{if(!(o.type!=="copy"&&o.type!=="cut"&&o.type!=="paste"))try{let{target:r,sample:s}=t(o);if(!s)return;w.emit(g("text",o.type,void 0,{target:r,length:s.length,sample:s}))}catch{}};ue.push(S(document,"copy",n)),ue.push(S(document,"cut",n)),ue.push(S(document,"paste",n))}function mn(e){Ne.delete(e),Ee.delete(e);let t=he.get(e);if(t){for(let[n,o]of t)e.removeEventListener(n,o);he.delete(e)}}function ct(e){let t=e;for(;t;){if(t.nodeType===1&&Ne.has(t))return t;t=t.parentNode}return null}function ft(e,t){let n=Ee.get(e)??new Set;if(n.has(t))return;n.add(t),Ee.set(e,n);let o=lt[t]??t,r=u=>gn(u),s=dn.has(o);e.addEventListener(o,r,s?{capture:!0}:void 0);let l=he.get(e)??new Map;l.set(o,r),he.set(e,l);let i=e.hasAttribute("data-wf-portal-key")?`portal:${e.getAttribute("data-wf-portal-key")}`:"root";w.emit(g("event","bind",i,{event:o,delegated:!0}))}function S(e,t,n,o){let r=lt[t]??t,s=we.get(r);s||(s=new Set,we.set(r,s)),s.add(n);let l=be.get(e)??new Map;if(!l.has(r)){let i=a=>{for(let d of we.get(r)??[])try{d(a)}catch{}},u=o?.capture?{capture:!0,passive:o?.passive??!1}:void 0;e.addEventListener(r,i,u),l.set(r,i),be.set(e,l),w.emit(g("event","bind",e===window?"window":"document",{event:r,delegated:!0,capture:o?.capture??!1}))}return()=>{if(s.delete(n),s.size===0){let i=l.get(r);i&&e.removeEventListener(r,i,o?.capture?{capture:!0}:void 0),l.delete(r),l.size===0&&be.delete(e),w.emit(g("event","unbind",e===window?"window":"document",{event:r}))}}}function xe(e,t,n,o){if(ut(e,t,n),o){let r=ct(o);r&&ft(r,t)}}function gn(e){let t=e.target;t&&t.nodeType===3&&(t=t.parentElement);let n=de.get(e.type);if(n)for(;t;){if(!t.hasAttribute?.("data-v3-id")){let r=t.closest?.("[data-v3-id]");if(r&&r!==t){t=r;continue}}let o=t.getAttribute?.("data-v3-id");if(o){let r=n.get(o);if(r){try{Object.defineProperty(e,"currentTarget",{value:t,configurable:!0})}catch{}try{r.handler(e)}catch{}if(cn.has(e.type)){let s=t?.value??null;w.emit(g("text","input",o,{event:e.type,value:typeof s=="string"?s.slice(0,100):null}))}if(r.once&&(n.delete(o),w.emit(g("event","unbind",o,{event:e.type}))),e.cancelBubble)break}}t=t.parentElement}}var $e=new Map;function qe(e){e._id&&$e.set(e._id,e)}function pt(e){$e.delete(e)}function mt(e){return $e.get(e)??null}function re(e){let t=document.getElementById("__wf_portal");t||(t=document.createElement("div"),t.id="__wf_portal",document.body.appendChild(t));let n=t.querySelector(`[data-wf-portal-key="${e}"]`);return n||(n=document.createElement("div"),n.setAttribute("data-wf-portal-key",e),t.appendChild(n)),n}var A=class{byId=new Map;idByNode=new WeakMap;removed=new Map;static PORTAL=t=>`portal:${t}`;resolveParent(t){return t.startsWith("portal:")?re(t.slice(7)):this.get(t)}get(t){return t.startsWith("portal:")?re(t.slice(7)):this.byId.get(t)??null}register(t,n){this.byId.set(t,n),this.idByNode.set(n,t)}idOf(t){return t?t.nodeType===1?t.getAttribute("data-v3-id")??this.idByNode.get(t)??"el":this.idByNode.get(t)??"node":"null"}unregister(t,n){this.byId.delete(t),this.removed.set(t,n)}takeRemoved(t){let n=this.removed.get(t);return n&&this.removed.delete(t),n??null}static ROOT="root"};function I(){return{activeElement:()=>typeof document<"u"?document.activeElement:null,byId:e=>typeof document<"u"?document.getElementById(e):null,query:e=>typeof document<"u"?document.querySelector(e):null,queryAll:e=>typeof document<"u"?document.querySelectorAll(e):null,createElement:e=>typeof document<"u"?document.createElement(e):null,createElementNS:(e,t)=>typeof document<"u"?document.createElementNS(e,t):null,createDocumentFragment:()=>typeof document<"u"?document.createDocumentFragment():null,createComment:e=>typeof document<"u"?document.createComment(e):null,createTextNode:e=>typeof document<"u"?document.createTextNode(e):null,addEventListener:(e,t,n)=>{typeof window<"u"&&window.addEventListener(e,t,n)},removeEventListener:(e,t,n)=>{typeof window<"u"&&window.removeEventListener(e,t,n)},scrollTo:e=>{typeof window<"u"&&window.scrollTo(0,e)},matchMedia:e=>typeof window<"u"&&typeof window.matchMedia=="function"?window.matchMedia(e):null,visualViewport:()=>(typeof window<"u"?window:null)?.visualViewport??null,scrollingElement:()=>typeof document<"u"?document.scrollingElement:null,bodyElement:()=>typeof document<"u"?document.body:null,bodyAppend:e=>{typeof document<"u"&&document.body.appendChild(e)},bodyRemove:e=>{typeof document<"u"&&e.parentNode&&document.body.removeChild(e)},clearBody:()=>{typeof document<"u"&&(document.body.innerHTML="")},event:(e,t)=>{let n=typeof window<"u"?window:null,o=t&&(t.key||t.code)?"KeyboardEvent":t&&(t.clientX!==void 0||t.clientY!==void 0||t.pointerId!==void 0)?"PointerEvent":"Event";try{return new n[o](e,t)}catch{return new n.Event(e,t)}},dispatchEvent:(e,t)=>typeof e<"u"?e.dispatchEvent(t):!1,reload:()=>{typeof window<"u"&&window.location.reload()},navigate:e=>{typeof window>"u"||(window.history.pushState(null,"",e),window.dispatchEvent(new PopStateEvent("popstate",{state:null})))},downloadFile:(e,t,n="text/plain")=>{try{if(typeof document>"u"||typeof URL>"u"||!URL.createObjectURL)return!1;let o=new Blob([t],{type:n}),r=URL.createObjectURL(o),s=document.createElement("a");return s.href=r,s.download=e,document.body.appendChild(s),s.click(),document.body.removeChild(s),setTimeout(()=>URL.revokeObjectURL(r),1e3),!0}catch{return!1}},copyText:async e=>{let t=typeof window<"u"?window:null;if(t?.navigator?.clipboard?.writeText)try{return await t.navigator.clipboard.writeText(e),!0}catch{}try{if(typeof document>"u")return!1;let n=document.createElement("textarea");n.value=e,n.style.position="fixed",n.style.opacity="0",document.body.appendChild(n),n.select();let o=document.execCommand("copy");return document.body.removeChild(n),o}catch{return!1}},execCommand:(e,t)=>typeof document<"u"?document.execCommand(e,!1,t):!1,queryCommandState:e=>typeof document<"u"?document.queryCommandState(e):!1,queryCommandValue:e=>typeof document<"u"?document.queryCommandValue(e):"",selectionText:()=>typeof window<"u"?window.getSelection?.()?.toString()??null:null,getSelection:()=>typeof window<"u"?window.getSelection():null,viewportHeight:()=>typeof window<"u"?window.innerHeight:0,viewportWidth:()=>typeof window<"u"?window.innerWidth:0,pathname:()=>typeof window<"u"?window.location.pathname:"",createTreeWalker:(e,t)=>typeof document<"u"?document.createTreeWalker(e,t??NodeFilter.SHOW_ALL):null,scrollTop:()=>{let e=typeof document<"u"?document:null,t=typeof window<"u"?window:null;return e?.scrollingElement?.scrollTop??t?.scrollY??0},hash:()=>typeof window<"u"?window.location?.hash??"":"",setHash:e=>{typeof window<"u"&&(window.location.hash=e)},timeout:(e,t)=>typeof window<"u"?window.setTimeout(e,t):0,rootElement:()=>typeof document<"u"?document.documentElement:null,storageGet:e=>{try{return typeof window<"u"?window.localStorage?.getItem(e)??null:null}catch{return null}},storageSet:(e,t)=>{try{typeof window<"u"&&window.localStorage?.setItem(e,t)}catch{}}}}var Fe=new Map;function yn(e,t){Fe.set(e,t)}function Be(e){return Fe.get(e)??null}function hn(){Fe.clear()}function gt(e,t){let n=e.selfId(),o;return n&&(o=t.subscribe(()=>e.render([n])),e.onUnmount(()=>o?.())),t}function Ke(e,t){let n=e.selfId(),o=t.value!==void 0;if(o&&!t.onChange&&t.name&&(e.warned.has(t.name)||(e.warned.add(t.name),console.warn(`[weifuwu/${t.name}] \u53D7\u63A7\u6A21\u5F0F\uFF08value \u5DF2\u4F20\uFF09\u4F46\u672A\u63D0\u4F9B onChange\uFF0C\u4EA4\u4E92\u65E0\u6CD5\u751F\u6548\u3002
|
|
2
|
+
\u975E\u53D7\u63A7\uFF1A\u53BB\u6389 value\uFF1B\u53D7\u63A7\uFF1A\u4F20\u5165 onChange={(v) => setValue(v)}`))),!o&&n&&!e.uncontrolledValues.has(n)){e.uncontrolledValues.set(n,t.value);let s=e.onUnmount(l=>{l===n&&(e.uncontrolledValues.delete(n),s())})}let r=s=>{if(o){t.onChange?.(s);return}n&&e.uncontrolledValues.set(n,s),n?e.render([n]):e.render()};return{value:o?t.value:n?e.uncontrolledValues.get(n):t.value,setValue:r,controlled:o}}function yt(e,t){let n=e.selfId(),o=Ke(e,{value:t.value,onChange:t.onChange,name:t.name});if(n&&!e.inputStates.has(n)){e.inputStates.set(n,{keyword:"",selectedLabel:""});let l=e.onUnmount(i=>{i===n&&(e.inputStates.delete(n),l())})}let r=n?e.inputStates.get(n):{keyword:"",selectedLabel:""},s=()=>{n?e.render([n]):e.render()};return{...o,get keyword(){return r.keyword},setKeyword(l){r.keyword=l,s()},get selectedLabel(){return r.selectedLabel},setSelectedLabel(l){r.selectedLabel=l,s()}}}function ht(e,t){let n=e.selfId(),o=!1;if(n){let u=e.onUnmount(a=>{a===n&&(o=!0,u())})}let r=()=>{o||(n?e.render([n]):e.render())},s={data:void 0,loading:!1,error:void 0},l=0,i=()=>{let u=++l;s.loading=!0,s.error=null,r(),Promise.resolve().then(()=>t()).then(a=>{l===u&&(s.data=a,s.loading=!1,r())}).catch(a=>{l===u&&(s.error=a,s.loading=!1,r())})};return i(),s.reload=i,s}function vt(e,t,n){return r=>{r?t(r):n?.()}}function ke(e){return typeof window<"u"&&!!window.matchMedia?.("(hover: hover)").matches}function Ge(e){return typeof window<"u"&&!!window.matchMedia?.("(prefers-reduced-motion: reduce)").matches}function wt(e,t){let{onLongPress:n,duration:o=500}=t,r,s=0,l=0,i=null,u=()=>{clearTimeout(r),r=void 0},a=e.selfId();if(a){let d=e.onUnmount(f=>{f===a&&(u(),d())})}return{onPointerDown:d=>{s=d.clientX??0,l=d.clientY??0,i=d,u(),r=setTimeout(()=>{r=void 0,i&&n(i)},o)},onPointerUp:u,onPointerLeave:u,onPointerMove:d=>{let f=Math.abs((d.clientX??0)-s),c=Math.abs((d.clientY??0)-l);(f>10||c>10)&&u()},onContextMenu:d=>{d.preventDefault(),n(d)}}}function Ve(e,t){let n=e.selfId(),o="closed",r,s=()=>{o="closed",n?e.render([n]):e.render()},l=null;return{get phase(){return o},ref:u=>{u?l||(r=()=>{o==="exit"&&s()},l=oe(u,"animationend",r)):(l?.(),l=null,r=void 0)},sync:u=>(u?o="open":o==="open"&&(o="exit"),o)}}function bt(e,t,n){let o=e.selfId(),r=Ge(e),s=n?.duration??400,l=n?.ease==="linear"?c=>c:c=>1-Math.pow(1-c,3),i,u=t,a={value:r?t:0,reset:()=>{}},d=()=>{o?e.render([o]):e.render()},f=c=>{if(u=c,r){a.value=c,d();return}if(c===a.value)return;i&&cancelAnimationFrame(i);let p=a.value,y=performance.now(),m=v=>{let h=Math.min(1,(v-y)/s);a.value=Math.round(p+(c-p)*l(h)),h<1?(i=requestAnimationFrame(m),d()):(i=void 0,d())};i=requestAnimationFrame(m)};if(a.reset=c=>{c===u&&i||f(c)},o){let c=e.onUnmount(p=>{p===o&&(i&&(cancelAnimationFrame(i),i=void 0),c())})}return queueMicrotask(()=>f(t)),a}var Et=I();function Nt(e,t="bottom",n=6,o=!0){switch(t){case"bottom":return{top:e.bottom+n,left:o?e.left+e.width/2:e.left};case"top":return{top:e.top-n,left:o?e.left+e.width/2:e.left};case"left":return{top:o?e.top+e.height/2:e.top,left:e.left-n};case"right":return{top:o?e.top+e.height/2:e.top,left:e.right+n}}}function Ce(e,t,n=8){if(!t)return e;let o=t.getBoundingClientRect();if(o.width===0&&o.height===0)return e;let r=Number.parseFloat(t.style.top)||o.top,s=Number.parseFloat(t.style.left)||o.left,l=e.top-r,i=e.left-s,u={top:o.top+l,bottom:o.bottom+l,left:o.left+i,right:o.right+i},a=Et.viewportWidth(),d=Et.viewportHeight(),f=e.top,c=e.left;return u.bottom>d-n&&(f=Math.max(n,f-(u.bottom-(d-n)))),u.top<n&&(f=Math.max(n,f+(n-u.top))),u.right>a-n&&(c=Math.max(n,c-(u.right-(a-n)))),u.left<n&&(c=Math.max(n,c+(n-u.left))),{top:f,left:c,width:e.width}}function Xe(e,t){let n=e.selfId(),o={top:0,left:0,refresh:()=>{}};if(!n)return o;let r={pos:o,getEl:t.el,isOpen:t.isOpen,compute:t.compute,panel:t.panel,margin:t.margin??8};e.popupTrackers.set(n,r),e.ensurePopupListeners();let s=e.onUnmount(l=>{l===n&&(e.popupTrackers.delete(n),s())});return o.refresh=()=>{let l=r.getEl();if(!l)return;let i=l.getBoundingClientRect();if(i.width===0&&i.height===0)return;let u=r.compute(i);Object.assign(o,Ce(u,r.panel?.(),r.margin))},o}function Mt(e,t){let n=e.selfId(),o=e.browser,r=ke(e),s=()=>typeof t.trigger=="function"?t.trigger():t.trigger??"manual",l=t.open!==void 0,i=()=>!!t.disabled?.(),u=()=>l?typeof t.open=="function"?!!t.open():!!t.open:t.isOpen(),a=t.presence?Ve(e,{name:t.name}):null,d,f=!1,c=E=>{if(!a)return E?"open":"closed";let P=a.sync(E);return E&&t.lockScroll&&!f&&(vn(),f=!0),P},p=E=>{i()||(l?t.onOpenChange?.(E):a?E?c(!0):u()&&c(!1):t.setOpen(E))},y=()=>{let E=t.placement;return typeof E=="function"?E():E??"bottom"},m=null,v=!1,h=Xe(e,{el:t.el??(()=>null),isOpen:()=>u(),compute:E=>{if(t.position){let P=t.position();return{top:P.y,left:P.x,width:P.width}}return Nt(E,y(),t.gap??6,t.center!==!1)},panel:()=>m,margin:t.margin??8}),V=E=>{if(t.closeOnOutside===!1||t.mask||!u())return;let P=E.target;if(!(P instanceof Node))return;let D=t.el?.()??null;D&&D.contains(P)||m&&m.contains(P)||p(!1)},b=E=>{t.closeOnEscape!==!1&&(E.key!=="Escape"||!u()||p(!1))},N=S(o,"mousedown",V),L=S(o,"keydown",b);if(n){let E=e.onUnmount(P=>{P===n&&(N(),L(),E())})}let k={},T=E=>typeof E=="function"?E():E??0,z=()=>T(t.openDelay),W=()=>T(t.closeDelay),O,_,Qt=()=>{clearTimeout(O),clearTimeout(_),O=void 0,_=void 0},Zt=E=>{if(i())return;let P=E.currentTarget,D=E.relatedTarget;P.contains(D)||(clearTimeout(_),_=void 0,O=setTimeout(()=>{O=void 0,p(!0)},z()))},en=E=>{if(i())return;let P=E.currentTarget,D=E.relatedTarget;P.contains(D)||(clearTimeout(O),O=void 0,_=setTimeout(()=>{_=void 0,p(!1)},W()))},tn=()=>{i()||(clearTimeout(_),_=void 0,O=setTimeout(()=>{O=void 0,p(!0)},z()))},nn=()=>{i()||(clearTimeout(O),O=void 0,_=setTimeout(()=>{_=void 0,p(!1)},W()))},ge=()=>s()==="hover";if(k.onMouseOver=E=>{ge()&&Zt(E)},k.onMouseOut=E=>{ge()&&en(E)},k.onClick=()=>{ge()?r||p(!u()):s()==="click"&&p(!0)},k.onFocus=()=>{ge()?tn():s()==="focus"&&(clearTimeout(_),_=void 0,p(!0))},k.onBlur=()=>{ge()?nn():s()==="focus"&&(clearTimeout(O),O=void 0,_=setTimeout(()=>{_=void 0,p(!1)},W()))},s()==="longpress"){let E,P=0,D=0,X=()=>{clearTimeout(E),E=void 0};k.onPointerDown=H=>{i()||(P=H.clientX??0,D=H.clientY??0,X(),E=setTimeout(()=>{E=void 0,t.onTrigger?.({clientX:P,clientY:D}),p(!0)},t.longPressDuration??500))},k.onPointerUp=X,k.onPointerLeave=X,k.onPointerMove=H=>{let De=Math.abs((H.clientX??0)-P),Ue=Math.abs((H.clientY??0)-D);(De>10||Ue>10)&&X()},k.onContextMenu=H=>{H.preventDefault(),t.onTrigger?.({clientX:H.clientX??0,clientY:H.clientY??0}),p(!0)}}if(k.onKeyDown=E=>{E.key==="Escape"&&t.closeOnEscape!==!1&&p(!1)},n){let E=e.onUnmount(P=>{P===n&&(Qt(),E())})}let on=E=>{E?(m=E,oe(E,"animationend",()=>h.refresh(),!0)):m=null},Re=null,Ie=null,st=E=>{on(E),Ie&&Ie(E),a?.ref(E),t.trapFocus&&(E?d=En(E):(d?.(),d=void 0)),t.lockScroll&&!E&&f&&(wn(),f=!1)};return{get open(){return u()},setOpen:p,get phase(){return a?a.phase:u()?"open":"closed"},sync:c,wrapProps:k,portal:(E,P="popover")=>{if(i())return null;if(!(a?a.phase!=="closed":u()))return v=!1,Re=null,null;let X=t.el?.()??null;(!v||X!==Re)&&(X?h.refresh():queueMicrotask(()=>{u()&&h.refresh()}),v=!0,Re=X);let H=E.props??{};Ie=H.ref??null;let De=t.positioning==="none"?H.class??"":["wf-popup",H.class].filter(Boolean).join(" "),Ue=t.positioning==="none"?{...H.style??{},position:"fixed"}:{...H.style??{},position:"fixed",top:`${h.top}px`,left:`${h.left}px`,...h.width!==void 0?{width:`${h.width}px`}:{},maxWidth:(()=>{let ve=typeof t.width=="function"?t.width():t.width;return ve!==void 0?`min(${ve}px, calc(100vw - 32px))`:"calc(100vw - 32px)"})()},le={...E,props:{...H,class:De,style:Ue,ref:st}};if(t.mask){let ve=typeof t.mask=="object"?t.mask:M("div",{class:"wf-popup-mask","data-portal-mask":P,onClick:t.maskClosable===!1?void 0:()=>p(!1)}),rn=t.maskCentered?M("div",{class:"wf-cover",style:{"--wf-z":"var(--wf-z-popover)",pointerEvents:"none"}},{...le,props:{...le.props,style:{...H.style??{},pointerEvents:"auto"},ref:st}}):null,sn=t.maskCentered?void 0:{...le.props?.style??{},zIndex:"var(--wf-z-popover)"},an=t.maskCentered?rn:{...le,props:{...le.props,style:sn}};return ye([ve,an],P)}return ye(le,P)},refresh:()=>h.refresh()}}function xt(e,t){let n=e.selfId();if(n&&!e.openStates.has(n)){e.openStates.set(n,!1);let i=e.onUnmount(u=>{u===n&&(e.openStates.delete(n),i())})}let o=t.open!==void 0;o&&!t.onOpenChange&&t.name&&!e.warned.has(t.name)&&(e.warned.add(t.name),console.warn(`[weifuwu/${t.name}] \u53D7\u63A7\u6A21\u5F0F\uFF08open \u5DF2\u4F20\uFF09\u4F46\u672A\u63D0\u4F9B onOpenChange\uFF0C\u4EA4\u4E92\u65E0\u6CD5\u751F\u6548\u3002
|
|
3
|
+
\u975E\u53D7\u63A7\uFF1A\u53BB\u6389 open\uFF1B\u53D7\u63A7\uFF1A\u4F20\u5165 onOpenChange={(o) => setOpen(o)}`));let r=()=>o?!!t.open:n?e.openStates.get(n)??!1:!1,s=()=>{n?e.render([n]):e.render()},l=i=>{if(o){t.onOpenChange?.(i);return}n&&e.openStates.set(n,i),s()};return{get open(){return r()},setOpen:l,triggerProps:{onClick:()=>l(!0),onFocus:()=>{t.openOnFocus&&l(!0)}}}}var ie=I(),se=0,kt="",Vt="",Ct="",Tt="",Te=0;function Pt(){return typeof window<"u"&&typeof document<"u"}function vn(){if(se++,w.emit(g("effect","lock",void 0,{depth:se})),se>1||!Pt())return;Te=ie.scrollTop();let e=ie.bodyElement();kt=e.style.overflow,Vt=e.style.position,Ct=e.style.top,Tt=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=`-${Te}px`,e.style.width="100%")}function wn(){if(se===0||(se--,w.emit(g("effect","unlock",void 0,{depth:se})),se>0)||!Pt())return;let e=ie.bodyElement();e.style.overflow=kt,e.style.position=Vt,e.style.top=Ct,e.style.width=Tt,Te>0&&ie.scrollTo(Te)}var bn='a[href], button:not([disabled]), input:not([disabled]), textarea:not([disabled]), select:not([disabled]), [tabindex]:not([tabindex="-1"])';function En(e){let t;return queueMicrotask(()=>{let n=e.querySelectorAll(bn);if(n.length===0)return;let o=n[0],r=n[n.length-1],s=u=>{u.key==="Tab"&&(u.shiftKey&&ie.activeElement()===o?(u.preventDefault(),r.focus()):!u.shiftKey&&ie.activeElement()===r&&(u.preventDefault(),o.focus()))},l=ie.activeElement();w.emit(g("effect","focus",void 0,{mode:"trap-start"})),o.focus();let i=S(e,"keydown",s);t=()=>{i(),w.emit(g("effect","focus",void 0,{mode:"restore"})),l?.focus()}}),()=>t?.()}function St(e,t,n){let o=e.selfId(),r=e.browser,s=`media:${o}:${t}`;if(!e.mediaRegistry.has(s)){let l=r.matchMedia(t);n(l.matches);let i=a=>n(a.matches);S(l,"change",i),e.mediaRegistry.set(s,{mql:l,handler:i});let u=e.onUnmount(a=>{if(a!==o)return;let d=e.mediaRegistry.get(s);if(d?.mql&&d.handler)try{d.mql.removeEventListener("change",d.handler)}catch{}e.mediaRegistry.delete(s),u()})}}function Lt(e,t,n){let o=e.browser,r=typeof t=="function"?{mobile:"(max-width: 639px)",tablet:"(min-width: 640px) and (max-width: 1023px)",desktop:"(min-width: 1024px)"}:t,s=typeof t=="function"?t:n,l=e.selfId(),i=`bp:${l}`;function u(){for(let[a,d]of Object.entries(r))if(o.matchMedia(d).matches)return a;return Object.keys(r)[0]??""}if(!e.mediaRegistry.has(i)){s(u());let a=[];for(let f of Object.values(r)){let c=o.matchMedia(f),p=()=>s(u());S(c,"change",p),a.push({mql:c,handler:p})}e.mediaRegistry.set(i,{mqls:a});let d=e.onUnmount(f=>{if(f!==l)return;let c=e.mediaRegistry.get(i);if(c?.mqls)for(let p of c.mqls)try{p.mql.removeEventListener("change",p.handler)}catch{}e.mediaRegistry.delete(i),d()})}}function At(e){let t=e.selfId(),n=e.browser,o={height:n.viewportHeight(),offsetTop:0,keyboardOpen:!1},r=()=>{t?e.render([t]):e.render()},s=()=>{let a=n.visualViewport();o.height=a?.height??n.viewportHeight(),o.offsetTop=a?.offsetTop??0,o.keyboardOpen=o.height<n.viewportHeight()*.9,r()},l=n.visualViewport(),i=null,u=null;if(l?.addEventListener?(i=S(l,"resize",s),S(l,"scroll",s)):u=S(window,"resize",s),t){let a=e.onUnmount(d=>{d===t&&(i?.(),u?.(),a())})}return o}function Ot(e,t){let n=e.selfId(),o={isIn:!1,ready:!1,observe:u,refresh:a,disconnect:d},r=null,s=null,l=()=>{n?e.render([n]):e.render()};function i(){if(s?.disconnect(),s=null,!r)return;let f=typeof t.rootMargin=="function"?t.rootMargin():t.rootMargin,c=typeof t.threshold=="function"?t.threshold():t.threshold;s=new IntersectionObserver(p=>{let y=p[p.length-1];if(!y)return;let m=y.isIntersecting,v=m!==o.isIn,h=!o.ready;o.isIn=m,o.ready=!0,t.onChange?.(y,m),(v||h)&&l()},{root:t.root?t.root():null,rootMargin:f??"0px",threshold:c??0}),s.observe(r)}function u(f){r=f,f?i():(s?.disconnect(),s=null,o.isIn=!1)}function a(){i()}function d(){s?.disconnect(),s=null}if(n){let f=e.onUnmount(c=>{c===n&&(d(),f())})}return o}function _t(e,t){let n=e.selfId(),o=e.browser,r={y:0,refresh(){let i=s.getScroller();r.y=i instanceof Window?o.scrollingElement()?.scrollTop??o.scrollTop():i.scrollTop??0}},s={handle:r,getScroller:t.getScroller??(()=>window)};if(!n)return r.refresh(),r;e.scrollTrackers.set(n,s),e.ensurePopupListeners(),r.refresh();let l=e.onUnmount(i=>{i===n&&(e.scrollTrackers.delete(n),l())});return r}function Ht(e,t){let n=e.selfId();if(typeof window>"u")return()=>{};let o=S(window,"keydown",t);if(n){let r=e.onUnmount(s=>{s===n&&(o(),r())})}return o}function Rt(e,t){let n=e.browser,o=0,r=0,s=!1,l=p=>{s&&t.onMove(p,{x:p.clientX-o,y:p.clientY-r})},i=null,u=null,a=()=>{i?.(),i=null,u?.(),u=null},d=p=>{s&&(s=!1,a(),t.onEnd?.(p))},f=p=>{s||(p.preventDefault(),s=!0,o=p.clientX,r=p.clientY,i=S(window,"pointermove",l),u=S(window,"pointerup",d),t.onStart?.(p))},c=e.selfId();if(c){let p=e.onUnmount(y=>{y===c&&(s&&(a(),s=!1),p())})}return{onPointerDown:f}}function It(e,t){let n={};t.onDrop&&(n.onDrop=r=>{r.preventDefault(),t.onDrop(r)}),t.onDragOver&&(n.onDragOver=r=>{r.preventDefault(),t.onDragOver(r)}),t.onDragLeave&&(n.onDragLeave=r=>t.onDragLeave(r));let o={draggable:!0};if(t.onDragStart){let r=t.onDragStart;o.onDragStart=s=>{typeof document<"u"&&document.body.classList.add("wf-dragging"),r(s)}}if(t.onDragEnd){let r=t.onDragEnd;o.onDragEnd=s=>{typeof document<"u"&&document.body.classList.remove("wf-dragging"),r(s)}}return{dropProps:n,dragProps:o}}function Nn(e){return e.map(t=>{let n={role:t.role,content:t.content};return t.reasoning&&(n.reasoning_content=t.reasoning),n})}function Ye(){return typeof crypto<"u"&&typeof crypto.randomUUID=="function"?crypto.randomUUID():`msg-${Date.now()}-${Math.random().toString(36).slice(2,10)}`}function Dt(e,t,n,o){n.initialMessages?e.messages=structuredClone(n.initialMessages):e.messages===void 0&&(e.messages=[]),e.input===void 0&&(e.input=""),e.streaming===void 0&&(e.streaming=!1),e.error===void 0&&(e.error=null),e.usage===void 0&&(e.usage=null),e.step===void 0&&(e.step=null);let r=null;function s(){if(!e.streaming)return;let y=e.messages[e.messages.length-1];return y&&y.role==="assistant"&&y.status==="streaming"?y:void 0}function l(y,m,v){let h=s();switch(y){case"wf:token":h&&(h.content+=m.text);break;case"wf:tool_call":{h&&(h.toolCalls||(h.toolCalls=[]),h.toolCalls.push({call:m,status:"running"}));break}case"wf:tool_progress":{let V=m,b=h?.toolCalls?.find(N=>N.call.id===V.toolCallId);b&&(b.progress=V);break}case"wf:tool_result":{let V=m,b=h?.toolCalls?.find(N=>N.call.id===V.id);b&&(b.result=V,b.status=V.ok?"ok":"error");break}case"wf:approval_request":h&&(h.approval=m);break;case"wf:usage":h&&(h.usage=m);break;case"wf:step":e.step=m;break;case"wf:done":if(h){h.status="done",h.approval=void 0;let V=m;V.reasoning&&(h.reasoning=V.reasoning)}e.streaming=!1,e.step=null;break;case"wf:error":h&&(h.status="error",h.error=m,h.approval=void 0),e.error=m,e.streaming=!1,e.step=null;break;default:v?.(y,m);break}o?.()}function i(){let y=n.body?n.body(e.messages):{messages:Nn(e.messages)};r=t(n.url,y,{onToken:v=>l("wf:token",{text:v}),onToolCall:v=>l("wf:tool_call",v),onToolProgress:v=>l("wf:tool_progress",v),onToolResult:v=>l("wf:tool_result",v),onApproval:v=>l("wf:approval_request",v),onUsage:v=>l("wf:usage",v),onStep:v=>l("wf:step",v),onDone:v=>l("wf:done",v),onError:v=>l("wf:error",v),onEvent:(v,h)=>l(v,h,n.onEvent)},{signal:n.signal,headers:n.headers}),e.streaming=!0;let m=s();m&&r?.traceId&&(m.id=r.traceId)}function u(){if(e.streaming)return;let y=String(e.input??"").trim();y&&(e.input="",e.error=null,e.usage=null,e.step=null,e.messages.push({id:Ye(),role:"user",content:y,status:"done"},{id:Ye(),role:"assistant",content:"",status:"streaming",toolCalls:[]}),i(),o?.())}function a(){r?.abort(),e.streaming=!1,e.step=null;let y=e.messages[e.messages.length-1];y&&y.role==="assistant"&&y.status==="streaming"&&(!y.content&&(!y.toolCalls||y.toolCalls.length===0)?e.messages.pop():y.status="done"),o?.()}function d(){if(e.streaming)return;let y=-1;for(let m=e.messages.length-1;m>=0;m--)if(e.messages[m].role==="user"){y=m;break}y!==-1&&(e.messages.splice(y+1),e.error=null,e.usage=null,e.step=null,e.messages.push({id:Ye(),role:"assistant",content:"",status:"streaming",toolCalls:[]}),i(),o?.())}function f(){r?.abort(),e.messages=[],e.input="",e.streaming=!1,e.error=null,e.usage=null,e.step=null,o?.()}async function c(y,m,v){let h=e.messages[e.messages.length-1],V=h?.role==="assistant"?h.approval:void 0;if(V&&(h.approval=void 0,o?.(),!!n.approveUrl))try{await fetch(n.approveUrl,{method:"POST",headers:{"Content-Type":"application/json",...n.headers},body:JSON.stringify(v?{id:V.id,decision:y,note:m,modifiedArgs:v}:{id:V.id,decision:y,note:m}),signal:n.signal})}catch(b){if(n.signal?.aborted)return;e.error={code:"provider_error",message:b instanceof Error?b.message:String(b)},o?.()}}function p(){r?.abort(),r=null}return{send:u,stop:a,retry:d,clear:f,approve:c,dispose:p}}function Ut(e,t,n){let o=new AbortController,r=n?.signal;r&&(r.aborted?o.abort():r.addEventListener("abort",()=>o.abort(),{once:!0}));let s=n?.traceId??Cn(),l=n?.record!==!1,i=[],u=(async()=>{let a;try{a=await fetch(e,{method:"POST",headers:{"Content-Type":"application/json","X-Trace-Id":s,Accept:"text/event-stream",...n?.headers},body:JSON.stringify(t),signal:o.signal})}catch(d){if(o.signal.aborted)return;n?.onError?.({code:"provider_error",message:d instanceof Error?d.message:String(d)});return}if(!a.ok){n?.onError?.({code:Vn(a.status),message:`HTTP ${a.status} ${a.statusText}`});return}try{for await(let{name:d,data:f}of xn(a.body)){if(o.signal.aborted)return;kn(i,{name:d,data:f},l),Mn(d,f,n??{})}}catch(d){if(o.signal.aborted)return;n?.onError?.({code:"provider_error",message:d instanceof Error?d.message:String(d)})}})();return{abort:()=>o.abort(),done:u,traceId:s,events:i}}function Mn(e,t,n){switch(e){case"wf:token":return n.onToken?.(t.text);case"wf:tool_call":return n.onToolCall?.(t);case"wf:tool_result":return n.onToolResult?.(t);case"wf:tool_progress":return n.onToolProgress?.(t);case"wf:step":return n.onStep?.(t);case"wf:approval_request":return n.onApproval?.(t);case"wf:usage":return n.onUsage?.(t);case"wf:done":return n.onDone?.(t);case"wf:error":return n.onError?.(t);default:return n.onEvent?.(e,t)}}async function*xn(e){let t=e.getReader(),n=new TextDecoder,o="";try{for(;;){let{done:r,value:s}=await t.read();if(r)break;o+=n.decode(s,{stream:!0});let l=o.split(`
|
|
4
4
|
|
|
5
|
-
`);o=
|
|
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{t.releaseLock()}}function kt(e,t,n){n&&(e.length>=1e3&&e.shift(),e.push(t))}function Ct(e){return e===401||e===403?"auth_failed":e===429?"rate_limited":e>=500?"provider_error":"invalid_request"}function Pt(){return typeof crypto<"u"&&typeof crypto.randomUUID=="function"?crypto.randomUUID():`trace-${Date.now()}-${Math.random().toString(36).slice(2,10)}`}function Qe(e,t){let n={messages:[],input:"",streaming:!1,error:null,usage:null,step:null},o=new Set,s=Ge(n,Je,t,()=>{for(let r of[...o])r()});Object.assign(n,s),n.subscribe=r=>(o.add(r),()=>{o.delete(r)});let i=e.selfId();if(i){let r=e.onUnmount(u=>{u===i&&(s.dispose(),r())})}return n}var Rt=new Map,et=new Map,Ot=new Map,St=new Set,Mt=new Map,Dt=new Map,Lt=new Map,Ze=!1;function _t(){if(Ze)return;Ze=!0;let e=I(),t=()=>{for(let n of et.values())try{if(n.isOpen()){let l=n.getEl()?.getBoundingClientRect();l&&l.width>0&&n.compute(l)}}catch{}};e.addEventListener?.("scroll",t,{capture:!0,passive:!0}),e.addEventListener?.("resize",t)}function ge(e,t,n){let o={selfId:()=>e,render:s=>{!s||s.length===0||s.includes(e)?t():console.warn(`[vdom3/ui] render([${s.join(",")}]) \u8DE8\u7EC4\u4EF6\u6E32\u67D3\u6682\u672A\u5B9E\u73B0\uFF08vdom3 \u5F53\u524D\u4EC5\u7EC4\u4EF6\u81EA\u8EAB render\uFF09`)},browser:I(),onUnmount:s=>(n(()=>s(e)),()=>{}),registry:{idRegistry:new Map},mediaRegistry:Rt,popupTrackers:et,scrollTrackers:Ot,isMounting:()=>!1,warned:St,uncontrolledValues:Mt,inputStates:Dt,openStates:Lt,ensurePopupListeners:_t};return{render:s=>o.render(s),onUnmount:s=>{n(s)},selfId:s=>{o.registry.idRegistry.set(s,e)},useExternal:s=>Te(o,s),useControlled:s=>de(o,s),useControlledInput:s=>Ve(o,s),useOpen:s=>Ae(o,s),usePopup:s=>_e(o,s),usePopupPosition:s=>me(o,s),useTween:(s,i)=>Re(o,s,i),useInView:s=>Be(o,s),useScrollPosition:s=>Xe(o,s),useGlobalKey:s=>Ke(o,s),useDrag:s=>ze(o,s),useDragDrop:s=>Ye(o,s),useMedia:(s,i)=>{qe(o,s,i)},useBreakpoint:(s,i)=>{Fe(o,s,i)},useReducedMotion:()=>ce(o),useStableRef:(s,i)=>ke(o,s,i),useAnimationEnd:(s,i)=>Ce(o,s,i),usePresence:s=>Q(o,s),useLongPress:s=>Pe(o,s),useHoverCapable:()=>J(o),useVisualViewport:()=>$e(o),useAsync:s=>xe(o,s),useChat:s=>Qe(o,s)}}var te=new Map;function tt(e){let t=te.get(e);if(t){try{t()}catch{}te.delete(e)}}function D(e){return e!=null&&typeof e=="object"&&!Array.isArray(e)&&"type"in e}async function O(e,t,n){if(typeof e.type=="function"){let r={...e},u=n!=null&&typeof n=="object"&&n.type===e.type&&n.key===e.key&&n._render?n:null;if(u)r._render=u._render,r._id=u._id;else{r._id=H(),E.emit({type:"COMP_MOUNT",id:r._id,name:At(r.type),ts:Date.now()});let c=r._id,f=Object.assign(Object.create(t),{onUnmount:g=>{te.set(c,g)},ui:ge(c,()=>{t.render?.()},g=>{te.set(c,g)})});r._render=await r.type(r.props,f)}let d=await r._render(r.props);r._child=null;let a=u?._child??null;if(d){let c=await O(d,t,a!=null&&typeof a=="object"?a:null);r._child=c}return r}let o={...e},l=T(n??{}),s=0,i=null;for(let r of T(e)){if(D(r)){let u=l[s],d=await O(r,t,u!=null&&typeof u=="object"?u:null);d!==r&&(i??=[...T(e)],i[s]=d)}s++}return i&&(o.children=i),o}function At(e){return typeof e=="function"?e.name||"anonymous":String(e)}var Ht=globalThis.__WF_V3_AUDIT!=="0";function nt(e,t){if(!Ht)return;let n=T(t).filter(s=>s!=null&&typeof s=="object"&&s.el!=null);if(n.length<2)return;let o=n[0].el?.parentNode;if(!o)return;let l=-1;for(let s of n){let i=s.el;if(i.parentNode!==o)return;let r=[...o.childNodes].indexOf(i);if(r<0)return;if(r<l){console.warn(`[vdom3/audit] children \u987A\u5E8F\u9519\u4F4D\uFF08vnode \u987A\u5E8F \u2260 DOM \u987A\u5E8F\u2014\u2014\u7D22\u5F15 ${r} < ${l}\uFF09`);return}l=r}}function z(e){if(e==null||typeof e!="object")return!1;let t=e.type;return t===F||typeof t=="symbol"&&e.props?.portalKey!=null}function Ut(e){if(e==null||typeof e!="object")return!1;let t=e.type;return(t===A||typeof t=="symbol")&&e.props?.portalKey==null}var b=new V;function $(e,t){b.register(V.ROOT,t),j(e,t)}function j(e,t,n){if(typeof e.type=="function"){let i=e._child??T(e)[0]??null;if(i==null)return null;if(e.el==null||!e.el.isConnected){let r=j(i,t,n);return e.el=r,r}return e.el}if(Ut(e)){let i=null;for(let r of T(e)){let u=ve(r,t,n);u&&!i&&(i=u)}return i}if(z(e)){let r=String(e.props?.portalKey??"default"),u=U(r);b.register(V.PORTAL(r),u);let d=null;for(let a of T(e)){let c=ve(a,u);c&&!d&&(d=c)}return e.el=u,d??u}let o=document.createElement(e.type),l=H();o.setAttribute("data-v3-id",l),b.register(l,o),e.el=o,E.emit({type:"NODE_CREATE",id:l,tag:e.type,ts:Date.now()});for(let[i,r]of Object.entries(e.props??{}))if(!(i==="key"||i==="children"||i==="ref")){if(typeof r=="function"&&/^on[A-Z]/.test(i)){let u=o.__v3evtKeys??=new Set;u.has(i)||(o.addEventListener(i.slice(2).toLowerCase(),d=>r(d)),u.add(i));continue}r!=null&&r!==!1&&(i==="value"&&o instanceof HTMLInputElement?o.value=String(r):o.setAttribute(i,String(r)),E.emit({type:"PROP_UPDATE",target:l,key:i,value:r,prev:"",ts:Date.now()}))}n&&n.parentNode===t?t.insertBefore(o,n):t.appendChild(o),E.emit({type:"INSERT",parent:K(t),child:l,ref:n?M(n):null,ts:Date.now()});let s=e.props?.ref;typeof s=="function"&&s(o);for(let i of T(e))ve(i,o);return o}function ve(e,t,n){if(e==null||e===!1||e===!0)return null;if(typeof e=="string"||typeof e=="number"){let o=document.createTextNode(String(e)),l=H();return b.register(l,o),E.emit({type:"TEXT_CREATE",id:l,value:String(e),ts:Date.now()}),n&&n.parentNode===t?t.insertBefore(o,n):t.appendChild(o),E.emit({type:"INSERT",parent:K(t),child:l,ref:n?M(n):null,ts:Date.now()}),o}return j(e,t,n)}function L(e,t,n,o){if(typeof t=="string"||typeof t=="number"){let r=String(t),u=e&&typeof e=="object"?e.el:n.childNodes[0]??null;if(u&&u.nodeType===3)return u.nodeValue!==r&&(E.emit({type:"TEXT_UPDATE",target:M(u),value:r,prev:u.nodeValue??"",ts:Date.now()}),u.nodeValue=r),u;let d=document.createTextNode(r),a=H();return b.register(a,d),E.emit({type:"TEXT_CREATE",id:a,value:r,ts:Date.now()}),o&&o.parentNode===n?n.insertBefore(d,o):n.appendChild(d),E.emit({type:"INSERT",parent:K(n),child:a,ref:o?M(o):null,ts:Date.now()}),d}if(t==null||t===!1||t===!0){if(e!=null&&e.el&&e.el.parentNode===n){let r=b.idOf(e.el);E.emit({type:"REMOVE",parent:K(n),child:r,ts:Date.now()}),e.el.parentNode?.removeChild(e.el),b.unregister(r,e.el)}return null}let l=t,s=e!=null&&typeof e=="object"&&"type"in e;if(s&&e.type===l.type&&e.key===l.key){let r=e;if(z(l)){let d=String(l.props?.portalKey??"default"),a=U(d);return b.register(V.PORTAL(d),a),ot(r,l,a),l.el=a,a}if(typeof l.type=="function"){l._render=r._render,l._id=r._id;let d=l._child??T(l)[0]??null,a=r._child??T(r)[0]??null;return d==null?(r.el&&(r.el.parentNode?.removeChild(r.el),r.el=null),l.el=null,null):(r.el==null||!r.el.isConnected?l.el=j(l,n,o):(L(a,d,n,o),l.el=r.el),l.el)}let u=r.el;return l.el=u,It(u,r.props,l.props),ot(r,l,u),u}if(s&&typeof e.type=="function"&&e._id&&(tt(e._id),E.emit({type:"COMP_UNMOUNT",id:e._id,name:qt(e.type),ts:Date.now()})),s){let r=e.el;if(r&&r.parentNode===n){let u=e.props?.ref;typeof u=="function"&&u(null);let d=b.idOf(r);E.emit({type:"REMOVE",parent:K(n),child:d,ts:Date.now()}),r.parentNode?.removeChild(r),b.unregister(d,r)}else e&&z(e)&&he(e)}return j(l,n,o)}function It(e,t,n){let o=M(e),l=new Set([...Object.keys(t??{}),...Object.keys(n??{})]),s=t?.ref,i=n?.ref;s!==i&&(typeof s=="function"&&s(null),typeof i=="function"&&i(e));for(let r of l){if(r==="key"||r==="children"||r==="ref")continue;let u=t?.[r],d=n?.[r];if(u!==d){if(typeof d=="function"&&/^on[A-Z]/.test(r)){let a=e.__v3evtKeys??=new Set;a.has(r)||(e.addEventListener(r.slice(2).toLowerCase(),c=>d(c)),a.add(r));continue}d==null||d===!1?r==="value"&&e instanceof HTMLInputElement?e.value="":e.removeAttribute(r):r==="value"&&e instanceof HTMLInputElement?e.value=String(d):e.setAttribute(r,String(d)),E.emit({type:"PROP_UPDATE",target:o,key:r,value:d,prev:u??"",ts:Date.now()})}}}function Wt(e,t,n){let o=new Map;e.forEach((s,i)=>{D(s)&&s.key!=null&&o.set(s.key,i)});let l=null;for(let s=0;s<t.length;s++){let i=t[s];if(!D(i)||i.key==null){l=null;continue}let r=o.get(i.key),u=null;if(r!=null&&D(e[r])&&(u=e[r].el??null),u&&u.parentNode===n){let d=l?l.nextSibling:n.firstChild;if(d!==u){let a=u.previousSibling?b.idOf(u.previousSibling):null;n.insertBefore(u,d),E.emit({type:"MOVE",node:b.idOf(u),parent:M(n),ref:d?b.idOf(d):null,prev:a,ts:Date.now()})}l=u}}}function jt(e,t,n){let o=new Map;for(let i of e)D(i)&&i.key!=null&&o.set(i.key,i);Wt(e,t,n);let l=null;for(let i of t){let r=i,u=o.get(r.key??"")??null;u&&u!==r?(L(u,r,n),l=r.el??l):u||(j(r,n,l?l.nextSibling:n.firstChild),l=r.el??l)}let s=new Set(t.filter(i=>D(i)).map(i=>i.key));for(let i of e)if(D(i)&&i.key!=null&&!s.has(i.key)&&i.el?.parentNode===n){let r=b.idOf(i.el);E.emit({type:"REMOVE",parent:M(n),child:r,ts:Date.now()}),i.el.parentNode?.removeChild(i.el),b.unregister(r,i.el)}}function he(e){let t=String(e.props?.portalKey??"default"),n=U(t);for(let o of[...n.childNodes]){let l=b.idOf(o);E.emit({type:"REMOVE",parent:V.PORTAL(t),child:l,ts:Date.now()}),n.removeChild(o),b.unregister(l,o)}}function ot(e,t,n){let o=T(e),l=T(t);if(l.length>1&&l.every(r=>D(r)&&r.key!=null)){jt(o,l,n);return}let s=null,i=Math.max(o.length,l.length);for(let r=0;r<i;r++){let u=r<o.length?o[r]:null,d=r<l.length?l[r]:null;if(r>=l.length){if(u!=null&&typeof u=="object"&&z(u)){he(u);continue}if(u!=null&&typeof u=="object"&&u.el){let a=u.props?.ref;typeof a=="function"&&a(null);let c=u.el,f=b.idOf(c);E.emit({type:"REMOVE",parent:M(n),child:f,ts:Date.now()}),c.parentNode?.removeChild(c),b.unregister(f,c)}else{let a=n.childNodes[r];a&&a.parentNode?.removeChild(a)}continue}if(typeof d=="string"||typeof d=="number"){let a=String(d),c=n.childNodes[r];if(c&&c.nodeType===3)c.nodeValue!==a&&(E.emit({type:"TEXT_UPDATE",target:M(c),value:a,prev:c.nodeValue??"",ts:Date.now()}),c.nodeValue=a);else{let f=document.createTextNode(a),g=H();b.register(g,f),E.emit({type:"TEXT_CREATE",id:g,value:a,ts:Date.now()}),n.insertBefore(f,n.childNodes[r]??null),E.emit({type:"INSERT",parent:M(n),child:g,ref:null,ts:Date.now()})}continue}if(d==null||d===!1||d===!0){if(u!=null&&typeof u=="object"&&z(u)){he(u);continue}if(u!=null&&typeof u=="object"&&u.el){let a=u.props?.ref;typeof a=="function"&&a(null);let c=u.el,f=b.idOf(c);E.emit({type:"REMOVE",parent:M(n),child:f,ts:Date.now()}),c.parentNode?.removeChild(c),b.unregister(f,c)}continue}if(u!=null&&typeof u=="object"){L(u,d,n);let a=d.el;a&&a.parentNode===n&&(s=a)}else{let a=s?s.nextSibling:n.firstChild,c=j(d,n,a);c&&c.parentNode===n&&(s=c)}}nt(n,t)}function qt(e){return typeof e=="function"?e.name||"anonymous":String(e)}function M(e){return b.idOf(e)}function K(e){return b.idOf(e)}var ne=class{queue=[];running=!1;iterations=0;schedule(t){this.queue.push(t),this.running||(this.running=!0,this.iterations=0,queueMicrotask(()=>this.flush()))}flush(){if(!(!this.running&&this.queue.length===0)){this.running=!0;do{if(++this.iterations>10){console.error("[vdom3/scheduler] \u6E32\u67D3\u5FAA\u73AF\u8D85\u9650\uFF08\u7591\u4F3C\u6B7B\u5FAA\u73AF\uFF09\u2014\u2014\u4E2D\u6B62\u672C\u8F6E flush"),this.queue=[];break}let t=this.queue;this.queue=[];for(let n of t)try{n()}catch(o){console.error("[vdom3/scheduler] render error:",o)}}while(this.queue.length>0);this.running=!1,this.iterations=0}}pending(){return this.queue.length}get isRunning(){return this.running}},Y=new ne;function Ft(e,t,n){let o=e,l=!1,s=!1;async function i(){if(l){s=!0;return}l=!0;try{do{s=!1;let c=await O(e,r,o);o==null?$(c,t):L(o,c,t),o=c}while(s)}finally{l=!1}}let r={_vnode:e,_parent:t,...n?.ctx??{},render(){Y.schedule(()=>{i()})}},u,d=new Promise(c=>{u=c}),a={ctx:r,ready:d,rerender:()=>Y.schedule(()=>{i()}),flush:()=>Y.flush(),unmount(){o._id&&E.emit({type:"COMP_UNMOUNT",id:o._id,name:"root",ts:Date.now()}),t.innerHTML=""}};return(async()=>{try{let c=await O(e,r);$(c,t),o=c}finally{u()}})(),a}function oe(e,t,n){switch(e.type){case"NODE_CREATE":{let o=document.createElement(e.tag);o.setAttribute("data-v3-id",e.id),n.register(e.id,o);break}case"TEXT_CREATE":{let o=document.createTextNode(e.value);n.register(e.id,o);break}case"INSERT":{let o=e.parent===V.ROOT?t:n.resolveParent(e.parent),l=n.get(e.child),s=e.ref?n.get(e.ref):null;o&&l&&(s&&s.parentNode===o?o.insertBefore(l,s):o.appendChild(l));break}case"REMOVE":{let o=n.get(e.child);o?.parentNode&&o.parentNode.removeChild(o);break}case"MOVE":{let o=n.get(e.node),l=e.parent===V.ROOT?t:n.resolveParent(e.parent),s=e.ref?n.get(e.ref):null;o&&l&&o.parentNode===l&&(s&&s.parentNode===l?l.insertBefore(o,s):l.appendChild(o));break}case"PROP_UPDATE":{let o=n.get(e.target);o?.nodeType===1&&(e.value==null||e.value===!1?o.removeAttribute(e.key):o.setAttribute(e.key,String(e.value)));break}case"TEXT_UPDATE":{let o=n.get(e.target);o?.nodeType===3&&(o.nodeValue=e.value);break}default:break}}function $t(e,t,n=new V){n.register(V.ROOT,t),t.innerHTML="";for(let o of e)oe(o,t,n)}function Bt(e,t,n=new V){let l=e.filter(s=>s.type==="INSERT"||s.type==="REMOVE"||s.type==="PROP_UPDATE"||s.type==="TEXT_UPDATE"||s.type==="MOVE").slice(-t);for(let s of[...l].reverse())switch(s.type){case"INSERT":{let i=n.get(s.child);i?.parentNode&&i.parentNode.removeChild(i);break}case"REMOVE":{let i=n.takeRemoved(s.child),r=s.parent===V.ROOT?null:n.get(s.parent);i&&r&&r.appendChild(i);break}case"PROP_UPDATE":{let i=n.get(s.target);i?.nodeType===1&&(s.prev==null||s.prev===""?i.removeAttribute(s.key):i.setAttribute(s.key,String(s.prev)));break}case"TEXT_UPDATE":{let i=n.get(s.target);i?.nodeType===3&&(i.nodeValue=s.prev);break}case"MOVE":{let i=n.get(s.node),r=s.parent===V.ROOT?null:n.get(s.parent);if(i&&r&&i.parentNode===r)if(s.prev){let u=n.get(s.prev);u&&u.parentNode===r&&r.insertBefore(i,u.nextSibling)}else r.insertBefore(i,r.firstChild);break}default:break}}function Xt(e,t){return e.filter(n=>n.type===t)}function Kt(e,t){return e.some(t)}function zt(e,t){let n=e.map(l=>l.type);if(!t.map((l,s)=>n[s]===l).every(Boolean))throw new Error(`\u4E8B\u4EF6\u5E8F\u5217\u4E0D\u7B26\uFF1A\u671F\u671B [${t.join(",")}] \u5B9E\u9645 [${n.slice(0,t.length).join(",")}]`)}function Yt(e){let t=[],n=String(e).replace(/:(\w+)/g,(o,l)=>(t.push(l),"([^/]+)")).replace(/\*/g,".*");return{re:new RegExp(`^${n}$`),keys:t}}function Gt(e,t){for(let n of e){let{re:o,keys:l}=Yt(n.path),s=t.match(o);if(!s)continue;let i={};for(let r=0;r<l.length;r++)i[l[r]]=decodeURIComponent(s[r+1]);return{def:n,params:i}}return null}function Jt(e,t,n){let o=null,l=null,s=!1,i=null,r={},u=()=>Object.assign(Object.create(n?.ctx??{}),{render:()=>{d()}});async function d(){if(s){i={type:"refresh"};return}if(!(!o||!l)){s=!0;try{let m=l;if(typeof m.type=="function"&&m._render){let y=await m._render(m.props);if(y==null)return;let h=m._child??null,v=await O(y,r,h&&typeof h=="object"?h:null);m._child=v,L(h,v,t)}}finally{if(s=!1,i!=null){let m=i;i=null,a(m)}}}}function a(m){m.type==="nav"?c(m.path):d()}async function c(m){if(s){i={type:"nav",path:m};return}s=!0;try{let y=Gt(e,m);if(E.emit({type:"ROUTE_CHANGE",path:m,params:y?.params??{},ts:Date.now()}),!y){t.innerHTML="",o=null,l=null;return}r=u();let h=y.def.render(y.params),v=y.def.layout?y.def.layout(h):h,N=await O(v,r,o);o==null?$(N,t):L(o,N,t),o=N,l=N}finally{if(s=!1,i!=null){let y=i;i=null,a(y)}}}let f=()=>{c(window.location.pathname)};window.addEventListener("popstate",f);let g=n?.initialPath??window.location.pathname;return c(g),{navigate(m){window.history.pushState(null,"",m),c(m)},path:()=>window.location.pathname,refresh:()=>{c(window.location.pathname)},close:()=>{window.removeEventListener("popstate",f)}}}async function Qt(e){let t=await O(e,{}),n=[],o=0,l=()=>`s${++o}`,s=Date.now(),i=(r,u)=>{if(typeof r.type=="function"){let a=r._child??T(r)[0]??null;a&&typeof a=="object"&&!Array.isArray(a)&&i(a,u);return}if(r.type===A){for(let a of T(r))a&&typeof a=="object"&&!Array.isArray(a)&&i(a,u);return}let d=l();n.push({type:"NODE_CREATE",id:d,tag:r.type,ts:s});for(let[a,c]of Object.entries(r.props??{}))a==="key"||a==="children"||typeof c!="function"&&c!=null&&c!==!1&&n.push({type:"PROP_UPDATE",target:d,key:a,value:c,prev:"",ts:s});n.push({type:"INSERT",parent:u,child:d,ref:null,ts:s});for(let a of T(r))if(typeof a=="string"||typeof a=="number"){let c=l();n.push({type:"TEXT_CREATE",id:c,value:String(a),ts:s}),n.push({type:"INSERT",parent:d,child:c,ref:null,ts:s})}else a&&typeof a=="object"&&!Array.isArray(a)&&i(a,d)};return i(t,"root"),n}async function*Zt(e){let t=await O(e,{}),n=0,o=()=>`s${++n}`,l=Date.now(),s=function*(i,r){if(typeof i.type=="function"){let d=i._child??T(i)[0]??null;d&&typeof d=="object"&&!Array.isArray(d)&&(yield*s(d,r));return}if(i.type===A){for(let d of i.children??[])d&&typeof d=="object"&&!Array.isArray(d)&&(yield*s(d,r));return}let u=o();yield{type:"NODE_CREATE",id:u,tag:i.type,ts:l};for(let[d,a]of Object.entries(i.props??{}))d==="key"||d==="children"||typeof a!="function"&&a!=null&&a!==!1&&(yield{type:"PROP_UPDATE",target:u,key:d,value:a,prev:"",ts:l});yield{type:"INSERT",parent:r,child:u,ref:null,ts:l};for(let d of T(i))if(typeof d=="string"||typeof d=="number"){let a=o();yield{type:"TEXT_CREATE",id:a,value:String(d),ts:l},yield{type:"INSERT",parent:u,child:a,ref:null,ts:l}}else d&&typeof d=="object"&&!Array.isArray(d)&&(yield*s(d,u))};yield*s(t,"root")}function en(e){let t=new Map,n=new Map,o=new Map;for(let r of e)if(r.type==="NODE_CREATE")t.set(r.id,r.tag);else if(r.type==="PROP_UPDATE"){let u=n.get(r.target)??new Map;r.value==null||r.value===!1?u.delete(r.key):u.set(r.key,r.value),n.set(r.target,u)}else r.type==="TEXT_CREATE"&&o.set(r.id,r.value);let l=new Map;for(let r of e)if(r.type==="INSERT"){let u=l.get(r.parent)??[];u.push(r.child),l.set(r.parent,u)}let s=r=>r.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,"""),i=r=>{let u=t.get(r);if(u){let d=n.get(r),a=d?[...d.entries()].filter(([f,g])=>typeof g!="function"&&f!=="data-v3-id"&&f!=="key"&&f!=="ref").map(([f,g])=>` ${f}="${s(String(g))}"`).join(""):"",c=(l.get(r)??[]).map(i).join("");return`<${u}${a}>${c}</${u}>`}return s(o.get(r)??"")};return(l.get("root")??[]).map(i).join("")}function tn(e){return JSON.stringify(e)}function nn(e){return JSON.parse(e)}function on(e,t="recorded-render"){let n=[...new Set(e.map(a=>a.type))],o=new Map(e.filter(a=>a.type==="NODE_CREATE").map(a=>[a.id,a.tag])),l=new Map;for(let a of e)if(a.type==="INSERT"){let c=l.get(a.parent)??[];c.push(a.child),l.set(a.parent,c)}let s=new Set,i=a=>{s.add(a);for(let c of l.get(a)??[])i(c)};for(let a of e)a.type==="REMOVE"&&i(a.child);let r=new Map;for(let[a,c]of o)s.has(a)||r.set(c,(r.get(c)??0)+1);let u=[...r.entries()].map(([a,c])=>` assert.equal(root.querySelectorAll('${a}').length, ${c}, '${a} \xD7 ${c}\uFF08\u4E8B\u4EF6\u6D41\u63A8\u5BFC\uFF09')`).join(`
|
|
7
|
-
`),d=JSON.stringify(e);return`/**
|
|
5
|
+
`);o=l.pop()??"";for(let i of l){let u="message",a="";for(let d of i.split(`
|
|
6
|
+
`))d.startsWith("event: ")?u=d.slice(7):d.startsWith("data: ")&&(a+=d.slice(6));if(a)try{yield{name:u,data:JSON.parse(a)}}catch{}}}}finally{t.releaseLock()}}function kn(e,t,n){n&&(e.length>=1e3&&e.shift(),e.push(t))}function Vn(e){return e===401||e===403?"auth_failed":e===429?"rate_limited":e>=500?"provider_error":"invalid_request"}function Cn(){return typeof crypto<"u"&&typeof crypto.randomUUID=="function"?crypto.randomUUID():`trace-${Date.now()}-${Math.random().toString(36).slice(2,10)}`}function jt(e,t){let n={messages:[],input:"",streaming:!1,error:null,usage:null,step:null},o=new Set,s=Dt(n,Ut,t,()=>{for(let i of[...o])i()});Object.assign(n,s),n.subscribe=i=>(o.add(i),()=>{o.delete(i)});let l=e.selfId();if(l){let i=e.onUnmount(u=>{u===l&&(s.dispose(),i())})}return n}var zt=I();function Wt(e){let t=new Map,n=new Map,o=!1,r=0;function s(){r||(r=requestAnimationFrame(()=>{r=0;let c=[];for(let[p,y]of t){if(!y.isOpen())continue;let m=y.getEl();if(!m)continue;let v=m.getBoundingClientRect();if(v.width===0&&v.height===0)continue;let h=y.compute(v);Object.assign(y.pos,Ce(h,y.panel?.(),y.margin)),c.push(p)}for(let[p,y]of n){let m=y.getScroller(),v=m instanceof Window?zt.scrollingElement()?.scrollTop??zt.scrollTop():m.scrollTop??0;v!==y.handle.y&&(y.handle.y=v,c.push(p))}c.length>0&&e(c)}))}let l=null,i=null;function u(){o||(o=!0,l=S(window,"scroll",s,{capture:!0,passive:!0}),i=S(window,"resize",s))}function a(){o&&(l?.(),i?.(),l=null,i=null,o=!1)}function d(c){for(let p of[...t.keys()])(p.startsWith(`popup:${c}:`)||p===`popup:${c}`||p===c)&&t.delete(p);n.delete(c)}function f(){a(),r&&(cancelAnimationFrame(r),r=0),t.clear(),n.clear()}return{popupTrackers:t,scrollTrackers:n,schedulePopupRecompute:s,ensurePopupListeners:u,destroyPopupListeners:a,cleanupTrackers:d,destroy:f}}var Tn=new Map,Pn=new Set,Sn=new Map,Ln=new Map,An=new Map,Je=new Map,Qe=Wt(e=>{for(let t of e){let n=Je.get(t);if(n)try{n()}catch{}}}),On=Qe.popupTrackers,_n=Qe.scrollTrackers,Hn=Qe.ensurePopupListeners;function Ze(e,t,n){Je.set(e,t);let o={selfId:()=>e,render:s=>{window.__chain="env.render",!s||s.length===0||s.includes(e)?t():console.warn(`[vdom3/ui] render([${s.join(",")}]) \u8DE8\u7EC4\u4EF6\u6E32\u67D3\u6682\u672A\u5B9E\u73B0\uFF08vdom3 \u5F53\u524D\u4EC5\u7EC4\u4EF6\u81EA\u8EAB render\uFF09`)},browser:I(),onUnmount:s=>(n(()=>{s(e),Je.delete(e)}),()=>{}),registry:{idRegistry:new Map},mediaRegistry:Tn,popupTrackers:On,scrollTrackers:_n,isMounting:()=>!1,warned:Pn,uncontrolledValues:Sn,inputStates:Ln,openStates:An,ensurePopupListeners:Hn};return{__v3ui:!0,__compId:e,render:s=>o.render(s),onUnmount:s=>{n(s)},selfId:s=>{o.registry.idRegistry.set(s,e)},useExternal:s=>gt(o,s),useControlled:s=>Ke(o,s),useControlledInput:s=>yt(o,s),useOpen:s=>xt(o,s),usePopup:s=>Mt(o,s),usePopupPosition:s=>Xe(o,s),useTween:(s,l)=>bt(o,s,l),useInView:s=>Ot(o,s),useScrollPosition:s=>_t(o,s),useGlobalKey:s=>Ht(o,s),useDrag:s=>Rt(o,s),useDragDrop:s=>It(o,s),useMedia:(s,l)=>{St(o,s,l)},useBreakpoint:(s,l)=>{Lt(o,s,l)},useReducedMotion:()=>Ge(o),useStableRef:(s,l)=>vt(o,s,l),usePresence:s=>Ve(o,s),useLongPress:s=>wt(o,s),useHoverCapable:()=>ke(o),useVisualViewport:()=>At(o),useAsync:s=>ht(o,s),useChat:s=>jt(o,s)}}var Pe=new Map;function et(e){let t=Pe.get(e);if(t){try{t()}catch{}Pe.delete(e)}}function $(e){return e!=null&&typeof e=="object"&&!Array.isArray(e)&&"type"in e}function $t(e,t){let n=Object.keys(e),o=Object.keys(t);if(n.length!==o.length)return!1;for(let r of n)if(e[r]!==t[r])return!1;return!0}async function R(e,t,n,o=!1){if(typeof e.type=="function"||e.type===Y){let a={...e};if(e.type===Y)return r(a,t,n);let d=n!=null&&typeof n=="object"&&n.type===e.type&&n.key===e.key&&n._render?n:null;if(d){if(a._render=d._render,a._id=d._id,qe(a),w.emit(g("comp","build",a._id,{name:ae(a.type),reused:!0,index:!0})),!o&&$t(d.props,a.props))return a._child=d._child,a;let p=Object.keys({...d.props,...a.props}).filter(y=>d.props[y]!==a.props[y]);w.emit(g("props","update",a._id,{name:ae(a.type),keys:p}))}else{a._id=J(),qe(a),w.emit(g("comp","build",a._id,{name:ae(a.type),reused:!1,index:!0})),w.emit(g("comp","mount",a._id,{name:ae(a.type)}));let p=a._id,y=()=>{window.__chain="componentRender:"+p;let h=t._componentRender;h?(window.__chain="fn("+p+")",h(p)):(window.__chain="ctx.render("+p+")",t.render())},m=Object.assign(Object.create(t),{render:y,onUnmount:h=>{Pe.set(p,h)},browser:I(),ui:Ze(p,y,h=>{Pe.set(p,h)})}),v=null;try{v=await a.type(a.props,m)}catch(h){let V=h;throw w.emit(g("error","throw",a._id,{phase:"factory",name:ae(a.type),message:V?.message??String(h)})),h}a._render=v}w.emit(g("comp","render",a._id,{name:ae(a.type)}));let f=null;try{f=await a._render(a.props)}catch(p){let y=p;throw w.emit(g("error","throw",a._id,{phase:"renderFn",name:ae(a.type),message:y?.message??String(p)})),p}a._child=null;let c=d?._child??null;if(f){let p=await R(f,t,c!=null&&typeof c=="object"?c:null);a._child=p}return a}async function r(a,d,f){let c=String(a.props?.appId??""),p=Be(c);if(!p)return w.emit(g("app","error",void 0,{appId:c,reason:"unknown-app"})),a;let y=f!=null&&f.type===Y&&f.appId===c;if(!y||!f._appOutput){w.emit(g("app","mount",void 0,{appId:c}));let h=await p(a.props?.props??{},d);a._appOutput=h}else{a._appOutput=f._appOutput;let h=f.props?.props??{},V=a.props?.props??{},b=[...new Set([...Object.keys(h),...Object.keys(V)])].filter(N=>h[N]!==V[N]);b.length>0&&w.emit(g("app","update",void 0,{appId:c,keys:b}))}let m=y&&f._appOutput?await R(f._appOutput,d,null):null,v=a._appOutput?await R(a._appOutput,d,m):null;return a._child=v,a.appId=c,a}let s=C(n??{}),l=0,i=null;for(let a of C(e)){if($(a)){let d=s[l],f=await R(a,t,d!=null&&typeof d=="object"?d:null);f!==a&&(i??=[...C(e)],i[l]=f)}l++}if(i==null&&n!=null&&typeof n=="object"&&!Array.isArray(n)){let a=C(n),d=C(e);if($t(n.props??{},e.props??{})&&a.length===d.length&&a.every((f,c)=>f===d[c]))return n}let u={...e};return i&&(u.children=i),u}function ae(e){return typeof e=="function"?e.name||"anonymous":String(e)}var Rn=globalThis.__WF_V3_AUDIT!=="0";function qt(e,t){if(!Rn)return;let n=C(t).filter(s=>s!=null&&typeof s=="object"&&s.el!=null);if(n.length<2)return;let o=n[0].el?.parentNode;if(!o)return;let r=-1;for(let s of n){let l=s.el;if(l.parentNode!==o)return;let i=[...o.childNodes].indexOf(l);if(i<0)return;if(i<r){let u=globalThis.__WF_V3_AUDIT_STACK?new Error().stack?.split(`
|
|
7
|
+
`).slice(2,5).map(a=>a.trim().slice(0,70)).join(" | "):"";console.warn(`[vdom3/audit] children \u987A\u5E8F\u9519\u4F4D idx=${i}<${r} tag=${String(s.type).slice(0,30)}${u?" || "+u:""}`);return}r=i}}function Se(e,t){if(globalThis.__WF_VDOM_AUDIT!=="1")return()=>{};let n=new Set,o=(s,l)=>{let i=`${s}:${l??"?"}`;n.has(i)||(n.add(i),console.warn(`[vdom3/audit] DOM \u53D8\u5316\u65E0\u4E8B\u4EF6\u6D41\u5BF9\u5E94\uFF08\u7ED5\u8FC7\u70B9\uFF09\uFF1A${s} id=${l??"?"}\u2014\u2014\u65E0\u4E8B\u4EF6\u6D41\u4E0D\u6E32\u67D3\u4E0D\u53D8\u91CF\u88AB\u7834\u574F`))},r=new MutationObserver(s=>{for(let l of s)if(l.type==="childList"){for(let i of l.removedNodes){if(i.nodeType!==1)continue;let u=i.getAttribute?.("data-v3-id")??null;u&&!n.has(`remove:${u}`)&&(t().some(f=>f.entity==="node"&&f.action==="remove"&&f.target===u)||o("remove",u))}for(let i of l.addedNodes){if(i.nodeType!==1)continue;let u=i.getAttribute?.("data-v3-id")??null;if(!u||[...l.removedNodes].some(c=>c.getAttribute?.("data-v3-id")===u))continue;t().some(c=>c.entity==="node"&&c.action==="insert"&&c.target===u)||o("insert",u)}}});return r.observe(e,{childList:!0,subtree:!0}),()=>r.disconnect()}var In=new Set(["svg","path","circle","rect","line","polyline","polygon","g","defs","use","text","tspan","ellipse","title","desc","marker","symbol","linearGradient","radialGradient","stop","mask","pattern","clipPath"]);function U(e){if(e==null||typeof e!="object")return!1;let t=e.type;return t===ne||typeof t=="symbol"&&e.props?.portalKey!=null}function Dn(e){if(e==null||typeof e!="object")return!1;let t=e.type;return(t===F||typeof t=="symbol")&&e.props?.portalKey==null}var x=new A;function ee(e,t,n){let o=x;n&&(x=n);try{Q(t),t.innerHTML="",x.register(A.ROOT,t),B(e,t)}finally{x=o}}function B(e,t,n){if(typeof e.type=="function"||e.type===Y){let i=e._child!==void 0?e._child:C(e)[0]??null;if(i==null)return null;if(e.el!=null&&(e.el.isConnected||e.el.parentNode===t))return e.el;let u=B(i,t,n);return e.el=u,u}if(Dn(e)){let i=null;for(let u of C(e)){let a=tt(u,t,n);a&&!i&&(i=a)}return i}if(U(e)){let u=String(e.props?.portalKey??"default"),a=re(u);Q(a),x.register(A.PORTAL(u),a);let d=null;for(let f of C(e)){let c=tt(f,a);c&&!d&&(d=c)}return e.el=a,d??a}let o=e.type,r=In.has(o)?document.createElementNS("http://www.w3.org/2000/svg",o):document.createElement(o),s=J();r.setAttribute("data-v3-id",s),x.register(s,r),e.el=r,w.emit(g("node","create",s,{tag:e.type}));for(let[i,u]of Object.entries(e.props??{}))if(!(i==="key"||i==="children"||i==="ref")){if(typeof u=="function"&&/^on[A-Z]/.test(i)){xe(s,i.slice(2).toLowerCase(),u,t);continue}if(u!=null&&u!==!1){if(i==="value"&&r instanceof HTMLInputElement)r.value=String(u);else if(i==="style"&&typeof u=="object"&&!Array.isArray(u)){let a=Object.entries(u).filter(([,d])=>d!=null&&d!==!1).map(([d,f])=>`${d.replace(/[A-Z]/g,c=>"-"+c.toLowerCase())}:${f}`).join(";");r.setAttribute("style",a)}else r.setAttribute(i,String(u));w.emit(g("prop","update",s,{key:i,value:u,prev:""}))}}n&&n.parentNode===t?t.insertBefore(r,n):t.appendChild(r),w.emit(g("node","insert",s,{parent:ce(t),ref:n?K(n):null}));let l=e.props?.ref;typeof l=="function"&&(w.emit(g("ref","mount",s,{})),l(r));for(let i of C(e))tt(i,r);return r}function tt(e,t,n){if(e==null||e===!1||e===!0)return null;if(typeof e=="string"||typeof e=="number"){let o=document.createTextNode(String(e)),r=J();return x.register(r,o),w.emit(g("text","create",r,{value:String(e)})),n&&n.parentNode===t?t.insertBefore(o,n):t.appendChild(o),w.emit(g("node","insert",r,{parent:ce(t),ref:n?K(n):null})),o}return B(e,t,n)}function j(e,t,n,o,r){let s=x;r&&(x=r);try{return e!==null&&t!==null&&typeof e=="object"&&typeof t=="object"&&e===t?e.el??null:Un(e,t,n,o)}finally{x=s}}function Un(e,t,n,o){if(typeof t=="string"||typeof t=="number"){let i=String(t),u=e&&typeof e=="object"?e.el:n.childNodes[0]??null;if(u&&u.nodeType===3)return u.nodeValue!==i&&(w.emit(g("text","update",K(u),{value:i,prev:u.nodeValue??""})),u.nodeValue=i),u;let a=document.createTextNode(i),d=J();return x.register(d,a),w.emit(g("text","create",d,{value:i})),o&&o.parentNode===n?n.insertBefore(a,o):n.appendChild(a),w.emit(g("node","insert",d,{parent:ce(n),ref:o?K(o):null})),a}if(t==null||t===!1||t===!0){if(e!=null&&typeof e=="object"&&!Array.isArray(e)){if(U(e))q(e);else if(e.el&&e.el.parentNode===n){let i=x.idOf(e.el);w.emit(g("node","remove",i,{parent:ce(n)})),e.el.parentNode?.removeChild(e.el),x.unregister(i,e.el)}}return null}let r=t,s=e!=null&&typeof e=="object"&&"type"in e;if(s&&e.type===r.type&&e.key===r.key){let i=e,u=te(r);Le(s?te(e):null,u,"reuse");let a=qn[u];return a?a(i,r,n,o):(Le(s?te(e):null,u,"unhandled"),console.warn(`[vdom3/patch] kind=${u} \u65E0\u540C\u7C7B\u578B\u5904\u7406\u5668\u2014\u2014\u964D\u7EA7\u91CD\u5EFA\uFF08kind \u5206\u53D1\u5B8C\u6574\u6027\u7F3A\u5931\uFF09`),B(r,n,o))}if(Le(s?te(e):null,te(r),"rebuild"),s&&typeof e.type=="function"&&e._id&&(et(e._id),w.emit(g("comp","unmount",e._id,{name:Kt(e.type)}))),s){let i=e.el;i&&i.parentNode===n?Z(i,n,e):e&&U(e)&&q(e)}return B(r,n,o)}function jn(e,t,n){let o=K(e),r=new Set([...Object.keys(t??{}),...Object.keys(n??{})]),s=t?.ref,l=n?.ref;s!==l&&(typeof s=="function"&&s(null),typeof l=="function"&&l(e));for(let i of r){if(i==="key"||i==="children"||i==="ref")continue;let u=t?.[i],a=n?.[i];if(u!==a&&!(u!=null&&a!=null&&typeof u=="object"&&typeof a=="object"&&!Array.isArray(u)&&!Array.isArray(a)&&Gn(u,a))){if(typeof a=="function"&&/^on[A-Z]/.test(i)){xe(o,i.slice(2).toLowerCase(),a,e);continue}if(a==null||a===!1)i==="value"&&e instanceof HTMLInputElement?e.value="":e.removeAttribute(i);else if(i==="value"&&e instanceof HTMLInputElement)e.value=String(a);else if(i==="style"&&typeof a=="object"&&!Array.isArray(a)){let d=Object.entries(a).filter(([,f])=>f!=null&&f!==!1).map(([f,c])=>`${f.replace(/[A-Z]/g,p=>"-"+p.toLowerCase())}:${c}`).join(";");e.setAttribute("style",d)}else e.setAttribute(i,String(a));w.emit(g("prop","update",o,{key:i,value:a,prev:u??""}))}}}function Le(e,t,n){w.emit(g("vnode","patch",void 0,{oldKind:e,newKind:t,strategy:n}))}function zn(e,t,n,o){let r=e.el;return r==null?(Le(te(e),"native","unhandled"),console.warn(`[vdom3/patch] native \u590D\u7528\u4F46 ov.el \u7F3A\u5931\uFF08tag=${String(e.type)}\u2014\u2014kind \u5206\u53D1\u6216\u6E32\u67D3\u65F6\u5E8F\u9519\u8BEF\uFF09\u2014\u2014\u964D\u7EA7\u91CD\u5EFA`),B(t,n,o)):(t.el=r,jn(r,e.props,t.props),nt(e,t,r),r)}function Ft(e,t,n,o){t._render=e._render,t._id=e._id;let r=t._child!==void 0?t._child:C(t)[0]??null,s=e._child!==void 0?e._child:C(e)[0]??null;if(r==null){if(s&&U(s))q(s);else if(e.el){Ae(s);let l=x.idOf(e.el);w.emit(g("node","remove",l,{parent:ce(n)})),e.el.parentNode?.removeChild(e.el),x.unregister(l,e.el),e.el=null}return t.el=null,null}return e.el==null||!(e.el.isConnected||e.el.parentNode===n)?t.el=B(t,n,o):(j(s,r,n,o),t.el=e.el),t.el}function Wn(e,t,n,o){nt(e,t,n,Fn(e));let r=C(e).find(s=>s!=null&&typeof s=="object"&&!Array.isArray(s));return t.el=e.el??r?.el??null,t.el}function $n(e,t,n,o){let r=String(t.props?.portalKey??"default"),s=re(r);return x.register(A.PORTAL(r),s),nt(e,t,s),t.el=s,s}var qn={native:zn,comp:Ft,app:Ft,frag:Wn,portal:$n,text:void 0,null:void 0};function Fn(e){let n=C(e).find(r=>r!=null&&typeof r=="object"&&!Array.isArray(r))?.el,o=n?.parentNode;if(o&&n){let r=0;for(let s of o.childNodes){if(s===n)return r;r++}}return 0}function Bn(e,t,n){let o=new Map;e.forEach((s,l)=>{$(s)&&s.key!=null&&o.set(s.key,l)});let r=null;for(let s=0;s<t.length;s++){let l=t[s];if(!$(l)||l.key==null){r=null;continue}let i=o.get(l.key),u=null;if(i!=null&&$(e[i])&&(u=e[i].el??null),u&&u.parentNode===n){let a=r?r.nextSibling:n.firstChild;if(a!==u){let d=u.previousSibling?x.idOf(u.previousSibling):null;n.insertBefore(u,a),w.emit(g("node","move",x.idOf(u),{parent:K(n),ref:a?x.idOf(a):null,prev:d}))}r=u}}}function Kn(e,t,n){let o=new Map;for(let l of e)$(l)&&l.key!=null&&o.set(l.key,l);Bn(e,t,n);let r=null;for(let l of t){let i=l,u=o.get(i.key??"")??null;u&&u!==i?(j(u,i,n),r=i.el??r):u||(B(i,n,r?r.nextSibling:n.firstChild),r=i.el??r)}let s=new Set(t.filter(l=>$(l)).map(l=>l.key));for(let l of e)if($(l)&&l.key!=null&&!s.has(l.key)&&l.el?.parentNode===n){let i=x.idOf(l.el);w.emit(g("node","remove",i,{parent:K(n)})),l.el.parentNode?.removeChild(l.el),x.unregister(i,l.el)}}function Ae(e){if(e==null||typeof e!="object"||Array.isArray(e))return;let t=e.props?.ref;if(typeof t=="function"){let n=e.el;w.emit(g("ref","cleanup",n?x.idOf(n):"null")),t(null)}for(let n of C(e))n!=null&&typeof n=="object"&&!Array.isArray(n)&&Ae(n)}function Bt(e,t,n){let o=e._id;if(o&&(et(o),w.emit(g("comp","unmount",o,{name:Kt(e.type)})),pt(o)),e.el)Z(e.el,t,e);else{let r=t.childNodes[n];r&&r.parentNode?.removeChild(r)}}function Z(e,t,n){Me(x.idOf(e)),n&&Ae(n);let o=x.idOf(e);w.emit(g("node","remove",o,{parent:ce(t)})),e.parentNode?.removeChild(e),x.unregister(o,e)}function Gn(e,t){let n=Object.keys(e),o=Object.keys(t);if(n.length!==o.length)return!1;for(let r of n)if(e[r]!==t[r])return!1;return!0}function q(e){let t=String(e.props?.portalKey??"default"),n=re(t);Ae(e);for(let o of[...n.childNodes]){Me(x.idOf(o));let r=x.idOf(o);w.emit(g("node","remove",r,{parent:A.PORTAL(t)})),n.removeChild(o),x.unregister(r,o)}}function nt(e,t,n,o=0){let r=C(e),s=C(t);if(s.length>1&&s.every(u=>$(u)&&u.key!=null)){Kn(r,s,n);return}let l=null,i=Math.max(r.length,s.length);for(let u=0;u<i;u++){let a=u<r.length?r[u]:null,d=u<s.length?s[u]:null;if(u>=s.length){if(a!=null&&typeof a=="object"&&U(a)){q(a);continue}if(a!=null&&typeof a=="object"&&a._child&&U(a._child)){q(a._child);continue}if(a!=null&&typeof a=="object"&&typeof a.type=="function"&&a._id){Bt(a,n,u);continue}if(a!=null&&typeof a=="object"&&a.el)Z(a.el,n,a);else{let f=n.childNodes[u];f&&f.parentNode?.removeChild(f)}continue}if(typeof d=="string"||typeof d=="number"){let f=String(d),c=n.childNodes[u];if(c&&c.nodeType===3)c.nodeValue!==f&&(w.emit(g("text","update",K(c),{value:f,prev:c.nodeValue??""})),c.nodeValue=f);else{let p=document.createTextNode(f),y=J();x.register(y,p),w.emit(g("text","create",y,{value:f})),n.insertBefore(p,n.childNodes[u]??null),w.emit(g("node","insert",y,{parent:K(n),ref:null}))}continue}if(d==null||d===!1||d===!0){if(a!=null&&typeof a=="object"&&U(a)){q(a);continue}if(a!=null&&typeof a=="object"&&typeof a.type=="function"&&a._id){Bt(a,n,u);continue}a!=null&&typeof a=="object"&&a.el&&Z(a.el,n,a);continue}if(a!=null&&typeof a=="object"){j(a,d,n);let f=d.el;f&&f.parentNode===n&&(l=f)}else{let f=l?l.nextSibling:n.firstChild,c=B(d,n,f);c&&c.parentNode===n&&(l=c)}}qt(n,t)}function Kt(e){return typeof e=="function"?e.name||"anonymous":String(e)}function K(e){return x.idOf(e)}function ce(e){return x.idOf(e)}var Oe=class{queue=[];running=!1;iterations=0;schedule(t){this.queue.push(t),this.running||(this.running=!0,this.iterations=0,queueMicrotask(()=>this.flush()))}flush(){if(!(!this.running&&this.queue.length===0)){this.running=!0;do{if(++this.iterations>10){console.error("[vdom3/scheduler] \u6E32\u67D3\u5FAA\u73AF\u8D85\u9650\uFF08\u7591\u4F3C\u6B7B\u5FAA\u73AF\uFF09\u2014\u2014\u4E2D\u6B62\u672C\u8F6E flush"),this.queue=[];break}let t=this.queue;this.queue=[];for(let n of t)try{n()}catch(o){console.error("[vdom3/scheduler] render error:",o)}}while(this.queue.length>0);this.running=!1,this.iterations=0}}pending(){return this.queue.length}get isRunning(){return this.running}},fe=new Oe;function Xn(e){return typeof e.type=="function"&&e.type.name||"anonymous"}function pe(e,t){if(e==null||typeof e!="object"||Array.isArray(e))return null;if(e._id===t)return e;let n=e._child;if(n!=null&&typeof n=="object"&&!Array.isArray(n)){let o=pe(n,t);if(o)return o}for(let o of C(e))if(o!=null&&typeof o=="object"&&!Array.isArray(o)){let r=pe(o,t);if(r)return r}return null}function _e(e,t,n){let o=e,r=!1,s=!1,l=new Set,i=new Set;async function u(m){if(l.has(m)){i.add(m);return}l.add(m);try{do{i.delete(m);let v=pe(o,m);if(!v||typeof v.type!="function"||!v._render)break;w.emit(g("comp","render",v._id,{name:Xn(v)}));let h=globalThis.__v3HangMs??3e3,V=await Promise.race([v._render(v.props),new Promise((k,T)=>setTimeout(()=>T(new Error(`renderFn \u6302\u8D77\u8D85\u65F6\uFF08${h}ms\uFF09\u2014\u2014\u7EC4\u4EF6 ${m} \u672A resolve`)),h))]),b=v._child??null,N=V?await Promise.race([R(V,d,b??void 0),new Promise((k,T)=>setTimeout(()=>T(new Error(`buildVNode \u6302\u8D77\u8D85\u65F6\uFF08${h}ms\uFF09\u2014\u2014\u7EC4\u4EF6 ${m} \u8F93\u51FA\u6784\u5EFA\u672A resolve`)),h))]):null;v._child=N;let L=v.el?.parentNode??t;if(b&&N)j(b,N,L);else if(N)ee(N,L);else if(b||v.el)if(b&&U(b))q(b);else{let k=b&&b.el||v.el;k&&k.parentNode===L&&Z(k,L,b)}v.el=N?.el??null}while(i.has(m))}catch(v){let h=v;w.emit(g("error","caught",m,{phase:"update",name:"component",message:h?.message??String(v)}))}finally{l.delete(m)}}async function a(){if(r){s=!0;return}r=!0;try{do{s=!1;let m=await R(e,d,o,!0);o==null?ee(m,t):j(o,m,t),o=m}while(s)}finally{r=!1}}let d=Object.assign(Object.create(n?.ctx??null),{_vnode:e,_parent:t,render(){fe.schedule(()=>{a()})}}),f=m=>{fe.schedule(()=>{u(m)})};d._componentRender=f;let c,p=new Promise(m=>{c=m}),y={ctx:d,ready:p,rerender:()=>fe.schedule(()=>{a()}),flush:()=>fe.flush(),unmount(){o._id&&w.emit(g("comp","unmount",o._id,{name:"root"})),t.innerHTML=""}};return Q(t),Se(t,()=>w.events().slice(-200)),(async()=>{try{let m=await R(e,d);ee(m,t),o=m}catch(m){let v=m;w.emit(g("error","caught",e._id??"root",{phase:"mount",name:"root",message:v?.message??String(m)}))}finally{c()}})(),y}function G(e){return`${e.entity}:${e.action}`}function He(e,t,n){switch(G(e)){case"node:create":{let o=e.payload,r=document.createElement(o.tag);r.setAttribute("data-v3-id",e.target),n.register(e.target,r);break}case"text:create":{let o=e.payload,r=document.createTextNode(o.value);n.register(e.target,r);break}case"node:insert":{let o=e.payload,r=o.parent===A.ROOT?t:n.resolveParent(o.parent),s=n.get(e.target),l=o.ref?n.get(o.ref):null;r&&s&&(l&&l.parentNode===r?r.insertBefore(s,l):r.appendChild(s));break}case"node:remove":{let o=n.get(e.target);o?.parentNode&&o.parentNode.removeChild(o);break}case"node:move":{let o=e.payload,r=n.get(e.target),s=o.parent===A.ROOT?t:n.resolveParent(o.parent),l=o.ref?n.get(o.ref):null;r&&s&&r.parentNode===s&&(l&&l.parentNode===s?s.insertBefore(r,l):s.appendChild(r));break}case"prop:update":{let o=e.payload,r=n.get(e.target);r?.nodeType===1&&(o.value==null||o.value===!1?r.removeAttribute(o.key):r.setAttribute(o.key,String(o.value)));break}case"text:update":{let o=e.payload,r=n.get(e.target);r?.nodeType===3&&(r.nodeValue=o.value);break}default:break}}function Yn(e,t,n=new A){n.register(A.ROOT,t),t.innerHTML="";for(let o of e)He(o,t,n)}function Jn(e,t,n=new A){let r=e.filter(s=>G(s)==="node:insert"||G(s)==="node:remove"||G(s)==="prop:update"||G(s)==="text:update"||G(s)==="node:move").slice(-t);for(let s of[...r].reverse())switch(G(s)){case"node:insert":{let l=n.get(s.target);l?.parentNode&&l.parentNode.removeChild(l);break}case"node:remove":{let l=s.payload,i=n.takeRemoved(s.target),u=l.parent===A.ROOT?null:n.get(l.parent);i&&u&&u.appendChild(i);break}case"prop:update":{let l=s.payload,i=n.get(s.target);i?.nodeType===1&&(l.prev==null||l.prev===""?i.removeAttribute(l.key):i.setAttribute(l.key,String(l.prev)));break}case"text:update":{let l=s.payload,i=n.get(s.target);i?.nodeType===3&&(i.nodeValue=l.prev);break}case"node:move":{let l=s.payload,i=n.get(s.target),u=l.parent===A.ROOT?null:n.get(l.parent);if(i&&u&&i.parentNode===u)if(l.prev){let a=n.get(l.prev);a&&a.parentNode===u&&u.insertBefore(i,a.nextSibling)}else u.insertBefore(i,u.firstChild);break}default:break}}function Qn(e,t){return e.filter(n=>G(n)===t)}function Zn(e,t){return e.some(t)}function eo(e,t){let n=e.map(G);if(!t.map((r,s)=>n[s]===r).every(Boolean))throw new Error(`\u4E8B\u4EF6\u5E8F\u5217\u4E0D\u7B26\uFF1A\u671F\u671B [${t.join(",")}] \u5B9E\u9645 [${n.slice(0,t.length).join(",")}]`)}function to(e){let t=[],n=String(e).replace(/:(\w+)/g,(o,r)=>(t.push(r),"([^/]+)")).replace(/\*/g,".*");return{re:new RegExp(`^${n}$`),keys:t}}function no(e,t){for(let n of e){let{re:o,keys:r}=to(n.path),s=t.match(o);if(!s)continue;let l={};for(let i=0;i<r.length;i++)l[r[i]]=decodeURIComponent(s[i+1]);return{def:n,params:l}}return null}function ot(e){return typeof e.type=="function"&&e.type.name||"anonymous"}function oo(e,t,n){let o=null,r=null,s=!1,l=new Set,i=null;Q(t),Se(t,()=>w.events().slice(-200));let u={},a={path:"",params:{}},d=()=>Object.assign(Object.create(n?.ctx??{}),{render:()=>{f()},_componentRender:b=>{p(b)},route:a});async function f(){if(s){i={type:"refresh"};return}if(!o||!r){w.emit(g("internal","skip","page",{reason:o?"no-page-vnode":"no-current"}));return}s=!0;try{let b=r;if(typeof b.type=="function"&&b._render){w.emit(g("comp","render",b._id,{name:ot(b)}));let N=3e3,L=await Promise.race([b._render(b.props),new Promise((z,W)=>setTimeout(()=>W(new Error(`\u9875\u9762 renderFn \u6302\u8D77\u8D85\u65F6\uFF08${N}ms\uFF09`)),N))]);if(L==null)return;let k=b._child??null,T=await R(L,u,k&&typeof k=="object"?k:null);b._child=T,j(k,T,t)}}catch(b){let N=b;w.emit(g("error","caught",r?._id??"page",{phase:"update",name:"page",message:N?.message??String(b)}))}finally{if(s=!1,i!=null){let b=i;i=null,y(b)}}}let c=()=>globalThis.__v3HangMs??3e3;async function p(b){if(s){w.emit(g("internal","queue",b,{reason:"busy"})),l.add(b);return}if(!o){w.emit(g("internal","skip",b,{reason:"no-current"}));return}s=!0;try{let N=mt(b)??pe(o,b);if(!N||typeof N.type!="function"||!N._render){w.emit(g("internal","notfound",b,{reason:"comp-missing-or-render-absent"}));return}w.emit(g("comp","render",N._id,{name:ot(N)}));let L=c(),k=await Promise.race([N._render(N.props),new Promise((O,_)=>setTimeout(()=>_(new Error(`renderFn \u6302\u8D77\u8D85\u65F6\uFF08${L}ms\uFF09\u2014\u2014\u7EC4\u4EF6 ${b} \u672A resolve`)),L))]),T=N._child??null,z=k?await Promise.race([R(k,u,T??void 0),new Promise((O,_)=>setTimeout(()=>_(new Error(`buildVNode \u6302\u8D77\u8D85\u65F6\uFF08${L}ms\uFF09\u2014\u2014\u7EC4\u4EF6 ${b} \u8F93\u51FA\u6784\u5EFA\u672A resolve`)),L))]):null;N._child=z;let W=N.el?.parentNode??t;if(T&&z)j(T,z,W);else if(z)ee(z,W);else if(T||N.el)if(T&&U(T))q(T);else{let O=T&&T.el||N.el;O&&O.parentNode===W&&Z(O,W,T)}N.el=z?.el??null}catch(N){let L=N;w.emit(g("error","caught",b,{phase:"update",name:ot(pe(o,b)??{}),message:L?.message??String(N)}))}finally{if(s=!1,l.size>0){let N=l.values().next().value;l.delete(N),p(N)}else if(i!=null){let N=i;i=null,y(N)}}}function y(b){b.type==="nav"?m(b.path):b.type==="comp"?p(b.id):f()}async function m(b){if(s){i={type:"nav",path:b};return}s=!0;try{let N=no(e,b);if(w.emit(g("route","change",void 0,{path:b,params:N?.params??{}})),!N){t.innerHTML="",o=null,r=null;return}u=d(),a.path=b,a.params=N.params;let L=N.def.render(N.params),k=N.def.layout?N.def.layout(L):L,T=await R(k,u,o,!0);o==null?ee(T,t):j(o,T,t),o=T,r=T}finally{if(s=!1,i!=null){let N=i;i=null,y(N)}}}let h=S(window,"popstate",()=>{m(window.location.pathname)}),V=n?.initialPath??window.location.pathname;return m(V),{navigate(b){window.history.pushState(null,"",b),m(b)},path:()=>window.location.pathname,refresh:()=>{m(window.location.pathname)},close:()=>{h()}}}async function ro(e){let t=await R(e,{}),n=[],o=0,r=()=>`s${++o}`,s=Date.now(),l=(i,u)=>{if(typeof i.type=="function"){let d=i._child??C(i)[0]??null;d&&typeof d=="object"&&!Array.isArray(d)&&l(d,u);return}if(i.type===F){for(let d of C(i))d&&typeof d=="object"&&!Array.isArray(d)&&l(d,u);return}let a=r();n.push(g("node","create",a,{tag:i.type}));for(let[d,f]of Object.entries(i.props??{}))d==="key"||d==="children"||typeof f!="function"&&f!=null&&f!==!1&&n.push(g("prop","update",a,{key:d,value:f,prev:""}));n.push(g("node","insert",a,{parent:u,ref:null}));for(let d of C(i))if(typeof d=="string"||typeof d=="number"){let f=r();n.push(g("text","create",f,{value:String(d)})),n.push(g("node","insert",f,{parent:a,ref:null}))}else d&&typeof d=="object"&&!Array.isArray(d)&&l(d,a)};return l(t,"root"),n}async function*so(e){let t=await R(e,{}),n=0,o=()=>`s${++n}`,r=Date.now(),s=function*(l,i){if(typeof l.type=="function"){let a=l._child??C(l)[0]??null;a&&typeof a=="object"&&!Array.isArray(a)&&(yield*s(a,i));return}if(l.type===F){for(let a of l.children??[])a&&typeof a=="object"&&!Array.isArray(a)&&(yield*s(a,i));return}let u=o();yield g("node","create",u,{tag:l.type});for(let[a,d]of Object.entries(l.props??{}))a==="key"||a==="children"||typeof d!="function"&&d!=null&&d!==!1&&(yield g("prop","update",u,{key:a,value:d,prev:""}));yield g("node","insert",u,{parent:i,ref:null});for(let a of C(l))if(typeof a=="string"||typeof a=="number"){let d=o();yield g("text","create",d,{value:String(a)}),yield g("node","insert",d,{parent:u,ref:null})}else a&&typeof a=="object"&&!Array.isArray(a)&&(yield*s(a,u))};yield*s(t,"root")}function io(e){let t=new Map,n=new Map,o=new Map;for(let i of e)if(i.entity==="node"&&i.action==="create")t.set(i.target,i.payload.tag);else if(i.entity==="prop"&&i.action==="update"){let u=i.payload,a=n.get(i.target)??new Map;u.value==null||u.value===!1?a.delete(u.key):a.set(u.key,u.value),n.set(i.target,a)}else i.entity==="text"&&i.action==="create"&&o.set(i.target,i.payload.value);let r=new Map;for(let i of e)if(i.entity==="node"&&i.action==="insert"){let u=i.payload,a=r.get(u.parent)??[];a.push(i.target),r.set(u.parent,a)}let s=i=>i.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,"""),l=i=>{let u=t.get(i);if(u){let a=n.get(i),d=a?[...a.entries()].filter(([c,p])=>typeof p!="function"&&c!=="data-v3-id"&&c!=="key"&&c!=="ref").map(([c,p])=>` ${c}="${s(String(p))}"`).join(""):"",f=(r.get(i)??[]).map(l).join("");return`<${u}${d}>${f}</${u}>`}return s(o.get(i)??"")};return(r.get("root")??[]).map(l).join("")}function ao(e){return JSON.stringify(e)}function lo(e){return JSON.parse(e)}function me(e){return`${e.entity}:${e.action}`}function uo(e,t="recorded-render"){let n=[...new Set(e.map(me))],o=new Map;for(let d of e)me(d)==="node:create"&&o.set(d.target,d.payload.tag);let r=new Map;for(let d of e)if(me(d)==="node:insert"){let f=d.payload,c=r.get(f.parent)??[];c.push(d.target),r.set(f.parent,c)}let s=new Set,l=d=>{s.add(d);for(let f of r.get(d)??[])l(f)};for(let d of e)me(d)==="node:remove"&&l(d.target);let i=new Map;for(let[d,f]of o)s.has(d)||i.set(f,(i.get(f)??0)+1);let u=[...i.entries()].map(([d,f])=>` assert.equal(root.querySelectorAll('${d}').length, ${f}, '${d} \xD7 ${f}\uFF08\u4E8B\u4EF6\u6D41\u63A8\u5BFC\uFF09')`).join(`
|
|
8
|
+
`),a=JSON.stringify(e);return`/**
|
|
8
9
|
* \u81EA\u52A8\u751F\u6210\u6D4B\u8BD5\uFF08vdom3 recordToTest\uFF09\u2014\u2014\u4E8B\u4EF6\u6D41\u5F55\u5236\u8F6C\u56DE\u5F52
|
|
9
10
|
* \u6E32\u67D3\u8FC7\u7A0B\uFF1A${n.join(" \u2192 ")}
|
|
10
11
|
*/
|
|
@@ -16,7 +17,7 @@ import { replay, eventsOf } from '../ui-dom/vdom3/index.ts'
|
|
|
16
17
|
before(setupJsdom)
|
|
17
18
|
|
|
18
19
|
test('${t}\uFF1A\u4E8B\u4EF6\u6D41\u56DE\u653E\uFF08DOM = fold\uFF09+ \u6E32\u67D3\u5E8F\u5217\u65AD\u8A00', () => {
|
|
19
|
-
const events = ${
|
|
20
|
+
const events = ${a}
|
|
20
21
|
|
|
21
22
|
// \u56DE\u653E\uFF1A\u4E8B\u4EF6\u6D41 \u2192 DOM\uFF08\u96F6\u731C\u6D4B\u91CD\u5EFA\uFF09
|
|
22
23
|
const root = document.createElement('div')
|
|
@@ -28,12 +29,12 @@ test('${t}\uFF1A\u4E8B\u4EF6\u6D41\u56DE\u653E\uFF08DOM = fold\uFF09+ \u6E32\u67
|
|
|
28
29
|
${u}
|
|
29
30
|
|
|
30
31
|
// \u6E32\u67D3\u7C7B\u578B\u65AD\u8A00\uFF1A\u6E32\u67D3\u8FC7\u7A0B\u5305\u542B\u7684\u5173\u952E\u4E8B\u4EF6\uFF08\u7CBE\u786E\u63CF\u8FF0\u6E32\u67D3\u505A\u4E86\u4EC0\u4E48\uFF09
|
|
31
|
-
const keyTypes = ['
|
|
32
|
+
const keyTypes = ['node:create', 'prop:update', 'node:insert']
|
|
32
33
|
for (const t of keyTypes) {
|
|
33
34
|
assert.ok(eventsOf(events, t).length > 0, '\u5305\u542B ' + t + ' \u4E8B\u4EF6')
|
|
34
35
|
}
|
|
35
|
-
assert.ok(eventsOf(events, '
|
|
36
|
+
assert.ok(eventsOf(events, 'text:create').length > 0, '\u5305\u542B\u6587\u672C\u521B\u5EFA\u4E8B\u4EF6\uFF08\u6709\u6587\u672C\u5185\u5BB9\uFF09')
|
|
36
37
|
|
|
37
38
|
document.body.removeChild(root)
|
|
38
39
|
})
|
|
39
|
-
`}function rn(e){let t={};for(let n of e)t[n.type]=(t[n.type]??0)+1;return Object.entries(t).map(([n,o])=>`${n}\xD7${o}`).join(" ")}function rt(e,t){let n=new V;n.register(V.ROOT,e),e.innerHTML="";let o=0,l=[];return{sync(){let s=t(),i=s.slice(o);l=i;for(let r of i)oe(r,e,n);return o=s.length,i.length},applied(){return o},lastBatch(){return[...l]}}}function sn(e,t,n){let o=rt(e,t);return o.sync(),n(()=>{o.sync()})}function ln(e){return async(t,n)=>{let o={...n,ui:{render:()=>n.render?.()}};return e(t,o)}}function an(e){return async(t,n)=>{let o={...n,render:()=>n.ui?.render?.()};return e(t,o)}}export{A as Fragment,V as NodeRegistry,F as Portal,ne as Scheduler,oe as applyEvent,sn as autoSync,O as buildVNode,ln as compat,Ne as createEventStream,yt as createPortal,Ft as createRoot,Jt as createRouter,rt as createSync,ge as createV3Ui,nn as deserializeEvents,U as ensurePortalContainer,Xt as eventsOf,en as eventsToHtml,zt as expectEventSequence,mt as h,Kt as hasEvent,D as isVNode,$ as mount,H as nextNodeId,L as patch,on as recordToTest,Zt as renderToEventStream,Qt as renderToEvents,$t as replay,Y as scheduler,tn as serializeEvents,E as stream,rn as summarizeEvents,an as toV2,Bt as undo};
|
|
40
|
+
`}function co(e){let t={};for(let n of e)t[me(n)]=(t[me(n)]??0)+1;return Object.entries(t).map(([n,o])=>`${n}\xD7${o}`).join(" ")}function Gt(e,t){let n=new A;n.register(A.ROOT,e),e.innerHTML="";let o=0,r=[];return{sync(){let s=t(),l=s.slice(o);r=l;for(let i of l)He(i,e,n);return o=s.length,l.length},applied(){return o},lastBatch(){return[...r]}}}function fo(e,t,n){let o=Gt(e,t);return o.sync(),n(()=>{o.sync()})}var po={"chevron-down":["M6 9l6 6 6-6"],"chevron-up":["M6 15l6-6 6 6"],"chevron-left":["M15 18l-6-6 6-6"],"chevron-right":["M9 18l6-6-6-6"],"arrow-left":["M19 12H5","M12 19l-7-7 7-7"],"arrow-up":["M12 19V5","M5 12l7-7 7 7"],"arrow-down":["M12 5v14","M19 12l-7 7-7-7"],"arrow-right":["M5 12h14","M12 5l7 7-7 7"],sort:["M7 15l5 5 5-5","M7 9l5-5 5 5"],"sort-asc":["M12 19V5","M5 12l7-7 7 7"],"sort-desc":["M12 5v14","M19 12l-7 7-7-7"],check:["M20 6L9 17l-5-5"],close:["M18 6L6 18","M6 6l12 12"],alert:["M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z","M12 9v4","M12 17h.01"],info:["M12 22a10 10 0 1 0 0-20 10 10 0 0 0 0 20z","M12 16v-4","M12 8h.01"],warning:["M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z","M12 9v4","M12 17h.01"],pause:["M6 4h4v16H6z","M14 4h4v16h-4z"],settings:["M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z","M15 12a3 3 0 1 1-6 0 3 3 0 0 1 6 0z"],search:["M11 19a8 8 0 1 0 0-16 8 8 0 0 0 0 16z","M21 21l-4.35-4.35"],send:["M22 2L11 13","M22 2l-7 20-4-9-9-4 20-7z"],stop:["M6 6h12v12H6z"],retry:["M1 4v6h6","M23 20v-6h-6","M20.49 9A9 9 0 0 0 5.64 5.64L1 10","M3.51 15a9 9 0 0 0 14.85 3.36L23 14"],upload:["M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4","M17 8l-5-5-5 5","M12 3v12"],trash:["M3 6h18","M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2","M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6h14","M10 11v6","M14 11v6"],edit:["M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7","M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z"],plus:["M12 5v14","M5 12h14"],copy:["M20 9h-9a2 2 0 0 0-2 2v9a2 2 0 0 0 2 2h9a2 2 0 0 0 2-2v-9a2 2 0 0 0-2-2z","M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"],eye:["M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z","M15 12a3 3 0 1 1-6 0 3 3 0 0 1 6 0z"],"eye-off":["M17.94 17.94A10.07 10.07 0 0 1 12 20c-7 0-11-8-11-8a18.45 18.45 0 0 1 5.06-5.94","M9.9 4.24A9.12 9.12 0 0 1 12 4c7 0 11 8 11 8a18.5 18.5 0 0 1-2.16 3.19","M14.12 14.12a3 3 0 1 1-4.24-4.24","M1 1l22 22"],star:["M12 2l3.09 6.26L22 9.27l-5 4.87 1.18 6.88L12 17.77l-6.18 3.25L7 14.14 2 9.27l6.91-1.01L12 2z"],dashboard:["M3 13h8V3H3z","M21 13h-8V9h8z","M21 21h-8v-8h8z","M3 21h8v-8H3z"],grid:["M3 3h7v7H3z","M14 3h7v7h-7z","M14 14h7v7h-7z","M3 14h7v7H3z"],box:["M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z","M3.27 6.96L12 12.01l8.73-5.05","M12 22.08V12"],users:["M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2","M9 11a4 4 0 1 0 0-8 4 4 0 0 0 0 8z","M23 21v-2a4 4 0 0 0-3-3.87","M16 3.13a4 4 0 0 1 0 7.75"],user:["M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2","M12 11a4 4 0 1 0 0-8 4 4 0 0 0 0 8z"],home:["M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z","M9 22V12h6v10"],folder:["M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z"],file:["M13 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V9z","M13 2v7h7"],"file-text":["M13 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V9z","M13 2v7h7","M9 13h6","M9 17h6"],calendar:["M3 5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z","M16 3v4","M8 3v4","M3 11h18"],clock:["M12 22a10 10 0 1 0 0-20 10 10 0 0 0 0 20z","M12 6v6l4 2"],bell:["M18 8A6 6 0 0 0 6 8c0 7-3 9-3 9h18s-3-2-3-9","M13.73 21a2 2 0 0 1-3.46 0"],menu:["M3 12h18","M3 6h18","M3 18h18"],activity:["M22 12h-4l-3 9L9 3l-3 9H2"],"trending-up":["M23 6l-9.5 9.5-5-5L1 18","M17 6h6v6"],"trending-down":["M23 18l-9.5-9.5-5 5L1 6","M17 18h6v-6"],database:["M12 8c4.97 0 9-1.34 9-3s-4.03-3-9-3-9 1.34-9 3 4.03 3 9 3z","M21 12c0 1.66-4.03 3-9 3s-9-1.34-9-3","M3 5v14c0 1.66 4.03 3 9 3s9-1.34 9-3V5"],server:["M20 4H4a2 2 0 0 0-2 2v4a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2z","M4 14h16","M20 14a2 2 0 0 1 2 2v4a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2v-4a2 2 0 0 1 2-2","M7 18h.01","M12 18h.01"],heart:["M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"],refresh:["M23 4v6h-6","M1 20v-6h6","M3.51 9a9 9 0 0 1 14.85-3.36L23 10","M20.49 15a9 9 0 0 1-14.85 3.36L1 14"],message:["M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"],inbox:["M22 12h-6l-2 3h-4l-2-3H2","M5.45 5.11L2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z"],shield:["M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"],zap:["M13 2L3 14h9l-1 8 10-12h-9l1-8z"],target:["M12 22a10 10 0 1 0 0-20 10 10 0 0 0 0 20z","M12 18a6 6 0 1 0 0-12 6 6 0 0 0 0 12z","M12 14a2 2 0 1 0 0-4 2 2 0 0 0 0 4z"],mail:["M4 4h16a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2z","M22 6l-10 7L2 6"],"external-link":["M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6","M15 3h6v6","M10 14L21 3"],"log-out":["M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4","M16 17l5-5-5-5","M21 12H9"],lock:["M5 11h14a2 2 0 0 1 2 2v7a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-7a2 2 0 0 1 2-2z","M7 11V7a5 5 0 0 1 10 0v4"],list:["M8 6h13","M8 12h13","M8 18h13","M3 6h.01","M3 12h.01","M3 18h.01"],"bar-chart":["M12 20V10","M18 20V4","M6 20v-4"],gauge:["M12 15l3.5-3.5","M20.39 18.39A10 10 0 1 0 3.61 18.39","M12 15a2 2 0 1 0 0 4 2 2 0 0 0 0-4z"],paperclip:["M21.44 11.05l-9.19 9.19a6 6 0 0 1-8.49-8.49l9.19-9.19a4 4 0 0 1 5.66 5.66l-9.2 9.19a2 2 0 0 1-2.83-2.83l8.49-8.48"],filter:["M22 3H2l8 9.46V19l4 2v-8.54L22 3z"],layers:["M12 2L2 7l10 5 10-5-10-5z","M2 17l10 5 10-5","M2 12l10 5 10-5"],"map-pin":["M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0 1 18 0z","M15 10a3 3 0 1 1-6 0 3 3 0 0 1 6 0z"],"book-open":["M2 3h6a4 4 0 0 1 4 4v14a3 3 0 0 0-3-3H2z","M22 3h-6a4 4 0 0 0-4 4v14a3 3 0 0 1 3-3h7z"],github:["M9 19c-5 1.5-5-2.5-7-3m14 6v-3.87a3.37 3.37 0 0 0-.94-2.61c3.14-.35 6.44-1.54 6.44-7A5.44 5.44 0 0 0 20 4.77 5.07 5.07 0 0 0 19.91 1S18.73.65 16 2.48a13.38 13.38 0 0 0-7 0C6.27.65 5.09 1 5.09 1A5.07 5.07 0 0 0 5 4.77a5.44 5.44 0 0 0-1.5 3.78c0 5.42 3.3 6.61 6.44 7A3.37 3.37 0 0 0 9 18.13V22"],tag:["M20.59 13.41l-7.17 7.17a2 2 0 0 1-2.83 0L2 12V2h10l8.59 8.59a2 2 0 0 1 0 2.82z","M7 7h.01"],phone:["M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z"],"more-vertical":["M12 7a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3z","M12 13.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3z","M12 20a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3z"],"check-circle":["M22 11.08V12a10 10 0 1 1-5.93-9.14","M22 4L12 14.01l-3-3"],"alert-circle":["M12 22a10 10 0 1 0 0-20 10 10 0 0 0 0 20z","M12 8v4","M12 16h.01"],wifi:["M5 12.55a11 11 0 0 1 14.08 0","M1.42 9a16 16 0 0 1 21.16 0","M8.53 16.11a6 6 0 0 1 6.95 0","M12 20h.01"],cpu:["M9 9h6v6H9z","M9 1v4","M15 1v4","M9 19v4","M15 19v4","M1 9h4","M1 15h4","M19 9h4","M19 15h4","M5 5h14v14H5z"],"hard-drive":["M22 12H2","M5.45 5.11L2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z","M6 16h.01","M10 16h.01"],globe:["M12 22a10 10 0 1 0 0-20 10 10 0 0 0 0 20z","M2 12h20","M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z"],briefcase:["M16 20V4a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v16","M2 20h20","M4 4h16a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2z"],layout:["M3 3h18a1 1 0 0 1 1 1v16a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1z","M9 3v18","M3 9h18"]},Xt=async(e,t)=>async n=>{let{name:o,size:r,className:s}=n;return M("svg",{class:`wf-icon${s?" "+s:""}`,width:r??"1em",height:r??"1em",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":1.8,"stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true",focusable:"false"},po[o].map(l=>M("path",{d:l})))};var Yt=async(e,t)=>{let n=!1,o=t.ui.usePopup({presence:!0,trapFocus:!0,lockScroll:!0,positioning:"none",closeOnOutside:!1,closeOnEscape:!1,isOpen:()=>n,setOpen:()=>{}}),r;return t.ui.useGlobalKey(s=>{s.key==="Escape"&&o.phase==="open"&&r?.()}),async s=>{let{open:l,title:i,onClose:u,children:a,footer:d,width:f,closable:c=!0,maskClosable:p=!0}=s;r=u,n=!!l;let y=t?.i18n?.components?.Modal??{},m=o.sync(n);if(m==="closed")return null;let v=M("div",{class:"wf-modal-overlay",onClick:p?u:void 0}),h=c?M("button",{class:"wf-modal-close",onClick:u,type:"button","aria-label":y.closeAria??"\u5173\u95ED"},M(Xt,{name:"close"})):null,V=i?M("div",{class:"wf-modal-header"},[i,h].filter(Boolean)):null,b=M("div",{class:"wf-modal-body"},a),N=d?M("div",{class:"wf-modal-footer"},d):null,L=M("div",{class:"wf-modal-content",onClick:T=>T.stopPropagation(),style:f?{minWidth:`min(${f}, calc(100vw - 32px))`,maxWidth:`min(${f}, calc(100vw - 32px))`}:void 0},[V,b,N].filter(Boolean)),k=M("div",{class:`wf-modal ${m==="exit"?"wf-modal--exit":"wf-modal--enter"}`,role:"dialog","aria-modal":"true","aria-label":i??y.ariaLabel??"\u5F39\u7A97"},[v,L]);return o.portal(k,"modal")}};var rt=async(e,t)=>async n=>{let{variant:o="primary",size:r="md",block:s,loading:l,disabled:i,type:u,onClick:a,children:d}=n,f=["wf-btn",`wf-btn--${o}`,`wf-btn--${r}`,s&&"wf-btn--block",l&&"wf-btn--loading"].filter(Boolean).join(" "),c=t?.i18n?.components?.Button??{};return M("button",{id:n.id,title:n.title,class:f,type:u??"button",disabled:i||l||void 0,"aria-busy":l||void 0,onClick:a},l?[M("span",{class:"wf-btn-spinner"}),c.loading??"\u52A0\u8F7D\u4E2D..."]:d)};var bs=I(),Jt=async(e,t)=>async n=>{let{open:o=!1,title:r,message:s,confirmText:l,cancelText:i,variant:u="primary",width:a,maskClosable:d=!1,onConfirm:f,onCancel:c}=n,p=t?.i18n?.components?.Confirm??{},y=[M(rt,{variant:"secondary",size:"md",onClick:()=>c?.()},i??p.cancelText??"\u53D6\u6D88"),M(rt,{variant:u,size:"md",onClick:()=>f?.()},l??p.confirmText??"\u786E\u5B9A")];return M(Yt,{open:o,title:r,onClose:c??n.onClose,maskClosable:d,footer:y,width:a,closable:!1},s)};function mo(){return e=>(e.confirm=(t,n)=>go(t,n??{},e),e)}function go(e,t,n){return new Promise(o=>{let r=document.createElement("div");document.body.appendChild(r);let s=!1,l=!0,u=_e(M(async(f,c)=>async()=>M("div",{class:"wf-confirm-host"},M(Jt,{open:l,title:t.title,onCancel:()=>{s||(s=!0,l=!1,o(!1),c.ui.render())},onConfirm:()=>{s||(s=!0,l=!1,o(!0),c.ui.render())},message:e})),{}),r,{ctx:{...n}}),a=()=>{u.unmount(),r.remove()},d=document.querySelector("#__wf_portal .wf-modal");if(d&&typeof d.addEventListener=="function"){let f=!1,c=()=>{f||(f=!0,a())};oe(d,"animationend",c,!0),setTimeout(c,600)}else a()})}function yo(){return e=>(e.toast=(t,n="info")=>ho(t,n),e)}function ho(e,t){let n=document.createElement("div");n.className="wf-toast-host",n.style.cssText="position:fixed;top:16px;right:16px;z-index:var(--wf-z-toast,9999)",document.body.appendChild(n);let r=_e(M(async()=>async()=>M("div",{class:`wf-toast wf-toast--${t}`},M("span",{class:"wf-toast-msg"},e)),{}),n);setTimeout(()=>{r.unmount(),n.remove()},3e3)}export{Y as App,F as Fragment,A as NodeRegistry,ne as Portal,Oe as Scheduler,S as addGlobalListener,He as applyEvent,fo as autoSync,xe as bindDelegated,oe as bindElementListener,R as buildVNode,it as createEventStream,ye as createPortal,_e as createRoot,oo as createRouter,Gt as createSync,Ze as createV3Ui,lo as deserializeEvents,Q as ensureDelegationRoot,re as ensurePortalContainer,g as ev,ln as evKey,Qn as eventsOf,io as eventsToHtml,eo as expectEventSequence,Be as getAppFactory,M as h,Zn as hasEvent,$ as isVNode,ee as mount,J as nextNodeId,j as patch,uo as recordToTest,yn as registerApp,mn as removeDelegationRoot,so as renderToEventStream,ro as renderToEvents,Yn as replay,hn as resetAppRegistry,fn as resetDelegation,fe as scheduler,ao as serializeEvents,w as stream,co as summarizeEvents,Me as unbindAll,dt as unbindEvent,Jn as undo,mo as v3Confirm,yo as v3Toast};
|
package/dist/ui-dom/vnode.d.ts
CHANGED
|
@@ -1,93 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* vnode — VNode
|
|
2
|
+
* vnode — VNode 工厂/类型统一入口(vdom3 转发层——vdom2 实现已删除)
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
4
|
+
* vdom2 时代本文件是独立 VNode 判别联合(NativeVNode/FragVNode/CompVNode/
|
|
5
|
+
* PortalVNode + createVNode + isFrag/isComp 守卫)。全面 vdom3 后:
|
|
6
|
+
* 工厂(h/jsx/jsxs/jsxDEV/createPortal)与类型(VNode/VNodeChild/Component)
|
|
7
|
+
* 统一收敛到 vdom3——本文件作为转发层保留路径(组件库 249 处 import 零改动)。
|
|
8
8
|
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
* if (isComp(vnode)) { vnode._render ... } // type 为函数 → 收窄为 CompVNode
|
|
12
|
-
* —— 无散落 cast;字段访问由类型系统强制。
|
|
9
|
+
* Fragment/Portal 符号统一为 vdom3 的('v3-fragment'/'v3-portal')——
|
|
10
|
+
* 引擎 classifyKind 按 type 类型 + portalKey 分类(不依赖具体 symbol 值)。
|
|
13
11
|
*/
|
|
14
|
-
export
|
|
15
|
-
export type
|
|
16
|
-
import type { Lifecycle } from './vdom2/lifecycle.ts';
|
|
17
|
-
export declare const Fragment: unique symbol;
|
|
18
|
-
export declare const Portal: unique symbol;
|
|
19
|
-
/** 通用字段(所有 VNode 共有——构建元数据;渲染前为 null 的显式初始化) */
|
|
20
|
-
interface VNodeBase {
|
|
21
|
-
type: VNodeType;
|
|
22
|
-
props: Record<string, any>;
|
|
23
|
-
/** key(数组项身份——无 key 为 null;显式 null 非可选 undefined) */
|
|
24
|
-
key: string | null;
|
|
25
|
-
/** 子 vnode 缓存(buildVNode 构建——patchValue diff 对照用;渲染前 null) */
|
|
26
|
-
_child: VNode | VNode[] | null;
|
|
27
|
-
/** 结构父节点(输出范围坐标系——范围定位不需要外部传 parent) */
|
|
28
|
-
_parentNode: Node | null;
|
|
29
|
-
/** 输出锚点 = 输出范围**首 DOM 节点**(多节点输出时必须是真实节点而非 DocumentFragment) */
|
|
30
|
-
_refNode: Node | null;
|
|
31
|
-
/** 组件实例 ID / 自定义 ID(buildVNode 分配) */
|
|
32
|
-
_id: string | null;
|
|
33
|
-
_customId: string | null;
|
|
34
|
-
/** 父 vnode 引用 */
|
|
35
|
-
_parentVNode: VNode | null;
|
|
36
|
-
/** 组件 renderFn 上次执行时的 ctx 版本号(buildVNode 剪枝 + diff 三态 skip) */
|
|
37
|
-
_ctxVersion: number | null;
|
|
38
|
-
/** 生命周期状态(节点生命周期状态机——lifecycle.ts):fresh→building→built / pruned;dispose→disposed */
|
|
39
|
-
_lifecycle: Lifecycle;
|
|
40
|
-
/** 渲染调度状态(render 调度状态机:IDLE/RUNNING——渲染中再次触发跳过,防重入) */
|
|
41
|
-
_rendering?: boolean;
|
|
42
|
-
}
|
|
43
|
-
/** 原生元素——type: string;特有:el(元素引用——锚点统一用 _refNode) */
|
|
44
|
-
export interface NativeVNode extends VNodeBase {
|
|
45
|
-
type: string;
|
|
46
|
-
el: Node | null;
|
|
47
|
-
}
|
|
48
|
-
/** Fragment——type: typeof Fragment(多节点输出边界 = fragment-start/end 标记——DOM 持久化) */
|
|
49
|
-
export interface FragVNode extends VNodeBase {
|
|
50
|
-
type: typeof Fragment;
|
|
51
|
-
}
|
|
52
|
-
/** 组件——type: Component;特有:_render(两阶段 renderFn)/ _outputChild(输出引用) */
|
|
53
|
-
export interface CompVNode extends VNodeBase {
|
|
54
|
-
type: Component;
|
|
55
|
-
_render: ((props: Record<string, unknown>) => Promise<VNode | null>) | null;
|
|
56
|
-
/** 输出 vnode 引用(dispose 清 _child/_id/_render 后仍可取输出范围——getOutputRange 递归终点) */
|
|
57
|
-
_outputChild: VNodeChild | null;
|
|
58
|
-
}
|
|
59
|
-
/** Portal——type: typeof Portal;特有:_remoteEl / _placement(固定 'remote') */
|
|
60
|
-
export interface PortalVNode extends VNodeBase {
|
|
61
|
-
type: typeof Portal;
|
|
62
|
-
_remoteEl: HTMLElement | null;
|
|
63
|
-
_placement: 'remote';
|
|
64
|
-
}
|
|
65
|
-
/** VNode 判别联合——type 为判别式 */
|
|
66
|
-
export type VNode = NativeVNode | FragVNode | CompVNode | PortalVNode;
|
|
67
|
-
export declare function isNative(v: unknown): v is NativeVNode;
|
|
68
|
-
export declare function isFrag(v: unknown): v is FragVNode;
|
|
69
|
-
export declare function isComp(v: unknown): v is CompVNode;
|
|
70
|
-
export declare function isPortal(v: unknown): v is PortalVNode;
|
|
71
|
-
export type Component<P = {}, C extends object = {}> = (initProps: P, ctx: import('./types.ts').WfuiContext & C) => Promise<((props: P) => Promise<VNode | null>) | null>;
|
|
72
|
-
/** 按类型构造强类型 VNode(每类初始化特有必填字段) */
|
|
73
|
-
export declare function createVNode(type: VNodeType, props: Record<string, any>, key?: string | null): VNode;
|
|
74
|
-
export declare function h(type: VNodeType, props: Record<string, any> | null, ...children: VNodeChild[]): VNode;
|
|
75
|
-
export declare function jsx(type: VNodeType, props: Record<string, any> | null, key?: string | null): VNode;
|
|
76
|
-
export declare const jsxs: typeof jsx;
|
|
77
|
-
export declare function jsxDEV(type: VNodeType, props: Record<string, any> | null, key?: string | null): VNode;
|
|
78
|
-
export declare function arrayChildren(c: VNodeChild | undefined | null): VNodeChild[];
|
|
79
|
-
export declare function createPortal(children: VNodeChild, portalKey?: string): VNode;
|
|
80
|
-
/** JSX 类型声明(jsxImportSource: weifuwu/ui-dom——组件/用户 JSX 编译产物类型) */
|
|
81
|
-
declare global {
|
|
82
|
-
namespace JSX {
|
|
83
|
-
type Element = import('./vnode.ts').VNode | null;
|
|
84
|
-
type ElementType = string | ((props: any, ctx: any) => any) | typeof Fragment | typeof Portal;
|
|
85
|
-
interface IntrinsicElements {
|
|
86
|
-
[tag: string]: any;
|
|
87
|
-
}
|
|
88
|
-
interface IntrinsicAttributes {
|
|
89
|
-
key?: string | number | null;
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
export {};
|
|
12
|
+
export { h, jsx, jsxs, jsxDEV, createPortal, Fragment, Portal } from './vdom3/jsx.ts';
|
|
13
|
+
export type { VNode, VNodeChild, Component } from './vdom3/types.ts';
|
|
@@ -105,7 +105,7 @@
|
|
|
105
105
|
### 框架级
|
|
106
106
|
| antd | weifuwu | 状态 | 备注 |
|
|
107
107
|
|------|---------|:----:|------|
|
|
108
|
-
| App 引导 | `
|
|
108
|
+
| App 引导 | `createRouter + createRoot`(vdom3 事件流) | 🔧 | ui-dom 框架内置(weifuwu/client 已并入 ui-dom) |
|
|
109
109
|
| ConfigProvider | `--wf-*` token + ctx 注入 | 🔧 | client 框架内置 |
|
|
110
110
|
|
|
111
111
|
---
|
package/docs/components-map.md
CHANGED
|
@@ -212,4 +212,4 @@
|
|
|
212
212
|
| **StatCard ⬆️** | 增强 | antd Statistic.Countdown | countdown 模式:剩余 HH:MM:SS + 结束回调(1s tick + 清理纪律) |
|
|
213
213
|
|
|
214
214
|
> 三库 208 项(antd 84 / EP 74 / shadcn 50)→ 100% 覆盖(业务组件全对应;
|
|
215
|
-
> 框架级 App/ConfigProvider/Teleport/Overlay 由
|
|
215
|
+
> 框架级 App/ConfigProvider/Teleport/Overlay 由 createRouter/createRoot/createPortal/--wf-* token 内置)。
|