gaugeit.js 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/CONTRIBUTING.md +36 -0
  2. package/LICENSE +21 -0
  3. package/NOTICE.md +5 -0
  4. package/README.md +894 -0
  5. package/SECURITY.md +24 -0
  6. package/adapters/react/Gaugeit.d.ts +11 -0
  7. package/adapters/react/Gaugeit.js +66 -0
  8. package/adapters/react/Gaugeit.jsx +1 -0
  9. package/dist/gaugeit.cjs +4686 -0
  10. package/dist/gaugeit.cjs.map +7 -0
  11. package/dist/gaugeit.css +300 -0
  12. package/dist/gaugeit.d.ts +442 -0
  13. package/dist/gaugeit.esm.js +4683 -0
  14. package/dist/gaugeit.esm.js.map +7 -0
  15. package/dist/gaugeit.esm.min.js +2 -0
  16. package/dist/gaugeit.esm.min.js.map +7 -0
  17. package/dist/gaugeit.min.cjs +2 -0
  18. package/dist/gaugeit.min.cjs.map +7 -0
  19. package/dist/gaugeit.min.css +1 -0
  20. package/dist/gaugeit.standalone.js +4720 -0
  21. package/dist/gaugeit.standalone.js.map +7 -0
  22. package/dist/gaugeit.standalone.min.js +302 -0
  23. package/dist/gaugeit.standalone.min.js.map +7 -0
  24. package/dist/gaugeit.umd.js +4713 -0
  25. package/dist/gaugeit.umd.js.map +7 -0
  26. package/dist/gaugeit.umd.min.js +4 -0
  27. package/dist/gaugeit.umd.min.js.map +7 -0
  28. package/dist/manifest.json +24 -0
  29. package/docs/api.md +456 -0
  30. package/docs/architecture.md +224 -0
  31. package/docs/assets/arc_zones.png +0 -0
  32. package/docs/assets/center_zero.png +0 -0
  33. package/docs/assets/classic_instrument.png +0 -0
  34. package/docs/assets/classic_linear_center_zero.png +0 -0
  35. package/docs/assets/classic_linear_instrument.png +0 -0
  36. package/docs/assets/heritage_rolling_tape.png +0 -0
  37. package/docs/assets/heritage_round.png +0 -0
  38. package/docs/assets/line_scale.png +0 -0
  39. package/docs/assets/rose_balance.png +0 -0
  40. package/docs/creating-gauge-types.md +286 -0
  41. package/docs/development.md +56 -0
  42. package/docs/framework-integration.md +84 -0
  43. package/package.json +114 -0
