@sigmacomputing/react-embed-sdk 0.2.2 → 0.2.3

Sign up to get free protection for your applications and to get access to all the features.
package/dist/index.d.mts CHANGED
@@ -1,9 +1,35 @@
1
- import * as react from 'react';
2
- 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';
3
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
+ };
4
32
 
5
- type OnLoaded = (event: WorkbookLoadedEvent) => void;
6
- type OnError = (event: WorkbookErrorEvent) => void;
7
33
  /**
8
34
  * Listen for a workbook loaded event, and execute the given callback when it occurs.
9
35
  *
@@ -18,14 +44,14 @@ type OnError = (event: WorkbookErrorEvent) => void;
18
44
  * <iframe
19
45
  * className{loading ? "hidden" : "show"}
20
46
  * ref={iframeRef}
21
- * src="https://sigmacomputing.app/embed"
47
+ * src="https://app.sigmacomputing.com/embed"
22
48
  * />
23
49
  * );
24
50
  * }
25
51
  * ```
26
52
  *
27
53
  */
28
- declare function useWorkbookLoaded(iframeRef: React.RefObject<HTMLIFrameElement>, onLoaded: OnLoaded): void;
54
+ declare function useWorkbookLoaded(iframeRef: React.RefObject<HTMLIFrameElement>, onLoaded: (event: WorkbookLoadedEvent) => void): void;
29
55
  /**
30
56
  * Listen for a workbook error event, and execute the given callback when it occurs.
31
57
  *
@@ -41,39 +67,47 @@ declare function useWorkbookLoaded(iframeRef: React.RefObject<HTMLIFrameElement>
41
67
  * return (
42
68
  * <iframe
43
69
  * ref={iframeRef}
44
- * src="https://sigmacomputing.app/embed"
70
+ * src="https://app.sigmacomputing.com/embed"
45
71
  * />
46
72
  * );
47
73
  * }
48
74
  * ```
49
75
  *
50
76
  */
51
- declare function useWorkbookError(iframeRef: React.RefObject<HTMLIFrameElement>, onError: OnError): void;
77
+ declare function useWorkbookError(iframeRef: React.RefObject<HTMLIFrameElement>, onError: (event: WorkbookErrorEvent) => void): void;
52
78
  /**
53
- * A hook that returns a ref to be used with an iframe element, and the loading and error state of the embed.
79
+ * Listen for a workbook data loaded event, and execute the given callback when it occurs.
54
80
  *
55
81
  * @example
56
82
  * ```
57
83
  * function MyEmbed() {
58
- * const { iframeRef, loading, error } = useSigmaIframe();
59
- * return (
60
- * <>
61
- * {loading && <p>Loading...</p>}
62
- * {error && <p>Error: {error.message}</p>}
63
- * <iframe
64
- * className={loading || error ? "hidden" : "show"}
65
- * ref={iframeRef}
66
- * src="https://sigmacomputing.app/embed"
67
- * />
68
- * </>
69
- * );
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
+ * );
70
93
  * }
71
94
  * ```
72
95
  */
73
- declare function useSigmaIframe(): {
74
- iframeRef: react.RefObject<HTMLIFrameElement>;
75
- loading: boolean;
76
- error: WorkbookErrorEvent | null;
77
- };
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;
78
112
 
79
- export { type OnError, type OnLoaded, useSigmaIframe, 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,9 +1,35 @@
1
- import * as react from 'react';
2
- 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';
3
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
+ };
4
32
 
5
- type OnLoaded = (event: WorkbookLoadedEvent) => void;
6
- type OnError = (event: WorkbookErrorEvent) => void;
7
33
  /**
8
34
  * Listen for a workbook loaded event, and execute the given callback when it occurs.
9
35
  *
@@ -18,14 +44,14 @@ type OnError = (event: WorkbookErrorEvent) => void;
18
44
  * <iframe
19
45
  * className{loading ? "hidden" : "show"}
20
46
  * ref={iframeRef}
21
- * src="https://sigmacomputing.app/embed"
47
+ * src="https://app.sigmacomputing.com/embed"
22
48
  * />
23
49
  * );
24
50
  * }
25
51
  * ```
26
52
  *
27
53
  */
28
- declare function useWorkbookLoaded(iframeRef: React.RefObject<HTMLIFrameElement>, onLoaded: OnLoaded): void;
54
+ declare function useWorkbookLoaded(iframeRef: React.RefObject<HTMLIFrameElement>, onLoaded: (event: WorkbookLoadedEvent) => void): void;
29
55
  /**
30
56
  * Listen for a workbook error event, and execute the given callback when it occurs.
31
57
  *
@@ -41,39 +67,47 @@ declare function useWorkbookLoaded(iframeRef: React.RefObject<HTMLIFrameElement>
41
67
  * return (
42
68
  * <iframe
43
69
  * ref={iframeRef}
44
- * src="https://sigmacomputing.app/embed"
70
+ * src="https://app.sigmacomputing.com/embed"
45
71
  * />
46
72
  * );
47
73
  * }
48
74
  * ```
49
75
  *
50
76
  */
51
- declare function useWorkbookError(iframeRef: React.RefObject<HTMLIFrameElement>, onError: OnError): void;
77
+ declare function useWorkbookError(iframeRef: React.RefObject<HTMLIFrameElement>, onError: (event: WorkbookErrorEvent) => void): void;
52
78
  /**
53
- * A hook that returns a ref to be used with an iframe element, and the loading and error state of the embed.
79
+ * Listen for a workbook data loaded event, and execute the given callback when it occurs.
54
80
  *
55
81
  * @example
56
82
  * ```
57
83
  * function MyEmbed() {
58
- * const { iframeRef, loading, error } = useSigmaIframe();
59
- * return (
60
- * <>
61
- * {loading && <p>Loading...</p>}
62
- * {error && <p>Error: {error.message}</p>}
63
- * <iframe
64
- * className={loading || error ? "hidden" : "show"}
65
- * ref={iframeRef}
66
- * src="https://sigmacomputing.app/embed"
67
- * />
68
- * </>
69
- * );
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
+ * );
70
93
  * }
71
94
  * ```
72
95
  */
