semiotic 3.8.5 → 3.8.7

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 (277) hide show
  1. package/CLAUDE.md +37 -10
  2. package/README.md +83 -56
  3. package/ai/behaviorContracts.cjs +88 -3
  4. package/ai/componentMetadata.cjs +5 -10
  5. package/ai/dist/mcp-server.js +99 -10
  6. package/ai/examples.md +198 -9
  7. package/ai/schema.json +2002 -165
  8. package/ai/surface-manifest.json +14 -10
  9. package/ai/system-prompt.md +9 -3
  10. package/dist/{chunk-chartContainerDataAudit-74TLKIP6.module.min.js → chunk-chartContainerDataAudit-JDSVSKGM.module.min.js} +1 -1
  11. package/dist/chunk-chunk-2JGJ5GUG.module.min.js +1 -0
  12. package/dist/chunk-chunk-2YAZHXL4.module.min.js +2 -0
  13. package/dist/chunk-chunk-3NGIKFD6.module.min.js +1 -0
  14. package/dist/{chunk-chunk-G7WFWHAD.module.min.js → chunk-chunk-4ITOQRXM.module.min.js} +1 -1
  15. package/dist/chunk-chunk-5SD6BHVW.module.min.js +2 -0
  16. package/dist/chunk-chunk-6V5VQVCT.module.min.js +2 -0
  17. package/dist/chunk-chunk-7TTBHSAG.module.min.js +2 -0
  18. package/dist/chunk-chunk-7ZDJSYKI.module.min.js +2 -0
  19. package/dist/chunk-chunk-BGHPD3RA.module.min.js +1 -0
  20. package/dist/chunk-chunk-BMRZ2SPU.module.min.js +2 -0
  21. package/dist/chunk-chunk-BNGBEY7N.module.min.js +2 -0
  22. package/dist/chunk-chunk-C7APLVQD.module.min.js +2 -0
  23. package/dist/chunk-chunk-DGWFBOGB.module.min.js +1 -0
  24. package/dist/chunk-chunk-DIVE2DRA.module.min.js +2 -0
  25. package/dist/chunk-chunk-FBUNUIPV.module.min.js +2 -0
  26. package/dist/chunk-chunk-FQPKOAIH.module.min.js +2 -0
  27. package/dist/chunk-chunk-FRO4TRXK.module.min.js +2 -0
  28. package/dist/chunk-chunk-G7QVPZUD.module.min.js +2 -0
  29. package/dist/chunk-chunk-GBPYV4FP.module.min.js +2 -0
  30. package/dist/chunk-chunk-GU2EJIDJ.module.min.js +2 -0
  31. package/dist/chunk-chunk-J5QD4RAM.module.min.js +2 -0
  32. package/dist/{chunk-chunk-LJLS6DY7.module.min.js → chunk-chunk-JWXLNZSM.module.min.js} +1 -1
  33. package/dist/chunk-chunk-KXAFCCDB.module.min.js +2 -0
  34. package/dist/chunk-chunk-LG7YKJAK.module.min.js +2 -0
  35. package/dist/{chunk-chunk-I36PJ4OC.module.min.js → chunk-chunk-LVHDZAT3.module.min.js} +1 -1
  36. package/dist/chunk-chunk-LWITSR2O.module.min.js +2 -0
  37. package/dist/chunk-chunk-MX35T6RX.module.min.js +2 -0
  38. package/dist/chunk-chunk-NH4MEAKP.module.min.js +2 -0
  39. package/dist/chunk-chunk-NJETWX42.module.min.js +2 -0
  40. package/dist/chunk-chunk-NW25WGLS.module.min.js +2 -0
  41. package/dist/{chunk-chunk-TMWIZL3K.module.min.js → chunk-chunk-OI7R7EJB.module.min.js} +1 -1
  42. package/dist/chunk-chunk-ONMLEXHR.module.min.js +2 -0
  43. package/dist/chunk-chunk-OY66GCE6.module.min.js +1 -0
  44. package/dist/chunk-chunk-PZFT457G.module.min.js +1 -0
  45. package/dist/chunk-chunk-Q3WW6JGR.module.min.js +1 -0
  46. package/dist/chunk-chunk-Q6XKQTOQ.module.min.js +1 -0
  47. package/dist/chunk-chunk-RJRM2E6P.module.min.js +1 -0
  48. package/dist/chunk-chunk-RPL7WYXI.module.min.js +1 -0
  49. package/dist/chunk-chunk-SV4XAZ3Q.module.min.js +1 -0
  50. package/dist/chunk-chunk-TSCFL235.module.min.js +1 -0
  51. package/dist/chunk-chunk-UOQRPGPK.module.min.js +2 -0
  52. package/dist/chunk-chunk-V3OAKG32.module.min.js +1 -0
  53. package/dist/chunk-chunk-WLOIUMWG.module.min.js +2 -0
  54. package/dist/chunk-chunk-XEGXX4F7.module.min.js +1 -0
  55. package/dist/chunk-chunk-XFRBLXYM.module.min.js +1 -0
  56. package/dist/chunk-chunk-Z2AJERX5.module.min.js +2 -0
  57. package/dist/chunk-chunk-ZXYDYAB7.module.min.js +2 -0
  58. package/dist/components/ai/SemioticVACPBridge.d.ts +22 -0
  59. package/dist/components/ai/chartCapabilities.d.ts +5 -3
  60. package/dist/components/ai/conversationArc.d.ts +2 -176
  61. package/dist/components/ai/conversationArcTypes.d.ts +202 -0
  62. package/dist/components/ai/readerGrounding.d.ts +12 -0
  63. package/dist/components/ai/vacpAdapter.d.ts +13 -0
  64. package/dist/components/ai/vacpAdapterActions.d.ts +2 -0
  65. package/dist/components/ai/vacpAdapterModel.d.ts +7 -0
  66. package/dist/components/ai/vacpAdapterRuntime.d.ts +26 -0
  67. package/dist/components/ai/vacpAdapterState.d.ts +3 -0
  68. package/dist/components/ai/vacpAdapterTypes.d.ts +169 -0
  69. package/dist/components/ai/vacpTypes.d.ts +160 -0
  70. package/dist/components/charts/custom/XYCustomChart.d.ts +3 -0
  71. package/dist/components/charts/geo/DistanceCartogram.d.ts +1 -1
  72. package/dist/components/charts/index.d.ts +7 -4
  73. package/dist/components/charts/ordinal/BarChart.d.ts +7 -14
  74. package/dist/components/charts/ordinal/GaugeChart.d.ts +3 -0
  75. package/dist/components/charts/ordinal/GroupedBarChart.d.ts +3 -0
  76. package/dist/components/charts/ordinal/StackedBarChart.d.ts +3 -0
  77. package/dist/components/charts/ordinal/SwimlaneChart.d.ts +4 -14
  78. package/dist/components/charts/physics/ChainReactionChart.capability.d.ts +9 -0
  79. package/dist/components/charts/physics/ChainReactionChart.d.ts +29 -0
  80. package/dist/components/charts/physics/CollisionSwarmChart.d.ts +1 -1
  81. package/dist/components/charts/physics/EventDropChart.d.ts +7 -2
  82. package/dist/components/charts/physics/GaltonBoardChart.d.ts +1 -1
  83. package/dist/components/charts/physics/{PhysicsPileChart.capability.d.ts → PacketFlowChart.capability.d.ts} +1 -1
  84. package/dist/components/charts/physics/{PhysicalFlowChart.d.ts → PacketFlowChart.d.ts} +22 -6
  85. package/dist/components/charts/physics/PhysicsCustomChart.d.ts +1 -1
  86. package/dist/components/charts/physics/ProcessFlowChart.d.ts +7 -4
  87. package/dist/components/charts/physics/{PhysicalFlowChart.capability.d.ts → UnitPileChart.capability.d.ts} +1 -1
  88. package/dist/components/charts/physics/{PhysicsPileChart.d.ts → UnitPileChart.d.ts} +19 -6
  89. package/dist/components/charts/physics/crucibleChartProps.d.ts +1 -1
  90. package/dist/components/charts/physics/crucibleChartUtils.d.ts +9 -0
  91. package/dist/components/charts/physics/gauntletChartProps.d.ts +6 -1
  92. package/dist/components/charts/physics/gauntletTerminal.d.ts +61 -0
  93. package/dist/components/charts/physics/packetFlowSemantics.d.ts +6 -0
  94. package/dist/components/charts/physics/physicsHocUtils.d.ts +45 -2
  95. package/dist/components/charts/shared/auditAccessibilityStyles.d.ts +9 -0
  96. package/dist/components/charts/shared/chartSpecCore.d.ts +2 -4
  97. package/dist/components/charts/shared/gaugeGradient.d.ts +4 -8
  98. package/dist/components/charts/shared/gradient.d.ts +35 -0
  99. package/dist/components/charts/shared/hatchFill.d.ts +3 -10
  100. package/dist/components/charts/shared/hooks.d.ts +2 -50
  101. package/dist/components/charts/shared/knownChartComponents.d.ts +1 -1
  102. package/dist/components/charts/shared/streamPropsHelpers.d.ts +1 -2
  103. package/dist/components/charts/shared/useChartLegend.d.ts +65 -0
  104. package/dist/components/charts/shared/useChartSetup.d.ts +12 -0
  105. package/dist/components/charts/shared/useCustomChartSetup.d.ts +6 -1
  106. package/dist/components/charts/shared/useNetworkChartSetup.d.ts +1 -0
  107. package/dist/components/charts/shared/useStreamingLegend.d.ts +1 -1
  108. package/dist/components/charts/xy/AreaChart.d.ts +25 -42
  109. package/dist/components/charts/xy/BumpChart.capability.d.ts +11 -0
  110. package/dist/components/charts/xy/BumpChart.d.ts +161 -0
  111. package/dist/components/charts/xy/DifferenceChart.d.ts +3 -10
  112. package/dist/components/charts/xy/Heatmap.d.ts +3 -0
  113. package/dist/components/charts/xy/LineChart.d.ts +6 -8
  114. package/dist/components/data/portability/capabilityBinding.d.ts +41 -0
  115. package/dist/components/data/portability/index.d.ts +2 -0
  116. package/dist/components/geometry/bumpRibbonGeometry.d.ts +36 -0
  117. package/dist/components/legendLayout.d.ts +75 -1
  118. package/dist/components/recipes/geographicDotGrid.d.ts +82 -0
  119. package/dist/components/recipes/geographicGrid.d.ts +100 -0
  120. package/dist/components/recipes/physics.d.ts +2 -0
  121. package/dist/components/recipes/physicsStageGeography.d.ts +137 -0
  122. package/dist/components/semiotic-ai.d.ts +6 -4
  123. package/dist/components/semiotic-experimental-vacp.d.ts +11 -0
  124. package/dist/components/semiotic-experimental.d.ts +6 -3
  125. package/dist/components/semiotic-geo.d.ts +5 -0
  126. package/dist/components/semiotic-network.d.ts +1 -0
  127. package/dist/components/semiotic-ordinal.d.ts +2 -0
  128. package/dist/components/semiotic-physics.d.ts +10 -6
  129. package/dist/components/semiotic-realtime-core.d.ts +1 -0
  130. package/dist/components/semiotic-recipes-core.d.ts +6 -1
  131. package/dist/components/semiotic-server-edge.d.ts +1 -1
  132. package/dist/components/semiotic-server.d.ts +1 -1
  133. package/dist/components/semiotic-xy.d.ts +4 -0
  134. package/dist/components/semiotic.d.ts +4 -4
  135. package/dist/components/server/renderEvidence.d.ts +1 -1
  136. package/dist/components/server/renderToStaticSVG.d.ts +2 -1
  137. package/dist/components/server/serverChartConfigHeatmap.d.ts +6 -0
  138. package/dist/components/server/serverChartConfigNetworkStyles.d.ts +12 -0
  139. package/dist/components/server/serverChartConfigShared.d.ts +16 -0
  140. package/dist/components/server/serverChartConfigs.d.ts +3 -2
  141. package/dist/components/server/serverChartConfigsPhysics.d.ts +2 -2
  142. package/dist/components/server/serverChartConfigsXY.d.ts +1 -1
  143. package/dist/components/server/staticLegend.d.ts +10 -2
  144. package/dist/components/server/staticSVGChrome.d.ts +14 -6
  145. package/dist/components/server/staticValue.d.ts +8 -0
  146. package/dist/components/stream/GeoSVGOverlay.d.ts +4 -10
  147. package/dist/components/stream/NetworkSVGOverlay.d.ts +2 -6
  148. package/dist/components/stream/OrdinalSVGOverlay.d.ts +2 -6
  149. package/dist/components/stream/SVGOverlay.d.ts +2 -6
  150. package/dist/components/stream/StalenessBadge.d.ts +2 -6
  151. package/dist/components/stream/geoPipelineConfig.d.ts +10 -0
  152. package/dist/components/stream/geoTypes.d.ts +3 -6
  153. package/dist/components/stream/legendRenderer.d.ts +10 -6
  154. package/dist/components/stream/ordinalTypes.d.ts +7 -31
  155. package/dist/components/stream/physics/PhysicsEvidence.d.ts +37 -0
  156. package/dist/components/stream/physics/PhysicsKernel.d.ts +1 -0
  157. package/dist/components/stream/physics/PhysicsPipelineStore.d.ts +9 -0
  158. package/dist/components/stream/physics/PhysicsSVGOverlay.d.ts +2 -6
  159. package/dist/components/stream/physics/PhysicsSettledScene.d.ts +5 -0
  160. package/dist/components/stream/physics/StreamPhysicsTypes.d.ts +2 -6
  161. package/dist/components/stream/physics/physicsFramePipelineConfig.d.ts +19 -0
  162. package/dist/components/stream/physics/physicsPipelineSettle.d.ts +52 -0
  163. package/dist/components/stream/physics/physicsRegionRuntime.d.ts +23 -0
  164. package/dist/components/stream/pipelineConfig.d.ts +7 -15
  165. package/dist/components/stream/renderers/canvasRenderHelpers.d.ts +9 -69
  166. package/dist/components/stream/renderers/cornerRadii.d.ts +2 -9
  167. package/dist/components/stream/renderers/thresholdLineSegments.d.ts +12 -0
  168. package/dist/components/stream/sceneToSVGShared.d.ts +3 -5
  169. package/dist/components/stream/types.d.ts +34 -56
  170. package/dist/components/stream/xySceneBuilders/areaGradient.d.ts +4 -20
  171. package/dist/components/stream/xySceneBuilders/types.d.ts +6 -6
  172. package/dist/components/types/legendTypes.d.ts +31 -6
  173. package/dist/controls.min.js +1 -1
  174. package/dist/controls.module.min.js +1 -1
  175. package/dist/geo.min.js +1 -1
  176. package/dist/geo.module.min.js +1 -1
  177. package/dist/network.min.js +1 -1
  178. package/dist/network.module.min.js +1 -1
  179. package/dist/ordinal.min.js +1 -1
  180. package/dist/ordinal.module.min.js +1 -1
  181. package/dist/physics.min.js +1 -1
  182. package/dist/physics.module.min.js +1 -1
  183. package/dist/physicsWorker.js +1 -1
  184. package/dist/realtime.min.js +1 -1
  185. package/dist/realtime.module.min.js +1 -1
  186. package/dist/semiotic-ai-core.min.js +1 -1
  187. package/dist/semiotic-ai-core.module.min.js +1 -1
  188. package/dist/semiotic-ai.d.ts +6 -4
  189. package/dist/semiotic-ai.min.js +1 -1
  190. package/dist/semiotic-ai.module.min.js +1 -1
  191. package/dist/semiotic-data.module.min.js +1 -1
  192. package/dist/semiotic-experimental-vacp.d.ts +11 -0
  193. package/dist/semiotic-experimental-vacp.min.js +1 -0
  194. package/dist/semiotic-experimental-vacp.module.min.js +1 -0
  195. package/dist/semiotic-experimental.d.ts +6 -3
  196. package/dist/semiotic-experimental.min.js +2 -1
  197. package/dist/semiotic-experimental.module.min.js +2 -1
  198. package/dist/semiotic-geo.d.ts +5 -0
  199. package/dist/semiotic-network.d.ts +1 -0
  200. package/dist/semiotic-ordinal.d.ts +2 -0
  201. package/dist/semiotic-physics.d.ts +10 -6
  202. package/dist/semiotic-realtime-core.d.ts +1 -0
  203. package/dist/semiotic-realtime-core.min.js +1 -1
  204. package/dist/semiotic-realtime-core.module.min.js +1 -1
  205. package/dist/semiotic-recipes-core.d.ts +6 -1
  206. package/dist/semiotic-recipes-core.min.js +1 -1
  207. package/dist/semiotic-recipes-core.module.min.js +1 -1
  208. package/dist/semiotic-recipes.min.js +1 -1
  209. package/dist/semiotic-recipes.module.min.js +1 -1
  210. package/dist/semiotic-server-edge.d.ts +1 -1
  211. package/dist/semiotic-server-edge.min.js +1 -1
  212. package/dist/semiotic-server-edge.module.min.js +1 -1
  213. package/dist/semiotic-server-node.min.js +1 -1
  214. package/dist/semiotic-server-node.module.min.js +1 -1
  215. package/dist/semiotic-server.d.ts +1 -1
  216. package/dist/semiotic-utils-core.min.js +1 -1
  217. package/dist/semiotic-utils-core.module.min.js +1 -1
  218. package/dist/semiotic-utils.min.js +1 -1
  219. package/dist/semiotic-utils.module.min.js +1 -1
  220. package/dist/semiotic-xy.d.ts +4 -0
  221. package/dist/semiotic.d.ts +4 -4
  222. package/dist/semiotic.min.js +1 -1
  223. package/dist/semiotic.module.min.js +1 -1
  224. package/dist/server.min.js +1 -1
  225. package/dist/server.module.min.js +1 -1
  226. package/dist/xy.min.js +1 -1
  227. package/dist/xy.module.min.js +1 -1
  228. package/package.json +18 -2
  229. package/spec/README.md +94 -2
  230. package/spec/bindings/README.md +14 -3
  231. package/spec/v0.1/examples/annotation-provenance-reviewed-revision.json +27 -0
  232. package/spec/v0.1/examples/annotation-provenance-watcher-threshold.json +21 -0
  233. package/spec/v0.1/examples/audience-profile-executive-review.json +24 -0
  234. package/spec/v0.1/examples/audience-profile-incident-operators.json +42 -0
  235. package/spec/v0.1/examples/chart-capability-bar-comparison.json +48 -0
  236. package/spec/v0.1/examples/chart-capability-service-flow.json +54 -0
  237. package/dist/chunk-chunk-4AANPFOX.module.min.js +0 -2
  238. package/dist/chunk-chunk-5I3UZV4Q.module.min.js +0 -2
  239. package/dist/chunk-chunk-5RKXZQ2P.module.min.js +0 -1
  240. package/dist/chunk-chunk-74CCPVXB.module.min.js +0 -1
  241. package/dist/chunk-chunk-7ALTGHK6.module.min.js +0 -1
  242. package/dist/chunk-chunk-ANYDWOZF.module.min.js +0 -1
  243. package/dist/chunk-chunk-AVBI6GDT.module.min.js +0 -1
  244. package/dist/chunk-chunk-BANTPINB.module.min.js +0 -2
  245. package/dist/chunk-chunk-C4YA6TDR.module.min.js +0 -1
  246. package/dist/chunk-chunk-C57LR3YG.module.min.js +0 -1
  247. package/dist/chunk-chunk-CKMD5NV3.module.min.js +0 -2
  248. package/dist/chunk-chunk-CO5KQMGH.module.min.js +0 -1
  249. package/dist/chunk-chunk-CWQ5YIHX.module.min.js +0 -2
  250. package/dist/chunk-chunk-E6TXX6MI.module.min.js +0 -1
  251. package/dist/chunk-chunk-GMQ5AYTD.module.min.js +0 -1
  252. package/dist/chunk-chunk-JCG72SGW.module.min.js +0 -2
  253. package/dist/chunk-chunk-K3DMEW22.module.min.js +0 -1
  254. package/dist/chunk-chunk-KT2VAZMZ.module.min.js +0 -1
  255. package/dist/chunk-chunk-L6EA5V3G.module.min.js +0 -2
  256. package/dist/chunk-chunk-LJPCLYSC.module.min.js +0 -2
  257. package/dist/chunk-chunk-LRIFN2HK.module.min.js +0 -1
  258. package/dist/chunk-chunk-N5DDKCCF.module.min.js +0 -1
  259. package/dist/chunk-chunk-NEVE562N.module.min.js +0 -1
  260. package/dist/chunk-chunk-NLO44TOS.module.min.js +0 -2
  261. package/dist/chunk-chunk-PZJ2SBLL.module.min.js +0 -2
  262. package/dist/chunk-chunk-QSQVBIJA.module.min.js +0 -1
  263. package/dist/chunk-chunk-QUJ6TTLY.module.min.js +0 -1
  264. package/dist/chunk-chunk-RBIDBUT4.module.min.js +0 -2
  265. package/dist/chunk-chunk-RCF52Z42.module.min.js +0 -2
  266. package/dist/chunk-chunk-RFLAG356.module.min.js +0 -1
  267. package/dist/chunk-chunk-RPU4IZAV.module.min.js +0 -2
  268. package/dist/chunk-chunk-SKMBCFIL.module.min.js +0 -2
  269. package/dist/chunk-chunk-TAE7W424.module.min.js +0 -2
  270. package/dist/chunk-chunk-TUBMTZMU.module.min.js +0 -2
  271. package/dist/chunk-chunk-UFFEXJQY.module.min.js +0 -1
  272. package/dist/chunk-chunk-XSCHTS4D.module.min.js +0 -2
  273. package/dist/chunk-chunk-XXWSHGPL.module.min.js +0 -2
  274. package/dist/chunk-chunk-ZOAQDIJO.module.min.js +0 -1
  275. package/dist/chunk-chunk-ZXIXAPRE.module.min.js +0 -2
  276. package/dist/chunk-statisticalOverlays-QGDLRUHX.module.min.js +0 -1
  277. package/dist/chunk-statisticalOverlays-T77OKLDY.module.min.js +0 -1
