semiotic 3.8.3 → 3.8.4

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 (163) hide show
  1. package/CLAUDE.md +9 -9
  2. package/README.md +40 -39
  3. package/ai/examples.md +1 -1
  4. package/ai/schema.json +2726 -300
  5. package/ai/surface-manifest.json +1 -1
  6. package/ai/system-prompt.md +1 -1
  7. package/dist/chunk-chunk-2JGJ5GUG.module.min.js +0 -1
  8. package/dist/chunk-chunk-3ILKBVVQ.module.min.js +1 -0
  9. package/dist/{chunk-chunk-XQYVEKEJ.module.min.js → chunk-chunk-6TPGFL7M.module.min.js} +1 -1
  10. package/dist/{chunk-chunk-VVCA3DB7.module.min.js → chunk-chunk-7ALTGHK6.module.min.js} +1 -1
  11. package/dist/chunk-chunk-7KZJUTKP.module.min.js +2 -0
  12. package/dist/chunk-chunk-7RYBCTK5.module.min.js +1 -0
  13. package/dist/chunk-chunk-ACLDBMRH.module.min.js +2 -0
  14. package/dist/{chunk-chunk-AZJUDQRM.module.min.js → chunk-chunk-AQPQN2HH.module.min.js} +1 -1
  15. package/dist/chunk-chunk-ASKSE5F5.module.min.js +1 -0
  16. package/dist/chunk-chunk-AVBI6GDT.module.min.js +1 -0
  17. package/dist/chunk-chunk-B3DRZPBK.module.min.js +2 -0
  18. package/dist/chunk-chunk-BFHUYEOS.module.min.js +2 -0
  19. package/dist/chunk-chunk-C4YA6TDR.module.min.js +1 -0
  20. package/dist/chunk-chunk-C57LR3YG.module.min.js +1 -0
  21. package/dist/chunk-chunk-F5V4UIE6.module.min.js +2 -0
  22. package/dist/chunk-chunk-F7WFPD4O.module.min.js +2 -0
  23. package/dist/{chunk-chunk-SANERMIZ.module.min.js → chunk-chunk-FBGHXL72.module.min.js} +1 -1
  24. package/dist/chunk-chunk-FP44FHFO.module.min.js +2 -0
  25. package/dist/chunk-chunk-HKXUAEPJ.module.min.js +2 -0
  26. package/dist/chunk-chunk-ICEXPNDC.module.min.js +2 -0
  27. package/dist/chunk-chunk-IY7RYD4S.module.min.js +1 -0
  28. package/dist/{chunk-chunk-7FW6EGLP.module.min.js → chunk-chunk-JDXT6ORT.module.min.js} +1 -1
  29. package/dist/chunk-chunk-JMVEIZXP.module.min.js +1 -0
  30. package/dist/chunk-chunk-KHCOJMGK.module.min.js +1 -0
  31. package/dist/{chunk-chunk-OQTLSTGI.module.min.js → chunk-chunk-KQ546MKE.module.min.js} +1 -1
  32. package/dist/chunk-chunk-LQBSXO7K.module.min.js +2 -0
  33. package/dist/chunk-chunk-LRIFN2HK.module.min.js +1 -0
  34. package/dist/chunk-chunk-MFHF4J2Z.module.min.js +1 -0
  35. package/dist/{chunk-chunk-JNCHKRIR.module.min.js → chunk-chunk-N6VKKF3A.module.min.js} +1 -1
  36. package/dist/chunk-chunk-NEVE562N.module.min.js +1 -0
  37. package/dist/chunk-chunk-NKZ75IM5.module.min.js +2 -0
  38. package/dist/chunk-chunk-PLIDPQNG.module.min.js +2 -0
  39. package/dist/{chunk-chunk-FYY2ACNJ.module.min.js → chunk-chunk-PRDGLMJT.module.min.js} +1 -1
  40. package/dist/chunk-chunk-QGZGZI4X.module.min.js +1 -0
  41. package/dist/chunk-chunk-RP7WTID5.module.min.js +1 -0
  42. package/dist/chunk-chunk-S7KLNUO6.module.min.js +1 -0
  43. package/dist/chunk-chunk-SR4ZXOWR.module.min.js +2 -0
  44. package/dist/chunk-chunk-ZOAQDIJO.module.min.js +1 -0
  45. package/dist/chunk-minimapBrushOverlay-JU57U7NM.module.min.js +2 -0
  46. package/dist/chunk-scatterplotMatrixBrushOverlay-SDIZSN66.module.min.js +2 -0
  47. package/dist/chunk-statisticalOverlays-QGDLRUHX.module.min.js +1 -0
  48. package/dist/chunk-statisticalOverlays-T77OKLDY.module.min.js +1 -0
  49. package/dist/components/ChartContainer.d.ts +2 -2
  50. package/dist/components/ai/chartCapabilityTypes.d.ts +5 -0
  51. package/dist/components/charts/geo/ChoroplethMap.d.ts +2 -0
  52. package/dist/components/charts/geo/DistanceCartogram.d.ts +7 -3
  53. package/dist/components/charts/geo/FlowMap.d.ts +4 -0
  54. package/dist/components/charts/geo/ProportionalSymbolMap.d.ts +3 -1
  55. package/dist/components/charts/physics/CollisionSwarmChart.d.ts +6 -1
  56. package/dist/components/charts/physics/GaltonBoardChart.d.ts +6 -1
  57. package/dist/components/charts/physics/gauntletChartProps.d.ts +7 -1
  58. package/dist/components/charts/physics/gauntletChrome.d.ts +2 -1
  59. package/dist/components/charts/physics/gauntletPhysics.d.ts +19 -4
  60. package/dist/components/charts/physics/gauntletRuntime.d.ts +3 -0
  61. package/dist/components/charts/physics/physicsHocUtils.d.ts +12 -0
  62. package/dist/components/charts/shared/chartMode.d.ts +8 -0
  63. package/dist/components/charts/shared/chartSpecCore.d.ts +2 -2
  64. package/dist/components/charts/shared/hatchPattern.d.ts +8 -3
  65. package/dist/components/charts/shared/lineSeriesSsr.d.ts +55 -0
  66. package/dist/components/charts/shared/types.d.ts +2 -2
  67. package/dist/components/charts/shared/validateProps.d.ts +1 -1
  68. package/dist/components/charts/xy/AreaChart.d.ts +10 -0
  69. package/dist/components/charts/xy/minimapBrushOverlay.d.ts +17 -0
  70. package/dist/components/charts/xy/minimapBrushOverlayLazy.d.ts +4 -0
  71. package/dist/components/charts/xy/scatterplotMatrixBrushOverlay.d.ts +8 -0
  72. package/dist/components/charts/xy/scatterplotMatrixBrushOverlayLazy.d.ts +3 -0
  73. package/dist/components/realtime/types.d.ts +5 -0
  74. package/dist/components/recipes/gridObservatory.d.ts +176 -0
  75. package/dist/components/recipes/recipeChrome.d.ts +24 -0
  76. package/dist/components/recipes/sequenceLayout.d.ts +139 -0
  77. package/dist/components/semiotic-recipes-core.d.ts +6 -2
  78. package/dist/components/server/staticAnnotations.d.ts +3 -1
  79. package/dist/components/stream/SceneToSVG.d.ts +6 -6
  80. package/dist/components/stream/SceneToSVGOrdinal.d.ts +12 -0
  81. package/dist/components/stream/networkFramePaint.d.ts +2 -0
  82. package/dist/components/stream/physics/PhysicsPipelineStore.d.ts +18 -2
  83. package/dist/components/stream/physics/physicsBodyCanvas.d.ts +7 -0
  84. package/dist/components/stream/physics/physicsPipelineEviction.d.ts +15 -0
  85. package/dist/components/stream/physics/physicsPipelineObservations.d.ts +1 -1
  86. package/dist/components/stream/physics/physicsPipelineQuiescence.d.ts +20 -0
  87. package/dist/components/stream/sceneToSVGShared.d.ts +30 -1
  88. package/dist/components/stream/types.d.ts +4 -0
  89. package/dist/components/stream/useHydration.d.ts +7 -1
  90. package/dist/components/stream/xySceneBuilders/candlestickScene.d.ts +1 -1
  91. package/dist/forceLayoutWorker.js +1 -1
  92. package/dist/geo.min.js +1 -1
  93. package/dist/geo.module.min.js +1 -1
  94. package/dist/network.min.js +1 -1
  95. package/dist/network.module.min.js +1 -1
  96. package/dist/ordinal.min.js +1 -1
  97. package/dist/ordinal.module.min.js +1 -1
  98. package/dist/physics.min.js +1 -1
  99. package/dist/physics.module.min.js +1 -1
  100. package/dist/physicsWorker.js +1 -1
  101. package/dist/realtime.min.js +1 -1
  102. package/dist/realtime.module.min.js +1 -1
  103. package/dist/rough.min.js +1 -1
  104. package/dist/rough.module.min.js +1 -1
  105. package/dist/semiotic-ai-core.min.js +1 -1
  106. package/dist/semiotic-ai-core.module.min.js +1 -1
  107. package/dist/semiotic-ai.min.js +1 -1
  108. package/dist/semiotic-ai.module.min.js +1 -1
  109. package/dist/semiotic-experimental.min.js +1 -1
  110. package/dist/semiotic-experimental.module.min.js +1 -1
  111. package/dist/semiotic-realtime-core.min.js +1 -1
  112. package/dist/semiotic-realtime-core.module.min.js +1 -1
  113. package/dist/semiotic-recipes-core.d.ts +6 -2
  114. package/dist/semiotic-recipes-core.min.js +1 -1
  115. package/dist/semiotic-recipes-core.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-utils-core.min.js +1 -1
  123. package/dist/semiotic-utils-core.module.min.js +1 -1
  124. package/dist/semiotic-utils.min.js +1 -1
  125. package/dist/semiotic-utils.module.min.js +1 -1
  126. package/dist/semiotic-value.module.min.js +1 -1
  127. package/dist/semiotic.min.js +1 -1
  128. package/dist/semiotic.module.min.js +1 -1
  129. package/dist/server.min.js +1 -1
  130. package/dist/server.module.min.js +1 -1
  131. package/dist/xy.min.js +1 -1
  132. package/dist/xy.module.min.js +1 -1
  133. package/package.json +3 -2
  134. package/dist/chunk-chunk-255KDHW5.module.min.js +0 -1
  135. package/dist/chunk-chunk-2CCFBTQC.module.min.js +0 -2
  136. package/dist/chunk-chunk-2RXP3FS3.module.min.js +0 -1
  137. package/dist/chunk-chunk-2WVCH4PL.module.min.js +0 -1
  138. package/dist/chunk-chunk-4TMZXLCR.module.min.js +0 -1
  139. package/dist/chunk-chunk-5APBQXZA.module.min.js +0 -1
  140. package/dist/chunk-chunk-6HSGDMTA.module.min.js +0 -2
  141. package/dist/chunk-chunk-7OEOSCBP.module.min.js +0 -1
  142. package/dist/chunk-chunk-A63CTACR.module.min.js +0 -2
  143. package/dist/chunk-chunk-B6V35LMY.module.min.js +0 -2
  144. package/dist/chunk-chunk-BOSVL645.module.min.js +0 -2
  145. package/dist/chunk-chunk-CP3EN6KZ.module.min.js +0 -1
  146. package/dist/chunk-chunk-F25UA5HT.module.min.js +0 -1
  147. package/dist/chunk-chunk-FRIO6MCV.module.min.js +0 -1
  148. package/dist/chunk-chunk-GWSWSPXN.module.min.js +0 -1
  149. package/dist/chunk-chunk-I6C3KR5H.module.min.js +0 -2
  150. package/dist/chunk-chunk-IP2UE74X.module.min.js +0 -1
  151. package/dist/chunk-chunk-J3ELI22J.module.min.js +0 -1
  152. package/dist/chunk-chunk-J5RL6GXU.module.min.js +0 -2
  153. package/dist/chunk-chunk-L3H6DQCR.module.min.js +0 -2
  154. package/dist/chunk-chunk-M337NY6L.module.min.js +0 -1
  155. package/dist/chunk-chunk-M7VYYHCE.module.min.js +0 -2
  156. package/dist/chunk-chunk-MC35ILYP.module.min.js +0 -2
  157. package/dist/chunk-chunk-N72SWNBV.module.min.js +0 -1
  158. package/dist/chunk-chunk-OBQRFTIL.module.min.js +0 -2
  159. package/dist/chunk-chunk-QRIBHZYW.module.min.js +0 -1
  160. package/dist/chunk-chunk-SA3D43RA.module.min.js +0 -2
  161. package/dist/chunk-chunk-UHSZEB74.module.min.js +0 -1
  162. package/dist/chunk-chunk-Y6AXCRVO.module.min.js +0 -1
  163. package/dist/chunk-chunk-ZCNBUZPL.module.min.js +0 -2
