@carto/ps-react-ui 4.20.0 → 4.20.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (414) hide show
  1. package/dist/actions-DKX98LlI.js +1318 -0
  2. package/dist/actions-DKX98LlI.js.map +1 -0
  3. package/dist/actions-Dy9JVr7F.js +1004 -0
  4. package/dist/actions-Dy9JVr7F.js.map +1 -0
  5. package/dist/category-DHZscHaS.js +826 -0
  6. package/dist/category-DHZscHaS.js.map +1 -0
  7. package/dist/chart-config-BGt7wkK7.js +108 -0
  8. package/dist/chart-config-BGt7wkK7.js.map +1 -0
  9. package/dist/chat.js +1589 -1711
  10. package/dist/chat.js.map +1 -1
  11. package/dist/cjs-CBrZjPCj.js +75 -0
  12. package/dist/cjs-CBrZjPCj.js.map +1 -0
  13. package/dist/components-DDt4mOQn.js +2403 -0
  14. package/dist/components-DDt4mOQn.js.map +1 -0
  15. package/dist/components.js +5 -1841
  16. package/dist/copy-button-DaQqWVu0.js +25 -0
  17. package/dist/copy-button-DaQqWVu0.js.map +1 -0
  18. package/dist/csv-modifiers-D6HGC24b.js +26 -0
  19. package/dist/csv-modifiers-D6HGC24b.js.map +1 -0
  20. package/dist/download-BT6qBamM.js +232 -0
  21. package/dist/download-BT6qBamM.js.map +1 -0
  22. package/dist/echart-BkaV3V5G.js +133 -0
  23. package/dist/echart-BkaV3V5G.js.map +1 -0
  24. package/dist/echart-DSz2Tu0z.js +250 -0
  25. package/dist/echart-DSz2Tu0z.js.map +1 -0
  26. package/dist/formatter-wVO81tYk.js +6 -0
  27. package/dist/formatter-wVO81tYk.js.map +1 -0
  28. package/dist/formula-Bk9CBzm2.js +190 -0
  29. package/dist/formula-Bk9CBzm2.js.map +1 -0
  30. package/dist/formula-Dsru_p-g.js +285 -0
  31. package/dist/formula-Dsru_p-g.js.map +1 -0
  32. package/dist/hooks-zf5gKZYq.js +22 -0
  33. package/dist/hooks-zf5gKZYq.js.map +1 -0
  34. package/dist/legend/stores.js +2 -24
  35. package/dist/legend.js +2274 -2323
  36. package/dist/legend.js.map +1 -1
  37. package/dist/markdown-DnSJMPjQ.js +165 -0
  38. package/dist/markdown-DnSJMPjQ.js.map +1 -0
  39. package/dist/markdown-content-BzKoX3eu.js +8764 -0
  40. package/dist/markdown-content-BzKoX3eu.js.map +1 -0
  41. package/dist/range-BPWVrAsY.js +277 -0
  42. package/dist/range-BPWVrAsY.js.map +1 -0
  43. package/dist/rolldown-runtime-B0aSnxlc.js +20 -0
  44. package/dist/row-CvVGBuy_.js +35 -0
  45. package/dist/row-CvVGBuy_.js.map +1 -0
  46. package/dist/shared-resize-observer-BEiP2rQt.js +157 -0
  47. package/dist/shared-resize-observer-BEiP2rQt.js.map +1 -0
  48. package/dist/smart-tooltip-CwGHCqab.js +34 -0
  49. package/dist/smart-tooltip-CwGHCqab.js.map +1 -0
  50. package/dist/spread-Dy8pshpN.js +149 -0
  51. package/dist/spread-Dy8pshpN.js.map +1 -0
  52. package/dist/stores-B81-IU1G.js +374 -0
  53. package/dist/stores-B81-IU1G.js.map +1 -0
  54. package/dist/stores-BVFMfgyo.js +248 -0
  55. package/dist/stores-BVFMfgyo.js.map +1 -0
  56. package/dist/styles-Y-qGBELO.js +13 -0
  57. package/dist/styles-Y-qGBELO.js.map +1 -0
  58. package/dist/table-BfTG6rrs.js +439 -0
  59. package/dist/table-BfTG6rrs.js.map +1 -0
  60. package/dist/tooltip-DJUGNZxY.js +23 -0
  61. package/dist/tooltip-DJUGNZxY.js.map +1 -0
  62. package/dist/types/chat/bubbles/chat-agent-message-markdown.d.ts +1 -1
  63. package/dist/types/chat/bubbles/chat-error-message.d.ts +1 -1
  64. package/dist/types/chat/bubbles/chat-suggestion-button.d.ts +1 -1
  65. package/dist/types/chat/bubbles/chat-user-message.d.ts +1 -1
  66. package/dist/types/chat/containers/chat-footer.d.ts +1 -1
  67. package/dist/types/chat/containers/chat-header.d.ts +1 -1
  68. package/dist/types/chat/containers/chat-starter.d.ts +1 -1
  69. package/dist/types/chat/feedback/chat-loader.d.ts +1 -1
  70. package/dist/types/chat/feedback/chat-rating-action.d.ts +1 -1
  71. package/dist/types/chat/feedback/chat-thinking.d.ts +1 -1
  72. package/dist/types/chat/feedback/chat-tool-code-area.d.ts +1 -1
  73. package/dist/types/chat/feedback/chat-tool-full-view-dialog.d.ts +1 -1
  74. package/dist/types/chat/feedback/chat-tool-group.d.ts +1 -1
  75. package/dist/types/chat/feedback/chat-tool-trace.d.ts +2 -2
  76. package/dist/types/components/basemaps/group-wrapper.d.ts +1 -1
  77. package/dist/types/components/basemaps/group.d.ts +1 -1
  78. package/dist/types/components/basemaps/header.d.ts +1 -1
  79. package/dist/types/components/copy-button/copy-button.d.ts +1 -1
  80. package/dist/types/components/lasso-tool/chip.d.ts +1 -1
  81. package/dist/types/components/lasso-tool/icons.d.ts +7 -7
  82. package/dist/types/components/lasso-tool/lasso-tool.d.ts +4 -4
  83. package/dist/types/components/lasso-tool/message.d.ts +1 -1
  84. package/dist/types/components/list-data/list-data-skeleton.d.ts +1 -1
  85. package/dist/types/components/measurement-tools/icons.d.ts +3 -3
  86. package/dist/types/components/no-data-alert/no-data-alert.d.ts +1 -1
  87. package/dist/types/components/responsive-drawer/responsive-drawer.d.ts +1 -1
  88. package/dist/types/components/smart-tooltip/smart-tooltip.d.ts +1 -1
  89. package/dist/types/components/tooltip/tooltip.d.ts +1 -1
  90. package/dist/types/hooks/use-widget-ref.d.ts +2 -1
  91. package/dist/types/legend/components/legend-actions/legend-actions.d.ts +1 -1
  92. package/dist/types/legend/components/legend-category/legend-category-ui.d.ts +1 -1
  93. package/dist/types/legend/components/legend-config-select/legend-config-select.d.ts +1 -1
  94. package/dist/types/legend/components/legend-group/legend-group.d.ts +1 -1
  95. package/dist/types/legend/components/legend-group-menu/legend-group-menu-items.d.ts +4 -4
  96. package/dist/types/legend/components/legend-group-menu/legend-group-menu.d.ts +1 -1
  97. package/dist/types/legend/components/legend-icon/legend-icon-ui.d.ts +1 -1
  98. package/dist/types/legend/components/legend-item/legend-item-ui.d.ts +1 -1
  99. package/dist/types/legend/components/legend-item/legend-item.d.ts +1 -1
  100. package/dist/types/legend/components/legend-opacity/legend-opacity.d.ts +2 -2
  101. package/dist/types/legend/components/legend-overflow-menu/legend-overflow-menu.d.ts +1 -1
  102. package/dist/types/legend/components/legend-panel-menu/legend-panel-menu.d.ts +1 -1
  103. package/dist/types/legend/components/legend-proportion/legend-proportion-ui.d.ts +1 -1
  104. package/dist/types/legend/components/legend-ramp/legend-ramp-ui.d.ts +1 -1
  105. package/dist/types/legend/components/legend-row/legend-row.d.ts +1 -1
  106. package/dist/types/legend/components/legend-row-menu/legend-row-menu-items.d.ts +2 -2
  107. package/dist/types/legend/components/legend-row-menu/legend-row-menu.d.ts +1 -1
  108. package/dist/types/legend/components/legend-row-menu/legend-zoom-to.d.ts +1 -1
  109. package/dist/types/legend/components/legend-sortable/legend-sortable.d.ts +1 -1
  110. package/dist/types/legend/components/legend-swatch/legend-swatch.d.ts +1 -1
  111. package/dist/types/legend/components/legend-visibility-toggle/legend-visibility-toggle.d.ts +1 -1
  112. package/dist/types/legend/components/legend-visible-layers/legend-visible-layers.d.ts +1 -1
  113. package/dist/types/legend/index.d.ts +2 -2
  114. package/dist/types/legend/provider/legend-provider.d.ts +1 -1
  115. package/dist/types/widgets/actions/brush-toggle/brush-toggle.d.ts +1 -1
  116. package/dist/types/widgets/actions/change-column/change-column-icon.d.ts +1 -1
  117. package/dist/types/widgets/actions/change-column/change-column.d.ts +1 -1
  118. package/dist/types/widgets/actions/change-column/sortable-column-item.d.ts +1 -1
  119. package/dist/types/widgets/actions/download/download.d.ts +1 -1
  120. package/dist/types/widgets/actions/fullscreen/fullscreen.d.ts +1 -1
  121. package/dist/types/widgets/actions/lock-selection/lock-selection.d.ts +1 -1
  122. package/dist/types/widgets/actions/relative-data/relative-data.d.ts +1 -1
  123. package/dist/types/widgets/actions/searcher/searcher-toggle.d.ts +1 -1
  124. package/dist/types/widgets/actions/searcher/searcher.d.ts +1 -1
  125. package/dist/types/widgets/actions/stack-toggle/grouped-bar-chart-icon.d.ts +1 -1
  126. package/dist/types/widgets/actions/stack-toggle/stack-toggle.d.ts +1 -1
  127. package/dist/types/widgets/actions/zoom-toggle/zoom-toggle.d.ts +1 -1
  128. package/dist/types/widgets/bar/skeleton.d.ts +1 -1
  129. package/dist/types/widgets/category/category-ui.d.ts +1 -1
  130. package/dist/types/widgets/category/components/category-bar.d.ts +1 -1
  131. package/dist/types/widgets/category/components/category-legend.d.ts +1 -1
  132. package/dist/types/widgets/category/components/category-row-multi.d.ts +1 -1
  133. package/dist/types/widgets/category/components/category-row-other.d.ts +1 -1
  134. package/dist/types/widgets/category/components/category-row-single.d.ts +1 -1
  135. package/dist/types/widgets/category/skeleton.d.ts +1 -1
  136. package/dist/types/widgets/echart/echart-ui.d.ts +1 -1
  137. package/dist/types/widgets/echart/echart.d.ts +1 -1
  138. package/dist/types/widgets/error/error.d.ts +1 -1
  139. package/dist/types/widgets/formula/components/item.d.ts +1 -1
  140. package/dist/types/widgets/formula/components/prefix.d.ts +1 -1
  141. package/dist/types/widgets/formula/components/row.d.ts +1 -1
  142. package/dist/types/widgets/formula/components/series.d.ts +1 -1
  143. package/dist/types/widgets/formula/components/suffix.d.ts +1 -1
  144. package/dist/types/widgets/formula/components/value.d.ts +1 -1
  145. package/dist/types/widgets/formula/formula-ui.d.ts +1 -1
  146. package/dist/types/widgets/formula/skeleton.d.ts +1 -1
  147. package/dist/types/widgets/histogram/skeleton.d.ts +1 -1
  148. package/dist/types/widgets/markdown/markdown-ui.d.ts +1 -1
  149. package/dist/types/widgets/markdown/markdown.d.ts +1 -1
  150. package/dist/types/widgets/markdown/skeleton.d.ts +1 -1
  151. package/dist/types/widgets/no-data/no-data.d.ts +1 -1
  152. package/dist/types/widgets/note/note.d.ts +1 -1
  153. package/dist/types/widgets/pie/skeleton.d.ts +1 -1
  154. package/dist/types/widgets/range/components/range-item.d.ts +1 -1
  155. package/dist/types/widgets/range/range-ui.d.ts +1 -1
  156. package/dist/types/widgets/range/skeleton.d.ts +1 -1
  157. package/dist/types/widgets/scatterplot/skeleton.d.ts +1 -1
  158. package/dist/types/widgets/selection-summary/selection-summary.d.ts +1 -1
  159. package/dist/types/widgets/skeleton-loader/skeleton-loader.d.ts +1 -1
  160. package/dist/types/widgets/spread/components/max-value.d.ts +1 -1
  161. package/dist/types/widgets/spread/components/min-value.d.ts +1 -1
  162. package/dist/types/widgets/spread/components/separator.d.ts +1 -1
  163. package/dist/types/widgets/spread/skeleton.d.ts +1 -1
  164. package/dist/types/widgets/spread/spread-ui.d.ts +1 -1
  165. package/dist/types/widgets/subheader/subheader.d.ts +1 -1
  166. package/dist/types/widgets/table/components/cell-header.d.ts +1 -1
  167. package/dist/types/widgets/table/components/cell.d.ts +1 -1
  168. package/dist/types/widgets/table/components/pagination-actions.d.ts +1 -1
  169. package/dist/types/widgets/table/components/pagination.d.ts +1 -1
  170. package/dist/types/widgets/table/components/row.d.ts +1 -1
  171. package/dist/types/widgets/table/skeleton.d.ts +1 -1
  172. package/dist/types/widgets/table/table-ui.d.ts +2 -2
  173. package/dist/types/widgets/timeseries/skeleton.d.ts +1 -1
  174. package/dist/types/widgets/wrapper/components/actions.d.ts +1 -1
  175. package/dist/types/widgets/wrapper/components/options.d.ts +1 -1
  176. package/dist/types/widgets/wrapper/components/title.d.ts +1 -1
  177. package/dist/types/widgets/wrapper/wrapper-ui.d.ts +1 -1
  178. package/dist/types/widgets/wrapper/wrapper.d.ts +1 -1
  179. package/dist/types/widgets-v2/actions/brush-toggle/brush-toggle.d.ts +1 -1
  180. package/dist/types/widgets-v2/actions/change-column/change-column-icon.d.ts +1 -1
  181. package/dist/types/widgets-v2/actions/change-column/change-column.d.ts +1 -1
  182. package/dist/types/widgets-v2/actions/change-column/sortable-column-item.d.ts +1 -1
  183. package/dist/types/widgets-v2/actions/download/download.d.ts +1 -1
  184. package/dist/types/widgets-v2/actions/download/icons.d.ts +3 -3
  185. package/dist/types/widgets-v2/actions/fullscreen/fullscreen.d.ts +2 -2
  186. package/dist/types/widgets-v2/actions/lock-selection/lock-selection.d.ts +1 -1
  187. package/dist/types/widgets-v2/actions/relative-data/relative-data.d.ts +1 -1
  188. package/dist/types/widgets-v2/actions/searcher/searcher-toggle.d.ts +1 -1
  189. package/dist/types/widgets-v2/actions/searcher/searcher.d.ts +1 -1
  190. package/dist/types/widgets-v2/actions/show-all/show-all.d.ts +1 -1
  191. package/dist/types/widgets-v2/actions/stack-toggle/stack-toggle.d.ts +1 -1
  192. package/dist/types/widgets-v2/actions/zoom-toggle/zoom-toggle.d.ts +1 -1
  193. package/dist/types/widgets-v2/bar/skeleton.d.ts +1 -1
  194. package/dist/types/widgets-v2/category/category-ui.d.ts +1 -1
  195. package/dist/types/widgets-v2/category/category.d.ts +1 -1
  196. package/dist/types/widgets-v2/category/components/category-bar-stacked.d.ts +1 -1
  197. package/dist/types/widgets-v2/category/components/category-bar.d.ts +1 -1
  198. package/dist/types/widgets-v2/category/components/category-legend.d.ts +1 -1
  199. package/dist/types/widgets-v2/category/components/category-row-multi.d.ts +1 -1
  200. package/dist/types/widgets-v2/category/components/category-row-other.d.ts +1 -1
  201. package/dist/types/widgets-v2/category/components/category-row-single.d.ts +1 -1
  202. package/dist/types/widgets-v2/category/components/category-row-stacked.d.ts +1 -1
  203. package/dist/types/widgets-v2/category/skeleton.d.ts +1 -1
  204. package/dist/types/widgets-v2/echart/echart-ui.d.ts +1 -1
  205. package/dist/types/widgets-v2/echart/echart.d.ts +1 -1
  206. package/dist/types/widgets-v2/formula/delta.d.ts +1 -1
  207. package/dist/types/widgets-v2/formula/formula-ui.d.ts +1 -1
  208. package/dist/types/widgets-v2/formula/formula.d.ts +1 -1
  209. package/dist/types/widgets-v2/formula/note.d.ts +1 -1
  210. package/dist/types/widgets-v2/formula/prefix.d.ts +1 -1
  211. package/dist/types/widgets-v2/formula/series.d.ts +1 -1
  212. package/dist/types/widgets-v2/formula/skeleton.d.ts +1 -1
  213. package/dist/types/widgets-v2/formula/suffix.d.ts +1 -1
  214. package/dist/types/widgets-v2/formula/value.d.ts +1 -1
  215. package/dist/types/widgets-v2/histogram/skeleton.d.ts +1 -1
  216. package/dist/types/widgets-v2/index.d.ts +4 -4
  217. package/dist/types/widgets-v2/markdown/markdown-content.d.ts +1 -1
  218. package/dist/types/widgets-v2/markdown/markdown-ui.d.ts +1 -1
  219. package/dist/types/widgets-v2/markdown/markdown.d.ts +1 -1
  220. package/dist/types/widgets-v2/markdown/skeleton.d.ts +1 -1
  221. package/dist/types/widgets-v2/note/widget-note.d.ts +2 -2
  222. package/dist/types/widgets-v2/pie/skeleton.d.ts +1 -1
  223. package/dist/types/widgets-v2/provider/widget-provider.d.ts +1 -1
  224. package/dist/types/widgets-v2/range/range-ui.d.ts +1 -1
  225. package/dist/types/widgets-v2/range/range.d.ts +1 -1
  226. package/dist/types/widgets-v2/range/skeleton.d.ts +1 -1
  227. package/dist/types/widgets-v2/scatterplot/skeleton.d.ts +1 -1
  228. package/dist/types/widgets-v2/selection-summary/selection-summary.d.ts +1 -1
  229. package/dist/types/widgets-v2/spread/separator.d.ts +1 -1
  230. package/dist/types/widgets-v2/spread/skeleton.d.ts +1 -1
  231. package/dist/types/widgets-v2/spread/spread-ui.d.ts +1 -1
  232. package/dist/types/widgets-v2/spread/spread.d.ts +1 -1
  233. package/dist/types/widgets-v2/state/widget-state.d.ts +1 -1
  234. package/dist/types/widgets-v2/subheader/subheader.d.ts +1 -1
  235. package/dist/types/widgets-v2/table/skeleton.d.ts +1 -1
  236. package/dist/types/widgets-v2/table/table-ui.d.ts +1 -1
  237. package/dist/types/widgets-v2/table/table.d.ts +1 -1
  238. package/dist/types/widgets-v2/timeseries/skeleton.d.ts +1 -1
  239. package/dist/types/widgets-v2/toolbox/toolbox.d.ts +1 -1
  240. package/dist/types/widgets-v2/wrapper/widget-actions.d.ts +2 -2
  241. package/dist/types/widgets-v2/wrapper/widget-content.d.ts +2 -2
  242. package/dist/types/widgets-v2/wrapper/widget-wrapper.d.ts +1 -1
  243. package/dist/use-widget-selector-VSPhfhNm.js +12 -0
  244. package/dist/{use-widget-selector-DFl2hW0R.js.map → use-widget-selector-VSPhfhNm.js.map} +1 -1
  245. package/dist/utils-DtvTjjMq.js +58 -0
  246. package/dist/utils-DtvTjjMq.js.map +1 -0
  247. package/dist/widget-store-BFPKYm4R.js +187 -0
  248. package/dist/widget-store-BFPKYm4R.js.map +1 -0
  249. package/dist/widgets/actions.js +2 -1317
  250. package/dist/widgets/bar.js +183 -175
  251. package/dist/widgets/bar.js.map +1 -1
  252. package/dist/widgets/category.js +429 -434
  253. package/dist/widgets/category.js.map +1 -1
  254. package/dist/widgets/echart.js +3 -120
  255. package/dist/widgets/error.js +28 -38
  256. package/dist/widgets/error.js.map +1 -1
  257. package/dist/widgets/formula.js +3 -123
  258. package/dist/widgets/histogram.js +183 -202
  259. package/dist/widgets/histogram.js.map +1 -1
  260. package/dist/widgets/loader.js +63 -61
  261. package/dist/widgets/loader.js.map +1 -1
  262. package/dist/widgets/markdown.js +141 -123
  263. package/dist/widgets/markdown.js.map +1 -1
  264. package/dist/widgets/no-data.js +52 -58
  265. package/dist/widgets/no-data.js.map +1 -1
  266. package/dist/widgets/note.js +125 -122
  267. package/dist/widgets/note.js.map +1 -1
  268. package/dist/widgets/pie.js +245 -259
  269. package/dist/widgets/pie.js.map +1 -1
  270. package/dist/widgets/range.js +225 -204
  271. package/dist/widgets/range.js.map +1 -1
  272. package/dist/widgets/scatterplot.js +220 -215
  273. package/dist/widgets/scatterplot.js.map +1 -1
  274. package/dist/widgets/selection-summary.js +39 -38
  275. package/dist/widgets/selection-summary.js.map +1 -1
  276. package/dist/widgets/skeleton-loader.js +22 -23
  277. package/dist/widgets/skeleton-loader.js.map +1 -1
  278. package/dist/widgets/spread.js +150 -156
  279. package/dist/widgets/spread.js.map +1 -1
  280. package/dist/widgets/stores.js +3 -8
  281. package/dist/widgets/subheader.js +49 -50
  282. package/dist/widgets/subheader.js.map +1 -1
  283. package/dist/widgets/table.js +573 -644
  284. package/dist/widgets/table.js.map +1 -1
  285. package/dist/widgets/timeseries.js +175 -170
  286. package/dist/widgets/timeseries.js.map +1 -1
  287. package/dist/widgets/toolbar-actions.js +140 -145
  288. package/dist/widgets/toolbar-actions.js.map +1 -1
  289. package/dist/widgets/utils.js +17 -33
  290. package/dist/widgets/utils.js.map +1 -1
  291. package/dist/widgets/wrapper.js +265 -276
  292. package/dist/widgets/wrapper.js.map +1 -1
  293. package/dist/widgets-v2/actions.js +4 -51
  294. package/dist/widgets-v2/bar.js +253 -307
  295. package/dist/widgets-v2/bar.js.map +1 -1
  296. package/dist/widgets-v2/category.js +2 -98
  297. package/dist/widgets-v2/echart.js +2 -57
  298. package/dist/widgets-v2/formula.js +2 -68
  299. package/dist/widgets-v2/histogram.js +285 -350
  300. package/dist/widgets-v2/histogram.js.map +1 -1
  301. package/dist/widgets-v2/markdown.js +3 -69
  302. package/dist/widgets-v2/pie.js +363 -461
  303. package/dist/widgets-v2/pie.js.map +1 -1
  304. package/dist/widgets-v2/range.js +2 -52
  305. package/dist/widgets-v2/scatterplot.js +316 -391
  306. package/dist/widgets-v2/scatterplot.js.map +1 -1
  307. package/dist/widgets-v2/spread.js +2 -78
  308. package/dist/widgets-v2/stores.js +2 -42
  309. package/dist/widgets-v2/table.js +2 -78
  310. package/dist/widgets-v2/timeseries.js +285 -340
  311. package/dist/widgets-v2/timeseries.js.map +1 -1
  312. package/dist/widgets-v2/utils.js +2 -8
  313. package/dist/widgets-v2.js +955 -951
  314. package/dist/widgets-v2.js.map +1 -1
  315. package/dist/zoom-toggle-CA0ifG23.js +164 -0
  316. package/dist/zoom-toggle-CA0ifG23.js.map +1 -0
  317. package/package.json +6 -6
  318. package/src/hooks/use-widget-ref.ts +1 -0
  319. package/src/widgets/table/components/pagination-actions.tsx +4 -4
  320. package/src/widgets-v2/pie/options.test.ts +67 -0
  321. package/src/widgets-v2/pie/options.ts +27 -4
  322. package/src/widgets-v2/selection-summary/selection-summary.test.tsx +1 -1
  323. package/src/widgets-v2/toolbox/toolbox.test.tsx +1 -1
  324. package/dist/category-Ct2BzADB.js +0 -753
  325. package/dist/category-Ct2BzADB.js.map +0 -1
  326. package/dist/change-column-Fu1DCYQ3.js +0 -1186
  327. package/dist/change-column-Fu1DCYQ3.js.map +0 -1
  328. package/dist/cjs-D4KH3azB.js +0 -85
  329. package/dist/cjs-D4KH3azB.js.map +0 -1
  330. package/dist/components.js.map +0 -1
  331. package/dist/copy-button-DGL1tyli.js +0 -26
  332. package/dist/copy-button-DGL1tyli.js.map +0 -1
  333. package/dist/csv-item-hH_Gt7ur.js +0 -32
  334. package/dist/csv-item-hH_Gt7ur.js.map +0 -1
  335. package/dist/data-zoom-layout-D_FYdnap.js +0 -28
  336. package/dist/data-zoom-layout-D_FYdnap.js.map +0 -1
  337. package/dist/download-config-OKlLLSW_.js +0 -58
  338. package/dist/download-config-OKlLLSW_.js.map +0 -1
  339. package/dist/echart-B10dhEaM.js +0 -262
  340. package/dist/echart-B10dhEaM.js.map +0 -1
  341. package/dist/exports-Cr43OCul.js +0 -51
  342. package/dist/exports-Cr43OCul.js.map +0 -1
  343. package/dist/exports-Cx-f6m6U.js +0 -63
  344. package/dist/exports-Cx-f6m6U.js.map +0 -1
  345. package/dist/formatter-B9Bxn1k7.js +0 -6
  346. package/dist/formatter-B9Bxn1k7.js.map +0 -1
  347. package/dist/formula-DuC0NQLH.js +0 -79
  348. package/dist/formula-DuC0NQLH.js.map +0 -1
  349. package/dist/lasso-tool-YLFRgb-S.js +0 -582
  350. package/dist/lasso-tool-YLFRgb-S.js.map +0 -1
  351. package/dist/legend/stores.js.map +0 -1
  352. package/dist/legend-store-registry-p1tSwJXH.js +0 -472
  353. package/dist/legend-store-registry-p1tSwJXH.js.map +0 -1
  354. package/dist/markdown-DdqANCiN.js +0 -102
  355. package/dist/markdown-DdqANCiN.js.map +0 -1
  356. package/dist/markdown-content-Dk2DSgbf.js +0 -10287
  357. package/dist/markdown-content-Dk2DSgbf.js.map +0 -1
  358. package/dist/option-builders-DPeoyQaM.js +0 -130
  359. package/dist/option-builders-DPeoyQaM.js.map +0 -1
  360. package/dist/options-CthfUJDz.js +0 -46
  361. package/dist/options-CthfUJDz.js.map +0 -1
  362. package/dist/png-item-9dNbB37T.js +0 -57
  363. package/dist/png-item-9dNbB37T.js.map +0 -1
  364. package/dist/range-l4fNHLEg.js +0 -213
  365. package/dist/range-l4fNHLEg.js.map +0 -1
  366. package/dist/resolve-theme-color-BdojIw0K.js +0 -47
  367. package/dist/resolve-theme-color-BdojIw0K.js.map +0 -1
  368. package/dist/row-DZSP99LW.js +0 -34
  369. package/dist/row-DZSP99LW.js.map +0 -1
  370. package/dist/series-DLNHDWs0.js +0 -90
  371. package/dist/series-DLNHDWs0.js.map +0 -1
  372. package/dist/shared-resize-observer-98b1SK1e.js +0 -17
  373. package/dist/shared-resize-observer-98b1SK1e.js.map +0 -1
  374. package/dist/smart-tooltip-DFV6GD8R.js +0 -40
  375. package/dist/smart-tooltip-DFV6GD8R.js.map +0 -1
  376. package/dist/spread-4MYPOntd.js +0 -66
  377. package/dist/spread-4MYPOntd.js.map +0 -1
  378. package/dist/style-DVnT6HC1.js +0 -131
  379. package/dist/style-DVnT6HC1.js.map +0 -1
  380. package/dist/styles-cohnxh9F.js +0 -23
  381. package/dist/styles-cohnxh9F.js.map +0 -1
  382. package/dist/table-CTcLOycx.js +0 -383
  383. package/dist/table-CTcLOycx.js.map +0 -1
  384. package/dist/tooltip-BDnrRKrp.js +0 -25
  385. package/dist/tooltip-BDnrRKrp.js.map +0 -1
  386. package/dist/transforms-Cdx4fkU5.js +0 -106
  387. package/dist/transforms-Cdx4fkU5.js.map +0 -1
  388. package/dist/use-transform-DXPN3nY7.js +0 -110
  389. package/dist/use-transform-DXPN3nY7.js.map +0 -1
  390. package/dist/use-widget-ref-Ddr_SlJJ.js +0 -22
  391. package/dist/use-widget-ref-Ddr_SlJJ.js.map +0 -1
  392. package/dist/use-widget-selector-DFl2hW0R.js +0 -12
  393. package/dist/utils-BOhInag6.js +0 -170
  394. package/dist/utils-BOhInag6.js.map +0 -1
  395. package/dist/widget-context-DTGO0Yta.js +0 -13
  396. package/dist/widget-context-DTGO0Yta.js.map +0 -1
  397. package/dist/widget-store-Bw5zRUGg.js +0 -261
  398. package/dist/widget-store-Bw5zRUGg.js.map +0 -1
  399. package/dist/widget-store-registry-_W4Z4xp-.js +0 -178
  400. package/dist/widget-store-registry-_W4Z4xp-.js.map +0 -1
  401. package/dist/widgets/actions.js.map +0 -1
  402. package/dist/widgets/echart.js.map +0 -1
  403. package/dist/widgets/formula.js.map +0 -1
  404. package/dist/widgets/stores.js.map +0 -1
  405. package/dist/widgets-v2/actions.js.map +0 -1
  406. package/dist/widgets-v2/category.js.map +0 -1
  407. package/dist/widgets-v2/echart.js.map +0 -1
  408. package/dist/widgets-v2/formula.js.map +0 -1
  409. package/dist/widgets-v2/markdown.js.map +0 -1
  410. package/dist/widgets-v2/range.js.map +0 -1
  411. package/dist/widgets-v2/spread.js.map +0 -1
  412. package/dist/widgets-v2/stores.js.map +0 -1
  413. package/dist/widgets-v2/table.js.map +0 -1
  414. package/dist/widgets-v2/utils.js.map +0 -1
