semiotic 3.5.0 → 3.5.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (105) hide show
  1. package/CLAUDE.md +21 -19
  2. package/README.md +22 -16
  3. package/ai/chartSuggestions.cjs +191 -3
  4. package/ai/componentMetadata.cjs +3 -3
  5. package/ai/dist/mcp-server.js +266 -48
  6. package/ai/examples.md +68 -0
  7. package/ai/schema.json +900 -1
  8. package/ai/system-prompt.md +4 -1
  9. package/dist/components/Tooltip/FlippingTooltip.d.ts +16 -1
  10. package/dist/components/charts/geo/FlowMap.d.ts +13 -4
  11. package/dist/components/charts/index.d.ts +6 -0
  12. package/dist/components/charts/network/OrbitDiagram.d.ts +5 -5
  13. package/dist/components/charts/network/ProcessSankey.d.ts +141 -0
  14. package/dist/components/charts/network/processSankey/algorithm.d.ts +136 -0
  15. package/dist/components/charts/network/processSankey/buildScenes.d.ts +45 -0
  16. package/dist/components/charts/network/processSankey/ribbonInputs.d.ts +32 -0
  17. package/dist/components/charts/network/processSankey/streamingLayout.d.ts +58 -0
  18. package/dist/components/charts/network/processSankey/tooltipUtils.d.ts +41 -0
  19. package/dist/components/charts/ordinal/BarChart.d.ts +14 -0
  20. package/dist/components/charts/ordinal/BoxPlot.d.ts +2 -0
  21. package/dist/components/charts/ordinal/DotPlot.d.ts +11 -0
  22. package/dist/components/charts/ordinal/GaugeChart.d.ts +20 -0
  23. package/dist/components/charts/ordinal/GroupedBarChart.d.ts +2 -0
  24. package/dist/components/charts/ordinal/Histogram.d.ts +2 -0
  25. package/dist/components/charts/ordinal/LikertChart.d.ts +2 -0
  26. package/dist/components/charts/ordinal/RidgelinePlot.d.ts +2 -0
  27. package/dist/components/charts/ordinal/StackedBarChart.d.ts +2 -0
  28. package/dist/components/charts/ordinal/SwarmPlot.d.ts +2 -0
  29. package/dist/components/charts/ordinal/SwimlaneChart.d.ts +7 -0
  30. package/dist/components/charts/ordinal/ViolinPlot.d.ts +2 -0
  31. package/dist/components/charts/realtime/RealtimeHistogram.d.ts +14 -11
  32. package/dist/components/charts/realtime/defaultRealtimeTooltip.d.ts +43 -0
  33. package/dist/components/charts/shared/axisExtent.d.ts +59 -0
  34. package/dist/components/charts/shared/chartSpecs.d.ts +75 -0
  35. package/dist/components/charts/shared/colorUtils.d.ts +8 -2
  36. package/dist/components/charts/shared/networkUtils.d.ts +3 -5
  37. package/dist/components/charts/shared/radialGeometry.d.ts +99 -0
  38. package/dist/components/charts/shared/regressionUtils.d.ts +59 -0
  39. package/dist/components/charts/shared/selectionUtils.d.ts +8 -1
  40. package/dist/components/charts/shared/streamPropsHelpers.d.ts +5 -0
  41. package/dist/components/charts/shared/types.d.ts +13 -0
  42. package/dist/components/charts/shared/useAreaSeriesSetup.d.ts +75 -0
  43. package/dist/components/charts/shared/useEncodingDomain.d.ts +48 -0
  44. package/dist/components/charts/shared/useFrameImperativeHandle.d.ts +1 -1
  45. package/dist/components/charts/shared/useNetworkChartSetup.d.ts +148 -0
  46. package/dist/components/charts/shared/useOrdinalPieceStyle.d.ts +87 -0
  47. package/dist/components/charts/shared/useSeriesFeatures.d.ts +57 -0
  48. package/dist/components/charts/shared/useStreamStatus.d.ts +33 -0
  49. package/dist/components/charts/shared/useXYLineStyle.d.ts +69 -0
  50. package/dist/components/charts/shared/useXYPointStyle.d.ts +87 -0
  51. package/dist/components/charts/xy/AreaChart.d.ts +38 -0
  52. package/dist/components/charts/xy/BubbleChart.d.ts +13 -0
  53. package/dist/components/charts/xy/CandlestickChart.d.ts +4 -0
  54. package/dist/components/charts/xy/ConnectedScatterplot.d.ts +20 -0
  55. package/dist/components/charts/xy/DifferenceChart.d.ts +172 -0
  56. package/dist/components/charts/xy/Heatmap.d.ts +4 -0
  57. package/dist/components/charts/xy/LineChart.d.ts +12 -0
  58. package/dist/components/charts/xy/MinimapChart.d.ts +7 -0
  59. package/dist/components/charts/xy/Scatterplot.d.ts +38 -0
  60. package/dist/components/charts/xy/StackedAreaChart.d.ts +12 -0
  61. package/dist/components/geometry/ribbonGeometry.d.ts +76 -0
  62. package/dist/components/semiotic-ai.d.ts +2 -0
  63. package/dist/components/semiotic-network.d.ts +4 -0
  64. package/dist/components/semiotic-realtime.d.ts +2 -0
  65. package/dist/components/semiotic-utils.d.ts +4 -0
  66. package/dist/components/semiotic-xy.d.ts +2 -0
  67. package/dist/components/semiotic.d.ts +3 -3
  68. package/dist/components/server/serverChartConfigs.d.ts +2 -0
  69. package/dist/components/stream/GeoPipelineStore.d.ts +21 -0
  70. package/dist/components/stream/OrdinalSVGOverlay.d.ts +8 -0
  71. package/dist/components/stream/PipelineStore.d.ts +5 -0
  72. package/dist/components/stream/SVGOverlay.d.ts +18 -0
  73. package/dist/components/stream/annotationAccessorResolver.d.ts +39 -0
  74. package/dist/components/stream/geoTypes.d.ts +12 -0
  75. package/dist/components/stream/ordinalTypes.d.ts +12 -0
  76. package/dist/components/stream/renderers/cornerRadii.d.ts +33 -0
  77. package/dist/components/stream/types.d.ts +23 -0
  78. package/dist/components/types/legendTypes.d.ts +1 -1
  79. package/dist/geo.min.js +1 -1
  80. package/dist/geo.module.min.js +1 -1
  81. package/dist/network.min.js +1 -1
  82. package/dist/network.module.min.js +1 -1
  83. package/dist/ordinal.min.js +1 -1
  84. package/dist/ordinal.module.min.js +1 -1
  85. package/dist/realtime.min.js +1 -1
  86. package/dist/realtime.module.min.js +1 -1
  87. package/dist/semiotic-ai.d.ts +2 -0
  88. package/dist/semiotic-ai.min.js +1 -1
  89. package/dist/semiotic-ai.module.min.js +1 -1
  90. package/dist/semiotic-network.d.ts +4 -0
  91. package/dist/semiotic-realtime.d.ts +2 -0
  92. package/dist/semiotic-recipes.min.js +1 -1
  93. package/dist/semiotic-recipes.module.min.js +1 -1
  94. package/dist/semiotic-utils.d.ts +4 -0
  95. package/dist/semiotic-utils.min.js +1 -1
  96. package/dist/semiotic-utils.module.min.js +1 -1
  97. package/dist/semiotic-xy.d.ts +2 -0
  98. package/dist/semiotic.d.ts +3 -3
  99. package/dist/semiotic.min.js +1 -1
  100. package/dist/semiotic.module.min.js +1 -1
  101. package/dist/server.min.js +1 -1
  102. package/dist/server.module.min.js +1 -1
  103. package/dist/xy.min.js +1 -1
  104. package/dist/xy.module.min.js +1 -1
  105. package/package.json +10 -5
@@ -11,10 +11,12 @@ export { TreeDiagram } from "./components/charts/network/TreeDiagram";
11
11
  export { Treemap } from "./components/charts/network/Treemap";
12
12
  export { CirclePack } from "./components/charts/network/CirclePack";
13
13
  export { OrbitDiagram } from "./components/charts/network/OrbitDiagram";
14
+ export { ProcessSankey } from "./components/charts/network/ProcessSankey";
14
15
  export { NetworkCustomChart } from "./components/charts/custom/NetworkCustomChart";
15
16
  export type { StreamNetworkFrameProps, StreamNetworkFrameHandle, NetworkChartType, NetworkSceneNode, NetworkSceneEdge, NetworkLabel, ThresholdAlertConfig } from "./components/stream/networkTypes";
16
17
  export type { ForceDirectedGraphProps } from "./components/charts/network/ForceDirectedGraph";
17
18
  export type { SankeyDiagramProps } from "./components/charts/network/SankeyDiagram";
19
+ export type { ProcessSankeyProps, ProcessSankeyTick } from "./components/charts/network/ProcessSankey";
18
20
  export type { ChordDiagramProps } from "./components/charts/network/ChordDiagram";
19
21
  export type { TreeDiagramProps } from "./components/charts/network/TreeDiagram";
20
22
  export type { TreemapProps } from "./components/charts/network/Treemap";
@@ -22,3 +24,5 @@ export type { CirclePackProps } from "./components/charts/network/CirclePack";
22
24
  export type { OrbitDiagramProps } from "./components/charts/network/OrbitDiagram";
23
25
  export type { NetworkCustomChartProps } from "./components/charts/custom/NetworkCustomChart";
24
26
  export type { NetworkCustomLayout, NetworkLayoutContext, NetworkLayoutResult, } from "./components/stream/networkCustomLayout";
27
+ export { validateProcessSankey, formatProcessSankeyIssue, } from "./components/charts/network/processSankey/algorithm";
28
+ export type { ProcessSankeyNode as ProcessSankeyValidatorNode, ProcessSankeyEdge as ProcessSankeyValidatorEdge, ProcessSankeyIssue, } from "./components/charts/network/processSankey/algorithm";
@@ -20,3 +20,5 @@ export type { RealtimeHeatmapProps } from "./components/charts/realtime/Realtime
20
20
  export type { ArrowOfTime, WindowMode, ThresholdType, LineStyle, BarStyle, WaterfallStyle, SwarmStyle, AnnotationContext, CrosshairStyle, HoverAnnotationConfig, HoverData } from "./components/realtime/types";
21
21
  export type { StreamXYFrameProps, StreamXYFrameHandle, StreamChartType } from "./components/stream/types";
22
22
  export type { StreamNetworkFrameProps, StreamNetworkFrameHandle, NetworkChartType } from "./components/stream/networkTypes";
