@carto/ps-react-ui 4.4.0-chat-ui.6 → 4.4.0-chat-ui.7

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 (910) hide show
  1. package/dist/category-DwaeYjpX.js +656 -0
  2. package/dist/category-DwaeYjpX.js.map +1 -0
  3. package/dist/change-column-Cidl_M-4.js +1110 -0
  4. package/dist/change-column-Cidl_M-4.js.map +1 -0
  5. package/dist/chat.js +621 -672
  6. package/dist/chat.js.map +1 -1
  7. package/dist/components.js.map +1 -1
  8. package/dist/data-zoom-layout-DVYB8mIx.js +29 -0
  9. package/dist/data-zoom-layout-DVYB8mIx.js.map +1 -0
  10. package/dist/download-config-C7hf33ip.js +58 -0
  11. package/dist/download-config-C7hf33ip.js.map +1 -0
  12. package/dist/echart-CU0KmClP.js +176 -0
  13. package/dist/echart-CU0KmClP.js.map +1 -0
  14. package/dist/exports-Cr43OCul.js.map +1 -1
  15. package/dist/exports-Cx-f6m6U.js +63 -0
  16. package/dist/exports-Cx-f6m6U.js.map +1 -0
  17. package/dist/formatter-B9Bxn1k7.js +6 -0
  18. package/dist/formatter-B9Bxn1k7.js.map +1 -0
  19. package/dist/formula-DuC0NQLH.js +79 -0
  20. package/dist/formula-DuC0NQLH.js.map +1 -0
  21. package/dist/lasso-tool-BYbxrJ-7.js.map +1 -1
  22. package/dist/markdown-BD1jcknS.js +8326 -0
  23. package/dist/markdown-BD1jcknS.js.map +1 -0
  24. package/dist/option-builders-F-c9ELi1.js +122 -0
  25. package/dist/option-builders-F-c9ELi1.js.map +1 -0
  26. package/dist/options-CthfUJDz.js +46 -0
  27. package/dist/options-CthfUJDz.js.map +1 -0
  28. package/dist/png-item-CS4z1iSH.js +45 -0
  29. package/dist/png-item-CS4z1iSH.js.map +1 -0
  30. package/dist/range-l4fNHLEg.js +213 -0
  31. package/dist/range-l4fNHLEg.js.map +1 -0
  32. package/dist/resolve-theme-color-BdojIw0K.js +47 -0
  33. package/dist/resolve-theme-color-BdojIw0K.js.map +1 -0
  34. package/dist/row-DZSP99LW.js +34 -0
  35. package/dist/row-DZSP99LW.js.map +1 -0
  36. package/dist/series-DLNHDWs0.js +90 -0
  37. package/dist/series-DLNHDWs0.js.map +1 -0
  38. package/dist/shared-resize-observer-98b1SK1e.js +17 -0
  39. package/dist/shared-resize-observer-98b1SK1e.js.map +1 -0
  40. package/dist/smart-tooltip-D4vwQpFf.js.map +1 -1
  41. package/dist/spread-CngWB5KF.js +68 -0
  42. package/dist/spread-CngWB5KF.js.map +1 -0
  43. package/dist/style-DVnT6HC1.js +131 -0
  44. package/dist/style-DVnT6HC1.js.map +1 -0
  45. package/dist/styles-cohnxh9F.js +23 -0
  46. package/dist/styles-cohnxh9F.js.map +1 -0
  47. package/dist/table-CQCAnDLb.js +388 -0
  48. package/dist/table-CQCAnDLb.js.map +1 -0
  49. package/dist/tooltip-BDnrRKrp.js.map +1 -1
  50. package/dist/transforms-Cdx4fkU5.js +106 -0
  51. package/dist/transforms-Cdx4fkU5.js.map +1 -0
  52. package/dist/types/chat/containers/chat-content.d.ts +2 -2
  53. package/dist/types/chat/containers/styles.d.ts +9 -26
  54. package/dist/types/chat/feedback/chat-tool-code-area.d.ts +1 -3
  55. package/dist/types/chat/index.d.ts +1 -1
  56. package/dist/types/chat/types.d.ts +35 -3
  57. package/dist/types/components/basemaps/basemaps.d.ts +20 -0
  58. package/dist/types/components/geolocation-controls/geolocation-controls.d.ts +11 -0
  59. package/dist/types/components/lasso-tool/lasso-tool-inline.d.ts +17 -0
  60. package/dist/types/components/lasso-tool/lasso-tool.d.ts +21 -0
  61. package/dist/types/components/list-data/list-data.d.ts +16 -0
  62. package/dist/types/components/measurement-tools/measurement-tools.d.ts +20 -0
  63. package/dist/types/components/smart-tooltip/smart-tooltip.d.ts +17 -0
  64. package/dist/types/components/tooltip/tooltip.d.ts +13 -0
  65. package/dist/types/components/zoom-controls/zoom-controls.d.ts +16 -0
  66. package/dist/types/hooks/index.d.ts +0 -1
  67. package/dist/types/hooks/use-widget-ref.d.ts +9 -6
  68. package/dist/types/widgets/actions/brush-toggle/brush-overlay.d.ts +24 -0
  69. package/dist/types/widgets/actions/brush-toggle/brush-toggle.d.ts +29 -0
  70. package/dist/types/widgets/actions/brush-toggle/hit-test.d.ts +19 -0
  71. package/dist/types/widgets/actions/brush-toggle/hit-test.test.d.ts +1 -0
  72. package/dist/types/widgets/actions/brush-toggle/style.d.ts +21 -0
  73. package/dist/types/widgets/actions/brush-toggle/types.d.ts +73 -0
  74. package/dist/types/widgets/actions/download/download.d.ts +11 -0
  75. package/dist/types/widgets/actions/download/exports.d.ts +15 -0
  76. package/dist/types/widgets/actions/fullscreen/fullscreen.d.ts +13 -0
  77. package/dist/types/widgets/actions/index.d.ts +7 -5
  78. package/dist/types/widgets/actions/lock-selection/types.d.ts +2 -0
  79. package/dist/types/widgets/actions/relative-data/relative-data.d.ts +8 -2
  80. package/dist/types/widgets/actions/relative-data/types.d.ts +2 -0
  81. package/dist/types/widgets/actions/zoom-toggle/zoom-toggle.d.ts +4 -0
  82. package/dist/types/widgets/bar/config.d.ts +8 -4
  83. package/dist/types/widgets/category/category-ui.d.ts +3 -0
  84. package/dist/types/widgets/category/components/category-bar.d.ts +3 -0
  85. package/dist/types/widgets/category/components/category-legend.d.ts +3 -0
  86. package/dist/types/widgets/category/components/category-row-multi.d.ts +5 -1
  87. package/dist/types/widgets/category/components/category-row-other.d.ts +3 -0
  88. package/dist/types/widgets/category/components/category-row-single.d.ts +5 -1
  89. package/dist/types/widgets/category/config.d.ts +11 -0
  90. package/dist/types/widgets/category/index.d.ts +10 -2
  91. package/dist/types/widgets/category/style.d.ts +1 -0
  92. package/dist/types/widgets/category/types.d.ts +1 -0
  93. package/dist/types/widgets/echart/echart-ui.d.ts +7 -0
  94. package/dist/types/widgets/echart/echart.d.ts +6 -0
  95. package/dist/types/widgets/echart/options.d.ts +7 -0
  96. package/dist/types/widgets/echart/shared-resize-observer.d.ts +12 -0
  97. package/dist/types/widgets/echart/types.d.ts +5 -1
  98. package/dist/types/widgets/echart/utils.d.ts +54 -7
  99. package/dist/types/widgets/echart/utils.test.d.ts +1 -0
  100. package/dist/types/widgets/error/error.d.ts +10 -0
  101. package/dist/types/widgets/formula/components/item.d.ts +3 -0
  102. package/dist/types/widgets/formula/components/prefix.d.ts +3 -0
  103. package/dist/types/widgets/formula/components/row.d.ts +3 -0
  104. package/dist/types/widgets/formula/components/series.d.ts +3 -0
  105. package/dist/types/widgets/formula/components/suffix.d.ts +3 -0
  106. package/dist/types/widgets/formula/components/value.d.ts +3 -0
  107. package/dist/types/widgets/formula/config.d.ts +11 -0
  108. package/dist/types/widgets/formula/config.test.d.ts +1 -0
  109. package/dist/types/widgets/formula/formula-ui.d.ts +3 -0
  110. package/dist/types/widgets/histogram/config.d.ts +18 -2
  111. package/dist/types/widgets/histogram/index.d.ts +2 -1
  112. package/dist/types/widgets/histogram/types.d.ts +6 -3
  113. package/dist/types/widgets/loader/loader.d.ts +22 -0
  114. package/dist/types/widgets/loader/utils.d.ts +26 -3
  115. package/dist/types/widgets/markdown/config.d.ts +10 -0
  116. package/dist/types/widgets/markdown/markdown-ui.d.ts +7 -0
  117. package/dist/types/widgets/markdown/markdown.d.ts +3 -0
  118. package/dist/types/widgets/no-data/no-data.d.ts +3 -2
  119. package/dist/types/widgets/no-data/types.d.ts +5 -1
  120. package/dist/types/widgets/note/note.d.ts +10 -0
  121. package/dist/types/widgets/pie/config.d.ts +8 -4
  122. package/dist/types/widgets/range/components/range-item.d.ts +3 -0
  123. package/dist/types/widgets/range/config.d.ts +5 -0
  124. package/dist/types/widgets/range/range-ui.d.ts +3 -0
  125. package/dist/types/widgets/scatterplot/config.d.ts +7 -3
  126. package/dist/types/widgets/selection-summary/selection-summary.d.ts +11 -0
  127. package/dist/types/widgets/skeleton-loader/skeleton-loader.d.ts +10 -0
  128. package/dist/types/widgets/spread/components/max-value.d.ts +3 -0
  129. package/dist/types/widgets/spread/components/min-value.d.ts +3 -0
  130. package/dist/types/widgets/spread/components/separator.d.ts +3 -0
  131. package/dist/types/widgets/spread/config.d.ts +11 -0
  132. package/dist/types/widgets/spread/spread-ui.d.ts +3 -0
  133. package/dist/types/widgets/stores/index.d.ts +3 -2
  134. package/dist/types/widgets/stores/types.d.ts +12 -10
  135. package/dist/types/widgets/stores/use-widget-selector.d.ts +35 -0
  136. package/dist/types/widgets/stores/widget-store-branches.test.d.ts +1 -0
  137. package/dist/types/widgets/stores/widget-store-performance.test.d.ts +1 -0
  138. package/dist/types/widgets/stores/widget-store.d.ts +48 -27
  139. package/dist/types/widgets/subheader/subheader.d.ts +11 -0
  140. package/dist/types/widgets/table/config.d.ts +8 -3
  141. package/dist/types/widgets/table/config.test.d.ts +1 -0
  142. package/dist/types/widgets/table/hooks/use-pagination.d.ts +11 -3
  143. package/dist/types/widgets/table/hooks/use-selection.d.ts +11 -2
  144. package/dist/types/widgets/table/hooks/use-sort.d.ts +11 -3
  145. package/dist/types/widgets/table/index.d.ts +6 -2
  146. package/dist/types/widgets/table/types.d.ts +1 -1
  147. package/dist/types/widgets/timeseries/config.d.ts +8 -4
  148. package/dist/types/widgets/utils/chart-config/download-config.d.ts +3 -0
  149. package/dist/types/widgets/{_shared → utils}/chart-config/index.d.ts +3 -1
  150. package/dist/types/widgets/{_shared → utils}/chart-config/option-builders.d.ts +41 -9
  151. package/dist/types/widgets/utils/chart-config/option-builders.test.d.ts +1 -0
  152. package/dist/types/widgets/utils/formatter.d.ts +2 -0
  153. package/dist/types/widgets/utils/index.d.ts +7 -0
  154. package/dist/types/widgets/wrapper/components/actions.d.ts +3 -0
  155. package/dist/types/widgets/wrapper/components/options.d.ts +3 -0
  156. package/dist/types/widgets/wrapper/components/title.d.ts +3 -0
  157. package/dist/types/widgets/wrapper/wrapper-ui.d.ts +14 -0
  158. package/dist/types/widgets/wrapper/wrapper.d.ts +14 -0
  159. package/dist/types/widgets-v2/actions/brush-toggle/brush-toggle.d.ts +56 -0
  160. package/dist/types/widgets-v2/actions/brush-toggle/index.d.ts +3 -0
  161. package/dist/types/widgets-v2/actions/brush-toggle/labels.d.ts +5 -0
  162. package/dist/types/widgets-v2/actions/brush-toggle/style.d.ts +12 -0
  163. package/dist/types/widgets-v2/actions/brush-toggle/transforms.d.ts +11 -0
  164. package/dist/types/widgets-v2/actions/change-column/change-column-icon.d.ts +2 -0
  165. package/dist/types/widgets-v2/actions/change-column/change-column.d.ts +29 -0
  166. package/dist/types/widgets-v2/actions/change-column/index.d.ts +3 -0
  167. package/dist/types/widgets-v2/actions/change-column/labels.d.ts +5 -0
  168. package/dist/types/widgets-v2/actions/change-column/sortable-column-item.d.ts +14 -0
  169. package/dist/types/widgets-v2/actions/change-column/style.d.ts +33 -0
  170. package/dist/types/widgets-v2/actions/change-column/types.d.ts +10 -0
  171. package/dist/types/widgets-v2/actions/download/download.d.ts +18 -0
  172. package/dist/types/widgets-v2/actions/download/exports.d.ts +37 -0
  173. package/dist/types/widgets-v2/actions/download/icons.d.ts +12 -0
  174. package/dist/types/widgets-v2/actions/download/index.d.ts +6 -0
  175. package/dist/types/widgets-v2/actions/download/labels.d.ts +11 -0
  176. package/dist/types/widgets-v2/actions/download/png-item.d.ts +24 -0
  177. package/dist/types/widgets-v2/actions/download/style.d.ts +1 -0
  178. package/dist/types/widgets-v2/actions/download/types.d.ts +35 -0
  179. package/dist/types/widgets-v2/actions/fullscreen/fullscreen.d.ts +59 -0
  180. package/dist/types/widgets-v2/actions/fullscreen/index.d.ts +3 -0
  181. package/dist/types/widgets-v2/actions/fullscreen/labels.d.ts +5 -0
  182. package/dist/types/widgets-v2/actions/fullscreen/style.d.ts +48 -0
  183. package/dist/types/widgets-v2/actions/fullscreen/types.d.ts +14 -0
  184. package/dist/types/widgets-v2/actions/index.d.ts +9 -0
  185. package/dist/types/widgets-v2/actions/lock-selection/index.d.ts +3 -0
  186. package/dist/types/widgets-v2/actions/lock-selection/labels.d.ts +6 -0
  187. package/dist/types/widgets-v2/actions/lock-selection/lock-selection.d.ts +36 -0
  188. package/dist/types/widgets-v2/actions/lock-selection/style.d.ts +12 -0
  189. package/dist/types/widgets-v2/actions/lock-selection/transforms.d.ts +6 -0
  190. package/dist/types/widgets-v2/actions/relative-data/index.d.ts +3 -0
  191. package/dist/types/widgets-v2/actions/relative-data/labels.d.ts +5 -0
  192. package/dist/types/widgets-v2/actions/relative-data/relative-data.d.ts +39 -0
  193. package/dist/types/widgets-v2/actions/relative-data/style.d.ts +12 -0
  194. package/dist/types/widgets-v2/actions/relative-data/transforms.d.ts +30 -0
  195. package/dist/types/widgets-v2/actions/relative-data/transforms.test.d.ts +1 -0
  196. package/dist/types/widgets-v2/actions/searcher/filter.d.ts +6 -0
  197. package/dist/types/widgets-v2/actions/searcher/index.d.ts +4 -0
  198. package/dist/types/widgets-v2/actions/searcher/labels.d.ts +7 -0
  199. package/dist/types/widgets-v2/actions/searcher/searcher-toggle.d.ts +23 -0
  200. package/dist/types/widgets-v2/actions/searcher/searcher.d.ts +11 -0
  201. package/dist/types/widgets-v2/actions/searcher/style.d.ts +16 -0
  202. package/dist/types/widgets-v2/actions/stack-toggle/index.d.ts +3 -0
  203. package/dist/types/widgets-v2/actions/stack-toggle/labels.d.ts +5 -0
  204. package/dist/types/widgets-v2/actions/stack-toggle/stack-toggle.d.ts +10 -0
  205. package/dist/types/widgets-v2/actions/stack-toggle/style.d.ts +12 -0
  206. package/dist/types/widgets-v2/actions/stack-toggle/transforms.d.ts +13 -0
  207. package/dist/types/widgets-v2/actions/stack-toggle/transforms.test.d.ts +1 -0
  208. package/dist/types/widgets-v2/actions/zoom-toggle/index.d.ts +3 -0
  209. package/dist/types/widgets-v2/actions/zoom-toggle/labels.d.ts +5 -0
  210. package/dist/types/widgets-v2/actions/zoom-toggle/style.d.ts +12 -0
  211. package/dist/types/widgets-v2/actions/zoom-toggle/transforms.d.ts +51 -0
  212. package/dist/types/widgets-v2/actions/zoom-toggle/transforms.test.d.ts +1 -0
  213. package/dist/types/widgets-v2/actions/zoom-toggle/zoom-toggle.d.ts +35 -0
  214. package/dist/types/widgets-v2/bar/download.d.ts +24 -0
  215. package/dist/types/widgets-v2/bar/index.d.ts +4 -0
  216. package/dist/types/widgets-v2/bar/options.d.ts +43 -0
  217. package/dist/types/widgets-v2/bar/options.test.d.ts +1 -0
  218. package/dist/types/widgets-v2/bar/skeleton.d.ts +6 -0
  219. package/dist/types/widgets-v2/bar/types.d.ts +46 -0
  220. package/dist/types/widgets-v2/category/category-ui.d.ts +81 -0
  221. package/dist/types/widgets-v2/category/category.d.ts +48 -0
  222. package/dist/types/widgets-v2/category/components/category-bar-stacked.d.ts +28 -0
  223. package/dist/types/widgets-v2/category/components/category-bar.d.ts +23 -0
  224. package/dist/types/widgets-v2/category/components/category-legend.d.ts +18 -0
  225. package/dist/types/widgets-v2/category/components/category-row-multi.d.ts +31 -0
  226. package/dist/types/widgets-v2/category/components/category-row-other.d.ts +13 -0
  227. package/dist/types/widgets-v2/category/components/category-row-single.d.ts +28 -0
  228. package/dist/types/widgets-v2/category/components/category-row-stacked.d.ts +38 -0
  229. package/dist/types/widgets-v2/category/download.d.ts +16 -0
  230. package/dist/types/widgets-v2/category/download.test.d.ts +1 -0
  231. package/dist/types/widgets-v2/category/index.d.ts +10 -0
  232. package/dist/types/widgets-v2/category/skeleton.d.ts +11 -0
  233. package/dist/types/widgets-v2/category/style.d.ts +166 -0
  234. package/dist/types/widgets-v2/category/types.d.ts +53 -0
  235. package/dist/types/widgets-v2/echart/echart-ui.d.ts +44 -0
  236. package/dist/types/widgets-v2/echart/echart.d.ts +75 -0
  237. package/dist/types/widgets-v2/echart/index.d.ts +4 -0
  238. package/dist/types/widgets-v2/echart/shared-resize-observer.d.ts +5 -0
  239. package/dist/types/widgets-v2/echart/shared-resize-observer.test.d.ts +1 -0
  240. package/dist/types/widgets-v2/echart/style.d.ts +6 -0
  241. package/dist/types/widgets-v2/echart/use-chart-selection.d.ts +51 -0
  242. package/dist/types/widgets-v2/formula/delta.d.ts +22 -0
  243. package/dist/types/widgets-v2/formula/download.d.ts +20 -0
  244. package/dist/types/widgets-v2/formula/formula-ui.d.ts +20 -0
  245. package/dist/types/widgets-v2/formula/formula.d.ts +8 -0
  246. package/dist/types/widgets-v2/formula/index.d.ts +11 -0
  247. package/dist/types/widgets-v2/formula/note.d.ts +11 -0
  248. package/dist/types/widgets-v2/formula/prefix.d.ts +12 -0
  249. package/dist/types/widgets-v2/formula/series.d.ts +16 -0
  250. package/dist/types/widgets-v2/formula/skeleton.d.ts +4 -0
  251. package/dist/types/widgets-v2/formula/style.d.ts +29 -0
  252. package/dist/types/widgets-v2/formula/suffix.d.ts +12 -0
  253. package/dist/types/widgets-v2/formula/types.d.ts +43 -0
  254. package/dist/types/widgets-v2/formula/value.d.ts +14 -0
  255. package/dist/types/widgets-v2/histogram/download.d.ts +17 -0
  256. package/dist/types/widgets-v2/histogram/download.test.d.ts +1 -0
  257. package/dist/types/widgets-v2/histogram/index.d.ts +5 -0
  258. package/dist/types/widgets-v2/histogram/options.d.ts +42 -0
  259. package/dist/types/widgets-v2/histogram/options.test.d.ts +1 -0
  260. package/dist/types/widgets-v2/histogram/skeleton.d.ts +9 -0
  261. package/dist/types/widgets-v2/histogram/transforms.d.ts +17 -0
  262. package/dist/types/widgets-v2/histogram/transforms.test.d.ts +1 -0
  263. package/dist/types/widgets-v2/histogram/types.d.ts +51 -0
  264. package/dist/types/widgets-v2/index.d.ts +108 -0
  265. package/dist/types/widgets-v2/markdown/download.d.ts +16 -0
  266. package/dist/types/widgets-v2/markdown/download.test.d.ts +1 -0
  267. package/dist/types/widgets-v2/markdown/index.d.ts +6 -0
  268. package/dist/types/widgets-v2/markdown/markdown-content.d.ts +34 -0
  269. package/dist/types/widgets-v2/markdown/markdown-ui.d.ts +12 -0
  270. package/dist/types/widgets-v2/markdown/markdown.d.ts +6 -0
  271. package/dist/types/widgets-v2/markdown/skeleton.d.ts +4 -0
  272. package/dist/types/widgets-v2/markdown/style.d.ts +61 -0
  273. package/dist/types/widgets-v2/markdown/types.d.ts +4 -0
  274. package/dist/types/widgets-v2/note/labels.d.ts +5 -0
  275. package/dist/types/widgets-v2/note/style.d.ts +26 -0
  276. package/dist/types/widgets-v2/note/widget-note.d.ts +46 -0
  277. package/dist/types/widgets-v2/pie/download.d.ts +17 -0
  278. package/dist/types/widgets-v2/pie/download.test.d.ts +1 -0
  279. package/dist/types/widgets-v2/pie/index.d.ts +4 -0
  280. package/dist/types/widgets-v2/pie/options.d.ts +35 -0
  281. package/dist/types/widgets-v2/pie/options.test.d.ts +1 -0
  282. package/dist/types/widgets-v2/pie/skeleton.d.ts +4 -0
  283. package/dist/types/widgets-v2/pie/types.d.ts +57 -0
  284. package/dist/types/widgets-v2/provider/widget-provider.d.ts +32 -0
  285. package/dist/types/widgets-v2/range/index.d.ts +4 -0
  286. package/dist/types/widgets-v2/range/range-ui.d.ts +27 -0
  287. package/dist/types/widgets-v2/range/range.d.ts +24 -0
  288. package/dist/types/widgets-v2/range/skeleton.d.ts +9 -0
  289. package/dist/types/widgets-v2/range/style.d.ts +40 -0
  290. package/dist/types/widgets-v2/range/types.d.ts +37 -0
  291. package/dist/types/widgets-v2/scatterplot/download.d.ts +16 -0
  292. package/dist/types/widgets-v2/scatterplot/download.test.d.ts +1 -0
  293. package/dist/types/widgets-v2/scatterplot/index.d.ts +5 -0
  294. package/dist/types/widgets-v2/scatterplot/options.d.ts +42 -0
  295. package/dist/types/widgets-v2/scatterplot/options.test.d.ts +1 -0
  296. package/dist/types/widgets-v2/scatterplot/skeleton.d.ts +12 -0
  297. package/dist/types/widgets-v2/scatterplot/transforms.d.ts +17 -0
  298. package/dist/types/widgets-v2/scatterplot/transforms.test.d.ts +1 -0
  299. package/dist/types/widgets-v2/scatterplot/types.d.ts +54 -0
  300. package/dist/types/widgets-v2/selection-summary/labels.d.ts +6 -0
  301. package/dist/types/widgets-v2/selection-summary/selection-summary.d.ts +22 -0
  302. package/dist/types/widgets-v2/selection-summary/style.d.ts +23 -0
  303. package/dist/types/widgets-v2/spread/download.d.ts +15 -0
  304. package/dist/types/widgets-v2/spread/download.test.d.ts +1 -0
  305. package/dist/types/widgets-v2/spread/index.d.ts +6 -0
  306. package/dist/types/widgets-v2/spread/separator.d.ts +7 -0
  307. package/dist/types/widgets-v2/spread/skeleton.d.ts +9 -0
  308. package/dist/types/widgets-v2/spread/spread-ui.d.ts +18 -0
  309. package/dist/types/widgets-v2/spread/spread.d.ts +5 -0
  310. package/dist/types/widgets-v2/spread/types.d.ts +25 -0
  311. package/dist/types/widgets-v2/state/labels.d.ts +7 -0
  312. package/dist/types/widgets-v2/state/labels.test.d.ts +1 -0
  313. package/dist/types/widgets-v2/state/style.d.ts +19 -0
  314. package/dist/types/widgets-v2/state/widget-state.d.ts +19 -0
  315. package/dist/types/widgets-v2/stores/index.d.ts +8 -0
  316. package/dist/types/widgets-v2/stores/pipeline-middleware.d.ts +5 -0
  317. package/dist/types/widgets-v2/stores/pipeline-middleware.test.d.ts +1 -0
  318. package/dist/types/widgets-v2/stores/transforms.d.ts +4 -0
  319. package/dist/types/widgets-v2/stores/transforms.test.d.ts +1 -0
  320. package/dist/types/widgets-v2/stores/types.d.ts +55 -0
  321. package/dist/types/widgets-v2/stores/use-echart-instance.d.ts +15 -0
  322. package/dist/types/widgets-v2/stores/use-transform-enabled.d.ts +17 -0
  323. package/dist/types/widgets-v2/stores/use-transform.d.ts +12 -0
  324. package/dist/types/widgets-v2/stores/widget-context.d.ts +2 -0
  325. package/dist/types/widgets-v2/stores/widget-store-registry.d.ts +74 -0
  326. package/dist/types/widgets-v2/stores/widget-store-registry.test.d.ts +1 -0
  327. package/dist/types/widgets-v2/subheader/style.d.ts +10 -0
  328. package/dist/types/widgets-v2/subheader/subheader.d.ts +11 -0
  329. package/dist/types/widgets-v2/table/download.d.ts +18 -0
  330. package/dist/types/widgets-v2/table/download.test.d.ts +1 -0
  331. package/dist/types/widgets-v2/table/helpers.d.ts +32 -0
  332. package/dist/types/widgets-v2/table/helpers.test.d.ts +1 -0
  333. package/dist/types/widgets-v2/table/index.d.ts +7 -0
  334. package/dist/types/widgets-v2/table/labels.d.ts +22 -0
  335. package/dist/types/widgets-v2/table/skeleton.d.ts +22 -0
  336. package/dist/types/widgets-v2/table/style.d.ts +40 -0
  337. package/dist/types/widgets-v2/table/table-ui.d.ts +44 -0
  338. package/dist/types/widgets-v2/table/table.d.ts +50 -0
  339. package/dist/types/widgets-v2/table/types.d.ts +48 -0
  340. package/dist/types/widgets-v2/test-utils.d.ts +52 -0
  341. package/dist/types/widgets-v2/timeseries/download.d.ts +17 -0
  342. package/dist/types/widgets-v2/timeseries/download.test.d.ts +1 -0
  343. package/dist/types/widgets-v2/timeseries/index.d.ts +4 -0
  344. package/dist/types/widgets-v2/timeseries/options.d.ts +39 -0
  345. package/dist/types/widgets-v2/timeseries/options.test.d.ts +1 -0
  346. package/dist/types/widgets-v2/timeseries/skeleton.d.ts +8 -0
  347. package/dist/types/widgets-v2/timeseries/types.d.ts +60 -0
  348. package/dist/types/widgets-v2/toolbox/labels.d.ts +5 -0
  349. package/dist/types/widgets-v2/toolbox/style.d.ts +30 -0
  350. package/dist/types/widgets-v2/toolbox/toolbox.d.ts +49 -0
  351. package/dist/types/widgets-v2/types.d.ts +25 -0
  352. package/dist/types/widgets-v2/utils/data-zoom-layout.d.ts +11 -0
  353. package/dist/types/widgets-v2/utils/index.d.ts +3 -0
  354. package/dist/types/widgets-v2/utils/merge-options.d.ts +12 -0
  355. package/dist/types/widgets-v2/utils/merge-options.test.d.ts +1 -0
  356. package/dist/types/widgets-v2/utils/resolve-theme-color.d.ts +18 -0
  357. package/dist/types/widgets-v2/utils/resolve-theme-color.test.d.ts +1 -0
  358. package/dist/types/widgets-v2/wrapper/index.d.ts +4 -0
  359. package/dist/types/widgets-v2/wrapper/labels.d.ts +6 -0
  360. package/dist/types/widgets-v2/wrapper/style.d.ts +111 -0
  361. package/dist/types/widgets-v2/wrapper/widget-actions.d.ts +22 -0
  362. package/dist/types/widgets-v2/wrapper/widget-content.d.ts +12 -0
  363. package/dist/types/widgets-v2/wrapper/widget-wrapper.d.ts +51 -0
  364. package/dist/use-transform-DXPN3nY7.js +110 -0
  365. package/dist/use-transform-DXPN3nY7.js.map +1 -0
  366. package/dist/use-widget-ref-Ddr_SlJJ.js +22 -0
  367. package/dist/use-widget-ref-Ddr_SlJJ.js.map +1 -0
  368. package/dist/use-widget-selector-DFl2hW0R.js +12 -0
  369. package/dist/use-widget-selector-DFl2hW0R.js.map +1 -0
  370. package/dist/{utils-idmvq0Oa.js → utils-BOhInag6.js} +95 -70
  371. package/dist/utils-BOhInag6.js.map +1 -0
  372. package/dist/widget-context-DTGO0Yta.js +13 -0
  373. package/dist/widget-context-DTGO0Yta.js.map +1 -0
  374. package/dist/widget-store-Bw5zRUGg.js +261 -0
  375. package/dist/widget-store-Bw5zRUGg.js.map +1 -0
  376. package/dist/widget-store-registry-_W4Z4xp-.js +178 -0
  377. package/dist/widget-store-registry-_W4Z4xp-.js.map +1 -0
  378. package/dist/widgets/actions.js +1120 -760
  379. package/dist/widgets/actions.js.map +1 -1
  380. package/dist/widgets/bar.js +87 -97
  381. package/dist/widgets/bar.js.map +1 -1
  382. package/dist/widgets/category.js +247 -236
  383. package/dist/widgets/category.js.map +1 -1
  384. package/dist/widgets/echart.js +100 -99
  385. package/dist/widgets/echart.js.map +1 -1
  386. package/dist/widgets/error.js +37 -2
  387. package/dist/widgets/error.js.map +1 -1
  388. package/dist/widgets/formula.js +78 -67
  389. package/dist/widgets/formula.js.map +1 -1
  390. package/dist/widgets/histogram.js +116 -92
  391. package/dist/widgets/histogram.js.map +1 -1
  392. package/dist/widgets/loader.js +53 -60
  393. package/dist/widgets/loader.js.map +1 -1
  394. package/dist/widgets/markdown.js +55 -53
  395. package/dist/widgets/markdown.js.map +1 -1
  396. package/dist/widgets/no-data.js +58 -2
  397. package/dist/widgets/no-data.js.map +1 -1
  398. package/dist/widgets/note.js +121 -2
  399. package/dist/widgets/note.js.map +1 -1
  400. package/dist/widgets/pie.js +148 -112
  401. package/dist/widgets/pie.js.map +1 -1
  402. package/dist/widgets/range.js +147 -144
  403. package/dist/widgets/range.js.map +1 -1
  404. package/dist/widgets/scatterplot.js +52 -65
  405. package/dist/widgets/scatterplot.js.map +1 -1
  406. package/dist/widgets/selection-summary.js.map +1 -1
  407. package/dist/widgets/skeleton-loader.js +18 -17
  408. package/dist/widgets/skeleton-loader.js.map +1 -1
  409. package/dist/widgets/spread.js +108 -90
  410. package/dist/widgets/spread.js.map +1 -1
  411. package/dist/widgets/stores.js +5 -2
  412. package/dist/widgets/stores.js.map +1 -1
  413. package/dist/widgets/subheader.js +29 -29
  414. package/dist/widgets/subheader.js.map +1 -1
  415. package/dist/widgets/table.js +429 -440
  416. package/dist/widgets/table.js.map +1 -1
  417. package/dist/widgets/timeseries.js +56 -69
  418. package/dist/widgets/timeseries.js.map +1 -1
  419. package/dist/widgets/toolbar-actions.js +50 -50
  420. package/dist/widgets/utils.js +34 -0
  421. package/dist/widgets/utils.js.map +1 -0
  422. package/dist/widgets/wrapper.js +156 -158
  423. package/dist/widgets/wrapper.js.map +1 -1
  424. package/dist/widgets-v2/actions.js +43 -0
  425. package/dist/widgets-v2/actions.js.map +1 -0
  426. package/dist/widgets-v2/bar.js +331 -0
  427. package/dist/widgets-v2/bar.js.map +1 -0
  428. package/dist/widgets-v2/category.js +105 -0
  429. package/dist/widgets-v2/category.js.map +1 -0
  430. package/dist/widgets-v2/echart.js +57 -0
  431. package/dist/widgets-v2/echart.js.map +1 -0
  432. package/dist/widgets-v2/formula.js +75 -0
  433. package/dist/widgets-v2/formula.js.map +1 -0
  434. package/dist/widgets-v2/histogram.js +354 -0
  435. package/dist/widgets-v2/histogram.js.map +1 -0
  436. package/dist/widgets-v2/markdown.js +69 -0
  437. package/dist/widgets-v2/markdown.js.map +1 -0
  438. package/dist/widgets-v2/pie.js +388 -0
  439. package/dist/widgets-v2/pie.js.map +1 -0
  440. package/dist/widgets-v2/range.js +52 -0
  441. package/dist/widgets-v2/range.js.map +1 -0
  442. package/dist/widgets-v2/scatterplot.js +412 -0
  443. package/dist/widgets-v2/scatterplot.js.map +1 -0
  444. package/dist/widgets-v2/spread.js +73 -0
  445. package/dist/widgets-v2/spread.js.map +1 -0
  446. package/dist/widgets-v2/stores.js +42 -0
  447. package/dist/widgets-v2/stores.js.map +1 -0
  448. package/dist/widgets-v2/table.js +79 -0
  449. package/dist/widgets-v2/table.js.map +1 -0
  450. package/dist/widgets-v2/timeseries.js +359 -0
  451. package/dist/widgets-v2/timeseries.js.map +1 -0
  452. package/dist/widgets-v2/utils.js +8 -0
  453. package/dist/widgets-v2/utils.js.map +1 -0
  454. package/dist/widgets-v2.js +954 -0
  455. package/dist/widgets-v2.js.map +1 -0
  456. package/package.json +82 -11
  457. package/src/chat/containers/chat-content.test.tsx +260 -6
  458. package/src/chat/containers/chat-content.tsx +137 -27
  459. package/src/chat/containers/chat-starter.tsx +2 -2
  460. package/src/chat/containers/styles.ts +9 -30
  461. package/src/chat/feedback/chat-tool-code-area.tsx +1 -1
  462. package/src/chat/feedback/chat-tool-group.tsx +1 -1
  463. package/src/chat/feedback/chat-tool-trace.tsx +6 -1
  464. package/src/chat/index.ts +1 -1
  465. package/src/chat/types.ts +36 -4
  466. package/src/components/basemaps/basemaps.tsx +20 -0
  467. package/src/components/geolocation-controls/geolocation-controls.tsx +11 -0
  468. package/src/components/lasso-tool/chip.test.tsx +176 -0
  469. package/src/components/lasso-tool/lasso-tool-inline.test.tsx +171 -0
  470. package/src/components/lasso-tool/lasso-tool-inline.tsx +17 -0
  471. package/src/components/lasso-tool/lasso-tool.test.tsx +198 -0
  472. package/src/components/lasso-tool/lasso-tool.tsx +21 -0
  473. package/src/components/list-data/list-data.test.tsx +73 -0
  474. package/src/components/list-data/list-data.tsx +16 -0
  475. package/src/components/measurement-tools/measurement-tools.tsx +20 -0
  476. package/src/components/no-data-alert/no-data-alert.test.tsx +38 -0
  477. package/src/components/responsive-drawer/responsive-drawer.test.tsx +68 -0
  478. package/src/components/smart-tooltip/smart-tooltip.tsx +17 -0
  479. package/src/components/tooltip/tooltip.tsx +13 -0
  480. package/src/components/zoom-controls/zoom-controls.tsx +16 -0
  481. package/src/hooks/index.ts +0 -1
  482. package/src/hooks/use-widget-ref.ts +10 -10
  483. package/src/widgets/README.md +13 -13
  484. package/src/widgets/actions/brush-toggle/brush-overlay.test.tsx +465 -0
  485. package/src/widgets/actions/brush-toggle/brush-overlay.tsx +408 -0
  486. package/src/widgets/actions/brush-toggle/brush-toggle.test.tsx +208 -0
  487. package/src/widgets/actions/brush-toggle/brush-toggle.tsx +133 -0
  488. package/src/widgets/actions/brush-toggle/hit-test.test.ts +65 -0
  489. package/src/widgets/actions/brush-toggle/hit-test.ts +45 -0
  490. package/src/widgets/actions/brush-toggle/style.ts +46 -0
  491. package/src/widgets/actions/brush-toggle/types.ts +78 -0
  492. package/src/widgets/actions/change-column/change-column-dnd.test.tsx +193 -0
  493. package/src/widgets/actions/change-column/change-column.test.tsx +1 -1
  494. package/src/widgets/actions/change-column/change-column.tsx +15 -15
  495. package/src/widgets/actions/change-column/sortable-column-item.test.tsx +124 -0
  496. package/src/widgets/actions/change-column/sortable-column-item.tsx +3 -1
  497. package/src/widgets/actions/download/download.test.tsx +1 -1
  498. package/src/widgets/actions/download/download.tsx +15 -3
  499. package/src/widgets/actions/download/exports.tsx +15 -0
  500. package/src/widgets/actions/fullscreen/fullscreen.tsx +20 -11
  501. package/src/widgets/actions/index.ts +21 -2
  502. package/src/widgets/actions/lock-selection/lock-selection.test.tsx +14 -0
  503. package/src/widgets/actions/lock-selection/lock-selection.tsx +26 -31
  504. package/src/widgets/actions/lock-selection/types.ts +2 -0
  505. package/src/widgets/actions/relative-data/relative-data.test.tsx +276 -1
  506. package/src/widgets/actions/relative-data/relative-data.tsx +113 -54
  507. package/src/widgets/actions/relative-data/types.ts +2 -0
  508. package/src/widgets/actions/searcher/searcher-toggle.tsx +11 -12
  509. package/src/widgets/actions/searcher/searcher.tsx +39 -42
  510. package/src/widgets/actions/stack-toggle/stack-toggle.test.tsx +4 -4
  511. package/src/widgets/actions/stack-toggle/stack-toggle.tsx +24 -32
  512. package/src/widgets/actions/zoom-toggle/zoom-toggle.test.tsx +322 -0
  513. package/src/widgets/actions/zoom-toggle/zoom-toggle.tsx +62 -80
  514. package/src/widgets/bar/config.ts +39 -34
  515. package/src/widgets/bar/style.ts +1 -1
  516. package/src/widgets/category/category-ui.tsx +41 -34
  517. package/src/widgets/category/components/category-bar.tsx +3 -0
  518. package/src/widgets/category/components/category-legend.tsx +3 -0
  519. package/src/widgets/category/components/category-row-multi.tsx +9 -2
  520. package/src/widgets/category/components/category-row-other.tsx +3 -0
  521. package/src/widgets/category/components/category-row-single.tsx +8 -1
  522. package/src/widgets/category/components/category-rows.test.tsx +213 -0
  523. package/src/widgets/category/config.ts +11 -0
  524. package/src/widgets/category/index.ts +13 -14
  525. package/src/widgets/category/style.ts +1 -0
  526. package/src/widgets/category/types.ts +1 -0
  527. package/src/widgets/echart/echart-ui.test.tsx +20 -16
  528. package/src/widgets/echart/echart-ui.tsx +18 -14
  529. package/src/widgets/echart/echart.tsx +19 -27
  530. package/src/widgets/echart/options.ts +8 -4
  531. package/src/widgets/echart/shared-resize-observer.ts +45 -0
  532. package/src/widgets/echart/types.ts +5 -1
  533. package/src/widgets/echart/utils.test.ts +277 -0
  534. package/src/widgets/echart/utils.ts +94 -21
  535. package/src/widgets/error/error.tsx +17 -9
  536. package/src/widgets/formula/components/item.tsx +3 -0
  537. package/src/widgets/formula/components/prefix.tsx +7 -6
  538. package/src/widgets/formula/components/row.tsx +7 -4
  539. package/src/widgets/formula/components/series.tsx +7 -6
  540. package/src/widgets/formula/components/suffix.tsx +7 -6
  541. package/src/widgets/formula/components/value.tsx +13 -18
  542. package/src/widgets/formula/config.test.ts +37 -0
  543. package/src/widgets/formula/config.ts +11 -0
  544. package/src/widgets/formula/formula-ui.tsx +4 -1
  545. package/src/widgets/histogram/config.ts +99 -24
  546. package/src/widgets/histogram/index.ts +6 -1
  547. package/src/widgets/histogram/style.ts +1 -1
  548. package/src/widgets/histogram/types.ts +9 -3
  549. package/src/widgets/loader/loader.tsx +53 -44
  550. package/src/widgets/loader/utils.ts +26 -3
  551. package/src/widgets/markdown/config.ts +10 -0
  552. package/src/widgets/markdown/markdown-ui.tsx +7 -0
  553. package/src/widgets/markdown/markdown.tsx +7 -7
  554. package/src/widgets/no-data/no-data.test.tsx +90 -40
  555. package/src/widgets/no-data/no-data.tsx +12 -13
  556. package/src/widgets/no-data/types.ts +5 -1
  557. package/src/widgets/note/note.tsx +10 -0
  558. package/src/widgets/pie/config.ts +102 -33
  559. package/src/widgets/pie/style.ts +1 -1
  560. package/src/widgets/range/components/range-item.test.tsx +243 -0
  561. package/src/widgets/range/components/range-item.tsx +25 -20
  562. package/src/widgets/range/config.ts +5 -0
  563. package/src/widgets/range/range-ui.tsx +3 -0
  564. package/src/widgets/scatterplot/config.ts +21 -23
  565. package/src/widgets/scatterplot/style.ts +1 -1
  566. package/src/widgets/selection-summary/selection-summary.tsx +11 -0
  567. package/src/widgets/skeleton-loader/skeleton-loader.tsx +12 -5
  568. package/src/widgets/spread/components/max-value.tsx +18 -18
  569. package/src/widgets/spread/components/min-value.tsx +18 -18
  570. package/src/widgets/spread/components/separator.tsx +3 -0
  571. package/src/widgets/spread/config.ts +11 -0
  572. package/src/widgets/spread/spread-ui.tsx +4 -1
  573. package/src/widgets/stores/index.ts +4 -1
  574. package/src/widgets/stores/types.ts +12 -18
  575. package/src/widgets/stores/use-widget-selector.ts +47 -0
  576. package/src/widgets/stores/widget-store-branches.test.ts +275 -0
  577. package/src/widgets/stores/widget-store-performance.test.ts +750 -0
  578. package/src/widgets/stores/widget-store.test.ts +213 -13
  579. package/src/widgets/stores/widget-store.ts +240 -65
  580. package/src/widgets/subheader/subheader.tsx +22 -3
  581. package/src/widgets/table/config.test.ts +65 -0
  582. package/src/widgets/table/config.ts +8 -4
  583. package/src/widgets/table/hooks/use-pagination.ts +39 -55
  584. package/src/widgets/table/hooks/use-selection.ts +31 -26
  585. package/src/widgets/table/hooks/use-sort.ts +33 -42
  586. package/src/widgets/table/index.ts +6 -4
  587. package/src/widgets/table/table-ui.tsx +1 -1
  588. package/src/widgets/table/types.ts +1 -1
  589. package/src/widgets/timeseries/config.ts +34 -33
  590. package/src/widgets/timeseries/style.ts +1 -1
  591. package/src/widgets/utils/chart-config/download-config.ts +22 -0
  592. package/src/widgets/{_shared → utils}/chart-config/index.ts +6 -0
  593. package/src/widgets/utils/chart-config/option-builders.test.ts +332 -0
  594. package/src/widgets/{_shared → utils}/chart-config/option-builders.ts +79 -13
  595. package/src/widgets/utils/formatter.ts +2 -0
  596. package/src/widgets/utils/index.ts +26 -0
  597. package/src/widgets/wrapper/components/actions.tsx +3 -0
  598. package/src/widgets/wrapper/components/options.tsx +3 -0
  599. package/src/widgets/wrapper/components/title.tsx +3 -0
  600. package/src/widgets/wrapper/wrapper-ui.tsx +26 -13
  601. package/src/widgets/wrapper/wrapper.tsx +18 -6
  602. package/src/widgets-v2/PERFORMANCE.md +189 -0
  603. package/src/widgets-v2/actions/brush-toggle/brush-toggle.test.tsx +180 -0
  604. package/src/widgets-v2/actions/brush-toggle/brush-toggle.tsx +154 -0
  605. package/src/widgets-v2/actions/brush-toggle/index.ts +3 -0
  606. package/src/widgets-v2/actions/brush-toggle/labels.ts +9 -0
  607. package/src/widgets-v2/actions/brush-toggle/style.ts +11 -0
  608. package/src/widgets-v2/actions/brush-toggle/transforms.test.ts +47 -0
  609. package/src/widgets-v2/actions/brush-toggle/transforms.ts +31 -0
  610. package/src/widgets-v2/actions/change-column/change-column-icon.tsx +14 -0
  611. package/src/widgets-v2/actions/change-column/change-column.test.tsx +59 -0
  612. package/src/widgets-v2/actions/change-column/change-column.tsx +180 -0
  613. package/src/widgets-v2/actions/change-column/index.ts +7 -0
  614. package/src/widgets-v2/actions/change-column/labels.ts +9 -0
  615. package/src/widgets-v2/actions/change-column/sortable-column-item.tsx +56 -0
  616. package/src/widgets-v2/actions/change-column/style.ts +32 -0
  617. package/src/widgets-v2/actions/change-column/types.ts +11 -0
  618. package/src/widgets-v2/actions/download/download.test.tsx +327 -0
  619. package/src/widgets-v2/actions/download/download.tsx +144 -0
  620. package/src/widgets-v2/actions/download/exports.test.tsx +198 -0
  621. package/src/widgets-v2/actions/download/exports.ts +115 -0
  622. package/src/widgets-v2/actions/download/icons.tsx +26 -0
  623. package/src/widgets-v2/actions/download/index.ts +13 -0
  624. package/src/widgets-v2/actions/download/labels.ts +16 -0
  625. package/src/widgets-v2/actions/download/png-item.test.tsx +72 -0
  626. package/src/widgets-v2/actions/download/png-item.tsx +52 -0
  627. package/src/widgets-v2/actions/download/style.ts +3 -0
  628. package/src/widgets-v2/actions/download/types.ts +32 -0
  629. package/src/widgets-v2/actions/fullscreen/fullscreen.test.tsx +150 -0
  630. package/src/widgets-v2/actions/fullscreen/fullscreen.tsx +230 -0
  631. package/src/widgets-v2/actions/fullscreen/index.ts +7 -0
  632. package/src/widgets-v2/actions/fullscreen/labels.ts +9 -0
  633. package/src/widgets-v2/actions/fullscreen/style.ts +59 -0
  634. package/src/widgets-v2/actions/fullscreen/types.ts +15 -0
  635. package/src/widgets-v2/actions/index.ts +82 -0
  636. package/src/widgets-v2/actions/lock-selection/index.ts +10 -0
  637. package/src/widgets-v2/actions/lock-selection/labels.ts +11 -0
  638. package/src/widgets-v2/actions/lock-selection/lock-selection.test.tsx +187 -0
  639. package/src/widgets-v2/actions/lock-selection/lock-selection.tsx +130 -0
  640. package/src/widgets-v2/actions/lock-selection/style.ts +11 -0
  641. package/src/widgets-v2/actions/lock-selection/transforms.ts +27 -0
  642. package/src/widgets-v2/actions/relative-data/index.ts +3 -0
  643. package/src/widgets-v2/actions/relative-data/labels.ts +9 -0
  644. package/src/widgets-v2/actions/relative-data/relative-data.test.tsx +71 -0
  645. package/src/widgets-v2/actions/relative-data/relative-data.tsx +107 -0
  646. package/src/widgets-v2/actions/relative-data/style.ts +11 -0
  647. package/src/widgets-v2/actions/relative-data/transforms.test.ts +151 -0
  648. package/src/widgets-v2/actions/relative-data/transforms.ts +70 -0
  649. package/src/widgets-v2/actions/searcher/filter.ts +28 -0
  650. package/src/widgets-v2/actions/searcher/index.ts +8 -0
  651. package/src/widgets-v2/actions/searcher/labels.ts +13 -0
  652. package/src/widgets-v2/actions/searcher/searcher-toggle.tsx +91 -0
  653. package/src/widgets-v2/actions/searcher/searcher.test.tsx +92 -0
  654. package/src/widgets-v2/actions/searcher/searcher.tsx +112 -0
  655. package/src/widgets-v2/actions/searcher/style.ts +15 -0
  656. package/src/widgets-v2/actions/stack-toggle/index.ts +3 -0
  657. package/src/widgets-v2/actions/stack-toggle/labels.ts +9 -0
  658. package/src/widgets-v2/actions/stack-toggle/stack-toggle.test.tsx +61 -0
  659. package/src/widgets-v2/actions/stack-toggle/stack-toggle.tsx +54 -0
  660. package/src/widgets-v2/actions/stack-toggle/style.ts +11 -0
  661. package/src/widgets-v2/actions/stack-toggle/transforms.test.ts +43 -0
  662. package/src/widgets-v2/actions/stack-toggle/transforms.ts +25 -0
  663. package/src/widgets-v2/actions/zoom-toggle/index.ts +9 -0
  664. package/src/widgets-v2/actions/zoom-toggle/labels.ts +9 -0
  665. package/src/widgets-v2/actions/zoom-toggle/style.ts +11 -0
  666. package/src/widgets-v2/actions/zoom-toggle/transforms.test.ts +148 -0
  667. package/src/widgets-v2/actions/zoom-toggle/transforms.ts +171 -0
  668. package/src/widgets-v2/actions/zoom-toggle/zoom-toggle.test.tsx +107 -0
  669. package/src/widgets-v2/actions/zoom-toggle/zoom-toggle.tsx +106 -0
  670. package/src/widgets-v2/bar/download.test.tsx +91 -0
  671. package/src/widgets-v2/bar/download.tsx +66 -0
  672. package/src/widgets-v2/bar/index.ts +10 -0
  673. package/src/widgets-v2/bar/options.test.ts +334 -0
  674. package/src/widgets-v2/bar/options.ts +332 -0
  675. package/src/widgets-v2/bar/skeleton.test.tsx +19 -0
  676. package/src/widgets-v2/bar/skeleton.tsx +69 -0
  677. package/src/widgets-v2/bar/types.ts +51 -0
  678. package/src/widgets-v2/category/category-ui.test.tsx +746 -0
  679. package/src/widgets-v2/category/category-ui.tsx +389 -0
  680. package/src/widgets-v2/category/category.relative-data.test.tsx +107 -0
  681. package/src/widgets-v2/category/category.stack-toggle.test.tsx +85 -0
  682. package/src/widgets-v2/category/category.test.tsx +305 -0
  683. package/src/widgets-v2/category/category.tsx +121 -0
  684. package/src/widgets-v2/category/components/category-bar-stacked.test.tsx +121 -0
  685. package/src/widgets-v2/category/components/category-bar-stacked.tsx +73 -0
  686. package/src/widgets-v2/category/components/category-bar.test.tsx +64 -0
  687. package/src/widgets-v2/category/components/category-bar.tsx +49 -0
  688. package/src/widgets-v2/category/components/category-legend.test.tsx +51 -0
  689. package/src/widgets-v2/category/components/category-legend.tsx +39 -0
  690. package/src/widgets-v2/category/components/category-row-multi.tsx +86 -0
  691. package/src/widgets-v2/category/components/category-row-other.test.tsx +28 -0
  692. package/src/widgets-v2/category/components/category-row-other.tsx +33 -0
  693. package/src/widgets-v2/category/components/category-row-single.tsx +76 -0
  694. package/src/widgets-v2/category/components/category-row-stacked.test.tsx +244 -0
  695. package/src/widgets-v2/category/components/category-row-stacked.tsx +99 -0
  696. package/src/widgets-v2/category/download.test.ts +71 -0
  697. package/src/widgets-v2/category/download.ts +54 -0
  698. package/src/widgets-v2/category/index.ts +32 -0
  699. package/src/widgets-v2/category/skeleton.test.tsx +26 -0
  700. package/src/widgets-v2/category/skeleton.tsx +74 -0
  701. package/src/widgets-v2/category/style.ts +290 -0
  702. package/src/widgets-v2/category/types.ts +59 -0
  703. package/src/widgets-v2/echart/echart-ui.test.tsx +232 -0
  704. package/src/widgets-v2/echart/echart-ui.tsx +184 -0
  705. package/src/widgets-v2/echart/echart.test.tsx +229 -0
  706. package/src/widgets-v2/echart/echart.tsx +199 -0
  707. package/src/widgets-v2/echart/index.ts +22 -0
  708. package/src/widgets-v2/echart/shared-resize-observer.test.ts +91 -0
  709. package/src/widgets-v2/echart/shared-resize-observer.ts +56 -0
  710. package/src/widgets-v2/echart/style.ts +8 -0
  711. package/src/widgets-v2/echart/use-chart-selection.test.tsx +118 -0
  712. package/src/widgets-v2/echart/use-chart-selection.ts +115 -0
  713. package/src/widgets-v2/formula/delta.tsx +61 -0
  714. package/src/widgets-v2/formula/download.test.tsx +65 -0
  715. package/src/widgets-v2/formula/download.tsx +69 -0
  716. package/src/widgets-v2/formula/formula-ui.test.tsx +91 -0
  717. package/src/widgets-v2/formula/formula-ui.tsx +66 -0
  718. package/src/widgets-v2/formula/formula.test.tsx +50 -0
  719. package/src/widgets-v2/formula/formula.tsx +34 -0
  720. package/src/widgets-v2/formula/index.ts +17 -0
  721. package/src/widgets-v2/formula/note.tsx +25 -0
  722. package/src/widgets-v2/formula/prefix.tsx +25 -0
  723. package/src/widgets-v2/formula/series.tsx +67 -0
  724. package/src/widgets-v2/formula/skeleton.test.tsx +21 -0
  725. package/src/widgets-v2/formula/skeleton.tsx +27 -0
  726. package/src/widgets-v2/formula/style.ts +31 -0
  727. package/src/widgets-v2/formula/subcomponents.test.tsx +107 -0
  728. package/src/widgets-v2/formula/suffix.tsx +25 -0
  729. package/src/widgets-v2/formula/types.ts +48 -0
  730. package/src/widgets-v2/formula/value.tsx +31 -0
  731. package/src/widgets-v2/histogram/download.test.ts +94 -0
  732. package/src/widgets-v2/histogram/download.ts +60 -0
  733. package/src/widgets-v2/histogram/index.ts +10 -0
  734. package/src/widgets-v2/histogram/options.test.ts +318 -0
  735. package/src/widgets-v2/histogram/options.ts +338 -0
  736. package/src/widgets-v2/histogram/skeleton.test.tsx +16 -0
  737. package/src/widgets-v2/histogram/skeleton.tsx +70 -0
  738. package/src/widgets-v2/histogram/transforms.test.ts +46 -0
  739. package/src/widgets-v2/histogram/transforms.ts +30 -0
  740. package/src/widgets-v2/histogram/types.ts +55 -0
  741. package/src/widgets-v2/index.ts +204 -0
  742. package/src/widgets-v2/markdown/download.test.ts +66 -0
  743. package/src/widgets-v2/markdown/download.ts +53 -0
  744. package/src/widgets-v2/markdown/index.ts +6 -0
  745. package/src/widgets-v2/markdown/markdown-content.test.tsx +155 -0
  746. package/src/widgets-v2/markdown/markdown-content.tsx +72 -0
  747. package/src/widgets-v2/markdown/markdown-ui.test.tsx +75 -0
  748. package/src/widgets-v2/markdown/markdown-ui.tsx +55 -0
  749. package/src/widgets-v2/markdown/markdown.test.tsx +39 -0
  750. package/src/widgets-v2/markdown/markdown.tsx +17 -0
  751. package/src/widgets-v2/markdown/skeleton.test.tsx +15 -0
  752. package/src/widgets-v2/markdown/skeleton.tsx +32 -0
  753. package/src/widgets-v2/markdown/style.ts +53 -0
  754. package/src/widgets-v2/markdown/types.ts +4 -0
  755. package/src/widgets-v2/note/labels.ts +9 -0
  756. package/src/widgets-v2/note/style.ts +26 -0
  757. package/src/widgets-v2/note/widget-note.test.tsx +158 -0
  758. package/src/widgets-v2/note/widget-note.tsx +172 -0
  759. package/src/widgets-v2/pie/download.test.ts +78 -0
  760. package/src/widgets-v2/pie/download.ts +55 -0
  761. package/src/widgets-v2/pie/index.ts +10 -0
  762. package/src/widgets-v2/pie/options.test.ts +601 -0
  763. package/src/widgets-v2/pie/options.ts +513 -0
  764. package/src/widgets-v2/pie/skeleton.test.tsx +17 -0
  765. package/src/widgets-v2/pie/skeleton.tsx +32 -0
  766. package/src/widgets-v2/pie/types.ts +62 -0
  767. package/src/widgets-v2/provider/widget-provider.test.tsx +119 -0
  768. package/src/widgets-v2/provider/widget-provider.tsx +111 -0
  769. package/src/widgets-v2/range/index.ts +4 -0
  770. package/src/widgets-v2/range/range-ui.test.tsx +136 -0
  771. package/src/widgets-v2/range/range-ui.tsx +278 -0
  772. package/src/widgets-v2/range/range.test.tsx +68 -0
  773. package/src/widgets-v2/range/range.tsx +52 -0
  774. package/src/widgets-v2/range/skeleton.test.tsx +17 -0
  775. package/src/widgets-v2/range/skeleton.tsx +47 -0
  776. package/src/widgets-v2/range/style.ts +41 -0
  777. package/src/widgets-v2/range/types.ts +37 -0
  778. package/src/widgets-v2/scatterplot/download.test.ts +71 -0
  779. package/src/widgets-v2/scatterplot/download.ts +54 -0
  780. package/src/widgets-v2/scatterplot/index.ts +11 -0
  781. package/src/widgets-v2/scatterplot/options.test.ts +411 -0
  782. package/src/widgets-v2/scatterplot/options.ts +425 -0
  783. package/src/widgets-v2/scatterplot/skeleton.test.tsx +17 -0
  784. package/src/widgets-v2/scatterplot/skeleton.tsx +84 -0
  785. package/src/widgets-v2/scatterplot/transforms.test.ts +97 -0
  786. package/src/widgets-v2/scatterplot/transforms.ts +38 -0
  787. package/src/widgets-v2/scatterplot/types.ts +59 -0
  788. package/src/widgets-v2/selection-summary/labels.ts +11 -0
  789. package/src/widgets-v2/selection-summary/selection-summary.test.tsx +53 -0
  790. package/src/widgets-v2/selection-summary/selection-summary.tsx +62 -0
  791. package/src/widgets-v2/selection-summary/style.ts +23 -0
  792. package/src/widgets-v2/spread/download.test.ts +64 -0
  793. package/src/widgets-v2/spread/download.ts +59 -0
  794. package/src/widgets-v2/spread/index.ts +6 -0
  795. package/src/widgets-v2/spread/separator.tsx +11 -0
  796. package/src/widgets-v2/spread/skeleton.test.tsx +17 -0
  797. package/src/widgets-v2/spread/skeleton.tsx +38 -0
  798. package/src/widgets-v2/spread/spread-ui.test.tsx +108 -0
  799. package/src/widgets-v2/spread/spread-ui.tsx +52 -0
  800. package/src/widgets-v2/spread/spread.test.tsx +50 -0
  801. package/src/widgets-v2/spread/spread.tsx +31 -0
  802. package/src/widgets-v2/spread/types.ts +27 -0
  803. package/src/widgets-v2/state/labels.test.ts +33 -0
  804. package/src/widgets-v2/state/labels.ts +20 -0
  805. package/src/widgets-v2/state/style.ts +25 -0
  806. package/src/widgets-v2/state/widget-state.test.tsx +294 -0
  807. package/src/widgets-v2/state/widget-state.tsx +184 -0
  808. package/src/widgets-v2/stores/index.ts +49 -0
  809. package/src/widgets-v2/stores/pipeline-middleware.test.ts +187 -0
  810. package/src/widgets-v2/stores/pipeline-middleware.ts +91 -0
  811. package/src/widgets-v2/stores/transforms.test.ts +162 -0
  812. package/src/widgets-v2/stores/transforms.ts +70 -0
  813. package/src/widgets-v2/stores/types.ts +64 -0
  814. package/src/widgets-v2/stores/use-echart-instance.test.tsx +91 -0
  815. package/src/widgets-v2/stores/use-echart-instance.ts +29 -0
  816. package/src/widgets-v2/stores/use-transform-enabled.test.tsx +127 -0
  817. package/src/widgets-v2/stores/use-transform-enabled.ts +25 -0
  818. package/src/widgets-v2/stores/use-transform.test.tsx +262 -0
  819. package/src/widgets-v2/stores/use-transform.ts +158 -0
  820. package/src/widgets-v2/stores/widget-context.test.tsx +58 -0
  821. package/src/widgets-v2/stores/widget-context.ts +15 -0
  822. package/src/widgets-v2/stores/widget-store-registry.test.ts +292 -0
  823. package/src/widgets-v2/stores/widget-store-registry.ts +248 -0
  824. package/src/widgets-v2/subheader/style.ts +12 -0
  825. package/src/widgets-v2/subheader/subheader.test.tsx +30 -0
  826. package/src/widgets-v2/subheader/subheader.tsx +16 -0
  827. package/src/widgets-v2/table/download.test.ts +75 -0
  828. package/src/widgets-v2/table/download.ts +47 -0
  829. package/src/widgets-v2/table/helpers.test.ts +214 -0
  830. package/src/widgets-v2/table/helpers.ts +136 -0
  831. package/src/widgets-v2/table/index.ts +23 -0
  832. package/src/widgets-v2/table/labels.tsx +41 -0
  833. package/src/widgets-v2/table/skeleton.test.tsx +26 -0
  834. package/src/widgets-v2/table/skeleton.tsx +65 -0
  835. package/src/widgets-v2/table/style.ts +43 -0
  836. package/src/widgets-v2/table/table-ui.test.tsx +200 -0
  837. package/src/widgets-v2/table/table-ui.tsx +364 -0
  838. package/src/widgets-v2/table/table.test.tsx +119 -0
  839. package/src/widgets-v2/table/table.tsx +179 -0
  840. package/src/widgets-v2/table/types.ts +55 -0
  841. package/src/widgets-v2/test-utils.ts +107 -0
  842. package/src/widgets-v2/timeseries/download.test.ts +95 -0
  843. package/src/widgets-v2/timeseries/download.ts +86 -0
  844. package/src/widgets-v2/timeseries/index.ts +10 -0
  845. package/src/widgets-v2/timeseries/options.test.ts +394 -0
  846. package/src/widgets-v2/timeseries/options.ts +348 -0
  847. package/src/widgets-v2/timeseries/skeleton.test.tsx +13 -0
  848. package/src/widgets-v2/timeseries/skeleton.tsx +76 -0
  849. package/src/widgets-v2/timeseries/types.ts +65 -0
  850. package/src/widgets-v2/toolbox/labels.ts +9 -0
  851. package/src/widgets-v2/toolbox/style.ts +33 -0
  852. package/src/widgets-v2/toolbox/toolbox.test.tsx +200 -0
  853. package/src/widgets-v2/toolbox/toolbox.tsx +309 -0
  854. package/src/widgets-v2/types.ts +25 -0
  855. package/src/widgets-v2/utils/data-zoom-layout.ts +26 -0
  856. package/src/widgets-v2/utils/index.ts +3 -0
  857. package/src/widgets-v2/utils/merge-options.test.ts +52 -0
  858. package/src/widgets-v2/utils/merge-options.ts +50 -0
  859. package/src/widgets-v2/utils/resolve-theme-color.test.ts +43 -0
  860. package/src/widgets-v2/utils/resolve-theme-color.ts +34 -0
  861. package/src/widgets-v2/wrapper/index.ts +14 -0
  862. package/src/widgets-v2/wrapper/labels.ts +11 -0
  863. package/src/widgets-v2/wrapper/style.ts +134 -0
  864. package/src/widgets-v2/wrapper/widget-actions.test.tsx +52 -0
  865. package/src/widgets-v2/wrapper/widget-actions.tsx +43 -0
  866. package/src/widgets-v2/wrapper/widget-content.test.tsx +27 -0
  867. package/src/widgets-v2/wrapper/widget-content.tsx +29 -0
  868. package/src/widgets-v2/wrapper/widget-wrapper.test.tsx +159 -0
  869. package/src/widgets-v2/wrapper/widget-wrapper.tsx +178 -0
  870. package/dist/error-CEkRPccv.js +0 -39
  871. package/dist/error-CEkRPccv.js.map +0 -1
  872. package/dist/index-BnyeR7Qx.js +0 -6601
  873. package/dist/index-BnyeR7Qx.js.map +0 -1
  874. package/dist/no-data-hR3KcJ-_.js +0 -60
  875. package/dist/no-data-hR3KcJ-_.js.map +0 -1
  876. package/dist/note-t51drNe0.js +0 -124
  877. package/dist/note-t51drNe0.js.map +0 -1
  878. package/dist/options-D9wflre6.js +0 -49
  879. package/dist/options-D9wflre6.js.map +0 -1
  880. package/dist/row-DTCV0Ocm.js +0 -35
  881. package/dist/row-DTCV0Ocm.js.map +0 -1
  882. package/dist/series-CYNOu2Ju.js +0 -91
  883. package/dist/series-CYNOu2Ju.js.map +0 -1
  884. package/dist/styles-CAroD5Rc.js +0 -123
  885. package/dist/styles-CAroD5Rc.js.map +0 -1
  886. package/dist/types/hooks/use-debounce.d.ts +0 -19
  887. package/dist/types/widgets/category/components/index.d.ts +0 -10
  888. package/dist/types/widgets/index.d.ts +0 -9
  889. package/dist/types/widgets/table/hooks/index.d.ts +0 -6
  890. package/dist/use-widget-ref-P-2i0MJG.js +0 -19
  891. package/dist/use-widget-ref-P-2i0MJG.js.map +0 -1
  892. package/dist/utils-idmvq0Oa.js.map +0 -1
  893. package/dist/widget-store-CzDt8oSK.js +0 -163
  894. package/dist/widget-store-CzDt8oSK.js.map +0 -1
  895. package/dist/widgets.js +0 -13
  896. package/dist/widgets.js.map +0 -1
  897. package/src/hooks/use-debounce.ts +0 -55
  898. package/src/widgets/_shared/chart-config/option-builders.test.ts +0 -40
  899. package/src/widgets/category/components/index.ts +0 -14
  900. package/src/widgets/index.ts +0 -25
  901. package/src/widgets/table/hooks/index.ts +0 -7
  902. /package/dist/types/widgets/{_shared → utils}/chart-config/config-factory.d.ts +0 -0
  903. /package/dist/types/widgets/{_shared → utils}/chart-config/csv-modifiers.d.ts +0 -0
  904. /package/dist/types/widgets/{_shared → utils}/skeleton/index.d.ts +0 -0
  905. /package/dist/types/widgets/{_shared → utils}/skeleton/styles.d.ts +0 -0
  906. /package/dist/types/{widgets/_shared/chart-config/option-builders.test.d.ts → widgets-v2/actions/brush-toggle/transforms.test.d.ts} +0 -0
  907. /package/src/widgets/{_shared → utils}/chart-config/config-factory.ts +0 -0
  908. /package/src/widgets/{_shared → utils}/chart-config/csv-modifiers.ts +0 -0
  909. /package/src/widgets/{_shared → utils}/skeleton/index.ts +0 -0
  910. /package/src/widgets/{_shared → utils}/skeleton/styles.ts +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"table.js","sources":["../../src/widgets/table/components/cell-header.tsx","../../src/widgets/table/helpers.ts","../../src/widgets/table/components/cell.tsx","../../src/widgets/table/components/row.tsx","../../src/widgets/table/components/pagination-actions.tsx","../../src/widgets/table/components/pagination.tsx","../../src/widgets/table/table-ui.tsx","../../src/widgets/table/config.ts","../../src/widgets/table/hooks/use-pagination.ts","../../src/widgets/table/hooks/use-sort.ts","../../src/widgets/table/hooks/use-selection.ts","../../src/widgets/table/skeleton.tsx","../../src/widgets/table/serializer.ts","../../src/widgets/table/style.ts"],"sourcesContent":["import { TableCell, TableSortLabel, Checkbox } from '@mui/material'\nimport type { CellHeaderProps } from '../types'\n\n/**\n * Table cell header component with optional sorting and select-all checkbox\n */\nexport function CellHeader({\n column,\n sortState,\n onSort,\n isSelectAll,\n isAllSelected,\n isIndeterminate,\n onSelectAll,\n}: CellHeaderProps) {\n // Render select-all checkbox\n if (isSelectAll) {\n return (\n <TableCell padding='checkbox'>\n <Checkbox\n checked={isAllSelected}\n indeterminate={isIndeterminate}\n onChange={onSelectAll}\n inputProps={{ 'aria-label': 'select all rows' }}\n />\n </TableCell>\n )\n }\n\n const isSorted = sortState?.columnId === column.id\n const sortDirection = isSorted ? sortState.direction : undefined\n\n // Render sortable column header\n if (column.sortable && onSort) {\n return (\n <TableCell\n align={column.align}\n style={{ width: column.width }}\n sortDirection={sortDirection}\n >\n <TableSortLabel\n active={isSorted}\n direction={sortDirection ?? 'asc'}\n onClick={() => onSort(column.id)}\n >\n {column.label}\n </TableSortLabel>\n </TableCell>\n )\n }\n\n // Render non-sortable column header\n return (\n <TableCell align={column.align} style={{ width: column.width }}>\n {column.label}\n </TableCell>\n )\n}\n","import type { ReactNode } from 'react'\n\n/**\n * Get formatted cell value for display\n * Handles primitives, arrays, objects, and custom formatters\n *\n * @param cellValue - Raw cell value\n * @param formatter - Optional formatter function\n * @returns Formatted value for display\n */\nexport function getCellValue<T>(cellValue: T): ReactNode {\n // Handle null/undefined\n if (cellValue === null || cellValue === undefined) {\n return ''\n }\n\n // Handle arrays - format as [item1, item2, ...]\n if (Array.isArray(cellValue)) {\n const formatted = cellValue\n .map((item) => (typeof item === 'string' ? `\"${item}\"` : String(item)))\n .join(', ')\n return `[${formatted}]`\n }\n\n // Handle objects - stringify to JSON\n if (typeof cellValue === 'object') {\n return JSON.stringify(cellValue)\n }\n\n // Return primitives as-is (string, number, boolean)\n return cellValue as ReactNode\n}\n\n/**\n * Compare two values for sorting\n * Handles strings, numbers, and other types\n *\n * @param a - First value\n * @param b - Second value\n * @param direction - Sort direction\n * @returns Comparison result (-1, 0, 1)\n */\nexport function compareValues(\n a: unknown,\n b: unknown,\n direction: 'asc' | 'desc',\n): number {\n // Handle null/undefined - always sort to end\n if (a === null || a === undefined) return 1\n if (b === null || b === undefined) return -1\n\n let comparison = 0\n\n if (typeof a === 'string' && typeof b === 'string') {\n comparison = a.localeCompare(b)\n } else if (typeof a === 'number' && typeof b === 'number') {\n comparison = a - b\n } else if (typeof a === 'boolean' && typeof b === 'boolean') {\n comparison = a === b ? 0 : a ? 1 : -1\n } else if (typeof a === 'object' || typeof b === 'object') {\n // Compare objects/arrays as JSON strings\n const strA = JSON.stringify(a)\n const strB = JSON.stringify(b)\n comparison = strA.localeCompare(strB)\n } else {\n // Fallback for other primitives (bigint, symbol, etc.)\n comparison = 0\n }\n\n return direction === 'asc' ? comparison : -comparison\n}\n\n/**\n * Sort data array by column\n *\n * @param data - Data array to sort\n * @param columnId - Column ID to sort by\n * @param direction - Sort direction\n * @returns Sorted data array (new array, does not mutate original)\n */\nexport function sortData<T extends Record<string, unknown>>(\n data: T[],\n columnId: string,\n direction: 'asc' | 'desc',\n): T[] {\n return [...data].sort((a, b) =>\n compareValues(a[columnId], b[columnId], direction),\n )\n}\n\n/**\n * Paginate data array\n *\n * @param data - Data array to paginate\n * @param page - Current page (0-indexed)\n * @param rowsPerPage - Number of rows per page\n * @returns Paginated data slice\n */\nexport function paginateData<T>(\n data: T[],\n page: number,\n rowsPerPage: number,\n): T[] {\n const start = page * rowsPerPage\n const end = start + rowsPerPage\n return data.slice(start, end)\n}\n","import { TableCell as MuiTableCell, Link, Typography } from '@mui/material'\nimport ReactMarkdown, { type Components } from 'react-markdown'\nimport type { TableColumn, TableRow } from '../types'\nimport { getCellValue } from '../helpers'\nimport type { ReactNode } from 'react'\n\n/**\n * Props for Cell component\n */\nexport interface CellProps {\n /** Column definition */\n column: TableColumn\n /** Full table row for context */\n row: TableRow\n /** Cell value */\n value: unknown\n}\n\nconst DEFAULT_P = ({ children }: { children?: ReactNode }) => (\n <Typography component='span' variant='body2' color='inherit'>\n {children}\n </Typography>\n)\n\n/**\n * Markdown components for cell content\n * Uses compact styling suitable for table cells (reusing Note widget pattern)\n */\nconst CELL_MARKDOWN_COMPONENTS: Components = {\n h1: DEFAULT_P,\n h2: DEFAULT_P,\n h3: DEFAULT_P,\n p: DEFAULT_P,\n a: ({ children, href }) => {\n const isExternal = href?.startsWith('http')\n return (\n <Link\n href={href}\n target={isExternal ? '_blank' : undefined}\n rel={isExternal ? 'noopener noreferrer' : undefined}\n color='text.primary'\n underline='always'\n >\n {children}\n </Link>\n )\n },\n img: () => null,\n ul: DEFAULT_P,\n ol: DEFAULT_P,\n li: DEFAULT_P,\n}\n\n/**\n * Table cell component with automatic markdown support for string values\n * Markdown is rendered when the raw value is a string and no formatter is defined.\n * If a formatter is used, its output is rendered directly without markdown parsing.\n */\nexport function Cell({ column, row, value }: CellProps) {\n // If formatter is defined, use it directly without markdown\n if (column.formatter) {\n return (\n <MuiTableCell align={column.align}>\n {column.formatter(value, row)}\n </MuiTableCell>\n )\n }\n\n // For string values without formatter, render as markdown\n if (typeof value === 'string') {\n return (\n <MuiTableCell align={column.align}>\n <ReactMarkdown components={CELL_MARKDOWN_COMPONENTS}>\n {value}\n </ReactMarkdown>\n </MuiTableCell>\n )\n }\n\n // For non-string values, render directly\n return <MuiTableCell align={column.align}>{getCellValue(value)}</MuiTableCell>\n}\n","import { TableRow as MuiTableRow, TableCell, Checkbox } from '@mui/material'\nimport type { RowProps } from '../types'\nimport { Cell } from './cell'\n\n/**\n * Table row component with selection and hover support\n */\nexport function Row({\n row,\n columns,\n isSelected = false,\n selectable = false,\n onClick,\n onSelect,\n onMouseEnter,\n onMouseLeave,\n}: RowProps) {\n const handleClick = () => {\n onClick?.(row)\n }\n\n const handleCheckboxClick = (event: React.MouseEvent) => {\n event.stopPropagation()\n onSelect?.(row)\n }\n\n const handleMouseEnter = () => {\n onMouseEnter?.(row)\n }\n\n const handleMouseLeave = () => {\n onMouseLeave?.()\n }\n\n return (\n <MuiTableRow\n hover={!!onMouseEnter || !!onMouseLeave || !!onClick}\n selected={isSelected}\n onClick={handleClick}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n sx={{\n cursor: onClick ? 'pointer' : 'default',\n }}\n >\n {selectable && (\n <TableCell padding='checkbox'>\n <Checkbox\n checked={isSelected}\n onClick={handleCheckboxClick}\n inputProps={{ 'aria-label': `select row ${row.id}` }}\n />\n </TableCell>\n )}\n {columns.map((column) => (\n <Cell\n key={column.id}\n row={row}\n column={column}\n value={row[column.id]}\n />\n ))}\n </MuiTableRow>\n )\n}\n","import { Box, IconButton } from '@mui/material'\nimport FirstPageIcon from '@mui/icons-material/FirstPage'\nimport KeyboardArrowLeft from '@mui/icons-material/KeyboardArrowLeft'\nimport KeyboardArrowRight from '@mui/icons-material/KeyboardArrowRight'\nimport LastPageIcon from '@mui/icons-material/LastPage'\nimport type { PaginationActionsProps } from '../types'\n\n/**\n * Custom pagination actions with first/prev/next/last buttons\n */\nexport function PaginationActions({\n count,\n page,\n rowsPerPage,\n onPageChange,\n}: PaginationActionsProps) {\n const lastPage = Math.max(0, Math.ceil(count / rowsPerPage) - 1)\n\n const handleFirstPage = (event: React.MouseEvent<HTMLButtonElement>) => {\n onPageChange(event, 0)\n }\n\n const handlePreviousPage = (event: React.MouseEvent<HTMLButtonElement>) => {\n onPageChange(event, page - 1)\n }\n\n const handleNextPage = (event: React.MouseEvent<HTMLButtonElement>) => {\n onPageChange(event, page + 1)\n }\n\n const handleLastPage = (event: React.MouseEvent<HTMLButtonElement>) => {\n onPageChange(event, lastPage)\n }\n\n return (\n <Box sx={{ flexShrink: 0, ml: 2.5 }}>\n <IconButton\n onClick={handleFirstPage}\n disabled={page === 0}\n aria-label='first page'\n >\n <FirstPageIcon />\n </IconButton>\n <IconButton\n onClick={handlePreviousPage}\n disabled={page === 0}\n aria-label='previous page'\n >\n <KeyboardArrowLeft />\n </IconButton>\n <IconButton\n onClick={handleNextPage}\n disabled={page >= lastPage}\n aria-label='next page'\n >\n <KeyboardArrowRight />\n </IconButton>\n <IconButton\n onClick={handleLastPage}\n disabled={page >= lastPage}\n aria-label='last page'\n >\n <LastPageIcon />\n </IconButton>\n </Box>\n )\n}\n","import { TablePagination as MuiTablePagination } from '@mui/material'\nimport type { PaginationProps } from '../types'\nimport { PaginationActions } from './pagination-actions'\n\n/**\n * Table pagination component\n */\nexport function Pagination({\n page,\n rowsPerPage,\n total,\n rowsPerPageOptions = [5, 10, 25, 50],\n onPageChange,\n onRowsPerPageChange,\n}: PaginationProps) {\n const handlePageChange = (\n _event: React.MouseEvent<HTMLButtonElement> | null,\n newPage: number,\n ) => {\n onPageChange(newPage)\n }\n\n const handleRowsPerPageChange = (\n event: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>,\n ) => {\n onRowsPerPageChange(parseInt(event.target.value, 10))\n }\n\n return (\n <MuiTablePagination\n component='div'\n count={total}\n page={page}\n rowsPerPage={rowsPerPage}\n rowsPerPageOptions={rowsPerPageOptions}\n onPageChange={handlePageChange}\n onRowsPerPageChange={handleRowsPerPageChange}\n ActionsComponent={PaginationActions}\n />\n )\n}\n","import {\n Table as MuiTable,\n TableBody,\n TableCell,\n TableHead,\n TableContainer as MuiTableContainer,\n Paper,\n type TableProps as MuiTableProps,\n} from '@mui/material'\nimport type { Ref } from 'react'\nimport { CellHeader } from './components/cell-header'\nimport { Row } from './components/row'\nimport { Pagination } from './components/pagination'\nimport { PaginationActions } from './components/pagination-actions'\nimport { useWidgetRef } from '../../hooks'\nimport type { TableUIProps } from './types'\n\n/**\n * Props for the base Table component\n */\ninterface TableComponentProps extends MuiTableProps {\n /** Table element ref */\n ref?: Ref<HTMLTableElement>\n}\n\n/**\n * Base Table component with compound component pattern\n * Provides Table.Head, Table.Body, Table.Row, Table.Cell, Table.CellHeader, Table.Pagination\n */\nfunction Table({\n children,\n ref,\n stickyHeader = true,\n ...props\n}: TableComponentProps) {\n return (\n <MuiTable stickyHeader={stickyHeader} ref={ref} {...props}>\n {children}\n </MuiTable>\n )\n}\n\n// Attach sub-components as static properties\nTable.Head = TableHead\nTable.CellHeader = CellHeader\nTable.Body = TableBody\nTable.Row = Row\nTable.Cell = TableCell\nTable.Container = TableContainer\nTable.Paper = Paper\nTable.Pagination = Pagination\nTable.PaginationActions = PaginationActions\n\nexport { Table }\n\n/**\n * TableContainer widget component\n * Integrates with widget store and provides ref registration using custom hook\n */\nfunction TableContainer(props: TableUIProps) {\n const ref = useWidgetRef<HTMLDivElement>(props.id)\n\n return <MuiTableContainer ref={ref}>{props.children}</MuiTableContainer>\n}\n","import { downloadToCSV, downloadToPNG } from '../actions'\nimport type { ConfigProps } from '../loader/types'\nimport type {\n TableDownloadConfig,\n TableWidgetConfig,\n TableColumn,\n Mode,\n SortDirection,\n} from './types'\n\nconst DEFAULT_MODE: Mode = 'local'\nexport const DEFAULT_PAGE = 0\nexport const DEFAULT_ROWS_PER_PAGE = 10\nexport const DEFAULT_ROWS_PER_PAGE_OPTIONS = [5, 10, 25, 50]\n\nexport const DEFAULT_COLUMN_ID = null\nexport const DEFAULT_DIRECTION: SortDirection = 'asc'\n\n/**\n * Default table download configuration\n * Supports PNG export (screenshot) and CSV export (data)\n */\nexport function tableDownloadConfig({\n refUI,\n}: ConfigProps): TableDownloadConfig {\n return [\n {\n ...downloadToPNG,\n modifier: () => downloadToPNG.modifier(refUI),\n },\n {\n ...downloadToCSV,\n modifier: async (data) => {\n if (!data?.length) {\n return downloadToCSV.modifier([])\n }\n\n // Convert table data to CSV format\n // First row contains headers (column keys)\n const firstRow = data[0]\n if (!firstRow) {\n return downloadToCSV.modifier([])\n }\n\n const headers = Object.keys(firstRow).filter((key) => key !== 'id')\n const rows = data.map((row) =>\n headers.map((header) => {\n const value = row[header]\n if (value === null || value === undefined) return ''\n if (typeof value === 'object') return JSON.stringify(value)\n return value\n }),\n )\n\n return downloadToCSV.modifier([headers, ...rows])\n },\n },\n ]\n}\n\n/**\n * Default table widget configuration\n */\nexport function tableConfig(columns: TableColumn[] = []): TableWidgetConfig {\n return {\n columns,\n selectable: false,\n selected: [],\n mode: DEFAULT_MODE,\n }\n}\n","import { useCallback, useMemo } from 'react'\nimport type { TableRow, TableWidgetState } from '../types'\nimport { paginateData } from '../helpers'\nimport { useWidgetStore } from '../../stores/widget-store'\nimport { useShallow } from 'zustand/shallow'\nimport {\n DEFAULT_PAGE,\n DEFAULT_ROWS_PER_PAGE,\n DEFAULT_ROWS_PER_PAGE_OPTIONS,\n} from '../config'\n\nexport interface UsePaginationResult<T> {\n /** Whether pagination is enabled */\n paginationEnabled: boolean\n /** Current page (0-indexed) */\n page: number\n /** Rows per page */\n rowsPerPage: number\n /** Total row count */\n total: number\n /** Available rows per page options */\n rowsPerPageOptions: number[]\n /** Paginated data (for local mode) */\n paginatedData: T[]\n /** Set current page */\n setPage: (page: number) => void\n /** Set rows per page */\n setRowsPerPage: (rowsPerPage: number) => void\n /** Go to first page */\n goToFirstPage: () => void\n /** Go to last page */\n goToLastPage: () => void\n /** Go to next page */\n goToNextPage: () => void\n /** Go to previous page */\n goToPreviousPage: () => void\n}\n\n/**\n * Hook for managing table pagination\n * Supports both local (client-side) and remote (server-side) pagination\n * State is persisted in the widget store for the given widgetId\n */\nexport function usePagination<T extends TableRow>(\n widgetId: string,\n data: T[],\n): UsePaginationResult<T> {\n // Get store actions and state\n const setWidget = useWidgetStore((state) => state.setWidget)\n const getWidget = useWidgetStore((state) => state.getWidget)\n const paginationEnabled = useWidgetStore(\n useShallow(\n (state) =>\n !!(state.widgets[widgetId] as TableWidgetState | undefined)?.pagination,\n ),\n )\n const page = useWidgetStore(\n useShallow(\n (state) =>\n (state.widgets[widgetId] as TableWidgetState | undefined)?.pagination\n ?.page ?? DEFAULT_PAGE,\n ),\n )\n const rowsPerPage = useWidgetStore(\n useShallow(\n (state) =>\n (state.widgets[widgetId] as TableWidgetState | undefined)?.pagination\n ?.rowsPerPage ?? DEFAULT_ROWS_PER_PAGE,\n ),\n )\n const rowsPerPageOptions = useWidgetStore(\n useShallow(\n (state) =>\n (state.widgets[widgetId] as TableWidgetState | undefined)?.pagination\n ?.rowsPerPageOptions ?? DEFAULT_ROWS_PER_PAGE_OPTIONS,\n ),\n )\n const total = useWidgetStore(\n useShallow(\n (state) =>\n (state.widgets[widgetId] as TableWidgetState | undefined)?.pagination\n ?.total ?? data.length,\n ),\n )\n\n const mode = useWidgetStore(\n useShallow((state) => {\n const widget = state.widgets[widgetId] as TableWidgetState | undefined\n return widget?.mode\n }),\n )\n\n // Calculate max page\n const maxPage = Math.max(0, Math.ceil(total / (rowsPerPage ?? 1)) - 1)\n\n // Set page with bounds checking\n const setPage = useCallback(\n (newPage: number) => {\n // Read current state directly from store to avoid stale closures\n const widget = getWidget<TableWidgetState>(widgetId)\n const currentTotal = widget?.pagination?.total ?? data.length\n const currentRowsPerPage =\n widget?.pagination?.rowsPerPage ?? DEFAULT_ROWS_PER_PAGE\n const currentMaxPage = Math.max(\n 0,\n Math.ceil(currentTotal / currentRowsPerPage) - 1,\n )\n const boundedPage = Math.max(0, Math.min(newPage, currentMaxPage))\n\n setWidget<TableWidgetState>(widgetId, {\n pagination: {\n ...widget?.pagination,\n page: boundedPage,\n },\n })\n },\n [data.length, getWidget, setWidget, widgetId],\n )\n\n // Set rows per page and reset to first page\n const setRowsPerPage = useCallback(\n (newRowsPerPage: number) => {\n const widget = getWidget<TableWidgetState>(widgetId)\n setWidget<TableWidgetState>(widgetId, {\n pagination: {\n ...widget?.pagination,\n rowsPerPage: newRowsPerPage,\n page: 0, // Reset to first page when changing rows per page\n },\n })\n },\n [getWidget, setWidget, widgetId],\n )\n\n // Navigation helpers\n const goToFirstPage = useCallback(() => setPage(0), [setPage])\n const goToLastPage = useCallback(() => setPage(maxPage), [setPage, maxPage])\n const goToNextPage = useCallback(() => setPage(page + 1), [setPage, page])\n const goToPreviousPage = useCallback(() => setPage(page - 1), [setPage, page])\n\n // Paginated data for local mode\n const paginatedData = useMemo(() => {\n if (mode === 'remote' || !paginationEnabled) {\n // For remote mode, data is already paginated from server\n return data\n }\n return paginateData(data, page, rowsPerPage)\n }, [data, mode, page, paginationEnabled, rowsPerPage])\n\n return {\n paginationEnabled,\n page,\n rowsPerPage,\n rowsPerPageOptions,\n total,\n paginatedData,\n setPage,\n setRowsPerPage,\n goToFirstPage,\n goToLastPage,\n goToNextPage,\n goToPreviousPage,\n }\n}\n","import { useCallback, useMemo } from 'react'\nimport type {\n TableRow,\n SortDirection,\n SortState,\n TableWidgetState,\n} from '../types'\nimport { sortData } from '../helpers'\nimport { useWidgetStore } from '../../stores/widget-store'\nimport { useShallow } from 'zustand/shallow'\nimport { DEFAULT_COLUMN_ID, DEFAULT_DIRECTION } from '../config'\n\nexport interface UseSortResult<T> extends SortState {\n /** Whether sorting is enabled */\n sortEnabled: boolean\n /** Current sort state */\n columnId: string | null\n direction: SortDirection\n /** Sorted data (for local mode) */\n sortedData: T[]\n /** Toggle sort on a column */\n toggleSort: (columnId: string) => void\n /** Set sort state directly */\n setSort: (columnId: string | null, direction: SortDirection) => void\n /** Clear sort */\n clearSort: () => void\n}\n\n/**\n * Hook for managing table sorting\n * Supports both local (client-side) and remote (server-side) sorting\n * State is persisted in the widget store for the given widgetId\n */\nexport function useSort<T extends TableRow>(\n widgetId: string,\n data: T[],\n): UseSortResult<T> {\n // Get store actions and state\n const setWidget = useWidgetStore((state) => state.setWidget)\n const getWidget = useWidgetStore((state) => state.getWidget)\n const sortEnabled = useWidgetStore(\n useShallow(\n (state) =>\n !!(state.widgets[widgetId] as TableWidgetState | undefined)?.sort,\n ),\n )\n const columnId = useWidgetStore(\n useShallow(\n (state) =>\n (state.widgets[widgetId] as TableWidgetState | undefined)?.sort\n ?.columnId ?? DEFAULT_COLUMN_ID,\n ),\n )\n const direction = useWidgetStore(\n useShallow(\n (state) =>\n (state.widgets[widgetId] as TableWidgetState | undefined)?.sort\n ?.direction ?? DEFAULT_DIRECTION,\n ),\n )\n\n const mode = useWidgetStore(\n useShallow((state) => {\n const widget = state.widgets[widgetId] as TableWidgetState | undefined\n return widget?.mode\n }),\n )\n\n // Toggle sort on a column\n const toggleSort = useCallback(\n (toggleColumnId: string) => {\n // Read current state directly from store to avoid stale closures\n const widget = getWidget<TableWidgetState>(widgetId)\n const currentColumnId = widget?.sort?.columnId ?? DEFAULT_COLUMN_ID\n const currentDirection = widget?.sort?.direction ?? DEFAULT_DIRECTION\n\n let newDirection: SortDirection = 'asc'\n\n if (currentColumnId === toggleColumnId) {\n // Same column - toggle direction\n newDirection = currentDirection === 'asc' ? 'desc' : 'asc'\n }\n\n setWidget<TableWidgetState>(widgetId, {\n sort: {\n columnId: toggleColumnId,\n direction: newDirection,\n },\n })\n },\n [getWidget, setWidget, widgetId],\n )\n\n // Set sort state directly\n const setSort = useCallback(\n (newColumnId: string | null, newDirection: SortDirection) => {\n setWidget<TableWidgetState>(widgetId, {\n sort: {\n columnId: newColumnId,\n direction: newDirection,\n },\n })\n },\n [setWidget, widgetId],\n )\n\n // Clear sort\n const clearSort = useCallback(() => {\n const widget = getWidget<TableWidgetState>(widgetId)\n if (!widget?.sort) return\n\n setWidget<TableWidgetState>(widgetId, {\n sort: {\n ...widget.sort,\n columnId: null,\n direction: 'asc',\n },\n })\n }, [setWidget, getWidget, widgetId])\n\n // Sorted data for local mode\n const sortedData = useMemo(() => {\n if (mode === 'remote' || !columnId || !sortEnabled) {\n // For remote mode, data is already sorted from server\n // If no sort column, return original data\n return data\n }\n return sortData(data, columnId, direction)\n }, [data, mode, columnId, direction, sortEnabled])\n\n return {\n sortEnabled,\n columnId,\n direction,\n sortedData,\n toggleSort,\n setSort,\n clearSort,\n }\n}\n","import { useCallback, useMemo } from 'react'\nimport type { TableRow, TableWidgetState } from '../types'\nimport { useWidgetStore } from '../../stores/widget-store'\nimport { useShallow } from 'zustand/shallow'\n\nexport interface UseSelectionOptions {\n /** Callback when selection changes */\n onSelectionChange?: (selectedIds: (string | number)[]) => void\n}\n\nexport interface UseSelectionResult {\n /** Array of selected row IDs */\n selectedIds: (string | number)[]\n /** Check if a row is selected */\n isSelected: (id: string | number) => boolean\n /** Check if all provided rows are selected */\n isAllSelected: (rows: TableRow[]) => boolean\n /** Check if some but not all rows are selected (for indeterminate state) */\n isIndeterminate: (rows: TableRow[]) => boolean\n /** Toggle selection of a single row */\n toggleRow: (id: string | number) => void\n /** Toggle selection of all provided rows */\n toggleAll: (rows: TableRow[]) => void\n /** Select specific rows */\n selectRows: (ids: (string | number)[]) => void\n /** Deselect specific rows */\n deselectRows: (ids: (string | number)[]) => void\n /** Clear all selections */\n clearSelection: () => void\n}\n\n/**\n * Hook for managing table row selection\n * Selection persists across pagination and is stored in the widget store\n */\nexport function useSelection(\n widgetId: string,\n options?: UseSelectionOptions,\n): UseSelectionResult {\n const { onSelectionChange } = options ?? {}\n\n // Get store actions and state\n const setWidget = useWidgetStore((state) => state.setWidget)\n const getWidget = useWidgetStore((state) => state.getWidget)\n const selected = useWidgetStore(\n useShallow((state) => {\n const widget = state.widgets[widgetId] as TableWidgetState | undefined\n return widget?.selected\n }),\n )\n\n // Use store values with fallback to empty array\n const selectedIds = useMemo(() => selected ?? [], [selected])\n\n // Check if a row is selected\n const isSelected = useCallback(\n (id: string | number) => selectedIds.includes(id),\n [selectedIds],\n )\n\n // Check if all provided rows are selected\n const isAllSelected = useCallback(\n (rows: TableRow[]) => {\n if (rows.length === 0) return false\n return rows.every((row) => selectedIds.includes(row.id))\n },\n [selectedIds],\n )\n\n // Check if some but not all rows are selected\n const isIndeterminate = useCallback(\n (rows: TableRow[]) => {\n if (rows.length === 0) return false\n const selectedCount = rows.filter((row) =>\n selectedIds.includes(row.id),\n ).length\n return selectedCount > 0 && selectedCount < rows.length\n },\n [selectedIds],\n )\n\n // Toggle selection of a single row\n const toggleRow = useCallback(\n (id: string | number) => {\n const widget = getWidget<TableWidgetState>(widgetId)\n const currentSelected = widget?.selected ?? []\n\n const newSelected = currentSelected.includes(id)\n ? currentSelected.filter((s) => s !== id)\n : [...currentSelected, id]\n\n setWidget<TableWidgetState>(widgetId, {\n selected: newSelected,\n })\n\n if (onSelectionChange) {\n onSelectionChange(newSelected)\n }\n },\n [getWidget, setWidget, widgetId, onSelectionChange],\n )\n\n // Toggle selection of all provided rows\n const toggleAll = useCallback(\n (rows: TableRow[]) => {\n const widget = getWidget<TableWidgetState>(widgetId)\n const currentSelected = widget?.selected ?? []\n\n const rowIds = rows.map((row) => row.id)\n const allSelected = rowIds.every((id) => currentSelected.includes(id))\n\n const newSelected = allSelected\n ? currentSelected.filter((id) => !rowIds.includes(id))\n : [...new Set([...currentSelected, ...rowIds])]\n\n setWidget<TableWidgetState>(widgetId, {\n selected: newSelected,\n })\n\n if (onSelectionChange) {\n onSelectionChange(newSelected)\n }\n },\n [getWidget, setWidget, widgetId, onSelectionChange],\n )\n\n // Select specific rows\n const selectRows = useCallback(\n (ids: (string | number)[]) => {\n const widget = getWidget<TableWidgetState>(widgetId)\n const currentSelected = widget?.selected ?? []\n\n const newSelected = [...new Set([...currentSelected, ...ids])]\n\n setWidget<TableWidgetState>(widgetId, {\n selected: newSelected,\n })\n\n if (onSelectionChange) {\n onSelectionChange(newSelected)\n }\n },\n [getWidget, setWidget, widgetId, onSelectionChange],\n )\n\n // Deselect specific rows\n const deselectRows = useCallback(\n (ids: (string | number)[]) => {\n const widget = getWidget<TableWidgetState>(widgetId)\n const currentSelected = widget?.selected ?? []\n\n const newSelected = currentSelected.filter((id) => !ids.includes(id))\n\n setWidget<TableWidgetState>(widgetId, {\n selected: newSelected,\n })\n\n if (onSelectionChange) {\n onSelectionChange(newSelected)\n }\n },\n [getWidget, setWidget, widgetId, onSelectionChange],\n )\n\n // Clear all selections\n const clearSelection = useCallback(() => {\n const newSelected: (string | number)[] = []\n\n setWidget<TableWidgetState>(widgetId, {\n selected: newSelected,\n })\n\n if (onSelectionChange) {\n onSelectionChange(newSelected)\n }\n }, [setWidget, widgetId, onSelectionChange])\n\n return {\n selectedIds,\n isSelected,\n isAllSelected,\n isIndeterminate,\n toggleRow,\n toggleAll,\n selectRows,\n deselectRows,\n clearSelection,\n }\n}\n","import {\n Box,\n Skeleton,\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableRow,\n} from '@mui/material'\n\nexport interface TableSkeletonProps {\n /** Number of columns to display */\n columns?: number\n /** Number of rows to display */\n rows?: number\n}\n\n/**\n * Table skeleton loader component\n */\nexport function TableSkeleton({ columns = 4, rows = 5 }: TableSkeletonProps) {\n return (\n <Box aria-label='Table skeleton'>\n <Table>\n <TableHead>\n <TableRow>\n {Array.from({ length: columns }).map((_, index) => (\n <TableCell key={index}>\n <Skeleton width='80%' height={24} />\n </TableCell>\n ))}\n </TableRow>\n </TableHead>\n <TableBody>\n {Array.from({ length: rows }).map((_, rowIndex) => (\n <TableRow key={rowIndex}>\n {Array.from({ length: columns }).map((_, colIndex) => (\n <TableCell key={colIndex}>\n <Skeleton width='70%' height={20} />\n </TableCell>\n ))}\n </TableRow>\n ))}\n </TableBody>\n </Table>\n </Box>\n )\n}\n","import type { TableRow, TableWidgetData } from './types'\n\n/**\n * Sanitizes a table row by ensuring all values are serializable.\n * Converts ReactNode and function values to undefined.\n *\n * @param row - The table row to sanitize\n * @returns A sanitized table row\n */\nexport function sanitizeTableRow(row: TableRow): TableRow {\n const sanitized: TableRow = { id: row.id }\n\n for (const [key, value] of Object.entries(row)) {\n if (key === 'id') continue\n\n // Keep primitive values\n if (\n typeof value === 'string' ||\n typeof value === 'number' ||\n typeof value === 'boolean' ||\n value === null\n ) {\n sanitized[key] = value\n }\n // Serialize arrays and plain objects\n else if (Array.isArray(value) || typeof value === 'object') {\n try {\n // Attempt to serialize - if it fails, the value contains non-serializable content\n JSON.stringify(value)\n sanitized[key] = value\n } catch {\n sanitized[key] = undefined\n }\n }\n // Skip functions and other non-serializable values\n else {\n sanitized[key] = undefined\n }\n }\n\n return sanitized\n}\n\n/**\n * Sanitizes table widget data by ensuring all rows are serializable.\n *\n * @param data - The table data to sanitize\n * @returns Sanitized table data\n */\nexport function sanitizeTableData(\n data: TableWidgetData | undefined,\n): TableWidgetData | undefined {\n return data?.map(sanitizeTableRow)\n}\n","import type { SxProps, Theme } from '@mui/material'\n\nexport const styles = {\n container: {\n width: '100%',\n overflow: 'auto',\n },\n table: {\n minWidth: 650,\n },\n headerCell: {\n fontWeight: 600,\n backgroundColor: (theme: Theme) => theme.palette.background.paper,\n },\n row: {\n '&:last-child td, &:last-child th': {\n border: 0,\n },\n },\n rowHover: {\n '&:hover': {\n backgroundColor: (theme: Theme) => theme.palette.action.hover,\n },\n },\n rowSelected: {\n backgroundColor: (theme: Theme) => theme.palette.action.selected,\n '&:hover': {\n backgroundColor: (theme: Theme) => theme.palette.action.selected,\n },\n },\n pagination: {\n borderTop: (theme: Theme) => `1px solid ${theme.palette.divider}`,\n },\n} satisfies Record<string, SxProps<Theme>>\n"],"names":["CellHeader","t0","$","_c","column","sortState","onSort","isSelectAll","isAllSelected","isIndeterminate","onSelectAll","t1","Symbol","for","t2","jsx","TableCell","Checkbox","isSorted","columnId","id","sortDirection","direction","undefined","sortable","width","t3","t4","label","TableSortLabel","t5","align","getCellValue","cellValue","Array","isArray","map","item","String","join","JSON","stringify","compareValues","a","b","comparison","localeCompare","strA","strB","sortData","data","sort","paginateData","page","rowsPerPage","start","end","slice","DEFAULT_P","children","Typography","CELL_MARKDOWN_COMPONENTS","h1","h2","h3","p","href","isExternal","startsWith","Link","img","ul","ol","li","Cell","row","value","formatter","MuiTableCell","ReactMarkdown","Row","columns","isSelected","selectable","onClick","onSelect","onMouseEnter","onMouseLeave","handleClick","event","stopPropagation","handleCheckboxClick","handleMouseEnter","t6","handleMouseLeave","t7","t8","t9","cursor","t10","t11","t12","MuiTableRow","PaginationActions","count","onPageChange","lastPage","Math","max","ceil","handleFirstPage","event_0","handlePreviousPage","event_1","handleNextPage","event_2","handleLastPage","flexShrink","ml","FirstPageIcon","IconButton","KeyboardArrowLeft","t13","KeyboardArrowRight","t14","t15","t16","LastPageIcon","t17","t18","jsxs","Box","Pagination","total","rowsPerPageOptions","onRowsPerPageChange","_event","newPage","handlePageChange","parseInt","target","handleRowsPerPageChange","MuiTablePagination","Table","props","ref","stickyHeader","MuiTable","Head","TableHead","Body","TableBody","Container","TableContainer","Paper","useWidgetRef","MuiTableContainer","DEFAULT_MODE","DEFAULT_PAGE","DEFAULT_ROWS_PER_PAGE","DEFAULT_ROWS_PER_PAGE_OPTIONS","DEFAULT_COLUMN_ID","DEFAULT_DIRECTION","tableDownloadConfig","refUI","downloadToPNG","modifier","downloadToCSV","length","firstRow","headers","Object","keys","filter","key","rows","header","tableConfig","selected","mode","usePagination","widgetId","setWidget","useWidgetStore","_temp","getWidget","_temp2","state_1","state","widgets","pagination","paginationEnabled","useShallow","state_2","state_3","state_4","state_5","state_6","maxPage","widget_0","currentTotal","widget","currentRowsPerPage","currentMaxPage","boundedPage","min","setPage","newRowsPerPage","widget_1","setRowsPerPage","goToFirstPage","goToLastPage","goToNextPage","goToPreviousPage","bb0","paginatedData","state_0","useSort","sortEnabled","toggleColumnId","currentColumnId","currentDirection","newDirection","toggleSort","newColumnId","newDirection_0","setSort","clearSort","sortedData","useSelection","options","onSelectionChange","selectedIds","includes","every","rows_0","selectedCount","row_0","id_0","currentSelected","newSelected","s","toggleRow","rows_1","currentSelected_0","rowIds","_temp3","newSelected_0","id_1","id_2","Set","toggleAll","ids","currentSelected_1","newSelected_1","selectRows","ids_0","newSelected_2","id_3","deselectRows","newSelected_3","clearSelection","row_1","TableSkeleton","TableRow","from","__0","rowIndex","__1","colIndex","Skeleton","_","index","sanitizeTableRow","sanitized","entries","sanitizeTableData","styles","container","overflow","table","minWidth","headerCell","fontWeight","backgroundColor","theme","palette","background","paper","border","rowHover","action","hover","rowSelected","borderTop","divider"],"mappings":"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"}
