@carto/ps-react-ui 4.19.0 → 4.20.1

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 (416) 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 +5 -5
  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/band.d.ts +37 -0
  230. package/dist/types/widgets-v2/spread/band.test.d.ts +1 -0
  231. package/dist/types/widgets-v2/spread/index.d.ts +1 -0
  232. package/dist/types/widgets-v2/spread/separator.d.ts +1 -1
  233. package/dist/types/widgets-v2/spread/skeleton.d.ts +1 -1
  234. package/dist/types/widgets-v2/spread/spread-ui.d.ts +1 -1
  235. package/dist/types/widgets-v2/spread/spread.d.ts +1 -1
  236. package/dist/types/widgets-v2/state/widget-state.d.ts +1 -1
  237. package/dist/types/widgets-v2/subheader/subheader.d.ts +1 -1
  238. package/dist/types/widgets-v2/table/skeleton.d.ts +1 -1
  239. package/dist/types/widgets-v2/table/table-ui.d.ts +1 -1
  240. package/dist/types/widgets-v2/table/table.d.ts +1 -1
  241. package/dist/types/widgets-v2/timeseries/skeleton.d.ts +1 -1
  242. package/dist/types/widgets-v2/toolbox/toolbox.d.ts +1 -1
  243. package/dist/types/widgets-v2/wrapper/widget-actions.d.ts +2 -2
  244. package/dist/types/widgets-v2/wrapper/widget-content.d.ts +2 -2
  245. package/dist/types/widgets-v2/wrapper/widget-wrapper.d.ts +1 -1
  246. package/dist/use-widget-selector-VSPhfhNm.js +12 -0
  247. package/dist/{use-widget-selector-DFl2hW0R.js.map → use-widget-selector-VSPhfhNm.js.map} +1 -1
  248. package/dist/utils-DtvTjjMq.js +58 -0
  249. package/dist/utils-DtvTjjMq.js.map +1 -0
  250. package/dist/widget-store-BFPKYm4R.js +187 -0
  251. package/dist/widget-store-BFPKYm4R.js.map +1 -0
  252. package/dist/widgets/actions.js +2 -1317
  253. package/dist/widgets/bar.js +183 -175
  254. package/dist/widgets/bar.js.map +1 -1
  255. package/dist/widgets/category.js +429 -434
  256. package/dist/widgets/category.js.map +1 -1
  257. package/dist/widgets/echart.js +3 -120
  258. package/dist/widgets/error.js +28 -38
  259. package/dist/widgets/error.js.map +1 -1
  260. package/dist/widgets/formula.js +3 -123
  261. package/dist/widgets/histogram.js +183 -202
  262. package/dist/widgets/histogram.js.map +1 -1
  263. package/dist/widgets/loader.js +63 -61
  264. package/dist/widgets/loader.js.map +1 -1
  265. package/dist/widgets/markdown.js +141 -123
  266. package/dist/widgets/markdown.js.map +1 -1
  267. package/dist/widgets/no-data.js +52 -58
  268. package/dist/widgets/no-data.js.map +1 -1
  269. package/dist/widgets/note.js +125 -122
  270. package/dist/widgets/note.js.map +1 -1
  271. package/dist/widgets/pie.js +245 -259
  272. package/dist/widgets/pie.js.map +1 -1
  273. package/dist/widgets/range.js +225 -204
  274. package/dist/widgets/range.js.map +1 -1
  275. package/dist/widgets/scatterplot.js +220 -215
  276. package/dist/widgets/scatterplot.js.map +1 -1
  277. package/dist/widgets/selection-summary.js +39 -38
  278. package/dist/widgets/selection-summary.js.map +1 -1
  279. package/dist/widgets/skeleton-loader.js +22 -23
  280. package/dist/widgets/skeleton-loader.js.map +1 -1
  281. package/dist/widgets/spread.js +150 -156
  282. package/dist/widgets/spread.js.map +1 -1
  283. package/dist/widgets/stores.js +3 -8
  284. package/dist/widgets/subheader.js +49 -50
  285. package/dist/widgets/subheader.js.map +1 -1
  286. package/dist/widgets/table.js +576 -644
  287. package/dist/widgets/table.js.map +1 -1
  288. package/dist/widgets/timeseries.js +175 -170
  289. package/dist/widgets/timeseries.js.map +1 -1
  290. package/dist/widgets/toolbar-actions.js +140 -145
  291. package/dist/widgets/toolbar-actions.js.map +1 -1
  292. package/dist/widgets/utils.js +17 -33
  293. package/dist/widgets/utils.js.map +1 -1
  294. package/dist/widgets/wrapper.js +265 -276
  295. package/dist/widgets/wrapper.js.map +1 -1
  296. package/dist/widgets-v2/actions.js +4 -51
  297. package/dist/widgets-v2/bar.js +253 -307
  298. package/dist/widgets-v2/bar.js.map +1 -1
  299. package/dist/widgets-v2/category.js +2 -98
  300. package/dist/widgets-v2/echart.js +2 -57
  301. package/dist/widgets-v2/formula.js +2 -68
  302. package/dist/widgets-v2/histogram.js +285 -350
  303. package/dist/widgets-v2/histogram.js.map +1 -1
  304. package/dist/widgets-v2/markdown.js +3 -69
  305. package/dist/widgets-v2/pie.js +363 -461
  306. package/dist/widgets-v2/pie.js.map +1 -1
  307. package/dist/widgets-v2/range.js +2 -52
  308. package/dist/widgets-v2/scatterplot.js +316 -391
  309. package/dist/widgets-v2/scatterplot.js.map +1 -1
  310. package/dist/widgets-v2/spread.js +2 -66
  311. package/dist/widgets-v2/stores.js +2 -42
  312. package/dist/widgets-v2/table.js +2 -78
  313. package/dist/widgets-v2/timeseries.js +285 -340
  314. package/dist/widgets-v2/timeseries.js.map +1 -1
  315. package/dist/widgets-v2/utils.js +2 -8
  316. package/dist/widgets-v2.js +955 -951
  317. package/dist/widgets-v2.js.map +1 -1
  318. package/dist/zoom-toggle-CA0ifG23.js +164 -0
  319. package/dist/zoom-toggle-CA0ifG23.js.map +1 -0
  320. package/package.json +4 -4
  321. package/src/hooks/use-widget-ref.ts +1 -0
  322. package/src/widgets-v2/index.ts +6 -1
  323. package/src/widgets-v2/spread/band.test.ts +46 -0
  324. package/src/widgets-v2/spread/band.ts +47 -0
  325. package/src/widgets-v2/spread/index.ts +1 -0
  326. package/dist/category-Ct2BzADB.js +0 -753
  327. package/dist/category-Ct2BzADB.js.map +0 -1
  328. package/dist/change-column-Fu1DCYQ3.js +0 -1186
  329. package/dist/change-column-Fu1DCYQ3.js.map +0 -1
  330. package/dist/cjs-D4KH3azB.js +0 -85
  331. package/dist/cjs-D4KH3azB.js.map +0 -1
  332. package/dist/components.js.map +0 -1
  333. package/dist/copy-button-DGL1tyli.js +0 -26
  334. package/dist/copy-button-DGL1tyli.js.map +0 -1
  335. package/dist/csv-item-hH_Gt7ur.js +0 -32
  336. package/dist/csv-item-hH_Gt7ur.js.map +0 -1
  337. package/dist/data-zoom-layout-D_FYdnap.js +0 -28
  338. package/dist/data-zoom-layout-D_FYdnap.js.map +0 -1
  339. package/dist/download-config-OKlLLSW_.js +0 -58
  340. package/dist/download-config-OKlLLSW_.js.map +0 -1
  341. package/dist/echart-B10dhEaM.js +0 -262
  342. package/dist/echart-B10dhEaM.js.map +0 -1
  343. package/dist/exports-Cr43OCul.js +0 -51
  344. package/dist/exports-Cr43OCul.js.map +0 -1
  345. package/dist/exports-Cx-f6m6U.js +0 -63
  346. package/dist/exports-Cx-f6m6U.js.map +0 -1
  347. package/dist/formatter-B9Bxn1k7.js +0 -6
  348. package/dist/formatter-B9Bxn1k7.js.map +0 -1
  349. package/dist/formula-DuC0NQLH.js +0 -79
  350. package/dist/formula-DuC0NQLH.js.map +0 -1
  351. package/dist/lasso-tool-YLFRgb-S.js +0 -582
  352. package/dist/lasso-tool-YLFRgb-S.js.map +0 -1
  353. package/dist/legend/stores.js.map +0 -1
  354. package/dist/legend-store-registry-p1tSwJXH.js +0 -472
  355. package/dist/legend-store-registry-p1tSwJXH.js.map +0 -1
  356. package/dist/markdown-DdqANCiN.js +0 -102
  357. package/dist/markdown-DdqANCiN.js.map +0 -1
  358. package/dist/markdown-content-Dk2DSgbf.js +0 -10287
  359. package/dist/markdown-content-Dk2DSgbf.js.map +0 -1
  360. package/dist/option-builders-DPeoyQaM.js +0 -130
  361. package/dist/option-builders-DPeoyQaM.js.map +0 -1
  362. package/dist/options-CthfUJDz.js +0 -46
  363. package/dist/options-CthfUJDz.js.map +0 -1
  364. package/dist/png-item-9dNbB37T.js +0 -57
  365. package/dist/png-item-9dNbB37T.js.map +0 -1
  366. package/dist/range-l4fNHLEg.js +0 -213
  367. package/dist/range-l4fNHLEg.js.map +0 -1
  368. package/dist/resolve-theme-color-BdojIw0K.js +0 -47
  369. package/dist/resolve-theme-color-BdojIw0K.js.map +0 -1
  370. package/dist/row-DZSP99LW.js +0 -34
  371. package/dist/row-DZSP99LW.js.map +0 -1
  372. package/dist/series-DLNHDWs0.js +0 -90
  373. package/dist/series-DLNHDWs0.js.map +0 -1
  374. package/dist/shared-resize-observer-98b1SK1e.js +0 -17
  375. package/dist/shared-resize-observer-98b1SK1e.js.map +0 -1
  376. package/dist/smart-tooltip-DFV6GD8R.js +0 -40
  377. package/dist/smart-tooltip-DFV6GD8R.js.map +0 -1
  378. package/dist/spread-4MYPOntd.js +0 -66
  379. package/dist/spread-4MYPOntd.js.map +0 -1
  380. package/dist/style-DVnT6HC1.js +0 -131
  381. package/dist/style-DVnT6HC1.js.map +0 -1
  382. package/dist/styles-cohnxh9F.js +0 -23
  383. package/dist/styles-cohnxh9F.js.map +0 -1
  384. package/dist/table-CTcLOycx.js +0 -383
  385. package/dist/table-CTcLOycx.js.map +0 -1
  386. package/dist/tooltip-BDnrRKrp.js +0 -25
  387. package/dist/tooltip-BDnrRKrp.js.map +0 -1
  388. package/dist/transforms-Cdx4fkU5.js +0 -106
  389. package/dist/transforms-Cdx4fkU5.js.map +0 -1
  390. package/dist/use-transform-DXPN3nY7.js +0 -110
  391. package/dist/use-transform-DXPN3nY7.js.map +0 -1
  392. package/dist/use-widget-ref-Ddr_SlJJ.js +0 -22
  393. package/dist/use-widget-ref-Ddr_SlJJ.js.map +0 -1
  394. package/dist/use-widget-selector-DFl2hW0R.js +0 -12
  395. package/dist/utils-BOhInag6.js +0 -170
  396. package/dist/utils-BOhInag6.js.map +0 -1
  397. package/dist/widget-context-DTGO0Yta.js +0 -13
  398. package/dist/widget-context-DTGO0Yta.js.map +0 -1
  399. package/dist/widget-store-Bw5zRUGg.js +0 -261
  400. package/dist/widget-store-Bw5zRUGg.js.map +0 -1
  401. package/dist/widget-store-registry-_W4Z4xp-.js +0 -178
  402. package/dist/widget-store-registry-_W4Z4xp-.js.map +0 -1
  403. package/dist/widgets/actions.js.map +0 -1
  404. package/dist/widgets/echart.js.map +0 -1
  405. package/dist/widgets/formula.js.map +0 -1
  406. package/dist/widgets/stores.js.map +0 -1
  407. package/dist/widgets-v2/actions.js.map +0 -1
  408. package/dist/widgets-v2/category.js.map +0 -1
  409. package/dist/widgets-v2/echart.js.map +0 -1
  410. package/dist/widgets-v2/formula.js.map +0 -1
  411. package/dist/widgets-v2/markdown.js.map +0 -1
  412. package/dist/widgets-v2/range.js.map +0 -1
  413. package/dist/widgets-v2/spread.js.map +0 -1
  414. package/dist/widgets-v2/stores.js.map +0 -1
  415. package/dist/widgets-v2/table.js.map +0 -1
  416. package/dist/widgets-v2/utils.js.map +0 -1