23
+ export { useStreamStatus } from "./components/charts/shared/useStreamStatus";
24
+ export type { StreamStatus, StreamStatusOptions, StreamStatusResult, } from "./components/charts/shared/useStreamStatus";
@@ -1 +1 @@
1
- "use strict";const e=require("d3-interpolate"),t=require("react"),o=require("d3-scale");function n(e){if(e&&e.__esModule)return e;const t=Object.create(null);if(e)for(const o in e)if("default"!==o){const n=Object.getOwnPropertyDescriptor(e,o);Object.defineProperty(t,o,n.get?n:{enumerable:!0,get:function(){return e[o]}})}return t.default=e,Object.freeze(t)}const r=n(t),l=864e5;function s(e){return`${e.getUTCFullYear()}-${i(e.getUTCMonth()+1)}-${i(e.getUTCDate())}`}function i(e){return 10>e?"0"+e:e+""}function c(e){return"function"==typeof e?e:t=>t[e]}function a(e){const t=Object.create(null);return e((e,o)=>{t[e]=o}),t}function u(e,t,o){const n=new Set,r=[];for(const t of e)o(t)&&!n.has(t)&&(n.add(t),r.push(t));for(const e of t)n.has(e)||r.push(e);return r}exports.bulletLayout=e=>{var t,o,n,l,s,i,u,d,h,y,f,m;const g=e.config,{plot:v}=e.dimensions;if(0>=v.width||0>=v.height||0===e.data.length)return{nodes:[]};const p=null!==(t=g.rowHeight)&&void 0!==t?t:28,x=null!==(o=g.rowGap)&&void 0!==o?o:12,b=!1!==g.showLabels,w=b?null!==(n=g.labelWidth)&&void 0!==n?n:120:0,k=!1!==g.showTicks,$=k?14:0,A=null!==(l=g.tickFormat)&&void 0!==l?l:e=>e.toLocaleString(),M=v.x+w,C=Math.max(0,v.width-w);if(0>=C)return{nodes:[]};const F=c(g.categoryAccessor),N=e=>{const t=Number(e);return Number.isFinite(t)&&t>0?t:0},W=e=>N("function"==typeof g.valueAccessor?g.valueAccessor(e):e[g.valueAccessor]),L=e=>N("function"==typeof g.targetAccessor?g.targetAccessor(e):e[g.targetAccessor]),O=e=>{const t="function"==typeof g.rangesAccessor?g.rangesAccessor(e):e[g.rangesAccessor];return Array.isArray(t)?t.map(N).sort((e,t)=>e-t):[]},S="string"==typeof g.categoryAccessor?g.categoryAccessor:"metric",T="string"==typeof g.valueAccessor?g.valueAccessor:"value",D="string"==typeof g.targetAccessor?g.targetAccessor:"target",E=null!==(i=null!==(s=g.actualColor)&&void 0!==s?s:e.theme.semantic.primary)&&void 0!==i?i:"#3b6cb1",j=null!==(u=e.theme.semantic.text)&&void 0!==u?u:"currentColor",z=null!==(d=e.theme.semantic.textSecondary)&&void 0!==d?d:"#888",B=null!==(h=e.theme.semantic.surface)&&void 0!==h?h:"#e8eaed",U=null!==(y=e.theme.semantic.grid)&&void 0!==y?y:"#cdd1d6",P=null!==(f=e.theme.semantic.border)&&void 0!==f?f:"#a3a8af",_=null!==(m=g.targetColor)&&void 0!==m?m:`var(--semiotic-text, ${j})`,V=[`var(--semiotic-surface, ${B})`,`var(--semiotic-grid, ${U})`,`var(--semiotic-border, ${P})`],Y=`var(--semiotic-text, ${j})`,q=`var(--semiotic-text-secondary, ${z})`,H=[],I=[];for(let t=0;e.data.length>t;t++){const o=e.data[t],n=O(o),r=W(o),l=L(o),s=Math.max(r,l,...n.length?n:[0]);if(0>=s)continue;const i=v.y+t*(p+x+$);if(i+p+$>v.y+v.height)break;I.push({yTop:i,label:F(o),actual:r,target:l,maxVal:s});const c=e=>M+e/s*C,u=F(o),d=e=>a(t=>{t("metric",u),"metric"!==S&&t(S,u),e(t)});let h=M;for(let e=0;n.length>e;e++){const t=c(n[e]),o=t-h;o>0&&H.push({type:"rect",x:h,y:i,w:o,h:p,style:{fill:V[Math.min(e,V.length-1)],stroke:"none"},datum:d(t=>{t("range",e),t("rangeValue",n[e]),t("kind","range")}),group:"range-"+e}),h=t}const y=Math.max(6,Math.floor(.45*p));H.push({type:"rect",x:M,y:i+(p-y)/2,w:c(r)-M,h:y,style:{fill:E,stroke:"none"},datum:d(e=>{e("value",r),e("kind","actual"),"value"!==T&&e(T,r)}),group:"actual"});const f=3,m=Math.floor(.8*p);H.push({type:"rect",x:c(l)-f/2,y:i+(p-m)/2,w:f,h:m,style:{fill:_,stroke:"none"},datum:d(e=>{e("target",l),e("kind","target"),"target"!==D&&e(D,l)}),group:"target"})}const R=[];for(let e=0;I.length>e;e++){const t=I[e];if(b&&R.push(r.createElement("text",{key:"bullet-label-"+e,x:v.x+w-8,y:t.yTop+p/2,textAnchor:"end",dominantBaseline:"middle",fontSize:13,fontWeight:500,fill:Y},t.label)),k){const o=5,n=t.yTop+p+2;for(let l=0;o>l;l++){const s=t.maxVal*l/(o-1),i=M+s/t.maxVal*C;R.push(r.createElement("line",{key:`bullet-tick-${e}-${l}`,x1:i,x2:i,y1:n,y2:n+3,stroke:q,strokeWidth:1}),r.createElement("text",{key:`bullet-ticktext-${e}-${l}`,x:i,y:n+12,textAnchor:0===l?"start":l===o-1?"end":"middle",fontSize:10,fill:q},A(s)))}}}return{nodes:H,overlays:R.length>0?r.createElement(r.Fragment,null,...R):null}},exports.calendarLayout=t=>{var o,n,r,i,c,a,u,d;const h=t.config,{plot:y}=t.dimensions;if(0>=y.width||0>=y.height)return{nodes:[]};const f=e=>{const t="function"==typeof h.dateAccessor?h.dateAccessor(e):e[h.dateAccessor];return t instanceof Date?t:new Date(t)},m=e=>{const t="function"==typeof h.valueAccessor?h.valueAccessor(e):e[h.valueAccessor];return Number(t)},g=new Map;let v=null;for(const e of t.data){const t=f(e);if(!isFinite(t.getTime()))continue;null==v&&(v=t.getUTCFullYear());const n=s(t),r=m(e);g.set(n,(null!==(o=g.get(n))&&void 0!==o?o:0)+(Number.isFinite(r)?r:0))}const p=null!==(r=null!==(n=h.year)&&void 0!==n?n:v)&&void 0!==r?r:(new Date).getUTCFullYear();let x=1/0,b=-1/0;for(const e of g.values())x>e&&(x=e),e>b&&(b=e);x===1/0&&(x=0,b=0);const[w,k]=null!==(i=h.colorRamp)&&void 0!==i?i:[null!==(c=t.theme.semantic.surface)&&void 0!==c?c:"#ebedf0",null!==(a=t.theme.semantic.primary)&&void 0!==a?a:"#216e39"],$=t=>{if(b===x)return w;const o=(t-x)/(b-x);return e.interpolateRgb(w,k)(o)},A=null!==(u=h.gutter)&&void 0!==u?u:2,M=null!==(d=h.labelInset)&&void 0!==d?d:0,C=Math.min((y.width-M-53*A)/54,(y.height-6*A)/7);if(0>=C)return{nodes:[]};const F=new Date(Date.UTC(p,0,1)),N=F.getUTCDay(),W=new Date(F.getTime()-N*l),L=[];for(let e=0;54>e;e++)for(let t=0;7>t;t++){const o=new Date(W.getTime()+(7*e+t)*l);if(o.getUTCFullYear()!==p)continue;const n=s(o),r=g.get(n),i=null==r?w:$(r);L.push({type:"rect",x:y.x+M+e*(C+A),y:y.y+t*(C+A),w:C,h:C,style:{fill:i,stroke:"none"},datum:{date:o,value:null!=r?r:0}})}return{nodes:L}},exports.dagreLayout=e=>{var t,o,n,r,l,s,i,c,a;const u=e.config,d=null!==(t=u.nodeWidth)&&void 0!==t?t:100,h=null!==(o=u.nodeHeight)&&void 0!==o?o:36,y=null!==(n=u.edgeStyle)&&void 0!==n?n:"polyline",f=!1!==u.showLabels,m=null!==(r=u.labelAccessor)&&void 0!==r?r:"label",g="function"==typeof m?m:e=>{var t,o;const n=e.data,r=n?n[m]:void 0;return(null!==(o=null!==(t=null!=r?r:e[m])&&void 0!==t?t:e.id)&&void 0!==o?o:"")+""},v=new Map,p=[],x=[],b=e=>{var t,o,n;const r=null!==(t=e.data)&&void 0!==t?t:{};return{x:"number"==typeof r.x?r.x:e.x,y:"number"==typeof r.y?r.y:e.y,w:null!==(o="number"==typeof r.width?r.width:e.width)&&void 0!==o?o:d,h:null!==(n="number"==typeof r.height?r.height:e.height)&&void 0!==n?n:h}};for(const t of e.nodes){const{x:o,y:n,w:r,h:i}=b(t);null!=o&&null!=n&&(v.set(t.id,{x:o,y:n,w:r,h:i}),p.push({type:"rect",x:o-r/2,y:n-i/2,w:r,h:i,style:{fill:null!==(l=u.nodeFill)&&void 0!==l?l:e.resolveColor(t.id),stroke:`var(--semiotic-border, ${null!==(s=e.theme.semantic.border)&&void 0!==s?s:"#888"})`,strokeWidth:1.5},datum:t,id:t.id,label:g(t)+""}),f&&x.push({x:o,y:n,text:g(t)+"",anchor:"middle",baseline:"middle",fontSize:11}))}const w=null!==(i=u.edgeStroke)&&void 0!==i?i:`var(--semiotic-border, ${null!==(c=e.theme.semantic.border)&&void 0!==c?c:"#666"})`,k=[];for(const t of e.edges){const e="string"==typeof t.target?t.target:t.target.id,o=v.get("string"==typeof t.source?t.source:t.source.id),n=v.get(e);if(!o||!n)continue;const r=null!==(a=t.data)&&void 0!==a?a:{},l=Array.isArray(r.points)?r.points:t.points;if(l&&l.length>=2)if("smooth"!==y||3>l.length){const e="M"+l.map(e=>`${e.x},${e.y}`).join(" L ");k.push({type:"curved",pathD:e,style:{stroke:w,strokeWidth:1,fill:"none"},datum:t})}else{let e=`M${l[0].x},${l[0].y}`;for(let t=1;l.length-1>t;t++)e+=` Q${l[t].x},${l[t].y} ${(l[t].x+l[t+1].x)/2},${(l[t].y+l[t+1].y)/2}`;const o=l[l.length-1];e+=` T${o.x},${o.y}`,k.push({type:"curved",pathD:e,style:{stroke:w,strokeWidth:1,fill:"none"},datum:t})}else k.push({type:"line",x1:o.x,y1:o.y,x2:n.x,y2:n.y,style:{stroke:w,strokeWidth:1},datum:t})}return{sceneNodes:p,sceneEdges:k,labels:x}},exports.flextreeLayout=e=>{var t,o,n,r,l,s,i,c,a;const u=e.config,d=null!==(t=u.nodeWidth)&&void 0!==t?t:80,h=null!==(o=u.nodeHeight)&&void 0!==o?o:30,y=null!==(n=u.orientation)&&void 0!==n?n:"vertical",f=null!==(r=u.edgeCurve)&&void 0!==r?r:"curved",m=!1!==u.showLabels,g=null!==(l=u.labelAccessor)&&void 0!==l?l:"id",v="function"==typeof g?g:e=>{var t,o;const n=e.data,r=n?n[g]:void 0;return(null!==(o=null!==(t=null!=r?r:e[g])&&void 0!==t?t:e.id)&&void 0!==o?o:"")+""},p=new Map,x=[],b=[],w=e=>{var t,o,n;const r=null!==(t=e.data)&&void 0!==t?t:{};return{x:"number"==typeof r.x?r.x:e.x,y:"number"==typeof r.y?r.y:e.y,w:null!==(o="number"==typeof r.width?r.width:e.width)&&void 0!==o?o:d,h:null!==(n="number"==typeof r.height?r.height:e.height)&&void 0!==n?n:h}};for(const t of e.nodes){const{x:o,y:n,w:r,h:l}=w(t);null!=o&&null!=n&&(p.set(t.id,{x:o,y:n,w:r,h:l}),x.push({type:"rect",x:o-r/2,y:n-l/2,w:r,h:l,style:{fill:null!==(s=u.nodeFill)&&void 0!==s?s:e.resolveColor(t.id),stroke:`var(--semiotic-surface, ${null!==(i=e.theme.semantic.surface)&&void 0!==i?i:"#fff"})`,strokeWidth:1.5},datum:t,id:t.id,label:v(t)+""}),m&&b.push({x:o,y:n,text:v(t)+"",anchor:"middle",baseline:"middle",fontSize:11}))}const k=[];for(const t of e.edges){const o="string"==typeof t.target?t.target:t.target.id,n=p.get("string"==typeof t.source?t.source:t.source.id),r=p.get(o);if(!n||!r)continue;const l="vertical"===y?{x:n.x,y:n.y+n.h/2}:{x:n.x+n.w/2,y:n.y},s="vertical"===y?{x:r.x,y:r.y-r.h/2}:{x:r.x-r.w/2,y:r.y};if("line"===f)k.push({type:"line",x1:l.x,y1:l.y,x2:s.x,y2:s.y,style:{stroke:`var(--semiotic-border, ${null!==(c=e.theme.semantic.border)&&void 0!==c?c:"#999"})`,strokeWidth:1},datum:t});else{const o=(l.y+s.y)/2,n=(l.x+s.x)/2;k.push({type:"curved",pathD:"vertical"===y?`M${l.x},${l.y} C${l.x},${o} ${s.x},${o} ${s.x},${s.y}`:`M${l.x},${l.y} C${n},${l.y} ${n},${s.y} ${s.x},${s.y}`,style:{stroke:`var(--semiotic-border, ${null!==(a=e.theme.semantic.border)&&void 0!==a?a:"#999"})`,strokeWidth:1,fill:"none"},datum:t})}}return{sceneNodes:x,sceneEdges:k,labels:b}},exports.marimekkoLayout=e=>{var t,o,n,l,s,i,d;const h=e.config,{plot:y}=e.dimensions;if(0>=y.width||0>=y.height)return{nodes:[]};const f=c(h.categoryAccessor),m=c(h.stackBy),g=e=>{const t="function"==typeof h.valueAccessor?h.valueAccessor(e):e[h.valueAccessor],o=Number(t);return Number.isFinite(o)&&o>0?o:0},v=null!==(t=h.gutter)&&void 0!==t?t:2,p="string"==typeof h.categoryAccessor?h.categoryAccessor:"category",x="string"==typeof h.stackBy?h.stackBy:"stack",b="string"==typeof h.valueAccessor?h.valueAccessor:"value",w=(e,t,o)=>a(n=>{n("category",e),n("stack",t),n("value",o),"category"!==p&&n(p,e),"stack"!==x&&n(x,t),"value"!==b&&n(b,o)}),k=!1!==h.showCategoryLabels,$=null!==(o=h.labelPadding)&&void 0!==o?o:k?22:0,A=Math.max(0,y.height-$),M=[],C=new Map,F=[],N=new Set,W=new Map;for(const t of e.data){const e=f(t)+"",o=m(t)+"",r=g(t);C.has(e)||(M.push(e),C.set(e,0),W.set(e,new Map)),N.has(o)||(N.add(o),F.push(o)),C.set(e,(null!==(n=C.get(e))&&void 0!==n?n:0)+r);const s=W.get(e);s.set(o,(null!==(l=s.get(o))&&void 0!==l?l:0)+r)}const L=h.categoryOrder?u(h.categoryOrder,M,e=>C.has(e)):M,O=h.stackOrder?u(h.stackOrder,F,()=>!0):F,S=L.reduce((e,t)=>{var o;return e+(null!==(o=C.get(t))&&void 0!==o?o:0)},0);if(0>=S)return{nodes:[]};const T=Math.max(0,y.width-v*Math.max(0,L.length-1)),D=[],E=[];let j=y.x;for(const t of L){const o=null!==(s=C.get(t))&&void 0!==s?s:0,n=o/S*T;if(0>=n)continue;E.push({cat:t,x:j,w:n});const r=W.get(t);let l=y.y;for(const s of O){const c=null!==(i=r.get(s))&&void 0!==i?i:0;if(0>=c)continue;const a=c/o*A;D.push({type:"rect",x:j,y:l,w:n,h:a,style:{fill:e.resolveColor(s),stroke:"none"},datum:w(t,s,c),group:s}),l+=a}j+=n+v}return{nodes:D,overlays:k&&E.length>0?function(e,t,o){const n=e.map((e,n)=>6.5*e.cat.length>e.w-4?null:r.createElement("text",{key:"marimekko-label-"+n,x:e.x+e.w/2,y:t+12,textAnchor:"middle",fontSize:12,fill:o},e.cat));return r.createElement(r.Fragment,null,...n)}(E,y.y+A+4,`var(--semiotic-text, ${null!==(d=e.theme.semantic.text)&&void 0!==d?d:"currentColor"})`):null}},exports.parallelCoordinatesLayout=e=>{var t,n,l,s,i,c,a,u,d,h,y,f;const m=e.config,{plot:g}=e.dimensions,v=null!==(t=m.fields)&&void 0!==t?t:[];if(2>v.length||0>=g.width||0>=g.height)return{nodes:[]};if(0===e.data.length)return{nodes:[]};const p={};for(const t of v){if(null===(n=m.domains)||void 0===n?void 0:n[t]){p[t]=m.domains[t];continue}let o=1/0,r=-1/0;for(const n of e.data){const e=Number(n[t]);Number.isFinite(e)&&(o>e&&(o=e),e>r&&(r=e))}p[t]=Number.isFinite(o)&&Number.isFinite(r)&&o!==r?[o,r]:[0,1]}const x=!1!==m.showAxes,b=x?null!==(l=m.axisLabelPadding)&&void 0!==l?l:24:8,w=x?18:8,k=v.map(e=>o.scaleLinear().domain(p[e]).range([g.y+g.height-w,g.y+b])),$=v.map((e,t)=>1===v.length?g.x+g.width/2:g.x+t/(v.length-1)*g.width),A=m.colorBy?"function"==typeof m.colorBy?m.colorBy:e=>{var t;return(null!==(t=e[m.colorBy])&&void 0!==t?t:"")+""}:null,M=null!==(s=m.opacity)&&void 0!==s?s:.45,C=null!==(i=m.strokeWidth)&&void 0!==i?i:1.25,F=null!==(c=e.theme.semantic.primary)&&void 0!==c?c:"#3b6cb1",N=null!==(a=m.dimmedOpacity)&&void 0!==a?a:.08,W=m.highlightFn,L=[],O=[];for(const t of e.data){const o=A?e.resolveColor(A(t)+""):F,n=!W||W(t),r=W?n?Math.min(1,M+.4):N:M,l=n?O:L;for(let e=0;v.length-1>e;e++){const s=Number(t[v[e]]),i=Number(t[v[e+1]]);if(!Number.isFinite(s)||!Number.isFinite(i))continue;const c={type:"connector",x1:$[e],y1:k[e](s),x2:$[e+1],y2:k[e+1](i),style:{stroke:o,strokeWidth:W&&n?C+.75:C,opacity:r,fill:"none"},datum:t};l.push(c)}if(m.showPoints)for(let e=0;v.length>e;e++){const n=Number(t[v[e]]);if(!Number.isFinite(n))continue;const s={type:"point",x:$[e],y:k[e](n),r:2.5,style:{fill:o,stroke:"none",opacity:Math.min(1,r+.3)},datum:t};l.push(s)}}let S=null;if(x){const t=`var(--semiotic-border, ${null!==(u=e.theme.semantic.border)&&void 0!==u?u:"#aaa"})`,o=`var(--semiotic-text, ${null!==(d=e.theme.semantic.text)&&void 0!==d?d:"currentColor"})`,n=`var(--semiotic-text-secondary, ${null!==(h=e.theme.semantic.textSecondary)&&void 0!==h?h:"#888"})`,l=g.y+b,s=g.y+g.height-w,i=[];for(let e=0;v.length>e;e++){const c=v[e],a=$[e],u=null!==(f=null===(y=m.tickFormat)||void 0===y?void 0:y[c])&&void 0!==f?f:e=>e.toLocaleString();i.push(r.createElement("line",{key:"pc-axis-line-"+e,x1:a,x2:a,y1:l,y2:s,stroke:t,strokeWidth:1})),i.push(r.createElement("text",{key:"pc-axis-label-"+e,x:a,y:g.y+b-8,textAnchor:"middle",fontSize:12,fontWeight:600,fill:o},c));const[d,h]=p[c],x=5;for(let o=0;x>o;o++){const l=d+(h-d)*o/(x-1),s=k[e](l);i.push(r.createElement("line",{key:`pc-tick-${e}-${o}`,x1:a-3,x2:a+3,y1:s,y2:s,stroke:t,strokeWidth:1}),r.createElement("text",{key:`pc-ticktext-${e}-${o}`,x:a+6,y:s+3,fontSize:10,fill:n},u(l)))}}S=r.createElement(r.Fragment,null,...i)}return{nodes:L.concat(O),overlays:S}},exports.waffleLayout=e=>{var t,o,n,r,l,s;const i=e.config,c=null!==(t=i.rows)&&void 0!==t?t:10,a=null!==(o=i.columns)&&void 0!==o?o:10,u=null!==(n=i.gutter)&&void 0!==n?n:2,d=c*a;if(0>=c||0>=a||0>=d)return{nodes:[]};const{plot:h}=e.dimensions;if(0>=h.width||0>=h.height)return{nodes:[]};const y=(h.width-u*(a-1))/a,f=(h.height-u*(c-1))/c;if(0>=y||0>=f)return{nodes:[]};const m=null!==(r=null==(g=i.categoryAccessor)?null:"function"==typeof g?g:e=>e[g])&&void 0!==r?r:()=>"_default";var g;const v=null!==(l=function(e){return null==e?null:"function"==typeof e?e:t=>Number(t[e])}(i.valueAccessor))&&void 0!==l?l:()=>1,p=new Map,x=[];for(const t of e.data){const e=m(t)+"",o=Number(v(t)),n=Number.isFinite(o)?Math.max(0,o):0;p.has(e)||x.push(e),p.set(e,(null!==(s=p.get(e))&&void 0!==s?s:0)+n)}const b=Array.from(p.values()).reduce((e,t)=>e+t,0);if(0>=b)return{nodes:[]};let w;if(i.categoryOrder&&i.categoryOrder.length>0){const e=new Set,t=[];for(const o of i.categoryOrder)p.has(o)&&!e.has(o)&&(e.add(o),t.push(o));w=[...t,...x.filter(t=>!e.has(t))]}else w=x;if(0===w.length)return{nodes:[]};const k=w.map(e=>{var t;return{cat:e,exact:(null!==(t=p.get(e))&&void 0!==t?t:0)/b*d}}),$=k.map(e=>Object.assign(Object.assign({},e),{count:Math.floor(e.exact)})),A=$.reduce((e,t)=>e+t.count,0),M=$.map((e,t)=>({i:t,rem:e.exact-e.count})).sort((e,t)=>t.rem-e.rem);for(let e=0;d-A>e;e++)$[M[e%M.length].i].count+=1;const C=[];let F=0;for(const t of $){const o=e.resolveColor(t.cat);for(let e=0;t.count>e;e++)C.push({type:"rect",x:h.x+F%a*(y+u),y:h.y+(c-1-Math.floor(F/a))*(f+u),w:y,h:f,style:{fill:o,stroke:"none"},datum:{_waffleCategory:t.cat,_waffleIndex:F},group:t.cat}),F++}return{nodes:C}};
1
+ "use strict";const e=require("d3-interpolate"),t=require("react"),o=require("d3-scale");function n(e){if(e&&e.__esModule)return e;const t=Object.create(null);if(e)for(const o in e)if("default"!==o){const n=Object.getOwnPropertyDescriptor(e,o);Object.defineProperty(t,o,n.get?n:{enumerable:!0,get:function(){return e[o]}})}return t.default=e,Object.freeze(t)}const r=n(t);function l(e){return"function"==typeof e?e:t=>t[e]}function s(e){const t=Object.create(null);return e((e,o)=>{t[e]=o}),t}const i=864e5;function c(e){return`${e.getUTCFullYear()}-${a(e.getUTCMonth()+1)}-${a(e.getUTCDate())}`}function a(e){return 10>e?"0"+e:e+""}function u(e,t,o){const n=new Set,r=[];for(const t of e)o(t)&&!n.has(t)&&(n.add(t),r.push(t));for(const e of t)n.has(e)||r.push(e);return r}exports.bulletLayout=e=>{var t,o,n,i,c,a,u,d,y,h,f,g;const m=e.config,{plot:v}=e.dimensions;if(0>=v.width||0>=v.height||0===e.data.length)return{nodes:[]};const p=null!==(t=m.rowHeight)&&void 0!==t?t:28,x=null!==(o=m.rowGap)&&void 0!==o?o:12,b=!1!==m.showLabels,w=b?null!==(n=m.labelWidth)&&void 0!==n?n:120:0,k=!1!==m.showTicks,$=k?14:0,A=null!==(i=m.tickFormat)&&void 0!==i?i:e=>e.toLocaleString(),M=v.x+w,C=Math.max(0,v.width-w);if(0>=C)return{nodes:[]};const F=l(m.categoryAccessor),N=e=>{const t=Number(e);return Number.isFinite(t)&&t>0?t:0},W=e=>N("function"==typeof m.valueAccessor?m.valueAccessor(e):e[m.valueAccessor]),L=e=>N("function"==typeof m.targetAccessor?m.targetAccessor(e):e[m.targetAccessor]),O=e=>{const t="function"==typeof m.rangesAccessor?m.rangesAccessor(e):e[m.rangesAccessor];return Array.isArray(t)?t.map(N).sort((e,t)=>e-t):[]},S="string"==typeof m.categoryAccessor?m.categoryAccessor:"metric",T="string"==typeof m.valueAccessor?m.valueAccessor:"value",D="string"==typeof m.targetAccessor?m.targetAccessor:"target",E=null!==(a=null!==(c=m.actualColor)&&void 0!==c?c:e.theme.semantic.primary)&&void 0!==a?a:"#3b6cb1",j=null!==(u=e.theme.semantic.text)&&void 0!==u?u:"currentColor",z=null!==(d=e.theme.semantic.textSecondary)&&void 0!==d?d:"#888",B=null!==(y=e.theme.semantic.surface)&&void 0!==y?y:"#e8eaed",U=null!==(h=e.theme.semantic.grid)&&void 0!==h?h:"#cdd1d6",P=null!==(f=e.theme.semantic.border)&&void 0!==f?f:"#a3a8af",_=null!==(g=m.targetColor)&&void 0!==g?g:`var(--semiotic-text, ${j})`,V=[`var(--semiotic-surface, ${B})`,`var(--semiotic-grid, ${U})`,`var(--semiotic-border, ${P})`],Y=`var(--semiotic-text, ${j})`,q=`var(--semiotic-text-secondary, ${z})`,H=[],I=[];for(let t=0;e.data.length>t;t++){const o=e.data[t],n=O(o),r=W(o),l=L(o),i=Math.max(r,l,...n.length?n:[0]);if(0>=i)continue;const c=v.y+t*(p+x+$);if(c+p+$>v.y+v.height)break;I.push({yTop:c,label:F(o),actual:r,target:l,maxVal:i});const a=e=>M+e/i*C,u=F(o),d=e=>s(t=>{t("metric",u),"metric"!==S&&t(S,u),e(t)});let y=M;for(let e=0;n.length>e;e++){const t=a(n[e]),o=t-y;o>0&&H.push({type:"rect",x:y,y:c,w:o,h:p,style:{fill:V[Math.min(e,V.length-1)],stroke:"none"},datum:d(t=>{t("range",e),t("rangeValue",n[e]),t("kind","range")}),group:"range-"+e}),y=t}const h=Math.max(6,Math.floor(.45*p));H.push({type:"rect",x:M,y:c+(p-h)/2,w:a(r)-M,h:h,style:{fill:E,stroke:"none"},datum:d(e=>{e("value",r),e("kind","actual"),"value"!==T&&e(T,r)}),group:"actual"});const f=3,g=Math.floor(.8*p);H.push({type:"rect",x:a(l)-f/2,y:c+(p-g)/2,w:f,h:g,style:{fill:_,stroke:"none"},datum:d(e=>{e("target",l),e("kind","target"),"target"!==D&&e(D,l)}),group:"target"})}const R=[];for(let e=0;I.length>e;e++){const t=I[e];if(b&&R.push(r.createElement("text",{key:"bullet-label-"+e,x:v.x+w-8,y:t.yTop+p/2,textAnchor:"end",dominantBaseline:"middle",fontSize:13,fontWeight:500,fill:Y},t.label)),k){const o=5,n=t.yTop+p+2;for(let l=0;o>l;l++){const s=t.maxVal*l/(o-1),i=M+s/t.maxVal*C;R.push(r.createElement("line",{key:`bullet-tick-${e}-${l}`,x1:i,x2:i,y1:n,y2:n+3,stroke:q,strokeWidth:1}),r.createElement("text",{key:`bullet-ticktext-${e}-${l}`,x:i,y:n+12,textAnchor:0===l?"start":l===o-1?"end":"middle",fontSize:10,fill:q},A(s)))}}}return{nodes:H,overlays:R.length>0?r.createElement(r.Fragment,null,...R):null}},exports.calendarLayout=t=>{var o,n,r,l,s,a,u,d;const y=t.config,{plot:h}=t.dimensions;if(0>=h.width||0>=h.height)return{nodes:[]};const f=e=>{const t="function"==typeof y.dateAccessor?y.dateAccessor(e):e[y.dateAccessor];return t instanceof Date?t:new Date(t)},g=e=>{const t="function"==typeof y.valueAccessor?y.valueAccessor(e):e[y.valueAccessor];return Number(t)},m=new Map;let v=null;for(const e of t.data){const t=f(e);if(!isFinite(t.getTime()))continue;null==v&&(v=t.getUTCFullYear());const n=c(t),r=g(e);m.set(n,(null!==(o=m.get(n))&&void 0!==o?o:0)+(Number.isFinite(r)?r:0))}const p=null!==(r=null!==(n=y.year)&&void 0!==n?n:v)&&void 0!==r?r:(new Date).getUTCFullYear();let x=1/0,b=-1/0;for(const e of m.values())x>e&&(x=e),e>b&&(b=e);x===1/0&&(x=0,b=0);const[w,k]=null!==(l=y.colorRamp)&&void 0!==l?l:[null!==(s=t.theme.semantic.surface)&&void 0!==s?s:"#ebedf0",null!==(a=t.theme.semantic.primary)&&void 0!==a?a:"#216e39"],$=t=>{if(b===x)return w;const o=(t-x)/(b-x);return e.interpolateRgb(w,k)(o)},A=null!==(u=y.gutter)&&void 0!==u?u:2,M=null!==(d=y.labelInset)&&void 0!==d?d:0,C=Math.min((h.width-M-53*A)/54,(h.height-6*A)/7);if(0>=C)return{nodes:[]};const F=new Date(Date.UTC(p,0,1)),N=F.getUTCDay(),W=new Date(F.getTime()-N*i),L=[];for(let e=0;54>e;e++)for(let t=0;7>t;t++){const o=new Date(W.getTime()+(7*e+t)*i);if(o.getUTCFullYear()!==p)continue;const n=c(o),r=m.get(n),l=null==r?w:$(r);L.push({type:"rect",x:h.x+M+e*(C+A),y:h.y+t*(C+A),w:C,h:C,style:{fill:l,stroke:"none"},datum:{date:o,value:null!=r?r:0}})}return{nodes:L}},exports.dagreLayout=e=>{var t,o,n,r,l,s,i,c,a;const u=e.config,d=null!==(t=u.nodeWidth)&&void 0!==t?t:100,y=null!==(o=u.nodeHeight)&&void 0!==o?o:36,h=null!==(n=u.edgeStyle)&&void 0!==n?n:"polyline",f=!1!==u.showLabels,g=null!==(r=u.labelAccessor)&&void 0!==r?r:"label",m="function"==typeof g?g:e=>{var t,o;const n=e.data,r=n?n[g]:void 0;return(null!==(o=null!==(t=null!=r?r:e[g])&&void 0!==t?t:e.id)&&void 0!==o?o:"")+""},v=new Map,p=[],x=[],b=e=>{var t,o,n;const r=null!==(t=e.data)&&void 0!==t?t:{};return{x:"number"==typeof r.x?r.x:e.x,y:"number"==typeof r.y?r.y:e.y,w:null!==(o="number"==typeof r.width?r.width:e.width)&&void 0!==o?o:d,h:null!==(n="number"==typeof r.height?r.height:e.height)&&void 0!==n?n:y}};for(const t of e.nodes){const{x:o,y:n,w:r,h:i}=b(t);null!=o&&null!=n&&(v.set(t.id,{x:o,y:n,w:r,h:i}),p.push({type:"rect",x:o-r/2,y:n-i/2,w:r,h:i,style:{fill:null!==(l=u.nodeFill)&&void 0!==l?l:e.resolveColor(t.id),stroke:`var(--semiotic-border, ${null!==(s=e.theme.semantic.border)&&void 0!==s?s:"#888"})`,strokeWidth:1.5},datum:t,id:t.id,label:m(t)+""}),f&&x.push({x:o,y:n,text:m(t)+"",anchor:"middle",baseline:"middle",fontSize:11}))}const w=null!==(i=u.edgeStroke)&&void 0!==i?i:`var(--semiotic-border, ${null!==(c=e.theme.semantic.border)&&void 0!==c?c:"#666"})`,k=[];for(const t of e.edges){const e="string"==typeof t.target?t.target:t.target.id,o=v.get("string"==typeof t.source?t.source:t.source.id),n=v.get(e);if(!o||!n)continue;const r=null!==(a=t.data)&&void 0!==a?a:{},l=Array.isArray(r.points)?r.points:t.points;if(l&&l.length>=2)if("smooth"!==h||3>l.length){const e="M"+l.map(e=>`${e.x},${e.y}`).join(" L ");k.push({type:"curved",pathD:e,style:{stroke:w,strokeWidth:1,fill:"none"},datum:t})}else{let e=`M${l[0].x},${l[0].y}`;for(let t=1;l.length-1>t;t++)e+=` Q${l[t].x},${l[t].y} ${(l[t].x+l[t+1].x)/2},${(l[t].y+l[t+1].y)/2}`;const o=l[l.length-1];e+=` T${o.x},${o.y}`,k.push({type:"curved",pathD:e,style:{stroke:w,strokeWidth:1,fill:"none"},datum:t})}else k.push({type:"line",x1:o.x,y1:o.y,x2:n.x,y2:n.y,style:{stroke:w,strokeWidth:1},datum:t})}return{sceneNodes:p,sceneEdges:k,labels:x}},exports.flextreeLayout=e=>{var t,o,n,r,l,s,i,c,a;const u=e.config,d=null!==(t=u.nodeWidth)&&void 0!==t?t:80,y=null!==(o=u.nodeHeight)&&void 0!==o?o:30,h=null!==(n=u.orientation)&&void 0!==n?n:"vertical",f=null!==(r=u.edgeCurve)&&void 0!==r?r:"curved",g=!1!==u.showLabels,m=null!==(l=u.labelAccessor)&&void 0!==l?l:"id",v="function"==typeof m?m:e=>{var t,o;const n=e.data,r=n?n[m]:void 0;return(null!==(o=null!==(t=null!=r?r:e[m])&&void 0!==t?t:e.id)&&void 0!==o?o:"")+""},p=new Map,x=[],b=[],w=e=>{var t,o,n;const r=null!==(t=e.data)&&void 0!==t?t:{};return{x:"number"==typeof r.x?r.x:e.x,y:"number"==typeof r.y?r.y:e.y,w:null!==(o="number"==typeof r.width?r.width:e.width)&&void 0!==o?o:d,h:null!==(n="number"==typeof r.height?r.height:e.height)&&void 0!==n?n:y}};for(const t of e.nodes){const{x:o,y:n,w:r,h:l}=w(t);null!=o&&null!=n&&(p.set(t.id,{x:o,y:n,w:r,h:l}),x.push({type:"rect",x:o-r/2,y:n-l/2,w:r,h:l,style:{fill:null!==(s=u.nodeFill)&&void 0!==s?s:e.resolveColor(t.id),stroke:`var(--semiotic-surface, ${null!==(i=e.theme.semantic.surface)&&void 0!==i?i:"#fff"})`,strokeWidth:1.5},datum:t,id:t.id,label:v(t)+""}),g&&b.push({x:o,y:n,text:v(t)+"",anchor:"middle",baseline:"middle",fontSize:11}))}const k=[];for(const t of e.edges){const o="string"==typeof t.target?t.target:t.target.id,n=p.get("string"==typeof t.source?t.source:t.source.id),r=p.get(o);if(!n||!r)continue;const l="vertical"===h?{x:n.x,y:n.y+n.h/2}:{x:n.x+n.w/2,y:n.y},s="vertical"===h?{x:r.x,y:r.y-r.h/2}:{x:r.x-r.w/2,y:r.y};if("line"===f)k.push({type:"line",x1:l.x,y1:l.y,x2:s.x,y2:s.y,style:{stroke:`var(--semiotic-border, ${null!==(c=e.theme.semantic.border)&&void 0!==c?c:"#999"})`,strokeWidth:1},datum:t});else{const o=(l.y+s.y)/2,n=(l.x+s.x)/2;k.push({type:"curved",pathD:"vertical"===h?`M${l.x},${l.y} C${l.x},${o} ${s.x},${o} ${s.x},${s.y}`:`M${l.x},${l.y} C${n},${l.y} ${n},${s.y} ${s.x},${s.y}`,style:{stroke:`var(--semiotic-border, ${null!==(a=e.theme.semantic.border)&&void 0!==a?a:"#999"})`,strokeWidth:1,fill:"none"},datum:t})}}return{sceneNodes:x,sceneEdges:k,labels:b}},exports.marimekkoLayout=e=>{var t,o,n,i,c,a,d;const y=e.config,{plot:h}=e.dimensions;if(0>=h.width||0>=h.height)return{nodes:[]};const f=l(y.categoryAccessor),g=l(y.stackBy),m=e=>{const t="function"==typeof y.valueAccessor?y.valueAccessor(e):e[y.valueAccessor],o=Number(t);return Number.isFinite(o)&&o>0?o:0},v=null!==(t=y.gutter)&&void 0!==t?t:2,p="string"==typeof y.categoryAccessor?y.categoryAccessor:"category",x="string"==typeof y.stackBy?y.stackBy:"stack",b="string"==typeof y.valueAccessor?y.valueAccessor:"value",w=(e,t,o)=>s(n=>{n("category",e),n("stack",t),n("value",o),"category"!==p&&n(p,e),"stack"!==x&&n(x,t),"value"!==b&&n(b,o)}),k=!1!==y.showCategoryLabels,$=null!==(o=y.labelPadding)&&void 0!==o?o:k?22:0,A=Math.max(0,h.height-$),M=[],C=new Map,F=[],N=new Set,W=new Map;for(const t of e.data){const e=f(t)+"",o=g(t)+"",r=m(t);C.has(e)||(M.push(e),C.set(e,0),W.set(e,new Map)),N.has(o)||(N.add(o),F.push(o)),C.set(e,(null!==(n=C.get(e))&&void 0!==n?n:0)+r);const l=W.get(e);l.set(o,(null!==(i=l.get(o))&&void 0!==i?i:0)+r)}const L=y.categoryOrder?u(y.categoryOrder,M,e=>C.has(e)):M,O=y.stackOrder?u(y.stackOrder,F,()=>!0):F,S=L.reduce((e,t)=>{var o;return e+(null!==(o=C.get(t))&&void 0!==o?o:0)},0);if(0>=S)return{nodes:[]};const T=Math.max(0,h.width-v*Math.max(0,L.length-1)),D=[],E=[];let j=h.x;for(const t of L){const o=null!==(c=C.get(t))&&void 0!==c?c:0,n=o/S*T;if(0>=n)continue;E.push({cat:t,x:j,w:n});const r=W.get(t);let l=h.y;for(const s of O){const i=null!==(a=r.get(s))&&void 0!==a?a:0;if(0>=i)continue;const c=i/o*A;D.push({type:"rect",x:j,y:l,w:n,h:c,style:{fill:e.resolveColor(s),stroke:"none"},datum:w(t,s,i),group:s}),l+=c}j+=n+v}return{nodes:D,overlays:k&&E.length>0?function(e,t,o){const n=e.map((e,n)=>6.5*e.cat.length>e.w-4?null:r.createElement("text",{key:"marimekko-label-"+n,x:e.x+e.w/2,y:t+12,textAnchor:"middle",fontSize:12,fill:o},e.cat));return r.createElement(r.Fragment,null,...n)}(E,h.y+A+4,`var(--semiotic-text, ${null!==(d=e.theme.semantic.text)&&void 0!==d?d:"currentColor"})`):null}},exports.parallelCoordinatesLayout=e=>{var t,n,l,s,i,c,a,u,d,y,h,f;const g=e.config,{plot:m}=e.dimensions,v=null!==(t=g.fields)&&void 0!==t?t:[];if(2>v.length||0>=m.width||0>=m.height)return{nodes:[]};if(0===e.data.length)return{nodes:[]};const p={};for(const t of v){if(null===(n=g.domains)||void 0===n?void 0:n[t]){p[t]=g.domains[t];continue}let o=1/0,r=-1/0;for(const n of e.data){const e=Number(n[t]);Number.isFinite(e)&&(o>e&&(o=e),e>r&&(r=e))}p[t]=Number.isFinite(o)&&Number.isFinite(r)&&o!==r?[o,r]:[0,1]}const x=!1!==g.showAxes,b=x?null!==(l=g.axisLabelPadding)&&void 0!==l?l:24:8,w=x?18:8,k=v.map(e=>o.scaleLinear().domain(p[e]).range([m.y+m.height-w,m.y+b])),$=v.map((e,t)=>1===v.length?m.x+m.width/2:m.x+t/(v.length-1)*m.width),A=g.colorBy?"function"==typeof g.colorBy?g.colorBy:e=>{var t;return(null!==(t=e[g.colorBy])&&void 0!==t?t:"")+""}:null,M=null!==(s=g.opacity)&&void 0!==s?s:.45,C=null!==(i=g.strokeWidth)&&void 0!==i?i:1.25,F=null!==(c=e.theme.semantic.primary)&&void 0!==c?c:"#3b6cb1",N=null!==(a=g.dimmedOpacity)&&void 0!==a?a:.08,W=g.highlightFn,L=[],O=[];for(const t of e.data){const o=A?e.resolveColor(A(t)+""):F,n=!W||W(t),r=W?n?Math.min(1,M+.4):N:M,l=n?O:L;for(let e=0;v.length-1>e;e++){const s=Number(t[v[e]]),i=Number(t[v[e+1]]);if(!Number.isFinite(s)||!Number.isFinite(i))continue;const c={type:"connector",x1:$[e],y1:k[e](s),x2:$[e+1],y2:k[e+1](i),style:{stroke:o,strokeWidth:W&&n?C+.75:C,opacity:r,fill:"none"},datum:t};l.push(c)}if(g.showPoints)for(let e=0;v.length>e;e++){const n=Number(t[v[e]]);if(!Number.isFinite(n))continue;const s={type:"point",x:$[e],y:k[e](n),r:2.5,style:{fill:o,stroke:"none",opacity:Math.min(1,r+.3)},datum:t};l.push(s)}}let S=null;if(x){const t=`var(--semiotic-border, ${null!==(u=e.theme.semantic.border)&&void 0!==u?u:"#aaa"})`,o=`var(--semiotic-text, ${null!==(d=e.theme.semantic.text)&&void 0!==d?d:"currentColor"})`,n=`var(--semiotic-text-secondary, ${null!==(y=e.theme.semantic.textSecondary)&&void 0!==y?y:"#888"})`,l=m.y+b,s=m.y+m.height-w,i=[];for(let e=0;v.length>e;e++){const c=v[e],a=$[e],u=null!==(f=null===(h=g.tickFormat)||void 0===h?void 0:h[c])&&void 0!==f?f:e=>e.toLocaleString();i.push(r.createElement("line",{key:"pc-axis-line-"+e,x1:a,x2:a,y1:l,y2:s,stroke:t,strokeWidth:1})),i.push(r.createElement("text",{key:"pc-axis-label-"+e,x:a,y:m.y+b-8,textAnchor:"middle",fontSize:12,fontWeight:600,fill:o},c));const[d,y]=p[c],x=5;for(let o=0;x>o;o++){const l=d+(y-d)*o/(x-1),s=k[e](l);i.push(r.createElement("line",{key:`pc-tick-${e}-${o}`,x1:a-3,x2:a+3,y1:s,y2:s,stroke:t,strokeWidth:1}),r.createElement("text",{key:`pc-ticktext-${e}-${o}`,x:a+6,y:s+3,fontSize:10,fill:n},u(l)))}}S=r.createElement(r.Fragment,null,...i)}return{nodes:L.concat(O),overlays:S}},exports.waffleLayout=e=>{var t,o,n,r,l,i;const c=e.config,a=null!==(t=c.rows)&&void 0!==t?t:10,u=null!==(o=c.columns)&&void 0!==o?o:10,d=null!==(n=c.gutter)&&void 0!==n?n:2,y=a*u;if(0>=a||0>=u||0>=y)return{nodes:[]};const{plot:h}=e.dimensions;if(0>=h.width||0>=h.height)return{nodes:[]};const f=(h.width-d*(u-1))/u,g=(h.height-d*(a-1))/a;if(0>=f||0>=g)return{nodes:[]};const m=null!==(r=null==(v=c.categoryAccessor)?null:"function"==typeof v?v:e=>e[v])&&void 0!==r?r:()=>"_default";var v;const p=null!==(l=function(e){return null==e?null:"function"==typeof e?e:t=>Number(t[e])}(c.valueAccessor))&&void 0!==l?l:()=>1,x=new Map,b=[];for(const t of e.data){const e=m(t)+"",o=Number(p(t)),n=Number.isFinite(o)?Math.max(0,o):0;x.has(e)||b.push(e),x.set(e,(null!==(i=x.get(e))&&void 0!==i?i:0)+n)}const w=Array.from(x.values()).reduce((e,t)=>e+t,0);if(0>=w)return{nodes:[]};let k;if(c.categoryOrder&&c.categoryOrder.length>0){const e=new Set,t=[];for(const o of c.categoryOrder)x.has(o)&&!e.has(o)&&(e.add(o),t.push(o));k=[...t,...b.filter(t=>!e.has(t))]}else k=b;if(0===k.length)return{nodes:[]};const $=k.map(e=>{var t;return{cat:e,exact:(null!==(t=x.get(e))&&void 0!==t?t:0)/w*y}}),A=$.map(e=>Object.assign(Object.assign({},e),{count:Math.floor(e.exact)})),M=A.reduce((e,t)=>e+t.count,0),C=A.map((e,t)=>({i:t,rem:e.exact-e.count})).sort((e,t)=>t.rem-e.rem);for(let e=0;y-M>e;e++)A[C[e%C.length].i].count+=1;const F="string"==typeof c.categoryAccessor?c.categoryAccessor:"category",N="string"==typeof c.valueAccessor?c.valueAccessor:"value",W=(e,t,o)=>s(n=>{var r,l;n("category",e),n("value",null!==(r=x.get(e))&&void 0!==r?r:0),"category"!==F&&n(F,e),"value"!==N&&n(N,null!==(l=x.get(e))&&void 0!==l?l:0),n("cells",o),n("_waffleCategory",e),n("_waffleIndex",t)}),L=[];let O=0;for(const t of A){const o=e.resolveColor(t.cat);for(let e=0;t.count>e;e++)L.push({type:"rect",x:h.x+O%u*(f+d),y:h.y+(a-1-Math.floor(O/u))*(g+d),w:f,h:g,style:{fill:o,stroke:"none"},datum:W(t.cat,O,t.count),group:t.cat}),O++}return{nodes:L}};
@@ -1 +1 @@
1
- import{interpolateRgb as e}from"d3-interpolate";import*as t from"react";import{scaleLinear as o}from"d3-scale";const n=e=>{var t,o,n,r,l,s;const i=e.config,c=null!==(t=i.rows)&&void 0!==t?t:10,a=null!==(o=i.columns)&&void 0!==o?o:10,u=null!==(n=i.gutter)&&void 0!==n?n:2,d=c*a;if(0>=c||0>=a||0>=d)return{nodes:[]};const{plot:h}=e.dimensions;if(0>=h.width||0>=h.height)return{nodes:[]};const y=(h.width-u*(a-1))/a,f=(h.height-u*(c-1))/c;if(0>=y||0>=f)return{nodes:[]};const m=null!==(r=null==(g=i.categoryAccessor)?null:"function"==typeof g?g:e=>e[g])&&void 0!==r?r:()=>"_default";var g;const v=null!==(l=function(e){return null==e?null:"function"==typeof e?e:t=>Number(t[e])}(i.valueAccessor))&&void 0!==l?l:()=>1,p=new Map,x=[];for(const t of e.data){const e=m(t)+"",o=Number(v(t)),n=Number.isFinite(o)?Math.max(0,o):0;p.has(e)||x.push(e),p.set(e,(null!==(s=p.get(e))&&void 0!==s?s:0)+n)}const b=Array.from(p.values()).reduce((e,t)=>e+t,0);if(0>=b)return{nodes:[]};let w;if(i.categoryOrder&&i.categoryOrder.length>0){const e=new Set,t=[];for(const o of i.categoryOrder)p.has(o)&&!e.has(o)&&(e.add(o),t.push(o));w=[...t,...x.filter(t=>!e.has(t))]}else w=x;if(0===w.length)return{nodes:[]};const k=w.map(e=>{var t;return{cat:e,exact:(null!==(t=p.get(e))&&void 0!==t?t:0)/b*d}}),$=k.map(e=>Object.assign(Object.assign({},e),{count:Math.floor(e.exact)})),A=$.reduce((e,t)=>e+t.count,0),M=$.map((e,t)=>({i:t,rem:e.exact-e.count})).sort((e,t)=>t.rem-e.rem);for(let e=0;d-A>e;e++)$[M[e%M.length].i].count+=1;const C=[];let F=0;for(const t of $){const o=e.resolveColor(t.cat);for(let e=0;t.count>e;e++)C.push({type:"rect",x:h.x+F%a*(y+u),y:h.y+(c-1-Math.floor(F/a))*(f+u),w:y,h:f,style:{fill:o,stroke:"none"},datum:{_waffleCategory:t.cat,_waffleIndex:F},group:t.cat}),F++}return{nodes:C}},r=864e5,l=t=>{var o,n,l,i,c,a,u,d;const h=t.config,{plot:y}=t.dimensions;if(0>=y.width||0>=y.height)return{nodes:[]};const f=e=>{const t="function"==typeof h.dateAccessor?h.dateAccessor(e):e[h.dateAccessor];return t instanceof Date?t:new Date(t)},m=e=>{const t="function"==typeof h.valueAccessor?h.valueAccessor(e):e[h.valueAccessor];return Number(t)},g=new Map;let v=null;for(const e of t.data){const t=f(e);if(!isFinite(t.getTime()))continue;null==v&&(v=t.getUTCFullYear());const n=s(t),r=m(e);g.set(n,(null!==(o=g.get(n))&&void 0!==o?o:0)+(Number.isFinite(r)?r:0))}const p=null!==(l=null!==(n=h.year)&&void 0!==n?n:v)&&void 0!==l?l:(new Date).getUTCFullYear();let x=1/0,b=-1/0;for(const e of g.values())x>e&&(x=e),e>b&&(b=e);x===1/0&&(x=0,b=0);const[w,k]=null!==(i=h.colorRamp)&&void 0!==i?i:[null!==(c=t.theme.semantic.surface)&&void 0!==c?c:"#ebedf0",null!==(a=t.theme.semantic.primary)&&void 0!==a?a:"#216e39"],$=t=>{if(b===x)return w;const o=(t-x)/(b-x);return e(w,k)(o)},A=null!==(u=h.gutter)&&void 0!==u?u:2,M=null!==(d=h.labelInset)&&void 0!==d?d:0,C=Math.min((y.width-M-53*A)/54,(y.height-6*A)/7);if(0>=C)return{nodes:[]};const F=new Date(Date.UTC(p,0,1)),N=F.getUTCDay(),W=new Date(F.getTime()-N*r),S=[];for(let e=0;54>e;e++)for(let t=0;7>t;t++){const o=new Date(W.getTime()+(7*e+t)*r);if(o.getUTCFullYear()!==p)continue;const n=s(o),l=g.get(n),i=null==l?w:$(l);S.push({type:"rect",x:y.x+M+e*(C+A),y:y.y+t*(C+A),w:C,h:C,style:{fill:i,stroke:"none"},datum:{date:o,value:null!=l?l:0}})}return{nodes:S}};function s(e){return`${e.getUTCFullYear()}-${i(e.getUTCMonth()+1)}-${i(e.getUTCDate())}`}function i(e){return 10>e?"0"+e:e+""}const c=e=>{var t,o,n,r,l,s,i,c,a;const u=e.config,d=null!==(t=u.nodeWidth)&&void 0!==t?t:80,h=null!==(o=u.nodeHeight)&&void 0!==o?o:30,y=null!==(n=u.orientation)&&void 0!==n?n:"vertical",f=null!==(r=u.edgeCurve)&&void 0!==r?r:"curved",m=!1!==u.showLabels,g=null!==(l=u.labelAccessor)&&void 0!==l?l:"id",v="function"==typeof g?g:e=>{var t,o;const n=e.data,r=n?n[g]:void 0;return(null!==(o=null!==(t=null!=r?r:e[g])&&void 0!==t?t:e.id)&&void 0!==o?o:"")+""},p=new Map,x=[],b=[],w=e=>{var t,o,n;const r=null!==(t=e.data)&&void 0!==t?t:{};return{x:"number"==typeof r.x?r.x:e.x,y:"number"==typeof r.y?r.y:e.y,w:null!==(o="number"==typeof r.width?r.width:e.width)&&void 0!==o?o:d,h:null!==(n="number"==typeof r.height?r.height:e.height)&&void 0!==n?n:h}};for(const t of e.nodes){const{x:o,y:n,w:r,h:l}=w(t);null!=o&&null!=n&&(p.set(t.id,{x:o,y:n,w:r,h:l}),x.push({type:"rect",x:o-r/2,y:n-l/2,w:r,h:l,style:{fill:null!==(s=u.nodeFill)&&void 0!==s?s:e.resolveColor(t.id),stroke:`var(--semiotic-surface, ${null!==(i=e.theme.semantic.surface)&&void 0!==i?i:"#fff"})`,strokeWidth:1.5},datum:t,id:t.id,label:v(t)+""}),m&&b.push({x:o,y:n,text:v(t)+"",anchor:"middle",baseline:"middle",fontSize:11}))}const k=[];for(const t of e.edges){const o="string"==typeof t.target?t.target:t.target.id,n=p.get("string"==typeof t.source?t.source:t.source.id),r=p.get(o);if(!n||!r)continue;const l="vertical"===y?{x:n.x,y:n.y+n.h/2}:{x:n.x+n.w/2,y:n.y},s="vertical"===y?{x:r.x,y:r.y-r.h/2}:{x:r.x-r.w/2,y:r.y};if("line"===f)k.push({type:"line",x1:l.x,y1:l.y,x2:s.x,y2:s.y,style:{stroke:`var(--semiotic-border, ${null!==(c=e.theme.semantic.border)&&void 0!==c?c:"#999"})`,strokeWidth:1},datum:t});else{const o=(l.y+s.y)/2,n=(l.x+s.x)/2;k.push({type:"curved",pathD:"vertical"===y?`M${l.x},${l.y} C${l.x},${o} ${s.x},${o} ${s.x},${s.y}`:`M${l.x},${l.y} C${n},${l.y} ${n},${s.y} ${s.x},${s.y}`,style:{stroke:`var(--semiotic-border, ${null!==(a=e.theme.semantic.border)&&void 0!==a?a:"#999"})`,strokeWidth:1,fill:"none"},datum:t})}}return{sceneNodes:x,sceneEdges:k,labels:b}},a=e=>{var t,o,n,r,l,s,i,c,a;const u=e.config,d=null!==(t=u.nodeWidth)&&void 0!==t?t:100,h=null!==(o=u.nodeHeight)&&void 0!==o?o:36,y=null!==(n=u.edgeStyle)&&void 0!==n?n:"polyline",f=!1!==u.showLabels,m=null!==(r=u.labelAccessor)&&void 0!==r?r:"label",g="function"==typeof m?m:e=>{var t,o;const n=e.data,r=n?n[m]:void 0;return(null!==(o=null!==(t=null!=r?r:e[m])&&void 0!==t?t:e.id)&&void 0!==o?o:"")+""},v=new Map,p=[],x=[],b=e=>{var t,o,n;const r=null!==(t=e.data)&&void 0!==t?t:{};return{x:"number"==typeof r.x?r.x:e.x,y:"number"==typeof r.y?r.y:e.y,w:null!==(o="number"==typeof r.width?r.width:e.width)&&void 0!==o?o:d,h:null!==(n="number"==typeof r.height?r.height:e.height)&&void 0!==n?n:h}};for(const t of e.nodes){const{x:o,y:n,w:r,h:i}=b(t);null!=o&&null!=n&&(v.set(t.id,{x:o,y:n,w:r,h:i}),p.push({type:"rect",x:o-r/2,y:n-i/2,w:r,h:i,style:{fill:null!==(l=u.nodeFill)&&void 0!==l?l:e.resolveColor(t.id),stroke:`var(--semiotic-border, ${null!==(s=e.theme.semantic.border)&&void 0!==s?s:"#888"})`,strokeWidth:1.5},datum:t,id:t.id,label:g(t)+""}),f&&x.push({x:o,y:n,text:g(t)+"",anchor:"middle",baseline:"middle",fontSize:11}))}const w=null!==(i=u.edgeStroke)&&void 0!==i?i:`var(--semiotic-border, ${null!==(c=e.theme.semantic.border)&&void 0!==c?c:"#666"})`,k=[];for(const t of e.edges){const e="string"==typeof t.target?t.target:t.target.id,o=v.get("string"==typeof t.source?t.source:t.source.id),n=v.get(e);if(!o||!n)continue;const r=null!==(a=t.data)&&void 0!==a?a:{},l=Array.isArray(r.points)?r.points:t.points;if(l&&l.length>=2)if("smooth"!==y||3>l.length){const e="M"+l.map(e=>`${e.x},${e.y}`).join(" L ");k.push({type:"curved",pathD:e,style:{stroke:w,strokeWidth:1,fill:"none"},datum:t})}else{let e=`M${l[0].x},${l[0].y}`;for(let t=1;l.length-1>t;t++)e+=` Q${l[t].x},${l[t].y} ${(l[t].x+l[t+1].x)/2},${(l[t].y+l[t+1].y)/2}`;const o=l[l.length-1];e+=` T${o.x},${o.y}`,k.push({type:"curved",pathD:e,style:{stroke:w,strokeWidth:1,fill:"none"},datum:t})}else k.push({type:"line",x1:o.x,y1:o.y,x2:n.x,y2:n.y,style:{stroke:w,strokeWidth:1},datum:t})}return{sceneNodes:p,sceneEdges:k,labels:x}};function u(e){return"function"==typeof e?e:t=>t[e]}function d(e){const t=Object.create(null);return e((e,o)=>{t[e]=o}),t}const h=e=>{var o,n,r,l,s,i,c;const a=e.config,{plot:h}=e.dimensions;if(0>=h.width||0>=h.height)return{nodes:[]};const f=u(a.categoryAccessor),m=u(a.stackBy),g=e=>{const t="function"==typeof a.valueAccessor?a.valueAccessor(e):e[a.valueAccessor],o=Number(t);return Number.isFinite(o)&&o>0?o:0},v=null!==(o=a.gutter)&&void 0!==o?o:2,p="string"==typeof a.categoryAccessor?a.categoryAccessor:"category",x="string"==typeof a.stackBy?a.stackBy:"stack",b="string"==typeof a.valueAccessor?a.valueAccessor:"value",w=(e,t,o)=>d(n=>{n("category",e),n("stack",t),n("value",o),"category"!==p&&n(p,e),"stack"!==x&&n(x,t),"value"!==b&&n(b,o)}),k=!1!==a.showCategoryLabels,$=null!==(n=a.labelPadding)&&void 0!==n?n:k?22:0,A=Math.max(0,h.height-$),M=[],C=new Map,F=[],N=new Set,W=new Map;for(const t of e.data){const e=f(t)+"",o=m(t)+"",n=g(t);C.has(e)||(M.push(e),C.set(e,0),W.set(e,new Map)),N.has(o)||(N.add(o),F.push(o)),C.set(e,(null!==(r=C.get(e))&&void 0!==r?r:0)+n);const s=W.get(e);s.set(o,(null!==(l=s.get(o))&&void 0!==l?l:0)+n)}const S=a.categoryOrder?y(a.categoryOrder,M,e=>C.has(e)):M,T=a.stackOrder?y(a.stackOrder,F,()=>!0):F,E=S.reduce((e,t)=>{var o;return e+(null!==(o=C.get(t))&&void 0!==o?o:0)},0);if(0>=E)return{nodes:[]};const D=Math.max(0,h.width-v*Math.max(0,S.length-1)),O=[],B=[];let L=h.x;for(const t of S){const o=null!==(s=C.get(t))&&void 0!==s?s:0,n=o/E*D;if(0>=n)continue;B.push({cat:t,x:L,w:n});const r=W.get(t);let l=h.y;for(const s of T){const c=null!==(i=r.get(s))&&void 0!==i?i:0;if(0>=c)continue;const a=c/o*A;O.push({type:"rect",x:L,y:l,w:n,h:a,style:{fill:e.resolveColor(s),stroke:"none"},datum:w(t,s,c),group:s}),l+=a}L+=n+v}return{nodes:O,overlays:k&&B.length>0?function(e,o,n){const r=e.map((e,r)=>6.5*e.cat.length>e.w-4?null:t.createElement("text",{key:"marimekko-label-"+r,x:e.x+e.w/2,y:o+12,textAnchor:"middle",fontSize:12,fill:n},e.cat));return t.createElement(t.Fragment,null,...r)}(B,h.y+A+4,`var(--semiotic-text, ${null!==(c=e.theme.semantic.text)&&void 0!==c?c:"currentColor"})`):null}};function y(e,t,o){const n=new Set,r=[];for(const t of e)o(t)&&!n.has(t)&&(n.add(t),r.push(t));for(const e of t)n.has(e)||r.push(e);return r}const f=e=>{var o,n,r,l,s,i,c,a,h,y,f,m;const g=e.config,{plot:v}=e.dimensions;if(0>=v.width||0>=v.height||0===e.data.length)return{nodes:[]};const p=null!==(o=g.rowHeight)&&void 0!==o?o:28,x=null!==(n=g.rowGap)&&void 0!==n?n:12,b=!1!==g.showLabels,w=b?null!==(r=g.labelWidth)&&void 0!==r?r:120:0,k=!1!==g.showTicks,$=k?14:0,A=null!==(l=g.tickFormat)&&void 0!==l?l:e=>e.toLocaleString(),M=v.x+w,C=Math.max(0,v.width-w);if(0>=C)return{nodes:[]};const F=u(g.categoryAccessor),N=e=>{const t=Number(e);return Number.isFinite(t)&&t>0?t:0},W=e=>N("function"==typeof g.valueAccessor?g.valueAccessor(e):e[g.valueAccessor]),S=e=>N("function"==typeof g.targetAccessor?g.targetAccessor(e):e[g.targetAccessor]),T=e=>{const t="function"==typeof g.rangesAccessor?g.rangesAccessor(e):e[g.rangesAccessor];return Array.isArray(t)?t.map(N).sort((e,t)=>e-t):[]},E="string"==typeof g.categoryAccessor?g.categoryAccessor:"metric",D="string"==typeof g.valueAccessor?g.valueAccessor:"value",O="string"==typeof g.targetAccessor?g.targetAccessor:"target",B=null!==(i=null!==(s=g.actualColor)&&void 0!==s?s:e.theme.semantic.primary)&&void 0!==i?i:"#3b6cb1",L=null!==(c=e.theme.semantic.text)&&void 0!==c?c:"currentColor",U=null!==(a=e.theme.semantic.textSecondary)&&void 0!==a?a:"#888",z=null!==(h=e.theme.semantic.surface)&&void 0!==h?h:"#e8eaed",j=null!==(y=e.theme.semantic.grid)&&void 0!==y?y:"#cdd1d6",V=null!==(f=e.theme.semantic.border)&&void 0!==f?f:"#a3a8af",Y=null!==(m=g.targetColor)&&void 0!==m?m:`var(--semiotic-text, ${L})`,H=[`var(--semiotic-surface, ${z})`,`var(--semiotic-grid, ${j})`,`var(--semiotic-border, ${V})`],P=`var(--semiotic-text, ${L})`,_=`var(--semiotic-text-secondary, ${U})`,I=[],G=[];for(let t=0;e.data.length>t;t++){const o=e.data[t],n=T(o),r=W(o),l=S(o),s=Math.max(r,l,...n.length?n:[0]);if(0>=s)continue;const i=v.y+t*(p+x+$);if(i+p+$>v.y+v.height)break;G.push({yTop:i,label:F(o),actual:r,target:l,maxVal:s});const c=e=>M+e/s*C,a=F(o),u=e=>d(t=>{t("metric",a),"metric"!==E&&t(E,a),e(t)});let h=M;for(let e=0;n.length>e;e++){const t=c(n[e]),o=t-h;o>0&&I.push({type:"rect",x:h,y:i,w:o,h:p,style:{fill:H[Math.min(e,H.length-1)],stroke:"none"},datum:u(t=>{t("range",e),t("rangeValue",n[e]),t("kind","range")}),group:"range-"+e}),h=t}const y=Math.max(6,Math.floor(.45*p));I.push({type:"rect",x:M,y:i+(p-y)/2,w:c(r)-M,h:y,style:{fill:B,stroke:"none"},datum:u(e=>{e("value",r),e("kind","actual"),"value"!==D&&e(D,r)}),group:"actual"});const f=3,m=Math.floor(.8*p);I.push({type:"rect",x:c(l)-f/2,y:i+(p-m)/2,w:f,h:m,style:{fill:Y,stroke:"none"},datum:u(e=>{e("target",l),e("kind","target"),"target"!==O&&e(O,l)}),group:"target"})}const Q=[];for(let e=0;G.length>e;e++){const o=G[e];if(b&&Q.push(t.createElement("text",{key:"bullet-label-"+e,x:v.x+w-8,y:o.yTop+p/2,textAnchor:"end",dominantBaseline:"middle",fontSize:13,fontWeight:500,fill:P},o.label)),k){const n=5,r=o.yTop+p+2;for(let l=0;n>l;l++){const s=o.maxVal*l/(n-1),i=M+s/o.maxVal*C;Q.push(t.createElement("line",{key:`bullet-tick-${e}-${l}`,x1:i,x2:i,y1:r,y2:r+3,stroke:_,strokeWidth:1}),t.createElement("text",{key:`bullet-ticktext-${e}-${l}`,x:i,y:r+12,textAnchor:0===l?"start":l===n-1?"end":"middle",fontSize:10,fill:_},A(s)))}}}return{nodes:I,overlays:Q.length>0?t.createElement(t.Fragment,null,...Q):null}},m=e=>{var n,r,l,s,i,c,a,u,d,h,y,f;const m=e.config,{plot:g}=e.dimensions,v=null!==(n=m.fields)&&void 0!==n?n:[];if(2>v.length||0>=g.width||0>=g.height)return{nodes:[]};if(0===e.data.length)return{nodes:[]};const p={};for(const t of v){if(null===(r=m.domains)||void 0===r?void 0:r[t]){p[t]=m.domains[t];continue}let o=1/0,n=-1/0;for(const r of e.data){const e=Number(r[t]);Number.isFinite(e)&&(o>e&&(o=e),e>n&&(n=e))}p[t]=Number.isFinite(o)&&Number.isFinite(n)&&o!==n?[o,n]:[0,1]}const x=!1!==m.showAxes,b=x?null!==(l=m.axisLabelPadding)&&void 0!==l?l:24:8,w=x?18:8,k=v.map(e=>o().domain(p[e]).range([g.y+g.height-w,g.y+b])),$=v.map((e,t)=>1===v.length?g.x+g.width/2:g.x+t/(v.length-1)*g.width),A=m.colorBy?"function"==typeof m.colorBy?m.colorBy:e=>{var t;return(null!==(t=e[m.colorBy])&&void 0!==t?t:"")+""}:null,M=null!==(s=m.opacity)&&void 0!==s?s:.45,C=null!==(i=m.strokeWidth)&&void 0!==i?i:1.25,F=null!==(c=e.theme.semantic.primary)&&void 0!==c?c:"#3b6cb1",N=null!==(a=m.dimmedOpacity)&&void 0!==a?a:.08,W=m.highlightFn,S=[],T=[];for(const t of e.data){const o=A?e.resolveColor(A(t)+""):F,n=!W||W(t),r=W?n?Math.min(1,M+.4):N:M,l=n?T:S;for(let e=0;v.length-1>e;e++){const s=Number(t[v[e]]),i=Number(t[v[e+1]]);if(!Number.isFinite(s)||!Number.isFinite(i))continue;const c={type:"connector",x1:$[e],y1:k[e](s),x2:$[e+1],y2:k[e+1](i),style:{stroke:o,strokeWidth:W&&n?C+.75:C,opacity:r,fill:"none"},datum:t};l.push(c)}if(m.showPoints)for(let e=0;v.length>e;e++){const n=Number(t[v[e]]);if(!Number.isFinite(n))continue;const s={type:"point",x:$[e],y:k[e](n),r:2.5,style:{fill:o,stroke:"none",opacity:Math.min(1,r+.3)},datum:t};l.push(s)}}let E=null;if(x){const o=`var(--semiotic-border, ${null!==(u=e.theme.semantic.border)&&void 0!==u?u:"#aaa"})`,n=`var(--semiotic-text, ${null!==(d=e.theme.semantic.text)&&void 0!==d?d:"currentColor"})`,r=`var(--semiotic-text-secondary, ${null!==(h=e.theme.semantic.textSecondary)&&void 0!==h?h:"#888"})`,l=g.y+b,s=g.y+g.height-w,i=[];for(let e=0;v.length>e;e++){const c=v[e],a=$[e],u=null!==(f=null===(y=m.tickFormat)||void 0===y?void 0:y[c])&&void 0!==f?f:e=>e.toLocaleString();i.push(t.createElement("line",{key:"pc-axis-line-"+e,x1:a,x2:a,y1:l,y2:s,stroke:o,strokeWidth:1})),i.push(t.createElement("text",{key:"pc-axis-label-"+e,x:a,y:g.y+b-8,textAnchor:"middle",fontSize:12,fontWeight:600,fill:n},c));const[d,h]=p[c],x=5;for(let n=0;x>n;n++){const l=d+(h-d)*n/(x-1),s=k[e](l);i.push(t.createElement("line",{key:`pc-tick-${e}-${n}`,x1:a-3,x2:a+3,y1:s,y2:s,stroke:o,strokeWidth:1}),t.createElement("text",{key:`pc-ticktext-${e}-${n}`,x:a+6,y:s+3,fontSize:10,fill:r},u(l)))}}E=t.createElement(t.Fragment,null,...i)}return{nodes:S.concat(T),overlays:E}};export{f as bulletLayout,l as calendarLayout,a as dagreLayout,c as flextreeLayout,h as marimekkoLayout,m as parallelCoordinatesLayout,n as waffleLayout};
1
+ import{interpolateRgb as e}from"d3-interpolate";import*as t from"react";import{scaleLinear as o}from"d3-scale";function n(e){return"function"==typeof e?e:t=>t[e]}function r(e){const t=Object.create(null);return e((e,o)=>{t[e]=o}),t}const l=e=>{var t,o,n,l,s,i;const c=e.config,a=null!==(t=c.rows)&&void 0!==t?t:10,u=null!==(o=c.columns)&&void 0!==o?o:10,d=null!==(n=c.gutter)&&void 0!==n?n:2,h=a*u;if(0>=a||0>=u||0>=h)return{nodes:[]};const{plot:y}=e.dimensions;if(0>=y.width||0>=y.height)return{nodes:[]};const f=(y.width-d*(u-1))/u,m=(y.height-d*(a-1))/a;if(0>=f||0>=m)return{nodes:[]};const g=null!==(l=null==(v=c.categoryAccessor)?null:"function"==typeof v?v:e=>e[v])&&void 0!==l?l:()=>"_default";var v;const p=null!==(s=function(e){return null==e?null:"function"==typeof e?e:t=>Number(t[e])}(c.valueAccessor))&&void 0!==s?s:()=>1,x=new Map,b=[];for(const t of e.data){const e=g(t)+"",o=Number(p(t)),n=Number.isFinite(o)?Math.max(0,o):0;x.has(e)||b.push(e),x.set(e,(null!==(i=x.get(e))&&void 0!==i?i:0)+n)}const w=Array.from(x.values()).reduce((e,t)=>e+t,0);if(0>=w)return{nodes:[]};let k;if(c.categoryOrder&&c.categoryOrder.length>0){const e=new Set,t=[];for(const o of c.categoryOrder)x.has(o)&&!e.has(o)&&(e.add(o),t.push(o));k=[...t,...b.filter(t=>!e.has(t))]}else k=b;if(0===k.length)return{nodes:[]};const $=k.map(e=>{var t;return{cat:e,exact:(null!==(t=x.get(e))&&void 0!==t?t:0)/w*h}}),A=$.map(e=>Object.assign(Object.assign({},e),{count:Math.floor(e.exact)})),M=A.reduce((e,t)=>e+t.count,0),C=A.map((e,t)=>({i:t,rem:e.exact-e.count})).sort((e,t)=>t.rem-e.rem);for(let e=0;h-M>e;e++)A[C[e%C.length].i].count+=1;const F="string"==typeof c.categoryAccessor?c.categoryAccessor:"category",N="string"==typeof c.valueAccessor?c.valueAccessor:"value",W=(e,t,o)=>r(n=>{var r,l;n("category",e),n("value",null!==(r=x.get(e))&&void 0!==r?r:0),"category"!==F&&n(F,e),"value"!==N&&n(N,null!==(l=x.get(e))&&void 0!==l?l:0),n("cells",o),n("_waffleCategory",e),n("_waffleIndex",t)}),S=[];let T=0;for(const t of A){const o=e.resolveColor(t.cat);for(let e=0;t.count>e;e++)S.push({type:"rect",x:y.x+T%u*(f+d),y:y.y+(a-1-Math.floor(T/u))*(m+d),w:f,h:m,style:{fill:o,stroke:"none"},datum:W(t.cat,T,t.count),group:t.cat}),T++}return{nodes:S}},s=864e5,i=t=>{var o,n,r,l,i,a,u,d;const h=t.config,{plot:y}=t.dimensions;if(0>=y.width||0>=y.height)return{nodes:[]};const f=e=>{const t="function"==typeof h.dateAccessor?h.dateAccessor(e):e[h.dateAccessor];return t instanceof Date?t:new Date(t)},m=e=>{const t="function"==typeof h.valueAccessor?h.valueAccessor(e):e[h.valueAccessor];return Number(t)},g=new Map;let v=null;for(const e of t.data){const t=f(e);if(!isFinite(t.getTime()))continue;null==v&&(v=t.getUTCFullYear());const n=c(t),r=m(e);g.set(n,(null!==(o=g.get(n))&&void 0!==o?o:0)+(Number.isFinite(r)?r:0))}const p=null!==(r=null!==(n=h.year)&&void 0!==n?n:v)&&void 0!==r?r:(new Date).getUTCFullYear();let x=1/0,b=-1/0;for(const e of g.values())x>e&&(x=e),e>b&&(b=e);x===1/0&&(x=0,b=0);const[w,k]=null!==(l=h.colorRamp)&&void 0!==l?l:[null!==(i=t.theme.semantic.surface)&&void 0!==i?i:"#ebedf0",null!==(a=t.theme.semantic.primary)&&void 0!==a?a:"#216e39"],$=t=>{if(b===x)return w;const o=(t-x)/(b-x);return e(w,k)(o)},A=null!==(u=h.gutter)&&void 0!==u?u:2,M=null!==(d=h.labelInset)&&void 0!==d?d:0,C=Math.min((y.width-M-53*A)/54,(y.height-6*A)/7);if(0>=C)return{nodes:[]};const F=new Date(Date.UTC(p,0,1)),N=F.getUTCDay(),W=new Date(F.getTime()-N*s),S=[];for(let e=0;54>e;e++)for(let t=0;7>t;t++){const o=new Date(W.getTime()+(7*e+t)*s);if(o.getUTCFullYear()!==p)continue;const n=c(o),r=g.get(n),l=null==r?w:$(r);S.push({type:"rect",x:y.x+M+e*(C+A),y:y.y+t*(C+A),w:C,h:C,style:{fill:l,stroke:"none"},datum:{date:o,value:null!=r?r:0}})}return{nodes:S}};function c(e){return`${e.getUTCFullYear()}-${a(e.getUTCMonth()+1)}-${a(e.getUTCDate())}`}function a(e){return 10>e?"0"+e:e+""}const u=e=>{var t,o,n,r,l,s,i,c,a;const u=e.config,d=null!==(t=u.nodeWidth)&&void 0!==t?t:80,h=null!==(o=u.nodeHeight)&&void 0!==o?o:30,y=null!==(n=u.orientation)&&void 0!==n?n:"vertical",f=null!==(r=u.edgeCurve)&&void 0!==r?r:"curved",m=!1!==u.showLabels,g=null!==(l=u.labelAccessor)&&void 0!==l?l:"id",v="function"==typeof g?g:e=>{var t,o;const n=e.data,r=n?n[g]:void 0;return(null!==(o=null!==(t=null!=r?r:e[g])&&void 0!==t?t:e.id)&&void 0!==o?o:"")+""},p=new Map,x=[],b=[],w=e=>{var t,o,n;const r=null!==(t=e.data)&&void 0!==t?t:{};return{x:"number"==typeof r.x?r.x:e.x,y:"number"==typeof r.y?r.y:e.y,w:null!==(o="number"==typeof r.width?r.width:e.width)&&void 0!==o?o:d,h:null!==(n="number"==typeof r.height?r.height:e.height)&&void 0!==n?n:h}};for(const t of e.nodes){const{x:o,y:n,w:r,h:l}=w(t);null!=o&&null!=n&&(p.set(t.id,{x:o,y:n,w:r,h:l}),x.push({type:"rect",x:o-r/2,y:n-l/2,w:r,h:l,style:{fill:null!==(s=u.nodeFill)&&void 0!==s?s:e.resolveColor(t.id),stroke:`var(--semiotic-surface, ${null!==(i=e.theme.semantic.surface)&&void 0!==i?i:"#fff"})`,strokeWidth:1.5},datum:t,id:t.id,label:v(t)+""}),m&&b.push({x:o,y:n,text:v(t)+"",anchor:"middle",baseline:"middle",fontSize:11}))}const k=[];for(const t of e.edges){const o="string"==typeof t.target?t.target:t.target.id,n=p.get("string"==typeof t.source?t.source:t.source.id),r=p.get(o);if(!n||!r)continue;const l="vertical"===y?{x:n.x,y:n.y+n.h/2}:{x:n.x+n.w/2,y:n.y},s="vertical"===y?{x:r.x,y:r.y-r.h/2}:{x:r.x-r.w/2,y:r.y};if("line"===f)k.push({type:"line",x1:l.x,y1:l.y,x2:s.x,y2:s.y,style:{stroke:`var(--semiotic-border, ${null!==(c=e.theme.semantic.border)&&void 0!==c?c:"#999"})`,strokeWidth:1},datum:t});else{const o=(l.y+s.y)/2,n=(l.x+s.x)/2;k.push({type:"curved",pathD:"vertical"===y?`M${l.x},${l.y} C${l.x},${o} ${s.x},${o} ${s.x},${s.y}`:`M${l.x},${l.y} C${n},${l.y} ${n},${s.y} ${s.x},${s.y}`,style:{stroke:`var(--semiotic-border, ${null!==(a=e.theme.semantic.border)&&void 0!==a?a:"#999"})`,strokeWidth:1,fill:"none"},datum:t})}}return{sceneNodes:x,sceneEdges:k,labels:b}},d=e=>{var t,o,n,r,l,s,i,c,a;const u=e.config,d=null!==(t=u.nodeWidth)&&void 0!==t?t:100,h=null!==(o=u.nodeHeight)&&void 0!==o?o:36,y=null!==(n=u.edgeStyle)&&void 0!==n?n:"polyline",f=!1!==u.showLabels,m=null!==(r=u.labelAccessor)&&void 0!==r?r:"label",g="function"==typeof m?m:e=>{var t,o;const n=e.data,r=n?n[m]:void 0;return(null!==(o=null!==(t=null!=r?r:e[m])&&void 0!==t?t:e.id)&&void 0!==o?o:"")+""},v=new Map,p=[],x=[],b=e=>{var t,o,n;const r=null!==(t=e.data)&&void 0!==t?t:{};return{x:"number"==typeof r.x?r.x:e.x,y:"number"==typeof r.y?r.y:e.y,w:null!==(o="number"==typeof r.width?r.width:e.width)&&void 0!==o?o:d,h:null!==(n="number"==typeof r.height?r.height:e.height)&&void 0!==n?n:h}};for(const t of e.nodes){const{x:o,y:n,w:r,h:i}=b(t);null!=o&&null!=n&&(v.set(t.id,{x:o,y:n,w:r,h:i}),p.push({type:"rect",x:o-r/2,y:n-i/2,w:r,h:i,style:{fill:null!==(l=u.nodeFill)&&void 0!==l?l:e.resolveColor(t.id),stroke:`var(--semiotic-border, ${null!==(s=e.theme.semantic.border)&&void 0!==s?s:"#888"})`,strokeWidth:1.5},datum:t,id:t.id,label:g(t)+""}),f&&x.push({x:o,y:n,text:g(t)+"",anchor:"middle",baseline:"middle",fontSize:11}))}const w=null!==(i=u.edgeStroke)&&void 0!==i?i:`var(--semiotic-border, ${null!==(c=e.theme.semantic.border)&&void 0!==c?c:"#666"})`,k=[];for(const t of e.edges){const e="string"==typeof t.target?t.target:t.target.id,o=v.get("string"==typeof t.source?t.source:t.source.id),n=v.get(e);if(!o||!n)continue;const r=null!==(a=t.data)&&void 0!==a?a:{},l=Array.isArray(r.points)?r.points:t.points;if(l&&l.length>=2)if("smooth"!==y||3>l.length){const e="M"+l.map(e=>`${e.x},${e.y}`).join(" L ");k.push({type:"curved",pathD:e,style:{stroke:w,strokeWidth:1,fill:"none"},datum:t})}else{let e=`M${l[0].x},${l[0].y}`;for(let t=1;l.length-1>t;t++)e+=` Q${l[t].x},${l[t].y} ${(l[t].x+l[t+1].x)/2},${(l[t].y+l[t+1].y)/2}`;const o=l[l.length-1];e+=` T${o.x},${o.y}`,k.push({type:"curved",pathD:e,style:{stroke:w,strokeWidth:1,fill:"none"},datum:t})}else k.push({type:"line",x1:o.x,y1:o.y,x2:n.x,y2:n.y,style:{stroke:w,strokeWidth:1},datum:t})}return{sceneNodes:p,sceneEdges:k,labels:x}},h=e=>{var o,l,s,i,c,a,u;const d=e.config,{plot:h}=e.dimensions;if(0>=h.width||0>=h.height)return{nodes:[]};const f=n(d.categoryAccessor),m=n(d.stackBy),g=e=>{const t="function"==typeof d.valueAccessor?d.valueAccessor(e):e[d.valueAccessor],o=Number(t);return Number.isFinite(o)&&o>0?o:0},v=null!==(o=d.gutter)&&void 0!==o?o:2,p="string"==typeof d.categoryAccessor?d.categoryAccessor:"category",x="string"==typeof d.stackBy?d.stackBy:"stack",b="string"==typeof d.valueAccessor?d.valueAccessor:"value",w=(e,t,o)=>r(n=>{n("category",e),n("stack",t),n("value",o),"category"!==p&&n(p,e),"stack"!==x&&n(x,t),"value"!==b&&n(b,o)}),k=!1!==d.showCategoryLabels,$=null!==(l=d.labelPadding)&&void 0!==l?l:k?22:0,A=Math.max(0,h.height-$),M=[],C=new Map,F=[],N=new Set,W=new Map;for(const t of e.data){const e=f(t)+"",o=m(t)+"",n=g(t);C.has(e)||(M.push(e),C.set(e,0),W.set(e,new Map)),N.has(o)||(N.add(o),F.push(o)),C.set(e,(null!==(s=C.get(e))&&void 0!==s?s:0)+n);const r=W.get(e);r.set(o,(null!==(i=r.get(o))&&void 0!==i?i:0)+n)}const S=d.categoryOrder?y(d.categoryOrder,M,e=>C.has(e)):M,T=d.stackOrder?y(d.stackOrder,F,()=>!0):F,E=S.reduce((e,t)=>{var o;return e+(null!==(o=C.get(t))&&void 0!==o?o:0)},0);if(0>=E)return{nodes:[]};const D=Math.max(0,h.width-v*Math.max(0,S.length-1)),O=[],B=[];let L=h.x;for(const t of S){const o=null!==(c=C.get(t))&&void 0!==c?c:0,n=o/E*D;if(0>=n)continue;B.push({cat:t,x:L,w:n});const r=W.get(t);let l=h.y;for(const s of T){const i=null!==(a=r.get(s))&&void 0!==a?a:0;if(0>=i)continue;const c=i/o*A;O.push({type:"rect",x:L,y:l,w:n,h:c,style:{fill:e.resolveColor(s),stroke:"none"},datum:w(t,s,i),group:s}),l+=c}L+=n+v}return{nodes:O,overlays:k&&B.length>0?function(e,o,n){const r=e.map((e,r)=>6.5*e.cat.length>e.w-4?null:t.createElement("text",{key:"marimekko-label-"+r,x:e.x+e.w/2,y:o+12,textAnchor:"middle",fontSize:12,fill:n},e.cat));return t.createElement(t.Fragment,null,...r)}(B,h.y+A+4,`var(--semiotic-text, ${null!==(u=e.theme.semantic.text)&&void 0!==u?u:"currentColor"})`):null}};function y(e,t,o){const n=new Set,r=[];for(const t of e)o(t)&&!n.has(t)&&(n.add(t),r.push(t));for(const e of t)n.has(e)||r.push(e);return r}const f=e=>{var o,l,s,i,c,a,u,d,h,y,f,m;const g=e.config,{plot:v}=e.dimensions;if(0>=v.width||0>=v.height||0===e.data.length)return{nodes:[]};const p=null!==(o=g.rowHeight)&&void 0!==o?o:28,x=null!==(l=g.rowGap)&&void 0!==l?l:12,b=!1!==g.showLabels,w=b?null!==(s=g.labelWidth)&&void 0!==s?s:120:0,k=!1!==g.showTicks,$=k?14:0,A=null!==(i=g.tickFormat)&&void 0!==i?i:e=>e.toLocaleString(),M=v.x+w,C=Math.max(0,v.width-w);if(0>=C)return{nodes:[]};const F=n(g.categoryAccessor),N=e=>{const t=Number(e);return Number.isFinite(t)&&t>0?t:0},W=e=>N("function"==typeof g.valueAccessor?g.valueAccessor(e):e[g.valueAccessor]),S=e=>N("function"==typeof g.targetAccessor?g.targetAccessor(e):e[g.targetAccessor]),T=e=>{const t="function"==typeof g.rangesAccessor?g.rangesAccessor(e):e[g.rangesAccessor];return Array.isArray(t)?t.map(N).sort((e,t)=>e-t):[]},E="string"==typeof g.categoryAccessor?g.categoryAccessor:"metric",D="string"==typeof g.valueAccessor?g.valueAccessor:"value",O="string"==typeof g.targetAccessor?g.targetAccessor:"target",B=null!==(a=null!==(c=g.actualColor)&&void 0!==c?c:e.theme.semantic.primary)&&void 0!==a?a:"#3b6cb1",L=null!==(u=e.theme.semantic.text)&&void 0!==u?u:"currentColor",U=null!==(d=e.theme.semantic.textSecondary)&&void 0!==d?d:"#888",z=null!==(h=e.theme.semantic.surface)&&void 0!==h?h:"#e8eaed",j=null!==(y=e.theme.semantic.grid)&&void 0!==y?y:"#cdd1d6",V=null!==(f=e.theme.semantic.border)&&void 0!==f?f:"#a3a8af",Y=null!==(m=g.targetColor)&&void 0!==m?m:`var(--semiotic-text, ${L})`,H=[`var(--semiotic-surface, ${z})`,`var(--semiotic-grid, ${j})`,`var(--semiotic-border, ${V})`],P=`var(--semiotic-text, ${L})`,_=`var(--semiotic-text-secondary, ${U})`,I=[],G=[];for(let t=0;e.data.length>t;t++){const o=e.data[t],n=T(o),l=W(o),s=S(o),i=Math.max(l,s,...n.length?n:[0]);if(0>=i)continue;const c=v.y+t*(p+x+$);if(c+p+$>v.y+v.height)break;G.push({yTop:c,label:F(o),actual:l,target:s,maxVal:i});const a=e=>M+e/i*C,u=F(o),d=e=>r(t=>{t("metric",u),"metric"!==E&&t(E,u),e(t)});let h=M;for(let e=0;n.length>e;e++){const t=a(n[e]),o=t-h;o>0&&I.push({type:"rect",x:h,y:c,w:o,h:p,style:{fill:H[Math.min(e,H.length-1)],stroke:"none"},datum:d(t=>{t("range",e),t("rangeValue",n[e]),t("kind","range")}),group:"range-"+e}),h=t}const y=Math.max(6,Math.floor(.45*p));I.push({type:"rect",x:M,y:c+(p-y)/2,w:a(l)-M,h:y,style:{fill:B,stroke:"none"},datum:d(e=>{e("value",l),e("kind","actual"),"value"!==D&&e(D,l)}),group:"actual"});const f=3,m=Math.floor(.8*p);I.push({type:"rect",x:a(s)-f/2,y:c+(p-m)/2,w:f,h:m,style:{fill:Y,stroke:"none"},datum:d(e=>{e("target",s),e("kind","target"),"target"!==O&&e(O,s)}),group:"target"})}const Q=[];for(let e=0;G.length>e;e++){const o=G[e];if(b&&Q.push(t.createElement("text",{key:"bullet-label-"+e,x:v.x+w-8,y:o.yTop+p/2,textAnchor:"end",dominantBaseline:"middle",fontSize:13,fontWeight:500,fill:P},o.label)),k){const n=5,r=o.yTop+p+2;for(let l=0;n>l;l++){const s=o.maxVal*l/(n-1),i=M+s/o.maxVal*C;Q.push(t.createElement("line",{key:`bullet-tick-${e}-${l}`,x1:i,x2:i,y1:r,y2:r+3,stroke:_,strokeWidth:1}),t.createElement("text",{key:`bullet-ticktext-${e}-${l}`,x:i,y:r+12,textAnchor:0===l?"start":l===n-1?"end":"middle",fontSize:10,fill:_},A(s)))}}}return{nodes:I,overlays:Q.length>0?t.createElement(t.Fragment,null,...Q):null}},m=e=>{var n,r,l,s,i,c,a,u,d,h,y,f;const m=e.config,{plot:g}=e.dimensions,v=null!==(n=m.fields)&&void 0!==n?n:[];if(2>v.length||0>=g.width||0>=g.height)return{nodes:[]};if(0===e.data.length)return{nodes:[]};const p={};for(const t of v){if(null===(r=m.domains)||void 0===r?void 0:r[t]){p[t]=m.domains[t];continue}let o=1/0,n=-1/0;for(const r of e.data){const e=Number(r[t]);Number.isFinite(e)&&(o>e&&(o=e),e>n&&(n=e))}p[t]=Number.isFinite(o)&&Number.isFinite(n)&&o!==n?[o,n]:[0,1]}const x=!1!==m.showAxes,b=x?null!==(l=m.axisLabelPadding)&&void 0!==l?l:24:8,w=x?18:8,k=v.map(e=>o().domain(p[e]).range([g.y+g.height-w,g.y+b])),$=v.map((e,t)=>1===v.length?g.x+g.width/2:g.x+t/(v.length-1)*g.width),A=m.colorBy?"function"==typeof m.colorBy?m.colorBy:e=>{var t;return(null!==(t=e[m.colorBy])&&void 0!==t?t:"")+""}:null,M=null!==(s=m.opacity)&&void 0!==s?s:.45,C=null!==(i=m.strokeWidth)&&void 0!==i?i:1.25,F=null!==(c=e.theme.semantic.primary)&&void 0!==c?c:"#3b6cb1",N=null!==(a=m.dimmedOpacity)&&void 0!==a?a:.08,W=m.highlightFn,S=[],T=[];for(const t of e.data){const o=A?e.resolveColor(A(t)+""):F,n=!W||W(t),r=W?n?Math.min(1,M+.4):N:M,l=n?T:S;for(let e=0;v.length-1>e;e++){const s=Number(t[v[e]]),i=Number(t[v[e+1]]);if(!Number.isFinite(s)||!Number.isFinite(i))continue;const c={type:"connector",x1:$[e],y1:k[e](s),x2:$[e+1],y2:k[e+1](i),style:{stroke:o,strokeWidth:W&&n?C+.75:C,opacity:r,fill:"none"},datum:t};l.push(c)}if(m.showPoints)for(let e=0;v.length>e;e++){const n=Number(t[v[e]]);if(!Number.isFinite(n))continue;const s={type:"point",x:$[e],y:k[e](n),r:2.5,style:{fill:o,stroke:"none",opacity:Math.min(1,r+.3)},datum:t};l.push(s)}}let E=null;if(x){const o=`var(--semiotic-border, ${null!==(u=e.theme.semantic.border)&&void 0!==u?u:"#aaa"})`,n=`var(--semiotic-text, ${null!==(d=e.theme.semantic.text)&&void 0!==d?d:"currentColor"})`,r=`var(--semiotic-text-secondary, ${null!==(h=e.theme.semantic.textSecondary)&&void 0!==h?h:"#888"})`,l=g.y+b,s=g.y+g.height-w,i=[];for(let e=0;v.length>e;e++){const c=v[e],a=$[e],u=null!==(f=null===(y=m.tickFormat)||void 0===y?void 0:y[c])&&void 0!==f?f:e=>e.toLocaleString();i.push(t.createElement("line",{key:"pc-axis-line-"+e,x1:a,x2:a,y1:l,y2:s,stroke:o,strokeWidth:1})),i.push(t.createElement("text",{key:"pc-axis-label-"+e,x:a,y:g.y+b-8,textAnchor:"middle",fontSize:12,fontWeight:600,fill:n},c));const[d,h]=p[c],x=5;for(let n=0;x>n;n++){const l=d+(h-d)*n/(x-1),s=k[e](l);i.push(t.createElement("line",{key:`pc-tick-${e}-${n}`,x1:a-3,x2:a+3,y1:s,y2:s,stroke:o,strokeWidth:1}),t.createElement("text",{key:`pc-ticktext-${e}-${n}`,x:a+6,y:s+3,fontSize:10,fill:r},u(l)))}}E=t.createElement(t.Fragment,null,...i)}return{nodes:S.concat(T),overlays:E}};export{f as bulletLayout,i as calendarLayout,d as dagreLayout,u as flextreeLayout,h as marimekkoLayout,m as parallelCoordinatesLayout,l as waffleLayout};
@@ -29,3 +29,7 @@ export { RingBuffer } from "./components/realtime/RingBuffer";
29
29
  export { IncrementalExtent } from "./components/realtime/IncrementalExtent";
30
30
  export { normalizeTooltip, MultiPointTooltip } from "./components/Tooltip/Tooltip";
31
31
  export { useReducedMotion, useHighContrast } from "./components/stream/useMediaPreferences";
32
+ export { sweepToAngles, valueToAngle, computeArcBoundingBox, } from "./components/charts/shared/radialGeometry";
33
+ export type { SweepAngles, ArcBoundingBox } from "./components/charts/shared/radialGeometry";
34
+ export { useStreamStatus } from "./components/charts/shared/useStreamStatus";
35
+ export type { StreamStatus, StreamStatusOptions, StreamStatusResult, } from "./components/charts/shared/useStreamStatus";