PageSourceSearch

https://www.sgilbo.kr/_next/static/chunks/7484.7edd470d9f951101.js

js sgilbo.kr collected 2026-10-02 20:50:02 UTC 8,739 bytes, 1 lines download raw bytes

1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[7484],{57484:function(e,s,t){t.r(s),t.d(s,{BulkUnpublishProgressModal:function(){return x}});var n=t(57437),r=t(2265),l=t(48887),d=t(98702),i=t(61477),o=t(31523),a=t(39174),c=t(26497);function x(e){var s,t,x;let{isOpen:u,onClose:m,progress:h,actionType:p,selectedArticles:g,onConfirm:j,onRemove:f}=e,{total:v,completed:b,current:N,currentArticleTitle:w,failed:y,completedIds:k,isProcessing:C}=h,L=v>0?Math.round(b/v*100):0,M="unpublish"===p?"게시 취소":"cancel_schedule"===p?"예약 취소":"반려",z=!C&&0===v,_=(0,r.useMemo)(()=>new Set(k),[k]),B=(0,r.useMemo)(()=>new Set(y.map(e=>e.id)),[y]),S=()=>{C||m()},E=(0,r.useRef)(null),O=(0,l.MG)({count:null!==(s=null==g?void 0:g.length)&&void 0!==s?s:0,getScrollElement:()=>E.current,estimateSize:()=>72,overscan:5});return(0,n.jsxs)(d.u_,{isOpen:u,onClose:S,size:"lg",closeOnOverlayClick:!C,children:[(0,n.jsx)(d.xB,{onClose:C?()=>{}:S,children:(0,n.jsx)("span",{className:"font-semibold text-[--foreground]",children:z?"".concat((0,o.in)("기사")," 일괄 ").concat(M):C?"".concat(M," 진행 중..."):"".concat(M," 완료")})}),(0,n.jsx)(d.hz,{children:(0,n.jsx)("div",{className:"space-y-4 py-2",children:z?(0,n.jsxs)("div",{className:"space-y-4",children:[(0,n.jsxs)("div",{className:"space-y-2",children:[(0,n.jsxs)("p",{className:"text-sm text-[--muted-foreground]",children:["선택한 ",(0,n.jsxs)("span",{className:"font-semibold text-[--foreground]",children:[(null==g?void 0:g.length)||0,"개"]}),"의 ",(0,o.in)("기사"),"를 ",M,"하시겠습니까?"]}),(0,n.jsx)("p",{className:"text-xs text-[--muted-foreground]",children:"목록에서 제외할 항목은 X 버튼을 눌러주세요."}),(0,n.jsxs)("div",{className:"bg-[--warning]/10 text-[--warning] text-xs p-2 rounded flex items-start gap-2",children:[(0,n.jsx)("svg",{className:"w-4 h-4 flex-shrink-0 mt-0.5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,n.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z"})}),(0,n.jsx)("span",{children:"unpublish"===p?"웹페이지를 포함해 송고된 모든 외부 채널에서도 게시가 취소됩니다. 특정 채널만 취소하려면 개별 ".concat((0,o.in)("기사"),"의 '게시 취소' 버튼을 이용해 주세요."):"cancel_schedule"===p?"예약된 게시 일정이 취소됩니다.":"반려 사유는 다음 단계에서 한 번 입력하고, 선택한 모든 기사에 같은 사유가 기록됩니다."})]})]}),(0,n.jsx)("div",{ref:E,className:"border rounded-md bg-[--muted]/30",style:{height:Math.min(320,(null!==(t=null==g?void 0:g.length)&&void 0!==t?t:0)*72+2)||80,maxHeight:320,overflowY:(null!==(x=null==g?void 0:g.length)&&void 0!==x?x:0)*72>320?"auto":"hidden"},children:(null==g?void 0:g.length)===0?(0,n.jsx)("div",{className:"p-4 text-center text-sm text-[--muted-foreground]",children:"선택된 항목이 없습니다."}):(0,n.jsx)("div",{style:{height:"".concat(O.getTotalSize(),"px"),width:"100%",position:"relative"},children:O.getVirtualItems().map(e=>{let s=null==g?void 0:g[e.index];return s?(0,n.jsxs)("div",{style:{position:"absolute",top:0,left:0,width:"100%",height:"".concat(e.size,"px"),transform:"translateY(".concat(e.start,"px)")},className:"flex items-center justify-between px-3 py-2 border-b border-[--border] hover:bg-[--muted]/50 transition-colors",children:[(0,n.jsx)("div",{className:"flex-shrink-0 mr-3",children:s.thumbnailUrl?(0,n.jsx)(c.Z,{src:(0,a.zg)(s.thumbnailUrl),alt:"썸네일",className:"w-12 h-12 object-contain rounded-md border border-[--border]",width:96,height:96}):(0,n.jsx)("div",{className:"w-12 h-12 bg-[--muted] rounded-md flex items-center justify-center text-[--muted-foreground] text-[10px] border border-[--border]",children:"없음"})}),(0,n.jsxs)("div",{className:"flex-1 min-w-0 mr-3",children:[(0,n.jsxs)("div",{className:"flex items-center gap-2 mb-1",children:[(0,n.jsxs)("span",{className:"text-xs font-mono text-[--muted-foreground]",children:["#",s.id]}),(0,n.jsx)(i.K,{status:s.status,showRejectIcon:!1})]}),(0,n.jsx)("p",{className:"text-sm text-[--foreground] truncate",title:s.title,children:s.title}),s.reporters&&s.reporters.length>0&&(0,n.jsxs)("p",{className:"text-xs text-[--muted-foreground] truncate",children:[s.reporters[
10].name,s.reporters.length>1&&" 외 ".concat(s.reporters.length-1,"명")]})]}),f&&(0,n.jsx)("button",{onClick:()=>f(s.id),className:"flex-shrink-0 p-1.5 text-[--muted-foreground] hover:text-[--destructive] hover:bg-[--destructive]/10 rounded transition-colors",title:"목록에서 제외",children:(0,n.jsx)("svg",{className:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,n.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M6 18L18 6M6 6l12 12"})})})]},s.id):null})})})]}):(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("div",{className:"space-y-2",children:[g&&g.length>0&&C&&(0,n.jsxs)("div",{className:"mb-4",children:[(0,n.jsxs)("p",{className:"text-sm font-medium mb-2 text-[--foreground]",children:["대상 항목 (",g.length,"개)"]}),(0,n.jsx)("div",{className:"max-h-32 overflow-y-auto border rounded-md p-2 bg-[--muted]/30 space-y-1",children:g.map(e=>(0,n.jsxs)("div",{className:"text-xs text-[--muted-foreground] flex items-center justify-between",children:[(0,n.jsxs)("span",{className:"truncate flex-1",children:["#",e.id," ",e.title]}),N===e.id&&(0,n.jsx)("span",{className:"text-[--primary] font-medium ml-2",children:"처리 중..."}),B.has(e.id)&&(0,n.jsx)("span",{className:"text-[--destructive] ml-2",children:"실패"}),_.has(e.id)&&(0,n.jsx)("span",{className:"text-[--success] ml-2",children:"완료"})]},e.id))})]}),(0,n.jsx)("div",{className:"w-full bg-[--muted] rounded-full h-1.5 overflow-hidden",children:(0,n.jsx)("div",{className:"h-full transition-all duration-300 ease-out ".concat(C?"bg-[--primary]":y.length>0?"bg-[--warning]":"bg-[--success]"),style:{width:"".concat(L,"%")}})}),(0,n.jsxs)("div",{className:"text-xs text-[--muted-foreground] flex justify-between",children:[(0,n.jsx)("span",{children:C?"진행 중...":"완료됨"}),(0,n.jsxs)("span",{children:[b," / ",v]})]}),C&&w&&(0,n.jsxs)("p",{className:"text-sm text-[--foreground] truncate",title:w,children:["현재 처리 중: ",w]})]}),C&&(0,n.jsxs)("div",{className:"bg-[--warning]/10 text-[--warning] text-xs p-2 rounded flex items-center gap-2",children:[(0,n.jsx)("svg",{className:"w-4 h-4 flex-shrink-0",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,n.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z"})}),(0,n.jsx)("span",{children:"처리가 완료될 때까지 페이지를 벗어나지 마세요."})]}),!C&&(0,n.jsxs)("div",{className:"space-y-3 bg-[--muted]/30 p-3 rounded-lg",children:[(0,n.jsxs)("p",{className:"text-sm text-[--foreground] font-medium",children:["총 ",b,"개의 ",(0,o.in)("기사"),"가 ",M,"되었습니다.",y.length>0&&(0,n.jsxs)("span",{className:"text-[--destructive] ml-1",children:["(",y.length,"개 실패)"]})]}),y.length>0&&(0,n.jsx)("div",{className:"max-h-32 overflow-y-auto text-xs space-y-1 pr-1 custom-scrollbar",children:y.map(e=>(0,n.jsxs)("div",{className:"text-[--muted-foreground] p-2 bg-[--background] border border-[--border] rounded shadow-sm",children:[(0,n.jsxs)("div",{className:"flex items-center gap-2 mb-1",children:[(0,n.jsxs)("span",{className:"font-mono text-[--destructive]",children:["#",e.id]}),(0,n.jsx)("span",{className:"font-medium truncate flex-1",children:e.title})]}),(0,n.jsx)("span",{className:"block text-[--destructive] pl-1 border-l-2 border-[--destructive]/30",children:e.error})]},e.id))})]})]})})}),(0,n.jsx)(d.mz,{children:z?(0,n.jsxs)("div",{className:"flex justify-end gap-3 w-full",children:[(0,n.jsx)("button",{onClick:S,className:"px-4 py-2 text-sm font-medium text-[--muted-foreground] hover:text-[--foreground] transition-colors",children:"취소"}),(0,n.jsxs)("button",{onClick:j,disabled:!g||0===g.length,className:"px-4 py-2 text-sm font-medium bg-[--destructive] text-white rounded-lg hover:bg-[--destructive]/90 disabled:opacity-50 disabled:cursor-not-allowed transition-colors",children:[M," 시작"]})]}):C?null:(0,n.jsx)("div",{className:"flex justify-end w-full",children:(0,n.jsx)("button",{onClick:S,className:"px-4 py-2 text-sm font-medium bg-[--secondary] text-[--secondary-foreground] rounded-lg hover:bg-[--secondary]/90 transition-colors",children:"닫기"})})})]})}}}]);

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.