@ahpd/web 0.0.0-stage → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +211 -2
- package/dist/app/ahpw.svg +8 -0
- package/dist/app/assets/ActionList-Bawu-Lja.css +1 -0
- package/dist/app/assets/ActionList-aOUHK9Z9.js +1 -0
- package/dist/app/assets/ActivityBarItem-Cyes10aK.css +1 -0
- package/dist/app/assets/ActivityBarItem-DVzJQ1uh.js +1 -0
- package/dist/app/assets/Alert-CHZkhmDE.js +1 -0
- package/dist/app/assets/Alert-D6FTUHBY.css +1 -0
- package/dist/app/assets/Audio-C0yEXr8X.js +1 -0
- package/dist/app/assets/Audio-DZmBckTU.css +1 -0
- package/dist/app/assets/Badge-BDEW5PFb.js +1 -0
- package/dist/app/assets/Badge-B_GtDNjv.css +1 -0
- package/dist/app/assets/BarChart-29IHwYQG.css +1 -0
- package/dist/app/assets/BarChart-BX8Dbz7S.js +1 -0
- package/dist/app/assets/BarLayout-CkfGX1E0.js +1 -0
- package/dist/app/assets/Button-CRZ1_3KW.css +1 -0
- package/dist/app/assets/Button-_R1oktDz.js +1 -0
- package/dist/app/assets/ButtonBar-CpWwS0s7.js +1 -0
- package/dist/app/assets/ButtonBar-DfHeNg1i.css +1 -0
- package/dist/app/assets/Card-BAqJm0ZO.js +1 -0
- package/dist/app/assets/Card-BZxOMaUR.css +1 -0
- package/dist/app/assets/CheckBox-Br18O83H.css +1 -0
- package/dist/app/assets/CheckBox-Dkn59EbO.js +1 -0
- package/dist/app/assets/ChoicePicker-BX-KNSVk.css +1 -0
- package/dist/app/assets/ChoicePicker-Cg4Cj6B2.js +1 -0
- package/dist/app/assets/Column-BQyN2Mnc.js +1 -0
- package/dist/app/assets/Column-Df5lN6aE.css +1 -0
- package/dist/app/assets/Composer-DpjCaX5G.js +2 -0
- package/dist/app/assets/ContextMenu-qqlGWvJT.js +1 -0
- package/dist/app/assets/DataTable-Bv6EG42F.js +1 -0
- package/dist/app/assets/DataTable-D5MTEmlc.css +1 -0
- package/dist/app/assets/DateTimeInput-Ccmu6vbY.js +1 -0
- package/dist/app/assets/DateTimeInput-x1XGuNl0.css +1 -0
- package/dist/app/assets/DetailHeader-D4ulpmi_.css +1 -0
- package/dist/app/assets/DetailHeader-DvDOX8aJ.js +1 -0
- package/dist/app/assets/DetailList-BeikDUyt.css +1 -0
- package/dist/app/assets/DetailList-Yalgw0YM.js +1 -0
- package/dist/app/assets/Details-Cymq_tLr.js +1 -0
- package/dist/app/assets/DiffPage-CrT1Faon.js +1 -0
- package/dist/app/assets/Divider-Bp3vn6nH.js +1 -0
- package/dist/app/assets/Divider-MNeVl6_n.css +1 -0
- package/dist/app/assets/Divisor-D4gUgDSw.css +1 -0
- package/dist/app/assets/Divisor-hrrJK3bw.js +1 -0
- package/dist/app/assets/Donut-BJmeC9Mu.js +1 -0
- package/dist/app/assets/Donut-BwdpL6WL.css +1 -0
- package/dist/app/assets/Edit-KxWRJB1t.js +1 -0
- package/dist/app/assets/Explorer-C4zxSdMF.js +1 -0
- package/dist/app/assets/Explorer-Cxl5QGRN.js +1 -0
- package/dist/app/assets/Explorer-D9lzbmtd.js +1 -0
- package/dist/app/assets/Explorer-h1FYBfP3.js +1 -0
- package/dist/app/assets/Explorer-kMkPIrYG.js +1 -0
- package/dist/app/assets/ExplorerList-Bdp0sfLW.js +1 -0
- package/dist/app/assets/Field-CJtqXD7H.js +1 -0
- package/dist/app/assets/Field-DpS1bv_y.css +1 -0
- package/dist/app/assets/FieldGroup-2u9EmHRU.js +1 -0
- package/dist/app/assets/FieldGroup-B_DfbBby.css +1 -0
- package/dist/app/assets/FilePage-CWjlubpU.js +1 -0
- package/dist/app/assets/Filter-y-cAyV5s.js +1 -0
- package/dist/app/assets/FloatingLayout-8Wke63p3.js +1 -0
- package/dist/app/assets/Form-BKda3NBV.css +1 -0
- package/dist/app/assets/Form-D7L1aboH.js +1 -0
- package/dist/app/assets/FormActions-DK5QnUct.css +1 -0
- package/dist/app/assets/FormActions-DTJXRhkf.js +1 -0
- package/dist/app/assets/FormSection-BmWfSm92.js +1 -0
- package/dist/app/assets/FormSection-DSe5kU1s.css +1 -0
- package/dist/app/assets/Grid-BSSvEO5L.css +1 -0
- package/dist/app/assets/Grid-BmJ1BSH9.js +1 -0
- package/dist/app/assets/Icon-BFMW_Ijn.css +1 -0
- package/dist/app/assets/Icon-CIQ7doud.js +1 -0
- package/dist/app/assets/Image-dnPnniEL.css +1 -0
- package/dist/app/assets/Image-krGhoZYB.js +1 -0
- package/dist/app/assets/Info-levnJ1pH.js +1 -0
- package/dist/app/assets/InlineLayout-Cnpt0vI0.js +1 -0
- package/dist/app/assets/LineChart-DnF4pqRu.css +1 -0
- package/dist/app/assets/LineChart-DxnWTKNr.js +1 -0
- package/dist/app/assets/Link-Bmovln50.css +1 -0
- package/dist/app/assets/Link-DbBfZpn0.js +1 -0
- package/dist/app/assets/List-BCNZ5z-i.css +1 -0
- package/dist/app/assets/List-BqbZ9K9S.js +1 -0
- package/dist/app/assets/LocaleToggle-BVab8iNa.css +1 -0
- package/dist/app/assets/LocaleToggle-DtU53oIZ.js +1 -0
- package/dist/app/assets/LogPage-QIumryht.js +1 -0
- package/dist/app/assets/LoginForm-BJhoxJyJ.css +1 -0
- package/dist/app/assets/LoginForm-CoxoSwG-.js +1 -0
- package/dist/app/assets/Markdown-BaxWPZc1.js +4 -0
- package/dist/app/assets/Markdown-D4ts0B_q.css +1 -0
- package/dist/app/assets/MarkdownPage-CNUmYD-d.js +1 -0
- package/dist/app/assets/Modal-BHPfQpzr.js +1 -0
- package/dist/app/assets/MountTitle-hWvATFel.js +1 -0
- package/dist/app/assets/New-CWi2ZODd.js +3 -0
- package/dist/app/assets/Page-BXwzlAyC.js +2 -0
- package/dist/app/assets/Page-BlQx3M_Q.js +1 -0
- package/dist/app/assets/Page-DXYj-sYk.js +1 -0
- package/dist/app/assets/Pagination-FSzhBpDU.js +1 -0
- package/dist/app/assets/PortaLock-BME0nNtM.css +1 -0
- package/dist/app/assets/PortaLock-Dvr-6D1r.js +2 -0
- package/dist/app/assets/RailLayout-MV_LU2y0.js +1 -0
- package/dist/app/assets/Row-BpA7AC-I.js +1 -0
- package/dist/app/assets/Row-DtfZU_4a.css +1 -0
- package/dist/app/assets/ScenaProvider-6A3TJumQ.js +1 -0
- package/dist/app/assets/SchemaForm-B_SWmx0L.css +1 -0
- package/dist/app/assets/SchemaForm-D6mGj6Xh.js +1 -0
- package/dist/app/assets/Settings--Ciusotp.js +1 -0
- package/dist/app/assets/SigillumGate-DoeGhrpT.js +1 -0
- package/dist/app/assets/SingleLayout-CmIAtyIo.js +1 -0
- package/dist/app/assets/Slider-0-pV25N6.css +1 -0
- package/dist/app/assets/Slider-BW21RHZe.js +1 -0
- package/dist/app/assets/SpatialLayout-CacNe1y4.js +1 -0
- package/dist/app/assets/SpatialLayout-DzIS1m9Q.css +1 -0
- package/dist/app/assets/Spinner-B-iOhBZq.js +1 -0
- package/dist/app/assets/Spinner-B56wMtzv.css +1 -0
- package/dist/app/assets/SplitLayout-BANKBMIh.js +1 -0
- package/dist/app/assets/Splitter-M7YGn5I8.js +1 -0
- package/dist/app/assets/StackLayout-Cz4zMN4f.js +1 -0
- package/dist/app/assets/StatusDot-BwqhMthP.js +1 -0
- package/dist/app/assets/StatusDot-DzzNqTRg.css +1 -0
- package/dist/app/assets/TabLayout-BaH8UNpt.js +1 -0
- package/dist/app/assets/TabPanelLayout-DkFUNHcz.js +1 -0
- package/dist/app/assets/Tabs-BYb2LuJK.css +1 -0
- package/dist/app/assets/Tabs-uqIKAux6.js +1 -0
- package/dist/app/assets/TerminalPage-BrP-ENHg.css +1 -0
- package/dist/app/assets/TerminalPage-C58xO7du.js +18 -0
- package/dist/app/assets/Text-D2KlerVw.css +1 -0
- package/dist/app/assets/Text-MPtQvYE-.js +1 -0
- package/dist/app/assets/TextField-DnSHrmJM.js +1 -0
- package/dist/app/assets/ThemeModeToggle-CAippEfJ.js +1 -0
- package/dist/app/assets/ThemeModeToggle-D_xGqGsG.css +1 -0
- package/dist/app/assets/ThemePicker-BxbcsOmU.css +1 -0
- package/dist/app/assets/ThemePicker-CvnWboZg.js +1 -0
- package/dist/app/assets/Tree-BAAGdT3c.css +1 -0
- package/dist/app/assets/Tree-Bb5NwYJ1.js +1 -0
- package/dist/app/assets/Video-5WNSpY2W.js +1 -0
- package/dist/app/assets/Video-Dj-rxrve.css +1 -0
- package/dist/app/assets/_field-parts-BuPjFCuf.js +1 -0
- package/dist/app/assets/_field-parts-CfQcSJYh.css +1 -0
- package/dist/app/assets/_field-parts-DannIEUW.css +1 -0
- package/dist/app/assets/_utils-DZVsX11M.js +1 -0
- package/dist/app/assets/actions-BQzD99j0.js +1 -0
- package/dist/app/assets/changeset-BY8dw-V-.js +1 -0
- package/dist/app/assets/channel-Cqz_LUS2.js +1 -0
- package/dist/app/assets/clicks-IyfKhKFh.js +1 -0
- package/dist/app/assets/colors-BieSUSt7.js +1 -0
- package/dist/app/assets/composer-commands-Bpp7NX4E.js +2 -0
- package/dist/app/assets/data-Fkj0LNnG.js +2 -0
- package/dist/app/assets/diff-eyYjrmkY.js +3 -0
- package/dist/app/assets/drag-ruzgQUFW.js +1 -0
- package/dist/app/assets/emojis-BOylxma2.js +1 -0
- package/dist/app/assets/index-BkzdJo_Y.js +14 -0
- package/dist/app/assets/index-CPXMK2aI.css +1 -0
- package/dist/app/assets/jsx-runtime-BguD1OXD.js +1 -0
- package/dist/app/assets/mount-context-DZgEFVFG.js +1 -0
- package/dist/app/assets/notify-Bb548jAB.js +1 -0
- package/dist/app/assets/preload-helper-BaNbYf_w.js +1 -0
- package/dist/app/assets/react-CybPckBe.js +1 -0
- package/dist/app/assets/sessions-CEccRVtA.js +2 -0
- package/dist/app/assets/sigillum-Bev0l9LS.js +1 -0
- package/dist/app/assets/state-DRVsnGrf.js +1 -0
- package/dist/app/assets/state-KGSq646f.js +1 -0
- package/dist/app/assets/styles-yrzHRgom.js +1 -0
- package/dist/app/assets/surface-presentation-CT86pw6J.js +1 -0
- package/dist/app/assets/terminal-kD0C2LuZ.js +1 -0
- package/dist/app/assets/text-CmjM0Nin.js +1 -0
- package/dist/app/assets/turn-BoF7W1h6.js +3 -0
- package/dist/app/assets/useI18n-Bfix5MNN.js +1 -0
- package/dist/app/assets/useStore-BQkzWMs-.js +2 -0
- package/dist/app/assets/useStoreLabel-m9cem_OG.js +1 -0
- package/dist/app/assets/words-BMjqrsOT.js +1 -0
- package/dist/app/assets/words-BknpHIF3.js +1 -0
- package/dist/app/index.html +54 -0
- package/dist/cli/main.js +21 -0
- package/dist/cli/main.js.map +1 -0
- package/dist/cli/proxy.js +101 -0
- package/dist/cli/proxy.js.map +1 -0
- package/dist/cli/serve.js +207 -0
- package/dist/cli/serve.js.map +1 -0
- package/dist/cli/server.js +32 -0
- package/dist/cli/server.js.map +1 -0
- package/dist/plugin/index.d.ts +6 -0
- package/dist/plugin/index.js +12 -0
- package/dist/plugin/index.js.map +1 -0
- package/dist/plugin/static.d.ts +9 -0
- package/dist/plugin/static.js +77 -0
- package/dist/plugin/static.js.map +1 -0
- package/package.json +83 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as e}from"./jsx-runtime-BguD1OXD.js";import{t}from"./react-CybPckBe.js";import{t as n}from"./colors-BieSUSt7.js";import{n as r}from"./ScenaProvider-6A3TJumQ.js";import{t as i}from"./ContextMenu-qqlGWvJT.js";import{r as a}from"./Icon-CIQ7doud.js";import{r as o}from"./MountTitle-hWvATFel.js";var s=t(),c=e();function l({className:e,style:t,direction:n=`row`,align:r,justify:i,gap:a,children:o}){let s={...t};return r!==void 0&&(s.alignItems=r),i!==void 0&&(s.justifyContent=i),a!==void 0&&(s.gap=a),(0,c.jsx)(`div`,{className:[`oo-toolbar`,e].filter(Boolean).join(` `),"data-direction":n,style:s,children:o})}var u=(0,s.createContext)(null);function d(){let e=(0,s.useContext)(u);if(!e)throw Error(`useCampus() must be used inside <CampusView>`);return e}var f=(0,s.createContext)(1);function p(){return(0,s.useContext)(f)}var m={n:`ns-resize`,s:`ns-resize`,e:`ew-resize`,w:`ew-resize`,ne:`nesw-resize`,sw:`nesw-resize`,nw:`nwse-resize`,se:`nwse-resize`},h={w:80,h:60};function g(e,t,n,r,i,a){let o=t.x,s=t.y,c=t.w,l=t.h;return e.includes(`w`)&&(o=t.x+n,c=t.w-n),e.includes(`e`)&&(c=t.w+n),e.includes(`n`)&&(s=t.y+r,l=t.h-r),e.includes(`s`)&&(l=t.h+r),c<i.w&&(e.includes(`w`)&&(o=t.x+(t.w-i.w)),c=i.w),l<i.h&&(e.includes(`n`)&&(s=t.y+(t.h-i.h)),l=i.h),isFinite(a)&&(o<-a&&(e.includes(`w`)&&(c=t.x+t.w- -a),o=-a),s<-a&&(e.includes(`n`)&&(l=t.y+t.h- -a),s=-a),o+c>a&&(c=a-o),s+l>a&&(l=a-s)),{x:o,y:s,w:c,h:l}}function _(e,t,n,r){let i=e.x+t,a=e.y+n;return isFinite(r)&&(i=Math.max(-r,Math.min(r-e.w,i)),a=Math.max(-r,Math.min(r-e.h,a))),{...e,x:i,y:a}}function v({bounds:e,onCommit:t,minSize:n=h,resizable:r=!0,movable:i=!0,dragHandle:a=`[data-campus-drag]`,selected:o=!1,zIndex:l,children:u,onPointerDownCapture:f,onClick:m,onContextMenu:v,className:b,style:x,bodyStyle:S}){let{viewportRef:C,maxDepth:w}=d(),T=p(),[E,D]=(0,s.useState)(null),O=(0,s.useRef)(null),k=(0,s.useRef)(null),A=(0,s.useRef)(null);(0,s.useEffect)(()=>{D(null)},[e.x,e.y,e.w,e.h]);function j(){A.current&&=(D(A.current),null),k.current=null}function M(t,n){n.preventDefault(),n.stopPropagation(),n.currentTarget.setPointerCapture(n.pointerId),O.current={mode:t,startX:n.clientX,startY:n.clientY,start:E??e}}function N(e){if(!i)return;let t=e.target;t&&t.closest(a)&&M(`move`,e)}function P(e){let t=O.current;if(!t)return;let r=C.current.scale*T||1,i=(e.clientX-t.startX)/r,a=(e.clientY-t.startY)/r,o=t.mode===`move`?_(t.start,i,a,w):g(t.mode,t.start,i,a,n,w);A.current=o,k.current===null&&(k.current=requestAnimationFrame(j))}function F(n){if(!O.current)return;k.current!==null&&(cancelAnimationFrame(k.current),j()),n.currentTarget.releasePointerCapture(n.pointerId);let r=A.current??E??e;A.current=null,O.current=null,t(r)}let I=E??e,L={position:`absolute`,left:I.x,top:I.y,width:I.w,height:I.h,display:`flex`,flexDirection:`column`,overflow:`hidden`,zIndex:l??(o?10:1),background:`var(--oo-color-canvas)`,border:`1px solid ${o?`var(--oo-color-accent)`:`var(--oo-color-border)`}`,borderRadius:`var(--oo-radius-sm)`,boxShadow:o?`var(--oo-shadow-lg)`:`var(--oo-shadow-md)`,...x};return(0,c.jsxs)(`div`,{className:[`oo-campus-nodus`,b].filter(Boolean).join(` `),"data-selected":o,style:L,onPointerDownCapture:f,onPointerDown:N,onPointerMove:P,onPointerUp:F,onClick:m,onContextMenu:v,children:[(0,c.jsx)(`div`,{style:{flex:1,minHeight:0,display:`flex`,flexDirection:`column`,overflow:`hidden`,...S},children:u}),r?(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(y,{mode:`n`,startDrag:M,onPointerMove:P,endDrag:F}),(0,c.jsx)(y,{mode:`s`,startDrag:M,onPointerMove:P,endDrag:F}),(0,c.jsx)(y,{mode:`e`,startDrag:M,onPointerMove:P,endDrag:F}),(0,c.jsx)(y,{mode:`w`,startDrag:M,onPointerMove:P,endDrag:F}),(0,c.jsx)(y,{mode:`nw`,startDrag:M,onPointerMove:P,endDrag:F}),(0,c.jsx)(y,{mode:`ne`,startDrag:M,onPointerMove:P,endDrag:F}),(0,c.jsx)(y,{mode:`sw`,startDrag:M,onPointerMove:P,endDrag:F}),(0,c.jsx)(y,{mode:`se`,startDrag:M,onPointerMove:P,endDrag:F})]}):null]})}function y({mode:e,startDrag:t,onPointerMove:n,endDrag:r}){let i=e.length===2,a;if(i)a={position:`absolute`,width:12,height:12,cursor:m[e],touchAction:`none`,zIndex:1,...e.includes(`n`)?{top:-6}:{bottom:-6},...e.includes(`w`)?{left:-6}:{right:-6}};else{let t=e===`n`||e===`s`;a={position:`absolute`,cursor:m[e],touchAction:`none`,zIndex:1,...t?{left:12,right:12,height:6,...e===`n`?{top:-3}:{bottom:-3}}:{top:12,bottom:12,width:6,...e===`w`?{left:-3}:{right:-3}}}}return(0,c.jsx)(`div`,{className:`oo-campus-nodus-resize oo-campus-nodus-resize--${e}`,onPointerDown:n=>t(e,n),onPointerMove:n,onPointerUp:r,style:a})}function b({zoom:e=1,pan:t,zIndex:n,className:r,style:i,children:a}){let o=t?.x??0,s=t?.y??0,l=o!==0||s!==0||e!==1?`translate(${o}px, ${s}px) scale(${e})`:void 0;return(0,c.jsx)(f.Provider,{value:e,children:(0,c.jsx)(`div`,{className:[`oo-campus-stratum`,r].filter(Boolean).join(` `),style:{position:`absolute`,left:0,top:0,width:0,height:0,transformOrigin:`0 0`,transform:l,zIndex:n,...i},children:a})})}function x({className:e,style:t,children:n}){return n==null||n===!1?null:(0,c.jsx)(`div`,{className:[`oo-campus-velum`,e].filter(Boolean).join(` `),style:{position:`absolute`,inset:0,pointerEvents:`none`,zIndex:30,...t},children:n})}var S=.1,C=4,w=1.1,T=9,E=.95,D=40,O=140;function k(e,t,n){return Math.max(t,Math.min(n,e))}function A(e){return`translate(${e.panX}px, ${e.panY}px) scale(${e.scale})`}function j(e,t,n,r,i){let a=k(e.scale,r,i);if(!isFinite(n))return{...e,scale:a};let{panX:o,panY:s}=e,c=n*a,l=n*a;return o=2*c>=t.w?k(o,t.w-c,c):t.w/2,s=2*l>=t.h?k(s,t.h-l,l):t.h/2,{scale:a,panX:o,panY:s}}function M({viewport:e,onViewportChange:t,maxDepth:n=1/0,minScale:r=S,maxScale:i=C,zoomStep:a=w,showGrid:o=!0,onBackgroundClick:l,onBackgroundContextMenu:d,nodes:f,nodeTypes:p,nodeLayers:m,defaultLayer:h,onNodeCommit:g,onNodeSelect:_,onNodeContextMenu:v,className:y,style:D,children:M,ref:F}){let I=(0,s.useRef)(null),L=(0,s.useRef)(null),R=(0,s.useRef)(a),ee=(0,s.useRef)(r),z=(0,s.useRef)(i),B=(0,s.useRef)(Q),[V,H]=(0,s.useState)({w:0,h:0});(0,s.useEffect)(()=>{let e=I.current;if(!e)return;function t(){let t=e.getBoundingClientRect();H({w:t.width,h:t.height})}t();let n=new ResizeObserver(t);return n.observe(e),()=>n.disconnect()},[]);let U=(0,s.useRef)(e),W=(0,s.useRef)(new Set),G=(0,s.useCallback)(e=>(W.current.add(e),()=>{W.current.delete(e)}),[]);function K(){W.current.forEach(e=>e())}function q(e){let t=L.current;t&&(t.style.transform=A(e))}let te=(0,s.useRef)(t);te.current=t;let J=(0,s.useRef)(null);function ne(){J.current!==null&&window.clearTimeout(J.current),J.current=window.setTimeout(()=>{J.current=null,te.current(U.current)},O)}(0,s.useEffect)(()=>()=>{J.current!==null&&window.clearTimeout(J.current)},[]),(0,s.useEffect)(()=>{let t=U.current;(e.scale!==t.scale||e.panX!==t.panX||e.panY!==t.panY)&&(U.current=e,q(e),K())},[e]);let Y=(0,s.useRef)(null),X=(0,s.useRef)(null);function Z(e){let t=j(e,V,n,r,i);U.current=t,q(t),K(),ne()}function Q(e){Y.current=e,X.current===null&&(X.current=requestAnimationFrame(()=>{X.current=null;let e=Y.current;Y.current=null,e&&Z(e)}))}(0,s.useEffect)(()=>{R.current=a,ee.current=r,z.current=i,B.current=Q}),(0,s.useEffect)(()=>{let e=I.current;if(!e)return;function t(t){if(!e)return;let n=e.getBoundingClientRect(),r=U.current;if(t.ctrlKey||t.metaKey){t.preventDefault();let e=t.clientX-n.left,i=t.clientY-n.top,a=t.deltaY<0?R.current:1/R.current,o=k(r.scale*a,ee.current,z.current),s=(e-r.panX)/r.scale,c=(i-r.panY)/r.scale;B.current({scale:o,panX:e-s*o,panY:i-c*o})}else{t.preventDefault();let e=-(t.shiftKey?t.deltaY:t.deltaX),n=-(t.shiftKey?0:t.deltaY);B.current({scale:r.scale,panX:r.panX+e,panY:r.panY+n})}}return e.addEventListener(`wheel`,t,{passive:!1}),()=>e.removeEventListener(`wheel`,t)},[]);let $=(0,s.useRef)(null);function re(e){return e===I.current||e===L.current}function ie(e){if(!re(e.target))return;e.currentTarget.setPointerCapture(e.pointerId);let t=U.current;$.current={startX:e.clientX,startY:e.clientY,startPanX:t.panX,startPanY:t.panY,moved:!1}}function ae(e){let t=$.current;if(!t)return;let n=e.clientX-t.startX,r=e.clientY-t.startY;!t.moved&&n*n+r*r<T||(!t.moved&&I.current&&(I.current.style.cursor=`grabbing`),t.moved=!0,Q({scale:U.current.scale,panX:t.startPanX+n,panY:t.startPanY+r}))}function oe(e){let t=$.current;t&&(e.currentTarget.releasePointerCapture(e.pointerId),$.current=null,I.current&&(I.current.style.cursor=``),t.moved||l?.())}function se(e){re(e.target)&&d?.(e)}(0,s.useImperativeHandle)(F,()=>({fitToView(e){let t=V;if(t.w===0||t.h===0)return;let a=e??(isFinite(n)?{x:-n,y:-n,w:2*n,h:2*n}:{x:0,y:0,w:0,h:0});if(a.w<=0||a.h<=0)return;let o=k(Math.min(t.w/a.w,t.h/a.h)*E,r,i),s=a.x+a.w/2,c=a.y+a.h/2;Z({scale:o,panX:t.w/2-s*o,panY:t.h/2-c*o})},centerOn(e,t){let n=V,r=U.current;n.w!==0&&n.h!==0&&Z({scale:r.scale,panX:n.w/2-e*r.scale,panY:n.h/2-t*r.scale})},resetViewport(){Z({scale:1,panX:0,panY:0})},zoomBy(e){ce(U.current.scale*e)},zoomToScale(e){ce(e)}}),[V,n,r,i]);function ce(e){let t=V;if(t.w===0||t.h===0)return;let n=U.current,a=k(e,r,i);if(a===n.scale)return;let o=t.w/2,s=t.h/2,c=(o-n.panX)/n.scale,l=(s-n.panY)/n.scale;Z({scale:a,panX:o-c*a,panY:s-l*a})}let le=(0,s.useMemo)(()=>{let e=Object.entries(m??{}).map(([e,t])=>({name:e,config:t})).sort((e,t)=>e.config.index-t.config.index),t=h??e[0]?.name??`default`,n=new Map;for(let e of f??[]){let r=e.layer&&m?.[e.layer]?e.layer:t,i=n.get(r);i?i.push(e):n.set(r,[e])}let r=[],i=new Set;for(let{name:t,config:a}of e)r.push({name:t,config:a,nodes:n.get(t)??[]}),i.add(t);for(let[e,t]of n)i.has(e)||r.push({name:e,config:{index:r.length},nodes:t});return r},[f,m,h]),ue=(0,s.useMemo)(()=>({viewportRef:U,subscribeViewport:G,container:V,maxDepth:n}),[G,V,n]);return(0,c.jsx)(u.Provider,{value:ue,children:(0,c.jsxs)(`div`,{ref:I,className:[`oo-campus`,y].filter(Boolean).join(` `),onPointerDown:ie,onPointerMove:ae,onPointerUp:oe,onContextMenu:se,style:{position:`relative`,width:`100%`,height:`100%`,overflow:`hidden`,background:`var(--oo-color-surface)`,touchAction:`none`,cursor:`default`,...D},children:[o?(0,c.jsx)(P,{}):null,(0,c.jsx)(`div`,{ref:L,className:`oo-campus-world`,style:{position:`absolute`,left:0,top:0,width:0,height:0,transform:A(U.current),transformOrigin:`0 0`},children:le.map(e=>(0,c.jsx)(b,{zoom:e.config.zoom,pan:e.config.pan,zIndex:e.config.index,children:e.nodes.map(e=>{let t=p?.[e.type];return t?(0,c.jsx)(N,{node:e,onCommit:g,onSelect:_,onContextMenu:v,children:(0,c.jsx)(t,{id:e.id,selected:!!e.selected,data:e.data})},e.id):null})},e.name))}),(0,c.jsx)(x,{children:M})]})})}function N({node:e,onCommit:t,onSelect:n,onContextMenu:r,children:i}){return(0,c.jsx)(v,{bounds:e.bounds,selected:e.selected,resizable:e.resizable,movable:e.movable,onCommit:n=>t?.(e.id,n),onPointerDownCapture:()=>{e.selected||n?.(e.id)},onContextMenu:t=>{t.preventDefault(),t.stopPropagation(),n?.(e.id),r?.(e.id,t)},children:i})}function P(){let{viewportRef:e,subscribeViewport:t}=d(),{panX:n,panY:r,scale:i}=(0,s.useSyncExternalStore)(t,()=>e.current),a=D*i,o=a<6?0:a>200?.04:Math.min(.12,a/200);if(o<=0)return null;let l=(n%a+a)%a,u=(r%a+a)%a,f=`rgba(128, 128, 128, ${o})`;return(0,c.jsx)(`div`,{className:`oo-campus-grid`,"aria-hidden":!0,style:{position:`absolute`,inset:0,pointerEvents:`none`,backgroundImage:`linear-gradient(to right, ${f} 1px, transparent 1px),linear-gradient(to bottom, ${f} 1px, transparent 1px)`,backgroundSize:`${a}px ${a}px, ${a}px ${a}px`,backgroundPosition:`${l}px ${u}px, ${l}px ${u}px`}})}var F=160,I=110,L=12,R={bottom:12,right:12};function ee({nodes:e,onJumpTo:t,width:r=F,height:i=I,padding:a=L,anchor:o=R,className:l,style:u}){let{viewportRef:f,subscribeViewport:p,container:m}=d(),h=(0,s.useSyncExternalStore)(p,()=>f.current);if(m.w===0||m.h===0)return null;let g=1/0,_=1/0,v=-1/0,y=-1/0;for(let t of e)g=Math.min(g,t.bounds.x),_=Math.min(_,t.bounds.y),v=Math.max(v,t.bounds.x+t.bounds.w),y=Math.max(y,t.bounds.y+t.bounds.h);let b=-h.panX/h.scale,x=-h.panY/h.scale,S=b+m.w/h.scale,C=x+m.h/h.scale;isFinite(g)?(g=Math.min(g,b),_=Math.min(_,x),v=Math.max(v,S),y=Math.max(y,C)):(g=b,_=x,v=S,y=C);let w=Math.max(1,v-g),T=Math.max(1,y-_),E=r-a*2,D=i-a*2,O=Math.min(E/w,D/T);function k(e,t){return[a+(e-g)*O,a+(t-_)*O]}function A(e){let n=e.currentTarget.getBoundingClientRect(),r=e.clientX-n.left,i=e.clientY-n.top;t((r-a)/O+g,(i-a)/O+_)}let[j,M]=k(b,x),N=(S-b)*O,P=(C-x)*O;return(0,c.jsxs)(`div`,{className:[`oo-campus-mappa`,l].filter(Boolean).join(` `),onClick:A,onPointerDown:e=>e.stopPropagation(),style:{position:`absolute`,...o,width:r,height:i,pointerEvents:`auto`,background:`rgba(20, 20, 24, 0.75)`,backdropFilter:`blur(6px)`,WebkitBackdropFilter:`blur(6px)`,borderRadius:`var(--oo-radius-sm, 4px)`,boxShadow:`0 6px 20px rgba(0, 0, 0, 0.32)`,cursor:`crosshair`,zIndex:40,overflow:`hidden`,...u},children:[e.map(e=>{let[t,r]=k(e.bounds.x,e.bounds.y),i=Math.max(2,e.bounds.w*O),a=Math.max(2,e.bounds.h*O);return(0,c.jsx)(`div`,{title:e.id,style:{position:`absolute`,left:t,top:r,width:i,height:a,background:n(e.color,.85),border:e.selected?`1px solid rgba(255, 255, 255, 0.9)`:`1px solid rgba(255, 255, 255, 0.18)`,borderRadius:2,boxSizing:`border-box`}},e.id)}),(0,c.jsx)(`div`,{style:{position:`absolute`,left:j,top:M,width:N,height:P,border:`1px solid rgba(255, 255, 255, 0.9)`,background:`rgba(255, 255, 255, 0.06)`,pointerEvents:`none`,boxSizing:`border-box`}})]})}function z({selected:e,data:t}){let{mount:n,renderMount:i,onClose:s}=t,l=r().components.get(n.component.component)?.props,u=o(n,n.key),d=n.props?.icon??l?.icon,f=n.props?.color??l?.color;return(0,c.jsxs)(c.Fragment,{children:[(0,c.jsxs)(`div`,{className:`oo-spatial-card__header`,"data-campus-drag":!0,"data-color":f,style:{padding:`var(--oo-spacing-xs) var(--oo-spacing-sm)`,borderBottom:`1px solid var(--oo-color-border)`,fontSize:`var(--oo-font-size-xs)`,color:e?`inherit`:`var(--oo-color-muted)`,background:e?`var(--oo-color-active)`:`var(--oo-color-surface)`,display:`flex`,justifyContent:`space-between`,alignItems:`center`,cursor:`grab`,userSelect:`none`,touchAction:`none`,flex:`0 0 auto`},children:[(0,c.jsxs)(`span`,{title:u,style:{display:`inline-flex`,alignItems:`center`,gap:6,minWidth:0},children:[d?(0,c.jsx)(`span`,{className:`oo-spatial-card__icon`,"aria-hidden":!0,children:d}):null,(0,c.jsx)(`span`,{className:`oo-spatial-card__title`,style:{overflow:`hidden`,textOverflow:`ellipsis`,whiteSpace:`nowrap`},children:u})]}),(0,c.jsx)(`span`,{onPointerDown:e=>e.stopPropagation(),onClick:e=>{e.stopPropagation(),s()},title:`Close`,style:{cursor:`pointer`},children:a.closePanel})]}),(0,c.jsx)(`div`,{className:`oo-spatial-card__body`,style:{flex:1,overflow:`auto`,minHeight:0},children:i(n)})]})}var B=960,V=768,H=36,U=40,W=16,G=8e3;function K(e,t,n){if(n===`grid`&&t>0){let n=Math.max(1,Math.floor(Math.sqrt(t))),r=e%n,i=Math.floor(e/n);return{x:W+r*976,y:W+i*784,w:B,h:V}}return{x:U+e*H,y:U+e*H,w:B,h:V}}var q={scale:1,panX:0,panY:0},te={},J=1.1,ne={card:z};function Y({surface:e,mounts:t,state:n,setState:a,renderMount:o,onClose:u,onActivate:d}){let f=r(),[p,m]=(0,s.useState)(null),[h,g]=(0,s.useState)(null),_=n.spatial?.arrangement??`cascade`,v=n.spatial?.bounds??te,y=n.spatial?.selectedKey,b=n.spatial?.viewport??q,x=(0,s.useRef)({arrangement:_,bounds:v,selectedKey:y,viewport:b});x.current={arrangement:_,bounds:v,selectedKey:y,viewport:b};function S(e){let t={...x.current,...e};x.current=t,a({spatial:t})}function C(e){S({viewport:e})}let w=(0,s.useMemo)(()=>{let e={};return t.forEach((n,r)=>{_===`manual`?e[n.key]=v[n.key]??K(r,t.length,`cascade`):e[n.key]=K(r,t.length,_)}),e},[t,_,v]);function T(e){if(e===`manual`){let e={};for(let n of t)e[n.key]=w[n.key];S({arrangement:`manual`,bounds:e})}else S({arrangement:e,bounds:{}})}function E(e,n){if(x.current.arrangement!==`manual`){let r={};for(let e of t)r[e.key]=w[e.key];r[e]=n,S({arrangement:`manual`,bounds:r,selectedKey:e});return}S({bounds:{...x.current.bounds,[e]:n},selectedKey:e})}function D(e){x.current.selectedKey!==e&&(S({selectedKey:e}),e&&d(e))}let O=(0,s.useRef)(null);function k(){if(t.length===0){O.current?.fitToView();return}let e=1/0,n=1/0,r=-1/0,i=-1/0;for(let a of t){let t=w[a.key];t&&(e=Math.min(e,t.x),n=Math.min(n,t.y),r=Math.max(r,t.x+t.w),i=Math.max(i,t.y+t.h))}isFinite(e)&&O.current?.fitToView({x:e,y:n,w:r-e,h:i-n})}function A(){let e=y;if(!e)return;let t=w[e];t&&O.current?.centerOn(t.x+t.w/2,t.y+t.h/2)}function j(e){let t=w[e];t&&O.current?.centerOn(t.x+t.w/2,t.y+t.h/2)}function N(e){let n=t.findIndex(t=>t.key===e);n<0||E(e,K(n,t.length,`cascade`))}let P=(0,s.useRef)({fitToView:k,resetViewport:()=>O.current?.resetViewport(),centerOnSelected:A,setArrangement:T,centerOnCard:j,resetBoundsForCard:N});P.current={fitToView:k,resetViewport:()=>O.current?.resetViewport(),centerOnSelected:A,setArrangement:T,centerOnCard:j,resetBoundsForCard:N},(0,s.useEffect)(()=>{let e=[f.commands.register({id:`surface.fitToView`,title:`Fit to view`,description:`Frame all cards`,icon:`⛶`,color:`blue`,slots:[`surface:context`],when:`$/surface/layoutId == "spatial"`,run:e=>{P.current.fitToView(),e.host?.closeMenu()}}),f.commands.register({id:`surface.resetZoom`,title:`Reset zoom`,icon:`↺`,slots:[`surface:context`],when:`$/surface/layoutId == "spatial"`,run:e=>{P.current.resetViewport(),e.host?.closeMenu()}}),f.commands.register({id:`surface.centerSelected`,title:`Center on selected`,icon:`◎`,color:`teal`,slots:[`surface:context`],when:`$/surface/layoutId == "spatial" && $/surface/hasSelection == true`,run:e=>{P.current.centerOnSelected(),e.host?.closeMenu()}}),f.commands.register({id:`surface.setArrangement.cascade`,title:`Arrange: Cascade`,icon:`▤`,slots:[`surface:context`],when:`$/surface/layoutId == "spatial" && $/surface/arrangement != "cascade"`,run:e=>{P.current.setArrangement(`cascade`),e.host?.closeMenu()}}),f.commands.register({id:`surface.setArrangement.grid`,title:`Arrange: Grid`,icon:`▦`,color:`violet`,slots:[`surface:context`],when:`$/surface/layoutId == "spatial" && $/surface/arrangement != "grid"`,run:e=>{P.current.setArrangement(`grid`),e.host?.closeMenu()}}),f.commands.register({id:`surface.setArrangement.manual`,title:`Arrange: Manual`,icon:`✥`,slots:[`surface:context`],when:`$/surface/layoutId == "spatial" && $/surface/arrangement != "manual"`,run:e=>{P.current.setArrangement(`manual`),e.host?.closeMenu()}}),f.commands.register({id:`card.centerOn`,title:`Center on this card`,icon:`◎`,color:`teal`,slots:[`card:context`],when:`$/surface/layoutId == "spatial"`,run:e=>{let t=e.store.get(`$/tab/key`);t&&(P.current.centerOnCard(t),e.host?.closeMenu())}}),f.commands.register({id:`card.resetBounds`,title:`Reset bounds`,description:`Recompute size + position`,icon:`↺`,slots:[`card:context`],when:`$/surface/layoutId == "spatial"`,run:e=>{let t=e.store.get(`$/tab/key`);t&&(P.current.resetBoundsForCard(t),e.host?.closeMenu())}})];return()=>{for(let t of e)t.dispose()}},[f]);let F=(0,s.useMemo)(()=>t.map(e=>({id:e.key,type:`card`,bounds:w[e.key],selected:e.key===y,data:{mount:e,renderMount:o,onClose:()=>u(e.key)}})),[t,w,y,o,u]),I=t.flatMap(e=>{let t=w[e.key];if(!t)return[];let n=f.components.get(e.component.component)?.opens?.color;return[{id:e.key,bounds:t,color:n,selected:e.key===y}]});function L(e){e.preventDefault(),m({x:e.clientX,y:e.clientY})}return t.length===0?(0,c.jsx)(`div`,{style:{padding:24,color:`var(--oo-color-muted)`},children:`Nothing open.`}):(0,c.jsxs)(`div`,{className:`oo-layout oo-layout--spatial`,style:{display:`flex`,flexDirection:`column`,height:`100%`},children:[(0,c.jsxs)(l,{className:`oo-spatial-toolbar`,children:[(0,c.jsxs)(`label`,{style:{display:`flex`,gap:6,alignItems:`center`},children:[(0,c.jsx)(`span`,{style:{color:`var(--oo-color-muted)`},children:`arrange:`}),(0,c.jsxs)(`select`,{value:_,onChange:e=>T(e.target.value),children:[(0,c.jsx)(`option`,{value:`cascade`,children:`cascade`}),(0,c.jsx)(`option`,{value:`grid`,children:`grid`}),(0,c.jsx)(`option`,{value:`manual`,children:`manual`})]})]}),(0,c.jsx)(`button`,{type:`button`,onClick:()=>O.current?.zoomBy(1/J),title:`Zoom out`,"aria-label":`Zoom out`,children:`−`}),(0,c.jsx)(Q,{value:b.scale,onCommit:e=>O.current?.zoomToScale(e)}),(0,c.jsx)(`button`,{type:`button`,onClick:()=>O.current?.zoomBy(J),title:`Zoom in`,"aria-label":`Zoom in`,children:`+`}),(0,c.jsx)(`button`,{type:`button`,onClick:k,title:`Fit all cards to viewport`,children:`Fit`}),(0,c.jsx)(`button`,{type:`button`,onClick:()=>O.current?.resetViewport(),title:`Reset zoom + pan`,children:`Reset`}),(0,c.jsxs)(`span`,{style:{color:`var(--oo-color-muted)`,fontSize:`var(--oo-font-size-xs)`},children:[`drag header to move · drag edges to resize · ctrl+wheel zooms · drag empty area to pan · first drag locks to `,(0,c.jsx)(`em`,{children:`manual`})]})]}),(0,c.jsx)(`div`,{style:{flex:1,minHeight:0,position:`relative`},children:(0,c.jsx)(M,{ref:O,viewport:b,onViewportChange:C,maxDepth:G,nodes:F,nodeTypes:ne,onNodeCommit:(e,t)=>E(e,t),onNodeSelect:e=>D(e),onNodeContextMenu:(e,t)=>g({x:t.clientX,y:t.clientY,key:e}),onBackgroundClick:()=>D(void 0),onBackgroundContextMenu:L,children:(0,c.jsx)(ee,{nodes:I,onJumpTo:(e,t)=>O.current?.centerOn(e,t)})})}),y?(0,c.jsx)(X,{selectedKey:y,onCenter:()=>j(y),onReset:()=>N(y),onClose:()=>u(y),onDeselect:()=>D(void 0)}):null,p?(0,c.jsx)(i,{x:p.x,y:p.y,onClose:()=>m(null),spec:{query:{slot:`surface:context`},footerHints:!0},context:{"$/surface/name":e,"$/surface/layoutId":`spatial`,"$/surface/mountCount":t.length,"$/surface/closedHistory":0,"$/surface/arrangement":_,"$/surface/hasSelection":!!y}}):null,h?(0,c.jsx)(i,{x:h.x,y:h.y,onClose:()=>g(null),spec:{query:{slot:`card:context`},footerHints:!0},context:{"$/surface/name":e,"$/surface/layoutId":`spatial`,"$/surface/mountCount":t.length,"$/surface/closedHistory":0,"$/surface/arrangement":_,"$/tab/key":h.key,"$/tab/index":t.findIndex(e=>e.key===h.key),"$/tab/canSplit":!1,"$/tab/canMove":!1,"$/tab/isActive":h.key===y,"$/tab/isPinned":!1,"$/group/tabCount":t.length}}):null]})}function X({selectedKey:e,onCenter:t,onReset:n,onClose:r,onDeselect:i}){return(0,c.jsxs)(`div`,{className:`oo-spatial-footer`,role:`toolbar`,"aria-label":`Selected card actions`,style:{position:`absolute`,bottom:16,left:`50%`,transform:`translateX(-50%)`,display:`flex`,alignItems:`center`,gap:4,padding:`6px 8px`,background:`rgba(20, 20, 24, 0.78)`,backdropFilter:`blur(8px)`,WebkitBackdropFilter:`blur(8px)`,borderRadius:9999,color:`#fff`,fontSize:`var(--oo-font-size-xs)`,boxShadow:`0 6px 20px rgba(0, 0, 0, 0.32)`,pointerEvents:`auto`,zIndex:50},onPointerDown:e=>e.stopPropagation(),children:[(0,c.jsx)(`span`,{style:{padding:`0 8px`,color:`rgba(255, 255, 255, 0.65)`,fontFamily:`var(--oo-font-mono)`,maxWidth:180,overflow:`hidden`,textOverflow:`ellipsis`,whiteSpace:`nowrap`},title:e,children:e}),(0,c.jsx)(Z,{icon:`◎`,label:`Center on this card`,onClick:t}),(0,c.jsx)(Z,{icon:`↺`,label:`Reset bounds`,onClick:n}),(0,c.jsx)(Z,{icon:`✕`,label:`Close`,onClick:r,variant:`danger`}),(0,c.jsx)(Z,{icon:`⊗`,label:`Deselect`,onClick:i})]})}function Z({icon:e,label:t,onClick:n,variant:r}){return(0,c.jsx)(`button`,{type:`button`,onClick:n,title:t,"aria-label":t,style:{width:28,height:28,display:`inline-flex`,alignItems:`center`,justifyContent:`center`,border:`none`,borderRadius:`50%`,background:`rgba(255, 255, 255, 0.08)`,color:r===`danger`?`rgb(255, 130, 130)`:`#fff`,cursor:`pointer`,font:`inherit`,lineHeight:1},onMouseEnter:e=>{e.currentTarget.style.background=`rgba(255, 255, 255, 0.18)`},onMouseLeave:e=>{e.currentTarget.style.background=`rgba(255, 255, 255, 0.08)`},children:e})}function Q({value:e,onCommit:t}){let n=Math.round(e*100),[r,i]=(0,s.useState)(`${n}`),[a,o]=(0,s.useState)(!1);!a&&r!==`${n}`&&i(`${n}`);function l(){let e=parseInt(r,10);Number.isFinite(e)&&e>0?t(e/100):i(`${n}`),o(!1)}return(0,c.jsx)(`input`,{type:`text`,inputMode:`numeric`,value:a?r:`${n}%`,onFocus:e=>{o(!0),i(`${n}`),requestAnimationFrame(()=>e.target.select?.())},onChange:e=>i(e.target.value.replace(/[^\d]/g,``)),onBlur:l,onKeyDown:e=>{e.key===`Enter`?(e.preventDefault(),e.target.blur()):e.key===`Escape`&&(e.preventDefault(),i(`${n}`),o(!1),e.target.blur())},title:`Zoom percent`,"aria-label":`Zoom percent`,style:{width:56,textAlign:`center`,font:`inherit`,padding:`2px 4px`,border:`1px solid var(--oo-color-border)`,borderRadius:`var(--oo-radius-sm, 4px)`,background:`var(--oo-color-canvas)`,color:`inherit`}})}export{Y as SpatialLayout};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.oo-toolbar{align-items:center;gap:var(--oo-spacing-sm);padding:var(--oo-spacing-xs) var(--oo-spacing-sm);border-bottom:1px solid var(--oo-color-border);background:var(--oo-color-surface);color:inherit;font-size:var(--oo-font-size-sm);min-height:var(--oo-toolbar-height,32px);-webkit-user-select:none;user-select:none;flex:none;display:flex}.oo-toolbar[data-direction=column]{border-bottom:none;border-right:1px solid var(--oo-color-border);min-height:0;min-width:var(--oo-toolbar-height,32px);flex-direction:column;align-items:stretch}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as e}from"./jsx-runtime-BguD1OXD.js";import{r as t}from"./colors-BieSUSt7.js";var n=e();function r({label:e,size:r=16,color:i,inline:a=!0,style:o,className:s}){let c={"--oo-spinner-size":`${r}px`,"--oo-spinner-color":i?t(i):`var(--oo-color-accent)`,...a?{display:`inline-flex`}:{display:`flex`},...o};return(0,n.jsxs)(`span`,{role:`status`,"aria-live":`polite`,"aria-label":e??`Loading`,className:[`oo-spinner-wrap`,s].filter(Boolean).join(` `),style:c,children:[(0,n.jsx)(`span`,{className:`oo-spinner`,"aria-hidden":!0}),e?(0,n.jsx)(`span`,{className:`oo-spinner__label`,children:e}):null]})}export{r as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.oo-spinner-wrap{align-items:center;gap:var(--oo-spacing-sm);font-size:var(--oo-font-size-sm);color:var(--oo-color-muted)}.oo-spinner{width:var(--oo-spinner-size,16px);height:var(--oo-spinner-size,16px);border:2px solid var(--oo-color-border);border-top-color:var(--oo-spinner-color,var(--oo-color-accent));border-radius:50%;flex:none;animation:.8s linear infinite oo-spin;display:inline-block}@keyframes oo-spin{to{transform:rotate(360deg)}}.oo-spinner__label{line-height:1}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as e}from"./jsx-runtime-BguD1OXD.js";import{t}from"./react-CybPckBe.js";import{n}from"./ScenaProvider-6A3TJumQ.js";import{t as r}from"./ContextMenu-qqlGWvJT.js";import{r as i}from"./Icon-CIQ7doud.js";import{t as a}from"./Divisor-hrrJK3bw.js";import{t as o}from"./MountTitle-hWvATFel.js";var s=e(),c=t(),l=.05,u=`application/x-scena-split-index`;function d({surface:e,mounts:t,state:d,setState:p,renderMount:m,onClose:h,onReorder:g}){let _=n(),v=(0,c.useRef)(null),y=d.split?.order??[],b=new Set(y),x=y.map(e=>t.find(t=>t.key===e)).filter(e=>!!e),S=t.filter(e=>!b.has(e.key)),C=[...x,...S],w=C.length>0?1/C.length:1,T=(()=>{let e=d.split?.ratios;return e&&e.length===C.length?e:C.map(()=>w)})();function E(e,t){let n=t;if(C.length<2)return;let r=T.slice(0,n).reduce((e,t)=>e+t,0),i=(T[n]??0)+(T[n+1]??0);if(i<=0)return;let a=f(e-r,l,i-l),o=i-a;o<l&&(o=l,a=i-o);let s=[...T];s[n]=a,s[n+1]=o,p({split:{order:d.split?.order,ratios:s,collapsed:d.split?.collapsed}})}let[D,O]=(0,c.useState)(null),[k,A]=(0,c.useState)(null),[j,M]=(0,c.useState)(null);function N(e,t,n){e.preventDefault(),e.stopPropagation(),A({x:e.clientX,y:e.clientY,key:t,idx:n})}function P(e){e.target===e.currentTarget&&(e.preventDefault(),M({x:e.clientX,y:e.clientY}))}let F={"$/surface/name":e,"$/surface/layoutId":`split`,"$/surface/mountCount":t.length,"$/surface/closedHistory":0,"$/tab/canSplit":!1,"$/tab/canMove":!1,"$/group/canClose":!1,"$/group/canMaximize":!1};function I(e,t){e.dataTransfer.setData(u,String(t)),e.dataTransfer.effectAllowed=`move`}function L(e,t){e.dataTransfer.types.includes(u)&&(e.preventDefault(),e.dataTransfer.dropEffect=`move`,O(t))}function R(){O(null)}function z(e,t){if(!e.dataTransfer.types.includes(u))return;e.preventDefault();let n=Number(e.dataTransfer.getData(u));O(null),Number.isFinite(n)&&n!==t&&g(n,t)}return C.length===0?(0,s.jsx)(`div`,{style:{padding:24,color:`var(--oo-color-muted)`},children:`Nothing open.`}):(0,s.jsxs)(`div`,{ref:v,className:`oo-layout oo-layout--split`,style:{display:`flex`,flexDirection:`row`,height:`100%`,minHeight:0},onContextMenu:P,children:[C.map((e,t)=>{let n=_.components.get(e.component.component)?.props,r=e.props?.color??n?.color;return(0,s.jsxs)(c.Fragment,{children:[(0,s.jsxs)(`div`,{"data-pane-index":t,"data-drag-over":D===t,"data-color":r,className:`oo-split-pane`,style:{flex:T[t]??w,minWidth:0,overflow:`hidden`,display:`flex`,flexDirection:`column`},children:[(0,s.jsxs)(`div`,{className:`oo-split-pane-header`,draggable:!0,onDragStart:e=>I(e,t),onDragOver:e=>L(e,t),onDragLeave:R,onDrop:e=>z(e,t),onContextMenu:n=>N(n,e.key,t),style:{flex:`0 0 auto`,display:`flex`,alignItems:`center`,justifyContent:`space-between`,padding:`var(--oo-spacing-xs) var(--oo-spacing-sm)`,background:`var(--oo-color-surface)`,borderBottom:`1px solid var(--oo-color-border)`,fontSize:`var(--oo-font-size-xs)`,color:`var(--oo-color-muted)`,cursor:`grab`,userSelect:`none`},children:[(0,s.jsx)(o,{mount:e,fallback:e.key,iconClassName:`oo-split-pane-header__icon`,titleClassName:`oo-split-pane-header__title`}),(0,s.jsx)(`span`,{onClick:t=>{t.stopPropagation(),h(e.key)},title:`Close`,style:{cursor:`pointer`},children:i.closePanel})]}),(0,s.jsx)(`div`,{style:{flex:1,overflow:`auto`,minHeight:0},children:m(e)})]}),t<C.length-1?(0,s.jsx)(a,{id:t,direction:`row`,containerRef:v,onCommit:E}):null]},e.key)}),k?(0,s.jsx)(r,{x:k.x,y:k.y,onClose:()=>A(null),spec:{query:{slot:`tab:context`},footerHints:!0},context:{...F,"$/tab/key":k.key,"$/tab/index":k.idx,"$/tab/isActive":!0,"$/tab/isPinned":!1,"$/group/tabCount":t.length}}):null,j?(0,s.jsx)(r,{x:j.x,y:j.y,onClose:()=>M(null),spec:{query:{slot:`surface:context`},footerHints:!0},context:F}):null]})}function f(e,t,n){return Math.max(t,Math.min(n,e))}export{d as SplitLayout};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as e}from"./jsx-runtime-BguD1OXD.js";import{t}from"./react-CybPckBe.js";var n=e(),r=t();function i({orientation:e=`horizontal`,ratio:t=.5,min:i=.1,max:o=.9,handleSize:s=4,onRatioChange:c,first:l,second:u}){let[d,f]=(0,r.useState)(a(t,i,o)),p=(0,r.useRef)(null),m=(0,r.useRef)(!1),h=(0,r.useRef)(null),g=(0,r.useRef)(null);(0,r.useEffect)(()=>{f(a(t,i,o))},[t,i,o]);function _(){if(g.current!==null){let e=g.current;f(e),c?.(e),g.current=null}h.current=null}function v(e){e.preventDefault(),e.currentTarget.setPointerCapture(e.pointerId),m.current=!0}function y(t){if(!m.current||!p.current)return;let n=p.current.getBoundingClientRect(),r=e===`horizontal`?(t.clientX-n.left)/n.width:(t.clientY-n.top)/n.height;g.current=a(r,i,o),h.current===null&&(h.current=requestAnimationFrame(_))}function b(e){h.current!==null&&(cancelAnimationFrame(h.current),_()),e.currentTarget.releasePointerCapture(e.pointerId),m.current=!1}let x={display:`flex`,flexDirection:e===`horizontal`?`row`:`column`,width:`100%`,height:`100%`,overflow:`hidden`},S=e===`horizontal`?{width:s,cursor:`ew-resize`,background:`var(--oo-color-border, rgba(0,0,0,0.1))`}:{height:s,cursor:`ns-resize`,background:`var(--oo-color-border, rgba(0,0,0,0.1))`};return(0,n.jsxs)(`div`,{ref:p,className:`oo-splitter`,style:x,children:[(0,n.jsx)(`div`,{style:{flex:d,overflow:`auto`,minWidth:0,minHeight:0},children:l}),(0,n.jsx)(`div`,{className:`oo-splitter-handle`,onPointerDown:v,onPointerMove:y,onPointerUp:b,style:{flex:`0 0 auto`,userSelect:`none`,touchAction:`none`,...S}}),(0,n.jsx)(`div`,{style:{flex:1-d,overflow:`auto`,minWidth:0,minHeight:0},children:u})]})}function a(e,t,n){return Math.max(t,Math.min(n,e))}export{i as Splitter};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as e}from"./jsx-runtime-BguD1OXD.js";import{t}from"./react-CybPckBe.js";import{n}from"./ScenaProvider-6A3TJumQ.js";import{t as r}from"./ContextMenu-qqlGWvJT.js";import{r as i}from"./Icon-CIQ7doud.js";import{n as a,t as o}from"./MountTitle-hWvATFel.js";var s=e(),c=t();function l({mounts:e,state:t,setState:o,title:l,icon:u,color:d}){let f=n(),p=t.split?.order??[],m=new Set(p),h=p.map(t=>e.find(e=>e.key===t)).filter(e=>!!e),g=e.filter(e=>!m.has(e.key)),_=[...h,...g],v=new Set(t.stack?.hidden??[]),[y,b]=(0,c.useState)(null);function x(e){o({stack:{...t.stack,hidden:[...e]}})}function S(e){let t=new Set(v);t.has(e)?t.delete(e):t.add(e),x(t)}function C(e){e.stopPropagation();let t=e.currentTarget.getBoundingClientRect();b({x:t.right,y:t.bottom+2})}return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(`div`,{className:`oo-stack-container-header`,"data-color":d,style:{flex:`0 0 auto`,display:`flex`,alignItems:`center`,justifyContent:`space-between`,padding:`var(--oo-spacing-xs) var(--oo-spacing-sm)`,background:`var(--oo-color-surface)`,borderBottom:`1px solid var(--oo-color-border)`,fontSize:`var(--oo-font-size-xs)`,textTransform:`uppercase`,letterSpacing:`0.06em`,color:`var(--oo-color-muted)`,userSelect:`none`,minWidth:0,minHeight:32},children:[(0,s.jsxs)(`span`,{style:{display:`inline-flex`,alignItems:`center`,gap:6},children:[u?(0,s.jsx)(`span`,{className:`oo-stack-container-header__icon`,"aria-hidden":!0,children:u}):null,(0,s.jsx)(`span`,{className:`oo-stack-container-header__title`,children:l})]}),(0,s.jsx)(`button`,{type:`button`,className:`oo-stack-container-header__overflow`,title:`Toggle panes`,"aria-label":`Toggle panes`,onClick:C,style:{background:`transparent`,border:`none`,color:`var(--oo-color-muted)`,cursor:`pointer`,font:`inherit`,padding:`0 4px`},children:i.moreHoriz})]}),y?(0,s.jsx)(r,{x:y.x,y:y.y,onClose:()=>b(null),spec:{footerHints:!0,items:_.map(e=>{let t=f.components.get(e.component.component)?.props,n=!v.has(e.key);return{title:a(f,e),icon:e.props?.icon??t?.icon,color:e.props?.color??t?.color,active:n,onSelect:t=>{S(e.key),t.closeMenu()}}})}}):null]})}var u=`application/x-scena-stack-index`;function d({surface:e,mounts:t,state:a,setState:d,renderMount:f,onClose:p,onReorder:m}){let h=n(),g=a.split?.order??[],_=new Set(g),v=g.map(e=>t.find(t=>t.key===e)).filter(e=>!!e),y=t.filter(e=>!_.has(e.key)),b=[...v,...y],x=new Set(a.stack?.hidden??[]),S=b.filter(e=>!x.has(e.key)),C=a.stack?.container,w=new Set(a.split?.collapsed??[]),[T,E]=(0,c.useState)(null);function D(e){let t=new Set(w);t.has(e)?t.delete(e):t.add(e),d({split:{order:a.split?.order,ratios:a.split?.ratios,collapsed:[...t]}})}function O(e,t){e.dataTransfer.setData(u,String(t)),e.dataTransfer.effectAllowed=`move`}function k(e,t){e.dataTransfer.types.includes(u)&&(e.preventDefault(),e.dataTransfer.dropEffect=`move`,E(t))}function A(){E(null)}function j(e,t){if(!e.dataTransfer.types.includes(u))return;e.preventDefault();let n=Number(e.dataTransfer.getData(u));E(null),Number.isFinite(n)&&n!==t&&m(n,t)}let[M,N]=(0,c.useState)(null),[P,F]=(0,c.useState)(null);function I(e,t,n){e.preventDefault(),e.stopPropagation(),N({x:e.clientX,y:e.clientY,key:t,idx:n})}function L(e){e.target===e.currentTarget&&(e.preventDefault(),F({x:e.clientX,y:e.clientY}))}let R={"$/surface/name":e,"$/surface/layoutId":`stack`,"$/surface/mountCount":t.length,"$/surface/closedHistory":0,"$/tab/canSplit":!1,"$/tab/canMove":t.length>1,"$/group/canClose":!1,"$/group/canMaximize":!1};return(0,s.jsxs)(`div`,{className:`oo-layout oo-layout--stack`,style:{display:`flex`,flexDirection:`column`,height:`100%`,minHeight:0},onContextMenu:L,children:[(0,s.jsx)(l,{title:C?.title??`Details`,icon:C?.icon,color:C?.color,mounts:t,state:a,setState:d}),S.map((e,t)=>{let n=w.has(e.key),r=h.components.get(e.component.component)?.props,a=e.props?.color??r?.color;return(0,s.jsxs)(`div`,{className:`oo-stack-section`,"data-collapsed":n,"data-drag-over":T===t,"data-color":a,style:{flex:n?`0 0 auto`:1,minHeight:0,display:`flex`,flexDirection:`column`,borderBottom:`1px solid var(--oo-color-border)`},children:[(0,s.jsxs)(`div`,{className:`oo-stack-header`,draggable:!0,onDragStart:e=>O(e,t),onDragOver:e=>k(e,t),onDragLeave:A,onDrop:e=>j(e,t),onClick:()=>D(e.key),onContextMenu:n=>I(n,e.key,t),style:{cursor:`grab`,padding:`var(--oo-spacing-xs) var(--oo-spacing-sm)`,background:`var(--oo-color-surface)`,fontSize:`var(--oo-font-size-xs)`,textTransform:`uppercase`,color:`var(--oo-color-muted)`,display:`flex`,justifyContent:`space-between`,alignItems:`center`,userSelect:`none`},children:[(0,s.jsxs)(`span`,{style:{display:`inline-flex`,alignItems:`center`,gap:6},children:[(0,s.jsx)(`span`,{"aria-hidden":!0,children:n?`▶`:`▼`}),(0,s.jsx)(o,{mount:e,fallback:e.key,iconClassName:`oo-stack-section__icon`,titleClassName:`oo-stack-section__title`})]}),(0,s.jsx)(`span`,{onClick:t=>{t.stopPropagation(),p(e.key)},title:`Close`,style:{cursor:`pointer`},children:i.closePanel})]}),n?null:(0,s.jsx)(`div`,{style:{flex:1,overflow:`auto`,minHeight:0},children:f(e)})]},e.key)}),M?(0,s.jsx)(r,{x:M.x,y:M.y,onClose:()=>N(null),spec:{query:{slot:`tab:context`},footerHints:!0},context:{...R,"$/tab/key":M.key,"$/tab/index":M.idx,"$/tab/isActive":!0,"$/tab/isPinned":!1,"$/group/tabCount":t.length}}):null,P?(0,s.jsx)(r,{x:P.x,y:P.y,onClose:()=>F(null),spec:{query:{slot:`surface:context`},footerHints:!0},context:R}):null]})}export{d as StackLayout};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as e}from"./jsx-runtime-BguD1OXD.js";import{r as t}from"./colors-BieSUSt7.js";var n=e();function r({tone:e,color:r,label:i,children:a,tint:o,outline:s,size:c,title:l,style:u,className:d}){let f=i??a,p={...r?{"--oo-color":t(r)}:{},...c?{"--oo-status-dot-size":`${c}px`}:{}},m=(0,n.jsx)(`span`,{className:[`oo-status-dot`,f==null?d:void 0].filter(Boolean).join(` `),"data-tone":r?void 0:e??`default`,"data-outline":s?`true`:void 0,title:l??(f==null?void 0:String(f)),style:f==null?{...p,...u}:p});return f==null?m:(0,n.jsxs)(`span`,{className:[`oo-status-dot-wrap`,d].filter(Boolean).join(` `),"data-tint":o?`true`:void 0,style:{...p,...u},children:[m,(0,n.jsx)(`span`,{className:`oo-status-dot-label`,children:f})]})}export{r as StatusDot};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.oo-status-dot{--oo-status-dot-size:8px;width:var(--oo-status-dot-size);height:var(--oo-status-dot-size);background:rgb(var(--oo-color,var(--oo-rgb-muted)));border-radius:50%;flex:none;display:inline-block}.oo-status-dot[data-tone=default]{--oo-color:var(--oo-rgb-muted)}.oo-status-dot[data-tone=success]{--oo-color:var(--oo-rgb-green)}.oo-status-dot[data-tone=warning]{--oo-color:var(--oo-rgb-amber)}.oo-status-dot[data-tone=danger]{--oo-color:var(--oo-rgb-red)}.oo-status-dot[data-tone=info]{--oo-color:var(--oo-rgb-blue)}.oo-status-dot[data-outline=true]{box-shadow:inset 0 0 0 1.5px rgb(var(--oo-color,var(--oo-rgb-muted)));background:0 0}.oo-status-dot-wrap{align-items:center;gap:6px;min-width:0;display:inline-flex}.oo-status-dot-label{font-size:var(--oo-font-size-xs);text-overflow:ellipsis;white-space:nowrap;line-height:1.4;overflow:hidden}.oo-status-dot-wrap[data-tint=true] .oo-status-dot-label{color:rgb(var(--oo-color,var(--oo-rgb-muted)))}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as e}from"./jsx-runtime-BguD1OXD.js";import{t}from"./react-CybPckBe.js";import{n}from"./ScenaProvider-6A3TJumQ.js";import{t as r}from"./ContextMenu-qqlGWvJT.js";import{r as i}from"./Icon-CIQ7doud.js";import{TabTitle as a}from"./TabPanelLayout-DkFUNHcz.js";var o=e(),s=t(),c=`application/x-scena-tab-index`;function l({surface:e,mounts:t,state:l,renderMount:u,onActivate:d,onClose:f,onReorder:p}){let m=n(),h=l.split?.order??[],g=new Set(h),_=h.map(e=>t.find(t=>t.key===e)).filter(e=>!!e),v=t.filter(e=>!g.has(e.key)),y=[..._,...v],b=y.find(e=>e.key===l.activeContainerKey)??y[y.length-1],x=new Set(l.split?.pinned??[]),S=b?m.commands.list({slot:`view/title`,enabled:!0}):[],C=b?.component.component,w={"$/surface/name":e,"$/tab/key":b?.key,"$/tab/component":typeof C==`string`?C:void 0},T=m.commands.list({slot:`surface/title`}).filter(e=>e.when===void 0||m.when.evaluate(e.when,w)),E=t=>{m.store.set(`$/surface/name`,e),m.store.set(`$/tab/key`,b?.key),m.commands.execute(t)},[D,O]=(0,s.useState)(null),[k,A]=(0,s.useState)(null),[j,M]=(0,s.useState)(null),[N,P]=(0,s.useState)(null),F=(0,s.useRef)(null);(0,s.useEffect)(()=>{let e=F.current;if(!e)return;function t(t){t.deltaY!==0&&(t.preventDefault(),e.scrollLeft+=t.deltaY)}return e.addEventListener(`wheel`,t,{passive:!1}),()=>e.removeEventListener(`wheel`,t)},[]);function I(e,t,n){e.preventDefault(),e.stopPropagation(),A({x:e.clientX,y:e.clientY,tabKey:t,tabIdx:n})}function L(e){let t=e.currentTarget.getBoundingClientRect();M({x:t.right,y:t.bottom+2})}function R(e){e.target===e.currentTarget&&(e.preventDefault(),P({x:e.clientX,y:e.clientY}))}function z(e,t){e.dataTransfer.setData(c,String(t)),e.dataTransfer.effectAllowed=`move`}function B(e,t){e.dataTransfer.types.includes(c)&&(e.preventDefault(),e.dataTransfer.dropEffect=`move`,O(t))}function V(){O(null)}function H(e,t){if(!e.dataTransfer.types.includes(c))return;e.preventDefault();let n=Number(e.dataTransfer.getData(c));O(null),Number.isFinite(n)&&n!==t&&p(n,t)}let U={"$/tab/canSplit":!1,"$/tab/canMove":!1,"$/group/canClose":!1,"$/group/canMaximize":!1,"$/surface/name":e,"$/surface/layoutId":`tab`,"$/surface/mountCount":t.length,"$/surface/closedHistory":0},W=k?y.find(e=>e.key===k.tabKey):void 0,G=W?m.mountMenus.collect(`tab:context`,W):void 0;return(0,o.jsxs)(`div`,{className:`oo-layout oo-layout--tab`,style:{display:`flex`,flexDirection:`column`,height:`100%`},children:[(0,o.jsxs)(`div`,{className:`tab-bar`,children:[(0,o.jsx)(`div`,{className:`tab-bar__strip`,ref:F,children:y.map((t,n)=>{let r=x.has(t.key);return(0,o.jsx)(a,{resourceKey:t.key,m:t,idx:n,isPinned:r,isActive:t===b,dragOverTab:D,onDragStart:e=>z(e,n),onDragOver:e=>B(e,n),onDragLeave:V,onDrop:e=>H(e,n),onClick:()=>d(t.key),onContextMenu:e=>I(e,t.key,n),onClose:e=>{e.stopPropagation(),f(t.key)},onUnpin:n=>{n.stopPropagation(),m.store.set(`$/tab/key`,t.key),m.store.set(`$/surface/name`,e),m.commands.execute(`tab.unpin`)}},t.key)})}),(0,o.jsxs)(`div`,{className:`tab-bar__extras`,children:[S.map((e,t)=>{let n=typeof e.title==`function`?e.title():e.title;return(0,o.jsxs)(`button`,{onClick:()=>m.commands.execute(e.id),title:String(n),children:[e.icon?`${e.icon} `:``,String(n)]},t)}),T.map(e=>{let t=String(typeof e.title==`function`?e.title():e.title);return(0,o.jsx)(`button`,{onClick:()=>E(e.id),title:t,"aria-label":t,children:e.icon??t},e.id)}),(0,o.jsx)(`button`,{className:`tab-bar__more`,title:`Group actions`,"aria-label":`Group actions`,onClick:L,children:i.moreHoriz})]})]}),(0,o.jsx)(`div`,{style:{flex:1,minHeight:0,position:`relative`},onContextMenu:R,children:y.length===0?(0,o.jsx)(`div`,{style:{padding:24,color:`var(--oo-color-muted)`},children:`Nothing open.`}):y.map(e=>(0,o.jsx)(`div`,{className:`oo-layout__mount`,"data-active":e===b||void 0,style:{height:`100%`,overflow:`auto`,display:e===b?`block`:`none`},children:u(e)},e.key))}),k?(0,o.jsx)(r,{x:k.x,y:k.y,onClose:()=>A(null),spec:{query:{slot:`tab:context`},extraItems:G,footerHints:!0},context:{...U,"$/tab/key":k.tabKey,"$/tab/index":k.tabIdx,"$/tab/isActive":k.tabKey===b?.key,"$/tab/isPinned":x.has(k.tabKey),"$/group/tabCount":y.length}}):null,j?(0,o.jsx)(r,{x:j.x,y:j.y,onClose:()=>M(null),spec:{query:{slot:`tab-group:context`},footerHints:!0},context:{...U,"$/group/tabCount":y.length}}):null,N?(0,o.jsx)(r,{x:N.x,y:N.y,onClose:()=>P(null),spec:{query:{slot:`surface:context`},footerHints:!0},context:U}):null]})}export{l as TabLayout};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as e}from"./jsx-runtime-BguD1OXD.js";import{t}from"./react-CybPckBe.js";import{n}from"./colors-BieSUSt7.js";import{n as r}from"./ScenaProvider-6A3TJumQ.js";import{t as i}from"./ContextMenu-qqlGWvJT.js";import{r as a}from"./Icon-CIQ7doud.js";import{t as o}from"./Divisor-hrrJK3bw.js";import{t as s}from"./useStoreLabel-m9cem_OG.js";var c=e(),l=t(),u=`application/x-scena-tab-panel`,d=.2,f=.05;function p(){return`g_${Math.random().toString(36).slice(2,10)}`}function m(e,t){return{kind:`leaf`,id:p(),tabs:e,activeKey:t}}function h(e,t){if(e.kind===`leaf`){for(let n of e.tabs)t.add(n);return}h(e.first,t),h(e.second,t)}function g(e,t){if(e.kind===`leaf`){t.push(e);return}g(e.first,t),g(e.second,t)}function _(e,t){if(e.kind===`leaf`){let n=e.tabs.filter(e=>t.has(e)),r=e.activeKey&&t.has(e.activeKey)?e.activeKey:n[0];return{...e,tabs:n,activeKey:r}}return{...e,first:_(e.first,t),second:_(e.second,t)}}function v(e,t){if(e.kind===`leaf`)return t(e);let n=v(e.first,t),r=v(e.second,t);return n&&r?{...e,first:n,second:r}:n??r}function y(e,t,n){return e.kind===`leaf`?e.id===t?n:e:{...e,first:y(e.first,t,n),second:y(e.second,t,n)}}function b(e,t,n){return e.kind===`leaf`?e:t(e)?{...e,...n}:{...e,first:b(e.first,t,n),second:b(e.second,t,n)}}function x(e,t){if(e.kind===`leaf`){if(t.has(e.id)){let n=p();return t.add(n),{...e,id:n}}return t.add(e.id),e}return{...e,first:x(e.first,t),second:x(e.second,t)}}function S(e,t,n){let r=new Set(t),i=e?x(_(e,r),new Set):m([...t],n),a=new Set;h(i,a);let o=t.filter(e=>!a.has(e));if(o.length>0){let e=[];g(i,e);let t=n&&e.find(e=>e.tabs.includes(n))||e.find(e=>e.tabs.length>0)||e[0];if(t){let e=n&&o.includes(n)?n:o[o.length-1];i=y(i,t.id,{...t,tabs:[...t.tabs,...o],activeKey:e})}}if(n){let e=v(i,e=>e.tabs.includes(n)&&e.activeKey!==n?{...e,activeKey:n}:e);e&&(i=e)}return{tree:i}}function C(e,t){return e===t?!0:!e||!t||e.kind!==t.kind?!1:e.kind===`leaf`&&t.kind===`leaf`?e.id===t.id&&e.activeKey===t.activeKey&&e.tabs.length===t.tabs.length&&e.tabs.every((e,n)=>e===t.tabs[n]):e.kind===`split`&&t.kind===`split`&&e.direction===t.direction&&(e.ratio??.5)===(t.ratio??.5)&&C(e.first,t.first)&&C(e.second,t.second)}function w({leaf:e,ctx:t}){let n=r(),o=e.activeKey??e.tabs[0],[s,f]=(0,l.useState)(null),[p,m]=(0,l.useState)(null),h=(0,l.useRef)(null),g=(0,l.useRef)(null);(0,l.useEffect)(()=>{let e=g.current;if(!e)return;function t(t){t.deltaY!==0&&(t.preventDefault(),e.scrollLeft+=t.deltaY)}return e.addEventListener(`wheel`,t,{passive:!1}),()=>e.removeEventListener(`wheel`,t)},[]),(0,l.useEffect)(()=>{let e=()=>{m(null),f(null)};return window.addEventListener(`dragend`,e),window.addEventListener(`drop`,e),()=>{window.removeEventListener(`dragend`,e),window.removeEventListener(`drop`,e)}},[]);function _(n){let r=v(t.tree,t=>t.id===e.id?{...t,activeKey:n}:t);r&&t.commit(r),t.onActivate(n)}function y(t,n){let r={sourceLeafId:e.id,tabKey:n};t.dataTransfer.setData(u,JSON.stringify(r)),t.dataTransfer.effectAllowed=`move`}function b(e,t){e.dataTransfer.types.includes(u)&&(e.preventDefault(),e.dataTransfer.dropEffect=`move`,f(t))}function x(){f(null)}function S(n,r){if(!n.dataTransfer.types.includes(u))return;n.preventDefault(),f(null);let i=E(n);i&&O(t,i,e.id,r)}function C(e){let t=h.current;if(!t)return null;let n=t.getBoundingClientRect();if(n.width<=0||n.height<=0)return null;let r=(e.clientX-n.left)/n.width,i=(e.clientY-n.top)/n.height;return i<d?`top`:i>.8?`bottom`:r<d?`left`:r>.8?`right`:`center`}function w(e){e.dataTransfer.types.includes(u)&&(e.preventDefault(),e.dataTransfer.dropEffect=`move`,m(C(e)))}function D(e){let t=e.relatedTarget;(!t||!e.currentTarget.contains(t))&&m(null)}function A(n){if(!n.dataTransfer.types.includes(u))return;n.preventDefault();let r=C(n);m(null);let i=E(n);i&&r&&(r===`center`?O(t,i,e.id,e.tabs.length):k(t,i,e.id,r))}let[j,M]=(0,l.useState)(null);function N(e){e.stopPropagation();let t=e.currentTarget.getBoundingClientRect();M({x:t.right-4,y:t.bottom+2})}function F(){M(null)}let[I,L]=(0,l.useState)(null);function R(e,t,n){e.preventDefault(),L({x:e.clientX,y:e.clientY,tabKey:t,tabIdx:n})}function z(){L(null)}let B=I?t.mounts.find(e=>e.key===I.tabKey):void 0,V=B?n.mountMenus.collect(`tab:context`,B):void 0;return(0,c.jsxs)(`div`,{className:`oo-tab-panel-group`,"data-leaf-id":e.id,style:{flex:1,minWidth:0,minHeight:0,display:`flex`,flexDirection:`column`,overflow:`hidden`},children:[(0,c.jsxs)(`div`,{className:`tab-bar`,children:[(0,c.jsx)(`div`,{className:`tab-bar__strip`,ref:g,children:e.tabs.map((e,r)=>{let i=t.mounts.find(t=>t.key===e);return(0,c.jsx)(P,{resourceKey:e,idx:r,m:i,isActive:e===o,isPinned:t.pinned.has(e),dragOverTab:s,onDragStart:t=>y(t,e),onDragOver:e=>b(e,r),onDragLeave:x,onDrop:e=>S(e,r),onClick:()=>_(e),onContextMenu:t=>R(t,e,r),onClose:()=>t.onClose(e),onUnpin:r=>{r.stopPropagation(),n.store.set(`$/tab/key`,e),n.store.set(`$/surface/name`,t.surface),n.commands.execute(`tab.unpin`)}},e)})}),(0,c.jsx)(`div`,{className:`tab-bar__extras`,children:(0,c.jsx)(`button`,{className:`tab-bar__more`,title:`Group actions`,"aria-label":`Group actions`,onClick:N,children:a.moreHoriz})})]}),(0,c.jsxs)(`div`,{ref:h,onDragOver:w,onDragLeave:D,onDrop:A,style:{flex:1,minHeight:0,position:`relative`,overflow:`auto`},children:[e.tabs.length===0?(0,c.jsx)(`div`,{style:{padding:24,color:`var(--oo-color-muted)`},children:`Empty group. Drag a tab here.`}):e.tabs.map(e=>{let n=t.mounts.find(t=>t.key===e);return n?(0,c.jsx)(`div`,{className:`oo-layout__mount`,"data-active":e===o||void 0,style:{position:`absolute`,inset:0,overflow:`auto`,display:e===o?`block`:`none`},children:t.renderMount(n)},e):null}),p?(0,c.jsx)(T,{zone:p}):null]}),j?(0,c.jsx)(i,{x:j.x,y:j.y,onClose:F,spec:{query:{slot:`tab-group:context`},footerHints:!0},context:{"$/surface/name":t.surface,"$/surface/layoutId":`tab-panel`,"$/surface/mountCount":t.mounts.length,"$/surface/closedHistory":0,"$/group/key":e.id,"$/group/tabCount":e.tabs.length,"$/group/canClose":!0,"$/group/canMaximize":!1,"$/tab/canSplit":!0,"$/tab/canMove":t.leafCount>1}}):null,I?(0,c.jsx)(i,{x:I.x,y:I.y,onClose:z,spec:{query:{slot:`tab:context`},extraItems:V,footerHints:!0},context:{"$/surface/name":t.surface,"$/surface/layoutId":`tab-panel`,"$/surface/mountCount":t.mounts.length,"$/surface/closedHistory":0,"$/group/key":e.id,"$/group/tabCount":e.tabs.length,"$/group/canClose":!0,"$/tab/key":I.tabKey,"$/tab/index":I.tabIdx,"$/tab/leafId":e.id,"$/tab/isActive":I.tabKey===o,"$/tab/isPinned":t.pinned.has(I.tabKey),"$/tab/canSplit":!0,"$/tab/canMove":t.leafCount>1}}):null]})}function T({zone:e}){let t={position:`absolute`,pointerEvents:`none`,background:`rgba(59,130,246,0.12)`,border:`2px solid rgba(59,130,246,0.6)`,boxSizing:`border-box`,zIndex:5,transition:`all 80ms ease-out`},n=(()=>{switch(e){case`center`:return{...t,inset:0};case`top`:return{...t,top:0,left:0,right:0,height:`50%`};case`bottom`:return{...t,bottom:0,left:0,right:0,height:`50%`};case`left`:return{...t,top:0,bottom:0,left:0,width:`50%`};case`right`:return{...t,top:0,bottom:0,right:0,width:`50%`}}})();return(0,c.jsx)(`div`,{className:`oo-tab-panel-drop-preview`,style:n})}function E(e){let t=e.dataTransfer.getData(u);if(!t)return null;try{let e=JSON.parse(t);return typeof e.sourceLeafId!=`string`||typeof e.tabKey!=`string`?null:e}catch{return null}}function D(e,t){return v(e,e=>{if(!e.tabs.includes(t))return e;let n=e.tabs.filter(e=>e!==t);return n.length===0?null:{...e,tabs:n,activeKey:e.activeKey===t?n[0]:e.activeKey}})}function O(e,t,n,r){if(t.sourceLeafId===n){let i=v(e.tree,e=>{if(e.id!==n)return e;let i=e.tabs.indexOf(t.tabKey);if(i===-1)return e;let a=[...e.tabs];a.splice(i,1);let o=i<r?r-1:r;return a.splice(o,0,t.tabKey),{...e,tabs:a,activeKey:t.tabKey}});i&&e.commit(i),e.onActivate(t.tabKey);return}let i=D(e.tree,t.tabKey);if(!i)return;let a=v(i,e=>{if(e.id!==n)return e;let i=[...e.tabs],a=Math.max(0,Math.min(r,i.length));return i.splice(a,0,t.tabKey),{...e,tabs:i,activeKey:t.tabKey}});a&&e.commit(a),e.onActivate(t.tabKey)}function k(e,t,n,r){let i=e.tree,a=A(i,t.sourceLeafId);if(a&&a.id===n&&a.tabs.length===1||(i=D(i,t.tabKey),!i))return;let o=A(i,n);if(!o)return;let s=m([t.tabKey],t.tabKey),c=y(i,n,{kind:`split`,direction:r===`left`||r===`right`?`row`:`column`,ratio:.5,first:r===`left`||r===`top`?s:o,second:r===`left`||r===`top`?o:s});e.commit(c),e.onActivate(t.tabKey)}function A(e,t){return e.kind===`leaf`?e.id===t?e:null:A(e.first,t)||A(e.second,t)}function j({node:e,ctx:t}){return e.kind===`leaf`?(0,c.jsx)(w,{leaf:e,ctx:t}):(0,c.jsx)(M,{node:e,ctx:t})}function M({node:e,ctx:t}){let n=(0,l.useRef)(null),r=e.ratio??.5;function i(n){let r=b(t.tree,t=>t===e,{ratio:n});t.commit(r)}let a=e.direction===`row`;return(0,c.jsxs)(`div`,{ref:n,className:`oo-tab-panel-split`,"data-direction":e.direction,style:{display:`flex`,flexDirection:a?`row`:`column`,flex:1,minWidth:0,minHeight:0},children:[(0,c.jsx)(`div`,{style:{flex:r,minWidth:0,minHeight:0,display:`flex`},children:(0,c.jsx)(j,{node:e.first,ctx:t})}),(0,c.jsx)(o,{direction:e.direction===`row`?`row`:`col`,containerRef:n,min:f,max:.95,onCommit:i}),(0,c.jsx)(`div`,{style:{flex:1-r,minWidth:0,minHeight:0,display:`flex`},children:(0,c.jsx)(j,{node:e.second,ctx:t})})]})}function N({surface:e,mounts:t,state:n,setState:r,renderMount:i,onActivate:a,onClose:o}){let s=t.map(e=>e.key),{tree:u}=S(n.tabPanel?.tree,s,n.activeContainerKey);(0,l.useEffect)(()=>{C(n.tabPanel?.tree,u)||r({tabPanel:{tree:u}})});let d=[];g(u,d);let f={surface:e,mounts:t,renderMount:i,onActivate:a,onClose:o,tree:u,commit:e=>r({tabPanel:{tree:e}}),leafCount:d.length,pinned:new Set(n.split?.pinned??[])};return(0,c.jsx)(`div`,{className:`oo-layout oo-layout--tab-panel`,style:{display:`flex`,height:`100%`,minHeight:0},children:(0,c.jsx)(j,{node:u,ctx:f})})}function P({m:e,resourceKey:t,isActive:i,dragOverTab:o,idx:l,onDragStart:u,onDragOver:d,onDragLeave:f,onDrop:p,onClick:m,onContextMenu:h,onClose:g,onUnpin:_,isPinned:v}){let y=r(),b=e?y.components.get(e.component.component)?.props:void 0,x=s(e?.props?.title??b?.title,``,e?.dataContext)||t,S=e?.props?.icon??b?.icon,C=e?.props?.color??b?.color;return(0,c.jsxs)(`div`,{className:`tab-bar__tab`,"data-active":i,"data-drag-over":o===l?`true`:void 0,"data-color":C,"data-pinned":v||void 0,draggable:!0,onDragStart:u,onDragOver:d,onDragLeave:f,onDrop:p,onClick:m,onContextMenu:h,title:x,style:{...C?{"--tab-color":n(C)}:{}},children:[S?(0,c.jsx)(`span`,{className:`tab__icon`,"aria-hidden":!0,children:S}):null,(0,c.jsx)(`span`,{className:`tab__label`,children:x}),v?(0,c.jsx)(`span`,{className:`pin`,onClick:e=>{e.stopPropagation(),_(e)},title:`Unpin`,children:a.pin}):(0,c.jsx)(`span`,{className:`close`,onClick:e=>{e.stopPropagation(),g(e)},title:`Close`,children:a.closePanel})]})}export{N as TabPanelLayout,P as TabTitle};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.oo-tabs{flex-direction:column;flex:1;min-height:0;display:flex}.oo-tabs__strip{border-bottom:1px solid var(--oo-color-border);gap:2px;display:flex}.oo-tabs__tab{padding:var(--oo-spacing-xs) var(--oo-spacing-md);color:var(--oo-color-muted);cursor:pointer;font-size:var(--oo-font-size-sm);background:0 0;border:none;border-bottom:2px solid #0000;transition:color .327s,border-color .327s}.oo-tabs__tab:hover{color:inherit;background:0 0}.oo-tabs__tab[aria-selected=true]{color:inherit;border-bottom-color:var(--oo-color-accent)}.oo-tabs__tab[disabled]{cursor:not-allowed;opacity:.5}.oo-tabs__panel{min-height:0;padding:var(--oo-spacing-sm);flex:1;overflow:auto}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as e}from"./jsx-runtime-BguD1OXD.js";import{t}from"./react-CybPckBe.js";import{o as n}from"./mount-context-DZgEFVFG.js";import{r}from"./_utils-DZVsX11M.js";var i=t(),a=e();function o(e){return e.title??e.label??``}function s(e){return e.child??e.content}function c({tabs:e=[],value:t,defaultValue:c,weight:l,style:u}){let d=n(`value`),f=e.map((e,t)=>e.key??String(t)),[p,m]=(0,i.useState)(t??c??f[0]);(0,i.useEffect)(()=>{t!==void 0&&m(e=>e===t?e:t)},[t]);function h(e){m(e),d(e)}let g=e[[f.indexOf(p??``),f.indexOf(c??``),0].find(e=>e>=0)??0],_={...r(l),...u};return(0,a.jsxs)(`div`,{className:`oo-tabs`,style:_,children:[(0,a.jsx)(`div`,{className:`oo-tabs__strip`,role:`tablist`,children:e.map((e,t)=>{let n=o(e);return(0,a.jsx)(`button`,{className:`oo-tabs__tab`,role:`tab`,"aria-selected":e===g,disabled:e.disabled,onClick:()=>h(f[t]),style:{},children:n},f[t])})}),(0,a.jsx)(`div`,{role:`tabpanel`,style:{flex:1,minHeight:0,overflow:`auto`},children:g?s(g):null})]})}export{c as Tabs};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.xterm{cursor:text;-webkit-user-select:none;user-select:none;position:relative}.xterm.focus,.xterm:focus{outline:none}.xterm .xterm-helpers{z-index:5;position:absolute;top:0}.xterm .xterm-helper-textarea{opacity:0;z-index:-5;white-space:nowrap;resize:none;border:0;width:0;height:0;margin:0;padding:0;position:absolute;top:0;left:-9999em;overflow:hidden}.xterm .composition-view{color:#fff;white-space:nowrap;z-index:1;background:#000;display:none;position:absolute}.xterm .composition-view.active{display:block}.xterm .xterm-viewport{cursor:default;background-color:#000;position:absolute;inset:0;overflow-y:scroll}.xterm .xterm-screen{position:relative}.xterm .xterm-screen canvas{position:absolute;top:0;left:0}.xterm-char-measure-element{visibility:hidden;line-height:normal;display:inline-block;position:absolute;top:0;left:-9999em}.xterm.enable-mouse-events{cursor:default}.xterm.xterm-cursor-pointer,.xterm .xterm-cursor-pointer{cursor:pointer}.xterm.column-select.focus{cursor:crosshair}.xterm .xterm-accessibility:not(.debug),.xterm .xterm-message{z-index:10;color:#0000;pointer-events:none;position:absolute;inset:0}.xterm .xterm-accessibility-tree:not(.debug) ::selection{color:#0000}.xterm .xterm-accessibility-tree{-webkit-user-select:text;user-select:text;white-space:pre;font-family:monospace}.xterm .xterm-accessibility-tree>div{transform-origin:0;width:fit-content}.xterm .live-region{width:1px;height:1px;position:absolute;left:-9999px;overflow:hidden}.xterm-dim{opacity:1!important}.xterm-underline-1{text-decoration:underline}.xterm-underline-2{-webkit-text-decoration:underline double;text-decoration:underline double}.xterm-underline-3{-webkit-text-decoration:underline wavy;text-decoration:underline wavy}.xterm-underline-4{-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.xterm-underline-5{-webkit-text-decoration:underline dashed;text-decoration:underline dashed}.xterm-overline{text-decoration:overline}.xterm-overline.xterm-underline-1{text-decoration:underline overline}.xterm-overline.xterm-underline-2{-webkit-text-decoration:overline double underline;text-decoration:overline double underline}.xterm-overline.xterm-underline-3{-webkit-text-decoration:overline wavy underline;text-decoration:overline wavy underline}.xterm-overline.xterm-underline-4{-webkit-text-decoration:overline dotted underline;text-decoration:overline dotted underline}.xterm-overline.xterm-underline-5{-webkit-text-decoration:overline dashed underline;text-decoration:overline dashed underline}.xterm-strikethrough{text-decoration:line-through}.xterm-screen .xterm-decoration-container .xterm-decoration{z-index:6;position:absolute}.xterm-screen .xterm-decoration-container .xterm-decoration.xterm-decoration-top-layer{z-index:7}.xterm-decoration-overview-ruler{z-index:8;pointer-events:none;position:absolute;top:0;right:0}.xterm-decoration-top{z-index:2;position:relative}.xterm .xterm-scrollable-element>.scrollbar{cursor:default}.xterm .xterm-scrollable-element>.scrollbar>.scra{cursor:pointer;font-size:11px!important}.xterm .xterm-scrollable-element>.visible{opacity:1;z-index:11;background:0 0;transition:opacity .1s linear}.xterm .xterm-scrollable-element>.invisible{opacity:0;pointer-events:none}.xterm .xterm-scrollable-element>.invisible.fade{transition:opacity .8s linear}.xterm .xterm-scrollable-element>.shadow{display:none;position:absolute}.xterm .xterm-scrollable-element>.shadow.top{width:100%;height:3px;box-shadow:var(--vscode-scrollbar-shadow,#000) 0 6px 6px -6px inset;display:block;top:0;left:3px}.xterm .xterm-scrollable-element>.shadow.left{width:3px;height:100%;box-shadow:var(--vscode-scrollbar-shadow,#000) 6px 0 6px -6px inset;display:block;top:3px;left:0}.xterm .xterm-scrollable-element>.shadow.top-left-corner{width:3px;height:3px;display:block;top:0;left:0}.xterm .xterm-scrollable-element>.shadow.top.left{box-shadow:var(--vscode-scrollbar-shadow,#000) 6px 0 6px -6px inset}
|