@sigmacomputing/react-embed-sdk 0.2.1 → 0.2.3

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/dist/index.d.mts CHANGED
@@ -1,8 +1,35 @@
1
- import { WorkbookLoadedEvent, WorkbookErrorEvent } from '@sigmacomputing/embed-sdk';
1
+ import { WorkbookErrorEvent, WorkbookLoadedEvent, WorkbookDataLoadedEvent, WorkbookVariableOnChangeEvent, WorkbookTableCellSelectEvent, WorkbookPublishedEvent, WorkbookFullScreenEvent, WorkbookPageHeightEvent, WorkbookPageSelectedNodeEvent, WorkbookPivotTableCellSelectEvent, WorkbookChartValueSelectEvent, WorkbookCurrentVariablesEvent, WorkbookBookmarkCreateEvent, WorkbookChartErrorEvent, WorkbookExploreKeyOnChangeEvent, WorkbookBookmarkOnChangeEvent, UrlOnChangeEvent, WorkbookIdOnChangeEvent } from '@sigmacomputing/embed-sdk';
2
2
  export * from '@sigmacomputing/embed-sdk';
3
+ import * as react from 'react';
4
+
5
+ /**
6
+ * A hook that returns a ref to be used with an iframe element, and the loading and error state of the embed.
7
+ *
8
+ * @example
9
+ * ```
10
+ * function MyEmbed() {
11
+ * const { iframeRef, loading, error } = useSigmaIframe();
12
+ * return (
13
+ * <>
14
+ * {loading && <p>Loading...</p>}
15
+ * {error && <p>Error: {error.message}</p>}
16
+ * <iframe
17
+ * className={loading || error ? "hidden" : "show"}
18
+ * ref={iframeRef}
19
+ * src="https://app.sigmacomputing.com/embed"
20
+ * />
21
+ * </>
22
+ * );
23
+ * }
24
+ * ```
25
+ */
26
+ declare function useSigmaIframe(): {
27
+ iframeRef: react.RefObject<HTMLIFrameElement>;
28
+ loading: boolean;
29
+ error: WorkbookErrorEvent | null;
30
+ variables: Record<string, string> | null | undefined;
31
+ };
3
32
 
4
- type OnLoaded = (event: WorkbookLoadedEvent) => void;
5
- type OnError = (event: WorkbookErrorEvent) => void;
6
33
  /**
7
34
  * Listen for a workbook loaded event, and execute the given callback when it occurs.
8
35
  *
@@ -17,14 +44,14 @@ type OnError = (event: WorkbookErrorEvent) => void;
17
44
  * <iframe
18
45
  * className{loading ? "hidden" : "show"}
19
46
  * ref={iframeRef}
20
- * src="https://sigmacomputing.app/embed"
47
+ * src="https://app.sigmacomputing.com/embed"
21
48
  * />
22
49
  * );
23
50
  * }
24
51
  * ```
25
52
  *
26
53
  */
27
- declare function useWorkbookLoaded(iframeRef: React.RefObject<HTMLIFrameElement>, onLoaded: OnLoaded): void;
54
+ declare function useWorkbookLoaded(iframeRef: React.RefObject<HTMLIFrameElement>, onLoaded: (event: WorkbookLoadedEvent) => void): void;
28
55
  /**
29
56
  * Listen for a workbook error event, and execute the given callback when it occurs.
30
57
  *
@@ -40,13 +67,47 @@ declare function useWorkbookLoaded(iframeRef: React.RefObject<HTMLIFrameElement>
40
67
  * return (
41
68
  * <iframe
42
69
  * ref={iframeRef}
43
- * src="https://sigmacomputing.app/embed"
70
+ * src="https://app.sigmacomputing.com/embed"
44
71
  * />
45
72
  * );
46
73
  * }
47
74
  * ```
48
75
  *
49
76
  */
