Files
imen_pishghaman/apps/admin/dist/assets/MediaPage-DnfskIVE.js
T
S. EsmaeiliandClaude Haiku 5.5 10e453e4be build: ship pre-built API bundle; images copy output instead of installing
- API: `pnpm build` bundles dist/ into apps/api/.output (esbuild), with
  Linux musl native packages for sharp and argon2 kept alongside
- docker/api.Dockerfile copies that output; no pnpm install on the server
- add dist/migrate.js (prisma migrate deploy equivalent, same
  _prisma_migrations table and lock) so the Prisma CLI is not needed at runtime
- pnpm-workspace: supportedArchitectures for linux/x64/musl
- admin: apps/admin/.env.production sets VITE_SITE_URL for the production build
- drop NPM_REGISTRY / SITE_URL build args from compose and .env.example
- gitignore: anchor node_modules rules so pre-built node_modules are committed
- README: describe the pre-built deploy flow

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
2026-10-24 14:41:31 +03:30

1 line
7.1 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import{t as e}from"./VuesaxIcon-B2OgulS6.js";import{Bt as t,Ct as n,Dt as r,It as i,Lt as a,Nt as o,Tt as s,_t as c,ct as l,dt as u,ft as d,gt as f,ht as p,i as m,kt as h,n as g,ot as _,pt as v,t as y,ut as b,wt as x}from"./index-BuGK6ptM.js";import{a as S,i as C,r as w}from"./format-B9MYDQJN.js";import{t as T}from"./PageHeader-3Ryvg2HD.js";var E={class:`grid grid-cols-3 gap-2.5 sm:grid-cols-4 md:grid-cols-6 xl:grid-cols-9`},D=[`title`,`onClick`],O=[`src`,`alt`],k={class:`absolute inset-x-0 bottom-0 bg-gradient-to-t from-black/60 to-transparent p-1 text-[9px] text-white opacity-0 transition group-hover:opacity-100 max-lg:hidden truncate`},A={class:`mt-4 flex justify-center`},j={class:`lg:hidden fixed bottom-20 left-4 z-30`},M=[`disabled`],N={key:1,class:`text-xs font-bold`},ee={class:`overflow-hidden rounded-xl border border-gray-200 bg-gray-50 flex items-center justify-center p-2`},te=[`src`,`alt`],ne={dir:`ltr`,class:`truncate block max-w-[240px] text-xs font-mono text-gray-700`},re={dir:`ltr`,class:`text-xs font-mono`},ie={class:`max-lg:grid max-lg:grid-cols-2 max-lg:gap-2 max-lg:mt-4 max-lg:hidden`},ae={class:`lg:hidden grid grid-cols-2 gap-2 mt-4`},P=36,F=c({__name:`MediaPage`,setup(c){let F=y(),I=i([]),L=i(0),R=i(1),z=i(``),B=i(!1),V=i(0),H=i(null),U=i(``),W=i(!1);function G(){typeof window<`u`&&(W.value=window.innerWidth<1024)}async function K(){B.value=!0;try{let e=await g(`/admin/media`,{query:{page:R.value,pageSize:P,q:z.value||void 0}});I.value=e.items,L.value=e.total}catch(e){_.error(m(e))}finally{B.value=!1}}async function q(e){V.value++;try{let t=new FormData;t.append(`file`,e),await g(`/admin/media`,{method:`POST`,body:t}),_.success(`«${e.name}» آپلود شد`),R.value=1,await K()}catch(t){_.error(`${e.name}: ${m(t)}`)}finally{V.value--}return!1}function oe(e){H.value=e,U.value=e.alt}async function J(){if(H.value)try{let e=await g(`/admin/media/${H.value.id}`,{method:`PATCH`,body:{alt:U.value}});Object.assign(H.value,e),_.success(`ذخیره شد`)}catch(e){_.error(m(e))}}async function Y(){if(H.value)try{await g(`/admin/media/${H.value.id}`,{method:`DELETE`}),_.success(`تصویر حذف شد`),H.value=null,await K()}catch(e){_.error(m(e))}}async function X(e){await navigator.clipboard.writeText(new URL(e,location.origin).toString()),_.success(`آدرس کپی شد`)}return n(()=>{G(),window.addEventListener(`resize`,G),K()}),x(()=>{typeof window<`u`&&window.removeEventListener(`resize`,G)}),(n,i)=>{let c=h(`a-button`),m=h(`a-upload`),g=h(`a-input-search`),_=h(`a-empty`),y=h(`a-spin`),x=h(`a-pagination`),G=h(`a-card`),Z=h(`a-descriptions-item`),se=h(`a-descriptions`),ce=h(`a-input`),le=h(`a-form-item`),Q=h(`a-popconfirm`),$=h(`a-space`),ue=h(`a-form`),de=h(`a-drawer`);return s(),v(l,null,[f(T,{title:`کتابخانه رسانه`,subtitle:`${a(w)(L.value)} تصویر`},{default:o(()=>[f(m,{accept:`image/jpeg,image/png,image/webp,image/avif,image/gif`,multiple:``,"show-upload-list":!1,"before-upload":q},{default:o(()=>[f(c,{type:`primary`,loading:V.value>0},{icon:o(()=>[f(e,{name:`document-upload`,size:16})]),default:o(()=>[i[7]||=p(` آپلود تصویر `,-1)]),_:1},8,[`loading`])]),_:1})]),_:1},8,[`subtitle`]),f(G,null,{default:o(()=>[f(g,{value:z.value,"onUpdate:value":i[0]||=e=>z.value=e,"allow-clear":``,placeholder:`جستجو در نام فایل یا متن جایگزین`,class:`mb-4 w-full md:max-w-md`,onSearch:i[1]||=()=>{R.value=1,K()}},null,8,[`value`]),f(y,{spinning:B.value},{default:o(()=>[!I.value.length&&!B.value?(s(),u(_,{key:0,description:`تصویری پیدا نشد`})):d(``,!0),b(`div`,E,[(s(!0),v(l,null,r(I.value,e=>(s(),v(`button`,{key:e.id,type:`button`,class:`group relative overflow-hidden rounded-xl border border-gray-200 bg-gray-50 transition active:scale-95 hover:border-[#ff5a00] focus:outline-none`,title:e.originalName,onClick:t=>oe(e)},[b(`img`,{src:e.url,alt:e.alt,class:`aspect-square w-full object-contain p-1`,loading:`lazy`},null,8,O),b(`div`,k,t(e.originalName),1)],8,D))),128))])]),_:1},8,[`spinning`]),b(`div`,A,[f(x,{current:R.value,"onUpdate:current":i[2]||=e=>R.value=e,total:L.value,"page-size":P,"show-size-changer":!1,simple:W.value,onChange:K},null,8,[`current`,`total`,`simple`])])]),_:1}),b(`div`,j,[f(m,{accept:`image/jpeg,image/png,image/webp,image/avif,image/gif`,multiple:``,"show-upload-list":!1,"before-upload":q},{default:o(()=>[b(`button`,{type:`button`,class:`flex size-13 items-center justify-center rounded-full bg-[#ff5a00] text-white shadow-lg shadow-orange-500/30 transition-transform active:scale-95`,title:`آپلود تصویر`,disabled:V.value>0},[V.value===0?(s(),u(e,{key:0,name:`document-upload`,size:24})):(s(),v(`span`,N,t(V.value),1))],8,M)]),_:1})]),f(de,{open:!!H.value,title:`جزئیات تصویر`,width:W.value?`100%`:380,height:W.value?`82vh`:void 0,placement:W.value?`bottom`:`left`,"body-style":{paddingBottom:W.value?`80px`:`24px`},onClose:i[6]||=e=>H.value=null},{default:o(()=>[H.value?(s(),v(l,{key:0},[b(`div`,ee,[b(`img`,{src:H.value.url,alt:H.value.alt,class:`max-h-60 w-full object-contain`},null,8,te)]),f(se,{column:W.value?2:1,size:`small`,class:`mt-4`},{default:o(()=>[f(Z,{label:`نام فایل`,span:W.value?2:1},{default:o(()=>[b(`span`,ne,t(H.value.originalName),1)]),_:1},8,[`span`]),f(Z,{label:`ابعاد`},{default:o(()=>[b(`span`,re,t(H.value.width)+`×`+t(H.value.height),1)]),_:1}),f(Z,{label:`حجم`},{default:o(()=>[p(t(a(C)(H.value.size)),1)]),_:1}),f(Z,{label:`تاریخ`,span:W.value?2:1},{default:o(()=>[p(t(a(S)(H.value.createdAt)),1)]),_:1},8,[`span`])]),_:1},8,[`column`]),f(ue,{layout:`vertical`,class:`mt-4`},{default:o(()=>[f(le,{label:`متن جایگزین (alt)`,class:`!mb-3`},{default:o(()=>[f(ce,{value:U.value,"onUpdate:value":i[3]||=e=>U.value=e,placeholder:`توضیح کوتاه برای سئو و دسترس‌پذیری`},null,8,[`value`])]),_:1}),b(`div`,ie,[f($,{wrap:``},{default:o(()=>[f(c,{type:`primary`,onClick:J},{default:o(()=>[...i[8]||=[p(`ذخیره`,-1)]]),_:1}),f(c,{onClick:i[4]||=e=>X(H.value.url)},{icon:o(()=>[f(e,{name:`copy`,size:16})]),default:o(()=>[i[9]||=p(`کپی آدرس`,-1)]),_:1}),a(F).isAdmin?(s(),u(Q,{key:0,title:`این تصویر حذف شود؟`,"ok-text":`حذف`,"cancel-text":`انصراف`,onConfirm:Y},{default:o(()=>[f(c,{danger:``},{icon:o(()=>[f(e,{name:`trash`,size:16})]),default:o(()=>[i[10]||=p(`حذف`,-1)]),_:1})]),_:1})):d(``,!0)]),_:1})]),b(`div`,ae,[f(c,{type:`primary`,class:`h-10 !font-bold`,onClick:J},{default:o(()=>[...i[11]||=[p(`ذخیره متن`,-1)]]),_:1}),f(c,{class:`h-10 !flex !items-center !justify-center !gap-1`,onClick:i[5]||=e=>X(H.value.url)},{icon:o(()=>[f(e,{name:`copy`,size:16})]),default:o(()=>[i[12]||=b(`span`,null,`کپی آدرس`,-1)]),_:1}),a(F).isAdmin?(s(),u(Q,{key:0,title:`این تصویر حذف شود؟`,"ok-text":`حذف`,"cancel-text":`انصراف`,onConfirm:Y},{default:o(()=>[f(c,{danger:``,class:`col-span-2 h-10 !flex !items-center !justify-center !gap-1`},{icon:o(()=>[f(e,{name:`trash`,size:16})]),default:o(()=>[i[13]||=b(`span`,null,`حذف تصویر`,-1)]),_:1})]),_:1})):d(``,!0)])]),_:1})],64)):d(``,!0)]),_:1},8,[`open`,`width`,`height`,`placement`,`body-style`])],64)}}});export{F as default};