@rowsncolumns/charts 28.0.0 → 28.1.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 (193) hide show
  1. package/dist/cjs/atoms/pivot-chart.atom.d.ts +14 -0
  2. package/dist/cjs/atoms/pivot-chart.atom.d.ts.map +1 -0
  3. package/dist/cjs/atoms/pivot-chart.atom.js +9 -0
  4. package/dist/cjs/basic-chart/basic-chart.d.ts +1 -1
  5. package/dist/cjs/basic-chart/basic-chart.d.ts.map +1 -1
  6. package/dist/cjs/basic-chart/basic-chart.js +863 -371
  7. package/dist/cjs/components/dialogs/pivot-chart-dialog.d.ts +39 -0
  8. package/dist/cjs/components/dialogs/pivot-chart-dialog.d.ts.map +1 -0
  9. package/dist/cjs/components/dialogs/pivot-chart-dialog.js +100 -0
  10. package/dist/cjs/components/editors/chart-editor.d.ts +13 -1
  11. package/dist/cjs/components/editors/chart-editor.d.ts.map +1 -1
  12. package/dist/cjs/components/editors/chart-editor.js +225 -59
  13. package/dist/cjs/config.d.ts.map +1 -1
  14. package/dist/cjs/config.js +149 -12
  15. package/dist/cjs/hooks/use-charts.d.ts +21 -6
  16. package/dist/cjs/hooks/use-charts.d.ts.map +1 -1
  17. package/dist/cjs/hooks/use-charts.js +13 -1
  18. package/dist/cjs/hooks/use-on-create-chart.d.ts.map +1 -1
  19. package/dist/cjs/hooks/use-on-create-chart.js +7 -1
  20. package/dist/cjs/hooks/use-on-move-chart-to-sheet.d.ts +12 -0
  21. package/dist/cjs/hooks/use-on-move-chart-to-sheet.d.ts.map +1 -0
  22. package/dist/cjs/hooks/use-on-move-chart-to-sheet.js +26 -0
  23. package/dist/cjs/hooks/use-on-move-chart.d.ts +1 -1
  24. package/dist/cjs/hooks/use-on-move-chart.d.ts.map +1 -1
  25. package/dist/cjs/hooks/use-on-move-chart.js +2 -2
  26. package/dist/cjs/hooks/use-on-resize-chart.d.ts +1 -1
  27. package/dist/cjs/hooks/use-on-resize-chart.d.ts.map +1 -1
  28. package/dist/cjs/hooks/use-on-resize-chart.js +2 -2
  29. package/dist/cjs/index.d.ts +11 -0
  30. package/dist/cjs/index.d.ts.map +1 -1
  31. package/dist/cjs/index.js +34 -1
  32. package/dist/cjs/interface/create-chart.d.ts.map +1 -1
  33. package/dist/cjs/interface/create-chart.js +33 -42
  34. package/dist/cjs/interface/delete-chart.d.ts.map +1 -1
  35. package/dist/cjs/interface/delete-chart.js +4 -0
  36. package/dist/cjs/interface/move-chart-to-sheet.d.ts +13 -0
  37. package/dist/cjs/interface/move-chart-to-sheet.d.ts.map +1 -0
  38. package/dist/cjs/interface/move-chart-to-sheet.js +136 -0
  39. package/dist/cjs/interface/move-chart.d.ts +2 -2
  40. package/dist/cjs/interface/move-chart.d.ts.map +1 -1
  41. package/dist/cjs/interface/move-chart.js +7 -1
  42. package/dist/cjs/interface/resize-chart.d.ts +2 -2
  43. package/dist/cjs/interface/resize-chart.d.ts.map +1 -1
  44. package/dist/cjs/interface/resize-chart.js +7 -1
  45. package/dist/cjs/interface/update-chart.d.ts.map +1 -1
  46. package/dist/cjs/interface/update-chart.js +4 -0
  47. package/dist/cjs/plotly/basic-chart/basic-chart.d.ts +1 -1
  48. package/dist/cjs/plotly/basic-chart/basic-chart.d.ts.map +1 -1
  49. package/dist/cjs/plotly/basic-chart/basic-chart.js +970 -585
  50. package/dist/cjs/plotly/basic-chart/helpers.d.ts.map +1 -1
  51. package/dist/cjs/plotly/basic-chart/helpers.js +3 -0
  52. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  53. package/dist/cjs/types.d.ts +7 -0
  54. package/dist/cjs/types.d.ts.map +1 -1
  55. package/dist/cjs/utils/axis-number-format.d.ts +69 -0
  56. package/dist/cjs/utils/axis-number-format.d.ts.map +1 -0
  57. package/dist/cjs/utils/axis-number-format.js +217 -0
  58. package/dist/cjs/utils/category-levels.d.ts +27 -0
  59. package/dist/cjs/utils/category-levels.d.ts.map +1 -0
  60. package/dist/cjs/utils/category-levels.js +80 -0
  61. package/dist/cjs/utils/chart-image.d.ts +8 -0
  62. package/dist/cjs/utils/chart-image.d.ts.map +1 -0
  63. package/dist/cjs/utils/chart-image.js +28 -0
  64. package/dist/cjs/utils/chart-orientation.d.ts +67 -0
  65. package/dist/cjs/utils/chart-orientation.d.ts.map +1 -0
  66. package/dist/cjs/utils/chart-orientation.js +265 -0
  67. package/dist/cjs/utils/chart-spec-utils.d.ts +3 -0
  68. package/dist/cjs/utils/chart-spec-utils.d.ts.map +1 -1
  69. package/dist/cjs/utils/chart-spec-utils.js +12 -4
  70. package/dist/cjs/utils/chart-styles.d.ts +75 -0
  71. package/dist/cjs/utils/chart-styles.d.ts.map +1 -0
  72. package/dist/cjs/utils/chart-styles.js +283 -0
  73. package/dist/cjs/utils/empty-cells.d.ts +30 -0
  74. package/dist/cjs/utils/empty-cells.d.ts.map +1 -0
  75. package/dist/cjs/utils/empty-cells.js +91 -0
  76. package/dist/cjs/utils/overrides.d.ts +6 -1
  77. package/dist/cjs/utils/overrides.d.ts.map +1 -1
  78. package/dist/cjs/utils/overrides.js +19 -7
  79. package/dist/cjs/utils/pie-explosion.d.ts +30 -0
  80. package/dist/cjs/utils/pie-explosion.d.ts.map +1 -0
  81. package/dist/cjs/utils/pie-explosion.js +55 -0
  82. package/dist/cjs/utils/plotly-click.d.ts +34 -0
  83. package/dist/cjs/utils/plotly-click.d.ts.map +1 -0
  84. package/dist/cjs/utils/plotly-click.js +49 -0
  85. package/dist/cjs/utils/plotly-surface.d.ts +14 -0
  86. package/dist/cjs/utils/plotly-surface.d.ts.map +1 -0
  87. package/dist/cjs/utils/plotly-surface.js +64 -0
  88. package/dist/cjs/utils/plotly-title.d.ts +12 -0
  89. package/dist/cjs/utils/plotly-title.d.ts.map +1 -0
  90. package/dist/cjs/utils/plotly-title.js +24 -0
  91. package/dist/cjs/utils/series-click.d.ts +39 -0
  92. package/dist/cjs/utils/series-click.d.ts.map +1 -0
  93. package/dist/cjs/utils/series-click.js +75 -0
  94. package/dist/cjs/utils/three-d.d.ts +17 -1
  95. package/dist/cjs/utils/three-d.d.ts.map +1 -1
  96. package/dist/cjs/utils/three-d.js +32 -4
  97. package/dist/esm/atoms/pivot-chart.atom.d.ts +14 -0
  98. package/dist/esm/atoms/pivot-chart.atom.d.ts.map +1 -0
  99. package/dist/esm/atoms/pivot-chart.atom.js +4 -0
  100. package/dist/esm/basic-chart/basic-chart.d.ts +1 -1
  101. package/dist/esm/basic-chart/basic-chart.d.ts.map +1 -1
  102. package/dist/esm/basic-chart/basic-chart.js +680 -178
  103. package/dist/esm/components/dialogs/pivot-chart-dialog.d.ts +39 -0
  104. package/dist/esm/components/dialogs/pivot-chart-dialog.d.ts.map +1 -0
  105. package/dist/esm/components/dialogs/pivot-chart-dialog.js +89 -0
  106. package/dist/esm/components/editors/chart-editor.d.ts +13 -1
  107. package/dist/esm/components/editors/chart-editor.d.ts.map +1 -1
  108. package/dist/esm/components/editors/chart-editor.js +164 -20
  109. package/dist/esm/config.d.ts.map +1 -1
  110. package/dist/esm/config.js +149 -12
  111. package/dist/esm/hooks/use-charts.d.ts +21 -6
  112. package/dist/esm/hooks/use-charts.d.ts.map +1 -1
  113. package/dist/esm/hooks/use-charts.js +13 -1
  114. package/dist/esm/hooks/use-on-create-chart.d.ts.map +1 -1
  115. package/dist/esm/hooks/use-on-create-chart.js +7 -1
  116. package/dist/esm/hooks/use-on-move-chart-to-sheet.d.ts +12 -0
  117. package/dist/esm/hooks/use-on-move-chart-to-sheet.d.ts.map +1 -0
  118. package/dist/esm/hooks/use-on-move-chart-to-sheet.js +19 -0
  119. package/dist/esm/hooks/use-on-move-chart.d.ts +1 -1
  120. package/dist/esm/hooks/use-on-move-chart.d.ts.map +1 -1
  121. package/dist/esm/hooks/use-on-move-chart.js +2 -2
  122. package/dist/esm/hooks/use-on-resize-chart.d.ts +1 -1
  123. package/dist/esm/hooks/use-on-resize-chart.d.ts.map +1 -1
  124. package/dist/esm/hooks/use-on-resize-chart.js +2 -2
  125. package/dist/esm/index.d.ts +11 -0
  126. package/dist/esm/index.d.ts.map +1 -1
  127. package/dist/esm/index.js +14 -0
  128. package/dist/esm/interface/create-chart.d.ts.map +1 -1
  129. package/dist/esm/interface/create-chart.js +36 -58
  130. package/dist/esm/interface/delete-chart.d.ts.map +1 -1
  131. package/dist/esm/interface/delete-chart.js +4 -0
  132. package/dist/esm/interface/move-chart-to-sheet.d.ts +13 -0
  133. package/dist/esm/interface/move-chart-to-sheet.d.ts.map +1 -0
  134. package/dist/esm/interface/move-chart-to-sheet.js +126 -0
  135. package/dist/esm/interface/move-chart.d.ts +2 -2
  136. package/dist/esm/interface/move-chart.d.ts.map +1 -1
  137. package/dist/esm/interface/move-chart.js +7 -1
  138. package/dist/esm/interface/resize-chart.d.ts +2 -2
  139. package/dist/esm/interface/resize-chart.d.ts.map +1 -1
  140. package/dist/esm/interface/resize-chart.js +7 -1
  141. package/dist/esm/interface/update-chart.d.ts.map +1 -1
  142. package/dist/esm/interface/update-chart.js +4 -0
  143. package/dist/esm/plotly/basic-chart/basic-chart.d.ts +1 -1
  144. package/dist/esm/plotly/basic-chart/basic-chart.d.ts.map +1 -1
  145. package/dist/esm/plotly/basic-chart/basic-chart.js +858 -463
  146. package/dist/esm/plotly/basic-chart/helpers.d.ts.map +1 -1
  147. package/dist/esm/plotly/basic-chart/helpers.js +3 -0
  148. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
  149. package/dist/esm/types.d.ts +7 -0
  150. package/dist/esm/types.d.ts.map +1 -1
  151. package/dist/esm/utils/axis-number-format.d.ts +69 -0
  152. package/dist/esm/utils/axis-number-format.d.ts.map +1 -0
  153. package/dist/esm/utils/axis-number-format.js +170 -0
  154. package/dist/esm/utils/category-levels.d.ts +27 -0
  155. package/dist/esm/utils/category-levels.d.ts.map +1 -0
  156. package/dist/esm/utils/category-levels.js +65 -0
  157. package/dist/esm/utils/chart-image.d.ts +8 -0
  158. package/dist/esm/utils/chart-image.d.ts.map +1 -0
  159. package/dist/esm/utils/chart-image.js +24 -0
  160. package/dist/esm/utils/chart-orientation.d.ts +67 -0
  161. package/dist/esm/utils/chart-orientation.d.ts.map +1 -0
  162. package/dist/esm/utils/chart-orientation.js +234 -0
  163. package/dist/esm/utils/chart-spec-utils.d.ts +3 -0
  164. package/dist/esm/utils/chart-spec-utils.d.ts.map +1 -1
  165. package/dist/esm/utils/chart-spec-utils.js +10 -2
  166. package/dist/esm/utils/chart-styles.d.ts +75 -0
  167. package/dist/esm/utils/chart-styles.d.ts.map +1 -0
  168. package/dist/esm/utils/chart-styles.js +357 -0
  169. package/dist/esm/utils/empty-cells.d.ts +30 -0
  170. package/dist/esm/utils/empty-cells.d.ts.map +1 -0
  171. package/dist/esm/utils/empty-cells.js +67 -0
  172. package/dist/esm/utils/overrides.d.ts +6 -1
  173. package/dist/esm/utils/overrides.d.ts.map +1 -1
  174. package/dist/esm/utils/overrides.js +14 -2
  175. package/dist/esm/utils/pie-explosion.d.ts +30 -0
  176. package/dist/esm/utils/pie-explosion.d.ts.map +1 -0
  177. package/dist/esm/utils/pie-explosion.js +43 -0
  178. package/dist/esm/utils/plotly-click.d.ts +34 -0
  179. package/dist/esm/utils/plotly-click.d.ts.map +1 -0
  180. package/dist/esm/utils/plotly-click.js +44 -0
  181. package/dist/esm/utils/plotly-surface.d.ts +14 -0
  182. package/dist/esm/utils/plotly-surface.d.ts.map +1 -0
  183. package/dist/esm/utils/plotly-surface.js +45 -0
  184. package/dist/esm/utils/plotly-title.d.ts +12 -0
  185. package/dist/esm/utils/plotly-title.d.ts.map +1 -0
  186. package/dist/esm/utils/plotly-title.js +20 -0
  187. package/dist/esm/utils/series-click.d.ts +39 -0
  188. package/dist/esm/utils/series-click.d.ts.map +1 -0
  189. package/dist/esm/utils/series-click.js +66 -0
  190. package/dist/esm/utils/three-d.d.ts +17 -1
  191. package/dist/esm/utils/three-d.d.ts.map +1 -1
  192. package/dist/esm/utils/three-d.js +29 -3
  193. package/package.json +10 -6