50
- declare function useWorkbookError(iframeRef: React.RefObject<HTMLIFrameElement>, onError: OnError): void;
77
+ declare function useWorkbookError(iframeRef: React.RefObject<HTMLIFrameElement>, onError: (event: WorkbookErrorEvent) => void): void;
78
+ /**
79
+ * Listen for a workbook data loaded event, and execute the given callback when it occurs.
80
+ *
81
+ * @example
82
+ * ```
83
+ * function MyEmbed() {
84
+ * const [dataLoaded, setDataLoaded] = useState(false);
85
+ * const onDataLoaded = useCallback(() => setDataLoaded(true), []);
86
+ * const iframeRef = useRef<HTMLIFrameElement>(null);
87
+ * return (
88
+ * <iframe
89
+ * ref={iframeRef}
90
+ * src="https://app.sigmacomputing.com/embed"
91
+ * />
92
+ * );
93
+ * }
94
+ * ```
95
+ */
96
+ declare function useWorkbookDataLoaded(iframeRef: React.RefObject<HTMLIFrameElement>, onDataLoaded: (event: WorkbookDataLoadedEvent) => void): void;
97
+ declare function useVariableChange(iframeRef: React.RefObject<HTMLIFrameElement>, onVariableChange: (event: WorkbookVariableOnChangeEvent) => void): void;
98
+ declare function useTableCellSelect(iframeRef: React.RefObject<HTMLIFrameElement>, onTableCellSelect: (event: WorkbookTableCellSelectEvent) => void): void;
99
+ declare function useWorkbookPublished(iframeRef: React.RefObject<HTMLIFrameElement>, onWorkbookPublished: (event: WorkbookPublishedEvent) => void): void;
100
+ declare function useWorkbookFullScreen(iframeRef: React.RefObject<HTMLIFrameElement>, onFullScreen: (event: WorkbookFullScreenEvent) => void): void;
101
+ declare function useWorkbookPageHeight(iframeRef: React.RefObject<HTMLIFrameElement>, onPageHeight: (event: WorkbookPageHeightEvent) => void): void;
102
+ declare function useWorkbookPageSelectedNode(iframeRef: React.RefObject<HTMLIFrameElement>, onPageSelectedNode: (event: WorkbookPageSelectedNodeEvent) => void): void;
103
+ declare function useWorkbookPivotTableCellSelect(iframeRef: React.RefObject<HTMLIFrameElement>, onPivotTableCellSelect: (event: WorkbookPivotTableCellSelectEvent) => void): void;
104
+ declare function useWorkbookChartValueSelect(iframeRef: React.RefObject<HTMLIFrameElement>, onChartValueSelect: (event: WorkbookChartValueSelectEvent) => void): void;
105
+ declare function useWorkbookCurrentVariables(iframeRef: React.RefObject<HTMLIFrameElement>, onCurrentVariables: (event: WorkbookCurrentVariablesEvent) => void): void;
106
+ declare function useWorkbookBookmarkOnCreate(iframeRef: React.RefObject<HTMLIFrameElement>, onBookmarkCreate: (event: WorkbookBookmarkCreateEvent) => void): void;
107
+ declare function useWorkbookChartError(iframeRef: React.RefObject<HTMLIFrameElement>, onChartError: (event: WorkbookChartErrorEvent) => void): void;
108
+ declare function useWorkbookExploreKeyOnChange(iframeRef: React.RefObject<HTMLIFrameElement>, onExploreKeyChange: (event: WorkbookExploreKeyOnChangeEvent) => void): void;
109
+ declare function useWorkbookBookmarkOnChange(iframeRef: React.RefObject<HTMLIFrameElement>, onBookmarkChange: (event: WorkbookBookmarkOnChangeEvent) => void): void;
110
+ declare function useUrlOnChange(iframeRef: React.RefObject<HTMLIFrameElement>, onUrlChange: (event: UrlOnChangeEvent) => void): void;
111
+ declare function useWorkbookIdOnChange(iframeRef: React.RefObject<HTMLIFrameElement>, onIdChange: (event: WorkbookIdOnChangeEvent) => void): void;
51
112
 
52
- export { type OnError, type OnLoaded, useWorkbookError, useWorkbookLoaded };
113
+ export { useSigmaIframe, useTableCellSelect, useUrlOnChange, useVariableChange, useWorkbookBookmarkOnChange, useWorkbookBookmarkOnCreate, useWorkbookChartError, useWorkbookChartValueSelect, useWorkbookCurrentVariables, useWorkbookDataLoaded, useWorkbookError, useWorkbookExploreKeyOnChange, useWorkbookFullScreen, useWorkbookIdOnChange, useWorkbookLoaded, useWorkbookPageHeight, useWorkbookPageSelectedNode, useWorkbookPivotTableCellSelect, useWorkbookPublished };
package/dist/index.d.ts CHANGED
@@ -1,8 +1,35 @@
1
- import { WorkbookLoadedEvent, WorkbookErrorEvent } from '@sigmacomputing/embed-sdk';
1
+ import { WorkbookErrorEvent, WorkbookLoadedEvent, WorkbookDataLoadedEvent, WorkbookVariableOnChangeEvent, WorkbookTableCellSelectEvent, WorkbookPublishedEvent, WorkbookFullScreenEvent, WorkbookPageHeightEvent, WorkbookPageSelectedNodeEvent, WorkbookPivotTableCellSelectEvent, WorkbookChartValueSelectEvent, WorkbookCurrentVariablesEvent, WorkbookBookmarkCreateEvent, WorkbookChartErrorEvent, WorkbookExploreKeyOnChangeEvent, WorkbookBookmarkOnChangeEvent, UrlOnChangeEvent, WorkbookIdOnChangeEvent } from '@sigmacomputing/embed-sdk';
2
2
  export * from '@sigmacomputing/embed-sdk';
3
+ import * as react from 'react';
4
+
5
+ /**
6
+ * A hook that returns a ref to be used with an iframe element, and the loading and error state of the embed.
7
+ *
8
+ * @example
9
+ * ```
10
+ * function MyEmbed() {
11
+ * const { iframeRef, loading, error } = useSigmaIframe();
12
+ * return (
13
+ * <>
14
+ * {loading && <p>Loading...</p>}
15
+ * {error && <p>Error: {error.message}</p>}
16
+ * <iframe
17
+ * className={loading || error ? "hidden" : "show"}
18
+ * ref={iframeRef}
19
+ * src="https://app.sigmacomputing.com/embed"
20
+ * />
21
+ * </>
22
+ * );
23
+ * }
24
+ * ```
25
+ */
26
+ declare function useSigmaIframe(): {
27
+ iframeRef: react.RefObject<HTMLIFrameElement>;
28
+ loading: boolean;
29
+ error: WorkbookErrorEvent | null;
30
+ variables: Record<string, string> | null | undefined;
31
+ };
3
32
 
4
- type OnLoaded = (event: WorkbookLoadedEvent) => void;
5
- type OnError = (event: WorkbookErrorEvent) => void;
6
33
  /**
7
34
  * Listen for a workbook loaded event, and execute the given callback when it occurs.
8
35
  *
@@ -17,14 +44,14 @@ type OnError = (event: WorkbookErrorEvent) => void;
17
44
  * <iframe
18
45
  * className{loading ? "hidden" : "show"}
19
46
  * ref={iframeRef}
20
- * src="https://sigmacomputing.app/embed"
47
+ * src="https://app.sigmacomputing.com/embed"
21
48
  * />
22
49
  * );
23
50
  * }
24
51
  * ```
25
52
  *
26
53
  */
