@devframes/hub-ui 0.9.9 → 0.9.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/client/embedded.js +8 -6
- package/dist/client/standalone/assets/{DockStandalone-Ce0YdEIy.js → DockStandalone-3_CzgPVL.js} +1 -1
- package/dist/client/standalone/assets/{context-DBww7Wy4.js → context-Bt79Y4N5.js} +1 -1
- package/dist/client/standalone/assets/{index-WkX38nos.js → index-BGXSUn0A.js} +4 -4
- package/dist/client/standalone/assets/{popup-e5pfQ1h4.js → popup-B_knQQry.js} +3 -3
- package/dist/client/standalone/index.html +1 -1
- package/package.json +8 -8
|
@@ -1 +1 @@
|
|
|
1
|
-
import{$ as e,B as t,D as n,H as r,I as i,J as a,K as o,N as s,O as c,W as l,X as u,Y as d,a as f,et as p,i as m,k as h,n as g,o as ee,tt as _,y as v}from"./popup-e5pfQ1h4.js";import{Ct as y,Dt as b,Et as x,M as S,Ot as C,St as w,Tt as T,a as te,bt as ne,ct as E,dt as D,i as O,l as re,n as ie,nt as k,o as ae,pt as oe,r as A,rt as j,t as se,ut as M,wt as ce,yt as le}from"./index-WkX38nos.js";var N=new WeakMap;async function ue(t,n,r,i){if(N.has(n))return N.get(n);let a=await n.sharedState.get(`devframe:commands`,{initialValue:[]}),o=O(a),s=M(new Map),l=O(r),u=S(()=>l.value.commandShortcuts??{}),d=D(!1),f=D(null),p=ee(),m=()=>i?i():{clientType:t,dockOpen:!1,paletteOpen:d.value,dockSelectedId:``,popupOpen:p.value},g=S(()=>[...o.value,...Array.from(s.values())]),_=S(()=>{let e=m();return c(g.value,e).filter(e=>e.showInPalette!==!1)});function v(e){let t=Array.isArray(e)?e:[e];for(let e of t)s.set(e.id,e);return()=>{for(let e of t)s.delete(e.id)}}function y(e){f.value=e??null,d.value=!0}async function b(t,...r){let i=h(g.value,t);if(!i)throw Error(`Command "${t}" not found`);if(i.when){let n=m();if(!e(i.when,n))throw Error(`Command "${t}" is not available in the current context`)}if(i.source===`server`)return n.call(`hub:commands:execute`,t,...r);if(i.action)return i.action(...r);throw Error(`Command "${t}" has no action`)}function x(e){let t=u.value[e];return t===void 0?h(g.value,e)?.keybindings??[]:t}typeof window<`u`&&de(m,g,x,b);let C=M({commands:g,paletteCommands:_,register:v,execute:b,getKeybindings:x,settings:E(r),paletteOpen:d,paletteScopeId:f,openPalette:y});return N.set(n,C),C}function de(t,r,i,a){let o=o=>{let c=s(o);if(!c||c===`Mod`||c===`Shift`||c===`Alt`)return;let l=t(),u=n(r,i);for(let{id:t,keybinding:n}of u){if(n.key!==c)continue;let i=h(r.value,t);if(!(i?.when&&!e(i.when,l))){o.preventDefault(),o.stopPropagation(),a(t).catch(console.error);return}}};window.addEventListener(`keydown`,o,{capture:!0}),k(f(),(e,t)=>{t&&t.removeEventListener(`keydown`,o,{capture:!0}),e&&e.addEventListener(`keydown`,o,{capture:!0})})}function fe(e){let t=[],n;async function r(){if(e.isTrusted===!0)return n===void 0&&(n=new Promise(async e=>{for(;t.length>0;)await t.shift()();e()})),n}async function i(n){return e.isTrusted===!0&&t.length!==0&&await r(),e.isTrusted===!0&&t.length===0?await n():new Promise(e=>{t.push(async()=>{e(await n())})})}e.events.on(`rpc:is-trusted:updated`,e=>{e&&t.length>0&&r()});let a={add(t){return i(async()=>{let n=await e.call(`hub:messages:add`,t);return{get entry(){return n},get id(){return n.id},async update(t){let r=await e.call(`hub:messages:update`,n.id,t);return r&&(n=r),r??void 0},async dismiss(){await e.call(`hub:messages:remove`,n.id)}}})},remove(t){return i(()=>e.call(`hub:messages:remove`,t))},clear(){return i(()=>e.call(`hub:messages:clear`))},info:(e,t)=>a.add({...t,message:e,level:`info`}),warn:(e,t)=>a.add({...t,message:e,level:`warn`}),error:(e,t)=>a.add({...t,message:e,level:`error`}),success:(e,t)=>a.add({...t,message:e,level:`success`}),debug:(e,t)=>a.add({...t,message:e,level:`debug`})};return a}function P(e){switch(e.type){case`action`:return e.action;case`custom-render`:return e.renderer;case`iframe`:return e.clientScript;default:return}}async function F(e,t){let n=P(e);if(!n?.importFrom)throw Error(`[@devframes/hub-ui] Dock entry "${e.id}" carries no client script to run`);let r=_(n.importFrom,{template:t.rpc.connectionMeta?.configs?.dock?.clientModuleResolution,metaBaseUrl:t.rpc.connection?.metaBaseUrl});try{let e=(await w(()=>import(r),[],import.meta.url))[n.importName??`default`];if(typeof e!=`function`)throw Error(`[@devframes/hub-ui] "${r}" exports no callable "${n.importName??`default`}"`);await e(t)}catch(e){throw console.error(`[@devframes/hub-ui] Error executing client script from ${r}${p(n.importFrom,r)}`,e),e}}var I=new Map;function pe(e,t){if(e.type!==`action`&&I.has(e.id))return I.get(e.id);let n=F(e,t);return e.type!==`action`&&I.set(e.id,n),n}var L=new WeakMap;async function R(e,n,s,c,f=D(!0)){if(L.has(n))return L.get(n);let{entries:p,initialSyncComplete:h}=await te(n),_={},w=await n.sharedState.get(b,{initialValue:_}),N=O(w),de=ae(w,_),P=M(new Map),F=S(()=>{let e=p.value,t;if(P.size===0)t=e;else{let n=new Set,r=[];for(let t of e)n.add(t.id),r.push(P.get(t.id)??t);for(let[e,t]of P)n.has(e)||r.push(t);t=r}return t.some(e=>e.id===d.id)?t:[...t,d]});c||=D(ie());let I={...c.value},R=D(I.open&&I.selectedDockId!=null),z=S({get:()=>c.value.selectedDockId,set:e=>{c.value.selectedDockId=e}}),me=S({get:()=>c.value.selectedDockRoute,set:e=>{c.value.selectedDockRoute=e}}),B=S(()=>R.value?null:F.value.find(e=>e.id===z.value)??a.find(e=>e.id===z.value)??null),V=M(new Map);j(()=>{for(let e of F.value){if(V.has(e.id)){V.get(e.id).entryMeta=e;continue}V.set(e.id,A(e,B))}});let H=(e,t=!1)=>{if(P.has(e.id)&&!t)throw Error(`[@devframes/hub-ui] a client dock "${e.id}" is already registered; pass force to overwrite`);return P.set(e.id,e),V.has(e.id)||V.set(e.id,A(e,B)),{update:t=>{if(t.id!=null&&t.id!==e.id)throw Error(`[@devframes/hub-ui] a client dock id is immutable ("${e.id}")`);let n=P.get(e.id);n&&P.set(e.id,{...n,...t})},dispose:()=>{P.delete(e.id)&&(V.delete(e.id),z.value===e.id&&(z.value=null))}}},he=e=>{if(!P.has(e.id))throw Error(`[@devframes/hub-ui] no client dock "${e.id}" to update; register it first`);P.set(e.id,e)};s||=D(se());let ge=y(),U,_e,W=E(await(async()=>(_e||=n.sharedState.get(`devframe:user-settings`,{initialValue:x()}),_e))()),ve=O(W),G,ye=ee(),K=()=>({clientType:e,dockOpen:c.value.open,paletteOpen:G?.paletteOpen??!1,dockSelectedId:z.value??``,popupOpen:ye.value}),be=new Map,xe=e=>{if(e.type===`group`)return o(F.value,e,c.value.groupLastChildIds?.[e.id],K())?.id??t(F.value,e.id)[0]?.id??!1;if(e.type===`iframe`&&e.subTabs){let t=e.frameId??e.id,n=be.get(t);if(n&&n!==e.id&&F.value.some(e=>e.id===n))return n}return null},Se=async e=>{if(!(e.type===`action`||e.type===`custom-render`||e.type===`iframe`&&e.clientScript))return;let t=fe(n);await pe(e,M({...oe(U),current:V.get(e.id),messages:t,logs:t}))},Ce=e=>{e.type===`iframe`&&e.frameId&&!e.subTabs&&be.set(e.frameId,e.id),e.groupId&&((c.value.groupLastChildIds??={})[e.groupId]=e.id),e.type!==`iframe`&&(c.value.selectedDockRoute=null)},q=async(t=null)=>{if(t==null)return R.value=!1,z.value=null,c.value.open=!1,c.value.selectedDockRoute=null,!0;if(t===`~client-auth-notice`)return R.value=!1,z.value=t,c.value.open=!0,!0;let n=F.value.find(e=>e.id===t);if(!n)return!1;let r=xe(n);return r===!1?!1:r===null?n.type===`action`&&await m(e,n.id)!=null?!1:(R.value=!1,z.value=n.id,c.value.open=!0,await Se(n),Ce(n),!0):q(r)},J=async e=>z.value===e?q(null):q(e),Y=new Map,X=new Map,we=(e,t)=>{let n=e.frameId??e.id,r=t=>{let r=Y.get(n);if(r){if(r.iframe===t)return;r.dispose(),Y.delete(n)}let i=le({frameId:n,anchor:e,iframe:t,window:t.ownerDocument?.defaultView??globalThis,docks:{register:H,switchEntry:q,getStateById:e=>V.get(e)}});Y.set(n,{iframe:t,dispose:i.dispose})};t.domElements.iframe&&r(t.domElements.iframe),t.events.on(`dom:iframe:mounted`,r)};k(F,e=>{let t=new Set;for(let n of e){if(n.type!==`iframe`||!n.subTabs||(t.add(n.id),X.has(n.id)))continue;let e=V.get(n.id);e&&(X.set(n.id,n.frameId??n.id),we(n,e))}for(let[e,n]of[...X])t.has(e)||(X.delete(e),Y.get(n)?.dispose(),Y.delete(n))},{immediate:!0}),n.client.register({name:C.broadcast.docksActivate,type:`action`,handler:e=>{e?.dockId&&q(e.dockId)}});let Z=n.connectionMeta.configs?.ui?.dockPreferences?.categoryOrder,Te=S(()=>i(F.value,ve.value,{whenContext:K(),collapseGroups:!0,categoryOrderOverride:Z}));G=await ue(e,n,W,K),G.register([{id:`devframes:toggle-palette`,source:`client`,title:`Toggle Command Palette`,icon:`ph:magnifying-glass-duotone`,showInPalette:!1,keybindings:[{key:`Mod+K`}],action:()=>{G.paletteOpen=!G.paletteOpen}},{id:`devframes:close-panel`,source:`client`,title:`Close Panel`,icon:`ph:x-circle-duotone`,when:`dockOpen && !paletteOpen`,keybindings:[{key:`Escape`}],action:()=>{c.value.open=!1,z.value=null}},{id:`devframes:open-settings`,source:`client`,title:`Open Settings`,icon:`ph:gear-duotone`,action:()=>{q(`~settings`)}},{id:`devframes:hide`,source:`client`,title:`Hide ${re().value.productName}`,icon:`ph:eye-slash-duotone`,when:`clientType == embedded`,action:()=>{window.dispatchEvent(new CustomEvent(u))}},{id:`devframes:dock-mode`,source:`client`,title:`Dock Mode`,icon:`ph:layout-duotone`,when:e===`embedded`?`clientType == embedded && !popupOpen`:void 0,children:[{id:`devframes:dock-mode:float`,source:`client`,title:`Float Mode`,icon:`ph:cards-three-duotone`,when:`!popupOpen`,action:()=>{s.value.mode=`float`}},{id:`devframes:dock-mode:edge`,source:`client`,title:`Edge Mode`,icon:`ph:square-half-bottom-duotone`,when:`!popupOpen`,action:()=>{s.value.mode=`edge`}}]}]);let Ee;j(()=>{Ee?.();let e=e=>({id:v(e.id),source:`client`,title:e.title,icon:l(e.icon),action:()=>{J(e.id)}}),n=(e,t)=>{if(t){J(t);return}if(G.paletteOpen&&G.paletteScopeId===e){G.paletteOpen=!1;return}G.openPalette(e)},i=r(F.value),a=F.value.filter(e=>e.type!==`~builtin`).filter(e=>!(e.groupId&&i.has(e.groupId))).flatMap(r=>{if(r.type!==`group`)return[e(r)];let i=t(F.value,r.id,ve.value,{whenContext:K()}),a=o(F.value,r,c.value.groupLastChildIds?.[r.id],K())?.id;if(i.length===0&&!a)return[];let s=v(r.id);return[{...e(r),action:()=>n(s,a??(i.length===1?i[0].id:void 0)),children:i.map(e)}]});a.length>0&&(Ee=G.register({id:`devframes:docks`,source:`client`,title:`Docks`,icon:`ph:layout-duotone`,children:a}))});let Q=I.selectedDockId==null?null:I.selectedDockRoute;U=M({panel:{get state(){let e;e=f.value?c.value.open?`open`:`closed`:`hidden`;let t={state:e};return z.value!==null&&(t.selectedDockId=z.value),t},events:E(ge),store:s,session:c,isDragging:!1,isResizing:!1,isVertical:S(()=>s.value.position===`left`||s.value.position===`right`),consumeBootRoute:e=>{if(Q!=null&&e===I.selectedDockId){let e=Q;return Q=null,e}return null}},docks:{selectedId:z,selectedRoute:me,selected:B,entries:F,entryToStateMap:E(V),groupedEntries:Te,categoryOrder:Z?{...T,...Z}:T,settings:W,getStateById:e=>V.get(e),switchEntry:q,toggleEntry:J,register:H,update:he},commands:G,when:{get context(){return K()}},connection:{get status(){return n.status},get error(){return n.connectionError},events:n.events},renderers:E(ne({context:()=>U,manifest:()=>N.value})),rpc:E(n),clientType:e}),g(e,async e=>{let t=F.value.find(t=>t.id===e);return!t||t.type!==`action`?!1:q(t.id)});let De=async()=>{n.isTrusted||await new Promise(e=>{let t=n.events.on(ce.client.isTrustedUpdated,n=>{n&&(t(),e())})})},Oe=async()=>{let e=I.selectedDockId;if(!(!I.open||e==null)&&(await Promise.all([De(),h,de]),R.value)){if(z.value!==e){R.value=!1;return}R.value=!1,await q(e)}},$=U.panel.state;return k([f,()=>c.value.open,z],()=>{let e=U.panel.state;(e.state!==$.state||e.selectedDockId!==$.selectedDockId)&&($=e,ge.emit(C.client.docksPanelStateChanged,e))},{flush:`post`}),Oe(),L.set(n,U),U}export{R as createDocksContext};
|
|
1
|
+
import{$ as e,B as t,D as n,H as r,I as i,J as a,K as o,N as s,O as c,W as l,X as u,Y as d,a as f,et as p,i as m,k as h,n as g,o as ee,tt as _,y as v}from"./popup-B_knQQry.js";import{Ct as y,Dt as b,Et as x,M as S,Ot as C,St as w,Tt as T,a as te,bt as ne,ct as E,dt as D,i as O,l as re,n as ie,nt as k,o as ae,pt as oe,r as A,rt as j,t as se,ut as M,wt as ce,yt as le}from"./index-BGXSUn0A.js";var N=new WeakMap;async function ue(t,n,r,i){if(N.has(n))return N.get(n);let a=await n.sharedState.get(`devframe:commands`,{initialValue:[]}),o=O(a),s=M(new Map),l=O(r),u=S(()=>l.value.commandShortcuts??{}),d=D(!1),f=D(null),p=ee(),m=()=>i?i():{clientType:t,dockOpen:!1,paletteOpen:d.value,dockSelectedId:``,popupOpen:p.value},g=S(()=>[...o.value,...Array.from(s.values())]),_=S(()=>{let e=m();return c(g.value,e).filter(e=>e.showInPalette!==!1)});function v(e){let t=Array.isArray(e)?e:[e];for(let e of t)s.set(e.id,e);return()=>{for(let e of t)s.delete(e.id)}}function y(e){f.value=e??null,d.value=!0}async function b(t,...r){let i=h(g.value,t);if(!i)throw Error(`Command "${t}" not found`);if(i.when){let n=m();if(!e(i.when,n))throw Error(`Command "${t}" is not available in the current context`)}if(i.source===`server`)return n.call(`hub:commands:execute`,t,...r);if(i.action)return i.action(...r);throw Error(`Command "${t}" has no action`)}function x(e){let t=u.value[e];return t===void 0?h(g.value,e)?.keybindings??[]:t}typeof window<`u`&&de(m,g,x,b);let C=M({commands:g,paletteCommands:_,register:v,execute:b,getKeybindings:x,settings:E(r),paletteOpen:d,paletteScopeId:f,openPalette:y});return N.set(n,C),C}function de(t,r,i,a){let o=o=>{let c=s(o);if(!c||c===`Mod`||c===`Shift`||c===`Alt`)return;let l=t(),u=n(r,i);for(let{id:t,keybinding:n}of u){if(n.key!==c)continue;let i=h(r.value,t);if(!(i?.when&&!e(i.when,l))){o.preventDefault(),o.stopPropagation(),a(t).catch(console.error);return}}};window.addEventListener(`keydown`,o,{capture:!0}),k(f(),(e,t)=>{t&&t.removeEventListener(`keydown`,o,{capture:!0}),e&&e.addEventListener(`keydown`,o,{capture:!0})})}function fe(e){let t=[],n;async function r(){if(e.isTrusted===!0)return n===void 0&&(n=new Promise(async e=>{for(;t.length>0;)await t.shift()();e()})),n}async function i(n){return e.isTrusted===!0&&t.length!==0&&await r(),e.isTrusted===!0&&t.length===0?await n():new Promise(e=>{t.push(async()=>{e(await n())})})}e.events.on(`rpc:is-trusted:updated`,e=>{e&&t.length>0&&r()});let a={add(t){return i(async()=>{let n=await e.call(`hub:messages:add`,t);return{get entry(){return n},get id(){return n.id},async update(t){let r=await e.call(`hub:messages:update`,n.id,t);return r&&(n=r),r??void 0},async dismiss(){await e.call(`hub:messages:remove`,n.id)}}})},remove(t){return i(()=>e.call(`hub:messages:remove`,t))},clear(){return i(()=>e.call(`hub:messages:clear`))},info:(e,t)=>a.add({...t,message:e,level:`info`}),warn:(e,t)=>a.add({...t,message:e,level:`warn`}),error:(e,t)=>a.add({...t,message:e,level:`error`}),success:(e,t)=>a.add({...t,message:e,level:`success`}),debug:(e,t)=>a.add({...t,message:e,level:`debug`})};return a}function P(e){switch(e.type){case`action`:return e.action;case`custom-render`:return e.renderer;case`iframe`:return e.clientScript;default:return}}async function F(e,t){let n=P(e);if(!n?.importFrom)throw Error(`[@devframes/hub-ui] Dock entry "${e.id}" carries no client script to run`);let r=_(n.importFrom,{template:t.rpc.connectionMeta?.configs?.dock?.clientModuleResolution,metaBaseUrl:t.rpc.connection?.metaBaseUrl});try{let e=(await w(()=>import(r),[],import.meta.url))[n.importName??`default`];if(typeof e!=`function`)throw Error(`[@devframes/hub-ui] "${r}" exports no callable "${n.importName??`default`}"`);await e(t)}catch(e){throw console.error(`[@devframes/hub-ui] Error executing client script from ${r}${p(n.importFrom,r)}`,e),e}}var I=new Map;function pe(e,t){if(e.type!==`action`&&I.has(e.id))return I.get(e.id);let n=F(e,t);return e.type!==`action`&&I.set(e.id,n),n}var L=new WeakMap;async function R(e,n,s,c,f=D(!0)){if(L.has(n))return L.get(n);let{entries:p,initialSyncComplete:h}=await te(n),_={},w=await n.sharedState.get(b,{initialValue:_}),N=O(w),de=ae(w,_),P=M(new Map),F=S(()=>{let e=p.value,t;if(P.size===0)t=e;else{let n=new Set,r=[];for(let t of e)n.add(t.id),r.push(P.get(t.id)??t);for(let[e,t]of P)n.has(e)||r.push(t);t=r}return t.some(e=>e.id===d.id)?t:[...t,d]});c||=D(ie());let I={...c.value},R=D(I.open&&I.selectedDockId!=null),z=S({get:()=>c.value.selectedDockId,set:e=>{c.value.selectedDockId=e}}),me=S({get:()=>c.value.selectedDockRoute,set:e=>{c.value.selectedDockRoute=e}}),B=S(()=>R.value?null:F.value.find(e=>e.id===z.value)??a.find(e=>e.id===z.value)??null),V=M(new Map);j(()=>{for(let e of F.value){if(V.has(e.id)){V.get(e.id).entryMeta=e;continue}V.set(e.id,A(e,B))}});let H=(e,t=!1)=>{if(P.has(e.id)&&!t)throw Error(`[@devframes/hub-ui] a client dock "${e.id}" is already registered; pass force to overwrite`);return P.set(e.id,e),V.has(e.id)||V.set(e.id,A(e,B)),{update:t=>{if(t.id!=null&&t.id!==e.id)throw Error(`[@devframes/hub-ui] a client dock id is immutable ("${e.id}")`);let n=P.get(e.id);n&&P.set(e.id,{...n,...t})},dispose:()=>{P.delete(e.id)&&(V.delete(e.id),z.value===e.id&&(z.value=null))}}},he=e=>{if(!P.has(e.id))throw Error(`[@devframes/hub-ui] no client dock "${e.id}" to update; register it first`);P.set(e.id,e)};s||=D(se());let ge=y(),U,_e,W=E(await(async()=>(_e||=n.sharedState.get(`devframe:user-settings`,{initialValue:x()}),_e))()),ve=O(W),G,ye=ee(),K=()=>({clientType:e,dockOpen:c.value.open,paletteOpen:G?.paletteOpen??!1,dockSelectedId:z.value??``,popupOpen:ye.value}),be=new Map,xe=e=>{if(e.type===`group`)return o(F.value,e,c.value.groupLastChildIds?.[e.id],K())?.id??t(F.value,e.id)[0]?.id??!1;if(e.type===`iframe`&&e.subTabs){let t=e.frameId??e.id,n=be.get(t);if(n&&n!==e.id&&F.value.some(e=>e.id===n))return n}return null},Se=async e=>{if(!(e.type===`action`||e.type===`custom-render`||e.type===`iframe`&&e.clientScript))return;let t=fe(n);await pe(e,M({...oe(U),current:V.get(e.id),messages:t,logs:t}))},Ce=e=>{e.type===`iframe`&&e.frameId&&!e.subTabs&&be.set(e.frameId,e.id),e.type!==`action`&&e.groupId&&((c.value.groupLastChildIds??={})[e.groupId]=e.id),e.type!==`iframe`&&(c.value.selectedDockRoute=null)},q=async(t=null)=>{if(t==null)return R.value=!1,z.value=null,c.value.open=!1,c.value.selectedDockRoute=null,!0;if(t===`~client-auth-notice`)return R.value=!1,z.value=t,c.value.open=!0,!0;let n=F.value.find(e=>e.id===t);if(!n)return!1;let r=xe(n);return r===!1?!1:r===null?n.type===`action`&&await m(e,n.id)!=null?!1:(R.value=!1,z.value=n.id,c.value.open=!0,await Se(n),Ce(n),!0):q(r)},J=async e=>z.value===e?q(null):q(e),Y=new Map,X=new Map,we=(e,t)=>{let n=e.frameId??e.id,r=t=>{let r=Y.get(n);if(r){if(r.iframe===t)return;r.dispose(),Y.delete(n)}let i=le({frameId:n,anchor:e,iframe:t,window:t.ownerDocument?.defaultView??globalThis,docks:{register:H,switchEntry:q,getStateById:e=>V.get(e)}});Y.set(n,{iframe:t,dispose:i.dispose})};t.domElements.iframe&&r(t.domElements.iframe),t.events.on(`dom:iframe:mounted`,r)};k(F,e=>{let t=new Set;for(let n of e){if(n.type!==`iframe`||!n.subTabs||(t.add(n.id),X.has(n.id)))continue;let e=V.get(n.id);e&&(X.set(n.id,n.frameId??n.id),we(n,e))}for(let[e,n]of[...X])t.has(e)||(X.delete(e),Y.get(n)?.dispose(),Y.delete(n))},{immediate:!0}),n.client.register({name:C.broadcast.docksActivate,type:`action`,handler:e=>{e?.dockId&&q(e.dockId)}});let Z=n.connectionMeta.configs?.ui?.dockPreferences?.categoryOrder,Te=S(()=>i(F.value,ve.value,{whenContext:K(),collapseGroups:!0,categoryOrderOverride:Z}));G=await ue(e,n,W,K),G.register([{id:`devframes:toggle-palette`,source:`client`,title:`Toggle Command Palette`,icon:`ph:magnifying-glass-duotone`,showInPalette:!1,keybindings:[{key:`Mod+K`}],action:()=>{G.paletteOpen=!G.paletteOpen}},{id:`devframes:close-panel`,source:`client`,title:`Close Panel`,icon:`ph:x-circle-duotone`,when:`dockOpen && !paletteOpen`,keybindings:[{key:`Escape`}],action:()=>{c.value.open=!1,z.value=null}},{id:`devframes:open-settings`,source:`client`,title:`Open Settings`,icon:`ph:gear-duotone`,action:()=>{q(`~settings`)}},{id:`devframes:hide`,source:`client`,title:`Hide ${re().value.productName}`,icon:`ph:eye-slash-duotone`,when:`clientType == embedded`,action:()=>{window.dispatchEvent(new CustomEvent(u))}},{id:`devframes:dock-mode`,source:`client`,title:`Dock Mode`,icon:`ph:layout-duotone`,when:e===`embedded`?`clientType == embedded && !popupOpen`:void 0,children:[{id:`devframes:dock-mode:float`,source:`client`,title:`Float Mode`,icon:`ph:cards-three-duotone`,when:`!popupOpen`,action:()=>{s.value.mode=`float`}},{id:`devframes:dock-mode:edge`,source:`client`,title:`Edge Mode`,icon:`ph:square-half-bottom-duotone`,when:`!popupOpen`,action:()=>{s.value.mode=`edge`}}]}]);let Ee;j(()=>{Ee?.();let e=e=>({id:v(e.id),source:`client`,title:e.title,icon:l(e.icon),action:()=>{J(e.id)}}),n=(e,t)=>{if(t){J(t);return}if(G.paletteOpen&&G.paletteScopeId===e){G.paletteOpen=!1;return}G.openPalette(e)},i=r(F.value),a=F.value.filter(e=>e.type!==`~builtin`).filter(e=>!(e.groupId&&i.has(e.groupId))).flatMap(r=>{if(r.type!==`group`)return[e(r)];let i=t(F.value,r.id,ve.value,{whenContext:K()}),a=o(F.value,r,c.value.groupLastChildIds?.[r.id],K())?.id;if(i.length===0&&!a)return[];let s=v(r.id);return[{...e(r),action:()=>n(s,a??(i.length===1?i[0].id:void 0)),children:i.map(e)}]});a.length>0&&(Ee=G.register({id:`devframes:docks`,source:`client`,title:`Docks`,icon:`ph:layout-duotone`,children:a}))});let Q=I.selectedDockId==null?null:I.selectedDockRoute;U=M({panel:{get state(){let e;e=f.value?c.value.open?`open`:`closed`:`hidden`;let t={state:e};return z.value!==null&&(t.selectedDockId=z.value),t},events:E(ge),store:s,session:c,isDragging:!1,isResizing:!1,isVertical:S(()=>s.value.position===`left`||s.value.position===`right`),consumeBootRoute:e=>{if(Q!=null&&e===I.selectedDockId){let e=Q;return Q=null,e}return null}},docks:{selectedId:z,selectedRoute:me,selected:B,entries:F,entryToStateMap:E(V),groupedEntries:Te,categoryOrder:Z?{...T,...Z}:T,settings:W,getStateById:e=>V.get(e),switchEntry:q,toggleEntry:J,register:H,update:he},commands:G,when:{get context(){return K()}},connection:{get status(){return n.status},get error(){return n.connectionError},events:n.events},renderers:E(ne({context:()=>U,manifest:()=>N.value})),rpc:E(n),clientType:e}),g(e,async e=>{let t=F.value.find(t=>t.id===e);return!t||t.type!==`action`?!1:q(t.id)});let De=async()=>{n.isTrusted||await new Promise(e=>{let t=n.events.on(ce.client.isTrustedUpdated,n=>{n&&(t(),e())})})},Oe=async()=>{let e=I.selectedDockId;if(!(!I.open||e==null)&&(await Promise.all([De(),h,de]),R.value)){if(z.value!==e){R.value=!1;return}R.value=!1,await q(e)}},$=U.panel.state;return k([f,()=>c.value.open,z],()=>{let e=U.panel.state;(e.state!==$.state||e.selectedDockId!==$.selectedDockId)&&($=e,ge.emit(C.client.docksPanelStateChanged,e))},{flush:`post`}),Oe(),L.set(n,U),U}export{R as createDocksContext};
|