@carto/ps-react-ui 4.19.0 → 4.20.1

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 (416) hide show
  1. package/dist/actions-DKX98LlI.js +1318 -0
  2. package/dist/actions-DKX98LlI.js.map +1 -0
  3. package/dist/actions-Dy9JVr7F.js +1004 -0
  4. package/dist/actions-Dy9JVr7F.js.map +1 -0
  5. package/dist/category-DHZscHaS.js +826 -0
  6. package/dist/category-DHZscHaS.js.map +1 -0
  7. package/dist/chart-config-BGt7wkK7.js +108 -0
  8. package/dist/chart-config-BGt7wkK7.js.map +1 -0
  9. package/dist/chat.js +1589 -1711
  10. package/dist/chat.js.map +1 -1
  11. package/dist/cjs-CBrZjPCj.js +75 -0
  12. package/dist/cjs-CBrZjPCj.js.map +1 -0
  13. package/dist/components-DDt4mOQn.js +2403 -0
  14. package/dist/components-DDt4mOQn.js.map +1 -0
  15. package/dist/components.js +5 -1841
  16. package/dist/copy-button-DaQqWVu0.js +25 -0
  17. package/dist/copy-button-DaQqWVu0.js.map +1 -0
  18. package/dist/csv-modifiers-D6HGC24b.js +26 -0
  19. package/dist/csv-modifiers-D6HGC24b.js.map +1 -0
  20. package/dist/download-BT6qBamM.js +232 -0
  21. package/dist/download-BT6qBamM.js.map +1 -0
  22. package/dist/echart-BkaV3V5G.js +133 -0
  23. package/dist/echart-BkaV3V5G.js.map +1 -0
  24. package/dist/echart-DSz2Tu0z.js +250 -0
  25. package/dist/echart-DSz2Tu0z.js.map +1 -0
  26. package/dist/formatter-wVO81tYk.js +6 -0
  27. package/dist/formatter-wVO81tYk.js.map +1 -0
  28. package/dist/formula-Bk9CBzm2.js +190 -0
  29. package/dist/formula-Bk9CBzm2.js.map +1 -0
  30. package/dist/formula-Dsru_p-g.js +285 -0
  31. package/dist/formula-Dsru_p-g.js.map +1 -0
  32. package/dist/hooks-zf5gKZYq.js +22 -0
  33. package/dist/hooks-zf5gKZYq.js.map +1 -0
  34. package/dist/legend/stores.js +2 -24
  35. package/dist/legend.js +2274 -2323
  36. package/dist/legend.js.map +1 -1
  37. package/dist/markdown-DnSJMPjQ.js +165 -0
  38. package/dist/markdown-DnSJMPjQ.js.map +1 -0
  39. package/dist/markdown-content-BzKoX3eu.js +8764 -0
  40. package/dist/markdown-content-BzKoX3eu.js.map +1 -0
  41. package/dist/range-BPWVrAsY.js +277 -0
  42. package/dist/range-BPWVrAsY.js.map +1 -0
  43. package/dist/rolldown-runtime-B0aSnxlc.js +20 -0
  44. package/dist/row-CvVGBuy_.js +35 -0
  45. package/dist/row-CvVGBuy_.js.map +1 -0
  46. package/dist/shared-resize-observer-BEiP2rQt.js +157 -0
  47. package/dist/shared-resize-observer-BEiP2rQt.js.map +1 -0
  48. package/dist/smart-tooltip-CwGHCqab.js +34 -0
  49. package/dist/smart-tooltip-CwGHCqab.js.map +1 -0
  50. package/dist/spread-Dy8pshpN.js +149 -0
  51. package/dist/spread-Dy8pshpN.js.map +1 -0
  52. package/dist/stores-B81-IU1G.js +374 -0
  53. package/dist/stores-B81-IU1G.js.map +1 -0
  54. package/dist/stores-BVFMfgyo.js +248 -0
  55. package/dist/stores-BVFMfgyo.js.map +1 -0
  56. package/dist/styles-Y-qGBELO.js +13 -0
  57. package/dist/styles-Y-qGBELO.js.map +1 -0
  58. package/dist/table-BfTG6rrs.js +439 -0
  59. package/dist/table-BfTG6rrs.js.map +1 -0
  60. package/dist/tooltip-DJUGNZxY.js +23 -0
  61. package/dist/tooltip-DJUGNZxY.js.map +1 -0
  62. package/dist/types/chat/bubbles/chat-agent-message-markdown.d.ts +1 -1
  63. package/dist/types/chat/bubbles/chat-error-message.d.ts +1 -1
  64. package/dist/types/chat/bubbles/chat-suggestion-button.d.ts +1 -1
  65. package/dist/types/chat/bubbles/chat-user-message.d.ts +1 -1
  66. package/dist/types/chat/containers/chat-footer.d.ts +1 -1
  67. package/dist/types/chat/containers/chat-header.d.ts +1 -1
  68. package/dist/types/chat/containers/chat-starter.d.ts +1 -1
  69. package/dist/types/chat/feedback/chat-loader.d.ts +1 -1
  70. package/dist/types/chat/feedback/chat-rating-action.d.ts +1 -1
  71. package/dist/types/chat/feedback/chat-thinking.d.ts +1 -1
  72. package/dist/types/chat/feedback/chat-tool-code-area.d.ts +1 -1
  73. package/dist/types/chat/feedback/chat-tool-full-view-dialog.d.ts +1 -1
  74. package/dist/types/chat/feedback/chat-tool-group.d.ts +1 -1
  75. package/dist/types/chat/feedback/chat-tool-trace.d.ts +2 -2
  76. package/dist/types/components/basemaps/group-wrapper.d.ts +1 -1
  77. package/dist/types/components/basemaps/group.d.ts +1 -1
  78. package/dist/types/components/basemaps/header.d.ts +1 -1
  79. package/dist/types/components/copy-button/copy-button.d.ts +1 -1
  80. package/dist/types/components/lasso-tool/chip.d.ts +1 -1
  81. package/dist/types/components/lasso-tool/icons.d.ts +7 -7
  82. package/dist/types/components/lasso-tool/lasso-tool.d.ts +4 -4
  83. package/dist/types/components/lasso-tool/message.d.ts +1 -1
  84. package/dist/types/components/list-data/list-data-skeleton.d.ts +1 -1
  85. package/dist/types/components/measurement-tools/icons.d.ts +3 -3
  86. package/dist/types/components/no-data-alert/no-data-alert.d.ts +1 -1
  87. package/dist/types/components/responsive-drawer/responsive-drawer.d.ts +1 -1
  88. package/dist/types/components/smart-tooltip/smart-tooltip.d.ts +1 -1
  89. package/dist/types/components/tooltip/tooltip.d.ts +1 -1
  90. package/dist/types/hooks/use-widget-ref.d.ts +2 -1
  91. package/dist/types/legend/components/legend-actions/legend-actions.d.ts +1 -1
  92. package/dist/types/legend/components/legend-category/legend-category-ui.d.ts +1 -1
  93. package/dist/types/legend/components/legend-config-select/legend-config-select.d.ts +1 -1
  94. package/dist/types/legend/components/legend-group/legend-group.d.ts +1 -1
  95. package/dist/types/legend/components/legend-group-menu/legend-group-menu-items.d.ts +4 -4
  96. package/dist/types/legend/components/legend-group-menu/legend-group-menu.d.ts +1 -1
  97. package/dist/types/legend/components/legend-icon/legend-icon-ui.d.ts +1 -1
  98. package/dist/types/legend/components/legend-item/legend-item-ui.d.ts +1 -1
  99. package/dist/types/legend/components/legend-item/legend-item.d.ts +1 -1
  100. package/dist/types/legend/components/legend-opacity/legend-opacity.d.ts +2 -2
  101. package/dist/types/legend/components/legend-overflow-menu/legend-overflow-menu.d.ts +1 -1
  102. package/dist/types/legend/components/legend-panel-menu/legend-panel-menu.d.ts +1 -1
  103. package/dist/types/legend/components/legend-proportion/legend-proportion-ui.d.ts +1 -1
  104. package/dist/types/legend/components/legend-ramp/legend-ramp-ui.d.ts +1 -1
  105. package/dist/types/legend/components/legend-row/legend-row.d.ts +1 -1
  106. package/dist/types/legend/components/legend-row-menu/legend-row-menu-items.d.ts +2 -2
  107. package/dist/types/legend/components/legend-row-menu/legend-row-menu.d.ts +1 -1
  108. package/dist/types/legend/components/legend-row-menu/legend-zoom-to.d.ts +1 -1
  109. package/dist/types/legend/components/legend-sortable/legend-sortable.d.ts +1 -1
  110. package/dist/types/legend/components/legend-swatch/legend-swatch.d.ts +1 -1
  111. package/dist/types/legend/components/legend-visibility-toggle/legend-visibility-toggle.d.ts +1 -1
  112. package/dist/types/legend/components/legend-visible-layers/legend-visible-layers.d.ts +1 -1
  113. package/dist/types/legend/index.d.ts +2 -2
  114. package/dist/types/legend/provider/legend-provider.d.ts +1 -1
  115. package/dist/types/widgets/actions/brush-toggle/brush-toggle.d.ts +1 -1
  116. package/dist/types/widgets/actions/change-column/change-column-icon.d.ts +1 -1
  117. package/dist/types/widgets/actions/change-column/change-column.d.ts +1 -1
  118. package/dist/types/widgets/actions/change-column/sortable-column-item.d.ts +1 -1
  119. package/dist/types/widgets/actions/download/download.d.ts +1 -1
  120. package/dist/types/widgets/actions/fullscreen/fullscreen.d.ts +1 -1
  121. package/dist/types/widgets/actions/lock-selection/lock-selection.d.ts +1 -1
  122. package/dist/types/widgets/actions/relative-data/relative-data.d.ts +1 -1
  123. package/dist/types/widgets/actions/searcher/searcher-toggle.d.ts +1 -1
  124. package/dist/types/widgets/actions/searcher/searcher.d.ts +1 -1
  125. package/dist/types/widgets/actions/stack-toggle/grouped-bar-chart-icon.d.ts +1 -1
  126. package/dist/types/widgets/actions/stack-toggle/stack-toggle.d.ts +1 -1
  127. package/dist/types/widgets/actions/zoom-toggle/zoom-toggle.d.ts +1 -1
  128. package/dist/types/widgets/bar/skeleton.d.ts +1 -1
  129. package/dist/types/widgets/category/category-ui.d.ts +1 -1
  130. package/dist/types/widgets/category/components/category-bar.d.ts +1 -1
  131. package/dist/types/widgets/category/components/category-legend.d.ts +1 -1
  132. package/dist/types/widgets/category/components/category-row-multi.d.ts +1 -1
  133. package/dist/types/widgets/category/components/category-row-other.d.ts +1 -1
  134. package/dist/types/widgets/category/components/category-row-single.d.ts +1 -1
  135. package/dist/types/widgets/category/skeleton.d.ts +1 -1
  136. package/dist/types/widgets/echart/echart-ui.d.ts +1 -1
  137. package/dist/types/widgets/echart/echart.d.ts +1 -1
  138. package/dist/types/widgets/error/error.d.ts +1 -1
  139. package/dist/types/widgets/formula/components/item.d.ts +1 -1
  140. package/dist/types/widgets/formula/components/prefix.d.ts +1 -1
  141. package/dist/types/widgets/formula/components/row.d.ts +1 -1
  142. package/dist/types/widgets/formula/components/series.d.ts +1 -1
  143. package/dist/types/widgets/formula/components/suffix.d.ts +1 -1
  144. package/dist/types/widgets/formula/components/value.d.ts +1 -1
  145. package/dist/types/widgets/formula/formula-ui.d.ts +1 -1
  146. package/dist/types/widgets/formula/skeleton.d.ts +1 -1
  147. package/dist/types/widgets/histogram/skeleton.d.ts +1 -1
  148. package/dist/types/widgets/markdown/markdown-ui.d.ts +1 -1
  149. package/dist/types/widgets/markdown/markdown.d.ts +1 -1
  150. package/dist/types/widgets/markdown/skeleton.d.ts +1 -1
  151. package/dist/types/widgets/no-data/no-data.d.ts +1 -1
  152. package/dist/types/widgets/note/note.d.ts +1 -1
  153. package/dist/types/widgets/pie/skeleton.d.ts +1 -1
  154. package/dist/types/widgets/range/components/range-item.d.ts +1 -1
  155. package/dist/types/widgets/range/range-ui.d.ts +1 -1
  156. package/dist/types/widgets/range/skeleton.d.ts +1 -1
  157. package/dist/types/widgets/scatterplot/skeleton.d.ts +1 -1
  158. package/dist/types/widgets/selection-summary/selection-summary.d.ts +1 -1
  159. package/dist/types/widgets/skeleton-loader/skeleton-loader.d.ts +1 -1
  160. package/dist/types/widgets/spread/components/max-value.d.ts +1 -1
  161. package/dist/types/widgets/spread/components/min-value.d.ts +1 -1
  162. package/dist/types/widgets/spread/components/separator.d.ts +1 -1
  163. package/dist/types/widgets/spread/skeleton.d.ts +1 -1
  164. package/dist/types/widgets/spread/spread-ui.d.ts +1 -1
  165. package/dist/types/widgets/subheader/subheader.d.ts +1 -1
  166. package/dist/types/widgets/table/components/cell-header.d.ts +1 -1
  167. package/dist/types/widgets/table/components/cell.d.ts +1 -1
  168. package/dist/types/widgets/table/components/pagination-actions.d.ts +1 -1
  169. package/dist/types/widgets/table/components/pagination.d.ts +1 -1
  170. package/dist/types/widgets/table/components/row.d.ts +1 -1
  171. package/dist/types/widgets/table/skeleton.d.ts +1 -1
  172. package/dist/types/widgets/table/table-ui.d.ts +2 -2
  173. package/dist/types/widgets/timeseries/skeleton.d.ts +1 -1
  174. package/dist/types/widgets/wrapper/components/actions.d.ts +1 -1
  175. package/dist/types/widgets/wrapper/components/options.d.ts +1 -1
  176. package/dist/types/widgets/wrapper/components/title.d.ts +1 -1
  177. package/dist/types/widgets/wrapper/wrapper-ui.d.ts +1 -1
  178. package/dist/types/widgets/wrapper/wrapper.d.ts +1 -1
  179. package/dist/types/widgets-v2/actions/brush-toggle/brush-toggle.d.ts +1 -1
  180. package/dist/types/widgets-v2/actions/change-column/change-column-icon.d.ts +1 -1
  181. package/dist/types/widgets-v2/actions/change-column/change-column.d.ts +1 -1
  182. package/dist/types/widgets-v2/actions/change-column/sortable-column-item.d.ts +1 -1
  183. package/dist/types/widgets-v2/actions/download/download.d.ts +1 -1
  184. package/dist/types/widgets-v2/actions/download/icons.d.ts +3 -3
  185. package/dist/types/widgets-v2/actions/fullscreen/fullscreen.d.ts +2 -2
  186. package/dist/types/widgets-v2/actions/lock-selection/lock-selection.d.ts +1 -1
  187. package/dist/types/widgets-v2/actions/relative-data/relative-data.d.ts +1 -1
  188. package/dist/types/widgets-v2/actions/searcher/searcher-toggle.d.ts +1 -1
  189. package/dist/types/widgets-v2/actions/searcher/searcher.d.ts +1 -1
  190. package/dist/types/widgets-v2/actions/show-all/show-all.d.ts +1 -1
  191. package/dist/types/widgets-v2/actions/stack-toggle/stack-toggle.d.ts +1 -1
  192. package/dist/types/widgets-v2/actions/zoom-toggle/zoom-toggle.d.ts +1 -1
  193. package/dist/types/widgets-v2/bar/skeleton.d.ts +1 -1
  194. package/dist/types/widgets-v2/category/category-ui.d.ts +1 -1
  195. package/dist/types/widgets-v2/category/category.d.ts +1 -1
  196. package/dist/types/widgets-v2/category/components/category-bar-stacked.d.ts +1 -1
  197. package/dist/types/widgets-v2/category/components/category-bar.d.ts +1 -1
  198. package/dist/types/widgets-v2/category/components/category-legend.d.ts +1 -1
  199. package/dist/types/widgets-v2/category/components/category-row-multi.d.ts +1 -1
  200. package/dist/types/widgets-v2/category/components/category-row-other.d.ts +1 -1
  201. package/dist/types/widgets-v2/category/components/category-row-single.d.ts +1 -1
  202. package/dist/types/widgets-v2/category/components/category-row-stacked.d.ts +1 -1
  203. package/dist/types/widgets-v2/category/skeleton.d.ts +1 -1
  204. package/dist/types/widgets-v2/echart/echart-ui.d.ts +1 -1
  205. package/dist/types/widgets-v2/echart/echart.d.ts +1 -1
  206. package/dist/types/widgets-v2/formula/delta.d.ts +1 -1
  207. package/dist/types/widgets-v2/formula/formula-ui.d.ts +1 -1
  208. package/dist/types/widgets-v2/formula/formula.d.ts +1 -1
  209. package/dist/types/widgets-v2/formula/note.d.ts +1 -1
  210. package/dist/types/widgets-v2/formula/prefix.d.ts +1 -1
  211. package/dist/types/widgets-v2/formula/series.d.ts +1 -1
  212. package/dist/types/widgets-v2/formula/skeleton.d.ts +1 -1
  213. package/dist/types/widgets-v2/formula/suffix.d.ts +1 -1
  214. package/dist/types/widgets-v2/formula/value.d.ts +1 -1
  215. package/dist/types/widgets-v2/histogram/skeleton.d.ts +1 -1
  216. package/dist/types/widgets-v2/index.d.ts +5 -5
  217. package/dist/types/widgets-v2/markdown/markdown-content.d.ts +1 -1
  218. package/dist/types/widgets-v2/markdown/markdown-ui.d.ts +1 -1
  219. package/dist/types/widgets-v2/markdown/markdown.d.ts +1 -1
  220. package/dist/types/widgets-v2/markdown/skeleton.d.ts +1 -1
  221. package/dist/types/widgets-v2/note/widget-note.d.ts +2 -2
  222. package/dist/types/widgets-v2/pie/skeleton.d.ts +1 -1
  223. package/dist/types/widgets-v2/provider/widget-provider.d.ts +1 -1
  224. package/dist/types/widgets-v2/range/range-ui.d.ts +1 -1
  225. package/dist/types/widgets-v2/range/range.d.ts +1 -1
  226. package/dist/types/widgets-v2/range/skeleton.d.ts +1 -1
  227. package/dist/types/widgets-v2/scatterplot/skeleton.d.ts +1 -1
  228. package/dist/types/widgets-v2/selection-summary/selection-summary.d.ts +1 -1
  229. package/dist/types/widgets-v2/spread/band.d.ts +37 -0
  230. package/dist/types/widgets-v2/spread/band.test.d.ts +1 -0
  231. package/dist/types/widgets-v2/spread/index.d.ts +1 -0
  232. package/dist/types/widgets-v2/spread/separator.d.ts +1 -1
  233. package/dist/types/widgets-v2/spread/skeleton.d.ts +1 -1
  234. package/dist/types/widgets-v2/spread/spread-ui.d.ts +1 -1
  235. package/dist/types/widgets-v2/spread/spread.d.ts +1 -1
  236. package/dist/types/widgets-v2/state/widget-state.d.ts +1 -1
  237. package/dist/types/widgets-v2/subheader/subheader.d.ts +1 -1
  238. package/dist/types/widgets-v2/table/skeleton.d.ts +1 -1
  239. package/dist/types/widgets-v2/table/table-ui.d.ts +1 -1
  240. package/dist/types/widgets-v2/table/table.d.ts +1 -1
  241. package/dist/types/widgets-v2/timeseries/skeleton.d.ts +1 -1
  242. package/dist/types/widgets-v2/toolbox/toolbox.d.ts +1 -1
  243. package/dist/types/widgets-v2/wrapper/widget-actions.d.ts +2 -2
  244. package/dist/types/widgets-v2/wrapper/widget-content.d.ts +2 -2
  245. package/dist/types/widgets-v2/wrapper/widget-wrapper.d.ts +1 -1
  246. package/dist/use-widget-selector-VSPhfhNm.js +12 -0
  247. package/dist/{use-widget-selector-DFl2hW0R.js.map → use-widget-selector-VSPhfhNm.js.map} +1 -1
  248. package/dist/utils-DtvTjjMq.js +58 -0
  249. package/dist/utils-DtvTjjMq.js.map +1 -0
  250. package/dist/widget-store-BFPKYm4R.js +187 -0
  251. package/dist/widget-store-BFPKYm4R.js.map +1 -0
  252. package/dist/widgets/actions.js +2 -1317
  253. package/dist/widgets/bar.js +183 -175
  254. package/dist/widgets/bar.js.map +1 -1
  255. package/dist/widgets/category.js +429 -434
  256. package/dist/widgets/category.js.map +1 -1
  257. package/dist/widgets/echart.js +3 -120
  258. package/dist/widgets/error.js +28 -38
  259. package/dist/widgets/error.js.map +1 -1
  260. package/dist/widgets/formula.js +3 -123
  261. package/dist/widgets/histogram.js +183 -202
  262. package/dist/widgets/histogram.js.map +1 -1
  263. package/dist/widgets/loader.js +63 -61
  264. package/dist/widgets/loader.js.map +1 -1
  265. package/dist/widgets/markdown.js +141 -123
  266. package/dist/widgets/markdown.js.map +1 -1
  267. package/dist/widgets/no-data.js +52 -58
  268. package/dist/widgets/no-data.js.map +1 -1
  269. package/dist/widgets/note.js +125 -122
  270. package/dist/widgets/note.js.map +1 -1
  271. package/dist/widgets/pie.js +245 -259
  272. package/dist/widgets/pie.js.map +1 -1
  273. package/dist/widgets/range.js +225 -204
  274. package/dist/widgets/range.js.map +1 -1
  275. package/dist/widgets/scatterplot.js +220 -215
  276. package/dist/widgets/scatterplot.js.map +1 -1
  277. package/dist/widgets/selection-summary.js +39 -38
  278. package/dist/widgets/selection-summary.js.map +1 -1
  279. package/dist/widgets/skeleton-loader.js +22 -23
  280. package/dist/widgets/skeleton-loader.js.map +1 -1
  281. package/dist/widgets/spread.js +150 -156
  282. package/dist/widgets/spread.js.map +1 -1
  283. package/dist/widgets/stores.js +3 -8
  284. package/dist/widgets/subheader.js +49 -50
  285. package/dist/widgets/subheader.js.map +1 -1
  286. package/dist/widgets/table.js +576 -644
  287. package/dist/widgets/table.js.map +1 -1
  288. package/dist/widgets/timeseries.js +175 -170
  289. package/dist/widgets/timeseries.js.map +1 -1
  290. package/dist/widgets/toolbar-actions.js +140 -145
  291. package/dist/widgets/toolbar-actions.js.map +1 -1
  292. package/dist/widgets/utils.js +17 -33
  293. package/dist/widgets/utils.js.map +1 -1
  294. package/dist/widgets/wrapper.js +265 -276
  295. package/dist/widgets/wrapper.js.map +1 -1
  296. package/dist/widgets-v2/actions.js +4 -51
  297. package/dist/widgets-v2/bar.js +253 -307
  298. package/dist/widgets-v2/bar.js.map +1 -1
  299. package/dist/widgets-v2/category.js +2 -98
  300. package/dist/widgets-v2/echart.js +2 -57
  301. package/dist/widgets-v2/formula.js +2 -68
  302. package/dist/widgets-v2/histogram.js +285 -350
  303. package/dist/widgets-v2/histogram.js.map +1 -1
  304. package/dist/widgets-v2/markdown.js +3 -69
  305. package/dist/widgets-v2/pie.js +363 -461
  306. package/dist/widgets-v2/pie.js.map +1 -1
  307. package/dist/widgets-v2/range.js +2 -52
  308. package/dist/widgets-v2/scatterplot.js +316 -391
  309. package/dist/widgets-v2/scatterplot.js.map +1 -1
  310. package/dist/widgets-v2/spread.js +2 -66
  311. package/dist/widgets-v2/stores.js +2 -42
  312. package/dist/widgets-v2/table.js +2 -78
  313. package/dist/widgets-v2/timeseries.js +285 -340
  314. package/dist/widgets-v2/timeseries.js.map +1 -1
  315. package/dist/widgets-v2/utils.js +2 -8
  316. package/dist/widgets-v2.js +955 -951
  317. package/dist/widgets-v2.js.map +1 -1
  318. package/dist/zoom-toggle-CA0ifG23.js +164 -0
  319. package/dist/zoom-toggle-CA0ifG23.js.map +1 -0
  320. package/package.json +4 -4
  321. package/src/hooks/use-widget-ref.ts +1 -0
  322. package/src/widgets-v2/index.ts +6 -1
  323. package/src/widgets-v2/spread/band.test.ts +46 -0
  324. package/src/widgets-v2/spread/band.ts +47 -0
  325. package/src/widgets-v2/spread/index.ts +1 -0
  326. package/dist/category-Ct2BzADB.js +0 -753
  327. package/dist/category-Ct2BzADB.js.map +0 -1
  328. package/dist/change-column-Fu1DCYQ3.js +0 -1186
  329. package/dist/change-column-Fu1DCYQ3.js.map +0 -1
  330. package/dist/cjs-D4KH3azB.js +0 -85
  331. package/dist/cjs-D4KH3azB.js.map +0 -1
  332. package/dist/components.js.map +0 -1
  333. package/dist/copy-button-DGL1tyli.js +0 -26
  334. package/dist/copy-button-DGL1tyli.js.map +0 -1
  335. package/dist/csv-item-hH_Gt7ur.js +0 -32
  336. package/dist/csv-item-hH_Gt7ur.js.map +0 -1
  337. package/dist/data-zoom-layout-D_FYdnap.js +0 -28
  338. package/dist/data-zoom-layout-D_FYdnap.js.map +0 -1
  339. package/dist/download-config-OKlLLSW_.js +0 -58
  340. package/dist/download-config-OKlLLSW_.js.map +0 -1
  341. package/dist/echart-B10dhEaM.js +0 -262
  342. package/dist/echart-B10dhEaM.js.map +0 -1
  343. package/dist/exports-Cr43OCul.js +0 -51
  344. package/dist/exports-Cr43OCul.js.map +0 -1
  345. package/dist/exports-Cx-f6m6U.js +0 -63
  346. package/dist/exports-Cx-f6m6U.js.map +0 -1
  347. package/dist/formatter-B9Bxn1k7.js +0 -6
  348. package/dist/formatter-B9Bxn1k7.js.map +0 -1
  349. package/dist/formula-DuC0NQLH.js +0 -79
  350. package/dist/formula-DuC0NQLH.js.map +0 -1
  351. package/dist/lasso-tool-YLFRgb-S.js +0 -582
  352. package/dist/lasso-tool-YLFRgb-S.js.map +0 -1
  353. package/dist/legend/stores.js.map +0 -1
  354. package/dist/legend-store-registry-p1tSwJXH.js +0 -472
  355. package/dist/legend-store-registry-p1tSwJXH.js.map +0 -1
  356. package/dist/markdown-DdqANCiN.js +0 -102
  357. package/dist/markdown-DdqANCiN.js.map +0 -1
  358. package/dist/markdown-content-Dk2DSgbf.js +0 -10287
  359. package/dist/markdown-content-Dk2DSgbf.js.map +0 -1
  360. package/dist/option-builders-DPeoyQaM.js +0 -130
  361. package/dist/option-builders-DPeoyQaM.js.map +0 -1
  362. package/dist/options-CthfUJDz.js +0 -46
  363. package/dist/options-CthfUJDz.js.map +0 -1
  364. package/dist/png-item-9dNbB37T.js +0 -57
  365. package/dist/png-item-9dNbB37T.js.map +0 -1
  366. package/dist/range-l4fNHLEg.js +0 -213
  367. package/dist/range-l4fNHLEg.js.map +0 -1
  368. package/dist/resolve-theme-color-BdojIw0K.js +0 -47
  369. package/dist/resolve-theme-color-BdojIw0K.js.map +0 -1
  370. package/dist/row-DZSP99LW.js +0 -34
  371. package/dist/row-DZSP99LW.js.map +0 -1
  372. package/dist/series-DLNHDWs0.js +0 -90
  373. package/dist/series-DLNHDWs0.js.map +0 -1
  374. package/dist/shared-resize-observer-98b1SK1e.js +0 -17
  375. package/dist/shared-resize-observer-98b1SK1e.js.map +0 -1
  376. package/dist/smart-tooltip-DFV6GD8R.js +0 -40
  377. package/dist/smart-tooltip-DFV6GD8R.js.map +0 -1
  378. package/dist/spread-4MYPOntd.js +0 -66
  379. package/dist/spread-4MYPOntd.js.map +0 -1
  380. package/dist/style-DVnT6HC1.js +0 -131
  381. package/dist/style-DVnT6HC1.js.map +0 -1
  382. package/dist/styles-cohnxh9F.js +0 -23
  383. package/dist/styles-cohnxh9F.js.map +0 -1
  384. package/dist/table-CTcLOycx.js +0 -383
  385. package/dist/table-CTcLOycx.js.map +0 -1
  386. package/dist/tooltip-BDnrRKrp.js +0 -25
  387. package/dist/tooltip-BDnrRKrp.js.map +0 -1
  388. package/dist/transforms-Cdx4fkU5.js +0 -106
  389. package/dist/transforms-Cdx4fkU5.js.map +0 -1
  390. package/dist/use-transform-DXPN3nY7.js +0 -110
  391. package/dist/use-transform-DXPN3nY7.js.map +0 -1
  392. package/dist/use-widget-ref-Ddr_SlJJ.js +0 -22
  393. package/dist/use-widget-ref-Ddr_SlJJ.js.map +0 -1
  394. package/dist/use-widget-selector-DFl2hW0R.js +0 -12
  395. package/dist/utils-BOhInag6.js +0 -170
  396. package/dist/utils-BOhInag6.js.map +0 -1
  397. package/dist/widget-context-DTGO0Yta.js +0 -13
  398. package/dist/widget-context-DTGO0Yta.js.map +0 -1
  399. package/dist/widget-store-Bw5zRUGg.js +0 -261
  400. package/dist/widget-store-Bw5zRUGg.js.map +0 -1
  401. package/dist/widget-store-registry-_W4Z4xp-.js +0 -178
  402. package/dist/widget-store-registry-_W4Z4xp-.js.map +0 -1
  403. package/dist/widgets/actions.js.map +0 -1
  404. package/dist/widgets/echart.js.map +0 -1
  405. package/dist/widgets/formula.js.map +0 -1
  406. package/dist/widgets/stores.js.map +0 -1
  407. package/dist/widgets-v2/actions.js.map +0 -1
  408. package/dist/widgets-v2/category.js.map +0 -1
  409. package/dist/widgets-v2/echart.js.map +0 -1
  410. package/dist/widgets-v2/formula.js.map +0 -1
  411. package/dist/widgets-v2/markdown.js.map +0 -1
  412. package/dist/widgets-v2/range.js.map +0 -1
  413. package/dist/widgets-v2/spread.js.map +0 -1
  414. package/dist/widgets-v2/stores.js.map +0 -1
  415. package/dist/widgets-v2/table.js.map +0 -1
  416. package/dist/widgets-v2/utils.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"loader.js","sources":["../../src/widgets/loader/loader.tsx","../../src/widgets/loader/utils.ts"],"sourcesContent":["import { useEffect, useRef } from 'react'\nimport type { WidgetLoaderProps } from './types'\nimport { useWidgetStore, widgetStoreActions } from '../stores/widget-store'\nimport type { WrapperState } from '../wrapper'\n\n/**\n * Foundation component for all widgets that manages state initialization, synchronization with the widget store, and data transformation pipeline execution.\n *\n * @remarks\n * The WidgetLoader is stateless -- it manages data flow but does not render any UI. Always wrap it with WidgetWrapper for consistent widget appearance.\n *\n * @example\n * ```tsx\n * <WidgetLoader\n * id=\"sales-chart\"\n * type=\"bar\"\n * data={data}\n * isLoading={false}\n * isFetching={false}\n * config={barConfig({ data })}\n * >\n * <WidgetWrapper id=\"sales-chart\" title=\"Sales\">\n * <Echart id=\"sales-chart\" />\n * </WidgetWrapper>\n * </WidgetLoader>\n * ```\n */\nexport function WidgetLoader<T extends object = Record<string, unknown>>(\n props: WidgetLoaderProps<T>,\n) {\n // Subscribe only to this widget's registeredTools via Zustand selector.\n // The selector returns a stable reference when other widgets change,\n // avoiding unnecessary re-evaluations of Effect 4.\n const registeredTools = useWidgetStore(\n (state) => state.widgets[props.id]?.registeredTools,\n )\n\n const dataRef = useRef(props.data)\n const configRef = useRef(props.config)\n const isMountedRef = useRef(false)\n\n useEffect(() => {\n dataRef.current = props.data\n configRef.current = props.config\n })\n\n // Effect 1: Metadata — type, loading, and error states in a single setWidget call.\n // Merged to reduce store updates from 2 to 1 per widget during initialization.\n useEffect(() => {\n widgetStoreActions.setWidget<WrapperState>(props.id, {\n type: props.type,\n isLoading: props.isLoading ?? false,\n isFetching: props.isFetching ?? false,\n error: props.error,\n })\n }, [props.id, props.type, props.isLoading, props.isFetching, props.error])\n\n // Effect 2: Config updates — run through config pipeline\n useEffect(() => {\n if (props.config) {\n void widgetStoreActions.executeConfigPipeline(props.id, props.config)\n }\n }, [props.id, props.config])\n\n // Effect 3: Execute tool pipeline when props.data changes\n useEffect(() => {\n void widgetStoreActions.executeToolPipeline(props.id, props.data)\n }, [props.id, props.data])\n\n // Effect 4: Re-execute pipelines when registered tools change.\n // Uses requestAnimationFrame to coalesce rapid successive registeredTools\n // changes (e.g., 6 action components each calling registerTool on mount)\n // into a single pipeline execution instead of 6 pairs.\n useEffect(() => {\n if (!isMountedRef.current) {\n isMountedRef.current = true\n return\n }\n\n const rafId = requestAnimationFrame(() => {\n const { executeToolPipeline, executeConfigPipeline } = widgetStoreActions\n void executeToolPipeline(props.id, dataRef.current)\n if (configRef.current) {\n void executeConfigPipeline(props.id, configRef.current)\n }\n })\n\n return () => cancelAnimationFrame(rafId)\n }, [registeredTools, props.id])\n\n return props.children\n}\n","import deepmerge from 'deepmerge'\n\n/**\n * Config can be either an object or a function that receives baseConfig and data\n * and returns a partial config to be merged with the base.\n */\nexport type ConfigOrFn<TConfig, TData = unknown> =\n | Partial<TConfig>\n | ((baseConfig: TConfig, data: TData) => Partial<TConfig>)\n\n/**\n * Resolves a widget config that may be either a partial object or a function receiving the computed base config and data. If it is a function, calls it with `baseConfig` and `data`; otherwise returns the value as-is.\n *\n * @param config - The config object or function to resolve.\n * @param baseConfig - The computed base configuration.\n * @param data - The widget data.\n * @returns Resolved partial config, or undefined.\n *\n * @example\n * ```tsx\n * const resolved = resolveConfig(\n * (base, data) => ({ maxItems: base.maxItems + 5 }),\n * baseConfig,\n * widgetData,\n * )\n * ```\n */\nexport function resolveConfig<TConfig, TData>(\n config: ConfigOrFn<TConfig, TData> | undefined,\n baseConfig: TConfig,\n data: TData,\n): Partial<TConfig> | undefined {\n if (typeof config === 'function') {\n return config(baseConfig, data)\n }\n return config\n}\n\n/**\n * Deep-merges two partial widget config objects using `deepmerge`, with arrays replaced rather than concatenated.\n *\n * @param options - A tuple of two partial configs to merge (base and override).\n * @returns The merged config object.\n *\n * @example\n * ```tsx\n * const finalConfig = mergeWidgetConfig(baseConfig, resolvedConfig)\n * ```\n */\nexport function mergeWidgetConfig<T>(\n ...options: [Partial<T> | undefined, Partial<T> | undefined]\n): T {\n return deepmerge(options[0] ?? {}, options[1] ?? {}, {\n arrayMerge(_, source) {\n return source as T[keyof T][]\n },\n })\n}\n"],"names":["WidgetLoader","props","$","_c","t0","id","state","widgets","registeredTools","useWidgetStore","dataRef","useRef","data","configRef","config","isMountedRef","t1","current","useEffect","t2","t3","error","isFetching","isLoading","type","widgetStoreActions","setWidget","t4","t5","executeConfigPipeline","t6","t7","executeToolPipeline","t8","rafId","requestAnimationFrame","cancelAnimationFrame","t9","children","resolveConfig","baseConfig","mergeWidgetConfig","options","deepmerge","arrayMerge","_","source"],"mappings":"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"}
