@sigmacomputing/react-embed-sdk 0.2.5 → 0.2.7
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/index.d.mts +25 -1
- package/dist/index.d.ts +25 -1
- package/dist/index.js +53 -2
- package/dist/index.mjs +55 -1
- package/package.json +2 -2
package/dist/index.d.mts
CHANGED
@@ -54,6 +54,30 @@ declare function useSigmaIframe(): {
|
|
54
54
|
*/
|
55
55
|
declare function usePageHeight(iframeRef: React.RefObject<HTMLIFrameElement>): number | undefined;
|
56
56
|
|
57
|
+
/**
|
58
|
+
* A hook that returns functions to get and set the variables in a workbook.
|
59
|
+
* @example
|
60
|
+
* ```
|
61
|
+
* function MyEmbed() {
|
62
|
+
* const { getVariables, setVariables } = useWorkbookVariables(iframeRef);
|
63
|
+
* return (
|
64
|
+
* <>
|
65
|
+
* <button onClick={() => setVariables({ foo: "bar" })}>Set Variables</button>
|
66
|
+
* <button onClick={() => const variable = await getVariables()}>Get Variables</button>
|
67
|
+
* <iframe
|
68
|
+
* ref={iframeRef}
|
69
|
+
* src="https://app.sigmacomputing.com/embed"
|
70
|
+
* />
|
71
|
+
* <>
|
72
|
+
* );
|
73
|
+
* }
|
74
|
+
* ```
|
75
|
+
*/
|
76
|
+
declare const useWorkbookVariables: (iframeRef: React.RefObject<HTMLIFrameElement>) => {
|
77
|
+
getVariables: () => Promise<unknown>;
|
78
|
+
setVariables: (variables: Record<string, string>) => void;
|
79
|
+
};
|
80
|
+
|
57
81
|
/**
|
58
82
|
* Listen for a workbook loaded event, and execute the given callback when it occurs.
|
59
83
|
*
|
@@ -134,4 +158,4 @@ declare function useWorkbookBookmarkOnChange(iframeRef: React.RefObject<HTMLIFra
|
|
134
158
|
declare function useUrlOnChange(iframeRef: React.RefObject<HTMLIFrameElement>, onUrlChange: (event: UrlOnChangeEvent) => void): void;
|
135
159
|
declare function useWorkbookIdOnChange(iframeRef: React.RefObject<HTMLIFrameElement>, onIdChange: (event: WorkbookIdOnChangeEvent) => void): void;
|
136
160
|
|
137
|
-
export { usePageHeight, useSigmaIframe, useTableCellSelect, useUrlOnChange, useVariableChange, useWorkbookBookmarkOnChange, useWorkbookBookmarkOnCreate, useWorkbookChartError, useWorkbookChartValueSelect, useWorkbookCurrentVariables, useWorkbookDataLoaded, useWorkbookError, useWorkbookExploreKeyOnChange, useWorkbookFullScreen, useWorkbookIdOnChange, useWorkbookLoaded, useWorkbookPageHeight, useWorkbookPageSelectedNode, useWorkbookPivotTableCellSelect, useWorkbookPublished };
|
161
|
+
export { usePageHeight, useSigmaIframe, useTableCellSelect, useUrlOnChange, useVariableChange, useWorkbookBookmarkOnChange, useWorkbookBookmarkOnCreate, useWorkbookChartError, useWorkbookChartValueSelect, useWorkbookCurrentVariables, useWorkbookDataLoaded, useWorkbookError, useWorkbookExploreKeyOnChange, useWorkbookFullScreen, useWorkbookIdOnChange, useWorkbookLoaded, useWorkbookPageHeight, useWorkbookPageSelectedNode, useWorkbookPivotTableCellSelect, useWorkbookPublished, useWorkbookVariables };
|
package/dist/index.d.ts
CHANGED
@@ -54,6 +54,30 @@ declare function useSigmaIframe(): {
|
|
54
54
|
*/
|
55
55
|
declare function usePageHeight(iframeRef: React.RefObject<HTMLIFrameElement>): number | undefined;
|
56
56
|
|
57
|
+
/**
|
58
|
+
* A hook that returns functions to get and set the variables in a workbook.
|
59
|
+
* @example
|
60
|
+
* ```
|
61
|
+
* function MyEmbed() {
|
62
|
+
* const { getVariables, setVariables } = useWorkbookVariables(iframeRef);
|
63
|
+
* return (
|
64
|
+
* <>
|
65
|
+
* <button onClick={() => setVariables({ foo: "bar" })}>Set Variables</button>
|
66
|
+
* <button onClick={() => const variable = await getVariables()}>Get Variables</button>
|
67
|
+
* <iframe
|
68
|
+
* ref={iframeRef}
|
69
|
+
* src="https://app.sigmacomputing.com/embed"
|
70
|
+
* />
|
71
|
+
* <>
|
72
|
+
* );
|
73
|
+
* }
|
74
|
+
* ```
|
75
|
+
*/
|
76
|
+
declare const useWorkbookVariables: (iframeRef: React.RefObject<HTMLIFrameElement>) => {
|
77
|
+
getVariables: () => Promise<unknown>;
|
78
|
+
setVariables: (variables: Record<string, string>) => void;
|
79
|
+
};
|
80
|
+
|
57
81
|
/**
|
58
82
|
* Listen for a workbook loaded event, and execute the given callback when it occurs.
|
59
83
|
*
|
@@ -134,4 +158,4 @@ declare function useWorkbookBookmarkOnChange(iframeRef: React.RefObject<HTMLIFra
|
|
134
158
|
declare function useUrlOnChange(iframeRef: React.RefObject<HTMLIFrameElement>, onUrlChange: (event: UrlOnChangeEvent) => void): void;
|
135
159
|
declare function useWorkbookIdOnChange(iframeRef: React.RefObject<HTMLIFrameElement>, onIdChange: (event: WorkbookIdOnChangeEvent) => void): void;
|
136
160
|
|
137
|
-
export { usePageHeight, useSigmaIframe, useTableCellSelect, useUrlOnChange, useVariableChange, useWorkbookBookmarkOnChange, useWorkbookBookmarkOnCreate, useWorkbookChartError, useWorkbookChartValueSelect, useWorkbookCurrentVariables, useWorkbookDataLoaded, useWorkbookError, useWorkbookExploreKeyOnChange, useWorkbookFullScreen, useWorkbookIdOnChange, useWorkbookLoaded, useWorkbookPageHeight, useWorkbookPageSelectedNode, useWorkbookPivotTableCellSelect, useWorkbookPublished };
|
161
|
+
export { usePageHeight, useSigmaIframe, useTableCellSelect, useUrlOnChange, useVariableChange, useWorkbookBookmarkOnChange, useWorkbookBookmarkOnCreate, useWorkbookChartError, useWorkbookChartValueSelect, useWorkbookCurrentVariables, useWorkbookDataLoaded, useWorkbookError, useWorkbookExploreKeyOnChange, useWorkbookFullScreen, useWorkbookIdOnChange, useWorkbookLoaded, useWorkbookPageHeight, useWorkbookPageSelectedNode, useWorkbookPivotTableCellSelect, useWorkbookPublished, useWorkbookVariables };
|
package/dist/index.js
CHANGED
@@ -39,7 +39,8 @@ __export(src_exports, {
|
|
39
39
|
useWorkbookPageHeight: () => useWorkbookPageHeight,
|
40
40
|
useWorkbookPageSelectedNode: () => useWorkbookPageSelectedNode,
|
41
41
|
useWorkbookPivotTableCellSelect: () => useWorkbookPivotTableCellSelect,
|
42
|
-
useWorkbookPublished: () => useWorkbookPublished
|
42
|
+
useWorkbookPublished: () => useWorkbookPublished,
|
43
|
+
useWorkbookVariables: () => useWorkbookVariables
|
43
44
|
});
|
44
45
|
module.exports = __toCommonJS(src_exports);
|
45
46
|
|
@@ -332,6 +333,55 @@ function usePageHeight(iframeRef) {
|
|
332
333
|
});
|
333
334
|
return height;
|
334
335
|
}
|
336
|
+
|
337
|
+
// src/mutations.ts
|
338
|
+
var import_react4 = require("react");
|
339
|
+
var import_embed_sdk2 = require("@sigmacomputing/embed-sdk");
|
340
|
+
var useWorkbookVariables = (iframeRef) => {
|
341
|
+
const [state, setState] = (0, import_react4.useState)();
|
342
|
+
const getVariables = (0, import_react4.useCallback)(() => {
|
343
|
+
if (!iframeRef.current) {
|
344
|
+
throw new Error("iframe is not available");
|
345
|
+
}
|
346
|
+
(0, import_embed_sdk2.workbookVariablesList)(iframeRef.current);
|
347
|
+
const promise = new Promise((resolve) => {
|
348
|
+
setState({ state: "pending", callback: resolve });
|
349
|
+
});
|
350
|
+
return promise;
|
351
|
+
}, [iframeRef]);
|
352
|
+
const setVariables = (0, import_react4.useCallback)(
|
353
|
+
(variables) => {
|
354
|
+
if (!iframeRef.current) {
|
355
|
+
throw new Error("iframe is not available");
|
356
|
+
}
|
357
|
+
(0, import_embed_sdk2.workbookVariablesUpdate)(iframeRef.current, variables);
|
358
|
+
},
|
359
|
+
[iframeRef]
|
360
|
+
);
|
361
|
+
(0, import_react4.useEffect)(() => {
|
362
|
+
if (!iframeRef.current)
|
363
|
+
return;
|
364
|
+
const listener = (event) => {
|
365
|
+
if (!iframeRef.current) {
|
366
|
+
return;
|
367
|
+
}
|
368
|
+
(0, import_embed_sdk2.workbookCurrentVariablesListener)(event, iframeRef.current, (event2) => {
|
369
|
+
if ((state == null ? void 0 : state.state) === "pending") {
|
370
|
+
setState({ state: "success", variables: event2.variables });
|
371
|
+
state.callback(event2.variables);
|
372
|
+
}
|
373
|
+
});
|
374
|
+
};
|
375
|
+
window.addEventListener("message", listener);
|
376
|
+
return () => {
|
377
|
+
window.removeEventListener("message", listener);
|
378
|
+
};
|
379
|
+
}, [iframeRef]);
|
380
|
+
return {
|
381
|
+
getVariables,
|
382
|
+
setVariables
|
383
|
+
};
|
384
|
+
};
|
335
385
|
// Annotate the CommonJS export names for ESM import in node:
|
336
386
|
0 && (module.exports = {
|
337
387
|
usePageHeight,
|
@@ -353,5 +403,6 @@ function usePageHeight(iframeRef) {
|
|
353
403
|
useWorkbookPageHeight,
|
354
404
|
useWorkbookPageSelectedNode,
|
355
405
|
useWorkbookPivotTableCellSelect,
|
356
|
-
useWorkbookPublished
|
406
|
+
useWorkbookPublished,
|
407
|
+
useWorkbookVariables
|
357
408
|
});
|
package/dist/index.mjs
CHANGED
@@ -306,6 +306,59 @@ function usePageHeight(iframeRef) {
|
|
306
306
|
});
|
307
307
|
return height;
|
308
308
|
}
|
309
|
+
|
310
|
+
// src/mutations.ts
|
311
|
+
import { useCallback as useCallback2, useEffect as useEffect2, useState as useState3 } from "react";
|
312
|
+
import {
|
313
|
+
workbookVariablesList,
|
314
|
+
workbookCurrentVariablesListener as workbookCurrentVariablesListener2,
|
315
|
+
workbookVariablesUpdate
|
316
|
+
} from "@sigmacomputing/embed-sdk";
|
317
|
+
var useWorkbookVariables = (iframeRef) => {
|
318
|
+
const [state, setState] = useState3();
|
319
|
+
const getVariables = useCallback2(() => {
|
320
|
+
if (!iframeRef.current) {
|
321
|
+
throw new Error("iframe is not available");
|
322
|
+
}
|
323
|
+
workbookVariablesList(iframeRef.current);
|
324
|
+
const promise = new Promise((resolve) => {
|
325
|
+
setState({ state: "pending", callback: resolve });
|
326
|
+
});
|
327
|
+
return promise;
|
328
|
+
}, [iframeRef]);
|
329
|
+
const setVariables = useCallback2(
|
330
|
+
(variables) => {
|
331
|
+
if (!iframeRef.current) {
|
332
|
+
throw new Error("iframe is not available");
|
333
|
+
}
|
334
|
+
workbookVariablesUpdate(iframeRef.current, variables);
|
335
|
+
},
|
336
|
+
[iframeRef]
|
337
|
+
);
|
338
|
+
useEffect2(() => {
|
339
|
+
if (!iframeRef.current)
|
340
|
+
return;
|
341
|
+
const listener = (event) => {
|
342
|
+
if (!iframeRef.current) {
|
343
|
+
return;
|
344
|
+
}
|
345
|
+
workbookCurrentVariablesListener2(event, iframeRef.current, (event2) => {
|
346
|
+
if ((state == null ? void 0 : state.state) === "pending") {
|
347
|
+
setState({ state: "success", variables: event2.variables });
|
348
|
+
state.callback(event2.variables);
|
349
|
+
}
|
350
|
+
});
|
351
|
+
};
|
352
|
+
window.addEventListener("message", listener);
|
353
|
+
return () => {
|
354
|
+
window.removeEventListener("message", listener);
|
355
|
+
};
|
356
|
+
}, [iframeRef]);
|
357
|
+
return {
|
358
|
+
getVariables,
|
359
|
+
setVariables
|
360
|
+
};
|
361
|
+
};
|
309
362
|
export {
|
310
363
|
usePageHeight,
|
311
364
|
useSigmaIframe,
|
@@ -326,5 +379,6 @@ export {
|
|
326
379
|
useWorkbookPageHeight,
|
327
380
|
useWorkbookPageSelectedNode,
|
328
381
|
useWorkbookPivotTableCellSelect,
|
329
|
-
useWorkbookPublished
|
382
|
+
useWorkbookPublished,
|
383
|
+
useWorkbookVariables
|
330
384
|
};
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@sigmacomputing/react-embed-sdk",
|
3
|
-
"version": "0.2.
|
3
|
+
"version": "0.2.7",
|
4
4
|
"description": "React JavaScript SDK to interact with Sigma Computing's Embed API",
|
5
5
|
"author": "sigmacomputing",
|
6
6
|
"license": "ISC",
|
@@ -23,7 +23,7 @@
|
|
23
23
|
"@sigmacomputing/typescript-config": "0.0.0"
|
24
24
|
},
|
25
25
|
"dependencies": {
|
26
|
-
"@sigmacomputing/embed-sdk": "0.2.
|
26
|
+
"@sigmacomputing/embed-sdk": "0.2.7"
|
27
27
|
},
|
28
28
|
"scripts": {
|
29
29
|
"prepublish": "pnpm build",
|