@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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stores-DcBOZlU3.js","names":["getWidgetStore(id)","(cb) => subscribeEchartInstance(id, cb)","() => getEchartInstance(id)","getWidgetStore(id)","(s) => s.transformStates[primaryId]?.enabled","() => {\n if (typeof persisted === 'boolean') return\n store.setState((s: WidgetState) => ({\n transformStates: {\n ...s.transformStates,\n [primaryId]: {\n ...s.transformStates[primaryId],\n enabled: initialEnabled,\n },\n },\n }))\n }","[store, primaryId, persisted, initialEnabled]","s","(next) => {\n store.setState((s: WidgetState) => {\n const current = s.transformStates[primaryId]?.enabled ?? initialEnabled\n const value =\n typeof next === 'function'\n ? (next as (v: boolean) => boolean)(current)\n : next\n if (value === current) return {}\n return {\n transformStates: {\n ...s.transformStates,\n [primaryId]: {\n ...s.transformStates[primaryId],\n enabled: value,\n },\n },\n }\n })\n }","useCallback<Dispatch<SetStateAction<boolean>>>(\n (next) => {\n store.setState((s: WidgetState) => {\n const current = s.transformStates[primaryId]?.enabled ?? initialEnabled\n const value =\n typeof next === 'function'\n ? (next as (v: boolean) => boolean)(current)\n : next\n if (value === current) return {}\n return {\n transformStates: {\n ...s.transformStates,\n [primaryId]: {\n ...s.transformStates[primaryId],\n enabled: value,\n },\n },\n }\n })\n },\n [store, primaryId, initialEnabled],\n )","[]","() => {\n const next: Registration[] = []\n for (const { descriptor, fn } of pairs) {\n const key: RegistrationKey =\n descriptor.type === 'data' ? 'dataTransforms' : 'configTransforms'\n const transform: Transform = { ...descriptor, fn, enabled }\n store.setState(\n (s: WidgetState) =>\n ({\n [key]: upsertTransform(s[key], transform),\n }) as Partial<WidgetState>,\n )\n next.push({ key, id: descriptor.id })\n }\n registeredRef.current = next\n }","[store, pairs, enabled]","next","() => {\n return () => {\n for (const { key, id: descriptorId } of registeredRef.current) {\n store.setState(\n (s: WidgetState) =>\n ({\n [key]: removeTransform(s[key], descriptorId),\n }) as Partial<WidgetState>,\n )\n }\n registeredRef.current = []\n }\n }","[store]","key","() => setEnabled((v) => !v)","(v) => !v","useCallback(() => setEnabled((v) => !v), [setEnabled])","{ enabled, setEnabled, toggle }","[{ descriptor, fn }]","useMemo<readonly TransformPair[]>(\n () => [{ descriptor, fn }],\n [descriptor, fn],\n )","(s: WidgetState) => s.transformStates?.[transformId]?.enabled === true"],"sources":["../src/widgets/stores/transforms.ts","../src/widgets/stores/pipeline-middleware.ts","../src/widgets/stores/widget-context.ts","../src/widgets/stores/widget-store-registry.ts","../src/widgets/stores/use-echart-instance.ts","../src/widgets/stores/use-transform.ts","../src/widgets/stores/use-transform-enabled.ts"],"sourcesContent":["import type { Transform } from './types'\n\nexport function applyTransforms(\n input: unknown,\n transforms: readonly Transform[],\n onError?: (id: string, error: Error) => void,\n): unknown {\n const disabledIds = new Set<string>()\n for (const t of transforms) {\n if (t.enabled && t.disables?.length) {\n for (const id of t.disables) disabledIds.add(id)\n }\n }\n let acc: unknown = input\n for (const t of transforms) {\n if (!t.enabled) continue\n if (disabledIds.has(t.id)) continue\n try {\n acc = t.fn(acc)\n } catch (e) {\n const err = e instanceof Error ? e : new Error(String(e))\n // eslint-disable-next-line no-console\n console.warn(`[widgets] Transform \"${t.id}\" failed:`, err)\n onError?.(t.id, err)\n }\n }\n return acc\n}\n\nexport function upsertTransform(\n transforms: readonly Transform[],\n next: Transform,\n): readonly Transform[] {\n const existing = transforms.find((t) => t.id === next.id)\n if (\n existing?.order === next.order &&\n existing?.enabled === next.enabled &&\n existing?.fn === next.fn &&\n existing?.type === next.type &&\n sameStringArray(existing?.disables, next.disables) &&\n sameStringArray(existing?.replaceMergeKeys, next.replaceMergeKeys)\n ) {\n return transforms\n }\n const filtered = transforms.filter((t) => t.id !== next.id)\n const idx = filtered.findIndex((t) => t.order > next.order)\n const out = filtered.slice()\n out.splice(idx === -1 ? out.length : idx, 0, next)\n return out\n}\n\nexport function removeTransform(\n transforms: readonly Transform[],\n id: string,\n): readonly Transform[] {\n if (!transforms.some((t) => t.id === id)) return transforms\n return transforms.filter((t) => t.id !== id)\n}\n\nfunction sameStringArray(\n a?: readonly string[],\n b?: readonly string[],\n): boolean {\n if (a === b) return true\n if (!a) return !b?.length\n if (!b) return !a.length\n if (a.length !== b.length) return false\n for (let i = 0; i < a.length; i++) if (a[i] !== b[i]) return false\n return true\n}\n","import type { StateCreator, StoreApi, StoreMutatorIdentifier } from 'zustand'\nimport type { Transform, WidgetState } from './types'\nimport { applyTransforms } from './transforms'\n\ntype PipelineMiddleware = <\n T extends WidgetState,\n Mps extends [StoreMutatorIdentifier, unknown][] = [],\n Mcs extends [StoreMutatorIdentifier, unknown][] = [],\n>(\n config: StateCreator<T, Mps, Mcs>,\n) => StateCreator<T, Mps, Mcs>\n\ntype SetFn<T> = StoreApi<T>['setState']\n\n// Per-store flag: true iff the current `state.error` was authored by the\n// pipeline (a transform threw) rather than by the consumer (Provider's\n// `error` prop or a direct setState). Lets the middleware clear stale\n// pipeline errors on a subsequent clean run without clobbering errors a\n// consumer set out-of-band.\nconst pipelineOwnedError = new WeakSet<StoreApi<WidgetState>>()\n\nexport const pipelineMiddleware: PipelineMiddleware = ((config) =>\n (set, get, api) => {\n const origSetState = api.setState as SetFn<WidgetState>\n const typedApi = api as StoreApi<WidgetState>\n\n const wrap = (delegate: SetFn<WidgetState>): SetFn<WidgetState> =>\n ((partial, replace) => {\n const current = (api.getState as () => WidgetState)()\n const incoming =\n typeof partial === 'function'\n ? (partial as (s: WidgetState) => Partial<WidgetState>)(current)\n : (partial as Partial<WidgetState>)\n\n const has = (key: keyof WidgetState) =>\n Object.prototype.hasOwnProperty.call(incoming, key)\n\n const rawDataChanged =\n has('rawData') && !Object.is(incoming.rawData, current.rawData)\n const dataXfChanged =\n has('dataTransforms') &&\n incoming.dataTransforms !== current.dataTransforms\n\n if (!rawDataChanged && !dataXfChanged) {\n // Consumer-authored writes that don't trigger the pipeline. If the\n // consumer is explicitly touching `error`, the next pipeline run is\n // no longer responsible for it — drop the pipeline-owned marker.\n if (has('error')) pipelineOwnedError.delete(typedApi)\n return delegate(incoming, replace as false)\n }\n\n const augmented: Partial<WidgetState> = { ...incoming }\n let firstError: unknown = undefined\n const onError = (_id: string, err: Error) => {\n if (firstError === undefined) firstError = err\n }\n\n const nextRaw = rawDataChanged ? incoming.rawData : current.rawData\n const nextXf: readonly Transform[] = dataXfChanged\n ? incoming.dataTransforms!\n : current.dataTransforms\n augmented.data = applyTransforms(nextRaw, nextXf, onError)\n\n // Reconcile `error` based on who authored the previous value:\n // - pipeline throw → stamp the new error, mark pipeline-owned.\n // - clean run AND previous error was pipeline-owned → clear it.\n // - clean run AND previous error was consumer-set → leave it.\n // Consumer-authored `error` in `incoming` also wins over the marker\n // (and resets the marker via the early-return branch above).\n if (firstError !== undefined) {\n augmented.error = firstError\n pipelineOwnedError.add(typedApi)\n } else if (pipelineOwnedError.has(typedApi) && !has('error')) {\n augmented.error = undefined\n pipelineOwnedError.delete(typedApi)\n } else if (has('error')) {\n // Consumer set error in the same call that ran the pipeline — honor\n // their write and surrender ownership.\n pipelineOwnedError.delete(typedApi)\n }\n\n return delegate(augmented, replace as false)\n }) as SetFn<WidgetState>\n\n // Wrap both the public setState (used by store.setState() callers) and\n // the inner set passed into the state creator (used by actions inside config).\n api.setState = wrap(origSetState) as typeof api.setState\n const wrappedInnerSet = wrap(set as SetFn<WidgetState>)\n\n return config(wrappedInnerSet as typeof set, get, api)\n }) as PipelineMiddleware\n","import { createContext, useContext } from 'react'\n\nexport const WidgetContext = createContext<string | null>(null)\n\nexport function useWidgetId(): string {\n const id = useContext(WidgetContext)\n if (id == null) {\n throw new Error(\n 'useWidgetId() must be called inside <Widget.Provider>. ' +\n 'If you are calling from outside the Provider tree, use the hooks ' +\n '(useWidget, useWidgetShallow, useTransform) directly with an explicit id.',\n )\n }\n return id\n}\n","import type { ECharts } from 'echarts'\nimport { useStore, type StoreApi } from 'zustand'\nimport { createStore } from 'zustand/vanilla'\nimport { devtools } from 'zustand/middleware'\nimport { useShallow } from 'zustand/react/shallow'\nimport { isDev } from '@carto/ps-utils'\nimport { pipelineMiddleware } from './pipeline-middleware'\nimport type { WidgetInit, WidgetState, WidgetStoreApi } from './types'\nimport type { DownloadContext } from '../actions/download/types'\n\nconst widgetStores = new Map<string, WidgetStoreApi>()\n\nconst widgetMountCounts = new Map<string, number>()\nconst warnedDuplicates = new Set<string>()\n\n// Per-widget capture-element registry. Held outside the reactive store so\n// publishing the element doesn't trigger any consumer re-renders — these\n// handles are read imperatively by per-widget download configs at click time\n// only. `Widget.State` writes its success-path content wrapper here on mount\n// (auto-cleared on unmount via callback ref), and `create*DownloadConfig`\n// looks it up to feed `html2canvas` for PNG export.\nconst captureEls = new Map<string, HTMLElement>()\n\n// Per-widget live ECharts instance registry. Same imperative-only contract\n// as `captureEls`: published by the `Widget.Echart` bridge on mount /\n// dispose, read at click time by actions that need to dispatch on the live\n// chart (e.g. `ZoomToggle`'s disable handler issuing\n// `setOption({}, { replaceMerge: ['dataZoom'] })` to clear the slider).\n// Held outside the reactive store so publishing never triggers consumer\n// re-renders.\nconst echartInstances = new Map<string, ECharts>()\n\n// Per-id subscribers notified whenever `setEchartInstance` writes a new\n// value. Powers `useEchartInstance(id)` (a `useSyncExternalStore` wrapper)\n// so actions like `BrushToggle` can react when the chart becomes available\n// — required for lifecycle effects that need the instance on mount but\n// arrive in the tree before the `Widget.Echart` bridge has run its init\n// `useEffect`.\ntype EchartInstanceListener = (chart: ECharts | null) => void\nconst echartInstanceSubscribers = new Map<string, Set<EchartInstanceListener>>()\n\nexport function getWidgetStore(id: string): WidgetStoreApi {\n const store = widgetStores.get(id)\n if (!store) throw new Error(`[widgets] Widget store \"${id}\" not found.`)\n return store\n}\n\nexport function hasWidgetStore(id: string): boolean {\n return widgetStores.has(id)\n}\n\nexport function deleteWidgetStore(id: string): void {\n widgetStores.delete(id)\n}\n\nexport function resetWidgetStore(id: string): void {\n const store = widgetStores.get(id)\n if (store) store.setState({ transformStates: {} })\n}\n\nexport function clearAllWidgetStores(): void {\n widgetStores.clear()\n widgetMountCounts.clear()\n warnedDuplicates.clear()\n captureEls.clear()\n echartInstances.clear()\n echartInstanceSubscribers.clear()\n}\n\n/**\n * Register or clear the capture element for a widget. Pass `null` to clear.\n * Called by `Widget.State` via a callback ref on its success-path content\n * wrapper. The element is read by per-widget download configs at click time\n * to feed `html2canvas` for PNG export.\n */\nexport function setCaptureEl(id: string, el: HTMLElement | null): void {\n if (el == null) captureEls.delete(id)\n else captureEls.set(id, el)\n}\n\n/**\n * Read the currently registered capture element for a widget. Returns `null`\n * when no `Widget.State` is on its success path (loading / error / empty)\n * or when the widget hasn't mounted.\n */\nexport function getCaptureEl(id: string): HTMLElement | null {\n return captureEls.get(id) ?? null\n}\n\n/**\n * `getData` for a `create*DownloadConfig`: the `data` of the store the\n * download menu was opened from (`ctx.id` — the fullscreen dialog's own\n * while it's open), or of widget `id` when the menu sits outside a\n * `<Widget.Provider>`.\n */\nexport function widgetStoreData<T>(id: string): (ctx: DownloadContext) => T {\n return (ctx) => getWidgetStore(ctx.id ?? id).getState().data as T\n}\n\n/**\n * `getCaptureEl` for a `create*DownloadConfig`: the capture element of the\n * store the download menu was opened from (`ctx.id`), or of widget `id`\n * outside a `<Widget.Provider>`.\n */\nexport function widgetCaptureEl(\n id: string,\n): (ctx: DownloadContext) => HTMLElement | null {\n return (ctx) => getCaptureEl(ctx.id ?? id)\n}\n\n/** @internal — exposed for tests and debugging only. */\nexport function clearAllCaptureEls(): void {\n captureEls.clear()\n}\n\n/**\n * Register or clear the live ECharts instance for a widget. Pass `null`\n * to clear. Called by the `Widget.Echart` bridge on mount / dispose.\n * Read by actions (e.g. `ZoomToggle`'s disable handler) that need to\n * dispatch on the live chart without going through the pipeline.\n *\n * Notifies subscribers registered via {@link subscribeEchartInstance}\n * after the map mutation, so reactive consumers (the\n * `useEchartInstance` hook) re-render with the new value.\n */\nexport function setEchartInstance(id: string, chart: ECharts | null): void {\n if (chart == null) echartInstances.delete(id)\n else echartInstances.set(id, chart)\n echartInstanceSubscribers.get(id)?.forEach((fn) => fn(chart))\n}\n\n/**\n * Read the currently registered ECharts instance for a widget. Returns\n * `null` when no `Widget.Echart` is mounted, or before the bridge has\n * created the instance.\n */\nexport function getEchartInstance(id: string): ECharts | null {\n return echartInstances.get(id) ?? null\n}\n\n/**\n * Subscribe to changes of the registered ECharts instance for a widget.\n * The listener is called *after* every {@link setEchartInstance} (with\n * the new chart, or `null` when cleared). Returns an unsubscribe\n * function. Used by the `useEchartInstance` hook to drive React effects\n * that need to react to instance arrival / departure (e.g.\n * `BrushToggle`'s `'finished'` re-dispatch loop).\n */\nexport function subscribeEchartInstance(\n id: string,\n listener: EchartInstanceListener,\n): () => void {\n let listeners = echartInstanceSubscribers.get(id)\n if (!listeners) {\n listeners = new Set()\n echartInstanceSubscribers.set(id, listeners)\n }\n listeners.add(listener)\n return () => {\n const set = echartInstanceSubscribers.get(id)\n if (!set) return\n set.delete(listener)\n if (set.size === 0) echartInstanceSubscribers.delete(id)\n }\n}\n\n/** @internal — exposed for tests and debugging only. */\nexport function clearAllEchartInstances(): void {\n echartInstances.clear()\n echartInstanceSubscribers.clear()\n}\n\n/** @internal — exposed for tests and debugging only. */\nexport function __debugListWidgetStores(): string[] {\n return Array.from(widgetStores.keys())\n}\n\n/**\n * Insert or replace a store entry in the registry without refcounting or\n * duplicate-id detection. Used by Provider's lazy `useState` init so the\n * store is reachable from `useWidget(id)` calls in children that render\n * before the Provider's mount effect runs. Refcounting and dev warns happen\n * in {@link registerWidgetStore} during the mount effect.\n *\n * @internal\n */\nexport function setWidgetStoreEntry(id: string, store: WidgetStoreApi): void {\n widgetStores.set(id, store)\n}\n\n/** @internal — used by Provider; not part of the public API. */\nexport function createWidgetStore(\n id: string,\n init: WidgetInit,\n): WidgetStoreApi {\n const builder = pipelineMiddleware<WidgetState>(() => ({\n rawData: init.data,\n data: init.data,\n dataTransforms: [],\n configTransforms: [],\n transformStates: {},\n isLoading: init.isLoading ?? false,\n isFetching: init.isFetching ?? false,\n error: init.error,\n rawFormatter: init.formatter,\n formatter: init.formatter,\n labelFormatter: init.labelFormatter,\n }))\n\n const store = createStore<WidgetState>()(\n devtools(builder, { name: `widget-${id}`, enabled: isDev() }),\n ) as unknown as WidgetStoreApi\n\n return store\n}\n\n/** @internal — registers a Provider mount and tracks/warns on duplicate ids in dev. */\nexport function registerWidgetStore(id: string, store: WidgetStoreApi): void {\n widgetStores.set(id, store)\n const count = (widgetMountCounts.get(id) ?? 0) + 1\n widgetMountCounts.set(id, count)\n if (count > 1 && isDev() && !warnedDuplicates.has(id)) {\n // eslint-disable-next-line no-console\n console.warn(\n `[widgets] Duplicate <Widget.Provider id=\"${id}\"> detected. ` +\n `Multiple providers sharing an id will race on prop sync and corrupt the store. ` +\n `Use unique ids per widget instance.`,\n )\n warnedDuplicates.add(id)\n }\n}\n\n/** @internal — Provider unmount counterpart; on last unmount removes the refcount entry. */\nexport function unregisterWidgetStore(\n id: string,\n options: { keepAlive: boolean },\n): void {\n const count = (widgetMountCounts.get(id) ?? 1) - 1\n if (count <= 0) {\n widgetMountCounts.delete(id)\n if (!options.keepAlive) widgetStores.delete(id)\n } else {\n widgetMountCounts.set(id, count)\n }\n}\n\nexport function useWidget<T, S extends WidgetState = WidgetState>(\n id: string,\n selector: (state: S) => T,\n): T {\n const store = getWidgetStore(id) as unknown as StoreApi<S>\n return useStore(store, selector)\n}\n\nexport function useWidgetShallow<T, S extends WidgetState = WidgetState>(\n id: string,\n selector: (state: S) => T,\n): T {\n const store = getWidgetStore(id) as unknown as StoreApi<S>\n return useStore(store, useShallow(selector))\n}\n","import { useSyncExternalStore } from 'react'\nimport type { ECharts } from 'echarts'\nimport {\n getEchartInstance,\n subscribeEchartInstance,\n} from './widget-store-registry'\n\nconst SSR_SNAPSHOT = (): ECharts | null => null\n\n/**\n * Reactive read of the live ECharts instance for a widget. Returns\n * `null` before the `Widget.Echart` bridge has mounted (or after it's\n * disposed); the consumer re-renders when the instance arrives /\n * departs / changes.\n *\n * Wraps {@link subscribeEchartInstance} via `useSyncExternalStore`, so\n * actions can use it inside an effect's deps array to react to chart\n * lifecycle events without polling. Required for actions like\n * `BrushToggle` whose effect needs to dispatch `takeGlobalCursor` the\n * moment the chart exists, then re-dispatch on every `'finished'`\n * event.\n */\nexport function useEchartInstance(id: string): ECharts | null {\n return useSyncExternalStore(\n (cb) => subscribeEchartInstance(id, cb),\n () => getEchartInstance(id),\n SSR_SNAPSHOT,\n )\n}\n","import {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n type Dispatch,\n type SetStateAction,\n} from 'react'\nimport { useStore } from 'zustand'\nimport { getWidgetStore } from './widget-store-registry'\nimport { removeTransform, upsertTransform } from './transforms'\nimport type {\n Transform,\n TransformDescriptor,\n TransformFn,\n TransformPair,\n WidgetState,\n} from './types'\n\nexport interface UseTransformOptions {\n initialEnabled?: boolean\n}\n\nexport interface TransformControls {\n enabled: boolean\n setEnabled: Dispatch<SetStateAction<boolean>>\n toggle: () => void\n}\n\ntype RegistrationKey = 'dataTransforms' | 'configTransforms'\n\ninterface Registration {\n key: RegistrationKey\n id: string\n}\n\nexport function useTransform(\n id: string,\n pairs: readonly TransformPair[],\n options?: UseTransformOptions,\n): TransformControls {\n if (pairs.length === 0) {\n throw new Error('[widgets] useTransform requires at least one pair.')\n }\n\n const store = getWidgetStore(id)\n const primaryId = pairs[0]!.descriptor.id\n const initialEnabled = options?.initialEnabled ?? true\n\n // Read `enabled` reactively from the store. Multiple mounts of the same\n // descriptor (e.g., Toolbox renders ZoomToggle both in the inline preview\n // and inside its overflow Paper) stay in sync because they share the\n // `transformStates[primaryId].enabled` slot.\n const persisted = useStore(\n store,\n (s) => s.transformStates[primaryId]?.enabled,\n )\n const enabled = typeof persisted === 'boolean' ? persisted : initialEnabled\n\n // Seed the store's `transformStates[primaryId].enabled` on first mount so\n // subsequent reads (and a rehydration after `keepAlive` remounts) have a\n // canonical value to read from. Idempotent: skip when already set.\n useEffect(() => {\n if (typeof persisted === 'boolean') return\n store.setState((s: WidgetState) => ({\n transformStates: {\n ...s.transformStates,\n [primaryId]: {\n ...s.transformStates[primaryId],\n enabled: initialEnabled,\n },\n },\n }))\n }, [store, primaryId, persisted, initialEnabled])\n\n const setEnabled = useCallback<Dispatch<SetStateAction<boolean>>>(\n (next) => {\n store.setState((s: WidgetState) => {\n const current = s.transformStates[primaryId]?.enabled ?? initialEnabled\n const value =\n typeof next === 'function'\n ? (next as (v: boolean) => boolean)(current)\n : next\n if (value === current) return {}\n return {\n transformStates: {\n ...s.transformStates,\n [primaryId]: {\n ...s.transformStates[primaryId],\n enabled: value,\n },\n },\n }\n })\n },\n [store, primaryId, initialEnabled],\n )\n\n // Track the latest registrations so the unmount cleanup knows what to remove.\n // Updated inside the register effect (post-render), never during render.\n const registeredRef = useRef<Registration[]>([])\n\n // Register / re-register when `pairs` reference or `enabled` changes.\n // upsertTransform is identity-stable: re-registering with an unchanged\n // descriptor + fn returns the same array reference, and the middleware\n // bypasses the pipeline for unchanged refs. Consumers should memoize\n // `pairs` (useSingleTransform does this internally; multi-pair consumers\n // should wrap the pairs array in useMemo).\n useEffect(() => {\n const next: Registration[] = []\n for (const { descriptor, fn } of pairs) {\n const key: RegistrationKey =\n descriptor.type === 'data' ? 'dataTransforms' : 'configTransforms'\n const transform: Transform = { ...descriptor, fn, enabled }\n store.setState(\n (s: WidgetState) =>\n ({\n [key]: upsertTransform(s[key], transform),\n }) as Partial<WidgetState>,\n )\n next.push({ key, id: descriptor.id })\n }\n registeredRef.current = next\n }, [store, pairs, enabled])\n\n // Unmount cleanup — remove every currently-registered descriptor. Reads from\n // the ref so we always remove the latest registrations, not a stale snapshot.\n useEffect(() => {\n return () => {\n for (const { key, id: descriptorId } of registeredRef.current) {\n store.setState(\n (s: WidgetState) =>\n ({\n [key]: removeTransform(s[key], descriptorId),\n }) as Partial<WidgetState>,\n )\n }\n registeredRef.current = []\n }\n }, [store])\n\n const toggle = useCallback(() => setEnabled((v) => !v), [setEnabled])\n\n return { enabled, setEnabled, toggle }\n}\n\nexport function useSingleTransform(\n id: string,\n descriptor: TransformDescriptor,\n fn: TransformFn,\n options?: UseTransformOptions,\n): TransformControls {\n const pairs = useMemo<readonly TransformPair[]>(\n () => [{ descriptor, fn }],\n [descriptor, fn],\n )\n return useTransform(id, pairs, options)\n}\n","import { useWidgetShallow } from './widget-store-registry'\nimport type { WidgetState } from './types'\n\n/**\n * Reactive read of a single transform's `enabled` flag from the\n * per-widget store. Returns `false` if the transform hasn't been\n * registered yet (i.e., the action component hasn't mounted) — safe\n * default for \"the feature is off\".\n *\n * Used by widget composers that want to react to an action's on/off\n * cycle without having the widget primitive import the action. For\n * example, the `CategoryWidget` storybook composer wires the\n * SearcherToggle's open state into `<Widget.Category searcherOpen=…>`\n * so the library primitive stays renderer-agnostic.\n *\n * Magic-string `transformId` is intentional — it lives at the composer\n * layer where the action is already imported by JSX, so the string\n * appears alongside the same name in the toolbox.\n */\nexport function useTransformEnabled(id: string, transformId: string): boolean {\n return useWidgetShallow(\n id,\n (s: WidgetState) => s.transformStates?.[transformId]?.enabled === true,\n )\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"stores-mad-9yFn.js","names":["getLegendStore(id)"],"sources":["../src/legend/stores/legend-context.ts","../src/legend/stores/selectors.ts","../src/legend/stores/legend-store-registry.ts"],"sourcesContent":["import { createContext, useContext } from 'react'\n\n/** @experimental This API is new and may change in a future release. */\nexport const LegendContext = createContext<string | null>(null)\n\n/** @experimental This API is new and may change in a future release. */\nexport function useLegendId(): string {\n const id = useContext(LegendContext)\n if (id == null) {\n throw new Error(\n 'useLegendId() must be called inside <Legend.Provider>. ' +\n 'If you are calling from outside the Provider tree, use the hooks ' +\n '(useLegendStore, useLegendShallow) directly with an explicit id.',\n )\n }\n return id\n}\n","import type { LegendGroup, LegendLayer, LegendState } from './types'\n\nconst byOrder = <T extends { order: number }>(a: T, b: T): number =>\n a.order - b.order\n\n/**\n * Groups sorted by `order`.\n *\n * @experimental This API is new and may change in a future release.\n */\nexport function selectOrderedGroups(state: LegendState): LegendGroup[] {\n return Object.values(state.groups).sort(byOrder)\n}\n\n/**\n * Layers belonging to `groupId` (pass `undefined` for ungrouped, top-level\n * layers), sorted by `order`.\n *\n * @experimental This API is new and may change in a future release.\n */\nexport function selectLayersByGroup(\n state: LegendState,\n groupId: string | undefined,\n): LegendLayer[] {\n return Object.values(state.layers)\n .filter((l) => l.groupId === groupId)\n .sort(byOrder)\n}\n\n/**\n * All layers sorted by `order`, regardless of group.\n *\n * @experimental This API is new and may change in a future release.\n */\nexport function selectOrderedLayers(state: LegendState): LegendLayer[] {\n return Object.values(state.layers).sort(byOrder)\n}\n\n/**\n * `true` when every group is collapsed (`false` with no groups) — drives the\n * \"Collapse all groups\" / \"Expand all groups\" menu label flip.\n *\n * @experimental This API is new and may change in a future release.\n */\nexport function selectAllGroupsCollapsed(state: LegendState): boolean {\n const groups = Object.values(state.groups)\n return groups.length > 0 && groups.every((g) => g.collapsed)\n}\n\n/**\n * Whether the legend has groups — gates panel-level group actions.\n *\n * @experimental This API is new and may change in a future release.\n */\nexport function selectHasGroups(state: LegendState): boolean {\n return Object.keys(state.groups).length > 0\n}\n\n/**\n * Visible layers grouped for the enabled-layers menu.\n *\n * @experimental This API is new and may change in a future release.\n */\nexport function selectVisibleLayersGrouped(\n state: LegendState,\n): { group?: LegendGroup; layers: LegendLayer[] }[] {\n const visible = (groupId: string | undefined) =>\n selectLayersByGroup(state, groupId).filter((l) => l.visible)\n const sections: { group?: LegendGroup; layers: LegendLayer[] }[] = []\n for (const group of selectOrderedGroups(state)) {\n const layers = visible(group.id)\n if (layers.length > 0) sections.push({ group, layers })\n }\n const ungrouped = visible(undefined)\n if (ungrouped.length > 0) sections.push({ layers: ungrouped })\n return sections\n}\n\n/**\n * Whether a layer has any collapsible body — something the row's `Collapse`\n * can actually fold. A layer with no variables, sections, or helper note\n * renders an empty body, so there is nothing to collapse. Gates the row's\n * title-area collapse affordance (chevron + click).\n *\n * @experimental This API is new and may change in a future release.\n */\nexport function selectLayerCollapsible(\n state: LegendState,\n layerId: string,\n): boolean {\n const layer = state.layers[layerId]\n if (!layer) return false\n return (\n layer.variables.length > 0 ||\n (layer.sections?.length ?? 0) > 0 ||\n // Truthiness matches the render condition — an empty-string note renders\n // no footer, so it must not enable the collapse affordance.\n Boolean(layer.helperText)\n )\n}\n\n/**\n * Tri-state visibility — derived for groups from their member layers, and the\n * state contract of a controlled `Legend.VisibilityToggle` for any custom\n * element kind.\n */\nexport type LegendVisibility = 'visible' | 'hidden' | 'mixed'\n\n/**\n * Tri-state group visibility: `'visible'` when every member layer is visible\n * (also for empty groups), `'hidden'` when none is, `'mixed'` otherwise.\n *\n * @experimental This API is new and may change in a future release.\n */\nexport function selectGroupVisibility(\n state: LegendState,\n groupId: string,\n): LegendVisibility {\n let anyVisible = false\n let anyHidden = false\n for (const layer of selectLayersByGroup(state, groupId)) {\n if (layer.visible) anyVisible = true\n else anyHidden = true\n }\n if (anyVisible && anyHidden) return 'mixed'\n return anyHidden ? 'hidden' : 'visible'\n}\n","import { isValidElement } from 'react'\nimport { useStore, type StoreApi } from 'zustand'\nimport { createStore } from 'zustand/vanilla'\nimport { devtools } from 'zustand/middleware'\nimport { useShallow } from 'zustand/react/shallow'\nimport { isDev } from '@carto/ps-utils'\nimport type {\n LegendConfigSection,\n LegendGroup,\n LegendGroupInput,\n LegendInit,\n LegendLayer,\n LegendLayerInput,\n LegendState,\n LegendStoreApi,\n} from './types'\nimport { selectLayersByGroup, selectOrderedGroups } from './selectors'\n\n// Per-panel legend store registry. One store per `<Legend.Provider id>`.\n// Mirrors the widgets-v2 registry pattern (keyed Map + refcounted mounts),\n// without the chart-pipeline machinery.\nconst legendStores = new Map<string, LegendStoreApi>()\nconst legendMountCounts = new Map<string, number>()\nconst warnedDuplicates = new Set<string>()\n\nconst clamp01 = (n: number): number => Math.min(1, Math.max(0, n))\n\n// ─── Pure state helpers ─────────────────────────────────────────────────────\n\n/**\n * Visibility↔collapse coupling. Hiding snapshots the current collapsed state\n * and collapses; showing restores the snapshot (manual choices persist) and\n * defaults to expanded. Idempotent: returns `null` when `visible` is already\n * the requested value, so a double-hide can't overwrite the real snapshot.\n */\nfunction visibilityPatch(\n entity: {\n visible: boolean\n collapsed: boolean\n collapsedBeforeHide?: boolean\n },\n visible: boolean,\n): {\n visible: boolean\n collapsed: boolean\n collapsedBeforeHide: boolean | undefined\n} | null {\n if (entity.visible === visible) return null\n return visible\n ? // Showing: restore the pre-hide collapsed state (default expand).\n {\n visible,\n collapsed: entity.collapsedBeforeHide ?? false,\n collapsedBeforeHide: undefined,\n }\n : // Hiding: snapshot, then collapse.\n {\n visible,\n collapsed: true,\n collapsedBeforeHide: entity.collapsed,\n }\n}\n\n/**\n * Manual collapse. While hidden, the snapshot follows the manual choice so\n * the next show keeps it.\n */\nfunction collapsePatch(\n entity: { visible: boolean },\n collapsed: boolean,\n): { collapsed: boolean; collapsedBeforeHide?: boolean } {\n return entity.visible\n ? { collapsed }\n : { collapsed, collapsedBeforeHide: collapsed }\n}\n\n/**\n * Reorder one entity within its **ordered** bucket: splice it out, insert at\n * the clamped index, and return the dense `order` rewrites (only the entries\n * whose order actually changes). `null` when the position doesn't change or\n * the id isn't in the bucket. Powers `moveLayer` / `moveGroup`.\n */\nfunction movePatch<T extends { id: string; order: number }>(\n bucket: T[],\n id: string,\n toIndex: number,\n): Map<string, number> | null {\n const fromIndex = bucket.findIndex((e) => e.id === id)\n if (fromIndex === -1) return null\n const clamped = Math.max(0, Math.min(bucket.length - 1, toIndex))\n if (clamped === fromIndex) return null\n const next = [...bucket]\n const [moved] = next.splice(fromIndex, 1)\n next.splice(clamped, 0, moved!)\n const orders = new Map<string, number>()\n next.forEach((entity, index) => {\n if (entity.order !== index) orders.set(entity.id, index)\n })\n return orders.size > 0 ? orders : null\n}\n\nfunction updateLayer(\n state: LegendState,\n id: string,\n patch: Partial<LegendLayer>,\n): Partial<LegendState> {\n const layer = state.layers[id]\n if (!layer) return {}\n return { layers: { ...state.layers, [id]: { ...layer, ...patch } } }\n}\n\nfunction updateGroup(\n state: LegendState,\n id: string,\n patch: Partial<LegendGroup>,\n): Partial<LegendState> {\n const group = state.groups[id]\n if (!group) return {}\n return { groups: { ...state.groups, [id]: { ...group, ...patch } } }\n}\n\n/**\n * Merge incoming config-select sections while preserving the user's picked\n * `active` for any section id that still exists and whose pick is still among\n * the new `options` (the structure — ids, titles, options, order — always\n * follows the props). Returns the previous array when the merge lands on the\n * same content, so unchanged syncs keep entity identity (bail-out).\n */\nfunction mergeSections(\n prev: LegendConfigSection[] | undefined,\n next: LegendConfigSection[] | undefined,\n): LegendConfigSection[] | undefined {\n if (!next || !prev || prev === next) return next\n const merged = next.map((section) => {\n const prevSection = prev.find((p) => p.id === section.id)\n return prevSection &&\n prevSection.active !== section.active &&\n section.options.includes(prevSection.active)\n ? { ...section, active: prevSection.active }\n : section\n })\n const sameAsPrev =\n prev.length === merged.length &&\n merged.every((m, i) => {\n const p = prev[i]!\n return (\n p.id === m.id &&\n p.title === m.title &&\n p.options === m.options &&\n p.active === m.active\n )\n })\n return sameAsPrev ? prev : merged\n}\n\n/**\n * Same-type, same-key React elements with shallow-equal props count as\n * equal, so a ReactNode field (e.g. `LegendGroup.icon`) re-created inline on\n * every render (`icon={<MyIcon />}`) doesn't look \"changed\" on every sync. A\n * different `key` is treated as a real change, same as a different type.\n */\nfunction reactElementEqual(a: unknown, b: unknown): boolean {\n if (!isValidElement(a) || !isValidElement(b)) return false\n if (a.type !== b.type || a.key !== b.key) return false\n return shallowEqualEntity(\n a.props as Record<string, unknown>,\n b.props as Record<string, unknown>,\n )\n}\n\n/**\n * Shallow equality over the union of both objects' keys — `Object.is` per\n * value, except React elements, which fall back to {@link reactElementEqual}.\n */\nfunction shallowEqualEntity<T extends object>(a: T, b: T): boolean {\n const keys = new Set([...Object.keys(a), ...Object.keys(b)]) as Set<keyof T>\n for (const key of keys) {\n if (Object.is(a[key], b[key])) continue\n if (!reactElementEqual(a[key], b[key])) return false\n }\n return true\n}\n\n/**\n * Reassign `order` to dense indexes `0..n-1` within each sibling bucket,\n * sorted by current order with ties broken by input position. This is the\n * only boundary where external (possibly duplicated) orders enter, so the\n * stored orders stay dense and unique within each bucket.\n */\nfunction normalizeOrders<T extends { order: number }>(\n entries: { merged: T; index: number }[],\n bucketOf: (e: T) => string | undefined,\n): void {\n const buckets = new Map<string | undefined, { merged: T; index: number }[]>()\n for (const entry of entries) {\n const key = bucketOf(entry.merged)\n const bucket = buckets.get(key)\n if (bucket) bucket.push(entry)\n else buckets.set(key, [entry])\n }\n for (const bucket of buckets.values()) {\n bucket\n .sort((a, b) => a.merged.order - b.merged.order || a.index - b.index)\n .forEach((entry, i) => {\n entry.merged.order = i\n })\n }\n}\n\n/**\n * Seed/merge one layer: static fields follow the input; interactive state\n * (`visible`/`opacity`/`collapsed`/`order`/`collapsedBeforeHide` + section\n * actives) sticks to the store entry when present. Shared by `_sync` (per\n * entry) and the imperative `setLegendLayer`.\n */\nfunction mergeLayerEntity(\n prev: LegendLayer | undefined,\n input: LegendLayerInput,\n fallbackOrder: number,\n): LegendLayer {\n return {\n ...input,\n visible: prev?.visible ?? input.visible ?? true,\n opacity: prev?.opacity ?? input.opacity ?? 1,\n collapsed: prev?.collapsed ?? input.collapsed ?? false,\n collapsedBeforeHide: prev?.collapsedBeforeHide,\n sections: mergeSections(prev?.sections, input.sections),\n order: prev?.order ?? input.order ?? fallbackOrder,\n } as LegendLayer\n}\n\n/**\n * Group counterpart of {@link mergeLayerEntity}. A group with no `prev`\n * state (first sync) defaults collapsed when none of its member layers is\n * visible yet — `hasVisibleLayer` is ignored once the group exists so a\n * user's manual expand/collapse always sticks.\n *\n * Only the declarative sync passes a meaningful `hasVisibleLayer` — it sees\n * the whole batch. The imperative path passes `true`; see\n * {@link upsertGroupState}.\n */\nfunction mergeGroupEntity(\n prev: LegendGroup | undefined,\n input: LegendGroupInput,\n fallbackOrder: number,\n hasVisibleLayer: boolean,\n): LegendGroup {\n return {\n ...input,\n collapsed: prev?.collapsed ?? input.collapsed ?? !hasVisibleLayer,\n collapsedBeforeHide: prev?.collapsedBeforeHide,\n order: prev?.order ?? input.order ?? fallbackOrder,\n } as LegendGroup\n}\n\n/**\n * Merge incoming definitions while preserving interactive state of known\n * entities: static fields (name, subtitle, variables, attributes, …) follow\n * the props; `visible`/`opacity`/`collapsed`/`order` stick to what's in the\n * store. New entities are seeded; vanished ones are dropped. Sibling orders\n * are normalized to dense indexes.\n *\n * Unchanged entities keep their previous object identity (`variables`\n * compared by reference), and when nothing changed at all the sync is a\n * no-op (`{}`), so stable consumer props never produce a state update.\n */\nfunction syncState(\n state: LegendState,\n layerInputs: LegendLayerInput[],\n groupInputs: LegendGroupInput[],\n): Partial<LegendState> {\n const layerEntries = layerInputs.map((input, index) => ({\n index,\n merged: mergeLayerEntity(state.layers[input.id], input, index),\n }))\n normalizeOrders(layerEntries, (l) => l.groupId)\n\n const groupsWithVisibleLayer = new Set(\n layerEntries\n .filter(({ merged }) => merged.visible && merged.groupId != null)\n .map(({ merged }) => merged.groupId!),\n )\n const groupEntries = groupInputs.map((input, index) => ({\n index,\n merged: mergeGroupEntity(\n state.groups[input.id],\n input,\n index,\n groupsWithVisibleLayer.has(input.id),\n ),\n }))\n normalizeOrders(groupEntries, () => undefined)\n\n // Reference preservation: reuse the previous entity object when nothing\n // about it changed, so subscribers see stable identities.\n let layersChanged = layerEntries.length !== Object.keys(state.layers).length\n const layers: Record<string, LegendLayer> = {}\n for (const { merged } of layerEntries) {\n const prev = state.layers[merged.id]\n if (prev && shallowEqualEntity(prev, merged)) {\n layers[merged.id] = prev\n } else {\n layers[merged.id] = merged\n layersChanged = true\n }\n }\n\n let groupsChanged = groupEntries.length !== Object.keys(state.groups).length\n const groups: Record<string, LegendGroup> = {}\n for (const { merged } of groupEntries) {\n const prev = state.groups[merged.id]\n if (prev && shallowEqualEntity(prev, merged)) {\n groups[merged.id] = prev\n } else {\n groups[merged.id] = merged\n groupsChanged = true\n }\n }\n\n if (!layersChanged && !groupsChanged) return {}\n return {\n layers: layersChanged ? layers : state.layers,\n groups: groupsChanged ? groups : state.groups,\n }\n}\n\n/**\n * Rebuild a layer/group record from a candidate map, normalizing dense order\n * per bucket and preserving the previous object identity for entries that are\n * unchanged. Returns `null` when nothing changed (so callers can bail with\n * `{}`).\n */\nfunction rebuildRecord<\n T extends { id: string; order: number; groupId?: string },\n>(\n prev: Record<string, T>,\n next: Record<string, T>,\n bucketOf: (e: T) => string | undefined,\n): Record<string, T> | null {\n const entries = Object.values(next).map((e, index) => ({\n index,\n merged: { ...e },\n }))\n normalizeOrders(entries, bucketOf)\n let changed = entries.length !== Object.keys(prev).length\n const out: Record<string, T> = {}\n for (const { merged } of entries) {\n const before = prev[merged.id]\n if (before && shallowEqualEntity(before, merged)) {\n out[merged.id] = before\n } else {\n out[merged.id] = merged\n changed = true\n }\n }\n return changed ? out : null\n}\n\n/** Add or update a single layer (imperative `setLegendLayer`). */\nfunction upsertLayerState(\n state: LegendState,\n input: LegendLayerInput,\n): Partial<LegendState> {\n const siblingCount = Object.values(state.layers).filter(\n (l) => l.groupId === input.groupId && l.id !== input.id,\n ).length\n const merged = mergeLayerEntity(state.layers[input.id], input, siblingCount)\n const layers = rebuildRecord(\n state.layers,\n { ...state.layers, [input.id]: merged },\n (l) => l.groupId,\n )\n return layers ? { layers } : {}\n}\n\n/** Remove a single layer, re-densifying its sibling orders. */\nfunction removeLayerState(\n state: LegendState,\n id: string,\n): Partial<LegendState> {\n if (!state.layers[id]) return {}\n const next = { ...state.layers }\n delete next[id]\n const layers = rebuildRecord(state.layers, next, (l) => l.groupId)\n return layers ? { layers } : {}\n}\n\n/**\n * Add or update a single group (imperative `setLegendGroup`).\n *\n * This sees one group against whatever layers happen to be registered, and\n * group-before-layer is a legitimate order — so inferring \"nothing visible\"\n * from that partial view seeded `collapsed: true`, which then won every\n * later merge through `prev?.collapsed`. Default is expanded unless the\n * input says otherwise; the visibility-based default stays in\n * {@link syncState}, which knows the full batch.\n */\nfunction upsertGroupState(\n state: LegendState,\n input: LegendGroupInput,\n): Partial<LegendState> {\n const count = Object.values(state.groups).filter(\n (g) => g.id !== input.id,\n ).length\n const merged = mergeGroupEntity(\n state.groups[input.id],\n input,\n count,\n // Never infer collapsed from a partial view of the members.\n true,\n )\n const groups = rebuildRecord(\n state.groups,\n { ...state.groups, [input.id]: merged },\n () => undefined,\n )\n return groups ? { groups } : {}\n}\n\n/**\n * Remove a group; its member layers are un-grouped (`groupId` cleared) so they\n * survive as ungrouped rows. Re-densifies both group and layer orders.\n */\nfunction removeGroupState(\n state: LegendState,\n id: string,\n): Partial<LegendState> {\n if (!state.groups[id]) return {}\n const nextGroups = { ...state.groups }\n delete nextGroups[id]\n const groups = rebuildRecord(state.groups, nextGroups, () => undefined)\n\n const members = Object.values(state.layers).filter((l) => l.groupId === id)\n if (members.length === 0) return groups ? { groups } : {}\n\n const nextLayers = { ...state.layers }\n for (const member of members) {\n nextLayers[member.id] = { ...member, groupId: undefined }\n }\n const layers = rebuildRecord(state.layers, nextLayers, (l) => l.groupId)\n return {\n ...(groups ? { groups } : {}),\n ...(layers ? { layers } : {}),\n }\n}\n\n// ─── Store factory ────────────────────────────────────────────────────────────\n\n/**\n * @internal — used by Provider; not part of the public API.\n *\n * @experimental This API is new and may change in a future release.\n */\nexport function createLegendStore(\n id: string,\n init: LegendInit = {},\n): LegendStoreApi {\n // Seed through the same merge/normalize path as `_sync`, so a later sync\n // with identical input is a guaranteed no-op (stable identities).\n const seeded = syncState(\n { layers: {}, groups: {} } as LegendState,\n init.layers ?? [],\n init.groups ?? [],\n )\n\n return createStore<LegendState>()(\n devtools(\n (set) => ({\n layers: seeded.layers ?? {},\n groups: seeded.groups ?? {},\n\n setVisibility: (lid, visible) =>\n set(\n (s) => {\n const layer = s.layers[lid]\n const patch = layer && visibilityPatch(layer, visible)\n return patch ? updateLayer(s, lid, patch) : {}\n },\n false,\n 'setVisibility',\n ),\n setOpacity: (lid, opacity) =>\n set(\n (s) => updateLayer(s, lid, { opacity: clamp01(opacity) }),\n false,\n 'setOpacity',\n ),\n setCollapsed: (lid, collapsed) =>\n set(\n (s) => {\n const layer = s.layers[lid]\n return layer\n ? updateLayer(s, lid, collapsePatch(layer, collapsed))\n : {}\n },\n false,\n 'setCollapsed',\n ),\n setSectionValue: (lid, sectionId, value) =>\n set(\n (s) => {\n const layer = s.layers[lid]\n const section = layer?.sections?.find((x) => x.id === sectionId)\n if (\n !layer?.sections ||\n !section ||\n section.active === value ||\n !section.options.includes(value)\n ) {\n return {}\n }\n const sections = layer.sections.map((x) =>\n x.id === sectionId ? { ...x, active: value } : x,\n )\n return updateLayer(s, lid, { sections })\n },\n false,\n 'setSectionValue',\n ),\n\n moveLayer: (lid, toIndex) =>\n set(\n (s) => {\n const layer = s.layers[lid]\n if (!layer) return {}\n const bucket = selectLayersByGroup(s, layer.groupId)\n const orders = movePatch(bucket, lid, toIndex)\n if (!orders) return {}\n const layers = { ...s.layers }\n for (const [id, order] of orders) {\n layers[id] = { ...layers[id]!, order }\n }\n return { layers }\n },\n false,\n 'moveLayer',\n ),\n\n setGroupVisibility: (gid, visible) =>\n set(\n (s) => {\n const group = s.groups[gid]\n if (!group) return {}\n const members = Object.values(s.layers).filter(\n (l) => l.groupId === gid,\n )\n const anyVisible = members.some((l) => l.visible)\n // Idempotence on the derived state: hide needs a visible member,\n // show needs a fully-hidden group (mixed acts in both directions\n // except show-from-mixed still shows the hidden remainder).\n if (members.length === 0 || (!visible && !anyVisible)) return {}\n\n // Cascade: each member runs the standard visibility↔collapse\n // coupling, so per-layer collapse snapshots survive a group\n // hide/show; members already at the target are untouched.\n const layers = { ...s.layers }\n let layersChanged = false\n for (const member of members) {\n const patch = visibilityPatch(member, visible)\n if (patch) {\n layers[member.id] = { ...member, ...patch }\n layersChanged = true\n }\n }\n if (!layersChanged) return {}\n\n // Group-level collapse coupling, only on real derived\n // transitions: any-visible→hidden snapshots + collapses;\n // hidden→visible restores the snapshot.\n let groupPatch: Partial<LegendGroup> | null = null\n if (!visible && anyVisible) {\n groupPatch = {\n collapsed: true,\n collapsedBeforeHide: group.collapsed,\n }\n } else if (visible && !anyVisible) {\n groupPatch = {\n collapsed: group.collapsedBeforeHide ?? false,\n collapsedBeforeHide: undefined,\n }\n }\n return {\n layers,\n ...(groupPatch\n ? {\n groups: {\n ...s.groups,\n [gid]: { ...group, ...groupPatch },\n },\n }\n : {}),\n }\n },\n false,\n 'setGroupVisibility',\n ),\n setGroupCollapsed: (gid, collapsed) =>\n set(\n (s) => {\n const group = s.groups[gid]\n if (!group) return {}\n // Group visibility is derived from members; while the group is\n // hidden the snapshot follows the manual choice (layer parity).\n const members = Object.values(s.layers).filter(\n (l) => l.groupId === gid,\n )\n const hidden =\n members.length > 0 && members.every((l) => !l.visible)\n return updateGroup(\n s,\n gid,\n hidden\n ? { collapsed, collapsedBeforeHide: collapsed }\n : { collapsed },\n )\n },\n false,\n 'setGroupCollapsed',\n ),\n\n moveGroup: (gid, toIndex) =>\n set(\n (s) => {\n if (!s.groups[gid]) return {}\n const orders = movePatch(selectOrderedGroups(s), gid, toIndex)\n if (!orders) return {}\n const groups = { ...s.groups }\n for (const [id, order] of orders) {\n groups[id] = { ...groups[id]!, order }\n }\n return { groups }\n },\n false,\n 'moveGroup',\n ),\n\n setLegendLayer: (input) =>\n set((s) => upsertLayerState(s, input), false, 'setLegendLayer'),\n removeLegendLayer: (lid) =>\n set((s) => removeLayerState(s, lid), false, 'removeLegendLayer'),\n setLegendGroup: (input) =>\n set((s) => upsertGroupState(s, input), false, 'setLegendGroup'),\n removeLegendGroup: (gid) =>\n set((s) => removeGroupState(s, gid), false, 'removeLegendGroup'),\n\n _sync: (layerInputs, groupInputs) =>\n set((s) => syncState(s, layerInputs, groupInputs), false, '_sync'),\n }),\n { name: `legend-${id}`, enabled: isDev() },\n ),\n )\n}\n\n// ─── Registry ───────────────────────────────────────────────────────────────\n\n/** @experimental This API is new and may change in a future release. */\nexport function getLegendStore(id: string): LegendStoreApi {\n const store = legendStores.get(id)\n if (!store) throw new Error(`[legend] Legend store \"${id}\" not found.`)\n return store\n}\n\n/** @experimental This API is new and may change in a future release. */\nexport function hasLegendStore(id: string): boolean {\n return legendStores.has(id)\n}\n\n/** @experimental This API is new and may change in a future release. */\nexport function deleteLegendStore(id: string): void {\n legendStores.delete(id)\n}\n\n/** @experimental This API is new and may change in a future release. */\nexport function clearAllLegendStores(): void {\n legendStores.clear()\n legendMountCounts.clear()\n warnedDuplicates.clear()\n}\n\n/**\n * @internal — used by Provider's lazy init so children can resolve the store first render.\n *\n * @experimental This API is new and may change in a future release.\n */\nexport function setLegendStoreEntry(id: string, store: LegendStoreApi): void {\n legendStores.set(id, store)\n}\n\n/**\n * @internal — registers a Provider mount and warns on duplicate ids in dev.\n *\n * @experimental This API is new and may change in a future release.\n */\nexport function registerLegendStore(id: string, store: LegendStoreApi): void {\n legendStores.set(id, store)\n const count = (legendMountCounts.get(id) ?? 0) + 1\n legendMountCounts.set(id, count)\n if (count > 1 && isDev() && !warnedDuplicates.has(id)) {\n // eslint-disable-next-line no-console\n console.warn(\n `[legend] Duplicate <Legend.Provider id=\"${id}\"> detected. ` +\n `Multiple providers sharing an id will race on prop sync. ` +\n `Use unique ids per legend panel.`,\n )\n warnedDuplicates.add(id)\n }\n}\n\n/**\n * @internal — Provider unmount counterpart; removes the entry on last unmount.\n *\n * @experimental This API is new and may change in a future release.\n */\nexport function unregisterLegendStore(\n id: string,\n options: { keepAlive: boolean },\n): void {\n const count = (legendMountCounts.get(id) ?? 1) - 1\n if (count <= 0) {\n legendMountCounts.delete(id)\n if (!options.keepAlive) legendStores.delete(id)\n } else {\n legendMountCounts.set(id, count)\n }\n}\n\n// ─── Hooks ────────────────────────────────────────────────────────────────────\n\n/** @experimental This API is new and may change in a future release. */\nexport function useLegendStore<T>(\n id: string,\n selector: (state: LegendState) => T,\n): T {\n const store = getLegendStore(id) as unknown as StoreApi<LegendState>\n return useStore(store, selector)\n}\n\n/** @experimental This API is new and may change in a future release. */\nexport function useLegendShallow<T>(\n id: string,\n selector: (state: LegendState) => T,\n): T {\n const store = getLegendStore(id) as unknown as StoreApi<LegendState>\n return useStore(store, useShallow(selector))\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"stores-mad-9yFn.js","names":["getLegendStore(id)"],"sources":["../src/legend/stores/legend-context.ts","../src/legend/stores/selectors.ts","../src/legend/stores/legend-store-registry.ts"],"sourcesContent":["import { createContext, useContext } from 'react'\n\n/** @experimental This API is new and may change in a future release. */\nexport const LegendContext = createContext<string | null>(null)\n\n/** @experimental This API is new and may change in a future release. */\nexport function useLegendId(): string {\n const id = useContext(LegendContext)\n if (id == null) {\n throw new Error(\n 'useLegendId() must be called inside <Legend.Provider>. ' +\n 'If you are calling from outside the Provider tree, use the hooks ' +\n '(useLegendStore, useLegendShallow) directly with an explicit id.',\n )\n }\n return id\n}\n","import type { LegendGroup, LegendLayer, LegendState } from './types'\n\nconst byOrder = <T extends { order: number }>(a: T, b: T): number =>\n a.order - b.order\n\n/**\n * Groups sorted by `order`.\n *\n * @experimental This API is new and may change in a future release.\n */\nexport function selectOrderedGroups(state: LegendState): LegendGroup[] {\n return Object.values(state.groups).sort(byOrder)\n}\n\n/**\n * Layers belonging to `groupId` (pass `undefined` for ungrouped, top-level\n * layers), sorted by `order`.\n *\n * @experimental This API is new and may change in a future release.\n */\nexport function selectLayersByGroup(\n state: LegendState,\n groupId: string | undefined,\n): LegendLayer[] {\n return Object.values(state.layers)\n .filter((l) => l.groupId === groupId)\n .sort(byOrder)\n}\n\n/**\n * All layers sorted by `order`, regardless of group.\n *\n * @experimental This API is new and may change in a future release.\n */\nexport function selectOrderedLayers(state: LegendState): LegendLayer[] {\n return Object.values(state.layers).sort(byOrder)\n}\n\n/**\n * `true` when every group is collapsed (`false` with no groups) — drives the\n * \"Collapse all groups\" / \"Expand all groups\" menu label flip.\n *\n * @experimental This API is new and may change in a future release.\n */\nexport function selectAllGroupsCollapsed(state: LegendState): boolean {\n const groups = Object.values(state.groups)\n return groups.length > 0 && groups.every((g) => g.collapsed)\n}\n\n/**\n * Whether the legend has groups — gates panel-level group actions.\n *\n * @experimental This API is new and may change in a future release.\n */\nexport function selectHasGroups(state: LegendState): boolean {\n return Object.keys(state.groups).length > 0\n}\n\n/**\n * Visible layers grouped for the enabled-layers menu.\n *\n * @experimental This API is new and may change in a future release.\n */\nexport function selectVisibleLayersGrouped(\n state: LegendState,\n): { group?: LegendGroup; layers: LegendLayer[] }[] {\n const visible = (groupId: string | undefined) =>\n selectLayersByGroup(state, groupId).filter((l) => l.visible)\n const sections: { group?: LegendGroup; layers: LegendLayer[] }[] = []\n for (const group of selectOrderedGroups(state)) {\n const layers = visible(group.id)\n if (layers.length > 0) sections.push({ group, layers })\n }\n const ungrouped = visible(undefined)\n if (ungrouped.length > 0) sections.push({ layers: ungrouped })\n return sections\n}\n\n/**\n * Whether a layer has any collapsible body — something the row's `Collapse`\n * can actually fold. A layer with no variables, sections, or helper note\n * renders an empty body, so there is nothing to collapse. Gates the row's\n * title-area collapse affordance (chevron + click).\n *\n * @experimental This API is new and may change in a future release.\n */\nexport function selectLayerCollapsible(\n state: LegendState,\n layerId: string,\n): boolean {\n const layer = state.layers[layerId]\n if (!layer) return false\n return (\n layer.variables.length > 0 ||\n (layer.sections?.length ?? 0) > 0 ||\n // Truthiness matches the render condition — an empty-string note renders\n // no footer, so it must not enable the collapse affordance.\n Boolean(layer.helperText)\n )\n}\n\n/**\n * Tri-state visibility — derived for groups from their member layers, and the\n * state contract of a controlled `Legend.VisibilityToggle` for any custom\n * element kind.\n */\nexport type LegendVisibility = 'visible' | 'hidden' | 'mixed'\n\n/**\n * Tri-state group visibility: `'visible'` when every member layer is visible\n * (also for empty groups), `'hidden'` when none is, `'mixed'` otherwise.\n *\n * @experimental This API is new and may change in a future release.\n */\nexport function selectGroupVisibility(\n state: LegendState,\n groupId: string,\n): LegendVisibility {\n let anyVisible = false\n let anyHidden = false\n for (const layer of selectLayersByGroup(state, groupId)) {\n if (layer.visible) anyVisible = true\n else anyHidden = true\n }\n if (anyVisible && anyHidden) return 'mixed'\n return anyHidden ? 'hidden' : 'visible'\n}\n","import { isValidElement } from 'react'\nimport { useStore, type StoreApi } from 'zustand'\nimport { createStore } from 'zustand/vanilla'\nimport { devtools } from 'zustand/middleware'\nimport { useShallow } from 'zustand/react/shallow'\nimport { isDev } from '@carto/ps-utils'\nimport type {\n LegendConfigSection,\n LegendGroup,\n LegendGroupInput,\n LegendInit,\n LegendLayer,\n LegendLayerInput,\n LegendState,\n LegendStoreApi,\n} from './types'\nimport { selectLayersByGroup, selectOrderedGroups } from './selectors'\n\n// Per-panel legend store registry. One store per `<Legend.Provider id>`.\n// Mirrors the widgets registry pattern (keyed Map + refcounted mounts),\n// without the chart-pipeline machinery.\nconst legendStores = new Map<string, LegendStoreApi>()\nconst legendMountCounts = new Map<string, number>()\nconst warnedDuplicates = new Set<string>()\n\nconst clamp01 = (n: number): number => Math.min(1, Math.max(0, n))\n\n// ─── Pure state helpers ─────────────────────────────────────────────────────\n\n/**\n * Visibility↔collapse coupling. Hiding snapshots the current collapsed state\n * and collapses; showing restores the snapshot (manual choices persist) and\n * defaults to expanded. Idempotent: returns `null` when `visible` is already\n * the requested value, so a double-hide can't overwrite the real snapshot.\n */\nfunction visibilityPatch(\n entity: {\n visible: boolean\n collapsed: boolean\n collapsedBeforeHide?: boolean\n },\n visible: boolean,\n): {\n visible: boolean\n collapsed: boolean\n collapsedBeforeHide: boolean | undefined\n} | null {\n if (entity.visible === visible) return null\n return visible\n ? // Showing: restore the pre-hide collapsed state (default expand).\n {\n visible,\n collapsed: entity.collapsedBeforeHide ?? false,\n collapsedBeforeHide: undefined,\n }\n : // Hiding: snapshot, then collapse.\n {\n visible,\n collapsed: true,\n collapsedBeforeHide: entity.collapsed,\n }\n}\n\n/**\n * Manual collapse. While hidden, the snapshot follows the manual choice so\n * the next show keeps it.\n */\nfunction collapsePatch(\n entity: { visible: boolean },\n collapsed: boolean,\n): { collapsed: boolean; collapsedBeforeHide?: boolean } {\n return entity.visible\n ? { collapsed }\n : { collapsed, collapsedBeforeHide: collapsed }\n}\n\n/**\n * Reorder one entity within its **ordered** bucket: splice it out, insert at\n * the clamped index, and return the dense `order` rewrites (only the entries\n * whose order actually changes). `null` when the position doesn't change or\n * the id isn't in the bucket. Powers `moveLayer` / `moveGroup`.\n */\nfunction movePatch<T extends { id: string; order: number }>(\n bucket: T[],\n id: string,\n toIndex: number,\n): Map<string, number> | null {\n const fromIndex = bucket.findIndex((e) => e.id === id)\n if (fromIndex === -1) return null\n const clamped = Math.max(0, Math.min(bucket.length - 1, toIndex))\n if (clamped === fromIndex) return null\n const next = [...bucket]\n const [moved] = next.splice(fromIndex, 1)\n next.splice(clamped, 0, moved!)\n const orders = new Map<string, number>()\n next.forEach((entity, index) => {\n if (entity.order !== index) orders.set(entity.id, index)\n })\n return orders.size > 0 ? orders : null\n}\n\nfunction updateLayer(\n state: LegendState,\n id: string,\n patch: Partial<LegendLayer>,\n): Partial<LegendState> {\n const layer = state.layers[id]\n if (!layer) return {}\n return { layers: { ...state.layers, [id]: { ...layer, ...patch } } }\n}\n\nfunction updateGroup(\n state: LegendState,\n id: string,\n patch: Partial<LegendGroup>,\n): Partial<LegendState> {\n const group = state.groups[id]\n if (!group) return {}\n return { groups: { ...state.groups, [id]: { ...group, ...patch } } }\n}\n\n/**\n * Merge incoming config-select sections while preserving the user's picked\n * `active` for any section id that still exists and whose pick is still among\n * the new `options` (the structure — ids, titles, options, order — always\n * follows the props). Returns the previous array when the merge lands on the\n * same content, so unchanged syncs keep entity identity (bail-out).\n */\nfunction mergeSections(\n prev: LegendConfigSection[] | undefined,\n next: LegendConfigSection[] | undefined,\n): LegendConfigSection[] | undefined {\n if (!next || !prev || prev === next) return next\n const merged = next.map((section) => {\n const prevSection = prev.find((p) => p.id === section.id)\n return prevSection &&\n prevSection.active !== section.active &&\n section.options.includes(prevSection.active)\n ? { ...section, active: prevSection.active }\n : section\n })\n const sameAsPrev =\n prev.length === merged.length &&\n merged.every((m, i) => {\n const p = prev[i]!\n return (\n p.id === m.id &&\n p.title === m.title &&\n p.options === m.options &&\n p.active === m.active\n )\n })\n return sameAsPrev ? prev : merged\n}\n\n/**\n * Same-type, same-key React elements with shallow-equal props count as\n * equal, so a ReactNode field (e.g. `LegendGroup.icon`) re-created inline on\n * every render (`icon={<MyIcon />}`) doesn't look \"changed\" on every sync. A\n * different `key` is treated as a real change, same as a different type.\n */\nfunction reactElementEqual(a: unknown, b: unknown): boolean {\n if (!isValidElement(a) || !isValidElement(b)) return false\n if (a.type !== b.type || a.key !== b.key) return false\n return shallowEqualEntity(\n a.props as Record<string, unknown>,\n b.props as Record<string, unknown>,\n )\n}\n\n/**\n * Shallow equality over the union of both objects' keys — `Object.is` per\n * value, except React elements, which fall back to {@link reactElementEqual}.\n */\nfunction shallowEqualEntity<T extends object>(a: T, b: T): boolean {\n const keys = new Set([...Object.keys(a), ...Object.keys(b)]) as Set<keyof T>\n for (const key of keys) {\n if (Object.is(a[key], b[key])) continue\n if (!reactElementEqual(a[key], b[key])) return false\n }\n return true\n}\n\n/**\n * Reassign `order` to dense indexes `0..n-1` within each sibling bucket,\n * sorted by current order with ties broken by input position. This is the\n * only boundary where external (possibly duplicated) orders enter, so the\n * stored orders stay dense and unique within each bucket.\n */\nfunction normalizeOrders<T extends { order: number }>(\n entries: { merged: T; index: number }[],\n bucketOf: (e: T) => string | undefined,\n): void {\n const buckets = new Map<string | undefined, { merged: T; index: number }[]>()\n for (const entry of entries) {\n const key = bucketOf(entry.merged)\n const bucket = buckets.get(key)\n if (bucket) bucket.push(entry)\n else buckets.set(key, [entry])\n }\n for (const bucket of buckets.values()) {\n bucket\n .sort((a, b) => a.merged.order - b.merged.order || a.index - b.index)\n .forEach((entry, i) => {\n entry.merged.order = i\n })\n }\n}\n\n/**\n * Seed/merge one layer: static fields follow the input; interactive state\n * (`visible`/`opacity`/`collapsed`/`order`/`collapsedBeforeHide` + section\n * actives) sticks to the store entry when present. Shared by `_sync` (per\n * entry) and the imperative `setLegendLayer`.\n */\nfunction mergeLayerEntity(\n prev: LegendLayer | undefined,\n input: LegendLayerInput,\n fallbackOrder: number,\n): LegendLayer {\n return {\n ...input,\n visible: prev?.visible ?? input.visible ?? true,\n opacity: prev?.opacity ?? input.opacity ?? 1,\n collapsed: prev?.collapsed ?? input.collapsed ?? false,\n collapsedBeforeHide: prev?.collapsedBeforeHide,\n sections: mergeSections(prev?.sections, input.sections),\n order: prev?.order ?? input.order ?? fallbackOrder,\n } as LegendLayer\n}\n\n/**\n * Group counterpart of {@link mergeLayerEntity}. A group with no `prev`\n * state (first sync) defaults collapsed when none of its member layers is\n * visible yet — `hasVisibleLayer` is ignored once the group exists so a\n * user's manual expand/collapse always sticks.\n *\n * Only the declarative sync passes a meaningful `hasVisibleLayer` — it sees\n * the whole batch. The imperative path passes `true`; see\n * {@link upsertGroupState}.\n */\nfunction mergeGroupEntity(\n prev: LegendGroup | undefined,\n input: LegendGroupInput,\n fallbackOrder: number,\n hasVisibleLayer: boolean,\n): LegendGroup {\n return {\n ...input,\n collapsed: prev?.collapsed ?? input.collapsed ?? !hasVisibleLayer,\n collapsedBeforeHide: prev?.collapsedBeforeHide,\n order: prev?.order ?? input.order ?? fallbackOrder,\n } as LegendGroup\n}\n\n/**\n * Merge incoming definitions while preserving interactive state of known\n * entities: static fields (name, subtitle, variables, attributes, …) follow\n * the props; `visible`/`opacity`/`collapsed`/`order` stick to what's in the\n * store. New entities are seeded; vanished ones are dropped. Sibling orders\n * are normalized to dense indexes.\n *\n * Unchanged entities keep their previous object identity (`variables`\n * compared by reference), and when nothing changed at all the sync is a\n * no-op (`{}`), so stable consumer props never produce a state update.\n */\nfunction syncState(\n state: LegendState,\n layerInputs: LegendLayerInput[],\n groupInputs: LegendGroupInput[],\n): Partial<LegendState> {\n const layerEntries = layerInputs.map((input, index) => ({\n index,\n merged: mergeLayerEntity(state.layers[input.id], input, index),\n }))\n normalizeOrders(layerEntries, (l) => l.groupId)\n\n const groupsWithVisibleLayer = new Set(\n layerEntries\n .filter(({ merged }) => merged.visible && merged.groupId != null)\n .map(({ merged }) => merged.groupId!),\n )\n const groupEntries = groupInputs.map((input, index) => ({\n index,\n merged: mergeGroupEntity(\n state.groups[input.id],\n input,\n index,\n groupsWithVisibleLayer.has(input.id),\n ),\n }))\n normalizeOrders(groupEntries, () => undefined)\n\n // Reference preservation: reuse the previous entity object when nothing\n // about it changed, so subscribers see stable identities.\n let layersChanged = layerEntries.length !== Object.keys(state.layers).length\n const layers: Record<string, LegendLayer> = {}\n for (const { merged } of layerEntries) {\n const prev = state.layers[merged.id]\n if (prev && shallowEqualEntity(prev, merged)) {\n layers[merged.id] = prev\n } else {\n layers[merged.id] = merged\n layersChanged = true\n }\n }\n\n let groupsChanged = groupEntries.length !== Object.keys(state.groups).length\n const groups: Record<string, LegendGroup> = {}\n for (const { merged } of groupEntries) {\n const prev = state.groups[merged.id]\n if (prev && shallowEqualEntity(prev, merged)) {\n groups[merged.id] = prev\n } else {\n groups[merged.id] = merged\n groupsChanged = true\n }\n }\n\n if (!layersChanged && !groupsChanged) return {}\n return {\n layers: layersChanged ? layers : state.layers,\n groups: groupsChanged ? groups : state.groups,\n }\n}\n\n/**\n * Rebuild a layer/group record from a candidate map, normalizing dense order\n * per bucket and preserving the previous object identity for entries that are\n * unchanged. Returns `null` when nothing changed (so callers can bail with\n * `{}`).\n */\nfunction rebuildRecord<\n T extends { id: string; order: number; groupId?: string },\n>(\n prev: Record<string, T>,\n next: Record<string, T>,\n bucketOf: (e: T) => string | undefined,\n): Record<string, T> | null {\n const entries = Object.values(next).map((e, index) => ({\n index,\n merged: { ...e },\n }))\n normalizeOrders(entries, bucketOf)\n let changed = entries.length !== Object.keys(prev).length\n const out: Record<string, T> = {}\n for (const { merged } of entries) {\n const before = prev[merged.id]\n if (before && shallowEqualEntity(before, merged)) {\n out[merged.id] = before\n } else {\n out[merged.id] = merged\n changed = true\n }\n }\n return changed ? out : null\n}\n\n/** Add or update a single layer (imperative `setLegendLayer`). */\nfunction upsertLayerState(\n state: LegendState,\n input: LegendLayerInput,\n): Partial<LegendState> {\n const siblingCount = Object.values(state.layers).filter(\n (l) => l.groupId === input.groupId && l.id !== input.id,\n ).length\n const merged = mergeLayerEntity(state.layers[input.id], input, siblingCount)\n const layers = rebuildRecord(\n state.layers,\n { ...state.layers, [input.id]: merged },\n (l) => l.groupId,\n )\n return layers ? { layers } : {}\n}\n\n/** Remove a single layer, re-densifying its sibling orders. */\nfunction removeLayerState(\n state: LegendState,\n id: string,\n): Partial<LegendState> {\n if (!state.layers[id]) return {}\n const next = { ...state.layers }\n delete next[id]\n const layers = rebuildRecord(state.layers, next, (l) => l.groupId)\n return layers ? { layers } : {}\n}\n\n/**\n * Add or update a single group (imperative `setLegendGroup`).\n *\n * This sees one group against whatever layers happen to be registered, and\n * group-before-layer is a legitimate order — so inferring \"nothing visible\"\n * from that partial view seeded `collapsed: true`, which then won every\n * later merge through `prev?.collapsed`. Default is expanded unless the\n * input says otherwise; the visibility-based default stays in\n * {@link syncState}, which knows the full batch.\n */\nfunction upsertGroupState(\n state: LegendState,\n input: LegendGroupInput,\n): Partial<LegendState> {\n const count = Object.values(state.groups).filter(\n (g) => g.id !== input.id,\n ).length\n const merged = mergeGroupEntity(\n state.groups[input.id],\n input,\n count,\n // Never infer collapsed from a partial view of the members.\n true,\n )\n const groups = rebuildRecord(\n state.groups,\n { ...state.groups, [input.id]: merged },\n () => undefined,\n )\n return groups ? { groups } : {}\n}\n\n/**\n * Remove a group; its member layers are un-grouped (`groupId` cleared) so they\n * survive as ungrouped rows. Re-densifies both group and layer orders.\n */\nfunction removeGroupState(\n state: LegendState,\n id: string,\n): Partial<LegendState> {\n if (!state.groups[id]) return {}\n const nextGroups = { ...state.groups }\n delete nextGroups[id]\n const groups = rebuildRecord(state.groups, nextGroups, () => undefined)\n\n const members = Object.values(state.layers).filter((l) => l.groupId === id)\n if (members.length === 0) return groups ? { groups } : {}\n\n const nextLayers = { ...state.layers }\n for (const member of members) {\n nextLayers[member.id] = { ...member, groupId: undefined }\n }\n const layers = rebuildRecord(state.layers, nextLayers, (l) => l.groupId)\n return {\n ...(groups ? { groups } : {}),\n ...(layers ? { layers } : {}),\n }\n}\n\n// ─── Store factory ────────────────────────────────────────────────────────────\n\n/**\n * @internal — used by Provider; not part of the public API.\n *\n * @experimental This API is new and may change in a future release.\n */\nexport function createLegendStore(\n id: string,\n init: LegendInit = {},\n): LegendStoreApi {\n // Seed through the same merge/normalize path as `_sync`, so a later sync\n // with identical input is a guaranteed no-op (stable identities).\n const seeded = syncState(\n { layers: {}, groups: {} } as LegendState,\n init.layers ?? [],\n init.groups ?? [],\n )\n\n return createStore<LegendState>()(\n devtools(\n (set) => ({\n layers: seeded.layers ?? {},\n groups: seeded.groups ?? {},\n\n setVisibility: (lid, visible) =>\n set(\n (s) => {\n const layer = s.layers[lid]\n const patch = layer && visibilityPatch(layer, visible)\n return patch ? updateLayer(s, lid, patch) : {}\n },\n false,\n 'setVisibility',\n ),\n setOpacity: (lid, opacity) =>\n set(\n (s) => updateLayer(s, lid, { opacity: clamp01(opacity) }),\n false,\n 'setOpacity',\n ),\n setCollapsed: (lid, collapsed) =>\n set(\n (s) => {\n const layer = s.layers[lid]\n return layer\n ? updateLayer(s, lid, collapsePatch(layer, collapsed))\n : {}\n },\n false,\n 'setCollapsed',\n ),\n setSectionValue: (lid, sectionId, value) =>\n set(\n (s) => {\n const layer = s.layers[lid]\n const section = layer?.sections?.find((x) => x.id === sectionId)\n if (\n !layer?.sections ||\n !section ||\n section.active === value ||\n !section.options.includes(value)\n ) {\n return {}\n }\n const sections = layer.sections.map((x) =>\n x.id === sectionId ? { ...x, active: value } : x,\n )\n return updateLayer(s, lid, { sections })\n },\n false,\n 'setSectionValue',\n ),\n\n moveLayer: (lid, toIndex) =>\n set(\n (s) => {\n const layer = s.layers[lid]\n if (!layer) return {}\n const bucket = selectLayersByGroup(s, layer.groupId)\n const orders = movePatch(bucket, lid, toIndex)\n if (!orders) return {}\n const layers = { ...s.layers }\n for (const [id, order] of orders) {\n layers[id] = { ...layers[id]!, order }\n }\n return { layers }\n },\n false,\n 'moveLayer',\n ),\n\n setGroupVisibility: (gid, visible) =>\n set(\n (s) => {\n const group = s.groups[gid]\n if (!group) return {}\n const members = Object.values(s.layers).filter(\n (l) => l.groupId === gid,\n )\n const anyVisible = members.some((l) => l.visible)\n // Idempotence on the derived state: hide needs a visible member,\n // show needs a fully-hidden group (mixed acts in both directions\n // except show-from-mixed still shows the hidden remainder).\n if (members.length === 0 || (!visible && !anyVisible)) return {}\n\n // Cascade: each member runs the standard visibility↔collapse\n // coupling, so per-layer collapse snapshots survive a group\n // hide/show; members already at the target are untouched.\n const layers = { ...s.layers }\n let layersChanged = false\n for (const member of members) {\n const patch = visibilityPatch(member, visible)\n if (patch) {\n layers[member.id] = { ...member, ...patch }\n layersChanged = true\n }\n }\n if (!layersChanged) return {}\n\n // Group-level collapse coupling, only on real derived\n // transitions: any-visible→hidden snapshots + collapses;\n // hidden→visible restores the snapshot.\n let groupPatch: Partial<LegendGroup> | null = null\n if (!visible && anyVisible) {\n groupPatch = {\n collapsed: true,\n collapsedBeforeHide: group.collapsed,\n }\n } else if (visible && !anyVisible) {\n groupPatch = {\n collapsed: group.collapsedBeforeHide ?? false,\n collapsedBeforeHide: undefined,\n }\n }\n return {\n layers,\n ...(groupPatch\n ? {\n groups: {\n ...s.groups,\n [gid]: { ...group, ...groupPatch },\n },\n }\n : {}),\n }\n },\n false,\n 'setGroupVisibility',\n ),\n setGroupCollapsed: (gid, collapsed) =>\n set(\n (s) => {\n const group = s.groups[gid]\n if (!group) return {}\n // Group visibility is derived from members; while the group is\n // hidden the snapshot follows the manual choice (layer parity).\n const members = Object.values(s.layers).filter(\n (l) => l.groupId === gid,\n )\n const hidden =\n members.length > 0 && members.every((l) => !l.visible)\n return updateGroup(\n s,\n gid,\n hidden\n ? { collapsed, collapsedBeforeHide: collapsed }\n : { collapsed },\n )\n },\n false,\n 'setGroupCollapsed',\n ),\n\n moveGroup: (gid, toIndex) =>\n set(\n (s) => {\n if (!s.groups[gid]) return {}\n const orders = movePatch(selectOrderedGroups(s), gid, toIndex)\n if (!orders) return {}\n const groups = { ...s.groups }\n for (const [id, order] of orders) {\n groups[id] = { ...groups[id]!, order }\n }\n return { groups }\n },\n false,\n 'moveGroup',\n ),\n\n setLegendLayer: (input) =>\n set((s) => upsertLayerState(s, input), false, 'setLegendLayer'),\n removeLegendLayer: (lid) =>\n set((s) => removeLayerState(s, lid), false, 'removeLegendLayer'),\n setLegendGroup: (input) =>\n set((s) => upsertGroupState(s, input), false, 'setLegendGroup'),\n removeLegendGroup: (gid) =>\n set((s) => removeGroupState(s, gid), false, 'removeLegendGroup'),\n\n _sync: (layerInputs, groupInputs) =>\n set((s) => syncState(s, layerInputs, groupInputs), false, '_sync'),\n }),\n { name: `legend-${id}`, enabled: isDev() },\n ),\n )\n}\n\n// ─── Registry ───────────────────────────────────────────────────────────────\n\n/** @experimental This API is new and may change in a future release. */\nexport function getLegendStore(id: string): LegendStoreApi {\n const store = legendStores.get(id)\n if (!store) throw new Error(`[legend] Legend store \"${id}\" not found.`)\n return store\n}\n\n/** @experimental This API is new and may change in a future release. */\nexport function hasLegendStore(id: string): boolean {\n return legendStores.has(id)\n}\n\n/** @experimental This API is new and may change in a future release. */\nexport function deleteLegendStore(id: string): void {\n legendStores.delete(id)\n}\n\n/** @experimental This API is new and may change in a future release. */\nexport function clearAllLegendStores(): void {\n legendStores.clear()\n legendMountCounts.clear()\n warnedDuplicates.clear()\n}\n\n/**\n * @internal — used by Provider's lazy init so children can resolve the store first render.\n *\n * @experimental This API is new and may change in a future release.\n */\nexport function setLegendStoreEntry(id: string, store: LegendStoreApi): void {\n legendStores.set(id, store)\n}\n\n/**\n * @internal — registers a Provider mount and warns on duplicate ids in dev.\n *\n * @experimental This API is new and may change in a future release.\n */\nexport function registerLegendStore(id: string, store: LegendStoreApi): void {\n legendStores.set(id, store)\n const count = (legendMountCounts.get(id) ?? 0) + 1\n legendMountCounts.set(id, count)\n if (count > 1 && isDev() && !warnedDuplicates.has(id)) {\n // eslint-disable-next-line no-console\n console.warn(\n `[legend] Duplicate <Legend.Provider id=\"${id}\"> detected. ` +\n `Multiple providers sharing an id will race on prop sync. ` +\n `Use unique ids per legend panel.`,\n )\n warnedDuplicates.add(id)\n }\n}\n\n/**\n * @internal — Provider unmount counterpart; removes the entry on last unmount.\n *\n * @experimental This API is new and may change in a future release.\n */\nexport function unregisterLegendStore(\n id: string,\n options: { keepAlive: boolean },\n): void {\n const count = (legendMountCounts.get(id) ?? 1) - 1\n if (count <= 0) {\n legendMountCounts.delete(id)\n if (!options.keepAlive) legendStores.delete(id)\n } else {\n legendMountCounts.set(id, count)\n }\n}\n\n// ─── Hooks ────────────────────────────────────────────────────────────────────\n\n/** @experimental This API is new and may change in a future release. */\nexport function useLegendStore<T>(\n id: string,\n selector: (state: LegendState) => T,\n): T {\n const store = getLegendStore(id) as unknown as StoreApi<LegendState>\n return useStore(store, selector)\n}\n\n/** @experimental This API is new and may change in a future release. */\nexport function useLegendShallow<T>(\n id: string,\n selector: (state: LegendState) => T,\n): T {\n const store = getLegendStore(id) as unknown as StoreApi<LegendState>\n return useStore(store, useShallow(selector))\n}\n"],"mappings":"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"}
@@ -0,0 +1,146 @@
1
+ import { c as e } from "react/compiler-runtime";
2
+ import { IconButton as t, alpha as n } from "@mui/material";
3
+ import { jsx as r } from "react/jsx-runtime";
4
+ import { ContentCopyOutlined as i } from "@mui/icons-material";
5
+ import { copy as a } from "@carto/ps-utils";
6
+ //#region src/components/copy-button/copy-button.tsx
7
+ function o(n) {
8
+ let o = e(17), s, c, l, u, d;
9
+ o[0] === n ? (s = o[1], c = o[2], l = o[3], u = o[4], d = o[5]) : ({copyText: c, onSuccess: u, onError: l, "aria-label": s, ...d} = n, o[0] = n, o[1] = s, o[2] = c, o[3] = l, o[4] = u, o[5] = d);
10
+ let f;
11
+ o[6] !== c || o[7] !== l || o[8] !== u ? (f = async function() {
12
+ try {
13
+ await a(c), u?.();
14
+ } catch (e) {
15
+ l?.(e);
16
+ }
17
+ }, o[6] = c, o[7] = l, o[8] = u, o[9] = f) : f = o[9];
18
+ let p = f, m;
19
+ o[10] === p ? m = o[11] : (m = () => void p(), o[10] = p, o[11] = m);
20
+ let h = s ?? "Copy", g;
21
+ o[12] === Symbol.for("react.memo_cache_sentinel") ? (g = /* @__PURE__ */ r(i, { fontSize: "small" }), o[12] = g) : g = o[12];
22
+ let _;
23
+ return o[13] !== d || o[14] !== m || o[15] !== h ? (_ = /* @__PURE__ */ r(t, {
24
+ size: "small",
25
+ onClick: m,
26
+ "aria-label": h,
27
+ ...d,
28
+ children: g
29
+ }), o[13] = d, o[14] = m, o[15] = h, o[16] = _) : _ = o[16], _;
30
+ }
31
+ //#endregion
32
+ //#region src/components/lasso-tool/styles.ts
33
+ function s(...e) {
34
+ return e.flat().filter((e) => !!e && e !== !0);
35
+ }
36
+ var c = "calc(100dvh - 96px)", l = {
37
+ container: {
38
+ display: "flex",
39
+ flexDirection: "row",
40
+ alignItems: "center",
41
+ justifyContent: "flex-start",
42
+ overflow: "hidden",
43
+ width: "fit-content",
44
+ "&.inline": {
45
+ flexDirection: "column",
46
+ alignItems: "flex-start",
47
+ gap: ({ spacing: e }) => e(1),
48
+ "& > * + *": {
49
+ borderTop: 1,
50
+ borderColor: "divider",
51
+ paddingTop: ({ spacing: e }) => e(1)
52
+ }
53
+ }
54
+ },
55
+ actions: { icon: {
56
+ width: ({ spacing: e }) => e(4),
57
+ height: ({ spacing: e }) => e(4),
58
+ borderRadius: 0,
59
+ ".MuiTouchRipple-ripple .MuiTouchRipple-child": { borderRadius: 0 }
60
+ } },
61
+ options: {
62
+ paper: { "&.MuiMenu-paper": { maxHeight: c } },
63
+ menu: {
64
+ "&.MuiMenu-list": { maxHeight: c },
65
+ paddingY: ({ spacing: e }) => e(1),
66
+ "&.inline": {
67
+ boxShadow: "none",
68
+ backgroundColor: "transparent",
69
+ borderRadius: ({ spacing: e }) => e(.5),
70
+ "& .MuiDivider-root": {
71
+ height: ({ spacing: e }) => e(4),
72
+ "&.MuiToggleButtonGroup-groupedHorizontal": { height: ({ spacing: e }) => e(4) },
73
+ "&.MuiToggleButtonGroup-groupedVertical": {
74
+ height: "auto",
75
+ width: ({ spacing: e }) => e(4),
76
+ margin: ({ spacing: e }) => `${e(.5, 0, 1)} !important`,
77
+ borderRadius: "0 !important"
78
+ }
79
+ },
80
+ "& .MuiToggleButton-sizeSmall": {
81
+ margin: 0,
82
+ "&.MuiToggleButtonGroup-grouped:not(.MuiDivider-root)": { margin: 0 },
83
+ "& + .MuiDivider-root.MuiToggleButtonGroup-groupedHorizontal": { height: ({ spacing: e }) => e(3) },
84
+ "& + .MuiDivider-root.MuiToggleButtonGroup-groupedVertical": {
85
+ height: "auto",
86
+ width: ({ spacing: e }) => e(3)
87
+ }
88
+ },
89
+ ".MuiToggleButtonGroup-grouped:not(.MuiDivider-root)": {
90
+ margin: 0,
91
+ "&:first-of-type": { marginLeft: 0 },
92
+ "&:not(:last-of-type)": { marginRight: ({ spacing: e }) => e(.5) }
93
+ },
94
+ "&.MuiToggleButtonGroup-horizontal:not(.MuiDivider-root)": { ".MuiToggleButtonGroup-grouped": { margin: ({ spacing: e }) => e(0, .5) } },
95
+ "&.MuiToggleButtonGroup-vertical:not(.MuiDivider-root)": { ".MuiToggleButtonGroup-grouped": {
96
+ margin: ({ spacing: e }) => e(0, 0, .5),
97
+ "&:not(:last-of-type)": { marginRight: 0 },
98
+ "&:last-of-type": { marginBottom: 0 }
99
+ } }
100
+ }
101
+ },
102
+ icon: {
103
+ borderRadius: 0,
104
+ width: ({ spacing: e }) => e(3)
105
+ },
106
+ title: {
107
+ paddingX: ({ spacing: e }) => e(2),
108
+ paddingBottom: ({ spacing: e }) => e(.5),
109
+ "&.inline": {
110
+ paddingX: 0,
111
+ paddingBottom: 0
112
+ }
113
+ },
114
+ icons: { color: ({ palette: e }) => e.text.primary },
115
+ tag: {
116
+ borderRadius: ({ spacing: e }) => e(.25),
117
+ border: "1px solid",
118
+ borderColor: ({ palette: e }) => e.primary.main,
119
+ paddingX: ({ spacing: e }) => e(.5),
120
+ color: ({ palette: e }) => e.primary.main,
121
+ backgroundColor: ({ palette: e }) => n(e.primary.main, .08)
122
+ },
123
+ more: { width: ({ spacing: e }) => e(4) }
124
+ },
125
+ chip: {
126
+ container: {
127
+ display: "flex",
128
+ flexDirection: "row",
129
+ alignItems: "center",
130
+ gap: ({ spacing: e }) => e(.5),
131
+ overflowX: "auto",
132
+ scrollbarWidth: "none",
133
+ paddingX: ({ spacing: e }) => e(1),
134
+ "&.inline": {
135
+ overflowX: "visible",
136
+ flexWrap: "wrap"
137
+ }
138
+ },
139
+ chip: { marginRight: ({ spacing: e }) => e(.5) },
140
+ disabled: { opacity: ({ palette: e }) => e.action.disabledOpacity }
141
+ }
142
+ };
143
+ //#endregion
144
+ export { l as n, o as r, s as t };
145
+
146
+ //# sourceMappingURL=styles-BCEBm7xh.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"styles-BCEBm7xh.js","names":["{\n copyText,\n onSuccess,\n onError,\n 'aria-label': ariaLabel,\n ...props\n}: CopyButtonProps","async function onCopy() {\n try {\n await copy(copyText)\n onSuccess?.()\n } catch (err) {\n onError?.(err as Error)\n }\n }","err","() => void onCopy()","<ContentCopyOutlined fontSize='small' />","<IconButton\n size='small'\n onClick={() => void onCopy()}\n aria-label={ariaLabel ?? 'Copy'}\n {...props}\n >\n <ContentCopyOutlined fontSize='small' />\n </IconButton>","ariaLabel ?? 'Copy'"],"sources":["../src/components/copy-button/copy-button.tsx","../src/components/lasso-tool/styles.ts"],"sourcesContent":["import { IconButton } from '@mui/material'\nimport { ContentCopyOutlined } from '@mui/icons-material'\nimport type { CopyButtonProps } from './types'\nimport { copy } from '@carto/ps-utils'\n\nexport function CopyButton({\n copyText,\n onSuccess,\n onError,\n 'aria-label': ariaLabel,\n ...props\n}: CopyButtonProps) {\n async function onCopy() {\n try {\n await copy(copyText)\n onSuccess?.()\n } catch (err) {\n onError?.(err as Error)\n }\n }\n return (\n <IconButton\n size='small'\n onClick={() => void onCopy()}\n aria-label={ariaLabel ?? 'Copy'}\n {...props}\n >\n <ContentCopyOutlined fontSize='small' />\n </IconButton>\n )\n}\n","import { alpha, type SxProps, type Theme } from '@mui/material'\n\ntype SxEntry = Exclude<\n NonNullable<SxProps<Theme>>,\n readonly unknown[] | boolean\n>\n\n/**\n * Merges a component's own `sx` with the caller's. Needed because `SxProps` is\n * not always an object — a function or an array is silently dropped by an\n * object spread — and MUI's array form rejects falsy entries.\n */\nexport function mergeSx(...values: (SxProps<Theme> | undefined)[]): SxEntry[] {\n return values\n .flat()\n .filter((entry): entry is SxEntry => !!entry && entry !== true)\n}\n\n/**\n * Ceiling for the options menu, replacing the design system's fixed 312px.\n * `dvh` so it follows the mobile address bar.\n *\n * The 96px gutter is MUI's own allowance, and it is not decorative: MUI's\n * Popover measures the paper mid-`Grow` (at scale 0.75), underestimates its\n * height and then fails to shift it up, so a taller ceiling overflows the\n * bottom of a short viewport and the last entries become unreachable — with a\n * 32px gutter, \"Layer filters\" landed off-screen on a 420px-tall window. This\n * leaves room for the anchor offset instead. The whole menu fits from a 511px\n * viewport up and scrolls below that.\n */\nconst MENU_MAX_HEIGHT = 'calc(100dvh - 96px)'\n\nexport const styles = {\n container: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'flex-start',\n overflow: 'hidden',\n width: 'fit-content',\n\n '&.inline': {\n flexDirection: 'column',\n alignItems: 'flex-start',\n gap: ({ spacing }) => spacing(1),\n // Horizontal separators between compound blocks. Blocks own no\n // `<Divider flexItem />` — omitting/reordering never orphans or doubles\n // rules. Vertical Dividers inside Modes/Actions stay in those blocks.\n '& > * + *': {\n borderTop: 1,\n borderColor: 'divider',\n paddingTop: ({ spacing }) => spacing(1),\n },\n },\n },\n actions: {\n icon: {\n width: ({ spacing }) => spacing(4),\n height: ({ spacing }) => spacing(4),\n borderRadius: 0,\n '.MuiTouchRipple-ripple .MuiTouchRipple-child': {\n borderRadius: 0,\n },\n },\n },\n options: {\n // The design system caps menus and their lists at 312px (\"defined by\n // design\"), but this menu is not a plain option list — interaction mode,\n // drawing tools, selection tools and layer filters add up to 415px, so the\n // last entries fell behind an unannounced scroll. Both the paper and the\n // list carry the cap, and the DS selectors are self-qualified (0,2,0), so\n // these have to be too.\n paper: { '&.MuiMenu-paper': { maxHeight: MENU_MAX_HEIGHT } },\n menu: {\n '&.MuiMenu-list': { maxHeight: MENU_MAX_HEIGHT },\n paddingY: ({ spacing }) => spacing(1),\n '&.inline': {\n boxShadow: 'none',\n backgroundColor: 'transparent',\n borderRadius: ({ spacing }) => spacing(0.5),\n\n '& .MuiDivider-root': {\n height: ({ spacing }) => spacing(4),\n\n '&.MuiToggleButtonGroup-groupedHorizontal': {\n height: ({ spacing }) => spacing(4),\n },\n '&.MuiToggleButtonGroup-groupedVertical': {\n height: 'auto',\n width: ({ spacing }) => spacing(4),\n margin: ({ spacing }) => `${spacing(0.5, 0, 1)} !important`,\n borderRadius: '0 !important',\n },\n },\n\n '& .MuiToggleButton-sizeSmall': {\n margin: 0,\n\n '&.MuiToggleButtonGroup-grouped:not(.MuiDivider-root)': {\n margin: 0,\n },\n '& + .MuiDivider-root.MuiToggleButtonGroup-groupedHorizontal': {\n height: ({ spacing }) => spacing(3),\n },\n '& + .MuiDivider-root.MuiToggleButtonGroup-groupedVertical': {\n height: 'auto',\n width: ({ spacing }) => spacing(3),\n },\n },\n\n '.MuiToggleButtonGroup-grouped:not(.MuiDivider-root)': {\n margin: 0,\n\n '&:first-of-type': {\n marginLeft: 0,\n },\n '&:not(:last-of-type)': {\n marginRight: ({ spacing }) => spacing(0.5),\n },\n },\n '&.MuiToggleButtonGroup-horizontal:not(.MuiDivider-root)': {\n '.MuiToggleButtonGroup-grouped': {\n margin: ({ spacing }) => spacing(0, 0.5),\n },\n },\n '&.MuiToggleButtonGroup-vertical:not(.MuiDivider-root)': {\n '.MuiToggleButtonGroup-grouped': {\n margin: ({ spacing }) => spacing(0, 0, 0.5),\n\n '&:not(:last-of-type)': {\n marginRight: 0,\n },\n '&:last-of-type': {\n marginBottom: 0,\n },\n },\n },\n },\n },\n icon: {\n borderRadius: 0,\n width: ({ spacing }) => spacing(3),\n },\n title: {\n paddingX: ({ spacing }) => spacing(2),\n paddingBottom: ({ spacing }) => spacing(0.5),\n\n '&.inline': {\n paddingX: 0,\n paddingBottom: 0,\n },\n },\n icons: {\n color: ({ palette }) => palette.text.primary,\n },\n tag: {\n borderRadius: ({ spacing }) => spacing(0.25),\n border: '1px solid',\n borderColor: ({ palette }) => palette.primary.main,\n paddingX: ({ spacing }) => spacing(0.5),\n color: ({ palette }) => palette.primary.main,\n backgroundColor: ({ palette }) => alpha(palette.primary.main, 0.08),\n },\n more: {\n width: ({ spacing }) => spacing(4),\n },\n },\n chip: {\n container: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n gap: ({ spacing }) => spacing(0.5),\n overflowX: 'auto',\n scrollbarWidth: 'none',\n paddingX: ({ spacing }) => spacing(1),\n\n '&.inline': {\n overflowX: 'visible',\n flexWrap: 'wrap',\n },\n },\n chip: {\n marginRight: ({ spacing }) => spacing(0.5),\n },\n disabled: {\n opacity: ({ palette }) => palette.action.disabledOpacity,\n },\n },\n} satisfies Record<string, SxProps<Theme>>\n"],"mappings":";;;;;;AAKA,SAAgB,EAAA,GAMI;gBAFJ,GAHd,GAEA,GADA,GAGG;CALsBA,AAAAA,EAAAA,OAAAA,0DACzB,wCAGA,cAAc,GACd,GAAA,KALyBA;CAOzBC,IAAAA;CAEe,AAAA,EAAA,OAAA,KAAA,EAAA,OAGX,KAAA,EAAA,OAFA,KAHJ,IAAA,iBAAwB;EACtB,IAAI;GAEF,AADA,MAAM,EAAK,CAAQ,GACnB,IAAY;EACd,SAASC,GAAK;GACZ,IAAU,CAAY;EACxB;CACF,GALe,EAAA,KAAA,GAGX,EAAA,KAAA,GAFA,EAAA,KAAA;CAHJ,IAAe,IAAfD,GAWaE;CAAW,AAAA,EAAA,QAAA,iBAAX,UAAM,KAAK,EAAO,GAAP,EAAA,MAAA;CACR,IAAA,IAAA,KAAa,QAGzBC;sDAAC,IAAA,kBAAA,GAAD,EAAqB,UAAS,QAAS,CAAA;CANzCC,IAAAA;CADF,OAKQ,EAAA,QAAA,KAAA,EAAA,QAFKF,KAAAA,EAAAA,QACGG,KAHd,IAAA,kBAAC,GAAD;EACE,MAAK;EACL,SAASH;EACT,cAAYG;EACZ,GAAI;EAEJF,UAAAA;CACU,CAAA,GAHN,EAAA,MAAA,GAFKD,EAAAA,MAAAA,GACGG,EAAAA,MAAAA,2BAHdD;AASJ;;;AClBA,SAAgB,EAAQ,GAAG,GAAmD;CAC5E,OAAO,EACJ,KAAK,CAAC,CACN,QAAQ,MAA4B,CAAC,CAAC,KAAS,MAAU,EAAI;AAClE;AAcA,IAAM,IAAkB,uBAEX,IAAS;CACpB,WAAW;EACT,SAAS;EACT,eAAe;EACf,YAAY;EACZ,gBAAgB;EAChB,UAAU;EACV,OAAO;EAEP,YAAY;GACV,eAAe;GACf,YAAY;GACZ,MAAM,EAAE,iBAAc,EAAQ,CAAC;GAI/B,aAAa;IACX,WAAW;IACX,aAAa;IACb,aAAa,EAAE,iBAAc,EAAQ,CAAC;GACxC;EACF;CACF;CACA,SAAS,EACP,MAAM;EACJ,QAAQ,EAAE,iBAAc,EAAQ,CAAC;EACjC,SAAS,EAAE,iBAAc,EAAQ,CAAC;EAClC,cAAc;EACd,gDAAgD,EAC9C,cAAc,EAChB;CACF,EACF;CACA,SAAS;EAOP,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAgB,EAAE;EAC3D,MAAM;GACJ,kBAAkB,EAAE,WAAW,EAAgB;GAC/C,WAAW,EAAE,iBAAc,EAAQ,CAAC;GACpC,YAAY;IACV,WAAW;IACX,iBAAiB;IACjB,eAAe,EAAE,iBAAc,EAAQ,EAAG;IAE1C,sBAAsB;KACpB,SAAS,EAAE,iBAAc,EAAQ,CAAC;KAElC,4CAA4C,EAC1C,SAAS,EAAE,iBAAc,EAAQ,CAAC,EACpC;KACA,0CAA0C;MACxC,QAAQ;MACR,QAAQ,EAAE,iBAAc,EAAQ,CAAC;MACjC,SAAS,EAAE,iBAAc,GAAG,EAAQ,IAAK,GAAG,CAAC,EAAE;MAC/C,cAAc;KAChB;IACF;IAEA,gCAAgC;KAC9B,QAAQ;KAER,wDAAwD,EACtD,QAAQ,EACV;KACA,+DAA+D,EAC7D,SAAS,EAAE,iBAAc,EAAQ,CAAC,EACpC;KACA,6DAA6D;MAC3D,QAAQ;MACR,QAAQ,EAAE,iBAAc,EAAQ,CAAC;KACnC;IACF;IAEA,uDAAuD;KACrD,QAAQ;KAER,mBAAmB,EACjB,YAAY,EACd;KACA,wBAAwB,EACtB,cAAc,EAAE,iBAAc,EAAQ,EAAG,EAC3C;IACF;IACA,2DAA2D,EACzD,iCAAiC,EAC/B,SAAS,EAAE,iBAAc,EAAQ,GAAG,EAAG,EACzC,EACF;IACA,yDAAyD,EACvD,iCAAiC;KAC/B,SAAS,EAAE,iBAAc,EAAQ,GAAG,GAAG,EAAG;KAE1C,wBAAwB,EACtB,aAAa,EACf;KACA,kBAAkB,EAChB,cAAc,EAChB;IACF,EACF;GACF;EACF;EACA,MAAM;GACJ,cAAc;GACd,QAAQ,EAAE,iBAAc,EAAQ,CAAC;EACnC;EACA,OAAO;GACL,WAAW,EAAE,iBAAc,EAAQ,CAAC;GACpC,gBAAgB,EAAE,iBAAc,EAAQ,EAAG;GAE3C,YAAY;IACV,UAAU;IACV,eAAe;GACjB;EACF;EACA,OAAO,EACL,QAAQ,EAAE,iBAAc,EAAQ,KAAK,QACvC;EACA,KAAK;GACH,eAAe,EAAE,iBAAc,EAAQ,GAAI;GAC3C,QAAQ;GACR,cAAc,EAAE,iBAAc,EAAQ,QAAQ;GAC9C,WAAW,EAAE,iBAAc,EAAQ,EAAG;GACtC,QAAQ,EAAE,iBAAc,EAAQ,QAAQ;GACxC,kBAAkB,EAAE,iBAAc,EAAM,EAAQ,QAAQ,MAAM,GAAI;EACpE;EACA,MAAM,EACJ,QAAQ,EAAE,iBAAc,EAAQ,CAAC,EACnC;CACF;CACA,MAAM;EACJ,WAAW;GACT,SAAS;GACT,eAAe;GACf,YAAY;GACZ,MAAM,EAAE,iBAAc,EAAQ,EAAG;GACjC,WAAW;GACX,gBAAgB;GAChB,WAAW,EAAE,iBAAc,EAAQ,CAAC;GAEpC,YAAY;IACV,WAAW;IACX,UAAU;GACZ;EACF;EACA,MAAM,EACJ,cAAc,EAAE,iBAAc,EAAQ,EAAG,EAC3C;EACA,UAAU,EACR,UAAU,EAAE,iBAAc,EAAQ,OAAO,gBAC3C;CACF;AACF"}
@@ -1,10 +1,10 @@
1
- import { C as e, S as t, T as n, p as r } from "./stores-tiFePP0A.js";
2
- import { d as i, n as a, t as o } from "./download-DGgFOaXj.js";
1
+ import { C as e, D as t, S as n, p as r } from "./stores-DcBOZlU3.js";
2
+ import { f as i, n as a, t as o } from "./download-B4sykOFm.js";
3
3
  import { c as ee } from "react/compiler-runtime";
4
4
  import { Box as s, Checkbox as c, IconButton as l, Skeleton as u, Table as d, TableBody as f, TableCell as p, TableContainer as m, TableHead as h, TablePagination as g, TableRow as _, TableSortLabel as v } from "@mui/material";
5
5
  import { Fragment as y, jsx as b, jsxs as x } from "react/jsx-runtime";
6
6
  import { FirstPage as S, KeyboardArrowLeft as C, KeyboardArrowRight as w, LastPage as T } from "@mui/icons-material";
7
- //#region src/widgets-v2/table/labels.tsx
7
+ //#region src/widgets/table/labels.tsx
8
8
  var E = {
9
9
  fontWeight: 600,
10
10
  color: "text.primary"
@@ -55,7 +55,7 @@ var E = {
55
55
  }
56
56
  };
57
57
  //#endregion
58
- //#region src/widgets-v2/table/table-ui.tsx
58
+ //#region src/widgets/table/table-ui.tsx
59
59
  function j(e) {
60
60
  let t = ee(82), { columns: n, rows: r, total: i, page: a, pageSize: o, pageSizeOptions: l, sort: u, keyColumn: y, selection: S, selectable: C, onSortChange: w, onPageChange: T, onPageSizeChange: E, onSelectionChange: O, onRowClick: j, onRowHover: M, labels: N, emptyContent: P, size: F } = e, I = l === void 0 ? k : l, L = y === void 0 ? "id" : y, R = C !== void 0 && C;
61
61
  process.env.NODE_ENV !== "production" && r.some((e) => e[L] == null) && console.error(`<TableUI>: rows are missing the identity column \`${L}\`. Set the \`keyColumn\` prop to a column present on every row, or add the column to the data.`);
@@ -112,7 +112,7 @@ function j(e) {
112
112
  checked: G,
113
113
  indeterminate: de,
114
114
  onChange: me,
115
- inputProps: { "aria-label": B.selectAll }
115
+ slotProps: { input: { "aria-label": B.selectAll } }
116
116
  })
117
117
  }) : null, t[32] = B, t[33] = G, t[34] = me, t[35] = R, t[36] = de, t[37] = q) : q = t[37];