1
+ {"version":3,"file":"loader.js","names":["useEffect","useRef","WidgetLoaderProps","useWidgetStore","widgetStoreActions","WrapperState","WidgetLoader","props","$","_c","t0","id","state","widgets","registeredTools","dataRef","data","configRef","config","isMountedRef","t1","current","t2","t3","error","isFetching","isLoading","type","setWidget","t4","t5","executeConfigPipeline","t6","t7","executeToolPipeline","t8","rafId","requestAnimationFrame","cancelAnimationFrame","t9","children","deepmerge","ConfigOrFn","Partial","TConfig","baseConfig","data","TData","resolveConfig","config","mergeWidgetConfig","options","T","arrayMerge","_","source"],"sources":["../../src/widgets/loader/loader.tsx","../../src/widgets/loader/utils.ts"],"sourcesContent":["import { useEffect, useRef } from 'react'\nimport type { WidgetLoaderProps } from './types'\nimport { useWidgetStore, widgetStoreActions } from '../stores/widget-store'\nimport type { WrapperState } from '../wrapper'\n\n/**\n * Foundation component for all widgets that manages state initialization, synchronization with the widget store, and data transformation pipeline execution.\n *\n * @remarks\n * The WidgetLoader is stateless -- it manages data flow but does not render any UI. Always wrap it with WidgetWrapper for consistent widget appearance.\n *\n * @example\n * ```tsx\n * <WidgetLoader\n * id=\"sales-chart\"\n * type=\"bar\"\n * data={data}\n * isLoading={false}\n * isFetching={false}\n * config={barConfig({ data })}\n * >\n * <WidgetWrapper id=\"sales-chart\" title=\"Sales\">\n * <Echart id=\"sales-chart\" />\n * </WidgetWrapper>\n * </WidgetLoader>\n * ```\n */\nexport function WidgetLoader<T extends object = Record<string, unknown>>(\n props: WidgetLoaderProps<T>,\n) {\n // Subscribe only to this widget's registeredTools via Zustand selector.\n // The selector returns a stable reference when other widgets change,\n // avoiding unnecessary re-evaluations of Effect 4.\n const registeredTools = useWidgetStore(\n (state) => state.widgets[props.id]?.registeredTools,\n )\n\n const dataRef = useRef(props.data)\n const configRef = useRef(props.config)\n const isMountedRef = useRef(false)\n\n useEffect(() => {\n dataRef.current = props.data\n configRef.current = props.config\n })\n\n // Effect 1: Metadata — type, loading, and error states in a single setWidget call.\n // Merged to reduce store updates from 2 to 1 per widget during initialization.\n useEffect(() => {\n widgetStoreActions.setWidget<WrapperState>(props.id, {\n type: props.type,\n isLoading: props.isLoading ?? false,\n isFetching: props.isFetching ?? false,\n error: props.error,\n })\n }, [props.id, props.type, props.isLoading, props.isFetching, props.error])\n\n // Effect 2: Config updates — run through config pipeline\n useEffect(() => {\n if (props.config) {\n void widgetStoreActions.executeConfigPipeline(props.id, props.config)\n }\n }, [props.id, props.config])\n\n // Effect 3: Execute tool pipeline when props.data changes\n useEffect(() => {\n void widgetStoreActions.executeToolPipeline(props.id, props.data)\n }, [props.id, props.data])\n\n // Effect 4: Re-execute pipelines when registered tools change.\n // Uses requestAnimationFrame to coalesce rapid successive registeredTools\n // changes (e.g., 6 action components each calling registerTool on mount)\n // into a single pipeline execution instead of 6 pairs.\n useEffect(() => {\n if (!isMountedRef.current) {\n isMountedRef.current = true\n return\n }\n\n const rafId = requestAnimationFrame(() => {\n const { executeToolPipeline, executeConfigPipeline } = widgetStoreActions\n void executeToolPipeline(props.id, dataRef.current)\n if (configRef.current) {\n void executeConfigPipeline(props.id, configRef.current)\n }\n })\n\n return () => cancelAnimationFrame(rafId)\n }, [registeredTools, props.id])\n\n return props.children\n}\n","import deepmerge from 'deepmerge'\n\n/**\n * Config can be either an object or a function that receives baseConfig and data\n * and returns a partial config to be merged with the base.\n */\nexport type ConfigOrFn<TConfig, TData = unknown> =\n | Partial<TConfig>\n | ((baseConfig: TConfig, data: TData) => Partial<TConfig>)\n\n/**\n * Resolves a widget config that may be either a partial object or a function receiving the computed base config and data. If it is a function, calls it with `baseConfig` and `data`; otherwise returns the value as-is.\n *\n * @param config - The config object or function to resolve.\n * @param baseConfig - The computed base configuration.\n * @param data - The widget data.\n * @returns Resolved partial config, or undefined.\n *\n * @example\n * ```tsx\n * const resolved = resolveConfig(\n * (base, data) => ({ maxItems: base.maxItems + 5 }),\n * baseConfig,\n * widgetData,\n * )\n * ```\n */\nexport function resolveConfig<TConfig, TData>(\n config: ConfigOrFn<TConfig, TData> | undefined,\n baseConfig: TConfig,\n data: TData,\n): Partial<TConfig> | undefined {\n if (typeof config === 'function') {\n return config(baseConfig, data)\n }\n return config\n}\n\n/**\n * Deep-merges two partial widget config objects using `deepmerge`, with arrays replaced rather than concatenated.\n *\n * @param options - A tuple of two partial configs to merge (base and override).\n * @returns The merged config object.\n *\n * @example\n * ```tsx\n * const finalConfig = mergeWidgetConfig(baseConfig, resolvedConfig)\n * ```\n */\nexport function mergeWidgetConfig<T>(\n ...options: [Partial<T> | undefined, Partial<T> | undefined]\n): T {\n return deepmerge(options[0] ?? {}, options[1] ?? {}, {\n arrayMerge(_, source) {\n return source as T[keyof T][]\n },\n })\n}\n"],"mappings":"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"}
@@ -1,130 +1,148 @@
1
- import { jsx as r, jsxs as h } from "react/jsx-runtime";
2
- import { c as s } from "react/compiler-runtime";
3
- import { u as f } from "../use-widget-selector-DFl2hW0R.js";
4
- import { ListItem as u, List as p, Link as g, Typography as m, Skeleton as a, Box as w } from "@mui/material";
5
- import k from "react-markdown";
6
- import "../widget-store-Bw5zRUGg.js";
7
- import "@mui/icons-material";
8
- import "react";
9
- import "html2canvas";
10
- import "../lasso-tool-YLFRgb-S.js";
11
- import "../cjs-D4KH3azB.js";
12
- import "@carto/ps-utils";
13
- import "@dnd-kit/core";
14
- import "@dnd-kit/sortable";
15
- import "@dnd-kit/utilities";
16
- import "react-dom";
17
- import "zustand/shallow";
18
- import { a as d } from "../exports-Cr43OCul.js";
19
- function V(t) {
20
- const o = s(2), {
21
- id: n
22
- } = t, e = f(n, y);
23
- if (!e)
24
- return null;
25
- let i;
26
- return o[0] !== e ? (i = /* @__PURE__ */ r(S, { children: e }), o[0] = e, o[1] = i) : i = o[1], i;
1
+ import { t as e } from "../use-widget-selector-VSPhfhNm.js";
2
+ import { _ as t } from "../actions-DKX98LlI.js";
3
+ import { c as n } from "react/compiler-runtime";
4
+ import { Box as r, Link as i, List as a, ListItem as o, Skeleton as s, Typography as c } from "@mui/material";
5
+ import { jsx as l, jsxs as u } from "react/jsx-runtime";
6
+ import d from "react-markdown";
7
+ //#region src/widgets/markdown/markdown.tsx
8
+ function f(t) {
9
+ let r = n(2), { id: i } = t, a = e(i, p);
10
+ if (!a) return null;
11
+ let o;
12
+ return r[0] === a ? o = r[1] : (o = /* @__PURE__ */ l(g, { children: a }), r[0] = a, r[1] = o), o;
27
13
  }
28
- function y(t) {
29
- return t?.data?.content;
14
+ function p(e) {
15
+ return e?.data?.content;
30
16
  }
31
- const c = {
32
- li: {
33
- display: "list-item",
34
- paddingTop: 0,
35
- paddingBottom: 0
36
- },
37
- ul: {
38
- listStyleType: "disc",
39
- paddingLeft: ({
40
- spacing: t
41
- }) => t(2)
42
- },
43
- ol: {
44
- listStyleType: "decimal",
45
- paddingLeft: ({
46
- spacing: t
47
- }) => t(2)
48
- }
49
- }, x = {
50
- h1: ({
51
- children: t
52
- }) => /* @__PURE__ */ r(m, { variant: "h4", gutterBottom: !0, color: "inherit", children: t }),
53
- h2: ({
54
- children: t
55
- }) => /* @__PURE__ */ r(m, { variant: "h5", gutterBottom: !0, color: "inherit", children: t }),
56
- h3: ({
57
- children: t
58
- }) => /* @__PURE__ */ r(m, { variant: "h6", gutterBottom: !0, color: "inherit", children: t }),
59
- p: ({
60
- children: t
61
- }) => /* @__PURE__ */ r(m, { paragraph: !0, color: "inherit", children: t }),
62
- a: ({
63
- children: t,
64
- href: o,
65
- target: n = "_blank",
66
- rel: e = "noopener noreferrer"
67
- }) => /* @__PURE__ */ r(g, { href: o, target: n, rel: e, children: t }),
68
- ul: ({
69
- children: t
70
- }) => /* @__PURE__ */ r(p, { sx: c.ul, children: t }),
71
- ol: ({
72
- children: t
73
- }) => /* @__PURE__ */ r(p, { component: "ol", sx: c.ol, children: t }),
74
- li: ({
75
- children: t
76
- }) => /* @__PURE__ */ r(u, { sx: c.li, children: t })
17
+ //#endregion
18
+ //#region src/widgets/markdown/style.ts
19
+ var m = {
20
+ container: {
21
+ display: "flex",
22
+ flexDirection: "column",
23
+ gap: ({ spacing: e }) => e(2)
24
+ },
25
+ markdown: {
26
+ overflow: "hidden",
27
+ typography: ({ typography: e }) => ({ ...e.body1 })
28
+ },
29
+ li: {
30
+ display: "list-item",
31
+ paddingTop: 0,
32
+ paddingBottom: 0
33
+ },
34
+ ul: {
35
+ listStyleType: "disc",
36
+ paddingLeft: ({ spacing: e }) => e(2)
37
+ },
38
+ ol: {
39
+ listStyleType: "decimal",
40
+ paddingLeft: ({ spacing: e }) => e(2)
41
+ }
42
+ }, h = {
43
+ h1: ({ children: e }) => /* @__PURE__ */ l(c, {
44
+ variant: "h4",
45
+ gutterBottom: !0,
46
+ color: "inherit",
47
+ children: e
48
+ }),
49
+ h2: ({ children: e }) => /* @__PURE__ */ l(c, {
50
+ variant: "h5",
51
+ gutterBottom: !0,
52
+ color: "inherit",
53
+ children: e
54
+ }),
55
+ h3: ({ children: e }) => /* @__PURE__ */ l(c, {
56
+ variant: "h6",
57
+ gutterBottom: !0,
58
+ color: "inherit",
59
+ children: e
60
+ }),
61
+ p: ({ children: e }) => /* @__PURE__ */ l(c, {
62
+ paragraph: !0,
63
+ color: "inherit",
64
+ children: e
65
+ }),
66
+ a: ({ children: e, href: t, target: n = "_blank", rel: r = "noopener noreferrer" }) => /* @__PURE__ */ l(i, {
67
+ href: t,
68
+ target: n,
69
+ rel: r,
70
+ children: e
71
+ }),
72
+ ul: ({ children: e }) => /* @__PURE__ */ l(a, {
73
+ sx: m.ul,
74
+ children: e
75
+ }),
76
+ ol: ({ children: e }) => /* @__PURE__ */ l(a, {
77
+ component: "ol",
78
+ sx: m.ol,
79
+ children: e
80
+ }),
81
+ li: ({ children: e }) => /* @__PURE__ */ l(o, {
82
+ sx: m.li,
83
+ children: e
84
+ })
77
85
  };
78
- function S(t) {
79
- const o = s(5), {
80
- children: n,
81
- overrides: e
82
- } = t;
83
- let i;
84
- o[0] !== e ? (i = {
85
- ...x,
86
- ...e
87
- }, o[0] = e, o[1] = i) : i = o[1];
88
- let l;
89
- return o[2] !== n || o[3] !== i ? (l = /* @__PURE__ */ r(k, { components: i, children: n }), o[2] = n, o[3] = i, o[4] = l) : l = o[4], l;
86
+ function g(e) {
87
+ let t = n(5), { children: r, overrides: i } = e, a;
88
+ t[0] === i ? a = t[1] : (a = {
89
+ ...h,
90
+ ...i
91
+ }, t[0] = i, t[1] = a);
92
+ let o;
93
+ return t[2] !== r || t[3] !== a ? (o = /* @__PURE__ */ l(d, {
94
+ components: a,
95
+ children: r
96
+ }), t[2] = r, t[3] = a, t[4] = o) : o = t[4], o;
90
97
  }
91
- function W() {
92
- const t = s(3);
93
- let o;
94
- t[0] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (o = /* @__PURE__ */ r(a, { width: "80%", height: 24, sx: {
95
- mb: 1
96
- } }), t[0] = o) : o = t[0];
97
- let n;
98
- t[1] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (n = /* @__PURE__ */ r(a, { width: "90%", height: 20, sx: {
99
- mb: 0.5
100
- } }), t[1] = n) : n = t[1];
101
- let e;
102
- return t[2] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (e = /* @__PURE__ */ h(w, { "aria-label": "Markdown skeleton", children: [
103
- o,
104
- n,
105
- /* @__PURE__ */ r(a, { width: "85%", height: 20, sx: {
106
- mb: 0.5
107
- } }),
108
- /* @__PURE__ */ r(a, { width: "75%", height: 20 })
109
- ] }), t[2] = e) : e = t[2], e;
98
+ //#endregion
99
+ //#region src/widgets/markdown/skeleton.tsx
100
+ function _() {
101
+ let e = n(3), t;
102
+ e[0] === Symbol.for("react.memo_cache_sentinel") ? (t = /* @__PURE__ */ l(s, {
103
+ width: "80%",
104
+ height: 24,
105
+ sx: { mb: 1 }
106
+ }), e[0] = t) : t = e[0];
107
+ let i;
108
+ e[1] === Symbol.for("react.memo_cache_sentinel") ? (i = /* @__PURE__ */ l(s, {
109
+ width: "90%",
110
+ height: 20,
111
+ sx: { mb: .5 }
112
+ }), e[1] = i) : i = e[1];
113
+ let a;
114
+ return e[2] === Symbol.for("react.memo_cache_sentinel") ? (a = /* @__PURE__ */ u(r, {
115
+ "aria-label": "Markdown skeleton",
116
+ children: [
117
+ t,
118
+ i,
119
+ /* @__PURE__ */ l(s, {
120
+ width: "85%",
121
+ height: 20,
122
+ sx: { mb: .5 }
123
+ }),
124
+ /* @__PURE__ */ l(s, {
125
+ width: "75%",
126
+ height: 20
127
+ })
128
+ ]
129
+ }), e[2] = a) : a = e[2], a;
110
130
  }
111
- function q() {
112
- return [{
113
- ...d,
114
- modifier: async (t) => {
115
- const o = t?.content ?? "";
116
- return d.modifier([["Content"], [o]]);
117
- }
118
- }];
131
+ //#endregion
132
+ //#region src/widgets/markdown/config.ts
133
+ function v() {
134
+ return [{
135
+ ...t,
136
+ modifier: async (e) => {
137
+ let n = e?.content ?? "";
138
+ return t.modifier([["Content"], [n]]);
139
+ }
140
+ }];
119
141
  }
120
- function z() {
121
- return {};
142
+ function y() {
143
+ return {};
122
144
  }
123
- export {
124
- V as Markdown,
125
- W as MarkdownSkeleton,
126
- S as MarkdownUI,
127
- z as markdownConfig,
128
- q as markdownDownloadConfig
129
- };
130
- //# sourceMappingURL=markdown.js.map
145
+ //#endregion
146
+ export { f as Markdown, _ as MarkdownSkeleton, g as MarkdownUI, y as markdownConfig, v as markdownDownloadConfig };
147
+
148
+ //# sourceMappingURL=markdown.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"markdown.js","sources":["../../src/widgets/markdown/markdown.tsx","../../src/widgets/markdown/style.ts","../../src/widgets/markdown/markdown-ui.tsx","../../src/widgets/markdown/skeleton.tsx","../../src/widgets/markdown/config.ts"],"sourcesContent":["import type { MarkdownUIProps } from './types'\nimport type { MarkdownWidgetData } from './types'\nimport { MarkdownUI } from '.'\nimport { useWidgetSelector } from '../stores/use-widget-selector'\n\n/**\n * Stateful markdown widget component that reads content from the widget store and renders it as formatted rich text.\n */\nexport function Markdown({ id }: MarkdownUIProps) {\n const content = useWidgetSelector(\n id,\n (w) => (w?.data as MarkdownWidgetData | undefined)?.content,\n )\n\n if (!content) {\n return null\n }\n\n return <MarkdownUI>{content}</MarkdownUI>\n}\n","import type { SxProps, Theme } from '@mui/material'\n\nexport const styles: Record<string, SxProps<Theme>> = {\n container: {\n display: 'flex',\n flexDirection: 'column',\n gap: ({ spacing }) => spacing(2),\n },\n markdown: {\n overflow: 'hidden',\n typography: ({ typography }) => ({\n ...typography.body1,\n }),\n },\n li: {\n display: 'list-item',\n paddingTop: 0,\n paddingBottom: 0,\n },\n ul: {\n listStyleType: 'disc',\n paddingLeft: ({ spacing }) => spacing(2),\n },\n ol: {\n listStyleType: 'decimal',\n paddingLeft: ({ spacing }) => spacing(2),\n },\n}\n","import { Link, List, ListItem, Typography } from '@mui/material'\nimport ReactMarkdown, { type Components } from 'react-markdown'\nimport { styles } from '../markdown/style'\nimport type { MarkdownComponentProps } from './types'\n\nconst COMPONENTS: Components = {\n h1: ({ children }) => (\n <Typography variant='h4' gutterBottom color='inherit'>\n {children}\n </Typography>\n ),\n h2: ({ children }) => (\n <Typography variant='h5' gutterBottom color='inherit'>\n {children}\n </Typography>\n ),\n h3: ({ children }) => (\n <Typography variant='h6' gutterBottom color='inherit'>\n {children}\n </Typography>\n ),\n p: ({ children }) => (\n <Typography paragraph color='inherit'>\n {children}\n </Typography>\n ),\n a: ({ children, href, target = '_blank', rel = 'noopener noreferrer' }) => (\n <Link href={href} target={target} rel={rel}>\n {children}\n </Link>\n ),\n ul: ({ children }) => <List sx={styles.ul}>{children}</List>,\n ol: ({ children }) => (\n <List component='ol' sx={styles.ol}>\n {children}\n </List>\n ),\n li: ({ children }) => <ListItem sx={styles.li}>{children}</ListItem>,\n}\n\n/**\n * Presentational component that renders a Markdown string as MUI-styled HTML using react-markdown.\n *\n * @remarks\n * Maps Markdown elements (headings, paragraphs, links, lists) to MUI Typography and Link components.\n * Custom component overrides can be passed via the `overrides` prop.\n */\nexport function MarkdownUI({ children, overrides }: MarkdownComponentProps) {\n return (\n <ReactMarkdown\n components={{\n ...COMPONENTS,\n ...overrides,\n }}\n >\n {children}\n </ReactMarkdown>\n )\n}\n","import { Box, Skeleton } from '@mui/material'\n\nexport function MarkdownSkeleton() {\n return (\n <Box aria-label='Markdown skeleton'>\n <Skeleton width='80%' height={24} sx={{ mb: 1 }} />\n <Skeleton width='90%' height={20} sx={{ mb: 0.5 }} />\n <Skeleton width='85%' height={20} sx={{ mb: 0.5 }} />\n <Skeleton width='75%' height={20} />\n </Box>\n )\n}\n","import { downloadToCSV, type DownloadItem } from '../actions'\nimport type { MarkdownWidgetConfig, MarkdownWidgetData } from './types'\n\n/**\n * Creates download configuration for markdown widgets, supporting CSV export of text content. Does not require `refUI` since it only exports text.\n *\n * @returns Array of download items for use with the Download action.\n */\nexport function markdownDownloadConfig(): DownloadItem<MarkdownWidgetData>[] {\n return [\n {\n ...downloadToCSV,\n modifier: async (data) => {\n const content = data?.content ?? ''\n return downloadToCSV.modifier([['Content'], [content]])\n },\n },\n ]\n}\n\n/**\n * Returns the default configuration for markdown content display widgets.\n *\n * @returns Default markdown widget config (empty object).\n */\nexport function markdownConfig(): MarkdownWidgetConfig {\n return {}\n}\n"],"names":["Markdown","t0","$","_c","id","content","useWidgetSelector","_temp","t1","MarkdownUI","w","data","styles","li","display","paddingTop","paddingBottom","ul","listStyleType","paddingLeft","spacing","ol","COMPONENTS","h1","children","Typography","h2","h3","p","jsx","a","href","target","rel","Link","List","ListItem","overrides","t2","ReactMarkdown","MarkdownSkeleton","Symbol","for","Skeleton","mb","jsxs","Box","markdownDownloadConfig","downloadToCSV","modifier","markdownConfig"],"mappings":";;;;;;;;;;;;;;;;;;AAQO,SAAAA,EAAAC,GAAA;AAAA,QAAAC,IAAAC,EAAA,CAAA,GAAkB;AAAA,IAAAC,IAAAA;AAAAA,EAAAA,IAAAH,GACvBI,IAAgBC,EACdF,GACAG,CACF;AAEA,MAAI,CAACF;AAAO,WACH;AACR,MAAAG;AAAA,SAAAN,SAAAG,KAEMG,sBAACC,kBAAoB,GAAaP,OAAAG,GAAAH,OAAAM,KAAAA,IAAAN,EAAA,CAAA,GAAlCM;AAAkC;AAVpC,SAAAD,EAAAG,GAAA;AAAA,SAGKA,GAACC,MAAkDN;AAAA;ACTxD,MAAMO,IAAyC;AAAA,EAYpDC,IAAI;AAAA,IACFC,SAAS;AAAA,IACTC,YAAY;AAAA,IACZC,eAAe;AAAA,EAAA;AAAA,EAEjBC,IAAI;AAAA,IACFC,eAAe;AAAA,IACfC,aAAaA,CAAC;AAAA,MAAEC,SAAAA;AAAAA,IAAAA,MAAcA,EAAQ,CAAC;AAAA,EAAA;AAAA,EAEzCC,IAAI;AAAA,IACFH,eAAe;AAAA,IACfC,aAAaA,CAAC;AAAA,MAAEC,SAAAA;AAAAA,IAAAA,MAAcA,EAAQ,CAAC;AAAA,EAAA;AAE3C,GCtBME,IAAyB;AAAA,EAC7BC,IAAIA,CAAC;AAAA,IAAEC,UAAAA;AAAAA,EAAAA,wBACJC,GAAA,EAAW,SAAQ,MAAK,cAAY,IAAC,OAAM,WACzCD,UAAAA,GACH;AAAA,EAEFE,IAAIA,CAAC;AAAA,IAAEF,UAAAA;AAAAA,EAAAA,wBACJC,GAAA,EAAW,SAAQ,MAAK,cAAY,IAAC,OAAM,WACzCD,UAAAA,GACH;AAAA,EAEFG,IAAIA,CAAC;AAAA,IAAEH,UAAAA;AAAAA,EAAAA,wBACJC,GAAA,EAAW,SAAQ,MAAK,cAAY,IAAC,OAAM,WACzCD,UAAAA,GACH;AAAA,EAEFI,GAAGA,CAAC;AAAA,IAAEJ,UAAAA;AAAAA,EAAAA,MACJ,gBAAAK,EAACJ,GAAA,EAAW,WAAS,IAAC,OAAM,WACzBD,UAAAA,GACH;AAAA,EAEFM,GAAGA,CAAC;AAAA,IAAEN,UAAAA;AAAAA,IAAUO,MAAAA;AAAAA,IAAMC,QAAAA,IAAS;AAAA,IAAUC,KAAAA,IAAM;AAAA,EAAA,MAC7C,gBAAAJ,EAACK,GAAA,EAAK,MAAAH,GAAY,QAAAC,GAAgB,KAAAC,GAC/BT,UAAAA,GACH;AAAA,EAEFP,IAAIA,CAAC;AAAA,IAAEO,UAAAA;AAAAA,EAAAA,MAAe,gBAAAK,EAACM,GAAA,EAAK,IAAIvB,EAAOK,IAAKO,UAAAA,GAAS;AAAA,EACrDH,IAAIA,CAAC;AAAA,IAAEG,UAAAA;AAAAA,EAAAA,wBACJW,GAAA,EAAK,WAAU,MAAK,IAAIvB,EAAOS,IAC7BG,UAAAA,GACH;AAAA,EAEFX,IAAIA,CAAC;AAAA,IAAEW,UAAAA;AAAAA,EAAAA,MAAe,gBAAAK,EAACO,GAAA,EAAS,IAAIxB,EAAOC,IAAKW,UAAAA,EAAAA,CAAS;AAC3D;AASO,SAAAf,EAAAR,GAAA;AAAA,QAAAC,IAAAC,EAAA,CAAA,GAAoB;AAAA,IAAAqB,UAAAA;AAAAA,IAAAa,WAAAA;AAAAA,EAAAA,IAAApC;AAA+C,MAAAO;AAAA,EAAAN,SAAAmC,KAGxD7B,IAAA;AAAA,IAAA,GACPc;AAAAA,IAAU,GACVe;AAAAA,EAAAA,GACJnC,OAAAmC,GAAAnC,OAAAM,KAAAA,IAAAN,EAAA,CAAA;AAAA,MAAAoC;AAAA,SAAApC,EAAA,CAAA,MAAAsB,KAAAtB,SAAAM,KAJH8B,IAAA,gBAAAT,EAACU,GAAA,EACa,YAAA/B,GAKXgB,UAAAA,GACH,GAAgBtB,OAAAsB,GAAAtB,OAAAM,GAAAN,OAAAoC,KAAAA,IAAApC,EAAA,CAAA,GAPhBoC;AAOgB;ACtDb,SAAAE,IAAA;AAAA,QAAAtC,IAAAC,EAAA,CAAA;AAAA,MAAAF;AAAA,EAAAC,EAAA,CAAA,MAAAuC,uBAAAC,IAAA,2BAAA,KAGDzC,sBAAC0C,GAAA,EAAe,OAAA,OAAc,QAAA,IAAQ,IAAA;AAAA,IAAAC,IAAM;AAAA,EAAA,GAAG,GAAI1C,OAAAD,KAAAA,IAAAC,EAAA,CAAA;AAAA,MAAAM;AAAA,EAAAN,EAAA,CAAA,MAAAuC,uBAAAC,IAAA,2BAAA,KACnDlC,sBAACmC,GAAA,EAAe,OAAA,OAAc,QAAA,IAAQ,IAAA;AAAA,IAAAC,IAAM;AAAA,EAAA,GAAK,GAAI1C,OAAAM,KAAAA,IAAAN,EAAA,CAAA;AAAA,MAAAoC;AAAA,SAAApC,EAAA,CAAA,MAAAuC,uBAAAC,IAAA,2BAAA,KAFvDJ,IAAA,gBAAAO,EAACC,GAAA,EAAe,cAAA,qBACd7C,UAAAA;AAAAA,IAAAA;AAAAA,IACAO;AAAAA,sBACCmC,GAAA,EAAe,OAAA,OAAc,QAAA,IAAQ,IAAA;AAAA,MAAAC,IAAM;AAAA,IAAA,GAAK;AAAA,IACjD,gBAAAf,EAACc,GAAA,EAAe,OAAA,OAAc,QAAA,GAAA,CAAE;AAAA,EAAA,GAClC,GAAMzC,OAAAoC,KAAAA,IAAApC,EAAA,CAAA,GALNoC;AAKM;ACDH,SAASS,IAA6D;AAC3E,SAAO,CACL;AAAA,IACE,GAAGC;AAAAA,IACHC,UAAU,OAAOtC,MAAS;AACxB,YAAMN,IAAUM,GAAMN,WAAW;AACjC,aAAO2C,EAAcC,SAAS,CAAC,CAAC,SAAS,GAAG,CAAC5C,CAAO,CAAC,CAAC;AAAA,IACxD;AAAA,EAAA,CACD;AAEL;AAOO,SAAS6C,IAAuC;AACrD,SAAO,CAAA;AACT;"}
1
+ {"version":3,"file":"markdown.js","names":["MarkdownUIProps","MarkdownWidgetData","MarkdownUI","useWidgetSelector","Markdown","t0","$","_c","id","content","_temp","t1","w","data","SxProps","Theme","styles","Record","container","display","flexDirection","gap","spacing","markdown","overflow","typography","body1","li","paddingTop","paddingBottom","ul","listStyleType","paddingLeft","ol","Link","List","ListItem","Typography","ReactMarkdown","Components","styles","MarkdownComponentProps","COMPONENTS","h1","children","h2","h3","p","a","href","target","rel","ul","ol","li","MarkdownUI","t0","$","_c","overrides","t1","t2","Box","Skeleton","MarkdownSkeleton","$","_c","t0","Symbol","for","mb","t1","t2","downloadToCSV","DownloadItem","MarkdownWidgetConfig","MarkdownWidgetData","markdownDownloadConfig","modifier","data","content","markdownConfig"],"sources":["../../src/widgets/markdown/markdown.tsx","../../src/widgets/markdown/style.ts","../../src/widgets/markdown/markdown-ui.tsx","../../src/widgets/markdown/skeleton.tsx","../../src/widgets/markdown/config.ts"],"sourcesContent":["import type { MarkdownUIProps } from './types'\nimport type { MarkdownWidgetData } from './types'\nimport { MarkdownUI } from '.'\nimport { useWidgetSelector } from '../stores/use-widget-selector'\n\n/**\n * Stateful markdown widget component that reads content from the widget store and renders it as formatted rich text.\n */\nexport function Markdown({ id }: MarkdownUIProps) {\n const content = useWidgetSelector(\n id,\n (w) => (w?.data as MarkdownWidgetData | undefined)?.content,\n )\n\n if (!content) {\n return null\n }\n\n return <MarkdownUI>{content}</MarkdownUI>\n}\n","import type { SxProps, Theme } from '@mui/material'\n\nexport const styles: Record<string, SxProps<Theme>> = {\n container: {\n display: 'flex',\n flexDirection: 'column',\n gap: ({ spacing }) => spacing(2),\n },\n markdown: {\n overflow: 'hidden',\n typography: ({ typography }) => ({\n ...typography.body1,\n }),\n },\n li: {\n display: 'list-item',\n paddingTop: 0,\n paddingBottom: 0,\n },\n ul: {\n listStyleType: 'disc',\n paddingLeft: ({ spacing }) => spacing(2),\n },\n ol: {\n listStyleType: 'decimal',\n paddingLeft: ({ spacing }) => spacing(2),\n },\n}\n","import { Link, List, ListItem, Typography } from '@mui/material'\nimport ReactMarkdown, { type Components } from 'react-markdown'\nimport { styles } from '../markdown/style'\nimport type { MarkdownComponentProps } from './types'\n\nconst COMPONENTS: Components = {\n h1: ({ children }) => (\n <Typography variant='h4' gutterBottom color='inherit'>\n {children}\n </Typography>\n ),\n h2: ({ children }) => (\n <Typography variant='h5' gutterBottom color='inherit'>\n {children}\n </Typography>\n ),\n h3: ({ children }) => (\n <Typography variant='h6' gutterBottom color='inherit'>\n {children}\n </Typography>\n ),\n p: ({ children }) => (\n <Typography paragraph color='inherit'>\n {children}\n </Typography>\n ),\n a: ({ children, href, target = '_blank', rel = 'noopener noreferrer' }) => (\n <Link href={href} target={target} rel={rel}>\n {children}\n </Link>\n ),\n ul: ({ children }) => <List sx={styles.ul}>{children}</List>,\n ol: ({ children }) => (\n <List component='ol' sx={styles.ol}>\n {children}\n </List>\n ),\n li: ({ children }) => <ListItem sx={styles.li}>{children}</ListItem>,\n}\n\n/**\n * Presentational component that renders a Markdown string as MUI-styled HTML using react-markdown.\n *\n * @remarks\n * Maps Markdown elements (headings, paragraphs, links, lists) to MUI Typography and Link components.\n * Custom component overrides can be passed via the `overrides` prop.\n */\nexport function MarkdownUI({ children, overrides }: MarkdownComponentProps) {\n return (\n <ReactMarkdown\n components={{\n ...COMPONENTS,\n ...overrides,\n }}\n >\n {children}\n </ReactMarkdown>\n )\n}\n","import { Box, Skeleton } from '@mui/material'\n\nexport function MarkdownSkeleton() {\n return (\n <Box aria-label='Markdown skeleton'>\n <Skeleton width='80%' height={24} sx={{ mb: 1 }} />\n <Skeleton width='90%' height={20} sx={{ mb: 0.5 }} />\n <Skeleton width='85%' height={20} sx={{ mb: 0.5 }} />\n <Skeleton width='75%' height={20} />\n </Box>\n )\n}\n","import { downloadToCSV, type DownloadItem } from '../actions'\nimport type { MarkdownWidgetConfig, MarkdownWidgetData } from './types'\n\n/**\n * Creates download configuration for markdown widgets, supporting CSV export of text content. Does not require `refUI` since it only exports text.\n *\n * @returns Array of download items for use with the Download action.\n */\nexport function markdownDownloadConfig(): DownloadItem<MarkdownWidgetData>[] {\n return [\n {\n ...downloadToCSV,\n modifier: async (data) => {\n const content = data?.content ?? ''\n return downloadToCSV.modifier([['Content'], [content]])\n },\n },\n ]\n}\n\n/**\n * Returns the default configuration for markdown content display widgets.\n *\n * @returns Default markdown widget config (empty object).\n */\nexport function markdownConfig(): MarkdownWidgetConfig {\n return {}\n}\n"],"mappings":"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"}
@@ -1,61 +1,55 @@
1
- import { jsx as u, jsxs as x } from "react/jsx-runtime";
2
- import { c as v } from "react/compiler-runtime";
3
- import { Typography as d, Box as b } from "@mui/material";
4
- import { u as j } from "../use-widget-selector-DFl2hW0R.js";
5
- const D = {
6
- root: {
7
- display: "flex",
8
- flexDirection: "column",
9
- gap: 1,
10
- // 8px
11
- paddingTop: 1,
12
- // 8px
13
- paddingBottom: 2,
14
- // 16px
15
- paddingX: 2,
16
- // 16px
17
- width: "100%",
18
- minHeight: "100%"
19
- }
20
- };
21
- function B(e) {
22
- const t = v(7), {
23
- id: p,
24
- children: a,
25
- title: l,
26
- description: c,
27
- isEmpty: f
28
- } = e, n = l === void 0 ? "No data available" : l, s = c === void 0 ? "There are no results for the combination of filters applied to your data. Try tweaking your filters, or zoom and pan the map to adjust filters" : c, y = f === void 0 ? T : f, {
29
- isLoading: g,
30
- isFetching: m,
31
- sourceData: h
32
- } = j(p, A);
33
- if (g || m)
34
- return a;
35
- if (y(h)) {
36
- let r;
37
- t[0] !== n ? (r = /* @__PURE__ */ u(d, { variant: "body2", color: "text.primary", children: n }), t[0] = n, t[1] = r) : r = t[1];
38
- let i;
39
- t[2] !== s ? (i = /* @__PURE__ */ u(d, { variant: "caption", color: "text.secondary", children: s }), t[2] = s, t[3] = i) : i = t[3];
40
- let o;
41
- return t[4] !== r || t[5] !== i ? (o = /* @__PURE__ */ x(b, { sx: D.root, children: [
42
- r,
43
- i
44
- ] }), t[4] = r, t[5] = i, t[6] = o) : o = t[6], o;
45
- }
46
- return a;
1
+ import { t as e } from "../use-widget-selector-VSPhfhNm.js";
2
+ import { c as t } from "react/compiler-runtime";
3
+ import { Box as n, Typography as r } from "@mui/material";
4
+ import { jsx as i, jsxs as a } from "react/jsx-runtime";
5
+ //#region src/widgets/no-data/style.ts
6
+ var o = { root: {
7
+ display: "flex",
8
+ flexDirection: "column",
9
+ gap: 1,
10
+ paddingTop: 1,
11
+ paddingBottom: 2,
12
+ paddingX: 2,
13
+ width: "100%",
14
+ minHeight: "100%"
15
+ } };
16
+ //#endregion
17
+ //#region src/widgets/no-data/no-data.tsx
18
+ function s(s) {
19
+ let u = t(7), { id: d, children: f, title: p, description: m, isEmpty: h } = s, g = p === void 0 ? "No data available" : p, _ = m === void 0 ? "There are no results for the combination of filters applied to your data. Try tweaking your filters, or zoom and pan the map to adjust filters" : m, v = h === void 0 ? l : h, { isLoading: y, isFetching: b, sourceData: x } = e(d, c);
20
+ if (y || b) return f;
21
+ if (v(x)) {
22
+ let e;
23
+ u[0] === g ? e = u[1] : (e = /* @__PURE__ */ i(r, {
24
+ variant: "body2",
25
+ color: "text.primary",
26
+ children: g
27
+ }), u[0] = g, u[1] = e);
28
+ let t;
29
+ u[2] === _ ? t = u[3] : (t = /* @__PURE__ */ i(r, {
30
+ variant: "caption",
31
+ color: "text.secondary",
32
+ children: _
33
+ }), u[2] = _, u[3] = t);
34
+ let s;
35
+ return u[4] !== e || u[5] !== t ? (s = /* @__PURE__ */ a(n, {
36
+ sx: o.root,
37
+ children: [e, t]
38
+ }), u[4] = e, u[5] = t, u[6] = s) : s = u[6], s;
39
+ }
40
+ return f;
47
41
  }
48
- function A(e) {
49
- return {
50
- isLoading: e?.isLoading,
51
- isFetching: e?.isFetching,
52
- sourceData: e?.sourceData
53
- };
42
+ function c(e) {
43
+ return {
44
+ isLoading: e?.isLoading,
45
+ isFetching: e?.isFetching,
46
+ sourceData: e?.sourceData
47
+ };
54
48
  }
55
- function T(e) {
56
- return e == null ? !0 : Array.isArray(e) ? !!(e.length === 0 || e.every((t) => Array.isArray(t) && t.length === 0)) : typeof e == "object" ? Object.keys(e).length === 0 : !1;
49
+ function l(e) {
50
+ return e == null ? !0 : Array.isArray(e) ? !!(e.length === 0 || e.every((e) => Array.isArray(e) && e.length === 0)) : typeof e == "object" && Object.keys(e).length === 0;
57
51
  }
58
- export {
59
- B as WidgetNoData
60
- };
61
- //# sourceMappingURL=no-data.js.map
52
+ //#endregion
53
+ export { s as WidgetNoData };
54
+
55
+ //# sourceMappingURL=no-data.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"no-data.js","sources":["../../src/widgets/no-data/style.ts","../../src/widgets/no-data/no-data.tsx"],"sourcesContent":["import type { SxProps, Theme } from '@mui/material'\n\n/**\n * Styles for NoData component matching Figma design specifications\n * Design reference: node 5781-11028\n */\nexport const styles: Record<string, SxProps<Theme>> = {\n root: {\n display: 'flex',\n flexDirection: 'column',\n gap: 1, // 8px\n paddingTop: 1, // 8px\n paddingBottom: 2, // 16px\n paddingX: 2, // 16px\n width: '100%',\n minHeight: '100%',\n },\n}\n","import { Box, Typography } from '@mui/material'\nimport { useWidgetSelector } from '../stores/use-widget-selector'\nimport type { WidgetNoDataProps } from './types'\nimport { styles } from './style'\n\n/**\n * NoData wrapper component that displays empty state UI when widget has no data\n *\n * Integrates with widget store to check loading/fetching state and source data availability.\n * Uses `sourceData` (pre-pipeline data) instead of `data` (post-pipeline) to distinguish\n * \"API returned nothing\" from \"pipeline tools filtered everything out\".\n *\n * @example Basic usage\n * ```tsx\n * <NoData id=\"my-widget\">\n * <WidgetContent id=\"my-widget\" />\n * </NoData>\n * ```\n *\n * @example With SkeletonLoader\n * ```tsx\n * <SkeletonLoader id=\"my-widget\" Skeleton={MySkeleton}>\n * <NoData id=\"my-widget\">\n * <WidgetContent id=\"my-widget\" />\n * </NoData>\n * </SkeletonLoader>\n * ```\n *\n * @example With custom messages\n * ```tsx\n * <NoData\n * id=\"my-widget\"\n * title=\"No results found\"\n * description=\"Try adjusting your filters\"\n * >\n * <WidgetContent id=\"my-widget\" />\n * </NoData>\n * ```\n */\nexport function WidgetNoData({\n id,\n children,\n title = 'No data available',\n description = 'There are no results for the combination of filters applied to your data. Try tweaking your filters, or zoom and pan the map to adjust filters',\n isEmpty = defaultIsEmpty,\n}: WidgetNoDataProps) {\n // Single consolidated subscription instead of 3 separate ones.\n // Reads sourceData (pre-pipeline) to check emptiness, not data (post-pipeline).\n const { isLoading, isFetching, sourceData } = useWidgetSelector(id, (w) => ({\n isLoading: w?.isLoading,\n isFetching: w?.isFetching,\n sourceData: w?.sourceData,\n }))\n\n // If loading or fetching, show children\n // SkeletonLoader handles loading state, this allows proper composition\n if (isLoading || isFetching) {\n return children\n }\n\n // Check if data is empty\n if (isEmpty(sourceData)) {\n return (\n <Box sx={styles.root}>\n <Typography variant='body2' color='text.primary'>\n {title}\n </Typography>\n <Typography variant='caption' color='text.secondary'>\n {description}\n </Typography>\n </Box>\n )\n }\n\n // Data exists, render children\n return children\n}\n\n/**\n * Default function to determine if data is empty\n * Handles various data structures commonly used in widgets\n */\nfunction defaultIsEmpty(data: unknown): boolean {\n // Null or undefined\n if (data == null) {\n return true\n }\n\n // Arrays (most common case)\n if (Array.isArray(data)) {\n // Empty array\n if (data.length === 0) {\n return true\n }\n\n // Array of arrays (CategoryWidget pattern: [[],[]])\n // Check if all inner arrays are empty\n if (data.every((item) => Array.isArray(item) && item.length === 0)) {\n return true\n }\n\n return false\n }\n\n // Objects\n if (typeof data === 'object') {\n return Object.keys(data).length === 0\n }\n\n // Primitives (numbers, strings, booleans) are considered valid data\n return false\n}\n"],"names":["styles","root","display","flexDirection","gap","paddingTop","paddingBottom","paddingX","width","minHeight","WidgetNoData","t0","$","_c","id","children","title","t1","description","t2","isEmpty","t3","undefined","defaultIsEmpty","isLoading","isFetching","sourceData","useWidgetSelector","_temp","t4","Typography","t5","t6","Box","w","data","Array","isArray","length","every","item","Object","keys"],"mappings":";;;;AAMO,MAAMA,IAAyC;AAAA,EACpDC,MAAM;AAAA,IACJC,SAAS;AAAA,IACTC,eAAe;AAAA,IACfC,KAAK;AAAA;AAAA,IACLC,YAAY;AAAA;AAAA,IACZC,eAAe;AAAA;AAAA,IACfC,UAAU;AAAA;AAAA,IACVC,OAAO;AAAA,IACPC,WAAW;AAAA,EAAA;AAEf;ACsBO,SAAAC,EAAAC,GAAA;AAAA,QAAAC,IAAAC,EAAA,CAAA,GAAsB;AAAA,IAAAC,IAAAA;AAAAA,IAAAC,UAAAA;AAAAA,IAAAC,OAAAC;AAAAA,IAAAC,aAAAC;AAAAA,IAAAC,SAAAC;AAAAA,EAAAA,IAAAV,GAG3BK,IAAAC,MAAAK,SAAA,sBAAAL,GACAC,IAAAC,MAAAG,SAAA,mJAAAH,GACAC,IAAAC,MAAAC,SAAAC,IAAAF,GAIA;AAAA,IAAAG,WAAAA;AAAAA,IAAAC,YAAAA;AAAAA,IAAAC,YAAAA;AAAAA,EAAAA,IAA8CC,EAAkBb,GAAIc,CAIlE;AAIF,MAAIJ,KAAAC;AAAuB,WAClBV;AAIT,MAAIK,EAAQM,CAAU,GAAC;AAAA,QAAAG;AAAA,IAAAjB,SAAAI,KAGjBa,sBAACC,GAAA,EAAmB,SAAA,SAAc,OAAA,gBAC/Bd,UAAAA,GACH,GAAaJ,OAAAI,GAAAJ,OAAAiB,KAAAA,IAAAjB,EAAA,CAAA;AAAA,QAAAmB;AAAA,IAAAnB,SAAAM,KACba,sBAACD,GAAA,EAAmB,SAAA,WAAgB,OAAA,kBACjCZ,UAAAA,GACH,GAAaN,OAAAM,GAAAN,OAAAmB,KAAAA,IAAAnB,EAAA,CAAA;AAAA,QAAAoB;AAAA,WAAApB,EAAA,CAAA,MAAAiB,KAAAjB,SAAAmB,KANfC,sBAACC,GAAA,EAAQ,IAAAjC,EAAMC,MACb4B,UAAAA;AAAAA,MAAAA;AAAAA,MAGAE;AAAAA,IAAAA,GAGF,GAAMnB,OAAAiB,GAAAjB,OAAAmB,GAAAnB,OAAAoB,KAAAA,IAAApB,EAAA,CAAA,GAPNoB;AAAAA,EAOM;AAET,SAGMjB;AAAQ;AApCV,SAAAa,EAAAM,GAAA;AAAA,SASuE;AAAA,IAAAV,WAC/DU,GAACV;AAAAA,IAAWC,YACXS,GAACT;AAAAA,IAAYC,YACbQ,GAACR;AAAAA,EAAAA;AACd;AA8BH,SAASH,EAAeY,GAAwB;AAE9C,SAAIA,KAAQ,OACH,KAILC,MAAMC,QAAQF,CAAI,IAEhBA,GAAAA,EAAKG,WAAW,KAMhBH,EAAKI,MAAOC,CAAAA,MAASJ,MAAMC,QAAQG,CAAI,KAAKA,EAAKF,WAAW,CAAC,KAQ/D,OAAOH,KAAS,WACXM,OAAOC,KAAKP,CAAI,EAAEG,WAAW,IAI/B;AACT;"}
1
+ {"version":3,"file":"no-data.js","names":["SxProps","Theme","styles","Record","root","display","flexDirection","gap","paddingTop","paddingBottom","paddingX","width","minHeight","Box","Typography","useWidgetSelector","WidgetNoDataProps","styles","WidgetNoData","t0","$","_c","id","children","title","t1","description","t2","isEmpty","t3","undefined","defaultIsEmpty","isLoading","isFetching","sourceData","_temp","t4","t5","t6","root","w","data","Array","isArray","length","every","item","Object","keys"],"sources":["../../src/widgets/no-data/style.ts","../../src/widgets/no-data/no-data.tsx"],"sourcesContent":["import type { SxProps, Theme } from '@mui/material'\n\n/**\n * Styles for NoData component matching Figma design specifications\n * Design reference: node 5781-11028\n */\nexport const styles: Record<string, SxProps<Theme>> = {\n root: {\n display: 'flex',\n flexDirection: 'column',\n gap: 1, // 8px\n paddingTop: 1, // 8px\n paddingBottom: 2, // 16px\n paddingX: 2, // 16px\n width: '100%',\n minHeight: '100%',\n },\n}\n","import { Box, Typography } from '@mui/material'\nimport { useWidgetSelector } from '../stores/use-widget-selector'\nimport type { WidgetNoDataProps } from './types'\nimport { styles } from './style'\n\n/**\n * NoData wrapper component that displays empty state UI when widget has no data\n *\n * Integrates with widget store to check loading/fetching state and source data availability.\n * Uses `sourceData` (pre-pipeline data) instead of `data` (post-pipeline) to distinguish\n * \"API returned nothing\" from \"pipeline tools filtered everything out\".\n *\n * @example Basic usage\n * ```tsx\n * <NoData id=\"my-widget\">\n * <WidgetContent id=\"my-widget\" />\n * </NoData>\n * ```\n *\n * @example With SkeletonLoader\n * ```tsx\n * <SkeletonLoader id=\"my-widget\" Skeleton={MySkeleton}>\n * <NoData id=\"my-widget\">\n * <WidgetContent id=\"my-widget\" />\n * </NoData>\n * </SkeletonLoader>\n * ```\n *\n * @example With custom messages\n * ```tsx\n * <NoData\n * id=\"my-widget\"\n * title=\"No results found\"\n * description=\"Try adjusting your filters\"\n * >\n * <WidgetContent id=\"my-widget\" />\n * </NoData>\n * ```\n */\nexport function WidgetNoData({\n id,\n children,\n title = 'No data available',\n description = 'There are no results for the combination of filters applied to your data. Try tweaking your filters, or zoom and pan the map to adjust filters',\n isEmpty = defaultIsEmpty,\n}: WidgetNoDataProps) {\n // Single consolidated subscription instead of 3 separate ones.\n // Reads sourceData (pre-pipeline) to check emptiness, not data (post-pipeline).\n const { isLoading, isFetching, sourceData } = useWidgetSelector(id, (w) => ({\n isLoading: w?.isLoading,\n isFetching: w?.isFetching,\n sourceData: w?.sourceData,\n }))\n\n // If loading or fetching, show children\n // SkeletonLoader handles loading state, this allows proper composition\n if (isLoading || isFetching) {\n return children\n }\n\n // Check if data is empty\n if (isEmpty(sourceData)) {\n return (\n <Box sx={styles.root}>\n <Typography variant='body2' color='text.primary'>\n {title}\n </Typography>\n <Typography variant='caption' color='text.secondary'>\n {description}\n </Typography>\n </Box>\n )\n }\n\n // Data exists, render children\n return children\n}\n\n/**\n * Default function to determine if data is empty\n * Handles various data structures commonly used in widgets\n */\nfunction defaultIsEmpty(data: unknown): boolean {\n // Null or undefined\n if (data == null) {\n return true\n }\n\n // Arrays (most common case)\n if (Array.isArray(data)) {\n // Empty array\n if (data.length === 0) {\n return true\n }\n\n // Array of arrays (CategoryWidget pattern: [[],[]])\n // Check if all inner arrays are empty\n if (data.every((item) => Array.isArray(item) && item.length === 0)) {\n return true\n }\n\n return false\n }\n\n // Objects\n if (typeof data === 'object') {\n return Object.keys(data).length === 0\n }\n\n // Primitives (numbers, strings, booleans) are considered valid data\n return false\n}\n"],"mappings":";;;;;AAMA,IAAaE,IAAyC,EACpDE,MAAM;CACJC,SAAS;CACTC,eAAe;CACfC,KAAK;CACLC,YAAY;CACZC,eAAe;CACfC,UAAU;CACVC,OAAO;CACPC,WAAW;AACb,EACF;;;ACsBA,SAAOM,EAAAC,GAAA;CAAA,IAAAC,IAAAC,EAAA,CAAA,GAAsB,EAAAC,OAAAC,aAAAC,OAAAC,GAAAC,aAAAC,GAAAC,SAAAC,MAAAV,GAG3BK,IAAAC,MAAAK,KAAAA,IAAA,sBAAAL,GACAC,IAAAC,MAAAG,KAAAA,IAAA,mJAAAH,GACAC,IAAAC,MAAAC,KAAAA,IAAAC,IAAAF,GAIA,EAAAG,cAAAC,eAAAC,kBAA8CnB,EAAkBO,GAAIa,CAIlE;CAIF,IAAIH,KAAAC,GAAuB,OAClBV;CAIT,IAAIK,EAAQM,CAAU,GAAC;EAAA,IAAAE;EAAA,AAAAhB,EAAA,OAAAI,IAKJY,IAAAhB,EAAA,MAFbgB,IAAA,kBAAC,GAAD;GAAoB,SAAA;GAAc,OAAA;GAC/BZ,UAAAA;EADQ,CAAA,GAEEJ,EAAA,KAAAI,GAAAJ,EAAA,KAAAgB;EAAA,IAAAC;EAAA,AAAAjB,EAAA,OAAAM,IAGAW,IAAAjB,EAAA,MAFbiB,IAAA,kBAAC,GAAD;GAAoB,SAAA;GAAgB,OAAA;GACjCX,UAAAA;EADQ,CAAA,GAEEN,EAAA,KAAAM,GAAAN,EAAA,KAAAiB;EAAA,IAAAC;EACT,OADSlB,EAAA,OAAAgB,KAAAhB,EAAA,OAAAiB,KANfC,IAAA,kBAAC,GAAD;GAAS,IAAArB,EAAMsB;GAAf,UAAA,CACEH,GAGAC,CAJE;MAOEjB,EAAA,KAAAgB,GAAAhB,EAAA,KAAAiB,GAAAjB,EAAA,KAAAkB,KAAAA,IAAAlB,EAAA,IAPNkB;CAOM;CAET,OAGMf;AAAQ;AApCV,SAAAY,EAAAK,GAAA;CAAA,OASuE;EAAAR,WAC/DQ,GAACR;EAAWC,YACXO,GAACP;EAAYC,YACbM,GAACN;CACf;AAAC;AA8BH,SAASH,EAAeU,GAAwB;CA4B9C,OA1BIA,KAAQ,OACH,KAILC,MAAMC,QAAQF,CAAI,IAQpB,GANIA,EAAKG,WAAW,KAMhBH,EAAKI,OAAOC,MAASJ,MAAMC,QAAQG,CAAI,KAAKA,EAAKF,WAAW,CAAC,KAQ/D,OAAOH,KAAS,YACXM,OAAOC,KAAKP,CAAI,CAAC,CAACG,WAAW;AAKxC"}