@rowsncolumns/charts 27.0.30

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 (281) hide show
  1. package/LICENSE.md +100 -0
  2. package/Readme.md +81 -0
  3. package/dist/cjs/atoms/editing-chart.atom.d.ts +13 -0
  4. package/dist/cjs/atoms/editing-chart.atom.d.ts.map +1 -0
  5. package/dist/cjs/atoms/editing-chart.atom.js +26 -0
  6. package/dist/cjs/basic-chart/basic-chart.d.ts +5 -0
  7. package/dist/cjs/basic-chart/basic-chart.d.ts.map +1 -0
  8. package/dist/cjs/basic-chart/basic-chart.js +2250 -0
  9. package/dist/cjs/basic-chart/helpers.d.ts +12 -0
  10. package/dist/cjs/basic-chart/helpers.d.ts.map +1 -0
  11. package/dist/cjs/basic-chart/helpers.js +105 -0
  12. package/dist/cjs/basic-chart/index.d.ts +5 -0
  13. package/dist/cjs/basic-chart/index.d.ts.map +1 -0
  14. package/dist/cjs/basic-chart/index.js +12 -0
  15. package/dist/cjs/components/dialogs/chart-editor-dialog.d.ts +5 -0
  16. package/dist/cjs/components/dialogs/chart-editor-dialog.d.ts.map +1 -0
  17. package/dist/cjs/components/dialogs/chart-editor-dialog.js +25 -0
  18. package/dist/cjs/components/editors/chart-editor.d.ts +10 -0
  19. package/dist/cjs/components/editors/chart-editor.d.ts.map +1 -0
  20. package/dist/cjs/components/editors/chart-editor.js +631 -0
  21. package/dist/cjs/components/editors/chart-range-input.d.ts +17 -0
  22. package/dist/cjs/components/editors/chart-range-input.d.ts.map +1 -0
  23. package/dist/cjs/components/editors/chart-range-input.js +16 -0
  24. package/dist/cjs/config.d.ts +19 -0
  25. package/dist/cjs/config.d.ts.map +1 -0
  26. package/dist/cjs/config.js +196 -0
  27. package/dist/cjs/hooks/use-chart-editor.d.ts +8 -0
  28. package/dist/cjs/hooks/use-chart-editor.d.ts.map +1 -0
  29. package/dist/cjs/hooks/use-chart-editor.js +29 -0
  30. package/dist/cjs/hooks/use-charts.d.ts +35 -0
  31. package/dist/cjs/hooks/use-charts.d.ts.map +1 -0
  32. package/dist/cjs/hooks/use-charts.js +67 -0
  33. package/dist/cjs/hooks/use-on-create-chart.d.ts +13 -0
  34. package/dist/cjs/hooks/use-on-create-chart.d.ts.map +1 -0
  35. package/dist/cjs/hooks/use-on-create-chart.js +24 -0
  36. package/dist/cjs/hooks/use-on-delete-chart.d.ts +8 -0
  37. package/dist/cjs/hooks/use-on-delete-chart.d.ts.map +1 -0
  38. package/dist/cjs/hooks/use-on-delete-chart.js +19 -0
  39. package/dist/cjs/hooks/use-on-move-chart.d.ts +8 -0
  40. package/dist/cjs/hooks/use-on-move-chart.d.ts.map +1 -0
  41. package/dist/cjs/hooks/use-on-move-chart.js +15 -0
  42. package/dist/cjs/hooks/use-on-resize-chart.d.ts +8 -0
  43. package/dist/cjs/hooks/use-on-resize-chart.d.ts.map +1 -0
  44. package/dist/cjs/hooks/use-on-resize-chart.js +15 -0
  45. package/dist/cjs/hooks/use-on-update-chart.d.ts +9 -0
  46. package/dist/cjs/hooks/use-on-update-chart.d.ts.map +1 -0
  47. package/dist/cjs/hooks/use-on-update-chart.js +15 -0
  48. package/dist/cjs/index.d.ts +11 -0
  49. package/dist/cjs/index.d.ts.map +1 -0
  50. package/dist/cjs/index.js +18 -0
  51. package/dist/cjs/interface/create-chart.d.ts +9 -0
  52. package/dist/cjs/interface/create-chart.d.ts.map +1 -0
  53. package/dist/cjs/interface/create-chart.js +110 -0
  54. package/dist/cjs/interface/delete-chart.d.ts +4 -0
  55. package/dist/cjs/interface/delete-chart.d.ts.map +1 -0
  56. package/dist/cjs/interface/delete-chart.js +26 -0
  57. package/dist/cjs/interface/move-chart.d.ts +5 -0
  58. package/dist/cjs/interface/move-chart.d.ts.map +1 -0
  59. package/dist/cjs/interface/move-chart.js +28 -0
  60. package/dist/cjs/interface/resize-chart.d.ts +5 -0
  61. package/dist/cjs/interface/resize-chart.d.ts.map +1 -0
  62. package/dist/cjs/interface/resize-chart.js +30 -0
  63. package/dist/cjs/interface/update-chart.d.ts +4 -0
  64. package/dist/cjs/interface/update-chart.d.ts.map +1 -0
  65. package/dist/cjs/interface/update-chart.js +29 -0
  66. package/dist/cjs/plotly/basic-chart/basic-chart.d.ts +5 -0
  67. package/dist/cjs/plotly/basic-chart/basic-chart.d.ts.map +1 -0
  68. package/dist/cjs/plotly/basic-chart/basic-chart.js +1586 -0
  69. package/dist/cjs/plotly/basic-chart/helpers.d.ts +20 -0
  70. package/dist/cjs/plotly/basic-chart/helpers.d.ts.map +1 -0
  71. package/dist/cjs/plotly/basic-chart/helpers.js +114 -0
  72. package/dist/cjs/plotly/basic-chart/index.d.ts +5 -0
  73. package/dist/cjs/plotly/basic-chart/index.d.ts.map +1 -0
  74. package/dist/cjs/plotly/basic-chart/index.js +12 -0
  75. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -0
  76. package/dist/cjs/types.d.ts +27 -0
  77. package/dist/cjs/types.d.ts.map +1 -0
  78. package/dist/cjs/types.js +2 -0
  79. package/dist/cjs/utils/aggregation.d.ts +6 -0
  80. package/dist/cjs/utils/aggregation.d.ts.map +1 -0
  81. package/dist/cjs/utils/aggregation.js +127 -0
  82. package/dist/cjs/utils/bar-layout.d.ts +57 -0
  83. package/dist/cjs/utils/bar-layout.d.ts.map +1 -0
  84. package/dist/cjs/utils/bar-layout.js +81 -0
  85. package/dist/cjs/utils/boxplot.d.ts +62 -0
  86. package/dist/cjs/utils/boxplot.d.ts.map +1 -0
  87. package/dist/cjs/utils/boxplot.js +105 -0
  88. package/dist/cjs/utils/bubble.d.ts +52 -0
  89. package/dist/cjs/utils/bubble.d.ts.map +1 -0
  90. package/dist/cjs/utils/bubble.js +139 -0
  91. package/dist/cjs/utils/chart-spec-utils.d.ts +67 -0
  92. package/dist/cjs/utils/chart-spec-utils.d.ts.map +1 -0
  93. package/dist/cjs/utils/chart-spec-utils.js +355 -0
  94. package/dist/cjs/utils/echarts-gl-loader.d.ts +11 -0
  95. package/dist/cjs/utils/echarts-gl-loader.d.ts.map +1 -0
  96. package/dist/cjs/utils/echarts-gl-loader.js +59 -0
  97. package/dist/cjs/utils/error-bars.d.ts +58 -0
  98. package/dist/cjs/utils/error-bars.d.ts.map +1 -0
  99. package/dist/cjs/utils/error-bars.js +154 -0
  100. package/dist/cjs/utils/gradient.d.ts +52 -0
  101. package/dist/cjs/utils/gradient.d.ts.map +1 -0
  102. package/dist/cjs/utils/gradient.js +93 -0
  103. package/dist/cjs/utils/hierarchy.d.ts +28 -0
  104. package/dist/cjs/utils/hierarchy.d.ts.map +1 -0
  105. package/dist/cjs/utils/hierarchy.js +186 -0
  106. package/dist/cjs/utils/histogram.d.ts +46 -0
  107. package/dist/cjs/utils/histogram.d.ts.map +1 -0
  108. package/dist/cjs/utils/histogram.js +125 -0
  109. package/dist/cjs/utils/of-pie.d.ts +101 -0
  110. package/dist/cjs/utils/of-pie.d.ts.map +1 -0
  111. package/dist/cjs/utils/of-pie.js +159 -0
  112. package/dist/cjs/utils/overrides.d.ts +12 -0
  113. package/dist/cjs/utils/overrides.d.ts.map +1 -0
  114. package/dist/cjs/utils/overrides.js +171 -0
  115. package/dist/cjs/utils/radar.d.ts +37 -0
  116. package/dist/cjs/utils/radar.d.ts.map +1 -0
  117. package/dist/cjs/utils/radar.js +70 -0
  118. package/dist/cjs/utils/region-map-loader.d.ts +22 -0
  119. package/dist/cjs/utils/region-map-loader.d.ts.map +1 -0
  120. package/dist/cjs/utils/region-map-loader.js +174 -0
  121. package/dist/cjs/utils/region-map.d.ts +100 -0
  122. package/dist/cjs/utils/region-map.d.ts.map +1 -0
  123. package/dist/cjs/utils/region-map.js +327 -0
  124. package/dist/cjs/utils/stock.d.ts +64 -0
  125. package/dist/cjs/utils/stock.d.ts.map +1 -0
  126. package/dist/cjs/utils/stock.js +153 -0
  127. package/dist/cjs/utils/three-d.d.ts +96 -0
  128. package/dist/cjs/utils/three-d.d.ts.map +1 -0
  129. package/dist/cjs/utils/three-d.js +191 -0
  130. package/dist/cjs/utils/trendline.d.ts +41 -0
  131. package/dist/cjs/utils/trendline.d.ts.map +1 -0
  132. package/dist/cjs/utils/trendline.js +303 -0
  133. package/dist/cjs/utils/waterfall.d.ts +24 -0
  134. package/dist/cjs/utils/waterfall.d.ts.map +1 -0
  135. package/dist/cjs/utils/waterfall.js +61 -0
  136. package/dist/cjs/utils/webgl.d.ts +12 -0
  137. package/dist/cjs/utils/webgl.d.ts.map +1 -0
  138. package/dist/cjs/utils/webgl.js +36 -0
  139. package/dist/cjs/vitest.config.d.ts +3 -0
  140. package/dist/cjs/vitest.config.d.ts.map +1 -0
  141. package/dist/cjs/vitest.config.js +9 -0
  142. package/dist/esm/atoms/editing-chart.atom.d.ts +13 -0
  143. package/dist/esm/atoms/editing-chart.atom.d.ts.map +1 -0
  144. package/dist/esm/atoms/editing-chart.atom.js +12 -0
  145. package/dist/esm/basic-chart/basic-chart.d.ts +5 -0
  146. package/dist/esm/basic-chart/basic-chart.d.ts.map +1 -0
  147. package/dist/esm/basic-chart/basic-chart.js +2343 -0
  148. package/dist/esm/basic-chart/helpers.d.ts +12 -0
  149. package/dist/esm/basic-chart/helpers.d.ts.map +1 -0
  150. package/dist/esm/basic-chart/helpers.js +98 -0
  151. package/dist/esm/basic-chart/index.d.ts +5 -0
  152. package/dist/esm/basic-chart/index.d.ts.map +1 -0
  153. package/dist/esm/basic-chart/index.js +7 -0
  154. package/dist/esm/components/dialogs/chart-editor-dialog.d.ts +5 -0
  155. package/dist/esm/components/dialogs/chart-editor-dialog.d.ts.map +1 -0
  156. package/dist/esm/components/dialogs/chart-editor-dialog.js +19 -0
  157. package/dist/esm/components/editors/chart-editor.d.ts +10 -0
  158. package/dist/esm/components/editors/chart-editor.d.ts.map +1 -0
  159. package/dist/esm/components/editors/chart-editor.js +550 -0
  160. package/dist/esm/components/editors/chart-range-input.d.ts +17 -0
  161. package/dist/esm/components/editors/chart-range-input.d.ts.map +1 -0
  162. package/dist/esm/components/editors/chart-range-input.js +10 -0
  163. package/dist/esm/config.d.ts +19 -0
  164. package/dist/esm/config.d.ts.map +1 -0
  165. package/dist/esm/config.js +161 -0
  166. package/dist/esm/hooks/use-chart-editor.d.ts +8 -0
  167. package/dist/esm/hooks/use-chart-editor.d.ts.map +1 -0
  168. package/dist/esm/hooks/use-chart-editor.js +32 -0
  169. package/dist/esm/hooks/use-charts.d.ts +35 -0
  170. package/dist/esm/hooks/use-charts.d.ts.map +1 -0
  171. package/dist/esm/hooks/use-charts.js +62 -0
  172. package/dist/esm/hooks/use-on-create-chart.d.ts +13 -0
  173. package/dist/esm/hooks/use-on-create-chart.d.ts.map +1 -0
  174. package/dist/esm/hooks/use-on-create-chart.js +19 -0
  175. package/dist/esm/hooks/use-on-delete-chart.d.ts +8 -0
  176. package/dist/esm/hooks/use-on-delete-chart.d.ts.map +1 -0
  177. package/dist/esm/hooks/use-on-delete-chart.js +14 -0
  178. package/dist/esm/hooks/use-on-move-chart.d.ts +8 -0
  179. package/dist/esm/hooks/use-on-move-chart.d.ts.map +1 -0
  180. package/dist/esm/hooks/use-on-move-chart.js +10 -0
  181. package/dist/esm/hooks/use-on-resize-chart.d.ts +8 -0
  182. package/dist/esm/hooks/use-on-resize-chart.d.ts.map +1 -0
  183. package/dist/esm/hooks/use-on-resize-chart.js +10 -0
  184. package/dist/esm/hooks/use-on-update-chart.d.ts +9 -0
  185. package/dist/esm/hooks/use-on-update-chart.d.ts.map +1 -0
  186. package/dist/esm/hooks/use-on-update-chart.js +10 -0
  187. package/dist/esm/index.d.ts +11 -0
  188. package/dist/esm/index.d.ts.map +1 -0
  189. package/dist/esm/index.js +13 -0
  190. package/dist/esm/interface/create-chart.d.ts +9 -0
  191. package/dist/esm/interface/create-chart.d.ts.map +1 -0
  192. package/dist/esm/interface/create-chart.js +126 -0
  193. package/dist/esm/interface/delete-chart.d.ts +4 -0
  194. package/dist/esm/interface/delete-chart.d.ts.map +1 -0
  195. package/dist/esm/interface/delete-chart.js +20 -0
  196. package/dist/esm/interface/move-chart.d.ts +5 -0
  197. package/dist/esm/interface/move-chart.d.ts.map +1 -0
  198. package/dist/esm/interface/move-chart.js +22 -0
  199. package/dist/esm/interface/resize-chart.d.ts +5 -0
  200. package/dist/esm/interface/resize-chart.d.ts.map +1 -0
  201. package/dist/esm/interface/resize-chart.js +24 -0
  202. package/dist/esm/interface/update-chart.d.ts +4 -0
  203. package/dist/esm/interface/update-chart.d.ts.map +1 -0
  204. package/dist/esm/interface/update-chart.js +26 -0
  205. package/dist/esm/plotly/basic-chart/basic-chart.d.ts +5 -0
  206. package/dist/esm/plotly/basic-chart/basic-chart.d.ts.map +1 -0
  207. package/dist/esm/plotly/basic-chart/basic-chart.js +1682 -0
  208. package/dist/esm/plotly/basic-chart/helpers.d.ts +20 -0
  209. package/dist/esm/plotly/basic-chart/helpers.d.ts.map +1 -0
  210. package/dist/esm/plotly/basic-chart/helpers.js +107 -0
  211. package/dist/esm/plotly/basic-chart/index.d.ts +5 -0
  212. package/dist/esm/plotly/basic-chart/index.d.ts.map +1 -0
  213. package/dist/esm/plotly/basic-chart/index.js +7 -0
  214. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -0
  215. package/dist/esm/types.d.ts +27 -0
  216. package/dist/esm/types.d.ts.map +1 -0
  217. package/dist/esm/types.js +1 -0
  218. package/dist/esm/utils/aggregation.d.ts +6 -0
  219. package/dist/esm/utils/aggregation.d.ts.map +1 -0
  220. package/dist/esm/utils/aggregation.js +96 -0
  221. package/dist/esm/utils/bar-layout.d.ts +57 -0
  222. package/dist/esm/utils/bar-layout.d.ts.map +1 -0
  223. package/dist/esm/utils/bar-layout.js +70 -0
  224. package/dist/esm/utils/boxplot.d.ts +62 -0
  225. package/dist/esm/utils/boxplot.d.ts.map +1 -0
  226. package/dist/esm/utils/boxplot.js +91 -0
  227. package/dist/esm/utils/bubble.d.ts +52 -0
  228. package/dist/esm/utils/bubble.d.ts.map +1 -0
  229. package/dist/esm/utils/bubble.js +122 -0
  230. package/dist/esm/utils/chart-spec-utils.d.ts +67 -0
  231. package/dist/esm/utils/chart-spec-utils.d.ts.map +1 -0
  232. package/dist/esm/utils/chart-spec-utils.js +270 -0
  233. package/dist/esm/utils/echarts-gl-loader.d.ts +11 -0
  234. package/dist/esm/utils/echarts-gl-loader.d.ts.map +1 -0
  235. package/dist/esm/utils/echarts-gl-loader.js +51 -0
  236. package/dist/esm/utils/error-bars.d.ts +58 -0
  237. package/dist/esm/utils/error-bars.d.ts.map +1 -0
  238. package/dist/esm/utils/error-bars.js +134 -0
  239. package/dist/esm/utils/gradient.d.ts +52 -0
  240. package/dist/esm/utils/gradient.d.ts.map +1 -0
  241. package/dist/esm/utils/gradient.js +84 -0
  242. package/dist/esm/utils/hierarchy.d.ts +28 -0
  243. package/dist/esm/utils/hierarchy.d.ts.map +1 -0
  244. package/dist/esm/utils/hierarchy.js +150 -0
  245. package/dist/esm/utils/histogram.d.ts +46 -0
  246. package/dist/esm/utils/histogram.d.ts.map +1 -0
  247. package/dist/esm/utils/histogram.js +95 -0
  248. package/dist/esm/utils/of-pie.d.ts +101 -0
  249. package/dist/esm/utils/of-pie.d.ts.map +1 -0
  250. package/dist/esm/utils/of-pie.js +141 -0
  251. package/dist/esm/utils/overrides.d.ts +12 -0
  252. package/dist/esm/utils/overrides.d.ts.map +1 -0
  253. package/dist/esm/utils/overrides.js +159 -0
  254. package/dist/esm/utils/radar.d.ts +37 -0
  255. package/dist/esm/utils/radar.d.ts.map +1 -0
  256. package/dist/esm/utils/radar.js +49 -0
  257. package/dist/esm/utils/region-map-loader.d.ts +22 -0
  258. package/dist/esm/utils/region-map-loader.d.ts.map +1 -0
  259. package/dist/esm/utils/region-map-loader.js +141 -0
  260. package/dist/esm/utils/region-map.d.ts +100 -0
  261. package/dist/esm/utils/region-map.d.ts.map +1 -0
  262. package/dist/esm/utils/region-map.js +266 -0
  263. package/dist/esm/utils/stock.d.ts +64 -0
  264. package/dist/esm/utils/stock.d.ts.map +1 -0
  265. package/dist/esm/utils/stock.js +123 -0
  266. package/dist/esm/utils/three-d.d.ts +96 -0
  267. package/dist/esm/utils/three-d.d.ts.map +1 -0
  268. package/dist/esm/utils/three-d.js +162 -0
  269. package/dist/esm/utils/trendline.d.ts +41 -0
  270. package/dist/esm/utils/trendline.d.ts.map +1 -0
  271. package/dist/esm/utils/trendline.js +257 -0
  272. package/dist/esm/utils/waterfall.d.ts +24 -0
  273. package/dist/esm/utils/waterfall.d.ts.map +1 -0
  274. package/dist/esm/utils/waterfall.js +55 -0
  275. package/dist/esm/utils/webgl.d.ts +12 -0
  276. package/dist/esm/utils/webgl.d.ts.map +1 -0
  277. package/dist/esm/utils/webgl.js +30 -0
  278. package/dist/esm/vitest.config.d.ts +3 -0
  279. package/dist/esm/vitest.config.d.ts.map +1 -0
  280. package/dist/esm/vitest.config.js +7 -0
  281. package/package.json +96 -0