@@ -0,0 +1,2 @@
1
+ /*! Gaugeit.js v0.1.0 | MIT License | https://github.com/kasperikoski/gaugeit.js#readme */
2
+ var Be=Object.defineProperty;var ai=Object.getOwnPropertyDescriptor;var si=Object.getOwnPropertyNames;var li=Object.prototype.hasOwnProperty;var ci=(e,t)=>{for(var i in t)Be(e,i,{get:t[i],enumerable:!0})},ui=(e,t,i,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of si(t))!li.call(e,n)&&n!==i&&Be(e,n,{get:()=>t[n],enumerable:!(r=ai(t,n))||r.enumerable});return e};var hi=e=>ui(Be({},"__esModule",{value:!0}),e);var Dr={};ci(Dr,{Gauge:()=>ee,GaugeTypeRegistry:()=>fe,VERSION:()=>ri,autoMount:()=>Kt,createGauge:()=>yt,deepMerge:()=>D,default:()=>Xr,defineGaugeitElement:()=>Qt,easingNames:()=>Ke,gaugeTypeRegistry:()=>te,geometry:()=>ti,getMountedGauge:()=>gt,layers:()=>ei,registerGaugeType:()=>Jt,types:()=>ii,unmountGauge:()=>pt});module.exports=hi(Dr);function v(e){if(e===null||typeof e!="object"||Object.prototype.toString.call(e)!=="[object Object]")return!1;let t=Object.getPrototypeOf(e);if(t===null||t===Object.prototype)return!0;let i=Object.prototype.hasOwnProperty.call(t,"constructor")?t.constructor:null;return typeof i=="function"&&i.name==="Object"}function D(e,t){if(!v(e))return H(t);let i={...e};if(!v(t))return i;for(let[r,n]of Object.entries(t))_t(r)||(v(n)&&v(i[r])?i[r]=D(i[r],n):i[r]=H(n));return i}function H(e){if(Array.isArray(e))return e.map(H);if(v(e)){let t={};for(let[i,r]of Object.entries(e))_t(i)||(t[i]=H(r));return t}return e}function _t(e){return e==="__proto__"||e==="prototype"||e==="constructor"}function V(e,t,i){return Math.min(i,Math.max(t,e))}function l(e,t){let i=Number(e);return Number.isFinite(i)?i:t}var wt=0;function kt(e="gaugeit"){return wt+=1,`${e}-${wt}`}function Mt(e){if(typeof e=="string"){let t=document.querySelector(e);if(!t)throw new Error(`Gaugeit target not found: ${e}`);return t}if(e&&typeof e=="object"&&e.nodeType===1)return e;throw new TypeError("Gaugeit target must be an Element or a valid CSS selector.")}function T(e){if(e==null)return!0;let t=String(e).trim().toLowerCase();return t===""||t==="transparent"||t==="none"}function St(e){return typeof requestAnimationFrame=="function"?requestAnimationFrame(e):setTimeout(()=>e(Date.now()),16)}function Se(e){if(e!=null){if(typeof cancelAnimationFrame=="function"){cancelAnimationFrame(e);return}clearTimeout(e)}}function R(e,t,i){!e||typeof e.dispatchEvent!="function"||typeof CustomEvent!="function"||e.dispatchEvent(new CustomEvent(`gaugeit:${t}`,{detail:i}))}function Le(e,t={}){if(typeof e!="string"||e.trim()==="")return t;try{let i=JSON.parse(e);return v(i)?i:t}catch{return t}}function fi(e){return e*Math.PI/180}function b(e,t,i,r){let n=fi(r);return{x:e+i*Math.cos(n),y:t+i*Math.sin(n)}}function re(e){return e.geometry.endAngle-e.geometry.startAngle}function Lt(e,t=0){let i=Math.min(360,Math.max(.001,Math.abs(l(e,180)))),r=270+l(t,0),n=i/2;return{startAngle:r-n,endAngle:r+n}}function L(e,t,i=!0){let r=t.min,n=t.max,o=((i?V(e,r,n):e)-r)/(n-r),s=t.invert?1-o:o;return t.geometry.startAngle+re(t)*s}function Ot(e,t,i=!0){let r=re(t),n=(e-t.geometry.startAngle)/r,a=t.invert?1-n:n,o=t.min+a*(t.max-t.min);return i?V(o,t.min,t.max):o}function Oe(e,t,i,r,n){let a=b(e,t,i,r),o=b(e,t,i,n),s=n-r,c=s>=0?1:0;if(Math.abs(s)>=360-.001){let f=b(e,t,i,r+s/2);return[`M ${p(a.x)} ${p(a.y)}`,`A ${p(i)} ${p(i)} 0 1 ${c} ${p(f.x)} ${p(f.y)}`,`A ${p(i)} ${p(i)} 0 1 ${c} ${p(o.x)} ${p(o.y)}`].join(" ")}let h=Math.abs(s)>180?1:0;return[`M ${p(a.x)} ${p(a.y)}`,`A ${p(i)} ${p(i)} 0 ${h} ${c} ${p(o.x)} ${p(o.y)}`].join(" ")}function Ae(e,t,i,r,n,a,o,s=48){let c=n-r,h=Math.max(2,Math.min(256,Math.ceil(l(s,48)))),f=Math.max(0,l(i,0)),m=Math.max(0,l(a,0)),g=Math.max(0,l(o,m)),d=[],y=[];for(let x=0;x<=h;x+=1){let _=x/h,B=r+c*_,P=m+(g-m)*_;d.push(b(e,t,f+P/2,B)),y.push(b(e,t,Math.max(0,f-P/2),B))}let w=[`M ${p(d[0].x)} ${p(d[0].y)}`];for(let x=1;x<d.length;x+=1)w.push(`L ${p(d[x].x)} ${p(d[x].y)}`);for(let x=y.length-1;x>=0;x-=1)w.push(`L ${p(y[x].x)} ${p(y[x].y)}`);return w.push("Z"),w.join(" ")}function ne(e,t=5){let r=(Math.abs(l(e,1))||1)/Math.max(1,t),n=Math.floor(Math.log10(r)),a=r/Math.pow(10,n),o;return a<=1?o=1:a<=2?o=2:a<=2.5?o=2.5:a<=5?o=5:o=10,o*Math.pow(10,n)}function I(e,t,i){let r=Math.abs(l(i,0));if(r<=0||t<=e)return[e,t];let n=Math.min(12,Math.max(0,mi(r)+2)),a=r/1e6,o=[],s=e,c=0;for(;s<=t+a&&c<1e4;)o.push(di(s,n)),s+=r,c+=1;return o.length===0||Math.abs(o[o.length-1]-t)>a?o.push(t):o[o.length-1]=t,o}function oe(e,t){let i=Math.max(0,Math.floor(l(t,0)));if(i===0||e.length<2)return[];let r=[];for(let n=0;n<e.length-1;n+=1){let a=e[n],s=(e[n+1]-a)/(i+1);for(let c=1;c<=i;c+=1)r.push(a+s*c)}return r}function ae(e,t,i){let r=Array.isArray(i)?i.filter(s=>s&&typeof s=="object").map((s,c)=>({...s,min:V(l(s.min,e),e,t),max:V(l(s.max,t),e,t),_index:c})).filter(s=>s.max>s.min):[],n=new Set([e,t]);for(let s of r)n.add(s.min),n.add(s.max);let a=[...n].sort((s,c)=>s-c),o=[];for(let s=0;s<a.length-1;s+=1){let c=a[s],h=a[s+1],f=(c+h)/2,m=r.filter(d=>f>=d.min&&f<=d.max),g=m.length?m[m.length-1]:null;o.push({min:c,max:h,zone:g})}return o}function Z(e,t){if(!Array.isArray(t))return null;let i=null;for(let r of t)!r||typeof r!="object"||e>=Number(r.min)&&e<=Number(r.max)&&(i=r);return i}function p(e){return Math.round(e*1e3)/1e3}function di(e,t){let i=Math.pow(10,t);return Math.round(e*i)/i}function mi(e){let t=String(e).toLowerCase();if(t.includes("e-"))return Number(t.split("e-")[1]);let i=t.split(".")[1];return i?i.length:0}function U(e,t){let i=t.linear||{};return l(i.originY,140)-l(e,0)}function k(e){let t=e.linear||{},i=l(t.startX,36),r=U(t.startY,e),n=l(t.endX,284),a=U(t.endY,e),o=n-i,s=a-r,c=Math.hypot(o,s);c<.001&&(n=i+1,a=r,o=1,s=0,c=1);let h=o/c,f=s/c;return{startX:i,startY:r,endX:n,endY:a,dx:o,dy:s,length:c,tangentX:h,tangentY:f,normalX:-f,normalY:h,angle:Math.atan2(s,o)*180/Math.PI}}function He(e,t,i=!0){let n=((i?V(e,t.min,t.max):e)-t.min)/(t.max-t.min);return t.invert?1-n:n}function M(e,t,i=!0){let r=k(t),n=He(e,t,i);return{x:r.startX+r.dx*n,y:r.startY+r.dy*n}}function At(e,t,i,r=!0){let n=k(i),a=l(e,n.startX)-n.startX,o=l(t,n.startY)-n.startY,s=(a*n.tangentX+o*n.tangentY)/n.length,c=r?V(s,0,1):s,h=i.invert?1-c:c,f=i.min+h*(i.max-i.min);return r?V(f,i.min,i.max):f}function S(e,t,i){let r=l(i,0);return{x:e.x+t.normalX*r,y:e.y+t.normalY*r}}function z(e){return-l(e,0)}function se(e){return z(e?.centerOffset)}function W(e,t="cross",i=0){let r=Math.max(0,l(e,0)),n=l(i,0);return t==="negative"?{start:n-r,end:n}:t==="positive"?{start:n,end:n+r}:{start:n-r/2,end:n+r/2}}function le(e){let t=e.tape||{};return{x:l(t.x,64),y:l(t.y,58),width:Math.max(20,l(t.width,192)),height:Math.max(20,l(t.height,210))}}function ge(e){let t=l(e.tape?.interval,0);return t>0?t:ne(e.max-e.min,Math.max(2,e.scale?.major?.divisions||5))}function pe(e){let t=Math.max(0,Math.floor(l(e.tape?.minorSubdivisions,4)));return ge(e)/(t+1)}function ye(e){let t=Math.max(0,Math.floor(l(e.tape?.minorSubdivisions,4)));return Math.max(2,l(e.tape?.majorSpacing,54))/(t+1)}function Ce(e,t,i){let r=pe(i),n=ye(i),a=i.invert?-1:1;return(Number(e)-Number(t))/r*n*a}function ce(e,t){return{x:l(e?.x,t.geometry.width/2),y:t.geometry.mode==="linear"?U(e?.y,t):l(e?.y,t.geometry.height/2)}}function ze(e,t){if(!e?.visible)return!1;let i=e.trigger||{},r=l(t,0);switch(i.mode){case"below":return r<=l(i.value,0);case"above":return r>=l(i.value,0);case"between":{let n=l(i.min,0),a=l(i.max,n);return r>=Math.min(n,a)&&r<=Math.max(n,a)}default:return e.on===!0}}var ue=.001;function It(e=1/0,t=1/0,i=-1/0,r=-1/0){return Number.isFinite(e)&&Number.isFinite(t)&&Number.isFinite(i)&&Number.isFinite(r)?{x:e,y:t,width:i,height:r}:{minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0}}function K(e,t,i){return!Number.isFinite(t)||!Number.isFinite(i)||(e.minX=Math.min(e.minX,t),e.minY=Math.min(e.minY,i),e.maxX=Math.max(e.maxX,t),e.maxY=Math.max(e.maxY,i)),e}function $(e,t,i,r,n){return K(e,t,i),K(e,t+Math.max(0,r),i+Math.max(0,n)),e}function Ze(e,t={x:0,y:0,width:1,height:1}){return!e||!Number.isFinite(e.minX)||!Number.isFinite(e.minY)||!Number.isFinite(e.maxX)||!Number.isFinite(e.maxY)?{...t}:{x:e.minX,y:e.minY,width:Math.max(1,e.maxX-e.minX),height:Math.max(1,e.maxY-e.minY)}}function xe(e,t=0){let i=Math.max(0,l(t,0));return{x:e.x-i,y:e.y-i,width:Math.max(1,e.width+i*2),height:Math.max(1,e.height+i*2)}}function Te(...e){let t=It();for(let i of e)i&&$(t,i.x,i.y,i.width,i.height);return Ze(t)}function Ue(e){return Math.abs(re(e))>=360-ue}function Q(e,t){let i=t.scale?.endpointMode||"auto";return e.length<2||i==="both"?e:i==="dedupe"||i==="auto"&&Ue(t)?e.slice(0,-1):e}function be(e,t){let i=Oi(t),r=Math.max(1,l(e.fontSize,12)),n=Math.max(0,l(e.margin,12)),a=e.position||"top",o=e.x==="auto",s=e.y==="auto",c=o?i.x+i.width/2:l(e.x,i.x+i.width/2),h;return s?a==="bottom"?h=i.y+i.height-n-r/2:a==="center"?h=i.y+i.height/2:h=i.y+n+r/2:t.geometry.mode==="linear"?h=U(e.y,t):h=l(e.y,i.y+n+r/2),{x:c+(o?l(e.offsetX,0):0),y:h+(s?l(e.offsetY,0):0)}}function ve(e,t=null){let i=e.face,r=e.geometry;if(i.fit!=="content"||!t)return{x:i.x,y:i.y,width:i.width,height:i.height};let n=Math.max(0,l(i.contentPadding,8)),a={x:i.x,y:i.y,width:i.width,height:i.height},o=i.minWidth??a.width,s=i.minHeight??a.height;if(i.shape==="circle"){let d=r.centerX,y=r.centerY,w=Math.min(o,s)/2,x=Math.max(d-t.x,t.x+t.width-d,y-t.y,t.y+t.height-y)+n,_=Math.max(1,w,x);return{x:d-_,y:y-_,width:_*2,height:_*2}}let c={x:t.x-n,y:t.y-n,width:t.width+n*2,height:t.height+n*2},h=Math.max(r.centerX-c.x,c.x+c.width-r.centerX),f=Math.max(1,o,h*2),m=Math.max(1,s,c.height),g=c.y+c.height/2;return{x:r.centerX-f/2,y:g-m/2,width:f,height:m}}function we(e,t={}){let i=t.includeFace!==!1,r=t.includeBase===void 0?e.layout?.includeGeometry!==!1:t.includeBase===!0,n=t.contentBounds||null,a=e.geometry,o=It();if(r&&$(o,0,0,a.width,a.height),i&&e.face.visible){let s=ve(e,n),c=e.face.shadow?10:Math.max(0,e.face.strokeWidth/2);if($(o,s.x-c,s.y-c,s.width+c*2,s.height+c*2),e.face.clipContent)return Ze(o,{x:0,y:0,width:a.width,height:a.height})}return a.mode==="linear"?(vi(o,e),wi(o,e),_i(o,e),ki(o,e),Ct(o,e)):a.mode==="tape"?Mi(o,e):(gi(o,e),yi(o,e),xi(o,e),Ct(o,e),bi(o,e)),Li(o,e),Si(o,e),Ze(o,{x:0,y:0,width:a.width,height:a.height})}function gi(e,t){let{geometry:i,track:r}=t;r.visible&&Vt(e,i.centerX,i.centerY,r.radius,r.width,i.startAngle,i.endAngle);for(let n of t.zones||[])T(n.color)||Vt(e,i.centerX,i.centerY,n.radius??r.radius??i.radius,pi(n,r.width),L(n.min,t),L(n.max,t))}function pi(e,t){return e?.taper?Math.max(0,l(e.taper.startWidth,e.width??t),l(e.taper.endWidth,e.width??t)):e?.width??t}function yi(e,t){let{geometry:i,scale:r}=t,n=[];if(r.major.visible&&n.push(r.major.length),r.minor.visible&&n.push(r.minor.length),!n.length)return;let a=Math.max(...n,0),o=r.radius,s=r.radius;r.position==="outside"?s+=a:r.position==="cross"?(o-=a/2,s+=a/2):o-=a,Ve(e,i.centerX,i.centerY,Math.max(0,o),s,i.startAngle,i.endAngle)}function xi(e,t){let i=t.labels;if(!i.visible)return;let r=Number(i.interval)>0?Number(i.interval):Math.abs(t.max-t.min)/Math.max(1,t.scale.major.divisions||5),n=Q(I(t.min,t.max,r),t);for(let a of n){let o=b(t.geometry.centerX,t.geometry.centerY,i.radius,L(a,t)),s=Number(a).toFixed(i.fractionDigits);if(typeof i.formatter=="function")try{s=String(i.formatter(a,{min:t.min,max:t.max,options:t}))}catch{}let c=Math.max(i.fontSize*.55,s.length*i.fontSize*.34),h=i.fontSize*.68;$(e,o.x-c,o.y-h,c*2,h*2)}}function bi(e,t){let{geometry:i,pointer:r}=t;if(!r.visible)return;let n=Math.max(r.width/2,r.strokeWidth/2,1);if(Ve(e,i.centerX,i.centerY,0,r.length+n,i.startAngle,i.endAngle),r.tailLength>0&&Ve(e,i.centerX,i.centerY,0,r.tailLength+n,i.startAngle+180,i.endAngle+180),r.cap.visible){let a=r.cap.radius+r.cap.strokeWidth/2;$(e,i.centerX-a,i.centerY-a,a*2,a*2)}}function vi(e,t){let i=k(t);t.track.visible&&zt(e,i,M(t.min,t),M(t.max,t),z(t.linear.zoneOffset),t.track.width);for(let r of t.zones||[])T(r.color)||zt(e,i,M(r.min,t),M(r.max,t),z(r.offset??t.linear.zoneOffset),r.width??t.track.width)}function wi(e,t){let i=k(t),r=[];if(t.scale.major.visible&&r.push(t.scale.major.length),t.scale.minor.visible&&r.push(t.scale.minor.length),!r.length)return;let n=W(Math.max(...r,0),t.linear.tickSide);Wt(e,i,n.start,n.end)}function _i(e,t){let i=t.labels;if(!i.visible)return;let r=Number(i.interval)>0?Number(i.interval):Math.abs(t.max-t.min)/Math.max(1,t.scale.major.divisions||5),n=I(t.min,t.max,r),a=k(t);for(let o of n){let s=S(M(o,t),a,z(t.linear.labelOffset)),c=Number(o).toFixed(i.fractionDigits);if(typeof i.formatter=="function")try{c=String(i.formatter(o,{min:t.min,max:t.max,options:t}))}catch{}let h=Math.max(i.fontSize*.55,c.length*i.fontSize*.34),f=i.fontSize*.68;$(e,s.x-h,s.y-f,h*2,f*2)}}function ki(e,t){let i=t.indicator;if(!i.visible)return;let r=k(t),n=W(i.length,i.position,se(i)),a=Math.max(i.width/2,i.strokeWidth/2,1),o=Math.min(n.start,n.end)-a,s=Math.max(n.start,n.end)+a,c=a;i.type==="marker"&&(c=Math.max(c,i.markerSize)),i.type==="carriage"&&(c=Math.max(c,i.carriageWidth/2)),i.cap.visible&&(c=Math.max(c,i.cap.radius+i.cap.strokeWidth/2)),Wt(e,r,o,s,c)}function Ct(e,t){let i=t.centerZero?.marker;if(!i?.visible)return;let r=Math.max(i.width/2,.5);if(t.geometry.mode==="linear"){let c=k(t),h=M(t.centerZero.zeroValue,t),f=W(i.length,i.position,z(i.centerOffset)),m=S(h,c,f.start),g=S(h,c,f.end);$(e,Math.min(m.x,g.x)-r,Math.min(m.y,g.y)-r,Math.abs(g.x-m.x)+r*2,Math.abs(g.y-m.y)+r*2);return}let n=L(t.centerZero.zeroValue,t),a=i.radius??t.scale.radius,o=b(t.geometry.centerX,t.geometry.centerY,Math.max(0,a-i.length),n),s=b(t.geometry.centerX,t.geometry.centerY,a,n);$(e,Math.min(o.x,s.x)-r,Math.min(o.y,s.y)-r,Math.abs(s.x-o.x)+r*2,Math.abs(s.y-o.y)+r*2)}function zt(e,t,i,r,n,a){let o=Math.max(0,l(a,0))/2,s=S(i,t,n),c=S(r,t,n),h=Math.min(s.x,c.x)-o,f=Math.min(s.y,c.y)-o;$(e,h,f,Math.abs(c.x-s.x)+o*2,Math.abs(c.y-s.y)+o*2)}function Wt(e,t,i,r,n=0){for(let a of[{x:t.startX,y:t.startY},{x:t.endX,y:t.endY}])for(let o of[i,r]){let s=S(a,t,o);K(e,s.x-t.tangentX*n,s.y-t.tangentY*n),K(e,s.x+t.tangentX*n,s.y+t.tangentY*n)}}function Mi(e,t){let i=le(t),r=Math.max(t.tape.windowStrokeWidth/2,t.tape.windowInnerStrokeWidth/2);$(e,i.x-r,i.y-r,i.width+r*2,i.height+r*2)}function Si(e,t){let i=t.light;if(!i?.visible)return;let r=ce(i,t),n=Math.max(1,l(i.radius,8)),a=i.glow?n*2.96:n,o=n+Math.max(1.5,n*.18),s=Math.max(a,o);$(e,r.x-s,r.y-s,s*2,s*2)}function Li(e,t){if(t.readout.visible)for(let[i,r]of Object.entries(t.readout)){if(i==="visible"||!r?.visible)continue;let n=i==="value"?`${r.prefix||""}${t.max}${r.suffix||""}`:String(r.text||"");if(!n&&i!=="value")continue;let a=be(r,t),o=Math.max(r.fontSize*.55,n.length*r.fontSize*.34),s=r.fontSize*.68;$(e,a.x-o,a.y-s,o*2,s*2)}}function Oi(e){let t=e.face;return t.visible&&t.fit!=="content"?{x:t.x,y:t.y,width:t.width,height:t.height}:{x:0,y:0,width:e.geometry.width,height:e.geometry.height}}function Vt(e,t,i,r,n,a,o){let s=Math.max(0,l(n,0))/2;Ve(e,t,i,Math.max(0,r-s),r+s,a,o)}function Ve(e,t,i,r,n,a,o){let s=[a,o];for(let c of[0,90,180,270])Ai(c,a,o)&&s.push(c);r<=ue&&K(e,t,i);for(let c of s){let h=b(t,i,Math.max(0,n),c);if(K(e,h.x,h.y),r>ue){let f=b(t,i,r,c);K(e,f.x,f.y)}}}function Ai(e,t,i){let r=i-t;return Math.abs(r)>=360-ue?!0:r>=0?Tt(e-t,360)<=r+ue:Tt(t-e,360)<=-r+ue}function Tt(e,t){return(e%t+t)%t}var Ci="http://www.w3.org/2000/svg";function u(e,t={},i=null){let r=document.createElementNS(Ci,e);return F(r,t),i!=null&&(r.textContent=String(i)),r}function F(e,t){for(let[i,r]of Object.entries(t||{}))r==null||r===!1||(i==="className"?e.setAttribute("class",String(r)):e.setAttribute(i,String(r)));return e}var We=class{constructor(t,i){this.host=t,this.options=i,this.id=kt("gaugeit"),this.controllers=[],this.references=new Map,this.root=null,this.svg=null,this.content=null,this.contentBounds=null,this.layoutBounds=null,this.contentClipPathId=null}begin(){this.destroyControllers(),this.references.clear(),this.contentClipPathId=null;let t=document.createElement("div");t.className=["gaugeit",`gaugeit--${this.options.type}`,`gaugeit--layout-${this.options.layout.mode}`,this.options.className].filter(Boolean).join(" "),t.dataset.gaugeitRoot="true",t.dataset.gaugeitLayout=this.options.layout.mode,this.contentBounds=we(this.options,{includeFace:!1,includeBase:!1}),this.layoutBounds=we(this.options,{contentBounds:this.contentBounds});let i=xe(this.layoutBounds,this.options.layout.padding),r=this.options.geometry,n=u("svg",{class:"gaugeit__svg",viewBox:qe(i),preserveAspectRatio:r.preserveAspectRatio,focusable:"false"}),a=u("title",{id:`${this.id}-title`},this.options.accessibility.label);if(n.append(a),this.options.accessibility.description){let s=u("desc",{id:`${this.id}-description`},this.options.accessibility.description);n.append(s),n.setAttribute("aria-describedby",s.id)}n.setAttribute("aria-labelledby",a.id);let o=u("g",{class:"gaugeit__viewport","data-gaugeit-viewport":"true"});return n.append(o),t.append(n),this.host.replaceChildren(t),this.host.classList.add("gaugeit-host"),this.root=t,this.svg=n,this.content=o,this.applySizing(i),n}finish(){if(!this.svg||!this.content)return null;let t=zi(this.content),i=this.options.face.visible&&this.options.face.clipContent,r=t&&!i?Te(this.layoutBounds,t):this.layoutBounds,n=xe(r,this.options.layout.padding);return this.layoutBounds=r,this.svg.setAttribute("viewBox",qe(n)),this.applySizing(n),this.root.dataset.gaugeitViewBox=qe(n),n}group(t,i={}){let r=t!=="face"&&this.contentClipPathId?`url(#${this.contentClipPathId})`:void 0,n=u("g",{class:`gaugeit__layer gaugeit__layer--${t}`,"data-gaugeit-layer":t,"clip-path":r,...i});return this.content.append(n),n}setContentClipPath(t){this.contentClipPathId=t?String(t):null}getContentBounds(){return this.contentBounds}setReference(t,i){return this.references.set(t,i),i}getReference(t){return this.references.get(t)}addController(t){t&&typeof t.update=="function"&&this.controllers.push(t)}update(t,i){for(let r of this.controllers)r.update(t,i)}destroyControllers(){for(let t of this.controllers)typeof t.destroy=="function"&&t.destroy();this.controllers=[]}destroy(){this.destroyControllers(),this.references.clear(),this.root&&this.root.parentNode===this.host&&this.root.remove(),this.host.classList.remove("gaugeit-host"),this.root=null,this.svg=null,this.content=null,this.contentBounds=null,this.layoutBounds=null,this.contentClipPathId=null}applySizing(t){let i=this.options.responsive,r=this.options.layout.mode==="contain";this.root.style.width=i?"100%":`${t.width}px`,this.root.style.maxWidth="100%",this.root.style.height=r?"100%":"auto",this.svg.style.display="block",this.svg.style.width=i?"100%":`${t.width}px`,this.svg.style.height=r?"100%":"auto",this.svg.style.maxWidth="100%",this.svg.style.maxHeight=r?"100%":"none",this.svg.style.overflow="hidden"}};function qe(e){return`${Ie(e.x)} ${Ie(e.y)} ${Ie(e.width)} ${Ie(e.height)}`}function Ie(e){return Math.round(e*1e3)/1e3}function zi(e){if(typeof e.getBBox!="function")return null;try{let t=e.getBBox();return![t.x,t.y,t.width,t.height].every(Number.isFinite)||t.width<=0&&t.height<=0?null:{x:t.x,y:t.y,width:Math.max(1,t.width),height:Math.max(1,t.height)}}catch{return null}}var Je={linear:e=>e,easeInQuad:e=>e*e,easeOutQuad:e=>e*(2-e),easeInOutQuad:e=>e<.5?2*e*e:-1+(4-2*e)*e,easeOutCubic:e=>1-Math.pow(1-e,3),easeInOutCubic:e=>e<.5?4*e*e*e:1-Math.pow(-2*e+2,3)/2,easeOutBack:e=>1+2.70158*Math.pow(e-1,3)+1.70158*Math.pow(e-1,2)};function $t(e){return typeof e=="function"?e:Je[e]||Je.easeOutCubic}var Ke=Object.freeze(Object.keys(Je));var Qe=Object.freeze({type:"arc",min:0,max:100,value:0,invert:!1,overflow:"clamp",precision:3,className:"",layout:{mode:"intrinsic",padding:8,includeGeometry:!0},geometry:{mode:"radial",width:320,height:220,centerX:160,centerY:174,radius:120,startAngle:180,endAngle:360,preserveAspectRatio:"xMidYMid meet",aspectRatio:null},linear:{originY:140,startX:36,startY:0,endX:284,endY:0,tickSide:"negative",labelOffset:34,zoneOffset:-12},face:{visible:!1,shape:"panel",fit:"geometry",contentPadding:8,minWidth:null,minHeight:null,clipContent:!1,x:6,y:6,width:308,height:208,cornerRadius:18,color:"#ffffff",strokeColor:"#d1d5db",strokeWidth:2,innerStrokeColor:"#f3f4f6",innerStrokeWidth:1,shadow:!1,glass:!1},track:{visible:!0,color:"#e5e7eb",width:28,radius:112,opacity:1,lineCap:"butt",showUnderZones:!1},zones:[],scale:{endpointMode:"auto",radius:112,position:"inside",major:{visible:!0,interval:null,divisions:5,length:13,width:2,color:"#111827",opacity:1},minor:{visible:!0,subdivisions:4,length:7,width:1,color:"#6b7280",opacity:.9}},labels:{visible:!0,interval:null,radius:84,color:"#111827",fontFamily:'system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif',fontSize:11,fontWeight:500,fractionDigits:0,rotation:"horizontal",formatter:null},pointer:{visible:!0,type:"needle",length:94,shaftLength:null,tailLength:13,width:8,color:"#111827",strokeColor:"none",strokeWidth:0,opacity:1,colorByZone:!1,cap:{visible:!0,stackOrder:"above",radius:8,color:"#111827",strokeColor:"#ffffff",strokeWidth:2}},indicator:{visible:!1,type:"hairline",position:"cross",length:76,centerOffset:null,offset:0,width:2,color:"#b91c1c",strokeColor:"none",strokeWidth:0,opacity:1,lineCap:"round",colorByZone:!1,markerSize:8,carriageWidth:14,carriageRadius:4,cap:{visible:!1,stackOrder:"above",radius:4,color:"#b91c1c",strokeColor:"#ffffff",strokeWidth:1}},centerZero:{zeroValue:0,symmetric:!1,marker:{visible:!1,radius:null,position:"cross",centerOffset:0,length:20,width:3,color:"#111827",opacity:1,lineCap:"round"}},tape:{orientation:"vertical",x:64,y:58,width:192,height:210,cornerRadius:12,windowColor:"#e5e7eb",windowStrokeColor:"#475569",windowStrokeWidth:2,windowInnerStrokeColor:"#d1d5db",windowInnerStrokeWidth:1,stripColor:"#ffffff",textColor:"#111827",tickColor:"#334155",minorTickColor:"#64748b",minorTickOpacity:.85,majorTickWidth:2,minorTickWidth:1,majorTickLength:24,minorTickLength:12,tickInset:64,labelOffset:10,interval:null,minorSubdivisions:4,majorSpacing:52,indicatorColor:"#b91c1c",indicatorWidth:2.5,fadeSize:32,fadeColor:"#ffffff",colorByZone:!1},light:{visible:!1,x:160,y:110,radius:8,color:"amber",customColor:"",offColor:"#f3ead6",offEdgeColor:"#817768",bezelColor:"#4b5563",bezelHighlightColor:"#f8fafc",opacity:1,on:!1,glow:!0,pulse:!0,pulseInterval:2600,blink:!1,blinkInterval:1e3,trigger:{mode:"manual",source:"target",value:0,min:0,max:0}},readout:{visible:!0,title:{visible:!1,text:"",x:"auto",y:"auto",position:"top",margin:12,offsetX:0,offsetY:0,color:"#374151",fontFamily:'system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif',fontSize:14,fontWeight:700,letterSpacing:.8},value:{visible:!1,x:"auto",y:54,position:"center",margin:12,offsetX:0,offsetY:0,color:"#111827",fontFamily:'system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif',fontSize:38,fontWeight:750,fractionDigits:0,prefix:"",suffix:"",locale:void 0,formatter:null},unit:{visible:!1,text:"",x:"auto",y:76,position:"bottom",margin:12,offsetX:0,offsetY:0,color:"#6b7280",fontFamily:'system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif',fontSize:12,fontWeight:600}},animation:{enabled:!0,duration:850,easing:"easeOutCubic",animateOnInit:!0,startFrom:"min",respectReducedMotion:!0},effects:{jitter:{enabled:!1,amplitude:.45,amplitudeUnit:"value",frequency:4,smoothing:.86,whenIdleOnly:!0}},accessibility:{label:"Gauge",description:"",valueText:null},performance:{pauseWhenHidden:!0,pauseWhenOffscreen:!0},responsive:!0});var Vi=new Set(["clamp","expand","allow"]),Ti=new Set(["needle","line","arrow","spear"]),Ii=new Set(["inside","outside","cross"]),Wi=new Set(["horizontal","radial","tangent"]),$i=new Set(["intrinsic","contain"]),ji=new Set(["geometry","content"]),Ei=new Set(["panel","circle"]),Ni=new Set(["auto","both","dedupe"]),Yi=new Set(["top","center","bottom"]),Ri=new Set(["radial","linear","tape"]),Fi=new Set(["negative","positive","cross"]),Pi=new Set(["hairline","marker","carriage"]),jt=new Set(["negative","positive","cross"]),Et=new Set(["above","below"]),Xi=new Set(["vertical","horizontal"]),Di=new Set(["red","green","blue","amber","yellow","orange","white","halogen","cyan","brown"]),Gi=new Set(["manual","below","above","between"]),Bi=new Set(["target","displayed","pointer"]);function je(e,t){let i=v(e)?e:{},r=String(i.type||Qe.type),n=t.get(r),a=D(Qe,n.defaults),o=D(a,i);if(o.type=r,o=tt(o,a),typeof n.configure=="function"){let s=n.configure(o,{requested:i,typeDefaults:n.defaults});v(s)&&(o=s)}return o=tt(o,a),o.min=l(o.min,0),o.max=l(o.max,100),o.max<=o.min&&(o.max=o.min+1),o.value=l(o.value,o.min),o.invert=o.invert===!0,o.precision=Math.max(0,Math.min(12,Math.floor(l(o.precision,3)))),o.overflow=Vi.has(o.overflow)?o.overflow:"clamp",Hi(o.layout),Zi(o.geometry),Ui(o.linear),qi(o.face),Ji(o),Ki(o.pointer),Qi(o.indicator,i.indicator),er(o.centerZero,o),tr(o.tape),ir(o.light),rr(o.labels),nr(o.readout),or(o.animation),ar(o.effects.jitter),o.zones=sr(o.zones,o.min,o.max,o.track.width),o}function q(e){let t=l(e.scale.major.interval,0);if(t>0)return t;let i=Math.max(1,Math.floor(l(e.scale.major.divisions,5)));return ne(e.max-e.min,i)}function Ee(e,t){return D(e||{},t||{})}function Hi(e){e.mode=$i.has(e.mode)?e.mode:"intrinsic",e.padding=Math.max(0,l(e.padding,8)),e.includeGeometry=e.includeGeometry!==!1}function Zi(e){e.mode=Ri.has(e.mode)?e.mode:"radial",e.width=Math.max(40,l(e.width,320)),e.height=Math.max(40,l(e.height,220)),e.centerX=l(e.centerX,e.width/2),e.centerY=l(e.centerY,e.height*.78),e.radius=Math.max(1,l(e.radius,Math.min(e.width,e.height)*.4)),e.startAngle=l(e.startAngle,180),e.endAngle=l(e.endAngle,360),Math.abs(e.endAngle-e.startAngle)<.001&&(e.endAngle=e.startAngle+180),Math.abs(e.endAngle-e.startAngle)>360&&(e.endAngle=e.startAngle+Math.sign(e.endAngle-e.startAngle)*360),e.preserveAspectRatio=String(e.preserveAspectRatio||"xMidYMid meet"),e.aspectRatio=e.aspectRatio===null||e.aspectRatio===void 0?null:Math.max(1e-6,l(e.aspectRatio,e.width/e.height))}function Ui(e){e.originY=l(e.originY,140),e.startX=l(e.startX,36),e.startY=l(e.startY,0),e.endX=l(e.endX,284),e.endY=l(e.endY,e.startY),Math.hypot(e.endX-e.startX,e.endY-e.startY)<.001&&(e.endX=e.startX+1,e.endY=e.startY),e.tickSide=Fi.has(e.tickSide)?e.tickSide:"negative",e.labelOffset=l(e.labelOffset,34),e.zoneOffset=l(e.zoneOffset,-12)}function qi(e){e.shape=Ei.has(e.shape)?e.shape:"panel",e.fit=ji.has(e.fit)?e.fit:"geometry",e.contentPadding=Math.max(0,l(e.contentPadding,8)),e.minWidth=e.minWidth===null||e.minWidth===void 0?null:Math.max(1,l(e.minWidth,1)),e.minHeight=e.minHeight===null||e.minHeight===void 0?null:Math.max(1,l(e.minHeight,1)),e.clipContent=e.clipContent===!0,e.x=l(e.x,6),e.y=l(e.y,6),e.width=Math.max(1,l(e.width,308)),e.height=Math.max(1,l(e.height,208)),e.cornerRadius=Math.max(0,l(e.cornerRadius,18)),e.strokeWidth=Math.max(0,l(e.strokeWidth,2)),e.innerStrokeWidth=Math.max(0,l(e.innerStrokeWidth,1))}function Ji(e){e.scale.endpointMode=Ni.has(e.scale.endpointMode)?e.scale.endpointMode:"auto",e.scale.radius=Math.max(1,l(e.scale.radius,e.geometry.radius)),e.scale.position=Ii.has(e.scale.position)?e.scale.position:"inside",e.scale.major.divisions=Math.max(1,Math.floor(l(e.scale.major.divisions,5))),e.scale.major.length=Math.max(0,l(e.scale.major.length,13)),e.scale.major.width=Math.max(0,l(e.scale.major.width,2)),e.scale.minor.subdivisions=Math.max(0,Math.floor(l(e.scale.minor.subdivisions,4))),e.scale.minor.length=Math.max(0,l(e.scale.minor.length,7)),e.scale.minor.width=Math.max(0,l(e.scale.minor.width,1))}function Ki(e){e.type=Ti.has(e.type)?e.type:"needle",e.length=Math.max(0,l(e.length,94)),e.shaftLength=e.shaftLength===null||e.shaftLength===void 0?null:Math.min(e.length,Math.max(0,l(e.shaftLength,e.length))),e.tailLength=Math.max(0,l(e.tailLength,13)),e.width=Math.max(.5,l(e.width,8)),e.strokeWidth=Math.max(0,l(e.strokeWidth,0)),e.cap.radius=Math.max(0,l(e.cap.radius,8)),e.cap.strokeWidth=Math.max(0,l(e.cap.strokeWidth,2)),e.cap.stackOrder=Et.has(e.cap.stackOrder)?e.cap.stackOrder:"above"}function Qi(e,t={}){e.visible=e.visible===!0,e.type=Pi.has(e.type)?e.type:"hairline",e.position=jt.has(e.position)?e.position:"cross",e.length=Math.max(0,l(e.length,76));let i=v(t)&&Object.prototype.hasOwnProperty.call(t,"centerOffset"),r=v(t)&&Object.prototype.hasOwnProperty.call(t,"offset");i?e.centerOffset=l(t.centerOffset,0):r?e.centerOffset=-l(t.offset,0):e.centerOffset===null||e.centerOffset===void 0?e.centerOffset=-l(e.offset,0):e.centerOffset=l(e.centerOffset,0),e.offset=-e.centerOffset,e.width=Math.max(.5,l(e.width,2)),e.strokeWidth=Math.max(0,l(e.strokeWidth,0)),e.opacity=Math.min(1,Math.max(0,l(e.opacity,1))),e.markerSize=Math.max(1,l(e.markerSize,8)),e.carriageWidth=Math.max(1,l(e.carriageWidth,14)),e.carriageRadius=Math.max(0,l(e.carriageRadius,4)),e.cap.radius=Math.max(0,l(e.cap.radius,4)),e.cap.strokeWidth=Math.max(0,l(e.cap.strokeWidth,1)),e.cap.stackOrder=Et.has(e.cap.stackOrder)?e.cap.stackOrder:"above"}function er(e,t){if(e.zeroValue=l(e.zeroValue,0),e.symmetric=e.symmetric===!0,e.symmetric){let i=Math.max(Math.abs(t.min-e.zeroValue),Math.abs(t.max-e.zeroValue),1);t.min=e.zeroValue-i,t.max=e.zeroValue+i}e.marker.visible=e.marker.visible===!0,e.marker.radius=e.marker.radius===null||e.marker.radius===void 0?null:Math.max(0,l(e.marker.radius,t.scale.radius)),e.marker.position=jt.has(e.marker.position)?e.marker.position:"cross",e.marker.centerOffset=l(e.marker.centerOffset,0),e.marker.length=Math.max(0,l(e.marker.length,20)),e.marker.width=Math.max(.5,l(e.marker.width,3)),e.marker.opacity=Math.min(1,Math.max(0,l(e.marker.opacity,1))),e.marker.lineCap=String(e.marker.lineCap||"round")}function tr(e){e.orientation=Xi.has(e.orientation)?e.orientation:"vertical",e.x=l(e.x,64),e.y=l(e.y,58),e.width=Math.max(20,l(e.width,192)),e.height=Math.max(20,l(e.height,210)),e.cornerRadius=Math.max(0,l(e.cornerRadius,12)),e.windowStrokeWidth=Math.max(0,l(e.windowStrokeWidth,2)),e.windowInnerStrokeWidth=Math.max(0,l(e.windowInnerStrokeWidth,1)),e.minorTickOpacity=Math.min(1,Math.max(0,l(e.minorTickOpacity,.85))),e.majorTickWidth=Math.max(.5,l(e.majorTickWidth,2)),e.minorTickWidth=Math.max(.5,l(e.minorTickWidth,1)),e.majorTickLength=Math.max(0,l(e.majorTickLength,24)),e.minorTickLength=Math.max(0,l(e.minorTickLength,12)),e.tickInset=l(e.tickInset,64),e.labelOffset=l(e.labelOffset,10),e.interval=e.interval===null||e.interval===void 0?null:Math.max(1e-6,l(e.interval,1)),e.minorSubdivisions=Math.max(0,Math.floor(l(e.minorSubdivisions,4))),e.majorSpacing=Math.max(2,l(e.majorSpacing,52)),e.indicatorWidth=Math.max(.5,l(e.indicatorWidth,2.5));let t=e.orientation==="horizontal"?e.width:e.height;e.fadeSize=Math.min(t/2,Math.max(0,l(e.fadeSize,32))),e.colorByZone=e.colorByZone===!0}function ir(e){e.visible=e.visible===!0,e.x=l(e.x,160),e.y=l(e.y,110),e.radius=Math.max(1,l(e.radius,8)),e.color=Di.has(e.color)?e.color:"amber",e.customColor=e.customColor===null||e.customColor===void 0?"":String(e.customColor).trim(),e.offColor=$e(e.offColor,"#f3ead6"),e.offEdgeColor=$e(e.offEdgeColor,"#817768"),e.bezelColor=$e(e.bezelColor,"#4b5563"),e.bezelHighlightColor=$e(e.bezelHighlightColor,"#f8fafc"),e.opacity=Math.min(1,Math.max(0,l(e.opacity,1))),e.on=e.on===!0,e.glow=e.glow!==!1,e.pulse=e.pulse!==!1,e.pulseInterval=Math.max(400,l(e.pulseInterval,2600)),e.blink=e.blink===!0,e.blinkInterval=Math.max(100,l(e.blinkInterval,1e3)),e.trigger=v(e.trigger)?e.trigger:{},e.trigger.mode=Gi.has(e.trigger.mode)?e.trigger.mode:"manual",e.trigger.source=Bi.has(e.trigger.source)?e.trigger.source:"target",e.trigger.value=l(e.trigger.value,0),e.trigger.min=l(e.trigger.min,e.trigger.value),e.trigger.max=l(e.trigger.max,e.trigger.value),e.trigger.max<e.trigger.min&&([e.trigger.min,e.trigger.max]=[e.trigger.max,e.trigger.min])}function $e(e,t){return e==null?t:String(e).trim()||t}function rr(e){e.radius=Math.max(0,l(e.radius,84)),e.fontSize=Math.max(1,l(e.fontSize,11)),e.fractionDigits=Math.max(0,Math.min(12,Math.floor(l(e.fractionDigits,0)))),e.rotation=Wi.has(e.rotation)?e.rotation:"horizontal"}function nr(e){e.visible=e.visible!==!1,et(e.title,14),et(e.value,38),et(e.unit,12),e.value.fractionDigits=Math.max(0,Math.min(12,Math.floor(l(e.value.fractionDigits,0))))}function et(e,t){e.visible=e.visible===!0,e.x=e.x==="auto"?"auto":l(e.x,160),e.y=e.y==="auto"?"auto":l(e.y,0),e.position=Yi.has(e.position)?e.position:"top",e.margin=Math.max(0,l(e.margin,12)),e.offsetX=l(e.offsetX,0),e.offsetY=l(e.offsetY,0),e.fontSize=Math.max(1,l(e.fontSize,t)),e.letterSpacing=l(e.letterSpacing,0)}function or(e){e.duration=Math.max(0,l(e.duration,850)),typeof e.startFrom!="number"&&!["min","max","value"].includes(e.startFrom)&&(e.startFrom="min")}function ar(e){e.amplitude=Math.max(0,l(e.amplitude,.45)),e.amplitudeUnit=e.amplitudeUnit==="percent"?"percent":"value",e.frequency=Math.max(.1,l(e.frequency,4)),e.smoothing=Math.min(.999,Math.max(0,l(e.smoothing,.86)))}function sr(e,t,i,r){return Array.isArray(e)?e.filter(v).map(n=>{let a=n.width===void 0?void 0:Math.max(0,l(n.width,0)),o=lr(n.taper,a??r);return{...n,min:Math.max(t,l(n.min,t)),max:Math.min(i,l(n.max,i)),color:n.color??n.strokeStyle??"transparent",width:a,taper:o,radius:n.radius===void 0?void 0:Math.max(0,l(n.radius,0)),offset:n.offset===void 0?void 0:l(n.offset,0),opacity:n.opacity===void 0?1:Math.min(1,Math.max(0,l(n.opacity,1)))}}).filter(n=>n.max>n.min):[]}function tt(e,t){if(!v(e))return H(t);for(let[i,r]of Object.entries(t))v(r)&&(e[i]=tt(e[i],r));return e}function lr(e,t){if(!v(e))return;let i=e.startWidth===void 0?t:Math.max(0,l(e.startWidth,t??0)),r=e.endWidth===void 0?t:Math.max(0,l(e.endWidth,t??i??0));return{startWidth:i,endWidth:r,segments:Math.max(2,Math.min(256,Math.floor(l(e.segments,48))))}}var ee=class{constructor(t,i,r,n={}){this.host=Mt(t),this.registry=r,this._onDestroy=typeof n.onDestroy=="function"?n.onDestroy:null,this.userOptions=Ee({},i||{}),this.options=je(this.userOptions,r),this.renderer=new We(this.host,this.options),this._destroyed=!1,this._paused=!1,this._pausedAt=0,this._lifecycleSuspendedAt=0,this._onscreen=!0,this._frameHandle=null,this._animation=null,this._targetValue=this._normalizeIncomingValue(this.options.value),this._baseValue=this._targetValue,this._displayValue=this._targetValue,this._pointerValue=this._targetValue,this._jitterOffset=0,this._jitterTarget=0,this._lastJitterTargetAt=0,this._lastFrameAt=0,this._visibilityHandler=null,this._intersectionObserver=null,this._syncLifecycleObservers(),this.render(),this._initializeValue()}render(){this._assertAlive(),this.renderer.options=this.options,this.renderer.begin();let t=this.registry.get(this.options.type),i={gauge:this,options:this.options,renderer:this.renderer,registry:this.registry};for(let r of t.layers){let n=r.render(i);this.renderer.addController(n)}return this._updateDynamic(this._displayValue,!0,this._pointerValue),this.renderer.finish(),R(this.host,"render",{gauge:this,type:this.options.type,value:this._targetValue}),this}setValue(t,i={}){this._assertAlive();let r=this._normalizeIncomingValue(t),n=Math.max(0,l(i.duration,this.options.animation.duration)),a=i.animate!==!1&&this.options.animation.enabled&&n>0&&!this._prefersReducedMotion();if(this._targetValue=r,this.options.value=r,!a)return this._animation=null,this._baseValue=r,this._displayValue=r,this._pointerValue=r,this._jitterOffset=0,this._updateDynamic(r,!0,r),this._ensureLoop(),this._emitChange(),this;let o=$t(i.easing||this.options.animation.easing),s=he();return this._animation={from:this._baseValue,to:r,startedAt:s,duration:n,easing:o},R(this.host,"animationstart",{gauge:this,from:this._animation.from,to:r,duration:n}),this._ensureLoop(),this._emitChange(),this}set(t,i={}){return this.setValue(t,i)}updateOptions(t,i={}){this._assertAlive();let r=t||{};return this._applyUserOptions(Ee(this.userOptions,r),Object.prototype.hasOwnProperty.call(r,"value"),i)}replaceOptions(t={},i={}){this._assertAlive();let r=t||{};return this._applyUserOptions(Ee({},r),Object.prototype.hasOwnProperty.call(r,"value"),i)}setOptions(t,i={}){return this.updateOptions(t,i)}_applyUserOptions(t,i,r){let n=this.options.type;this.userOptions=t,this.options=je(this.userOptions,this.registry),this.renderer.options=this.options,this._syncLifecycleObservers();let a=i?this.options.value:this._targetValue;return this._targetValue=this._normalizeIncomingValue(a),i&&!r.animateToValue?(this._animation=null,this._baseValue=this._targetValue,this._displayValue=this._targetValue,this._pointerValue=this._targetValue,this._jitterOffset=0):(this._baseValue=this._normalizeIncomingValue(this._baseValue),this._displayValue=this._normalizeIncomingValue(this._displayValue),this._pointerValue=this._displayClamp(this._baseValue+this._jitterOffset)),this.options.value=this._targetValue,this.render(),r.animateToValue?this.setValue(this._targetValue,{animate:!0}):this._updateDynamic(this._displayValue,!0,this._pointerValue),n!==this.options.type&&R(this.host,"typechange",{gauge:this,previousType:n,type:this.options.type}),this._ensureLoop(),this}getValue(){return this._targetValue}getDisplayedValue(){return this._displayValue}pause(){return this._destroyed||this._paused?this:(this._paused=!0,this._pausedAt=he(),Se(this._frameHandle),this._frameHandle=null,R(this.host,"pause",{gauge:this}),this)}resume(){if(this._destroyed||!this._paused)return this;let t=he(),i=this._lifecycleSuspendedAt>0?Math.min(this._pausedAt,this._lifecycleSuspendedAt):this._pausedAt;return this._paused=!1,this._animation&&i>0&&(this._animation.startedAt+=Math.max(0,t-i)),this._pausedAt=0,this._lifecycleSuspendedAt=this._isLifecycleBlocked()?t:0,this._lastFrameAt=0,this._ensureLoop(),R(this.host,"resume",{gauge:this}),this}refresh(){return this.render()}destroy(){if(this._destroyed)return;this._destroyed=!0,Se(this._frameHandle),this._frameHandle=null,this._animation=null,this._removeLifecycleObservers(),this.renderer.destroy();let t=this._onDestroy;this._onDestroy=null,t&&t(this),R(this.host,"destroy",{gauge:this})}_initializeValue(){let t=this.options.animation;if(!t.enabled||!t.animateOnInit||t.duration<=0||this._prefersReducedMotion()){this._baseValue=this._targetValue,this._displayValue=this._targetValue,this._pointerValue=this._targetValue,this._updateDynamic(this._targetValue,!0,this._targetValue),this._ensureLoop();return}let i=this._resolveInitialValue(t.startFrom);if(Object.is(i,this._targetValue)){this._updateDynamic(this._targetValue,!0),this._ensureLoop();return}let r=this._targetValue;this._baseValue=i,this._displayValue=i,this._pointerValue=i,this._updateDynamic(i,!0,i),this.setValue(r,{animate:!0})}_resolveInitialValue(t){return typeof t=="number"?this._normalizeIncomingValue(t):t==="max"?this.options.max:t==="value"?this._targetValue:this.options.min}_normalizeIncomingValue(t){let i=l(t,this.options.min);if(this.options.overflow==="allow")return i;if(this.options.overflow==="expand"){let r=!1;return i<this.options.min&&(this.userOptions.min=i,r=!0),i>this.options.max&&(this.userOptions.max=i,r=!0),r&&(this.options=je(this.userOptions,this.registry),this.renderer&&(this.renderer.options=this.options,this.renderer.svg&&this.render())),i}return V(i,this.options.min,this.options.max)}_ensureLoop(){this._destroyed||this._paused||this._frameHandle!==null||this._shouldRun()&&(this._frameHandle=St(t=>this._frame(t)))}_frame(t){if(this._frameHandle=null,this._destroyed||this._paused||!this._shouldRun())return;let i=Number.isFinite(t)?t:he(),r=this._lastFrameAt>0?Math.min(100,Math.max(0,i-this._lastFrameAt)):16.667;this._lastFrameAt=i;let n=!1;if(this._animation){let h=i-this._animation.startedAt,f=this._animation.duration<=0?1:V(h/this._animation.duration,0,1),m=this._animation.easing(f);if(this._baseValue=this._animation.from+(this._animation.to-this._animation.from)*m,f>=1){let g=this._animation;this._baseValue=g.to,this._animation=null,n=!0,R(this.host,"animationend",{gauge:this,value:g.to})}}let a=this.options.effects.jitter;if(a.enabled&&(!a.whenIdleOnly||!this._animation)){let h=1e3/a.frequency;(this._lastJitterTargetAt===0||i-this._lastJitterTargetAt>=h)&&(this._jitterTarget=(Math.random()*2-1)*this._jitterAmplitude(),this._lastJitterTargetAt=i);let f=1-Math.pow(a.smoothing,r/16.667);this._jitterOffset+=(this._jitterTarget-this._jitterOffset)*f}else{this._jitterTarget=0;let h=1-Math.pow(a.smoothing,r/16.667);this._jitterOffset+=(0-this._jitterOffset)*h,Math.abs(this._jitterOffset)<1e-6&&(this._jitterOffset=0)}let s=this._displayClamp(this._baseValue),c=this._displayClamp(this._baseValue+this._jitterOffset);this._updateDynamic(s,!1,c),n&&this._emitSettled(),this._needsAnotherFrame()&&this._ensureLoop()}_needsAnotherFrame(){return this._animation||this.options.effects.jitter.enabled?!0:Math.abs(this._jitterOffset)>1e-6}_jitterAmplitude(){let t=this.options.effects.jitter;return t.amplitudeUnit==="percent"?(this.options.max-this.options.min)*t.amplitude/100:t.amplitude}_displayClamp(t){return this.options.overflow==="allow"?t:V(t,this.options.min,this.options.max)}_updateDynamic(t,i,r=t){let n=cr(t,this.options.precision),a=!Object.is(n,this._displayValue),o=!Object.is(r,this._pointerValue);!i&&!a&&!o||(this._displayValue=n,this._pointerValue=r,this.renderer.update(n,{gauge:this,targetValue:this._targetValue,baseValue:this._baseValue,pointerValue:r,animated:!!this._animation,jitterOffset:this._jitterOffset}),(i||a)&&(this._updateAccessibility(n),R(this.host,"displaychange",{gauge:this,value:this._targetValue,displayedValue:n})))}_updateAccessibility(t){let i=this.renderer.root;if(!i)return;i.setAttribute("role","meter"),i.setAttribute("aria-label",this.options.accessibility.label),i.setAttribute("aria-valuemin",String(this.options.min)),i.setAttribute("aria-valuemax",String(this.options.max)),i.setAttribute("aria-valuenow",String(t));let r=this.options.accessibility.valueText;typeof r=="function"?i.setAttribute("aria-valuetext",String(r(t,this.options))):typeof r=="string"&&r?i.setAttribute("aria-valuetext",r):i.removeAttribute("aria-valuetext")}_emitChange(){R(this.host,"change",{gauge:this,value:this._targetValue,displayedValue:this._displayValue})}_emitSettled(){R(this.host,"settled",{gauge:this,value:this._targetValue,displayedValue:this._displayValue})}_syncLifecycleObservers(){this._removeLifecycleObservers(),this._onscreen=!0,this._lifecycleSuspendedAt=0,this._installLifecycleObservers()}_removeLifecycleObservers(){this._visibilityHandler&&typeof document<"u"&&document.removeEventListener("visibilitychange",this._visibilityHandler),this._visibilityHandler=null,this._intersectionObserver&&this._intersectionObserver.disconnect(),this._intersectionObserver=null}_installLifecycleObservers(){typeof document<"u"&&this.options.performance.pauseWhenHidden&&(this._visibilityHandler=()=>{if(document.hidden){this._suspendForLifecycle();return}this._resumeFromLifecycle()},document.addEventListener("visibilitychange",this._visibilityHandler,{passive:!0}),document.hidden&&this._suspendForLifecycle()),typeof IntersectionObserver=="function"&&this.options.performance.pauseWhenOffscreen&&(this._intersectionObserver=new IntersectionObserver(t=>{let i=t[0];this._onscreen=!!(i&&i.isIntersecting),this._onscreen?this._resumeFromLifecycle():this._suspendForLifecycle()},{rootMargin:"100px"}),this._intersectionObserver.observe(this.host))}_shouldRun(){return this._isLifecycleBlocked()?!1:this._needsAnotherFrame()}_isLifecycleBlocked(){return typeof document<"u"&&this.options.performance.pauseWhenHidden&&document.hidden?!0:this.options.performance.pauseWhenOffscreen&&!this._onscreen}_suspendForLifecycle(){this._lifecycleSuspendedAt===0&&(this._lifecycleSuspendedAt=he()),Se(this._frameHandle),this._frameHandle=null}_resumeFromLifecycle(){typeof document<"u"&&this.options.performance.pauseWhenHidden&&document.hidden||this.options.performance.pauseWhenOffscreen&&!this._onscreen||this._paused||(this._lifecycleSuspendedAt>0&&this._animation&&(this._animation.startedAt+=Math.max(0,he()-this._lifecycleSuspendedAt)),this._lifecycleSuspendedAt=0,this._lastFrameAt=0,this._ensureLoop())}_prefersReducedMotion(){return!this.options.animation.respectReducedMotion||typeof matchMedia!="function"?!1:matchMedia("(prefers-reduced-motion: reduce)").matches}_assertAlive(){if(this._destroyed)throw new Error("This Gaugeit instance has been destroyed.")}};function he(){return typeof performance<"u"&&typeof performance.now=="function"?performance.now():Date.now()}function cr(e,t){let i=Math.pow(10,t);return Math.round(e*i)/i}var fe=class{constructor(){this._types=new Map}register(t,i){let r=String(t||"").trim();if(!r)throw new TypeError("Gauge type name must be a non-empty string.");if(!v(i))throw new TypeError(`Gauge type "${r}" must be an object.`);if(!Array.isArray(i.layers)||i.layers.length===0)throw new TypeError(`Gauge type "${r}" must define at least one layer.`);let n=i.layers.map((a,o)=>{if(!a||typeof a.render!="function")throw new TypeError(`Layer ${o} in gauge type "${r}" must expose render(context).`);return a});return this._types.set(r,{name:r,defaults:H(i.defaults||{}),layers:n,description:String(i.description||""),configure:typeof i.configure=="function"?i.configure:null}),this}get(t){let i=this._types.get(String(t));if(!i)throw new Error(`Unknown Gaugeit gauge type: ${t}`);return i}has(t){return this._types.has(String(t))}names(){return[...this._types.keys()]}describe(){return[...this._types.values()].map(t=>({name:t.name,description:t.description}))}},te=new fe;var O={id:"face",render(e){let{options:t,renderer:i}=e,r=t.face;if(!r.visible)return null;let n=i.group("face",{"aria-hidden":"true"}),a=ve(t,i.getContentBounds()),o=`${i.id}-face-shadow`,s=`${i.id}-glass`,c=`${i.id}-face-content-clip`,h=Math.max(3,r.strokeWidth+2),f=ur(a,h),m=u("defs");if(r.shadow){let d=u("filter",{id:o,x:"-20%",y:"-20%",width:"140%",height:"140%"});d.append(u("feDropShadow",{dx:0,dy:3,stdDeviation:4,"flood-color":"#000000","flood-opacity":.18})),m.append(d)}if(r.glass){let d=u("linearGradient",{id:s,x1:"0%",y1:"0%",x2:"0%",y2:"100%"});d.append(u("stop",{offset:"0%","stop-color":"#ffffff","stop-opacity":.38}),u("stop",{offset:"48%","stop-color":"#ffffff","stop-opacity":.06}),u("stop",{offset:"100%","stop-color":"#ffffff","stop-opacity":0})),m.append(d)}if(r.clipContent){let d=u("clipPath",{id:c,clipPathUnits:"userSpaceOnUse"});d.append(it(r,f,{fill:"#ffffff",stroke:"none"},Math.max(0,r.cornerRadius-h))),m.append(d),i.setContentClipPath(c)}m.children.length>0&&n.append(m);let g=it(r,a,{fill:r.color,stroke:r.strokeColor,"stroke-width":r.strokeWidth,filter:r.shadow?`url(#${o})`:void 0});if(g.classList.add("gaugeit__face"),n.append(g),n.append(it(r,f,{class:"gaugeit__face-inner",fill:"none",stroke:r.innerStrokeColor,"stroke-width":r.innerStrokeWidth},Math.max(0,r.cornerRadius-h))),r.glass)if(r.shape==="circle"){let d=Math.min(a.width,a.height)/2;n.append(u("ellipse",{class:"gaugeit__glass",cx:a.x+a.width/2,cy:a.y+a.height/2-d*.27,rx:d*.68,ry:d*.32,fill:`url(#${s})`,"pointer-events":"none"}))}else n.append(u("path",{class:"gaugeit__glass",d:`M ${a.x+14} ${a.y+14} H ${a.x+a.width-14} V ${a.y+a.height*.52} Q ${a.x+a.width/2} ${a.y+a.height*.38} ${a.x+14} ${a.y+a.height*.52} Z`,fill:`url(#${s})`,"pointer-events":"none"}));return null}};function ur(e,t){return{x:e.x+t,y:e.y+t,width:Math.max(1,e.width-t*2),height:Math.max(1,e.height-t*2)}}function it(e,t,i={},r=e.cornerRadius){if(e.shape==="circle")return u("circle",{cx:t.x+t.width/2,cy:t.y+t.height/2,r:Math.max(1,Math.min(t.width,t.height)/2),...i});let n=Math.max(0,Math.min(r,t.width/2,t.height/2));return u("rect",{x:t.x,y:t.y,width:t.width,height:t.height,rx:n,ry:n,...i})}var j={id:"zones",render(e){let{options:t,renderer:i}=e,r=i.group("zones",{"aria-hidden":"true"}),n=ae(t.min,t.max,t.zones);t.track.showUnderZones&&t.track.visible&&a(r,t.min,t.max,t.track,"gaugeit__track");for(let o of n){let s=o.zone||t.track;(o.zone?!T(o.zone.color):t.track.visible&&!t.track.showUnderZones)&&a(r,o.min,o.max,s,o.zone?"gaugeit__zone":"gaugeit__track")}return null;function a(o,s,c,h,f){let m=hr(s,c,h,f,t);for(let g of m)h.className&&g.classList.add(String(h.className)),o.append(g)}}};function hr(e,t,i,r,n){let a=n.geometry,o=i.radius??n.track.radius??a.radius,s=i.width??n.track.width,c=i.color??n.track.color,h=i.opacity??1,f=i.lineCap||n.track.lineCap||"butt",m=L(e,n),g=L(t,n);if(!i.taper)return[u("path",{class:r,d:Oe(a.centerX,a.centerY,o,m,g),fill:"none",stroke:c,"stroke-width":s,"stroke-linecap":f,opacity:h})];let d=Nt(i,e,s),y=Nt(i,t,s),w=[u("path",{class:`${r} ${r}--tapered`,d:Ae(a.centerX,a.centerY,o,m,g,d,y,i.taper.segments),fill:c,stroke:"none",opacity:h})];if(f==="round"){let x=b(a.centerX,a.centerY,o,m),_=b(a.centerX,a.centerY,o,g),B=Math.abs(e-i.min)<1e-9,P=Math.abs(t-i.max)<1e-9;B&&d>0&&w.push(Yt(r,x,d,c,h,"start")),P&&y>0&&w.push(Yt(r,_,y,c,h,"end"))}return w}function Nt(e,t,i){let r=e.taper||{},n=Math.max(0,l(r.startWidth,i)),a=Math.max(0,l(r.endWidth,i)),o=Math.max(1e-12,e.max-e.min),s=Math.min(1,Math.max(0,(t-e.min)/o));return n+(a-n)*s}function Yt(e,t,i,r,n,a){return u("circle",{class:`${e} ${e}--taper-cap`,"data-gaugeit-zone-cap":a,cx:t.x,cy:t.y,r:i/2,fill:r,opacity:n})}var E={id:"ticks",render(e){let{options:t,renderer:i}=e,r=t.scale;if(!r.major.visible&&!r.minor.visible)return null;let n=i.group("ticks",{"aria-hidden":"true"}),a=q(t),o=I(t.min,t.max,a),s=Q(o,t),c=oe(o,r.minor.subdivisions);return r.minor.visible&&r.minor.length>0&&r.minor.width>0&&c.length&&n.append(u("path",{class:"gaugeit__ticks gaugeit__ticks--minor",d:h(c,r.minor.length),fill:"none",stroke:r.minor.color,"stroke-width":r.minor.width,"stroke-linecap":"butt",opacity:r.minor.opacity})),r.major.visible&&r.major.length>0&&r.major.width>0&&n.append(u("path",{class:"gaugeit__ticks gaugeit__ticks--major",d:h(s,r.major.length),fill:"none",stroke:r.major.color,"stroke-width":r.major.width,"stroke-linecap":"butt",opacity:r.major.opacity})),i.setReference("majorValues",s),null;function h(f,m){let g=[];for(let d of f){let y=L(d,t),w=fr(r.radius,m,r.position),x=b(t.geometry.centerX,t.geometry.centerY,w.start,y),_=b(t.geometry.centerX,t.geometry.centerY,w.end,y);g.push(`M ${p(x.x)} ${p(x.y)} L ${p(_.x)} ${p(_.y)}`)}return g.join(" ")}}};function fr(e,t,i){return i==="outside"?{start:e,end:e+t}:i==="cross"?{start:e-t/2,end:e+t/2}:{start:e,end:e-t}}var N={id:"labels",render(e){let{options:t,renderer:i}=e,r=t.labels;if(!r.visible)return null;let n=i.group("labels",{"aria-hidden":"true"}),a=Number(r.interval)>0?Number(r.interval):q(t),o=Q(I(t.min,t.max,a),t);for(let s of o){let c=L(s,t),h=b(t.geometry.centerX,t.geometry.centerY,r.radius,c),f=u("text",{class:"gaugeit__label",x:h.x,y:h.y,fill:r.color,"font-family":r.fontFamily,"font-size":r.fontSize,"font-weight":r.fontWeight,"text-anchor":"middle","dominant-baseline":"middle",transform:dr(r.rotation,c,h)},mr(s,r,t));n.append(f)}return null}};function dr(e,t,i){if(e==="radial")return`rotate(${t} ${i.x} ${i.y})`;if(e==="tangent")return`rotate(${t+90} ${i.x} ${i.y})`}function mr(e,t,i){return typeof t.formatter=="function"?t.formatter(e,{min:i.min,max:i.max,options:i}):Number(e).toFixed(t.fractionDigits)}var Y={id:"pointer",render(e){let{options:t,renderer:i}=e,r=t.pointer;if(!r.visible)return null;let n=t.geometry,a=i.group("pointer",{"aria-hidden":"true"}),o=u("g",{class:"gaugeit__pointer-rotating"}),s=pr(r,n);o.append(s);let c=null;return r.cap.visible&&(c=u("circle",{class:"gaugeit__pointer-cap",cx:n.centerX,cy:n.centerY,r:r.cap.radius,fill:r.cap.color,stroke:r.cap.strokeColor,"stroke-width":r.cap.strokeWidth})),gr(a,o,c,r.cap.stackOrder),{update(h,f={}){let m=Number.isFinite(f.pointerValue)?f.pointerValue:h,g=L(m,t,t.overflow!=="allow");if(o.setAttribute("transform",`rotate(${g} ${n.centerX} ${n.centerY})`),r.colorByZone){let d=Z(m,t.zones),y=d&&!T(d.color)?d.color:r.color;s.tagName.toLowerCase()==="line"?s.setAttribute("stroke",y):s.setAttribute("fill",y)}}}}};function gr(e,t,i,r){i&&r==="below"?e.append(i,t):i?e.append(t,i):e.append(t)}function pr(e,t){let i=t.centerX,r=t.centerY,n=e.length,a=e.tailLength,o=e.width/2,s=yr(e),c;if(e.type==="line")c=u("line",{class:"gaugeit__pointer gaugeit__pointer--line",x1:i-a,y1:r,x2:i+n,y2:r,stroke:e.color,"stroke-width":e.width,"stroke-linecap":"round"});else{let h;if(e.type==="arrow")h=[[i-a,r-o*.55],[i+s,r-o*.55],[i+s,r-o*1.5],[i+n,r],[i+s,r+o*1.5],[i+s,r+o*.55],[i-a,r+o*.55]];else if(e.type==="spear"){let m=s+(n-s)*.56;h=[[i-a,r-o*.45],[i+s,r-o*.38],[i+m,r-o*.85],[i+n,r],[i+m,r+o*.85],[i+s,r+o*.38],[i-a,r+o*.45]]}else h=[[i-a,r-o*.65],[i+s,r-o*.22],[i+n,r],[i+s,r+o*.22],[i-a,r+o*.65]];let f=h.map((m,g)=>`${g===0?"M":"L"} ${m[0]} ${m[1]}`).join(" ");c=u("path",{class:`gaugeit__pointer gaugeit__pointer--${e.type}`,d:`${f} Z`,fill:e.color})}return F(c,{opacity:e.opacity,stroke:e.type==="line"?e.color:e.strokeColor,"stroke-width":e.type==="line"?e.width:e.strokeWidth}),c}function yr(e){return Number.isFinite(e.shaftLength)?Math.min(e.length,Math.max(0,e.shaftLength)):e.type==="arrow"?e.length*.7:e.type==="spear"?e.length*.68:e.length*.86}var A={id:"readout",render(e){let{options:t,renderer:i}=e,r=t.readout;if(!r.visible)return null;let n=i.group("readout");r.title.visible&&r.title.text&&n.append(rt("title",r.title,r.title.text,t));let a=null,o=xr(r.value,t);return r.value.visible&&(a=rt("value",r.value,"",t),a.setAttribute("aria-hidden","true"),n.append(a)),r.unit.visible&&r.unit.text&&n.append(rt("unit",r.unit,r.unit.text,t)),{update(s){a&&(a.textContent=o(s))}}}};function rt(e,t,i,r){let n=be(t,r);return u("text",{class:`gaugeit__readout gaugeit__readout--${e}`,x:n.x,y:n.y,fill:t.color,"font-family":t.fontFamily,"font-size":t.fontSize,"font-weight":t.fontWeight,"letter-spacing":t.letterSpacing,"text-anchor":"middle","dominant-baseline":"middle"},i)}function xr(e,t){if(typeof e.formatter=="function")return r=>String(e.formatter(r,{min:t.min,max:t.max,options:t}));let i=new Intl.NumberFormat(e.locale,{minimumFractionDigits:e.fractionDigits,maximumFractionDigits:e.fractionDigits});return r=>`${e.prefix||""}${i.format(r)}${e.suffix||""}`}var nt=Object.freeze({red:{core:"#ef4444",highlight:"#fecaca",glow:"#f87171",rim:"#7f1d1d"},green:{core:"#22c55e",highlight:"#bbf7d0",glow:"#4ade80",rim:"#14532d"},blue:{core:"#3b82f6",highlight:"#bfdbfe",glow:"#60a5fa",rim:"#1e3a8a"},amber:{core:"#f59e0b",highlight:"#fde68a",glow:"#fb923c",rim:"#92400e"},yellow:{core:"#fde047",highlight:"#fef9c3",glow:"#facc15",rim:"#a16207"},orange:{core:"#f97316",highlight:"#fed7aa",glow:"#fb923c",rim:"#9a3412"},white:{core:"#f8fafc",highlight:"#ffffff",glow:"#e2e8f0",rim:"#64748b"},halogen:{core:"#fff2bf",highlight:"#fffdf0",glow:"#ffe79a",rim:"#9a7b24"},cyan:{core:"#22d3ee",highlight:"#cffafe",glow:"#67e8f9",rim:"#155e75"},brown:{core:"#a16207",highlight:"#f5d0a1",glow:"#d6a56b",rim:"#5b3b10"}}),C={id:"light",render({options:e,renderer:t}){let i=e.light;if(!i?.visible)return null;let{x:r,y:n}=ce(i,e),a=br(i),o=Object.prototype.hasOwnProperty.call(nt,i.color)?i.color:"amber",s=`${t.id}-light-glow`,c=`${t.id}-light-on`,h=`${t.id}-light-off`,f=`${t.id}-light-bezel`,m=u("defs");m.append(vr(s,i.radius),Ft(c,{center:"#ffffff",highlight:a.highlight,middle:a.core,edge:a.rim}),Ft(h,{center:"#fffdf7",highlight:i.offColor,middle:i.offColor,edge:i.offEdgeColor}),wr(f,i));let g=t.group("light",{"aria-hidden":"true"});g.append(m);let d=u("g",{class:`gaugeit__light gaugeit__light--${o}`,transform:`translate(${r} ${n})`,"data-gaugeit-light-color":o,"data-gaugeit-light-state":"off"});d.style.setProperty("--gaugeit-light-blink-duration",`${i.blinkInterval}ms`),d.style.setProperty("--gaugeit-light-pulse-duration",`${i.pulseInterval}ms`),d.style.setProperty("--gaugeit-light-opacity",String(i.opacity));let y=u("circle",{class:"gaugeit__light-bezel",cx:0,cy:0,r:i.radius+Math.max(1.8,i.radius*.2),fill:`url(#${f})`}),w=u("circle",{class:"gaugeit__light-bezel-highlight",cx:0,cy:0,r:i.radius+Math.max(.75,i.radius*.08),fill:"none",stroke:i.bezelHighlightColor,"stroke-width":Math.max(.55,i.radius*.075),"stroke-opacity":.65}),x=Rt({state:"off",radius:i.radius,gradientId:h,edgeColor:i.offEdgeColor,glowColor:null,glowFilterId:null,sparkleOpacity:.58,shadeOpacity:.14}),_=Rt({state:"on",radius:i.radius,gradientId:c,edgeColor:a.rim,glowColor:a.glow,glowFilterId:s,sparkleOpacity:.72,shadeOpacity:.1});return d.append(y,w,x,_),g.append(d),{update(B,P={}){let ie=kr(i.trigger?.source,B,P),X=ze(i,ie),me=X&&i.blink,Ge=X&&i.pulse&&!me;d.classList.toggle("is-on",X),d.classList.toggle("is-blinking",me),d.classList.toggle("is-pulsing",Ge),d.classList.toggle("has-glow",i.glow),d.setAttribute("data-gaugeit-light-state",X?"on":"off")}}}};function Rt({state:e,radius:t,gradientId:i,edgeColor:r,glowColor:n,glowFilterId:a,sparkleOpacity:o,shadeOpacity:s}){let c=u("g",{class:`gaugeit__light-emission gaugeit__light-emission--${e}`,"data-gaugeit-light-visual":e});return n&&a&&c.append(u("circle",{class:"gaugeit__light-glow",cx:0,cy:0,r:t*1.82,fill:n,filter:`url(#${a})`})),c.append(u("circle",{class:`gaugeit__light-bulb gaugeit__light-bulb--${e}`,cx:0,cy:0,r:t,fill:`url(#${i})`,stroke:r,"stroke-width":Math.max(.8,t*.13)}),u("path",{class:`gaugeit__light-lens-shade gaugeit__light-lens-shade--${e}`,d:_r(t),fill:r,opacity:s}),u("ellipse",{class:`gaugeit__light-sparkle gaugeit__light-sparkle--${e}`,cx:-t*.29,cy:-t*.35,rx:Math.max(.8,t*.36),ry:Math.max(.6,t*.2),fill:"#ffffff",opacity:o})),c}function br(e){let t=nt[e.color]||nt.amber,i=String(e.customColor||"").trim();return i?{core:i,highlight:"#ffffff",glow:i,rim:i}:t}function vr(e,t){let i=u("filter",{id:e,x:"-120%",y:"-120%",width:"340%",height:"340%"});return i.append(u("feGaussianBlur",{stdDeviation:Math.max(1.4,t*.38)})),i}function Ft(e,t){let i=u("radialGradient",{id:e,cx:"31%",cy:"27%",r:"74%"});return i.append(u("stop",{offset:"0%","stop-color":t.center,"stop-opacity":.98}),u("stop",{offset:"23%","stop-color":t.highlight,"stop-opacity":.96}),u("stop",{offset:"62%","stop-color":t.middle,"stop-opacity":1}),u("stop",{offset:"100%","stop-color":t.edge,"stop-opacity":1})),i}function wr(e,t){let i=u("linearGradient",{id:e,x1:"0%",y1:"0%",x2:"100%",y2:"100%"});return i.append(u("stop",{offset:"0%","stop-color":t.bezelHighlightColor,"stop-opacity":.92}),u("stop",{offset:"34%","stop-color":t.bezelColor,"stop-opacity":.9}),u("stop",{offset:"72%","stop-color":t.bezelColor,"stop-opacity":1}),u("stop",{offset:"100%","stop-color":"#1f2937","stop-opacity":.92})),i}function _r(e){let t=Math.max(1,e);return[`M ${-t*.86} ${t*.42}`,`A ${t} ${t} 0 0 0 ${t*.86} ${t*.42}`,`A ${t} ${t} 0 0 1 ${-t*.86} ${t*.42}`,"Z"].join(" ")}function kr(e,t,i){return e==="pointer"&&Number.isFinite(i.pointerValue)?i.pointerValue:e==="displayed"?t:Number.isFinite(i.targetValue)?i.targetValue:t}var ot={description:"A lightweight semicircular arc with zones, labels, and an animated pointer.",defaults:{geometry:{width:320,height:220,centerX:160,centerY:176,radius:120,startAngle:180,endAngle:360},face:{visible:!1},track:{visible:!0,color:"#e5e7eb",width:28,radius:112,lineCap:"butt"},scale:{radius:112,position:"inside",major:{visible:!1},minor:{visible:!1}},labels:{visible:!0,radius:82,fontSize:11,fontWeight:600},pointer:{type:"needle",length:91,tailLength:12,width:8,cap:{radius:7,stackOrder:"above"}},light:{visible:!1,x:160,y:142,radius:7,color:"amber"},readout:{title:{visible:!1,x:"auto",y:35},value:{visible:!1,x:160,y:130,fontSize:30},unit:{visible:!1,x:160,y:150}}},layers:[O,j,E,N,C,A,Y]};var at={description:"A framed white analog instrument inspired by vintage electrical and pressure meters.",defaults:{layout:{includeGeometry:!1},geometry:{width:320,height:260,centerX:160,centerY:183,radius:124,startAngle:195,endAngle:345},face:{visible:!0,shape:"panel",fit:"content",clipContent:!0,x:7,y:7,width:306,height:246,cornerRadius:20,color:"#fffef8",strokeColor:"#4b5563",strokeWidth:3,innerStrokeColor:"#d1d5db",innerStrokeWidth:1.2,shadow:!0,glass:!0},track:{visible:!1,width:8,radius:119},scale:{radius:119,position:"inside",major:{visible:!0,divisions:5,length:17,width:2.4,color:"#111827"},minor:{visible:!0,subdivisions:4,length:9,width:1,color:"#4b5563"}},labels:{visible:!0,radius:89,fontSize:12,fontWeight:650},pointer:{type:"spear",length:99,tailLength:15,width:9,color:"#111827",cap:{visible:!0,stackOrder:"above",radius:10,color:"#20242a",strokeColor:"#d1d5db",strokeWidth:2}},light:{visible:!1,x:112,y:112,radius:8,color:"amber"},readout:{title:{visible:!0,text:"ANALOG",x:"auto",y:"auto",position:"top",margin:12,offsetY:18,fontSize:13,letterSpacing:1.6},value:{visible:!1,x:160,y:224,fontSize:24,fontWeight:750},unit:{visible:!1,x:160,y:242,fontSize:10}}},layers:[O,j,E,N,C,A,Y]};var st={description:"A dense line-scale gauge with independently configurable major and minor ticks.",defaults:{geometry:{width:320,height:225,centerX:160,centerY:184,radius:127,startAngle:180,endAngle:360},face:{visible:!1},track:{visible:!0,color:"#cbd5e1",width:2,radius:126,lineCap:"round"},scale:{radius:124,position:"inside",major:{visible:!0,divisions:8,length:23,width:2.4,color:"#0f172a"},minor:{visible:!0,subdivisions:4,length:11,width:1,color:"#475569"}},labels:{visible:!0,radius:88,fontSize:10,fontWeight:650},pointer:{type:"line",length:101,tailLength:10,width:4,color:"#b91c1c",cap:{visible:!0,stackOrder:"above",radius:7,color:"#b91c1c",strokeColor:"#ffffff",strokeWidth:2}},light:{visible:!1,x:160,y:151,radius:7,color:"amber"},readout:{title:{visible:!1,x:"auto",y:140},value:{visible:!1,x:160,y:220,fontSize:33},unit:{visible:!1,x:160,y:240}}},layers:[O,j,E,N,C,A,Y]};var lt={description:"A circular, glass-fronted vintage instrument with a 270-degree scale.",defaults:{geometry:{width:320,height:320,centerX:160,centerY:160,radius:132,startAngle:225,endAngle:495},face:{visible:!0,shape:"circle",fit:"geometry",clipContent:!0,x:8,y:8,width:304,height:304,cornerRadius:0,color:"#fffdf5",strokeColor:"#374151",strokeWidth:4,innerStrokeColor:"#c7bfae",innerStrokeWidth:1.4,shadow:!0,glass:!0},track:{visible:!1,width:7,radius:124},scale:{endpointMode:"auto",radius:124,position:"inside",major:{visible:!0,divisions:9,length:18,width:2.6,color:"#171717"},minor:{visible:!0,subdivisions:4,length:9,width:1,color:"#57534e"}},labels:{visible:!0,radius:92,fontSize:11,fontWeight:700},pointer:{type:"spear",length:104,tailLength:18,width:9,color:"#7f1d1d",cap:{visible:!0,stackOrder:"above",radius:11,color:"#292524",strokeColor:"#d6d3d1",strokeWidth:2}},light:{visible:!1,x:108,y:110,radius:10,color:"amber",blink:!1,blinkInterval:1e3,trigger:{mode:"below",source:"target",value:15,min:0,max:15}},readout:{title:{visible:!0,text:"HERITAGE",x:"auto",y:"auto",position:"top",margin:14,offsetY:85,fontSize:13,letterSpacing:1.8},value:{visible:!1,x:"auto",y:224,fontSize:25,fontWeight:750},unit:{visible:!1,x:"auto",y:244,fontSize:10}}},layers:[O,j,E,N,C,A,Y]};var Ne={id:"linear-zones",render(e){let{options:t,renderer:i}=e,r=i.group("linear-zones",{"aria-hidden":"true"}),n=ae(t.min,t.max,t.zones);t.track.showUnderZones&&t.track.visible&&r.append(a(t.min,t.max,t.track,"gaugeit__track"));for(let o of n){let s=o.zone||t.track;if(!(o.zone?!T(o.zone.color):t.track.visible&&!t.track.showUnderZones))continue;let h=o.zone?"gaugeit__zone":"gaugeit__track",f=a(o.min,o.max,s,h);o.zone&&o.zone.className&&f.classList.add(String(o.zone.className)),r.append(f)}return null;function a(o,s,c,h){let f=k(t),m=z(c.offset??t.linear.zoneOffset),g=S(M(o,t),f,m),d=S(M(s,t),f,m);return u("line",{class:h,x1:g.x,y1:g.y,x2:d.x,y2:d.y,stroke:c.color??t.track.color,"stroke-width":c.width??t.track.width,"stroke-linecap":c.lineCap||t.track.lineCap||"butt",opacity:c.opacity??1})}}};var Ye={id:"linear-ticks",render(e){let{options:t,renderer:i}=e,r=t.scale;if(!r.major.visible&&!r.minor.visible)return null;let n=i.group("linear-ticks",{"aria-hidden":"true"}),a=q(t),o=I(t.min,t.max,a),s=oe(o,r.minor.subdivisions);return r.minor.visible&&r.minor.length>0&&r.minor.width>0&&s.length&&n.append(u("path",{class:"gaugeit__ticks gaugeit__ticks--minor gaugeit__linear-ticks",d:c(s,r.minor.length),fill:"none",stroke:r.minor.color,"stroke-width":r.minor.width,"stroke-linecap":"butt",opacity:r.minor.opacity})),r.major.visible&&r.major.length>0&&r.major.width>0&&n.append(u("path",{class:"gaugeit__ticks gaugeit__ticks--major gaugeit__linear-ticks",d:c(o,r.major.length),fill:"none",stroke:r.major.color,"stroke-width":r.major.width,"stroke-linecap":"butt",opacity:r.major.opacity})),i.setReference("majorValues",o),null;function c(h,f){let m=k(t),g=W(f,t.linear.tickSide),d=[];for(let y of h){let w=M(y,t),x=S(w,m,g.start),_=S(w,m,g.end);d.push(`M ${p(x.x)} ${p(x.y)} L ${p(_.x)} ${p(_.y)}`)}return d.join(" ")}}};var Re={id:"linear-labels",render(e){let{options:t,renderer:i}=e,r=t.labels;if(!r.visible)return null;let n=i.group("linear-labels",{"aria-hidden":"true"}),a=Number(r.interval)>0?Number(r.interval):q(t),o=I(t.min,t.max,a),s=k(t);for(let c of o){let h=S(M(c,t),s,z(t.linear.labelOffset)),f=u("text",{class:"gaugeit__label gaugeit__linear-label",x:h.x,y:h.y,fill:r.color,"font-family":r.fontFamily,"font-size":r.fontSize,"font-weight":r.fontWeight,"text-anchor":"middle","dominant-baseline":"middle",transform:Mr(r.rotation,s.angle,h)},Sr(c,r,t));n.append(f)}return null}};function Mr(e,t,i){if(e==="radial")return`rotate(${t+90} ${i.x} ${i.y})`;if(e==="tangent")return`rotate(${t} ${i.x} ${i.y})`}function Sr(e,t,i){return typeof t.formatter=="function"?t.formatter(e,{min:i.min,max:i.max,options:i}):Number(e).toFixed(t.fractionDigits)}var Fe={id:"linear-indicator",render(e){let{options:t,renderer:i}=e,r=t.indicator;if(!r.visible)return null;let n=k(t),a=se(r),o=i.group("linear-indicator",{"aria-hidden":"true"}),s=u("g",{class:"gaugeit__linear-indicator-moving"}),c=Lr(r,a);s.append(c);let h=null;return r.cap.visible&&(h=u("circle",{class:"gaugeit__linear-indicator-cap",cx:0,cy:a,r:r.cap.radius,fill:r.cap.color,stroke:r.cap.strokeColor,"stroke-width":r.cap.strokeWidth}),r.cap.stackOrder==="below"?s.prepend(h):s.append(h)),o.append(s),{update(f,m={}){let g=Number.isFinite(m.pointerValue)?m.pointerValue:f,d=M(g,t,t.overflow!=="allow");if(s.setAttribute("transform",`translate(${d.x} ${d.y}) rotate(${n.angle})`),r.colorByZone){let y=Z(g,t.zones),w=y&&!T(y.color)?y.color:r.color;Ar(c,r,w)}}}}};function Lr(e,t){let i=W(e.length,e.position,t),r;if(e.type==="marker"){let n=Or(e.position);if(n===0){let a=e.markerSize,o=t;r=u("path",{class:"gaugeit__linear-indicator gaugeit__linear-indicator--marker",d:`M 0 ${o-a} L ${a*.72} ${o} L 0 ${o+a} L ${-a*.72} ${o} Z`,fill:e.color})}else{let a=t,o=a+n*e.markerSize,s=e.markerSize*.72;r=u("path",{class:"gaugeit__linear-indicator gaugeit__linear-indicator--marker",d:`M 0 ${a} L ${s} ${o} L ${-s} ${o} Z`,fill:e.color})}}else if(e.type==="carriage"){let n=Math.min(i.start,i.end);r=u("rect",{class:"gaugeit__linear-indicator gaugeit__linear-indicator--carriage",x:-e.carriageWidth/2,y:n,width:e.carriageWidth,height:Math.max(1,Math.abs(i.end-i.start)),rx:e.carriageRadius,ry:e.carriageRadius,fill:e.color})}else r=u("line",{class:"gaugeit__linear-indicator gaugeit__linear-indicator--hairline",x1:0,y1:i.start,x2:0,y2:i.end,stroke:e.color,"stroke-width":e.width,"stroke-linecap":e.lineCap});return F(r,{opacity:e.opacity,stroke:e.type==="hairline"?e.color:e.strokeColor,"stroke-width":e.type==="hairline"?e.width:e.strokeWidth}),r}function Or(e){return e==="negative"?-1:e==="positive"?1:0}function Ar(e,t,i){t.type==="hairline"?e.setAttribute("stroke",i):e.setAttribute("fill",i)}function Pt(e,t){let i=v(t.requested?.geometry)?t.requested.geometry:{},r=t.typeDefaults?.geometry||{},n=ct(i,"width"),a=ct(i,"height"),o=ct(i,"aspectRatio"),s=l(i.aspectRatio,0);if(o&&s>0){if(n&&!a)e.geometry.height=e.geometry.width/s;else if(a&&!n)e.geometry.width=e.geometry.height*s;else if(!n&&!a){let c=l(r.width,e.geometry.width);e.geometry.width=c,e.geometry.height=c/s}}return e.geometry.aspectRatio=o&&s>0?s:null,{requestedGeometry:i,widthExplicit:n||o&&s>0&&!a,heightExplicit:a||o&&s>0,baseWidth:Math.max(1,l(r.width,e.geometry.width)),baseHeight:Math.max(1,l(r.height,e.geometry.height))}}function Pe(e,t){let i=Pt(e,t);if(!i.widthExplicit&&!i.heightExplicit)return e;let r=e.geometry.width/i.baseWidth,n=e.geometry.height/i.baseHeight,a=Math.min(r,n);return J(e,t,r,["geometry.centerX","face.x","face.width","face.minWidth","linear.startX","linear.endX","readout.title.x","readout.value.x","readout.unit.x"]),J(e,t,n,["geometry.centerY","face.y","face.height","face.minHeight","linear.originY","linear.startY","linear.endY","linear.labelOffset","linear.zoneOffset","scale.major.length","scale.minor.length","indicator.length","indicator.centerOffset","indicator.markerSize","indicator.carriageWidth","indicator.carriageRadius","indicator.cap.radius","centerZero.marker.length","centerZero.marker.centerOffset","readout.title.y","readout.value.y","readout.unit.y"]),J(e,t,a,["face.contentPadding","face.cornerRadius"]),e}function Xt(e,t){let i=Pt(e,t);if(!i.widthExplicit&&!i.heightExplicit)return e;let r=e.geometry.width/i.baseWidth,n=e.geometry.height/i.baseHeight,a=Math.min(r,n),o=e.tape.orientation!=="horizontal";return J(e,t,r,["geometry.centerX","face.x","face.width","face.minWidth","tape.x","tape.width","readout.title.x","readout.value.x","readout.unit.x"]),J(e,t,n,["geometry.centerY","face.y","face.height","face.minHeight","tape.y","tape.height","readout.title.y","readout.value.y","readout.unit.y"]),J(e,t,o?r:n,["tape.tickInset","tape.labelOffset","tape.majorTickLength","tape.minorTickLength"]),J(e,t,o?n:r,["tape.majorSpacing","tape.fadeSize"]),J(e,t,a,["face.cornerRadius","tape.cornerRadius"]),e}function J(e,t,i,r){if(!(!Number.isFinite(i)||i<=0||Math.abs(i-1)<1e-9))for(let n of r){if(Cr(t.requested,n))continue;let a=zr(t.typeDefaults,n);Number.isFinite(a)&&Vr(e,n,a*i)}}function ct(e,t){return v(e)&&Object.prototype.hasOwnProperty.call(e,t)}function Cr(e,t){let i=t.split("."),r=e;for(let n of i){if(!v(r)||!Object.prototype.hasOwnProperty.call(r,n))return!1;r=r[n]}return!0}function zr(e,t){let i=e;for(let r of t.split(".")){if(i==null)return;i=i[r]}return i}function Vr(e,t,i){let r=t.split("."),n=e;for(let a=0;a<r.length-1;a+=1){let o=r[a];v(n[o])||(n[o]={}),n=n[o]}n[r[r.length-1]]=i}var ut={layout:{includeGeometry:!1},geometry:{mode:"linear",width:320,height:220,centerX:160,centerY:110},face:{visible:!0,shape:"panel",fit:"content",contentPadding:14,minWidth:1,minHeight:1,clipContent:!0,x:7,y:7,width:306,height:206,cornerRadius:20,color:"#fffef8",strokeColor:"#4b5563",strokeWidth:3,innerStrokeColor:"#d1d5db",innerStrokeWidth:1.2,shadow:!0,glass:!0},linear:{originY:142,startX:38,startY:0,endX:282,endY:0,tickSide:"negative",labelOffset:38,zoneOffset:-16},track:{visible:!0,color:"#a8a29e",width:5,opacity:.85,lineCap:"round",showUnderZones:!1},scale:{major:{visible:!0,divisions:5,length:20,width:2.4,color:"#111827"},minor:{visible:!0,subdivisions:4,length:10,width:1,color:"#57534e"}},labels:{visible:!0,fontSize:11,fontWeight:700,rotation:"horizontal"},pointer:{visible:!1},indicator:{visible:!0,type:"hairline",position:"cross",length:84,centerOffset:0,width:2.4,color:"#991b1b",strokeColor:"#fffef8",strokeWidth:.8,cap:{visible:!1,stackOrder:"above",radius:4.5,color:"#991b1b",strokeColor:"#fffef8",strokeWidth:1.2}},light:{visible:!1,x:72,y:60,radius:8,color:"amber"},readout:{title:{visible:!0,text:"LINEAR",x:"auto",y:60,fontSize:13,letterSpacing:1.6},value:{visible:!1,x:"auto",y:-42,fontSize:24,fontWeight:750},unit:{visible:!1,x:"auto",y:-60,fontSize:10}}},Xe=[O,Ne,Ye,Re,C,A,Fe],ht={description:"A framed vintage linear instrument with zones, ticks, labels, and a moving hairline.",defaults:ut,configure:Pe,layers:Xe};var de={id:"zero-marker",render(e){let{options:t,renderer:i}=e,r=t.centerZero?.marker;if(!r?.visible)return null;let n=i.group("zero-marker",{"aria-hidden":"true"}),a=t.geometry.mode==="linear"?Ir(t,r):Tr(t,r);return n.append(u("line",{class:"gaugeit__zero-marker",...a,stroke:r.color,"stroke-width":r.width,"stroke-linecap":r.lineCap,opacity:r.opacity})),null}};function Tr(e,t){let i=L(e.centerZero.zeroValue,e),r=t.radius??e.scale.radius,n=b(e.geometry.centerX,e.geometry.centerY,Math.max(0,r-t.length),i),a=b(e.geometry.centerX,e.geometry.centerY,r,i);return{x1:n.x,y1:n.y,x2:a.x,y2:a.y}}function Ir(e,t){let i=k(e),r=M(e.centerZero.zeroValue,e),n=W(t.length,t.position,z(t.centerOffset)),a=S(r,i,n.start),o=S(r,i,n.end);return{x1:a.x,y1:a.y,x2:o.x,y2:o.y}}var Wr=D(ut,{min:-100,max:100,value:0,centerZero:{zeroValue:0,symmetric:!0,marker:{visible:!0,position:"cross",centerOffset:0,length:34,width:3.2,color:"#111827",opacity:1,lineCap:"butt"}},zones:[{min:-100,max:-35,color:"#b91c1c",width:7},{min:-35,max:35,color:"transparent"},{min:35,max:100,color:"#15803d",width:7}],readout:{title:{visible:!0,text:"DEVIATION"}}}),ft={description:"A classic linear instrument with a fixed center-zero reference and signed travel.",defaults:Wr,configure:Pe,layers:[...Xe.slice(0,3),de,...Xe.slice(3)]};var dt={description:"A heritage-styled bidirectional center-zero dial for deviation, balance, and signed values.",defaults:{min:-100,max:100,value:0,geometry:{width:320,height:320,centerX:160,centerY:160,radius:132,startAngle:150,endAngle:390},centerZero:{zeroValue:0,symmetric:!0,marker:{visible:!0,radius:124,length:25,width:3.2,color:"#292524",opacity:1,lineCap:"round"}},face:{visible:!0,shape:"circle",fit:"geometry",clipContent:!0,x:8,y:8,width:304,height:304,color:"#fffdf5",strokeColor:"#374151",strokeWidth:4,innerStrokeColor:"#c7bfae",innerStrokeWidth:1.4,shadow:!0,glass:!0},track:{visible:!0,color:"#d6d0c2",width:10,radius:123,opacity:1,lineCap:"round",showUnderZones:!0},zones:[{min:-100,max:-35,color:"#b91c1c",width:8,radius:123,opacity:.92,lineCap:"round"},{min:-35,max:35,color:"transparent"},{min:35,max:100,color:"#b45309",width:8,radius:123,opacity:.92,lineCap:"round"}],scale:{radius:119,position:"inside",major:{visible:!0,interval:25,divisions:8,length:18,width:2.4,color:"#292524"},minor:{visible:!0,subdivisions:4,length:9,width:1,color:"#78716c"}},labels:{visible:!0,interval:25,radius:88,color:"#292524",fontSize:11,fontWeight:700},pointer:{type:"spear",length:101,shaftLength:78,tailLength:18,width:8,color:"#7f1d1d",strokeColor:"#fffdf5",strokeWidth:.8,cap:{visible:!0,stackOrder:"above",radius:10,color:"#292524",strokeColor:"#d6d3d1",strokeWidth:2}},light:{visible:!1,x:112,y:205,radius:8,color:"amber"},readout:{title:{visible:!0,text:"BALANCE",x:"auto",y:205,color:"#44403c",fontSize:13,letterSpacing:1.8},value:{visible:!0,x:"auto",y:238,color:"#292524",fontSize:28,fontWeight:760,prefix:""},unit:{visible:!1,text:"",x:"auto",y:258,color:"#78716c",fontSize:10}}},layers:[O,j,E,N,de,C,A,Y]};var De={id:"rolling-tape",render(e){let{options:t,renderer:i}=e,r=t.tape,n=le(t),a=r.orientation!=="horizontal",o=i.group("rolling-tape",{"aria-hidden":"true"}),s=`${i.id}-rolling-tape-clip`,c=`${i.id}-rolling-tape-fade-start`,h=`${i.id}-rolling-tape-fade-end`,f=u("defs"),m=u("clipPath",{id:s,clipPathUnits:"userSpaceOnUse"});m.append(u("rect",{x:n.x,y:n.y,width:n.width,height:n.height,rx:r.cornerRadius,ry:r.cornerRadius})),f.append(m),f.append(Dt(c,a,!0,r.fadeColor)),f.append(Dt(h,a,!1,r.fadeColor)),o.append(f),o.append(u("rect",{class:"gaugeit__tape-window-background",x:n.x,y:n.y,width:n.width,height:n.height,rx:r.cornerRadius,ry:r.cornerRadius,fill:r.windowColor,stroke:"none"}));let g=u("g",{class:"gaugeit__tape-strip","clip-path":`url(#${s})`});g.append(u("rect",{x:n.x,y:n.y,width:n.width,height:n.height,fill:r.stripColor})),o.append(g);let d=pe(t),y=ye(t),w=Math.max(1,Math.floor(ge(t)/d+.5)),x=a?n.height:n.width,_=Math.max(9,Math.ceil(x/y)+8),B=Math.ceil(_/2),P=[];for(let ie=0;ie<_;ie+=1){let X=$r(a,t);g.append(X.group),P.push(X)}return Yr(o,n,r,c,h,a),Er(o,n,r,a),Nr(o,n,r),{update(ie,X={}){let me=Number.isFinite(X.pointerValue)?X.pointerValue:ie,Ge=Math.floor((me-t.min)/d);for(let _e=0;_e<P.length;_e+=1){let xt=Ge+_e-B,ke=t.min+xt*d,Me=P[_e];if(ke<t.min-d*.25||ke>t.max+d*.25){Me.group.setAttribute("display","none");continue}let bt=Ce(ke,me,t),vt=a?{x:n.x+n.width/2,y:n.y+n.height/2-bt}:{x:n.x+n.width/2+bt,y:n.y+n.height/2};Me.group.removeAttribute("display"),Me.group.setAttribute("transform",`translate(${vt.x} ${vt.y})`);let oi=Fr(xt,w)===0;jr(Me,ke,oi,t)}}}}};function $r(e,t){let i=u("g",{class:"gaugeit__tape-slot"}),r=u("line",{class:"gaugeit__tape-tick"}),n=u("text",{class:"gaugeit__label gaugeit__tape-label",fill:t.tape.textColor,"font-family":t.labels.fontFamily,"font-size":t.labels.fontSize,"font-weight":t.labels.fontWeight,"text-anchor":"middle","dominant-baseline":"middle"});return i.append(r,n),i.dataset.vertical=e?"true":"false",{group:i,tick:r,text:n,vertical:e}}function jr(e,t,i,r){let n=r.tape,a=i?n.majorTickLength:n.minorTickLength,o=n.colorByZone?Z(t,r.zones):null,s=o&&!T(o.color)?o.color:null,c=s||(i?n.tickColor:n.minorTickColor),h=s||n.textColor,f=i?n.majorTickWidth:n.minorTickWidth;e.vertical?(F(e.tick,{x1:-n.tickInset,y1:0,x2:-n.tickInset-a,y2:0}),F(e.text,{x:n.labelOffset,y:0})):(F(e.tick,{x1:0,y1:n.tickInset,x2:0,y2:n.tickInset+a}),F(e.text,{x:0,y:-n.labelOffset})),F(e.tick,{stroke:c,"stroke-width":f,"stroke-linecap":"butt",opacity:i?1:n.minorTickOpacity}),e.text.setAttribute("fill",h),e.text.style.display=i&&r.labels.visible?"":"none",e.text.textContent=Rr(t,r)}function Er(e,t,i,r){let n=t.x+t.width/2,a=t.y+t.height/2,o=Math.max(0,i.windowStrokeWidth/2);r?e.append(u("line",{class:"gaugeit__tape-indicator",x1:t.x+o,y1:a,x2:t.x+t.width-o,y2:a,stroke:i.indicatorColor,"stroke-width":i.indicatorWidth,"stroke-linecap":"butt"})):e.append(u("line",{class:"gaugeit__tape-indicator",x1:n,y1:t.y+o,x2:n,y2:t.y+t.height-o,stroke:i.indicatorColor,"stroke-width":i.indicatorWidth,"stroke-linecap":"butt"}))}function Nr(e,t,i){let r=Math.max(0,Math.min(i.cornerRadius,t.width/2,t.height/2)),n=Math.max(i.windowStrokeWidth,i.windowInnerStrokeWidth,0);e.append(u("rect",{class:"gaugeit__tape-window",x:t.x,y:t.y,width:t.width,height:t.height,rx:r,ry:r,fill:"none",stroke:i.windowStrokeColor,"stroke-width":i.windowStrokeWidth})),i.windowInnerStrokeWidth>0&&t.width>n*2&&t.height>n*2&&e.append(u("rect",{class:"gaugeit__tape-window-inner",x:t.x+n,y:t.y+n,width:t.width-n*2,height:t.height-n*2,rx:Math.max(0,r-n),ry:Math.max(0,r-n),fill:"none",stroke:i.windowInnerStrokeColor,"stroke-width":i.windowInnerStrokeWidth,"pointer-events":"none"}))}function Yr(e,t,i,r,n,a){i.fadeSize<=0||(a?e.append(u("rect",{x:t.x,y:t.y,width:t.width,height:i.fadeSize,fill:`url(#${r})`,"pointer-events":"none"}),u("rect",{x:t.x,y:t.y+t.height-i.fadeSize,width:t.width,height:i.fadeSize,fill:`url(#${n})`,"pointer-events":"none"})):e.append(u("rect",{x:t.x,y:t.y,width:i.fadeSize,height:t.height,fill:`url(#${r})`,"pointer-events":"none"}),u("rect",{x:t.x+t.width-i.fadeSize,y:t.y,width:i.fadeSize,height:t.height,fill:`url(#${n})`,"pointer-events":"none"})))}function Dt(e,t,i,r){let n=u("linearGradient",{id:e,x1:"0%",y1:"0%",x2:t?"0%":"100%",y2:t?"100%":"0%"}),a=i?.96:0,o=i?0:.96;return n.append(u("stop",{offset:"0%","stop-color":r,"stop-opacity":a}),u("stop",{offset:"100%","stop-color":r,"stop-opacity":o})),n}function Rr(e,t){return typeof t.labels.formatter=="function"?String(t.labels.formatter(e,{min:t.min,max:t.max,options:t})):Number(e).toFixed(t.labels.fractionDigits)}function Fr(e,t){return(e%t+t)%t}var mt={description:"A cream-faced rolling numeric tape with a fixed edge-to-edge aircraft reference line.",defaults:{geometry:{mode:"tape",width:320,height:340,centerX:160,centerY:170},face:{visible:!0,shape:"panel",fit:"geometry",clipContent:!0,x:8,y:8,width:304,height:324,cornerRadius:23,color:"#fffdf4",strokeColor:"#4b5563",strokeWidth:4,innerStrokeColor:"#c8bfaa",innerStrokeWidth:1.4,shadow:!0,glass:!0},pointer:{visible:!1},indicator:{visible:!1},track:{visible:!1},tape:{orientation:"vertical",x:62,y:69,width:196,height:212,cornerRadius:12,windowColor:"#fff9ea",windowStrokeColor:"#544f45",windowStrokeWidth:2,windowInnerStrokeColor:"#d8cfbd",windowInnerStrokeWidth:1,stripColor:"#fff9ea",textColor:"#211f1a",tickColor:"#3f3a32",minorTickColor:"#817867",minorTickOpacity:.86,majorTickWidth:2.2,minorTickWidth:1,majorTickLength:26,minorTickLength:13,tickInset:66,labelOffset:10,interval:20,minorSubdivisions:4,majorSpacing:54,indicatorColor:"#991b1b",indicatorWidth:2.8,fadeSize:38,fadeColor:"#fffdf4",colorByZone:!0},scale:{major:{visible:!0,interval:20,divisions:5},minor:{visible:!0,subdivisions:4}},labels:{visible:!0,color:"#211f1a",fontSize:15,fontWeight:760,fractionDigits:0},zones:[{min:0,max:20,color:"#b91c1c"},{min:20,max:80,color:"transparent"},{min:80,max:100,color:"#15803d"}],light:{visible:!1,x:72,y:46,radius:8,color:"amber"},readout:{title:{visible:!0,text:"ALTITUDE",x:"auto",y:42,color:"#3f3a32",fontSize:13,letterSpacing:1.8},value:{visible:!1,x:"auto",y:303,color:"#211f1a",fontSize:24,fontWeight:760},unit:{visible:!0,text:"FT",x:"auto",y:307,color:"#6b6253",fontSize:10,letterSpacing:1.2}}},configure:Xt,layers:[O,De,C,A]};function Gt(e){return e.register("arc",ot).register("classic",at).register("classic-linear",ht).register("classic-linear-zero",ft).register("center-zero",dt).register("heritage-round",lt).register("rolling-tape",mt).register("line-scale",st),e}var Bt=Object.freeze({arc:ot,classic:at,"classic-linear":ht,"classic-linear-zero":ft,"center-zero":dt,"heritage-round":lt,"rolling-tape":mt,"line-scale":st});var G=new WeakMap;function Ht(e,t,i,r){let n=G.get(e);n&&n.destroy();let a=new i(e,t,r,Ut(e));return G.set(e,a),a}function Zt(e,t,i,r=document){return[...r.querySelectorAll(e||"[data-gaugeit]")].map(a=>{let o=G.get(a);if(o)return o;let s=Pr(a),c=new t(a,s,i,Ut(a));return G.set(a,c),c})}function gt(e){return G.get(e)||null}function pt(e){let t=G.get(e);return t?(t.destroy(),G.delete(e),!0):!1}function Pr(e){let t=Le(e.dataset.gaugeitOptions,{});return e.dataset.gaugeitType&&(t.type=e.dataset.gaugeitType),e.dataset.gaugeitValue!==void 0&&(t.value=Number(e.dataset.gaugeitValue)),e.dataset.gaugeitMin!==void 0&&(t.min=Number(e.dataset.gaugeitMin)),e.dataset.gaugeitMax!==void 0&&(t.max=Number(e.dataset.gaugeitMax)),t}function Ut(e){return{onDestroy(t){G.get(e)===t&&G.delete(e)}}}function qt(e,t="gauge-it"){if(typeof customElements>"u"||typeof HTMLElement>"u")return null;if(customElements.get(t))return customElements.get(t);class i extends HTMLElement{static get observedAttributes(){return["value","min","max","type","options"]}constructor(){super(),this._gauge=null,this._mount=document.createElement("div"),this._mount.className="gaugeit-element__mount"}connectedCallback(){this._mount.isConnected||this.append(this._mount),this._gauge||(this._gauge=e(this._mount,this._readOptions()))}disconnectedCallback(){this._gauge&&(this._gauge.destroy(),this._gauge=null)}attributeChangedCallback(){this._gauge&&this._gauge.replaceOptions(this._readOptions())}get value(){return this._gauge?this._gauge.getValue():Number(this.getAttribute("value")||0)}set value(n){this.setAttribute("value",String(n))}get gauge(){return this._gauge}_readOptions(){let n=Le(this.getAttribute("options"),{});return this.hasAttribute("type")&&(n.type=this.getAttribute("type")),this.hasAttribute("value")&&(n.value=Number(this.getAttribute("value"))),this.hasAttribute("min")&&(n.min=Number(this.getAttribute("min"))),this.hasAttribute("max")&&(n.max=Number(this.getAttribute("max"))),n}}return customElements.define(t,i),i}Gt(te);function yt(e,t={}){let i=typeof e=="string"?document.querySelector(e):e;if(!i)throw new Error(`Gaugeit target not found: ${e}`);return Ht(i,t,ee,te)}function Jt(e,t){return te.register(e,t),ni}function Kt(e="[data-gaugeit]",t=document){return Zt(e,ee,te,t)}function Qt(e="gauge-it"){return qt(yt,e)}var ei=Object.freeze({face:O,zones:j,ticks:E,labels:N,pointer:Y,readout:A,linearZones:Ne,linearTicks:Ye,linearLabels:Re,linearIndicator:Fe,zeroMarker:de,rollingTape:De,light:C}),ti=Object.freeze({angleToValue:Ot,arcPath:Oe,calculateGaugeBounds:we,buildMinorValues:oe,buildScaleValues:I,centeredArcAngles:Lt,findZoneForValue:Z,gaugeSweep:re,isClosedGauge:Ue,linearAxis:k,linearIndicatorNormalOffset:se,linearNormalOffset:z,linearNormalSpan:W,linearYToSvg:U,linearPointToValue:At,niceInterval:ne,offsetLinearPoint:S,padBounds:xe,polarPoint:b,resolveFaceBox:ve,resolveReadoutPosition:be,resolveScaleEndpointValues:Q,resolveZoneSegments:ae,taperedArcPath:Ae,unionBounds:Te,valueToAngle:L,valueToLinearPoint:M,valueToLinearRatio:He,resolveTapeInterval:ge,tapeMinorSpacing:ye,tapeMinorStep:pe,tapeValueOffset:Ce,tapeWindowBox:le,lightIsActive:ze,resolveLightPosition:ce}),ii=Bt,ri="0.1.0",ni=Object.freeze({VERSION:ri,Gauge:ee,GaugeTypeRegistry:fe,createGauge:yt,registerGaugeType:Jt,autoMount:Kt,defineGaugeitElement:Qt,getMountedGauge:gt,unmountGauge:pt,registry:te,types:ii,layers:ei,geometry:ti,deepMerge:D,easingNames:Ke}),Xr=ni;