@@ -0,0 +1,25 @@
1
+ import { IconButton as e } from "@mui/material";
2
+ import { jsx as t } from "react/jsx-runtime";
3
+ import { ContentCopyOutlined as n } from "@mui/icons-material";
4
+ import { copy as r } from "@carto/ps-utils";
5
+ //#region src/components/copy-button/copy-button.tsx
6
+ function i({ copyText: i, onSuccess: a, onError: o, "aria-label": s, ...c }) {
7
+ async function l() {
8
+ try {
9
+ await r(i), a?.();
10
+ } catch (e) {
11
+ o?.(e);
12
+ }
13
+ }
14
+ return /* @__PURE__ */ t(e, {
15
+ size: "small",
16
+ onClick: () => void l(),
17
+ "aria-label": s ?? "Copy",
18
+ ...c,
19
+ children: /* @__PURE__ */ t(n, { fontSize: "small" })
20
+ });
21
+ }
22
+ //#endregion
23
+ export { i as t };
24
+
25
+ //# sourceMappingURL=copy-button-DaQqWVu0.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"copy-button-DaQqWVu0.js","names":["IconButton","ContentCopyOutlined","CopyButtonProps","copy","CopyButton","copyText","onSuccess","onError","ariaLabel","props","onCopy","err","Error"],"sources":["../src/components/copy-button/copy-button.tsx"],"sourcesContent":["import { IconButton } from '@mui/material'\nimport { ContentCopyOutlined } from '@mui/icons-material'\nimport type { CopyButtonProps } from './types'\nimport { copy } from '@carto/ps-utils'\n\nexport function CopyButton({\n copyText,\n onSuccess,\n onError,\n 'aria-label': ariaLabel,\n ...props\n}: CopyButtonProps) {\n async function onCopy() {\n try {\n await copy(copyText)\n onSuccess?.()\n } catch (err) {\n onError?.(err as Error)\n }\n }\n return (\n <IconButton\n size='small'\n onClick={() => void onCopy()}\n aria-label={ariaLabel ?? 'Copy'}\n {...props}\n >\n <ContentCopyOutlined fontSize='small' />\n </IconButton>\n )\n}\n"],"mappings":";;;;;AAKA,SAAgBI,EAAW,EACzBC,aACAC,cACAC,YACA,cAAcC,GACd,GAAGC,KACe;CAClB,eAAeC,IAAS;EACtB,IAAI;GAEFJ,AADA,MAAMH,EAAKE,CAAQ,GACnBC,IAAY;EACd,SAASK,GAAK;GACZJ,IAAUI,CAAY;EACxB;CACF;CACA,OACE,kBAAC,GAAD;EACE,MAAK;EACL,eAAe,KAAKD,EAAO;EAC3B,cAAYF,KAAa;EACzB,GAAIC;EAEJ,UAAA,kBAAC,GAAD,EAAqB,UAAS,QAAO,CAAA;CAC3B,CAAA;AAEhB"}
@@ -0,0 +1,26 @@
1
+ //#region src/widgets/utils/chart-config/csv-modifiers.ts
2
+ function e(e) {
3
+ let t = [];
4
+ if (e.length > 0 && (e[0]?.length ?? 0) > 0) {
5
+ let n = e?.[0]?.[0] ?? {}, r = Object.keys(n);
6
+ t.push(r);
7
+ }
8
+ return e.forEach((e) => {
9
+ e.forEach((e) => {
10
+ let n = Object.values(e).map((e) => String(e));
11
+ t.push(n);
12
+ });
13
+ }), t;
14
+ }
15
+ function t(e) {
16
+ let t = [];
17
+ return t.push(["x", "y"]), e.forEach((e) => {
18
+ e.forEach((e) => {
19
+ t.push([String(e[0]), String(e[1])]);
20
+ });
21
+ }), t;
22
+ }
23
+ //#endregion
24
+ export { t as n, e as t };
25
+
26
+ //# sourceMappingURL=csv-modifiers-D6HGC24b.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"csv-modifiers-D6HGC24b.js","names":["flattenObjectArrayToCSV","Record","data","T","rows","length","firstDataPoint","headers","Object","keys","push","forEach","series","dataPoint","values","map","v","String","scatterplotDataToCSV"],"sources":["../src/widgets/utils/chart-config/csv-modifiers.ts"],"sourcesContent":["/**\n * Shared CSV export modifiers for chart widgets\n */\n\n/**\n * Flattens object array data into CSV-ready rows.\n * Used by bar, pie, histogram, and timeseries widgets.\n *\n * @param data - Array of series, where each series is an array of data objects\n * @returns CSV rows with headers and values\n */\nexport function flattenObjectArrayToCSV<T extends Record<string, unknown>>(\n data: T[][],\n): string[][] {\n const rows: string[][] = []\n\n // Add headers from first data point if available\n if (data.length > 0 && (data[0]?.length ?? 0) > 0) {\n const firstDataPoint = data?.[0]?.[0] ?? {}\n const headers = Object.keys(firstDataPoint)\n rows.push(headers)\n }\n\n // Add data rows from all series\n data.forEach((series) => {\n series.forEach((dataPoint) => {\n const values = Object.values(dataPoint).map((v) => String(v))\n rows.push(values)\n })\n })\n\n return rows\n}\n\n/**\n * Creates CSV rows for scatterplot data.\n * Scatterplot uses array format [x, y] instead of objects.\n *\n * @param data - Array of series, where each series is an array of [x, y] tuples\n * @returns CSV rows with ['x', 'y'] headers\n */\nexport function scatterplotDataToCSV(data: number[][][]): string[][] {\n const rows: string[][] = []\n\n // Add headers\n rows.push(['x', 'y'])\n\n // Add data rows from all series\n data.forEach((series) => {\n series.forEach((dataPoint) => {\n rows.push([String(dataPoint[0]), String(dataPoint[1])])\n })\n })\n\n return rows\n}\n"],"mappings":";AAWA,SAAgBA,EACdE,GACY;CACZ,IAAME,IAAmB,CAAA;CAGzB,IAAIF,EAAKG,SAAS,MAAMH,EAAK,EAAE,EAAEG,UAAU,KAAK,GAAG;EACjD,IAAMC,IAAiBJ,IAAO,EAAE,GAAG,MAAM,CAAC,GACpCK,IAAUC,OAAOC,KAAKH,CAAc;EAC1CF,EAAKM,KAAKH,CAAO;CACnB;CAUA,OAPAL,EAAKS,SAASC,MAAW;EACvBA,EAAOD,SAASE,MAAc;GAC5B,IAAMC,IAASN,OAAOM,OAAOD,CAAS,CAAC,CAACE,KAAKC,MAAMC,OAAOD,CAAC,CAAC;GAC5DZ,EAAKM,KAAKI,CAAM;EAClB,CAAC;CACH,CAAC,GAEMV;AACT;AASA,SAAgBc,EAAqBhB,GAAgC;CACnE,IAAME,IAAmB,CAAA;CAYzB,OATAA,EAAKM,KAAK,CAAC,KAAK,GAAG,CAAC,GAGpBR,EAAKS,SAASC,MAAW;EACvBA,EAAOD,SAASE,MAAc;GAC5BT,EAAKM,KAAK,CAACO,OAAOJ,EAAU,EAAE,GAAGI,OAAOJ,EAAU,EAAE,CAAC,CAAC;EACxD,CAAC;CACH,CAAC,GAEMT;AACT"}
@@ -0,0 +1,232 @@
1
+ import { t as e } from "./tooltip-DJUGNZxY.js";
2
+ import "./components-DDt4mOQn.js";
3
+ import { c as t } from "react/compiler-runtime";
4
+ import { useState as n } from "react";
5
+ import { CircularProgress as r, IconButton as i, ListItemIcon as a, ListItemText as o, Menu as s, MenuItem as c, SvgIcon as l } from "@mui/material";
6
+ import { Fragment as u, jsx as d, jsxs as f } from "react/jsx-runtime";
7
+ import { ArticleOutlined as p, FileDownload as m, ImageOutlined as h } from "@mui/icons-material";
8
+ import g from "html2canvas";
9
+ //#region src/widgets-v2/actions/download/exports.ts
10
+ var _ = /^[=+\-@\t\r]/;
11
+ function v(e) {
12
+ let t = (e) => {
13
+ if (e == null) return "";
14
+ let t = typeof e == "string" ? e : typeof e == "number" || typeof e == "boolean" ? String(e) : JSON.stringify(e);
15
+ return _.test(t) && (t = `'${t}`), /[",\n\r]/.test(t) ? `"${t.replace(/"/g, "\"\"")}"` : t;
16
+ };
17
+ return e.map((e) => e.map(t).join(",")).join("\n");
18
+ }
19
+ function y(e) {
20
+ let t = v(e), n = new Blob([t], { type: "text/csv;charset=utf-8;" }), r = URL.createObjectURL(n);
21
+ return {
22
+ url: r,
23
+ revoke: () => URL.revokeObjectURL(r)
24
+ };
25
+ }
26
+ var b = /[\\/\x00-\x1f\x7f]/g, x = 200;
27
+ function S(e) {
28
+ return (e ?? "").replace(b, "_").slice(0, x) || "download";
29
+ }
30
+ function C(e) {
31
+ let { url: t, filename: n } = e, r = document.createElement("a");
32
+ r.href = t, r.download = S(n), r.style.display = "none", document.body.appendChild(r), r.click(), r.remove();
33
+ }
34
+ async function w(e) {
35
+ let { element: t, pixelRatio: n = 2, backgroundColor: r = null } = e, i = await g(t, {
36
+ scale: n,
37
+ backgroundColor: r,
38
+ useCORS: !0,
39
+ logging: !1
40
+ });
41
+ return new Promise((e, t) => {
42
+ i.toBlob((n) => {
43
+ if (!n) {
44
+ t(/* @__PURE__ */ Error("[widgets-v2] toBlob() returned null"));
45
+ return;
46
+ }
47
+ let r = URL.createObjectURL(n);
48
+ e({
49
+ url: r,
50
+ revoke: () => URL.revokeObjectURL(r)
51
+ });
52
+ }, "image/png");
53
+ });
54
+ }
55
+ //#endregion
56
+ //#region src/widgets-v2/actions/download/labels.ts
57
+ var T = {
58
+ trigger: "Download",
59
+ loading: "Downloading…",
60
+ error: "Download failed"
61
+ };
62
+ //#endregion
63
+ //#region src/widgets-v2/actions/download/download.tsx
64
+ function E(l) {
65
+ let p = t(36), { items: h, labels: g, icon: _, iconProps: v, onError: y } = l, b = _ === void 0 ? m : _, x;
66
+ p[0] === g ? x = p[1] : (x = {
67
+ ...T,
68
+ ...g
69
+ }, p[0] = g, p[1] = x);
70
+ let S = x, [w, E] = n(null), [D, O] = n(!1), [k, A] = n(null), j;
71
+ p[2] === Symbol.for("react.memo_cache_sentinel") ? (j = (e) => {
72
+ A(null), E(e.currentTarget);
73
+ }, p[2] = j) : j = p[2];
74
+ let M = j, N;
75
+ p[3] === Symbol.for("react.memo_cache_sentinel") ? (N = () => E(null), p[3] = N) : N = p[3];
76
+ let P = N, F;
77
+ p[4] !== D || p[5] !== y ? (F = (e) => {
78
+ e.disabled || D || (P(), O(!0), A(null), e.resolve().then((t) => {
79
+ let { url: n, filename: r, revoke: i } = t;
80
+ C({
81
+ url: n,
82
+ filename: e.filename ?? r
83
+ }), i && setTimeout(i, 0);
84
+ }).catch((e) => {
85
+ let t = e instanceof Error ? e : Error(String(e));
86
+ A(t), y?.(t);
87
+ }).finally(() => {
88
+ O(!1);
89
+ }));
90
+ }, p[4] = D, p[5] = y, p[6] = F) : F = p[6];
91
+ let I = F, L = D ? S.loading : k ? S.error : S.trigger, R = !!w || D, z = w ? "true" : void 0, B = D || void 0, V = k ? "true" : void 0, H = D || h.length === 0, U = R ? "active" : void 0, W;
92
+ p[7] !== b || p[8] !== v || p[9] !== D ? (W = D ? /* @__PURE__ */ d(r, {
93
+ size: 18,
94
+ color: "inherit"
95
+ }) : /* @__PURE__ */ d(b, {
96
+ fontSize: "small",
97
+ ...v
98
+ }), p[7] = b, p[8] = v, p[9] = D, p[10] = W) : W = p[10];
99
+ let G;
100
+ p[11] !== U || p[12] !== W || p[13] !== z || p[14] !== B || p[15] !== V || p[16] !== H || p[17] !== L ? (G = /* @__PURE__ */ d(i, {
101
+ size: "small",
102
+ "aria-label": L,
103
+ "aria-haspopup": "true",
104
+ "aria-expanded": z,
105
+ "aria-busy": B,
106
+ "data-error": V,
107
+ disabled: H,
108
+ onClick: M,
109
+ className: U,
110
+ children: W
111
+ }), p[11] = U, p[12] = W, p[13] = z, p[14] = B, p[15] = V, p[16] = H, p[17] = L, p[18] = G) : G = p[18];
112
+ let K;
113
+ p[19] !== G || p[20] !== L ? (K = /* @__PURE__ */ d(e, {
114
+ title: L,
115
+ children: G
116
+ }), p[19] = G, p[20] = L, p[21] = K) : K = p[21];
117
+ let q = !!w, J, Y;
118
+ p[22] === Symbol.for("react.memo_cache_sentinel") ? (J = {
119
+ vertical: "bottom",
120
+ horizontal: "right"
121
+ }, Y = {
122
+ vertical: "top",
123
+ horizontal: "right"
124
+ }, p[22] = J, p[23] = Y) : (J = p[22], Y = p[23]);
125
+ let X;
126
+ if (p[24] !== h || p[25] !== I) {
127
+ let e;
128
+ p[27] === I ? e = p[28] : (e = (e) => /* @__PURE__ */ f(c, {
129
+ disabled: e.disabled,
130
+ onClick: () => void I(e),
131
+ children: [e.icon && /* @__PURE__ */ d(a, {
132
+ sx: { color: "text.primary" },
133
+ children: e.icon
134
+ }), /* @__PURE__ */ d(o, { children: e.label })]
135
+ }, e.id), p[27] = I, p[28] = e), X = h.map(e), p[24] = h, p[25] = I, p[26] = X;
136
+ } else X = p[26];
137
+ let Z;
138
+ p[29] !== w || p[30] !== q || p[31] !== X ? (Z = /* @__PURE__ */ d(s, {
139
+ anchorEl: w,
140
+ open: q,
141
+ onClose: P,
142
+ variant: "menu",
143
+ elevation: 8,
144
+ anchorOrigin: J,
145
+ transformOrigin: Y,
146
+ children: X
147
+ }), p[29] = w, p[30] = q, p[31] = X, p[32] = Z) : Z = p[32];
148
+ let Q;
149
+ return p[33] !== K || p[34] !== Z ? (Q = /* @__PURE__ */ f(u, { children: [K, Z] }), p[33] = K, p[34] = Z, p[35] = Q) : Q = p[35], Q;
150
+ }
151
+ //#endregion
152
+ //#region src/widgets-v2/actions/download/icons.tsx
153
+ function D(e) {
154
+ let n = t(2), r;
155
+ return n[0] === e ? r = n[1] : (r = /* @__PURE__ */ d(h, { ...e }), n[0] = e, n[1] = r), r;
156
+ }
157
+ function O(e) {
158
+ let n = t(2), r;
159
+ return n[0] === e ? r = n[1] : (r = /* @__PURE__ */ d(p, { ...e }), n[0] = e, n[1] = r), r;
160
+ }
161
+ function k(e) {
162
+ let n = t(3), r;
163
+ n[0] === Symbol.for("react.memo_cache_sentinel") ? (r = /* @__PURE__ */ d("path", {
164
+ fill: "currentColor",
165
+ d: "M4.313 11.25h2.25v-1.125H4.688v-2.25h1.875V6.75h-2.25a.726.726 0 0 0-.535.216.726.726 0 0 0-.216.534v3c0 .213.072.39.216.534a.726.726 0 0 0 .534.216Zm2.925 0h2.25c.212 0 .39-.072.534-.216a.726.726 0 0 0 .216-.534V9.375a.931.931 0 0 0-.216-.59.658.658 0 0 0-.534-.273H8.363v-.637h1.875V6.75h-2.25a.726.726 0 0 0-.535.216.726.726 0 0 0-.216.534v1.125c0 .213.072.403.216.572a.675.675 0 0 0 .534.253h1.126v.675H7.238v1.125Zm4.95 0h1.124l1.313-4.5H13.5l-.75 2.588L12 6.75h-1.125l1.313 4.5ZM3 15c-.413 0-.766-.147-1.06-.44a1.445 1.445 0 0 1-.44-1.06v-9c0-.412.147-.766.44-1.06C2.235 3.148 2.588 3 3 3h12c.412 0 .766.147 1.06.44.293.294.44.648.44 1.06v9c0 .412-.147.766-.44 1.06-.294.293-.647.44-1.06.44H3Zm0-1.5h12v-9H3v9Z"
166
+ }), n[0] = r) : r = n[0];
167
+ let i;
168
+ return n[1] === e ? i = n[2] : (i = /* @__PURE__ */ d(l, {
169
+ viewBox: "0 0 18 18",
170
+ ...e,
171
+ children: r
172
+ }), n[1] = e, n[2] = i), i;
173
+ }
174
+ //#endregion
175
+ //#region src/widgets-v2/actions/download/constants.ts
176
+ var A = {
177
+ png: "png",
178
+ csv: "csv",
179
+ markdown: "md"
180
+ };
181
+ //#endregion
182
+ //#region src/widgets-v2/actions/download/png-item.tsx
183
+ function j(e) {
184
+ return {
185
+ id: A.png,
186
+ label: e.label ?? "PNG",
187
+ icon: /* @__PURE__ */ d(D, { fontSize: "small" }),
188
+ resolve: async () => {
189
+ let t = e.getCaptureEl();
190
+ if (!t) throw Error("[widgets-v2] No PNG capture element available");
191
+ let n = await w({
192
+ element: t,
193
+ pixelRatio: e.pixelRatio,
194
+ backgroundColor: e.backgroundColor
195
+ });
196
+ return {
197
+ url: n.url,
198
+ filename: `${e.filename}.png`,
199
+ revoke: n.revoke
200
+ };
201
+ }
202
+ };
203
+ }
204
+ //#endregion
205
+ //#region src/widgets-v2/actions/download/csv-item.tsx
206
+ function M(e) {
207
+ return {
208
+ id: A.csv,
209
+ label: e.label ?? "CSV",
210
+ icon: /* @__PURE__ */ d(k, { fontSize: "small" }),
211
+ resolve: () => {
212
+ if (e.getCsv) {
213
+ let t = e.getCsv(), n = new Blob([t], { type: "text/csv;charset=utf-8;" }), r = URL.createObjectURL(n);
214
+ return Promise.resolve({
215
+ url: r,
216
+ filename: `${e.filename}.csv`,
217
+ revoke: () => URL.revokeObjectURL(r)
218
+ });
219
+ }
220
+ let t = y(e.getRows());
221
+ return Promise.resolve({
222
+ url: t.url,
223
+ filename: `${e.filename}.csv`,
224
+ revoke: t.revoke
225
+ });
226
+ }
227
+ };
228
+ }
229
+ //#endregion
230
+ export { O as a, T as c, v as d, C as f, k as i, w as l, j as n, D as o, A as r, E as s, M as t, y as u };
231
+
232
+ //# sourceMappingURL=download-BT6qBamM.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"download-BT6qBamM.js","names":["html2canvas","DownloadHandle","url","revoke","CSV_FORMULA_PREFIX","toCsvString","rows","escape","cell","value","String","JSON","stringify","test","replace","map","row","join","downloadToCSV","csv","blob","Blob","type","URL","createObjectURL","revokeObjectURL","UNSAFE_FILENAME_CHARS","MAX_FILENAME_LENGTH","sanitizeFilename","name","slice","triggerLinkDownload","args","filename","a","document","createElement","href","download","style","display","body","appendChild","click","remove","DownloadDOMToPNGOptions","element","HTMLElement","pixelRatio","backgroundColor","downloadDOMToPNG","opts","Promise","canvas","scale","useCORS","logging","resolve","reject","toBlob","Error","DownloadLabels","trigger","loading","error","DEFAULT_DOWNLOAD_LABELS","useCallback","useState","ComponentType","CircularProgress","IconButton","ListItemIcon","ListItemText","Menu","MenuItem","SvgIconProps","FileDownload","DownloadIcon","Tooltip","triggerLinkDownload","DownloadItem","DEFAULT_DOWNLOAD_LABELS","DownloadLabels","DownloadProps","items","labels","Partial","icon","iconProps","onError","err","Error","Download","t0","$","_c","t1","Icon","undefined","t2","_labels","anchorEl","setAnchorEl","isDownloading","setIsDownloading","error","setError","t3","Symbol","for","e","currentTarget","open","t4","close","t5","item","disabled","resolve","then","t6","url","filename","revoke","setTimeout","catch","e_0","String","finally","onSelect","triggerLabel","loading","trigger","triggerActive","Boolean","t7","t8","t9","length","t10","t11","t12","t13","t14","t15","t16","vertical","horizontal","t17","t18","item_0","id","color","label","map","t19","SvgIcon","SvgIconProps","ArticleOutlined","ImageOutlined","PNGIcon","props","$","_c","t0","MarkdownIcon","CSVIcon","Symbol","for","t1","DOWNLOAD_ITEM_IDS","png","csv","markdown","const","DownloadItemId","DOWNLOAD_ITEM_IDS","downloadDOMToPNG","PNGIcon","DownloadItem","BuildPngDownloadItemArgs","filename","getCaptureEl","HTMLElement","pixelRatio","backgroundColor","label","buildPngDownloadItem","args","id","png","icon","resolve","el","Error","handle","element","url","revoke","DOWNLOAD_ITEM_IDS","downloadToCSV","CSVIcon","DownloadItem","BuildCsvDownloadItemBase","filename","label","BuildCsvDownloadItemArgs","getRows","getCsv","buildCsvDownloadItem","args","id","csv","icon","resolve","blob","Blob","type","url","URL","createObjectURL","Promise","revoke","revokeObjectURL","handle"],"sources":["../src/widgets-v2/actions/download/exports.ts","../src/widgets-v2/actions/download/labels.ts","../src/widgets-v2/actions/download/download.tsx","../src/widgets-v2/actions/download/icons.tsx","../src/widgets-v2/actions/download/constants.ts","../src/widgets-v2/actions/download/png-item.tsx","../src/widgets-v2/actions/download/csv-item.tsx"],"sourcesContent":["/**\n * Pure download helpers — no React, no DOM lifecycle outside the link click.\n * Component layer in {@link ./download.tsx} orchestrates these.\n */\n\nimport html2canvas from 'html2canvas'\n\nexport interface DownloadHandle {\n url: string\n revoke: () => void\n}\n\n// Leading characters that Excel / Sheets / Numbers interpret as a formula\n// when the CSV is opened. Prefixing the cell with a single quote forces the\n// spreadsheet app to render it as plain text. Tab and CR are included\n// because some tooling strips leading whitespace before formula evaluation.\nconst CSV_FORMULA_PREFIX = /^[=+\\-@\\t\\r]/\n\nexport function toCsvString(rows: readonly (readonly unknown[])[]): string {\n const escape = (cell: unknown): string => {\n if (cell == null) return ''\n let value =\n typeof cell === 'string'\n ? cell\n : typeof cell === 'number' || typeof cell === 'boolean'\n ? String(cell)\n : JSON.stringify(cell)\n if (CSV_FORMULA_PREFIX.test(value)) value = `'${value}`\n if (/[\",\\n\\r]/.test(value)) return `\"${value.replace(/\"/g, '\"\"')}\"`\n return value\n }\n return rows.map((row) => row.map(escape).join(',')).join('\\n')\n}\n\nexport function downloadToCSV(\n rows: readonly (readonly unknown[])[],\n): DownloadHandle {\n const csv = toCsvString(rows)\n const blob = new Blob([csv], { type: 'text/csv;charset=utf-8;' })\n const url = URL.createObjectURL(blob)\n return { url, revoke: () => URL.revokeObjectURL(url) }\n}\n\n// Path separators, NUL, and ASCII control chars. Filenames containing these\n// can confuse the browser download stack and historically enabled\n// Content-Disposition-style trickery.\n// eslint-disable-next-line no-control-regex\nconst UNSAFE_FILENAME_CHARS = /[\\\\/\\x00-\\x1f\\x7f]/g\nconst MAX_FILENAME_LENGTH = 200\n\nexport function sanitizeFilename(name: string): string {\n return (\n (name ?? '')\n .replace(UNSAFE_FILENAME_CHARS, '_')\n .slice(0, MAX_FILENAME_LENGTH) || 'download'\n )\n}\n\n/**\n * Triggers a browser download for the given URL by synthesizing an anchor,\n * clicking it, and removing it. Pure DOM — no React. The filename is run\n * through {@link sanitizeFilename} before being assigned to `a.download`.\n */\nexport function triggerLinkDownload(args: {\n url: string\n filename: string\n}): void {\n const { url, filename } = args\n const a = document.createElement('a')\n a.href = url\n a.download = sanitizeFilename(filename)\n a.style.display = 'none'\n document.body.appendChild(a)\n a.click()\n a.remove()\n}\n\nexport interface DownloadDOMToPNGOptions {\n element: HTMLElement\n /** html2canvas `scale`. Default 2 — crisp on hi-DPI displays. */\n pixelRatio?: number\n /**\n * html2canvas `backgroundColor`. Default `null` (transparent) so the PNG\n * inherits whatever surface it lands on when the user pastes it.\n */\n backgroundColor?: string | null\n}\n\n/**\n * Rasterise an HTMLElement to PNG via `html2canvas` and wrap the result in\n * a `DownloadHandle`. The caller is responsible for calling `handle.revoke`\n * after the link click is dispatched. Used by per-widget download configs\n * to power the PNG menu item.\n */\nexport async function downloadDOMToPNG(\n opts: DownloadDOMToPNGOptions,\n): Promise<DownloadHandle> {\n const { element, pixelRatio = 2, backgroundColor = null } = opts\n const canvas = await html2canvas(element, {\n scale: pixelRatio,\n backgroundColor,\n useCORS: true,\n logging: false,\n })\n return new Promise<DownloadHandle>((resolve, reject) => {\n canvas.toBlob((blob) => {\n if (!blob) {\n reject(new Error('[widgets-v2] toBlob() returned null'))\n return\n }\n const url = URL.createObjectURL(blob)\n resolve({ url, revoke: () => URL.revokeObjectURL(url) })\n }, 'image/png')\n })\n}\n","export interface DownloadLabels {\n trigger: string\n /** Tooltip / aria-label shown on the trigger while a download is in flight. */\n loading: string\n /**\n * Tooltip / aria-label shown on the trigger after a download failed. Cleared\n * the next time the menu opens.\n */\n error: string\n}\n\nexport const DEFAULT_DOWNLOAD_LABELS: DownloadLabels = {\n trigger: 'Download',\n loading: 'Downloading…',\n error: 'Download failed',\n}\n","import { useCallback, useState, type ComponentType } from 'react'\nimport {\n CircularProgress,\n IconButton,\n ListItemIcon,\n ListItemText,\n Menu,\n MenuItem,\n type SvgIconProps,\n} from '@mui/material'\nimport { FileDownload as DownloadIcon } from '@mui/icons-material'\nimport { Tooltip } from '../../../components'\nimport { triggerLinkDownload } from './exports'\nimport type { DownloadItem } from './types'\nimport { DEFAULT_DOWNLOAD_LABELS, type DownloadLabels } from './labels'\n\nexport interface DownloadProps {\n items: readonly DownloadItem[]\n labels?: Partial<DownloadLabels>\n icon?: ComponentType<SvgIconProps>\n iconProps?: SvgIconProps\n /**\n * Fires when an item's `resolve()` rejects (or any step in the click-through\n * path throws). The error is normalised to a real `Error` first. Surface\n * to your telemetry / toast layer here; the trigger already shows a visual\n * error indicator independently.\n */\n onError?: (err: Error) => void\n}\n\nexport function Download({\n items,\n labels,\n icon: Icon = DownloadIcon,\n iconProps,\n onError,\n}: DownloadProps) {\n const _labels = { ...DEFAULT_DOWNLOAD_LABELS, ...labels }\n const [anchorEl, setAnchorEl] = useState<HTMLElement | null>(null)\n const [isDownloading, setIsDownloading] = useState(false)\n const [error, setError] = useState<Error | null>(null)\n\n const open = useCallback((e: React.MouseEvent<HTMLButtonElement>) => {\n // Clear any prior error when the user re-engages the menu — the next\n // attempt is a fresh interaction, not a continuation of the failed one.\n setError(null)\n setAnchorEl(e.currentTarget)\n }, [])\n const close = useCallback(() => setAnchorEl(null), [])\n\n const onSelect = useCallback(\n (item: DownloadItem) => {\n // Single-flight: ignore re-entry while a download is already in flight.\n // The trigger is `disabled` and the menu is closed during that window,\n // so this guard mostly defends against future call sites that bypass\n // the menu (e.g. keyboard shortcuts).\n if (item.disabled || isDownloading) return\n close()\n setIsDownloading(true)\n setError(null)\n item\n .resolve()\n .then(({ url, filename, revoke }) => {\n // `item.filename` overrides what `resolve()` returns — lets consumers\n // template the filename with widget metadata declaratively.\n triggerLinkDownload({ url, filename: item.filename ?? filename })\n // Defer revoke past the current task so Safari / Firefox-on-slow-disk\n // can dispatch the download before the blob URL is invalidated.\n // Synchronous revoke here can silently cancel the download.\n if (revoke) setTimeout(revoke, 0)\n })\n .catch((err: unknown) => {\n const e = err instanceof Error ? err : new Error(String(err))\n setError(e)\n onError?.(e)\n })\n .finally(() => {\n setIsDownloading(false)\n })\n },\n [close, isDownloading, onError],\n )\n\n const triggerLabel = isDownloading\n ? _labels.loading\n : error\n ? _labels.error\n : _labels.trigger\n const triggerActive = Boolean(anchorEl) || isDownloading\n\n return (\n <>\n <Tooltip title={triggerLabel}>\n <IconButton\n size='small'\n aria-label={triggerLabel}\n aria-haspopup='true'\n aria-expanded={anchorEl ? 'true' : undefined}\n aria-busy={isDownloading || undefined}\n data-error={error ? 'true' : undefined}\n disabled={isDownloading || items.length === 0}\n onClick={open}\n className={triggerActive ? 'active' : undefined}\n >\n {isDownloading ? (\n <CircularProgress size={18} color='inherit' />\n ) : (\n <Icon fontSize='small' {...iconProps} />\n )}\n </IconButton>\n </Tooltip>\n <Menu\n anchorEl={anchorEl}\n open={Boolean(anchorEl)}\n onClose={close}\n variant='menu'\n elevation={8}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'right',\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'right',\n }}\n >\n {items.map((item) => (\n <MenuItem\n key={item.id}\n disabled={item.disabled}\n onClick={() => void onSelect(item)}\n >\n {item.icon && (\n <ListItemIcon sx={{ color: 'text.primary' }}>\n {item.icon}\n </ListItemIcon>\n )}\n <ListItemText>{item.label}</ListItemText>\n </MenuItem>\n ))}\n </Menu>\n </>\n )\n}\n","import { SvgIcon, type SvgIconProps } from '@mui/material'\nimport { ArticleOutlined, ImageOutlined } from '@mui/icons-material'\n\n/**\n * Generic \"image\" glyph used for the PNG download item. Wraps MUI's\n * `ImageOutlined` so callers can swap it via the per-widget download\n * config's `icon` override without pulling MUI directly.\n */\nexport function PNGIcon(props: SvgIconProps) {\n return <ImageOutlined {...props} />\n}\n\n/**\n * Generic \"document\" glyph used for the Markdown download item. Wraps MUI's\n * `ArticleOutlined`, mirroring {@link PNGIcon}, so the Markdown menu item\n * carries an icon consistent with the other download formats.\n */\nexport function MarkdownIcon(props: SvgIconProps) {\n return <ArticleOutlined {...props} />\n}\n\n/**\n * \"CSV\" rectangle with the letters spelled inside — matches v1 visual and is\n * easier to recognise in a download menu than a generic table glyph.\n */\nexport function CSVIcon(props: SvgIconProps) {\n return (\n <SvgIcon viewBox='0 0 18 18' {...props}>\n <path\n fill='currentColor'\n d='M4.313 11.25h2.25v-1.125H4.688v-2.25h1.875V6.75h-2.25a.726.726 0 0 0-.535.216.726.726 0 0 0-.216.534v3c0 .213.072.39.216.534a.726.726 0 0 0 .534.216Zm2.925 0h2.25c.212 0 .39-.072.534-.216a.726.726 0 0 0 .216-.534V9.375a.931.931 0 0 0-.216-.59.658.658 0 0 0-.534-.273H8.363v-.637h1.875V6.75h-2.25a.726.726 0 0 0-.535.216.726.726 0 0 0-.216.534v1.125c0 .213.072.403.216.572a.675.675 0 0 0 .534.253h1.126v.675H7.238v1.125Zm4.95 0h1.124l1.313-4.5H13.5l-.75 2.588L12 6.75h-1.125l1.313 4.5ZM3 15c-.413 0-.766-.147-1.06-.44a1.445 1.445 0 0 1-.44-1.06v-9c0-.412.147-.766.44-1.06C2.235 3.148 2.588 3 3 3h12c.412 0 .766.147 1.06.44.293.294.44.648.44 1.06v9c0 .412-.147.766-.44 1.06-.294.293-.647.44-1.06.44H3Zm0-1.5h12v-9H3v9Z'\n />\n </SvgIcon>\n )\n}\n","/**\n * Canonical `DownloadItem.id`s for the built-in download formats. Centralised\n * so the per-format builders — and anything that keys off the id (menu logic,\n * tests) — reference one source of truth instead of re-typing string literals.\n * The Markdown format keeps the short `'md'` id to match its `.md` extension.\n */\nexport const DOWNLOAD_ITEM_IDS = {\n png: 'png',\n csv: 'csv',\n markdown: 'md',\n} as const\n\nexport type DownloadItemId =\n (typeof DOWNLOAD_ITEM_IDS)[keyof typeof DOWNLOAD_ITEM_IDS]\n","import { DOWNLOAD_ITEM_IDS } from './constants'\nimport { downloadDOMToPNG } from './exports'\nimport { PNGIcon } from './icons'\nimport type { DownloadItem } from './types'\n\nexport interface BuildPngDownloadItemArgs {\n /** Base filename (without extension). The item appends `.png`. */\n filename: string\n /**\n * Reads the capture element to rasterise. Called at click time so the\n * download config doesn't capture a stale reference. Wire it to\n * `() => getCaptureEl(id)` from `widgets-v2/stores`.\n */\n getCaptureEl: () => HTMLElement | null\n /** html2canvas `scale`. Default 2. */\n pixelRatio?: number\n /** html2canvas `backgroundColor`. Default transparent (`null`). */\n backgroundColor?: string | null\n /** Override the menu label. Default `'PNG'`. */\n label?: string\n}\n\n/**\n * Builds the standard PNG `DownloadItem` used by every per-widget download\n * config. Centralised so the menu label, icon, error message, and filename\n * suffix stay consistent across widgets without each `create*DownloadConfig`\n * re-deriving the same shape.\n */\nexport function buildPngDownloadItem(\n args: BuildPngDownloadItemArgs,\n): DownloadItem {\n return {\n id: DOWNLOAD_ITEM_IDS.png,\n label: args.label ?? 'PNG',\n icon: <PNGIcon fontSize='small' />,\n resolve: async () => {\n const el = args.getCaptureEl()\n if (!el) {\n throw new Error('[widgets-v2] No PNG capture element available')\n }\n const handle = await downloadDOMToPNG({\n element: el,\n pixelRatio: args.pixelRatio,\n backgroundColor: args.backgroundColor,\n })\n return {\n url: handle.url,\n filename: `${args.filename}.png`,\n revoke: handle.revoke,\n }\n },\n }\n}\n","import { DOWNLOAD_ITEM_IDS } from './constants'\nimport { downloadToCSV } from './exports'\nimport { CSVIcon } from './icons'\nimport type { DownloadItem } from './types'\n\ninterface BuildCsvDownloadItemBase {\n /** Base filename (without extension). The item appends `.csv`. */\n filename: string\n /** Override the menu label. Default `'CSV'`. */\n label?: string\n}\n\n/**\n * Args for {@link buildCsvDownloadItem}. A discriminated union: a caller must\n * supply exactly one content source — `getRows` (rows serialised through the\n * shared `toCsvString`) or `getCsv` (a pre-built CSV string). The `?: never`\n * arms make passing both — or neither — a compile-time error.\n */\nexport type BuildCsvDownloadItemArgs =\n | (BuildCsvDownloadItemBase & {\n /**\n * Builds the CSV rows at click time. Used by most widgets — rows are run\n * through `toCsvString` so escaping (incl. the spreadsheet\n * formula-injection guard) stays consistent across widgets.\n */\n getRows: () => readonly (readonly unknown[])[]\n getCsv?: never\n })\n | (BuildCsvDownloadItemBase & {\n /**\n * Returns a pre-built CSV string at click time. Escape hatch for widgets\n * (e.g. Table) that already serialise their own CSV with bespoke\n * header/cell handling.\n */\n getCsv: () => string\n getRows?: never\n })\n\n/**\n * Builds the standard CSV `DownloadItem` used by every per-widget download\n * config. Centralised so the menu label, icon, and `.csv` filename suffix stay\n * consistent across widgets — mirrors {@link buildPngDownloadItem} so neither\n * format can drift again.\n */\nexport function buildCsvDownloadItem(\n args: BuildCsvDownloadItemArgs,\n): DownloadItem {\n return {\n id: DOWNLOAD_ITEM_IDS.csv,\n label: args.label ?? 'CSV',\n icon: <CSVIcon fontSize='small' />,\n resolve: () => {\n if (args.getCsv) {\n const csv = args.getCsv()\n const blob = new Blob([csv], { type: 'text/csv;charset=utf-8;' })\n const url = URL.createObjectURL(blob)\n return Promise.resolve({\n url,\n filename: `${args.filename}.csv`,\n revoke: () => URL.revokeObjectURL(url),\n })\n }\n const handle = downloadToCSV(args.getRows())\n return Promise.resolve({\n url: handle.url,\n filename: `${args.filename}.csv`,\n revoke: handle.revoke,\n })\n },\n }\n}\n"],"mappings":"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"}
@@ -0,0 +1,133 @@
1
+ import { t as e } from "./use-widget-selector-VSPhfhNm.js";
2
+ import { t } from "./shared-resize-observer-BEiP2rQt.js";
3
+ import { t as n } from "./hooks-zf5gKZYq.js";
4
+ import { c as r } from "react/compiler-runtime";
5
+ import { useEffect as i, useImperativeHandle as a, useRef as o } from "react";
6
+ import { jsx as s } from "react/jsx-runtime";
7
+ import * as c from "echarts";
8
+ //#region src/widgets/echart/echart-ui.tsx
9
+ function l(e) {
10
+ let l = r(21), { id: u, ref: d, init: f, option: p, className: m, style: h, onEvents: g } = e, { ref: _, instance: v } = n(u), y = o(null), b, x;
11
+ l[0] === Symbol.for("react.memo_cache_sentinel") ? (b = () => y.current, x = [], l[0] = b, l[1] = x) : (b = l[0], x = l[1]), a(d, b, x);
12
+ let S, C;
13
+ l[2] !== v || l[3] !== _ || l[4] !== f ? (S = () => {
14
+ if (_.current) return y.current = c.init(_.current, null, {
15
+ renderer: "svg",
16
+ height: 304,
17
+ ...f
18
+ }), v.current = y.current, () => {
19
+ y.current?.dispose(), y.current = null, v.current = null;
20
+ };
21
+ }, C = [
22
+ v,
23
+ _,
24
+ f
25
+ ], l[2] = v, l[3] = _, l[4] = f, l[5] = S, l[6] = C) : (S = l[5], C = l[6]), i(S, C);
26
+ let w, T;
27
+ l[7] === p ? (w = l[8], T = l[9]) : (w = () => {
28
+ y.current?.setOption(p, {
29
+ lazyUpdate: !0,
30
+ notMerge: !0
31
+ });
32
+ }, T = [p], l[7] = p, l[8] = w, l[9] = T), i(w, T);
33
+ let E, D;
34
+ l[10] === _ ? (E = l[11], D = l[12]) : (E = () => {
35
+ if (_.current) return t(_.current, () => {
36
+ y.current?.resize();
37
+ });
38
+ }, D = [_], l[10] = _, l[11] = E, l[12] = D), i(E, D);
39
+ let O, k;
40
+ l[13] === g ? (O = l[14], k = l[15]) : (O = () => {
41
+ let e = { ...g ?? {} };
42
+ return e.click || (e.mousemove = () => {
43
+ y.current?.getZr().setCursorStyle("default");
44
+ }), Object.entries(e).forEach((e) => {
45
+ let [t, n] = e;
46
+ y.current?.on(t, n);
47
+ }), () => {
48
+ Object.entries(e).forEach((e) => {
49
+ let [t] = e;
50
+ y.current?.off(t);
51
+ });
52
+ };
53
+ }, k = [g], l[13] = g, l[14] = O, l[15] = k), i(O, k);
54
+ let A;
55
+ return l[16] !== _ || l[17] !== m || l[18] !== u || l[19] !== h ? (A = /* @__PURE__ */ s("div", {
56
+ id: u,
57
+ ref: _,
58
+ style: h,
59
+ className: m
60
+ }), l[16] = _, l[17] = m, l[18] = u, l[19] = h, l[20] = A) : A = l[20], A;
61
+ }
62
+ //#endregion
63
+ //#region src/widgets/echart/echart.tsx
64
+ function u(t) {
65
+ let n = r(12), { id: i, data: a, widgetOption: o, onEvents: c, init: u } = e(t.id, d), p;
66
+ n[0] === a ? p = n[1] : (p = f(a), n[0] = a, n[1] = p);
67
+ let m = p, h;
68
+ n[2] === m ? h = n[3] : (h = m && { dataset: m }, n[2] = m, n[3] = h);
69
+ let g;
70
+ n[4] !== h || n[5] !== o ? (g = {
71
+ ...o,
72
+ ...h
73
+ }, n[4] = h, n[5] = o, n[6] = g) : g = n[6];
74
+ let _ = g;
75
+ if (!i) return null;
76
+ let v;
77
+ return n[7] !== u || n[8] !== c || n[9] !== _ || n[10] !== t.id ? (v = /* @__PURE__ */ s(l, {
78
+ id: t.id,
79
+ option: _,
80
+ onEvents: c,
81
+ init: u
82
+ }), n[7] = u, n[8] = c, n[9] = _, n[10] = t.id, n[11] = v) : v = n[11], v;
83
+ }
84
+ function d(e) {
85
+ return {
86
+ id: e?.id,
87
+ data: e?.data,
88
+ widgetOption: e?.option,
89
+ onEvents: e?.onEvents,
90
+ init: e?.init
91
+ };
92
+ }
93
+ function f(e) {
94
+ if (!(!e || e.length === 0)) return e.map((e) => ({ source: e }));
95
+ }
96
+ //#endregion
97
+ //#region src/widgets/echart/options.ts
98
+ function p({ theme: e }) {
99
+ return {
100
+ grid: {
101
+ left: parseInt(e.spacing(1)),
102
+ top: parseInt(e.spacing(3)),
103
+ right: parseInt(e.spacing(1)),
104
+ bottom: parseInt(e.spacing(4)),
105
+ containLabel: !0
106
+ },
107
+ toolbox: { show: !1 },
108
+ tooltip: {
109
+ axisPointer: { type: "line" },
110
+ backgroundColor: e.palette.grey[900],
111
+ borderWidth: 0,
112
+ padding: [parseInt(e.spacing(1)), parseInt(e.spacing(1))],
113
+ textStyle: {
114
+ color: e.palette.common.white,
115
+ fontSize: 11,
116
+ fontFamily: e.typography.caption.fontFamily
117
+ },
118
+ trigger: "axis"
119
+ },
120
+ legend: {
121
+ type: "scroll",
122
+ bottom: 0
123
+ },
124
+ axisPointer: { lineStyle: { color: e.palette.grey[400] } },
125
+ xAxis: {},
126
+ yAxis: {},
127
+ color: [e.palette.secondary.main, ...Object.values(e.palette.qualitative?.bold ?? {})]
128
+ };
129
+ }
130
+ //#endregion
131
+ export { u as n, l as r, p as t };
132
+
133
+ //# sourceMappingURL=echart-BkaV3V5G.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"echart-BkaV3V5G.js","names":["useEffect","useRef","useImperativeHandle","echarts","EchartUIProps","useWidgetRef","observeResize","EchartUI","props","$","_c","id","ref","init","option","className","style","onEvents","chartRef","instance","chartInstanceRef","chartInstance","t0","t1","Symbol","for","current","t2","t3","renderer","height","dispose","t4","t5","setOption","lazyUpdate","notMerge","t6","t7","resize","t8","t9","_onEvents","click","mousemove","getZr","setCursorStyle","Object","entries","forEach","t10","event","handler","on","t11","event_0","off","EchartProps","EchartWidgetState","EchartWidgetData","EchartOptionsProps","EchartUI","useWidgetSelector","useMemo","Echart","props","$","_c","id","data","widgetOption","onEvents","init","_temp","t0","buildDataset","dataset","t1","t2","option","t3","w","length","undefined","map","d","source","EchartOptionsProps","EchartWidgetOptionProps","getCommonOptions","theme","grid","left","parseInt","spacing","top","right","bottom","containLabel","toolbox","show","tooltip","axisPointer","type","backgroundColor","palette","grey","borderWidth","padding","textStyle","color","common","white","fontSize","fontFamily","typography","caption","trigger","legend","lineStyle","xAxis","yAxis","secondary","main","Object","values","qualitative","bold","Record"],"sources":["../src/widgets/echart/echart-ui.tsx","../src/widgets/echart/echart.tsx","../src/widgets/echart/options.ts"],"sourcesContent":["import { useEffect, useRef, useImperativeHandle } from 'react'\nimport * as echarts from 'echarts'\nimport type { EchartUIProps } from './types'\nimport { useWidgetRef } from '../../hooks'\nimport { observeResize } from './shared-resize-observer'\n\n/**\n * Presentational component that initializes and manages an Apache ECharts instance.\n *\n * @remarks\n * Handles chart lifecycle (init, dispose), option updates, resize observation, and event listener management.\n * Uses SVG renderer with a default height of 304px.\n */\nexport function EchartUI(props: EchartUIProps) {\n const { id, ref, init, option, className, style, onEvents } = props\n\n const { ref: chartRef, instance: chartInstanceRef } =\n useWidgetRef<HTMLDivElement>(id)\n const chartInstance = useRef<echarts.ECharts>(null)\n\n useImperativeHandle(ref, () => chartInstance.current!, [])\n\n useEffect(() => {\n if (!chartRef.current) return\n\n chartInstance.current = echarts.init(chartRef.current, null, {\n renderer: 'svg',\n height: 304,\n ...init,\n })\n chartInstanceRef.current = chartInstance.current\n // Cleanup function\n return () => {\n chartInstance.current?.dispose()\n chartInstance.current = null\n chartInstanceRef.current = null\n }\n }, [chartInstanceRef, chartRef, init])\n\n // Update chart when options change\n useEffect(() => {\n chartInstance.current?.setOption(option, {\n lazyUpdate: true,\n notMerge: true,\n })\n }, [option])\n\n // Handle resize using shared ResizeObserver (single instance for all charts)\n useEffect(() => {\n if (!chartRef.current) return\n\n return observeResize(chartRef.current, () => {\n chartInstance.current?.resize()\n })\n }, [chartRef])\n\n useEffect(() => {\n const _onEvents = { ...(onEvents ?? {}) }\n if (!_onEvents.click) {\n _onEvents.mousemove = () => {\n chartInstance.current?.getZr().setCursorStyle('default')\n }\n }\n\n // Attach event listeners\n Object.entries(_onEvents).forEach(([event, handler]) => {\n chartInstance.current?.on(event, handler)\n })\n // Cleanup function to remove event listeners\n return () => {\n Object.entries(_onEvents).forEach(([event]) => {\n chartInstance.current?.off(event)\n })\n }\n }, [onEvents])\n\n return <div id={id} ref={chartRef} style={style} className={className} />\n}\n","import type {\n EchartProps,\n EchartWidgetState,\n EchartWidgetData,\n EchartOptionsProps,\n} from './types'\nimport { EchartUI } from './echart-ui'\nimport { useWidgetSelector } from '../stores/use-widget-selector'\nimport { useMemo } from 'react'\n\n/**\n * Stateful EChart widget component that reads data and options from the widget store and renders an ECharts chart.\n *\n * @remarks\n * Transforms widget data into ECharts dataset format and delegates rendering to {@link EchartUI}.\n */\nexport function Echart(props: EchartProps) {\n // Single consolidated subscription instead of 5 separate ones.\n const { id, data, widgetOption, onEvents, init } = useWidgetSelector(\n props.id,\n (w) => ({\n id: w?.id,\n data: (w as EchartWidgetState | undefined)?.data as\n | EchartWidgetData\n | undefined,\n widgetOption: (w as EchartWidgetState | undefined)?.option,\n onEvents: (w as EchartWidgetState | undefined)?.onEvents,\n init: (w as EchartWidgetState | undefined)?.init,\n }),\n )\n\n // Memoize dataset transformation to avoid re-computing on every render\n const dataset = useMemo(() => buildDataset(data), [data])\n\n const option = useMemo<EchartOptionsProps>(\n () => ({\n ...widgetOption,\n ...(dataset && { dataset }),\n }),\n [widgetOption, dataset],\n )\n\n if (!id) {\n return null\n }\n\n return (\n <EchartUI id={props.id} option={option} onEvents={onEvents} init={init} />\n )\n}\n\n/**\n * Builds the dataset configuration from widget data\n * @param data - The widget data array\n * @returns The dataset configuration for ECharts\n */\nfunction buildDataset(\n data: EchartWidgetData | undefined,\n): EchartOptionsProps['dataset'] {\n if (!data || data.length === 0) {\n return undefined\n }\n\n return data.map((d) => ({\n source: d,\n }))\n}\n","import type { EchartOptionsProps, EchartWidgetOptionProps } from './types'\n\n/**\n * Returns the shared base ECharts options used across all EChart-based widgets (bar, pie, histogram, etc.).\n *\n * @remarks\n * Configures grid spacing, tooltip styling, legend, axis pointer, and the default color palette\n * derived from the MUI theme.\n */\nexport function getCommonOptions({\n theme,\n}: EchartWidgetOptionProps<unknown>): EchartOptionsProps {\n return {\n grid: {\n left: parseInt(theme.spacing(1)),\n top: parseInt(theme.spacing(3)),\n right: parseInt(theme.spacing(1)),\n bottom: parseInt(theme.spacing(4)),\n containLabel: true,\n },\n toolbox: {\n show: false,\n },\n tooltip: {\n axisPointer: {\n type: 'line',\n },\n backgroundColor: theme.palette.grey[900],\n borderWidth: 0,\n padding: [parseInt(theme.spacing(1)), parseInt(theme.spacing(1))],\n textStyle: {\n color: theme.palette.common.white,\n fontSize: 11,\n fontFamily: theme.typography.caption.fontFamily,\n },\n trigger: 'axis',\n },\n legend: {\n type: 'scroll',\n bottom: 0,\n },\n axisPointer: {\n lineStyle: {\n color: theme.palette.grey[400],\n },\n },\n xAxis: {},\n yAxis: {},\n color: [\n theme.palette.secondary.main,\n ...Object.values(\n (theme.palette as { qualitative?: { bold?: Record<string, string> } })\n .qualitative?.bold ?? {},\n ),\n ],\n }\n}\n"],"mappings":"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"}