@carto/ps-react-ui 4.7.0 → 4.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (578) hide show
  1. package/dist/category-DwaeYjpX.js +656 -0
  2. package/dist/category-DwaeYjpX.js.map +1 -0
  3. package/dist/change-column-Cidl_M-4.js +1110 -0
  4. package/dist/change-column-Cidl_M-4.js.map +1 -0
  5. package/dist/data-zoom-layout-BH0LPwSy.js +28 -0
  6. package/dist/data-zoom-layout-BH0LPwSy.js.map +1 -0
  7. package/dist/echart-CU0KmClP.js +176 -0
  8. package/dist/echart-CU0KmClP.js.map +1 -0
  9. package/dist/exports-Cx-f6m6U.js +63 -0
  10. package/dist/exports-Cx-f6m6U.js.map +1 -0
  11. package/dist/formula-DuC0NQLH.js +79 -0
  12. package/dist/formula-DuC0NQLH.js.map +1 -0
  13. package/dist/markdown-BD1jcknS.js +8326 -0
  14. package/dist/markdown-BD1jcknS.js.map +1 -0
  15. package/dist/merge-options-DCkkHZIf.js +34 -0
  16. package/dist/merge-options-DCkkHZIf.js.map +1 -0
  17. package/dist/{styles-BYTyKQFP.js → option-builders-F-c9ELi1.js} +25 -45
  18. package/dist/option-builders-F-c9ELi1.js.map +1 -0
  19. package/dist/png-item-CS4z1iSH.js +45 -0
  20. package/dist/png-item-CS4z1iSH.js.map +1 -0
  21. package/dist/range-DsqTjSpg.js +186 -0
  22. package/dist/range-DsqTjSpg.js.map +1 -0
  23. package/dist/spread-CTuIXZSM.js +67 -0
  24. package/dist/spread-CTuIXZSM.js.map +1 -0
  25. package/dist/style-DVnT6HC1.js +131 -0
  26. package/dist/style-DVnT6HC1.js.map +1 -0
  27. package/dist/styles-cohnxh9F.js +23 -0
  28. package/dist/styles-cohnxh9F.js.map +1 -0
  29. package/dist/table-HIpXuq4G.js +390 -0
  30. package/dist/table-HIpXuq4G.js.map +1 -0
  31. package/dist/transforms-Cdx4fkU5.js +106 -0
  32. package/dist/transforms-Cdx4fkU5.js.map +1 -0
  33. package/dist/types/widgets/echart/utils.test.d.ts +1 -0
  34. package/dist/types/widgets/formula/config.test.d.ts +1 -0
  35. package/dist/types/widgets/stores/widget-store-branches.test.d.ts +1 -0
  36. package/dist/types/widgets/table/config.test.d.ts +1 -0
  37. package/dist/types/widgets-v2/actions/brush-toggle/brush-toggle.d.ts +56 -0
  38. package/dist/types/widgets-v2/actions/brush-toggle/index.d.ts +3 -0
  39. package/dist/types/widgets-v2/actions/brush-toggle/labels.d.ts +5 -0
  40. package/dist/types/widgets-v2/actions/brush-toggle/style.d.ts +12 -0
  41. package/dist/types/widgets-v2/actions/brush-toggle/transforms.d.ts +11 -0
  42. package/dist/types/widgets-v2/actions/brush-toggle/transforms.test.d.ts +1 -0
  43. package/dist/types/widgets-v2/actions/change-column/change-column-icon.d.ts +2 -0
  44. package/dist/types/widgets-v2/actions/change-column/change-column.d.ts +29 -0
  45. package/dist/types/widgets-v2/actions/change-column/index.d.ts +3 -0
  46. package/dist/types/widgets-v2/actions/change-column/labels.d.ts +5 -0
  47. package/dist/types/widgets-v2/actions/change-column/sortable-column-item.d.ts +14 -0
  48. package/dist/types/widgets-v2/actions/change-column/style.d.ts +33 -0
  49. package/dist/types/widgets-v2/actions/change-column/types.d.ts +10 -0
  50. package/dist/types/widgets-v2/actions/download/download.d.ts +18 -0
  51. package/dist/types/widgets-v2/actions/download/exports.d.ts +37 -0
  52. package/dist/types/widgets-v2/actions/download/icons.d.ts +12 -0
  53. package/dist/types/widgets-v2/actions/download/index.d.ts +6 -0
  54. package/dist/types/widgets-v2/actions/download/labels.d.ts +11 -0
  55. package/dist/types/widgets-v2/actions/download/png-item.d.ts +24 -0
  56. package/dist/types/widgets-v2/actions/download/style.d.ts +1 -0
  57. package/dist/types/widgets-v2/actions/download/types.d.ts +35 -0
  58. package/dist/types/widgets-v2/actions/fullscreen/fullscreen.d.ts +59 -0
  59. package/dist/types/widgets-v2/actions/fullscreen/index.d.ts +3 -0
  60. package/dist/types/widgets-v2/actions/fullscreen/labels.d.ts +5 -0
  61. package/dist/types/widgets-v2/actions/fullscreen/style.d.ts +48 -0
  62. package/dist/types/widgets-v2/actions/fullscreen/types.d.ts +14 -0
  63. package/dist/types/widgets-v2/actions/index.d.ts +9 -0
  64. package/dist/types/widgets-v2/actions/lock-selection/index.d.ts +3 -0
  65. package/dist/types/widgets-v2/actions/lock-selection/labels.d.ts +6 -0
  66. package/dist/types/widgets-v2/actions/lock-selection/lock-selection.d.ts +36 -0
  67. package/dist/types/widgets-v2/actions/lock-selection/style.d.ts +12 -0
  68. package/dist/types/widgets-v2/actions/lock-selection/transforms.d.ts +6 -0
  69. package/dist/types/widgets-v2/actions/relative-data/index.d.ts +3 -0
  70. package/dist/types/widgets-v2/actions/relative-data/labels.d.ts +5 -0
  71. package/dist/types/widgets-v2/actions/relative-data/relative-data.d.ts +39 -0
  72. package/dist/types/widgets-v2/actions/relative-data/style.d.ts +12 -0
  73. package/dist/types/widgets-v2/actions/relative-data/transforms.d.ts +30 -0
  74. package/dist/types/widgets-v2/actions/relative-data/transforms.test.d.ts +1 -0
  75. package/dist/types/widgets-v2/actions/searcher/filter.d.ts +6 -0
  76. package/dist/types/widgets-v2/actions/searcher/index.d.ts +4 -0
  77. package/dist/types/widgets-v2/actions/searcher/labels.d.ts +7 -0
  78. package/dist/types/widgets-v2/actions/searcher/searcher-toggle.d.ts +23 -0
  79. package/dist/types/widgets-v2/actions/searcher/searcher.d.ts +11 -0
  80. package/dist/types/widgets-v2/actions/searcher/style.d.ts +16 -0
  81. package/dist/types/widgets-v2/actions/stack-toggle/index.d.ts +3 -0
  82. package/dist/types/widgets-v2/actions/stack-toggle/labels.d.ts +5 -0
  83. package/dist/types/widgets-v2/actions/stack-toggle/stack-toggle.d.ts +10 -0
  84. package/dist/types/widgets-v2/actions/stack-toggle/style.d.ts +12 -0
  85. package/dist/types/widgets-v2/actions/stack-toggle/transforms.d.ts +13 -0
  86. package/dist/types/widgets-v2/actions/stack-toggle/transforms.test.d.ts +1 -0
  87. package/dist/types/widgets-v2/actions/zoom-toggle/index.d.ts +3 -0
  88. package/dist/types/widgets-v2/actions/zoom-toggle/labels.d.ts +5 -0
  89. package/dist/types/widgets-v2/actions/zoom-toggle/style.d.ts +12 -0
  90. package/dist/types/widgets-v2/actions/zoom-toggle/transforms.d.ts +51 -0
  91. package/dist/types/widgets-v2/actions/zoom-toggle/transforms.test.d.ts +1 -0
  92. package/dist/types/widgets-v2/actions/zoom-toggle/zoom-toggle.d.ts +35 -0
  93. package/dist/types/widgets-v2/bar/download.d.ts +24 -0
  94. package/dist/types/widgets-v2/bar/index.d.ts +4 -0
  95. package/dist/types/widgets-v2/bar/options.d.ts +43 -0
  96. package/dist/types/widgets-v2/bar/options.test.d.ts +1 -0
  97. package/dist/types/widgets-v2/bar/skeleton.d.ts +6 -0
  98. package/dist/types/widgets-v2/bar/types.d.ts +41 -0
  99. package/dist/types/widgets-v2/category/category-ui.d.ts +81 -0
  100. package/dist/types/widgets-v2/category/category.d.ts +48 -0
  101. package/dist/types/widgets-v2/category/components/category-bar-stacked.d.ts +28 -0
  102. package/dist/types/widgets-v2/category/components/category-bar.d.ts +23 -0
  103. package/dist/types/widgets-v2/category/components/category-legend.d.ts +18 -0
  104. package/dist/types/widgets-v2/category/components/category-row-multi.d.ts +31 -0
  105. package/dist/types/widgets-v2/category/components/category-row-other.d.ts +13 -0
  106. package/dist/types/widgets-v2/category/components/category-row-single.d.ts +28 -0
  107. package/dist/types/widgets-v2/category/components/category-row-stacked.d.ts +38 -0
  108. package/dist/types/widgets-v2/category/download.d.ts +16 -0
  109. package/dist/types/widgets-v2/category/download.test.d.ts +1 -0
  110. package/dist/types/widgets-v2/category/index.d.ts +10 -0
  111. package/dist/types/widgets-v2/category/skeleton.d.ts +11 -0
  112. package/dist/types/widgets-v2/category/style.d.ts +166 -0
  113. package/dist/types/widgets-v2/category/types.d.ts +49 -0
  114. package/dist/types/widgets-v2/echart/echart-ui.d.ts +44 -0
  115. package/dist/types/widgets-v2/echart/echart.d.ts +75 -0
  116. package/dist/types/widgets-v2/echart/index.d.ts +4 -0
  117. package/dist/types/widgets-v2/echart/shared-resize-observer.d.ts +5 -0
  118. package/dist/types/widgets-v2/echart/shared-resize-observer.test.d.ts +1 -0
  119. package/dist/types/widgets-v2/echart/style.d.ts +6 -0
  120. package/dist/types/widgets-v2/echart/use-chart-selection.d.ts +51 -0
  121. package/dist/types/widgets-v2/formula/delta.d.ts +22 -0
  122. package/dist/types/widgets-v2/formula/download.d.ts +20 -0
  123. package/dist/types/widgets-v2/formula/formula-ui.d.ts +20 -0
  124. package/dist/types/widgets-v2/formula/formula.d.ts +8 -0
  125. package/dist/types/widgets-v2/formula/index.d.ts +11 -0
  126. package/dist/types/widgets-v2/formula/note.d.ts +11 -0
  127. package/dist/types/widgets-v2/formula/prefix.d.ts +12 -0
  128. package/dist/types/widgets-v2/formula/series.d.ts +16 -0
  129. package/dist/types/widgets-v2/formula/skeleton.d.ts +4 -0
  130. package/dist/types/widgets-v2/formula/style.d.ts +29 -0
  131. package/dist/types/widgets-v2/formula/suffix.d.ts +12 -0
  132. package/dist/types/widgets-v2/formula/types.d.ts +40 -0
  133. package/dist/types/widgets-v2/formula/value.d.ts +14 -0
  134. package/dist/types/widgets-v2/histogram/download.d.ts +17 -0
  135. package/dist/types/widgets-v2/histogram/download.test.d.ts +1 -0
  136. package/dist/types/widgets-v2/histogram/index.d.ts +5 -0
  137. package/dist/types/widgets-v2/histogram/options.d.ts +42 -0
  138. package/dist/types/widgets-v2/histogram/options.test.d.ts +1 -0
  139. package/dist/types/widgets-v2/histogram/skeleton.d.ts +9 -0
  140. package/dist/types/widgets-v2/histogram/transforms.d.ts +17 -0
  141. package/dist/types/widgets-v2/histogram/transforms.test.d.ts +1 -0
  142. package/dist/types/widgets-v2/histogram/types.d.ts +47 -0
  143. package/dist/types/widgets-v2/index.d.ts +107 -0
  144. package/dist/types/widgets-v2/markdown/download.d.ts +16 -0
  145. package/dist/types/widgets-v2/markdown/download.test.d.ts +1 -0
  146. package/dist/types/widgets-v2/markdown/index.d.ts +6 -0
  147. package/dist/types/widgets-v2/markdown/markdown-content.d.ts +34 -0
  148. package/dist/types/widgets-v2/markdown/markdown-ui.d.ts +12 -0
  149. package/dist/types/widgets-v2/markdown/markdown.d.ts +6 -0
  150. package/dist/types/widgets-v2/markdown/skeleton.d.ts +4 -0
  151. package/dist/types/widgets-v2/markdown/style.d.ts +61 -0
  152. package/dist/types/widgets-v2/markdown/types.d.ts +4 -0
  153. package/dist/types/widgets-v2/note/labels.d.ts +5 -0
  154. package/dist/types/widgets-v2/note/style.d.ts +26 -0
  155. package/dist/types/widgets-v2/note/widget-note.d.ts +46 -0
  156. package/dist/types/widgets-v2/pie/download.d.ts +17 -0
  157. package/dist/types/widgets-v2/pie/download.test.d.ts +1 -0
  158. package/dist/types/widgets-v2/pie/index.d.ts +4 -0
  159. package/dist/types/widgets-v2/pie/options.d.ts +35 -0
  160. package/dist/types/widgets-v2/pie/options.test.d.ts +1 -0
  161. package/dist/types/widgets-v2/pie/skeleton.d.ts +4 -0
  162. package/dist/types/widgets-v2/pie/types.d.ts +50 -0
  163. package/dist/types/widgets-v2/provider/widget-provider.d.ts +32 -0
  164. package/dist/types/widgets-v2/range/index.d.ts +4 -0
  165. package/dist/types/widgets-v2/range/range-ui.d.ts +19 -0
  166. package/dist/types/widgets-v2/range/range.d.ts +19 -0
  167. package/dist/types/widgets-v2/range/skeleton.d.ts +9 -0
  168. package/dist/types/widgets-v2/range/style.d.ts +40 -0
  169. package/dist/types/widgets-v2/range/types.d.ts +37 -0
  170. package/dist/types/widgets-v2/scatterplot/download.d.ts +16 -0
  171. package/dist/types/widgets-v2/scatterplot/download.test.d.ts +1 -0
  172. package/dist/types/widgets-v2/scatterplot/index.d.ts +5 -0
  173. package/dist/types/widgets-v2/scatterplot/options.d.ts +42 -0
  174. package/dist/types/widgets-v2/scatterplot/options.test.d.ts +1 -0
  175. package/dist/types/widgets-v2/scatterplot/skeleton.d.ts +12 -0
  176. package/dist/types/widgets-v2/scatterplot/transforms.d.ts +17 -0
  177. package/dist/types/widgets-v2/scatterplot/transforms.test.d.ts +1 -0
  178. package/dist/types/widgets-v2/scatterplot/types.d.ts +50 -0
  179. package/dist/types/widgets-v2/selection-summary/labels.d.ts +6 -0
  180. package/dist/types/widgets-v2/selection-summary/selection-summary.d.ts +22 -0
  181. package/dist/types/widgets-v2/selection-summary/style.d.ts +23 -0
  182. package/dist/types/widgets-v2/spread/download.d.ts +15 -0
  183. package/dist/types/widgets-v2/spread/download.test.d.ts +1 -0
  184. package/dist/types/widgets-v2/spread/index.d.ts +6 -0
  185. package/dist/types/widgets-v2/spread/separator.d.ts +7 -0
  186. package/dist/types/widgets-v2/spread/skeleton.d.ts +9 -0
  187. package/dist/types/widgets-v2/spread/spread-ui.d.ts +18 -0
  188. package/dist/types/widgets-v2/spread/spread.d.ts +5 -0
  189. package/dist/types/widgets-v2/spread/types.d.ts +25 -0
  190. package/dist/types/widgets-v2/state/labels.d.ts +7 -0
  191. package/dist/types/widgets-v2/state/labels.test.d.ts +1 -0
  192. package/dist/types/widgets-v2/state/style.d.ts +19 -0
  193. package/dist/types/widgets-v2/state/widget-state.d.ts +19 -0
  194. package/dist/types/widgets-v2/stores/index.d.ts +8 -0
  195. package/dist/types/widgets-v2/stores/pipeline-middleware.d.ts +5 -0
  196. package/dist/types/widgets-v2/stores/pipeline-middleware.test.d.ts +1 -0
  197. package/dist/types/widgets-v2/stores/transforms.d.ts +4 -0
  198. package/dist/types/widgets-v2/stores/transforms.test.d.ts +1 -0
  199. package/dist/types/widgets-v2/stores/types.d.ts +55 -0
  200. package/dist/types/widgets-v2/stores/use-echart-instance.d.ts +15 -0
  201. package/dist/types/widgets-v2/stores/use-transform-enabled.d.ts +17 -0
  202. package/dist/types/widgets-v2/stores/use-transform.d.ts +12 -0
  203. package/dist/types/widgets-v2/stores/widget-context.d.ts +2 -0
  204. package/dist/types/widgets-v2/stores/widget-store-registry.d.ts +74 -0
  205. package/dist/types/widgets-v2/stores/widget-store-registry.test.d.ts +1 -0
  206. package/dist/types/widgets-v2/subheader/style.d.ts +10 -0
  207. package/dist/types/widgets-v2/subheader/subheader.d.ts +11 -0
  208. package/dist/types/widgets-v2/table/download.d.ts +18 -0
  209. package/dist/types/widgets-v2/table/download.test.d.ts +1 -0
  210. package/dist/types/widgets-v2/table/helpers.d.ts +32 -0
  211. package/dist/types/widgets-v2/table/helpers.test.d.ts +1 -0
  212. package/dist/types/widgets-v2/table/index.d.ts +7 -0
  213. package/dist/types/widgets-v2/table/labels.d.ts +22 -0
  214. package/dist/types/widgets-v2/table/skeleton.d.ts +22 -0
  215. package/dist/types/widgets-v2/table/style.d.ts +44 -0
  216. package/dist/types/widgets-v2/table/table-ui.d.ts +38 -0
  217. package/dist/types/widgets-v2/table/table.d.ts +50 -0
  218. package/dist/types/widgets-v2/table/types.d.ts +37 -0
  219. package/dist/types/widgets-v2/test-utils.d.ts +52 -0
  220. package/dist/types/widgets-v2/timeseries/download.d.ts +17 -0
  221. package/dist/types/widgets-v2/timeseries/download.test.d.ts +1 -0
  222. package/dist/types/widgets-v2/timeseries/index.d.ts +4 -0
  223. package/dist/types/widgets-v2/timeseries/options.d.ts +39 -0
  224. package/dist/types/widgets-v2/timeseries/options.test.d.ts +1 -0
  225. package/dist/types/widgets-v2/timeseries/skeleton.d.ts +8 -0
  226. package/dist/types/widgets-v2/timeseries/types.d.ts +56 -0
  227. package/dist/types/widgets-v2/toolbox/labels.d.ts +5 -0
  228. package/dist/types/widgets-v2/toolbox/style.d.ts +30 -0
  229. package/dist/types/widgets-v2/toolbox/toolbox.d.ts +49 -0
  230. package/dist/types/widgets-v2/utils/data-zoom-layout.d.ts +11 -0
  231. package/dist/types/widgets-v2/utils/index.d.ts +2 -0
  232. package/dist/types/widgets-v2/utils/merge-options.d.ts +12 -0
  233. package/dist/types/widgets-v2/utils/merge-options.test.d.ts +1 -0
  234. package/dist/types/widgets-v2/wrapper/index.d.ts +4 -0
  235. package/dist/types/widgets-v2/wrapper/labels.d.ts +6 -0
  236. package/dist/types/widgets-v2/wrapper/style.d.ts +111 -0
  237. package/dist/types/widgets-v2/wrapper/widget-actions.d.ts +22 -0
  238. package/dist/types/widgets-v2/wrapper/widget-content.d.ts +12 -0
  239. package/dist/types/widgets-v2/wrapper/widget-wrapper.d.ts +51 -0
  240. package/dist/use-transform-DXPN3nY7.js +110 -0
  241. package/dist/use-transform-DXPN3nY7.js.map +1 -0
  242. package/dist/widget-context-DTGO0Yta.js +13 -0
  243. package/dist/widget-context-DTGO0Yta.js.map +1 -0
  244. package/dist/widget-store-registry-_W4Z4xp-.js +178 -0
  245. package/dist/widget-store-registry-_W4Z4xp-.js.map +1 -0
  246. package/dist/widgets/actions.js +688 -668
  247. package/dist/widgets/actions.js.map +1 -1
  248. package/dist/widgets/bar.js +14 -13
  249. package/dist/widgets/bar.js.map +1 -1
  250. package/dist/widgets/histogram.js +38 -37
  251. package/dist/widgets/histogram.js.map +1 -1
  252. package/dist/widgets/pie.js +19 -18
  253. package/dist/widgets/pie.js.map +1 -1
  254. package/dist/widgets/scatterplot.js +8 -7
  255. package/dist/widgets/scatterplot.js.map +1 -1
  256. package/dist/widgets/timeseries.js +11 -10
  257. package/dist/widgets/timeseries.js.map +1 -1
  258. package/dist/widgets/utils.js +8 -7
  259. package/dist/widgets/utils.js.map +1 -1
  260. package/dist/widgets-v2/actions.js +43 -0
  261. package/dist/widgets-v2/actions.js.map +1 -0
  262. package/dist/widgets-v2/bar.js +327 -0
  263. package/dist/widgets-v2/bar.js.map +1 -0
  264. package/dist/widgets-v2/category.js +104 -0
  265. package/dist/widgets-v2/category.js.map +1 -0
  266. package/dist/widgets-v2/echart.js +57 -0
  267. package/dist/widgets-v2/echart.js.map +1 -0
  268. package/dist/widgets-v2/formula.js +74 -0
  269. package/dist/widgets-v2/formula.js.map +1 -0
  270. package/dist/widgets-v2/histogram.js +350 -0
  271. package/dist/widgets-v2/histogram.js.map +1 -0
  272. package/dist/widgets-v2/markdown.js +68 -0
  273. package/dist/widgets-v2/markdown.js.map +1 -0
  274. package/dist/widgets-v2/pie.js +381 -0
  275. package/dist/widgets-v2/pie.js.map +1 -0
  276. package/dist/widgets-v2/range.js +52 -0
  277. package/dist/widgets-v2/range.js.map +1 -0
  278. package/dist/widgets-v2/scatterplot.js +405 -0
  279. package/dist/widgets-v2/scatterplot.js.map +1 -0
  280. package/dist/widgets-v2/spread.js +72 -0
  281. package/dist/widgets-v2/spread.js.map +1 -0
  282. package/dist/widgets-v2/stores.js +42 -0
  283. package/dist/widgets-v2/stores.js.map +1 -0
  284. package/dist/widgets-v2/table.js +78 -0
  285. package/dist/widgets-v2/table.js.map +1 -0
  286. package/dist/widgets-v2/timeseries.js +352 -0
  287. package/dist/widgets-v2/timeseries.js.map +1 -0
  288. package/dist/widgets-v2/utils.js +7 -0
  289. package/dist/widgets-v2/utils.js.map +1 -0
  290. package/dist/widgets-v2.js +953 -0
  291. package/dist/widgets-v2.js.map +1 -0
  292. package/package.json +73 -5
  293. package/src/components/lasso-tool/chip.test.tsx +176 -0
  294. package/src/components/lasso-tool/lasso-tool-inline.test.tsx +171 -0
  295. package/src/components/lasso-tool/lasso-tool.test.tsx +198 -0
  296. package/src/components/list-data/list-data.test.tsx +73 -0
  297. package/src/components/no-data-alert/no-data-alert.test.tsx +38 -0
  298. package/src/components/responsive-drawer/responsive-drawer.test.tsx +68 -0
  299. package/src/widgets/actions/brush-toggle/brush-overlay.test.tsx +465 -0
  300. package/src/widgets/actions/brush-toggle/brush-overlay.tsx +24 -2
  301. package/src/widgets/actions/brush-toggle/brush-toggle.test.tsx +208 -0
  302. package/src/widgets/actions/change-column/change-column-dnd.test.tsx +193 -0
  303. package/src/widgets/actions/change-column/sortable-column-item.test.tsx +124 -0
  304. package/src/widgets/actions/zoom-toggle/zoom-toggle.test.tsx +322 -0
  305. package/src/widgets/category/components/category-rows.test.tsx +213 -0
  306. package/src/widgets/echart/utils.test.ts +277 -0
  307. package/src/widgets/formula/config.test.ts +37 -0
  308. package/src/widgets/histogram/config.ts +1 -3
  309. package/src/widgets/range/components/range-item.test.tsx +243 -0
  310. package/src/widgets/stores/widget-store-branches.test.ts +275 -0
  311. package/src/widgets/table/config.test.ts +65 -0
  312. package/src/widgets/utils/chart-config/option-builders.test.ts +188 -0
  313. package/src/widgets-v2/PERFORMANCE.md +189 -0
  314. package/src/widgets-v2/actions/brush-toggle/brush-toggle.test.tsx +180 -0
  315. package/src/widgets-v2/actions/brush-toggle/brush-toggle.tsx +154 -0
  316. package/src/widgets-v2/actions/brush-toggle/index.ts +3 -0
  317. package/src/widgets-v2/actions/brush-toggle/labels.ts +9 -0
  318. package/src/widgets-v2/actions/brush-toggle/style.ts +11 -0
  319. package/src/widgets-v2/actions/brush-toggle/transforms.test.ts +47 -0
  320. package/src/widgets-v2/actions/brush-toggle/transforms.ts +31 -0
  321. package/src/widgets-v2/actions/change-column/change-column-icon.tsx +14 -0
  322. package/src/widgets-v2/actions/change-column/change-column.test.tsx +59 -0
  323. package/src/widgets-v2/actions/change-column/change-column.tsx +180 -0
  324. package/src/widgets-v2/actions/change-column/index.ts +7 -0
  325. package/src/widgets-v2/actions/change-column/labels.ts +9 -0
  326. package/src/widgets-v2/actions/change-column/sortable-column-item.tsx +56 -0
  327. package/src/widgets-v2/actions/change-column/style.ts +32 -0
  328. package/src/widgets-v2/actions/change-column/types.ts +11 -0
  329. package/src/widgets-v2/actions/download/download.test.tsx +327 -0
  330. package/src/widgets-v2/actions/download/download.tsx +144 -0
  331. package/src/widgets-v2/actions/download/exports.test.tsx +198 -0
  332. package/src/widgets-v2/actions/download/exports.ts +115 -0
  333. package/src/widgets-v2/actions/download/icons.tsx +26 -0
  334. package/src/widgets-v2/actions/download/index.ts +13 -0
  335. package/src/widgets-v2/actions/download/labels.ts +16 -0
  336. package/src/widgets-v2/actions/download/png-item.test.tsx +72 -0
  337. package/src/widgets-v2/actions/download/png-item.tsx +52 -0
  338. package/src/widgets-v2/actions/download/style.ts +3 -0
  339. package/src/widgets-v2/actions/download/types.ts +32 -0
  340. package/src/widgets-v2/actions/fullscreen/fullscreen.test.tsx +150 -0
  341. package/src/widgets-v2/actions/fullscreen/fullscreen.tsx +230 -0
  342. package/src/widgets-v2/actions/fullscreen/index.ts +7 -0
  343. package/src/widgets-v2/actions/fullscreen/labels.ts +9 -0
  344. package/src/widgets-v2/actions/fullscreen/style.ts +59 -0
  345. package/src/widgets-v2/actions/fullscreen/types.ts +15 -0
  346. package/src/widgets-v2/actions/index.ts +82 -0
  347. package/src/widgets-v2/actions/lock-selection/index.ts +10 -0
  348. package/src/widgets-v2/actions/lock-selection/labels.ts +11 -0
  349. package/src/widgets-v2/actions/lock-selection/lock-selection.test.tsx +187 -0
  350. package/src/widgets-v2/actions/lock-selection/lock-selection.tsx +130 -0
  351. package/src/widgets-v2/actions/lock-selection/style.ts +11 -0
  352. package/src/widgets-v2/actions/lock-selection/transforms.ts +27 -0
  353. package/src/widgets-v2/actions/relative-data/index.ts +3 -0
  354. package/src/widgets-v2/actions/relative-data/labels.ts +9 -0
  355. package/src/widgets-v2/actions/relative-data/relative-data.test.tsx +71 -0
  356. package/src/widgets-v2/actions/relative-data/relative-data.tsx +107 -0
  357. package/src/widgets-v2/actions/relative-data/style.ts +11 -0
  358. package/src/widgets-v2/actions/relative-data/transforms.test.ts +151 -0
  359. package/src/widgets-v2/actions/relative-data/transforms.ts +70 -0
  360. package/src/widgets-v2/actions/searcher/filter.ts +28 -0
  361. package/src/widgets-v2/actions/searcher/index.ts +8 -0
  362. package/src/widgets-v2/actions/searcher/labels.ts +13 -0
  363. package/src/widgets-v2/actions/searcher/searcher-toggle.tsx +91 -0
  364. package/src/widgets-v2/actions/searcher/searcher.test.tsx +92 -0
  365. package/src/widgets-v2/actions/searcher/searcher.tsx +112 -0
  366. package/src/widgets-v2/actions/searcher/style.ts +15 -0
  367. package/src/widgets-v2/actions/stack-toggle/index.ts +3 -0
  368. package/src/widgets-v2/actions/stack-toggle/labels.ts +9 -0
  369. package/src/widgets-v2/actions/stack-toggle/stack-toggle.test.tsx +61 -0
  370. package/src/widgets-v2/actions/stack-toggle/stack-toggle.tsx +54 -0
  371. package/src/widgets-v2/actions/stack-toggle/style.ts +11 -0
  372. package/src/widgets-v2/actions/stack-toggle/transforms.test.ts +43 -0
  373. package/src/widgets-v2/actions/stack-toggle/transforms.ts +25 -0
  374. package/src/widgets-v2/actions/zoom-toggle/index.ts +9 -0
  375. package/src/widgets-v2/actions/zoom-toggle/labels.ts +9 -0
  376. package/src/widgets-v2/actions/zoom-toggle/style.ts +11 -0
  377. package/src/widgets-v2/actions/zoom-toggle/transforms.test.ts +148 -0
  378. package/src/widgets-v2/actions/zoom-toggle/transforms.ts +171 -0
  379. package/src/widgets-v2/actions/zoom-toggle/zoom-toggle.test.tsx +107 -0
  380. package/src/widgets-v2/actions/zoom-toggle/zoom-toggle.tsx +106 -0
  381. package/src/widgets-v2/bar/download.test.tsx +91 -0
  382. package/src/widgets-v2/bar/download.tsx +66 -0
  383. package/src/widgets-v2/bar/index.ts +10 -0
  384. package/src/widgets-v2/bar/options.test.ts +317 -0
  385. package/src/widgets-v2/bar/options.ts +326 -0
  386. package/src/widgets-v2/bar/skeleton.test.tsx +19 -0
  387. package/src/widgets-v2/bar/skeleton.tsx +69 -0
  388. package/src/widgets-v2/bar/types.ts +46 -0
  389. package/src/widgets-v2/category/category-ui.test.tsx +746 -0
  390. package/src/widgets-v2/category/category-ui.tsx +389 -0
  391. package/src/widgets-v2/category/category.relative-data.test.tsx +107 -0
  392. package/src/widgets-v2/category/category.stack-toggle.test.tsx +85 -0
  393. package/src/widgets-v2/category/category.test.tsx +305 -0
  394. package/src/widgets-v2/category/category.tsx +121 -0
  395. package/src/widgets-v2/category/components/category-bar-stacked.test.tsx +121 -0
  396. package/src/widgets-v2/category/components/category-bar-stacked.tsx +73 -0
  397. package/src/widgets-v2/category/components/category-bar.test.tsx +64 -0
  398. package/src/widgets-v2/category/components/category-bar.tsx +49 -0
  399. package/src/widgets-v2/category/components/category-legend.test.tsx +51 -0
  400. package/src/widgets-v2/category/components/category-legend.tsx +39 -0
  401. package/src/widgets-v2/category/components/category-row-multi.tsx +86 -0
  402. package/src/widgets-v2/category/components/category-row-other.test.tsx +28 -0
  403. package/src/widgets-v2/category/components/category-row-other.tsx +33 -0
  404. package/src/widgets-v2/category/components/category-row-single.tsx +76 -0
  405. package/src/widgets-v2/category/components/category-row-stacked.test.tsx +244 -0
  406. package/src/widgets-v2/category/components/category-row-stacked.tsx +99 -0
  407. package/src/widgets-v2/category/download.test.ts +71 -0
  408. package/src/widgets-v2/category/download.ts +54 -0
  409. package/src/widgets-v2/category/index.ts +32 -0
  410. package/src/widgets-v2/category/skeleton.test.tsx +26 -0
  411. package/src/widgets-v2/category/skeleton.tsx +74 -0
  412. package/src/widgets-v2/category/style.ts +290 -0
  413. package/src/widgets-v2/category/types.ts +54 -0
  414. package/src/widgets-v2/echart/echart-ui.test.tsx +232 -0
  415. package/src/widgets-v2/echart/echart-ui.tsx +184 -0
  416. package/src/widgets-v2/echart/echart.test.tsx +229 -0
  417. package/src/widgets-v2/echart/echart.tsx +199 -0
  418. package/src/widgets-v2/echart/index.ts +22 -0
  419. package/src/widgets-v2/echart/shared-resize-observer.test.ts +91 -0
  420. package/src/widgets-v2/echart/shared-resize-observer.ts +56 -0
  421. package/src/widgets-v2/echart/style.ts +8 -0
  422. package/src/widgets-v2/echart/use-chart-selection.test.tsx +118 -0
  423. package/src/widgets-v2/echart/use-chart-selection.ts +115 -0
  424. package/src/widgets-v2/formula/delta.tsx +61 -0
  425. package/src/widgets-v2/formula/download.test.tsx +65 -0
  426. package/src/widgets-v2/formula/download.tsx +69 -0
  427. package/src/widgets-v2/formula/formula-ui.test.tsx +91 -0
  428. package/src/widgets-v2/formula/formula-ui.tsx +66 -0
  429. package/src/widgets-v2/formula/formula.test.tsx +50 -0
  430. package/src/widgets-v2/formula/formula.tsx +34 -0
  431. package/src/widgets-v2/formula/index.ts +17 -0
  432. package/src/widgets-v2/formula/note.tsx +25 -0
  433. package/src/widgets-v2/formula/prefix.tsx +25 -0
  434. package/src/widgets-v2/formula/series.tsx +67 -0
  435. package/src/widgets-v2/formula/skeleton.test.tsx +21 -0
  436. package/src/widgets-v2/formula/skeleton.tsx +27 -0
  437. package/src/widgets-v2/formula/style.ts +31 -0
  438. package/src/widgets-v2/formula/subcomponents.test.tsx +107 -0
  439. package/src/widgets-v2/formula/suffix.tsx +25 -0
  440. package/src/widgets-v2/formula/types.ts +44 -0
  441. package/src/widgets-v2/formula/value.tsx +31 -0
  442. package/src/widgets-v2/histogram/download.test.ts +94 -0
  443. package/src/widgets-v2/histogram/download.ts +60 -0
  444. package/src/widgets-v2/histogram/index.ts +10 -0
  445. package/src/widgets-v2/histogram/options.test.ts +304 -0
  446. package/src/widgets-v2/histogram/options.ts +337 -0
  447. package/src/widgets-v2/histogram/skeleton.test.tsx +16 -0
  448. package/src/widgets-v2/histogram/skeleton.tsx +70 -0
  449. package/src/widgets-v2/histogram/transforms.test.ts +46 -0
  450. package/src/widgets-v2/histogram/transforms.ts +30 -0
  451. package/src/widgets-v2/histogram/types.ts +51 -0
  452. package/src/widgets-v2/index.ts +201 -0
  453. package/src/widgets-v2/markdown/download.test.ts +66 -0
  454. package/src/widgets-v2/markdown/download.ts +53 -0
  455. package/src/widgets-v2/markdown/index.ts +6 -0
  456. package/src/widgets-v2/markdown/markdown-content.test.tsx +155 -0
  457. package/src/widgets-v2/markdown/markdown-content.tsx +72 -0
  458. package/src/widgets-v2/markdown/markdown-ui.test.tsx +75 -0
  459. package/src/widgets-v2/markdown/markdown-ui.tsx +55 -0
  460. package/src/widgets-v2/markdown/markdown.test.tsx +39 -0
  461. package/src/widgets-v2/markdown/markdown.tsx +17 -0
  462. package/src/widgets-v2/markdown/skeleton.test.tsx +15 -0
  463. package/src/widgets-v2/markdown/skeleton.tsx +32 -0
  464. package/src/widgets-v2/markdown/style.ts +53 -0
  465. package/src/widgets-v2/markdown/types.ts +4 -0
  466. package/src/widgets-v2/note/labels.ts +9 -0
  467. package/src/widgets-v2/note/style.ts +26 -0
  468. package/src/widgets-v2/note/widget-note.test.tsx +158 -0
  469. package/src/widgets-v2/note/widget-note.tsx +172 -0
  470. package/src/widgets-v2/pie/download.test.ts +78 -0
  471. package/src/widgets-v2/pie/download.ts +55 -0
  472. package/src/widgets-v2/pie/index.ts +10 -0
  473. package/src/widgets-v2/pie/options.test.ts +585 -0
  474. package/src/widgets-v2/pie/options.ts +509 -0
  475. package/src/widgets-v2/pie/skeleton.test.tsx +17 -0
  476. package/src/widgets-v2/pie/skeleton.tsx +32 -0
  477. package/src/widgets-v2/pie/types.ts +55 -0
  478. package/src/widgets-v2/provider/widget-provider.test.tsx +119 -0
  479. package/src/widgets-v2/provider/widget-provider.tsx +111 -0
  480. package/src/widgets-v2/range/index.ts +4 -0
  481. package/src/widgets-v2/range/range-ui.test.tsx +130 -0
  482. package/src/widgets-v2/range/range-ui.tsx +211 -0
  483. package/src/widgets-v2/range/range.test.tsx +68 -0
  484. package/src/widgets-v2/range/range.tsx +46 -0
  485. package/src/widgets-v2/range/skeleton.test.tsx +17 -0
  486. package/src/widgets-v2/range/skeleton.tsx +47 -0
  487. package/src/widgets-v2/range/style.ts +41 -0
  488. package/src/widgets-v2/range/types.ts +37 -0
  489. package/src/widgets-v2/scatterplot/download.test.ts +71 -0
  490. package/src/widgets-v2/scatterplot/download.ts +54 -0
  491. package/src/widgets-v2/scatterplot/index.ts +11 -0
  492. package/src/widgets-v2/scatterplot/options.test.ts +399 -0
  493. package/src/widgets-v2/scatterplot/options.ts +421 -0
  494. package/src/widgets-v2/scatterplot/skeleton.test.tsx +17 -0
  495. package/src/widgets-v2/scatterplot/skeleton.tsx +84 -0
  496. package/src/widgets-v2/scatterplot/transforms.test.ts +97 -0
  497. package/src/widgets-v2/scatterplot/transforms.ts +38 -0
  498. package/src/widgets-v2/scatterplot/types.ts +55 -0
  499. package/src/widgets-v2/selection-summary/labels.ts +11 -0
  500. package/src/widgets-v2/selection-summary/selection-summary.test.tsx +53 -0
  501. package/src/widgets-v2/selection-summary/selection-summary.tsx +62 -0
  502. package/src/widgets-v2/selection-summary/style.ts +23 -0
  503. package/src/widgets-v2/spread/download.test.ts +64 -0
  504. package/src/widgets-v2/spread/download.ts +59 -0
  505. package/src/widgets-v2/spread/index.ts +6 -0
  506. package/src/widgets-v2/spread/separator.tsx +11 -0
  507. package/src/widgets-v2/spread/skeleton.test.tsx +17 -0
  508. package/src/widgets-v2/spread/skeleton.tsx +38 -0
  509. package/src/widgets-v2/spread/spread-ui.test.tsx +108 -0
  510. package/src/widgets-v2/spread/spread-ui.tsx +52 -0
  511. package/src/widgets-v2/spread/spread.test.tsx +50 -0
  512. package/src/widgets-v2/spread/spread.tsx +31 -0
  513. package/src/widgets-v2/spread/types.ts +27 -0
  514. package/src/widgets-v2/state/labels.test.ts +33 -0
  515. package/src/widgets-v2/state/labels.ts +20 -0
  516. package/src/widgets-v2/state/style.ts +25 -0
  517. package/src/widgets-v2/state/widget-state.test.tsx +294 -0
  518. package/src/widgets-v2/state/widget-state.tsx +184 -0
  519. package/src/widgets-v2/stores/index.ts +49 -0
  520. package/src/widgets-v2/stores/pipeline-middleware.test.ts +187 -0
  521. package/src/widgets-v2/stores/pipeline-middleware.ts +91 -0
  522. package/src/widgets-v2/stores/transforms.test.ts +162 -0
  523. package/src/widgets-v2/stores/transforms.ts +70 -0
  524. package/src/widgets-v2/stores/types.ts +64 -0
  525. package/src/widgets-v2/stores/use-echart-instance.test.tsx +91 -0
  526. package/src/widgets-v2/stores/use-echart-instance.ts +29 -0
  527. package/src/widgets-v2/stores/use-transform-enabled.test.tsx +127 -0
  528. package/src/widgets-v2/stores/use-transform-enabled.ts +25 -0
  529. package/src/widgets-v2/stores/use-transform.test.tsx +262 -0
  530. package/src/widgets-v2/stores/use-transform.ts +158 -0
  531. package/src/widgets-v2/stores/widget-context.test.tsx +58 -0
  532. package/src/widgets-v2/stores/widget-context.ts +15 -0
  533. package/src/widgets-v2/stores/widget-store-registry.test.ts +292 -0
  534. package/src/widgets-v2/stores/widget-store-registry.ts +248 -0
  535. package/src/widgets-v2/subheader/style.ts +12 -0
  536. package/src/widgets-v2/subheader/subheader.test.tsx +30 -0
  537. package/src/widgets-v2/subheader/subheader.tsx +16 -0
  538. package/src/widgets-v2/table/download.test.ts +75 -0
  539. package/src/widgets-v2/table/download.ts +47 -0
  540. package/src/widgets-v2/table/helpers.test.ts +214 -0
  541. package/src/widgets-v2/table/helpers.ts +136 -0
  542. package/src/widgets-v2/table/index.ts +23 -0
  543. package/src/widgets-v2/table/labels.tsx +41 -0
  544. package/src/widgets-v2/table/skeleton.test.tsx +26 -0
  545. package/src/widgets-v2/table/skeleton.tsx +65 -0
  546. package/src/widgets-v2/table/style.ts +46 -0
  547. package/src/widgets-v2/table/table-ui.test.tsx +200 -0
  548. package/src/widgets-v2/table/table-ui.tsx +331 -0
  549. package/src/widgets-v2/table/table.test.tsx +119 -0
  550. package/src/widgets-v2/table/table.tsx +174 -0
  551. package/src/widgets-v2/table/types.ts +44 -0
  552. package/src/widgets-v2/test-utils.ts +107 -0
  553. package/src/widgets-v2/timeseries/download.test.ts +95 -0
  554. package/src/widgets-v2/timeseries/download.ts +86 -0
  555. package/src/widgets-v2/timeseries/index.ts +10 -0
  556. package/src/widgets-v2/timeseries/options.test.ts +379 -0
  557. package/src/widgets-v2/timeseries/options.ts +341 -0
  558. package/src/widgets-v2/timeseries/skeleton.test.tsx +13 -0
  559. package/src/widgets-v2/timeseries/skeleton.tsx +76 -0
  560. package/src/widgets-v2/timeseries/types.ts +61 -0
  561. package/src/widgets-v2/toolbox/labels.ts +9 -0
  562. package/src/widgets-v2/toolbox/style.ts +33 -0
  563. package/src/widgets-v2/toolbox/toolbox.test.tsx +200 -0
  564. package/src/widgets-v2/toolbox/toolbox.tsx +309 -0
  565. package/src/widgets-v2/utils/data-zoom-layout.ts +26 -0
  566. package/src/widgets-v2/utils/index.ts +2 -0
  567. package/src/widgets-v2/utils/merge-options.test.ts +52 -0
  568. package/src/widgets-v2/utils/merge-options.ts +50 -0
  569. package/src/widgets-v2/wrapper/index.ts +14 -0
  570. package/src/widgets-v2/wrapper/labels.ts +11 -0
  571. package/src/widgets-v2/wrapper/style.ts +134 -0
  572. package/src/widgets-v2/wrapper/widget-actions.test.tsx +52 -0
  573. package/src/widgets-v2/wrapper/widget-actions.tsx +43 -0
  574. package/src/widgets-v2/wrapper/widget-content.test.tsx +27 -0
  575. package/src/widgets-v2/wrapper/widget-content.tsx +29 -0
  576. package/src/widgets-v2/wrapper/widget-wrapper.test.tsx +159 -0
  577. package/src/widgets-v2/wrapper/widget-wrapper.tsx +178 -0
  578. package/dist/styles-BYTyKQFP.js.map +0 -1
