@carto/ps-react-ui 4.7.1 → 4.9.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 (580) 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/{styles-BYTyKQFP.js → option-builders-F-c9ELi1.js} +25 -45
  16. package/dist/option-builders-F-c9ELi1.js.map +1 -0
  17. package/dist/png-item-CS4z1iSH.js +45 -0
  18. package/dist/png-item-CS4z1iSH.js.map +1 -0
  19. package/dist/range-l4fNHLEg.js +213 -0
  20. package/dist/range-l4fNHLEg.js.map +1 -0
  21. package/dist/resolve-theme-color-BdojIw0K.js +47 -0
  22. package/dist/resolve-theme-color-BdojIw0K.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-CQCAnDLb.js +388 -0
  30. package/dist/table-CQCAnDLb.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 +46 -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 +53 -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 +43 -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 +51 -0
  143. package/dist/types/widgets-v2/index.d.ts +108 -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 +57 -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 +27 -0
  166. package/dist/types/widgets-v2/range/range.d.ts +24 -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 +54 -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 +40 -0
  216. package/dist/types/widgets-v2/table/table-ui.d.ts +44 -0
  217. package/dist/types/widgets-v2/table/table.d.ts +50 -0
  218. package/dist/types/widgets-v2/table/types.d.ts +48 -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 +60 -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/types.d.ts +25 -0
  231. package/dist/types/widgets-v2/utils/data-zoom-layout.d.ts +11 -0
  232. package/dist/types/widgets-v2/utils/index.d.ts +3 -0
  233. package/dist/types/widgets-v2/utils/merge-options.d.ts +12 -0
  234. package/dist/types/widgets-v2/utils/merge-options.test.d.ts +1 -0
  235. package/dist/types/widgets-v2/utils/resolve-theme-color.d.ts +18 -0
  236. package/dist/types/widgets-v2/utils/resolve-theme-color.test.d.ts +1 -0
  237. package/dist/types/widgets-v2/wrapper/index.d.ts +4 -0
  238. package/dist/types/widgets-v2/wrapper/labels.d.ts +6 -0
  239. package/dist/types/widgets-v2/wrapper/style.d.ts +111 -0
  240. package/dist/types/widgets-v2/wrapper/widget-actions.d.ts +22 -0
  241. package/dist/types/widgets-v2/wrapper/widget-content.d.ts +12 -0
  242. package/dist/types/widgets-v2/wrapper/widget-wrapper.d.ts +51 -0
  243. package/dist/use-transform-DXPN3nY7.js +110 -0
  244. package/dist/use-transform-DXPN3nY7.js.map +1 -0
  245. package/dist/widget-context-DTGO0Yta.js +13 -0
  246. package/dist/widget-context-DTGO0Yta.js.map +1 -0
  247. package/dist/widget-store-registry-_W4Z4xp-.js +178 -0
  248. package/dist/widget-store-registry-_W4Z4xp-.js.map +1 -0
  249. package/dist/widgets/bar.js +14 -13
  250. package/dist/widgets/bar.js.map +1 -1
  251. package/dist/widgets/histogram.js +8 -7
  252. package/dist/widgets/histogram.js.map +1 -1
  253. package/dist/widgets/pie.js +19 -18
  254. package/dist/widgets/pie.js.map +1 -1
  255. package/dist/widgets/scatterplot.js +8 -7
  256. package/dist/widgets/scatterplot.js.map +1 -1
  257. package/dist/widgets/timeseries.js +11 -10
  258. package/dist/widgets/timeseries.js.map +1 -1
  259. package/dist/widgets/utils.js +8 -7
  260. package/dist/widgets/utils.js.map +1 -1
  261. package/dist/widgets-v2/actions.js +43 -0
  262. package/dist/widgets-v2/actions.js.map +1 -0
  263. package/dist/widgets-v2/bar.js +330 -0
  264. package/dist/widgets-v2/bar.js.map +1 -0
  265. package/dist/widgets-v2/category.js +104 -0
  266. package/dist/widgets-v2/category.js.map +1 -0
  267. package/dist/widgets-v2/echart.js +57 -0
  268. package/dist/widgets-v2/echart.js.map +1 -0
  269. package/dist/widgets-v2/formula.js +74 -0
  270. package/dist/widgets-v2/formula.js.map +1 -0
  271. package/dist/widgets-v2/histogram.js +353 -0
  272. package/dist/widgets-v2/histogram.js.map +1 -0
  273. package/dist/widgets-v2/markdown.js +68 -0
  274. package/dist/widgets-v2/markdown.js.map +1 -0
  275. package/dist/widgets-v2/pie.js +387 -0
  276. package/dist/widgets-v2/pie.js.map +1 -0
  277. package/dist/widgets-v2/range.js +52 -0
  278. package/dist/widgets-v2/range.js.map +1 -0
  279. package/dist/widgets-v2/scatterplot.js +411 -0
  280. package/dist/widgets-v2/scatterplot.js.map +1 -0
  281. package/dist/widgets-v2/spread.js +72 -0
  282. package/dist/widgets-v2/spread.js.map +1 -0
  283. package/dist/widgets-v2/stores.js +42 -0
  284. package/dist/widgets-v2/stores.js.map +1 -0
  285. package/dist/widgets-v2/table.js +78 -0
  286. package/dist/widgets-v2/table.js.map +1 -0
  287. package/dist/widgets-v2/timeseries.js +358 -0
  288. package/dist/widgets-v2/timeseries.js.map +1 -0
  289. package/dist/widgets-v2/utils.js +8 -0
  290. package/dist/widgets-v2/utils.js.map +1 -0
  291. package/dist/widgets-v2.js +953 -0
  292. package/dist/widgets-v2.js.map +1 -0
  293. package/package.json +71 -3
  294. package/src/components/lasso-tool/chip.test.tsx +176 -0
  295. package/src/components/lasso-tool/lasso-tool-inline.test.tsx +171 -0
  296. package/src/components/lasso-tool/lasso-tool.test.tsx +198 -0
  297. package/src/components/list-data/list-data.test.tsx +73 -0
  298. package/src/components/no-data-alert/no-data-alert.test.tsx +38 -0
  299. package/src/components/responsive-drawer/responsive-drawer.test.tsx +68 -0
  300. package/src/widgets/actions/brush-toggle/brush-overlay.test.tsx +465 -0
  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/range/components/range-item.test.tsx +243 -0
  309. package/src/widgets/stores/widget-store-branches.test.ts +275 -0
  310. package/src/widgets/table/config.test.ts +65 -0
  311. package/src/widgets/utils/chart-config/option-builders.test.ts +188 -0
  312. package/src/widgets-v2/PERFORMANCE.md +189 -0
  313. package/src/widgets-v2/actions/brush-toggle/brush-toggle.test.tsx +180 -0
  314. package/src/widgets-v2/actions/brush-toggle/brush-toggle.tsx +154 -0
  315. package/src/widgets-v2/actions/brush-toggle/index.ts +3 -0
  316. package/src/widgets-v2/actions/brush-toggle/labels.ts +9 -0
  317. package/src/widgets-v2/actions/brush-toggle/style.ts +11 -0
  318. package/src/widgets-v2/actions/brush-toggle/transforms.test.ts +47 -0
  319. package/src/widgets-v2/actions/brush-toggle/transforms.ts +31 -0
  320. package/src/widgets-v2/actions/change-column/change-column-icon.tsx +14 -0
  321. package/src/widgets-v2/actions/change-column/change-column.test.tsx +59 -0
  322. package/src/widgets-v2/actions/change-column/change-column.tsx +180 -0
  323. package/src/widgets-v2/actions/change-column/index.ts +7 -0
  324. package/src/widgets-v2/actions/change-column/labels.ts +9 -0
  325. package/src/widgets-v2/actions/change-column/sortable-column-item.tsx +56 -0
  326. package/src/widgets-v2/actions/change-column/style.ts +32 -0
  327. package/src/widgets-v2/actions/change-column/types.ts +11 -0
  328. package/src/widgets-v2/actions/download/download.test.tsx +327 -0
  329. package/src/widgets-v2/actions/download/download.tsx +144 -0
  330. package/src/widgets-v2/actions/download/exports.test.tsx +198 -0
  331. package/src/widgets-v2/actions/download/exports.ts +115 -0
  332. package/src/widgets-v2/actions/download/icons.tsx +26 -0
  333. package/src/widgets-v2/actions/download/index.ts +13 -0
  334. package/src/widgets-v2/actions/download/labels.ts +16 -0
  335. package/src/widgets-v2/actions/download/png-item.test.tsx +72 -0
  336. package/src/widgets-v2/actions/download/png-item.tsx +52 -0
  337. package/src/widgets-v2/actions/download/style.ts +3 -0
  338. package/src/widgets-v2/actions/download/types.ts +32 -0
  339. package/src/widgets-v2/actions/fullscreen/fullscreen.test.tsx +150 -0
  340. package/src/widgets-v2/actions/fullscreen/fullscreen.tsx +230 -0
  341. package/src/widgets-v2/actions/fullscreen/index.ts +7 -0
  342. package/src/widgets-v2/actions/fullscreen/labels.ts +9 -0
  343. package/src/widgets-v2/actions/fullscreen/style.ts +59 -0
  344. package/src/widgets-v2/actions/fullscreen/types.ts +15 -0
  345. package/src/widgets-v2/actions/index.ts +82 -0
  346. package/src/widgets-v2/actions/lock-selection/index.ts +10 -0
  347. package/src/widgets-v2/actions/lock-selection/labels.ts +11 -0
  348. package/src/widgets-v2/actions/lock-selection/lock-selection.test.tsx +187 -0
  349. package/src/widgets-v2/actions/lock-selection/lock-selection.tsx +130 -0
  350. package/src/widgets-v2/actions/lock-selection/style.ts +11 -0
  351. package/src/widgets-v2/actions/lock-selection/transforms.ts +27 -0
  352. package/src/widgets-v2/actions/relative-data/index.ts +3 -0
  353. package/src/widgets-v2/actions/relative-data/labels.ts +9 -0
  354. package/src/widgets-v2/actions/relative-data/relative-data.test.tsx +71 -0
  355. package/src/widgets-v2/actions/relative-data/relative-data.tsx +107 -0
  356. package/src/widgets-v2/actions/relative-data/style.ts +11 -0
  357. package/src/widgets-v2/actions/relative-data/transforms.test.ts +151 -0
  358. package/src/widgets-v2/actions/relative-data/transforms.ts +70 -0
  359. package/src/widgets-v2/actions/searcher/filter.ts +28 -0
  360. package/src/widgets-v2/actions/searcher/index.ts +8 -0
  361. package/src/widgets-v2/actions/searcher/labels.ts +13 -0
  362. package/src/widgets-v2/actions/searcher/searcher-toggle.tsx +91 -0
  363. package/src/widgets-v2/actions/searcher/searcher.test.tsx +92 -0
  364. package/src/widgets-v2/actions/searcher/searcher.tsx +112 -0
  365. package/src/widgets-v2/actions/searcher/style.ts +15 -0
  366. package/src/widgets-v2/actions/stack-toggle/index.ts +3 -0
  367. package/src/widgets-v2/actions/stack-toggle/labels.ts +9 -0
  368. package/src/widgets-v2/actions/stack-toggle/stack-toggle.test.tsx +61 -0
  369. package/src/widgets-v2/actions/stack-toggle/stack-toggle.tsx +54 -0
  370. package/src/widgets-v2/actions/stack-toggle/style.ts +11 -0
  371. package/src/widgets-v2/actions/stack-toggle/transforms.test.ts +43 -0
  372. package/src/widgets-v2/actions/stack-toggle/transforms.ts +25 -0
  373. package/src/widgets-v2/actions/zoom-toggle/index.ts +9 -0
  374. package/src/widgets-v2/actions/zoom-toggle/labels.ts +9 -0
  375. package/src/widgets-v2/actions/zoom-toggle/style.ts +11 -0
  376. package/src/widgets-v2/actions/zoom-toggle/transforms.test.ts +148 -0
  377. package/src/widgets-v2/actions/zoom-toggle/transforms.ts +171 -0
  378. package/src/widgets-v2/actions/zoom-toggle/zoom-toggle.test.tsx +107 -0
  379. package/src/widgets-v2/actions/zoom-toggle/zoom-toggle.tsx +106 -0
  380. package/src/widgets-v2/bar/download.test.tsx +91 -0
  381. package/src/widgets-v2/bar/download.tsx +66 -0
  382. package/src/widgets-v2/bar/index.ts +10 -0
  383. package/src/widgets-v2/bar/options.test.ts +334 -0
  384. package/src/widgets-v2/bar/options.ts +332 -0
  385. package/src/widgets-v2/bar/skeleton.test.tsx +19 -0
  386. package/src/widgets-v2/bar/skeleton.tsx +69 -0
  387. package/src/widgets-v2/bar/types.ts +51 -0
  388. package/src/widgets-v2/category/category-ui.test.tsx +746 -0
  389. package/src/widgets-v2/category/category-ui.tsx +389 -0
  390. package/src/widgets-v2/category/category.relative-data.test.tsx +107 -0
  391. package/src/widgets-v2/category/category.stack-toggle.test.tsx +85 -0
  392. package/src/widgets-v2/category/category.test.tsx +305 -0
  393. package/src/widgets-v2/category/category.tsx +121 -0
  394. package/src/widgets-v2/category/components/category-bar-stacked.test.tsx +121 -0
  395. package/src/widgets-v2/category/components/category-bar-stacked.tsx +73 -0
  396. package/src/widgets-v2/category/components/category-bar.test.tsx +64 -0
  397. package/src/widgets-v2/category/components/category-bar.tsx +49 -0
  398. package/src/widgets-v2/category/components/category-legend.test.tsx +51 -0
  399. package/src/widgets-v2/category/components/category-legend.tsx +39 -0
  400. package/src/widgets-v2/category/components/category-row-multi.tsx +86 -0
  401. package/src/widgets-v2/category/components/category-row-other.test.tsx +28 -0
  402. package/src/widgets-v2/category/components/category-row-other.tsx +33 -0
  403. package/src/widgets-v2/category/components/category-row-single.tsx +76 -0
  404. package/src/widgets-v2/category/components/category-row-stacked.test.tsx +244 -0
  405. package/src/widgets-v2/category/components/category-row-stacked.tsx +99 -0
  406. package/src/widgets-v2/category/download.test.ts +71 -0
  407. package/src/widgets-v2/category/download.ts +54 -0
  408. package/src/widgets-v2/category/index.ts +32 -0
  409. package/src/widgets-v2/category/skeleton.test.tsx +26 -0
  410. package/src/widgets-v2/category/skeleton.tsx +74 -0
  411. package/src/widgets-v2/category/style.ts +290 -0
  412. package/src/widgets-v2/category/types.ts +59 -0
  413. package/src/widgets-v2/echart/echart-ui.test.tsx +232 -0
  414. package/src/widgets-v2/echart/echart-ui.tsx +184 -0
  415. package/src/widgets-v2/echart/echart.test.tsx +229 -0
  416. package/src/widgets-v2/echart/echart.tsx +199 -0
  417. package/src/widgets-v2/echart/index.ts +22 -0
  418. package/src/widgets-v2/echart/shared-resize-observer.test.ts +91 -0
  419. package/src/widgets-v2/echart/shared-resize-observer.ts +56 -0
  420. package/src/widgets-v2/echart/style.ts +8 -0
  421. package/src/widgets-v2/echart/use-chart-selection.test.tsx +118 -0
  422. package/src/widgets-v2/echart/use-chart-selection.ts +115 -0
  423. package/src/widgets-v2/formula/delta.tsx +61 -0
  424. package/src/widgets-v2/formula/download.test.tsx +65 -0
  425. package/src/widgets-v2/formula/download.tsx +69 -0
  426. package/src/widgets-v2/formula/formula-ui.test.tsx +91 -0
  427. package/src/widgets-v2/formula/formula-ui.tsx +66 -0
  428. package/src/widgets-v2/formula/formula.test.tsx +50 -0
  429. package/src/widgets-v2/formula/formula.tsx +34 -0
  430. package/src/widgets-v2/formula/index.ts +17 -0
  431. package/src/widgets-v2/formula/note.tsx +25 -0
  432. package/src/widgets-v2/formula/prefix.tsx +25 -0
  433. package/src/widgets-v2/formula/series.tsx +67 -0
  434. package/src/widgets-v2/formula/skeleton.test.tsx +21 -0
  435. package/src/widgets-v2/formula/skeleton.tsx +27 -0
  436. package/src/widgets-v2/formula/style.ts +31 -0
  437. package/src/widgets-v2/formula/subcomponents.test.tsx +107 -0
  438. package/src/widgets-v2/formula/suffix.tsx +25 -0
  439. package/src/widgets-v2/formula/types.ts +48 -0
  440. package/src/widgets-v2/formula/value.tsx +31 -0
  441. package/src/widgets-v2/histogram/download.test.ts +94 -0
  442. package/src/widgets-v2/histogram/download.ts +60 -0
  443. package/src/widgets-v2/histogram/index.ts +10 -0
  444. package/src/widgets-v2/histogram/options.test.ts +318 -0
  445. package/src/widgets-v2/histogram/options.ts +338 -0
  446. package/src/widgets-v2/histogram/skeleton.test.tsx +16 -0
  447. package/src/widgets-v2/histogram/skeleton.tsx +70 -0
  448. package/src/widgets-v2/histogram/transforms.test.ts +46 -0
  449. package/src/widgets-v2/histogram/transforms.ts +30 -0
  450. package/src/widgets-v2/histogram/types.ts +55 -0
  451. package/src/widgets-v2/index.ts +204 -0
  452. package/src/widgets-v2/markdown/download.test.ts +66 -0
  453. package/src/widgets-v2/markdown/download.ts +53 -0
  454. package/src/widgets-v2/markdown/index.ts +6 -0
  455. package/src/widgets-v2/markdown/markdown-content.test.tsx +155 -0
  456. package/src/widgets-v2/markdown/markdown-content.tsx +72 -0
  457. package/src/widgets-v2/markdown/markdown-ui.test.tsx +75 -0
  458. package/src/widgets-v2/markdown/markdown-ui.tsx +55 -0
  459. package/src/widgets-v2/markdown/markdown.test.tsx +39 -0
  460. package/src/widgets-v2/markdown/markdown.tsx +17 -0
  461. package/src/widgets-v2/markdown/skeleton.test.tsx +15 -0
  462. package/src/widgets-v2/markdown/skeleton.tsx +32 -0
  463. package/src/widgets-v2/markdown/style.ts +53 -0
  464. package/src/widgets-v2/markdown/types.ts +4 -0
  465. package/src/widgets-v2/note/labels.ts +9 -0
  466. package/src/widgets-v2/note/style.ts +26 -0
  467. package/src/widgets-v2/note/widget-note.test.tsx +158 -0
  468. package/src/widgets-v2/note/widget-note.tsx +172 -0
  469. package/src/widgets-v2/pie/download.test.ts +78 -0
  470. package/src/widgets-v2/pie/download.ts +55 -0
  471. package/src/widgets-v2/pie/index.ts +10 -0
  472. package/src/widgets-v2/pie/options.test.ts +601 -0
  473. package/src/widgets-v2/pie/options.ts +513 -0
  474. package/src/widgets-v2/pie/skeleton.test.tsx +17 -0
  475. package/src/widgets-v2/pie/skeleton.tsx +32 -0
  476. package/src/widgets-v2/pie/types.ts +62 -0
  477. package/src/widgets-v2/provider/widget-provider.test.tsx +119 -0
  478. package/src/widgets-v2/provider/widget-provider.tsx +111 -0
  479. package/src/widgets-v2/range/index.ts +4 -0
  480. package/src/widgets-v2/range/range-ui.test.tsx +136 -0
  481. package/src/widgets-v2/range/range-ui.tsx +278 -0
  482. package/src/widgets-v2/range/range.test.tsx +68 -0
  483. package/src/widgets-v2/range/range.tsx +52 -0
  484. package/src/widgets-v2/range/skeleton.test.tsx +17 -0
  485. package/src/widgets-v2/range/skeleton.tsx +47 -0
  486. package/src/widgets-v2/range/style.ts +41 -0
  487. package/src/widgets-v2/range/types.ts +37 -0
  488. package/src/widgets-v2/scatterplot/download.test.ts +71 -0
  489. package/src/widgets-v2/scatterplot/download.ts +54 -0
  490. package/src/widgets-v2/scatterplot/index.ts +11 -0
  491. package/src/widgets-v2/scatterplot/options.test.ts +411 -0
  492. package/src/widgets-v2/scatterplot/options.ts +425 -0
  493. package/src/widgets-v2/scatterplot/skeleton.test.tsx +17 -0
  494. package/src/widgets-v2/scatterplot/skeleton.tsx +84 -0
  495. package/src/widgets-v2/scatterplot/transforms.test.ts +97 -0
  496. package/src/widgets-v2/scatterplot/transforms.ts +38 -0
  497. package/src/widgets-v2/scatterplot/types.ts +59 -0
  498. package/src/widgets-v2/selection-summary/labels.ts +11 -0
  499. package/src/widgets-v2/selection-summary/selection-summary.test.tsx +53 -0
  500. package/src/widgets-v2/selection-summary/selection-summary.tsx +62 -0
  501. package/src/widgets-v2/selection-summary/style.ts +23 -0
  502. package/src/widgets-v2/spread/download.test.ts +64 -0
  503. package/src/widgets-v2/spread/download.ts +59 -0
  504. package/src/widgets-v2/spread/index.ts +6 -0
  505. package/src/widgets-v2/spread/separator.tsx +11 -0
  506. package/src/widgets-v2/spread/skeleton.test.tsx +17 -0
  507. package/src/widgets-v2/spread/skeleton.tsx +38 -0
  508. package/src/widgets-v2/spread/spread-ui.test.tsx +108 -0
  509. package/src/widgets-v2/spread/spread-ui.tsx +52 -0
  510. package/src/widgets-v2/spread/spread.test.tsx +50 -0
  511. package/src/widgets-v2/spread/spread.tsx +31 -0
  512. package/src/widgets-v2/spread/types.ts +27 -0
  513. package/src/widgets-v2/state/labels.test.ts +33 -0
  514. package/src/widgets-v2/state/labels.ts +20 -0
  515. package/src/widgets-v2/state/style.ts +25 -0
  516. package/src/widgets-v2/state/widget-state.test.tsx +294 -0
  517. package/src/widgets-v2/state/widget-state.tsx +184 -0
  518. package/src/widgets-v2/stores/index.ts +49 -0
  519. package/src/widgets-v2/stores/pipeline-middleware.test.ts +187 -0
  520. package/src/widgets-v2/stores/pipeline-middleware.ts +91 -0
  521. package/src/widgets-v2/stores/transforms.test.ts +162 -0
  522. package/src/widgets-v2/stores/transforms.ts +70 -0
  523. package/src/widgets-v2/stores/types.ts +64 -0
  524. package/src/widgets-v2/stores/use-echart-instance.test.tsx +91 -0
  525. package/src/widgets-v2/stores/use-echart-instance.ts +29 -0
  526. package/src/widgets-v2/stores/use-transform-enabled.test.tsx +127 -0
  527. package/src/widgets-v2/stores/use-transform-enabled.ts +25 -0
  528. package/src/widgets-v2/stores/use-transform.test.tsx +262 -0
  529. package/src/widgets-v2/stores/use-transform.ts +158 -0
  530. package/src/widgets-v2/stores/widget-context.test.tsx +58 -0
  531. package/src/widgets-v2/stores/widget-context.ts +15 -0
  532. package/src/widgets-v2/stores/widget-store-registry.test.ts +292 -0
  533. package/src/widgets-v2/stores/widget-store-registry.ts +248 -0
  534. package/src/widgets-v2/subheader/style.ts +12 -0
  535. package/src/widgets-v2/subheader/subheader.test.tsx +30 -0
  536. package/src/widgets-v2/subheader/subheader.tsx +16 -0
  537. package/src/widgets-v2/table/download.test.ts +75 -0
  538. package/src/widgets-v2/table/download.ts +47 -0
  539. package/src/widgets-v2/table/helpers.test.ts +214 -0
  540. package/src/widgets-v2/table/helpers.ts +136 -0
  541. package/src/widgets-v2/table/index.ts +23 -0
  542. package/src/widgets-v2/table/labels.tsx +41 -0
  543. package/src/widgets-v2/table/skeleton.test.tsx +26 -0
  544. package/src/widgets-v2/table/skeleton.tsx +65 -0
  545. package/src/widgets-v2/table/style.ts +43 -0
  546. package/src/widgets-v2/table/table-ui.test.tsx +200 -0
  547. package/src/widgets-v2/table/table-ui.tsx +364 -0
  548. package/src/widgets-v2/table/table.test.tsx +119 -0
  549. package/src/widgets-v2/table/table.tsx +179 -0
  550. package/src/widgets-v2/table/types.ts +55 -0
  551. package/src/widgets-v2/test-utils.ts +107 -0
  552. package/src/widgets-v2/timeseries/download.test.ts +95 -0
  553. package/src/widgets-v2/timeseries/download.ts +86 -0
  554. package/src/widgets-v2/timeseries/index.ts +10 -0
  555. package/src/widgets-v2/timeseries/options.test.ts +394 -0
  556. package/src/widgets-v2/timeseries/options.ts +348 -0
  557. package/src/widgets-v2/timeseries/skeleton.test.tsx +13 -0
  558. package/src/widgets-v2/timeseries/skeleton.tsx +76 -0
  559. package/src/widgets-v2/timeseries/types.ts +65 -0
  560. package/src/widgets-v2/toolbox/labels.ts +9 -0
  561. package/src/widgets-v2/toolbox/style.ts +33 -0
  562. package/src/widgets-v2/toolbox/toolbox.test.tsx +200 -0
  563. package/src/widgets-v2/toolbox/toolbox.tsx +309 -0
  564. package/src/widgets-v2/types.ts +25 -0
  565. package/src/widgets-v2/utils/data-zoom-layout.ts +26 -0
  566. package/src/widgets-v2/utils/index.ts +3 -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/utils/resolve-theme-color.test.ts +43 -0
  570. package/src/widgets-v2/utils/resolve-theme-color.ts +34 -0
  571. package/src/widgets-v2/wrapper/index.ts +14 -0
  572. package/src/widgets-v2/wrapper/labels.ts +11 -0
  573. package/src/widgets-v2/wrapper/style.ts +134 -0
  574. package/src/widgets-v2/wrapper/widget-actions.test.tsx +52 -0
  575. package/src/widgets-v2/wrapper/widget-actions.tsx +43 -0
  576. package/src/widgets-v2/wrapper/widget-content.test.tsx +27 -0
  577. package/src/widgets-v2/wrapper/widget-content.tsx +29 -0
  578. package/src/widgets-v2/wrapper/widget-wrapper.test.tsx +159 -0
  579. package/src/widgets-v2/wrapper/widget-wrapper.tsx +178 -0
  580. package/dist/styles-BYTyKQFP.js.map +0 -1