73
- declare function useSigmaIframe(): {
74
- iframeRef: react.RefObject<HTMLIFrameElement>;
75
- loading: boolean;
76
- error: WorkbookErrorEvent | null;
77
- };
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;
78
112
 
79
- export { type OnError, type OnLoaded, useSigmaIframe, 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
@@ -21,12 +21,33 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
21
21
  var src_exports = {};
22
22
  __export(src_exports, {
23
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,
24
33
  useWorkbookError: () => useWorkbookError,
25
- 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
26
42
  });
27
43
  module.exports = __toCommonJS(src_exports);
28
- var import_react = require("react");
44
+
45
+ // src/use-sigma-iframe.ts
46
+ var import_react2 = require("react");
47
+
48
+ // src/wrappers.ts
29
49
  var import_embed_sdk = require("@sigmacomputing/embed-sdk");
50
+ var import_react = require("react");
30
51
  function useWorkbookLoaded(iframeRef, onLoaded) {
31
52
  (0, import_react.useEffect)(() => {
32
53
  const listener = (event) => {
@@ -51,22 +72,268 @@ function useWorkbookError(iframeRef, onError) {
51
72
  return () => window.removeEventListener("message", listener);
52
73
  }, [iframeRef, onError]);
53
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
54
301
  function useSigmaIframe() {
55
- const iframeRef = (0, import_react.useRef)(null);
56
- const [loading, setLoading] = (0, import_react.useState)(true);
57
- const [error, setError] = (0, import_react.useState)(null);
58
- const loadingCallback = (0, import_react.useCallback)(() => setLoading(false), []);
59
- const errorCallback = (0, import_react.useCallback)((event) => {
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) => {
60
311
  setError(event);
61
312
  setLoading(false);
62
313
  }, []);
63
314
  useWorkbookLoaded(iframeRef, loadingCallback);
64
315
  useWorkbookError(iframeRef, errorCallback);
65
- return { iframeRef, loading, error };
316
+ return { iframeRef, loading, error, variables };
66
317
  }
67
318
  // Annotate the CommonJS export names for ESM import in node:
68
319
  0 && (module.exports = {
69
320
  useSigmaIframe,
321
+ useTableCellSelect,
322
+ useUrlOnChange,
323
+ useVariableChange,
324
+ useWorkbookBookmarkOnChange,
325
+ useWorkbookBookmarkOnCreate,
326
+ useWorkbookChartError,
327
+ useWorkbookChartValueSelect,
328
+ useWorkbookCurrentVariables,
329
+ useWorkbookDataLoaded,
70
330
  useWorkbookError,
71
- useWorkbookLoaded
331
+ useWorkbookExploreKeyOnChange,
332
+ useWorkbookFullScreen,
333
+ useWorkbookIdOnChange,
334
+ useWorkbookLoaded,
335
+ useWorkbookPageHeight,
336
+ useWorkbookPageSelectedNode,
337
+ useWorkbookPivotTableCellSelect,
338
+ useWorkbookPublished
72
339
  });
package/dist/index.mjs CHANGED
@@ -1,9 +1,28 @@
1
- // src/index.ts
2
- import { useCallback, useEffect, useRef, useState } 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,21 +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
31
276
  function useSigmaIframe() {
32
277
  const iframeRef = useRef(null);
33
278
  const [loading, setLoading] = useState(true);
279
+ const [variables, setVariables] = useState();
34
280
  const [error, setError] = useState(null);
35
- const loadingCallback = useCallback(() => setLoading(false), []);
281
+ const loadingCallback = useCallback((event) => {
282
+ setLoading(false);
283
+ setVariables(event.workbook.variables);
284
+ }, []);
36
285
  const errorCallback = useCallback((event) => {
37
286
  setError(event);
38
287
  setLoading(false);
39
288
  }, []);
40
289
  useWorkbookLoaded(iframeRef, loadingCallback);
41
290
  useWorkbookError(iframeRef, errorCallback);
42
- return { iframeRef, loading, error };
291
+ return { iframeRef, loading, error, variables };
43
292
  }
44
293
  export {
45
294
  useSigmaIframe,
295
+ useTableCellSelect,
296
+ useUrlOnChange,
297
+ useVariableChange,
298
+ useWorkbookBookmarkOnChange,
299
+ useWorkbookBookmarkOnCreate,
300
+ useWorkbookChartError,
301
+ useWorkbookChartValueSelect,
302
+ useWorkbookCurrentVariables,
303
+ useWorkbookDataLoaded,
46
304
  useWorkbookError,
47
- useWorkbookLoaded
305
+ useWorkbookExploreKeyOnChange,
306
+ useWorkbookFullScreen,
307
+ useWorkbookIdOnChange,
308
+ useWorkbookLoaded,
309
+ useWorkbookPageHeight,
310
+ useWorkbookPageSelectedNode,
311
+ useWorkbookPivotTableCellSelect,
312
+ useWorkbookPublished
48
313
  };
package/package.json CHANGED
@@ -1,13 +1,7 @@
1
1
  {
2
2
  "name": "@sigmacomputing/react-embed-sdk",
3
- "version": "0.2.2",
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
+ }