PageSourceSearch

https://www.screensnap.pro/_next/static/chunks/252-b00d53a860012189.js

js screensnap.pro collected 2026-10-05 05:25:45 UTC 27,200 bytes, 1 lines download raw bytes

1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[252],{58682:function(e,t,r){r.d(t,{Z:function(){return FaqSection}});var a=r(74817),n=r(67833);function FaqSection(e){let{items:t,title:r}=e,{t:o}=(0,n.Z)("common"),l=null!=r?r:o("faq.heading");return(0,a.jsxs)("section",{className:"mb-12",children:[(0,a.jsx)("h2",{className:"text-2xl font-bold text-fg mb-6",children:l}),(0,a.jsx)("div",{className:"space-y-4",children:t.map((e,t)=>(0,a.jsxs)("details",{open:0===t,className:"group bg-fg/[0.03] border border-fg/[0.08] rounded-xl",children:[(0,a.jsxs)("summary",{className:"flex items-center justify-between p-4 cursor-pointer text-fg font-medium text-sm",children:[e.question,(0,a.jsx)("span",{className:"text-fg-500 group-open:rotate-45 transition-transform text-lg",children:"+"})]}),(0,a.jsx)("div",{className:"px-4 pb-4 text-fg-400 text-sm",children:e.answer})]},t))})]})}},52421:function(e,t,r){r.d(t,{Z:function(){return PdfOrganizerWorkspace}});var a=r(74817),n=r(71248),o=r(18358),l=r(43798),s=r(28013),i=r(5042),c=r(34536),d=r(25620);let g=null,m="5.4.624",p={split:{badge:"Split focused",title:"Split your PDF by ranges, selection, or every page",description:"Set page groups, extract selected pages, or create one PDF per page. Everything runs locally in your browser.",primaryLabel:"Download PDF",primaryHint:"Use the split card to create separate PDFs from the current page order.",accent:"from-red-500 to-orange-500"},remove:{badge:"Remove focused",title:"Select pages to remove, then save a cleaned PDF",description:"Mark any pages you do not want, reorder the rest if needed, and download the updated PDF in one click.",primaryLabel:"Download PDF",primaryHint:"Selections are removed from the current page order before download.",accent:"from-rose-500 to-pink-500"},rotate:{badge:"Rotate focused",title:"Rotate pages, reorder them, and export the fixed PDF",description:"Apply 90 degree left or right turns to individual pages or selected groups, then download the updated document.",primaryLabel:"Download PDF",primaryHint:"Page rotations are applied on export and preserve the rest of the PDF content.",accent:"from-sky-500 to-cyan-500"}},sanitizeBaseName=e=>e.trim().replace(/\.pdf$/i,"").replace(/[^\w\- ]+/g,"").replace(/\s+/g,"-").toLowerCase()||"edited-pdf",triggerBlobDownload=(e,t)=>{let r=URL.createObjectURL(e),a=document.createElement("a");a.href=r,a.download=t,document.body.appendChild(a),a.click(),document.body.removeChild(a),URL.revokeObjectURL(r)},revokePreviewUrls=e=>{e.forEach(e=>{e.previewUrl&&URL.revokeObjectURL(e.previewUrl)})},loadPdfPreviewLib=async()=>{if(g)return g;try{return(g=await import("https://cdn.jsdelivr.net/npm/pdfjs-dist@".concat(m,"/legacy/build/pdf.min.mjs"))).GlobalWorkerOptions.workerSrc="https://cdn.jsdelivr.net/npm/pdfjs-dist@".concat(m,"/legacy/build/pdf.worker.min.mjs"),g}catch(e){return console.error("Failed to load PDF preview renderer:",e),null}},parseRangeGroups=(e,t)=>{let r=e.split(/\n|;|\|/).map(e=>e.trim()).filter(Boolean);if(0===r.length)throw Error("Add at least one page range. Example: 1-3 on the first line, 4-6 on the second.");return r.map(e=>{let r=[];return e.split(",").map(e=>e.trim()).filter(Boolean).forEach(e=>{if(e.includes("-")){let[a,n]=e.split("-").map(e=>e.trim()),o=Number(a),l=Number(n);if(!Number.isInteger(o)||!Number.isInteger(l)||o<1||l<1)throw Error('Invalid range "'.concat(e,'". Use page numbers like 2-5.'));let s=Math.min(o,l),i=Math.max(o,l);if(i>t)throw Error('Range "'.concat(e,'" exceeds the ').concat(t," available page positions."));for(let e=s;e<=i;e+=1)r.push(e-1);return}let a=Number(e);if(!Number.isInteger(a)||a<1||a>t)throw Error('Page "'.concat(e,'" is outside the current page positions (1-').concat(t,")."));r.push(a-1)}),Array.from(new Set(r))})};function PdfOrganizerWorkspace(e){let{focus:t}=e,g=p[t],m=(0,n.useRef)(null),f=(0,n.useRef)([]),u=(0,n.useRef)(0),[x,h]=(0,n.useState)("organized-pdf"),[b,v]=(0,n.useState)(null),[w,j]=(0,n.useState)(0),[y,N]=(0,n.useState)([]),[P,k]=(0,n.useState)([]),[D,E]=(0,n.useState)(!1),[S,F]=(0,n.useState)(!1),[L,R]=(0,n.use
1State)(!1),[C,U]=(0,n.useState)(!1),[Z,B]=(0,n.useState)(null),[I,M]=(0,n.useState)(null),[O,H]=(0,n.useState)(null),[W,z]=(0,n.useState)(null),[A,_]=(0,n.useState)(null),[T,V]=(0,n.useState)(""),[q,G]=(0,n.useState)("split"===t?"ranges":"selected"),[Y,K]=(0,n.useState)("1-2\n3-4");(0,n.useEffect)(()=>{f.current=y},[y]),(0,n.useEffect)(()=>()=>revokePreviewUrls(f.current),[]);let $=(0,n.useMemo)(()=>new Set(P),[P]),J=P.length;y.length;let renderPagePreviews=async(e,t)=>{let r=++u.current;R(!0),H(null);try{let a=await loadPdfPreviewLib();if(!a){H("Page previews are unavailable in this browser, but the PDF tools still work.");return}let n=await a.getDocument({data:e}).promise;for(let e of t){if(u.current!==r)return;try{let t=await n.getPage(e.sourceIndex+1),a=t.getViewport({scale:.38}),o=document.createElement("canvas"),l=o.getContext("2d");if(!l)continue;o.width=a.width,o.height=a.height,l.fillStyle="#ffffff",l.fillRect(0,0,o.width,o.height),await t.render({canvas:o,canvasContext:l,viewport:a}).promise;let s=await new Promise((e,t)=>{o.toBlob(r=>r?e(r):t(Error("Failed to create preview image.")),"image/jpeg",.85)}),i=URL.createObjectURL(s);if(u.current!==r){URL.revokeObjectURL(i);return}N(t=>t.map(t=>t.id!==e.id?t:(t.previewUrl&&t.previewUrl!==i&&URL.revokeObjectURL(t.previewUrl),{...t,previewUrl:i})))}catch(t){console.error("Failed to render preview for page ".concat(e.sourceIndex+1,":"),t)}}}catch(e){console.error("Failed to generate PDF previews:",e),H("Could not render page thumbnails, but the PDF editing actions still work.")}finally{u.current===r&&R(!1)}},buildPdfBytes=async e=>{if(!b)throw Error("Upload a PDF first.");if(0===e.length)throw Error("There are no pages left to export.");let{PDFDocument:t,degrees:a}=await r.e(4307).then(r.bind(r,74307)),n=await t.load(b,{ignoreEncryption:!0}),o=await t.create(),l=await o.copyPages(n,e.map(e=>e.sourceIndex));return l.forEach((t,r)=>{let n=(e[r].rotation%360+360)%360,l=t.getRotation().angle;t.setRotation(a((l+n)%360)),o.addPage(t)}),o.save()},downloadCurrentPdf=async()=>{if(0!==y.length){U(!0),B(null),M(null);try{let e=await buildPdfBytes(y);triggerBlobDownload(new Blob([e],{type:"application/pdf"}),"".concat(sanitizeBaseName(x),".pdf")),M("Your updated PDF is ready.")}catch(e){B(e instanceof Error?e.message:"Failed to export PDF.")}finally{U(!1)}}},downloadSplitZip=async()=>{if(0!==y.length){U(!0),B(null),M(null);try{let e=(await Promise.all([r.e(185),r.e(90)]).then(r.t.bind(r,20090,23))).default,t=new e,a=sanitizeBaseName(x);if("every"===q)for(let e=0;e<y.length;e+=1){let r=y[e],n=await buildPdfBytes([r]);t.file("".concat(a,"-page-").concat(e+1,".pdf"),n)}else{let e="selected"===q?[y.filter(e=>$.has(e.id))]:parseRangeGroups(Y,y.length).map(e=>e.map(e=>y[e]));if(e.some(e=>0===e.length))throw Error("Every split group needs at least one page.");for(let r=0;r<e.length;r+=1){let n=await buildPdfBytes(e[r]);t.file("".concat(a,"-part-").concat(r+1,".pdf"),n)}}let n=await t.generateAsync({type:"blob"});triggerBlobDownload(n,"".concat(a,"-split.zip")),M("Your split PDFs are ready in a ZIP file.")}catch(e){B(e instanceof Error?e.message:"Failed to split PDF.")}finally{U(!1)}}},rotatePages=(e,t)=>{0!==e.length&&(N(r=>r.map(r=>e.includes(r.id)?{...r,rotation:((r.rotation+t)%360+360)%360}:r)),M("Rotated ".concat(e.length," page").concat(1===e.length?"":"s",".")),B(null))},removeSelectedPages=()=>
1{if(0===J){B("Select at least one page to remove.");return}if(J===y.length){B("Keep at least one page in the document.");return}N(e=>e.filter(e=>!$.has(e.id))),k([]),M("Removed ".concat(J," page").concat(1===J?"":"s",".")),B(null)},removeSinglePage=e=>{if(1===y.length){B("Keep at least one page in the document.");return}N(t=>t.filter(t=>t.id!==e)),k(t=>t.filter(t=>t!==e)),M("Removed page."),B(null)},movePage=(e,t)=>{e!==t&&N(r=>{let a=r.findIndex(t=>t.id===e),n=r.findIndex(e=>e.id===t);if(-1===a||-1===n)return r;let o=[...r],[l]=o.splice(a,1);return o.splice(n,0,l),o})},loadFile=async e=>{if("application/pdf"!==e.type){B("Please upload a PDF file.");return}F(!0),B(null),M(null);try{let t=await e.arrayBuffer(),a=new Uint8Array(t),{PDFDocument:n}=await r.e(4307).then(r.bind(r,74307)),o=await n.load(t,{ignoreEncryption:!0}),l=[];for(let e=1;e<=o.getPageCount();e+=1){let t=o.getPage(e-1),{width:r,height:a}=t.getSize();l.push({id:"".concat(e,"-").concat(Math.random().toString(36).slice(2,8)),sourceIndex:e-1,rotation:0,previewUrl:null,width:Math.round(r),height:Math.round(a)})}revokePreviewUrls(f.current),N(l),k([]),v(a),j(e.size),h(e.name.replace(/\.pdf$/i,"")||"organized-pdf"),H(null),l.length>=4?K("1-2\n3-4"):3===l.length?K("1-2\n3"):2===l.length?K("1\n2"):K("1"),M(null),renderPagePreviews(t,l)}catch(e){u.current+=1,revokePreviewUrls(f.current),N([]),v(null),j(0),B(e instanceof Error?e.message:"Failed to load PDF."),H(null),R(!1)}finally{F(!1)}},handleFileInput=async e=>{(null==e?void 0:e.length)&&await loadFile(e[0])},handleFileDrop=async e=>{e.preventDefault(),E(!1),await handleFileInput(e.dataTransfer.files)};return(0,a.jsxs)("div",{className:"space-y-8",children:[(0,a.jsxs)("section",{className:"bg-gradient-to-br from-fg/[0.08] to-fg/[0.03] backdrop-blur-2xl rounded-2xl border p-8 transition-all ".concat(D?"border-fg/40 bg-fg/[0.08]":"border-fg/[0.18]"),onDragOver:e=>{e.preventDefault(),E(!0)},onDragLeave:()=>E(!1),onDrop:handleFileDrop,children:[(0,a.jsx)("input",{ref:m,type:"file",accept:".pdf,application/pdf",className:"hidden",onChange:e=>handleFileInput(e.target.files)}),(0,a.jsxs)("div",{className:"flex flex-col gap-6 lg:flex-row lg:items-center lg:justify-between",children:[(0,a.jsxs)("div",{className:"max-w-2xl",children:[(0,a.jsx)("span",{className:"inline-flex items-center rounded-full border border-fg/15 bg-fg/5 px-3 py-1 text-xs uppercase tracking-[0.2em] text-fg-300",children:g.badge}),(0,a.jsx)("h2",{className:"mt-4 text-2xl font-bold text-fg",children:g.title}),(0,a.jsx)("p",{className:"mt-3 text-fg-400",children:g.description})]}),(0,a.jsxs)("div",{className:"flex flex-col items-start gap-3 lg:items-end",children:[(0,a.jsxs)("button",{onClick:()=>{var e;return null===(e=m.current)||void 0===e?void 0:e.click()},className:"inline-flex items-center gap-2 rounded-xl bg-fg px-5 py-3 font-medium text-canvas shadow-lg transition-colors hover:bg-fg-100",children:[(0,a.jsx)(o.Z,{className:"h-5 w-5"}),y.length>0?"Replace PDF":"Upload PDF"]}),(0,a.jsx)("p",{className:"text-sm text-fg-500",children:"One PDF at a time. Files stay on your device."})]})]})]}),(Z||I)&&(0,a.jsx)("div",{className:"rounded-2xl border px-5 py-4 text-sm ".concat(Z?"border-red-500/30 bg-red-500/10 text-red-200":"border-emerald-500/30 bg-emerald-500/10 text-emerald-200"),children:null!=Z?Z:I}),S&&(0,a.jsx)("div",{className:"rounded-2xl border border-fg/[0.12] bg-fg/[0.04] px-5 py-4 text-sm text-fg-300",children:"Loading PDF pages. Larger documents can take a little longer."}),!S&&L&&(0,a.jsx)("div",{className:"rounded-2xl border border-fg/[0.12] bg-fg/[0.04] px-5 py-4 text-sm text-fg-300",children:"Generating page previews in the background. You can already reorder, rotate, remove, and export pages."}),y.length>0&&(0,a.jsxs)("div",{className:"space-y-6",children:[(0,a.jsxs)("section",{className:"rounded-2xl border border-fg/[0.18] bg-gradient-to-br from-fg/[0.08] to-fg/[0.03] p-4 backdrop-blur-2xl",children:[(0,a.jsx)("div",{className:"flex justify-end",children:(0,a.jsx)("span",{className:"rounded-full border border-fg/10 bg-fg/5 px-3 py-1 text-xs text-fg-300",children:"Current order"})}),(0,a.jsxs)("div",{className:"mt-3 space-y-3",children:[(0,a.jsxs)("div",{className:"min-w-0",children:[(0,a.jsxs)("div",{className:"grid grid-cols-3 gap-1 rounded-xl bg-fg/5 p-1",children:[(0,a.jsx)("button",{onClick:()=>G("ranges"),className:"rounded-lg px-3 py-2 text-xs font-medium transition-colors ".concat("ranges"===q?"bg-fg text-canvas":"text-fg-300 hover:bg-fg/10"),children:"Ranges"}),(0,a.jsx)("button",{onClick:()=>G("selected"),className:"rounded-lg px-3 py-2 text-xs font-medium transition-colors ".concat("selected"===q?"bg-fg text-canvas":"text-fg-300 hover:bg-fg/10"),children:"Selected"}),(0,a.jsx)("button",{onClick:()=>G("every"),className:"rounded-lg px-3 py-2 text-xs font-medium transition-colors ".concat("every"===q?"bg-fg text-canvas":"text-fg-300 hover:bg-fg/10"),children:"Every page"})]}),"ranges"===q&&(0,a.jsxs)("div",{className:"mt-3 space-y-2",children:[(0,a.jsx)("textarea",{value:Y,onChange:e=>K(e.target.value),rows:3,className:"w-full rounded-xl border border-fg/10 bg-fg/5 px-3 py-2.5 text-sm text-fg placeholder-fg-500 focus:outline-none focus:ring-1 focus:ring-fg/30",placeholder:"1-3\n4-6"}),(0,a.jsxs)("div",{className:"rounded-xl border border-fg/10 bg-fg/[0.03] px-3 py-2.5 text-xs text-fg-500",children:["Example: ",(0,a.jsx)("span",{className:"font-mono text-fg-400",children:"1-3"})," and"," ",(0,a.jsx)("span",{className:"font-mono text-fg-400",children:"4-6"})," create two PDFs."]})]}),"selected"===q&&(0,a.jsx)("div",{className:"mt-3 rounded-xl border border-fg/10 bg-fg/[0.04] p-3 text-sm text-fg-300",children:J>
10?"".concat(J," page").concat(1===J?"":"s"," selected. This mode exports them as a separate PDF."):"Select pages in the grid, then extract them into a separate PDF."}),"every"===q&&(0,a.jsx)("div",{className:"mt-3 rounded-xl border border-fg/10 bg-fg/[0.04] p-3 text-sm text-fg-300",children:"Export each current page as its own one-page PDF and download everything in a ZIP file."})]}),"selected"!==q&&(0,a.jsxs)("div",{className:"grid gap-3 sm:grid-cols-[minmax(0,1fr)_220px]",children:[(0,a.jsxs)("button",{onClick:downloadSplitZip,disabled:C||S||0===y.length,className:"inline-flex items-center justify-center gap-2 rounded-xl bg-fg px-4 py-2.5 text-sm font-medium text-canvas transition-colors hover:bg-fg-100 disabled:cursor-not-allowed disabled:opacity-50",children:[C?(0,a.jsx)(l.Z,{className:"h-5 w-5 animate-spin"}):(0,a.jsx)(s.Z,{className:"h-5 w-5"}),"Download split ZIP"]}),(0,a.jsx)("div",{className:"rounded-xl border border-fg/10 bg-fg/[0.03] px-3 py-2.5 text-xs text-fg-500",children:"Range splits and one-page exports use the page order shown below."})]})]}),(0,a.jsxs)("div",{className:"mt-3 grid gap-3 sm:grid-cols-[3fr_1fr]",children:[(0,a.jsxs)("button",{onClick:downloadCurrentPdf,disabled:C||S||0===y.length,className:"inline-flex items-center justify-center gap-2 rounded-xl bg-fg px-4 py-2.5 text-sm font-medium text-canvas transition-colors hover:bg-fg-100 disabled:cursor-not-allowed disabled:opacity-50",children:[C?(0,a.jsx)(l.Z,{className:"h-5 w-5 animate-spin"}):(0,a.jsx)(s.Z,{className:"h-5 w-5"}),g.primaryLabel]}),(0,a.jsxs)("button",{onClick:()=>{var e;return null===(e=m.current)||void 0===e?void 0:e.click()},className:"inline-flex items-center justify-center gap-2 rounded-xl bg-fg/10 px-4 py-2.5 text-sm text-fg transition-colors hover:bg-fg/15",children:[(0,a.jsx)(i.Z,{className:"h-4 w-4"}),"Replace PDF"]})]})]}),(0,a.jsxs)("section",{className:"rounded-2xl border border-fg/[0.18] bg-gradient-to-br from-fg/[0.08] to-fg/[0.03] p-6 backdrop-blur-2xl",children:[(0,a.jsxs)("div",{className:"flex flex-col gap-4 md:flex-row md:items-center md:justify-between",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("h3",{className:"text-lg font-semibold text-fg",children:"Page workspace"}),(0,a.jsx)("p",{className:"mt-1 text-sm text-fg-400",children:"Drag pages to reorder them. Range splits always follow the current page order."})]}),(0,a.jsx)("div",{className:"text-sm text-fg-400",children:J>0?"".concat(J," selected"):"No pages selected"})]}),(0,a.jsxs)("div",{className:"mt-4 flex flex-col gap-3 xl:flex-row xl:items-center xl:justify-between",children:[(0,a.jsxs)("div",{className:"grid grid-cols-2 gap-3 sm:w-auto sm:grid-cols-2",children:[(0,a.jsx)("button",{onClick:()=>k(y.map(e=>e.id)),className:"rounded-xl bg-fg/10 px-4 py-2.5 text-sm text-fg transition-colors hover:bg-fg/15",children:"Select all pages"}),(0,a.jsx)("button",{onClick:()=>k([]),className:"rounded-xl bg-fg/10 px-4 py-2.5 text-sm text-fg transition-colors hover:bg-fg/15",children:"Clear selection"})]}),(0,a.jsxs)("div",{className:"flex flex-wrap gap-3",children:[(0,a.jsxs)("select",{value:T,onChange:e=>V(e.target.value),className:"min-w-[190px] rounded-xl border border-fg/10 bg-fg/10 px-4 py-2.5 text-sm text-fg focus:outline-none focus:ring-1 focus:ring-fg/30",children:[(0,a.jsx)("option",{value:"",className:"bg-canvas-800 text-fg",children:"Batch action"}),(0,a.jsx)("option",{value:"rotate-left",className:"bg-canvas-800 text-fg",children:"Rotate selected left"}),(0,a.jsx)("option",{value:"rotate-right",className:"bg-canvas-800 text-fg",children:"Rotate selected right"}),(0,a.jsx)("option",{value:"remove",className:"bg-canvas-800 text-fg",children:"Remove selected"})]}),(0,a.jsx)("button",{onClick:()=>{if(!T){B("Choose a batch action first.");return}if(0===J){B("Select at least one page first.");return}if("rotate-left"===T){rotatePages(P,-90);return}if("rotate-right"===T){rotatePages(P,90);return}"remove"===T&&removeSelectedPages()},disabled:!T||0===J||"remove"===T&&J===y.length,className:"rounded-xl bg-fg/10 px-4 py-2.5 text-sm text-fg transition-colors hover:bg-fg/1
15 disabled:cursor-not-allowed disabled:opacity-40",children:"Apply"})]})]}),(0,a.jsx)("div",{className:"mt-6 grid gap-4 sm:grid-cols-2 lg:grid-cols-3 2xl:grid-cols-4",children:y.map((e,t)=>{let r=$.has(e.id),n=A===e.id&&W!==e.id;return(0,a.jsxs)("article",{draggable:!0,onDragStart:()=>z(e.id),onDragOver:t=>{t.preventDefault(),_(e.id)},onDragEnd:()=>{W&&A&&movePage(W,A),z(null),_(null)},className:"group rounded-2xl border p-3 transition-all ".concat(r?"border-fg/35 bg-fg/[0.09]":"border-fg/10 bg-fg/[0.04] hover:border-fg/20"," ").concat(n?"border-cyan-400/60 bg-cyan-400/10":""),children:[(0,a.jsxs)("div",{className:"mb-3 flex items-center justify-between gap-3",children:[(0,a.jsxs)("div",{className:"flex items-center gap-2 text-xs text-fg-400",children:[(0,a.jsx)(c.Z,{className:"h-4 w-4"}),"Position ",t+1]}),(0,a.jsxs)("div",{className:"flex items-center gap-3",children:[(0,a.jsx)("button",{onClick:()=>k(t=>t.includes(e.id)?t.filter(t=>t!==e.id):[...t,e.id]),className:"rounded-full border px-2.5 py-1 text-xs transition-colors ".concat(r?"border-fg/40 bg-fg text-canvas":"border-fg/15 bg-fg/5 text-fg-300 hover:bg-fg/10"),children:r?"Selected":"Select"}),(0,a.jsx)("button",{onClick:()=>removeSinglePage(e.id),className:"rounded-lg p-1.5 text-fg-400 transition-colors hover:bg-red-500/10 hover:text-red-300",title:"Delete page","aria-label":"Delete page ".concat(e.sourceIndex+1),children:(0,a.jsx)(d.Z,{className:"h-4 w-4"})})]})]}),(0,a.jsx)("div",{className:"relative flex min-h-[240px] items-center justify-center overflow-hidden rounded-xl bg-canvas-900/80 p-4",children:e.previewUrl?(0,a.jsx)("img",{src:e.previewUrl,alt:"Preview of PDF page ".concat(e.sourceIndex+1),className:"max-h-[220px] rounded-lg object-contain shadow-2xl transition-transform duration-300",style:{transform:"rotate(".concat(e.rotation,"deg)")}}):(0,a.jsx)("div",{className:"flex h-[220px] w-full max-w-[160px] items-center justify-center rounded-xl border border-fg/10 bg-fg/[0.04] text-center transition-transform duration-300",style:{transform:"rotate(".concat(e.rotation,"deg)")},children:(0,a.jsxs)("div",{children:[(0,a.jsx)(o.Z,{className:"mx-auto h-10 w-10 text-fg-500"}),(0,a.jsxs)("div",{className:"mt-3 text-sm font-medium text-fg",children:["Page ",e.sourceIndex+1]})]})})}),(0,a.jsxs)("div",{className:"mt-3 space-y-3",children:[(0,a.jsxs)("div",{children:[(0,a.jsxs)("div",{className:"text-sm font-medium text-fg",children:["Original page ",e.sourceIndex+1]}),(0,a.jsxs)("div",{className:"mt-1 text-xs text-fg-500",children:[e.width," x ",e.height," preview • Rotation ",e.rotation,"\xb0"]})]}),(0,a.jsxs)("div",{className:"grid grid-cols-2 gap-2",children:[(0,a.jsx)("button",{onClick:()=>rotatePages([e.id],-90),className:"rounded-lg bg-fg/10 px-2.5 py-1.5 text-xs text-fg transition-colors hover:bg-fg/15",children:"Rotate left"}),(0,a.jsx)("button",{onClick:()=>rotatePages([e.id],90),className:"rounded-lg bg-fg/10 px-2.5 py-1.5 text-xs text-fg transition-colors hover:bg-fg/15",children:"Rotate right"})]})]})]},e.id)})})]})]})]})}},81364:function(e,t,r){r.d(t,{Z:function(){return ToolPageMeta}});var a=r(74817),n=r(54389),o=r.n(n);let l="".concat("https://www.screensnap.pro","/images/og-image.png"),s=" | ScreenSnap Pro";function ToolPageMeta(e){let{title:t,description:r,ogTitle:n=t,ogDescription:i,twitterTitle:c=t.replace(s,""),twitterDescription:d,keywords:g,jsonLd:m=[]}=e,p=null!=i?i:r,f=t.endsWith(s)?t:"".concat(t).concat(s),u=n.endsWith(s)?n:"".concat(n).concat(s);return(0,a.jsxs)(o(),{children:[(0,a.jsx)("title",{children:f}),(0,a.jsx)("meta",{name:"description",content:r}),g&&(0,a.jsx)("meta",{name:"keywords",content:g}),(0,a.jsx)("meta",{property:"og:title",content:u}),(0,a.jsx)("meta",{property:"og:description",content:p}),(0,a.jsx)("meta",{property:"og:type",content:"website"}),(0,a.jsx)("meta",{property:"og:image",content:l}),(0,a.jsx)("meta",{name:"twitter:card",content:"summary_large_image"}),(0,a.jsx)("meta",{name:"twitter:title",content:c}),(0,a.jsx)("meta",{name:"twitter:description",content:null!=d?d:p}),(0,a.jsx)("meta",{name:"viewport",content:"width=device-width, initial-scale=1.0"}),m.map((e,t)=>(0,a.jsx)("script",{type:"application/ld+json",dangerouslySetInnerHTML:{__html:JSON.stringify(e)}},t))]})}},78385:function(e,t,r){r.d(t,{i:function(){return breadcrumbSchema}});let a="https://www.screensnap.pro";function breadcrumbSchema(e,t,r){let n=r&&"en"!==r?"/".concat(r):"",o=n?"".concat(a).concat(n):a;return{"@context":"https://schema.org","@type":"BreadcrumbList",itemListElement:[{"@type":"ListItem",position:1,name:"Home",item:o},{"@type":"ListItem",position:2,name:"Tools",item:"".concat(a).concat(n,"/tools")},{"@type":"ListItem",position:3,name:e,item:"".concat(a).concat(n,"/tools/").concat(t)}]}}},28013:function(e,t,r){var a=r(71248);let n=a.forwardRef(function({title:e,titleId:t,...r},n){return a.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:1.5,stroke:"currentColor","aria-hidden":"true","data-slot":"icon",ref:n,"aria-labelledby":t},r),e?a.createElement("title",{id:t},e):null,a.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M3 16.5v2.25A2.25 2.25 0 0 0 5.25 21h13.5A2.25 2.25 0 0 0 21 18.75V16.5M16.5 12 12 16.5m0 0L7.5 12m4.5 4.5V3"}))});t.Z=n},43798:function(e,t,r){var a=r(71248);let n=a.forwardRef(function({title:e,titleId:t,...r},n){return a.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:1.5,stroke:"currentColor","aria-hidden":"true","data-slot":"icon",ref:n,"aria-labelledby":t},r),e?a.createElement("title",{id:t},e):null,a.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M16.023 9.348h4.992v-.001M2.985 19.644v-4.992m0 0h4.992m-4.993 0 3.181 3.183a8.25 8.25 0 0 0 13.803-3.7M4.031 9.865a8.25 8.25 0 0 1 13.803-3.7l3.181 3.182m0-4.991v4.99"}))});t.Z=n},29446:function(e,t,r){var a=r(71248);let n=a.forwardRef(function({title:e,titleId:t,...r},n){return a.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:1.5,stroke:"currentColor","aria-hidden":"true","data-slot":"icon",ref:n,"aria-labelledby":t},r),e?a.createElement("title",{id:t},e):null,a.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M15.75 17.25v3.375c0 .621-.504 1.125-1.125 1.125h-9.75a1.125 1.125 0 0 1-1.125-1.125V7.875c0-.621.504-1.125 1.125-1.125H6.75a9.06 9.06 0 0 1 1.5.124m7.5 10.376h3.375c.621 0 1.125-.504 1.125-1.125V11.25c0-4.46-3.243-8.161-7.5-8.876a9.06 9.06 0 0 0-1.5-.124H9.375c-.621 0-1.125.504-1.125 1.125v3.5m7.5 10.375H9.375a1.125 1.125 0 0 1-1.125-1.125v-9.25m12 6.625v-1.875a3.375 3.375 0 0 0-3.375-3.375h-1.5a1.125 1.125 0 0 1-1.125-1.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H9.7
15"}))});t.Z=n},18358:function(e,t,r){var a=r(71248);let n=a.forwardRef(function({title:e,titleId:t,...r},n){return a.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:1.5,stroke:"currentColor","aria-hidden":"true","data-slot":"icon",ref:n,"aria-labelledby":t},r),e?a.createElement("title",{id:t},e):null,a.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M19.5 14.25v-2.625a3.375 3.375 0 0 0-3.375-3.375h-1.5A1.125 1.125 0 0 1 13.5 7.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H8.25m0 12.75h7.5m-7.5 3H12M10.5 2.25H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 0 0-9-9Z"}))});t.Z=n},5042:function(e,t,r){var a=r(71248);let n=a.forwardRef(function({title:e,titleId:t,...r},n){return a.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:1.5,stroke:"currentColor","aria-hidden":"true","data-slot":"icon",ref:n,"aria-labelledby":t},r),e?a.createElement("title",{id:t},e):null,a.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M12 4.5v15m7.5-7.5h-15"}))});t.Z=n},30326:function(e,t,r){var a=r(71248);let n=a.forwardRef(function({title:e,titleId:t,...r},n){return a.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:1.5,stroke:"currentColor","aria-hidden":"true","data-slot":"icon",ref:n,"aria-labelledby":t},r),e?a.createElement("title",{id:t},e):null,a.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"m7.848 8.25 1.536.887M7.848 8.25a3 3 0 1 1-5.196-3 3 3 0 0 1 5.196 3Zm1.536.887a2.165 2.165 0 0 1 1.083 1.839c.005.351.054.695.14 1.024M9.384 9.137l2.077 1.199M7.848 15.75l1.536-.887m-1.536.887a3 3 0 1 1-5.196 3 3 3 0 0 1 5.196-3Zm1.536-.887a2.165 2.165 0 0 0 1.083-1.838c.005-.352.054-.695.14-1.025m-1.223 2.863 2.077-1.199m0-3.328a4.323 4.323 0 0 1 2.068-1.379l5.325-1.628a4.5 4.5 0 0 1 2.48-.044l.803.215-7.794 4.5m-2.882-1.664A4.33 4.33 0 0 0 10.607 12m3.736 0 7.794 4.5-.802.215a4.5 4.5 0 0 1-2.48-.043l-5.326-1.629a4.324 4.324 0 0 1-2.068-1.379M14.343 12l-2.882 1.664"}))});t.Z=n},25620:function(e,t,r){var a=r(71248);let n=a.forwardRef(function({title:e,titleId:t,...r},n){return a.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:1.5,stroke:"currentColor","aria-hidden":"true","data-slot":"icon",ref:n,"aria-labelledby":t},r),e?a.createElement("title",{id:t},e):null,a.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"m14.74 9-.346 9m-4.788 0L9.26 9m9.968-3.21c.342.052.682.107 1.022.166m-1.022-.165L18.16 19.673a2.25 2.25 0 0 1-2.244 2.077H8.084a2.25 2.25 0 0 1-2.244-2.077L4.772 5.79m14.456 0a48.108 48.108 0 0 0-3.478-.397m-12 .562c.34-.059.68-.114 1.022-.165m0 0a48.11 48.11 0 0 1 3.478-.397m7.5 0v-.916c0-1.18-.91-2.164-2.09-2.201a51.964 51.964 0 0 0-3.32 0c-1.18.037-2.09 1.022-2.09 2.201v.916m7.5 0a48.667 48.667 0 0 0-7.5 0"}))});t.Z=n}}]);

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.