@@ -1,3 +1,4 @@
1
+ import { DEFAULT_PIE_EXPLOSION } from "./utils/pie-explosion";
1
2
  // Excel's 3-D chart classes degrade to a 2-D chartType with the authored
2
3
  // class kept as `sourceChartType` (BAR_3D, LINE_3D, PIE_3D, AREA_3D,
3
4
  // SURFACE, SURFACE_3D). The renderer draws BAR_3D / LINE_3D / AREA_3D /
@@ -5,14 +6,85 @@
5
6
  // 2-D pie) and both exporters write the matching `<c:…3DChart>` element.
6
7
  // A 2-D preset in the same family carries no token, and mergeChartSpec
7
8
  // clears a picker-authored one on that pick.
9
+ //
10
+ // Every preset in a family sets every field that distinguishes its
11
+ // siblings (PRESET_DISCRIMINATORS): a preset that omits one keeps whatever
12
+ // the previous pick left behind — rowsncolumns/spreadsheet#85 was "Line"
13
+ // staying stacked after "Stacked line" because it never wrote stackedType.
8
14
  const LINE_CHART_TYPES = [
9
- ["Line", { chartType: "line", smooth: false }],
15
+ [
16
+ "Line",
17
+ {
18
+ chartType: "line",
19
+ smooth: false,
20
+ stackedType: "UNSTACKED",
21
+ showMarkers: false,
22
+ },
23
+ ],
10
24
  [
11
25
  "Stacked line",
12
- { chartType: "line", smooth: false, stackedType: "STACKED" },
26
+ {
27
+ chartType: "line",
28
+ smooth: false,
29
+ stackedType: "STACKED",
30
+ showMarkers: false,
31
+ },
32
+ ],
33
+ [
34
+ "100% stacked line",
35
+ {
36
+ chartType: "line",
37
+ smooth: false,
38
+ stackedType: "PERCENT_STACKED",
39
+ showMarkers: false,
40
+ },
41
+ ],
42
+ [
43
+ "Line with markers",
44
+ {
45
+ chartType: "line",
46
+ smooth: false,
47
+ stackedType: "UNSTACKED",
48
+ showMarkers: true,
49
+ },
50
+ ],
51
+ [
52
+ "Stacked line with markers",
53
+ {
54
+ chartType: "line",
55
+ smooth: false,
56
+ stackedType: "STACKED",
57
+ showMarkers: true,
58
+ },
59
+ ],
60
+ [
61
+ "100% stacked line with markers",
62
+ {
63
+ chartType: "line",
64
+ smooth: false,
65
+ stackedType: "PERCENT_STACKED",
66
+ showMarkers: true,
67
+ },
68
+ ],
69
+ [
70
+ "Smooth line",
71
+ {
72
+ chartType: "line",
73
+ smooth: true,
74
+ stackedType: "UNSTACKED",
75
+ showMarkers: false,
76
+ },
77
+ ],
78
+ [
79
+ "3-D Line",
80
+ {
81
+ chartType: "line",
82
+ smooth: false,
83
+ stackedType: "UNSTACKED",
84
+ showMarkers: false,
85
+ sourceChartType: "LINE_3D",
86
+ },
13
87
  ],
14
- ["Smooth line", { chartType: "line", smooth: true }],
15
- ["3-D Line", { chartType: "line", smooth: false, sourceChartType: "LINE_3D" }],
16
88
  ];
