semiotic 3.8.1 → 3.8.2

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 (147) hide show
  1. package/CLAUDE.md +3 -1
  2. package/README.md +53 -52
  3. package/ai/behaviorContracts.cjs +9 -0
  4. package/ai/dist/mcp-server.js +142 -13
  5. package/ai/schema.json +616 -42
  6. package/ai/surface-manifest.json +1 -1
  7. package/ai/system-prompt.md +5 -2
  8. package/dist/chunk-OrdinalBrushOverlay-PXHQYDB2.module.min.js +2 -0
  9. package/dist/chunk-XYBrushOverlay-ECZJJLAJ.module.min.js +1 -0
  10. package/dist/chunk-XYBrushOverlay-EP2SV3UI.module.min.js +2 -0
  11. package/dist/chunk-chunk-255KDHW5.module.min.js +1 -0
  12. package/dist/chunk-chunk-27HVVXS6.module.min.js +1 -0
  13. package/dist/chunk-chunk-2CXCXRB4.module.min.js +1 -0
  14. package/dist/chunk-chunk-2JGJ5GUG.module.min.js +2 -0
  15. package/dist/chunk-chunk-2UN3ANRN.module.min.js +2 -0
  16. package/dist/chunk-chunk-2VUEY5TH.module.min.js +1 -0
  17. package/dist/chunk-chunk-2WVCH4PL.module.min.js +1 -0
  18. package/dist/chunk-chunk-5UKL5W76.module.min.js +2 -0
  19. package/dist/chunk-chunk-5WEFWNUW.module.min.js +2 -0
  20. package/dist/chunk-chunk-6F6GEAQU.module.min.js +1 -0
  21. package/dist/chunk-chunk-7LHMKRKE.module.min.js +2 -0
  22. package/dist/chunk-chunk-BHYTYMY2.module.min.js +2 -0
  23. package/dist/chunk-chunk-C6EJ4IOD.module.min.js +2 -0
  24. package/dist/chunk-chunk-CA3YDW6F.module.min.js +1 -0
  25. package/dist/chunk-chunk-CP3EN6KZ.module.min.js +1 -0
  26. package/dist/chunk-chunk-CYIML3AV.module.min.js +2 -0
  27. package/dist/chunk-chunk-DNY43POY.module.min.js +1 -0
  28. package/dist/chunk-chunk-DSNGDNJY.module.min.js +1 -0
  29. package/dist/chunk-chunk-E7MIQX7D.module.min.js +2 -0
  30. package/dist/chunk-chunk-EMO5NUGE.module.min.js +1 -0
  31. package/dist/chunk-chunk-ES4DCG3L.module.min.js +1 -0
  32. package/dist/chunk-chunk-FAKO3RGQ.module.min.js +2 -0
  33. package/dist/chunk-chunk-FYY2ACNJ.module.min.js +2 -0
  34. package/dist/chunk-chunk-G7WFWHAD.module.min.js +2 -0
  35. package/dist/chunk-chunk-GMQ5AYTD.module.min.js +1 -0
  36. package/dist/chunk-chunk-H4PPRW6N.module.min.js +1 -0
  37. package/dist/chunk-chunk-IFYPMWKY.module.min.js +1 -0
  38. package/dist/chunk-chunk-J3ELI22J.module.min.js +1 -0
  39. package/dist/chunk-chunk-J3QOW4OE.module.min.js +0 -0
  40. package/dist/chunk-chunk-J3XWETBJ.module.min.js +2 -0
  41. package/dist/chunk-chunk-JCG72SGW.module.min.js +2 -0
  42. package/dist/{semiotic-ai-chunk-OG7BQUUW.module.min.js → chunk-chunk-JJ2OOIET.module.min.js} +0 -1
  43. package/dist/chunk-chunk-KTWEBFMX.module.min.js +2 -0
  44. package/dist/chunk-chunk-L6D3I3V7.module.min.js +2 -0
  45. package/dist/chunk-chunk-M337NY6L.module.min.js +1 -0
  46. package/dist/chunk-chunk-NO4MCQVD.module.min.js +1 -0
  47. package/dist/chunk-chunk-ODUZEEBH.module.min.js +2 -0
  48. package/dist/chunk-chunk-P6UBCMSQ.module.min.js +2 -0
  49. package/dist/chunk-chunk-Q2YADC2V.module.min.js +2 -0
  50. package/dist/chunk-chunk-QRIBHZYW.module.min.js +1 -0
  51. package/dist/chunk-chunk-QSQVBIJA.module.min.js +1 -0
  52. package/dist/chunk-chunk-RCF52Z42.module.min.js +2 -0
  53. package/dist/chunk-chunk-RH5TSQPH.module.min.js +1 -0
  54. package/dist/chunk-chunk-ROP4HI7H.module.min.js +2 -0
  55. package/dist/chunk-chunk-RZH7VZYS.module.min.js +2 -0
  56. package/dist/chunk-chunk-SIRIJ3DY.module.min.js +1 -0
  57. package/dist/chunk-chunk-STZFFTAN.module.min.js +2 -0
  58. package/dist/chunk-chunk-SV4XAZ3Q.module.min.js +1 -0
  59. package/dist/chunk-chunk-T27ZEV6A.module.min.js +1 -0
  60. package/dist/chunk-chunk-U3AGQ5EF.module.min.js +2 -0
  61. package/dist/chunk-chunk-U66USBWU.module.min.js +1 -0
  62. package/dist/chunk-chunk-VVCA3DB7.module.min.js +1 -0
  63. package/dist/chunk-chunk-W3DB2MN4.module.min.js +2 -0
  64. package/dist/chunk-chunk-WCX6U47H.module.min.js +2 -0
  65. package/dist/chunk-chunk-WDIN4LRC.module.min.js +1 -0
  66. package/dist/chunk-chunk-XEVJDUTH.module.min.js +1 -0
  67. package/dist/chunk-chunk-XOYX77KF.module.min.js +2 -0
  68. package/dist/chunk-chunk-YCQYG6J5.module.min.js +2 -0
  69. package/dist/chunk-chunk-YHNZCPOZ.module.min.js +2 -0
  70. package/dist/chunk-chunk-YWZB3KPI.module.min.js +2 -0
  71. package/dist/chunk-chunk-Z5KXAVQD.module.min.js +2 -0
  72. package/dist/chunk-chunk-ZCNBUZPL.module.min.js +2 -0
  73. package/dist/chunk-chunk-ZLKRTF5N.module.min.js +2 -0
  74. package/dist/chunk-chunk-ZTNVDWAK.module.min.js +2 -0
  75. package/dist/chunk-statisticalOverlays-6MVAK5RW.module.min.js +2 -0
  76. package/dist/components/charts/physics/PhysicalFlowChart.d.ts +7 -0
  77. package/dist/components/charts/shared/auditAccessibilityText.d.ts +13 -0
  78. package/dist/components/server/staticSVGChrome.d.ts +3 -2
  79. package/dist/components/stream/OrdinalBrushOverlay.d.ts +1 -2
  80. package/dist/components/stream/OrdinalBrushOverlayLazy.d.ts +9 -0
  81. package/dist/components/stream/XYBrushOverlayLazy.d.ts +17 -0
  82. package/dist/controls.min.js +1 -1
  83. package/dist/controls.module.min.js +1 -1
  84. package/dist/geo.min.js +1 -1
  85. package/dist/geo.module.min.js +1 -1
  86. package/dist/network.min.js +1 -1
  87. package/dist/network.module.min.js +1 -1
  88. package/dist/ordinal.min.js +1 -1
  89. package/dist/ordinal.module.min.js +1 -1
  90. package/dist/physics-matter.min.js +1 -1
  91. package/dist/physics-matter.module.min.js +1 -1
  92. package/dist/physics-rapier.min.js +1 -1
  93. package/dist/physics-rapier.module.min.js +1 -1
  94. package/dist/physics.min.js +1 -1
  95. package/dist/physics.module.min.js +1 -1
  96. package/dist/realtime.min.js +1 -1
  97. package/dist/realtime.module.min.js +1 -1
  98. package/dist/rough.min.js +1 -1
  99. package/dist/rough.module.min.js +1 -1
  100. package/dist/semiotic-ai-core.min.js +1 -1
  101. package/dist/semiotic-ai-core.module.min.js +1 -1
  102. package/dist/semiotic-ai.min.js +1 -1
  103. package/dist/semiotic-ai.module.min.js +1 -1
  104. package/dist/semiotic-data.min.js +1 -1
  105. package/dist/semiotic-data.module.min.js +1 -1
  106. package/dist/semiotic-experimental.min.js +1 -1
  107. package/dist/semiotic-experimental.module.min.js +1 -1
  108. package/dist/semiotic-realtime-core.min.js +1 -1
  109. package/dist/semiotic-realtime-core.module.min.js +1 -1
  110. package/dist/semiotic-realtime-react.min.js +1 -1
  111. package/dist/semiotic-realtime-react.module.min.js +1 -1
  112. package/dist/semiotic-recipes-core.min.js +1 -1
  113. package/dist/semiotic-recipes-core.module.min.js +1 -1
  114. package/dist/semiotic-recipes-react.min.js +1 -1
  115. package/dist/semiotic-recipes-react.module.min.js +1 -1
  116. package/dist/semiotic-recipes.min.js +1 -1
  117. package/dist/semiotic-recipes.module.min.js +1 -1
  118. package/dist/semiotic-server-edge.min.js +1 -1
  119. package/dist/semiotic-server-edge.module.min.js +1 -1
  120. package/dist/semiotic-server-node.min.js +1 -1
  121. package/dist/semiotic-server-node.module.min.js +1 -1
  122. package/dist/semiotic-themes-core.min.js +1 -1
  123. package/dist/semiotic-themes-core.module.min.js +1 -1
  124. package/dist/semiotic-themes-react.min.js +1 -1
  125. package/dist/semiotic-themes-react.module.min.js +1 -1
  126. package/dist/semiotic-themes.min.js +1 -1
  127. package/dist/semiotic-themes.module.min.js +1 -1
  128. package/dist/semiotic-utils-core.min.js +1 -1
  129. package/dist/semiotic-utils-core.module.min.js +1 -1
  130. package/dist/semiotic-utils-react.min.js +1 -1
  131. package/dist/semiotic-utils-react.module.min.js +1 -1
  132. package/dist/semiotic-utils.min.js +1 -1
  133. package/dist/semiotic-utils.module.min.js +1 -1
  134. package/dist/semiotic-value.min.js +1 -1
  135. package/dist/semiotic-value.module.min.js +1 -1
  136. package/dist/semiotic.min.js +1 -1
  137. package/dist/semiotic.module.min.js +1 -1
  138. package/dist/server.min.js +1 -1
  139. package/dist/server.module.min.js +1 -1
  140. package/dist/xy.min.js +1 -1
  141. package/dist/xy.module.min.js +1 -1
  142. package/package.json +4 -4
  143. package/dist/semiotic-ai-statisticalOverlays-CY4WKR4A.module.min.js +0 -2
  144. package/dist/semiotic-chunk-3FSVZ46U.module.min.js +0 -2
  145. package/dist/semiotic-statisticalOverlays-UOMSFKVJ.module.min.js +0 -2
  146. package/dist/xy-chunk-IWD6IB6V.module.min.js +0 -2
  147. package/dist/xy-statisticalOverlays-7RWG6LJT.module.min.js +0 -2
