PageSourceSearch

https://technoguru.in/_next/static/chunks/9759-4d64adbae4f13168.js

js technoguru.in collected 2026-10-08 07:11:48 UTC 54,280 bytes, 1 lines download raw bytes

1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[9759],{7013:(e,t,a)=>{a.d(t,{A:()=>n});let n=(0,a(71847).A)("ArrowUpRight",[["path",{d:"M7 7h10v10",key:"1tivn9"}],["path",{d:"M7 17 17 7",key:"1vkiza"}]])},14816:(e,t,a)=>{a.d(t,{WD:()=>b});var n=a(95155),s=a(52619),o=a.n(s),i=a(22198),r=a(76445),l=a(22027),c=a(77260),d=a(97201),u=a(11081),h=a(66415),p=a(67021);let m="engineering-project-workspace",x=new Date(0),g=Object.keys(d.tF),f={href:"",phrase:"",carriesConfig:!1,figureCount:0};function b(e){let{fromSlug:t,shareUrl:a,figures:s,ready:b=!0,className:v}=e,w=function(e){let{fromSlug:t,shareUrl:a,figures:n,ready:s=!0}=e;if(!s)return f;let o=(0,c.Bb)(m);if(!o||"live"!==o.status||!o.indexable||!o.href.startsWith("/")||o.href.startsWith("//"))return f;let i=(0,c.Bb)(t);if(!i||"internal"===i.status)return f;let r=new URLSearchParams,l=0;for(let e of g){let t=(null!=n?n:{})[e];null!=t&&(0,d.Ju)(e,t)&&(r.set((0,d.yP)(e),"number"!=typeof t?t:String(Number(t.toFixed(4)))),l+=1)}l>0&&r.set(d.TK,i.slug),r.set(h.nl,i.slug);let b=function(e){let t=(0,h.pY)(function(e){if(!e)return;let t=e.indexOf("?");if(-1===t)return;let a=e.indexOf("#"),n=-1===a||a<t?e.length:a,s=e.slice(t+1,n);return""===s?void 0:s}(e));if(!t)return null;let a=[];for(let[e]of new URLSearchParams(t))a.push(e);return 0===a.length||!a.every(e=>p.hW.test(e))||(0,p.Dq)(a).length>0?null:t}(a);b&&r.set(h.w4,b);let v=r.toString(),w=(0,u.Z)(v,{id:"probe",now:x}).item;if(!w||0===w.figures.length&&""===w.configQuery)return f;let y=(0,d.bU)(v),k=[];for(let e of g){let t=y[e];t&&k.push((0,d._X)(e,t.value))}return k.length!==w.figures.length?f:{href:"".concat(o.href,"?").concat(v),phrase:0===k.length?"":1===k.length?k[0]:"".concat(k.slice(0,-1).join(", ")," and ").concat(k[k.length-1]),carriesConfig:""!==w.configQuery,figureCount:w.figures.length}}({fromSlug:t,shareUrl:a,figures:s,ready:b});if(!w.href)return null;let y=(0,c.Bb)(m);if(!y)return null;let k=function(e,t){let a=""!==e.phrase?"The ".concat(t," opens with ").concat(e.phrase," ready to add"):"The ".concat(t," opens with this result ready to add"),n=e.carriesConfig?", carrying the inputs behind it so the result reopens exactly as it stands here":"";return"".concat(a).concat(n,". Nothing is added until you choose to.")}(w,y.title);return(0,n.jsxs)("div",{className:(0,r.cn)("min-w-0",v),"data-save-to-project":t,children:[(0,n.jsxs)(o(),{href:w.href,onClick:function(){try{(0,l.u4)("cta_click",{cta_id:"save-to-project-".concat(t),cta_label:"Save to project",cta_context:"calculator-result",cta_purpose:"CONSULTANT_RESOURCE",target_path:y.href})}catch(e){}},className:"inline-flex min-h-[44px] items-center gap-2 rounded-sm border border-sc-stone-300 bg-sc-paper-100 px-3 py-2 text-[12.5px] leading-tight text-sc-ink-800 transition-colors hover:border-sc-copper-600 hover:text-sc-copper-700 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-sc-gold-600",children:[(0,n.jsx)(i.A,{"aria-hidden":!0,className:"h-3.5 w-3.5 shrink-0 text-sc-gold-600"}),"Save to project"]}),(0,n.jsxs)("p",{className:"mt-1.5 text-[11.5px] leading-[1.5] text-sc-ink-700",children:[k," ",u.o_]})]})}},22198:(e,t,a)=>{a.d(t,{A:()=>n});let n=(0,a(71847).A)("FolderPlus",[["path",{d:"M12 10v6",key:"1bos4e"}],["path",{d:"M9 13h6",key:"1uhe8q"}],["path",{d:"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z",key:"1kt360"}]])},23650:(e,t,a)=>{a.d(t,{An:()=>n,Mo:()=>c,X5:()=>s,h3:()=>i});let n=11;function s(e,t){let a=e/Math.max(1,t),s=e=>Math.round(e*a*100)/100;return{unitsPerPx:a,units:s,floor:s(n),px:e=>Math.round(e/a*100)/100}}let o={standard:.7135,tall:.6719,compact:.7061,small:.8054,column:.8633,band:.6386,wide:.4778,wideSpeaker:.4761,wideShort:.4076};function i(e){let t=o[e],a=e=>Math.round(e/t*100)/100,s=Math.ceil(n/t*100)/100,i=a(.65);return{micro:s,label:Math.round((s+i)*100)/100,value:Math.round((s+2*i)*100)/100,figure:Math.round((s+4*i)*100)/100,pxAt:(e,t)=>Math.round(e*t*100)/100,atPx:e=>Math.round(100*a(e))/100}}let r="en-IN";function l(e,t){return t?/^[A-Za-z0-9]/.test(t)?"".concat(e," ").concat(t):"".concat(e).concat(t):e}function c(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!Number.isFinite(e))return l("—",t.unit);let a=t.decimals;
1return l(void 0===a?e.toLocaleString(r,{maximumFractionDigits:20}):e.toLocaleString(r,{minimumFractionDigits:a,maximumFractionDigits:a}),t.unit)}},39847:(e,t,a)=>{a.d(t,{A:()=>n});let n=(0,a(71847).A)("ArrowRightLeft",[["path",{d:"m16 3 4 4-4 4",key:"1x1c3m"}],["path",{d:"M20 7H4",key:"zbl0bi"}],["path",{d:"m8 21-4-4 4-4",key:"h9nckh"}],["path",{d:"M4 17h16",key:"g4d7ey"}]])},41744:(e,t,a)=>{a.d(t,{Xl:()=>m});var n=a(95155),s=a(12115),o=a(52619),i=a.n(o),r=a(7013),l=a(76445),c=a(77260),d=a(97201);let u=/\d+(?:,\d+)*(?:\.\d+)?/g,h=/[\uFF10-\uFF19\u0660-\u0669\u06F0-\u06F9\u0966-\u096F]/;function p(e,t,a){if(null==e)return null;let n="function"==typeof e?a?e(a):null:e;if(null==n)return null;let o=function e(t){let a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;if(null==t||"boolean"==typeof t)return"";if("string"==typeof t)return t;if("number"==typeof t)return String(t);if(a>8)return null;if(Array.isArray(t)){let n="";for(let s of t){let t=e(s,a+1);if(null===t)return null;n+=t}return n}if((0,s.isValidElement)(t)){var n;return"string"!=typeof t.type&&t.type!==s.Fragment?null:e(null==(n=t.props)?void 0:n.children,a+1)}return null}(n);if(null===o)return null;let i=o.replace(/\s+/g," ").trim();return""===i||!function(e,t){if(h.test(e))return!1;let a=function(e){let t=new Set;for(let a of e)for(let e of("number"==typeof a.value?(t.add(String(a.value)),t.add((0,d.ZO)(a.value))):t.add(a.value),a.text.matchAll(u)))t.add(e[0]);return t}(t);for(let t of e.matchAll(u)){var n;let s=t[0];if(!a.has(s)&&!/^\s*%/.test(e.slice((null!=(n=t.index)?n:0)+s.length)))return!1}return!0}(i,t)?null:i}function m(e){let{handoff:t,toSlug:a,requireKeys:s,arrivalNotes:o,withheldNotes:d,onNavigate:u,tone:h="light",className:m}=e,x=(0,c.Bb)(a);if(!x||"live"!==x.status||!x.indexable||!x.href.startsWith("/")||x.href.startsWith("//"))return null;let{url:g,figures:f,carried:b,dropped:v}=t;if(!g||0===f.length||g!==x.href&&!g.startsWith("".concat(x.href,"?"))||s&&s.some(e=>!b.includes(e)))return null;let w="dark"===h,y=function(e,t){if(!t)return[];let a=[];for(let n of e){if(!Object.prototype.hasOwnProperty.call(t,n.key))continue;let s=p(t[n.key],e,n);null!==s&&a.push({key:n.key,text:s})}return a}(f,o),k=function(e,t,a){if(!a)return[];let n=[];for(let s of Object.keys(a)){if(t.includes(s))continue;let o=p(a[s],e);null!==o&&n.push({key:s,text:o})}return n}(f,b,d);return(0,n.jsxs)("div",{className:m,children:[(0,n.jsxs)(i(),{href:g,onClick:u,className:(0,l.cn)("inline-flex min-h-[44px] items-center gap-1.5 font-medium underline-offset-4 transition-colors focus-visible:outline-none focus-visible:ring-2",w?"text-[13.5px] text-ink-bright hover:text-gold-300 hover:underline focus-visible:ring-gold-400/70":"text-[13px] text-sc-ink-900 hover:text-sc-copper-700 hover:underline focus-visible:ring-sc-gold-500/80"),children:["Take ",t.phrase," into the ",x.title,(0,n.jsx)(r.A,{className:(0,l.cn)("h-3.5 w-3.5",w?"text-gold-300":"text-sc-gold-600"),"aria-hidden":!0})]}),(0,n.jsxs)("p",{className:(0,l.cn)("mt-1 leading-[1.5]",w?"text-[12px] text-ink-200/85":"text-[11.5px] text-sc-ink-700"),children:[1===f.length?"That figure travels":"Those figures travel"," with you, labelled as carried and editable there.",y.map(e=>(0,n.jsxs)("span",{children:[" ",e.text]},"arrival-".concat(e.key))),k.map(e=>(0,n.jsxs)("span",{children:[" ",e.text]},"withheld-".concat(e.key))),v.length>0?(0,n.jsxs)("span",{children:[" ","Part of this sizing is outside what the handoff can carry exactly, so it stays behind rather than arrive rounded to a figure nobody computed — the ",x.title," will ask you for it."]}):null]})]})}},59759:(e,t,a)=>{a.r(t),a.d(t,{FACEPLATE_COLS:()=>V,POE_CLASS_PROBE_W:()=>H,PoeBudget:()=>B,poeFaceplate:()=>K,readCarrySeed:()=>U});var n=a(95155),s=a(12115),o=a(52619),i=a.n(o),r=a(52056),l=a(7013),c=a(58060),d=a(84277),u=a(1053),h=a(91620),p=a(41744),m=a(14816),x=a(62993);let g={"verified-capability-match":{label:"Published capabilities match",tone:"border-sc-olive-400/60 bg-sc-olive-400/10 text-sc-forest-900",dot:"bg-sc-olive-400"},"conditional-match":{label:"Conditional — check the condition below",tone:"border-sc-gold-500/55 bg-sc-gold-500/10 text-sc-ink-900",dot:"bg-sc-gold-500"},"insufficient-data":{label:"Published data incomplete — needs review",tone:"border-sc-stone-300 bg-sc-paper-100 text-sc-ink-900",dot:"bg-sc-ink-700"},"not-suitable":{label:"Not suitable for this load",tone:"border-amber-300 bg-amber-50 text-amber-900",dot:"bg-
1amber-500"}};function f(e){let{k:t,v:a,note:s}=e;return(0,n.jsxs)("div",{className:"min-w-0",children:[(0,n.jsx)("dt",{className:"font-mono text-[10.5px] uppercase tracking-[0.16em] text-sc-ink-700",children:t}),(0,n.jsx)("dd",{className:"mt-0.5 text-[14px] leading-tight text-sc-ink-900",children:a}),s?(0,n.jsx)("p",{className:"mt-0.5 text-[11px] leading-[1.4] text-sc-ink-700",children:s}):null]})}function b(e){var t,a,s;let{candidates:o,selectedSlug:i,onSelect:r,fit:l}=e;if(0===o.length)return null;let c=null!=(s=o.find(e=>e.slug===i))?s:null,d=l?g[l.verdict]:null;return(0,n.jsxs)("div",{className:"mt-3 border border-sc-stone-300 bg-sc-paper-100 p-3",children:[(0,n.jsxs)("label",{className:"block",children:[(0,n.jsxs)("span",{className:"mb-1 flex items-center justify-between gap-2",children:[(0,n.jsx)("span",{className:"font-mono text-[10.5px] uppercase tracking-[0.18em] text-sc-gold-600",children:"Check against a named switch"}),(0,n.jsx)("span",{className:"font-mono text-[10.5px] uppercase tracking-[0.16em] text-sc-ink-700",children:"optional"})]}),(0,n.jsxs)("select",{"aria-label":"Check this load against a named switch",value:i,onChange:e=>r(e.target.value),className:"min-h-[42px] w-full rounded-md border border-sc-stone-300 bg-sc-ivory-50 px-2.5 text-[13.5px] text-sc-ink-900 outline-none transition focus:border-sc-copper-600 focus:ring-2 focus:ring-sc-gold-500/40",children:[(0,n.jsx)("option",{value:"",children:"Engineering tier only (no named switch)"}),o.map(e=>(0,n.jsx)("option",{value:e.slug,children:e.fullName},e.slug))]})]}),c&&l&&d?(0,n.jsxs)("div",{className:"mt-3",children:[(0,n.jsxs)("p",{className:"flex items-start gap-2 border px-2.5 py-2 text-[12.5px] leading-[1.45] ".concat(d.tone),children:[(0,n.jsx)("span",{className:"mt-[5px] inline-block h-[7px] w-[7px] shrink-0 rounded-full ".concat(d.dot),"aria-hidden":!0}),(0,n.jsxs)("span",{children:[(0,n.jsx)("strong",{className:"font-medium",children:d.label})," — ",l.switchName]})]}),(0,n.jsxs)("dl",{className:"mt-2.5 grid grid-cols-2 gap-x-4 gap-y-2.5",children:[(0,n.jsx)(f,{k:"devices / ports",v:"".concat(l.devicesTotal," on ").concat(l.poePortsAvailable," PoE ports"),note:null==(t=c.poePorts)?void 0:t.condition}),l.assumedLoadW>0?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(f,{k:"published load",v:"".concat(l.connectedLoadW," W"),note:l.connectedLoadW>0?"from the devices' own published maxima":"no named device publishes a maximum draw"}),(0,n.jsx)(f,{k:"planning load",v:"".concat(l.assumedLoadW," W"),note:"assumed for ".concat(l.devicesWithoutPublishedDraw.length," device ").concat(1===l.devicesWithoutPublishedDraw.length?"line":"lines"," — a category figure, not a manufacturer one")})]}):(0,n.jsx)(f,{k:"published load",v:"".concat(l.connectedLoadW," W"),note:"from the devices' own published maxima — no planning figures in this total"}),(0,n.jsx)(f,{k:"published pool",v:null===l.publishedBudgetW?"not published":"".concat(l.publishedBudgetW," W"),note:null==(a=c.totalBudgetW)?void 0:a.condition}),(0,n.jsx)(f,{k:"planning allowance",v:"".concat(l.planningAllowanceW," W"),note:"ours — ".concat(l.planningAllowancePct,"% on the load, not the manufacturer's figure")})]}),l.reasons.length>0?(0,n.jsx)("ul",{className:"mt-2.5 space-y-1",children:l.reasons.map((e,t)=>(0,n.jsxs)("li",{className:"flex gap-2 text-[11.5px] leading-[1.45] text-sc-ink-800",children:[(0,n.jsx)("span",{className:"mt-[6px] inline-block h-[3px] w-[3px] shrink-0 rounded-full bg-sc-ink-700","aria-hidden":!0}),(0,n.jsx)("span",{children:e})]},t))}):null,l.assumptionsUsed.length>0?(0,n.jsxs)("p",{className:"mt-2 border-l-2 border-sc-gold-500/50 pl-2.5 text-[11.5px] leading-[1.45] text-sc-ink-700",children:["Leans on: ",l.assumptionsUsed.join(" \xb7 ")]}):null,c.oversubscribed?(0,n.jsxs)("p",{className:"mt-2 text-[11.5px] leading-[1.45] text-sc-ink-700",children:["This chassis cannot power every PoE port at its published per-port maximum",null!==c.averageWattsPerPort?" — the pool averages ".concat(c.averageWattsPerPort," W per powered port"):"",". That is how the product is specified, not a fault."]}):null,c.highPowerPortScope?(0,n.jsxs)("p",{className:"mt-2 text-[11.5px] leading-[1.45] text-sc-ink-700",children:["Port scope: ",String(c.highPowerPortScope.value)]}):null,(0,n.jsxs)("p",{className:"mt-2.5 border-t border-sc-stone-300 pt-2 text-[11.5px] leading-[1.45] text-sc-ink-700",children:[c.evidenceLine,c.sourceUrl?(0,n.jsxs)(n.Fragment,{children:[" ",(0,n.jsx)("a",{href:c.sourceUrl,target:"_blank",rel:"noopener noreferrer",className:"text-sc-copper-700 underline-offset-2 hover:underline focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-sc-gold-500/80",children:"Source"})]}):null]}),(0,n.jsx)("p",{className:"mt-1.5 text-[11px] leading-[1.4] text-sc-ink-700",children:"A capability check, not a compatibility test — no manufacturer has tested these devices on this switch and published the result."})]}):(0,n.jsx)("p",{className:"mt-2 text-[11.5px] leading-[1.45] text-sc-ink-700",children:"The answer above sizes this load against an engineering tier. Name a switch the repository holds published figures for and the load is checked against that manufacturer’s own port count, per-port ceiling and aggregate pool instead."})]})}var v=a(47882),w=a(69532),y=a(22027),k=a(21680),j=a(97201),N=a(67021),E=a(98795),C=a(23650),S=a(77768);let W=(0,C.h3)("standard"),P=c.hF.map(e=>e.key),A=new Set(P),M=["fixedcam","ircam","ptzcam","ptzheat"],D=c.tr.camera;function F(e){return e.replace(/^IEEE\s+/,"")}function T(){return c.hF.reduce((e,t)=>
1({...e,[t.key]:4*("wifi6"===t.key||"fixedcam"===t.key)}),{})}function L(e){return P.filter(t=>{var a;return(null!=(a=e[t])?a:0)>0}).map(t=>{var a;return"".concat(t,":").concat(Math.min(500,Math.max(0,Math.round(null!=(a=e[t])?a:0))))}).join(",")}function I(e){if(null==e||""===e)return T();let t=P.reduce((e,t)=>({...e,[t]:0}),{});for(let a of e.split(",")){let[e,n]=a.split(":");if(!A.has(e))continue;let s=Number(n);Number.isFinite(s)&&(t[e]=Math.min(500,Math.max(0,Math.round(s))))}return t}let O={d:L(T()),cam:""},R=["d","cam"],z={cctv:"Seeded from the CCTV Coverage Calculator — interior cameras counted as indoor fixed, perimeter cameras as IR / outdoor. That split is an assumption the sending tool cannot verify, and the draw is the category planning figure rather than a chosen model's datasheet value. PTZ is not inferred; it stays your own counter below. Adjust the mix."};function U(e){let t=(0,j.bU)(e),a={},n=(e,t)=>{a.counts||(a.counts=P.reduce((e,t)=>({...e,[t]:0}),{})),a.counts[e]=t},s=e=>Math.min(500,Math.max(0,Math.round(e))),o=t.cameraCount;if(o&&"number"==typeof o.value){let e=s(o.value),i=t.cameraPoeClass,r="string"==typeof(null==i?void 0:i.value)?(0,c.BM)(i.value,M):null,l=null!=r?r:D;n(l,e),a.cameraKey=l,a.cameraPoeClass=r?i.value:void 0,a.camera={...o,value:e};let d=t.cameraDrawW;r&&"number"==typeof(null==d?void 0:d.value)&&(0,c.mj)(d.value)===i.value&&(a.cameraDrawW=d.value,a.cameraDraw=d),e!==o.value&&(a.cameraNote="This counter stops at ".concat(500,", so ").concat(o.value.toLocaleString("en-IN")," cameras arrived here as ").concat(e.toLocaleString("en-IN"),". An estate that size is several closets, not one switch."))}let i=t.poeDeviceCount;if(i&&"number"==typeof i.value){var r;let e=t.apStandard,o="string"==typeof(null==e?void 0:e.value)?(r=e.value,Object.prototype.hasOwnProperty.call(d.z3,r)&&A.has(r)?r:null):null;if(o){let e=s(i.value);n(o,e),a.aps={...i,value:e},a.apsKey=o,e!==i.value&&(a.apsNote="This counter stops at ".concat(500,", so ").concat(i.value.toLocaleString("en-IN")," access points arrived here as ").concat(e.toLocaleString("en-IN"),". An air plan that size is several distribution closets, and the switch tier below is sized for one."))}else a.unplacedDevices=i}let l=t.storageTb;return l&&"number"==typeof l.value&&(a.storage=l),a}function B(){var e,t,a,o,d,g,f,C,S,W,P,A,B;let{initial:H,switchCandidates:q=[],cameraOptions:V=[]}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}
1,[K,Q]=(0,s.useState)(()=>(null==H?void 0:H.d)!=null?I(H.d):T()),[Y,G]=(0,s.useState)(null),[J,$]=(0,s.useState)(null),[ee,et]=(0,s.useState)(null),[ea,en]=(0,s.useState)(D),[es,eo]=(0,s.useState)(null),[ei,er]=(0,s.useState)(null),[el,ec]=(0,s.useState)(null),[ed,eu]=(0,s.useState)(null),[eh,ep]=(0,s.useState)(null),[em,ex]=(0,s.useState)(null),[eg,ef]=(0,s.useState)(null),[eb,ev]=(0,s.useState)(()=>(null==H?void 0:H.cam)!=null&&V.some(e=>e.slug===H.cam)?H.cam:""),ew=(0,s.useMemo)(()=>{var e;return null!=(e=V.find(e=>e.slug===eb))?e:null},[V,eb]),ey=(0,s.useMemo)(()=>{if(!ew)return null;let e=ew.requiredClass?(0,c.BM)(ew.requiredClass,M):null;return null!=e?e:D},[ew]),ek=(0,s.useMemo)(()=>ew&&ey&&"number"==typeof ew.publishedMaxW?{[ey]:ew.publishedMaxW}:J&&null!==ei?{[ea]:ei}:{},[ew,ey,J,ei,ea]),ej=(0,s.useMemo)(()=>(0,c.oH)(K,ek),[K,ek]),[eN,eE]=(0,s.useState)(""),eC=(0,s.useMemo)(()=>c.hF.filter(e=>{var t;return(null!=(t=K[e.key])?t:0)>0}).map(e=>{var t;let a=null!=(t=K[e.key])?t:0,n=ek[e.key],s=(0,c.mj)(null!=n?n:e.watts);return void 0!==n?{key:e.key,label:e.label,quantity:a,publishedWatts:n,requiredClass:s}:{key:e.key,label:e.label,quantity:a,assumedWatts:e.watts,assumptionLabel:"".concat(e.watts," W planning figure for ").concat(e.label.toLowerCase()),requiredClass:s}}),[K,ek]),eS=(0,s.useMemo)(()=>{if(!eN)return null;let e=q.find(e=>e.slug===eN);return e&&0!==eC.length?(0,v.Xt)(e.record,eC):null},[eN,q,eC]),eW=F((0,c.y8)(ej.maxDeviceW)),eP=ej.portCapacity.ports,eA=null===ej.switchCount?"chassis count unresolved — see the note":1===ej.switchCount?"one chassis":"".concat(ej.switchCount," chassis"),{markResult:eM}=(0,k.K)({slug:"poe-budget",category:"networking",title:"PoE Budget Calculator"}),eD=(0,s.useRef)(!1);function eF(){eD.current=!0}(0,s.useEffect)(()=>{eD.current&&eM()},[K,eM]);let eT=(0,s.useRef)(!1),eL=(0,s.useMemo)(()=>V.map(e=>e.slug),[V]);(0,s.useEffect)(()=>{if(eT.current)return;if(!(0,N.MP)(window.location.search,R)){var e,t,a;let n=U(window.location.search);n.counts&&Q(n.counts),n.camera&&$(n.camera),n.cameraNote&&et(n.cameraNote),en(null!=(e=n.cameraKey)?e:D),eo(null!=(t=n.cameraPoeClass)?t:null),er(null!=(a=n.cameraDrawW)?a:null),n.aps&&ec(n.aps),n.apsKey&&eu(n.apsKey),n.apsNote&&ep(n.apsNote),n.unplacedDevices&&ex(n.unplacedDevices),n.storage&&ef(n.storage),eT.current=!0;return}let n=new URLSearchParams(window.location.search);Q(I(n.get("d"))),ev((0,N.eh)(n.get("cam"),{allowed:eL,fallback:""}));let s=n.get("from");G(null!=s&&Object.prototype.hasOwnProperty.call(z,s)?z[s]:null),eT.current=!0},[eL]);let eI=M.reduce((e,t)=>{var a;return e+(null!=(a=K[t])?a:0)},0),eO=(0,s.useMemo)(()=>{let e=ej.totalDevices>0;return(0,j.c7)("network-calculator",e?{poeDeviceCount:ej.totalDevices,poeLoadW:ej.deviceLoad,cameraCount:eI}:{},"poe-budget")},[ej.totalDevices,ej.deviceLoad,eI]),eR=(0,s.useMemo)(()=>(0,N.Xe)("/tools/poe-budget",{d:L(K),cam:eb},O),[K,eb]),ez=(0,s.useRef)((0,N.sg)(e=>{try{window.history.replaceState({},"",e)}catch(e){}},250));(0,s.useEffect)(()=>{eT.current&&"/tools/poe-budget"===window.location.pathname&&ez.current(eR)},[eR]);let eU=null!=(a=null==(e=c.hF.find(e=>e.key===ea))?void 0:e.label)?a:"camera",eB=ey&&null!=(o=c.hF.find(e=>e.key===ey))?o:null,e_=null!=(d=null==eB?void 0:eB.label)?d:"camera",eH=null!=(g=null==eB?void 0:eB.watts)?g:0,eX=[{k:"draw basis",v:"EXPECTED draw at the powered device — a planning figure for the family, not the datasheet maximum of any one model and not a measurement"},...J?[null!==ei?{k:"carried camera draw",v:"MANUFACTURER MAX — ".concat(ei," W, the maximum published for the camera model chosen in the sending tool. It is budgeted in place of the EXPECTED family figure on the ").concat(eU," row; every other row is still an expected figure. Edit that counter and this reverts to the family figure.")}:{k:"carried camera draw",v:"EXPECTED — no usable published maximum travelled with the carried count, so the ".concat(eU," row is budgeted at this table's expected figure for the family, exactly as an uncarried row is.")}]:[],...ew?[void 0!==ew.publishedMaxW?{k:"named camera draw",v:"MANUFACTURER MAX — ".concat(ew.publishedMaxW," W, the maximum published for ").concat(ew.label,". It is budgeted in place of the EXPECTED family figure on the ").concat(e_," row; every other row is still an expected figure. ").concat(ew.powerEvidenceLine)}:{k:"named camera draw",v:"EXPECTED — ".concat(ew.label," publishes no maximum draw, so the ").concat(e_," row is budgeted at this table's expected ").concat(eH," W figure for the family, exactly as an unnamed row is. Naming the model did not supply a wattage and this total does not pretend it did.")}]:[],{k:"device counts",v:"USER INPUT — whatever you entered on the left"},{k:"switch pool",v:"MANUFACTURER MAX — ".concat(ej.tier.budget," W published \xb7 ").concat(ej.tier.psu)},{k:"port ceiling",v:"MANUFACTURER MAX — ".concat(c._w[ej.tierIdx]," W to the device on one port at this tier (IEEE PD ceiling)")},{k:"port count",v:null===eP?"NOT PUBLISHED — the reference chassis at this tier publishes no ".concat(eW," port count, so the number of chassis is not resolved here"):"".concat(ej.portCapacity.published?"MANUFACTURER MAX":"PUBLISHED FLOOR"," — ").concat(eP," of the ").concat(ej.tier.ports," ports can power ").concat(eW).concat(ej.portCapacity.published?"":" (the floor its heavier-class ports guarantee, not a published figure)",". Ports and watts are independent: this is what one chassis can terminate, whatever the pool")},{k:"class source",v:"IEEE 802.3 af / at / bt class tables"},{k:"channel loss",v:"Not modelled — the spare below has to cover it"},{k:"cabling",v:"TIA/EIA-568-C \xb7 ISO/IEC 11801 Cat6A"},{k:"headroom",v:"".concat(c.p6,"% — fixed, and not adjustable in this tool")}],eq=["Premium consultation \xb7 ".concat(ej.totalDevices," device").concat(1===ej.totalDevices?"":"s"),"".concat(ej.tier.label," — a ").concat(ej.deviceLoad," W device load + ").concat(c.p6,"% headroom lands at ").concat(ej.withHeadroom," W per closet."),"","Recommended budget: ".concat(ej.withHeadroom," W (").concat(ej.deviceLoad," W expected draw + ").concat(c.p6,"% headroom)"),"Devices counted: ".concat(ej.totalDevices," (your counts, across all PoE classes)"),...J?["Carried in: ".concat(J.value," ").concat(null!=(f=J.unit)?f:""," — ").concat((0,j.uN)(J)).replace(/\s+/g," ")]:[],...el?["Carried in: ".concat(el.value," ").concat(null!=(C=el.unit)?C:""," — ").concat((0,j.uN)(el)," Counted on the ").concat(null!=(S=null==(t=c.hF.find(e=>e.key===ed))?void 0:t.label)?S:"access point"," row; the draw beside it is this table's figure, not a carried one.").replace(/\s+/g," ")]:[],...em?["Carried in, not placed: ".concat(em.value," ").concat(null!=(W=em.unit)?W:""," — ").concat((0,j.uN)(em)," No device family travelled with it, so no counter was pre-filled.").replace(/\s+/g," ")]:[],...eg?["Carried in: ".concat(eg.value," ").concat(null!=(P=eg.unit)?P:""," — ").concat((0,j.uN)(eg)," Context only; storage does not size a PoE pool.").replace(/\s+/g," ")]:[],...J&&null!==ei?["Carried camera draw: ".concat(ei," W published maximum for the chosen model — budgeted in place of the expected family figure on the ").concat(eU," row.")]:[],...ew?[void 0!==ew.publishedMaxW?"Named camera: ".concat(ew.label," — ").concat(ew.publishedMaxW," W published maximum, budgeted in place of the expected family figure on the ").concat(e_,' row. Published as: "').concat(null!=(A=ew.publishedMaxRaw)?A:"".concat(ew.publishedMaxW," W"),'". ').concat(ew.powerEvidenceLine):"Named camera: ".concat(ew.label," — publishes no maximum draw, so the ").concat(e_," row is budgeted at this table's expected ").concat(eH," W family figure. That part of the load is an assumption, not a manufacturer figure.")]:[],"Largest single device: ".concat(ej.maxDeviceW," W — needs ").concat((0,c.y8)(ej.maxDeviceW)," ports"),"Switch tier: Tier ".concat(ej.tierIdx+1," (").concat(ej.tier.label,")"),null===eP?"Powered ports: not resolved — no chassis at this tier publishes a ".concat(eW," port count"):"Powered ports: ".concat(eP," ").concat(eW," ports per chassis, ").concat(ej.tier.ports," ports on the chassis — ").concat(eA," for ").concat(ej.totalDevices," device").concat(1===ej.totalDevices?"":"s"),"Reference SKU class: ".concat(ej.tier.sku," (engineering reference, not a quote)"),"","Assumptions:",...eX.map(e=>"- ".concat(e.k,": ").concat(e.v)),...ej.warnings.length?["","Caveats:",...ej.warnings.map(e=>"- ".concat(e))]:[],"","Reopen this result: ".concat(E._P.url).concat(eR),"","Indicative planning estimate — TechnoGuru. Final design follows a 
1site survey; pricing is prepared in writing after review, not a quote."].join("\n");return(0,n.jsx)(u.tC,{ariaLabel:"PoE budget calculator",kicker:"— PoE budget \xb7 IEEE 802.3 af / at / bt",title:(0,n.jsxs)(n.Fragment,{children:["Count what the switch ",(0,n.jsx)("em",{className:"font-light italic text-sc-gold-500",children:"must power today."})]}),lede:(0,n.jsxs)(n.Fragment,{children:["Aggregates per-device wattage per IEEE 802.3bt Type 1–4 class tables and adds ",c.p6,"% spare headroom for a five-year refresh. A planning figure, not a procurement spec."]}),visualAspect:"20/9",visualCaption:"The power pool is shared across ports — it is not a per-port allowance.",confidence:"indicative",changesThis:["Exact device models and their datasheet PoE class","Cable-run lengths near the 100 m limit (PSE-to-PD derating)","Device growth across the five-year refresh","Which physical ports the rack schedule allocates — the count is modelled, the plan is not"],inputs:(0,n.jsxs)("div",{className:"space-y-4",children:[Y?(0,n.jsx)("p",{className:"border border-sc-gold-500/40 bg-sc-gold-500/[0.07] px-3 py-2 text-[11.5px] leading-[1.5] text-sc-ink-800",children:Y}):null,eg?(0,n.jsx)(h.I,{traced:eg,onClear:()=>ef(null),note:"Context, not an input — recording volume does not size a PoE pool. It rides along so the storage plan and the switch plan stay one conversation."}):null,em?(0,n.jsx)(h.I,{id:"poe-carried-unplaced-devices",traced:em,onClear:()=>ex(null),note:"Nothing has been pre-filled below. The count arrived without the device family it refers to, and every family in this table draws a different wattage — so choosing a row for you would be choosing a wattage for you. Enter the count against the row that matches your hardware."}):null,(0,n.jsx)(_,{options:V,selectedSlug:eb,onChange:e=>{eF(),function(e){var t;ev(e),$(null),et(null),eo(null),er(null),en(D);let a=V.find(t=>t.slug===e);if(!a)return;let n=null!=(t=a.requiredClass?(0,c.BM)(a.requiredClass,M):null)?t:D;Q(e=>{var t;return(null!=(t=e[n])?t:0)>0?e:{...e,[n]:1}})}(e)},rowLabel:e_,rowExpectedW:eH}),(0,n.jsxs)("div",{children:[(0,n.jsx)("p",{className:"font-mono text-[11px] uppercase tracking-[0.22em] text-sc-gold-600",children:"Device counts"}),(0,n.jsx)("p",{className:"mt-1 font-mono text-[11px] uppercase tracking-[0.2em] text-sc-ink-700",children:"IEEE class \xb7 expected draw at the device \xb7 your count"})]}),(0,n.jsx)("div",{className:"divide-y divide-sc-stone-300/70 border-y border-sc-stone-300/70",children:c.hF.map(e=>{var t;let a=J&&e.key===ea?{chipId:"poe-carried-camera-count",traced:J,note:(0,n.jsxs)(n.Fragment,{children:[ee?"".concat(ee," "):"",null!==ei?(0,n.jsx)(n.Fragment,{children:"The sending tool carried the camera count, the chosen model’s PoE family and that model’s own published maximum draw — so the count sits on the lightest row here that can power it, and the row is budgeted at the manufacturer’s figure instead of this table’s expected figure for the family. Edit the counter and the published figure is dropped with it, because from then on the count is yours. Every other counter starts at zero."}):es?(0,n.jsx)(n.Fragment,{children:"The sending tool carried the camera count and the chosen model’s PoE family, so the count sits on the lightest row here that can power it rather than on a default. No usable maximum draw travelled with it, so the wattage beside it is still this table’s expected figure for the family, not one that travelled. Every other counter starts at zero."}):(0,n.jsx)(n.Fragment,{children:"The chosen camera record publishes no maximum draw, so no PoE family travelled with the count. It sits on this row — the conservative of the two common camera families. PTZ is never inferred. Every other counter starts at zero."})]}),clear:()=>{$(null),et(null),eo(null),er(null),en(D)}}:el&&e.key===ed?{chipId:"poe-carried-ap-count",traced:el,note:(0,n.jsxs)(n.Fragment,{children:[eh?"".concat(eh," "):"","The sending tool carried the AP count and the AP generation, not a wattage — so the count sits on the row for that generation and the draw beside it is this table’s own figure, not one that travelled. Every other counter starts at zero."]}),clear:()=>{ec(null),ep(null)}}:null;return(0,n.jsx)(X,{label:e.label,hint:e.hint,poeClass:e.poeClass,watts:(0,c._F)(e,ek),drawIsPublishedMax:Object.prototype.hasOwnProperty.call(ek,e.key)&&(0,c._F)(e,ek)===ek[e.key],count:null!=(t=K[e.key])?t:0,describedById:null==a?void 0:a.chipId,carried:a?(0,n.jsx)(h.I,{id:a.chipId,traced:a.traced,onClear:a.clear,note:a.note}):null,onChange:t=>{eF(),a&&a.clear(),Q(a=>({...a,[e.key]:t}))}},e.key)})}),(0,n.jsx)("p",{className:"font-mono text-[11px] uppercase tracking-[0.2em] text-sc-ink-700",children:"IEEE 802.3 PoE families \xb7 af \xb7 at \xb7 bt — the class is what goes in the switch spec"})]}),visual:(0,n.jsx)(Z,{counts:K,exactDraws:ek,deviceLoad:ej.deviceLoad,withHeadroom:ej.withHeadroom,tierBudget:ej.tier.budget,tierLabel:ej.tier.label,totalDevices:ej.totalDevices,chassisPorts:ej.tier.ports,poeCapablePorts:null!=(B=ej.tier.poePorts.at)?B:ej.tier.ports,classCapablePorts:eP,portClassLabel:eW,chassisCount:ej.switchCount}),mobileAnswer:"".concat(ej.withHeadroom," W budget \xb7 ").concat(ej.tier.label," \xb7 ").concat(ej.totalDevices," device").concat(1===ej.totalDevices?"":"s"," on ").concat(eA),headline:(0,n.jsxs)("div",{children:[(0,n.jsx)("div",{role:"status","aria-live":"polite",className:"sr-only",children:"For ".concat(ej.totalDevices," PoE device").concat(1===ej.totalDevices?"":"s"," at an expected draw of about ").concat(ej.deviceLoad," W, the recommended switch is ").concat(ej.tier.label,", sized to roughly ").concat(ej.withHeadroom," W per closet including ").concat(c.p6,"% headroom.").concat(ej.maxDeviceW>0?" The hungriest single device draws ".concat(ej.maxDeviceW," W and needs ").concat((0,c.y8)(ej.maxDeviceW)," ports."):"").concat(null===eP?" The port count at that class is not published for this chassis, so the number of switches is not resolved.":" One chassis at that tier carries ".concat(eP," ").concat((0,c.y8)(ej.maxDeviceW)," port").concat(1===eP?"":"s",", so the estate takes ").concat(eA,".")).concat(null===ew?"":void 0!==ew.publishedMaxW?" The ".concat(e_," row is budgeted at ").concat(ew.publishedMaxW," W, the maximum published for ").concat(ew.label,", rather than at this table's expected figure."):" ".concat(ew.label," is named but publishes no maximum draw, so the ").concat(e_," row is still budgeted at this table's expected ").concat(eH," W figure for the family."))}),(0,n.jsxs)("div",{className:"grid gap-6 sm:grid-cols-2 lg:grid-cols-4",children:[(0,n.jsx)(u.g1,{label:"Recommended budget",value:"".concat(ej.withHeadroom," W"),unit:"".concat(ej.deviceLoad," W expected draw + ").concat(c.p6,"% headroom"),accent:!0}),(0,n.jsx)(u.g1,{label:"Switch tier",value:null!==ej.switchCount&&ej.switchCount>1?"Tier ".concat(ej.tierIdx+1," \xd7 ").concat(ej.switchCount):"Tier ".concat(ej.tierIdx+1),unit:"".concat(ej.tier.label," \xb7 ").concat(ej.tier.budget," W published pool \xb7 ").concat(eA)}),(0,n.jsx)(u.g1,{label:"Devices counted",value:ej.totalDevices,unit:null===eP?"your counts — no ".concat(eW," port count is published for this chassis"):"your counts \xb7 ".concat(eP," ").concat(eW," port").concat(1===eP?"":"s"," per chassis")}),(0,n.jsx)(u.g1,{label:"Largest single device",value:"".concat(ej.maxDeviceW," W"),unit:ej.maxDeviceW>0?"".concat((0,c.y8)(ej.maxDeviceW)," — sets the per-port floor"):"sets the per-port class floor"})]})]}),reviewHandoff:{slug:"poe-budget",shareUrl:eR},whatsappContext:["".concat(ej.withHeadroom," W PoE pool recommended — ").concat(ej.deviceLoad," W expected draw + ").concat(c.p6,"% headroom"),"switch tier ".concat(ej.tier.label," — ").concat(eA),"".concat(ej.totalDevices," PoE device").concat(1===ej.totalDevices?"":"s"," counted").concat(null===eP?"":", ".concat(eP," ").concat(eW," ports per chassis")),ej.maxDeviceW>0?"largest single device ".concat(ej.maxDeviceW," W — needs ").concat((0,c.y8)(ej.maxDeviceW)," ports"):""],resultActions:(0,n.jsx)(w.A,{url:eR,label:"Copy this PoE budget link",
1note:"A planning link that reopens this exact configuration — not a quote.",analytics:{toolSlug:"poe-budget",toolCategory:"networking"}}),spec:(0,n.jsxs)("dl",{children:[(0,n.jsx)(u.g3,{k:"sku class",v:"".concat(ej.tier.sku," — engineering reference, not a quote")}),(0,n.jsx)(u.g3,{k:"powered ports",v:null===eP?"Not published for this chassis at ".concat(eW," — confirm the powered-port count on the SKU data sheet before the port schedule is drawn"):"".concat(eP," of ").concat(ej.tier.ports," ports power ").concat(eW," on one chassis \xb7 ").concat(ej.totalDevices," device").concat(1===ej.totalDevices?"":"s"," counted \xb7 ").concat(eA)}),(0,n.jsx)(u.g3,{k:"shared pool",v:"Budget is a shared pool across ports, not a per-port figure"}),(0,n.jsx)(b,{candidates:q,selectedSlug:eN,onSelect:eE,fit:eS}),(0,n.jsxs)("details",{className:"group border-b border-sc-stone-300/70 py-2.5",children:[(0,n.jsxs)("summary",{className:"flex min-h-[44px] cursor-pointer list-none items-center font-mono text-[11px] uppercase tracking-[0.22em] text-sc-ink-700 transition hover:text-sc-copper-700 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-sc-gold-500/80 [&::-webkit-details-marker]:hidden",children:[(0,n.jsxs)("span",{className:"group-open:hidden",children:["+ Model assumptions (",eX.length,")"]}),(0,n.jsx)("span",{className:"hidden group-open:inline",children:"− Model assumptions"})]}),(0,n.jsx)("div",{className:"mt-2",children:eX.map(e=>(0,n.jsx)(u.g3,{k:e.k,v:e.v},e.k))})]}),(0,n.jsx)("p",{className:"mt-3 text-[12px] italic leading-[1.5] text-sc-ink-700",children:"Indicative — class wattages per IEEE 802.3 af / at / bt tables; a switch PoE budget is a shared pool across ports, not a per-port figure. The wattages counted here are what each device draws at the powered end; a switch pool is quoted at the sourcing end, and the gap between them — plus cable loss over a long run — is not modelled and has to come out of the spare shown above. Tier budgets assume the power supplies named beside them; several of those chassis reach the stated pool only when both supply bays are populated. Production designs ship with a per-port budget allocation spreadsheet."})]}),warnings:ej.warnings.length>0?(0,n.jsxs)("div",{className:"space-y-2",children:[(0,n.jsx)("p",{className:"font-mono text-[11px] uppercase tracking-[0.22em] text-sc-ink-700",children:"Engineering notes"}),ej.warnings.map((e,t)=>(0,n.jsxs)(u.QT,{level:"warn",children:[(0,n.jsx)(r.A,{className:"mt-0.5 h-3.5 w-3.5 shrink-0","aria-hidden":!0}),(0,n.jsx)("p",{children:e})]},t))]}):null,source:(0,n.jsxs)("div",{className:"space-y-3 border-t border-sc-stone-300 pt-3",children:[(0,n.jsx)(w.A,{url:eR,label:"Copy this PoE budget link",note:"A planning link that reopens this exact configuration — not a quote.",analytics:{toolSlug:"poe-budget",toolCategory:"networking"}}),(0,n.jsx)(x.CopyResultButton,{text:eq,className:"border border-sc-stone-300 bg-sc-ivory-50 px-3 py-2 font-mono text-[11px] uppercase tracking-[0.2em] text-sc-ink-800 transition hover:border-sc-copper-600 hover:text-sc-copper-700"}),(0,n.jsx)(p.Xl,{handoff:eO,toSlug:"network-calculator",onNavigate:function(){try{(0,y.u4)("cta_click",{cta_id:"cross-tool-continue-poe-budget-to-network-calculator",cta_label:"Continue into the Network & PoE Calculator",cta_context:"cross_tool_continue",origin_path:"/tools/poe-budget",target_path:"/tools/network-calculator"})}catch(e){}},arrivalNotes:{poeLoadW:e=>(0,n.jsxs)(n.Fragment,{children:["The"," ","number"==typeof e.value?(0,j.ZO)(e.value):e.value," ","W carried is the expected device draw, before this tool’s"," ",c.p6,"% headroom — the network calculator’s own PoE figure carries none, so the two arrive on the same footing."]})}}),(0,n.jsx)(m.WD,{fromSlug:"poe-budget",shareUrl:eR,ready:ej.totalDevices>0,figures:{poeDeviceCount:ej.totalDevices,poeLoadW:ej.deviceLoad,cameraCount:eI}}),(0,n.jsxs)(i(),{href:"/tools/cctv-calculator",className:"inline-flex items-center gap-1.5 text-[12.5px] italic text-sc-ink-800 transition-colors hover:text-sc-copper-700",children:["Size the camera estate first",(0,n.jsx)(l.A,{className:"h-3 w-3 text-sc-gold-600","aria-hidden":!0})]})]})})}function _(e){var t,a;let{options:s,selectedSlug:o,onChange:i,rowLabel:r,rowExpectedW:l}=e;if(0===s.length)return null;let d=null!=(t=s.find(e=>
1e.slug===o))?t:null,u=s.filter(e=>void 0!==e.publishedMaxW).length,h=s.length-u,p=[];for(let e of s){let t=p[p.length-1];t&&t.brand===e.brand?t.items.push(e):p.push({brand:e.brand,items:[e]})}return(0,n.jsxs)("div",{className:"border border-sc-stone-300 bg-sc-paper-100 p-3",children:[(0,n.jsxs)("label",{className:"block",children:[(0,n.jsxs)("span",{className:"mb-1 flex items-center justify-between gap-2",children:[(0,n.jsx)("span",{className:"font-mono text-[10.5px] uppercase tracking-[0.18em] text-sc-gold-600",children:"Budget a named camera model"}),(0,n.jsx)("span",{className:"font-mono text-[10.5px] uppercase tracking-[0.16em] text-sc-ink-700",children:"optional"})]}),(0,n.jsxs)("select",{"aria-label":"Budget a named camera model instead of a category figure",value:o,onChange:e=>i(e.target.value),className:"min-h-[44px] w-full rounded-md border border-sc-stone-300 bg-sc-ivory-50 px-2.5 text-[13.5px] text-sc-ink-900 outline-none transition focus:border-sc-copper-600 focus:ring-2 focus:ring-sc-gold-500/40",children:[(0,n.jsx)("option",{value:"",children:"Category figures only (no named model)"}),p.map(e=>(0,n.jsx)("optgroup",{label:e.brand,children:e.items.map(e=>(0,n.jsxs)("option",{value:e.slug,children:[e.label,void 0!==e.publishedMaxW?" — ".concat(e.publishedMaxW," W published"):" — no published draw"]},e.slug))},e.brand))]})]}),d?(0,n.jsxs)("div",{className:"mt-2.5",children:[void 0!==d.publishedMaxW?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("p",{className:"flex items-start gap-2 border border-sc-olive-400/60 bg-sc-olive-400/10 px-2.5 py-2 text-[12.5px] leading-[1.45] text-sc-forest-900",children:[(0,n.jsx)("span",{className:"mt-[5px] inline-block h-[7px] w-[7px] shrink-0 rounded-full bg-sc-olive-400","aria-hidden":!0}),(0,n.jsxs)("span",{children:[(0,n.jsxs)("strong",{className:"font-medium",children:[d.publishedMaxW," W published maximum"]})," — ",d.label,", budgeted on the ",r.toLowerCase()," row in place of this table’s ",l," W expected figure."]})]}),d.publishedMaxRaw?(0,n.jsxs)("p",{className:"mt-2 border-l-2 border-sc-gold-500/50 pl-2.5 font-mono text-[11px] leading-[1.45] text-sc-ink-800",children:["“",d.publishedMaxRaw,"”"]}):null]}):(0,n.jsxs)("p",{className:"flex items-start gap-2 border border-sc-gold-500/55 bg-sc-gold-500/10 px-2.5 py-2 text-[12.5px] leading-[1.45] text-sc-ink-900",children:[(0,n.jsx)("span",{className:"mt-[5px] inline-block h-[7px] w-[7px] shrink-0 rounded-full bg-sc-gold-500","aria-hidden":!0}),(0,n.jsxs)("span",{children:[(0,n.jsx)("strong",{className:"font-medium",children:"No published maximum draw"})," — ",d.label,". The ",r.toLowerCase()," row stays at this table’s ",l," W expected figure, which is a planning assumption for the family and not a figure for this model. A switch check below can reach “conditional” at best while that is true.",d.requiredClass?" Its published PoE standard does establish the IEEE family, and the row it lands on follows that — the family is known, the wattage is not.":""]})]}),(0,n.jsxs)("dl",{className:"mt-2.5 grid grid-cols-2 gap-x-4 gap-y-2",children:[(0,n.jsxs)("div",{className:"min-w-0",children:[(0,n.jsx)("dt",{className:"font-mono text-[10.5px] uppercase tracking-[0.16em] text-sc-ink-700",children:"IEEE family"}),(0,n.jsx)("dd",{className:"mt-0.5 text-[14px] leading-tight text-sc-ink-900",children:d.requiredClass?F((0,c.y8)(H[d.requiredClass])):"not established"}),(0,n.jsx)("p",{className:"mt-0.5 text-[11px] leading-[1.4] text-sc-ink-700",children:d.requiredClass?"higher of the published standard and the family the published draw implies":"neither a standard nor a draw is published for this model"})]}),(0,n.jsxs)("div",{className:"min-w-0",children:[(0,n.jsx)("dt",{className:"font-mono text-[10.5px] uppercase tracking-[0.16em] text-sc-ink-700",children:"published standard"}),(0,n.jsx)("dd",{className:"mt-0.5 text-[14px] leading-tight text-sc-ink-900",children:null!=(a=d.poeStandardRaw)?a:"not published"})]})]}),(0,n.jsxs)("p",{className:"mt-2.5 border-t border-sc-stone-300 pt-2 text-[11.5px] leading-[1.45] text-sc-ink-700",children:[d.powerEvidenceLine,d.manufacturerVerified?"":" The profile itself is cited to a source that does not substantiate this exact model, so confirm any figure here against the manufacturer's datasheet."]}),(0,n.jsx)("p",{className:"mt-1.5 text-[11px] leading-[1.4] text-sc-ink-700",children:"One named model at a time. Every other row stays at its expected family figure — this names what the camera row IS, not how many there are, and the count beside it stays yours to set."})]}):(0,n.jsxs)("p",{className:"mt-2 text-[11.5px] leading-[1.45] text-sc-ink-700",children:["The camera rows below are budgeted at an expected draw for the family. Name a model and the row it belongs on is budgeted at that manufacturer’s own published maximum instead — which also moves the IEEE class floor and the powered-port count, not just the pool."," ",s.length.toLocaleStr
1ing("en-IN")," models offered;"," ",u.toLocaleString("en-IN")," publish a maximum draw and"," ",h.toLocaleString("en-IN")," do not."]})]})}let H={af:10,at:20,bt60:40,bt90:60};function X(e){let{label:t,hint:a,poeClass:s,watts:o,count:i,onChange:r,carried:l,describedById:c,drawIsPublishedMax:d}=e;return(0,n.jsxs)("div",{className:"py-2.5",children:[(0,n.jsxs)("div",{className:"flex items-center justify-between gap-3",children:[(0,n.jsxs)("div",{className:"min-w-0",children:[(0,n.jsx)("p",{className:"text-[13px] font-medium leading-tight text-sc-ink-900",children:t}),(0,n.jsxs)("p",{className:"mt-0.5 flex flex-wrap items-center gap-x-1.5 font-mono text-[11px] uppercase tracking-[0.14em] text-sc-ink-700",children:[(0,n.jsx)("span",{className:"border border-sc-stone-300 bg-sc-ivory-50 px-1 py-px text-sc-ink-800",children:F(s)}),(0,n.jsxs)("span",{children:[o," W ",d?"published max":"expected"]}),(0,n.jsx)("span",{"aria-hidden":!0,children:"\xb7"}),(0,n.jsx)("span",{className:"min-w-0",children:a})]})]}),(0,n.jsxs)("div",{className:"flex shrink-0 items-center gap-1.5",children:[(0,n.jsx)("button",{type:"button",onClick:()=>r(Math.max(0,i-1)),className:"flex h-[44px] w-[44px] items-center justify-center border border-sc-stone-300 bg-sc-ivory-50 text-base text-sc-ink-900 transition hover:border-sc-copper-600 hover:text-sc-copper-700 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-sc-gold-500/80","aria-label":"Decrease ".concat(t),children:"−"}),(0,n.jsx)("input",{type:"number",min:0,max:500,"aria-label":"".concat(t," count"),"aria-describedby":c,value:i,onChange:e=>r(Math.max(0,Math.min(500,parseInt(e.target.value||"0",10)))),className:"h-[44px] w-14 border border-sc-stone-300 bg-sc-ivory-50 text-center text-sm tabular-nums text-sc-ink-900 focus:border-sc-copper-600 focus:outline-none focus-visible:ring-2 focus-visible:ring-sc-gold-500/80"}),(0,n.jsx)("button",{type:"button",onClick:()=>r(Math.min(500,i+1)),className:"flex h-[44px] w-[44px] items-center justify-center border border-sc-stone-300 bg-sc-ivory-50 text-base text-sc-ink-900 transition hover:border-sc-copper-600 hover:text-sc-copper-700 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-sc-gold-500/80","aria-label":"Increase ".concat(t),children:"+"})]})]}),l?(0,n.jsx)("div",{className:"mt-2.5",children:l}):null]})}let q=[{max:7,shade:"#D2C7B2"},{max:18,shade:"#A2823A"},{max:32,shade:"#9A6B3F"},{max:1/0,shade:"#0E2218"}],V=24;function K(e){var t;let a=Math.max(1,Math.ceil(e.chassisPorts/V)),n=Math.min(e.chassisPorts,a*V),s=Math.max(0,Math.min(null!=(t=e.classCapablePorts)?t:0,n)),o=Math.max(0,Math.min(e.poeCapablePorts,n));return{rows:a,drawnPorts:n,usablePorts:s,lowerClassPorts:o,overflow:Math.max(0,e.totalDevices-s)}}function Z(e){let{counts:t,exactDraws:a,deviceLoad:s,withHeadroom:o,tierBudget:i,tierLabel:r,totalDevices:l,chassisPorts:d,poeCapablePorts:u,classCapablePorts:h,portClassLabel:p,chassisCount:m}=e,x=e=>{var t;return(null!=(t=q.find(t=>e<=t.max))?t:q[q.length-1]).shade},g=22*V+(V-1)*5,f=(800-g)/2,{rows:b,drawnPorts:v,usablePorts:w,lowerClassPorts:y,overflow:k}=K({chassisPorts:d,poeCapablePorts:u,classCapablePorts:h,totalDevices:l}),j=[];for(let e of[...c.hF].sort((e,t)=>(0,c._F)(t,a)-(0,c._F)(e,a))){var N;let n=null!=(N=t[e.key])?N:0,s=(0,c._F)(e,a);for(let e=0;e<n&&j.length<w;e++)j.push({shade:x(s),watts:s})}let E={width:g,leftSize:W.value,rightSize:W.label},C=92+(0,S.U4)("SWITCH POE POOL \xb7 ONE-CLOSET VIEW",r.toUpperCase(),E),P=22*b+(b-1)*5,A=e=>Math.max(0,Math.min(1,e)),M=A(s/Math.max(i,1)),D=A(o/Math.max(i,1));return(0,n.jsxs)("svg",{viewBox:"0 0 ".concat(800," ").concat(360),preserveAspectRatio:"xMidYMid meet",className:"block h-full w-full",role:"img","aria-label":"One-closet PoE port pool and shared budget bar",children:[(0,n.jsx)("rect",{x:"0",y:"0",width:800,height:360,fill:"#FBF8F1"}),(0,n.jsx)(S.fM,{x:f,y:30,width:g,left:"SWITCH POE POOL \xb7 ONE-CLOSET VIEW",right:r.toUpperCase(),leftSize:W.value,rightSize:W.label,leftFill:"#7C622A",rightFill:"#3E4341"}),(0,n.jsx)("rect",{x:f-18,y:C-34,width:g+36,height:P+62,rx:"6",fill:"#242625"}),(0,n.jsx)("circle",{cx:f-2,cy:C-18,r:"3",fill:"#A2823A"}),(0,n.jsxs)("text",{x:f+10,y:C-14,fontSize:W.micro,fill:"#8F8574",fontFamily:"ui-monospace, monospace",letterSpacing:"1.5",children:[d,"-PORT CHASSIS"]}),(0,n.jsx)("text",{x:f+g,y:C-14,textAnchor:"end",fontSize:W.micro,fill:"#8F8574",fontFamily:"ui-monospace, monospace",letterSpacing:"1.5",children:null===h?"PORTS AT ".concat(p.toUpperCase()," NOT PUBLISHED"):"".concat(Math.min(l,w)," / ").concat(w," PORTS AT ").concat(p.toUpperCase())}),Array.from({length:v},(e,t)=>{let a=Math.floor(t/V),s=f+t%V*27,o=C+27*a,i=j[t],r=t<w,l=t<y;return(0,n.jsxs)("g",{children:[(0,n.jsx)("rect",{x:s,y:o,width:22,height:22,rx:"2.5",fill:i?i.shade:l?"#3A3C3A":"#2C2E2C",stroke:i?"#FBF8F1":l?"#4A4C4A":"#3A3C3A",strokeWidth:i?1:.75,strokeDasharray:i||r?void 0:"2 2",opacity:i?1:r?.55:.32}),i?(0,n.jsx)("rect",{x:s+5,y:o+22-7,width:12,height:"3",rx:"1",fill:"#FBF8F1",opacity:"0.65"}):null]},t)}),k>0?(0,n.jsx)("text",{x:f+g,y:C+P+36,textAnchor:"end",fontSize:W.label,fill:"#E8DCC1",fontFamily:"ui-monospace, monospace",letterSpacing:"1",children:null===m?"+".concat(k," DEVICE").concat(1===k?"":"S"," BEYOND THE PUBLISHED PORTS — COUNT UNRESOLVED"):"+".concat(k," DEVICE").concat(1===k?"":"S"," BEYOND ONE CHASSIS — ").concat(m," CHASSIS NEEDED")}):null,q.map((e,t)=>(0,n.jsxs)("g",{transform:"translate(".concat(f+92*t," ").concat(C+P+14,")"),children:[(0,n.jsx)("rect",{x:"0",y:"-8",width:"10",height:"10",rx:"2",fill:e.shade,stroke:"#FBF8F1",strokeWidth:"1"}),(0,n.jsx)("text",{x:"15",y:"1",fontSize:W.micro,fill:"#D2C7B2",fontFamily:"ui-monospace, monospace",letterSpacing:"1",children:function(e){let t=q[e],a=e>0?q[e-1]:null;return Number.isFinite(t.max)?a?"".concat(a.max+1,"–").concat(t.max," W"):"≤ ".concat(t.max," W"):"> ".concat(a.max," W")}(t)})]},e.shade)),(0,n.jsx)(S.fM,{x:f,y:246,width:g,left:"SHARED POOL \xb7 ".concat(s," W EXPECTED DRAW → ").concat(o," W WITH ").concat(c.p6,"% HEADROOM"),right:"PUBLISHED TIER POOL ".concat(i," W"),leftSize:W.label,rightSize:W.label,stack:"up",leftFill:"#3E4341",rightFill:"#3E4341",leftLetterSpacing:1.5}),(0,n.jsx)("rect",{x:f,y:258,width:g,height:"18",rx:"4",fill:"#E5DED0"}),(0,n.jsx)("rect",{x:f,y:258,width:g*D,height:"18",rx:"4",fill:"#A2823A",opacity:"0.45"}),(0,n.jsx)("rect",{x:f,y:258,width:g*M,height:"18",rx:"4",fill:"#7C622A"}),(0,n.jsx)("line",{x1:f+g*D,x2:f+g*D,y1:253,y2:281,stroke:"#9A6B3F",
1strokeWidth:"1.5",strokeDasharray:"3 3"}),(0,n.jsx)("text",{x:f,y:296,fontSize:W.micro,fill:"#5A5C55",fontFamily:"ui-monospace, monospace",letterSpacing:"1",children:"DEVICE LOAD"}),(0,n.jsx)("text",{x:f+g,y:296,textAnchor:"end",fontSize:W.micro,fill:"#5A5C55",fontFamily:"ui-monospace, monospace",letterSpacing:"1",children:"POOL IS SHARED ACROSS PORTS — NOT PER-PORT"})]})}},62993:(e,t,a)=>{a.d(t,{CopyResultButton:()=>l});var n=a(95155),s=a(12115),o=a(5917),i=a(75426),r=a(76445);function l(e){let{text:t,label:a="Copy result",className:l=""}=e,[c,d]=(0,s.useState)(!1),u=(0,s.useRef)(null);(0,s.useEffect)(()=>()=>{u.current&&clearTimeout(u.current)},[]);let h=(0,s.useCallback)(async()=>{try{var e,a;if(null==(a=navigator)||null==(e=a.clipboard)?void 0:e.writeText)await navigator.clipboard.writeText(t);else if("undefined"!=typeof document){let e=document.createElement("textarea");e.value=t,e.style.position="fixed",e.style.opacity="0",document.body.appendChild(e),e.select(),document.execCommand("copy"),document.body.removeChild(e)}d(!0),u.current&&clearTimeout(u.current),u.current=setTimeout(()=>d(!1),2e3)}catch(e){}},[t]);return(0,n.jsx)("button",{type:"button",onClick:h,"aria-live":"polite",className:(0,r.cn)("group inline-flex min-h-[44px] items-center gap-2 border border-ink-300/30 bg-paper-100 px-5 py-2.5 text-[11.5px] uppercase tracking-[0.22em] text-ink-200 transition-colors hover:border-gold-300 hover:text-gold-300 focus:outline-none focus-visible:ring-2 focus-visible:ring-gold-300/60 focus-visible:ring-offset-2 focus-visible:ring-offset-paper-section",l),children:c?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(o.A,{className:"h-3.5 w-3.5 shrink-0","aria-hidden":!0}),"Copied"]}):(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(i.A,{className:"h-3.5 w-3.5 shrink-0","aria-hidden":!0}),a]})})}},65229:(e,t,a)=>{a.d(t,{A:()=>n});let n=(0,a(71847).A)("X",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]])},75426:(e,t,a)=>{a.d(t,{A:()=>n});let n=(0,a(71847).A)("Copy",[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]])},76445:(e,t,a)=>{a.d(t,{cn:()=>o});var n=a(2821),s=a(75889);function o(){for(var e=arguments.length,t=Array(e),a=0;a<e;a++)t[a]=arguments[a];return(0,s.QP)((0,n.$)(t))}},77768:(e,t,a)=>{a.d(t,{Kf:()=>s,U4:()=>i,fM:()=>r});var n=a(95155);function s(e,t,a){return e.length*(.6*t+a)}function o(e,t,a){var n,o,i;return s(e,a.leftSize,null!=(n=a.leftLetterSpacing)?n:2)+s(t,a.rightSize,null!=(o=a.rightLetterSpacing)?o:1.5)+(null!=(i=a.gutter)?i:Math.max(a.leftSize,a.rightSize))>a.width}function i(e,t,a){var n;return o(e,t,a)?null!=(n=a.lineHeight)?n:1.35*Math.max(a.leftSize,a.rightSize):0}function r(e){let{x:t,y:a,width:s,left:i,right:r,leftSize:l,rightSize:c,leftFill:d,rightFill:u,leftLetterSpacing:h=2,rightLetterSpacing:p=1.5,lineHeight:m,gutter:x,stack:g="down"}=e,f=o(i,r,{width:s,leftSize:l,rightSize:c,leftLetterSpacing:h,rightLetterSpacing:p,gutter:x}),b=(null!=m?m:1.35*Math.max(l,c))*("up"===g?-1:1),v="ui-monospace, monospace";return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("text",{x:t,y:a,fontSize:l,fill:d,fontFamily:v,letterSpacing:h,children:i}),(0,n.jsx)("text",{x:f?t:t+s,y:f?a+b:a,textAnchor:f?"start":"end",fontSize:c,fill:u,fontFamily:v,letterSpacing:p,children:r})]})}},91620:(e,t,a)=>{a.d(t,{I:()=>l});var n=a(95155),s=a(39847),o=a(65229),i=a(76445),r=a(97201);function l(e){let{traced:t,onClear:a,id:l,note:c,className:d}=e;return(0,n.jsxs)("div",{id:l,className:(0,i.cn)("border-l-2 border-sc-gold-500/70 bg-sc-gold-500/[0.07] px-3 py-2",d),children:[(0,n.jsxs)("p",{className:"flex items-center gap-1.5 font-mono text-[11px] uppercase tracking-[0.2em] text-sc-gold-600",children:[(0,n.jsx)(s.A,{"aria-hidden":!0,className:"h-3 w-3 shrink-0"}),"Carried in"]}),(0,n.jsxs)("p",{className:"mt-1 text-[11.5px] leading-[1.5] text-sc-ink-800",children:[(0,n.jsx)("span",{className:"font-medium tabular-nums text-sc-ink-900",children:function(e,t){let a="number"==typeof e?(0,r.ZO)(e):e;return t?"".concat(a," ").concat(t):String(a)}(t.value,t.unit)})," ","— ",(0,r.uN)(t)]}),c?(0,n.jsx)("p",{className:"mt-1 text-[11px] italic leading-[1.5] text-sc-ink-700",children:c}):null,a?(0,n.jsxs)("button",{type:"button",onClick:a,className:"mt-1.5 inline-flex min-h-[44px] items-center gap-1 font-mono text-[11px] uppercase tracking-[0.18em] text-sc-ink-700 underline-offset-2 transition hover:text-sc-copper-700 hover:underline focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-sc-gold-500/80",children:[(0,n.jsx)(o.A,{"aria-hidden":!0,
1className:"h-3 w-3"}),"Dismiss this note — the value stays"]}):null]})}}}]);

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.