17
89
  const COLUMN_CHART_TYPES = [
18
90
  ["Clustered Column", { chartType: "column", stackedType: "UNSTACKED" }],
@@ -25,6 +97,18 @@ const COLUMN_CHART_TYPES = [
25
97
  "3-D Column",
26
98
  { chartType: "column", stackedType: "UNSTACKED", sourceChartType: "BAR_3D" },
27
99
  ],
100
+ [
101
+ "3-D Stacked column",
102
+ { chartType: "column", stackedType: "STACKED", sourceChartType: "BAR_3D" },
103
+ ],
104
+ [
105
+ "3-D 100% stacked column",
106
+ {
107
+ chartType: "column",
108
+ stackedType: "PERCENT_STACKED",
109
+ sourceChartType: "BAR_3D",
110
+ },
111
+ ],
28
112
  ];
29
113
  const BAR_CHART_TYPES = [
30
114
  ["Clustered Bar", { chartType: "bar", stackedType: "UNSTACKED" }],
@@ -34,6 +118,18 @@ const BAR_CHART_TYPES = [
34
118
  "3-D Bar",
35
119
  { chartType: "bar", stackedType: "UNSTACKED", sourceChartType: "BAR_3D" },
36
120
  ],
121
+ [
122
+ "3-D Stacked Bar",
123
+ { chartType: "bar", stackedType: "STACKED", sourceChartType: "BAR_3D" },
124
+ ],
125
+ [
126
+ "3-D 100% stacked Bar",
127
+ {
128
+ chartType: "bar",
129
+ stackedType: "PERCENT_STACKED",
130
+ sourceChartType: "BAR_3D",
131
+ },
132
+ ],
37
133
  ];
