@sigmacomputing/react-embed-sdk 0.3.3 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
@@ -0,0 +1,327 @@
1
+ ## Getting Started
2
+
3
+ To use the react-embed-sdk in your project, you can install it using your node package manager.
4
+
5
+ **Using npm:**
6
+
7
+ ```code
8
+ npm install @sigmacomputing/react-embed-sdk
9
+ ```
10
+
11
+ **yarn:**
12
+
13
+ ```code
14
+ yarn add @sigmacomputing/react-embed-sdk
15
+ ```
16
+
17
+ **pnpm:**
18
+
19
+ ```code
20
+ pnpm add @sigmacomputing/react-embed-sdk
21
+ ```
22
+
23
+ ## Documentation
24
+
25
+ ### Hooks
26
+
27
+ The library provides hooks that combine the lower level [listeners](#listeners) and [mutations](#mutations) to provide a more ergonomic API.
28
+
29
+ #### useSigmaIframe
30
+
31
+ A hook that returns a ref to be used with a Sigma iframe element, and the loading and error state of the embed.
32
+
33
+ ```typescript
34
+ useSigmaIframe(): {
35
+ iframeRef: React.RefObject<HTMLIFrameElement>;
36
+ loading: boolean;
37
+ error: WorkbookErrorEvent | null;
38
+ variables: Record<string, string> | undefined;
39
+ }
40
+ ```
41
+
42
+ Example usage:
43
+
44
+ ```tsx
45
+ function MyEmbed() {
46
+ const { iframeRef, loading, error } = useSigmaIframe();
47
+ return (
48
+ <>
49
+ {loading && <p>Loading...</p>}
50
+ {error && <p>Error: {error.message}</p>}
51
+ <iframe
52
+ className={loading || error ? "hidden" : "show"}
53
+ ref={iframeRef}
54
+ {/* The embed url to load */}
55
+ src="https://app.sigmacomputing.com/embed"
56
+ />
57
+ </>
58
+ );
59
+ }
60
+ ```
61
+
62
+ #### useWorkbookVariables
63
+
64
+ A hook that returns functions to get and set the variables in a workbook.
65
+
66
+ ```typescript
67
+ useWorkbookVariables(iframeRef: React.RefObject<HTMLIFrameElement>): {
68
+ getVariables: () => Promise<Record<string, string>>;
69
+ setVariables: (variables: Record<string, string>) => void;
70
+ }
71
+ ```
72
+
73
+ Example usage:
74
+
75
+ ```tsx
76
+ function MyEmbed() {
77
+ const { getVariables, setVariables } = useWorkbookVariables(iframeRef);
78
+ return (
79
+ <>
80
+ <button onClick={() => setVariables({ foo: "bar" }))} name="set-variables">Set Filters</button>
81
+ <button
82
+ onClick={async () => {
83
+ const variable = await getVariables();
84
+ }}
85
+ name="get-variables"
86
+ >
87
+ Get Filters
88
+ </button>
89
+ <iframe ref={iframeRef} src="https://app.sigmacomputing.com/embed" />
90
+ </>
91
+ );
92
+ }
93
+ ```
94
+
95
+ #### usePageHeight
96
+
97
+ A hook that returns the height of the page in the iframe. This HAS to be used with the responsive_height [URL Parameter](https://help.sigmacomputing.com/docs/embed-url-parameters).
98
+
99
+ ```typescript
100
+ usePageHeight(iframeRef: React.RefObject<HTMLIFrameElement>): number | undefined
101
+ ```
102
+
103
+ Example usage:
104
+
105
+ ```tsx
106
+ function MyEmbed() {
107
+ const { iframeRef } = useSigmaIframe();
108
+ const height = usePageHeight(iframeRef);
109
+ return (
110
+ <>
111
+ <iframe
112
+ style={{ height }}
113
+ ref={iframeRef}
114
+ src="https://app.sigmacomputing.com/embed?:responsive_height=true"
115
+ />
116
+ </>
117
+ );
118
+ }
119
+ ```
120
+
121
+ ### Listeners
122
+
123
+ These are functions that can be used to listen for events from the embed, and react to them.
124
+
125
+ #### useWorkbookLoaded
126
+
127
+ Listen for a workbook loaded event, and execute the given callback when it occurs.
128
+
129
+ ```typescript
130
+ useWorkbookLoaded(iframeRef: React.RefObject<HTMLIFrameElement>, onLoaded: (event: WorkbookLoadedEvent) => void)
131
+ ```
132
+
133
+ #### useWorkbookError
134
+
135
+ Listen for a workbook error event, and execute the given callback when it occurs.
136
+
137
+ ```typescript
138
+ useWorkbookError(iframeRef: React.RefObject<HTMLIFrameElement>, onError: (event: WorkbookErrorEvent) => void)
139
+ ```
140
+
141
+ #### useWorkbookDataLoaded
142
+
143
+ Listen for a workbook data loaded event, and execute the given callback when it occurs.
144
+
145
+ ```typescript
146
+ useWorkbookDataLoaded(iframeRef: React.RefObject<HTMLIFrameElement>, onDataLoaded: (event: WorkbookDataLoadedEvent) => void)
147
+ ```
148
+
149
+ #### useVariableChange
150
+
151
+ Listen for a workbook variable change event, and execute the given callback when it occurs.
152
+
153
+ ```typescript
154
+ useVariableChange(iframeRef: React.RefObject<HTMLIFrameElement>, onVariableChange: (event: WorkbookVariableOnChangeEvent) => void)
155
+ ```
156
+
157
+ #### useTableCellSelect
158
+
159
+ Listen for a table cell select event, and execute the given callback when it occurs.
160
+
161
+ ```typescript
162
+ useTableCellSelect(iframeRef: React.RefObject<HTMLIFrameElement>, onTableCellSelect: (event: WorkbookTableCellSelectEvent) => void)
163
+ ```
164
+
165
+ #### useWorkbookPublished
166
+
167
+ Listen for a workbook published event, and execute the given callback when it occurs.
168
+
169
+ ```typescript
170
+ useWorkbookPublished(iframeRef: React.RefObject<HTMLIFrameElement>, onWorkbookPublished: (event: WorkbookPublishedEvent) => void)
171
+ ```
172
+
173
+ #### useWorkbookFullScreen
174
+
175
+ Listen for a workbook full screen event, and execute the given callback when it occurs.
176
+
177
+ ```typescript
178
+ useWorkbookFullScreen(iframeRef: React.RefObject<HTMLIFrameElement>, onFullScreen: (event: WorkbookFullScreenEvent) => void)
179
+ ```
180
+
181
+ #### useWorkbookPageHeight
182
+
183
+ Listen for a workbook page height event, and execute the given callback when it occurs. Needs to be used with the responsive_height [URL Parameter](https://help.sigmacomputing.com/docs/embed-url-parameters).
184
+
185
+ ```typescript
186
+ useWorkbookPageHeight(iframeRef: React.RefObject<HTMLIFrameElement>, onPageHeight: (event: WorkbookPageHeightEvent) => void)
187
+ ```
188
+
189
+ #### useWorkbookSelectedNode
190
+
191
+ Listen for a workbook selected node event, and execute the given callback when it occurs.
192
+
193
+ ```typescript
194
+ useWorkbookSelectedNode(iframeRef: React.RefObject<HTMLIFrameElement>, onPageSelectedNode: (event: WorkbookSelectedNodeEvent) => void)
195
+ ```
196
+
197
+ #### useWorkbookPivotTableCellSelect
198
+
199
+ Listen for a pivot table cell select event, and execute the given callback when it occurs.
200
+
201
+ ```typescript
202
+ useWorkbookPivotTableCellSelect(iframeRef: React.RefObject<HTMLIFrameElement>, onPivotTableCellSelect: (event: WorkbookPivotTableCellSelectEvent) => void)
203
+ ```
204
+
205
+ #### useWorkbookChartValueSelect
206
+
207
+ Listen for a chart value select event, and execute the given callback when it occurs.
208
+
209
+ ```typescript
210
+ useWorkbookChartValueSelect(iframeRef: React.RefObject<HTMLIFrameElement>, onChartValueSelect: (event: WorkbookChartValueSelectEvent) => void)
211
+ ```
212
+
213
+ #### useWorkbookCurrentVariables
214
+
215
+ Listen for a workbook current variables event, and execute the given callback when it occurs. This is to be used when `workbookVariablesList` is called.
216
+
217
+ ```typescript
218
+ useWorkbookCurrentVariables(iframeRef: React.RefObject<HTMLIFrameElement>, onCurrentVariables: (event: WorkbookCurrentVariablesEvent) => void)
219
+ ```
220
+
221
+ #### useWorkbookBookmarkOnCreate
222
+
223
+ Listen for a workbook bookmark create event, and execute the given callback when it occurs.
224
+
225
+ ```typescript
226
+ useWorkbookBookmarkOnCreate(iframeRef: React.RefObject<HTMLIFrameElement>, onBookmarkCreate: (event: WorkbookBookmarkOnCreateEvent) => void)
227
+ ```
228
+
229
+ #### useWorkbookChartError
230
+
231
+ Listen for a workbook chart error event, and execute the given callback when it occurs.
232
+
233
+ ```typescript
234
+ useWorkbookChartError(iframeRef: React.RefObject<HTMLIFrameElement>, onChartError: (event: WorkbookChartErrorEvent) => void)
235
+ ```
236
+
237
+ #### useWorkbookExploreKeyOnChange
238
+
239
+ Listen for a workbook explore key change event, and execute the given callback when it occurs.
240
+
241
+ ```typescript
242
+ useWorkbookExploreKeyOnChange(iframeRef: React.RefObject<HTMLIFrameElement>, onExploreKeyOnChange: (event: WorkbookExploreKeyOnChangeEvent) => void)
243
+ ```
244
+
245
+ #### useWorkbookBookmarkOnChange
246
+
247
+ Listen for a workbook bookmark change event, and execute the given callback when it occurs.
248
+
249
+ ```typescript
250
+ useWorkbookBookmarkOnChange(iframeRef: React.RefObject<HTMLIFrameElement>, onBookmarkChange: (event: WorkbookBookmarkOnChangeEvent) => void)
251
+ ```
252
+
253
+ #### useUrlOnChange
254
+
255
+ Listen for a url change event, and execute the given callback when it occurs.
256
+
257
+ ```typescript
258
+ useUrlOnChange(iframeRef: React.RefObject<HTMLIFrameElement>, onUrlChange: (event: UrlOnChangeEvent) => void)
259
+ ```
260
+
261
+ #### useWorkbookIdOnChange
262
+
263
+ Listen for a workbook id change event, and execute the given callback when it occurs.
264
+
265
+ ```typescript
266
+ useWorkbookIdOnChange(iframeRef: React.RefObject<HTMLIFrameElement>, onWorkbookIdChange: (event: WorkbookIdOnChangeEvent) => void)
267
+ ```
268
+
269
+ ### Mutations
270
+
271
+ These are functions that can be used to send messages to the embed. They may cause an event to be emitted from the embed.
272
+
273
+ #### getWorkbookVariables
274
+
275
+ Send a message to the embed to list the current variables. This will cause a `workbook:variables:current` event to be emitted from the embed, and can be used with the `useWorkbookCurrentVariables` function.
276
+
277
+ ```typescript
278
+ getWorkbookVariables(iframeRef: React.RefObject<HTMLIFrameElement>)
279
+ ```
280
+
281
+ #### updateWorkbookVariables
282
+
283
+ Send a message to the embed to update the variables.
284
+
285
+ ```typescript
286
+ updateWorkbookVariables(iframeRef: React.RefObject<HTMLIFrameElement>, variables: Record<string, string>)
287
+ ```
288
+
289
+ #### createWorkbookBookmark
290
+
291
+ Send a message to the embed to create a bookmark.
292
+
293
+ ```typescript
294
+ createWorkbookBookmark(iframeRef: React.RefObject<HTMLIFrameElement>, bookmark: WorkbookBookmarkCreateEvent)
295
+ ```
296
+
297
+ #### updateWorkbookBookmark
298
+
299
+ Send a message to the embed to update the current bookmark.
300
+
301
+ ```typescript
302
+ updateWorkbookBookmark(iframeRef: React.RefObject<HTMLIFrameElement>)
303
+ ```
304
+
305
+ #### updateWorkbookFullscreen
306
+
307
+ Send a message to the embed to toggle the fullscreen state of the given element.
308
+
309
+ ```typescript
310
+ updateWorkbookFullscreen(iframeRef: React.RefObject<HTMLIFrameElement>, nodeId: string | null)
311
+ ```
312
+
313
+ #### updateWorkbookSelectedNodeId
314
+
315
+ Send a message to the embed to update the selected element. Can be a pageId or elementId.
316
+
317
+ ```typescript
318
+ updateWorkbookSelectedNodeId(iframeRef: React.RefObject<HTMLIFrameElement>, nodeId: string, nodeType: "element" | "page")
319
+ ```
320
+
321
+ #### updateWorkbookSharingLink
322
+
323
+ Send a message to the embed to update the sharing link.
324
+
325
+ ```typescript
326
+ updateWorkbookSharingLink(iframeRef: React.RefObject<HTMLIFrameElement>, sharingLink: string | null, sharingExplorationLink?: string | null)
327
+ ```
package/dist/index.d.mts CHANGED
@@ -1,6 +1,5 @@
1
- import { WorkbookErrorEvent, WorkbookLoadedEvent, WorkbookDataLoadedEvent, WorkbookVariableOnChangeEvent, WorkbookTableCellSelectEvent, WorkbookPublishedEvent, WorkbookFullScreenEvent, WorkbookPageHeightEvent, WorkbookPageSelectedNodeEvent, WorkbookPivotTableCellSelectEvent, WorkbookChartValueSelectEvent, WorkbookCurrentVariablesEvent, WorkbookBookmarkOnCreateEvent, WorkbookChartErrorEvent, WorkbookExploreKeyOnChangeEvent, WorkbookBookmarkOnChangeEvent, UrlOnChangeEvent, WorkbookIdOnChangeEvent, WorkbookBookmarkCreateEvent } from '@sigmacomputing/embed-sdk';
1
+ import { WorkbookErrorEvent, WorkbookLoadedEvent, WorkbookDataLoadedEvent, WorkbookVariableOnChangeEvent, WorkbookTableCellSelectEvent, WorkbookPublishedEvent, WorkbookFullScreenEvent, WorkbookPageHeightEvent, WorkbookSelectedNodeEvent, WorkbookPivotTableCellSelectEvent, WorkbookChartValueSelectEvent, WorkbookCurrentVariablesEvent, WorkbookBookmarkOnCreateEvent, WorkbookChartErrorEvent, WorkbookExploreKeyOnChangeEvent, WorkbookBookmarkOnChangeEvent, UrlOnChangeEvent, WorkbookIdOnChangeEvent, ActionOutboundEvent, WorkbookBookmarkCreateEvent } from '@sigmacomputing/embed-sdk';
2
2
  export * from '@sigmacomputing/embed-sdk';
3
- import * as react from 'react';
4
3
 
5
4
  /**
6
5
  * A hook that returns a ref to be used with an iframe element, and the loading and error state of the embed.
@@ -24,10 +23,10 @@ import * as react from 'react';
24
23
  * ```
25
24
  */
26
25
  declare function useSigmaIframe(): {
27
- iframeRef: react.RefObject<HTMLIFrameElement>;
26
+ iframeRef: React.RefObject<HTMLIFrameElement>;
28
27
  loading: boolean;
29
28
  error: WorkbookErrorEvent | null;
30
- variables: Record<string, string> | null | undefined;
29
+ variables: Record<string, string> | undefined;
31
30
  };
32
31
 
33
32
  /**
@@ -147,7 +146,7 @@ declare function useTableCellSelect(iframeRef: React.RefObject<HTMLIFrameElement
147
146
  declare function useWorkbookPublished(iframeRef: React.RefObject<HTMLIFrameElement>, onWorkbookPublished: (event: WorkbookPublishedEvent) => void): void;
148
147
  declare function useWorkbookFullScreen(iframeRef: React.RefObject<HTMLIFrameElement>, onFullScreen: (event: WorkbookFullScreenEvent) => void): void;
149
148
  declare function useWorkbookPageHeight(iframeRef: React.RefObject<HTMLIFrameElement>, onPageHeight: (event: WorkbookPageHeightEvent) => void): void;
150
- declare function useWorkbookPageSelectedNode(iframeRef: React.RefObject<HTMLIFrameElement>, onPageSelectedNode: (event: WorkbookPageSelectedNodeEvent) => void): void;
149
+ declare function useWorkbookSelectedNode(iframeRef: React.RefObject<HTMLIFrameElement>, onPageSelectedNode: (event: WorkbookSelectedNodeEvent) => void): void;
151
150
  declare function useWorkbookPivotTableCellSelect(iframeRef: React.RefObject<HTMLIFrameElement>, onPivotTableCellSelect: (event: WorkbookPivotTableCellSelectEvent) => void): void;
152
151
  declare function useWorkbookChartValueSelect(iframeRef: React.RefObject<HTMLIFrameElement>, onChartValueSelect: (event: WorkbookChartValueSelectEvent) => void): void;
153
152
  declare function useWorkbookCurrentVariables(iframeRef: React.RefObject<HTMLIFrameElement>, onCurrentVariables: (event: WorkbookCurrentVariablesEvent) => void): void;
@@ -157,6 +156,16 @@ declare function useWorkbookExploreKeyOnChange(iframeRef: React.RefObject<HTMLIF
157
156
  declare function useWorkbookBookmarkOnChange(iframeRef: React.RefObject<HTMLIFrameElement>, onBookmarkChange: (event: WorkbookBookmarkOnChangeEvent) => void): void;
158
157
  declare function useUrlOnChange(iframeRef: React.RefObject<HTMLIFrameElement>, onUrlChange: (event: UrlOnChangeEvent) => void): void;
159
158
  declare function useWorkbookIdOnChange(iframeRef: React.RefObject<HTMLIFrameElement>, onIdChange: (event: WorkbookIdOnChangeEvent) => void): void;
159
+ /**
160
+ * Listen for an action outbound event, and execute the
161
+ * given callback when it occurs.
162
+ *
163
+ * You can setup your own outbound action by using the
164
+ * "Generate JavaScript event" action. For more details,
165
+ * see [docs](https://help.sigmacomputing.com/docs/intro-to-actions).
166
+ *
167
+ */
168
+ declare function useActionOutbound(iframeRef: React.RefObject<HTMLIFrameElement>, onActionOutbound: (event: ActionOutboundEvent) => void): void;
160
169
 
161
170
  declare function getWorkbookVariables(iframeRef: React.RefObject<HTMLIFrameElement>): void;
162
171
  declare function updateWorkbookVariables(iframeRef: React.RefObject<HTMLIFrameElement>, variables: Record<string, string>): void;
@@ -166,4 +175,4 @@ declare function updateWorkbookFullscreen(iframeRef: React.RefObject<HTMLIFrameE
166
175
  declare function updateWorkbookSelectedNodeId(iframeRef: React.RefObject<HTMLIFrameElement>, nodeId: string, nodeType: "element" | "page"): void;
167
176
  declare function updateWorkbookSharingLink(iframeRef: React.RefObject<HTMLIFrameElement>, sharingLink: string | null, sharingExplorationLink?: string | null): void;
168
177
 
169
- export { createWorkbookBookmark, getWorkbookVariables, updateWorkbookBookmark, updateWorkbookFullscreen, updateWorkbookSelectedNodeId, updateWorkbookSharingLink, updateWorkbookVariables, usePageHeight, useSigmaIframe, useTableCellSelect, useUrlOnChange, useVariableChange, useWorkbookBookmarkOnChange, useWorkbookBookmarkOnCreate, useWorkbookChartError, useWorkbookChartValueSelect, useWorkbookCurrentVariables, useWorkbookDataLoaded, useWorkbookError, useWorkbookExploreKeyOnChange, useWorkbookFullScreen, useWorkbookIdOnChange, useWorkbookLoaded, useWorkbookPageHeight, useWorkbookPageSelectedNode, useWorkbookPivotTableCellSelect, useWorkbookPublished, useWorkbookVariables };
178
+ export { createWorkbookBookmark, getWorkbookVariables, updateWorkbookBookmark, updateWorkbookFullscreen, updateWorkbookSelectedNodeId, updateWorkbookSharingLink, updateWorkbookVariables, useActionOutbound, usePageHeight, useSigmaIframe, useTableCellSelect, useUrlOnChange, useVariableChange, useWorkbookBookmarkOnChange, useWorkbookBookmarkOnCreate, useWorkbookChartError, useWorkbookChartValueSelect, useWorkbookCurrentVariables, useWorkbookDataLoaded, useWorkbookError, useWorkbookExploreKeyOnChange, useWorkbookFullScreen, useWorkbookIdOnChange, useWorkbookLoaded, useWorkbookPageHeight, useWorkbookPivotTableCellSelect, useWorkbookPublished, useWorkbookSelectedNode, useWorkbookVariables };
package/dist/index.d.ts CHANGED
@@ -1,6 +1,5 @@
1
- import { WorkbookErrorEvent, WorkbookLoadedEvent, WorkbookDataLoadedEvent, WorkbookVariableOnChangeEvent, WorkbookTableCellSelectEvent, WorkbookPublishedEvent, WorkbookFullScreenEvent, WorkbookPageHeightEvent, WorkbookPageSelectedNodeEvent, WorkbookPivotTableCellSelectEvent, WorkbookChartValueSelectEvent, WorkbookCurrentVariablesEvent, WorkbookBookmarkOnCreateEvent, WorkbookChartErrorEvent, WorkbookExploreKeyOnChangeEvent, WorkbookBookmarkOnChangeEvent, UrlOnChangeEvent, WorkbookIdOnChangeEvent, WorkbookBookmarkCreateEvent } from '@sigmacomputing/embed-sdk';
1
+ import { WorkbookErrorEvent, WorkbookLoadedEvent, WorkbookDataLoadedEvent, WorkbookVariableOnChangeEvent, WorkbookTableCellSelectEvent, WorkbookPublishedEvent, WorkbookFullScreenEvent, WorkbookPageHeightEvent, WorkbookSelectedNodeEvent, WorkbookPivotTableCellSelectEvent, WorkbookChartValueSelectEvent, WorkbookCurrentVariablesEvent, WorkbookBookmarkOnCreateEvent, WorkbookChartErrorEvent, WorkbookExploreKeyOnChangeEvent, WorkbookBookmarkOnChangeEvent, UrlOnChangeEvent, WorkbookIdOnChangeEvent, ActionOutboundEvent, WorkbookBookmarkCreateEvent } from '@sigmacomputing/embed-sdk';
2
2
  export * from '@sigmacomputing/embed-sdk';
3
- import * as react from 'react';
4
3
 
5
4
  /**
6
5
  * A hook that returns a ref to be used with an iframe element, and the loading and error state of the embed.
@@ -24,10 +23,10 @@ import * as react from 'react';
24
23
  * ```
25
24
  */
26
25
  declare function useSigmaIframe(): {
27
- iframeRef: react.RefObject<HTMLIFrameElement>;
26
+ iframeRef: React.RefObject<HTMLIFrameElement>;
28
27
  loading: boolean;
29
28
  error: WorkbookErrorEvent | null;
30
- variables: Record<string, string> | null | undefined;
29
+ variables: Record<string, string> | undefined;
31
30
  };
32
31
 
33
32
  /**
@@ -147,7 +146,7 @@ declare function useTableCellSelect(iframeRef: React.RefObject<HTMLIFrameElement
147
146
  declare function useWorkbookPublished(iframeRef: React.RefObject<HTMLIFrameElement>, onWorkbookPublished: (event: WorkbookPublishedEvent) => void): void;
148
147
  declare function useWorkbookFullScreen(iframeRef: React.RefObject<HTMLIFrameElement>, onFullScreen: (event: WorkbookFullScreenEvent) => void): void;
149
148
  declare function useWorkbookPageHeight(iframeRef: React.RefObject<HTMLIFrameElement>, onPageHeight: (event: WorkbookPageHeightEvent) => void): void;
150
- declare function useWorkbookPageSelectedNode(iframeRef: React.RefObject<HTMLIFrameElement>, onPageSelectedNode: (event: WorkbookPageSelectedNodeEvent) => void): void;
149
+ declare function useWorkbookSelectedNode(iframeRef: React.RefObject<HTMLIFrameElement>, onPageSelectedNode: (event: WorkbookSelectedNodeEvent) => void): void;
151
150
  declare function useWorkbookPivotTableCellSelect(iframeRef: React.RefObject<HTMLIFrameElement>, onPivotTableCellSelect: (event: WorkbookPivotTableCellSelectEvent) => void): void;
152
151
  declare function useWorkbookChartValueSelect(iframeRef: React.RefObject<HTMLIFrameElement>, onChartValueSelect: (event: WorkbookChartValueSelectEvent) => void): void;
153
152
  declare function useWorkbookCurrentVariables(iframeRef: React.RefObject<HTMLIFrameElement>, onCurrentVariables: (event: WorkbookCurrentVariablesEvent) => void): void;
@@ -157,6 +156,16 @@ declare function useWorkbookExploreKeyOnChange(iframeRef: React.RefObject<HTMLIF
157
156
  declare function useWorkbookBookmarkOnChange(iframeRef: React.RefObject<HTMLIFrameElement>, onBookmarkChange: (event: WorkbookBookmarkOnChangeEvent) => void): void;
158
157
  declare function useUrlOnChange(iframeRef: React.RefObject<HTMLIFrameElement>, onUrlChange: (event: UrlOnChangeEvent) => void): void;
159
158
  declare function useWorkbookIdOnChange(iframeRef: React.RefObject<HTMLIFrameElement>, onIdChange: (event: WorkbookIdOnChangeEvent) => void): void;
159
+ /**
160
+ * Listen for an action outbound event, and execute the
161
+ * given callback when it occurs.
162
+ *
163
+ * You can setup your own outbound action by using the
164
+ * "Generate JavaScript event" action. For more details,
165
+ * see [docs](https://help.sigmacomputing.com/docs/intro-to-actions).
166
+ *
167
+ */
168
+ declare function useActionOutbound(iframeRef: React.RefObject<HTMLIFrameElement>, onActionOutbound: (event: ActionOutboundEvent) => void): void;
160
169
 
161
170
  declare function getWorkbookVariables(iframeRef: React.RefObject<HTMLIFrameElement>): void;
162
171
  declare function updateWorkbookVariables(iframeRef: React.RefObject<HTMLIFrameElement>, variables: Record<string, string>): void;
@@ -166,4 +175,4 @@ declare function updateWorkbookFullscreen(iframeRef: React.RefObject<HTMLIFrameE
166
175
  declare function updateWorkbookSelectedNodeId(iframeRef: React.RefObject<HTMLIFrameElement>, nodeId: string, nodeType: "element" | "page"): void;
167
176
  declare function updateWorkbookSharingLink(iframeRef: React.RefObject<HTMLIFrameElement>, sharingLink: string | null, sharingExplorationLink?: string | null): void;
168
177
 
169
- export { createWorkbookBookmark, getWorkbookVariables, updateWorkbookBookmark, updateWorkbookFullscreen, updateWorkbookSelectedNodeId, updateWorkbookSharingLink, updateWorkbookVariables, usePageHeight, useSigmaIframe, useTableCellSelect, useUrlOnChange, useVariableChange, useWorkbookBookmarkOnChange, useWorkbookBookmarkOnCreate, useWorkbookChartError, useWorkbookChartValueSelect, useWorkbookCurrentVariables, useWorkbookDataLoaded, useWorkbookError, useWorkbookExploreKeyOnChange, useWorkbookFullScreen, useWorkbookIdOnChange, useWorkbookLoaded, useWorkbookPageHeight, useWorkbookPageSelectedNode, useWorkbookPivotTableCellSelect, useWorkbookPublished, useWorkbookVariables };
178
+ export { createWorkbookBookmark, getWorkbookVariables, updateWorkbookBookmark, updateWorkbookFullscreen, updateWorkbookSelectedNodeId, updateWorkbookSharingLink, updateWorkbookVariables, useActionOutbound, usePageHeight, useSigmaIframe, useTableCellSelect, useUrlOnChange, useVariableChange, useWorkbookBookmarkOnChange, useWorkbookBookmarkOnCreate, useWorkbookChartError, useWorkbookChartValueSelect, useWorkbookCurrentVariables, useWorkbookDataLoaded, useWorkbookError, useWorkbookExploreKeyOnChange, useWorkbookFullScreen, useWorkbookIdOnChange, useWorkbookLoaded, useWorkbookPageHeight, useWorkbookPivotTableCellSelect, useWorkbookPublished, useWorkbookSelectedNode, useWorkbookVariables };
package/dist/index.js CHANGED
@@ -27,6 +27,7 @@ __export(src_exports, {
27
27
  updateWorkbookSelectedNodeId: () => updateWorkbookSelectedNodeId,
28
28
  updateWorkbookSharingLink: () => updateWorkbookSharingLink,
29
29
  updateWorkbookVariables: () => updateWorkbookVariables,
30
+ useActionOutbound: () => useActionOutbound,
30
31
  usePageHeight: () => usePageHeight,
31
32
  useSigmaIframe: () => useSigmaIframe,
32
33
  useTableCellSelect: () => useTableCellSelect,
@@ -44,9 +45,9 @@ __export(src_exports, {
44
45
  useWorkbookIdOnChange: () => useWorkbookIdOnChange,
45
46
  useWorkbookLoaded: () => useWorkbookLoaded,
46
47
  useWorkbookPageHeight: () => useWorkbookPageHeight,
47
- useWorkbookPageSelectedNode: () => useWorkbookPageSelectedNode,
48
48
  useWorkbookPivotTableCellSelect: () => useWorkbookPivotTableCellSelect,
49
49
  useWorkbookPublished: () => useWorkbookPublished,
50
+ useWorkbookSelectedNode: () => useWorkbookSelectedNode,
50
51
  useWorkbookVariables: () => useWorkbookVariables
51
52
  });
52
53
  module.exports = __toCommonJS(src_exports);
@@ -161,13 +162,13 @@ function useWorkbookPageHeight(iframeRef, onPageHeight) {
161
162
  return () => window.removeEventListener("message", listener);
162
163
  }, [iframeRef, onPageHeight]);
163
164
  }
164
- function useWorkbookPageSelectedNode(iframeRef, onPageSelectedNode) {
165
+ function useWorkbookSelectedNode(iframeRef, onPageSelectedNode) {
165
166
  (0, import_react.useEffect)(() => {
166
167
  const listener = (event) => {
167
168
  if (!iframeRef.current) {
168
169
  return;
169
170
  }
170
- (0, import_embed_sdk.workbookPageSelectedNodeListener)(
171
+ (0, import_embed_sdk.workbookSelectedNodeListener)(
171
172
  event,
172
173
  iframeRef.current,
173
174
  onPageSelectedNode
@@ -309,12 +310,24 @@ function useWorkbookIdOnChange(iframeRef, onIdChange) {
309
310
  return () => window.removeEventListener("message", listener);
310
311
  }, [iframeRef, onIdChange]);
311
312
  }
313
+ function useActionOutbound(iframeRef, onActionOutbound) {
314
+ (0, import_react.useEffect)(() => {
315
+ const listener = (event) => {
316
+ if (!iframeRef.current) {
317
+ return;
318
+ }
319
+ (0, import_embed_sdk.actionOutboundListener)(event, iframeRef.current, onActionOutbound);
320
+ };
321
+ window.addEventListener("message", listener);
322
+ return () => window.removeEventListener("message", listener);
323
+ }, [iframeRef, onActionOutbound]);
324
+ }
312
325
 
313
326
  // src/use-sigma-iframe.ts
314
327
  function useSigmaIframe() {
315
328
  const iframeRef = (0, import_react2.useRef)(null);
316
329
  const [loading, setLoading] = (0, import_react2.useState)(true);
317
- const [variables, setVariables] = (0, import_react2.useState)();
330
+ const [variables, setVariables] = (0, import_react2.useState)(void 0);
318
331
  const [error, setError] = (0, import_react2.useState)(null);
319
332
  const loadingCallback = (0, import_react2.useCallback)((event) => {
320
333
  setLoading(false);
@@ -445,6 +458,7 @@ function updateWorkbookSharingLink(iframeRef, sharingLink, sharingExplorationLin
445
458
  updateWorkbookSelectedNodeId,
446
459
  updateWorkbookSharingLink,
447
460
  updateWorkbookVariables,
461
+ useActionOutbound,
448
462
  usePageHeight,
449
463
  useSigmaIframe,
450
464
  useTableCellSelect,
@@ -462,8 +476,8 @@ function updateWorkbookSharingLink(iframeRef, sharingLink, sharingExplorationLin
462
476
  useWorkbookIdOnChange,
463
477
  useWorkbookLoaded,
464
478
  useWorkbookPageHeight,
465
- useWorkbookPageSelectedNode,
466
479
  useWorkbookPivotTableCellSelect,
467
480
  useWorkbookPublished,
481
+ useWorkbookSelectedNode,
468
482
  useWorkbookVariables
469
483
  });
package/dist/index.mjs CHANGED
@@ -12,7 +12,7 @@ import {
12
12
  workbookFullScreenListener,
13
13
  workbookPageHeightListener,
14
14
  workbookChartValueSelectListener,
15
- workbookPageSelectedNodeListener,
15
+ workbookSelectedNodeListener,
16
16
  workbookPivotTableCellSelectListener,
17
17
  workbookBookmarkCreateListener,
18
18
  workbookCurrentVariablesListener,
@@ -20,7 +20,8 @@ import {
20
20
  workbookExploreKeyOnChangeListener,
21
21
  workbookBookmarkOnChangeListener,
22
22
  urlOnChangeListener,
23
- workbookIdOnChangeListener
23
+ workbookIdOnChangeListener,
24
+ actionOutboundListener
24
25
  } from "@sigmacomputing/embed-sdk";
25
26
  import { useEffect } from "react";
26
27
  function useWorkbookLoaded(iframeRef, onLoaded) {
@@ -127,13 +128,13 @@ function useWorkbookPageHeight(iframeRef, onPageHeight) {
127
128
  return () => window.removeEventListener("message", listener);
128
129
  }, [iframeRef, onPageHeight]);
129
130
  }
130
- function useWorkbookPageSelectedNode(iframeRef, onPageSelectedNode) {
131
+ function useWorkbookSelectedNode(iframeRef, onPageSelectedNode) {
131
132
  useEffect(() => {
132
133
  const listener = (event) => {
133
134
  if (!iframeRef.current) {
134
135
  return;
135
136
  }
136
- workbookPageSelectedNodeListener(
137
+ workbookSelectedNodeListener(
137
138
  event,
138
139
  iframeRef.current,
139
140
  onPageSelectedNode
@@ -275,12 +276,24 @@ function useWorkbookIdOnChange(iframeRef, onIdChange) {
275
276
  return () => window.removeEventListener("message", listener);
276
277
  }, [iframeRef, onIdChange]);
277
278
  }
279
+ function useActionOutbound(iframeRef, onActionOutbound) {
280
+ useEffect(() => {
281
+ const listener = (event) => {
282
+ if (!iframeRef.current) {
283
+ return;
284
+ }
285
+ actionOutboundListener(event, iframeRef.current, onActionOutbound);
286
+ };
287
+ window.addEventListener("message", listener);
288
+ return () => window.removeEventListener("message", listener);
289
+ }, [iframeRef, onActionOutbound]);
290
+ }
278
291
 
279
292
  // src/use-sigma-iframe.ts
280
293
  function useSigmaIframe() {
281
294
  const iframeRef = useRef(null);
282
295
  const [loading, setLoading] = useState(true);
283
- const [variables, setVariables] = useState();
296
+ const [variables, setVariables] = useState(void 0);
284
297
  const [error, setError] = useState(null);
285
298
  const loadingCallback = useCallback((event) => {
286
299
  setLoading(false);
@@ -422,6 +435,7 @@ export {
422
435
  updateWorkbookSelectedNodeId,
423
436
  updateWorkbookSharingLink,
424
437
  updateWorkbookVariables,
438
+ useActionOutbound,
425
439
  usePageHeight,
426
440
  useSigmaIframe,
427
441
  useTableCellSelect,
@@ -439,8 +453,8 @@ export {
439
453
  useWorkbookIdOnChange,
440
454
  useWorkbookLoaded,
441
455
  useWorkbookPageHeight,
442
- useWorkbookPageSelectedNode,
443
456
  useWorkbookPivotTableCellSelect,
444
457
  useWorkbookPublished,
458
+ useWorkbookSelectedNode,
445
459
  useWorkbookVariables
446
460
  };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@sigmacomputing/react-embed-sdk",
3
3
  "author": "sigmacomputing",
4
- "version": "0.3.3",
4
+ "version": "0.5.0",
5
5
  "description": "React JavaScript SDK to interact with Sigma Computing's Embed API",
6
6
  "license": "MIT",
7
7
  "repository": {
@@ -39,7 +39,7 @@
39
39
  "@sigmacomputing/typescript-config": "0.0.0"
40
40
  },
41
41
  "dependencies": {
42
- "@sigmacomputing/embed-sdk": "0.3.3"
42
+ "@sigmacomputing/embed-sdk": "0.5.0"
43
43
  },
44
44
  "scripts": {
45
45
  "prepublish": "pnpm build",