@thoughtspot/visual-embed-sdk 1.42.1-alpha.7 → 1.42.1
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/cjs/package.json +4 -3
- package/cjs/src/embed/app.d.ts +20 -0
- package/cjs/src/embed/app.d.ts.map +1 -1
- package/cjs/src/embed/app.js +5 -4
- package/cjs/src/embed/app.js.map +1 -1
- package/cjs/src/embed/app.spec.js +32 -0
- package/cjs/src/embed/app.spec.js.map +1 -1
- package/cjs/src/embed/hostEventClient/contracts.d.ts +1 -11
- package/cjs/src/embed/hostEventClient/contracts.d.ts.map +1 -1
- package/cjs/src/embed/hostEventClient/contracts.js +0 -1
- package/cjs/src/embed/hostEventClient/contracts.js.map +1 -1
- package/cjs/src/embed/hostEventClient/host-event-client.d.ts +3 -3
- package/cjs/src/embed/hostEventClient/host-event-client.d.ts.map +1 -1
- package/cjs/src/embed/hostEventClient/host-event-client.js +6 -6
- package/cjs/src/embed/hostEventClient/host-event-client.js.map +1 -1
- package/cjs/src/embed/search.d.ts.map +1 -1
- package/cjs/src/embed/search.js +1 -3
- package/cjs/src/embed/search.js.map +1 -1
- package/cjs/src/embed/ts-embed.d.ts +1 -3
- package/cjs/src/embed/ts-embed.d.ts.map +1 -1
- package/cjs/src/embed/ts-embed.js +16 -44
- package/cjs/src/embed/ts-embed.js.map +1 -1
- package/cjs/src/embed/ts-embed.spec.js +0 -2
- package/cjs/src/embed/ts-embed.spec.js.map +1 -1
- package/cjs/src/index.d.ts +3 -3
- package/cjs/src/index.d.ts.map +1 -1
- package/cjs/src/index.js +1 -2
- package/cjs/src/index.js.map +1 -1
- package/cjs/src/react/all-types-export.d.ts +1 -2
- package/cjs/src/react/all-types-export.d.ts.map +1 -1
- package/cjs/src/react/all-types-export.js +3 -3
- package/cjs/src/react/all-types-export.js.map +1 -1
- package/cjs/src/react/all-types-export.spec.js +0 -8
- package/cjs/src/react/all-types-export.spec.js.map +1 -1
- package/cjs/src/react/index.d.ts +1 -2
- package/cjs/src/react/index.d.ts.map +1 -1
- package/cjs/src/react/index.js +2 -1
- package/cjs/src/react/index.js.map +1 -1
- package/cjs/src/react/util.d.ts +1 -0
- package/cjs/src/react/util.d.ts.map +1 -1
- package/cjs/src/types.d.ts +105 -143
- package/cjs/src/types.d.ts.map +1 -1
- package/cjs/src/types.js +103 -98
- package/cjs/src/types.js.map +1 -1
- package/cjs/src/utils/processData.d.ts +1 -1
- package/cjs/src/utils/processData.d.ts.map +1 -1
- package/cjs/src/utils/processData.js +8 -8
- package/cjs/src/utils/processData.js.map +1 -1
- package/cjs/src/utils/processData.spec.js.map +1 -1
- package/cjs/src/utils/processTrigger.d.ts +2 -1
- package/cjs/src/utils/processTrigger.d.ts.map +1 -1
- package/cjs/src/utils/processTrigger.js +4 -2
- package/cjs/src/utils/processTrigger.js.map +1 -1
- package/dist/{index-DvNA626T.js → index-CWQnMX2L.js} +1 -1
- package/dist/src/embed/app.d.ts +20 -0
- package/dist/src/embed/app.d.ts.map +1 -1
- package/dist/src/embed/hostEventClient/contracts.d.ts +1 -11
- package/dist/src/embed/hostEventClient/contracts.d.ts.map +1 -1
- package/dist/src/embed/hostEventClient/host-event-client.d.ts +3 -3
- package/dist/src/embed/hostEventClient/host-event-client.d.ts.map +1 -1
- package/dist/src/embed/search.d.ts.map +1 -1
- package/dist/src/embed/ts-embed.d.ts +1 -3
- package/dist/src/embed/ts-embed.d.ts.map +1 -1
- package/dist/src/index.d.ts +3 -3
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/react/all-types-export.d.ts +1 -2
- package/dist/src/react/all-types-export.d.ts.map +1 -1
- package/dist/src/react/index.d.ts +1 -2
- package/dist/src/react/index.d.ts.map +1 -1
- package/dist/src/react/util.d.ts +1 -0
- package/dist/src/react/util.d.ts.map +1 -1
- package/dist/src/types.d.ts +105 -143
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/utils/processData.d.ts +1 -1
- package/dist/src/utils/processData.d.ts.map +1 -1
- package/dist/src/utils/processTrigger.d.ts +2 -1
- package/dist/src/utils/processTrigger.d.ts.map +1 -1
- package/dist/tsembed-react.es.js +157 -280
- package/dist/tsembed-react.js +301 -500
- package/dist/tsembed.es.js +156 -280
- package/dist/tsembed.js +299 -499
- package/dist/visual-embed-sdk-react-full.d.ts +129 -160
- package/dist/visual-embed-sdk-react.d.ts +129 -157
- package/dist/visual-embed-sdk.d.ts +129 -160
- package/lib/package.json +4 -3
- package/lib/src/embed/app.d.ts +20 -0
- package/lib/src/embed/app.d.ts.map +1 -1
- package/lib/src/embed/app.js +5 -4
- package/lib/src/embed/app.js.map +1 -1
- package/lib/src/embed/app.spec.js +32 -0
- package/lib/src/embed/app.spec.js.map +1 -1
- package/lib/src/embed/hostEventClient/contracts.d.ts +1 -11
- package/lib/src/embed/hostEventClient/contracts.d.ts.map +1 -1
- package/lib/src/embed/hostEventClient/contracts.js +0 -1
- package/lib/src/embed/hostEventClient/contracts.js.map +1 -1
- package/lib/src/embed/hostEventClient/host-event-client.d.ts +3 -3
- package/lib/src/embed/hostEventClient/host-event-client.d.ts.map +1 -1
- package/lib/src/embed/hostEventClient/host-event-client.js +6 -6
- package/lib/src/embed/hostEventClient/host-event-client.js.map +1 -1
- package/lib/src/embed/search.d.ts.map +1 -1
- package/lib/src/embed/search.js +1 -3
- package/lib/src/embed/search.js.map +1 -1
- package/lib/src/embed/ts-embed.d.ts +1 -3
- package/lib/src/embed/ts-embed.d.ts.map +1 -1
- package/lib/src/embed/ts-embed.js +16 -44
- package/lib/src/embed/ts-embed.js.map +1 -1
- package/lib/src/embed/ts-embed.spec.js +0 -2
- package/lib/src/embed/ts-embed.spec.js.map +1 -1
- package/lib/src/index.d.ts +3 -3
- package/lib/src/index.d.ts.map +1 -1
- package/lib/src/index.js +2 -2
- package/lib/src/index.js.map +1 -1
- package/lib/src/react/all-types-export.d.ts +1 -2
- package/lib/src/react/all-types-export.d.ts.map +1 -1
- package/lib/src/react/all-types-export.js +2 -2
- package/lib/src/react/all-types-export.js.map +1 -1
- package/lib/src/react/all-types-export.spec.js +0 -8
- package/lib/src/react/all-types-export.spec.js.map +1 -1
- package/lib/src/react/index.d.ts +1 -2
- package/lib/src/react/index.d.ts.map +1 -1
- package/lib/src/react/index.js +4 -3
- package/lib/src/react/index.js.map +1 -1
- package/lib/src/react/util.d.ts +1 -0
- package/lib/src/react/util.d.ts.map +1 -1
- package/lib/src/types.d.ts +105 -143
- package/lib/src/types.d.ts.map +1 -1
- package/lib/src/types.js +102 -97
- package/lib/src/types.js.map +1 -1
- package/lib/src/utils/processData.d.ts +1 -1
- package/lib/src/utils/processData.d.ts.map +1 -1
- package/lib/src/utils/processData.js +8 -8
- package/lib/src/utils/processData.js.map +1 -1
- package/lib/src/utils/processData.spec.js.map +1 -1
- package/lib/src/utils/processTrigger.d.ts +2 -1
- package/lib/src/utils/processTrigger.d.ts.map +1 -1
- package/lib/src/utils/processTrigger.js +4 -2
- package/lib/src/utils/processTrigger.js.map +1 -1
- package/package.json +4 -3
- package/src/embed/app.spec.ts +45 -0
- package/src/embed/app.ts +26 -4
- package/src/embed/hostEventClient/contracts.ts +0 -10
- package/src/embed/hostEventClient/host-event-client.ts +7 -3
- package/src/embed/search.ts +1 -3
- package/src/embed/ts-embed.spec.ts +7 -9
- package/src/embed/ts-embed.ts +33 -68
- package/src/index.ts +3 -4
- package/src/react/all-types-export.spec.ts +1 -9
- package/src/react/all-types-export.ts +6 -10
- package/src/react/index.tsx +130 -155
- package/src/types.ts +104 -145
- package/src/utils/processData.spec.ts +1 -0
- package/src/utils/processData.ts +11 -11
- package/src/utils/processTrigger.ts +5 -2
- package/cjs/src/api-intercept.d.ts +0 -31
- package/cjs/src/api-intercept.d.ts.map +0 -1
- package/cjs/src/api-intercept.js +0 -119
- package/cjs/src/api-intercept.js.map +0 -1
- package/cjs/src/api-intercept.spec.d.ts +0 -2
- package/cjs/src/api-intercept.spec.d.ts.map +0 -1
- package/cjs/src/api-intercept.spec.js +0 -122
- package/cjs/src/api-intercept.spec.js.map +0 -1
- package/dist/index-BCC3Z072.js +0 -7371
- package/dist/index-BEzW4MDA.js +0 -7371
- package/dist/index-BaESA9rq.js +0 -7371
- package/dist/index-CFNZIcKr.js +0 -7447
- package/dist/index-CqKTa1Fe.js +0 -7447
- package/dist/index-DFnPKcjZ.js +0 -7447
- package/dist/index-DhFH7b7U.js +0 -7447
- package/dist/src/api-intercept.d.ts +0 -31
- package/dist/src/api-intercept.d.ts.map +0 -1
- package/dist/src/api-intercept.spec.d.ts +0 -2
- package/dist/src/api-intercept.spec.d.ts.map +0 -1
- package/lib/src/api-intercept.d.ts +0 -31
- package/lib/src/api-intercept.d.ts.map +0 -1
- package/lib/src/api-intercept.js +0 -112
- package/lib/src/api-intercept.js.map +0 -1
- package/lib/src/api-intercept.spec.d.ts +0 -2
- package/lib/src/api-intercept.spec.d.ts.map +0 -1
- package/lib/src/api-intercept.spec.js +0 -119
- package/lib/src/api-intercept.spec.js.map +0 -1
- package/src/api-intercept.ts +0 -139
|
@@ -6,14 +6,6 @@ describe('Exports', () => {
|
|
|
6
6
|
});
|
|
7
7
|
|
|
8
8
|
it('should not have undefined exports', () => {
|
|
9
|
-
|
|
10
|
-
.filter(([, exportValue]) => !Boolean(exportValue))
|
|
11
|
-
.map(([key]) => key);
|
|
12
|
-
// Helpful log if the expectation fails
|
|
13
|
-
if (undefinedKeys.length) {
|
|
14
|
-
// eslint-disable-next-line no-console
|
|
15
|
-
console.log('Undefined re-exports in all-types-export:', undefinedKeys);
|
|
16
|
-
}
|
|
17
|
-
Object.entries(Exports).forEach(([, exportValue]) => { expect(Boolean(exportValue)).toBe(true); });
|
|
9
|
+
Object.entries(Exports).forEach(([, exportValue]) => {expect(Boolean(exportValue)).toBe(true);});
|
|
18
10
|
});
|
|
19
11
|
});
|
|
@@ -29,29 +29,23 @@ export {
|
|
|
29
29
|
AuthFailureType,
|
|
30
30
|
AuthStatus,
|
|
31
31
|
AuthEvent,
|
|
32
|
-
|
|
32
|
+
AuthEventEmitter,
|
|
33
|
+
// types
|
|
33
34
|
Page,
|
|
34
35
|
AuthType,
|
|
36
|
+
RuntimeFilter,
|
|
35
37
|
RuntimeFilterOp,
|
|
36
38
|
EmbedEvent,
|
|
37
39
|
HostEvent,
|
|
38
40
|
DataSourceVisualMode,
|
|
39
41
|
Action,
|
|
40
|
-
PrefetchFeatures,
|
|
41
|
-
resetCachedAuthToken,
|
|
42
|
-
DataPanelCustomColumnGroupsAccordionState,
|
|
43
|
-
InterceptedApiType,
|
|
44
|
-
} from '../index';
|
|
45
|
-
|
|
46
|
-
export type {
|
|
47
|
-
// type-only exports
|
|
48
|
-
RuntimeFilter,
|
|
49
42
|
EmbedConfig,
|
|
50
43
|
SearchViewConfig,
|
|
51
44
|
SearchBarViewConfig,
|
|
52
45
|
LiveboardViewConfig,
|
|
53
46
|
SageViewConfig,
|
|
54
47
|
AppViewConfig,
|
|
48
|
+
PrefetchFeatures,
|
|
55
49
|
FrameParams,
|
|
56
50
|
DOMSelector,
|
|
57
51
|
MessageOptions,
|
|
@@ -62,5 +56,7 @@ export type {
|
|
|
62
56
|
customCssInterface,
|
|
63
57
|
CustomCssVariables,
|
|
64
58
|
RuntimeParameter,
|
|
59
|
+
resetCachedAuthToken,
|
|
65
60
|
UIPassthroughEvent,
|
|
61
|
+
DataPanelCustomColumnGroupsAccordionState,
|
|
66
62
|
} from '../index';
|
package/src/react/index.tsx
CHANGED
|
@@ -10,125 +10,101 @@ import { SearchEmbed as _SearchEmbed, SearchViewConfig } from '../embed/search';
|
|
|
10
10
|
import { AppEmbed as _AppEmbed, AppViewConfig } from '../embed/app';
|
|
11
11
|
import { LiveboardEmbed as _LiveboardEmbed, LiveboardViewConfig } from '../embed/liveboard';
|
|
12
12
|
import { TsEmbed } from '../embed/ts-embed';
|
|
13
|
-
import {
|
|
14
|
-
SpotterAgentEmbed as _SpotterAgentEmbed,
|
|
15
|
-
SpotterAgentEmbedViewConfig,
|
|
16
|
-
ConversationMessage as _ConversationMessage,
|
|
17
|
-
SpotterAgentMessageViewConfig,
|
|
18
|
-
} from '../embed/bodyless-conversation';
|
|
13
|
+
import { SpotterAgentEmbed as _SpotterAgentEmbed, SpotterAgentEmbedViewConfig, ConversationMessage as _ConversationMessage, SpotterAgentMessageViewConfig } from '../embed/bodyless-conversation';
|
|
19
14
|
|
|
20
15
|
import { EmbedConfig, EmbedEvent, AllEmbedViewConfig } from '../types';
|
|
21
16
|
import { EmbedProps, getViewPropsAndListeners } from './util';
|
|
22
|
-
import {
|
|
23
|
-
SpotterEmbed as _SpotterEmbed,
|
|
24
|
-
SpotterEmbedViewConfig,
|
|
25
|
-
ConversationEmbed as _ConversationEmbed,
|
|
26
|
-
ConversationViewConfig,
|
|
27
|
-
} from '../embed/conversation';
|
|
17
|
+
import { SpotterEmbed as _SpotterEmbed, SpotterEmbedViewConfig, ConversationEmbed as _ConversationEmbed, ConversationViewConfig } from '../embed/conversation';
|
|
28
18
|
import { init } from '../embed/base';
|
|
29
19
|
import { ERROR_MESSAGE } from '../errors';
|
|
30
20
|
|
|
31
|
-
const componentFactory = <
|
|
32
|
-
T extends typeof TsEmbed,
|
|
33
|
-
U extends EmbedProps,
|
|
34
|
-
V extends AllEmbedViewConfig
|
|
35
|
-
>(
|
|
21
|
+
const componentFactory = <T extends typeof TsEmbed, U extends EmbedProps, V extends AllEmbedViewConfig>(
|
|
36
22
|
EmbedConstructor: T,
|
|
37
23
|
// isPreRenderedComponent: Specifies whether the component being returned is
|
|
38
24
|
// intended for preRendering. If set to true, the component will call the
|
|
39
25
|
// Embed.preRender() method instead of the usual render method, and it will
|
|
40
26
|
// not be destroyed when the component is unmounted.
|
|
41
27
|
isPreRenderedComponent = false,
|
|
42
|
-
) =>
|
|
43
|
-
React.
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
return;
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
tsEmbed.destroy();
|
|
63
|
-
};
|
|
28
|
+
) => React.forwardRef<InstanceType<T>, U>(
|
|
29
|
+
(props: U, forwardedRef: React.MutableRefObject<InstanceType<T>>) => {
|
|
30
|
+
const ref = React.useRef<HTMLDivElement>(null);
|
|
31
|
+
const { className, style, ...embedProps } = props;
|
|
32
|
+
const { viewConfig, listeners } = getViewPropsAndListeners<Omit<U, 'className' | 'style'>, V>(
|
|
33
|
+
embedProps,
|
|
34
|
+
);
|
|
35
|
+
|
|
36
|
+
const handleDestroy = (tsEmbed: InstanceType<T>) => {
|
|
37
|
+
// do not destroy if it is a preRender component
|
|
38
|
+
if (isPreRenderedComponent) return;
|
|
39
|
+
|
|
40
|
+
// if component is connected to a preRendered component
|
|
41
|
+
if (props.preRenderId) {
|
|
42
|
+
tsEmbed.hidePreRender();
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
64
45
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
};
|
|
46
|
+
tsEmbed.destroy();
|
|
47
|
+
};
|
|
68
48
|
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
tsEmbed.showPreRender();
|
|
73
|
-
return;
|
|
74
|
-
}
|
|
49
|
+
const handlePreRenderRendering = (tsEmbed: InstanceType<T>) => {
|
|
50
|
+
tsEmbed.preRender();
|
|
51
|
+
};
|
|
75
52
|
|
|
76
|
-
|
|
77
|
-
|
|
53
|
+
const handleDefaultRendering = (tsEmbed: InstanceType<T>) => {
|
|
54
|
+
// if component is connected to a preRendered component
|
|
55
|
+
if (props.preRenderId) {
|
|
56
|
+
tsEmbed.showPreRender();
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
78
59
|
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
60
|
+
tsEmbed.render();
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
const handleRendering = (tsEmbed: InstanceType<T>) => {
|
|
64
|
+
if (isPreRenderedComponent) {
|
|
65
|
+
handlePreRenderRendering(tsEmbed);
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
handleDefaultRendering(tsEmbed);
|
|
69
|
+
};
|
|
86
70
|
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
},
|
|
71
|
+
useDeepCompareEffect(() => {
|
|
72
|
+
const tsEmbed = new EmbedConstructor(
|
|
73
|
+
ref!.current,
|
|
74
|
+
deepMerge(
|
|
75
|
+
{
|
|
76
|
+
insertAsSibling: viewConfig.insertAsSibling,
|
|
77
|
+
frameParams: {
|
|
78
|
+
class: viewConfig.insertAsSibling ? className || '' : '',
|
|
96
79
|
},
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
)
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
return viewConfig.insertAsSibling ? (
|
|
115
|
-
<span
|
|
116
|
-
data-testid="tsEmbed"
|
|
117
|
-
ref={ref}
|
|
118
|
-
style={{ position: 'absolute', ...preRenderStyles }}
|
|
119
|
-
></span>
|
|
120
|
-
) : (
|
|
121
|
-
<div
|
|
122
|
-
data-testid="tsEmbed"
|
|
123
|
-
ref={ref}
|
|
124
|
-
style={{ ...style, ...preRenderStyles }}
|
|
125
|
-
className={`ts-embed-container ${className}`}
|
|
126
|
-
></div>
|
|
127
|
-
);
|
|
128
|
-
},
|
|
129
|
-
);
|
|
80
|
+
},
|
|
81
|
+
viewConfig,
|
|
82
|
+
),
|
|
83
|
+
) as InstanceType<T>;
|
|
84
|
+
Object.keys(listeners).forEach((eventName) => {
|
|
85
|
+
tsEmbed.on(eventName as EmbedEvent, listeners[eventName as EmbedEvent]);
|
|
86
|
+
});
|
|
87
|
+
handleRendering(tsEmbed);
|
|
88
|
+
if (forwardedRef) {
|
|
89
|
+
// eslint-disable-next-line no-param-reassign
|
|
90
|
+
forwardedRef.current = tsEmbed;
|
|
91
|
+
}
|
|
92
|
+
return () => {
|
|
93
|
+
handleDestroy(tsEmbed);
|
|
94
|
+
};
|
|
95
|
+
}, [viewConfig, listeners]);
|
|
130
96
|
|
|
131
|
-
|
|
97
|
+
const preRenderStyles = isPreRenderedComponent ? { display: 'none' } : {};
|
|
98
|
+
|
|
99
|
+
return viewConfig.insertAsSibling ? (
|
|
100
|
+
<span data-testid="tsEmbed" ref={ref} style={{ position: 'absolute', ...preRenderStyles }}></span>
|
|
101
|
+
) : (
|
|
102
|
+
<div data-testid="tsEmbed" ref={ref} style={{ ...style, ...preRenderStyles }} className={`ts-embed-container ${className}`}></div>
|
|
103
|
+
);
|
|
104
|
+
},
|
|
105
|
+
);
|
|
106
|
+
|
|
107
|
+
interface SearchProps extends EmbedProps, SearchViewConfig { }
|
|
132
108
|
|
|
133
109
|
interface PreRenderProps {
|
|
134
110
|
/**
|
|
@@ -182,7 +158,7 @@ export const PreRenderedSearchEmbed = componentFactory<
|
|
|
182
158
|
SearchViewConfig
|
|
183
159
|
>(_SearchEmbed, true);
|
|
184
160
|
|
|
185
|
-
interface AppProps extends EmbedProps, AppViewConfig {}
|
|
161
|
+
interface AppProps extends EmbedProps, AppViewConfig { }
|
|
186
162
|
|
|
187
163
|
/**
|
|
188
164
|
* React component for Full app Embed.
|
|
@@ -223,7 +199,7 @@ export const PreRenderedAppEmbed = componentFactory<
|
|
|
223
199
|
AppViewConfig
|
|
224
200
|
>(_AppEmbed, true);
|
|
225
201
|
|
|
226
|
-
interface LiveboardProps extends EmbedProps, LiveboardViewConfig {}
|
|
202
|
+
interface LiveboardProps extends EmbedProps, LiveboardViewConfig { }
|
|
227
203
|
|
|
228
204
|
/**
|
|
229
205
|
* React component for Liveboard embed.
|
|
@@ -276,7 +252,7 @@ export const PreRenderedLiveboardEmbed = componentFactory<
|
|
|
276
252
|
|
|
277
253
|
export const PreRenderedPinboardEmbed = PreRenderedLiveboardEmbed;
|
|
278
254
|
|
|
279
|
-
interface SearchBarEmbedProps extends EmbedProps, SearchBarViewConfig {}
|
|
255
|
+
interface SearchBarEmbedProps extends EmbedProps, SearchBarViewConfig { }
|
|
280
256
|
|
|
281
257
|
/**
|
|
282
258
|
* React component for Search bar embed.
|
|
@@ -320,7 +296,7 @@ export const PreRenderedSearchBarEmbed = componentFactory<
|
|
|
320
296
|
SearchBarViewConfig
|
|
321
297
|
>(_SearchBarEmbed, true);
|
|
322
298
|
|
|
323
|
-
interface SageEmbedProps extends EmbedProps, SageViewConfig {}
|
|
299
|
+
interface SageEmbedProps extends EmbedProps, SageViewConfig { }
|
|
324
300
|
|
|
325
301
|
/**
|
|
326
302
|
* React component for LLM based search Sage embed.
|
|
@@ -362,8 +338,8 @@ export const PreRenderedSageEmbed = componentFactory<
|
|
|
362
338
|
SageViewConfig
|
|
363
339
|
>(_SageEmbed, true);
|
|
364
340
|
|
|
365
|
-
interface SpotterEmbedProps extends EmbedProps, SpotterEmbedViewConfig {}
|
|
366
|
-
interface ConversationEmbedProps extends EmbedProps, ConversationViewConfig {}
|
|
341
|
+
interface SpotterEmbedProps extends EmbedProps, SpotterEmbedViewConfig { }
|
|
342
|
+
interface ConversationEmbedProps extends EmbedProps, ConversationViewConfig { }
|
|
367
343
|
|
|
368
344
|
/**
|
|
369
345
|
* React component for LLM based conversation BI.
|
|
@@ -386,6 +362,7 @@ export const SpotterEmbed = componentFactory<
|
|
|
386
362
|
SpotterEmbedViewConfig
|
|
387
363
|
>(_SpotterEmbed);
|
|
388
364
|
|
|
365
|
+
|
|
389
366
|
/**
|
|
390
367
|
* React component for LLM based conversation BI.
|
|
391
368
|
* @deprecated from SDK: 1.39.0 | ThoughtSpot: 10.10.0.cl
|
|
@@ -425,27 +402,27 @@ export const ConversationMessage = componentFactory<
|
|
|
425
402
|
type SpotterMessageProps = {
|
|
426
403
|
message: SpotterAgentMessageViewConfig;
|
|
427
404
|
query?: string;
|
|
428
|
-
} & Omit<EmbedProps, keyof SpotterAgentMessageViewConfig>;
|
|
405
|
+
} & Omit<EmbedProps, keyof SpotterAgentMessageViewConfig>;
|
|
429
406
|
|
|
430
407
|
/**
|
|
431
408
|
* React component for displaying individual conversation messages from SpotterAgent.
|
|
432
|
-
*
|
|
409
|
+
*
|
|
433
410
|
* This component renders a single message response from your ThoughtSpot conversation,
|
|
434
411
|
* showing charts, visualizations, or text responses based on the user's query.
|
|
435
|
-
*
|
|
412
|
+
*
|
|
436
413
|
* @example
|
|
437
414
|
* ```tsx
|
|
438
415
|
* const { sendMessage } = useSpotterAgent({ worksheetId: 'worksheetId' });
|
|
439
416
|
* const result = await sendMessage('show me sales by region');
|
|
440
|
-
*
|
|
417
|
+
*
|
|
441
418
|
* if (!result.error) {
|
|
442
419
|
* // Simple usage - just pass the message data
|
|
443
420
|
* <SpotterMessage message={result.message} />
|
|
444
|
-
*
|
|
421
|
+
*
|
|
445
422
|
* // With optional query for context
|
|
446
|
-
* <SpotterMessage
|
|
447
|
-
* message={result.message}
|
|
448
|
-
* query={result.query}
|
|
423
|
+
* <SpotterMessage
|
|
424
|
+
* message={result.message}
|
|
425
|
+
* query={result.query}
|
|
449
426
|
* />
|
|
450
427
|
* }
|
|
451
428
|
* ```
|
|
@@ -456,8 +433,14 @@ export const SpotterMessage = React.forwardRef<
|
|
|
456
433
|
SpotterMessageProps
|
|
457
434
|
>((props, ref) => {
|
|
458
435
|
const { message, query: _, ...otherProps } = props;
|
|
459
|
-
|
|
460
|
-
return
|
|
436
|
+
|
|
437
|
+
return (
|
|
438
|
+
<ConversationMessage
|
|
439
|
+
ref={ref}
|
|
440
|
+
{...message}
|
|
441
|
+
{...otherProps}
|
|
442
|
+
/>
|
|
443
|
+
);
|
|
461
444
|
});
|
|
462
445
|
|
|
463
446
|
/**
|
|
@@ -484,8 +467,7 @@ export const PreRenderedConversationEmbed = componentFactory<
|
|
|
484
467
|
SpotterEmbedViewConfig
|
|
485
468
|
>(_SpotterEmbed, true);
|
|
486
469
|
|
|
487
|
-
type EmbedComponent =
|
|
488
|
-
| typeof SearchEmbed
|
|
470
|
+
type EmbedComponent = typeof SearchEmbed
|
|
489
471
|
| typeof AppEmbed
|
|
490
472
|
| typeof LiveboardEmbed
|
|
491
473
|
| typeof SearchBarEmbed
|
|
@@ -511,9 +493,8 @@ type EmbedComponent =
|
|
|
511
493
|
* ```
|
|
512
494
|
* @returns {React.MutableRefObject<T extends TsEmbed>} ref
|
|
513
495
|
*/
|
|
514
|
-
export function useEmbedRef<T extends EmbedComponent>():
|
|
515
|
-
React.ComponentRef<T
|
|
516
|
-
> {
|
|
496
|
+
export function useEmbedRef<T extends EmbedComponent>():
|
|
497
|
+
React.MutableRefObject<React.ComponentRef<T>> {
|
|
517
498
|
return React.useRef<React.ComponentRef<T>>(null);
|
|
518
499
|
}
|
|
519
500
|
|
|
@@ -542,19 +523,19 @@ export function useInit(config: EmbedConfig) {
|
|
|
542
523
|
|
|
543
524
|
/**
|
|
544
525
|
* React hook for interacting with SpotterAgent AI conversations.
|
|
545
|
-
*
|
|
526
|
+
*
|
|
546
527
|
* This hook provides a sendMessage function that allows you to send natural language
|
|
547
528
|
* queries to your data and get back AI-generated responses with visualizations.
|
|
548
|
-
*
|
|
529
|
+
*
|
|
549
530
|
* @param config - Configuration object containing worksheetId and other options
|
|
550
531
|
* @returns Object with sendMessage function that returns conversation results
|
|
551
532
|
* @example
|
|
552
533
|
* ```tsx
|
|
553
534
|
* const { sendMessage } = useSpotterAgent({ worksheetId: 'worksheetId' });
|
|
554
|
-
*
|
|
535
|
+
*
|
|
555
536
|
* const handleQuery = async () => {
|
|
556
537
|
* const result = await sendMessage('show me sales by region');
|
|
557
|
-
*
|
|
538
|
+
*
|
|
558
539
|
* if (!result.error) {
|
|
559
540
|
* // Display the message response
|
|
560
541
|
* <SpotterMessage message={result.message} />
|
|
@@ -567,41 +548,38 @@ export function useInit(config: EmbedConfig) {
|
|
|
567
548
|
*/
|
|
568
549
|
export function useSpotterAgent(config: SpotterAgentEmbedViewConfig) {
|
|
569
550
|
const serviceRef = useRef<_SpotterAgentEmbed | null>(null);
|
|
570
|
-
|
|
551
|
+
|
|
571
552
|
useDeepCompareEffect(() => {
|
|
572
553
|
if (serviceRef.current) {
|
|
573
554
|
serviceRef.current = null;
|
|
574
555
|
}
|
|
575
|
-
|
|
556
|
+
|
|
576
557
|
serviceRef.current = new _SpotterAgentEmbed(config);
|
|
577
|
-
|
|
558
|
+
|
|
578
559
|
return () => {
|
|
579
560
|
serviceRef.current = null;
|
|
580
561
|
};
|
|
581
562
|
}, [config]);
|
|
582
563
|
|
|
583
|
-
const sendMessage = useCallback(
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
}
|
|
564
|
+
const sendMessage = useCallback(async (query: string) => {
|
|
565
|
+
if (!serviceRef.current) {
|
|
566
|
+
return { error: new Error(ERROR_MESSAGE.SPOTTER_AGENT_NOT_INITIALIZED) };
|
|
567
|
+
}
|
|
588
568
|
|
|
589
|
-
|
|
569
|
+
const result = await serviceRef.current.sendMessageData(query);
|
|
590
570
|
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
571
|
+
if (result.error) {
|
|
572
|
+
return { error: result.error };
|
|
573
|
+
}
|
|
594
574
|
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
[config.worksheetId],
|
|
604
|
-
);
|
|
575
|
+
return {
|
|
576
|
+
query: query,
|
|
577
|
+
message: {
|
|
578
|
+
...result.data,
|
|
579
|
+
worksheetId: config.worksheetId,
|
|
580
|
+
},
|
|
581
|
+
};
|
|
582
|
+
}, [config.worksheetId]);
|
|
605
583
|
|
|
606
584
|
return {
|
|
607
585
|
sendMessage,
|
|
@@ -609,11 +587,16 @@ export function useSpotterAgent(config: SpotterAgentEmbedViewConfig) {
|
|
|
609
587
|
}
|
|
610
588
|
|
|
611
589
|
export {
|
|
590
|
+
LiveboardViewConfig,
|
|
591
|
+
SearchViewConfig,
|
|
592
|
+
AppViewConfig,
|
|
612
593
|
Page,
|
|
594
|
+
RuntimeFilter,
|
|
613
595
|
RuntimeFilterOp,
|
|
614
596
|
EmbedEvent,
|
|
615
597
|
HostEvent,
|
|
616
598
|
Action,
|
|
599
|
+
FrameParams,
|
|
617
600
|
HomeLeftNavItem,
|
|
618
601
|
HomepageModule,
|
|
619
602
|
LogLevel,
|
|
@@ -621,11 +604,3 @@ export {
|
|
|
621
604
|
ListPageColumns,
|
|
622
605
|
CustomActionsPosition,
|
|
623
606
|
} from '../index';
|
|
624
|
-
|
|
625
|
-
export type {
|
|
626
|
-
RuntimeFilter,
|
|
627
|
-
LiveboardViewConfig,
|
|
628
|
-
SearchViewConfig,
|
|
629
|
-
AppViewConfig,
|
|
630
|
-
FrameParams,
|
|
631
|
-
} from '../index';
|