diff --git a/package.json b/package.json index cfec743..c5abb4f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@preset-sdk/embedded", - "version": "0.1.12", + "version": "0.1.13", "description": "Frontend SDK for embedding Preset data analytics into your own application", "access": "public", "keywords": [ diff --git a/src/index.ts b/src/index.ts index f12ad2b..ee196ba 100644 --- a/src/index.ts +++ b/src/index.ts @@ -17,6 +17,7 @@ export type UiConfigType = { hideTitle?: boolean hideTab?: boolean hideChartControls?: boolean + emitDataMasks?: boolean filters?: { [key: string]: boolean | undefined visible?: boolean @@ -52,9 +53,22 @@ export type Size = { width: number, height: number } +export type ObserveDataMaskCallbackFn = ( + dataMask: Record & { + crossFiltersChanged: boolean + nativeFiltersChanged: boolean + } +) => void + export type EmbeddedDashboard = { getScrollSize: () => Promise unmount: () => void + getDashboardPermalink: (anchor: string) => Promise + getActiveTabs: () => Promise + observeDataMask: ( + callbackFn: ObserveDataMaskCallbackFn + ) => void + getDataMask: () => Record } /** @@ -97,6 +111,9 @@ export async function embedDashboard({ if(dashboardUiConfig.hideChartControls) { configNumber += 8 } + if (dashboardUiConfig.emitDataMasks) { + configNumber += 16 + } } return configNumber } @@ -169,11 +186,24 @@ export async function embedDashboard({ } const getScrollSize = () => ourPort.get('getScrollSize'); - + const getDashboardPermalink = (anchor: string) => + ourPort.get('getDashboardPermalink', { anchor }) + const getActiveTabs = () => ourPort.get('getActiveTabs') + const getDataMask = () => ourPort.get>('getDataMask') + const observeDataMask = ( + callbackFn: ObserveDataMaskCallbackFn + ) => { + ourPort.start() + ourPort.defineMethod('observeDataMask', callbackFn) + } return { getScrollSize, unmount, - }; + getDashboardPermalink, + getActiveTabs, + observeDataMask, + getDataMask + } } export function _initComms(window: Window, targetOrigin: string, debug = false) {