38
134
  const AREA_CHART_TYPES = [
39
135
  ["Area", { chartType: "area", stackedType: "UNSTACKED" }],
@@ -50,16 +146,43 @@ const SURFACE_CHART_TYPES = [
50
146
  ["3-D Surface", { chartType: "area", sourceChartType: "SURFACE_3D" }],
51
147
  ["Contour", { chartType: "area", sourceChartType: "SURFACE" }],
52
148
  ];
149
+ // Pie presets set `explosion` explicitly (0 vs Excel's 25) so picking
150
+ // "2D Pie" after "Exploded pie" pulls the slices back together.
53
151
  const PIE_CHART_TYPES = [
54
152
  [
55
153
  "2D Pie",
56
- { chartType: "pie", stackedType: "UNSTACKED", radius: [0, "75%"] },
154
+ {
155
+ chartType: "pie",
156
+ stackedType: "UNSTACKED",
157
+ radius: [0, "75%"],
158
+ explosion: 0,
159
+ },
160
+ ],
161
+ [
162
+ "Exploded pie",
163
+ {
164
+ chartType: "pie",
165
+ stackedType: "UNSTACKED",
166
+ radius: [0, "75%"],
167
+ explosion: DEFAULT_PIE_EXPLOSION,
168
+ },
57
169
  ],
58
170
  // A first-class doughnut token. The hole is controlled by
59
171
  // spec.doughnutHoleSize (0-1 fraction, renderer default 0.5) via the
60
172
  // editor's "Chart options" section; the preset deliberately omits it
61
173
  // so re-picking "Doughnut" never clobbers an authored hole size.
62
- ["Doughnut", { chartType: "doughnut", stackedType: "UNSTACKED" }],
174
+ [
175
+ "Doughnut",
176
+ { chartType: "doughnut", stackedType: "UNSTACKED", explosion: 0 },
177
+ ],
178
+ [
179
+ "Exploded doughnut",
180
+ {
181
+ chartType: "doughnut",
182
+ stackedType: "UNSTACKED",
183
+ explosion: DEFAULT_PIE_EXPLOSION,
184
+ },
185
+ ],
63
186
  [
64
187
  "3-D Pie",
65
188
  {
@@ -123,9 +246,13 @@ const RADAR_CHART_TYPES = [
123
246
  ["Radar with markers", { chartType: "radar", radarStyle: "marker" }],
124
247
  ["Filled radar", { chartType: "radar", radarStyle: "filled" }],
125
248
  ];
249
+ // Excel's four stock layouts, named by the series they take in order.
250
+ // The V-variants lead with a volume series drawn as a column sub-pane.
126
251
  const STOCK_CHART_TYPES = [
127
252
  ["Stock (HLC)", { chartType: "stock", stockVariant: "HLC" }],
128
253
  ["Stock (OHLC)", { chartType: "stock", stockVariant: "OHLC" }],
254
+ ["Stock (VHLC)", { chartType: "stock", stockVariant: "VHLC" }],
255
+ ["Stock (VOHLC)", { chartType: "stock", stockVariant: "VOHLC" }],
129
256
  ];
130
257
  export const CHART_TYPES = [
131
258
  ["Bar", BAR_CHART_TYPES],
@@ -175,16 +302,20 @@ export const isDoughnutSpec = (spec) => {
175
302
  /**
176
303
  * Fields that distinguish presets sharing a chartType, with the value
177
304
  * an absent field is equivalent to (e.g. no stackedType renders
178
- * unstacked, so `{ chartType: "column" }` is "Clustered Column").
305
+ * unstacked, so `{ chartType: "column" }` is "Clustered Column"). An
306
+ * optional normalizer folds a range of authored values onto the preset's
307
+ * (any explosion percentage is "exploded").
179
308
  */
180
309
  const PRESET_DISCRIMINATORS = [
181
310
  ["stackedType", "UNSTACKED"],
182
311
  ["smooth", false],
312
+ ["showMarkers", false],
183
313
  ["radarStyle", "standard"],
184
314
  ["stockVariant", "HLC"],
185
315
  // 3-D / of-pie variants share a chartType with their 2-D preset.
186
316
  ["sourceChartType", undefined],
187
317
  ["ofPieType", "pie"],
318
+ ["explosion", 0, (value) => typeof value === "number" && value > 0],
188
319
  ];
189
320
  /**
190
321
  * Derive the picker label for an existing spec — the inverse of the
@@ -194,20 +325,26 @@ const PRESET_DISCRIMINATORS = [
194
325
  * Falls back to the capitalized chartType when no preset matches.
195
326
  */
196
327
  export const getChartPresetLabel = (spec) => {
328
+ const loose = spec;
197
329
  // Doughnut first — it has several encodings (see isDoughnutSpec) and
198
330
  // the legacy pie-based ones would otherwise match the pie presets.
199
- if (isDoughnutSpec(spec))
200
- return "Doughnut";
201
- const loose = spec;
331
+ if (isDoughnutSpec(spec)) {
332
+ const explosion = loose.explosion;
333
+ return typeof explosion === "number" && explosion > 0
334
+ ? "Exploded doughnut"
335
+ : "Doughnut";
336
+ }
202
337
  for (const [, presets] of CHART_TYPES) {
203
338
  for (const [name, config] of presets) {
204
339
  if (config.chartType !== spec.chartType)
205
340
  continue;
206
341
  const looseConfig = config;
207
- const matches = PRESET_DISCRIMINATORS.every(([key, absentValue]) => {
342
+ const matches = PRESET_DISCRIMINATORS.every(([key, absentValue, normalize]) => {
208
343
  const presetValue = looseConfig[key] ?? absentValue;
209
344
  const specValue = loose[key] ?? absentValue;
210
- return presetValue === specValue;
345
+ return normalize
346
+ ? normalize(presetValue) === normalize(specValue)
347
+ : presetValue === specValue;
211
348
  });
212
349
  if (matches)
213
350
  return name;
@@ -1,10 +1,24 @@
1
- import type { EmbeddedChart } from "@rowsncolumns/spreadsheet";
2
- import type { UseSpreadsheetProps, useSpreadsheetState } from "@rowsncolumns/spreadsheet-state";
3
- export type UseChartsProps = {
1
+ import type { EmbeddedChart, Sheet } from "@rowsncolumns/spreadsheet";
2
+ import type { GeneratedNames, UseSpreadsheetProps, useSpreadsheetState } from "@rowsncolumns/spreadsheet-state";
3
+ export type UseChartsProps<S extends Sheet = Sheet> = {
4
4
  /**
5
5
  * Callback when chart state is changed
6
6
  */
7
7
  onChangeCharts?: React.Dispatch<React.SetStateAction<EmbeddedChart[]>>;
8
+ /**
9
+ * Callback when sheets change. Required for `onMoveChartToSheet` (Excel's
10
+ * "Move Chart…"), which adds / removes chartsheets.
11
+ */
12
+ onChangeSheets?: React.Dispatch<React.SetStateAction<S[]>>;
13
+ /**
14
+ * Switch the active sheet — `onMoveChartToSheet` follows the chart to its
15
+ * destination sheet like Excel.
16
+ */
17
+ onChangeActiveSheet?: (sheetId: number) => void;
18
+ /**
19
+ * Generated-name formatters (`Chart1` for a new chartsheet).
20
+ */
21
+ generatedNames?: GeneratedNames;
8
22
  /**
9
23
  * Create a spreadsheet history
10
24
  */
@@ -22,14 +36,15 @@ export type UseChartsProps = {
22
36
  */
23
37
  idCreationStrategy?: UseSpreadsheetProps["idCreationStrategy"];
24
38
  };
25
- export declare const useCharts: ({ onChangeCharts, getFormattedValue, getEffectiveValue, createHistory, idCreationStrategy, }: UseChartsProps) => {
39
+ export declare const useCharts: <S extends Sheet = Sheet>({ onChangeCharts, onChangeSheets, onChangeActiveSheet, getFormattedValue, getEffectiveValue, createHistory, idCreationStrategy, generatedNames, }: UseChartsProps<S>) => {
26
40
  selectedChart: EmbeddedChart | undefined;
27
41
  onRequestEditChart: (chart: EmbeddedChart) => void;
28
42
  updateSelectedChartPosition: (chartId: string | number, overlayPosition: Partial<import("@rowsncolumns/spreadsheet").OverlayPosition>) => void;
29
43
  onCreateChart: (sheetId: number, activeCell: import("@rowsncolumns/grid").CellInterface, selections: import("@rowsncolumns/grid").SelectionArea<import("@rowsncolumns/spreadsheet").SelectionAttributes>[], chartSpec?: EmbeddedChart) => EmbeddedChart;
30
44
  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;
45
+ onMoveChart: (chartId: string | number, anchorCell: import("@rowsncolumns/grid").CellInterface, offsetXPixels: number, offsetYPixels: number, toAnchor?: import("@rowsncolumns/spreadsheet").OverlayToAnchor) => void;
46
+ onMoveChartToSheet: ((chart: EmbeddedChart, target: import("@rowsncolumns/spreadsheet").MoveChartTarget) => number | undefined) | undefined;
47
+ onResizeChart: (chartId: string | number, anchorCell: import("@rowsncolumns/grid").CellInterface, offsetXPixels: number, offsetYPixels: number, width: number, height: number, toAnchor?: import("@rowsncolumns/spreadsheet").OverlayToAnchor) => void;
33
48
  onUpdateChart: (chart: EmbeddedChart) => void;
34
49
  };
35
50
  //# sourceMappingURL=use-charts.d.ts.map
@@ -1 +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"}
1
+ {"version":3,"file":"use-charts.d.ts","sourceRoot":"","sources":["../../../hooks/use-charts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAGV,aAAa,EACb,KAAK,EACN,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EACV,cAAc,EACd,mBAAmB,EACnB,mBAAmB,EACpB,MAAM,iCAAiC,CAAC;AAWzC,MAAM,MAAM,cAAc,CAAC,CAAC,SAAS,KAAK,GAAG,KAAK,IAAI;IACpD;;OAEG;IACH,cAAc,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;IACvE;;;OAGG;IACH,cAAc,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC3D;;;OAGG;IACH,mBAAmB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAChD;;OAEG;IACH,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC;;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,CAAC,SAAS,KAAK,GAAG,KAAK,EAAE,mJAShD,cAAc,CAAC,CAAC,CAAC;;;;;;;;;;CAwFnB,CAAC"}
@@ -2,10 +2,11 @@ import { useCallback } from "react";
2
2
  import { useChartEditor } from "./use-chart-editor";
3
3
  import { useOnDeleteChart } from "./use-on-delete-chart";
4
4
  import { useOnMoveChart } from "./use-on-move-chart";
5
+ import { useOnMoveChartToSheet } from "./use-on-move-chart-to-sheet";
5
6
  import { useOnResizeChart } from "./use-on-resize-chart";
6
7
  import { useOnUpdateChart } from "./use-on-update-chart";
7
8
  import { useOnCreateChart } from "./use-on-create-chart";
8
- export const useCharts = ({ onChangeCharts, getFormattedValue, getEffectiveValue, createHistory, idCreationStrategy, }) => {
9
+ export const useCharts = ({ onChangeCharts, onChangeSheets, onChangeActiveSheet, getFormattedValue, getEffectiveValue, createHistory, idCreationStrategy, generatedNames, }) => {
9
10
  const { selectedChart, onRequestEditChart, updateSelectedChartPosition } = useChartEditor();
10
11
  const onDeleteChart = useOnDeleteChart({
11
12
  onChangeCharts,
@@ -42,6 +43,15 @@ export const useCharts = ({ onChangeCharts, getFormattedValue, getEffectiveValue
42
43
  onChangeCharts,
43
44
  createHistory,
44
45
  });
46
+ const handleMoveChartToSheet = useOnMoveChartToSheet({
47
+ onChangeCharts,
48
+ onChangeSheets: onChangeSheets ?? noopDispatch,
49
+ onChangeActiveSheet,
50
+ createHistory,
51
+ idCreationStrategy,
52
+ generatedNames,
53
+ });
54
+ const onMoveChartToSheet = onChangeSheets ? handleMoveChartToSheet : undefined;
45
55
  const onCreateChart = useOnCreateChart({
46
56
  onChangeCharts,
47
57
  createHistory,
@@ -56,7 +66,9 @@ export const useCharts = ({ onChangeCharts, getFormattedValue, getEffectiveValue
56
66
  onCreateChart,
57
67
  onDeleteChart,
58
68
  onMoveChart,
69
+ onMoveChartToSheet,
59
70
  onResizeChart,
60
71
  onUpdateChart,
61
72
  };
62
73
  };
74
+ const noopDispatch = () => { };
@@ -1 +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"}
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,EAEd,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,eAIZ,MAAM,cACH,aAAa,cACb,aAAa,CAAC,mBAAmB,CAAC,EAAE,cACpC,aAAa,kBAsB9B,CAAC"}
@@ -1,19 +1,25 @@
1
+ import { useFocusEmbedOrChart, } from "@rowsncolumns/spreadsheet";
1
2
  import { useCallback } from "react";
2
3
  import { createChart } from "../interface/create-chart";
3
4
  export const useOnCreateChart = ({ onChangeCharts, getFormattedValue, getEffectiveValue, createHistory, idCreationStrategy, }) => {
5
+ const focusEmbedOrChart = useFocusEmbedOrChart();
4
6
  return useCallback((sheetId, activeCell, selections, chartSpec) => {
5
- return createChart({
7
+ const chart = createChart({
6
8
  onChangeCharts,
7
9
  getFormattedValue,
8
10
  getEffectiveValue,
9
11
  createHistory,
10
12
  idCreationStrategy,
11
13
  })(sheetId, activeCell, selections, chartSpec);
14
+ // Excel selects a freshly inserted chart.
15
+ focusEmbedOrChart(chart.chartId);
16
+ return chart;
12
17
  }, [
13
18
  onChangeCharts,
14
19
  getFormattedValue,
15
20
  getEffectiveValue,
16
21
  createHistory,
17
22
  idCreationStrategy,
23
+ focusEmbedOrChart,
18
24
  ]);
19
25
  };
@@ -0,0 +1,12 @@
1
+ import type { CellData, EmbeddedChart, MoveChartTarget, Sheet } from "@rowsncolumns/spreadsheet";
2
+ import type { GeneratedNames, UseSpreadsheetProps, useSpreadsheetState } from "@rowsncolumns/spreadsheet-state";
3
+ export type UseOnMoveChartToSheetProps<T extends CellData, S extends Sheet = Sheet> = {
4
+ onChangeCharts: UseSpreadsheetProps<T>["onChangeCharts"];
5
+ onChangeSheets: React.Dispatch<React.SetStateAction<S[]>>;
6
+ onChangeActiveSheet?: (sheetId: number) => void;
7
+ createHistory: ReturnType<typeof useSpreadsheetState>["createHistory"];
8
+ idCreationStrategy?: UseSpreadsheetProps<T>["idCreationStrategy"];
9
+ generatedNames?: GeneratedNames;
10
+ };
11
+ export declare const useOnMoveChartToSheet: <T extends CellData, S extends Sheet = Sheet>({ onChangeCharts, onChangeSheets, onChangeActiveSheet, createHistory, idCreationStrategy, generatedNames, }: UseOnMoveChartToSheetProps<T, S>) => (chart: EmbeddedChart, target: MoveChartTarget) => number | undefined;
12
+ //# sourceMappingURL=use-on-move-chart-to-sheet.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-on-move-chart-to-sheet.d.ts","sourceRoot":"","sources":["../../../hooks/use-on-move-chart-to-sheet.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,QAAQ,EACR,aAAa,EACb,eAAe,EACf,KAAK,EACN,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EACV,cAAc,EACd,mBAAmB,EACnB,mBAAmB,EACpB,MAAM,iCAAiC,CAAC;AAKzC,MAAM,MAAM,0BAA0B,CACpC,CAAC,SAAS,QAAQ,EAClB,CAAC,SAAS,KAAK,GAAG,KAAK,IACrB;IACF,cAAc,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;IACzD,cAAc,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC1D,mBAAmB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAChD,aAAa,EAAE,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC,eAAe,CAAC,CAAC;IACvE,kBAAkB,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC;IAClE,cAAc,CAAC,EAAE,cAAc,CAAC;CACjC,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAChC,CAAC,SAAS,QAAQ,EAClB,CAAC,SAAS,KAAK,GAAG,KAAK,EACvB,6GAOC,0BAA0B,CAAC,CAAC,EAAE,CAAC,CAAC,aAEvB,aAAa,UAAU,eAAe,uBAkBjD,CAAC"}
@@ -0,0 +1,19 @@
1
+ import { useCallback } from "react";
2
+ import { moveChartToSheet } from "../interface/move-chart-to-sheet";
3
+ export const useOnMoveChartToSheet = ({ onChangeCharts, onChangeSheets, onChangeActiveSheet, createHistory, idCreationStrategy, generatedNames, }) => {
4
+ return useCallback((chart, target) => moveChartToSheet({
5
+ onChangeCharts,
6
+ onChangeSheets,
7
+ onChangeActiveSheet,
8
+ createHistory,
9
+ idCreationStrategy,
10
+ generatedNames,
11
+ })(chart, target), [
12
+ onChangeCharts,
13
+ onChangeSheets,
14
+ onChangeActiveSheet,
15
+ createHistory,
16
+ idCreationStrategy,
17
+ generatedNames,
18
+ ]);
19
+ };
@@ -4,5 +4,5 @@ export type UseOnMoveChartProps<T extends CellData> = {
4
4
  onChangeCharts: UseSpreadsheetProps<T>["onChangeCharts"];
5
5
  createHistory: ReturnType<typeof useSpreadsheetState>["createHistory"];
6
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;
7
+ export declare const useOnMoveChart: <T extends CellData>({ onChangeCharts, createHistory, }: UseOnMoveChartProps<T>) => (chartId: string | number, anchorCell: import("@rowsncolumns/grid").CellInterface, offsetXPixels: number, offsetYPixels: number, toAnchor?: import("@rowsncolumns/spreadsheet").OverlayToAnchor) => void;
8
8
  //# sourceMappingURL=use-on-move-chart.d.ts.map
@@ -1 +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"}
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,6MAUxB,CAAC"}
@@ -1,10 +1,10 @@
1
1
  import { useCallback } from "react";
2
2
  import { moveChart } from "../interface/move-chart";
3
3
  export const useOnMoveChart = ({ onChangeCharts, createHistory, }) => {
4
- return useCallback((chartId, anchorCell, offsetXPixels, offsetYPixels) => {
4
+ return useCallback((chartId, anchorCell, offsetXPixels, offsetYPixels, toAnchor) => {
5
5
  moveChart({
6
6
  onChangeCharts,
7
7
  createHistory,
8
- })(chartId, anchorCell, offsetXPixels, offsetYPixels);
8
+ })(chartId, anchorCell, offsetXPixels, offsetYPixels, toAnchor);
9
9
  }, [onChangeCharts, createHistory]);
10
10
  };
@@ -4,5 +4,5 @@ export type UseOnResizeChartProps<T extends CellData> = {
4
4
  onChangeCharts: UseSpreadsheetProps<T>["onChangeCharts"];
5
5
  createHistory: ReturnType<typeof useSpreadsheetState>["createHistory"];
6
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;
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, toAnchor?: import("@rowsncolumns/spreadsheet").OverlayToAnchor) => void;
8
8
  //# sourceMappingURL=use-on-resize-chart.d.ts.map
@@ -1 +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"}
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,4OA0B1B,CAAC"}
@@ -1,10 +1,10 @@
1
1
  import { useCallback } from "react";
2
2
  import { resizeChart } from "../interface/resize-chart";
3
3
  export const useOnResizeChart = ({ onChangeCharts, createHistory, }) => {
4
- return useCallback((chartId, anchorCell, offsetXPixels, offsetYPixels, width, height) => {
4
+ return useCallback((chartId, anchorCell, offsetXPixels, offsetYPixels, width, height, toAnchor) => {
5
5
  resizeChart({
6
6
  onChangeCharts,
7
7
  createHistory,
8
- })(chartId, anchorCell, offsetXPixels, offsetYPixels, width, height);
8
+ })(chartId, anchorCell, offsetXPixels, offsetYPixels, width, height, toAnchor);
9
9
  }, [onChangeCharts, createHistory]);
10
10
  };
@@ -2,11 +2,22 @@ export * from "./hooks/use-charts";
2
2
  export * from "./components/dialogs/chart-editor-dialog";
3
3
  export * from "./components/editors/chart-editor";
4
4
  export * from "./basic-chart";
5
+ export { canSwitchRowColumn, deriveChartSeriesFromRange, inferSeriesOrientation, pickSeriesOrientationForRange, switchRowColumn, } from "./utils/chart-orientation";
6
+ export type { ChartCellLabelGetter, SeriesOrientation, } from "./utils/chart-orientation";
7
+ export { applyEmptyCellsPolicy, connectsAcrossEmptyCells, getEmptyCellsPolicy, } from "./utils/empty-cells";
8
+ export type { EmptyCellsPolicy } from "./utils/empty-cells";
5
9
  export { registerChartGeoMap } from "./utils/region-map-loader";
6
10
  export * from "./interface/create-chart";
7
11
  export * from "./interface/delete-chart";
8
12
  export * from "./interface/move-chart";
13
+ export * from "./interface/move-chart-to-sheet";
14
+ export * from "./hooks/use-on-move-chart-to-sheet";
9
15
  export * from "./interface/resize-chart";
10
16
  export * from "./interface/shift-chart-ranges";
11
17
  export * from "./interface/update-chart";
18
+ export { applyChartColorPalette, applyChartQuickLayout, applyChartStyle, CHART_COLOR_PALETTES, CHART_QUICK_LAYOUTS, CHART_STYLES, getChartPalette, resetChartToMatchStyle, } from "./utils/chart-styles";
19
+ export type { ChartColorPalette, ChartQuickLayout, ChartStylePreset, } from "./utils/chart-styles";
20
+ export * from "./components/dialogs/pivot-chart-dialog";
21
+ export { pivotChartRequestAtom, usePivotChartRequest, useSetPivotChartRequest, } from "./atoms/pivot-chart.atom";
22
+ export type { PivotChartRequest } from "./atoms/pivot-chart.atom";
12
23
  //# sourceMappingURL=index.d.ts.map
@@ -1 +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,gCAAgC,CAAC;AAC/C,cAAc,0BAA0B,CAAC"}
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,EACL,kBAAkB,EAClB,0BAA0B,EAC1B,sBAAsB,EACtB,6BAA6B,EAC7B,eAAe,GAChB,MAAM,2BAA2B,CAAC;AACnC,YAAY,EACV,oBAAoB,EACpB,iBAAiB,GAClB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,qBAAqB,EACrB,wBAAwB,EACxB,mBAAmB,GACpB,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAI5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAGhE,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,iCAAiC,CAAC;AAChD,cAAc,oCAAoC,CAAC;AACnD,cAAc,0BAA0B,CAAC;AACzC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,0BAA0B,CAAC;AAKzC,OAAO,EACL,sBAAsB,EACtB,qBAAqB,EACrB,eAAe,EACf,oBAAoB,EACpB,mBAAmB,EACnB,YAAY,EACZ,eAAe,EACf,sBAAsB,GACvB,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EACV,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,sBAAsB,CAAC;AAI9B,cAAc,yCAAyC,CAAC;AACxD,OAAO,EACL,qBAAqB,EACrB,oBAAoB,EACpB,uBAAuB,GACxB,MAAM,0BAA0B,CAAC;AAClC,YAAY,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC"}
package/dist/esm/index.js CHANGED
@@ -2,6 +2,10 @@ export * from "./hooks/use-charts";
2
2
  export * from "./components/dialogs/chart-editor-dialog";
3
3
  export * from "./components/editors/chart-editor";
4
4
  export * from "./basic-chart";
5
+ // Series orientation (Excel's Switch Row/Column) and the "Hidden and
6
+ // Empty Cells" policy — pure spec utilities hosts can drive themselves.
7
+ export { canSwitchRowColumn, deriveChartSeriesFromRange, inferSeriesOrientation, pickSeriesOrientationForRange, switchRowColumn, } from "./utils/chart-orientation";
8
+ export { applyEmptyCellsPolicy, connectsAcrossEmptyCells, getEmptyCellsPolicy, } from "./utils/empty-cells";
5
9
  // Region-map (filled map / choropleth) host API — register additional
6
10
  // geo scopes (e.g. a US-states GeoJSON) for `chartType: "regionMap"`.
7
11
  export { registerChartGeoMap } from "./utils/region-map-loader";
@@ -9,6 +13,16 @@ export { registerChartGeoMap } from "./utils/region-map-loader";
9
13
  export * from "./interface/create-chart";
10
14
  export * from "./interface/delete-chart";
11
15
  export * from "./interface/move-chart";
16
+ export * from "./interface/move-chart-to-sheet";
17
+ export * from "./hooks/use-on-move-chart-to-sheet";
12
18
  export * from "./interface/resize-chart";
13
19
  export * from "./interface/shift-chart-ranges";
14
20
  export * from "./interface/update-chart";
21
+ // Excel's Chart Design tab as spec transforms — Chart Styles, Change
22
+ // Colors, Quick Layouts, Reset to Match Style — and the palette both
23
+ // renderers resolve series colours through.
24
+ export { applyChartColorPalette, applyChartQuickLayout, applyChartStyle, CHART_COLOR_PALETTES, CHART_QUICK_LAYOUTS, CHART_STYLES, getChartPalette, resetChartToMatchStyle, } from "./utils/chart-styles";
25
+ // Excel's Insert → PivotChart: the pick-a-pivot dialog and the request atom
26
+ // hosts drive it with (#668 C-23).
27
+ export * from "./components/dialogs/pivot-chart-dialog";
28
+ export { pivotChartRequestAtom, usePivotChartRequest, useSetPivotChartRequest, } from "./atoms/pivot-chart.atom";
@@ -1 +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"}
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;AAiB1E;;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,kBAuH5B,CAAC"}