27
- declare function useWorkbookLoaded(iframeRef: React.RefObject<HTMLIFrameElement>, onLoaded: OnLoaded): void;
54
+ declare function useWorkbookLoaded(iframeRef: React.RefObject<HTMLIFrameElement>, onLoaded: (event: WorkbookLoadedEvent) => void): void;
28
55
  /**
29
56
  * Listen for a workbook error event, and execute the given callback when it occurs.
30
57
  *
@@ -40,13 +67,47 @@ declare function useWorkbookLoaded(iframeRef: React.RefObject<HTMLIFrameElement>
40
67
  * return (
41
68
  * <iframe
42
69
  * ref={iframeRef}
43
- * src="https://sigmacomputing.app/embed"
70
+ * src="https://app.sigmacomputing.com/embed"
44
71
  * />
45
72
  * );
46
73
  * }
47
74
  * ```
48
75
  *
49
76
  */
50
- declare function useWorkbookError(iframeRef: React.RefObject<HTMLIFrameElement>, onError: OnError): void;
77
+ declare function useWorkbookError(iframeRef: React.RefObject<HTMLIFrameElement>, onError: (event: WorkbookErrorEvent) => void): void;
78
+ /**
79
+ * Listen for a workbook data loaded event, and execute the given callback when it occurs.
80
+ *
81
+ * @example
82
+ * ```
83
+ * function MyEmbed() {
84
+ * const [dataLoaded, setDataLoaded] = useState(false);
85
+ * const onDataLoaded = useCallback(() => setDataLoaded(true), []);
86
+ * const iframeRef = useRef<HTMLIFrameElement>(null);
87
+ * return (
88
+ * <iframe
89
+ * ref={iframeRef}
90
+ * src="https://app.sigmacomputing.com/embed"
91
+ * />
92
+ * );
93
+ * }
94
+ * ```
95
+ */
96
+ declare function useWorkbookDataLoaded(iframeRef: React.RefObject<HTMLIFrameElement>, onDataLoaded: (event: WorkbookDataLoadedEvent) => void): void;
97
+ declare function useVariableChange(iframeRef: React.RefObject<HTMLIFrameElement>, onVariableChange: (event: WorkbookVariableOnChangeEvent) => void): void;
98
+ declare function useTableCellSelect(iframeRef: React.RefObject<HTMLIFrameElement>, onTableCellSelect: (event: WorkbookTableCellSelectEvent) => void): void;
99
+ declare function useWorkbookPublished(iframeRef: React.RefObject<HTMLIFrameElement>, onWorkbookPublished: (event: WorkbookPublishedEvent) => void): void;
100
+ declare function useWorkbookFullScreen(iframeRef: React.RefObject<HTMLIFrameElement>, onFullScreen: (event: WorkbookFullScreenEvent) => void): void;
101
+ declare function useWorkbookPageHeight(iframeRef: React.RefObject<HTMLIFrameElement>, onPageHeight: (event: WorkbookPageHeightEvent) => void): void;
102
+ declare function useWorkbookPageSelectedNode(iframeRef: React.RefObject<HTMLIFrameElement>, onPageSelectedNode: (event: WorkbookPageSelectedNodeEvent) => void): void;
103
+ declare function useWorkbookPivotTableCellSelect(iframeRef: React.RefObject<HTMLIFrameElement>, onPivotTableCellSelect: (event: WorkbookPivotTableCellSelectEvent) => void): void;
104
+ declare function useWorkbookChartValueSelect(iframeRef: React.RefObject<HTMLIFrameElement>, onChartValueSelect: (event: WorkbookChartValueSelectEvent) => void): void;
105
+ declare function useWorkbookCurrentVariables(iframeRef: React.RefObject<HTMLIFrameElement>, onCurrentVariables: (event: WorkbookCurrentVariablesEvent) => void): void;
106
+ declare function useWorkbookBookmarkOnCreate(iframeRef: React.RefObject<HTMLIFrameElement>, onBookmarkCreate: (event: WorkbookBookmarkCreateEvent) => void): void;
107
+ declare function useWorkbookChartError(iframeRef: React.RefObject<HTMLIFrameElement>, onChartError: (event: WorkbookChartErrorEvent) => void): void;
108
+ declare function useWorkbookExploreKeyOnChange(iframeRef: React.RefObject<HTMLIFrameElement>, onExploreKeyChange: (event: WorkbookExploreKeyOnChangeEvent) => void): void;
109
+ declare function useWorkbookBookmarkOnChange(iframeRef: React.RefObject<HTMLIFrameElement>, onBookmarkChange: (event: WorkbookBookmarkOnChangeEvent) => void): void;
110
+ declare function useUrlOnChange(iframeRef: React.RefObject<HTMLIFrameElement>, onUrlChange: (event: UrlOnChangeEvent) => void): void;
111
+ declare function useWorkbookIdOnChange(iframeRef: React.RefObject<HTMLIFrameElement>, onIdChange: (event: WorkbookIdOnChangeEvent) => void): void;
51
112
 
