@sigmacomputing/react-embed-sdk 0.2.2 → 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,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
+ }