@@ -1,4 +1,4 @@
1
- function d(t) {
1
+ function m(t) {
2
2
  if (t === 0) return 0;
3
3
  const e = Math.abs(t), n = Math.pow(10, Math.floor(Math.log10(e))), i = Math.ceil(e / n) * n;
4
4
  return t < 0 ? -i : i;
@@ -30,41 +30,41 @@ function h(t, e) {
30
30
  };
31
31
  }
32
32
  function y(t) {
33
- return function(e, n, i, o, r) {
33
+ return function(e, n, i, r, o) {
34
34
  const a = {
35
35
  top: parseInt(t.spacing(0.5))
36
36
  };
37
- return r.contentSize[0] < r.viewSize[0] - e[0] ? a.left = e[0] : a.right = r.viewSize[0] - e[0], a;
37
+ return o.contentSize[0] < o.viewSize[0] - e[0] ? a.left = e[0] : a.right = o.viewSize[0] - e[0], a;
38
38
  };
39
39
  }
40
- function m(t) {
40
+ function d(t) {
41
41
  if (t)
42
42
  return (e) => t(e);
43
43
  }
44
44
  function x(t, e) {
45
- const n = t && !Array.isArray(t), i = t, o = e && n ? (r) => String(e(r)) : void 0;
45
+ const n = t && !Array.isArray(t), i = t, r = e && n ? (o) => String(e(o)) : void 0;
46
46
  return {
47
47
  ...i,
48
48
  axisLabel: {
49
49
  ...typeof i.axisLabel == "object" && i.axisLabel ? i.axisLabel : {},
50
- formatter: o
50
+ formatter: r
51
51
  }
52
52
  };
53
53
  }
54
54
  function v(t, e) {
55
- let n = m(e);
56
- const i = t && !Array.isArray(t), o = t;
57
- return (!i || o.type !== "value") && (n = void 0), {
58
- ...o,
55
+ let n = d(e);
56
+ const i = t && !Array.isArray(t), r = t;
57
+ return (!i || r.type !== "value") && (n = void 0), {
58
+ ...r,
59
59
  axisLabel: {
60
- ...typeof o.axisLabel == "object" && o.axisLabel ? o.axisLabel : {},
60
+ ...typeof r.axisLabel == "object" && r.axisLabel ? r.axisLabel : {},
61
61
  formatter: n
62
62
  }
63
63
  };
64
64
  }
65
65
  function F(t) {
66
66
  return (e) => {
67
- const n = Array.isArray(e) ? e : [e], i = (s, l) => `<div style="margin: 0px 0 0;line-height:1;">${s ? `<div style="font-size:11px;color:#FFFFFF;font-weight:400;line-height:1; margin-bottom: 10px">${s}</div>` : ""}<div style="margin: 0;line-height:1;">${l}</div><div style="clear:both"></div></div>`, o = n.map((s) => {
67
+ const n = Array.isArray(e) ? e : [e], i = (s, l) => `<div style="margin: 0px 0 0;line-height:1;">${s ? `<div style="font-size:11px;color:#FFFFFF;font-weight:400;line-height:1; margin-bottom: 10px">${s}</div>` : ""}<div style="margin: 0;line-height:1;">${l}</div><div style="clear:both"></div></div>`, r = n.map((s) => {
68
68
  const {
69
69
  name: l,
70
70
  seriesName: c,
@@ -77,21 +77,21 @@ function F(t) {
77
77
  marker: g,
78
78
  value: p
79
79
  };
80
- }), r = o[0]?.name ?? "", u = r || n.length > 1 ? "margin: 10px 0 0;line-height:1;" : "margin: 0;line-height:1;", f = o.map(({
80
+ }), o = r[0]?.name ?? "", u = o || n.length > 1 ? "margin: 10px 0 0;line-height:1;" : "margin: 0;line-height:1;", f = r.map(({
81
81
  seriesName: s,
82
82
  marker: l,
83
83
  value: c
84
84
  }) => `<div style="${u}"><div style="margin: 0px 0 0;line-height:1;">${l}${s ? `<span style="font-size:11px;color:#FFFFFF;font-weight:400;margin-left:2px;margin-right:10px">${s}</span>` : ""}<span style="float:right;margin-left:10px;font-size:11px;color:#FFFFFF;font-weight:900">${c}</span></div></div>`);
85
- return i(r, f.join(""));
85
+ return i(o, f.join(""));
86
86
  };
87
87
  }
88
- function S(t, e = "y") {
88
+ function L(t, e = "y") {
89
89
  return t ? {
90
90
  label: {
91
91
  formatter: (n) => {
92
92
  const i = n.encode?.[e]?.[0];
93
93
  if (i === void 0) return "";
94
- const o = n.dimensionNames?.[i], r = n.value, a = o ? r[o] : void 0;
94
+ const r = n.dimensionNames?.[i], o = n.value, a = r ? o[r] : void 0;
95
95
  return typeof a == "number" ? t(a) : String(a ?? "");
96
96
  }
97
97
  }
@@ -107,36 +107,16 @@ function w(t) {
107
107
  }
108
108
  } : {};
109
109
  }
110
- const L = {
111
- graph: {
112
- /**
113
- * Common container style for chart widget skeletons
114
- */
115
- container: {
116
- display: "flex",
117
- alignItems: "center",
118
- justifyContent: "space-between",
119
- flexDirection: "column",
120
- gap: ({
121
- spacing: t
122
- }) => t(1),
123
- height: ({
124
- spacing: t
125
- }) => t(38)
126
- }
127
- }
128
- };
129
110
  export {
130
111
  x as a,
131
112
  v as b,
132
- L as c,
133
- h as d,
134
- b as e,
135
- m as f,
136
- F as g,
137
- y as h,
138
- S as i,
139
- w as j,
140
- d as n
113
+ h as c,
114
+ b as d,
115
+ d as e,
116
+ F as f,
117
+ y as g,
118
+ L as h,
119
+ w as i,
120
+ m as n
141
121
  };
142
- //# sourceMappingURL=styles-BYTyKQFP.js.map
122
+ //# sourceMappingURL=option-builders-F-c9ELi1.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"option-builders-F-c9ELi1.js","sources":["../src/widgets/utils/chart-config/option-builders.ts"],"sourcesContent":["import type { Theme } from '@mui/material'\nimport type { LegendComponentOption } from 'echarts'\nimport type {\n CallbackDataParams,\n TopLevelFormatterParams,\n} from 'echarts/types/dist/shared'\n\n/**\n * Shared EChart configuration builders for chart widgets\n */\n\n/**\n * Rounds a value up to the nearest \"nice\" number.\n * A nice number is a multiple of 10^floor(log10(value)).\n *\n * Examples: 547 → 600, 200 → 200, 1200 → 2000, 18 → 20, 5 → 5, -547 → -500\n */\nexport function niceNum(value: number): number {\n if (value === 0) return 0\n const absValue = Math.abs(value)\n const base = Math.pow(10, Math.floor(Math.log10(absValue)))\n const rounded = Math.ceil(absValue / base) * base\n return value < 0 ? -rounded : rounded\n}\n\n/**\n * Builds standard legend configuration for chart widgets\n *\n * @param params - Legend configuration parameters\n * @param params.hasLegend - Whether to show the legend\n * @param params.labelFormatter - Optional formatter for legend item names\n * @returns Legend configuration object\n */\nexport function buildLegendConfig({\n hasLegend,\n labelFormatter,\n}: {\n hasLegend: boolean\n labelFormatter?: (value: string | number) => string | number\n}): LegendComponentOption {\n return {\n show: hasLegend,\n icon: 'circle' as const,\n left: 0,\n bottom: 0,\n orient: 'horizontal',\n type: 'scroll',\n ...(labelFormatter && {\n formatter: (name: string) => String(labelFormatter(name)),\n }),\n }\n}\n\n/**\n * Builds standard grid configuration with legend-aware spacing\n *\n * @param hasLegend - Whether the chart has a legend\n * @param theme - MUI theme for spacing\n * @param additionalConfig - Additional grid configuration to merge\n * @returns Grid configuration object\n */\nexport function buildGridConfig(hasLegend: boolean, theme: Theme) {\n return {\n ...(!hasLegend && { bottom: parseInt(theme.spacing(3)) }),\n ...(hasLegend && { bottom: parseInt(theme.spacing(7)) }),\n }\n}\n\n/**\n * Creates a tooltip position calculator that handles overflow\n * Used by bar, histogram, and scatterplot widgets\n *\n * @param theme - MUI theme for spacing\n * @returns Tooltip position function\n */\nexport function createTooltipPositioner(theme: Theme) {\n return function (\n point: [number, number],\n _params: unknown,\n _dom: unknown,\n _rect: unknown,\n size: { contentSize: [number, number]; viewSize: [number, number] },\n ) {\n const position = { top: parseInt(theme.spacing(0.5)) } as Record<\n string,\n number\n >\n\n // Position tooltip left or right based on available space\n if (size.contentSize[0] < size.viewSize[0] - point[0]) {\n position.left = point[0]\n } else {\n position.right = size.viewSize[0] - point[0]\n }\n\n return position\n }\n}\n\n/**\n * Creates an axis label formatter for ECharts\n * Used to format numeric axis labels with a widget formatter\n *\n * @param formatter - Optional formatter function from widget config\n * @returns Axis label formatter function or undefined\n */\nexport function createAxisLabelFormatter(\n formatter?: (value: number) => string,\n) {\n if (!formatter) return undefined\n return (value: number) => formatter(value)\n}\n\n/**\n * Applies labelFormatter to xAxis configuration\n * Applies to any xAxis regardless of axis type (category, value, etc.)\n *\n * @param xAxis - Existing xAxis configuration\n * @param labelFormatter - Optional labelFormatter function from widget config\n * @returns Updated xAxis configuration\n */\nexport function applyXAxisFormatter(\n xAxis: unknown,\n formatter?: (value: string | number) => string | number,\n) {\n const xAxisIsObject = xAxis && !Array.isArray(xAxis)\n const xAxisTyped = xAxis as { type?: string; axisLabel?: unknown }\n\n const axisFormatter =\n formatter && xAxisIsObject\n ? (value: string | number) => String(formatter(value))\n : undefined\n\n return {\n ...xAxisTyped,\n axisLabel: {\n ...(typeof xAxisTyped.axisLabel === 'object' && xAxisTyped.axisLabel\n ? xAxisTyped.axisLabel\n : {}),\n formatter: axisFormatter,\n },\n }\n}\n\n/**\n * Applies formatter to yAxis configuration\n * Only applies to single axis objects (not arrays) with type 'value'\n *\n * @param yAxis - Existing yAxis configuration\n * @param formatter - Optional formatter function from widget config\n * @returns Updated yAxis configuration or undefined if no changes needed\n */\nexport function applyYAxisFormatter(\n yAxis: unknown,\n formatter?: (value: number) => string,\n) {\n let axisFormatter = createAxisLabelFormatter(formatter)\n\n const yAxisIsObject = yAxis && !Array.isArray(yAxis)\n const yAxisTyped = yAxis as { type?: string; axisLabel?: unknown }\n\n if (!yAxisIsObject || yAxisTyped.type !== 'value') {\n axisFormatter = undefined\n }\n\n return {\n ...yAxisTyped,\n axisLabel: {\n ...(typeof yAxisTyped.axisLabel === 'object' && yAxisTyped.axisLabel\n ? yAxisTyped.axisLabel\n : {}),\n formatter: axisFormatter,\n },\n }\n}\n\n/**\n * Creates a tooltip formatter for ECharts\n * Formats numeric values in tooltip using widget formatter\n * Handles both axis trigger (array) and item trigger (object) modes\n *\n * @param formatter - Optional formatter function from widget config\n * @returns Tooltip formatter function or undefined\n */\nexport function createTooltipFormatter(\n callback: (\n item: CallbackDataParams,\n items: CallbackDataParams[],\n ) => {\n name: string\n seriesName: string\n marker: string\n value: string | number\n },\n) {\n return (params: TopLevelFormatterParams) => {\n // Handle both array (axis trigger) and object (item trigger)\n const items = Array.isArray(params) ? params : [params]\n\n const tooltip = (name: string, callback: string) =>\n `<div style=\"margin: 0px 0 0;line-height:1;\">${name ? `<div style=\"font-size:11px;color:#FFFFFF;font-weight:400;line-height:1; margin-bottom: 10px\">${name}</div>` : ''}<div style=\"margin: 0;line-height:1;\">${callback}</div><div style=\"clear:both\"></div></div>`\n\n const values = items.map((item) => {\n const { name, seriesName, marker, value } = callback(item, items)\n return {\n name,\n seriesName,\n marker,\n value,\n }\n })\n\n const name = values[0]?.name ?? ''\n // Show margin if name exists or there are multiple items\n const showMargin = name || items.length > 1\n const marginStyle = showMargin\n ? 'margin: 10px 0 0;line-height:1;'\n : 'margin: 0;line-height:1;'\n\n const formattedValues = values.map(\n ({ seriesName, marker, value }) =>\n `<div style=\"${marginStyle}\"><div style=\"margin: 0px 0 0;line-height:1;\">${marker}${seriesName ? `<span style=\"font-size:11px;color:#FFFFFF;font-weight:400;margin-left:2px;margin-right:10px\">${seriesName}</span>` : ''}<span style=\"float:right;margin-left:10px;font-size:11px;color:#FFFFFF;font-weight:900\">${value}</span></div></div>`,\n )\n\n return tooltip(name, formattedValues.join(''))\n }\n}\n\n/**\n * Builds a series `label` config that applies formatter to the data value\n * extracted from a dataset row using ECharts encode/dimensionNames.\n *\n * Does not set `show` — labels remain hidden by default per ECharts defaults.\n *\n * @param formatter - Optional numeric value formatter\n * @param encodeKey - The encode dimension key to extract ('y' for vertical charts, 'x' for horizontal)\n */\nexport function buildSeriesLabelConfig(\n formatter?: (value: number) => string,\n encodeKey = 'y',\n): { label: { formatter: (params: CallbackDataParams) => string } } | object {\n if (!formatter) return {}\n\n return {\n label: {\n formatter: (params: CallbackDataParams) => {\n const encodeIndex = params.encode?.[encodeKey]?.[0]\n if (encodeIndex === undefined) return ''\n const dimName = params.dimensionNames?.[encodeIndex]\n const row = params.value as Record<string, string | number>\n const value = dimName ? row[dimName] : undefined\n return typeof value === 'number'\n ? formatter(value)\n : String(value ?? '')\n },\n },\n }\n}\n\n/**\n * Builds a series `label` config that applies formatter to a raw numeric value.\n * Used by histogram where series data is number[] (not datasets).\n *\n * Does not set `show` — labels remain hidden by default per ECharts defaults.\n *\n * @param formatter - Optional numeric value formatter\n */\nexport function buildHistogramSeriesLabelConfig(\n formatter?: (value: number) => string,\n): { label: { formatter: (params: CallbackDataParams) => string } } | object {\n if (!formatter) return {}\n\n return {\n label: {\n formatter: (params: CallbackDataParams) => {\n const value = params.value as number\n return typeof value === 'number'\n ? formatter(value)\n : String(value ?? '')\n },\n },\n }\n}\n"],"names":["niceNum","value","absValue","Math","abs","base","pow","floor","log10","rounded","ceil","buildLegendConfig","hasLegend","labelFormatter","show","icon","left","bottom","orient","type","formatter","name","String","buildGridConfig","theme","parseInt","spacing","createTooltipPositioner","point","_params","_dom","_rect","size","position","top","contentSize","viewSize","right","createAxisLabelFormatter","applyXAxisFormatter","xAxis","xAxisIsObject","Array","isArray","xAxisTyped","axisFormatter","undefined","axisLabel","applyYAxisFormatter","yAxis","yAxisIsObject","yAxisTyped","createTooltipFormatter","callback","params","items","tooltip","values","map","item","seriesName","marker","marginStyle","length","formattedValues","join","buildSeriesLabelConfig","encodeKey","label","encodeIndex","encode","dimName","dimensionNames","row","buildHistogramSeriesLabelConfig"],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ import { jsx as n } from "react/jsx-runtime";
2
+ import { d as a } from "./exports-Cx-f6m6U.js";
3
+ import { c as r } from "react/compiler-runtime";
4
+ import { SvgIcon as i } from "@mui/material";
5
+ import c from "@mui/icons-material/ImageOutlined";
6
+ function m(o) {
7
+ const e = r(2);
8
+ let l;
9
+ return e[0] !== o ? (l = /* @__PURE__ */ n(c, { ...o }), e[0] = o, e[1] = l) : l = e[1], l;
10
+ }
11
+ function s(o) {
12
+ const e = r(3);
13
+ let l;
14
+ e[0] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (l = /* @__PURE__ */ n("path", { fill: "currentColor", 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" }), e[0] = l) : l = e[0];
15
+ let t;
16
+ return e[1] !== o ? (t = /* @__PURE__ */ n(i, { viewBox: "0 0 18 18", ...o, children: l }), e[1] = o, e[2] = t) : t = e[2], t;
17
+ }
18
+ function b(o) {
19
+ return {
20
+ id: "png",
21
+ label: o.label ?? "PNG",
22
+ icon: /* @__PURE__ */ n(m, { fontSize: "small" }),
23
+ resolve: async () => {
24
+ const e = o.getCaptureEl();
25
+ if (!e)
26
+ throw new Error("[widgets-v2] No PNG capture element available");
27
+ const l = await a({
28
+ element: e,
29
+ pixelRatio: o.pixelRatio,
30
+ backgroundColor: o.backgroundColor
31
+ });
32
+ return {
33
+ url: l.url,
34
+ filename: `${o.filename}.png`,
35
+ revoke: l.revoke
36
+ };
37
+ }
38
+ };
39
+ }
40
+ export {
41
+ s as C,
42
+ m as P,
43
+ b
44
+ };
45
+ //# sourceMappingURL=png-item-CS4z1iSH.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"png-item-CS4z1iSH.js","sources":["../src/widgets-v2/actions/download/icons.tsx","../src/widgets-v2/actions/download/png-item.tsx"],"sourcesContent":["import { SvgIcon, type SvgIconProps } from '@mui/material'\nimport ImageOutlined from '@mui/icons-material/ImageOutlined'\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 * \"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","import { 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: '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"],"names":["PNGIcon","props","$","_c","t0","jsx","ImageOutlined","CSVIcon","Symbol","for","t1","SvgIcon","buildPngDownloadItem","args","id","label","icon","resolve","el","getCaptureEl","Error","handle","downloadDOMToPNG","element","pixelRatio","backgroundColor","url","filename","revoke"],"mappings":";;;;;AAQO,SAAAA,EAAAC,GAAA;AAAA,QAAAC,IAAAC,EAAA,CAAA;AAAA,MAAAC;AAAA,SAAAF,SAAAD,KACEG,IAAA,gBAAAC,EAACC,GAAA,EAAa,GAAKL,EAAAA,CAAK,GAAIC,OAAAD,GAAAC,OAAAE,KAAAA,IAAAF,EAAA,CAAA,GAA5BE;AAA4B;AAO9B,SAAAG,EAAAN,GAAA;AAAA,QAAAC,IAAAC,EAAA,CAAA;AAAA,MAAAC;AAAA,EAAAF,EAAA,CAAA,MAAAM,uBAAAC,IAAA,2BAAA,KAGDL,IAAA,gBAAAC,EAAA,QAAA,EACO,MAAA,gBACH,GAAA,gtBAA8sB,GAChtBH,OAAAE,KAAAA,IAAAF,EAAA,CAAA;AAAA,MAAAQ;AAAA,SAAAR,SAAAD,KAJJS,sBAACC,GAAA,EAAgB,SAAA,aAAW,GAAKV,GAC/BG,UAAAA,GAIF,GAAUF,OAAAD,GAAAC,OAAAQ,KAAAA,IAAAR,EAAA,CAAA,GALVQ;AAKU;ACIP,SAASE,EACdC,GACc;AACd,SAAO;AAAA,IACLC,IAAI;AAAA,IACJC,OAAOF,EAAKE,SAAS;AAAA,IACrBC,MAAM,gBAAAX,EAACL,GAAA,EAAQ,UAAS,QAAA,CAAO;AAAA,IAC/BiB,SAAS,YAAY;AACnB,YAAMC,IAAKL,EAAKM,aAAAA;AAChB,UAAI,CAACD;AACH,cAAM,IAAIE,MAAM,+CAA+C;AAEjE,YAAMC,IAAS,MAAMC,EAAiB;AAAA,QACpCC,SAASL;AAAAA,QACTM,YAAYX,EAAKW;AAAAA,QACjBC,iBAAiBZ,EAAKY;AAAAA,MAAAA,CACvB;AACD,aAAO;AAAA,QACLC,KAAKL,EAAOK;AAAAA,QACZC,UAAU,GAAGd,EAAKc,QAAQ;AAAA,QAC1BC,QAAQP,EAAOO;AAAAA,MAAAA;AAAAA,IAEnB;AAAA,EAAA;AAEJ;"}
@@ -0,0 +1,213 @@
1
+ import { jsx as $, jsxs as G } from "react/jsx-runtime";
2
+ import { c as W } from "react/compiler-runtime";
3
+ import { u as V } from "./widget-context-DTGO0Yta.js";
4
+ import { u as X } from "./widget-store-registry-_W4Z4xp-.js";
5
+ import { useState as J } from "react";
6
+ import "zustand";
7
+ import { Box as N, Slider as Y, Typography as Z, TextField as ee } from "@mui/material";
8
+ const _ = {
9
+ root: {
10
+ display: "flex",
11
+ flexDirection: "column",
12
+ gap: 3,
13
+ py: 1
14
+ },
15
+ item: {
16
+ display: "flex",
17
+ flexDirection: "column",
18
+ gap: 1.5
19
+ },
20
+ sliderContainer: {
21
+ display: "flex",
22
+ flexDirection: "column",
23
+ gap: 1,
24
+ px: 1
25
+ },
26
+ slider: {
27
+ width: "100%",
28
+ "&.Mui-disabled": {
29
+ color: (a) => a.palette.text.disabled
30
+ }
31
+ },
32
+ inputsRow: {
33
+ display: "flex",
34
+ gap: 2,
35
+ alignItems: "center"
36
+ },
37
+ input: {
38
+ flex: 1,
39
+ "& .MuiInputBase-input": {
40
+ textAlign: "center"
41
+ }
42
+ },
43
+ note: {
44
+ color: "text.secondary"
45
+ }
46
+ };
47
+ function te(a) {
48
+ const e = W(11), {
49
+ items: n,
50
+ onChange: t,
51
+ onChangeCommitted: l,
52
+ formatter: s
53
+ } = a, o = s ?? ne;
54
+ let m;
55
+ if (e[0] !== o || e[1] !== n || e[2] !== t || e[3] !== l) {
56
+ let r;
57
+ e[5] !== o || e[6] !== t || e[7] !== l ? (r = (g, d) => /* @__PURE__ */ $(ie, { index: d, item: g, fmt: o, onChange: t, onChangeCommitted: l }, `range-${g.min}-${g.max}-${d}`), e[5] = o, e[6] = t, e[7] = l, e[8] = r) : r = e[8], m = n.map(r), e[0] = o, e[1] = n, e[2] = t, e[3] = l, e[4] = m;
58
+ } else
59
+ m = e[4];
60
+ let i;
61
+ return e[9] !== m ? (i = /* @__PURE__ */ $(N, { sx: _.root, children: m }), e[9] = m, e[10] = i) : i = e[10], i;
62
+ }
63
+ function ne(a) {
64
+ return String(a);
65
+ }
66
+ function ie(a) {
67
+ const e = W(70), {
68
+ index: n,
69
+ item: t,
70
+ fmt: l,
71
+ onChange: s,
72
+ onChangeCommitted: o
73
+ } = a;
74
+ let m;
75
+ e[0] !== t.max || e[1] !== t.min || e[2] !== t.value ? (m = t.value ?? [t.min, t.max], e[0] = t.max, e[1] = t.min, e[2] = t.value, e[3] = m) : m = e[3];
76
+ const i = m, [r, g] = J("");
77
+ let d;
78
+ e[4] !== t.max || e[5] !== t.min ? (d = (S) => {
79
+ const [f, j] = S, E = Math.min(Math.max(f, t.min), t.max), q = Math.min(Math.max(j, t.min), t.max);
80
+ return E <= q ? [E, q] : [q, E];
81
+ }, e[4] = t.max, e[5] = t.min, e[6] = d) : d = e[6];
82
+ const u = d;
83
+ let v;
84
+ e[7] !== n || e[8] !== u || e[9] !== s ? (v = (S) => {
85
+ s?.(n, u(S));
86
+ }, e[7] = n, e[8] = u, e[9] = s, e[10] = v) : v = e[10];
87
+ const A = v;
88
+ let x;
89
+ e[11] !== n || e[12] !== u || e[13] !== o ? (x = (S) => {
90
+ o?.(n, u(S));
91
+ }, e[11] = n, e[12] = u, e[13] = o, e[14] = x) : x = e[14];
92
+ const p = x;
93
+ let y;
94
+ e[15] !== n || e[16] !== u || e[17] !== s || e[18] !== o ? (y = (S) => {
95
+ const f = u(S);
96
+ s?.(n, f), o?.(n, f);
97
+ }, e[15] = n, e[16] = u, e[17] = s, e[18] = o, e[19] = y) : y = e[19];
98
+ const h = y;
99
+ let C;
100
+ e[20] !== A || e[21] !== t.max || e[22] !== t.min ? (C = (S, f) => {
101
+ if (!Array.isArray(f))
102
+ return;
103
+ const j = f[0] ?? t.min, E = f[1] ?? t.max;
104
+ A([j, E]);
105
+ }, e[20] = A, e[21] = t.max, e[22] = t.min, e[23] = C) : C = e[23];
106
+ const b = C;
107
+ let w;
108
+ e[24] !== p || e[25] !== t.max || e[26] !== t.min ? (w = (S, f) => {
109
+ if (!Array.isArray(f))
110
+ return;
111
+ const j = f[0] ?? t.min, E = f[1] ?? t.max;
112
+ p([j, E]);
113
+ }, e[24] = p, e[25] = t.max, e[26] = t.min, e[27] = w) : w = e[27];
114
+ const F = w;
115
+ let c;
116
+ e[28] !== t.color ? (c = t.color ? {
117
+ color: t.color
118
+ } : null, e[28] = t.color, e[29] = c) : c = e[29];
119
+ let R;
120
+ e[30] !== c ? (R = {
121
+ ..._.slider,
122
+ ...c
123
+ }, e[30] = c, e[31] = R) : R = e[31];
124
+ let M;
125
+ e[32] !== i ? (M = [...i], e[32] = i, e[33] = M) : M = e[33];
126
+ const K = t.min, Q = t.max, O = t.step ?? 1;
127
+ let D;
128
+ e[34] !== t.marks ? (D = le(t.marks), e[34] = t.marks, e[35] = D) : D = e[35];
129
+ let I;
130
+ e[36] !== l || e[37] !== b || e[38] !== F || e[39] !== t.disabled || e[40] !== t.max || e[41] !== t.min || e[42] !== M || e[43] !== O || e[44] !== D || e[45] !== R ? (I = /* @__PURE__ */ $(N, { sx: _.sliderContainer, children: /* @__PURE__ */ $(Y, { sx: R, value: M, min: K, max: Q, step: O, marks: D, disabled: t.disabled, valueLabelDisplay: "auto", valueLabelFormat: l, onChange: b, onChangeCommitted: F }) }), e[36] = l, e[37] = b, e[38] = F, e[39] = t.disabled, e[40] = t.max, e[41] = t.min, e[42] = M, e[43] = O, e[44] = D, e[45] = R, e[46] = I) : I = e[46];
131
+ const P = `min-${i[0]}`;
132
+ let L;
133
+ e[47] !== h || e[48] !== i || e[49] !== r || e[50] !== l || e[51] !== t || e[52] !== P ? (L = /* @__PURE__ */ $(H, { name: "min", value: i[0], item: t, fmt: l, editing: r, setEditing: g, commit: h, current: i, ariaLabel: "Minimum value" }, P), e[47] = h, e[48] = i, e[49] = r, e[50] = l, e[51] = t, e[52] = P, e[53] = L) : L = e[53];
134
+ const U = `max-${i[1]}`;
135
+ let B;
136
+ e[54] !== h || e[55] !== i || e[56] !== r || e[57] !== l || e[58] !== t || e[59] !== U ? (B = /* @__PURE__ */ $(H, { name: "max", value: i[1], item: t, fmt: l, editing: r, setEditing: g, commit: h, current: i, ariaLabel: "Maximum value" }, U), e[54] = h, e[55] = i, e[56] = r, e[57] = l, e[58] = t, e[59] = U, e[60] = B) : B = e[60];
137
+ let T;
138
+ e[61] !== L || e[62] !== B ? (T = /* @__PURE__ */ G(N, { sx: _.inputsRow, children: [
139
+ L,
140
+ B
141
+ ] }), e[61] = L, e[62] = B, e[63] = T) : T = e[63];
142
+ let k;
143
+ e[64] !== t.note ? (k = t.note ? /* @__PURE__ */ $(Z, { variant: "caption", sx: _.note, children: t.note }) : null, e[64] = t.note, e[65] = k) : k = e[65];
144
+ let z;
145
+ return e[66] !== I || e[67] !== T || e[68] !== k ? (z = /* @__PURE__ */ G(N, { sx: _.item, children: [
146
+ I,
147
+ T,
148
+ k
149
+ ] }), e[66] = I, e[67] = T, e[68] = k, e[69] = z) : z = e[69], z;
150
+ }
151
+ function H(a) {
152
+ const e = W(26), {
153
+ name: n,
154
+ value: t,
155
+ item: l,
156
+ fmt: s,
157
+ editing: o,
158
+ setEditing: m,
159
+ commit: i,
160
+ current: r,
161
+ ariaLabel: g
162
+ } = a, [d, u] = J(String(t));
163
+ let v;
164
+ e[0] !== n || e[1] !== m ? (v = () => {
165
+ m(n);
166
+ }, e[0] = n, e[1] = m, e[2] = v) : v = e[2];
167
+ const A = v;
168
+ let x, p;
169
+ if (e[3] !== i || e[4] !== r || e[5] !== n || e[6] !== m || e[7] !== t) {
170
+ let F = function(c) {
171
+ const R = parseFloat(c), M = Number.isFinite(R) ? R : t, K = n === "min" ? [M, r[1]] : [r[0], M];
172
+ i(K);
173
+ };
174
+ p = (c) => {
175
+ m(""), F(c.target.value);
176
+ }, x = (c) => {
177
+ c.key === "Enter" && (F(c.target.value), c.target.blur());
178
+ }, e[3] = i, e[4] = r, e[5] = n, e[6] = m, e[7] = t, e[8] = x, e[9] = p;
179
+ } else
180
+ x = e[8], p = e[9];
181
+ let y;
182
+ e[10] !== o || e[11] !== s || e[12] !== n || e[13] !== d ? (y = o === n ? d : s(Number(d)), e[10] = o, e[11] = s, e[12] = n, e[13] = d, e[14] = y) : y = e[14];
183
+ const h = y;
184
+ let C;
185
+ e[15] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (C = (F) => u(F.target.value), e[15] = C) : C = e[15];
186
+ let b;
187
+ e[16] !== g ? (b = {
188
+ "aria-label": g
189
+ }, e[16] = g, e[17] = b) : b = e[17];
190
+ let w;
191
+ return e[18] !== A || e[19] !== x || e[20] !== h || e[21] !== p || e[22] !== l.disabled || e[23] !== n || e[24] !== b ? (w = /* @__PURE__ */ $(ee, { name: n, value: h, onChange: C, onFocus: A, onBlur: p, onKeyDown: x, disabled: l.disabled, size: "small", sx: _.input, inputProps: b }), e[18] = A, e[19] = x, e[20] = h, e[21] = p, e[22] = l.disabled, e[23] = n, e[24] = b, e[25] = w) : w = e[25], w;
192
+ }
193
+ function le(a) {
194
+ if (a != null)
195
+ return typeof a == "boolean" ? a : [...a];
196
+ }
197
+ const oe = (a) => ({
198
+ data: a.data ?? [],
199
+ formatter: a.formatter
200
+ });
201
+ function ue(a) {
202
+ const e = W(5), {
203
+ onChange: n,
204
+ onChangeCommitted: t
205
+ } = a, l = V(), s = X(l, oe);
206
+ let o;
207
+ return e[0] !== n || e[1] !== t || e[2] !== s.data || e[3] !== s.formatter ? (o = /* @__PURE__ */ $(te, { items: s.data, formatter: s.formatter, onChange: n, onChangeCommitted: t }), e[0] = n, e[1] = t, e[2] = s.data, e[3] = s.formatter, e[4] = o) : o = e[4], o;
208
+ }
209
+ export {
210
+ ue as R,
211
+ te as a
212
+ };
213
+ //# sourceMappingURL=range-l4fNHLEg.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"range-l4fNHLEg.js","sources":["../src/widgets-v2/range/style.ts","../src/widgets-v2/range/range-ui.tsx","../src/widgets-v2/range/range.tsx"],"sourcesContent":["import type { SxProps, Theme } from '@mui/material'\n\nexport const 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 sliderContainer: {\n display: 'flex',\n flexDirection: 'column',\n gap: 1,\n px: 1,\n },\n slider: {\n width: '100%',\n '&.Mui-disabled': {\n color: (theme: Theme) => theme.palette.text.disabled,\n },\n },\n inputsRow: {\n display: 'flex',\n gap: 2,\n alignItems: 'center',\n },\n input: {\n flex: 1,\n '& .MuiInputBase-input': {\n textAlign: 'center',\n },\n },\n note: {\n color: 'text.secondary',\n },\n} satisfies Record<string, SxProps<Theme>>\n","import {\n useCallback,\n useState,\n type FocusEvent,\n type KeyboardEvent,\n} from 'react'\nimport { Box, Slider, TextField, Typography } from '@mui/material'\nimport type { RangeDataItem, RangeItemValue } from './types'\nimport { styles } from './style'\n\nexport interface RangeUIProps {\n items: readonly RangeDataItem[]\n /**\n * Fires on every pointer tick while a thumb is being dragged (mirrors\n * MUI `<Slider>`'s `onChange`). Use this to update local UI state —\n * not to persist expensive operations like remote queries.\n */\n onChange?: (index: number, value: RangeItemValue) => void\n /**\n * Fires once when the user *releases* a slider thumb after dragging,\n * after an arrow-key adjustment commits, or when the text inputs\n * blur / Enter. Mirrors MUI `<Slider>`'s `onChangeCommitted`. Use\n * this for side-effects you want to throttle to \"drag end\" — e.g.\n * writing the value to a source filter that triggers refetches.\n */\n onChangeCommitted?: (index: number, value: RangeItemValue) => void\n /** Number formatter for the slider tooltip and the text input display. */\n formatter?: (value: number) => string\n}\n\ntype Bound = 'min' | 'max'\n\n/**\n * Pure presentational component for the Range widget. Renders one MUI Slider\n * per item with editable min/max text inputs below — matching the Range v1\n * UX. Each item is always a two-thumb range; supply `value` to seed the\n * starting selection, otherwise it defaults to `[min, max]`.\n */\nexport function RangeUI({\n items,\n onChange,\n onChangeCommitted,\n formatter,\n}: RangeUIProps) {\n const fmt = formatter ?? ((n: number) => String(n))\n return (\n <Box sx={styles.root}>\n {items.map((item, i) => (\n // Composite of the row's track bounds — stable across reorders for\n // any realistic widget configuration. Falls back to a literal +\n // index when bounds collide (degenerate same-min-same-max rows).\n <RangeRow\n key={`range-${item.min}-${item.max}-${i}`}\n index={i}\n item={item}\n fmt={fmt}\n onChange={onChange}\n onChangeCommitted={onChangeCommitted}\n />\n ))}\n </Box>\n )\n}\n\ninterface RangeRowProps {\n index: number\n item: RangeDataItem\n fmt: (n: number) => string\n onChange?: (index: number, value: RangeItemValue) => void\n onChangeCommitted?: (index: number, value: RangeItemValue) => void\n}\n\nfunction RangeRow({\n index,\n item,\n fmt,\n onChange,\n onChangeCommitted,\n}: RangeRowProps) {\n const current: readonly [number, number] = item.value ?? [item.min, item.max]\n const [editing, setEditing] = useState<'' | Bound>('')\n\n // Clamp inside [min, max] and keep `low <= high`. Pulled out so both the\n // live `onChange` path and the commit path share the same normalization.\n const normalize = useCallback(\n (next: readonly [number, number]): readonly [number, number] => {\n const [lowRaw, highRaw] = next\n const low = Math.min(Math.max(lowRaw, item.min), item.max)\n const high = Math.min(Math.max(highRaw, item.min), item.max)\n return low <= high ? [low, high] : [high, low]\n },\n [item.min, item.max],\n )\n\n const commit = useCallback(\n (next: readonly [number, number]) => {\n onChange?.(index, normalize(next))\n },\n [index, normalize, onChange],\n )\n\n const commitFinal = useCallback(\n (next: readonly [number, number]) => {\n onChangeCommitted?.(index, normalize(next))\n },\n [index, normalize, onChangeCommitted],\n )\n\n // A text-input commit (blur / Enter) is both a value change AND a final\n // commit, so it fires `onChange` *and* `onChangeCommitted`. Firing both\n // keeps the widget responsive for consumers that only wired `onChange`\n // (the pre-`onChangeCommitted` API) — without it, typing a value and\n // pressing Enter would silently no-op for them.\n const commitText = useCallback(\n (next: readonly [number, number]) => {\n const value = normalize(next)\n onChange?.(index, value)\n onChangeCommitted?.(index, value)\n },\n [index, normalize, onChange, onChangeCommitted],\n )\n\n const handleSlider = (_: Event, raw: number | number[]) => {\n if (!Array.isArray(raw)) return\n // Hoist defaults out of the destructure: react-compiler can't safely\n // reorder MemberExpression defaults inside an array pattern.\n const low = raw[0] ?? item.min\n const high = raw[1] ?? item.max\n commit([low, high])\n }\n\n const handleSliderCommitted = (\n _: Event | React.SyntheticEvent,\n raw: number | number[],\n ) => {\n if (!Array.isArray(raw)) return\n const low = raw[0] ?? item.min\n const high = raw[1] ?? item.max\n commitFinal([low, high])\n }\n\n return (\n <Box sx={styles.item}>\n <Box sx={styles.sliderContainer}>\n <Slider\n sx={{\n ...styles.slider,\n ...(item.color ? { color: item.color } : null),\n }}\n value={[...current]}\n min={item.min}\n max={item.max}\n step={item.step ?? 1}\n marks={resolveMarks(item.marks)}\n disabled={item.disabled}\n valueLabelDisplay='auto'\n valueLabelFormat={fmt}\n onChange={handleSlider}\n onChangeCommitted={handleSliderCommitted}\n />\n </Box>\n <Box sx={styles.inputsRow}>\n {/* Text-input commits (blur / Enter) are final, but also notify\n `onChange` — see `commitText` — so consumers that only wired\n `onChange` still update on a typed value. */}\n <BoundInput\n // Bumping the key on a fresh external value resets the local\n // editing state — matches v1's RangeItem behaviour.\n key={`min-${current[0]}`}\n name='min'\n value={current[0]}\n item={item}\n fmt={fmt}\n editing={editing}\n setEditing={setEditing}\n commit={commitText}\n current={current}\n ariaLabel='Minimum value'\n />\n <BoundInput\n key={`max-${current[1]}`}\n name='max'\n value={current[1]}\n item={item}\n fmt={fmt}\n editing={editing}\n setEditing={setEditing}\n commit={commitText}\n current={current}\n ariaLabel='Maximum value'\n />\n </Box>\n {item.note ? (\n <Typography variant='caption' sx={styles.note}>\n {item.note}\n </Typography>\n ) : null}\n </Box>\n )\n}\n\ninterface BoundInputProps {\n name: Bound\n value: number\n item: RangeDataItem\n fmt: (n: number) => string\n editing: '' | Bound\n setEditing: (next: '' | Bound) => void\n /**\n * Called when the user commits a new value (blur / Enter). Text input\n * edits never produce intermediate \"live\" values, so the consumer\n * only needs one callback — the row wires this to `commitFinal`.\n */\n commit: (next: readonly [number, number]) => void\n current: readonly [number, number]\n ariaLabel: string\n}\n\nfunction BoundInput({\n name,\n value,\n item,\n fmt,\n editing,\n setEditing,\n commit,\n current,\n ariaLabel,\n}: BoundInputProps) {\n const [raw, setRaw] = useState<string>(String(value))\n\n const beginEditing = () => {\n setEditing(name)\n }\n const finishEditingAndCommit = (e: FocusEvent<HTMLInputElement>) => {\n setEditing('')\n commitFromText(e.target.value)\n }\n const commitOnEnter = (e: KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'Enter') {\n commitFromText((e.target as HTMLInputElement).value)\n ;(e.target as HTMLInputElement).blur()\n }\n }\n\n function commitFromText(input: string) {\n const parsed = parseFloat(input)\n const safe = Number.isFinite(parsed) ? parsed : value\n const next: readonly [number, number] =\n name === 'min' ? [safe, current[1]] : [current[0], safe]\n commit(next)\n }\n\n const display = editing === name ? raw : fmt(Number(raw))\n\n return (\n <TextField\n name={name}\n value={display}\n onChange={(e) => setRaw(e.target.value)}\n onFocus={beginEditing}\n onBlur={finishEditingAndCommit}\n onKeyDown={commitOnEnter}\n disabled={item.disabled}\n size='small'\n sx={styles.input}\n inputProps={{ 'aria-label': ariaLabel }}\n />\n )\n}\n\nfunction resolveMarks(\n marks: RangeDataItem['marks'],\n): boolean | { value: number; label?: string }[] | undefined {\n if (marks == null) return undefined\n if (typeof marks === 'boolean') return marks\n return [...marks]\n}\n","import { useWidgetId, useWidgetShallow } from '../stores'\nimport { RangeUI } from './range-ui'\nimport type { RangeItemValue, RangeWidgetData } from './types'\n\ninterface RangeSlice {\n data: RangeWidgetData\n formatter?: (value: number) => string\n}\n\nconst rangeSelector = (s: {\n data: unknown\n formatter?: (value: number) => string\n}): RangeSlice => ({\n data: (s.data ?? []) as RangeWidgetData,\n formatter: s.formatter,\n})\n\nexport interface RangeProps {\n /**\n * Fires on every pointer tick while a thumb is being dragged. Use this\n * for cheap UI updates (local state, optimistic display).\n */\n onChange?: (index: number, value: RangeItemValue) => void\n /**\n * Fires once when the user *releases* a slider thumb (or when the text\n * inputs blur / Enter, or when an arrow-key adjustment settles). Use\n * this for expensive side-effects you want throttled to drag end —\n * e.g. writing the value to a source filter that refetches widgets.\n */\n onChangeCommitted?: (index: number, value: RangeItemValue) => void\n}\n\n/**\n * Stateful Range bridge — reads `data` (post-pipeline) and `formatter` from\n * the per-widget store and forwards them to the pure {@link RangeUI}. Per\n * the destination-owned principle, value changes flow back through\n * `onChange` (per-tick) and `onChangeCommitted` (drag end) — the consumer\n * is expected to update the data prop on `<Provider>`. Use `disabled` on\n * individual `RangeDataItem`s to disable specific rows.\n */\nexport function Range({ onChange, onChangeCommitted }: RangeProps) {\n const id = useWidgetId()\n const slice = useWidgetShallow(id, rangeSelector)\n return (\n <RangeUI\n items={slice.data}\n formatter={slice.formatter}\n onChange={onChange}\n onChangeCommitted={onChangeCommitted}\n />\n )\n}\n"],"names":["styles","root","display","flexDirection","gap","py","item","sliderContainer","px","slider","width","color","theme","palette","text","disabled","inputsRow","alignItems","input","flex","textAlign","note","RangeUI","t0","$","_c","items","onChange","onChangeCommitted","formatter","fmt","_temp","t1","t2","i","RangeRow","min","max","map","Box","n","String","index","value","current","editing","setEditing","useState","next","lowRaw","highRaw","low","Math","high","normalize","t3","next_0","commit","t4","next_1","commitFinal","t5","next_2","commitText","t6","_","raw","Array","isArray","low_0","high_0","handleSlider","t7","__0","raw_0","low_1","high_1","handleSliderCommitted","t8","t9","t10","t11","t12","t13","step","t14","marks","resolveMarks","t15","jsx","Slider","t16","t17","BoundInput","t18","t19","t20","t21","Typography","t22","jsxs","name","ariaLabel","setRaw","beginEditing","commitOnEnter","finishEditingAndCommit","commitFromText","parsed","parseFloat","safe","Number","isFinite","e","target","e_0","key","blur","Symbol","for","e_1","TextField","rangeSelector","s","data","Range","id","useWidgetId","slice","useWidgetShallow"],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ function f(e, t) {
2
+ if (!t) return e;
3
+ const r = {
4
+ ...e
5
+ };
6
+ for (const n of Object.keys(t)) {
7
+ const o = e[n], i = t[n];
8
+ i !== void 0 && (r[n] = c(o, i));
9
+ }
10
+ return r;
11
+ }
12
+ function c(e, t) {
13
+ if (Array.isArray(e) && Array.isArray(t)) {
14
+ const r = Math.max(e.length, t.length), n = new Array(r);
15
+ for (let o = 0; o < r; o++) {
16
+ const i = e[o], s = t[o];
17
+ s === void 0 ? n[o] = i : i === void 0 ? n[o] = s : n[o] = c(i, s);
18
+ }
19
+ return n;
20
+ }
21
+ return u(e) && u(t) ? {
22
+ ...e,
23
+ ...t
24
+ } : t;
25
+ }
26
+ function u(e) {
27
+ if (e === null || typeof e != "object") return !1;
28
+ const t = Object.getPrototypeOf(e);
29
+ return t === Object.prototype || t === null;
30
+ }
31
+ function l(e, t) {
32
+ if (t == null) return;
33
+ if (!t.includes(".")) return t;
34
+ const r = t.split(".");
35
+ let n = e.palette;
36
+ for (const o of r) {
37
+ if (n == null || typeof n != "object")
38
+ return t;
39
+ n = n[o];
40
+ }
41
+ return typeof n == "string" ? n : t;
42
+ }
43
+ export {
44
+ f as m,
45
+ l as r
46
+ };
47
+ //# sourceMappingURL=resolve-theme-color-BdojIw0K.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve-theme-color-BdojIw0K.js","sources":["../src/widgets-v2/utils/merge-options.ts","../src/widgets-v2/utils/resolve-theme-color.ts"],"sourcesContent":["/**\n * Shallow-merges two ECharts option objects:\n * - Top-level keys from both are combined.\n * - Arrays are merged by index (element-wise shallow merge, primitive override).\n * - Plain objects are shallow-merged.\n * - Primitives are overridden by the override value.\n *\n * Designed for the two-stage memoization pattern: first build a base option\n * object from data + theme + formatters, then call `mergeOptions(base, override)`\n * inside a second `useMemo` keyed on `[base, override]`.\n */\nexport function mergeOptions<T extends Record<string, unknown>>(\n base: T,\n override?: Partial<T>,\n): T {\n if (!override) return base\n const out: Record<string, unknown> = { ...base }\n for (const key of Object.keys(override) as (keyof T)[]) {\n const a = base[key]\n const b = override[key]\n if (b === undefined) continue\n out[key as string] = mergeValue(a, b)\n }\n return out as T\n}\n\nfunction mergeValue(a: unknown, b: unknown): unknown {\n if (Array.isArray(a) && Array.isArray(b)) {\n const len = Math.max(a.length, b.length)\n const result = new Array<unknown>(len)\n for (let i = 0; i < len; i++) {\n const av: unknown = a[i]\n const bv: unknown = b[i]\n if (bv === undefined) result[i] = av\n else if (av === undefined) result[i] = bv\n else result[i] = mergeValue(av, bv)\n }\n return result\n }\n if (isPlainObject(a) && isPlainObject(b)) {\n return { ...a, ...b }\n }\n return b\n}\n\nfunction isPlainObject(v: unknown): v is Record<string, unknown> {\n if (v === null || typeof v !== 'object') return false\n const proto = Object.getPrototypeOf(v) as unknown\n return proto === Object.prototype || proto === null\n}\n","import type { Theme } from '@mui/material'\n\n/**\n * Resolve a colour string against the MUI theme palette.\n *\n * - `'primary.main'`, `'secondary.dark'`, `'success.contrastText'`, … →\n * walks `theme.palette` along the dot-separated path and returns the\n * resolved string when traversal succeeds.\n * - `'#ff0000'`, `'rgb(255, 0, 0)'`, `'red'` → returned as-is (assumed\n * raw CSS; ECharts consumes them directly).\n * - `undefined` → `undefined` (callers fall back to ECharts' palette).\n *\n * Used by the echart option factories (Bar, Pie, Histogram, Scatterplot,\n * Timeseries) so per-series colours specified as theme paths in the\n * unified `WidgetSeries` shape paint correctly. Category, Formula, and\n * Spread render colours through MUI's `sx` resolver, which already\n * handles theme paths — they don't need this helper.\n */\nexport function resolveThemeColor(\n theme: Theme,\n raw: string | undefined,\n): string | undefined {\n if (raw == null) return undefined\n if (!raw.includes('.')) return raw\n const parts = raw.split('.')\n let cursor: unknown = theme.palette\n for (const part of parts) {\n if (cursor == null || typeof cursor !== 'object') {\n return raw\n }\n cursor = (cursor as Record<string, unknown>)[part]\n }\n return typeof cursor === 'string' ? cursor : raw\n}\n"],"names":["mergeOptions","base","override","out","key","Object","keys","a","b","undefined","mergeValue","Array","isArray","len","Math","max","length","result","i","av","bv","isPlainObject","v","proto","getPrototypeOf","prototype","resolveThemeColor","theme","raw","includes","parts","split","cursor","palette","part"],"mappings":"AAWO,SAASA,EACdC,GACAC,GACG;AACH,MAAI,CAACA,EAAU,QAAOD;AACtB,QAAME,IAA+B;AAAA,IAAE,GAAGF;AAAAA,EAAAA;AAC1C,aAAWG,KAAOC,OAAOC,KAAKJ,CAAQ,GAAkB;AACtD,UAAMK,IAAIN,EAAKG,CAAG,GACZI,IAAIN,EAASE,CAAG;AACtB,IAAII,MAAMC,WACVN,EAAIC,CAAa,IAAIM,EAAWH,GAAGC,CAAC;AAAA,EACtC;AACA,SAAOL;AACT;AAEA,SAASO,EAAWH,GAAYC,GAAqB;AACnD,MAAIG,MAAMC,QAAQL,CAAC,KAAKI,MAAMC,QAAQJ,CAAC,GAAG;AACxC,UAAMK,IAAMC,KAAKC,IAAIR,EAAES,QAAQR,EAAEQ,MAAM,GACjCC,IAAS,IAAIN,MAAeE,CAAG;AACrC,aAASK,IAAI,GAAGA,IAAIL,GAAKK,KAAK;AAC5B,YAAMC,IAAcZ,EAAEW,CAAC,GACjBE,IAAcZ,EAAEU,CAAC;AACvB,MAAIE,MAAOX,SAAWQ,EAAOC,CAAC,IAAIC,IACzBA,MAAOV,SAAWQ,EAAOC,CAAC,IAAIE,IAClCH,EAAOC,CAAC,IAAIR,EAAWS,GAAIC,CAAE;AAAA,IACpC;AACA,WAAOH;AAAAA,EACT;AACA,SAAII,EAAcd,CAAC,KAAKc,EAAcb,CAAC,IAC9B;AAAA,IAAE,GAAGD;AAAAA,IAAG,GAAGC;AAAAA,EAAAA,IAEbA;AACT;AAEA,SAASa,EAAcC,GAA0C;AAC/D,MAAIA,MAAM,QAAQ,OAAOA,KAAM,SAAU,QAAO;AAChD,QAAMC,IAAQlB,OAAOmB,eAAeF,CAAC;AACrC,SAAOC,MAAUlB,OAAOoB,aAAaF,MAAU;AACjD;AC/BO,SAASG,EACdC,GACAC,GACoB;AACpB,MAAIA,KAAO,KAAM;AACjB,MAAI,CAACA,EAAIC,SAAS,GAAG,EAAG,QAAOD;AAC/B,QAAME,IAAQF,EAAIG,MAAM,GAAG;AAC3B,MAAIC,IAAkBL,EAAMM;AAC5B,aAAWC,KAAQJ,GAAO;AACxB,QAAIE,KAAU,QAAQ,OAAOA,KAAW;AACtC,aAAOJ;AAETI,IAAAA,IAAUA,EAAmCE,CAAI;AAAA,EACnD;AACA,SAAO,OAAOF,KAAW,WAAWA,IAASJ;AAC/C;"}
@@ -0,0 +1,67 @@
1
+ import { jsx as s, jsxs as d } from "react/jsx-runtime";
2
+ import { c as x } from "react/compiler-runtime";
3
+ import { u as S } from "./widget-context-DTGO0Yta.js";
4
+ import { u as $ } from "./widget-store-registry-_W4Z4xp-.js";
5
+ import "react";
6
+ import "zustand";
7
+ import { Box as f } from "@mui/material";
8
+ import "zustand/vanilla";
9
+ import "zustand/middleware";
10
+ import "zustand/react/shallow";
11
+ import { V as u, s as m, S as b, P as _, a as g, N as j } from "./style-DVnT6HC1.js";
12
+ import "@mui/icons-material/FileDownload";
13
+ import "./lasso-tool-BYbxrJ-7.js";
14
+ import "./cjs-D4KH3azB.js";
15
+ import "@mui/icons-material";
16
+ import "html2canvas";
17
+ import "@mui/icons-material/ImageOutlined";
18
+ function w() {
19
+ const o = x(1);
20
+ let r;
21
+ return o[0] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (r = /* @__PURE__ */ s(u, { color: "inherit", children: "-" }), o[0] = r) : r = o[0], r;
22
+ }
23
+ function y(o) {
24
+ const r = x(8), {
25
+ items: t,
26
+ formatter: a,
27
+ ref: p
28
+ } = o, n = a ?? P;
29
+ let i;
30
+ if (r[0] !== n || r[1] !== t) {
31
+ let c;
32
+ r[3] !== n ? (c = (e, h) => /* @__PURE__ */ d(f, { sx: m.row, children: [
33
+ e.series ? /* @__PURE__ */ s(b, { name: e.series.name, color: e.series.color }) : null,
34
+ /* @__PURE__ */ d(f, { sx: m.body, children: [
35
+ /* @__PURE__ */ d(f, { sx: m.valueRow, children: [
36
+ e.prefix ? /* @__PURE__ */ s(_, { children: e.prefix }) : null,
37
+ /* @__PURE__ */ s(u, { color: e.color, children: n(e.min) }),
38
+ /* @__PURE__ */ s(w, {}),
39
+ /* @__PURE__ */ s(u, { color: e.color, children: n(e.max) }),
40
+ e.suffix ? /* @__PURE__ */ s(g, { children: e.suffix }) : null
41
+ ] }),
42
+ e.note ? /* @__PURE__ */ s(j, { children: e.note }) : null
43
+ ] })
44
+ ] }, `spread-${e.series?.name ?? ""}-${e.min}-${e.max}-${h}`), r[3] = n, r[4] = c) : c = r[4], i = t.map(c), r[0] = n, r[1] = t, r[2] = i;
45
+ } else
46
+ i = r[2];
47
+ let l;
48
+ return r[5] !== p || r[6] !== i ? (l = /* @__PURE__ */ s(f, { ref: p, sx: m.root, children: i }), r[5] = p, r[6] = i, r[7] = l) : l = r[7], l;
49
+ }
50
+ function P(o) {
51
+ return String(o);
52
+ }
53
+ const A = Object.freeze([]), I = (o) => ({
54
+ data: o.data ?? A,
55
+ formatter: o.formatter
56
+ });
57
+ function F() {
58
+ const o = x(3), r = S(), t = $(r, I);
59
+ let a;
60
+ return o[0] !== t.data || o[1] !== t.formatter ? (a = /* @__PURE__ */ s(y, { items: t.data, formatter: t.formatter }), o[0] = t.data, o[1] = t.formatter, o[2] = a) : a = o[2], a;
61
+ }
62
+ export {
63
+ w as S,
64
+ F as a,
65
+ y as b
66
+ };
67
+ //# sourceMappingURL=spread-CTuIXZSM.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spread-CTuIXZSM.js","sources":["../src/widgets-v2/spread/separator.tsx","../src/widgets-v2/spread/spread-ui.tsx","../src/widgets-v2/spread/spread.tsx"],"sourcesContent":["import { Value } from '../formula'\n\n/**\n * Em-dash separator placed between a Spread row's `min` and `max` values.\n * Built from the Formula {@link Value} primitive so typography (h5/600,\n * baseline alignment) matches the numbers around it. Renders with\n * `text.secondary` so it visually recedes between the two bounds.\n */\nexport function Separator() {\n return <Value color='inherit'>-</Value>\n}\n","import { Box } from '@mui/material'\nimport type { Ref } from 'react'\nimport { Note, Prefix, Series, Suffix, Value } from '../formula'\nimport { styles } from '../formula/style'\nimport { Separator } from './separator'\nimport type { SpreadDataItem } from './types'\n\nexport interface SpreadUIProps {\n items: readonly SpreadDataItem[]\n /** Number formatter — applied to each item's `min` and `max`. */\n formatter?: (value: number) => string\n /** Forwarded to the root `<Box>` so consumers can capture the DOM (PNG export). */\n ref?: Ref<HTMLDivElement>\n}\n\n/**\n * Pure presentational component for the Spread widget. Each item renders as\n * a row containing (in order): optional `Series` avatar, a body with\n * `[prefix] min — max [suffix]` plus optional `Note`. Reuses the Formula\n * primitives ({@link Series}, {@link Prefix}, {@link Value}, {@link Suffix},\n * {@link Note}) and the Formula row styles so Spread and Formula stay\n * visually aligned when used together.\n */\nexport function SpreadUI({ items, formatter, ref }: SpreadUIProps) {\n const fmt = formatter ?? ((n: number) => String(n))\n return (\n <Box ref={ref} sx={styles.root}>\n {items.map((item, i) => (\n // Composite of series name + min/max bounds for stability across\n // reorders; falls back to the index when bounds happen to collide.\n <Box\n key={`spread-${item.series?.name ?? ''}-${item.min}-${item.max}-${i}`}\n sx={styles.row}\n >\n {item.series ? (\n <Series name={item.series.name} color={item.series.color} />\n ) : null}\n <Box sx={styles.body}>\n <Box sx={styles.valueRow}>\n {item.prefix ? <Prefix>{item.prefix}</Prefix> : null}\n <Value color={item.color}>{fmt(item.min)}</Value>\n <Separator />\n <Value color={item.color}>{fmt(item.max)}</Value>\n {item.suffix ? <Suffix>{item.suffix}</Suffix> : null}\n </Box>\n {item.note ? <Note>{item.note}</Note> : null}\n </Box>\n </Box>\n ))}\n </Box>\n )\n}\n","import { useWidgetId, useWidgetShallow } from '../stores'\nimport { SpreadUI } from './spread-ui'\nimport type { SpreadWidgetData } from './types'\n\ninterface SpreadSlice {\n data: SpreadWidgetData\n formatter?: (value: number) => string\n}\n\n// Stable empty-data sentinel — keeps the slice's `data` reference stable\n// when the underlying store value is null/undefined so the shallow-equality\n// gate in `useWidgetShallow` doesn't re-render every commit.\nconst EMPTY_DATA: SpreadWidgetData = Object.freeze([]) as SpreadWidgetData\n\nconst spreadSelector = (s: {\n data: unknown\n formatter?: (value: number) => string\n}): SpreadSlice => ({\n data: (s.data ?? EMPTY_DATA) as SpreadWidgetData,\n formatter: s.formatter,\n})\n\n/**\n * Stateful Spread bridge — reads `data` (post-pipeline) and `formatter` from\n * the per-widget store and forwards them to the pure {@link SpreadUI}.\n */\nexport function Spread() {\n const id = useWidgetId()\n const slice = useWidgetShallow(id, spreadSelector)\n return <SpreadUI items={slice.data} formatter={slice.formatter} />\n}\n"],"names":["Separator","$","_c","t0","Symbol","for","jsx","Value","SpreadUI","items","formatter","ref","fmt","_temp","t1","t2","item","i","Box","styles","row","series","Series","name","color","jsxs","body","valueRow","prefix","Prefix","min","max","suffix","Suffix","note","Note","map","root","n","String","EMPTY_DATA","Object","freeze","spreadSelector","s","data","Spread","id","useWidgetId","slice","useWidgetShallow"],"mappings":"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"}