1import{j as e}from"./vendor-query-skQMsM6X.js";import{r as i}from"./vendor-react-DyYvSSk1.js";import{aJ as ae,p as x,I as h,r as b,v as N,x as C,y as T,z as g,ab as _,am as R,an as I,ao as O,ap as H,aM as se,aN as re,aO as w,aQ as M,aP as S,aq as n,aL as le,as as te,ah as ne,c as m,X as E,b as ce}from"./index-BGwtrXIa.js";import{u as ie}from"./useRadiologyTables-C2PKXLEW.js";import{T as P}from"./textarea-ChvLdc2s.js";import{T as oe,a as de,b as v,c as o,d as xe,e as c}from"./table-DnRDtd-j.js";import{f as he,ag as me,Y as ue,af as je,a as ge,bq as ve,u as pe}from"./vendor-ui-CCmu0bzQ.js";import"./vendor-supabase-BfoV2C50.js";import"./useRadiologyCatalog-DrZCG4PO.js";const L=[{value:"rads",label:"Classificações RADS"},{value:"obstetricia",label:"ObstetrÃcia"},{value:"vascular",label:"Vascular"},{value:"neuro",label:"Neurorradiologia"},{value:"oncologia",label:"Oncologia"},{value:"abdome",label:"Abdome"},{value:"msk",label:"Musculoesquelético"},{value:"torax",label:"Tórax"},{value:"pediatria",label:"Pediatria"},{value:"geral",label:"Geral"}],fe=[{value:"informative",label:"Informativa"},{value:"dynamic",label:"Dinâmica"}],z={code:"",name:"",category:"rads",subcategory:"",type:"informative",modalities:[],html_content:"",reference_text:"",reference_url:"",display_order:0,ativo:!0};function Le(){const{tables:B,isLoading:V,createTable:q,updateTable:F,deleteTable:G}=ie(),[p,Y]=i.useState(""),[f,J]=i.useState("all"),[Q,u]=i.useState(!1),[U,A]=i.useState(!1),[j,D]=i.useState(null),[l,X]=i.useState(null),[s,t]=i.useState(z),y=B.filter(a=>{const r=a.titulo.toLowerCase().includes(p.toLowerCase())||a.codigo.toLowerCase().includes(p.toLowerCase()),d=f==="all"||a.categoria===f;return r&&d}),K=()=>{D(null),t(z),u(!0)},k=async a=>{const{data:r,error:d}=await ce.from("radiology_tables").select("html_content").eq("id",a).maybeSingle();return d?(E.error("Erro ao carregar conteúdo HTML:",d),m.error("Não foi possÃvel carregar o conteúdo HTML."),""):(r==null?void 0:r.html_content)||""},W=async a=>{const r=a.html_content??await k(a.id);D({...a,html_content:r}),t({code:a.codigo,name:a.titulo,category:a.categoria,subcategory:a.subcategoria||"",type:a.type||"informative",modalities:a.modalities||[],html_content:r,reference_text:a.reference_text||"",reference_url:a.reference_url||"",display_order:a.display_order||0,ativo:a.ativa??!0}),u(!0)},Z=async a=>{const r=a.html_content??await k(a.id);X({...a,html_content:r}),A(!0)},$=async()=>
1{try{const a={codigo:s.code,titulo:s.name,categoria:s.category,subcategoria:s.subcategory||null,type:s.type,modalities:s.modalities.length>0?s.modalities:null,html_content:s.html_content,reference_text:s.reference_text||null,reference_url:s.reference_url||null,display_order:s.display_order,ativa:s.ativo};j?(await F.mutateAsync({id:j.id,...a}),m.success("Tabela atualizada!")):(await q.mutateAsync(a),m.success("Tabela criada!")),u(!1)}catch(a){E.error("Erro ao salvar tabela:",a),m.error("Erro ao salvar tabela. Tente novamente.")}},ee=async a=>{if(confirm("Tem certeza que deseja excluir esta tabela?"))try{await G.mutateAsync(a),m.success("Tabela excluÃda!")}catch(r){E.error("Erro ao excluir tabela:",r),m.error("Erro ao excluir tabela. Tente novamente.")}};return e.jsxs(ae,{children:[e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"flex flex-wrap items-center justify-between gap-3",children:[e.jsxs("div",{children:[e.jsxs("h1",{className:"text-2xl font-bold flex items-center gap-2",children:[e.jsx(he,{className:"h-6 w-6"}),"Tabelas de Referência"]}),e.jsx("p",{className:"text-muted-foreground",children:"Gerencie tabelas de referência radiológica e suas referências bibliográficas"})]}),e.jsxs(x,{onClick:K,children:[e.jsx(me,{className:"h-4 w-4 mr-2"}),"Nova Tabela"]})]}),e.jsxs("div",{className:"flex flex-col sm:flex-row gap-3",children:[e.jsxs("div",{className:"relative flex-1",children:[e.jsx(ue,{className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground"}),e.jsx(h,{placeholder:"Buscar por nome ou código...",value:p,onChange:a=>Y(a.target.value),className:"pl-10"})]}),e.jsxs(b,{value:f,onValueChange:J,children:[e.jsx(N,{className:"w-full sm:w-[200px]",children:e.jsx(C,{placeholder:"Categoria"})}),e.jsxs(T,{children:[e.jsx(g,{value:"all",children:"Todas as categorias"}),L.map(a=>e.jsx(g,{value:a.value,children:a.label},a.value))]})]})]}),e.jsx("div",{className:"border rounded-lg overflow-x-auto",children:e.jsxs(oe,{className:"min-w-[820px]",children:[e.jsx(de,{children:e.jsxs(v,{children:[e.jsx(o,{children:"Código"}),e.jsx(o,{children:"Nome"}),e.jsx(o,{children:"Categoria"}),e.jsx(o,{children:"Tipo"}),e.jsx(o,{children:"Referência"}),e.jsx(o,{children:"Status"}),e.jsx(o,{className:"w-[120px]",children:"Ações"})]})}),e.jsx(xe,{children:V?e.jsx(v,{children:e.jsx(c,{colSpan:7,className:"text-center py-8",children:"Carregando..."})}):y.length===0?e.jsx(v,{children:e.jsx(c,{colSpan:7,className:"text-center py-8 text-muted-foreground",children:"Nenhuma tabela encontrada"})}):y.map(a=>{var r;return e.jsxs(v,{children:[e.jsx(c,{className:"font-mono text-xs",children:a.codigo}),e.jsx(c,{className:"font-medium",children:a.titulo}),e.jsx(c,{children:e.jsx(_,{variant:"outline",children:((r=L.find(d=>d.value===a.categoria))==null?void 0:r.label)||a.categoria})}),e.jsx(c,{children:e.jsx(_,{variant:a.type==="dynamic"?"default":"secondary",children:a.type==="dynamic"?"Dinâmica":"Informativa"})}),e.jsx(c,{children:a.reference_url?e.jsxs("a",{href:a.reference_url,target:"_blank",rel:"noopener noreferrer",className:"text-primary hover:underline flex items-center gap-1",children:[e.jsx(je,{className:"h-3 w-3"}),"Ver ref."]}):e.jsx("span",{className:"text-muted-foreground text-sm",children:"-"})}),e.jsx(c,{children:e.jsx(_,{variant:a.ativa?"default":"secondary",children:a.ativa?"Ativo":"Inativo"})}),e.jsx(c,{children:e.jsxs("div",{className:"flex gap-1",children:[e.jsx(x,{variant:"ghost",size:"icon",onClick:()=>Z(a),children:e.jsx(ge,{className:"h-4 w-4"})}),e.jsx(x,{variant:"ghost",size:"icon",onClick:()=>W(a),children:e.jsx(ve,{className:"h-4 w-4"})}),e.jsx(x,{variant:"ghost",size:"icon",onClick:()=>ee(a.id),children:e.jsx(pe,{className:"h-4 w-4 text-destructive"})})]})})]},a.id)})})]})}),e.jsxs("p",{className:"text-sm text-muted-foreground",children:[y.length," tabelas ⢠Dados hardcoded servem como fallback se banco estiver vazio"]})]}),e.jsx(R,{open:Q,onOpenChange:u,children:e.jsxs(I,{className:"max-w-4xl max-h-[90vh] overflow-hidden",children:[e.jsx(O,{children:e.jsx(H,{children:j?"Editar Tabela":"Nova Tabela"})}),e.jsxs(se,{defaultValue:"basic",className:"flex-1",children:[e.jsxs(re,{className:"flex w-full overflow-x-auto sm:inline-flex",children:[e.jsx(w,{value:"basic",children:"Básico"}),e.jsx(w,{value:"content",children:"Conteúdo HTML"}),e.jsx(w,{value:"reference",children:"Referências"})]}),e.jsxs(M,{className:"h-[60vh] mt-4",children:[e.jsxs(S,{value:"basic",className:"space-y-4 p-1",children:[e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(n,{children:"Código *"}),e.jsx(h,{value:s.code,onChange:a=>t({...s,code:a.target.value}),placeholder:"Ex: birads-mamografia",disabled:!!j})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(n,{children:"Nome *"}),e.jsx(h,{value:s.name,onChange:a=>t({...s,name:a.target.value}),placeholder:"Ex: BI-RADS Mamografia"})]})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(n,{children:"Categoria *"}),e.jsxs(b,{value:s.category,onValueChange:a=>t({...s,category:a}),children:[e.jsx(N,{children:e.jsx(C,{})}),e.jsx(T,{children:L.map(a=>e.jsx(g,{value:a.value,children:a.label},a.value))})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(n,{children:"Subcategoria"}),e.jsx(h,{value:s.subcategory,onChange:a=>t({...s,subcategory:a.target.value}),placeholder:"Ex: Mama"})]})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(n,{children:"Tipo"}),e.jsxs(b,{value:s.type,onValueChange:a=>t({...s,type:a}),children:[e.jsx(N,{children:e.jsx(C,{})}),e.jsx(T,{children:fe.map(a=>e.jsx(g,{value:a.value,children:a.label},a.value))})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(n,{children:"Ordem de Exibição"}),e.jsx(h,{type:"number",value:s.display_order,onChange:a=>t({...s,display_order:parseInt(a.target.value)||0})})]})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(le,{checked:s.ativo,onCheckedChange:a=>t({...s,ativo:a})}),e.jsx(n,{children:"Ativo"})]})]}),e.jsx(S,{value:"content",className:"space-y-4 p-1",children:e.jsxs("div",{className:"space-y-2",children:[e.jsx(n,{children:"Conteúdo HTML *"}),e.jsx(P,{value:s.html_content,onChange:a=>t({...s,html_content:a.target.value}),placeholder:"<table>...</table>",className:"font-mono text-sm min-h-[400px]"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Cole o HTML da tabela aqui. Suporta <table>, <thead>, <tbody>, etc."})]})}),e.jsxs(S,{value:"reference",className:"space-y-4 p-1",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(n,{children:"Texto da Referência"}),e.jsx(P,{value:s.reference_text,onChange:a=>t({...s,reference_text:a.target.value}),placeholder:"Ex: ACR BI-RADS Atlas, 5th Edition, 2013",rows:3}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Citação bibliográfica completa para exibição"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(n,{children:"URL da Referência"}),e.jsx(h,{value:s.reference_url,onChange:a=>t({...s,reference_url:a.target.value}),placeholder:"https://www.acr.org/..."}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Link para a fonte/guideline original"})]})]})]})]}),e.jsxs(te,{children:[e.jsx(x,{variant:"outline",onClick:()=>u(!1),children:"Cancelar"}),e.jsx(x,{onClick:$,disabled:!s.code||!s.name||!s.html_content,children:j?"Salvar":"Criar"})]})]})}),e.jsx(R,{open:U,onOpenChange:A,children:e.jsxs(I,{className:"max-w-4xl max-h-[90vh]",children:[e.jsx(O,{children:e.jsx(H,{children:l==null?void 0:l.titulo})}),e.jsxs(M,{className:"h-[70vh]",children:[e.jsx("div",{className:"prose prose-sm max-w-none",dangerouslySetInnerHTML:{__html:ne((l==null?void 0:l.html_content)||"")}}),(l==null?void 0:l.reference_text)&&e.jsx("div",{className:"mt-4 pt-4 border-t",children:e.jsxs("p",{className:"text-sm text-muted-foreground",children:[e.jsx("strong",{children:"Referência:"})," ",l.reference_text,l.reference_url&&e.jsx("a",{href:l.reference_url,target:"_blank",rel:"noopener noreferrer",className:"ml-2 text-primary hover:underline",children:"[Link]"})]})})]})]})})]})}export{Le 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.