@ai-projector/ide 0.11.0 → 0.11.1
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/bin/install-desktop +0 -0
- package/bin/projector +0 -0
- package/dist/assets/CodeViewer--WUSmn5i.css +1 -0
- package/dist/assets/CodeViewer-C-C3aibO.js +1 -0
- package/dist/assets/DiscussionView-Cd3exhWx.css +1 -0
- package/dist/assets/DiscussionView-K3YyWE-E.js +2 -0
- package/dist/assets/EditorSettings-DlzJc8cp.js +13 -0
- package/dist/assets/EditorSettings-jSngmpPq.css +1 -0
- package/dist/assets/HtmlViewer-DULKK0_6.js +2 -0
- package/dist/assets/HtmlViewer-XHn9rACG.css +1 -0
- package/dist/assets/ImageViewport-BT_ftU4z.js +1 -0
- package/dist/assets/{ImageViewport-BXN_-Ztv.css → ImageViewport-JcG9P4B6.css} +1 -1
- package/dist/assets/IssueView-ChJFmrTW.js +1 -0
- package/dist/assets/MarkdownViewer-C646XbYf.css +1 -0
- package/dist/assets/MarkdownViewer-Dm2MVp3X.js +2 -0
- package/dist/assets/PullRequestView-Cipn5P0H.js +3 -0
- package/dist/assets/PullRequestView-CzZn9mOg.css +1 -0
- package/dist/assets/ReleaseView-Cz6dH4ej.js +2 -0
- package/dist/assets/ReleaseView-VLO9NVfI.css +1 -0
- package/dist/assets/SplitPanes-0-UT7ksm.css +1 -0
- package/dist/assets/SplitPanes-DNDTWIta.js +1 -0
- package/dist/assets/SvgViewer-DP6-1_fw.css +1 -0
- package/dist/assets/SvgViewer-DkoULP8F.js +2 -0
- package/dist/assets/{TerminalView-DnkOpsvR.css → TerminalView-C30_q784.css} +1 -1
- package/dist/assets/TerminalView-fWmIbnZn.js +16 -0
- package/dist/assets/TrackerDetail-CBaLycQg.css +1 -0
- package/dist/assets/TrackerDetail-DuzfEwSZ.js +1 -0
- package/dist/assets/UiButton-AkN01P3P.css +1 -0
- package/dist/assets/UiButton-DvucBdmd.js +2 -0
- package/dist/assets/UiPanel-BUDYIo-h.css +1 -0
- package/dist/assets/UiPanel-DtI4DFYT.js +1 -0
- package/dist/assets/UiViewerPage-CMFEzZ2i.css +1 -0
- package/dist/assets/UiViewerPage-aHNgiSjO.js +2 -0
- package/dist/assets/{VisualMarkdownEditor-CcbKSvtd.css → VisualMarkdownEditor-1DNSAYyq.css} +1 -1
- package/dist/assets/VisualMarkdownEditor-BHx2olWh.js +1070 -0
- package/dist/assets/_plugin-vue_export-helper-D62Ebo7D.js +3 -0
- package/dist/assets/compiler-dom.esm-bundler-C5a_rSi1.js +9 -0
- package/dist/assets/{dist-BnsBZm0f.js → dist-BMX-4S0G.js} +1 -1
- package/dist/assets/{dist-gPzXCSJV.js → dist-BQmIGtmd.js} +1 -1
- package/dist/assets/{dist-tNJpR9Y1.js → dist-Bzl1vuDO.js} +1 -1
- package/dist/assets/{dist-b78ZWHZy.js → dist-CG79NjMk.js} +1 -1
- package/dist/assets/{dist-DrZek4TY.js → dist-Coak6JQD.js} +1 -1
- package/dist/assets/{dist-Br4AY_oy.js → dist-Cu_4z-jQ.js} +1 -1
- package/dist/assets/{dist-CyRvGpIP.js → dist-CzOhSFRQ.js} +1 -1
- package/dist/assets/{dist-B1XyTjRF.js → dist-DN5Y0OA5.js} +1 -1
- package/dist/assets/dist-Dvv0YQ-H.js +23 -0
- package/dist/assets/{dist-dwBOnDaY.js → dist-DzoDV6Eh.js} +2 -2
- package/dist/assets/dist-ZRLBgDFY.js +1 -0
- package/dist/assets/{dist-C-1XYtJO.js → dist-cLGxPfRN.js} +1 -1
- package/dist/assets/{editor-theme-DuQQ8n56.js → editor-theme-ClBxXjSu.js} +1 -1
- package/dist/assets/external-link-lkcxItwM.js +1 -0
- package/dist/assets/{github-emoji-C2UmmDoA.js → github-emoji-CXJ5RSZS.js} +120 -120
- package/dist/assets/{github-emoji-qJihbtN6.css → github-emoji-D8dkjuM_.css} +1 -1
- package/dist/assets/hub-DfPcTPCC.js +1 -0
- package/dist/assets/main-JoBAi6ol.css +1 -0
- package/dist/assets/main-iz4ud0jC.js +178 -0
- package/dist/assets/rolldown-runtime-XKyaHtl9.js +1 -0
- package/dist/assets/shared.esm-bundler-DoSbGLUP.js +2 -0
- package/dist/assets/styles-CCXo2OoQ.css +1 -0
- package/dist/assets/styles-DZDDPlL3.js +1 -0
- package/dist/hub.html +7 -5
- package/dist/index.html +19 -16
- package/package.json +5 -5
- package/dist/assets/CodeViewer-BAgvP3Yx.js +0 -1
- package/dist/assets/CodeViewer-QIU6uQDH.css +0 -1
- package/dist/assets/DiscussionView-83kZBzfq.js +0 -2
- package/dist/assets/DiscussionView-kEJZ0OhC.css +0 -1
- package/dist/assets/EditorSettings-CPklwfT-.js +0 -13
- package/dist/assets/EditorSettings-DVhn0sGg.css +0 -1
- package/dist/assets/HtmlViewer-C3Mf1IEK.css +0 -1
- package/dist/assets/HtmlViewer-CGHhO9bM.js +0 -2
- package/dist/assets/ImageViewport-lPITcKgO.js +0 -1
- package/dist/assets/IssueView-CfdeTTKs.js +0 -1
- package/dist/assets/MarkdownViewer-3VG5ygRT.css +0 -1
- package/dist/assets/MarkdownViewer-DKZvt6XG.js +0 -2
- package/dist/assets/PullRequestView-Bce3nQML.js +0 -3
- package/dist/assets/PullRequestView-F_M37BOq.css +0 -1
- package/dist/assets/ReleaseView-BKH8Kb3T.css +0 -1
- package/dist/assets/ReleaseView-DO-R7ktE.js +0 -2
- package/dist/assets/SplitPanes-BJR26w00.css +0 -1
- package/dist/assets/SplitPanes-DR126xV8.js +0 -1
- package/dist/assets/SvgViewer-CEIl2Ob2.js +0 -2
- package/dist/assets/SvgViewer-DyAp20sd.css +0 -1
- package/dist/assets/TerminalView-CDAJ5gmT.js +0 -16
- package/dist/assets/TrackerDetail-CV0Qqzx3.js +0 -1
- package/dist/assets/TrackerDetail-OFp4ONUm.css +0 -1
- package/dist/assets/UiPanel-CND7Qs_n.js +0 -1
- package/dist/assets/UiPanel-CS77nWcC.css +0 -1
- package/dist/assets/UiViewerPage-BOvnLith.css +0 -1
- package/dist/assets/UiViewerPage-z_s1uFHO.js +0 -2
- package/dist/assets/VisualMarkdownEditor-CwwWF0eb.js +0 -1069
- package/dist/assets/_plugin-vue_export-helper-C4wFX7Eq.js +0 -24
- package/dist/assets/compiler-dom.esm-bundler-B0iuTsih.js +0 -9
- package/dist/assets/dist-B_hKnsNE.js +0 -1
- package/dist/assets/dist-DzAS050M.js +0 -23
- package/dist/assets/external-link-BFTqPI03.js +0 -1
- package/dist/assets/hub-rvbmNftk.js +0 -1
- package/dist/assets/main-CgMl4Qjs.css +0 -1
- package/dist/assets/main-DEEGhxlk.js +0 -186
- package/dist/assets/shared.esm-bundler-EUzHGNqQ.js +0 -2
- package/dist/assets/styles-C07CLvbW.js +0 -2
- package/dist/assets/styles-CX3Ni7dk.css +0 -1
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
function e(e){let t=Object.create(null);for(let n of e.split(`,`))t[n]=1;return e=>e in t}var t=Object.freeze({}),n=Object.freeze([]),r=()=>{},i=()=>!1,a=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),o=e=>e.startsWith(`onUpdate:`),s=Object.assign,c=(e,t)=>{let n=e.indexOf(t);n>-1&&e.splice(n,1)},l=Object.prototype.hasOwnProperty,u=(e,t)=>l.call(e,t),d=Array.isArray,f=e=>x(e)===`[object Map]`,p=e=>x(e)===`[object Set]`,m=e=>x(e)===`[object Date]`,ee=e=>x(e)===`[object RegExp]`,h=e=>typeof e==`function`,g=e=>typeof e==`string`,_=e=>typeof e==`symbol`,v=e=>typeof e==`object`&&!!e,y=e=>(v(e)||h(e))&&h(e.then)&&h(e.catch),b=Object.prototype.toString,x=e=>b.call(e),te=e=>x(e).slice(8,-1),S=e=>x(e)===`[object Object]`,C=e=>g(e)&&e!==`NaN`&&e[0]!==`-`&&``+parseInt(e,10)===e,w=e(`,key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted`),T=e(`bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo`),E=e=>{let t=Object.create(null);return(n=>t[n]||(t[n]=e(n)))},ne=/-\w/g,re=E(e=>e.replace(ne,e=>e.slice(1).toUpperCase())),ie=/\B([A-Z])/g,D=E(e=>e.replace(ie,`-$1`).toLowerCase()),O=E(e=>e.charAt(0).toUpperCase()+e.slice(1)),ae=E(e=>e?`on${O(e)}`:``),oe=(e,t)=>!Object.is(e,t),se=(e,...t)=>{for(let n=0;n<e.length;n++)e[n](...t)},ce=(e,t,n,r=!1)=>{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:r,value:n})},k=e=>{let t=parseFloat(e);return isNaN(t)?e:t},A=e=>{let t=g(e)?Number(e):NaN;return isNaN(t)?e:t},j,M=()=>j||=typeof globalThis<`u`?globalThis:typeof self<`u`?self:typeof window<`u`?window:typeof global<`u`?global:{},N={1:`TEXT`,2:`CLASS`,4:`STYLE`,8:`PROPS`,16:`FULL_PROPS`,32:`NEED_HYDRATION`,64:`STABLE_FRAGMENT`,128:`KEYED_FRAGMENT`,256:`UNKEYED_FRAGMENT`,512:`NEED_PATCH`,1024:`DYNAMIC_SLOTS`,2048:`DEV_ROOT_FRAGMENT`,[-1]:`CACHED`,[-2]:`BAIL`},P={1:`STABLE`,2:`DYNAMIC`,3:`FORWARDED`},F=e(`Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt,console,Error,Symbol`),I=2;function L(e,t=0,n=e.length){if(t=Math.max(0,Math.min(t,e.length)),n=Math.max(0,Math.min(n,e.length)),t>n)return``;let r=e.split(/(\r?\n)/),i=r.filter((e,t)=>t%2==1);r=r.filter((e,t)=>t%2==0);let a=0,o=[];for(let e=0;e<r.length;e++)if(a+=r[e].length+(i[e]&&i[e].length||0),a>=t){for(let s=e-I;s<=e+I||n>a;s++){if(s<0||s>=r.length)continue;let c=s+1;o.push(`${c}${` `.repeat(Math.max(3-String(c).length,0))}| ${r[s]}`);let l=r[s].length,u=i[s]&&i[s].length||0;if(s===e){let e=t-(a-(l+u)),r=Math.max(1,n>a?l-e:n-t);o.push(` | `+` `.repeat(e)+`^`.repeat(r))}else if(s>e){if(n>a){let e=Math.max(Math.min(n-a,l),1);o.push(` | `+`^`.repeat(e))}a+=l+u}}break}return o.join(`
|
|
2
|
-
`)}function R(e){if(d(e)){let t={};for(let n=0;n<e.length;n++){let r=e[n],i=g(r)?H(r):R(r);if(i)for(let e in i)t[e]=i[e]}return t}if(g(e)||v(e))return e}var z=/;(?![^(]*\))/g,B=/:([^]+)/,V=/"(?:[^"\\]|\\[^])*"|'(?:[^'\\]|\\[^])*'|\\[^]|\/\*[^]*?\*\//g;function H(e){let t={};return e.replace(V,e=>e.startsWith(`/*`)?``:e).split(z).forEach(e=>{if(e){let n=e.split(B);n.length>1&&(t[n[0].trim()]=n[1].trim())}}),t}function U(e){if(!e)return``;if(g(e))return e;let t=``;for(let n in e){let r=e[n];if(g(r)||typeof r==`number`){let e=n.startsWith(`--`)?n:D(n);t+=`${e}:${r};`}}return t}function W(e){let t=``;if(g(e))t=e;else if(d(e))for(let n=0;n<e.length;n++){let r=W(e[n]);r&&(t+=r+` `)}else if(v(e))for(let n in e)e[n]&&(t+=n+` `);return t.trim()}function G(e){if(!e)return null;let{class:t,style:n}=e;return t&&!g(t)&&(e.class=W(t)),n&&(e.style=R(n)),e}var le=`html,body,base,head,link,meta,style,title,address,article,aside,footer,header,hgroup,h1,h2,h3,h4,h5,h6,nav,section,div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,ruby,s,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,output,progress,select,textarea,details,dialog,menu,summary,template,blockquote,iframe,tfoot`,ue=`svg,animate,animateMotion,animateTransform,circle,clipPath,color-profile,defs,desc,discard,ellipse,feBlend,feColorMatrix,feComponentTransfer,feComposite,feConvolveMatrix,feDiffuseLighting,feDisplacementMap,feDistantLight,feDropShadow,feFlood,feFuncA,feFuncB,feFuncG,feFuncR,feGaussianBlur,feImage,feMerge,feMergeNode,feMorphology,feOffset,fePointLight,feSpecularLighting,feSpotLight,feTile,feTurbulence,filter,foreignObject,g,hatch,hatchpath,image,line,linearGradient,marker,mask,mesh,meshgradient,meshpatch,meshrow,metadata,mpath,path,pattern,polygon,polyline,radialGradient,rect,set,solidcolor,stop,switch,symbol,text,textPath,title,tspan,unknown,use,view`,de=`annotation,annotation-xml,maction,maligngroup,malignmark,math,menclose,merror,mfenced,mfrac,mfraction,mglyph,mi,mlabeledtr,mlongdiv,mmultiscripts,mn,mo,mover,mpadded,mphantom,mprescripts,mroot,mrow,ms,mscarries,mscarry,msgroup,msline,mspace,msqrt,msrow,mstack,mstyle,msub,msubsup,msup,mtable,mtd,mtext,mtr,munder,munderover,none,semantics`,fe=`area,base,br,col,embed,hr,img,input,link,meta,param,source,track,wbr`,pe=e(le),me=e(ue),he=e(de),ge=e(fe),K=`itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly`,_e=e(K),ve=e(K+`,async,autofocus,autoplay,controls,default,defer,disabled,inert,loop,open,required,reversed,scoped,seamless,checked,muted,multiple,selected`);function ye(e){return!!e||e===``}var be=e(`accept,accept-charset,accesskey,action,align,allow,alt,async,autocapitalize,autocomplete,autofocus,autoplay,background,bgcolor,border,buffered,capture,challenge,charset,checked,cite,class,code,codebase,color,cols,colspan,content,contenteditable,contextmenu,controls,coords,crossorigin,csp,data,datetime,decoding,default,defer,dir,dirname,disabled,download,draggable,dropzone,enctype,enterkeyhint,for,form,formaction,formenctype,formmethod,formnovalidate,formtarget,headers,height,hidden,high,href,hreflang,http-equiv,icon,id,importance,inert,integrity,ismap,itemprop,keytype,kind,label,lang,language,loading,list,loop,low,manifest,max,maxlength,minlength,media,min,multiple,muted,name,novalidate,open,optimum,pattern,ping,placeholder,poster,preload,radiogroup,readonly,referrerpolicy,rel,required,reversed,rows,rowspan,sandbox,scope,scoped,selected,shape,size,sizes,slot,span,spellcheck,src,srcdoc,srclang,srcset,start,step,style,summary,tabindex,target,title,translate,type,usemap,value,width,wrap`),xe=e(`xmlns,accent-height,accumulate,additive,alignment-baseline,alphabetic,amplitude,arabic-form,ascent,attributeName,attributeType,azimuth,baseFrequency,baseline-shift,baseProfile,bbox,begin,bias,by,calcMode,cap-height,class,clip,clipPathUnits,clip-path,clip-rule,color,color-interpolation,color-interpolation-filters,color-profile,color-rendering,contentScriptType,contentStyleType,crossorigin,cursor,cx,cy,d,decelerate,descent,diffuseConstant,direction,display,divisor,dominant-baseline,dur,dx,dy,edgeMode,elevation,enable-background,end,exponent,fill,fill-opacity,fill-rule,filter,filterRes,filterUnits,flood-color,flood-opacity,font-family,font-size,font-size-adjust,font-stretch,font-style,font-variant,font-weight,format,from,fr,fx,fy,g1,g2,glyph-name,glyph-orientation-horizontal,glyph-orientation-vertical,glyphRef,gradientTransform,gradientUnits,hanging,height,href,hreflang,horiz-adv-x,horiz-origin-x,id,ideographic,image-rendering,in,in2,intercept,k,k1,k2,k3,k4,kernelMatrix,kernelUnitLength,kerning,keyPoints,keySplines,keyTimes,lang,lengthAdjust,letter-spacing,lighting-color,limitingConeAngle,local,marker-end,marker-mid,marker-start,markerHeight,markerUnits,markerWidth,mask,maskContentUnits,maskUnits,mathematical,max,media,method,min,mode,name,numOctaves,offset,opacity,operator,order,orient,orientation,origin,overflow,overline-position,overline-thickness,panose-1,paint-order,path,pathLength,patternContentUnits,patternTransform,patternUnits,ping,pointer-events,points,pointsAtX,pointsAtY,pointsAtZ,preserveAlpha,preserveAspectRatio,primitiveUnits,r,radius,referrerPolicy,refX,refY,rel,rendering-intent,repeatCount,repeatDur,requiredExtensions,requiredFeatures,restart,result,rotate,rx,ry,scale,seed,shape-rendering,slope,spacing,specularConstant,specularExponent,speed,spreadMethod,startOffset,stdDeviation,stemh,stemv,stitchTiles,stop-color,stop-opacity,strikethrough-position,strikethrough-thickness,string,stroke,stroke-dasharray,stroke-dashoffset,stroke-linecap,stroke-linejoin,stroke-miterlimit,stroke-opacity,stroke-width,style,surfaceScale,systemLanguage,tabindex,tableValues,target,targetX,targetY,text-anchor,text-decoration,text-rendering,textLength,to,transform,transform-origin,type,u1,u2,underline-position,underline-thickness,unicode,unicode-bidi,unicode-range,units-per-em,v-alphabetic,v-hanging,v-ideographic,v-mathematical,values,vector-effect,version,vert-adv-y,vert-origin-x,vert-origin-y,viewBox,viewTarget,visibility,width,widths,word-spacing,writing-mode,x,x-height,x1,x2,xChannelSelector,xlink:actuate,xlink:arcrole,xlink:href,xlink:role,xlink:show,xlink:title,xlink:type,xmlns:xlink,xml:base,xml:lang,xml:space,y,y1,y2,yChannelSelector,z,zoomAndPan`);function Se(e){if(e==null)return!1;let t=typeof e;return t===`string`||t===`number`||t===`boolean`}var Ce=/[ !"#$%&'()*+,./:;<=>?@[\\\]^`{|}~]/g;function we(e,t){return e.replace(Ce,e=>t?e===`"`?`\\\\\\"`:`\\\\${e}`:`\\${e}`)}function Te(e,t,n){if(e.length!==t.length)return!1;let r=!0;for(let i=0;r&&i<e.length;i++)r=Y(e[i],t[i],n);return r}function Ee(e,t,n){if(e.size!==t.size)return!1;let r=Array.from(t),i=new Uint8Array(r.length);for(let t of e){let e=-1;for(let a=0;a<r.length;a++)if(!i[a]&&Y(t,r[a],n)){e=a;break}if(e<0)return!1;i[e]=1}return!0}function q(e,t,n){let r=f(e),i=f(t);if(r||i||(r=p(e),i=p(t),r||i))return r&&i?Ee(e,t,n):!1;if(Object.keys(e).length!==Object.keys(t).length)return!1;for(let r in e){let i=e.hasOwnProperty(r),a=t.hasOwnProperty(r);if(i&&!a||!i&&a||!Y(e[r],t[r],n))return!1}return String(e)===String(t)}function J(e,t,n,r){n||=[new Map,new Map];let[i,a]=n;if(i.has(e)||a.has(t))return i.get(e)===t&&a.get(t)===e;i.set(e,t),a.set(t,e);let o=r(e,t,n);return i.delete(e),a.delete(t),o}function Y(e,t,n){if(e===t)return!0;let r=m(e),i=m(t);return r||i?r&&i?e.getTime()===t.getTime():!1:(r=_(e),i=_(t),r||i?e===t:(r=d(e),i=d(t),r||i?r&&i?J(e,t,n,Te):!1:(r=v(e),i=v(t),r||i?!r||!i?!1:J(e,t,n,q):String(e)===String(t))))}function De(e,t){return e.findIndex(e=>Y(e,t))}var X=e=>!!(e&&e.__v_isRef===!0),Z=e=>g(e)?e:e==null?``:d(e)||v(e)&&(e.toString===b||!h(e.toString))?X(e)?Z(e.value):JSON.stringify(e,Q,2):String(e),Q=(e,t)=>X(t)?Q(e,t.value):f(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((e,[t,n],r)=>(e[$(t,r)+` =>`]=n,e),{})}:p(t)?{[`Set(${t.size})`]:[...t.values()].map(e=>$(e))}:_(t)?$(t):v(t)&&!d(t)&&!S(t)?String(t):t,$=(e,t=``)=>_(e)?`Symbol(${e.description??t})`:e;function Oe(e){return e==null?`initial`:typeof e==`string`?e===``?` `:e:(typeof e==`number`&&Number.isFinite(e)||console.warn(`[Vue warn] Invalid value used for CSS binding. Expected a string or a finite number but received:`,e),String(e))}export{P as $,v as A,g as B,pe as C,f as D,xe as E,Se as F,k as G,ge as H,w as I,Oe as J,e as K,me as L,S as M,y as N,he as O,ee as P,c as Q,p as R,F as S,be as T,Y as U,_ as V,De as W,R as X,G as Y,H as Z,se as _,N as a,T as b,ce as c,we as d,U as et,M as f,ye as g,D as h,r as i,te as it,a as j,o as k,s as l,u as m,t as n,ae as nt,re as o,oe as p,W as q,i as r,A as rt,O as s,n as t,Z as tt,L as u,d as v,C as w,h as x,ve as y,_e as z};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{$ as e,D as t,H as n,L as r,M as i,P as a,S as o,T as s,V as c,W as l,_ as u,ct as d,d as f,dt as p,et as m,f as h,g,h as _,it as v,j as y,k as b,m as x,o as S,q as C,t as w,v as T,w as E,x as D,z as O}from"./_plugin-vue_export-helper-C4wFX7Eq.js";import{X as k,q as A,tt as j}from"./shared.esm-bundler-EUzHGNqQ.js";(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),t.credentials=e.crossOrigin===`use-credentials`?`include`:e.crossOrigin===`anonymous`?`omit`:`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var ee=E({__name:`UiHeading`,props:{as:{type:String,required:!1},size:{type:String,required:!1},spaceAfter:{type:Number,required:!1},spaceBefore:{type:Number,required:!1},weight:{type:String,required:!1},tone:{type:String,required:!1}},setup(e,{expose:t}){t();let n={};return Object.defineProperty(n,"__isScriptSetup",{enumerable:!1,value:!0}),n}});function te(t,r,i,a,o,s){return O(),g(l(i.as??`h2`),{class:A([`ui-heading`,{small:i.size===`sm`,large:i.size===`lg`,semibold:i.weight===`semibold`,secondary:i.tone===`secondary`}]),style:k(i.spaceAfter===void 0&&i.spaceBefore===void 0?void 0:{marginBottom:i.spaceAfter===void 0?void 0:i.spaceAfter===0?`0`:`var(--sp-${i.spaceAfter})`,marginTop:i.spaceBefore===void 0?void 0:i.spaceBefore===0?`0`:`var(--sp-${i.spaceBefore})`})},{default:e(()=>[n(t.$slots,`default`,{},void 0,!0)]),_:3},8,[`class`,`style`])}var M=w(ee,[[`render`,te],[`__scopeId`,`data-v-9926996b`],[`__file`,`/run/media/zede/general/pr/my/image-gen/projector/packages/client/common/ui/UiHeading.vue`]]),ne=E({__name:`UiMessage`,props:{as:{type:String,required:!1},tone:{type:String,required:!1},variant:{type:String,required:!1},size:{type:String,required:!1},padding:{type:Number,required:!1},flush:{type:Boolean,required:!1},wrap:{type:Boolean,required:!1}},setup(e,{expose:t}){t();let n={};return Object.defineProperty(n,"__isScriptSetup",{enumerable:!1,value:!0}),n}});function re(t,r,i,a,o,s){return O(),g(l(i.as??`p`),{class:A([`message`,[i.tone,i.variant,i.size?`size-${i.size}`:void 0,{flush:i.flush,wrap:i.wrap}]]),style:k(i.padding===void 0?void 0:{"--ui-message-padding":`var(--sp-${i.padding})`})},{default:e(()=>[n(t.$slots,`default`,{},void 0,!0)]),_:3},8,[`style`,`class`])}var N=w(ne,[[`render`,re],[`__scopeId`,`data-v-e72d4034`],[`__file`,`/run/media/zede/general/pr/my/image-gen/projector/packages/client/common/ui/UiMessage.vue`]]),P=Symbol(`ui-control-scope`),ie=E({props:{as:{type:String,default:`input`},modelValue:null,value:null,modelModifiers:{type:Object,default:()=>({})},mono:Boolean,grow:Boolean,appearance:String,swatchSize:String},emits:[`update:modelValue`],setup(e,{attrs:n,emit:r,slots:i,expose:a}){let o=b(P,void 0),c=s(),l=p(),u=()=>Object.hasOwn(c.vnode.props??{},`modelValue`)||Object.hasOwn(c.vnode.props??{},`model-value`),d=!1,f={deep:!0,created(...e){d=!1,u()&&(S.created?.(...e),d=!0)},mounted(...e){u()&&S.mounted?.(...e)},beforeUpdate(...e){u()&&(d||=(S.created?.(e[0],e[1],e[2],null),!0),S.beforeUpdate?.(...e))},updated(...e){u()&&S.updated?.(...e)}};return a({get element(){return l.value},focus(e){l.value?.focus(e)},select(){let e=l.value;(e instanceof HTMLInputElement||e instanceof HTMLTextAreaElement)&&e.select()}}),()=>m(t(e.as,{ref:l,...e.value===void 0?{}:{value:e.value},class:{"ui-control-mono":e.mono,"ui-control-grow":e.grow,"ui-control-inset":e.appearance===`inset`,"ui-control-filled":e.appearance===`filled`,"ui-control-swatch":e.appearance===`swatch`&&n.type===`color`,"ui-control-swatch-compact":e.swatchSize===`sm`,"ui-control-inline-select":e.appearance===`inline-select`&&e.as===`select`},style:e.as!==`textarea`&&![`checkbox`,`radio`].includes(String(n.type))?o?.value:void 0,"onUpdate:modelValue":e=>{u()&&r(`update:modelValue`,e)}},i.default?.()),[[f,e.modelValue,void 0,e.modelModifiers]])}}),F=w(ie,[[`__scopeId`,`data-v-8ac3487d`],[`__file`,`/run/media/zede/general/pr/my/image-gen/projector/packages/client/common/ui/UiControl.vue`]]),ae=E({__name:`UiInline`,props:{as:{type:String,required:!1},gap:{type:[String,Number],required:!1},inline:{type:Boolean,required:!1},align:{type:String,required:!1},justify:{type:String,required:!1},wrap:{type:Boolean,required:!1}},setup(e,{expose:t}){t();let n={};return Object.defineProperty(n,"__isScriptSetup",{enumerable:!1,value:!0}),n}});function oe(t,r,i,a,o,s){return O(),g(l(i.as??`div`),{class:A([`ui-inline`,{inline:i.inline}]),style:k({"--inline-gap":i.gap===`none`?`normal`:i.gap&&!Number.isInteger(i.gap)?`${i.gap*4}px`:`var(--sp-${i.gap??2})`,alignItems:i.align??`center`,justifyContent:i.justify===`between`?`space-between`:i.justify??`start`,flexWrap:i.wrap?`wrap`:`nowrap`})},{default:e(()=>[n(t.$slots,`default`,{},void 0,!0)]),_:3},8,[`class`,`style`])}var I=w(ae,[[`render`,oe],[`__scopeId`,`data-v-7f3dfb7c`],[`__file`,`/run/media/zede/general/pr/my/image-gen/projector/packages/client/common/ui/UiInline.vue`]]),se={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function ce(e,t){return O(),T(`svg`,se,[...t[0]||=[_(`path`,{fill:`none`,stroke:`currentColor`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`,d:`M21 12a9 9 0 1 1-6.219-8.56`},null,-1)]])}var le=v({name:`lucide-loader-circle`,render:ce}),ue=E({__name:`UiSpinner`,props:{label:{type:String,required:!1},independent:{type:Boolean,required:!1}},setup(e,{expose:t}){t();let n={get IconLoader(){return le}};return Object.defineProperty(n,"__isScriptSetup",{enumerable:!1,value:!0}),n}});function de(e,t,n,r,i,a){return O(),g(r.IconLoader,{class:A([`ui-spinner`,{independent:n.independent}]),"aria-hidden":!n.label||void 0,"aria-label":n.label},null,8,[`class`,`aria-hidden`,`aria-label`])}var L=w(ue,[[`render`,de],[`__scopeId`,`data-v-6fa06d71`],[`__file`,`/run/media/zede/general/pr/my/image-gen/projector/packages/client/common/ui/UiSpinner.vue`]]),fe=E({__name:`UiButton`,props:{appearance:{type:String,required:!1},tone:{type:String,required:!1},shape:{type:String,required:!1,default:`rect`},size:{type:String,required:!1,default:`md`},busy:{type:Boolean,required:!1,default:void 0},active:{type:Boolean,required:!1},disabled:{type:Boolean,required:!1},type:{type:String,required:!1,default:`button`}},setup(e,{expose:t}){t();let n=e,r={props:n,appearance:x(()=>n.appearance??(n.shape===`icon`?`quiet`:`outline`)),tone:x(()=>n.tone??([`icon`,`chip`].includes(n.shape)?`muted`:`neutral`)),UiSpinner:L};return Object.defineProperty(r,"__isScriptSetup",{enumerable:!1,value:!0}),r}}),pe=[`aria-busy`,`disabled`,`type`];function me(e,t,r,i,a,o){return O(),T(`button`,{class:A([`btn`,[i.appearance,i.tone,r.shape,r.size,{active:r.active,"busy-capable":r.busy!==void 0}]]),"aria-busy":r.busy||void 0,disabled:r.disabled||r.busy,type:r.type},[r.busy===void 0?n(e.$slots,`default`,{},void 0,void 0,1):(O(),T(`span`,{key:0,class:A([`button-content`,{pending:r.busy}])},[n(e.$slots,`default`)],2)),r.busy?(O(),g(i.UiSpinner,{key:2,independent:``,class:`button-spinner`})):u(`v-if`,!0)],10,pe)}var R=w(fe,[[`render`,me],[`__scopeId`,`data-v-9f137d66`],[`__file`,`/run/media/zede/general/pr/my/image-gen/projector/packages/client/common/ui/UiButton.vue`]]),he=E({__name:`UiHint`,props:{size:{type:String,required:!1},spaceAfter:{type:Number,required:!1},spaceBefore:{type:Number,required:!1},leading:{type:String,required:!1},wrap:{type:Boolean,required:!1}},setup(e,{expose:t}){t();let n={};return Object.defineProperty(n,"__isScriptSetup",{enumerable:!1,value:!0}),n}});function ge(e,t,r,i,a,o){return O(),T(`p`,{class:A([`hint`,{wrap:r.wrap}]),style:k({fontSize:r.size?`var(--fs-${r.size})`:void 0,marginTop:r.spaceBefore?`var(--sp-${r.spaceBefore})`:void 0,lineHeight:r.leading===`inherit`?`inherit`:void 0,marginBottom:r.spaceAfter?`var(--sp-${r.spaceAfter})`:void 0})},[n(e.$slots,`default`,{},void 0,!0)],6)}var z=w(he,[[`render`,ge],[`__scopeId`,`data-v-aad83f25`],[`__file`,`/run/media/zede/general/pr/my/image-gen/projector/packages/client/common/ui/UiHint.vue`]]),B=[{id:`dark`,title:`Тёмная`,description:`Спокойная тёплая тёмная схема Projector.`},{id:`light`,title:`Светлая`,description:`Тёплая светлая схема для яркого окружения.`},{id:`contrast`,title:`Высокий контраст`,description:`Чёрный фон и яркие акценты для максимальной читаемости.`},{id:`auto`,title:`Как в системе`,description:`Следует за светлой или тёмной темой операционной системы.`}],V=`dark`;function H(e){return B.some(t=>t.id===e)}function _e(e,t){return e===`auto`?t?`light`:`dark`:e}function ve(e){return e===`light`?`light`:`dark`}var ye=p(V),U,W=!1;function be(){let e=document.documentElement.dataset.appearance;return H(e)?e:V}function xe(e){document.querySelector(`meta[name="color-scheme"]`)?.setAttribute(`content`,ve(e));let t=getComputedStyle(document.documentElement).getPropertyValue(`--bg-2`).trim();t&&document.querySelector(`meta[name="theme-color"]`)?.setAttribute(`content`,t)}function G(e){ye.value=e;let t=_e(e,U?.matches??!1),n=document.documentElement;return n.dataset.appearance=e,n.dataset.theme=t,xe(t),t}function Se(){W||(W=!0,G(be()),U=window.matchMedia(`(prefers-color-scheme: light)`),U.addEventListener(`change`,()=>{ye.value===`auto`&&G(`auto`)}))}function Ce(e={}){let t=d(!1),n=e.busy??d(!1),r=e.error??d(``),i=e.status??d(``);async function a(e,i){r.value=``,n.value=!0;try{return await e(),t.value=!0,!0}catch(e){return r.value=e instanceof Error?e.message:i,!1}finally{n.value=!1}}async function o(e,t){n.value=!0,r.value=``,i.value=``;try{let n=await e();return i.value=typeof t.success==`function`?t.success(n):t.success??(typeof n==`string`?n:``),n}catch(e){t.rollback?.(),r.value=e instanceof Error?e.message:t.errorFallback;return}finally{n.value=!1}}function s(e){return o(e,{errorFallback:`Не удалось выполнить`})}return{ready:t,busy:n,error:r,status:i,load:a,perform:o,run:s}}var we=E({__name:`UiStatusDot`,props:{as:{type:String,required:!1},size:{type:Number,required:!1},tone:{type:String,required:!1},inline:{type:Boolean,required:!1},shrink:{type:Boolean,required:!1},radius:{type:String,required:!1}},setup(e,{expose:t}){t();let n={};return Object.defineProperty(n,"__isScriptSetup",{enumerable:!1,value:!0}),n}});function Te(e,t,n,r,i,a){return O(),g(l(n.as??`span`),{class:A([`ui-status-dot`,[n.tone,{inline:n.inline,fixed:!n.shrink,circle:n.radius===`circle`}]]),style:k({"--ui-status-dot-size":`${n.size??7}px`})},null,8,[`class`,`style`])}var K=w(we,[[`render`,Te],[`__scopeId`,`data-v-70326148`],[`__file`,`/run/media/zede/general/pr/my/image-gen/projector/packages/client/common/ui/UiStatusDot.vue`]]),Ee=Symbol(`ide-commands`);function q(e,t){let n=b(Ee);if(!n)throw Error(`IDE command host is not installed`);let r=n.createScope(e,t);a(()=>r.dispose());function i(e,t){r.activate(),r.executeCommand(e,t).catch(n.reportError)}function o(e){if(e.defaultPrevented)return;let t=e.target,n=t instanceof Element&&!!t.closest(`input,textarea,select,[contenteditable="true"]`),a=r.resolveKeybinding(e,n);a&&(e.preventDefault(),e.stopPropagation(),i(a.command,a.args))}function s(e,t,a={}){n.revision.value;let o=r.describe(e,t);if(!o)throw Error(`Unknown menu command: ${e}`);return{id:e,label:a.label??o.title,shortcut:o.shortcut,disabled:!o.enabled,separator:a.separator,danger:a.danger,command:e,args:t,run:()=>i(e,t)}}return{scope:r,run:i,keydown:o,item:s}}function J(e){if(e===void 0)return{};if(!e||typeof e!=`object`||Array.isArray(e))throw Error(`Аргументы команды должны быть объектом`);return e}function De(e){let t=[];return a(()=>t.forEach(e=>e())),(n,r,i,a,o,s)=>{t.push(e.registerCommand({id:n,title:r,description:i,arguments:o,run:a,enabled:s}))}}function Oe(e,t){let n=e[t];if(n!==void 0&&typeof n!=`string`)throw Error(`${t} должен быть строкой`);return n}function Y(e=globalThis.location?.pathname??``){return/^\/devices\/[a-z0-9][a-z0-9-]{0,62}(?:\/|$)/.exec(e)?.[0].replace(/\/$/,``)??``}function ke(){let e=Y();return e?`/api${e}`:``}function Ae(e){let t=String(e),n=ke();if(!n)return t;if(t.startsWith(`/api/`)&&!t.startsWith(`/api/devices/`)&&!t.startsWith(`/api/hub/`))return n+t.slice(4);try{let e=new URL(t);if(e.host===location.host&&[`http:`,`https:`,`ws:`,`wss:`].includes(e.protocol))return e.pathname=Ae(e.pathname),e.href}catch{}return t}function je(e){if(e.includes(`.tabs.`)){let t=e.split(`.`).at(-1);return{description:`Действие над вкладками области. Без id используется текущая вкладка. Закрытие несохранённого файла может запросить подтверждение.`,arguments:t===`reorder`?{ids:`string[]: все идентификаторы вкладок без повторений в новом порядке`}:t===`rename`?{id:`string (необязательно): идентификатор вкладки`,label:`string (необязательно): новое имя; без label откроется ввод имени`}:{id:`string (необязательно): идентификатор вкладки`}}}if(e.startsWith(`ide.workbench.panel.`))return{description:`Действие над блоком вкладки: разделить вправо или вниз, скрыть блок. Без id используется активная вкладка блока с фокусом. Разделить можно блок минимум с двумя вкладками.`,arguments:{id:`string (необязательно): идентификатор вкладки`}};if(e.startsWith(`ide.fileTree.`)){let t={path:`string (необязательно): путь относительно корня проекта; без него текущая запись дерева`};return t.kind=`string (необязательно): directory для действий над папкой; иначе file`,/\.(create|duplicate|rename|paste)$/.test(e)&&(t.directory=`string (необязательно): каталог назначения относительно корня`),/\.(create|duplicate|rename)$/.test(e)&&(t.name=`string (необязательно): имя записи; без него откроется диалог`),e.endsWith(`.delete`)&&(t.confirm=`boolean: true только при явном запросе пользователя на удаление; иначе диалог подтверждения`),{description:`Действие в дереве файлов текущего проекта. Явный path не зависит от выбранной строки. Файловые операции возвращают source/destination; открытие файла или диалога возвращает после передачи действия UI.`,arguments:/\.(refresh|collapseAll|contextMenu)$/.test(e)?{}:t}}return e.startsWith(`ide.git.`)?{description:`Действие Git в текущем проекте. stage/unstage/discard: path файла, префикс папки или пустая строка для всей группы. discard (в т.ч. для папки) восстанавливает рабочий файл из индекса; untracked переносит в корзину.`,arguments:e.endsWith(`.refresh`)?{}:{path:`string: путь относительно проекта`,staged:`boolean (необязательно): true для индекса, false для рабочей версии`,...e.endsWith(`.discard`)?{confirm:`boolean: true только при явном запросе пользователя на откат; иначе подтверждение`}:{}}}:e.startsWith(`ide.editor.file.`)?{description:`Действие над уже открытым файлом. Без id используется активный файл. file.open открывает рабочую версию активного сравнения.`,arguments:{id:`string (необязательно): идентификатор открытой вкладки`}}:e===`ide.keybindings.save`?{description:`Сохранить сочетание, записанное в открытом диалоге редактора клавиш. Требуется запись с клавиатуры.`,arguments:{}}:e.startsWith(`ide.keybindings.`)?{description:`Действие над видимой строкой редактора клавиш.`,arguments:{command:`string: ID команды строки`,index:`number: индекс её привязки`}}:{description:`Действие в указанной области Projector; использует её текущий UI-контекст.`,arguments:{}}}var Me={Space:` `,Minus:`-`,Equal:`=`,BracketLeft:`[`,BracketRight:`]`,Backslash:`\\`,Semicolon:`;`,Quote:`'`,Backquote:"`",Comma:`,`,Period:`.`,Slash:`/`,IntlBackslash:`\\`};function Ne(e){let t=e.code??``;return/^Key[A-Z]$/.test(t)?t.slice(3).toLowerCase():/^Digit[0-9]$/.test(t)?t.slice(5):Me[t]??e.key}function Pe(e,t){return!e||Object.entries(e).every(([e,n])=>t[e]===n)}function Fe(e,t){let n=e.toLowerCase().split(`+`),r=n.pop(),i=Ne(t),a=n.includes(`mod`);return(r===i.toLowerCase()||r===`space`&&i===` `)&&(a?!!(t.ctrlKey||t.metaKey):!!t.ctrlKey===n.includes(`ctrl`))&&(a?!(t.ctrlKey&&t.metaKey):!!t.metaKey===n.includes(`meta`))&&!!t.altKey===n.includes(`alt`)&&!!t.shiftKey===n.includes(`shift`)}function Ie(e){if(!Array.isArray(e)||e.length>500)throw Error(`Ожидается список до 500 привязок`);return e.map(e=>{if(!e||typeof e!=`object`||typeof e.command!=`string`||!e.command.trim()||typeof e.key!=`string`||!e.key.trim())throw Error(`Укажите command и key для каждой привязки`);let t=e.key.split(`+`);if(!t.at(-1)||t.slice(0,-1).some(e=>![`mod`,`ctrl`,`meta`,`alt`,`shift`].includes(e.toLowerCase()))||new Set(t.map(e=>e.toLowerCase())).size!==t.length||t.some(e=>e.toLowerCase()===`mod`)&&t.some(e=>[`ctrl`,`meta`].includes(e.toLowerCase())))throw Error(`Некорректная клавиша: ${e.key}`);if(e.when!==void 0&&(!e.when||Array.isArray(e.when)||typeof e.when!=`object`||Object.values(e.when).some(e=>e!==null&&![`string`,`boolean`,`number`].includes(typeof e))))throw Error(`when должен содержать значения ключей контекста`);for(let t of[`disabled`,`allowInput`])if(e[t]!==void 0&&typeof e[t]!=`boolean`)throw Error(`${t} должен быть boolean`);return{key:e.key,command:e.command,...e.when===void 0?{}:{when:{...e.when}},...e.args===void 0?{}:{args:e.args},...e.disabled===void 0?{}:{disabled:e.disabled},...e.allowInput===void 0?{}:{allowInput:e.allowInput}}})}function Le(e=[]){let t=new Map,n=new Set,r=[],i=``,a=()=>{for(let e of n)e()},o=()=>[...e.filter(e=>!r.some(t=>t.command===e.command)),...r].filter(e=>!e.disabled);function s(e,n,r){let i=t.get(e),a=i?.commands.get(n);if(i&&a)return{id:n,title:a.title,description:a.description??je(n).description,arguments:{...a.arguments??je(n).arguments},...a.palette===!1?{palette:!1}:{},scope:e,enabled:a.enabled?.(r)??!0,shortcut:o().findLast(e=>e.command===n&&Pe(e.when,i.context()))?.key.replace(/Mod/g,`Ctrl`)}}async function c(e,n,r={}){let a=r.scope??i,o=t.get(a)?.commands.get(e);if(!o)throw Error(`Команда ${e} не зарегистрирована в области ${a||`(нет активной области)`}`);if(r.signal?.aborted){let e=Error(`Выполнение отменено`);throw e.name=`AbortError`,e}if(!s(a,e,n)?.enabled)throw Error(`Команда ${e} сейчас недоступна`);return await o.run(n,{signal:r.signal})}function l(e,n){if(t.has(e))throw Error(`Область команд ${e} уже зарегистрирована`);let r={context:n,commands:new Map};return t.set(e,r),a(),{id:e,activate(){i=e},registerCommand(e){if(r.commands.has(e.id))throw Error(`Команда ${e.id} уже зарегистрирована`);return r.commands.set(e.id,e),a(),()=>{r.commands.get(e.id)===e&&(r.commands.delete(e.id),a())}},describe:(t,n)=>s(e,t,n),executeCommand:(t,n,r={})=>c(t,n,{...r,scope:e}),resolveKeybinding(t,r=!1){if(t.isComposing||t.repeat)return;let i={...n(),inputFocus:r};return o().findLast(n=>(n.allowInput||!r)&&Fe(n.key,t)&&Pe(n.when,i)&&s(e,n.command,n.args)?.enabled)},dispose(){t.get(e)===r&&(t.delete(e),i===e&&(i=``),a())}}}return{createScope:l,describeCommand:s,executeCommand:c,getCommands:()=>[...t.keys()].flatMap(e=>[...t.get(e).commands.keys()].map(t=>s(e,t))),getActiveScope:()=>i,getScopes:()=>[...t.entries()].map(([e,t])=>({id:e,context:t.context()})),getKeybindings:()=>structuredClone(o()),getDefaultKeybindings:()=>structuredClone(e),getKeybindingOverrides:()=>structuredClone(r),setKeybindings(e){r=Ie(e),a()},subscribe(e){return n.add(e),()=>{n.delete(e)}}}}var X={surface:`fileTree`},Re=[{key:`Mod+Shift+P`,command:`ide.workbench.commandPalette.open`,allowInput:!0},{key:`F1`,command:`ide.workbench.commandPalette.open`,allowInput:!0},{key:`F2`,command:`ide.fileTree.file.rename`,when:{...X,entryKind:`file`}},{key:`F2`,command:`ide.fileTree.directory.rename`,when:{...X,entryKind:`directory`}},{key:`Delete`,command:`ide.fileTree.entry.delete`,when:X},{key:`Mod+C`,command:`ide.fileTree.entry.copy`,when:X},{key:`Mod+X`,command:`ide.fileTree.entry.cut`,when:X},{key:`Mod+V`,command:`ide.fileTree.entry.paste`,when:X},{key:`Enter`,command:`ide.fileTree.file.open`,when:{...X,entryKind:`file`}},{key:`Enter`,command:`ide.fileTree.directory.toggle`,when:{...X,entryKind:`directory`}},{key:`Shift+F10`,command:`ide.fileTree.contextMenu`,when:X},{key:`ContextMenu`,command:`ide.fileTree.contextMenu`,when:X},{key:`ArrowRight`,command:`ide.workbench.tabs.next`},{key:`ArrowLeft`,command:`ide.workbench.tabs.previous`},{key:`Home`,command:`ide.workbench.tabs.first`},{key:`End`,command:`ide.workbench.tabs.last`},{key:`Shift+F10`,command:`ide.workbench.tabs.contextMenu`},{key:`ContextMenu`,command:`ide.workbench.tabs.contextMenu`},{key:`F2`,command:`ide.workbench.tabs.rename`},{key:`Alt+PageDown`,command:`ide.workbench.tab.next`},{key:`Alt+PageUp`,command:`ide.workbench.tab.previous`},{key:`Mod+S`,command:`ide.editor.file.save`,when:{surface:`editor`},allowInput:!0},{key:`Mod+Shift+L`,command:`ide.editor.selection.toChat`,when:{surface:`editor`},allowInput:!0},{key:`Mod+Shift+M`,command:`ide.editor.markdown.toggleSource`,when:{surface:`editor`},allowInput:!0}],ze=new Set(`delete remove rm clear kill stop reset discard revert push pull commit stage unstage merge clone install uninstall password run exec start restart save import write create new rename move add set apply send input login logout shell prune build up down`.split(` `)),Be=new Set(`read result list get info search refresh describe status find more filter open toggle focus show copy recent diff log worktree`.split(` `));function Ve(e){let t=e.split(/[.\-_]|(?<=[a-z])(?=[A-Z])/).map(e=>e.toLowerCase());return t.some(e=>Be.has(e))&&!t.some(e=>ze.has(e))}var He=E({__name:`UiCard`,props:{as:{type:String,required:!1},appearance:{type:String,required:!1},tone:{type:String,required:!1},density:{type:String,required:!1}},setup(e,{expose:t}){t();let n={};return Object.defineProperty(n,"__isScriptSetup",{enumerable:!1,value:!0}),n}});function Ue(t,r,i,a,o,s){return O(),g(l(i.as??`section`),{class:A(i.appearance===`frame`?`ui-frame`:[`ui-card`,i.tone??`neutral`,i.density??`regular`])},{default:e(()=>[n(t.$slots,`default`,{},void 0,!0)]),_:3},8,[`class`])}var We=w(He,[[`render`,Ue],[`__scopeId`,`data-v-8d47d7c2`],[`__file`,`/run/media/zede/general/pr/my/image-gen/projector/packages/client/common/ui/UiCard.vue`]]),Ge=E({__name:`UiField`,props:{label:{type:String,required:!0},layout:{type:String,required:!1},as:{type:String,required:!1},for:{type:String,required:!1},hint:{type:String,required:!1},error:{type:String,required:!1},required:{type:Boolean,required:!1},gap:{type:Number,required:!1}},setup(e,{expose:t}){t();let n=e,r=C(),i=x(()=>n.for??r),a={props:n,id:r,controlId:i,tag:x(()=>n.as??(n.layout===`plain`?`label`:`div`)),control:x(()=>({id:i.value,required:n.required||void 0,"aria-invalid":n.error?!0:void 0,"aria-describedby":[n.hint&&`${r}-hint`,n.error&&`${r}-error`].filter(Boolean).join(` `)||void 0}))};return Object.defineProperty(a,"__isScriptSetup",{enumerable:!1,value:!0}),a}}),Ke=[`id`,`aria-hidden`],qe=[`id`,`aria-hidden`];function Je(t,r,i,a,o,s){return O(),g(l(a.tag),{class:A([`field`,i.layout??`caption`]),for:a.tag===`label`?a.controlId:void 0,style:k(i.gap===void 0?void 0:{gap:`var(--sp-${i.gap})`})},{default:e(()=>[i.layout===`plain`?(O(),T(h,{key:0},[D(j(i.label),1)],64)):(O(),g(l(a.tag===`label`?`span`:`label`),{key:1,class:`field-label`,for:a.tag===`label`?void 0:a.controlId},{default:e(()=>[D(j(i.label),1)]),_:1},8,[`for`])),n(t.$slots,`default`,{control:a.control},void 0,!0),u(` Descriptions inside a wrapping label must not become part of the control's name.
|
|
2
|
-
aria-describedby still exposes the explicitly referenced text. `),i.hint?(O(),T(`span`,{key:2,id:`${a.id}-hint`,class:`field-hint`,"aria-hidden":a.tag===`label`||void 0},j(i.hint),9,Ke)):u(`v-if`,!0),i.error?(O(),T(`span`,{key:3,id:`${a.id}-error`,class:`field-error`,"aria-hidden":a.tag===`label`||void 0},j(i.error),9,qe)):u(`v-if`,!0)]),_:3},8,[`class`,`for`,`style`])}var Z=w(Ge,[[`render`,Je],[`__scopeId`,`data-v-7f010260`],[`__file`,`/run/media/zede/general/pr/my/image-gen/projector/packages/client/common/ui/UiField.vue`]]);function Ye(e){return typeof e==`string`&&/^[a-z0-9][a-z0-9-]{0,62}$/.test(e)}function Xe(e){if(typeof e!=`string`||!e.startsWith(`/devices/`)||e.includes(`\\`))return`/`;try{let t=new URL(e,`https://hub.invalid`);return t.origin!==`https://hub.invalid`||!/^\/devices\/[a-z0-9][a-z0-9-]{0,62}(?:\/|$)/.test(t.pathname)?`/`:t.pathname+t.search+t.hash}catch{return`/`}}async function Q(e,t){let n=await fetch(e,{...t,cache:`no-store`}),r=await n.json();if(!n.ok)throw Error(r.error||`Ошибка Hub (${n.status})`);return r}async function $(){await Q(`/api/hub/session`,{method:`DELETE`}),location.assign(`/login`)}var Ze=E({__name:`HubToken`,setup(e,{expose:t}){t();let n=d(``),r=d(!1),i=d(``),o=new AbortController,s,c=q(`hub-token`,()=>({surface:`hub`}));function l(){clearTimeout(s),n.value=``}c.scope.registerCommand({id:`ide.hub.token.show`,title:`Показать токен подключения Hub`,description:`Запрашивает токен для подключения устройств после проверки сессии Hub и показывает его на 30 секунд.`,enabled:()=>!r.value&&!n.value,run:async()=>{r.value=!0,i.value=``;try{let e=await Q(`/api/hub/device-token`,{method:`POST`,signal:o.signal});if(o.signal.aborted)return;n.value=e.token,s=setTimeout(l,3e4)}catch{o.signal.aborted||(i.value=`Не удалось показать токен. Проверьте вход в Hub и повторите попытку.`)}finally{r.value=!1}}}),c.scope.registerCommand({id:`ide.hub.token.hide`,title:`Скрыть токен подключения Hub`,description:`Очищает показанный токен подключения устройств.`,enabled:()=>!!n.value,run:l}),a(()=>{o.abort(),l()});let u={token:n,busy:r,error:i,abort:o,get timer(){return s},set timer(e){s=e},commands:c,hide:l,UiButton:R,UiControl:F,UiField:Z,UiHint:z,UiMessage:N};return Object.defineProperty(u,"__isScriptSetup",{enumerable:!1,value:!0}),u}});function Qe(t,n,r,i,a,s){return O(),T(`section`,{class:`token`,onFocusin:n[2]||=e=>i.commands.scope.activate(),onPointerdown:n[3]||=e=>i.commands.scope.activate(),onKeydown:n[4]||=(...e)=>i.commands.keydown&&i.commands.keydown(...e)},[i.token?(O(),g(i.UiField,{key:0,label:`Токен подключения устройств`},{default:e(({control:e})=>[o(i.UiControl,y(e,{value:i.token,readonly:``,mono:``,autocomplete:`off`,spellcheck:`false`}),null,16,[`value`])]),_:1})):u(`v-if`,!0),i.token?(O(),g(i.UiButton,{key:1,size:`sm`,onClick:n[0]||=e=>i.commands.run(`ide.hub.token.hide`)},{default:e(()=>[...n[5]||=[D(`Скрыть токен`,-1)]]),_:1})):(O(),g(i.UiButton,{key:2,size:`sm`,busy:i.busy,onClick:n[1]||=e=>i.commands.run(`ide.hub.token.show`)},{default:e(()=>[...n[6]||=[D(`Показать токен подключения`,-1)]]),_:1},8,[`busy`])),o(i.UiHint,null,{default:e(()=>[...n[7]||=[D(`Для добавления машины в настройках Hub локального Projector. Токен скроется через 30 секунд.`,-1)]]),_:1}),i.error?(O(),g(i.UiMessage,{key:3,tone:`danger`,role:`alert`},{default:e(()=>[D(j(i.error),1)]),_:1})):u(`v-if`,!0)],32)}var $e=w(Ze,[[`render`,Qe],[`__scopeId`,`data-v-233d8907`],[`__file`,`/run/media/zede/general/pr/my/image-gen/projector/packages/client/modules/hub/HubToken.vue`]]),et=E({__name:`HubConsole`,setup(e,{expose:t}){t();let n=d(!1),o=d(!0),s=d(!1),c=d(!1),l=d(``),u=d(``),f=d(),p=d([]),m,h=!1,g=Xe(new URLSearchParams(location.search).get(`next`)),_=q(`hub`,()=>({surface:`hub`,authenticated:n.value}));async function v(){if(!(c.value||h)){c.value=!0;try{let e=await Q(`/api/hub/session`);if(h||(n.value=e.authenticated,!e.authenticated))return;let t=await Q(`/api/hub/devices`);h||(p.value=t.devices,l.value=``)}catch(e){h||(l.value=e instanceof Error?e.message:`Hub недоступен`)}finally{c.value=!1}}}async function y(){if(!s.value&&u.value){s.value=!0,l.value=``;try{await Q(`/api/hub/session`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({password:u.value})}),u.value=``,location.assign(g)}catch(e){l.value=e instanceof Error?e.message:`Не удалось войти`}finally{s.value=!1,l.value&&(await i(),f.value?.focus(),f.value?.select())}}}_.scope.registerCommand({id:`ide.hub.login`,title:`Войти в Hub`,description:`Проверяет пароль и открывает устройства или страницу, с которой был запрошен вход.`,enabled:()=>!s.value&&!!u.value,run:y}),_.scope.registerCommand({id:`ide.hub.devices.refresh`,title:`Обновить устройства Hub`,description:`Перечитывает список устройств и состояние их подключений.`,enabled:()=>n.value&&!c.value,run:v}),_.scope.registerCommand({id:`ide.hub.device.open`,title:`Открыть устройство`,description:`Открывает Projector на подключённой машине в отдельном контексте страницы.`,arguments:{deviceId:`string: id подключённого устройства`},run:e=>{let{deviceId:t}=J(e);if(!Ye(t)||!p.value.some(e=>e.id===t&&e.online))throw Error(`Устройство недоступно`);location.assign(`/devices/${t}/`)}}),_.scope.registerCommand({id:`ide.hub.logout`,title:`Выйти из Hub`,description:`Отзывает текущую сессию браузера и закрывает её соединения с устройствами. Задания и терминалы остаются на устройствах.`,run:async()=>{try{await $(),n.value=!1}catch{l.value=`Не удалось выйти. Повторите попытку.`}}}),r(async()=>{await v(),!h&&(o.value=!1,n.value&&location.pathname===`/login`&&g!==`/`?location.replace(g):(await i(),f.value?.focus(),m=setInterval(()=>{n.value&&v()},5e3)))}),a(()=>{h=!0,clearInterval(m)});let b={authenticated:n,loading:o,busy:s,refreshing:c,error:l,password:u,input:f,devices:p,get timer(){return m},set timer(e){m=e},get disposed(){return h},set disposed(e){h=e},next:g,commands:_,refresh:v,login:y,UiHeading:M,UiCard:We,UiButton:R,UiField:Z,UiControl:F,UiMessage:N,UiHint:z,UiInline:I,UiStatusDot:K,UiSpinner:L,HubToken:$e};return Object.defineProperty(b,"__isScriptSetup",{enumerable:!1,value:!0}),b}}),tt={class:`content`},nt={class:`devices`,"aria-label":`Устройства Hub`},rt={class:`device-state`};function it(t,n,r,i,a,s){return O(),T(`main`,{class:`hub`,onFocusin:n[4]||=e=>i.commands.scope.activate(),onPointerdown:n[5]||=e=>i.commands.scope.activate(),onKeydown:n[6]||=(...e)=>i.commands.keydown&&i.commands.keydown(...e)},[_(`div`,tt,[n[16]||=_(`header`,{class:`brand`},[_(`img`,{src:`/favicon.svg`,alt:``,width:`28`,height:`28`}),_(`span`,null,[D(`projector`),_(`span`,{class:`hub-label`},`hub`)])],-1),o(i.UiCard,{class:`panel`},{default:e(()=>[i.loading?(O(),g(i.UiSpinner,{key:0,label:`Подключение к Hub`})):i.authenticated?(O(),T(h,{key:2},[o(i.UiInline,{justify:`between`},{default:e(()=>[o(i.UiHeading,{as:`h1`},{default:e(()=>[...n[10]||=[D(`Устройства`,-1)]]),_:1}),o(i.UiButton,{size:`sm`,appearance:`quiet`,onClick:n[2]||=e=>i.commands.run(`ide.hub.logout`)},{default:e(()=>[...n[11]||=[D(`Выйти`,-1)]]),_:1})]),_:1}),o(i.UiHint,null,{default:e(()=>[...n[12]||=[D(`Выберите машину, с которой хотите работать.`,-1)]]),_:1}),i.error?(O(),g(i.UiMessage,{key:0,tone:`danger`,role:`alert`},{default:e(()=>[D(j(i.error),1)]),_:1})):u(`v-if`,!0),_(`div`,nt,[(O(!0),T(h,null,c(i.devices,t=>(O(),g(i.UiButton,{key:t.id,class:`device`,disabled:!t.online,onClick:e=>i.commands.run(`ide.hub.device.open`,{deviceId:t.id})},{default:e(()=>[o(i.UiStatusDot,{tone:t.online?`success`:`muted`},null,8,[`tone`]),_(`strong`,null,j(t.name),1),_(`span`,rt,j(t.online?`Подключено`:`Не в сети`),1)]),_:2},1032,[`disabled`,`onClick`]))),128)),i.devices.length?u(`v-if`,!0):(O(),g(i.UiHint,{key:0,class:`empty`},{default:e(()=>[...n[13]||=[D(`Нет подключённых устройств. Откройте настройки Hub в локальном Projector, чтобы подключить машину.`,-1)]]),_:1}))]),o(i.UiButton,{size:`sm`,busy:i.refreshing,onClick:n[3]||=e=>i.commands.run(`ide.hub.devices.refresh`)},{default:e(()=>[...n[14]||=[D(`Обновить`,-1)]]),_:1},8,[`busy`]),o(i.HubToken)],64)):(O(),T(h,{key:1},[o(i.UiHeading,{as:`h1`,size:`lg`},{default:e(()=>[...n[7]||=[D(`Вход в Hub`,-1)]]),_:1}),o(i.UiHint,null,{default:e(()=>[...n[8]||=[D(`Войдите, чтобы открыть Projector на подключённых устройствах.`,-1)]]),_:1}),_(`form`,{class:`login`,onSubmit:n[1]||=f(e=>i.commands.run(`ide.hub.login`),[`prevent`])},[o(i.UiField,{label:`Пароль`,required:``},{default:e(({control:e})=>[o(i.UiControl,y(e,{ref:`input`,modelValue:i.password,"onUpdate:modelValue":n[0]||=e=>i.password=e,type:`password`,autocomplete:`current-password`,disabled:i.busy}),null,16,[`modelValue`,`disabled`])]),_:1}),i.error?(O(),g(i.UiMessage,{key:0,tone:`danger`,role:`alert`},{default:e(()=>[D(j(i.error),1)]),_:1})):u(`v-if`,!0),o(i.UiButton,{type:`submit`,appearance:`solid`,busy:i.busy,disabled:!i.password},{default:e(()=>[...n[9]||=[D(`Войти`,-1)]]),_:1},8,[`busy`,`disabled`])],32)],64))]),_:1}),o(i.UiHint,{class:`footer`},{default:e(()=>[...n[15]||=[D(`Ваши проекты и задания остаются на ваших устройствах.`,-1)]]),_:1})])],32)}var at=w(et,[[`render`,it],[`__scopeId`,`data-v-b2698b3d`],[`__file`,`/run/media/zede/general/pr/my/image-gen/projector/packages/client/modules/hub/HubConsole.vue`]]),ot=E({__name:`HubSettings`,setup(e,{expose:t}){t();let n=p(),i=d(``),o=d(``),s=d(``),c=d(``),l=!!Y(),{ready:u,busy:f,error:m,status:h,load:g,perform:_}=Ce(),v=q(`hub-settings`,()=>({surface:`hub-settings`,online:n.value?.online??!1})),y,b=new AbortController,S=x(()=>!!o.value.trim()&&Ye(s.value)&&(!!c.value||n.value?.connections.some(e=>e.url===o.value.replace(/\/$/,``))));async function C(e=!1){let t=await Q(`/api/hub`,{signal:b.signal});b.signal.aborted||(n.value=t,e&&w(t.url??t.connections[0]?.url??``))}function w(e){i.value=e;let t=n.value?.connections.find(t=>t.url===e);o.value=t?.url??``,s.value=t?.deviceId??``,c.value=``}async function T(e){await _(async()=>{n.value=await Q(`/api/hub`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e),signal:b.signal}),i.value&&!n.value.connections.some(e=>e.url===i.value)&&w(``)},{errorFallback:`Не удалось изменить подключение Hub`})}async function E(){await _(async()=>{let e=await Q(`/api/hub`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({action:`save`,url:o.value.trim(),deviceId:s.value,token:c.value}),signal:b.signal});b.signal.aborted||(n.value=e,w(new URL(o.value.trim()).origin),c.value=``)},{errorFallback:`Не удалось подключиться к Hub`,success:`Подключение сохранено`})}v.scope.registerCommand({id:`ide.hub.connection.save`,title:`Сохранить Hub`,description:`Сохраняет адрес Hub, id устройства и токен. Для подключения выберите сохранённый Hub.`,enabled:()=>u.value&&!f.value&&!!S.value,run:E}),v.scope.registerCommand({id:`ide.hub.connection.select`,title:`Выбрать сохранённый Hub`,description:`Выбирает Hub для редактирования или очищает форму для нового подключения.`,arguments:{url:`string: адрес сохранённого Hub или пустая строка`},run:e=>{let{url:t}=J(e);if(typeof t!=`string`||t&&!n.value?.connections.some(e=>e.url===t))throw Error(`Hub не найден`);w(t)}}),v.scope.registerCommand({id:`ide.hub.connection.activate`,title:`Подключить выбранный Hub`,description:`Отключает предыдущий туннель и подключает выбранный Hub, сохраняя терминалы и задания.`,enabled:()=>!f.value&&!!i.value&&n.value?.url!==i.value,run:()=>T({action:`activate`,url:i.value})}),v.scope.registerCommand({id:`ide.hub.connection.delete`,title:`Удалить сохранённый Hub`,description:`Удаляет выбранное подключение и его токен; активный туннель отключается.`,enabled:()=>!f.value&&!!i.value,run:()=>T({action:`delete`,url:i.value})}),v.scope.registerCommand({id:`ide.hub.connection.disconnect`,title:`Отключить Projector от Hub`,description:`Останавливает туннель, сохраняя Hub и токен для следующего подключения.`,enabled:()=>!f.value&&!!n.value?.enabled,run:()=>T({enabled:!1})}),v.scope.registerCommand({id:`ide.hub.open`,title:`Открыть Hub`,description:`Открывает интерфейс настроенного Hub в новой вкладке браузера.`,enabled:()=>!!i.value,run:()=>{i.value&&window.open(i.value,`_blank`,`noopener,noreferrer`)}}),r(async()=>{l||(await g(()=>C(!0),`Не удалось загрузить подключение Hub`),b.signal.aborted||(y=setInterval(()=>{f.value||C().catch(()=>{})},3e3)))}),a(()=>{b.abort(),clearInterval(y)});let D={state:n,selected:i,url:o,deviceId:s,token:c,remote:l,ready:u,busy:f,error:m,status:h,load:g,perform:_,commands:v,get timer(){return y},set timer(e){y=e},abort:b,valid:S,refresh:C,selectHub:w,changeConnection:T,save:E,UiHeading:M,UiField:Z,UiControl:F,UiButton:R,UiHint:z,UiInline:I,UiMessage:N,UiStatusDot:K};return Object.defineProperty(D,"__isScriptSetup",{enumerable:!1,value:!0}),D}}),st=[`value`];function ct(t,n,r,i,a,s){return O(),T(`section`,{class:`settings`,onFocusin:n[9]||=e=>i.commands.scope.activate(),onPointerdown:n[10]||=e=>i.commands.scope.activate(),onKeydown:n[11]||=(...e)=>i.commands.keydown&&i.commands.keydown(...e)},[o(i.UiHeading,{as:`h2`,size:`sm`},{default:e(()=>[...n[12]||=[D(`Подключения к Hub`,-1)]]),_:1}),i.remote?(O(),g(i.UiHint,{key:0},{default:e(()=>[...n[13]||=[D(`Подключение управляется в локальном Projector на этой машине.`,-1)]]),_:1})):(O(),T(h,{key:1},[o(i.UiHint,null,{default:e(()=>[...n[14]||=[D(`Hub даёт доступ к этой машине через общий веб-интерфейс. Локальный сервер остаётся доступным по своему адресу.`,-1)]]),_:1}),o(i.UiField,{label:`Сохранённые хабы`,hint:`Одновременно активно только одно подключение.`},{default:e(({control:t})=>[o(i.UiControl,y(t,{as:`select`,"model-value":i.selected,disabled:!i.ready||i.busy,"onUpdate:modelValue":n[0]||=e=>i.commands.run(`ide.hub.connection.select`,{url:e})}),{default:e(()=>[n[15]||=_(`option`,{value:``},`Новый Hub`,-1),(O(!0),T(h,null,c(i.state?.connections,e=>(O(),T(`option`,{key:e.url,value:e.url},j(e.url)+j(i.state?.url===e.url?` · активен`:``),9,st))),128))]),_:1},16,[`model-value`,`disabled`])]),_:1}),i.selected?(O(),g(i.UiInline,{key:0,wrap:``},{default:e(()=>[o(i.UiButton,{disabled:i.busy||i.state?.url===i.selected,onClick:n[1]||=e=>i.commands.run(`ide.hub.connection.activate`)},{default:e(()=>[...n[16]||=[D(`Подключить`,-1)]]),_:1},8,[`disabled`]),o(i.UiButton,{disabled:i.busy,onClick:n[2]||=e=>i.commands.run(`ide.hub.open`)},{default:e(()=>[...n[17]||=[D(`Открыть Hub`,-1)]]),_:1},8,[`disabled`]),o(i.UiButton,{disabled:i.busy,onClick:n[3]||=e=>i.commands.run(`ide.hub.connection.delete`)},{default:e(()=>[...n[18]||=[D(`Удалить`,-1)]]),_:1},8,[`disabled`])]),_:1})):u(`v-if`,!0),i.state?.url?(O(),g(i.UiHint,{key:1},{default:e(()=>[D(`Активный Hub: `+j(i.state.url),1)]),_:1})):u(`v-if`,!0),i.state?(O(),g(i.UiInline,{key:2,role:`status`},{default:e(()=>[o(i.UiStatusDot,{tone:i.state.online?`success`:i.state.enabled?`warning`:`muted`},null,8,[`tone`]),D(j(i.state.online?`Подключено`:i.state.enabled?`Ожидание подключения`:`Не подключено`),1)]),_:1})):u(`v-if`,!0),i.state?.error?(O(),g(i.UiMessage,{key:3,tone:`danger`,role:`status`},{default:e(()=>[D(j(i.state.error),1)]),_:1})):u(`v-if`,!0),_(`form`,{class:`form`,onSubmit:n[8]||=f(e=>i.commands.run(`ide.hub.connection.save`),[`prevent`])},[o(i.UiField,{label:`Адрес Hub`,hint:`HTTPS-адрес; для localhost также разрешён HTTP.`,required:``},{default:e(({control:e})=>[o(i.UiControl,y(e,{modelValue:i.url,"onUpdate:modelValue":n[4]||=e=>i.url=e,type:`url`,placeholder:`https://hub.example.com`,disabled:i.busy}),null,16,[`modelValue`,`disabled`])]),_:1}),o(i.UiField,{label:`ID устройства`,hint:`Латинские строчные буквы, цифры и дефис. Стабильное имя этой машины.`,required:``},{default:e(({control:e})=>[o(i.UiControl,y(e,{modelValue:i.deviceId,"onUpdate:modelValue":n[5]||=e=>i.deviceId=e,pattern:`[a-z0-9][a-z0-9\\-]{0,62}`,maxlength:`63`,placeholder:`workstation`,disabled:i.busy}),null,16,[`modelValue`,`disabled`])]),_:1}),o(i.UiField,{label:`Токен подключения`,hint:i.selected?`Оставьте пустым, чтобы сохранить существующий токен для этого Hub.`:`Токен устройства, настроенный на Hub; отличается от пароля входа.`},{default:e(({control:e})=>[o(i.UiControl,y(e,{modelValue:i.token,"onUpdate:modelValue":n[6]||=e=>i.token=e,type:`password`,autocomplete:`new-password`,disabled:i.busy}),null,16,[`modelValue`,`disabled`])]),_:1},8,[`hint`]),o(i.UiInline,{wrap:``},{default:e(()=>[o(i.UiButton,{type:`submit`,appearance:`solid`,busy:i.busy,disabled:!i.ready||!i.valid},{default:e(()=>[D(j(i.selected?`Сохранить`:`Добавить Hub`),1)]),_:1},8,[`busy`,`disabled`]),i.state?.enabled?(O(),g(i.UiButton,{key:0,disabled:i.busy,onClick:n[7]||=e=>i.commands.run(`ide.hub.connection.disconnect`)},{default:e(()=>[...n[19]||=[D(`Отключить`,-1)]]),_:1},8,[`disabled`])):u(`v-if`,!0)]),_:1})],32),i.error||i.status?(O(),g(i.UiMessage,{key:4,tone:i.error?`danger`:void 0,role:`status`},{default:e(()=>[D(j(i.error||i.status),1)]),_:1},8,[`tone`])):u(`v-if`,!0)],64))],32)}var lt=w(ot,[[`render`,ct],[`__scopeId`,`data-v-c0efe881`],[`__file`,`/run/media/zede/general/pr/my/image-gen/projector/packages/client/modules/hub/HubSettings.vue`]]),ut=E({__name:`HubNavigation`,setup(e,{expose:t}){t();let n=x(()=>Y().split(`/`)[2]),r=q(`hub-navigation`,()=>({surface:`hub-navigation`,device:n.value??``}));r.scope.registerCommand({id:`ide.hub.devices.open`,title:`Устройства Hub`,description:`Возвращает к списку устройств Hub. Текущие задания и терминалы продолжают работать на машине.`,run:()=>location.assign(`/`)}),r.scope.registerCommand({id:`ide.hub.logout`,title:`Выйти из Hub`,description:`Отзывает текущую сессию Hub и закрывает её удалённые соединения.`,run:$});let i={device:n,commands:r,UiButton:R,UiInline:I};return Object.defineProperty(i,"__isScriptSetup",{enumerable:!1,value:!0}),i}});function dt(t,n,r,i,a,s){return i.device?(O(),g(i.UiInline,{key:0,class:`hub-nav`,onFocusin:n[2]||=e=>i.commands.scope.activate(),onPointerdown:n[3]||=e=>i.commands.scope.activate(),onKeydown:i.commands.keydown},{default:e(()=>[o(i.UiButton,{size:`sm`,appearance:`quiet`,title:`Устройства Hub · ${i.device}`,onClick:n[0]||=e=>i.commands.run(`ide.hub.devices.open`)},{default:e(()=>[D(`Hub · `+j(i.device),1)]),_:1},8,[`title`]),o(i.UiButton,{size:`sm`,appearance:`quiet`,onClick:n[1]||=e=>i.commands.run(`ide.hub.logout`)},{default:e(()=>[...n[4]||=[D(`Выйти`,-1)]]),_:1})]),_:1},8,[`onKeydown`])):u(`v-if`,!0)}var ft=w(ut,[[`render`,dt],[`__scopeId`,`data-v-e609bcca`],[`__file`,`/run/media/zede/general/pr/my/image-gen/projector/packages/client/modules/hub/HubNavigation.vue`]]);export{F as A,Se as C,R as D,z as E,N as M,M as N,L as O,be as S,H as T,De as _,We as a,Ce as b,Le as c,ke as d,Y as f,Oe as g,Ee as h,Z as i,P as j,I as k,Ie as l,J as m,lt as n,Ve as o,Ae as p,at as r,Re as s,ft as t,Ne as u,q as v,B as w,G as x,K as y};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
.ui-heading[data-v-9926996b]{margin:0 0 var(--sp-3);font-size:var(--fs-md);font-weight:500}.small[data-v-9926996b]{font-size:var(--fs-sm)}.large[data-v-9926996b]{font-size:var(--fs-lg)}.semibold[data-v-9926996b]{font-weight:600}.secondary[data-v-9926996b]{color:var(--text-2)}.danger[data-v-e72d4034]{color:var(--err)}.muted[data-v-e72d4034]{color:var(--muted)}.note[data-v-e72d4034]{padding:var(--sp-2) var(--sp-3);font-size:var(--fs-xs);margin:0}.padded[data-v-e72d4034]{padding:var(--ui-message-padding,var(--sp-3))}.size-2xs[data-v-e72d4034]{font-size:var(--fs-2xs)}.size-xs[data-v-e72d4034]{font-size:var(--fs-xs)}.size-sm[data-v-e72d4034]{font-size:var(--fs-sm)}.flush[data-v-e72d4034]{margin:0}.wrap[data-v-e72d4034]{white-space:pre-wrap;overflow-wrap:anywhere}.ui-control-mono[data-v-8ac3487d]{font-family:var(--mono)}.ui-control-inset[data-v-8ac3487d]:is(input,select,textarea){font-size:var(--fs-xs);color:var(--text);background:var(--bg-sunken);border:1px solid var(--line);border-radius:var(--r-sm);padding:3px 8px}.ui-control-filled[data-v-8ac3487d]{background:var(--bg-2);border:1px solid var(--line);color:var(--text);border-radius:var(--r-sm);padding:var(--sp-2);padding-right:var(--ui-control-padding-right,var(--sp-2));min-width:0}.ui-control-grow[data-v-8ac3487d]{flex:1;min-width:0}.ui-control-swatch[data-v-8ac3487d]:is(input[type=color]){width:28px;height:var(--ui-control-swatch-height,26px);cursor:pointer;background:0 0;padding:2px}.ui-control-swatch-compact[data-v-8ac3487d]{--ui-control-swatch-height:24px}.ui-control-inline-select[data-v-8ac3487d]{width:auto;padding-block:var(--sp-1)}.ui-inline[data-v-7f3dfb7c]{gap:var(--inline-gap);display:flex}.ui-inline.inline[data-v-7f3dfb7c]{display:inline-flex}.ui-spinner[data-v-6fa06d71]{animation:1s linear infinite ui-spin-6fa06d71}.independent[data-v-6fa06d71]{animation-name:ui-rotate-6fa06d71}@keyframes ui-spin-6fa06d71{to{transform:rotate(360deg)}}@keyframes ui-rotate-6fa06d71{to{rotate:360deg}}@media (prefers-reduced-motion:reduce){.ui-spinner[data-v-6fa06d71]{animation:none}}.btn[data-v-9f137d66]{--button-color:var(--text);--button-fill:var(--text);--button-fill-hover:var(--text-2);--button-fill-down:var(--muted);--button-border-hover:var(--line-strong);min-height:var(--control-h);border:1px solid var(--line);border-radius:var(--r-sm);padding:0 var(--sp-3);color:var(--button-color);font-size:var(--fs-xs);white-space:nowrap;transition:border-color var(--t-fast), background var(--t-fast), color var(--t-fast);justify-content:center;align-items:center;gap:6px;display:inline-flex}.muted[data-v-9f137d66]{--button-color:var(--muted);--button-fill:var(--bg-3);--button-fill-hover:var(--bg-4);--button-fill-down:var(--line)}.danger[data-v-9f137d66]{--button-color:var(--err);--button-fill:var(--err);--button-fill-hover:color-mix(in srgb, var(--err) 85%, var(--text));--button-fill-down:color-mix(in srgb, var(--err) 85%, var(--bg));--button-border-hover:var(--err)}.btn[data-v-9f137d66]:hover:not(:disabled){border-color:var(--button-border-hover);background:var(--hover);color:var(--text)}.danger[data-v-9f137d66]:hover:not(:disabled){color:var(--err)}.btn[data-v-9f137d66]:active:not(:disabled){background:var(--active)}.btn.sm[data-v-9f137d66]{min-height:var(--control-h-sm);padding:0 10px}.quiet[data-v-9f137d66],.quiet[data-v-9f137d66]:hover:not(:disabled){border-color:#0000}.btn.solid[data-v-9f137d66]{background:var(--button-fill);border-color:var(--button-fill);color:var(--bg)}.btn.solid[data-v-9f137d66]:hover:not(:disabled){background:var(--button-fill-hover);border-color:var(--button-fill-hover);color:var(--bg)}.btn.solid[data-v-9f137d66]:active:not(:disabled){background:var(--button-fill-down)}.btn.solid.muted[data-v-9f137d66]{color:var(--muted)}.btn.solid.muted[data-v-9f137d66]:hover:not(:disabled){color:var(--text)}.btn.icon[data-v-9f137d66]{width:var(--control-h);padding:0}.btn.icon.sm[data-v-9f137d66]{width:var(--control-h-sm)}.icon.active[data-v-9f137d66]{background:var(--hover);color:var(--text)}.icon svg[data-v-9f137d66-s]{flex-shrink:0;width:15px;height:15px}.btn.chip[data-v-9f137d66]{min-height:0;padding:3px var(--sp-2);font-family:var(--mono)}.chip.active[data-v-9f137d66]{color:var(--text);border-color:var(--text)}.btn.pill[data-v-9f137d66]{min-height:0;padding:var(--sp-1) var(--sp-3);border-radius:var(--r-full);white-space:normal}.outline.pill[data-v-9f137d66]{transition:border-color var(--t-fast), color var(--t-fast)}.outline.pill[data-v-9f137d66]:hover:not(:disabled),.outline.pill[data-v-9f137d66]:active:not(:disabled){background:0 0}.btn[data-v-9f137d66]:disabled{opacity:.45}.solid[data-v-9f137d66]:disabled{color:var(--muted);border-color:var(--line);background:0 0}.busy-capable[data-v-9f137d66]{position:relative}.button-content[data-v-9f137d66]{align-items:inherit;justify-content:inherit;gap:inherit;display:inline-flex}.button-content.pending[data-v-9f137d66]{opacity:0}.button-spinner[data-v-9f137d66]{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}@media (width<=700px),(width<=1050px) and (height<=500px) and (pointer:coarse){.btn.chip[data-v-9f137d66]{min-height:var(--control-h-sm)}}.hint[data-v-aad83f25]{color:var(--muted);font-size:var(--ui-hint-font-size,var(--fs-2xs));line-height:var(--lh);margin:0}.wrap[data-v-aad83f25]{overflow-wrap:anywhere}.ui-status-dot[data-v-70326148]{width:var(--ui-status-dot-size);height:var(--ui-status-dot-size);border-radius:var(--r-full)}.fixed[data-v-70326148]{flex-shrink:0}.inline[data-v-70326148]{display:inline-block}.circle[data-v-70326148]{border-radius:50%}.success[data-v-70326148]{background:var(--run)}.danger[data-v-70326148]{background:var(--err)}.warning[data-v-70326148]{background:var(--warn)}.muted[data-v-70326148]{background:var(--muted)}.faint[data-v-70326148]{background:var(--faint)}.ui-frame[data-v-8d47d7c2]{padding:var(--sp-3);border:1px solid var(--line);border-radius:var(--r-md)}.ui-card[data-v-8d47d7c2]{gap:var(--sp-2);padding:var(--sp-3);border:1px solid var(--line-strong);border-radius:var(--r-lg);background:var(--bg-2);font-size:var(--fs-2xs);display:grid}.neutral[data-v-8d47d7c2]{color:var(--muted)}.compact[data-v-8d47d7c2]{padding:var(--sp-2) var(--sp-3)}.notice[data-v-8d47d7c2]{padding:10px 12px}.warning[data-v-8d47d7c2]{border-color:color-mix(in srgb, var(--warn) 40%, var(--bg-2));background:color-mix(in srgb, var(--warn) 8%, var(--bg-2))}.danger[data-v-8d47d7c2]{border-color:color-mix(in srgb, var(--err) 48%, var(--bg-2));background:color-mix(in srgb, var(--err) 8%, var(--bg-2))}.field[data-v-7f010260]{gap:6px;display:grid}.field-label[data-v-7f010260]{color:var(--muted);font-size:var(--fs-2xs);letter-spacing:var(--track-label);text-transform:uppercase}.plain[data-v-7f010260]{gap:var(--sp-2);min-width:0;color:var(--muted)}.field-hint[data-v-7f010260],.field-error[data-v-7f010260]{font-size:var(--fs-2xs);line-height:var(--lh);overflow-wrap:anywhere}.field-hint[data-v-7f010260]{color:var(--muted)}.field-error[data-v-7f010260]{color:var(--err)}.token[data-v-233d8907]{gap:var(--sp-2);display:grid}.hub[data-v-b2698b3d]{min-height:100dvh;padding:var(--sp-5);background:var(--bg);place-items:center;display:grid}.content[data-v-b2698b3d]{gap:var(--sp-5);width:min(100%,440px);display:grid}.brand[data-v-b2698b3d]{align-items:center;gap:var(--sp-3);color:var(--text);font-size:var(--fs-lg);font-weight:600;display:flex}.hub-label[data-v-b2698b3d]{margin-left:var(--sp-2);color:var(--muted);font-weight:400}.panel[data-v-b2698b3d]{gap:var(--sp-4);padding:var(--sp-5);color:var(--text)}.login[data-v-b2698b3d]{gap:var(--sp-4);display:grid}.devices[data-v-b2698b3d]{gap:var(--sp-2);display:grid}.device[data-v-b2698b3d]{justify-content:flex-start;gap:var(--sp-3);min-height:48px}.device-state[data-v-b2698b3d]{font-size:var(--fs-2xs);color:var(--muted);margin-left:auto}.empty[data-v-b2698b3d]{padding:var(--sp-3) 0}.footer[data-v-b2698b3d]{text-align:center}.settings[data-v-c0efe881],.form[data-v-c0efe881]{gap:var(--sp-4);display:grid}.form[data-v-c0efe881]{max-width:480px}.hub-nav[data-v-e609bcca]{flex-shrink:0}:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#10100f;--bg-2:#171716;--bg-3:#20201c;--bg-4:#2a2a26;--bg-sunken:#0c0c0b;--canvas:#080807;--line:#2c2c28;--line-strong:#46463f;--text:#ecece6;--text-2:#c9c9bf;--muted:#9a9a92;--faint:#80807a;--focus:#d8d2c4;--accent:#b8ab77;--run:#8fbf8a;--err:#d19585;--warn:#c4b386;--info:#7fb0d6;--search:#5c4a1e;--hover:color-mix(in srgb, var(--text) 5%, transparent);--active:color-mix(in srgb, var(--text) 9%, transparent);--selection:#3a3934;--overlay:#0009;--shadow-popover:0 12px 32px #0008;--shadow-modal:0 18px 60px #0009;--sans:"Noto Sans", "DejaVu Sans", "Liberation Sans", system-ui, sans-serif;--mono:"Noto Sans Mono", "DejaVu Sans Mono", ui-monospace, monospace;--fs-2xs:11px;--fs-xs:12px;--fs-sm:13px;--fs-md:15px;--fs-lg:20px;--fs-xl:28px;--lh:1.45;--track-label:.08em;--r-sm:3px;--r-md:6px;--r-lg:10px;--island-gap:var(--sp-2);--r-full:999px;--sp-1:4px;--sp-2:8px;--sp-3:12px;--sp-4:16px;--sp-5:24px;--sp-6:32px;--control-h:32px;--control-h-sm:28px;--t-fast:.12s ease;--t-base:.18s ease;--z-sticky:10;--z-expanded:30;--z-popover:100}[data-theme=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#f7f6f1;--bg-2:#efeee8;--bg-3:#e5e3db;--bg-4:#d9d6cb;--bg-sunken:#fbfaf7;--canvas:#eceae3;--line:#d9d6cc;--line-strong:#b6b2a6;--text:#1d1d1a;--text-2:#38382f;--muted:#5e5e56;--faint:#64645b;--focus:#6d5f2c;--accent:#6f5d24;--run:#2f6b34;--err:#a33b2c;--warn:#795812;--info:#276b93;--search:#f2dfa0;--selection:#cfcabc;--overlay:#0006;--shadow-popover:0 12px 32px #0000001f;--shadow-modal:0 18px 60px #0000002e}[data-theme=contrast]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#000;--bg-2:#080808;--bg-3:#121212;--bg-4:#1e1e1e;--bg-sunken:#000;--canvas:#000;--line:#3d3d3d;--line-strong:#7a7a7a;--text:#fff;--text-2:#ededed;--muted:#c2c2c2;--faint:#a8a8a8;--focus:#ffd45c;--accent:#ffd45c;--run:#7dff9b;--err:#ff9b8a;--warn:#ffd166;--info:#8fd8ff;--search:#4a3a00;--selection:#3d3d3d;--overlay:#000000d9;--shadow-popover:0 12px 32px #000c;--shadow-modal:0 18px 60px #000000e6}*{box-sizing:border-box}html,body,#app{min-height:100%}body{background:var(--bg);color:var(--text);font-family:var(--sans);font-size:var(--fs-md);line-height:var(--lh);margin:0}button,input,textarea,select{font:inherit;color:inherit}a{color:inherit;text-decoration:none}button{cursor:pointer;background:0 0;border:0;padding:0}button:disabled{cursor:default}input,textarea,select{border:1px solid var(--line);border-radius:var(--r-sm);width:100%;padding:var(--sp-2) 10px;transition:border-color var(--t-fast);background:0 0;outline:none}input:hover:not(:disabled,:focus),textarea:hover:not(:disabled,:focus),select:hover:not(:disabled,:focus){border-color:var(--line-strong)}input:focus,textarea:focus,select:focus{border-color:var(--focus)}input::placeholder,textarea::placeholder{color:var(--faint)}input[type=checkbox],input[type=radio],input[type=range],input[type=color]{width:auto;accent-color:var(--focus);padding:0}textarea{resize:vertical;min-height:72px}select{appearance:none;background:linear-gradient(45deg, transparent 50%, var(--muted) 50%) right 14px center / 5px 5px no-repeat, linear-gradient(-45deg, transparent 50%, var(--muted) 50%) right 9px center / 5px 5px no-repeat;padding-right:28px}select option{background:var(--bg-2)}:focus-visible{outline:2px solid var(--focus);outline-offset:1px}input:focus-visible,textarea:focus-visible,select:focus-visible{outline-offset:0}::selection{background:var(--selection)}*{scrollbar-color:var(--bg-4) transparent}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}@media (width<=700px),(width<=1050px) and (height<=500px) and (pointer:coarse){:root{--fs-input:16px;--control-h:44px;--control-h-sm:40px}input:not([type=checkbox],[type=radio],[type=range],[type=color]),textarea:not(.xterm-helper-textarea),select{min-height:var(--control-h);font-size:var(--fs-input)}}.u-truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.u-sr-only{clip-path:inset(50%);width:1px;height:1px;position:absolute;overflow:hidden}body .mobile-sheet.mobile-sheet{inset:auto var(--island-gap) max(var(--island-gap), env(safe-area-inset-bottom));overscroll-behavior:contain;border-radius:calc(var(--r-lg) + 4px);width:auto;max-width:none;max-height:min(72dvh,560px);box-shadow:0 0 0 100vmax var(--sheet-scrim,var(--overlay)), var(--shadow-popover);animation:sheet-up var(--t-base);position:fixed;overflow-y:auto}@keyframes sheet-up{0%{opacity:0;transform:translateY(24px)}}.note.error{color:var(--err)}
|