@@ -0,0 +1,19 @@
1
+ import type { ChartSpec } from "@rowsncolumns/spreadsheet";
2
+ export declare const CHART_TYPES: Array<[string, Array<[string, Partial<ChartSpec>]>]>;
3
+ /**
4
+ * True when a spec is doughnut-shaped: the first-class
5
+ * `chartType: "doughnut"` token, or the two legacy pie encodings —
6
+ * `doughnutHoleSize` on a pie (SDK-authored), or a pie with a nonzero
7
+ * inner radius (the old picker preset wrote
8
+ * `{ chartType: "pie", radius: ["40%", "70%"] }`).
9
+ */
10
+ export declare const isDoughnutSpec: (spec: Partial<ChartSpec>) => boolean;
11
+ /**
12
+ * Derive the picker label for an existing spec — the inverse of the
13
+ * CHART_TYPES presets. Purely read-only: opening a chart in the editor
14
+ * uses this for display and never rewrites the spec, so SDK-authored
15
+ * specs (doughnutHoleSize, PERCENT_STACKED, …) round-trip unchanged.
16
+ * Falls back to the capitalized chartType when no preset matches.
17
+ */
18
+ export declare const getChartPresetLabel: (spec: Partial<ChartSpec>) => string;
19
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AA8F3D,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAa1E,CAAC;AAYJ;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,GAAI,MAAM,OAAO,CAAC,SAAS,CAAC,KAAG,OAQzD,CAAC;AAcF;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB,GAAI,MAAM,OAAO,CAAC,SAAS,CAAC,KAAG,MAmB9D,CAAC"}
@@ -0,0 +1,161 @@
1
+ const LINE_CHART_TYPES = [
2
+ ["Line", { chartType: "line", smooth: false }],
3
+ [
4
+ "Stacked line",
5
+ { chartType: "line", smooth: false, stackedType: "STACKED" },
6
+ ],
7
+ ["Smooth line", { chartType: "line", smooth: true }],
8
+ ];
9
+ const COLUMN_CHART_TYPES = [
10
+ ["Clustered Column", { chartType: "column", stackedType: "UNSTACKED" }],
11
+ ["Stacked column", { chartType: "column", stackedType: "STACKED" }],
12
+ [
13
+ "100% stacked column",
14
+ { chartType: "column", stackedType: "PERCENT_STACKED" },
15
+ ],
16
+ ];
17
+ const BAR_CHART_TYPES = [
18
+ ["Clustered Bar", { chartType: "bar", stackedType: "UNSTACKED" }],
19
+ ["Stacked Bar", { chartType: "bar", stackedType: "STACKED" }],
20
+ ["100% stacked Bar", { chartType: "bar", stackedType: "PERCENT_STACKED" }],
21
+ ];
22
+ const PIE_CHART_TYPES = [
23
+ [
24
+ "2D Pie",
25
+ { chartType: "pie", stackedType: "UNSTACKED", radius: [0, "75%"] },
26
+ ],
27
+ // A first-class doughnut token. The hole is controlled by
28
+ // spec.doughnutHoleSize (0-1 fraction, renderer default 0.5) via the
29
+ // editor's "Chart options" section; the preset deliberately omits it
30
+ // so re-picking "Doughnut" never clobbers an authored hole size.
31
+ ["Doughnut", { chartType: "doughnut", stackedType: "UNSTACKED" }],
32
+ ];
33
+ const BUBBLE_CHART_TYPES = [
34
+ [
35
+ "Bubble",
36
+ {
37
+ chartType: "bubble",
38
+ bubbleLabels: [{ sources: [] }],
39
+ // domains: [{ sources: [] }],
40
+ // series: [{ sources: [] }],
41
+ useFirstRowAsHeaders: true,
42
+ },
43
+ ],
44
+ [
45
+ "Scatter",
46
+ {
47
+ chartType: "scatter",
48
+ bubbleLabels: [{ sources: [] }],
49
+ // domains: [{ sources: [] }],
50
+ // series: [{ sources: [] }],
51
+ useFirstRowAsHeaders: true,
52
+ },
53
+ ],
54
+ ];
55
+ const HIERARCHY_CHART_TYPES = [
56
+ ["Treemap", { chartType: "treemap", useFirstRowAsHeaders: true }],
57
+ ["Sunburst", { chartType: "sunburst", useFirstRowAsHeaders: true }],
58
+ ];
59
+ const STATISTICAL_CHART_TYPES = [
60
+ ["Histogram", { chartType: "histogram" }],
61
+ ["Box & Whisker", { chartType: "boxplot" }],
62
+ ];
63
+ const FLOW_CHART_TYPES = [
64
+ ["Waterfall", { chartType: "waterfall" }],
65
+ ["Funnel", { chartType: "funnel" }],
66
+ ];
67
+ const COMBO_CHART_TYPES = [
68
+ ["Combo (mixed series)", { chartType: "combo" }],
69
+ ];
70
+ const RADAR_CHART_TYPES = [
71
+ ["Radar", { chartType: "radar", radarStyle: "standard" }],
72
+ ["Radar with markers", { chartType: "radar", radarStyle: "marker" }],
73
+ ["Filled radar", { chartType: "radar", radarStyle: "filled" }],
74
+ ];
75
+ const STOCK_CHART_TYPES = [
76
+ ["Stock (HLC)", { chartType: "stock", stockVariant: "HLC" }],
77
+ ["Stock (OHLC)", { chartType: "stock", stockVariant: "OHLC" }],
78
+ ];
79
+ export const CHART_TYPES = [
80
+ ["Bar", BAR_CHART_TYPES],
81
+ ["Column", COLUMN_CHART_TYPES],
82
+ ["Line", LINE_CHART_TYPES],
83
+ ["Pie", PIE_CHART_TYPES],
84
+ ["Scatter & Bubble", BUBBLE_CHART_TYPES],
85
+ ["Hierarchy", HIERARCHY_CHART_TYPES],
86
+ ["Statistical", STATISTICAL_CHART_TYPES],
87
+ ["Flow", FLOW_CHART_TYPES],
88
+ ["Radar", RADAR_CHART_TYPES],
89
+ ["Stock", STOCK_CHART_TYPES],
90
+ ["Combo", COMBO_CHART_TYPES],
91
+ ];
92
+ /** Parse a radius entry ("40%" | 40 | 0) into a number, NaN-safe. */
93
+ const parseRadiusValue = (value) => {
94
+ if (typeof value === "number")
95
+ return value;
96
+ if (typeof value === "string") {
97
+ const parsed = Number.parseFloat(value);
98
+ return Number.isFinite(parsed) ? parsed : 0;
99
+ }
100
+ return 0;
101
+ };
102
+ /**
103
+ * True when a spec is doughnut-shaped: the first-class
104
+ * `chartType: "doughnut"` token, or the two legacy pie encodings —
105
+ * `doughnutHoleSize` on a pie (SDK-authored), or a pie with a nonzero
106
+ * inner radius (the old picker preset wrote
107
+ * `{ chartType: "pie", radius: ["40%", "70%"] }`).
108
+ */
109
+ export const isDoughnutSpec = (spec) => {
110
+ const loose = spec;
111
+ if (loose.chartType === "doughnut")
112
+ return true;
113
+ if (loose.chartType !== "pie")
114
+ return false;
115
+ const holeSize = loose.doughnutHoleSize;
116
+ if (typeof holeSize === "number" && holeSize > 0)
117
+ return true;
118
+ const radius = loose.radius;
119
+ return Array.isArray(radius) && parseRadiusValue(radius[0]) > 0;
120
+ };
121
+ /**
122
+ * Fields that distinguish presets sharing a chartType, with the value
123
+ * an absent field is equivalent to (e.g. no stackedType renders
124
+ * unstacked, so `{ chartType: "column" }` is "Clustered Column").
125
+ */
126
+ const PRESET_DISCRIMINATORS = [
127
+ ["stackedType", "UNSTACKED"],
128
+ ["smooth", false],
129
+ ["radarStyle", "standard"],
130
+ ["stockVariant", "HLC"],
131
+ ];
132
+ /**
133
+ * Derive the picker label for an existing spec — the inverse of the
134
+ * CHART_TYPES presets. Purely read-only: opening a chart in the editor
135
+ * uses this for display and never rewrites the spec, so SDK-authored
136
+ * specs (doughnutHoleSize, PERCENT_STACKED, …) round-trip unchanged.
137
+ * Falls back to the capitalized chartType when no preset matches.
138
+ */
139
+ export const getChartPresetLabel = (spec) => {
140
+ // Doughnut first — it has several encodings (see isDoughnutSpec) and
141
+ // the legacy pie-based ones would otherwise match the pie presets.
142
+ if (isDoughnutSpec(spec))
143
+ return "Doughnut";
144
+ const loose = spec;
145
+ for (const [, presets] of CHART_TYPES) {
146
+ for (const [name, config] of presets) {
147
+ if (config.chartType !== spec.chartType)
148
+ continue;
149
+ const looseConfig = config;
150
+ const matches = PRESET_DISCRIMINATORS.every(([key, absentValue]) => {
151
+ const presetValue = looseConfig[key] ?? absentValue;
152
+ const specValue = loose[key] ?? absentValue;
153
+ return presetValue === specValue;
154
+ });
155
+ if (matches)
156
+ return name;
157
+ }
158
+ }
159
+ const chartType = spec.chartType ?? "";
160
+ return chartType.charAt(0).toUpperCase() + chartType.slice(1);
161
+ };
@@ -0,0 +1,8 @@
1
+ import type { EmbeddedChart, OverlayPosition } from "@rowsncolumns/spreadsheet";
2
+ export declare const useChartEditor: () => {
3
+ onRequestEditChart: (chart: EmbeddedChart) => void;
4
+ updateSelectedChartPosition: (chartId: string | number, overlayPosition: Partial<OverlayPosition>) => void;
5
+ selectedChart: EmbeddedChart | undefined;
6
+ isEditInProgress: boolean;
7
+ };
8
+ //# sourceMappingURL=use-chart-editor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-chart-editor.d.ts","sourceRoot":"","sources":["../../../hooks/use-chart-editor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAKhF,eAAO,MAAM,cAAc;gCAKf,aAAa;2CAWX,MAAM,GAAG,MAAM,mBAAmB,OAAO,CAAC,eAAe,CAAC;;;CAyBvE,CAAC"}
@@ -0,0 +1,32 @@
1
+ import { useCallback, useState } from "react";
2
+ import { useSetChartEditorDialogState } from "../atoms/editing-chart.atom";
3
+ export const useChartEditor = () => {
4
+ const [chart, setChart] = useState();
5
+ const setChartEditorDialogState = useSetChartEditorDialogState();
6
+ const onRequestEditChart = useCallback((chart) => {
7
+ // Open resize dialog
8
+ setChartEditorDialogState(true);
9
+ // Set editing chart
10
+ setChart(chart);
11
+ }, [setChartEditorDialogState]);
12
+ const updateSelectedChartPosition = useCallback((chartId, overlayPosition) => {
13
+ setChart((prev) => prev && prev.chartId === chartId
14
+ ? {
15
+ ...prev,
16
+ position: {
17
+ ...prev.position,
18
+ overlayPosition: {
19
+ ...prev.position.overlayPosition,
20
+ ...overlayPosition,
21
+ },
22
+ },
23
+ }
24
+ : prev);
25
+ }, []);
26
+ return {
27
+ onRequestEditChart,
28
+ updateSelectedChartPosition,
29
+ selectedChart: chart,
30
+ isEditInProgress: !!chart,
31
+ };
32
+ };
@@ -0,0 +1,35 @@
1
+ import type { EmbeddedChart } from "@rowsncolumns/spreadsheet";
2
+ import type { UseSpreadsheetProps, useSpreadsheetState } from "@rowsncolumns/spreadsheet-state";
3
+ export type UseChartsProps = {
4
+ /**
5
+ * Callback when chart state is changed
6
+ */
7
+ onChangeCharts?: React.Dispatch<React.SetStateAction<EmbeddedChart[]>>;
8
+ /**
9
+ * Create a spreadsheet history
10
+ */
11
+ createHistory: ReturnType<typeof useSpreadsheetState>["createHistory"];
12
+ /**
13
+ * Get formatted value
14
+ */
15
+ getFormattedValue: ReturnType<typeof useSpreadsheetState>["getFormattedValue"];
16
+ /**
17
+ * Get effective value
18
+ */
19
+ getEffectiveValue: ReturnType<typeof useSpreadsheetState>["getEffectiveValue"];
20
+ /**
21
+ * Id Creation strategy
22
+ */
23
+ idCreationStrategy?: UseSpreadsheetProps["idCreationStrategy"];
24
+ };
25
+ export declare const useCharts: ({ onChangeCharts, getFormattedValue, getEffectiveValue, createHistory, idCreationStrategy, }: UseChartsProps) => {
26
+ selectedChart: EmbeddedChart | undefined;
27
+ onRequestEditChart: (chart: EmbeddedChart) => void;
28
+ updateSelectedChartPosition: (chartId: string | number, overlayPosition: Partial<import("@rowsncolumns/spreadsheet").OverlayPosition>) => void;
29
+ onCreateChart: (sheetId: number, activeCell: import("@rowsncolumns/grid").CellInterface, selections: import("@rowsncolumns/grid").SelectionArea<import("@rowsncolumns/spreadsheet").SelectionAttributes>[], chartSpec?: EmbeddedChart) => EmbeddedChart;
30
+ onDeleteChart: (chartId: string | number) => void;
31
+ onMoveChart: (chartId: string | number, anchorCell: import("@rowsncolumns/grid").CellInterface, offsetXPixels: number, offsetYPixels: number) => void;
32
+ onResizeChart: (chartId: string | number, anchorCell: import("@rowsncolumns/grid").CellInterface, offsetXPixels: number, offsetYPixels: number, width: number, height: number) => void;
33
+ onUpdateChart: (chart: EmbeddedChart) => void;
34
+ };
35
+ //# sourceMappingURL=use-charts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-charts.d.ts","sourceRoot":"","sources":["../../../hooks/use-charts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAmB,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAChF,OAAO,KAAK,EACV,mBAAmB,EACnB,mBAAmB,EACpB,MAAM,iCAAiC,CAAC;AAUzC,MAAM,MAAM,cAAc,GAAG;IAC3B;;OAEG;IACH,cAAc,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;IACvE;;OAEG;IACH,aAAa,EAAE,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC,eAAe,CAAC,CAAC;IACvE;;OAEG;IACH,iBAAiB,EAAE,UAAU,CAC3B,OAAO,mBAAmB,CAC3B,CAAC,mBAAmB,CAAC,CAAC;IACvB;;OAEG;IACH,iBAAiB,EAAE,UAAU,CAC3B,OAAO,mBAAmB,CAC3B,CAAC,mBAAmB,CAAC,CAAC;IACvB;;OAEG;IACH,kBAAkB,CAAC,EAAE,mBAAmB,CAAC,oBAAoB,CAAC,CAAC;CAChE,CAAC;AAEF,eAAO,MAAM,SAAS,GAAI,8FAMvB,cAAc;;;;;;;;;CA6EhB,CAAC"}
@@ -0,0 +1,62 @@
1
+ import { useCallback } from "react";
2
+ import { useChartEditor } from "./use-chart-editor";
3
+ import { useOnDeleteChart } from "./use-on-delete-chart";
4
+ import { useOnMoveChart } from "./use-on-move-chart";
5
+ import { useOnResizeChart } from "./use-on-resize-chart";
6
+ import { useOnUpdateChart } from "./use-on-update-chart";
7
+ import { useOnCreateChart } from "./use-on-create-chart";
8
+ export const useCharts = ({ onChangeCharts, getFormattedValue, getEffectiveValue, createHistory, idCreationStrategy, }) => {
9
+ const { selectedChart, onRequestEditChart, updateSelectedChartPosition } = useChartEditor();
10
+ const onDeleteChart = useOnDeleteChart({
11
+ onChangeCharts,
12
+ createHistory,
13
+ });
14
+ // Charts and embeds
15
+ const handleMoveChart = useOnMoveChart({
16
+ onChangeCharts,
17
+ createHistory,
18
+ });
19
+ const handleResizeChart = useOnResizeChart({
20
+ onChangeCharts,
21
+ createHistory,
22
+ });
23
+ const onMoveChart = useCallback((chartId, anchorCell, offsetXPixels, offsetYPixels) => {
24
+ handleMoveChart(chartId, anchorCell, offsetXPixels, offsetYPixels);
25
+ updateSelectedChartPosition(chartId, {
26
+ anchorCell,
27
+ offsetXPixels,
28
+ offsetYPixels,
29
+ });
30
+ }, [handleMoveChart, updateSelectedChartPosition]);
31
+ const onResizeChart = useCallback((chartId, anchorCell, offsetXPixels, offsetYPixels, width, height) => {
32
+ handleResizeChart(chartId, anchorCell, offsetXPixels, offsetYPixels, width, height);
33
+ updateSelectedChartPosition(chartId, {
34
+ anchorCell,
35
+ offsetXPixels,
36
+ offsetYPixels,
37
+ widthPixels: width,
38
+ heightPixels: height,
39
+ });
40
+ }, [handleResizeChart, updateSelectedChartPosition]);
41
+ const onUpdateChart = useOnUpdateChart({
42
+ onChangeCharts,
43
+ createHistory,
44
+ });
45
+ const onCreateChart = useOnCreateChart({
46
+ onChangeCharts,
47
+ createHistory,
48
+ getFormattedValue,
49
+ getEffectiveValue,
50
+ idCreationStrategy,
51
+ });
52
+ return {
53
+ selectedChart,
54
+ onRequestEditChart,
55
+ updateSelectedChartPosition,
56
+ onCreateChart,
57
+ onDeleteChart,
58
+ onMoveChart,
59
+ onResizeChart,
60
+ onUpdateChart,
61
+ };
62
+ };
@@ -0,0 +1,13 @@
1
+ import { CellInterface, SelectionArea } from "@rowsncolumns/grid";
2
+ import { type CellData, SelectionAttributes, EmbeddedChart } from "@rowsncolumns/spreadsheet";
3
+ import type { UseSpreadsheetProps, useSpreadsheetState } from "@rowsncolumns/spreadsheet-state";
4
+ import { UseChartsProps } from "./use-charts";
5
+ export type UseOnCreateChartProps<T extends CellData> = {
6
+ onChangeCharts: UseSpreadsheetProps<T>["onChangeCharts"];
7
+ createHistory: ReturnType<typeof useSpreadsheetState>["createHistory"];
8
+ getFormattedValue: ReturnType<typeof useSpreadsheetState>["getFormattedValue"];
9
+ getEffectiveValue: ReturnType<typeof useSpreadsheetState>["getEffectiveValue"];
10
+ idCreationStrategy?: UseChartsProps["idCreationStrategy"];
11
+ };
12
+ export declare const useOnCreateChart: <T extends CellData>({ onChangeCharts, getFormattedValue, getEffectiveValue, createHistory, idCreationStrategy, }: UseOnCreateChartProps<T>) => (sheetId: number, activeCell: CellInterface, selections: SelectionArea<SelectionAttributes>[], chartSpec?: EmbeddedChart) => EmbeddedChart;
13
+ //# sourceMappingURL=use-on-create-chart.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-on-create-chart.d.ts","sourceRoot":"","sources":["../../../hooks/use-on-create-chart.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAClE,OAAO,EACL,KAAK,QAAQ,EACb,mBAAmB,EACnB,aAAa,EACd,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EACV,mBAAmB,EACnB,mBAAmB,EACpB,MAAM,iCAAiC,CAAC;AAIzC,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C,MAAM,MAAM,qBAAqB,CAAC,CAAC,SAAS,QAAQ,IAAI;IACtD,cAAc,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;IACzD,aAAa,EAAE,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC,eAAe,CAAC,CAAC;IACvE,iBAAiB,EAAE,UAAU,CAC3B,OAAO,mBAAmB,CAC3B,CAAC,mBAAmB,CAAC,CAAC;IACvB,iBAAiB,EAAE,UAAU,CAC3B,OAAO,mBAAmB,CAC3B,CAAC,mBAAmB,CAAC,CAAC;IACvB,kBAAkB,CAAC,EAAE,cAAc,CAAC,oBAAoB,CAAC,CAAC;CAC3D,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,CAAC,SAAS,QAAQ,EAAE,8FAMlD,qBAAqB,CAAC,CAAC,CAAC,eAGZ,MAAM,cACH,aAAa,cACb,aAAa,CAAC,mBAAmB,CAAC,EAAE,cACpC,aAAa,kBAkB9B,CAAC"}
@@ -0,0 +1,19 @@
1
+ import { useCallback } from "react";
2
+ import { createChart } from "../interface/create-chart";
3
+ export const useOnCreateChart = ({ onChangeCharts, getFormattedValue, getEffectiveValue, createHistory, idCreationStrategy, }) => {
4
+ return useCallback((sheetId, activeCell, selections, chartSpec) => {
5
+ return createChart({
6
+ onChangeCharts,
7
+ getFormattedValue,
8
+ getEffectiveValue,
9
+ createHistory,
10
+ idCreationStrategy,
11
+ })(sheetId, activeCell, selections, chartSpec);
12
+ }, [
13
+ onChangeCharts,
14
+ getFormattedValue,
15
+ getEffectiveValue,
16
+ createHistory,
17
+ idCreationStrategy,
18
+ ]);
19
+ };
@@ -0,0 +1,8 @@
1
+ import { type CellData } from "@rowsncolumns/spreadsheet";
2
+ import type { UseSpreadsheetProps, useSpreadsheetState } from "@rowsncolumns/spreadsheet-state";
3
+ export type UseOnDeleteChartProps<T extends CellData> = {
4
+ onChangeCharts: UseSpreadsheetProps<T>["onChangeCharts"];
5
+ createHistory: ReturnType<typeof useSpreadsheetState>["createHistory"];
6
+ };
7
+ export declare const useOnDeleteChart: <T extends CellData>({ onChangeCharts, createHistory, }: UseOnDeleteChartProps<T>) => (chartId: string | number) => void;
8
+ //# sourceMappingURL=use-on-delete-chart.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-on-delete-chart.d.ts","sourceRoot":"","sources":["../../../hooks/use-on-delete-chart.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,QAAQ,EAEd,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EACV,mBAAmB,EACnB,mBAAmB,EACpB,MAAM,iCAAiC,CAAC;AAKzC,MAAM,MAAM,qBAAqB,CAAC,CAAC,SAAS,QAAQ,IAAI;IACtD,cAAc,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;IACzD,aAAa,EAAE,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC,eAAe,CAAC,CAAC;CACxE,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,CAAC,SAAS,QAAQ,EAAE,oCAGlD,qBAAqB,CAAC,CAAC,CAAC,uCAc1B,CAAC"}
@@ -0,0 +1,14 @@
1
+ import { useFocusSheet, } from "@rowsncolumns/spreadsheet";
2
+ import { useCallback } from "react";
3
+ import { deleteChart } from "../interface/delete-chart";
4
+ export const useOnDeleteChart = ({ onChangeCharts, createHistory, }) => {
5
+ const focusSheet = useFocusSheet();
6
+ return useCallback((chartId) => {
7
+ deleteChart({
8
+ onChangeCharts,
9
+ createHistory,
10
+ })(chartId);
11
+ // Keep focus on
12
+ focusSheet?.();
13
+ }, [onChangeCharts, createHistory, focusSheet]);
14
+ };
@@ -0,0 +1,8 @@
1
+ import type { CellData } from "@rowsncolumns/spreadsheet";
2
+ import type { UseSpreadsheetProps, useSpreadsheetState } from "@rowsncolumns/spreadsheet-state";
3
+ export type UseOnMoveChartProps<T extends CellData> = {
4
+ onChangeCharts: UseSpreadsheetProps<T>["onChangeCharts"];
5
+ createHistory: ReturnType<typeof useSpreadsheetState>["createHistory"];
6
+ };
7
+ export declare const useOnMoveChart: <T extends CellData>({ onChangeCharts, createHistory, }: UseOnMoveChartProps<T>) => (chartId: string | number, anchorCell: import("@rowsncolumns/grid").CellInterface, offsetXPixels: number, offsetYPixels: number) => void;
8
+ //# sourceMappingURL=use-on-move-chart.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-on-move-chart.d.ts","sourceRoot":"","sources":["../../../hooks/use-on-move-chart.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAmB,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAC3E,OAAO,KAAK,EACV,mBAAmB,EACnB,mBAAmB,EACpB,MAAM,iCAAiC,CAAC;AAKzC,MAAM,MAAM,mBAAmB,CAAC,CAAC,SAAS,QAAQ,IAAI;IACpD,cAAc,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;IACzD,aAAa,EAAE,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC,eAAe,CAAC,CAAC;CACxE,CAAC;AAEF,eAAO,MAAM,cAAc,GAAI,CAAC,SAAS,QAAQ,EAAE,oCAGhD,mBAAmB,CAAC,CAAC,CAAC,6IAUxB,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { useCallback } from "react";
2
+ import { moveChart } from "../interface/move-chart";
3
+ export const useOnMoveChart = ({ onChangeCharts, createHistory, }) => {
4
+ return useCallback((chartId, anchorCell, offsetXPixels, offsetYPixels) => {
5
+ moveChart({
6
+ onChangeCharts,
7
+ createHistory,
8
+ })(chartId, anchorCell, offsetXPixels, offsetYPixels);
9
+ }, [onChangeCharts, createHistory]);
10
+ };
@@ -0,0 +1,8 @@
1
+ import type { CellData } from "@rowsncolumns/spreadsheet";
2
+ import type { UseSpreadsheetProps, useSpreadsheetState } from "@rowsncolumns/spreadsheet-state";
3
+ export type UseOnResizeChartProps<T extends CellData> = {
4
+ onChangeCharts: UseSpreadsheetProps<T>["onChangeCharts"];
5
+ createHistory: ReturnType<typeof useSpreadsheetState>["createHistory"];
6
+ };
7
+ export declare const useOnResizeChart: <T extends CellData>({ onChangeCharts, createHistory, }: UseOnResizeChartProps<T>) => (chartId: string | number, anchorCell: import("@rowsncolumns/grid").CellInterface, offsetXPixels: number, offsetYPixels: number, width: number, height: number) => void;
8
+ //# sourceMappingURL=use-on-resize-chart.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-on-resize-chart.d.ts","sourceRoot":"","sources":["../../../hooks/use-on-resize-chart.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAmB,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAC3E,OAAO,KAAK,EACV,mBAAmB,EACnB,mBAAmB,EACpB,MAAM,iCAAiC,CAAC;AAKzC,MAAM,MAAM,qBAAqB,CAAC,CAAC,SAAS,QAAQ,IAAI;IACtD,cAAc,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;IACzD,aAAa,EAAE,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC,eAAe,CAAC,CAAC;CACxE,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,CAAC,SAAS,QAAQ,EAAE,oCAGlD,qBAAqB,CAAC,CAAC,CAAC,4KAU1B,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { useCallback } from "react";
2
+ import { resizeChart } from "../interface/resize-chart";
3
+ export const useOnResizeChart = ({ onChangeCharts, createHistory, }) => {
4
+ return useCallback((chartId, anchorCell, offsetXPixels, offsetYPixels, width, height) => {
5
+ resizeChart({
6
+ onChangeCharts,
7
+ createHistory,
8
+ })(chartId, anchorCell, offsetXPixels, offsetYPixels, width, height);
9
+ }, [onChangeCharts, createHistory]);
10
+ };
@@ -0,0 +1,9 @@
1
+ import type { CellData } from "@rowsncolumns/spreadsheet";
2
+ import type { EmbeddedChart } from "@rowsncolumns/spreadsheet";
3
+ import type { UseSpreadsheetProps, useSpreadsheetState } from "@rowsncolumns/spreadsheet-state";
4
+ export type UseOnUpdateChartProps<T extends CellData> = {
5
+ onChangeCharts: UseSpreadsheetProps<T>["onChangeCharts"];
6
+ createHistory: ReturnType<typeof useSpreadsheetState>["createHistory"];
7
+ };
8
+ export declare const useOnUpdateChart: <T extends CellData>({ onChangeCharts, createHistory, }: UseOnUpdateChartProps<T>) => (chart: EmbeddedChart) => void;
9
+ //# sourceMappingURL=use-on-update-chart.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-on-update-chart.d.ts","sourceRoot":"","sources":["../../../hooks/use-on-update-chart.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,KAAK,EACV,mBAAmB,EACnB,mBAAmB,EACpB,MAAM,iCAAiC,CAAC;AAKzC,MAAM,MAAM,qBAAqB,CAAC,CAAC,SAAS,QAAQ,IAAI;IACtD,cAAc,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;IACzD,aAAa,EAAE,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC,eAAe,CAAC,CAAC;CACxE,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,CAAC,SAAS,QAAQ,EAAE,oCAGlD,qBAAqB,CAAC,CAAC,CAAC,aAEf,aAAa,SAQxB,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { useCallback } from "react";
2
+ import { updateChart } from "../interface/update-chart";
3
+ export const useOnUpdateChart = ({ onChangeCharts, createHistory, }) => {
4
+ return useCallback((chart) => {
5
+ updateChart({
6
+ onChangeCharts,
7
+ createHistory,
8
+ })(chart);
9
+ }, [onChangeCharts, createHistory]);
10
+ };
@@ -0,0 +1,11 @@
1
+ export * from "./hooks/use-charts";
2
+ export * from "./components/dialogs/chart-editor-dialog";
3
+ export * from "./components/editors/chart-editor";
4
+ export * from "./basic-chart";
5
+ export { registerChartGeoMap } from "./utils/region-map-loader";
6
+ export * from "./interface/create-chart";
7
+ export * from "./interface/delete-chart";
8
+ export * from "./interface/move-chart";
9
+ export * from "./interface/resize-chart";
10
+ export * from "./interface/update-chart";
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,0CAA0C,CAAC;AACzD,cAAc,mCAAmC,CAAC;AAClD,cAAc,eAAe,CAAC;AAI9B,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAGhE,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC"}
@@ -0,0 +1,13 @@
1
+ export * from "./hooks/use-charts";
2
+ export * from "./components/dialogs/chart-editor-dialog";
3
+ export * from "./components/editors/chart-editor";
4
+ export * from "./basic-chart";
5
+ // Region-map (filled map / choropleth) host API — register additional
6
+ // geo scopes (e.g. a US-states GeoJSON) for `chartType: "regionMap"`.
7
+ export { registerChartGeoMap } from "./utils/region-map-loader";
8
+ // Chart interface functions
9
+ export * from "./interface/create-chart";
10
+ export * from "./interface/delete-chart";
11
+ export * from "./interface/move-chart";
12
+ export * from "./interface/resize-chart";
13
+ export * from "./interface/update-chart";
@@ -0,0 +1,9 @@
1
+ import { CellInterface, SelectionArea } from "@rowsncolumns/grid";
2
+ import { type CellData, SelectionAttributes, EmbeddedChart } from "@rowsncolumns/spreadsheet";
3
+ import type { UseOnCreateChartProps } from "../hooks/use-on-create-chart";
4
+ /**
5
+ * Ensures endIndex is at least minValue.
6
+ */
7
+ export declare const ensureValidEndIndex: (endIndex: number | undefined, minValue: number) => number;
8
+ export declare const createChart: <T extends CellData>({ onChangeCharts, getFormattedValue, getEffectiveValue, createHistory, idCreationStrategy, }: UseOnCreateChartProps<T>) => (sheetId: number, activeCell: CellInterface, selections: SelectionArea<SelectionAttributes>[], chartSpec?: EmbeddedChart) => EmbeddedChart;
9
+ //# sourceMappingURL=create-chart.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-chart.d.ts","sourceRoot":"","sources":["../../../interface/create-chart.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAClE,OAAO,EACL,KAAK,QAAQ,EACb,mBAAmB,EACnB,aAAa,EAKd,MAAM,2BAA2B,CAAC;AAInC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAa1E;;GAEG;AACH,eAAO,MAAM,mBAAmB,GAC9B,UAAU,MAAM,GAAG,SAAS,EAC5B,UAAU,MAAM,KACf,MAAkF,CAAC;AAEtF,eAAO,MAAM,WAAW,GAAI,CAAC,SAAS,QAAQ,EAAE,8FAM7C,qBAAqB,CAAC,CAAC,CAAC,MAEvB,SAAS,MAAM,EACf,YAAY,aAAa,EACzB,YAAY,aAAa,CAAC,mBAAmB,CAAC,EAAE,EAChD,YAAY,aAAa,kBAyJ5B,CAAC"}