@visulima/dev-toolbar 1.0.0-alpha.4 → 1.0.0-alpha.5
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/CHANGELOG.md +47 -0
- package/LICENSE.md +109 -2
- package/dist/apps/a11y/a11y-app.d.ts +0 -1
- package/dist/apps/a11y/a11y-tooltip.d.ts +0 -1
- package/dist/apps/a11y/index.js +21 -2
- package/dist/apps/assets/assets-app.d.ts +4 -0
- package/dist/apps/assets/index.d.ts +3 -0
- package/dist/apps/assets/index.js +16 -0
- package/dist/apps/inspector/index.js +17 -1
- package/dist/apps/inspector/inspector-app.d.ts +4 -2
- package/dist/apps/module-graph/index.js +20 -1
- package/dist/apps/module-graph/module-graph-app.d.ts +0 -1
- package/dist/apps/performance/index.js +17 -1
- package/dist/apps/performance/performance-app.d.ts +0 -1
- package/dist/apps/performance/performance-tooltip.d.ts +0 -1
- package/dist/apps/seo/index.js +17 -1
- package/dist/apps/seo/seo-app.d.ts +0 -1
- package/dist/apps/settings/index.js +17 -1
- package/dist/apps/tailwind/index.js +2 -2
- package/dist/apps/tailwind/tailwind-app.d.ts +0 -1
- package/dist/apps/timeline/index.js +18 -1
- package/dist/apps/timeline/timeline-app.d.ts +0 -1
- package/dist/apps/vite-config/index.js +16 -1
- package/dist/apps/vite-config/vite-config-app.d.ts +0 -1
- package/dist/client/overlay.js +1 -1
- package/dist/index.js +1 -1
- package/dist/packem_chunks/inject-source.js +9 -1
- package/dist/packem_shared/Alert-D2CvX4fw.js +1 -0
- package/dist/packem_shared/Badge-BEgU04nl.js +1 -0
- package/dist/packem_shared/Button-Bkx66Co7.js +1 -0
- package/dist/packem_shared/Card-CJa4vHVc.js +1 -0
- package/dist/packem_shared/Icon-B6UHkC0o.js +1 -0
- package/dist/packem_shared/Input-Cs6aduTi.js +1 -0
- package/dist/packem_shared/Label-CgCFOMDc.js +1 -0
- package/dist/packem_shared/Popover-DzH5lAc9.js +1 -0
- package/dist/packem_shared/Progress-DN6zn-0l.js +1 -0
- package/dist/packem_shared/Separator-D38mKeZv.js +1 -0
- package/dist/packem_shared/Skeleton-Dv-tcA1P.js +1 -0
- package/dist/packem_shared/Switch-C3NTpeoR.js +1 -0
- package/dist/packem_shared/Tabs-SuFWbB6d.js +1 -0
- package/dist/packem_shared/Textarea-Yfg3dLZi.js +1 -0
- package/dist/packem_shared/Tooltip-BHmzUaxu.js +1 -0
- package/dist/packem_shared/clsx-wGlvpUfw.js +1 -0
- package/dist/packem_shared/createServerRPCContext-CJXa8ezf.js +1 -0
- package/dist/packem_shared/sharedToolbarStylesheet-JFwZE8kq.js +2 -0
- package/dist/packem_shared/use-frame-state-CxrlPUM5.js +1 -0
- package/dist/packem_shared/use-theme-zpm4zmqP.js +1 -0
- package/dist/rpc/functions/assets.d.ts +16 -0
- package/dist/rpc/functions/vite-config.d.ts +76 -2
- package/dist/toolbar/components/app-button.d.ts +0 -1
- package/dist/toolbar/components/first-visit-hint.d.ts +0 -1
- package/dist/toolbar/components/toolbar-bar.d.ts +2 -7
- package/dist/toolbar/components/toolbar-container.d.ts +1 -7
- package/dist/toolbar/hooks/use-frame-state.d.ts +11 -1
- package/dist/toolbar/index.d.ts +0 -1
- package/dist/toolbar/index.js +3 -3
- package/dist/types/rpc.d.ts +8 -1
- package/dist/ui/components/alert.d.ts +0 -1
- package/dist/ui/components/badge.d.ts +0 -1
- package/dist/ui/components/button.d.ts +0 -1
- package/dist/ui/components/card.d.ts +0 -1
- package/dist/ui/components/icon.d.ts +0 -1
- package/dist/ui/components/input.d.ts +0 -1
- package/dist/ui/components/label.d.ts +0 -1
- package/dist/ui/components/progress.d.ts +0 -1
- package/dist/ui/components/separator.d.ts +0 -1
- package/dist/ui/components/skeleton.d.ts +0 -1
- package/dist/ui/components/switch.d.ts +0 -1
- package/dist/ui/components/tabs.d.ts +0 -1
- package/dist/ui/components/textarea.d.ts +0 -1
- package/dist/ui/index.d.ts +0 -1
- package/dist/ui/index.js +1 -1
- package/dist/vite-plugin.d.ts +5 -1
- package/dist/vite-plugin.js +2 -2
- package/package.json +12 -11
- package/dist/apps/more/index.d.ts +0 -3
- package/dist/apps/more/index.js +0 -2
- package/dist/apps/more/more-app.d.ts +0 -5
- package/dist/packem_shared/Alert-H-x1JuZ0.js +0 -1
- package/dist/packem_shared/Badge-C30mDKKG.js +0 -1
- package/dist/packem_shared/Button-DODNCTPZ.js +0 -1
- package/dist/packem_shared/Card-DdI7Wn3t.js +0 -1
- package/dist/packem_shared/Icon-DWFLZkwW.js +0 -1
- package/dist/packem_shared/Input-GfbOwAkK.js +0 -1
- package/dist/packem_shared/Label-Bzi47aUf.js +0 -1
- package/dist/packem_shared/Popover-CLt7YhUF.js +0 -1
- package/dist/packem_shared/Progress-vGfFpxRn.js +0 -1
- package/dist/packem_shared/Separator-DQGeJPQg.js +0 -1
- package/dist/packem_shared/Skeleton-BYXau6jM.js +0 -1
- package/dist/packem_shared/Switch-BeC78S_T.js +0 -1
- package/dist/packem_shared/Tabs-CXERaeAp.js +0 -1
- package/dist/packem_shared/Textarea-DvbSX13V.js +0 -1
- package/dist/packem_shared/Tooltip-tlBN-NdK.js +0 -1
- package/dist/packem_shared/cn-DWLJYh3h.js +0 -1
- package/dist/packem_shared/createServerRPCContext-CEm1Ymkn.js +0 -1
- package/dist/packem_shared/sharedToolbarStylesheet-DOV-Jwcm.js +0 -2
- package/dist/packem_shared/use-theme-BOw3dPpY.js +0 -1
- package/dist/utils/cn.d.ts +0 -8
package/dist/toolbar/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
var Xe=Object.defineProperty;var N=(e,t)=>Xe(e,"name",{value:t,configurable:!0});import{createContext as Fe,render as Pe}from"preact";import{createClientRPCContext as $e}from"../packem_shared/createClientRPCContext-DgRxrllw.js";import{updateSettings as Je,loadSettings as Ve}from"../packem_shared/loadSettings-hvjR4fcS.js";import{getGlobalHook as Ue,setupGlobalHook as Qe}from"../packem_shared/setupGlobalHook-CCf9Logv.js";import ue from"../packem_shared/sharedToolbarStylesheet-DOV-Jwcm.js";import{jsx as i,jsxs as g,Fragment as ze}from"preact/jsx-runtime";import{m as qe}from"../packem_shared/store-DaUtLjf3.js";import{addHookName as l}from"preact/devtools";import{useContext as Ke,useEffect as L,useMemo as re,useState as E,useRef as m,useCallback as pe,useLayoutEffect as et}from"preact/hooks";import u from"../packem_shared/cn-DWLJYh3h.js";import Le from"lucide-static/icons/chevron-right.svg?data-uri&encoding=css";import tt from"lucide-static/icons/layers.svg?data-uri&encoding=css";import rt from"lucide-static/icons/maximize.svg?data-uri&encoding=css";import it from"lucide-static/icons/maximize-2.svg?data-uri&encoding=css";import nt from"lucide-static/icons/minimize.svg?data-uri&encoding=css";import ot from"lucide-static/icons/minimize-2.svg?data-uri&encoding=css";import at from"lucide-static/icons/picture-in-picture-2.svg?data-uri&encoding=css";import Ee from"lucide-static/icons/x.svg?data-uri&encoding=css";import te from"../packem_shared/Icon-DWFLZkwW.js";import{h as Te,_ as He}from"../packem_shared/use-theme-BOw3dPpY.js";import st from"lucide-static/icons/pin.svg?data-uri&encoding=css";import lt from"lucide-static/icons/pin-off.svg?data-uri&encoding=css";import ct from"lucide-static/icons/more-horizontal.svg?data-uri&encoding=css";import pt from"lucide-static/icons/alert-triangle.svg?data-uri&encoding=css";var dt=Object.defineProperty,ut=N((e,t)=>dt(e,"name",{value:t,configurable:!0}),"t$4");const be=ut(()=>{const e=$e();return{rpc:new Proxy({},{get(t,r){return(...o)=>e.callServer(r,...o)}})}},"createServerHelpers");var ht=Object.defineProperty,gt=N((e,t)=>ht(e,"name",{value:t,configurable:!0}),"n$3");let ft=class{static{N(this,"p")}static{gt(this,"AppManager")}apps=new Map;activeAppId=void 0;initializedApps=new Set;appCanvases=new Map;registerApp(t,r=!1){this.apps.has(t.id)&&(this.initializedApps.delete(t.id),this.appCanvases.delete(t.id),this.activeAppId===t.id&&(this.activeAppId=void 0));const o=new EventTarget,a={...t,active:!1,builtIn:r,eventTarget:o,notification:{state:!1},status:"ready"};this.apps.set(t.id,a)}async unregisterApp(t){const r=this.apps.get(t);if(r?.destroy&&this.initializedApps.has(t)){const o=this.appCanvases.get(t);if(o)try{await r.destroy(o.shadowRoot)}catch(a){console.error(`[dev-toolbar] destroy() failed for app ${t}:`,a)}}this.apps.delete(t),this.initializedApps.delete(t),this.appCanvases.delete(t),this.activeAppId===t&&(this.activeAppId=void 0)}getApp(t){return this.apps.get(t)}getAllApps(){return[...this.apps.values()]}getActiveApp(){if(this.activeAppId)return this.apps.get(this.activeAppId)}async toggleApp(t){const r=this.apps.get(t);if(!r)return!1;if(r.onClick??r.onDeactivate){const o=r.active;return r.active=!o,!o&&r.onClick?await r.onClick():o&&r.onDeactivate&&await r.onDeactivate(),!0}return r.active?await this.closeApp(t):this.activeAppId&&!await this.closeApp(this.activeAppId)?!1:await this.openApp(t)}setAppActive(t,r){const o=this.apps.get(t);o&&(o.active=r)}isAppInitialized(t){return this.initializedApps.has(t)}markAppInitialized(t){this.initializedApps.add(t)}async openApp(t){const r=this.apps.get(t);if(!r)return!1;if(r.active=!0,r.status="loading",this.activeAppId=t,r.init&&!this.isAppInitialized(t))try{const o=this.getAppCanvas(t);if(o){const a=be(),n=r.init(o.shadowRoot,r.eventTarget,a);n&&typeof n.then=="function"&&await n,this.markAppInitialized(t),r.status="ready"}else r.status="pending"}catch(o){return console.error(`[dev-toolbar] Failed to init app ${t}:`,o),r.status="error",r.active=!1,this.activeAppId=void 0,!1}else r.status="ready";return!0}async closeApp(t){const r=this.apps.get(t);if(!r||!r.active)return!1;if(r.beforeTogglingOff){const o=this.getAppCanvas(t);if(o)try{const a=r.beforeTogglingOff(o.shadowRoot);if(!(a&&typeof a.then=="function"?await a:a))return!1}catch(a){console.error(`[dev-toolbar] beforeTogglingOff() threw for app ${t}:`,a)}}return r.active=!1,this.activeAppId===t&&(this.activeAppId=void 0),!0}setNotification(t,r,o){const a=this.apps.get(t);a&&(a.notification={level:o,state:r})}clearNotification(t){const r=this.apps.get(t);r&&(r.notification={state:!1})}getAppCanvas(t){return this.appCanvases.get(t)}setAppCanvas(t,r){this.appCanvases.set(t,r)}};var mt=Object.defineProperty,bt=N((e,t)=>mt(e,"name",{value:t,configurable:!0}),"t$3");const We=Fe(void 0),Re=bt(()=>{const e=Ke(We);if(!e)throw new Error("useToolbarContext must be used within ToolbarContext provider");return e},"useToolbarContext");var vt=Object.defineProperty,yt=N((e,t)=>vt(e,"name",{value:t,configurable:!0}),"t$2");const je=yt(()=>{const e=Re();return{activeAppId:e.activeAppId,apps:e.apps,clearNotification:e.clearNotification,registerApp:e.registerApp,setNotification:e.setNotification,toggleApp:e.toggleApp,unregisterApp:e.unregisterApp}},"useApps");var xt=Object.defineProperty,fe=N((e,t)=>xt(e,"name",{value:t,configurable:!0}),"s");const wt=fe((e,t)=>{const r=t.split("+"),o=r.at(-1)??"",a=r.includes("Alt"),n=r.includes("Shift"),c=r.includes("Control")||r.includes("Ctrl"),d=r.includes("Meta")||r.includes("Cmd");return(e.key===o||e.code===`Key${o.toUpperCase()}`)&&e.altKey===a&&e.shiftKey===n&&e.ctrlKey===c&&e.metaKey===d},"matchesBinding"),It=fe(()=>{const{state:e,updateState:t}=Te(),r=fe((n,c)=>{const d=c??!e.open;t({open:d,...d?{}:{viewMode:"default"}})},"togglePanelVisible"),o=fe(()=>{e.open&&t({open:!1,viewMode:"default"})},"closePanel");L(()=>{const n=e.keybindings?.toggle??"Alt+Shift+D",c=fe(d=>{wt(d,n)&&r()},"handleKeyDown");return globalThis.window?.addEventListener("keydown",c),()=>{globalThis.window?.removeEventListener("keydown",c)}},[e.open,e.keybindings?.toggle]);const a=l(re(()=>e.open,[e.open]),"panelVisibleValue: boolean");return{closePanel:o,panelVisible:a,togglePanelVisible:r}},"usePanelVisible");var At=Object.defineProperty,De=N((e,t)=>At(e,"name",{value:t,configurable:!0}),"e");const ve=De((e,t,r)=>Math.min(Math.max(e,t),r),"clamp");De(()=>navigator.userAgent.includes("Safari")&&!navigator.userAgent.includes("Chrome"),"checkIsSafari");const ye=De(e=>typeof e=="string"?e.endsWith("px")?Number(e.slice(0,-2)):Number(e):e,"pixelToNumber");var Mt=Object.defineProperty,ee=N((e,t)=>Mt(e,"name",{value:t,configurable:!0}),"h$1");const _e=ee(e=>e<5?0:e>95?100:Math.abs(e-50)<2?50:e,"snapToPoints"),Tt=ee(()=>{if(globalThis.window===void 0)return{bottom:0,left:0,right:0,top:0};const e=getComputedStyle(document.documentElement);return{bottom:ye(e.getPropertyValue("env(safe-area-inset-bottom)")||"0"),left:ye(e.getPropertyValue("env(safe-area-inset-left)")||"0"),right:ye(e.getPropertyValue("env(safe-area-inset-right)")||"0"),top:ye(e.getPropertyValue("env(safe-area-inset-top)")||"0")}},"getSafeAreaInsets"),kt=ee(()=>{const[e,t]=l(E(()=>({height:globalThis.window?.innerHeight??1080,width:globalThis.window?.innerWidth??1920})),"size");return L(()=>{const r=ee(()=>{t({height:globalThis.window?.innerHeight??1080,width:globalThis.window?.innerWidth??1920})},"updateSize");return r(),globalThis.window?.addEventListener("resize",r),()=>{globalThis.window?.removeEventListener("resize",r)}},[]),e},"useWindowSize"),Ct=ee(e=>{const{state:t,updateState:r}=Te(),{height:o,width:a}=kt(),[n,c]=l(E(!1),"isHovering"),[d,h]=l(E(!1),"isDragging"),[W,I]=l(E(!1),"isViteOverlayOpen"),Y=l(m({x:0,y:0}),"draggingOffsetRef"),A=l(m({x:0,y:0}),"mousePositionRef"),P=l(m(void 0),"timerRef"),S=l(m(void 0),"capturedPointerIdRef"),$=l(m(!1),"isDraggingRef"),j=l(m(a),"windowWidthRef"),V=l(m(o),"windowHeightRef"),G=l(m(r),"updateStateRef");L(()=>{j.current=a,V.current=o},[a,o]),L(()=>{G.current=r},[r]);const[y,F]=l(E(()=>({bottom:10,left:10,right:10,top:10})),"panelMargins");L(()=>{const v=Tt();F({bottom:v.bottom+10,left:v.left+10,right:v.right+10,top:v.top+10})},[]),L(()=>{const v=ee(()=>{const D=globalThis.__v_o__current;if(D?.parentNode){const s=D.shadowRoot?.querySelector("#__v_o__root");I(!!s&&!s.classList.contains("hidden"))}else I(!1)},"check"),C=setInterval(v,300);return v(),()=>clearInterval(C)},[]);const Q=pe(v=>{v.preventDefault(),v.stopPropagation(),h(!0),$.current=!0;const C=e.current;if(C){const{height:D,left:s,top:p,width:f}=C.getBoundingClientRect();Y.current={x:v.clientX-s-f/2,y:v.clientY-p-D/2};const x=v.target;try{x&&x.setPointerCapture?(x.setPointerCapture(v.pointerId),S.current=v.pointerId):C.setPointerCapture&&(C.setPointerCapture(v.pointerId),S.current=v.pointerId)}catch(z){console.warn("Failed to capture pointer:",z)}document.body.style.cursor="grabbing",document.body.style.userSelect="none"}},[e]),O=pe(()=>{c(!0),!(t.minimizePanelInactive<0)&&(P.current&&clearTimeout(P.current),P.current=setTimeout(()=>{c(!1)},t.minimizePanelInactive||5e3))},[t.minimizePanelInactive]);L(()=>{O()},[O]),L(()=>{const v=ee(()=>{if(S.current!==void 0){try{const x=e.current;x&&S.current!==void 0&&x.releasePointerCapture(S.current)}catch{}S.current=void 0}},"releaseCapture"),C=ee(()=>{$.current&&(h(!1),$.current=!1,document.body.style.cursor="",document.body.style.userSelect="",v())},"finishDrag"),D=ee(x=>{C()},"handlePointerUp"),s=ee(x=>{C()},"handlePointerCancel"),p=ee(()=>{$.current&&(h(!1),$.current=!1,S.current=void 0,document.body.style.cursor="",document.body.style.userSelect="")},"handleLostPointerCapture"),f=ee(x=>{if(!$.current)return;x.preventDefault();const z=j.current,U=V.current,X=z/2,w=U/2,ae=x.clientX,ne=x.clientY,K=ae-Y.current.x,oe=ne-Y.current.y;A.current={x:K,y:oe};const se=Math.max(0,Math.min(ae,z)),ke=Math.max(0,Math.min(ne,U)),b=Math.atan2(ke-w,se-X),R=70,k=Math.atan2(0-w+R,0-X),B=Math.atan2(0-w+R,z-X),le=Math.atan2(U-R-w,0-X),he=Math.atan2(U-R-w,z-X);let ge;b>=k&&b<=B?ge="top":b>=B&&b<=he?ge="right":b>=he&&b<=le?ge="bottom":ge="left";const Ye=Math.max(0,Math.min(100,K/z*100)),Oe=Math.max(0,Math.min(100,oe/U*100));G.current({left:_e(Ye),position:ge,top:_e(Oe)})},"handlePointerMove");return document.addEventListener("pointermove",f,{capture:!0,passive:!1}),document.addEventListener("pointerup",D,{capture:!0}),document.addEventListener("pointercancel",s,{capture:!0}),document.addEventListener("lostpointercapture",p,{capture:!0}),()=>{document.removeEventListener("pointermove",f,{capture:!0}),document.removeEventListener("pointerup",D,{capture:!0}),document.removeEventListener("pointercancel",s,{capture:!0}),document.removeEventListener("lostpointercapture",p,{capture:!0})}},[]);const T=l(re(()=>t.position==="left"||t.position==="right",[t.position]),"isVertical"),M=l(re(()=>{if(t.minimizePanelInactive<0)return!1;if(t.minimizePanelInactive===0)return!0;const v=globalThis.window!==void 0&&("ontouchstart"in globalThis.window||(globalThis.navigator?.maxTouchPoints??0)>0);return!d&&!t.open&&!n&&!v&&t.minimizePanelInactive>0&&!W},[d,t.open,t.minimizePanelInactive,n,W]),"isHidden"),Z=l(re(()=>{const v=e.current,C=(v?.clientWidth??0)/2,D=(v?.clientHeight??0)/2,s=T?D:C,p=T?C:D,f=t.left*a/100,x=t.top*o/100;switch(t.position){case"left":return{left:y.left+s-(M?30:0),top:ve(x,p+y.top,o-p-y.bottom)};case"right":return{left:a-y.right-s+(M?15:0)-(M?0:10),top:ve(x,p+y.top,o-p-y.bottom)};case"top":return{left:ve(f,s+y.left,a-s-y.right),top:y.top+p-(M?30:0)};default:return{left:ve(f,s+y.left,a-s-y.right),top:o-y.bottom-p+(M?30:0)}}},[t.left,t.open,t.position,t.top,o,a,y,e,M,T]),"anchorPos"),ie=l(re(()=>({left:`${Z.left}px`,top:`${Z.top}px`,transition:d?"none":"left 0.3s ease, top 0.3s ease"}),[Z,d]),"anchorStyle"),q=l(re(()=>{const v=e.current,C=(v?.clientWidth??0)/2,D=(v?.clientHeight??0)/2,s=T?D:C,p=T?C:D,f={bottom:y.bottom+p,left:y.left+s,right:y.right+s,top:y.top+p},x=f.left+f.right,z=f.top+f.bottom,U=a-x,X=o-z,w={height:`min(${t.height}vh, calc(100vh - ${z}px))`,pointerEvents:d?"none":"auto",width:`min(${t.width}vw, calc(100vw - ${x}px))`,zIndex:"-1"},ae=Z,ne=Math.min(U,t.width*a/100),K=Math.min(X,t.height*o/100),oe=ae?.left??0,se=ae?.top??0;switch(t.position){case"bottom":case"top":{w.left="0",w.transform="translate(-50%, 0)",oe-f.left<ne/2?w.left=`${ne/2-oe+f.left}px`:a-oe-f.right<ne/2&&(w.left=`${a-oe-ne/2-f.right}px`);break}default:{w.top="0",w.transform="translate(0, -50%)",se-f.top<K/2?w.top=`${K/2-se+f.top}px`:o-se-f.bottom<K/2&&(w.top=`${o-se-K/2-f.bottom}px`);break}}switch(t.position){case"left":{w.left="0";break}case"right":{w.right="0";break}case"top":{w.top="0";break}default:{w.bottom="0";break}}return w},[Z,d,y,t.height,t.position,t.width,o,a,e,T]),"iframeStyle"),J=l(re(()=>{const v={transform:T?"translate(-50%, -50%) rotate(90deg)":"translate(-50%, -50%)"};return d&&(v.transition="none !important"),v},[d,T]),"panelStyle");return{anchorStyle:ie,bringUp:O,iframeStyle:q,isDragging:d,isHidden:M,isVertical:T,onPointerDown:Q,panelStyle:J}},"usePosition");var Pt=Object.defineProperty,xe=N((e,t)=>Pt(e,"name",{value:t,configurable:!0}),"t$1");const zt=xe(({app:e})=>{const{toggleApp:t}=je(),{isVisible:r,setHoveredApp:o}=Re(),a=l(m(null),"buttonRef"),n=xe(()=>{o(void 0),t(e.id).catch(h=>{console.error(`[dev-toolbar] Failed to toggle app ${e.id}:`,h)})},"handleClick"),c=xe(()=>{!e.tooltip||r||o(e,a.current?.getBoundingClientRect())},"handleMouseEnter"),d=xe(()=>{e.tooltip&&o(void 0)},"handleMouseLeave");return i("button",{"aria-label":e.name,class:u("relative flex justify-center items-center","border-0","whitespace-nowrap no-underline p-0 m-0","cursor-pointer","bg-transparent text-muted-foreground","transition-all duration-150","hover:bg-primary/8 hover:text-primary","active:scale-[0.94]",e.active&&"bg-primary/12 text-primary","group-data-[vertical]/panel:rotate-[-90deg]"),"data-app-id":e.id,onClick:n,onMouseEnter:c,onMouseLeave:d,ref:a,title:e.tooltip?void 0:e.name,type:"button",children:g("div",{class:"relative size-6 select-none flex items-center justify-center",children:[i("div",{class:"size-6 flex items-center justify-center [&_svg]:size-4.5",dangerouslySetInnerHTML:{__html:e.icon}}),e.notification.state&&i("span",{class:u("absolute -top-1 -right-1 size-1.5 rounded-full border border-background",e.notification.level==="error"&&"bg-destructive",e.notification.level==="warning"&&"bg-warning",(!e.notification.level||e.notification.level==="info")&&"bg-info"),"data-level":e.notification.level||"info"})]})})},"AppButton");var St=Object.defineProperty,_=N((e,t)=>St(e,"name",{value:t,configurable:!0}),"a");const Ze=_(({app:e})=>{const t=l(m(null),"contentRef"),r=l(m(!1),"initializedRef"),o=l(m(be()),"helpersRef");return L(()=>{if(!t.current||r.current||e.component)return;const a=t.current;if(e.init){const n=document.createElement("div");n.style.cssText="width:100%;height:100%;",a.append(n);const c=n.attachShadow({mode:"open"});ue&&(c.adoptedStyleSheets=[ue]);const d=be(),h=e.init(c,e.eventTarget,d);return h&&typeof h.then=="function"?h.then(()=>{r.current=!0}).catch(W=>{console.error(`[dev-toolbar] Failed to init app ${e.id}:`,W)}):r.current=!0,()=>{for(;a.firstChild;)a.firstChild.remove();r.current=!1}}},[e]),e.component?i(e.component,{eventTarget:e.eventTarget,helpers:o.current}):i("div",{class:"w-full h-full",ref:t})},"AppContent"),Ge=_(e=>e==="error"?"bg-destructive":e==="warning"?"bg-warning":"bg-info","getNotificationColor"),Rt=_(({apps:e,initialActiveAppId:t,onClose:r})=>{const[o,a]=l(E(t),"activeAppId"),[n,c]=l(E(!1),"sidebarCollapsed"),d=l(re(()=>e.find(h=>h.id===o),[e,o]),"activeApp");return g("div",{class:"flex flex-row w-full h-full bg-background font-mono antialiased text-foreground",children:[g("nav",{"aria-label":"DevTools apps",class:u("flex flex-col shrink-0 bg-accent border-r border-border/60","transition-[width] duration-300 ease-[cubic-bezier(0.4,0,0.2,1)]",n?"w-12.5":"w-62.5"),children:[i("div",{class:u("flex items-center shrink-0 border-b border-border/50 h-12",n?"justify-center px-2":"px-3"),children:n?i("span",{"aria-hidden":"true",class:"text-primary font-black text-[0.8rem] select-none",children:"V"}):g("span",{class:"text-[0.6rem] font-bold uppercase tracking-[0.14em] text-muted-foreground select-none",children:[i("span",{"aria-hidden":"true",class:"text-primary/60 mr-1",children:"//"}),"DevTools"]})}),i("div",{class:"flex flex-col flex-1 overflow-y-auto p-2 gap-1 scrollbar-thin-border",children:e.filter(h=>h.component??h.init).map(h=>g("div",{class:"relative group/nav-item",children:[g("button",{"aria-label":h.name,"aria-pressed":o===h.id,class:u("relative flex items-center w-full h-10","border-0 border-l-2 cursor-pointer","transition-all duration-150",n?"justify-center px-0":"gap-2.5 px-3",o===h.id?"border-primary bg-primary/8 text-foreground":"border-transparent bg-transparent text-muted-foreground hover:bg-foreground/6 hover:text-foreground"),onClick:_(()=>a(h.id),"onClick"),type:"button",children:[h.icon?i("span",{class:u("size-4 shrink-0 flex items-center justify-center [&_svg]:size-4",o===h.id?"opacity-100":"opacity-65 group-hover/nav-item:opacity-100"),dangerouslySetInnerHTML:{__html:h.icon}}):i("span",{class:"size-4.5 shrink-0 flex items-center justify-center text-[0.65rem] font-bold uppercase select-none",children:h.name.slice(0,2)}),!n&&i("span",{class:"text-[0.8125rem] font-medium truncate leading-none tracking-[-0.01em]",children:h.name})]}),h.notification.state&&i("span",{"aria-hidden":"true",class:u("pointer-events-none absolute top-1.5 rounded-full",n?"right-1.5":"right-2.5","size-1.5",Ge(h.notification.level))}),n&&i("div",{class:u("absolute left-[calc(100%+0.5rem)] top-1/2 -translate-y-1/2","pointer-events-none z-50 whitespace-nowrap","opacity-0 -translate-x-1 group-hover/nav-item:opacity-100 group-hover/nav-item:translate-x-0","transition-all duration-200 ease-[cubic-bezier(0.23,1,0.32,1)]"),children:i("div",{class:"text-[0.7rem] font-medium bg-card/95 backdrop-blur-[0.625rem] text-foreground/80 px-2.5 py-1 border border-border shadow-md",children:h.name})})]},h.id))})]}),g("div",{class:"flex-1 flex flex-col min-w-0 overflow-hidden bg-accent",children:[g("div",{class:"flex items-center justify-between gap-2 pr-2 min-h-12 shrink-0",children:[g("div",{class:"flex items-center gap-3 min-w-0",children:[i("button",{"aria-label":n?"Expand sidebar":"Collapse sidebar",class:u("flex items-center justify-center size-7 shrink-0","border-0 cursor-pointer bg-transparent","text-muted-foreground hover:text-foreground hover:bg-foreground/7","transition-colors duration-150"),onClick:_(()=>c(h=>!h),"onClick"),type:"button",children:i(te,{class:u("size-3.5 transition-transform duration-300",!n&&"rotate-180"),size:14,src:Le})}),d?.icon&&i("span",{class:"size-5 flex items-center justify-center [&_svg]:size-5 shrink-0 text-foreground opacity-80",dangerouslySetInnerHTML:{__html:d.icon}}),g("span",{class:"flex items-center gap-1 text-[0.7rem] font-bold uppercase tracking-[0.06em] text-foreground truncate",children:[i("span",{"aria-hidden":"true",class:"text-primary/50 shrink-0",children:"["}),d?.name??"DevTools",i("span",{"aria-hidden":"true",class:"text-primary/50 shrink-0",children:"]"})]})]}),i("button",{"aria-label":"Close floating window",class:u("flex items-center justify-center size-8","cursor-pointer border-0 bg-transparent","text-muted-foreground hover:text-foreground hover:bg-foreground/7","transition-all duration-200 active:scale-90"),onClick:r,title:"Close floating window",type:"button",children:i(te,{size:12,src:Ee})})]}),i("div",{class:"devtools-content-scroll scrollbar-thin-border flex-1 overflow-auto min-h-0 bg-background",children:d?i(Ze,{app:d},d.id):i("div",{class:"flex flex-col items-center justify-center h-full gap-3 p-8 select-none text-muted-foreground",children:i("p",{class:"text-[0.8rem]",children:"Select a tool from the sidebar"})})})]})]})},"PipPanel"),we=20,Ie=95,Ae=_((e,t,r)=>Math.min(Math.max(e,t),r),"clamp"),jt=_(e=>{switch(e){case"bottom":return"bottom-14";case"left":return"left-14 top-4 bottom-4";case"right":return"right-14 top-4 bottom-4";case"top":return"top-14";default:return"bottom-14"}},"getPanelPositionClasses"),Dt=_(e=>{switch(e){case"bottom":return"origin-[bottom_center]";case"left":return"origin-[left_center]";case"right":return"origin-[right_center]";case"top":return"origin-[top_center]";default:return"origin-[bottom_center]"}},"getOriginClass"),_t=_((e,t)=>t?"opacity-100 scale-100":u("opacity-0 pointer-events-none scale-[0.99]",{bottom:"translate-y-2",left:"-translate-x-2",right:"translate-x-2",top:"-translate-y-2"}[e]??"translate-y-2"),"getVisibilityClasses"),Nt=_(({activeAppId:e,apps:t,onClose:r,onToggleApp:o,panelVisible:a,position:n})=>{const[c,d]=l(E(!1),"isRendered"),[h,W]=l(E(!1),"isVisible"),[I,Y]=l(E(!1),"sidebarCollapsed"),[,A]=l(E(0),"rerender"),{state:P,updateState:S}=Te(),{resolvedTheme:$}=He(),j=l(m(null),"panelDivRef"),V=l(m(!1),"isResizingRef"),G=l(m({height:P.height,width:P.width}),"dimensionsRef"),y=l(m(void 0),"enteringFromRectRef"),F=l(m(void 0),"lastDockedRectRef"),Q=l(m(!1),"previousIsFullscreenRef"),O=l(m(!1),"isExitAnimatingRef"),T=l(m(void 0),"fsTimerRef"),M=P.viewMode==="fullscreen",Z=P.viewMode==="wide",ie=globalThis.window?.documentPictureInPicture!==void 0,q=l(m(void 0),"pipWindowRef"),J=l(re(()=>{if(M)return{};const s=globalThis.window?.innerWidth??1920,p=globalThis.window?.innerHeight??1080,f=`${G.current.height/100*p}px`;return n==="left"||n==="right"?{width:`${G.current.width/100*s}px`}:{height:f,left:"50%",transform:"translateX(-50%)",width:Z?"calc(100vw - 2rem)":"min(calc(100vw - 2rem), 1280px)"}},[M,Z,n,A]),"panelSizeStyle");L(()=>{const s=_(f=>{if(!V.current||!j.current)return;const x=j.current.getBoundingClientRect(),z=window.innerWidth,U=window.innerHeight,X={...G.current};if(V.current.top){const w=Math.abs(x.bottom-f.clientY);X.height=Ae(w/U*100,we,Ie)}else if(V.current.bottom){const w=Math.abs(f.clientY-x.top);X.height=Ae(w/U*100,we,Ie)}else if(V.current.right){const w=Math.abs(f.clientX-x.left);X.width=Ae(w/z*100,we,Ie)}else if(V.current.left){const w=Math.abs(x.right-f.clientX);X.width=Ae(w/z*100,we,Ie)}G.current=X,A(w=>w+1)},"handleMouseMove"),p=_(()=>{V.current&&(S({height:G.current.height,width:G.current.width}),V.current=!1)},"handleMouseUp");return globalThis.addEventListener("mousemove",s),globalThis.addEventListener("mouseup",p),()=>{globalThis.removeEventListener("mousemove",s),globalThis.removeEventListener("mouseup",p)}},[S]),et(()=>{const s=Q.current;Q.current=M,T.current!==void 0&&(clearTimeout(T.current),T.current=void 0);const p=j.current;if(p)if(M&&!s&&y.current){const f=y.current;y.current=void 0;const x=globalThis.window?.innerWidth??0,z=globalThis.window?.innerHeight??0;p.style.transition="clip-path 0.35s cubic-bezier(0.4, 0, 0.2, 1)",p.style.clipPath=`inset(${f.top}px ${x-f.right}px ${z-f.bottom}px ${f.left}px)`,requestAnimationFrame(()=>{p.style.clipPath="inset(0px 0px 0px 0px)",T.current=setTimeout(()=>{p.style.clipPath="",p.style.transition="",T.current=void 0},380)})}else!M&&s&&!O.current&&(p.style.transition="none",p.style.clipPath="",requestAnimationFrame(()=>{p.style.transition=""}))},[M]),L(()=>{if(a){d(!0);const p=setTimeout(W,16,!0);return()=>clearTimeout(p)}W(!1);const s=setTimeout(d,220,!1);return()=>clearTimeout(s)},[a]);const v=_(async()=>{const s=globalThis.window?.documentPictureInPicture;if(s)try{const p=await s.requestWindow({height:600,width:900});if(q.current=p,ue){const x=p.document.createElement("style");x.textContent=Array.from(ue.cssRules,z=>z.cssText).join(`
|
|
2
|
-
`),p.document.head.append(x)}const f=p.document.createElement("div");f.style.cssText="width:100%;height:100%;display:flex;",$==="dark"&&(p.document.documentElement.classList.add("dark"),f.classList.add("dark")),p.document.body.style.cssText="margin:0;padding:0;height:100vh;",p.document.body.append(f),Pe(i(Rt,{apps:t,initialActiveAppId:e,onClose:_(()=>{p.close()},"onClose")}),f),S({isPip:!0}),p.addEventListener("pagehide",()=>{S({isPip:!1}),q.current=void 0})}catch(p){console.error("[dev-toolbar] PiP activation failed:",p)}},"activatePip");L(()=>{if(!a)return;const s=_(p=>{p.key==="Escape"&&r()},"handleKeyDown");return document.addEventListener("keydown",s),()=>document.removeEventListener("keydown",s)},[a,r]);const C=l(re(()=>t.find(s=>s.id===e),[t,e]),"activeApp");if(!c)return;const D=_(s=>p=>{p.preventDefault(),V.current=s},"startResize");return g(ze,{children:[i("div",{"aria-hidden":"true",class:u("fixed inset-0 z-[2147483646]","transition-opacity duration-200",h&&!M?"opacity-100 pointer-events-auto":"opacity-0 pointer-events-none"),onClick:P.closeOnOutsideClick?r:void 0,role:"presentation"}),g("div",{"aria-label":"DevTools panel","aria-modal":"true",class:u("fixed z-[2147483647] pointer-events-auto antialiased font-mono",M?"inset-0":jt(n),"bg-background overflow-hidden",M?"rounded-none border-0":"rounded-none border border-border","shadow-2xl","transition-panel",!M&&Dt(n),_t(n,h),"flex flex-row"),ref:j,role:"dialog",style:J,children:[!M&&g(ze,{children:[n!=="top"&&i("div",{"aria-hidden":"true",class:"absolute left-1.5 right-1.5 top-0 h-2.5 -mt-1 cursor-ns-resize z-10 hover:bg-foreground/10 transition-colors",onMouseDown:D({top:!0})}),n==="top"&&i("div",{"aria-hidden":"true",class:"absolute left-1.5 right-1.5 bottom-0 h-2.5 -mb-1 cursor-ns-resize z-10 hover:bg-foreground/10 transition-colors",onMouseDown:D({bottom:!0})}),n==="left"&&i("div",{"aria-hidden":"true",class:"absolute top-1.5 bottom-1.5 right-0 w-2.5 -mr-1 cursor-ew-resize z-10 hover:bg-foreground/10 transition-colors",onMouseDown:D({right:!0})}),n==="right"&&i("div",{"aria-hidden":"true",class:"absolute top-1.5 bottom-1.5 left-0 w-2.5 -ml-1 cursor-ew-resize z-10 hover:bg-foreground/10 transition-colors",onMouseDown:D({left:!0})})]}),g("nav",{"aria-label":"DevTools apps",class:u("flex flex-col shrink-0 overflow-hidden","transition-[width] duration-300 ease-[cubic-bezier(0.4,0,0.2,1)]","bg-accent border-r border-border/60",I?"w-12.5":"w-62.5"),children:[i("div",{class:u("flex items-center shrink-0 border-b border-border/50 h-12",I?"justify-center px-2":"px-3"),children:I?i("span",{"aria-hidden":"true",class:"text-primary font-black text-[0.8rem] select-none",children:"V"}):g("span",{class:"text-[0.6rem] font-bold uppercase tracking-[0.14em] text-muted-foreground select-none",children:[i("span",{"aria-hidden":"true",class:"text-primary/60 mr-1",children:"//"}),"DevTools"]})}),i("div",{class:"flex flex-col flex-1 overflow-y-auto p-2 gap-1 scrollbar-thin-border",children:t.filter(s=>s.component??s.init).map(s=>g("div",{class:"relative group/nav-item",children:[g("button",{"aria-label":s.name,"aria-pressed":e===s.id,class:u("relative flex items-center w-full h-10","border-0 border-l-2 cursor-pointer","transition-all duration-150",I?"justify-center px-0":"gap-2.5 px-3",e===s.id?"border-primary bg-primary/8 text-foreground":"border-transparent bg-transparent text-muted-foreground hover:bg-foreground/6 hover:text-foreground"),onClick:_(()=>{s.id!==e&&o(s.id).catch(console.error)},"onClick"),type:"button",children:[s.icon?i("span",{class:u("size-4 shrink-0 flex items-center justify-center [&_svg]:size-4",e===s.id?"opacity-100":"opacity-65 group-hover/nav-item:opacity-100"),dangerouslySetInnerHTML:{__html:s.icon}}):i("span",{class:"size-4.5 shrink-0 flex items-center justify-center text-[0.65rem] font-bold uppercase select-none",children:s.name.slice(0,2)}),!I&&i("span",{class:"text-[0.8125rem] font-medium truncate leading-none tracking-[-0.01em]",children:s.name})]}),s.notification.state&&i("span",{"aria-hidden":"true",class:u("pointer-events-none absolute top-1.5 rounded-full",I?"right-1.5":"right-2.5","size-1.5",Ge(s.notification.level))}),I&&i("div",{class:u("absolute left-[calc(100%+0.5rem)] top-1/2 -translate-y-1/2","pointer-events-none z-50 whitespace-nowrap","opacity-0 -translate-x-1 group-hover/nav-item:opacity-100 group-hover/nav-item:translate-x-0","transition-all duration-200 ease-[cubic-bezier(0.23,1,0.32,1)]"),children:i("div",{class:"text-[0.7rem] font-medium bg-card/95 backdrop-blur-[0.625rem] text-foreground/80 px-2.5 py-1 border border-border shadow-md",children:s.name})})]},s.id))}),!I&&i("div",{class:"px-3 py-2.5 border-t border-border/40 shrink-0",children:g("span",{class:"text-[0.58rem] text-muted-foreground/50 leading-none select-none",children:[P.keybindings?.toggle??"Alt+Shift+D"," to toggle"]})})]}),g("div",{class:"flex-1 flex flex-col min-w-0 overflow-hidden bg-accent",children:[g("div",{class:"flex items-center justify-between gap-2 pr-2 min-h-12 shrink-0",children:[g("div",{class:"flex items-center gap-3 min-w-0",children:[i("button",{"aria-label":I?"Expand sidebar":"Collapse sidebar",class:u("flex items-center justify-center size-7 shrink-0","border-0 cursor-pointer bg-transparent","text-muted-foreground hover:text-foreground hover:bg-foreground/7","transition-colors duration-150"),onClick:_(()=>Y(s=>!s),"onClick"),type:"button",children:i(te,{class:u("size-3.5 transition-transform duration-300",!I&&"rotate-180"),size:14,src:Le})}),C?.icon&&i("span",{class:"size-5 flex items-center justify-center [&_svg]:size-5 shrink-0 text-foreground opacity-80",dangerouslySetInnerHTML:{__html:C.icon}}),g("span",{class:"flex items-center gap-1 text-[0.7rem] font-bold uppercase tracking-[0.06em] text-foreground truncate",children:[i("span",{"aria-hidden":"true",class:"text-primary/50 shrink-0",children:"["}),C?.name??"DevTools",i("span",{"aria-hidden":"true",class:"text-primary/50 shrink-0",children:"]"})]})]}),g("div",{class:"flex items-center gap-1 shrink-0",children:[(n==="bottom"||n==="top")&&!M&&i("button",{"aria-label":Z?"Switch to container width":"Expand to full width",class:u("flex items-center justify-center size-8","cursor-pointer border-0 bg-transparent","text-muted-foreground hover:text-foreground hover:bg-foreground/7","transition-all duration-200 active:scale-90"),onClick:_(()=>S({viewMode:Z?"default":"wide"}),"onClick"),title:Z?"Container width":"Full width",type:"button",children:i(te,{size:13,src:Z?ot:it})}),i("button",{"aria-label":M?"Exit fullscreen":"Enter fullscreen",class:u("flex items-center justify-center size-8","cursor-pointer border-0 bg-transparent","text-muted-foreground hover:text-foreground hover:bg-foreground/7","transition-all duration-200 active:scale-90"),onClick:_(()=>{if(M){const s=j.current,p=F.current;if(s&&p){const f=globalThis.window?.innerWidth??0,x=globalThis.window?.innerHeight??0,z=`inset(${p.top}px ${f-p.right}px ${x-p.bottom}px ${p.left}px)`;T.current!==void 0&&(clearTimeout(T.current),T.current=void 0),O.current=!0,s.style.transition="clip-path 0.35s cubic-bezier(0.4, 0, 0.2, 1)",s.style.clipPath="inset(0px 0px 0px 0px)",requestAnimationFrame(()=>{s.style.clipPath=z,T.current=setTimeout(()=>{s.style.clipPath="",s.style.transition="",O.current=!1,T.current=void 0,S({viewMode:"default"})},380)})}else S({viewMode:"default"})}else{if(j.current){const s=j.current.getBoundingClientRect();y.current=s,F.current=s}S({viewMode:"fullscreen"})}},"onClick"),title:M?"Exit fullscreen":"Fullscreen",type:"button",children:i(te,{size:13,src:M?nt:rt})}),ie&&!M&&i("button",{"aria-label":"Open in Picture-in-Picture window",class:u("flex items-center justify-center size-8","cursor-pointer border-0 bg-transparent",P.isPip?"text-primary hover:bg-primary/7":"text-muted-foreground hover:text-foreground hover:bg-foreground/7","transition-all duration-200 active:scale-90"),onClick:_(()=>{v().then(()=>r()).catch(console.error)},"onClick"),title:"Open in floating window (PiP)",type:"button",children:i(te,{size:13,src:at})}),i("button",{"aria-label":"Close DevTools panel",class:u("flex items-center justify-center size-8","cursor-pointer border-0 bg-transparent","text-muted-foreground hover:text-foreground hover:bg-foreground/7","transition-all duration-200 active:scale-90"),onClick:r,title:"Close (Esc)",type:"button",children:i(te,{size:12,src:Ee})})]})]}),i("div",{class:"devtools-content-scroll scrollbar-thin-border flex-1 overflow-auto min-h-0 bg-background",children:C?i(Ze,{app:C},C.id):g("div",{class:"flex flex-col items-center justify-center h-full gap-7 p-8 select-none",children:[g("div",{class:"flex flex-col items-center gap-3",children:[i("div",{class:"size-14 border border-primary/25 bg-primary/5 flex items-center justify-center",children:i(te,{class:"text-primary/45",size:26,src:tt})}),g("div",{class:"text-center space-y-1",children:[i("p",{class:"text-[0.8rem] font-medium text-foreground/65",children:"No tool selected"}),i("p",{class:"text-[0.7rem] text-muted-foreground",children:"Choose a tool from the sidebar to get started"})]})]}),t.length>0&&g("div",{class:"w-full max-w-[220px]",children:[g("p",{class:"text-[0.58rem] font-bold uppercase tracking-[0.12em] text-muted-foreground/60 mb-1.5",children:[i("span",{class:"text-primary/50",children:"// "}),"available"]}),i("div",{class:"flex flex-col gap-0.5",children:t.map(s=>g("button",{class:u("flex items-center gap-2.5 px-3 py-2","border border-border/40 bg-card/50","hover:border-primary/30 hover:bg-primary/4","cursor-pointer transition-all duration-150 text-left"),onClick:_(()=>o(s.id).catch(console.error),"onClick"),type:"button",children:[s.icon?i("span",{class:"size-3.5 shrink-0 flex items-center justify-center [&_svg]:size-3.5 text-muted-foreground",dangerouslySetInnerHTML:{__html:s.icon}}):i("span",{class:"size-3.5 text-[0.5rem] font-bold text-muted-foreground shrink-0 text-center",children:s.name.slice(0,2).toUpperCase()}),i("span",{class:"text-[0.75rem] font-medium text-muted-foreground",children:s.name})]},s.id))})]})]})})]})]})]})},"DevPanel");var $t=Object.defineProperty,Ce=N((e,t)=>$t(e,"name",{value:t,configurable:!0}),"n$1");const Vt=Ce(()=>{const[e,t]=l(E(0),"errorCount"),[r,o]=l(E(!1),"isOverlayOpen");if(L(()=>{const c=Ce(()=>{const h=globalThis.__v_o_error_history,W=Array.isArray(h)?h.length:0;t(W);const I=globalThis.__v_o__current;if(I?.parentNode){const Y=I.shadowRoot?.querySelector("#__v_o__root");o(!!Y&&!Y.classList.contains("hidden"))}else o(!1)},"sync"),d=setInterval(c,300);return c(),()=>clearInterval(d)},[]),e===0)return;const a=Ce(()=>{const c=globalThis.__v_o__current;if(!c?.parentNode)return;const d=c.shadowRoot?.querySelector("#__v_o__root");d?.classList.contains("hidden")?(d.classList.remove("hidden"),o(!0)):typeof c.close=="function"&&(c.close(),o(!1))},"handleClick"),n=`${e} error${e===1?"":"s"} – click to ${r?"hide":"show"} overlay`;return g(ze,{children:[i("div",{"aria-hidden":"true",class:"w-px h-5 bg-primary/20 shrink-0 mx-0.5"}),i("button",{"aria-label":n,class:u("relative flex justify-center items-center size-6","border-0","whitespace-nowrap no-underline p-0 m-0","cursor-pointer","bg-transparent text-destructive","transition-all duration-150","hover:bg-destructive/8","active:scale-[0.94]","group-data-[vertical]/panel:rotate-[-90deg]"),onClick:a,title:n,type:"button",children:g("div",{class:"relative size-6 select-none flex items-center justify-center",children:[i(te,{size:16,src:pt}),i("span",{class:"absolute -top-0.5 -right-1 min-w-3.5 h-3.5 px-0.5 rounded-full bg-destructive text-white text-[9px] font-bold leading-none flex items-center justify-center border border-background",children:e>9?"9+":e})]})})]})},"ViteOverlayButton");var Lt=Object.defineProperty,Se=N((e,t)=>Lt(e,"name",{value:t,configurable:!0}),"n");const Et=Se(()=>{const{toggleApp:e}=je();return i("button",{class:u("relative flex justify-center items-center size-6","border-0","whitespace-nowrap no-underline p-0 m-0","cursor-pointer","bg-transparent text-muted-foreground","transition-all duration-150","hover:bg-foreground/8 hover:text-foreground","active:scale-[0.94]","group-data-[vertical]/panel:rotate-[-90deg]"),"data-app-id":"dev-toolbar:more",onClick:Se(()=>{e("dev-toolbar:more").catch(t=>{console.error("[dev-toolbar] Failed to toggle more app:",t)})},"onClick"),title:"More apps",type:"button",children:i("div",{class:"relative size-6 flex items-center justify-center select-none",children:i(te,{size:16,src:ct})})})},"MoreButton"),Ht=Se(({customAppsToShow:e=3})=>{const{apps:t}=je(),r=t.filter(c=>c.builtIn),o=t.filter(c=>!c.builtIn),a=[...r,...o.slice(0,e)],n=o.slice(e);return i("div",{class:"flex items-center pointer-events-auto",id:"__v_dt__bar",children:g("div",{class:"flex flex-row items-center justify-start gap-1",id:"__v_dt__bar_container",children:[a.map(c=>i(zt,{app:c},c.id)),n.length>0&&i(Et,{}),i(Vt,{})]})})},"ToolbarBar"),Wt="data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQ4IDI5MSIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gPGRlZnM+IDxsaW5lYXJHcmFkaWVudCBpZD0iYSIgZ3JhZGllbnRVbml0cz0ib2JqZWN0Qm91bmRpbmdCb3giIHgxPSIwIiB5MT0iMCIgeDI9IjEiIHkyPSIxIj4gPHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNvbG9yPSJyZWQiPiA8YW5pbWF0ZSBhdHRyaWJ1dGVOYW1lPSJzdG9wLWNvbG9yIiB2YWx1ZXM9InJlZDtwdXJwbGU7Ymx1ZTtyZWQ7IiBkdXI9IjIwcyIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIC8+IDwvc3RvcD4gPHN0b3Agb2Zmc2V0PSIwLjUiIHN0b3AtY29sb3I9InB1cnBsZSI+IDxhbmltYXRlIGF0dHJpYnV0ZU5hbWU9InN0b3AtY29sb3IiIHZhbHVlcz0icHVycGxlO2JsdWU7cmVkO3B1cnBsZTsiIGR1cj0iMjBzIiByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSIgLz4gPC9zdG9wPiA8c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9ImJsdWUiPiA8YW5pbWF0ZSBhdHRyaWJ1dGVOYW1lPSJzdG9wLWNvbG9yIiB2YWx1ZXM9ImJsdWU7cmVkO3B1cnBsZTtibHVlOyIgZHVyPSIyMHMiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiAvPiA8L3N0b3A+IDxhbmltYXRlVHJhbnNmb3JtIGF0dHJpYnV0ZU5hbWU9ImdyYWRpZW50VHJhbnNmb3JtIiB0eXBlPSJyb3RhdGUiIGZyb209IjAgLjUgLjUiIHRvPSIzNjAgLjUgLjUiIGR1cj0iMTBzIiByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSIgLz4gPC9saW5lYXJHcmFkaWVudD4gPGxpbmVhckdyYWRpZW50IGlkPSJvdmVybGF5R3JhZGllbnRBIiB4MT0iNjIiIHkxPSI0Mi4yMjUzIiB4Mj0iNjIiIHkyPSIyOTAuMjI1IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+IDxzdG9wIG9mZnNldD0iMC4zNCIgc3RvcC1vcGFjaXR5PSIwLjUiIC8+IDxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0id2hpdGUiIHN0b3Atb3BhY2l0eT0iMCIgLz4gPC9saW5lYXJHcmFkaWVudD4gPGxpbmVhckdyYWRpZW50IGlkPSJvdmVybGF5R3JhZGllbnRCIiB4MT0iMTg2IiB5MT0iMCIgeDI9IjE4NiIgeTI9IjI0OCIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPiA8c3RvcCBzdG9wLWNvbG9yPSJ3aGl0ZSIgc3RvcC1vcGFjaXR5PSIwIiAvPiA8c3RvcCBvZmZzZXQ9IjAuNjk1IiBzdG9wLW9wYWNpdHk9IjAuNSIgLz4gPC9saW5lYXJHcmFkaWVudD4gPC9kZWZzPiA8cGF0aCBkPSJNMCAxNjYuMjI1QzAgMjM0LjcwOSA1NS41MTY3IDI5MC4yMjUgMTI0IDI5MC4yMjVWNDIuMjI1M0M1NS41MTY3IDQyLjIyNTMgMCA5Ny43NDIgMCAxNjYuMjI1WiBNMjQ4IDEyNEMyNDggMTkyLjQ4MyAxOTIuNDgzIDI0OCAxMjQgMjQ4VjBDMTkyLjQ4MyAwIDI0OCA1NS41MTY3IDI0OCAxMjRaIiBmaWxsPSJ1cmwoI2EpIiAvPiA8cGF0aCBkPSJNMCAxNjYuMjI1QzAgMjM0LjcwOSA1NS41MTY3IDI5MC4yMjUgMTI0IDI5MC4yMjVWNDIuMjI1M0M1NS41MTY3IDQyLjIyNTMgMCA5Ny43NDIgMCAxNjYuMjI1WiIgZmlsbD0idXJsKCNvdmVybGF5R3JhZGllbnRBKSIgLz4gPHBhdGggZD0iTTI0OCAxMjRDMjQ4IDE5Mi40ODMgMTkyLjQ4MyAyNDggMTI0IDI0OFYwQzE5Mi40ODMgMCAyNDggNTUuNTE2NyAyNDggMTI0WiIgZmlsbD0idXJsKCNvdmVybGF5R3JhZGllbnRCKSIgLz4gPGNpcmNsZSBjeD0iMTI0IiBjeT0iMTQ3IiByPSI1MCIgZmlsbD0id2hpdGUiIC8+IDwvc3ZnPg==";var Zt=Object.defineProperty,me=N((e,t)=>Zt(e,"name",{value:t,configurable:!0}),"o$1");const Gt=me((e,t)=>{switch(t){case"left":return{left:`${e.right+10}px`,top:`${e.top+e.height/2}px`,transform:"translateY(-50%)"};case"right":return{right:`${globalThis.window?globalThis.window.innerWidth-e.left+10:0}px`,top:`${e.top+e.height/2}px`,transform:"translateY(-50%)"};case"top":return{left:`${e.left+e.width/2}px`,top:`${e.bottom+10}px`,transform:"translateX(-50%)"};default:return{bottom:`${globalThis.window?globalThis.window.innerHeight-e.top+10:0}px`,left:`${e.left+e.width/2}px`,transform:"translateX(-50%)"}}},"getTooltipStyle"),Bt=me(({position:e})=>{const{hoveredApp:t,hoveredAppRect:r,pinTooltip:o,setHoveredApp:a}=Re(),n=l(m(null),"overlayRef"),c=l(m(be()),"helpersRef"),[d,h]=l(E(!1),"isRendered"),[W,I]=l(E(!1),"isVisible"),Y=!!(t?.tooltip&&r);if(L(()=>{if(Y){h(!0);const V=setTimeout(I,16,!0);return()=>clearTimeout(V)}I(!1);const j=setTimeout(h,200,!1);return()=>clearTimeout(j)},[Y]),!d||!t?.tooltip||!r)return;const A=t.tooltip,P=Gt(r,e),S=e==="left"||e==="right",$=me(()=>{const j=n.current?.getBoundingClientRect();j&&o(t,j.left,j.top),a(void 0)},"handlePin");return g("div",{"aria-label":`${t.name} quick preview`,class:u("fixed z-[2147483647] pointer-events-auto","antialiased toolbar-font","w-auto max-w-[300px]","bg-background border border-border shadow-2xl","transition-[opacity,transform] duration-200 ease-[cubic-bezier(0.23,1,0.32,1)]",W?"opacity-100 translate-y-0 scale-100":u("opacity-0 scale-[0.97]",e==="bottom"&&"translate-y-1",e==="top"&&"-translate-y-1",S&&"translate-x-[-2px]")),onMouseEnter:me(()=>a(t,r),"onMouseEnter"),onMouseLeave:me(()=>a(void 0),"onMouseLeave"),ref:n,role:"tooltip",style:P,children:[g("div",{class:"flex items-center justify-between gap-2 px-3 py-2 border-b border-border/60 bg-foreground/3",children:[g("div",{class:"flex items-center gap-2 min-w-0",children:[i("span",{"aria-hidden":"true",class:"size-1.5 rounded-full bg-primary shrink-0"}),i("span",{class:"text-[0.6rem] font-bold uppercase tracking-[0.1em] text-muted-foreground truncate",children:t.name})]}),i("button",{"aria-label":`Pin ${t.name} tooltip`,class:u("size-5 flex items-center justify-center shrink-0","border-0 bg-transparent cursor-pointer p-0","text-muted-foreground/60 hover:text-primary","transition-colors duration-150"),onClick:$,title:"Pin (keep visible)",type:"button",children:i(te,{size:11,src:st})})]}),i("div",{class:"p-3",children:i(A,{helpers:c.current})})]})},"AppTooltipOverlay");var Yt=Object.defineProperty,Me=N((e,t)=>Yt(e,"name",{value:t,configurable:!0}),"o");const Ot=Me(e=>{switch(e){case"left":return{left:"0",top:"50%",transform:"translateX(24px) translateY(-50%)"};case"right":return{left:"0",top:"50%",transform:"translateX(calc(-100% - 24px)) translateY(-50%)"};case"top":return{left:"50%",top:"0",transform:"translateX(-50%) translateY(24px)"};default:return{left:"50%",top:"0",transform:"translateX(-50%) translateY(calc(-100% - 24px))"}}},"getHintStyle"),Xt=Me(({position:e})=>{const t="absolute w-2.5 h-2.5 bg-card border-border";switch(e){case"left":return i("div",{"aria-hidden":"true",class:u(t,"left-[-5px] top-1/2 -translate-y-1/2 rotate-45 border-b border-l")});case"right":return i("div",{"aria-hidden":"true",class:u(t,"right-[-5px] top-1/2 -translate-y-1/2 rotate-45 border-t border-r")});case"top":return i("div",{"aria-hidden":"true",class:u(t,"top-[-5px] left-1/2 -translate-x-1/2 rotate-45 border-t border-l")});default:return i("div",{"aria-hidden":"true",class:u(t,"bottom-[-5px] left-1/2 -translate-x-1/2 rotate-45 border-b border-r")})}},"Arrow"),Ft=[{icon:"⊙",text:"Click logo to open panel"},{icon:"⠿",text:"Drag pill to reposition"},{icon:"⌨",text:"Alt+Shift+D to toggle"}],Jt=Me(({onDismiss:e,position:t})=>{const[r,o]=l(E(!1),"visible"),a=l(m(void 0),"dismissTimeoutRef");L(()=>{const c=setTimeout(o,600,!0);return()=>clearTimeout(c)},[]),L(()=>()=>{a.current!==void 0&&(clearTimeout(a.current),a.current=void 0)},[]);const n=Me(()=>{o(!1),a.current=setTimeout(e,180)},"handleDismiss");return g("div",{"aria-hidden":!r,"aria-label":"DevTools quick start",class:u("absolute pointer-events-auto","w-[240px]","bg-card border border-border","shadow-xl","p-3","font-mono","transition-all duration-200",r?"opacity-100 scale-100":"opacity-0 scale-95 pointer-events-none"),style:Ot(t),children:[i(Xt,{position:t}),g("p",{class:"flex items-center gap-1.5 mb-2.5",children:[i("span",{"aria-hidden":"true",class:"text-primary text-[0.6rem]",children:"▶"}),i("span",{class:"text-[0.6rem] font-bold uppercase tracking-[0.12em] text-foreground",children:"Quick start"})]}),i("ul",{class:"space-y-1.5 mb-3 list-none p-0 m-0",children:Ft.map(({icon:c,text:d})=>g("li",{class:"flex items-center gap-2 text-[0.7rem] text-muted-foreground",children:[i("span",{"aria-hidden":"true",class:"text-primary shrink-0 w-3 text-center leading-none",children:c}),d]},d))}),i("button",{class:u("w-full h-6 text-[0.6rem] font-bold uppercase tracking-[0.1em]","border border-primary/30 bg-primary/6","text-primary cursor-pointer","hover:bg-primary/12 hover:border-primary/50","transition-all duration-150 active:scale-[0.98]"),onClick:n,tabIndex:r?void 0:-1,type:"button",children:"Got it"})]})},"FirstVisitHint");var Ut=Object.defineProperty,de=N((e,t)=>Ut(e,"name",{value:t,configurable:!0}),"i");const Qt=de(({onMove:e,onUnpin:t,pinned:r})=>{const o=l(m(null),"cardRef"),a=l(m(null),"headerRef"),n=l(m({x:r.initialX,y:r.initialY}),"posRef"),c=l(m(void 0),"dragRef"),d=l(m(be()),"helpersRef"),h=l(m(e),"onMoveRef"),W=l(m(r.id),"pinnedIdRef");h.current=e,W.current=r.id,L(()=>{const A="transform 110ms cubic-bezier(0.25,0.46,0.45,0.94)",P=de($=>{if(!c.current||!o.current)return;const j=globalThis.window?.innerWidth??9999,V=globalThis.window?.innerHeight??9999,{cardH:G,cardW:y}=c.current,F=Math.min(80,y),Q=Math.min(36,G);let O=c.current.origX+($.clientX-c.current.startX),T=c.current.origY+($.clientY-c.current.startY);O=Math.max(F-y,Math.min(j-F,O)),T=Math.max(Q-G,Math.min(V-Q,T));const M=[0,j-y,F-y,j-F],Z=[0,V-G,Q-G,V-Q];let ie=O,q=T;for(const J of M)if(Math.abs(O-J)<28){ie=J;break}for(const J of Z)if(Math.abs(T-J)<28){q=J;break}o.current.style.transition=ie!==O||q!==T?A:"",o.current.style.transform=`translate(${ie}px, ${q}px)`,n.current={x:ie,y:q}},"handleMove"),S=de(()=>{c.current&&(c.current=void 0,o.current&&(o.current.style.transition=""),a.current&&(a.current.style.cursor=""),h.current(W.current,n.current.x,n.current.y))},"handleUp");return document.addEventListener("mousemove",P),document.addEventListener("mouseup",S),()=>{document.removeEventListener("mousemove",P),document.removeEventListener("mouseup",S)}},[]);const I=r.app.tooltip;if(!I)return;const Y=de(A=>{A.button===0&&(c.current={cardH:o.current?.offsetHeight??200,cardW:o.current?.offsetWidth??300,origX:n.current.x,origY:n.current.y,startX:A.clientX,startY:A.clientY},a.current&&(a.current.style.cursor="grabbing"),A.preventDefault())},"handleDragStart");return g("div",{"aria-label":`${r.app.name} pinned tooltip`,class:u("fixed z-[2147483647] pointer-events-auto antialiased toolbar-font","w-auto max-w-[300px]","bg-background border border-primary/40 shadow-2xl"),ref:o,style:{left:0,top:0,transform:`translate(${n.current.x}px, ${n.current.y}px)`},children:[g("div",{class:u("flex items-center justify-between gap-2 px-3 py-2","border-b border-primary/20 bg-primary/4","select-none cursor-grab"),onMouseDown:Y,ref:a,children:[g("div",{class:"flex items-center gap-2 min-w-0",children:[i("span",{"aria-hidden":"true",class:"size-1.5 rounded-full bg-primary shrink-0"}),i("span",{class:"text-[0.6rem] font-bold uppercase tracking-[0.1em] text-primary/70 truncate",children:r.app.name})]}),i("button",{"aria-label":`Unpin ${r.app.name}`,class:u("size-5 flex items-center justify-center shrink-0","border-0 bg-transparent cursor-pointer p-0","text-muted-foreground/50 hover:text-destructive","transition-colors duration-150"),onClick:de(()=>t(r.id),"onClick"),onMouseDown:de(A=>A.stopPropagation(),"onMouseDown"),title:"Unpin",type:"button",children:i(te,{size:11,src:lt})})]}),i("div",{class:"p-3",children:i(I,{helpers:d.current})})]})},"PinnedTooltipCard");var qt=Object.defineProperty,ce=N((e,t)=>qt(e,"name",{value:t,configurable:!0}),"p");const Ne="__v_dt__pinned_tooltips",Kt=ce((e,t,r,o,a)=>{const n=t*o/100,c=r*a/100,d=o/4;switch(e){case"bottom":return n<d?"bottom-left":n>o-d?"bottom-right":"bottom-center";case"left":return c<a/2?"top-left":"bottom-left";case"right":return c<a/2?"top-right":"bottom-right";case"top":return n<d?"top-left":n>o-d?"top-right":"top-center";default:return"bottom-center"}},"computePlacement"),er=ce(({activeAppId:e,apps:t,customAppsToShow:r=3,onClearNotification:o,onRegisterApp:a,onSetNotification:n,onToggleApp:c,onUnregisterApp:d})=>{const h=l(m(null),"anchorRef"),W=l(m(null),"panelRef"),I=l(m(void 0),"leaveTimerRef"),{resolvedTheme:Y}=He(),{state:A,updateState:P}=Te(),{closePanel:S,panelVisible:$,togglePanelVisible:j}=It(),{anchorStyle:V,bringUp:G,isDragging:y,isHidden:F,isVertical:Q,onPointerDown:O,panelStyle:T}=Ct(W),[M,Z]=l(E(void 0),"hoveredApp"),[ie,q]=l(E(void 0),"hoveredAppRect"),J=l(m(new Map),"pinPositionsRef"),v=pe(b=>{try{const R=b.map(k=>{const B=J.current.get(k.id);return{appId:k.app.id,x:B?.x??k.initialX,y:B?.y??k.initialY}});localStorage.setItem(Ne,JSON.stringify(R))}catch{}},[]),[C,D]=l(E([]),"pinnedTooltips"),s=l(m([]),"pinnedTooltipsRef");s.current=C;const p=pe((b,R,k)=>{const B=`${b.id}-${Date.now()}`;D(le=>{const he=[...le,{app:b,id:B,initialX:R,initialY:k}];return v(he),he})},[v]),f=pe(b=>{D(R=>{const k=R.filter(B=>B.id!==b);return J.current.delete(b),v(k),k})},[v]),x=pe((b,R,k)=>{J.current.set(b,{x:R,y:k}),v(s.current)},[v]),z=l(m(void 0),"storedPinsRef"),U=l(m(new Set),"restoredAppIdsRef");L(()=>{if(t.length===0)return;if(z.current===void 0)try{const k=localStorage.getItem(Ne);z.current=k?JSON.parse(k):[]}catch{z.current=[]}const b=z.current;if(b.length===0)return;const R=[];for(const k of b){if(U.current.has(k.appId))continue;const B=t.find(le=>le.id===k.appId&&le.tooltip);B&&(U.current.add(k.appId),R.push({app:B,id:`${B.id}-restored-${Date.now()}-${Math.random().toString(36).slice(2)}`,initialX:k.x,initialY:k.y}))}R.length>0&&D(k=>[...k,...R])},[t]),L(()=>()=>{I.current!==void 0&&clearTimeout(I.current)},[]);const X=pe((b,R)=>{I.current!==void 0&&(clearTimeout(I.current),I.current=void 0),b?(Z(b),q(R)):I.current=setTimeout(()=>{Z(void 0),q(void 0),I.current=void 0},180)},[]),w=l(m(t),"appsRef");w.current=t;const ae=l(m($),"panelVisibleRef");ae.current=$;const ne=l(m(e),"activeAppIdRef");ne.current=e;const K=l(m(c),"onToggleAppRef");K.current=c;const oe=l(re(()=>{const b=globalThis.window?.innerWidth??1920,R=globalThis.window?.innerHeight??1080;return Kt(A.position,A.left,A.top,b,R)},[A.left,A.position,A.top]),"placement"),se=pe(async b=>{const R=ae.current,k=ne.current,B=w.current.find(le=>le.id===b);if(B?.onClick??B?.onDeactivate){await K.current(b);return}if(b===k&&R){await K.current(b),P({open:!1,viewMode:"default"});return}b!==k&&await K.current(b),R||P({open:!0})},[P]),ke={activeAppId:e,apps:t,clearNotification:o,hoveredApp:M,hoveredAppRect:ie,isDragging:y,isVisible:$,pinnedTooltips:C,pinTooltip:p,placement:oe,registerApp:a,setDragging:ce(()=>{},"setDragging"),setHoveredApp:X,setNotification:n,setPlacement:ce(()=>{},"setPlacement"),setVisible:ce(b=>P({open:b}),"setVisible"),toggleApp:se,unpinTooltip:f,unregisterApp:d};if(!(!A.preferShowFloatingPanel&&!$))return i(We.Provider,{value:ke,children:g("div",{class:u(Y==="dark"&&"dark"),style:{display:"contents"},children:[g("div",{class:u("fixed z-[2147483647]","pointer-events-auto","origin-center","transition-[left_0.3s_cubic-bezier(0.4,0,0.2,1),top_0.3s_cubic-bezier(0.4,0,0.2,1)]","data-[dragging]:transition-none!","group","toolbar-font text-[13px]! leading-[1.6]! antialiased box-border [&_*]:box-border print:hidden",A.reduceMotion&&"transition-none! animate-none! [&_*]:transition-none! [&_*]:animate-none!"),"data-dragging":y?"":void 0,"data-placement":oe,id:"__v_dt__root",onMouseMove:G,ref:h,style:V,children:[g("div",{class:u("group/panel","absolute left-0 top-0","flex flex-row justify-start items-center","gap-1 p-1","box-border","overflow-hidden","rounded-none","text-foreground select-none",y?"cursor-grabbing":"cursor-grab","bg-background border-0",Q?"shadow-pill-vertical!":"shadow-pill",F?"max-w-12!":"","transition-pill"),"data-vertical":Q||void 0,onPointerDown:ce(b=>{A.isFirstVisit&&P({isFirstVisit:!1}),O(b)},"onPointerDown"),ref:W,style:T,children:[i("button",{"aria-label":"Toggle devtools panel",class:u("size-8 flex justify-center items-center shrink-0","cursor-pointer p-0 m-0 border-0","bg-transparent","transition-all duration-150","hover:bg-primary/8 active:scale-[0.95]","group-data-[vertical]/panel:rotate-[-90deg]",$?"opacity-100":"opacity-60"),onClick:ce(b=>{b.stopPropagation(),A.isFirstVisit&&P({isFirstVisit:!1}),j()},"onClick"),title:"Toggle devtools panel",type:"button",children:i("img",{alt:"Visulima",class:"size-6",src:Wt})}),i("div",{"aria-hidden":"true",class:u("w-px h-5 bg-primary/20 shrink-0",F&&"hidden")}),i("div",{class:u("px-0.5",F&&"hidden"),children:i(Ht,{customAppsToShow:r})})]}),A.isFirstVisit&&i(Jt,{onDismiss:ce(()=>P({isFirstVisit:!1}),"onDismiss"),position:A.position})]}),i(Nt,{activeAppId:e,apps:t,onClose:S,onToggleApp:c,panelVisible:$,position:A.position}),i(Bt,{position:A.position}),C.map(b=>i(Qt,{onMove:x,onUnpin:f,pinned:b},b.id))]})})},"ToolbarContainer");var tr=Object.defineProperty,Be=N((e,t)=>tr(e,"name",{value:t,configurable:!0}),"r");const rr=Be((e,t)=>{const r=$e(),o=Ue();if(!o)throw new Error("Global hook not initialized");return{clearNotification(a){e.clearNotification(a)},async closeApp(){const a=e.getActiveApp();a&&await e.toggleApp(a.id)},getActiveApp(){return e.getActiveApp()?.id},getApps(){return e.getApps()},getSettings(){return Ve()},hide(){t.hide()},hook:o,notify(a,n){e.setNotification(a,!0,n)},async openApp(a){await e.toggleApp(a)},registerApp(a){e.registerApp(a)},rpc:new Proxy({},{get(a,n){return(...c)=>r.callServer(n,...c)}}),setAppActive(a,n){e.setAppActive(a,n)},show(){t.show()},toggle(){t.toggle()},unregisterApp(a){e.unregisterApp(a)},updateSettings(a){Je(a)},version:"0.0.0"}},"createGlobalAPI"),ir=Be(e=>{globalThis.window!==void 0&&(globalThis.__VISULIMA_DEVTOOLS__=e)},"setupGlobalAPI");var nr=Object.defineProperty,H=N((e,t)=>nr(e,"name",{value:t,configurable:!0}),"t");class or extends HTMLElement{static{N(this,"DevToolbar")}static{H(this,"DevToolbar")}appManager;hasBeenInitialized=!1;customAppsToShow=3;renderRoot=void 0;constructor(){super(),this.attachShadow({mode:"open"}),this.appManager=new ft}connectedCallback(){this.hasBeenInitialized&&this.shadowRoot&&!this.renderRoot&&this.render()}disconnectedCallback(){this.renderRoot&&(Pe(null,this.renderRoot),this.renderRoot=void 0)}init(){if(this.hasBeenInitialized)return;this.hasBeenInitialized=!0;const t=Qe(n=>{this.appManager.registerApp(n),this.render()},(n,c)=>{qe().addEvent(n,c)}),r=rr({clearNotification:H(n=>{this.appManager.clearNotification(n),this.render()},"clearNotification"),getActiveApp:H(()=>this.appManager.getActiveApp(),"getActiveApp"),getApps:H(()=>this.appManager.getAllApps(),"getApps"),registerApp:H(n=>{this.appManager.registerApp(n),this.render()},"registerApp"),setAppActive:H((n,c)=>{this.appManager.setAppActive(n,c),this.render()},"setAppActive"),setNotification:H((n,c,d)=>{this.appManager.setNotification(n,c,d),this.render()},"setNotification"),toggleApp:H(n=>this.appManager.toggleApp(n),"toggleApp"),unregisterApp:H(n=>{this.appManager.unregisterApp(n),this.render()},"unregisterApp")},{hide:H(()=>this.setToolbarVisible(!1),"hide"),show:H(()=>this.setToolbarVisible(!0),"show"),toggle:H(()=>{const n=this.isHidden();this.setToolbarVisible(!n)},"toggle")});ir(r),t.emit("devtools:init");const o=Ve(),a=this.appManager.getAllApps().find(n=>n.defaultOpen);a&&!this.appManager.getActiveApp()&&this.appManager.openApp(a.id).catch(n=>{console.error(`[dev-toolbar] Failed to auto-open defaultOpen app ${a.id}:`,n)}),this.render(),this.setupEventListeners(),o.defaultVisible&&this.setToolbarVisible(!0)}isHidden(){return this.shadowRoot.querySelector("#__v_dt__root")?.hasAttribute("data-hidden")??!0}setToolbarVisible(t){const r=this.shadowRoot.querySelector("#__v_dt__root");r&&(t?delete r.dataset.hidden:r.dataset.hidden=""),this.render()}registerApp(t,r=!1){this.appManager.registerApp(t,r),this.render()}getAppManager(){return this.appManager}render(){const t=this.appManager.getAllApps(),r=this.shadowRoot;ue&&(r.adoptedStyleSheets=[ue]);let o=r.querySelector("style");o||(o=document.createElement("style"),o.textContent=`
|
|
1
|
+
var Ye=Object.defineProperty;var _=(e,t)=>Ye(e,"name",{value:t,configurable:!0});import{createContext as Oe,render as ke}from"preact";import{createClientRPCContext as Re}from"../packem_shared/createClientRPCContext-DgRxrllw.js";import{updateSettings as Xe,loadSettings as Se}from"../packem_shared/loadSettings-hvjR4fcS.js";import{getGlobalHook as Je,setupGlobalHook as Ue}from"../packem_shared/setupGlobalHook-CCf9Logv.js";import ue from"../packem_shared/sharedToolbarStylesheet-JFwZE8kq.js";import{jsx as i,jsxs as g,Fragment as Te}from"preact/jsx-runtime";import{m as Qe}from"../packem_shared/store-DaUtLjf3.js";import{addHookName as l}from"preact/devtools";import{clsx as h}from"../packem_shared/clsx-wGlvpUfw.js";import{useContext as qe,useEffect as V,useMemo as re,useState as $,useRef as f,useCallback as de,useLayoutEffect as Ke}from"preact/hooks";import ie from"../packem_shared/Icon-B6UHkC0o.js";import{h as Ce}from"../packem_shared/use-frame-state-CxrlPUM5.js";import{_ as _e}from"../packem_shared/use-theme-zpm4zmqP.js";var et=Object.defineProperty,tt=_((e,t)=>et(e,"name",{value:t,configurable:!0}),"t$4");const me=tt(()=>{const e=Re();return{rpc:new Proxy({},{get(t,r){return(...o)=>e.callServer(r,...o)}})}},"createServerHelpers");var rt=Object.defineProperty,it=_((e,t)=>rt(e,"name",{value:t,configurable:!0}),"n$2");let nt=class{static{_(this,"p")}static{it(this,"AppManager")}apps=new Map;activeAppId=void 0;initializedApps=new Set;appCanvases=new Map;registerApp(t,r=!1){this.apps.has(t.id)&&(this.initializedApps.delete(t.id),this.appCanvases.delete(t.id),this.activeAppId===t.id&&(this.activeAppId=void 0));const o=new EventTarget,a={...t,active:!1,builtIn:r,eventTarget:o,notification:{state:!1},status:"ready"};this.apps.set(t.id,a)}async unregisterApp(t){const r=this.apps.get(t);if(r?.destroy&&this.initializedApps.has(t)){const o=this.appCanvases.get(t);if(o)try{await r.destroy(o.shadowRoot)}catch(a){console.error(`[dev-toolbar] destroy() failed for app ${t}:`,a)}}this.apps.delete(t),this.initializedApps.delete(t),this.appCanvases.delete(t),this.activeAppId===t&&(this.activeAppId=void 0)}getApp(t){return this.apps.get(t)}getAllApps(){return[...this.apps.values()]}getActiveApp(){if(this.activeAppId)return this.apps.get(this.activeAppId)}async toggleApp(t){const r=this.apps.get(t);if(!r)return!1;if(r.onClick??r.onDeactivate){const o=r.active;return r.active=!o,!o&&r.onClick?await r.onClick():o&&r.onDeactivate&&await r.onDeactivate(),!0}return r.active?await this.closeApp(t):this.activeAppId&&!await this.closeApp(this.activeAppId)?!1:await this.openApp(t)}setAppActive(t,r){const o=this.apps.get(t);o&&(o.active=r)}isAppInitialized(t){return this.initializedApps.has(t)}markAppInitialized(t){this.initializedApps.add(t)}async openApp(t){const r=this.apps.get(t);if(!r)return!1;if(r.active=!0,r.status="loading",this.activeAppId=t,r.init&&!this.isAppInitialized(t))try{const o=this.getAppCanvas(t);if(o){const a=me(),n=r.init(o.shadowRoot,r.eventTarget,a);n&&typeof n.then=="function"&&await n,this.markAppInitialized(t),r.status="ready"}else r.status="pending"}catch(o){return console.error(`[dev-toolbar] Failed to init app ${t}:`,o),r.status="error",r.active=!1,this.activeAppId=void 0,!1}else r.status="ready";return!0}async closeApp(t){const r=this.apps.get(t);if(!r||!r.active)return!1;if(r.beforeTogglingOff){const o=this.getAppCanvas(t);if(o)try{const a=r.beforeTogglingOff(o.shadowRoot);if(!(a&&typeof a.then=="function"?await a:a))return!1}catch(a){console.error(`[dev-toolbar] beforeTogglingOff() threw for app ${t}:`,a)}}return r.active=!1,this.activeAppId===t&&(this.activeAppId=void 0),!0}setNotification(t,r,o){const a=this.apps.get(t);a&&(a.notification={level:o,state:r})}clearNotification(t){const r=this.apps.get(t);r&&(r.notification={state:!1})}getAppCanvas(t){return this.appCanvases.get(t)}setAppCanvas(t,r){this.appCanvases.set(t,r)}};var ot=Object.defineProperty,at=_((e,t)=>ot(e,"name",{value:t,configurable:!0}),"t$3");const Ne=Oe(void 0),ze=at(()=>{const e=qe(Ne);if(!e)throw new Error("useToolbarContext must be used within ToolbarContext provider");return e},"useToolbarContext");var st=Object.defineProperty,lt=_((e,t)=>st(e,"name",{value:t,configurable:!0}),"t$2");const Ve=lt(()=>{const e=ze();return{activeAppId:e.activeAppId,apps:e.apps,clearNotification:e.clearNotification,registerApp:e.registerApp,setNotification:e.setNotification,toggleApp:e.toggleApp,unregisterApp:e.unregisterApp}},"useApps");var ct=Object.defineProperty,ge=_((e,t)=>ct(e,"name",{value:t,configurable:!0}),"s$1");const dt=ge((e,t)=>{const r=t.split("+"),o=r.at(-1)??"",a=r.includes("Alt"),n=r.includes("Shift"),c=r.includes("Control")||r.includes("Ctrl"),p=r.includes("Meta")||r.includes("Cmd");return(e.key===o||e.code===`Key${o.toUpperCase()}`)&&e.altKey===a&&e.shiftKey===n&&e.ctrlKey===c&&e.metaKey===p},"matchesBinding"),pt=ge(()=>{const{state:e,updateState:t}=Ce(),r=ge((n,c)=>{const p=c??!e.open;t({open:p,...p?{}:{viewMode:"default"}})},"togglePanelVisible"),o=ge(()=>{e.open&&t({open:!1,viewMode:"default"})},"closePanel");V(()=>{const n=e.keybindings?.toggle??"Alt+Shift+D",c=ge(p=>{dt(p,n)&&r()},"handleKeyDown");return globalThis.window?.addEventListener("keydown",c),()=>{globalThis.window?.removeEventListener("keydown",c)}},[e.open,e.keybindings?.toggle]);const a=l(re(()=>e.open,[e.open]),"panelVisibleValue: boolean");return{closePanel:o,panelVisible:a,togglePanelVisible:r}},"usePanelVisible");var ut=Object.defineProperty,Pe=_((e,t)=>ut(e,"name",{value:t,configurable:!0}),"e");const be=Pe((e,t,r)=>Math.min(Math.max(e,t),r),"clamp");Pe(()=>navigator.userAgent.includes("Safari")&&!navigator.userAgent.includes("Chrome"),"checkIsSafari");const xe=Pe(e=>typeof e=="string"?e.endsWith("px")?Number(e.slice(0,-2)):Number(e):e,"pixelToNumber");var ht=Object.defineProperty,K=_((e,t)=>ht(e,"name",{value:t,configurable:!0}),"h$1");const Ee=K(e=>e<5?0:e>95?100:Math.abs(e-50)<2?50:e,"snapToPoints"),gt=K(()=>{if(globalThis.window===void 0)return{bottom:0,left:0,right:0,top:0};const e=getComputedStyle(document.documentElement);return{bottom:xe(e.getPropertyValue("env(safe-area-inset-bottom)")||"0"),left:xe(e.getPropertyValue("env(safe-area-inset-left)")||"0"),right:xe(e.getPropertyValue("env(safe-area-inset-right)")||"0"),top:xe(e.getPropertyValue("env(safe-area-inset-top)")||"0")}},"getSafeAreaInsets"),ft=K(()=>{const[e,t]=l($(()=>({height:globalThis.window?.innerHeight??1080,width:globalThis.window?.innerWidth??1920})),"size");return V(()=>{const r=K(()=>{t({height:globalThis.window?.innerHeight??1080,width:globalThis.window?.innerWidth??1920})},"updateSize");return r(),globalThis.window?.addEventListener("resize",r),()=>{globalThis.window?.removeEventListener("resize",r)}},[]),e},"useWindowSize"),mt=K(e=>{const{state:t,updateState:r}=Ce(),{height:o,width:a}=ft(),[n,c]=l($(!1),"isHovering"),[p,u]=l($(!1),"isDragging"),[j,z]=l($(!1),"isViteOverlayOpen"),I=l(f({x:0,y:0}),"draggingOffsetRef"),P=l(f({x:0,y:0}),"mousePositionRef"),H=l(f(void 0),"timerRef"),C=l(f(void 0),"capturedPointerIdRef"),Y=l(f(!1),"isDraggingRef"),E=l(f(a),"windowWidthRef"),N=l(f(o),"windowHeightRef"),L=l(f(r),"updateStateRef");V(()=>{E.current=a,N.current=o},[a,o]),V(()=>{L.current=r},[r]);const[w,U]=l($(()=>({bottom:10,left:10,right:10,top:10})),"panelMargins");V(()=>{const v=gt();U({bottom:v.bottom+10,left:v.left+10,right:v.right+10,top:v.top+10})},[]),V(()=>{const v=K(()=>{const S=globalThis.__v_o__current;if(S?.parentNode){const s=S.shadowRoot?.querySelector("#__v_o__root");z(!!s&&!s.classList.contains("hidden"))}else z(!1)},"check"),k=setInterval(v,300);return v(),()=>clearInterval(k)},[]);const ee=de(v=>{v.preventDefault(),v.stopPropagation(),u(!0),Y.current=!0;const k=e.current;if(k){const{height:S,left:s,top:d,width:m}=k.getBoundingClientRect();I.current={x:v.clientX-s-m/2,y:v.clientY-d-S/2};const b=v.target;try{b&&b.setPointerCapture?(b.setPointerCapture(v.pointerId),C.current=v.pointerId):k.setPointerCapture&&(k.setPointerCapture(v.pointerId),C.current=v.pointerId)}catch(F){console.warn("Failed to capture pointer:",F)}document.body.style.cursor="grabbing",document.body.style.userSelect="none"}},[e]),O=de(()=>{c(!0),!(t.minimizePanelInactive<0)&&(H.current&&clearTimeout(H.current),H.current=setTimeout(()=>{c(!1)},t.minimizePanelInactive||5e3))},[t.minimizePanelInactive]);V(()=>{O()},[O]),V(()=>{const v=K(()=>{if(C.current!==void 0){try{const b=e.current;b&&C.current!==void 0&&b.releasePointerCapture(C.current)}catch{}C.current=void 0}},"releaseCapture"),k=K(()=>{Y.current&&(u(!1),Y.current=!1,document.body.style.cursor="",document.body.style.userSelect="",v())},"finishDrag"),S=K(b=>{k()},"handlePointerUp"),s=K(b=>{k()},"handlePointerCancel"),d=K(()=>{Y.current&&(u(!1),Y.current=!1,C.current=void 0,document.body.style.cursor="",document.body.style.userSelect="")},"handleLostPointerCapture"),m=K(b=>{if(!Y.current)return;b.preventDefault();const F=E.current,Q=N.current,G=F/2,y=Q/2,se=b.clientX,q=b.clientY,ne=se-I.current.x,oe=q-I.current.y;P.current={x:ne,y:oe};const le=Math.max(0,Math.min(se,F)),x=Math.max(0,Math.min(q,Q)),T=Math.atan2(x-y,le-G),A=70,X=Math.atan2(0-y+A,0-G),ae=Math.atan2(0-y+A,F-G),ve=Math.atan2(Q-A-y,0-G),je=Math.atan2(Q-A-y,F-G);let he;T>=X&&T<=ae?he="top":T>=ae&&T<=je?he="right":T>=je&&T<=ve?he="bottom":he="left";const Ze=Math.max(0,Math.min(100,ne/F*100)),Ge=Math.max(0,Math.min(100,oe/Q*100));L.current({left:Ee(Ze),position:he,top:Ee(Ge)})},"handlePointerMove");return document.addEventListener("pointermove",m,{capture:!0,passive:!1}),document.addEventListener("pointerup",S,{capture:!0}),document.addEventListener("pointercancel",s,{capture:!0}),document.addEventListener("lostpointercapture",d,{capture:!0}),()=>{document.removeEventListener("pointermove",m,{capture:!0}),document.removeEventListener("pointerup",S,{capture:!0}),document.removeEventListener("pointercancel",s,{capture:!0}),document.removeEventListener("lostpointercapture",d,{capture:!0})}},[]);const M=l(re(()=>t.position==="left"||t.position==="right",[t.position]),"isVertical"),D=l(re(()=>{if(t.minimizePanelInactive<0)return!1;if(t.minimizePanelInactive===0)return!0;const v=globalThis.window!==void 0&&("ontouchstart"in globalThis.window||(globalThis.navigator?.maxTouchPoints??0)>0);return!p&&!t.open&&!n&&!v&&t.minimizePanelInactive>0&&!j},[p,t.open,t.minimizePanelInactive,n,j]),"isHidden"),B=l(re(()=>{const v=e.current,k=(v?.clientWidth??0)/2,S=(v?.clientHeight??0)/2,s=M?S:k,d=M?k:S,m=t.left*a/100,b=t.top*o/100;switch(t.position){case"left":return{left:w.left+s-(D?30:0),top:be(b,d+w.top,o-d-w.bottom)};case"right":return{left:a-w.right-s+(D?15:0)-(D?0:10),top:be(b,d+w.top,o-d-w.bottom)};case"top":return{left:be(m,s+w.left,a-s-w.right),top:w.top+d-(D?30:0)};default:return{left:be(m,s+w.left,a-s-w.right),top:o-w.bottom-d+(D?30:0)}}},[t.left,t.open,t.position,t.top,o,a,w,e,D,M]),"anchorPos"),te=l(re(()=>({left:`${B.left}px`,top:`${B.top}px`,transition:p?"none":"left 0.3s ease, top 0.3s ease"}),[B,p]),"anchorStyle"),J=l(re(()=>{const v=e.current,k=(v?.clientWidth??0)/2,S=(v?.clientHeight??0)/2,s=M?S:k,d=M?k:S,m={bottom:w.bottom+d,left:w.left+s,right:w.right+s,top:w.top+d},b=m.left+m.right,F=m.top+m.bottom,Q=a-b,G=o-F,y={height:`min(${t.height}vh, calc(100vh - ${F}px))`,pointerEvents:p?"none":"auto",width:`min(${t.width}vw, calc(100vw - ${b}px))`,zIndex:"-1"},se=B,q=Math.min(Q,t.width*a/100),ne=Math.min(G,t.height*o/100),oe=se?.left??0,le=se?.top??0;switch(t.position){case"bottom":case"top":{y.left="0",y.transform="translate(-50%, 0)",oe-m.left<q/2?y.left=`${q/2-oe+m.left}px`:a-oe-m.right<q/2&&(y.left=`${a-oe-q/2-m.right}px`);break}default:{y.top="0",y.transform="translate(0, -50%)",le-m.top<ne/2?y.top=`${ne/2-le+m.top}px`:o-le-m.bottom<ne/2&&(y.top=`${o-le-ne/2-m.bottom}px`);break}}switch(t.position){case"left":{y.left="0";break}case"right":{y.right="0";break}case"top":{y.top="0";break}default:{y.bottom="0";break}}return y},[B,p,w,t.height,t.position,t.width,o,a,e,M]),"iframeStyle"),Z=l(re(()=>{const v={transform:M?"translate(-50%, -50%) rotate(90deg)":"translate(-50%, -50%)"};return p&&(v.transition="none !important"),v},[p,M]),"panelStyle");return{anchorStyle:te,bringUp:O,iframeStyle:J,isDragging:p,isHidden:D,isVertical:M,onPointerDown:ee,panelStyle:Z}},"usePosition");var vt=Object.defineProperty,we=_((e,t)=>vt(e,"name",{value:t,configurable:!0}),"t$1");const bt=we(({app:e})=>{const{toggleApp:t}=Ve(),{isVisible:r,setHoveredApp:o}=ze(),a=l(f(null),"buttonRef"),n=we(()=>{o(void 0),t(e.id).catch(u=>{console.error(`[dev-toolbar] Failed to toggle app ${e.id}:`,u)})},"handleClick"),c=we(()=>{!e.tooltip||r||o(e,a.current?.getBoundingClientRect())},"handleMouseEnter"),p=we(()=>{e.tooltip&&o(void 0)},"handleMouseLeave");return i("button",{"aria-label":e.name,class:h("relative flex justify-center items-center","border-0","whitespace-nowrap no-underline p-0 m-0","cursor-pointer","bg-transparent text-muted-foreground","transition-all duration-150","hover:bg-primary/8 hover:text-primary","active:scale-[0.94]",e.active&&"bg-primary/12 text-primary","group-data-[vertical]/panel:rotate-[-90deg]"),"data-app-id":e.id,onClick:n,onMouseEnter:c,onMouseLeave:p,ref:a,title:e.tooltip?void 0:e.name,type:"button",children:g("div",{class:"relative size-6 select-none flex items-center justify-center",children:[i("div",{class:"size-6 flex items-center justify-center [&_svg]:size-4.5",dangerouslySetInnerHTML:{__html:e.icon}}),e.notification.state&&i("span",{class:h("absolute -top-1 -right-1 size-1.5 rounded-full border border-background",e.notification.level==="error"&&"bg-destructive",e.notification.level==="warning"&&"bg-warning",(!e.notification.level||e.notification.level==="info")&&"bg-info"),"data-level":e.notification.level||"info"})]})})},"AppButton"),$e="data:image/svg+xml;charset=utf-8,%3Csvg%20class%3D%22lucide%20lucide-chevron-right%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20%3E%20%3Cpath%20d%3D%22m9%2018%206-6-6-6%22%20%2F%3E%20%3C%2Fsvg%3E",xt="data:image/svg+xml;charset=utf-8,%3Csvg%20class%3D%22lucide%20lucide-layers%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20%3E%20%3Cpath%20d%3D%22M12.83%202.18a2%202%200%200%200-1.66%200L2.6%206.08a1%201%200%200%200%200%201.83l8.58%203.91a2%202%200%200%200%201.66%200l8.58-3.9a1%201%200%200%200%200-1.83z%22%20%2F%3E%20%3Cpath%20d%3D%22M2%2012a1%201%200%200%200%20.58.91l8.6%203.91a2%202%200%200%200%201.65%200l8.58-3.9A1%201%200%200%200%2022%2012%22%20%2F%3E%20%3Cpath%20d%3D%22M2%2017a1%201%200%200%200%20.58.91l8.6%203.91a2%202%200%200%200%201.65%200l8.58-3.9A1%201%200%200%200%2022%2017%22%20%2F%3E%20%3C%2Fsvg%3E",wt="data:image/svg+xml;charset=utf-8,%3Csvg%20class%3D%22lucide%20lucide-maximize%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20%3E%20%3Cpath%20d%3D%22M8%203H5a2%202%200%200%200-2%202v3%22%20%2F%3E%20%3Cpath%20d%3D%22M21%208V5a2%202%200%200%200-2-2h-3%22%20%2F%3E%20%3Cpath%20d%3D%22M3%2016v3a2%202%200%200%200%202%202h3%22%20%2F%3E%20%3Cpath%20d%3D%22M16%2021h3a2%202%200%200%200%202-2v-3%22%20%2F%3E%20%3C%2Fsvg%3E",yt="data:image/svg+xml;charset=utf-8,%3Csvg%20class%3D%22lucide%20lucide-maximize-2%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20%3E%20%3Cpath%20d%3D%22M15%203h6v6%22%20%2F%3E%20%3Cpath%20d%3D%22m21%203-7%207%22%20%2F%3E%20%3Cpath%20d%3D%22m3%2021%207-7%22%20%2F%3E%20%3Cpath%20d%3D%22M9%2021H3v-6%22%20%2F%3E%20%3C%2Fsvg%3E",Dt="data:image/svg+xml;charset=utf-8,%3Csvg%20class%3D%22lucide%20lucide-minimize%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20%3E%20%3Cpath%20d%3D%22M8%203v3a2%202%200%200%201-2%202H3%22%20%2F%3E%20%3Cpath%20d%3D%22M21%208h-3a2%202%200%200%201-2-2V3%22%20%2F%3E%20%3Cpath%20d%3D%22M3%2016h3a2%202%200%200%201%202%202v3%22%20%2F%3E%20%3Cpath%20d%3D%22M16%2021v-3a2%202%200%200%201%202-2h3%22%20%2F%3E%20%3C%2Fsvg%3E",At="data:image/svg+xml;charset=utf-8,%3Csvg%20class%3D%22lucide%20lucide-minimize-2%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20%3E%20%3Cpath%20d%3D%22m14%2010%207-7%22%20%2F%3E%20%3Cpath%20d%3D%22M20%2010h-6V4%22%20%2F%3E%20%3Cpath%20d%3D%22m3%2021%207-7%22%20%2F%3E%20%3Cpath%20d%3D%22M4%2014h6v6%22%20%2F%3E%20%3C%2Fsvg%3E",It="data:image/svg+xml;charset=utf-8,%3Csvg%20class%3D%22lucide%20lucide-picture-in-picture-2%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20%3E%20%3Cpath%20d%3D%22M21%209V6a2%202%200%200%200-2-2H4a2%202%200%200%200-2%202v10c0%201.1.9%202%202%202h4%22%20%2F%3E%20%3Crect%20width%3D%2210%22%20height%3D%227%22%20x%3D%2212%22%20y%3D%2213%22%20rx%3D%222%22%20%2F%3E%20%3C%2Fsvg%3E",He="data:image/svg+xml;charset=utf-8,%3Csvg%20class%3D%22lucide%20lucide-x%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20%3E%20%3Cpath%20d%3D%22M18%206%206%2018%22%20%2F%3E%20%3Cpath%20d%3D%22m6%206%2012%2012%22%20%2F%3E%20%3C%2Fsvg%3E";var Ct=Object.defineProperty,R=_((e,t)=>Ct(e,"name",{value:t,configurable:!0}),"a");const Le=R(({app:e})=>{const t=l(f(null),"contentRef"),r=l(f(!1),"initializedRef"),o=l(f(me()),"helpersRef");return V(()=>{if(!t.current||r.current||e.component||e.view?.type==="iframe")return;const a=t.current;if(e.init){const n=document.createElement("div");n.style.cssText="width:100%;height:100%;",a.append(n);const c=n.attachShadow({mode:"open"});ue&&(c.adoptedStyleSheets=[ue]);const p=me(),u=e.init(c,e.eventTarget,p);return u&&typeof u.then=="function"?u.then(()=>{r.current=!0}).catch(j=>{console.error(`[dev-toolbar] Failed to init app ${e.id}:`,j)}):r.current=!0,()=>{for(;a.firstChild;)a.firstChild.remove();r.current=!1}}},[e]),e.view?.type==="iframe"?i("iframe",{class:"w-full h-full block border-0",src:e.view.src,title:e.name}):e.component?i(e.component,{eventTarget:e.eventTarget,helpers:o.current}):i("div",{class:"w-full h-full",ref:t})},"AppContent"),We=R(e=>e==="error"?"bg-destructive":e==="warning"?"bg-warning":"bg-info","getNotificationColor"),Mt=R(({apps:e,initialActiveAppId:t,onClose:r})=>{const[o,a]=l($(t),"activeAppId"),[n,c]=l($(!1),"sidebarCollapsed"),p=l(re(()=>e.find(u=>u.id===o),[e,o]),"activeApp");return g("div",{class:"flex flex-row w-full h-full bg-background font-mono antialiased text-foreground",children:[g("nav",{"aria-label":"DevTools apps",class:h("flex flex-col shrink-0 bg-accent border-r border-border/60","transition-[width] duration-300 ease-[cubic-bezier(0.4,0,0.2,1)]",n?"w-12.5":"w-62.5"),children:[i("div",{class:h("flex items-center shrink-0 border-b border-border/50 h-12",n?"justify-center px-2":"px-3"),children:n?i("span",{"aria-hidden":"true",class:"text-primary font-black text-[0.8rem] select-none",children:"V"}):g("span",{class:"text-[0.6rem] font-bold uppercase tracking-[0.14em] text-muted-foreground select-none",children:[i("span",{"aria-hidden":"true",class:"text-primary/60 mr-1",children:"//"}),"DevTools"]})}),i("div",{class:"flex flex-col flex-1 overflow-y-auto p-2 gap-1 scrollbar-thin-border",children:e.filter(u=>u.component||u.init||u.view?.type==="iframe").map(u=>g("div",{class:"relative group/nav-item",children:[g("button",{"aria-label":u.name,"aria-pressed":o===u.id,class:h("relative flex items-center w-full h-10","border-0 border-l-2 cursor-pointer","transition-all duration-150",n?"justify-center px-0":"gap-2.5 px-3",o===u.id?"border-primary bg-primary/8 text-foreground":"border-transparent bg-transparent text-muted-foreground hover:bg-foreground/6 hover:text-foreground"),onClick:R(()=>a(u.id),"onClick"),type:"button",children:[u.icon?i("span",{class:h("size-4 shrink-0 flex items-center justify-center [&_svg]:size-4",o===u.id?"opacity-100":"opacity-65 group-hover/nav-item:opacity-100"),dangerouslySetInnerHTML:{__html:u.icon}}):i("span",{class:"size-4.5 shrink-0 flex items-center justify-center text-[0.65rem] font-bold uppercase select-none",children:u.name.slice(0,2)}),!n&&i("span",{class:"text-[0.8125rem] font-medium truncate leading-none tracking-[-0.01em]",children:u.name})]}),u.notification.state&&i("span",{"aria-hidden":"true",class:h("pointer-events-none absolute top-1.5 rounded-full",n?"right-1.5":"right-2.5","size-1.5",We(u.notification.level))}),n&&i("div",{class:h("absolute left-[calc(100%+0.5rem)] top-1/2 -translate-y-1/2","pointer-events-none z-50 whitespace-nowrap","opacity-0 -translate-x-1 group-hover/nav-item:opacity-100 group-hover/nav-item:translate-x-0","transition-all duration-200 ease-[cubic-bezier(0.23,1,0.32,1)]"),children:i("div",{class:"text-[0.7rem] font-medium bg-card/95 backdrop-blur-[0.625rem] text-foreground/80 px-2.5 py-1 border border-border shadow-md",children:u.name})})]},u.id))})]}),g("div",{class:"flex-1 flex flex-col min-w-0 overflow-hidden bg-accent",children:[g("div",{class:"flex items-center justify-between gap-2 pr-2 min-h-12 shrink-0",children:[g("div",{class:"flex items-center gap-3 min-w-0",children:[i("button",{"aria-label":n?"Expand sidebar":"Collapse sidebar",class:h("flex items-center justify-center size-7 shrink-0","border-0 cursor-pointer bg-transparent","text-muted-foreground hover:text-foreground hover:bg-foreground/7","transition-colors duration-150"),onClick:R(()=>c(u=>!u),"onClick"),type:"button",children:i(ie,{class:h("size-3.5 transition-transform duration-300",!n&&"rotate-180"),size:14,src:$e})}),p?.icon&&i("span",{class:"size-5 flex items-center justify-center [&_svg]:size-5 shrink-0 text-foreground opacity-80",dangerouslySetInnerHTML:{__html:p.icon}}),g("span",{class:"flex items-center gap-1 text-[0.7rem] font-bold uppercase tracking-[0.06em] text-foreground truncate",children:[i("span",{"aria-hidden":"true",class:"text-primary/50 shrink-0",children:"["}),p?.name??"DevTools",i("span",{"aria-hidden":"true",class:"text-primary/50 shrink-0",children:"]"})]})]}),i("button",{"aria-label":"Close floating window",class:h("flex items-center justify-center size-8","cursor-pointer border-0 bg-transparent","text-muted-foreground hover:text-foreground hover:bg-foreground/7","transition-all duration-200 active:scale-90"),onClick:r,title:"Close floating window",type:"button",children:i(ie,{size:12,src:He})})]}),i("div",{class:"devtools-content-scroll scrollbar-thin-border flex-1 overflow-auto min-h-0 bg-background",children:p?i(Le,{app:p},p.id):i("div",{class:"flex flex-col items-center justify-center h-full gap-3 p-8 select-none text-muted-foreground",children:i("p",{class:"text-[0.8rem]",children:"Select a tool from the sidebar"})})})]})]})},"PipPanel"),ye=20,De=95,Ae=R((e,t,r)=>Math.min(Math.max(e,t),r),"clamp"),kt=R(e=>{switch(e){case"bottom":return"bottom-14";case"left":return"left-14 top-4 bottom-4";case"right":return"right-14 top-4 bottom-4";case"top":return"top-14";default:return"bottom-14"}},"getPanelPositionClasses"),Tt=R(e=>{switch(e){case"bottom":return"origin-[bottom_center]";case"left":return"origin-[left_center]";case"right":return"origin-[right_center]";case"top":return"origin-[top_center]";default:return"origin-[bottom_center]"}},"getOriginClass"),zt=R((e,t)=>t?"opacity-100 scale-100":h("opacity-0 pointer-events-none scale-[0.99]",{bottom:"translate-y-2",left:"-translate-x-2",right:"translate-x-2",top:"-translate-y-2"}[e]??"translate-y-2"),"getVisibilityClasses"),Pt=R(({activeAppId:e,apps:t,onClose:r,onToggleApp:o,panelVisible:a,position:n})=>{const[c,p]=l($(!1),"isRendered"),[u,j]=l($(!1),"isVisible"),[z,I]=l($(!1),"sidebarCollapsed"),[,P]=l($(0),"rerender"),{state:H,updateState:C}=Ce(),{resolvedTheme:Y}=_e(),E=l(f(null),"panelDivRef"),N=l(f(!1),"isResizingRef"),L=l(f({height:H.height,width:H.width}),"dimensionsRef"),w=l(f(void 0),"enteringFromRectRef"),U=l(f(void 0),"lastDockedRectRef"),ee=l(f(!1),"previousIsFullscreenRef"),O=l(f(!1),"isExitAnimatingRef"),M=l(f(void 0),"fsTimerRef"),D=H.viewMode==="fullscreen",B=H.viewMode==="wide",te=globalThis.window?.documentPictureInPicture!==void 0,J=l(f(void 0),"pipWindowRef"),Z=l(re(()=>{if(D)return{};const s=globalThis.window?.innerWidth??1920,d=globalThis.window?.innerHeight??1080,m=`${L.current.height/100*d}px`;return n==="left"||n==="right"?{width:`${L.current.width/100*s}px`}:{height:m,left:"50%",transform:"translateX(-50%)",width:B?"calc(100vw - 2rem)":"min(calc(100vw - 2rem), 1280px)"}},[D,B,n,P]),"panelSizeStyle");V(()=>{const s=R(m=>{if(!N.current||!E.current)return;const b=E.current.getBoundingClientRect(),F=window.innerWidth,Q=window.innerHeight,G={...L.current};if(N.current.top){const y=Math.abs(b.bottom-m.clientY);G.height=Ae(y/Q*100,ye,De)}else if(N.current.bottom){const y=Math.abs(m.clientY-b.top);G.height=Ae(y/Q*100,ye,De)}else if(N.current.right){const y=Math.abs(m.clientX-b.left);G.width=Ae(y/F*100,ye,De)}else if(N.current.left){const y=Math.abs(b.right-m.clientX);G.width=Ae(y/F*100,ye,De)}L.current=G,P(y=>y+1)},"handleMouseMove"),d=R(()=>{N.current&&(C({height:L.current.height,width:L.current.width}),N.current=!1)},"handleMouseUp");return globalThis.addEventListener("mousemove",s),globalThis.addEventListener("mouseup",d),()=>{globalThis.removeEventListener("mousemove",s),globalThis.removeEventListener("mouseup",d)}},[C]),Ke(()=>{const s=ee.current;ee.current=D,M.current!==void 0&&(clearTimeout(M.current),M.current=void 0);const d=E.current;if(d)if(D&&!s&&w.current){const m=w.current;w.current=void 0;const b=globalThis.window?.innerWidth??0,F=globalThis.window?.innerHeight??0;d.style.transition="clip-path 0.35s cubic-bezier(0.4, 0, 0.2, 1)",d.style.clipPath=`inset(${m.top}px ${b-m.right}px ${F-m.bottom}px ${m.left}px)`,requestAnimationFrame(()=>{d.style.clipPath="inset(0px 0px 0px 0px)",M.current=setTimeout(()=>{d.style.clipPath="",d.style.transition="",M.current=void 0},380)})}else!D&&s&&!O.current&&(d.style.transition="none",d.style.clipPath="",requestAnimationFrame(()=>{d.style.transition=""}))},[D]),V(()=>{if(a){p(!0);const d=setTimeout(j,16,!0);return()=>clearTimeout(d)}j(!1);const s=setTimeout(p,220,!1);return()=>clearTimeout(s)},[a]);const v=R(async()=>{const s=globalThis.window?.documentPictureInPicture;if(s)try{const d=await s.requestWindow({height:600,width:900});if(J.current=d,ue){const b=d.document.createElement("style");b.textContent=Array.from(ue.cssRules,F=>F.cssText).join(`
|
|
2
|
+
`),d.document.head.append(b)}const m=d.document.createElement("div");m.style.cssText="width:100%;height:100%;display:flex;",Y==="dark"&&(d.document.documentElement.classList.add("dark"),m.classList.add("dark")),d.document.body.style.cssText="margin:0;padding:0;height:100vh;",d.document.body.append(m),ke(i(Mt,{apps:t,initialActiveAppId:e,onClose:R(()=>{d.close()},"onClose")}),m),C({isPip:!0}),d.addEventListener("pagehide",()=>{C({isPip:!1}),J.current=void 0})}catch(d){console.error("[dev-toolbar] PiP activation failed:",d)}},"activatePip");V(()=>{if(!a)return;const s=R(d=>{d.key==="Escape"&&r()},"handleKeyDown");return document.addEventListener("keydown",s),()=>document.removeEventListener("keydown",s)},[a,r]);const k=l(re(()=>t.find(s=>s.id===e),[t,e]),"activeApp");if(!c)return;const S=R(s=>d=>{d.preventDefault(),N.current=s},"startResize");return g(Te,{children:[i("div",{"aria-hidden":"true",class:h("fixed inset-0 z-[2147483646]","transition-opacity duration-200",u&&!D?"opacity-100 pointer-events-auto":"opacity-0 pointer-events-none"),onClick:H.closeOnOutsideClick?r:void 0,role:"presentation"}),g("div",{"aria-label":"DevTools panel","aria-modal":"true",class:h("fixed z-[2147483647] pointer-events-auto antialiased font-mono",D?"inset-0":kt(n),"bg-background overflow-hidden",D?"rounded-none border-0":"rounded-none border border-border","shadow-2xl","transition-panel",!D&&Tt(n),zt(n,u),"flex flex-row"),ref:E,role:"dialog",style:Z,children:[!D&&g(Te,{children:[n!=="top"&&i("div",{"aria-hidden":"true",class:"absolute left-1.5 right-1.5 top-0 h-2.5 -mt-1 cursor-ns-resize z-10 hover:bg-foreground/10 transition-colors",onMouseDown:S({top:!0})}),n==="top"&&i("div",{"aria-hidden":"true",class:"absolute left-1.5 right-1.5 bottom-0 h-2.5 -mb-1 cursor-ns-resize z-10 hover:bg-foreground/10 transition-colors",onMouseDown:S({bottom:!0})}),n==="left"&&i("div",{"aria-hidden":"true",class:"absolute top-1.5 bottom-1.5 right-0 w-2.5 -mr-1 cursor-ew-resize z-10 hover:bg-foreground/10 transition-colors",onMouseDown:S({right:!0})}),n==="right"&&i("div",{"aria-hidden":"true",class:"absolute top-1.5 bottom-1.5 left-0 w-2.5 -ml-1 cursor-ew-resize z-10 hover:bg-foreground/10 transition-colors",onMouseDown:S({left:!0})})]}),g("nav",{"aria-label":"DevTools apps",class:h("flex flex-col shrink-0 overflow-hidden","transition-[width] duration-300 ease-[cubic-bezier(0.4,0,0.2,1)]","bg-accent border-r border-border/60",z?"w-12.5":"w-62.5"),children:[i("div",{class:h("flex items-center shrink-0 border-b border-border/50 h-12",z?"justify-center px-2":"px-3"),children:z?i("span",{"aria-hidden":"true",class:"text-primary font-black text-[0.8rem] select-none",children:"V"}):g("span",{class:"text-[0.6rem] font-bold uppercase tracking-[0.14em] text-muted-foreground select-none",children:[i("span",{"aria-hidden":"true",class:"text-primary/60 mr-1",children:"//"}),"DevTools"]})}),i("div",{class:"flex flex-col flex-1 overflow-y-auto p-2 gap-1 scrollbar-thin-border",children:t.filter(s=>s.component||s.init||s.view?.type==="iframe").map(s=>g("div",{class:"relative group/nav-item",children:[g("button",{"aria-label":s.name,"aria-pressed":e===s.id,class:h("relative flex items-center w-full h-10","border-0 border-l-2 cursor-pointer","transition-all duration-150",z?"justify-center px-0":"gap-2.5 px-3",e===s.id?"border-primary bg-primary/8 text-foreground":"border-transparent bg-transparent text-muted-foreground hover:bg-foreground/6 hover:text-foreground"),onClick:R(()=>{s.id!==e&&o(s.id).catch(console.error)},"onClick"),type:"button",children:[s.icon?i("span",{class:h("size-4 shrink-0 flex items-center justify-center [&_svg]:size-4",e===s.id?"opacity-100":"opacity-65 group-hover/nav-item:opacity-100"),dangerouslySetInnerHTML:{__html:s.icon}}):i("span",{class:"size-4.5 shrink-0 flex items-center justify-center text-[0.65rem] font-bold uppercase select-none",children:s.name.slice(0,2)}),!z&&i("span",{class:"text-[0.8125rem] font-medium truncate leading-none tracking-[-0.01em]",children:s.name})]}),s.notification.state&&i("span",{"aria-hidden":"true",class:h("pointer-events-none absolute top-1.5 rounded-full",z?"right-1.5":"right-2.5","size-1.5",We(s.notification.level))}),z&&i("div",{class:h("absolute left-[calc(100%+0.5rem)] top-1/2 -translate-y-1/2","pointer-events-none z-50 whitespace-nowrap","opacity-0 -translate-x-1 group-hover/nav-item:opacity-100 group-hover/nav-item:translate-x-0","transition-all duration-200 ease-[cubic-bezier(0.23,1,0.32,1)]"),children:i("div",{class:"text-[0.7rem] font-medium bg-card/95 backdrop-blur-[0.625rem] text-foreground/80 px-2.5 py-1 border border-border shadow-md",children:s.name})})]},s.id))}),!z&&i("div",{class:"px-3 py-2.5 border-t border-border/40 shrink-0",children:g("span",{class:"text-[0.58rem] text-muted-foreground/50 leading-none select-none",children:[H.keybindings?.toggle??"Alt+Shift+D"," to toggle"]})})]}),g("div",{class:"flex-1 flex flex-col min-w-0 overflow-hidden bg-accent",children:[g("div",{class:"flex items-center justify-between gap-2 pr-2 min-h-12 shrink-0",children:[g("div",{class:"flex items-center gap-3 min-w-0",children:[i("button",{"aria-label":z?"Expand sidebar":"Collapse sidebar",class:h("flex items-center justify-center size-7 shrink-0","border-0 cursor-pointer bg-transparent","text-muted-foreground hover:text-foreground hover:bg-foreground/7","transition-colors duration-150"),onClick:R(()=>I(s=>!s),"onClick"),type:"button",children:i(ie,{class:h("size-3.5 transition-transform duration-300",!z&&"rotate-180"),size:14,src:$e})}),k?.icon&&i("span",{class:"size-5 flex items-center justify-center [&_svg]:size-5 shrink-0 text-foreground opacity-80",dangerouslySetInnerHTML:{__html:k.icon}}),g("span",{class:"flex items-center gap-1 text-[0.7rem] font-bold uppercase tracking-[0.06em] text-foreground truncate",children:[i("span",{"aria-hidden":"true",class:"text-primary/50 shrink-0",children:"["}),k?.name??"DevTools",i("span",{"aria-hidden":"true",class:"text-primary/50 shrink-0",children:"]"})]})]}),g("div",{class:"flex items-center gap-1 shrink-0",children:[(n==="bottom"||n==="top")&&!D&&i("button",{"aria-label":B?"Switch to container width":"Expand to full width",class:h("flex items-center justify-center size-8","cursor-pointer border-0 bg-transparent","text-muted-foreground hover:text-foreground hover:bg-foreground/7","transition-all duration-200 active:scale-90"),onClick:R(()=>C({viewMode:B?"default":"wide"}),"onClick"),title:B?"Container width":"Full width",type:"button",children:i(ie,{size:13,src:B?At:yt})}),i("button",{"aria-label":D?"Exit fullscreen":"Enter fullscreen",class:h("flex items-center justify-center size-8","cursor-pointer border-0 bg-transparent","text-muted-foreground hover:text-foreground hover:bg-foreground/7","transition-all duration-200 active:scale-90"),onClick:R(()=>{if(D){const s=E.current,d=U.current;if(s&&d){const m=globalThis.window?.innerWidth??0,b=globalThis.window?.innerHeight??0,F=`inset(${d.top}px ${m-d.right}px ${b-d.bottom}px ${d.left}px)`;M.current!==void 0&&(clearTimeout(M.current),M.current=void 0),O.current=!0,s.style.transition="clip-path 0.35s cubic-bezier(0.4, 0, 0.2, 1)",s.style.clipPath="inset(0px 0px 0px 0px)",requestAnimationFrame(()=>{s.style.clipPath=F,M.current=setTimeout(()=>{s.style.clipPath="",s.style.transition="",O.current=!1,M.current=void 0,C({viewMode:"default"})},380)})}else C({viewMode:"default"})}else{if(E.current){const s=E.current.getBoundingClientRect();w.current=s,U.current=s}C({viewMode:"fullscreen"})}},"onClick"),title:D?"Exit fullscreen":"Fullscreen",type:"button",children:i(ie,{size:13,src:D?Dt:wt})}),te&&!D&&i("button",{"aria-label":"Open in Picture-in-Picture window",class:h("flex items-center justify-center size-8","cursor-pointer border-0 bg-transparent",H.isPip?"text-primary hover:bg-primary/7":"text-muted-foreground hover:text-foreground hover:bg-foreground/7","transition-all duration-200 active:scale-90"),onClick:R(()=>{v().then(()=>r()).catch(console.error)},"onClick"),title:"Open in floating window (PiP)",type:"button",children:i(ie,{size:13,src:It})}),i("button",{"aria-label":"Close DevTools panel",class:h("flex items-center justify-center size-8","cursor-pointer border-0 bg-transparent","text-muted-foreground hover:text-foreground hover:bg-foreground/7","transition-all duration-200 active:scale-90"),onClick:r,title:"Close (Esc)",type:"button",children:i(ie,{size:12,src:He})})]})]}),i("div",{class:"devtools-content-scroll scrollbar-thin-border flex-1 overflow-auto min-h-0 bg-background",children:k?i(Le,{app:k},k.id):g("div",{class:"flex flex-col items-center justify-center h-full gap-7 p-8 select-none",children:[g("div",{class:"flex flex-col items-center gap-3",children:[i("div",{class:"size-14 border border-primary/25 bg-primary/5 flex items-center justify-center",children:i(ie,{class:"text-primary/45",size:26,src:xt})}),g("div",{class:"text-center space-y-1",children:[i("p",{class:"text-[0.8rem] font-medium text-foreground/65",children:"No tool selected"}),i("p",{class:"text-[0.7rem] text-muted-foreground",children:"Choose a tool from the sidebar to get started"})]})]}),t.length>0&&g("div",{class:"w-full max-w-[220px]",children:[g("p",{class:"text-[0.58rem] font-bold uppercase tracking-[0.12em] text-muted-foreground/60 mb-1.5",children:[i("span",{class:"text-primary/50",children:"// "}),"available"]}),i("div",{class:"flex flex-col gap-0.5",children:t.map(s=>g("button",{class:h("flex items-center gap-2.5 px-3 py-2","border border-border/40 bg-card/50","hover:border-primary/30 hover:bg-primary/4","cursor-pointer transition-all duration-150 text-left"),onClick:R(()=>o(s.id).catch(console.error),"onClick"),type:"button",children:[s.icon?i("span",{class:"size-3.5 shrink-0 flex items-center justify-center [&_svg]:size-3.5 text-muted-foreground",dangerouslySetInnerHTML:{__html:s.icon}}):i("span",{class:"size-3.5 text-[0.5rem] font-bold text-muted-foreground shrink-0 text-center",children:s.name.slice(0,2).toUpperCase()}),i("span",{class:"text-[0.75rem] font-medium text-muted-foreground",children:s.name})]},s.id))})]})]})})]})]})]})},"DevPanel"),jt="data:image/svg+xml;charset=utf-8,%3Csvg%20class%3D%22lucide%20lucide-alert-triangle%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20%3E%20%3Cpath%20d%3D%22m21.73%2018-8-14a2%202%200%200%200-3.48%200l-8%2014A2%202%200%200%200%204%2021h16a2%202%200%200%200%201.73-3%22%20%2F%3E%20%3Cpath%20d%3D%22M12%209v4%22%20%2F%3E%20%3Cpath%20d%3D%22M12%2017h.01%22%20%2F%3E%20%3C%2Fsvg%3E";var Et=Object.defineProperty,Me=_((e,t)=>Et(e,"name",{value:t,configurable:!0}),"n");const Ft=Me(()=>{const[e,t]=l($(0),"errorCount"),[r,o]=l($(!1),"isOverlayOpen");if(V(()=>{const c=Me(()=>{const u=globalThis.__v_o_error_history,j=Array.isArray(u)?u.length:0;t(j);const z=globalThis.__v_o__current;if(z?.parentNode){const I=z.shadowRoot?.querySelector("#__v_o__root");o(!!I&&!I.classList.contains("hidden"))}else o(!1)},"sync"),p=setInterval(c,300);return c(),()=>clearInterval(p)},[]),e===0)return;const a=Me(()=>{const c=globalThis.__v_o__current;if(!c?.parentNode)return;const p=c.shadowRoot?.querySelector("#__v_o__root");p?.classList.contains("hidden")?(p.classList.remove("hidden"),o(!0)):typeof c.close=="function"&&(c.close(),o(!1))},"handleClick"),n=`${e} error${e===1?"":"s"} – click to ${r?"hide":"show"} overlay`;return g(Te,{children:[i("div",{"aria-hidden":"true",class:"w-px h-5 bg-primary/20 shrink-0 mx-0.5"}),i("button",{"aria-label":n,class:h("relative flex justify-center items-center size-6","border-0","whitespace-nowrap no-underline p-0 m-0","cursor-pointer","bg-transparent text-destructive","transition-all duration-150","hover:bg-destructive/8","active:scale-[0.94]","group-data-[vertical]/panel:rotate-[-90deg]"),onClick:a,title:n,type:"button",children:g("div",{class:"relative size-6 select-none flex items-center justify-center",children:[i(ie,{size:16,src:jt}),i("span",{class:"absolute -top-0.5 -right-1 min-w-3.5 h-3.5 px-0.5 rounded-full bg-destructive text-white text-[9px] font-bold leading-none flex items-center justify-center border border-background",children:e>9?"9+":e})]})})]})},"ViteOverlayButton");var Rt=Object.defineProperty,St=_((e,t)=>Rt(e,"name",{value:t,configurable:!0}),"o$2");const _t=St(()=>{const{apps:e}=Ve();return i("div",{class:"flex items-center pointer-events-auto",id:"__v_dt__bar",children:g("div",{class:"flex flex-row items-center justify-start gap-1",id:"__v_dt__bar_container",children:[e.map(t=>i(bt,{app:t},t.id)),i(Ft,{})]})})},"ToolbarBar"),Nt="data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQ4IDI5MSIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gPGRlZnM+IDxsaW5lYXJHcmFkaWVudCBpZD0iYSIgZ3JhZGllbnRVbml0cz0ib2JqZWN0Qm91bmRpbmdCb3giIHgxPSIwIiB5MT0iMCIgeDI9IjEiIHkyPSIxIj4gPHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNvbG9yPSJyZWQiPiA8YW5pbWF0ZSBhdHRyaWJ1dGVOYW1lPSJzdG9wLWNvbG9yIiB2YWx1ZXM9InJlZDtwdXJwbGU7Ymx1ZTtyZWQ7IiBkdXI9IjIwcyIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIC8+IDwvc3RvcD4gPHN0b3Agb2Zmc2V0PSIwLjUiIHN0b3AtY29sb3I9InB1cnBsZSI+IDxhbmltYXRlIGF0dHJpYnV0ZU5hbWU9InN0b3AtY29sb3IiIHZhbHVlcz0icHVycGxlO2JsdWU7cmVkO3B1cnBsZTsiIGR1cj0iMjBzIiByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSIgLz4gPC9zdG9wPiA8c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9ImJsdWUiPiA8YW5pbWF0ZSBhdHRyaWJ1dGVOYW1lPSJzdG9wLWNvbG9yIiB2YWx1ZXM9ImJsdWU7cmVkO3B1cnBsZTtibHVlOyIgZHVyPSIyMHMiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiAvPiA8L3N0b3A+IDxhbmltYXRlVHJhbnNmb3JtIGF0dHJpYnV0ZU5hbWU9ImdyYWRpZW50VHJhbnNmb3JtIiB0eXBlPSJyb3RhdGUiIGZyb209IjAgLjUgLjUiIHRvPSIzNjAgLjUgLjUiIGR1cj0iMTBzIiByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSIgLz4gPC9saW5lYXJHcmFkaWVudD4gPGxpbmVhckdyYWRpZW50IGlkPSJvdmVybGF5R3JhZGllbnRBIiB4MT0iNjIiIHkxPSI0Mi4yMjUzIiB4Mj0iNjIiIHkyPSIyOTAuMjI1IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+IDxzdG9wIG9mZnNldD0iMC4zNCIgc3RvcC1vcGFjaXR5PSIwLjUiIC8+IDxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0id2hpdGUiIHN0b3Atb3BhY2l0eT0iMCIgLz4gPC9saW5lYXJHcmFkaWVudD4gPGxpbmVhckdyYWRpZW50IGlkPSJvdmVybGF5R3JhZGllbnRCIiB4MT0iMTg2IiB5MT0iMCIgeDI9IjE4NiIgeTI9IjI0OCIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPiA8c3RvcCBzdG9wLWNvbG9yPSJ3aGl0ZSIgc3RvcC1vcGFjaXR5PSIwIiAvPiA8c3RvcCBvZmZzZXQ9IjAuNjk1IiBzdG9wLW9wYWNpdHk9IjAuNSIgLz4gPC9saW5lYXJHcmFkaWVudD4gPC9kZWZzPiA8cGF0aCBkPSJNMCAxNjYuMjI1QzAgMjM0LjcwOSA1NS41MTY3IDI5MC4yMjUgMTI0IDI5MC4yMjVWNDIuMjI1M0M1NS41MTY3IDQyLjIyNTMgMCA5Ny43NDIgMCAxNjYuMjI1WiBNMjQ4IDEyNEMyNDggMTkyLjQ4MyAxOTIuNDgzIDI0OCAxMjQgMjQ4VjBDMTkyLjQ4MyAwIDI0OCA1NS41MTY3IDI0OCAxMjRaIiBmaWxsPSJ1cmwoI2EpIiAvPiA8cGF0aCBkPSJNMCAxNjYuMjI1QzAgMjM0LjcwOSA1NS41MTY3IDI5MC4yMjUgMTI0IDI5MC4yMjVWNDIuMjI1M0M1NS41MTY3IDQyLjIyNTMgMCA5Ny43NDIgMCAxNjYuMjI1WiIgZmlsbD0idXJsKCNvdmVybGF5R3JhZGllbnRBKSIgLz4gPHBhdGggZD0iTTI0OCAxMjRDMjQ4IDE5Mi40ODMgMTkyLjQ4MyAyNDggMTI0IDI0OFYwQzE5Mi40ODMgMCAyNDggNTUuNTE2NyAyNDggMTI0WiIgZmlsbD0idXJsKCNvdmVybGF5R3JhZGllbnRCKSIgLz4gPGNpcmNsZSBjeD0iMTI0IiBjeT0iMTQ3IiByPSI1MCIgZmlsbD0id2hpdGUiIC8+IDwvc3ZnPg==",Vt="data:image/svg+xml;charset=utf-8,%3Csvg%20class%3D%22lucide%20lucide-pin%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20%3E%20%3Cpath%20d%3D%22M12%2017v5%22%20%2F%3E%20%3Cpath%20d%3D%22M9%2010.76a2%202%200%200%201-1.11%201.79l-1.78.9A2%202%200%200%200%205%2015.24V16a1%201%200%200%200%201%201h12a1%201%200%200%200%201-1v-.76a2%202%200%200%200-1.11-1.79l-1.78-.9A2%202%200%200%201%2015%2010.76V7a1%201%200%200%201%201-1%202%202%200%200%200%200-4H8a2%202%200%200%200%200%204%201%201%200%200%201%201%201z%22%20%2F%3E%20%3C%2Fsvg%3E";var $t=Object.defineProperty,fe=_((e,t)=>$t(e,"name",{value:t,configurable:!0}),"o$1");const Ht=fe((e,t)=>{switch(t){case"left":return{left:`${e.right+10}px`,top:`${e.top+e.height/2}px`,transform:"translateY(-50%)"};case"right":return{right:`${globalThis.window?globalThis.window.innerWidth-e.left+10:0}px`,top:`${e.top+e.height/2}px`,transform:"translateY(-50%)"};case"top":return{left:`${e.left+e.width/2}px`,top:`${e.bottom+10}px`,transform:"translateX(-50%)"};default:return{bottom:`${globalThis.window?globalThis.window.innerHeight-e.top+10:0}px`,left:`${e.left+e.width/2}px`,transform:"translateX(-50%)"}}},"getTooltipStyle"),Lt=fe(({position:e})=>{const{hoveredApp:t,hoveredAppRect:r,pinTooltip:o,setHoveredApp:a}=ze(),n=l(f(null),"overlayRef"),c=l(f(me()),"helpersRef"),[p,u]=l($(!1),"isRendered"),[j,z]=l($(!1),"isVisible"),I=!!(t?.tooltip&&r);if(V(()=>{if(I){u(!0);const N=setTimeout(z,16,!0);return()=>clearTimeout(N)}z(!1);const E=setTimeout(u,200,!1);return()=>clearTimeout(E)},[I]),!p||!t?.tooltip||!r)return;const P=t.tooltip,H=Ht(r,e),C=e==="left"||e==="right",Y=fe(()=>{const E=n.current?.getBoundingClientRect();E&&o(t,E.left,E.top),a(void 0)},"handlePin");return g("div",{"aria-label":`${t.name} quick preview`,class:h("fixed z-[2147483647] pointer-events-auto","antialiased toolbar-font","w-auto max-w-[300px]","bg-background border border-border shadow-2xl","transition-[opacity,transform] duration-200 ease-[cubic-bezier(0.23,1,0.32,1)]",j?"opacity-100 translate-y-0 scale-100":h("opacity-0 scale-[0.97]",e==="bottom"&&"translate-y-1",e==="top"&&"-translate-y-1",C&&"translate-x-[-2px]")),onMouseEnter:fe(()=>a(t,r),"onMouseEnter"),onMouseLeave:fe(()=>a(void 0),"onMouseLeave"),ref:n,role:"tooltip",style:H,children:[g("div",{class:"flex items-center justify-between gap-2 px-3 py-2 border-b border-border/60 bg-foreground/3",children:[g("div",{class:"flex items-center gap-2 min-w-0",children:[i("span",{"aria-hidden":"true",class:"size-1.5 rounded-full bg-primary shrink-0"}),i("span",{class:"text-[0.6rem] font-bold uppercase tracking-[0.1em] text-muted-foreground truncate",children:t.name})]}),i("button",{"aria-label":`Pin ${t.name} tooltip`,class:h("size-5 flex items-center justify-center shrink-0","border-0 bg-transparent cursor-pointer p-0","text-muted-foreground/60 hover:text-primary","transition-colors duration-150"),onClick:Y,title:"Pin (keep visible)",type:"button",children:i(ie,{size:11,src:Vt})})]}),i("div",{class:"p-3",children:i(P,{helpers:c.current})})]})},"AppTooltipOverlay");var Wt=Object.defineProperty,Ie=_((e,t)=>Wt(e,"name",{value:t,configurable:!0}),"o");const Bt=Ie(e=>{switch(e){case"left":return{left:"0",top:"50%",transform:"translateX(24px) translateY(-50%)"};case"right":return{left:"0",top:"50%",transform:"translateX(calc(-100% - 24px)) translateY(-50%)"};case"top":return{left:"50%",top:"0",transform:"translateX(-50%) translateY(24px)"};default:return{left:"50%",top:"0",transform:"translateX(-50%) translateY(calc(-100% - 24px))"}}},"getHintStyle"),Zt=Ie(({position:e})=>{const t="absolute w-2.5 h-2.5 bg-card border-border";switch(e){case"left":return i("div",{"aria-hidden":"true",class:h(t,"left-[-5px] top-1/2 -translate-y-1/2 rotate-45 border-b border-l")});case"right":return i("div",{"aria-hidden":"true",class:h(t,"right-[-5px] top-1/2 -translate-y-1/2 rotate-45 border-t border-r")});case"top":return i("div",{"aria-hidden":"true",class:h(t,"top-[-5px] left-1/2 -translate-x-1/2 rotate-45 border-t border-l")});default:return i("div",{"aria-hidden":"true",class:h(t,"bottom-[-5px] left-1/2 -translate-x-1/2 rotate-45 border-b border-r")})}},"Arrow"),Gt=[{icon:"⊙",text:"Click logo to open panel"},{icon:"⠿",text:"Drag pill to reposition"},{icon:"⌨",text:"Alt+Shift+D to toggle"}],Yt=Ie(({onDismiss:e,position:t})=>{const[r,o]=l($(!1),"visible"),a=l(f(void 0),"dismissTimeoutRef");V(()=>{const c=setTimeout(o,600,!0);return()=>clearTimeout(c)},[]),V(()=>()=>{a.current!==void 0&&(clearTimeout(a.current),a.current=void 0)},[]);const n=Ie(()=>{o(!1),a.current=setTimeout(e,180)},"handleDismiss");return g("div",{"aria-hidden":!r,"aria-label":"DevTools quick start",class:h("absolute pointer-events-auto","w-[240px]","bg-card border border-border","shadow-xl","p-3","font-mono","transition-all duration-200",r?"opacity-100 scale-100":"opacity-0 scale-95 pointer-events-none"),style:Bt(t),children:[i(Zt,{position:t}),g("p",{class:"flex items-center gap-1.5 mb-2.5",children:[i("span",{"aria-hidden":"true",class:"text-primary text-[0.6rem]",children:"▶"}),i("span",{class:"text-[0.6rem] font-bold uppercase tracking-[0.12em] text-foreground",children:"Quick start"})]}),i("ul",{class:"space-y-1.5 mb-3 list-none p-0 m-0",children:Gt.map(({icon:c,text:p})=>g("li",{class:"flex items-center gap-2 text-[0.7rem] text-muted-foreground",children:[i("span",{"aria-hidden":"true",class:"text-primary shrink-0 w-3 text-center leading-none",children:c}),p]},p))}),i("button",{class:h("w-full h-6 text-[0.6rem] font-bold uppercase tracking-[0.1em]","border border-primary/30 bg-primary/6","text-primary cursor-pointer","hover:bg-primary/12 hover:border-primary/50","transition-all duration-150 active:scale-[0.98]"),onClick:n,tabIndex:r?void 0:-1,type:"button",children:"Got it"})]})},"FirstVisitHint"),Ot="data:image/svg+xml;charset=utf-8,%3Csvg%20class%3D%22lucide%20lucide-pin-off%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20%3E%20%3Cpath%20d%3D%22M12%2017v5%22%20%2F%3E%20%3Cpath%20d%3D%22M15%209.34V7a1%201%200%200%201%201-1%202%202%200%200%200%200-4H7.89%22%20%2F%3E%20%3Cpath%20d%3D%22m2%202%2020%2020%22%20%2F%3E%20%3Cpath%20d%3D%22M9%209v1.76a2%202%200%200%201-1.11%201.79l-1.78.9A2%202%200%200%200%205%2015.24V16a1%201%200%200%200%201%201h11%22%20%2F%3E%20%3C%2Fsvg%3E";var Xt=Object.defineProperty,pe=_((e,t)=>Xt(e,"name",{value:t,configurable:!0}),"i");const Jt=pe(({onMove:e,onUnpin:t,pinned:r})=>{const o=l(f(null),"cardRef"),a=l(f(null),"headerRef"),n=l(f({x:r.initialX,y:r.initialY}),"posRef"),c=l(f(void 0),"dragRef"),p=l(f(me()),"helpersRef"),u=l(f(e),"onMoveRef"),j=l(f(r.id),"pinnedIdRef");u.current=e,j.current=r.id,V(()=>{const P="transform 110ms cubic-bezier(0.25,0.46,0.45,0.94)",H=pe(Y=>{if(!c.current||!o.current)return;const E=globalThis.window?.innerWidth??9999,N=globalThis.window?.innerHeight??9999,{cardH:L,cardW:w}=c.current,U=Math.min(80,w),ee=Math.min(36,L);let O=c.current.origX+(Y.clientX-c.current.startX),M=c.current.origY+(Y.clientY-c.current.startY);O=Math.max(U-w,Math.min(E-U,O)),M=Math.max(ee-L,Math.min(N-ee,M));const D=[0,E-w,U-w,E-U],B=[0,N-L,ee-L,N-ee];let te=O,J=M;for(const Z of D)if(Math.abs(O-Z)<28){te=Z;break}for(const Z of B)if(Math.abs(M-Z)<28){J=Z;break}o.current.style.transition=te!==O||J!==M?P:"",o.current.style.transform=`translate(${te}px, ${J}px)`,n.current={x:te,y:J}},"handleMove"),C=pe(()=>{c.current&&(c.current=void 0,o.current&&(o.current.style.transition=""),a.current&&(a.current.style.cursor=""),u.current(j.current,n.current.x,n.current.y))},"handleUp");return document.addEventListener("mousemove",H),document.addEventListener("mouseup",C),()=>{document.removeEventListener("mousemove",H),document.removeEventListener("mouseup",C)}},[]);const z=r.app.tooltip;if(!z)return;const I=pe(P=>{P.button===0&&(c.current={cardH:o.current?.offsetHeight??200,cardW:o.current?.offsetWidth??300,origX:n.current.x,origY:n.current.y,startX:P.clientX,startY:P.clientY},a.current&&(a.current.style.cursor="grabbing"),P.preventDefault())},"handleDragStart");return g("div",{"aria-label":`${r.app.name} pinned tooltip`,class:h("fixed z-[2147483647] pointer-events-auto antialiased toolbar-font","w-auto max-w-[300px]","bg-background border border-primary/40 shadow-2xl"),ref:o,style:{left:0,top:0,transform:`translate(${n.current.x}px, ${n.current.y}px)`},children:[g("div",{class:h("flex items-center justify-between gap-2 px-3 py-2","border-b border-primary/20 bg-primary/4","select-none cursor-grab"),onMouseDown:I,ref:a,children:[g("div",{class:"flex items-center gap-2 min-w-0",children:[i("span",{"aria-hidden":"true",class:"size-1.5 rounded-full bg-primary shrink-0"}),i("span",{class:"text-[0.6rem] font-bold uppercase tracking-[0.1em] text-primary/70 truncate",children:r.app.name})]}),i("button",{"aria-label":`Unpin ${r.app.name}`,class:h("size-5 flex items-center justify-center shrink-0","border-0 bg-transparent cursor-pointer p-0","text-muted-foreground/50 hover:text-destructive","transition-colors duration-150"),onClick:pe(()=>t(r.id),"onClick"),onMouseDown:pe(P=>P.stopPropagation(),"onMouseDown"),title:"Unpin",type:"button",children:i(ie,{size:11,src:Ot})})]}),i("div",{class:"p-3",children:i(z,{helpers:p.current})})]})},"PinnedTooltipCard");var Ut=Object.defineProperty,ce=_((e,t)=>Ut(e,"name",{value:t,configurable:!0}),"p");const Fe="__v_dt__pinned_tooltips",Qt=ce((e,t,r,o,a)=>{const n=t*o/100,c=r*a/100,p=o/4;switch(e){case"bottom":return n<p?"bottom-left":n>o-p?"bottom-right":"bottom-center";case"left":return c<a/2?"top-left":"bottom-left";case"right":return c<a/2?"top-right":"bottom-right";case"top":return n<p?"top-left":n>o-p?"top-right":"top-center";default:return"bottom-center"}},"computePlacement"),qt=ce(({activeAppId:e,apps:t,onClearNotification:r,onRegisterApp:o,onSetNotification:a,onToggleApp:n,onUnregisterApp:c})=>{const p=l(f(null),"anchorRef"),u=l(f(null),"panelRef"),j=l(f(void 0),"leaveTimerRef"),{resolvedTheme:z}=_e(),{state:I,updateState:P}=Ce(),{closePanel:H,panelVisible:C,togglePanelVisible:Y}=pt(),{anchorStyle:E,bringUp:N,isDragging:L,isHidden:w,isVertical:U,onPointerDown:ee,panelStyle:O}=mt(u),[M,D]=l($(void 0),"hoveredApp"),[B,te]=l($(void 0),"hoveredAppRect"),J=l(f(new Map),"pinPositionsRef"),Z=de(x=>{try{const T=x.map(A=>{const X=J.current.get(A.id);return{appId:A.app.id,x:X?.x??A.initialX,y:X?.y??A.initialY}});localStorage.setItem(Fe,JSON.stringify(T))}catch{}},[]),[v,k]=l($([]),"pinnedTooltips"),S=l(f([]),"pinnedTooltipsRef");S.current=v;const s=de((x,T,A)=>{const X=`${x.id}-${Date.now()}`;k(ae=>{const ve=[...ae,{app:x,id:X,initialX:T,initialY:A}];return Z(ve),ve})},[Z]),d=de(x=>{k(T=>{const A=T.filter(X=>X.id!==x);return J.current.delete(x),Z(A),A})},[Z]),m=de((x,T,A)=>{J.current.set(x,{x:T,y:A}),Z(S.current)},[Z]),b=l(f(void 0),"storedPinsRef"),F=l(f(new Set),"restoredAppIdsRef");V(()=>{if(t.length===0)return;if(b.current===void 0)try{const A=localStorage.getItem(Fe);b.current=A?JSON.parse(A):[]}catch{b.current=[]}const x=b.current;if(x.length===0)return;const T=[];for(const A of x){if(F.current.has(A.appId))continue;const X=t.find(ae=>ae.id===A.appId&&ae.tooltip);X&&(F.current.add(A.appId),T.push({app:X,id:`${X.id}-restored-${Date.now()}-${Math.random().toString(36).slice(2)}`,initialX:A.x,initialY:A.y}))}T.length>0&&k(A=>[...A,...T])},[t]),V(()=>()=>{j.current!==void 0&&clearTimeout(j.current)},[]);const Q=de((x,T)=>{j.current!==void 0&&(clearTimeout(j.current),j.current=void 0),x?(D(x),te(T)):j.current=setTimeout(()=>{D(void 0),te(void 0),j.current=void 0},180)},[]),G=l(f(t),"appsRef");G.current=t;const y=l(f(C),"panelVisibleRef");y.current=C;const se=l(f(e),"activeAppIdRef");se.current=e;const q=l(f(n),"onToggleAppRef");q.current=n;const ne=l(re(()=>{const x=globalThis.window?.innerWidth??1920,T=globalThis.window?.innerHeight??1080;return Qt(I.position,I.left,I.top,x,T)},[I.left,I.position,I.top]),"placement"),oe=de(async x=>{const T=y.current,A=se.current,X=G.current.find(ae=>ae.id===x);if(X?.onClick??X?.onDeactivate){await q.current(x);return}if(x===A&&T){await q.current(x),P({open:!1,viewMode:"default"});return}x!==A&&await q.current(x),T||P({open:!0})},[P]),le={activeAppId:e,apps:t,clearNotification:r,hoveredApp:M,hoveredAppRect:B,isDragging:L,isVisible:C,pinnedTooltips:v,pinTooltip:s,placement:ne,registerApp:o,setDragging:ce(()=>{},"setDragging"),setHoveredApp:Q,setNotification:a,setPlacement:ce(()=>{},"setPlacement"),setVisible:ce(x=>P({open:x}),"setVisible"),toggleApp:oe,unpinTooltip:d,unregisterApp:c};if(!(!I.preferShowFloatingPanel&&!C))return i(Ne.Provider,{value:le,children:g("div",{class:h(z==="dark"&&"dark"),style:{display:"contents"},children:[g("div",{class:h("fixed z-[2147483647]","pointer-events-auto","origin-center","transition-[left_0.3s_cubic-bezier(0.4,0,0.2,1),top_0.3s_cubic-bezier(0.4,0,0.2,1)]","data-[dragging]:transition-none!","group","toolbar-font text-[13px]! leading-[1.6]! antialiased box-border [&_*]:box-border print:hidden",I.reduceMotion&&"transition-none! animate-none! [&_*]:transition-none! [&_*]:animate-none!"),"data-dragging":L?"":void 0,"data-placement":ne,id:"__v_dt__root",onMouseMove:N,ref:p,style:E,children:[g("div",{class:h("group/panel","absolute left-0 top-0","flex flex-row justify-start items-center","gap-1 p-1","box-border","overflow-hidden","rounded-none","text-foreground select-none",L?"cursor-grabbing":"cursor-grab","bg-background border-0",U?"shadow-pill-vertical!":"shadow-pill",w?"max-w-12!":"","transition-pill"),"data-vertical":U||void 0,onPointerDown:ce(x=>{I.isFirstVisit&&P({isFirstVisit:!1}),ee(x)},"onPointerDown"),ref:u,style:O,children:[i("button",{"aria-label":"Toggle devtools panel",class:h("size-8 flex justify-center items-center shrink-0","cursor-pointer p-0 m-0 border-0","bg-transparent","transition-all duration-150","hover:bg-primary/8 active:scale-[0.95]","group-data-[vertical]/panel:rotate-[-90deg]",C?"opacity-100":"opacity-60"),onClick:ce(x=>{x.stopPropagation(),I.isFirstVisit&&P({isFirstVisit:!1}),Y()},"onClick"),title:"Toggle devtools panel",type:"button",children:i("img",{alt:"Visulima",class:"size-6",src:Nt})}),i("div",{"aria-hidden":"true",class:h("w-px h-5 bg-primary/20 shrink-0",w&&"hidden")}),i("div",{class:h("px-0.5",w&&"hidden"),children:i(_t,{})})]}),I.isFirstVisit&&i(Yt,{onDismiss:ce(()=>P({isFirstVisit:!1}),"onDismiss"),position:I.position})]}),i(Pt,{activeAppId:e,apps:t,onClose:H,onToggleApp:n,panelVisible:C,position:I.position}),i(Lt,{position:I.position}),v.map(x=>i(Jt,{onMove:m,onUnpin:d,pinned:x},x.id))]})})},"ToolbarContainer");var Kt=Object.defineProperty,Be=_((e,t)=>Kt(e,"name",{value:t,configurable:!0}),"r");const er=Be((e,t)=>{const r=Re(),o=Je();if(!o)throw new Error("Global hook not initialized");return{clearNotification(a){e.clearNotification(a)},async closeApp(){const a=e.getActiveApp();a&&await e.toggleApp(a.id)},getActiveApp(){return e.getActiveApp()?.id},getApps(){return e.getApps()},getSettings(){return Se()},hide(){t.hide()},hook:o,notify(a,n){e.setNotification(a,!0,n)},async openApp(a){await e.toggleApp(a)},registerApp(a){e.registerApp(a)},rpc:new Proxy({},{get(a,n){return(...c)=>r.callServer(n,...c)}}),setAppActive(a,n){e.setAppActive(a,n)},show(){t.show()},toggle(){t.toggle()},unregisterApp(a){e.unregisterApp(a)},updateSettings(a){Xe(a)},version:"0.0.0"}},"createGlobalAPI"),tr=Be(e=>{globalThis.window!==void 0&&(globalThis.__VISULIMA_DEVTOOLS__=e)},"setupGlobalAPI");var rr=Object.defineProperty,W=_((e,t)=>rr(e,"name",{value:t,configurable:!0}),"t");class ir extends HTMLElement{static{_(this,"DevToolbar")}static{W(this,"DevToolbar")}appManager;hasBeenInitialized=!1;renderRoot=void 0;constructor(){super(),this.attachShadow({mode:"open"}),this.appManager=new nt}connectedCallback(){if(document.querySelectorAll("dev-toolbar").length>1){console.warn("[dev-toolbar] Only one instance is allowed. Removing duplicate."),this.remove();return}this.hasBeenInitialized&&this.shadowRoot&&!this.renderRoot&&this.render()}disconnectedCallback(){this.renderRoot&&(ke(null,this.renderRoot),this.renderRoot=void 0)}init(){if(this.hasBeenInitialized)return;this.hasBeenInitialized=!0;const t=Ue(n=>{this.appManager.registerApp(n),this.render()},(n,c)=>{Qe().addEvent(n,c)}),r=er({clearNotification:W(n=>{this.appManager.clearNotification(n),this.render()},"clearNotification"),getActiveApp:W(()=>this.appManager.getActiveApp(),"getActiveApp"),getApps:W(()=>this.appManager.getAllApps(),"getApps"),registerApp:W(n=>{this.appManager.registerApp(n),this.render()},"registerApp"),setAppActive:W((n,c)=>{this.appManager.setAppActive(n,c),this.render()},"setAppActive"),setNotification:W((n,c,p)=>{this.appManager.setNotification(n,c,p),this.render()},"setNotification"),toggleApp:W(n=>this.appManager.toggleApp(n),"toggleApp"),unregisterApp:W(n=>{this.appManager.unregisterApp(n),this.render()},"unregisterApp")},{hide:W(()=>this.setToolbarVisible(!1),"hide"),show:W(()=>this.setToolbarVisible(!0),"show"),toggle:W(()=>{const n=this.isHidden();this.setToolbarVisible(!n)},"toggle")});tr(r),t.emit("devtools:init");const o=Se(),a=this.appManager.getAllApps().find(n=>n.defaultOpen);a&&!this.appManager.getActiveApp()&&this.appManager.openApp(a.id).catch(n=>{console.error(`[dev-toolbar] Failed to auto-open defaultOpen app ${a.id}:`,n)}),this.render(),this.setupEventListeners(),o.defaultVisible&&this.setToolbarVisible(!0)}isHidden(){return this.shadowRoot.querySelector("#__v_dt__root")?.hasAttribute("data-hidden")??!0}setToolbarVisible(t){const r=this.shadowRoot.querySelector("#__v_dt__root");r&&(t?delete r.dataset.hidden:r.dataset.hidden=""),this.render()}registerApp(t,r=!1){this.appManager.registerApp(t,r),this.render()}getAppManager(){return this.appManager}render(){const t=this.appManager.getAllApps(),r=this.shadowRoot;ue&&(r.adoptedStyleSheets=[ue]);let o=r.querySelector("style");o||(o=document.createElement("style"),o.textContent=`
|
|
3
3
|
:host {
|
|
4
4
|
all: initial;
|
|
5
5
|
/* Cover the full viewport so the host establishes a stacking context
|
|
@@ -18,4 +18,4 @@ var Xe=Object.defineProperty;var N=(e,t)=>Xe(e,"name",{value:t,configurable:!0})
|
|
|
18
18
|
display: none;
|
|
19
19
|
}
|
|
20
20
|
}
|
|
21
|
-
`,r.append(o)),this.renderRoot||(this.renderRoot=document.createElement("div"),r.append(this.renderRoot));const a=this.appManager.getActiveApp()?.id;
|
|
21
|
+
`,r.append(o)),this.renderRoot||(this.renderRoot=document.createElement("div"),r.append(this.renderRoot));const a=this.appManager.getActiveApp()?.id;ke(i(qt,{activeAppId:a,apps:t,onClearNotification:W(n=>{this.appManager.clearNotification(n),this.render()},"onClearNotification"),onRegisterApp:W(n=>{this.render()},"onRegisterApp"),onSetNotification:W((n,c,p)=>{this.appManager.setNotification(n,c,p),this.render()},"onSetNotification"),onToggleApp:W(async n=>{await this.appManager.toggleApp(n),this.render()},"onToggleApp"),onUnregisterApp:W(n=>{this.appManager.unregisterApp(n),this.render()},"onUnregisterApp")}),this.renderRoot)}setupEventListeners(){document.addEventListener("keyup",t=>{if(t.key!=="Escape"||this.isHidden())return;const r=this.appManager.getActiveApp();r?this.appManager.toggleApp(r.id).then(()=>{this.render()}).catch(o=>{console.error("[dev-toolbar] Error toggling app:",o)}):this.setToolbarVisible(!1)})}}if(globalThis.window!==void 0&&(customElements.get("dev-toolbar")||customElements.define("dev-toolbar",ir),!customElements.get("dev-toolbar-app-canvas"))){class e extends HTMLElement{static{_(this,"n")}static{W(this,"DevToolbarAppCanvas")}constructor(){super(),this.attachShadow({mode:"open"})}}customElements.define("dev-toolbar-app-canvas",e)}export{ir as DevToolbar,ue as sharedToolbarStylesheet};
|
package/dist/types/rpc.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { ViteDevServer } from "vite";
|
|
2
|
+
import type { StaticAsset } from "../rpc/functions/assets.d.ts";
|
|
2
3
|
import type { SerializableModuleNode } from "../rpc/functions/module-graph.d.ts";
|
|
3
4
|
import type { TailwindConfigResult } from "../rpc/functions/tailwind-config.d.ts";
|
|
4
5
|
/**
|
|
@@ -14,6 +15,10 @@ export interface ServerFunctions {
|
|
|
14
15
|
* Get module dependency graph
|
|
15
16
|
*/
|
|
16
17
|
getModuleGraph: () => Promise<SerializableModuleNode[]>;
|
|
18
|
+
/**
|
|
19
|
+
* Get all static assets from the public directory
|
|
20
|
+
*/
|
|
21
|
+
getStaticAssets: () => Promise<StaticAsset[]>;
|
|
17
22
|
/**
|
|
18
23
|
* Get full Tailwind CSS theme (default + user overrides)
|
|
19
24
|
*/
|
|
@@ -27,8 +32,9 @@ export interface ServerFunctions {
|
|
|
27
32
|
* @param file File path
|
|
28
33
|
* @param line Line number (1-based)
|
|
29
34
|
* @param column Column number (1-based)
|
|
35
|
+
* @param editor Editor override (e.g. "code", "webstorm") — empty string means auto-detect
|
|
30
36
|
*/
|
|
31
|
-
openInEditor: (file: string, line?: number, column?: number) => Promise<void>;
|
|
37
|
+
openInEditor: (file: string, line?: number, column?: number, editor?: string) => Promise<void>;
|
|
32
38
|
/**
|
|
33
39
|
* Read file contents
|
|
34
40
|
* @param path File path
|
|
@@ -95,3 +101,4 @@ export interface ClientRPCContext {
|
|
|
95
101
|
*/
|
|
96
102
|
registerFunction: <K extends keyof ClientFunctions>(name: K, function_: ClientFunctions[K]) => void;
|
|
97
103
|
}
|
|
104
|
+
export { type StaticAsset } from "../rpc/functions/assets.d.ts";
|
package/dist/ui/index.d.ts
CHANGED
package/dist/ui/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{Alert as e,AlertDescription as t,AlertTitle as a}from"../packem_shared/Alert-D2CvX4fw.js";import{default as f}from"../packem_shared/Badge-BEgU04nl.js";import{default as s}from"../packem_shared/Button-Bkx66Co7.js";import{Card as x,CardContent as m,CardDescription as i,CardFooter as n,CardHeader as T,CardTitle as u}from"../packem_shared/Card-CJa4vHVc.js";import{default as g}from"../packem_shared/Icon-B6UHkC0o.js";import{default as c}from"../packem_shared/Input-Cs6aduTi.js";import{default as v}from"../packem_shared/Label-CgCFOMDc.js";import{Popover as S,PopoverClose as B,PopoverContent as D,PopoverTrigger as I}from"../packem_shared/Popover-DzH5lAc9.js";import{default as h}from"../packem_shared/Progress-DN6zn-0l.js";import{default as w}from"../packem_shared/Separator-D38mKeZv.js";import{default as H}from"../packem_shared/Skeleton-Dv-tcA1P.js";import{default as q}from"../packem_shared/Switch-C3NTpeoR.js";import{Tabs as z,TabsContent as E,TabsList as G,TabsTrigger as J}from"../packem_shared/Tabs-SuFWbB6d.js";import{default as M}from"../packem_shared/Textarea-Yfg3dLZi.js";import{Tooltip as O,TooltipContent as Q,TooltipTrigger as R}from"../packem_shared/Tooltip-BHmzUaxu.js";import{clsx as V}from"../packem_shared/clsx-wGlvpUfw.js";export{e as Alert,t as AlertDescription,a as AlertTitle,f as Badge,s as Button,x as Card,m as CardContent,i as CardDescription,n as CardFooter,T as CardHeader,u as CardTitle,g as Icon,c as Input,v as Label,S as Popover,B as PopoverClose,D as PopoverContent,I as PopoverTrigger,h as Progress,w as Separator,H as Skeleton,q as Switch,z as Tabs,E as TabsContent,G as TabsList,J as TabsTrigger,M as Textarea,O as Tooltip,Q as TooltipContent,R as TooltipTrigger,V as clsx};
|
package/dist/vite-plugin.d.ts
CHANGED
|
@@ -14,11 +14,15 @@ export interface DevToolbarOptions {
|
|
|
14
14
|
*/
|
|
15
15
|
appendTo?: string | RegExp;
|
|
16
16
|
/**
|
|
17
|
-
* Built-in apps to enable
|
|
17
|
+
* Built-in apps to enable. All apps are disabled by default — only
|
|
18
|
+
* `viteConfig`, `settings`, and the "more" drawer are shown out of the box.
|
|
19
|
+
* Explicitly set an app to `true` to enable it.
|
|
20
|
+
* @example { inspector: true, seo: true }
|
|
18
21
|
*/
|
|
19
22
|
apps?: {
|
|
20
23
|
[key: string]: boolean | undefined;
|
|
21
24
|
a11y?: boolean;
|
|
25
|
+
assets?: boolean;
|
|
22
26
|
inspector?: boolean;
|
|
23
27
|
moduleGraph?: boolean;
|
|
24
28
|
performance?: boolean;
|
package/dist/vite-plugin.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var
|
|
2
|
-
${t}`},transformIndexHtml(){return e.appendTo?void 0:{html:"",tags:[{attrs:{src:`${d.base||"/"}@id/${l}client/overlay.js`,type:"module"},injectTo:"head-prepend",tag:"script"}]}}},{enforce:"pre",name:"@visulima/dev-toolbar:inject-source",async transform(t,
|
|
1
|
+
var w=Object.defineProperty;var u=(e,r)=>w(e,"name",{value:r,configurable:!0});import{createRequire as j}from"node:module";import{normalizePath as x}from"vite";import{createServerRPCContext as F}from"./packem_shared/createServerRPCContext-CJXa8ezf.js";const $=j(import.meta.url),n=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,f=u(e=>{if(typeof n<"u"&&n.versions&&n.versions.node){const[r,p]=n.versions.node.split(".").map(Number);if(r>22||r===22&&p>=3||r===20&&p>=16)return n.getBuiltinModule(e)}return $(e)},"__cjs_getBuiltinModule"),T=f("node:fs"),O=f("node:path"),{fileURLToPath:P}=f("node:url");var C=Object.defineProperty,v=u((e,r)=>C(e,"name",{value:r,configurable:!0}),"s");const R=v(()=>x(O.dirname(P(import.meta.url))),"getDevToolbarPath"),I=/\?.+$/,S=/\/dist\/|\/build\//,q=/\.[jt]sx$/,W=v(e=>e.replace(I,""),"removeUrlQuery"),g="?__visulima-dev-toolbar-resource",m="virtual:visulima-dev-toolbar-options",h=`\0${m}`,l="virtual:visulima-dev-toolbar-path:",y="\0__visulima-dev-toolbar-empty",z=v((e={})=>{const r=R(),p=e.removeDevtoolsOnBuild??!0,_=e.injectSource?.enabled??!0;let d;return[{apply:"serve",configResolved(t){d=t},configureServer(t){F(t,e.serverFunctions,{editor:e.editor}),t.ws.on("connection",()=>{t.ws.send({event:"dev-toolbar:init",type:"custom"})})},enforce:"pre",async load(t){if(t===h){const o=(e.customApps??[]).filter(i=>!i.component&&!i.init&&i.view?.type==="iframe").map(i=>({defaultOpen:i.defaultOpen,icon:i.icon,id:i.id,name:i.name,view:i.view}));return`export default ${JSON.stringify({apps:{a11y:e.apps?.a11y??!1,assets:e.apps?.assets??!1,inspector:e.apps?.inspector??!1,moduleGraph:e.apps?.moduleGraph??!1,performance:e.apps?.performance??!1,seo:e.apps?.seo??!1,settings:e.apps?.settings??!0,tailwind:e.apps?.tailwind??!1,timeline:e.apps?.timeline??!1,viteConfig:e.apps?.viteConfig??!0},base:d.base,closeOnOutsideClick:e.closeOnOutsideClick??!0,customApps:o,defaultVisible:e.defaultVisible??!0,editor:e.editor??"",height:e.height??60,keybindings:e.keybindings??{},minimizePanelInactive:e.minimizePanelInactive??5e3,placement:e.placement??"bottom-center",position:e.position??"bottom",reduceMotion:e.reduceMotion??!1,requireUrlFlag:e.requireUrlFlag??!1,urlFlagName:e.urlFlagName??"devtools",width:e.width??80})};`}if(t.endsWith(g)){const o=W(t);return this.addWatchFile(o),await T.promises.readFile(o,"utf8")}},name:"@visulima/dev-toolbar",resolveId(t){if(t===m)return h;if(t.startsWith(l))return`${t.replace(l,`${r}/`)}${g}`},transform(t,o,i){if(i?.ssr)return;const{appendTo:s}=e,a=o.split("?",2)[0];if(s&&a&&(typeof s=="string"&&a.endsWith(s)||s instanceof RegExp&&s.test(a)))return`import '${l}client/overlay.js';
|
|
2
|
+
${t}`},transformIndexHtml(){return e.appendTo?void 0:{html:"",tags:[{attrs:{src:`${d.base||"/"}@id/${l}client/overlay.js`,type:"module"},injectTo:"head-prepend",tag:"script"}]}}},{enforce:"pre",name:"@visulima/dev-toolbar:inject-source",async transform(t,o){if(!_||d.mode!=="development"||o.includes("node_modules")||o.includes("?raw")||S.test(o)||!q.test(o.split("?")[0]??""))return;const{readFile:i}=await import("node:fs/promises");let s;try{const b=await i(o.split("?")[0]??o,"utf8");b!==t&&(s=b)}catch{}const{addSourceToJsx:a}=await import("./packem_chunks/inject-source.js"),c=a(t,o,e.injectSource?.ignore,s);if(c)return{code:c.code??t,map:c.map??void 0}}},{apply(t,{command:o,mode:i}){return p&&(o!=="serve"||i==="production")},load(t){if(t===y)return"export default {};"},name:"@visulima/dev-toolbar:remove-on-build",resolveId(t){if(t===m||t.startsWith(l))return y}}]},"devToolbar");export{z as devToolbar};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@visulima/dev-toolbar",
|
|
3
|
-
"version": "1.0.0-alpha.
|
|
3
|
+
"version": "1.0.0-alpha.5",
|
|
4
4
|
"description": "Devtools is a set of tools for building advanced devtools for your application",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"visulima",
|
|
@@ -49,6 +49,10 @@
|
|
|
49
49
|
"types": "./dist/apps/a11y/index.d.ts",
|
|
50
50
|
"default": "./dist/apps/a11y/index.js"
|
|
51
51
|
},
|
|
52
|
+
"./apps/assets": {
|
|
53
|
+
"types": "./dist/apps/assets/index.d.ts",
|
|
54
|
+
"default": "./dist/apps/assets/index.js"
|
|
55
|
+
},
|
|
52
56
|
"./apps/inspector": {
|
|
53
57
|
"types": "./dist/apps/inspector/index.d.ts",
|
|
54
58
|
"default": "./dist/apps/inspector/index.js"
|
|
@@ -61,10 +65,6 @@
|
|
|
61
65
|
"types": "./dist/apps/module-graph/index.d.ts",
|
|
62
66
|
"default": "./dist/apps/module-graph/index.js"
|
|
63
67
|
},
|
|
64
|
-
"./apps/more": {
|
|
65
|
-
"types": "./dist/apps/more/index.d.ts",
|
|
66
|
-
"default": "./dist/apps/more/index.js"
|
|
67
|
-
},
|
|
68
68
|
"./apps/performance": {
|
|
69
69
|
"types": "./dist/apps/performance/index.d.ts",
|
|
70
70
|
"default": "./dist/apps/performance/index.js"
|
|
@@ -104,18 +104,19 @@
|
|
|
104
104
|
"@babel/generator": "^7.29.1",
|
|
105
105
|
"@babel/parser": "^7.29.0",
|
|
106
106
|
"@babel/traverse": "^7.29.0",
|
|
107
|
-
"@babel/types": "^7.29.0",
|
|
108
107
|
"@floating-ui/dom": "^1.7.6",
|
|
109
|
-
"axe-core": "^4.11.1",
|
|
110
|
-
"clsx": "^2.1.1",
|
|
111
108
|
"launch-editor": "^2.13.1",
|
|
112
|
-
"
|
|
113
|
-
"preact": "^10.28.4",
|
|
114
|
-
"tailwind-merge": "^3.5.0"
|
|
109
|
+
"preact": "^10.28.4"
|
|
115
110
|
},
|
|
116
111
|
"peerDependencies": {
|
|
112
|
+
"axe-core": "^4",
|
|
117
113
|
"vite": "^6 || ^7 || ^8"
|
|
118
114
|
},
|
|
115
|
+
"peerDependenciesMeta": {
|
|
116
|
+
"axe-core": {
|
|
117
|
+
"optional": true
|
|
118
|
+
}
|
|
119
|
+
},
|
|
119
120
|
"engines": {
|
|
120
121
|
"node": ">=22.21"
|
|
121
122
|
},
|
package/dist/apps/more/index.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
var p=Object.defineProperty;var s=(i,t)=>p(i,"name",{value:t,configurable:!0});import m from"lucide-static/icons/more-horizontal.svg?raw";import{addHookName as f}from"preact/devtools";import{useState as u,useEffect as b}from"preact/hooks";import g from"../../packem_shared/cn-DWLJYh3h.js";import{jsxs as o,jsx as r}from"preact/jsx-runtime";var h=Object.defineProperty,n=s((i,t)=>h(i,"name",{value:t,configurable:!0}),"n");const x=n(i=>{const[t,a]=f(u([]),"apps");b(()=>{const e=globalThis.__VISULIMA_DEVTOOLS__;if(!e)return;const l=(e.getApps()??[]).filter(c=>!["dev-toolbar:a11y","dev-toolbar:inspector","dev-toolbar:module-graph","dev-toolbar:more","dev-toolbar:performance","dev-toolbar:seo","dev-toolbar:settings","dev-toolbar:tailwind","dev-toolbar:timeline","dev-toolbar:vite-config"].includes(c.id));a(l)},[]);const d=n(e=>{globalThis.__VISULIMA_DEVTOOLS__?.openApp(e).catch(()=>{})},"openApp");return t.length===0?o("div",{class:"p-8 flex flex-col items-center justify-center min-h-48 gap-5 text-center select-none",children:[r("div",{class:"size-14 bg-primary/5 border border-primary/20 flex items-center justify-center",children:r("svg",{"aria-hidden":"true",class:"size-6 text-primary/40",fill:"none",stroke:"currentColor","stroke-width":"1.5",viewBox:"0 0 24 24",children:r("path",{d:"M12 6v6m0 0v6m0-6h6m-6 0H6","stroke-linecap":"round","stroke-linejoin":"round"})})}),o("div",{class:"space-y-1.5",children:[r("p",{class:"text-[0.8125rem] font-medium text-foreground/70",children:"No additional apps registered"}),r("p",{class:"text-[0.725rem] text-muted-foreground",children:"Register a custom app to see it here"}),r("pre",{class:"mt-3 text-[0.65rem] font-mono text-primary/70 bg-primary/5 border border-primary/15 px-3 py-2 text-left",children:`window.__VISULIMA_DEVTOOLS__
|
|
2
|
-
.registerApp({ id, name, icon })`})]})]}):o("div",{class:"p-5",children:[o("h2",{class:"text-[0.65rem] font-bold uppercase tracking-[0.1em] text-muted-foreground mb-3 flex items-center gap-1.5",children:[r("span",{"aria-hidden":"true",class:"text-primary/50",children:"//"}),"Additional Apps"]}),r("div",{class:"grid grid-cols-2 gap-2",children:t.map(e=>o("button",{class:g("flex items-center gap-3 p-3","border border-border bg-card hover:bg-foreground/4","text-left cursor-pointer transition-colors duration-150"),onClick:n(()=>d(e.id),"onClick"),title:e.name,type:"button",children:[r("span",{class:"size-5 shrink-0 flex items-center justify-center text-[0.65rem] font-bold uppercase bg-foreground/8 text-foreground/70",children:e.name.slice(0,2)}),r("span",{class:"text-[0.8125rem] font-medium text-foreground truncate",children:e.name})]},e.id))})]})},"MoreApp"),O={component:x,icon:m,id:"dev-toolbar:more",name:"More"};export{O as default};
|