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
+ function w(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 H(e,t){if(!w(e))return U(t);let i={...e};if(!w(t))return i;for(let[r,n]of Object.entries(t))yt(r)||(w(n)&&w(i[r])?i[r]=H(i[r],n):i[r]=U(n));return i}function U(e){if(Array.isArray(e))return e.map(U);if(w(e)){let t={};for(let[i,r]of Object.entries(e))yt(i)||(t[i]=U(r));return t}return e}function yt(e){return e==="__proto__"||e==="prototype"||e==="constructor"}function T(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 pt=0;function xt(e="gaugeit"){return pt+=1,`${e}-${pt}`}function bt(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 I(e){if(e==null)return!0;let t=String(e).trim().toLowerCase();return t===""||t==="transparent"||t==="none"}function vt(e){return typeof requestAnimationFrame=="function"?requestAnimationFrame(e):setTimeout(()=>e(Date.now()),16)}function Le(e){if(e!=null){if(typeof cancelAnimationFrame=="function"){cancelAnimationFrame(e);return}clearTimeout(e)}}function X(e,t,i){!e||typeof e.dispatchEvent!="function"||typeof CustomEvent!="function"||e.dispatchEvent(new CustomEvent(`gaugeit:${t}`,{detail:i}))}function Oe(e,t={}){if(typeof e!="string"||e.trim()==="")return t;try{let i=JSON.parse(e);return w(i)?i:t}catch(i){return t}}function Kt(e){return e*Math.PI/180}function v(e,t,i,r){let n=Kt(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 wt(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?T(e,r,n):e)-r)/(n-r),s=t.invert?1-o:o;return t.geometry.startAngle+re(t)*s}function _t(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?T(o,t.min,t.max):o}function Ae(e,t,i,r,n){let a=v(e,t,i,r),o=v(e,t,i,n),s=n-r,c=s>=0?1:0;if(Math.abs(s)>=360-.001){let f=v(e,t,i,r+s/2);return[`M ${x(a.x)} ${x(a.y)}`,`A ${x(i)} ${x(i)} 0 1 ${c} ${x(f.x)} ${x(f.y)}`,`A ${x(i)} ${x(i)} 0 1 ${c} ${x(o.x)} ${x(o.y)}`].join(" ")}let u=Math.abs(s)>180?1:0;return[`M ${x(a.x)} ${x(a.y)}`,`A ${x(i)} ${x(i)} 0 ${u} ${c} ${x(o.x)} ${x(o.y)}`].join(" ")}function Ce(e,t,i,r,n,a,o,s=48){let c=n-r,u=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=[],p=[];for(let y=0;y<=u;y+=1){let _=y/u,P=r+c*_,O=m+(g-m)*_;d.push(v(e,t,f+O/2,P)),p.push(v(e,t,Math.max(0,f-O/2),P))}let b=[`M ${x(d[0].x)} ${x(d[0].y)}`];for(let y=1;y<d.length;y+=1)b.push(`L ${x(d[y].x)} ${x(d[y].y)}`);for(let y=p.length-1;y>=0;y-=1)b.push(`L ${x(p[y].x)} ${x(p[y].y)}`);return b.push("Z"),b.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 $(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,ei(r)+2)),a=r/1e6,o=[],s=e,c=0;for(;s<=t+a&&c<1e4;)o.push(Qt(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:T(l(s.min,e),e,t),max:T(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],u=a[s+1],f=(c+u)/2,m=r.filter(d=>f>=d.min&&f<=d.max),g=m.length?m[m.length-1]:null;o.push({min:c,max:u,zone:g})}return o}function q(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 x(e){return Math.round(e*1e3)/1e3}function Qt(e,t){let i=Math.pow(10,t);return Math.round(e*i)/i}function ei(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 J(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=J(t.startY,e),n=l(t.endX,284),a=J(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 u=o/c,f=s/c;return{startX:i,startY:r,endX:n,endY:a,dx:o,dy:s,length:c,tangentX:u,tangentY:f,normalX:-f,normalY:u,angle:Math.atan2(s,o)*180/Math.PI}}function Be(e,t,i=!0){let n=((i?T(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=Be(e,t,i);return{x:r.startX+r.dx*n,y:r.startY+r.dy*n}}function kt(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?T(s,0,1):s,u=i.invert?1-c:c,f=i.min+u*(i.max-i.min);return r?T(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 V(e){return-l(e,0)}function se(e){return V(e==null?void 0:e.centerOffset)}function j(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 pe(e){var i,r,n;let t=l((i=e.tape)==null?void 0:i.interval,0);return t>0?t:ne(e.max-e.min,Math.max(2,((n=(r=e.scale)==null?void 0:r.major)==null?void 0:n.divisions)||5))}function ye(e){var i;let t=Math.max(0,Math.floor(l((i=e.tape)==null?void 0:i.minorSubdivisions,4)));return pe(e)/(t+1)}function xe(e){var i,r;let t=Math.max(0,Math.floor(l((i=e.tape)==null?void 0:i.minorSubdivisions,4)));return Math.max(2,l((r=e.tape)==null?void 0:r.majorSpacing,54))/(t+1)}function ze(e,t,i){let r=ye(i),n=xe(i),a=i.invert?-1:1;return(Number(e)-Number(t))/r*n*a}function ce(e,t){return{x:l(e==null?void 0:e.x,t.geometry.width/2),y:t.geometry.mode==="linear"?J(e==null?void 0:e.y,t):l(e==null?void 0:e.y,t.geometry.height/2)}}function Ve(e,t){if(!(e!=null&&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 At(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 te(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(e,t,i,r,n){return te(e,t,i),te(e,t+Math.max(0,r),i+Math.max(0,n)),e}function He(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 be(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 Ie(...e){let t=At();for(let i of e)i&&E(t,i.x,i.y,i.width,i.height);return He(t)}function Ze(e){return Math.abs(re(e))>=360-ue}function ie(e,t){var r;let i=((r=t.scale)==null?void 0:r.endpointMode)||"auto";return e.length<2||i==="both"?e:i==="dedupe"||i==="auto"&&Ze(t)?e.slice(0,-1):e}function ve(e,t){let i=di(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),u;return s?a==="bottom"?u=i.y+i.height-n-r/2:a==="center"?u=i.y+i.height/2:u=i.y+n+r/2:t.geometry.mode==="linear"?u=J(e.y,t):u=l(e.y,i.y+n+r/2),{x:c+(o?l(e.offsetX,0):0),y:u+(s?l(e.offsetY,0):0)}}function we(e,t=null){var d,p;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=(d=i.minWidth)!=null?d:a.width,s=(p=i.minHeight)!=null?p:a.height;if(i.shape==="circle"){let b=r.centerX,y=r.centerY,_=Math.min(o,s)/2,P=Math.max(b-t.x,t.x+t.width-b,y-t.y,t.y+t.height-y)+n,O=Math.max(1,_,P);return{x:b-O,y:y-O,width:O*2,height:O*2}}let c={x:t.x-n,y:t.y-n,width:t.width+n*2,height:t.height+n*2},u=Math.max(r.centerX-c.x,c.x+c.width-r.centerX),f=Math.max(1,o,u*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 _e(e,t={}){var s;let i=t.includeFace!==!1,r=t.includeBase===void 0?((s=e.layout)==null?void 0:s.includeGeometry)!==!1:t.includeBase===!0,n=t.contentBounds||null,a=e.geometry,o=At();if(r&&E(o,0,0,a.width,a.height),i&&e.face.visible){let c=we(e,n),u=e.face.shadow?10:Math.max(0,e.face.strokeWidth/2);if(E(o,c.x-u,c.y-u,c.width+u*2,c.height+u*2),e.face.clipContent)return He(o,{x:0,y:0,width:a.width,height:a.height})}return a.mode==="linear"?(ai(o,e),si(o,e),li(o,e),ci(o,e),Mt(o,e)):a.mode==="tape"?ui(o,e):(ti(o,e),ri(o,e),ni(o,e),Mt(o,e),oi(o,e)),fi(o,e),hi(o,e),He(o,{x:0,y:0,width:a.width,height:a.height})}function ti(e,t){var n,a;let{geometry:i,track:r}=t;r.visible&&Lt(e,i.centerX,i.centerY,r.radius,r.width,i.startAngle,i.endAngle);for(let o of t.zones||[])I(o.color)||Lt(e,i.centerX,i.centerY,(a=(n=o.radius)!=null?n:r.radius)!=null?a:i.radius,ii(o,r.width),L(o.min,t),L(o.max,t))}function ii(e,t){var i,r,n;return e!=null&&e.taper?Math.max(0,l(e.taper.startWidth,(r=e.width)!=null?r:t),l(e.taper.endWidth,(n=e.width)!=null?n:t)):(i=e==null?void 0:e.width)!=null?i:t}function ri(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,Te(e,i.centerX,i.centerY,Math.max(0,o),s,i.startAngle,i.endAngle)}function ni(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=ie($(t.min,t.max,r),t);for(let a of n){let o=v(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(f){}let c=Math.max(i.fontSize*.55,s.length*i.fontSize*.34),u=i.fontSize*.68;E(e,o.x-c,o.y-u,c*2,u*2)}}function oi(e,t){let{geometry:i,pointer:r}=t;if(!r.visible)return;let n=Math.max(r.width/2,r.strokeWidth/2,1);if(Te(e,i.centerX,i.centerY,0,r.length+n,i.startAngle,i.endAngle),r.tailLength>0&&Te(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(e,i.centerX-a,i.centerY-a,a*2,a*2)}}function ai(e,t){var r,n;let i=k(t);t.track.visible&&St(e,i,M(t.min,t),M(t.max,t),V(t.linear.zoneOffset),t.track.width);for(let a of t.zones||[])I(a.color)||St(e,i,M(a.min,t),M(a.max,t),V((r=a.offset)!=null?r:t.linear.zoneOffset),(n=a.width)!=null?n:t.track.width)}function si(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=j(Math.max(...r,0),t.linear.tickSide);Ct(e,i,n.start,n.end)}function li(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=$(t.min,t.max,r),a=k(t);for(let o of n){let s=S(M(o,t),a,V(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(m){}let u=Math.max(i.fontSize*.55,c.length*i.fontSize*.34),f=i.fontSize*.68;E(e,s.x-u,s.y-f,u*2,f*2)}}function ci(e,t){let i=t.indicator;if(!i.visible)return;let r=k(t),n=j(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)),Ct(e,r,o,s,c)}function Mt(e,t){var c,u;let i=(c=t.centerZero)==null?void 0:c.marker;if(!(i!=null&&i.visible))return;let r=Math.max(i.width/2,.5);if(t.geometry.mode==="linear"){let f=k(t),m=M(t.centerZero.zeroValue,t),g=j(i.length,i.position,V(i.centerOffset)),d=S(m,f,g.start),p=S(m,f,g.end);E(e,Math.min(d.x,p.x)-r,Math.min(d.y,p.y)-r,Math.abs(p.x-d.x)+r*2,Math.abs(p.y-d.y)+r*2);return}let n=L(t.centerZero.zeroValue,t),a=(u=i.radius)!=null?u:t.scale.radius,o=v(t.geometry.centerX,t.geometry.centerY,Math.max(0,a-i.length),n),s=v(t.geometry.centerX,t.geometry.centerY,a,n);E(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 St(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),u=Math.min(s.x,c.x)-o,f=Math.min(s.y,c.y)-o;E(e,u,f,Math.abs(c.x-s.x)+o*2,Math.abs(c.y-s.y)+o*2)}function Ct(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);te(e,s.x-t.tangentX*n,s.y-t.tangentY*n),te(e,s.x+t.tangentX*n,s.y+t.tangentY*n)}}function ui(e,t){let i=le(t),r=Math.max(t.tape.windowStrokeWidth/2,t.tape.windowInnerStrokeWidth/2);E(e,i.x-r,i.y-r,i.width+r*2,i.height+r*2)}function hi(e,t){let i=t.light;if(!(i!=null&&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(e,r.x-s,r.y-s,s*2,s*2)}function fi(e,t){if(t.readout.visible)for(let[i,r]of Object.entries(t.readout)){if(i==="visible"||!(r!=null&&r.visible))continue;let n=i==="value"?`${r.prefix||""}${t.max}${r.suffix||""}`:String(r.text||"");if(!n&&i!=="value")continue;let a=ve(r,t),o=Math.max(r.fontSize*.55,n.length*r.fontSize*.34),s=r.fontSize*.68;E(e,a.x-o,a.y-s,o*2,s*2)}}function di(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 Lt(e,t,i,r,n,a,o){let s=Math.max(0,l(n,0))/2;Te(e,t,i,Math.max(0,r-s),r+s,a,o)}function Te(e,t,i,r,n,a,o){let s=[a,o];for(let c of[0,90,180,270])mi(c,a,o)&&s.push(c);r<=ue&&te(e,t,i);for(let c of s){let u=v(t,i,Math.max(0,n),c);if(te(e,u.x,u.y),r>ue){let f=v(t,i,r,c);te(e,f.x,f.y)}}}function mi(e,t,i){let r=i-t;return Math.abs(r)>=360-ue?!0:r>=0?Ot(e-t,360)<=r+ue:Ot(t-e,360)<=-r+ue}function Ot(e,t){return(e%t+t)%t}var gi="http://www.w3.org/2000/svg";function h(e,t={},i=null){let r=document.createElementNS(gi,e);return D(r,t),i!=null&&(r.textContent=String(i)),r}function D(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=xt("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=_e(this.options,{includeFace:!1,includeBase:!1}),this.layoutBounds=_e(this.options,{contentBounds:this.contentBounds});let i=be(this.layoutBounds,this.options.layout.padding),r=this.options.geometry,n=h("svg",{class:"gaugeit__svg",viewBox:Ue(i),preserveAspectRatio:r.preserveAspectRatio,focusable:"false"}),a=h("title",{id:`${this.id}-title`},this.options.accessibility.label);if(n.append(a),this.options.accessibility.description){let s=h("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=h("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=pi(this.content),i=this.options.face.visible&&this.options.face.clipContent,r=t&&!i?Ie(this.layoutBounds,t):this.layoutBounds,n=be(r,this.options.layout.padding);return this.layoutBounds=r,this.svg.setAttribute("viewBox",Ue(n)),this.applySizing(n),this.root.dataset.gaugeitViewBox=Ue(n),n}group(t,i={}){let r=t!=="face"&&this.contentClipPathId?`url(#${this.contentClipPathId})`:void 0,n=h("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 Ue(e){return`${$e(e.x)} ${$e(e.y)} ${$e(e.width)} ${$e(e.height)}`}function $e(e){return Math.round(e*1e3)/1e3}function pi(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(t){return null}}var qe={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 zt(e){return typeof e=="function"?e:qe[e]||qe.easeOutCubic}var Vt=Object.freeze(Object.keys(qe));var Je=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 yi=new Set(["clamp","expand","allow"]),xi=new Set(["needle","line","arrow","spear"]),bi=new Set(["inside","outside","cross"]),vi=new Set(["horizontal","radial","tangent"]),wi=new Set(["intrinsic","contain"]),_i=new Set(["geometry","content"]),ki=new Set(["panel","circle"]),Mi=new Set(["auto","both","dedupe"]),Si=new Set(["top","center","bottom"]),Li=new Set(["radial","linear","tape"]),Oi=new Set(["negative","positive","cross"]),Ai=new Set(["hairline","marker","carriage"]),Tt=new Set(["negative","positive","cross"]),It=new Set(["above","below"]),Ci=new Set(["vertical","horizontal"]),zi=new Set(["red","green","blue","amber","yellow","orange","white","halogen","cyan","brown"]),Vi=new Set(["manual","below","above","between"]),Ti=new Set(["target","displayed","pointer"]);function Ee(e,t){let i=w(e)?e:{},r=String(i.type||Je.type),n=t.get(r),a=H(Je,n.defaults),o=H(a,i);if(o.type=r,o=Qe(o,a),typeof n.configure=="function"){let s=n.configure(o,{requested:i,typeDefaults:n.defaults});w(s)&&(o=s)}return o=Qe(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=yi.has(o.overflow)?o.overflow:"clamp",Ii(o.layout),$i(o.geometry),Wi(o.linear),ji(o.face),Ei(o),Ni(o.pointer),Yi(o.indicator,i.indicator),Ri(o.centerZero,o),Fi(o.tape),Pi(o.light),Xi(o.labels),Di(o.readout),Gi(o.animation),Bi(o.effects.jitter),o.zones=Hi(o.zones,o.min,o.max,o.track.width),o}function K(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 Ne(e,t){return H(e||{},t||{})}function Ii(e){e.mode=wi.has(e.mode)?e.mode:"intrinsic",e.padding=Math.max(0,l(e.padding,8)),e.includeGeometry=e.includeGeometry!==!1}function $i(e){e.mode=Li.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 Wi(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=Oi.has(e.tickSide)?e.tickSide:"negative",e.labelOffset=l(e.labelOffset,34),e.zoneOffset=l(e.zoneOffset,-12)}function ji(e){e.shape=ki.has(e.shape)?e.shape:"panel",e.fit=_i.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 Ei(e){e.scale.endpointMode=Mi.has(e.scale.endpointMode)?e.scale.endpointMode:"auto",e.scale.radius=Math.max(1,l(e.scale.radius,e.geometry.radius)),e.scale.position=bi.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 Ni(e){e.type=xi.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=It.has(e.cap.stackOrder)?e.cap.stackOrder:"above"}function Yi(e,t={}){e.visible=e.visible===!0,e.type=Ai.has(e.type)?e.type:"hairline",e.position=Tt.has(e.position)?e.position:"cross",e.length=Math.max(0,l(e.length,76));let i=w(t)&&Object.prototype.hasOwnProperty.call(t,"centerOffset"),r=w(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=It.has(e.cap.stackOrder)?e.cap.stackOrder:"above"}function Ri(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=Tt.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 Fi(e){e.orientation=Ci.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 Pi(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=zi.has(e.color)?e.color:"amber",e.customColor=e.customColor===null||e.customColor===void 0?"":String(e.customColor).trim(),e.offColor=je(e.offColor,"#f3ead6"),e.offEdgeColor=je(e.offEdgeColor,"#817768"),e.bezelColor=je(e.bezelColor,"#4b5563"),e.bezelHighlightColor=je(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=w(e.trigger)?e.trigger:{},e.trigger.mode=Vi.has(e.trigger.mode)?e.trigger.mode:"manual",e.trigger.source=Ti.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 je(e,t){return e==null?t:String(e).trim()||t}function Xi(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=vi.has(e.rotation)?e.rotation:"horizontal"}function Di(e){e.visible=e.visible!==!1,Ke(e.title,14),Ke(e.value,38),Ke(e.unit,12),e.value.fractionDigits=Math.max(0,Math.min(12,Math.floor(l(e.value.fractionDigits,0))))}function Ke(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=Si.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 Gi(e){e.duration=Math.max(0,l(e.duration,850)),typeof e.startFrom!="number"&&!["min","max","value"].includes(e.startFrom)&&(e.startFrom="min")}function Bi(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 Hi(e,t,i,r){return Array.isArray(e)?e.filter(w).map(n=>{var s,c;let a=n.width===void 0?void 0:Math.max(0,l(n.width,0)),o=Zi(n.taper,a!=null?a:r);return{...n,min:Math.max(t,l(n.min,t)),max:Math.min(i,l(n.max,i)),color:(c=(s=n.color)!=null?s:n.strokeStyle)!=null?c:"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 Qe(e,t){if(!w(e))return U(t);for(let[i,r]of Object.entries(t))w(r)&&(e[i]=Qe(e[i],r));return e}function Zi(e,t){var n;if(!w(e))return;let i=e.startWidth===void 0?t:Math.max(0,l(e.startWidth,t!=null?t:0)),r=e.endWidth===void 0?t:Math.max(0,l(e.endWidth,(n=t!=null?t:i)!=null?n:0));return{startWidth:i,endWidth:r,segments:Math.max(2,Math.min(256,Math.floor(l(e.segments,48))))}}var fe=class{constructor(t,i,r,n={}){this.host=bt(t),this.registry=r,this._onDestroy=typeof n.onDestroy=="function"?n.onDestroy:null,this.userOptions=Ne({},i||{}),this.options=Ee(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(),X(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=zt(i.easing||this.options.animation.easing),s=he();return this._animation={from:this._baseValue,to:r,startedAt:s,duration:n,easing:o},X(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(Ne(this.userOptions,r),Object.prototype.hasOwnProperty.call(r,"value"),i)}replaceOptions(t={},i={}){this._assertAlive();let r=t||{};return this._applyUserOptions(Ne({},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=Ee(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&&X(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(),Le(this._frameHandle),this._frameHandle=null,X(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(),X(this.host,"resume",{gauge:this}),this}refresh(){return this.render()}destroy(){if(this._destroyed)return;this._destroyed=!0,Le(this._frameHandle),this._frameHandle=null,this._animation=null,this._removeLifecycleObservers(),this.renderer.destroy();let t=this._onDestroy;this._onDestroy=null,t&&t(this),X(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=Ee(this.userOptions,this.registry),this.renderer&&(this.renderer.options=this.options,this.renderer.svg&&this.render())),i}return T(i,this.options.min,this.options.max)}_ensureLoop(){this._destroyed||this._paused||this._frameHandle!==null||this._shouldRun()&&(this._frameHandle=vt(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 u=i-this._animation.startedAt,f=this._animation.duration<=0?1:T(u/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,X(this.host,"animationend",{gauge:this,value:g.to})}}let a=this.options.effects.jitter;if(a.enabled&&(!a.whenIdleOnly||!this._animation)){let u=1e3/a.frequency;(this._lastJitterTargetAt===0||i-this._lastJitterTargetAt>=u)&&(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 u=1-Math.pow(a.smoothing,r/16.667);this._jitterOffset+=(0-this._jitterOffset)*u,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:T(t,this.options.min,this.options.max)}_updateDynamic(t,i,r=t){let n=Ui(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),X(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(){X(this.host,"change",{gauge:this,value:this._targetValue,displayedValue:this._displayValue})}_emitSettled(){X(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!="undefined"&&document.removeEventListener("visibilitychange",this._visibilityHandler),this._visibilityHandler=null,this._intersectionObserver&&this._intersectionObserver.disconnect(),this._intersectionObserver=null}_installLifecycleObservers(){typeof document!="undefined"&&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!="undefined"&&this.options.performance.pauseWhenHidden&&document.hidden?!0:this.options.performance.pauseWhenOffscreen&&!this._onscreen}_suspendForLifecycle(){this._lifecycleSuspendedAt===0&&(this._lifecycleSuspendedAt=he()),Le(this._frameHandle),this._frameHandle=null}_resumeFromLifecycle(){typeof document!="undefined"&&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!="undefined"&&typeof performance.now=="function"?performance.now():Date.now()}function Ui(e,t){let i=Math.pow(10,t);return Math.round(e*i)/i}var ke=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(!w(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:U(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}))}},de=new ke;var A={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=we(t,i.getContentBounds()),o=`${i.id}-face-shadow`,s=`${i.id}-glass`,c=`${i.id}-face-content-clip`,u=Math.max(3,r.strokeWidth+2),f=qi(a,u),m=h("defs");if(r.shadow){let d=h("filter",{id:o,x:"-20%",y:"-20%",width:"140%",height:"140%"});d.append(h("feDropShadow",{dx:0,dy:3,stdDeviation:4,"flood-color":"#000000","flood-opacity":.18})),m.append(d)}if(r.glass){let d=h("linearGradient",{id:s,x1:"0%",y1:"0%",x2:"0%",y2:"100%"});d.append(h("stop",{offset:"0%","stop-color":"#ffffff","stop-opacity":.38}),h("stop",{offset:"48%","stop-color":"#ffffff","stop-opacity":.06}),h("stop",{offset:"100%","stop-color":"#ffffff","stop-opacity":0})),m.append(d)}if(r.clipContent){let d=h("clipPath",{id:c,clipPathUnits:"userSpaceOnUse"});d.append(et(r,f,{fill:"#ffffff",stroke:"none"},Math.max(0,r.cornerRadius-u))),m.append(d),i.setContentClipPath(c)}m.children.length>0&&n.append(m);let g=et(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(et(r,f,{class:"gaugeit__face-inner",fill:"none",stroke:r.innerStrokeColor,"stroke-width":r.innerStrokeWidth},Math.max(0,r.cornerRadius-u))),r.glass)if(r.shape==="circle"){let d=Math.min(a.width,a.height)/2;n.append(h("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(h("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 qi(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 et(e,t,i={},r=e.cornerRadius){if(e.shape==="circle")return h("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 h("rect",{x:t.x,y:t.y,width:t.width,height:t.height,rx:n,ry:n,...i})}var N={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?!I(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,u,f){let m=Ji(s,c,u,f,t);for(let g of m)u.className&&g.classList.add(String(u.className)),o.append(g)}}};function Ji(e,t,i,r,n){var y,_,P,O,G;let a=n.geometry,o=(_=(y=i.radius)!=null?y:n.track.radius)!=null?_:a.radius,s=(P=i.width)!=null?P:n.track.width,c=(O=i.color)!=null?O:n.track.color,u=(G=i.opacity)!=null?G:1,f=i.lineCap||n.track.lineCap||"butt",m=L(e,n),g=L(t,n);if(!i.taper)return[h("path",{class:r,d:Ae(a.centerX,a.centerY,o,m,g),fill:"none",stroke:c,"stroke-width":s,"stroke-linecap":f,opacity:u})];let d=$t(i,e,s),p=$t(i,t,s),b=[h("path",{class:`${r} ${r}--tapered`,d:Ce(a.centerX,a.centerY,o,m,g,d,p,i.taper.segments),fill:c,stroke:"none",opacity:u})];if(f==="round"){let W=v(a.centerX,a.centerY,o,m),ee=v(a.centerX,a.centerY,o,g),ge=Math.abs(e-i.min)<1e-9,B=Math.abs(t-i.max)<1e-9;ge&&d>0&&b.push(Wt(r,W,d,c,u,"start")),B&&p>0&&b.push(Wt(r,ee,p,c,u,"end"))}return b}function $t(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 Wt(e,t,i,r,n,a){return h("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 Y={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=K(t),o=$(t.min,t.max,a),s=ie(o,t),c=oe(o,r.minor.subdivisions);return r.minor.visible&&r.minor.length>0&&r.minor.width>0&&c.length&&n.append(h("path",{class:"gaugeit__ticks gaugeit__ticks--minor",d:u(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(h("path",{class:"gaugeit__ticks gaugeit__ticks--major",d:u(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 u(f,m){let g=[];for(let d of f){let p=L(d,t),b=Ki(r.radius,m,r.position),y=v(t.geometry.centerX,t.geometry.centerY,b.start,p),_=v(t.geometry.centerX,t.geometry.centerY,b.end,p);g.push(`M ${x(y.x)} ${x(y.y)} L ${x(_.x)} ${x(_.y)}`)}return g.join(" ")}}};function Ki(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 R={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):K(t),o=ie($(t.min,t.max,a),t);for(let s of o){let c=L(s,t),u=v(t.geometry.centerX,t.geometry.centerY,r.radius,c),f=h("text",{class:"gaugeit__label",x:u.x,y:u.y,fill:r.color,"font-family":r.fontFamily,"font-size":r.fontSize,"font-weight":r.fontWeight,"text-anchor":"middle","dominant-baseline":"middle",transform:Qi(r.rotation,c,u)},er(s,r,t));n.append(f)}return null}};function Qi(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 er(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 F={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=h("g",{class:"gaugeit__pointer-rotating"}),s=ir(r,n);o.append(s);let c=null;return r.cap.visible&&(c=h("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})),tr(a,o,c,r.cap.stackOrder),{update(u,f={}){let m=Number.isFinite(f.pointerValue)?f.pointerValue:u,g=L(m,t,t.overflow!=="allow");if(o.setAttribute("transform",`rotate(${g} ${n.centerX} ${n.centerY})`),r.colorByZone){let d=q(m,t.zones),p=d&&!I(d.color)?d.color:r.color;s.tagName.toLowerCase()==="line"?s.setAttribute("stroke",p):s.setAttribute("fill",p)}}}}};function tr(e,t,i,r){i&&r==="below"?e.append(i,t):i?e.append(t,i):e.append(t)}function ir(e,t){let i=t.centerX,r=t.centerY,n=e.length,a=e.tailLength,o=e.width/2,s=rr(e),c;if(e.type==="line")c=h("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 u;if(e.type==="arrow")u=[[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;u=[[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 u=[[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=u.map((m,g)=>`${g===0?"M":"L"} ${m[0]} ${m[1]}`).join(" ");c=h("path",{class:`gaugeit__pointer gaugeit__pointer--${e.type}`,d:`${f} Z`,fill:e.color})}return D(c,{opacity:e.opacity,stroke:e.type==="line"?e.color:e.strokeColor,"stroke-width":e.type==="line"?e.width:e.strokeWidth}),c}function rr(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 C={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(tt("title",r.title,r.title.text,t));let a=null,o=nr(r.value,t);return r.value.visible&&(a=tt("value",r.value,"",t),a.setAttribute("aria-hidden","true"),n.append(a)),r.unit.visible&&r.unit.text&&n.append(tt("unit",r.unit,r.unit.text,t)),{update(s){a&&(a.textContent=o(s))}}}};function tt(e,t,i,r){let n=ve(t,r);return h("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 nr(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 it=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"}}),z={id:"light",render({options:e,renderer:t}){let i=e.light;if(!(i!=null&&i.visible))return null;let{x:r,y:n}=ce(i,e),a=or(i),o=Object.prototype.hasOwnProperty.call(it,i.color)?i.color:"amber",s=`${t.id}-light-glow`,c=`${t.id}-light-on`,u=`${t.id}-light-off`,f=`${t.id}-light-bezel`,m=h("defs");m.append(ar(s,i.radius),Et(c,{center:"#ffffff",highlight:a.highlight,middle:a.core,edge:a.rim}),Et(u,{center:"#fffdf7",highlight:i.offColor,middle:i.offColor,edge:i.offEdgeColor}),sr(f,i));let g=t.group("light",{"aria-hidden":"true"});g.append(m);let d=h("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 p=h("circle",{class:"gaugeit__light-bezel",cx:0,cy:0,r:i.radius+Math.max(1.8,i.radius*.2),fill:`url(#${f})`}),b=h("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}),y=jt({state:"off",radius:i.radius,gradientId:u,edgeColor:i.offEdgeColor,glowColor:null,glowFilterId:null,sparkleOpacity:.58,shadeOpacity:.14}),_=jt({state:"on",radius:i.radius,gradientId:c,edgeColor:a.rim,glowColor:a.glow,glowFilterId:s,sparkleOpacity:.72,shadeOpacity:.1});return d.append(p,b,y,_),g.append(d),{update(P,O={}){var B;let G=cr((B=i.trigger)==null?void 0:B.source,P,O),W=Ve(i,G),ee=W&&i.blink,ge=W&&i.pulse&&!ee;d.classList.toggle("is-on",W),d.classList.toggle("is-blinking",ee),d.classList.toggle("is-pulsing",ge),d.classList.toggle("has-glow",i.glow),d.setAttribute("data-gaugeit-light-state",W?"on":"off")}}}};function jt({state:e,radius:t,gradientId:i,edgeColor:r,glowColor:n,glowFilterId:a,sparkleOpacity:o,shadeOpacity:s}){let c=h("g",{class:`gaugeit__light-emission gaugeit__light-emission--${e}`,"data-gaugeit-light-visual":e});return n&&a&&c.append(h("circle",{class:"gaugeit__light-glow",cx:0,cy:0,r:t*1.82,fill:n,filter:`url(#${a})`})),c.append(h("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)}),h("path",{class:`gaugeit__light-lens-shade gaugeit__light-lens-shade--${e}`,d:lr(t),fill:r,opacity:s}),h("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 or(e){let t=it[e.color]||it.amber,i=String(e.customColor||"").trim();return i?{core:i,highlight:"#ffffff",glow:i,rim:i}:t}function ar(e,t){let i=h("filter",{id:e,x:"-120%",y:"-120%",width:"340%",height:"340%"});return i.append(h("feGaussianBlur",{stdDeviation:Math.max(1.4,t*.38)})),i}function Et(e,t){let i=h("radialGradient",{id:e,cx:"31%",cy:"27%",r:"74%"});return i.append(h("stop",{offset:"0%","stop-color":t.center,"stop-opacity":.98}),h("stop",{offset:"23%","stop-color":t.highlight,"stop-opacity":.96}),h("stop",{offset:"62%","stop-color":t.middle,"stop-opacity":1}),h("stop",{offset:"100%","stop-color":t.edge,"stop-opacity":1})),i}function sr(e,t){let i=h("linearGradient",{id:e,x1:"0%",y1:"0%",x2:"100%",y2:"100%"});return i.append(h("stop",{offset:"0%","stop-color":t.bezelHighlightColor,"stop-opacity":.92}),h("stop",{offset:"34%","stop-color":t.bezelColor,"stop-opacity":.9}),h("stop",{offset:"72%","stop-color":t.bezelColor,"stop-opacity":1}),h("stop",{offset:"100%","stop-color":"#1f2937","stop-opacity":.92})),i}function lr(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 cr(e,t,i){return e==="pointer"&&Number.isFinite(i.pointerValue)?i.pointerValue:e==="displayed"?t:Number.isFinite(i.targetValue)?i.targetValue:t}var rt={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:[A,N,Y,R,z,C,F]};var nt={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:[A,N,Y,R,z,C,F]};var ot={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:[A,N,Y,R,z,C,F]};var at={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:[A,N,Y,R,z,C,F]};var Ye={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?!I(o.zone.color):t.track.visible&&!t.track.showUnderZones))continue;let u=o.zone?"gaugeit__zone":"gaugeit__track",f=a(o.min,o.max,s,u);o.zone&&o.zone.className&&f.classList.add(String(o.zone.className)),r.append(f)}return null;function a(o,s,c,u){var p,b,y,_;let f=k(t),m=V((p=c.offset)!=null?p:t.linear.zoneOffset),g=S(M(o,t),f,m),d=S(M(s,t),f,m);return h("line",{class:u,x1:g.x,y1:g.y,x2:d.x,y2:d.y,stroke:(b=c.color)!=null?b:t.track.color,"stroke-width":(y=c.width)!=null?y:t.track.width,"stroke-linecap":c.lineCap||t.track.lineCap||"butt",opacity:(_=c.opacity)!=null?_:1})}}};var Re={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=K(t),o=$(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(h("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(h("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(u,f){let m=k(t),g=j(f,t.linear.tickSide),d=[];for(let p of u){let b=M(p,t),y=S(b,m,g.start),_=S(b,m,g.end);d.push(`M ${x(y.x)} ${x(y.y)} L ${x(_.x)} ${x(_.y)}`)}return d.join(" ")}}};var Fe={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):K(t),o=$(t.min,t.max,a),s=k(t);for(let c of o){let u=S(M(c,t),s,V(t.linear.labelOffset)),f=h("text",{class:"gaugeit__label gaugeit__linear-label",x:u.x,y:u.y,fill:r.color,"font-family":r.fontFamily,"font-size":r.fontSize,"font-weight":r.fontWeight,"text-anchor":"middle","dominant-baseline":"middle",transform:ur(r.rotation,s.angle,u)},hr(c,r,t));n.append(f)}return null}};function ur(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 hr(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 Pe={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=h("g",{class:"gaugeit__linear-indicator-moving"}),c=fr(r,a);s.append(c);let u=null;return r.cap.visible&&(u=h("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(u):s.append(u)),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 p=q(g,t.zones),b=p&&!I(p.color)?p.color:r.color;mr(c,r,b)}}}}};function fr(e,t){let i=j(e.length,e.position,t),r;if(e.type==="marker"){let n=dr(e.position);if(n===0){let a=e.markerSize,o=t;r=h("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=h("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=h("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=h("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 D(r,{opacity:e.opacity,stroke:e.type==="hairline"?e.color:e.strokeColor,"stroke-width":e.type==="hairline"?e.width:e.strokeWidth}),r}function dr(e){return e==="negative"?-1:e==="positive"?1:0}function mr(e,t,i){t.type==="hairline"?e.setAttribute("stroke",i):e.setAttribute("fill",i)}function Nt(e,t){var c,u;let i=w((c=t.requested)==null?void 0:c.geometry)?t.requested.geometry:{},r=((u=t.typeDefaults)==null?void 0:u.geometry)||{},n=st(i,"width"),a=st(i,"height"),o=st(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 f=l(r.width,e.geometry.width);e.geometry.width=f,e.geometry.height=f/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 Xe(e,t){let i=Nt(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 Q(e,t,r,["geometry.centerX","face.x","face.width","face.minWidth","linear.startX","linear.endX","readout.title.x","readout.value.x","readout.unit.x"]),Q(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"]),Q(e,t,a,["face.contentPadding","face.cornerRadius"]),e}function Yt(e,t){let i=Nt(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 Q(e,t,r,["geometry.centerX","face.x","face.width","face.minWidth","tape.x","tape.width","readout.title.x","readout.value.x","readout.unit.x"]),Q(e,t,n,["geometry.centerY","face.y","face.height","face.minHeight","tape.y","tape.height","readout.title.y","readout.value.y","readout.unit.y"]),Q(e,t,o?r:n,["tape.tickInset","tape.labelOffset","tape.majorTickLength","tape.minorTickLength"]),Q(e,t,o?n:r,["tape.majorSpacing","tape.fadeSize"]),Q(e,t,a,["face.cornerRadius","tape.cornerRadius"]),e}function Q(e,t,i,r){if(!(!Number.isFinite(i)||i<=0||Math.abs(i-1)<1e-9))for(let n of r){if(gr(t.requested,n))continue;let a=pr(t.typeDefaults,n);Number.isFinite(a)&&yr(e,n,a*i)}}function st(e,t){return w(e)&&Object.prototype.hasOwnProperty.call(e,t)}function gr(e,t){let i=t.split("."),r=e;for(let n of i){if(!w(r)||!Object.prototype.hasOwnProperty.call(r,n))return!1;r=r[n]}return!0}function pr(e,t){let i=e;for(let r of t.split(".")){if(i==null)return;i=i[r]}return i}function yr(e,t,i){let r=t.split("."),n=e;for(let a=0;a<r.length-1;a+=1){let o=r[a];w(n[o])||(n[o]={}),n=n[o]}n[r[r.length-1]]=i}var lt={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}}},De=[A,Ye,Re,Fe,z,C,Pe],ct={description:"A framed vintage linear instrument with zones, ticks, labels, and a moving hairline.",defaults:lt,configure:Xe,layers:De};var me={id:"zero-marker",render(e){var o;let{options:t,renderer:i}=e,r=(o=t.centerZero)==null?void 0:o.marker;if(!(r!=null&&r.visible))return null;let n=i.group("zero-marker",{"aria-hidden":"true"}),a=t.geometry.mode==="linear"?br(t,r):xr(t,r);return n.append(h("line",{class:"gaugeit__zero-marker",...a,stroke:r.color,"stroke-width":r.width,"stroke-linecap":r.lineCap,opacity:r.opacity})),null}};function xr(e,t){var o;let i=L(e.centerZero.zeroValue,e),r=(o=t.radius)!=null?o:e.scale.radius,n=v(e.geometry.centerX,e.geometry.centerY,Math.max(0,r-t.length),i),a=v(e.geometry.centerX,e.geometry.centerY,r,i);return{x1:n.x,y1:n.y,x2:a.x,y2:a.y}}function br(e,t){let i=k(e),r=M(e.centerZero.zeroValue,e),n=j(t.length,t.position,V(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 vr=H(lt,{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"}}}),ut={description:"A classic linear instrument with a fixed center-zero reference and signed travel.",defaults:vr,configure:Xe,layers:[...De.slice(0,3),me,...De.slice(3)]};var ht={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:[A,N,Y,R,me,z,C,F]};var Ge={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`,u=`${i.id}-rolling-tape-fade-end`,f=h("defs"),m=h("clipPath",{id:s,clipPathUnits:"userSpaceOnUse"});m.append(h("rect",{x:n.x,y:n.y,width:n.width,height:n.height,rx:r.cornerRadius,ry:r.cornerRadius})),f.append(m),f.append(Rt(c,a,!0,r.fadeColor)),f.append(Rt(u,a,!1,r.fadeColor)),o.append(f),o.append(h("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=h("g",{class:"gaugeit__tape-strip","clip-path":`url(#${s})`});g.append(h("rect",{x:n.x,y:n.y,width:n.width,height:n.height,fill:r.stripColor})),o.append(g);let d=ye(t),p=xe(t),b=Math.max(1,Math.floor(pe(t)/d+.5)),y=a?n.height:n.width,_=Math.max(9,Math.ceil(y/p)+8),P=Math.ceil(_/2),O=[];for(let G=0;G<_;G+=1){let W=wr(a,t);g.append(W.group),O.push(W)}return Sr(o,n,r,c,u,a),kr(o,n,r,a),Mr(o,n,r),{update(G,W={}){let ee=Number.isFinite(W.pointerValue)?W.pointerValue:G,ge=Math.floor((ee-t.min)/d);for(let B=0;B<O.length;B+=1){let dt=ge+B-P,Me=t.min+dt*d,Se=O[B];if(Me<t.min-d*.25||Me>t.max+d*.25){Se.group.setAttribute("display","none");continue}let mt=ze(Me,ee,t),gt=a?{x:n.x+n.width/2,y:n.y+n.height/2-mt}:{x:n.x+n.width/2+mt,y:n.y+n.height/2};Se.group.removeAttribute("display"),Se.group.setAttribute("transform",`translate(${gt.x} ${gt.y})`);let Jt=Or(dt,b)===0;_r(Se,Me,Jt,t)}}}}};function wr(e,t){let i=h("g",{class:"gaugeit__tape-slot"}),r=h("line",{class:"gaugeit__tape-tick"}),n=h("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 _r(e,t,i,r){let n=r.tape,a=i?n.majorTickLength:n.minorTickLength,o=n.colorByZone?q(t,r.zones):null,s=o&&!I(o.color)?o.color:null,c=s||(i?n.tickColor:n.minorTickColor),u=s||n.textColor,f=i?n.majorTickWidth:n.minorTickWidth;e.vertical?(D(e.tick,{x1:-n.tickInset,y1:0,x2:-n.tickInset-a,y2:0}),D(e.text,{x:n.labelOffset,y:0})):(D(e.tick,{x1:0,y1:n.tickInset,x2:0,y2:n.tickInset+a}),D(e.text,{x:0,y:-n.labelOffset})),D(e.tick,{stroke:c,"stroke-width":f,"stroke-linecap":"butt",opacity:i?1:n.minorTickOpacity}),e.text.setAttribute("fill",u),e.text.style.display=i&&r.labels.visible?"":"none",e.text.textContent=Lr(t,r)}function kr(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(h("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(h("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 Mr(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(h("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(h("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 Sr(e,t,i,r,n,a){i.fadeSize<=0||(a?e.append(h("rect",{x:t.x,y:t.y,width:t.width,height:i.fadeSize,fill:`url(#${r})`,"pointer-events":"none"}),h("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(h("rect",{x:t.x,y:t.y,width:i.fadeSize,height:t.height,fill:`url(#${r})`,"pointer-events":"none"}),h("rect",{x:t.x+t.width-i.fadeSize,y:t.y,width:i.fadeSize,height:t.height,fill:`url(#${n})`,"pointer-events":"none"})))}function Rt(e,t,i,r){let n=h("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(h("stop",{offset:"0%","stop-color":r,"stop-opacity":a}),h("stop",{offset:"100%","stop-color":r,"stop-opacity":o})),n}function Lr(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 Or(e,t){return(e%t+t)%t}var ft={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:Yt,layers:[A,Ge,z,C]};function Ft(e){return e.register("arc",rt).register("classic",nt).register("classic-linear",ct).register("classic-linear-zero",ut).register("center-zero",ht).register("heritage-round",at).register("rolling-tape",ft).register("line-scale",ot),e}var Pt=Object.freeze({arc:rt,classic:nt,"classic-linear":ct,"classic-linear-zero":ut,"center-zero":ht,"heritage-round":at,"rolling-tape":ft,"line-scale":ot});var Z=new WeakMap;function Xt(e,t,i,r){let n=Z.get(e);n&&n.destroy();let a=new i(e,t,r,Ht(e));return Z.set(e,a),a}function Dt(e,t,i,r=document){return[...r.querySelectorAll(e||"[data-gaugeit]")].map(a=>{let o=Z.get(a);if(o)return o;let s=Ar(a),c=new t(a,s,i,Ht(a));return Z.set(a,c),c})}function Gt(e){return Z.get(e)||null}function Bt(e){let t=Z.get(e);return t?(t.destroy(),Z.delete(e),!0):!1}function Ar(e){let t=Oe(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 Ht(e){return{onDestroy(t){Z.get(e)===t&&Z.delete(e)}}}function Zt(e,t="gauge-it"){if(typeof customElements=="undefined"||typeof HTMLElement=="undefined")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=Oe(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}Ft(de);function Ut(e,t={}){let i=typeof e=="string"?document.querySelector(e):e;if(!i)throw new Error(`Gaugeit target not found: ${e}`);return Xt(i,t,fe,de)}function Cr(e,t){return de.register(e,t),qt}function zr(e="[data-gaugeit]",t=document){return Dt(e,fe,de,t)}function Vr(e="gauge-it"){return Zt(Ut,e)}var Tr=Object.freeze({face:A,zones:N,ticks:Y,labels:R,pointer:F,readout:C,linearZones:Ye,linearTicks:Re,linearLabels:Fe,linearIndicator:Pe,zeroMarker:me,rollingTape:Ge,light:z}),Ir=Object.freeze({angleToValue:_t,arcPath:Ae,calculateGaugeBounds:_e,buildMinorValues:oe,buildScaleValues:$,centeredArcAngles:wt,findZoneForValue:q,gaugeSweep:re,isClosedGauge:Ze,linearAxis:k,linearIndicatorNormalOffset:se,linearNormalOffset:V,linearNormalSpan:j,linearYToSvg:J,linearPointToValue:kt,niceInterval:ne,offsetLinearPoint:S,padBounds:be,polarPoint:v,resolveFaceBox:we,resolveReadoutPosition:ve,resolveScaleEndpointValues:ie,resolveZoneSegments:ae,taperedArcPath:Ce,unionBounds:Ie,valueToAngle:L,valueToLinearPoint:M,valueToLinearRatio:Be,resolveTapeInterval:pe,tapeMinorSpacing:xe,tapeMinorStep:ye,tapeValueOffset:ze,tapeWindowBox:le,lightIsActive:Ve,resolveLightPosition:ce}),$r=Pt,Wr="0.1.0",qt=Object.freeze({VERSION:Wr,Gauge:fe,GaugeTypeRegistry:ke,createGauge:Ut,registerGaugeType:Cr,autoMount:zr,defineGaugeitElement:Vr,getMountedGauge:Gt,unmountGauge:Bt,registry:de,types:$r,layers:Tr,geometry:Ir,deepMerge:H,easingNames:Vt}),fs=qt;export{fe as Gauge,ke as GaugeTypeRegistry,Wr as VERSION,zr as autoMount,Ut as createGauge,H as deepMerge,fs as default,Vr as defineGaugeitElement,Vt as easingNames,de as gaugeTypeRegistry,Ir as geometry,Gt as getMountedGauge,Tr as layers,Cr as registerGaugeType,$r as types,Bt as unmountGauge};