1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[73950,99935],{14552:(e,t,n)=>{n.d(t,{cn:()=>i});var r=n(32947),o=n(11175);function i(...e){return(0,o.QP)((0,r.$)(e))}},22925:(e,t,n)=>{function r(e){let t=new URLSearchParams,n=new URLSearchParams,r=[];for(let i of e){var o;if(null==(o=i.value)||"string"==typeof o&&""===o.trim())continue;let e=String(i.value);i.personal?(n.set(i.key,e),r.includes(i.personal)||r.push(i.personal)):t.set(i.key,e)}return{params:t,fragment:n,carries:r}}n.d(t,{CZ:()=>r,Yc:()=>d,qA:()=>i,ti:()=>l});let o=Symbol("share-link.fragmentKeys");function i(e,t){let n=new URLSearchParams(e.replace(/^\?/,"")),r=new URLSearchParams(t.replace(/^#/,"")),i=new Set;return r.forEach((e,t)=>{n.set(t,e),i.add(t)}),Object.defineProperty(n,o,{value:i,enumerable:!1}),n}let a=new Set(["s","t","m"]);function s(e){return e.length>=2?2:1}function d(e,t,n){let r=e[o]??null,i=0;for(let e of t)i+=s(e);if(0===i)return!1;let d=0;for(let o of t){if(n&&null!==n.get(o)||null!==r&&r.has(o))return!0;if(null!==e.get(o)){if(!a.has(o))return!0;d+=s(o)}}return 0!==d&&d>=Math.min(3,i)}function l(e){return 0===e.length?"":1===e.length?e[0]:`${e.slice(0,-1).join(", ")} and ${e[e.length-1]}`}},73950:(e,t,n)=>{n.d(t,{O8:()=>d,ToolActions:()=>c});var r=n(45993),o=n(75837),i=n(77771),a=n(99935),s=n(22925);function d(e,t,n){let r=t?.toString()??"",o=n?.toString()??"";return`${e}${r?`?${r}`:""}${o?`#${o}`:""}`}function l(e){return e.startsWith("/embed/")?e.slice(6):e}function c({share:e,getParams:t,getFragment:n,queryIsImpersonal:c,title:u,embedCarriesPersonal:h=!0,onLinkCopied:m}){let[p,g]=(0,o.useState)(null),[f,b]=(0,o.useState)(null),[y,x]=(0,o.useState)(null),[v,w]=(0,o.useState)(""),k=e?e():null,$=()=>k?[k.params,k.fragment]:[t?.(),n?.()],j=!h&&(k?k.carries.length>0:!!n);async function T(e,t){let{ok:n,note:r}=await (0,a.copyText)(e);b(r),n&&(g(t),"link"===t&&m?.(),setTimeout(()=>g(e=>e===t?null:e),1600))}return(0,r.jsxs)("div",{className:"space-y-2",children:[(0,r.jsxs)("div",{className:"flex flex-wrap items-center gap-1",children:[(0,r.jsx)(i.$,{variant:"ghost",size:"sm",onClick:function(){let e=`${window.location.origin}${window.location.pathname}`,[t,n]=$();T(d(e,t,n),"link")},children:"link"===p?"Link copied â":"Share"}),(0,r.jsx)(i.$,{variant:"ghost",size:"sm",onClick:function(){let e=window.location.origin,t=window.location.pathname,[n,r]=$(),o=function(e,t,n,r,o){let i=`${e}/embed${l(t)}`;return n?d(i):d(i,r,o)}(e,t,j,n,h?r:void 0),i=`${e}${l(t)}`,a=u?`${u} by ToolBreezy`:"ToolBreezy",s=`<!-- ToolBreezy free widget. REQUIRED: to use this widget you must keep this code as provided, including the heading and the "By ToolBreezy" link back to ToolBreezy. Keeping that link is required, not optional. Removing, hiding, redirecting, or altering it is not permitted and ends your right to use the embed. See ${e}/terms. --> 2<div style="max-width:660px"> 3`+(u?` <h2 style="font:600 18px/1.3 system-ui,sans-serif;margin:0 0 .5rem">${u}</h2> 4`:"")+` <iframe src="${o}" width="100%" height="620" loading="lazy" title="${a}" style="width:100%;border:1px solid rgba(0,0,0,.12);border-radius:12px"></iframe> 5`+` <p style="font:400 12px/1.4 system-ui,sans-serif;margin:.4rem 0 0;color:#6b7280">By <a href="${i}" target="_blank" rel="noopener">ToolBreezy</a></p> 6`+"</div>";w(s),x(e=>"embed"===e?null:"embed"),T(s,"embed")},children:"embed"===p?"Embed copied â":"Embed"}),(0,r.jsx)(i.$,{variant:"ghost",size:"sm",onClick:()=>x(e=>"bookmark"===e?null:"bookmark"),children:"Bookmark"})]}),k&&k.carries.length>0&&(0,r.jsxs)("p",{className:"text-xs text-muted-foreground",children:["This link carries ",(0,s.ti)(k.carries),". That part of the address is never sent to a server, so it is not in any log of ours, but it does travel inside the link itself. Anyone you send it to can read it",h?(0,r.jsx)(r.Fragment,{children:", and so can anyone reading a page you paste the embed code into."}):(0,r.jsx)(r.Fragment,{children:". The Embed code leaves it out, because an embed lands on a public page."})]}),c?(0,r.jsx)("p",{className:"text-xs text-muted-foreground",children:k&&k.carries.length>0?`The rest of the address carries ${c}.`:`This link and the embed code carry ${c}. Nothing else you typed goes into either.`}):k&&0===k.carries.length&&(0,r.jsx)("p",{className:"text-xs text-muted-foreground",children:"This link carries your settings and nothing you typed."}),(0,r.jsx)("p",{role:"status","aria-live":"polite",className:"text-xs text-destructive empty:hidden",children:f??""}),"embed"===y&&(0,r.jsxs)("div",{className:"space-y-1.5 rounded-md border bg-muted/40 p-3",children:[(0,r.jsxs)("p",{className:"text-xs text-muted-foreground",children:["Paste this on your site. It shows the tool title, the widget with your current settings, and a small âBy ToolBreezyâ credit that links back. Keeping that heading and link is required to use the free embed, not optional.",j&&(0,r.jsxs)(r.Fragment,{children:[" ","The widget opens on its own defaults rather than on"," ",k?(0,s.ti)(k.carries):"what you typed here",", because a page you publish is read by everyone who visits it."]})]}),(0,r.jsx)("textarea",{readOnly:!0,value:v,rows:9,onFocus:e=>e.currentTarget.select(),className:"min-h-[9rem] w-full resize-y rounded border bg-background p-2 font-mono text-xs leading-relaxed"})]}),"bookmark"===y&&(0,r.jsxs)("p",{className:"rounded-md border bg-muted/40 p-3 text-xs text-muted-foreground",children:["Press"," ",(0,r.jsx)("kbd",{className:"rounded border bg-background px-1.5 py-0.5 font-mono",children:"Ctrl"})," +"," ",(0,r.jsx)("kbd",{className:"rounded border bg-background px-1.5 py-0.5 font-mono",children:"D"})," (or"," ",(0,r.jsx)("kbd",{className:"rounded border bg-background px-1.5 py-0.5 font-mono",children:"â"})," +"," ",(0,r.jsx)("kbd",{className:"rounded border bg-background px-1.5 py-0.5 font-mono",children:"D"})," on Mac) to bookmark this tool and come back anytime."]})]})}}
6,77771:(e,t,n)=>{n.d(t,{$:()=>d,r:()=>s});var r=n(45993),o=n(75837),i=n(65404),a=n(14552);let s=(0,i.F)("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:pointer-events-none disabled:opacity-50 [&_svg]:size-4 [&_svg]:shrink-0",{variants:{variant:{default:"bg-primary text-primary-foreground hover:bg-primary/90",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80",outline:"border border-input bg-background hover:bg-accent hover:text-accent-foreground",ghost:"hover:bg-accent hover:text-accent-foreground",destructive:"bg-destructive text-destructive-foreground hover:bg-destructive/90",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2",sm:"h-8 rounded-md px-3 text-xs",lg:"h-10 rounded-md px-6",icon:"h-9 w-9"}},defaultVariants:{variant:"default",size:"default"}}),d=o.forwardRef(({className:e,variant:t,size:n,...o},i)=>(0,r.jsx)("button",{ref:i,className:(0,a.cn)(s({variant:t,size:n,className:e})),...o}));d.displayName="Button"},99935:(e,t,n)=>{n.d(t,{EW:()=>a,L1:()=>s,copyText:()=>i,q$:()=>o});let r={ok:!0,note:null},o="Your browser would not let this page reach the clipboard, so nothing was copied. That usually means the page is not on a secure connection. Select the text and copy it by hand instead.";async function i(e){if("undefined"!=typeof navigator&&navigator.clipboard?.writeText)try{return await navigator.clipboard.writeText(e),r}catch{}return!function(e){if("undefined"==typeof document||"function"!=typeof document.execCommand)return!1;let t=document.createElement("textarea");t.value=e,t.setAttribute("aria-hidden","true"),t.style.position="fixed",t.style.top="-9999px",t.style.left="-9999px",document.body.appendChild(t);let n=document.activeElement;try{return t.focus(),t.select(),document.execCommand("copy")}catch{return!1}finally{t.remove(),n instanceof HTMLElement&&n.focus()}}(e)?{ok:!1,note:o}:r}async function a(e,t){if("undefined"!=typeof navigator&&navigator.clipboard?.write&&"undefined"!=typeof ClipboardItem)try{return await navigator.clipboard.write([new ClipboardItem({"text/html":new Blob([e],{type:"text/html"}),"text/plain":new Blob([t],{type:"text/plain"})})]),r}catch{}let n=await i(t);return n.ok?{ok:!0,note:"Your browser would only take plain text, so the formatting did not come across."}:n}async function s(e,t="image/png"){if("undefined"==typeof navigator||!navigator.clipboard?.write||"undefined"==typeof ClipboardItem)return{ok:!1,note:"This browser will not let a page put a picture on the clipboard, so nothing was copied. Saving the image to a file works instead."};try{return await navigator.clipboard.write([new ClipboardItem({[t]:e})]),r}catch{return{ok:!1,note:"Your browser blocked the copy, so the picture did not reach your clipboard. Saving the image to a file works instead."}}}}}]);
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.