1
+ {"version":3,"file":"table.js","sources":["../../src/widgets/table/components/cell-header.tsx","../../src/widgets/table/helpers.ts","../../src/widgets/table/components/cell.tsx","../../src/widgets/table/components/row.tsx","../../src/widgets/table/components/pagination-actions.tsx","../../src/widgets/table/components/pagination.tsx","../../src/widgets/table/table-ui.tsx","../../src/widgets/table/config.ts","../../src/widgets/table/hooks/use-pagination.ts","../../src/widgets/table/hooks/use-sort.ts","../../src/widgets/table/hooks/use-selection.ts","../../src/widgets/table/skeleton.tsx","../../src/widgets/table/serializer.ts","../../src/widgets/table/style.ts"],"sourcesContent":["import { TableCell, TableSortLabel, Checkbox } from '@mui/material'\nimport type { CellHeaderProps } from '../types'\n\n/**\n * Table cell header component with optional sorting and select-all checkbox\n */\nexport function CellHeader({\n column,\n sortState,\n onSort,\n isSelectAll,\n isAllSelected,\n isIndeterminate,\n onSelectAll,\n}: CellHeaderProps) {\n // Render select-all checkbox\n if (isSelectAll) {\n return (\n <TableCell padding='checkbox'>\n <Checkbox\n checked={isAllSelected}\n indeterminate={isIndeterminate}\n onChange={onSelectAll}\n inputProps={{ 'aria-label': 'select all rows' }}\n />\n </TableCell>\n )\n }\n\n const isSorted = sortState?.columnId === column.id\n const sortDirection = isSorted ? sortState.direction : undefined\n\n // Render sortable column header\n if (column.sortable && onSort) {\n return (\n <TableCell\n align={column.align}\n style={{ width: column.width }}\n sortDirection={sortDirection}\n >\n <TableSortLabel\n active={isSorted}\n direction={sortDirection ?? 'asc'}\n onClick={() => onSort(column.id)}\n >\n {column.label}\n </TableSortLabel>\n </TableCell>\n )\n }\n\n // Render non-sortable column header\n return (\n <TableCell align={column.align} style={{ width: column.width }}>\n {column.label}\n </TableCell>\n )\n}\n","import type { ReactNode } from 'react'\n\n/**\n * Get formatted cell value for display\n * Handles primitives, arrays, objects, and custom formatters\n *\n * @param cellValue - Raw cell value\n * @param formatter - Optional formatter function\n * @returns Formatted value for display\n */\nexport function getCellValue<T>(cellValue: T): ReactNode {\n // Handle null/undefined\n if (cellValue === null || cellValue === undefined) {\n return ''\n }\n\n // Handle arrays - format as [item1, item2, ...]\n if (Array.isArray(cellValue)) {\n const formatted = cellValue\n .map((item) => (typeof item === 'string' ? `\"${item}\"` : String(item)))\n .join(', ')\n return `[${formatted}]`\n }\n\n // Handle objects - stringify to JSON\n if (typeof cellValue === 'object') {\n return JSON.stringify(cellValue)\n }\n\n // Return primitives as-is (string, number, boolean)\n return cellValue as ReactNode\n}\n\n/**\n * Compare two values for sorting\n * Handles strings, numbers, and other types\n *\n * @param a - First value\n * @param b - Second value\n * @param direction - Sort direction\n * @returns Comparison result (-1, 0, 1)\n */\nexport function compareValues(\n a: unknown,\n b: unknown,\n direction: 'asc' | 'desc',\n): number {\n // Handle null/undefined - always sort to end\n if (a === null || a === undefined) return 1\n if (b === null || b === undefined) return -1\n\n let comparison = 0\n\n if (typeof a === 'string' && typeof b === 'string') {\n comparison = a.localeCompare(b)\n } else if (typeof a === 'number' && typeof b === 'number') {\n comparison = a - b\n } else if (typeof a === 'boolean' && typeof b === 'boolean') {\n comparison = a === b ? 0 : a ? 1 : -1\n } else if (typeof a === 'object' || typeof b === 'object') {\n // Compare objects/arrays as JSON strings\n const strA = JSON.stringify(a)\n const strB = JSON.stringify(b)\n comparison = strA.localeCompare(strB)\n } else {\n // Fallback for other primitives (bigint, symbol, etc.)\n comparison = 0\n }\n\n return direction === 'asc' ? comparison : -comparison\n}\n\n/**\n * Sort data array by column\n *\n * @param data - Data array to sort\n * @param columnId - Column ID to sort by\n * @param direction - Sort direction\n * @returns Sorted data array (new array, does not mutate original)\n */\nexport function sortData<T extends Record<string, unknown>>(\n data: T[],\n columnId: string,\n direction: 'asc' | 'desc',\n): T[] {\n return [...data].sort((a, b) =>\n compareValues(a[columnId], b[columnId], direction),\n )\n}\n\n/**\n * Paginate data array\n *\n * @param data - Data array to paginate\n * @param page - Current page (0-indexed)\n * @param rowsPerPage - Number of rows per page\n * @returns Paginated data slice\n */\nexport function paginateData<T>(\n data: T[],\n page: number,\n rowsPerPage: number,\n): T[] {\n const start = page * rowsPerPage\n const end = start + rowsPerPage\n return data.slice(start, end)\n}\n","import { TableCell as MuiTableCell, Link, Typography } from '@mui/material'\nimport ReactMarkdown, { type Components } from 'react-markdown'\nimport type { TableColumn, TableRow } from '../types'\nimport { getCellValue } from '../helpers'\nimport type { ReactNode } from 'react'\n\n/**\n * Props for Cell component\n */\nexport interface CellProps {\n /** Column definition */\n column: TableColumn\n /** Full table row for context */\n row: TableRow\n /** Cell value */\n value: unknown\n}\n\nconst DEFAULT_P = ({ children }: { children?: ReactNode }) => (\n <Typography component='span' variant='body2' color='inherit'>\n {children}\n </Typography>\n)\n\n/**\n * Markdown components for cell content\n * Uses compact styling suitable for table cells (reusing Note widget pattern)\n */\nconst CELL_MARKDOWN_COMPONENTS: Components = {\n h1: DEFAULT_P,\n h2: DEFAULT_P,\n h3: DEFAULT_P,\n p: DEFAULT_P,\n a: ({ children, href }) => {\n const isExternal = href?.startsWith('http')\n return (\n <Link\n href={href}\n target={isExternal ? '_blank' : undefined}\n rel={isExternal ? 'noopener noreferrer' : undefined}\n color='text.primary'\n underline='always'\n >\n {children}\n </Link>\n )\n },\n img: () => null,\n ul: DEFAULT_P,\n ol: DEFAULT_P,\n li: DEFAULT_P,\n}\n\n/**\n * Table cell component with automatic markdown support for string values\n * Markdown is rendered when the raw value is a string and no formatter is defined.\n * If a formatter is used, its output is rendered directly without markdown parsing.\n */\nexport function Cell({ column, row, value }: CellProps) {\n // If formatter is defined, use it directly without markdown\n if (column.formatter) {\n return (\n <MuiTableCell align={column.align}>\n {column.formatter(value, row)}\n </MuiTableCell>\n )\n }\n\n // For string values without formatter, render as markdown\n if (typeof value === 'string') {\n return (\n <MuiTableCell align={column.align}>\n <ReactMarkdown components={CELL_MARKDOWN_COMPONENTS}>\n {value}\n </ReactMarkdown>\n </MuiTableCell>\n )\n }\n\n // For non-string values, render directly\n return <MuiTableCell align={column.align}>{getCellValue(value)}</MuiTableCell>\n}\n","import { TableRow as MuiTableRow, TableCell, Checkbox } from '@mui/material'\nimport type { RowProps } from '../types'\nimport { Cell } from './cell'\n\n/**\n * Table row component with selection and hover support\n */\nexport function Row({\n row,\n columns,\n isSelected = false,\n selectable = false,\n onClick,\n onSelect,\n onMouseEnter,\n onMouseLeave,\n}: RowProps) {\n const handleClick = () => {\n onClick?.(row)\n }\n\n const handleCheckboxClick = (event: React.MouseEvent) => {\n event.stopPropagation()\n onSelect?.(row)\n }\n\n const handleMouseEnter = () => {\n onMouseEnter?.(row)\n }\n\n const handleMouseLeave = () => {\n onMouseLeave?.()\n }\n\n return (\n <MuiTableRow\n hover={!!onMouseEnter || !!onMouseLeave || !!onClick}\n selected={isSelected}\n onClick={handleClick}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n sx={{\n cursor: onClick ? 'pointer' : 'default',\n }}\n >\n {selectable && (\n <TableCell padding='checkbox'>\n <Checkbox\n checked={isSelected}\n onClick={handleCheckboxClick}\n inputProps={{ 'aria-label': `select row ${row.id}` }}\n />\n </TableCell>\n )}\n {columns.map((column) => (\n <Cell\n key={column.id}\n row={row}\n column={column}\n value={row[column.id]}\n />\n ))}\n </MuiTableRow>\n )\n}\n","import { Box, IconButton } from '@mui/material'\nimport FirstPageIcon from '@mui/icons-material/FirstPage'\nimport KeyboardArrowLeft from '@mui/icons-material/KeyboardArrowLeft'\nimport KeyboardArrowRight from '@mui/icons-material/KeyboardArrowRight'\nimport LastPageIcon from '@mui/icons-material/LastPage'\nimport type { PaginationActionsProps } from '../types'\n\n/**\n * Custom pagination actions with first/prev/next/last buttons\n */\nexport function PaginationActions({\n count,\n page,\n rowsPerPage,\n onPageChange,\n}: PaginationActionsProps) {\n const lastPage = Math.max(0, Math.ceil(count / rowsPerPage) - 1)\n\n const handleFirstPage = (event: React.MouseEvent<HTMLButtonElement>) => {\n onPageChange(event, 0)\n }\n\n const handlePreviousPage = (event: React.MouseEvent<HTMLButtonElement>) => {\n onPageChange(event, page - 1)\n }\n\n const handleNextPage = (event: React.MouseEvent<HTMLButtonElement>) => {\n onPageChange(event, page + 1)\n }\n\n const handleLastPage = (event: React.MouseEvent<HTMLButtonElement>) => {\n onPageChange(event, lastPage)\n }\n\n return (\n <Box sx={{ flexShrink: 0, ml: 2.5 }}>\n <IconButton\n onClick={handleFirstPage}\n disabled={page === 0}\n aria-label='first page'\n >\n <FirstPageIcon />\n </IconButton>\n <IconButton\n onClick={handlePreviousPage}\n disabled={page === 0}\n aria-label='previous page'\n >\n <KeyboardArrowLeft />\n </IconButton>\n <IconButton\n onClick={handleNextPage}\n disabled={page >= lastPage}\n aria-label='next page'\n >\n <KeyboardArrowRight />\n </IconButton>\n <IconButton\n onClick={handleLastPage}\n disabled={page >= lastPage}\n aria-label='last page'\n >\n <LastPageIcon />\n </IconButton>\n </Box>\n )\n}\n","import { TablePagination as MuiTablePagination } from '@mui/material'\nimport type { PaginationProps } from '../types'\nimport { PaginationActions } from './pagination-actions'\n\n/**\n * Table pagination component\n */\nexport function Pagination({\n page,\n rowsPerPage,\n total,\n rowsPerPageOptions = [5, 10, 25, 50],\n onPageChange,\n onRowsPerPageChange,\n}: PaginationProps) {\n const handlePageChange = (\n _event: React.MouseEvent<HTMLButtonElement> | null,\n newPage: number,\n ) => {\n onPageChange(newPage)\n }\n\n const handleRowsPerPageChange = (\n event: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>,\n ) => {\n onRowsPerPageChange(parseInt(event.target.value, 10))\n }\n\n return (\n <MuiTablePagination\n component='div'\n count={total}\n page={page}\n rowsPerPage={rowsPerPage}\n rowsPerPageOptions={rowsPerPageOptions}\n onPageChange={handlePageChange}\n onRowsPerPageChange={handleRowsPerPageChange}\n ActionsComponent={PaginationActions}\n />\n )\n}\n","import {\n Table as MuiTable,\n TableBody,\n TableCell,\n TableHead,\n TableContainer as MuiTableContainer,\n Paper,\n type TableProps as MuiTableProps,\n} from '@mui/material'\nimport type { Ref } from 'react'\nimport { CellHeader } from './components/cell-header'\nimport { Row } from './components/row'\nimport { Pagination } from './components/pagination'\nimport { PaginationActions } from './components/pagination-actions'\nimport { useWidgetRef } from '../../hooks'\nimport type { TableUIProps } from './types'\n\n/**\n * Props for the base Table component\n */\ninterface TableComponentProps extends MuiTableProps {\n /** Table element ref */\n ref?: Ref<HTMLTableElement>\n}\n\n/**\n * Base Table component with compound component pattern\n * Provides Table.Head, Table.Body, Table.Row, Table.Cell, Table.CellHeader, Table.Pagination\n */\nfunction Table({\n children,\n ref,\n stickyHeader = true,\n ...props\n}: TableComponentProps) {\n return (\n <MuiTable stickyHeader={stickyHeader} ref={ref} {...props}>\n {children}\n </MuiTable>\n )\n}\n\n// Attach sub-components as static properties\nTable.Head = TableHead\nTable.CellHeader = CellHeader\nTable.Body = TableBody\nTable.Row = Row\nTable.Cell = TableCell\nTable.Container = TableContainer\nTable.Paper = Paper\nTable.Pagination = Pagination\nTable.PaginationActions = PaginationActions\n\nexport { Table }\n\n/**\n * TableContainer widget component\n * Integrates with widget store and provides ref registration using custom hook\n */\nfunction TableContainer(props: TableUIProps) {\n const { ref } = useWidgetRef<HTMLDivElement>(props.id)\n\n return <MuiTableContainer ref={ref}>{props.children}</MuiTableContainer>\n}\n","import { downloadToCSV, downloadToPNG } from '../actions'\nimport type { ConfigProps } from '../loader/types'\nimport type {\n TableDownloadConfig,\n TableWidgetConfig,\n TableColumn,\n Mode,\n SortDirection,\n} from './types'\n\nconst DEFAULT_MODE: Mode = 'local'\nexport const DEFAULT_PAGE = 0\nexport const DEFAULT_ROWS_PER_PAGE = 10\nexport const DEFAULT_ROWS_PER_PAGE_OPTIONS = [5, 10, 25, 50]\n\nexport const DEFAULT_COLUMN_ID = null\nexport const DEFAULT_DIRECTION: SortDirection = 'asc'\n\n/**\n * Creates download configuration for table widgets, supporting PNG (screenshot) and CSV (data) exports. CSV output uses column keys as headers and filters out `id` fields.\n *\n * @param props - Configuration with `refUI` reference for PNG export.\n * @returns Array of download items for use with the Download action.\n */\nexport function tableDownloadConfig({\n refUI,\n}: ConfigProps): TableDownloadConfig {\n return [\n {\n ...downloadToPNG,\n modifier: () => downloadToPNG.modifier(refUI),\n },\n {\n ...downloadToCSV,\n modifier: async (data) => {\n if (!data?.length) {\n return downloadToCSV.modifier([])\n }\n\n // Convert table data to CSV format\n // First row contains headers (column keys)\n const firstRow = data[0]\n if (!firstRow) {\n return downloadToCSV.modifier([])\n }\n\n const headers = Object.keys(firstRow).filter((key) => key !== 'id')\n const rows = data.map((row) =>\n headers.map((header) => {\n const value = row[header]\n if (value === null || value === undefined) return ''\n if (typeof value === 'object') return JSON.stringify(value)\n return value\n }),\n )\n\n return downloadToCSV.modifier([headers, ...rows])\n },\n },\n ]\n}\n\n/**\n * Returns the default configuration for table widgets with pagination and sorting, including column definitions and local data mode.\n *\n * @param columns - Array of column definitions for the table.\n * @returns Default table widget config.\n */\nexport function tableConfig(columns: TableColumn[] = []): TableWidgetConfig {\n return {\n columns,\n selectable: false,\n mode: DEFAULT_MODE,\n }\n}\n","import { useCallback, useMemo } from 'react'\nimport type { TableRow, TableWidgetState } from '../types'\nimport { paginateData } from '../helpers'\nimport { widgetStoreActions } from '../../stores/widget-store'\nimport { useWidgetSelector } from '../../stores/use-widget-selector'\nimport {\n DEFAULT_PAGE,\n DEFAULT_ROWS_PER_PAGE,\n DEFAULT_ROWS_PER_PAGE_OPTIONS,\n} from '../config'\n\nexport interface UsePaginationResult<T> {\n /** Whether pagination is enabled */\n paginationEnabled: boolean\n /** Current page (0-indexed) */\n page: number\n /** Rows per page */\n rowsPerPage: number\n /** Total row count */\n total: number\n /** Available rows per page options */\n rowsPerPageOptions: number[]\n /** Paginated data (for local mode) */\n paginatedData: T[]\n /** Set current page */\n setPage: (page: number) => void\n /** Set rows per page */\n setRowsPerPage: (rowsPerPage: number) => void\n /** Go to first page */\n goToFirstPage: () => void\n /** Go to last page */\n goToLastPage: () => void\n /** Go to next page */\n goToNextPage: () => void\n /** Go to previous page */\n goToPreviousPage: () => void\n}\n\n/**\n * Hook for managing table pagination with support for both local (client-side) and remote (server-side) modes.\n * State is persisted in the widget store for the given widget ID.\n *\n * @param widgetId - The widget ID to persist pagination state under.\n * @param data - The full data array (used for local pagination and total count fallback).\n * @returns Pagination state and navigation helpers.\n *\n * @example\n * ```tsx\n * const { page, setPage, paginatedData, totalPages } = usePagination(widgetId, data)\n * ```\n */\nexport function usePagination<T extends TableRow>(\n widgetId: string,\n data: T[],\n): UsePaginationResult<T> {\n // Get store state\n const {\n paginationEnabled,\n page,\n rowsPerPage,\n rowsPerPageOptions,\n total,\n mode,\n } = useWidgetSelector(widgetId, (w) => {\n const widget = w as TableWidgetState | undefined\n return {\n paginationEnabled: !!widget?.pagination,\n page: widget?.pagination?.page ?? DEFAULT_PAGE,\n rowsPerPage: widget?.pagination?.rowsPerPage ?? DEFAULT_ROWS_PER_PAGE,\n rowsPerPageOptions:\n widget?.pagination?.rowsPerPageOptions ?? DEFAULT_ROWS_PER_PAGE_OPTIONS,\n total: widget?.pagination?.total ?? data.length,\n mode: widget?.mode,\n }\n })\n\n // Calculate max page\n const maxPage = Math.max(0, Math.ceil(total / (rowsPerPage ?? 1)) - 1)\n\n // Set page with bounds checking\n const setPage = useCallback(\n (newPage: number) => {\n // Read current state directly from store to avoid stale closures\n const widget = widgetStoreActions.getWidget<TableWidgetState>(widgetId)\n const currentTotal = widget?.pagination?.total ?? data.length\n const currentRowsPerPage =\n widget?.pagination?.rowsPerPage ?? DEFAULT_ROWS_PER_PAGE\n const currentMaxPage = Math.max(\n 0,\n Math.ceil(currentTotal / currentRowsPerPage) - 1,\n )\n const boundedPage = Math.max(0, Math.min(newPage, currentMaxPage))\n\n widgetStoreActions.setWidget<TableWidgetState>(widgetId, {\n pagination: {\n ...widget?.pagination,\n page: boundedPage,\n },\n })\n },\n [data.length, widgetId],\n )\n\n // Set rows per page and reset to first page\n const setRowsPerPage = useCallback(\n (newRowsPerPage: number) => {\n const widget = widgetStoreActions.getWidget<TableWidgetState>(widgetId)\n widgetStoreActions.setWidget<TableWidgetState>(widgetId, {\n pagination: {\n ...widget?.pagination,\n rowsPerPage: newRowsPerPage,\n page: 0, // Reset to first page when changing rows per page\n },\n })\n },\n [widgetId],\n )\n\n // Navigation helpers\n const goToFirstPage = useCallback(() => setPage(0), [setPage])\n const goToLastPage = useCallback(() => setPage(maxPage), [setPage, maxPage])\n const goToNextPage = useCallback(() => setPage(page + 1), [setPage, page])\n const goToPreviousPage = useCallback(() => setPage(page - 1), [setPage, page])\n\n // Paginated data for local mode\n const paginatedData = useMemo(() => {\n if (mode === 'remote' || !paginationEnabled) {\n // For remote mode, data is already paginated from server\n return data\n }\n return paginateData(data, page, rowsPerPage)\n }, [data, mode, page, paginationEnabled, rowsPerPage])\n\n return {\n paginationEnabled,\n page,\n rowsPerPage,\n rowsPerPageOptions,\n total,\n paginatedData,\n setPage,\n setRowsPerPage,\n goToFirstPage,\n goToLastPage,\n goToNextPage,\n goToPreviousPage,\n }\n}\n","import { useCallback, useMemo } from 'react'\nimport type {\n TableRow,\n SortDirection,\n SortState,\n TableWidgetState,\n} from '../types'\nimport { sortData } from '../helpers'\nimport { widgetStoreActions } from '../../stores/widget-store'\nimport { useWidgetSelector } from '../../stores/use-widget-selector'\nimport { DEFAULT_COLUMN_ID, DEFAULT_DIRECTION } from '../config'\n\nexport interface UseSortResult<T> extends SortState {\n /** Whether sorting is enabled */\n sortEnabled: boolean\n /** Current sort state */\n columnId: string | null\n direction: SortDirection\n /** Sorted data (for local mode) */\n sortedData: T[]\n /** Toggle sort on a column */\n toggleSort: (columnId: string) => void\n /** Set sort state directly */\n setSort: (columnId: string | null, direction: SortDirection) => void\n /** Clear sort */\n clearSort: () => void\n}\n\n/**\n * Hook for managing table sorting with support for both local (client-side) and remote (server-side) modes.\n * State is persisted in the widget store for the given widget ID.\n *\n * @param widgetId - The widget ID to persist sort state under.\n * @param data - The data array to sort (for local mode).\n * @returns Sort state, sorted data, and sort control functions.\n *\n * @example\n * ```tsx\n * const { sortedData, sortField, sortDirection, handleSort } = useSort(widgetId, data)\n * ```\n */\nexport function useSort<T extends TableRow>(\n widgetId: string,\n data: T[],\n): UseSortResult<T> {\n // Get store state\n const { sortEnabled, columnId, direction, mode } = useWidgetSelector(\n widgetId,\n (w) => {\n const widget = w as TableWidgetState | undefined\n return {\n sortEnabled: !!widget?.sort,\n columnId: widget?.sort?.columnId ?? DEFAULT_COLUMN_ID,\n direction: widget?.sort?.direction ?? DEFAULT_DIRECTION,\n mode: widget?.mode,\n }\n },\n )\n\n // Toggle sort on a column\n const toggleSort = useCallback(\n (toggleColumnId: string) => {\n // Read current state directly from store to avoid stale closures\n const widget = widgetStoreActions.getWidget<TableWidgetState>(widgetId)\n const currentColumnId = widget?.sort?.columnId ?? DEFAULT_COLUMN_ID\n const currentDirection = widget?.sort?.direction ?? DEFAULT_DIRECTION\n\n let newDirection: SortDirection = 'asc'\n\n if (currentColumnId === toggleColumnId) {\n // Same column - toggle direction\n newDirection = currentDirection === 'asc' ? 'desc' : 'asc'\n }\n\n widgetStoreActions.setWidget<TableWidgetState>(widgetId, {\n sort: {\n columnId: toggleColumnId,\n direction: newDirection,\n },\n })\n },\n [widgetId],\n )\n\n // Set sort state directly\n const setSort = useCallback(\n (newColumnId: string | null, newDirection: SortDirection) => {\n widgetStoreActions.setWidget<TableWidgetState>(widgetId, {\n sort: {\n columnId: newColumnId,\n direction: newDirection,\n },\n })\n },\n [widgetId],\n )\n\n // Clear sort\n const clearSort = useCallback(() => {\n const widget = widgetStoreActions.getWidget<TableWidgetState>(widgetId)\n if (!widget?.sort) return\n\n widgetStoreActions.setWidget<TableWidgetState>(widgetId, {\n sort: {\n ...widget.sort,\n columnId: null,\n direction: 'asc',\n },\n })\n }, [widgetId])\n\n // Sorted data for local mode\n const sortedData = useMemo(() => {\n if (mode === 'remote' || !columnId || !sortEnabled) {\n // For remote mode, data is already sorted from server\n // If no sort column, return original data\n return data\n }\n return sortData(data, columnId, direction)\n }, [data, mode, columnId, direction, sortEnabled])\n\n return {\n sortEnabled,\n columnId,\n direction,\n sortedData,\n toggleSort,\n setSort,\n clearSort,\n }\n}\n","import { useCallback, useMemo } from 'react'\nimport type { TableRow, TableWidgetState } from '../types'\nimport { widgetStoreActions } from '../../stores/widget-store'\nimport { useWidgetSelector } from '../../stores/use-widget-selector'\n\nexport interface UseSelectionOptions {\n /** Callback when selection changes */\n onSelectionChange?: (selectedIds: (string | number)[]) => void\n}\n\nexport interface UseSelectionResult {\n /** Array of selected row IDs */\n selectedIds: (string | number)[]\n /** Check if a row is selected */\n isSelected: (id: string | number) => boolean\n /** Check if all provided rows are selected */\n isAllSelected: (rows: TableRow[]) => boolean\n /** Check if some but not all rows are selected (for indeterminate state) */\n isIndeterminate: (rows: TableRow[]) => boolean\n /** Toggle selection of a single row */\n toggleRow: (id: string | number) => void\n /** Toggle selection of all provided rows */\n toggleAll: (rows: TableRow[]) => void\n /** Select specific rows */\n selectRows: (ids: (string | number)[]) => void\n /** Deselect specific rows */\n deselectRows: (ids: (string | number)[]) => void\n /** Clear all selections */\n clearSelection: () => void\n}\n\n/**\n * Hook for managing table row selection with persistence across pagination.\n * Selection state is stored in the widget store for the given widget ID.\n *\n * @param widgetId - The widget ID to persist selection state under.\n * @param options - Optional configuration including an `onSelectionChange` callback.\n * @returns Selection state and control functions (toggle, select, deselect, clear).\n *\n * @example\n * ```tsx\n * const { selectedIds, isAllSelected, handleSelectRow, clearSelection } = useSelection(widgetId)\n * ```\n */\nexport function useSelection(\n widgetId: string,\n options?: UseSelectionOptions,\n): UseSelectionResult {\n const { onSelectionChange } = options ?? {}\n\n // Get store state\n const selected = useWidgetSelector(\n widgetId,\n (w) => (w as TableWidgetState | undefined)?.selected,\n )\n\n // Use store values with fallback to empty array\n const selectedIds = useMemo(() => selected ?? [], [selected])\n\n // Check if a row is selected\n const isSelected = useCallback(\n (id: string | number) => selectedIds.includes(id),\n [selectedIds],\n )\n\n // Check if all provided rows are selected\n const isAllSelected = useCallback(\n (rows: TableRow[]) => {\n if (rows.length === 0) return false\n return rows.every((row) => selectedIds.includes(row.id))\n },\n [selectedIds],\n )\n\n // Check if some but not all rows are selected\n const isIndeterminate = useCallback(\n (rows: TableRow[]) => {\n if (rows.length === 0) return false\n const selectedCount = rows.filter((row) =>\n selectedIds.includes(row.id),\n ).length\n return selectedCount > 0 && selectedCount < rows.length\n },\n [selectedIds],\n )\n\n // Toggle selection of a single row\n const toggleRow = useCallback(\n (id: string | number) => {\n const widget = widgetStoreActions.getWidget<TableWidgetState>(widgetId)\n const currentSelected = widget?.selected ?? []\n\n const newSelected = currentSelected.includes(id)\n ? currentSelected.filter((s) => s !== id)\n : [...currentSelected, id]\n\n widgetStoreActions.setWidget<TableWidgetState>(widgetId, {\n selected: newSelected,\n })\n\n if (onSelectionChange) {\n onSelectionChange(newSelected)\n }\n },\n [widgetId, onSelectionChange],\n )\n\n // Toggle selection of all provided rows\n const toggleAll = useCallback(\n (rows: TableRow[]) => {\n const widget = widgetStoreActions.getWidget<TableWidgetState>(widgetId)\n const currentSelected = widget?.selected ?? []\n\n const rowIds = rows.map((row) => row.id)\n const allSelected = rowIds.every((id) => currentSelected.includes(id))\n\n const newSelected = allSelected\n ? currentSelected.filter((id) => !rowIds.includes(id))\n : [...new Set([...currentSelected, ...rowIds])]\n\n widgetStoreActions.setWidget<TableWidgetState>(widgetId, {\n selected: newSelected,\n })\n\n if (onSelectionChange) {\n onSelectionChange(newSelected)\n }\n },\n [widgetId, onSelectionChange],\n )\n\n // Select specific rows\n const selectRows = useCallback(\n (ids: (string | number)[]) => {\n const widget = widgetStoreActions.getWidget<TableWidgetState>(widgetId)\n const currentSelected = widget?.selected ?? []\n\n const newSelected = [...new Set([...currentSelected, ...ids])]\n\n widgetStoreActions.setWidget<TableWidgetState>(widgetId, {\n selected: newSelected,\n })\n\n if (onSelectionChange) {\n onSelectionChange(newSelected)\n }\n },\n [widgetId, onSelectionChange],\n )\n\n // Deselect specific rows\n const deselectRows = useCallback(\n (ids: (string | number)[]) => {\n const widget = widgetStoreActions.getWidget<TableWidgetState>(widgetId)\n const currentSelected = widget?.selected ?? []\n\n const newSelected = currentSelected.filter((id) => !ids.includes(id))\n\n widgetStoreActions.setWidget<TableWidgetState>(widgetId, {\n selected: newSelected,\n })\n\n if (onSelectionChange) {\n onSelectionChange(newSelected)\n }\n },\n [widgetId, onSelectionChange],\n )\n\n // Clear all selections\n const clearSelection = useCallback(() => {\n const newSelected: (string | number)[] = []\n\n widgetStoreActions.setWidget<TableWidgetState>(widgetId, {\n selected: newSelected,\n })\n\n if (onSelectionChange) {\n onSelectionChange(newSelected)\n }\n }, [widgetId, onSelectionChange])\n\n return {\n selectedIds,\n isSelected,\n isAllSelected,\n isIndeterminate,\n toggleRow,\n toggleAll,\n selectRows,\n deselectRows,\n clearSelection,\n }\n}\n","import {\n Box,\n Skeleton,\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableRow,\n} from '@mui/material'\n\nexport interface TableSkeletonProps {\n /** Number of columns to display */\n columns?: number\n /** Number of rows to display */\n rows?: number\n}\n\n/**\n * Table skeleton loader component\n */\nexport function TableSkeleton({ columns = 4, rows = 5 }: TableSkeletonProps) {\n return (\n <Box aria-label='Table skeleton'>\n <Table>\n <TableHead>\n <TableRow>\n {Array.from({ length: columns }).map((_, index) => (\n <TableCell key={index}>\n <Skeleton width='80%' height={24} />\n </TableCell>\n ))}\n </TableRow>\n </TableHead>\n <TableBody>\n {Array.from({ length: rows }).map((_, rowIndex) => (\n <TableRow key={rowIndex}>\n {Array.from({ length: columns }).map((_, colIndex) => (\n <TableCell key={colIndex}>\n <Skeleton width='70%' height={20} />\n </TableCell>\n ))}\n </TableRow>\n ))}\n </TableBody>\n </Table>\n </Box>\n )\n}\n","import type { TableRow, TableWidgetData } from './types'\n\n/**\n * Sanitizes a table row by ensuring all values are serializable.\n * Converts ReactNode and function values to undefined.\n *\n * @param row - The table row to sanitize\n * @returns A sanitized table row\n */\nexport function sanitizeTableRow(row: TableRow): TableRow {\n const sanitized: TableRow = { id: row.id }\n\n for (const [key, value] of Object.entries(row)) {\n if (key === 'id') continue\n\n // Keep primitive values\n if (\n typeof value === 'string' ||\n typeof value === 'number' ||\n typeof value === 'boolean' ||\n value === null\n ) {\n sanitized[key] = value\n }\n // Serialize arrays and plain objects\n else if (Array.isArray(value) || typeof value === 'object') {\n try {\n // Attempt to serialize - if it fails, the value contains non-serializable content\n JSON.stringify(value)\n sanitized[key] = value\n } catch {\n sanitized[key] = undefined\n }\n }\n // Skip functions and other non-serializable values\n else {\n sanitized[key] = undefined\n }\n }\n\n return sanitized\n}\n\n/**\n * Sanitizes table widget data by ensuring all rows are serializable.\n *\n * @param data - The table data to sanitize\n * @returns Sanitized table data\n */\nexport function sanitizeTableData(\n data: TableWidgetData | undefined,\n): TableWidgetData | undefined {\n return data?.map(sanitizeTableRow)\n}\n","import type { SxProps, Theme } from '@mui/material'\n\nexport const styles = {\n container: {\n width: '100%',\n overflow: 'auto',\n },\n table: {\n minWidth: 650,\n },\n headerCell: {\n fontWeight: 600,\n backgroundColor: (theme: Theme) => theme.palette.background.paper,\n },\n row: {\n '&:last-child td, &:last-child th': {\n border: 0,\n },\n },\n rowHover: {\n '&:hover': {\n backgroundColor: (theme: Theme) => theme.palette.action.hover,\n },\n },\n rowSelected: {\n backgroundColor: (theme: Theme) => theme.palette.action.selected,\n '&:hover': {\n backgroundColor: (theme: Theme) => theme.palette.action.selected,\n },\n },\n pagination: {\n borderTop: (theme: Theme) => `1px solid ${theme.palette.divider}`,\n },\n} satisfies Record<string, SxProps<Theme>>\n"],"names":["CellHeader","t0","$","_c","column","sortState","onSort","isSelectAll","isAllSelected","isIndeterminate","onSelectAll","t1","Symbol","for","t2","jsx","TableCell","Checkbox","isSorted","columnId","id","sortDirection","direction","undefined","sortable","width","t3","t4","label","TableSortLabel","t5","align","getCellValue","cellValue","Array","isArray","map","item","String","join","JSON","stringify","compareValues","a","b","comparison","localeCompare","strA","strB","sortData","data","sort","paginateData","page","rowsPerPage","start","end","slice","DEFAULT_P","children","Typography","CELL_MARKDOWN_COMPONENTS","h1","h2","h3","p","href","isExternal","startsWith","Link","img","ul","ol","li","Cell","row","value","formatter","MuiTableCell","ReactMarkdown","Row","columns","isSelected","selectable","onClick","onSelect","onMouseEnter","onMouseLeave","handleClick","event","stopPropagation","handleCheckboxClick","handleMouseEnter","t6","handleMouseLeave","t7","t8","t9","cursor","t10","t11","t12","MuiTableRow","PaginationActions","count","onPageChange","lastPage","Math","max","ceil","handleFirstPage","event_0","handlePreviousPage","event_1","handleNextPage","event_2","handleLastPage","flexShrink","ml","FirstPageIcon","IconButton","KeyboardArrowLeft","t13","KeyboardArrowRight","t14","t15","t16","LastPageIcon","t17","t18","jsxs","Box","Pagination","total","rowsPerPageOptions","onRowsPerPageChange","_event","newPage","handlePageChange","parseInt","target","handleRowsPerPageChange","MuiTablePagination","Table","props","ref","stickyHeader","MuiTable","Head","TableHead","Body","TableBody","Container","TableContainer","Paper","useWidgetRef","MuiTableContainer","DEFAULT_MODE","DEFAULT_PAGE","DEFAULT_ROWS_PER_PAGE","DEFAULT_ROWS_PER_PAGE_OPTIONS","DEFAULT_COLUMN_ID","DEFAULT_DIRECTION","tableDownloadConfig","refUI","downloadToPNG","modifier","downloadToCSV","length","firstRow","headers","Object","keys","filter","key","rows","header","tableConfig","mode","usePagination","widgetId","w","widget","paginationEnabled","pagination","useWidgetSelector","maxPage","widget_0","widgetStoreActions","getWidget","currentTotal","currentRowsPerPage","currentMaxPage","boundedPage","min","setWidget","setPage","newRowsPerPage","widget_1","setRowsPerPage","goToFirstPage","goToLastPage","goToNextPage","goToPreviousPage","bb0","paginatedData","useSort","sortEnabled","_temp","toggleColumnId","currentColumnId","currentDirection","newDirection","toggleSort","newColumnId","newDirection_0","setSort","clearSort","sortedData","useSelection","options","onSelectionChange","selected","selectedIds","includes","every","rows_0","selectedCount","row_0","id_0","currentSelected","newSelected","s","toggleRow","rows_1","currentSelected_0","rowIds","_temp2","newSelected_0","id_1","id_2","Set","toggleAll","ids","currentSelected_1","newSelected_1","selectRows","ids_0","newSelected_2","id_3","deselectRows","newSelected_3","clearSelection","row_1","TableSkeleton","TableRow","from","__0","rowIndex","__1","colIndex","Skeleton","_","index","sanitizeTableRow","sanitized","entries","sanitizeTableData","styles","container","overflow","table","minWidth","headerCell","fontWeight","backgroundColor","theme","palette","background","paper","border","rowHover","action","hover","rowSelected","borderTop","divider"],"mappings":"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"}
@@ -1,48 +1,31 @@
1
- import { jsxs as p, jsx as o } from "react/jsx-runtime";
2
- import { c as b } from "react/compiler-runtime";
1
+ import { jsxs as m, jsx as s } from "react/jsx-runtime";
2
+ import { c as y } from "react/compiler-runtime";
3
3
  import "react";