@@ -0,0 +1,381 @@
1
+ import * as w from "echarts";
2
+ import { g as L, d as N, h as j, c as T, f as I, n as A } from "../option-builders-F-c9ELi1.js";
3
+ import { jsx as k } from "react/jsx-runtime";
4
+ import { c as O } from "react/compiler-runtime";
5
+ import { Box as P, Skeleton as $ } from "@mui/material";
6
+ import "../widget-store-Bw5zRUGg.js";
7
+ import "zustand/shallow";
8
+ import "@mui/icons-material";
9
+ import "react";
10
+ import "html2canvas";
11
+ import "../lasso-tool-BYbxrJ-7.js";
12
+ import "../cjs-D4KH3azB.js";
13
+ import "@dnd-kit/core";
14
+ import "@dnd-kit/sortable";
15
+ import "@dnd-kit/utilities";
16
+ import "react-dom";
17
+ import { m as V } from "../merge-options-DCkkHZIf.js";
18
+ import "@mui/icons-material/ZoomIn";
19
+ import "../widget-context-DTGO0Yta.js";
20
+ import "zustand";
21
+ import "zustand/vanilla";
22
+ import "zustand/middleware";
23
+ import "zustand/react/shallow";
24
+ import "@mui/icons-material/FileDownload";
25
+ import { a as D } from "../exports-Cx-f6m6U.js";
26
+ import "@mui/icons-material/ImageOutlined";
27
+ import { b as M } from "../png-item-CS4z1iSH.js";
28
+ const z = ["58%", "74%"];
29
+ function B({
30
+ theme: e,
31
+ formatter: r,
32
+ labelFormatter: t
33
+ }) {
34
+ return {
35
+ legend: {
36
+ ...N({
37
+ hasLegend: !0,
38
+ labelFormatter: t
39
+ }),
40
+ // Pie reads better with a centered legend (the donut is radially
41
+ // symmetric — left-aligning the legend below it visually unbalances
42
+ // the chart). Override `buildLegendConfig`'s `type: 'scroll'` with
43
+ // `'plain'` so long category lists wrap to multiple rows instead
44
+ // of clipping the last visible item against the chart container.
45
+ // The wider `itemGap` gives chips breathing room in the typical
46
+ // 3–6 category case.
47
+ left: "center",
48
+ type: "scroll",
49
+ itemGap: 16
50
+ },
51
+ tooltip: {
52
+ // Pie uses item-trigger (no axis); the rest of the styling mirrors
53
+ // bar/histogram so the dashboard reads consistently — dark
54
+ // grey[900] bg, white caption-font text, padded, with the shared
55
+ // overflow-aware positioner.
56
+ trigger: "item",
57
+ backgroundColor: e.palette.grey[900],
58
+ borderWidth: 0,
59
+ padding: [parseInt(e.spacing(1)), parseInt(e.spacing(1))],
60
+ textStyle: {
61
+ color: e.palette.common.white,
62
+ fontSize: 11,
63
+ fontFamily: e.typography.caption.fontFamily
64
+ },
65
+ position: L(e),
66
+ formatter: F(r, t)
67
+ },
68
+ // V1 used `qualitative.bold` only (no `secondary.main` prefix) because
69
+ // pie slices are categorical — each slice deserves a distinct palette
70
+ // entry from the start, not a primary highlight.
71
+ color: Object.values(e.palette.qualitative?.bold ?? {}),
72
+ // Pie template. The merger spreads this into each per-data series it
73
+ // emits — borderColor / borderWidth / emphasis-disabled / label rich
74
+ // sizes all survive through.
75
+ series: [{
76
+ type: "pie",
77
+ colorBy: "data",
78
+ avoidLabelOverlap: !0,
79
+ selectedOffset: 0,
80
+ emphasis: {
81
+ disabled: !0
82
+ },
83
+ itemStyle: {
84
+ borderColor: e.palette.background.paper,
85
+ borderWidth: 1
86
+ },
87
+ label: {
88
+ show: !0,
89
+ position: "center",
90
+ rich: {
91
+ b: {
92
+ fontSize: 16,
93
+ fontWeight: "normal",
94
+ lineHeight: 20
95
+ },
96
+ c: {
97
+ fontSize: 28,
98
+ fontWeight: "bold",
99
+ lineHeight: 27
100
+ }
101
+ }
102
+ }
103
+ }]
104
+ };
105
+ }
106
+ function be(e) {
107
+ const {
108
+ theme: r,
109
+ formatter: t,
110
+ labelFormatter: a,
111
+ optionsOverride: o,
112
+ seriesNames: s
113
+ } = e, l = e.radius ?? z, u = e.selection, d = u && u.length > 0 ? new Set(u) : null;
114
+ return (c, p, b) => {
115
+ if (c == null) {
116
+ const v = B({
117
+ theme: r,
118
+ formatter: t,
119
+ labelFormatter: a
120
+ });
121
+ return o ? V(v, o) : v;
122
+ }
123
+ const g = Array.isArray(p) ? p : [];
124
+ return g.length === 0 ? {
125
+ ...c,
126
+ dataset: [],
127
+ series: []
128
+ } : g.length > 1 ? W(c, g, r, s, b, d) : _(c, g, l, s, b, d);
129
+ };
130
+ }
131
+ function _(e, r, t, a, o, s) {
132
+ const l = Array.isArray(e.series) ? e.series : [], u = l[0] ?? {}, d = typeof e.tooltip == "object" && !Array.isArray(e.tooltip) ? e.tooltip : {}, c = typeof e.legend == "object" && !Array.isArray(e.legend) ? e.legend : {}, p = o?.formatter, b = o?.labelFormatter, g = Array.isArray(e.color) ? e.color : [], v = (n) => (g.length > 0 ? g[n.dataIndex % g.length] : void 0) ?? n.color, S = (n) => {
133
+ const m = v(n);
134
+ if (!s) return m;
135
+ const f = n.value?.name ?? n.name;
136
+ return f != null && s.has(f) ? m : w.color.modifyAlpha(m, 0.15);
137
+ }, i = (n) => {
138
+ const {
139
+ name: m
140
+ } = n, y = n.encode?.value?.[0];
141
+ if (y === void 0) return "";
142
+ const f = Object.values(n.data ?? {}).at(y), h = typeof f == "number" ? p ? p(f) : String(f) : typeof f == "string" ? f : "", x = String(b ? b(m ?? "") : m ?? "");
143
+ return `{c|${h}}
144
+
145
+ {b|${x}}`;
146
+ };
147
+ return {
148
+ ...e,
149
+ dataset: r.map((n) => ({
150
+ source: n
151
+ })),
152
+ series: r.map((n, m) => {
153
+ const y = l[m] ?? u, f = typeof y == "object" ? y : {}, h = f.label ?? {}, x = f.itemStyle ?? {};
154
+ return {
155
+ ...f,
156
+ type: "pie",
157
+ datasetIndex: m,
158
+ name: a?.[m] ?? `Series ${m + 1}`,
159
+ radius: [...t],
160
+ // Lift the donut up so the bottom-anchored legend has the
161
+ // vertical real estate to wrap to multiple rows for long
162
+ // category lists — at exactly `50%` the bottom slices crowd
163
+ // the chips and `type: 'plain'` legends can't expand upward
164
+ // without overlapping the donut.
165
+ center: ["50%", "38%"],
166
+ encode: {
167
+ itemName: "name",
168
+ value: "value"
169
+ },
170
+ label: {
171
+ ...h,
172
+ formatter: i
173
+ },
174
+ itemStyle: {
175
+ ...x,
176
+ color: S
177
+ }
178
+ };
179
+ }),
180
+ // Legend always shows for pie (mirrors v1) — slice names drive the
181
+ // entries, so even a single donut benefits from a category list.
182
+ legend: {
183
+ ...c,
184
+ show: !0
185
+ },
186
+ tooltip: {
187
+ ...d,
188
+ formatter: F(p, b)
189
+ }
190
+ };
191
+ }
192
+ function W(e, r, t, a, o, s) {
193
+ const l = typeof e.tooltip == "object" && !Array.isArray(e.tooltip) ? e.tooltip : {}, u = typeof e.legend == "object" && !Array.isArray(e.legend) ? e.legend : {}, d = typeof e.grid == "object" && !Array.isArray(e.grid) ? e.grid : {}, c = o?.formatter, p = o?.labelFormatter, {
194
+ niceMinVal: b,
195
+ niceMaxVal: g
196
+ } = H(r), v = Array.isArray(e.color) ? e.color : [], S = (i) => {
197
+ const n = i.seriesIndex ?? 0, y = (v.length > 0 ? v[n % v.length] : void 0) ?? i.color;
198
+ if (!s) return y;
199
+ const h = i.value?.name ?? i.name;
200
+ return h != null && s.has(h) ? y : w.color.modifyAlpha(y, 0.15);
201
+ };
202
+ return {
203
+ ...e,
204
+ dataset: r.map((i) => ({
205
+ source: i
206
+ })),
207
+ grid: {
208
+ ...d,
209
+ ...T(!0, t),
210
+ right: parseInt(t.spacing(4)),
211
+ containLabel: !0
212
+ },
213
+ // Drop pie-specific structural keys that shouldn't render in the
214
+ // bar fallback. ECharts ignores undefined keys, so this is a clean
215
+ // override.
216
+ series: r.map((i, n) => ({
217
+ datasetIndex: n,
218
+ type: "bar",
219
+ name: a?.[n] ?? `Series ${n + 1}`,
220
+ barMaxWidth: 100,
221
+ emphasis: {
222
+ focus: "series"
223
+ },
224
+ ...j(c, "x"),
225
+ itemStyle: {
226
+ color: S
227
+ }
228
+ })),
229
+ xAxis: {
230
+ type: "value",
231
+ // Closures over the pre-computed nice bounds — ECharts calls them
232
+ // once per render to resolve the axis extents.
233
+ min: () => b,
234
+ max: () => g,
235
+ axisLine: {
236
+ show: !1
237
+ },
238
+ axisTick: {
239
+ show: !1
240
+ },
241
+ splitLine: {
242
+ show: !0,
243
+ lineStyle: {
244
+ color: t.palette.black?.[4] ?? t.palette.divider
245
+ }
246
+ },
247
+ // Value labels render BELOW the axis line (default placement),
248
+ // NOT inside the plot. Bar/histogram use `inside: true` +
249
+ // `verticalAlign: 'bottom'` for their *vertical* y-axis where the
250
+ // axis is the left wall — labels inside read like grid annotations.
251
+ // A horizontal bar chart's value axis is the x-axis, and `inside`
252
+ // there pushes the max label *behind* the bar (it visually
253
+ // disappears once a bar reaches the right edge). Use the default
254
+ // below-the-axis placement so the rounded extents stay readable.
255
+ axisLabel: {
256
+ fontSize: t.typography.overlineDelicate?.fontSize,
257
+ fontFamily: t.typography.overlineDelicate?.fontFamily,
258
+ margin: parseInt(t.spacing(1)),
259
+ showMaxLabel: !0,
260
+ showMinLabel: !0,
261
+ formatter: (i) => i !== g && i !== b || i === 0 ? "" : c ? c(i) : String(i)
262
+ }
263
+ },
264
+ yAxis: {
265
+ type: "category",
266
+ axisLine: {
267
+ show: !1
268
+ },
269
+ axisTick: {
270
+ show: !1
271
+ },
272
+ axisLabel: {
273
+ padding: [parseInt(t.spacing(0.5)), 0, 0, 0],
274
+ ...p && {
275
+ formatter: (i) => String(p(i))
276
+ }
277
+ }
278
+ },
279
+ legend: {
280
+ ...u,
281
+ show: !0
282
+ },
283
+ tooltip: {
284
+ ...l,
285
+ trigger: "axis",
286
+ formatter: E(c, p)
287
+ }
288
+ };
289
+ }
290
+ function E(e, r) {
291
+ return I((t) => {
292
+ const a = t.encode?.x?.at(0), o = a !== void 0 ? t.dimensionNames?.[a] : void 0, s = t.value && typeof t.value == "object" && !Array.isArray(t.value) ? t.value : void 0, l = o && s ? s[o] : void 0, u = typeof l == "number" && e ? e(l) : l ?? "", d = typeof t.marker == "string" ? t.marker : "", c = t.seriesName ? `${t.seriesName}: ` : "";
293
+ return {
294
+ name: String(r ? r(t.name ?? "") : t.name ?? ""),
295
+ seriesName: c,
296
+ marker: d,
297
+ value: u
298
+ };
299
+ });
300
+ }
301
+ function H(e) {
302
+ let r = 0, t = -1 / 0;
303
+ for (const a of e)
304
+ for (const o of a)
305
+ typeof o?.value != "number" || !Number.isFinite(o.value) || (o.value < r && (r = o.value), o.value > t && (t = o.value));
306
+ return {
307
+ niceMinVal: r < 0 ? A(r) : 0,
308
+ niceMaxVal: t <= 0 ? 1 : A(t)
309
+ };
310
+ }
311
+ function F(e, r) {
312
+ return I((t) => {
313
+ const a = t.encode?.value?.at(0) ?? 1, s = (t.value && typeof t.value == "object" && !Array.isArray(t.value) ? Object.values(t.value) : [])[a], l = typeof s == "number" && e ? e(s) : s ?? "", u = typeof t.marker == "string" ? t.marker : "", d = t.seriesName ? `${t.seriesName}: ` : "";
314
+ return {
315
+ name: String(r ? r(t.name ?? "") : t.name ?? ""),
316
+ seriesName: d,
317
+ marker: u,
318
+ value: l
319
+ };
320
+ });
321
+ }
322
+ const C = {
323
+ root: {
324
+ display: "flex",
325
+ alignItems: "center",
326
+ justifyContent: "center",
327
+ minHeight: 200,
328
+ py: 1,
329
+ gap: 2
330
+ },
331
+ donut: {
332
+ width: 160,
333
+ height: 160,
334
+ borderRadius: "50%"
335
+ }
336
+ };
337
+ function ve(e) {
338
+ const r = O(2), {
339
+ count: t
340
+ } = e, a = t === void 0 ? 1 : t;
341
+ let o;
342
+ return r[0] !== a ? (o = /* @__PURE__ */ k(P, { sx: C.root, children: Array.from({
343
+ length: a
344
+ }).map(R) }), r[0] = a, r[1] = o) : o = r[1], o;
345
+ }
346
+ function R(e, r) {
347
+ return /* @__PURE__ */ k($, { variant: "circular", sx: C.donut }, `donut-${r}`);
348
+ }
349
+ function he(e) {
350
+ const r = [];
351
+ return e.getCaptureEl && r.push(M({
352
+ filename: e.filename,
353
+ getCaptureEl: e.getCaptureEl,
354
+ pixelRatio: e.pngPixelRatio,
355
+ backgroundColor: e.pngBackgroundColor
356
+ })), r.push({
357
+ id: "csv",
358
+ label: "Download as CSV",
359
+ resolve: () => {
360
+ const t = e.getData(), a = [["series", "name", "value"]];
361
+ for (const [s, l] of t.entries()) {
362
+ const u = e.seriesNames?.[s] ?? `series_${s + 1}`;
363
+ for (const d of l)
364
+ a.push([u, d.name, d.value]);
365
+ }
366
+ const o = D(a);
367
+ return Promise.resolve({
368
+ url: o.url,
369
+ filename: `${e.filename}.csv`,
370
+ revoke: o.revoke
371
+ });
372
+ }
373
+ }), r;
374
+ }
375
+ export {
376
+ ve as PieSkeleton,
377
+ he as createPieDownloadConfig,
378
+ be as createPieOptionFactory,
379
+ B as pieOptions
380
+ };
381
+ //# sourceMappingURL=pie.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pie.js","sources":["../../src/widgets-v2/pie/options.ts","../../src/widgets-v2/pie/skeleton.tsx","../../src/widgets-v2/pie/download.ts"],"sourcesContent":["import type { Theme } from '@mui/material'\nimport type { EChartsOption } from 'echarts'\nimport * as echarts from 'echarts'\nimport type { CallbackDataParams } from 'echarts/types/dist/shared'\nimport {\n buildGridConfig,\n buildLegendConfig,\n buildSeriesLabelConfig,\n createTooltipFormatter,\n createTooltipPositioner,\n niceNum,\n} from '../../widgets/utils/chart-config'\nimport type { OptionFactory, OptionFactoryContext } from '../echart'\nimport { mergeOptions } from '../utils'\nimport type {\n PieEChartsOption,\n PieOptionFactoryInput,\n PieOptionsInput,\n PieWidgetData,\n} from './types'\n\nconst DEFAULT_RADIUS: readonly [string, string] = ['58%', '74%']\n\n/**\n * Builds the **structural** ECharts option for a pie / donut widget.\n * Mirrors v1's pie look-and-feel: themed legend (`buildLegendConfig`),\n * themed tooltip via `createTooltipPositioner` / `createTooltipFormatter`,\n * `qualitative.bold` color palette, slice borders against the paper\n * background, hover-emphasis disabled, and a centered rich-text label.\n *\n * Layered like Bar / Histogram:\n * - **Theme-aware bits** live here on a series template (slice border,\n * center-label rich style sizes, emphasis-disabled).\n * - **Reactive bits** (tooltip value formatter, center-label text,\n * selection-driven dim) are re-emitted by\n * {@link createPieOptionFactory} at fusion time so RelativeData's\n * percent override flows through.\n */\nexport function pieOptions({\n theme,\n formatter,\n labelFormatter,\n}: PieOptionsInput): PieEChartsOption {\n return {\n legend: {\n ...buildLegendConfig({ hasLegend: true, labelFormatter }),\n // Pie reads better with a centered legend (the donut is radially\n // symmetric — left-aligning the legend below it visually unbalances\n // the chart). Override `buildLegendConfig`'s `type: 'scroll'` with\n // `'plain'` so long category lists wrap to multiple rows instead\n // of clipping the last visible item against the chart container.\n // The wider `itemGap` gives chips breathing room in the typical\n // 3–6 category case.\n left: 'center',\n type: 'scroll',\n itemGap: 16,\n },\n tooltip: {\n // Pie uses item-trigger (no axis); the rest of the styling mirrors\n // bar/histogram so the dashboard reads consistently — dark\n // grey[900] bg, white caption-font text, padded, with the shared\n // overflow-aware positioner.\n trigger: 'item',\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 position: createTooltipPositioner(theme),\n formatter: buildPieTooltipFormatter(formatter, labelFormatter),\n },\n // V1 used `qualitative.bold` only (no `secondary.main` prefix) because\n // pie slices are categorical — each slice deserves a distinct palette\n // entry from the start, not a primary highlight.\n color: Object.values(\n (theme.palette as { qualitative?: { bold?: Record<string, string> } })\n .qualitative?.bold ?? {},\n ),\n // Pie template. The merger spreads this into each per-data series it\n // emits — borderColor / borderWidth / emphasis-disabled / label rich\n // sizes all survive through.\n series: [\n {\n type: 'pie',\n colorBy: 'data',\n avoidLabelOverlap: true,\n selectedOffset: 0,\n emphasis: { disabled: true },\n itemStyle: {\n borderColor: theme.palette.background.paper,\n borderWidth: 1,\n },\n label: {\n show: true,\n position: 'center',\n rich: {\n b: { fontSize: 16, fontWeight: 'normal', lineHeight: 20 },\n c: { fontSize: 28, fontWeight: 'bold', lineHeight: 27 },\n },\n },\n },\n ],\n }\n}\n\n/**\n * Returns the pie widget's {@link OptionFactory} — one closure that owns\n * BOTH phases of option construction:\n *\n * - **Structural phase** (`option == null`) — builds the theme-aware\n * structural option via {@link pieOptions}, optionally merging the\n * consumer-supplied `optionsOverride` on top. Called once by Provider\n * to seed `rawOptions` in the store.\n * - **Merge phase** (`option != null`) — fuses post-pipeline `state.data`\n * (`PieWidgetData`) into the option via the dataset API. Single-series\n * → donut (one dataset, `series[i].encode = { itemName: 'name', value: 'value' }`).\n * Multi-series → horizontal-bar fallback (mirrors v1 pie). Reactive\n * formatters from `ctx` drive the tooltip + center label at fusion\n * time so RelativeData's percent formatter flows through without a\n * structural rebuild.\n */\nexport function createPieOptionFactory(\n options: PieOptionFactoryInput,\n): OptionFactory {\n const { theme, formatter, labelFormatter, optionsOverride, seriesNames } =\n options\n const radius = options.radius ?? DEFAULT_RADIUS\n const selection = options.selection\n const selectionSet =\n selection && selection.length > 0\n ? new Set<string | number>(selection)\n : null\n return (option, data, ctx) => {\n if (option == null) {\n const structural = pieOptions({ theme, formatter, labelFormatter })\n return optionsOverride\n ? (mergeOptions(\n structural as unknown as Record<string, unknown>,\n optionsOverride as Partial<Record<string, unknown>>,\n ) as EChartsOption)\n : structural\n }\n\n const seriesArr = Array.isArray(data) ? (data as PieWidgetData) : []\n if (seriesArr.length === 0) {\n return { ...option, dataset: [], series: [] }\n }\n if (seriesArr.length > 1) {\n return buildMultiSeriesBarFusion(\n option,\n seriesArr,\n theme,\n seriesNames,\n ctx,\n selectionSet,\n )\n }\n return buildSingleSeriesPieFusion(\n option,\n seriesArr,\n radius,\n seriesNames,\n ctx,\n selectionSet,\n )\n }\n}\n\n/**\n * Single-series donut fusion. Spreads the structural pie series template\n * into per-data series with center/radius/encoding, wires the reactive\n * center-label / tooltip formatters and the per-data palette-aware\n * selection-dim callback.\n */\nfunction buildSingleSeriesPieFusion(\n option: EChartsOption,\n seriesArr: PieWidgetData,\n radius: readonly [string, string],\n seriesNames: readonly string[] | undefined,\n ctx: OptionFactoryContext | undefined,\n selectionSet: Set<string | number> | null,\n): EChartsOption {\n const seriesTemplates = Array.isArray(option.series) ? option.series : []\n const broadcastTemplate = seriesTemplates[0] ?? {}\n const baseTooltip =\n typeof option.tooltip === 'object' && !Array.isArray(option.tooltip)\n ? option.tooltip\n : {}\n const baseLegend =\n typeof option.legend === 'object' && !Array.isArray(option.legend)\n ? option.legend\n : {}\n const formatter = ctx?.formatter\n const labelFormatter = ctx?.labelFormatter\n\n // Pie wants `colorBy: 'data'` — each slice draws from the option's\n // `color` palette by data index. But installing an `itemStyle.color`\n // callback disables ECharts' automatic per-data cycling, and\n // `params.color` collapses to the series color (so every slice goes\n // the same color). We re-implement the per-data palette resolution\n // here so the multicolor look survives selection-driven dimming.\n const palette = Array.isArray(option.color)\n ? (option.color as readonly (string | undefined)[])\n : []\n const resolvePaletteColor = (params: CallbackDataParams): string => {\n const swatch =\n palette.length > 0\n ? palette[params.dataIndex % palette.length]\n : undefined\n return swatch ?? (params.color as string)\n }\n\n // Always emit `itemStyle.color` (passthrough when nothing is selected),\n // not conditionally — same anti-stale-callback rationale as bar /\n // histogram. The slice border + width come from the structural\n // template's `itemStyle` and survive via the spread below.\n const colorFn = (params: CallbackDataParams): string => {\n const base = resolvePaletteColor(params)\n if (!selectionSet) return base\n const datum = params.value as { name?: string | number } | undefined\n const name = datum?.name ?? params.name\n return name != null && selectionSet.has(name)\n ? base\n : echarts.color.modifyAlpha(base, 0.15)\n }\n\n // Center label formatter — lives in the merger because it reads\n // reactive `formatter` / `labelFormatter` from ctx. The rich tags\n // `{c|…}` and `{b|…}` reference the rich styles baked into the\n // structural label template.\n const labelTextFormatter = (params: CallbackDataParams): string => {\n const { name } = params\n const encodeIndex = params.encode?.value?.[0]\n if (encodeIndex === undefined) return ''\n const value = (Object.values(params.data ?? {}) as unknown[]).at(\n encodeIndex,\n )\n // `value` here is the resolved dataset cell — for pie data it's a\n // `string | number` primitive. Anything else is a misuse we won't\n // dress up with `String(...)` (would render \"[object Object]\").\n const formattedValue =\n typeof value === 'number'\n ? formatter\n ? formatter(value)\n : String(value)\n : typeof value === 'string'\n ? value\n : ''\n const formattedName = labelFormatter\n ? String(labelFormatter(name ?? ''))\n : String(name ?? '')\n return `{c|${formattedValue}}\\n\\n{b|${formattedName}}`\n }\n\n return {\n ...option,\n dataset: seriesArr.map((s) => ({ source: s as readonly object[] })),\n series: seriesArr.map((_, i) => {\n const template =\n (seriesTemplates[i] as object | undefined) ??\n (broadcastTemplate as object)\n const templateObj = typeof template === 'object' ? template : {}\n const templateLabel = (templateObj as { label?: object }).label ?? {}\n const templateItemStyle =\n (templateObj as { itemStyle?: object }).itemStyle ?? {}\n return {\n ...templateObj,\n type: 'pie' as const,\n datasetIndex: i,\n name: seriesNames?.[i] ?? `Series ${i + 1}`,\n radius: [...radius],\n // Lift the donut up so the bottom-anchored legend has the\n // vertical real estate to wrap to multiple rows for long\n // category lists — at exactly `50%` the bottom slices crowd\n // the chips and `type: 'plain'` legends can't expand upward\n // without overlapping the donut.\n center: ['50%', '38%'] as [string, string],\n encode: { itemName: 'name', value: 'value' },\n label: {\n ...templateLabel,\n formatter: labelTextFormatter,\n },\n itemStyle: {\n ...templateItemStyle,\n color: colorFn,\n },\n }\n }),\n // Legend always shows for pie (mirrors v1) — slice names drive the\n // entries, so even a single donut benefits from a category list.\n legend: { ...baseLegend, show: true },\n tooltip: {\n ...baseTooltip,\n formatter: buildPieTooltipFormatter(formatter, labelFormatter),\n },\n }\n}\n\n/**\n * Multi-series horizontal-bar fusion. Mirrors v1 pie's \"pie data with\n * >1 series collapses into a horizontal bar chart\" behavior — side-by-\n * side donuts don't read well when you're comparing the same categories\n * across cohorts, so swap to a value-on-x / category-on-y bar layout.\n *\n * Pie data shape is identical to bar's (`{ name, value }[][]`), so the\n * same dataset feeds either layout without transformation.\n */\nfunction buildMultiSeriesBarFusion(\n option: EChartsOption,\n seriesArr: PieWidgetData,\n theme: Theme,\n seriesNames: readonly string[] | undefined,\n ctx: OptionFactoryContext | undefined,\n selectionSet: Set<string | number> | null,\n): EChartsOption {\n const baseTooltip =\n typeof option.tooltip === 'object' && !Array.isArray(option.tooltip)\n ? option.tooltip\n : {}\n const baseLegend =\n typeof option.legend === 'object' && !Array.isArray(option.legend)\n ? option.legend\n : {}\n const baseGrid =\n typeof option.grid === 'object' && !Array.isArray(option.grid)\n ? option.grid\n : {}\n const formatter = ctx?.formatter\n const labelFormatter = ctx?.labelFormatter\n\n const { niceMinVal, niceMaxVal } = computeNiceBounds(seriesArr)\n\n // Per-series palette — multi-series bars take one color per series\n // (not per-data, unlike donut slices). Same anti-stale-callback rule:\n // always emit the callback so a transition to/from a selection\n // replaces the previous closure cleanly.\n const palette = Array.isArray(option.color)\n ? (option.color as readonly (string | undefined)[])\n : []\n const barColorFn = (params: CallbackDataParams): string => {\n const seriesIdx = params.seriesIndex ?? 0\n const seriesSwatch =\n palette.length > 0 ? palette[seriesIdx % palette.length] : undefined\n const base = (seriesSwatch ?? params.color) as string\n if (!selectionSet) return base\n const datum = params.value as { name?: string | number } | undefined\n const name = datum?.name ?? params.name\n return name != null && selectionSet.has(name)\n ? base\n : echarts.color.modifyAlpha(base, 0.15)\n }\n\n return {\n ...option,\n dataset: seriesArr.map((s) => ({ source: s as readonly object[] })),\n grid: {\n ...baseGrid,\n ...buildGridConfig(true, theme),\n right: parseInt(theme.spacing(4)),\n containLabel: true,\n },\n // Drop pie-specific structural keys that shouldn't render in the\n // bar fallback. ECharts ignores undefined keys, so this is a clean\n // override.\n series: seriesArr.map((_, i) => ({\n datasetIndex: i,\n type: 'bar' as const,\n name: seriesNames?.[i] ?? `Series ${i + 1}`,\n barMaxWidth: 100,\n emphasis: { focus: 'series' },\n ...buildSeriesLabelConfig(formatter, 'x'),\n itemStyle: { color: barColorFn },\n })),\n xAxis: {\n type: 'value',\n // Closures over the pre-computed nice bounds — ECharts calls them\n // once per render to resolve the axis extents.\n min: () => niceMinVal,\n max: () => niceMaxVal,\n axisLine: { show: false },\n axisTick: { show: false },\n splitLine: {\n show: true,\n lineStyle: { color: theme.palette.black?.[4] ?? theme.palette.divider },\n },\n // Value labels render BELOW the axis line (default placement),\n // NOT inside the plot. Bar/histogram use `inside: true` +\n // `verticalAlign: 'bottom'` for their *vertical* y-axis where the\n // axis is the left wall — labels inside read like grid annotations.\n // A horizontal bar chart's value axis is the x-axis, and `inside`\n // there pushes the max label *behind* the bar (it visually\n // disappears once a bar reaches the right edge). Use the default\n // below-the-axis placement so the rounded extents stay readable.\n axisLabel: {\n fontSize: theme.typography.overlineDelicate?.fontSize,\n fontFamily: theme.typography.overlineDelicate?.fontFamily,\n margin: parseInt(theme.spacing(1)),\n showMaxLabel: true,\n showMinLabel: true,\n formatter: (value: number) => {\n if (value !== niceMaxVal && value !== niceMinVal) return ''\n if (value === 0) return ''\n return formatter ? formatter(value) : String(value)\n },\n },\n },\n yAxis: {\n type: 'category',\n axisLine: { show: false },\n axisTick: { show: false },\n axisLabel: {\n padding: [parseInt(theme.spacing(0.5)), 0, 0, 0],\n ...(labelFormatter && {\n formatter: (value: string | number) => String(labelFormatter(value)),\n }),\n },\n },\n legend: { ...baseLegend, show: true },\n tooltip: {\n ...baseTooltip,\n trigger: 'axis',\n formatter: buildHorizontalBarTooltipFormatter(formatter, labelFormatter),\n },\n } as EChartsOption\n}\n\n/**\n * Tooltip formatter for the horizontal-bar fallback. Reads the value by\n * `encode.x` dimension index (v1 parity) so it stays robust to\n * downstream changes that rename dataset columns.\n */\nfunction buildHorizontalBarTooltipFormatter(\n formatter: ((value: number) => string) | undefined,\n labelFormatter: ((value: string | number) => string | number) | undefined,\n) {\n return createTooltipFormatter((item) => {\n const encodeIndex = item.encode?.x?.at(0)\n const dimName =\n encodeIndex !== undefined ? item.dimensionNames?.[encodeIndex] : undefined\n const row =\n item.value && typeof item.value === 'object' && !Array.isArray(item.value)\n ? (item.value as Record<string, string | number>)\n : undefined\n const raw = dimName && row ? row[dimName] : undefined\n const formattedValue =\n typeof raw === 'number' && formatter ? formatter(raw) : (raw ?? '')\n const marker = typeof item.marker === 'string' ? item.marker : ''\n const seriesName = item.seriesName ? `${item.seriesName}: ` : ''\n const name = labelFormatter\n ? String(labelFormatter(item.name ?? ''))\n : String(item.name ?? '')\n return { name, seriesName, marker, value: formattedValue }\n })\n}\n\n/**\n * Min/max bounds over every datum's `.value` across all series. Used by\n * the horizontal-bar fallback's x-axis label formatter so we only render\n * labels at the rounded extents (matches v1 + bar / histogram).\n */\nfunction computeNiceBounds(seriesArr: PieWidgetData): {\n niceMinVal: number\n niceMaxVal: number\n} {\n let min = 0\n let max = -Infinity\n for (const series of seriesArr) {\n for (const d of series) {\n if (typeof d?.value !== 'number' || !Number.isFinite(d.value)) continue\n if (d.value < min) min = d.value\n if (d.value > max) max = d.value\n }\n }\n return {\n niceMinVal: min < 0 ? niceNum(min) : 0,\n niceMaxVal: max <= 0 ? 1 : niceNum(max),\n }\n}\n\n/**\n * Tooltip formatter for pie slices. `item.value` is the dataset row\n * object (e.g. `{ name: 'A', value: 10 }`); we pull the value by\n * `encode.value`'s dimension index, formatted via the reactive `formatter`\n * if present. Slice name passes through `labelFormatter`.\n */\nfunction buildPieTooltipFormatter(\n formatter: ((value: number) => string) | undefined,\n labelFormatter: ((value: string | number) => string | number) | undefined,\n) {\n return createTooltipFormatter((item) => {\n const encodeIndex = item.encode?.value?.at(0) ?? 1\n const values =\n item.value && typeof item.value === 'object' && !Array.isArray(item.value)\n ? (Object.values(item.value) as (string | number)[])\n : []\n const raw = values[encodeIndex]\n const formattedValue =\n typeof raw === 'number' && formatter ? formatter(raw) : (raw ?? '')\n const marker = typeof item.marker === 'string' ? item.marker : ''\n const seriesName = item.seriesName ? `${item.seriesName}: ` : ''\n const name = labelFormatter\n ? String(labelFormatter(item.name ?? ''))\n : String(item.name ?? '')\n return { name, seriesName, marker, value: formattedValue }\n })\n}\n","import { Box, Skeleton } from '@mui/material'\nimport type { SxProps, Theme } from '@mui/material'\n\nconst styles = {\n root: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n minHeight: 200,\n py: 1,\n gap: 2,\n },\n donut: {\n width: 160,\n height: 160,\n borderRadius: '50%',\n },\n} satisfies Record<string, SxProps<Theme>>\n\nexport interface PieSkeletonProps {\n count?: number\n}\n\nexport function PieSkeleton({ count = 1 }: PieSkeletonProps) {\n return (\n <Box sx={styles.root}>\n {Array.from({ length: count }).map((_, i) => (\n <Skeleton key={`donut-${i}`} variant='circular' sx={styles.donut} />\n ))}\n </Box>\n )\n}\n","import {\n buildPngDownloadItem,\n downloadToCSV,\n type DownloadItem,\n} from '../actions/download'\nimport type { PieWidgetData } from './types'\n\n/**\n * Download menu items for the Pie widget. Always includes a CSV item with\n * `series, name, value` columns (one row per slice; series labels come from\n * `seriesNames` if provided, else `series_<n>`). When `getCaptureEl` is\n * supplied, prepends a PNG item that rasterises the captured element via\n * `html2canvas`.\n */\nexport function createPieDownloadConfig(args: {\n filename: string\n getData: () => PieWidgetData\n seriesNames?: readonly string[]\n getCaptureEl?: () => HTMLElement | null\n pngPixelRatio?: number\n pngBackgroundColor?: string | null\n}): DownloadItem[] {\n const items: DownloadItem[] = []\n if (args.getCaptureEl) {\n items.push(\n buildPngDownloadItem({\n filename: args.filename,\n getCaptureEl: args.getCaptureEl,\n pixelRatio: args.pngPixelRatio,\n backgroundColor: args.pngBackgroundColor,\n }),\n )\n }\n items.push({\n id: 'csv',\n label: 'Download as CSV',\n resolve: () => {\n const data = args.getData()\n const rows: unknown[][] = [['series', 'name', 'value']]\n for (const [i, series] of data.entries()) {\n const seriesName = args.seriesNames?.[i] ?? `series_${i + 1}`\n for (const slice of series) {\n rows.push([seriesName, slice.name, slice.value])\n }\n }\n const handle = downloadToCSV(rows)\n return Promise.resolve({\n url: handle.url,\n filename: `${args.filename}.csv`,\n revoke: handle.revoke,\n })\n },\n })\n return items\n}\n"],"names":["DEFAULT_RADIUS","pieOptions","theme","formatter","labelFormatter","legend","buildLegendConfig","hasLegend","left","type","itemGap","tooltip","trigger","backgroundColor","palette","grey","borderWidth","padding","parseInt","spacing","textStyle","color","common","white","fontSize","fontFamily","typography","caption","position","createTooltipPositioner","buildPieTooltipFormatter","Object","values","qualitative","bold","series","colorBy","avoidLabelOverlap","selectedOffset","emphasis","disabled","itemStyle","borderColor","background","paper","label","show","rich","b","fontWeight","lineHeight","c","createPieOptionFactory","options","optionsOverride","seriesNames","radius","selection","selectionSet","length","Set","option","data","ctx","structural","mergeOptions","seriesArr","Array","isArray","dataset","buildMultiSeriesBarFusion","buildSingleSeriesPieFusion","seriesTemplates","broadcastTemplate","baseTooltip","baseLegend","resolvePaletteColor","params","dataIndex","undefined","colorFn","base","name","value","has","echarts","modifyAlpha","labelTextFormatter","encodeIndex","encode","at","formattedValue","String","formattedName","map","s","source","_","i","template","templateObj","templateLabel","templateItemStyle","datasetIndex","center","itemName","baseGrid","grid","niceMinVal","niceMaxVal","computeNiceBounds","barColorFn","seriesIdx","seriesIndex","buildGridConfig","right","containLabel","barMaxWidth","focus","buildSeriesLabelConfig","xAxis","min","max","axisLine","axisTick","splitLine","lineStyle","black","divider","axisLabel","overlineDelicate","margin","showMaxLabel","showMinLabel","yAxis","buildHorizontalBarTooltipFormatter","createTooltipFormatter","item","x","dimName","dimensionNames","row","raw","marker","seriesName","d","Number","isFinite","niceNum","styles","root","display","alignItems","justifyContent","minHeight","py","gap","donut","width","height","borderRadius","PieSkeleton","t0","$","_c","count","t1","t2","Box","from","_temp","jsx","Skeleton","createPieDownloadConfig","args","items","getCaptureEl","push","buildPngDownloadItem","filename","pixelRatio","pngPixelRatio","pngBackgroundColor","id","resolve","getData","rows","entries","slice","handle","downloadToCSV","Promise","url","revoke"],"mappings":"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"}
@@ -0,0 +1,52 @@
1
+ import { R as y, a as R } from "../range-DsqTjSpg.js";
2
+ import { jsx as r, jsxs as c } from "react/jsx-runtime";
3
+ import { c as p } from "react/compiler-runtime";
4
+ import { Box as a, Skeleton as i } from "@mui/material";
5
+ const e = {
6
+ root: {
7
+ display: "flex",
8
+ flexDirection: "column",
9
+ gap: 3,
10
+ py: 1
11
+ },
12
+ item: {
13
+ display: "flex",
14
+ flexDirection: "column",
15
+ gap: 1.5
16
+ },
17
+ track: {
18
+ height: 32
19
+ },
20
+ inputsRow: {
21
+ display: "flex",
22
+ gap: 2
23
+ },
24
+ input: {
25
+ flex: 1,
26
+ height: 40
27
+ }
28
+ };
29
+ function g(l) {
30
+ const t = p(2), {
31
+ count: s
32
+ } = l, o = s === void 0 ? 1 : s;
33
+ let n;
34
+ return t[0] !== o ? (n = /* @__PURE__ */ r(a, { sx: e.root, children: Array.from({
35
+ length: o
36
+ }).map(x) }), t[0] = o, t[1] = n) : n = t[1], n;
37
+ }
38
+ function x(l, t) {
39
+ return /* @__PURE__ */ c(a, { sx: e.item, children: [
40
+ /* @__PURE__ */ r(i, { variant: "rectangular", sx: e.track }),
41
+ /* @__PURE__ */ c(a, { sx: e.inputsRow, children: [
42
+ /* @__PURE__ */ r(i, { variant: "rectangular", sx: e.input }),
43
+ /* @__PURE__ */ r(i, { variant: "rectangular", sx: e.input })
44
+ ] })
45
+ ] }, `item-${t}`);
46
+ }
47
+ export {
48
+ y as Range,
49
+ g as RangeSkeleton,
50
+ R as RangeUI
51
+ };
52
+ //# sourceMappingURL=range.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"range.js","sources":["../../src/widgets-v2/range/skeleton.tsx"],"sourcesContent":["import { Box, Skeleton } from '@mui/material'\nimport type { SxProps, Theme } from '@mui/material'\n\nconst styles = {\n root: {\n display: 'flex',\n flexDirection: 'column',\n gap: 3,\n py: 1,\n },\n item: {\n display: 'flex',\n flexDirection: 'column',\n gap: 1.5,\n },\n track: { height: 32 },\n inputsRow: {\n display: 'flex',\n gap: 2,\n },\n input: { flex: 1, height: 40 },\n} satisfies Record<string, SxProps<Theme>>\n\nexport interface RangeSkeletonProps {\n count?: number\n}\n\n/**\n * Loading placeholder for the Range widget. Renders `count` rows, each\n * matching the slider-then-inputs layout of {@link RangeUI} so the layout\n * doesn't jump when data resolves.\n */\nexport function RangeSkeleton({ count = 1 }: RangeSkeletonProps) {\n return (\n <Box sx={styles.root}>\n {Array.from({ length: count }).map((_, i) => (\n <Box key={`item-${i}`} sx={styles.item}>\n <Skeleton variant='rectangular' sx={styles.track} />\n <Box sx={styles.inputsRow}>\n <Skeleton variant='rectangular' sx={styles.input} />\n <Skeleton variant='rectangular' sx={styles.input} />\n </Box>\n </Box>\n ))}\n </Box>\n )\n}\n"],"names":["styles","root","display","flexDirection","gap","py","item","track","height","inputsRow","input","flex","RangeSkeleton","t0","$","_c","count","t1","undefined","t2","Box","Array","from","length","map","_temp","_","i","jsxs","jsx","Skeleton"],"mappings":";;;;AAGA,MAAMA,IAAS;AAAA,EACbC,MAAM;AAAA,IACJC,SAAS;AAAA,IACTC,eAAe;AAAA,IACfC,KAAK;AAAA,IACLC,IAAI;AAAA,EAAA;AAAA,EAENC,MAAM;AAAA,IACJJ,SAAS;AAAA,IACTC,eAAe;AAAA,IACfC,KAAK;AAAA,EAAA;AAAA,EAEPG,OAAO;AAAA,IAAEC,QAAQ;AAAA,EAAA;AAAA,EACjBC,WAAW;AAAA,IACTP,SAAS;AAAA,IACTE,KAAK;AAAA,EAAA;AAAA,EAEPM,OAAO;AAAA,IAAEC,MAAM;AAAA,IAAGH,QAAQ;AAAA,EAAA;AAC5B;AAWO,SAAAI,EAAAC,GAAA;AAAA,QAAAC,IAAAC,EAAA,CAAA,GAAuB;AAAA,IAAAC,OAAAC;AAAAA,EAAAA,IAAAJ,GAAEG,IAAAC,MAAAC,SAAA,IAAAD;AAAS,MAAAE;AAAA,SAAAL,SAAAE,KAErCG,sBAACC,GAAA,EAAQ,IAAApB,EAAMC,MACZoB,gBAAKC,KAAM;AAAA,IAAAC,QAAUP;AAAAA,EAAAA,CAAO,EAACQ,IAAKC,CAQlC,GACH,GAAMX,OAAAE,GAAAF,OAAAK,KAAAA,IAAAL,EAAA,CAAA,GAVNK;AAUM;AAZH,SAAAM,EAAAC,GAAAC,GAAA;AAAA,SAIC,gBAAAC,EAACR,GAAA,EAA0B,IAAApB,EAAMM,MAC/B,UAAA;AAAA,IAAA,gBAAAuB,EAACC,GAAA,EAAiB,SAAA,eAAkB,IAAA9B,EAAMO,OAAM;AAAA,IAChD,gBAAAqB,EAACR,GAAA,EAAQ,IAAApB,EAAMS,WACb,UAAA;AAAA,MAAA,gBAAAoB,EAACC,GAAA,EAAiB,SAAA,eAAkB,IAAA9B,EAAMU,OAAM;AAAA,wBAC/CoB,GAAA,EAAiB,SAAA,eAAkB,IAAA9B,EAAMU,MAAAA,CAAM;AAAA,IAAA,EAAA,CAClD;AAAA,EAAA,EAAA,WALgBiB,CAAC,EAMnB;AAAM;"}