@@ -0,0 +1,164 @@
1
+ import { t as e } from "./tooltip-DJUGNZxY.js";
2
+ import "./components-DDt4mOQn.js";
3
+ import { T as t, f as n, n as r } from "./stores-BVFMfgyo.js";
4
+ import { c as i } from "react/compiler-runtime";
5
+ import "react";
6
+ import { IconButton as a, useTheme as o } from "@mui/material";
7
+ import { jsx as s } from "react/jsx-runtime";
8
+ import { ZoomIn as c } from "@mui/icons-material";
9
+ //#region src/widgets-v2/actions/zoom-toggle/transforms.ts
10
+ var l = "image://data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iOSIgaGVpZ2h0PSIzNiIgdmlld0JveD0iMCAwIDkgMzYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHg9IjAuNSIgeT0iLTAuNSIgd2lkdGg9IjgiIGhlaWdodD0iMTgiIHJ4PSI0IiB0cmFuc2Zvcm09Im1hdHJpeCgxIDAgMCAtMSAwIDI3KSIgZmlsbD0id2hpdGUiIHN0cm9rZT0iIzM1OEJFNyIvPgo8cmVjdCB3aWR0aD0iMyIgaGVpZ2h0PSIyIiByeD0iMSIgdHJhbnNmb3JtPSJtYXRyaXgoMSAwIDAgLTEgMyAyMykiIGZpbGw9IiMzNThCRTciLz4KPHJlY3Qgd2lkdGg9IjMiIGhlaWdodD0iMiIgcng9IjEiIHRyYW5zZm9ybT0ibWF0cml4KDEgMCAwIC0xIDMgMTkpIiBmaWxsPSIjMzU4QkU3Ii8+CjxyZWN0IHdpZHRoPSIzIiBoZWlnaHQ9IjIiIHJ4PSIxIiB0cmFuc2Zvcm09Im1hdHJpeCgxIDAgMCAtMSAzIDE1KSIgZmlsbD0iIzM1OEJFNyIvPgo8L3N2Zz4=", u = 32, d = 0;
11
+ function f(e, t = {}) {
12
+ let n = t.axes ?? ["x"], r = n.includes("x"), i = n.includes("y"), a = {
13
+ throttle: 0,
14
+ showDetail: !1,
15
+ brushSelect: !1,
16
+ moveHandleSize: 8,
17
+ handleSize: "100%",
18
+ ...m(e)
19
+ };
20
+ return (e) => {
21
+ if (typeof e != "object" || !e) return e;
22
+ let t = e, n = [];
23
+ return r && n.push({
24
+ type: "inside",
25
+ xAxisIndex: [0],
26
+ throttle: 0
27
+ }), i && n.push({
28
+ type: "inside",
29
+ yAxisIndex: [0],
30
+ throttle: 0
31
+ }), r && n.push({
32
+ type: "slider",
33
+ xAxisIndex: [0],
34
+ height: u,
35
+ bottom: d,
36
+ handleIcon: l,
37
+ ...a
38
+ }), i && n.push({
39
+ type: "slider",
40
+ yAxisIndex: [0],
41
+ width: u,
42
+ right: d,
43
+ ...a
44
+ }), {
45
+ ...t,
46
+ dataZoom: n
47
+ };
48
+ };
49
+ }
50
+ var p = (e) => typeof e != "object" || !e ? e : {
51
+ ...e,
52
+ dataZoom: [{ type: "inside" }, {
53
+ type: "slider",
54
+ height: u,
55
+ bottom: d
56
+ }]
57
+ };
58
+ function m(e) {
59
+ let t = e.palette.secondary?.main ?? "#358BE7";
60
+ return {
61
+ fillerColor: "rgba(53, 139, 231, 0.25)",
62
+ borderColor: "rgba(53, 139, 231, 0.3)",
63
+ borderWidth: .5,
64
+ backgroundColor: "transparent",
65
+ borderRadius: 4,
66
+ dataBackground: {
67
+ lineStyle: { opacity: 0 },
68
+ areaStyle: {
69
+ opacity: 1,
70
+ color: t
71
+ }
72
+ },
73
+ selectedDataBackground: {
74
+ lineStyle: { opacity: 0 },
75
+ areaStyle: {
76
+ opacity: 1,
77
+ color: t
78
+ }
79
+ },
80
+ handleStyle: {
81
+ color: e.palette.common?.white ?? "#fff",
82
+ borderColor: "rgba(3, 111, 226, 0.08)",
83
+ borderWidth: 1,
84
+ shadowBlur: 3,
85
+ shadowColor: "rgba(0, 0, 0, 0.1)",
86
+ shadowOffsetX: 0,
87
+ shadowOffsetY: 1
88
+ },
89
+ textStyle: {
90
+ color: e.palette.black?.[60] ?? e.palette.text?.primary,
91
+ fontSize: parseInt(e.typography.overlineDelicate?.fontSize ?? "11"),
92
+ fontFamily: e.typography.overlineDelicate?.fontFamily ?? e.typography.caption?.fontFamily
93
+ }
94
+ };
95
+ }
96
+ var h = {
97
+ sliderHeight: u,
98
+ sliderGap: 8,
99
+ sliderBottomWithLegend: 28
100
+ }, g = {
101
+ on: "Disable zoom",
102
+ off: "Enable zoom"
103
+ }, _ = {
104
+ toggle: {
105
+ p: .5,
106
+ "& .MuiSvgIcon-root": { fontSize: 20 }
107
+ },
108
+ toggleActive: { background: (e) => e.palette.primary.relatedLight }
109
+ }, v = {
110
+ id: "zoom-toggle",
111
+ type: "config",
112
+ order: 20
113
+ };
114
+ function y(l) {
115
+ let u = i(31), { initialEnabled: d, labels: p, icon: m, iconProps: h, axes: y } = l, b = d !== void 0 && d, x = m === void 0 ? c : m, S = t(), C = o(), w;
116
+ u[0] === p ? w = u[1] : (w = {
117
+ ...g,
118
+ ...p
119
+ }, u[0] = p, u[1] = w);
120
+ let T = w, E;
121
+ u[2] === y ? E = u[3] : (E = !y || y.includes("x"), u[2] = y, u[3] = E);
122
+ let D = E, O;
123
+ u[4] === y ? O = u[5] : (O = y ? y.includes("y") : !1, u[4] = y, u[5] = O);
124
+ let k = O, A;
125
+ if (u[6] !== D || u[7] !== k || u[8] !== C) {
126
+ let e = [];
127
+ D && e.push("x"), k && e.push("y"), A = f(C, { axes: e }), u[6] = D, u[7] = k, u[8] = C, u[9] = A;
128
+ } else A = u[9];
129
+ let j = A, M;
130
+ u[10] === b ? M = u[11] : (M = { initialEnabled: b }, u[10] = b, u[11] = M);
131
+ let { enabled: N, toggle: P } = r(S, v, j, M), F;
132
+ u[12] !== N || u[13] !== S || u[14] !== P ? (F = () => {
133
+ N && n(S)?.setOption({}, { replaceMerge: ["dataZoom"] }), P();
134
+ }, u[12] = N, u[13] = S, u[14] = P, u[15] = F) : F = u[15];
135
+ let I = F, L = N ? T.on : T.off, R = N ? "active" : void 0, z = N && _.toggleActive, B;
136
+ u[16] === z ? B = u[17] : (B = {
137
+ ..._.toggle,
138
+ ...z
139
+ }, u[16] = z, u[17] = B);
140
+ let V;
141
+ u[18] !== x || u[19] !== h ? (V = /* @__PURE__ */ s(x, {
142
+ fontSize: "small",
143
+ ...h
144
+ }), u[18] = x, u[19] = h, u[20] = V) : V = u[20];
145
+ let H;
146
+ u[21] !== N || u[22] !== I || u[23] !== B || u[24] !== V || u[25] !== R || u[26] !== L ? (H = /* @__PURE__ */ s(a, {
147
+ size: "small",
148
+ "aria-label": L,
149
+ "aria-pressed": N,
150
+ onClick: I,
151
+ className: R,
152
+ sx: B,
153
+ children: V
154
+ }), u[21] = N, u[22] = I, u[23] = B, u[24] = V, u[25] = R, u[26] = L, u[27] = H) : H = u[27];
155
+ let U;
156
+ return u[28] !== H || u[29] !== L ? (U = /* @__PURE__ */ s(e, {
157
+ title: L,
158
+ children: H
159
+ }), u[28] = H, u[29] = L, u[30] = U) : U = u[30], U;
160
+ }
161
+ //#endregion
162
+ export { f as a, p as i, g as n, h as r, y as t };
163
+
164
+ //# sourceMappingURL=zoom-toggle-CA0ifG23.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zoom-toggle-CA0ifG23.js","names":["Theme","SLIDER_HANDLE_ICON","SLIDER_HEIGHT","SLIDER_BOTTOM","ZoomAxis","CreateAddZoomOptions","axes","createAddZoom","theme","options","option","includeX","includes","includeY","sliderStyles","getZoomSliderStyles","baseSliderProps","throttle","showDetail","brushSelect","moveHandleSize","handleSize","cfg","Record","dataZoom","push","type","xAxisIndex","yAxisIndex","height","bottom","handleIcon","width","right","addZoom","secondary","palette","main","fillerColor","borderColor","borderWidth","backgroundColor","borderRadius","dataBackground","lineStyle","opacity","areaStyle","color","selectedDataBackground","handleStyle","common","white","shadowBlur","shadowColor","shadowOffsetX","shadowOffsetY","textStyle","black","text","primary","fontSize","parseInt","typography","overlineDelicate","fontFamily","caption","ZOOM_LAYOUT","sliderHeight","sliderGap","sliderBottomWithLegend","const","ZoomToggleLabels","on","off","DEFAULT_ZOOM_TOGGLE_LABELS","SxProps","Theme","styles","toggle","p","fontSize","toggleActive","background","theme","palette","primary","relatedLight","Record","useCallback","useMemo","ComponentType","IconButton","useTheme","SvgIconProps","ZoomIn","ZoomInIcon","Tooltip","getEchartInstance","useSingleTransform","useWidgetId","createAddZoom","ZoomAxis","DEFAULT_ZOOM_TOGGLE_LABELS","ZoomToggleLabels","styles","ZOOM_DESCRIPTOR","id","type","const","order","ZoomToggleProps","initialEnabled","labels","Partial","icon","iconProps","axes","ZoomToggle","t0","$","_c","t1","t2","undefined","Icon","theme","t3","_labels","t4","includes","includeX","t5","includeY","t6","resolved","push","transform","t7","enabled","toggle","t8","setOption","replaceMerge","handleToggle","tooltip","on","off","t9","t10","toggleActive","t11","t12","t13","t14"],"sources":["../src/widgets-v2/actions/zoom-toggle/transforms.ts","../src/widgets-v2/actions/zoom-toggle/labels.ts","../src/widgets-v2/actions/zoom-toggle/style.ts","../src/widgets-v2/actions/zoom-toggle/zoom-toggle.tsx"],"sourcesContent":["import type { Theme } from '@mui/material'\n\n/**\n * v1's slider handle — 9×36 SVG with a white pill body, secondary-colored\n * stroke, and three grip lines. Inlined as a data URL so the chart can\n * render it without a network fetch.\n */\nconst SLIDER_HANDLE_ICON =\n 'image://data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iOSIgaGVpZ2h0PSIzNiIgdmlld0JveD0iMCAwIDkgMzYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHg9IjAuNSIgeT0iLTAuNSIgd2lkdGg9IjgiIGhlaWdodD0iMTgiIHJ4PSI0IiB0cmFuc2Zvcm09Im1hdHJpeCgxIDAgMCAtMSAwIDI3KSIgZmlsbD0id2hpdGUiIHN0cm9rZT0iIzM1OEJFNyIvPgo8cmVjdCB3aWR0aD0iMyIgaGVpZ2h0PSIyIiByeD0iMSIgdHJhbnNmb3JtPSJtYXRyaXgoMSAwIDAgLTEgMyAyMykiIGZpbGw9IiMzNThCRTciLz4KPHJlY3Qgd2lkdGg9IjMiIGhlaWdodD0iMiIgcng9IjEiIHRyYW5zZm9ybT0ibWF0cml4KDEgMCAwIC0xIDMgMTkpIiBmaWxsPSIjMzU4QkU3Ii8+CjxyZWN0IHdpZHRoPSIzIiBoZWlnaHQ9IjIiIHJ4PSIxIiB0cmFuc2Zvcm09Im1hdHJpeCgxIDAgMCAtMSAzIDE1KSIgZmlsbD0iIzM1OEJFNyIvPgo8L3N2Zz4='\n\nconst SLIDER_HEIGHT = 32\nconst SLIDER_BOTTOM = 0\n\n/** Which chart axis (or axes) zoom applies to. */\nexport type ZoomAxis = 'x' | 'y'\n\nexport interface CreateAddZoomOptions {\n /**\n * Axes to enable zoom on. Default `['x']` (matches bar / histogram /\n * timeseries — horizontal pan/zoom on the category axis). Pass\n * `['x', 'y']` for a scatterplot-style 2D zoom (mouse-wheel scales both\n * axes; a horizontal slider sits at the bottom for x-range and a\n * vertical slider sits on the right for y-range).\n */\n axes?: readonly ZoomAxis[]\n}\n\n/**\n * Theme-bound zoom config transform: adds one inside `dataZoom`\n * (mouse-wheel + drag) per axis plus a styled slider per axis with the\n * v1 chrome (blue-tinted filler, secondary-color data preview, white\n * pill handles, CARTO typography). The x-slider is horizontal at the\n * bottom; the y-slider is vertical on the right.\n *\n * Returned function has stable identity for a given theme + axes\n * combination; pair with `useMemo` at the call site.\n *\n * **No `start` / `end`** are emitted: ECharts defaults to `0–100` on the\n * first `setOption` and then keeps the runtime slider state across\n * subsequent merges (no `replaceMerge` for `dataZoom`). Re-running the\n * transform on data/formatter/RelativeData updates therefore preserves the\n * user's dragged range instead of snapping it back.\n */\nexport function createAddZoom(\n theme: Theme,\n options: CreateAddZoomOptions = {},\n): (option: unknown) => unknown {\n const axes = options.axes ?? ['x']\n const includeX = axes.includes('x')\n const includeY = axes.includes('y')\n const sliderStyles = getZoomSliderStyles(theme)\n const baseSliderProps = {\n throttle: 0,\n showDetail: false,\n brushSelect: false,\n moveHandleSize: 8,\n handleSize: '100%',\n ...sliderStyles,\n }\n return (option: unknown): unknown => {\n if (option == null || typeof option !== 'object') return option\n const cfg = option as Record<string, unknown>\n const dataZoom: object[] = []\n if (includeX) {\n dataZoom.push({ type: 'inside', xAxisIndex: [0], throttle: 0 })\n }\n if (includeY) {\n dataZoom.push({ type: 'inside', yAxisIndex: [0], throttle: 0 })\n }\n if (includeX) {\n dataZoom.push({\n type: 'slider',\n xAxisIndex: [0],\n height: SLIDER_HEIGHT,\n bottom: SLIDER_BOTTOM,\n handleIcon: SLIDER_HANDLE_ICON,\n ...baseSliderProps,\n })\n }\n if (includeY) {\n // Vertical slider — `width` is its thickness, `right` pins it to\n // the right edge. We omit `handleIcon` so ECharts renders its\n // default vertical handle (the inline SVG is shaped for a\n // horizontal slider and looks wrong when rotated).\n dataZoom.push({\n type: 'slider',\n yAxisIndex: [0],\n width: SLIDER_HEIGHT,\n right: SLIDER_BOTTOM,\n ...baseSliderProps,\n })\n }\n return { ...cfg, dataZoom }\n }\n}\n\n/**\n * Back-compat untyped transform — produces the bare `dataZoom` config from\n * the original v2 implementation. Use {@link createAddZoom} when a theme is\n * available so the slider matches the v1 styling.\n *\n * `start` / `end` are intentionally omitted so ECharts preserves the user's\n * runtime range across subsequent `setOption` merges (see {@link createAddZoom}).\n */\nexport const addZoom = (option: unknown): unknown => {\n if (option == null || typeof option !== 'object') return option\n const cfg = option as Record<string, unknown>\n return {\n ...cfg,\n dataZoom: [\n { type: 'inside' },\n {\n type: 'slider',\n height: SLIDER_HEIGHT,\n bottom: SLIDER_BOTTOM,\n },\n ],\n }\n}\n\n/** Style block matching v1's `getEChartZoomSliderStyles`. */\nfunction getZoomSliderStyles(theme: Theme) {\n const secondary = theme.palette.secondary?.main ?? '#358BE7'\n return {\n fillerColor: 'rgba(53, 139, 231, 0.25)',\n borderColor: 'rgba(53, 139, 231, 0.3)',\n borderWidth: 0.5,\n backgroundColor: 'transparent',\n borderRadius: 4,\n dataBackground: {\n lineStyle: { opacity: 0 },\n areaStyle: { opacity: 1, color: secondary },\n },\n selectedDataBackground: {\n lineStyle: { opacity: 0 },\n areaStyle: { opacity: 1, color: secondary },\n },\n handleStyle: {\n color: theme.palette.common?.white ?? '#fff',\n borderColor: 'rgba(3, 111, 226, 0.08)',\n borderWidth: 1,\n shadowBlur: 3,\n shadowColor: 'rgba(0, 0, 0, 0.1)',\n shadowOffsetX: 0,\n shadowOffsetY: 1,\n },\n textStyle: {\n color: theme.palette.black?.[60] ?? theme.palette.text?.primary,\n fontSize: parseInt(\n (theme.typography.overlineDelicate?.fontSize as string | undefined) ??\n '11',\n ),\n fontFamily:\n theme.typography.overlineDelicate?.fontFamily ??\n theme.typography.caption?.fontFamily,\n },\n }\n}\n\n/**\n * Visual layout constants used by the data-fusion mergers (bar, histogram,\n * timeseries) when laying out the slider against the legend / grid.\n */\nexport const ZOOM_LAYOUT = {\n /** Slider height in px (matches `createAddZoom` output). */\n sliderHeight: SLIDER_HEIGHT,\n /** Vertical gap between chart grid and the slider. */\n sliderGap: 8,\n /** Slider `bottom` when a legend is shown — sits above the legend row. */\n sliderBottomWithLegend: 28,\n} as const\n","export interface ZoomToggleLabels {\n on: string\n off: string\n}\n\nexport const DEFAULT_ZOOM_TOGGLE_LABELS: ZoomToggleLabels = {\n on: 'Disable zoom',\n off: 'Enable zoom',\n}\n","import type { SxProps, Theme } from '@mui/material'\n\nexport const styles = {\n toggle: {\n p: 0.5,\n '& .MuiSvgIcon-root': { fontSize: 20 },\n },\n toggleActive: {\n background: (theme: Theme) => theme.palette.primary.relatedLight,\n },\n} satisfies Record<string, SxProps<Theme>>\n","import { useCallback, useMemo, type ComponentType } from 'react'\nimport { IconButton, useTheme, type SvgIconProps } from '@mui/material'\nimport { ZoomIn as ZoomInIcon } from '@mui/icons-material'\nimport { Tooltip } from '../../../components'\nimport {\n getEchartInstance,\n useSingleTransform,\n useWidgetId,\n} from '../../stores'\nimport { createAddZoom, type ZoomAxis } from './transforms'\nimport { DEFAULT_ZOOM_TOGGLE_LABELS, type ZoomToggleLabels } from './labels'\nimport { styles } from './style'\n\nconst ZOOM_DESCRIPTOR = {\n id: 'zoom-toggle',\n type: 'config' as const,\n order: 20,\n}\n\nexport interface ZoomToggleProps {\n initialEnabled?: boolean\n labels?: Partial<ZoomToggleLabels>\n icon?: ComponentType<SvgIconProps>\n iconProps?: SvgIconProps\n /**\n * Which axes the zoom controls. Default `['x']` — matches bar /\n * histogram / timeseries (horizontal pan on the category axis). Pass\n * `['x', 'y']` for 2D zoom on a scatterplot-style chart (mouse-wheel\n * scales both axes; horizontal slider at bottom + vertical slider on\n * the right).\n */\n axes?: readonly ZoomAxis[]\n}\n\n/**\n * Toggle a `dataZoom` slider + wheel-zoom on the chart. The transform is\n * theme-bound so the slider gets v1's CARTO chrome (blue-tinted filler,\n * secondary-color preview, white pill handles).\n *\n * `dataZoom` is intentionally NOT in `replaceMergeKeys` — ECharts merges\n * subsequent `setOption` calls so the user's dragged range survives\n * unrelated re-renders (data updates, formatter swaps, RelativeData toggles).\n *\n * On disable the transform is unregistered, but ECharts' merge semantics\n * would otherwise *keep* the live `dataZoom` component visible. To remove\n * the slider immediately we issue a one-shot\n * `setOption({}, { replaceMerge: ['dataZoom'] })` against the live chart\n * instance via {@link getEchartInstance} — this bypasses the pipeline so\n * unrelated transforms aren't disturbed.\n */\nexport function ZoomToggle({\n initialEnabled = false,\n labels,\n icon: Icon = ZoomInIcon,\n iconProps,\n axes,\n}: ZoomToggleProps) {\n const id = useWidgetId()\n const theme = useTheme()\n const _labels = { ...DEFAULT_ZOOM_TOGGLE_LABELS, ...labels }\n // Reduce `axes` to two structural booleans before memoizing so the memo\n // depends on stable primitive values, not an array reference (callers\n // typically pass an inline `axes={['x', 'y']}` literal that changes\n // identity each render). Default — no `axes` prop — is x-axis only,\n // matching `createAddZoom`'s default.\n const includeX = axes ? axes.includes('x') : true\n const includeY = axes ? axes.includes('y') : false\n const transform = useMemo(() => {\n const resolved: ZoomAxis[] = []\n if (includeX) resolved.push('x')\n if (includeY) resolved.push('y')\n return createAddZoom(theme, { axes: resolved })\n }, [theme, includeX, includeY])\n const { enabled, toggle } = useSingleTransform(\n id,\n ZOOM_DESCRIPTOR,\n transform,\n { initialEnabled },\n )\n\n const handleToggle = useCallback(() => {\n if (enabled) {\n // About to disable — clear the dataZoom component on the live\n // instance so the slider disappears immediately.\n getEchartInstance(id)?.setOption({}, { replaceMerge: ['dataZoom'] })\n }\n toggle()\n }, [enabled, toggle, id])\n\n const tooltip = enabled ? _labels.on : _labels.off\n\n return (\n <Tooltip title={tooltip}>\n <IconButton\n size='small'\n aria-label={tooltip}\n aria-pressed={enabled}\n onClick={handleToggle}\n className={enabled ? 'active' : undefined}\n sx={{ ...styles.toggle, ...(enabled && styles.toggleActive) }}\n >\n <Icon fontSize='small' {...iconProps} />\n </IconButton>\n </Tooltip>\n )\n}\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@carto/ps-react-ui",
3
- "version": "4.20.0",
3
+ "version": "4.20.2",
4
4
  "description": "CARTO's Professional Service React Material library",
