minerva-design 1.7.1 → 1.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (245) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/README.md +2 -0
  3. package/custom-elements.json +10 -2
  4. package/dist/angular/fesm2022/minerva-angular.mjs +40 -5
  5. package/dist/angular/fesm2022/minerva-angular.mjs.map +1 -1
  6. package/dist/angular/types/minerva-angular.d.ts +14 -1
  7. package/dist/charts/react/charts.cjs +1 -1
  8. package/dist/charts/react/charts.cjs.map +1 -1
  9. package/dist/charts/react/charts.js +120 -97
  10. package/dist/charts/react/charts.js.map +1 -1
  11. package/dist/charts/react/types.d.cts +8 -0
  12. package/dist/charts/react/types.d.ts +8 -0
  13. package/dist/core/contracts.cjs +1 -1
  14. package/dist/core/contracts.cjs.map +1 -1
  15. package/dist/core/contracts.js +1 -1
  16. package/dist/core/contracts.js.map +1 -1
  17. package/dist/icons/_virtual/_rolldown/runtime.cjs +1 -0
  18. package/dist/icons/_virtual/_rolldown/runtime.js +11 -0
  19. package/dist/icons/core.cjs +1 -0
  20. package/dist/icons/core.d.cts +12 -0
  21. package/dist/icons/core.d.ts +12 -0
  22. package/dist/icons/core.js +21 -0
  23. package/dist/icons/engine/canvas2d.cjs +2 -0
  24. package/dist/icons/engine/canvas2d.cjs.map +1 -0
  25. package/dist/icons/engine/canvas2d.d.cts +10 -0
  26. package/dist/icons/engine/canvas2d.d.ts +10 -0
  27. package/dist/icons/engine/canvas2d.js +47 -0
  28. package/dist/icons/engine/canvas2d.js.map +1 -0
  29. package/dist/icons/engine/color.cjs +2 -0
  30. package/dist/icons/engine/color.cjs.map +1 -0
  31. package/dist/icons/engine/color.d.cts +9 -0
  32. package/dist/icons/engine/color.d.ts +9 -0
  33. package/dist/icons/engine/color.js +115 -0
  34. package/dist/icons/engine/color.js.map +1 -0
  35. package/dist/icons/engine/defaults.cjs +2 -0
  36. package/dist/icons/engine/defaults.cjs.map +1 -0
  37. package/dist/icons/engine/defaults.d.cts +17 -0
  38. package/dist/icons/engine/defaults.d.ts +17 -0
  39. package/dist/icons/engine/defaults.js +39 -0
  40. package/dist/icons/engine/defaults.js.map +1 -0
  41. package/dist/icons/engine/define.cjs +2 -0
  42. package/dist/icons/engine/define.cjs.map +1 -0
  43. package/dist/icons/engine/define.d.cts +8 -0
  44. package/dist/icons/engine/define.d.ts +8 -0
  45. package/dist/icons/engine/define.js +19 -0
  46. package/dist/icons/engine/define.js.map +1 -0
  47. package/dist/icons/engine/icon-canvas.cjs +2 -0
  48. package/dist/icons/engine/icon-canvas.cjs.map +1 -0
  49. package/dist/icons/engine/icon-canvas.d.cts +13 -0
  50. package/dist/icons/engine/icon-canvas.d.ts +13 -0
  51. package/dist/icons/engine/icon-canvas.js +117 -0
  52. package/dist/icons/engine/icon-canvas.js.map +1 -0
  53. package/dist/icons/engine/icons/actions.cjs +2 -0
  54. package/dist/icons/engine/icons/actions.cjs.map +1 -0
  55. package/dist/icons/engine/icons/actions.d.cts +67 -0
  56. package/dist/icons/engine/icons/actions.d.ts +67 -0
  57. package/dist/icons/engine/icons/actions.js +447 -0
  58. package/dist/icons/engine/icons/actions.js.map +1 -0
  59. package/dist/icons/engine/icons/arrows.cjs +2 -0
  60. package/dist/icons/engine/icons/arrows.cjs.map +1 -0
  61. package/dist/icons/engine/icons/arrows.d.cts +69 -0
  62. package/dist/icons/engine/icons/arrows.d.ts +69 -0
  63. package/dist/icons/engine/icons/arrows.js +417 -0
  64. package/dist/icons/engine/icons/arrows.js.map +1 -0
  65. package/dist/icons/engine/icons/communication.cjs +2 -0
  66. package/dist/icons/engine/icons/communication.cjs.map +1 -0
  67. package/dist/icons/engine/icons/communication.d.cts +21 -0
  68. package/dist/icons/engine/icons/communication.d.ts +21 -0
  69. package/dist/icons/engine/icons/communication.js +142 -0
  70. package/dist/icons/engine/icons/communication.js.map +1 -0
  71. package/dist/icons/engine/icons/data.cjs +2 -0
  72. package/dist/icons/engine/icons/data.cjs.map +1 -0
  73. package/dist/icons/engine/icons/data.d.cts +29 -0
  74. package/dist/icons/engine/icons/data.d.ts +29 -0
  75. package/dist/icons/engine/icons/data.js +203 -0
  76. package/dist/icons/engine/icons/data.js.map +1 -0
  77. package/dist/icons/engine/icons/devices.cjs +2 -0
  78. package/dist/icons/engine/icons/devices.cjs.map +1 -0
  79. package/dist/icons/engine/icons/devices.d.cts +25 -0
  80. package/dist/icons/engine/icons/devices.d.ts +25 -0
  81. package/dist/icons/engine/icons/devices.js +188 -0
  82. package/dist/icons/engine/icons/devices.js.map +1 -0
  83. package/dist/icons/engine/icons/files.cjs +2 -0
  84. package/dist/icons/engine/icons/files.cjs.map +1 -0
  85. package/dist/icons/engine/icons/files.d.cts +33 -0
  86. package/dist/icons/engine/icons/files.d.ts +33 -0
  87. package/dist/icons/engine/icons/files.js +218 -0
  88. package/dist/icons/engine/icons/files.js.map +1 -0
  89. package/dist/icons/engine/icons/finance.cjs +2 -0
  90. package/dist/icons/engine/icons/finance.cjs.map +1 -0
  91. package/dist/icons/engine/icons/finance.d.cts +29 -0
  92. package/dist/icons/engine/icons/finance.d.ts +29 -0
  93. package/dist/icons/engine/icons/finance.js +229 -0
  94. package/dist/icons/engine/icons/finance.js.map +1 -0
  95. package/dist/icons/engine/icons/index.d.cts +10 -0
  96. package/dist/icons/engine/icons/index.d.ts +10 -0
  97. package/dist/icons/engine/icons/interface.cjs +2 -0
  98. package/dist/icons/engine/icons/interface.cjs.map +1 -0
  99. package/dist/icons/engine/icons/interface.d.cts +69 -0
  100. package/dist/icons/engine/icons/interface.d.ts +69 -0
  101. package/dist/icons/engine/icons/interface.js +471 -0
  102. package/dist/icons/engine/icons/interface.js.map +1 -0
  103. package/dist/icons/engine/icons/media.cjs +2 -0
  104. package/dist/icons/engine/icons/media.cjs.map +1 -0
  105. package/dist/icons/engine/icons/media.d.cts +41 -0
  106. package/dist/icons/engine/icons/media.d.ts +41 -0
  107. package/dist/icons/engine/icons/media.js +266 -0
  108. package/dist/icons/engine/icons/media.js.map +1 -0
  109. package/dist/icons/engine/icons/status.cjs +2 -0
  110. package/dist/icons/engine/icons/status.cjs.map +1 -0
  111. package/dist/icons/engine/icons/status.d.cts +31 -0
  112. package/dist/icons/engine/icons/status.d.ts +31 -0
  113. package/dist/icons/engine/icons/status.js +197 -0
  114. package/dist/icons/engine/icons/status.js.map +1 -0
  115. package/dist/icons/engine/path.cjs +3 -0
  116. package/dist/icons/engine/path.cjs.map +1 -0
  117. package/dist/icons/engine/path.d.cts +45 -0
  118. package/dist/icons/engine/path.d.ts +45 -0
  119. package/dist/icons/engine/path.js +215 -0
  120. package/dist/icons/engine/path.js.map +1 -0
  121. package/dist/icons/engine/registry.cjs +2 -0
  122. package/dist/icons/engine/registry.cjs.map +1 -0
  123. package/dist/icons/engine/registry.d.cts +13 -0
  124. package/dist/icons/engine/registry.d.ts +13 -0
  125. package/dist/icons/engine/registry.js +37 -0
  126. package/dist/icons/engine/registry.js.map +1 -0
  127. package/dist/icons/engine/renderers/batch.cjs +2 -0
  128. package/dist/icons/engine/renderers/batch.cjs.map +1 -0
  129. package/dist/icons/engine/renderers/batch.d.cts +32 -0
  130. package/dist/icons/engine/renderers/batch.d.ts +32 -0
  131. package/dist/icons/engine/renderers/batch.js +51 -0
  132. package/dist/icons/engine/renderers/batch.js.map +1 -0
  133. package/dist/icons/engine/renderers/canvas2d.cjs +2 -0
  134. package/dist/icons/engine/renderers/canvas2d.cjs.map +1 -0
  135. package/dist/icons/engine/renderers/canvas2d.d.cts +4 -0
  136. package/dist/icons/engine/renderers/canvas2d.d.ts +4 -0
  137. package/dist/icons/engine/renderers/canvas2d.js +30 -0
  138. package/dist/icons/engine/renderers/canvas2d.js.map +1 -0
  139. package/dist/icons/engine/renderers/detect.cjs +2 -0
  140. package/dist/icons/engine/renderers/detect.cjs.map +1 -0
  141. package/dist/icons/engine/renderers/detect.d.cts +13 -0
  142. package/dist/icons/engine/renderers/detect.d.ts +13 -0
  143. package/dist/icons/engine/renderers/detect.js +38 -0
  144. package/dist/icons/engine/renderers/detect.js.map +1 -0
  145. package/dist/icons/engine/renderers/gl.cjs +2 -0
  146. package/dist/icons/engine/renderers/gl.cjs.map +1 -0
  147. package/dist/icons/engine/renderers/gl.d.cts +9 -0
  148. package/dist/icons/engine/renderers/gl.d.ts +9 -0
  149. package/dist/icons/engine/renderers/gl.js +79 -0
  150. package/dist/icons/engine/renderers/gl.js.map +1 -0
  151. package/dist/icons/engine/renderers/shaders.cjs +58 -0
  152. package/dist/icons/engine/renderers/shaders.cjs.map +1 -0
  153. package/dist/icons/engine/renderers/shaders.d.cts +5 -0
  154. package/dist/icons/engine/renderers/shaders.d.ts +5 -0
  155. package/dist/icons/engine/renderers/shaders.js +6 -0
  156. package/dist/icons/engine/renderers/shaders.js.map +1 -0
  157. package/dist/icons/engine/renderers/types.d.cts +35 -0
  158. package/dist/icons/engine/renderers/types.d.ts +35 -0
  159. package/dist/icons/engine/renderers/webgpu.cjs +2 -0
  160. package/dist/icons/engine/renderers/webgpu.cjs.map +1 -0
  161. package/dist/icons/engine/renderers/webgpu.d.cts +4 -0
  162. package/dist/icons/engine/renderers/webgpu.d.ts +4 -0
  163. package/dist/icons/engine/renderers/webgpu.js +172 -0
  164. package/dist/icons/engine/renderers/webgpu.js.map +1 -0
  165. package/dist/icons/engine/surface.cjs +2 -0
  166. package/dist/icons/engine/surface.cjs.map +1 -0
  167. package/dist/icons/engine/surface.d.cts +7 -0
  168. package/dist/icons/engine/surface.d.ts +7 -0
  169. package/dist/icons/engine/surface.js +150 -0
  170. package/dist/icons/engine/surface.js.map +1 -0
  171. package/dist/icons/engine/svg.cjs +2 -0
  172. package/dist/icons/engine/svg.cjs.map +1 -0
  173. package/dist/icons/engine/svg.d.cts +13 -0
  174. package/dist/icons/engine/svg.d.ts +13 -0
  175. package/dist/icons/engine/svg.js +29 -0
  176. package/dist/icons/engine/svg.js.map +1 -0
  177. package/dist/icons/engine/tessellate.cjs +2 -0
  178. package/dist/icons/engine/tessellate.cjs.map +1 -0
  179. package/dist/icons/engine/tessellate.d.cts +20 -0
  180. package/dist/icons/engine/tessellate.d.ts +20 -0
  181. package/dist/icons/engine/tessellate.js +73 -0
  182. package/dist/icons/engine/tessellate.js.map +1 -0
  183. package/dist/icons/engine/theme.cjs +2 -0
  184. package/dist/icons/engine/theme.cjs.map +1 -0
  185. package/dist/icons/engine/theme.d.cts +2 -0
  186. package/dist/icons/engine/theme.d.ts +2 -0
  187. package/dist/icons/engine/theme.js +22 -0
  188. package/dist/icons/engine/theme.js.map +1 -0
  189. package/dist/icons/engine/types.d.cts +120 -0
  190. package/dist/icons/engine/types.d.ts +120 -0
  191. package/dist/icons/index.cjs +1 -0
  192. package/dist/icons/index.d.cts +7 -0
  193. package/dist/icons/index.d.ts +7 -0
  194. package/dist/icons/index.js +27 -0
  195. package/dist/icons/react/DynamicIcon.cjs +2 -0
  196. package/dist/icons/react/DynamicIcon.cjs.map +1 -0
  197. package/dist/icons/react/DynamicIcon.d.cts +7 -0
  198. package/dist/icons/react/DynamicIcon.d.ts +7 -0
  199. package/dist/icons/react/DynamicIcon.js +16 -0
  200. package/dist/icons/react/DynamicIcon.js.map +1 -0
  201. package/dist/icons/react/Icon.cjs +2 -0
  202. package/dist/icons/react/Icon.cjs.map +1 -0
  203. package/dist/icons/react/Icon.d.cts +7 -0
  204. package/dist/icons/react/Icon.d.ts +7 -0
  205. package/dist/icons/react/Icon.js +101 -0
  206. package/dist/icons/react/Icon.js.map +1 -0
  207. package/dist/icons/react/IconCanvas.cjs +2 -0
  208. package/dist/icons/react/IconCanvas.cjs.map +1 -0
  209. package/dist/icons/react/IconCanvas.d.cts +9 -0
  210. package/dist/icons/react/IconCanvas.d.ts +9 -0
  211. package/dist/icons/react/IconCanvas.js +64 -0
  212. package/dist/icons/react/IconCanvas.js.map +1 -0
  213. package/dist/icons/react/createIcon.cjs +2 -0
  214. package/dist/icons/react/createIcon.cjs.map +1 -0
  215. package/dist/icons/react/createIcon.d.cts +10 -0
  216. package/dist/icons/react/createIcon.d.ts +10 -0
  217. package/dist/icons/react/createIcon.js +18 -0
  218. package/dist/icons/react/createIcon.js.map +1 -0
  219. package/dist/icons/react/icons.cjs +2 -0
  220. package/dist/icons/react/icons.cjs.map +1 -0
  221. package/dist/icons/react/icons.d.cts +808 -0
  222. package/dist/icons/react/icons.d.ts +808 -0
  223. package/dist/icons/react/icons.js +18 -0
  224. package/dist/icons/react/icons.js.map +1 -0
  225. package/dist/icons/react/types.d.cts +62 -0
  226. package/dist/icons/react/types.d.ts +62 -0
  227. package/dist/vue/components/Chart/QuadrantChart.vue.d.ts +4 -0
  228. package/dist/vue/components/Chart/QuadrantChart.vue.js.map +1 -1
  229. package/dist/vue/components/Chart/QuadrantChart.vue_vue_type_script_setup_true_lang.js +48 -37
  230. package/dist/vue/components/Chart/QuadrantChart.vue_vue_type_script_setup_true_lang.js.map +1 -1
  231. package/dist/vue/components/Chart/cartesian.d.ts +1 -0
  232. package/dist/vue/components/Chart/cartesian.js +1 -0
  233. package/dist/vue/components/Chart/cartesian.js.map +1 -1
  234. package/dist/web-components/components/chart/chart.d.ts +1 -0
  235. package/dist/web-components/components/chart/chart.js +1 -0
  236. package/dist/web-components/components/chart/chart.js.map +1 -1
  237. package/dist/web-components/components/chart/charts.d.ts +6 -1
  238. package/dist/web-components/components/chart/charts.js +31 -15
  239. package/dist/web-components/components/chart/charts.js.map +1 -1
  240. package/dist/web-components/html-custom-data.json +2 -2
  241. package/dist/web-components/types/react.d.ts +2 -0
  242. package/dist/web-components/types/solid.d.ts +2 -0
  243. package/dist/web-components/types/svelte.d.ts +2 -0
  244. package/dist/web-components/types/vue.d.ts +2 -0
  245. package/package.json +28 -2
