@sigmacomputing/react-embed-sdk 0.2.2 → 0.2.4

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