52
- export { type OnError, type OnLoaded, useWorkbookError, useWorkbookLoaded };
113
+ export { useSigmaIframe, useTableCellSelect, useUrlOnChange, useVariableChange, useWorkbookBookmarkOnChange, useWorkbookBookmarkOnCreate, useWorkbookChartError, useWorkbookChartValueSelect, useWorkbookCurrentVariables, useWorkbookDataLoaded, useWorkbookError, useWorkbookExploreKeyOnChange, useWorkbookFullScreen, useWorkbookIdOnChange, useWorkbookLoaded, useWorkbookPageHeight, useWorkbookPageSelectedNode, useWorkbookPivotTableCellSelect, useWorkbookPublished };
package/dist/index.js CHANGED
@@ -20,12 +20,34 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
20
20
  // src/index.ts
21
21
  var src_exports = {};
22
22
  __export(src_exports, {
23
+ useSigmaIframe: () => useSigmaIframe,
24
+ useTableCellSelect: () => useTableCellSelect,
25
+ useUrlOnChange: () => useUrlOnChange,
26
+ useVariableChange: () => useVariableChange,
27
+ useWorkbookBookmarkOnChange: () => useWorkbookBookmarkOnChange,
28
+ useWorkbookBookmarkOnCreate: () => useWorkbookBookmarkOnCreate,
29
+ useWorkbookChartError: () => useWorkbookChartError,
30
+ useWorkbookChartValueSelect: () => useWorkbookChartValueSelect,
31
+ useWorkbookCurrentVariables: () => useWorkbookCurrentVariables,
32
+ useWorkbookDataLoaded: () => useWorkbookDataLoaded,
23
33
  useWorkbookError: () => useWorkbookError,
24
- useWorkbookLoaded: () => useWorkbookLoaded
34
+ useWorkbookExploreKeyOnChange: () => useWorkbookExploreKeyOnChange,
35
+ useWorkbookFullScreen: () => useWorkbookFullScreen,
36
+ useWorkbookIdOnChange: () => useWorkbookIdOnChange,
37
+ useWorkbookLoaded: () => useWorkbookLoaded,
38
+ useWorkbookPageHeight: () => useWorkbookPageHeight,
39
+ useWorkbookPageSelectedNode: () => useWorkbookPageSelectedNode,
40
+ useWorkbookPivotTableCellSelect: () => useWorkbookPivotTableCellSelect,
41
+ useWorkbookPublished: () => useWorkbookPublished
25
42
  });
26
43
  module.exports = __toCommonJS(src_exports);
27
- var import_react = require("react");
44
+
45
+ // src/use-sigma-iframe.ts
46
+ var import_react2 = require("react");
47
+
48
+ // src/wrappers.ts
28
49
  var import_embed_sdk = require("@sigmacomputing/embed-sdk");