@@ -7503,6 +7503,7 @@ export declare abstract class MnCartesianChartBase extends MnChartEngine<ChartOp
7503
7503
  protected bindEngine(chart: ChartInstance): Array<() => void>;
7504
7504
  protected clicked?(event: ChartHoverEvent): void;
7505
7505
  protected plotClicked?(event: ChartPlotClickEvent): void;
7506
+ protected dragged?(event: ChartDragEvent): void;
7506
7507
  protected dropped?(event: ChartDragEvent): void;
7507
7508
  /** Engine options of the common inputs */
7508
7509
  protected commonOptions(): Omit<ChartOptions, "series">;
@@ -7954,25 +7955,35 @@ export declare class MnQuadrantChart extends MnCartesianChartBase {
7954
7955
  readonly pointSize: import("@angular/core").InputSignal<number | undefined>;
7955
7956
  /** Name of the points in the tooltip */
7956
7957
  readonly name: import("@angular/core").InputSignal<string | undefined>;
7957
- /** Lets the user drag the dots (`pointDrop`) */
7958
+ /** Lets the user drag the dots (`pointDrag`, `pointDrop`) */
7958
7959
  readonly draggable: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
7959
7960
  /** A point was clicked */
7960
7961
  readonly pointClick: import("@angular/core").OutputEmitterRef<{
7961
7962
  point: QuadrantPoint;
7962
7963
  index: number;
7963
7964
  }>;
7965
+ /** The same point was clicked twice in quick succession */
7966
+ readonly pointDoubleClick: import("@angular/core").OutputEmitterRef<{
7967
+ point: QuadrantPoint;
7968
+ index: number;
7969
+ }>;
7964
7970
  /** The empty area of a quadrant was clicked */
7965
7971
  readonly quadrantClick: import("@angular/core").OutputEmitterRef<{
7966
7972
  quadrant: QuadrantCorner;
7967
7973
  x: number;
7968
7974
  y: number;
7969
7975
  }>;
7976
+ /** A point is being dragged (on every move, with the quadrant under the pointer) */
7977
+ readonly pointDrag: import("@angular/core").OutputEmitterRef<QuadrantPointDrop>;
7970
7978
  /** A dragged point was released (the chart does not move it: update `points`) */
7971
7979
  readonly pointDrop: import("@angular/core").OutputEmitterRef<QuadrantPointDrop>;
7980
+ private lastClick;
7972
7981
  private geometry;
7973
7982
  protected engineOptions(): ChartOptions;
7974
7983
  protected clicked(event: ChartHoverEvent): void;
7975
7984
  protected plotClicked(event: ChartPlotClickEvent): void;
7985
+ private dropAt;
7986
+ protected dragged(event: ChartDragEvent): void;
7976
7987
  protected dropped(event: ChartDragEvent): void;
7977
7988
  static ɵfac: i0.ɵɵFactoryDeclaration<MnQuadrantChart, never>;
7978
7989
  static ɵcmp: i0.ɵɵComponentDeclaration<MnQuadrantChart, "mn-quadrant-chart", never, {
@@ -8053,7 +8064,9 @@ export declare class MnQuadrantChart extends MnCartesianChartBase {
8053
8064
  };
8054
8065
  }, {
8055
8066
  "pointClick": "pointClick";
8067
+ "pointDoubleClick": "pointDoubleClick";
8056
8068
  "quadrantClick": "quadrantClick";
8069
+ "pointDrag": "pointDrag";
8057
8070
  "pointDrop": "pointDrop";
8058
8071
  }, never, never, true, never>;
8059
8072
  }