118
118
  let J;
@@ -160,7 +160,7 @@ function j(e) {
160
160
  onClick: (e) => {
161
161
  e.stopPropagation(), ge(r);
162
162
  },
163
- inputProps: { "aria-label": B.selectRow(r) }
163
+ slotProps: { input: { "aria-label": B.selectRow(r) } }
164
164
  })
165
165
  }) : null, n.map((t) => /* @__PURE__ */ b(p, {
166
166
  align: t.align,
@@ -194,8 +194,8 @@ function j(e) {
194
194
  let { from: t, to: n, count: r } = e;
195
195
  return B.paginationOf(t, n, r);
196
196
  },
197
- ActionsComponent: ae,
198
- sx: A.pagination
197
+ sx: A.pagination,
198
+ ActionsComponent: ae
199
199
  }) : null, t[69] = ae, t[70] = B, t[71] = T, t[72] = E, t[73] = a, t[74] = o, t[75] = I, t[76] = re, t[77] = i, t[78] = $) : $ = t[78];
200
200
  let _e;
201
201
  return t[79] !== Q || t[80] !== $ ? (_e = /* @__PURE__ */ x(s, {
@@ -245,7 +245,7 @@ function ne(e) {
245
245
  };
246
246
  }
247
247
  //#endregion
248
- //#region src/widgets-v2/table/helpers.ts
248
+ //#region src/widgets/table/helpers.ts
249
249
  function M(e, t, n) {
250
250
  if (e == null && t == null) return 0;
251
251
  if (e == null) return 1;
@@ -290,11 +290,11 @@ function z(e) {
290
290
  return e == null ? "" : typeof e == "string" ? e : typeof e == "number" || typeof e == "boolean" ? String(e) : Array.isArray(e) || typeof e == "object" ? JSON.stringify(e) : "";
291
291
  }
292
292
  //#endregion
293
- //#region src/widgets-v2/table/table.tsx
293
+ //#region src/widgets/table/table.tsx
294
294
  function B(i) {
295
295
  let a = ee(59), o, s, c, l, u, d, f, p, m, h, g, _, v;
296
296
  a[0] === i ? (o = a[1], s = a[2], c = a[3], l = a[4], u = a[5], d = a[6], f = a[7], p = a[8], m = a[9], h = a[10], g = a[11], _ = a[12], v = a[13]) : ({columns: o, visibleColumns: v, initialPageSize: h, selection: m, onSelectionChange: d, onRowClick: l, onRowHover: u, remote: g, total: p, onSortChange: f, onPageChange: s, onPageSizeChange: c, ..._} = i, a[0] = i, a[1] = o, a[2] = s, a[3] = c, a[4] = l, a[5] = u, a[6] = d, a[7] = f, a[8] = p, a[9] = m, a[10] = h, a[11] = g, a[12] = _, a[13] = v);
297
- let y = h === void 0 ? 10 : h, x = g !== void 0 && g, S = n(), C = t(S, re), w;
297
+ let y = h === void 0 ? 10 : h, x = g !== void 0 && g, S = t(), C = n(S, re), w;
298
298
  a[14] === y ? w = a[15] : (w = (e) => ({
299
299
  sort: e.sort,
300
300
  page: e.page ?? 0,
@@ -372,7 +372,7 @@ function re(e) {
372
372
  return e.data;
373
373
  }
374
374
  //#endregion
375
- //#region src/widgets-v2/table/skeleton.tsx
375
+ //#region src/widgets/table/skeleton.tsx
376
376
  function ie(e) {
377
377
  let t = ee(11), { rows: n, columns: r, size: i } = e, a = n === void 0 ? 5 : n, o = r === void 0 ? 4 : r, c;
378
378
  t[0] === o ? c = t[1] : (c = /* @__PURE__ */ b(h, { children: /* @__PURE__ */ b(_, { children: Array.from({ length: o }).map(ae) }) }), t[0] = o, t[1] = c);
@@ -410,21 +410,15 @@ function ae(e, t) {
410
410
  }, `head-${t}`);
411
411
  }
412
412
  //#endregion
413
- //#region src/widgets-v2/table/download.ts
413
+ //#region src/widgets/table/download.ts
414
414
  function V(e) {
415
- let t = [];
416
- return e.getCaptureEl && t.push(a({
417
- filename: e.filename,
418
- getCaptureEl: e.getCaptureEl,
419
- pixelRatio: e.pngPixelRatio,
420
- backgroundColor: e.pngBackgroundColor
421
- })), t.push(o({
415
+ return o(e, a({
422
416
  filename: e.filename,
423
417
  getCsv: (t) => L(e.getData(t), e.columns)
424
- })), t;
418
+ }));
425
419
  }
426
420
  //#endregion
427
- //#region src/widgets-v2/table/transforms.ts
421
+ //#region src/widgets/table/transforms.ts
428
422
  function oe(e, t, n = "id") {
429
423
  if (t.length === 0 || !Array.isArray(e)) return e;
430
424
  let r = new Set(t);
@@ -437,4 +431,4 @@ function oe(e, t, n = "id") {
437
431
  //#endregion
438
432
  export { M as a, F as c, j as d, O as f, B as i, N as l, D as m, V as n, I as o, k as p, ie as r, P as s, oe as t, L as u };
439
433
 
440
- //# sourceMappingURL=table-lb5momun.js.map
434
+ //# sourceMappingURL=table-DEdW_fDj.js.map