@carto/ps-react-ui 5.0.0-widgets.1 → 5.0.0-widgets.10

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 (110) hide show
  1. package/dist/error-B2IJ9d2h.js +38 -0
  2. package/dist/error-B2IJ9d2h.js.map +1 -0
  3. package/dist/no-data-C54XJt13.js +61 -0
  4. package/dist/no-data-C54XJt13.js.map +1 -0
  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-DrHwXNvF.js} +2 -2
  8. package/dist/{row-C_m1ovHv.js.map → row-DrHwXNvF.js.map} +1 -1
  9. package/dist/{series-6xp-KQ0S.js → series-Do02NQUF.js} +3 -3
  10. package/dist/{series-6xp-KQ0S.js.map → series-Do02NQUF.js.map} +1 -1
  11. package/dist/types/widgets/actions/searcher/searcher.d.ts +1 -1
  12. package/dist/types/widgets/actions/searcher/types.d.ts +2 -0
  13. package/dist/types/widgets/bar/config.d.ts +1 -1
  14. package/dist/types/widgets/bar/types.d.ts +1 -1
  15. package/dist/types/widgets/category/config.d.ts +2 -1
  16. package/dist/types/widgets/category/types.d.ts +1 -0
  17. package/dist/types/widgets/echart/types.d.ts +1 -0
  18. package/dist/types/widgets/error/error.d.ts +2 -0
  19. package/dist/types/widgets/error/index.d.ts +2 -0
  20. package/dist/types/widgets/error/types.d.ts +12 -0
  21. package/dist/types/widgets/formula/config.d.ts +1 -1
  22. package/dist/types/widgets/histogram/config.d.ts +1 -1
  23. package/dist/types/widgets/histogram/types.d.ts +1 -1
  24. package/dist/types/widgets/index.d.ts +6 -0
  25. package/dist/types/widgets/loader/index.d.ts +3 -0
  26. package/dist/types/widgets/loader/loader.d.ts +2 -0
  27. package/dist/types/widgets/{root → loader}/types.d.ts +1 -1
  28. package/dist/types/widgets/loader/utils.d.ts +1 -0
  29. package/dist/types/widgets/markdown/types.d.ts +1 -1
  30. package/dist/types/widgets/no-data/index.d.ts +2 -0
  31. package/dist/types/widgets/no-data/no-data.d.ts +35 -0
  32. package/dist/types/widgets/no-data/style.d.ts +6 -0
  33. package/dist/types/widgets/no-data/types.d.ts +67 -0
  34. package/dist/types/widgets/note/index.d.ts +2 -2
  35. package/dist/types/widgets/note/note.d.ts +2 -2
  36. package/dist/types/widgets/note/types.d.ts +1 -1
  37. package/dist/types/widgets/pie/config.d.ts +1 -1
  38. package/dist/types/widgets/pie/types.d.ts +1 -1
  39. package/dist/types/widgets/scatterplot/config.d.ts +1 -1
  40. package/dist/types/widgets/scatterplot/types.d.ts +1 -1
  41. package/dist/types/widgets/selection-summary/index.d.ts +2 -2
  42. package/dist/types/widgets/selection-summary/selection-summary.d.ts +2 -2
  43. package/dist/types/widgets/selection-summary/types.d.ts +1 -1
  44. package/dist/types/widgets/spread/config.d.ts +1 -1
  45. package/dist/types/widgets/stores/types.d.ts +4 -76
  46. package/dist/types/widgets/stores/widget-store.d.ts +1 -1
  47. package/dist/types/widgets/subheader/index.d.ts +2 -2
  48. package/dist/types/widgets/subheader/subheader.d.ts +2 -2
  49. package/dist/types/widgets/subheader/types.d.ts +1 -1
  50. package/dist/types/widgets/table/config.d.ts +8 -2
  51. package/dist/types/widgets/table/hooks/index.d.ts +2 -2
  52. package/dist/types/widgets/table/hooks/use-pagination.d.ts +4 -16
  53. package/dist/types/widgets/table/hooks/use-selection.d.ts +3 -5
  54. package/dist/types/widgets/table/hooks/use-sort.d.ts +7 -14
  55. package/dist/types/widgets/table/index.d.ts +2 -2
  56. package/dist/types/widgets/table/table-ui.d.ts +3 -3
  57. package/dist/types/widgets/table/types.d.ts +14 -19
  58. package/dist/types/widgets/timeseries/config.d.ts +1 -1
  59. package/dist/types/widgets/timeseries/types.d.ts +1 -1
  60. package/dist/widget-store-CB6Trp_0.js +131 -0
  61. package/dist/widget-store-CB6Trp_0.js.map +1 -0
  62. package/dist/widgets/actions.js +588 -579
  63. package/dist/widgets/actions.js.map +1 -1
  64. package/dist/widgets/bar.js +8 -7
  65. package/dist/widgets/bar.js.map +1 -1
  66. package/dist/widgets/category.js +135 -128
  67. package/dist/widgets/category.js.map +1 -1
  68. package/dist/widgets/echart.js +1 -1
  69. package/dist/widgets/error.js +5 -0
  70. package/dist/widgets/error.js.map +1 -0
  71. package/dist/widgets/formula.js +19 -18
  72. package/dist/widgets/formula.js.map +1 -1
  73. package/dist/widgets/histogram.js +54 -53
  74. package/dist/widgets/histogram.js.map +1 -1
  75. package/dist/widgets/loader.js +57 -0
  76. package/dist/widgets/loader.js.map +1 -0
  77. package/dist/widgets/markdown.js +1 -1
  78. package/dist/widgets/no-data.js +5 -0
  79. package/dist/widgets/no-data.js.map +1 -0
  80. package/dist/widgets/note.js +2 -121
  81. package/dist/widgets/note.js.map +1 -1
  82. package/dist/widgets/pie.js +8 -7
  83. package/dist/widgets/pie.js.map +1 -1
  84. package/dist/widgets/range.js +2 -2
  85. package/dist/widgets/scatterplot.js +8 -7
  86. package/dist/widgets/scatterplot.js.map +1 -1
  87. package/dist/widgets/selection-summary.js +3 -3
  88. package/dist/widgets/selection-summary.js.map +1 -1
  89. package/dist/widgets/skeleton-loader.js +1 -1
  90. package/dist/widgets/spread.js +20 -19
  91. package/dist/widgets/spread.js.map +1 -1
  92. package/dist/widgets/stores.js +1 -1
  93. package/dist/widgets/subheader.js +6 -6
  94. package/dist/widgets/subheader.js.map +1 -1
  95. package/dist/widgets/table.js +562 -570
  96. package/dist/widgets/table.js.map +1 -1
  97. package/dist/widgets/timeseries.js +8 -7
  98. package/dist/widgets/timeseries.js.map +1 -1
  99. package/dist/widgets/wrapper.js +1 -1
  100. package/dist/widgets.js +8 -2
  101. package/dist/widgets.js.map +1 -1
  102. package/package.json +12 -4
  103. package/dist/types/widgets/root/index.d.ts +0 -3
  104. package/dist/types/widgets/root/root.d.ts +0 -2
  105. package/dist/types/widgets/root/style.d.ts +0 -8
  106. package/dist/types/widgets/root/utils.d.ts +0 -1
  107. package/dist/widget-store-DNyVElxd.js +0 -190
  108. package/dist/widget-store-DNyVElxd.js.map +0 -1
  109. package/dist/widgets/root.js +0 -68
  110. package/dist/widgets/root.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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"}
