PageSourceSearch

https://sendunlimitedemail.com/sue/mod-CWr0s_9E.js

js sendunlimitedemail.com collected 2026-10-05 06:24:43 UTC 4,433 bytes, 1 lines download raw bytes

1import{a as S,f as _,r as n,e as f,t as d,j as e}from"./edge-BOITG1XR.js";import{P as G}from"./mod-C_TLgTHB.js";import{p as b}from"./mod-z9DEdqhD.js";import{t as I}from"./mod-C8LxKJmi.js";import{L as j}from"./mod-DxqX0N6D.js";import{V as y}from"./mod-RgRA0Qxw.js";import"./mod-Baz99PXY.js";import"./mod-CMEfXRCr.js";import"./mod-S7VKsPX-.js";import"./mod-DnCishMV.js";import"./mod-h5TzTLP8.js";import"./mod-CIBNvfiF.js";import"./mod-CZLdCikm.js";import"./mod-ClnwnFZu.js";import"./mod-DKJSxncj.js";import"./mod-Zp5uTWJZ.js";import"./mod-CnFQ395x.js";import"./mod-CIn4OWcr.js";import"./mod-CdBQyGbT.js";import"./mod-NGDARif-.js";import"./mod-BVSlmYWv.js";import"./mod-T3ncT9Ga.js";import"./mod-C3kaoPgB.js";import"./mod-BHbsKpbp.js";import"./mod-ByZwUIgr.js";import"./mod-BkAFdgbh.js";import"./mod-DlSXWp2B.js";import"./mod-CFOXB00Z.js";import"./mod-BuHkwEt_.js";import"./mod-Dzi2dmtd.js";import"./mod-CKg_ZYcm.js";import"./mod-DlaYEcom.js";const A={Red:"#ef4444",Blue:"#3b82f6",Black:"#111827",White:"#f9fafb",Green:"#22c55e",Yellow:"#eab308",Pink:"#ec4899",Purple:"#a855f7",Orange:"#f97316",Gray:"#6b7280"},L=s=>{const r={};for(const t of s)for(const[l,u]of Object.entries(t.options||{})){const o=l.charAt(0).toUpperCase()+l.slice(1);r[o]||(r[o]={name:o,values:[]});const m=String(u);r[o].values.find(p=>p.label===m)||r[o].values.push({id:t.id??Date.now(),label:m,color:A[m]||null,price_override:t.price?String(t.price):"",stock:t.stock!==void 0?String(t.stock):"",image_url:t.image_url||""})}return Object.values(r).map((t,l)=>({...t,id:Date.now()+l}))},fe=()=>{const{id:s}=S(),r=_(),[t,l]=n.useState(null),[u,o]=n.useState([]),[m,p]=n.useState(!1),[w,V]=n.useState(!0),[x,g]=n.useState(!1),[c,h]=n.useState(null);n.useEffect(()=>{Promise.all([b.getProductById(s),f.get(`/products/${s}/variants`).then(a=>a.data).catch(()=>[])]).then(([a,i])=>{l(a),Array.isArray(i)&&i.length>0&&o(L(i))}).catch(()=>{d.error("Failed to load product"),r("/admin/products")}).finally(()=>V(!1)),f.get(`/admin/products/${s}/video-status`).then(a=>{a.data?.video_url&&h(a.data.video_url)}).catch(()=>{})},[s,r]);const N=async a=>{p(!0);try{const{_variants:i,_pendingImages:C,translations:v,variants:E,stagedImageUrls:F,...k}=a;await b.updateProduct(s,k),v&&await I.saveTranslations("product",s,v),d.success("Product updated!"),r("/admin/products")}catch(i){d.error(i?.response?.data?.message||"Failed to update product")}finally{p(!1)}},P=async()=>{g(!0);try{const i=(await f.post(`/admin/products/${s}/generate-video`)).data?.video_url;i?(h(i),d.success("Video generated successfully!")):d.info("Video generation started — check back in a few minutes.")}catch(a){d.error(a.response?.data?.message||"Video generation failed — check Creatomate API key in Video Generator settings.")}finally{g(!1)}};return w?e.jsx("div",{className:"flex min-h-screen items-center justify-center",children:e.jsx(j,{className:"h-10 w-10 animate-spin text-violet-500"})}):e.jsxs("div",{className:"space-y-4",children:[e.jsx(G,{title:"Edit Product",initialData:t,initialVariants:u,onSubmit:N,isLoading:m}),e.jsxs("div",{className:"max-w-5xl mx-auto rounded-2xl border border-slate-100 bg-white p-5 shadow-sm",children:[e.jsxs("div",{className:"flex items-center justify-between flex-wrap gap-3",children:[e.jsxs("div",{children:[e.jsxs("p",{className:"font-bold text-slate-900 flex items-center gap-2",children:[e.jsx(y,{className:"h-4 w-4 text-violet-500"})," Auto Video Generation"]}),e.jsx("p",{className:"text-xs text-slate-500 mt-0.5",children:"Generate a short product video using AI and publish to TikTok/Instagram/YouTube"})]}),e.jsxs("div",{className:"flex items-center gap-3",children:[c&&e.jsx("a",{href:c,target:"_blank",rel:"noreferrer",className:"flex items-center gap-2 rounded-xl border border-slate-200 px-3 py-2 text-xs font-semibold text-slate-600 hover:bg-slate-50 transition",children:"Preview Video"}),e.jsxs("button",{onClick:P,disabled:x,className:"flex items-center gap-2 rounded-xl bg-violet-600 px-4 py-2.5 text-sm font-bold text-white hover:bg-violet-700 disabled:opacity-60 transition",children:[x?e.jsx(j,{className:"h-4 w-4 animate-spin"}):e.jsx(y,{className:"h-4 w-4"}),c?"Regenerate Video":"Generate Video"]})]})]}),c&&e.jsxs("p",{className:"mt-2 text-xs text-emerald-600 font-medium",children:["✓ Video ready — ",e.jsx("a",{href:c,target:"_blank",rel:"noreferrer",className:"underline",children:c})]})]})]})};export{fe as default};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.