4
4
  import "echarts";
5
- import "../widget-store-CzDt8oSK.js";
5
+ import "../widget-store-Bw5zRUGg.js";
6
6
  import "zustand/shallow";
7
- import { g as k } from "../options-D9wflre6.js";
8
- import { m as w } from "../utils-idmvq0Oa.js";
9
- import { f as v, c as L, g as I, b as C, d as S, e as _ } from "../styles-CAroD5Rc.js";
10
- import { Box as s, Skeleton as n } from "@mui/material";
11
- import "@mui/icons-material";
12
- import "react-markdown";
13
- import { d as g, a as d } from "../exports-Cr43OCul.js";
14
- import "../lasso-tool-BYbxrJ-7.js";
15
- import "../cjs-D4KH3azB.js";
16
- import "@carto/ps-utils";
17
- import "@dnd-kit/core";
18
- import "@dnd-kit/sortable";
19
- import "@dnd-kit/utilities";
20
- function U({
21
- refUI: e
22
- }) {
23
- return [{
24
- ...g,
25
- modifier: () => g.modifier(e)
26
- }, {
27
- ...d,
28
- modifier: async (t) => {
29
- const i = v(t);
30
- return d.modifier(i);
31
- }
32
- }];
33
- }
34
- function X(e) {
7
+ import { g as b } from "../options-CthfUJDz.js";
8
+ import { m as k } from "../utils-BOhInag6.js";
9
+ import { c as v, f as w } from "../download-config-C7hf33ip.js";
10
+ import { h as L, f as C, b as I, a as S, c as _, d as A } from "../option-builders-F-c9ELi1.js";
11
+ import { Box as l, Skeleton as r } from "@mui/material";
12
+ import { b as j } from "../styles-cohnxh9F.js";
13
+ const H = v(w);
14
+ function J(e) {
35
15
  return {
36
16
  type: "timeseries",
37
- option: w(k(e), A(e))
17
+ option: k(b(e), T(e)),
18
+ formatter: e.formatter,
19
+ labelFormatter: e.labelFormatter
38
20
  };
39
21
  }
40
- function A({
22
+ function T({
41
23
  data: e = [],
42
24
  theme: t,
43
- formatter: i
25
+ formatter: i,
26
+ labelFormatter: o
44
27
  }) {
45
- const c = (e?.length ?? 0) > 1, f = {
28
+ const p = (e?.length ?? 0) > 1, h = {
46
29
  type: "value",
47
30
  axisLabel: {
48
31
  margin: 0,
@@ -66,16 +49,19 @@ function A({
66
49
  }
67
50
  };
68
51
  return {
69
- legend: S(c),
52
+ legend: A({
53
+ hasLegend: p,
54
+ labelFormatter: o
55
+ }),
70
56
  grid: {
71
- ...C(c, t),
57
+ ..._(p, t),
72
58
  outerBounds: {
73
59
  left: parseInt(t.spacing(3)),
74
60
  right: parseInt(t.spacing(1)),
75
61
  top: parseInt(t.spacing(2))
76
62
  }
77
63
  },
78
- xAxis: {
64
+ xAxis: S({
79
65
  type: "category",
80
66
  axisTick: {
81
67
  alignWithLabel: !0
@@ -86,35 +72,36 @@ function A({
86
72
  showMinLabel: !0,
87
73
  rotate: 45
88
74
  }
89
- },
90
- yAxis: I(f, i),
75
+ }, o),
76
+ yAxis: I(h, i),
91
77
  tooltip: {
92
- formatter: L((r) => {
93
- const l = r.value, h = r.dimensionNames?.[r.encode?.y?.at(0) ?? 1], m = l[h ?? ""], u = typeof m == "number" && i ? i(m) : m ?? "", x = typeof r.marker == "string" ? r.marker : "", y = r.seriesName ? `${r.seriesName}: ` : "";
78
+ formatter: C((a) => {
79
+ const c = a.value, f = a.dimensionNames?.[a.encode?.y?.at(0) ?? 1], g = c[f ?? ""], u = typeof g == "number" && i ? i(g) : g ?? "", d = typeof a.marker == "string" ? a.marker : "", x = a.seriesName ? `${a.seriesName}: ` : "";
94
80
  return {
95
- name: r.name ?? "",
96
- seriesName: y,
97
- marker: x,
81
+ name: o ? String(o(a.name ?? "")) : a.name ?? "",
82
+ seriesName: x,
83
+ marker: d,
98
84
  value: u
99
85
  };
100
86
  })
101
87
  },
102
88
  color: Object.values(t.palette.qualitative.bold),
103
- series: e.map((r, l) => ({
104
- datasetIndex: l,
89
+ series: e.map((a, c) => ({
90
+ datasetIndex: c,
105
91
  type: "line",
106
92
  smooth: !0,
107
93
  emphasis: {
108
94
  focus: "series"
109
- }
95
+ },
96
+ ...L(i)
110
97
  }))
111
98
  };
112
99
  }
113
- const a = {
100
+ const n = {
114
101
  skeleton: {
115
102
  graph: {
116
103
  container: {
117
- ..._.graph.container,
104
+ ...j.graph.container,
118
105
  position: "relative"
119
106
  },
120
107
  grid: {
@@ -148,41 +135,41 @@ const a = {
148
135
  }
149
136
  }
150
137
  };
151
- function Z() {
152
- const e = b(2);
138
+ function K() {
139
+ const e = y(2);
153
140
  let t;
154
- e[0] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (t = /* @__PURE__ */ p(s, { sx: a.skeleton.graph.grid, children: [
155
- /* @__PURE__ */ o(n, { sx: a.skeleton.histogram.item, variant: "rectangular", height: "20%" }),
156
- /* @__PURE__ */ o(n, { sx: a.skeleton.histogram.item, variant: "rectangular", height: "40%" }),
157
- /* @__PURE__ */ o(n, { sx: a.skeleton.histogram.item, variant: "rectangular", height: "60%" }),
158
- /* @__PURE__ */ o(n, { sx: a.skeleton.histogram.item, variant: "rectangular", height: "20%" }),
159
- /* @__PURE__ */ o(n, { sx: a.skeleton.histogram.item, variant: "rectangular", height: "80%" })
141
+ e[0] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (t = /* @__PURE__ */ m(l, { sx: n.skeleton.graph.grid, children: [
142
+ /* @__PURE__ */ s(r, { sx: n.skeleton.histogram.item, variant: "rectangular", height: "20%" }),
143
+ /* @__PURE__ */ s(r, { sx: n.skeleton.histogram.item, variant: "rectangular", height: "40%" }),
144
+ /* @__PURE__ */ s(r, { sx: n.skeleton.histogram.item, variant: "rectangular", height: "60%" }),
145
+ /* @__PURE__ */ s(r, { sx: n.skeleton.histogram.item, variant: "rectangular", height: "20%" }),
146
+ /* @__PURE__ */ s(r, { sx: n.skeleton.histogram.item, variant: "rectangular", height: "80%" })
160
147
  ] }), e[0] = t) : t = e[0];
161
148
  let i;
162
- return e[1] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (i = /* @__PURE__ */ p(s, { sx: a.skeleton.graph.container, children: [
149
+ return e[1] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (i = /* @__PURE__ */ m(l, { sx: n.skeleton.graph.container, children: [
163
150
  t,
164
- /* @__PURE__ */ o(s, { sx: a.skeleton.legend, children: Array(2).fill(0).map(T) })
151
+ /* @__PURE__ */ s(l, { sx: n.skeleton.legend, children: Array(2).fill(0).map(M) })
165
152
  ] }), e[1] = i) : i = e[1], i;
166
153
  }
167
- function T(e, t) {
168
- return /* @__PURE__ */ p(s, { sx: {
154
+ function M(e, t) {
155
+ return /* @__PURE__ */ m(l, { sx: {
169
156
  display: "flex",
170
157
  alignItems: "center",
171
- gap: j
158
+ gap: N
172
159
  }, children: [
173
- /* @__PURE__ */ o(n, { variant: "circular", width: 8, height: 8 }),
174
- /* @__PURE__ */ o(n, { width: 48, height: 8 })
160
+ /* @__PURE__ */ s(r, { variant: "circular", width: 8, height: 8 }),
161
+ /* @__PURE__ */ s(r, { width: 48, height: 8 })
175
162
  ] }, `skeleton-${t}`);
176
163
  }
177
- function j(e) {
164
+ function N(e) {
178
165
  const {
179
166
  spacing: t
180
167
  } = e;
181
168
  return t(1.5);
182
169
  }
183
170
  export {
184
- Z as TimeseriesSkeleton,
185
- X as timeseriesConfig,
186
- U as timeseriesDownloadConfig
171
+ K as TimeseriesSkeleton,
172
+ J as timeseriesConfig,
173
+ H as timeseriesDownloadConfig
187
174
  };
188
175
  //# sourceMappingURL=timeseries.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"timeseries.js","sources":["../../src/widgets/timeseries/config.ts","../../src/widgets/timeseries/style.ts","../../src/widgets/timeseries/skeleton.tsx"],"sourcesContent":["import {\n getCommonOptions,\n mergeEchartWidgetConfig,\n type EchartOptionsProps,\n} from '../echart'\nimport type {\n TimeseriesConfig,\n TimeseriesWidgetConfig,\n TimeseriesWidgetData,\n} from './types'\nimport {\n flattenObjectArrayToCSV,\n buildLegendConfig,\n buildGridConfig,\n createTooltipFormatter,\n applyYAxisFormatter,\n} from '../_shared/chart-config'\nimport { downloadToCSV, downloadToPNG, type DownloadItem } from '../actions'\nimport type { ConfigProps } from '../loader/types'\n\nexport function timeseriesDownloadConfig({\n refUI,\n}: ConfigProps): DownloadItem<TimeseriesWidgetData>[] {\n return [\n {\n ...downloadToPNG,\n modifier: () => downloadToPNG.modifier(refUI),\n },\n {\n ...downloadToCSV,\n modifier: async (data) => {\n const rows = flattenObjectArrayToCSV(data)\n return downloadToCSV.modifier(rows)\n },\n },\n ]\n}\n\nexport function timeseriesConfig(\n props: TimeseriesConfig,\n): TimeseriesWidgetConfig {\n return {\n type: 'timeseries',\n option: mergeEchartWidgetConfig(getCommonOptions(props), getOption(props)),\n }\n}\n\nfunction getOption({\n data = [],\n theme,\n formatter,\n}: TimeseriesConfig): EchartOptionsProps {\n const hasLegend = (data?.length ?? 0) > 1\n\n const yAxis = {\n type: 'value' as const,\n axisLabel: {\n margin: 0,\n padding: [\n 0,\n parseInt(theme.spacing(0.75)),\n parseInt(theme.spacing(1.25)),\n -parseInt(theme.spacing(1)),\n ],\n show: true,\n showMaxLabel: true,\n showMinLabel: false,\n verticalAlign: 'bottom' as const,\n },\n axisLine: {\n show: false,\n },\n axisTick: {\n show: false,\n },\n splitLine: {\n show: true,\n lineStyle: {\n color: theme.palette.black[4],\n },\n },\n }\n\n return {\n legend: buildLegendConfig(hasLegend),\n grid: {\n ...buildGridConfig(hasLegend, theme),\n outerBounds: {\n left: parseInt(theme.spacing(3)),\n right: parseInt(theme.spacing(1)),\n top: parseInt(theme.spacing(2)),\n },\n },\n xAxis: {\n type: 'category',\n axisTick: {\n alignWithLabel: true,\n },\n axisLabel: {\n show: true,\n showMaxLabel: true,\n showMinLabel: true,\n rotate: 45,\n },\n },\n yAxis: applyYAxisFormatter(yAxis, formatter),\n tooltip: {\n formatter: createTooltipFormatter((item) => {\n const value = item.value as Record<string, string | number>\n const index = item.dimensionNames?.[item.encode?.y?.at(0) ?? 1]\n const _value = value[index ?? '']\n\n const formattedValue =\n typeof _value === 'number' && formatter\n ? formatter(_value)\n : (_value ?? '')\n\n const marker = typeof item.marker === 'string' ? item.marker : ''\n const seriesName = item.seriesName ? `${item.seriesName}: ` : ''\n const name = item.name ?? ''\n\n return { name, seriesName, marker, value: formattedValue }\n }),\n },\n color: Object.values(theme.palette.qualitative.bold),\n series: data.map((_: unknown, index: number) => ({\n datasetIndex: index,\n type: 'line',\n smooth: true,\n emphasis: {\n focus: 'series',\n },\n })),\n } as EchartOptionsProps\n}\n","import type { SxProps, Theme } from '@mui/material'\nimport { baseSkeletonStyles } from '../_shared/skeleton'\n\nexport const styles = {\n skeleton: {\n graph: {\n container: {\n ...baseSkeletonStyles.graph.container,\n position: 'relative',\n },\n grid: {\n display: 'flex',\n justifyContent: 'space-between',\n flex: '1 1 auto',\n alignItems: 'flex-end',\n width: '100%',\n },\n },\n histogram: {\n item: {\n flex: 1,\n maxWidth: ({ spacing }) => spacing(8),\n\n '& + &': {\n marginLeft: '1px',\n },\n },\n },\n legend: {\n display: 'flex',\n alignItems: 'center',\n gap: ({ spacing }) => spacing(2),\n height: ({ spacing }) => spacing(5),\n },\n },\n} satisfies Record<string, SxProps<Theme>>\n","import { Box, Skeleton } from '@mui/material'\nimport { styles } from './style'\n\nexport function TimeseriesSkeleton() {\n return (\n <Box sx={styles.skeleton.graph.container}>\n {/* Timeseries bar */}\n <Box sx={styles.skeleton.graph.grid}>\n <Skeleton\n sx={styles.skeleton.histogram.item}\n variant='rectangular'\n height='20%'\n />\n <Skeleton\n sx={styles.skeleton.histogram.item}\n variant='rectangular'\n height='40%'\n />\n <Skeleton\n sx={styles.skeleton.histogram.item}\n variant='rectangular'\n height='60%'\n />\n <Skeleton\n sx={styles.skeleton.histogram.item}\n variant='rectangular'\n height='20%'\n />\n <Skeleton\n sx={styles.skeleton.histogram.item}\n variant='rectangular'\n height='80%'\n />\n </Box>\n {/* Legend */}\n <Box sx={styles.skeleton.legend}>\n {Array(2)\n .fill(0)\n .map((_, i) => (\n <Box\n key={`skeleton-${i}`}\n sx={{\n display: 'flex',\n alignItems: 'center',\n gap: ({ spacing }) => spacing(1.5),\n }}\n >\n <Skeleton variant='circular' width={8} height={8} />\n <Skeleton width={48} height={8} />\n </Box>\n ))}\n </Box>\n </Box>\n )\n}\n"],"names":["timeseriesDownloadConfig","refUI","downloadToPNG","modifier","downloadToCSV","data","rows","flattenObjectArrayToCSV","timeseriesConfig","props","type","option","mergeEchartWidgetConfig","getCommonOptions","getOption","theme","formatter","hasLegend","length","yAxis","axisLabel","margin","padding","parseInt","spacing","show","showMaxLabel","showMinLabel","verticalAlign","axisLine","axisTick","splitLine","lineStyle","color","palette","black","legend","buildLegendConfig","grid","buildGridConfig","outerBounds","left","right","top","xAxis","alignWithLabel","rotate","applyYAxisFormatter","tooltip","createTooltipFormatter","item","value","index","dimensionNames","encode","y","at","_value","formattedValue","marker","seriesName","name","Object","values","qualitative","bold","series","map","_","datasetIndex","smooth","emphasis","focus","styles","skeleton","graph","container","baseSkeletonStyles","position","display","justifyContent","flex","alignItems","width","histogram","maxWidth","marginLeft","gap","height","TimeseriesSkeleton","$","_c","t0","Symbol","for","Box","jsx","Skeleton","t1","Array","fill","_temp2","i","jsxs","_temp"],"mappings":"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"}
1
+ {"version":3,"file":"timeseries.js","sources":["../../src/widgets/timeseries/config.ts","../../src/widgets/timeseries/style.ts","../../src/widgets/timeseries/skeleton.tsx"],"sourcesContent":["import {\n getCommonOptions,\n mergeEchartWidgetConfig,\n type EchartOptionsProps,\n} from '../echart'\nimport type {\n TimeseriesConfig,\n TimeseriesWidgetConfig,\n TimeseriesWidgetData,\n} from './types'\nimport {\n flattenObjectArrayToCSV,\n buildLegendConfig,\n buildGridConfig,\n createTooltipFormatter,\n createChartDownloadConfig,\n applyYAxisFormatter,\n applyXAxisFormatter,\n buildSeriesLabelConfig,\n} from '../utils/chart-config'\n\nexport const timeseriesDownloadConfig =\n createChartDownloadConfig<TimeseriesWidgetData>(flattenObjectArrayToCSV)\n\n/**\n * Generates ECharts configuration for line and area chart widgets over time, with smooth curves, rotated axis labels, and CARTO qualitative color palette.\n *\n * @param props - Timeseries configuration including data and theme.\n * @returns Widget config with ECharts option object.\n */\nexport function timeseriesConfig(\n props: TimeseriesConfig,\n): TimeseriesWidgetConfig {\n return {\n type: 'timeseries',\n option: mergeEchartWidgetConfig(getCommonOptions(props), getOption(props)),\n formatter: props.formatter,\n labelFormatter: props.labelFormatter,\n }\n}\n\nfunction getOption({\n data = [],\n theme,\n formatter,\n labelFormatter,\n}: TimeseriesConfig): EchartOptionsProps {\n const hasLegend = (data?.length ?? 0) > 1\n\n const yAxis = {\n type: 'value' as const,\n axisLabel: {\n margin: 0,\n padding: [\n 0,\n parseInt(theme.spacing(0.75)),\n parseInt(theme.spacing(1.25)),\n -parseInt(theme.spacing(1)),\n ],\n show: true,\n showMaxLabel: true,\n showMinLabel: false,\n verticalAlign: 'bottom' as const,\n },\n axisLine: {\n show: false,\n },\n axisTick: {\n show: false,\n },\n splitLine: {\n show: true,\n lineStyle: {\n color: theme.palette.black[4],\n },\n },\n }\n\n return {\n legend: buildLegendConfig({ hasLegend, labelFormatter }),\n grid: {\n ...buildGridConfig(hasLegend, theme),\n outerBounds: {\n left: parseInt(theme.spacing(3)),\n right: parseInt(theme.spacing(1)),\n top: parseInt(theme.spacing(2)),\n },\n },\n xAxis: applyXAxisFormatter(\n {\n type: 'category',\n axisTick: {\n alignWithLabel: true,\n },\n axisLabel: {\n show: true,\n showMaxLabel: true,\n showMinLabel: true,\n rotate: 45,\n },\n },\n labelFormatter,\n ),\n yAxis: applyYAxisFormatter(yAxis, formatter),\n tooltip: {\n formatter: createTooltipFormatter((item) => {\n const value = item.value as Record<string, string | number>\n const index = item.dimensionNames?.[item.encode?.y?.at(0) ?? 1]\n const _value = value[index ?? '']\n\n const formattedValue =\n typeof _value === 'number' && formatter\n ? formatter(_value)\n : (_value ?? '')\n\n const marker = typeof item.marker === 'string' ? item.marker : ''\n const seriesName = item.seriesName ? `${item.seriesName}: ` : ''\n const name = labelFormatter\n ? String(labelFormatter(item.name ?? ''))\n : (item.name ?? '')\n\n return { name, seriesName, marker, value: formattedValue }\n }),\n },\n color: Object.values(theme.palette.qualitative.bold),\n series: data.map((_: unknown, index: number) => ({\n datasetIndex: index,\n type: 'line',\n smooth: true,\n emphasis: {\n focus: 'series',\n },\n ...buildSeriesLabelConfig(formatter),\n })),\n } as EchartOptionsProps\n}\n","import type { SxProps, Theme } from '@mui/material'\nimport { baseSkeletonStyles } from '../utils/skeleton'\n\nexport const styles = {\n skeleton: {\n graph: {\n container: {\n ...baseSkeletonStyles.graph.container,\n position: 'relative',\n },\n grid: {\n display: 'flex',\n justifyContent: 'space-between',\n flex: '1 1 auto',\n alignItems: 'flex-end',\n width: '100%',\n },\n },\n histogram: {\n item: {\n flex: 1,\n maxWidth: ({ spacing }) => spacing(8),\n\n '& + &': {\n marginLeft: '1px',\n },\n },\n },\n legend: {\n display: 'flex',\n alignItems: 'center',\n gap: ({ spacing }) => spacing(2),\n height: ({ spacing }) => spacing(5),\n },\n },\n} satisfies Record<string, SxProps<Theme>>\n","import { Box, Skeleton } from '@mui/material'\nimport { styles } from './style'\n\nexport function TimeseriesSkeleton() {\n return (\n <Box sx={styles.skeleton.graph.container}>\n {/* Timeseries bar */}\n <Box sx={styles.skeleton.graph.grid}>\n <Skeleton\n sx={styles.skeleton.histogram.item}\n variant='rectangular'\n height='20%'\n />\n <Skeleton\n sx={styles.skeleton.histogram.item}\n variant='rectangular'\n height='40%'\n />\n <Skeleton\n sx={styles.skeleton.histogram.item}\n variant='rectangular'\n height='60%'\n />\n <Skeleton\n sx={styles.skeleton.histogram.item}\n variant='rectangular'\n height='20%'\n />\n <Skeleton\n sx={styles.skeleton.histogram.item}\n variant='rectangular'\n height='80%'\n />\n </Box>\n {/* Legend */}\n <Box sx={styles.skeleton.legend}>\n {Array(2)\n .fill(0)\n .map((_, i) => (\n <Box\n key={`skeleton-${i}`}\n sx={{\n display: 'flex',\n alignItems: 'center',\n gap: ({ spacing }) => spacing(1.5),\n }}\n >\n <Skeleton variant='circular' width={8} height={8} />\n <Skeleton width={48} height={8} />\n </Box>\n ))}\n </Box>\n </Box>\n )\n}\n"],"names":["timeseriesDownloadConfig","createChartDownloadConfig","flattenObjectArrayToCSV","timeseriesConfig","props","type","option","mergeEchartWidgetConfig","getCommonOptions","getOption","formatter","labelFormatter","data","theme","hasLegend","length","yAxis","axisLabel","margin","padding","parseInt","spacing","show","showMaxLabel","showMinLabel","verticalAlign","axisLine","axisTick","splitLine","lineStyle","color","palette","black","legend","buildLegendConfig","grid","buildGridConfig","outerBounds","left","right","top","xAxis","applyXAxisFormatter","alignWithLabel","rotate","applyYAxisFormatter","tooltip","createTooltipFormatter","item","value","index","dimensionNames","encode","y","at","_value","formattedValue","marker","seriesName","name","String","Object","values","qualitative","bold","series","map","_","datasetIndex","smooth","emphasis","focus","buildSeriesLabelConfig","styles","skeleton","graph","container","baseSkeletonStyles","position","display","justifyContent","flex","alignItems","width","histogram","maxWidth","marginLeft","gap","height","TimeseriesSkeleton","$","_c","t0","Symbol","for","Box","jsx","Skeleton","t1","Array","fill","_temp2","i","jsxs","_temp"],"mappings":"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"}