5
5
  "type": "module",
6
6
  "devDependencies": {
@@ -12,13 +12,13 @@
12
12
  "@mui/icons-material": "5.18.0",
13
13
  "@mui/material": "5.18.0",
14
14
  "@mui/x-date-pickers": "7.29.4",
15
- "echarts": "6.0.0",
15
+ "echarts": "6.1.0",
16
16
  "html2canvas": "1.4.1",
17
- "react-dom": "19.2.4",
17
+ "react-dom": "19.2.8",
18
18
  "react-markdown": "10.1.0",
19
- "zustand": "5.0.12",
20
- "@carto/ps-common-types": "1.0.0",
21
- "@carto/ps-utils": "2.1.0"
19
+ "zustand": "5.0.15",
20
+ "@carto/ps-utils": "2.1.0",
21
+ "@carto/ps-common-types": "1.0.0"
22
22
  },
23
23
  "peerDependencies": {
24
24
  "@carto/meridian-ds": "^2.0.0",
@@ -1,4 +1,5 @@
1
1
  import { useEffect, useRef } from 'react'
2
+ import type * as echarts from 'echarts'
2
3
  import { widgetStoreActions } from '../widgets/stores/widget-store'
3
4
 
4
5
  /**
@@ -1,8 +1,8 @@
1
1
  import { Box, IconButton } from '@mui/material'
2
- import FirstPageIcon from '@mui/icons-material/FirstPage'
3
- import KeyboardArrowLeft from '@mui/icons-material/KeyboardArrowLeft'
4
- import KeyboardArrowRight from '@mui/icons-material/KeyboardArrowRight'
5
- import LastPageIcon from '@mui/icons-material/LastPage'
2
+ import { FirstPage as FirstPageIcon } from '@mui/icons-material'
3
+ import { KeyboardArrowLeft } from '@mui/icons-material'
4
+ import { KeyboardArrowRight } from '@mui/icons-material'
5
+ import { LastPage as LastPageIcon } from '@mui/icons-material'
6
6
  import type { PaginationActionsProps } from '../types'
7
7
 
8
8
  /**
@@ -391,6 +391,73 @@ describe('createPieOptionFactory — single-series (donut)', () => {
391
391
  ).toBe('')
392
392
  })
393
393
 
394
+ it('label formatter renders EVERY slice when the label is moved off the centre (e.g. PDF outside labels)', () => {
395
+ // `position: 'center'` stacks every label on one anchor, so only the
396
+ // max-valued slice draws. An override that gives each slice its own
397
+ // anchor must label them all — otherwise a PDF/report export shows a
398
+ // single value and orphan leader lines for the rest.
399
+ const merge = createPieOptionFactory({ theme })
400
+ const out = merge(
401
+ {
402
+ series: [
403
+ {
404
+ type: 'pie' as const,
405
+ label: { show: true, position: 'outside' },
406
+ },
407
+ ] as unknown as never,
408
+ },
409
+ [
410
+ [
411
+ { name: 'A', value: 10 },
412
+ { name: 'B', value: 25 },
413
+ ],
414
+ ],
415
+ ) as {
416
+ series: { label: { formatter: (p: Record<string, unknown>) => string } }[]
417
+ }
418
+ const fmt = out.series[0]!.label.formatter
419
+ expect(
420
+ fmt({
421
+ name: 'A',
422
+ encode: { value: [1] },
423
+ data: { name: 'A', value: 10 },
424
+ }),
425
+ ).toBe('{c|10}\n{b|A}')
426
+ expect(
427
+ fmt({
428
+ name: 'B',
429
+ encode: { value: [1] },
430
+ data: { name: 'B', value: 25 },
431
+ }),
432
+ ).toBe('{c|25}\n{b|B}')
433
+ })
434
+
435
+ it('keeps the blank-line spacer for centre labels and drops it for off-centre ones', () => {
436
+ const data = [[{ name: 'A', value: 10 }]]
437
+ const params = {
438
+ name: 'A',
439
+ encode: { value: [1] },
440
+ data: { name: 'A', value: 10 },
441
+ }
442
+ interface Out {
443
+ series: { label: { formatter: (p: Record<string, unknown>) => string } }[]
444
+ }
445
+ const centered = createPieOptionFactory({ theme })(
446
+ {},
447
+ data,
448
+ ) as unknown as Out
449
+ const outside = createPieOptionFactory({ theme })(
450
+ {
451
+ series: [
452
+ { type: 'pie' as const, label: { position: 'inside' } },
453
+ ] as unknown as never,
454
+ },
455
+ data,
456
+ ) as unknown as Out
457
+ expect(centered.series[0]!.label.formatter(params)).toBe('{c|10}\n\n{b|A}')
458
+ expect(outside.series[0]!.label.formatter(params)).toBe('{c|10}\n{b|A}')
459
+ })
460
+
394
461
  it('label formatter treats an explicit empty selection as no selection (renders the true max, not blank)', () => {
395
462
  const merge = createPieOptionFactory({ theme, selection: [] })
396
463
  const out = merge({}, [[{ name: 'A', value: 10 }]]) as {
@@ -246,6 +246,21 @@ function buildSingleSeriesPieFusion(
246
246
  : echarts.color.modifyAlpha(base, 0.15)
247
247
  }
248
248
 
249
+ // ECharts anchors EVERY slice's `position: 'center'` label at the same
250
+ // point, so at most one of them can ever be legible — the donut design
251
+ // leans into that (one KPI inside the ring) and picks a single slice
252
+ // below. A consumer that moves the labels off the centre gives each
253
+ // slice its own anchor (`'outside'` with leader lines is what the PDF
254
+ // export uses, `'inside'` / `'insideTop'` … likewise), and there the
255
+ // single-label rule is simply wrong: every slice must render its own
256
+ // label. Read the position off the structural template, which already
257
+ // carries the consumer's `optionsOverride`.
258
+ const templateLabelPosition = (
259
+ broadcastTemplate as { label?: { position?: unknown } }
260
+ ).label?.position
261
+ const isCenterLabel =
262
+ templateLabelPosition === undefined || templateLabelPosition === 'center'
263
+
249
264
  // Which slice renders the centre value+name: the greatest value among
250
265
  // the *included* slices (all of them when there's no active
251
266
  // selection), computed locally — no query round-trip. Only that one
@@ -254,7 +269,8 @@ function buildSingleSeriesPieFusion(
254
269
  // `typeof value === 'number'` participates — if every included slice's
255
270
  // value is non-numeric, `centerMaxName` stays `undefined` and no slice
256
271
  // matches it in `labelTextFormatter` below, so the chart renders with no
257
- // centre label at all (graceful no-op, not a crash).
272
+ // centre label at all (graceful no-op, not a crash). Skipped entirely
273
+ // for off-centre labels, where every slice labels itself.
258
274
  const centerData = seriesArr[0] ?? []
259
275
  let centerMaxName: string | number | undefined
260
276
  let centerMaxValue = -Infinity
@@ -266,13 +282,14 @@ function buildSingleSeriesPieFusion(
266
282
  }
267
283
  }
268
284
 
269
- // Center label formatter — lives in the merger because it reads
285
+ // Slice label formatter — lives in the merger because it reads
270
286
  // reactive `formatter` / `labelFormatter` from ctx. The rich tags
271
287
  // `{c|…}` and `{b|…}` reference the rich styles baked into the
272
288
  // structural label template.
273
289
  const labelTextFormatter = (params: CallbackDataParams): string => {
274
290
  const { name } = params
275
- if (name == null || name !== centerMaxName) return ''
291
+ if (name == null) return ''
292
+ if (isCenterLabel && name !== centerMaxName) return ''
276
293
  const encodeIndex = params.encode?.value?.[0]
277
294
  if (encodeIndex === undefined) return ''
278
295
  const value = (Object.values(params.data ?? {}) as unknown[]).at(
@@ -292,7 +309,13 @@ function buildSingleSeriesPieFusion(
292
309
  const formattedName = labelFormatter
293
310
  ? String(labelFormatter(name ?? ''))
294
311
  : String(name ?? '')
295
- return `{c|${formattedValue}}\n\n{b|${formattedName}}`
312
+ // The blank line is what separates the big centre KPI from its
313
+ // caption. Off-centre labels sit next to their own slice and are
314
+ // laid out against their neighbours, so the spacer only inflates
315
+ // each label's bounding box — enough, with a hidden `{b|…}` block,
316
+ // to make ECharts drop colliding labels altogether.
317
+ const separator = isCenterLabel ? '\n\n' : '\n'
318
+ return `{c|${formattedValue}}${separator}{b|${formattedName}}`
296
319
  }
297
320
 
298
321
  return {
@@ -1,6 +1,6 @@
1
1
  import { describe, it, expect, vi } from 'vitest'
2
2
  import { fireEvent, render, screen } from '@testing-library/react'
3
- import StarIcon from '@mui/icons-material/Star'
3
+ import { Star as StarIcon } from '@mui/icons-material'
4
4
  import { SelectionSummary } from './selection-summary'
5
5
 
6
6
  describe('<SelectionSummary>', () => {
@@ -2,7 +2,7 @@ import { useEffect, useRef } from 'react'
2
2
  import { describe, it, expect } from 'vitest'
3
3
  import { fireEvent, render, screen } from '@testing-library/react'
4
4
  import { IconButton } from '@mui/material'
5
- import StarIcon from '@mui/icons-material/Star'
5
+ import { Star as StarIcon } from '@mui/icons-material'
6
6
  import { Toolbox } from './toolbox'
7
7
 
8
8
  function makeChildren(n: number) {