UNPKG

mira-app-server

Version:

Mira Server - standalone server application using mira-app-core

2 lines (1 loc) 4.5 kB
import{aJ as T,d1 as V,cR as W,c8 as u,al as q,b4 as K,dl as j,bQ as z,bJ as D,bE as E,a1 as U,ax as s,as as m,dr as N,dh as O,ds as x,dt as _,cr as h,cc as B,av as F,x as J,cb as G,bZ as l}from"./index-OOzZz4T6.js";const L=T({__name:"PreviewHeader",props:{fileInfo:{type:null,required:!0},saveVisible:{type:Boolean,required:!1,default:!1},saving:{type:Boolean,required:!1,default:!1},showOpenWith:{type:Boolean,required:!1,default:!0}},emits:["save","renamed","error"],setup(i,{expose:r,emit:a}){r();const e=i,d=a,f=V(),{t:n}=W(),v=u(null),p=u(e.fileInfo?.title||e.fileInfo?.name||n("preview.previewHeader.unknownFile")),c=u(!1),w=u(!1),g=u(0),b=setInterval(()=>{g.value++},500),H=q(()=>(g.value,e.showOpenWith&&e.fileInfo?.id?K(e.fileInfo).filter(t=>t.getPreviewUrl||t.open):[])),R=()=>window.history.length>1?f.back():f.push("/"),S=async t=>{try{if(t.getPreviewUrl){await f.push({path:"/file-preview",query:{id:String(e.fileInfo.id),libraryId:String(e.fileInfo.libraryId||""),title:e.fileInfo.name||e.fileInfo.title||"",path:e.fileInfo.path||e.fileInfo.url||"",mimeType:e.fileInfo.mimeType||"",viewer:t.id}});return}await t.open?.(e.fileInfo)}catch(o){d("error",o instanceof Error?o.message:n("preview.previewHeader.openWithFailed"))}},P=async()=>{c.value=!0,await D(),v.value?.focus(),v.value?.select()},y=()=>{c.value=!1,p.value=e.fileInfo?.title||e.fileInfo?.name||n("preview.previewHeader.unknownFile")},C=async()=>{const t=p.value.trim(),o=e.fileInfo?.title||e.fileInfo?.name||n("preview.previewHeader.unknownFile");if(!t||t===o||w.value)return y();try{w.value=!0,await E.renameFile(e.fileInfo.libraryId,e.fileInfo.id,t),c.value=!1,d("renamed",t)}catch(k){d("error",k instanceof Error?k.message:n("preview.previewHeader.renameFailed"))}finally{w.value=!1}},M=t=>{if(!t)return"0 B";const o=Math.floor(Math.log(t)/Math.log(1024));return`${parseFloat((t/Math.pow(1024,o)).toFixed(1))} ${["B","KB","MB","GB"][o]||"TB"}`};j(()=>e.fileInfo?.title||e.fileInfo?.name,t=>{!c.value&&t&&(p.value=t)}),z(()=>clearInterval(b));const I={props:e,emit:d,router:f,t:n,titleInput:v,title:p,renaming:c,savingRename:w,formatVersion:g,formatTimer:b,openFormats:H,goBack:R,openWith:S,startRename:P,cancelRename:y,commitRename:C,formatFileSize:M};return Object.defineProperty(I,"__isScriptSetup",{enumerable:!1,value:!0}),I}}),Q={class:"flex h-16 flex-shrink-0 items-center justify-between border-b border-border bg-background px-6"},Z={class:"flex min-w-0 items-center gap-4"},A=["title"],X=["disabled","onKeydown"],Y=["title"],$={key:2,class:"flex-shrink-0 text-sm text-muted-foreground"},ee={class:"flex flex-shrink-0 items-center gap-2"},te=["title","onClick"],ne={class:"material-symbols-outlined text-muted-foreground"},ie=["disabled"];function re(i,r,a,e,d,f){return l(),s("header",Q,[m("div",Z,[m("button",{class:"flex h-9 w-9 flex-shrink-0 items-center justify-center rounded-full hover:bg-muted",title:i.$t("preview.previewHeader.back"),onClick:e.goBack},r[2]||(r[2]=[m("span",{class:"material-icons text-muted-foreground"},"arrow_back",-1)]),8,A),e.renaming?N((l(),s("input",{key:0,ref:"titleInput","onUpdate:modelValue":r[0]||(r[0]=n=>e.title=n),disabled:e.savingRename,class:"min-w-0 flex-1 border-b border-primary bg-transparent px-1 py-1 text-foreground outline-none",onBlur:e.commitRename,onKeydown:[x(_(e.commitRename,["prevent"]),["enter"]),x(_(e.cancelRename,["prevent"]),["esc"])]},null,40,X)),[[O,e.title]]):(l(),s("button",{key:1,class:"min-w-0 truncate text-left text-lg font-semibold text-foreground hover:text-primary",title:i.$t("preview.previewHeader.clickToRename"),onClick:e.startRename},h(e.title),9,Y)),B(i.$slots,"left-extra"),a.fileInfo.size?(l(),s("span",$,h(e.formatFileSize(a.fileInfo.size)),1)):F("",!0)]),m("div",ee,[(l(!0),s(J,null,G(e.openFormats,n=>(l(),s("button",{key:n.id,class:"flex h-9 w-9 items-center justify-center rounded-full hover:bg-muted",title:i.$t("preview.previewHeader.openWith",{name:n.title||i.$t("preview.previewHeader.plugin")}),onClick:v=>e.openWith(n)},[m("span",ne,h(n.icon||"extension"),1)],8,te))),128)),a.saveVisible?(l(),s("button",{key:0,disabled:a.saving,class:"rounded bg-primary px-4 py-2 text-white disabled:opacity-50",onClick:r[1]||(r[1]=n=>i.$emit("save"))},h(a.saving?i.$t("preview.previewHeader.saving"):i.$t("preview.previewHeader.save")),9,ie)):F("",!0),B(i.$slots,"right-actions")])])}const oe=U(L,[["render",re],["__file","D:/mira_typescript/packages/mira-client/src/renderer/components/preview/PreviewHeader.vue"]]);export{oe as P};