@carto/ps-react-ui 5.0.0-widgets.4 → 5.0.0-widgets.6

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 (62) hide show
  1. package/dist/{error-DGzuzmn1.js → error-G3sy6lw3.js} +2 -2
  2. package/dist/{error-DGzuzmn1.js.map → error-G3sy6lw3.js.map} +1 -1
  3. package/dist/{no-data-BBAoT1vK.js → no-data-DfkC_Kc_.js} +2 -2
  4. package/dist/{no-data-BBAoT1vK.js.map → no-data-DfkC_Kc_.js.map} +1 -1
  5. package/dist/note-Clng2ej6.js +124 -0
  6. package/dist/note-Clng2ej6.js.map +1 -0
  7. package/dist/{row-C_m1ovHv.js → row-B9hTUitn.js} +2 -2
  8. package/dist/{row-C_m1ovHv.js.map → row-B9hTUitn.js.map} +1 -1
  9. package/dist/{series-6xp-KQ0S.js → series-DojKkd_o.js} +3 -3
  10. package/dist/{series-6xp-KQ0S.js.map → series-DojKkd_o.js.map} +1 -1
  11. package/dist/types/widgets/category/config.d.ts +1 -0
  12. package/dist/types/widgets/category/types.d.ts +1 -0
  13. package/dist/types/widgets/echart/types.d.ts +1 -0
  14. package/dist/types/widgets/index.d.ts +2 -0
  15. package/dist/types/widgets/stores/types.d.ts +0 -75
  16. package/dist/types/widgets/subheader/index.d.ts +2 -2
  17. package/dist/types/widgets/subheader/subheader.d.ts +2 -2
  18. package/dist/types/widgets/subheader/types.d.ts +1 -1
  19. package/dist/types/widgets/table/hooks/use-pagination.d.ts +1 -7
  20. package/dist/types/widgets/table/hooks/use-selection.d.ts +0 -2
  21. package/dist/types/widgets/table/hooks/use-sort.d.ts +1 -7
  22. package/dist/types/widgets/table/types.d.ts +16 -5
  23. package/dist/widget-store-Dd7_sWZT.js +132 -0
  24. package/dist/widget-store-Dd7_sWZT.js.map +1 -0
  25. package/dist/widgets/actions.js +23 -22
  26. package/dist/widgets/actions.js.map +1 -1
  27. package/dist/widgets/bar.js +8 -7
  28. package/dist/widgets/bar.js.map +1 -1
  29. package/dist/widgets/category.js +135 -128
  30. package/dist/widgets/category.js.map +1 -1
  31. package/dist/widgets/echart.js +1 -1
  32. package/dist/widgets/error.js +1 -1
  33. package/dist/widgets/formula.js +19 -18
  34. package/dist/widgets/formula.js.map +1 -1
  35. package/dist/widgets/histogram.js +54 -53
  36. package/dist/widgets/histogram.js.map +1 -1
  37. package/dist/widgets/markdown.js +1 -1
  38. package/dist/widgets/no-data.js +1 -1
  39. package/dist/widgets/note.js +2 -121
  40. package/dist/widgets/note.js.map +1 -1
  41. package/dist/widgets/pie.js +8 -7
  42. package/dist/widgets/pie.js.map +1 -1
  43. package/dist/widgets/range.js +2 -2
  44. package/dist/widgets/root.js +1 -1
  45. package/dist/widgets/scatterplot.js +8 -7
  46. package/dist/widgets/scatterplot.js.map +1 -1
  47. package/dist/widgets/skeleton-loader.js +1 -1
  48. package/dist/widgets/spread.js +20 -19
  49. package/dist/widgets/spread.js.map +1 -1
  50. package/dist/widgets/stores.js +1 -1
  51. package/dist/widgets/subheader.js +5 -5
  52. package/dist/widgets/subheader.js.map +1 -1
  53. package/dist/widgets/table.js +499 -488
  54. package/dist/widgets/table.js.map +1 -1
  55. package/dist/widgets/timeseries.js +8 -7
  56. package/dist/widgets/timeseries.js.map +1 -1
  57. package/dist/widgets/wrapper.js +1 -1
  58. package/dist/widgets.js +6 -4
  59. package/dist/widgets.js.map +1 -1
  60. package/package.json +1 -1
  61. package/dist/widget-store-DNyVElxd.js +0 -190
  62. package/dist/widget-store-DNyVElxd.js.map +0 -1