@@ -0,0 +1,2 @@
1
+ "use client";
2
+ import{SafeRender as e,useWasHydratingFromSSR as t}from"./chunk-chunk-ZCNBUZPL.module.min.js";import{useReducedMotion as i}from"./chunk-chunk-YHNZCPOZ.module.min.js";function n(e,t={}){if("function"==typeof e)return e;const i=t.locale??"en-US";if("currency"===e){const e=t.precision??2,n=new Intl.NumberFormat(i,{style:"currency",currency:t.currency??"USD",maximumFractionDigits:e,minimumFractionDigits:e});return e=>n.format(e)}if("percent"===e){const e=new Intl.NumberFormat(i,{style:"percent",maximumFractionDigits:t.precision??1,minimumFractionDigits:0});return t=>e.format(t)}if("compact"===e){const e=new Intl.NumberFormat(i,{notation:"compact",maximumFractionDigits:t.precision??1,minimumFractionDigits:0});return t=>e.format(t)}if("duration"===e)return e=>r(e);const n=new Intl.NumberFormat(i,{notation:t.notation??"standard",maximumFractionDigits:t.precision??0,minimumFractionDigits:0});return e=>n.format(e)}function r(e){if(!Number.isFinite(e))return e+"";const t=0>e?"-":"",i=Math.abs(e);if(1e3>i)return`${t}${Math.round(i)}ms`;const n=i/1e3;if(60>n)return`${t}${r=n,Math.round(100*r)/100+""}s`;var r;const a=n/60;if(60>a){const e=Math.floor(a),i=Math.round(n-60*e);return 0===i?`${t}${e}m`:`${t}${e}m ${i}s`}const l=a/60;if(24>l){const e=Math.floor(l),i=Math.round(a-60*e);return 0===i?`${t}${e}h`:`${t}${e}h ${i}m`}const o=Math.floor(l/24),s=Math.round(l-24*o);return 0===s?`${t}${o}d`:`${t}${o}d ${s}h`}function a(e,t,i){return`${t??""}${e}${i??""}`}function l(e,t){return Number.isFinite(e)?0===e?t(0):`${e>0?"+":"−"}${t(Math.abs(e))}`:""}function o(e,t,i="en-US",n=1){if(!Number.isFinite(e)||!Number.isFinite(t))return null;if(0===e)return null;const r=(t-e)/Math.abs(e);return new Intl.NumberFormat(i,{style:"percent",maximumFractionDigits:n,minimumFractionDigits:0,signDisplay:"exceptZero"}).format(r)}function s(e,t){if(!t||0===t.length)return null;if(!Number.isFinite(e))return null;const i=t.filter(e=>Number.isFinite(e.at)||e.at===-1/0).slice().sort((e,t)=>e.at-t.at);let n=null;for(const t of i){if(t.at>e)break;n=t}return n}function u(e,t){return t||("neutral"===e?"var(--semiotic-text, currentColor)":`var(--semiotic-${e}, currentColor)`)}function c(e,t){const i=t.padding??1;if(0===e.length)return{line:"",area:"",points:[]};if(1===e.length){const e=t.width/2,i=t.height/2;return{line:`M${e},${i}`,area:"",points:[{x:e,y:i}]}}const n=t.yMin??e.reduce((e,t)=>Number.isFinite(t)&&e>t?t:e,1/0),r=(t.yMax??e.reduce((e,t)=>Number.isFinite(t)&&t>e?t:e,-1/0))-n||1,a=Math.max(0,t.width-2*i),l=Math.max(0,t.height-2*i),o=1===e.length?0:a/(e.length-1),s=[];let u="";for(let t=0;e.length>t;t++){const a=e[t];if(!Number.isFinite(a))continue;const c=i+t*o,m=i+l-(a-n)/r*l;u+=`${0===s.length?"M":"L"}${c.toFixed(2)},${m.toFixed(2)}`,s.push({x:c,y:m})}if(0===s.length)return{line:"",area:"",points:[]};const c=s[0],m=i+l;return{line:u,area:`${u} L${s[s.length-1].x.toFixed(2)},${m.toFixed(2)} L${c.x.toFixed(2)},${m.toFixed(2)} Z`,points:s}}import{forwardRef as m,useCallback as d,useEffect as h,useImperativeHandle as b,useMemo as p,useRef as f,useState as g}from"react";import{useMemo as v}from"react";import{Fragment as y,jsx as x,jsxs as N}from"react/jsx-runtime";var w={tile:{width:280,height:184,align:"start",labelSize:13,captionSize:11,valueSize:40,deltaSize:13,padding:{top:14,right:16,bottom:14,left:16},background:"var(--semiotic-surface, transparent)",border:!0,showHeader:!0,showDelta:!0,showTrend:!0,showChart:!0,chartSize:44},presentation:{width:540,height:320,align:"center",labelSize:18,captionSize:14,valueSize:96,deltaSize:18,padding:{top:32,right:32,bottom:32,left:32},background:"var(--semiotic-surface, transparent)",border:!0,showHeader:!0,showDelta:!0,showTrend:!0,showChart:!0,chartSize:80},inline:{width:void 0,height:void 0,align:"inherit",labelSize:0,captionSize:0,valueSize:0,deltaSize:0,padding:{top:0,right:0,bottom:0,left:0},background:"transparent",border:!1,showHeader:!1,showDelta:!0,showTrend:!1,showChart:!1,chartSize:0},thumbnail:{width:96,height:56,align:"center",labelSize:0,captionSize:0,valueSize:22,deltaSize:0,padding:{top:4,right:6,bottom:4,left:6},background:"transparent",border:!1,showHeader:!1,showDelta:!1,showTrend:!1,showChart:!1,chartSize:0}};function F(e,t,i){return void 0===e?i:"function"==typeof e?e(t):e}function S(e){return"positive"===e?"var(--semiotic-success, currentColor)":"negative"===e?"var(--semiotic-danger, currentColor)":"var(--semiotic-text-secondary, currentColor)"}function $(e){return"positive"===e?"▲":"negative"===e?"▼":"■"}var _=m((r,o)=>{const{value:c,label:m,caption:_,format:z,locale:D,currency:C,precision:I,prefix:k,suffix:L,unit:T,comparison:j,target:B,delta:H,deltaFormat:V,showDeltaPercent:P,direction:W,sentiment:Z,thresholds:U,windowSize:R=60,mode:A="tile",align:q,width:E,height:O,padding:Y,emphasis:X,color:G,background:J,borderColor:K,borderRadius:Q,className:ee,style:te,animate:ie,stalenessThreshold:ne,staleLabel:re,headerSlot:ae,valueSlot:le,deltaSlot:oe,trendSlot:se,chartSlot:ue,chartSize:ce,footerSlot:me,onClick:de,onObservation:he,chartId:be,description:pe,summary:fe,loading:ge,loadingContent:ve,emptyContent:ye}=r,xe=w[A]??w.tile,Ne=q??xe.align,we=E??xe.width,Fe=O??xe.height,Se=i(),$e=t(),[_e,ze]=g([]),[De,Me]=g(null),[Ce,Ie]=g(null),[ke,Le]=g(null),Te=f([]),je=f(null),Be=f(c);h(()=>{Be.current=c},[c]);const He=f(R);h(()=>{He.current=R},[R]);const Ve=d(e=>{const t="number"==typeof e?{value:e,time:Date.now()}:{time:Date.now(),...e},i="number"==typeof t.time?t.time:t.time instanceof Date?t.time.getTime():Date.now();return{...t,time:i}},[]),Pe=d(e=>{if(0===e.length)return;const t=He.current,i=e.map(Ve);let n=Te.current.concat(i);n.length>t&&(n=n.slice(n.length-t)),Te.current=n;const r=i[i.length-1];je.current=r.value,ze(n),Me(r.value);for(let e=i.length-1;e>=0;e--){const t=i[e].comparison;if(null!=t){Ie(t);break}}Le(r.time)},[Ve]),We=d(e=>Pe([e]),[Pe]);b(o,()=>({push:e=>We(e),pushMany:e=>Pe(e),clear:()=>{Te.current=[],je.current=null,ze([]),Me(null),Ie(null),Le(null)},getValue:()=>je.current??(Number.isFinite(Be.current)?Be.current:null),getData:()=>Te.current.slice()}),[We,Pe]);const Ze=De??c,Ue=null==Ze||"number"!=typeof Ze||!Number.isFinite(Ze),Re=p(()=>n(z??"number",{locale:D,currency:C,precision:I}),[z,D,C,I]),Ae=p(()=>n(V??z??"number",{locale:D,currency:C,precision:null==V&&null==z?0:I}),[V,z,D,C,I]),qe=ie??!1,Ee=("object"!=typeof qe||!1!==qe.intro)&&!!qe,Oe=Number.isFinite(Ze)?Ze:0,Ye=function(e,t,i,n=e){const[r,a]=g(()=>n),l=f(n),o=f(null),s=f(e),u=f(0),c=!!t,m="object"==typeof t?t.duration:void 0,d="number"==typeof m&&Number.isFinite(m)?Math.max(0,m):300,b="object"==typeof t&&"linear"===t.easing?"linear":"ease-out",p=f(e);return h(()=>{const t=e=>{l.current=e,a(e)};if(!Number.isFinite(e))return void t(e);if(!c||i)return void t(e);if(0===d)return void t(e);s.current=l.current,p.current=e,u.current="undefined"!=typeof performance?performance.now():Date.now();const n="linear"===b?e=>e:e=>1-Math.pow(1-e,3),r=e=>{const i=Math.min(1,(e-u.current)/d),a=n(i);t(s.current+(p.current-s.current)*a),1>i?o.current=requestAnimationFrame(r):(o.current=null,t(p.current))};return o.current=requestAnimationFrame(r),()=>{null!=o.current&&cancelAnimationFrame(o.current),o.current=null}},[c,d,b,i,e]),r}(Oe,qe,Se,f(!Ee||Se||$e?Oe:0).current),Xe=qe?Ye:Number.isFinite(Ze)?Ze:0,Ge=p(()=>s(Number.isFinite(Ze)?Ze:NaN,U),[Ze,U]),Je=Ge?Ge.level:"neutral",Ke=G??u(Je,Ge?.color),Qe=Ce??j?.value??null,et=null!=H?H:null!=Qe&&Number.isFinite(Ze)?Ze-Qe:null,tt=function(e,t,i){if(i&&"auto"!==i)return i;if(null==e||0===e||!Number.isFinite(e))return"neutral";const n=t??"higher-is-better";return"neutral"===n?"neutral":("higher-is-better"===n?e>0:0>e)?"positive":"negative"}(et,j?.direction??B?.direction??W,Z),it=null!=et&&Number.isFinite(et)?l(et,Ae):null,nt=p(()=>new Intl.NumberFormat(D??"en-US",{style:"percent",maximumFractionDigits:1,minimumFractionDigits:0,signDisplay:"exceptZero"}),[D]),rt=null!=Qe&&Number.isFinite(Ze)&&(P??1)&&0!==Qe?nt.format((Ze-Qe)/Math.abs(Qe)):null,at=function({target:e,value:t,format:i,locale:r,currency:a,precision:l}){const o=v(()=>new Intl.NumberFormat(r??"en-US",{style:"percent",maximumFractionDigits:0}),[r]),s=v(()=>n(e?.format??i??"number",{locale:r,currency:a,precision:l}),[e?.format,i,r,a,l]);return v(()=>{if(!e||!Number.isFinite(e.value))return null;const i="number"==typeof t&&Number.isFinite(t)&&0!==e.value?o.format(t/e.value):null,n=s(e.value);return{label:e.label,percent:i,formattedValue:n,text:i?e.label?`${i} of ${e.label} (${n})`:`${i} of ${n}`:e.label?`target ${e.label} (${n})`:"target "+n}},[e,t,s,o])}({target:B,value:Ze,format:z,locale:D,currency:C,precision:I}),lt=at?.percent??null,ot=at?.text??null,st=function(e,t){const[i,n]=g(!1);return h(()=>{if(!t||null==e)return void n(!1);const i=()=>{n(Date.now()-e>=t)};i();const r=setInterval(i,Math.max(250,Math.floor(t/4)));return()=>clearInterval(r)},[e,t]),i}(ke,ne),ut=Number.isFinite(Xe)?a(Re(Xe),k,L):"",ct={value:Ue?null:Ze,formattedValue:ut,level:Je,color:Ke,delta:et,deltaFormatted:it,deltaPercent:rt,sentiment:tt,isStale:st,pushBuffer:_e},mt=pe??function(e){const t=[];if(e.label&&t.push(e.label+":"),t.push(e.unit?`${e.formattedValue} ${e.unit}`:e.formattedValue),e.deltaFormatted){const i=e.delta,n=null!=i&&Number.isFinite(i)&&0!==i?i>0?"up":"down":"change";t.push(`${n} ${e.deltaFormatted}${e.deltaPercent?` (${e.deltaPercent})`:""}${e.comparisonLabel?" from "+e.comparisonLabel:""}`)}return e.targetText&&t.push(e.targetText),e.thresholdLabel&&t.push(e.thresholdLabel),e.stale&&t.push(e.staleLabel??"stale"),t.join(", ")}({label:m,formattedValue:Number.isFinite(Ze)?a(Re(Ze),k,L):"",unit:T,comparisonLabel:j?.label,delta:et,deltaFormatted:it,deltaPercent:rt,targetText:ot,thresholdLabel:Ge?.label,stale:st,staleLabel:re}),dt="number"==typeof Y?{top:Y,right:Y,bottom:Y,left:Y}:{...xe.padding,...Y??{}},ht="end"===Ne?"flex-end":"center"===Ne?"center":"start"===Ne?"flex-start":"inherit",bt={position:"relative",boxSizing:"border-box",width:we,height:Fe,padding:`${dt.top}px ${dt.right}px ${dt.bottom}px ${dt.left}px`,background:J??xe.background,border:xe.border?"1px solid "+(K??"var(--semiotic-border, #e2e2e2)"):void 0,borderRadius:"number"==typeof Q?Q+"px":Q??"var(--semiotic-border-radius, 8px)",display:"inline"===A?"inline-flex":"flex",flexDirection:"column",alignItems:"inherit"===ht?void 0:ht,textAlign:Ne,fontFamily:"var(--semiotic-font-family, system-ui, sans-serif)",color:"var(--semiotic-text, #111)",opacity:st?.55:1,transition:"opacity 240ms ease-out",gridColumn:"primary"===X?"span 2":void 0,cursor:de?"pointer":void 0,...te},pt=d(e=>{const t=e.currentTarget.getBoundingClientRect(),i=e.clientX-t.left,n=e.clientY-t.top,r={value:Ue?NaN:Ze,level:Je,delta:et};de&&de(r,{x:i,y:n}),he&&he({type:"click",datum:r,x:i,y:n,chartType:"BigNumber",chartId:be,timestamp:Date.now()})},[de,he,be,Ue,Ze,Je,et]),ft="inline"===A?"span":"div",gt=["semiotic-bignumber","semiotic-bignumber--mode-"+A,"semiotic-bignumber--level-"+Je,"semiotic-bignumber--sentiment-"+tt,st?"semiotic-bignumber--stale":null,ee].filter(Boolean).join(" "),vt="positive"===tt?"up":"negative"===tt?"down":"flat";if(ge){const e="number"==typeof we?we:280,t="number"==typeof Fe?Fe:160;return x(ft,{role:"status","aria-live":"polite","aria-busy":"true",className:gt+" semiotic-bignumber--loading",style:{...bt,opacity:1},children:ve??x(M,{width:e,height:t,mode:A})})}return Ue?!1===ye?null:x(ft,{role:"status","aria-label":m?m+": no value":"no value",className:gt+" semiotic-bignumber--empty",style:{...bt,color:"var(--semiotic-text-secondary, #666)",fontSize:13,alignItems:"center",justifyContent:"center"},children:ye??"—"}):x(e,{componentName:"BigNumber",width:"number"==typeof we?we:280,height:"number"==typeof Fe?Fe:160,children:N(ft,{role:"group","aria-label":mt,"data-chart":"BigNumber","data-mode":A,"data-level":Je,"data-stale":st?"true":void 0,"data-sentiment":tt,className:gt,style:bt,onClick:de||he?pt:void 0,children:[xe.showHeader&&(m||_||ae)?x("div",{className:"semiotic-bignumber__header",style:{display:"flex",flexDirection:"column",gap:2,marginBottom:6,paddingRight:xe.showChart&&null!=ue?(ce??xe.chartSize)+8:0},children:F(ae,ct,N(y,{children:[m?x("span",{className:"semiotic-bignumber__label",style:{fontSize:xe.labelSize,color:"var(--semiotic-text-secondary, #6b7280)",fontWeight:500,letterSpacing:.2},children:m}):null,_?x("span",{className:"semiotic-bignumber__caption",style:{fontSize:xe.captionSize,color:"var(--semiotic-text-secondary, #9ca3af)"},children:_}):null]}))}):null,F(le,ct,N(ft,{className:"semiotic-bignumber__value semiotic-bignumber__value--"+Je,style:{display:"inline"===A?"inline-flex":"flex",alignItems:"baseline",gap:6,fontVariantNumeric:"tabular-nums",fontWeight:600,color:Ke,fontSize:xe.valueSize||void 0,lineHeight:1.05},children:[x("span",{className:"semiotic-bignumber__value-text",children:ut}),T?x("span",{className:"semiotic-bignumber__unit",style:{fontSize:xe.valueSize?Math.max(11,Math.round(.32*xe.valueSize)):"0.75em",color:"var(--semiotic-text-secondary, #9ca3af)",fontWeight:500},children:T}):null]})),xe.showDelta&&(it||at||j)?x(ft,{className:"semiotic-bignumber__delta semiotic-bignumber__delta--"+vt,style:{display:"inline"===A?"inline-flex":"flex",flexWrap:"wrap",gap:8,alignItems:"baseline",marginTop:"inline"===A?0:6,fontSize:xe.deltaSize||void 0,color:"var(--semiotic-text-secondary, #6b7280)"},children:F(oe,ct,N(y,{children:[it?N("span",{className:"semiotic-bignumber__delta-row semiotic-bignumber__delta-row--"+vt,style:{display:"inline-flex",alignItems:"center",gap:4,color:S(tt),fontWeight:600},children:[x("span",{"aria-hidden":"true",className:"semiotic-bignumber__arrow semiotic-bignumber__arrow--"+vt,children:$(tt)}),x("span",{className:"semiotic-bignumber__delta-amount",children:it}),rt?N("span",{className:"semiotic-bignumber__delta-percent",style:{fontWeight:500},children:["(",rt,")"]}):null]}):null,j?.label?x("span",{className:"semiotic-bignumber__comparison-label",children:j.label}):null,at?N("span",{className:"semiotic-bignumber__target",style:{display:"inline-flex",alignItems:"baseline",gap:4},children:[it||j?.label?x("span",{"aria-hidden":"true",className:"semiotic-bignumber__separator",children:"·"}):null,x("span",{className:"semiotic-bignumber__target-percent",style:{fontWeight:500,color:"var(--semiotic-text, #111)"},children:lt}),N("span",{className:"semiotic-bignumber__target-value",children:["of ",at.formattedValue,at.label?" "+at.label:""]})]}):null]}))}):null,xe.showChart&&null!=ue?x("div",{className:"semiotic-bignumber__chart",style:{position:"absolute",top:dt.top,right:dt.right,width:ce??xe.chartSize,height:ce??xe.chartSize,display:"flex",alignItems:"center",justifyContent:"center",pointerEvents:"none"},children:x("div",{style:{pointerEvents:"auto",lineHeight:0},children:F(ue,ct,null)})}):null,xe.showTrend&&null!=se?x("div",{className:"semiotic-bignumber__trend",style:{position:"absolute",left:dt.left,right:dt.right,bottom:dt.bottom+(null!=me?28:0)},children:F(se,ct,null)}):null,null!=me?x(ft,{className:"semiotic-bignumber__footer",style:{position:"absolute",left:dt.left,right:dt.right,bottom:dt.bottom,fontSize:xe.deltaSize||void 0,color:"var(--semiotic-text-secondary, #9ca3af)"},children:F(me,ct,null)}):null,fe?x("span",{style:{position:"absolute",width:1,height:1,padding:0,margin:-1,overflow:"hidden",clip:"rect(0,0,0,0)",whiteSpace:"nowrap",border:0},children:fe}):null]})})});_.displayName="BigNumber";var z=_,D=z;function M(e){const t=Math.floor(.45*e.width),i=Math.floor(.6*e.width),n=(e,t)=>x("div",{style:{width:e,height:t,background:"var(--semiotic-border, #e0e0e0)",borderRadius:4,opacity:.55}});return N("div",{style:{display:"flex",flexDirection:"column",gap:10,justifyContent:"center",width:"100%",height:"100%"},children:["thumbnail"!==e.mode&&"inline"!==e.mode?n(t,10):null,n(i,"presentation"===e.mode?48:28),"tile"===e.mode||"presentation"===e.mode?n(Math.floor(.35*e.width),8):null]})}export{n as buildFormatter,r as formatDuration,l as formatSignedDelta,o as formatDeltaPercent,s as resolveThreshold,u as colorForLevel,c as buildSparklinePath,z as BigNumber,D as BigNumber_default};
@@ -0,0 +1,2 @@
1
+ "use client";
2
+ import{createControlObservationAdapter as e}from"./chunk-chunk-RCF52Z42.module.min.js";import{useRef as t}from"react";var r=2*Math.PI;function n(e,t,r){const n=r?.center?.x??0,a=r?.center?.y??0;return{x:n+Math.sin(e)*t,y:a-Math.cos(e)*t}}function a(e,t,a,i,l){const c=l?.center,s=(e,t)=>{const{x:r,y:a}=n(e,t,{center:c});return`${o(r)},${o(a)}`},u=Math.max(0,a),d=Math.max(u,i),p=Math.abs(t-e),m=e>t?0:1;if(p>=r-1e-6){const e=c?.x??0,t=c?.y??0,r=`${o(e)},${o(t-d)}`,n=`${o(e)},${o(t+d)}`;let a=`M${r} A${o(d)},${o(d)} 0 1 1 ${n} A${o(d)},${o(d)} 0 1 1 ${r} Z`;if(u>0){const r=`${o(e)},${o(t-u)}`,n=`${o(e)},${o(t+u)}`;a+=` M${r} A${o(u)},${o(u)} 0 1 0 ${n} A${o(u)},${o(u)} 0 1 0 ${r} Z`}return a}const h=p>Math.PI?1:0,f=s(e,d),$=s(t,d);if(0>=u){const e=c?.x??0,t=c?.y??0;return`M${o(e)},${o(t)} L${f} A${o(d)},${o(d)} 0 ${h} ${m} ${$} Z`}const y=s(t,u),x=s(e,u);return`M${f} A${o(d)},${o(d)} 0 ${h} ${m} ${$} L${y} A${o(u)},${o(u)} 0 ${h} ${1===m?0:1} ${x} Z`}function o(e){return Math.round(1e3*e)/1e3}function i(e,t,r=0){return t>0?((e-r)%t+t)%t+r:e}import{jsx as l,jsxs as c}from"react/jsx-runtime";function s({value:e,onChange:o,period:s=365,radius:u=180,innerRadius:d=14,width:p,height:m,step:h=1,largeStep:f=7,label:$="Range",formatValue:y,arcFill:x="var(--semiotic-primary, #4e79a7)",stroke:g="var(--semiotic-bg, #ffffff)",className:v,style:b}){const w=p??2*u+40,k=m??2*u+40,P=w/2,M=k/2,I=function(e){const[t,n]=e,a=n-t||1,o=r;return e=>0+(e-t)/a*(o-0)}([0,s]),A=t(null),C=e=>{const t=e.currentTarget.ownerSVGElement??e.currentTarget,n=t.getBoundingClientRect(),a=t.viewBox?.baseVal;return Math.round((Math.atan2((a?.width||w)/(n.width||1)*(e.clientX-n.left)-P-0,-((a?.height||k)/(n.height||1)*(e.clientY-n.top)-M-0))+r)%r/r*s)%s},D=(e,t)=>{e.preventDefault(),e.stopPropagation();const r=e.currentTarget.ownerSVGElement;r?.setPointerCapture?.(e.pointerId),A.current={mode:t,lastValue:C(e)}},T=e=>{const t=e.currentTarget.ownerSVGElement??e.currentTarget;t?.hasPointerCapture?.(e.pointerId)&&t.releasePointerCapture(e.pointerId),A.current=null},N=(e,t)=>{o("range"===e?e=>({start:i(e.start+t,s),end:i(e.end+t,s)}):r=>({...r,[e]:i(r[e]+t,s)}))},V=e=>t=>{const r=t.shiftKey?f:h;"ArrowRight"===t.key||"ArrowUp"===t.key?(t.preventDefault(),N(e,r)):"ArrowLeft"!==t.key&&"ArrowDown"!==t.key||(t.preventDefault(),N(e,-r))},R=e.start>e.end?[[e.start,s],[0,e.end]]:[[e.start,e.end]],j=e=>y?y(e):e+"";return l("svg",{viewBox:`0 0 ${w} ${k}`,width:w,height:k,className:v,onPointerMove:e=>{const t=A.current;if(!t)return;const r=C(e);if("range"===t.mode){const e=function(e,t,r){if(0>=r)return t-e;let n=(t-e)%r;return n>r/2?n-=r:-r/2>n&&(n+=r),n}(t.lastValue,r,s);if(0===e)return;return t.lastValue=r,void o(t=>({start:i(t.start+e,s),end:i(t.end+e,s)}))}o(e=>({...e,[t.mode]:r}))},onPointerUp:T,onPointerCancel:T,onLostPointerCapture:T,style:{touchAction:"none",...b},"aria-label":$+" brush",children:c("g",{transform:`translate(${P},${M})`,children:[l("g",{role:"slider",tabIndex:0,"aria-label":$+" (move both ends)","aria-valuemin":0,"aria-valuemax":s-1,"aria-valuenow":e.start,"aria-valuetext":`${j(e.start)} to ${j(e.end)}`,onPointerDown:e=>D(e,"range"),onKeyDown:V("range"),style:{cursor:"grab"},children:R.map(([e,t],r)=>l("path",{d:a(I(e),I(t),d,u),fill:x,fillOpacity:.35,stroke:g,strokeWidth:1},r))}),["start","end"].map(t=>{const r=e[t],a=(e=>n(I(e),d))(r),o=(e=>n(I(e),u+8))(r);return c("g",{role:"slider",tabIndex:0,"aria-label":`${$} ${t}`,"aria-valuemin":0,"aria-valuemax":s-1,"aria-valuenow":r,"aria-valuetext":j(r),onPointerDown:e=>D(e,t),onKeyDown:V(t),style:{cursor:"grab"},children:[l("line",{x1:a.x,y1:a.y,x2:o.x,y2:o.y,stroke:"transparent",strokeWidth:20}),l("line",{x1:a.x,y1:a.y,x2:o.x,y2:o.y,stroke:g,strokeWidth:1.5}),l("circle",{cx:o.x,cy:o.y,r:4.5,fill:g,stroke:x,strokeWidth:1})]},t)})]})})}import*as u from"react";import{useRef as d}from"react";import{jsx as p,jsxs as m}from"react/jsx-runtime";function h(e,t,r,n){return Math.min(r,Math.max(t,Number((t+Math.round((Math.min(r,Math.max(t,e))-t)/n)*n).toFixed(12))))}function f({value:t,onChange:r,pointerToValue:n,min:a,max:o,step:i=1,largeStep:l=5*i,x:c,y:s,controlType:f="value",controlId:$,label:y,valueText:x,radius:g=12,fill:v="var(--semiotic-bg, #ffffff)",stroke:b="var(--semiotic-primary, #4e79a7)",strokeWidth:w=4,labelText:k,labelDx:P=16,labelDy:M=-16,labelClassName:I,className:A,disabled:C=!1,onChangeStart:D,onChangeEnd:T,onObservation:N,chartId:V,chartType:R}){const j=d(null),E=d(t);E.current=t;const L=u.useMemo(()=>e({controlType:f,controlId:$,chartId:V,chartType:R,onObservation:N}),[V,R,$,f,N]),S=e=>{if(C)return;const t=n(e);if(null==t||!Number.isFinite(t))return;const l=h(t,a,o,i);E.current=l,r(l),L("control-change",l,"pointer")},W=e=>{e.stopPropagation(),j.current===e.pointerId&&(e.currentTarget.hasPointerCapture?.(e.pointerId)&&e.currentTarget.releasePointerCapture?.(e.pointerId),j.current=null,T?.(E.current),L("control-end",E.current,"pointer"))},K=["semiotic-direct-manipulation-control",A].filter(Boolean).join(" ");return m("g",{className:K,role:"slider",tabIndex:C?-1:0,"aria-disabled":C||void 0,"aria-label":y,"aria-valuemin":a,"aria-valuemax":o,"aria-valuenow":t,"aria-valuetext":x??`${y}: ${t}`,"aria-roledescription":"visualization control","data-viz-control":f,"data-viz-control-id":$,"data-viz-control-state":"controlled",pointerEvents:"all",onPointerDown:e=>{C||(e.preventDefault(),e.stopPropagation(),e.currentTarget.setPointerCapture?.(e.pointerId),j.current=e.pointerId,D?.(E.current),L("control-start",E.current,"pointer"),S(e))},onPointerMove:e=>{e.stopPropagation(),j.current===e.pointerId&&S(e)},onPointerUp:W,onPointerCancel:W,onLostPointerCapture:W,onKeyDown:e=>{if(C)return;const t=e.shiftKey?l:i,n=E.current;let c=null;if("ArrowLeft"!==e.key&&"ArrowDown"!==e.key||(c=n-t),"ArrowRight"!==e.key&&"ArrowUp"!==e.key||(c=n+t),"Home"===e.key&&(c=a),"End"===e.key&&(c=o),null===c)return;e.preventDefault();const s=h(c,a,o,i);E.current=s,r(s),L("control-change",s,"keyboard")},style:{cursor:C?"default":"grab",touchAction:"none"},children:[p("circle",{className:"semiotic-direct-manipulation-control__hit",cx:c,cy:s,r:g+10,fill:"transparent"}),p("circle",{className:"semiotic-direct-manipulation-control__handle",cx:c,cy:s,r:g,fill:v,stroke:b,strokeWidth:w}),k?p("text",{className:I,x:c+P,y:s+M,fill:b,children:k}):null]})}export{s as CircularBrush,f as DirectManipulationControl};
@@ -0,0 +1 @@
1
+ function e(e,t){if("function"==typeof t){const o=t(e);return Number.isFinite(o)&&o>0?Number(o):1}const o=e.datum;if(t&&o&&"object"==typeof o){const e=Number(o[t]);if(Number.isFinite(e)&&e>0)return e}const n=Number(o?.work??o?.reviewWork??o?.value);return Number.isFinite(n)&&n>0?n:1}function t(e,t){if("function"==typeof t){const o=t(e);if(null!=o&&(o+"").length>0)return o+""}else if(t){const o=n(e.datum,t),i=n(e,t),s=o??i;if(null!=s&&(s+"").length>0)return s+""}return e.id}function o(e,t){if(0===e.length)return 0;if(1===e.length)return e[0];const o=Math.max(0,Math.min(1,t))*(e.length-1),n=Math.floor(o);return e[n]+(e[Math.ceil(o)]-e[n])*(o-n)}function n(e,t){if(!t)return;let o=e;for(const e of t.split(".")){if(null==o||"object"!=typeof o)return;o=o[e]}return o}function i(e,t){if(!t)return!0;if("function"==typeof t)return t(e);const o=n(e,t.property);return!("equals"in t&&!Object.is(o,t.equals)||"notEquals"in t&&Object.is(o,t.notEquals)||t.oneOf&&!t.oneOf.some(e=>Object.is(o,e))||t.notOneOf&&t.notOneOf.some(e=>Object.is(o,e)))}function s(n){const s=n.regionId,d=Math.max(0,n.unitsPerSecond),r=n.queueLayout??"lane",c=n.queueSlotSpacing??14,a=n.queueStiffness??.35,u=Number.isFinite(n.maxQueue)?Math.max(0,Math.floor(Number(n.maxQueue))):1/0,l=Math.max(.25,n.metricWindowSeconds??30),p=Math.max(1/60,n.snapshotIntervalSeconds??.25),f=n.releaseImpulse??{x:90,y:0},y=new Map,m=new Map,b=new Map,g=new Map,h=new Map,I=new Map,v=new Map,x=[];let k=0,M=new Map,A=new Map,q=0,w=0,S=0,j=null,O=0,W=0,R=0,F=0,z=0,N=0,B=0,C=0,D=0,P=0,Q=0,E=0,$=-1,H=!1;function K(e,t){const o=t(e);return!!o&&o.activeRegionIds.includes(s)}function L(){E+=1}function T(e){return{bodyId:e.bodyId,jobId:e.jobId,visitId:e.visitId,visit:e.visit,regionId:s,work:e.total,queuedAt:e.queuedAt}}function U(e,t,o,i){const d={bodyId:e.id,jobId:t.jobId,visitId:t.visitId,visit:t.visit,remaining:t.work,total:t.work,queuedAt:t.queuedAt,sequence:i};return y.set(t.jobId,d),v.delete(e.id),I.set(e.id,t.jobId),W+=1,R+=t.work,L(),function(e,t,o){const i=T(t);n.onQueued?.(e,i),o.controls.recordObservation({type:"physics-capacity-queued",bodyId:e.id,datum:e.datum,x:e.x,y:e.y,regionId:s,work:t.total,jobId:t.jobId,visitId:t.visitId,visit:t.visit,queuedAt:t.queuedAt,queueDepth:y.size})}(e,d,o),d}function G(e){if(y.size>=u||0===m.size)return;const t=Array.from(m.values()).sort((e,t)=>e.sequence-t.sequence);for(const o of t){if(y.size>=u)break;const t=h.get(o.jobId);t&&b.has(o.jobId)?(m.delete(o.jobId),v.delete(o.bodyId),U(t,o,e,o.sequence)):m.delete(o.jobId)}}function J(){let e=0;for(const t of y.values())e+=t.remaining;return e}function V(){D=Math.max(D,y.size),P=Math.max(P,J())}function X(){const e=S-l,t=Math.max(0,Math.min(l,S-(j??S)));let o=0,n=0,i=0,s=0,r=0;for(const t of x){if(e>t.end)continue;o+=t.arrivals,n+=t.arrivalWork,i+=t.completions,s+=t.completedWork;const d=t.end-t.start;r+=d>0&&e>t.start?t.processedWork*Math.min(1,Math.max(0,t.end-e)/d):t.processedWork}const c=t>0?n/t:0;return{seconds:t,arrivals:o,arrivalWork:n,completions:i,completedWork:s,processedWork:r,arrivalsPerSecond:t>0?o/t:0,throughputPerSecond:t>0?i/t:0,utilization:t>0&&d>0?Math.max(0,Math.min(1,r/(d*t))):0,pressure:d>0?c/d:0}}return{id:n.id??"capacity-queue:"+s,continuous:!1!==n.continuous,tick:o=>{const r=o.controls.readBodies(),c=new Map,a=new Map;for(const e of r){if(c.set(e.id,e),!K(e.id,o.getRegionState))continue;if(!i(e,n.bodyFilter))continue;const s=t(e,n.jobKey),d=a.get(s)??[];d.push(e),a.set(s,d)}const W=Number.isFinite(o.dt)?Math.max(0,o.dt):0;if(!H){const e=Number.isFinite(o.elapsed)?Math.max(0,o.elapsed):W;S=Math.max(0,e-W),H=!0}const R=S,D=R+W;S=D,j=null==j?R:Math.min(j,R);const P={start:R,end:D,arrivals:0,arrivalWork:0,completions:0,completedWork:0,processedWork:0},E=new Map;for(const[e,t]of a){const o=b.get(e)?.bodyId,n=t.find(e=>e.id===o)??t[0];E.set(e,n),h.set(e,n)}for(const[e,t]of b){if(E.has(e))continue;const i=y.get(e),d=c.get(t.bodyId)??h.get(e);if(i){y.delete(e),I.delete(i.bodyId),B+=1,C+=i.remaining,L();const r={...T(i),abandonedAt:S,remainingWork:i.remaining,queueSeconds:Math.max(0,S-i.queuedAt)};d&&n.onAbandoned?.(d,r),o.controls.recordObservation({type:"physics-capacity-abandoned",bodyId:t.bodyId,datum:d?.datum,x:d?.x,y:d?.y,regionId:s,work:i.total,remainingWork:i.remaining,jobId:e,visitId:i.visitId,visit:i.visit,queuedAt:i.queuedAt,abandonedAt:S,queueSeconds:r.queueSeconds,queueDepth:y.size})}m.delete(e),v.delete(t.bodyId),b.delete(e),h.delete(e)}for(const[t,i]of E){if(b.has(t))continue;const d=(g.get(t)??0)+1;g.set(t,d);const r=e(i,n.unitAccessor),c={bodyId:i.id,jobId:t,visitId:`${s}:${t}:${d}`,visit:d,regionId:s,work:r,queuedAt:S};b.set(t,c),O+=1,P.arrivals+=1,P.arrivalWork+=r;const a=k++;if(u>y.size)U(i,c,o,a);else{const e={...c,blockedAt:S,sequence:a};m.set(t,e),v.set(i.id,t),N+=1,L(),n.onBlocked?.(i,e),o.controls.recordObservation({type:"physics-capacity-blocked",bodyId:i.id,datum:i.datum,x:i.x,y:i.y,regionId:s,work:r,jobId:t,visitId:c.visitId,visit:d,queuedAt:S,blockedAt:S,queueDepth:y.size,blockedDepth:m.size})}}G(o),V();const J=Array.from(y.values()).sort((e,t)=>e.sequence-t.sequence);let X=d*W;for(const e of J){if(0>=X)break;const t=Math.min(e.remaining,X);if(e.remaining-=t,X-=t,F+=t,P.processedWork+=t,e.remaining>1e-6)continue;y.delete(e.jobId),I.delete(e.bodyId),w+=1,z+=e.total,P.completions+=1,P.completedWork+=e.total;const i=Math.max(0,S-e.queuedAt);Q+=i,L();const d=c.get(e.bodyId);if(!d)continue;o.controls.applyImpulse(e.bodyId,f.x??0,f.y??0);const r={...T(e),completedAt:S,queueSeconds:i};n.onProcessed?.(d,r),o.controls.recordObservation({type:"physics-capacity-processed",bodyId:e.bodyId,datum:d.datum,x:d.x,y:d.y,regionId:s,work:e.total,jobId:e.jobId,visitId:e.visitId,visit:e.visit,queuedAt:e.queuedAt,completedAt:S,queueSeconds:i,queueDepth:y.size})}G(o),V(),function(){const e=Array.from(y.values()).sort((e,t)=>e.sequence-t.sequence);M=new Map(e.map((e,t)=>[e.bodyId,t]));const t=Array.from(m.values()).sort((e,t)=>e.sequence-t.sequence);A=new Map(t.map((e,t)=>[e.bodyId,t])),q=e.length}(),function(e){(e.end>e.start||e.arrivals>0||e.completions>0||e.processedWork>0)&&x.push(e);const t=S-l;for(;x.length>0&&t>x[0].end;)x.shift()}(P);const Y=Math.floor(S/p);Y!==$&&($=Y,L())},getSnapshot:()=>{const e=J(),t=function(){let e=0;for(const t of m.values())e+=t.work;return e}(),n=y.size,i=Array.from(y.values()).map(e=>Math.max(0,S-e.queuedAt)).sort((e,t)=>e-t),r=i.reduce((e,t)=>e+t,0);return{regionId:s,queueDepth:n,processedCount:w,unitsPerSecond:d,remainingWork:e,meanRemainingWork:n>0?e/n:0,waitingWork:e+t,blockedDepth:m.size,blockedWork:t,arrivalCount:O,admittedCount:W,admittedWork:R,processedWork:F,completedWork:z,blockedCount:N,abandonedCount:B,abandonedWork:C,peakQueueDepth:D,peakRemainingWork:P,queueAge:{count:i.length,meanSeconds:i.length>0?r/i.length:0,p50Seconds:o(i,.5),p95Seconds:o(i,.95),oldestSeconds:i.at(-1)??0},meanCompletedQueueSeconds:w>0?Q/w:0,window:X(),simulatedAt:S,metricRevision:E}},bodyForce:e=>{if("none"===r)return null;const t=I.get(e.body.id),o=v.get(e.body.id),n=t?y.get(t):void 0,i=o?m.get(o):void 0;if(!n&&!i)return null;const d=n?M.get(e.body.id):A.get(e.body.id);if(null==d)return null;let u;const l=e.regions;if(l)for(let e=0;l.length>e;e+=1)if(l[e].id===s){const t=l[e].shape;t&&"aabb"===t.type&&(u=t);break}return u?{x:((i?u.x-.44*u.width:u.x-.22*u.width-d*(.15*c))-e.body.x)*a,y:(u.y-(d-((i?m.size:q)-1)/2)*c/Math.max(1,Math.sqrt(i?m.size:q))-e.body.y)*a*.85}:{x:8*-Math.sign(e.body.vx||1),y:0}}}}function d(e,t){if(!t)return;let o=e;for(const e of t.split(".")){if(null==o||"object"!=typeof o)return;o=o[e]}return o}function r(e,t){if(!t)return!0;if("function"==typeof t)return t(e);const o=d(e,t.property);return!("equals"in t&&!Object.is(o,t.equals)||"notEquals"in t&&Object.is(o,t.notEquals)||t.oneOf&&!t.oneOf.some(e=>Object.is(o,e))||t.notOneOf&&t.notOneOf.some(e=>Object.is(o,e)))}function c(e){const t=e.resources.map(e=>({...e,bodyId:e.bodyId??e.id})),o=new Map(t.map(e=>[e.bodyId,e])),n=new Map,i=new Map,s=e.assignmentForce??.45,d=e.returnForce??.35,r=e.caseAttraction??.08,c=e.assignmentOffset??{x:0,y:0};let a=new Map,u=0,l=0;return{id:e.id??"service-resource-pool",continuous:!0,assign:e=>{const o=n.get(e);if(o)return o;const s=t.find(e=>!i.has(e.id));if(!s)return null;const d={resourceId:s.id,resourceBodyId:s.bodyId,caseBodyId:e,assignedAt:u};return n.set(e,d),i.set(s.id,d),l+=1,d},release:e=>{const t=n.get(e);return!!t&&(n.delete(e),i.delete(t.resourceId),l+=1,!0)},getAssignment:e=>n.get(e),tick:e=>{u=Math.max(u,e.elapsed),a=new Map(e.controls.readBodies().map(e=>[e.id,e]));for(const[e,t]of n)a.has(e)&&a.has(t.resourceBodyId)||(n.delete(e),i.delete(t.resourceId),l+=1)},getSnapshot:()=>({total:t.length,available:t.length-i.size,assigned:i.size,assignments:Array.from(n.values()),simulatedAt:u,metricRevision:l}),bodyForce:e=>{const t=o.get(e.body.id);if(t){const o=i.get(t.id),n=o?a.get(o.caseBodyId):void 0,r=o?s:d;return{x:((n?n.x+(c.x??0):t.home.x)-e.body.x)*r,y:((n?n.y+(c.y??0):t.home.y)-e.body.y)*r}}const u=n.get(e.body.id);if(!u||0>=r)return null;const l=a.get(u.resourceBodyId);return l?{x:(l.x-e.body.x)*r,y:(l.y-e.body.y)*r}:null}}}function a(e,t){const o="function"==typeof t.deadlineAccessor?t.deadlineAccessor(e):d(e.datum,t.deadlineAccessor)??d(e,t.deadlineAccessor);return Number.isFinite(Number(o))?Math.max(0,Number(o)):0}function u(e){const t=new Map;let o=0,n=0;function i(o){t.set(o.bodyId,o),n+=1,e.onStateChange?.({...o})}function s(e){const n=t.get(e);return!(!n||null!=n.completedAt||(i({...n,completedAt:o,state:"unhappy"===n.state?"resolved-unhappy":"resolved"}),0))}return{id:e.id??"service-level",continuous:!0,protect:e=>{const n=t.get(e);return!(!n||null!=n.completedAt||"unhappy"===n.state||(i({...n,state:"protected",protectedAt:o}),0))},complete:s,getCase:e=>t.get(e),tick:n=>{o=Math.max(o,n.elapsed);for(const d of n.controls.readBodies()){if(!r(d,e.bodyFilter))continue;if(!t.has(d.id)){const t=a(d,e);i({bodyId:d.id,openedAt:o,deadlineAt:o+t,state:"waiting"})}const c=t.get(d.id);c&&null==c.completedAt&&(e.completionRegionId&&n.getRegionState(d.id)?.activeRegionIds.includes(e.completionRegionId)?s(d.id):"waiting"!==c.state||c.deadlineAt>o||i({...c,state:"unhappy"}))}},getSnapshot:()=>{const e=Array.from(t.values()),i=t=>e.filter(e=>e.state===t).length;return{total:e.length,waiting:i("waiting"),protected:i("protected"),unhappy:i("unhappy"),resolved:i("resolved"),resolvedUnhappy:i("resolved-unhappy"),simulatedAt:o,metricRevision:n}}}}function l(e){const t=new Set;let o=0,n=0,i=0,s=!1;return{id:e.id??"dependency-gate:"+e.regionId,continuous:!0,tick:d=>{o=Math.max(o,d.elapsed);const c=s;var a;a=o,s=e.isOpen?e.isOpen(a):null!=e.opensAt&&a>=e.opensAt;const u=d.controls.readBodies(),l=new Map(u.map(e=>[e.id,e]));for(const o of u){const n=d.getRegionState(o.id)?.activeRegionIds.includes(e.regionId);n&&r(o,e.bodyFilter)&&(s||t.has(o.id)||(t.add(o.id),i+=1,e.onHeld?.(o)))}if(s&&!c){for(const o of t){const t=l.get(o);t&&(d.controls.applyImpulse(o,e.releaseImpulse?.x??86,e.releaseImpulse?.y??0),n+=1,e.onReleased?.(t))}t.clear(),i+=1}for(const e of t)l.has(e)||(t.delete(e),i+=1)},getSnapshot:()=>({regionId:e.regionId,isOpen:s,blocked:t.size,released:n,simulatedAt:o,metricRevision:i}),bodyForce:o=>{if(s||!t.has(o.body.id))return null;const n=o.regions?.find(t=>t.id===e.regionId),i=n?.shape;if(!i||"aabb"!==i.type)return{x:.8*-o.body.vx,y:.8*-o.body.vy};const d=e.holdForce??.4;return{x:(i.x-o.body.x)*d-.45*o.body.vx,y:(i.y-o.body.y)*d-.45*o.body.vy}}}}function p(e,t){return e||t?{x:(e?.x??0)+(t?.x??0),y:(e?.y??0)+(t?.y??0)}:null}function f(e){if(!e?.length)return null;const t=e.slice(),o=t.some(e=>!1!==e.continuous);return{controllers:t,continuous:o,onTick:(e,o,n)=>{const i={result:e,controls:o,dt:n.dt,elapsed:n.elapsed,getRegionState:n.getRegionState};for(const e of t)e.tick(i)},bodyForce:e=>{let o=null;for(const n of t)n.bodyForce&&(o=p(o,n.bodyForce(e)));return o}}}function y(e){const t=new Set,o=e.impulse??{x:-60,y:0};return{id:e.id??"portal:"+e.fromRegionId,continuous:!0===e.continuous,tick:n=>{const i=n.controls.readBodies();for(const s of i){const i=n.getRegionState(s.id),d=i?.activeRegionIds.includes(e.fromRegionId);d?t.has(s.id)||(t.add(s.id),n.controls.applyImpulse(s.id,o.x??0,o.y??0),e.onPortal?.(s)):t.delete(s.id)}}}}export{s as createCapacityQueueController,c as createServiceResourcePoolController,u as createServiceLevelController,l as createDependencyGateController,f as composePhysicsControllers,y as createPortalController};
@@ -0,0 +1 @@
1
+ import{createSeededFrameRandom as t,schemeCategory10 as e}from"./chunk-chunk-NO4MCQVD.module.min.js";import{getMinMax as o}from"./chunk-chunk-JJ2OOIET.module.min.js";import{forceSimulation as n,forceCenter as r,forceX as s,forceY as c,forceLink as i,forceManyBody as a,forceCollide as f}from"d3-force";import{scaleLinear as l}from"d3-scale";var u=new Set,d=new WeakMap;function g(t,e){if("production"===process.env.NODE_ENV)return t;if(!t||!t.data||"object"!=typeof t.data)return t;let o=d.get(t);if(o){const t=o.get(e);if(t)return t}else o=new Map,d.set(t,o);const n=new Proxy(t,{get(t,o,n){if("string"==typeof o&&!(o in t)&&t.data&&o in t.data){const t=`${e}:${o}`;u.has(t)||(u.add(t),console.warn(`[Semiotic] "${e}" callback accessed "${o}" on the wrapper object, but it only exists on ".data". Use d.data.${o} (or d.data?.${o}) instead. Frame callbacks receive RealtimeNode/RealtimeEdge wrappers, not your raw data.`))}return Reflect.get(t,o,n)}});return o.set(e,n),n}var h={supportsStreaming:!0,hierarchical:!1,computeLayout(e,o,l,u){if(0===e.length)return;const d=l.forceStrength??.1,g=u[0]/2,h=u[1]/2,x=l.__previousPositions;let M=0;const S=[];for(const t of e){const e=null!=t.x&&null!=t.y&&(0!==t.x||0!==t.y),o=x?.get(t.id);e?M++:o?(t.x=o.x,t.y=o.y,M++):S.push(t)}const b=M>0&&.3>=(e.length>0?S.length/e.length:1);if(b){const t=new Map;for(const o of e)t.set(o.id,o);for(const e of S){const n=y(e.id,o,t);if(n.length>0){let t=0,o=0;for(const e of n)t+=e.x,o+=e.y;const r=p(e.id),s=r%360*(Math.PI/180),c=10+r%20;e.x=t/n.length+c*Math.cos(s),e.y=o/n.length+c*Math.sin(s)}else{const t=p(e.id),o=t%360*(Math.PI/180),n=15+t%30;e.x=g+n*Math.cos(o),e.y=h+n*Math.sin(o)}}}else{const t=2.399963229728653;for(let o=0;e.length>o;o++){const n=e[o];if(null==n.x||null==n.y||0===n.x&&0===n.y){const e=10*Math.sqrt(o+.5),r=o*t;n.x=g+e*Math.cos(r),n.y=h+e*Math.sin(r)}}}const k=l.__skipForceSimulation||0===l.iterations?0:b?40:l.iterations??Math.max(50,Math.min(300,Math.floor(300-2*(e.length-30)))),w=m(l.nodeSize,l.nodeSizeRange,e),_=t=>w(t);if(k>0){const u=new Map,y=new Map;for(const t of e)u.set(t.id,0),y.set(t.id,t);for(const t of o){const e="string"==typeof t.source?t.source:t.source.id,o="string"==typeof t.target?t.target:t.target.id;u.set(e,(u.get(e)??0)+1),u.set(o,(u.get(o)??0)+1)}const p=i().strength(t=>{const e=t.weight,o="string"==typeof t.target?t.target:t.target.id,n=Math.max(1,Math.min(u.get("string"==typeof t.source?t.source:t.source.id)??1,u.get(o)??1));return Math.min(2.5,(e&&e>0?Math.sqrt(e):1)*d/(.1*n))}).distance(t=>{const e="string"==typeof t.source?y.get(t.source):t.source,o="string"==typeof t.target?y.get(t.target):t.target,n=(e?_(e):0)+(o?_(o):0)+12;return Math.max(40,n)}).id(t=>t.id),m=n();if(void 0===l.random&&void 0===l.seed||m.randomSource(l.random??t(l.seed)),m.force("charge",a().strength(t=>{const e=u.get(t.id)??0;return-15*_(t)*Math.sqrt(e+1)})).force("collide",f(t=>_(t)+3).strength(.9).iterations(2)).force("center",r(g,h).strength(.8)).force("x",s(g).strength(.06)).force("y",c(h).strength(.06)),m.nodes(e),o.length>0){const t=o.map(t=>({...t,source:"string"==typeof t.source?t.source:t.source.id,target:"string"==typeof t.target?t.target:t.target.id}));p.links(t),m.force("link",p)}b?m.alpha(.3):.1>m.alpha()&&m.alpha(1),m.stop();for(let t=0;k>t;++t)m.tick()}for(const t of e){if(null==t.x||null==t.y)continue;const e=_(t);t.x=Math.max(e,Math.min(u[0]-e,t.x)),t.y=Math.max(e,Math.min(u[1]-e,t.y)),t.x0=0,t.x1=0,t.y0=0,t.y1=0}const v=new Map;for(const t of e)v.set(t.id,t);for(const t of o){if("string"==typeof t.source){const e=v.get(t.source);e&&(t.source=e)}if("string"==typeof t.target){const e=v.get(t.target);e&&(t.target=e)}}},buildScene(t,o,n,r){const s=n.nodeStyle,c=n.edgeStyle,i=m(n.nodeSize,n.nodeSizeRange,t),a=Array.isArray(n.colorScheme)?n.colorScheme:n.themeCategorical&&n.themeCategorical.length>0?n.themeCategorical:e,f=new Map;t.forEach((t,e)=>{f.set(t.id,a[e%a.length])});const l=[],u=[],d=[];for(const e of t){if(null==e.x||null==e.y)continue;const t=i(g(e,"nodeSize")),o=s?s(g(e,"nodeStyle")):{},r={fill:o.fill||f.get(e.id)||n.themeSemantic?.primary||"#007bff",stroke:o.stroke||n.themeSemantic?.surface||"#fff",strokeWidth:o.strokeWidth??2,opacity:o.opacity};l.push({type:"circle",cx:e.x,cy:e.y,r:t,style:r,datum:e,id:e.id,label:e.id})}const h=new Map;for(const e of t)h.set(e.id,e);for(const t of o){const e="object"==typeof t.source?t.source:h.get(t.source),o="object"==typeof t.target?t.target:h.get(t.target);if(!e||!o)continue;if(null==e.x||null==e.y)continue;if(null==o.x||null==o.y)continue;const r=c?c(g(t,"edgeStyle")):{};u.push({type:"line",x1:e.x,y1:e.y,x2:o.x,y2:o.y,style:{stroke:r.stroke||n.themeSemantic?.border||n.themeSemantic?.secondary||"#999",strokeWidth:r.strokeWidth??1,opacity:r.opacity??.6},datum:t})}if(!1!==n.showLabels){const e=(y=n.nodeLabel)?"function"==typeof y?y:t=>t[y]||t.id:null;for(const o of t){if(null==o.x||null==o.y)continue;const t=e?e(o):o.id;if(!t)continue;const n=i(g(o,"nodeSize"));d.push({x:o.x,y:o.y-n-4,text:t+"",anchor:"middle",baseline:"auto",fontSize:11})}}var y;return{sceneNodes:l,sceneEdges:u,labels:d}}};function y(t,e,o){const n=[];for(const r of e){const e="string"==typeof r.source?r.source:r.source.id,s="string"==typeof r.target?r.target:r.target.id;let c=null;if(e===t?c=s:s===t&&(c=e),c){const t=o.get(c);!t||0===t.x&&0===t.y||n.push({x:t.x,y:t.y})}}return n}function p(t){let e=0;for(let o=0;t.length>o;o++)e=(e<<5)-e+t.charCodeAt(o)|0;return Math.abs(e)}function m(t,e,n){if(n.some(t=>null!=t.__forceRadius))return t=>t.__forceRadius??8;if(null==t)return()=>8;if("number"==typeof t)return()=>t;if("function"==typeof t)return e=>t(e)||8;const r=e||[5,20],s=[];for(const e of n){const o=e.data?.[t];"number"==typeof o&&s.push(o)}if(0===s.length)return()=>r[0];const[c,i]=o(s);if(c===i)return()=>(r[0]+r[1])/2;const a=l().domain([c,i]).range(r).clamp(!0);return e=>{const o=e.data?.[t];return null==o||"number"!=typeof o?r[0]:a(o)}}export{g as wrapWithDataHint,h as forceLayoutPlugin,m as resolveNodeSizeFn};
@@ -0,0 +1 @@
1
+ import{contrastRatio as e,fieldForRole as t,recipeConfig as i,recipeIntentId as a}from"./chunk-chunk-M337NY6L.module.min.js";import{extractAllRows as n}from"./chunk-chunk-255KDHW5.module.min.js";import{resolveResponsiveRules as r}from"./chunk-chunk-2WVCH4PL.module.min.js";import{getMinMax as s}from"./chunk-chunk-JJ2OOIET.module.min.js";import*as o from"react";function l(e){if(null==e)return"";if("number"!=typeof e)return e+"";if(!isFinite(e))return e+"";if(0===e)return"0";const t=parseFloat(e.toPrecision(12)),i=Math.abs(t);return 1e9>i?1e6>i?1e4>i?Number.isInteger(t)?t+"":parseFloat(t.toPrecision(6))+"":parseFloat((t/1e3).toPrecision(3))+"K":parseFloat((t/1e6).toPrecision(3))+"M":parseFloat((t/1e9).toPrecision(3))+"B"}var c=864e5;function u(e){return 10>e?"0"+e:e+""}var d=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function m(e){let t,i=e;return(a,n,r)=>{const s=a instanceof Date?a:new Date(a);e||!r||2>r.length||r===t||(t=r,i=function(e){if(2>e.length)return"days";const t=[];for(let i=1;e.length>i;i++)t.push(e[i]-e[i-1]);t.sort((e,t)=>e-t);const i=t[Math.floor(t.length/2)];return 12e4>i?"seconds":72e5>i?"minutes":2*c>i?"hours":60*c>i?"days":400*c>i?"months":"years"}(r));const o=i||"days";return null!=n&&0!==n&&r&&0!==r.length?function(e,t,i){const a=e.getUTCFullYear()!==t.getUTCFullYear(),n=a||e.getUTCMonth()!==t.getUTCMonth(),r=n||e.getUTCDate()!==t.getUTCDate(),s=r||e.getUTCHours()!==t.getUTCHours(),o=s||e.getUTCMinutes()!==t.getUTCMinutes(),l=d[e.getUTCMonth()],c=e.getUTCDate(),m=e.getUTCFullYear(),h=u(e.getUTCHours()),p=u(e.getUTCMinutes()),g=u(e.getUTCSeconds());switch(i){case"seconds":return a?`${l} ${c}, ${m} ${h}:${p}:${g}`:r?`${l} ${c} ${h}:${p}:${g}`:s?`${h}:${p}:${g}`:o?`${p}:${g}`:":"+g;case"minutes":return a?`${l} ${c}, ${m} ${h}:${p}`:r?`${l} ${c} ${h}:${p}`:s?`${h}:${p}`:":"+p;case"hours":return a?`${l} ${c}, ${m} ${h}:00`:n?`${l} ${c} ${h}:${p}`:r?`${l} ${c} ${h}:00`:h+":00";case"days":return a?`${l} ${c}, ${m}`:n?`${l} ${c}`:""+c;case"months":return a?`${l} ${m}`:""+l;case"years":return""+m}}(s,new Date(r[n-1]),o):function(e,t){const i=d[e.getUTCMonth()],a=e.getUTCDate(),n=e.getUTCFullYear(),r=u(e.getUTCHours()),s=u(e.getUTCMinutes()),o=u(e.getUTCSeconds());switch(t){case"seconds":return`${i} ${a}, ${n} ${r}:${s}:${o}`;case"minutes":case"hours":return`${i} ${a}, ${n} ${r}:${s}`;case"days":return`${i} ${a}, ${n}`;case"months":return`${i} ${n}`;case"years":return""+n}}(s,o)}}function h(e,t=.5){const i=/^#?([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/i.exec(e);if(!i)return e;const a=Math.round(parseInt(i[1],16)*(1-t)),n=Math.round(parseInt(i[2],16)*(1-t)),r=Math.round(parseInt(i[3],16)*(1-t));return`#${a.toString(16).padStart(2,"0")}${n.toString(16).padStart(2,"0")}${r.toString(16).padStart(2,"0")}`}function p(e,t=.5){const i=/^#?([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/i.exec(e);if(!i)return e;const a=Math.round(parseInt(i[1],16)+(255-parseInt(i[1],16))*t),n=Math.round(parseInt(i[2],16)+(255-parseInt(i[2],16))*t),r=Math.round(parseInt(i[3],16)+(255-parseInt(i[3],16))*t);return`#${a.toString(16).padStart(2,"0")}${n.toString(16).padStart(2,"0")}${r.toString(16).padStart(2,"0")}`}var g=new Set(["LineChart","AreaChart","DifferenceChart","StackedAreaChart","Scatterplot","ConnectedScatterplot","BubbleChart","QuadrantChart","MultiAxisLineChart","CandlestickChart","Heatmap","MinimapChart","RealtimeLineChart","RealtimeHeatmap"]),f=new Set(["BarChart","StackedBarChart","GroupedBarChart","SwarmPlot","BoxPlot","Histogram","ViolinPlot","DotPlot","RidgelinePlot","FunnelChart","LikertChart","SwimlaneChart"]),y={Scatterplot:["pointRadius","hoverRadius"],BubbleChart:["pointRadius","hoverRadius"],ConnectedScatterplot:["pointRadius","hoverRadius"],QuadrantChart:["pointRadius","hoverRadius"],SwarmPlot:["pointRadius","hoverRadius"],DotPlot:["dotRadius","hoverRadius"]};function b(e){return!!e&&"object"==typeof e&&!Array.isArray(e)}function v(e){return"string"==typeof e&&e.trim().length>0}function x(e){const t=b(e.capability)?e.capability:null,i=b(e.recipe)?e.recipe:null,a=[e.mobileSemantics,e.mobileVisualization,e.mobile,t?.mobile,i?.mobile];for(const e of a)if(b(e))return e;return null}function w(e){return Array.isArray(e)&&e.length>=2&&"number"==typeof e[0]&&"number"==typeof e[1]&&Number.isFinite(e[0])&&Number.isFinite(e[1])?[e[0],e[1]]:null}function k(e){return w(e.size)||w(b(e.frameProps)?e.frameProps.size:void 0)||("number"==typeof e.width&&"number"==typeof e.height?[e.width,e.height]:null)}function $(e,t){e.push({...t,status:"pass"})}function C(e,t){e.push({...t,status:"warn"})}function A(e,t){e.push({...t,status:"manual"})}function S(e,t={},i={}){const a=i.viewportWidth??390,n=i.targetSize??44,s=k(t),o=r(t,{width:a,height:s?.[1]}),l=[],c=k(t=o.props),u=x(t),d=function(e,t){return e.includes("CustomChart")||e.includes("Custom")||null!=t.recipeId||null!=t.mobileSemantics}(e,t),m=function(e){const t=x(e);return!0===e.responsive||!0===e.mobile||!0===t?.responsive||!0===t?.supportsResponsiveLayout||Array.isArray(t?.breakpoints)||"number"==typeof t?.minViewportWidth||"responsive"===t?.strategy||"small-multiples"===t?.strategy||"summary-cards"===t?.strategy||null!=e.mobileLayout||null!=e.responsiveRules||"mobile-readable"===e.density}(t),h=!0===i.inChartContainer,p=v(t.title)||v(t.summary)||v(t.description)||!0===u?.summary||v(u?.summary);if(o.matches.length>0&&$(l,{id:"layout.responsive-rule-applied",category:"layout",impact:"medium",message:`${o.matches.length} responsive rule(s) applied for the ${a}px mobile audit.`}),c){const[t,i]=c;t>a&&!m?C(l,{id:"layout.fixed-desktop-size",category:"layout",impact:"high",message:`Chart size is ${t}px wide against a ${a}px mobile viewport with no responsive/mobile transform hint.`,fix:"Use responsive sizing, responsiveRules/mobileLayout, or an explicit mobile variant that preserves the task instead of clipping the desktop chart."}):$(l,{id:"layout.fixed-desktop-size",category:"layout",impact:"high",message:"No fixed desktop-width overflow risk is visible from the config."}),"number"==typeof u?.minViewportWidth&&u.minViewportWidth>a&&C(l,{id:"layout.mobile-min-width",category:"layout",impact:"high",message:`The declared mobile contract supports ${u.minViewportWidth}px minimum, wider than the audited ${a}px viewport.`,fix:"Add a narrower breakpoint, summary-card fallback, or explicit horizontal-scroll affordance with a non-visual equivalent."});const n=t/Math.max(1,i);430>=a&&n>2.4&&"BigNumber"!==e&&C(l,{id:"layout.wide-aspect-ratio",category:"layout",impact:"medium",message:`Chart aspect ratio is ${n.toFixed(1)}:1, which tends to compress phone charts vertically.`,fix:"Prefer stacked sections, small multiples, cards plus a sparkline, or a taller mobile-specific chart ratio."}),160>i&&"BigNumber"!==e&&C(l,{id:"layout.too-short-for-reading",category:"layout",impact:"medium",message:`Chart height is ${i}px; most phone charts need enough vertical room for marks plus readable labels.`,fix:"Reserve more vertical space, remove nonessential axes, or switch to a card/sparkline pattern with external labels."})}else A(l,{id:"layout.unknown-size",category:"layout",impact:"medium",message:"No explicit size is available to audit. This may be responsive, but static mobile overflow cannot be checked.",fix:"Audit rendered widths at 320, 360, 390, and 430px, or pass size/responsiveRules metadata into the config."});const w=function(e){const t=[e.data,e.points,e.lines,e.nodes,e.edges,e.areas,b(e.frameProps)?e.frameProps.data:void 0];let i=0;for(const e of t)Array.isArray(e)&&(i+=e.length);return i}(t);w>0&&(w>("number"==typeof u?.maxMarks?u.maxMarks:g.has(e)?1.25*a:f.has(e)?Math.max(8,Math.floor(a/34)):a)?C(l,{id:"density.mark-budget",category:"density",impact:g.has(e)?"medium":"high",message:`${w} data item(s) exceed the rough mobile density budget for ${e} at ${a}px.`,fix:"Aggregate, filter, facet into small multiples, switch to a summary-card plus detail view, or use progressive disclosure."}):$(l,{id:"density.mark-budget",category:"density",impact:"medium",message:w+" data item(s) are within the rough mobile density budget for this component."}));const S=function(e){const t=[e.tickValues,e.xTickValues,e.yTickValues,e.rTickValues,e.oTickValues];let i=0;for(const e of t)Array.isArray(e)&&(i+=e.length);return i>0?i:null}(t),M=!1!==t.showAxes&&!1!==t.axis;if(M&&null!=S){const e=Math.max(3,Math.floor(a/58));S>e&&C(l,{id:"density.explicit-tick-count",category:"density",impact:"medium",message:`${S} explicit tick(s) exceed a phone-friendly budget of about ${e} at ${a}px.`,fix:"Use adaptive ticks, fewer tickValues, direct labels, or move exact values into a tap-accessible detail panel."})}else M&&(g.has(e)||f.has(e))&&A(l,{id:"density.axis-label-collision",category:"density",impact:"medium",message:"Axes are enabled, but label collision depends on rendered tick text and cannot be checked statically.",fix:"Verify tick labels at phone widths or provide explicit mobile tick density."});!function(e){const t=b(e.frameProps)?e.frameProps:{};return(!0===e.enableHover||null!=e.tooltipContent||null!=e.tooltip||null!=t.tooltipContent||!0===t.enableHover)&&!function(e){const t=x(e),i=b(e.mobileInteraction)?e.mobileInteraction:null;return null!=e.controls||null!=e.mobileControls||!0===e.alternativeControls||null!=e.selection||null!=e.onClick||null!=e.onSelect||!0===e.mobileInteraction||!0===i?.tapToSelect||!0===i?.tapToLockTooltip||Array.isArray(t?.interaction?.alternatives)&&t.interaction.alternatives.length>0||"tap"===t?.interaction?.primary||"button"===t?.interaction?.primary||v(t?.interaction?.hoverFallback)}(e)}(t)?$(l,{id:"interaction.hover-only-detail",category:"interaction",impact:"high",message:"No hover-only detail path is visible from the config."}):C(l,{id:"interaction.hover-only-detail",category:"interaction",impact:"high",message:"The chart exposes tooltip/hover detail without an obvious tap, selection, or control alternative.",fix:"Enable tap-to-select, a persistent details panel, visible segment buttons, or another non-hover path for the same information."});const T=function(e,t){const i=y[e];if(!i)return null;let a=i.includes("hoverRadius")?30:null;for(const e of i){const i=t[e];"number"==typeof i&&Number.isFinite(i)&&i>0&&(a=null==a?i:Math.max(a,i))}return null==a?null:2*a}(e,t),R=b(t.mobileInteraction)?t.mobileInteraction:null,I=T??("number"==typeof R?.targetSize?R.targetSize:!0===t.mobileInteraction?44:"number"==typeof u?.minimumHitTarget?u.minimumHitTarget:"number"==typeof u?.interaction?.targetSize?u.interaction.targetSize:null);null!=I&&(24>I?C(l,{id:"interaction.target-size-minimum",category:"interaction",impact:"high",message:`Small interactive marks expose an estimated ${I}px pointer target, below WCAG's 24px minimum.`,fix:"Increase mark radius/hoverRadius, add tap snapping to nearest datum, or provide larger external controls."}):n>I?C(l,{id:"interaction.target-size-comfort",category:"interaction",impact:"medium",message:`Pointer target is about ${I}px, above 24px but below the ${n}px comfortable phone target.`,fix:"Use hoverRadius/tapRadius near 44px while keeping the visible mark small if needed."}):$(l,{id:"interaction.target-size-comfort",category:"interaction",impact:"medium",message:`Pointer target is about ${I}px, meeting the configured ${n}px target.`}));const z=[];null==t.brush&&null==t.onBrush||z.push("brush"),!0===t.zoomable&&z.push("pan/zoom"),"isolate"!==t.legendInteraction&&"highlight"!==t.legendInteraction||z.push("legend filtering"),z.length>0&&!function(e,t){const i=x(e),a=b(e.mobileInteraction)?e.mobileInteraction:null,n=a?.standardControls;return!!(null!=e.controls||null!=e.mobileControls||!0===e.alternativeControls||Array.isArray(i?.interaction?.alternatives)&&i.interaction.alternatives.length>0)||!0===n||"all"===n||t.every(e=>"brush"===e?Array.isArray(n)?n.includes("brush"):"brush"===n:"pan/zoom"===e?Array.isArray(n)?n.includes("zoom"):"zoom"===n:"legend filtering"===e&&(Array.isArray(n)?n.includes("legend"):"legend"===n))}(t,z)&&C(l,{id:"interaction.complex-gesture-alternative",category:"interaction",impact:"high",message:`Mobile-hostile complex interaction detected: ${z.join(", ")} without standard control alternatives.`,fix:"Pair gestures with buttons, range inputs, chips, or a details panel that works with touch and keyboard."}),!1===t.showLegend||!1===t.legend||!0!==t.showLegend&&!0!==t.legend&&null==t.colorBy&&null==t.groupBy&&null==t.lineBy&&null==t.areaBy&&null==t.stackBy||!0===t.directLabel||!0===t.showLabels||"direct"===t.labelStrategy||"direct-end"===t.labelStrategy||"direct"===u?.labels?.strategy||"inline"===u?.labels?.strategy||"external"===u?.labels?.strategy||a>430||C(l,{id:"semantics.legend-over-direct-labels",category:"semantics",impact:"medium",message:"The chart appears to rely on a legend instead of direct labels at phone width.",fix:"Prefer direct end labels, inline labels, or a compact chip selector so readers do not bounce between plot and legend."});const P=Array.isArray(t.annotations)?t.annotations.filter(e=>b(e)):[];if(P.length>("number"==typeof u?.maxAnnotations?u.maxAnnotations:3)&&430>=a&&C(l,{id:"annotation.mobile-density",category:"annotation",impact:"medium",message:P.length+" annotation(s) compete for phone plot space.",fix:"Assign annotation priority, collapse secondary notes into a callout list, or provide shorter mobileText."}),P.length>0){const e=P.filter(e=>!v(e.mobileText)&&!v(e.shortText)&&!v(e.label));e.length>0&&A(l,{id:"annotation.mobile-copy",category:"annotation",impact:"low",message:e.length+" annotation(s) lack explicit short/mobile copy.",fix:"Add mobileText or shortText for notes that need to survive narrow layouts."})}m||"BigNumber"===e||A(l,{id:"layout.no-responsive-transform",category:"layout",impact:"low",message:"No explicit responsive transformation hint is present.",fix:"Declare responsiveRules/mobileLayout or a density/label strategy so the mobile version is a designed transformation, not an accidental resize."}),d&&(u?($(l,{id:"semantics.custom-mobile-contract",category:"semantics",impact:"medium",message:"Custom chart/recipe provides a mobileSemantics/mobile contract, so the audit can inspect its authored phone behavior."}),!1===u.custom?.dataBearingSceneNodes?C(l,{id:"semantics.custom-data-bearing-scene",category:"semantics",impact:"medium",message:"Custom mobile contract says emitted scene nodes are not data-bearing.",fix:"Preserve datum references, semantic roles, or accessible-table fields so intelligence, navigation, and tap details can recover the chart's meaning."}):!0!==u.custom?.dataBearingSceneNodes&&A(l,{id:"semantics.custom-data-bearing-scene",category:"semantics",impact:"low",message:"Custom chart mobile contract does not state whether scene nodes are data-bearing.",fix:"Set mobile.custom.dataBearingSceneNodes and mobile.custom.navigationGranularity for custom layouts and interoperability adapters."})):A(l,{id:"semantics.custom-mobile-contract",category:"semantics",impact:"medium",message:"Custom chart layout is opaque to static mobile analysis because no mobileSemantics/mobile contract is present.",fix:"Declare mobileSemantics with strategy, breakpoints, mark budgets, touch target size, interaction alternatives, and custom scene semantics."})),p||h||C(l,{id:"semantics.no-mobile-summary",category:"semantics",impact:"medium",message:"No title, summary, description, or ChartContainer context is visible from the config.",fix:"Add title/summary text or wrap in ChartContainer so the small-screen reader gets the task before the chart."});const U=l.filter(e=>"warn"===e.status),N={highRisk:U.filter(e=>"high"===e.impact).length,warnings:U.length,manual:l.filter(e=>"manual"===e.status).length,passes:l.filter(e=>"pass"===e.status).length};return{component:e,viewportWidth:a,ok:0===N.highRisk,summary:N,findings:l,reference:"Mobile visualization audit: informed by MobileVisFixer, mobile exploratory interaction research, small-multiple mobile studies, responsive visualization grammars, constraint-based breakpoints, and WCAG 2.2 input modalities."}}var M={pass:"PASS",warn:"WARN",manual:"MANUAL","not-applicable":"N/A"},T=["layout","density","interaction","annotation","semantics"];function R(e){const t=[],i=e.summary,a=e.ok?`no high-risk mobile blockers at ${e.viewportWidth}px`:`${i.highRisk} high-risk mobile issue(s) at ${e.viewportWidth}px`;t.push(`${e.ok?"PASS":"WARN"} ${e.component}: mobile visualization audit`),t.push(` ${a} - ${i.warnings} warning(s) - ${i.manual} manual check(s)`);for(const i of T){const a=e.findings.filter(e=>e.category===i&&"not-applicable"!==e.status);if(0!==a.length){t.push(""),t.push(" "+i.toUpperCase());for(const e of a)t.push(` ${M[e.status]} [${e.impact}] ${e.id}: ${e.message}`),!e.fix||"warn"!==e.status&&"manual"!==e.status||t.push(" -> "+e.fix)}}return t.push(""),t.push(" Ref: "+e.reference),t.join("\n")}function I(){return["Static audit only: rendered label collision, CSS-resolved type size, and actual touch behavior still require viewport testing.","Use multiple widths, usually 320, 360, 390, 430, and 768 CSS pixels.","A mobile pass means no high-risk static warnings, not that the chart is perceptually or ergonomically optimal."]}function z(e){const t={};for(const[i,a]of e){const e=[];for(const[,t]of a.clauses){const i={};for(const[e,a]of Object.entries(t.fields))i[e]="point"===a.type?{type:"point",values:Array.from(a.values)}:{type:"interval",range:a.range};e.push({clientId:t.clientId,type:t.type,fields:i})}t[i]={name:a.name,resolution:a.resolution,clauses:e}}return t}function P(e){const t=new Map;for(const[i,a]of Object.entries(e)){const e=new Map;for(const t of a.clauses){const i={};for(const[e,a]of Object.entries(t.fields))i[e]="point"===a.type?{type:"point",values:new Set(a.values)}:{type:"interval",range:a.range};e.set(t.clientId,{clientId:t.clientId,type:t.type,fields:i})}t.set(i,{name:a.name,resolution:a.resolution,clauses:e})}return t}async function U(e,t){const{format:i="png",filename:a="chart",scale:n=2,background:r="white"}=t||{},s=e.querySelector("svg");if(!s)throw Error("No SVG element found in the container");const o=s.cloneNode(!0),l=s.getBoundingClientRect();if(o.getAttribute("width")||o.setAttribute("width",l.width+""),o.getAttribute("height")||o.setAttribute("height",l.height+""),o.getAttribute("xmlns")||o.setAttribute("xmlns","http://www.w3.org/2000/svg"),N(s,o),"svg"===i){const e=(new XMLSerializer).serializeToString(o);F(new Blob([e],{type:"image/svg+xml;charset=utf-8"}),a+".svg")}else{const t=l.width*n,i=l.height*n,s=document.createElement("canvas");s.width=t,s.height=i;const c=s.getContext("2d");c.fillStyle=r,c.fillRect(0,0,t,i),c.scale(n,n);const u=e.querySelector("canvas");u&&c.drawImage(u,0,0,l.width,l.height);const d=(new XMLSerializer).serializeToString(o),m=new Blob([d],{type:"image/svg+xml;charset=utf-8"}),h=URL.createObjectURL(m),p=new Image;p.width=l.width,p.height=l.height,await new Promise((e,t)=>{p.onload=()=>{c.drawImage(p,0,0),s.toBlob(i=>{i?(F(i,a+".png"),e()):t(Error("Failed to create PNG blob"))},"image/png"),URL.revokeObjectURL(h)},p.onerror=()=>{URL.revokeObjectURL(h),t(Error("Failed to load SVG image"))},p.src=h})}}function N(e,t){const i=e.children,a=t.children,n=window.getComputedStyle(e),r=["fill","stroke","stroke-width","stroke-dasharray","opacity","fill-opacity","stroke-opacity","font-family","font-size","font-weight","text-anchor","dominant-baseline"];for(const e of r){const i=n.getPropertyValue(e);i&&"none"!==i&&""!==i&&t.style?.setProperty(e,i)}for(let e=0;Math.min(i.length,a.length)>e;e++)N(i[e],a[e])}function F(e,t){const i=URL.createObjectURL(e),a=document.createElement("a");a.href=i,a.download=t,document.body.appendChild(a),a.click(),document.body.removeChild(a),URL.revokeObjectURL(i)}function L(e){const t=e.pointId??e.id??e._transitionKey;return null==t||""===t?void 0:t+""}function D(e){return e.accessibility?.tableFields??e.accessibleDatum??e.datum??null}function B(e){return"number"==typeof e&&Number.isFinite(e)}function j(e){if(B(e.x)&&B(e.y)&&B(e.w)&&B(e.h))return{x0:e.x,y0:e.y,x1:e.x+e.w,y1:e.y+e.h};if(B(e.x)&&B(e.y)&&B(e.r))return{x0:e.x-e.r,y0:e.y-e.r,x1:e.x+e.r,y1:e.y+e.r};if(B(e.cx)&&B(e.cy)&&B(e.r))return{x0:e.cx-e.r,y0:e.cy-e.r,x1:e.cx+e.r,y1:e.cy+e.r};if(B(e.cx)&&B(e.cy)&&B(e.outerR))return{x0:e.cx-e.outerR,y0:e.cy-e.outerR,x1:e.cx+e.outerR,y1:e.cy+e.outerR};const t=[e.path,e.topPath,e.bottomPath].filter(Array.isArray).flat().filter(e=>Array.isArray(e)&&B(e[0])&&B(e[1]));return t.length>0?{x0:Math.min(...t.map(e=>e[0])),y0:Math.min(...t.map(e=>e[1])),x1:Math.max(...t.map(e=>e[0])),y1:Math.max(...t.map(e=>e[1]))}:null}function V(e,t){const i=Math.max(0,Math.min(e.x1,t.x1)-Math.max(e.x0,t.x0))*Math.max(0,Math.min(e.y1,t.y1)-Math.max(e.y0,t.y0)),a=Math.min(Math.max(0,e.x1-e.x0)*Math.max(0,e.y1-e.y0),Math.max(0,t.x1-t.x0)*Math.max(0,t.y1-t.y0));return a>0?i/a:0}function q(e,i,a,n,r){if(e===i)return!0;const s=a.dataRoles.map(e=>t(e,n,r)).filter(e=>!!e).filter(t=>null!=e[t]&&null!=i[t]);return s.length>0&&s.every(t=>e[t]+""==i[t]+"")}function W(e,t,i,a,n,r="warn",s){return{id:e,category:t,status:i?"pass":r,message:i?a:n,...s?{evidence:s}:{}}}function E(r){const{recipe:s}=r,o=function(e){return Array.isArray(e)?e:e&&"object"==typeof e?[...e.nodes??e.sceneNodes??[],...e.sceneEdges??[]]:[]}(r.scene),l=r.layoutConfig??i({layoutConfig:r.layoutConfig}),c=r.dimensions.plot??{x:0,y:0,width:r.dimensions.width,height:r.dimensions.height},u=c.x??0,d=c.y??0,m=[],h=o.filter(e=>null!=D(e)),p=o.filter(e=>!("string"!=typeof e.pathD||!/NaN|Infinity|undefined/.test(e.pathD))||function(e){return[...[e.x,e.y,e.w,e.h,e.r,e.cx,e.cy,e.innerR,e.outerR,e.x1,e.x2,e.y1,e.y2,e.openY,e.closeY,e.highY,e.lowY,e.bodyWidth].filter(e=>void 0!==e),...[e.path,e.topPath,e.bottomPath].filter(Array.isArray).flat(2)]}(e).some(e=>"number"!=typeof e||!Number.isFinite(e)));m.push(W("geometry.finite","geometry",0===p.length,"All emitted geometry is finite.",p.length+" marks contain non-finite geometry.","fail",{count:p.length}));const g=o.map(j),f=g.filter(e=>e&&(e.x0>=e.x1||e.y0>=e.y1)).length;m.push(W("geometry.nonzero-area","geometry",0===f,"All bounded marks have positive area.",f+" marks have zero or negative area.","warn",{count:f}));const y=g.filter(e=>e&&(u>e.x0||d>e.y0||e.x1>u+c.width||e.y1>d+c.height)).length;m.push(W("geometry.bounds","geometry",0===y,"All bounded marks stay inside the plot.",y+" marks extend outside the plot bounds.","warn",{count:y}));const b=s.audit?.minimumHitTargetSize??s.accessibility.minimumHitTarget??24,v=g.filter(e=>!!e&&(b>e.x1-e.x0||b>e.y1-e.y0)).length;m.push(W("interaction.target-size","interaction",0===v,`All bounded targets meet the declared ${b}px minimum.`,`${v} targets are smaller than ${b}px in at least one dimension.`,"warn",{count:v,minimumTarget:b}));const x=h.map(L),w=x.filter(e=>!e).length,k=new Set,$=x.filter(e=>!(!e||!k.has(e)&&(k.add(e),1)));m.push(W("identity.stable-ids","identity",0===w,"Every data-bearing mark exposes a stable id.",w+" data-bearing marks have no pointId, id, or transition key.",s.audit?.requireStableIds?"fail":"warn",{missing:w})),m.push(W("identity.unique-ids","identity",0===$.length,"Stable mark ids are unique.",$.length+" duplicate stable ids were observed.","fail",{duplicates:[...new Set($)].slice(0,10)}));const C=x.filter(e=>e&&/^(datum|mark|node|point|rect)-?\d+$/.test(e)).length;C>0&&m.push({id:"identity.index-pattern",category:"identity",status:"warn",message:C+" ids look index-derived and may change when data is reordered.",remediation:"Derive ids from a declared identifier role or stable domain key."});const A=new Set;let S=0;const M=r.inputData;for(const e of h){const t=D(e),i=Array.isArray(t)?t:[t];let a=!1;for(const e of i)if(e&&"object"==typeof e)for(let t=0;M.length>t;t+=1)q(e,M[t],s,l,M)&&(A.add(t),a=!0);a||(S+=1)}const T=Math.max(0,M.length-A.size);m.push(W("coverage.input-data","coverage",0===T,"Every input datum is represented by the observed scene.",T+" input data items have no matching scene mark.",s.audit?.requireDatumCoverage?"fail":"warn",{represented:A.size,input:M.length})),m.push(W("coverage.scene-data","coverage",0===S,"Every data-bearing scene mark maps back to input data.",S+" scene marks do not map back to an input datum.","warn",{count:S}));const R=s.encodings?.some(e=>"count"===e.channel);!R&&h.length>A.size&&A.size>0&&m.push({id:"coverage.duplicate-references",category:"coverage",status:"warn",message:"Input data is referenced by multiple marks, but multiplicity is not declared as an encoding.",remediation:"Declare count/repetition semantics or preserve a one-to-one datum-to-mark mapping."});const I=h.filter(e=>!1===e.interactive).length;m.push(W("interaction.hit-targets","interaction",0===I&&h.length>0,"Every observed data-bearing scene node participates in hit testing.",0===h.length?"No data-bearing scene nodes were emitted for interaction.":I+" data-bearing marks explicitly disable interaction.","fail"));const z=(r.annotations??[]).map(e=>e.pointId).filter(e=>null!=e).map(String),P=z.filter(e=>!k.has(e));m.push(W("coverage.annotation-anchors","coverage",0===P.length,z.length?"All pointId annotation anchors resolve to observed scene nodes.":"No pointId annotations require scene resolution.",P.length+" annotations point to missing scene ids.","fail",{unresolved:P}));const U=(r.chart?.selectedIds??[]).filter(e=>!k.has(e));r.chart?.selectedIds&&m.push(W("interaction.selection-reachability","interaction",0===U.length,"Selected/highlighted states resolve to observed marks.",U.length+" selected ids are not reachable in the scene.","fail",{missing:U}));const N=n(o),F=(s.accessibility.tableFields??s.accessibility.tableRoles?.map(e=>({role:e,label:e}))??[]).map(e=>{if(e.field)return e.field;const i=e.role?s.dataRoles.find(t=>t.role===e.role):void 0;return i?t(i,l,M):void 0}).filter(e=>!!e),B=new Set(N.flatMap(e=>Object.keys(e.values))),E=F.filter(e=>!B.has(e));m.push(W("accessibility.table-fields","accessibility",0===E.length,F.length?"The accessible table preserves all recipe-declared fields.":"The recipe declares no explicit accessible table field projection.",`The accessible table loses declared fields: ${E.join(", ")}.`,"fail",{expectedFields:F,observedFields:[...B]})),new Set(M.flatMap(e=>Object.entries(e).filter(([,e])=>["string","number","boolean"].includes(typeof e)).map(([e])=>e))).size>2&&2>=B.size&&[...B].every(e=>"category"===e||"value"===e)&&m.push({id:"accessibility.generic-table-loss",category:"accessibility",status:"warn",message:"The table exposes only generic category/value fields although richer input data exists.",remediation:"Emit accessibleDatum or accessibility.tableFields on scene nodes."});const H=(s.encodings?.filter(e=>"color"===e.channel)??[]).filter(e=>!e.redundantWith||0===e.redundantWith.length);m.push(W("accessibility.color-only","accessibility",0===H.length,"Every declared color encoding names a redundant cue.",H.length+" color encodings have no declared redundant cue.","warn"));const O=r.chart;if(O){for(const[e,t]of[["title",s.accessibility.requiresTitle],["summary",s.accessibility.requiresSummary],["description","required"===s.accessibility.description]])t&&m.push(W("accessibility."+e,"accessibility","string"==typeof O[e]&&O[e].trim().length>0,`A chart ${e} is present.`,`The recipe requires a chart ${e}, but none was supplied.`,"fail"));(s.accessibility.requiresAccessibleTable||"required"===s.accessibility.accessibleTable||s.accessibility.fallbackTable)&&m.push(W("accessibility.fallback-table","accessibility",!1!==O.accessibleTable,"The accessible fallback table is enabled.","The recipe requires a fallback table, but accessibleTable is disabled.","fail")),O.navigationTree&&m.push(W("accessibility.navigation-depth","accessibility",(O.navigationTree.children?.length??0)>0,"The navigation tree exposes structure below the root.","The navigation tree is root-only.","fail"))}const Y=r.theme?.background??"#ffffff",G=o.filter(t=>{const i=t.style?.fill??t.fill;if("string"!=typeof i||!i.startsWith("#")||!Y.startsWith("#"))return!1;const a=e(i,Y);return null!=a&&3>a}).length;m.push(W("visual.contrast","visual",0===G,"All statically checkable mark fills meet 3:1 contrast.",G+" marks have fill contrast below 3:1.","warn",{background:Y}));let J=0;const X=g.filter(e=>!!e).slice(0,500);for(let e=0;X.length>e;e+=1)for(let t=e+1;X.length>t;t+=1).8>V(X[e],X[t])||(J+=1);J>X.length&&m.push({id:"visual.overlap-density",category:"visual",status:"warn",message:J+" near-total mark overlaps suggest occlusion or excessive density.",remediation:"Aggregate, jitter, layer explicitly, or declare overlap as intentional."});const K=[["manual-at.screen-reader","Verify real screen-reader behavior with the target browser/AT combinations."],["manual-at.cognitive-load","Assess cognitive load and whether the custom metaphor is understood."],["manual-at.keyboard-order","Verify that keyboard order is meaningful, not merely mechanically available."],["manual-at.animation","Verify that animation is not distracting and reduced-motion behavior is sufficient."],["manual-at.reception","Test whether the memorable form is received as intended by the target audience."],["manual-at.overlay-occlusion","Inspect labels, overlays, annotations, and important marks for clipping or occlusion."],["manual-at.observation","Exercise hover, focus, selection, and observation emission in the rendered chart."]].map(([e,t])=>({id:e,category:"manual-at",status:"manual",message:t})),Q={dataRoles:s.dataRoles.map(e=>e.role),intents:s.intents.map(a).filter(e=>!!e),accessibilityExpectations:[...s.accessibility.requirements??[],...s.accessibility.tableFields?.map(e=>"table field: "+e.label)??[]],fallbackDeclared:!0===s.accessibility.fallbackTable||"required"===s.accessibility.accessibleTable||!0===s.accessibility.requiresAccessibleTable,designContractDeclared:!!s.designContract?.whyCustom},_=[...m,...K],Z=m.filter(e=>"fail"===e.status).length;return{recipeId:s.id,ok:0===Z,summary:{marks:o.length,passes:_.filter(e=>"pass"===e.status).length,warnings:_.filter(e=>"warn"===e.status).length,failures:Z,manual:_.filter(e=>"manual"===e.status).length},declaredSemantics:Q,observedSceneEvidence:m,manualATChecks:K}}function H(e=240){const t=360-e,i=180+t/2,a=i*Math.PI/180;return{sweepRad:e*Math.PI/180,gapDeg:t,startAngleDeg:i,startAngleRad:a,offsetRad:-Math.PI/2+a}}function O(e,t,i,a,n){const r=i-t||1;return n+(Math.max(t,Math.min(i,e))-t)/r*a}function Y(e=240){const{sweepRad:t,offsetRad:i}=H(e),a=[[Math.cos(i),Math.sin(i)],[Math.cos(i+t),Math.sin(i+t)],[0,0]];for(let e=0;2*Math.PI>e;e+=Math.PI/2)((e-i)%(2*Math.PI)+2*Math.PI)%(2*Math.PI)>t+.001||a.push([Math.cos(e),Math.sin(e)]);const n=a.map(e=>e[0]),r=a.map(e=>e[1]),[o,l]=s(n),[c,u]=s(r);return{minX:o,maxX:l,minY:c,maxY:u,width:l-o,height:u-c,cx:(o+l)/2,cy:(c+u)/2}}export{l as smartTickFormat,m as adaptiveTimeTicks,h as darkenColor,p as lightenColor,S as auditMobileVisualization,R as formatMobileVisualizationAudit,I as mobileVisualizationCaveats,z as serializeSelections,P as deserializeSelections,U as exportChart,E as auditObservedScene,H as sweepToAngles,O as valueToAngle,Y as computeArcBoundingBox};
@@ -0,0 +1 @@
1
+ function t(t){return!!t&&"object"==typeof t&&!Array.isArray(t)}function e(e,n,r=e.responsiveRules){if(!Array.isArray(r)||0===r.length)return{props:e,matches:[]};const i=r.map((t,e)=>({rule:t,index:e})).filter(t=>function(t,e){const{when:n}=t,r=e.width,i=e.height,o=function(t){if("number"==typeof t.height&&t.height>0)return t.width/t.height}(e),a=function(t){if("number"==typeof t.height&&t.height>0)return t.height>t.width?"portrait":"landscape"}(e);return!("number"==typeof n.minWidth&&n.minWidth>r||"number"==typeof n.maxWidth&&r>n.maxWidth||"number"==typeof n.minHeight&&("number"!=typeof i||n.minHeight>i)||"number"==typeof n.maxHeight&&("number"!=typeof i||i>n.maxHeight)||"number"==typeof n.minAspectRatio&&("number"!=typeof o||n.minAspectRatio>o)||"number"==typeof n.maxAspectRatio&&("number"!=typeof o||o>n.maxAspectRatio)||n.orientation&&a!==n.orientation)}(t.rule,n)).sort((t,e)=>("number"==typeof t.rule.priority?t.rule.priority:t.index)-("number"==typeof e.rule.priority?e.rule.priority:e.index));return{props:i.reduce((e,n)=>function(e,n){const r={...e,...n};for(const i of["margin","frameProps","mobileSemantics","style"])t(e[i])&&t(n[i])&&(r[i]={...e[i],...n[i]});return"string"==typeof e.className&&"string"==typeof n.className&&(r.className=`${e.className} ${n.className}`),r}(e,n.rule.transform),e),matches:i}}function n(t,e){return t===e}function r(t,e){if("function"==typeof t)return e=>+t(e);const n=t||e;return t=>+t[n]}function i(t,e){if("function"==typeof t)return t;const n=t||e;return t=>t[n]}function o(t,e){return"function"==typeof t?t:t?e=>e[t]+"":e?t=>t[e]+"":void 0}var a=new Set(["label","callout","callout-circle","callout-rect","text","widget"]),u=new Set(["label","callout","callout-circle","callout-rect"]);function s(t){return"string"==typeof t?.type?t.type:""}function c(t){return!!t&&"object"==typeof t&&a.has(s(t))}function f(t){return u.has(s(t))&&!function(t){return Array.isArray(t?.disable)&&t.disable.includes("connector")}(t)}function m(t){let e=t>>>0;return function(){e=e+1831565813|0;let t=Math.imul(e^e>>>15,1|e);return t=t+Math.imul(t^t>>>7,61|t)^t,((t^t>>>14)>>>0)/4294967296}}function l(t){return"primary"===t?.emphasis||!0===t?.defensive}function h(t,e,n={}){return"number"==typeof n.maxAnnotations&&Number.isFinite(n.maxAnnotations)?Math.max(0,Math.floor(n.maxAnnotations)):t>0&&e>0?Math.max(1,Math.round(t*e/(n.areaPerAnnotation&&n.areaPerAnnotation>0?n.areaPerAnnotation:2e4))):1/0}function p(t){let e;const n=t?.emphasis;e="primary"===n?100:"secondary"===n?10:50;const r=t?.provenance?.confidence;switch("number"==typeof r&&Number.isFinite(r)&&(e+=15*Math.max(0,Math.min(1,r))),t?.lifecycle?.freshness){case"fresh":e+=8;break;case"aging":e+=4;break;case"stale":e+=1;break;case"expired":e-=200}return e}function y(t){const{annotations:e,width:n,height:r}=t,i=Math.max(0,t.minVisible??1),o=h(n,r,t),a=e.map((t,e)=>{return{annotation:t,index:e,note:(n=t,c(n))};var n}),u=a.filter(t=>t.note);if(0===u.length||o>=u.length)return{visible:e.slice(),deferred:[],budget:o};const s=u.filter(t=>l(t.annotation)),f=u.filter(t=>!l(t.annotation)).sort((t,e)=>p(e.annotation)-p(t.annotation)||t.index-e.index),m=Math.min(f.length,Math.max(Math.max(0,o-s.length),Math.max(0,i-s.length))),y=new Set([...s.map(t=>t.index),...f.slice(0,m).map(t=>t.index)]),d=[],b=[];for(const{annotation:t,index:e,note:n}of a)!n||y.has(e)?d.push(t):b.push(t);return{visible:d,deferred:b,budget:o}}export{e as resolveResponsiveRules,m as mulberry32,n as accessorsEquivalent,r as resolveAccessor,i as resolveRawAccessor,o as resolveStringAccessor,s as annotationType,c as isNoteAnnotation,f as annotationDrawsConnector,h as annotationBudget,y as annotationDensity};
File without changes
@@ -0,0 +1,2 @@
1
+ "use client";
2
+ var t={fill:"rgba(0,0,0,0)",stroke:"rgba(0,0,0,0)",opacity:0},e=8;function n(t){return null==t?void 0:t+""}function r(e){const r=n(e.id);return{type:"point",x:e.x,y:e.y,r:e.r??8,style:{...t},datum:e.datum,pointId:r,_transitionKey:r}}function a(t){return r(t)}function i(e){const[[n,r],[a,i]]=e.bounds;return{type:"geoarea",pathData:e.pathData,centroid:e.centroid,bounds:e.bounds,screenArea:e.screenArea??Math.abs((a-n)*(i-r)),style:{...t},datum:e.datum,group:e.group,interactive:!0}}function u(e){return{type:"rect",x:e.x,y:e.y,w:e.width,h:e.height,style:{...t},datum:e.datum,group:e.group,_transitionKey:n(e.id)}}function o(e){const r=n(e.id);return"width"in e&&"height"in e?{type:"rect",x:e.x,y:e.y,w:e.width,h:e.height,style:{...t},datum:e.datum,id:r,label:e.label}:{type:"circle",cx:e.x,cy:e.y,r:e.r??8,style:{...t},datum:e.datum,id:r,label:e.label}}export{e as DEFAULT_HIT_RADIUS,r as hitTargetPoint,a as geoHitTarget,i as geoAreaHitTarget,u as hitTargetRect,o as networkHitTarget};
@@ -0,0 +1,2 @@
1
+ "use client";
2
+ function e(e,r){const t=e.length,n=r.length,o=Array(n+1);for(let e=0;n>=e;e++)o[e]=e;for(let a=1;t>=a;a++){let t=o[0];o[0]=a;for(let i=1;n>=i;i++){const n=o[i];o[i]=e[a-1]===r[i-1]?t:1+Math.min(t,o[i],o[i-1]),t=n}}return o[n]}function r(r,t,n=3){let o,a=n+1;for(const n of t){const t=e(r.toLowerCase(),n.toLowerCase());a>t&&(a=t,o=n)}return a>n?void 0:o}function t(e){return e.length>3?[e[0],e[Math.floor(e.length/2)],e[e.length-1]]:[...e]}function n(e,t){if(0===t.length)return null;const n=e.toLowerCase();return t.find(e=>e.toLowerCase().includes(n)||n.includes(e.toLowerCase()))||(r(e,t,3)??null)}function o({componentName:e,data:r,accessors:o,requiredProps:a}){if(a)for(const[r,t]of Object.entries(a))if(null==t)return`${e}: ${r} is required. Provide a field name or function.`;if(null==r)return null;if(!Array.isArray(r)&&"object"==typeof r)return e+": data should be an array, but received an object. If this is hierarchical data, use TreeDiagram, Treemap, or CirclePack instead.";if(!Array.isArray(r)||0===r.length)return e+": No data provided. Pass a non-empty array to the data prop.";if(o){const a=t(r).find(e=>e&&"object"==typeof e);if(a){const r=Object.keys(a);for(const[t,i]of Object.entries(o))if(i&&"string"==typeof i&&!(i in a)){const o=n(i,r),a=o?` Try ${t}="${o}".`:"";return`${e}: ${t} "${i}" not found in data. Available fields: ${r.join(", ")}.${a}`}}}return null}function a({componentName:e,data:r,dataLabel:t="data"}){return null==r?`${e}: No ${t} provided. Pass a hierarchical object with children: { name: "root", children: [...] }.`:Array.isArray(r)?`${e}: ${t} should be a single root object, not an array. Expected: { name: "root", children: [...] }. If you have flat data, use LineChart, BarChart, or Scatterplot instead.`:null}function i({componentName:e,nodes:r,edges:o,nodesRequired:a=!1,edgesRequired:i=!0,accessors:s}){if(null==r&&null==o)return null;if(i&&(!o||!Array.isArray(o)||0===o.length))return e+': No edges provided. Pass a non-empty array: edges={[{ source: "A", target: "B", value: 10 }, ...]}.';if(a&&(!r||!Array.isArray(r)||0===r.length))return e+': No nodes provided. Pass a non-empty array: nodes={[{ id: "A" }, { id: "B" }, ...]}.';if(s&&r&&r.length>0){const o=t(r).find(e=>e&&"object"==typeof e);if(o){const r=Object.keys(o);for(const[t,a]of Object.entries(s))if(a&&"string"==typeof a&&!(a in o)){const o=n(a,r),i=o?` Try ${t}="${o}".`:"";return`${e}: ${t} "${a}" not found in node data. Available fields: ${r.join(", ")}.${i}`}}}return null}export{r as closestMatch,o as validateArrayData,a as validateObjectData,i as validateNetworkData};
@@ -1,2 +1 @@
1
- "use client";
2
1
  function o(o){let t=1/0,n=-1/0;for(const r of o)t>r&&(t=r),r>n&&(n=r);return[t,n]}function t(o,t=1/0){let n=t;for(const t of o)n>t&&(n=t);return n}function n(o,t=-1/0){let n=t;for(const t of o)t>n&&(n=t);return n}export{o as getMinMax,t as getMin,n as getMax};
@@ -0,0 +1,2 @@
1
+ "use client";
2
+ var t=[40,40],e=[.5,.5];function n(n,o){const[i,h]=n.viewBox??t,[f,r]=n.anchor??e,s=h>0?h:1,l=Math.max(0,o)/s,a=(i>0?i:s)*l,c=s*l;return{width:a,height:c,scale:l,offsetX:-f*a,offsetY:-r*c}}function o(t,e){const o=n(t,e),i=[[o.offsetX,o.offsetY],[o.offsetX+o.width,o.offsetY],[o.offsetX,o.offsetY+o.height],[o.offsetX+o.width,o.offsetY+o.height]];let h=0;for(const[t,e]of i){const n=Math.sqrt(t*t+e*e);n>h&&(h=n)}return h}function i(t,e,n,o){if("none"!==t)return"color"===t||null==t?e??o:"accent"===t?n:t}var h=null;function f(t){if("undefined"==typeof Path2D)return null;h||(h=new Map);const e=h.get(t);if(e)return e;const n=new Path2D(t);return h.size>1024&&h.clear(),h.set(t,n),n}function r(e,n,o=0,i="horizontal"){const[h,f]=e.viewBox??t,r=Math.min(1,Math.max(0,o)),s=Math.min(1,Math.max(0,n));return s>r?r>0||1>s?"vertical"===i?{x:0,y:f*(1-s),width:h,height:f*(s-r)}:{x:h*r,y:0,width:h*(s-r),height:f}:null:{x:0,y:0,width:0,height:0}}function s(t,e){const o=n(t,e);return{centerDx:o.offsetX+o.width/2,centerDy:o.offsetY+o.height/2,halfWidth:o.width/2,halfHeight:o.height/2,radius:Math.hypot(o.width,o.height)/2}}function l(t,e,n,o,h,r=t=>t){for(const s of e.parts){const e=f(s.d);if(!e)continue;const l=s.opacity??1,a=t.globalAlpha;1!==l&&(t.globalAlpha=a*l);const c=h?"none"===s.fill?void 0:h:i(s.fill,n,o);c&&(t.fillStyle=r(c),t.fill(e));const u=h?s.stroke&&"none"!==s.stroke?h:void 0:i(s.stroke??"none",n,o);u&&(t.strokeStyle=r(u),t.lineWidth=s.strokeWidth??1,t.lineCap=s.strokeLinecap??"butt",t.lineJoin=s.strokeLinejoin??"miter",t.stroke(e)),1!==l&&(t.globalAlpha=a)}}export{t as DEFAULT_GLYPH_VIEWBOX,n as glyphPlacement,o as glyphExtent,i as resolveGlyphPaint,r as glyphFractionClipRect,s as glyphHitGeometry,l as drawGlyphParts};
@@ -0,0 +1,2 @@
1
+ "use client";
2
+ import{lineCanvasRenderer as t,resolveNodeColor as e}from"./chunk-chunk-CYIML3AV.module.min.js";import{DataSourceAdapter as i,IncrementalExtent as o,accessorsEquivalent as s,barCanvasRenderer as n,buildAreaNode as r,buildEnrichAnnotationData as a,buildHeatcellNode as l,buildLineNode as c,buildPointNode as h,buildRectNode as u,buildStackedAreaNodes as g,buildSymbolNode as d,computeDivergingStackExtent as f,computeStackOffsets as p,resolveAccessor as y,resolveAnnotationAccessor as m,resolveFrameGraphics as x,resolveRawAccessor as v,resolveStringAccessor as b,symbolCanvasRenderer as k,ticksForMode as w,toIdSet as A}from"./chunk-chunk-ZLKRTF5N.module.min.js";import{RingBuffer as _,applyPulse as C,buildAggregateRibbons as S,buildPerSeriesRibbons as M,compactTimestampBufferForRemoval as P,createTimestampBufferForData as Y,enrichDatumWithBand as R,ensureRingBufferCapacity as T,hasActivePulses as N,partitionRibbons as O,pointCanvasRenderer as W,pushWithTimestamp as D,refreshIdlePulse as E,useLegendCategoryEmission as z,useSemanticFrameInteractions as L,useXYKeyboardNavigation as F}from"./chunk-chunk-5WEFWNUW.module.min.js";import{needsInteractionCanvasPaint as B,paintCanvasBackground as I}from"./chunk-chunk-XOYX77KF.module.min.js";import{StalenessBadge as X,applyDecay as $,attachUpdateResultStore as G,buildDatumIndexMap as V,composeOverlays as H,computeDecayOpacity as j,createCustomLayoutFailureDiagnostic as q,findHitPointInQuadtree as U,getHitRadius as K,glyphCanvasRenderer as Z,hitTestRect as J,isTimeLandmark as Q,paintSceneWithBackend as tt,renderPathPulse as et,renderRectPulse as it,renderSceneWithBackend as ot,resolveStaleness as st,useConfigSync as nt,useLayoutSelectionSync as rt,useStableShallow as at,useStalenessCheck as lt,warnCustomLayoutDiagnostics as ct}from"./chunk-chunk-FAKO3RGQ.module.min.js";import{wrapWithCustomLayoutSelection as ht}from"./chunk-chunk-5UKL5W76.module.min.js";import{AccessibleDataTable as ut,AriaLiveTooltip as gt,CanvasFrameBackground as dt,FlippingTooltip as ft,FocusRing as pt,SEQUENTIAL_INTERPOLATORS as yt,STREAMING_PALETTE as mt,SYMBOL_SEQUENCE as xt,SceneRevisionDiagnosticsObserver as vt,ScreenReaderSummary as bt,SkipToTableLink as kt,TITLE_BASELINE as wt,UpdateResultTracker as At,annotationLayout as _t,buildColorStopGradient as Ct,buildHoverData as St,buildLinearFillGradient as Mt,computeCanvasAriaLabel as Pt,computeEasing as Yt,computeRawProgress as Rt,createDefaultAnnotationRules as Tt,defaultTooltipStyle as Nt,filterSparseArray as Ot,getCSSColorCacheVersion as Wt,getDevicePixelRatio as Dt,getPointerHitRadius as Et,getSequentialInterpolator as zt,isAnnotationActivationTarget as Lt,isServerEnvironment as Ft,lerp as Bt,now as It,observationInputType as Xt,prepareCanvas as $t,renderAnnotationPass as Gt,renderLegendFromConfig as Vt,resolveCSSColor as Ht,resolveCanvasFill as jt,resolveCurveFactory as qt,smartTooltipEntries as Ut,symbolRadius as Kt,unlockCrosshair as Zt,useAnnotationActivationOptions as Jt,useCrosshairPosition as Qt,useFrame as te,useFrameCanvasHost as ee,useSceneRevisionDiagnostics as ie,xySceneNodeToSVG as oe}from"./chunk-chunk-ODUZEEBH.module.min.js";import{getMax as se}from"./chunk-chunk-JJ2OOIET.module.min.js";import{resolveThemeSemanticColors as ne}from"./chunk-chunk-WCX6U47H.module.min.js";import{glyphHitGeometry as re}from"./chunk-chunk-KTWEBFMX.module.min.js";import{useHydration as ae,useWasHydratingFromSSR as le}from"./chunk-chunk-ZCNBUZPL.module.min.js";import*as ce from"react";import{useRef as he,useState as ue,useEffect as ge,useMemo as de,useCallback as fe,useImperativeHandle as pe,useId as ye,forwardRef as me,memo as xe}from"react";import*as ve from"react";import{jsx as be}from"react/jsx-runtime";var ke=null,we=null;function Ae(t){const[e,i]=ve.useState(()=>ke);return ve.useEffect(()=>{if(e)return;let t=!1;return(ke?Promise.resolve(ke):(we||(we=import("./chunk-XYBrushOverlay-EP2SV3UI.module.min.js").then(t=>ke=t.XYBrushOverlay)),we)).then(e=>{t||i(()=>e)}),()=>{t=!0}},[e]),e?be(e,{...t}):null}var _e=/^\d{4}-\d{1,2}$/;function Ce(t){const e=t.trim();if(!e||!Number.isNaN(Number(e)))return NaN;const i=_e.test(e)?e+"-01":e;if(i===e&&10>e.length)return NaN;const o=Date.parse(i);return Number.isFinite(o)?o:NaN}function Se(t){return t instanceof Date?t.getTime():"string"==typeof t?Ce(t):+t}function Me(t,e,i){if(e._transitionKey)return e._transitionKey;switch(e.type){case"point":if(e.pointId)return"p:"+e.pointId;if("streaming"===t.runtimeMode&&e.datum){const i=t.getX(e.datum),o=t.getY(e.datum);if(t.getCategory)return`p:${t.getCategory(e.datum)}:${i}:${o}`;if(null!=i&&null!=o)return`p:${i}:${o}`}return"p:"+i;case"glyph":return e.pointId?"g:"+e.pointId:"g:"+i;case"rect":return`r:${e.group||""}:${e.datum?.binStart??e.datum?.category??i}`;case"heatcell":return`h:${e.x}_${e.y}`;case"candlestick":return null==e.datum?"c:"+i:"c:"+t.getX(e.datum);case"line":return"l:"+(e.group||"_default");case"area":return"a:"+(e.group||"_default");default:return null}}function Pe(t,e,i,o){if(!t.config.pointStyle)return;const s=o??t.getY;for(const o of e){const e=t.resolveGroupColor(o.key);for(const n of o.data){let o=t.config.pointStyle(n);!o.fill&&e&&(o={...o,fill:e});const r=o.r??3,a=t.getPointId?t.getPointId(n)+"":void 0,l=h(n,t.scales,t.getX,s,r,o,a);l&&i.push(l)}}}function Ye(t){return"threshold"===t.type&&"string"==typeof t.color&&"number"==typeof t.value}var Re={topOpacity:.8,bottomOpacity:.05};function Te(t){if(t)return!0===t?Re:"colorStops"in t?t:{topOpacity:t.topOpacity??Re.topOpacity,bottomOpacity:t.bottomOpacity??Re.bottomOpacity}}var Ne=new Map;function Oe(t,e,i,o,s){const n=new Map;for(const r of t){const t=e(r),a=i(r);if(null==t||null==a||Number.isNaN(t)||Number.isNaN(a))continue;const l=Math.floor(t/o)*o;let c=n.get(l);if(c||(c={start:l,end:l+o,total:0,categories:new Map},n.set(l,c)),c.total+=a,s){const t=s(r);c.categories.set(t,(c.categories.get(t)||0)+a)}}return n}function We(t,e){const i="function"==typeof t?t:i=>i[t||e];return t=>{const e=i(t);return null==e?NaN:+e}}function De(t){const e=[],i=["bar","swarm","waterfall"].includes(t.chartType)||"streaming"===t.runtimeMode,o=We(i&&t.valueAccessor||t.yAccessor,i?"value":"y");if(t.boundsAccessor){const i=y(t.boundsAccessor,"bounds");e.push({kind:"bounds",getTop:t=>{const e=o(t);if(!Number.isFinite(e))return NaN;const s=i(t);return Number.isFinite(s)&&0!==s?e+s:e},getBottom:t=>{const e=o(t);if(!Number.isFinite(e))return NaN;const s=i(t);return Number.isFinite(s)&&0!==s?e-s:e},style:t.boundsStyle,perSeries:!0,interactive:!1})}if(t.band){const i=Array.isArray(t.band)?t.band:[t.band];for(const t of i)e.push({kind:"band",getTop:We(t.y1Accessor,"y1"),getBottom:We(t.y0Accessor,"y0"),style:t.style,perSeries:!1!==t.perSeries,interactive:!0===t.interactive})}return e}import{scaleLinear as Ee,scaleLog as ze,scaleSymlog as Le,scaleTime as Fe}from"d3-scale";function Be(t,e){return e?[e[0]??t[0],e[1]??t[1]]:t}function Ie(t,e,i){if("log"===t){const t=[Math.max(e[0],1e-6),Math.max(e[1],1e-6)];return ze().domain(t).range(i).clamp(!0)}return"symlog"===t?Le().domain(e).range(i):"time"===t?Fe().domain([new Date(e[0]),new Date(e[1])]).range(i):Ee().domain(e).range(i)}var Xe=["data","domain","layout","scene-geometry","data-paint","overlay","accessibility","evidence"],$e=["scene-style","data-paint","accessibility","evidence"],Ge=(t,e)=>({retainedData:t,invalidations:e}),Ve=["domain","layout","scene-geometry","data-paint","overlay","accessibility","evidence"],He=["layout","scene-geometry","data-paint","overlay","accessibility","evidence"],je=["domain","layout","scene-geometry","data-paint","overlay","accessibility","evidence"],qe=["layout","scene-geometry","data-paint","overlay","accessibility","evidence"],Ue=["scene-geometry","data-paint","accessibility","evidence"],Ke=["scene-style","data-paint","accessibility","evidence"],Ze=[],Je={chartType:Ge("rebuild",Ve),runtimeMode:Ge("rebuild",Ve),xAccessor:Ge("rebuild",Ve),yAccessor:Ge("rebuild",Ve),timeAccessor:Ge("rebuild",Ve),valueAccessor:Ge("rebuild",Ve),y0Accessor:Ge("rebuild",Ve),boundsAccessor:Ge("rebuild",Ve),band:Ge("rebuild",Ve),openAccessor:Ge("rebuild",Ve),highAccessor:Ge("rebuild",Ve),lowAccessor:Ge("rebuild",Ve),closeAccessor:Ge("rebuild",Ve),candlestickRangeMode:Ge("rebuild",Ve),accessorRevision:Ge("rebuild",Ve),groupAccessor:Ge("rebuild",He),categoryAccessor:Ge("rebuild",He),lineDataAccessor:Ge("rebuild",He),colorAccessor:Ge("rebuild",Ke),sizeAccessor:Ge("rebuild",Ue),symbolAccessor:Ge("rebuild",Ue),pointIdAccessor:Ge("rebuild",Ue),xScaleType:Ge("preserve",je),yScaleType:Ge("preserve",je),xExtent:Ge("preserve",je),yExtent:Ge("preserve",je),extentPadding:Ge("preserve",je),scalePadding:Ge("preserve",je),axisExtent:Ge("preserve",je),binSize:Ge("preserve",je),normalize:Ge("preserve",je),heatmapAggregation:Ge("preserve",je),heatmapXBins:Ge("preserve",je),heatmapYBins:Ge("preserve",je),arrowOfTime:Ge("preserve",qe),baseline:Ge("preserve",qe),stackOrder:Ge("preserve",qe),sizeRange:Ge("preserve",qe),curve:Ge("preserve",qe),areaGroups:Ge("preserve",qe),customLayout:Ge("preserve",qe),layoutConfig:Ge("preserve",qe),layoutMargin:Ge("preserve",qe),symbolMap:Ge("preserve",Ue),showValues:Ge("preserve",Ue),heatmapValueFormat:Ge("preserve",Ue),lineStyle:Ge("preserve",Ke),pointStyle:Ge("preserve",Ke),areaStyle:Ge("preserve",Ke),barStyle:Ge("preserve",Ke),swarmStyle:Ge("preserve",Ke),waterfallStyle:Ge("preserve",Ke),candlestickStyle:Ge("preserve",Ke),boundsStyle:Ge("preserve",Ke),gradientFill:Ge("preserve",Ke),lineGradient:Ge("preserve",Ke),colorScheme:Ge("preserve",Ke),themeCategorical:Ge("preserve",Ke),themeSemantic:Ge("preserve",Ke),themeSequential:Ge("preserve",Ke),themeDiverging:Ge("preserve",Ke),barColors:Ge("preserve",Ke),decay:Ge("preserve",Ke),pulse:Ge("preserve",Ke),staleness:Ge("preserve",Ke),layoutSelection:Ge("preserve",Ke),annotations:Ge("preserve",["overlay","accessibility","evidence"]),windowSize:Ge("preserve",Ze),windowMode:Ge("preserve",Ze),maxCapacity:Ge("preserve",Ze),clock:Ge("preserve",Ze),transition:Ge("preserve",Ze),introAnimation:Ge("preserve",Ze),onLayoutError:Ge("preserve",Ze)},Qe=Ge("preserve",qe),ti=class{constructor(){this.tracker=new At}get last(){return this.tracker.last}subscribe(t){return this.tracker.subscribe(t)}recordData(t,e){return this.tracker.record({kind:t,...void 0===e?{}:{count:e}},Xe)}recordNoop(t){return this.tracker.record({kind:t,..."restyle"===t?{}:{count:0}},[])}recordRestyle(t){return t?this.tracker.record({kind:"restyle"},$e):this.recordNoop("restyle")}recordConfig(t){const e=function(t){let e="preserve";const i=new Set;for(const o of t){const t=Je[o]??Qe;"rebuild"===t.retainedData&&(e="rebuild");for(const e of t.invalidations)i.add(e)}return{retainedData:e,invalidations:i}}(t);return this.tracker.record({kind:"config",keys:t},e.invalidations)}};import{quadtree as ei}from"d3-quadtree";var ii=class{constructor(){this.maxRadius=0,this.tree=null}get quadtree(){return this.tree}get maxPointRadius(){return this.maxRadius}clear(){this.tree=null,this.maxRadius=0}rebuild(t,e){if("scatter"!==t&&"bubble"!==t&&"custom"!==t)return void this.clear();let i=0,o=0;for(const t of e)"point"===t.type&&(i++,t.r>o&&(o=t.r));if(this.maxRadius=o,500>=i)return void(this.tree=null);const s=Array(i);let n=0;for(const t of e)"point"===t.type&&(s[n++]=t);this.tree=ei().x(t=>t.x).y(t=>t.y).addAll(s)}},oi=class t{constructor(t){if(this.xExtent=new o,this.yExtent=new o,this.growingCapacityWarned=!1,this.windowSizeWarned=!1,this.resolvedRibbons=[],this.timestampBuffer=null,this.activeTransition=null,this._hasRenderedOnce=!1,this.prevPositionMap=new Map,this.prevPathMap=new Map,this.exitNodes=[],this.lastIngestTime=0,this._colorMapCache=null,this._groupDataCache=null,this._groupColorMap=new Map,this._groupColorCounter=0,this._barCategoryCache=null,this._binBoundaries=[],this._stackExtentCache=null,this._ingestVersion=0,this._datumIndexCache=null,this._bufferArrayCache=null,this._bufferDirty=!0,this.needsFullRebuild=!0,this.lastLayout=null,this.updateResults=new ti,this.scales=null,this.scene=[],this.version=0,this.customLayoutOverlays=null,this.lastCustomLayoutResult=null,this.lastCustomLayoutFailure=null,this._customLayoutFailedThisBuild=!1,this._customLayoutDiagnosticsWarned=new Set,this._customRestyle=void 0,this.hasCustomRestyle=!1,this._baseStyles=new WeakMap,this.xIsDate=!1,this.spatialIndex=new ii,this._lastBoundedInsertsRef=null,this.applyPulse=(t,e,i)=>!(!this.config.pulse||!this.timestampBuffer)&&C(this.config.pulse,t,e,this.timestampBuffer,this.getDatumIndexMap(e),i),this.config=t,this.buffer=new _(t.windowSize),this.growingCap=t.windowSize,["bar","swarm","waterfall"].includes(t.chartType)||"streaming"===t.runtimeMode?(this.getX=y(t.timeAccessor||t.xAccessor,"time"),this.getY=y(t.valueAccessor||t.yAccessor,"value")):(this.getX=y(t.xAccessor,"x"),this.getY=y(t.yAccessor,"y")),this.getGroup=b(t.groupAccessor),this.getCategory=b(t.categoryAccessor),this.getSize=t.sizeAccessor?y(t.sizeAccessor,"size"):void 0,this.getColor=b(t.colorAccessor),this.getSymbol=b(t.symbolAccessor),this.getY0=t.y0Accessor?y(t.y0Accessor,"y0"):void 0,this.resolvedRibbons=De(t),this.getPointId=b(t.pointIdAccessor),"candlestick"===t.chartType){const e=null!=t.openAccessor,i=null!=t.closeAccessor;this.getOpen=e?y(t.openAccessor,"open"):void 0,this.getHigh=y(t.highAccessor,"high"),this.getLow=y(t.lowAccessor,"low"),this.getClose=i?y(t.closeAccessor,"close"):void 0,this.config.candlestickRangeMode=!e&&!i}t.pulse&&(this.timestampBuffer=new _(t.windowSize))}currentTime(){return this.config.clock?.()??It()}syncPulseTimestampBuffer(){this.config.pulse?null!=this.timestampBuffer&&this.timestampBuffer.capacity===this.buffer.capacity&&this.timestampBuffer.size===this.buffer.size||(this.timestampBuffer=Y(this.buffer,this.currentTime())):this.timestampBuffer=null}pushDatumYExtent(t){if("candlestick"===this.config.chartType&&this.getHigh&&this.getLow)return this.yExtent.push(this.getHigh(t)),void this.yExtent.push(this.getLow(t));this.yExtent.push(this.getY(t)),this.getY0&&this.yExtent.push(this.getY0(t));for(const e of this.resolvedRibbons){const i=e.getTop(t),o=e.getBottom(t);Number.isFinite(i)&&this.yExtent.push(i),Number.isFinite(o)&&this.yExtent.push(o)}}evictDatumYExtent(t){if("candlestick"===this.config.chartType&&this.getHigh&&this.getLow)return this.yExtent.evict(this.getHigh(t)),void this.yExtent.evict(this.getLow(t));this.yExtent.evict(this.getY(t)),this.getY0&&this.yExtent.evict(this.getY0(t));for(const e of this.resolvedRibbons){const i=e.getTop(t),o=e.getBottom(t);Number.isFinite(i)&&this.yExtent.evict(i),Number.isFinite(o)&&this.yExtent.evict(o)}}rebuildYExtent(){this.yExtent.clear();for(const t of this.buffer)this.pushDatumYExtent(t)}rebuildExtents(){this.xExtent.clear(),this.yExtent.clear();for(const t of this.buffer)this.xExtent.push(this.getX(t)),this.pushDatumYExtent(t)}ingest(t){if(t.bounded&&this._lastBoundedInsertsRef===t.inserts)return this.updateResults.recordNoop("replace"),!1;const e=this.currentTime();if(this.lastIngestTime=e,this.needsFullRebuild=!0,this._bufferDirty=!0,this._ingestVersion++,t.bounded){this._lastBoundedInsertsRef=t.inserts,this.buffer.clear(),this.xExtent.clear(),this.yExtent.clear(),this.timestampBuffer&&this.timestampBuffer.clear();const i=["bar","swarm","waterfall"].includes(this.config.chartType)||"streaming"===this.config.runtimeMode;if(this.getX=i?y(this.config.timeAccessor||this.config.xAccessor,"time"):y(this.config.xAccessor,"x"),this.xIsDate=!1,t.inserts.length>0){const e=t.inserts[0],i=this.config.xAccessor,o="function"==typeof i?i(e):e[i||"x"],s=o instanceof Date,n="string"==typeof o&&Number.isFinite(Ce(o));if(this.xIsDate=s||n,n){const t="string"==typeof i?i:void 0;this.getX=t?e=>Se(e[t]):t=>Se(i(t))}}T(this.buffer,t.totalSize||t.inserts.length,this.timestampBuffer);for(const i of t.inserts)D(this.buffer,i,this.timestampBuffer,e),this.xExtent.push(this.getX(i)),this.pushDatumYExtent(i)}else for(const i of t.inserts){if("growing"===this.config.windowMode&&this.buffer.full){const t=this.config.maxCapacity??1e5;t>this.growingCap&&(this.growingCap=Math.min(2*this.growingCap,t),this.buffer.resize(this.growingCap),this.timestampBuffer&&this.timestampBuffer.resize(this.growingCap),"production"===process.env.NODE_ENV||this.growingCapacityWarned||5e4>this.growingCap||(this.growingCapacityWarned=!0,console.warn(`[Semiotic] Growing window buffer reached ${this.growingCap} points (cap ${t}). Large canvas scenes are expensive — prefer a sliding window, aggregation, or an explicit maxCapacity if this is intentional.`)))}const t=D(this.buffer,i,this.timestampBuffer,e);this.xExtent.push(this.getX(i)),this.pushDatumYExtent(i),null!=t&&(this.xExtent.evict(this.getX(t)),this.evictDatumYExtent(t))}return this.updateResults.recordData(t.bounded?"replace":"ingest",t.inserts.length),!0}ingestWithResult(t){return this.ingest(t),this.updateResults.last}computeScene(t){const{config:e,buffer:i}=this,o=this.scales,s=this.lastLayout;if(!this.needsFullRebuild&&!e.customLayout&&this.lastLayout&&this.scene.length>0&&this.scales&&0>=(this.config.scalePadding??0)&&(this.lastLayout.width!==t.width||this.lastLayout.height!==t.height))return void this.remapScene(t);this.xExtent.dirty&&this.xExtent.recalculate(i,this.getX),this.yExtent.dirty&&this.rebuildYExtent();const n=this.getBufferArray(),r=this.yExtent.extent;let a=Be(this.xExtent.extent,e.xExtent),l=Be(r,e.yExtent);const c=!(!(h=e.yExtent)||null==h[0]||null==h[1]);var h;const u="exact"===e.axisExtent;if("stackedarea"===e.chartType&&!c&&i.size>0){const t=function(t){const{config:e,groups:i,getX:o,getY:s}=t,n="exact"===e.axisExtent;if(e.normalize){const i=[0,n?1:1+e.extentPadding];return{yDomain:i,stackExtentCache:{key:`${t.bufferSize}:${t.ingestVersion}:norm`,yDomain:i}}}const r=`${t.bufferSize}:${t.ingestVersion}:${e.baseline??"zero"}:${e.stackOrder??"key"}`;if(t.stackExtentCache&&t.stackExtentCache.key===r)return{yDomain:t.stackExtentCache.yDomain,stackExtentCache:t.stackExtentCache};const a=new Map,l=new Set;let c=0;const h=new Map,u=new Map;for(const t of i){const e=new Map;let i=0;for(const n of t.data){const t=o(n),r=s(n);if(!Number.isFinite(t)||!Number.isFinite(r))continue;e.set(t,(e.get(t)||0)+r),l.add(t),i+=r;const a=(h.get(t)||0)+r;h.set(t,a),a>c&&(c=a)}a.set(t.key,e),u.set(t.key,i)}const g=e.stackOrder??"key",d=(t,e)=>e>t?-1:t>e?1:0;let y,m;if("input"===g)y=i.map(t=>t.key);else if("insideOut"===g){const t=[...i].map(t=>t.key).sort((t,e)=>{const i=(u.get(e)??0)-(u.get(t)??0);return 0!==i?i:d(t,e)}),e=[],o=[];let s=0,n=0;for(const i of t)n>s?(e.push(i),s+=u.get(i)??0):(o.push(i),n+=u.get(i)??0);y=[...o.reverse(),...e]}else y="asc"===g?i.map(t=>t.key).sort((t,e)=>{const i=(u.get(t)??0)-(u.get(e)??0);return 0!==i?i:d(t,e)}):"desc"===g?i.map(t=>t.key).sort((t,e)=>{const i=(u.get(e)??0)-(u.get(t)??0);return 0!==i?i:d(t,e)}):i.map(t=>t.key).sort(d);if("wiggle"===e.baseline||"silhouette"===e.baseline){const t=Array.from(l).sort((t,e)=>t-e),i=p(t,y,(t,e)=>a.get(t)?.get(e)||0,e.baseline);let o=1/0,s=-1/0;for(const e of t){const t=i.get(e)??0,n=h.get(e)??0;o>t&&(o=t),t+n>s&&(s=t+n)}Number.isFinite(o)&&Number.isFinite(s)||(o=0,s=0);const r=s-o,c=n?0:r>0?r*e.extentPadding:1;m=[o-c,s+c]}else if("diverging"===e.baseline){const t=Array.from(l).sort((t,e)=>t-e),[i,o]=f(t,y,(t,e)=>a.get(t)?.get(e)||0),s=o-i,r=n?0:s>0?s*e.extentPadding:1;m=[i-r,o+r]}else m=[0,c+(n?0:c>0?c*e.extentPadding:1)];return{yDomain:m,stackExtentCache:{key:r,yDomain:m}}}({config:e,groups:this.groupData(n),getX:this.getX,getY:this.getY,bufferSize:i.size,ingestVersion:this._ingestVersion,stackExtentCache:this._stackExtentCache});l=t.yDomain,this._stackExtentCache=t.stackExtentCache}else"bar"===e.chartType&&e.binSize&&!c&&i.size>0?l=function(t,e,i,o,s,n,r){const[,a]=function(t,e,i,o,s){const n=Oe(t,e,i,o,s);if(0===n.size)return[0,0];let r=0;for(const t of n.values())t.total>r&&(r=t.total);return[0,r]}(t,e,i,o,s);return[0,r?a:a+a*n]}(i,this.getX,this.getY,e.binSize,this.getCategory,e.extentPadding,u):"waterfall"===e.chartType&&!c&&i.size>0?l=function(t,e,i,o){const[s,n]=function(t,e){let i=0,o=0,s=0;for(const n of t){const t=e(n);null==t||Number.isNaN(t)||(s+=t,i>s&&(i=s),s>o&&(o=s))}return[i,o]}(t,e),r=n-s,a=o?0:r>0?r*i:1;return[Math.min(0,s-Math.abs(a)),Math.max(0,n+Math.abs(a))]}(i,this.getY,e.extentPadding,u):c||l[0]===1/0||(l=function(t,e,i){if(!i.length)return t;let[o,s]=t;for(const t of e)for(const e of i){const i=e.getTop(t),n=e.getBottom(t);Number.isFinite(i)&&(o>i&&(o=i),i>s&&(s=i)),Number.isFinite(n)&&(o>n&&(o=n),n>s&&(s=n))}return[o,s]}(l,n,this.resolvedRibbons),l=function(t,e){const i=t[1]-t[0],o=e.exactMode?0:i>0?i*e.extentPadding:1,s=[null!=e.userMin?t[0]:t[0]-o,null!=e.userMax?t[1]:t[1]+o];return"log"!==e.yScaleType||s[0]>0||0>=e.dataYDomain[0]||e.exactMode||null==e.userMin&&(s[0]=e.dataYDomain[0]/(1+e.extentPadding)),s}(l,{exactMode:u,extentPadding:e.extentPadding,userMin:e.yExtent?.[0],userMax:e.yExtent?.[1],yScaleType:e.yScaleType,dataYDomain:r}));l=function(t,e,i){if(!e||i)return t;const o=e[0],s=e[1];return null==o&&null==s?t:[null!=o?o:t[0],null!=s?s:t[1]]}(l,e.yExtent,!!c),({xDomain:a,yDomain:l}=function(t,e,i){let o=t,s=e;if(o[0]===1/0||o[1]===-1/0)if("time"===i){const t=Date.now();o=[t-864e5,t]}else o=[0,1];return s[0]!==1/0&&s[1]!==-1/0||(s=[0,1]),{xDomain:o,yDomain:s}}(a,l,e.xScaleType)),this.scales=function(t){const{config:e,layout:i,xDomain:o,yDomain:s}=t,n="streaming"===e.runtimeMode,r=Math.max(0,Math.min(e.scalePadding||0,Math.min(i.width,i.height)/2-1));if(n){if("x"==("up"===(a=e.arrowOfTime)||"down"===a?"y":"x")){const t="right"===e.arrowOfTime?[r,i.width-r]:[i.width-r,r];return{x:Ee().domain(o).range(t),y:Ie(e.yScaleType,s,[i.height-r,r])}}const t="down"===e.arrowOfTime?[r,i.height-r]:[i.height-r,r];return{x:Ie(e.yScaleType,s,[r,i.width-r]),y:Ee().domain(o).range(t)}}var a;return{x:Ie(e.xScaleType,o,[r,i.width-r]),y:Ie(e.yScaleType,s,[i.height-r,r])}}({config:e,layout:t,xDomain:a,yDomain:l}),this._customLayoutFailedThisBuild=!1;const g=this.buildSceneNodes(t,n);if(this._customLayoutFailedThisBuild)return!0===this.lastCustomLayoutFailure?.preservedLastGoodScene?(this.scales=o,this.lastLayout=s):(this.scene=[],this.spatialIndex.rebuild(this.config.chartType,this.scene)),void(this.needsFullRebuild=!0);this.config.transition&&this.scene.length>0&&this.snapshotPositions(),this.scene=g,this.config.decay&&this.applyDecay(this.scene,n),this.config.pulse&&this.applyPulse(this.scene,n,this.currentTime()),this.config.transition&&!this._hasRenderedOnce&&this.scene.length>0&&(this.config.introAnimation&&this.synthesizeIntroPositions(),this._hasRenderedOnce=!0),this.config.transition&&(this.prevPositionMap.size>0||this.prevPathMap.size>0)&&this.startTransition(),this.spatialIndex.rebuild(this.config.chartType,this.scene),this.needsFullRebuild=!1,this.lastLayout={width:t.width,height:t.height},this.version++}get quadtree(){return this.spatialIndex.quadtree}get maxPointRadius(){return this.spatialIndex.maxPointRadius}remapScene(t){const e=t.width/this.lastLayout.width,i=t.height/this.lastLayout.height;for(const t of this.scene)switch(t.type){case"line":for(const o of t.path)o[0]*=e,o[1]*=i;break;case"area":for(const o of t.topPath)o[0]*=e,o[1]*=i;for(const o of t.bottomPath)o[0]*=e,o[1]*=i;t.clipRect&&(t.clipRect={x:t.clipRect.x*e,y:t.clipRect.y*i,width:t.clipRect.width*e,height:t.clipRect.height*i});break;case"point":case"glyph":t.x*=e,t.y*=i;break;case"rect":case"heatcell":t.x*=e,t.y*=i,t.w*=e,t.h*=i;break;case"candlestick":t.x*=e,t.openY*=i,t.closeY*=i,t.highY*=i,t.lowY*=i}const o=this.scales.x.domain(),s=this.scales.y.domain(),n=this.scales.x.range(),r=this.scales.y.range(),a=Ie,l=Math.max(0,Math.min(this.config.scalePadding||0,Math.min(t.width,t.height)/2-1)),c=r[1]>r[0];this.scales={x:a(this.config.xScaleType,o,n[0]>n[1]?[t.width-l,l]:[l,t.width-l]),y:a(this.config.yScaleType,s,c?[l,t.height-l]:[t.height-l,l])},this.lastLayout={width:t.width,height:t.height},this.spatialIndex.rebuild(this.config.chartType,this.scene),this.version++}buildSceneNodes(t,e){const{config:i,scales:o}=this;if(!o)return[];if(i.customLayout){const s={data:e,scales:o,dimensions:{width:t.width,height:t.height,margin:i.layoutMargin??{top:0,right:0,bottom:0,left:0},plot:{x:0,y:0,width:t.width,height:t.height}},theme:{semantic:i.themeSemantic??{},categorical:i.themeCategorical??mt},resolveColor:(t,e)=>{const o=this.resolveGroupColor(t);if(o)return o;const s=this.resolveLineStyle(t,e);return s.stroke?s.stroke:"string"==typeof s.fill?s.fill:i.themeSemantic?.primary??"#4e79a7"},config:i.layoutConfig??{},selection:i.layoutSelection??null};let n;try{n=i.customLayout(s)}catch(t){const e=null!==this.lastCustomLayoutResult,o=q("xy",t,e,this.version);this.lastCustomLayoutFailure=o,this._customLayoutFailedThisBuild=!0,"production"!==process.env.NODE_ENV&&console.error("[semiotic] customLayout threw:",t);try{i.onLayoutError?.(o)}catch(t){"production"!==process.env.NODE_ENV&&console.error("[semiotic] onLayoutError threw:",t)}return e?this.scene:(this.customLayoutOverlays=null,this.lastCustomLayoutResult=null,this._customRestyle=void 0,this.hasCustomRestyle=!1,this._baseStyles=new WeakMap,[])}this.customLayoutOverlays=n.overlays??null,this.lastCustomLayoutResult=n,this.lastCustomLayoutFailure=null;const r=n.nodes??[];if(this._customRestyle=n.restyle,this.hasCustomRestyle=!!n.restyle,this.hasCustomRestyle){this._baseStyles=new WeakMap;for(const t of r)t.style&&this._baseStyles.set(t,t.style);this.applyCustomRestyle(r,i.layoutSelection??null)}return ct({label:"customLayout",nodes:r,overlays:this.customLayoutOverlays,warned:this._customLayoutDiagnosticsWarned}),r}if(this.customLayoutOverlays=null,this.lastCustomLayoutResult=null,this.lastCustomLayoutFailure=null,this._customRestyle=void 0,this.hasCustomRestyle=!1,0===e.length)return[];const s={scales:o,config:i,getX:this.getX,getY:this.getY,getY0:this.getY0,getSize:this.getSize,getColor:this.getColor,getSymbol:this.getSymbol,getGroup:this.getGroup,getCategory:this.getCategory,getPointId:this.getPointId,ribbons:this.resolvedRibbons,getOpen:this.getOpen,getHigh:this.getHigh,getLow:this.getLow,getClose:this.getClose,resolveLineStyle:(t,e)=>this.resolveLineStyle(t,e),resolveAreaStyle:(t,e)=>this.resolveAreaStyle(t,e),resolveBoundsStyle:(t,e)=>this.resolveBoundsStyle(t,e),resolveColorMap:t=>this.resolveColorMap(t),resolveGroupColor:t=>this.resolveGroupColor(t),groupData:t=>this.groupData(t),barCategoryCache:this._barCategoryCache};switch(i.chartType){case"line":return function(t,e){const i=t.groupData(e),o=[],s=t.config.annotations?.filter(Ye).map(t=>({value:t.value,color:t.color,thresholdType:t.thresholdType||"greater"}));if(t.ribbons&&t.ribbons.length>0){const{perSeries:s,aggregate:n}=O(t.ribbons);if(n.length>0&&o.push(...S(t,e,n)),s.length>0)for(const e of i)o.push(...M(t,e.data,e.key,s))}for(const e of i){const i=t.resolveLineStyle(e.key,e.data[0]),n=c(e.data,t.scales,t.getX,t.getY,i,e.key);s&&s.length>0&&(n.colorThresholds=s),t.config.curve&&"linear"!==t.config.curve&&(n.curve=t.config.curve),t.config.lineGradient&&(n.strokeGradient=t.config.lineGradient),o.push(n)}return Pe(t,i,o),o}(s,e);case"area":return function(t,e){const i=t.groupData(e),o=[];if(t.ribbons&&t.ribbons.length>0){const{perSeries:s,aggregate:n}=O(t.ribbons);if(n.length>0&&o.push(...S(t,e,n)),s.length>0)for(const e of i)o.push(...M(t,e.data,e.key,s))}const s=t.scales.y.domain()[0],n=t.getY0?e=>{const i=t.getY0(e);return null==i?s:i}:void 0;for(const e of i){const i=t.resolveAreaStyle(e.key,e.data[0]),a=r(e.data,t.scales,t.getX,t.getY,s,i,e.key,n),l=Te(t.config.gradientFill);l&&(a.fillGradient=l),t.config.curve&&"linear"!==t.config.curve&&(a.curve=t.config.curve),t.config.lineGradient&&(a.strokeGradient=t.config.lineGradient),o.push(a)}return Pe(t,i,o),o}(s,e);case"mixed":return function(t,e){const i=t.groupData(e),o=[],s=t.config.areaGroups||new Set;if(t.ribbons&&t.ribbons.length>0){const{perSeries:s,aggregate:n}=O(t.ribbons);if(n.length>0&&o.push(...S(t,e,n)),s.length>0)for(const e of i)o.push(...M(t,e.data,e.key,s))}const n=t.scales.y.domain()[0],a=t.getY0?e=>{const i=t.getY0(e);return null==i?n:i}:void 0;for(const e of i)if(s.has(e.key)){const i=t.resolveAreaStyle(e.key,e.data[0]),s=r(e.data,t.scales,t.getX,t.getY,n,i,e.key,a),l=Te(t.config.gradientFill);l&&(s.fillGradient=l),t.config.curve&&"linear"!==t.config.curve&&(s.curve=t.config.curve),t.config.lineGradient&&(s.strokeGradient=t.config.lineGradient),o.push(s)}else{const i=t.resolveLineStyle(e.key,e.data[0]),s=c(e.data,t.scales,t.getX,t.getY,i,e.key);t.config.curve&&"linear"!==t.config.curve&&(s.curve=t.config.curve),t.config.lineGradient&&(s.strokeGradient=t.config.lineGradient),o.push(s)}return Pe(t,i,o),o}(s,e);case"stackedarea":return function(t,e){const i=t.groupData(e),o=t.config.stackOrder??"key",s=()=>i.sort((t,e)=>e.key>t.key?-1:t.key>e.key?1:0);if("input"===o);else if("key"===o)s();else if("asc"===o||"desc"===o||"insideOut"===o){const e=new Map;for(const o of i){let i=0;for(const e of o.data){const o=t.getX(e),s=t.getY(e);Number.isFinite(o)&&Number.isFinite(s)&&(i+=s)}e.set(o.key,i)}const s=(t,e)=>e>t?-1:t>e?1:0;if("asc"===o)i.sort((t,i)=>{const o=(e.get(t.key)??0)-(e.get(i.key)??0);return 0!==o?o:s(t.key,i.key)});else if("desc"===o)i.sort((t,i)=>{const o=(e.get(i.key)??0)-(e.get(t.key)??0);return 0!==o?o:s(t.key,i.key)});else{const t=[...i].sort((t,i)=>{const o=(e.get(i.key)??0)-(e.get(t.key)??0);return 0!==o?o:s(t.key,i.key)}),o=[],n=[];let r=0,a=0;for(const i of t)a>r?(o.push(i),r+=e.get(i.key)??0):(n.push(i),a+=e.get(i.key)??0);i.length=0,i.push(...n.reverse(),...o)}}else s();const n=t.config.curve&&"linear"!==t.config.curve?t.config.curve:void 0,r=t.config.normalize?"zero":t.config.baseline??"zero",{nodes:a,stackedTops:l}=g(i,t.scales,t.getX,t.getY,(e,i)=>t.resolveAreaStyle(e,i),t.config.normalize,n,r),c=a;if(t.config.pointStyle){const e=new WeakMap;for(const o of i){const i=l.get(o.key);if(i)for(const s of o.data){const o=t.getX(s),n=t.getY(s);null==o||Number.isNaN(o)||null==n||Number.isNaN(n)||!i.has(o)||e.set(s,i.get(o))}}const o=i=>e.get(i)??t.getY(i);Pe(t,i,c,o)}return c}(s,e);case"scatter":case"bubble":return function(t,e){const i=[],o="bubble"===t.config.chartType?10:5,s=t.config.sizeRange||[3,15];let n=null;if(t.getSize&&!t.config.pointStyle){const i=e.map(e=>t.getSize(e)).filter(t=>null!=t&&!Number.isNaN(t));if(i.length>0){let t=1/0,e=-1/0;for(const o of i)t>o&&(t=o),o>e&&(e=o);n=i=>t===e?(s[0]+s[1])/2:s[0]+(i-t)/(e-t)*(s[1]-s[0])}}const r=t.getColor?t.resolveColorMap(e):null,a=t.config.themeSemantic?.primary||"#4e79a7",l=t.getSymbol,c=t.config.symbolMap,u=new Map;let g=0;const f=t=>{const e=c?.[t];if(e)return e;let i=u.get(t);return i||(i=xt[g%xt.length],g++,u.set(t,i)),i};for(const s of e){let e=t.config.pointStyle?t.config.pointStyle(s):{fill:a,opacity:.8},c=e.r||o;if(n&&t.getSize){const e=t.getSize(s);null==e||Number.isNaN(e)||(c=n(e))}if(r&&t.getColor&&!e.fill){const i=t.getColor(s);i&&r.has(i)&&(e={...e,fill:r.get(i)})}const u=t.getPointId?t.getPointId(s)+"":void 0;if(l){const o=f(l(s)+""),n=d(s,t.scales,t.getX,t.getY,Math.PI*c*c,o,e,u);n&&i.push(n)}else{const o=h(s,t.scales,t.getX,t.getY,c,e,u);o&&i.push(o)}}return i}(s,e);case"heatmap":return function(t,e,i){if(t.config.heatmapAggregation)return function(t,e,i){const o=Math.max(1,Math.floor(t.config.heatmapXBins??20)),s=Math.max(1,Math.floor(t.config.heatmapYBins??20)),n=t.config.heatmapAggregation??"count",r=y(t.config.valueAccessor,"value");if(!t.scales||0===e.length)return[];const[a,c]=t.scales.x.domain(),[h,u]=t.scales.y.domain(),g=(c-a||1)/o,d=(u-h||1)/s,f=o*s;if(f>1e6)return[];const p=new Int32Array(f),m=new Float64Array(f);for(let i=0;e.length>i;i++){const n=e[i],l=t.getX(n),c=t.getY(n);if(!isFinite(l)||!isFinite(c))continue;const u=Math.min(Math.floor((l-a)/g),o-1),f=Math.min(Math.floor((c-h)/d),s-1);if(0>u||0>f)continue;const y=f*o+u;p[y]++;const x=r(n);m[y]+=isFinite(x)?x:0}let x=1/0,v=-1/0;for(let t=0;f>t;t++){if(0===p[t])continue;let e;switch(n){case"sum":e=m[t];break;case"mean":e=m[t]/p[t];break;default:e=p[t]}x>e&&(x=e),e>v&&(v=e)}if(!isFinite(x))return[];const b=v-x||1,k=i.width/o,w=i.height/s,A=t.config.showValues,_=t.config.heatmapValueFormat,C=[];for(let t=0;s>t;t++){const e=t*o;for(let i=0;o>i;i++){const o=e+i;if(0===p[o])continue;let r;switch(n){case"sum":r=m[o];break;case"mean":r=m[o]/p[o];break;default:r=p[o]}const c=(r-x)/b;C.push(l(i*k,(s-1-t)*w,k,w,`rgb(${220-(180*c+.5)|0},${220-(100*c+.5)|0},${255-(50*c+.5)|0})`,{xi:i,yi:t,value:r,count:p[o],sum:m[o],xCenter:a+(i+.5)*g,yCenter:h+(t+.5)*d,agg:n},A?{value:r,showValues:!0,valueFormat:_}:void 0))}}return C}(t,e,i);if(0===e.length)return[];const o=y(t.config.valueAccessor,"value"),s=v(t.config.xAccessor,"x"),n=v(t.config.yAccessor,"y"),r=new Map,a=new Map,c=Array(e.length),h=Array(e.length);for(let t=0;e.length>t;t++){const i=e[t],o=s(i),l=n(i);c[t]=o,h[t]=l,r.has(o)||r.set(o,r.size),a.has(l)||a.set(l,a.size)}const u=r.size,g=a.size;if(0===u||0===g)return[];const d=Array.from(r.keys()),f=Array.from(a.keys()),p=d.every(t=>"number"==typeof t&&!isNaN(t)),m=f.every(t=>"number"==typeof t&&!isNaN(t));if(p){d.sort((t,e)=>Number(t)-Number(e)),r.clear();for(let t=0;d.length>t;t++)r.set(d[t],t)}if(m){f.sort((t,e)=>Number(t)-Number(e)),a.clear();for(let t=0;f.length>t;t++)a.set(f[t],t)}const x=new Float64Array(e.length),b=new Float64Array(e.length),k=Array(e.length),w=new Map;let A=0;for(let t=0;e.length>t;t++){const i=e[t],s=r.get(c[t]),n=a.get(h[t]);if(void 0===s||void 0===n)continue;const l=o(i),g=n*u+s,d=w.get(g);let f;void 0!==d?f=d:(f=A++,w.set(g,f)),x[f]=g,b[f]=l,k[f]=i}let _=1/0,C=-1/0;for(let t=0;A>t;t++){const e=b[t];isFinite(e)&&(_>e&&(_=e),e>C&&(C=e))}if(!isFinite(_)||!isFinite(C))return[];const S=function(t){const e=t in yt?t:"blues";let i=Ne.get(e);if(i)return i;i=Array(256);const o=zt(e);for(let t=0;256>t;t++)i[t]=o(t/255);return Ne.set(e,i),i}("string"==typeof t.config.colorScheme?t.config.colorScheme:t.config.themeSequential||"blues"),M=255/(C-_||1),P=i.width/u,Y=i.height/g,R=t.config.showValues,T=t.config.heatmapValueFormat,N=[];for(let t=0;A>t;t++){const e=b[t];if(!isFinite(e))continue;const i=x[t],o=i%u;N.push(l(o*P,(g-1-(i-o)/u)*Y,P,Y,S[Math.min((e-_)*M+.5|0,255)],k[t],R?{value:e,showValues:!0,valueFormat:T}:void 0))}return N}(s,e,t);case"bar":{const t=function(t,e){if(!t.config.binSize)return{nodes:[],binBoundaries:[]};const i=Oe(e,t.getX,t.getY,t.config.binSize,t.getCategory);if(0===i.size)return{nodes:[],binBoundaries:[]};let o=null;if(t.getCategory){const e=new Set;for(const t of i.values())for(const i of t.categories.keys())e.add(i);const s=t.config.barColors?Object.keys(t.config.barColors):[],n=new Set(s),r=Array.from(e).filter(t=>!n.has(t)).sort(),a=s.filter(t=>e.has(t)),l=a.join("\0")+""+r.join("\0");t.barCategoryCache&&t.barCategoryCache.key===l?o=t.barCategoryCache.order:(o=[...a,...r],t.barCategoryCache={key:l,order:o})}const s=[],n=t.scales,[r,a]=n.x.domain(),l=t.config.barStyle,c=t.config.themeSemantic?.primary,h=l?.gap,g="number"!=typeof h||0>h?1:h,d={};l?.stroke&&(d.stroke=l.stroke),"number"==typeof l?.strokeWidth&&(d.strokeWidth=l.strokeWidth),"number"==typeof l?.opacity&&(d.opacity=l.opacity);for(const e of i.values()){const i=Math.max(e.start,r),h=Math.min(e.end,a);if(i>=h)continue;const f=n.x(i),p=n.x(h),y=Math.abs(p-f),m=y>g+1?g:0,x=Math.min(f,p)+m/2,v=Math.max(y-m,1);if(v>0)if(o&&e.categories.size>0){let i=0;for(const r of o){const o=e.categories.get(r)||0;if(0===o)continue;const a=n.y(i),h=n.y(i+o);s.push(u(x,Math.min(a,h),v,Math.abs(a-h),{fill:t.config.barColors?.[r]||l?.fill||c||"#4e79a7",...d},{binStart:e.start,binEnd:e.end,total:e.total,category:r,categoryValue:o},r)),i+=o}}else{const t=n.y(0),i=n.y(e.total);s.push(u(x,Math.min(t,i),v,Math.abs(t-i),{fill:l?.fill||c||"#007bff",...d},{binStart:e.start,binEnd:e.end,total:e.total}))}}const f=new Set;for(const t of i.values())f.add(t.start),f.add(t.end);return{nodes:s,binBoundaries:Array.from(f).sort((t,e)=>t-e)}}(s,e);return this._barCategoryCache=s.barCategoryCache??null,this._binBoundaries=t.binBoundaries,t.nodes}case"swarm":return function(t,e){const i=[],o=t.config.swarmStyle||{},s=o.radius??3,n=o.fill??t.config.themeSemantic?.primary??"#007bff",r=o.opacity??.7,a=o.stroke,l=o.strokeWidth;for(const o of e){const e=t.getX(o),c=t.getY(o);if(null==c||Number.isNaN(c))continue;const h=t.scales.x(e),u=t.scales.y(c);let g=n;if(t.getCategory){const e=t.getCategory(o);g=t.config.barColors?.[e]||g}const{r:d,...f}=t.config.pointStyle?.(o)??{},p={type:"point",x:h,y:u,r:d??s,style:{fill:g,opacity:r,stroke:a,strokeWidth:l,...f},datum:o};t.getPointId&&(p.pointId=t.getPointId(o)+""),i.push(p)}return i}(s,e);case"waterfall":return function(t,e,i){const o=[],s=t.scales,n=t.config.waterfallStyle,r=e.filter(e=>{const i=t.getY(e),o=t.getX(e);return null!=i&&!Number.isNaN(i)&&null!=o&&isFinite(o)});if(0===r.length)return o;const a=n?.positiveColor??t.config.themeSemantic?.success??"#28a745",l=n?.negativeColor??t.config.themeSemantic?.danger??"#dc3545",c=n?.gap??1,h=n?.stroke,g=n?.strokeWidth,d=n?.opacity;let f=0;for(let e=0;r.length>e;e++){const p=r[e],y=t.getX(p),m=t.getY(p),x=f+m;let v;v=r.length-1>e?t.getX(r[e+1])-y:e>0?y-t.getX(r[e-1]):0;const b=s.x(y),k=0!==v?s.x(y+v):b+i.width/10,w=Math.min(b,k)+c/2,A=Math.max(b,k)-c/2-w;if(0>=A){f=x;continue}const _=s.y(f),C=s.y(x),S=Math.min(_,C),M=Math.abs(_-C),P={fill:0>m?l:a,stroke:h,strokeWidth:g};null!=d&&(P.opacity=d),o.push(u(w,S,A,M,P,{...p,baseline:f,cumEnd:x,delta:m,_connectorStroke:n?.connectorStroke,_connectorWidth:n?.connectorWidth})),f=x}return o}(s,e,t);case"candlestick":return function(t,e){if(!t.getHigh||!t.getLow||!t.scales)return[];const i=t.config.candlestickRangeMode??!1;if(!(i||t.getOpen&&t.getClose))return[];const o=[],s=t.config.candlestickStyle||{},n=s.rangeColor||"#6366f1",r=i?n:s.upColor||"#28a745",a=i?n:s.downColor||"#dc3545",l=i?n:s.wickColor||"#333",c=s.wickWidth||(i?2:1),h=e.map(e=>t.getX(e)).filter(t=>null!=t&&!Number.isNaN(t)).sort((t,e)=>t-e);let u=s.bodyWidth??0;if(null==s.bodyWidth)if(h.length>1){let e=1/0;for(let i=1;h.length>i;i++){const o=Math.abs(t.scales.x(h[i])-t.scales.x(h[i-1]));o>0&&e>o&&(e=o)}u=e!==1/0?Math.max(2,Math.min(.6*e,20)):6}else u=6;for(const s of e){const e=t.getX(s);if(null==e||Number.isNaN(e))continue;const n=t.getHigh(s),h=t.getLow(s);if(null==n||Number.isNaN(n)||null==h||Number.isNaN(h))continue;const g=i?n:t.getOpen(s),d=i?h:t.getClose(s);if(!i&&[g,d].some(t=>null==t||Number.isNaN(t)))continue;const f=d>=g,p={type:"candlestick",x:t.scales.x(e),openY:t.scales.y(g),closeY:t.scales.y(d),highY:t.scales.y(n),lowY:t.scales.y(h),bodyWidth:u,upColor:r,downColor:a,wickColor:l,wickWidth:c,isUp:f,datum:s};i&&(p.isRange=!0),o.push(p)}return o}(s,e);default:return[]}}resolveBoundsStyle(t,e){return function(t,e,i,o){const s=t.boundsStyle;return"function"==typeof s?s(i||{},e):s&&"object"==typeof s?s:{fill:o(e,i).stroke||t.themeSemantic?.primary||"#4e79a7",fillOpacity:.2,stroke:"none"}}(this.config,t,e,(t,e)=>this.resolveLineStyle(t,e))}computeDecayOpacity(t,e){const i=this.config.decay;return i&&e>1?j(i,t,e):1}getDatumIndexMap(t){if(this._datumIndexCache&&this._datumIndexCache.version===this._ingestVersion)return this._datumIndexCache.map;const e=V(t);return this._datumIndexCache={version:this._ingestVersion,map:e},e}applyDecay(t,e){this.config.decay&&$(this.config.decay,t,e,this.getDatumIndexMap(e))}refreshPulse(t){return!0!==this.lastCustomLayoutFailure?.preservedLastGoodScene&&this.applyPulse(this.scene,this.getBufferArray(),t)}hasActivePulsesAt(t){return!!this.config.pulse&&N(this.config.pulse,this.timestampBuffer,t)}get hasActivePulses(){return this.hasActivePulsesAt(this.currentTime())}get transitionContext(){return{runtimeMode:this.config.runtimeMode,getX:this.getX,getY:this.getY,getCategory:this.getCategory}}snapshotPositions(){!function(t,e,i,o){i.clear(),o.clear();for(let s=0;e.length>s;s++){const n=e[s],r=Me(t,n,s);r&&("point"===n.type?i.set(r,{x:n.x,y:n.y,r:n.r,opacity:n.style.opacity}):"glyph"===n.type?i.set(r,{x:n.x,y:n.y,r:n.size,opacity:n.style.opacity,glyph:n.glyph}):"rect"===n.type?i.set(r,{x:n.x,y:n.y,w:n.w,h:n.h,opacity:n.style.opacity}):"heatcell"===n.type?i.set(r,{x:n.x,y:n.y,w:n.w,h:n.h,opacity:n.style?.opacity}):"candlestick"===n.type?i.set(r,{x:n.x,y:n.openY,w:n.bodyWidth,openY:n.openY,closeY:n.closeY,highY:n.highY,lowY:n.lowY,opacity:n.style?.opacity}):"line"===n.type?o.set(r,{path:n.path.map(t=>[t[0],t[1]]),opacity:n.style?.opacity}):"area"===n.type&&o.set(r,{topPath:n.topPath.map(t=>[t[0],t[1]]),bottomPath:n.bottomPath.map(t=>[t[0],t[1]]),opacity:n.style?.opacity}))}}(this.transitionContext,this.scene,this.prevPositionMap,this.prevPathMap)}synthesizeIntroPositions(){this.prevPositionMap.clear(),this.prevPathMap.clear();const t=this.scales?.y(0)??0;for(let e=0;this.scene.length>e;e++){const i=this.scene[e],o=Me(this.transitionContext,i,e);o&&("point"===i.type?this.prevPositionMap.set(o,{x:i.x,y:i.y,r:0,opacity:0}):"rect"===i.type?this.prevPositionMap.set(o,{x:i.x,y:t,w:i.w,h:0,opacity:i.style.opacity??1}):"heatcell"===i.type?this.prevPositionMap.set(o,{x:i.x,y:i.y,w:i.w,h:i.h,opacity:0}):"line"===i.type?(i._introClipFraction=0,this.prevPathMap.set(o,{path:i.path.map(t=>[t[0],t[1]]),opacity:i.style.opacity})):"area"===i.type&&(i._introClipFraction=0,this.prevPathMap.set(o,{topPath:i.topPath.map(t=>[t[0],t[1]]),bottomPath:i.bottomPath.map(t=>[t[0],t[1]]),opacity:i.style.opacity})))}}startTransition(){if(!this.config.transition)return;const t=function(t,e,i,o,s,n=It()){if(0===o.size&&0===s.size)return i;const r=e.duration??300;if(i.exitNodes.length>0){const t=new Set(i.exitNodes);i.scene=i.scene.filter(e=>!t.has(e)),i.exitNodes=[]}let a=!1;const l=new Set,c=new Set;for(let e=0;i.scene.length>e;e++){const n=i.scene[e],r=Me(t,n,e);if(!r)continue;if(n._transitionKey=r,"line"===n.type||"area"===n.type){const t=s.get(r);if(t){if(c.add(r),"line"===n.type&&t.path&&t.path.length===n.path.length){n._targetPath=n.path.map(t=>[t[0],t[1]]),n._prevPath=t.path;for(let e=0;n.path.length>e;e++)n.path[e]=[t.path[e][0],t.path[e][1]];a=!0}else if("area"===n.type&&t.topPath&&t.bottomPath&&t.topPath.length===n.topPath.length&&t.bottomPath.length===n.bottomPath.length){n._targetTopPath=n.topPath.map(t=>[t[0],t[1]]),n._targetBottomPath=n.bottomPath.map(t=>[t[0],t[1]]),n._prevTopPath=t.topPath,n._prevBottomPath=t.bottomPath;for(let e=0;n.topPath.length>e;e++)n.topPath[e]=[t.topPath[e][0],t.topPath[e][1]];for(let e=0;n.bottomPath.length>e;e++)n.bottomPath[e]=[t.bottomPath[e][0],t.bottomPath[e][1]];a=!0}n._targetOpacity=n.style.opacity??1,n._startOpacity=t.opacity??n.style.opacity??1}else n._targetOpacity=n.style.opacity??1,n._startOpacity=0,n.style={...n.style,opacity:0},a=!0;continue}const h=o.get(r);if("point"===n.type)if(h){l.add(r);const t={x:n.x,y:n.y,r:n.r};n._targetOpacity=n.style.opacity??1,h.x===t.x&&h.y===t.y&&h.r===t.r||(n._targetX=t.x,n._targetY=t.y,n._targetR=t.r,n.x=h.x,n.y=h.y,n.r=h.r??n.r,a=!0)}else n._targetOpacity=n.style.opacity??1,n.style={...n.style,opacity:0},a=!0;else if("glyph"===n.type)if(h){l.add(r);const t={x:n.x,y:n.y,size:n.size};n._targetOpacity=n.style.opacity??1,h.x===t.x&&h.y===t.y&&h.r===t.size||(n._targetX=t.x,n._targetY=t.y,n._targetR=t.size,n.x=h.x,n.y=h.y,n.size=h.r??n.size,a=!0)}else n._targetOpacity=n.style.opacity??1,n.style={...n.style,opacity:0},a=!0;else if("rect"===n.type)if(h){l.add(r);const t={x:n.x,y:n.y,w:n.w,h:n.h};n._targetOpacity=n.style.opacity??1,h.x===t.x&&h.y===t.y&&h.w===t.w&&h.h===t.h||(n._targetX=t.x,n._targetY=t.y,n._targetW=t.w,n._targetH=t.h,n.x=h.x,n.y=h.y,n.w=h.w??n.w,n.h=h.h??n.h,a=!0)}else n._targetOpacity=n.style.opacity??1,n.style={...n.style,opacity:0},a=!0;else if("heatcell"===n.type)if(h){l.add(r);const t={x:n.x,y:n.y,w:n.w,h:n.h};n._targetOpacity=n.style?.opacity??1,h.x===t.x&&h.y===t.y&&h.w===t.w&&h.h===t.h||(n._targetX=t.x,n._targetY=t.y,n._targetW=t.w,n._targetH=t.h,n.x=h.x,n.y=h.y,n.w=h.w??n.w,n.h=h.h??n.h,a=!0)}else n._targetOpacity=n.style?.opacity??1,n.style={...n.style||{},opacity:0},a=!0;else if("candlestick"===n.type)if(h&&null!=h.openY){l.add(r);const t={x:n.x,openY:n.openY,closeY:n.closeY,highY:n.highY,lowY:n.lowY};n._targetOpacity=n.style?.opacity??1,(h.x!==t.x||h.openY!==t.openY||h.closeY!==t.closeY||h.highY!==t.highY||h.lowY!==t.lowY)&&(n._targetX=t.x,n._targetOpenY=t.openY,n._targetCloseY=t.closeY,n._targetHighY=t.highY,n._targetLowY=t.lowY,n.x=h.x,n.openY=h.openY,n.closeY=h.closeY??n.closeY,n.highY=h.highY??n.highY,n.lowY=h.lowY??n.lowY,a=!0)}else n._targetOpacity=n.style?.opacity??1,n.style={...n.style||{},opacity:0},a=!0}for(const[t,e]of s)if(!c.has(t))if(t.startsWith("l:")&&e.path){const o={type:"line",path:e.path.map(t=>[t[0],t[1]]),group:t.slice(2),style:{stroke:"#999",strokeWidth:1,opacity:e.opacity??1},_targetOpacity:0,_transitionKey:t,datum:null};i.exitNodes.push(o),a=!0}else if(t.startsWith("a:")&&e.topPath&&e.bottomPath){const o={type:"area",topPath:e.topPath.map(t=>[t[0],t[1]]),bottomPath:e.bottomPath.map(t=>[t[0],t[1]]),group:t.slice(2),style:{fill:"#999",opacity:e.opacity??1},_targetOpacity:0,_transitionKey:t,datum:null};i.exitNodes.push(o),a=!0}for(const[t,e]of o)if(!l.has(t)){if(t.startsWith("p:"))i.exitNodes.push({type:"point",x:e.x,y:e.y,r:e.r??3,style:{opacity:e.opacity??1},datum:null,_targetOpacity:0,_transitionKey:t});else if(t.startsWith("g:")&&e.glyph)i.exitNodes.push({type:"glyph",x:e.x,y:e.y,size:e.r??12,glyph:e.glyph,color:"#999",accent:"#999",style:{opacity:e.opacity??1},datum:null,_targetOpacity:0,_transitionKey:t});else if(t.startsWith("r:"))i.exitNodes.push({type:"rect",x:e.x,y:e.y,w:e.w??0,h:e.h??0,style:{opacity:e.opacity??1,fill:"#999"},datum:null,_targetOpacity:0,_transitionKey:t});else if(t.startsWith("h:"))i.exitNodes.push({type:"heatcell",x:e.x,y:e.y,w:e.w??0,h:e.h??0,fill:"#999",datum:null,style:{opacity:e.opacity??1},_targetOpacity:0,_transitionKey:t});else if(t.startsWith("c:")){const o=e.openY??e.y;i.exitNodes.push({type:"candlestick",x:e.x,openY:o,closeY:e.closeY??o,highY:e.highY??o,lowY:e.lowY??o,bodyWidth:e.w??6,upColor:"#999",downColor:"#999",wickColor:"#999",wickWidth:1,isUp:!0,datum:null,style:{opacity:e.opacity??1},_targetOpacity:0,_transitionKey:t})}a=!0}return i.exitNodes.length>0&&(i.scene=[...i.scene,...i.exitNodes]),a&&(i.activeTransition={startTime:n,duration:r}),i}(this.transitionContext,this.config.transition,{scene:this.scene,exitNodes:this.exitNodes,activeTransition:this.activeTransition},this.prevPositionMap,this.prevPathMap,this.currentTime());this.scene=t.scene,this.exitNodes=t.exitNodes,this.activeTransition=t.activeTransition}advanceTransition(t){if(!this.activeTransition||!this.config.transition)return!1;const e={scene:this.scene,exitNodes:this.exitNodes,activeTransition:this.activeTransition},i=function(t,e,i,o){if(!i.activeTransition)return!1;const s=Rt(t,i.activeTransition),n=Yt(s,"linear"===e.easing?"linear":"ease-out-cubic");for(const t of i.scene){const e=t._transitionKey;if("point"===t.type){if(void 0!==t._targetOpacity){const i=e?o.get(e):void 0;t.style.opacity=Bt(i?i.opacity??1:0,t._targetOpacity,n)}if(void 0===t._targetX)continue;if(!e)continue;const i=o.get(e);if(!i)continue;t.x=Bt(i.x,t._targetX,n),t.y=Bt(i.y,t._targetY,n),void 0!==t._targetR&&void 0!==i.r&&(t.r=Bt(i.r,t._targetR,n))}else if("glyph"===t.type){if(void 0!==t._targetOpacity){const i=e?o.get(e):void 0;t.style.opacity=Bt(i?i.opacity??1:0,t._targetOpacity,n)}if(void 0===t._targetX)continue;if(!e)continue;const i=o.get(e);if(!i)continue;t.x=Bt(i.x,t._targetX,n),t.y=Bt(i.y,t._targetY,n),void 0!==t._targetR&&void 0!==i.r&&(t.size=Bt(i.r,t._targetR,n))}else if("rect"===t.type){if(void 0!==t._targetOpacity){const i=e?o.get(e):void 0;t.style.opacity=Bt(i?i.opacity??1:0,t._targetOpacity,n)}if(void 0===t._targetX)continue;if(!e)continue;const i=o.get(e);if(!i)continue;t.x=Bt(i.x,t._targetX,n),t.y=Bt(i.y,t._targetY,n),void 0!==i.w&&(t.w=Bt(i.w,t._targetW,n)),void 0!==i.h&&(t.h=Bt(i.h,t._targetH,n))}else if("heatcell"===t.type){if(void 0!==t._targetOpacity){const i=e?o.get(e):void 0;t.style={...t.style||{},opacity:Bt(i?i.opacity??1:0,t._targetOpacity,n)}}if(void 0===t._targetX)continue;if(!e)continue;const i=o.get(e);if(!i)continue;t.x=Bt(i.x,t._targetX,n),t.y=Bt(i.y,t._targetY,n),void 0!==i.w&&(t.w=Bt(i.w,t._targetW,n)),void 0!==i.h&&(t.h=Bt(i.h,t._targetH,n))}else if("candlestick"===t.type){if(void 0!==t._targetOpacity){const i=e?o.get(e):void 0;t.style={...t.style||{},opacity:Bt(i?i.opacity??1:0,t._targetOpacity,n)}}if(void 0===t._targetX)continue;if(!e)continue;const i=o.get(e);if(!i)continue;t.x=Bt(i.x,t._targetX,n),void 0!==i.openY&&(t.openY=Bt(i.openY,t._targetOpenY,n)),void 0!==i.closeY&&(t.closeY=Bt(i.closeY,t._targetCloseY,n)),void 0!==i.highY&&(t.highY=Bt(i.highY,t._targetHighY,n)),void 0!==i.lowY&&(t.lowY=Bt(i.lowY,t._targetLowY,n))}else if("line"===t.type){void 0!==t._targetOpacity&&(t.style={...t.style,opacity:Bt(t._startOpacity??0,t._targetOpacity,n)}),void 0!==t._introClipFraction&&(t._introClipFraction=n);const e=t._prevPath,i=t._targetPath;if(e&&i&&e.length===t.path.length)for(let o=0;t.path.length>o;o++)t.path[o][0]=Bt(e[o][0],i[o][0],n),t.path[o][1]=Bt(e[o][1],i[o][1],n)}else if("area"===t.type){void 0!==t._targetOpacity&&(t.style={...t.style,opacity:Bt(t._startOpacity??0,t._targetOpacity,n)}),void 0!==t._introClipFraction&&(t._introClipFraction=n);const e=t._prevTopPath,i=t._prevBottomPath,o=t._targetTopPath,s=t._targetBottomPath;if(e&&o&&e.length===t.topPath.length)for(let i=0;t.topPath.length>i;i++)t.topPath[i][0]=Bt(e[i][0],o[i][0],n),t.topPath[i][1]=Bt(e[i][1],o[i][1],n);if(i&&s&&i.length===t.bottomPath.length)for(let e=0;t.bottomPath.length>e;e++)t.bottomPath[e][0]=Bt(i[e][0],s[e][0],n),t.bottomPath[e][1]=Bt(i[e][1],s[e][1],n)}}if(s>=1){for(const t of i.scene){if(void 0!==t._targetOpacity){const e=t._targetOpacity;t.style="line"===t.type||"area"===t.type?{...t.style,opacity:0===e?0:e}:{...t.style||{},opacity:0===e?0:e},t._targetOpacity=void 0}if("point"===t.type){if(void 0===t._targetX)continue;t.x=t._targetX,t.y=t._targetY,void 0!==t._targetR&&(t.r=t._targetR),t._targetX=void 0,t._targetY=void 0,t._targetR=void 0}else if("glyph"===t.type){if(void 0===t._targetX)continue;t.x=t._targetX,t.y=t._targetY,void 0!==t._targetR&&(t.size=t._targetR),t._targetX=void 0,t._targetY=void 0,t._targetR=void 0}else if("rect"===t.type){if(void 0===t._targetX)continue;t.x=t._targetX,t.y=t._targetY,t.w=t._targetW,t.h=t._targetH,t._targetX=void 0,t._targetY=void 0,t._targetW=void 0,t._targetH=void 0}else if("heatcell"===t.type){if(void 0===t._targetX)continue;t.x=t._targetX,t.y=t._targetY,t.w=t._targetW,t.h=t._targetH,t._targetX=void 0,t._targetY=void 0,t._targetW=void 0,t._targetH=void 0}else if("candlestick"===t.type){if(void 0===t._targetX)continue;t.x=t._targetX,void 0!==t._targetOpenY&&(t.openY=t._targetOpenY),void 0!==t._targetCloseY&&(t.closeY=t._targetCloseY),void 0!==t._targetHighY&&(t.highY=t._targetHighY),void 0!==t._targetLowY&&(t.lowY=t._targetLowY),t._targetX=void 0,t._targetOpenY=void 0,t._targetCloseY=void 0,t._targetHighY=void 0,t._targetLowY=void 0}else if("line"===t.type){const e=t._targetPath;if(e)for(let i=0;t.path.length>i;i++)t.path[i]=e[i];t._prevPath=void 0,t._targetPath=void 0,t._introClipFraction=void 0}else if("area"===t.type){const e=t._targetTopPath,i=t._targetBottomPath;if(e)for(let i=0;t.topPath.length>i;i++)t.topPath[i]=e[i];if(i)for(let e=0;t.bottomPath.length>e;e++)t.bottomPath[e]=i[e];t._prevTopPath=void 0,t._prevBottomPath=void 0,t._targetTopPath=void 0,t._targetBottomPath=void 0,t._introClipFraction=void 0}}if(i.exitNodes.length>0){const t=new Set(i.exitNodes);i.scene=i.scene.filter(e=>!t.has(e)),i.exitNodes=[]}return i.activeTransition=null,!1}return!0}(t,this.config.transition,e,this.prevPositionMap);return this.scene=e.scene,this.exitNodes=e.exitNodes,this.activeTransition=e.activeTransition,i}cancelIntroAnimation(){this.prevPositionMap.clear(),this.prevPathMap.clear(),this.activeTransition=null;for(const t of this.scene)"line"!==t.type&&"area"!==t.type||(t._introClipFraction=void 0)}groupData(t){const{result:e,cache:i}=function(t,e,i,o){if(o&&o.version===i&&o.group===e&&o.data===t)return{result:o.result,cache:o};let s;if(e){const i=new Map;for(const o of t){const t=e(o);i.has(t)||i.set(t,[]),i.get(t).push(o)}s=Array.from(i.entries()).map(([t,e])=>({key:t,data:e}))}else s=[{key:"_default",data:t}];return{result:s,cache:{version:i,group:e,data:t,result:s}}}(t,this.getGroup,this._ingestVersion,this._groupDataCache);return this._groupDataCache=i,e}resolveColorMap(t){const{map:e,cache:i}=function(t,e,i,o,s){if(s&&s.version===o)return{map:s.map,cache:s};const n=new Set;if(e)for(const i of t){const t=e(i);t&&n.add(t)}const r=Array.from(n).sort(),a=r.join("\0");if(s&&s.key===a){const t={...s,version:o};return{map:t.map,cache:t}}const l=Array.isArray(i.colorScheme)?i.colorScheme:i.themeCategorical||mt,c=new Map;for(let t=0;r.length>t;t++)c.set(r[t],l[t%l.length]);return{map:c,cache:{key:a,map:c,version:o}}}(t,this.getColor,this.config,this._ingestVersion,this._colorMapCache);return this._colorMapCache=i,e}resolveLineStyle(t,e){return function(t,e,i,o){const s=t.lineStyle;if("function"==typeof s){const t=s(i||{},e);if(t&&!t.stroke&&e){const i=o(e);if(i)return{...t,stroke:i}}return t}const n=t.themeSemantic?.primary;return s&&"object"==typeof s?{stroke:s.stroke||n||"#007bff",strokeWidth:s.strokeWidth||2,strokeDasharray:s.strokeDasharray,fill:s.fill,fillOpacity:s.fillOpacity,opacity:s.opacity}:{stroke:o(e)||n||"#007bff",strokeWidth:2}}(this.config,t,e,t=>this.resolveGroupColor(t))}resolveAreaStyle(t,e){return function(t,e,i,o){if(t.areaStyle){const s=t.areaStyle(i||{});if(s&&!s.fill&&e){const t=o(e);if(t)return{...s,fill:t,stroke:s.stroke||t}}return s}const s=t.lineStyle;if("function"==typeof s){const t=s(i||{},e);if(t&&!t.fill&&e){const i=o(e);if(i)return{...t,fill:i,stroke:t.stroke||i}}return t}const n=t.themeSemantic?.primary;if(s&&"object"==typeof s)return{fill:s.fill||s.stroke||n||"#4e79a7",fillOpacity:s.fillOpacity??.7,stroke:s.stroke||n||"#4e79a7",strokeWidth:s.strokeWidth||2};const r=o(e)||n||"#4e79a7";return{fill:r,fillOpacity:.7,stroke:r,strokeWidth:2}}(this.config,t,e,t=>this.resolveGroupColor(t))}resolveGroupColor(e){const{color:i,groupColorCounter:o}=function(t){const{group:e,colorMapCache:i,groupColorMap:o,groupColorMapCap:s,config:n}=t;let{groupColorCounter:r}=t;if(i){const t=i.map.get(e);if(t)return{color:t,groupColorCounter:r}}const a=o.get(e);if(a)return{color:a,groupColorCounter:r};const l=(Array.isArray(n.colorScheme)&&n.colorScheme.length>0?n.colorScheme:null)||(Array.isArray(n.themeCategorical)&&n.themeCategorical.length>0?n.themeCategorical:null)||mt;if(0===l.length)return{color:null,groupColorCounter:r};const c=l[r%l.length];if(r++,o.set(e,c),o.size>s){const t=o.keys().next().value;void 0!==t&&o.delete(t)}return{color:c,groupColorCounter:r}}({group:e,colorMapCache:this._colorMapCache,groupColorMap:this._groupColorMap,groupColorCounter:this._groupColorCounter,groupColorMapCap:t.GROUP_COLOR_MAP_CAP,config:this.config});return this._groupColorCounter=o,i}getBufferArray(){return!this._bufferDirty&&this._bufferArrayCache||(this._bufferArrayCache=this.buffer.toArray(),this._bufferDirty=!1),this._bufferArrayCache}getData(){return this.getBufferArray()}remove(t){if(!this.getPointId)throw Error("remove() requires pointIdAccessor to be configured");this.config.transition&&this.scene.length>0&&this.snapshotPositions();const e=A(t),i=this.getPointId,o=t=>e.has(i(t));P(this.buffer,this.timestampBuffer,o);const s=this.buffer.remove(o);if(0===s.length)return this.updateResults.recordNoop("remove"),s;for(const t of s)this.xExtent.evict(this.getX(t)),this.evictDatumYExtent(t);return this.needsFullRebuild=!0,this._bufferDirty=!0,this._ingestVersion++,this.lastIngestTime=this.currentTime(),this.updateResults.recordData("remove",s.length),s}update(t,e){if(!this.getPointId)throw Error("update() requires pointIdAccessor to be configured");const i=A(t),o=this.getPointId,s=new Set;this.buffer.forEach((t,e)=>{i.has(o(t))&&s.add(e)});const n=this.buffer.update(t=>i.has(o(t)),e);if(0===n.length)return this.updateResults.recordNoop("update"),n;for(const t of n)this.xExtent.evict(this.getX(t)),this.evictDatumYExtent(t);return this.buffer.forEach((t,e)=>{s.has(e)&&(this.xExtent.push(this.getX(t)),this.pushDatumYExtent(t))}),this.needsFullRebuild=!0,this._bufferDirty=!0,this._ingestVersion++,this.lastIngestTime=this.currentTime(),this.updateResults.recordData("update",n.length),n}getBinBoundaries(){return this._binBoundaries}getExtents(){return this.xExtent.min===1/0?null:{x:this.xExtent.extent,y:this.yExtent.extent}}clear(){this.buffer.clear(),this.xExtent.clear(),this.yExtent.clear(),this._hasRenderedOnce=!1,this.timestampBuffer&&this.timestampBuffer.clear(),this.prevPositionMap.clear(),this.prevPathMap.clear(),this.exitNodes=[],this.activeTransition=null,this.lastIngestTime=0,this._lastBoundedInsertsRef=null,this.needsFullRebuild=!0,this._bufferDirty=!0,this._bufferArrayCache=null,this._datumIndexCache=null,this.lastLayout=null,this.scales=null,this.scene=[],this.customLayoutOverlays=null,this.lastCustomLayoutResult=null,this.lastCustomLayoutFailure=null,this._customRestyle=void 0,this.hasCustomRestyle=!1,this._baseStyles=new WeakMap,this.spatialIndex.clear(),this._colorMapCache=null,this._groupDataCache=null,this._groupColorMap=new Map,this._groupColorCounter=0,this._barCategoryCache=null,this._binBoundaries=[],this._stackExtentCache=null,this.version++,this.updateResults.recordData("clear")}get size(){return this.buffer.size}getBuffer(){return this.buffer}getXAccessor(){return this.getX}getYAccessor(){return this.getY}getCategoryAccessor(){return this.getCategory}applyCustomRestyle(t,e){const i=this._customRestyle;if(i)for(const o of t){const t=this._baseStyles.get(o)??o.style??{},s=i(o,e);o.style=s?{...t,...s}:t}}restyleScene(t){this._customRestyle?(this.applyCustomRestyle(this.scene,t),this.markStylePaintPending(),this.updateResults.recordRestyle(!0)):this.updateResults.recordRestyle(!1)}updateConfig(t){const e={...this.config},i=Object.keys(t).filter(i=>t[i]!==e[i]);"production"!==process.env.NODE_ENV&&!this.windowSizeWarned&&"windowSize"in t&&t.windowSize!==e.windowSize&&(this.windowSizeWarned=!0,console.warn(`[Semiotic] windowSize changed after mount (${e.windowSize} → ${t.windowSize}) but it is a mount-only setting — the ring buffer keeps its original capacity. Remount the chart (e.g. via a React key) to apply a new windowSize.`)),("colorScheme"in t||"themeCategorical"in t||"colorAccessor"in t)&&(this._colorMapCache=null,this._groupColorMap=new Map,this._groupColorCounter=0),("barColors"in t||"colorScheme"in t)&&(this._barCategoryCache=null),("normalize"in t||"extentPadding"in t||"xAccessor"in t||"yAccessor"in t||"timeAccessor"in t||"valueAccessor"in t||"boundsAccessor"in t||"band"in t||"y0Accessor"in t||"openAccessor"in t||"highAccessor"in t||"lowAccessor"in t||"closeAccessor"in t||"groupAccessor"in t||"categoryAccessor"in t||"chartType"in t||"runtimeMode"in t)&&(this._stackExtentCache=null);let o=!1,n=!1;Object.assign(this.config,t),"pulse"in t&&this.syncPulseTimestampBuffer();const r="chartType"in t&&t.chartType!==e.chartType||"runtimeMode"in t&&t.runtimeMode!==e.runtimeMode;if(r||"xAccessor"in t||"yAccessor"in t||"timeAccessor"in t||"valueAccessor"in t){const t=["bar","swarm","waterfall"].includes(this.config.chartType)||"streaming"===this.config.runtimeMode,i=t&&this.config.valueAccessor||this.config.yAccessor,a=t&&e.valueAccessor||e.yAccessor,l=r||!s(t&&this.config.timeAccessor||this.config.xAccessor,t&&e.timeAccessor||e.xAccessor),c=r||!s(i,a);(l||c)&&(t?(this.getX=y(this.config.timeAccessor||this.config.xAccessor,"time"),this.getY=y(this.config.valueAccessor||this.config.yAccessor,"value")):(this.getX=y(this.config.xAccessor,"x"),this.getY=y(this.config.yAccessor,"y")),c&&this.resolvedRibbons.some(t=>"bounds"===t.kind)&&(this.resolvedRibbons=De(this.config)),o=!0,n=!0)}if("groupAccessor"in t&&!s(t.groupAccessor,e.groupAccessor)&&(this.getGroup=null!=this.config.groupAccessor?b(this.config.groupAccessor):void 0,o=!0),"categoryAccessor"in t&&!s(t.categoryAccessor,e.categoryAccessor)&&(this.getCategory=null!=this.config.categoryAccessor?b(this.config.categoryAccessor):void 0,o=!0),"sizeAccessor"in t&&!s(t.sizeAccessor,e.sizeAccessor)&&(this.getSize=this.config.sizeAccessor?y(this.config.sizeAccessor,"size"):void 0,o=!0),"symbolAccessor"in t&&!s(t.symbolAccessor,e.symbolAccessor)&&(this.getSymbol=null!=this.config.symbolAccessor?b(this.config.symbolAccessor):void 0,o=!0),"colorAccessor"in t&&!s(t.colorAccessor,e.colorAccessor)&&(this.getColor=null!=this.config.colorAccessor?b(this.config.colorAccessor):void 0,o=!0),"y0Accessor"in t&&!s(t.y0Accessor,e.y0Accessor)&&(this.getY0=this.config.y0Accessor?y(this.config.y0Accessor,"y0"):void 0,o=!0,n=!0),("boundsAccessor"in t&&!s(t.boundsAccessor,e.boundsAccessor)||"band"in t&&t.band!==e.band||"boundsStyle"in t&&t.boundsStyle!==e.boundsStyle)&&(this.resolvedRibbons=De(this.config),o=!0,n=!0),"pointIdAccessor"in t&&!s(t.pointIdAccessor,e.pointIdAccessor)&&(this.getPointId=null!=this.config.pointIdAccessor?b(this.config.pointIdAccessor):void 0,o=!0),"candlestick"===this.config.chartType&&(r||"openAccessor"in t&&!s(t.openAccessor,e.openAccessor)||"closeAccessor"in t&&!s(t.closeAccessor,e.closeAccessor)||"highAccessor"in t&&!s(t.highAccessor,e.highAccessor)||"lowAccessor"in t&&!s(t.lowAccessor,e.lowAccessor))){const t=null!=this.config.openAccessor,e=null!=this.config.closeAccessor;this.getOpen=t?y(this.config.openAccessor,"open"):void 0,this.getHigh=y(this.config.highAccessor,"high"),this.getLow=y(this.config.lowAccessor,"low"),this.getClose=e?y(this.config.closeAccessor,"close"):void 0,this.config.candlestickRangeMode=!t&&!e,o=!0,n=!0}if("accessorRevision"in t&&t.accessorRevision!==e.accessorRevision&&(o=!0,n=!0),!o){const i=Object.keys(t).filter(t=>!t.endsWith("Accessor")&&"timeAccessor"!==t&&"valueAccessor"!==t);for(const s of i)if(t[s]!==e[s]){o=!0;break}}o&&(n&&this.rebuildExtents(),this.needsFullRebuild=!0),this.updateResults.recordConfig(i)}updateConfigWithResult(t){return this.updateConfig(t),this.updateResults.last}};oi.GROUP_COLOR_MAP_CAP=1e3;var si=oi;G(si);import{line as ni}from"d3-shape";var ri=new WeakMap;function ai(t,e){const i=qt(e);if(!i)return t;const o=ri.get(t);if(o)return o;const s=function(t,e,i=8){if(!e||2>t.length)return t.map(([t,e])=>[t,e]);const o=[];let s=null;const n={moveTo(t,e){s=[t,e],o.push([t,e])},lineTo(t,e){s=[t,e],o.push([t,e])},bezierCurveTo(t,e,n,r,a,l){if(!s)return s=[a,l],void o.push([a,l]);const[c,h]=s;for(let s=1;i>=s;s++){const u=s/i,g=1-u;o.push([g*g*g*c+3*g*g*u*t+3*g*u*u*n+u*u*u*a,g*g*g*h+3*g*g*u*e+3*g*u*u*r+u*u*u*l])}s=[a,l]},closePath(){},arc(){},rect(){},arcTo(){},quadraticCurveTo(t,e,i,n){s=[i,n],o.push([i,n])}};return ni().x(t=>t[0]).y(t=>t[1]).curve(e).context(n)(t),o}(t,i);return ri.set(t,s),s}function li(t,e,i,o=30,s,n=0){let r=null;if(s){const t=U(s,e,i,o,n);t&&(r={node:t.node,datum:t.node.datum,x:t.node.x,y:t.node.y,distance:t.distance})}for(const n of t){let t=null;switch(n.type){case"point":if(s)break;t=hi(n,e,i,o);break;case"symbol":t=ui(n,e,i,o);break;case"glyph":t=gi(n,e,i,o);break;case"line":t=di(n,e,i,o);break;case"rect":if(null==n.datum)break;t=pi(n,e,i);break;case"heatcell":t=yi(n,e,i);break;case"area":if(!1===n.interactive)break;t=xi(n,e,i);break;case"candlestick":t=mi(n,e,i)}t&&o>t.distance&&(r&&t.distance>=r.distance||(r=t))}return r}function ci(t,e,i){if(0===t.length)return null;if(t[0][0]>e||e>t[t.length-1][0])return null;const o=vi(t,e);if(0>o)return null;if(Math.abs(t[o][0]-e)>i)return null;let s=o,n=o;o>0&&t[o][0]>=e?(s=o-1,n=o):t.length-1>o&&(s=o,n=o+1);const[r,a]=t[s],[l,c]=t[n];return l===r?a:a+Math.max(0,Math.min(1,(e-r)/(l-r)))*(c-a)}function hi(t,e,i,o=30){const s=e-t.x,n=i-t.y,r=Math.sqrt(s*s+n*n);return r>K(t.r,o)?null:{node:t,datum:t.datum,x:t.x,y:t.y,distance:r}}function ui(t,e,i,o=30){const s=e-t.x,n=i-t.y,r=Math.sqrt(s*s+n*n);return r>K(Kt(t.size),o)?null:{node:t,datum:t.datum,x:t.x,y:t.y,distance:r}}function gi(t,e,i,o=30){if(null==t.datum)return null;const s=re(t.glyph,t.size),n=t.x+s.centerDx,r=t.y+s.centerDy,a=e-n,l=i-r,c=Math.sqrt(a*a+l*l);return c>K(s.radius,o)?null:{node:t,datum:t.datum,x:n,y:r,distance:c}}function di(t,e,i,o=30){if(0===t.path.length)return null;const s=vi(t.path,e);if(0>s)return null;const[n,r]=t.path[s];let a;if(t.path.length>1){let o=1/0;const n=Math.max(0,s-1),r=Math.min(t.path.length-2,s);for(let s=n;r>=s;s++){const[n,r]=t.path[s],[a,l]=t.path[s+1],c=fi(e,i,n,r,a,l);o>c&&(o=c)}a=o}else{const t=e-n,o=i-r;a=Math.sqrt(t*t+o*o)}const l=t.style;return a>Math.max(5,(l.strokeWidth??l.lineWidth??1)/2+2,o)?null:{node:t,datum:Array.isArray(t.datum)&&t.datum[s]?t.datum[s]:t.datum,x:n,y:r,distance:a}}function fi(t,e,i,o,s,n){const r=s-i,a=n-o,l=r*r+a*a;if(0===l)return Math.sqrt((t-i)**2+(e-o)**2);let c=((t-i)*r+(e-o)*a)/l;return c=Math.max(0,Math.min(1,c)),Math.sqrt((t-(i+c*r))**2+(e-(o+c*a))**2)}function pi(t,e,i){const o=J(e,i,t);return o.hit?{node:t,datum:t.datum,x:o.cx,y:o.cy,distance:0}:null}function yi(t,e,i){const o=J(e,i,t);return o.hit?{node:t,datum:t.datum,x:o.cx,y:o.cy,distance:0}:null}function mi(t,e,i){const o=t.bodyWidth/2,s=Math.min(t.openY,t.closeY);if(!(t.x-o-3>e||e>t.x+o+3||t.highY-3>i||i>t.lowY+3)){const o=s+Math.max(Math.max(t.openY,t.closeY)-s,1)/2,n=e-t.x,r=i-o;return{node:t,datum:t.datum,x:t.x,y:o,distance:Math.sqrt(n*n+r*r)}}return null}function xi(t,e,i){if(0===t.topPath.length)return null;const o=vi(t.topPath,e);if(0>o)return null;const[s,n]=t.topPath[o],r=e-s,a=i-n,l=Math.sqrt(r*r+a*a);return{node:t,datum:Array.isArray(t.datum)&&t.datum[o]?t.datum[o]:t.datum,x:s,y:n,distance:l}}function vi(t,e){if(0===t.length)return-1;let i=0,o=t.length-1;for(;o>i;){const s=i+o>>1;e>t[s][0]?i=s+1:o=s}return i>0&&Math.abs(t[i][0]-e)>=Math.abs(t[i-1][0]-e)?i-1:i}import{useMemo as bi,useRef as ki,useEffect as wi}from"react";import{useMemo as Ai}from"react";import{bin as _i}from"d3-array";import{jsx as Ci,jsxs as Si}from"react/jsx-runtime";function Mi(t){return"string"==typeof t?{type:t}:t}function Pi({orient:t,config:e,values:i,scale:o,size:s,length:n}){const r=function(t){return{type:t.type,bins:t.bins??20,fill:t.fill??"#4e79a7",fillOpacity:t.fillOpacity??.5,stroke:t.stroke??"none",strokeWidth:t.strokeWidth??1}}(e),a="top"===t||"bottom"===t,l=Ai(()=>{if(0===i.length)return null;const e=o.domain(),l=s-8;if("boxplot"===r.type){const e=function(t){const e=[...t].sort((t,e)=>t-e),i=e.length;if(0===i)return null;const o=e[Math.floor(.25*i)],s=e[Math.floor(.5*i)],n=e[Math.floor(.75*i)],r=n-o;return{q1:o,median:s,q3:n,whiskerLow:Math.max(e[0],o-1.5*r),whiskerHigh:Math.min(e[i-1],n+1.5*r)}}(i);if(!e)return null;const{q1:s,median:n,q3:c,whiskerLow:h,whiskerHigh:u}=e,g=Math.min(.5*l,20),d=(l-g)/2+4;if(a){const e=o(s),i=o(c),a=o(n),l=o(h),f=o(u),p="top"===t?-1:1,y=0;return Si("g",{"data-testid":"marginal-boxplot-"+t,children:[Ci("line",{x1:l,y1:y+p*(d+g/2),x2:f,y2:y+p*(d+g/2),stroke:r.fill,strokeWidth:r.strokeWidth}),Ci("line",{x1:l,y1:y+p*d,x2:l,y2:y+p*(d+g),stroke:r.fill,strokeWidth:r.strokeWidth}),Ci("line",{x1:f,y1:y+p*d,x2:f,y2:y+p*(d+g),stroke:r.fill,strokeWidth:r.strokeWidth}),Ci("rect",{x:Math.min(e,i),y:"top"===t?y-d-g:y+d,width:Math.abs(i-e),height:g,fill:r.fill,fillOpacity:r.fillOpacity,stroke:"none"===r.stroke?r.fill:r.stroke,strokeWidth:r.strokeWidth}),Ci("line",{x1:a,y1:"top"===t?y-d-g:y+d,x2:a,y2:"top"===t?y-d:y+d+g,stroke:r.fill,strokeWidth:2})]})}{const e=o(s),i=o(c),a=o(n),l=o(h),f=o(u),p="left"===t?-1:1,y=0;return Si("g",{"data-testid":"marginal-boxplot-"+t,children:[Ci("line",{x1:y+p*(d+g/2),y1:l,x2:y+p*(d+g/2),y2:f,stroke:r.fill,strokeWidth:r.strokeWidth}),Ci("line",{x1:y+p*d,y1:l,x2:y+p*(d+g),y2:l,stroke:r.fill,strokeWidth:r.strokeWidth}),Ci("line",{x1:y+p*d,y1:f,x2:y+p*(d+g),y2:f,stroke:r.fill,strokeWidth:r.strokeWidth}),Ci("rect",{x:"left"===t?y-d-g:y+d,y:Math.min(e,i),width:g,height:Math.abs(i-e),fill:r.fill,fillOpacity:r.fillOpacity,stroke:"none"===r.stroke?r.fill:r.stroke,strokeWidth:r.strokeWidth}),Ci("line",{x1:"left"===t?y-d-g:y+d,y1:a,x2:"left"===t?y-d:y+d+g,y2:a,stroke:r.fill,strokeWidth:2})]})}}const c=_i().domain(e).thresholds(r.bins)(i);if(0===c.length)return null;const h=se(c.map(t=>t.length));if(0===h)return null;if("histogram"===r.type)return Ci("g",{"data-testid":"marginal-histogram-"+t,children:c.map((e,i)=>{if(null==e.x0||null==e.x1)return null;const s=e.length/h*l;if(a){const n=o(e.x0),a=o(e.x1)-o(e.x0);return Ci("rect",{x:n,y:"top"===t?-4-s:4,width:Math.max(a,.5),height:s,fill:r.fill,fillOpacity:r.fillOpacity,stroke:r.stroke,strokeWidth:r.strokeWidth},i)}{const n=o(e.x0),a=o(e.x1)-o(e.x0);return Ci("rect",{x:"left"===t?-4-s:4,y:Math.min(n,n+a),width:s,height:Math.abs(a),fill:r.fill,fillOpacity:r.fillOpacity,stroke:r.stroke,strokeWidth:r.strokeWidth},i)}})});if("violin"===r.type){const e=l/2+4,i=[];for(const s of c){if(null==s.x0||null==s.x1)continue;const n=s.length/h*(l/2),r=o((s.x0+s.x1)/2);i.push(a?`${r},${"top"===t?-(e-n):e-n}`:`${"left"===t?-(e-n):e-n},${r}`)}for(let s=c.length-1;s>=0;s--){const n=c[s];if(null==n.x0||null==n.x1)continue;const r=n.length/h*(l/2),u=o((n.x0+n.x1)/2);i.push(a?`${u},${"top"===t?-(e+r):e+r}`:`${"left"===t?-(e+r):e+r},${u}`)}return Ci("g",{"data-testid":"marginal-violin-"+t,children:Ci("polygon",{points:i.join(" "),fill:r.fill,fillOpacity:r.fillOpacity,stroke:"none"===r.stroke?r.fill:r.stroke,strokeWidth:r.strokeWidth})})}if("ridgeline"===r.type){const e=[];if(a){const i=0,s=null!=c[0].x0?o(c[0].x0):0;e.push(`M${s},${i}`);for(const i of c){if(null==i.x0||null==i.x1)continue;const s=i.length/h*l,n=o((i.x0+i.x1)/2);e.push(`L${n},${"top"===t?-s-4:s+4}`)}const r=null!=c[c.length-1].x1?o(c[c.length-1].x1):n;e.push(`L${r},${i}`),e.push("Z")}else{const i=0,s=null!=c[0].x0?o(c[0].x0):0;e.push(`M${i},${s}`);for(const i of c){if(null==i.x0||null==i.x1)continue;const s=i.length/h*l,n=o((i.x0+i.x1)/2);e.push(`L${"left"===t?-s-4:s+4},${n}`)}const r=null!=c[c.length-1].x1?o(c[c.length-1].x1):n;e.push(`L${i},${r}`),e.push("Z")}return Ci("g",{"data-testid":"marginal-ridgeline-"+t,children:Ci("path",{d:e.join(" "),fill:r.fill,fillOpacity:r.fillOpacity,stroke:"none"===r.stroke?r.fill:r.stroke,strokeWidth:r.strokeWidth})})}return null},[i,o,r,s,n,t,a,4]);return l?Ci("g",{className:"marginal-"+t,"data-testid":"marginal-"+t,children:l}):null}function Yi(t,e,i){if("edges"===t){if(e)return"start";if(i)return"end"}return"middle"}function Ri(t,e,i){if("edges"===t){if(e)return"hanging";if(i)return"auto"}return"middle"}function Ti(t){if(0===t.length)return{min:null,max:null};let e=1/0,i=-1/0;for(const o of t)e>o.pixel&&(e=o.pixel),o.pixel>i&&(i=o.pixel);return{min:e,max:i}}function Ni(t){if(t)return"dashed"===t?"6,4":"dotted"===t?"2,4":t}function Oi(t,e,i){if("left"===t||"right"===t){const o="left"===t?i:0,s="left"===t?-1:1,n=Math.ceil(e/8);let r="M0,"+o;for(let t=0;n>t;t++){const i=8*(t+1);r+=`L${Math.min(8*t+4,e)},${o+4*s}`,r+=`L${Math.min(i,e)},${o}`}return r}const o="bottom"===t?0:e,s="bottom"===t?1:-1,n=Math.ceil(i/8);let r=`M${o},0`;for(let t=0;n>t;t++){const e=8*(t+1);r+=`L${o+4*s},${Math.min(8*t+4,i)}`,r+=`L${o},${Math.min(e,i)}`}return r}import{Fragment as Wi,jsx as Di,jsxs as Ei}from"react/jsx-runtime";function zi(t){const{width:e,height:i,totalWidth:o,totalHeight:s,margin:n,scales:r,showAxes:a,axes:l,showGrid:c,xFormat:h,yFormat:u,axisExtent:g}=t,d=bi(()=>{if(!r)return[];const t=l?.find(t=>"bottom"===t.orient),i=t?.tickFormat||h||Li,o=Math.max(2,Math.floor(e/70)),s=t?.ticks??5,n="exact"===g?Math.max(2,s):Math.min(s,o),a=t?.tickValues??w(r.x,n,g),c=a.map(t=>t.valueOf()),u=a.map((t,e)=>({value:t,pixel:r.x(t),label:i(t,e,c)})),d=u.reduce((t,e)=>Math.max(t,"string"==typeof e.label?6.5*e.label.length:"number"==typeof e.label?6.5*(e.label+"").length:60),0);return Fi(u,Math.max(55,d+8))},[r,l,h,e,g]),f=bi(()=>{if(!r)return[];const t=l?.find(t=>"left"===t.orient),e=t?.tickFormat||u||Li,o=Math.max(2,Math.floor(i/30)),s=t?.ticks??5,n="exact"===g?Math.max(2,s):Math.min(s,o);return Fi((t?.tickValues??w(r.y,n,g)).map(t=>({value:t,pixel:r.y(t),label:e(t)})),22)},[r,l,u,i,g]),p=c&&r,y=a&&r;if(!p&&!y)return null;const m=l?.find(t=>"bottom"===t.orient),x=l?.find(t=>"left"===t.orient),v=y&&(!m||!1!==m.baseline),b=y&&(!x||!1!==x.baseline),k=m?.jaggedBase||!1,A=x?.jaggedBase||!1,_="var(--semiotic-border, #ccc)";return Di("svg",{width:o,height:s,style:{position:"absolute",top:0,left:0,pointerEvents:"none"},children:Ei("g",{transform:`translate(${n.left},${n.top})`,children:[p&&(()=>{const t=Ni(l?.find(t=>"bottom"===t.orient)?.gridStyle),o=Ni(l?.find(t=>"left"===t.orient)?.gridStyle);return Ei("g",{className:"stream-grid",children:[d.map((e,o)=>Di("line",{x1:e.pixel,y1:0,x2:e.pixel,y2:i,stroke:"var(--semiotic-grid, #e0e0e0)",strokeWidth:1,strokeDasharray:t},"xgrid-"+o)),f.map((t,i)=>Di("line",{x1:0,y1:t.pixel,x2:e,y2:t.pixel,stroke:"var(--semiotic-grid, #e0e0e0)",strokeWidth:1,strokeDasharray:o},"ygrid-"+i))]})})(),v&&!k&&Di("line",{x1:0,y1:i,x2:e,y2:i,stroke:_,strokeWidth:1}),k&&Di("path",{d:Oi("bottom",e,i),fill:"none",stroke:_,strokeWidth:1}),b&&!A&&Di("line",{x1:0,y1:0,x2:0,y2:i,stroke:_,strokeWidth:1}),A&&Di("path",{d:Oi("left",e,i),fill:"none",stroke:_,strokeWidth:1})]})})}function Li(t,e,i){return t instanceof Date?`${t.toLocaleString("en",{month:"short"})} ${t.getDate()}`:"number"==typeof t?Math.round(100*t)/100+"":t+""}function Fi(t,e){if(2>=t.length)return t;const i=[t[0]];for(let o=1;t.length-1>o;o++)e>Math.abs(t[o].pixel-i[i.length-1].pixel)||i.push(t[o]);const o=t[t.length-1];return e>Math.abs(o.pixel-i[i.length-1].pixel)?i[i.length-1]=o:i.push(o),i}function Bi(t){const{width:e,height:i,totalWidth:o,totalHeight:s,margin:n,scales:r,showAxes:a,axes:l,xLabel:c,yLabel:h,yLabelRight:u,xFormat:g,yFormat:d,axisExtent:f,showGrid:p,title:y,legend:m,legendHoverBehavior:x,legendClickBehavior:v,legendHighlightedCategory:b,legendIsolatedCategories:k,legendPosition:A="right",legendLayout:_,foregroundGraphics:C,marginalGraphics:S,xValues:M,yValues:P,annotations:Y,onAnnotationActivate:R,onObservation:T,chartId:N,chartType:O,autoPlaceAnnotations:W,svgAnnotationRules:D,xAccessor:E,yAccessor:z,annotationData:L,pointNodes:F,curve:B,underlayRendered:I,canvasObscuresUnderlay:X=!0,linkedCrosshairName:$,linkedCrosshairSourceId:G,children:V}=t,H=Jt({onAnnotationActivate:R,onObservation:T,chartId:N,chartType:O}),j=bi(()=>{if(!a||!r)return[];const t=l?.find(t=>"bottom"===t.orient),i=t?.tickFormat||g||Li,o=Math.max(2,Math.floor(e/70)),s=t?.ticks??5,n="exact"===f?Math.max(2,s):Math.min(s,o),c=t?.tickValues??w(r.x,n,f),h=c.map(t=>t.valueOf()),u=c.map((t,e)=>({value:t,pixel:r.x(t),label:i(t,e,h)})),d=u.reduce((t,e)=>Math.max(t,"string"==typeof e.label?6.5*e.label.length:"number"==typeof e.label?6.5*(e.label+"").length:60),0),p=t?.autoRotate?Math.max(20,Math.min(d+8,55)):Math.max(55,d+8);let y=Fi(u,p);if(y.length>1&&(y=y.filter((t,e)=>0===e||t.label+""!=y[e-1].label+"")),t?.includeMax&&y.length>0&&"exact"!==f&&!t?.tickValues){const t=r.x.domain()[1],e=r.x(t),o=y[y.length-1].pixel;if(Math.abs(e-o)>1){const s=i(t,y.length,h);p>e-o&&y.length>1&&(y=y.slice(0,-1)),y.push({value:t,pixel:e,label:s})}}return y},[a,r,l,g,e,f]),q=bi(()=>{if(!a||!r)return[];const t=l?.find(t=>"left"===t.orient),e=t?.tickFormat||d||Li,o=Math.max(2,Math.floor(i/30)),s=t?.ticks??5,n="exact"===f?Math.max(2,s):Math.min(s,o);let c=Fi((t?.tickValues??w(r.y,n,f)).map(t=>({value:t,pixel:r.y(t),label:e(t)})),22);if(c.length>1&&(c=c.filter((t,e)=>0===e||t.label+""!=c[e-1].label+"")),t?.includeMax&&c.length>0&&"exact"!==f&&!t?.tickValues){const t=r.y.domain()[1],i=r.y(t),o=c[c.length-1].pixel;if(Math.abs(i-o)>1){const s=e(t);22>Math.abs(i-o)&&c.length>1&&(c=c.slice(0,-1)),c.push({value:t,pixel:i,label:s})}}return c},[a,r,l,d,i,f]),U=bi(()=>{if(!a||!r)return[];const t=l?.find(t=>"right"===t.orient);if(!t)return[];const e=t.tickFormat||d||Li,o=Math.max(2,Math.floor(i/30)),s=t.ticks??5;return Fi((t.tickValues??w(r.y,"exact"===f?Math.max(2,s):Math.min(s,o),f)).map(t=>({value:t,pixel:r.y(t),label:e(t)})),22)},[a,r,l,d,i,f]),K=ki(new Map),Z=ki(Y?.length??0),J=Y?.length??0;Z.current!==J&&(Z.current=J,K.current=new Map);const tt=bi(()=>{if(!Y||0===Y.length)return null;const t=Tt("xy",H),o={scales:r?{x:r.x,y:r.y,time:r.x,value:r.y}:null,timeAxis:"x",xAccessor:E,yAccessor:z,width:e,height:i,data:L,frameType:"xy",pointNodes:F,curve:B,stickyPositionCache:K.current},s=W?_t({annotations:Y,context:o,..."object"==typeof W?W:{}}):Y;return Gt(s,t,D,o)},[Y,W,D,e,i,E,z,L,r,F,B,H]),et=Qt($);return wi(()=>{if(!et?.locked||!$)return;const t=t=>{"Escape"===t.key&&Zt($)};return document.addEventListener("keydown",t),()=>document.removeEventListener("keydown",t)},[et?.locked,$]),a||y||m||C||S||tt&&tt.length>0||p||V||et?Ei("svg",{role:"img",width:o,height:s,overflow:"visible",style:{position:"absolute",top:0,left:0,pointerEvents:"none",overflow:"visible"},children:[Di("title",{children:"string"==typeof y?y:"XY Chart"}),Di("desc",{children:"string"==typeof y?y+" (XY data visualization)":"XY data visualization"}),Ei("g",{transform:`translate(${n.left},${n.top})`,children:[p&&r&&(!I||X)&&(()=>{const t=Ni(l?.find(t=>"bottom"===t.orient)?.gridStyle),o=Ni(l?.find(t=>"left"===t.orient)?.gridStyle);return Ei("g",{className:"stream-grid",children:[j.map((e,o)=>Di("line",{x1:e.pixel,y1:0,x2:e.pixel,y2:i,stroke:"var(--semiotic-grid, #e0e0e0)",strokeWidth:1,strokeDasharray:t},"xgrid-"+o)),q.map((t,i)=>Di("line",{x1:0,y1:t.pixel,x2:e,y2:t.pixel,stroke:"var(--semiotic-grid, #e0e0e0)",strokeWidth:1,strokeDasharray:o},"ygrid-"+i))]})})(),a&&r&&(()=>{const t=l?.find(t=>"left"===t.orient),o=l?.find(t=>"bottom"===t.orient),s=!t||!1!==t.baseline,r=!o||!1!==o.baseline,a=t?.jaggedBase||!1,g=o?.jaggedBase||!1,d=o?.landmarkTicks,f=t?.landmarkTicks,p="var(--semiotic-border, #ccc)",y="var(--semiotic-text-secondary, var(--semiotic-text, #666))",m="var(--semiotic-text, #333)",x=!!o?.autoRotate&&j.length>1&&(()=>{const t=e/Math.max(j.length-1,1);return j.reduce((t,e)=>Math.max(t,"string"==typeof e.label?6.5*e.label.length:60),0)+8>t})(),v=x?12:18,b=i+(x?58:40),k={fontSize:"var(--semiotic-tick-font-size, 12px)"},w={fontSize:"calc(var(--semiotic-tick-font-size, 12px) + 1px)"},A={fontSize:"var(--semiotic-axis-label-font-size, 12px)"},_=o?.tickAnchor,C=t?.tickAnchor,S=Ti(j),M=Ti(q);return Ei("g",{className:"stream-axes",style:{fontFamily:"var(--semiotic-font-family, sans-serif)"},children:[Ei("g",{className:"semiotic-axis semiotic-axis-bottom","data-orient":"bottom",children:[(!I||X)&&r&&!g&&Di("line",{x1:0,y1:i,x2:e,y2:i,stroke:p,strokeWidth:1}),(!I||X)&&g&&Di("path",{d:Oi("bottom",e,i),fill:"none",stroke:p,strokeWidth:1}),j.map((t,e)=>{const o=!!d&&("function"==typeof d?d(t.value,e):Q(t.value,e>0?j[e-1].value:void 0));return Ei("g",{transform:`translate(${t.pixel},${i})`,children:[Di("line",{y2:5,stroke:p,strokeWidth:1}),"string"==typeof t.label||"number"==typeof t.label?Di("text",{y:v,textAnchor:x?"end":Yi(_,t.pixel===S.min,t.pixel===S.max),fontWeight:o?600:400,fill:y,className:"semiotic-axis-tick",style:{userSelect:"none",...o?w:k},transform:x?"rotate(-45)":void 0,children:t.label}):Di("foreignObject",{x:-30,y:6,width:60,height:24,style:{overflow:"visible"},children:Di("div",{style:{textAlign:"center",userSelect:"none",...k},children:t.label})})]},"xtick-"+e)}),c&&Di("text",{x:e/2,y:b,textAnchor:"middle",fill:m,className:"semiotic-axis-label",style:{userSelect:"none",...A},children:c})]}),Ei("g",{className:"semiotic-axis semiotic-axis-left","data-orient":"left",children:[(!I||X)&&s&&!a&&Di("line",{x1:0,y1:0,x2:0,y2:i,stroke:p,strokeWidth:1}),(!I||X)&&a&&Di("path",{d:Oi("left",e,i),fill:"none",stroke:p,strokeWidth:1}),q.map((t,e)=>{const i=!!f&&("function"==typeof f?f(t.value,e):Q(t.value,e>0?q[e-1].value:void 0));return Ei("g",{transform:`translate(0,${t.pixel})`,children:[Di("line",{x2:-5,stroke:p,strokeWidth:1}),"string"==typeof t.label||"number"==typeof t.label?Di("text",{x:-8,textAnchor:"end",dominantBaseline:Ri(C,t.pixel===M.min,t.pixel===M.max),fontWeight:i?600:400,fill:y,className:"semiotic-axis-tick",style:{userSelect:"none",...i?w:k},children:t.label}):Di("foreignObject",{x:-68,y:-12,width:60,height:24,style:{overflow:"visible"},children:Di("div",{style:{textAlign:"right",userSelect:"none",...k},children:t.label})})]},"ytick-"+e)}),(()=>{const e=t?.label||h;return e?Di("text",{x:15-n.left,y:i/2,textAnchor:"middle",fill:m,transform:`rotate(-90, ${15-n.left}, ${i/2})`,className:"semiotic-axis-label",style:{userSelect:"none",...A},children:e}):null})()]}),(()=>{const t=l?.find(t=>"right"===t.orient);if(!t||0===U.length)return null;const o=!1!==t.baseline,s=t.landmarkTicks,r=t.label||u,a=t.tickAnchor,c=Ti(U);return Ei("g",{className:"semiotic-axis semiotic-axis-right","data-orient":"right",children:[o&&Di("line",{x1:e,y1:0,x2:e,y2:i,stroke:p,strokeWidth:1}),U.map((t,i)=>{const o=!!s&&("function"==typeof s?s(t.value,i):Q(t.value,i>0?U[i-1].value:void 0));return Ei("g",{transform:`translate(${e},${t.pixel})`,children:[Di("line",{x2:5,stroke:p,strokeWidth:1}),"string"==typeof t.label||"number"==typeof t.label?Di("text",{x:8,textAnchor:"start",dominantBaseline:Ri(a,t.pixel===c.min,t.pixel===c.max),fontWeight:o?600:400,fill:y,className:"semiotic-axis-tick",style:{userSelect:"none",...o?w:k},children:t.label}):Di("foreignObject",{x:8,y:-12,width:60,height:24,style:{overflow:"visible"},children:Di("div",{style:{textAlign:"left",userSelect:"none",...k},children:t.label})})]},"ytick-r-"+i)}),r&&Di("text",{x:e+n.right-15,y:i/2,textAnchor:"middle",fill:m,transform:`rotate(90, ${e+n.right-15}, ${i/2})`,className:"semiotic-axis-label",style:{userSelect:"none",...A},children:r})]})})()]})})(),tt,S&&r&&M&&P&&Ei(Wi,{children:[S.top&&Di("g",{transform:"translate(0, 0)",children:Di(Pi,{orient:"top",config:Mi(S.top),values:M,scale:r.x,size:n.top,length:e})}),S.bottom&&Di("g",{transform:`translate(0, ${i})`,children:Di(Pi,{orient:"bottom",config:Mi(S.bottom),values:M,scale:r.x,size:n.bottom,length:e})}),S.left&&Di("g",{transform:"translate(0, 0)",children:Di(Pi,{orient:"left",config:Mi(S.left),values:P,scale:r.y,size:n.left,length:i})}),S.right&&Di("g",{transform:`translate(${e}, 0)`,children:Di(Pi,{orient:"right",config:Mi(S.right),values:P,scale:r.y,size:n.right,length:i})})]}),C,et&&et.sourceId!==G&&r?.x&&(()=>{const t=r.x(et.xValue);if(null==t||0>t||t>e)return null;const o=et.locked;return Di("line",{x1:t,y1:0,x2:t,y2:i,stroke:o?"white":"var(--semiotic-text-secondary, rgba(0,0,0,0.25))",strokeWidth:o?1.5:1,strokeDasharray:o?"6,3":"4,4",pointerEvents:"none"})})(),V]}),y&&"string"==typeof y?Di("text",{x:o/2,y:wt,textAnchor:"middle",fontWeight:"bold",fill:"var(--semiotic-text, #333)",className:"semiotic-chart-title",style:{userSelect:"none",fontSize:"var(--semiotic-title-font-size, 14px)"},children:y}):y?Di("foreignObject",{x:0,y:0,width:o,height:n.top,children:y}):null,Vt({legend:m,totalWidth:o,totalHeight:s,margin:n,legendPosition:A,title:y,legendLayout:_,legendHoverBehavior:x,legendClickBehavior:v,legendHighlightedCategory:b,legendIsolatedCategories:k})]}):null}var Ii={axisStroke:"#ccc",tickText:"#666",crosshair:"rgba(0, 0, 0, 0.25)",hoverFill:"rgba(255, 255, 255, 0.3)",hoverStroke:"rgba(0, 0, 0, 0.4)",pointRing:"white",primary:"#007bff",background:""};function Xi(t,e){const i=t.trim();if(/^#[0-9a-f]{3}$/i.test(i)){const t=i[1],o=i[2],s=i[3];return`#${t}${t}${o}${o}${s}${s}${e}`}if(/^#[0-9a-f]{6}$/i.test(i))return`${i}${e}`;const o=i.match(/^rgb\s*\(\s*([^)]+?)\s*\)$/i);return o?`rgba(${o[1]}, ${(parseInt(e,16)/255).toFixed(3)})`:i}var $i=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],Gi=3156e7;function Vi(t){const e=t[1]-t[0];return 864e5>e?t=>{const e=new Date(t);return`${(e.getUTCHours()+"").padStart(2,"0")}:${(e.getUTCMinutes()+"").padStart(2,"0")}`}:Gi>e?t=>{const e=new Date(t);return`${$i[e.getUTCMonth()]} ${e.getUTCDate()}`}:5*Gi>e?t=>{const e=new Date(t);return`${$i[e.getUTCMonth()]} ${e.getUTCFullYear()}`}:t=>new Date(t).getUTCFullYear()+""}function Hi(t){if(!t)return;const e=[];for(const i of t)if("point"===i.type)e.push(i);else if("symbol"===i.type)e.push({pointId:i.pointId,x:i.x,y:i.y,r:Kt(i.size)});else if("glyph"===i.type){const t=re(i.glyph,i.size);e.push({pointId:i.pointId,x:i.x+t.centerDx,y:i.y+t.centerDy,r:t.radius})}return e}import{area as ji,line as qi}from"d3-shape";function Ui(t,e){const i=qt(e.curve);if(!i||2>e.topPath.length||2>e.bottomPath.length){t.beginPath(),t.moveTo(e.topPath[0][0],e.topPath[0][1]);for(let i=1;e.topPath.length>i;i++)t.lineTo(e.topPath[i][0],e.topPath[i][1]);for(let i=e.bottomPath.length-1;i>=0;i--)t.lineTo(e.bottomPath[i][0],e.bottomPath[i][1]);t.closePath()}else{const o=ji().x(t=>t[0]).y0((t,i)=>e.bottomPath[i][1]).y1(t=>t[1]).curve(i).context(t);t.beginPath(),o(e.topPath)}}var Ki=(t,e,i,o)=>{const s=e.filter(t=>"area"===t.type);for(const e of s){if(2>e.topPath.length)continue;let i=!1;e.clipRect&&(t.save(),t.beginPath(),t.rect(e.clipRect.x,e.clipRect.y,e.clipRect.width,e.clipRect.height),t.clip(),i=!0);const s=e._introClipFraction;void 0!==s&&1>s&&(t.save(),t.beginPath(),t.rect(0,0,o.width*s,o.height),t.clip());const n=jt(t,e.style.fill,"#4e79a7"),r=e._decayOpacities;if(r&&r.length===e.topPath.length){const i=e.style.fillOpacity??.7;t.fillStyle=n;for(let o=0;e.topPath.length-1>o;o++)t.globalAlpha=.5*(r[o]+r[o+1])*i,t.beginPath(),t.moveTo(e.topPath[o][0],e.topPath[o][1]),t.lineTo(e.topPath[o+1][0],e.topPath[o+1][1]),t.lineTo(e.bottomPath[o+1][0],e.bottomPath[o+1][1]),t.lineTo(e.bottomPath[o][0],e.bottomPath[o][1]),t.closePath(),t.fill();if(e.style.stroke&&"none"!==e.style.stroke){t.strokeStyle=Ht(t,e.style.stroke)||e.style.stroke,t.lineWidth=e.style.strokeWidth||2,t.setLineDash([]);for(let i=0;e.topPath.length-1>i;i++)t.globalAlpha=.5*(r[i]+r[i+1]),t.beginPath(),t.moveTo(e.topPath[i][0],e.topPath[i][1]),t.lineTo(e.topPath[i+1][0],e.topPath[i+1][1]),t.stroke()}t.globalAlpha=1;continue}const a=e.style.opacity??1;if(Ui(t,e),e.fillGradient&&("colorStops"in e.fillGradient&&e.fillGradient.colorStops.length>=2||"topOpacity"in e.fillGradient)&&e.fillGradient){let i=1/0;for(const t of e.topPath)i>t[1]&&(i=t[1]);let o=-1/0;for(const t of e.bottomPath)t[1]>o&&(o=t[1]);const s=Mt(t,e.fillGradient,"string"==typeof n?n:"#4e79a7",0,i,0,o);t.fillStyle=s||n,t.globalAlpha=a}else t.globalAlpha=(e.style.fillOpacity??.7)*a,t.fillStyle=n;if(t.fill(),e._pulseIntensity&&e._pulseIntensity>0&&(Ui(t,e),et(t,e)),e.style.stroke&&"none"!==e.style.stroke){t.globalAlpha=a;const i=e.strokeGradient&&e.topPath.length>=2?Ct(t,e.strokeGradient,e.topPath[0][0],0,e.topPath[e.topPath.length-1][0],0):null;t.strokeStyle=i||Ht(t,e.style.stroke)||e.style.stroke,t.lineWidth=e.style.strokeWidth||2,t.setLineDash([]);const o=qt(e.curve);if(t.beginPath(),o)qi().x(t=>t[0]).y(t=>t[1]).curve(o).context(t)(e.topPath);else{t.moveTo(e.topPath[0][0],e.topPath[0][1]);for(let i=1;e.topPath.length>i;i++)t.lineTo(e.topPath[i][0],e.topPath[i][1])}t.stroke()}void 0!==s&&1>s&&t.restore(),i&&t.restore(),t.globalAlpha=1}};function Zi(t){const[e,i,o]=function(t){if(t.startsWith("#")){let e=t.slice(1);if(3===e.length&&(e=e[0]+e[0]+e[1]+e[1]+e[2]+e[2]),6===e.length)return[parseInt(e.slice(0,2),16),parseInt(e.slice(2,4),16),parseInt(e.slice(4,6),16)]}const e=t.match(/rgba?\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)/);return e?[+e[1],+e[2],+e[3]]:[128,128,128]}(t);return.299*e+.587*i+.114*o>128?"#000":"#fff"}function Ji(t){return Number.isInteger(t)?t+"":100>Math.abs(t)?1>Math.abs(t)?t.toPrecision(3):t.toFixed(1):t.toFixed(0)}var Qi=(t,e,i,o)=>{const s=e.filter(t=>"heatcell"===t.type);t.save();try{for(const e of s){const i=e.style;if(null!=i?.opacity&&(t.globalAlpha=i.opacity),t.fillStyle=e.fill,t.fillRect(e.x,e.y,e.w,e.h),t.strokeStyle=Ht(t,"var(--semiotic-surface, #fff)"),t.lineWidth=1,t.strokeRect(e.x,e.y,e.w,e.h),it(t,e),t.globalAlpha=1,e.showValues&&null!=e.value){if(20>e.w||20>e.h)continue;const i=e.valueFormat?e.valueFormat(e.value):Ji(e.value),o=Math.max(10,Math.min(16,.3*Math.min(e.w,e.h))),s=e.x+e.w/2,n=e.y+e.h/2;t.fillStyle=Zi(e.fill),t.font=o+"px sans-serif",t.textAlign="center",t.textBaseline="middle",t.fillText(i,s,n)}}}finally{t.restore()}},to=(t,e,i,o)=>{for(const i of e){if("candlestick"!==i.type)continue;const e=i;t.save();const s=(e._decayOpacity??1)*(e.style?.opacity??1);1!==s&&(t.globalAlpha=s);const n=Ht(t,e.wickColor)||e.wickColor,r=60>o.height,a=r?Math.max(e.wickWidth,2):e.wickWidth,l=()=>{t.beginPath(),t.moveTo(e.x,e.highY),t.lineTo(e.x,e.lowY),t.strokeStyle=n,t.lineWidth=a,t.stroke()};if(r||l(),e.isRange){const i=Math.max(2,Math.min(e.bodyWidth/2,.12*o.height));t.fillStyle=n,t.beginPath(),t.arc(e.x,e.highY,i,0,2*Math.PI),t.fill(),t.beginPath(),t.arc(e.x,e.lowY,i,0,2*Math.PI),t.fill()}else if(e.bodyWidth>0){const i=Math.min(e.openY,e.closeY),o=Math.abs(e.openY-e.closeY),s=e.isUp?e.upColor:e.downColor,n=Ht(t,s)||s;t.fillStyle=n,t.fillRect(e.x-e.bodyWidth/2,i,e.bodyWidth,Math.max(o,1)),t.strokeStyle=n,t.lineWidth=1,t.strokeRect(e.x-e.bodyWidth/2,i,e.bodyWidth,Math.max(o,1))}r&&l(),t.restore()}},eo={line:[Ki,t,W],area:[Ki,W],stackedarea:[Ki,W],scatter:[W,k],bubble:[W,k],heatmap:[Qi],bar:[n],swarm:[W],waterfall:[(t,e,i,o)=>{n(t,e,i,o);const s=e.filter(t=>"rect"===t.type);if(2>s.length)return;const r=s[0].datum,a=r?._connectorStroke;if(a){t.save(),t.strokeStyle=Ht(t,a)||a,t.lineWidth=r?._connectorWidth??1,t.setLineDash([]);for(let e=0;s.length-1>e;e++){const o=s[e],n=s[e+1],r=o.datum,a=n.datum;if(null==r?.cumEnd||null==a?.baseline)continue;const l=i.y(r.cumEnd),c=o.x+o.w,h=n.x;t.beginPath(),t.moveTo(c,l),t.lineTo(h,l),t.stroke()}t.restore()}}],candlestick:[to],mixed:[Ki,t,W],custom:[Ki,n,Qi,t,W,k,Z,to]};import{jsx as io,jsxs as oo}from"react/jsx-runtime";function so(t){return null==t?"":"number"==typeof t?Number.isInteger(t)?t+"":t.toFixed(2):t instanceof Date?t.toLocaleString():t+""}function no({hover:t}){const e=t.data??{},i=e.y??e.value,o=e.x??e.time;if(void 0===i&&void 0===o){const t=Ut(e);if(null!=t.title||t.entries.length>0)return oo("div",{className:"semiotic-tooltip",style:Nt,children:[null!=t.title&&io("div",{style:{fontWeight:600,marginBottom:t.entries.length?2:0},children:t.title+""}),t.entries.map(t=>oo("div",{style:{opacity:.7,fontSize:11},children:[t.key,":"," ",io("span",{style:{fontWeight:600},children:so(t.value)})]},t.key))]})}return oo("div",{className:"semiotic-tooltip",style:Nt,children:[io("div",{style:{fontWeight:600,marginBottom:2},children:so(i)}),io("div",{style:{opacity:.7,fontSize:11},children:so(o)})]})}no.ownsChrome=!0;import{jsx as ro,jsxs as ao}from"react/jsx-runtime";var lo={top:20,right:20,bottom:30,left:40},co=Ii;function ho(t){if(t)return"x"===t.dimension?"pan-y":"y"===t.dimension?"pan-x":"none"}var uo=xe(me(function(t,o){const{chartType:s,runtimeMode:n,data:r,chunkThreshold:l,chunkSize:c,xAccessor:h,yAccessor:u,accessorRevision:g,colorAccessor:d,sizeAccessor:f,symbolAccessor:p,symbolMap:y,groupAccessor:v,lineDataAccessor:b,curve:k,normalize:w,baseline:A,stackOrder:_,binSize:C,valueAccessor:S,arrowOfTime:M="right",windowMode:P="sliding",windowSize:Y=200,timeAccessor:T,xExtent:N,yExtent:O,extentPadding:W=.1,scalePadding:D,sizeRange:$,size:G=[500,300],responsiveWidth:V,responsiveHeight:j,margin:q,className:U,background:K,renderMode:Z,lineStyle:J,pointStyle:Q,areaStyle:et,barStyle:it,waterfallStyle:ct,swarmStyle:yt,barColors:mt,colorScheme:xt,boundsAccessor:wt,boundsStyle:At,y0Accessor:_t,band:Ct,gradientFill:Mt,lineGradient:Yt,areaGroups:Rt,openAccessor:Tt,highAccessor:Nt,lowAccessor:zt,closeAccessor:Bt,candlestickStyle:It,showAxes:Gt=!0,axes:Vt,xLabel:Ht,yLabel:jt,yLabelRight:qt,xFormat:Ut,yFormat:Kt,axisExtent:Zt,tickFormatTime:Jt,tickFormatValue:Qt,hoverAnnotation:se,tooltipContent:re,customHoverBehavior:me,customClickBehavior:xe,onObservation:ve,annotationObservationCallback:be,chartId:ke,enableHover:we,hoverRadius:_e=30,tooltipMode:Ce,annotations:Se,onAnnotationActivate:Me,autoPlaceAnnotations:Pe,svgAnnotationRules:Ye,showGrid:Re,legend:Te,legendHoverBehavior:Ne,legendClickBehavior:Oe,legendHighlightedCategory:We,legendIsolatedCategories:De,legendPosition:Ee,legendLayout:ze,legendCategoryAccessor:Le,onCategoriesChange:Fe,backgroundGraphics:Be,foregroundGraphics:Ie,canvasPreRenderers:Xe,svgPreRenderers:$e,title:Ge,categoryAccessor:Ve,brush:He,onBrush:je,decay:qe,pulse:Ue,transition:Ke,animate:Ze,staleness:Je,frameScheduler:Qe,clock:ti,random:ei,seed:ii,paused:oi=!1,suspendWhenHidden:ni=!0,heatmapAggregation:ri,heatmapXBins:hi,heatmapYBins:ui,showValues:gi,heatmapValueFormat:di,marginalGraphics:fi,pointIdAccessor:pi,xScaleType:yi,yScaleType:mi,accessibleTable:xi=!0,description:bi,summary:ki,linkedCrosshairName:wi,linkedCrosshairSourceId:Ai,customLayout:_i,onLayoutError:Ci,layoutConfig:Si,layoutSelection:Mi}=t,{customHoverBehavior:Pi,customClickBehavior:Yi,hasClickBehavior:Ri}=L({customHoverBehavior:me,customClickBehavior:xe,onObservation:ve,chartId:ke,chartType:"StreamXYFrame"}),Ti=ye().replace(/:/g,""),Ni=he(!1),Oi=he({w:-1,h:-1}),Wi=he(!1),Di=te({sizeProp:G,responsiveWidth:V,responsiveHeight:j,userMargin:q,marginDefault:lo,title:Ge,legend:Te,legendPosition:Ee,animate:Ze,transitionProp:Ke,frameScheduler:Qe,clock:ti,random:ei,seed:ii,paused:oi,suspendWhenHidden:ni,themeDirtyRef:Ni}),Ei=ae(),Li=le(),{reducedMotionRef:Fi,responsiveRef:$i,size:Gi,currentTheme:ji,transition:qi,introEnabled:Ui,tableId:Ki,rafRef:Zi,renderFnRef:Ji,scheduleRender:Qi,frameRuntime:to}=Di;let io=Di.margin;if(fi){const t=60,e={...Di.margin};fi.top&&t>e.top&&(e.top=t),fi.bottom&&t>e.bottom&&(e.bottom=t),fi.left&&t>e.left&&(e.left=t),fi.right&&t>e.right&&(e.right=t),io=e}const oo=Gi[0]-io.left-io.right,so=Gi[1]-io.top-io.bottom,uo=de(()=>Ot(r),[r]),go=se??we,[fo,po]=ue(0),yo=he(0),[mo,xo]=ue(null),vo=x(Ie,Gi,io,mo),bo=x(Be,Gi,io,mo),ko=he(null),wo=he(null),Ao=he(void 0),[_o,Co]=ue(null),So=he(co.primary),Mo=he(function(){let t=-1,e=Ii;return{resolve(i){if(!i)return Ii;const o=Wt();return o===t||(e=function(t){if(!t)return Ii;const e=getComputedStyle(t),i=e.getPropertyValue("--semiotic-border").trim(),o=e.getPropertyValue("--semiotic-text-secondary").trim(),s=e.getPropertyValue("--semiotic-bg").trim(),n=e.getPropertyValue("--semiotic-primary").trim(),r=o||e.getPropertyValue("--text-secondary").trim(),a=e.getPropertyValue("--text-primary").trim(),l=i||e.getPropertyValue("--surface-3").trim(),c=s||e.getPropertyValue("--surface-0").trim();return r||a||i||n?{axisStroke:l||Ii.axisStroke,tickText:r||Ii.tickText,crosshair:r?Xi(r,"66"):Ii.crosshair,hoverFill:c?Xi(c,"4D"):Ii.hoverFill,hoverStroke:r?Xi(r,"99"):Ii.hoverStroke,pointRing:c||Ii.pointRing,primary:n||Ii.primary,background:c||Ii.background}:Ii}(i),t=o),e},invalidate(){t=-1}}}()),Po=he(!1),Yo=ie("StreamXYFrame"),[Ro,To]=ue(!1),[No,Oo]=ue([]),[Wo,Do]=ue([]),Eo="streaming"===n||["bar","swarm","waterfall"].includes(s),zo=de(()=>({chartType:s,runtimeMode:Eo?"streaming":"bounded",windowSize:Y,windowMode:P,arrowOfTime:Eo?M:"right",extentPadding:W,scalePadding:D,axisExtent:Zt,xAccessor:h,yAccessor:u,accessorRevision:g,timeAccessor:Eo?T:void 0,valueAccessor:S,colorAccessor:d,sizeAccessor:f,symbolAccessor:p,symbolMap:y,groupAccessor:v||(b?"_lineGroup":void 0),categoryAccessor:Ve,lineDataAccessor:b,xScaleType:yi,yScaleType:mi,xExtent:N,yExtent:O,sizeRange:$,binSize:C,normalize:w,baseline:A,stackOrder:_,boundsAccessor:wt,boundsStyle:At,y0Accessor:_t,band:Ct,gradientFill:!0===Mt?{topOpacity:.8,bottomOpacity:.05}:!1===Mt?void 0:Mt,areaGroups:Rt?new Set(Rt):void 0,lineGradient:Yt,openAccessor:Tt,highAccessor:Nt,lowAccessor:zt,closeAccessor:Bt,candlestickStyle:It,lineStyle:J,pointStyle:Q,areaStyle:et,swarmStyle:yt,waterfallStyle:ct,colorScheme:xt,barColors:mt,barStyle:it,annotations:Se,decay:qe,pulse:Ue,transition:qi,introAnimation:Ui,staleness:Je,clock:to.now,heatmapAggregation:ri,heatmapXBins:hi,heatmapYBins:ui,showValues:gi,heatmapValueFormat:di,pointIdAccessor:pi,curve:k,themeCategorical:ji?.colors?.categorical,themeSemantic:ne(ji),themeSequential:ji?.colors?.sequential,themeDiverging:ji?.colors?.diverging,customLayout:_i,onLayoutError:Ci,layoutConfig:Si,layoutMargin:io}),[s,Eo,Y,P,M,W,D,Zt,h,u,g,T,S,d,f,p,y,v,b,Ve,yi,mi,N,O,$,C,w,A,_,wt,At,_t,Ct,Mt,Rt,Yt,Tt,Nt,zt,Bt,It,J,Q,et,yt,ct,xt,mt,it,Se,qe,Ue,qi,Ui,Je,to.now,ri,hi,ui,gi,di,pi,k,ji,_i,Ci,Si,io]),Lo=at(zo),Fo=he(null);Fo.current||(Fo.current=new si(Lo));const Bo=z(Fo,Le,Fe,t=>t.getData());nt(Fo,Lo,Ni,Qi),rt(Fo,Mi,Ni,Qi);const Io=he(null);Io.current||(Io.current=new i(t=>{const e=Fo.current;e&&e.ingest(t)&&(Ni.current=!0,Qi())},{chunkThreshold:l,chunkSize:c})),ge(()=>{Io.current?.updateChunkOptions({chunkThreshold:l,chunkSize:c})},[l,c]);const Xo=fe(t=>{Io.current?.push(t)},[]),$o=fe(t=>{Io.current?.pushMany(t)},[]),Go=fe(()=>{Io.current?.clear(),Fo.current?.clear(),Ni.current=!0,Qi()},[Qi]);pe(o,()=>({push:Xo,pushMany:$o,remove:t=>{Io.current?.flush();const e=Fo.current?.remove(t)??[];return e.length>0&&(ko.current&&e.some(t=>t===ko.current?.data)&&(ko.current=null,Co(null)),Ni.current=!0,Qi()),e},update:(t,e)=>{Io.current?.flush();const i=Fo.current?.update(t,e)??[];return i.length>0&&(Ni.current=!0,Qi()),i},clear:Go,getData:()=>(Io.current?.flush(),Fo.current?.getData()??[]),getScales:()=>Fo.current?.scales??null,getExtents:()=>Fo.current?.getExtents()??null,getCustomLayout:()=>Fo.current?.lastCustomLayoutResult??null,getLayoutFailure:()=>Fo.current?.lastCustomLayoutFailure??null}),[Xo,$o,Go,Qi]),ge(()=>{if(r){if(b&&uo.length>0&&"object"==typeof uo[0]&&null!==uo[0]){const t="string"==typeof b?b:"coordinates";if(Array.isArray(uo[0][t])){const e=[];for(const i of uo){const o=i[t];if(Array.isArray(o)){const t=i.label||i.id||i.key;if(null!=t)for(const i of o)e.push({...i,_lineGroup:t});else for(const t of o)e.push(t)}}return void Io.current?.setBoundedData(e)}}Io.current?.setBoundedData(uo)}},[r,uo,b]);const{canvasRef:Vo,interactionCanvasRef:Ho}=ee(Di,{storeRef:Fo,dirtyRef:Ni,hydrated:Ei,wasHydratingFromSSR:Li,cleanup:()=>Io.current?.clear(),canvasPaintDependencies:[s,oo,so,Gt,K,Be,J,Z,Xe,Qi]}),{hoverHandlerRef:jo,hoverLeaveRef:qo,onPointerMove:Uo,onPointerLeave:Ko}=Di;jo.current=t=>{if(!go)return;const e=Vo.current;if(!e)return;const i=e.getBoundingClientRect(),o=t.clientX-i.left-io.left,n=t.clientY-i.top-io.top;if(0>o||o>oo||0>n||n>so)return void(ko.current&&(ko.current=null,wo.current=null,Co(null),Pi&&(Pi(null),Ni.current=!0),Qi()));const r=Fo.current;if(!r||0===r.scene.length)return;const a=Et(_e,t.pointerType),l=li(r.scene,o,n,a,r.quadtree,r.maxPointRadius),c="multi"===Ce,u=()=>{ko.current&&(ko.current=null,wo.current=null,Co(null),Pi&&Pi(null),Qi())};if(!l&&!c)return void u();const g=c||!l?o:l.x,d=c||!l?n:l.y,f=l?.datum?R(l.datum,r.resolvedRibbons):{},p=r.scales?.x?.invert,y="function"==typeof p?p(g):void 0;let m=St(f,g,d,null!=y?{xValue:y,xPx:g}:void 0);if(c&&r.scene.length>0&&r.scales){const t=function(t,e,i=30){const o=[];for(const s of t)if("line"===s.type){const t=s;if(2>t.path.length)continue;const n=ci(ai(t.path,t.curve),e,i);if(null===n)continue;const r=vi(t.path,e);o.push({node:s,datum:Array.isArray(t.datum)&&t.datum[r]?t.datum[r]:t.datum,x:t.path[r][0],y:n,group:t.group,color:t.style.stroke})}else if("area"===s.type){const t=s;if(!1===t.interactive)continue;if(2>t.topPath.length)continue;const n=ai(t.topPath,t.curve),r=ai(t.bottomPath,t.curve),a=ci(n,e,i);if(null===a)continue;const l=ci(r,e,i),c=vi(t.topPath,e);o.push({node:s,datum:Array.isArray(t.datum)&&t.datum[c]?t.datum[c]:t.datum,x:t.topPath[c][0],y:a,y0:l??void 0,group:t.group,color:"string"==typeof t.style.stroke?t.style.stroke:"string"==typeof t.style.fill?t.style.fill:void 0})}return o}(r.scene,g,Math.max(a,oo));if(t.length>0){const e=r.scales.y.invert,i=So.current,o=p?p(g):g;if(l)m.xValue=o,m.xPx=g;else{const t={xValue:o};"string"==typeof h&&(t[h]=o),m=St(t,g,d,{xValue:o,xPx:g})}m.allSeries=t.map(t=>{const o=e?e(t.y):t.y,n=null!=t.y0?e?e(t.y0):t.y0:void 0;return{group:t.group||"",value:"stackedarea"===s&&null!=n?o-n:o,valuePx:t.y,color:t.color||i,datum:R(t.datum,r.resolvedRibbons)}})}}l||m.allSeries?.length?(ko.current=m,wo.current=l?.node??null,Co(m),Pi&&(Pi(m),Ni.current=!0),Qi()):u()},qo.current=()=>{ko.current&&(ko.current=null,wo.current=null,Co(null),Pi&&(Pi(null),Ni.current=!0),Qi())};const Zo=he(()=>{});Zo.current=t=>{if(Lt(t.target))return;if(!Yi)return;const e=Vo.current;if(!e)return;const i=e.getBoundingClientRect(),o=t.clientX-i.left-io.left,s=t.clientY-i.top-io.top;if(0>o||o>oo||0>s||s>so)return void Yi(null);const n=Fo.current;if(!n||0===n.scene.length)return void Yi(null);const r=Et(_e,Ao.current),a=li(n.scene,o,s,r,n.quadtree,n.maxPointRadius);if(!a)return void Yi(null);const l=a.datum||{},c=n.scales?.x?.invert,h="function"==typeof c?c(a.x):void 0;Yi(St(l,a.x,a.y,null!=h?{xValue:h,xPx:a.x}:void 0),{type:"activate",inputType:Xt(Ao.current)})};const Jo=fe(t=>Zo.current(t),[]),{kbFocusIndexRef:Qo,focusedNavPointRef:ts,onKeyDown:es}=F({storeRef:Fo,hoverRef:ko,hoveredNodeRef:wo,setHoverPoint:Co,customHoverBehavior:Pi,customClickBehavior:Yi,scheduleRender:Qi}),is=fe(t=>{Ao.current=t.pointerType,Qo.current=-1,ts.current=null,Uo(t)},[ts,Qo,Uo]),os=fe(t=>{Ao.current="mouse",Qo.current=-1,ts.current=null,Uo({clientX:t.clientX,clientY:t.clientY,pointerType:"mouse"})},[ts,Qo,Uo]),ss=fe(t=>{Ao.current=t.pointerType},[]);Ji.current=()=>{if(Zi.current=null,!to.isActive)return;const t=Vo.current,i=Ho.current;if(!t||!i)return;const o=Fo.current;if(!o)return;const n=to.now(),r=o.advanceTransition(Fi.current?n+1e6:n),a=!Fi.current&&r,l=Oi.current.w!==oo||Oi.current.h!==so,c=Ni.current||r||l,g=o.consumeStylePaintPending();let d=!1;const f=o.getLastUpdateResult(),p=Yo.current.beforeCompute(f,a);!c||a&&!l||(o.computeScene({width:oo,height:so}),Oi.current={w:oo,h:so},d=!0,Bo()),Yo.current.afterCompute(p,d,l);const y=E(o,n,d,Wi),m=Dt(),x=Mo.current.resolve(t);So.current=x.primary;const v=st(Je,o.lastIngestTime>0?n-o.lastIngestTime:0),b=Je&&v.isStale;if(c||g||y.changed){const e=$t(t,Gi,io,m);if(e){if(e.clearRect(-io.left,-io.top,Gi[0],Gi[1]),Je&&1>v.alpha&&(e.globalAlpha=v.alpha),I(e,{background:K,hasBackgroundGraphics:!!Be,themeBackground:x.background,x:-io.left,y:-io.top,width:Gi[0],height:Gi[1]}),e.save(),"function"==typeof e.rect&&(e.beginPath(),e.rect(0,0,oo,so),e.clip()),Xe&&o.scales)for(const t of Xe)e.save(),t(e,o.scene,o.scales,{width:oo,height:so}),e.restore();const t=_i?eo.custom:eo[s];tt({context:e,nodes:o.scene,renderMode:Z,pixelRatio:m,paintBuiltIn:i=>{if(t&&o.scales)for(const s of t)s(e,i,o.scales,{width:oo,height:so})}}),e.restore(),Je&&1>v.alpha&&(e.globalAlpha=1)}}const k=!!(go&&ko.current&&o.scales),w=!!(wo.current&&Array.isArray(se)&&se.some(t=>t&&"object"==typeof t&&"highlight"===t.type)),A=k||w;if(B(A,Po.current)){const t=$t(i,Gi,io,m);if(t&&(t.clearRect(-io.left,-io.top,Gi[0],Gi[1]),k&&ko.current&&function(t,i,o,s,n,r,a){if(!1===n.crosshair)return;const l=i.allSeries,c=l&&l.length>0,h=i.xPx??i.x;t.save();const u="object"==typeof n.crosshair?n.crosshair:{};if(t.strokeStyle=u.stroke||a.crosshair,t.lineWidth=u.strokeWidth||1,t.setLineDash(u.strokeDasharray?u.strokeDasharray.split(/[\s,]+/).map(Number):[4,4]),t.beginPath(),t.moveTo(c?h:i.x,0),t.lineTo(c?h:i.x,s),t.stroke(),c||(t.beginPath(),t.moveTo(0,i.y),t.lineTo(o,i.y),t.stroke()),t.restore(),c){t.lineWidth=2,t.strokeStyle=a.pointRing;for(const e of l)null!=e.valuePx&&(t.beginPath(),t.arc(h,e.valuePx,4,0,2*Math.PI),t.fillStyle=e.color||a.primary,t.fill(),t.stroke())}else{const o=n.pointColor||e(r)||a.primary;t.beginPath(),t.arc(i.x,i.y,4,0,2*Math.PI),t.fillStyle=o,t.fill(),t.strokeStyle=a.pointRing,t.lineWidth=2,t.stroke()}}(t,ko.current,oo,so,"object"==typeof go?go:{},wo.current,x),w&&wo.current&&Array.isArray(se))){const e=se.find(t=>t&&"object"==typeof t&&"highlight"===t.type);e&&function(t,e,i,o,s){if(!i)return;const n="group"in i?i.group:void 0;if(void 0!==n)for(const i of e){if("line"!==i.type)continue;if(i.group!==n)continue;if(2>i.path.length)continue;const e="function"==typeof o.style?i.datum?o.style(i.datum):{}:o.style||{};t.save(),t.beginPath(),t.moveTo(i.path[0][0],i.path[0][1]);for(let e=1;i.path.length>e;e++)t.lineTo(i.path[e][0],i.path[e][1]);t.strokeStyle=e.stroke||i.style.stroke||s.primary,t.lineWidth=e.strokeWidth||(i.style.strokeWidth||2)+2,t.globalAlpha=e.opacity??1,t.stroke(),t.restore()}}(t,o.scene,wo.current,e,x)}Po.current=A}c&&t&&t.setAttribute("aria-label",Pt(o.scene,s+" chart"));const _=Ni.current;if(Ni.current=_&&a&&!d,_&&o.scales){const t=t=>"object"==typeof t&&null!==t&&"function"==typeof t.valueOf?t.valueOf():t;if((!mo||t(mo.x.domain()[0])!==t(o.scales.x.domain()[0])||t(mo.x.domain()[1])!==t(o.scales.x.domain()[1])||t(mo.y.domain()[0])!==t(o.scales.y.domain()[0])||t(mo.y.domain()[1])!==t(o.scales.y.domain()[1])||mo.x.range()[0]!==o.scales.x.range()[0]||mo.x.range()[1]!==o.scales.x.range()[1]||mo.y.range()[0]!==o.scales.y.range()[0]||mo.y.range()[1]!==o.scales.y.range()[1])&&xo(o.scales),fi){const t=o.getData(),e="function"==typeof h?h:t=>t[h||"x"],i="function"==typeof u?u:t=>t[u||"y"];Oo(t.map(t=>e(t)).filter(t=>"number"==typeof t&&isFinite(t))),Do(t.map(t=>i(t)).filter(t=>"number"==typeof t&&isFinite(t)))}}!((Se&&Se.length>0||_i)&&(d||a))||!d&&33>n-yo.current||(po(t=>t+1),yo.current=n),Je?.showBadge&&To(!!b),(a||null!=o.activeTransition||y.pending)&&Qi()},lt(Je,Fo,Ni,Qi,Ro,To);const ns=de(()=>{if(Ut||Jt)return;const t=Fo.current;return t?.xIsDate&&mo?Vi(mo.x.domain()):void 0},[Ut,Jt,mo]),rs=Ut||Jt||ns,as=go&&_o?re?re(_o):ro(no,{hover:_o}):null,ls=as?ro(ft,{x:_o.x,y:_o.y,containerWidth:oo,containerHeight:so,margin:io,className:"stream-frame-tooltip",children:as}):null,cs=ts.current,hs=ro(pt,{active:Qo.current>=0,hoverPoint:_o,margin:io,size:Gi,shape:cs?.shape,width:cs?.w,height:cs?.h}),us=m(h,T,"__semiotic_resolvedX","__semiotic_resolvedTime"),gs=m(u,S,"__semiotic_resolvedY","__semiotic_resolvedValue"),ds=us.key,fs=gs.key,ps=a(us,gs,Se&&Se.length>0||!1);if(Ft||!Ei&&Li){const t=Fo.current;t&&r&&(t.ingest({inserts:uo,bounded:!0}),t.computeScene({width:oo,height:so}));const e=t?.scene??[],i=t?.scales??null,o=x(Ie,Gi,io,i),s=x(Be,Gi,io,i),n=rs||(()=>{if(t?.xIsDate&&i)return Vi(i.x.domain())})();return ao("div",{ref:$i,className:"stream-xy-frame"+(U?" "+U:""),role:"img","aria-label":bi||("string"==typeof Ge?Ge:"XY chart"),style:{position:"relative",width:V?"100%":Gi[0],height:j?"100%":Gi[1]},children:[ro(bt,{summary:ki}),ao("svg",{xmlns:"http://www.w3.org/2000/svg",width:Gi[0],height:Gi[1],style:{position:"absolute",left:0,top:0},children:[ro("g",{transform:`translate(${io.left},${io.top})`,children:s}),ao("g",{transform:`translate(${io.left},${io.top})`,children:[K&&ro("rect",{x:0,y:0,width:oo,height:so,fill:K}),$e&&i&&$e.map((t,o)=>ro(ce.Fragment,{children:t(e,i,{width:oo,height:so})},"svgpre-"+o)),e.map((t,e)=>ot({node:t,index:e,renderMode:Z,fallback:()=>oe(t,e,Ti)})).filter(Boolean)]})]}),ro(Bi,{width:oo,height:so,totalWidth:Gi[0],totalHeight:Gi[1],margin:io,scales:i,showAxes:Gt,axes:Vt,xLabel:Ht,yLabel:jt,yLabelRight:qt,xFormat:n,yFormat:Kt||Qt,axisExtent:Zt,showGrid:Re,title:Ge,legend:Te,legendHoverBehavior:Ne,legendClickBehavior:Oe,legendHighlightedCategory:We,legendIsolatedCategories:De,legendPosition:Ee,legendLayout:ze,foregroundGraphics:H(o,ht(Fo.current?.customLayoutOverlays,Mi??null)),marginalGraphics:fi,xValues:[],yValues:[],annotations:Se,onAnnotationActivate:Me,onObservation:be??ve,chartId:ke,chartType:"StreamXYFrame",autoPlaceAnnotations:Pe,svgAnnotationRules:Ye,annotationFrame:0,xAccessor:ds,yAccessor:fs,annotationData:ps(Fo.current?.getData()),pointNodes:Hi(Fo.current?.scene),curve:"string"==typeof k?k:void 0,linkedCrosshairName:wi,linkedCrosshairSourceId:Ai})]})}return ao("div",{ref:$i,className:"stream-xy-frame"+(U?" "+U:""),role:"group","aria-label":bi||("string"==typeof Ge?Ge:"XY chart"),tabIndex:0,style:{position:"relative",width:V?"100%":Gi[0],height:j?"100%":Gi[1],overflow:"visible",touchAction:ho(He)},onKeyDown:es,children:["production"!==process.env.NODE_ENV&&Fo.current&&ro(vt,{store:Fo.current,diagnostics:Yo.current}),xi&&ro(kt,{tableId:Ki}),xi&&ro(ut,{scene:Fo.current?.scene??[],chartType:s+" chart",tableId:Ki,chartTitle:"string"==typeof Ge?Ge:void 0}),ro(bt,{summary:ki}),ro(gt,{hoverPoint:_o}),ao("div",{role:"img","aria-label":bi||("string"==typeof Ge?Ge:"XY chart"),style:{position:"relative",width:"100%",height:"100%"},onPointerMove:go?is:void 0,onMouseMove:go?os:void 0,onPointerLeave:go?Ko:void 0,onMouseLeave:go?Ko:void 0,onPointerDown:go||Ri?ss:void 0,onClick:Ri?Jo:void 0,children:[ro(dt,{size:Gi,margin:io,children:bo}),ro(zi,{width:oo,height:so,totalWidth:Gi[0],totalHeight:Gi[1],margin:io,scales:mo,showAxes:Gt,axes:Vt,showGrid:Re,xFormat:rs,yFormat:Kt||Qt,axisExtent:Zt}),ro("canvas",{ref:Vo,"aria-label":Pt(Fo.current?.scene??[],s+" chart"),style:{position:"absolute",left:0,top:0}}),ro("canvas",{ref:Ho,style:{position:"absolute",left:0,top:0,pointerEvents:"none"}}),ro(Bi,{width:oo,height:so,totalWidth:Gi[0],totalHeight:Gi[1],margin:io,scales:mo,showAxes:Gt,axes:Vt,xLabel:Ht,yLabel:jt,yLabelRight:qt,xFormat:rs,yFormat:Kt||Qt,axisExtent:Zt,showGrid:Re,title:Ge,legend:Te,legendHoverBehavior:Ne,legendClickBehavior:Oe,legendHighlightedCategory:We,legendIsolatedCategories:De,legendPosition:Ee,legendLayout:ze,foregroundGraphics:H(vo,ht(Fo.current?.customLayoutOverlays,Mi??null)),marginalGraphics:fi,xValues:No,yValues:Wo,annotations:Se,onAnnotationActivate:Me,onObservation:be??ve,chartId:ke,chartType:"StreamXYFrame",autoPlaceAnnotations:Pe,svgAnnotationRules:Ye,annotationFrame:fo,xAccessor:ds,yAccessor:fs,annotationData:ps(Fo.current?.getData()),pointNodes:Hi(Fo.current?.scene),curve:"string"==typeof k?k:void 0,underlayRendered:!0,canvasObscuresUnderlay:"transparent"!==K&&!Be,linkedCrosshairName:wi,linkedCrosshairSourceId:Ai}),(He||je)&&ro(Ae,{width:oo,height:so,totalWidth:Gi[0],totalHeight:Gi[1],margin:io,dimension:He?.dimension??"xy",scales:mo,onBrush:je??(()=>{}),binSize:C,snap:He?.snap,binBoundaries:He?.binBoundaries??("bar"===s?Fo.current?.getBinBoundaries():void 0),snapDuring:He?.snapDuring,streaming:"streaming"===n}),Je?.showBadge&&ro(X,{isStale:Ro,position:Je.badgePosition}),hs,ls]})]})}));uo.displayName="StreamXYFrame";var go=uo;export{go as StreamXYFrame_default};