@sigmacomputing/react-embed-sdk 0.2.2 → 0.2.4

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,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
+ }