@@ -1,68 +0,0 @@
1
- import { jsx as L } from "react/jsx-runtime";
2
- import { c as W } from "react/compiler-runtime";
3
- import { Box as _ } from "@mui/material";
4
- import { useEffect as n } from "react";
5
- import { u as b } from "../widget-store-DNyVElxd.js";
6
- import { d as w } from "../cjs-D9ro6BXv.js";
7
- const P = {
8
- root: {
9
- display: "flex",
10
- flexDirection: "column",
11
- gap: (e) => e.spacing(2)
12
- }
13
- };
14
- function $(e) {
15
- const i = W(29), t = b(j), d = b(S);
16
- let l, c;
17
- i[0] !== e.id || i[1] !== e.type || i[2] !== t ? (l = () => {
18
- t(e.id, {
19
- type: e.type
20
- });
21
- }, c = [e.id, e.type, t], i[0] = e.id, i[1] = e.type, i[2] = t, i[3] = l, i[4] = c) : (l = i[3], c = i[4]), n(l, c);
22
- let a, f;
23
- i[5] !== e.error || i[6] !== e.id || i[7] !== e.isFetching || i[8] !== e.isLoading || i[9] !== t ? (a = () => {
24
- t(e.id, {
25
- isLoading: e.isLoading ?? !1,
26
- isFetching: e.isFetching ?? !1,
27
- error: e.error
28
- });
29
- }, f = [e.id, e.isLoading, e.isFetching, e.error, t], i[5] = e.error, i[6] = e.id, i[7] = e.isFetching, i[8] = e.isLoading, i[9] = t, i[10] = a, i[11] = f) : (a = i[10], f = i[11]), n(a, f);
30
- let g, u;
31
- i[12] !== e.config || i[13] !== e.id || i[14] !== t ? (g = () => {
32
- e.config && t(e.id, {
33
- ...e.config
34
- });
35
- }, u = [e.id, e.config, t], i[12] = e.config, i[13] = e.id, i[14] = t, i[15] = g, i[16] = u) : (g = i[15], u = i[16]), n(g, u);
36
- let m, r;
37
- i[17] !== d || i[18] !== e.data || i[19] !== e.id ? (m = () => {
38
- d(e.id, e.data);
39
- }, r = [e.id, e.data, d], i[17] = d, i[18] = e.data, i[19] = e.id, i[20] = m, i[21] = r) : (m = i[20], r = i[21]), n(m, r);
40
- let h, x;
41
- i[22] !== d || i[23] !== e.data || i[24] !== e.id ? (h = () => {
42
- let o = b.getState().widgets[e.id]?.registeredTools;
43
- return b.subscribe((F) => {
44
- const T = F.widgets[e.id]?.registeredTools;
45
- T !== o && (o = T, d(e.id, e.data));
46
- });
47
- }, x = [e.id, e.data, d], i[22] = d, i[23] = e.data, i[24] = e.id, i[25] = h, i[26] = x) : (h = i[25], x = i[26]), n(h, x);
48
- let y;
49
- return i[27] !== e.children ? (y = /* @__PURE__ */ L(_, { sx: P.root, children: e.children }), i[27] = e.children, i[28] = y) : y = i[28], y;
50
- }
51
- function S(e) {
52
- return e.executeToolPipeline;
53
- }
54
- function j(e) {
55
- return e.setWidget;
56
- }
57
- function k(...e) {
58
- return w(e[0] ?? {}, e[1] ?? {}, {
59
- arrayMerge(i, t) {
60
- return t;
61
- }
62
- });
63
- }
64
- export {
65
- $ as Root,
66
- k as mergeWidgetConfig
67
- };
68
- //# sourceMappingURL=root.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"root.js","sources":["../../src/widgets/root/style.ts","../../src/widgets/root/root.tsx","../../src/widgets/root/utils.ts"],"sourcesContent":["import type { SxProps, Theme } from '@mui/material'\n\nexport const styles = {\n root: {\n display: 'flex',\n flexDirection: 'column',\n gap: (theme: Theme) => theme.spacing(2),\n },\n} satisfies Record<string, SxProps<Theme>>\n","import { Box } from '@mui/material'\nimport { styles } from './style'\nimport { useEffect } from 'react'\nimport type { RootProps } from './types'\nimport { useWidgetStore } from '../stores/widget-store'\nimport type { WrapperState } from '../wrapper'\n\nexport function Root<T>(props: RootProps<T>) {\n const setWidget = useWidgetStore((state) => state.setWidget)\n const executeToolPipeline = useWidgetStore(\n (state) => state.executeToolPipeline,\n )\n\n // Split into 3 effects for metadata and 1 for data pipeline:\n // Each property that can be modified independently gets its own effect to avoid\n // accidentally resetting other properties.\n //\n // - Effect 1: Type (can be modified by tools that change visualization type)\n // - Effect 2: Loading/Error states (change during fetch lifecycle)\n // - Effect 3: Config (can be modified by tools that change widget configuration)\n // - Effect 4: Data pipeline execution (transforms data through registered tools)\n // - Effect 5: Re-execute pipeline when tool state changes\n\n // Effect 1: Type updates\n useEffect(() => {\n setWidget<WrapperState>(props.id, {\n type: props.type,\n })\n }, [props.id, props.type, setWidget])\n\n // Effect 2: Loading and error states\n useEffect(() => {\n setWidget<WrapperState>(props.id, {\n isLoading: props.isLoading ?? false,\n isFetching: props.isFetching ?? false,\n error: props.error,\n })\n }, [props.id, props.isLoading, props.isFetching, props.error, setWidget])\n\n // Effect 3: Config updates\n useEffect(() => {\n if (props.config) {\n setWidget<WrapperState>(props.id, {\n ...props.config,\n })\n }\n }, [props.id, props.config, setWidget])\n\n // Effect 4: Execute tool pipeline when props.data changes\n useEffect(() => {\n void executeToolPipeline(props.id, props.data)\n }, [props.id, props.data, executeToolPipeline])\n\n // Effect 5: Re-execute pipeline when tool state changes (enabled/config)\n useEffect(() => {\n let prevTools = useWidgetStore.getState().widgets[props.id]?.registeredTools\n\n const unsubscribe = useWidgetStore.subscribe((state) => {\n const currentTools = state.widgets[props.id]?.registeredTools\n\n // Only re-execute if tools array changed\n if (currentTools !== prevTools) {\n prevTools = currentTools\n void executeToolPipeline(props.id, props.data)\n }\n })\n\n return unsubscribe\n }, [props.id, props.data, executeToolPipeline])\n\n return <Box sx={styles.root}>{props.children}</Box>\n}\n","import deepmerge from 'deepmerge'\n\nexport function mergeWidgetConfig<T>(\n ...options: [T | undefined, T | undefined]\n): T {\n return deepmerge(options[0] ?? {}, options[1] ?? {}, {\n arrayMerge(_, source) {\n return source as T[keyof T][]\n },\n }) as T\n}\n"],"names":["styles","root","display","flexDirection","gap","theme","spacing","Root","props","$","_c","setWidget","useWidgetStore","_temp","executeToolPipeline","_temp2","t0","t1","id","type","useEffect","t2","t3","error","isFetching","isLoading","t4","t5","config","t6","t7","data","t8","t9","prevTools","getState","widgets","registeredTools","subscribe","state_1","currentTools","state","t10","children","Box","state_0","mergeWidgetConfig","options","deepmerge","arrayMerge","_","source"],"mappings":"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"}