50
+ var import_react = require("react");
29
51
  function useWorkbookLoaded(iframeRef, onLoaded) {
30
52
  (0, import_react.useEffect)(() => {
31
53
  const listener = (event) => {
@@ -50,8 +72,268 @@ function useWorkbookError(iframeRef, onError) {
50
72
  return () => window.removeEventListener("message", listener);
51
73
  }, [iframeRef, onError]);
52
74
  }
75
+ function useWorkbookDataLoaded(iframeRef, onDataLoaded) {
76
+ (0, import_react.useEffect)(() => {
77
+ const listener = (event) => {
78
+ if (!iframeRef.current) {
79
+ return;
80
+ }
81
+ (0, import_embed_sdk.workbookDataLoadedListener)(event, iframeRef.current, onDataLoaded);
82
+ };
83
+ window.addEventListener("message", listener);
84
+ return () => window.removeEventListener("message", listener);
85
+ }, [iframeRef, onDataLoaded]);
86
+ }
87
+ function useVariableChange(iframeRef, onVariableChange) {
88
+ (0, import_react.useEffect)(() => {
89
+ const listener = (event) => {
90
+ if (!iframeRef.current) {
91
+ return;
92
+ }
93
+ (0, import_embed_sdk.workbookVariableListener)(event, iframeRef.current, onVariableChange);
94
+ };
95
+ window.addEventListener("message", listener);
96
+ return () => window.removeEventListener("message", listener);
97
+ }, [iframeRef, onVariableChange]);
98
+ }
99
+ function useTableCellSelect(iframeRef, onTableCellSelect) {
100
+ (0, import_react.useEffect)(() => {
101
+ const listener = (event) => {
102
+ if (!iframeRef.current) {
103
+ return;
104
+ }
105
+ (0, import_embed_sdk.workbookTableCellSelectListener)(
106
+ event,
107
+ iframeRef.current,
108
+ onTableCellSelect
109
+ );
110
+ };
111
+ window.addEventListener("message", listener);
112
+ return () => window.removeEventListener("message", listener);
113
+ }, [iframeRef, onTableCellSelect]);
114
+ }
115
+ function useWorkbookPublished(iframeRef, onWorkbookPublished) {
116
+ (0, import_react.useEffect)(() => {
117
+ const listener = (event) => {
118
+ if (!iframeRef.current) {
119
+ return;
120
+ }
121
+ (0, import_embed_sdk.workbookPublishedListener)(event, iframeRef.current, onWorkbookPublished);
122
+ };
123
+ window.addEventListener("message", listener);
124
+ return () => window.removeEventListener("message", listener);
125
+ }, [iframeRef, onWorkbookPublished]);
126
+ }
127
+ function useWorkbookFullScreen(iframeRef, onFullScreen) {
128
+ (0, import_react.useEffect)(() => {
129
+ const listener = (event) => {
130
+ if (!iframeRef.current) {
131
+ return;
132
+ }
133
+ (0, import_embed_sdk.workbookFullScreenListener)(event, iframeRef.current, onFullScreen);
134
+ };
135
+ window.addEventListener("message", listener);
136
+ return () => window.removeEventListener("message", listener);
137
+ }, [iframeRef, onFullScreen]);
138
+ }
139
+ function useWorkbookPageHeight(iframeRef, onPageHeight) {
140
+ (0, import_react.useEffect)(() => {
141
+ const listener = (event) => {
142
+ if (!iframeRef.current) {
143
+ return;
144
+ }
145
+ (0, import_embed_sdk.workbookPageHeightListener)(event, iframeRef.current, onPageHeight);
146
+ };
147
+ window.addEventListener("message", listener);
148
+ return () => window.removeEventListener("message", listener);
149
+ }, [iframeRef, onPageHeight]);
150
+ }
151
+ function useWorkbookPageSelectedNode(iframeRef, onPageSelectedNode) {
152
+ (0, import_react.useEffect)(() => {
153
+ const listener = (event) => {
154
+ if (!iframeRef.current) {
155
+ return;
156
+ }
157
+ (0, import_embed_sdk.workbookPageSelectedNodeListener)(
158
+ event,
159
+ iframeRef.current,
160
+ onPageSelectedNode
161
+ );
162
+ };
163
+ window.addEventListener("message", listener);
164
+ return () => window.removeEventListener("message", listener);
165
+ }, [iframeRef, onPageSelectedNode]);
166
+ }
167
+ function useWorkbookPivotTableCellSelect(iframeRef, onPivotTableCellSelect) {
168
+ (0, import_react.useEffect)(() => {
169
+ const listener = (event) => {
170
+ if (!iframeRef.current) {
171
+ return;
172
+ }
173
+ (0, import_embed_sdk.workbookPivotTableCellSelectListener)(
174
+ event,
175
+ iframeRef.current,
176
+ onPivotTableCellSelect
177
+ );
178
+ };
179
+ window.addEventListener("message", listener);
180
+ return () => window.removeEventListener("message", listener);
181
+ }, [iframeRef, onPivotTableCellSelect]);
182
+ }
183
+ function useWorkbookChartValueSelect(iframeRef, onChartValueSelect) {
184
+ (0, import_react.useEffect)(() => {
185
+ const listener = (event) => {
186
+ if (!iframeRef.current) {
187
+ return;
188
+ }
189
+ (0, import_embed_sdk.workbookChartValueSelectListener)(
190
+ event,
191
+ iframeRef.current,
192
+ onChartValueSelect
193
+ );
194
+ };
195
+ window.addEventListener("message", listener);
196
+ return () => window.removeEventListener("message", listener);
197
+ }, [iframeRef, onChartValueSelect]);
198
+ }
199
+ function useWorkbookCurrentVariables(iframeRef, onCurrentVariables) {
200
+ (0, import_react.useEffect)(() => {
201
+ const listener = (event) => {
202
+ if (!iframeRef.current) {
203
+ return;
204
+ }
205
+ (0, import_embed_sdk.workbookCurrentVariablesListener)(
206
+ event,
207
+ iframeRef.current,
208
+ onCurrentVariables
209
+ );
210
+ };
211
+ window.addEventListener("message", listener);
212
+ return () => window.removeEventListener("message", listener);
213
+ }, [iframeRef, onCurrentVariables]);
214
+ }
215
+ function useWorkbookBookmarkOnCreate(iframeRef, onBookmarkCreate) {
216
+ (0, import_react.useEffect)(() => {
217
+ const listener = (event) => {
218
+ if (!iframeRef.current) {
219
+ return;
220
+ }
221
+ (0, import_embed_sdk.workbookBookmarkCreateListener)(
222
+ event,
223
+ iframeRef.current,
224
+ onBookmarkCreate
225
+ );
226
+ };
227
+ window.addEventListener("message", listener);
228
+ return () => window.removeEventListener("message", listener);
229
+ }, [iframeRef, onBookmarkCreate]);
230
+ }
231
+ function useWorkbookChartError(iframeRef, onChartError) {
232
+ (0, import_react.useEffect)(() => {
233
+ const listener = (event) => {
234
+ if (!iframeRef.current) {
235
+ return;
236
+ }
237
+ (0, import_embed_sdk.workbookChartErrorListener)(event, iframeRef.current, onChartError);
238
+ };
239
+ window.addEventListener("message", listener);
240
+ return () => window.removeEventListener("message", listener);
241
+ }, [iframeRef, onChartError]);
242
+ }
243
+ function useWorkbookExploreKeyOnChange(iframeRef, onExploreKeyChange) {
244
+ (0, import_react.useEffect)(() => {
245
+ const listener = (event) => {
246
+ if (!iframeRef.current) {
247
+ return;
248
+ }
249
+ (0, import_embed_sdk.workbookExploreKeyOnChangeListener)(
250
+ event,
251
+ iframeRef.current,
252
+ onExploreKeyChange
253
+ );
254
+ };
255
+ window.addEventListener("message", listener);
256
+ return () => window.removeEventListener("message", listener);
257
+ }, [iframeRef, onExploreKeyChange]);
258
+ }
259
+ function useWorkbookBookmarkOnChange(iframeRef, onBookmarkChange) {
260
+ (0, import_react.useEffect)(() => {
261
+ const listener = (event) => {
262
+ if (!iframeRef.current) {
263
+ return;
264
+ }
265
+ (0, import_embed_sdk.workbookBookmarkOnChangeListener)(
266
+ event,
267
+ iframeRef.current,
268
+ onBookmarkChange
269
+ );
270
+ };
271
+ window.addEventListener("message", listener);
272
+ return () => window.removeEventListener("message", listener);
273
+ }, [iframeRef, onBookmarkChange]);
274
+ }
275
+ function useUrlOnChange(iframeRef, onUrlChange) {
276
+ (0, import_react.useEffect)(() => {
277
+ const listener = (event) => {
278
+ if (!iframeRef.current) {
279
+ return;
280
+ }
281
+ (0, import_embed_sdk.urlOnChangeListener)(event, iframeRef.current, onUrlChange);
282
+ };
283
+ window.addEventListener("message", listener);
284
+ return () => window.removeEventListener("message", listener);
285
+ }, [iframeRef, onUrlChange]);
286
+ }
287
+ function useWorkbookIdOnChange(iframeRef, onIdChange) {
288
+ (0, import_react.useEffect)(() => {
289
+ const listener = (event) => {
290
+ if (!iframeRef.current) {
291
+ return;
292
+ }
293
+ (0, import_embed_sdk.workbookIdOnChangeListener)(event, iframeRef.current, onIdChange);
294
+ };
295
+ window.addEventListener("message", listener);
296
+ return () => window.removeEventListener("message", listener);
297
+ }, [iframeRef, onIdChange]);
298
+ }
299
+
300
+ // src/use-sigma-iframe.ts
301
+ function useSigmaIframe() {
302
+ const iframeRef = (0, import_react2.useRef)(null);
303
+ const [loading, setLoading] = (0, import_react2.useState)(true);
304
+ const [variables, setVariables] = (0, import_react2.useState)();
305
+ const [error, setError] = (0, import_react2.useState)(null);
306
+ const loadingCallback = (0, import_react2.useCallback)((event) => {
307
+ setLoading(false);
308
+ setVariables(event.workbook.variables);
309
+ }, []);
310
+ const errorCallback = (0, import_react2.useCallback)((event) => {
311
+ setError(event);
312
+ setLoading(false);
313
+ }, []);
314
+ useWorkbookLoaded(iframeRef, loadingCallback);
315
+ useWorkbookError(iframeRef, errorCallback);
316
+ return { iframeRef, loading, error, variables };
317
+ }
53
318
  // Annotate the CommonJS export names for ESM import in node:
54
319
  0 && (module.exports = {
320
+ useSigmaIframe,
321
+ useTableCellSelect,
322
+ useUrlOnChange,
323
+ useVariableChange,
324
+ useWorkbookBookmarkOnChange,
325
+ useWorkbookBookmarkOnCreate,
326
+ useWorkbookChartError,
327
+ useWorkbookChartValueSelect,
328
+ useWorkbookCurrentVariables,
329
+ useWorkbookDataLoaded,
55
330
  useWorkbookError,
56
- useWorkbookLoaded
331
+ useWorkbookExploreKeyOnChange,
332
+ useWorkbookFullScreen,
333
+ useWorkbookIdOnChange,
334
+ useWorkbookLoaded,
335
+ useWorkbookPageHeight,
336
+ useWorkbookPageSelectedNode,
337
+ useWorkbookPivotTableCellSelect,
338
+ useWorkbookPublished
57
339
  });
package/dist/index.mjs CHANGED
@@ -1,9 +1,28 @@
1
- // src/index.ts
2
- import { useEffect } from "react";
1
+ // src/use-sigma-iframe.ts
2
+ import { useCallback, useRef, useState } from "react";
3
+
4
+ // src/wrappers.ts
3
5
  import {
6
+ workbookLoadedListener,
4
7
  workbookErrorListener,
5
- workbookLoadedListener
8
+ workbookDataLoadedListener,
9
+ workbookVariableListener,
10
+ workbookTableCellSelectListener,
11
+ workbookPublishedListener,
12
+ workbookFullScreenListener,
13
+ workbookPageHeightListener,
14
+ workbookChartValueSelectListener,
15
+ workbookPageSelectedNodeListener,
16
+ workbookPivotTableCellSelectListener,
17
+ workbookBookmarkCreateListener,
18
+ workbookCurrentVariablesListener,
19
+ workbookChartErrorListener,
20
+ workbookExploreKeyOnChangeListener,
21
+ workbookBookmarkOnChangeListener,
22
+ urlOnChangeListener,
23
+ workbookIdOnChangeListener
6
24
  } from "@sigmacomputing/embed-sdk";
25
+ import { useEffect } from "react";
7
26
  function useWorkbookLoaded(iframeRef, onLoaded) {
8
27
  useEffect(() => {
9
28
  const listener = (event) => {
@@ -28,7 +47,267 @@ function useWorkbookError(iframeRef, onError) {
28
47
  return () => window.removeEventListener("message", listener);
29
48
  }, [iframeRef, onError]);
30
49
  }
50
+ function useWorkbookDataLoaded(iframeRef, onDataLoaded) {
51
+ useEffect(() => {
52
+ const listener = (event) => {
53
+ if (!iframeRef.current) {
54
+ return;
55
+ }
56
+ workbookDataLoadedListener(event, iframeRef.current, onDataLoaded);
57
+ };
58
+ window.addEventListener("message", listener);
59
+ return () => window.removeEventListener("message", listener);
60
+ }, [iframeRef, onDataLoaded]);
61
+ }
62
+ function useVariableChange(iframeRef, onVariableChange) {
63
+ useEffect(() => {
64
+ const listener = (event) => {
65
+ if (!iframeRef.current) {
66
+ return;
67
+ }
68
+ workbookVariableListener(event, iframeRef.current, onVariableChange);
69
+ };
70
+ window.addEventListener("message", listener);
71
+ return () => window.removeEventListener("message", listener);
72
+ }, [iframeRef, onVariableChange]);
73
+ }
74
+ function useTableCellSelect(iframeRef, onTableCellSelect) {
75
+ useEffect(() => {
76
+ const listener = (event) => {
77
+ if (!iframeRef.current) {
78
+ return;
79
+ }
80
+ workbookTableCellSelectListener(
81
+ event,
82
+ iframeRef.current,
83
+ onTableCellSelect
84
+ );
85
+ };
86
+ window.addEventListener("message", listener);
87
+ return () => window.removeEventListener("message", listener);
88
+ }, [iframeRef, onTableCellSelect]);
89
+ }
90
+ function useWorkbookPublished(iframeRef, onWorkbookPublished) {
91
+ useEffect(() => {
92
+ const listener = (event) => {
93
+ if (!iframeRef.current) {
94
+ return;
95
+ }
96
+ workbookPublishedListener(event, iframeRef.current, onWorkbookPublished);
97
+ };
98
+ window.addEventListener("message", listener);
99
+ return () => window.removeEventListener("message", listener);
100
+ }, [iframeRef, onWorkbookPublished]);
101
+ }
102
+ function useWorkbookFullScreen(iframeRef, onFullScreen) {
103
+ useEffect(() => {
104
+ const listener = (event) => {
105
+ if (!iframeRef.current) {
106
+ return;
107
+ }
108
+ workbookFullScreenListener(event, iframeRef.current, onFullScreen);
109
+ };
110
+ window.addEventListener("message", listener);
111
+ return () => window.removeEventListener("message", listener);
112
+ }, [iframeRef, onFullScreen]);
113
+ }
114
+ function useWorkbookPageHeight(iframeRef, onPageHeight) {
115
+ useEffect(() => {
116
+ const listener = (event) => {
117
+ if (!iframeRef.current) {
118
+ return;
119
+ }
120
+ workbookPageHeightListener(event, iframeRef.current, onPageHeight);
121
+ };
122
+ window.addEventListener("message", listener);
123
+ return () => window.removeEventListener("message", listener);
124
+ }, [iframeRef, onPageHeight]);
125
+ }
126
+ function useWorkbookPageSelectedNode(iframeRef, onPageSelectedNode) {
127
+ useEffect(() => {
128
+ const listener = (event) => {
129
+ if (!iframeRef.current) {
130
+ return;
131
+ }
132
+ workbookPageSelectedNodeListener(
133
+ event,
134
+ iframeRef.current,
135
+ onPageSelectedNode
136
+ );
137
+ };
138
+ window.addEventListener("message", listener);
139
+ return () => window.removeEventListener("message", listener);
140
+ }, [iframeRef, onPageSelectedNode]);
141
+ }
142
+ function useWorkbookPivotTableCellSelect(iframeRef, onPivotTableCellSelect) {
143
+ useEffect(() => {
144
+ const listener = (event) => {
145
+ if (!iframeRef.current) {
146
+ return;
147
+ }
148
+ workbookPivotTableCellSelectListener(
149
+ event,
150
+ iframeRef.current,
151
+ onPivotTableCellSelect
152
+ );
153
+ };
154
+ window.addEventListener("message", listener);
155
+ return () => window.removeEventListener("message", listener);
156
+ }, [iframeRef, onPivotTableCellSelect]);
157
+ }
158
+ function useWorkbookChartValueSelect(iframeRef, onChartValueSelect) {
159
+ useEffect(() => {
160
+ const listener = (event) => {
161
+ if (!iframeRef.current) {
162
+ return;
163
+ }
164
+ workbookChartValueSelectListener(
165
+ event,
166
+ iframeRef.current,
167
+ onChartValueSelect
168
+ );
169
+ };
170
+ window.addEventListener("message", listener);
171
+ return () => window.removeEventListener("message", listener);
172
+ }, [iframeRef, onChartValueSelect]);
173
+ }
174
+ function useWorkbookCurrentVariables(iframeRef, onCurrentVariables) {
175
+ useEffect(() => {
176
+ const listener = (event) => {
177
+ if (!iframeRef.current) {
178
+ return;
179
+ }
180
+ workbookCurrentVariablesListener(
181
+ event,
182
+ iframeRef.current,
183
+ onCurrentVariables
184
+ );
185
+ };
186
+ window.addEventListener("message", listener);
187
+ return () => window.removeEventListener("message", listener);
188
+ }, [iframeRef, onCurrentVariables]);
189
+ }
190
+ function useWorkbookBookmarkOnCreate(iframeRef, onBookmarkCreate) {
191
+ useEffect(() => {
192
+ const listener = (event) => {
193
+ if (!iframeRef.current) {
194
+ return;
195
+ }
196
+ workbookBookmarkCreateListener(
197
+ event,
198
+ iframeRef.current,
199
+ onBookmarkCreate
200
+ );
201
+ };
202
+ window.addEventListener("message", listener);
203
+ return () => window.removeEventListener("message", listener);
204
+ }, [iframeRef, onBookmarkCreate]);
205
+ }
206
+ function useWorkbookChartError(iframeRef, onChartError) {
207
+ useEffect(() => {
208
+ const listener = (event) => {
209
+ if (!iframeRef.current) {
210
+ return;
211
+ }
212
+ workbookChartErrorListener(event, iframeRef.current, onChartError);
213
+ };
214
+ window.addEventListener("message", listener);
215
+ return () => window.removeEventListener("message", listener);
216
+ }, [iframeRef, onChartError]);
217
+ }
218
+ function useWorkbookExploreKeyOnChange(iframeRef, onExploreKeyChange) {
219
+ useEffect(() => {
220
+ const listener = (event) => {
221
+ if (!iframeRef.current) {
222
+ return;
223
+ }
224
+ workbookExploreKeyOnChangeListener(
225
+ event,
226
+ iframeRef.current,
227
+ onExploreKeyChange
228
+ );
229
+ };
230
+ window.addEventListener("message", listener);
231
+ return () => window.removeEventListener("message", listener);
232
+ }, [iframeRef, onExploreKeyChange]);
233
+ }
234
+ function useWorkbookBookmarkOnChange(iframeRef, onBookmarkChange) {
235
+ useEffect(() => {
236
+ const listener = (event) => {
237
+ if (!iframeRef.current) {
238
+ return;
239
+ }
240
+ workbookBookmarkOnChangeListener(
241
+ event,
242
+ iframeRef.current,
243
+ onBookmarkChange
244
+ );
245
+ };
246
+ window.addEventListener("message", listener);
247
+ return () => window.removeEventListener("message", listener);
248
+ }, [iframeRef, onBookmarkChange]);
249
+ }
250
+ function useUrlOnChange(iframeRef, onUrlChange) {
251
+ useEffect(() => {
252
+ const listener = (event) => {
253
+ if (!iframeRef.current) {
254
+ return;
255
+ }
256
+ urlOnChangeListener(event, iframeRef.current, onUrlChange);
257
+ };
258
+ window.addEventListener("message", listener);
259
+ return () => window.removeEventListener("message", listener);
260
+ }, [iframeRef, onUrlChange]);
261
+ }
262
+ function useWorkbookIdOnChange(iframeRef, onIdChange) {
263
+ useEffect(() => {
264
+ const listener = (event) => {
265
+ if (!iframeRef.current) {
266
+ return;
267
+ }
268
+ workbookIdOnChangeListener(event, iframeRef.current, onIdChange);
269
+ };
270
+ window.addEventListener("message", listener);
271
+ return () => window.removeEventListener("message", listener);
272
+ }, [iframeRef, onIdChange]);
273
+ }
274
+
275
+ // src/use-sigma-iframe.ts
276
+ function useSigmaIframe() {
277
+ const iframeRef = useRef(null);
278
+ const [loading, setLoading] = useState(true);
279
+ const [variables, setVariables] = useState();
280
+ const [error, setError] = useState(null);
281
+ const loadingCallback = useCallback((event) => {
282
+ setLoading(false);
283
+ setVariables(event.workbook.variables);
284
+ }, []);
285
+ const errorCallback = useCallback((event) => {
286
+ setError(event);
287
+ setLoading(false);
288
+ }, []);
289
+ useWorkbookLoaded(iframeRef, loadingCallback);
290
+ useWorkbookError(iframeRef, errorCallback);
291
+ return { iframeRef, loading, error, variables };
292
+ }
31
293
  export {
294
+ useSigmaIframe,
295
+ useTableCellSelect,
296
+ useUrlOnChange,
297
+ useVariableChange,
298
+ useWorkbookBookmarkOnChange,
299
+ useWorkbookBookmarkOnCreate,
300
+ useWorkbookChartError,
301
+ useWorkbookChartValueSelect,
302
+ useWorkbookCurrentVariables,
303
+ useWorkbookDataLoaded,
32
304
  useWorkbookError,
33
- useWorkbookLoaded
305
+ useWorkbookExploreKeyOnChange,
306
+ useWorkbookFullScreen,
307
+ useWorkbookIdOnChange,
308
+ useWorkbookLoaded,
309
+ useWorkbookPageHeight,
310
+ useWorkbookPageSelectedNode,
311
+ useWorkbookPivotTableCellSelect,
312
+ useWorkbookPublished
34
313
  };
package/package.json CHANGED
@@ -1,13 +1,7 @@
1
1
  {
2
2
  "name": "@sigmacomputing/react-embed-sdk",
3
- "version": "0.2.1",
3
+ "version": "0.2.3",
4
4
  "description": "React JavaScript SDK to interact with Sigma Computing's Embed API",
5
- "scripts": {
6
- "prepublish": "npm run build",
7
- "build": "tsup",
8
- "dev": "tsup --watch",
9
- "test": "echo \"Error: no test specified\" && exit 1"
10
- },
11
5
  "author": "sigmacomputing",
12
6
  "license": "ISC",
13
7
  "exports": {
@@ -23,12 +17,18 @@
23
17
  "react-dom": "^16.8 || ^17 || ^18"
24
18
  },
25
19
  "devDependencies": {
26
- "@sigmacomputing/typescript-config": "*",
27
20
  "@types/react": "^18.2.66",
28
21
  "react": "^18.2.0",
29
- "react-dom": "^18.2.0"
22
+ "react-dom": "^18.2.0",
23
+ "@sigmacomputing/typescript-config": "0.0.0"
30
24
  },
31
25
  "dependencies": {
32
- "@sigmacomputing/embed-sdk": "latest"
26
+ "@sigmacomputing/embed-sdk": "0.2.3"
27
+ },
28
+ "scripts": {
29
+ "prepublish": "pnpm build",
30
+ "build": "tsup",
31
+ "dev": "tsup --watch",
32
+ "test": "echo \"Error: no test specified\" && exit 1"
33
33
  }
34
- }
34
+ }