@@ -1,190 +0,0 @@
1
- import { create as T } from "zustand";
2
- const a = /* @__PURE__ */ new Map(), w = T()((c, u) => ({
3
- // State
4
- widgets: {},
5
- // Actions
6
- setWidget: (e, o) => c((r) => {
7
- const t = r.widgets[e] ?? {};
8
- return {
9
- widgets: {
10
- ...r.widgets,
11
- [e]: {
12
- ...t,
13
- ...o,
14
- id: e
15
- }
16
- }
17
- };
18
- }),
19
- removeWidget: (e) => c((o) => {
20
- const r = {
21
- ...o.widgets
22
- };
23
- return delete r[e], {
24
- widgets: r
25
- };
26
- }),
27
- clearWidgets: () => c({
28
- widgets: {}
29
- }),
30
- getWidget: (e) => u().widgets[e],
31
- setTablePagination: (e, o) => c((r) => {
32
- const t = r.widgets[e] ?? {}, s = t.tableState ?? {};
33
- return {
34
- widgets: {
35
- ...r.widgets,
36
- [e]: {
37
- ...t,
38
- id: e,
39
- tableState: {
40
- ...s,
41
- pagination: {
42
- ...s.pagination,
43
- ...o
44
- }
45
- }
46
- }
47
- }
48
- };
49
- }),
50
- setTableSort: (e, o) => c((r) => {
51
- const t = r.widgets[e] ?? {}, s = t.tableState ?? {};
52
- return {
53
- widgets: {
54
- ...r.widgets,
55
- [e]: {
56
- ...t,
57
- id: e,
58
- tableState: {
59
- ...s,
60
- sort: {
61
- ...s.sort,
62
- ...o
63
- }
64
- }
65
- }
66
- }
67
- };
68
- }),
69
- setTableSelection: (e, o) => c((r) => {
70
- const t = r.widgets[e] ?? {}, s = t.tableState ?? {};
71
- return {
72
- widgets: {
73
- ...r.widgets,
74
- [e]: {
75
- ...t,
76
- id: e,
77
- tableState: {
78
- ...s,
79
- selection: {
80
- ...s.selection,
81
- ...o
82
- }
83
- }
84
- }
85
- }
86
- };
87
- }),
88
- getTableState: (e) => u().widgets[e]?.tableState,
89
- registerTool: (e, o) => c((r) => {
90
- const t = r.widgets[e] ?? {}, d = (t.registeredTools ?? []).filter((g) => g.id !== o.id);
91
- return {
92
- widgets: {
93
- ...r.widgets,
94
- [e]: {
95
- ...t,
96
- id: e,
97
- registeredTools: [...d, o]
98
- }
99
- }
100
- };
101
- }),
102
- unregisterTool: (e, o) => c((r) => {
103
- const t = r.widgets[e];
104
- if (!t) return r;
105
- const d = (t.registeredTools ?? []).filter((g) => g.id !== o);
106
- return {
107
- widgets: {
108
- ...r.widgets,
109
- [e]: {
110
- ...t,
111
- registeredTools: d
112
- }
113
- }
114
- };
115
- }),
116
- updateToolConfig: (e, o, r) => c((t) => {
117
- const s = t.widgets[e];
118
- if (!s) return t;
119
- const g = (s.registeredTools ?? []).map((n) => n.id === o ? {
120
- ...n,
121
- config: {
122
- ...n.config,
123
- ...r
124
- }
125
- } : n);
126
- return {
127
- widgets: {
128
- ...t.widgets,
129
- [e]: {
130
- ...s,
131
- registeredTools: g
132
- }
133
- }
134
- };
135
- }),
136
- setToolEnabled: (e, o, r) => c((t) => {
137
- const s = t.widgets[e];
138
- if (!s) return t;
139
- const g = (s.registeredTools ?? []).map((n) => n.id === o ? {
140
- ...n,
141
- enabled: r
142
- } : n);
143
- return {
144
- widgets: {
145
- ...t.widgets,
146
- [e]: {
147
- ...s,
148
- registeredTools: g
149
- }
150
- }
151
- };
152
- }),
153
- executeToolPipeline: async (e, o) => {
154
- const r = u().widgets[e];
155
- if (!r) return;
156
- const t = (a.get(e) ?? 0) + 1;
157
- a.set(e, t);
158
- const s = r, d = /* @__PURE__ */ new Set();
159
- for (const i of s.registeredTools ?? [])
160
- i.enabled && i.disables && i.disables.forEach((l) => d.add(l));
161
- const g = [...s.registeredTools ?? []].filter((i) => i.enabled && !d.has(i.id)).sort((i, l) => i.order - l.order);
162
- let n = o;
163
- for (const i of g) {
164
- if (a.get(e) !== t)
165
- return;
166
- try {
167
- const l = i.fn(n, i.config);
168
- n = l instanceof Promise ? await l : l;
169
- } catch (l) {
170
- console.error(`Tool ${i.id} failed for widget ${e}:`, l);
171
- }
172
- }
173
- a.get(e) === t && (c((i) => {
174
- const l = i.widgets[e];
175
- return l ? {
176
- widgets: {
177
- ...i.widgets,
178
- [e]: {
179
- ...l,
180
- data: n
181
- }
182
- }
183
- } : i;
184
- }), a.get(e) === t && a.delete(e));
185
- }
186
- }));
187
- export {
188
- w as u
189
- };
190
- //# sourceMappingURL=widget-store-DNyVElxd.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"widget-store-DNyVElxd.js","sources":["../src/widgets/stores/widget-store.ts"],"sourcesContent":["import { create } from 'zustand'\nimport type {\n WidgetState,\n WidgetStore,\n TablePaginationStoreState,\n TableSortStoreState,\n TableSelectionStoreState,\n TableStoreState,\n ToolRegistration,\n} from './types'\n\n// Track active pipeline executions for cancellation\nconst activePipelines = new Map<string, number>()\n\n/**\n * Zustand store for managing widget state across the application.\n *\n * This store provides centralized state management for all widget UI components\n *\n * @example\n * ```tsx\n * // Import the store\n * import { useWidgetStore } from '@carto/ps-react-ui/widgets'\n *\n * // Use in a component\n * function MyWidget() {\n * const setWidget = useWidgetStore((state) => state.setWidget)\n * const widget = useWidgetStore((state) => state.widgets['my-widget'])\n *\n * useEffect(() => {\n * setWidget({\n * id: 'my-widget',\n * type: 'formula',\n * title: 'Total Sales',\n * isLoading: false,\n * visible: true,\n * data: { value: 1000, prefix: '$' }\n * })\n * }, [setWidget])\n *\n * return <div>{widget?.data?.value}</div>\n * }\n * ```\n *\n * @example\n * ```tsx\n * // Get widgets by type\n * const getWidgetsByType = useWidgetStore((state) => state.getWidgetsByType)\n * const formulaWidgets = getWidgetsByType('formula')\n * ```\n */\nexport const useWidgetStore = create<WidgetStore>()((set, get) => ({\n // State\n widgets: {},\n\n // Actions\n setWidget: (id, widget) =>\n set((state) => {\n const current =\n state.widgets[id] ?? ({} as WidgetStore['widgets'][string])\n return {\n widgets: {\n ...state.widgets,\n [id]: {\n ...current,\n ...widget,\n id,\n },\n },\n }\n }),\n\n removeWidget: (id) =>\n set((state) => {\n const widgets = { ...state.widgets }\n\n delete widgets[id]\n\n return { widgets }\n }),\n\n clearWidgets: () =>\n set({\n widgets: {},\n }),\n\n getWidget: <T extends WidgetState>(id: string) => {\n return get().widgets[id] as T | undefined\n },\n\n setTablePagination: (\n id: string,\n pagination: Partial<TablePaginationStoreState>,\n ) =>\n set((state) => {\n const current = state.widgets[id] ?? ({} as WidgetState)\n const currentTableState =\n (current as WidgetState & { tableState?: TableStoreState })\n .tableState ?? {}\n\n return {\n widgets: {\n ...state.widgets,\n [id]: {\n ...current,\n id,\n tableState: {\n ...currentTableState,\n pagination: {\n ...currentTableState.pagination,\n ...pagination,\n },\n },\n },\n },\n }\n }),\n\n setTableSort: (id: string, sort: Partial<TableSortStoreState>) =>\n set((state) => {\n const current = state.widgets[id] ?? ({} as WidgetState)\n const currentTableState =\n (current as WidgetState & { tableState?: TableStoreState })\n .tableState ?? {}\n\n return {\n widgets: {\n ...state.widgets,\n [id]: {\n ...current,\n id,\n tableState: {\n ...currentTableState,\n sort: {\n ...currentTableState.sort,\n ...sort,\n },\n },\n },\n },\n }\n }),\n\n setTableSelection: (\n id: string,\n selection: Partial<TableSelectionStoreState>,\n ) =>\n set((state) => {\n const current = state.widgets[id] ?? ({} as WidgetState)\n const currentTableState =\n (current as WidgetState & { tableState?: TableStoreState })\n .tableState ?? {}\n\n return {\n widgets: {\n ...state.widgets,\n [id]: {\n ...current,\n id,\n tableState: {\n ...currentTableState,\n selection: {\n ...currentTableState.selection,\n ...selection,\n },\n },\n },\n },\n }\n }),\n\n getTableState: (id: string) => {\n const widget = get().widgets[id] as\n | (WidgetState & { tableState?: TableStoreState })\n | undefined\n return widget?.tableState\n },\n\n registerTool: (widgetId: string, tool: ToolRegistration) =>\n set((state) => {\n const current = state.widgets[widgetId] ?? ({} as WidgetState)\n const registeredTools = current.registeredTools ?? []\n\n // Remove existing tool with same id if present\n const filteredTools = registeredTools.filter(\n (t: ToolRegistration) => t.id !== tool.id,\n )\n\n return {\n widgets: {\n ...state.widgets,\n [widgetId]: {\n ...current,\n id: widgetId,\n registeredTools: [...filteredTools, tool],\n },\n },\n }\n }),\n\n unregisterTool: (widgetId: string, toolId: string) =>\n set((state) => {\n const current = state.widgets[widgetId]\n if (!current) return state\n\n const registeredTools = current.registeredTools ?? []\n const filteredTools = registeredTools.filter(\n (t: ToolRegistration) => t.id !== toolId,\n )\n\n return {\n widgets: {\n ...state.widgets,\n [widgetId]: {\n ...current,\n registeredTools: filteredTools,\n },\n },\n }\n }),\n\n updateToolConfig: (\n widgetId: string,\n toolId: string,\n config: Record<string, unknown>,\n ) =>\n set((state) => {\n const current = state.widgets[widgetId]\n if (!current) return state\n\n const registeredTools = current.registeredTools ?? []\n const updatedTools = registeredTools.map((tool: ToolRegistration) =>\n tool.id === toolId\n ? {\n ...tool,\n config: { ...tool.config, ...config },\n }\n : tool,\n )\n\n return {\n widgets: {\n ...state.widgets,\n [widgetId]: {\n ...current,\n registeredTools: updatedTools,\n },\n },\n }\n }),\n\n setToolEnabled: (widgetId: string, toolId: string, enabled: boolean) =>\n set((state) => {\n const current = state.widgets[widgetId]\n if (!current) return state\n\n const registeredTools = current.registeredTools ?? []\n const updatedTools = registeredTools.map((tool: ToolRegistration) =>\n tool.id === toolId ? { ...tool, enabled } : tool,\n )\n\n return {\n widgets: {\n ...state.widgets,\n [widgetId]: {\n ...current,\n registeredTools: updatedTools,\n },\n },\n }\n }),\n\n executeToolPipeline: async (widgetId: string, sourceData: unknown) => {\n const widget = get().widgets[widgetId]\n if (!widget) return\n\n // Cancel any in-progress pipeline for this widget\n const currentExecution = (activePipelines.get(widgetId) ?? 0) + 1\n activePipelines.set(widgetId, currentExecution)\n\n const widgetWithTools = widget\n\n // Build set of tool IDs that should be disabled\n const disabledToolIds = new Set<string>()\n for (const tool of widgetWithTools.registeredTools ?? []) {\n if (tool.enabled && tool.disables) {\n tool.disables.forEach((id) => disabledToolIds.add(id))\n }\n }\n\n // Sort tools by order and filter enabled only, excluding disabled tools\n const sortedTools = [...(widgetWithTools.registeredTools ?? [])]\n .filter((tool) => tool.enabled && !disabledToolIds.has(tool.id))\n .sort((a, b) => a.order - b.order)\n\n // Execute pipeline - handle both sync and async tools\n let transformedData = sourceData\n for (const tool of sortedTools) {\n // Check if this execution was cancelled\n if (activePipelines.get(widgetId) !== currentExecution) {\n return\n }\n\n try {\n // Call tool function (may return Promise or direct value)\n const result = tool.fn(transformedData, tool.config)\n\n // Await if Promise, otherwise use directly\n transformedData = result instanceof Promise ? await result : result\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(`Tool ${tool.id} failed for widget ${widgetId}:`, error)\n // Continue with current data to prevent one tool from breaking all\n }\n }\n\n // Final check before updating store (in case cancelled during async operation)\n if (activePipelines.get(widgetId) !== currentExecution) {\n return\n }\n\n // Single store update with final transformed data\n set((state) => {\n const currentWidget = state.widgets[widgetId]\n if (!currentWidget) return state\n\n return {\n widgets: {\n ...state.widgets,\n [widgetId]: {\n ...currentWidget,\n data: transformedData,\n },\n },\n }\n })\n\n // Clean up tracking\n if (activePipelines.get(widgetId) === currentExecution) {\n activePipelines.delete(widgetId)\n }\n },\n}))\n"],"names":["activePipelines","Map","useWidgetStore","create","set","get","widgets","setWidget","id","widget","state","current","removeWidget","clearWidgets","getWidget","setTablePagination","pagination","currentTableState","tableState","setTableSort","sort","setTableSelection","selection","getTableState","registerTool","widgetId","tool","filteredTools","registeredTools","filter","t","unregisterTool","toolId","updateToolConfig","config","updatedTools","map","setToolEnabled","enabled","executeToolPipeline","sourceData","currentExecution","widgetWithTools","disabledToolIds","Set","disables","forEach","add","sortedTools","has","a","b","order","transformedData","result","fn","Promise","error","console","currentWidget","data","delete"],"mappings":"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"}