@carto/ps-react-ui 5.3.0 → 6.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1161) hide show
  1. package/dist/actions-BWlS5tpP.js +1150 -0
  2. package/dist/actions-BWlS5tpP.js.map +1 -0
  3. package/dist/category-alzjKzvQ.js +839 -0
  4. package/dist/category-alzjKzvQ.js.map +1 -0
  5. package/dist/chat.js +548 -526
  6. package/dist/chat.js.map +1 -1
  7. package/dist/{components-FED-ArwH.js → components-CTUpdQuj.js} +1526 -1782
  8. package/dist/components-CTUpdQuj.js.map +1 -0
  9. package/dist/components.js +4 -5
  10. package/dist/{download-DGgFOaXj.js → download-B4sykOFm.js} +33 -23
  11. package/dist/download-B4sykOFm.js.map +1 -0
  12. package/dist/{echart-CwzbPElc.js → echart-CV8F50gn.js} +9 -9
  13. package/dist/echart-CV8F50gn.js.map +1 -0
  14. package/dist/formula-DJS-JLpk.js +276 -0
  15. package/dist/formula-DJS-JLpk.js.map +1 -0
  16. package/dist/legend.js +263 -258
  17. package/dist/legend.js.map +1 -1
  18. package/dist/{markdown-oo9mnJun.js → markdown-Bn2nKCbn.js} +13 -19
  19. package/dist/markdown-Bn2nKCbn.js.map +1 -0
  20. package/dist/{markdown-content-BWUqwx9F.js → markdown-content-kYNLOX0T.js} +2 -2
  21. package/dist/markdown-content-kYNLOX0T.js.map +1 -0
  22. package/dist/{chart-config-B_fdIcD3.js → option-builders-DQivvvbb.js} +10 -56
  23. package/dist/option-builders-DQivvvbb.js.map +1 -0
  24. package/dist/{range-BCMAl5xf.js → range-BpU2zBmq.js} +8 -8
  25. package/dist/range-BpU2zBmq.js.map +1 -0
  26. package/dist/smart-tooltip-Dc_rHhyI.js +51 -0
  27. package/dist/smart-tooltip-Dc_rHhyI.js.map +1 -0
  28. package/dist/{spread-CgCTKPQD.js → spread-CQwFIwuz.js} +12 -18
  29. package/dist/spread-CQwFIwuz.js.map +1 -0
  30. package/dist/{stores-tiFePP0A.js → stores-DcBOZlU3.js} +40 -34
  31. package/dist/stores-DcBOZlU3.js.map +1 -0
  32. package/dist/stores-mad-9yFn.js.map +1 -1
  33. package/dist/styles-BCEBm7xh.js +146 -0
  34. package/dist/styles-BCEBm7xh.js.map +1 -0
  35. package/dist/{table-lb5momun.js → table-DEdW_fDj.js} +17 -23
  36. package/dist/table-DEdW_fDj.js.map +1 -0
  37. package/dist/types/chat/bubbles/chat-suggestion-button.d.ts +1 -1
  38. package/dist/types/chat/types.d.ts +5 -2
  39. package/dist/types/components/index.d.ts +1 -3
  40. package/dist/types/components/lasso-tool/geometry-toolbar.d.ts +1 -1
  41. package/dist/types/components/lasso-tool/toolbar/context.d.ts +1 -1
  42. package/dist/types/components/types.d.ts +15 -0
  43. package/dist/types/legend/components/legend-actions/legend-actions.d.ts +2 -2
  44. package/dist/types/legend/components/legend-swatch/legend-swatch.d.ts +2 -1
  45. package/dist/types/legend/index.d.ts +1 -1
  46. package/dist/types/legend/provider/legend-provider.d.ts +2 -2
  47. package/dist/types/migration/v4/classes.d.ts +16 -0
  48. package/dist/types/migration/v4/icons.d.ts +31 -0
  49. package/dist/types/migration/v4/index.d.ts +17 -0
  50. package/dist/types/migration/v4/rules.d.ts +42 -0
  51. package/dist/types/migration/v4/transform.d.ts +4 -0
  52. package/dist/types/migration/v4/transforms/helpers.d.ts +97 -0
  53. package/dist/types/migration/v4/transforms/meridian-5.d.ts +22 -0
  54. package/dist/types/migration/v4/transforms/ps-react-ui.d.ts +20 -0
  55. package/dist/types/migration/v4/transforms/v5-v6.d.ts +27 -0
  56. package/dist/types/migration/v4/transforms/v6-v7.d.ts +54 -0
  57. package/dist/types/migration/v4/transforms/v7-v9-dom.d.ts +63 -0
  58. package/dist/types/migration/v4/transforms/v7-v9-props.d.ts +64 -0
  59. package/dist/types/migration/v4/widgets-v1.d.ts +12 -0
  60. package/dist/types/widgets/actions/brush-toggle/brush-toggle.d.ts +51 -24
  61. package/dist/types/widgets/actions/brush-toggle/style.d.ts +7 -16
  62. package/dist/types/widgets/actions/change-column/change-column-icon.d.ts +2 -1
  63. package/dist/types/widgets/actions/change-column/change-column.d.ts +26 -17
  64. package/dist/types/widgets/actions/change-column/sortable-column-item.d.ts +10 -5
  65. package/dist/types/widgets/actions/change-column/types.d.ts +9 -18
  66. package/dist/types/widgets/actions/download/download.d.ts +18 -13
  67. package/dist/types/widgets/actions/download/exports.d.ts +33 -17
  68. package/dist/types/{widgets-v2 → widgets}/actions/download/index.d.ts +1 -0
  69. package/dist/types/{widgets-v2 → widgets}/actions/download/png-item.d.ts +1 -1
  70. package/dist/types/widgets/actions/download/types.d.ts +41 -16
  71. package/dist/types/widgets/actions/download/widget-download.d.ts +26 -0
  72. package/dist/types/widgets/actions/fullscreen/fullscreen.d.ts +80 -10
  73. package/dist/types/widgets/actions/fullscreen/types.d.ts +13 -20
  74. package/dist/types/widgets/actions/index.d.ts +10 -20
  75. package/dist/types/widgets/actions/lock-selection/lock-selection.d.ts +54 -16
  76. package/dist/types/widgets/actions/relative-data/relative-data.d.ts +36 -21
  77. package/dist/types/{widgets-v2 → widgets}/actions/relative-data/transforms.d.ts +2 -2
  78. package/dist/types/widgets/actions/searcher/searcher-toggle.d.ts +24 -16
  79. package/dist/types/widgets/actions/searcher/searcher.d.ts +9 -19
  80. package/dist/types/widgets/actions/stack-toggle/stack-toggle.d.ts +10 -17
  81. package/dist/types/widgets/actions/zoom-toggle/style.d.ts +7 -8
  82. package/dist/types/widgets/actions/zoom-toggle/zoom-toggle.d.ts +31 -22
  83. package/dist/types/widgets/bar/download.d.ts +10 -0
  84. package/dist/types/widgets/bar/index.d.ts +3 -2
  85. package/dist/types/widgets/bar/skeleton.d.ts +5 -0
  86. package/dist/types/widgets/bar/types.d.ts +46 -9
  87. package/dist/types/widgets/category/category-ui.d.ts +94 -3
  88. package/dist/types/{widgets-v2 → widgets}/category/components/category-bar-stacked.d.ts +2 -1
  89. package/dist/types/widgets/category/components/category-bar.d.ts +18 -4
  90. package/dist/types/widgets/category/components/category-legend.d.ts +30 -4
  91. package/dist/types/widgets/category/components/category-row-multi.d.ts +27 -10
  92. package/dist/types/widgets/category/components/category-row-other.d.ts +19 -2
  93. package/dist/types/widgets/category/components/category-row-single.d.ts +23 -9
  94. package/dist/types/{widgets-v2 → widgets}/category/components/category-row-stacked.d.ts +2 -1
  95. package/dist/types/widgets/category/download.d.ts +11 -0
  96. package/dist/types/widgets/category/helpers.d.ts +10 -0
  97. package/dist/types/widgets/category/index.d.ts +10 -14
  98. package/dist/types/widgets/category/skeleton.d.ts +11 -1
  99. package/dist/types/widgets/category/style.d.ts +155 -83
  100. package/dist/types/widgets/category/types.d.ts +49 -29
  101. package/dist/types/widgets/echart/echart-ui.d.ts +44 -9
  102. package/dist/types/widgets/echart/echart.d.ts +80 -5
  103. package/dist/types/widgets/echart/index.d.ts +4 -5
  104. package/dist/types/widgets/echart/shared-resize-observer.d.ts +2 -9
  105. package/dist/types/widgets/formula/download.d.ts +10 -0
  106. package/dist/types/widgets/formula/formula-ui.d.ts +18 -3
  107. package/dist/types/widgets/formula/index.d.ts +11 -11
  108. package/dist/types/{widgets-v2 → widgets}/formula/series.d.ts +2 -1
  109. package/dist/types/widgets/formula/skeleton.d.ts +4 -1
  110. package/dist/types/widgets/formula/style.d.ts +20 -12
  111. package/dist/types/widgets/formula/types.d.ts +41 -39
  112. package/dist/types/{widgets-v2 → widgets}/formula/value.d.ts +2 -1
  113. package/dist/types/widgets/histogram/download.d.ts +12 -0
  114. package/dist/types/widgets/histogram/index.d.ts +5 -4
  115. package/dist/types/widgets/histogram/skeleton.d.ts +9 -1
  116. package/dist/types/widgets/histogram/types.d.ts +60 -12
  117. package/dist/types/{widgets-v2 → widgets}/index.d.ts +2 -2
  118. package/dist/types/widgets/markdown/download.d.ts +10 -0
  119. package/dist/types/widgets/markdown/index.d.ts +5 -4
  120. package/dist/types/widgets/markdown/markdown-ui.d.ts +10 -7
  121. package/dist/types/widgets/markdown/markdown.d.ts +4 -3
  122. package/dist/types/widgets/markdown/skeleton.d.ts +4 -1
  123. package/dist/types/widgets/markdown/style.d.ts +61 -2
  124. package/dist/types/widgets/markdown/types.d.ts +2 -16
  125. package/dist/types/widgets/note/style.d.ts +14 -16
  126. package/dist/types/widgets/pie/download.d.ts +12 -0
  127. package/dist/types/widgets/pie/index.d.ts +4 -3
  128. package/dist/types/widgets/pie/skeleton.d.ts +13 -1
  129. package/dist/types/widgets/pie/types.d.ts +57 -9
  130. package/dist/types/widgets/range/index.d.ts +4 -6
  131. package/dist/types/widgets/range/range-ui.d.ts +25 -3
  132. package/dist/types/widgets/range/skeleton.d.ts +9 -1
  133. package/dist/types/widgets/range/style.d.ts +40 -2
  134. package/dist/types/widgets/range/types.d.ts +26 -22
  135. package/dist/types/widgets/scatterplot/download.d.ts +11 -0
  136. package/dist/types/widgets/scatterplot/index.d.ts +5 -3
  137. package/dist/types/widgets/scatterplot/skeleton.d.ts +12 -1
  138. package/dist/types/widgets/scatterplot/types.d.ts +54 -9
  139. package/dist/types/widgets/selection-summary/selection-summary.d.ts +26 -10
  140. package/dist/types/widgets/selection-summary/style.d.ts +32 -3
  141. package/dist/types/widgets/spread/download.d.ts +9 -0
  142. package/dist/types/widgets/spread/index.d.ts +7 -9
  143. package/dist/types/widgets/spread/skeleton.d.ts +9 -1
  144. package/dist/types/widgets/spread/spread-ui.d.ts +16 -3
  145. package/dist/types/widgets/spread/types.d.ts +20 -35
  146. package/dist/types/widgets/stores/index.d.ts +8 -3
  147. package/dist/types/widgets/stores/types.d.ts +45 -172
  148. package/dist/types/{widgets-v2 → widgets}/stores/widget-store-registry.d.ts +14 -0
  149. package/dist/types/widgets/subheader/style.d.ts +5 -14
  150. package/dist/types/widgets/subheader/subheader.d.ts +9 -11
  151. package/dist/types/widgets/table/download.d.ts +12 -0
  152. package/dist/types/widgets/table/helpers.d.ts +28 -34
  153. package/dist/types/widgets/table/index.d.ts +8 -17
  154. package/dist/types/widgets/table/skeleton.d.ts +17 -5
  155. package/dist/types/widgets/table/style.d.ts +21 -14
  156. package/dist/types/widgets/table/table-ui.d.ts +41 -29
  157. package/dist/types/widgets/table/types.d.ts +34 -182
  158. package/dist/types/widgets/timeseries/download.d.ts +12 -0
  159. package/dist/types/widgets/timeseries/index.d.ts +4 -2
  160. package/dist/types/widgets/timeseries/skeleton.d.ts +7 -0
  161. package/dist/types/widgets/timeseries/types.d.ts +60 -9
  162. package/dist/types/{widgets-v2 → widgets}/types.d.ts +7 -6
  163. package/dist/types/widgets/utils/index.d.ts +3 -7
  164. package/dist/types/widgets/wrapper/index.d.ts +4 -6
  165. package/dist/types/{widgets-v2 → widgets}/wrapper/style.d.ts +2 -31
  166. package/dist/types/{widgets-v2 → widgets}/wrapper/widget-actions.d.ts +2 -2
  167. package/dist/types/{widgets-v2 → widgets}/wrapper/widget-wrapper.d.ts +2 -2
  168. package/dist/{utils-Dr6gf3vD.js → utils-C-eWwOhE.js} +5 -5
  169. package/dist/utils-C-eWwOhE.js.map +1 -0
  170. package/dist/widgets/actions.js +4 -2
  171. package/dist/widgets/bar.js +196 -132
  172. package/dist/widgets/bar.js.map +1 -1
  173. package/dist/widgets/category.js +2 -450
  174. package/dist/widgets/echart.js +2 -3
  175. package/dist/widgets/formula.js +2 -3
  176. package/dist/widgets/histogram.js +257 -160
  177. package/dist/widgets/histogram.js.map +1 -1
  178. package/dist/widgets/markdown.js +3 -148
  179. package/dist/widgets/pie.js +311 -197
  180. package/dist/widgets/pie.js.map +1 -1
  181. package/dist/widgets/range.js +2 -233
  182. package/dist/widgets/scatterplot.js +294 -196
  183. package/dist/widgets/scatterplot.js.map +1 -1
  184. package/dist/widgets/spread.js +2 -158
  185. package/dist/widgets/stores.js +2 -3
  186. package/dist/widgets/table.js +2 -599
  187. package/dist/widgets/timeseries.js +244 -136
  188. package/dist/widgets/timeseries.js.map +1 -1
  189. package/dist/widgets/utils.js +2 -18
  190. package/dist/widgets.js +911 -0
  191. package/dist/widgets.js.map +1 -0
  192. package/dist/{zoom-toggle-IsF8BnAp.js → zoom-toggle-MmLjMTEw.js} +5 -5
  193. package/dist/zoom-toggle-MmLjMTEw.js.map +1 -0
  194. package/package.json +43 -129
  195. package/src/chat/bubbles/chat-agent-message-markdown.tsx +1 -1
  196. package/src/chat/bubbles/chat-error-message.tsx +9 -3
  197. package/src/chat/bubbles/chat-suggestion-button.tsx +8 -3
  198. package/src/chat/containers/chat-footer.tsx +6 -2
  199. package/src/chat/containers/chat-starter.tsx +6 -4
  200. package/src/chat/feedback/chat-tool-full-view-dialog.tsx +3 -1
  201. package/src/chat/feedback/chat-tool-group.test.tsx +1 -1
  202. package/src/chat/feedback/chat-tool-group.tsx +40 -9
  203. package/src/chat/feedback/chat-tool-trace.tsx +55 -19
  204. package/src/chat/types.ts +5 -2
  205. package/src/components/basemaps/header.tsx +6 -1
  206. package/src/components/index.ts +2 -3
  207. package/src/components/lasso-tool/geometry-toolbar.tsx +1 -1
  208. package/src/components/lasso-tool/lasso-tool-inline.tsx +12 -4
  209. package/src/components/lasso-tool/lasso-tool.tsx +26 -15
  210. package/src/components/lasso-tool/layer-filters.tsx +36 -11
  211. package/src/components/lasso-tool/options-sections.test.tsx +13 -2
  212. package/src/components/lasso-tool/options-sections.tsx +17 -7
  213. package/src/components/lasso-tool/toolbar/connected.tsx +1 -1
  214. package/src/components/lasso-tool/toolbar/context.tsx +1 -1
  215. package/src/components/measurement-tools/measurement-tools.tsx +28 -13
  216. package/src/components/no-data-alert/no-data-alert.tsx +12 -2
  217. package/src/components/responsive-drawer/responsive-drawer.tsx +0 -1
  218. package/src/components/types.ts +17 -0
  219. package/src/components/zoom-controls/zoom-controls.tsx +3 -1
  220. package/src/legend/components/legend-actions/legend-actions.tsx +2 -2
  221. package/src/legend/components/legend-category/legend-category-ui.tsx +7 -3
  222. package/src/legend/components/legend-config-select/legend-config-select.tsx +6 -2
  223. package/src/legend/components/legend-group/legend-group.tsx +6 -2
  224. package/src/legend/components/legend-group/styles.ts +1 -1
  225. package/src/legend/components/legend-icon/legend-icon-ui.tsx +7 -3
  226. package/src/legend/components/legend-opacity/legend-opacity.tsx +9 -3
  227. package/src/legend/components/legend-proportion/legend-proportion-ui.tsx +19 -3
  228. package/src/legend/components/legend-ramp/legend-ramp-ui.tsx +31 -7
  229. package/src/legend/components/legend-row/legend-row.tsx +2 -2
  230. package/src/legend/components/legend-row/styles.ts +1 -1
  231. package/src/legend/components/legend-sortable/legend-sortable.tsx +7 -3
  232. package/src/legend/components/legend-swatch/legend-swatch.tsx +2 -1
  233. package/src/legend/components/legend-visible-layers/legend-visible-layers.tsx +18 -9
  234. package/src/legend/index.ts +1 -1
  235. package/src/legend/provider/legend-provider.tsx +2 -2
  236. package/src/legend/stores/legend-store-registry.ts +1 -1
  237. package/src/migration/v4/classes.ts +56 -0
  238. package/src/migration/v4/icons.ts +56 -0
  239. package/src/migration/v4/index.ts +17 -0
  240. package/src/migration/v4/migration.test.ts +772 -0
  241. package/src/migration/v4/rules.ts +444 -0
  242. package/src/migration/v4/transform.ts +92 -0
  243. package/src/migration/v4/transforms/helpers.ts +369 -0
  244. package/src/migration/v4/transforms/meridian-5.ts +163 -0
  245. package/src/migration/v4/transforms/ps-react-ui.ts +99 -0
  246. package/src/migration/v4/transforms/v5-v6.ts +161 -0
  247. package/src/migration/v4/transforms/v6-v7.ts +342 -0
  248. package/src/migration/v4/transforms/v7-v9-dom.ts +403 -0
  249. package/src/migration/v4/transforms/v7-v9-props.ts +529 -0
  250. package/src/migration/v4/widgets-v1.ts +199 -0
  251. package/src/{widgets-v2 → widgets}/PERFORMANCE.md +5 -5
  252. package/src/widgets/actions/brush-toggle/brush-toggle.test.tsx +144 -172
  253. package/src/widgets/actions/brush-toggle/brush-toggle.tsx +129 -108
  254. package/src/widgets/actions/brush-toggle/style.ts +5 -40
  255. package/src/widgets/actions/change-column/change-column-icon.tsx +14 -10
  256. package/src/widgets/actions/change-column/change-column.test.tsx +57 -288
  257. package/src/widgets/actions/change-column/change-column.tsx +116 -145
  258. package/src/widgets/actions/change-column/sortable-column-item.tsx +29 -17
  259. package/src/widgets/actions/change-column/types.ts +9 -18
  260. package/src/widgets/actions/download/download.test.tsx +290 -289
  261. package/src/widgets/actions/download/download.tsx +103 -89
  262. package/src/widgets/actions/download/exports.test.tsx +157 -247
  263. package/src/{widgets-v2 → widgets}/actions/download/exports.ts +1 -1
  264. package/src/{widgets-v2 → widgets}/actions/download/index.ts +1 -0
  265. package/src/{widgets-v2 → widgets}/actions/download/png-item.tsx +2 -2
  266. package/src/widgets/actions/download/types.ts +40 -15
  267. package/src/widgets/actions/download/widget-download.test.ts +30 -0
  268. package/src/widgets/actions/download/widget-download.ts +41 -0
  269. package/src/widgets/actions/fullscreen/fullscreen.test.tsx +162 -221
  270. package/src/widgets/actions/fullscreen/fullscreen.tsx +383 -76
  271. package/src/widgets/actions/fullscreen/types.ts +14 -31
  272. package/src/widgets/actions/index.ts +93 -68
  273. package/src/widgets/actions/lock-selection/lock-selection.test.tsx +259 -156
  274. package/src/widgets/actions/lock-selection/lock-selection.tsx +162 -102
  275. package/src/widgets/actions/relative-data/relative-data.test.tsx +65 -536
  276. package/src/widgets/actions/relative-data/relative-data.tsx +82 -163
  277. package/src/{widgets-v2 → widgets}/actions/relative-data/transforms.ts +2 -2
  278. package/src/widgets/actions/searcher/searcher-toggle.tsx +82 -55
  279. package/src/widgets/actions/searcher/searcher.tsx +96 -169
  280. package/src/widgets/actions/stack-toggle/stack-toggle.test.tsx +49 -402
  281. package/src/widgets/actions/stack-toggle/stack-toggle.tsx +39 -114
  282. package/src/widgets/actions/zoom-toggle/style.ts +5 -8
  283. package/src/widgets/actions/zoom-toggle/zoom-toggle.test.tsx +88 -303
  284. package/src/widgets/actions/zoom-toggle/zoom-toggle.tsx +87 -199
  285. package/src/widgets/bar/download.tsx +36 -0
  286. package/src/widgets/bar/index.ts +6 -5
  287. package/src/{widgets-v2 → widgets}/bar/options.ts +1 -1
  288. package/src/widgets/bar/skeleton.tsx +61 -52
  289. package/src/widgets/bar/types.ts +46 -11
  290. package/src/widgets/category/category-ui.test.tsx +846 -317
  291. package/src/widgets/category/category-ui.tsx +456 -127
  292. package/src/{widgets-v2 → widgets}/category/category.tsx +4 -4
  293. package/src/{widgets-v2 → widgets}/category/components/category-bar-stacked.tsx +2 -1
  294. package/src/widgets/category/components/category-bar.tsx +31 -12
  295. package/src/{widgets-v2 → widgets}/category/components/category-legend.test.tsx +7 -3
  296. package/src/widgets/category/components/category-legend.tsx +67 -18
  297. package/src/widgets/category/components/category-row-multi.tsx +66 -36
  298. package/src/widgets/category/components/category-row-other.tsx +63 -5
  299. package/src/widgets/category/components/category-row-single.tsx +48 -25
  300. package/src/{widgets-v2 → widgets}/category/components/category-row-stacked.tsx +2 -1
  301. package/src/widgets/category/download.ts +37 -0
  302. package/src/widgets/category/helpers.test.ts +17 -0
  303. package/src/widgets/category/helpers.ts +16 -0
  304. package/src/widgets/category/index.ts +25 -22
  305. package/src/widgets/category/skeleton.tsx +60 -10
  306. package/src/widgets/category/style.ts +267 -72
  307. package/src/widgets/category/types.ts +52 -32
  308. package/src/widgets/echart/echart-ui.test.tsx +250 -446
  309. package/src/widgets/echart/echart-ui.tsx +210 -52
  310. package/src/widgets/echart/echart.test.tsx +203 -518
  311. package/src/widgets/echart/echart.tsx +195 -52
  312. package/src/widgets/echart/index.ts +21 -15
  313. package/src/widgets/echart/shared-resize-observer.ts +30 -19
  314. package/src/{widgets-v2 → widgets}/echart/style.ts +3 -3
  315. package/src/{widgets-v2 → widgets}/formula/download.tsx +8 -29
  316. package/src/widgets/formula/formula-ui.test.tsx +68 -376
  317. package/src/widgets/formula/formula-ui.tsx +58 -22
  318. package/src/widgets/formula/index.ts +14 -21
  319. package/src/{widgets-v2 → widgets}/formula/note.tsx +8 -2
  320. package/src/{widgets-v2 → widgets}/formula/series.tsx +8 -25
  321. package/src/widgets/formula/skeleton.tsx +21 -4
  322. package/src/widgets/formula/style.ts +20 -12
  323. package/src/widgets/formula/types.ts +44 -45
  324. package/src/{widgets-v2 → widgets}/formula/value.tsx +2 -1
  325. package/src/{widgets-v2 → widgets}/histogram/download.ts +11 -25
  326. package/src/widgets/histogram/index.ts +10 -10
  327. package/src/{widgets-v2 → widgets}/histogram/options.ts +1 -1
  328. package/src/widgets/histogram/skeleton.tsx +63 -45
  329. package/src/widgets/histogram/types.ts +59 -18
  330. package/src/{widgets-v2 → widgets}/index.ts +3 -3
  331. package/src/{widgets-v2 → widgets}/markdown/download.tsx +9 -25
  332. package/src/widgets/markdown/index.ts +5 -13
  333. package/src/widgets/markdown/markdown-ui.test.tsx +53 -319
  334. package/src/widgets/markdown/markdown-ui.tsx +43 -47
  335. package/src/widgets/markdown/markdown.tsx +12 -15
  336. package/src/widgets/markdown/skeleton.tsx +26 -6
  337. package/src/widgets/markdown/style.ts +48 -23
  338. package/src/widgets/markdown/types.ts +2 -26
  339. package/src/widgets/note/style.ts +14 -17
  340. package/src/{widgets-v2 → widgets}/note/widget-note.tsx +15 -2
  341. package/src/{widgets-v2 → widgets}/pie/download.ts +10 -24
  342. package/src/widgets/pie/index.ts +7 -5
  343. package/src/{widgets-v2 → widgets}/pie/options.ts +1 -1
  344. package/src/widgets/pie/skeleton.tsx +84 -60
  345. package/src/widgets/pie/types.ts +57 -11
  346. package/src/widgets/range/index.ts +4 -16
  347. package/src/widgets/range/range-ui.test.tsx +115 -182
  348. package/src/widgets/range/range-ui.tsx +274 -8
  349. package/src/widgets/range/skeleton.tsx +41 -8
  350. package/src/widgets/range/style.ts +16 -12
  351. package/src/widgets/range/types.ts +26 -28
  352. package/src/widgets/scatterplot/download.ts +37 -0
  353. package/src/widgets/scatterplot/index.ts +11 -5
  354. package/src/{widgets-v2 → widgets}/scatterplot/options.ts +1 -1
  355. package/src/widgets/scatterplot/skeleton.tsx +76 -51
  356. package/src/widgets/scatterplot/types.ts +54 -12
  357. package/src/widgets/selection-summary/selection-summary.tsx +64 -39
  358. package/src/widgets/selection-summary/style.ts +30 -2
  359. package/src/widgets/spread/download.ts +41 -0
  360. package/src/widgets/spread/index.ts +11 -23
  361. package/src/widgets/spread/skeleton.tsx +32 -4
  362. package/src/widgets/spread/spread-ui.test.tsx +98 -358
  363. package/src/widgets/spread/spread-ui.tsx +44 -24
  364. package/src/widgets/spread/types.ts +21 -41
  365. package/src/{widgets-v2 → widgets}/state/widget-state.tsx +13 -3
  366. package/src/widgets/stores/index.ts +48 -10
  367. package/src/{widgets-v2 → widgets}/stores/transforms.ts +1 -1
  368. package/src/widgets/stores/types.ts +42 -181
  369. package/src/{widgets-v2 → widgets}/stores/use-transform.ts +1 -1
  370. package/src/{widgets-v2 → widgets}/stores/widget-store-registry.test.ts +25 -0
  371. package/src/{widgets-v2 → widgets}/stores/widget-store-registry.ts +24 -2
  372. package/src/widgets/subheader/style.ts +5 -13
  373. package/src/widgets/subheader/subheader.test.tsx +22 -37
  374. package/src/widgets/subheader/subheader.tsx +11 -30
  375. package/src/widgets/table/download.ts +29 -0
  376. package/src/widgets/table/helpers.test.ts +197 -208
  377. package/src/widgets/table/helpers.ts +108 -84
  378. package/src/widgets/table/index.ts +23 -54
  379. package/src/widgets/table/skeleton.tsx +38 -21
  380. package/src/widgets/table/style.ts +23 -14
  381. package/src/widgets/table/table-ui.tsx +348 -44
  382. package/src/widgets/table/types.ts +37 -205
  383. package/src/{widgets-v2 → widgets}/test-utils.ts +1 -1
  384. package/src/{widgets-v2 → widgets}/timeseries/download.ts +14 -28
  385. package/src/widgets/timeseries/index.ts +8 -5
  386. package/src/{widgets-v2 → widgets}/timeseries/options.ts +1 -1
  387. package/src/widgets/timeseries/skeleton.tsx +67 -46
  388. package/src/widgets/timeseries/types.ts +60 -12
  389. package/src/{widgets-v2 → widgets}/types.ts +8 -6
  390. package/src/widgets/utils/index.ts +3 -26
  391. package/src/widgets/wrapper/index.ts +14 -16
  392. package/src/{widgets-v2 → widgets}/wrapper/style.ts +2 -38
  393. package/src/{widgets-v2 → widgets}/wrapper/widget-actions.tsx +2 -2
  394. package/src/{widgets-v2 → widgets}/wrapper/widget-wrapper.test.tsx +2 -32
  395. package/src/{widgets-v2 → widgets}/wrapper/widget-wrapper.tsx +36 -58
  396. package/dist/actions-CGJD6q0t.js +0 -1318
  397. package/dist/actions-CGJD6q0t.js.map +0 -1
  398. package/dist/actions-Dhlz_adK.js +0 -1167
  399. package/dist/actions-Dhlz_adK.js.map +0 -1
  400. package/dist/category-D01ruG-l.js +0 -842
  401. package/dist/category-D01ruG-l.js.map +0 -1
  402. package/dist/chart-config-B_fdIcD3.js.map +0 -1
  403. package/dist/cjs-CBrZjPCj.js +0 -75
  404. package/dist/cjs-CBrZjPCj.js.map +0 -1
  405. package/dist/components-FED-ArwH.js.map +0 -1
  406. package/dist/copy-button-TTlZONkX.js +0 -34
  407. package/dist/copy-button-TTlZONkX.js.map +0 -1
  408. package/dist/csv-modifiers-D6HGC24b.js +0 -26
  409. package/dist/csv-modifiers-D6HGC24b.js.map +0 -1
  410. package/dist/download-DGgFOaXj.js.map +0 -1
  411. package/dist/echart-BkaV3V5G.js +0 -133
  412. package/dist/echart-BkaV3V5G.js.map +0 -1
  413. package/dist/echart-CwzbPElc.js.map +0 -1
  414. package/dist/formatter-wVO81tYk.js +0 -6
  415. package/dist/formatter-wVO81tYk.js.map +0 -1
  416. package/dist/formula-BIxJr1P3.js +0 -285
  417. package/dist/formula-BIxJr1P3.js.map +0 -1
  418. package/dist/formula-YfZmmuYX.js +0 -190
  419. package/dist/formula-YfZmmuYX.js.map +0 -1
  420. package/dist/hooks-zf5gKZYq.js +0 -22
  421. package/dist/hooks-zf5gKZYq.js.map +0 -1
  422. package/dist/markdown-content-BWUqwx9F.js.map +0 -1
  423. package/dist/markdown-oo9mnJun.js.map +0 -1
  424. package/dist/range-BCMAl5xf.js.map +0 -1
  425. package/dist/row-CvVGBuy_.js +0 -35
  426. package/dist/row-CvVGBuy_.js.map +0 -1
  427. package/dist/shared-resize-observer-BEiP2rQt.js +0 -157
  428. package/dist/shared-resize-observer-BEiP2rQt.js.map +0 -1
  429. package/dist/smart-tooltip-CwGHCqab.js +0 -34
  430. package/dist/smart-tooltip-CwGHCqab.js.map +0 -1
  431. package/dist/spread-CgCTKPQD.js.map +0 -1
  432. package/dist/stores-tiFePP0A.js.map +0 -1
  433. package/dist/styles-Y-qGBELO.js +0 -13
  434. package/dist/styles-Y-qGBELO.js.map +0 -1
  435. package/dist/table-lb5momun.js.map +0 -1
  436. package/dist/tooltip-DJUGNZxY.js +0 -23
  437. package/dist/tooltip-DJUGNZxY.js.map +0 -1
  438. package/dist/types/components/list-data/list-data-skeleton.d.ts +0 -5
  439. package/dist/types/components/list-data/list-data.d.ts +0 -19
  440. package/dist/types/components/list-data/styles.d.ts +0 -34
  441. package/dist/types/components/list-data/types.d.ts +0 -23
  442. package/dist/types/hooks/index.d.ts +0 -1
  443. package/dist/types/hooks/use-skeleton.d.ts +0 -1
  444. package/dist/types/hooks/use-widget-ref.d.ts +0 -21
  445. package/dist/types/widgets/actions/brush-toggle/brush-overlay.d.ts +0 -24
  446. package/dist/types/widgets/actions/brush-toggle/hit-test.d.ts +0 -19
  447. package/dist/types/widgets/actions/brush-toggle/types.d.ts +0 -73
  448. package/dist/types/widgets/actions/fullscreen/styles.d.ts +0 -16
  449. package/dist/types/widgets/actions/lock-selection/types.d.ts +0 -38
  450. package/dist/types/widgets/actions/relative-data/types.d.ts +0 -29
  451. package/dist/types/widgets/actions/relative-data/utils.d.ts +0 -9
  452. package/dist/types/widgets/actions/searcher/types.d.ts +0 -64
  453. package/dist/types/widgets/actions/shared/styles.d.ts +0 -11
  454. package/dist/types/widgets/actions/stack-toggle/grouped-bar-chart-icon.d.ts +0 -1
  455. package/dist/types/widgets/actions/stack-toggle/types.d.ts +0 -25
  456. package/dist/types/widgets/actions/zoom-toggle/types.d.ts +0 -41
  457. package/dist/types/widgets/bar/config.d.ts +0 -9
  458. package/dist/types/widgets/bar/style.d.ts +0 -37
  459. package/dist/types/widgets/category/config.d.ts +0 -20
  460. package/dist/types/widgets/echart/const.d.ts +0 -1
  461. package/dist/types/widgets/echart/options.d.ts +0 -9
  462. package/dist/types/widgets/echart/types.d.ts +0 -38
  463. package/dist/types/widgets/echart/utils.d.ts +0 -128
  464. package/dist/types/widgets/error/error.d.ts +0 -12
  465. package/dist/types/widgets/error/index.d.ts +0 -2
  466. package/dist/types/widgets/error/types.d.ts +0 -20
  467. package/dist/types/widgets/formula/components/item.d.ts +0 -5
  468. package/dist/types/widgets/formula/components/prefix.d.ts +0 -5
  469. package/dist/types/widgets/formula/components/row.d.ts +0 -5
  470. package/dist/types/widgets/formula/components/series.d.ts +0 -5
  471. package/dist/types/widgets/formula/components/suffix.d.ts +0 -5
  472. package/dist/types/widgets/formula/components/value.d.ts +0 -5
  473. package/dist/types/widgets/formula/config.d.ts +0 -15
  474. package/dist/types/widgets/formula/serializer.d.ts +0 -16
  475. package/dist/types/widgets/histogram/config.d.ts +0 -21
  476. package/dist/types/widgets/histogram/style.d.ts +0 -15
  477. package/dist/types/widgets/loader/index.d.ts +0 -3
  478. package/dist/types/widgets/loader/loader.d.ts +0 -24
  479. package/dist/types/widgets/loader/types.d.ts +0 -9
  480. package/dist/types/widgets/loader/utils.d.ts +0 -35
  481. package/dist/types/widgets/markdown/config.d.ts +0 -14
  482. package/dist/types/widgets/no-data/index.d.ts +0 -2
  483. package/dist/types/widgets/no-data/no-data.d.ts +0 -36
  484. package/dist/types/widgets/no-data/style.d.ts +0 -6
  485. package/dist/types/widgets/no-data/types.d.ts +0 -71
  486. package/dist/types/widgets/note/index.d.ts +0 -2
  487. package/dist/types/widgets/note/note.d.ts +0 -12
  488. package/dist/types/widgets/note/types.d.ts +0 -8
  489. package/dist/types/widgets/pie/config.d.ts +0 -9
  490. package/dist/types/widgets/pie/style.d.ts +0 -15
  491. package/dist/types/widgets/range/components/range-item.d.ts +0 -5
  492. package/dist/types/widgets/range/config.d.ts +0 -7
  493. package/dist/types/widgets/range/serializer.d.ts +0 -16
  494. package/dist/types/widgets/scatterplot/config.d.ts +0 -9
  495. package/dist/types/widgets/scatterplot/style.d.ts +0 -24
  496. package/dist/types/widgets/selection-summary/index.d.ts +0 -2
  497. package/dist/types/widgets/selection-summary/types.d.ts +0 -13
  498. package/dist/types/widgets/skeleton-loader/index.d.ts +0 -2
  499. package/dist/types/widgets/skeleton-loader/skeleton-loader.d.ts +0 -12
  500. package/dist/types/widgets/skeleton-loader/types.d.ts +0 -7
  501. package/dist/types/widgets/spread/components/max-value.d.ts +0 -5
  502. package/dist/types/widgets/spread/components/min-value.d.ts +0 -5
  503. package/dist/types/widgets/spread/components/separator.d.ts +0 -5
  504. package/dist/types/widgets/spread/config.d.ts +0 -16
  505. package/dist/types/widgets/spread/style.d.ts +0 -21
  506. package/dist/types/widgets/stores/use-widget-selector.d.ts +0 -35
  507. package/dist/types/widgets/stores/widget-store.d.ts +0 -60
  508. package/dist/types/widgets/subheader/index.d.ts +0 -2
  509. package/dist/types/widgets/subheader/types.d.ts +0 -10
  510. package/dist/types/widgets/table/components/cell-header.d.ts +0 -5
  511. package/dist/types/widgets/table/components/cell.d.ts +0 -18
  512. package/dist/types/widgets/table/components/pagination-actions.d.ts +0 -5
  513. package/dist/types/widgets/table/components/pagination.d.ts +0 -5
  514. package/dist/types/widgets/table/components/row.d.ts +0 -5
  515. package/dist/types/widgets/table/config.d.ts +0 -21
  516. package/dist/types/widgets/table/hooks/use-pagination.d.ts +0 -41
  517. package/dist/types/widgets/table/hooks/use-selection.d.ts +0 -39
  518. package/dist/types/widgets/table/hooks/use-sort.d.ts +0 -30
  519. package/dist/types/widgets/table/serializer.d.ts +0 -16
  520. package/dist/types/widgets/timeseries/config.d.ts +0 -9
  521. package/dist/types/widgets/timeseries/style.d.ts +0 -38
  522. package/dist/types/widgets/toolbar-actions/index.d.ts +0 -2
  523. package/dist/types/widgets/toolbar-actions/styles.d.ts +0 -37
  524. package/dist/types/widgets/toolbar-actions/toolbar-actions.d.ts +0 -17
  525. package/dist/types/widgets/toolbar-actions/types.d.ts +0 -52
  526. package/dist/types/widgets/utils/chart-config/config-factory.d.ts +0 -38
  527. package/dist/types/widgets/utils/chart-config/csv-modifiers.d.ts +0 -19
  528. package/dist/types/widgets/utils/chart-config/download-config.d.ts +0 -3
  529. package/dist/types/widgets/utils/chart-config/index.d.ts +0 -9
  530. package/dist/types/widgets/utils/formatter.d.ts +0 -2
  531. package/dist/types/widgets/utils/skeleton/index.d.ts +0 -4
  532. package/dist/types/widgets/utils/skeleton/styles.d.ts +0 -19
  533. package/dist/types/widgets/wrapper/components/actions.d.ts +0 -5
  534. package/dist/types/widgets/wrapper/components/options.d.ts +0 -5
  535. package/dist/types/widgets/wrapper/components/title.d.ts +0 -9
  536. package/dist/types/widgets/wrapper/styles.d.ts +0 -89
  537. package/dist/types/widgets/wrapper/types.d.ts +0 -37
  538. package/dist/types/widgets/wrapper/wrapper-ui.d.ts +0 -16
  539. package/dist/types/widgets/wrapper/wrapper.d.ts +0 -16
  540. package/dist/types/widgets-v2/actions/brush-toggle/brush-toggle.d.ts +0 -56
  541. package/dist/types/widgets-v2/actions/change-column/change-column-icon.d.ts +0 -2
  542. package/dist/types/widgets-v2/actions/change-column/change-column.d.ts +0 -29
  543. package/dist/types/widgets-v2/actions/change-column/sortable-column-item.d.ts +0 -14
  544. package/dist/types/widgets-v2/actions/change-column/types.d.ts +0 -10
  545. package/dist/types/widgets-v2/actions/download/download.d.ts +0 -18
  546. package/dist/types/widgets-v2/actions/download/exports.d.ts +0 -37
  547. package/dist/types/widgets-v2/actions/download/types.d.ts +0 -46
  548. package/dist/types/widgets-v2/actions/fullscreen/fullscreen.d.ts +0 -85
  549. package/dist/types/widgets-v2/actions/fullscreen/types.d.ts +0 -14
  550. package/dist/types/widgets-v2/actions/index.d.ts +0 -10
  551. package/dist/types/widgets-v2/actions/lock-selection/lock-selection.d.ts +0 -57
  552. package/dist/types/widgets-v2/actions/relative-data/relative-data.d.ts +0 -39
  553. package/dist/types/widgets-v2/actions/searcher/searcher-toggle.d.ts +0 -23
  554. package/dist/types/widgets-v2/actions/searcher/searcher.d.ts +0 -11
  555. package/dist/types/widgets-v2/actions/stack-toggle/stack-toggle.d.ts +0 -10
  556. package/dist/types/widgets-v2/actions/stack-toggle/style.d.ts +0 -12
  557. package/dist/types/widgets-v2/actions/zoom-toggle/style.d.ts +0 -12
  558. package/dist/types/widgets-v2/actions/zoom-toggle/zoom-toggle.d.ts +0 -35
  559. package/dist/types/widgets-v2/bar/download.d.ts +0 -24
  560. package/dist/types/widgets-v2/bar/index.d.ts +0 -4
  561. package/dist/types/widgets-v2/bar/skeleton.d.ts +0 -6
  562. package/dist/types/widgets-v2/bar/types.d.ts +0 -46
  563. package/dist/types/widgets-v2/category/category-ui.d.ts +0 -96
  564. package/dist/types/widgets-v2/category/components/category-bar.d.ts +0 -23
  565. package/dist/types/widgets-v2/category/components/category-legend.d.ts +0 -34
  566. package/dist/types/widgets-v2/category/components/category-row-multi.d.ts +0 -31
  567. package/dist/types/widgets-v2/category/components/category-row-other.d.ts +0 -26
  568. package/dist/types/widgets-v2/category/components/category-row-single.d.ts +0 -28
  569. package/dist/types/widgets-v2/category/download.d.ts +0 -16
  570. package/dist/types/widgets-v2/category/index.d.ts +0 -10
  571. package/dist/types/widgets-v2/category/skeleton.d.ts +0 -11
  572. package/dist/types/widgets-v2/category/style.d.ts +0 -193
  573. package/dist/types/widgets-v2/category/types.d.ts +0 -55
  574. package/dist/types/widgets-v2/echart/echart-ui.d.ts +0 -44
  575. package/dist/types/widgets-v2/echart/echart.d.ts +0 -83
  576. package/dist/types/widgets-v2/echart/index.d.ts +0 -4
  577. package/dist/types/widgets-v2/echart/shared-resize-observer.d.ts +0 -5
  578. package/dist/types/widgets-v2/formula/download.d.ts +0 -20
  579. package/dist/types/widgets-v2/formula/formula-ui.d.ts +0 -20
  580. package/dist/types/widgets-v2/formula/index.d.ts +0 -11
  581. package/dist/types/widgets-v2/formula/skeleton.d.ts +0 -4
  582. package/dist/types/widgets-v2/formula/style.d.ts +0 -29
  583. package/dist/types/widgets-v2/formula/types.d.ts +0 -43
  584. package/dist/types/widgets-v2/histogram/download.d.ts +0 -17
  585. package/dist/types/widgets-v2/histogram/index.d.ts +0 -5
  586. package/dist/types/widgets-v2/histogram/skeleton.d.ts +0 -9
  587. package/dist/types/widgets-v2/histogram/types.d.ts +0 -60
  588. package/dist/types/widgets-v2/markdown/download.d.ts +0 -16
  589. package/dist/types/widgets-v2/markdown/index.d.ts +0 -6
  590. package/dist/types/widgets-v2/markdown/markdown-ui.d.ts +0 -12
  591. package/dist/types/widgets-v2/markdown/markdown.d.ts +0 -6
  592. package/dist/types/widgets-v2/markdown/skeleton.d.ts +0 -4
  593. package/dist/types/widgets-v2/markdown/style.d.ts +0 -61
  594. package/dist/types/widgets-v2/markdown/types.d.ts +0 -4
  595. package/dist/types/widgets-v2/note/style.d.ts +0 -26
  596. package/dist/types/widgets-v2/pie/download.d.ts +0 -17
  597. package/dist/types/widgets-v2/pie/index.d.ts +0 -4
  598. package/dist/types/widgets-v2/pie/skeleton.d.ts +0 -13
  599. package/dist/types/widgets-v2/pie/types.d.ts +0 -57
  600. package/dist/types/widgets-v2/range/index.d.ts +0 -4
  601. package/dist/types/widgets-v2/range/range-ui.d.ts +0 -27
  602. package/dist/types/widgets-v2/range/skeleton.d.ts +0 -9
  603. package/dist/types/widgets-v2/range/style.d.ts +0 -40
  604. package/dist/types/widgets-v2/range/types.d.ts +0 -37
  605. package/dist/types/widgets-v2/scatterplot/download.d.ts +0 -16
  606. package/dist/types/widgets-v2/scatterplot/index.d.ts +0 -5
  607. package/dist/types/widgets-v2/scatterplot/skeleton.d.ts +0 -12
  608. package/dist/types/widgets-v2/scatterplot/types.d.ts +0 -54
  609. package/dist/types/widgets-v2/selection-summary/selection-summary.d.ts +0 -29
  610. package/dist/types/widgets-v2/selection-summary/style.d.ts +0 -38
  611. package/dist/types/widgets-v2/spread/download.d.ts +0 -15
  612. package/dist/types/widgets-v2/spread/index.d.ts +0 -7
  613. package/dist/types/widgets-v2/spread/skeleton.d.ts +0 -9
  614. package/dist/types/widgets-v2/spread/spread-ui.d.ts +0 -18
  615. package/dist/types/widgets-v2/spread/types.d.ts +0 -25
  616. package/dist/types/widgets-v2/stores/index.d.ts +0 -8
  617. package/dist/types/widgets-v2/stores/types.d.ts +0 -55
  618. package/dist/types/widgets-v2/subheader/style.d.ts +0 -10
  619. package/dist/types/widgets-v2/subheader/subheader.d.ts +0 -11
  620. package/dist/types/widgets-v2/table/download.d.ts +0 -18
  621. package/dist/types/widgets-v2/table/helpers.d.ts +0 -32
  622. package/dist/types/widgets-v2/table/index.d.ts +0 -8
  623. package/dist/types/widgets-v2/table/skeleton.d.ts +0 -22
  624. package/dist/types/widgets-v2/table/style.d.ts +0 -40
  625. package/dist/types/widgets-v2/table/table-ui.d.ts +0 -44
  626. package/dist/types/widgets-v2/table/types.d.ts +0 -48
  627. package/dist/types/widgets-v2/timeseries/download.d.ts +0 -17
  628. package/dist/types/widgets-v2/timeseries/index.d.ts +0 -5
  629. package/dist/types/widgets-v2/timeseries/skeleton.d.ts +0 -8
  630. package/dist/types/widgets-v2/timeseries/types.d.ts +0 -60
  631. package/dist/types/widgets-v2/utils/index.d.ts +0 -3
  632. package/dist/types/widgets-v2/wrapper/index.d.ts +0 -4
  633. package/dist/use-widget-selector-VSPhfhNm.js +0 -12
  634. package/dist/use-widget-selector-VSPhfhNm.js.map +0 -1
  635. package/dist/utils-Dr6gf3vD.js.map +0 -1
  636. package/dist/widget-store-BFPKYm4R.js +0 -187
  637. package/dist/widget-store-BFPKYm4R.js.map +0 -1
  638. package/dist/widgets/category.js.map +0 -1
  639. package/dist/widgets/error.js +0 -30
  640. package/dist/widgets/error.js.map +0 -1
  641. package/dist/widgets/loader.js +0 -66
  642. package/dist/widgets/loader.js.map +0 -1
  643. package/dist/widgets/markdown.js.map +0 -1
  644. package/dist/widgets/no-data.js +0 -55
  645. package/dist/widgets/no-data.js.map +0 -1
  646. package/dist/widgets/note.js +0 -127
  647. package/dist/widgets/note.js.map +0 -1
  648. package/dist/widgets/range.js.map +0 -1
  649. package/dist/widgets/selection-summary.js +0 -41
  650. package/dist/widgets/selection-summary.js.map +0 -1
  651. package/dist/widgets/skeleton-loader.js +0 -24
  652. package/dist/widgets/skeleton-loader.js.map +0 -1
  653. package/dist/widgets/spread.js.map +0 -1
  654. package/dist/widgets/subheader.js +0 -51
  655. package/dist/widgets/subheader.js.map +0 -1
  656. package/dist/widgets/table.js.map +0 -1
  657. package/dist/widgets/toolbar-actions.js +0 -145
  658. package/dist/widgets/toolbar-actions.js.map +0 -1
  659. package/dist/widgets/utils.js.map +0 -1
  660. package/dist/widgets/wrapper.js +0 -273
  661. package/dist/widgets/wrapper.js.map +0 -1
  662. package/dist/widgets-v2/actions.js +0 -4
  663. package/dist/widgets-v2/bar.js +0 -260
  664. package/dist/widgets-v2/bar.js.map +0 -1
  665. package/dist/widgets-v2/category.js +0 -2
  666. package/dist/widgets-v2/echart.js +0 -2
  667. package/dist/widgets-v2/formula.js +0 -2
  668. package/dist/widgets-v2/histogram.js +0 -297
  669. package/dist/widgets-v2/histogram.js.map +0 -1
  670. package/dist/widgets-v2/markdown.js +0 -3
  671. package/dist/widgets-v2/pie.js +0 -373
  672. package/dist/widgets-v2/pie.js.map +0 -1
  673. package/dist/widgets-v2/range.js +0 -2
  674. package/dist/widgets-v2/scatterplot.js +0 -330
  675. package/dist/widgets-v2/scatterplot.js.map +0 -1
  676. package/dist/widgets-v2/spread.js +0 -2
  677. package/dist/widgets-v2/stores.js +0 -2
  678. package/dist/widgets-v2/table.js +0 -2
  679. package/dist/widgets-v2/timeseries.js +0 -294
  680. package/dist/widgets-v2/timeseries.js.map +0 -1
  681. package/dist/widgets-v2/utils.js +0 -2
  682. package/dist/widgets-v2.js +0 -952
  683. package/dist/widgets-v2.js.map +0 -1
  684. package/dist/zoom-toggle-IsF8BnAp.js.map +0 -1
  685. package/src/components/list-data/list-data-skeleton.test.tsx +0 -10
  686. package/src/components/list-data/list-data-skeleton.tsx +0 -40
  687. package/src/components/list-data/list-data.test.tsx +0 -167
  688. package/src/components/list-data/list-data.tsx +0 -124
  689. package/src/components/list-data/styles.ts +0 -37
  690. package/src/components/list-data/types.ts +0 -25
  691. package/src/hooks/index.ts +0 -1
  692. package/src/hooks/use-skeleton.test.tsx +0 -32
  693. package/src/hooks/use-skeleton.ts +0 -19
  694. package/src/hooks/use-widget-ref.ts +0 -34
  695. package/src/widgets/README.md +0 -277
  696. package/src/widgets/actions/brush-toggle/brush-overlay.test.tsx +0 -465
  697. package/src/widgets/actions/brush-toggle/brush-overlay.tsx +0 -408
  698. package/src/widgets/actions/brush-toggle/hit-test.test.ts +0 -65
  699. package/src/widgets/actions/brush-toggle/hit-test.ts +0 -45
  700. package/src/widgets/actions/brush-toggle/types.ts +0 -78
  701. package/src/widgets/actions/change-column/change-column-dnd.test.tsx +0 -193
  702. package/src/widgets/actions/change-column/sortable-column-item.test.tsx +0 -124
  703. package/src/widgets/actions/download/exports.tsx +0 -118
  704. package/src/widgets/actions/fullscreen/styles.ts +0 -17
  705. package/src/widgets/actions/lock-selection/types.ts +0 -43
  706. package/src/widgets/actions/relative-data/types.ts +0 -33
  707. package/src/widgets/actions/relative-data/utils.test.ts +0 -223
  708. package/src/widgets/actions/relative-data/utils.ts +0 -58
  709. package/src/widgets/actions/searcher/searcher-toggle.test.tsx +0 -354
  710. package/src/widgets/actions/searcher/types.ts +0 -72
  711. package/src/widgets/actions/shared/styles.ts +0 -12
  712. package/src/widgets/actions/stack-toggle/grouped-bar-chart-icon.tsx +0 -14
  713. package/src/widgets/actions/stack-toggle/types.ts +0 -29
  714. package/src/widgets/actions/zoom-toggle/types.ts +0 -44
  715. package/src/widgets/bar/config.ts +0 -140
  716. package/src/widgets/bar/style.ts +0 -33
  717. package/src/widgets/category/components/category-rows.test.tsx +0 -213
  718. package/src/widgets/category/config.ts +0 -86
  719. package/src/widgets/echart/const.ts +0 -1
  720. package/src/widgets/echart/options.ts +0 -57
  721. package/src/widgets/echart/types.ts +0 -45
  722. package/src/widgets/echart/utils.test.ts +0 -277
  723. package/src/widgets/echart/utils.ts +0 -244
  724. package/src/widgets/error/error.test.tsx +0 -331
  725. package/src/widgets/error/error.tsx +0 -51
  726. package/src/widgets/error/index.ts +0 -2
  727. package/src/widgets/error/types.ts +0 -24
  728. package/src/widgets/formula/components/item.test.tsx +0 -249
  729. package/src/widgets/formula/components/item.tsx +0 -21
  730. package/src/widgets/formula/components/prefix.test.tsx +0 -341
  731. package/src/widgets/formula/components/prefix.tsx +0 -19
  732. package/src/widgets/formula/components/row.test.tsx +0 -364
  733. package/src/widgets/formula/components/row.tsx +0 -24
  734. package/src/widgets/formula/components/series.tsx +0 -35
  735. package/src/widgets/formula/components/suffix.test.tsx +0 -383
  736. package/src/widgets/formula/components/suffix.tsx +0 -29
  737. package/src/widgets/formula/components/value.test.tsx +0 -329
  738. package/src/widgets/formula/components/value.tsx +0 -24
  739. package/src/widgets/formula/config.test.ts +0 -37
  740. package/src/widgets/formula/config.ts +0 -38
  741. package/src/widgets/formula/serializer.test.tsx +0 -144
  742. package/src/widgets/formula/serializer.ts +0 -28
  743. package/src/widgets/histogram/config.ts +0 -230
  744. package/src/widgets/histogram/style.ts +0 -8
  745. package/src/widgets/loader/index.ts +0 -4
  746. package/src/widgets/loader/loader.tsx +0 -92
  747. package/src/widgets/loader/types.ts +0 -13
  748. package/src/widgets/loader/utils.test.ts +0 -112
  749. package/src/widgets/loader/utils.ts +0 -57
  750. package/src/widgets/markdown/config.ts +0 -28
  751. package/src/widgets/no-data/index.ts +0 -2
  752. package/src/widgets/no-data/no-data.test.tsx +0 -497
  753. package/src/widgets/no-data/no-data.tsx +0 -112
  754. package/src/widgets/no-data/style.ts +0 -18
  755. package/src/widgets/no-data/types.ts +0 -76
  756. package/src/widgets/note/index.ts +0 -2
  757. package/src/widgets/note/note.test.tsx +0 -391
  758. package/src/widgets/note/note.tsx +0 -124
  759. package/src/widgets/note/types.ts +0 -9
  760. package/src/widgets/pie/config.ts +0 -245
  761. package/src/widgets/pie/style.ts +0 -8
  762. package/src/widgets/range/components/range-item.test.tsx +0 -243
  763. package/src/widgets/range/components/range-item.tsx +0 -214
  764. package/src/widgets/range/config.ts +0 -10
  765. package/src/widgets/range/serializer.test.ts +0 -70
  766. package/src/widgets/range/serializer.ts +0 -27
  767. package/src/widgets/scatterplot/config.ts +0 -136
  768. package/src/widgets/scatterplot/style.ts +0 -21
  769. package/src/widgets/selection-summary/index.ts +0 -6
  770. package/src/widgets/selection-summary/types.ts +0 -14
  771. package/src/widgets/skeleton-loader/index.ts +0 -2
  772. package/src/widgets/skeleton-loader/skeleton-loader.test.tsx +0 -139
  773. package/src/widgets/skeleton-loader/skeleton-loader.tsx +0 -35
  774. package/src/widgets/skeleton-loader/types.ts +0 -8
  775. package/src/widgets/spread/components/max-value.tsx +0 -29
  776. package/src/widgets/spread/components/min-value.tsx +0 -29
  777. package/src/widgets/spread/components/separator.tsx +0 -9
  778. package/src/widgets/spread/config.ts +0 -39
  779. package/src/widgets/spread/style.ts +0 -22
  780. package/src/widgets/stores/use-widget-selector.ts +0 -47
  781. package/src/widgets/stores/widget-store-branches.test.ts +0 -275
  782. package/src/widgets/stores/widget-store-performance.test.ts +0 -750
  783. package/src/widgets/stores/widget-store.test.ts +0 -942
  784. package/src/widgets/stores/widget-store.ts +0 -484
  785. package/src/widgets/subheader/index.ts +0 -3
  786. package/src/widgets/subheader/types.ts +0 -11
  787. package/src/widgets/table/components/cell-header.tsx +0 -58
  788. package/src/widgets/table/components/cell.tsx +0 -82
  789. package/src/widgets/table/components/pagination-actions.tsx +0 -67
  790. package/src/widgets/table/components/pagination.tsx +0 -41
  791. package/src/widgets/table/components/row.tsx +0 -65
  792. package/src/widgets/table/config.test.ts +0 -65
  793. package/src/widgets/table/config.ts +0 -75
  794. package/src/widgets/table/hooks/use-pagination.test.ts +0 -294
  795. package/src/widgets/table/hooks/use-pagination.ts +0 -148
  796. package/src/widgets/table/hooks/use-selection.test.ts +0 -504
  797. package/src/widgets/table/hooks/use-selection.ts +0 -194
  798. package/src/widgets/table/hooks/use-sort.test.ts +0 -296
  799. package/src/widgets/table/hooks/use-sort.ts +0 -131
  800. package/src/widgets/table/serializer.ts +0 -54
  801. package/src/widgets/timeseries/config.ts +0 -136
  802. package/src/widgets/timeseries/style.ts +0 -36
  803. package/src/widgets/toolbar-actions/index.ts +0 -6
  804. package/src/widgets/toolbar-actions/styles.ts +0 -38
  805. package/src/widgets/toolbar-actions/toolbar-actions.test.tsx +0 -691
  806. package/src/widgets/toolbar-actions/toolbar-actions.tsx +0 -145
  807. package/src/widgets/toolbar-actions/types.ts +0 -60
  808. package/src/widgets/utils/chart-config/config-factory.ts +0 -67
  809. package/src/widgets/utils/chart-config/csv-modifiers.ts +0 -56
  810. package/src/widgets/utils/chart-config/download-config.ts +0 -22
  811. package/src/widgets/utils/chart-config/index.ts +0 -29
  812. package/src/widgets/utils/formatter.ts +0 -2
  813. package/src/widgets/utils/skeleton/index.ts +0 -5
  814. package/src/widgets/utils/skeleton/styles.ts +0 -20
  815. package/src/widgets/wrapper/components/actions.test.tsx +0 -105
  816. package/src/widgets/wrapper/components/actions.tsx +0 -35
  817. package/src/widgets/wrapper/components/options.test.tsx +0 -331
  818. package/src/widgets/wrapper/components/options.tsx +0 -81
  819. package/src/widgets/wrapper/components/title.test.tsx +0 -126
  820. package/src/widgets/wrapper/components/title.tsx +0 -35
  821. package/src/widgets/wrapper/styles.ts +0 -98
  822. package/src/widgets/wrapper/types.ts +0 -55
  823. package/src/widgets/wrapper/wrapper-ui.test.tsx +0 -232
  824. package/src/widgets/wrapper/wrapper-ui.tsx +0 -72
  825. package/src/widgets/wrapper/wrapper.test.tsx +0 -365
  826. package/src/widgets/wrapper/wrapper.tsx +0 -60
  827. package/src/widgets-v2/actions/brush-toggle/brush-toggle.test.tsx +0 -180
  828. package/src/widgets-v2/actions/brush-toggle/brush-toggle.tsx +0 -154
  829. package/src/widgets-v2/actions/change-column/change-column-icon.tsx +0 -14
  830. package/src/widgets-v2/actions/change-column/change-column.test.tsx +0 -59
  831. package/src/widgets-v2/actions/change-column/change-column.tsx +0 -189
  832. package/src/widgets-v2/actions/change-column/sortable-column-item.tsx +0 -63
  833. package/src/widgets-v2/actions/change-column/types.ts +0 -11
  834. package/src/widgets-v2/actions/download/download.test.tsx +0 -327
  835. package/src/widgets-v2/actions/download/download.tsx +0 -146
  836. package/src/widgets-v2/actions/download/exports.test.tsx +0 -198
  837. package/src/widgets-v2/actions/download/types.ts +0 -46
  838. package/src/widgets-v2/actions/fullscreen/fullscreen.test.tsx +0 -210
  839. package/src/widgets-v2/actions/fullscreen/fullscreen.tsx +0 -416
  840. package/src/widgets-v2/actions/fullscreen/types.ts +0 -15
  841. package/src/widgets-v2/actions/index.ts +0 -96
  842. package/src/widgets-v2/actions/lock-selection/lock-selection.test.tsx +0 -301
  843. package/src/widgets-v2/actions/lock-selection/lock-selection.tsx +0 -188
  844. package/src/widgets-v2/actions/relative-data/relative-data.test.tsx +0 -71
  845. package/src/widgets-v2/actions/relative-data/relative-data.tsx +0 -107
  846. package/src/widgets-v2/actions/searcher/searcher-toggle.tsx +0 -96
  847. package/src/widgets-v2/actions/searcher/searcher.tsx +0 -127
  848. package/src/widgets-v2/actions/stack-toggle/stack-toggle.test.tsx +0 -61
  849. package/src/widgets-v2/actions/stack-toggle/stack-toggle.tsx +0 -54
  850. package/src/widgets-v2/actions/stack-toggle/style.ts +0 -11
  851. package/src/widgets-v2/actions/zoom-toggle/style.ts +0 -11
  852. package/src/widgets-v2/actions/zoom-toggle/zoom-toggle.test.tsx +0 -107
  853. package/src/widgets-v2/actions/zoom-toggle/zoom-toggle.tsx +0 -106
  854. package/src/widgets-v2/bar/download.tsx +0 -61
  855. package/src/widgets-v2/bar/index.ts +0 -10
  856. package/src/widgets-v2/bar/skeleton.tsx +0 -69
  857. package/src/widgets-v2/bar/types.ts +0 -51
  858. package/src/widgets-v2/category/category-ui.test.tsx +0 -909
  859. package/src/widgets-v2/category/category-ui.tsx +0 -490
  860. package/src/widgets-v2/category/components/category-bar.tsx +0 -49
  861. package/src/widgets-v2/category/components/category-legend.tsx +0 -82
  862. package/src/widgets-v2/category/components/category-row-multi.tsx +0 -86
  863. package/src/widgets-v2/category/components/category-row-other.tsx +0 -84
  864. package/src/widgets-v2/category/components/category-row-single.tsx +0 -76
  865. package/src/widgets-v2/category/download.ts +0 -51
  866. package/src/widgets-v2/category/index.ts +0 -32
  867. package/src/widgets-v2/category/skeleton.tsx +0 -74
  868. package/src/widgets-v2/category/style.ts +0 -329
  869. package/src/widgets-v2/category/types.ts +0 -61
  870. package/src/widgets-v2/echart/echart-ui.test.tsx +0 -330
  871. package/src/widgets-v2/echart/echart-ui.tsx +0 -236
  872. package/src/widgets-v2/echart/echart.test.tsx +0 -229
  873. package/src/widgets-v2/echart/echart.tsx +0 -209
  874. package/src/widgets-v2/echart/index.ts +0 -22
  875. package/src/widgets-v2/echart/shared-resize-observer.ts +0 -56
  876. package/src/widgets-v2/formula/formula-ui.test.tsx +0 -91
  877. package/src/widgets-v2/formula/formula-ui.tsx +0 -66
  878. package/src/widgets-v2/formula/index.ts +0 -17
  879. package/src/widgets-v2/formula/skeleton.tsx +0 -27
  880. package/src/widgets-v2/formula/style.ts +0 -31
  881. package/src/widgets-v2/formula/types.ts +0 -48
  882. package/src/widgets-v2/histogram/index.ts +0 -13
  883. package/src/widgets-v2/histogram/skeleton.tsx +0 -70
  884. package/src/widgets-v2/histogram/types.ts +0 -64
  885. package/src/widgets-v2/markdown/index.ts +0 -6
  886. package/src/widgets-v2/markdown/markdown-ui.test.tsx +0 -75
  887. package/src/widgets-v2/markdown/markdown-ui.tsx +0 -55
  888. package/src/widgets-v2/markdown/markdown.tsx +0 -17
  889. package/src/widgets-v2/markdown/skeleton.tsx +0 -32
  890. package/src/widgets-v2/markdown/style.ts +0 -53
  891. package/src/widgets-v2/markdown/types.ts +0 -4
  892. package/src/widgets-v2/note/style.ts +0 -26
  893. package/src/widgets-v2/pie/index.ts +0 -10
  894. package/src/widgets-v2/pie/skeleton.tsx +0 -94
  895. package/src/widgets-v2/pie/types.ts +0 -62
  896. package/src/widgets-v2/range/index.ts +0 -4
  897. package/src/widgets-v2/range/range-ui.test.tsx +0 -136
  898. package/src/widgets-v2/range/range-ui.tsx +0 -278
  899. package/src/widgets-v2/range/skeleton.tsx +0 -47
  900. package/src/widgets-v2/range/style.ts +0 -41
  901. package/src/widgets-v2/range/types.ts +0 -37
  902. package/src/widgets-v2/scatterplot/download.ts +0 -51
  903. package/src/widgets-v2/scatterplot/index.ts +0 -14
  904. package/src/widgets-v2/scatterplot/skeleton.tsx +0 -84
  905. package/src/widgets-v2/scatterplot/types.ts +0 -59
  906. package/src/widgets-v2/selection-summary/selection-summary.tsx +0 -82
  907. package/src/widgets-v2/selection-summary/style.ts +0 -38
  908. package/src/widgets-v2/spread/download.ts +0 -56
  909. package/src/widgets-v2/spread/index.ts +0 -11
  910. package/src/widgets-v2/spread/skeleton.tsx +0 -38
  911. package/src/widgets-v2/spread/spread-ui.test.tsx +0 -108
  912. package/src/widgets-v2/spread/spread-ui.tsx +0 -52
  913. package/src/widgets-v2/spread/types.ts +0 -27
  914. package/src/widgets-v2/stores/index.ts +0 -49
  915. package/src/widgets-v2/stores/types.ts +0 -64
  916. package/src/widgets-v2/subheader/style.ts +0 -12
  917. package/src/widgets-v2/subheader/subheader.test.tsx +0 -30
  918. package/src/widgets-v2/subheader/subheader.tsx +0 -16
  919. package/src/widgets-v2/table/download.ts +0 -44
  920. package/src/widgets-v2/table/helpers.test.ts +0 -233
  921. package/src/widgets-v2/table/helpers.ts +0 -131
  922. package/src/widgets-v2/table/index.ts +0 -24
  923. package/src/widgets-v2/table/skeleton.tsx +0 -65
  924. package/src/widgets-v2/table/style.ts +0 -43
  925. package/src/widgets-v2/table/table-ui.tsx +0 -364
  926. package/src/widgets-v2/table/types.ts +0 -55
  927. package/src/widgets-v2/timeseries/index.ts +0 -11
  928. package/src/widgets-v2/timeseries/skeleton.tsx +0 -76
  929. package/src/widgets-v2/timeseries/types.ts +0 -65
  930. package/src/widgets-v2/utils/index.ts +0 -3
  931. package/src/widgets-v2/wrapper/index.ts +0 -14
  932. /package/dist/types/{widgets-v2 → widgets}/actions/brush-toggle/index.d.ts +0 -0
  933. /package/dist/types/{widgets-v2 → widgets}/actions/brush-toggle/labels.d.ts +0 -0
  934. /package/dist/types/{widgets-v2 → widgets}/actions/brush-toggle/transforms.d.ts +0 -0
  935. /package/dist/types/{widgets-v2 → widgets}/actions/change-column/index.d.ts +0 -0
  936. /package/dist/types/{widgets-v2 → widgets}/actions/change-column/labels.d.ts +0 -0
  937. /package/dist/types/{widgets-v2 → widgets}/actions/change-column/style.d.ts +0 -0
  938. /package/dist/types/{widgets-v2 → widgets}/actions/download/constants.d.ts +0 -0
  939. /package/dist/types/{widgets-v2 → widgets}/actions/download/csv-item.d.ts +0 -0
  940. /package/dist/types/{widgets-v2 → widgets}/actions/download/icons.d.ts +0 -0
  941. /package/dist/types/{widgets-v2 → widgets}/actions/download/labels.d.ts +0 -0
  942. /package/dist/types/{widgets-v2 → widgets}/actions/download/style.d.ts +0 -0
  943. /package/dist/types/{widgets-v2 → widgets}/actions/fullscreen/index.d.ts +0 -0
  944. /package/dist/types/{widgets-v2 → widgets}/actions/fullscreen/labels.d.ts +0 -0
  945. /package/dist/types/{widgets-v2 → widgets}/actions/fullscreen/style.d.ts +0 -0
  946. /package/dist/types/{widgets-v2 → widgets}/actions/lock-selection/index.d.ts +0 -0
  947. /package/dist/types/{widgets-v2 → widgets}/actions/lock-selection/labels.d.ts +0 -0
  948. /package/dist/types/{widgets-v2/actions/brush-toggle → widgets/actions/lock-selection}/style.d.ts +0 -0
  949. /package/dist/types/{widgets-v2 → widgets}/actions/lock-selection/transforms.d.ts +0 -0
  950. /package/dist/types/{widgets-v2 → widgets}/actions/relative-data/index.d.ts +0 -0
  951. /package/dist/types/{widgets-v2 → widgets}/actions/relative-data/labels.d.ts +0 -0
  952. /package/dist/types/{widgets-v2/actions/lock-selection → widgets/actions/relative-data}/style.d.ts +0 -0
  953. /package/dist/types/{widgets-v2 → widgets}/actions/searcher/filter.d.ts +0 -0
  954. /package/dist/types/{widgets-v2 → widgets}/actions/searcher/index.d.ts +0 -0
  955. /package/dist/types/{widgets-v2 → widgets}/actions/searcher/labels.d.ts +0 -0
  956. /package/dist/types/{widgets-v2 → widgets}/actions/searcher/style.d.ts +0 -0
  957. /package/dist/types/{widgets-v2 → widgets}/actions/show-all/index.d.ts +0 -0
  958. /package/dist/types/{widgets-v2 → widgets}/actions/show-all/labels.d.ts +0 -0
  959. /package/dist/types/{widgets-v2 → widgets}/actions/show-all/show-all.d.ts +0 -0
  960. /package/dist/types/{widgets-v2 → widgets}/actions/show-all/style.d.ts +0 -0
  961. /package/dist/types/{widgets-v2 → widgets}/actions/stack-toggle/index.d.ts +0 -0
  962. /package/dist/types/{widgets-v2 → widgets}/actions/stack-toggle/labels.d.ts +0 -0
  963. /package/dist/types/{widgets-v2/actions/relative-data → widgets/actions/stack-toggle}/style.d.ts +0 -0
  964. /package/dist/types/{widgets-v2 → widgets}/actions/stack-toggle/transforms.d.ts +0 -0
  965. /package/dist/types/{widgets-v2 → widgets}/actions/zoom-toggle/index.d.ts +0 -0
  966. /package/dist/types/{widgets-v2 → widgets}/actions/zoom-toggle/labels.d.ts +0 -0
  967. /package/dist/types/{widgets-v2 → widgets}/actions/zoom-toggle/transforms.d.ts +0 -0
  968. /package/dist/types/{widgets-v2 → widgets}/bar/options.d.ts +0 -0
  969. /package/dist/types/{widgets-v2 → widgets}/category/category.d.ts +0 -0
  970. /package/dist/types/{widgets-v2 → widgets}/echart/edge-label-clamp.d.ts +0 -0
  971. /package/dist/types/{widgets-v2 → widgets}/echart/style.d.ts +0 -0
  972. /package/dist/types/{widgets-v2 → widgets}/echart/use-chart-selection.d.ts +0 -0
  973. /package/dist/types/{widgets-v2 → widgets}/formula/delta.d.ts +0 -0
  974. /package/dist/types/{widgets-v2 → widgets}/formula/formula.d.ts +0 -0
  975. /package/dist/types/{widgets-v2 → widgets}/formula/note.d.ts +0 -0
  976. /package/dist/types/{widgets-v2 → widgets}/formula/prefix.d.ts +0 -0
  977. /package/dist/types/{widgets-v2 → widgets}/formula/suffix.d.ts +0 -0
  978. /package/dist/types/{widgets-v2 → widgets}/histogram/options.d.ts +0 -0
  979. /package/dist/types/{widgets-v2 → widgets}/histogram/transforms.d.ts +0 -0
  980. /package/dist/types/{widgets-v2 → widgets}/markdown/markdown-content.d.ts +0 -0
  981. /package/dist/types/{widgets-v2 → widgets}/note/labels.d.ts +0 -0
  982. /package/dist/types/{widgets-v2 → widgets}/note/widget-note.d.ts +0 -0
  983. /package/dist/types/{widgets-v2 → widgets}/pie/options.d.ts +0 -0
  984. /package/dist/types/{widgets-v2 → widgets}/provider/widget-provider.d.ts +0 -0
  985. /package/dist/types/{widgets-v2 → widgets}/range/range.d.ts +0 -0
  986. /package/dist/types/{widgets-v2 → widgets}/scatterplot/options.d.ts +0 -0
  987. /package/dist/types/{widgets-v2 → widgets}/scatterplot/transforms.d.ts +0 -0
  988. /package/dist/types/{widgets-v2 → widgets}/selection-summary/labels.d.ts +0 -0
  989. /package/dist/types/{widgets-v2 → widgets}/spread/band.d.ts +0 -0
  990. /package/dist/types/{widgets-v2 → widgets}/spread/separator.d.ts +0 -0
  991. /package/dist/types/{widgets-v2 → widgets}/spread/spread.d.ts +0 -0
  992. /package/dist/types/{widgets-v2 → widgets}/state/labels.d.ts +0 -0
  993. /package/dist/types/{widgets-v2 → widgets}/state/style.d.ts +0 -0
  994. /package/dist/types/{widgets-v2 → widgets}/state/widget-state.d.ts +0 -0
  995. /package/dist/types/{widgets-v2 → widgets}/stores/pipeline-middleware.d.ts +0 -0
  996. /package/dist/types/{widgets-v2 → widgets}/stores/transforms.d.ts +0 -0
  997. /package/dist/types/{widgets-v2 → widgets}/stores/use-echart-instance.d.ts +0 -0
  998. /package/dist/types/{widgets-v2 → widgets}/stores/use-transform-enabled.d.ts +0 -0
  999. /package/dist/types/{widgets-v2 → widgets}/stores/use-transform.d.ts +0 -0
  1000. /package/dist/types/{widgets-v2 → widgets}/stores/widget-context.d.ts +0 -0
  1001. /package/dist/types/{widgets-v2 → widgets}/table/labels.d.ts +0 -0
  1002. /package/dist/types/{widgets-v2 → widgets}/table/table.d.ts +0 -0
  1003. /package/dist/types/{widgets-v2 → widgets}/table/transforms.d.ts +0 -0
  1004. /package/dist/types/{widgets-v2 → widgets}/timeseries/options.d.ts +0 -0
  1005. /package/dist/types/{widgets-v2 → widgets}/timeseries/transforms.d.ts +0 -0
  1006. /package/dist/types/{widgets-v2 → widgets}/toolbox/labels.d.ts +0 -0
  1007. /package/dist/types/{widgets-v2 → widgets}/toolbox/style.d.ts +0 -0
  1008. /package/dist/types/{widgets-v2 → widgets}/toolbox/toolbox.d.ts +0 -0
  1009. /package/dist/types/{widgets-v2 → widgets}/utils/data-zoom-layout.d.ts +0 -0
  1010. /package/dist/types/{widgets-v2 → widgets}/utils/merge-options.d.ts +0 -0
  1011. /package/dist/types/widgets/utils/{chart-config/option-builders.d.ts → option-builders.d.ts} +0 -0
  1012. /package/dist/types/{widgets-v2 → widgets}/utils/resolve-theme-color.d.ts +0 -0
  1013. /package/dist/types/{widgets-v2 → widgets}/wrapper/labels.d.ts +0 -0
  1014. /package/dist/types/{widgets-v2 → widgets}/wrapper/widget-content.d.ts +0 -0
  1015. /package/src/{widgets-v2 → widgets}/actions/brush-toggle/index.ts +0 -0
  1016. /package/src/{widgets-v2 → widgets}/actions/brush-toggle/labels.ts +0 -0
  1017. /package/src/{widgets-v2 → widgets}/actions/brush-toggle/transforms.test.ts +0 -0
  1018. /package/src/{widgets-v2 → widgets}/actions/brush-toggle/transforms.ts +0 -0
  1019. /package/src/{widgets-v2 → widgets}/actions/change-column/index.ts +0 -0
  1020. /package/src/{widgets-v2 → widgets}/actions/change-column/labels.ts +0 -0
  1021. /package/src/{widgets-v2 → widgets}/actions/change-column/style.ts +0 -0
  1022. /package/src/{widgets-v2 → widgets}/actions/download/constants.ts +0 -0
  1023. /package/src/{widgets-v2 → widgets}/actions/download/csv-item.test.tsx +0 -0
  1024. /package/src/{widgets-v2 → widgets}/actions/download/csv-item.tsx +0 -0
  1025. /package/src/{widgets-v2 → widgets}/actions/download/icons.tsx +0 -0
  1026. /package/src/{widgets-v2 → widgets}/actions/download/labels.ts +0 -0
  1027. /package/src/{widgets-v2 → widgets}/actions/download/png-item.test.tsx +0 -0
  1028. /package/src/{widgets-v2 → widgets}/actions/download/style.ts +0 -0
  1029. /package/src/{widgets-v2 → widgets}/actions/fullscreen/fullscreen-store.test.tsx +0 -0
  1030. /package/src/{widgets-v2 → widgets}/actions/fullscreen/index.ts +0 -0
  1031. /package/src/{widgets-v2 → widgets}/actions/fullscreen/labels.ts +0 -0
  1032. /package/src/{widgets-v2 → widgets}/actions/fullscreen/style.ts +0 -0
  1033. /package/src/{widgets-v2 → widgets}/actions/lock-selection/index.ts +0 -0
  1034. /package/src/{widgets-v2 → widgets}/actions/lock-selection/labels.ts +0 -0
  1035. /package/src/{widgets-v2/actions/brush-toggle → widgets/actions/lock-selection}/style.ts +0 -0
  1036. /package/src/{widgets-v2 → widgets}/actions/lock-selection/transforms.ts +0 -0
  1037. /package/src/{widgets-v2 → widgets}/actions/relative-data/index.ts +0 -0
  1038. /package/src/{widgets-v2 → widgets}/actions/relative-data/labels.ts +0 -0
  1039. /package/src/{widgets-v2/actions/lock-selection → widgets/actions/relative-data}/style.ts +0 -0
  1040. /package/src/{widgets-v2 → widgets}/actions/relative-data/transforms.test.ts +0 -0
  1041. /package/src/{widgets-v2 → widgets}/actions/searcher/filter.test.ts +0 -0
  1042. /package/src/{widgets-v2 → widgets}/actions/searcher/filter.ts +0 -0
  1043. /package/src/{widgets-v2 → widgets}/actions/searcher/index.ts +0 -0
  1044. /package/src/{widgets-v2 → widgets}/actions/searcher/labels.ts +0 -0
  1045. /package/src/{widgets-v2 → widgets}/actions/searcher/searcher.test.tsx +0 -0
  1046. /package/src/{widgets-v2 → widgets}/actions/searcher/style.ts +0 -0
  1047. /package/src/{widgets-v2 → widgets}/actions/show-all/index.ts +0 -0
  1048. /package/src/{widgets-v2 → widgets}/actions/show-all/labels.ts +0 -0
  1049. /package/src/{widgets-v2 → widgets}/actions/show-all/show-all.test.tsx +0 -0
  1050. /package/src/{widgets-v2 → widgets}/actions/show-all/show-all.tsx +0 -0
  1051. /package/src/{widgets-v2 → widgets}/actions/show-all/style.ts +0 -0
  1052. /package/src/{widgets-v2 → widgets}/actions/stack-toggle/index.ts +0 -0
  1053. /package/src/{widgets-v2 → widgets}/actions/stack-toggle/labels.ts +0 -0
  1054. /package/src/{widgets-v2/actions/relative-data → widgets/actions/stack-toggle}/style.ts +0 -0
  1055. /package/src/{widgets-v2 → widgets}/actions/stack-toggle/transforms.test.ts +0 -0
  1056. /package/src/{widgets-v2 → widgets}/actions/stack-toggle/transforms.ts +0 -0
  1057. /package/src/{widgets-v2 → widgets}/actions/zoom-toggle/index.ts +0 -0
  1058. /package/src/{widgets-v2 → widgets}/actions/zoom-toggle/labels.ts +0 -0
  1059. /package/src/{widgets-v2 → widgets}/actions/zoom-toggle/transforms.test.ts +0 -0
  1060. /package/src/{widgets-v2 → widgets}/actions/zoom-toggle/transforms.ts +0 -0
  1061. /package/src/{widgets-v2 → widgets}/bar/download.test.tsx +0 -0
  1062. /package/src/{widgets-v2 → widgets}/bar/options.test.ts +0 -0
  1063. /package/src/{widgets-v2 → widgets}/bar/skeleton.test.tsx +0 -0
  1064. /package/src/{widgets-v2 → widgets}/category/category.relative-data.test.tsx +0 -0
  1065. /package/src/{widgets-v2 → widgets}/category/category.stack-toggle.test.tsx +0 -0
  1066. /package/src/{widgets-v2 → widgets}/category/category.test.tsx +0 -0
  1067. /package/src/{widgets-v2 → widgets}/category/components/category-bar-stacked.test.tsx +0 -0
  1068. /package/src/{widgets-v2 → widgets}/category/components/category-bar.test.tsx +0 -0
  1069. /package/src/{widgets-v2 → widgets}/category/components/category-row-other.test.tsx +0 -0
  1070. /package/src/{widgets-v2 → widgets}/category/components/category-row-stacked.test.tsx +0 -0
  1071. /package/src/{widgets-v2 → widgets}/category/download.test.ts +0 -0
  1072. /package/src/{widgets-v2 → widgets}/category/skeleton.test.tsx +0 -0
  1073. /package/src/{widgets-v2 → widgets}/echart/edge-label-clamp.test.ts +0 -0
  1074. /package/src/{widgets-v2 → widgets}/echart/edge-label-clamp.ts +0 -0
  1075. /package/src/{widgets-v2 → widgets}/echart/shared-resize-observer.test.ts +0 -0
  1076. /package/src/{widgets-v2 → widgets}/echart/use-chart-selection.test.tsx +0 -0
  1077. /package/src/{widgets-v2 → widgets}/echart/use-chart-selection.ts +0 -0
  1078. /package/src/{widgets-v2 → widgets}/formula/delta.tsx +0 -0
  1079. /package/src/{widgets-v2 → widgets}/formula/download.test.tsx +0 -0
  1080. /package/src/{widgets-v2 → widgets}/formula/formula.test.tsx +0 -0
  1081. /package/src/{widgets-v2 → widgets}/formula/formula.tsx +0 -0
  1082. /package/src/{widgets-v2 → widgets}/formula/prefix.tsx +0 -0
  1083. /package/src/{widgets-v2 → widgets}/formula/skeleton.test.tsx +0 -0
  1084. /package/src/{widgets-v2 → widgets}/formula/subcomponents.test.tsx +0 -0
  1085. /package/src/{widgets-v2 → widgets}/formula/suffix.tsx +0 -0
  1086. /package/src/{widgets-v2 → widgets}/histogram/download.test.ts +0 -0
  1087. /package/src/{widgets-v2 → widgets}/histogram/options.test.ts +0 -0
  1088. /package/src/{widgets-v2 → widgets}/histogram/skeleton.test.tsx +0 -0
  1089. /package/src/{widgets-v2 → widgets}/histogram/transforms.test.ts +0 -0
  1090. /package/src/{widgets-v2 → widgets}/histogram/transforms.ts +0 -0
  1091. /package/src/{widgets-v2 → widgets}/markdown/download.test.ts +0 -0
  1092. /package/src/{widgets-v2 → widgets}/markdown/markdown-content.test.tsx +0 -0
  1093. /package/src/{widgets-v2 → widgets}/markdown/markdown-content.tsx +0 -0
  1094. /package/src/{widgets-v2 → widgets}/markdown/markdown.test.tsx +0 -0
  1095. /package/src/{widgets-v2 → widgets}/markdown/skeleton.test.tsx +0 -0
  1096. /package/src/{widgets-v2 → widgets}/note/labels.ts +0 -0
  1097. /package/src/{widgets-v2 → widgets}/note/widget-note.test.tsx +0 -0
  1098. /package/src/{widgets-v2 → widgets}/pie/download.test.ts +0 -0
  1099. /package/src/{widgets-v2 → widgets}/pie/options.test.ts +0 -0
  1100. /package/src/{widgets-v2 → widgets}/pie/skeleton.test.tsx +0 -0
  1101. /package/src/{widgets-v2 → widgets}/provider/widget-provider.test.tsx +0 -0
  1102. /package/src/{widgets-v2 → widgets}/provider/widget-provider.tsx +0 -0
  1103. /package/src/{widgets-v2 → widgets}/range/range.test.tsx +0 -0
  1104. /package/src/{widgets-v2 → widgets}/range/range.tsx +0 -0
  1105. /package/src/{widgets-v2 → widgets}/range/skeleton.test.tsx +0 -0
  1106. /package/src/{widgets-v2 → widgets}/scatterplot/download.test.ts +0 -0
  1107. /package/src/{widgets-v2 → widgets}/scatterplot/options.test.ts +0 -0
  1108. /package/src/{widgets-v2 → widgets}/scatterplot/skeleton.test.tsx +0 -0
  1109. /package/src/{widgets-v2 → widgets}/scatterplot/transforms.test.ts +0 -0
  1110. /package/src/{widgets-v2 → widgets}/scatterplot/transforms.ts +0 -0
  1111. /package/src/{widgets-v2 → widgets}/selection-summary/labels.ts +0 -0
  1112. /package/src/{widgets-v2 → widgets}/selection-summary/selection-summary.test.tsx +0 -0
  1113. /package/src/{widgets-v2 → widgets}/spread/band.test.ts +0 -0
  1114. /package/src/{widgets-v2 → widgets}/spread/band.ts +0 -0
  1115. /package/src/{widgets-v2 → widgets}/spread/download.test.ts +0 -0
  1116. /package/src/{widgets-v2 → widgets}/spread/separator.tsx +0 -0
  1117. /package/src/{widgets-v2 → widgets}/spread/skeleton.test.tsx +0 -0
  1118. /package/src/{widgets-v2 → widgets}/spread/spread.test.tsx +0 -0
  1119. /package/src/{widgets-v2 → widgets}/spread/spread.tsx +0 -0
  1120. /package/src/{widgets-v2 → widgets}/state/labels.test.ts +0 -0
  1121. /package/src/{widgets-v2 → widgets}/state/labels.ts +0 -0
  1122. /package/src/{widgets-v2 → widgets}/state/style.ts +0 -0
  1123. /package/src/{widgets-v2 → widgets}/state/widget-state.test.tsx +0 -0
  1124. /package/src/{widgets-v2 → widgets}/stores/pipeline-middleware.test.ts +0 -0
  1125. /package/src/{widgets-v2 → widgets}/stores/pipeline-middleware.ts +0 -0
  1126. /package/src/{widgets-v2 → widgets}/stores/transforms.test.ts +0 -0
  1127. /package/src/{widgets-v2 → widgets}/stores/use-echart-instance.test.tsx +0 -0
  1128. /package/src/{widgets-v2 → widgets}/stores/use-echart-instance.ts +0 -0
  1129. /package/src/{widgets-v2 → widgets}/stores/use-transform-enabled.test.tsx +0 -0
  1130. /package/src/{widgets-v2 → widgets}/stores/use-transform-enabled.ts +0 -0
  1131. /package/src/{widgets-v2 → widgets}/stores/use-transform.test.tsx +0 -0
  1132. /package/src/{widgets-v2 → widgets}/stores/widget-context.test.tsx +0 -0
  1133. /package/src/{widgets-v2 → widgets}/stores/widget-context.ts +0 -0
  1134. /package/src/{widgets-v2 → widgets}/table/download.test.ts +0 -0
  1135. /package/src/{widgets-v2 → widgets}/table/labels.tsx +0 -0
  1136. /package/src/{widgets-v2 → widgets}/table/skeleton.test.tsx +0 -0
  1137. /package/src/{widgets-v2 → widgets}/table/table-ui.test.tsx +0 -0
  1138. /package/src/{widgets-v2 → widgets}/table/table.test.tsx +0 -0
  1139. /package/src/{widgets-v2 → widgets}/table/table.tsx +0 -0
  1140. /package/src/{widgets-v2 → widgets}/table/transforms.test.ts +0 -0
  1141. /package/src/{widgets-v2 → widgets}/table/transforms.ts +0 -0
  1142. /package/src/{widgets-v2 → widgets}/timeseries/download.test.ts +0 -0
  1143. /package/src/{widgets-v2 → widgets}/timeseries/options.test.ts +0 -0
  1144. /package/src/{widgets-v2 → widgets}/timeseries/skeleton.test.tsx +0 -0
  1145. /package/src/{widgets-v2 → widgets}/timeseries/transforms.test.ts +0 -0
  1146. /package/src/{widgets-v2 → widgets}/timeseries/transforms.ts +0 -0
  1147. /package/src/{widgets-v2 → widgets}/toolbox/labels.ts +0 -0
  1148. /package/src/{widgets-v2 → widgets}/toolbox/style.ts +0 -0
  1149. /package/src/{widgets-v2 → widgets}/toolbox/toolbox.test.tsx +0 -0
  1150. /package/src/{widgets-v2 → widgets}/toolbox/toolbox.tsx +0 -0
  1151. /package/src/{widgets-v2 → widgets}/utils/data-zoom-layout.ts +0 -0
  1152. /package/src/{widgets-v2 → widgets}/utils/merge-options.test.ts +0 -0
  1153. /package/src/{widgets-v2 → widgets}/utils/merge-options.ts +0 -0
  1154. /package/src/widgets/utils/{chart-config/option-builders.test.ts → option-builders.test.ts} +0 -0
  1155. /package/src/widgets/utils/{chart-config/option-builders.ts → option-builders.ts} +0 -0
  1156. /package/src/{widgets-v2 → widgets}/utils/resolve-theme-color.test.ts +0 -0
  1157. /package/src/{widgets-v2 → widgets}/utils/resolve-theme-color.ts +0 -0
  1158. /package/src/{widgets-v2 → widgets}/wrapper/labels.ts +0 -0
  1159. /package/src/{widgets-v2 → widgets}/wrapper/widget-actions.test.tsx +0 -0
  1160. /package/src/{widgets-v2 → widgets}/wrapper/widget-content.test.tsx +0 -0
  1161. /package/src/{widgets-v2 → widgets}/wrapper/widget-content.tsx +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"file":"widget-store-BFPKYm4R.js","names":[],"sources":["../src/widgets/stores/widget-store.ts"],"sourcesContent":["import { create } from 'zustand'\nimport type {\n WidgetState,\n WidgetStore,\n ToolRegistration,\n WidgetStoreActions,\n} from './types'\n\n// Track active pipeline executions for cancellation\nconst activePipelines = new Map<string, number>()\nconst activeConfigPipelines = new Map<string, number>()\n\n/**\n * Zustand store for managing widget state across the application.\n *\n * Provides centralized state management for all widget UI components, including\n * data/config transformation pipelines via registered tools.\n *\n * **Performance optimizations:**\n * - `registerTool` skips the store update when structural properties (order, enabled,\n * type, disables) haven't changed — only `fn` is updated via direct mutation,\n * avoiding a new `registeredTools` array reference and WidgetLoader pipeline cascades.\n * - `setToolEnabled` skips the store update when the enabled state is already the\n * requested value.\n * - `executeToolPipeline` / `executeConfigPipeline` skip the final `set()` when\n * the transformed data/config is referentially identical to what's already in the store.\n * - Both pipelines support cancellation — newer executions for the same widget\n * automatically cancel in-progress ones.\n *\n * @example Reading widget state (prefer useWidgetSelector for performance)\n * ```tsx\n * import { useWidgetSelector } from '@carto/ps-react-ui/widgets'\n *\n * function MyWidget({ id }: { id: string }) {\n * const { title, data } = useWidgetSelector(id, (w) => ({\n * title: w?.title,\n * data: w?.data,\n * }))\n * return <div>{title}: {JSON.stringify(data)}</div>\n * }\n * ```\n *\n * @example Writing widget state\n * ```tsx\n * import { widgetStoreActions } from '@carto/ps-react-ui/widgets'\n *\n * const { setWidget } = widgetStoreActions\n * setWidget('my-widget', { type: 'formula', isLoading: false, data: { value: 1000 } })\n * ```\n */\nexport const useWidgetStore = create<WidgetStore>()((set, get) => ({\n // State\n widgets: {},\n\n // Actions\n\n /** Merges partial state into the widget entry. Creates the widget if it doesn't exist. */\n setWidget: (id, widget) => {\n set((state) => {\n const prev = state.widgets[id] ?? ({} as WidgetStore['widgets'][string])\n return {\n widgets: {\n ...state.widgets,\n [id]: {\n ...prev,\n ...widget,\n id,\n },\n },\n }\n })\n },\n\n removeWidget: (id) =>\n set((state) => {\n const widgets = { ...state.widgets }\n\n delete widgets[id]\n\n return { widgets }\n }),\n\n clearWidgets: () =>\n set({\n widgets: {},\n }),\n\n getWidget: <T extends WidgetState>(id: string) => {\n return get().widgets[id] as T | undefined\n },\n\n /**\n * Registers a transformation tool for a widget's data or config pipeline.\n *\n * **No-op optimization:** When a tool with the same `id` already exists and its\n * structural properties (`order`, `enabled`, `type`, `disables`) are unchanged,\n * only `fn` is updated via direct mutation — no store update is triggered. This\n * allows action components to include all reactive dependencies in their\n * `useEffect` arrays without causing WidgetLoader pipeline cascades.\n */\n registerTool: (widgetId: string, tool: ToolRegistration) => {\n const current = get().widgets[widgetId]\n const existingTool = current?.registeredTools?.find(\n (t: ToolRegistration) => t.id === tool.id,\n )\n\n // No-op: structural properties unchanged — update fn via direct mutation.\n // Safe because fn is only consumed imperatively during pipeline execution.\n if (\n existingTool?.order === tool.order &&\n existingTool.enabled === tool.enabled &&\n existingTool.type === tool.type &&\n existingTool.disables === tool.disables\n ) {\n existingTool.fn = tool.fn\n return\n }\n\n set((state) => {\n const widget = state.widgets[widgetId] ?? ({} as WidgetState)\n const registeredTools = widget.registeredTools ?? []\n\n // Remove existing tool with same id if present\n const filteredTools = registeredTools.filter(\n (t: ToolRegistration) => t.id !== tool.id,\n )\n\n return {\n widgets: {\n ...state.widgets,\n [widgetId]: {\n ...widget,\n id: widgetId,\n registeredTools: [...filteredTools, tool],\n },\n },\n }\n })\n },\n\n unregisterTool: (widgetId: string, toolId: string) =>\n set((state) => {\n const current = state.widgets[widgetId]\n if (!current) return state\n\n const registeredTools = current.registeredTools ?? []\n const filteredTools = registeredTools.filter(\n (t: ToolRegistration) => t.id !== toolId,\n )\n\n return {\n widgets: {\n ...state.widgets,\n [widgetId]: {\n ...current,\n registeredTools: filteredTools,\n },\n },\n }\n }),\n\n /**\n * Triggers pipeline re-execution by creating a new `registeredTools` reference.\n * This is a lightweight operation that only bumps the array reference without\n * modifying any tool.\n */\n triggerToolPipeline: (widgetId: string) =>\n set((state) => {\n const widget = state.widgets[widgetId]\n if (!widget) return state\n\n return {\n widgets: {\n ...state.widgets,\n [widgetId]: {\n ...widget,\n registeredTools: [...(widget.registeredTools ?? [])],\n },\n },\n }\n }),\n\n /**\n * Updates a tool's enabled state.\n *\n * **No-op optimization:** Skips the store update if the tool already has the\n * requested enabled value.\n */\n setToolEnabled: (widgetId: string, toolId: string, enabled: boolean) => {\n const current = get().widgets[widgetId]\n if (current) {\n const tool = current.registeredTools?.find(\n (t: ToolRegistration) => t.id === toolId,\n )\n if (tool?.enabled === enabled) return\n }\n\n set((state) => {\n const widget = state.widgets[widgetId]\n if (!widget) return state\n\n const registeredTools = widget.registeredTools ?? []\n const updatedTools = registeredTools.map((tool: ToolRegistration) =>\n tool.id === toolId ? { ...tool, enabled } : tool,\n )\n\n return {\n widgets: {\n ...state.widgets,\n [widgetId]: {\n ...widget,\n registeredTools: updatedTools,\n },\n },\n }\n })\n },\n\n /**\n * Executes the data transformation pipeline for a widget.\n *\n * Filters to enabled data-type tools (respecting `disables`), sorts by `order`,\n * and chains their `fn` calls. Supports async tools.\n *\n * **Cancellation:** Newer executions for the same widget automatically cancel\n * in-progress ones via a version counter.\n *\n * **No-op optimization:** Skips the final `set()` if the transformed data is\n * referentially identical (`Object.is`) to what's already in the store.\n */\n executeToolPipeline: async (widgetId: string, sourceData: unknown) => {\n const widget = get().widgets[widgetId]\n if (!widget) return\n\n // Cancel any in-progress pipeline for this widget\n const currentExecution = (activePipelines.get(widgetId) ?? 0) + 1\n activePipelines.set(widgetId, currentExecution)\n\n const widgetWithTools = widget\n\n // Build set of tool IDs that should be disabled\n const disabledToolIds = new Set<string>()\n for (const tool of widgetWithTools.registeredTools ?? []) {\n if (tool.enabled && tool.disables) {\n tool.disables.forEach((id) => disabledToolIds.add(id))\n }\n }\n\n // Sort tools by order and filter enabled data-only tools, excluding disabled tools\n const sortedTools = [...(widgetWithTools.registeredTools ?? [])]\n .filter(\n (tool) =>\n (tool.type ?? 'data') === 'data' &&\n tool.enabled &&\n !disabledToolIds.has(tool.id),\n )\n .sort((a, b) => a.order - b.order)\n\n // Execute pipeline - handle both sync and async tools\n let transformedData = sourceData\n for (const tool of sortedTools) {\n // Check if this execution was cancelled\n if (activePipelines.get(widgetId) !== currentExecution) {\n return\n }\n\n try {\n // Call tool function (may return Promise or direct value)\n transformedData = await tool.fn(transformedData)\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(`Tool ${tool.id} failed for widget ${widgetId}:`, error)\n // Continue with current data to prevent one tool from breaking all\n }\n }\n\n // Skip store update if neither data nor sourceData changed\n const widgetAfter = get().widgets[widgetId]\n if (\n widgetAfter &&\n Object.is(widgetAfter.data, transformedData) &&\n Object.is(widgetAfter.sourceData, sourceData)\n ) {\n if (activePipelines.get(widgetId) === currentExecution) {\n activePipelines.delete(widgetId)\n }\n return\n }\n\n // Single store update with final transformed data\n set((state) => {\n const currentWidget = state.widgets[widgetId]\n if (!currentWidget) return state\n\n return {\n widgets: {\n ...state.widgets,\n [widgetId]: {\n ...currentWidget,\n sourceData,\n data: transformedData,\n },\n },\n }\n })\n\n // Clean up tracking\n if (activePipelines.get(widgetId) === currentExecution) {\n activePipelines.delete(widgetId)\n }\n },\n\n /**\n * Executes the config transformation pipeline for a widget.\n *\n * Filters to enabled config-type tools (respecting `disables`), sorts by `order`,\n * and chains their `fn` calls. The transformed config is spread into the widget state.\n *\n * **Cancellation:** Newer executions for the same widget automatically cancel\n * in-progress ones via a version counter.\n *\n * **No-op optimization:** Skips the final `set()` when the config object is unchanged\n * and all its properties already match what's in the store.\n */\n executeConfigPipeline: async (widgetId: string, baseConfig: object) => {\n const widget = get().widgets[widgetId]\n if (!widget) return\n\n // Cancel any in-progress config pipeline for this widget\n const currentExecution = (activeConfigPipelines.get(widgetId) ?? 0) + 1\n activeConfigPipelines.set(widgetId, currentExecution)\n\n // Build set of tool IDs that should be disabled (cross-type disabling works)\n const disabledToolIds = new Set<string>()\n for (const tool of widget.registeredTools ?? []) {\n if (tool.enabled && tool.disables) {\n tool.disables.forEach((id) => disabledToolIds.add(id))\n }\n }\n\n // Filter to config tools only, sort by order\n const sortedTools = [...(widget.registeredTools ?? [])]\n .filter(\n (tool) =>\n tool.type === 'config' &&\n tool.enabled &&\n !disabledToolIds.has(tool.id),\n )\n .sort((a, b) => a.order - b.order)\n\n // Chain config tools\n let transformedConfig: unknown = baseConfig\n for (const tool of sortedTools) {\n if (activeConfigPipelines.get(widgetId) !== currentExecution) {\n return\n }\n\n try {\n transformedConfig = await tool.fn(transformedConfig)\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(\n `Config tool ${tool.id} failed for widget ${widgetId}:`,\n error,\n )\n }\n }\n\n // Build a patch that only includes properties the pipeline should set.\n // A property is applied when:\n // 1. A config tool explicitly changed it (transformedConfig[k] !== baseConfig[k])\n // 2. First pipeline run for this widget (no _lastConfig yet)\n // 3. The widget value still matches what the pipeline last set — meaning the\n // user hasn't modified it via setWidget, so it's safe to overwrite.\n // A property is SKIPPED when the widget value differs from _lastConfig,\n // meaning the user (or a hook) changed it since the last pipeline run.\n const base = baseConfig as Record<string, unknown>\n const result = transformedConfig as Record<string, unknown>\n const widgetNow = get().widgets[widgetId] as unknown as Record<\n string,\n unknown\n >\n const lastConfig = widgetNow?._lastConfig as\n Record<string, unknown> | undefined\n\n const patch: Record<string, unknown> = {}\n for (const key of Object.keys(result)) {\n const toolChanged = !Object.is(result[key], base[key])\n const isFirstRun = !lastConfig || !(key in lastConfig)\n const userUnmodified =\n !isFirstRun && Object.is(widgetNow[key], lastConfig[key])\n\n if (toolChanged || isFirstRun || userUnmodified) {\n patch[key] = result[key]\n }\n }\n\n // Skip store update if every patch value already matches the widget\n const hasChanges = Object.keys(patch).some(\n (k) => !Object.is(widgetNow?.[k], patch[k]),\n )\n const configRefChanged = !Object.is(transformedConfig, lastConfig)\n\n if (!hasChanges && !configRefChanged) {\n if (activeConfigPipelines.get(widgetId) === currentExecution) {\n activeConfigPipelines.delete(widgetId)\n }\n return\n }\n\n // Apply the patch and store the pipeline output for next run's comparison\n set((state) => {\n const currentWidget = state.widgets[widgetId]\n if (!currentWidget) return state\n\n return {\n widgets: {\n ...state.widgets,\n [widgetId]: {\n ...currentWidget,\n ...patch,\n _lastConfig: transformedConfig,\n },\n },\n }\n })\n\n if (activeConfigPipelines.get(widgetId) === currentExecution) {\n activeConfigPipelines.delete(widgetId)\n }\n },\n}))\n\n/**\n * Stable references to store actions, accessible without creating a subscription.\n *\n * Use this instead of `useWidgetStore((state) => state.setWidget)` to avoid\n * unnecessary subscriber evaluations. Actions are stable functions that never\n * change, so subscribing to them wastes cycles on every store update.\n *\n * @example\n * ```tsx\n * import { widgetStoreActions } from '@carto/ps-react-ui/widgets'\n *\n * const { setWidget, registerTool } = widgetStoreActions\n *\n * useEffect(() => {\n * registerTool(id, { id: 'my-tool', order: 10, enabled: true, fn: (d) => d })\n * return () => widgetStoreActions.unregisterTool(id, 'my-tool')\n * }, [id])\n * ```\n */\nexport const widgetStoreActions: WidgetStoreActions = {\n get setWidget() {\n return useWidgetStore.getState().setWidget\n },\n get removeWidget() {\n return useWidgetStore.getState().removeWidget\n },\n get clearWidgets() {\n return useWidgetStore.getState().clearWidgets\n },\n get getWidget() {\n return useWidgetStore.getState().getWidget\n },\n get registerTool() {\n return useWidgetStore.getState().registerTool\n },\n get unregisterTool() {\n return useWidgetStore.getState().unregisterTool\n },\n get setToolEnabled() {\n return useWidgetStore.getState().setToolEnabled\n },\n get triggerToolPipeline() {\n return useWidgetStore.getState().triggerToolPipeline\n },\n get executeToolPipeline() {\n return useWidgetStore.getState().executeToolPipeline\n },\n get executeConfigPipeline() {\n return useWidgetStore.getState().executeConfigPipeline\n },\n} as WidgetStoreActions\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"category.js","names":["{\n value,\n maxValue,\n color,\n selected = true,\n}: CategoryBarProps","selected = true","selected\n ? { ...styles.barFill, width: `${percentage}%`, backgroundColor: color }\n : { ...styles.barFill, ...styles.barFillMuted, width: `${percentage}%` }","<Box sx={styles.bar}>\n <Box sx={barFillSx} />\n </Box>","{\n name,\n value,\n maxValue,\n color,\n formatter,\n labelFormatter,\n onClick,\n selected = true,\n}: CategoryRowSingleProps","selected = true","onClick\n ? () =>\n onClick({\n name,\n })\n : undefined","labelFormatter ? labelFormatter(name) : name","<Typography sx={styles.rowLabel}>\n {labelFormatter ? labelFormatter(name) : name}\n </Typography>","formatter(value)","<Typography sx={styles.rowValue}>{formatter(value)}</Typography>","<Box sx={styles.rowHeader}>\n <Typography sx={styles.rowLabel}>\n {labelFormatter ? labelFormatter(name) : name}\n </Typography>\n <Typography sx={styles.rowValue}>{formatter(value)}</Typography>\n </Box>","<CategoryBar\n value={value}\n maxValue={maxValue}\n color={color}\n selected={selected}\n />","<Box sx={rowStyle} onClick={handleClick}>\n <Box sx={styles.rowHeader}>\n <Typography sx={styles.rowLabel}>\n {labelFormatter ? labelFormatter(name) : name}\n </Typography>\n <Typography sx={styles.rowValue}>{formatter(value)}</Typography>\n </Box>\n <CategoryBar\n value={value}\n maxValue={maxValue}\n color={color}\n selected={selected}\n />\n </Box>","{\n name,\n values,\n maxValue,\n colors,\n formatter,\n labelFormatter,\n onClick,\n selected = true,\n}: CategoryRowMultiProps","selected = true","onClick ? () => onClick({ name }) : undefined","labelFormatter ? labelFormatter(name) : name","<Typography sx={styles.rowLabel}>\n {labelFormatter ? labelFormatter(name) : name}\n </Typography>","values.map((value, index) => (\n <Box key={`${name}-${value}-${index}`} sx={styles.multiBarRow}>\n <Box sx={styles.multiBarContainer}>\n <CategoryBar\n value={value}\n maxValue={maxValue}\n color={colors[index % colors.length] ?? ''}\n selected={selected}\n />\n </Box>\n <Typography sx={styles.multiBarValue}>\n {formatter(value)}\n </Typography>\n </Box>\n ))","colors.length","(value, index) => (\n <Box key={`${name}-${value}-${index}`} sx={styles.multiBarRow}>\n <Box sx={styles.multiBarContainer}>\n <CategoryBar\n value={value}\n maxValue={maxValue}\n color={colors[index % colors.length] ?? ''}\n selected={selected}\n />\n </Box>\n <Typography sx={styles.multiBarValue}>\n {formatter(value)}\n </Typography>\n </Box>\n )","<Box sx={styles.barContainer}>\n {values.map((value, index) => (\n <Box key={`${name}-${value}-${index}`} sx={styles.multiBarRow}>\n <Box sx={styles.multiBarContainer}>\n <CategoryBar\n value={value}\n maxValue={maxValue}\n color={colors[index % colors.length] ?? ''}\n selected={selected}\n />\n </Box>\n <Typography sx={styles.multiBarValue}>\n {formatter(value)}\n </Typography>\n </Box>\n ))}\n </Box>","<Box sx={rowStyle} onClick={handleClick}>\n <Typography sx={styles.rowLabel}>\n {labelFormatter ? labelFormatter(name) : name}\n </Typography>\n <Box sx={styles.barContainer}>\n {values.map((value, index) => (\n <Box key={`${name}-${value}-${index}`} sx={styles.multiBarRow}>\n <Box sx={styles.multiBarContainer}>\n <CategoryBar\n value={value}\n maxValue={maxValue}\n color={colors[index % colors.length] ?? ''}\n selected={selected}\n />\n </Box>\n <Typography sx={styles.multiBarValue}>\n {formatter(value)}\n </Typography>\n </Box>\n ))}\n </Box>\n </Box>","{\n hiddenCount,\n otherLabel = 'Other',\n otherCountLabel = '{count} more',\n}: CategoryRowOtherProps","otherLabel = 'Other'","otherCountLabel = '{count} more'","otherCountLabel.replace('{count}', String(hiddenCount))","<Typography sx={styles.otherLabel}>{otherLabel}</Typography>","<Typography sx={styles.otherCount}>({countText})</Typography>","<Box sx={styles.otherRow}>\n <Typography sx={styles.otherLabel}>{otherLabel}</Typography>\n <Typography sx={styles.otherCount}>({countText})</Typography>\n </Box>","{ series, colors }: CategoryLegendProps","series.map((item, index) => (\n <Box key={item.name} sx={styles.legendItem}>\n <Box\n sx={{\n ...styles.legendDot,\n backgroundColor: item.color ?? colors[index % colors.length],\n }}\n />\n <Typography sx={styles.legendLabel}>{item.name}</Typography>\n </Box>\n ))","colors.length","(item, index) => (\n <Box key={item.name} sx={styles.legendItem}>\n <Box\n sx={{\n ...styles.legendDot,\n backgroundColor: item.color ?? colors[index % colors.length],\n }}\n />\n <Typography sx={styles.legendLabel}>{item.name}</Typography>\n </Box>\n )","<Box sx={styles.legend}>\n {series.map((item, index) => (\n <Box key={item.name} sx={styles.legendItem}>\n <Box\n sx={{\n ...styles.legendDot,\n backgroundColor: item.color ?? colors[index % colors.length],\n }}\n />\n <Typography sx={styles.legendLabel}>{item.name}</Typography>\n </Box>\n ))}\n </Box>","{ id }: CategoryUIProps","(w) => {\n const cw = w as CategoryWidgetState | undefined\n return {\n _formatter: cw?.formatter,\n _labelFormatter: cw?.labelFormatter,\n _series: cw?.series,\n data: cw?.data,\n maxItems: cw?.maxItems,\n labels: cw?.labels,\n onRowClick: cw?.onRowClick,\n selected: cw?.selected,\n max: cw?.max,\n }\n }","_series ?? []","series.length > 0\n ? series.map(\n (s, index: number) =>\n s.color ??\n qualitativeColors[index % qualitativeColors.length] ??\n theme.palette.secondary.main,\n )\n : [theme.palette.secondary.main]","bold","secondary","series.length","Box","styles.list","{ maxHeight, overflow: hiddenCount === 0 ? 'auto' : 'hidden' }","isMulti\n ? visibleData.map((item) => (\n <CategoryRowMulti\n key={item.name}\n name={item.name}\n values={item.values}\n maxValue={maxValue}\n colors={colors}\n formatter={formatter}\n labelFormatter={labelFormatter}\n onClick={onRowClick}\n selected={selected?.(item.name) ?? true}\n />\n ))\n : visibleData.map((item) => (\n <CategoryRowSingle\n key={item.name}\n name={item.name}\n value={item.values[0] ?? 0}\n selected={selected?.(item.name) ?? true}\n maxValue={maxValue}\n color={colors[0]!}\n formatter={formatter}\n labelFormatter={labelFormatter}\n onClick={onRowClick}\n />\n ))","ref","{\n ...styles.root,\n }","length","(item) => item.values","hiddenCount === 0 ? 'auto' : 'hidden'","item","hiddenCount > 0 && (\n <CategoryRowOther\n hiddenCount={hiddenCount}\n otherLabel={labels?.other}\n otherCountLabel={labels?.otherCount}\n />\n )","other","otherCount","<Box\n sx={styles.list}\n style={{ maxHeight, overflow: hiddenCount === 0 ? 'auto' : 'hidden' }}\n >\n {isMulti\n ? visibleData.map((item) => (\n <CategoryRowMulti\n key={item.name}\n name={item.name}\n values={item.values}\n maxValue={maxValue}\n colors={colors}\n formatter={formatter}\n labelFormatter={labelFormatter}\n onClick={onRowClick}\n selected={selected?.(item.name) ?? true}\n />\n ))\n : visibleData.map((item) => (\n <CategoryRowSingle\n key={item.name}\n name={item.name}\n value={item.values[0] ?? 0}\n selected={selected?.(item.name) ?? true}\n maxValue={maxValue}\n color={colors[0]!}\n formatter={formatter}\n labelFormatter={labelFormatter}\n onClick={onRowClick}\n />\n ))}\n {hiddenCount > 0 && (\n <CategoryRowOther\n hiddenCount={hiddenCount}\n otherLabel={labels?.other}\n otherCountLabel={labels?.otherCount}\n />\n )}\n </Box>","series.length > 0 && <CategoryLegend series={series} colors={colors} />","<Box\n ref={ref}\n sx={{\n ...styles.root,\n }}\n >\n <Box\n sx={styles.list}\n style={{ maxHeight, overflow: hiddenCount === 0 ? 'auto' : 'hidden' }}\n >\n {isMulti\n ? visibleData.map((item) => (\n <CategoryRowMulti\n key={item.name}\n name={item.name}\n values={item.values}\n maxValue={maxValue}\n colors={colors}\n formatter={formatter}\n labelFormatter={labelFormatter}\n onClick={onRowClick}\n selected={selected?.(item.name) ?? true}\n />\n ))\n : visibleData.map((item) => (\n <CategoryRowSingle\n key={item.name}\n name={item.name}\n value={item.values[0] ?? 0}\n selected={selected?.(item.name) ?? true}\n maxValue={maxValue}\n color={colors[0]!}\n formatter={formatter}\n labelFormatter={labelFormatter}\n onClick={onRowClick}\n />\n ))}\n {hiddenCount > 0 && (\n <CategoryRowOther\n hiddenCount={hiddenCount}\n otherLabel={labels?.other}\n otherCountLabel={labels?.otherCount}\n />\n )}\n </Box>\n {series.length > 0 && <CategoryLegend series={series} colors={colors} />}\n </Box>","<Box sx={styles.list} aria-label='Category skeleton'>\n {Array.from({ length: 5 }).map((_, index) => (\n <Box key={index} sx={styles.row}>\n <Box sx={styles.rowHeader}>\n <Skeleton width={80} height={16} />\n <Skeleton width={40} height={16} />\n </Box>\n <Skeleton\n variant='rectangular'\n height={4}\n sx={{ borderRadius: 2, width: `${widthPatterns[index]}%` }}\n />\n </Box>\n ))}\n </Box>","(_, index) => (\n <Box key={index} sx={styles.row}>\n <Box sx={styles.rowHeader}>\n <Skeleton width={80} height={16} />\n <Skeleton width={40} height={16} />\n </Box>\n <Skeleton\n variant='rectangular'\n height={4}\n sx={{ borderRadius: 2, width: `${widthPatterns[index]}%` }}\n />\n </Box>\n )"],"sources":["../../src/widgets/category/style.ts","../../src/widgets/category/components/category-bar.tsx","../../src/widgets/category/components/category-row-single.tsx","../../src/widgets/category/components/category-row-multi.tsx","../../src/widgets/category/components/category-row-other.tsx","../../src/widgets/category/components/category-legend.tsx","../../src/widgets/category/category-ui.tsx","../../src/widgets/category/skeleton.tsx","../../src/widgets/category/config.ts"],"sourcesContent":["import type { SxProps, Theme } from '@mui/material'\n\nexport const styles = {\n root: {\n display: 'flex',\n flexDirection: 'column',\n position: 'relative',\n width: '100%',\n },\n list: {\n display: 'flex',\n flexDirection: 'column',\n gap: (theme: Theme) => theme.spacing(1),\n },\n row: {\n display: 'flex',\n flexDirection: 'column',\n gap: (theme: Theme) => theme.spacing(0.5),\n pointerEvents: 'none',\n },\n rowClickable: {\n pointerEvents: 'auto',\n // display: 'flex',\n // flexDirection: 'column',\n // gap: (theme: Theme) => theme.spacing(0.5),\n // cursor: 'pointer',\n // borderRadius: 1,\n // padding: (theme: Theme) => theme.spacing(0.5),\n // margin: (theme: Theme) => theme.spacing(-0.5),\n // transition: 'background-color 0.15s ease-in-out',\n // '&:hover': {\n // backgroundColor: (theme: Theme) => theme.palette.action.hover,\n // },\n },\n rowHeader: {\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n },\n rowLabel: {\n typography: 'body2',\n fontWeight: 'medium',\n color: 'text.primary',\n },\n rowValue: {\n typography: 'body2',\n color: 'text.secondary',\n },\n barContainer: {\n display: 'flex',\n flexDirection: 'column',\n },\n bar: {\n height: 4,\n borderRadius: 2,\n backgroundColor: (theme: Theme) => theme.palette.action.disabledBackground,\n overflow: 'hidden',\n position: 'relative',\n transition: 'background-color 0.15s ease-in-out',\n cursor: 'pointer',\n '&:hover': {\n backgroundColor: (theme: Theme) => theme.palette.action.hover,\n\n '& > div': {\n filter: 'brightness(1.2)',\n },\n },\n },\n barFill: {\n height: '100%',\n borderRadius: 2,\n transition: 'width 0.3s ease-in-out, background-color 0.15s ease-in-out',\n },\n barFillMuted: {\n backgroundColor: (theme: Theme) => theme.palette.action.disabled,\n },\n legend: {\n display: 'flex',\n alignItems: 'center',\n gap: (theme: Theme) => theme.spacing(2),\n flexWrap: 'wrap',\n paddingTop: (theme: Theme) => theme.spacing(2),\n position: 'sticky',\n bottom: 0,\n backgroundColor: 'background.paper',\n borderTop: (theme: Theme) => `1px solid ${theme.palette.divider}`,\n marginTop: (theme: Theme) => theme.spacing(2),\n },\n legendItem: {\n display: 'flex',\n alignItems: 'center',\n gap: (theme: Theme) => theme.spacing(1),\n },\n legendDot: {\n width: 8,\n height: 8,\n borderRadius: '50%',\n },\n legendLabel: {\n typography: 'caption',\n color: 'text.secondary',\n textTransform: 'uppercase',\n fontWeight: 'medium',\n },\n multiBarRow: {\n display: 'flex',\n alignItems: 'center',\n gap: (theme: Theme) => theme.spacing(1),\n },\n multiBarValue: {\n typography: 'body2',\n color: 'text.secondary',\n minWidth: 48,\n textAlign: 'right',\n },\n multiBarContainer: {\n flex: 1,\n },\n otherRow: {\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n },\n otherLabel: {\n typography: 'body2',\n fontWeight: 'medium',\n color: 'text.secondary',\n fontStyle: 'italic',\n },\n otherCount: {\n typography: 'body2',\n color: 'text.disabled',\n },\n} satisfies Record<string, SxProps<Theme>>\n","import { Box } from '@mui/material'\nimport { styles } from '../style'\n\nexport interface CategoryBarProps {\n value: number\n maxValue: number\n color: string\n selected?: boolean\n}\n\n/**\n * Renders a single horizontal bar fill proportional to its value relative to the maximum.\n */\nexport function CategoryBar({\n value,\n maxValue,\n color,\n selected = true,\n}: CategoryBarProps) {\n const percentage = maxValue > 0 ? (value / maxValue) * 100 : 0\n\n const barFillSx = selected\n ? { ...styles.barFill, width: `${percentage}%`, backgroundColor: color }\n : { ...styles.barFill, ...styles.barFillMuted, width: `${percentage}%` }\n\n return (\n <Box sx={styles.bar}>\n <Box sx={barFillSx} />\n </Box>\n )\n}\n","import { Box, Typography } from '@mui/material'\nimport { styles } from '../style'\nimport { CategoryBar } from './category-bar'\nimport type { CategoryWidgetConfig } from '../types'\n\nexport interface CategoryRowSingleProps {\n name: string\n value: number\n maxValue: number\n color: string\n formatter: NonNullable<CategoryWidgetConfig['formatter']>\n labelFormatter?: CategoryWidgetConfig['labelFormatter']\n onClick?: CategoryWidgetConfig['onRowClick']\n selected?: boolean\n}\n\n/**\n * Renders a single-series category row with a label, formatted value, and proportional bar.\n */\nexport function CategoryRowSingle({\n name,\n value,\n maxValue,\n color,\n formatter,\n labelFormatter,\n onClick,\n selected = true,\n}: CategoryRowSingleProps) {\n const handleClick = onClick\n ? () =>\n onClick({\n name,\n })\n : undefined\n const rowStyle = onClick ? styles.rowClickable : styles.row\n\n return (\n <Box sx={rowStyle} onClick={handleClick}>\n <Box sx={styles.rowHeader}>\n <Typography sx={styles.rowLabel}>\n {labelFormatter ? labelFormatter(name) : name}\n </Typography>\n <Typography sx={styles.rowValue}>{formatter(value)}</Typography>\n </Box>\n <CategoryBar\n value={value}\n maxValue={maxValue}\n color={color}\n selected={selected}\n />\n </Box>\n )\n}\n","import { Box, Typography } from '@mui/material'\nimport { styles } from '../style'\nimport { CategoryBar } from './category-bar'\nimport type { CategoryWidgetConfig } from '../types'\n\nexport interface CategoryRowMultiProps {\n name: string\n values: number[]\n maxValue: number\n colors: string[]\n formatter: NonNullable<CategoryWidgetConfig['formatter']>\n labelFormatter?: CategoryWidgetConfig['labelFormatter']\n onClick?: CategoryWidgetConfig['onRowClick']\n selected?: boolean\n}\n\n/**\n * Renders a multi-series category row with a label and multiple color-coded bars stacked vertically.\n */\nexport function CategoryRowMulti({\n name,\n values,\n maxValue,\n colors,\n formatter,\n labelFormatter,\n onClick,\n selected = true,\n}: CategoryRowMultiProps) {\n const handleClick = onClick ? () => onClick({ name }) : undefined\n const rowStyle = onClick ? styles.rowClickable : styles.row\n\n return (\n <Box sx={rowStyle} onClick={handleClick}>\n <Typography sx={styles.rowLabel}>\n {labelFormatter ? labelFormatter(name) : name}\n </Typography>\n <Box sx={styles.barContainer}>\n {values.map((value, index) => (\n <Box key={`${name}-${value}-${index}`} sx={styles.multiBarRow}>\n <Box sx={styles.multiBarContainer}>\n <CategoryBar\n value={value}\n maxValue={maxValue}\n color={colors[index % colors.length] ?? ''}\n selected={selected}\n />\n </Box>\n <Typography sx={styles.multiBarValue}>\n {formatter(value)}\n </Typography>\n </Box>\n ))}\n </Box>\n </Box>\n )\n}\n","import { Box, Typography } from '@mui/material'\nimport { styles } from '../style'\n\nexport interface CategoryRowOtherProps {\n hiddenCount: number\n otherLabel?: string\n otherCountLabel?: string\n}\n\n/**\n * Renders an \"Other\" summary row indicating how many additional categories are hidden beyond `maxItems`.\n */\nexport function CategoryRowOther({\n hiddenCount,\n otherLabel = 'Other',\n otherCountLabel = '{count} more',\n}: CategoryRowOtherProps) {\n const countText = otherCountLabel.replace('{count}', String(hiddenCount))\n\n return (\n <Box sx={styles.otherRow}>\n <Typography sx={styles.otherLabel}>{otherLabel}</Typography>\n <Typography sx={styles.otherCount}>({countText})</Typography>\n </Box>\n )\n}\n","import { Box, Typography } from '@mui/material'\nimport { styles } from '../style'\nimport type { CategorySeriesConfig } from '../types'\n\nexport interface CategoryLegendProps {\n series: CategorySeriesConfig[]\n colors: string[]\n}\n\n/**\n * Renders a color-coded legend for multi-series category widgets.\n */\nexport function CategoryLegend({ series, colors }: CategoryLegendProps) {\n if (series.length === 0) {\n return null\n }\n\n return (\n <Box sx={styles.legend}>\n {series.map((item, index) => (\n <Box key={item.name} sx={styles.legendItem}>\n <Box\n sx={{\n ...styles.legendDot,\n backgroundColor: item.color ?? colors[index % colors.length],\n }}\n />\n <Typography sx={styles.legendLabel}>{item.name}</Typography>\n </Box>\n ))}\n </Box>\n )\n}\n","import { Box, useTheme } from '@mui/material'\nimport { useWidgetSelector } from '../stores/use-widget-selector'\nimport { styles } from './style'\nimport type { CategoryUIProps, CategoryWidgetState } from './types'\nimport { CategoryRowSingle } from './components/category-row-single'\nimport { CategoryRowMulti } from './components/category-row-multi'\nimport { CategoryRowOther } from './components/category-row-other'\nimport { CategoryLegend } from './components/category-legend'\nimport { useState } from 'react'\nimport { defaultFormatter, defaultLabelFormatter } from '../utils/formatter'\nimport { useWidgetRef } from '../../hooks'\n\n/**\n * Renders a category widget displaying horizontal bars for categorical data with support for single and multi-series layouts, selection, and overflow grouping.\n */\nexport function CategoryUI({ id }: CategoryUIProps) {\n const { ref } = useWidgetRef<HTMLDivElement>(id)\n const theme = useTheme()\n\n // Single consolidated subscription instead of 9 separate ones.\n const {\n _formatter,\n _labelFormatter,\n _series,\n data,\n maxItems,\n labels,\n onRowClick,\n selected,\n max,\n } = useWidgetSelector(id, (w) => {\n const cw = w as CategoryWidgetState | undefined\n return {\n _formatter: cw?.formatter,\n _labelFormatter: cw?.labelFormatter,\n _series: cw?.series,\n data: cw?.data,\n maxItems: cw?.maxItems,\n labels: cw?.labels,\n onRowClick: cw?.onRowClick,\n selected: cw?.selected,\n max: cw?.max,\n }\n })\n\n const formatter = _formatter ?? defaultFormatter\n const labelFormatter = _labelFormatter ?? defaultLabelFormatter\n const series = _series ?? []\n\n const [maxHeight] = useState<string | number | undefined>(\n maxItems ? 40 * (series.length || 1) * maxItems : undefined,\n )\n\n const qualitativeColors = Object.values(theme.palette.qualitative.bold)\n\n const colors =\n series.length > 0\n ? series.map(\n (s, index: number) =>\n s.color ??\n qualitativeColors[index % qualitativeColors.length] ??\n theme.palette.secondary.main,\n )\n : [theme.palette.secondary.main]\n\n // Group data items by name to support multi-series display\n // data is CategoryDataItem[][] where data[seriesIndex] contains items for that series\n const groupedData = generateGroupedData({ data })\n\n if (groupedData.length === 0) {\n return null\n }\n\n const maxValue =\n max ?? Math.max(...groupedData.flatMap((item) => item.values))\n\n // Slice data to maxItems and compute hidden count\n const visibleData =\n maxItems !== undefined && maxItems >= 0\n ? groupedData.slice(0, maxItems)\n : groupedData\n\n const hiddenCount = groupedData.length - visibleData.length\n const isMulti = series.length > 1\n\n return (\n <Box\n ref={ref}\n sx={{\n ...styles.root,\n }}\n >\n <Box\n sx={styles.list}\n style={{ maxHeight, overflow: hiddenCount === 0 ? 'auto' : 'hidden' }}\n >\n {isMulti\n ? visibleData.map((item) => (\n <CategoryRowMulti\n key={item.name}\n name={item.name}\n values={item.values}\n maxValue={maxValue}\n colors={colors}\n formatter={formatter}\n labelFormatter={labelFormatter}\n onClick={onRowClick}\n selected={selected?.(item.name) ?? true}\n />\n ))\n : visibleData.map((item) => (\n <CategoryRowSingle\n key={item.name}\n name={item.name}\n value={item.values[0] ?? 0}\n selected={selected?.(item.name) ?? true}\n maxValue={maxValue}\n color={colors[0]!}\n formatter={formatter}\n labelFormatter={labelFormatter}\n onClick={onRowClick}\n />\n ))}\n {hiddenCount > 0 && (\n <CategoryRowOther\n hiddenCount={hiddenCount}\n otherLabel={labels?.other}\n otherCountLabel={labels?.otherCount}\n />\n )}\n </Box>\n {series.length > 0 && <CategoryLegend series={series} colors={colors} />}\n </Box>\n )\n}\n\nfunction generateGroupedData({\n data,\n}: {\n data: { name: string; value: number }[][] | undefined\n}) {\n if (!data || data.length === 0) return []\n\n const seriesCount = Math.max(data.length, 1)\n const grouped = new Map<string, number[]>()\n const nameOrder: string[] = []\n\n // Iterate over each series (outer array)\n for (let seriesIndex = 0; seriesIndex < data.length; seriesIndex++) {\n const seriesData = data[seriesIndex]!\n for (const item of seriesData) {\n let values = grouped.get(item.name)\n if (!values) {\n values = new Array<number>(seriesCount).fill(0)\n grouped.set(item.name, values)\n nameOrder.push(item.name)\n }\n values[seriesIndex] = item.value\n }\n }\n\n return nameOrder.map((name) => ({\n name,\n values: grouped.get(name)!,\n }))\n}\n","import { Box, Skeleton } from '@mui/material'\nimport { styles } from './style'\n\nconst widthPatterns = [85, 70, 55, 75, 60]\n\nexport function CategorySkeleton() {\n return (\n <Box sx={styles.list} aria-label='Category skeleton'>\n {Array.from({ length: 5 }).map((_, index) => (\n <Box key={index} sx={styles.row}>\n <Box sx={styles.rowHeader}>\n <Skeleton width={80} height={16} />\n <Skeleton width={40} height={16} />\n </Box>\n <Skeleton\n variant='rectangular'\n height={4}\n sx={{ borderRadius: 2, width: `${widthPatterns[index]}%` }}\n />\n </Box>\n ))}\n </Box>\n )\n}\n","import { downloadToCSV, downloadToPNG, type DownloadItem } from '../actions'\nimport type { ConfigProps } from '../loader/types'\nimport type {\n CategoryWidgetConfig,\n CategoryWidgetData,\n CategorySeriesConfig,\n} from './types'\n\ninterface CategoryDownloadConfigProps extends ConfigProps {\n series?: CategorySeriesConfig[]\n}\n\n/**\n * Creates download configuration for category widgets, supporting PNG (screenshot) and CSV (data) exports. CSV output groups values by category across multiple series.\n *\n * @param props - Configuration with `refUI` reference and optional `series` for CSV column headers.\n * @returns Array of download items for use with the Download action.\n */\nexport function categoryDownloadConfig({\n refUI,\n series,\n}: CategoryDownloadConfigProps): DownloadItem<CategoryWidgetData>[] {\n return [\n {\n ...downloadToPNG,\n modifier: () => downloadToPNG.modifier(refUI),\n },\n {\n ...downloadToCSV,\n modifier: async (data) => {\n if (!data?.length || data[0]?.length === 0) {\n return downloadToCSV.modifier([])\n }\n\n // data is CategoryDataItem[][] where data[seriesIndex] contains items for that series\n const seriesCount = data.length\n const grouped = new Map<string, number[]>()\n const nameOrder: string[] = []\n\n // Iterate over each series (outer array)\n for (let seriesIndex = 0; seriesIndex < seriesCount; seriesIndex++) {\n const seriesData = data[seriesIndex]!\n for (const item of seriesData) {\n let values = grouped.get(item.name)\n if (!values) {\n values = new Array<number>(seriesCount).fill(0)\n grouped.set(item.name, values)\n nameOrder.push(item.name)\n }\n values[seriesIndex] = item.value\n }\n }\n\n // Build rows\n const rows = nameOrder.map((name) => [name, ...grouped.get(name)!])\n\n const isMulti = seriesCount > 1\n const headers = isMulti\n ? [\n 'Category',\n ...(series?.map((s: CategorySeriesConfig) => s.name) ??\n Array.from(\n { length: seriesCount },\n (_, i) => `Series ${i + 1}`,\n )),\n ]\n : ['Category', 'Value']\n\n return downloadToCSV.modifier([headers, ...rows])\n },\n },\n ]\n}\n\n/**\n * Returns the default configuration for category list widgets, including empty series and a default `maxItems` of 10.\n *\n * @returns Default category widget config.\n */\nexport function categoryConfig(): CategoryWidgetConfig {\n return {\n series: [],\n maxItems: 10,\n max: undefined,\n }\n}\n"],"mappings":"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"}
@@ -1,30 +0,0 @@
1
- import { t as e } from "../use-widget-selector-VSPhfhNm.js";
2
- import { c as t } from "react/compiler-runtime";
3
- import { Alert as n, AlertTitle as r } from "@mui/material";
4
- import { jsx as i, jsxs as a } from "react/jsx-runtime";
5
- //#region src/widgets/error/error.tsx
6
- function o(o) {
7
- let c = t(5), { id: l, children: u, title: d, description: f } = o, { isLoading: p, isFetching: m, error: h } = e(l, s);
8
- if (p || m) return u;
9
- if (h) {
10
- let e = d ?? h.title ?? "Error", t = f ?? h.message ?? "An error occurred while loading the widget. Please try again.", o;
11
- c[0] === e ? o = c[1] : (o = /* @__PURE__ */ i(r, { children: e }), c[0] = e, c[1] = o);
12
- let s;
13
- return c[2] !== t || c[3] !== o ? (s = /* @__PURE__ */ a(n, {
14
- severity: "error",
15
- children: [o, t]
16
- }), c[2] = t, c[3] = o, c[4] = s) : s = c[4], s;
17
- }
18
- return u;
19
- }
20
- function s(e) {
21
- return {
22
- isLoading: e?.isLoading,
23
- isFetching: e?.isFetching,
24
- error: e?.error
25
- };
26
- }
27
- //#endregion
28
- export { o as WidgetError };
29
-
30
- //# sourceMappingURL=error.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"error.js","names":["{\n id,\n children,\n title: titleProp,\n description,\n}: WidgetErrorProps","(w) => ({\n isLoading: w?.isLoading,\n isFetching: w?.isFetching,\n error: w?.error,\n })","<AlertTitle>{errorTitle}</AlertTitle>","<Alert severity='error'>\n <AlertTitle>{errorTitle}</AlertTitle>\n {errorMessage}\n </Alert>"],"sources":["../../src/widgets/error/error.tsx"],"sourcesContent":["import { Alert, AlertTitle } from '@mui/material'\nimport { useWidgetSelector } from '../stores/use-widget-selector'\nimport type { WidgetErrorProps } from './types'\n\n/**\n * Displays an error alert when a widget encounters an error during data loading. Reads error state from the widget store and hides errors during loading/fetching to prevent flashing.\n *\n * @example\n * ```tsx\n * <WidgetError id=\"my-widget\">\n * <WidgetContent />\n * </WidgetError>\n * ```\n */\nexport function WidgetError({\n id,\n children,\n title: titleProp,\n description,\n}: WidgetErrorProps) {\n // Single consolidated subscription instead of 3 separate ones.\n const { isLoading, isFetching, error } = useWidgetSelector(id, (w) => ({\n isLoading: w?.isLoading,\n isFetching: w?.isFetching,\n error: w?.error,\n }))\n\n // Don't show error during loading/fetching states\n if (isLoading || isFetching) {\n return children\n }\n\n // Show error UI if error exists\n if (error) {\n const errorTitle = titleProp ?? error.title ?? 'Error'\n const errorMessage =\n description ??\n error.message ??\n 'An error occurred while loading the widget. Please try again.'\n\n return (\n <Alert severity='error'>\n <AlertTitle>{errorTitle}</AlertTitle>\n {errorMessage}\n </Alert>\n )\n }\n\n // No error, render children\n return children\n}\n"],"mappings":";;;;;AAcA,SAAgB,EAAA,GAKK;eALO,EAC1B,OACA,aACA,OAAO,GACP,mBAJ0BA,GAOpB,EAAE,cAAW,eAAY,aAAU,EAAkB,GAAIC,CAI7D;CAGF,IAAI,KAAa,GACf,OAAO;CAIT,IAAI,GAAO;EACT,IAAM,IAAa,KAAa,EAAM,SAAS,SACzC,IACJ,KACA,EAAM,WACN,iEAIEC;EAAa,AAAA,EAAA,OAAA,gBAAb,IAAA,kBAAC,GAAD,EAAA,UAAa,EAAuB,CAAA,GAAvB,EAAA,KAAA;EADfC,IAAAA;EADF,OAGK,EAAA,OAAA,KAAA,EAAA,OADDD,KADF,IAAA,kBAAC,GAAD;GAAO,UAAS;GAAhB,UAAA,CACEA,GACC,CACI;MADJ,EAAA,KAAA,GADDA,EAAAA,KAAAA,yBADFC;CAKJ;CAGA,OAAO;AACT;AA7BiE,SAAA,EAAC,GAAA;CAAO,OAAA;EACrE,WAAW,GAAG;EACd,YAAY,GAAG;EACf,OAAO,GAAG;CACZ"}
@@ -1,66 +0,0 @@
1
- import { r as e } from "../rolldown-runtime-B0aSnxlc.js";
2
- import { t } from "../cjs-CBrZjPCj.js";
3
- import { n, t as r } from "../widget-store-BFPKYm4R.js";
4
- import { c as i } from "react/compiler-runtime";
5
- import { useEffect as a, useRef as o } from "react";
6
- //#region src/widgets/loader/loader.tsx
7
- function s(e) {
8
- let t = i(25), s;
9
- t[0] === e.id ? s = t[1] : (s = (t) => t.widgets[e.id]?.registeredTools, t[0] = e.id, t[1] = s);
10
- let c = r(s), l = o(e.data), u = o(e.config), d = o(!1), f;
11
- t[2] !== e.config || t[3] !== e.data ? (f = () => {
12
- l.current = e.data, u.current = e.config;
13
- }, t[2] = e.config, t[3] = e.data, t[4] = f) : f = t[4], a(f);
14
- let p, m;
15
- t[5] !== e.error || t[6] !== e.id || t[7] !== e.isFetching || t[8] !== e.isLoading || t[9] !== e.type ? (p = () => {
16
- n.setWidget(e.id, {
17
- type: e.type,
18
- isLoading: e.isLoading ?? !1,
19
- isFetching: e.isFetching ?? !1,
20
- error: e.error
21
- });
22
- }, m = [
23
- e.id,
24
- e.type,
25
- e.isLoading,
26
- e.isFetching,
27
- e.error
28
- ], t[5] = e.error, t[6] = e.id, t[7] = e.isFetching, t[8] = e.isLoading, t[9] = e.type, t[10] = p, t[11] = m) : (p = t[10], m = t[11]), a(p, m);
29
- let h, g;
30
- t[12] !== e.config || t[13] !== e.id ? (h = () => {
31
- e.config && n.executeConfigPipeline(e.id, e.config);
32
- }, g = [e.id, e.config], t[12] = e.config, t[13] = e.id, t[14] = h, t[15] = g) : (h = t[14], g = t[15]), a(h, g);
33
- let _, v;
34
- t[16] !== e.data || t[17] !== e.id ? (_ = () => {
35
- n.executeToolPipeline(e.id, e.data);
36
- }, v = [e.id, e.data], t[16] = e.data, t[17] = e.id, t[18] = _, t[19] = v) : (_ = t[18], v = t[19]), a(_, v);
37
- let y;
38
- t[20] === e.id ? y = t[21] : (y = () => {
39
- if (!d.current) {
40
- d.current = !0;
41
- return;
42
- }
43
- let t = requestAnimationFrame(() => {
44
- let { executeToolPipeline: t, executeConfigPipeline: r } = n;
45
- t(e.id, l.current), u.current && r(e.id, u.current);
46
- });
47
- return () => cancelAnimationFrame(t);
48
- }, t[20] = e.id, t[21] = y);
49
- let b;
50
- return t[22] !== e.id || t[23] !== c ? (b = [c, e.id], t[22] = e.id, t[23] = c, t[24] = b) : b = t[24], a(y, b), e.children;
51
- }
52
- //#endregion
53
- //#region src/widgets/loader/utils.ts
54
- var c = /* @__PURE__ */ e(t(), 1);
55
- function l(e, t, n) {
56
- return typeof e == "function" ? e(t, n) : e;
57
- }
58
- function u(...e) {
59
- return (0, c.default)(e[0] ?? {}, e[1] ?? {}, { arrayMerge(e, t) {
60
- return t;
61
- } });
62
- }
63
- //#endregion
64
- export { s as WidgetLoader, u as mergeWidgetConfig, l as resolveConfig };
65
-
66
- //# sourceMappingURL=loader.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"loader.js","names":["(state) => state.widgets[props.id]?.registeredTools","id","() => {\n dataRef.current = props.data\n configRef.current = props.config\n }","config","data","() => {\n widgetStoreActions.setWidget<WrapperState>(props.id, {\n type: props.type,\n isLoading: props.isLoading ?? false,\n isFetching: props.isFetching ?? false,\n error: props.error,\n })\n }","[props.id, props.type, props.isLoading, props.isFetching, props.error]","error","isFetching","isLoading","type","() => {\n if (props.config) {\n void widgetStoreActions.executeConfigPipeline(props.id, props.config)\n }\n }","[props.id, props.config]","() => {\n void widgetStoreActions.executeToolPipeline(props.id, props.data)\n }","[props.id, props.data]","() => {\n if (!isMountedRef.current) {\n isMountedRef.current = true\n return\n }\n\n const rafId = requestAnimationFrame(() => {\n const { executeToolPipeline, executeConfigPipeline } = widgetStoreActions\n void executeToolPipeline(props.id, dataRef.current)\n if (configRef.current) {\n void executeConfigPipeline(props.id, configRef.current)\n }\n })\n\n return () => cancelAnimationFrame(rafId)\n }","[registeredTools, props.id]"],"sources":["../../src/widgets/loader/loader.tsx","../../src/widgets/loader/utils.ts"],"sourcesContent":["import { useEffect, useRef } from 'react'\nimport type { WidgetLoaderProps } from './types'\nimport { useWidgetStore, widgetStoreActions } from '../stores/widget-store'\nimport type { WrapperState } from '../wrapper'\n\n/**\n * Foundation component for all widgets that manages state initialization, synchronization with the widget store, and data transformation pipeline execution.\n *\n * @remarks\n * The WidgetLoader is stateless -- it manages data flow but does not render any UI. Always wrap it with WidgetWrapper for consistent widget appearance.\n *\n * @example\n * ```tsx\n * <WidgetLoader\n * id=\"sales-chart\"\n * type=\"bar\"\n * data={data}\n * isLoading={false}\n * isFetching={false}\n * config={barConfig({ data })}\n * >\n * <WidgetWrapper id=\"sales-chart\" title=\"Sales\">\n * <Echart id=\"sales-chart\" />\n * </WidgetWrapper>\n * </WidgetLoader>\n * ```\n */\nexport function WidgetLoader<T extends object = Record<string, unknown>>(\n props: WidgetLoaderProps<T>,\n) {\n // Subscribe only to this widget's registeredTools via Zustand selector.\n // The selector returns a stable reference when other widgets change,\n // avoiding unnecessary re-evaluations of Effect 4.\n const registeredTools = useWidgetStore(\n (state) => state.widgets[props.id]?.registeredTools,\n )\n\n const dataRef = useRef(props.data)\n const configRef = useRef(props.config)\n const isMountedRef = useRef(false)\n\n useEffect(() => {\n dataRef.current = props.data\n configRef.current = props.config\n })\n\n // Effect 1: Metadata — type, loading, and error states in a single setWidget call.\n // Merged to reduce store updates from 2 to 1 per widget during initialization.\n useEffect(() => {\n widgetStoreActions.setWidget<WrapperState>(props.id, {\n type: props.type,\n isLoading: props.isLoading ?? false,\n isFetching: props.isFetching ?? false,\n error: props.error,\n })\n }, [props.id, props.type, props.isLoading, props.isFetching, props.error])\n\n // Effect 2: Config updates — run through config pipeline\n useEffect(() => {\n if (props.config) {\n void widgetStoreActions.executeConfigPipeline(props.id, props.config)\n }\n }, [props.id, props.config])\n\n // Effect 3: Execute tool pipeline when props.data changes\n useEffect(() => {\n void widgetStoreActions.executeToolPipeline(props.id, props.data)\n }, [props.id, props.data])\n\n // Effect 4: Re-execute pipelines when registered tools change.\n // Uses requestAnimationFrame to coalesce rapid successive registeredTools\n // changes (e.g., 6 action components each calling registerTool on mount)\n // into a single pipeline execution instead of 6 pairs.\n useEffect(() => {\n if (!isMountedRef.current) {\n isMountedRef.current = true\n return\n }\n\n const rafId = requestAnimationFrame(() => {\n const { executeToolPipeline, executeConfigPipeline } = widgetStoreActions\n void executeToolPipeline(props.id, dataRef.current)\n if (configRef.current) {\n void executeConfigPipeline(props.id, configRef.current)\n }\n })\n\n return () => cancelAnimationFrame(rafId)\n }, [registeredTools, props.id])\n\n return props.children\n}\n","import deepmerge from 'deepmerge'\n\n/**\n * Config can be either an object or a function that receives baseConfig and data\n * and returns a partial config to be merged with the base.\n */\nexport type ConfigOrFn<TConfig, TData = unknown> =\n Partial<TConfig> | ((baseConfig: TConfig, data: TData) => Partial<TConfig>)\n\n/**\n * Resolves a widget config that may be either a partial object or a function receiving the computed base config and data. If it is a function, calls it with `baseConfig` and `data`; otherwise returns the value as-is.\n *\n * @param config - The config object or function to resolve.\n * @param baseConfig - The computed base configuration.\n * @param data - The widget data.\n * @returns Resolved partial config, or undefined.\n *\n * @example\n * ```tsx\n * const resolved = resolveConfig(\n * (base, data) => ({ maxItems: base.maxItems + 5 }),\n * baseConfig,\n * widgetData,\n * )\n * ```\n */\nexport function resolveConfig<TConfig, TData>(\n config: ConfigOrFn<TConfig, TData> | undefined,\n baseConfig: TConfig,\n data: TData,\n): Partial<TConfig> | undefined {\n if (typeof config === 'function') {\n return config(baseConfig, data)\n }\n return config\n}\n\n/**\n * Deep-merges two partial widget config objects using `deepmerge`, with arrays replaced rather than concatenated.\n *\n * @param options - A tuple of two partial configs to merge (base and override).\n * @returns The merged config object.\n *\n * @example\n * ```tsx\n * const finalConfig = mergeWidgetConfig(baseConfig, resolvedConfig)\n * ```\n */\nexport function mergeWidgetConfig<T>(\n ...options: [Partial<T> | undefined, Partial<T> | undefined]\n): T {\n return deepmerge(options[0] ?? {}, options[1] ?? {}, {\n arrayMerge(_, source) {\n return source as T[keyof T][]\n },\n })\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"markdown.js","names":["{ id }: MarkdownUIProps","(w) => (w?.data as MarkdownWidgetData | undefined)?.content","<MarkdownUI>{content}</MarkdownUI>","{ children, overrides }: MarkdownComponentProps","{\n ...COMPONENTS,\n ...overrides,\n }","<ReactMarkdown\n components={{\n ...COMPONENTS,\n ...overrides,\n }}\n >\n {children}\n </ReactMarkdown>","<Skeleton width='80%' height={24} sx={{ mb: 1 }} />","<Skeleton width='90%' height={20} sx={{ mb: 0.5 }} />","<Box aria-label='Markdown skeleton'>\n <Skeleton width='80%' height={24} sx={{ mb: 1 }} />\n <Skeleton width='90%' height={20} sx={{ mb: 0.5 }} />\n <Skeleton width='85%' height={20} sx={{ mb: 0.5 }} />\n <Skeleton width='75%' height={20} />\n </Box>"],"sources":["../../src/widgets/markdown/markdown.tsx","../../src/widgets/markdown/style.ts","../../src/widgets/markdown/markdown-ui.tsx","../../src/widgets/markdown/skeleton.tsx","../../src/widgets/markdown/config.ts"],"sourcesContent":["import type { MarkdownUIProps } from './types'\nimport type { MarkdownWidgetData } from './types'\nimport { MarkdownUI } from '.'\nimport { useWidgetSelector } from '../stores/use-widget-selector'\n\n/**\n * Stateful markdown widget component that reads content from the widget store and renders it as formatted rich text.\n */\nexport function Markdown({ id }: MarkdownUIProps) {\n const content = useWidgetSelector(\n id,\n (w) => (w?.data as MarkdownWidgetData | undefined)?.content,\n )\n\n if (!content) {\n return null\n }\n\n return <MarkdownUI>{content}</MarkdownUI>\n}\n","import type { SxProps, Theme } from '@mui/material'\n\nexport const styles: Record<string, SxProps<Theme>> = {\n container: {\n display: 'flex',\n flexDirection: 'column',\n gap: ({ spacing }) => spacing(2),\n },\n markdown: {\n overflow: 'hidden',\n typography: ({ typography }) => ({\n ...typography.body1,\n }),\n },\n li: {\n display: 'list-item',\n paddingTop: 0,\n paddingBottom: 0,\n },\n ul: {\n listStyleType: 'disc',\n paddingLeft: ({ spacing }) => spacing(2),\n },\n ol: {\n listStyleType: 'decimal',\n paddingLeft: ({ spacing }) => spacing(2),\n },\n}\n","import { Link, List, ListItem, Typography } from '@mui/material'\nimport ReactMarkdown, { type Components } from 'react-markdown'\nimport { styles } from '../markdown/style'\nimport type { MarkdownComponentProps } from './types'\n\nconst COMPONENTS: Components = {\n h1: ({ children }) => (\n <Typography variant='h4' gutterBottom color='inherit'>\n {children}\n </Typography>\n ),\n h2: ({ children }) => (\n <Typography variant='h5' gutterBottom color='inherit'>\n {children}\n </Typography>\n ),\n h3: ({ children }) => (\n <Typography variant='h6' gutterBottom color='inherit'>\n {children}\n </Typography>\n ),\n p: ({ children }) => (\n <Typography paragraph color='inherit'>\n {children}\n </Typography>\n ),\n a: ({ children, href, target = '_blank', rel = 'noopener noreferrer' }) => (\n <Link href={href} target={target} rel={rel}>\n {children}\n </Link>\n ),\n ul: ({ children }) => <List sx={styles.ul}>{children}</List>,\n ol: ({ children }) => (\n <List component='ol' sx={styles.ol}>\n {children}\n </List>\n ),\n li: ({ children }) => <ListItem sx={styles.li}>{children}</ListItem>,\n}\n\n/**\n * Presentational component that renders a Markdown string as MUI-styled HTML using react-markdown.\n *\n * @remarks\n * Maps Markdown elements (headings, paragraphs, links, lists) to MUI Typography and Link components.\n * Custom component overrides can be passed via the `overrides` prop.\n */\nexport function MarkdownUI({ children, overrides }: MarkdownComponentProps) {\n return (\n <ReactMarkdown\n components={{\n ...COMPONENTS,\n ...overrides,\n }}\n >\n {children}\n </ReactMarkdown>\n )\n}\n","import { Box, Skeleton } from '@mui/material'\n\nexport function MarkdownSkeleton() {\n return (\n <Box aria-label='Markdown skeleton'>\n <Skeleton width='80%' height={24} sx={{ mb: 1 }} />\n <Skeleton width='90%' height={20} sx={{ mb: 0.5 }} />\n <Skeleton width='85%' height={20} sx={{ mb: 0.5 }} />\n <Skeleton width='75%' height={20} />\n </Box>\n )\n}\n","import { downloadToCSV, type DownloadItem } from '../actions'\nimport type { MarkdownWidgetConfig, MarkdownWidgetData } from './types'\n\n/**\n * Creates download configuration for markdown widgets, supporting CSV export of text content. Does not require `refUI` since it only exports text.\n *\n * @returns Array of download items for use with the Download action.\n */\nexport function markdownDownloadConfig(): DownloadItem<MarkdownWidgetData>[] {\n return [\n {\n ...downloadToCSV,\n modifier: async (data) => {\n const content = data?.content ?? ''\n return downloadToCSV.modifier([['Content'], [content]])\n },\n },\n ]\n}\n\n/**\n * Returns the default configuration for markdown content display widgets.\n *\n * @returns Default markdown widget config (empty object).\n */\nexport function markdownConfig(): MarkdownWidgetConfig {\n return {}\n}\n"],"mappings":"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"}
@@ -1,55 +0,0 @@
1
- import { t as e } from "../use-widget-selector-VSPhfhNm.js";
2
- import { c as t } from "react/compiler-runtime";
3
- import { Box as n, Typography as r } from "@mui/material";
4
- import { jsx as i, jsxs as a } from "react/jsx-runtime";
5
- //#region src/widgets/no-data/style.ts
6
- var o = { root: {
7
- display: "flex",
8
- flexDirection: "column",
9
- gap: 1,
10
- paddingTop: 1,
11
- paddingBottom: 2,
12
- paddingX: 2,
13
- width: "100%",
14
- minHeight: "100%"
15
- } };
16
- //#endregion
17
- //#region src/widgets/no-data/no-data.tsx
18
- function s(s) {
19
- let u = t(7), { id: d, children: f, title: p, description: m, isEmpty: h } = s, g = p === void 0 ? "No data available" : p, _ = m === void 0 ? "There are no results for the combination of filters applied to your data. Try tweaking your filters, or zoom and pan the map to adjust filters" : m, v = h === void 0 ? l : h, { isLoading: y, isFetching: b, sourceData: x } = e(d, c);
20
- if (y || b) return f;
21
- if (v(x)) {
22
- let e;
23
- u[0] === g ? e = u[1] : (e = /* @__PURE__ */ i(r, {
24
- variant: "body2",
25
- color: "text.primary",
26
- children: g
27
- }), u[0] = g, u[1] = e);
28
- let t;
29
- u[2] === _ ? t = u[3] : (t = /* @__PURE__ */ i(r, {
30
- variant: "caption",
31
- color: "text.secondary",
32
- children: _
33
- }), u[2] = _, u[3] = t);
34
- let s;
35
- return u[4] !== e || u[5] !== t ? (s = /* @__PURE__ */ a(n, {
36
- sx: o.root,
37
- children: [e, t]
38
- }), u[4] = e, u[5] = t, u[6] = s) : s = u[6], s;
39
- }
40
- return f;
41
- }
42
- function c(e) {
43
- return {
44
- isLoading: e?.isLoading,
45
- isFetching: e?.isFetching,
46
- sourceData: e?.sourceData
47
- };
48
- }
49
- function l(e) {
50
- return e == null ? !0 : Array.isArray(e) ? !!(e.length === 0 || e.every((e) => Array.isArray(e) && e.length === 0)) : typeof e == "object" && Object.keys(e).length === 0;
51
- }
52
- //#endregion
53
- export { s as WidgetNoData };
54
-
55
- //# sourceMappingURL=no-data.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"no-data.js","names":["{\n id,\n children,\n title = 'No data available',\n description = 'There are no results for the combination of filters applied to your data. Try tweaking your filters, or zoom and pan the map to adjust filters',\n isEmpty = defaultIsEmpty,\n}: WidgetNoDataProps","title = 'No data available'","description = 'There are no results for the combination of filters applied to your data. Try tweaking your filters, or zoom and pan the map to adjust filters'","isEmpty = defaultIsEmpty","(w) => ({\n isLoading: w?.isLoading,\n isFetching: w?.isFetching,\n sourceData: w?.sourceData,\n })","<Typography variant='body2' color='text.primary'>\n {title}\n </Typography>","<Typography variant='caption' color='text.secondary'>\n {description}\n </Typography>","<Box sx={styles.root}>\n <Typography variant='body2' color='text.primary'>\n {title}\n </Typography>\n <Typography variant='caption' color='text.secondary'>\n {description}\n </Typography>\n </Box>"],"sources":["../../src/widgets/no-data/style.ts","../../src/widgets/no-data/no-data.tsx"],"sourcesContent":["import type { SxProps, Theme } from '@mui/material'\n\n/**\n * Styles for NoData component matching Figma design specifications\n * Design reference: node 5781-11028\n */\nexport const styles: Record<string, SxProps<Theme>> = {\n root: {\n display: 'flex',\n flexDirection: 'column',\n gap: 1, // 8px\n paddingTop: 1, // 8px\n paddingBottom: 2, // 16px\n paddingX: 2, // 16px\n width: '100%',\n minHeight: '100%',\n },\n}\n","import { Box, Typography } from '@mui/material'\nimport { useWidgetSelector } from '../stores/use-widget-selector'\nimport type { WidgetNoDataProps } from './types'\nimport { styles } from './style'\n\n/**\n * NoData wrapper component that displays empty state UI when widget has no data\n *\n * Integrates with widget store to check loading/fetching state and source data availability.\n * Uses `sourceData` (pre-pipeline data) instead of `data` (post-pipeline) to distinguish\n * \"API returned nothing\" from \"pipeline tools filtered everything out\".\n *\n * @example Basic usage\n * ```tsx\n * <NoData id=\"my-widget\">\n * <WidgetContent id=\"my-widget\" />\n * </NoData>\n * ```\n *\n * @example With SkeletonLoader\n * ```tsx\n * <SkeletonLoader id=\"my-widget\" Skeleton={MySkeleton}>\n * <NoData id=\"my-widget\">\n * <WidgetContent id=\"my-widget\" />\n * </NoData>\n * </SkeletonLoader>\n * ```\n *\n * @example With custom messages\n * ```tsx\n * <NoData\n * id=\"my-widget\"\n * title=\"No results found\"\n * description=\"Try adjusting your filters\"\n * >\n * <WidgetContent id=\"my-widget\" />\n * </NoData>\n * ```\n */\nexport function WidgetNoData({\n id,\n children,\n title = 'No data available',\n description = 'There are no results for the combination of filters applied to your data. Try tweaking your filters, or zoom and pan the map to adjust filters',\n isEmpty = defaultIsEmpty,\n}: WidgetNoDataProps) {\n // Single consolidated subscription instead of 3 separate ones.\n // Reads sourceData (pre-pipeline) to check emptiness, not data (post-pipeline).\n const { isLoading, isFetching, sourceData } = useWidgetSelector(id, (w) => ({\n isLoading: w?.isLoading,\n isFetching: w?.isFetching,\n sourceData: w?.sourceData,\n }))\n\n // If loading or fetching, show children\n // SkeletonLoader handles loading state, this allows proper composition\n if (isLoading || isFetching) {\n return children\n }\n\n // Check if data is empty\n if (isEmpty(sourceData)) {\n return (\n <Box sx={styles.root}>\n <Typography variant='body2' color='text.primary'>\n {title}\n </Typography>\n <Typography variant='caption' color='text.secondary'>\n {description}\n </Typography>\n </Box>\n )\n }\n\n // Data exists, render children\n return children\n}\n\n/**\n * Default function to determine if data is empty\n * Handles various data structures commonly used in widgets\n */\nfunction defaultIsEmpty(data: unknown): boolean {\n // Null or undefined\n if (data == null) {\n return true\n }\n\n // Arrays (most common case)\n if (Array.isArray(data)) {\n // Empty array\n if (data.length === 0) {\n return true\n }\n\n // Array of arrays (CategoryWidget pattern: [[],[]])\n // Check if all inner arrays are empty\n if (data.every((item) => Array.isArray(item) && item.length === 0)) {\n return true\n }\n\n return false\n }\n\n // Objects\n if (typeof data === 'object') {\n return Object.keys(data).length === 0\n }\n\n // Primitives (numbers, strings, booleans) are considered valid data\n return false\n}\n"],"mappings":";;;;;AAMA,IAAa,IAAyC,EACpD,MAAM;CACJ,SAAS;CACT,eAAe;CACf,KAAK;CACL,YAAY;CACZ,eAAe;CACf,UAAU;CACV,OAAO;CACP,WAAW;AACb,EACF;;;ACsBA,SAAgB,EAAA,GAMM;eANO,EAC3B,OACA,aACA,OAAA,GACA,aAAA,GACA,SAAA,MAL2BA,GAG3B,IAAA,MAAA,KAAA,IAAQ,sBAARC,GACA,IAAA,MAAA,KAAA,IAAc,mJAAdC,GACA,IAAA,MAAA,KAAA,IAAU,IAAVC,GAIM,EAAE,cAAW,eAAY,kBAAe,EAAkB,GAAIC,CAIlE;CAIF,IAAI,KAAa,GACf,OAAO;CAIT,IAAI,EAAQ,CAAU,GAAG;EAGnBC,IAAAA;EACG,AAAA,EAAA,OAAA,gBADH,IAAA,kBAAC,GAAD;GAAY,SAAQ;GAAQ,OAAM;GAC/B,UAAA;EACS,CAAA,GADT,EAAA,KAAA;EAEHC,IAAAA;EACG,AAAA,EAAA,OAAA,gBADH,IAAA,kBAAC,GAAD;GAAY,SAAQ;GAAU,OAAM;GACjC,UAAA;EACS,CAAA,GADT,EAAA,KAAA;EALLC,IAAAA;EADF,OAEIF,EAAAA,OAAAA,KAAAA,EAAAA,OAGAC,KAJF,IAAA,kBAAC,GAAD;GAAK,IAAI,EAAO;GAAhB,UAAA,CACED,GAGAC,CAGG;MANHD,EAAAA,KAAAA,GAGAC,EAAAA,KAAAA,yBAJFC;CASJ;CAGA,OAAO;AACT;AA5BsE,SAAA,EAAC,GAAA;CAAO,OAAA;EAC1E,WAAW,GAAG;EACd,YAAY,GAAG;EACf,YAAY,GAAG;CACjB;;AA8BF,SAAS,EAAe,GAAwB;CA4B9C,OA1BI,KAAQ,OACH,KAIL,MAAM,QAAQ,CAAI,IAQpB,GANI,EAAK,WAAW,KAMhB,EAAK,OAAO,MAAS,MAAM,QAAQ,CAAI,KAAK,EAAK,WAAW,CAAC,KAQ/D,OAAO,KAAS,YACX,OAAO,KAAK,CAAI,CAAC,CAAC,WAAW;AAKxC"}
@@ -1,127 +0,0 @@
1
- import { c as e } from "react/compiler-runtime";
2
- import { useEffect as t, useEffectEvent as n, useRef as r, useState as i } from "react";
3
- import { Box as a, Button as o, Link as s, Typography as c } from "@mui/material";
4
- import { jsx as l, jsxs as u } from "react/jsx-runtime";
5
- import d from "react-markdown";
6
- //#region src/widgets/note/style.ts
7
- var f = {
8
- root: {
9
- typography: "caption",
10
- color: (e) => e.palette.text.secondary,
11
- marginBlockStart: ({ spacing: e }) => e(1)
12
- },
13
- clamped: {
14
- display: "-webkit-box",
15
- WebkitLineClamp: 3,
16
- WebkitBoxOrient: "vertical",
17
- overflow: "hidden"
18
- },
19
- expanded: { display: "block" },
20
- linkButton: {
21
- padding: 0,
22
- minWidth: "auto",
23
- textTransform: "none",
24
- typography: "caption",
25
- fontWeight: 500,
26
- textDecoration: "none",
27
- "&:hover": { backgroundColor: "transparent" }
28
- }
29
- }, p = {
30
- showMore: "Show More",
31
- showLess: "Show Less"
32
- }, m = (t) => {
33
- let n = e(2), { children: r } = t, i;
34
- return n[0] === r ? i = n[1] : (i = /* @__PURE__ */ l(c, {
35
- paragraph: !0,
36
- color: "inherit",
37
- variant: "caption",
38
- children: r
39
- }), n[0] = r, n[1] = i), i;
40
- }, h = {
41
- h1: m,
42
- h2: m,
43
- h3: m,
44
- p: m,
45
- a: ({ children: e, href: t, target: n = "_blank", rel: r = "noopener noreferrer" }) => /* @__PURE__ */ l(s, {
46
- href: t,
47
- target: n,
48
- rel: r,
49
- color: "text.primary",
50
- underline: "always",
51
- children: e
52
- }),
53
- img: () => null,
54
- ul: m,
55
- ol: m,
56
- li: m
57
- };
58
- function g(s) {
59
- let c = e(27), { children: m, labels: g } = s, _ = g === void 0 ? p : g, [v, y] = i(!1), [b, x] = i(!1), S = r(null), C;
60
- c[0] === Symbol.for("react.memo_cache_sentinel") ? (C = () => {
61
- if (S.current) {
62
- let e = S.current.scrollHeight > S.current.clientHeight;
63
- x(e);
64
- }
65
- }, c[0] = C) : C = c[0];
66
- let w = n(C), T;
67
- c[1] === w ? T = c[2] : (T = () => {
68
- w();
69
- }, c[1] = w, c[2] = T);
70
- let E;
71
- c[3] === m ? E = c[4] : (E = [m], c[3] = m, c[4] = E), t(T, E);
72
- let D;
73
- c[5] === w ? D = c[6] : (D = () => {
74
- let e = S.current;
75
- if (!e) return;
76
- let t = new ResizeObserver(() => {
77
- w();
78
- });
79
- return t.observe(e), () => {
80
- t.disconnect();
81
- };
82
- }, c[5] = w, c[6] = D);
83
- let O;
84
- if (c[7] === Symbol.for("react.memo_cache_sentinel") ? (O = [], c[7] = O) : O = c[7], t(D, O), !m) return null;
85
- let k;
86
- c[8] === v ? k = c[9] : (k = () => {
87
- y(!v);
88
- }, c[8] = v, c[9] = k);
89
- let A = k, j;
90
- c[10] === _ ? j = c[11] : (j = {
91
- ...p,
92
- ..._
93
- }, c[10] = _, c[11] = j);
94
- let M = j, N = v ? f.expanded : f.clamped, P;
95
- c[12] === N ? P = c[13] : (P = {
96
- ...f.root,
97
- ...N
98
- }, c[12] = N, c[13] = P);
99
- let F;
100
- c[14] === m ? F = c[15] : (F = /* @__PURE__ */ l(d, {
101
- components: h,
102
- children: m
103
- }), c[14] = m, c[15] = F);
104
- let I;
105
- c[16] !== P || c[17] !== F ? (I = /* @__PURE__ */ l(a, {
106
- ref: S,
107
- sx: P,
108
- children: F
109
- }), c[16] = P, c[17] = F, c[18] = I) : I = c[18];
110
- let L;
111
- c[19] !== A || c[20] !== v || c[21] !== M || c[22] !== b ? (L = (b || v) && /* @__PURE__ */ l(o, {
112
- onClick: A,
113
- variant: "text",
114
- color: "primary",
115
- sx: f.linkButton,
116
- "aria-expanded": v,
117
- "aria-label": v ? M.showLess : M.showMore,
118
- "aria-controls": "note-content",
119
- children: v ? M.showLess : M.showMore
120
- }), c[19] = A, c[20] = v, c[21] = M, c[22] = b, c[23] = L) : L = c[23];
121
- let R;
122
- return c[24] !== I || c[25] !== L ? (R = /* @__PURE__ */ u(a, { children: [I, L] }), c[24] = I, c[25] = L, c[26] = R) : R = c[26], R;
123
- }
124
- //#endregion
125
- export { g as WidgetNote };
126
-
127
- //# sourceMappingURL=note.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"note.js","names":["{ children }: { children?: React.ReactNode }","<Typography paragraph color='inherit' variant='caption'>\n {children}\n </Typography>","{\n children,\n labels = DEFAULT_LABELS,\n}: WidgetNoteProps","labels = DEFAULT_LABELS","() => {\n if (contentRef.current) {\n // Check if content overflows 3 lines\n const isOverflowing =\n contentRef.current.scrollHeight > contentRef.current.clientHeight\n setShouldShowToggle(isOverflowing)\n }\n }","() => {\n checkOverflow()\n }","[children]","() => {\n const element = contentRef.current\n if (!element) return\n\n const resizeObserver = new ResizeObserver(() => {\n checkOverflow()\n })\n\n resizeObserver.observe(element)\n\n return () => {\n resizeObserver.disconnect()\n }\n }","[]","() => {\n setIsExpanded(!isExpanded)\n }","{ ...DEFAULT_LABELS, ...labels }","{\n ...styles.root,\n ...(isExpanded ? styles.expanded : styles.clamped),\n }","isExpanded ? styles.expanded : styles.clamped","<ReactMarkdown components={COMPONENTS}>{children}</ReactMarkdown>","<Box\n ref={contentRef}\n sx={{\n ...styles.root,\n ...(isExpanded ? styles.expanded : styles.clamped),\n }}\n >\n <ReactMarkdown components={COMPONENTS}>{children}</ReactMarkdown>\n </Box>","(shouldShowToggle || isExpanded) && (\n <Button\n onClick={handleToggle}\n variant='text'\n color='primary'\n sx={styles.linkButton}\n aria-expanded={isExpanded}\n aria-label={\n isExpanded ? mergedLabels.showLess : mergedLabels.showMore\n }\n aria-controls='note-content'\n >\n {isExpanded ? mergedLabels.showLess : mergedLabels.showMore}\n </Button>\n )","mergedLabels.showLess","<Box>\n <Box\n ref={contentRef}\n sx={{\n ...styles.root,\n ...(isExpanded ? styles.expanded : styles.clamped),\n }}\n >\n <ReactMarkdown components={COMPONENTS}>{children}</ReactMarkdown>\n </Box>\n {(shouldShowToggle || isExpanded) && (\n <Button\n onClick={handleToggle}\n variant='text'\n color='primary'\n sx={styles.linkButton}\n aria-expanded={isExpanded}\n aria-label={\n isExpanded ? mergedLabels.showLess : mergedLabels.showMore\n }\n aria-controls='note-content'\n >\n {isExpanded ? mergedLabels.showLess : mergedLabels.showMore}\n </Button>\n )}\n </Box>"],"sources":["../../src/widgets/note/style.ts","../../src/widgets/note/note.tsx"],"sourcesContent":["import type { SxProps, Theme } from '@mui/material'\n\nexport const styles = {\n root: {\n typography: 'caption',\n color: (theme: Theme) => theme.palette.text.secondary,\n marginBlockStart: ({ spacing }) => spacing(1),\n },\n clamped: {\n display: '-webkit-box',\n WebkitLineClamp: 3,\n WebkitBoxOrient: 'vertical',\n overflow: 'hidden',\n },\n expanded: {\n display: 'block',\n },\n linkButton: {\n padding: 0,\n minWidth: 'auto',\n textTransform: 'none',\n typography: 'caption',\n fontWeight: 500,\n textDecoration: 'none',\n '&:hover': {\n backgroundColor: 'transparent',\n },\n },\n} satisfies Record<string, SxProps<Theme>>\n","import { useState, useEffect, useRef, useEffectEvent } from 'react'\nimport { Box, Button, Link, Typography } from '@mui/material'\nimport type { WidgetNoteProps } from './types'\nimport { styles } from './style'\nimport ReactMarkdown, { type Components } from 'react-markdown'\n\nconst DEFAULT_LABELS = {\n showMore: 'Show More',\n showLess: 'Show Less',\n} as const\n\nconst DEFAULT_P = ({ children }: { children?: React.ReactNode }) => (\n <Typography paragraph color='inherit' variant='caption'>\n {children}\n </Typography>\n)\n\nconst COMPONENTS: Components = {\n h1: DEFAULT_P,\n h2: DEFAULT_P,\n h3: DEFAULT_P,\n p: DEFAULT_P,\n a: ({ children, href, target = '_blank', rel = 'noopener noreferrer' }) => (\n <Link\n href={href}\n target={target}\n rel={rel}\n color='text.primary'\n underline='always'\n >\n {children}\n </Link>\n ),\n img: () => null,\n ul: DEFAULT_P,\n ol: DEFAULT_P,\n li: DEFAULT_P,\n}\n\n/**\n * Displays text content with markdown support and automatic show more/less functionality for long content. Automatically detects content exceeding 3 lines and shows an expand/collapse button.\n *\n * @example\n * ```tsx\n * <WidgetNote>\n * {\"**Important:** This data is from Q4 2024.\"}\n * </WidgetNote>\n * ```\n */\nexport function WidgetNote({\n children,\n labels = DEFAULT_LABELS,\n}: WidgetNoteProps) {\n const [isExpanded, setIsExpanded] = useState(false)\n const [shouldShowToggle, setShouldShowToggle] = useState(false)\n const contentRef = useRef<HTMLDivElement>(null)\n\n const checkOverflow = useEffectEvent(() => {\n if (contentRef.current) {\n // Check if content overflows 3 lines\n const isOverflowing =\n contentRef.current.scrollHeight > contentRef.current.clientHeight\n setShouldShowToggle(isOverflowing)\n }\n })\n\n useEffect(() => {\n checkOverflow()\n }, [children])\n\n useEffect(() => {\n const element = contentRef.current\n if (!element) return\n\n const resizeObserver = new ResizeObserver(() => {\n checkOverflow()\n })\n\n resizeObserver.observe(element)\n\n return () => {\n resizeObserver.disconnect()\n }\n }, [])\n\n if (!children) {\n return null\n }\n\n const handleToggle = () => {\n setIsExpanded(!isExpanded)\n }\n\n const mergedLabels = { ...DEFAULT_LABELS, ...labels }\n\n return (\n <Box>\n <Box\n ref={contentRef}\n sx={{\n ...styles.root,\n ...(isExpanded ? styles.expanded : styles.clamped),\n }}\n >\n <ReactMarkdown components={COMPONENTS}>{children}</ReactMarkdown>\n </Box>\n {(shouldShowToggle || isExpanded) && (\n <Button\n onClick={handleToggle}\n variant='text'\n color='primary'\n sx={styles.linkButton}\n aria-expanded={isExpanded}\n aria-label={\n isExpanded ? mergedLabels.showLess : mergedLabels.showMore\n }\n aria-controls='note-content'\n >\n {isExpanded ? mergedLabels.showLess : mergedLabels.showMore}\n </Button>\n )}\n </Box>\n )\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"range.js","names":["{ id, index }: RangeItemProps","(w) => {\n const rw = w as RangeWidgetState | undefined\n return {\n item: rw?.data[index],\n onChange: rw?.onChange,\n formatter: rw?.formatter,\n }\n }","item ? (item.value ?? [item.min, item.max]) : [0, 0]","useMemo(\n () => (item ? (item.value ?? [item.min, item.max]) : [0, 0]),\n [item],\n )","(_: Event, newValue: number | number[]) => {\n if (Array.isArray(newValue)) {\n const [min, max] = newValue\n const data =\n widgetStoreActions.getWidget<RangeWidgetState>(id)?.data ?? []\n\n data[index] = {\n ...item,\n value: newValue,\n }\n\n widgetStoreActions.setWidget(id, {\n data,\n })\n\n onChange?.([min!, max!], index)\n }\n }","(e: FocusEvent<HTMLInputElement>) => {\n setIsEditing(e.target.name as EditingState)\n }","(e: FocusEvent<HTMLInputElement>) => {\n setIsEditing('')\n handleInputChange(e)\n }","0","1","max","min","data","newValue","e","(event: KeyboardEvent<HTMLInputElement>) => {\n if (event.key === 'Enter') {\n handleInputBlur(event as unknown as FocusEvent<HTMLInputElement>)\n event.currentTarget.blur()\n }\n }","event","item.color && {\n color: item.color,\n }","color","{\n ...styles.slider,\n ...(item.color && {\n color: item.color,\n }),\n }","<Box sx={styles.sliderContainer}>\n <Slider\n value={currentValue}\n onChange={handleSliderChange}\n valueLabelDisplay='auto'\n valueLabelFormat={formatter}\n min={item.min}\n max={item.max}\n step={item.step}\n marks={item.marks}\n disabled={item.disabled}\n sx={{\n ...styles.slider,\n ...(item.color && {\n color: item.color,\n }),\n }}\n />\n </Box>","disabled","marks","step","{\n 'aria-label': 'Minimum value',\n }","<Input\n key={`min-${currentValue[0]}`}\n isEditing={isEditing}\n name='min'\n value={currentValue[0] ?? 0}\n formatter={formatter}\n onFocus={handleInputFocus}\n onBlur={handleInputBlur}\n onKeyDown={handleInputKeyDown}\n disabled={item.disabled}\n inputProps={{\n 'aria-label': 'Minimum value',\n }}\n />","`min-${currentValue[0]}`","currentValue[0] ?? 0","{\n 'aria-label': 'Maximum value',\n }","<Input\n key={`max-${currentValue[1]}`}\n isEditing={isEditing}\n name='max'\n value={currentValue[1] ?? 0}\n formatter={formatter}\n onFocus={handleInputFocus}\n onBlur={handleInputBlur}\n onKeyDown={handleInputKeyDown}\n disabled={item.disabled}\n inputProps={{\n 'aria-label': 'Maximum value',\n }}\n />","`max-${currentValue[1]}`","currentValue[1] ?? 0","<Box sx={styles.inputsRow}>\n <Input\n key={`min-${currentValue[0]}`}\n isEditing={isEditing}\n name='min'\n value={currentValue[0] ?? 0}\n formatter={formatter}\n onFocus={handleInputFocus}\n onBlur={handleInputBlur}\n onKeyDown={handleInputKeyDown}\n disabled={item.disabled}\n inputProps={{\n 'aria-label': 'Minimum value',\n }}\n />\n <Input\n key={`max-${currentValue[1]}`}\n isEditing={isEditing}\n name='max'\n value={currentValue[1] ?? 0}\n formatter={formatter}\n onFocus={handleInputFocus}\n onBlur={handleInputBlur}\n onKeyDown={handleInputKeyDown}\n disabled={item.disabled}\n inputProps={{\n 'aria-label': 'Maximum value',\n }}\n />\n </Box>","<Box sx={styles.rangeItem}>\n <Box sx={styles.sliderContainer}>\n <Slider\n value={currentValue}\n onChange={handleSliderChange}\n valueLabelDisplay='auto'\n valueLabelFormat={formatter}\n min={item.min}\n max={item.max}\n step={item.step}\n marks={item.marks}\n disabled={item.disabled}\n sx={{\n ...styles.slider,\n ...(item.color && {\n color: item.color,\n }),\n }}\n />\n </Box>\n\n <Box sx={styles.inputsRow}>\n <Input\n key={`min-${currentValue[0]}`}\n isEditing={isEditing}\n name='min'\n value={currentValue[0] ?? 0}\n formatter={formatter}\n onFocus={handleInputFocus}\n onBlur={handleInputBlur}\n onKeyDown={handleInputKeyDown}\n disabled={item.disabled}\n inputProps={{\n 'aria-label': 'Minimum value',\n }}\n />\n <Input\n key={`max-${currentValue[1]}`}\n isEditing={isEditing}\n name='max'\n value={currentValue[1] ?? 0}\n formatter={formatter}\n onFocus={handleInputFocus}\n onBlur={handleInputBlur}\n onKeyDown={handleInputKeyDown}\n disabled={item.disabled}\n inputProps={{\n 'aria-label': 'Maximum value',\n }}\n />\n </Box>\n </Box>","{\n isEditing,\n name,\n disabled,\n value,\n formatter,\n onFocus: onFocus,\n onBlur: onBlur,\n onKeyDown: onKeyDown,\n inputProps,\n}: {\n isEditing: EditingState\n name: 'min' | 'max'\n disabled?: boolean\n value: number\n formatter: (value: number) => string\n onFocus: (e: FocusEvent<HTMLInputElement>) => void\n onBlur: (e: FocusEvent<HTMLInputElement>) => void\n onKeyDown: (e: KeyboardEvent<HTMLInputElement>) => void\n inputProps?: React.InputHTMLAttributes<HTMLInputElement>\n}","formatter(Number(currentValue))","Number(currentValue)","useMemo(\n () => formatter(Number(currentValue)),\n [currentValue, formatter],\n )","(e) => {\n setCurrentValue(e.target.value)\n }","<TextField\n name={name}\n value={isEditing === name ? currentValue : displayMinValue}\n onChange={(e) => {\n setCurrentValue(e.target.value)\n }}\n onFocus={onFocus}\n onBlur={onBlur}\n onKeyDown={onKeyDown}\n disabled={disabled}\n size='small'\n sx={styles.input}\n inputProps={inputProps}\n />","isEditing === name ? currentValue : displayMinValue","({ index }) => <RangeItem id={props.id} index={index} />","id","{ index }","<Row id={props.id}>\n {({ index }) => <RangeItem id={props.id} index={index} />}\n </Row>","<Skeleton width='100%' height={32} />","<Box sx={styles.rangeItem} aria-label='Range skeleton'>\n <Skeleton width='100%' height={32} />\n <Box sx={styles.inputsRow}>\n <Skeleton width='100%' height={40} />\n <Skeleton width='100%' height={40} />\n </Box>\n </Box>"],"sources":["../../src/widgets/range/style.ts","../../src/widgets/range/components/range-item.tsx","../../src/widgets/range/range-ui.tsx","../../src/widgets/range/skeleton.tsx","../../src/widgets/range/config.ts","../../src/widgets/range/serializer.ts"],"sourcesContent":["import type { SxProps, Theme } from '@mui/material'\n\nexport const styles: Record<string, SxProps<Theme>> = {\n root: {\n display: 'flex',\n flexDirection: 'column',\n gap: (theme: Theme) => theme.spacing(2),\n },\n rangeItem: {\n display: 'flex',\n flexDirection: 'column',\n gap: (theme: Theme) => theme.spacing(1.5),\n },\n sliderContainer: {\n display: 'flex',\n flexDirection: 'column',\n gap: (theme: Theme) => theme.spacing(1),\n px: (theme: Theme) => theme.spacing(1),\n },\n inputsRow: {\n display: 'flex',\n gap: (theme: Theme) => theme.spacing(2),\n alignItems: 'center',\n },\n input: {\n flex: 1,\n '& .MuiInputBase-input': {\n textAlign: 'center',\n },\n },\n slider: {\n width: '100%',\n '&.Mui-disabled': {\n color: (theme: Theme) => theme.palette.text.disabled,\n },\n },\n} satisfies Record<string, SxProps<Theme>>\n","import { Box, Slider, TextField } from '@mui/material'\nimport { useState, useMemo, type FocusEvent, type KeyboardEvent } from 'react'\nimport { widgetStoreActions } from '../../stores/widget-store'\nimport { useWidgetSelector } from '../../stores/use-widget-selector'\nimport type { RangeItemProps, RangeWidgetState } from '../types'\nimport { styles } from '../style'\n\nimport { defaultFormatter } from '../../utils/formatter'\n\ntype EditingState = '' | 'min' | 'max'\n\n/**\n * Renders a single range slider with editable min/max text inputs, reading its configuration from the widget store.\n */\nexport function RangeItem({ id, index }: RangeItemProps) {\n const {\n item,\n onChange,\n formatter: _formatter,\n } = useWidgetSelector(id, (w) => {\n const rw = w as RangeWidgetState | undefined\n return {\n item: rw?.data[index],\n onChange: rw?.onChange,\n formatter: rw?.formatter,\n }\n })\n const formatter = _formatter ?? defaultFormatter\n\n const currentValue = useMemo(\n () => (item ? (item.value ?? [item.min, item.max]) : [0, 0]),\n [item],\n )\n\n // Local state for input values - track if user is editing\n const [isEditing, setIsEditing] = useState<EditingState>('')\n\n if (!item) return null\n\n const handleSliderChange = (_: Event, newValue: number | number[]) => {\n if (Array.isArray(newValue)) {\n const [min, max] = newValue\n const data =\n widgetStoreActions.getWidget<RangeWidgetState>(id)?.data ?? []\n\n data[index] = {\n ...item,\n value: newValue,\n }\n\n widgetStoreActions.setWidget(id, {\n data,\n })\n\n onChange?.([min!, max!], index)\n }\n }\n\n const handleInputFocus = (e: FocusEvent<HTMLInputElement>) => {\n setIsEditing(e.target.name as EditingState)\n }\n\n const handleInputChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n const { name, value } = event.target\n\n let newValue: [number, number]\n if (name === 'min') {\n newValue = [\n Math.min(\n Math.max(item.min, parseFloat(value) || item.min),\n currentValue[1]!,\n ),\n currentValue[1] ?? 0,\n ]\n } else {\n newValue = [\n currentValue[0] ?? 0,\n Math.max(\n Math.min(item.max, parseFloat(value) || item.max),\n currentValue[0]!,\n ),\n ]\n }\n\n const data = widgetStoreActions.getWidget<RangeWidgetState>(id)?.data ?? []\n\n widgetStoreActions.setWidget(id, {\n data: data.map((d: RangeWidgetState['data'][number], i: number) =>\n i === index\n ? {\n ...d,\n value: newValue,\n }\n : d,\n ),\n })\n\n onChange?.([newValue[0], newValue[1]], index)\n }\n\n const handleInputBlur = (e: FocusEvent<HTMLInputElement>) => {\n setIsEditing('')\n handleInputChange(e)\n }\n\n const handleInputKeyDown = (event: KeyboardEvent<HTMLInputElement>) => {\n if (event.key === 'Enter') {\n handleInputBlur(event as unknown as FocusEvent<HTMLInputElement>)\n event.currentTarget.blur()\n }\n }\n\n return (\n <Box sx={styles.rangeItem}>\n <Box sx={styles.sliderContainer}>\n <Slider\n value={currentValue}\n onChange={handleSliderChange}\n valueLabelDisplay='auto'\n valueLabelFormat={formatter}\n min={item.min}\n max={item.max}\n step={item.step}\n marks={item.marks}\n disabled={item.disabled}\n sx={{\n ...styles.slider,\n ...(item.color && {\n color: item.color,\n }),\n }}\n />\n </Box>\n\n <Box sx={styles.inputsRow}>\n <Input\n key={`min-${currentValue[0]}`}\n isEditing={isEditing}\n name='min'\n value={currentValue[0] ?? 0}\n formatter={formatter}\n onFocus={handleInputFocus}\n onBlur={handleInputBlur}\n onKeyDown={handleInputKeyDown}\n disabled={item.disabled}\n inputProps={{\n 'aria-label': 'Minimum value',\n }}\n />\n <Input\n key={`max-${currentValue[1]}`}\n isEditing={isEditing}\n name='max'\n value={currentValue[1] ?? 0}\n formatter={formatter}\n onFocus={handleInputFocus}\n onBlur={handleInputBlur}\n onKeyDown={handleInputKeyDown}\n disabled={item.disabled}\n inputProps={{\n 'aria-label': 'Maximum value',\n }}\n />\n </Box>\n </Box>\n )\n}\n\nfunction Input({\n isEditing,\n name,\n disabled,\n value,\n formatter,\n onFocus: onFocus,\n onBlur: onBlur,\n onKeyDown: onKeyDown,\n inputProps,\n}: {\n isEditing: EditingState\n name: 'min' | 'max'\n disabled?: boolean\n value: number\n formatter: (value: number) => string\n onFocus: (e: FocusEvent<HTMLInputElement>) => void\n onBlur: (e: FocusEvent<HTMLInputElement>) => void\n onKeyDown: (e: KeyboardEvent<HTMLInputElement>) => void\n inputProps?: React.InputHTMLAttributes<HTMLInputElement>\n}) {\n const [currentValue, setCurrentValue] = useState<string>(String(value))\n\n // Compute display values when not editing\n const displayMinValue = useMemo(\n () => formatter(Number(currentValue)),\n [currentValue, formatter],\n )\n\n return (\n <TextField\n name={name}\n value={isEditing === name ? currentValue : displayMinValue}\n onChange={(e) => {\n setCurrentValue(e.target.value)\n }}\n onFocus={onFocus}\n onBlur={onBlur}\n onKeyDown={onKeyDown}\n disabled={disabled}\n size='small'\n sx={styles.input}\n inputProps={inputProps}\n />\n )\n}\n","import type { RangeUIProps } from './types'\nimport { Row } from '../formula/components/row'\nimport { RangeItem } from './components/range-item'\n\n/**\n * Renders a range widget with one or more interactive dual-slider controls for selecting value ranges.\n */\nexport function RangeUI(props: RangeUIProps) {\n return (\n <Row id={props.id}>\n {({ index }) => <RangeItem id={props.id} index={index} />}\n </Row>\n )\n}\n","import { Box, Skeleton } from '@mui/material'\nimport { styles } from './style'\n\nexport function RangeSkeleton() {\n return (\n <Box sx={styles.rangeItem} aria-label='Range skeleton'>\n <Skeleton width='100%' height={32} />\n <Box sx={styles.inputsRow}>\n <Skeleton width='100%' height={40} />\n <Skeleton width='100%' height={40} />\n </Box>\n </Box>\n )\n}\n","import type { RangeWidgetConfig } from './types'\n\n/**\n * Returns the default configuration for range (value range with labels) widgets.\n *\n * @returns Default range widget config.\n */\nexport function rangeConfig(): RangeWidgetConfig {\n return {}\n}\n","import type { RangeDataItem } from './types'\n\n/**\n * Sanitizes RangeDataItem by converting ReactNode note values to undefined.\n * This ensures only string values are stored in the widget state.\n *\n * @param item - The RangeDataItem to sanitize\n * @returns A new RangeDataItem with ReactNode note values converted to undefined\n */\nexport function sanitizeRangeDataItem(item: RangeDataItem): RangeDataItem {\n return {\n ...item,\n note: typeof item.note === 'string' ? item.note : undefined,\n }\n}\n\n/**\n * Sanitizes an array of RangeDataItems by converting ReactNode note values to undefined.\n *\n * @param items - Array of RangeDataItems to sanitize\n * @returns A new array with sanitized RangeDataItems\n */\nexport function sanitizeRangeDataItems(\n items: RangeDataItem[] | undefined,\n): RangeDataItem[] | undefined {\n return items?.map(sanitizeRangeDataItem)\n}\n"],"mappings":"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"}