@@ -1,2 +1,2 @@
1
- "use client";const e=require("../engine/locale.cjs"),t=require("./Chart.cjs"),n=require("../engine/presets.cjs");let r=require("react"),i=require("react/jsx-runtime");var a=e=>({height:e.height,width:e.width,className:e.className,style:e.style,handleRef:e.ref,onHover:e.onHover,onPointClick:e.onPointClick,onPlotClick:e.onPlotClick,onZoom:e.onZoom,onRendererChange:e.onRendererChange,renderTooltip:e.renderTooltip});function o(e){let{series:o,area:s=!1,curve:c,stacked:l=!1,percent:u=!1}=e,d=(0,r.useMemo)(()=>n.lineSeries(o,s,{curve:c,stacked:l||u}),[o,s,c,l,u]);return(0,i.jsx)(t.ChartBase,{options:t.engineOptions({...e,series:d,stackMode:u?`percent`:void 0}),...a(e)})}function s(e){let{series:o,curve:s=`smooth`,stacked:c=!1,percent:l=!1}=e,u=(0,r.useMemo)(()=>n.areaSeries(o,{curve:s,stacked:c||l}),[o,s,c,l]);return(0,i.jsx)(t.ChartBase,{options:t.engineOptions({...e,series:u,stackMode:l?`percent`:void 0}),...a(e)})}function c(e){let{series:o,stacked:s=!1,percent:c=!1,labels:l=!1}=e,u=(0,r.useMemo)(()=>n.barSeries(o,s||c,l),[o,s,c,l]);return(0,i.jsx)(t.ChartBase,{options:t.engineOptions({...e,labels:void 0,series:u,stackMode:c?`percent`:void 0}),...a(e)})}function l(e){let{series:o}=e,s=(0,r.useMemo)(()=>n.candlestickSeries(o),[o]);return(0,i.jsx)(t.ChartBase,{options:t.engineOptions({...e,series:s}),...a(e)})}function u(e){let{data:o,xCategories:s,yCategories:c,colorScale:l,valueRange:u,colorMidpoint:d,name:f,radius:p,format:m}=e,h=(0,r.useMemo)(()=>n.heatmapChartOptions({data:o,xCategories:s,yCategories:c,colorScale:l,valueRange:u,colorMidpoint:d,name:f,radius:p,format:m}).series,[o,s,c,l,u,d,f,p,m]),g=t.engineOptions({...e,series:h});return(0,i.jsx)(t.ChartBase,{options:{...n.heatmapChartOptions({data:o,xCategories:s,yCategories:c},{...g,legend:e.legend,interaction:e.interaction,tooltip:e.tooltip}),series:h},...a(e)})}function d(e){let{data:a,type:o,color:s,curve:c,name:l,reference:u,format:d,height:f=48,width:p,renderer:m,tooltip:h,palette:g,ariaLabel:_,locale:v,labels:y,className:b,style:x,ref:S,onHover:C,renderTooltip:w}=e,T=(0,r.useMemo)(()=>n.sparklineOptions({data:a,type:o,color:s,curve:c,name:l,reference:u,format:d},{renderer:m,tooltip:h,palette:g,ariaLabel:_,locale:v,labels:y}),[a,o,s,c,l,u,d,m,h,g,_,v,y]);return(0,i.jsx)(t.ChartBase,{options:T,height:f,width:p,className:b,style:x,handleRef:S,onHover:C,renderTooltip:w})}function f(e){let{series:o}=e,s=(0,r.useMemo)(()=>n.scatterSeries(o),[o]);return(0,i.jsx)(t.ChartBase,{options:t.engineOptions({...e,series:s}),...a(e)})}var p=[`topLeft`,`topRight`,`bottomLeft`,`bottomRight`],m=(e,t,n)=>{let r=e.endsWith(`Left`),i=e.startsWith(`top`);return{position:`absolute`,left:r?0:n.x-t.x,top:i?0:n.y-t.y,width:r?n.x-t.x:t.x+t.width-n.x,height:i?n.y-t.y:t.y+t.height-n.y,pointerEvents:`none`}};function h(e){let{points:r,xDomain:o,yDomain:s,xSplit:c,ySplit:l,quadrants:u,xLabel:d,yLabel:f,axisLabels:h,showTicks:g,reverseX:_,showLabels:v,pointSize:y,name:b,draggable:x,onPointClick:S,onPointDrop:C,onQuadrantClick:w,renderTooltip:T,quadrantContent:E}=e,D={xDomain:o,yDomain:s,xSplit:c,ySplit:l,reverseX:_},O=n.quadrantChartOptions({points:r,xDomain:o,yDomain:s,xSplit:c,ySplit:l,quadrants:u,xLabel:d,yLabel:f,axisLabels:h,showTicks:g,reverseX:_,showLabels:v,pointSize:y,name:b,draggable:x??!!C},t.engineOptions({...e,series:[]})),k=E?e=>{let[t,n]=o??[0,10],[r,a]=s??[0,10],u=c??(t+n)/2,d=l??(r+a)/2,f=(u-t)/(n-t||1),h=(d-r)/(a-r||1),g={x:e.x+e.width*(_?1-f:f),y:e.y+e.height*(1-h)};return p.map(t=>E[t]?(0,i.jsx)(`div`,{className:`minerva-chart-quadrant minerva-chart-quadrant-${t}`,style:m(t,e,g),children:E[t]},t):null)}:void 0;return(0,i.jsx)(t.ChartBase,{options:O,...a({...e,onPointClick:void 0,renderTooltip:void 0}),overlay:k,onPointClick:S?e=>{let t=e.items[0]?.index;t!==void 0&&r[t]&&S(r[t],t)}:void 0,onPlotClick:w?e=>w(n.quadrantOf(D,e.x,e.y),e):void 0,onDrop:C?e=>{let t=e.item.index;r[t]&&C(r[t],t,{x:e.x,y:e.y,quadrant:n.quadrantOf(D,e.x,e.y)})}:void 0,renderTooltip:T?e=>{let t=e.items[0]?.index;return t!==void 0&&r[t]?T(r[t],t):null}:void 0})}function g(e){return(0,i.jsx)(c,{...e,orientation:`horizontal`})}function _(e){let{series:o,curve:s=`smooth`}=e,c=(0,r.useMemo)(()=>n.rangeAreaSeries(o,s),[o,s]);return(0,i.jsx)(t.ChartBase,{options:t.engineOptions({...e,series:c}),...a(e)})}function v(e){return(0,i.jsx)(t.Chart,{...e})}function y(e){let{series:o,minSize:s,maxSize:c,maxValue:l}=e,u=(0,r.useMemo)(()=>n.bubbleSeries(o,{minSize:s,maxSize:c,maxValue:l}),[o,s,c,l]);return(0,i.jsx)(t.ChartBase,{options:t.engineOptions({...e,series:u}),...a(e)})}function b(o){let{values:s,bins:c,domain:l,nice:u,name:d,color:f,formatBin:p,series:m,locale:h}=o,g=e.resolveLocale(h),_=(0,r.useMemo)(()=>[n.histogramSeries(s,{bins:c,domain:l,nice:u,name:d,color:f,format:p,locale:g}),...m??[]],[s,c,l,u,d,f,p,m,g]);return(0,i.jsx)(t.ChartBase,{options:t.engineOptions({...o,series:_}),...a(o)})}function x(o){let{series:s,groups:c,name:l,whisker:u,orientation:d,locale:f,outlierShape:p,outlierSize:m}=o,h=l??n.presetLabels(e.resolveLocale(f)).values,g=(0,r.useMemo)(()=>n.boxplotSeries([...c?.length?[{id:`boxplot`,name:h,data:n.boxplotData(c,{whisker:u})}]:[],...s??[]]).map(e=>e.type===`boxplot`?{...e,outlierShape:e.outlierShape??p,outlierSize:e.outlierSize??m}:e),[s,c,h,u,p,m]);return(0,i.jsx)(t.ChartBase,{options:t.engineOptions({...o,series:g,orientation:d}),...a(o)})}function S(o){let{steps:s,name:c,upColor:l,downColor:u,totalColor:d,start:f,labels:p=!0,format:m,connector:h,orientation:g,locale:_}=o,v=e.resolveLocale(_),y=(0,r.useMemo)(()=>[n.waterfallSeries(s,{name:c,upColor:l,downColor:u,totalColor:d,start:f,labels:p,format:m,connector:h,locale:v})],[s,c,l,u,d,f,p,m,h,v]);return(0,i.jsx)(t.ChartBase,{options:t.engineOptions({...o,labels:void 0,series:y,orientation:g}),...a(o)})}function C(o){let{tasks:s,colors:c,taskName:l,progressName:u,milestoneName:d,formatProgress:f,dependenciesName:p,dependencyArrows:m,dependencyColor:h,today:g=!1,todayLabel:_,xAxis:v,yAxis:y,annotations:b,interaction:x,legend:S,locale:C}=o,w=e.resolveLocale(C),T=(0,r.useMemo)(()=>n.ganttSeries(s,{colors:c,taskName:l,progressName:u,milestoneName:d,formatProgress:f,dependenciesName:p,dependencyArrows:m,dependencyColor:h,locale:w}),[s,c,l,u,d,f,p,m,h,w]),[E]=(0,r.useState)(()=>Date.now()),D=g===!1?null:g===!0?E:g instanceof Date?g.getTime():g,O=D===null?[]:[{type:`line`,axis:`y`,value:D,color:`var(--danger-color, #dc2626)`,dash:[4,3],label:_}];return(0,i.jsx)(t.ChartBase,{options:{...t.engineOptions({...o,series:T.series,orientation:`horizontal`}),xAxis:{type:`category`,categories:T.categories,...v},yAxis:{type:`time`,min:T.domain[0],max:T.domain[1],...y},annotations:[...b??[],...O],dependencies:T.dependencies,interaction:x??{zoom:`y`},legend:S??T.series.length>1},...a(o)})}exports.AreaChart=s,exports.BarChart=c,exports.BoxPlotChart=x,exports.BubbleChart=y,exports.CandlestickChart=l,exports.GanttChart=C,exports.HeatmapChart=u,exports.HistogramChart=b,exports.HorizontalBarChart=g,exports.LineChart=o,exports.MixedChart=v,exports.QuadrantChart=h,exports.RangeAreaChart=_,exports.ScatterChart=f,exports.Sparkline=d,exports.WaterfallChart=S;
1
+ "use client";const e=require("../engine/locale.cjs"),t=require("./Chart.cjs"),n=require("../engine/presets.cjs");let r=require("react"),i=require("react/jsx-runtime");var a=e=>({height:e.height,width:e.width,className:e.className,style:e.style,handleRef:e.ref,onHover:e.onHover,onPointClick:e.onPointClick,onPlotClick:e.onPlotClick,onZoom:e.onZoom,onRendererChange:e.onRendererChange,renderTooltip:e.renderTooltip});function o(e){let{series:o,area:s=!1,curve:c,stacked:l=!1,percent:u=!1}=e,d=(0,r.useMemo)(()=>n.lineSeries(o,s,{curve:c,stacked:l||u}),[o,s,c,l,u]);return(0,i.jsx)(t.ChartBase,{options:t.engineOptions({...e,series:d,stackMode:u?`percent`:void 0}),...a(e)})}function s(e){let{series:o,curve:s=`smooth`,stacked:c=!1,percent:l=!1}=e,u=(0,r.useMemo)(()=>n.areaSeries(o,{curve:s,stacked:c||l}),[o,s,c,l]);return(0,i.jsx)(t.ChartBase,{options:t.engineOptions({...e,series:u,stackMode:l?`percent`:void 0}),...a(e)})}function c(e){let{series:o,stacked:s=!1,percent:c=!1,labels:l=!1}=e,u=(0,r.useMemo)(()=>n.barSeries(o,s||c,l),[o,s,c,l]);return(0,i.jsx)(t.ChartBase,{options:t.engineOptions({...e,labels:void 0,series:u,stackMode:c?`percent`:void 0}),...a(e)})}function l(e){let{series:o}=e,s=(0,r.useMemo)(()=>n.candlestickSeries(o),[o]);return(0,i.jsx)(t.ChartBase,{options:t.engineOptions({...e,series:s}),...a(e)})}function u(e){let{data:o,xCategories:s,yCategories:c,colorScale:l,valueRange:u,colorMidpoint:d,name:f,radius:p,format:m}=e,h=(0,r.useMemo)(()=>n.heatmapChartOptions({data:o,xCategories:s,yCategories:c,colorScale:l,valueRange:u,colorMidpoint:d,name:f,radius:p,format:m}).series,[o,s,c,l,u,d,f,p,m]),g=t.engineOptions({...e,series:h});return(0,i.jsx)(t.ChartBase,{options:{...n.heatmapChartOptions({data:o,xCategories:s,yCategories:c},{...g,legend:e.legend,interaction:e.interaction,tooltip:e.tooltip}),series:h},...a(e)})}function d(e){let{data:a,type:o,color:s,curve:c,name:l,reference:u,format:d,height:f=48,width:p,renderer:m,tooltip:h,palette:g,ariaLabel:_,locale:v,labels:y,className:b,style:x,ref:S,onHover:C,renderTooltip:w}=e,T=(0,r.useMemo)(()=>n.sparklineOptions({data:a,type:o,color:s,curve:c,name:l,reference:u,format:d},{renderer:m,tooltip:h,palette:g,ariaLabel:_,locale:v,labels:y}),[a,o,s,c,l,u,d,m,h,g,_,v,y]);return(0,i.jsx)(t.ChartBase,{options:T,height:f,width:p,className:b,style:x,handleRef:S,onHover:C,renderTooltip:w})}function f(e){let{series:o}=e,s=(0,r.useMemo)(()=>n.scatterSeries(o),[o]);return(0,i.jsx)(t.ChartBase,{options:t.engineOptions({...e,series:s}),...a(e)})}var p=[`topLeft`,`topRight`,`bottomLeft`,`bottomRight`],m=400,h=(e,t,n)=>{let r=e.endsWith(`Left`),i=e.startsWith(`top`);return{position:`absolute`,left:r?0:n.x-t.x,top:i?0:n.y-t.y,width:r?n.x-t.x:t.x+t.width-n.x,height:i?n.y-t.y:t.y+t.height-n.y,pointerEvents:`none`}};function g(e){let{points:o,xDomain:s,yDomain:c,xSplit:l,ySplit:u,quadrants:d,xLabel:f,yLabel:g,axisLabels:_,showTicks:v,reverseX:y,showLabels:b,pointSize:x,name:S,draggable:C,onPointClick:w,onPointDoubleClick:T,onPointDrag:E,onPointDrop:D,onQuadrantClick:O,renderTooltip:k,quadrantContent:A}=e,j={xDomain:s,yDomain:c,xSplit:l,ySplit:u,reverseX:y},[M,N]=(0,r.useState)(null),P=(0,r.useRef)(null);(0,r.useEffect)(()=>{if(!M)return;let e=()=>N(null);return window.addEventListener(`pointerup`,e),()=>window.removeEventListener(`pointerup`,e)},[M]);let F=e=>({x:e.x,y:e.y,quadrant:n.quadrantOf(j,e.x,e.y)}),I=n.quadrantChartOptions({points:o,xDomain:s,yDomain:c,xSplit:l,ySplit:u,quadrants:d,xLabel:f,yLabel:g,axisLabels:_,showTicks:v,reverseX:y,showLabels:b,pointSize:x,name:S,draggable:C??!!(D||E)},t.engineOptions({...e,series:[]})),L=A||M?e=>{let[t,n]=s??[0,10],[r,a]=c??[0,10],o=l??(t+n)/2,f=u??(r+a)/2,m=(o-t)/(n-t||1),g=(f-r)/(a-r||1),_={x:e.x+e.width*(y?1-m:m),y:e.y+e.height*(1-g)},v=M?d?.[M]?.color??`currentColor`:``;return[...p.map(t=>A?.[t]?(0,i.jsx)(`div`,{className:`minerva-chart-quadrant minerva-chart-quadrant-${t}`,style:h(t,e,_),children:A[t]},t):null),M?(0,i.jsx)(`div`,{className:`minerva-chart-quadrant-target`,style:{...h(M,e,_),background:`color-mix(in srgb, ${v} 14%, transparent)`,boxShadow:`inset 0 0 0 2px ${v}`}},`drop-target`):null]}:void 0;return(0,i.jsx)(t.ChartBase,{options:I,...a({...e,onPointClick:void 0,renderTooltip:void 0}),overlay:L,onPointClick:e=>{let t=e.items[0]?.index;if(t===void 0||!o[t])return;let n=Date.now(),r=P.current,i=r?.index===t&&n-r.time<m;P.current=i?null:{index:t,time:n},w?.(o[t],t),i&&T?.(o[t],t)},onPlotClick:O?e=>O(n.quadrantOf(j,e.x,e.y),e):void 0,onDrag:e=>{let t=e.item.index,n=F(e);N(n.quadrant),o[t]&&E?.(o[t],t,n)},onDrop:e=>{N(null);let t=e.item.index;o[t]&&D&&D(o[t],t,F(e))},renderTooltip:k?e=>{let t=e.items[0]?.index;return t!==void 0&&o[t]?k(o[t],t):null}:void 0})}function _(e){return(0,i.jsx)(c,{...e,orientation:`horizontal`})}function v(e){let{series:o,curve:s=`smooth`}=e,c=(0,r.useMemo)(()=>n.rangeAreaSeries(o,s),[o,s]);return(0,i.jsx)(t.ChartBase,{options:t.engineOptions({...e,series:c}),...a(e)})}function y(e){return(0,i.jsx)(t.Chart,{...e})}function b(e){let{series:o,minSize:s,maxSize:c,maxValue:l}=e,u=(0,r.useMemo)(()=>n.bubbleSeries(o,{minSize:s,maxSize:c,maxValue:l}),[o,s,c,l]);return(0,i.jsx)(t.ChartBase,{options:t.engineOptions({...e,series:u}),...a(e)})}function x(o){let{values:s,bins:c,domain:l,nice:u,name:d,color:f,formatBin:p,series:m,locale:h}=o,g=e.resolveLocale(h),_=(0,r.useMemo)(()=>[n.histogramSeries(s,{bins:c,domain:l,nice:u,name:d,color:f,format:p,locale:g}),...m??[]],[s,c,l,u,d,f,p,m,g]);return(0,i.jsx)(t.ChartBase,{options:t.engineOptions({...o,series:_}),...a(o)})}function S(o){let{series:s,groups:c,name:l,whisker:u,orientation:d,locale:f,outlierShape:p,outlierSize:m}=o,h=l??n.presetLabels(e.resolveLocale(f)).values,g=(0,r.useMemo)(()=>n.boxplotSeries([...c?.length?[{id:`boxplot`,name:h,data:n.boxplotData(c,{whisker:u})}]:[],...s??[]]).map(e=>e.type===`boxplot`?{...e,outlierShape:e.outlierShape??p,outlierSize:e.outlierSize??m}:e),[s,c,h,u,p,m]);return(0,i.jsx)(t.ChartBase,{options:t.engineOptions({...o,series:g,orientation:d}),...a(o)})}function C(o){let{steps:s,name:c,upColor:l,downColor:u,totalColor:d,start:f,labels:p=!0,format:m,connector:h,orientation:g,locale:_}=o,v=e.resolveLocale(_),y=(0,r.useMemo)(()=>[n.waterfallSeries(s,{name:c,upColor:l,downColor:u,totalColor:d,start:f,labels:p,format:m,connector:h,locale:v})],[s,c,l,u,d,f,p,m,h,v]);return(0,i.jsx)(t.ChartBase,{options:t.engineOptions({...o,labels:void 0,series:y,orientation:g}),...a(o)})}function w(o){let{tasks:s,colors:c,taskName:l,progressName:u,milestoneName:d,formatProgress:f,dependenciesName:p,dependencyArrows:m,dependencyColor:h,today:g=!1,todayLabel:_,xAxis:v,yAxis:y,annotations:b,interaction:x,legend:S,locale:C}=o,w=e.resolveLocale(C),T=(0,r.useMemo)(()=>n.ganttSeries(s,{colors:c,taskName:l,progressName:u,milestoneName:d,formatProgress:f,dependenciesName:p,dependencyArrows:m,dependencyColor:h,locale:w}),[s,c,l,u,d,f,p,m,h,w]),[E]=(0,r.useState)(()=>Date.now()),D=g===!1?null:g===!0?E:g instanceof Date?g.getTime():g,O=D===null?[]:[{type:`line`,axis:`y`,value:D,color:`var(--danger-color, #dc2626)`,dash:[4,3],label:_}];return(0,i.jsx)(t.ChartBase,{options:{...t.engineOptions({...o,series:T.series,orientation:`horizontal`}),xAxis:{type:`category`,categories:T.categories,...v},yAxis:{type:`time`,min:T.domain[0],max:T.domain[1],...y},annotations:[...b??[],...O],dependencies:T.dependencies,interaction:x??{zoom:`y`},legend:S??T.series.length>1},...a(o)})}exports.AreaChart=s,exports.BarChart=c,exports.BoxPlotChart=S,exports.BubbleChart=b,exports.CandlestickChart=l,exports.GanttChart=w,exports.HeatmapChart=u,exports.HistogramChart=x,exports.HorizontalBarChart=_,exports.LineChart=o,exports.MixedChart=y,exports.QuadrantChart=g,exports.RangeAreaChart=v,exports.ScatterChart=f,exports.Sparkline=d,exports.WaterfallChart=C;
2
2
  //# sourceMappingURL=charts.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"charts.cjs","names":["useMemo","lineSeries","ChartBase","engineOptions","areaSeries","barSeries","candlestickSeries","heatmapChartOptions","sparklineOptions","scatterSeries","quadrantChartOptions","quadrantOf","rangeAreaSeries","Chart","bubbleSeries","resolveLocale","histogramSeries","presetLabels","boxplotSeries","boxplotData","waterfallSeries","ganttSeries","useState","require_locale","require_Chart","require_presets","react","react_jsx_runtime","frameProps","props","LineChart","input","series","area","stacked","percent","curve","AreaChart","BarChart","labels","CandlestickChart","HeatmapChart","data","xCategories","yCategories","colorScale","valueRange","colorMidpoint","name","radius","format","base","Sparkline","options","type","color","reference","renderer","tooltip","palette","ariaLabel","locale","ref","ScatterChart","CORNERS","cornerStyle","left","corner","top","split","plot","QuadrantChart","geometry","draggable","onPointDrop","overlay","quadrantContent","x0","x1","xDomain","y0","y1","yDomain","xs","xSplit","ys","ySplit","fx","fy","reverseX","onPointClick","index","event","points","onQuadrantClick","at","renderTooltip","HorizontalBarChart","RangeAreaChart","MixedChart","BubbleChart","minSize","maxSize","maxValue","HistogramChart","extra","lang","values","formatBin","bins","domain","nice","BoxPlotChart","groupName","groups","s","outlierShape","outlierSize","whisker","WaterfallChart","steps","upColor","downColor","totalColor","start","connector","GanttChart","gantt","tasks","colors","taskName","progressName","milestoneName","formatProgress","dependenciesName","dependencyArrows","dependencyColor","mountedAt","now","today","lines","todayLabel","xAxis","yAxis","annotations","interaction","legend"],"sources":["../../../../charts/src/react/charts.tsx"],"sourcesContent":["import { useMemo, useState, type CSSProperties } from \"react\";\nimport {\n areaSeries,\n barSeries,\n boxplotData,\n boxplotSeries,\n bubbleSeries,\n candlestickSeries,\n ganttSeries,\n heatmapChartOptions,\n histogramSeries,\n lineSeries,\n presetLabels,\n quadrantChartOptions,\n quadrantOf,\n rangeAreaSeries,\n scatterSeries,\n sparklineOptions,\n waterfallSeries,\n type QuadrantCorner,\n} from \"../engine/presets\";\nimport { resolveLocale } from \"../engine/locale\";\nimport type { ChartAnnotation, ChartRect } from \"../engine/types\";\nimport { Chart, ChartBase, engineOptions } from \"./Chart\";\nimport type {\n AreaChartProps,\n BarChartProps,\n BoxPlotChartProps,\n BubbleChartProps,\n CandlestickChartProps,\n ChartCommonProps,\n GanttChartProps,\n HeatmapChartProps,\n HistogramChartProps,\n HorizontalBarChartProps,\n LineChartProps,\n MixedChartProps,\n QuadrantChartProps,\n RangeAreaChartProps,\n ScatterChartProps,\n SparklineProps,\n WaterfallChartProps,\n} from \"./types\";\n\nconst frameProps = (props: Omit<ChartCommonProps, \"labels\">) => ({\n height: props.height,\n width: props.width,\n className: props.className,\n style: props.style,\n handleRef: props.ref,\n onHover: props.onHover,\n onPointClick: props.onPointClick,\n onPlotClick: props.onPlotClick,\n onZoom: props.onZoom,\n onRendererChange: props.onRendererChange,\n renderTooltip: props.renderTooltip,\n});\n\n/** Line (or area) chart; handles millions of points on the GPU */\nexport function LineChart(props: LineChartProps) {\n const {\n series: input,\n area = false,\n curve,\n stacked = false,\n percent = false,\n } = props;\n const series = useMemo(\n () => lineSeries(input, area, { curve, stacked: stacked || percent }),\n [input, area, curve, stacked, percent],\n );\n return (\n <ChartBase\n options={engineOptions({\n ...props,\n series,\n stackMode: percent ? \"percent\" : undefined,\n })}\n {...frameProps(props)}\n />\n );\n}\n\n/** Area chart: smooth by default, stacked or 100% stacked */\nexport function AreaChart(props: AreaChartProps) {\n const {\n series: input,\n curve = \"smooth\",\n stacked = false,\n percent = false,\n } = props;\n const series = useMemo(\n () => areaSeries(input, { curve, stacked: stacked || percent }),\n [input, curve, stacked, percent],\n );\n return (\n <ChartBase\n options={engineOptions({\n ...props,\n series,\n stackMode: percent ? \"percent\" : undefined,\n })}\n {...frameProps(props)}\n />\n );\n}\n\n/** Bar chart: grouped side by side, stacked or 100% stacked, with optional value labels */\nexport function BarChart(props: BarChartProps) {\n const {\n series: input,\n stacked = false,\n percent = false,\n labels = false,\n } = props;\n const series = useMemo(\n () => barSeries(input, stacked || percent, labels),\n [input, stacked, percent, labels],\n );\n return (\n <ChartBase\n options={engineOptions({\n ...props,\n labels: undefined,\n series,\n stackMode: percent ? \"percent\" : undefined,\n })}\n {...frameProps(props)}\n />\n );\n}\n\n/** Candlestick (OHLC) chart: rising and falling candles, zoomable on the GPU */\nexport function CandlestickChart(props: CandlestickChartProps) {\n const { series: input } = props;\n const series = useMemo(() => candlestickSeries(input), [input]);\n return (\n <ChartBase\n options={engineOptions({ ...props, series })}\n {...frameProps(props)}\n />\n );\n}\n\n/** Heatmap: a grid of cells colored by value (categories or numbers on both axes) */\nexport function HeatmapChart(props: HeatmapChartProps) {\n const {\n data,\n xCategories,\n yCategories,\n colorScale,\n valueRange,\n colorMidpoint,\n name,\n radius,\n format,\n } = props;\n const series = useMemo(\n () =>\n heatmapChartOptions({\n data,\n xCategories,\n yCategories,\n colorScale,\n valueRange,\n colorMidpoint,\n name,\n radius,\n format,\n }).series,\n [\n data,\n xCategories,\n yCategories,\n colorScale,\n valueRange,\n colorMidpoint,\n name,\n radius,\n format,\n ],\n );\n const base = engineOptions({ ...props, series });\n return (\n <ChartBase\n options={{\n ...heatmapChartOptions(\n { data, xCategories, yCategories },\n {\n ...base,\n legend: props.legend,\n interaction: props.interaction,\n tooltip: props.tooltip,\n },\n ),\n series,\n }}\n {...frameProps(props)}\n />\n );\n}\n\n/** Word-sized chart without axes: a trend in a table cell, a KPI card, ... */\nexport function Sparkline(props: SparklineProps) {\n const {\n data,\n type,\n color,\n curve,\n name,\n reference,\n format,\n height = 48,\n width,\n renderer,\n tooltip,\n palette,\n ariaLabel,\n locale,\n labels,\n className,\n style,\n ref,\n onHover,\n renderTooltip,\n } = props;\n const options = useMemo(\n () =>\n sparklineOptions(\n { data, type, color, curve, name, reference, format },\n { renderer, tooltip, palette, ariaLabel, locale, labels },\n ),\n [\n data,\n type,\n color,\n curve,\n name,\n reference,\n format,\n renderer,\n tooltip,\n palette,\n ariaLabel,\n locale,\n labels,\n ],\n );\n return (\n <ChartBase\n options={options}\n height={height}\n width={width}\n className={className}\n style={style}\n handleRef={ref}\n onHover={onHover}\n renderTooltip={renderTooltip}\n />\n );\n}\n\n/** Scatter chart: zooms on both axes, hit testing through a spatial index */\nexport function ScatterChart(props: ScatterChartProps) {\n const { series: input } = props;\n const series = useMemo(() => scatterSeries(input), [input]);\n return (\n <ChartBase\n options={engineOptions({ ...props, series })}\n {...frameProps(props)}\n />\n );\n}\n\nconst CORNERS: QuadrantCorner[] = [\n \"topLeft\",\n \"topRight\",\n \"bottomLeft\",\n \"bottomRight\",\n];\n\nconst cornerStyle = (\n corner: QuadrantCorner,\n plot: ChartRect,\n split: { x: number; y: number },\n): CSSProperties => {\n const left = corner.endsWith(\"Left\");\n const top = corner.startsWith(\"top\");\n return {\n position: \"absolute\",\n left: left ? 0 : split.x - plot.x,\n top: top ? 0 : split.y - plot.y,\n width: left ? split.x - plot.x : plot.x + plot.width - split.x,\n height: top ? split.y - plot.y : plot.y + plot.height - split.y,\n pointerEvents: \"none\",\n };\n};\n\n/**\n * Four-quadrant matrix (priority matrix, Eisenhower, BCG, ...): tinted\n * quadrants with titles, dividers, and labelled dots placed without\n * overlapping labels. Dots can be dragged to another quadrant.\n */\nexport function QuadrantChart(props: QuadrantChartProps) {\n const {\n points,\n xDomain,\n yDomain,\n xSplit,\n ySplit,\n quadrants,\n xLabel,\n yLabel,\n axisLabels,\n showTicks,\n reverseX,\n showLabels,\n pointSize,\n name,\n draggable,\n onPointClick,\n onPointDrop,\n onQuadrantClick,\n renderTooltip,\n quadrantContent,\n } = props;\n const geometry = { xDomain, yDomain, xSplit, ySplit, reverseX };\n\n const options = quadrantChartOptions(\n {\n points,\n xDomain,\n yDomain,\n xSplit,\n ySplit,\n quadrants,\n xLabel,\n yLabel,\n axisLabels,\n showTicks,\n reverseX,\n showLabels,\n pointSize,\n name,\n draggable: draggable ?? !!onPointDrop,\n },\n engineOptions({ ...props, series: [] }),\n );\n\n const overlay = quadrantContent\n ? (plot: ChartRect) => {\n const [x0, x1] = xDomain ?? [0, 10];\n const [y0, y1] = yDomain ?? [0, 10];\n const xs = xSplit ?? (x0 + x1) / 2;\n const ys = ySplit ?? (y0 + y1) / 2;\n const fx = (xs - x0) / (x1 - x0 || 1);\n const fy = (ys - y0) / (y1 - y0 || 1);\n const split = {\n x: plot.x + plot.width * (reverseX ? 1 - fx : fx),\n y: plot.y + plot.height * (1 - fy),\n };\n return CORNERS.map((corner) =>\n quadrantContent[corner] ? (\n <div\n key={corner}\n className={`minerva-chart-quadrant minerva-chart-quadrant-${corner}`}\n style={cornerStyle(corner, plot, split)}\n >\n {quadrantContent[corner]}\n </div>\n ) : null,\n );\n }\n : undefined;\n\n return (\n <ChartBase\n options={options}\n {...frameProps({\n ...props,\n onPointClick: undefined,\n renderTooltip: undefined,\n })}\n overlay={overlay}\n onPointClick={\n onPointClick\n ? (event) => {\n const index = event.items[0]?.index;\n if (index !== undefined && points[index])\n onPointClick(points[index], index);\n }\n : undefined\n }\n onPlotClick={\n onQuadrantClick\n ? (at) => onQuadrantClick(quadrantOf(geometry, at.x, at.y), at)\n : undefined\n }\n onDrop={\n onPointDrop\n ? (event) => {\n const index = event.item.index;\n if (!points[index]) return;\n onPointDrop(points[index], index, {\n x: event.x,\n y: event.y,\n quadrant: quadrantOf(geometry, event.x, event.y),\n });\n }\n : undefined\n }\n renderTooltip={\n renderTooltip\n ? (event) => {\n const index = event.items[0]?.index;\n return index !== undefined && points[index]\n ? renderTooltip(points[index], index)\n : null;\n }\n : undefined\n }\n />\n );\n}\n\n/**\n * Horizontal bar chart: categories down the left side, values from the\n * left (rankings, long names, diverging surveys, stacked progress)\n */\nexport function HorizontalBarChart(props: HorizontalBarChartProps) {\n return <BarChart {...props} orientation=\"horizontal\" />;\n}\n\n/**\n * Range area chart: bands between a lower (`y0`) and an upper edge\n * (confidence intervals, min-max ranges), mixable with lines\n */\nexport function RangeAreaChart(props: RangeAreaChartProps) {\n const { series: input, curve = \"smooth\" } = props;\n const series = useMemo(() => rangeAreaSeries(input, curve), [input, curve]);\n return (\n <ChartBase\n options={engineOptions({ ...props, series })}\n {...frameProps(props)}\n />\n );\n}\n\n/**\n * Combination chart: bars, lines and areas on one or two value axes\n * (`yAxis: \"right\"` series use `yAxis2`, aligned on the left grid)\n */\nexport function MixedChart(props: MixedChartProps) {\n return <Chart {...props} />;\n}\n\n/** Bubble chart: x, y and a value sized by area (√value diameters) */\nexport function BubbleChart(props: BubbleChartProps) {\n const { series: input, minSize, maxSize, maxValue } = props;\n const series = useMemo(\n () => bubbleSeries(input, { minSize, maxSize, maxValue }),\n [input, minSize, maxSize, maxValue],\n );\n return (\n <ChartBase\n options={engineOptions({ ...props, series })}\n {...frameProps(props)}\n />\n );\n}\n\n/**\n * Histogram: the distribution of raw samples in bins of equal width\n * (Freedman-Diaconis, Sturges or a count); millions of samples are binned\n * in milliseconds\n */\nexport function HistogramChart(props: HistogramChartProps) {\n const {\n values,\n bins,\n domain,\n nice,\n name,\n color,\n formatBin,\n series: extra,\n locale,\n } = props;\n // page language read at every render: a language switch renames the series\n const lang = resolveLocale(locale);\n const series = useMemo(\n () => [\n histogramSeries(values, {\n bins,\n domain,\n nice,\n name,\n color,\n format: formatBin,\n locale: lang,\n }),\n ...(extra ?? []),\n ],\n [values, bins, domain, nice, name, color, formatBin, extra, lang],\n );\n return (\n <ChartBase\n options={engineOptions({ ...props, series })}\n {...frameProps(props)}\n />\n );\n}\n\n/**\n * Box plot: medians, quartiles, whiskers and outliers of samples, from raw\n * values (`groups`) or computed statistics (`series`)\n */\nexport function BoxPlotChart(props: BoxPlotChartProps) {\n const {\n series: input,\n groups,\n name,\n whisker,\n orientation,\n locale,\n outlierShape,\n outlierSize,\n } = props;\n const groupName = name ?? presetLabels(resolveLocale(locale)).values;\n const series = useMemo(\n () =>\n boxplotSeries([\n ...(groups?.length\n ? [\n {\n id: \"boxplot\",\n name: groupName,\n data: boxplotData(groups, { whisker }),\n },\n ]\n : []),\n ...(input ?? []),\n ]).map((s) =>\n s.type === \"boxplot\"\n ? {\n ...s,\n outlierShape: s.outlierShape ?? outlierShape,\n outlierSize: s.outlierSize ?? outlierSize,\n }\n : s,\n ),\n [input, groups, groupName, whisker, outlierShape, outlierSize],\n );\n return (\n <ChartBase\n options={engineOptions({ ...props, series, orientation })}\n {...frameProps(props)}\n />\n );\n}\n\n/**\n * Waterfall (bridge) chart: how changes take a value from a start to an\n * end, with subtotals and totals (P&L bridges, budget variances)\n */\nexport function WaterfallChart(props: WaterfallChartProps) {\n const {\n steps,\n name,\n upColor,\n downColor,\n totalColor,\n start,\n labels = true,\n format,\n connector,\n orientation,\n locale,\n } = props;\n const lang = resolveLocale(locale);\n const series = useMemo(\n () => [\n waterfallSeries(steps, {\n name,\n upColor,\n downColor,\n totalColor,\n start,\n labels,\n format,\n connector,\n locale: lang,\n }),\n ],\n [\n steps,\n name,\n upColor,\n downColor,\n totalColor,\n start,\n labels,\n format,\n connector,\n lang,\n ],\n );\n return (\n <ChartBase\n options={engineOptions({\n ...props,\n labels: undefined,\n series,\n orientation,\n })}\n {...frameProps(props)}\n />\n );\n}\n\n/**\n * Gantt chart: tasks as bars on a time axis with their progress, groups,\n * milestones and a today line; zooms and pans along the time\n */\nexport function GanttChart(props: GanttChartProps) {\n const {\n tasks,\n colors,\n taskName,\n progressName,\n milestoneName,\n formatProgress,\n dependenciesName,\n dependencyArrows,\n dependencyColor,\n today = false,\n todayLabel,\n xAxis,\n yAxis,\n annotations,\n interaction,\n legend,\n locale,\n } = props;\n const lang = resolveLocale(locale);\n const gantt = useMemo(\n () =>\n ganttSeries(tasks, {\n colors,\n taskName,\n progressName,\n milestoneName,\n formatProgress,\n dependenciesName,\n dependencyArrows,\n dependencyColor,\n locale: lang,\n }),\n [\n tasks,\n colors,\n taskName,\n progressName,\n milestoneName,\n formatProgress,\n dependenciesName,\n dependencyArrows,\n dependencyColor,\n lang,\n ],\n );\n const [mountedAt] = useState(() => Date.now());\n const now =\n today === false\n ? null\n : today === true\n ? mountedAt\n : today instanceof Date\n ? today.getTime()\n : today;\n const lines: ChartAnnotation[] =\n now === null\n ? []\n : [\n {\n type: \"line\",\n axis: \"y\",\n value: now,\n color: \"var(--danger-color, #dc2626)\",\n dash: [4, 3],\n label: todayLabel,\n },\n ];\n return (\n <ChartBase\n options={{\n ...engineOptions({\n ...props,\n series: gantt.series,\n orientation: \"horizontal\",\n }),\n xAxis: {\n type: \"category\",\n categories: gantt.categories,\n ...xAxis,\n },\n yAxis: {\n type: \"time\",\n min: gantt.domain[0],\n max: gantt.domain[1],\n ...yAxis,\n },\n annotations: [...(annotations ?? []), ...lines],\n dependencies: gantt.dependencies,\n interaction: interaction ?? { zoom: \"y\" },\n legend: legend ?? gantt.series.length > 1,\n }}\n {...frameProps(props)}\n />\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"charts.cjs","names":["useMemo","lineSeries","ChartBase","engineOptions","areaSeries","barSeries","candlestickSeries","heatmapChartOptions","sparklineOptions","scatterSeries","useState","useRef","quadrantOf","quadrantChartOptions","rangeAreaSeries","Chart","bubbleSeries","resolveLocale","histogramSeries","presetLabels","boxplotSeries","boxplotData","waterfallSeries","ganttSeries","require_locale","require_Chart","require_presets","react","react_jsx_runtime","frameProps","props","LineChart","input","series","area","stacked","percent","curve","AreaChart","BarChart","labels","CandlestickChart","HeatmapChart","data","xCategories","yCategories","colorScale","valueRange","colorMidpoint","name","radius","format","base","Sparkline","options","type","color","reference","renderer","tooltip","palette","ariaLabel","locale","ref","ScatterChart","CORNERS","DOUBLE_CLICK_MS","cornerStyle","left","corner","top","split","plot","QuadrantChart","geometry","dropCorner","setDropCorner","lastClick","release","dropAt","event","draggable","onPointDrop","onPointDrag","overlay","quadrantContent","x0","x1","xDomain","y0","y1","yDomain","xs","xSplit","ys","ySplit","fx","fy","reverseX","tint","quadrants","index","points","now","last","double","onPointClick","onPointDoubleClick","onQuadrantClick","at","target","renderTooltip","HorizontalBarChart","RangeAreaChart","MixedChart","BubbleChart","minSize","maxSize","maxValue","HistogramChart","extra","lang","values","formatBin","bins","domain","nice","BoxPlotChart","groupName","groups","s","outlierShape","outlierSize","whisker","WaterfallChart","steps","upColor","downColor","totalColor","start","connector","GanttChart","gantt","tasks","colors","taskName","progressName","milestoneName","formatProgress","dependenciesName","dependencyArrows","dependencyColor","mountedAt","today","lines","todayLabel","xAxis","yAxis","annotations","interaction","legend"],"sources":["../../../../charts/src/react/charts.tsx"],"sourcesContent":["import {\n useEffect,\n useMemo,\n useRef,\n useState,\n type CSSProperties,\n} from \"react\";\nimport {\n areaSeries,\n barSeries,\n boxplotData,\n boxplotSeries,\n bubbleSeries,\n candlestickSeries,\n ganttSeries,\n heatmapChartOptions,\n histogramSeries,\n lineSeries,\n presetLabels,\n quadrantChartOptions,\n quadrantOf,\n rangeAreaSeries,\n scatterSeries,\n sparklineOptions,\n waterfallSeries,\n type QuadrantCorner,\n} from \"../engine/presets\";\nimport { resolveLocale } from \"../engine/locale\";\nimport type {\n ChartAnnotation,\n ChartDragEvent,\n ChartRect,\n} from \"../engine/types\";\nimport { Chart, ChartBase, engineOptions } from \"./Chart\";\nimport type {\n AreaChartProps,\n BarChartProps,\n BoxPlotChartProps,\n BubbleChartProps,\n CandlestickChartProps,\n ChartCommonProps,\n GanttChartProps,\n HeatmapChartProps,\n HistogramChartProps,\n HorizontalBarChartProps,\n LineChartProps,\n MixedChartProps,\n QuadrantChartProps,\n QuadrantDropTarget,\n RangeAreaChartProps,\n ScatterChartProps,\n SparklineProps,\n WaterfallChartProps,\n} from \"./types\";\n\nconst frameProps = (props: Omit<ChartCommonProps, \"labels\">) => ({\n height: props.height,\n width: props.width,\n className: props.className,\n style: props.style,\n handleRef: props.ref,\n onHover: props.onHover,\n onPointClick: props.onPointClick,\n onPlotClick: props.onPlotClick,\n onZoom: props.onZoom,\n onRendererChange: props.onRendererChange,\n renderTooltip: props.renderTooltip,\n});\n\n/** Line (or area) chart; handles millions of points on the GPU */\nexport function LineChart(props: LineChartProps) {\n const {\n series: input,\n area = false,\n curve,\n stacked = false,\n percent = false,\n } = props;\n const series = useMemo(\n () => lineSeries(input, area, { curve, stacked: stacked || percent }),\n [input, area, curve, stacked, percent],\n );\n return (\n <ChartBase\n options={engineOptions({\n ...props,\n series,\n stackMode: percent ? \"percent\" : undefined,\n })}\n {...frameProps(props)}\n />\n );\n}\n\n/** Area chart: smooth by default, stacked or 100% stacked */\nexport function AreaChart(props: AreaChartProps) {\n const {\n series: input,\n curve = \"smooth\",\n stacked = false,\n percent = false,\n } = props;\n const series = useMemo(\n () => areaSeries(input, { curve, stacked: stacked || percent }),\n [input, curve, stacked, percent],\n );\n return (\n <ChartBase\n options={engineOptions({\n ...props,\n series,\n stackMode: percent ? \"percent\" : undefined,\n })}\n {...frameProps(props)}\n />\n );\n}\n\n/** Bar chart: grouped side by side, stacked or 100% stacked, with optional value labels */\nexport function BarChart(props: BarChartProps) {\n const {\n series: input,\n stacked = false,\n percent = false,\n labels = false,\n } = props;\n const series = useMemo(\n () => barSeries(input, stacked || percent, labels),\n [input, stacked, percent, labels],\n );\n return (\n <ChartBase\n options={engineOptions({\n ...props,\n labels: undefined,\n series,\n stackMode: percent ? \"percent\" : undefined,\n })}\n {...frameProps(props)}\n />\n );\n}\n\n/** Candlestick (OHLC) chart: rising and falling candles, zoomable on the GPU */\nexport function CandlestickChart(props: CandlestickChartProps) {\n const { series: input } = props;\n const series = useMemo(() => candlestickSeries(input), [input]);\n return (\n <ChartBase\n options={engineOptions({ ...props, series })}\n {...frameProps(props)}\n />\n );\n}\n\n/** Heatmap: a grid of cells colored by value (categories or numbers on both axes) */\nexport function HeatmapChart(props: HeatmapChartProps) {\n const {\n data,\n xCategories,\n yCategories,\n colorScale,\n valueRange,\n colorMidpoint,\n name,\n radius,\n format,\n } = props;\n const series = useMemo(\n () =>\n heatmapChartOptions({\n data,\n xCategories,\n yCategories,\n colorScale,\n valueRange,\n colorMidpoint,\n name,\n radius,\n format,\n }).series,\n [\n data,\n xCategories,\n yCategories,\n colorScale,\n valueRange,\n colorMidpoint,\n name,\n radius,\n format,\n ],\n );\n const base = engineOptions({ ...props, series });\n return (\n <ChartBase\n options={{\n ...heatmapChartOptions(\n { data, xCategories, yCategories },\n {\n ...base,\n legend: props.legend,\n interaction: props.interaction,\n tooltip: props.tooltip,\n },\n ),\n series,\n }}\n {...frameProps(props)}\n />\n );\n}\n\n/** Word-sized chart without axes: a trend in a table cell, a KPI card, ... */\nexport function Sparkline(props: SparklineProps) {\n const {\n data,\n type,\n color,\n curve,\n name,\n reference,\n format,\n height = 48,\n width,\n renderer,\n tooltip,\n palette,\n ariaLabel,\n locale,\n labels,\n className,\n style,\n ref,\n onHover,\n renderTooltip,\n } = props;\n const options = useMemo(\n () =>\n sparklineOptions(\n { data, type, color, curve, name, reference, format },\n { renderer, tooltip, palette, ariaLabel, locale, labels },\n ),\n [\n data,\n type,\n color,\n curve,\n name,\n reference,\n format,\n renderer,\n tooltip,\n palette,\n ariaLabel,\n locale,\n labels,\n ],\n );\n return (\n <ChartBase\n options={options}\n height={height}\n width={width}\n className={className}\n style={style}\n handleRef={ref}\n onHover={onHover}\n renderTooltip={renderTooltip}\n />\n );\n}\n\n/** Scatter chart: zooms on both axes, hit testing through a spatial index */\nexport function ScatterChart(props: ScatterChartProps) {\n const { series: input } = props;\n const series = useMemo(() => scatterSeries(input), [input]);\n return (\n <ChartBase\n options={engineOptions({ ...props, series })}\n {...frameProps(props)}\n />\n );\n}\n\nconst CORNERS: QuadrantCorner[] = [\n \"topLeft\",\n \"topRight\",\n \"bottomLeft\",\n \"bottomRight\",\n];\n\n/** Two clicks on the same point within this delay count as a double click */\nconst DOUBLE_CLICK_MS = 400;\n\nconst cornerStyle = (\n corner: QuadrantCorner,\n plot: ChartRect,\n split: { x: number; y: number },\n): CSSProperties => {\n const left = corner.endsWith(\"Left\");\n const top = corner.startsWith(\"top\");\n return {\n position: \"absolute\",\n left: left ? 0 : split.x - plot.x,\n top: top ? 0 : split.y - plot.y,\n width: left ? split.x - plot.x : plot.x + plot.width - split.x,\n height: top ? split.y - plot.y : plot.y + plot.height - split.y,\n pointerEvents: \"none\",\n };\n};\n\n/**\n * Four-quadrant matrix (priority matrix, Eisenhower, BCG, ...): tinted\n * quadrants with titles, dividers, and labelled dots placed without\n * overlapping labels. Dots can be dragged to another quadrant.\n */\nexport function QuadrantChart(props: QuadrantChartProps) {\n const {\n points,\n xDomain,\n yDomain,\n xSplit,\n ySplit,\n quadrants,\n xLabel,\n yLabel,\n axisLabels,\n showTicks,\n reverseX,\n showLabels,\n pointSize,\n name,\n draggable,\n onPointClick,\n onPointDoubleClick,\n onPointDrag,\n onPointDrop,\n onQuadrantClick,\n renderTooltip,\n quadrantContent,\n } = props;\n const geometry = { xDomain, yDomain, xSplit, ySplit, reverseX };\n const [dropCorner, setDropCorner] = useState<QuadrantCorner | null>(null);\n const lastClick = useRef<{ index: number; time: number } | null>(null);\n\n // a release outside the plot ends the drag without a drop event\n useEffect(() => {\n if (!dropCorner) return;\n const release = () => setDropCorner(null);\n window.addEventListener(\"pointerup\", release);\n return () => window.removeEventListener(\"pointerup\", release);\n }, [dropCorner]);\n\n const dropAt = (event: ChartDragEvent): QuadrantDropTarget => ({\n x: event.x,\n y: event.y,\n quadrant: quadrantOf(geometry, event.x, event.y),\n });\n\n const options = quadrantChartOptions(\n {\n points,\n xDomain,\n yDomain,\n xSplit,\n ySplit,\n quadrants,\n xLabel,\n yLabel,\n axisLabels,\n showTicks,\n reverseX,\n showLabels,\n pointSize,\n name,\n draggable: draggable ?? !!(onPointDrop || onPointDrag),\n },\n engineOptions({ ...props, series: [] }),\n );\n\n const overlay =\n quadrantContent || dropCorner\n ? (plot: ChartRect) => {\n const [x0, x1] = xDomain ?? [0, 10];\n const [y0, y1] = yDomain ?? [0, 10];\n const xs = xSplit ?? (x0 + x1) / 2;\n const ys = ySplit ?? (y0 + y1) / 2;\n const fx = (xs - x0) / (x1 - x0 || 1);\n const fy = (ys - y0) / (y1 - y0 || 1);\n const split = {\n x: plot.x + plot.width * (reverseX ? 1 - fx : fx),\n y: plot.y + plot.height * (1 - fy),\n };\n const tint = dropCorner\n ? (quadrants?.[dropCorner]?.color ?? \"currentColor\")\n : \"\";\n return [\n ...CORNERS.map((corner) =>\n quadrantContent?.[corner] ? (\n <div\n key={corner}\n className={`minerva-chart-quadrant minerva-chart-quadrant-${corner}`}\n style={cornerStyle(corner, plot, split)}\n >\n {quadrantContent[corner]}\n </div>\n ) : null,\n ),\n dropCorner ? (\n <div\n key=\"drop-target\"\n className=\"minerva-chart-quadrant-target\"\n style={{\n ...cornerStyle(dropCorner, plot, split),\n background: `color-mix(in srgb, ${tint} 14%, transparent)`,\n boxShadow: `inset 0 0 0 2px ${tint}`,\n }}\n />\n ) : null,\n ];\n }\n : undefined;\n\n return (\n <ChartBase\n options={options}\n {...frameProps({\n ...props,\n onPointClick: undefined,\n renderTooltip: undefined,\n })}\n overlay={overlay}\n onPointClick={(event) => {\n const index = event.items[0]?.index;\n if (index === undefined || !points[index]) return;\n const now = Date.now();\n const last = lastClick.current;\n const double =\n last?.index === index && now - last.time < DOUBLE_CLICK_MS;\n lastClick.current = double ? null : { index, time: now };\n onPointClick?.(points[index], index);\n if (double) onPointDoubleClick?.(points[index], index);\n }}\n onPlotClick={\n onQuadrantClick\n ? (at) => onQuadrantClick(quadrantOf(geometry, at.x, at.y), at)\n : undefined\n }\n onDrag={(event) => {\n const index = event.item.index;\n const target = dropAt(event);\n setDropCorner(target.quadrant);\n if (points[index]) onPointDrag?.(points[index], index, target);\n }}\n onDrop={(event) => {\n setDropCorner(null);\n const index = event.item.index;\n if (points[index] && onPointDrop)\n onPointDrop(points[index], index, dropAt(event));\n }}\n renderTooltip={\n renderTooltip\n ? (event) => {\n const index = event.items[0]?.index;\n return index !== undefined && points[index]\n ? renderTooltip(points[index], index)\n : null;\n }\n : undefined\n }\n />\n );\n}\n\n/**\n * Horizontal bar chart: categories down the left side, values from the\n * left (rankings, long names, diverging surveys, stacked progress)\n */\nexport function HorizontalBarChart(props: HorizontalBarChartProps) {\n return <BarChart {...props} orientation=\"horizontal\" />;\n}\n\n/**\n * Range area chart: bands between a lower (`y0`) and an upper edge\n * (confidence intervals, min-max ranges), mixable with lines\n */\nexport function RangeAreaChart(props: RangeAreaChartProps) {\n const { series: input, curve = \"smooth\" } = props;\n const series = useMemo(() => rangeAreaSeries(input, curve), [input, curve]);\n return (\n <ChartBase\n options={engineOptions({ ...props, series })}\n {...frameProps(props)}\n />\n );\n}\n\n/**\n * Combination chart: bars, lines and areas on one or two value axes\n * (`yAxis: \"right\"` series use `yAxis2`, aligned on the left grid)\n */\nexport function MixedChart(props: MixedChartProps) {\n return <Chart {...props} />;\n}\n\n/** Bubble chart: x, y and a value sized by area (√value diameters) */\nexport function BubbleChart(props: BubbleChartProps) {\n const { series: input, minSize, maxSize, maxValue } = props;\n const series = useMemo(\n () => bubbleSeries(input, { minSize, maxSize, maxValue }),\n [input, minSize, maxSize, maxValue],\n );\n return (\n <ChartBase\n options={engineOptions({ ...props, series })}\n {...frameProps(props)}\n />\n );\n}\n\n/**\n * Histogram: the distribution of raw samples in bins of equal width\n * (Freedman-Diaconis, Sturges or a count); millions of samples are binned\n * in milliseconds\n */\nexport function HistogramChart(props: HistogramChartProps) {\n const {\n values,\n bins,\n domain,\n nice,\n name,\n color,\n formatBin,\n series: extra,\n locale,\n } = props;\n // page language read at every render: a language switch renames the series\n const lang = resolveLocale(locale);\n const series = useMemo(\n () => [\n histogramSeries(values, {\n bins,\n domain,\n nice,\n name,\n color,\n format: formatBin,\n locale: lang,\n }),\n ...(extra ?? []),\n ],\n [values, bins, domain, nice, name, color, formatBin, extra, lang],\n );\n return (\n <ChartBase\n options={engineOptions({ ...props, series })}\n {...frameProps(props)}\n />\n );\n}\n\n/**\n * Box plot: medians, quartiles, whiskers and outliers of samples, from raw\n * values (`groups`) or computed statistics (`series`)\n */\nexport function BoxPlotChart(props: BoxPlotChartProps) {\n const {\n series: input,\n groups,\n name,\n whisker,\n orientation,\n locale,\n outlierShape,\n outlierSize,\n } = props;\n const groupName = name ?? presetLabels(resolveLocale(locale)).values;\n const series = useMemo(\n () =>\n boxplotSeries([\n ...(groups?.length\n ? [\n {\n id: \"boxplot\",\n name: groupName,\n data: boxplotData(groups, { whisker }),\n },\n ]\n : []),\n ...(input ?? []),\n ]).map((s) =>\n s.type === \"boxplot\"\n ? {\n ...s,\n outlierShape: s.outlierShape ?? outlierShape,\n outlierSize: s.outlierSize ?? outlierSize,\n }\n : s,\n ),\n [input, groups, groupName, whisker, outlierShape, outlierSize],\n );\n return (\n <ChartBase\n options={engineOptions({ ...props, series, orientation })}\n {...frameProps(props)}\n />\n );\n}\n\n/**\n * Waterfall (bridge) chart: how changes take a value from a start to an\n * end, with subtotals and totals (P&L bridges, budget variances)\n */\nexport function WaterfallChart(props: WaterfallChartProps) {\n const {\n steps,\n name,\n upColor,\n downColor,\n totalColor,\n start,\n labels = true,\n format,\n connector,\n orientation,\n locale,\n } = props;\n const lang = resolveLocale(locale);\n const series = useMemo(\n () => [\n waterfallSeries(steps, {\n name,\n upColor,\n downColor,\n totalColor,\n start,\n labels,\n format,\n connector,\n locale: lang,\n }),\n ],\n [\n steps,\n name,\n upColor,\n downColor,\n totalColor,\n start,\n labels,\n format,\n connector,\n lang,\n ],\n );\n return (\n <ChartBase\n options={engineOptions({\n ...props,\n labels: undefined,\n series,\n orientation,\n })}\n {...frameProps(props)}\n />\n );\n}\n\n/**\n * Gantt chart: tasks as bars on a time axis with their progress, groups,\n * milestones and a today line; zooms and pans along the time\n */\nexport function GanttChart(props: GanttChartProps) {\n const {\n tasks,\n colors,\n taskName,\n progressName,\n milestoneName,\n formatProgress,\n dependenciesName,\n dependencyArrows,\n dependencyColor,\n today = false,\n todayLabel,\n xAxis,\n yAxis,\n annotations,\n interaction,\n legend,\n locale,\n } = props;\n const lang = resolveLocale(locale);\n const gantt = useMemo(\n () =>\n ganttSeries(tasks, {\n colors,\n taskName,\n progressName,\n milestoneName,\n formatProgress,\n dependenciesName,\n dependencyArrows,\n dependencyColor,\n locale: lang,\n }),\n [\n tasks,\n colors,\n taskName,\n progressName,\n milestoneName,\n formatProgress,\n dependenciesName,\n dependencyArrows,\n dependencyColor,\n lang,\n ],\n );\n const [mountedAt] = useState(() => Date.now());\n const now =\n today === false\n ? null\n : today === true\n ? mountedAt\n : today instanceof Date\n ? today.getTime()\n : today;\n const lines: ChartAnnotation[] =\n now === null\n ? []\n : [\n {\n type: \"line\",\n axis: \"y\",\n value: now,\n color: \"var(--danger-color, #dc2626)\",\n dash: [4, 3],\n label: todayLabel,\n },\n ];\n return (\n <ChartBase\n options={{\n ...engineOptions({\n ...props,\n series: gantt.series,\n orientation: \"horizontal\",\n }),\n xAxis: {\n type: \"category\",\n categories: gantt.categories,\n ...xAxis,\n },\n yAxis: {\n type: \"time\",\n min: gantt.domain[0],\n max: gantt.domain[1],\n ...yAxis,\n },\n annotations: [...(annotations ?? []), ...lines],\n dependencies: gantt.dependencies,\n interaction: interaction ?? { zoom: \"y\" },\n legend: legend ?? gantt.series.length > 1,\n }}\n {...frameProps(props)}\n />\n );\n}\n"],"mappings":"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"}