@@ -0,0 +1 @@
1
+ import{LayoutCache as e,clamp as t,createSafeDatum as n,datumFromFields as o,dimFor as r,forceLayout as i,generateTokens as a,groupBy as s,layoutTokenGrid as c,makeShade as l,normalizeTokenEncoding as d,readField as u,resolveAccessor as h,signatureKey as f,stableGlyphId as m,unwrapDatum as p}from"./chunk-chunk-2CXCXRB4.module.min.js";import{canUseForceWorker as g,runForceLayoutWorker as y,shouldUseForceWorker as x}from"./chunk-chunk-BGHPD3RA.module.min.js";import{collidersFromPlotBounds as b,collidersFromXScaleBins as w,sedimentHeightfield as M}from"./chunk-chunk-RPL7WYXI.module.min.js";import{mulberry32 as v}from"./chunk-chunk-SIRIJ3DY.module.min.js";import{SYMBOL_SEQUENCE as k,symbolExtent as $,symbolPathString as A,useCustomLayoutSelection as S}from"./chunk-chunk-PZFT457G.module.min.js";import{isNoteAnnotation as I}from"./chunk-chunk-U66USBWU.module.min.js";var C=e=>{const t=e.config,o=t.rows??10,r=t.columns??10,i=t.gutter??2,a=o*r;if(0>=o||0>=r||0>=a)return{nodes:[]};const{plot:s}=e.dimensions;if(0>=s.width||0>=s.height)return{nodes:[]};const c=(s.width-i*(r-1))/r,l=(s.height-i*(o-1))/o;if(0>=c||0>=l)return{nodes:[]};const d=(null==(u=t.categoryAccessor)?null:"function"==typeof u?u:e=>e[u])??(()=>"_default");var u;const h=function(e){return null==e?null:"function"==typeof e?e:t=>Number(t[e])}(t.valueAccessor)??(()=>1),f=new Map,m=[];for(const t of e.data){const e=d(t)+"",n=Number(h(t)),o=Number.isFinite(n)?Math.max(0,n):0;f.has(e)||m.push(e),f.set(e,(f.get(e)??0)+o)}const p=Array.from(f.values()).reduce((e,t)=>e+t,0);if(0>=p)return{nodes:[]};let g;if(t.categoryOrder&&t.categoryOrder.length>0){const e=new Set,n=[];for(const o of t.categoryOrder)f.has(o)&&!e.has(o)&&(e.add(o),n.push(o));g=[...n,...m.filter(t=>!e.has(t))]}else g=m;if(0===g.length)return{nodes:[]};const y=g.map(e=>({cat:e,exact:(f.get(e)??0)/p*a})).map(e=>({...e,count:Math.floor(e.exact)})),x=y.reduce((e,t)=>e+t.count,0),b=y.map((e,t)=>({i:t,rem:e.exact-e.count})).sort((e,t)=>t.rem-e.rem);for(let e=0;a-x>e;e++)y[b[e%b.length].i].count+=1;const w="string"==typeof t.categoryAccessor?t.categoryAccessor:"category",M="string"==typeof t.valueAccessor?t.valueAccessor:"value",v=(e,t,o)=>n(n=>{n("category",e),n("value",f.get(e)??0),n("share",(f.get(e)??0)/p),"category"!==w&&n(w,e),"value"!==M&&n(M,f.get(e)??0),n("cells",o),n("_waffleCategory",e),n("_waffleIndex",t)}),k=[];let $=0;for(const t of y){const n=e.resolveColor(t.cat);for(let e=0;t.count>e;e++)k.push({type:"rect",x:s.x+$%r*(c+i),y:s.y+(o-1-Math.floor($/r))*(l+i),w:c,h:l,style:{fill:n,stroke:"none"},datum:v(t.cat,$,t.count),group:t.cat,_transitionKey:`waffle-${t.cat}-${e}`}),$++}return{nodes:k}};function N(e,t,n){const o=Math.max(0,Math.floor(n?.minPerCategory??0)),r=e.reduce((e,t)=>e+Math.max(0,t.weight),0);if(0>=t||0>=r)return e.map(e=>({...e,exact:0,cells:0,remainder:0}));const i=e.map(e=>{const n=Math.max(0,e.weight)/r*t;return{...e,exact:n,cells:Math.max(o,Math.floor(n)),remainder:n-Math.floor(n)}});let a=i.reduce((e,t)=>e+t.cells,0);for(;a>t;){const e=i.filter(e=>e.cells>o).sort((e,t)=>t.cells-e.cells||e.remainder-t.remainder||e.key.localeCompare(t.key))[0];if(!e)break;e.cells--,a--}const s=[...i].sort((e,t)=>t.remainder-e.remainder||t.weight-e.weight||e.key.localeCompare(t.key));for(let e=0;t>a;e++)s[e%s.length].cells++,a++;return i}var z="#334155",F="#f8fafc",W="#cbd5e1",L={viewBox:[40,40],anchor:[.5,1],parts:[{d:"M8 3h24v34H8z",fill:"color"},{d:"M12 9h16v5H12zM12 18h16v5H12zM12 27h16v5H12z",fill:"accent"},{d:"M23.8 11.5a1.2 1.2 0 1 0 2.4 0a1.2 1.2 0 1 0-2.4 0M23.8 20.5a1.2 1.2 0 1 0 2.4 0a1.2 1.2 0 1 0-2.4 0M23.8 29.5a1.2 1.2 0 1 0 2.4 0a1.2 1.2 0 1 0-2.4 0",fill:"color"}]},j={viewBox:[40,40],anchor:[.5,.5],parts:[{d:"M10 8h20a2 2 0 0 1 2 2v20a2 2 0 0 1-2 2H10a2 2 0 0 1-2-2V10a2 2 0 0 1 2-2z",fill:"color"},{d:"M15 15h10v10H15z",fill:"accent"},{d:"M7 2v6M14 2v6M21 2v6M28 2v6M7 32v6M14 32v6M21 32v6M28 32v6M2 7h6M2 14h6M2 21h6M2 28h6M32 7h6M32 14h6M32 21h6M32 28h6",fill:"none",stroke:"color",strokeWidth:3}]},R={viewBox:[40,40],anchor:[.5,.5],parts:[{d:"M23 1L7 23h10l-3 16 19-25H22z",fill:"color"}]},O={viewBox:[48,40],anchor:[.5,.78],parts:[{d:"M7 12c0-4 3-7 7-7h20c4 0 7 3 7 7v15H7z",fill:"color"},{d:"M11 15h26v8H11z",fill:"accent",opacity:.9},{d:"M12 27h7v4h-7zM29 27h7v4h-7z",fill:"accent",opacity:.95},{d:"M12 31a4 4 0 1 0 8 0a4 4 0 1 0-8 0M28 31a4 4 0 1 0 8 0a4 4 0 1 0-8 0",fill:"color",stroke:"accent",strokeWidth:1.8},{d:"M5 13h4v8H5zM39 13h4v8h-4z",fill:"color"}]},E="M 9.12,3.34 C 8.28,3.29 7.44,3.40 6.64,3.69 4.17,3.63 1.97,5.37 0.91,7.51 -1.32,11.80 2.55,17.76 8.19,16.55 11.62,16.13 15.55,14.04 16.17,10.33 16.38,6.53 12.77,3.52 9.12,3.34 Z M 9.35,19.86 C 8.89,19.84 8.41,19.92 7.92,20.11 5.12,21.55 3.72,24.68 2.79,27.54 2.32,29.86 0.87,32.04 1.36,34.49 1.63,37.60 8.04,38.95 8.04,38.95 8.04,38.95 14.67,39.65 16.50,36.33 17.16,31.95 16.34,27.23 14.01,23.42 13.07,21.69 11.36,19.92 9.35,19.86 Z",P={viewBox:[18,40],anchor:[.5,1],parts:[{d:E,fill:"color",stroke:"color",strokeWidth:1.4}]},T={server:L,chip:j,bolt:R,bus:O,person:P},q="var(--semiotic-primary, #4e79a7)",D="var(--semiotic-border, #d1d5db)";function B(e){return"object"==typeof e&&null!==e&&"tokens"in e&&"encoding"in e}function H(e,t,n){return"function"==typeof e?e(t)??n:e??n}function Y(e,t){return"function"==typeof e?e(t):e}function G(e){return e.sample??e.value??e.index}var X=new Set(k);function V(e,t){return void 0!==t.datum?H(t.datum,e,null):e.datum??null}function _(e,t){return{fill:!1!==e.highlighted?"scenario"===e.range?H(t.rangeColor,e,"var(--semiotic-secondary, #9ca3af)"):H(t.color,e,q):H(t.inactiveColor,e,D),stroke:"none",...Y(t.style,e)??{}}}function K(e,t){const n=Y(t.pointId,e)??(t.idPrefix?`${t.idPrefix}-${"scenario"===e.range?"range-":""}${e.index}`:void 0);return{datum:V(e,t),accessibleDatum:Y(t.accessibleDatum,e),accessibility:Y(t.accessibility,e),pointId:n,_transitionKey:n}}function U({input:e,encoding:t,options:n={}}){if(!B(e)&&!t)throw Error("tokenLayer requires an encoding when input is not a TokenSet.");const o=B(e)?{...e,encoding:d(e.encoding)}:a(e,t),r=function(e,t){const n=t.includeRange&&e.rangeTokens?[...e.tokens,...e.rangeTokens]:e.tokens;if(t.positionToken)return function(e,t){const n=t.positionToken;return n?e.map((t,o)=>{const r=n(t,o,e);return{...t,x:r.x,y:r.y,row:r.row??o,column:r.column??0}}):[]}(n,t);const o=t.layout??e.encoding.layout??"grid";if("quantile-strip"===o)return function(e,t){if(0===e.length)return[];const n=t.x??0,o=t.y??0,r=t.cellHeight??("number"==typeof t.tokenSize?t.tokenSize:12),i=t.gutter??2,a=Math.max(1,Math.floor(t.rows??1)),s=e.map(G),c=Math.min(...s),l=Math.max(...s)-c||1;return e.map((s,d)=>{const u=G(s),h=d%a,f=t.valueToX?t.valueToX(u,s):n+(u-c)/l*(t.width??12*Math.max(1,e.length-1)),m=t.valueToY?t.valueToY(u,s):o+h*(r+i);return{...s,x:f,y:m,row:h,column:d}})}(n,t);if("dotplot"===o)return function(e,t){if(0===e.length)return[];const n=t.x??0,o=t.y??0,r="number"==typeof t.tokenSize?t.tokenSize:12,i=t.gutter??2,a=t.cellWidth??r+i,s=t.cellHeight??r+i,c=e.map(G),l=Math.min(...c),d=Math.max(...c)-l||1,u=new Map;return e.map(r=>{const i=G(r),c=t.valueToX?t.valueToX(i,r):n+(i-l)/d*(t.width??Math.max(1,e.length-1)*a),h=Math.round((c-n)/Math.max(1,a)),f=u.get(h)??0;u.set(h,f+1);const m=t.valueToY?t.valueToY(i,r):o+f*s;return{...r,x:n+h*a,y:m,row:f,column:h}})}(n,t);if("bar-segment"===o){if(!t.valueToX)throw Error('tokenLayer layout "bar-segment" requires valueToX and optionally valueToY.');return function(e,t){if(!t.valueToX)return[];const n=t.y??0,o=t.cellHeight??("number"==typeof t.tokenSize?t.tokenSize:12),r=t.anchor??[.5,.5];return e.map((e,i)=>{const a=Number.isFinite(e.start)?e.start:G(e),s=(a+(Number.isFinite(e.end)?e.end:a+e.value))/2,c=t.valueToY?t.valueToY(s,e):n+r[1]*o;return{...e,x:t.valueToX(s,e),y:c,row:0,column:i}})}(n,t)}if("beeswarm"===o||"small-multiple"===o)throw Error(`tokenLayer layout "${o}" is not implemented yet; use row, column, stack, grid, waffle, dotplot, quantile-strip, bar-segment with valueToX, or positionToken.`);const r="number"==typeof t.tokenSize?t.tokenSize:void 0,i=t.cellWidth??r??12,a=t.cellHeight??r??i,s="row"===o?Math.max(1,n.length):"column"===o||"stack"===o?1:"waffle"===o&&"fixed-denominator"===e.encoding.countStrategy&&100===e.denominator?10:function(e,t,n){if(t.columns)return t.columns;if(t.width&&n>0){const e=t.gutter??2;return Math.max(1,Math.floor((t.width+e)/(n+e)))}return e.length>0?Math.ceil(Math.sqrt(e.length)):1}(n,t,i);return c(n,{...t,columns:s,cellWidth:i,cellHeight:a})}(o,n).filter(e=>!n.include||n.include(e));return{tokenSet:o,positionedTokens:r,nodes:r.map(e=>function(e,t,n){if("dot"===n.tokenType)return function(e,t){const n=H(t.tokenSize,e,12);return{type:"point",x:e.x,y:e.y,r:H(t.radius,e,n/2),style:_(e,t),...K(e,t)}}(e,t);const o=Y(t.glyph,e)??function(e){if(e)return T[e]}(n.icon);if(o)return function(e,t,n){const o=_(e,n),r=H(n.tokenSize,e,12);return{type:"glyph",x:e.x,y:e.y,size:r,glyph:t,color:(o.fill??q)+"",accent:H(n.accent,e,"var(--semiotic-bg, #ffffff)"),fraction:1>e.fraction?e.fraction:void 0,fractionStart:e.startFraction>0?e.startFraction:void 0,fractionDirection:H(n.fractionDirection,e,"horizontal"),ghostColor:1>e.fraction?Y(n.ghostColor,e)??D:void 0,rotation:Y(n.rotation,e),style:o,...K(e,n)}}(e,o,t);const r=(i=n.icon)&&X.has(i)?i:void 0;var i;return function(e,t){const n=H(t.tokenSize,e,12);return{type:"symbol",x:e.x,y:e.y,size:Math.PI*Math.max(1,n/2)**2,symbolType:H(t.symbolType,e,"circle"),path:Y(t.symbolPath,e),rotation:Y(t.rotation,e),style:_(e,t),...K(e,t)}}(e,r&&null==t.symbolType?{...t,symbolType:r}:t)}(e,n,o.encoding))}}import{interpolateRgb as Z}from"d3-interpolate";var Q=864e5,J=e=>{const t=e.config,{plot:n}=e.dimensions;if(0>=n.width||0>=n.height)return{nodes:[]};const o=e=>{const n="function"==typeof t.dateAccessor?t.dateAccessor(e):e[t.dateAccessor];return n instanceof Date?n:new Date(n)},r=e=>{const n="function"==typeof t.valueAccessor?t.valueAccessor(e):e[t.valueAccessor];return Number(n)},i=new Map;let a=null;for(const t of e.data){const e=o(t);if(!isFinite(e.getTime()))continue;null==a&&(a=e.getUTCFullYear());const n=ee(e),s=r(t);i.set(n,(i.get(n)??0)+(Number.isFinite(s)?s:0))}const s=t.year??a??(new Date).getUTCFullYear();let c=1/0,l=-1/0;for(const e of i.values())c>e&&(c=e),e>l&&(l=e);c===1/0&&(c=0,l=0);const[d,u]=t.colorRamp??[e.theme.semantic.surface??"#ebedf0",e.theme.semantic.primary??"#216e39"],h=e=>{if(l===c)return d;const t=(e-c)/(l-c);return Z(d,u)(t)},f=t.gutter??2,m=t.labelInset??0,p=Math.min((n.width-m-53*f)/54,(n.height-6*f)/7);if(0>=p)return{nodes:[]};const g=new Date(Date.UTC(s,0,1)),y=g.getUTCDay(),x=new Date(g.getTime()-y*Q),b=[];for(let e=0;54>e;e++)for(let t=0;7>t;t++){const o=new Date(x.getTime()+(7*e+t)*Q);if(o.getUTCFullYear()!==s)continue;const r=ee(o),a=i.get(r),c=null==a?d:h(a);b.push({type:"rect",x:n.x+m+e*(p+f),y:n.y+t*(p+f),w:p,h:p,style:{fill:c,stroke:"none"},datum:{date:o,value:a??0}})}return{nodes:b}};function ee(e){return`${e.getUTCFullYear()}-${te(e.getUTCMonth()+1)}-${te(e.getUTCDate())}`}function te(e){return 10>e?"0"+e:e+""}import{jsx as ne,jsxs as oe}from"react/jsx-runtime";var re={resource:32,city:64},ie=["#739b58","#83a964","#668d52","#8baa68"],ae={land:"#78985c",ocean:"#4d8192",forest:"#4f7c4b",grassland:"#8eaa68",cropland:"#a6a568",wetland:"#668f79",urban:"#8d8a72",scrub:"#9b9665",bare:"#aa906a",snow:"#d8ddcf"},se={land:"Open land",ocean:"Open ocean",forest:"Forest",grassland:"Grassland",cropland:"Cropland",wetland:"Wetland",urban:"Urban district",scrub:"Scrubland",bare:"Bare ground",snow:"Snow cover"},ce=new Set(["city","culture","monument","faith","nature","knowledge","defense","arena","transport"]);function le(e,t){if("function"==typeof e)return e;const n=e??t;return e=>e[n]}function de(e,t,n){return[111.32*(e-n.lon)*Math.cos((t+n.lat)/2*(Math.PI/180)),110.574*(t-n.lat)]}function ue(e){const t=Math.max(3,Math.round(e??5));return t%2==0?t+1:t}function he(e){return ce.has(e)?e:"monument"}function fe(e,t){const n=ue(t.gridSize),o=Math.max(1,t.gridRadiusKm??75),r=2*o/n,i=Math.floor(n/2),a=le(t.idAccessor,"id"),s=le(t.nameAccessor,"name"),c=le(t.longitudeAccessor,"lon"),l=le(t.latitudeAccessor,"lat"),d=le(t.kindAccessor,"kind"),u=t.candidatePriorityAccessor?le(t.candidatePriorityAccessor,"priority"):()=>0,h=new Map;let f=null;for(const m of e){const e=Number(c(m)),p=Number(l(m));if(!Number.isFinite(e)||!Number.isFinite(p))continue;const g=(a(m)??`${e},${p}`)+"",y=(s(m)??g)+"",x=he(d(m)),[b,w]=de(e,p,t.center);if(Math.abs(b)>o||Math.abs(w)>o)continue;const M=Math.min(n-1,Math.max(0,Math.floor((b+o)/r))),v=Math.min(n-1,Math.max(0,Math.floor((o-w)/r))),k=(M+.5)*r-o,$=o-(v+.5)*r,A={...m,id:g,name:y,kind:x,lon:e,lat:p,distanceKm:Math.sqrt(b*b+w*w),row:v,column:M,cellDistanceSq:(b-k)**2+(w-$)**2,candidatePriority:Number(u(m))||0};(null!=t.centerId&&g===t.centerId||!f&&"city"===x||!f&&v===i&&M===i)&&(f=A);const S=`${v}:${M}`,I=h.get(S)??[];I.push(A),h.set(S,I)}const m=new Map;f&&m.set("city",1);const p=[];for(let e=0;n>e;e++)for(let t=0;n>t;t++){const n=`tile-${e}-${t}`,a=(t+.5)*r-o,s=o-(e+.5)*r;let c,l;if(e===i&&t===i&&f){c=f;const n=(h.get(`${e}:${t}`)??[]).filter(e=>e.id!==f?.id).sort((e,t)=>e.candidatePriority-t.candidatePriority||e.cellDistanceSq-t.cellDistanceSq||e.name.localeCompare(t.name));l=[f,...n]}else{const n=(h.get(`${e}:${t}`)??[]).filter(e=>e.id!==f?.id);n.sort((e,t)=>{const n=e.candidatePriority-t.candidatePriority;if(0!==n)return n;const o=m.get(e.kind)??0,i=m.get(t.kind)??0,a=r*r*.35;return e.cellDistanceSq+o*a-(t.cellDistanceSq+i*a)||e.name.localeCompare(t.name)}),c=n[0]??null,l=n}c&&m.set(c.kind,(m.get(c.kind)??0)+1),p.push({id:n,row:e,column:t,centerXKm:a,centerYKm:s,terrainIndex:Math.abs((17*e+31*t)%ie.length),landmark:c,landmarks:l})}return p}var me=e=>{const t=ue(e.config.gridSize),n=Math.max(20,e.config.tileWidth??80),o=Math.max(10,e.config.tileHeight??40),r=e.config.terrainColors?.length?e.config.terrainColors:ie,i=e.dimensions.width/2,a=(e.dimensions.height-t*o)/2+o/2,s=fe(e.points,e.config).map(e=>({...e,x:i+n/2*(e.column-e.row),y:a+(e.column+e.row)*(o/2)}));return{nodes:s.map(t=>{const i=e.config.terrainByCell?.[t.id],a="string"==typeof i?{kind:i}:i,s="city"===t.landmark?.kind?"urban":a?.kind??"land",c=a?.fill??e.config.terrainPalette?.[s]??ae[s],l=t.landmark?{...t.landmark,gridRow:t.row,gridColumn:t.column,cellId:t.id,terrainKind:s,terrainCoverage:a?.coverage,features:t.landmarks,featureCount:t.landmarks.length}:{id:t.id,name:se[s],kind:"terrain",terrainKind:s,terrainCoverage:a?.coverage,gridRow:t.row,gridColumn:t.column,cellId:t.id,features:[],featureCount:0};return{type:"geoarea",pathData:(d=t.x,u=t.y,h=n,f=o,`M${d},${u-f/2}L${d+h/2},${u}L${d},${u+f/2}L${d-h/2},${u}Z`),centroid:[t.x,t.y],bounds:[[t.x-n/2,t.y-o/2],[t.x+n/2,t.y+o/2]],screenArea:n*o/2,style:{fill:a||"urban"===s?c:r[t.terrainIndex%r.length],stroke:"ocean"===s?"#315d6c":e.config.tileStroke??"#314934",strokeWidth:1},datum:l,group:t.landmark?.kind??s,interactive:!0};var d,u,h,f}),overlays:ne(pe,{tiles:s,tileWidth:n,tileHeight:o,sprites:e.config.sprites,resourceSize:e.config.resourceSpriteSize??32,citySize:e.config.citySpriteSize??64,showCityLabel:!1!==e.config.showCityLabel}),restyle:(e,t)=>t?.isActive&&e.datum&&"terrain"!==e.datum.kind?{fillOpacity:t.predicate(e.datum)?1:.28}:{fillOpacity:1}}};function pe({tiles:e,tileWidth:t,tileHeight:n,sprites:o,resourceSize:r,citySize:i,showCityLabel:a}){const s=S(),c=e.filter(e=>e.landmark).sort((e,t)=>e.y-t.y||e.x-t.x);return oe("g",{"aria-hidden":"true",pointerEvents:"none",children:[c.map(e=>{const a=e.landmark,c="city"===a.kind?i:r,l=e.y+n/2,d=s.isActive&&!s.predicate(a)?.28:1;return oe("g",{opacity:d,children:[ne("ellipse",{cx:e.x,cy:e.y+.15*n,rx:.28*c,ry:.1*c,fill:"#17251d",opacity:.32}),ne(be,{kind:a.kind,href:o?.[a.kind],x:e.x-c/2,y:l-c,size:c}),e.landmarks.length>1&&ne(ge,{x:e.x+.3*t,y:e.y-.19*n,count:e.landmarks.length-1,tileHeight:n})]},a.id)}),a&&c.filter(e=>"city"===e.landmark?.kind).map(e=>{const t=e.landmark.name.toUpperCase(),o=Math.max(56,6.4*t.length+14);return oe("g",{transform:`translate(${e.x},${e.y+.72*n})`,children:[ne("rect",{x:-o/2,y:-7,width:o,height:14,rx:1,fill:"#17251d",opacity:.92}),ne("text",{textAnchor:"middle",dominantBaseline:"central",fill:"#f5edcf",fontFamily:"monospace",fontSize:9,fontWeight:700,letterSpacing:.8,children:t})]},e.landmark.id+"-label")})]})}function ge({x:e,y:t,count:n,tileHeight:o}){const r=Math.max(10,Math.min(15,.34*o)),i="+"+n,a=Math.max(r,i.length*r*.58);return oe("g",{transform:`translate(${e},${t})`,children:[ne("rect",{x:-a/2,y:-r/2,width:a,height:r,rx:1,fill:"#17251d",stroke:"#f0d36d",strokeWidth:1}),ne("text",{textAnchor:"middle",dominantBaseline:"central",fill:"#f5edcf",fontFamily:"monospace",fontSize:Math.max(7,.62*r),fontWeight:700,children:i})]})}var ye={city:["..1111..","..1221..",".111111.",".133331.","11111111","13311331","14411441","11111111"],culture:["..1111..",".122221.","11111111",".133331.",".133331.",".133331.","11111111",".444444."],monument:["...11...","..1221..","..1221..","..1331..",".113311.",".133331.","11111111",".444444."],faith:["...11...","...11...","..1111..","...11...","..1221..",".133331.","11111111",".444444."],nature:["...11...","..1221..",".122221.","12222221",".133331.","...11...","..1441..",".144441."],knowledge:[".111111.","12211221","12211221","13311331","13311331","13311331","11111111",".444444."],defense:["11.11.11","11111111","12222221","12211221","13311331","13333331","11111111",".444444."],arena:["..1111..",".122221.","12333321","12344321","12344321","12333321",".122221.","..1111.."],transport:["...11...","..1221..",".122221.","11111111","..1331..","..1331..",".114411.","11444411"]},xe={city:{1:"#29364a",2:"#d8b45b",3:"#b7693c",4:"#6d9fc5"},culture:{1:"#29364a",2:"#d5c9a3",3:"#9c6fb2",4:"#ece3c4"},monument:{1:"#29364a",2:"#d8cba8",3:"#9c8f79",4:"#ece3c4"},faith:{1:"#29364a",2:"#d9c36d",3:"#a877a5",4:"#ece3c4"},nature:{1:"#29364a",2:"#4f8a4e",3:"#79aa56",4:"#79583a"},knowledge:{1:"#29364a",2:"#d5c9a3",3:"#4f7da0",4:"#ece3c4"},defense:{1:"#29364a",2:"#a6a298",3:"#777b7f",4:"#d5c9a3"},arena:{1:"#29364a",2:"#cb8056",3:"#d8cba8",4:"#6d9fc5"},transport:{1:"#29364a",2:"#d8b45b",3:"#6d9fc5",4:"#ece3c4"}};function be({kind:e,href:t,x:n,y:o,size:r}){if(t)return ne("image",{href:t,x:n,y:o,width:r,height:r,preserveAspectRatio:"xMidYMax meet",style:{imageRendering:"pixelated"}});const i=xe[e];return ne("svg",{x:n,y:o,width:r,height:r,viewBox:"0 0 8 8",shapeRendering:"crispEdges",children:ye[e].flatMap((e,t)=>[...e].map((e,n)=>"."===e?null:ne("rect",{x:n,y:t,width:1,height:1,fill:i[e]},`${t}-${n}`)))})}import{jsx as we}from"react/jsx-runtime";function Me(e){if(Number.isFinite(e))return Math.max(1,Math.round(e))}function ve(e,t,n){return Math.max(t,Math.min(n,e))}function ke(e){let t=1/0,n=-1/0;for(const o of e)Number.isFinite(o)&&(t>o&&(t=o),o>n&&(n=o));return t===1/0?[0,0]:[t,n]}function $e(e,t){const n=t[1]-t[0];return 0===n?.5:(e-t[0])/n}function Ae(e,t={}){const n=e.map((e,t)=>({...e,index:t})).filter(e=>Number.isFinite(e.x)&&Number.isFinite(e.y));if(0===n.length)return[];const o=ve(Number.isFinite(t.occupancy)?Number(t.occupancy):.72,.2,1),r=Number.isFinite(t.aspectRatio)&&Number(t.aspectRatio)>0?Number(t.aspectRatio):1.8;let i=Me(t.columns)??Math.max(1,Math.ceil(Math.sqrt(n.length*r/o))),a=Me(t.rows)??Math.max(1,Math.ceil(n.length/(i*o)));n.length>i*a&&(null!=t.columns&&null==t.rows?a=Math.ceil(n.length/i):null!=t.rows&&null==t.columns?i=Math.ceil(n.length/a):a=Math.ceil(n.length/i));const s=ke(n.map(e=>e.x)),c=ke(n.map(e=>e.y)),l=n.map(e=>({...e,desiredColumn:$e(e.x,s)*Math.max(0,i-1),desiredRow:$e(e.y,c)*Math.max(0,a-1)})),d=(i-1)/2,u=(a-1)/2;l.sort((e,t)=>(t.desiredColumn-d)**2+(t.desiredRow-u)**2-((e.desiredColumn-d)**2+(e.desiredRow-u)**2)||e.desiredRow-t.desiredRow||e.desiredColumn-t.desiredColumn||e.index-t.index);const h=new Set;for(let e=0;a>e;e+=1)for(let t=0;i>t;t+=1)h.add(e*i+t);const f=[];for(const e of l){let t=-1,n=1/0;for(const o of h){const r=(o%i-e.desiredColumn)**2+(Math.floor(o/i)-e.desiredRow)**2;(n>r||r===n&&t>o)&&(t=o,n=r)}0>t||(h.delete(t),f.push({datum:e.datum,x:e.x,y:e.y,row:Math.floor(t/i),column:t%i,index:e.index}))}return f.sort((e,t)=>e.index-t.index),f.map(({index:e,...t})=>t)}function Se(e,t,n=[]){if("function"==typeof t)return t(e);if("string"==typeof t)return e[t];for(const t of n)if(null!=e[t])return e[t]}function Ie(e){return e.map(([e,t],n)=>`${0===n?"M":"L"}${e},${t}`).join("")+"Z"}var Ce=e=>{const t=e.config,n=t.source??"auto",o="areas"===n||"auto"===n&&e.areas.length>0,r=o?function(e){return e.areas.map((t,n)=>{const o=function(e,t){const n=e.properties&&"object"==typeof e.properties?e.properties:{},o=e.id??n.id??n.name??"area-"+t;return{...n,id:o+""}}(t,n),r=e.scales.geoPath.centroid(t),i=Number.isFinite(r[0])&&Number.isFinite(r[1])?e.scales.invertedPoint(r[0],r[1]):null;return{datum:{...o,gridLongitude:i?.[0],gridLatitude:i?.[1]},x:r[0],y:r[1]}}).filter(e=>Number.isFinite(e.x)&&Number.isFinite(e.y))}(e):e.points.map((e,t)=>({datum:e,x:t,y:t})),i=r.filter((e,n)=>!t.filter||t.filter(e.datum,n)),a=function(e,t){if(!t.rowAccessor||!t.columnAccessor)return null;const n=e.map(e=>({datum:e,x:Number(Se(e,t.columnAccessor)),y:Number(Se(e,t.rowAccessor))})).filter(e=>Number.isFinite(e.x)&&Number.isFinite(e.y));return n.length!==e.length?null:n.map(e=>({...e,row:e.y,column:e.x}))}(i.map(e=>e.datum),t),s=o?i:function(e){return e.points.map(t=>{const n=Number(Se(t,e.config.longitudeAccessor,["lon","longitude"])),o=Number(Se(t,e.config.latitudeAccessor,["lat","latitude"])),r=Number.isFinite(n)&&Number.isFinite(o)?e.scales.projectedPoint(n,o):null;return{datum:t,x:r?.[0]??NaN,y:r?.[1]??NaN}}).filter(e=>Number.isFinite(e.x)&&Number.isFinite(e.y))}({...e,points:i.map(e=>e.datum)}),c=a??Ae(s,{columns:t.columns,rows:t.rows,occupancy:t.occupancy,aspectRatio:e.dimensions.width/Math.max(1,e.dimensions.height)});if(0===c.length)return{nodes:[]};const l=ke(c.map(e=>e.row)),d=ke(c.map(e=>e.column)),u=Math.max(1,Math.round(l[1]-l[0])+1),h=Math.max(1,Math.round(d[1]-d[0])+1),f=Math.max(0,t.layoutPadding??8),m=Math.max(1,e.dimensions.width-2*f)/h,p=Math.max(1,e.dimensions.height-2*f)/u,g=(e.dimensions.width-m*h)/2,y=(e.dimensions.height-p*u)/2,x=ve(t.cellPadding??.12,0,.8),b=Math.max(1,.5*Math.min(m,p)*(1-x)),w=t.sizeAccessor?c.map(e=>Number(Se(e.datum,t.sizeAccessor))):[],M=t.sizeDomain??ke(w),v=t.sizeRange??[.36,1],k=ve(Math.min(v[0],v[1]),.05,1),$=ve(Math.max(v[0],v[1]),k,1),A=c.map((n,o)=>{const r={...n.datum,gridRow:n.row,gridColumn:n.column},i=(Se(r,t.idAccessor,["id","key","name"])??"grid-"+o)+"",a=(Se(r,t.labelAccessor,["abbr","code","label","name","id"])??i)+"",s=Math.max(1,t.maxLabelLength??4),c=a.length>s?a.slice(0,s):a,u=Se(r,t.categoryAccessor),h=null==u?void 0:u+"",f=Se(r,t.fillAccessor),x=null!=f?f+"":h?e.resolveColor(h):e.theme.categorical[0]??"#4f86c6",w=t.sizeAccessor?Number(Se(r,t.sizeAccessor)):NaN,v=t.sizeAccessor&&Number.isFinite(w)?Math.sqrt(ve($e(w,M),0,1)):1,A=b*(k+v*($-k)),S="function"==typeof t.markStyle?t.markStyle(r,o):t.markStyle;return{datum:r,id:i,label:c,category:h,row:n.row,column:n.column,x:g+(n.column-d[0]+.5)*m,y:y+(n.row-l[0]+.5)*p,radius:A,style:{fill:x,fillOpacity:.94,stroke:"rgba(255,255,255,0.9)",strokeWidth:1,...S}}}),S=t.shape??"circle";return{nodes:A.map(e=>{return"circle"===S?{type:"point",x:e.x,y:e.y,r:e.radius,style:e.style,datum:e.datum,accessibleDatum:e.datum,accessibility:{label:e.label,tableFields:{name:e.datum.name??e.label,label:e.label,row:e.row,column:e.column,...e.category?{category:e.category}:{}}},pointId:e.id,_transitionKey:e.id}:{type:"geoarea",pathData:"hexagon"===S?function(e,t,n){const o=[];for(let r=0;6>r;r+=1){const i=-Math.PI/2+r*(Math.PI/3);o.push([e+Math.cos(i)*n,t+Math.sin(i)*n])}return Ie(o)}(e.x,e.y,e.radius):Ie([[(t=e.x)-(o=e.radius),(n=e.y)-o],[t+o,n-o],[t+o,n+o],[t-o,n+o]]),centroid:[e.x,e.y],bounds:[[e.x-e.radius,e.y-e.radius],[e.x+e.radius,e.y+e.radius]],screenArea:"hexagon"===S?3*Math.sqrt(3)*e.radius*e.radius/2:(2*e.radius)**2,style:e.style,datum:e.datum,accessibleDatum:e.datum,accessibility:{label:e.label,tableFields:{name:e.datum.name??e.label,label:e.label,row:e.row,column:e.column,...e.category?{category:e.category}:{}}},group:e.category,interactive:!0};var t,n,o}),overlays:!1===t.showLabels?null:we(Ne,{marks:A,color:t.labelColor??"#ffffff",fontSize:t.labelFontSize??ve(.23*Math.min(m,p),7,14),fontFamily:t.labelFontFamily,fontWeight:t.labelFontWeight??700}),restyle:(e,t)=>t?.isActive&&e.datum?{opacity:t.predicate(e.datum)?1:.18}:{opacity:1}}};function Ne({marks:e,color:t,fontSize:n,fontFamily:o,fontWeight:r}){const i=S();return we("g",{"aria-hidden":"true",pointerEvents:"none",children:e.map(e=>{const a=!i.isActive||i.predicate(e.datum);return we("text",{x:e.x,y:e.y,fill:t,fontFamily:o,fontSize:n,fontWeight:r,opacity:a?1:.18,textAnchor:"middle",dominantBaseline:"central",children:e.label},e.id)})})}import{geoBounds as ze,geoContains as Fe}from"d3-geo";import{jsx as We}from"react/jsx-runtime";var Le=new WeakMap,je=new WeakMap,Re=new WeakMap,Oe=1;function Ee(e,t,n){return Math.max(t,Math.min(n,e))}function Pe(e){if(Number.isFinite(e)&&Number(e)>0)return Number(e)}function Te(e,t){return"function"==typeof t?t(e,e.dotIndex):"string"==typeof t?e[t]:void 0}function qe(e){return e.properties&&"object"==typeof e.properties?{...e.properties}:{}}function De(e,t){const n=qe(e);return(e.id??n.id??n.name??"feature-"+t)+""}function Be(e,t,n,o){return[Math.ceil((e-n)/o-.5),Math.floor((t-n)/o-.5)]}function He(e){if(!e)return 0;const t=Re.get(e);if(t)return t;const n=Oe;return Oe+=1,Re.set(e,n),n}function Ye(e,t){return!t||!(t[0][1]>e[1]||e[1]>t[1][1]||(n=e[0],o=t[0][0],r=t[1][0],o>r?o>n&&n>r:o>n||n>r));var n,o,r}function Ge(e,t){for(const n of e){const{feature:e,index:o}=n;if(e.geometry&&Ye(t,n.bounds))try{if(Fe(e,t))return{feature:e,index:o}}catch{}}return null}function Xe(e,t,n,o={}){const r=e.filter((e,t)=>e.geometry&&(!o.featureFilter||o.featureFilter(e,t))),i=function(e,t){if(0===e.length)return null;const n=t.bounds({type:"FeatureCollection",features:e});return Number.isFinite(n[0][0])&&Number.isFinite(n[0][1])&&Number.isFinite(n[1][0])&&Number.isFinite(n[1][1])?n:null}(r,t.geoPath);if(!i)return{dots:[],cellSize:10,features:r};const a=Math.max(0,o.layoutPadding??0),s=[[Ee(i[0][0],a,Math.max(a,n.width-a)),Ee(i[0][1],a,Math.max(a,n.height-a))],[Ee(i[1][0],a,Math.max(a,n.width-a)),Ee(i[1][1],a,Math.max(a,n.height-a))]],c=Math.max(0,s[1][0]-s[0][0]),l=Math.max(0,s[1][1]-s[0][1]);if(0===c||0===l)return{dots:[],cellSize:10,features:r};const d=Pe(o.columns);let u=Math.max(2,d?c/d:Pe(o.cellSize)??10);const h=Math.max(100,Math.round(Pe(o.maxSamples)??25e3)),f=Math.ceil(c/u)*Math.ceil(l/u);f>h&&(u*=Math.sqrt(f/h));const m=o.gridOrigin?.[0]??0,p=o.gridOrigin?.[1]??0,[g,y]=Be(s[0][0],s[1][0],m,u),[x,b]=Be(s[0][1],s[1][1],p,u),w=[],M=function(e){return e.map((e,t)=>{if(je.has(e))return{feature:e,index:t,bounds:je.get(e)??null};try{const n=ze(e);return je.set(e,n),{feature:e,index:t,bounds:n}}catch{return je.set(e,null),{feature:e,index:t,bounds:null}}})}(r);for(let e=x;b>=e;e+=1){const n=p+(e+.5)*u;for(let r=g;y>=r;r+=1){const i=t.invertedPoint(m+(r+.5)*u,n);if(!i||!Number.isFinite(i[0])||!Number.isFinite(i[1]))continue;const a=Ge(M,i);if(!a)continue;const s={...qe(a.feature),featureId:De(a.feature,a.index),featureIndex:a.index,gridRow:e,gridColumn:r,longitude:i[0],latitude:i[1],dotIndex:w.length};o.dotFilter&&!o.dotFilter(s,w.length)||w.push(s)}}return{dots:w,cellSize:u,features:r}}function Ve(e){return Math.round(1e4*e)/1e4}function _e(e){return Array.isArray(e)&&e.length>=2&&Number.isFinite(e[0])&&Number.isFinite(e[1])?`${Ve(Number(e[0]))},${Ve(Number(e[1]))}`:"null"}function Ke(e,t){const n=e[t];return"function"==typeof n?n.call(e):void 0}function Ue(e){return"number"==typeof e&&Number.isFinite(e)?Ve(e)+"":null===e?"null":"unavailable"}function Ze(e){const t=e.scales.projection;return[Ue(Ke(t,"scale")),_e(Ke(t,"translate")),_e(Ke(t,"center")),(n=Ke(t,"rotate"),Array.isArray(n)&&n.every(Number.isFinite)?n.map(e=>Ve(Number(e))).join(","):"unavailable"),Ue(Ke(t,"clipAngle")),Ue(Ke(t,"precision")),...[[0,0],[-120,35],[45,45],[120,-30]].map(([t,n])=>_e(e.scales.projectedPoint(t,n)))].join("|");var n}function Qe(e){return e.map(([e,t],n)=>`${0===n?"M":"L"}${e},${t}`).join("")+"Z"}var Je=e=>{const t=function(e){let t=Le.get(e.areas);t||(t=new Map,Le.set(e.areas,t));const n=function(e){const t=e.config;return[e.areas.length,e.dimensions.width,e.dimensions.height,t.cellSize??"",t.columns??"",t.layoutPadding??"",t.gridOrigin?.join(",")??"",t.maxSamples??"",He(t.featureFilter),He(t.dotFilter),Ze(e)].join("::")}(e),o=t.get(n);if(o)return o;const r=Xe(e.areas,e.scales,e.dimensions,e.config);if(t.size>=12){const e=t.keys().next().value;void 0!==e&&t.delete(e)}return t.set(n,r),r}(e),n=e.config,o=n.shape??"circle",r=Math.max(.5,Pe(n.dotRadius)??t.cellSize*Ee(n.radiusRatio??.24,.05,.5)),i=n.gridOrigin?.[0]??0,a=n.gridOrigin?.[1]??0;return{nodes:t.dots.map((s,c)=>{const l=i+(s.gridColumn+.5)*t.cellSize,d=a+(s.gridRow+.5)*t.cellSize,u=Te(s,n.categoryAccessor),h=Te(s,n.fillAccessor),f={fill:null!=h?h+"":null!=u?e.resolveColor(u+""):e.theme.categorical[0]??"#4f86c6",fillOpacity:.92,strokeWidth:0,..."function"==typeof n.markStyle?n.markStyle(s,c):n.markStyle},m=`dot-${s.gridRow}-${s.gridColumn}`;if("circle"===o)return{type:"point",x:l,y:d,r:r,style:f,datum:s,interactive:!1,pointId:m,_transitionKey:m};const p="hexagon"===o?function(e,t,n){return Qe(Array.from({length:6},(o,r)=>{const i=-Math.PI/2+r*(Math.PI/3);return[e+Math.cos(i)*n,t+Math.sin(i)*n]}))}(l,d,r):function(e,t,n){return Qe([[e-n,t-n],[e+n,t-n],[e+n,t+n],[e-n,t+n]])}(l,d,r);return{type:"geoarea",pathData:p,centroid:[l,d],bounds:[[l-r,d-r],[l+r,d+r]],screenArea:"hexagon"===o?3*Math.sqrt(3)*r*r/2:(2*r)**2,style:f,datum:s,group:s.featureId,interactive:!1}}),overlays:n.showOutline?We("g",{"aria-hidden":"true",pointerEvents:"none",children:t.features.map((t,o)=>{const r=e.scales.geoPath(t);return r?We("path",{d:r,fill:"none",stroke:n.outlineStyle?.stroke??"currentColor",strokeOpacity:n.outlineStyle?.opacity??n.outlineStyle?.fillOpacity??.22,strokeWidth:n.outlineStyle?.strokeWidth??.7,strokeDasharray:n.outlineStyle?.strokeDasharray,strokeLinecap:n.outlineStyle?.strokeLinecap,vectorEffect:"non-scaling-stroke"},De(t,o)):null})}):null,restyle:(e,t)=>t?.isActive&&e.datum?{opacity:t.predicate(e.datum)?1:.14}:{opacity:1}}},et=e=>{const t=e.config,n=t.nodeWidth??80,o=t.nodeHeight??30,r=t.orientation??"vertical",i=t.edgeCurve??"curved",a=!1!==t.showLabels,s=t.labelAccessor??"id",c="function"==typeof s?s:e=>u(e,s,e.id??"")+"",l=new Map,d=[],h=[],f=e=>{const t=e.data??{};return{x:"number"==typeof t.x?t.x:e.x,y:"number"==typeof t.y?t.y:e.y,w:("number"==typeof t.width?t.width:e.width)??n,h:("number"==typeof t.height?t.height:e.height)??o}};for(const n of e.nodes){const{x:o,y:r,w:i,h:s}=f(n);null!=o&&null!=r&&(l.set(n.id,{x:o,y:r,w:i,h:s}),d.push({type:"rect",x:o-i/2,y:r-s/2,w:i,h:s,style:{fill:t.nodeFill??e.resolveColor(n.id),stroke:`var(--semiotic-surface, ${e.theme.semantic.surface??"#fff"})`,strokeWidth:1.5},datum:n,id:n.id,label:c(n)+""}),a&&h.push({x:o,y:r,text:c(n)+"",anchor:"middle",baseline:"middle",fontSize:11}))}const m=[];for(const t of e.edges){const n="string"==typeof t.target?t.target:t.target.id,o=l.get("string"==typeof t.source?t.source:t.source.id),a=l.get(n);if(!o||!a)continue;const s="vertical"===r?{x:o.x,y:o.y+o.h/2}:{x:o.x+o.w/2,y:o.y},c="vertical"===r?{x:a.x,y:a.y-a.h/2}:{x:a.x-a.w/2,y:a.y};if("line"===i)m.push({type:"line",x1:s.x,y1:s.y,x2:c.x,y2:c.y,style:{stroke:`var(--semiotic-border, ${e.theme.semantic.border??"#999"})`,strokeWidth:1},datum:t});else{const n=(s.y+c.y)/2,o=(s.x+c.x)/2;m.push({type:"curved",pathD:"vertical"===r?`M${s.x},${s.y} C${s.x},${n} ${c.x},${n} ${c.x},${c.y}`:`M${s.x},${s.y} C${o},${s.y} ${o},${c.y} ${c.x},${c.y}`,style:{stroke:`var(--semiotic-border, ${e.theme.semantic.border??"#999"})`,strokeWidth:1,fill:"none"},datum:t})}}return{sceneNodes:d,sceneEdges:m,labels:h}},tt=e=>{const t=e.config,n=t.nodeWidth??100,o=t.nodeHeight??36,r=t.edgeStyle??"polyline",i=!1!==t.showLabels,a=t.labelAccessor??"label",s="function"==typeof a?a:e=>u(e,a,e.id??"")+"",c=new Map,l=[],d=[],h=e=>{const t=e.data??{};return{x:"number"==typeof t.x?t.x:e.x,y:"number"==typeof t.y?t.y:e.y,w:("number"==typeof t.width?t.width:e.width)??n,h:("number"==typeof t.height?t.height:e.height)??o}};for(const n of e.nodes){const{x:o,y:r,w:a,h:u}=h(n);null!=o&&null!=r&&(c.set(n.id,{x:o,y:r,w:a,h:u}),l.push({type:"rect",x:o-a/2,y:r-u/2,w:a,h:u,style:{fill:t.nodeFill??e.resolveColor(n.id),stroke:`var(--semiotic-border, ${e.theme.semantic.border??"#888"})`,strokeWidth:1.5},datum:n,id:n.id,label:s(n)+""}),i&&d.push({x:o,y:r,text:s(n)+"",anchor:"middle",baseline:"middle",fontSize:11}))}const f=t.edgeStroke??`var(--semiotic-border, ${e.theme.semantic.border??"#666"})`,m=[];for(const t of e.edges){const e="string"==typeof t.target?t.target:t.target.id,n=c.get("string"==typeof t.source?t.source:t.source.id),o=c.get(e);if(!n||!o)continue;const i=t.data??{},a=Array.isArray(i.points)?i.points:t.points;if(a&&a.length>=2)if("smooth"!==r||3>a.length){const e="M"+a.map(e=>`${e.x},${e.y}`).join(" L ");m.push({type:"curved",pathD:e,style:{stroke:f,strokeWidth:1,fill:"none"},datum:t})}else{let e=`M${a[0].x},${a[0].y}`;for(let t=1;a.length-1>t;t++)e+=` Q${a[t].x},${a[t].y} ${(a[t].x+a[t+1].x)/2},${(a[t].y+a[t+1].y)/2}`;const n=a[a.length-1];e+=` T${n.x},${n.y}`,m.push({type:"curved",pathD:e,style:{stroke:f,strokeWidth:1,fill:"none"},datum:t})}else m.push({type:"line",x1:n.x,y1:n.y,x2:o.x,y2:o.y,style:{stroke:f,strokeWidth:1},datum:t})}return{sceneNodes:l,sceneEdges:m,labels:d}};import{jsx as nt,jsxs as ot}from"react/jsx-runtime";var rt={"topic-source":"#1f7a8c","topic-sink":"#b4451f","topic-bridge":"#4b5a82",processor:"#34344a",unknown:"#5a5a6a"},it={internal:"var(--semiotic-border, #6b6b7d)","cross-subtopology":"var(--semiotic-info, #6a8caf)","topic-bridge":"var(--semiotic-secondary, #8b78c4)",back:"var(--semiotic-danger, #e0556b)"};function at(e){return Array.isArray(e)?e.map((e,t)=>"string"==typeof e?{storeName:e,slotIndex:t}:{storeName:(e.storeName??"")+"",slotIndex:e.slotIndex??t}):[]}var st=e=>{const t=e.config||{},n=e.dimensions.plot,o=t.layerAccessor??"x",r=t.rowAccessor??"y",i=t.partitionAccessor??"partition",a=t.semanticAccessor??"semantic",s=t.labelAccessor??"label",c=t.storesAccessor??"stores",l=t.backEdgeAccessor??"isBackEdge",d=t.edgeTypeAccessor??"edgeType",h={...rt,...t.partitionColors},f={...it,...t.edgeColors},m=t.accentColor??"var(--semiotic-focus, #ffcc33)",p=t.borderColor??"var(--semiotic-border, #555)",g=t.dimOpacity??.14,y=t.edgeOpacity??.5,x=t.edgeWidth??1.25,b=t.backEdgeWidth??t.edgeWidth??1.5,w=!1!==t.showStoreChips,M=t.storeChipColor??"var(--semiotic-info, #6a8caf)";let v=t.layerCount,k=t.maxLayerSize;if(null==v||null==k){let t=0;const n=new Map;for(const r of e.nodes){const e=Math.round(Number(u(r,o,0)));t=Math.max(t,e),n.set(e,(n.get(e)??0)+1)}v=v??t+1,k=k??Math.max(1,...n.values())}const $=n.width/Math.max(1,v),A=n.height/Math.max(1,k);let S=Math.min(t.nodeWidth??172,Math.max(8,$-(t.minGapX??26))),I=Math.min(t.nodeHeight??54,Math.max(8,A-(t.minGapY??18)));const C=t.lod&&"auto"!==t.lod?t.lod:16>S?"dot":48>S?"icon":108>S?"compact":"full";if("dot"===C){const e=Math.min(S,I,11);S=e,I=e}const N=Math.max(1,n.width-S),z=Math.max(1,n.height-I),F=Math.max(1,k-1),W=e=>n.x+S/2+(v>1?e/(v-1):.5)*N,L=e=>n.y+I/2+(e+F/2)/F*z,j=t.reachableIds?new Set(t.reachableIds):null,R=t.selectedId??null,O=e.selection,E=new Map,P=new Map,T=[],q=[];for(const t of e.nodes){const e=t.id,n=Number(u(t,o,0)),l=Number(u(t,r,0)),d=u(t,i,"processor")+"",f=u(t,a,"processor")+"",y=u(t,s,e)+"",x=at(u(t,c,[])),b=t.data??t,w=W(n),M=L(l);E.set(e,{cx:w,cy:M});const v=j?j.has(e):null,k=O?.isActive?O.predicate(b):null,$=null!==v?!v:null!==k&&!k;P.set(e,$);const A=null!=R&&e===R,N=$&&!A?g:1,z=h[d]??h.unknown;"dot"===C?T.push({type:"circle",cx:w,cy:M,r:S/2,style:{fill:z,opacity:N,stroke:A?m:"transparent",strokeWidth:A?2:0},datum:t,id:e,label:y}):(T.push({type:"rect",x:w-S/2,y:M-I/2,w:S,h:I,style:{fill:z,opacity:N,stroke:A?m:p,strokeWidth:A?3:1},datum:t,id:e,label:y}),q.push({id:e,cx:w,cy:M,partition:d,semantic:f,label:y,stores:x,opacity:N,selected:A,node:b}))}const D=[];for(const t of e.edges){const e="string"==typeof t.source?t.source:t.source.id,n="string"==typeof t.target?t.target:t.target.id,o=E.get(e),r=E.get(n);if(!o||!r)continue;const i=!!u(t,l,!1),a=u(t,d,"internal")+"",s=P.get(e)||P.get(n)?Math.min(y,1.4*g):y,c=i?f.back:f[a]??f.internal;let h;if(i){const e=o.cx,t=o.cy+I/2,n=r.cx,i=r.cy+I/2,a=Math.max(48,.28*Math.abs(e-n))+I;h=`M${e},${t} C${e},${t+a} ${n},${i+a} ${n},${i}`}else{const e=o.cx+S/2,t=o.cy,n=r.cx-S/2,i=r.cy,a=(e+n)/2;h=`M${e},${t} C${a},${t} ${a},${i} ${n},${i}`}const m={type:"curved",pathD:h,style:{stroke:c,strokeWidth:i?b:x,fill:"none",opacity:s,...i?{strokeDasharray:"5 4",strokeLinecap:"round"}:{}},datum:t};D.push(m)}const B=0===q.length?null:nt("g",{className:"lineage-dag-glyphs",children:q.map(e=>function(e,t){const{w:n,h:o,lod:r}=t,i="icon"===r?Math.min(n,o):Math.min(o-14,26),a="icon"===r?0:8+i+8,s=null!=t.renderIcon?t.renderIcon({semantic:e.semantic,partition:e.partition,size:i,color:t.partColors[e.partition]??t.partColors.unknown??"#5a5a6a",node:e.node}):function(e,t,n){const o=t.startsWith("topic")?"T":{source:"SR",sink:"SK",filter:"FL",map:"MP",aggregate:"AG",reduce:"RD","join-this":"JN","join-other":"JN",merge:"MG",suppress:"SP",select:"SE",tostream:"TS"}[e]??"PR";return ot("g",{children:[nt("rect",{width:n,height:n,rx:4,fill:"rgba(255,255,255,0.08)",stroke:"rgba(255,255,255,0.18)"}),nt("text",{x:n/2,y:n/2+.5,textAnchor:"middle",dominantBaseline:"middle",fontSize:.42*n,fontWeight:700,fill:"var(--semiotic-text, #fff)",children:o})]})}(e.semantic,e.partition,i),c="full"===r,l="icon"!==r,d="full"===r&&t.showChips&&e.stores.length>0;return ot("g",{transform:`translate(${e.cx-n/2}, ${e.cy-o/2})`,opacity:e.opacity,style:{pointerEvents:"none"},children:[nt("g",{transform:`translate(${"icon"===r?(n-i)/2:8}, ${(o-i)/2})`,children:s}),l&&nt("foreignObject",{x:a,y:c?o/2-12:o/2-9,width:Math.max(8,n-a-8),height:18,style:{pointerEvents:"none"},children:nt("div",{title:e.label,style:{pointerEvents:"none",fontFamily:"var(--semiotic-font-family, inherit)",fontSize:"full"===r?12.5:11.5,fontWeight:600,color:"var(--semiotic-text, #f4f4f8)",lineHeight:"18px",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},children:e.label})}),c&&nt("text",{x:a,y:o/2-16,dominantBaseline:"middle",fontSize:9.5,fontWeight:500,fill:"var(--semiotic-text-secondary, #b9b9c8)",style:{textTransform:"uppercase",letterSpacing:"0.04em"},children:t.typeLabel?t.typeLabel({semantic:e.semantic,partition:e.partition,node:e.node}):e.partition.startsWith("topic")?"topic":e.semantic}),d&&e.stores.map((e,n)=>nt("rect",{x:a+15*n,y:o-10,width:12,height:5,rx:1.5,fill:t.chipColor,children:nt("title",{children:e.storeName})},e.storeName+n))]},e.id)}(e,{w:S,h:I,lod:C,partColors:h,chipColor:M,showChips:w,renderIcon:t.renderIcon,typeLabel:t.typeLabel}))});return{sceneNodes:T,sceneEdges:D,overlays:B}};import{jsx as ct,jsxs as lt}from"react/jsx-runtime";function dt(e,t){return e.length>t?e.slice(0,Math.max(1,t-1))+"…":e}var ut={rect:"process",round:"process",stadium:"terminal",subroutine:"subprocess",cylinder:"database",circle:"connector",diamond:"decision",hexagon:"preparation",flag:"process"};function ht(e,t,n,o,r,i,a,s){const c=t-o/2,l=n-r/2,d={fill:i,stroke:a,strokeWidth:s};switch(e){case"diamond":return ct("polygon",{points:`${t},${l} ${t+o/2},${n} ${t},${n+r/2} ${c},${n}`,...d});case"circle":return ct("circle",{cx:t,cy:n,r:Math.min(o,r)/2,...d});case"stadium":case"round":return ct("rect",{x:c,y:l,width:o,height:r,rx:"stadium"===e?r/2:8,ry:"stadium"===e?r/2:8,...d});case"hexagon":{const e=Math.min(.18*o,16);return ct("polygon",{points:`${c+e},${l} ${t+o/2-e},${l} ${t+o/2},${n} ${t+o/2-e},${n+r/2} ${c+e},${n+r/2} ${c},${n}`,...d})}case"cylinder":{const e=Math.min(.16*r,8),t=`M${c},${l+e} a${o/2},${e} 0 0 1 ${o},0`;return lt("g",{children:[ct("path",{d:`M${c},${l+e} a${o/2},${e} 0 0 0 ${o},0 v${r-2*e} a${o/2},${e} 0 0 1 ${-o},0 z`,...d}),ct("path",{d:t,fill:"none",stroke:a,strokeWidth:s})]})}case"subroutine":{const e=Math.min(8,.08*o);return lt("g",{children:[ct("rect",{x:c,y:l,width:o,height:r,rx:3,...d}),ct("line",{x1:c+e,y1:l,x2:c+e,y2:l+r,stroke:a,strokeWidth:s}),ct("line",{x1:c+o-e,y1:l,x2:c+o-e,y2:l+r,stroke:a,strokeWidth:s})]})}default:return ct("rect",{x:c,y:l,width:o,height:r,rx:4,...d})}}var ft=e=>{const t=e.config||{},n=e.dimensions.plot,o=t.direction??"TD",r="LR"===o||"RL"===o,i="BT"===o||"RL"===o,a=t.layerAccessor??"layer",s=t.rowAccessor??"row",c=t.labelAccessor??"label",l=t.shapeAccessor??"shape",d=t.edgeLabelAccessor??"label",h=t.nodeFill??"var(--semiotic-surface, #20242d)",f=t.nodeStroke??"var(--semiotic-border, #5a6573)",m=t.textColor??"var(--semiotic-text, #e6e6e6)",p=t.edgeColor??"var(--semiotic-text-secondary, #9aa0a6)",g=t.accentColor??"var(--semiotic-warning, #d49a00)";if(0===e.nodes.length)return{sceneNodes:[],overlays:null};const y=new Map;let x=0;for(const t of e.nodes){const e=Math.round(Number(u(t,a,0)));x=Math.max(x,e);const n=y.get(e)||[];n.push(t),y.set(e,n)}const b=x+1;let w=1;for(const e of y.values())e.sort((e,t)=>Number(u(e,s,0))-Number(u(t,s,0))),w=Math.max(w,e.length);const M=r?n.width:n.height,v=r?n.height:n.width,k=M/b,$=v/(w+1),A=Math.max(44,Math.min(t.nodeWidth??150,r?k-36:.92*$)),S=Math.max(26,Math.min(t.nodeHeight??46,r?.7*$:.5*k)),I=(r?A:S)/2+6,C=Math.max(1,M-2*I),N=e=>(r?n.x:n.y)+I+(b>1?(i?b-1-e:e)/(b-1)*C:C/2),z=new Map,F=[],W=[];for(const[e,t]of y)t.forEach((o,i)=>{const a=N(e),s=(r?n.y:n.x)+(i+1)/(t.length+1)*v,d=r?a:s,p=r?s:a,y=u(o,l,"rect")+"",x=u(o,c,o.id)+"";z.set(o.id,{cx:d,cy:p,shape:y}),F.push({type:"rect",x:d-A/2,y:p-S/2,w:A,h:S,style:{fill:"transparent",stroke:"transparent"},datum:{id:o.id,name:x,type:ut[y]??"process",shape:y},id:o.id,label:x}),W.push(lt("g",{children:[ht(y,d,p,A,S,h,"diamond"===y?g:f,1.5),ct("text",{x:d,y:p,textAnchor:"middle",dominantBaseline:"central",fontSize:13,fill:m,style:{pointerEvents:"none"},children:dt(x,Math.max(4,Math.floor((A-12)/7)))})]},"n-"+o.id))});const L=[];return e.edges.forEach((e,t)=>{const n="string"==typeof e.target?e.target:e.target.id,o=z.get("string"==typeof e.source?e.source:e.source.id),i=z.get(n);if(!o||!i)return;const a=r?o.cx+A/2:o.cx,s=r?o.cy:o.cy+S/2,c=r?i.cx-A/2:i.cx,l=r?i.cy:i.cy-S/2,h=r?`M${a},${s} C${(a+c)/2},${s} ${(a+c)/2},${l} ${c},${l}`:`M${a},${s} C${a},${(s+l)/2} ${c},${(s+l)/2} ${c},${l}`,g=Math.atan2(l-s,c-a),y=c-9*Math.cos(g),x=l-9*Math.sin(g),b=4.5*-Math.sin(g),w=4.5*Math.cos(g),M=`${c},${l} ${y+b},${x+w} ${y-b},${x-w}`,v=u(e,d,void 0),k=(a+c)/2,$=(s+l)/2;L.push(lt("g",{children:[ct("path",{d:h,fill:"none",stroke:p,strokeWidth:1.4}),ct("polygon",{points:M,fill:p}),"string"==typeof v&&v.length>0&&lt("g",{children:[ct("rect",{x:k-6.5*v.length/2-4,y:$-9,width:6.5*v.length+8,height:18,rx:3,fill:"var(--semiotic-bg, #11151c)",stroke:f,strokeWidth:.75}),ct("text",{x:k,y:$,textAnchor:"middle",dominantBaseline:"central",fontSize:11,fill:m,style:{pointerEvents:"none"},children:v})]})]},"e-"+t))}),{sceneNodes:F,overlays:lt("g",{className:"mermaid-dag",children:[L,W]})}};import{jsx as mt,jsxs as pt}from"react/jsx-runtime";function gt(e){return mt("rect",{className:e.className,x:e.x,y:e.y,width:Math.max(0,e.width),height:Math.max(0,e.height),rx:e.radius??10,ry:e.radius??10,fill:e.fill??"none",stroke:e.stroke,strokeWidth:e.strokeWidth??1.5,strokeDasharray:e.strokeDasharray,opacity:e.opacity??.6,style:{pointerEvents:"none"}},e.keyId)}function yt(e,t=0){let n=1/0,o=1/0,r=-1/0,i=-1/0;for(const t of e){const e=t.r??0;n>t.x-e&&(n=t.x-e),t.x+e>r&&(r=t.x+e),o>t.y-e&&(o=t.y-e),t.y+e>i&&(i=t.y+e)}return Number.isFinite(n)?{x:n-t,y:o-t,width:r-n+2*t,height:i-o+2*t}:null}function xt(e,t=0){if(!e.length)return null;const n="number"==typeof t?t:t.x??0,o="number"==typeof t?t:t.y??0;let r=1/0,i=1/0,a=-1/0,s=-1/0;for(const t of e){if(!Number.isFinite(t.x)||!Number.isFinite(t.y))continue;if(!Number.isFinite(t.width)||!Number.isFinite(t.height))continue;const e=Math.max(0,t.width),n=Math.max(0,t.height);r>t.x&&(r=t.x),i>t.y&&(i=t.y),t.x+e>a&&(a=t.x+e),t.y+n>s&&(s=t.y+n)}return Number.isFinite(r)?{x:r-n,y:i-o,width:a-r+2*n,height:s-i+2*o}:null}function bt(e){const t=e.fontSize??12;return null!=e.maxWidth&&e.text.length*t*.56>e.maxWidth?null:mt("text",{className:e.className,x:e.x,y:e.y,textAnchor:e.anchor??"middle",dominantBaseline:e.baseline??"middle",fontSize:t,fontWeight:e.fontWeight,fill:e.color,style:{pointerEvents:"none"},children:e.text},e.keyId)}function wt(e){const t=e.spacing??8;return{def:mt("pattern",{id:e.id,width:t,height:t,patternUnits:"userSpaceOnUse",patternTransform:`rotate(${e.angle??45})`,children:mt("line",{x1:0,y1:0,x2:0,y2:t,stroke:e.color??"currentColor",strokeWidth:e.strokeWidth??1,opacity:e.opacity??.5})},e.id),fill:`url(#${e.id})`}}function Mt(e){const t=e.orient??"bottom",n="bottom"===t||"top"===t,o=e.offset??0,r=e.tickLength??6,i=e.gridLength??0,a=e.labelGap??4,s=e.fontSize??11,c=e.color??"var(--semiotic-text-secondary, #888)",l=e.gridColor??c,d=e.format??(e=>e+""),u="top"===t||"left"===t?-1:1,h=e.ticks.length-1,f=e.ticks.map((f,m)=>{const p=e.scale(f),g=o+u*r,y=o-u*i,x=g+u*a;let b;b=e.labelAnchor?e.labelAnchor:n?e.edgeAnchor&&0===m?"start":e.edgeAnchor&&m===h?"end":"middle":"left"===t?"end":"start";const w=n?"top"===t?"auto":"hanging":"middle",M=n?{x:p,y:x}:{x:x,y:p};return pt("g",{children:[(r>0||i>0)&&mt("line",{...n?{x1:p,x2:p,y1:g,y2:y}:{x1:g,x2:y,y1:p,y2:p},stroke:i>0?l:c,strokeWidth:1,strokeDasharray:i>0?e.gridDasharray:void 0,opacity:i>0?.7:1}),mt("text",{x:M.x,y:M.y,textAnchor:b,dominantBaseline:w,fontSize:s,fontWeight:e.fontWeight,fill:c,children:d(f)})]},`tick-${f}-${m}`)});return mt("g",{className:e.className,style:{pointerEvents:"none"},children:f},e.keyId)}function vt(e){const t=e.stroke??"var(--semiotic-text, #f4f4f8)",n=e.strokeWidth??1,o=e.markRadius??0,r=e.labelX-e.markX,i=e.labelY-e.markY,a=Math.hypot(r,i)||1,s=e.markX+r/a*o,c=e.markY+i/a*o;let l;return l="elbow"===e.connector?`M${s},${c} L${s},${e.labelY} L${e.labelX},${e.labelY}`:"curve"===e.connector?`M${s},${c} Q${(s+e.labelX)/2},${c} ${e.labelX},${e.labelY}`:`M${s},${c} L${e.labelX},${e.labelY}`,pt("g",{className:e.className,style:{pointerEvents:"none"},children:[o>0&&mt("circle",{cx:e.markX,cy:e.markY,r:o,fill:"none",stroke:t,strokeWidth:n}),mt("path",{d:l,fill:"none",stroke:t,strokeWidth:n}),mt("text",{x:e.labelX,y:e.labelY,textAnchor:e.labelAnchor??"middle",dominantBaseline:e.labelBaseline??"hanging",fontSize:e.fontSize??11,fontWeight:e.fontWeight,fill:e.color??t,children:e.label})]},e.keyId)}import{jsx as kt,jsxs as $t}from"react/jsx-runtime";function At(e,t,n={}){const o=n.fingerprintRounds??3,r=[],i=new Set;for(const t of e)null==t.id||i.has(t.id)||(i.add(t.id),r.push(t.id));const{outAdj:a,inAdj:s,undirected:c}=Ft(r,t),l=Wt(r,a,s,c,o).map(e=>({ids:e.ids,nodeCount:e.nodeCount,edgeCount:e.edgeCount,sinkCount:e.sinkCount,sourceCount:e.sourceCount,directed:e.directed,motif:e.motif,descriptor:zt(e)})),d=new Map;for(const e of l){const t=d.get(e.motif);t?t.count+=1:d.set(e.motif,{motif:e.motif,descriptor:e.descriptor,count:1,directed:e.directed})}return{components:l,motifs:[...d.values()].sort((e,t)=>t.count-e.count),directedCount:l.filter(e=>e.directed).length,branchingCount:l.filter(e=>!e.directed).length}}function St(e){let t=2166136261;for(let n=0;e.length>n;n+=1)t^=e.charCodeAt(n),t=Math.imul(t,16777619);return(t>>>0).toString(36)}function It(e){return"string"==typeof e?e:e?.id}function Ct(e,t,n,o,r){const i=new Set(e);let a=new Map;for(const o of e){let e=0,r=0;for(const e of t.get(o)??[])i.has(e)&&(r+=1);for(const t of n.get(o)??[])i.has(t)&&(e+=1);a.set(o,`${e}:${r}`)}for(let o=0;r>o;o+=1){const o=new Map;for(const r of e){const e=[];for(const n of t.get(r)??[])i.has(n)&&e.push(a.get(n));const s=[];for(const e of n.get(r)??[])i.has(e)&&s.push(a.get(e));e.sort(),s.sort(),o.set(r,St(`${a.get(r)}>${e.join(",")}<${s.join(",")}`))}a=o}const s=e.map(e=>a.get(e)).sort();return St(`${e.length}#${o}#${s.join(";")}`)}function Nt(e,n,r,i,a,s,c){const{layer:l,layerCount:d}=function(e,t){const n=new Set(e),o=new Map,r=new Set,i=e=>{const a=o.get(e);if(void 0!==a)return a;if(r.has(e))return 0;r.add(e);let s=0;for(const o of t.get(e)??[])n.has(o)&&(s=Math.max(s,1+i(o)));return r.delete(e),o.set(e,s),s};let a=0;for(const t of e)a=Math.max(a,i(t));const s=new Map;for(const t of e)s.set(t,a-o.get(t));return{layer:s,layerCount:a+1}}(e.ids,i),u=Array.from({length:d},()=>[]);for(const t of e.ids)u[l.get(t)].push(t);const h=.14*Math.min(s.width,s.height),f=Math.max(1,s.width-2*h),m=Math.max(1,s.height-2*h),p=new Map,g=new Set(e.ids);for(let e=0;d>e;e+=1){let t=u[e];e>0&&(t=[...t].sort((e,t)=>y(e)-y(t)));const n=t.length,o=s.y+h+(1===d?.5:e/(d-1))*m;t.forEach((e,t)=>{p.set(e,{x:s.x+h+(1===n?.5:t/(n-1))*f,y:o})})}function y(e){let t=0,n=0;for(const o of a.get(e)??[]){const e=p.get(o);g.has(o)&&e&&(t+=e.x,n+=1)}return n>0?t/n:s.x+f/2}const x=u.reduce((e,t)=>Math.max(e,t.length),1),b=t(Math.min(c,f/(2.4*x),m/(2.4*d)),1.4,c),w=e.ids.map(e=>{const t=p.get(e);return{id:e,cx:t.x,cy:t.y,r:b,datum:n.get(e)??o({id:e}),category:r.get(e)??""}}),M=[];for(const t of e.ids){const e=p.get(t);for(const n of i.get(t)??[]){if(!g.has(n))continue;const t=p.get(n);M.push({x1:e.x,y1:e.y,x2:t.x,y2:t.y})}}return{nodes:w,edges:M}}function zt(e){const{nodeCount:t,edgeCount:n,sinkCount:o,sourceCount:r}=e;return 1===t?"isolate":2===t&&1===n?"pair":1===r&&1===o&&n===t-1?"chain of "+t:e.directed&&1===r&&n>t-1?"diamond / mesh":e.directed?`converging (${t})`:"branching → "+o}function Ft(e,t){const n=new Set(e),o=new Map,r=new Map,i=new Map;for(const t of e)o.set(t,new Set),r.set(t,new Set),i.set(t,new Set);for(const e of t){const t=e.source,a=e.target;n.has(t)&&n.has(a)&&t!==a&&(o.get(t).has(a)||(o.get(t).add(a),r.get(a).add(t),i.get(t).add(a),i.get(a).add(t)))}return{outAdj:o,inAdj:r,undirected:i}}function Wt(e,t,n,o,r){const i=new Set,a=[];for(const s of e){if(i.has(s))continue;const e=[s];i.add(s);const c=[];for(;e.length;){const t=e.pop();c.push(t);for(const n of o.get(t)??[])i.has(n)||(i.add(n),e.push(n))}const l=new Set(c);let d=0,u=0,h=0;for(const e of c){let o=0,r=0;for(const n of t.get(e)??[])l.has(n)&&(o+=1);for(const t of n.get(e)??[])l.has(t)&&(r+=1);h+=o,0===o&&(d+=1),0===r&&(u+=1)}a.push({ids:c,nodeCount:c.length,edgeCount:h,sinkCount:d,sourceCount:u,directed:1===d,motif:Ct(c,t,n,h,r)})}return a}var Lt=new e(8),jt=e=>{const t=e.config||{},n=e.dimensions.plot;if(!e.nodes.length)return{sceneNodes:[]};const i=t.sourceAccessor??"source",a=t.targetAccessor??"target",s=t.labelAccessor??"label",c=t.categoryAccessor??"category",l=t.nodeRadius??4,d=t.cellGap??16,h=t.bandGap??22,m=t.headerHeight??34,p=t.minCellForFull??38,g=t.maxCellSize??120,y=t.minCellSize??12,x=t.fingerprintRounds??3,b=!1!==t.groupByMotif,w=t.sort??"frequency",M=new Map,v=new Map,k=[];for(const t of e.nodes){const e=t.id;null==e||M.has(e)||(k.push(e),M.set(e,t.data??t),v.set(e,u(t,c,"")+""))}const $=[];for(const t of e.edges){const e=It(t.source??u(t,i,void 0)),n=It(t.target??u(t,a,void 0));null!=e&&null!=n&&$.push({source:e,target:n})}const{outAdj:A,inAdj:S,undirected:I}=Ft(k,$),C=Wt(k,A,S,I,x),N=new Map;if(b)for(const e of C){const t=N.get(e.motif);t?t.push(e):N.set(e.motif,[e])}else N.set("all",[...C].sort((e,t)=>t.nodeCount-e.nodeCount));const z=[...N.entries()];z.sort((e,t)=>"size"===w?t[1][0].nodeCount-e[1][0].nodeCount:"directedness"===w?Number(t[1][0].directed)-Number(e[1][0].directed):t[1].length-e[1].length);const F=St(k.join(",")+"|"+[...A.entries()].map(([e,t])=>e+">"+[...t].sort().join(".")).join(";")),W=f([Math.round(n.x),Math.round(n.y),Math.round(n.width),Math.round(n.height),d,h,m,p,g,y,x,b,w,l,z.map(([e,t])=>e+":"+t.length).join(","),F]),L=Lt.getOrCompute(W,()=>function(e,t){const{plot:n}=t,o=Math.max(40,n.width),{cell:r,cols:i}=(()=>{for(let r=t.maxCellSize;r>=t.minCellSize;r-=2){const i=Math.max(1,Math.floor((o+t.cellGap)/(r+t.cellGap)));let a=0;for(const[,n]of e)a+=t.headerHeight+Math.ceil(n.length/i)*(r+t.cellGap)+t.bandGap;if(n.height>=a)return{cell:r,cols:i}}return{cell:t.minCellSize,cols:Math.max(1,Math.floor((o+t.cellGap)/(t.minCellSize+t.cellGap)))}})(),a=[],s=[];let c=n.y;for(const[l,d]of e){const e=Math.ceil(d.length/i),u=c,h=u+t.headerHeight,f=r>=t.minCellForFull;d.forEach((e,o)=>{const s=n.x+o%i*(r+t.cellGap),c=h+Math.floor(o/i)*(r+t.cellGap);if(f){const n=Nt(e,t.nodeDatum,t.nodeCategory,t.outAdj,t.inAdj,{x:s,y:c,width:r,height:r},t.nodeRadius);a.push({component:e,lod:"full",cx:s+r/2,cy:c+r/2,glyphR:0,nodes:n.nodes,edges:n.edges})}else a.push({component:e,lod:"glyph",cx:s+r/2,cy:c+r/2,glyphR:Math.max(2.5,.36*r),nodes:[],edges:[]})});const m=Rt(d[0],t,{x:n.x,y:u+2,width:Math.min(t.headerHeight-6,40),height:t.headerHeight-6});s.push({motif:l,descriptor:zt(d[0]),count:d.length,directed:d[0].directed,x:n.x,y:u,width:o,height:t.headerHeight+e*(r+t.cellGap),exemplar:m}),c=h+e*(r+t.cellGap)+t.bandGap}return{cells:a,bands:s}}(z,{plot:n,cellGap:d,bandGap:h,headerHeight:m,minCellForFull:p,maxCellSize:g,minCellSize:y,nodeRadius:l,nodeDatum:M,nodeCategory:v,outAdj:A,inAdj:S})),j=e.theme.semantic||{},R=t.convergeColor??j.info??"#4c78a8",O=t.branchColor??j.warning??"#e8853a",E=t.edgeColor??j.border??"#9aa0aa",P=t.colorMode??"directedness",T={predicate:e.selection?.isActive?e.selection.predicate:null,highlight:t.highlight??null,dimOpacity:.14},q=t=>"motif"===P?e.resolveColor(t.motif):"category"===P||t.directed?R:O,D=[],B=[];for(const t of L.cells){const n=t.component,i=q(n);if("full"===t.lod){for(const e of t.edges)B.push({type:"line",x1:e.x1,y1:e.y1,x2:e.x2,y2:e.y2,style:{stroke:E,strokeWidth:1,opacity:.5},datum:null});for(const n of t.nodes){const t="category"===P&&n.category?e.resolveColor(n.category):i,o={type:"symbol",cx:n.cx,cy:n.cy,size:Math.PI*n.r*n.r,symbolType:"circle",style:{fill:t,opacity:r(n.datum,T)},datum:n.datum,id:n.id,label:u(n.datum,s,n.id)+""};D.push(o)}}else{const e=o({id:`motif-${n.motif}-${t.cx.toFixed(0)}-${t.cy.toFixed(0)}`,motif:n.motif,shape:zt(n),nodes:n.nodeCount,edges:n.edgeCount,sinks:n.sinkCount,sources:n.sourceCount,directedness:n.directed?"converging":"branching"}),a={type:"symbol",cx:t.cx,cy:t.cy,size:Math.PI*t.glyphR*t.glyphR,symbolType:n.directed?"circle":"diamond",style:{fill:i,opacity:r(e,T),stroke:E,strokeWidth:.75},datum:e,id:e.id+"",label:zt(n)};D.push(a)}}return{sceneNodes:D,sceneEdges:B,overlays:function(e,t){const n=[];for(const o of e){const e=o.directed?t.convergeColor:t.branchColor;if(n.push(gt({keyId:"band-"+o.motif,x:o.x-6,y:o.y-4,width:o.width+12,height:o.height+4,radius:8,stroke:e,strokeWidth:1,opacity:.28})),t.showExemplars&&o.exemplar){const r=o.exemplar;n.push($t("g",{style:{pointerEvents:"none"},children:[r.edges.map((e,n)=>kt("line",{x1:e.x1,y1:e.y1,x2:e.x2,y2:e.y2,stroke:t.edgeColor,strokeWidth:.75,opacity:.55},"exe-"+n)),r.nodes.map(t=>kt("circle",{cx:t.cx,cy:t.cy,r:Math.max(1.6,t.r),fill:e},"exn-"+t.id))]},"ex-"+o.motif))}if(t.showBandLabels){const e=o.x+(t.showExemplars?48:4);n.push(kt("text",{x:e,y:o.y+12,fontSize:13,fontWeight:600,fill:t.textColor,style:{pointerEvents:"none"},children:o.descriptor},"bl-"+o.motif)),n.push(kt("text",{x:e,y:o.y+27,fontSize:11,fill:t.subText,style:{pointerEvents:"none"},children:`×${o.count} · ${o.directed?"converges to 1 sink":"branches to ≥2 sinks"}`},"bc-"+o.motif))}}if(t.showLegend){const e=t.plot.x+t.plot.width-168,i=t.plot.y-2;n.push($t("g",{style:{pointerEvents:"none"},children:[kt("circle",{cx:e,cy:i,r:5,fill:t.convergeColor}),kt("text",{x:e+10,y:i+4,fontSize:11,fill:t.subText,children:"converges (1 sink)"}),kt("path",{d:(o=e,r=i+18,`M${o},${r-5} L${o+5},${r} L${o},${r+5} L${o-5},${r} Z`),fill:t.branchColor}),kt("text",{x:e+10,y:i+22,fontSize:11,fill:t.subText,children:"branches (≥2 sinks)"})]},"net-legend"))}var o,r;return kt("g",{className:"net-ensemble-overlays",children:n})}(L.bands,{convergeColor:R,branchColor:O,edgeColor:E,plot:n,showBandLabels:!1!==t.showBandLabels,showExemplars:!1!==t.showExemplars,showLegend:!1!==t.showLegend&&"directedness"===P,textColor:j.text??"var(--semiotic-text, #1a1a1a)",subText:j.textSecondary??"var(--semiotic-text-secondary, #888)"})}};function Rt(e,t,n){return e?Nt(e,t.nodeDatum,t.nodeCategory,t.outAdj,t.inAdj,n,3):null}import{jsx as Ot,jsxs as Et}from"react/jsx-runtime";var Pt=new e(12);function Tt(e){if(null==e)return NaN;if("number"==typeof e)return e;if(e instanceof Date)return e.getTime();const t=e+"",n=Number(t);if(!Number.isNaN(n)&&""!==t.trim())return n;const o=Date.parse(t);return Number.isNaN(o)?NaN:o}function qt(e,t,n){return t>e?t:e>n?n:e}var Dt=e=>{const t=e.config||{},n=e.dimensions.plot,o=t.columnAccessor??"column",i=t.rowAccessor??"row",a=t.sizeAccessor,c=t.colorAccessor,d=t.symbolAccessor,h=t.shadeAccessor,m=t.markerAccessor,p=t.iconAccessor,g=t.defaultSymbol??"circle",[y,x]=t.sizeRange??[2,8],b=t.shadeStrength??.72,w=t.shadeReverse??!1,M=t.rowMode??"banded",v=t.cellSizing??"proportional",S=t.proportionExponent??1,I=t.columnGap??16,C=t.rowGap??12,N=t.packPadding??1,z=t.iterations??12,F=!1!==t.showEnclosures,W=!1!==t.showColumnHeaders,L=!1!==t.showRowLabels,j=W?t.headerHeight??26:0,R=L?t.labelWidth??66:0,O=t.callouts&&t.callouts.length>0?t.footerHeight??30:0,E=n.x+R,P=n.y+j,T=Math.max(1,n.width-R),q=Math.max(1,n.height-j-O),D=[];for(const t of e.nodes){const e=t.data??t;D.push({id:t.id,col:u(t,o,"—")+"",row:u(t,i,"—")+"",sizeVal:a?Number(u(t,a,1)):1,colorKey:c?u(t,c,"")+"":"",symVal:d?u(t,d,"")+"":"",shadeVal:h?Tt(u(t,h,null)):NaN,marker:!!m&&!!u(t,m,!1),iconVal:p?u(t,p,"")+"":"",datum:e,size:0,packR:0,baseShape:"circle",iconShape:null})}if(0===D.length)return{sceneNodes:[]};let B=1/0,H=-1/0;if(a)for(const e of D)Number.isFinite(e.sizeVal)&&(B>e.sizeVal&&(B=e.sizeVal),e.sizeVal>H&&(H=e.sizeVal));t.sizeDomain&&([B,H]=t.sizeDomain),Number.isFinite(B)&&Number.isFinite(H)||(B=0,H=1);const Y=e=>{if(B>=H)return(y+x)/2;const t=Math.sqrt(qt((e-B)/(H-B),0,1));return y+t*(x-y)};let G=1/0,X=-1/0;if(h)for(const e of D)Number.isFinite(e.shadeVal)&&(G>e.shadeVal&&(G=e.shadeVal),e.shadeVal>X&&(X=e.shadeVal));t.shadeDomain&&([G,X]=t.shadeDomain);const V=e=>{if(!h||!Number.isFinite(e)||G>=X)return.5;const t=qt((e-G)/(X-G),0,1);return w?1-t:t},_=t.colorMap,K=new Map,U=(t,n)=>{let o=K.get(t);if(!o){const n=_&&_[t]||e.resolveColor(t);o=l(n,b),K.set(t,o)}return o(n)},Z=new Map;if(t.symbolMap)for(const[e,n]of Object.entries(t.symbolMap))Z.set(e,n);let Q=0;const J=t.iconMap,ee=e=>p&&J&&J[e]?J[e]:null,te=e=>p?"circle":(e=>{if(!d)return g;let t=Z.get(e);return t||(t=k[Q%k.length],Q++,Z.set(e,t)),t})(e.symVal),ne=t.maxAreaFraction??.4;let oe=0;const re=Array(D.length),ie=Array(D.length);for(let e=0;D.length>e;e++){const t=D[e],n=Y(t.sizeVal);re[e]=n,t.baseShape=te(t),t.iconShape=ee(t.iconVal);const o=$(t.baseShape,Math.PI*n*n);ie[e]=o,oe+=Math.PI*o*o}const ae=ne*T*q,se=oe>ae?Math.sqrt(ae/oe):1;for(let e=0;D.length>e;e++){const t=D[e],n=re[e]*se;t.size=Math.PI*n*n,t.packR=ie[e]*se}const ce=new Map,le=new Map;for(const e of D)ce.set(e.col,(ce.get(e.col)??0)+1),le.set(e.row,(le.get(e.row)??0)+1);const de=t.columnOrder?.filter(e=>ce.has(e))??[...ce.keys()].sort((e,t)=>(ce.get(t)??0)-(ce.get(e)??0)),ue=t.rowOrder?.filter(e=>le.has(e))??[...le.keys()].sort((e,t)=>(le.get(t)??0)-(le.get(e)??0)),he=f([Math.round(n.x),Math.round(n.y),Math.round(n.width),Math.round(n.height),j,R,O,M,v,S,I,C,N,z,y,x,B,H,ne,de.join(","),ue.join(","),D.length,Ht(D)]),fe=Pt.getOrCompute(he,()=>function(e,t){const n=new Map;for(const t of e){let e=n.get(t.col);e||(e=[],n.set(t.col,e)),e.push(t)}const o=t.columnOrder.filter(e=>n.has(e)),r=Math.max(1,t.innerW-t.columnGap*Math.max(0,o.length-1)),i=t.proportionExponent,a=o.map(e=>Math.pow(n.get(e).length,i)),c=a.reduce((e,t)=>e+t,0)||1,l=e=>"uniform"===t.cellSizing?r/o.length:a[e]/c*r,d=new Map,u=[];let h=t.innerX;for(let e=0;o.length>e;e++)u.push({col:o[e],x:h,w:l(e)}),h+=l(e)+t.columnGap;let f=1;const m=new Map,p=[],g=(e,t,n,o)=>{let r=m.get(e);r||(r={minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0},m.set(e,r)),r.minX>t-o&&(r.minX=t-o),t+o>r.maxX&&(r.maxX=t+o),r.minY>n-o&&(r.minY=n-o),n+o>r.maxY&&(r.maxY=n+o)},y=(e,n,o,r,i,a)=>{const s=e.map(e=>({id:e.id,r:e.packR})),c=function(e,t,n,o,r,i,a,s){const c=t+o/2,l=n+r/2,d=new Map,u=e.length;if(0===u)return d;if(1===u)return d.set(e[0].id,{px:c,py:l}),d;const h=function(e){let t=e>>>0||1;return()=>(t=Math.imul(t,1664525)+1013904223>>>0,t/4294967296)}(s),f=new Float64Array(u);let m=0;for(let t=0;u>t;t++)f[t]=e[t].r+i,f[t]>m&&(m=f[t]);const p=Math.max(1,Math.round(Math.sqrt(u*o/Math.max(1,r)))),g=new Float64Array(u),y=new Float64Array(u),x=o/p,b=r/Math.ceil(u/p);for(let e=0;u>e;e++){const o=e%p,r=Math.floor(e/p);g[e]=t+(o+.3+.4*h())*x,y[e]=n+(r+.3+.4*h())*b}const w=Math.max(0,Math.min(a,14)),M=Math.max(1,2*m),v=new Map,k=Math.max(1,Math.ceil(o/M)+3),$=(e,t)=>(t+1)*k+(e+1);for(let e=0;w>e;e++){v.clear();for(let e=0;u>e;e++){const o=$(Math.floor((g[e]-t)/M),Math.floor((y[e]-n)/M)),r=v.get(o);r?r.push(e):v.set(o,[e])}for(let e=0;u>e;e++){const o=Math.floor((g[e]-t)/M),r=Math.floor((y[e]-n)/M);for(let t=-1;1>=t;t++)for(let n=-1;1>=n;n++){const i=v.get($(o+t,r+n));if(i)for(let t=0;i.length>t;t++){const n=i[t];if(e>=n)continue;let o=g[n]-g[e],r=y[n]-y[e];const a=f[e]+f[n],s=o*o+r*r;if(a*a>s)if(s>1e-9){const t=Math.sqrt(s),i=(a-t)/2;o/=t,r/=t,g[e]-=o*i,y[e]-=r*i,g[n]+=o*i,y[n]+=r*i}else{const t=2.39996323*e;g[e]+=Math.cos(t)*f[e],y[e]+=Math.sin(t)*f[e]}}}}for(let e=0;u>e;e++){const i=f[e],a=t+i,s=t+o-i,d=n+i,u=n+r-i;g[e]=s>a?qt(g[e],a,s):c,y[e]=u>d?qt(y[e],d,u):l}}for(let t=0;u>t;t++)d.set(e[t].id,{px:g[t],py:y[t]});return d}(s,n,o,r,i,t.packPadding,t.iterations,f++);let l=1/0,u=1/0,h=-1/0,m=-1/0;for(const e of s){const t=c.get(e.id);d.set(e.id,{px:t.px,py:t.py}),g(a,t.px,t.py,e.r),l>t.px-e.r&&(l=t.px-e.r),t.px+e.r>h&&(h=t.px+e.r),u>t.py-e.r&&(u=t.py-e.r),t.py+e.r>m&&(m=t.py+e.r)}return Number.isFinite(l)?{x:l-Bt,y:u-Bt,w:h-l+2*Bt,h:m-u+2*Bt}:null};if("banded"===t.rowMode){const r=new Map;for(const t of e)r.set(t.row,(r.get(t.row)??0)+1);const a=t.rowOrder.filter(e=>r.has(e)),c=Math.max(1,t.innerH-t.rowGap*Math.max(0,a.length-1)),l=a.map(e=>Math.pow(r.get(e),i)),h=l.reduce((e,t)=>e+t,0)||1,f=new Map;let p=t.innerY+t.innerH;for(let e=0;a.length>e;e++){const n="uniform"===t.cellSizing?c/a.length:l[e]/h*c,o=p-n;f.set(a[e],{y:o,h:n}),p=o-t.rowGap}o.forEach((e,t)=>{const o=s(n.get(e),e=>e.row);for(const e of a){const n=o.get(e),r=f.get(e);n&&r&&y(n,u[t].x,r.y,u[t].w,r.h,e)}});const g=[],x=new Map;for(const e of a){const t=f.get(e);x.set(e,t.y+t.h/2);const n=m.get(e);n&&Number.isFinite(n.minX)&&g.push({x:n.minX-Bt,y:n.minY-Bt,w:n.maxX-n.minX+2*Bt,h:n.maxY-n.minY+2*Bt})}return{positions:d,enclosures:g,colBands:u,rowLabelY:x}}const x=new Map;o.forEach((e,o)=>{const r=s(n.get(e),e=>e.row),a=t.rowOrder.filter(e=>r.has(e)),c=Math.max(1,t.innerH-t.rowGap*Math.max(0,a.length-1)),l=a.map(e=>Math.pow(r.get(e).length,i)),d=l.reduce((e,t)=>e+t,0)||1;let h=t.innerY+t.innerH;a.forEach((e,n)=>{const i="uniform"===t.cellSizing?c/a.length:l[n]/d*c,s=h-i,f=y(r.get(e),u[o].x,s,u[o].w,i,e);if(f){p.push(f);const t=x.get(e)??{sum:0,n:0};t.sum+=f.y+f.h/2,t.n+=1,x.set(e,t)}h=s-t.rowGap})});const b=new Map;for(const[e,t]of x)b.set(e,t.sum/t.n);return{positions:d,enclosures:p,colBands:u,rowLabelY:b}}(D,{columnOrder:de,rowOrder:ue,innerX:E,innerY:P,innerW:T,innerH:q,rowMode:M,cellSizing:v,proportionExponent:S,columnGap:I,rowGap:C,packPadding:N,iterations:z})),me=e.selection,pe=me?.isActive?me.predicate:null,ge=t.highlight??null,ye=t.dimOpacity??.16,xe=t.markStroke,be=t.markStrokeWidth??0,we=t.markerColor??"#ffffff",Me=t.iconColor??"rgba(255,255,255,0.92)",ve=t.iconStrokeWidth??1,ke=t.iconScale??.72,$e=[],Ae=[],Se=[];for(const e of D){const t=fe.positions.get(e.id);if(!t)continue;const n=r(e.datum,{highlight:ge,predicate:pe,dimOpacity:ye}),o={type:"symbol",cx:t.px,cy:t.py,size:e.size,symbolType:e.baseShape,style:{fill:U(e.colorKey,V(e.shadeVal)),opacity:n,...xe?{stroke:xe,strokeWidth:be}:{}},datum:e.datum,id:e.id,label:e.id+""};if($e.push(o),e.iconShape){const o=Math.sqrt(e.size/Math.PI)*ke,r=$(e.iconShape,100);Se.push({x:t.px,y:t.py,size:r>0?o/r*100*(o/r):Math.PI*o*o,shape:e.iconShape,opacity:n})}e.marker&&n>ye+.001&&Ae.push({x:t.px,y:t.py,r:Math.max(1,.4*Math.sqrt(e.size/Math.PI))})}const Ie=[];if(t.callouts&&t.callouts.length>0){const e=t.calloutColor??"var(--semiotic-text, #f4f4f8)",o=n.y+n.height-(O>0?.45*O:9),r=[];for(let e=0;t.callouts.length>e;e++){const n=t.callouts[e],o=D.find(e=>e.datum[n.field]+""==n.value+"");if(!o)continue;const i=fe.positions.get(o.id);i&&r.push({c:n,ci:e,px:i.px,py:i.py,markR:Math.sqrt(o.size/Math.PI)})}const i=r.filter(e=>null==e.c.at).sort((e,t)=>e.px-t.px),a=new Map;i.forEach((e,t)=>{a.set(e.ci,E+(t+.5)/i.length*T)});for(const t of r){const r=t.c;let i=a.get(t.ci)??t.px,s=o;const c=r.connector??(a.has(t.ci)?"elbow":"straight");"object"==typeof r.at&&r.at?(i=r.at.x,s=r.at.y):"number"==typeof r.at&&(s=n.y+r.at*n.height),Ie.push({keyId:"callout-"+t.ci,markX:t.px,markY:t.py,labelX:i,labelY:s,label:r.label,connector:c,markRadius:Math.max(t.markR+3,7),stroke:e,color:e,fontSize:11,labelAnchor:"middle",labelBaseline:"auto"})}}const Ce=function(e,t){const n=t.columnLabel??(e=>e),o=t.rowLabel??(e=>e);return Et("g",{className:"packed-cluster-matrix-chrome",style:{pointerEvents:"none"},children:[t.showEnclosures&&e.enclosures.map((e,n)=>gt({keyId:"enc-"+n,x:e.x,y:e.y,width:e.w,height:e.h,radius:t.enclosureRadius,stroke:t.enclosureColor,strokeWidth:t.enclosureWidth,opacity:t.enclosureOpacity})),t.iconMarks.length>0&&Ot("g",{className:"packed-cluster-matrix-icons",children:t.iconMarks.map((e,n)=>Ot("path",{d:A(e.shape,e.size),transform:`translate(${e.x},${e.y})`,fill:"none",stroke:t.iconColor,strokeWidth:t.iconStrokeWidth,opacity:e.opacity},"ic-"+n))}),t.markerDots.length>0&&Ot("g",{className:"packed-cluster-matrix-markers",children:t.markerDots.map((e,n)=>Ot("circle",{cx:e.x,cy:e.y,r:e.r,fill:t.markerColor},"mk-"+n))}),t.showColumnHeaders&&e.colBands.map((e,o)=>bt({keyId:"col-"+o,text:n(e.col),x:e.x+e.w/2,y:t.headerY,anchor:"middle",fontSize:t.headerFontSize,fontWeight:700,color:t.headerColor})),t.showRowLabels&&[...e.rowLabelY].map(([e,n])=>bt({keyId:"row-"+e,text:o(e),x:t.labelX,y:n,anchor:"end",fontSize:t.labelFontSize,fontWeight:600,color:t.labelColor})),t.callouts.map(e=>vt(e))]})}(fe,{markerDots:Ae,markerColor:we,iconMarks:Se,iconColor:Me,iconStrokeWidth:ve,callouts:Ie,plot:n,showEnclosures:F,showColumnHeaders:W,showRowLabels:L,enclosureColor:t.enclosureColor??"var(--semiotic-text, #f4f4f8)",enclosureRadius:t.enclosureRadius??9,enclosureOpacity:t.enclosureOpacity??.5,enclosureWidth:t.enclosureWidth??1.5,headerColor:t.headerColor??"var(--semiotic-text, #f4f4f8)",labelColor:t.labelColor??"var(--semiotic-text-secondary, #b9b9c8)",headerFontSize:t.headerFontSize??13,labelFontSize:t.labelFontSize??11,headerY:n.y+.62*j,labelX:n.x+R-10,columnLabel:t.columnLabel,rowLabel:t.rowLabel});return{sceneNodes:$e,overlays:Ce}},Bt=4;function Ht(e){let t=2166136261;const n=e=>{for(let n=0;e.length>n;n++)t^=e.charCodeAt(n),t=Math.imul(t,16777619)};for(const o of e)n(o.id),n(o.col),n(o.row),t^=Math.round(8*o.packR),t=Math.imul(t,16777619);return(t>>>0).toString(36)}import*as Yt from"react";var Gt=e=>{const t=e.config,{plot:o}=e.dimensions;if(0>=o.width||0>=o.height)return{nodes:[]};const r=h(t.categoryAccessor),i=h(t.stackBy),a=e=>{const n="function"==typeof t.valueAccessor?t.valueAccessor(e):e[t.valueAccessor],o=Number(n);return Number.isFinite(o)&&o>0?o:0},s=t.gutter??2,c="string"==typeof t.categoryAccessor?t.categoryAccessor:"category",l="string"==typeof t.stackBy?t.stackBy:"stack",d="string"==typeof t.valueAccessor?t.valueAccessor:"value",u=(e,t,o)=>n(n=>{n("category",e),n("stack",t),n("value",o),"category"!==c&&n(c,e),"stack"!==l&&n(l,t),"value"!==d&&n(d,o)}),f=!1!==t.showCategoryLabels,m=Math.max(0,o.height-(t.labelPadding??(f?22:0))),p=[],g=new Map,y=[],x=new Set,b=new Map;for(const t of e.data){const e=r(t)+"",n=i(t)+"",o=a(t);g.has(e)||(p.push(e),g.set(e,0),b.set(e,new Map)),x.has(n)||(x.add(n),y.push(n)),g.set(e,(g.get(e)??0)+o);const s=b.get(e);s.set(n,(s.get(n)??0)+o)}const w=t.categoryOrder?Xt(t.categoryOrder,p,e=>g.has(e)):p,M=t.stackOrder?Xt(t.stackOrder,y,()=>!0):y,v=w.reduce((e,t)=>e+(g.get(t)??0),0);if(0>=v)return{nodes:[]};const k=Math.max(0,o.width-s*Math.max(0,w.length-1)),$=[],A=[];let S=o.x;for(const t of w){const n=g.get(t)??0,r=n/v*k;if(0>=r)continue;A.push({cat:t,x:S,w:r});const i=b.get(t);let a=o.y;for(const o of M){const s=i.get(o)??0;if(0>=s)continue;const c=s/n*m;$.push({type:"rect",x:S,y:a,w:r,h:c,style:{fill:e.resolveColor(o),stroke:"none"},datum:u(t,o,s),group:o}),a+=c}S+=r+s}return{nodes:$,overlays:f&&A.length>0?function(e,t,n){const o=e.map((e,o)=>bt({keyId:"marimekko-label-"+o,text:e.cat,x:e.x+e.w/2,y:t+12,anchor:"middle",baseline:"auto",maxWidth:e.w-4,fontSize:12,color:n}));return Yt.createElement(Yt.Fragment,null,...o)}(A,o.y+m+4,`var(--semiotic-text, ${e.theme.semantic.text??"currentColor"})`):null}};function Xt(e,t,n){const o=new Set,r=[];for(const t of e)n(t)&&!o.has(t)&&(o.add(t),r.push(t));for(const e of t)o.has(e)||r.push(e);return r}import*as Vt from"react";var _t=e=>{const t=e.config,{plot:o}=e.dimensions;if(0>=o.width||0>=o.height||0===e.data.length)return{nodes:[]};const r=t.rowHeight??28,i=t.rowGap??12,a=!1!==t.showLabels,s=a?t.labelWidth??120:0,c=!1!==t.showTicks,l=c?14:0,d=t.tickFormat??(e=>e.toLocaleString()),u=o.x+s,f=Math.max(0,o.width-s);if(0>=f)return{nodes:[]};const m=h(t.categoryAccessor),p=e=>{const t=Number(e);return Number.isFinite(t)&&t>0?t:0},g=e=>p("function"==typeof t.valueAccessor?t.valueAccessor(e):e[t.valueAccessor]),y=e=>p("function"==typeof t.targetAccessor?t.targetAccessor(e):e[t.targetAccessor]),x=e=>{const n="function"==typeof t.rangesAccessor?t.rangesAccessor(e):e[t.rangesAccessor];return Array.isArray(n)?n.map(p).sort((e,t)=>e-t):[]},b="string"==typeof t.categoryAccessor?t.categoryAccessor:"metric",w="string"==typeof t.valueAccessor?t.valueAccessor:"value",M="string"==typeof t.targetAccessor?t.targetAccessor:"target",v=t.actualColor??e.theme.semantic.primary??"#3b6cb1",k=e.theme.semantic.text??"currentColor",$=t.targetColor??`var(--semiotic-text, ${k})`,A=[`var(--semiotic-surface, ${e.theme.semantic.surface??"#e8eaed"})`,`var(--semiotic-grid, ${e.theme.semantic.grid??"#cdd1d6"})`,`var(--semiotic-border, ${e.theme.semantic.border??"#a3a8af"})`],S=`var(--semiotic-text, ${k})`,I=`var(--semiotic-text-secondary, ${e.theme.semantic.textSecondary??"#888"})`,C=[],N=[];for(let t=0;e.data.length>t;t++){const a=e.data[t],s=x(a),c=g(a),d=y(a),h=Math.max(c,d,...s.length?s:[0]);if(0>=h)continue;const p=o.y+t*(r+i+l);if(p+r+l>o.y+o.height)break;N.push({yTop:p,label:m(a),actual:c,target:d,maxVal:h});const k=e=>u+e/h*f,S=m(a),I=e=>n(t=>{t("metric",S),"metric"!==b&&t(b,S),e(t)});let z=u;for(let e=0;s.length>e;e++){const t=k(s[e]),n=t-z;n>0&&C.push({type:"rect",x:z,y:p,w:n,h:r,style:{fill:A[Math.min(e,A.length-1)],stroke:"none"},datum:I(t=>{t("range",e),t("rangeValue",s[e]),t("kind","range")}),group:"range-"+e}),z=t}const F=Math.max(6,Math.floor(.45*r));C.push({type:"rect",x:u,y:p+(r-F)/2,w:k(c)-u,h:F,style:{fill:v,stroke:"none"},datum:I(e=>{e("value",c),e("kind","actual"),"value"!==w&&e(w,c)}),group:"actual"});const W=3,L=Math.floor(.8*r);C.push({type:"rect",x:k(d)-W/2,y:p+(r-L)/2,w:W,h:L,style:{fill:$,stroke:"none"},datum:I(e=>{e("target",d),e("kind","target"),"target"!==M&&e(M,d)}),group:"target"})}const z=[];for(let e=0;N.length>e;e++){const t=N[e];if(a&&z.push(bt({keyId:"bullet-label-"+e,text:t.label,x:o.x+s-8,y:t.yTop+r/2,anchor:"end",baseline:"middle",fontSize:13,fontWeight:500,color:S})),c){const n=5,o=t.yTop+r+2;for(let r=0;n>r;r++){const i=t.maxVal*r/(n-1),a=u+i/t.maxVal*f;z.push(Vt.createElement("line",{key:`bullet-tick-${e}-${r}`,x1:a,x2:a,y1:o,y2:o+3,stroke:I,strokeWidth:1}),bt({keyId:`bullet-ticktext-${e}-${r}`,text:d(i),x:a,y:o+12,anchor:0===r?"start":r===n-1?"end":"middle",baseline:"auto",fontSize:10,color:I}))}}}return{nodes:C,overlays:z.length>0?Vt.createElement(Vt.Fragment,null,...z):null}};import*as Kt from"react";import{scaleLinear as Ut}from"d3-scale";var Zt=e=>{const t=e.config,{plot:n}=e.dimensions,o=t.fields??[];if(2>o.length||0>=n.width||0>=n.height)return{nodes:[]};if(0===e.data.length)return{nodes:[]};const i={};for(const n of o){if(t.domains?.[n]){i[n]=t.domains[n];continue}let o=1/0,r=-1/0;for(const t of e.data){const e=Number(t[n]);Number.isFinite(e)&&(o>e&&(o=e),e>r&&(r=e))}i[n]=Number.isFinite(o)&&Number.isFinite(r)&&o!==r?[o,r]:[0,1]}const a=!1!==t.showAxes,s=a?t.axisLabelPadding??24:8,c=a?18:8,l=o.map(e=>Ut().domain(i[e]).range([n.y+n.height-c,n.y+s])),d=o.map((e,t)=>1===o.length?n.x+n.width/2:n.x+t/(o.length-1)*n.width),u=t.colorBy?"function"==typeof t.colorBy?t.colorBy:e=>(e[t.colorBy]??"")+"":null,h=t.opacity??.45,f=t.strokeWidth??1.25,m=e.theme.semantic.primary??"#3b6cb1",p=t.dimmedOpacity??.08,g=t.highlightFn,y=[],x=[];for(const n of e.data){const i=u?e.resolveColor(u(n)+""):m,a=!g||g(n),s=r(n,{predicate:g,baseOpacity:h,dimOpacity:p,brighten:.4}),c=a?x:y;for(let e=0;o.length-1>e;e++){const t=Number(n[o[e]]),r=Number(n[o[e+1]]);if(!Number.isFinite(t)||!Number.isFinite(r))continue;const u={type:"connector",x1:d[e],y1:l[e](t),x2:d[e+1],y2:l[e+1](r),style:{stroke:i,strokeWidth:g&&a?f+.75:f,opacity:s,fill:"none"},datum:n};c.push(u)}if(t.showPoints)for(let e=0;o.length>e;e++){const t=Number(n[o[e]]);if(!Number.isFinite(t))continue;const r={type:"point",x:d[e],y:l[e](t),r:2.5,style:{fill:i,stroke:"none",opacity:Math.min(1,s+.3)},datum:n};c.push(r)}}let b=null;if(a){const r=`var(--semiotic-border, ${e.theme.semantic.border??"#aaa"})`,a=`var(--semiotic-text, ${e.theme.semantic.text??"currentColor"})`,u=`var(--semiotic-text-secondary, ${e.theme.semantic.textSecondary??"#888"})`,h=n.y+s,f=n.y+n.height-c,m=[];for(let e=0;o.length>e;e++){const c=o[e],p=d[e],g=t.tickFormat?.[c]??(e=>e.toLocaleString());m.push(Kt.createElement("line",{key:"pc-axis-line-"+e,x1:p,x2:p,y1:h,y2:f,stroke:r,strokeWidth:1})),m.push(bt({keyId:"pc-axis-label-"+e,text:c,x:p,y:n.y+s-8,anchor:"middle",baseline:"auto",fontSize:12,fontWeight:600,color:a}));const[y,x]=i[c],b=5;for(let t=0;b>t;t++){const n=y+(x-y)*t/(b-1),o=l[e](n);m.push(Kt.createElement("line",{key:`pc-tick-${e}-${t}`,x1:p-3,x2:p+3,y1:o,y2:o,stroke:r,strokeWidth:1}),bt({keyId:`pc-ticktext-${e}-${t}`,text:g(n),x:p+6,y:o+3,anchor:"start",baseline:"auto",fontSize:10,color:u}))}}b=Kt.createElement(Kt.Fragment,null,...m)}return{nodes:y.concat(x),overlays:b}};import{jsx as Qt,jsxs as Jt}from"react/jsx-runtime";var en=1.75,tn="#222222";function nn(e,t){return e.topRadius+(t-e.height)/e.height*(e.topRadius-e.bottomRadius)}function on(e,t){return function(e,t,n){return Math.PI*n/3*(e*e+e*t+t*t)}(nn(e,t),e.bottomRadius,t)}function rn(e,t){const n=(e.topRadius+e.bottomRadius)/2,o=Math.PI*n*n;let r=t/o,i=t-on(e,r),a=0;for(;100>a&&Math.abs(i)>1e-4;)r+=i/o,i=t-on(e,r),a++;return r}function an(e,t){const n=43758.5453*Math.sin(12.9898*e+78.233);return 2*(n-Math.floor(n)-.5)*t}function sn(e,t){if(t>e||2*t>e)return[{x:0,y:0}];const n=[],o=e=>{let r=Math.floor(2*Math.PI*e/(2*t));1>r&&(r=1);const i=0*e,a=Math.hypot(1*e-e*Math.cos(2*Math.PI/r),i-e*Math.sin(2*Math.PI/r));2*t>a&&r>1&&r--;for(let t=0;r>t;t++)n.push({x:e*Math.cos(2*t*Math.PI/r),y:e*Math.sin(2*t*Math.PI/r)});const s=e-2*t;t>s?e>2*t&&n.push({x:0,y:0}):o(s)};return o(e-t),n}function cn(e,t,n){const o=[];let r=n,i=0;for(;r>0&&60>i;){const n=t*(1+2*i),a=sn(nn(e,n),t),s=a.length-r,c=s>1?a.slice(Math.floor(s/2),Math.floor(s/2)+r):a,l=e.height-n;if(c.forEach((e,t)=>{o.push({x:e.x+an(97*i+t,.15),z:l+an(31*i+t,.05)})}),r-=c.length,i++,0===c.length)break}return{pearls:o,layers:i}}function ln(e,t,n,o){if(0>=o)return[];const r=function(e,t,n){let o=n,r=0;for(;o>0&&60>r;){const n=nn(e,t+.875*(1+2*r));o-=Math.max(1,Math.floor(2*n/en)),r++}return r}(e,t,o),i=Math.max(t,n-r*en)+.875,a=[];let s=0;for(let t=0;r>t&&o>s;t++){const n=i+en*t,r=nn(e,n),c=Math.max(1,Math.floor(2*r/en)),l=(2*r-c*en)/(c+1),d=-r+l,u=e.height-n-.875-.1;for(let e=0;c>e&&o>s;e++)a.push({cx:d+(l+en)*e+.875,cy:u+.875,rotation:an(53*t+e,10)}),s++}return a}function dn(e,t){const n=Number(e);return Number.isFinite(n)?n:t}var un=e=>{const t=e.config,{plot:n}=e.dimensions;if(0>=n.width||0>=n.height)return{nodes:[]};const r=h(t.categoryAccessor??"name"),i=h(t.teaVolumeAccessor??"teaVolume"),a=h(t.bobaVolumeAccessor??"bobaVolume"),s=h(t.iceVolumeAccessor??"iceVolume"),c=h(t.cupHeightAccessor??"cupHeight"),l=h(t.cupTopRadiusAccessor??"cupTopRadius"),d=h(t.cupBottomRadiusAccessor??"cupBottomRadius"),u=h(t.bobaRadiusAccessor??"bobaRadius"),f=t.cupWidthRatio??.82,p=e.scales.o,g=p.bandwidth(),y=Math.max(1,n.height-26-8),x=n.y+8,b=[],w=[];for(const t of e.data){const n=r(t)+"",h=p(n);if(null==h)continue;const M={height:dn(c(t),15.5),topRadius:dn(l(t),4.75),bottomRadius:dn(d(t),3.75)},v=dn(u(t),.6),k=Math.max(0,dn(i(t),450)),$=Math.max(0,dn(a(t),110)),A=Math.max(0,dn(s(t),135)),S=Math.PI*v*v,I=Math.floor($/S),C=I*S,N=Math.floor(A/5.359375),z=N*en*en*en,F=k+C+z,W=rn(M,F),L=Math.min(M.height,Math.max(0,W)),j=nn(M,L),{pearls:R,layers:O}=cn(M,v,I),E=L,P=ln(M,O*v*2,E,N),T=M.height-20.32,q=Math.min(0,T),D=Math.min(g*f/(2*(M.topRadius+1)),y/(M.height-q)),B=h+g/2,H=e=>B+e*D,Y=e=>x+(e-q)*D,G=H(-(M.topRadius+1)),X=H(M.topRadius+1),V=Y(q),_=Y(M.height),K=o({name:n,teaVolume:k,bobaVolume:Math.round(C),iceVolume:Math.round(z),totalVolume:Math.round(F),numBobas:I,numIce:N,kind:"boba cup"});b.push({type:"rect",x:G,y:V,w:Math.max(1,X-G),h:Math.max(1,_-V),style:{fill:"rgba(0,0,0,0)",stroke:"none"},datum:K,group:n,_transitionKey:"boba-"+m(n)});const U=M.height-E,Z=m(n),Q=e.resolveColor(n);w.push(Jt("g",{children:[k>0?Qt("path",{d:`M${H(-j)},${Y(U)} L${H(-M.bottomRadius)},${Y(M.height)} L${H(M.bottomRadius)},${Y(M.height)} L${H(j)},${Y(U)} z`,fill:"#D2B799"}):null,R.map((e,t)=>Qt("circle",{cx:H(e.x),cy:Y(e.z),r:v*D,fill:"#222222",opacity:.5},"p-"+t)),P.map((e,t)=>Qt("rect",{x:H(e.cx)-.95*en*D/2,y:Y(e.cy)-.95*en*D/2,width:.95*en*D,height:.95*en*D,rx:2,fill:"#a5f2f3",opacity:.85,transform:`rotate(${e.rotation} ${H(e.cx)} ${Y(e.cy)})`},"i-"+t)),Qt("path",{d:`M${H(-M.topRadius)},${Y(0)} L${H(-M.bottomRadius)},${Y(M.height)} L${H(M.bottomRadius)},${Y(M.height)} L${H(M.topRadius)},${Y(0)}`,fill:"none",stroke:tn,strokeWidth:2.5}),Qt("line",{x1:H(-(M.topRadius+1)),y1:Y(0),x2:H(M.topRadius+1),y2:Y(0),stroke:tn,strokeWidth:3,strokeLinecap:"round"}),k>0?Qt("path",{d:`M${H(-.635)},${Y(T)} L${H(-.635)},${Y(M.height-.4)} L${H(.635)},${Y(M.height-1.27-.4)} L${H(.635)},${Y(T)} z`,fill:"#4F91CB",stroke:tn,strokeWidth:1,opacity:.78}):null,Qt("text",{x:B,y:_+16,textAnchor:"middle",fontSize:12,fontWeight:600,fill:"var(--semiotic-text, #333)",children:n}),Qt("text",{x:B,y:_+30,textAnchor:"middle",fontSize:10,fill:Q,children:`${I} pearls · ${Math.round(F)} cm³`})]},"boba-"+Z))}return{nodes:b,overlays:Qt("g",{className:"semiotic-boba",style:{pointerEvents:"none"},children:w})}},hn=["naturalGas","coal","nuclear","hydro","wind","solar","other"],fn={naturalGas:"Natural gas",coal:"Coal",nuclear:"Nuclear",hydro:"Hydro",wind:"Wind",solar:"Solar",other:"Other"},mn={tight:5,watch:12,comfortable:20};function pn(e,t=0){return"number"==typeof e&&Number.isFinite(e)?e:t}function gn(e,t={}){const n=t.fuels??hn,o=!0===t.includeZero,r=[];for(const t of e)if(t&&"number"==typeof t.t)for(const e of n){const n=pn(t.fuels?.[e]);(o||n>0)&&r.push({t:t.t,fuel:e,fuelLabel:fn[e],mw:n,ba:t.ba})}return r}function yn(e){const t=[];for(const n of e){if(!n||"number"!=typeof n.t)continue;const e=pn(n.demandMw),o=n.forecastMw;"number"==typeof o&&Number.isFinite(o)&&t.push({t:n.t,a:e,b:o,demandMw:e,forecastMw:o,errorMw:e-o,ba:n.ba})}return t}function xn(e){const t=pn(e.demand);if(0>=t)return 0;const n=pn(e.capacityOrNetGen),o=pn(e.interchange);return(n+(0>o?-o:0)-t)/t*100}function bn(e){return e.filter(e=>e&&"number"==typeof e.t).map(e=>{const t=pn(e.demandMw),n=pn(e.netGenMw),o=xn({demand:t,capacityOrNetGen:n,interchange:e.interchangeMw});return{t:e.t,ba:e.ba,reserveMarginPct:o,netLoadMw:t,demandMw:t,netGenMw:n}})}function wn(e={},t={}){const{watch:n,comfortable:o}={...mn,...e},r=t.field,i=r?{field:r}:{},a=t.tightHatch??{type:"hatch",background:"var(--semiotic-danger, #c2410c)",stroke:"rgba(255, 240, 200, 0.55)",spacing:5,angle:-35,lineWidth:1.25,lineOpacity:.9};return[{id:"reserve-comfortable",label:`Comfortable (≥ ${o}%)`,when:{...i,gte:o},style:{fill:t.comfortableFill??"var(--semiotic-success, #16a34a)",fillOpacity:.85}},{id:"reserve-watch",label:`Watch (< ${o}%, ≥ ${n}%)`,when:{...i,lt:o,gte:n},style:{fill:t.watchFill??"var(--semiotic-warning, #d97706)",fillOpacity:.9}},{id:"reserve-tight",label:`Tight (< ${n}%)`,when:{...i,lt:n},style:{fill:a,stroke:t.tightFill??"var(--semiotic-danger, #c2410c)",strokeWidth:1,fillOpacity:1}}]}function Mn(e={}){const{tight:t,watch:n,comfortable:o}={...mn,...e};return[{type:"band",y0:-50,y1:t,label:"Tight",color:"var(--semiotic-danger, #c2410c)",fillOpacity:.12,emphasis:"secondary"},{type:"band",y0:t,y1:n,label:"Watch",color:"var(--semiotic-warning, #d97706)",fillOpacity:.1,emphasis:"secondary"},{type:"band",y0:n,y1:Math.max(o+30,40),label:"Headroom",color:"var(--semiotic-success, #16a34a)",fillOpacity:.06,emphasis:"secondary"}]}function vn(e,t){if(!e.length)return null;const n=[...e].filter(e=>e&&"number"==typeof e.t).sort((e,t)=>e.t-t.t);if(!n.length)return null;let o=n[n.length-1];if("number"==typeof t&&Number.isFinite(t)){const e=n.filter(e=>t>=e.t);o=e.length?e[e.length-1]:n[0]}const r=pn(o.demandMw),i=pn(o.netGenMw),a="number"==typeof o.forecastMw&&Number.isFinite(o.forecastMw)?o.forecastMw:null,s=xn({demand:r,capacityOrNetGen:i,interchange:o.interchangeMw}),c={};let l=null,d=0,u=0;for(const e of hn){const t=pn(o.fuels?.[e]);t>0&&(u+=t,c[e]=t,t>d&&(d=t,l=e))}if(u>0)for(const e of Object.keys(c))c[e]=c[e]/u;return{t:o.t,ba:o.ba,demandMw:r,forecastMw:a,forecastErrorMw:null==a?null:r-a,netGenMw:i,reserveMarginPct:s,topFuel:l,topFuelShare:u>0?d/u:0,topFuelMw:d,fuelShares:c}}function kn(e,t={}){const n=t.now??Date.now(),o=t.author??"system",r=t.source??"authored-scenario";return e.map(e=>{const t=(e.start+e.end)/2,i=new Date(e.start).toISOString();return{type:"x-band",x0:e.start,x1:e.end,label:e.label,color:"outage"===e.kind?"var(--semiotic-danger)":"var(--semiotic-warning)",fillOpacity:.12,emphasis:"secondary",x:t,y:e.y??e.value,note:e.note,provenance:{author:o,authorKind:"system",source:r,basis:"rule",confidence:.85,createdAt:i,stableId:e.id,dataVersion:e.start+""},lifecycle:{status:"accepted",ttlHint:e.ttlHint??"P14D",anchor:"fixed"},_eventKind:e.kind,_createdAtMs:e.start,_nowMs:n}})}function $n(e,t=12){return[...e].filter(e=>Number.isFinite(e.reserveMarginPct)).sort((e,t)=>e.reserveMarginPct-t.reserveMarginPct).slice(0,Math.max(0,t))}function An(e,t=0){return Number.isFinite(e)?e.toLocaleString(void 0,{maximumFractionDigits:t,minimumFractionDigits:t})+" MW":"—"}function Sn(e,t=1){return Number.isFinite(e)?`${e>0?"+":""}${e.toFixed(t)}%`:"—"}import*as In from"react";function Cn(e,t){if("function"==typeof e)return e;const n=e??t;return e=>Number(e[n])}function Nn(e,t={}){const n=Cn(t.start,"start"),o=Cn(t.end,"end"),r=!1===t.sort?e.slice():e.slice().sort((e,t)=>n(e)-n(t)||o(t)-o(e)),i=[];return{packed:r.map(e=>{const t=n(e);let r=i.findIndex(e=>t>=e);return-1===r&&(r=i.length),i[r]=o(e),{item:e,track:r}}),trackCount:Math.max(1,i.length)}}function zn(e,t){const n=Cn(t.start,"start"),o=Cn(t.end,"end"),[r,i]=t.domain,a=t.step??1,s="half-open"===t.bounds,c=[];for(let t=r;i>=t;t+=a){let r=0;for(const i of e){const e=n(i),a=o(i);e>t||(s?t>=a:t>a)||r++}c.push({value:t,count:r})}return c}function Fn(e){return"function"==typeof e?e:t=>t[e]}var Wn=e=>{const t=e.config,{plot:n}=e.dimensions;if(0>=n.width||0>=n.height||0===e.data.length||!t?.domain)return{nodes:[]};const o=Fn(t.laneAccessor),r=Fn(t.startAccessor),i=Fn(t.endAccessor),a=t.idAccessor?Fn(t.idAccessor):null,s=t.unit??0,c=t.barGap??1.5,l=Math.max(0,t.minBarWidth??2),d=t.minBarHeight??3.5,u=t.maxBarHeight??10,h=t.lanePadding??7,f=t.cornerRadius??2,m=t.bottomInset??0,p=t.color??((t,n)=>e.resolveColor(n)),[g,y]=t.domain,x=y-g||1,b=e=>n.x+(e-g)/x*n.width,w=e.scales?.o?.domain?.()??[],M=t.lanes??(w.length>0?w:[...new Set(e.data.map(o))]),v=Math.max(0,n.height-m)/Math.max(1,M.length),k=e=>b(r(e)),$=e=>Math.max(k(e)+l,b(i(e)+s)),A=[];M.forEach((t,r)=>{const i=n.y+r*v,s=e.data.filter(e=>o(e)===t);if(0===s.length)return;const{packed:l,trackCount:m}=Nn(s,{start:k,end:$}),g=new Map,y=new Map;for(const{item:e,track:t}of l){const n=y.get(t);n?n.push(e):y.set(t,[e])}for(const e of y.values()){e.sort((e,t)=>k(e)-k(t));for(let t=0;e.length-1>t;t++)g.set(e[t],k(e[t+1]))}const x=(v-2*h)/m,b=Math.min(u,Math.max(Math.min(d,x),x-c));for(const{item:e,track:n}of l){const o=k(e),r=g.get(e),s=$(e)-o;A.push({type:"rect",x:o,y:i+h+n*x,w:void 0!==r&&o+s>r-1?Math.max(1,r-1-o):s,h:b,cornerRadii:f>0?{tl:f,tr:f,br:f,bl:f}:void 0,style:{fill:p(e,t),stroke:"none"},datum:e,group:t,_transitionKey:a?a(e)+"":void 0})}});const S=`var(--semiotic-text, ${e.theme.semantic.text??"#1a1a1a"})`,I=`var(--semiotic-text-secondary, ${e.theme.semantic.textSecondary??"#888"})`,C=`var(--semiotic-border, ${e.theme.semantic.border??"#94a3b8"})`,N=[];(t.periods??[]).forEach((e,t)=>{const o=b(e.start),r=Math.max(1,b(e.end+s)-o);N.push(In.createElement("rect",{key:"period-"+t,x:o,y:n.y,width:r,height:n.height,fill:C,opacity:t%2==0?.06:.025,pointerEvents:"none"})),e.name&&N.push(bt({keyId:"period-label-"+t,text:e.name,x:o+4,y:n.y+12,anchor:"start",baseline:"hanging",fontSize:13,fontWeight:700,color:I}))});const z=!1!==t.showLaneLabels,F=t.laneLabelGap??12;if(M.forEach((e,t)=>{const o=n.y+t*v;N.push(In.createElement("line",{key:"lane-sep-"+t,x1:n.x,x2:n.x+n.width,y1:o,y2:o,stroke:C,opacity:.45})),z&&N.push(bt({keyId:"lane-label-"+t,text:e,x:n.x-F,y:o+v/2,anchor:"end",baseline:"middle",fontSize:12,fontWeight:600,color:S}))}),!1!==t.showAxis){const e=t.axisTicks??Array.from({length:8},(e,t)=>Math.round(g+t/7*x));N.push(Mt({keyId:"interval-axis",scale:b,ticks:e,orient:"top",offset:n.y,tickLength:0,gridLength:n.height,gridDasharray:"3 5",edgeAnchor:!0,format:t.tickFormat,color:I}))}return{nodes:A,overlays:In.createElement(In.Fragment,null,...N)}};function Ln(e,t,n){const o=n?.orientation??"vertical",r=n?.bend??0,i=n?.minAlong??18,a=(e,t)=>(e+t)/2;if("vertical"===o){if(i>Math.abs(t.y-e.y)){const n=e.x>t.x?-1:1,o=a(e.x,t.x)+n*(22+Math.abs(r));return`M${e.x},${e.y} Q${o},${a(e.y,t.y)} ${t.x},${t.y}`}const n=a(e.y,t.y)+r;return`M${e.x},${e.y} C${e.x},${n} ${t.x},${n} ${t.x},${t.y}`}if(i>Math.abs(t.x-e.x)){const n=e.y>t.y?-1:1,o=a(e.y,t.y)+n*(22+Math.abs(r));return`M${e.x},${e.y} Q${a(e.x,t.x)},${o} ${t.x},${t.y}`}const s=a(e.x,t.x)+r;return`M${e.x},${e.y} C${s},${e.y} ${s},${t.y} ${t.x},${t.y}`}function jn(e,t,n){if("vertical"===(n?.orientation??"vertical")){const n=(e.y+t.y)/2;return`M${e.x},${e.y} L${e.x},${n} L${t.x},${n} L${t.x},${t.y}`}const o=(e.x+t.x)/2;return`M${e.x},${e.y} L${o},${e.y} L${o},${t.y} L${t.x},${t.y}`}function Rn(e,t,n){if("vertical"===(n?.orientation??"vertical")){const n=t.cy>=e.cy;return{from:{x:e.cx,y:e.cy+(n?e.height/2:-e.height/2)},to:{x:t.cx,y:t.cy+(n?-t.height/2:t.height/2)}}}const o=t.cx>=e.cx;return{from:{x:e.cx+(o?e.width/2:-e.width/2),y:e.cy},to:{x:t.cx+(o?-t.width/2:t.width/2),y:t.cy}}}function On(e,t){const n=t?.spread??5;return t?.modulo&&t.modulo>0?(e%t.modulo-(t.modulo-1)/2)*n:(e-((t?.count??1)-1)/2)*n}function En(e,t){const n=1-t,o=n*n*n,r=3*n*n*t,i=3*n*t*t,a=t*t*t;return{x:o*e.p0.x+r*e.p1.x+i*e.p2.x+a*e.p3.x,y:o*e.p0.y+r*e.p1.y+i*e.p2.y+a*e.p3.y}}function Pn(e,t){const n=1-t,o=3*n*n,r=6*n*t,i=3*t*t;return{x:o*(e.p1.x-e.p0.x)+r*(e.p2.x-e.p1.x)+i*(e.p3.x-e.p2.x),y:o*(e.p1.y-e.p0.y)+r*(e.p2.y-e.p1.y)+i*(e.p3.y-e.p2.y)}}function Tn(e){return`M${e.p0.x},${e.p0.y} C${e.p1.x},${e.p1.y} ${e.p2.x},${e.p2.y} ${e.p3.x},${e.p3.y}`}function qn(e,t){const n=t?.axis??"x",o=t?.padding??0,r=t?.strength??.5,i="x"===n?"y":"x",a="x"===n?"width":"height",s="x"===n?"height":"width",c=new Map;for(const t of e)c.set(t.id,0);for(let t=0;e.length>t;t++)for(let l=t+1;e.length>l;l++){const d=e[t],u=e[l];if(Math.abs(d[i]-u[i])>(d[s]+u[s])/2+o)continue;const h=u[n]-d[n]||(u.id>d.id?-.5:.5),f=(d[a]+u[a])/2+o-Math.abs(h);if(0>=f)continue;const m=f*r*Math.sign(h);c.set(d.id,(c.get(d.id)??0)-m),c.set(u.id,(c.get(u.id)??0)+m)}return c}var Dn={width:60,height:34};function Bn(e,t){if("function"==typeof e)return e;const n=e??t;return e=>u(e,n,void 0)}function Hn(e,t,n,o){const r=o.fixedAxis??"y",i=e=>Bn(o.sourceAccessor,"source")(e)+"",a=e=>Bn(o.targetAccessor,"target")(e)+"",s=o.size??(()=>Dn),c=o.iterations??180,l=o.attraction??.012,d=o.anchorStrength??.003,u=o.collisionStrength??.12,h=o.collisionPadding??15,f=o.edgePadding??42,m=o.fixedPadding??16,g=o.damping??.72,y=o.spread??1,[x,b]=o.fixedDomain,w=b-x||1,M=("y"===r?n.y:n.x)+m,v=("y"===r?n.y+n.height:n.x+n.width)-m,k=("y"===r?n.x:n.y)+f,$=("y"===r?n.x+n.width:n.y+n.height)-f,A=Math.max(1,$-k),S=e.map(e=>{const t=p(e)??e,n=(r=e,Bn(o.idAccessor,"id")(r)+"");var r;const{width:i,height:a}=s(t),c=(e=>Number(Bn(o.fixedAccessor,"fixed")(e)))(e),l=k+function(e){let t=2166136261;for(let n=0;e.length>n;n++)t^=e.charCodeAt(n),t=Math.imul(t,16777619);return(t>>>0)/4294967295}(n)*A;return{data:t,id:n,width:i,height:a,fixedValue:c,fixed:(d=c,M+(d-x)/w*(v-M)),free:l,anchor:l};var d}),I=new Map(S.map(e=>[e.id,e])),C=e=>"y"===r?e.width:e.height;for(let e=0;c>e;e++){const e=new Map;for(const t of S)e.set(t.id,0);for(const n of t){const t=I.get(i(n)),o=I.get(a(n));if(!t||!o)continue;const r=(o.free-t.free)*l;e.set(t.id,(e.get(t.id)??0)+r),e.set(o.id,(e.get(o.id)??0)-r)}for(const t of S)e.set(t.id,(e.get(t.id)??0)+(t.anchor-t.free)*d);const n=qn(S.map(e=>({id:e.id,x:"y"===r?e.free:e.fixed,y:"y"===r?e.fixed:e.free,width:e.width,height:e.height})),{axis:"y"===r?"x":"y",padding:h,strength:u});for(const t of S)e.set(t.id,(e.get(t.id)??0)+(n.get(t.id)??0));for(const t of S){t.free+=(e.get(t.id)??0)*g;const n=C(t)/2;t.free=Math.max(k+n,Math.min($-n,t.free))}}if(1!==y){const e=(k+$)/2;for(const t of S){const n=C(t)/2;t.free=Math.max(k+n,Math.min($-n,e+(t.free-e)*y))}}const N=S.map(e=>({data:e.data,id:e.id,x:"y"===r?e.free:e.fixed,y:"y"===r?e.fixed:e.free,width:e.width,height:e.height,fixedValue:e.fixedValue}));return{positioned:N,byId:new Map(N.map(e=>[e.id,e]))}}var Yn=e=>{const{plot:t}=e.dimensions;if(0>=t.width||0>=t.height||0===e.nodes.length||!e.config?.fixedDomain)return{sceneNodes:[]};const n=e.config.fixedAxis??"y",{positioned:o,byId:r}=Hn(e.nodes,e.edges,t,e.config),i=o.map(t=>({type:"rect",x:t.x-t.width/2,y:t.y-t.height/2,w:t.width,h:t.height,style:{fill:e.resolveColor(t.id),stroke:"none"},datum:t.data,id:t.id,label:t.id})),a=[];e.edges.forEach((t,o)=>{const i=r.get((s=t,("function"==typeof e.config.sourceAccessor?e.config.sourceAccessor(s):u(s,e.config.sourceAccessor??"source",void 0))+""));var s;const c=r.get((t=>("function"==typeof e.config.targetAccessor?e.config.targetAccessor(t):u(t,e.config.targetAccessor??"target",void 0))+"")(t));if(!i||!c)return;const{from:l,to:d}=Rn({cx:i.x,cy:i.y,width:i.width,height:i.height},{cx:c.x,cy:c.y,width:c.width,height:c.height},{orientation:"y"===n?"vertical":"horizontal"});a.push({type:"curved",pathD:Ln(l,d,{orientation:"y"===n?"vertical":"horizontal",bend:On(o,{modulo:5,spread:5})}),style:{stroke:"var(--semiotic-border, #888)",fill:"none",strokeWidth:1.4},datum:p(t)??t})});const s=o.map(e=>({x:e.x,y:e.y,text:e.id}));return{sceneNodes:i,sceneEdges:a,labels:s}};function Gn(e){const n=Number(e.segmentDomain?.[0]),o=Number(e.segmentDomain?.[1]),r=Number.isFinite(n)?n:0,i=Number.isFinite(o)?o:r,a=r>i?-1:1,s=Math.abs(i-r),c=Number(e.currentSegment),l=Number.isFinite(c)?t((c-r)*a,0,s):0,d=(e,n)=>{const o=Number(e);return Number.isFinite(o)?t(o,0,1):n},u=d(e.oldestOpacity,.25),h=d(e.currentOpacity,1),f=d(e.futureOpacity,0);return{weightOpacity:!0===e.combineWeightOpacity,wordOpacity:({segment:e})=>{const n=Number(e);if(!Number.isFinite(n))return f;const o=(n-r)*a;if(o>l)return f;if(0===l)return h;const i=t(o/l,0,1);return u+(h-u)*i}}}import{jsx as Xn,jsxs as Vn}from"react/jsx-runtime";function _n(e){let t=2166136261;for(let n=0;e.length>n;n++)t^=e.charCodeAt(n),t=Math.imul(t,16777619);return(t>>>0)/4294967295}var Kn=1.15,Un={a:.556,b:.556,c:.5,d:.556,e:.556,f:.278,g:.556,h:.556,i:.222,j:.222,k:.5,l:.222,m:.833,n:.556,o:.556,p:.556,q:.556,r:.333,s:.5,t:.278,u:.556,v:.5,w:.722,x:.5,y:.5,z:.5,"'":.191,"-":.333,".":.278," ":.278};function Zn(e){let t=0;for(const n of e)t+=Un[n]??.6;return t}function Qn(e,t){return Math.max(8,Zn(e)*t*1.05+1)}function Jn(e,t,n){for(const o of t)if((e.w+o.w)/2+n>Math.abs(e.x-o.x)&&(e.h+o.h)/2+n>Math.abs(e.y-o.y))return!0;return!1}var eo=e=>{const o=e.config,{plot:r}=e.dimensions;if(0>=r.width||0>=r.height||0===e.data.length)return{nodes:[]};const i=h(o.textAccessor),a=e=>{const t=Number(h(o.weightAccessor)(e));return Number.isFinite(t)&&t>0?t:0},s=h(o.columnAccessor),c=e=>Number(h(o.segmentAccessor)(e)),l=o.minFontSize??11,d=o.maxFontSize??42,u=o.columnGutter??18,f=o.collisionPadding??2,m=!1!==o.showColumnLabels,p=!1!==o.showSegmentAxis,g=o.segmentTickCount??6,y=o.segmentTickFormat??(e=>Math.round(e)+""),x=o.rotate??0,b=!0===o.repeatWords,w=!1!==o.scaleToFit,M=o.packingDensity??.6,v="string"==typeof o.textAccessor?o.textAccessor:"word",k="string"==typeof o.weightAccessor?o.weightAccessor:"weight",$="string"==typeof o.columnAccessor?o.columnAccessor:"column",A="string"==typeof o.segmentAccessor?o.segmentAccessor:"segment",S=[],I=new Map;let C=1/0,N=-1/0;for(let t=0;e.data.length>t;t++){const n=e.data[t],o=s(n)+"",r=i(n)+"",l=a(n),d=c(n);r&&Number.isFinite(d)&&(I.has(o)||(S.push(o),I.set(o,[])),I.get(o).push({col:o,text:r,weight:l,segment:d,datum:n,dataIndex:t}),C>d&&(C=d),d>N&&(N=d))}if(0===S.length)return{nodes:[]};if(!b)for(const[e,t]of I){const n=new Map;for(const e of t){const t=n.get(e.text);t&&t.weight>=e.weight||n.set(e.text,e)}I.set(e,[...n.values()])}let z=1/0,F=-1/0;for(const e of I.values())for(const t of e)z>t.weight&&(z=t.weight),t.weight>F&&(F=t.weight);if(!Number.isFinite(z))return{nodes:[]};const W=o.columnOrder?[...o.columnOrder.filter(e=>I.has(e)),...S.filter(e=>!o.columnOrder.includes(e))]:S,L=new Map(W.map(t=>[t,o.columnColor?.(t)||e.resolveColor(t)])),[j,R]=o.segmentDomain??[C,N],O=R-j||1,E=F-z||1,P=m?22:0,T=p?52:0,q=r.x+T,D=r.y+P,B=Math.max(0,r.width-T),H=Math.max(0,r.height-P),Y=W.length,G=Y>0?Math.max(0,B-u*Math.max(0,Y-1))/Y:0,X=D+14,V=D+H-14,_=e=>X+(e-j)/O*(V-X),K=G*H;let U=1/0,Z=1/0;const Q=W.map((e,n)=>{const r=L.get(e),i=(I.get(e)??[]).map(e=>{const i={word:e.text,column:e.col,weight:e.weight,segment:e.segment,datum:e.datum,dataIndex:e.dataIndex,columnIndex:n,resolvedColumnColor:r},a=o.wordOpacity?Number(o.wordOpacity(i)):1,s=o.wordColor?.(i);return{text:e.text,weight:e.weight,segment:e.segment,baseFont:(c=e.weight,l+Math.sqrt((c-z)/E)*(d-l)),opacity:Number.isFinite(a)?t(a,0,1):0,color:s||r,info:i};var c});if(0===i.length)return null;let a=0;for(const e of i){const t=1.05*Zn(e.text);a+=t*Kn*e.baseFont*e.baseFont,Z=Math.min(Z,(G-8-1)/(t*e.baseFont))}return a>0&&(U=Math.min(U,Math.sqrt(M*K/a))),{col:e,colLeft:q+n*(G+u),center:q+n*(G+u)+G/2,rows:i}}).filter(e=>null!==e),J=e=>{const o=[];let r=0;for(const i of Q){if(0>=G)continue;const a=i.colLeft+4,s=i.colLeft+G-4,c=i.rows.map((t,n)=>{const o=Math.max(5,e*t.baseFont),r=`${i.col}::${t.text}::${n}`;return{id:r,text:t.text,weight:t.weight,segment:t.segment,font:o,w:Qn(t.text,o),h:o*Kn+2,anchorY:_(t.segment),seed:(_n(r)-.5)*Math.min(.5*G,80),opacity:t.opacity,color:t.color,info:t.info}}).sort((e,t)=>t.font-e.font||(t.id>e.id?-1:1)),l=[];for(const e of c){const c=e.w/2,d=e.h/2,u=t(i.center+e.seed,a+c,s-c),h=e.anchorY;let m=u,p=t(h,X+d,V-d),g=!1;for(let n=0;2600>n;n++){const o=3.2*Math.sqrt(n),r=2.399963229728653*n,i={x:t(u+o*Math.cos(r),a+c,s-c),y:t(h+o*Math.sin(r),X+d,V-d),w:e.w,h:e.h};if(!Jn(i,l,f)){m=i.x,p=i.y,g=!0;break}}g||r++,l.push({x:m,y:p,w:e.w,h:e.h});const y=Math.sqrt((e.weight-z)/E),b=x>0?2*(_n(e.id+"r")-.5)*x:0;o.push({id:e.id,text:e.text,x:m,y:p,fontSize:e.font,rotation:b,color:e.color,opacity:e.opacity,datum:n(t=>{for(const n of Object.keys(e.info.datum))t(n,e.info.datum[n]);t("word",e.text),t("weight",e.weight),t("column",i.col),t("segment",e.segment),"word"!==v&&t(v,e.text),"weight"!==k&&t(k,e.weight),"column"!==$&&t($,i.col),"segment"!==A&&t(A,e.segment),t("__strength",.5+.5*y)})})}}return{placed:o,unplaced:r}};let ee=w?Math.min(1,U,Z):Math.min(1,Z),te=J(ee);if(w)for(let e=0;6>e&&te.unplaced>0&&ee>.1;e++)ee*=.88,te=J(ee);const ne=te.placed.filter(e=>e.opacity>0);return{nodes:ne.map(e=>{const t=Qn(e.text,e.fontSize)/2,n=e.fontSize*Kn/2;return{type:"rect",x:e.x-t,y:e.y-n,w:2*t,h:2*n,style:{fill:"rgba(0,0,0,0)",stroke:"none"},datum:e.datum,group:e.datum.column+"",_transitionKey:e.id}}),overlays:Vn("g",{className:"semiotic-word-trails",children:[p&&to({x:r.x+T-10,yTop:X,yBot:V,segLo:j,segHi:R,segToY:_,tickCount:g,tickFormat:y,color:`var(--semiotic-text-secondary, ${e.theme.semantic.textSecondary??"#888"})`,label:o.segmentAxisLabel,labelX:r.x}),m&&W.map((e,t)=>G>0?Xn("text",{x:q+t*(G+u)+G/2,y:r.y+14,textAnchor:"middle",fontSize:13,fontWeight:600,fill:L.get(e),style:{pointerEvents:"none"},children:e},"wt-col-"+t):null),ne.map(e=>Xn("text",{x:e.x,y:e.y,textAnchor:"middle",dominantBaseline:"central",fontSize:e.fontSize,fontWeight:600,fill:e.color,opacity:(!1===o.weightOpacity?1:Number(e.datum.__strength))*e.opacity,transform:e.rotation?`rotate(${e.rotation} ${e.x} ${e.y})`:void 0,style:{pointerEvents:"none"},children:e.text},"wt-"+e.id))]})}};function to(e){const t=[],n=e.segHi-e.segLo||1;for(let o=0;e.tickCount>o;o++)t.push(e.segLo+n*o/Math.max(1,e.tickCount-1));return Vn("g",{className:"semiotic-word-trails-axis",style:{pointerEvents:"none"},children:[Xn("line",{x1:e.x,y1:e.yTop,x2:e.x,y2:e.yBot,stroke:e.color,strokeWidth:1,opacity:.5}),t.map((t,n)=>{const o=e.segToY(t);return Vn("g",{children:[Xn("line",{x1:e.x-4,y1:o,x2:e.x,y2:o,stroke:e.color,strokeWidth:1,opacity:.6}),Xn("text",{x:e.x-7,y:o,textAnchor:"end",dominantBaseline:"central",fontSize:11,fill:e.color,children:e.tickFormat(t)})]},"wt-tick-"+n)}),e.label&&Xn("text",{transform:`rotate(-90 ${e.labelX+10} ${(e.yTop+e.yBot)/2})`,x:e.labelX+10,y:(e.yTop+e.yBot)/2,textAnchor:"middle",fontSize:11,fontWeight:600,fill:e.color,children:e.label})]})}var no={fill:"rgba(0,0,0,0)",stroke:"rgba(0,0,0,0)",opacity:0},oo=8;function ro(e){return null==e?void 0:e+""}function io(e){const t=ro(e.id);return{type:"point",x:e.x,y:e.y,r:e.r??8,style:{...no},datum:e.datum,pointId:t,_transitionKey:t}}function ao(e){return io(e)}function so(e){const[[t,n],[o,r]]=e.bounds;return{type:"geoarea",pathData:e.pathData,centroid:e.centroid,bounds:e.bounds,screenArea:e.screenArea??Math.abs((o-t)*(r-n)),style:{...no},datum:e.datum,group:e.group,interactive:!0}}function co(e){return{type:"rect",x:e.x,y:e.y,w:e.width,h:e.height,style:{...no},datum:e.datum,group:e.group,_transitionKey:ro(e.id)}}function lo(e){const t=ro(e.id);return"width"in e&&"height"in e?{type:"rect",x:e.x,y:e.y,w:e.width,h:e.height,style:{...no},datum:e.datum,id:t,label:e.label}:{type:"circle",cx:e.x,cy:e.y,r:e.r??8,style:{...no},datum:e.datum,id:t,label:e.label}}function uo(e,t,n={}){const{coord:o,step:r=1,equals:i=Object.is,truthyOnly:a=!1}=n,s=[],c=t=>o?o(e[t],t):t,l=(e,t,n)=>{e.endIndex=t,e.count=t-e.startIndex+1,e.end=o?null==n||c(n)-c(t)>r?c(t)+r:c(n):t+1,s.push(e)};let d=null;for(let n=0;e.length>n;n++){const s=t(e[n],n);if(a&&!s){d&&(l(d,d.endIndex,n),d=null);continue}const u=!o||0>=n||c(n)-c(n-1)<=r;d&&u&&i(d.value,s)?d.endIndex=n:(d&&l(d,d.endIndex,n),d={value:s,start:c(n),end:c(n),count:1,startIndex:n,endIndex:n})}return d&&l(d,d.endIndex,null),s}var ho=uo;function fo(e,t,n=0){return t>0?((e-n)%t+t)%t+n:e}function mo(e,t,n){if(0>=n)return t-e;let o=(t-e)%n;return o>n/2?o-=n:-n/2>o&&(o+=n),o}function po(e,t,n){return t>n?e>=t||n>=e:e>=t&&n>=e}function go(e,t,n,o){return n>o?[...e.filter(e=>t(e)>=n),...e.filter(e=>t(e)<=o)]:e.filter(e=>po(t(e),n,o))}function yo(e,t){const n=Math.max(0,t.width),o=t.y,r=Math.min(74,Math.max(34,.08*n)),i=t.paddingLeft??r,a=e.length>1?Math.max(0,n-i-(t.paddingRight??r))/(e.length-1):0,s=new Map;return e.forEach((e,t)=>{s.set(e.id,{id:e.id,x:i+a*t,y:o,index:t})}),s}function xo(e,t){const n=Math.max(0,t.width),o=t.y,r=Math.min(74,Math.max(34,.08*n)),i=t.paddingLeft??r,a=t.paddingRight??r,s=t.gap??8,c=!1!==t.distribute,l=t.estimateWidth??(e=>bo(e.label??e.id)),d=e.map((e,t)=>Math.max(1,l(e,t))),u=d.reduce((e,t)=>e+t,0)+s*Math.max(0,e.length-1),h=Math.max(0,n-i-a),f=c&&e.length>1?Math.max(0,h-u)/(e.length-1):0,m=new Map;let p=i;return c||1!==e.length||(p=i+Math.max(0,(h-d[0])/2)),e.forEach((e,t)=>{const n=d[t];m.set(e.id,{id:e.id,x:p+n/2,y:o,index:t,width:n}),p+=n+s+f}),m}function bo(e,t=38,n=7.4,o=20){return Math.max(t,((e??"")+"").length*n+o)}function wo(e){const t=e.map(e=>{const t=Math.min(e.a,e.b),n=Math.max(e.a,e.b);return{span:e,a:t,b:n,width:n-t}}).sort((e,t)=>e.width-t.width||e.a-t.a),n=[],o=t.map(e=>{let t=n.findIndex(t=>e.a>=t);return 0>t?(t=n.length,n.push(e.b)):n[t]=e.b,{span:e.span,level:t}}),r=o.reduce((e,t)=>Math.max(e,t.level),0);return{packed:o,maxLevel:r,levelCount:o.length?r+1:1}}function Mo(e){const t=e.labelRoom??18,n=Math.max(48,e.baselineY-e.ceilingY-28),o=Math.max(1,e.levelCount),r=Math.min(42,Math.max(26,.18*n)),i=Math.max(24,n-r-t);return{arcLift:r,levelStep:Math.min(72,Math.max(28,o>1?i/Math.max(1,o-1):i))}}function vo(e,t,n,o,r={}){const i=n-(r.footLift??26);return`M${e} ${i}Q${(e+t)/2} ${o} ${t} ${i}`}function ko(e,t,n){return e-n.arcLift-t*n.levelStep}function $o(e,t=Ao){if(!e.length)return{shared:[],exclusive:[]};if(1===e.length)return{shared:[...e[0]],exclusive:[[]]};const n=e.map(e=>new Set(e.map(e=>t(e)))),o=new Set;for(const e of n[0])n.every(t=>t.has(e))&&o.add(e);const r=[],i=new Set;for(const n of e[0]){const e=t(n);o.has(e)&&!i.has(e)&&(r.push(n),i.add(e))}return{shared:r,exclusive:e.map(e=>e.filter(e=>!o.has(t(e))))}}function Ao(e){return null==e||"object"!=typeof e?e+"":null!=e.id?e.id+"":`${(e.sourceTokenId??e.source)+""}|${(e.targetTokenId??e.target)+""}|${(e.relation??e.label??"")+""}`}var So=2*Math.PI;function Io(e,t,n){const o=n?.center?.x??0,r=n?.center?.y??0;return{x:o+Math.sin(e)*t,y:r-Math.cos(e)*t}}function Co(e,t,n){return(Math.atan2(e-(n?.center?.x??0),-(t-(n?.center?.y??0)))+So)%So}function No(e,t){const[n,o]=e,r=o-n||1,i=t?.startAngle??0,a=t?.endAngle??So;return e=>i+(e-n)/r*(a-i)}function zo(e,t){const[n,o]=e,[r,i]=t,a=o-n||1;return e=>r+(e-n)/a*(i-r)}function Fo(e,t,n,o,r){const i=r?.center,a=(e,t)=>{const{x:n,y:o}=Io(e,t,{center:i});return`${Wo(n)},${Wo(o)}`},s=Math.max(0,n),c=Math.max(s,o),l=Math.abs(t-e),d=e>t?0:1;if(l>=So-1e-6){const e=i?.x??0,t=i?.y??0,n=`${Wo(e)},${Wo(t-c)}`,o=`${Wo(e)},${Wo(t+c)}`;let r=`M${n} A${Wo(c)},${Wo(c)} 0 1 1 ${o} A${Wo(c)},${Wo(c)} 0 1 1 ${n} Z`;if(s>0){const n=`${Wo(e)},${Wo(t-s)}`,o=`${Wo(e)},${Wo(t+s)}`;r+=` M${n} A${Wo(s)},${Wo(s)} 0 1 0 ${o} A${Wo(s)},${Wo(s)} 0 1 0 ${n} Z`}return r}const u=l>Math.PI?1:0,h=a(e,c),f=a(t,c);if(0>=s){const e=i?.x??0,t=i?.y??0;return`M${Wo(e)},${Wo(t)} L${h} A${Wo(c)},${Wo(c)} 0 ${u} ${d} ${f} Z`}const m=a(t,s),p=a(e,s);return`M${h} A${Wo(c)},${Wo(c)} 0 ${u} ${d} ${f} L${m} A${Wo(s)},${Wo(s)} 0 ${u} ${1===d?0:1} ${p} Z`}function Wo(e){return Math.round(1e3*e)/1e3}function Lo(e,t){return{x:e.x+t.x,y:e.y+t.y}}function jo(e,t){return{x:e.x-t.x,y:e.y-t.y}}function Ro(e,t){return{x:e.x*t,y:e.y*t}}function Oo(e){return Math.hypot(e.x,e.y)}function Eo(e){const t=Oo(e)||1;return{x:e.x/t,y:e.y/t}}import{jsx as Po,jsxs as To}from"react/jsx-runtime";var qo="var(--semiotic-text, currentColor)";function Do(e,t){const n=$(e,100);return n>0?t/n*100*(t/n):Math.PI*t*t}function Bo(e){const t=[],n=e.colorMap?Object.entries(e.colorMap):e.keys?e.keys.map(t=>[t,e.color?e.color(t):void 0]):[];if(n.length>0){const o=e.colorType??"fill",r=n.map(([e,t])=>({label:e,color:t}));t.push({type:o,label:e.colorLabel??"",items:r,styleFn:"line"===o?e=>({stroke:e.color??qo,strokeWidth:2,fill:"none"}):e=>({fill:e.color??qo,stroke:e.color??qo})})}if(e.symbolMap&&Object.keys(e.symbolMap).length>0){const n=e.symbolColor??qo,o=Object.entries(e.symbolMap).map(([e,t])=>({label:e,shape:t,color:n}));t.push({label:e.symbolLabel??"",items:o,styleFn:()=>({}),type:e=>{const t=e.shape;return Po("path",{d:A(t,Do(t,7)),transform:"translate(8,8)",fill:e.color??n})}})}if(e.sizeStops&&e.sizeStops.length>0&&e.sizeRadius){const n=e.sizeRadius,o=e.sizeFormat??(e=>e+""),r=e.sizeColor??qo,i=e.sizeStops.map(e=>({label:o(e),r:Math.max(.5,n(e)),color:r}));t.push({label:e.sizeLabel??"",items:i,styleFn:()=>({}),type:e=>Po("circle",{cx:8,cy:8,r:e.r,fill:e.color??r})})}return t}function Ho(e){const t=e.orientation??"vertical",n=e.swatchSize??14,o=e.gap??8,r=e.labelGap??6,i=e.fontSize??12,a=e.color??"var(--semiotic-text-secondary, #888)",s=n+o;let c=0;const l=[];return e.entries.forEach((e,d)=>{l.push(To("g",{transform:`translate(${"vertical"===t?0:c},${"vertical"===t?c:0})`,children:[Yo(e,n,e.color??e.line??a,a),Po("text",{x:n+r,y:n/2,dominantBaseline:"middle",fontSize:i,fill:a,children:e.label})]},"legend-"+d)),c+="vertical"===t?s:n+r+e.label.length*i*.58+o+8}),Po("g",{className:e.className,transform:`translate(${e.x},${e.y})`,style:{pointerEvents:"none"},children:l},e.keyId)}function Yo(e,t,n,o){if(e.shape){const o=Do(e.shape,t/2-1);return Po("path",{d:A(e.shape,o),transform:`translate(${t/2},${t/2})`,fill:n})}if(e.hatch){const n=e.color??o;return To("g",{children:[Po("svg",{width:t,height:t,style:{overflow:"hidden"},children:[-t,-t/2,0,t/2].map((e,o)=>Po("line",{x1:e,y1:t,x2:e+t,y2:0,stroke:n,strokeWidth:1,opacity:.7},o))}),Po("rect",{width:t,height:t,fill:"none",stroke:n,strokeWidth:1,opacity:.5,rx:2})]})}return Po("rect",e.line?{y:t/2-1.5,width:t,height:3,rx:1.5,fill:e.line}:{width:t,height:t,rx:2,fill:n})}var Go=new Set(["rows"]);function Xo(e){const t=e,n=[Uo(t,["datum","data"]),Uo(t,["datum"]),Uo(t,["data","data"]),Uo(t,["data"]),Uo(t,["node","datum","data"]),Uo(t,["node","datum"]),e];for(const e of n){if(!Zo(e))continue;const t={};for(const[n,o]of Object.entries(e))n.startsWith("_")||"function"==typeof o||(t[n]=o);if(Object.keys(t).length>0)return t}return null}function Vo(e,t={}){const n=Xo(e);if(!n)return[];const o=new Set(Go);if(t.excludeKeys)for(const e of t.excludeKeys)o.add(e);const r=[];for(const[e,i]of Object.entries(n))if((t.includeInternal||!e.startsWith("_"))&&!o.has(e)&&(t.includeEmpty||null!=i&&""!==i)&&"function"!=typeof i&&(r.push({key:e,label:Ko(e,t.labels),value:i,formatted:t.valueFormat?t.valueFormat(i,e,n):_o(i)}),r.length>=(t.maxEntries??8)))break;return r}function _o(e){if(null==e)return"";if(e instanceof Date)return e.toISOString();if("number"==typeof e)return Number.isInteger(e)?e+"":e.toLocaleString(void 0,{maximumFractionDigits:2});if("boolean"==typeof e)return e?"true":"false";if(Array.isArray(e))return e.length+" items";if("object"==typeof e)try{return JSON.stringify(e)}catch{return e+""}return e+""}function Ko(e,t){return"function"==typeof t?t(e):t&&t[e]?t[e]:e}function Uo(e,t){let n=e;for(const e of t){if(!Zo(n))return;n=n[e]}return n}function Zo(e){return"object"==typeof e&&null!==e&&!Array.isArray(e)}function Qo(e,t){const n=new Map;for(const t of e)n.set(t.id,new Set);for(const e of t)n.has(e.source)||n.set(e.source,new Set),n.has(e.target)||n.set(e.target,new Set),n.get(e.source).add(e.target),n.get(e.target).add(e.source);return n}function Jo(e,t){const n={};for(const t of e)n[t.id]=0;for(const e of t)n[e.source]=(n[e.source]||0)+1,n[e.target]=(n[e.target]||0)+1;return n}function er(e,t){const n={[t]:0},o=[t];let r=0;for(;o.length>r;){const t=o[r];r+=1;for(const r of e.get(t)||[])void 0===n[r]&&(n[r]=n[t]+1,o.push(r))}return n}function tr(e,t,n,o){if(n===o)return n?[n]:[];const r=Qo(e,t),i={[n]:null},a=[n];let s=0;for(;a.length>s;){const e=a[s];if(s+=1,e===o)break;for(const t of r.get(e)||[])void 0===i[t]&&(i[t]=e,a.push(t))}if(void 0===i[o])return[];const c=[];let l=o;for(;null!=l;)c.unshift(l),l=i[l];return c}function nr(e,t,n,o=1){const r=Qo(e,t);if(!r.has(n))return new Set;const i=er(r,n),a=new Set;for(const e in i)i[e]>o||a.add(e);return a}function or(e,t){const n=Qo(e,t),o={};for(const t of e)o[t.id]=0;for(const t of e.map(e=>e.id)){const r=[],i={},a={},s={};for(const t of e)i[t.id]=[],a[t.id]=0,s[t.id]=-1;a[t]=1,s[t]=0;const c=[t];let l=0;for(;c.length>l;){const e=c[l];l+=1,r.push(e);for(const t of n.get(e)||[])0>s[t]&&(s[t]=s[e]+1,c.push(t)),s[t]===s[e]+1&&(a[t]+=a[e],i[t].push(e))}const d={};for(const t of e)d[t.id]=0;for(;r.length;){const e=r.pop();for(const t of i[e])d[t]+=a[t]/a[e]*(1+d[e]);e!==t&&(o[e]+=d[e])}}for(const e in o)o[e]/=2;return o}function rr(e,t){const n=Qo(e,t),o={};for(const t of e){const e=er(n,t.id);let r=0,i=0;for(const t in e)r+=e[t],i+=1;o[t.id]=r>0?(i-1)/r:0}return o}function ir(e,t){const n=Qo(e,t),o={};for(const t of e){const e=[...n.get(t.id)||[]],r=e.length;if(2>r){o[t.id]=0;continue}let i=0;for(let t=0;e.length>t;t+=1)for(let o=t+1;e.length>o;o+=1)n.get(e[t])?.has(e[o])&&(i+=1);o[t.id]=2*i/(r*(r-1))}return o}function ar(e){let t=0;for(const n in e)e[n]>t&&(t=e[n]);const n={};for(const o in e)n[o]=t>0?e[o]/t:0;return n}function sr(e,t,n,o={}){const r=Qo(e,t),i={};for(const t of e)i[t.id]=er(r,t.id);let a=o.minHops??4,s=o.startThreshold??.08;const c=o.maxThreshold??.2,l=new Set;let d=0;for(;0===l.size&&40>d;){for(let t=0;e.length>t;t+=1)for(let o=t+1;e.length>o;o+=1){const r=e[t].id,c=e[o].id,d=n[r],u=n[c];if(!d||!u)continue;const h=d.x-u.x,f=d.y-u.y;(void 0===i[r][c]?1/0:i[r][c])>=a&&s>Math.sqrt(h*h+f*f)&&(l.add(r),l.add(c))}0===l.size&&(s+=.02,s>c&&(s=o.startThreshold??.08,a=Math.max(2,a-1))),d+=1}return{problemIds:l,threshold:s,minHops:a}}async function cr(e,t,n={}){const{execution:o="auto",signal:r,workerThreshold:a,nodeRadius:s,...c}=n,l=c.iterations??260;if(!g()||!x(o,e.length,t.length,l,a))return i(e,t,{...c,nodeRadius:s});const d={kind:"normalized",nodes:e.map(e=>({...e})),edges:t.map(e=>({...e})),options:c,nodeRadii:"function"==typeof s?Object.fromEntries(e.map(e=>[e.id,s(e)])):null==s?void 0:Object.fromEntries(e.map(e=>[e.id,s]))};try{return(await y(d,r)).positions}catch(n){if("AbortError"===n?.name)throw n;return i(e,t,{...c,nodeRadius:s})}}var lr=[.1,.5,.9],dr=1e6;function ur(e){const t="number"==typeof e?e:"string"==typeof e&&e.trim()?Number(e):NaN;return Number.isFinite(t)?t:null}function hr(e,t,n,o,r){return"function"==typeof o?o(e,t,n):function(e,t){let n=e;for(const e of t.split(".")){if(null==n||"object"!=typeof n)return;n=n[e]}return n}(e,o??r)}function fr(e){const t=Number(e.toFixed(12));return Object.is(t,-0)?0:t}function mr(e,t,n,o){const r=e.flatMap((e,r)=>{const i=ur(hr(e,r,t,n,"time")),a=ur(hr(e,r,t,o,"value"));return null==i||null==a?[]:[{time:fr(i),value:a,index:r}]});r.sort((e,t)=>e.time-t.time||e.index-t.index);const i=[];for(const e of r){const t=i[i.length-1];t?.time===e.time?t.value=e.value:i.push({time:e.time,value:e.value})}return i}function pr(e,t,n,o){if(!e.length)return null;const r=e[0],i=e[e.length-1];if(r.time>t)return"clamp"===o?r.value:null;if(t>i.time)return"clamp"===o?i.value:null;const a=function(e,t){let n=0,o=e.length;for(;o>n;){const r=n+o>>>1;t>e[r].time?n=r+1:o=r}return n}(e,t),s=e[a];if(s?.time===t)return s.value;const c=e[Math.max(0,a-1)];return"step"!==n&&s&&s.time!==c.time?c.value+(t-c.time)/(s.time-c.time)*(s.value-c.value):c.value}function gr(e,t){if(1===e.length)return e[0];const n=(e.length-1)*t,o=Math.floor(n),r=Math.ceil(n);return o===r?e[o]:e[o]+(e[r]-e[o])*(n-o)}function yr(e){const t=e.interpolation??"step",n=e.outsideDomain??"omit",o=function(e){const t=(e??lr).map(e=>{const t=ur(e);if(null==t||0>t||t>1)throw new RangeError("physicsReferenceEnvelope quantiles must be finite values from 0 to 1; received "+e);return fr(t)});return Array.from(new Set(t)).sort((e,t)=>e-t)}(e.quantiles),r=function(e){if(Array.isArray(e)){if(e.length>dr)throw new RangeError("physicsReferenceEnvelope sampleAt exceeds 1000000 points");return Array.from(new Set(e.map(ur).filter(e=>null!=e).map(fr))).sort((e,t)=>e-t)}const t=e,n=ur(t.start),o=ur(t.end),r=ur(t.step);if(null==n||null==o||null==r||0>=r||n>o)throw new RangeError("physicsReferenceEnvelope sampleAt requires finite start/end values with end >= start and step > 0");const i=Math.floor((o-n)/r)+1;if(i>dr)throw new RangeError("physicsReferenceEnvelope sampleAt exceeds 1000000 points");const a=[],s=1e-10*Math.max(1,Math.abs(o),Math.abs(n));for(let e=0;i>e;e+=1){const t=n+e*r;if(t>o+s)break;a.push(fr(Math.min(t,o)))}if(a.length&&s>=Math.abs(a[a.length-1]-o)||a.push(fr(o)),a.length>dr)throw new RangeError("physicsReferenceEnvelope sampleAt exceeds 1000000 points");return Array.from(new Set(a)).sort((e,t)=>e-t)}(e.sampleAt),i=e.runs.map(t=>mr(t.samples,t.id,e.timeAccessor,e.valueAccessor));return{points:r.map(e=>{const r=i.map(o=>pr(o,e,t,n)).filter(e=>null!=e).sort((e,t)=>e-t),a={};for(const e of o)a[e]=r.length?gr(r,e):null;return{time:e,count:r.length,min:r.length?r[0]:null,max:r.length?r[r.length-1]:null,median:r.length?gr(r,.5):null,quantiles:a}}),quantiles:o,interpolation:t,outsideDomain:n,runCount:e.runs.length}}function xr(e,t){return e.quantiles.length?"lower"===t?e.quantiles[0]:e.quantiles[e.quantiles.length-1]:"lower"===t?"min":"max"}function br(e,t){if("min"===t||"median"===t||"max"===t)return e[t];const n=ur(t);if(null==n||0>n||n>1)throw new RangeError("comparePhysicsTrace quantile selectors must be from 0 to 1; received "+t);const o=fr(n);if(!Object.prototype.hasOwnProperty.call(e.quantiles,o))throw Error(`comparePhysicsTrace could not find quantile ${o} in the reference envelope`);return e.quantiles[o]??null}function wr(e,t,n){return t>e?"below":e>n?"above":"inside"}function Mr(e,t){const n=Math.max(0,t.time-e.time);if(0>=n||null==e.value||null==e.lower||null==e.upper||null==t.value||null==t.lower||null==t.upper)return{below:0,inside:0,above:0,observed:0};const o=e.value-e.lower,r=t.value-t.lower,i=e.value-e.upper,a=t.value-t.upper,s=[0,1];for(const[e,t]of[[o,r],[i,a]])(0>e&&t>0||e>0&&0>t)&&s.push(-e/(t-e));s.sort((e,t)=>e-t);let c=0,l=0,d=0;for(let o=0;s.length-1>o;o+=1){const r=s[o],i=s[o+1];if(r>=i)continue;const a=(r+i)/2,u=(i-r)*n,h=wr(e.value+(t.value-e.value)*a,e.lower+(t.lower-e.lower)*a,e.upper+(t.upper-e.upper)*a);"below"===h?c+=u:"above"===h?d+=u:l+=u}return{below:c,inside:l,above:d,observed:n}}function vr(e,t,n={}){const o=n.interpolation??t.interpolation,r=n.outsideDomain??t.outsideDomain,i=mr(e,n.traceId??"trace",n.timeAccessor,n.valueAccessor),a=n.lower??xr(t,"lower"),s=n.upper??xr(t,"upper"),c=t.points.map(e=>{const t=pr(i,e.time,o,r),n=br(e,a),c=br(e,s);if(null!=n&&null!=c&&n>c)throw new RangeError("comparePhysicsTrace lower band exceeds upper band at time "+e.time);return{time:e.time,value:t,lower:n,upper:c,status:null==t||null==n||null==c?"unobserved":wr(t,n,c)}});let l=0,d=0,u=0,h=0,f=null,m=0,p=null;for(const e of c){if("below"===e.status?l+=1:"inside"===e.status?d+=1:"above"===e.status&&(u+=1),null==e.value||null==e.lower||null==e.upper)continue;const t=Math.max(0,e.value-e.upper),n=Math.max(0,e.lower-e.value);t>h&&(h=t,f=e.time),n>m&&(m=n,p=e.time)}let g=0,y=0,x=0,b=0;for(let e=0;c.length-1>e;e+=1){const t=c[e],n=c[e+1],r=Math.max(0,n.time-t.time);if(r>0){if("linear"===o){const e=Mr(t,n);g+=e.below,y+=e.inside,x+=e.above,b+=e.observed;continue}"unobserved"!==t.status&&(b+=r,"below"===t.status?g+=r:"above"===t.status?x+=r:y+=r)}}const w=c[0]?.time,M=c[c.length-1]?.time,v=null==w||null==M?0:Math.max(0,M-w);return{points:c,sampleCount:c.length,observedSamples:l+d+u,belowSamples:l,insideSamples:d,aboveSamples:u,totalDuration:v,observedDuration:b,unobservedDuration:Math.max(0,v-b),belowDuration:g,insideDuration:y,aboveDuration:x,peakExcess:h,peakExcessAt:f,peakDeficit:m,peakDeficitAt:p}}function kr(e){return{id:e,furthestStageIndex:-1,visitedStageIds:[],visitsByStage:{},firstEnteredAt:{},lastEnteredAt:{},regressionCount:0}}function $r(e){const t=Array.from(new Set(e.bodyIds??[]));return{stages:e.stages.map(e=>({...e})),bodyIds:t,entities:Object.fromEntries(t.map(e=>[e,kr(e)]))}}function Ar(e,t,n={}){if("region-enter"!==t.type)return e;const o=function(e,t){const n=t.stageId?.(e);if(n)return n;const o=e.region.metadata;if(o&&"object"==typeof o){const e=o.stageId;if("string"==typeof e)return e}return e.region.id}(t,n),r=e.stages.findIndex(e=>e.id===o);if(0>r)return e;const i=n.entityId?.(t)??t.bodyId;if(!i)return e;const a=e.entities[i]??kr(i),s=a.currentStageId?e.stages.findIndex(e=>e.id===a.currentStageId):-1,c=!a.visitedStageIds.includes(o),l=Number(t.observation.timestamp),d=Number.isFinite(l)?l:0,u={...a,currentStageId:o,furthestStageId:r>a.furthestStageIndex?o:a.furthestStageId,furthestStageIndex:Math.max(a.furthestStageIndex,r),visitedStageIds:c?[...a.visitedStageIds,o]:a.visitedStageIds,visitsByStage:{...a.visitsByStage,[o]:(a.visitsByStage[o]??0)+1},firstEnteredAt:c?{...a.firstEnteredAt,[o]:d}:a.firstEnteredAt,lastEnteredAt:{...a.lastEnteredAt,[o]:d},regressionCount:s>=0&&s>r?a.regressionCount+1:a.regressionCount};return{...e,bodyIds:e.bodyIds.includes(i)?e.bodyIds:[...e.bodyIds,i],entities:{...e.entities,[i]:u}}}function Sr(e){const t=e.bodyIds.map(t=>e.entities[t]??kr(t)),n=t.length;let o=n;return e.stages.map((e,r)=>{const i=t.filter(e=>e.furthestStageIndex>=r).length,a=t.filter(t=>t.visitedStageIds.includes(e.id)).length,s=t.reduce((t,n)=>t+(n.visitsByStage[e.id]??0),0),c={id:e.id,label:e.label??e.id,reached:i,entered:a,total:n,conversion:n>0?i/n:0,fromPrevious:o>0?i/o:0,dropoff:Math.max(0,o-i),visits:s,repeatVisits:Math.max(0,s-a)};return o=i,c})}function Ir(e,t){if("function"==typeof t){const n=t(e);return Number.isFinite(n)&&n>0?Number(n):1}const n=e.datum;if(t&&n&&"object"==typeof n){const e=Number(n[t]);if(Number.isFinite(e)&&e>0)return e}const o=Number(n?.work??n?.reviewWork??n?.value);return Number.isFinite(o)&&o>0?o:1}function Cr(e,t){if("function"==typeof t){const n=t(e);if(null!=n&&(n+"").length>0)return n+""}else if(t){const n=zr(e.datum,t),o=zr(e,t),r=n??o;if(null!=r&&(r+"").length>0)return r+""}return e.id}function Nr(e,t){if(0===e.length)return 0;if(1===e.length)return e[0];const n=Math.max(0,Math.min(1,t))*(e.length-1),o=Math.floor(n);return e[o]+(e[Math.ceil(n)]-e[o])*(n-o)}function zr(e,t){if(!t)return;let n=e;for(const e of t.split(".")){if(null==n||"object"!=typeof n)return;n=n[e]}return n}function Fr(e,t){if(!t)return!0;if("function"==typeof t)return t(e);const n=zr(e,t.property);return!("equals"in t&&!Object.is(n,t.equals)||"notEquals"in t&&Object.is(n,t.notEquals)||t.oneOf&&!t.oneOf.some(e=>Object.is(n,e))||t.notOneOf&&t.notOneOf.some(e=>Object.is(n,e)))}function Wr(e){const t=e.regionId,n=Math.max(0,e.unitsPerSecond),o=e.queueLayout??"lane",r=e.queueSlotSpacing??14,i=e.queueStiffness??.35,a=Number.isFinite(e.maxQueue)?Math.max(0,Math.floor(Number(e.maxQueue))):1/0,s=Math.max(.25,e.metricWindowSeconds??30),c=Math.max(1/60,e.snapshotIntervalSeconds??.25),l=e.releaseImpulse??{x:90,y:0},d=new Map,u=new Map,h=new Map,f=new Map,m=new Map,p=new Map,g=new Map,y=[];let x=0,b=new Map,w=new Map,M=0,v=0,k=0,$=null,A=0,S=0,I=0,C=0,N=0,z=0,F=0,W=0,L=0,j=0,R=0,O=0,E=-1,P=!1;function T(e,n){const o=n(e);return!!o&&o.activeRegionIds.includes(t)}function q(){O+=1}function D(e){return{bodyId:e.bodyId,jobId:e.jobId,visitId:e.visitId,visit:e.visit,regionId:t,work:e.total,queuedAt:e.queuedAt}}function B(n,o,r,i){const a={bodyId:n.id,jobId:o.jobId,visitId:o.visitId,visit:o.visit,remaining:o.work,total:o.work,queuedAt:o.queuedAt,sequence:i};return d.set(o.jobId,a),g.delete(n.id),p.set(n.id,o.jobId),S+=1,I+=o.work,q(),function(n,o,r){const i=D(o);e.onQueued?.(n,i),r.controls.recordObservation({type:"physics-capacity-queued",bodyId:n.id,datum:n.datum,x:n.x,y:n.y,regionId:t,work:o.total,jobId:o.jobId,visitId:o.visitId,visit:o.visit,queuedAt:o.queuedAt,queueDepth:d.size})}(n,a,r),a}function H(e){if(d.size>=a||0===u.size)return;const t=Array.from(u.values()).sort((e,t)=>e.sequence-t.sequence);for(const n of t){if(d.size>=a)break;const t=m.get(n.jobId);t&&h.has(n.jobId)?(u.delete(n.jobId),g.delete(n.bodyId),B(t,n,e,n.sequence)):u.delete(n.jobId)}}function Y(){let e=0;for(const t of d.values())e+=t.remaining;return e}function G(){L=Math.max(L,d.size),j=Math.max(j,Y())}function X(){const e=k-s,t=Math.max(0,Math.min(s,k-($??k)));let o=0,r=0,i=0,a=0,c=0;for(const t of y){if(e>t.end)continue;o+=t.arrivals,r+=t.arrivalWork,i+=t.completions,a+=t.completedWork;const n=t.end-t.start;c+=n>0&&e>t.start?t.processedWork*Math.min(1,Math.max(0,t.end-e)/n):t.processedWork}const l=t>0?r/t:0;return{seconds:t,arrivals:o,arrivalWork:r,completions:i,completedWork:a,processedWork:c,arrivalsPerSecond:t>0?o/t:0,throughputPerSecond:t>0?i/t:0,utilization:t>0&&n>0?Math.max(0,Math.min(1,c/(n*t))):0,pressure:n>0?l/n:0}}return{id:e.id??"capacity-queue:"+t,continuous:!1!==e.continuous,tick:o=>{const r=o.controls.readBodies(),i=new Map,S=new Map;for(const t of r){if(i.set(t.id,t),!T(t.id,o.getRegionState))continue;if(!Fr(t,e.bodyFilter))continue;const n=Cr(t,e.jobKey),r=S.get(n)??[];r.push(t),S.set(n,r)}const I=Number.isFinite(o.dt)?Math.max(0,o.dt):0;if(!P){const e=Number.isFinite(o.elapsed)?Math.max(0,o.elapsed):I;k=Math.max(0,e-I),P=!0}const L=k,j=L+I;k=j,$=null==$?L:Math.min($,L);const O={start:L,end:j,arrivals:0,arrivalWork:0,completions:0,completedWork:0,processedWork:0},Y=new Map;for(const[e,t]of S){const n=h.get(e)?.bodyId,o=t.find(e=>e.id===n)??t[0];Y.set(e,o),m.set(e,o)}for(const[n,r]of h){if(Y.has(n))continue;const a=d.get(n),s=i.get(r.bodyId)??m.get(n);if(a){d.delete(n),p.delete(a.bodyId),F+=1,W+=a.remaining,q();const i={...D(a),abandonedAt:k,remainingWork:a.remaining,queueSeconds:Math.max(0,k-a.queuedAt)};s&&e.onAbandoned?.(s,i),o.controls.recordObservation({type:"physics-capacity-abandoned",bodyId:r.bodyId,datum:s?.datum,x:s?.x,y:s?.y,regionId:t,work:a.total,remainingWork:a.remaining,jobId:n,visitId:a.visitId,visit:a.visit,queuedAt:a.queuedAt,abandonedAt:k,queueSeconds:i.queueSeconds,queueDepth:d.size})}u.delete(n),g.delete(r.bodyId),h.delete(n),m.delete(n)}for(const[n,r]of Y){if(h.has(n))continue;const i=(f.get(n)??0)+1;f.set(n,i);const s=Ir(r,e.unitAccessor),c={bodyId:r.id,jobId:n,visitId:`${t}:${n}:${i}`,visit:i,regionId:t,work:s,queuedAt:k};h.set(n,c),A+=1,O.arrivals+=1,O.arrivalWork+=s;const l=x++;if(a>d.size)B(r,c,o,l);else{const a={...c,blockedAt:k,sequence:l};u.set(n,a),g.set(r.id,n),z+=1,q(),e.onBlocked?.(r,a),o.controls.recordObservation({type:"physics-capacity-blocked",bodyId:r.id,datum:r.datum,x:r.x,y:r.y,regionId:t,work:s,jobId:n,visitId:c.visitId,visit:i,queuedAt:k,blockedAt:k,queueDepth:d.size,blockedDepth:u.size})}}H(o),G();const X=Array.from(d.values()).sort((e,t)=>e.sequence-t.sequence);let V=n*I;for(const n of X){if(0>=V)break;const r=Math.min(n.remaining,V);if(n.remaining-=r,V-=r,C+=r,O.processedWork+=r,n.remaining>1e-6)continue;d.delete(n.jobId),p.delete(n.bodyId),v+=1,N+=n.total,O.completions+=1,O.completedWork+=n.total;const a=Math.max(0,k-n.queuedAt);R+=a,q();const s=i.get(n.bodyId);if(!s)continue;o.controls.applyImpulse(n.bodyId,l.x??0,l.y??0);const c={...D(n),completedAt:k,queueSeconds:a};e.onProcessed?.(s,c),o.controls.recordObservation({type:"physics-capacity-processed",bodyId:n.bodyId,datum:s.datum,x:s.x,y:s.y,regionId:t,work:n.total,jobId:n.jobId,visitId:n.visitId,visit:n.visit,queuedAt:n.queuedAt,completedAt:k,queueSeconds:a,queueDepth:d.size})}H(o),G(),function(){const e=Array.from(d.values()).sort((e,t)=>e.sequence-t.sequence);b=new Map(e.map((e,t)=>[e.bodyId,t]));const t=Array.from(u.values()).sort((e,t)=>e.sequence-t.sequence);w=new Map(t.map((e,t)=>[e.bodyId,t])),M=e.length}(),function(e){(e.end>e.start||e.arrivals>0||e.completions>0||e.processedWork>0)&&y.push(e);const t=k-s;for(;y.length>0&&t>y[0].end;)y.shift()}(O);const _=Math.floor(k/c);_!==E&&(E=_,q())},getSnapshot:()=>{const e=Y(),o=function(){let e=0;for(const t of u.values())e+=t.work;return e}(),r=d.size,i=Array.from(d.values()).map(e=>Math.max(0,k-e.queuedAt)).sort((e,t)=>e-t),a=i.reduce((e,t)=>e+t,0);return{regionId:t,queueDepth:r,processedCount:v,unitsPerSecond:n,remainingWork:e,meanRemainingWork:r>0?e/r:0,waitingWork:e+o,blockedDepth:u.size,blockedWork:o,arrivalCount:A,admittedCount:S,admittedWork:I,processedWork:C,completedWork:N,blockedCount:z,abandonedCount:F,abandonedWork:W,peakQueueDepth:L,peakRemainingWork:j,queueAge:{count:i.length,meanSeconds:i.length>0?a/i.length:0,p50Seconds:Nr(i,.5),p95Seconds:Nr(i,.95),oldestSeconds:i.at(-1)??0},meanCompletedQueueSeconds:v>0?R/v:0,window:X(),simulatedAt:k,metricRevision:O}},bodyForce:e=>{if("none"===o)return null;const n=p.get(e.body.id),a=g.get(e.body.id),s=n?d.get(n):void 0,c=a?u.get(a):void 0;if(!s&&!c)return null;const l=s?b.get(e.body.id):w.get(e.body.id);if(null==l)return null;let h;const f=e.regions;if(f)for(let e=0;f.length>e;e+=1)if(f[e].id===t){const t=f[e].shape;t&&"aabb"===t.type&&(h=t);break}return h?{x:((c?h.x-.44*h.width:h.x-.22*h.width-l*(.15*r))-e.body.x)*i,y:(h.y-(l-((c?u.size:M)-1)/2)*r/Math.max(1,Math.sqrt(c?u.size:M))-e.body.y)*i*.85}:{x:8*-Math.sign(e.body.vx||1),y:0}}}}function Lr(e,t){if(!t)return;let n=e;for(const e of t.split(".")){if(null==n||"object"!=typeof n)return;n=n[e]}return n}function jr(e,t){if(!t)return!0;if("function"==typeof t)return t(e);const n=Lr(e,t.property);return!("equals"in t&&!Object.is(n,t.equals)||"notEquals"in t&&Object.is(n,t.notEquals)||t.oneOf&&!t.oneOf.some(e=>Object.is(n,e))||t.notOneOf&&t.notOneOf.some(e=>Object.is(n,e)))}function Rr(e){const t=e.resources.map(e=>({...e,bodyId:e.bodyId??e.id})),n=new Map(t.map(e=>[e.bodyId,e])),o=new Map,r=new Map,i=e.assignmentForce??.45,a=e.returnForce??.35,s=e.caseAttraction??.08,c=e.assignmentOffset??{x:0,y:0};let l=new Map,d=0,u=0;return{id:e.id??"service-resource-pool",continuous:!0,assign:e=>{const n=o.get(e);if(n)return n;const i=t.find(e=>!r.has(e.id));if(!i)return null;const a={resourceId:i.id,resourceBodyId:i.bodyId,caseBodyId:e,assignedAt:d};return o.set(e,a),r.set(i.id,a),u+=1,a},release:e=>{const t=o.get(e);return!!t&&(o.delete(e),r.delete(t.resourceId),u+=1,!0)},getAssignment:e=>o.get(e),tick:e=>{d=Math.max(d,e.elapsed),l=new Map(e.controls.readBodies().map(e=>[e.id,e]));for(const[e,t]of o)l.has(e)&&l.has(t.resourceBodyId)||(o.delete(e),r.delete(t.resourceId),u+=1)},getSnapshot:()=>({total:t.length,available:t.length-r.size,assigned:r.size,assignments:Array.from(o.values()),simulatedAt:d,metricRevision:u}),bodyForce:e=>{const t=n.get(e.body.id);if(t){const n=r.get(t.id),o=n?l.get(n.caseBodyId):void 0,s=n?i:a;return{x:((o?o.x+(c.x??0):t.home.x)-e.body.x)*s,y:((o?o.y+(c.y??0):t.home.y)-e.body.y)*s}}const d=o.get(e.body.id);if(!d||0>=s)return null;const u=l.get(d.resourceBodyId);return u?{x:(u.x-e.body.x)*s,y:(u.y-e.body.y)*s}:null}}}function Or(e,t){const n="function"==typeof t.deadlineAccessor?t.deadlineAccessor(e):Lr(e.datum,t.deadlineAccessor)??Lr(e,t.deadlineAccessor);return Number.isFinite(Number(n))?Math.max(0,Number(n)):0}function Er(e){const t=new Map;let n=0,o=0;function r(n){t.set(n.bodyId,n),o+=1,e.onStateChange?.({...n})}function i(e){const o=t.get(e);return!(!o||null!=o.completedAt||(r({...o,completedAt:n,state:"unhappy"===o.state?"resolved-unhappy":"resolved"}),0))}return{id:e.id??"service-level",continuous:!0,protect:e=>{const o=t.get(e);return!(!o||null!=o.completedAt||"unhappy"===o.state||(r({...o,state:"protected",protectedAt:n}),0))},complete:i,getCase:e=>t.get(e),tick:o=>{n=Math.max(n,o.elapsed);for(const a of o.controls.readBodies()){if(!jr(a,e.bodyFilter))continue;if(!t.has(a.id)){const t=Or(a,e);r({bodyId:a.id,openedAt:n,deadlineAt:n+t,state:"waiting"})}const s=t.get(a.id);s&&null==s.completedAt&&(e.completionRegionId&&o.getRegionState(a.id)?.activeRegionIds.includes(e.completionRegionId)?i(a.id):"waiting"!==s.state||s.deadlineAt>n||r({...s,state:"unhappy"}))}},getSnapshot:()=>{const e=Array.from(t.values()),r=t=>e.filter(e=>e.state===t).length;return{total:e.length,waiting:r("waiting"),protected:r("protected"),unhappy:r("unhappy"),resolved:r("resolved"),resolvedUnhappy:r("resolved-unhappy"),simulatedAt:n,metricRevision:o}}}}function Pr(e){const t=new Set;let n=0,o=0,r=0,i=!1;return{id:e.id??"dependency-gate:"+e.regionId,continuous:!0,tick:a=>{n=Math.max(n,a.elapsed);const s=i;var c;c=n,i=e.isOpen?e.isOpen(c):null!=e.opensAt&&c>=e.opensAt;const l=a.controls.readBodies(),d=new Map(l.map(e=>[e.id,e]));for(const n of l){const o=a.getRegionState(n.id)?.activeRegionIds.includes(e.regionId);o&&jr(n,e.bodyFilter)&&(i||t.has(n.id)||(t.add(n.id),r+=1,e.onHeld?.(n)))}if(i&&!s){for(const n of t){const t=d.get(n);t&&(a.controls.applyImpulse(n,e.releaseImpulse?.x??86,e.releaseImpulse?.y??0),o+=1,e.onReleased?.(t))}t.clear(),r+=1}for(const e of t)d.has(e)||(t.delete(e),r+=1)},getSnapshot:()=>({regionId:e.regionId,isOpen:i,blocked:t.size,released:o,simulatedAt:n,metricRevision:r}),bodyForce:n=>{if(i||!t.has(n.body.id))return null;const o=n.regions?.find(t=>t.id===e.regionId),r=o?.shape;if(!r||"aabb"!==r.type)return{x:.8*-n.body.vx,y:.8*-n.body.vy};const a=e.holdForce??.4;return{x:(r.x-n.body.x)*a-.45*n.body.vx,y:(r.y-n.body.y)*a-.45*n.body.vy}}}}function Tr(e,t){return e||t?{x:(e?.x??0)+(t?.x??0),y:(e?.y??0)+(t?.y??0)}:null}function qr(e){if(!e?.length)return null;const t=e.slice(),n=t.some(e=>!1!==e.continuous);return{controllers:t,continuous:n,onTick:(e,n,o)=>{const r={result:e,controls:n,dt:o.dt,elapsed:o.elapsed,getRegionState:o.getRegionState};for(const e of t)e.tick(r)},bodyForce:e=>{let n=null;for(const o of t)o.bodyForce&&(n=Tr(n,o.bodyForce(e)));return n}}}function Dr(e){const t=new Set,n=e.impulse??{x:-60,y:0};return{id:e.id??"portal:"+e.fromRegionId,continuous:!0===e.continuous,tick:o=>{const r=o.controls.readBodies();for(const i of r){const r=o.getRegionState(i.id),a=r?.activeRegionIds.includes(e.fromRegionId);a?t.has(i.id)||(t.add(i.id),o.controls.applyImpulse(i.id,n.x??0,n.y??0),e.onPortal?.(i)):t.delete(i.id)}}}}import{Fragment as Br,jsx as Hr,jsxs as Yr}from"react/jsx-runtime";var Gr={flow:{fill:"rgba(59, 130, 246, 0.14)",stroke:"rgba(96, 165, 250, 0.7)",accent:"#60a5fa"},capacity:{fill:"rgba(251, 146, 60, 0.18)",stroke:"rgba(251, 146, 60, 0.85)",accent:"#fb923c"},portal:{fill:"rgba(244, 114, 182, 0.14)",stroke:"rgba(244, 114, 182, 0.7)",accent:"#f472b6"},absorb:{fill:"rgba(52, 211, 153, 0.18)",stroke:"rgba(52, 211, 153, 0.8)",accent:"#34d399"}};function Xr(e,t,n){return Math.max(t,Math.min(n,e))}function Vr(e){return 6.2*e.length}function _r(e,t){const n=e.trim();if(t>=n.length)return n;if(1>=t)return n.slice(0,1);const o=n.split(/\s+/).filter(Boolean).map(e=>e[0]).join("").toUpperCase();return o.length>1&&t>=o.length?o:t>3?n.slice(0,Math.max(1,t-2))+"..":n.slice(0,t).toUpperCase()}function Kr(e,t,n="auto"){const o=Math.max(1,Math.floor(t/6.2)),r="compact"===n?_r(e,o):"full"===n?e:Vr(e)>t?_r(e,o):e;return{text:r,textLength:Vr(r)>t?Math.max(4,t):void 0}}function Ur(e,t={}){const{showFlowSpine:n=!0,showStageCounts:o=!0,showCapacityBadges:r=!0,showGroupSockets:i=!0,stageLabelMode:a="auto",outlineStages:s=!1,testId:c="process-flow-chrome"}=t,{width:l,height:d,left:u,right:h,topY:f,bottomY:m,midY:p,stages:g,groups:y=[]}=e,x=m-f;return Yr("svg",{"aria-hidden":"true","data-testid":c,"data-outline-stages":s?"true":void 0,width:l,height:d,viewBox:`0 0 ${l} ${d}`,style:{position:"absolute",inset:0,pointerEvents:"none"},className:["semiotic-process-chrome",s?"semiotic-process-chrome--outline-stages":null].filter(Boolean).join(" "),children:[Hr("defs",{children:Yr("linearGradient",{id:"semiotic-process-floor",x1:"0",x2:"0",y1:"0",y2:"1",children:[Hr("stop",{offset:"0%",stopColor:"var(--semiotic-process-floor, var(--semiotic-bg, #0f172a))",stopOpacity:"0.2"}),Hr("stop",{offset:"100%",stopColor:"var(--semiotic-process-lane, var(--semiotic-surface, #1e293b))",stopOpacity:"0.55"})]})}),Hr("rect",{x:0,y:0,width:l,height:d,fill:"url(#semiotic-process-floor)"}),Hr("rect",{x:u-6,y:f-8,width:h-u+12,height:x+16,rx:14,fill:"var(--semiotic-process-lane, var(--semiotic-surface, #111827))",fillOpacity:.45,stroke:"var(--semiotic-process-border, var(--semiotic-border, #334155))",strokeOpacity:.95}),n?Hr("line",{x1:u+8,x2:h-8,y1:p,y2:p,stroke:"var(--semiotic-process-border, var(--semiotic-border, #475569))",strokeWidth:2,strokeDasharray:"6 8",opacity:.55}):null,g.map((e,t)=>{const n=function(e){return e.absorb?"absorb":e.portalTarget?"portal":null!=e.capacity?"capacity":"flow"}(e),i=Gr[n],c=Math.max(12,e.width-8),l=Xr(c-8,22,88),u=Kr(e.label,Math.max(8,l-10),a),h="none"!==a&&c-8>=22,y=function(e){if(null!=e.capacity){const t=null!=e.queueDepth?" · q "+e.queueDepth:"";return e.capacityLabel?`${e.capacityLabel}${t}`:`cap ${Number.isInteger(e.capacity)?e.capacity+"":e.capacity.toFixed(1)}${t}`}return e.absorb?"absorb":e.portalTarget?"portal":"flow"}(e),b=Kr(y,Math.max(16,c-10),"auto"),w=r&&!1!==e.showBadge&&c>=32,M=null!=e.count?`n=${e.count}${null!=e.processed?" done "+e.processed:""}`:"",v=Kr(M,Math.max(16,c-8),"auto"),k=Math.max(30,f-15),$=k-13;return Yr("g",{"data-stage":e.id,"data-role":n,children:[Hr("rect",{className:"semiotic-process-chrome__stage-bay",x:e.x0+4,y:f+6,width:c,height:x-12,rx:10,fill:s?"none":i.fill,stroke:i.stroke,strokeWidth:s?1.85:"flow"===n?1:1.6}),g.length-1>t?Hr("polygon",{points:`${e.x1-2},${p-7} ${e.x1+8},${p} ${e.x1-2},${p+7}`,fill:i.accent,opacity:.85}):null,h?Yr(Br,{children:[Hr("rect",{className:"semiotic-process-chrome__stage-label-bg",x:e.x-l/2,y:$,width:l,height:18,rx:9,fill:"var(--semiotic-bg, #0f172a)",fillOpacity:.75,stroke:i.stroke}),Yr("text",{x:e.x,y:k,textAnchor:"middle",fill:i.accent,fontSize:10,fontWeight:800,className:"semiotic-process-chrome__stage-label",textLength:u.textLength,lengthAdjust:u.textLength?"spacingAndGlyphs":void 0,children:[Hr("title",{children:e.label}),u.text]})]}):null,w?Yr("text",{x:e.x,y:f+22,textAnchor:"middle",fill:"var(--semiotic-process-muted, var(--semiotic-text-secondary, #94a3b8))",fontSize:9,fontWeight:700,textLength:b.textLength,lengthAdjust:b.textLength?"spacingAndGlyphs":void 0,children:[Hr("title",{children:y}),b.text]}):null,o&&null!=e.count?Yr("text",{x:e.x,y:Math.min(d-8,m+16),textAnchor:"middle",fill:"var(--semiotic-process-text, var(--semiotic-text, #e2e8f0))",fontSize:11,fontWeight:800,textLength:v.textLength,lengthAdjust:v.textLength?"spacingAndGlyphs":void 0,children:[Hr("title",{children:M}),v.text]}):null]},e.id)}),i?y.map((e,t)=>{const n=e.total??0,o=e.absorbed??0,r=e.complete??(n>0&&o>=n),i=!r&&n>0&&o/n>=.75,a=r?"rgba(52, 211, 153, 0.35)":i?"rgba(251, 191, 36, 0.28)":"rgba(15, 23, 42, 0.75)",s=r?"#34d399":i?"#fbbf24":"var(--semiotic-border, #64748b)",c=n>0?`${o}/${n}${r?" shipped":i?" almost":""}`:"feature "+(t+1),l=Xr(Math.max(54,Vr(e.label)+18,Vr(c)+16),54,104),d=Kr(e.label,l-12,"auto"),u=Kr(c,l-12,"auto");return Yr("g",{"data-group":e.id,children:[Hr("rect",{x:e.x-l/2,y:e.y-22,width:l,height:44,rx:10,fill:a,stroke:s,strokeWidth:1.5}),Yr("text",{x:e.x,y:e.y-4,textAnchor:"middle",fill:"var(--semiotic-process-text, var(--semiotic-text, #f8fafc))",fontSize:10,fontWeight:800,textLength:d.textLength,lengthAdjust:d.textLength?"spacingAndGlyphs":void 0,children:[Hr("title",{children:e.label}),d.text]}),Yr("text",{x:e.x,y:e.y+12,textAnchor:"middle",fill:s,fontSize:9,fontWeight:700,textLength:u.textLength,lengthAdjust:u.textLength?"spacingAndGlyphs":void 0,children:[Hr("title",{children:c}),u.text]})]},e.id)}):null]})}function Zr(e){const[t,n]=e.size,o=e.flow??"down",r=null==(M=e.padding)?{top:24,right:24,bottom:24,left:24}:"number"==typeof M?{top:M,right:M,bottom:M,left:M}:{top:M.top??0,right:M.right??0,bottom:M.bottom??0,left:M.left??0},i=Math.max(.05,Math.min(1,e.channelRatio??1)),a={x:r.left,y:r.top,width:Math.max(1,t-r.left-r.right),height:Math.max(1,n-r.top-r.bottom)},s="down"===o?a.height:a.width,c=s*Math.max(0,e.chargeExtent??.12),l=s*Math.max(0,e.projectionExtent??0),d=s*Math.max(0,e.destinationExtent??.55),u=Math.max(0,s-c-d-l),h=function(e){return"number"==typeof e?Array.from({length:Math.max(1,Math.round(e))},(e,t)=>({id:"bin-"+t,label:t+""})):0===e.length?[{id:"bin-0",label:"0"}]:e.map((e,t)=>({id:e.id,label:e.label??e.id??t+""}))}(e.destinations),f=("down"===o?a.width:a.height)/h.length,m="down"===o?(e,t)=>({x:a.x,y:a.y+e,width:a.width,height:t}):(e,t)=>({x:a.x+e,y:a.y,width:t,height:a.height}),p=m(0,c),g=m(c,u),y=c+u,x=m(y,d),b=m(y+d,l),w=h.map((e,t)=>{const n=t*f,r=f*i,s=(f-r)/2;return"down"===o?{id:e.id,label:e.label,order:t,x:a.x+n+s,y:x.y,width:r,height:x.height,centerX:a.x+(t+.5)*f,centerY:x.y+x.height/2}:{id:e.id,label:e.label,order:t,x:x.x,y:a.y+n+s,width:x.width,height:r,centerX:x.x+x.width/2,centerY:a.y+(t+.5)*f}});var M;return{width:t,height:n,flow:o,charge:p,apparatus:g,destinations:w,projection:b}}function Qr(e,t){return e.destinations.find(e=>e.id===t)}function Jr(e,t,n){const{charge:o,flow:r}=e,i=Math.max(1,n),a=(t%i+.5)/i;return"down"===r?{x:o.x+o.width*a,y:o.y+o.height/2}:{x:o.x+o.width/2,y:o.y+o.height*a}}function ei(e,t={}){const n=t.thickness??4,o=t.idPrefix??"stage",{destinations:r,flow:i,width:a,height:s}=e,c=[];if(r.length>0){const t=r[0];if("down"===i){const i=t.y+t.height;c.push({id:o+"-floor",shape:{type:"segment",x1:e.charge.x,y1:i,x2:e.charge.x+e.charge.width,y2:i,thickness:n}});for(let e=1;r.length>e;e+=1){const a=r[e].centerX-(r[e].centerX-r[e-1].centerX)/2;c.push({id:`${o}-divider-${e}`,shape:{type:"segment",x1:a,y1:t.y,x2:a,y2:i,thickness:n}})}}else{const i=t.x+t.width;c.push({id:o+"-floor",shape:{type:"segment",x1:i,y1:e.charge.y,x2:i,y2:e.charge.y+e.charge.height,thickness:n}});for(let e=1;r.length>e;e+=1){const a=r[e].centerY-(r[e].centerY-r[e-1].centerY)/2;c.push({id:`${o}-divider-${e}`,shape:{type:"segment",x1:t.x,y1:a,x2:i,y2:a,thickness:n}})}}}return!1!==t.walls&&c.push({id:o+"-wall-left",shape:{type:"segment",x1:1,y1:0,x2:1,y2:s,thickness:n}},{id:o+"-wall-right",shape:{type:"segment",x1:a-1,y1:0,x2:a-1,y2:s,thickness:n}}),c}function ti(e,t={}){return`${t.charge??"bodies"} enter at the ${"down"===e.flow?"top":"left"}, travel ${"down"===e.flow?"downward":"left to right"} through ${t.apparatus??"the apparatus"}, and come to rest in ${e.destinations.length} ${t.destination??"destinations"}: ${e.destinations.map(e=>e.label).join(", ")}.`}function ni(e){const t="number"==typeof e?e:"string"==typeof e&&e.trim()?Number(e):NaN;return Number.isFinite(t)?t:null}function oi(e,t,n,o){const r="function"==typeof e?e(t,n):e;return Number.isFinite(r)?Number(r):o}function ri(e,t,n){return ni(e[t])??n}function ii(e,t){return"number"==typeof e?e:e?.[t]??0}function ai(e){const{band:t,idPrefix:n,plot:o,projection:r}=e,{includeBoundaryWalls:i=!0,includeInteriorWalls:a=!0,wallThickness:s=4}=t,c=function(e){const t=e.bandwidth??e.scale.bandwidth?.()??0,n=new Set;for(const o of e.values){const r=e.scale(o);Number.isFinite(r)&&(n.add(Number(r)),n.add(Number(r)+t))}return Array.from(n).sort((e,t)=>e-t)}(t);if(2>c.length)return[];const l=i?c.length-1:c.length-2,d=[];for(let e=i?0:1;l>=e;e+=1){if(!a&&e>0&&c.length-1>e)continue;const t=c[e];d.push({id:`${n}-wall-${e}`,shape:"x"===r?{type:"aabb",x:t,y:o.y+o.height/2,width:s,height:o.height}:{type:"aabb",x:o.x+o.width/2,y:t,width:o.width,height:s}})}return d}function si(e){const{plot:t,idPrefix:n="physics-scale",bounds:o={},xBins:r,xBands:i,yBands:a}=e,s=[];if(!1!==o&&s.push(...b(t,{idPrefix:n,...o})),r){const{idPrefix:e,yTop:o,yBottom:i,...a}=r;s.push(...w({...a,idPrefix:e??n+"-xbin",yTop:o??t.y,yBottom:i??t.y+t.height}))}return i&&s.push(...ai({band:i,idPrefix:i.idPrefix??n+"-xband",plot:t,projection:"x"})),a&&s.push(...ai({band:a,idPrefix:a.idPrefix??n+"-yband",plot:t,projection:"y"})),s}function ci(e){const{plot:t,rows:n,columns:o=n+1,pegRadius:r=3,idPrefix:i="galton-peg",yStart:a=t.y+.18*t.height,yEnd:s=t.y+.58*t.height,stagger:c=!0,restitution:l=.2,friction:d=.04}=e,u=Math.max(0,Math.floor(n)),h=Math.max(1,Math.floor(o));if(0===u)return[];const f=u>1?(s-a)/(u-1):0,m=t.width/h,p=[];for(let e=0;u>e;e+=1){const n=c&&e%2==1?m/2:0;for(let o=0;h>o;o+=1){const s=t.x+m*(o+.5)+n;t.x+r>s||s>t.x+t.width-r||p.push({id:`${i}-${e}-${o}`,shape:{type:"aabb",x:s,y:a+e*f,width:2*r,height:2*r},restitution:l,friction:d})}}return p}function li(e,t={}){const{idPrefix:n="physics-token",radius:o=5,shape:r,mass:i,vx:a,vy:s,spawnAt:c,seed:l=1,jitter:d,datum:u}=t,h=v(l),f=ii(d,"x"),m=ii(d,"y");return e.map((e,l)=>{const d=oi(t.x,e,l,ri(e,"x",0)),p=oi(t.y,e,l,ri(e,"y",0)),g=oi(o,e,l,5),y="function"==typeof r?r(e,l):r??{type:"circle",radius:g};return{id:`${n}-${e.index??l}`,x:d+(h()-.5)*f,y:p+(h()-.5)*m,vx:oi(a,e,l,0),vy:oi(s,e,l,0),mass:oi(i,e,l,1),spawnAt:oi(c,e,l,void 0),shape:y,datum:u?u(e,l):e.datum??e}}).map(e=>{if(Number.isFinite(e.spawnAt))return e;const{spawnAt:t,...n}=e;return n})}function di(e,t={}){const{idPrefix:n="sediment",collider:o=!0,colliderThickness:r=1,restitution:i=.05,friction:a=.2,...s}=t,c=M(e,s),l=o?c.filter(e=>e.height>0).map(e=>({id:`${n}-${e.binId}`,shape:{type:"aabb",x:e.x+e.width/2,y:e.y+r/2,width:e.width,height:r},restitution:i,friction:a})):[];return{columns:c,colliders:l}}function ui(e,t={}){const{timeAccessor:n="arrivalTime",timeScale:o=1,startAt:r=0,rebase:i=!0,sort:a=!0}=t,s=e.map((e,t)=>({spawn:e,time:function(e,t,n){return ni("function"==typeof n?n(e,t):e[n]??e.datum?.[n])}(e,t,n)??e.spawnAt??t})),c=s.length?Math.min(...s.map(e=>e.time)):0;return{initialSpawns:s.map(({spawn:e,time:t})=>({...e,spawnAt:r+(i?t-c:t)})).sort((e,t)=>a?(e.spawnAt??0)-(t.spawnAt??0):0),initialSpawnPacing:{pacing:"arrival",startAt:r,timeAccessor:"spawnAt",timeScale:o}}}function hi(e,t,n="group"){const o=Jo(e,t),r=e=>"function"==typeof n?n(e):e[n]??0;return e.slice().sort((e,t)=>{const n=r(e),i=r(t);return i>n?-1:n>i?1:(o[t.id]||0)-(o[e.id]||0)}).map(e=>e.id)}function fi(e,t={}){const n=t.baseline??.62,o=t.inset??.06,r={},i=e.length;return e.forEach((e,t)=>{r[e]={x:i>1?o+t/(i-1)*(1-2*o):.5,y:n}}),r}function mi(e,t,n=.55){return`M${e.x},${e.y} Q${(e.x+t.x)/2},${e.y-Math.abs(t.x-e.x)*n} ${t.x},${t.y}`}function pi(e,t={}){const n=t.radius??.42,o=t.center?.x??.5,r=t.center?.y??.5,i=t.startAngle??0,a={},s=e.length;return e.forEach((e,t)=>{const c=i+t/s*Math.PI*2-Math.PI/2;a[e]={x:o+Math.cos(c)*n,y:r+Math.sin(c)*n}}),a}function gi(e,t,n={}){const o=(n.order??hi(e,t,n.groupAccessor??"group")).slice(),r=new Map(o.map((e,t)=>[e,t])),i=new Map;for(const e of t){if(!r.has(e.source)||!r.has(e.target)||e.source===e.target)continue;const t=e.target>e.source?`${e.source}\0${e.target}`:`${e.target}\0${e.source}`;i.set(t,(i.get(t)||0)+(e.value??1))}const a=[];let s=0;for(const[e,t]of i){const[n,o]=e.split("\0"),i=r.get(n),c=r.get(o);t>s&&(s=t),a.push({row:i,col:c,source:n,target:o,value:t}),a.push({row:c,col:i,source:o,target:n,value:t})}return{order:o,cells:a,size:o.length,maxValue:s}}function yi(e){return!!e&&"object"==typeof e&&!Array.isArray(e)}function xi(e){if("string"!=typeof e)return;const t=e.trim();return t.length?t:void 0}function bi(e,t){const n=yi(e.note)?e.note:void 0;return t?xi(e.mobileText)||xi(e.shortText)||xi(e.label)||xi(n?.mobileText)||xi(n?.shortText)||xi(n?.label)||xi(n?.title):xi(e.label)||xi(e.mobileText)||xi(e.shortText)||xi(n?.label)||xi(n?.title)}function wi(e,t,n){const o=function(e,t,n){if(!n)return;const o="function"==typeof n?n(e,t):e[n];return"number"==typeof o&&Number.isFinite(o)?o:void 0}(e,t,n.priorityAccessor);if(void 0!==o)return o;let r=1e3-t;const i=((e.emphasis??"")+"").toLowerCase();"primary"!==i&&"critical"!==i||(r+=1e4),"secondary"===i&&(r-=1e3),"high"===e.priority&&(r+=5e3),"low"===e.priority&&(r-=1500),"number"==typeof e.priority&&(r+=100*e.priority);const a=yi(e.provenance)?e.provenance:void 0;"number"==typeof a?.confidence&&(r+=100*a.confidence);const s=yi(e.lifecycle)?e.lifecycle:void 0,c=((s?.freshness??"")+"").toLowerCase();return"expired"!==c&&"stale"!==c||(r-=3e3),r}function Mi(e,t){if(!t)return e;const n=bi(e,!0);return n&&"string"==typeof e.label?{...e,label:n}:e}function vi(e,t={}){const n=Array.isArray(e)?e.filter(yi):[],o=t.active??(null==t.width||(t.breakpoint??480)>=t.width),r=t.strategy??"hybrid",i=!1!==t.preferShortText,a=!1!==t.preservePrimary,s=Math.max(0,t.maxPlotAnnotations??t.maxAnnotations??("callout-list"===r?1:2)),c=Math.max(0,t.minPlotAnnotations??t.minVisible??1);if(!o||"plot"===r)return{active:o,strategy:r,budget:n.length,visible:i?n.map(e=>Mi(e,i)):n,deferred:[],calloutList:[],hidden:[]};const l=[],d=n.map((e,n)=>({annotation:e,index:n,priority:wi(e,n,t)})).filter(e=>!!I(e.annotation)||(l.push(e.annotation),!1)).sort((e,t)=>t.priority-e.priority),u=a?d.filter(e=>"primary"===((e.annotation.emphasis??"")+"").toLowerCase()):[],h=new Set(u.map(e=>e.index)),f=d.filter(e=>!h.has(e.index)),m=[...u,...f].slice(0,Math.max(s,c)),p=new Set(m.map(e=>e.index)),g=d.filter(e=>!p.has(e.index)),y=[...l,...m.sort((e,t)=>e.index-t.index).map(e=>Mi(e.annotation,i))],x=g.sort((e,t)=>e.index-t.index).map(e=>e.annotation),b=Math.max(0,t.maxCalloutItems??6),w=g.filter(e=>!t.calloutFilter||t.calloutFilter(e.annotation,e.index)).map(e=>function(e,t,n,o){const r=bi(e,o);if(!r)return null;const i=xi(e.id)||xi(e.key)||xi(e.pointId)||"annotation-"+(t+1),a=yi(e.provenance)?xi(e.provenance.source)||xi(e.provenance.authorKind):void 0;return{id:i,label:r,shortLabel:xi(e.shortText),pointId:e.pointId,emphasis:"string"==typeof e.emphasis?e.emphasis:void 0,source:a,priority:n,annotation:e}}(e.annotation,e.index,e.priority,i)).filter(e=>!!e).slice(0,b),M=new Set(w.map(e=>e.annotation)),v=x.filter(e=>!M.has(e));return{active:o,strategy:r,budget:s,visible:y,deferred:x,calloutList:w,hidden:v}}function ki(e){return"dense"===e.density?.75:"compact"===e.density?.9:1}function $i(e,t){const n=!1!==t.keepAxes,o=!1===t.directLabel?12:28;return"ordinal"===e?{top:12,right:o,bottom:n?44:12,left:n?48:12}:"geo"===e||"network"===e?{top:12,right:12,bottom:12,left:12}:{top:12,right:o,bottom:n?42:14,left:n?44:14}}function Ai(e,t,n,o={}){const r={...n},i={mode:!1===t.mode?void 0:"mobile",...r,margin:$i(e,t),...o},a=Object.fromEntries(Object.entries(r).filter(([,e])=>void 0!==e)),s=Object.fromEntries(Object.entries(i).filter(([,e])=>void 0!==e)),c=function(e,t){const n=t.targetSize??44,o=[],r=t.standardControls,i=e=>!0===r||"all"===r||r===e||Array.isArray(r)&&r.includes(e);return i("brush")&&o.push("range-inputs","clear-brush"),i("zoom")&&o.push("zoom-buttons","reset-view"),i("legend")&&o.push("legend-chips","show-all-series"),{strategy:`${e}-${t.transformProfile??"overview"}-mobile-recipe`,supportsResponsiveLayout:!0,breakpoints:[320,360,390,430,t.breakpoint??480,768],maxAnnotations:t.maxAnnotations??2,minimumHitTarget:n,summary:t.summary??!0,interaction:{primary:"tap",hoverFallback:"tap-to-lock",targetSize:n,...o.length>0&&{alternatives:o}},labels:{strategy:!1===t.directLabel?"compact":"direct",minFontSize:12}}}(e,t),l=function(e){return{tapToSelect:!0,tapToLockTooltip:!0,clearSelection:"backgroundTap",targetSize:e.targetSize??44,snap:e.snap??"nearestDatum",brushHandleSize:e.targetSize??44,standardControls:e.standardControls??!1}}(t);return{family:e,props:a,responsiveRules:[{id:e+"-mobile",description:`Apply Semiotic's mobile ${e} recipe at phone width.`,when:{maxWidth:t.breakpoint??480},transform:{...s,mobileInteraction:l,mobileSemantics:c}}],mobileInteraction:l,mobileSemantics:c}}function Si(e={}){const t=ki(e);return Ai("line",e,{showLegend:e.showLegend??!1,directLabel:e.directLabel??!0,lineWidth:"inspect"===e.transformProfile?3:Math.max(1.5,2.5*t),showPoints:"inspect"===e.transformProfile,autoPlaceAnnotations:{mobile:{strategy:"callout-list",maxAnnotations:e.maxAnnotations??2,maxCalloutItems:e.maxCalloutItems??4,progressiveDisclosure:!0,preferShortText:!0}}},{showAxes:e.keepAxes??!0,axisExtent:"exact"})}function Ii(e={}){const t=ki(e);return Ai("area",e,{showLegend:e.showLegend??!1,showPoints:!1,areaOpacity:"compare"===e.transformProfile?.55:.42,lineWidth:Math.max(1.25,2*t),autoPlaceAnnotations:{mobile:{strategy:"callout-list",maxAnnotations:e.maxAnnotations??2,maxCalloutItems:e.maxCalloutItems??4,progressiveDisclosure:!0,preferShortText:!0}}},{showAxes:e.keepAxes??!0,axisExtent:"exact"})}function Ci(e={}){return Ai("ordinal",e,{showLegend:e.showLegend??!1,showCategoryTicks:e.keepAxes??!0,sort:"compare"===e.transformProfile?"desc":void 0},{showAxes:e.keepAxes??!0,axisExtent:"exact"})}function Ni(e={}){const t=ki(e);return Ai("scatter",e,{showLegend:e.showLegend??!1,pointRadius:Math.max(4,Math.round((e.targetSize??44)/8*t)),hoverRadius:Math.ceil((e.targetSize??44)/2),pointOpacity:"dense"===e.density?.42:.68,autoPlaceAnnotations:{mobile:{strategy:"callout-list",maxAnnotations:e.maxAnnotations??1,maxCalloutItems:e.maxCalloutItems??4,progressiveDisclosure:!0,preferShortText:!0}}},{showAxes:e.keepAxes??!0,axisExtent:"exact"})}function zi(e={}){const t=ki(e);return Ai("network",e,{showLegend:e.showLegend??!1,nodeSizeRange:[Math.max(4,Math.round(6*t)),Math.max(12,Math.round((e.targetSize??44)/2*t))],showLabels:"inspect"===e.transformProfile,edgeOpacity:"dense"===e.density?.28:.44})}function Fi(e={}){return Ai("geo",e,{showLegend:e.showLegend??!1})}function Wi(e={}){return Ai("small-multiple",e,{mobileColumns:e.mobileColumns??1,tabletColumns:e.tabletColumns??2,chartHeight:e.chartHeight??180,sharedExtent:!0})}function Li(e,t={}){switch(e){case"line":return Si(t);case"area":return Ii(t);case"ordinal":return Ci(t);case"scatter":return Ni(t);case"network":return zi(t);case"geo":return Fi(t);case"small-multiple":return Wi(t)}}function ji(e={}){const t=e.controls??["range-inputs","chip-filter","clear"];return{mobileInteraction:{enabled:!0,targetSize:e.targetSize??44,tapToSelect:!0,tapToLockTooltip:!0,standardControls:"brush"},mobileSemantics:{interaction:{primary:"filter",alternatives:t,summary:e.summary??"Expose brushable ranges through touch-sized controls in addition to drag gestures."}},controls:t}}export{C as waffleLayout,N as allocateCells,z as isotypeInk,F as isotypePaper,W as isotypeGhost,L as isotypeServerGlyph,j as isotypeChipGlyph,R as isotypeBoltGlyph,O as isotypeBusGlyph,E as isotypePersonPath,P as isotypePersonGlyph,T as isotypeNetworkGlyphs,U as tokenLayer,J as calendarLayout,re as DEFAULT_ISOMETRIC_SPRITE_SIZES,fe as selectIsometricLandmarks,me as isometricLandmarkLayout,Ae as gridifyGeographicPoints,Ce as geographicGridLayout,Xe as sampleGeographicDotGrid,Je as geographicDotGridLayout,et as flextreeLayout,tt as dagreLayout,st as lineageDagLayout,ft as mermaidDagLayout,gt as roundedEnclosure,yt as boundsOf,xt as hullFromBoxes,bt as bandLabel,wt as hatchFill,Mt as linearAxis,vt as markCallout,At as analyzeNetEnsemble,jt as netEnsembleLayout,Dt as packedClusterMatrix,Gt as marimekkoLayout,_t as bulletLayout,Zt as parallelCoordinatesLayout,un as bobaLayout,hn as GRID_FUEL_KEYS,fn as GRID_FUEL_LABELS,gn as stackFuelSeries,yn as demandForecastRows,xn as reserveMarginPct,bn as reserveSeries,wn as thresholdBandsForReserve,Mn as reserveAnnotationBands,vn as summarizeOperatingPoint,kn as gridEventAnnotations,$n as tightestHours,An as formatMw,Sn as formatReservePct,Nn as packIntervals,zn as activeCountOverDomain,Wn as intervalLanesLayout,Ln as curvedEdgePath,jn as orthogonalEdgePath,Rn as boxEdgeAnchors,On as fanOutBend,En as cubicPoint,Pn as cubicTangent,Tn as cubicPath,qn as rectCollide,Hn as axisFixedForcePositions,Yn as axisFixedForceLayout,Gn as wordTrailsProgressiveReveal,eo as wordTrailsLayout,oo as DEFAULT_HIT_RADIUS,io as hitTargetPoint,ao as geoHitTarget,so as geoAreaHitTarget,co as hitTargetRect,lo as networkHitTarget,uo as runs,ho as runLengthEncode,fo as wrapValue,mo as shortestArcDelta,po as cyclicRangeContains,go as selectCyclicRange,yo as layoutSequence,xo as layoutChipStrip,bo as estimateLabelWidth,wo as packSpanLevels,Mo as scaleArcBand,vo as spanArcPath,ko as spanArcPeakY,$o as partitionSharedEdges,So as TAU,Io as polarToXY,Co as xyToAngle,No as angleScale,zo as radiusScale,Fo as ringArcPath,Lo as addPoints,jo as subtractPoints,Ro as scalePoint,Oo as pointMagnitude,Eo as normalizePoint,Bo as legendGroupsFrom,Ho as legendSwatches,Xo as extractTooltipDatum,Vo as buildTooltipEntries,_o as formatTooltipValue,Qo as buildAdjacency,Jo as degree,er as bfsDistances,tr as shortestPath,nr as egoNetwork,or as betweenness,rr as closeness,ir as clustering,ar as normalizeScores,sr as proximityProblem,cr as forceLayoutAsync,yr as physicsReferenceEnvelope,vr as comparePhysicsTrace,$r as createProcessJourneyLedger,Ar as updateProcessJourney,Sr as processJourneyRows,Wr as createCapacityQueueController,Rr as createServiceResourcePoolController,Er as createServiceLevelController,Pr as createDependencyGateController,qr as composePhysicsControllers,Dr as createPortalController,Ur as processChrome,Zr as physicsStageGeography,Qr as physicsDestination,Jr as physicsChargePoint,ei as physicsStageColliders,ti as describePhysicsStageGeography,si as collidersFromScales,ci as galtonPegs,li as spawnFromTokens,di as sedimentBake,ui as arrivalReplay,hi as orderByGroupDegree,fi as arcLayout,mi as arcPath,pi as circularLayout,gi as adjacencyMatrix,vi as mobileAnnotationStrategy,Si as mobileLineChartRecipe,Ii as mobileAreaChartRecipe,Ci as mobileOrdinalChartRecipe,Ni as mobileScatterplotRecipe,zi as mobileNetworkChartRecipe,Fi as mobileGeoChartRecipe,Wi as mobileSmallMultipleRecipe,Li as mobileChartFamilyRecipe,ji as mobileBrushAlternatives};