@@ -1 +0,0 @@
1
- import{createStore as t}from"./chunk-chunk-DSNGDNJY.module.min.js";var e={fresh:1,aging:1.5,stale:3};function n(t,e,n={}){return Number.isFinite(e)&&e>0?Number.isNaN(t)?"fresh":t===1/0?"expired":0>t||e*(n.fresh??1)>t?"fresh":e*(n.aging??1.5)>t?"aging":e*(n.stale??3)>t?"stale":"expired":"fresh"}var r=null;function i(t={},e){const{background:n="transparent",stroke:i="#000",lineWidth:o=1.5,spacing:a=6,angle:s=45}=t,u=Math.max(8,Math.ceil(2*a));let c;try{c=function(t){return"undefined"!=typeof OffscreenCanvas?new OffscreenCanvas(t,t):(r||(r=document.createElement("canvas")),r.width=t,r.height=t,r)}(u)}catch{return null}const f=c.getContext("2d");if(!f)return null;n&&"transparent"!==n?(f.fillStyle=n,f.fillRect(0,0,u,u)):f.clearRect(0,0,u,u),f.strokeStyle=i,f.lineWidth=o,f.lineCap="square";const l=s*Math.PI/180;if(45===s||-45===s){const t=s>0?1:-1;for(let e=-u;2*u>=e;e+=a)f.beginPath(),f.moveTo(e,0),f.lineTo(e+t*u,u),f.stroke()}else{f.save(),f.translate(u/2,u/2),f.rotate(l);const t=2*u;for(let e=-t;t>=e;e+=a)f.beginPath(),f.moveTo(-t,e),f.lineTo(t,e),f.stroke();f.restore()}return(e||f).createPattern(c,"repeat")}import{jsx as o,jsxs as a}from"react/jsx-runtime";function s(t){return"object"==typeof t&&null!==t&&"hatch"===t.type}function u(t){return["hatch",t.background??"transparent",t.stroke??"#000",t.lineWidth??1.5,t.spacing??6,t.angle??45,t.lineOpacity??1].join("|")}function c(t,e){let n=2166136261;const r=u(e);for(let t=0;r.length>t;t++)n^=r.charCodeAt(t),n=Math.imul(n,16777619);return`${t}-hatch-${(n>>>0).toString(36)}`}var f=new Map;function l(t,e){const n="undefined"!=typeof window&&window.devicePixelRatio||1,r=`${u(t)}@${n}`,o=f.get(r);if(void 0!==o)return o;const a=i({background:t.background,stroke:t.stroke,lineWidth:t.lineWidth,spacing:t.spacing,angle:t.angle},e);return f.set(r,a),a}function h(t,e){const{background:n="transparent",stroke:r="#000",lineWidth:i=1.5,spacing:s=6,angle:u=45,lineOpacity:c=1}=t,f=Math.max(8,Math.ceil(2*s));return a("pattern",{id:e,width:f,height:f,patternUnits:"userSpaceOnUse",patternTransform:0!==u?`rotate(${u})`:void 0,children:[n&&"transparent"!==n&&o("rect",{width:f,height:f,fill:n}),o("line",{x1:0,y1:0,x2:0,y2:f,stroke:r,strokeWidth:i,strokeOpacity:c}),o("line",{x1:s,y1:0,x2:s,y2:f,stroke:r,strokeWidth:i,strokeOpacity:c})]},e)}function p(t,e,n="#4e79a7"){if(s(t)){const n=c(e,t);return{fill:`url(#${n})`,def:h(t,n)}}return t&&"string"==typeof t?{fill:t}:{fill:n}}function m(t){return!!t&&"object"==typeof t&&!Array.isArray(t)}function d(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)}function g(t,e,n=t.responsiveRules){if(!Array.isArray(n)||0===n.length)return{props:t,matches:[]};const r=n.map((t,e)=>({rule:t,index:e})).filter(t=>d(t.rule,e)).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:r.reduce((t,e)=>function(t,e){const n={...t,...e};for(const r of["margin","frameProps","mobileSemantics","style"])m(t[r])&&m(e[r])&&(n[r]={...t[r],...e[r]});return"string"==typeof t.className&&"string"==typeof e.className&&(n.className=`${t.className} ${e.className}`),n}(t,e.rule.transform),t),matches:r}}function y(t,e){return t===e}function b(t,e){if("function"==typeof t)return e=>+t(e);const n=t||e;return t=>+t[n]}function v(t,e){if("function"==typeof t)return t;const n=t||e;return t=>t[n]}function x(t,e){return"function"==typeof t?t:t?e=>e[t]+"":e?t=>t[e]+"":void 0}var[k,w]=t(t=>({observations:[],maxObservations:100,version:0,pushObservation(e){t(t=>{const n=t.observations;return n.push(e),n.length>t.maxObservations&&n.shift(),{version:t.version+1}})},clearObservations(){t(()=>({observations:[],version:0}))}}));export{y as accessorsEquivalent,b as resolveAccessor,v as resolveRawAccessor,x as resolveStringAccessor,e as DEFAULT_LIFECYCLE_THRESHOLDS,n as bandFromAge,i as createHatchPattern,s as isHatchFill,u as hatchFillKey,c as hatchFillId,l as resolveHatchCanvasPattern,h as hatchPatternDef,p as resolveSvgFill,w as useObservationSelector,d as responsiveRuleMatches,g as resolveResponsiveRules};
@@ -1 +0,0 @@
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*as s from"react";function o(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 l=864e5;function c(e){return 10>e?"0"+e:e+""}var u=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function d(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*l>i?"hours":60*l>i?"days":400*l>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=u[e.getUTCMonth()],d=e.getUTCDate(),m=e.getUTCFullYear(),h=c(e.getUTCHours()),p=c(e.getUTCMinutes()),g=c(e.getUTCSeconds());switch(i){case"seconds":return a?`${l} ${d}, ${m} ${h}:${p}:${g}`:r?`${l} ${d} ${h}:${p}:${g}`:s?`${h}:${p}:${g}`:o?`${p}:${g}`:":"+g;case"minutes":return a?`${l} ${d}, ${m} ${h}:${p}`:r?`${l} ${d} ${h}:${p}`:s?`${h}:${p}`:":"+p;case"hours":return a?`${l} ${d}, ${m} ${h}:00`:n?`${l} ${d} ${h}:${p}`:r?`${l} ${d} ${h}:00`:h+":00";case"days":return a?`${l} ${d}, ${m}`:n?`${l} ${d}`:""+d;case"months":return a?`${l} ${m}`:""+l;case"years":return""+m}}(s,new Date(r[n-1]),o):function(e,t){const i=u[e.getUTCMonth()],a=e.getUTCDate(),n=e.getUTCFullYear(),r=c(e.getUTCHours()),s=c(e.getUTCMinutes()),o=c(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 m(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 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)+(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 p=new Set(["LineChart","AreaChart","DifferenceChart","StackedAreaChart","Scatterplot","ConnectedScatterplot","BubbleChart","QuadrantChart","MultiAxisLineChart","CandlestickChart","Heatmap","MinimapChart","RealtimeLineChart","RealtimeHeatmap"]),g=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 f(e){return!!e&&"object"==typeof e&&!Array.isArray(e)}function b(e){return"string"==typeof e&&e.trim().length>0}function v(e){const t=f(e.capability)?e.capability:null,i=f(e.recipe)?e.recipe:null,a=[e.mobileSemantics,e.mobileVisualization,e.mobile,t?.mobile,i?.mobile];for(const e of a)if(f(e))return e;return null}function x(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 w(e){return x(e.size)||x(f(e.frameProps)?e.frameProps.size:void 0)||("number"==typeof e.width&&"number"==typeof e.height?[e.width,e.height]:null)}function k(e,t){e.push({...t,status:"pass"})}function $(e,t){e.push({...t,status:"warn"})}function C(e,t){e.push({...t,status:"manual"})}function S(e,t={},i={}){const a=i.viewportWidth??390,n=i.targetSize??44,s=w(t),o=r(t,{width:a,height:s?.[1]}),l=[],c=w(t=o.props),u=v(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=v(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,x=b(t.title)||b(t.summary)||b(t.description)||!0===u?.summary||b(u?.summary);if(o.matches.length>0&&k(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?$(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."}):k(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&&$(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&&$(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&&$(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 C(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 S=function(e){const t=[e.data,e.points,e.lines,e.nodes,e.edges,e.areas,f(e.frameProps)?e.frameProps.data:void 0];let i=0;for(const e of t)Array.isArray(e)&&(i+=e.length);return i}(t);S>0&&(S>("number"==typeof u?.maxMarks?u.maxMarks:p.has(e)?1.25*a:g.has(e)?Math.max(8,Math.floor(a/34)):a)?$(l,{id:"density.mark-budget",category:"density",impact:p.has(e)?"medium":"high",message:`${S} 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."}):k(l,{id:"density.mark-budget",category:"density",impact:"medium",message:S+" data item(s) are within the rough mobile density budget for this component."}));const A=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),T=!1!==t.showAxes&&!1!==t.axis;if(T&&null!=A){const e=Math.max(3,Math.floor(a/58));A>e&&$(l,{id:"density.explicit-tick-count",category:"density",impact:"medium",message:`${A} 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 T&&(p.has(e)||g.has(e))&&C(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=f(e.frameProps)?e.frameProps:{};return(!0===e.enableHover||null!=e.tooltipContent||null!=e.tooltip||null!=t.tooltipContent||!0===t.enableHover)&&!function(e){const t=v(e),i=f(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||b(t?.interaction?.hoverFallback)}(e)}(t)?k(l,{id:"interaction.hover-only-detail",category:"interaction",impact:"high",message:"No hover-only detail path is visible from the config."}):$(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 M=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=f(t.mobileInteraction)?t.mobileInteraction:null,z=M??("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!=z&&(24>z?$(l,{id:"interaction.target-size-minimum",category:"interaction",impact:"high",message:`Small interactive marks expose an estimated ${z}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>z?$(l,{id:"interaction.target-size-comfort",category:"interaction",impact:"medium",message:`Pointer target is about ${z}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."}):k(l,{id:"interaction.target-size-comfort",category:"interaction",impact:"medium",message:`Pointer target is about ${z}px, meeting the configured ${n}px target.`}));const I=[];null==t.brush&&null==t.onBrush||I.push("brush"),!0===t.zoomable&&I.push("pan/zoom"),"isolate"!==t.legendInteraction&&"highlight"!==t.legendInteraction||I.push("legend filtering"),I.length>0&&!function(e,t){const i=v(e),a=f(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,I)&&$(l,{id:"interaction.complex-gesture-alternative",category:"interaction",impact:"high",message:`Mobile-hostile complex interaction detected: ${I.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||$(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 U=Array.isArray(t.annotations)?t.annotations.filter(e=>f(e)):[];if(U.length>("number"==typeof u?.maxAnnotations?u.maxAnnotations:3)&&430>=a&&$(l,{id:"annotation.mobile-density",category:"annotation",impact:"medium",message:U.length+" annotation(s) compete for phone plot space.",fix:"Assign annotation priority, collapse secondary notes into a callout list, or provide shorter mobileText."}),U.length>0){const e=U.filter(e=>!b(e.mobileText)&&!b(e.shortText)&&!b(e.label));e.length>0&&C(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||C(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?(k(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?$(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&&C(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."})):C(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."})),x||h||$(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 P=l.filter(e=>"warn"===e.status),N={highRisk:P.filter(e=>"high"===e.impact).length,warnings:P.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 A={pass:"PASS",warn:"WARN",manual:"MANUAL","not-applicable":"N/A"},T=["layout","density","interaction","annotation","semantics"];function M(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(` ${A[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 R(){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 I(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"),P(s,o),"svg"===i){const e=(new XMLSerializer).serializeToString(o);N(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?(N(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 P(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++)P(i[e],a[e])}function N(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 F(e){const t=e.pointId??e.id??e._transitionKey;return null==t||""===t?void 0:t+""}function L(e){return e.accessibility?.tableFields??e.accessibleDatum??e.datum??null}function D(e){return"number"==typeof e&&Number.isFinite(e)}function B(e){if(D(e.x)&&D(e.y)&&D(e.w)&&D(e.h))return{x0:e.x,y0:e.y,x1:e.x+e.w,y1:e.y+e.h};if(D(e.x)&&D(e.y)&&D(e.r))return{x0:e.x-e.r,y0:e.y-e.r,x1:e.x+e.r,y1:e.y+e.r};if(D(e.cx)&&D(e.cy)&&D(e.r))return{x0:e.cx-e.r,y0:e.cy-e.r,x1:e.cx+e.r,y1:e.cy+e.r};if(D(e.cx)&&D(e.cy)&&D(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)&&D(e[0])&&D(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 j(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 V(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 q(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 W(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!=L(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(q("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(B),y=g.filter(e=>e&&(e.x0>=e.x1||e.y0>=e.y1)).length;m.push(q("geometry.nonzero-area","geometry",0===y,"All bounded marks have positive area.",y+" marks have zero or negative area.","warn",{count:y}));const f=g.filter(e=>e&&(u>e.x0||d>e.y0||e.x1>u+c.width||e.y1>d+c.height)).length;m.push(q("geometry.bounds","geometry",0===f,"All bounded marks stay inside the plot.",f+" marks extend outside the plot bounds.","warn",{count:f}));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(q("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(F),w=x.filter(e=>!e).length,k=new Set,$=x.filter(e=>!(!e||!k.has(e)&&(k.add(e),1)));m.push(q("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(q("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 S=new Set;let A=0;const T=r.inputData;for(const e of h){const t=L(e),i=Array.isArray(t)?t:[t];let a=!1;for(const e of i)if(e&&"object"==typeof e)for(let t=0;T.length>t;t+=1)V(e,T[t],s,l,T)&&(S.add(t),a=!0);a||(A+=1)}const M=Math.max(0,T.length-S.size);m.push(q("coverage.input-data","coverage",0===M,"Every input datum is represented by the observed scene.",M+" input data items have no matching scene mark.",s.audit?.requireDatumCoverage?"fail":"warn",{represented:S.size,input:T.length})),m.push(q("coverage.scene-data","coverage",0===A,"Every data-bearing scene mark maps back to input data.",A+" scene marks do not map back to an input datum.","warn",{count:A}));const R=s.encodings?.some(e=>"count"===e.channel);!R&&h.length>S.size&&S.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 z=h.filter(e=>!1===e.interactive).length;m.push(q("interaction.hit-targets","interaction",0===z&&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.":z+" data-bearing marks explicitly disable interaction.","fail"));const I=(r.annotations??[]).map(e=>e.pointId).filter(e=>null!=e).map(String),U=I.filter(e=>!k.has(e));m.push(q("coverage.annotation-anchors","coverage",0===U.length,I.length?"All pointId annotation anchors resolve to observed scene nodes.":"No pointId annotations require scene resolution.",U.length+" annotations point to missing scene ids.","fail",{unresolved:U}));const P=(r.chart?.selectedIds??[]).filter(e=>!k.has(e));r.chart?.selectedIds&&m.push(q("interaction.selection-reachability","interaction",0===P.length,"Selected/highlighted states resolve to observed marks.",P.length+" selected ids are not reachable in the scene.","fail",{missing:P}));const N=n(o),D=(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,T):void 0}).filter(e=>!!e),W=new Set(N.flatMap(e=>Object.keys(e.values))),E=D.filter(e=>!W.has(e));m.push(q("accessibility.table-fields","accessibility",0===E.length,D.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:D,observedFields:[...W]})),new Set(T.flatMap(e=>Object.entries(e).filter(([,e])=>["string","number","boolean"].includes(typeof e)).map(([e])=>e))).size>2&&2>=W.size&&[...W].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(q("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(q("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(q("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(q("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(q("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 K=g.filter(e=>!!e).slice(0,500);for(let e=0;K.length>e;e+=1)for(let t=e+1;K.length>t;t+=1).8>j(K[e],K[t])||(J+=1);J>K.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 Q=[["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})),X={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,...Q],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:X,observedSceneEvidence:m,manualATChecks:Q}}export{o as smartTickFormat,d as adaptiveTimeTicks,m as darkenColor,h as lightenColor,S as auditMobileVisualization,M as formatMobileVisualizationAudit,R as mobileVisualizationCaveats,z as serializeSelections,I as deserializeSelections,U as exportChart,W as auditObservedScene};
@@ -1 +0,0 @@
1
- import{createSeededFrameRandom as t,schemeCategory10 as e}from"./chunk-chunk-5RKXZQ2P.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};
@@ -1,2 +0,0 @@
1
- "use client";
2
- import{getMinMax as e}from"./chunk-chunk-JJ2OOIET.module.min.js";import{createStore as t,useTheme as n,useThemeSelector as r}from"./chunk-chunk-WCX6U47H.module.min.js";import{glyphFractionClipRect as o,glyphPlacement as i,resolveGlyphPaint as a}from"./chunk-chunk-KTWEBFMX.module.min.js";import{useHydrationLifecycle as s}from"./chunk-chunk-ZCNBUZPL.module.min.js";import{useReducedMotion as l}from"./chunk-chunk-YHNZCPOZ.module.min.js";var c={fresh:1,aging:1.5,stale:3};function u(e,t,n={}){return Number.isFinite(t)&&t>0?Number.isNaN(e)?"fresh":e===1/0?"expired":0>e||t*(n.fresh??1)>e?"fresh":t*(n.aging??1.5)>e?"aging":t*(n.stale??3)>e?"stale":"expired":"fresh"}function d(e,t,n){if(null!=e)return"function"==typeof e?e(t,n):"object"==typeof e&&null!==e&&"constant"in e?e.constant:t[e]}function f(e){const{data:t,encoding:n}=e,r=[],o=new Map;return t.forEach((e,t)=>{const i=d(n.id,e,t);if(null==i||""===i)throw Error(`[semiotic] Motion encoding row ${t} resolved an empty id.`);const a=i+"";if(o.has(a))throw Error(`[semiotic] Duplicate motion encoding id "${a}".`);const s=d(n.process?.group,e,t),l=d(n.process?.stage,e,t),c=d(n.accessible?.group,e,t)??(null!=s?s+"":null!=l?l+"":void 0),u={};for(const r of Object.keys(n.evidence??{}))u[r]=d(n.evidence?.[r],e,t);const f={id:a,datum:e,time:{arrival:d(n.time?.arrival,e,t),basis:n.time?.basis,unit:n.time?.unit},placement:{x:d(n.placement?.x,e,t),y:d(n.placement?.y,e,t),lane:d(n.placement?.lane,e,t),space:n.placement?.space},kinematics:{velocityX:d(n.kinematics?.velocityX,e,t),velocityY:d(n.kinematics?.velocityY,e,t),space:n.kinematics?.space},process:{group:s,stage:l,target:d(n.process?.target,e,t),work:d(n.process?.work,e,t)},evidence:u,accessible:{description:d(n.accessible?.description,e,t),group:c,label:d(n.accessible?.label,e,t)??a}};r.push(f),o.set(a,f)}),{rows:r,byId:o}}function h(e){const t=e.now-e.arrival;return{age:t,progress:Number.isFinite(t)&&Number.isFinite(e.ttl)&&e.ttl>0?Math.max(0,t)/e.ttl:t===1/0&&Number.isFinite(e.ttl)&&e.ttl>0?1/0:0,lifecycle:u(t,e.ttl,e.thresholds)}}function y(e){const t=Math.max(0,Math.min(1,e.minOpacity??.1));if(Number.isNaN(e.age))return 1;if(e.age===1/0)return t;if(!Number.isFinite(e.extent)||0>=e.extent)return 1;const n=Math.max(0,e.age);if("step"===e.type)return(e.threshold??.5*e.extent)>n?1:t;if("exponential"===e.type){const r=e.halfLife??e.extent/2;return t+Math.pow(.5,n/(r>0?r:e.extent/2))*(1-t)}return t+Math.max(0,Math.min(1,1-n/e.extent))*(1-t)}function p(e,t){const n=Number.isFinite(e)?e:0,r=Number.isFinite(t)?t:0;return{velocityX:n,velocityY:r,speed:Math.hypot(n,r),direction:Math.atan2(r,n)}}function m(e,t,n){return Number.isFinite(n)&&n>0?p((t.x-e.x)/n,(t.y-e.y)/n):p(0,0)}var g=null;function b(e={},t){const{background:n="transparent",stroke:r="#000",lineWidth:o=1.5,spacing:i=6,angle:a=45}=e,s=Math.max(8,Math.ceil(2*i));let l;try{l=function(e){return"undefined"!=typeof OffscreenCanvas?new OffscreenCanvas(e,e):(g||(g=document.createElement("canvas")),g.width=e,g.height=e,g)}(s)}catch{return null}const c=l.getContext("2d");if(!c)return null;n&&"transparent"!==n?(c.fillStyle=n,c.fillRect(0,0,s,s)):c.clearRect(0,0,s,s),c.strokeStyle=r,c.lineWidth=o,c.lineCap="square";const u=a*Math.PI/180;if(45===a||-45===a){const e=a>0?1:-1;for(let t=-s;2*s>=t;t+=i)c.beginPath(),c.moveTo(t,0),c.lineTo(t+e*s,s),c.stroke()}else{c.save(),c.translate(s/2,s/2),c.rotate(u);const e=2*s;for(let t=-e;e>=t;t+=i)c.beginPath(),c.moveTo(-e,t),c.lineTo(e,t),c.stroke();c.restore()}return(t||c).createPattern(l,"repeat")}import{jsx as x,jsxs as v}from"react/jsx-runtime";function k(e){return"object"==typeof e&&null!==e&&"hatch"===e.type}function w(e){return["hatch",e.background??"transparent",e.stroke??"#000",e.lineWidth??1.5,e.spacing??6,e.angle??45,e.lineOpacity??1].join("|")}function $(e,t){let n=2166136261;const r=w(t);for(let e=0;r.length>e;e++)n^=r.charCodeAt(e),n=Math.imul(n,16777619);return`${e}-hatch-${(n>>>0).toString(36)}`}var M=new Map;function A(e,t){const{background:n="transparent",stroke:r="#000",lineWidth:o=1.5,spacing:i=6,angle:a=45,lineOpacity:s=1}=e,l=Math.max(8,Math.ceil(2*i));return v("pattern",{id:t,width:l,height:l,patternUnits:"userSpaceOnUse",patternTransform:0!==a?`rotate(${a})`:void 0,children:[n&&"transparent"!==n&&x("rect",{width:l,height:l,fill:n}),x("line",{x1:0,y1:0,x2:0,y2:l,stroke:r,strokeWidth:o,strokeOpacity:s}),x("line",{x1:i,y1:0,x2:i,y2:l,stroke:r,strokeWidth:o,strokeOpacity:s})]},t)}function S(e,t,n="#4e79a7"){if(k(e)){const n=$(t,e);return{fill:`url(#${n})`,def:A(e,n)}}return e&&"string"==typeof e?{fill:e}:{fill:n}}import*as W from"react";var[C,j]=t(e=>({observations:[],maxObservations:100,version:0,pushObservation(t){e(e=>{const n=e.observations;return n.push(t),n.length>e.maxObservations&&n.shift(),{version:e.version+1}})},clearObservations(){e(()=>({observations:[],version:0}))}}));function N(e){const t=j(e=>e.pushObservation),n=W.useCallback(n=>{e.onObservation?.(n),t?.(n)},[e,t]);return W.useMemo(()=>({...e,onObservation:n}),[n,e])}function O(e){const t=e.provenance,n=e.id??e.stableId??t?.stableId;return null==n||""===n?void 0:n+""}function I(e,t={}){const n=O(e);return{"data-semiotic-annotation-widget":"",...n?{"data-semiotic-annotation-id":n}:{},onClickCapture(r){const o=function(e){const t=e.nativeEvent;return"touch"===t.pointerType?"touch":0===t.detail?"keyboard":"pointer"}(r);t.onAnnotationActivate?.({annotation:e,annotationId:n,chartId:t.chartId,inputType:o}),n&&t.onObservation&&t.onObservation({type:"annotation-activate",annotationId:n,inputType:o,timestamp:Date.now(),chartType:t.chartType??"unknown",chartId:t.chartId})}}}function R(e){return e instanceof Element&&null!=e.closest("[data-semiotic-annotation-widget]")}import{jsx as L,jsxs as F}from"react/jsx-runtime";var P="var(--semiotic-bg, #ffffff)";function z(e,t){return(e+"").length*t*.6}function T(e){const{x:t,y:n,text:r,fill:o,fontSize:i=12,fontWeight:a,fontFamily:s,textAnchor:l="start",dominantBaseline:c,background:u,className:d}=e,f=function(e){return void 0===e||!0===e||"halo"===e?{type:"halo"}:!1===e||"none"===e?null:"box"===e?{type:"box"}:{type:e.type??"halo",...e}}(u),h=e=>L("text",{x:t,y:n,textAnchor:l,dominantBaseline:c,fill:o,fontSize:i,fontWeight:a,fontFamily:s,className:d,...e?{stroke:e.stroke,strokeWidth:e.strokeWidth,paintOrder:"stroke"}:{},children:r});if(!f)return h();if("halo"===f.type)return h({stroke:f.fill??P,strokeWidth:f.haloWidth??3});const y=f.padding??{x:6,y:3},p="number"==typeof y?y:y.x,m="number"==typeof y?y:y.y,g=z(r,i),b=i+2*m;let x,v;return x="middle"===l?t-g/2-p:"end"===l?t-g-p:t-p,v="middle"===c||"central"===c?n-b/2:"hanging"===c||"text-before-edge"===c?n-m:n-.8*i-m,F("g",{className:d,children:[L("rect",{x:x,y:v,width:g+2*p,height:b,rx:f.radius??3,ry:f.radius??3,fill:f.fill??P,fillOpacity:f.opacity??.85,stroke:f.stroke,strokeWidth:f.strokeWidth}),h()]})}var D=["name","label","title"],B=["type","kind","category","group","class","status","role","shape"],E=["value","amount","total","count","weight","score"],H=new Set(["x","y","z","x0","x1","y0","y1","r","cx","cy","radius","layer","row","rowindex","col","column","depth","index","order","sankeywidth","coincidentpoints","sourcelinks","targetlinks","parent","children","fx","fy","vx","vy"]);function _(e,t){for(const n of t){const t=e.find(e=>e.lower===n);if(t)return t}}function G(e,t={}){if(!e||"object"!=typeof e)return{entries:[]};const n=t.maxEntries??6,r=!1!==t.skipPositional,o=[];for(const[t,n]of Object.entries(e)){if(t.startsWith("_"))continue;if("data"===t)continue;if(r&&H.has(t.toLowerCase()))continue;if(null==n)continue;const e=typeof n;("string"===e||"number"===e||"boolean"===e||n instanceof Date)&&o.push({key:t,lower:t.toLowerCase(),value:n})}if(0===o.length)return{entries:[]};let i=o.findIndex(e=>D.includes(e.lower));const a=i>=0;0>i&&(i=o.findIndex(e=>"id"===e.lower)),0>i&&(i=o.findIndex(e=>"string"==typeof e.value));const s=0>i?void 0:o[i];let l=o.filter((e,t)=>t!==i);a&&(l=l.filter(e=>"id"!==e.lower));const c=_(l,B),u=_(l,E),d=new Set(B),f=new Set(E),h=[];c&&h.push({key:c.key,value:c.value}),u&&h.push({key:u.key,value:u.value});for(const e of l){if(h.length>=n)break;e!==c&&e!==u&&(d.has(e.lower)||f.has(e.lower)||h.push({key:e.key,value:e.value}))}return{titleKey:s?.key,title:s?.value,entries:h}}function q(e,t){return"touch"===t?Math.max(e,24):e}function V(e){return Array.isArray(e)?e[0]:e}function U(e,t,n,r){return{data:V(e),x:t,y:n,__semioticHoverData:!0,...r}}import{jsx as Y,jsxs as Z}from"react/jsx-runtime";var X={background:"var(--semiotic-tooltip-bg, rgba(0, 0, 0, 0.85))",color:"var(--semiotic-tooltip-text, white)",padding:"8px 12px",borderRadius:"var(--semiotic-tooltip-radius, 6px)",fontSize:"var(--semiotic-tooltip-font-size, 14px)",fontFamily:"var(--semiotic-font-family, inherit)",lineHeight:"1.5",boxShadow:"var(--semiotic-tooltip-shadow, 0 2px 8px rgba(0, 0, 0, 0.15))",pointerEvents:"none",maxWidth:"300px",wordWrap:"break-word"};function K(e,t){return"function"==typeof t?t(e):e[t]}function J(e,t){if(t)return t(e);if(null==e)return"";if("number"==typeof e){if(!Number.isFinite(e))return e+"";const t=Number.isInteger(e)?e:parseFloat(e.toPrecision(6));return Math.abs(t)>9999?t.toLocaleString():t+""}return e instanceof Date?e.toLocaleDateString():"object"==typeof e&&null!==e?void 0!==e.id?e.id+"":void 0!==e.name?e.name+"":JSON.stringify(e):e+""}function Q(e={}){const{fields:t,title:n,format:r,style:o={},className:i=""}=e;return e=>{if(!e||"object"!=typeof e)return null;let a;const s=[];if(n){const t=K(e,n);a=J(t,r)}if(t&&t.length>0)t.forEach(t=>{let n,o,i;"string"==typeof t?(n=t,o=t,i=r):(n=t.label,o=t.accessor||t.key||"",i=t.format||r);const a=K(e,o);s.push({label:n,value:J(a,i)})});else if(!n){const t=["value","y","name","id","label"];for(const n of t)if(void 0!==e[n]){a=J(e[n],r);break}if(!a){const t=Object.keys(e).filter(e=>!e.startsWith("_"));t.length>0&&(a=J(e[t[0]],r))}}const l={...X,...o};return Z("div",{className:("semiotic-tooltip "+i).trim(),style:l,children:[a&&Y("div",{style:{fontWeight:s.length>0?"bold":"normal"},children:a}),s.map((e,t)=>Z("div",{style:{marginTop:0===t&&a?"4px":0},children:[e.label&&Z("span",{children:[e.label,": "]}),e.value]},t))]})}}function ee(e={}){const{fields:t=[],title:n,format:r,style:o={},className:i="",showLabels:a=!0,separator:s=": "}=e;return e=>{if(!e||"object"!=typeof e)return null;const l=[];if(n){const t=K(e,n);l.push({value:J(t,r)})}if(t&&Array.isArray(t)&&t.length>0)t.forEach(t=>{let n,o,i;"string"==typeof t?(n=t,o=t,i=r):(n=t.label,o=t.accessor||t.key||"",i=t.format||r);const s=J(K(e,o),i);l.push({label:a?n:void 0,value:s})});else{const t=G(e,{skipPositional:!1});null!=t.title&&l.push({label:void 0,value:J(t.title,r),bold:!0}),t.entries.forEach(e=>{l.push({label:a?e.key:void 0,value:J(e.value,r)})})}const c={...X,...o};return Array.isArray(l)&&0!==l.length?Y("div",{className:("semiotic-tooltip semiotic-tooltip-multiline "+i).trim(),style:c,children:l.map((e,t)=>Z("div",{style:{marginBottom:l.length-1>t?"4px":0,fontWeight:e.bold?"bold":void 0},children:[e.label&&Z("strong",{children:[e.label,s]}),e.value]},t))}):null}}function te(){return e=>{const t=e.allSeries;if(!t||0===t.length)return Y("div",{className:"semiotic-tooltip",style:X,children:Y("div",{children:J(e.data?.value??e.data?.y)})});const n=e.xValue??e.data?.time??e.data?.x;return Z("div",{className:"semiotic-tooltip",style:X,children:[null!=n&&Y("div",{style:{fontWeight:600,marginBottom:4,fontSize:"0.9em",borderBottom:"1px solid var(--semiotic-border, #eee)",paddingBottom:4},children:J(n)}),t.map((e,t)=>Z("div",{style:{display:"flex",alignItems:"center",gap:6,padding:"1px 0"},children:[Y("span",{style:{width:8,height:8,borderRadius:"50%",backgroundColor:e.color,flexShrink:0}}),Y("span",{style:{flex:1,fontSize:"0.85em"},children:e.group}),Y("span",{style:{fontWeight:500,fontSize:"0.85em"},children:J(e.value)})]},t))]})}}function ne(e){if(!0!==e){if("function"==typeof e){const t=e;return e=>{let n=V(!0===e?.__semioticHoverData||e&&void 0!==e.data&&"number"==typeof e.x&&"number"==typeof e.y&&e&&("node"===e.type||"edge"===e.type||void 0!==e.nodeOrEdge||void 0!==e.allSeries||void 0!==e.stats||void 0!==e.__chartType)?e.data??{}:e);if(!n)return null;if(("node"===e?.nodeOrEdge&&"number"==typeof n?.x0&&"number"==typeof n?.x1||"edge"===e?.nodeOrEdge&&"number"==typeof n?.sankeyWidth)&&n.data&&"object"==typeof n.data&&(n=n.data),!n)return null;const r=t(n);return null==r?null:Y("div",{className:"semiotic-tooltip",style:X,children:r})}}return!1!==e&&void 0!==e&&("object"==typeof e&&null!==e&&("fields"in e||"title"in e)?Q(e):Q())}}import{createContext as re,useContext as oe,useMemo as ie}from"react";import{scaleOrdinal as ae}from"d3-scale";function se(e){return[parseInt(e.slice(1,3),16),parseInt(e.slice(3,5),16),parseInt(e.slice(5,7),16)]}function le(e,t,n){const r=e=>e.toString(16).padStart(2,"0");return`#${r(e)}${r(t)}${r(n)}`}function ce(e){const t=e.map(se),n=t.length-1;return e=>{if(0>=e){const[e,n,r]=t[0];return le(e,n,r)}if(e>=1){const[e,r,o]=t[n];return le(e,r,o)}const r=e*n,o=Math.floor(r),i=r-o,[a,s,l]=t[o],[c,u,d]=t[o+1];return le(Math.round(a+(c-a)*i),Math.round(s+(u-s)*i),Math.round(l+(d-l)*i))}}var ue=["#1f77b4","#ff7f0e","#2ca02c","#d62728","#9467bd","#8c564b","#e377c2","#7f7f7f","#bcbd22","#17becf"],de=ce(["#f7fbff","#deebf7","#c6dbef","#9ecae1","#6baed6","#4292c6","#2171b5","#08519c","#08306b"]),fe=ce(["#fff5f0","#fee0d2","#fcbba1","#fc9272","#fb6a4a","#ef3b2c","#cb181d","#a50f15","#67000d"]),he=ce(["#f7fcf5","#e5f5e0","#c7e9c0","#a1d99b","#74c476","#41ab5d","#238b45","#006d2c","#00441b"]),ye=ce(["#fff5eb","#fee6ce","#fdd0a2","#fdae6b","#fd8d3c","#f16913","#d94801","#a63603","#7f2704"]),pe=ce(["#fcfbfd","#efedf5","#dadaeb","#bcbddc","#9e9ac8","#807dba","#6a51a3","#54278f","#3f007d"]),me=ce(["#ffffff","#f0f0f0","#d9d9d9","#bdbdbd","#969696","#737373","#525252","#252525","#000000"]),ge=ce(["#440154","#482878","#3e4989","#31688e","#26828e","#1f9e89","#35b779","#6ece58","#b5de2b","#fde725"]),be=ce(["#0d0887","#41049d","#6a00a8","#8f0da4","#b12a90","#cb4679","#e16462","#f1844b","#fca636","#fcce25","#f0f921"]),xe=ce(["#000004","#160b39","#420a68","#6a176e","#932667","#bc3754","#dd513a","#f3771a","#fca50a","#f6d746","#fcffa4"]),ve=ce(["#000004","#140e36","#3b0f70","#641a80","#8c2981","#b73779","#de4968","#f7705c","#fe9f6d","#fecf92","#fcfdbf"]),ke=ce(["#00224e","#123570","#3b496c","#575d6d","#707173","#8a8678","#a59c74","#c3b369","#e1cc55","#fee838","#ffea46"]),we=ce(["#23171b","#4a58dd","#3f9ee9","#46c7af","#7eed5a","#cdf134","#fbb91f","#f56918","#c52f06","#7a0403"]),$e={blues:de,reds:fe,greens:he,viridis:ge,oranges:ye,purples:pe,greys:me,plasma:be,inferno:xe,magma:ve,cividis:ke,turbo:we};function Me(e){return e&&$e[e]||de}var Ae=ce(["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#f7f7f7","#d1e5f0","#92c5de","#4393c3","#2166ac","#053061"]),Se=ce(["#8e0152","#c51b7d","#de77ae","#f1b6da","#fde0ef","#f7f7f7","#e6f5d0","#b8e186","#7fbc41","#4d9221","#276419"]),We=ce(["#40004b","#762a83","#9970ab","#c2a5cf","#e7d4e8","#f7f7f7","#d9f0d3","#a6dba0","#5aae61","#1b7837","#00441b"]),Ce=ce(["#543005","#8c510a","#bf812d","#dfc27d","#f6e8c3","#f5f5f5","#c7eae5","#80cdc1","#35978f","#01665e","#003c30"]),je=ce(["#a50026","#d73027","#f46d43","#fdae61","#fee090","#ffffbf","#e0f3f8","#abd9e9","#74add1","#4575b4","#313695"]),Ne=ce(["#a50026","#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850","#006837"]),Oe=ce(["#9e0142","#d53e4f","#f46d43","#fdae61","#fee08b","#ffffbf","#e6f598","#abdda4","#66c2a5","#3288bd","#5e4fa2"]),Ie={category10:ue,tableau10:["#4e79a7","#f28e2c","#e15759","#76b7b2","#59a14f","#edc949","#af7aa1","#ff9da7","#9c755f","#bab0ab"],set3:["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd","#ccebc5","#ffed6f"],...$e},Re=ue,Le="#007bff";function Fe(e,t,n=Re){if(e&&"object"==typeof e&&!Array.isArray(e)){const t=Object.values(e).filter(e=>"string"==typeof e&&e.length>0);if(t.length>0)return t}if(Array.isArray(e)&&e.length>0)return e;if("string"==typeof e){const t=Ie[e];if(Array.isArray(t)&&t.length>0)return t}return t&&t.length>0?t:n}var Pe=["#4e79a7","#f28e2b","#e15759","#76b7b2","#59a14f","#edc948","#b07aa1","#ff9da7","#9c755f","#bab0ac"],ze=["#f0f0f0","#b5d4ea","#f4c2a1","#b8dab2","#d4b5e0","#f9e0a2","#a8d8d8"],Te=new Set(["aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","transparent","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen"]);function De(e,t,n){if("function"==typeof t){const r=t(e);return n&&r&&"string"==typeof r&&!function(e){const t=e.toLowerCase();return t.startsWith("#")||t.startsWith("rgb")||t.startsWith("hsl")||Te.has(t)}(r)?n(r):r}const r=e?.[t]+"";return n?n(r):Re[Math.abs(function(e){let t=0;for(let n=0;e.length>n;n++)t=(t<<5)-t+e.charCodeAt(n),t&=t;return Math.abs(t)}(r))%Re.length]}function Be(e,t){if(null==t||!Object.prototype.hasOwnProperty.call(e,t))return;const n=e[t];return"string"==typeof n&&n.length>0?n:void 0}function Ee(e,t,n="category10"){if(n&&"object"==typeof n&&!Array.isArray(n)){const e=n;return t=>Be(e,t)??"#999"}const r=Array.from(new Set(e.map(e=>e?.[t]).filter(e=>null!=e).map(e=>e+""))),o=r.every(e=>!isNaN(Number(e)));if(Array.isArray(n))return ae().domain(r).range(n).unknown("#999");const i=Ie[n]||Ie.category10;if(o&&"function"==typeof i){let e=-1/0;for(const t of r){const n=Number(t);n>e&&(e=n)}return t=>i(Number(t)/e)}{const e=Array.isArray(i)?i:Re;return ae().domain(r).range(e).unknown("#999")}}function He(e,t,n=[3,20],r){let o;if(o="function"==typeof t?t(e):e?.[t],!r)return o;const[i,a]=r,[s,l]=n;if(a===i)return(s+l)/2;let c=(o-i)/(a-i);return 0>c?c=0:c>1&&(c=1),s+c*(l-s)}import{jsx as _e}from"react/jsx-runtime";var Ge=re(null);function qe({colors:e,categories:t,colorScheme:n="category10",children:r}){const o=ie(()=>{if(e)return e;if(t){if(n&&"object"==typeof n&&!Array.isArray(n)){const e=n,r={};let o=0;for(const n of t)r[n]=Be(e,n)??Re[o++%Re.length];return r}const e=Array.isArray(n)?n:Ie[n]||Re,r={};for(let n=0;t.length>n;n++)r[t[n]]=e[n%e.length];return r}return{}},[e,t,n]);return _e(Ge.Provider,{value:o,children:r})}function Ve(){return oe(Ge)}qe.displayName="CategoryColorProvider";import{useId as Ue,useMemo as Ye,useCallback as Ze}from"react";function Xe(e){const t=[];for(const[n,r]of Object.entries(e.fields))if("point"===r.type)t.push(e=>r.values.has(e[n]));else{const[e,o]=r.range;t.push(t=>{const r=t[n];return r>=e&&o>=r})}return e=>t.every(t=>t(e))}function Ke(e,t){const n=[];for(const[r,o]of e.clauses)"crossfilter"===e.resolution&&r===t||n.push(Xe(o));return 0===n.length?()=>!0:"intersect"===e.resolution?e=>n.every(t=>t(e)):e=>n.some(t=>t(e))}function Je(e,t){let n=e.get(t);return n||(n={name:t,resolution:"union",clauses:new Map},e.set(t,n)),n}function Qe(e,t){if(e.type!==t.type)return!1;if("interval"===e.type&&"interval"===t.type)return e.range[0]===t.range[0]&&e.range[1]===t.range[1];if("point"===e.type&&"point"===t.type){if(e.values.size!==t.values.size)return!1;for(const n of e.values)if(!t.values.has(n))return!1;return!0}return!1}var[et,tt]=t(e=>({selections:new Map,setClause(t,n){e(e=>{const r=e.selections.get(t),o=r?.clauses.get(n.clientId);if(o&&function(e,t){if(e.clientId!==t.clientId||e.type!==t.type)return!1;const n=Object.entries(e.fields);if(n.length!==function(e){let t=0;for(const n in e)t++;return t}(t.fields))return!1;for(const[e,r]of n){const n=t.fields[e];if(!n||!Qe(r,n))return!1}return!0}(o,n))return{};const i=new Map(e.selections),a=Je(i,t),s=new Map(a.clauses);return s.set(n.clientId,n),i.set(t,{...a,clauses:s}),{selections:i}})},clearClause(t,n){e(e=>{const r=e.selections.get(t);if(!r||!r.clauses.has(n))return{};const o=new Map(e.selections),i=new Map(r.clauses);return i.delete(n),o.set(t,{...r,clauses:i}),{selections:o}})},setResolution(t,n){e(e=>{const r=e.selections.get(t);if(r?.resolution===n)return{};const o=new Map(e.selections),i=Je(o,t);return o.set(t,{...i,resolution:n}),{selections:o}})},clearSelection(t){e(e=>{const n=e.selections.get(t);if(!n||0===n.clauses.size)return{};const r=new Map(e.selections);return r.set(t,{...n,clauses:new Map}),{selections:r}})}}));import{useSyncExternalStore as nt}from"react";var rt={positions:new Map},ot=new Set;function it(){for(const e of ot)e()}function at(e,t){const n=rt.positions.get(e);if(n?.locked)return;if(!n||n.sourceId!==t)return;const r=new Map(rt.positions);r.delete(e),rt={positions:r},it()}function st(e,t){const n=rt.positions.get(e);if(!n?.locked)return;if(t&&n.sourceId!==t)return;const r=new Map(rt.positions);r.delete(e),rt={positions:r},it()}function lt(){return rt}function ct(e){return ot.add(e),()=>ot.delete(e)}var ut={positions:new Map};function dt(){return()=>{}}function ft(){return ut}function ht(e){const t=nt(e?ct:dt,e?lt:ft,e?lt:ft);return e?t.positions.get(e)??null:null}function yt(e){const t=Ue(),n=e.clientId||t,{name:r}=e,o=tt(e=>e.selections.get(r)),i=tt(e=>e.setClause),a=tt(e=>e.clearClause),s=Ye(()=>!!o&&o.clauses.size>0,[o]);return{predicate:Ye(()=>o&&0!==o.clauses.size?Ke(o,n):()=>!0,[o,n]),isActive:s,selectPoints:Ze(e=>{const t={};let o=!1;for(const[n,r]of Object.entries(e))t[n]={type:"point",values:new Set(r)},o=!0;o&&i(r,{clientId:n,type:"point",fields:t})},[n,r,i]),selectInterval:Ze(e=>{const t={};let o=!1;for(const[n,r]of Object.entries(e))t[n]={type:"interval",range:r},o=!0;o&&i(r,{clientId:n,type:"interval",fields:t})},[n,r,i]),clear:Ze(()=>{a(r,n)},[a,r,n]),clientId:n}}function pt(e,t){const n=Ue(),r=t||n,o=tt(e=>e.setClause),i=tt(e=>e.clearClause);return{selectPoints:Ze(t=>{const n={};let i=!1;for(const[e,r]of Object.entries(t))n[e]={type:"point",values:new Set(r)},i=!0;i&&o(e,{clientId:r,type:"point",fields:n})},[e,r,o]),clear:Ze(()=>i(e,r),[e,r,i]),clientId:r}}function mt(e){const t=e.name||"hover",{fields:n}=e,{predicate:r,isActive:o,selectPoints:i,clear:a}=yt({name:t,fields:n});return{onHover:Ze(e=>{if(!e)return void a();const t={};for(const r of n){const n=e[r];void 0!==n&&(t[r]=[n])}xt(t)&&i(t)},[n,i,a]),predicate:r,isActive:o}}function gt(e){return 2===e.length&&"number"==typeof e[0]&&"number"==typeof e[1]}function bt(e){const{name:t,xField:n,yField:r}=e,{predicate:o,isActive:i,selectInterval:a,clear:s}=yt({name:t,fields:[n,r].filter(Boolean)}),l=n&&r?"xyBrush":n?"xBrush":"yBrush",c=Ze(e=>{if(!e)return void s();const t={};"xyBrush"===l&&function(e){return 2===e.length&&Array.isArray(e[0])&&2===e[0].length&&Array.isArray(e[1])&&2===e[1].length}(e)?(n&&(t[n]=[Math.min(e[0][0],e[1][0]),Math.max(e[0][0],e[1][0])]),r&&(t[r]=[Math.min(e[0][1],e[1][1]),Math.max(e[0][1],e[1][1])])):"xBrush"===l&&gt(e)?n&&(t[n]=[Math.min(e[0],e[1]),Math.max(e[0],e[1])]):"yBrush"===l&&gt(e)&&r&&(t[r]=[Math.min(e[0],e[1]),Math.max(e[0],e[1])]),xt(t)&&a(t)},[l,n,r,a,s]);return{brushInteraction:Ye(()=>({brush:l,during:c,end:c}),[l,c]),predicate:o,isActive:i,clear:s}}function xt(e){for(const t in e)if(Object.prototype.hasOwnProperty.call(e,t))return!0;return!1}function vt(e,t,n){const r=tt(e=>e.selections.get(t));return Ye(()=>{if(!r||0===r.clauses.size)return e;const t=Ke(r,n);return e.filter(t)},[e,r,n])}import{useMemo as kt}from"react";function wt(e={}){const{limit:t=50,types:n,chartId:r}=e,o=j(e=>e.version),i=j(e=>e.observations),a=j(e=>e.clearObservations),s=kt(()=>{let e=i;if(n&&n.length>0){const t=new Set(n);e=e.filter(e=>t.has(e.type))}return r&&(e=e.filter(e=>e.chartId===r)),e.length>t&&(e=e.slice(e.length-t)),e},[i,n,r,t,o]);return{observations:s,latest:s.length>0?s[s.length-1]:null,clear:a}}import{createContext as $t,useContext as Mt,useEffect as At,useId as St,useLayoutEffect as Wt,useMemo as Ct,useRef as jt,useState as Nt,useCallback as Ot}from"react";import*as It from"react";import{jsx as Rt,jsxs as Lt}from"react/jsx-runtime";var Ft={fill:(e,t)=>Rt("rect",{style:e,width:t,height:t}),line:(e,t)=>Rt("line",{style:e,x1:0,y1:0,x2:t,y2:t})};function Pt(e,t,n,r,o){let i;return i="function"==typeof n?n(e):(0,Ft[n])(r(e,t),o),i}function zt({swatchSize:e}){return Rt("path",{d:`M${.25*e},${.55*e} L${.45*e},${.75*e} L${.8*e},${.3*e}`,fill:"none",stroke:"white",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"})}function Tt(e,t,n){return n&&n.size>0?n.has(e.label)?1:.3:null!=t?e.label===t?1:.3:1}var Dt=(e,t,n,r,o,i,a,s,l,c,u)=>{const{type:d="fill",styleFn:f,items:h}=e,y=[];let p=0;const m=!(!t&&!n),g="isolate"===c||void 0===c&&null!=o,{swatchSize:b,labelGap:x,rowHeight:v}=u;return h.forEach((e,c)=>{const u=Pt(e,c,d,f,b),k=Tt(e,r,o),w=o&&o.size>0&&o.has(e.label);y.push(Lt("g",{transform:`translate(0,${p})`,onClick:t?()=>t(e):void 0,onMouseEnter:n?()=>n(e):void 0,onMouseLeave:n?()=>n(null):void 0,tabIndex:m?s===i&&c===a?0:-1:void 0,role:m?"option":void 0,"aria-selected":m&&g?w||!1:void 0,"aria-current":m&&!g&&null!=r&&e.label===r||void 0,"aria-label":e.label,onKeyDown:m?n=>{if("Enter"!==n.key&&" "!==n.key||(n.preventDefault(),t&&t(e)),"ArrowDown"===n.key||"ArrowUp"===n.key){n.preventDefault();const e=(c+("ArrowDown"===n.key?1:-1)+h.length)%h.length;l(s,e);const t=n.currentTarget.parentElement?.children[e];t instanceof SVGElement&&t.focus()}}:void 0,onFocus:m?t=>{l(s,c),n&&n(e);const r=t.currentTarget.querySelector(".semiotic-legend-focus-ring");r&&r.setAttribute("visibility","visible")}:void 0,onBlur:m?e=>{n&&n(null);const t=e.currentTarget.querySelector(".semiotic-legend-focus-ring");t&&t.setAttribute("visibility","hidden")}:void 0,style:{cursor:m?"pointer":"default",opacity:k,transition:"opacity 150ms ease",pointerEvents:"all",outline:"none"},children:[m&&Rt("rect",{className:"semiotic-legend-focus-ring",x:-2,y:-2,width:b+x+2+7*e.label.length,height:b+4,fill:"none",stroke:"var(--semiotic-focus, #005fcc)",strokeWidth:2,rx:3,visibility:"hidden"}),u,w&&Rt(zt,{swatchSize:b}),Rt("text",{y:b/2,x:b+x,dominantBaseline:"central",style:{fontSize:"var(--semiotic-legend-font-size, 12px)"},fill:"var(--semiotic-text, #333)",children:e.label})]},"legend-item-"+c)),p+=v}),y};function Bt({config:e,orientation:t="vertical",width:n=100}){const{colorFn:r,domain:o,label:i,format:a}=e,s=a||(e=>Math.round(100*e)/100+""),l="grad-legend-"+It.useId();if("horizontal"===t){const e=12,t=Math.min(n,200),a=Math.max(0,(n-t)/2),c=[];for(let e=0;64>=e;e++){const t=e/64;c.push(Rt("stop",{offset:100*t+"%",stopColor:r(o[0]+t*(o[1]-o[0]))},e))}return Lt("g",{"aria-label":i||"Gradient legend",children:[Rt("defs",{children:Rt("linearGradient",{id:l,x1:"0%",y1:"0%",x2:"100%",y2:"0%",children:c})}),i&&Rt("text",{x:a+t/2,y:-4,textAnchor:"middle",fontSize:11,fill:"var(--semiotic-text, #333)",children:i}),Rt("rect",{x:a,y:0,width:t,height:e,fill:`url(#${l})`,rx:2}),Rt("text",{x:a,y:e+12,textAnchor:"start",fontSize:10,fill:"var(--semiotic-text-secondary, #666)",children:s(o[0])}),Rt("text",{x:a+t,y:e+12,textAnchor:"end",fontSize:10,fill:"var(--semiotic-text-secondary, #666)",children:s(o[1])})]})}const c=[];for(let e=0;64>=e;e++){const t=e/64;c.push(Rt("stop",{offset:100*t+"%",stopColor:r(o[1]-t*(o[1]-o[0]))},e))}return Lt("g",{"aria-label":i||"Gradient legend",children:[i&&Rt("text",{x:7,y:-6,textAnchor:"middle",fontSize:11,fill:"var(--semiotic-text, #333)",children:i}),Rt("defs",{children:Rt("linearGradient",{id:l,x1:"0%",y1:"0%",x2:"0%",y2:"100%",children:c})}),Rt("rect",{x:0,y:0,width:14,height:100,fill:`url(#${l})`,rx:2}),Rt("text",{x:19,y:10,fontSize:10,fill:"var(--semiotic-text-secondary, #666)",children:s(o[1])}),Rt("text",{x:19,y:100,fontSize:10,fill:"var(--semiotic-text-secondary, #666)",children:s(o[0])})]})}function Et(e){const{legendGroups:t,customClickBehavior:n,customHoverBehavior:r,highlightedCategory:o,isolatedCategories:i,legendInteraction:a,title:s="Legend",width:l=100,height:c=20,orientation:u="vertical",legendLayout:d}=e,f=function(e){const t=Math.max(1,e?.swatchSize??16),n=Math.max(t,e?.rowHeight??22);return{swatchSize:t,labelGap:Math.max(0,e?.labelGap??6),itemGap:Math.max(0,e?.itemGap??10),rowHeight:n,align:"left"===e?.align?"start":"right"===e?.align?"end":e?.align??"start",maxWidth:e?.maxWidth}}(d),[h,y]=It.useState(0),[p,m]=It.useState(0),g=It.useCallback((e,t)=>{y(e),m(t)},[]),b="vertical"===u?(({legendGroups:e,width:t,customClickBehavior:n,customHoverBehavior:r,highlightedCategory:o,isolatedCategories:i,focusedGroupIndex:a,focusedItemIndex:s,onFocusedIndexChange:l,legendInteraction:c,metrics:u})=>{const d=[],f=function(e,t){let n=24;return e.map(({hasLabel:e,itemCount:r})=>{n+=5;const o=n;let i;n+=8,e&&(n+=16,i=n,n+=8);const a=n;return n+=r*t+8,{lineY:o,labelY:i,itemsY:a,endY:n}})}(e.map(e=>({hasLabel:!!e.label,itemCount:e.items.length})),u.rowHeight);return e.forEach((e,h)=>{const y=f[h];d.push(Rt("line",{stroke:"gray",x1:0,y1:y.lineY,x2:t,y2:y.lineY},"legend-top-line legend-symbol-"+h)),e.label&&null!=y.labelY&&d.push(Rt("text",{y:y.labelY,className:"legend-group-label",style:{fontSize:"var(--semiotic-legend-font-size, 12px)"},fill:"var(--semiotic-text, #333)",children:e.label},"legend-text-"+h)),d.push(Rt("g",{className:"legend-item",transform:`translate(0,${y.itemsY})`,children:Dt(e,n,r,o,i,a,s,h,l,c,u)},"legend-group-"+h))}),d})({legendGroups:t||[],width:l,customClickBehavior:n,customHoverBehavior:r,highlightedCategory:o,isolatedCategories:i,focusedGroupIndex:h,focusedItemIndex:p,onFocusedIndexChange:g,legendInteraction:a,metrics:f}):(({legendGroups:e,height:t,width:n,customClickBehavior:r,customHoverBehavior:o,highlightedCategory:i,isolatedCategories:a,focusedGroupIndex:s,focusedItemIndex:l,onFocusedIndexChange:c,legendInteraction:u,metrics:d})=>{let f=0;const h=[];e.forEach((e,t)=>{let y=0;e.label&&(y+=16);const p=((e,t,n,r,o,i,a,s,l,c,u,d)=>{const{type:f="fill",styleFn:h,items:y}=e,p=[],{swatchSize:m,labelGap:g,itemGap:b,rowHeight:x,align:v}=u,k=!(!t&&!n),w="isolate"===c||void 0===c&&null!=o,$=y.map(e=>m+g+7*e.label.length),M=[];let A=0,S=0;$.forEach((e,t)=>{const n=0===S?e:S+b+e;d&&d>0&&S>0&&n>d?(M.push({start:A,end:t,width:S}),A=t,S=e):S=n}),y.length>0&&M.push({start:A,end:y.length,width:S}),M.forEach((e,c)=>{let u="center"===v?Math.max(0,((d??e.width)-e.width)/2):"end"===v?Math.max(0,(d??e.width)-e.width):0;for(let d=e.start;e.end>d;d++){const e=y[d],v=Pt(e,d,f,h,m),M=Tt(e,r,o),A=o&&o.size>0&&o.has(e.label);p.push(Lt("g",{transform:`translate(${u},${c*x})`,onClick:t?()=>t(e):void 0,onMouseEnter:n?()=>n(e):void 0,onMouseLeave:n?()=>n(null):void 0,tabIndex:k?s===i&&d===a?0:-1:void 0,role:k?"option":void 0,"aria-selected":k&&w?A||!1:void 0,"aria-current":k&&!w&&null!=r&&e.label===r||void 0,"aria-label":e.label,onKeyDown:k?n=>{if("Enter"!==n.key&&" "!==n.key||(n.preventDefault(),t&&t(e)),"ArrowRight"===n.key||"ArrowLeft"===n.key){n.preventDefault();const e=(d+("ArrowRight"===n.key?1:-1)+y.length)%y.length;l(s,e);const t=n.currentTarget.parentElement?.children[e];t instanceof SVGElement&&t.focus()}}:void 0,onFocus:k?t=>{l(s,d),n&&n(e);const r=t.currentTarget.querySelector(".semiotic-legend-focus-ring");r&&r.setAttribute("visibility","visible")}:void 0,onBlur:k?e=>{n&&n(null);const t=e.currentTarget.querySelector(".semiotic-legend-focus-ring");t&&t.setAttribute("visibility","hidden")}:void 0,style:{cursor:k?"pointer":"default",opacity:M,transition:"opacity 150ms ease",pointerEvents:"all",outline:"none"},children:[k&&Rt("rect",{className:"semiotic-legend-focus-ring",x:-2,y:-2,width:m+g+2+7*e.label.length,height:m+4,fill:"none",stroke:"var(--semiotic-focus, #005fcc)",strokeWidth:2,rx:3,visibility:"hidden"}),v,A&&Rt(zt,{swatchSize:m}),Rt("text",{y:m/2,x:m+g,dominantBaseline:"central",style:{fontSize:"var(--semiotic-legend-font-size, 12px)"},fill:"var(--semiotic-text, #333)",children:e.label})]},"legend-item-"+d)),u+=$[d]+b}});const W=Math.max(0,...M.map(e=>e.width)),C=M.length;return{items:p,offset:W,totalRows:C,totalHeight:C*x}})(e,r,o,i,a,s,l,t,c,u,d,d.maxWidth??n);y+=p.offset+5,h.push({label:e.label,...p,offset:y,totalRows:p.totalRows,totalHeight:p.totalHeight}),f+=y+12});const y=d.maxWidth??n;let p=f>y?0:"center"===d.align?Math.max(0,(y-f)/2):"end"===d.align?Math.max(0,y-f):0;const m=[];return h.forEach((n,r)=>{const o=e[r];o.label&&(m.push(Rt("text",{transform:`translate(${p},0) rotate(90)`,textAnchor:"start",className:"legend-group-label",style:{fontSize:"var(--semiotic-legend-font-size, 12px)"},fill:"var(--semiotic-text, #333)",children:o.label},"legend-text-"+r)),p+=16),m.push(Rt("g",{className:"legend-item",transform:`translate(${p},0)`,children:n.items},"legend-group-"+r)),p+=n.offset+5,e[r+1]&&m.push(Rt("line",{stroke:"gray",x1:p,y1:-8,x2:p,y2:(n.totalHeight||t)+0+8},"legend-top-line legend-symbol-"+r)),p+=12}),Rt("g",{children:m})})({legendGroups:t||[],title:s,height:c,width:l,customClickBehavior:n,customHoverBehavior:r,highlightedCategory:o,isolatedCategories:i,focusedGroupIndex:h,focusedItemIndex:p,onFocusedIndexChange:g,legendInteraction:a,metrics:f}),x=!(!n&&!r);return Lt("g",{role:x?"listbox":void 0,"aria-multiselectable":!(!x||"isolate"!==a&&(void 0!==a||null==i))||void 0,"aria-label":"Chart legend",style:{fontFamily:"var(--semiotic-font-family, sans-serif)"},children:[void 0!==s&&""!==s&&"vertical"===u&&Rt("text",{className:"legend-title",y:16,x:l/2,textAnchor:"middle",style:{fontSize:"var(--semiotic-legend-font-size, 12px)"},fill:"var(--semiotic-text, #333)",children:s}),b]})}import{useRef as Ht,useState as _t,useEffect as Gt}from"react";function qt(e,t,n){const r=Ht(null),[o,i]=_t(null);return Gt(()=>{if(!t&&!n)return;const e=r.current;if(!e)return;const o=new ResizeObserver(e=>{for(const t of e){const{width:e,height:n}=t.contentRect;i(t=>t&&t.w===e&&t.h===n?t:{w:e,h:n})}});return o.observe(e),()=>o.disconnect()},[t,n]),[r,[t&&o?o.w:e[0],n&&o?o.h:e[1]]]}import{jsx as Vt,jsxs as Ut}from"react/jsx-runtime";var Yt=$t(!1),Zt=$t(!1);function Xt(){return Mt(Zt)}var Kt=$t(null),Jt="undefined"==typeof window?At:Wt;function Qt(e){const t=new Set,n=[];for(const r of e)t.has(r)||(t.add(r),n.push(r));return n}function en(e,t){if(e.length!==t.length)return!1;for(let n=0;e.length>n;n++)if(e[n]!==t[n])return!1;return!0}function tn(e){const t=Mt(Kt),n=St(),r=Qt(e),o=jt([]);en(o.current,r)||(o.current=r);const i=o.current;Jt(()=>{if(t)return()=>t.unregisterCategories(n)},[t,n]),Jt(()=>{t&&t.registerCategories(n,i)},[t,n,i])}var nn="__linked-legend-isolate__",rn="__linked-legend-highlight__";function on({categoryColors:e,interaction:t,selectionName:n,field:r}){const o=Object.entries(e),i=o.map(([e])=>e),a=[{styleFn:e=>({fill:e.color||"#333",stroke:e.color||"#333"}),type:"fill",items:o.map(([e,t])=>({label:e,color:t})),label:""}],{selectPoints:s,clear:l}=yt({name:n,fields:[r],clientId:nn}),{selectPoints:c,clear:u}=yt({name:n,fields:[r],clientId:rn}),d=tt(e=>e.selections.get(n)),{isolatedCategories:f,highlightedCategory:h}=Ct(()=>{const e=new Set;let t=null;const n=d?.clauses.get(nn)?.fields[r];if("point"===n?.type)for(const t of n.values)e.add(t+"");const o=d?.clauses.get(rn)?.fields[r];if("point"===o?.type){const e=o.values.values().next().value;null!=e&&(t=e+"")}return{isolatedCategories:e,highlightedCategory:t}},[d,r]),y=Ot(e=>{"highlight"===t&&(e?c({[r]:[e.label]}):u())},[t,r,c,u]),p=Ot(e=>{if("isolate"!==t)return;const n=new Set(f);n.has(e.label)?n.delete(e.label):n.add(e.label),0===n.size||n.size===i.length?l():s({[r]:Array.from(n)})},[t,r,f,i.length,s,l]),[m,[g]]=qt([0,0],!0,!1),b=Ct(()=>function(e,t){if(!t||0===e.length)return 1;let n=0,r=1;for(const o of e){const e=26+7*o.length;n>0&&n+e>t&&(r++,n=0),n+=e}return r}(o.map(([e])=>e),g),[o,g]);return 0===o.length?null:Vt("div",{ref:m,style:{width:"100%",display:"block"},children:Vt("svg",{width:"100%",height:Math.max(30,22*b+8),style:{display:"block",overflow:"visible"},children:Vt(Et,{legendGroups:a,title:!1,orientation:"horizontal",width:g,height:20,customHoverBehavior:"highlight"===t?y:void 0,customClickBehavior:"isolate"===t?p:void 0,highlightedCategory:h,isolatedCategories:f})})})}function an({children:e,selections:t,showLegend:n,legendPosition:r="top",legendInteraction:o="none",legendSelectionName:i="legend",legendField:a="category"}){const s=Ct(()=>{if(!t)return;const e=new Map;for(const[n,r]of Object.entries(t))r.resolution&&e.set(n,{name:n,resolution:r.resolution,clauses:new Map});return e.size>0?{selections:e}:void 0},[t]),l=Ve(),[c,u]=Nt({}),d=jt({}),f=Ct(()=>({registerCategories:(e,t)=>{const n=Qt(t);u(t=>en(t[e]??[],n)?t:{...t,[e]:n})},unregisterCategories:e=>{u(t=>{if(!(e in t))return t;const n={...t};return delete n[e],n})}}),[]),h=Ct(()=>{const e=[];for(const t of Object.values(c))for(const n of t)e.push(n);return Qt(e)},[c]),y=Ct(()=>{const e=l??{},t=d.current;let n=Object.keys(e).length+Object.keys(t).length;for(const r of h)e[r]||t[r]||(t[r]=Re[n%Re.length],n++);const r={...e};for(const n of h)r[n]=e[n]??t[n];return r},[l,h]),p=void 0===n||n,m=Object.keys(y).length>0;return Vt(et,{initialState:s,children:Vt(C,{children:Vt(Zt.Provider,{value:!0,children:Vt(Kt.Provider,{value:f,children:Vt(qe,{colors:y,children:Ut(Yt.Provider,{value:p&&m,children:[p&&"top"===r&&Vt(on,{categoryColors:y,interaction:o,selectionName:i,field:a}),e,p&&"bottom"===r&&Vt(on,{categoryColors:y,interaction:o,selectionName:i,field:a})]})})})})})})}function sn(e){return!!e&&"object"==typeof e&&!Array.isArray(e)}function ln(e,t){const{when:n}=e,r=t.width,o=t.height,i=function(e){if("number"==typeof e.height&&e.height>0)return e.width/e.height}(t),a=function(e){if("number"==typeof e.height&&e.height>0)return e.height>e.width?"portrait":"landscape"}(t);return!("number"==typeof n.minWidth&&n.minWidth>r||"number"==typeof n.maxWidth&&r>n.maxWidth||"number"==typeof n.minHeight&&("number"!=typeof o||n.minHeight>o)||"number"==typeof n.maxHeight&&("number"!=typeof o||o>n.maxHeight)||"number"==typeof n.minAspectRatio&&("number"!=typeof i||n.minAspectRatio>i)||"number"==typeof n.maxAspectRatio&&("number"!=typeof i||i>n.maxAspectRatio)||n.orientation&&a!==n.orientation)}function cn(e,t,n=e.responsiveRules){if(!Array.isArray(n)||0===n.length)return{props:e,matches:[]};const r=n.map((e,t)=>({rule:e,index:t})).filter(e=>ln(e.rule,t)).sort((e,t)=>("number"==typeof e.rule.priority?e.rule.priority:e.index)-("number"==typeof t.rule.priority?t.rule.priority:t.index));return{props:r.reduce((e,t)=>function(e,t){const n={...e,...t};for(const r of["margin","frameProps","mobileSemantics","style"])sn(e[r])&&sn(t[r])&&(n[r]={...e[r],...t[r]});return"string"==typeof e.className&&"string"==typeof t.className&&(n.className=`${e.className} ${t.className}`),n}(e,t.rule.transform),e),matches:r}}var un=Object.freeze([]);function dn(e){if(!e)return un;let t=!1;for(let n=0;e.length>n;n++){const r=e[n];if(null==r||"object"!=typeof r){t=!0;break}}if(!t)return e;const n=[];for(const t of e)null!=t&&"object"==typeof t&&n.push(t);return n}var fn={data:"data",domain:"domain",layout:"layout","scene-geometry":"sceneGeometry","scene-style":"sceneStyle","data-paint":"dataPaint","interaction-paint":"interactionPaint",overlay:"overlay",accessibility:"accessibility",evidence:"evidence"};function hn(e,t){const n={...e};for(const e of t)n[fn[e]]++;return n}function yn(e,t,n){const r=new Set(t);return{changeSet:{...e,...e.keys?{keys:[...e.keys]}:{}},changed:r,revisions:hn(n,r)}}var pn=class{constructor(){this.revisions={data:0,domain:0,layout:0,sceneGeometry:0,sceneStyle:0,dataPaint:0,interactionPaint:0,overlay:0,accessibility:0,evidence:0},this.latest=yn({kind:"initialize"},[],this.revisions),this.listeners=new Set}get last(){return this.latest}subscribe(e){return this.listeners.add(e),()=>this.listeners.delete(e)}record(e,t){const n=yn(e,t,this.revisions);this.revisions=n.revisions,this.latest=n;for(const e of[...this.listeners])e();return n}};import{memo as mn,useEffect as gn,useRef as bn}from"react";var xn={sceneGeometry:0,layout:0,domain:0};function vn(e){const{domain:t,layout:n,sceneGeometry:r}=e.revisions;return{domain:t,layout:n,sceneGeometry:r}}function kn(e,t){return{sceneGeometry:Math.max(e.sceneGeometry,t.sceneGeometry),layout:Math.max(e.layout,t.layout),domain:Math.max(e.domain,t.domain)}}var wn="production"!==process.env.NODE_ENV,$n={revisions:xn,signature:"",sawSignals:!1,wasUnconsumed:!1,warnUnconsumed:!1},Mn=class{constructor(e="scene host"){this.hostName=e,this.lastConsumed=xn,this.lastObserved=xn,this.lastDuplicateWarning="",this.lastUnconsumedWarning=""}observeUpdateResult(e){wn&&(this.lastObserved=kn(this.lastObserved,vn(e)))}beforeCompute(e,t){if(!wn)return $n;const n=kn(vn(e),this.lastObserved),r=function(e){return`${e.sceneGeometry}|${e.layout}|${e.domain}`}(n),o=!((i=n).sceneGeometry===(a=this.lastConsumed).sceneGeometry&&i.layout===a.layout&&i.domain===a.domain);var i,a;return{revisions:n,signature:r,sawSignals:e.changed.has("scene-geometry")||e.changed.has("layout")||e.changed.has("domain"),wasUnconsumed:o,warnUnconsumed:!t&&o&&this.lastUnconsumedWarning!==r}}afterCompute(e,t,n){if(wn){if(t&&e.wasUnconsumed&&(this.lastConsumed=e.revisions),e.warnUnconsumed&&!t)return console.warn(`[semiotic] ${this.hostName} observed scene-affecting revisions without a scene rebuild: ${e.signature}.`),void(this.lastUnconsumedWarning=e.signature);t&&e.sawSignals&&!e.wasUnconsumed&&!n&&this.lastDuplicateWarning!==e.signature?(console.warn(`[semiotic] ${this.hostName} performed scene rebuild with unchanged scene revisions: ${e.signature}.`),this.lastDuplicateWarning=e.signature):t&&!e.sawSignals&&(this.lastDuplicateWarning="")}}};function An(e){return bn(new Mn(e))}function Sn(e,t,n,r=!1,o=!1){const i=e.beforeCompute(t.getLastUpdateResult(),r);n(),e.afterCompute(i,!0,o)}var Wn=mn(function({store:e,diagnostics:t}){return gn(()=>{const n=()=>t.observeUpdateResult(e.getUpdateSnapshot());return n(),e.subscribeUpdateResult(n)},[t,e]),null});function Cn(...e){let t;for(const n of e)n&&(t=jn(t)&&jn(n)?{legendGroups:[...t.legendGroups,...n.legendGroups]}:n);return t}function jn(e){return"object"==typeof e&&null!==e&&"legendGroups"in e&&Array.isArray(e.legendGroups)}import{jsx as Nn}from"react/jsx-runtime";function On(e){const{legend:t,totalWidth:n,totalHeight:r,margin:o,legendPosition:i="right",legendLayout:a,title:s,legendHoverBehavior:l,legendClickBehavior:c,legendHighlightedCategory:u,legendIsolatedCategories:d,legendInteraction:f}=e;if(!t)return null;const h="top"===i||"bottom"===i,y=!!s,p=Math.max(0,n-o.left-o.right),m=Math.max(1,h?a?.maxWidth??p:100);let g,b;return"left"===i?(g=Math.max(4,o.left-m-10),b=o.top):"top"===i?(g=o.left,b=y?32:8):"bottom"===i?(g=o.left,b=r-o.bottom+38):(g=n-o.right+10,b=o.top),Nn("g",{transform:`translate(${g}, ${b})`,children:(x=t,"object"==typeof x&&null!==x&&"gradient"in x?Nn(Bt,{config:t.gradient,orientation:h?"horizontal":"vertical",width:m}):jn(t)?Nn(Et,{legendGroups:t.legendGroups,title:"",width:m,orientation:h?"horizontal":"vertical",legendLayout:a,customHoverBehavior:l,customClickBehavior:c,highlightedCategory:u,isolatedCategories:d,legendInteraction:f}):t)});var x}import{jsx as In}from"react/jsx-runtime";var Rn={secondary:0,primary:3},Ln=".annotation-deferred{opacity:0;pointer-events:none;transition:opacity .12s ease}.stream-xy-frame:hover .annotation-deferred,.stream-ordinal-frame:hover .annotation-deferred,.stream-network-frame:hover .annotation-deferred,.stream-geo-frame:hover .annotation-deferred,.stream-xy-frame:focus-within .annotation-deferred,.stream-ordinal-frame:focus-within .annotation-deferred,.stream-network-frame:focus-within .annotation-deferred,.stream-geo-frame:focus-within .annotation-deferred{opacity:1;pointer-events:auto}@media (prefers-reduced-motion:reduce){.annotation-deferred{transition:none}}";function Fn(e){return!0===e?._annotationDeferred}function Pn(e){return"blended"===e?.cohesion||"layer"===e?.cohesion?e.cohesion:null}function zn(e){const t=e?.provenance?.confidence;return"number"==typeof t&&Number.isFinite(t)?Math.max(0,Math.min(1,t)):null}function Tn(e){return Math.max(.72,.95-.06*e)}import*as Dn from"react";import{jsx as Bn,jsxs as En}from"react/jsx-runtime";function Hn(e,t=120,n=8){if(!e)return[];const r=Math.max(1,Math.floor(t/n)),o=e.split(/\s+/),i=[];let a="";for(const e of o)a&&a.length+1+e.length>r?(i.push(a),a=e):a=a?`${a} ${e}`:e;return a&&i.push(a),i}function _n(e,t,n,r){return"curly"===e?r?`M0,0 C${.6*n},0 ${.4*n},${t/2} ${n},${t/2} C${.4*n},${t/2} ${.6*n},${t} 0,${t}`:`M0,0 C0,${.6*n} ${t/2},${.4*n} ${t/2},${n} C${t/2},${.4*n} ${t},${.6*n} ${t},0`:r?`M0,0 L${n},0 L${n},${t} L0,${t}`:`M0,0 L0,${n} L${t},${n} L${t},0`}function Gn(e,t,n,r){if(!e)return Bn("g",{className:"annotation-note"});const{label:o,title:i,orientation:a,align:s,wrap:l=120,noWrap:c}=e;if(!o&&!i)return Bn("g",{className:"annotation-note"});let u=a;u||(u=Math.abs(t)>Math.abs(n)?"leftRight":"topBottom");let d=s;d&&"dynamic"!==d||(d="topBottom"===u?0>t?"right":"left":0>n?"bottom":"top");let f="start";"topBottom"===u?"right"===d?f="end":"middle"===d&&(f="middle"):f=0>t?"end":"start";const h=16,y=i?c?[i]:Hn(i,l):[],p=o?c?[o]:Hn(o,l):[],m="leftRight"===u?"end"===f?-4:4:0;let g=0;const b=[],x=r||"var(--semiotic-annotation-color, var(--semiotic-text, #333))";e.useHTML||e.html?b.push(Bn("foreignObject",{className:"annotation-note-html",x:"end"===f?m-l:"middle"===f?m-l/2:m,y:-16,width:l,height:Math.max(h,(y.length+p.length)*h+(i&&o?2:0))+h,style:{overflow:"visible"},children:En("div",{xmlns:"http://www.w3.org/1999/xhtml",style:{color:x,fontSize:"12px",lineHeight:"16px",overflow:"visible",textAlign:"end"===f?"right":"middle"===f?"center":"left",whiteSpace:c?"nowrap":"normal",wordBreak:"break-word"},children:[i&&Bn("div",{className:"annotation-note-title",style:{fontWeight:"bold"},children:i}),o&&Bn("div",{className:"annotation-note-label",children:o})]})},"annotation-note-html")):(y.length>0&&(b.push(Bn("text",{className:"annotation-note-title",fill:x,textAnchor:f,fontWeight:"bold",children:y.map((e,t)=>Bn("tspan",{x:m,dy:0===t?0:h,children:e},t))},"annotation-note-title")),g=y.length*h),p.length>0&&b.push(Bn("text",{className:"annotation-note-label",fill:x,textAnchor:f,y:g,children:p.map((e,t)=>Bn("tspan",{x:m,dy:0===t?0:h,children:e},t))},"annotation-note-label")));let v=null;if((i||o)&&(0!==t||0!==n))if("topBottom"===u){const e=Math.min(l,120);let t=0,n=e;"end"===f?(t=-e,n=0):"middle"===f&&(t=-e/2,n=e/2),v=Bn("line",{className:"note-line",x1:t,x2:n,y1:0,y2:0,stroke:r||"var(--semiotic-text-secondary, currentColor)"})}else{const e=(y.length+p.length)*h+(p.length>0?h:0);let t=0,n=e;"bottom"===d?(t=-e,n=0):"middle"===d&&(t=-e/2,n=e/2),v=Bn("line",{className:"note-line",x1:0,x2:0,y1:t,y2:n,stroke:r||"var(--semiotic-text-secondary, currentColor)"})}const k=Math.max(0,y.length+p.length-1)*h;let w=0;return"topBottom"===u?w=0>n?-(k+2):18:"leftRight"===u&&(w="middle"===d?-(k+h+(p.length>0&&y.length>0?2:0))/2+8:"bottom"===d||0>n?-(k+2):18),En("g",{className:"annotation-note",transform:`translate(${t},${n})`,children:[Bn("g",{className:"annotation-note-content",transform:0!==w?`translate(0,${w})`:void 0,children:b}),v]})}function qn(e,t,n,r,o){const i=[];switch(e){case"callout-circle":{const e=(t?.radius||0)+(t?.radiusPadding||0);e>0&&i.push(Bn("circle",{r:e,fill:"none",stroke:n||"var(--semiotic-text-secondary, currentColor)"},"subject-circle"));break}case"callout-rect":{const e=t?.width||0,r=t?.height||0;(e>0||r>0)&&i.push(Bn("rect",{width:e,height:r,fill:"none",stroke:n||"var(--semiotic-text-secondary, currentColor)"},"subject-rect"));break}case"callout-custom":t?.custom&&i.push(...Array.isArray(t.custom)?t.custom:[t.custom]);break;case"xy-threshold":{const e=r||0,a=o||0;if(void 0!==t?.x){const r=(t.x||0)-e;i.push(Bn("line",{x1:r,y1:(t.y1||0)-a,x2:r,y2:(t.y2||0)-a,stroke:n||"var(--semiotic-text-secondary, currentColor)",strokeDasharray:"5,5"},"threshold-line"))}else if(void 0!==t?.y){const r=(t.y||0)-a;i.push(Bn("line",{x1:(t.x1||0)-e,y1:r,x2:(t.x2||0)-e,y2:r,stroke:n||"var(--semiotic-text-secondary, currentColor)",strokeDasharray:"5,5"},"threshold-line"))}else void 0!==t?.x1||void 0!==t?.x2?i.push(Bn("line",{x1:(t.x1||0)-e,y1:0,x2:(t.x2||0)-e,y2:0,stroke:n||"var(--semiotic-text-secondary, currentColor)",strokeDasharray:"5,5"},"threshold-line")):void 0===t?.y1&&void 0===t?.y2||i.push(Bn("line",{x1:0,y1:(t.y1||0)-a,x2:0,y2:(t.y2||0)-a,stroke:n||"var(--semiotic-text-secondary, currentColor)",strokeDasharray:"5,5"},"threshold-line"));break}case"bracket":{const e=t?.type||"curly",r=t?.width??t?.height;void 0!==r&&i.push(Bn("path",{d:_n(e,r,t?.depth||30,void 0===t?.width),fill:"none",stroke:n||"var(--semiotic-text-secondary, currentColor)"},"bracket-path"));break}}return Bn("g",{className:"annotation-subject",children:i})}function Vn(e,t,n,r,o,i){const a=[];let s=0,l=0;if("callout-circle"!==o&&"label"!==o||!i?.radius){if("callout-rect"===o&&i){const n=i.width||0,r=i.height||0;if(n>0||r>0){const o=n/2,i=r/2,a=e-o,c=t-i;if(0!==a||0!==c){const e=Math.abs(a),t=Math.abs(c),u=n/2,d=r/2,f=e*d>t*u?u/e:d/t;s=o+a*f,l=i+c*f}}}else if("bracket"===o&&i){const e=i.width,t=i.height,n=i.depth||30;void 0!==e?(s=e/2,l=n):void 0!==t&&(s=n,l=t/2)}}else{const n=(i.radius||0)+(i.radiusPadding||0);if(n>0&&(0!==e||0!==t)){const r=Math.atan2(t,e);s=Math.cos(r)*n,l=Math.sin(r)*n}}const c=Math.sqrt((e-s)**2+(t-l)**2);if(c>.5){const o=r||"var(--semiotic-text-secondary, currentColor)",i="curve"===n?.type;let u=Math.atan2(t-l,e-s);if(i){const r=(s+e)/2,i=(l+t)/2,d=-(t-l)/c,f=(e-s)/c,h=(n?.curve??.25)*c,y=r+d*h,p=i+f*h;a.push(Bn("path",{className:"connector-curve",d:`M${s},${l}Q${y},${p} ${e},${t}`,fill:"none",stroke:o},"connector-line")),u=Math.atan2(p-l,y-s)}else a.push(Bn("line",{x1:s,y1:l,x2:e,y2:t,stroke:o},"connector-line"));if("arrow"===n?.end){const e=10,t=16/180*Math.PI;a.push(Bn("path",{d:`M${s},${l}L${s+e*Math.cos(u+t)},${l+e*Math.sin(u+t)}L${s+e*Math.cos(u-t)},${l+e*Math.sin(u-t)}Z`,fill:o,stroke:"none"},"connector-arrow"))}}return Bn("g",{className:"annotation-connector",children:a})}function Un(e){const{x:t=0,y:n=0,dx:r,dy:o,nx:i,ny:a,note:s,connector:l,subject:c,type:u,color:d,className:f,disable:h,opacity:y,strokeDasharray:p,events:m={},"data-testid":g}=e,b=Array.isArray(t)?t[0]??0:t,x=Array.isArray(n)?n[0]??0:n,v=new Set(Array.isArray(h)?h:[]);let k=r||0,w=o||0;null!=i&&(k=i-b),null!=a&&(w=a-x);const $="string"==typeof u?u:"label";if("bracket"===$&&c&&0===k&&0===w)if(void 0!==c.width){k=c.width/2;const e=c.depth||30;w=e+(0>e?-5:5)}else if(void 0!==c.height){const e=c.depth||30;k=e+(0>e?-5:5),w=c.height/2}return En("g",{className:("annotation "+(f||"")).trim(),transform:`translate(${b},${x})`,"data-testid":g,...null!=y&&{opacity:y},...p&&{strokeDasharray:p},...m,children:[!v.has("connector")&&Vn(k,w,l,d,$,c),!v.has("subject")&&qn($,c,d,b,x),!v.has("note")&&Gn(s,k,w,d)]})}function Yn(e){const{noteData:t}=e,{screenCoordinates:n}=t,r="string"==typeof t.type?t.type:"label",o=t.eventListeners||t.events||{};if(t.coordinates&&n){const e=t.nx||n[0][0]+(t.dx??0),o=t.ny||n[0][1]+(t.dy??0),i=n.map((n,i)=>{const a=Object.assign({},t,{note:0===i?t.note:{label:""},x:n[0],y:n[1],nx:e,ny:o});return Bn(Un,{"data-testid":"semiotic-annotation",...a,type:r},"multi-annotation-"+i)});return Bn("g",{children:i})}const i=t.note||{title:"none",label:t.label},a=`${i.label}-${i.title}-${t.i}`;return Bn(Un,{"data-testid":"semiotic-annotation",events:o,...t,type:r},a)}import{packEnclose as Zn}from"d3-hierarchy";import{area as Xn,curveLinear as Kn,curveMonotoneX as Jn,curveMonotoneY as Qn,curveStep as er,curveStepAfter as tr,curveStepBefore as nr,curveBasis as rr,curveCardinal as or,curveCatmullRom as ir}from"d3-shape";function ar(e){return Math.round(100*e)/100}function sr(e,t=2){const n=[],r=[],o=t+1;for(let t=0;o>t;t++){let i=0;for(const[n,r]of e)null!==r&&(i+=n**t*r);n.push(i);const a=[];for(let n=0;o>n;n++){let r=0;for(const[o,i]of e)null!==i&&(r+=o**(t+n));a.push(r)}r.push(a)}r.push(n);const i=function(e,t){const n=e,r=e.length-1,o=[t];for(let e=0;r>e;e++){let t=e;for(let o=e+1;r>o;o++)Math.abs(n[e][o])>Math.abs(n[e][t])&&(t=o);for(let o=e;r+1>o;o++){const r=n[o][e];n[o][e]=n[o][t],n[o][t]=r}for(let t=e+1;r>t;t++)for(let o=r;o>=e;o--)n[o][t]-=n[o][e]*n[e][t]/n[e][e]}for(let e=r-1;e>=0;e--){let t=0;for(let i=e+1;r>i;i++)t+=n[i][e]*o[i];o[e]=(n[r][e]-t)/n[e][e]}return o}(r,o).map(ar);return{points:e.map(([e])=>[ar(e),ar(i.reduce((t,n,r)=>t+n*e**r,0))]),equation:[...i].reverse()}}function lr(e,t){const n=t.scales?.x??t.scales?.time;return n?null!=e.x?n(e.x):t.xAccessor&&null!=e[t.xAccessor]?n(e[t.xAccessor]):null:null}function cr(e,t){const n=t.scales?.y??t.scales?.value;return n?null!=e.y?n(e.y):t.yAccessor&&null!=e[t.yAccessor]?n(e[t.yAccessor]):null:null}function ur(e){return null==e?null:e+""}function dr(e,t,n){return t.stickyPositionCache?.set(e,n),n}function fr(e,t,n){const r=e.anchor||e.lifecycle?.anchor||"fixed";if("latest"===r){if(null!=e.pointId&&n.pointNodes&&n.pointNodes.length>0)for(let r=n.pointNodes.length-1;r>=0;r--){const o=n.pointNodes[r];if(o.pointId===e.pointId)return dr(t,n,{x:o.x,y:o.y})}const r=function(e){const t=e.data;if(!t||0===t.length)return null;const n=t[t.length-1],r=e.scales?.x??e.scales?.time,o=e.scales?.y??e.scales?.value;if(!r||!o)return null;const i=n[e.xAccessor||"x"],a=n[e.yAccessor||"y"];return null==i||null==a?null:{x:r(i),y:o(a)}}(n);return r?dr(t,n,r):null}if("semantic"===r){const r=function(e,t,n){const r=function(e){return ur(e.provenance?.stableId??e.stableId)}(e);if(!r)return null;const o=n.pointNodes?.find(e=>ur(e.pointId)===r);if(o)return dr(t,n,{x:o.x,y:o.y});const i=n.data?.find(e=>function(e){return ur(e.stableId??e.id??e.provenance?.stableId)}(e)===r);if(!i)return null;const a=lr(i,n),s=cr(i,n);return null==a||null==s?null:dr(t,n,{x:a,y:s})}(e,t,n);if(r)return r}let o=null,i=null;if(null!=e.pointId&&n.pointNodes){const t=n.pointNodes.find(t=>t.pointId===e.pointId);t&&(o=t.x,i=t.y)}if(null!=o&&null!=i||(o=lr(e,n),i=cr(e,n)),null!=o&&null!=i)return dr(t,n,{x:o,y:i});if("sticky"===r){const e=n.stickyPositionCache?.get(t);if(e)return e}return null}function hr(e,t,n,r=50){return!(-r>e||e>(n.width||0)+r||-r>t||t>(n.height||0)+r)}import{jsx as yr,jsxs as pr}from"react/jsx-runtime";var mr={linear:Kn,monotoneX:Jn,monotoneY:Qn,step:er,stepAfter:tr,stepBefore:nr,basis:rr,cardinal:or,catmullRom:ir};function gr(e,t,n,r){const o=[];return e.forEach((e,i)=>{let a;if(n){const o=n(e,i,r);a=null!=o?o:t(e,i,r)}else a=t(e,i,r);a&&o.push({node:a,annotation:e})}),function(e){const t=e.map((e,t)=>{return{p:e,i:t,emphasis:(n=e.annotation,"primary"===n?.emphasis||"secondary"===n?.emphasis?n.emphasis:null),confidence:zn(e.annotation),readingOrder:null,rank:1};var n}),n=t.some(e=>null!=e.emphasis||null!=e.confidence),r=e.some(e=>Fn(e.annotation)),o=e.some(e=>null!=Pn(e.annotation)),i=e.some(e=>"layer"===Pn(e.annotation));if(!n&&!r&&!o)return e.map(e=>e.node);const a=t.filter(e=>null==e.emphasis&&null!=e.confidence).slice().sort((e,t)=>(t.confidence??0)-(e.confidence??0)||e.i-t.i);a.forEach((e,t)=>{e.readingOrder=t,e.rank=2-t/Math.max(1,a.length)});for(const e of t)e.emphasis&&(e.rank=Rn[e.emphasis]);const s=t.sort((e,t)=>e.rank-t.rank||e.i-t.i).map(e=>{const{p:t,i:n,emphasis:r,readingOrder:o}=e,i=Fn(t.annotation);let a=t.node;if("primary"===r||"secondary"===r||null!=o){const e=null==r&&null!=o;a=In("g",{className:e?"annotation-emphasis annotation-emphasis--inferred":"annotation-emphasis annotation-emphasis--"+r,..."secondary"===r?{opacity:.6,fontSize:"0.88em"}:{},...e?{opacity:Tn(o),"data-annotation-reading-order":o}:{},children:t.node},"annotation-emphasis-"+n)}const s=Pn(t.annotation);return s&&(a=In("g",{className:"annotation-cohesion--"+s,children:a},"annotation-cohesion-"+n)),i&&(a=In("g",{className:"annotation-deferred","data-annotation-disclosure":"deferred",children:a},"annotation-deferred-"+n)),a});return r&&s.unshift(In("style",{children:Ln},"annotation-disclosure-style")),i&&s.unshift(In("style",{children:".annotation-cohesion--layer text,.annotation-cohesion--layer tspan{fill:var(--semiotic-annotation-color,var(--semiotic-text-secondary,#666));font-style:italic}"},"annotation-cohesion-style")),s}(o)}function br(t,n={}){return function(t,r,o){switch(t.type){case"label":case"callout":case"callout-circle":case"callout-rect":{const e=fr(t,r,o);if(!e)return null;const{x:n,y:i}=e;if(!hr(n,i,o))return null;const a="callout"===t.type?"callout-circle":t.type,s="callout-circle"===a?{radius:t.radius??12,radiusPadding:t.radiusPadding}:"callout-rect"===a?{width:t.width,height:t.height}:void 0;return yr(Yn,{noteData:{x:n,y:i,dx:t.dx??30,dy:t.dy??-30,note:{label:t.label,title:t.title,wrap:t.wrap||120},type:a,...s?{subject:s}:{},connector:t.connector||{end:"arrow"},color:t.color,disable:t.disable,opacity:t.opacity,strokeDasharray:t.strokeDasharray,className:t.className}},"ann-"+r)}case"x-threshold":{const e=lr(null!=t.value?{...t,x:t.value}:t,o);if(null==e)return null;const n=t.color||"#f97316",i=t.labelPosition||"top";let a;a="bottom"===i?(o.height||0)-4:"center"===i?(o.height||0)/2:16;const s=e>.6*(o.width||0),l=s?e-4:e+4,c=s?"end":"start";return pr("g",{opacity:t.opacity,children:[yr("line",{x1:e,y1:0,x2:e,y2:o.height||0,stroke:n,strokeWidth:t.strokeWidth||1.5,strokeDasharray:t.strokeDasharray||"6,3"}),t.label&&yr(T,{x:l,y:a,text:t.label,textAnchor:c,fill:n,fontSize:12,fontWeight:"bold",background:t.labelBackground??"halo"})]},"ann-"+r)}case"y-threshold":{const e=cr(null!=t.value?{...t,y:t.value}:t,o);if(null==e)return null;const n=t.color||"#f97316",i=t.labelPosition||"right";let a,l;"left"===i?(a=4,l="start"):"center"===i?(a=(o.width||0)/2,l="middle"):(a=(o.width||0)-4,l="end");const c=20>(s=e)?Math.min((o.height||0)-4,s+16):s-4;return pr("g",{opacity:t.opacity,children:[yr("line",{x1:0,y1:e,x2:o.width||0,y2:e,stroke:n,strokeWidth:t.strokeWidth||1.5,strokeDasharray:t.strokeDasharray||"6,3"}),t.label&&yr(T,{x:a,y:c,text:t.label,textAnchor:l,fill:n,fontSize:12,fontWeight:"bold",background:t.labelBackground??"halo"})]},"ann-"+r)}case"enclose":{const e=(t.coordinates||[]).map(e=>({x:lr({...e,type:"point"},o),y:cr({...e,type:"point"},o),r:1})).filter(e=>null!=e.x&&null!=e.y);if(2>e.length)return null;const n=Zn(e),i=t.padding||10;return pr("g",{children:[yr("circle",{cx:n.x,cy:n.y,r:n.r+i,fill:t.fill||"none",fillOpacity:t.fillOpacity||.1,stroke:t.color||"var(--semiotic-text-secondary, #666)",strokeWidth:1.5,strokeDasharray:"4,2"}),t.label&&yr(T,{x:n.x,y:n.y-n.r-i-4,textAnchor:"middle",fill:t.color||"var(--semiotic-text-secondary, #666)",fontSize:12,text:t.label,background:t.labelBackground??"none"})]},"ann-"+r)}case"rect-enclose":{const n=(t.coordinates||[]).map(e=>({x:lr({...e,type:"point"},o),y:cr({...e,type:"point"},o)})).filter(e=>null!=e.x&&null!=e.y);if(2>n.length)return null;const i=t.padding||10,a=n.map(e=>e.x),s=n.map(e=>e.y),[l,c]=e(a),[u,d]=e(s),f=l-i,h=c+i,y=u-i;return pr("g",{children:[yr("rect",{x:f,y:y,width:h-f,height:d+i-y,fill:t.fill||"none",fillOpacity:t.fillOpacity||.1,stroke:t.color||"var(--semiotic-text-secondary, #666)",strokeWidth:1.5,strokeDasharray:"4,2"}),t.label&&yr(T,{x:(f+h)/2,y:y-4,textAnchor:"middle",fill:t.color||"var(--semiotic-text-secondary, #666)",fontSize:12,text:t.label,background:t.labelBackground??"none"})]},"ann-"+r)}case"highlight":{const e=o.data||[],n="function"==typeof t.filter?e.filter(t.filter):t.field&&null!=t.value?e.filter(e=>e[t.field]===t.value):[],i={stroke:t.color||"#f97316",strokeWidth:2,fill:"none"};return yr("g",{children:n.map((e,n)=>{const r=lr(e,o),a=cr(e,o);if(null==r||null==a)return null;const s="function"==typeof t.r?t.r(e):t.r||6,l="function"==typeof t.style?t.style(e):t.style||i;return yr("circle",{cx:r,cy:a,r:s,...l},"hl-"+n)})},"ann-"+r)}case"bracket":{const e=lr(t,o),n=cr(t,o);return yr(Yn,{noteData:{x:e??0,y:n??0,dx:t.dx||0,dy:t.dy||0,note:{label:t.label,title:t.title,wrap:t.wrap||120},type:"bracket",subject:{type:t.bracketType||"curly",width:t.width,height:t.height,depth:t.depth||30},color:t.color}},"ann-"+r)}case"trend":{const e=o.data||[];if(2>e.length)return null;const n=o.xAccessor||"x",i=o.yAccessor||"y",a="ordinal"===o.frameType,s="horizontal"===o.projection,l=a?n:null,c=a?i:null;let u;const d=[],f=new Map;if(a&&l&&c){for(const t of e){const e=t[l];if(null==e)continue;const n=e+"";f.has(n)||(f.set(n,d.length),d.push(n))}u=e.map(e=>{const t=e[l],n=e[c];if(null==t||null==n)return null;const r=f.get(t+"");return null!=r?[r,+n]:null}).filter(e=>null!==e)}else u=e.map(e=>[e[n],e[i]]).filter(e=>null!=e[0]&&null!=e[1]);if(2>u.length)return null;const h=o.scales?.x??o.scales?.time,y=o.scales?.y??o.scales?.value;if(!h||!y)return null;const p=e=>t=>{const n=Math.max(0,Math.floor(t)),r=Math.min(d.length-1,n+1),o=t-n,i=e(d[n]);return i+(e(d[r])-i)*o},m=h,g=y;let b;if(a)if(s){const e=p(g);b=(t,n)=>[m(n),e(t)]}else{const e=p(m);b=(t,n)=>[e(t),g(n)]}else b=(e,t)=>[m(e),g(t)];const x=t.method||"linear";let v;if("loess"===x)v=function(e,t=.3){const n=e.length;if(2>n)return e.slice();const r=e.slice().sort((e,t)=>e[0]-t[0]),o=r.map(e=>e[0]),i=r.map(e=>e[1]),a=Math.max(2,Math.ceil(t*n)),s=[];for(let e=0;n>e;e++){const t=o[e],r=o.map(e=>Math.abs(e-t)),l=r.slice().sort((e,t)=>e-t)[Math.min(a-1,n-1)]||1,c=[];for(let e=0;n>e;e++){const t=0===l?0:r[e]/l;c[e]=1>t?Math.pow(1-Math.pow(t,3),3):0}let u=0,d=0,f=0,h=0,y=0;for(let e=0;n>e;e++){const t=c[e];0!==t&&(u+=t,d+=t*o[e],f+=t*i[e],h+=t*o[e]*o[e],y+=t*o[e]*i[e])}if(0===u){s.push([t,i[e]]);continue}const p=u*h-d*d;if(1e-12>Math.abs(p))s.push([t,f/u]);else{const e=(u*y-d*f)/p;s.push([t,(f-e*d)/u+e*t])}}return s}(u,t.bandwidth??.3);else{const e="polynomial"===x?sr(u,t.order||2):function(e){const t=[0,0,0,0];let n=0;for(const[r,o]of e)null!==o&&(n++,t[0]+=r,t[1]+=o,t[2]+=r*r,t[3]+=r*o);const r=n*t[2]-t[0]*t[0],o=0===r?0:ar((n*t[3]-t[0]*t[1])/r),i=ar(t[1]/n-o*t[0]/n);return{points:e.map(([e])=>[ar(e),ar(o*e+i)]),equation:[o,i]}}(u);v=e.points}const k=v.map(([e,t])=>{const[n,r]=b(e,t);return`${n},${r}`}).join(" "),w=t.color||"#6366f1",$=v[v.length-1],[M,A]=b($[0],$[1]);return pr("g",{children:[yr("polyline",{points:k,fill:"none",stroke:w,strokeWidth:t.strokeWidth||2,strokeDasharray:t.strokeDasharray||"6,3"}),t.label&&yr("text",{x:M+4,y:A-4,fill:w,fontSize:11,children:t.label})]},"ann-"+r)}case"band":{const e=o.scales?.y??o.scales?.value,n=e?.(t.y0)??0,s=e?.(t.y1)??(o.height||0),l=S(t.fill,"ann-"+r,"var(--semiotic-primary, #6366f1)");return pr("g",{opacity:t.opacity,children:[l.def&&yr("defs",{children:l.def}),yr("rect",{x:0,y:Math.min(n,s),width:o.width||0,height:Math.abs(s-n),fill:l.fill,fillOpacity:t.fillOpacity||.1}),t.label&&yr(T,{x:(o.width||0)-4,y:(i=n,a=s,Math.max(Math.min(i,a),0)+16),textAnchor:"end",fill:t.color||"var(--semiotic-primary, #6366f1)",fontSize:11,fontWeight:"bold",text:t.label,background:t.labelBackground??"halo"})]},"ann-"+r)}case"x-band":{const e=o.scales?.x??o.scales?.time,n=null!=t.x0&&e?e(t.x0):null,i=null!=t.x1&&e?e(t.x1):null;if(null==n||null==i)return null;const a=S(t.fill||t.color,"ann-"+r,"var(--semiotic-primary, #6366f1)");return pr("g",{opacity:t.opacity,children:[a.def&&yr("defs",{children:a.def}),yr("rect",{x:Math.min(n,i),y:0,width:Math.abs(i-n),height:o.height||0,fill:a.fill,fillOpacity:t.fillOpacity??.1}),t.label&&yr(T,{x:Math.min(n,i)+4,y:16,textAnchor:"start",fill:t.color||"var(--semiotic-primary, #6366f1)",fontSize:11,fontWeight:"bold",text:t.label,background:t.labelBackground??"halo"})]},"ann-"+r)}case"envelope":{const e=o.data||[];if(2>e.length)return null;const n=o.xAccessor||"x",i=o.scales?.x??o.scales?.time,a=o.scales?.y??o.scales?.value;if(!i||!a)return null;const s=t.upperAccessor||"upperBounds",l=t.lowerAccessor||"lowerBounds",c=t.filter,u=e.filter(e=>null!=e[s]&&null!=e[l]&&!(c&&!c(e))).sort((e,t)=>e[n]-t[n]);if(2>u.length)return null;const d=mr[o.curve||"linear"]||Kn,f=Xn().x(e=>i(e[n])).y0(e=>a(e[l])).y1(e=>a(e[s])).curve(d)(u);if(!f)return null;const h=t.fill||"#6366f1";return pr("g",{children:[yr("path",{d:f,fill:h,fillOpacity:t.fillOpacity??.15,stroke:"none"}),t.label&&u.length>0&&yr("text",{x:i(u[u.length-1][n])+4,y:a(u[u.length-1][s])-4,fill:h,fontSize:11,children:t.label})]},"ann-"+r)}case"anomaly-band":{const e=o.data||[];if(2>e.length)return null;const n=o.yAccessor||"y",i=o.scales?.x??o.scales?.time,a=o.scales?.y??o.scales?.value;if(!i||!a)return null;const s=e.map(e=>e[n]).filter(e=>null!=e&&isFinite(e));if(2>s.length)return null;const l=s.reduce((e,t)=>e+t,0)/s.length,c=s.reduce((e,t)=>e+(t-l)**2,0)/s.length,u=Math.sqrt(c),d=t.threshold??2,f=l-d*u,h=!1!==t.showBand,y=t.fill||"#6366f1",p=t.fillOpacity??.1,m=t.anomalyColor||"#ef4444",g=t.anomalyRadius??6,b=a(l+d*u),x=a(f),v=e.filter(e=>{const t=e[n];return null!=t&&Math.abs(t-l)>d*u});return pr("g",{children:[h&&yr("rect",{x:0,y:Math.min(b,x),width:o.width||0,height:Math.abs(x-b),fill:y,fillOpacity:p}),v.map((e,t)=>{const n=lr(e,o),r=cr(e,o);return null==n||null==r?null:yr("circle",{cx:n,cy:r,r:g,fill:m,fillOpacity:.7,stroke:m,strokeWidth:1.5},"anomaly-"+t)}),t.label&&yr("text",{x:(o.width||0)-4,y:Math.min(b,x)-4,textAnchor:"end",fill:y,fontSize:11,children:t.label})]},"ann-"+r)}case"forecast":{const e=o.data||[];if(3>e.length)return null;const n=o.xAccessor||"x",i=o.yAccessor||"y",a=o.scales?.x??o.scales?.time,s=o.scales?.y??o.scales?.value;if(!a||!s)return null;const l=e.map(e=>[e[n],e[i]]).filter(e=>null!=e[0]&&null!=e[1]&&isFinite(e[0])&&isFinite(e[1])).sort((e,t)=>e[0]-t[0]);if(3>l.length)return null;let c;if("polynomial"===(t.method||"linear")){const e=sr(l,t.order||2).equation;c=t=>e.reduce((e,n,r)=>e+n*Math.pow(t,r),0)}else{const e=l.length;let t=0,n=0,r=0,o=0;for(const[e,i]of l)t+=e,n+=i,r+=e*e,o+=e*i;const i=e*r-t*t;if(1e-12>Math.abs(i))return null;const a=(e*o-t*n)/i,s=(n-a*t)/e;c=e=>s+a*e}const u=l.length,d=l.map(([e,t])=>t-c(e)),f=d.reduce((e,t)=>e+t*t,0),h=Math.sqrt(f/Math.max(u-2,1)),y=l.reduce((e,t)=>e+t[0],0)/u,p=l.reduce((e,t)=>e+(t[0]-y)**2,0),m=t.confidence??.95,g=.99>m?.95>m?.9>m?1:1.645:1.96:2.576,b=t.steps??5,x=l[u-1][0],v=(x-l[0][0])/Math.max(u-1,1),k=[];for(let e=1;b>=e;e++)k.push(x+e*v);const w=[];for(const e of k){const t=c(e),n=h*Math.sqrt(1+1/u+(p>0?(e-y)**2/p:0))*g;w.push({x:e,yCenter:t,yUpper:t+n,yLower:t-n})}const $=`M${w.map(e=>`${a(e.x)},${s(e.yUpper)}`).join(" L")} L${w.slice().reverse().map(e=>`${a(e.x)},${s(e.yLower)}`).join(" L")} Z`,M=w.map(e=>`${a(e.x)},${s(e.yCenter)}`).join(" "),A=`${a(x)},${s(c(x))}`,S=t.strokeColor||"#6366f1";return pr("g",{children:[yr("path",{d:$,fill:t.fill||"#6366f1",fillOpacity:t.fillOpacity??.15,stroke:"none"}),yr("polyline",{points:`${A} ${M}`,fill:"none",stroke:S,strokeWidth:t.strokeWidth??2,strokeDasharray:t.strokeDasharray??"6,3"}),t.label&&w.length>0&&yr("text",{x:a(w[w.length-1].x)+4,y:s(w[w.length-1].yCenter)-4,fill:S,fontSize:11,children:t.label})]},"ann-"+r)}case"widget":{let e,i;if(null!=t.px&&null!=t.py)e=t.px,i=t.py;else{const n=fr(t,r,o);if(!n)return null;e=n.x,i=n.y}if(!hr(e,i,o))return null;const a=t.dx??0,s=t.dy??0,l=t.width??32,c=t.height??32,u=t.content??yr("span",{style:{fontSize:18,cursor:"default"},title:t.label||"Info",children:"ℹ️"});return yr("foreignObject",{x:e+a-l/2,y:i+s-c/2,width:l,height:c,style:{overflow:"visible",pointerEvents:"auto"},children:yr("div",{...I(t,n),style:{width:l,height:c,display:"flex",alignItems:"center",justifyContent:"center"},children:u})},"ann-"+r)}case"text":{const e=fr(t,r,o);if(!e)return null;const{x:n,y:i}=e,a=n+(t.dx||0),s=i+(t.dy||0),l=t.color||"var(--semiotic-text, #333)",c=yr("text",{x:a,y:s,fill:l,fontSize:t.fontSize||11,opacity:t.opacity,strokeDasharray:t.strokeDasharray,dominantBaseline:"middle",style:{fontFamily:"inherit"},children:t.label});return!0!==t._redundantConnector?Dn.cloneElement(c,{key:"ann-text-"+r}):pr("g",{opacity:t.opacity,strokeDasharray:t.strokeDasharray,children:[yr("line",{x1:n,y1:i,x2:a,y2:s,stroke:l,strokeWidth:1,strokeOpacity:.5,style:{pointerEvents:"none"}}),Dn.cloneElement(c,{opacity:void 0,strokeDasharray:void 0})]},"ann-text-"+r)}case"category-highlight":{const e=t.category;if(null==e)return null;const n=e=>"function"==typeof e&&"function"==typeof e.bandwidth,i=o.scales?.o,a=o.scales?.x,s=o.scales?.y,l=n(i)?i:n(a)?a:n(s)?s:null;if(!l)return null;const c=l(e+"");if(null==c)return null;const u=l.bandwidth(),d=t.color||"var(--semiotic-primary, #4589ff)",f=t.opacity??.15,h=t.label;return pr("g",(o.projection?"vertical"===o.projection:l===a)?{children:[yr("rect",{x:c,y:0,width:u,height:o.height||0,fill:d,fillOpacity:f}),h&&yr(T,{x:c+u/2,y:16,textAnchor:"middle",fill:d,fontSize:12,fontWeight:"bold",text:h,background:t.labelBackground??"none"})]}:{children:[yr("rect",{x:0,y:c,width:o.width||0,height:u,fill:d,fillOpacity:f}),h&&yr(T,{x:12,y:c+u/2,dominantBaseline:"middle",fill:d,fontSize:12,fontWeight:"bold",text:h,background:t.labelBackground??"none"})]},"ann-"+r)}default:return null}var i,a,s}}var xr=new Set(["label","callout","callout-circle","callout-rect","text","widget"]),vr=new Set(["label","callout","callout-circle","callout-rect"]);function kr(e){return"string"==typeof e?.type?e.type:""}function wr(e){return!!e&&"object"==typeof e&&xr.has(kr(e))}function $r(e){return vr.has(kr(e))&&!function(e){return Array.isArray(e?.disable)&&e.disable.includes("connector")}(e)}function Mr(e){return"primary"===e?.emphasis||!0===e?.defensive}function Ar(e,t,n={}){return"number"==typeof n.maxAnnotations&&Number.isFinite(n.maxAnnotations)?Math.max(0,Math.floor(n.maxAnnotations)):e>0&&t>0?Math.max(1,Math.round(e*t/(n.areaPerAnnotation&&n.areaPerAnnotation>0?n.areaPerAnnotation:2e4))):1/0}function Sr(e){let t;const n=e?.emphasis;t="primary"===n?100:"secondary"===n?10:50;const r=e?.provenance?.confidence;switch("number"==typeof r&&Number.isFinite(r)&&(t+=15*Math.max(0,Math.min(1,r))),e?.lifecycle?.freshness){case"fresh":t+=8;break;case"aging":t+=4;break;case"stale":t+=1;break;case"expired":t-=200}return t}var Wr=32,Cr=6,jr=4,Nr=8,Or=72;var Ir={ai:"AI",agent:"agent",watcher:"watcher",system:"system",import:"imported",computed:"computed",user:"you"};function Rr(e){if(!Lr(e))return e;const t=("string"==typeof e.mobileText?e.mobileText:void 0)??("string"==typeof e.shortText?e.shortText:void 0);return!t||"string"!=typeof e.label&&null!=e.label?e:{...e,label:t}}function Lr(e){return wr(e)}function Fr(e,t){if(!e)return[];const n=Math.max(1,Math.floor(t/7)),r=e.split(/\s+/).filter(Boolean),o=[];let i="";for(const e of r)i&&i.length+e.length+1>n?(o.push(i),i=e):i=i?`${i} ${e}`:e;return i&&o.push(i),o}function Pr(e,t,n,r,o){const i=e+n,a=t+r;return Math.abs(n)>Math.abs(r)?{x:0>n?i-o.width-4:i+4,y:0>r?a-o.height:a,width:o.width,height:o.height}:{x:0>n?i-o.width:i,y:0>r?a-o.height-4:a+4,width:o.width,height:o.height}}function zr(e,t){return{x:e.x-t,y:e.y-t,width:e.width+2*t,height:e.height+2*t}}function Tr(e,t){return Math.max(0,Math.min(e.x+e.width,t.x+t.width)-Math.max(e.x,t.x))*Math.max(0,Math.min(e.y+e.height,t.y+t.height)-Math.max(e.y,t.y))}function Dr(e,t,n,r,o,i,a,s){const l=zr(e,a);let c=.4*Math.hypot(t.dx,t.dy)+80*function(e,t,n,r){const o=Math.max(0,r-e.x),i=Math.max(0,r-e.y);return(o+Math.max(0,e.x+e.width-(t-r)))*e.height+(i+Math.max(0,e.y+e.height-(n-r)))*e.width}(l,o,i,s);for(const e of n)c+=12*Tr(l,e);for(const e of r)c+=4*Tr(l,e);return c}function Br(e){const{annotations:t,context:n,defaultOffset:r=Wr,notePadding:o=Cr,markPadding:i=jr,edgePadding:a=Nr,preserveManualOffsets:s=!0,routeLongConnectors:l=!0,connectorThreshold:c=Or,density:u,progressiveDisclosure:d=!1,redundantCues:f=!1,responsive:h,mobile:y,cohesion:p,audience:m}=e,g=n.width||0,b=n.height||0,x="object"==typeof y?y:{},v=x.breakpoint??480,k=!!y&&v>=g,w=k&&!1!==x.preferShortText?t.map(Rr):t,$=k&&!u?{maxAnnotations:x.maxAnnotations??("callout-list"===x.strategy?1:2),minVisible:x.minVisible??1}:u,M=d||k&&(!1!==x.progressiveDisclosure||"callout-list"===x.strategy),A=k&&!h?x.responsive??{minWidth:v}:h,S=k&&!p?x.cohesion:p;if(0===w.length||0>=g||0>=b)return w.slice();const W=[],C=function(e,t){return(e.pointNodes||[]).map(e=>{const n=Math.max(1,e.r||1)+t;return{x:e.x-n,y:e.y-n,width:2*n,height:2*n}})}(n,i);let j=!1;const N=w.map((e,t)=>{if(!Lr(e))return e;const i=function(e,t,n){if("widget"===e.type&&"number"==typeof e.px&&"number"==typeof e.py)return{x:e.px,y:e.py};const r=e.pointId??e.nodeId;if(null!=r&&n.pointNodes){const e=n.pointNodes.find(e=>e.pointId===r);if(e)return{x:e.x,y:e.y}}const o=e.coordinates,i=n.scales?.geoProjection;if(Array.isArray(o)&&o.length>=2&&i){const e=o[0],t=o[1];if("number"==typeof e&&"number"==typeof t){const n=i([e,t]);if(n&&"number"==typeof n[0]&&"number"==typeof n[1])return{x:n[0],y:n[1]}}}return n.scales||"number"!=typeof e.x||"number"!=typeof e.y?fr(e,t,n):{x:e.x,y:e.y}}(e,t,n);if(!i)return e;const u=function(e){if("widget"===e.type)return{width:"number"==typeof e.width?e.width:32,height:"number"==typeof e.height?e.height:32};const t="number"==typeof e.wrap?e.wrap:120,n=[...Fr("string"==typeof e.title?e.title:void 0,t),...Fr("string"==typeof e.label?e.label:void 0,t)],r=n.reduce((e,t)=>Math.max(e,t.length),0);return{width:Math.max(24,Math.min(t,7*r)+10),height:Math.max(18,16*n.length+6)}}(e);if(s&&("number"==typeof(d=e).dx||"number"==typeof d.dy)){const t=function(e){return"text"===e.type||"widget"===e.type?{dx:0,dy:0}:{dx:30,dy:-30}}(e);return W.push(zr(Pr(i.x,i.y,"number"==typeof e.dx?e.dx:t.dx,"number"==typeof e.dy?e.dy:t.dy,u),o)),e}var d;let f=null,h=1/0;for(const e of function(e){const t=1.6*e;return[{dx:e,dy:-e},{dx:-e,dy:-e},{dx:e,dy:e},{dx:-e,dy:e},{dx:e,dy:0},{dx:-e,dy:0},{dx:0,dy:-e},{dx:0,dy:e},{dx:t,dy:-t},{dx:-t,dy:-t},{dx:t,dy:t},{dx:-t,dy:t}]}(r)){const t=Dr(Pr(i.x,i.y,e.dx,e.dy,u),e,W,C,g,b,o,a);h>t&&(f=e,h=t)}if(!f)return e;const y=zr(Pr(i.x,i.y,f.dx,f.dy,u),o);W.push(y);const p=Math.hypot(f.dx,f.dy),m=l&&p>=c&&"text"!==e.type&&"widget"!==e.type?{...e.connector||{end:"arrow"},type:"curve"}:e.connector;return j=!0,{...e,dx:f.dx,dy:f.dy,...m?{connector:m}:{}}}),O=j?N:w.slice();let I=O;if(f){let e=!1;const t=O.map(t=>{const n=function(e){return"text"!==e.type||"string"!=typeof e.color||8>Math.hypot("number"==typeof e.dx?e.dx:0,"number"==typeof e.dy?e.dy:0)?e:{...e,_redundantConnector:!0}}(t);return n!==t&&(e=!0),n});I=e?t:O}{let e=!1;const t=I.map(t=>{if(!0!==t?.defensive)return t;const n=function(e){const t=e?.provenance;if(!t||"object"!=typeof t)return e;const n="string"==typeof t.source?Ir[t.source]??t.source:null,r="number"==typeof t.confidence&&Number.isFinite(t.confidence)?Math.round(100*Math.max(0,Math.min(1,t.confidence)))+"%":null;if(!n&&!r)return e;if(null!=e.label&&"string"!=typeof e.label)return e;const o=[n,r].filter(Boolean).join(" · "),i="string"==typeof e.label?e.label:"";return i.includes(`(${o})`)?e:{...e,label:i?`${i} (${o})`:`(${o})`}}(t);return n!==t&&(e=!0),n});I=e?t:I}const R=new Set;if($){const e="object"==typeof $?$:{},t=function(e){if(!e)return 1;const t=function(e){const t=e?.familiarity;if(!t)return 3;const n=Object.values(t).filter(e=>"number"==typeof e&&Number.isFinite(e));return 0===n.length?3:n.reduce((e,t)=>e+t,0)/n.length}(e);return t>2?4>t?1:.6:1.5}(m),n=1===t?e:{...e,maxAnnotations:Math.max(0,Math.round((e.maxAnnotations??Ar(g,b,e))*t))},{deferred:r}=function(e){const{annotations:t,width:n,height:r}=e,o=Math.max(0,e.minVisible??1),i=Ar(n,r,e),a=t.map((e,t)=>{return{annotation:e,index:t,note:(n=e,wr(n))};var n}),s=a.filter(e=>e.note);if(0===s.length||i>=s.length)return{visible:t.slice(),deferred:[],budget:i};const l=s.filter(e=>Mr(e.annotation)),c=s.filter(e=>!Mr(e.annotation)).sort((e,t)=>Sr(t.annotation)-Sr(e.annotation)||e.index-t.index),u=Math.min(c.length,Math.max(Math.max(0,i-l.length),Math.max(0,o-l.length))),d=new Set([...l.map(e=>e.index),...c.slice(0,u).map(e=>e.index)]),f=[],h=[];for(const{annotation:e,index:t,note:n}of a)!n||d.has(t)?f.push(e):h.push(e);return{visible:f,deferred:h,budget:i}}({annotations:I,width:g,height:b,...n});for(const e of r)R.add(e)}if(A&&("object"==typeof A&&"number"==typeof A.minWidth?A.minWidth:480)>=g)for(const e of I)Lr(e)&&"secondary"===e.emphasis&&R.add(e);if(R.size>0)for(const e of I)!0===e?.defensive&&R.delete(e);let L;return L=0===R.size?I:M?I.map(e=>R.has(e)?{...e,_annotationDeferred:!0}:e):I.filter(e=>!R.has(e)),S?function(e,t){let n=!1;const r=e.map(e=>Lr(e)?"blended"===e.cohesion||"layer"===e.cohesion?e:(n=!0,{...e,cohesion:t}):e);return n?r:e}(L,S):L}import*as Er from"react";import{jsx as Hr,jsxs as _r}from"react/jsx-runtime";var Gr={innerRadius:0,outerRadius:0,startAngle:0,endAngle:0};function qr(e,t="#4e79a7"){return k(e)?e.background&&"transparent"!==e.background?e.background:t:e&&"string"==typeof e?e:t}function Vr(e){const t=e.replace(/[^A-Za-z0-9_-]/g,"_");return!t||/^\d/.test(t)?"s_"+t:t}function Ur(e,t,n,r){const s=e.glyph;if(!s?.parts?.length||0>=e.size)return null;const l=i(s,e.size);if(0>=l.scale)return null;const c=`translate(${t},${n})${e.rotation?` rotate(${180*e.rotation/Math.PI})`:""} translate(${l.offsetX},${l.offsetY}) scale(${l.scale})`,u=e.color??("string"==typeof e.style.fill?e.style.fill:void 0),d=o(s,e.fraction??1,e.fractionStart??0,e.fractionDirection??"horizontal"),f=d?Vr(r+"-clip"):void 0,h=(e.style.opacity??1)*(e._decayOpacity??1)*(e.style.fillOpacity??1),y=t=>s.parts.map((n,r)=>{const o=t?"none"===n.fill?void 0:t:a(n.fill,u,e.accent),i=t?n.stroke&&"none"!==n.stroke?t:void 0:a(n.stroke??"none",u,e.accent);return o||i?Hr("path",{d:n.d,fill:o??"none",stroke:i,strokeWidth:i?n.strokeWidth??1:void 0,strokeLinecap:n.strokeLinecap,strokeLinejoin:n.strokeLinejoin,opacity:n.opacity},r):null});return _r("g",{transform:c,opacity:1===h?void 0:h,children:[d&&f&&Hr("clipPath",{id:f,children:Hr("rect",{x:d.x,y:d.y,width:d.width,height:d.height})}),d&&e.ghostColor?Hr("g",{children:y(e.ghostColor)}):null,d&&f?Hr("g",{clipPath:`url(#${f})`,children:y()}):y()]},r)}import{jsx as Yr,jsxs as Zr}from"react/jsx-runtime";function Xr(e,t){switch(e.type){case"geoarea":{const n=e;if(!n.pathData)return null;const r=k(n.style.fill)?A(n.style.fill,`geoarea-${t}-hatch`):void 0;return Zr(Er.Fragment,{children:[r&&Yr("defs",{children:r}),Yr("path",{d:n.pathData,fill:r?`url(#geoarea-${t}-hatch)`:qr(n.style.fill,"#e0e0e0"),fillOpacity:n.style.fillOpacity??1,stroke:n.style.stroke||"none",strokeWidth:n.style.strokeWidth||.5,strokeDasharray:n.style.strokeDasharray,opacity:n._decayOpacity??1})]},"geoarea-"+t)}case"point":{const n=e,r=k(n.style.fill)?A(n.style.fill,`geopoint-${t}-hatch`):void 0;return Zr(Er.Fragment,{children:[r&&Yr("defs",{children:r}),Yr("circle",{cx:n.x,cy:n.y,r:n.r,fill:r?`url(#geopoint-${t}-hatch)`:qr(n.style.fill),fillOpacity:n.style.fillOpacity??.8,stroke:n.style.stroke,strokeWidth:n.style.strokeWidth,opacity:n._decayOpacity??n.style.opacity??1})]},"point-"+t)}case"line":{const n=e;if(2>n.path.length)return null;const r="M"+n.path.map(e=>`${e[0]},${e[1]}`).join("L");return Yr("path",{d:r,fill:"none",stroke:n.style.stroke||"#4e79a7",strokeWidth:n.style.strokeWidth||1.5,strokeDasharray:n.style.strokeDasharray,opacity:n.style.opacity??1},"line-"+t)}case"glyph":return Ur(e,e.x,e.y,"geo-glyph-"+(e.pointId??t));default:return null}}import*as Kr from"react";import{arc as Jr,area as Qr,line as eo}from"d3-shape";var to=/^var\(\s*(--[^,)]+)(?:\s*,\s*([^)]+))?\s*\)$/,no=new WeakMap,ro=0,oo=!1,io=null,ao=null;function so(e,t){if(!t)return t;const n=to.exec(t);if(!n)return t;const r=e.canvas;if(!r)return n[2]?.trim()||t;!function(){if(oo)return;if("undefined"==typeof window||"undefined"==typeof document)return;oo=!0;const e=()=>{ro++};if("undefined"!=typeof MutationObserver&&document.documentElement&&new MutationObserver(e).observe(document.documentElement,{attributes:!0,attributeFilter:["class","style","data-theme","data-semiotic-theme"]}),"function"==typeof window.matchMedia)try{io=window.matchMedia("(prefers-color-scheme: dark)"),ao=e,"function"==typeof io.addEventListener?io.addEventListener("change",ao):"function"==typeof io.addListener&&io.addListener(ao)}catch{}}();let o=no.get(r);o&&o.version===ro||(o={version:ro,map:new Map},no.set(r,o));const i=o.map.get(t);if(void 0!==i)return i;const a=getComputedStyle(r).getPropertyValue(n[1]).trim()||n[2]?.trim()||t;return o.map.set(t,a),a}function lo(){return ro}function co(e,t){const n=e.fillStyle,r="#010203";try{e.fillStyle=r,e.fillStyle=t}catch{return e.fillStyle=n,[78,121,167]}const o=e.fillStyle;if(e.fillStyle=n,"string"!=typeof o)return[78,121,167];if(o.toLowerCase()===r&&t.trim().toLowerCase()!==r)return[78,121,167];if(o.startsWith("#"))return[parseInt(o.slice(1,3),16),parseInt(o.slice(3,5),16),parseInt(o.slice(5,7),16)];const i=o.match(/(\d+)\s*,\s*(\d+)\s*,\s*(\d+)/);return i?[+i[1],+i[2],+i[3]]:[78,121,167]}import{curveMonotoneX as uo,curveMonotoneY as fo,curveCardinal as ho,curveCatmullRom as yo,curveStep as po,curveStepBefore as mo,curveStepAfter as go,curveBasis as bo,curveNatural as xo}from"d3-shape";function vo(e){switch(e){case"monotoneX":return uo;case"monotoneY":return fo;case"cardinal":return ho;case"catmullRom":return yo;case"step":return po;case"stepBefore":return mo;case"stepAfter":return go;case"basis":return bo;case"natural":return xo;default:return null}}function ko(e,t,n){if(null==t)return n;if(k(t)){const r=function(e,t){const n="undefined"!=typeof window&&window.devicePixelRatio||1,r=`${w(e)}@${n}`,o=M.get(r);if(void 0!==o)return o;const i=b({background:e.background,stroke:e.stroke,lineWidth:e.lineWidth,spacing:e.spacing,angle:e.angle},t);return M.set(r,i),i}(t,e);return r||t.background&&so(e,t.background)||n}return"string"!=typeof t?t:so(e,t)||n}function wo(e,t){if(null==t)return;const n=ko(e,t,"");return""===n?void 0:n}function $o(e,t,n,r,o,i,a){if("colorStops"in t){const n=t.colorStops.filter(e=>Number.isFinite(e.offset)).map(e=>({offset:Math.max(0,Math.min(1,e.offset)),color:e.color}));if(2>n.length)return null;const s=e.createLinearGradient(r,o,i,a);for(const e of n)s.addColorStop(e.offset,e.color);return s}const{topOpacity:s,bottomOpacity:l}=t;if(!Number.isFinite(s)||!Number.isFinite(l))return null;const c=Math.max(0,Math.min(1,s)),u=Math.max(0,Math.min(1,l)),d=e.createLinearGradient(r,o,i,a),[f,h,y]=co(e,n);return d.addColorStop(0,`rgba(${f},${h},${y},${c})`),d.addColorStop(1,`rgba(${f},${h},${y},${u})`),d}function Mo(e,t,n,r,o,i){const a=t.colorStops.filter(e=>Number.isFinite(e.offset)).map(e=>({offset:Math.max(0,Math.min(1,e.offset)),color:e.color}));if(2>a.length)return null;const s=e.createLinearGradient(n,r,o,i);for(const e of a)s.addColorStop(e.offset,e.color);return s}import{symbol as Ao,symbolCircle as So,symbolCross as Wo,symbolDiamond as Co,symbolSquare as jo,symbolStar as No,symbolTriangle as Oo,symbolWye as Io}from"d3-shape";var Ro={circle:So,square:jo,triangle:Oo,diamond:Co,star:No,cross:Wo,wye:Io},Lo=["circle","triangle","diamond","star","square","chevron","cross","wye"];function Fo(e,t,n){if(n)return n;const r=e??"circle";return"chevron"===r?function(e){const t=1.5*Po(e),n=.92*t;return`M0,${-t}L${n},${(.78*t).toFixed(3)}L0,${(.28*t).toFixed(3)}L${-n},${(.78*t).toFixed(3)}Z`}(t):Ao(Ro[r]??So,Math.max(1,t))()??""}function Po(e){return Math.sqrt(Math.max(1,e)/Math.PI)}function zo(e){return(e.tl??0)>0||(e.tr??0)>0||(e.br??0)>0||(e.bl??0)>0}function To(e){const t=e.cornerRadii;if(!t)return{tl:0,tr:0,br:0,bl:0};const n=Math.min(e.w,e.h)/2,r=e=>Math.max(0,Math.min(e??0,n));return{tl:r(t.tl),tr:r(t.tr),br:r(t.br),bl:r(t.bl)}}var Do=(e,t)=>({x:e*Math.cos(t),y:e*Math.sin(t)});function Bo(e){const{innerRadius:t,outerRadius:n,startAngle:r,endAngle:o}=e,i=0>=t;if(0>=(e.cornerRadius??0)||!e.roundStart&&!e.roundEnd){if(i){const e=Do(n,r),t=Do(n,o);return`M0,0 L${e.x},${e.y} A${n},${n} 0 ${o-r>Math.PI?1:0} 1 ${t.x},${t.y} Z`}const e=Do(n,r),a=Do(n,o),s=Do(t,o),l=Do(t,r),c=o-r>Math.PI?1:0;return`M${e.x},${e.y} A${n},${n} 0 ${c} 1 ${a.x},${a.y} L${s.x},${s.y} A${t},${t} 0 ${c} 0 ${l.x},${l.y} Z`}const a=Math.max(0,Math.min(e.cornerRadius??0,(n-t)/2));if(0===a)return Bo({...e,cornerRadius:0,roundStart:!1,roundEnd:!1});const s=Math.asin(Math.min(1,a/Math.max(1e-9,n-a))),l=i?0:Math.asin(Math.min(1,a/Math.max(1e-9,t+a))),c=o-r,u=e.roundStart&&e.roundEnd?c/2:c,d=!!e.roundStart&&u>s,f=!!e.roundEnd&&u>s;if(!d&&!f)return Bo({...e,cornerRadius:0,roundStart:!1,roundEnd:!1});const h=r+(d?s:0),y=o-(f?s:0),p=r+(d?l:0),m=o-(f?l:0),g=Do(n,h),b=Do(n,y),x=(n-a)*Math.cos(s),v=Do(x,r),k=Do(x,o),w=i?null:Do(t,m),$=i?null:Do(t,p),M=i?0:(t+a)*Math.cos(l),A=i?null:Do(M,r),S=i?null:Do(M,o),W=y-h>Math.PI?1:0,C=i?0:m-p>Math.PI?1:0;let j="";if(d)j+=`M${v.x},${v.y}`,j+=` A${a},${a} 0 0 1 ${g.x},${g.y}`;else{const e=Do(n,r);j+=`M${e.x},${e.y}`}if(f)j+=` A${n},${n} 0 ${W} 1 ${b.x},${b.y}`,j+=` A${a},${a} 0 0 1 ${k.x},${k.y}`;else{const e=Do(n,o);j+=` A${n},${n} 0 ${W} 1 ${e.x},${e.y}`}if(i)j+=" L0,0";else{if(f)j+=` L${S.x},${S.y}`,j+=` A${a},${a} 0 0 1 ${w.x},${w.y}`;else{const e=Do(t,o);j+=` L${e.x},${e.y}`}if(d)j+=` A${t},${t} 0 ${C} 0 ${$.x},${$.y}`,j+=` A${a},${a} 0 0 1 ${A.x},${A.y}`;else{const e=Do(t,r);j+=` A${t},${t} 0 ${C} 0 ${e.x},${e.y}`}}return j+=" Z",j}function Eo(e){const t=Bo({innerRadius:e.innerRadius,outerRadius:e.outerRadius,startAngle:e.startAngle,endAngle:e.endAngle,cornerRadius:e.cornerRadius,roundStart:e.roundStart,roundEnd:e.roundEnd}),n=[],r=e.colors;if(r.length>0){const t=(e.endAngle-e.startAngle)/r.length;for(let o=0;r.length>o;o++)n.push({d:Bo({innerRadius:e.innerRadius,outerRadius:e.outerRadius,startAngle:e.startAngle+o*t,endAngle:e.endAngle}),color:r[o]})}return{clipPath:t,slices:n}}import*as Ho from"react";import{arc as _o}from"d3-shape";import{jsx as Go,jsxs as qo}from"react/jsx-runtime";function Vo(e,t){switch(e.type){case"circle":{const n=e,r=k(n.style.fill)?A(n.style.fill,`net-circle-${t}-hatch`):void 0;return qo(Ho.Fragment,{children:[r&&Go("defs",{children:r}),Go("circle",{cx:n.cx,cy:n.cy,r:n.r,fill:r?`url(#net-circle-${t}-hatch)`:qr(n.style.fill),stroke:n.style.stroke,strokeWidth:n.style.strokeWidth,opacity:n.style.opacity})]},"net-circle-"+t)}case"rect":{const n=e,r=k(n.style.fill)?A(n.style.fill,`net-rect-${t}-hatch`):void 0;return qo(Ho.Fragment,{children:[r&&Go("defs",{children:r}),Go("rect",{x:n.x,y:n.y,width:n.w,height:n.h,fill:r?`url(#net-rect-${t}-hatch)`:qr(n.style.fill),stroke:n.style.stroke,strokeWidth:n.style.strokeWidth,opacity:n.style.opacity})]},"net-rect-"+t)}case"arc":{const n=e,r=_o().innerRadius(n.innerR).outerRadius(n.outerR).startAngle(n.startAngle+Math.PI/2).endAngle(n.endAngle+Math.PI/2)(Gr)||"",o=k(n.style.fill)?A(n.style.fill,`net-arc-${t}-hatch`):void 0;return qo(Ho.Fragment,{children:[o&&Go("defs",{children:o}),Go("path",{d:r,transform:`translate(${n.cx},${n.cy})`,fill:o?`url(#net-arc-${t}-hatch)`:qr(n.style.fill),stroke:n.style.stroke,strokeWidth:n.style.strokeWidth,opacity:n.style.opacity})]},"net-arc-"+t)}case"symbol":{const n=e,r=Fo(n.symbolType,n.size,n.path);return Go("path",{d:r,transform:n.rotation?`translate(${n.cx},${n.cy}) rotate(${180*n.rotation/Math.PI})`:`translate(${n.cx},${n.cy})`,fill:n.style.fill?qr(n.style.fill):"none",stroke:n.style.stroke,strokeWidth:n.style.strokeWidth,opacity:n.style.opacity},"net-symbol-"+t)}case"glyph":return Ur(e,e.cx,e.cy,"net-glyph-"+(e.id??t));default:return null}}function Uo(e,t){switch(e.type){case"line":return Go("line",{x1:e.x1,y1:e.y1,x2:e.x2,y2:e.y2,stroke:e.style.stroke||"#999",strokeWidth:e.style.strokeWidth||1,opacity:e.style.opacity},"net-edge-"+t);case"bezier":{const n=e;return Go("path",{d:n.pathD,fill:qr(n.style.fill,"#999"),fillOpacity:n.style.fillOpacity,stroke:n.style.stroke||"none",strokeWidth:n.style.strokeWidth,opacity:n.style.opacity},"net-edge-"+t)}case"ribbon":{const n=e;return Go("path",{d:n.pathD,fill:qr(n.style.fill,"#999"),fillOpacity:n.style.fillOpacity,stroke:n.style.stroke||"none",strokeWidth:n.style.strokeWidth,opacity:n.style.opacity},"net-edge-"+t)}case"curved":{const n=e;return Go("path",{d:n.pathD,fill:qr(n.style.fill,"none"),stroke:n.style.stroke||"#999",strokeWidth:n.style.strokeWidth||1,opacity:n.style.opacity},"net-edge-"+t)}default:return null}}function Yo(e,t){return Go("text",{x:e.x,y:e.y,textAnchor:e.anchor||"middle",dominantBaseline:e.baseline||"auto",fontSize:e.fontSize||11,fontWeight:e.fontWeight,fill:e.fill||"var(--semiotic-text, #333)",stroke:e.stroke,strokeWidth:e.strokeWidth,paintOrder:e.paintOrder,children:e.text},"net-label-"+t)}import{jsx as Zo,jsxs as Xo}from"react/jsx-runtime";function Ko(e,t,n){const r=Fo(e.symbolType,e.size,e.path);return Zo("path",{d:r,transform:e.rotation?`translate(${e.x},${e.y}) rotate(${180*e.rotation/Math.PI})`:`translate(${e.x},${e.y})`,fill:e.style.fill?qr(e.style.fill):"none",fillOpacity:e.style.fillOpacity,opacity:e.style.opacity,stroke:e.style.stroke,strokeWidth:e.style.strokeWidth},`${n??""}symbol-${t}`)}function Jo(e){const t=e.filter(e=>Number.isFinite(e.offset)).map(e=>({offset:Math.max(0,Math.min(1,e.offset)),color:e.color}));return 2>t.length?null:t.map((e,t)=>Zo("stop",{offset:e.offset,stopColor:e.color},t))}function Qo(e,t,n){if(!e||2>t.length)return null;const r=Jo(e.colorStops);return r?Zo("linearGradient",{id:n,gradientUnits:"userSpaceOnUse",x1:t[0][0],y1:0,x2:t[t.length-1][0],y2:0,children:r}):null}function ei(e,t,n){switch(e.type){case"line":{const r=e;if(0===r.path.length)return null;const o=vo(r.curve),i=o?eo().x(([e])=>e).y(([,e])=>e).curve(o)(r.path)??"":"M"+r.path.map(([e,t])=>`${e},${t}`).join("L"),a=Vr(`${n?n+"-":""}line-${t}-stroke-gradient`),s=Qo(r.strokeGradient,r.path,a);return Xo(Kr.Fragment,{children:[s&&Zo("defs",{children:s}),Zo("path",{d:i,fill:"none",stroke:s?`url(#${a})`:r.style.stroke||"#4e79a7",strokeWidth:r.style.strokeWidth||2,strokeDasharray:r.style.strokeDasharray,opacity:r.style.opacity})]},"line-"+t)}case"area":{const r=e;if(0===r.topPath.length)return null;const o=vo(r.curve),i=!o||2>r.topPath.length||2>r.bottomPath.length?`M${r.topPath.map(([e,t])=>`${e},${t}`).join("L")}L${[...r.bottomPath].reverse().map(([e,t])=>`${e},${t}`).join("L")}Z`:Qr().x(([e])=>e).y0((e,t)=>r.bottomPath[t][1]).y1(([,e])=>e).curve(o)(r.topPath)??"",a=`${n?n+"-":""}area-${t}-hatch`,s=k(r.style.fill)?A(r.style.fill,a):void 0,l=Vr(`${n?n+"-":""}area-${t}-gradient`),c=function(e,t){const n=e.fillGradient;if(!n||"object"!=typeof n)return null;let r=1/0;for(const[,t]of e.topPath)r=Math.min(r,t);let o=-1/0;for(const[,t]of e.bottomPath)o=Math.max(o,t);if(!Number.isFinite(r)||!Number.isFinite(o))return null;const i=[];if("colorStops"in n){const e=Jo(n.colorStops);if(!e)return null;i.push(...e)}else{if(!Number.isFinite(n.topOpacity)||!Number.isFinite(n.bottomOpacity))return null;i.push(Zo("stop",{offset:0,stopColor:qr(e.style.fill),stopOpacity:Math.max(0,Math.min(1,n.topOpacity))},"0")),i.push(Zo("stop",{offset:1,stopColor:qr(e.style.fill),stopOpacity:Math.max(0,Math.min(1,n.bottomOpacity))},"1"))}return Zo("linearGradient",{id:t,gradientUnits:"userSpaceOnUse",x1:0,y1:r,x2:0,y2:o,children:i})}(r,l),u=c?`url(#${l})`:s?`url(#${a})`:qr(r.style.fill),d=c?void 0:r.style.fillOpacity??r.style.opacity??.7,f=o?eo().x(([e])=>e).y(([,e])=>e).curve(o)(r.topPath)??"":"M"+r.topPath.map(([e,t])=>`${e},${t}`).join("L"),h=Vr(`${n?n+"-":""}area-${t}-stroke-gradient`),y=Qo(r.strokeGradient,r.topPath,h),p=r.style.stroke&&"none"!==r.style.stroke?Zo("path",{d:f,fill:"none",stroke:y?`url(#${h})`:qr(r.style.stroke),strokeWidth:r.style.strokeWidth||2,opacity:r.style.opacity}):null;if(r.clipRect){const e=`${n?n+"-":""}area-clip-${t}`;return Xo("g",{children:[Xo("defs",{children:[c,!c&&s,y,Zo("clipPath",{id:e,children:Zo("rect",{x:r.clipRect.x,y:r.clipRect.y,width:r.clipRect.width,height:r.clipRect.height})})]}),Xo("g",{clipPath:`url(#${e})`,children:[Zo("path",{d:i,fill:u,fillOpacity:d,opacity:c?r.style.opacity:void 0,stroke:"none"}),p]})]},"area-"+t)}return Xo(Kr.Fragment,{children:[(c||s||y)&&Xo("defs",{children:[c,!c&&s,y]}),Zo("path",{d:i,fill:u,fillOpacity:d,opacity:c?r.style.opacity:void 0,stroke:"none"}),p]},"area-"+t)}case"point":{const r=e,o=`${n?n+"-":""}point-${t}-hatch`,i=k(r.style.fill)?A(r.style.fill,o):void 0;return Xo(Kr.Fragment,{children:[i&&Zo("defs",{children:i}),Zo("circle",{cx:r.x,cy:r.y,r:r.r,fill:i?`url(#${o})`:qr(r.style.fill),opacity:r.style.opacity??r.style.fillOpacity??.8,stroke:r.style.stroke,strokeWidth:r.style.strokeWidth})]},"point-"+t)}case"symbol":return Ko(e,t);case"glyph":return Ur(e,e.x,e.y,`${n??""}glyph-${e.pointId??t}`);case"rect":{const r=e,o=`${n?n+"-":""}xyrect-${t}-hatch`,i=k(r.style.fill)?A(r.style.fill,o):void 0;return Xo(Kr.Fragment,{children:[i&&Zo("defs",{children:i}),Zo("rect",{x:r.x,y:r.y,width:r.w,height:r.h,fill:i?`url(#${o})`:qr(r.style.fill),opacity:r.style.opacity,stroke:r.style.stroke,strokeWidth:r.style.strokeWidth})]},"rect-"+t)}case"heatcell":{const n=e;if(n.showValues&&null!=n.value&&n.w>=20&&n.h>=20){const e=n.valueFormat?n.valueFormat(n.value):Number.isInteger(n.value)?n.value+"":100>Math.abs(n.value)?1>Math.abs(n.value)?n.value.toPrecision(3):n.value.toFixed(1):n.value.toFixed(0),[r,o,i]=function(e){if(e.startsWith("#")){let t=e.slice(1);if(3===t.length&&(t=t[0]+t[0]+t[1]+t[1]+t[2]+t[2]),6===t.length)return[parseInt(t.slice(0,2),16),parseInt(t.slice(2,4),16),parseInt(t.slice(4,6),16)]}const t=e.match(/rgba?\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)/);return t?[+t[1],+t[2],+t[3]]:[128,128,128]}(n.fill),a=.299*r+.587*o+.114*i>128?"#000":"#fff",s=Math.max(10,Math.min(16,.3*Math.min(n.w,n.h)));return Xo("g",{children:[Zo("rect",{x:n.x,y:n.y,width:n.w,height:n.h,fill:n.fill}),Zo("text",{x:n.x+n.w/2,y:n.y+n.h/2,textAnchor:"middle",dominantBaseline:"middle",fill:a,fontSize:s+"px",children:e})]},"heatcell-"+t)}return Zo("rect",{x:n.x,y:n.y,width:n.w,height:n.h,fill:n.fill},"heatcell-"+t)}case"candlestick":{const n=e,r=Math.min(n.openY,n.closeY),o=Math.max(Math.abs(n.openY-n.closeY),1),i=n.isUp?n.upColor:n.downColor;return Xo("g",{children:[Zo("line",{x1:n.x,y1:n.highY,x2:n.x,y2:n.lowY,stroke:n.wickColor,strokeWidth:n.wickWidth}),Zo("rect",{x:n.x-n.bodyWidth/2,y:r,width:n.bodyWidth,height:o,fill:i,stroke:i,strokeWidth:1})]},"candle-"+t)}default:return null}}function ti(e){return 1e6>e?1e4>e?1e3>e?e+"":(e/1e3).toFixed(1)+"K":(e/1e3).toFixed(0)+"K":(e/1e6).toFixed(1)+"M"}function ni(e,t){const n=e.datum;if(!n)return null;const r=[],o=n.__funnelStepLabel,i=Number(n.__funnelStepLabelX),a=Number(n.__funnelStepLabelY),s=Number(n.__funnelRowWidth);"string"!=typeof o||!Number.isFinite(i)||!Number.isFinite(a)||Number.isFinite(s)&&8.4*o.length+16>s||r.push(Zo("text",{x:i,y:a+3,textAnchor:"middle",dominantBaseline:"hanging",fontSize:14,fontWeight:"bold",fill:"#fff",stroke:"rgba(0,0,0,0.6)",strokeWidth:3,paintOrder:"stroke",children:o},t+"-funnel-step"));const l=Number(n.__funnelValue),c=Number(n.__funnelValueLabelX),u=Number(n.__funnelValueLabelY),d=Number(n.__funnelBarW);if(Number.isFinite(l)&&0!==l&&Number.isFinite(c)&&Number.isFinite(u)&&d>=60){const e=Number(n.__funnelPercent);let o=!0!==n.__funnelIsFirstStep&&Number.isFinite(e)?`${ti(l)} (${.05>Math.abs(e-Math.round(e))?Math.round(e):e.toFixed(1)}%)`:ti(l);7.8*o.length+16>d&&(o=ti(l)),7.8*o.length+16>d||r.push(Zo("text",{x:c,y:u+22,textAnchor:"middle",dominantBaseline:"hanging",fontSize:13,fontWeight:"bold",fill:"#fff",stroke:"rgba(0,0,0,0.5)",strokeWidth:3,paintOrder:"stroke",children:o},t+"-funnel-value"))}return r.length?Zo("g",{children:r},t+"-funnel-labels"):null}function ri(e,t,n){const r=("category"in e?e.category:void 0)||("group"in e?e.group:void 0)||"",o=n=>`ord-${e.type}-${r}-${t}-${n}`,i=`ord-${e.type}-${r}-${t}`;switch(e.type){case"rect":{const t=e,n=Vr(i)+"-grad",r=function(e,t){const n=e.fillGradient;if(!n||"object"!=typeof n)return null;let r=e.x,o=e.y,i=e.x,a=e.y+e.h;"bottom"===e.roundedEdge?(o=e.y+e.h,a=e.y):"right"===e.roundedEdge?(r=e.x+e.w,o=e.y,i=e.x,a=e.y):"left"===e.roundedEdge&&(r=e.x,o=e.y,i=e.x+e.w,a=e.y);const s=[];if("colorStops"in n){const e=Jo(n.colorStops);if(!e)return null;s.push(...e)}else{const t=qr(e.style.fill);s.push(Zo("stop",{offset:0,stopColor:t,stopOpacity:n.topOpacity},"0")),s.push(Zo("stop",{offset:1,stopColor:t,stopOpacity:n.bottomOpacity},"1"))}return Zo("linearGradient",{id:t,gradientUnits:"userSpaceOnUse",x1:r,y1:o,x2:i,y2:a,children:s})}(t,n);let o,a;if(r)a=`url(#${n})`;else if(k(t.style.fill)){const e=Vr(i)+"-hatch";o=A(t.style.fill,e),a=`url(#${e})`}else a=qr(t.style.fill);const s=r||o?Xo("defs",{children:[r,o]}):null;if(t.cornerRadii&&zo(t.cornerRadii)){const e=function(e){const{x:t,y:n,w:r,h:o}=e,{tl:i,tr:a,br:s,bl:l}=To(e);let c=`M${t+i},${n}`;return c+=` L${t+r-a},${n}`,a>0&&(c+=` A${a},${a} 0 0 1 ${t+r},${n+a}`),c+=` L${t+r},${n+o-s}`,s>0&&(c+=` A${s},${s} 0 0 1 ${t+r-s},${n+o}`),c+=` L${t+l},${n+o}`,l>0&&(c+=` A${l},${l} 0 0 1 ${t},${n+o-l}`),c+=` L${t},${n+i}`,i>0&&(c+=` A${i},${i} 0 0 1 ${t+i},${n}`),c+=" Z",c}(t);return Xo(Kr.Fragment,{children:[s,Zo("path",{d:e,fill:a,opacity:t.style.opacity,stroke:t.style.stroke,strokeWidth:t.style.strokeWidth})]},i)}if(t.roundedTop&&t.roundedTop>0){const e=Math.min(t.roundedTop,t.w/2,t.h/2),{x:n,y:r,w:o,h:l}=t;let c;switch(t.roundedEdge){case"right":c=`M${n},${r} L${n+o-e},${r} A${e},${e} 0 0 1 ${n+o},${r+e} L${n+o},${r+l-e} A${e},${e} 0 0 1 ${n+o-e},${r+l} L${n},${r+l} Z`;break;case"left":c=`M${n+o},${r} L${n+e},${r} A${e},${e} 0 0 0 ${n},${r+e} L${n},${r+l-e} A${e},${e} 0 0 0 ${n+e},${r+l} L${n+o},${r+l} Z`;break;case"bottom":c=`M${n},${r} L${n+o},${r} L${n+o},${r+l-e} A${e},${e} 0 0 1 ${n+o-e},${r+l} L${n+e},${r+l} A${e},${e} 0 0 1 ${n},${r+l-e} Z`;break;default:c=`M${n},${r+l} L${n},${r+e} A${e},${e} 0 0 1 ${n+e},${r} L${n+o-e},${r} A${e},${e} 0 0 1 ${n+o},${r+e} L${n+o},${r+l} Z`}return Xo(Kr.Fragment,{children:[s,Zo("path",{d:c,fill:a,opacity:t.style.opacity,stroke:t.style.stroke,strokeWidth:t.style.strokeWidth})]},i)}return Xo(Kr.Fragment,{children:[s,Zo("rect",{x:t.x,y:t.y,width:t.w,height:t.h,fill:a,opacity:t.style.opacity,stroke:t.style.stroke,strokeWidth:t.style.strokeWidth}),ni(t,i)]},i)}case"point":{const t=e;return Zo("circle",{cx:t.x,cy:t.y,r:t.r,fill:qr(t.style.fill),opacity:t.style.opacity??t.style.fillOpacity??.8,stroke:t.style.stroke,strokeWidth:t.style.strokeWidth},i)}case"symbol":return Ko(e,t,n);case"glyph":return Ur(e,e.x,e.y,`${n??""}ord-glyph-${e.pointId??t}`);case"wedge":{const r=e;if(r._gradientBand&&r._gradientBand.colors.length>0){const e=Vr(`${n?n+"-":""}gauge-grad-${r.category||i}-${t}`),{clipPath:o,slices:a}=Eo({innerRadius:r.innerRadius,outerRadius:r.outerRadius,startAngle:r.startAngle,endAngle:r.endAngle,cornerRadius:r.cornerRadius,roundStart:r.roundedEnds?.start??!0,roundEnd:r.roundedEnds?.end??!0,colors:r._gradientBand.colors});return Xo("g",{transform:`translate(${r.cx},${r.cy})`,opacity:r.style.opacity,fillOpacity:r.style.fillOpacity,children:[Zo("defs",{children:Zo("clipPath",{id:e,children:Zo("path",{d:o})})}),Zo("g",{clipPath:`url(#${e})`,children:a.map((e,t)=>Zo("path",{d:e.d,fill:qr(e.color)},t))}),r.style.stroke&&"none"!==r.style.stroke&&Zo("path",{d:o,fill:"none",stroke:r.style.stroke,strokeWidth:r.style.strokeWidth})]},i)}let o;if(r.roundedEnds)o=Bo({innerRadius:r.innerRadius,outerRadius:r.outerRadius,startAngle:r.startAngle,endAngle:r.endAngle,cornerRadius:r.cornerRadius,roundStart:r.roundedEnds.start,roundEnd:r.roundedEnds.end});else{const e=Jr().innerRadius(r.innerRadius).outerRadius(r.outerRadius).startAngle(r.startAngle+Math.PI/2).endAngle(r.endAngle+Math.PI/2);r.cornerRadius&&e.cornerRadius(r.cornerRadius),o=e(Gr)||""}return Zo("path",{d:o,transform:`translate(${r.cx},${r.cy})`,fill:qr(r.style.fill),stroke:r.style.stroke,strokeWidth:r.style.strokeWidth,opacity:r.style.opacity},i)}case"boxplot":{const t=e,n=t.columnWidth/2;return Xo("g","vertical"===t.projection?{children:[Zo("line",{x1:t.x,y1:t.minPos,x2:t.x,y2:t.maxPos,stroke:t.style.stroke||"#333",strokeWidth:1}),Zo("rect",{x:t.x-n,y:Math.min(t.q1Pos,t.q3Pos),width:t.columnWidth,height:Math.abs(t.q3Pos-t.q1Pos),fill:qr(t.style.fill),fillOpacity:t.style.fillOpacity??.6,stroke:t.style.stroke||"#333",strokeWidth:1}),Zo("line",{x1:t.x-n,y1:t.medianPos,x2:t.x+n,y2:t.medianPos,stroke:t.style.stroke||"#333",strokeWidth:2}),Zo("line",{x1:t.x-.5*n,y1:t.minPos,x2:t.x+.5*n,y2:t.minPos,stroke:t.style.stroke||"#333",strokeWidth:1}),Zo("line",{x1:t.x-.5*n,y1:t.maxPos,x2:t.x+.5*n,y2:t.maxPos,stroke:t.style.stroke||"#333",strokeWidth:1})]}:{children:[Zo("line",{x1:t.minPos,y1:t.y,x2:t.maxPos,y2:t.y,stroke:t.style.stroke||"#333",strokeWidth:1}),Zo("rect",{x:Math.min(t.q1Pos,t.q3Pos),y:t.y-n,width:Math.abs(t.q3Pos-t.q1Pos),height:t.columnWidth,fill:qr(t.style.fill),fillOpacity:t.style.fillOpacity??.6,stroke:t.style.stroke||"#333",strokeWidth:1}),Zo("line",{x1:t.medianPos,y1:t.y-n,x2:t.medianPos,y2:t.y+n,stroke:t.style.stroke||"#333",strokeWidth:2}),Zo("line",{x1:t.minPos,y1:t.y-.5*n,x2:t.minPos,y2:t.y+.5*n,stroke:t.style.stroke||"#333",strokeWidth:1}),Zo("line",{x1:t.maxPos,y1:t.y-.5*n,x2:t.maxPos,y2:t.y+.5*n,stroke:t.style.stroke||"#333",strokeWidth:1})]},i)}case"violin":{const t=e,n=[Zo("path",{d:t.pathString,transform:t.translateX||t.translateY?`translate(${t.translateX},${t.translateY})`:void 0,fill:qr(t.style.fill),fillOpacity:t.style.fillOpacity??.6,stroke:t.style.stroke||"#333",strokeWidth:t.style.strokeWidth||1},o("path"))];if(t.iqrLine&&t.bounds){const e=t.bounds,r=e.x+e.width/2,i=e.y+e.height/2;t.iqrLine.isVertical?n.push(Zo("line",{x1:r,y1:t.iqrLine.q1Pos,x2:r,y2:t.iqrLine.q3Pos,stroke:t.style.stroke||"#333",strokeWidth:2},o("iqr")),Zo("circle",{cx:r,cy:t.iqrLine.medianPos,r:3,fill:"white",stroke:t.style.stroke||"#333",strokeWidth:1},o("med"))):n.push(Zo("line",{x1:t.iqrLine.q1Pos,y1:i,x2:t.iqrLine.q3Pos,y2:i,stroke:t.style.stroke||"#333",strokeWidth:2},o("iqr")),Zo("circle",{cx:t.iqrLine.medianPos,cy:i,r:3,fill:"white",stroke:t.style.stroke||"#333",strokeWidth:1},o("med")))}return Zo("g",{children:n},i)}case"connector":return Zo("line",{x1:e.x1,y1:e.y1,x2:e.x2,y2:e.y2,stroke:e.style.stroke||"#999",strokeWidth:e.style.strokeWidth||1,opacity:e.style.opacity??.5},i);case"trapezoid":{const t=e,n=t.points.map(e=>`${e[0]},${e[1]}`).join(" ");return Zo("polygon",{points:n,fill:qr(t.style.fill,"#999"),opacity:t.style.opacity,stroke:t.style.stroke,strokeWidth:t.style.strokeWidth},i)}default:return null}}var oi="undefined"==typeof window||"undefined"==typeof document;import*as ii from"react";import{jsx as ai}from"react/jsx-runtime";var si=ii.createContext(null);function li({children:e}){const[t,n]=ii.useState(!1),r=ii.useCallback(()=>n(e=>!e),[]),o=ii.useMemo(()=>({visible:t,setVisible:n,toggle:r}),[t,r]);return ai(si.Provider,{value:o,children:e})}function ci(){return ii.useContext(si)}function ui(){const e=ii.useContext(si);return e?e.toggle:null}import{jsx as di}from"react/jsx-runtime";var fi={position:"absolute",width:1,height:1,overflow:"hidden",clip:"rect(0,0,0,0)",whiteSpace:"nowrap",border:0};function hi({hoverPoint:e}){let t="";if(e){const n=e.data||e;t="object"==typeof n?"Data point: "+Object.entries(n).filter(([,e])=>"object"!=typeof e&&"function"!=typeof e).map(([e,t])=>`${e}: ${t}`).join(", "):"Data point: "+n}return di("div",{"aria-live":"polite","aria-atomic":"true",style:fi,children:t})}function yi(e){const t={};if(null==e||"object"!=typeof e)return t;for(const[n,r]of Object.entries(e))n.startsWith("_")||null!=r&&""!==r&&("number"==typeof r?Number.isFinite(r)&&(t[n]=r):"string"==typeof r?t[n]=r:"boolean"==typeof r?t[n]=r+"":r instanceof Date&&(t[n]=r.toISOString().slice(0,10)));return t}function pi(e){return e&&"object"==typeof e?e:{}}function mi(e){return pi(e.accessibility).tableFields??e.accessibleDatum??e.datum}function gi(e){const t=[];if(!Array.isArray(e))return t;const n=e.some(e=>e&&("line"===e.type||"area"===e.type));for(const r of e)if(r&&"object"==typeof r&&null!==r.datum)try{switch(r.type){case"point":if(n)break;t.push({label:"Point",values:yi(mi(r))});break;case"line":case"area":{const e=mi(r),n=Array.isArray(e)?e:[],o="line"===r.type?"Line point":"Area point";for(const e of n)t.push({label:o,values:yi(e)});break}case"rect":{const e=mi(r),n=null!=e&&"object"==typeof e?e:{},o=n.category??r.group??"",i=n.value??n.__aggregateValue??n.total,a=yi(n);null==a.category&&""!==o&&(a.category=o+""),null==a.value&&null!=i&&(a.value="number"==typeof i||"string"==typeof i?i:i+""),t.push({label:"Bar",values:a});break}case"heatcell":{const e=yi(mi(r));null==e.value&&"number"==typeof r.value&&Number.isFinite(r.value)&&(e.value=r.value),t.push({label:"Cell",values:e});break}case"wedge":{const e=mi(r),n=yi(e);if(null==n.category){const t=pi(e),r=t.category??t.label;null!=r&&(n.category=r+"")}t.push({label:"Wedge",values:n});break}case"circle":t.push({label:"Node",values:yi(mi(r))});break;case"arc":t.push({label:"Arc",values:yi(mi(r))});break;case"candlestick":t.push({label:"Candlestick",values:yi(mi(r))});break;case"geoarea":{const e=pi(mi(r)),n=yi(e);if(null==n.name){const t=pi(e.properties).name??e.name;null!=t&&(n.name=t+"")}t.push({label:"Region",values:n});break}}}catch{}return t}import*as bi from"react";import{jsx as xi,jsxs as vi}from"react/jsx-runtime";function ki(e,t){if(!e||0===e.length)return t+", empty";const n={};for(const t of e){if(null===t?.datum)continue;const e=t.type+"";n[e]=(n[e]||0)+1}if(0===Object.keys(n).length)return t+", empty";const r=[],o={point:"points",line:"lines",area:"areas",rect:"bars",heatcell:"cells",circle:"nodes",candlestick:"candlesticks",wedge:"wedges",arc:"arcs",geoarea:"regions"},i=["point","line","area","rect","heatcell","circle","candlestick","wedge","arc","geoarea"],a=Object.keys(n).sort((e,t)=>{const n=i.indexOf(e),r=i.indexOf(t);return(-1===n?999:n)-(-1===r?999:r)});for(const e of a)r.push(`${n[e]} ${o[e]||e}`);return`${t}, ${r.join(", ")}`}function wi(e,t,n){const r=[];return e>0&&r.push(e+" nodes"),t>0&&r.push(t+" edges"),0===r.length?n+", empty":`${n}, ${r.join(", ")}`}var $i=e=>{if(null==e)return"";const t=Math.round(100*e)/100;return Number.isNaN(t)?"":t+""},Mi="semiotic-accessible-data-table",Ai=Mi+" semiotic-accessible-data-table-hidden",Si=Mi+" semiotic-accessible-data-table-visible",Wi=Si+" semiotic-accessible-data-table-network",Ci={position:"absolute",top:0,left:0,right:0,zIndex:"var(--semiotic-data-table-z-index, var(--semiotic-overlay-z-index, 20))",padding:"14px 16px 12px",borderBottom:"1px solid var(--semiotic-data-table-border, var(--semiotic-border, #e0e0e0))",fontFamily:"var(--semiotic-font-family, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif)",fontSize:13,lineHeight:1.5,color:"var(--semiotic-data-table-text, var(--semiotic-text, #333))",background:"var(--semiotic-data-table-bg, var(--semiotic-surface, var(--semiotic-bg, #fff)))",borderRadius:"var(--semiotic-border-radius, 0px) var(--semiotic-border-radius, 0px) 0 0"},ji={marginBottom:8,paddingRight:28,color:"var(--semiotic-data-table-muted-text, var(--semiotic-text-secondary, #666))",fontSize:12,letterSpacing:"0.01em"},Ni={position:"absolute",top:10,right:10,width:22,height:22,display:"flex",alignItems:"center",justifyContent:"center",border:"1px solid var(--semiotic-data-table-border, var(--semiotic-border, #e0e0e0))",background:"var(--semiotic-data-table-bg, var(--semiotic-surface, var(--semiotic-bg, #fff)))",cursor:"pointer",color:"var(--semiotic-data-table-muted-text, var(--semiotic-text-secondary, #666))",fontSize:13,lineHeight:1,padding:0,borderRadius:"var(--semiotic-border-radius, 4px)"},Oi={width:"100%",borderCollapse:"collapse",fontSize:12,marginTop:4,fontVariantNumeric:"tabular-nums"},Ii={textAlign:"left",padding:"5px 10px",borderBottom:"2px solid var(--semiotic-data-table-border, var(--semiotic-border, #e0e0e0))",fontWeight:600,fontSize:11,textTransform:"uppercase",letterSpacing:"0.04em",color:"var(--semiotic-data-table-muted-text, var(--semiotic-text-secondary, #666))"},Ri={padding:"4px 10px",borderBottom:"1px solid var(--semiotic-data-table-border, var(--semiotic-border, #e0e0e0))"},Li={textAlign:"left",fontSize:11,color:"var(--semiotic-data-table-muted-text, var(--semiotic-text-secondary, #666))",marginBottom:4,fontStyle:"italic"},Fi={marginTop:8,padding:"4px 10px",fontSize:12,cursor:"pointer",border:"1px solid var(--semiotic-data-table-border, var(--semiotic-border, #e0e0e0))",borderRadius:"var(--semiotic-border-radius, 4px)",background:"var(--semiotic-data-table-bg, var(--semiotic-surface, var(--semiotic-bg, #fff)))",color:"var(--semiotic-data-table-text, var(--semiotic-text, #333))",fontFamily:"inherit"};function Pi({scene:e,chartType:t,tableId:n,chartTitle:r}){const[o,i]=bi.useState(!1),[a,s]=bi.useState(5),l=ci(),c=l?.visible??!1,u=o||c,d=bi.useRef(null),f=r?"Data summary for "+r:n?`Data summary for ${t} ${n}`:"Data summary for "+t;bi.useEffect(()=>{u||s(5)},[u]);const h=bi.useCallback(e=>{e.target===e.currentTarget&&(o||c||i(!0))},[o,c]),y=bi.useCallback(e=>{c||d.current?.contains(e.relatedTarget)||i(!1)},[c]);if(!e||0===e.length)return n?xi("span",{id:n,tabIndex:-1,style:fi}):null;if(!u)return xi("div",{id:n,className:Ai,tabIndex:-1,onFocus:h,style:fi,role:"region","aria-label":f,children:vi("button",{type:"button",onClick:()=>i(!0),children:["View data summary (",e.length," elements)"]})});const p=gi(e),m=function(e){if(!e||0===e.length)return[];const t=new Set;for(const n of e)if(n&&n.values)for(const e of Object.keys(n.values))t.add(e);const n=[];for(const r of t){const t=[],o=new Set;for(const n of e){if(!n||!n.values)continue;const e=n.values[r];null!=e&&""!==e&&("number"==typeof e&&!Number.isNaN(e)&&Number.isFinite(e)?t.push(e):"number"==typeof e||"object"!=typeof e&&"function"!=typeof e&&o.add(e+""))}if(t.length>0){let e=t[0],o=t[0],i=0;for(const n of t)e>n&&(e=n),n>o&&(o=n),i+=n;n.push({name:r,count:t.length,numeric:!0,min:e,max:o,mean:i/t.length})}else if(o.size>0){const e=Array.from(o);n.push({name:r,count:e.length,numeric:!1,uniqueValues:e.slice(0,5)})}}return n}(p),g=function(e,t){const n=[e+" data points."];for(const e of t)if(e.numeric)n.push(`${e.name}: ${$i(e.min)} to ${$i(e.max)}, mean ${$i(e.mean)}.`);else{const t=e.uniqueValues,r=t.length>3?`${t.slice(0,3).join(", ")}… (${e.count} unique)`:t.join(", ");n.push(`${e.name}: ${r}.`)}return n.join(" ")}(p.length,m),b=Math.min(a,p.length),x=p.slice(0,b),v=p.length-b,k=new Set;for(const e of x)for(const t of Object.keys(e.values))k.add(t);const w=Array.from(k);return vi("div",{ref:d,id:n,className:Si,tabIndex:-1,onBlur:y,style:Ci,role:"region","aria-label":f,children:[xi("button",{type:"button",className:"semiotic-accessible-data-table-close",onClick:()=>{c&&l&&l.setVisible(!1),i(!1)},"aria-label":"Close data summary",style:Ni,children:"×"}),xi("div",{className:"semiotic-accessible-data-table-summary",role:"note",style:ji,children:g}),vi("table",{className:"semiotic-accessible-data-table-table",role:"table","aria-label":"Sample data for "+t,style:Oi,children:[xi("caption",{className:"semiotic-accessible-data-table-caption",style:Li,children:v>0?`First ${b} of ${p.length} data points`:`All ${p.length} data points`}),xi("thead",{children:vi("tr",{children:[xi("th",{style:Ii,children:"type"}),w.map(e=>xi("th",{style:Ii,children:e},e))]})}),xi("tbody",{children:x.map((e,t)=>vi("tr",{children:[xi("td",{style:Ri,children:e.label}),w.map(t=>{return xi("td",{style:Ri,children:(n=e.values[t],null==n||""===n?"—":"number"==typeof n?Number.isNaN(n)?"—":$i(n):"boolean"==typeof n?n?"true":"false":"object"==typeof n?"—":n+"")},t);var n})]},t))})]}),v>0&&vi("button",{type:"button",className:"semiotic-accessible-data-table-show-more",onClick:()=>s(e=>e+25),style:Fi,children:["Show ",Math.min(25,v)," more"," ",1===v?"row":"rows"," (",v," remaining)"]})]})}function zi({nodes:e,edges:t,chartType:n,tableId:r,chartTitle:o}){const[i,a]=bi.useState(!1),[s,l]=bi.useState(5),c=ci(),u=c?.visible??!1,d=i||u,f=o?"Data summary for "+o:r?`Data summary for ${n} ${r}`:"Data summary for "+n,h=bi.useRef(null);bi.useEffect(()=>{d||l(5)},[d]);const y=bi.useCallback(e=>{e.target===e.currentTarget&&(i||u||a(!0))},[i,u]),p=bi.useCallback(e=>{u||h.current?.contains(e.relatedTarget)||a(!1)},[u]);if(!e||0===e.length)return r?xi("span",{id:r,tabIndex:-1,style:fi}):null;if(!d)return xi("div",{id:r,className:Ai,tabIndex:-1,onFocus:y,style:fi,role:"region","aria-label":f,children:vi("button",{type:"button",onClick:()=>a(!0),children:["View data summary (",e.length," nodes, ",t.length," edges)"]})});const m=Array.isArray(e)?e:[],g=Array.isArray(t)?t:[],b=new Map,x=new Map,v=new Map,k=new Map;for(const e of g){if(!e||"object"!=typeof e)continue;const t=e.datum??{source:e.source,target:e.target},n="object"==typeof t.source?t.source?.id:t.source,r="object"==typeof t.target?t.target?.id:t.target,o="number"==typeof t.value&&Number.isFinite(t.value)?t.value:0;if(null!=n&&""!==n){const e=n+"";x.set(e,(x.get(e)??0)+1),k.set(e,(k.get(e)??0)+o)}if(null!=r&&""!==r){const e=r+"";b.set(e,(b.get(e)??0)+1),v.set(e,(v.get(e)??0)+o)}}const w=[];for(let e=0;m.length>e;e++){const t=m[e];if(!t||"object"!=typeof t)continue;const n=t.datum?.id??t.id,r=null!=n?n+"":"node-"+e,o=b.get(r)??0,i=x.get(r)??0,a=v.get(r)??0,s=k.get(r)??0;w.push({id:r,degree:o+i,inDeg:o,outDeg:i,wDegree:a+s,wInDeg:a,wOutDeg:s})}w.sort((e,t)=>t.degree-e.degree);let $=0,M=0;if(w.length>0){let e=0;for(const t of w)e+=t.degree,t.degree>M&&(M=t.degree);$=e/w.length}const A=g.some(e=>{const t=e?.datum??{source:e?.source,target:e?.target};return"number"==typeof t?.value&&Number.isFinite(t.value)}),S=[`${w.length} nodes, ${g.length} edges.`];w.length>0&&S.push(`Mean degree: ${$i($)}, max degree: ${M}.`);const W=Math.min(s,w.length),C=w.slice(0,W),j=w.length-W;return vi("div",{ref:h,id:r,className:Wi,tabIndex:-1,onBlur:p,style:Ci,role:"region","aria-label":f,children:[xi("button",{type:"button",className:"semiotic-accessible-data-table-close",onClick:()=>{u&&c&&c.setVisible(!1),a(!1)},"aria-label":"Close data summary",style:Ni,children:"×"}),xi("div",{className:"semiotic-accessible-data-table-summary",role:"note",style:ji,children:S.join(" ")}),vi("table",{className:"semiotic-accessible-data-table-table",role:"table","aria-label":"Node degree summary for "+n,style:Oi,children:[xi("caption",{className:"semiotic-accessible-data-table-caption",style:Li,children:j>0?`Top ${W} of ${w.length} nodes by degree`:`All ${w.length} nodes by degree`}),xi("thead",{children:vi("tr",{children:[xi("th",{style:Ii,children:"id"}),xi("th",{style:Ii,children:"degree"}),xi("th",{style:Ii,children:"in"}),xi("th",{style:Ii,children:"out"}),A&&xi("th",{style:Ii,children:"w. degree"}),A&&xi("th",{style:Ii,children:"w. in"}),A&&xi("th",{style:Ii,children:"w. out"})]})}),xi("tbody",{children:C.map((e,t)=>vi("tr",{children:[xi("td",{style:Ri,children:e.id}),xi("td",{style:Ri,children:e.degree}),xi("td",{style:Ri,children:e.inDeg}),xi("td",{style:Ri,children:e.outDeg}),A&&xi("td",{style:Ri,children:$i(e.wDegree)}),A&&xi("td",{style:Ri,children:$i(e.wInDeg)}),A&&xi("td",{style:Ri,children:$i(e.wOutDeg)})]},t))})]}),j>0&&vi("button",{type:"button",className:"semiotic-accessible-data-table-show-more",onClick:()=>l(e=>e+25),style:Fi,children:["Show ",Math.min(25,j)," more"," ",1===j?"node":"nodes"," (",j," remaining)"]})]})}function Ti({summary:e}){return e?xi("div",{role:"note",style:fi,children:e}):null}function Di({tableId:e}){return xi("a",{href:"#"+e,style:fi,onClick:t=>{t.preventDefault();const n=document.getElementById(e);n&&requestAnimationFrame(()=>n.focus())},onFocus:e=>{Object.assign(e.currentTarget.style,{position:"absolute",width:"auto",height:"auto",overflow:"visible",clip:"auto",whiteSpace:"normal",padding:"4px 8px",background:"var(--semiotic-bg, #fff)",color:"var(--semiotic-text, #000)",border:"2px solid var(--semiotic-focus, #005fcc)",borderRadius:"4px",zIndex:"10",fontSize:"12px",top:"4px",left:"4px"})},onBlur:e=>{const t=e.currentTarget;t.removeAttribute("style"),Object.assign(t.style,fi)},children:"Skip to data table"})}import{jsx as Bi}from"react/jsx-runtime";var Ei="var(--semiotic-focus, #005fcc)";function Hi({active:e,hoverPoint:t,margin:n,size:r,shape:o="circle",width:i,height:a,pathData:s}){if(!e||!t)return null;const l=t.x+n.left,c=t.y+n.top;let u;if("geoarea"!==o&&"path"!==o||!s)if("rect"===o&&null!=i&&null!=a){const e=Math.max(i,4),t=Math.max(a,4);u=Bi("rect",{x:l-e/2-3,y:c-t/2-3,width:e+6,height:t+6,rx:3,fill:"none",stroke:Ei,strokeWidth:2,strokeDasharray:"4,2"})}else u=Bi("circle","wedge"===o?{cx:l,cy:c,r:12,fill:"none",stroke:Ei,strokeWidth:2.5,strokeDasharray:"6,3"}:{cx:l,cy:c,r:8,fill:"none",stroke:Ei,strokeWidth:2,strokeDasharray:"4,2"});else u=Bi("g",{transform:`translate(${n.left},${n.top})`,children:Bi("path",{d:s,fill:"none",stroke:Ei,strokeWidth:2.5,strokeDasharray:"6,3"})});return Bi("svg",{style:{position:"absolute",left:0,top:0,width:r[0],height:r[1],pointerEvents:"none",zIndex:2},"aria-hidden":"true",children:u})}import*as _i from"react";import{jsx as Gi}from"react/jsx-runtime";function qi({x:e,y:t,containerWidth:n,containerHeight:r,margin:o,children:i,className:a="stream-frame-tooltip",zIndex:s=1}){const l=Number.isFinite(e)&&Number.isFinite(t),c=_i.useRef(null),[u,d]=_i.useState(null);_i.useLayoutEffect(()=>{const e=c.current;if(!e)return;const t=()=>{const t=e.getBoundingClientRect();Number.isFinite(t.width)&&Number.isFinite(t.height)&&d(e=>e&&.5>Math.abs(e.width-t.width)&&.5>Math.abs(e.height-t.height)?e:{width:t.width,height:t.height})};if(t(),"undefined"==typeof ResizeObserver)return;const n=new ResizeObserver(t);return n.observe(e),()=>n.disconnect()},[a,n,r,l]);let f;f=u?`translate(${u.width+12>n-e?"calc(-100% - 12px)":"12px"}, ${u.height+12>r-t?"calc(-100% - 4px)":"4px"})`:`translate(${e>.7*n?"calc(-100% - 12px)":"12px"}, ${.3*r>t?"4px":"calc(-100% - 4px)"})`;const h=function(e){if(!_i.isValidElement(e))return!1;const t=e.type;if("string"!=typeof t&&t&&!0===t.ownsChrome)return!0;const n=e.props;if(!0===n["data-semiotic-tooltip-chrome"])return!0;if("true"===n["data-semiotic-tooltip-chrome"])return!0;const r=n.style;if(r&&"object"==typeof r){if(null!=r.background&&""!==r.background&&"transparent"!==r.background)return!0;if(null!=r.backgroundColor&&""!==r.backgroundColor&&"transparent"!==r.backgroundColor)return!0}return!1}(i),y=h?null:X;return l?Gi("div",{ref:c,className:h?a:(a+" semiotic-tooltip").trim(),style:{...y||{},position:"absolute",left:o.left+e,top:o.top+t,transform:f,pointerEvents:"none",zIndex:s,width:"max-content"},children:i}):null}import*as Vi from"react";import{useCallback as Ui,useEffect as Yi,useLayoutEffect as Zi,useMemo as Xi,useRef as Ki}from"react";function Ji(e,t="ease-out-cubic"){return"linear"===t?e:1-Math.pow(1-e,3)}function Qi(e,t){return Math.min((e-t.startTime)/t.duration,1)}function ea(e,t,n){return e+(t-e)*n}function ta(){return"undefined"!=typeof performance?performance.now():Date.now()}var na=()=>"undefined"!=typeof performance?performance.now():Date.now();function ra(e){let t=e>>>0;return()=>{t+=1831565813;let e=t;return e=Math.imul(e^e>>>15,1|e),e^=e+Math.imul(e^e>>>7,61|e),((e^e>>>14)>>>0)/4294967296}}function oa(e,t){const n=e();return Number.isFinite(n)?n:t}var ia=class{constructor(e={}){this.randomSource=Math.random,this.subscribers=new Set,this.now=()=>this.advance(),this.random=()=>this.randomSource(),this.clock=e.clock??na,this.lastWallTime=oa(this.clock,0),this.logicalTime=this.lastWallTime,this.pausedValue=!0===e.paused,this.visibleValue=!1!==e.visible,this.setRandomSource(e.random,e.seed)}get isActive(){return!this.pausedValue&&this.visibleValue}get paused(){return this.pausedValue}get seed(){return this.seedValue}get visible(){return this.visibleValue}configure(e){this.setClock(e.clock),this.setRandomSource(e.random,e.seed)}setPaused(e){this.pausedValue!==e&&(this.advance(),this.pausedValue=e,this.emit())}setVisible(e){this.visibleValue!==e&&(this.advance(),this.visibleValue=e,this.emit())}snapshot(){return{now:this.now(),paused:this.pausedValue,seed:this.seedValue,visible:this.visibleValue}}subscribe(e){return this.subscribers.add(e),()=>this.subscribers.delete(e)}advance(){const e=oa(this.clock,this.lastWallTime),t=Math.max(0,e-this.lastWallTime);return this.lastWallTime=e,this.isActive&&(this.logicalTime+=t),this.logicalTime}emit(){for(const e of this.subscribers)e()}setClock(e){const t=e??na;t!==this.clock&&(this.advance(),this.clock=t,this.lastWallTime=oa(t,this.lastWallTime))}setRandomSource(e,t){const n=function(e){return"number"==typeof e&&Number.isFinite(e)?Math.trunc(e):void 0}(t);e===this.randomInput&&n===this.seedValue||(this.randomInput=e,this.seedValue=n,this.randomSource=e??(void 0===n?Math.random:ra(n)))}},aa=22,sa="undefined"==typeof window?Yi:Zi,la={requestAnimationFrame:e=>("undefined"==typeof window?globalThis:window).requestAnimationFrame(e),cancelAnimationFrame:e=>("undefined"==typeof window?globalThis:window).cancelAnimationFrame(e)};function ca(e,t,n){return"function"==typeof e?e({size:t,margin:n}):e}function ua(e){const t=l(),n=Ki(t);n.current=t;const[o,i]=qt(e.sizeProp,e.responsiveWidth,e.responsiveHeight),a=!!e.title,s=!!e.legend&&"top"===e.legendPosition,c=Xi(()=>function(e,t,n=!1){const r=n?t?58:34:t?36:0;return r>e.top?{...e,top:r}:e}({...e.marginDefault,...e.userMargin},a,s),[e.marginDefault,e.userMargin,a,s]),u=i[0]-c.left-c.right,d=i[1]-c.top-c.bottom,f=ca(e.foregroundGraphics,i,c),h=ca(e.backgroundGraphics,i,c),y=r(e=>e.theme),{transition:p,introEnabled:m}=function(e,t){if(!1===e)return{transition:void 0,introEnabled:!1};const n="undefined"!=typeof window&&window.matchMedia?.("(prefers-reduced-motion: reduce)").matches;return{transition:e?!0===e?{duration:300}:{duration:e.duration??300,easing:"linear"===e.easing?"linear":"ease-out"}:t,introEnabled:!(n||!e||!0!==e&&!1===e.intro)}}(e.animate,e.transitionProp),g="semiotic-table-"+Vi.useId(),b=Ki(null);if(!b.current){const t=!e.suspendWhenHidden||"undefined"==typeof document||!document.hidden;b.current=new ia({clock:e.clock,random:e.random,seed:e.seed,paused:e.paused,visible:t})}const x=b.current;x.configure({clock:e.clock,random:e.random,seed:e.seed});const v=Ki(null),k=Ki(e.frameScheduler??la);k.current=e.frameScheduler??la;const w=Ki(null),$=Ki(!1),M=Ki(()=>{}),A=Ui(()=>{if(null!==v.current||$.current)return;const e=k.current;let t=!1,n=!1;const r=e.requestAnimationFrame(()=>{t=!0;const e=!n;e&&($.current=!0),v.current=null,w.current=null;try{M.current()}finally{e&&($.current=!1)}});n=!0,t||(v.current=r,w.current=e)},[]),S=Ui(()=>{null!==v.current&&((w.current??k.current).cancelAnimationFrame(v.current),v.current=null,w.current=null)},[]);sa(()=>{x.setPaused(!0===e.paused)},[x,e.paused]),Yi(()=>{if(!e.suspendWhenHidden||"undefined"==typeof document)return void x.setVisible(!0);const t=()=>x.setVisible(!document.hidden);return t(),document.addEventListener("visibilitychange",t),()=>document.removeEventListener("visibilitychange",t)},[x,e.suspendWhenHidden]),Yi(()=>()=>{S()},[S]);const W=Ki(()=>{}),C=Ki(()=>{}),j=Ki(null),N=Ki(null),O=Ki(null),I=Ui(()=>{const e=j.current;j.current=null,e&&W.current(e)},[]),R=Ui(e=>{if(j.current={clientX:e.clientX,clientY:e.clientY,pointerType:e.pointerType},null===N.current){const e=k.current;let t=!1;const n=e.requestAnimationFrame(()=>{t=!0,N.current=null,O.current=null,I()});t||(N.current=n,O.current=e)}},[I]),L=Ui(()=>{j.current=null,null!==N.current&&((O.current??k.current).cancelAnimationFrame(N.current),N.current=null,O.current=null),C.current()},[]);Yi(()=>()=>{j.current=null,null!==N.current&&((O.current??k.current).cancelAnimationFrame(N.current),N.current=null,O.current=null)},[]);const F=e.themeDirtyRef;return sa(()=>{F&&(ro++,F.current=!0,A())},[y,A,F]),{reducedMotion:t,reducedMotionRef:n,responsiveRef:o,size:i,margin:c,adjustedWidth:u,adjustedHeight:d,resolvedForeground:f,resolvedBackground:h,currentTheme:y,transition:p,introEnabled:m,tableId:g,frameRuntime:x,rafRef:v,renderFnRef:M,scheduleRender:A,cancelRender:S,hoverHandlerRef:W,hoverLeaveRef:C,onPointerMove:R,onPointerLeave:L}}import{useEffect as da,useRef as fa}from"react";import{jsx as ha}from"react/jsx-runtime";function ya(e,t){return function(e){const{cancelRender:t,dirtyRef:n,frameRuntime:r,manageFrameRuntime:o,scheduleRender:i}=e,a=fa(null),l=fa(null),c=fa(!1);return s({hydrated:e.hydrated,wasHydratingFromSSR:e.wasHydratingFromSSR,storeRef:e.storeRef,dirtyRef:e.dirtyRef,renderFnRef:e.renderFnRef,cancelRender:e.cancelRender,cleanup:e.cleanup}),da(()=>{if(!1!==o)return r.subscribe(()=>{r.isActive?(n.current=!0,i()):t()})},[t,n,r,o,i]),da(()=>{!c.current&&(c.current=!0,e.skipInitialCanvasPaintInvalidation)||(e.dirtyRef.current=!0,e.scheduleRender())},e.canvasPaintDependencies),{canvasRef:a,interactionCanvasRef:l}}({...t,renderFnRef:e.renderFnRef,scheduleRender:e.scheduleRender,cancelRender:e.cancelRender,frameRuntime:e.frameRuntime})}function pa({children:e,size:t,margin:n,overflowVisible:r=!1}){return e?ha("svg",{style:{position:"absolute",left:0,top:0,width:t[0],height:t[1],pointerEvents:"none",overflow:r?"visible":void 0},children:ha("g",{transform:`translate(${n.left},${n.top})`,children:e})}):null}function ma(e,t,n,r){const o=e.getContext("2d");if(!o)return null;const i=Math.round(t[0]*r),a=Math.round(t[1]*r),s=i/t[0],l=a/t[1],c=t[0]+"px",u=t[1]+"px";return e.style.width!==c&&(e.style.width=c),e.style.height!==u&&(e.style.height=u),e.width===i&&e.height===a||(e.width=i,e.height=a),o.setTransform(s,0,0,l,0,0),o.translate(n.left,n.top),o}function ga(){if("undefined"==typeof window)return 1;const e=window.devicePixelRatio||1,t=function(){if("undefined"==typeof window)return!1;const e="function"==typeof window.matchMedia&&window.matchMedia("(pointer: coarse)").matches,t=768>Math.min(window.innerWidth||1/0,window.innerHeight||1/0);return e||t}()?2:3;return Math.max(1,Math.min(e,t))}function ba(e){return"touch"===e?"touch":"pointer"}function xa(e){const t=e.target;return t instanceof Element&&t!==e.currentTarget&&null!=t.closest("button, a[href], input, select, textarea, summary, [contenteditable='true'], [role='button'], [role='link'], [role='checkbox'], [role='radio'], [role='switch']")}function va(e){const{onObservation:t,datum:n,x:r=0,y:o=0,chartType:i,chartId:a,context:s,timestamp:l=Date.now()}=e;t&&(n?(t({type:"hover",datum:n,x:r,y:o,timestamp:l,chartType:i,chartId:a}),"focus"===s?.type&&t({type:"focus",datum:n,inputType:"touch"===s.inputType?"pointer":s.inputType,timestamp:l,chartType:i,chartId:a})):t({type:"hover-end",timestamp:l,chartType:i,chartId:a}))}function ka(e){const{onObservation:t,datum:n,x:r=0,y:o=0,chartType:i,chartId:a,context:s,timestamp:l=Date.now()}=e;t&&(n?(t({type:"click",datum:n,x:r,y:o,timestamp:l,chartType:i,chartId:a}),"activate"===s?.type&&t({type:"activate",datum:n,inputType:s.inputType,timestamp:l,chartType:i,chartId:a})):t({type:"click-end",timestamp:l,chartType:i,chartId:a}))}function wa(e,t){return e?!0===e?{name:"hover",fields:t||[]}:"string"==typeof e?{name:e,fields:t||[]}:{name:e.name||"hover",fields:e.fields||t||[],mode:e.mode,xField:e.xField,seriesField:e.seriesField}:null}function $a(e){return e?"string"==typeof e?{name:e}:e:null}var Ma=.5;function Aa(e,t,n){return t?(r,...o)=>{const i={...e(r,...o)};if(t.isActive)if(t.predicate(r))n?.selectedStyle&&Object.assign(i,n.selectedStyle);else{const e=n?.unselectedOpacity??.5;i.opacity=e,i.fillOpacity=e,i.strokeOpacity=e,n?.unselectedStyle&&Object.assign(i,n.unselectedStyle)}return i}:e}var Sa={enabled:!0,tapToSelect:!0,tapToLockTooltip:!0,clearSelection:"backgroundTap",targetSize:44,snap:"nearestDatum",brushHandleSize:44,standardControls:!1,enabled:!1,tapToSelect:!1,tapToLockTooltip:!1};function Wa(e,t={}){const n=t.mobileSemantics?.interaction,r="number"==typeof n?.targetSize?n.targetSize:"number"==typeof t.mobileSemantics?.minimumHitTarget?t.mobileSemantics.minimumHitTarget:void 0,o="mobile"===t.mode||"number"==typeof t.width&&480>=t.width,i=!!n||void 0!==r,a=e&&"object"==typeof e?e:void 0;if(!1===e||!1===a?.enabled||void 0===e&&!o&&!i)return Sa;const s=a??{};return{enabled:!0,tapToSelect:s.tapToSelect??!0,tapToLockTooltip:s.tapToLockTooltip??!0,clearSelection:s.clearSelection??"backgroundTap",targetSize:s.targetSize??r??44,snap:s.snap??"nearestDatum",brushHandleSize:s.brushHandleSize??44,standardControls:s.standardControls??!1}}var Ca={primary:{width:600,height:400,showAxes:!0,showGrid:!1,enableHover:!0,showLegend:void 0,showLabels:void 0,marginDefaults:{top:50,bottom:60,left:70,right:40}},context:{width:400,height:250,showAxes:!1,showGrid:!1,enableHover:!1,showLegend:!1,showLabels:!1,marginDefaults:{top:10,bottom:10,left:10,right:10}},sparkline:{width:120,height:24,showAxes:!1,showGrid:!1,enableHover:!1,showLegend:!1,showLabels:!1,marginDefaults:{top:2,bottom:2,left:0,right:0}},mobile:{width:390,height:300,showAxes:!0,showGrid:!1,enableHover:!0,showLegend:!1,showLabels:!0,marginDefaults:{top:28,bottom:42,left:44,right:16}}};function ja(e,t,n){if(!1!==t)return e;const r={...e};return"horizontal"===n?r.left=Math.min(r.left,15):r.bottom=Math.min(r.bottom,15),r}import{useMemo as Na,useCallback as Oa,useState as Ia,useId as Ra,useEffect as La,useRef as Fa}from"react";function Pa({data:e,colorBy:t,colorScale:n,getColor:r,strokeColor:o,strokeWidth:i,categories:a}){return{legendGroups:[{styleFn:e=>{const t=e.color||"#333",n={fill:t,stroke:t};return void 0!==o&&(n.stroke=o),void 0!==i&&(n.strokeWidth=i),n},type:"fill",items:(a&&a.length>0?a:Array.from(new Set(e.map(e=>"function"==typeof t?t(e):e[t])))).map((o,i)=>{const a=e.find("function"==typeof t?e=>t(e)===o:e=>e[t]===o),s=a?r(a,t,n):n?n(o):Pe[i%Pe.length];return{label:o+"",color:s}}),label:""}]}}function za(e,t,n){const r=e.xValue??t?.[n];if(null==r)return null;const o=Number(r);return Number.isFinite(o)?o:null}function Ta(e){let t=e.data||e.datum||e;return Array.isArray(t)&&(t=t[0]),null!=e.xValue&&t&&"object"==typeof t&&!Array.isArray(t)&&null==t.xValue?{...t,xValue:e.xValue}:t||{}}function Da(e){if(!e)return!1;for(const t in e)if(Object.prototype.hasOwnProperty.call(e,t))return!0;return!1}var Ba=[];function Ea(){const e=n(),t=e?.colors?.categorical;return t&&t.length>0?t:void 0}function Ha(){const e=n();return e?.colors?.sequential||void 0}function _a(){const e=n();return e?.colors?.diverging||void 0}function Ga(e,t,n,r,o){if(e)return e;if(n&&"object"==typeof n&&!Array.isArray(n)){const e=Be(n,r);if(e)return e}let i;if(Array.isArray(n))i=n;else if(t&&t.length>0)i=t;else if("string"==typeof n){const e=Ie[n];Array.isArray(e)&&(i=e)}return i&&0!==i.length?null!=r?(o.has(r)||o.set(r,o.size),i[o.get(r)%i.length]):i[0]:Le}function qa(e,t,n){const r=Ve(),o=Ea();return Na(()=>{if(!t)return;const i=r??void 0,a=n??(o&&o.length>0?o:void 0)??"category10";if(0!==e.length){if("function"==typeof t){const n=Array.from(new Set(e.map(e=>t(e)+"")));if(i&&Da(i)){const e=Ee(n.map(e=>({_cat:e})),"_cat",a);return t=>i[t]||e(t)}return Ee(n.map(e=>({_cat:e})),"_cat",a)}if(i&&Da(i)){const n=Ee(e,t,a);return e=>i[e]||n(e)}return Ee(e,t,a)}if(i&&Da(i)){const e=Ee([{_:"a"}],"_",a);return t=>i[t]||e(t)}},[e,t,n,r,o])}function Va(e,t,n){return Na(()=>{if(!t||"auto"===t||"function"==typeof t)return e;const r=[...e],o="function"==typeof(i=n)?i:e=>e[i];var i;return r.sort("asc"===t?(e,t)=>o(e)-o(t):(e,t)=>o(t)-o(e))},[e,t,n])}function Ua({selection:e,linkedHover:t,fallbackFields:n=Ba,unwrapData:r=!1,onObservation:o,chartType:i,chartId:a,onClick:s,hoverHighlight:l,colorByField:c,mobileInteraction:u}){const d=Ra(),f=Na(()=>wa(t,n),[t,n]),h=Na(()=>"series"===f?.mode?[f.seriesField||c||n[0]].filter(e=>!!e):f?.fields||n,[f,c,n]),y=yt({name:e?.name||"__unused__",fields:h}),p=mt({name:f?.name||"hover",fields:h}),m=j(e=>e.pushObservation),g=Oa(e=>{o?.(e),m?.(e)},[o,m]),b=e?{isActive:y.isActive,predicate:y.predicate}:null,[x,v]=Ia(null),k=Fa(!1),w=c||n[0],$=Na(()=>{if(!l||null==x||!w)return null;const e=x,t=w;return{isActive:!0,predicate:n=>("string"==typeof n[t]?n[t]:(n[t]??"")+"")===e}},[l,x,w]),M=Oa((e,n)=>{const r=!e&&k.current&&!!u?.enabled&&u.tapToLockTooltip;if(t)if(e){let t=e.data||e.datum||e;if(Array.isArray(t)&&(t=t[0]),"x-position"===f?.mode&&f.xField){const n=za(e,t,f.xField);null!=n&&function(e,t,n){const r=rt.positions.get(e);r?.locked||r&&r.xValue===t&&r.sourceId===n||(rt={positions:new Map(rt.positions).set(e,{xValue:t,sourceId:n})},it())}(f.name||"hover",n,d)}"x-position"!==f?.mode&&p.onHover(t)}else"x-position"!==f?.mode||r||at(f.name||"hover",d),"x-position"===f?.mode||r||p.onHover(null);if(l&&w)if(e){let t=e.data||e.datum||e;Array.isArray(t)&&(t=t[0]);const n=t?.[w];v(null!=n?n+"":null)}else r||v(null);(o||m)&&va({onObservation:g,datum:e?Ta(e):null,x:e?.x,y:e?.y,chartType:i||"unknown",chartId:a,context:n})},[t,p,f,d,o,i,a,m,g,l,w,u]),A=Oa((n=!0)=>{k.current=!1,t&&"x-position"!==f?.mode&&p.onHover(null),e&&u?.tapToSelect&&y.clear(),n&&l&&v(null),"x-position"===f?.mode&&(st(f.name||"hover",d),at(f.name||"hover",d))},[t,f,p,e,u,y,l,d]),S=Oa((n,r)=>{const c=!!u?.enabled&&(u.tapToLockTooltip||u.tapToSelect),b=!!u?.enabled&&"backgroundTap"===u.clearSelection;if("x-position"===f?.mode&&f.xField&&n){let e=n.data||n.datum||n;Array.isArray(e)&&(e=e[0]);const t=za(n,e,f.xField);null!=t&&function(e,t,n){const r=rt.positions.get(e);if(r?.locked){const t=new Map(rt.positions);return t.delete(e),rt={positions:t},it(),!1}rt={positions:new Map(rt.positions).set(e,{xValue:t,sourceId:n,locked:!0})},it()}(f.name||"hover",t,d)}if(c)if(n){k.current=!0;const r=Ta(n);if(t&&"x-position"!==f?.mode&&p.onHover(r),e&&u?.tapToSelect&&h.length>0){const e={};for(const t of h){const n=r[t];void 0!==n&&(e[t]=[n])}Da(e)&&y.selectPoints(e)}if(l&&w){const e=r?.[w];v(null!=e?e+"":null)}}else b&&A();if(n||b){if(n&&s){let e=n.data||n.datum||n;Array.isArray(e)&&(e=e[0]),s(e,{x:n.x??0,y:n.y??0})}(o||m)&&ka({onObservation:g,datum:n?Ta(n):null,x:n?.x,y:n?.y,chartType:i||"unknown",chartId:a,context:r})}},[s,o,m,g,i,a,f,d,u,t,p,e,y,h,l,w,A]);return La(()=>{if(!u?.enabled||"undefined"==typeof document)return;const e=e=>{"Escape"===e.key&&k.current&&A()};return document.addEventListener("keydown",e),()=>document.removeEventListener("keydown",e)},[u?.enabled,A]),La(()=>()=>{k.current&&A(!1)},[A]),La(()=>{if("x-position"!==f?.mode)return;const e=f.name||"hover";return()=>{st(e,d),at(e,d)}},[f?.mode,f?.name,d]),{activeSelectionHook:b,hoverSelectionHook:$,customHoverBehavior:M,customClickBehavior:S,crosshairSourceId:d}}function Ya(e,t){const n="object"==typeof e&&null!==e?e:void 0;if("x-position"===n?.mode)return{linkedCrosshairName:n.name||"hover",linkedCrosshairSourceId:t}}function Za({data:e,colorBy:t,colorScale:n,showLegend:r,legendPosition:o="right",userMargin:i,defaults:a={top:50,bottom:60,left:70,right:40},categories:s,additionalLegend:l}){const c=Mt(Yt),u=null!==Mt(Kt),d=void 0!==r?r:!c&&!!t,f=!!t&&(d||u),h=Na(()=>{if(!f)return[];if(void 0!==s)return s;const n=new Set;for(const r of e){const e="function"==typeof t?t(r):r[t];null!=e&&n.add(e+"")}return Array.from(n)},[s,t,e,f]);tn(u&&t?h:[]);const y=Na(()=>{if(!d||!t)return;const r=Pa({data:e,colorBy:t,colorScale:n,getColor:De,categories:h});return 0!==r.legendGroups.reduce((e,t)=>e+t.items.length,0)?r:void 0},[d,t,e,n,h]),p=Na(()=>Cn(y,l),[y,l]),m=Na(()=>{const e="number"==typeof i?{top:i,bottom:i,left:i,right:i}:i??{},t=t=>{const n=e[t];return"number"==typeof n?n:a[t]},n={top:t("top"),right:t("right"),bottom:t("bottom"),left:t("left")},r=t=>"number"==typeof e[t];return p&&("right"===o&&!r("right")&&110>n.right?n.right=110:"left"===o&&!r("left")&&110>n.left?n.left=110:"top"===o&&!r("top")&&50>n.top?n.top=50:"bottom"===o&&!r("bottom")&&80>n.bottom&&(n.bottom=80)),n},[a,i,p,o]);return{legend:p,margin:m,legendPosition:o}}function Xa(e,t,n){const[r,o]=Ia(null),[i,a]=Ia(new Set),s=Na(()=>new Set,[]),l=Oa(t=>{"highlight"===e&&o(t?t.label:null)},[e]),c=Oa(t=>{"isolate"===e&&a(e=>{const r=new Set(e);return r.has(t.label)?r.delete(t.label):r.add(t.label),r.size===n.length?new Set:r})},[e,n.length]),u=Na(()=>{if(!e||"none"===e||!t)return null;const n="string"==typeof t?t:null;return"highlight"===e&&null!=r?{isActive:!0,predicate:e=>(n?e[n]:"function"==typeof t?t(e):null)===r}:"isolate"===e&&i.size>0?{isActive:!0,predicate:e=>{const r=n?e[n]:"function"==typeof t?t(e):null;return i.has(r)}}:null},[e,t,r,i]);return{highlightedCategory:"highlight"===e?r:null,isolatedCategories:"isolate"===e?i:s,onLegendHover:l,onLegendClick:c,legendSelectionHook:u}}function Ka(e,t,n){return function(e,t,n){const r=Ca[e||"primary"],o=e&&"primary"!==e||!n?.width?r.width:n.width,i=e&&"primary"!==e||!n?.height?r.height:n.height,a=cn({...t,mode:e},{width:t.width??o,height:t.height??i}).props,s=a.mode||e,l=Ca[s||"primary"],c="context"===s||"sparkline"===s,u=s&&"primary"!==s||!n?.width?l.width:n.width;return{width:a.width??u,height:a.height??(s&&"primary"!==s||!n?.height?l.height:n.height),showAxes:a.showAxes??l.showAxes,showGrid:a.showGrid??l.showGrid,enableHover:a.enableHover??(!!a.linkedHover||l.enableHover),showLegend:a.showLegend??l.showLegend,showLabels:a.showLabels??l.showLabels,title:c?void 0:a.title,description:a.description,summary:a.summary,accessibleTable:a.accessibleTable,xLabel:c?void 0:a.xLabel,yLabel:c?void 0:a.yLabel,categoryLabel:c?void 0:a.categoryLabel,valueLabel:c?void 0:a.valueLabel,marginDefaults:ja(l.marginDefaults,a.showCategoryTicks,a.orientation),compactMode:c,mobileInteraction:Wa(a.mobileInteraction,{mode:s,width:a.width??u,mobileSemantics:a.mobileSemantics}),mobileSemantics:a.mobileSemantics}}(e,t,n)}export{un as EMPTY_ARRAY,dn as filterSparseArray,ue as schemeCategory10,ge as interpolateViridis,$e as SEQUENTIAL_INTERPOLATORS,Me as getSequentialInterpolator,Ae as interpolateRdBu,Se as interpolatePiYG,We as interpolatePRGn,Ce as interpolateBrBG,je as interpolateRdYlBu,Ne as interpolateRdYlGn,Oe as interpolateSpectral,Ie as COLOR_SCHEMES,Re as DEFAULT_COLORS,Le as DEFAULT_COLOR,Fe as resolveCategoricalPalette,Pe as STREAMING_PALETTE,ze as DEPTH_PALETTE_COLORS,De as getColor,Be as resolveExplicitColor,Ee as createColorScale,He as getSize,Ji as computeEasing,Qi as computeRawProgress,ea as lerp,ta as now,c as DEFAULT_LIFECYCLE_THRESHOLDS,u as bandFromAge,d as resolveMotionAccessor,f as compileMotionEncoding,h as resolveMotionAge,y as opacityFromAge,p as resolveMotionVector,m as deriveMotionVector,Lo as SYMBOL_SEQUENCE,Fo as symbolPathString,Po as symbolRadius,pn as UpdateResultTracker,An as useSceneRevisionDiagnostics,Sn as runSceneBuild,Wn as SceneRevisionDiagnosticsObserver,so as resolveCSSColor,lo as getCSSColorCacheVersion,co as parseCanvasColor,b as createHatchPattern,k as isHatchFill,$ as hatchFillId,A as hatchPatternDef,S as resolveSvgFill,vo as resolveCurveFactory,ko as resolveCanvasFill,wo as coerceCanvasFill,$o as buildLinearFillGradient,Mo as buildColorStopGradient,Cn as composeLegendConfigs,On as renderLegendFromConfig,Ln as ANNOTATION_DISCLOSURE_REVEAL_CSS,j as useObservationSelector,N as useAnnotationActivationOptions,O as annotationStableId,I as annotationActivationProps,R as isAnnotationActivationTarget,z as estimateLabelWidth,T as AnnotationLabel,gr as renderAnnotationPass,br as createDefaultAnnotationRules,kr as annotationType,wr as isNoteAnnotation,$r as annotationDrawsConnector,Ar as annotationBudget,Br as annotationLayout,st as unlockCrosshair,ht as useCrosshairPosition,aa as TITLE_BASELINE,zo as hasAnyCornerRadius,To as clampCornerRadii,Bo as annularSectorPath,Eo as buildGaugeGradientGeometry,Vo as networkSceneNodeToSVG,Uo as networkSceneEdgeToSVG,Yo as networkLabelToSVG,Xr as geoSceneNodeToSVG,ei as xySceneNodeToSVG,ri as ordinalSceneNodeToSVG,oi as isServerEnvironment,li as DataSummaryProvider,ci as useDataSummary,ui as useDataSummaryToggle,hi as AriaLiveTooltip,gi as extractAllRows,ki as computeCanvasAriaLabel,wi as computeNetworkAriaLabel,Pi as AccessibleDataTable,zi as NetworkAccessibleDataTable,Ti as ScreenReaderSummary,Di as SkipToTableLink,Hi as FocusRing,q as getPointerHitRadius,U as buildHoverData,G as smartTooltipEntries,X as defaultTooltipStyle,Q as Tooltip,ee as MultiLineTooltip,te as MultiPointTooltip,ne as normalizeTooltip,qi as FlippingTooltip,ra as createSeededFrameRandom,ua as useFrame,ya as useFrameCanvasHost,pa as CanvasFrameBackground,ma as prepareCanvas,ga as getDevicePixelRatio,ba as observationInputType,xa as isInteractiveKeyboardTarget,va as emitHoverObservations,ka as emitClickObservations,qe as CategoryColorProvider,Ve as useCategoryColors,tt as useSelectionSelector,yt as useSelection,pt as useSelectionActions,mt as useLinkedHover,bt as useBrushSelection,vt as useFilteredData,wt as useChartObserver,Xt as useLinkedChartsActive,tn as useLinkedChartCategories,an as LinkedCharts,Pa as createLegend,wa as normalizeLinkedHover,$a as normalizeLinkedBrush,Ma as DEFAULT_SELECTION_OPACITY,Aa as wrapStyleWithSelection,ln as responsiveRuleMatches,cn as resolveResponsiveRules,Wa as resolveMobileInteraction,Ea as useThemeCategorical,Ha as useThemeSequential,_a as useThemeDiverging,Ga as resolveDefaultFill,qa as useColorScale,Va as useSortedData,Ua as useChartSelection,Ya as getCrosshairProps,Za as useChartLegendAndMargin,Xa as useLegendInteraction,Ka as useChartMode};
@@ -1 +0,0 @@
1
- import{commonJsWorkerModuleUrl as e}from"./chunk-chunk-SV4XAZ3Q.module.min.js";import{resolveNodeSizeFn as r}from"./chunk-chunk-5APBQXZA.module.min.js";import*as t from"react";import{jsx as n}from"react/jsx-runtime";var o={isActive:!1,predicate:()=>!0},i=t.createContext(null);function s({value:e,children:r}){return n(i.Provider,{value:e,children:r})}function a(){return t.useContext(i)??o}function u(e,r){return null!=e?n(s,{value:r,children:e}):e}function c(e,r,t,n,o=4e4){return"sync"!==e&&("worker"===e||n*(r+t)>=o)}function d(){return"undefined"!=typeof window&&"undefined"!=typeof Worker}function l(e,t,n,o,i){const s=r(n.nodeSize,n.nodeSizeRange,e);return{kind:"frame",nodes:e.map(e=>{const r=i?.get(e.id);return{id:e.id,x:0!==e.x||0!==e.y?e.x:r?.x??0,y:0!==e.x||0!==e.y?e.y:r?.y??0,x0:0,x1:0,y0:0,y1:0,width:0,height:0,value:e.value,__forceRadius:s(e)}}),edges:t.map(e=>{const r="string"==typeof e.source?e.source:e.source.id,t="string"==typeof e.target?e.target:e.target.id,n=e.data?.weight,o="number"==typeof n&&Number.isFinite(n)?n:e.value;return{source:r,target:t,value:e.value,y0:0,y1:0,sankeyWidth:0,weight:o}}),config:{chartType:"force",iterations:n.iterations,forceStrength:n.forceStrength,seed:n.seed},size:o}}function m(){if("undefined"!=typeof DOMException)return new DOMException("Force layout aborted","AbortError");const e=Error("Force layout aborted");return e.name="AbortError",e}var h=class{constructor(r=function(){const r="string"==typeof import.meta.url&&import.meta.url?new URL("./forceLayoutWorker.js",import.meta.url):e("forceLayoutWorker.js");return new Worker(r,{type:"module",name:"semiotic-force-layout"})}()){this.nextRequestId=1,this.pending=new Map,this.dead=!1,this.worker=r,this.worker.onmessage=e=>{const r=e.data,t=r.requestId,n=null!=t?this.pending.get(t):this.pending.values().next().value;if(n){if(null!=t?this.pending.delete(t):this.pending.clear(),n.cleanup(),r.error){const e=Error(r.error.message);return e.name=r.error.name??"Error",r.error.stack&&(e.stack=r.error.stack),void n.reject(e)}n.resolve({positions:r.positions??{}})}},this.worker.onerror=e=>{this.rejectAll(Error(e.message||"Force layout worker failed")),this.terminate()}}get isDead(){return this.dead}request(e,r){if(this.dead)return Promise.reject(Error("Force layout worker session is closed"));if(r?.aborted)return Promise.reject(m());const t=this.nextRequestId;this.nextRequestId+=1;const n={requestId:t,request:e};return new Promise((e,o)=>{const i=()=>{this.pending.delete(t),r?.removeEventListener("abort",i),o(m())},s=()=>r?.removeEventListener("abort",i);this.pending.set(t,{cleanup:s,reject:o,resolve:e}),r?.addEventListener("abort",i,{once:!0});try{this.worker.postMessage(n)}catch(e){this.pending.delete(t),s(),o(e instanceof Error?e:Error(e+""))}})}terminate(){this.dead||(this.dead=!0,this.rejectAll(Error("Force layout worker terminated")),this.worker.terminate())}rejectAll(e){for(const r of this.pending.values())r.cleanup(),r.reject(e);this.pending.clear()}},f=null;function p(e,r){return d()?r?.aborted?Promise.reject(m()):(f&&!f.isDead||(f=new h),f).request(e,r):Promise.reject(Error("Web Workers are unavailable"))}export{s as CustomLayoutSelectionProvider,a as useCustomLayoutSelection,u as wrapWithCustomLayoutSelection,c as shouldUseForceWorker,d as canUseForceWorker,l as createFrameForceWorkerRequest,p as runForceLayoutWorker};
@@ -1,2 +0,0 @@
1
- "use client";
2
- import{bandFromAge as t,defaultTooltipStyle as e,normalizeTooltip as n,opacityFromAge as r,resolveCanvasFill as o}from"./chunk-chunk-6HSGDMTA.module.min.js";import{drawGlyphParts as a,glyphFractionClipRect as s,glyphHitGeometry as l,glyphPlacement as i}from"./chunk-chunk-KTWEBFMX.module.min.js";import{jsx as c,jsxs as u}from"react/jsx-runtime";function f(t){return"string"==typeof t?t:"value"}function h(t){return null==t?"–":"number"==typeof t?Math.abs(t)>9999?t.toLocaleString():t+"":t instanceof Date?t.toLocaleDateString():t+""}function d(t,e){if(!e)return h(t);try{const n=e(t);return null==n?h(t):n}catch{return h(t)}}function p(t,e){return"function"==typeof e?e(t):t[e]}function y(t,e){if(!t)return[];const n=[];return(Array.isArray(t)?t:[t]).forEach((t,r)=>{const o="string"==typeof t?.y0Accessor?t.y0Accessor:"low",a="string"==typeof t?.y1Accessor?t.y1Accessor:"high";n.push({label:o,accessor:t=>t.bands?.[r]?.y0??(0===r?t.band?.y0:void 0),format:e}),n.push({label:a,accessor:t=>t.bands?.[r]?.y1??(0===r?t.band?.y1:void 0),format:e})}),n}function g(t){const n=t.find(t=>"title"===t.role),r=t.filter(t=>"title"!==t.role);return t=>{const o=t.data;if(!o)return null;const a=n?d(p(o,n.accessor),n.format):null;return u("div",{className:"semiotic-tooltip",style:e,children:[null!=a&&c("div",{style:{fontWeight:"bold",marginBottom:r.length>0?4:0},children:a}),r.map((t,e)=>{const n=d(p(o,t.accessor),t.format);return u("div",{style:e>0?{marginTop:2}:void 0,children:[u("span",{style:{opacity:.7},children:[t.label,": "]}),c("span",{children:n})]},e)})]})}}function m({categoryAccessor:t,valueAccessor:n,groupAccessor:r,groupLabel:o,pieData:a=!1,valueFormat:s}){return l=>{const i=a?l.data?.[0]||l.data||l:l.data||l,y=p(i,t),g=p(i,n),m=r?p(i,r):void 0;return u("div",{className:"semiotic-tooltip",style:e,children:[c("div",{style:{fontWeight:"bold"},children:h(y)}),c("div",{style:{marginTop:4},children:d(g,s)}),null!=m&&u("div",{style:{marginTop:2,opacity:.8},children:[o||f(r),": ",h(m)]})]})}}import*as x from"react";function b(...t){const e=t.filter(t=>null!=t);return 0===e.length?null:1===e.length?e[0]:x.createElement(x.Fragment,null,...e)}import{useEffect as v,useRef as w}from"react";function A(t,e,n,r){v(()=>{t.current?.updateConfig(e),n.current=!0,r()},[e,r,t,n])}function _(t,e,n,r){const o=w(null);v(()=>{const a=t.current;if(!a)return;const s=e??null;o.current!==s&&(o.current=s,a.setLayoutSelection(s),a.hasCustomRestyle?a.restyleScene(s):n.current=!0,r())},[e,r,t,n])}var M={fresh:1,aging:.7,stale:.45,expired:.25},k={alpha:1,band:"fresh",isStale:!1};function I(e,n){if(!e||0>=n)return k;const r=null!=e.threshold&&e.threshold>0?e.threshold:5e3,o=e.graded;if(o){const e="object"==typeof o?o:{},a=t(n,r,e.thresholds);return{alpha:{...M,...e.opacities??{}}[a],band:a,isStale:"fresh"!==a}}return n>r?{alpha:e.dimOpacity??.5,band:"stale",isStale:!0}:k}import{useEffect as S,useRef as O}from"react";function D(t,e,n,r,o,a){const s=O("fresh");S(()=>{if(!t)return;const l=setInterval(()=>{const l=e.current;if(!l||0===l.lastIngestTime)return;const i="undefined"!=typeof performance?performance.now():Date.now(),c=I(t,i-l.lastIngestTime);c.band===s.current&&c.isStale===o||(s.current=c.band,c.isStale!==o&&a(c.isStale),n.current=!0,r())},1e3);return()=>clearInterval(l)},[t,o,r,e,a,n])}import{jsx as R}from"react/jsx-runtime";function E({isStale:t,position:e}){return R("div",{className:"stream-staleness-badge",style:{position:"absolute",..."top-left"===e?{top:4,left:4}:"bottom-left"===e?{bottom:4,left:4}:"bottom-right"===e?{bottom:4,right:4}:{top:4,right:4},padding:"2px 8px",borderRadius:4,fontSize:11,fontWeight:600,pointerEvents:"none",zIndex:3,background:t?"#dc3545":"#28a745",color:"white"},children:t?"STALE":"LIVE"})}import{useRef as P}from"react";function j(t){const e=P(t);return function(t,e){if(Object.is(t,e))return!0;if(Array.isArray(t)&&Array.isArray(e))return L(t,e);if(!T(t)||!T(e))return!1;const n=Object.keys(t),r=Object.keys(e);if(n.length!==r.length)return!1;for(const r of n){if(!Object.prototype.hasOwnProperty.call(e,r))return!1;const n=t[r],o=e[r];if(!Object.is(n,o))if(Array.isArray(n)&&Array.isArray(o)){if(!L(n,o))return!1}else{if(!T(n)||!T(o))return!1;if(!C(n,o))return!1}}return!0}(e.current,t)||(e.current=t),e.current}function C(t,e){const n=Object.keys(t),r=Object.keys(e);if(n.length!==r.length)return!1;for(const r of n){if(!Object.prototype.hasOwnProperty.call(e,r))return!1;if(!Object.is(t[r],e[r]))return!1}return!0}function L(t,e){if(t.length!==e.length)return!1;for(let n=0;t.length>n;n++)if(!Object.is(t[n],e[n]))return!1;return!0}function T(t){if(null===t||"object"!=typeof t)return!1;if(Array.isArray(t))return!1;const e=Object.getPrototypeOf(t);return e===Object.prototype||null===e}function z(t,e,n,r,l){if(0>=e.size)return;const c=e.glyph;if(!c||!c.parts?.length)return;const u=i(c,e.size);if(0>=u.scale)return;const f=(e.style.opacity??1)*(e._decayOpacity??1);if(0>=f)return;const h=e=>{const n=o(t,e,e);return"string"==typeof n?n:e},d=e.color??("string"==typeof e.style.fill?e.style.fill:void 0);t.save(),t.translate(n,r),e.rotation&&t.rotate(e.rotation),t.translate(u.offsetX,u.offsetY),t.scale(u.scale,u.scale),t.globalAlpha=l*f*(e.style.fillOpacity??1);const p=s(c,e.fraction??1,e.fractionStart??0,e.fractionDirection??"horizontal");p&&e.ghostColor&&a(t,c,d,e.accent,e.ghostColor,h),p&&(t.beginPath(),t.rect(p.x,p.y,p.width,p.height),t.clip()),a(t,c,d,e.accent,void 0,h),t.restore()}var H=(t,e)=>{const n=t.globalAlpha;for(const r of e)"glyph"===r.type&&z(t,r,r.x,r.y,n);t.globalAlpha=n};function G(t,e){const n=t.globalAlpha;for(const r of e)"glyph"===r.type&&z(t,r,r.cx,r.cy,n);t.globalAlpha=n}var $=new Set;function N(t,e){const n="function"==typeof t?t(e.datum??null,e):t;return(r=n)&&"object"==typeof r&&"string"==typeof r.id&&"function"==typeof r.cacheKey&&"function"==typeof r.drawCanvas&&"function"==typeof r.renderStaticSVG?n:void 0;var r}function U(t,e){if("undefined"!=typeof process&&"production"===process.env?.NODE_ENV)return;const n=`${t}:${e}`;$.has(n)||($.add(n),console.warn(`[Semiotic] Render backend "${t}" does not support scene node "${e}"; using the built-in renderer.`))}function W(t){const{context:e,nodes:n,renderMode:r,pixelRatio:o,paintBuiltIn:a}=t;if(!r||"sketchy"===r)return void a(n);let s=[];const l=()=>{s.length&&(a(s),s=[])};for(const t of n){const n=N(r,t);if(!n){s.push(t);continue}let i;l(),e.save();try{i=n.drawCanvas({context:e,node:t,style:t.style??{},pixelRatio:o})}finally{e.restore()}i||(U(n.id,t.type??"unknown"),a([t]))}l()}function B(t){const{node:e,index:n,renderMode:r,fallback:o}=t,a=N(r,e);if(!a)return o();const s=a.renderStaticSVG({node:e,style:e.style??{},key:`${a.id}-${n}`});return null!=s?s:(U(a.id,e.type??"unknown"),o())}function F(t){const e=new Map;for(const n of t){const t=n.group??"_default";let r=e.get(t);r||(r=[],e.set(t,r)),r.push(n)}for(const t of e.values()){t.sort((t,e)=>t.x-e.x||t.y-e.y);for(let e=0;t.length>e;e++)t[e]._groupIndex=e}const n=Array.from(e.keys()).sort((t,n)=>{const r=e.get(t),o=e.get(n);return(r.length>0?r[0].y:0)-(o.length>0?o[0].y:0)}),r=Array.from(e.values()).flat();r.sort((t,e)=>t.x-e.x||t.y-e.y);const o=new Map;for(let t=0;r.length>t;t++){r[t]._flatIndex=t;const e=r[t].datum?.id;null!=e&&o.set(e+"",t)}return{flat:r,groups:n,byGroup:e,idToIdx:o}}function V(t,e){if(0===t.flat.length)return{flatIndex:-1,group:"_default",indexInGroup:-1};const n=Math.max(0,Math.min(e,t.flat.length-1)),r=t.flat[n];return{flatIndex:n,group:r.group??"_default",indexInGroup:r._groupIndex??0}}function Y(t,e,n){const{group:r,indexInGroup:o}=e,a=n.byGroup.get(r);switch(t){case"ArrowRight":return a.length-1>o?a[o+1]._flatIndex:e.flatIndex;case"ArrowLeft":return o>0?a[o-1]._flatIndex:e.flatIndex;case"ArrowDown":{const t=n.groups.indexOf(r);return n.groups.length-1>t?K(n,n.groups[t+1],a[o]):e.flatIndex}case"ArrowUp":{const t=n.groups.indexOf(r);return t>0?K(n,n.groups[t-1],a[o]):e.flatIndex}case"PageDown":return Math.min(e.flatIndex+Math.max(1,Math.floor(.1*n.flat.length)),n.flat.length-1);case"PageUp":return Math.max(e.flatIndex-Math.max(1,Math.floor(.1*n.flat.length)),0);case"Home":return 0;case"End":return n.flat.length-1;case"Escape":return-1;default:return null}}function K(t,e,n){const r=t.byGroup.get(e);let o=0,a=Math.abs(r[0].x-n.x);for(let t=1;r.length>t;t++){const e=Math.abs(r[t].x-n.x);a>e&&(a=e,o=t)}return r[o]._flatIndex}function X(t){const e=[];for(const n of t)switch(n.type){case"point":e.push({x:n.x,y:n.y,datum:n.datum,shape:"circle",group:"_default"});break;case"symbol":if(0>=n.size)break;e.push({x:n.x,y:n.y,datum:n.datum,shape:"circle",group:"_default"});break;case"glyph":{if(0>=n.size||null==n.datum)break;const t=l(n.glyph,n.size);e.push({x:n.x+t.centerDx,y:n.y+t.centerDy,datum:n.datum,shape:"rect",w:2*t.halfWidth,h:2*t.halfHeight,group:"_default"});break}case"line":{const t=n,r=Array.isArray(t.datum)?t.datum:[],o=t.group??"_default";for(let n=0;t.path.length>n&&r.length>n;n++)e.push({x:t.path[n][0],y:t.path[n][1],datum:r[n],shape:"circle",group:o});break}case"area":{const t=n,r=Array.isArray(t.datum)?t.datum:[],o=t.group??"_default";for(let n=0;t.topPath.length>n&&r.length>n;n++)e.push({x:t.topPath[n][0],y:t.topPath[n][1],datum:r[n],shape:"circle",group:o});break}case"rect":e.push({x:n.x+n.w/2,y:n.y+n.h/2,datum:n.datum,shape:"rect",w:n.w,h:n.h,group:n.group??"_default"});break;case"heatcell":e.push({x:n.x+n.w/2,y:n.y+n.h/2,datum:n.datum,shape:"rect",w:n.w,h:n.h,group:"_default"})}return e.sort((t,e)=>t.x-e.x||t.y-e.y),e}function q(t){const e=[];for(const n of t)if("rect"===n.type&&null!=n.x){if(null==n.datum)continue;e.push({x:n.x+n.w/2,y:n.y+n.h/2,datum:n.datum,shape:"rect",w:n.w,h:n.h,group:n.group??n.datum?.category??""})}else if("point"===n.type)e.push({x:n.x,y:n.y,datum:n.datum,shape:"circle",group:"_default"});else if("symbol"===n.type){if(0>=n.size)continue;e.push({x:n.x,y:n.y,datum:n.datum,shape:"circle",group:"_default"})}else if("glyph"===n.type){if(0>=n.size||null==n.datum)continue;const t=l(n.glyph,n.size);e.push({x:n.x+t.centerDx,y:n.y+t.centerDy,datum:n.datum,shape:"rect",w:2*t.halfWidth,h:2*t.halfHeight,group:"_default"})}else if("wedge"===n.type&&null!=n.cx){if(null===n.datum)continue;const t=((n.startAngle||0)+(n.endAngle||0))/2,r=((n.innerRadius||0)+(n.outerRadius||50))/2;e.push({x:n.cx+Math.cos(t)*r,y:n.cy+Math.sin(t)*r,datum:n.datum,shape:"wedge",group:"_default"})}return e.sort((t,e)=>t.x-e.x||t.y-e.y),e}function J(t){const e=[];for(const n of t)if("circle"===n.type&&null!=n.cx){if(0>=n.r)continue;e.push({x:n.cx,y:n.cy,datum:n.datum,shape:"circle",group:n.datum?.id??"_default"})}else if("rect"===n.type&&null!=n.x){if(0>=n.w||0>=n.h)continue;e.push({x:n.x+n.w/2,y:n.y+n.h/2,datum:n.datum,shape:"rect",w:n.w,h:n.h,group:n.datum?.id??"_default"})}else if("arc"===n.type&&null!=n.cx)e.push({x:n.cx,y:n.cy,datum:n.datum,shape:"circle",group:n.datum?.id??"_default"});else if("symbol"===n.type&&null!=n.cx){if(0>=n.size)continue;e.push({x:n.cx,y:n.cy,datum:n.datum,shape:"circle",group:n.datum?.id??"_default"})}else if("glyph"===n.type&&null!=n.cx){if(0>=n.size||null==n.datum)continue;const t=l(n.glyph,n.size);e.push({x:n.cx+t.centerDx,y:n.cy+t.centerDy,datum:n.datum,shape:"rect",w:2*t.halfWidth,h:2*t.halfHeight,group:n.datum?.id??"_default"})}return e.sort((t,e)=>t.x-e.x||t.y-e.y),e}function Q(t,e,n,r,o){const a=n.flat[e.flatIndex];if(!a)return Y(t,e,n);const s=a.datum?.id;switch(t){case"ArrowRight":case"ArrowLeft":case"ArrowDown":case"ArrowUp":{const r=function(t,e,n){let r=null,o=1/0;for(let a=0;t.flat.length>a;a++){const s=t.flat[a];if(s===e)continue;const l=s.x-e.x,i=s.y-e.y;let c=!1;switch(n){case"right":c=l>0&&Math.abs(l)>=Math.abs(i);break;case"left":c=0>l&&Math.abs(l)>=Math.abs(i);break;case"down":c=i>0&&Math.abs(i)>=Math.abs(l);break;case"up":c=0>i&&Math.abs(i)>=Math.abs(l)}if(!c)continue;const u=l*l+i*i;o>u&&(o=u,r=a)}return r}(n,a,"ArrowRight"===t?"right":"ArrowLeft"===t?"left":"ArrowDown"===t?"down":"up")??e.flatIndex;return r!==e.flatIndex&&(o.current=-1),r}case"Enter":{if(null==s)return e.flatIndex;const t=function(t,e){const n=t+"",r=[];for(const t of e){const e=t.datum??t,o=Z(e.source),a=Z(e.target),s=null!=o,l=null!=a;s&&o+""===n&&l?r.push(a+""):l&&a+""===n&&s&&r.push(o+"")}return r}(s,r);if(0===t.length)return e.flatIndex;const a=n.idToIdx.get(t[(o.current+1)%t.length])??-1;return 0>a?e.flatIndex:(o.current=-1,a)}default:{const r=Y(t,e,n);return null!==r&&r!==e.flatIndex&&(o.current=-1),r}}}function Z(t){return"object"==typeof t&&null!==t&&"id"in t?t.id:t}function tt(t){const e=[];for(const n of t)if("point"===n.type&&null!=n.x)e.push({x:n.x,y:n.y,datum:n.datum,shape:"circle"});else if("glyph"===n.type){if(0>=n.size||null==n.datum)continue;const t=l(n.glyph,n.size);e.push({x:n.x+t.centerDx,y:n.y+t.centerDy,datum:n.datum,shape:"rect",w:2*t.halfWidth,h:2*t.halfHeight})}else"geoarea"===n.type&&n.centroid&&!1!==n.interactive&&e.push({x:n.centroid[0],y:n.centroid[1],datum:n.datum,shape:"geoarea",pathData:n.pathData});return e.sort((t,e)=>t.x-e.x||t.y-e.y),e}function et(t,e,n){switch(t){case"ArrowRight":case"ArrowDown":return n-1>e?e+1:e;case"ArrowLeft":case"ArrowUp":return e>0?e-1:e;case"PageDown":return Math.min(e+Math.max(1,Math.floor(.1*n)),n-1);case"PageUp":return Math.max(e-Math.max(1,Math.floor(.1*n)),0);case"Home":return 0;case"End":return n-1;case"Escape":return-1;default:return null}}function nt(t){return{data:t.datum||{},x:t.x,y:t.y,__semioticHoverData:!0}}function rt(t){const{title:e,description:n,summary:r,accessibleTable:o,className:a,animate:s,axisExtent:l,autoPlaceAnnotations:i}=t,c={};return e&&(c.title=e),n&&(c.description=n),r&&(c.summary=r),void 0!==o&&(c.accessibleTable=o),a&&(c.className=a),null!=s&&(c.animate=s),void 0!==l&&(c.axisExtent=l),void 0!==i&&(c.autoPlaceAnnotations=i),c}function ot(t){const{linkedHover:e,selection:n,onObservation:r,onClick:o,hoverRadius:a,hoverHighlight:s,forceHoverBehavior:l,forceClickBehavior:i,mobileInteraction:c,customHoverBehavior:u,customClickBehavior:f,linkedHoverInClickPredicate:h=!0}=t,d={};r&&(d.annotationObservationCallback=r);const p=c?.enabled?Math.max(a??30,Math.ceil((c.targetSize||44)/2),24):a;return(l||e||r||o||s)&&(d.customHoverBehavior=u),f&&(i||(h?r||o||e:r||o)||c?.enabled&&(c.tapToSelect||c.tapToLockTooltip)&&(e||s||n))&&(d.customClickBehavior=f),null!=p&&(d.hoverRadius=p),d}function at(t){const{tooltip:e,defaultTooltipContent:r}=t;return{tooltipContent:!1===e?()=>null:n(e)||r}}function st(t,e,n){if(1>=n)return 1;const o=n-1;return r({age:o-e,extent:o,type:t.type,halfLife:t.halfLife??n/2,threshold:t.stepThreshold??.5*n,minOpacity:t.minOpacity??.1})}function lt(t){const e=new Map;for(let n=0;t.length>n;n++)e.set(t[n],n);return e}function it(t,e,n,r=lt(n)){const o=n.length;if(o>1)for(const n of e){if("line"===n.type){const e=Array.isArray(n.datum)?n.datum:[];if(2>e.length)continue;const a=Array(e.length);let s=!1;for(let n=0;e.length>n;n++){const l=r.get(e[n]);null!=l?(a[n]=st(t,l,o),1>a[n]&&(s=!0)):a[n]=1}s&&(n._decayOpacities=a);continue}if("area"===n.type){const e=Array.isArray(n.datum)?n.datum:[],a=n.topPath?n.topPath.length:e.length;if(2>a)continue;if(e.length===a){const s=Array(a);let l=!1;for(let n=0;e.length>n;n++){const a=r.get(e[n]);null!=a?(s[n]=st(t,a,o),1>s[n]&&(l=!0)):s[n]=1}l&&(n._decayOpacities=s)}else{let s=1;for(const n of e){const e=r.get(n);if(null!=e){const n=st(t,e,o);s>n&&(s=n)}}if(1>s){const t=Array(a);t.fill(s),n._decayOpacities=t}}continue}const e=r.get(n.datum);if(null==e)continue;const a=st(t,e,o);"heatcell"===n.type?n.style={opacity:a}:"candlestick"===n.type?n._decayOpacity=a:n.style={...n.style,opacity:(n.style?.opacity??1)*a}}}function ct(t){if("production"===process.env.NODE_ENV)return;const{label:e,nodes:n,overlays:r,warned:o}=t;ut(r)&&0===n.length&&ft(o,"overlay-only",`[semiotic] ${e} returned overlays but no data-bearing scene nodes. Overlays do not participate in hover, selection, transitions, SSR evidence, or accessibility tables. Emit at least one scene node with a datum, or mark the overlay-only chart as intentionally decorative.`),n.length>0&&n.every(t=>null==t.datum)&&ft(o,"null-datums",`[semiotic] ${e} returned scene nodes, but every scene-node datum is null. Hover, callbacks, selection, and tooltip helpers need data-bearing nodes. Attach a user-facing datum to each interactive node, or set interactive overlays outside the chart.`)}function ut(t){return null!=t&&!1!==t&&""!==t&&(!Array.isArray(t)||t.some(ut))}function ft(t,e,n){t.has(e)||(t.add(e),console.warn(n))}function ht(t,e,n,r){const o=function(t){if(t instanceof Error)return{name:t.name||"Error",message:t.message||"Custom layout threw."};if("string"==typeof t)return{name:"Error",message:t};if(null==t)return{name:"Error",message:"Custom layout threw a nullish value."};try{return{name:"Error",message:t+""}}catch{return{name:"Error",message:"Custom layout threw a non-stringifiable value."}}}(e),a="network"===t?"customNetworkLayout":"customLayout";return{code:"CUSTOM_LAYOUT_ERROR",severity:"error",phase:"layout",component:t,source:a,message:`Semiotic ${t} ${a} failed: ${o.message}`,error:o,recovery:n?"preserved-last-good-scene":"empty-scene",preservedLastGoodScene:n,affectedRevision:r}}var dt=new WeakMap;function pt(){return this.updateResults.last}function yt(){return this.updateResults.last}function gt(t){return this.updateResults.subscribe(t)}function mt(t){this.config.layoutSelection=t}function xt(){dt.set(this,!0)}function bt(){const t=!0===dt.get(this);return dt.delete(this),t}function vt(t){Object.assign(t.prototype,{getLastUpdateResult:pt,getUpdateSnapshot:yt,subscribeUpdateResult:gt,setLayoutSelection:mt,markStylePaintPending:xt,consumeStylePaintPending:bt})}function wt(t,e,n){return n.x>t||t>n.x+n.w||n.y>e||e>n.y+n.h?{hit:!1,cx:0,cy:0}:{hit:!0,cx:n.x+n.w/2,cy:n.y+n.h/2}}function At(t,e=30){return Math.max((t??4)+5,12,e)}function _t(t){return t instanceof Date?t:"number"==typeof t&&t>1e9?new Date(t):null}function Mt(t,e){const n=_t(t);if(!n)return!1;const r=_t(e);return!r||n.getFullYear()!==r.getFullYear()||n.getMonth()!==r.getMonth()}function kt(t){let e=t%(2*Math.PI);return 0>e&&(e+=2*Math.PI),e}function It(t,e,n,r,o,a=t=>t.x,s=t=>t.y,l=t=>t.r){const i=Math.max(r,o+5,12),c=e-i,u=e+i,f=n-i,h=n+i;let d=null,p=1/0;return t.visit((t,o,i,y,g)=>{if(o>u||c>y||i>h||f>g)return!0;if(!t.length){let o=t;do{const t=o.data,i=a(t)-e,c=s(t)-n,u=Math.sqrt(i*i+c*c);At(l(t),r)>=u&&p>u&&(d=t,p=u),o=o.next}while(o)}return!1}),d?{node:d,distance:p}:null}function St(t){return!(!t._pulseIntensity||0>=t._pulseIntensity)}function Ot(t,e,n=.3){St(e)&&(t.globalAlpha=e._pulseIntensity*n,t.fillStyle=e._pulseColor||"rgba(255,255,255,0.6)",t.fillRect(e.x,e.y,e.w,e.h))}function Dt(t,e,n=.6){if(!St(e))return;const r=e.r+(e._pulseGlowRadius??4)*e._pulseIntensity,o=e.cx??e.x??0,a=e.cy??e.y??0;t.beginPath(),t.arc(o,a,r,0,2*Math.PI),t.strokeStyle=e._pulseColor||"rgba(255,255,255,0.6)",t.lineWidth=2*e._pulseIntensity,t.globalAlpha=e._pulseIntensity*n,t.stroke()}function Rt(t,e,n,r=.35){St(e)&&(t.globalAlpha=e._pulseIntensity*r,t.fillStyle=e._pulseColor||"rgba(255,255,255,0.6)",n?t.fill(n):t.fill())}export{st as computeDecayOpacity,lt as buildDatumIndexMap,it as applyDecay,ct as warnCustomLayoutDiagnostics,ht as createCustomLayoutFailureDiagnostic,vt as attachUpdateResultStore,b as composeOverlays,A as useConfigSync,_ as useLayoutSelectionSync,wt as hitTestRect,At as getHitRadius,Mt as isTimeLandmark,kt as normalizeAngle,It as findHitPointInQuadtree,I as resolveStaleness,D as useStalenessCheck,E as StalenessBadge,j as useStableShallow,Ot as renderRectPulse,Dt as renderCirclePulse,Rt as renderPathPulse,H as glyphCanvasRenderer,G as networkGlyphRenderer,W as paintSceneWithBackend,B as renderSceneWithBackend,f as accessorName,h as formatVal,y as bandTooltipFields,g as buildDefaultTooltip,m as buildOrdinalTooltip,F as buildNavGraph,V as resolvePosition,Y as nextGraphIndex,X as extractXYNavPoints,q as extractOrdinalNavPoints,J as extractNetworkNavPoints,Q as nextNetworkIndex,tt as extractGeoNavPoints,et as nextIndex,nt as navPointToHover,rt as buildBaseMetadataProps,ot as buildCustomBehaviorProps,at as buildTooltipProps};