ashish-sdk
Version:
ThoughtSpot Embed SDK
25 lines • 1.17 kB
JavaScript
import React from 'react';
import { SearchEmbed as _SearchEmbed } from '../embed/search';
import { AppEmbed as _AppEmbed } from '../embed/app';
import { LiveboardEmbed as _LiveboardEmbed, } from '../embed/liveboard';
import { getViewPropsAndListeners } from './util';
const componentFactory = (EmbedConstructor) => (props) => {
const ref = React.useRef(null);
const { className, ...embedProps } = props;
const { viewConfig, listeners } = getViewPropsAndListeners(embedProps);
React.useEffect(() => {
const tsEmbed = new EmbedConstructor(ref.current, {
...viewConfig,
});
Object.keys(listeners).forEach((eventName) => {
tsEmbed.on(eventName, listeners[eventName]);
});
tsEmbed.render();
}, [embedProps]);
return React.createElement("div", { "data-testid": "tsEmbed", className: className, ref: ref });
};
export const SearchEmbed = componentFactory(_SearchEmbed);
export const AppEmbed = componentFactory(_AppEmbed);
export const LiveboardEmbed = componentFactory(_LiveboardEmbed);
export const PinboardEmbed = componentFactory(_LiveboardEmbed);
//# sourceMappingURL=index.js.map