@patternfly/chatbot 2.2.1 → 6.3.0-prerelease.2
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/cjs/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.d.ts +4 -0
- package/dist/cjs/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.js +7 -1
- package/dist/cjs/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.test.js +23 -0
- package/dist/cjs/Message/Message.d.ts +17 -1
- package/dist/cjs/Message/Message.js +53 -34
- package/dist/cjs/Message/Message.test.js +52 -0
- package/dist/cjs/Message/MessageInput.d.ts +18 -0
- package/dist/cjs/Message/MessageInput.js +34 -0
- package/dist/cjs/MessageBar/MessageBar.d.ts +4 -0
- package/dist/cjs/MessageBar/MessageBar.js +2 -2
- package/dist/cjs/MessageBar/MessageBar.test.js +13 -0
- package/dist/cjs/MessageBar/MicrophoneButton.js +1 -1
- package/dist/cjs/MessageBox/MessageBox.js +5 -5
- package/dist/cjs/SourcesCard/SourcesCard.d.ts +7 -1
- package/dist/cjs/SourcesCard/SourcesCard.js +16 -10
- package/dist/cjs/SourcesCard/SourcesCard.test.js +25 -15
- package/dist/cjs/tracking/console_tracking_provider.d.ts +4 -5
- package/dist/cjs/tracking/console_tracking_provider.js +22 -15
- package/dist/cjs/tracking/posthog_tracking_provider.d.ts +2 -2
- package/dist/cjs/tracking/posthog_tracking_provider.js +21 -12
- package/dist/cjs/tracking/segment_tracking_provider.d.ts +2 -2
- package/dist/cjs/tracking/segment_tracking_provider.js +21 -12
- package/dist/cjs/tracking/trackingProviderProxy.d.ts +1 -1
- package/dist/cjs/tracking/trackingProviderProxy.js +2 -2
- package/dist/cjs/tracking/tracking_api.d.ts +1 -1
- package/dist/cjs/tracking/tracking_registry.js +46 -12
- package/dist/cjs/tracking/tracking_spi.d.ts +15 -5
- package/dist/cjs/tracking/tracking_spi.js +9 -0
- package/dist/cjs/tracking/umami_tracking_provider.d.ts +6 -2
- package/dist/cjs/tracking/umami_tracking_provider.js +66 -22
- package/dist/css/main.css +7 -7
- package/dist/css/main.css.map +1 -1
- package/dist/esm/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.d.ts +4 -0
- package/dist/esm/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.js +7 -1
- package/dist/esm/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.test.js +23 -0
- package/dist/esm/Message/Message.d.ts +17 -1
- package/dist/esm/Message/Message.js +53 -34
- package/dist/esm/Message/Message.test.js +52 -0
- package/dist/esm/Message/MessageInput.d.ts +18 -0
- package/dist/esm/Message/MessageInput.js +29 -0
- package/dist/esm/MessageBar/MessageBar.d.ts +4 -0
- package/dist/esm/MessageBar/MessageBar.js +2 -2
- package/dist/esm/MessageBar/MessageBar.test.js +13 -0
- package/dist/esm/MessageBar/MicrophoneButton.js +1 -1
- package/dist/esm/MessageBox/MessageBox.js +5 -5
- package/dist/esm/SourcesCard/SourcesCard.d.ts +7 -1
- package/dist/esm/SourcesCard/SourcesCard.js +17 -11
- package/dist/esm/SourcesCard/SourcesCard.test.js +25 -15
- package/dist/esm/tracking/console_tracking_provider.d.ts +4 -5
- package/dist/esm/tracking/console_tracking_provider.js +22 -15
- package/dist/esm/tracking/posthog_tracking_provider.d.ts +2 -2
- package/dist/esm/tracking/posthog_tracking_provider.js +21 -12
- package/dist/esm/tracking/segment_tracking_provider.d.ts +2 -2
- package/dist/esm/tracking/segment_tracking_provider.js +21 -12
- package/dist/esm/tracking/trackingProviderProxy.d.ts +1 -1
- package/dist/esm/tracking/trackingProviderProxy.js +2 -2
- package/dist/esm/tracking/tracking_api.d.ts +1 -1
- package/dist/esm/tracking/tracking_registry.js +46 -12
- package/dist/esm/tracking/tracking_spi.d.ts +15 -5
- package/dist/esm/tracking/tracking_spi.js +8 -1
- package/dist/esm/tracking/umami_tracking_provider.d.ts +6 -2
- package/dist/esm/tracking/umami_tracking_provider.js +66 -22
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/patternfly-docs/content/extensions/chatbot/examples/Analytics/Analytics.md +18 -14
- package/patternfly-docs/content/extensions/chatbot/examples/Messages/BotMessage.tsx +74 -104
- package/patternfly-docs/content/extensions/chatbot/examples/Messages/FileDetailsLabel.tsx +48 -37
- package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithQuickResponses.tsx +10 -0
- package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithSources.tsx +51 -14
- package/patternfly-docs/content/extensions/chatbot/examples/Messages/Messages.md +3 -1
- package/patternfly-docs/content/extensions/chatbot/examples/Messages/UserMessage.tsx +80 -104
- package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotHeaderDrawer.tsx +35 -2
- package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotHeaderDrawerResizable.tsx +13 -2
- package/patternfly-docs/content/extensions/chatbot/examples/UI/UI.md +1 -1
- package/patternfly-docs/content/extensions/chatbot/examples/demos/Chatbot.tsx +6 -3
- package/patternfly-docs/content/extensions/chatbot/examples/demos/ChatbotAttachment.tsx +2 -0
- package/patternfly-docs/content/extensions/chatbot/examples/demos/ChatbotAttachmentMenu.tsx +2 -0
- package/patternfly-docs/content/extensions/chatbot/examples/demos/ChatbotInDrawer.tsx +2 -0
- package/patternfly-docs/content/extensions/chatbot/examples/demos/EmbeddedChatbot.tsx +2 -0
- package/patternfly-docs/content/extensions/chatbot/examples/demos/EmbeddedComparisonChatbot.tsx +62 -57
- package/patternfly-docs/content/extensions/chatbot/examples/demos/Feedback.tsx +2 -0
- package/src/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.test.tsx +53 -0
- package/src/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.tsx +14 -0
- package/src/Message/Message.scss +4 -0
- package/src/Message/Message.test.tsx +62 -0
- package/src/Message/Message.tsx +111 -53
- package/src/Message/MessageInput.tsx +59 -0
- package/src/MessageBar/MessageBar.test.tsx +13 -0
- package/src/MessageBar/MessageBar.tsx +8 -2
- package/src/MessageBar/MicrophoneButton.tsx +1 -1
- package/src/MessageBox/MessageBox.tsx +5 -5
- package/src/SourcesCard/SourcesCard.scss +3 -7
- package/src/SourcesCard/SourcesCard.test.tsx +30 -22
- package/src/SourcesCard/SourcesCard.tsx +54 -12
- package/src/tracking/console_tracking_provider.ts +21 -17
- package/src/tracking/posthog_tracking_provider.ts +20 -13
- package/src/tracking/segment_tracking_provider.ts +20 -13
- package/src/tracking/trackingProviderProxy.ts +2 -2
- package/src/tracking/tracking_api.ts +1 -1
- package/src/tracking/tracking_registry.ts +46 -13
- package/src/tracking/tracking_spi.ts +18 -7
- package/src/tracking/umami_tracking_provider.ts +76 -20
- package/src/SourcesCard/__snapshots__/SourcesCard.test.tsx.snap +0 -34
@@ -13,17 +13,13 @@ import userEvent from '@testing-library/user-event';
|
|
13
13
|
import '@testing-library/jest-dom';
|
14
14
|
import SourcesCard from './SourcesCard';
|
15
15
|
describe('SourcesCard', () => {
|
16
|
-
it('should render card', () => {
|
17
|
-
const { container } = render(React.createElement(SourcesCard, { sources: [{ link: '' }] }));
|
18
|
-
expect(container).toMatchSnapshot();
|
19
|
-
});
|
20
16
|
it('should render card correctly if one source with only a link is passed in', () => {
|
21
17
|
render(React.createElement(SourcesCard, { sources: [{ link: '' }] }));
|
22
18
|
expect(screen.getByText('1 source')).toBeTruthy();
|
23
19
|
expect(screen.getByText('Source 1')).toBeTruthy();
|
24
20
|
// no buttons or navigation when there is only 1 source
|
25
21
|
expect(screen.queryByRole('button')).toBeFalsy();
|
26
|
-
expect(screen.queryByText('1
|
22
|
+
expect(screen.queryByText('1/1')).toBeFalsy();
|
27
23
|
});
|
28
24
|
it('should render card correctly if one source with a title is passed in', () => {
|
29
25
|
render(React.createElement(SourcesCard, { sources: [{ title: 'How to make an apple pie', link: '' }] }));
|
@@ -48,7 +44,7 @@ describe('SourcesCard', () => {
|
|
48
44
|
] }));
|
49
45
|
expect(screen.getByText('2 sources')).toBeTruthy();
|
50
46
|
expect(screen.getByText('How to make an apple pie')).toBeTruthy();
|
51
|
-
expect(screen.getByText('1
|
47
|
+
expect(screen.getByText('1/2')).toBeTruthy();
|
52
48
|
screen.getByRole('button', { name: /Go to previous page/i });
|
53
49
|
screen.getByRole('button', { name: /Go to next page/i });
|
54
50
|
});
|
@@ -58,12 +54,12 @@ describe('SourcesCard', () => {
|
|
58
54
|
{ title: 'How to make cookies', link: '' }
|
59
55
|
] }));
|
60
56
|
expect(screen.getByText('How to make an apple pie')).toBeTruthy();
|
61
|
-
expect(screen.getByText('1
|
57
|
+
expect(screen.getByText('1/2')).toBeTruthy();
|
62
58
|
expect(screen.getByRole('button', { name: /Go to previous page/i })).toBeDisabled();
|
63
59
|
yield userEvent.click(screen.getByRole('button', { name: /Go to next page/i }));
|
64
60
|
expect(screen.queryByText('How to make an apple pie')).toBeFalsy();
|
65
61
|
expect(screen.getByText('How to make cookies')).toBeTruthy();
|
66
|
-
expect(screen.getByText('2
|
62
|
+
expect(screen.getByText('2/2')).toBeTruthy();
|
67
63
|
expect(screen.getByRole('button', { name: /Go to previous page/i })).toBeEnabled();
|
68
64
|
expect(screen.getByRole('button', { name: /Go to next page/i })).toBeDisabled();
|
69
65
|
}));
|
@@ -83,13 +79,6 @@ describe('SourcesCard', () => {
|
|
83
79
|
expect(screen.getByRole('button', { name: /Go to previous page/i })).toBeDisabled();
|
84
80
|
expect(screen.getByRole('button', { name: /Go to next page/i })).toBeDisabled();
|
85
81
|
});
|
86
|
-
it('should change ofWord appropriately', () => {
|
87
|
-
render(React.createElement(SourcesCard, { sources: [
|
88
|
-
{ title: 'How to make an apple pie', link: '' },
|
89
|
-
{ title: 'How to make cookies', link: '' }
|
90
|
-
], ofWord: 'de' }));
|
91
|
-
expect(screen.getByText('1 de 2')).toBeTruthy();
|
92
|
-
});
|
93
82
|
it('should render navigation aria label appropriately', () => {
|
94
83
|
render(React.createElement(SourcesCard, { sources: [
|
95
84
|
{ title: 'How to make an apple pie', link: '' },
|
@@ -159,4 +148,25 @@ describe('SourcesCard', () => {
|
|
159
148
|
yield userEvent.click(screen.getByRole('button', { name: /Go to previous page/i }));
|
160
149
|
expect(spy).toHaveBeenCalledTimes(2);
|
161
150
|
}));
|
151
|
+
it('should handle showMore appropriately', () => __awaiter(void 0, void 0, void 0, function* () {
|
152
|
+
render(React.createElement(SourcesCard, { sources: [
|
153
|
+
{
|
154
|
+
title: 'Getting started with Red Hat OpenShift',
|
155
|
+
link: '#',
|
156
|
+
body: 'Red Hat OpenShift on IBM Cloud is a managed offering to create your own cluster of compute hosts where you can deploy and manage containerized apps on IBM Cloud ...',
|
157
|
+
hasShowMore: true
|
158
|
+
},
|
159
|
+
{
|
160
|
+
title: 'Azure Red Hat OpenShift documentation',
|
161
|
+
link: '#',
|
162
|
+
body: 'Microsoft Azure Red Hat OpenShift allows you to deploy a production ready Red Hat OpenShift cluster in Azure ...'
|
163
|
+
},
|
164
|
+
{
|
165
|
+
title: 'OKD Documentation: Home',
|
166
|
+
link: '#',
|
167
|
+
body: 'OKD is a distribution of Kubernetes optimized for continuous application development and multi-tenant deployment. OKD also serves as the upstream code base upon ...'
|
168
|
+
}
|
169
|
+
] }));
|
170
|
+
expect(screen.getByRole('region')).toHaveAttribute('class', 'pf-v6-c-expandable-section__content');
|
171
|
+
}));
|
162
172
|
});
|
@@ -1,10 +1,9 @@
|
|
1
|
-
import { TrackingSpi } from './tracking_spi';
|
1
|
+
import { InitProps, TrackingSpi } from './tracking_spi';
|
2
2
|
import { TrackingApi, TrackingEventProperties } from './tracking_api';
|
3
3
|
export declare class ConsoleTrackingProvider implements TrackingSpi, TrackingApi {
|
4
|
+
private verbose;
|
4
5
|
trackPageView(url: string | undefined): void;
|
5
|
-
|
6
|
-
|
7
|
-
identify(userID: string): void;
|
6
|
+
initialize(props: InitProps): void;
|
7
|
+
identify(userID: string, userProperties?: TrackingEventProperties): void;
|
8
8
|
trackSingleItem(item: string, properties?: TrackingEventProperties): void;
|
9
|
-
getKey(): string;
|
10
9
|
}
|
@@ -1,23 +1,30 @@
|
|
1
1
|
export class ConsoleTrackingProvider {
|
2
|
+
constructor() {
|
3
|
+
this.verbose = false;
|
4
|
+
}
|
2
5
|
trackPageView(url) {
|
3
|
-
|
4
|
-
|
6
|
+
if (this.verbose) {
|
7
|
+
// eslint-disable-next-line no-console
|
8
|
+
console.log('ConsoleProvider pageView ', url);
|
9
|
+
}
|
5
10
|
}
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
+
initialize(props) {
|
12
|
+
this.verbose = props.verbose;
|
13
|
+
if (this.verbose) {
|
14
|
+
// eslint-disable-next-line no-console
|
15
|
+
console.log('ConsoleProvider initialize');
|
16
|
+
}
|
11
17
|
}
|
12
|
-
identify(userID) {
|
13
|
-
|
14
|
-
|
18
|
+
identify(userID, userProperties = {}) {
|
19
|
+
if (this.verbose) {
|
20
|
+
// eslint-disable-next-line no-console
|
21
|
+
console.log('ConsoleProvider identify ', userID, userProperties);
|
22
|
+
}
|
15
23
|
}
|
16
24
|
trackSingleItem(item, properties) {
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
return 'console';
|
25
|
+
if (this.verbose) {
|
26
|
+
// eslint-disable-next-line no-console
|
27
|
+
console.log('ConsoleProvider: ' + item, properties);
|
28
|
+
}
|
22
29
|
}
|
23
30
|
}
|
@@ -1,9 +1,9 @@
|
|
1
1
|
import { TrackingApi, TrackingEventProperties } from './tracking_api';
|
2
2
|
import { InitProps, TrackingSpi } from './tracking_spi';
|
3
3
|
export declare class PosthogTrackingProvider implements TrackingSpi, TrackingApi {
|
4
|
-
|
4
|
+
private verbose;
|
5
5
|
initialize(props: InitProps): void;
|
6
|
-
identify(userID: string): void;
|
6
|
+
identify(userID: string, userProperties?: TrackingEventProperties): void;
|
7
7
|
trackPageView(url: string | undefined): void;
|
8
8
|
trackSingleItem(item: string, properties?: TrackingEventProperties): void;
|
9
9
|
}
|
@@ -1,11 +1,14 @@
|
|
1
1
|
import { posthog } from 'posthog-js';
|
2
2
|
export class PosthogTrackingProvider {
|
3
|
-
|
4
|
-
|
3
|
+
constructor() {
|
4
|
+
this.verbose = false;
|
5
5
|
}
|
6
6
|
initialize(props) {
|
7
|
-
|
8
|
-
|
7
|
+
this.verbose = props.verbose;
|
8
|
+
if (this.verbose) {
|
9
|
+
// eslint-disable-next-line no-console
|
10
|
+
console.log('PosthogProvider initialize');
|
11
|
+
}
|
9
12
|
const posthogKey = props.posthogKey;
|
10
13
|
posthog.init(posthogKey, {
|
11
14
|
// eslint-disable-next-line camelcase
|
@@ -14,20 +17,26 @@ export class PosthogTrackingProvider {
|
|
14
17
|
person_profiles: 'identified_only' // or 'always' to create profiles for anonymous users as well
|
15
18
|
});
|
16
19
|
}
|
17
|
-
identify(userID) {
|
18
|
-
|
19
|
-
|
20
|
-
|
20
|
+
identify(userID, userProperties = {}) {
|
21
|
+
if (this.verbose) {
|
22
|
+
// eslint-disable-next-line no-console
|
23
|
+
console.log('PosthogProvider userID: ' + userID);
|
24
|
+
}
|
25
|
+
posthog.identify(userID, userProperties);
|
21
26
|
}
|
22
27
|
trackPageView(url) {
|
23
|
-
|
24
|
-
|
28
|
+
if (this.verbose) {
|
29
|
+
// eslint-disable-next-line no-console
|
30
|
+
console.log('PostHogProvider url ', url);
|
31
|
+
}
|
25
32
|
// TODO posthog seems to record that automatically.
|
26
33
|
// How to not clash with this here? Just leave as no-op?
|
27
34
|
}
|
28
35
|
trackSingleItem(item, properties) {
|
29
|
-
|
30
|
-
|
36
|
+
if (this.verbose) {
|
37
|
+
// eslint-disable-next-line no-console
|
38
|
+
console.log('PosthogProvider: trackSingleItem ' + item, properties);
|
39
|
+
}
|
31
40
|
posthog.capture(item, { properties });
|
32
41
|
}
|
33
42
|
}
|
@@ -2,9 +2,9 @@ import { TrackingApi, TrackingEventProperties } from './tracking_api';
|
|
2
2
|
import { InitProps, TrackingSpi } from './tracking_spi';
|
3
3
|
export declare class SegmentTrackingProvider implements TrackingSpi, TrackingApi {
|
4
4
|
private analytics;
|
5
|
-
|
5
|
+
private verbose;
|
6
6
|
initialize(props: InitProps): void;
|
7
|
-
identify(userID: string): void;
|
7
|
+
identify(userID: string, userProperties?: TrackingEventProperties): void;
|
8
8
|
trackPageView(url: string | undefined): void;
|
9
9
|
trackSingleItem(item: string, properties?: TrackingEventProperties): void;
|
10
10
|
}
|
@@ -1,11 +1,14 @@
|
|
1
1
|
import { AnalyticsBrowser } from '@segment/analytics-next';
|
2
2
|
export class SegmentTrackingProvider {
|
3
|
-
|
4
|
-
|
3
|
+
constructor() {
|
4
|
+
this.verbose = false;
|
5
5
|
}
|
6
6
|
initialize(props) {
|
7
|
-
|
8
|
-
|
7
|
+
this.verbose = props.verbose;
|
8
|
+
if (this.verbose) {
|
9
|
+
// eslint-disable-next-line no-console
|
10
|
+
console.log('SegmentProvider initialize');
|
11
|
+
}
|
9
12
|
const segmentKey = props.segmentKey;
|
10
13
|
// We need to create an object here, as ts lint is unhappy otherwise
|
11
14
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
@@ -17,16 +20,20 @@ export class SegmentTrackingProvider {
|
|
17
20
|
integrations: Object.assign({}, integrations)
|
18
21
|
});
|
19
22
|
}
|
20
|
-
identify(userID) {
|
21
|
-
|
22
|
-
|
23
|
+
identify(userID, userProperties = {}) {
|
24
|
+
if (this.verbose) {
|
25
|
+
// eslint-disable-next-line no-console
|
26
|
+
console.log('SegmentProvider userID: ' + userID);
|
27
|
+
}
|
23
28
|
if (this.analytics) {
|
24
|
-
this.analytics.identify(userID);
|
29
|
+
this.analytics.identify(userID, userProperties);
|
25
30
|
}
|
26
31
|
}
|
27
32
|
trackPageView(url) {
|
28
|
-
|
29
|
-
|
33
|
+
if (this.verbose) {
|
34
|
+
// eslint-disable-next-line no-console
|
35
|
+
console.log('SegmentProvider url ', url);
|
36
|
+
}
|
30
37
|
if (this.analytics) {
|
31
38
|
if (url) {
|
32
39
|
this.analytics.page(url);
|
@@ -37,8 +44,10 @@ export class SegmentTrackingProvider {
|
|
37
44
|
}
|
38
45
|
}
|
39
46
|
trackSingleItem(item, properties) {
|
40
|
-
|
41
|
-
|
47
|
+
if (this.verbose) {
|
48
|
+
// eslint-disable-next-line no-console
|
49
|
+
console.log('SegmentProvider: trackSingleItem ' + item, properties);
|
50
|
+
}
|
42
51
|
if (this.analytics) {
|
43
52
|
this.analytics.track(item, { properties });
|
44
53
|
}
|
@@ -2,7 +2,7 @@ import { TrackingApi, TrackingEventProperties } from './tracking_api';
|
|
2
2
|
declare class TrackingProviderProxy implements TrackingApi {
|
3
3
|
providers: TrackingApi[];
|
4
4
|
constructor(providers: TrackingApi[]);
|
5
|
-
identify(userID: string): void;
|
5
|
+
identify(userID: string, userProperties?: TrackingEventProperties): void;
|
6
6
|
trackSingleItem(eventName: string, properties?: TrackingEventProperties): void;
|
7
7
|
trackPageView(url: string | undefined): void;
|
8
8
|
}
|
@@ -3,9 +3,9 @@ class TrackingProviderProxy {
|
|
3
3
|
this.providers = [];
|
4
4
|
this.providers = providers;
|
5
5
|
}
|
6
|
-
identify(userID) {
|
6
|
+
identify(userID, userProperties = {}) {
|
7
7
|
for (const provider of this.providers) {
|
8
|
-
provider.identify(userID);
|
8
|
+
provider.identify(userID, userProperties);
|
9
9
|
}
|
10
10
|
}
|
11
11
|
trackSingleItem(eventName, properties) {
|
@@ -2,7 +2,7 @@ export interface TrackingEventProperties {
|
|
2
2
|
[key: string]: string | number | boolean | undefined;
|
3
3
|
}
|
4
4
|
export interface TrackingApi {
|
5
|
-
identify: (userID: string) => void;
|
5
|
+
identify: (userID: string, userProperties: TrackingEventProperties) => void;
|
6
6
|
trackPageView: (url: string | undefined) => void;
|
7
7
|
trackSingleItem: (eventName: string, properties: TrackingEventProperties | undefined) => void;
|
8
8
|
}
|
@@ -1,3 +1,4 @@
|
|
1
|
+
import { Providers } from './tracking_spi';
|
1
2
|
import TrackingProviderProxy from './trackingProviderProxy';
|
2
3
|
import { ConsoleTrackingProvider } from './console_tracking_provider';
|
3
4
|
import { SegmentTrackingProvider } from './segment_tracking_provider';
|
@@ -5,22 +6,55 @@ import { PosthogTrackingProvider } from './posthog_tracking_provider';
|
|
5
6
|
import { UmamiTrackingProvider } from './umami_tracking_provider';
|
6
7
|
export const getTrackingProviders = (initProps) => {
|
7
8
|
const providers = [];
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
if (initProps.activeProviders) {
|
10
|
+
let tmpProps = initProps.activeProviders;
|
11
|
+
// Theoretically we get an array of provider names, but it could also be a CSV string...
|
12
|
+
if (!Array.isArray(initProps.activeProviders)) {
|
13
|
+
const tmpString = initProps.activeProviders;
|
14
|
+
if (tmpString && tmpString.indexOf(',') !== -1) {
|
15
|
+
tmpProps = tmpString.split(',');
|
16
|
+
}
|
17
|
+
else {
|
18
|
+
tmpProps = [tmpString];
|
19
|
+
}
|
20
|
+
}
|
21
|
+
tmpProps.forEach((provider) => {
|
22
|
+
switch (Providers[provider]) {
|
23
|
+
case Providers.Segment:
|
24
|
+
providers.push(new SegmentTrackingProvider());
|
25
|
+
break;
|
26
|
+
case Providers.Umami:
|
27
|
+
providers.push(new UmamiTrackingProvider());
|
28
|
+
break;
|
29
|
+
case Providers.Posthog:
|
30
|
+
providers.push(new PosthogTrackingProvider());
|
31
|
+
break;
|
32
|
+
case Providers.Console:
|
33
|
+
providers.push(new ConsoleTrackingProvider());
|
34
|
+
break;
|
35
|
+
case Providers.None: // Do nothing, just a placeholder
|
36
|
+
break;
|
37
|
+
default:
|
38
|
+
if (providers.length > 1) {
|
39
|
+
if (initProps.verbose) {
|
40
|
+
// eslint-disable-next-line no-console
|
41
|
+
console.error("Unknown provider '" + provider);
|
42
|
+
}
|
43
|
+
}
|
44
|
+
break;
|
45
|
+
}
|
46
|
+
});
|
47
|
+
}
|
12
48
|
// Initialize them
|
13
|
-
const enabledProviders = [];
|
14
49
|
for (const provider of providers) {
|
15
|
-
|
16
|
-
if (Object.keys(initProps).indexOf(key) > -1) {
|
50
|
+
try {
|
17
51
|
provider.initialize(initProps);
|
18
|
-
|
52
|
+
}
|
53
|
+
catch (e) {
|
54
|
+
// eslint-disable-next-line no-console
|
55
|
+
console.error(e);
|
19
56
|
}
|
20
57
|
}
|
21
|
-
|
22
|
-
const consoleTrackingProvider = new ConsoleTrackingProvider();
|
23
|
-
enabledProviders.push(consoleTrackingProvider); // TODO noop- provider?
|
24
|
-
return new TrackingProviderProxy(enabledProviders);
|
58
|
+
return new TrackingProviderProxy(providers);
|
25
59
|
};
|
26
60
|
export default getTrackingProviders;
|
@@ -1,9 +1,19 @@
|
|
1
|
-
import { TrackingApi
|
2
|
-
export
|
3
|
-
|
1
|
+
import { TrackingApi } from './tracking_api';
|
2
|
+
export declare enum Providers {
|
3
|
+
None = 0,
|
4
|
+
Segment = 1,
|
5
|
+
Umami = 2,
|
6
|
+
Posthog = 3,
|
7
|
+
Console = 4
|
8
|
+
}
|
9
|
+
export type ProviderAsString = keyof typeof Providers;
|
10
|
+
export interface BaseProps {
|
11
|
+
verbose: boolean;
|
12
|
+
activeProviders: [ProviderAsString];
|
4
13
|
}
|
14
|
+
export type InitProps = {
|
15
|
+
[key: string]: string | number | boolean;
|
16
|
+
} & BaseProps;
|
5
17
|
export interface TrackingSpi extends TrackingApi {
|
6
|
-
getKey: () => string;
|
7
18
|
initialize: (props: InitProps) => void;
|
8
|
-
trackSingleItem: (item: string, properties?: TrackingEventProperties) => void;
|
9
19
|
}
|
@@ -1 +1,8 @@
|
|
1
|
-
export
|
1
|
+
export var Providers;
|
2
|
+
(function (Providers) {
|
3
|
+
Providers[Providers["None"] = 0] = "None";
|
4
|
+
Providers[Providers["Segment"] = 1] = "Segment";
|
5
|
+
Providers[Providers["Umami"] = 2] = "Umami";
|
6
|
+
Providers[Providers["Posthog"] = 3] = "Posthog";
|
7
|
+
Providers[Providers["Console"] = 4] = "Console";
|
8
|
+
})(Providers || (Providers = {}));
|
@@ -6,9 +6,13 @@ declare global {
|
|
6
6
|
}
|
7
7
|
}
|
8
8
|
export declare class UmamiTrackingProvider implements TrackingSpi, TrackingApi {
|
9
|
-
|
9
|
+
private verbose;
|
10
|
+
private websiteId;
|
11
|
+
private queue;
|
10
12
|
initialize(props: InitProps): void;
|
11
|
-
identify(userID: string): void;
|
13
|
+
identify(userID: string, userProperties?: TrackingEventProperties): void;
|
12
14
|
trackPageView(url: string | undefined): void;
|
13
15
|
trackSingleItem(item: string, properties?: TrackingEventProperties): void;
|
16
|
+
flushQueue(): void;
|
17
|
+
log(msg: string): void;
|
14
18
|
}
|
@@ -1,40 +1,84 @@
|
|
1
1
|
export class UmamiTrackingProvider {
|
2
|
-
|
3
|
-
|
2
|
+
constructor() {
|
3
|
+
this.verbose = false;
|
4
|
+
this.queue = [];
|
4
5
|
}
|
5
6
|
initialize(props) {
|
6
|
-
|
7
|
-
|
8
|
-
|
7
|
+
this.verbose = props.verbose;
|
8
|
+
this.log('UmamiProvider initialize');
|
9
|
+
this.websiteId = props.umamiKey;
|
9
10
|
const hostUrl = props.umamiHostUrl;
|
10
11
|
const script = document.createElement('script');
|
11
12
|
script.src = hostUrl + '/script.js';
|
12
13
|
script.async = true;
|
13
14
|
script.defer = true;
|
14
15
|
// Configure Umami properties
|
15
|
-
script.setAttribute('data-website-id',
|
16
|
-
script.setAttribute('data-
|
16
|
+
script.setAttribute('data-website-id', this.websiteId);
|
17
|
+
script.setAttribute('data-host-url', hostUrl);
|
17
18
|
script.setAttribute('data-auto-track', 'false');
|
18
|
-
script.setAttribute('data-
|
19
|
-
|
19
|
+
script.setAttribute('data-exclude-search', 'false');
|
20
|
+
// Now get from config, which may override some of the above.
|
21
|
+
const UMAMI_PREFIX = 'umami-';
|
22
|
+
for (const prop in props) {
|
23
|
+
if (prop.startsWith(UMAMI_PREFIX)) {
|
24
|
+
const att = 'data-' + prop.substring(UMAMI_PREFIX.length);
|
25
|
+
const val = props[prop];
|
26
|
+
script.setAttribute(att, String(val));
|
27
|
+
}
|
28
|
+
}
|
29
|
+
script.onload = () => {
|
30
|
+
this.log('UmamiProvider script loaded');
|
31
|
+
this.flushQueue();
|
32
|
+
};
|
20
33
|
document.body.appendChild(script);
|
21
34
|
}
|
22
|
-
identify(userID) {
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
35
|
+
identify(userID, userProperties = {}) {
|
36
|
+
this.log('UmamiProvider userID: ' + userID + ' => ' + JSON.stringify(userProperties));
|
37
|
+
if (window.umami) {
|
38
|
+
window.umami.identify({ userID, userProperties });
|
39
|
+
}
|
40
|
+
else {
|
41
|
+
this.queue.push({ what: 'i', name: userID, payload: userProperties });
|
42
|
+
}
|
27
43
|
}
|
28
44
|
trackPageView(url) {
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
45
|
+
this.log('UmamiProvider url ' + url);
|
46
|
+
if (window.umami) {
|
47
|
+
window.umami.track({ url, website: this.websiteId });
|
48
|
+
}
|
49
|
+
else {
|
50
|
+
this.queue.push({ what: 'p', name: String(url) });
|
51
|
+
}
|
33
52
|
}
|
34
53
|
trackSingleItem(item, properties) {
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
54
|
+
this.log('UmamiProvider: trackSingleItem ' + item + JSON.stringify(properties));
|
55
|
+
if (window.umami) {
|
56
|
+
window.umami.track(item, properties);
|
57
|
+
}
|
58
|
+
else {
|
59
|
+
this.queue.push({ what: 't', name: item, payload: properties });
|
60
|
+
}
|
61
|
+
}
|
62
|
+
flushQueue() {
|
63
|
+
for (const item of this.queue) {
|
64
|
+
this.log('Queue flush ' + JSON.stringify(item));
|
65
|
+
switch (item.what) {
|
66
|
+
case 'i':
|
67
|
+
this.identify(item.name, item.payload);
|
68
|
+
break;
|
69
|
+
case 't':
|
70
|
+
this.trackSingleItem(item.name, item.payload);
|
71
|
+
break;
|
72
|
+
case 'p':
|
73
|
+
this.trackPageView(item.name);
|
74
|
+
break;
|
75
|
+
}
|
76
|
+
}
|
77
|
+
}
|
78
|
+
log(msg) {
|
79
|
+
if (this.verbose) {
|
80
|
+
// eslint-disable-next-line no-console
|
81
|
+
console.debug('UmamiProvider: ', msg);
|
82
|
+
}
|
39
83
|
}
|
40
84
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"root":["../src/index.ts","../src/AttachMenu/AttachMenu.tsx","../src/AttachMenu/index.ts","../src/AttachmentEdit/AttachmentEdit.test.tsx","../src/AttachmentEdit/AttachmentEdit.tsx","../src/AttachmentEdit/index.ts","../src/Chatbot/Chatbot.test.tsx","../src/Chatbot/Chatbot.tsx","../src/Chatbot/index.ts","../src/ChatbotAlert/ChatbotAlert.test.tsx","../src/ChatbotAlert/ChatbotAlert.tsx","../src/ChatbotAlert/index.ts","../src/ChatbotContent/ChatbotContent.test.tsx","../src/ChatbotContent/ChatbotContent.tsx","../src/ChatbotContent/index.ts","../src/ChatbotConversationHistoryNav/ChatbotConversationHistoryDropdown.test.tsx","../src/ChatbotConversationHistoryNav/ChatbotConversationHistoryDropdown.tsx","../src/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.test.tsx","../src/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.tsx","../src/ChatbotConversationHistoryNav/EmptyState.tsx","../src/ChatbotConversationHistoryNav/LoadingState.tsx","../src/ChatbotConversationHistoryNav/index.ts","../src/ChatbotFooter/ChatbotFooter.test.tsx","../src/ChatbotFooter/ChatbotFooter.tsx","../src/ChatbotFooter/ChatbotFooternote.test.tsx","../src/ChatbotFooter/ChatbotFootnote.tsx","../src/ChatbotFooter/index.ts","../src/ChatbotHeader/ChatbotHeader.test.tsx","../src/ChatbotHeader/ChatbotHeader.tsx","../src/ChatbotHeader/ChatbotHeaderActions.test.tsx","../src/ChatbotHeader/ChatbotHeaderActions.tsx","../src/ChatbotHeader/ChatbotHeaderCloseButton.test.tsx","../src/ChatbotHeader/ChatbotHeaderCloseButton.tsx","../src/ChatbotHeader/ChatbotHeaderMain.test.tsx","../src/ChatbotHeader/ChatbotHeaderMain.tsx","../src/ChatbotHeader/ChatbotHeaderMenu.test.tsx","../src/ChatbotHeader/ChatbotHeaderMenu.tsx","../src/ChatbotHeader/ChatbotHeaderOptionsDropdown.test.tsx","../src/ChatbotHeader/ChatbotHeaderOptionsDropdown.tsx","../src/ChatbotHeader/ChatbotHeaderSelectorDropdown.test.tsx","../src/ChatbotHeader/ChatbotHeaderSelectorDropdown.tsx","../src/ChatbotHeader/ChatbotHeaderTitle.test.tsx","../src/ChatbotHeader/ChatbotHeaderTitle.tsx","../src/ChatbotHeader/index.ts","../src/ChatbotModal/ChatbotModal.tsx","../src/ChatbotModal/index.ts","../src/ChatbotPopover/ChatbotPopover.tsx","../src/ChatbotPopover/index.ts","../src/ChatbotToggle/ChatbotToggle.test.tsx","../src/ChatbotToggle/ChatbotToggle.tsx","../src/ChatbotToggle/index.ts","../src/ChatbotWelcomePrompt/ChatbotWelcomePrompt.test.tsx","../src/ChatbotWelcomePrompt/ChatbotWelcomePrompt.tsx","../src/ChatbotWelcomePrompt/index.ts","../src/CodeModal/CodeModal.tsx","../src/CodeModal/index.ts","../src/Compare/Compare.test.tsx","../src/Compare/Compare.tsx","../src/Compare/index.ts","../src/FileDetails/FileDetails.test.tsx","../src/FileDetails/FileDetails.tsx","../src/FileDetails/index.ts","../src/FileDetailsLabel/FileDetailsLabel.test.tsx","../src/FileDetailsLabel/FileDetailsLabel.tsx","../src/FileDetailsLabel/index.ts","../src/FileDropZone/FileDropZone.test.tsx","../src/FileDropZone/FileDropZone.tsx","../src/FileDropZone/index.ts","../src/LoadingMessage/LoadingMessage.test.tsx","../src/LoadingMessage/LoadingMessage.tsx","../src/LoadingMessage/index.ts","../src/Message/Message.test.tsx","../src/Message/Message.tsx","../src/Message/MessageLoading.tsx","../src/Message/index.ts","../src/Message/CodeBlockMessage/CodeBlockMessage.tsx","../src/Message/ErrorMessage/ErrorMessage.tsx","../src/Message/ImageMessage/ImageMessage.tsx","../src/Message/LinkMessage/LinkMessage.tsx","../src/Message/ListMessage/ListItemMessage.tsx","../src/Message/ListMessage/OrderedListMessage.tsx","../src/Message/ListMessage/UnorderedListMessage.tsx","../src/Message/QuickResponse/QuickResponse.tsx","../src/Message/QuickStarts/FallbackImg.tsx","../src/Message/QuickStarts/QuickStartTile.tsx","../src/Message/QuickStarts/QuickStartTileDescription.test.tsx","../src/Message/QuickStarts/QuickStartTileDescription.tsx","../src/Message/QuickStarts/QuickStartTileHeader.tsx","../src/Message/QuickStarts/monitor-sampleapp-quickstart-with-image.ts","../src/Message/QuickStarts/monitor-sampleapp-quickstart.ts","../src/Message/QuickStarts/types.ts","../src/Message/TableMessage/TableMessage.tsx","../src/Message/TableMessage/TbodyMessage.tsx","../src/Message/TableMessage/TdMessage.tsx","../src/Message/TableMessage/ThMessage.tsx","../src/Message/TableMessage/TheadMessage.tsx","../src/Message/TableMessage/TrMessage.tsx","../src/Message/TextMessage/TextMessage.tsx","../src/Message/UserFeedback/CloseButton.tsx","../src/Message/UserFeedback/UserFeedback.test.tsx","../src/Message/UserFeedback/UserFeedback.tsx","../src/Message/UserFeedback/UserFeedbackComplete.test.tsx","../src/Message/UserFeedback/UserFeedbackComplete.tsx","../src/MessageBar/AttachButton.test.tsx","../src/MessageBar/AttachButton.tsx","../src/MessageBar/MessageBar.test.tsx","../src/MessageBar/MessageBar.tsx","../src/MessageBar/MicrophoneButton.tsx","../src/MessageBar/SendButton.test.tsx","../src/MessageBar/SendButton.tsx","../src/MessageBar/StopButton.test.tsx","../src/MessageBar/StopButton.tsx","../src/MessageBar/index.ts","../src/MessageBox/JumpButton.test.tsx","../src/MessageBox/JumpButton.tsx","../src/MessageBox/MessageBox.test.tsx","../src/MessageBox/MessageBox.tsx","../src/MessageBox/index.ts","../src/PreviewAttachment/PreviewAttachment.test.tsx","../src/PreviewAttachment/PreviewAttachment.tsx","../src/PreviewAttachment/index.ts","../src/ResponseActions/ResponseActionButton.test.tsx","../src/ResponseActions/ResponseActionButton.tsx","../src/ResponseActions/ResponseActions.test.tsx","../src/ResponseActions/ResponseActions.tsx","../src/ResponseActions/index.ts","../src/Settings/SettingsForm.test.tsx","../src/Settings/SettingsForm.tsx","../src/Settings/index.ts","../src/SourceDetailsMenuItem/SourceDetailsMenuItem.tsx","../src/SourceDetailsMenuItem/index.ts","../src/SourcesCard/SourcesCard.test.tsx","../src/SourcesCard/SourcesCard.tsx","../src/SourcesCard/index.ts","../src/TermsOfUse/TermsOfUse.test.tsx","../src/TermsOfUse/TermsOfUse.tsx","../src/TermsOfUse/index.ts","../src/__mocks__/rehype-external-links.ts","../src/__mocks__/rehype-sanitize.ts","../src/__mocks__/rehype-unwrap-images.tsx","../src/tracking/console_tracking_provider.ts","../src/tracking/index.ts","../src/tracking/posthog_tracking_provider.ts","../src/tracking/segment_tracking_provider.ts","../src/tracking/trackingProviderProxy.ts","../src/tracking/tracking_api.ts","../src/tracking/tracking_registry.ts","../src/tracking/tracking_spi.ts","../src/tracking/umami_tracking_provider.ts"],"version":"5.6.3"}
|
1
|
+
{"root":["../src/index.ts","../src/AttachMenu/AttachMenu.tsx","../src/AttachMenu/index.ts","../src/AttachmentEdit/AttachmentEdit.test.tsx","../src/AttachmentEdit/AttachmentEdit.tsx","../src/AttachmentEdit/index.ts","../src/Chatbot/Chatbot.test.tsx","../src/Chatbot/Chatbot.tsx","../src/Chatbot/index.ts","../src/ChatbotAlert/ChatbotAlert.test.tsx","../src/ChatbotAlert/ChatbotAlert.tsx","../src/ChatbotAlert/index.ts","../src/ChatbotContent/ChatbotContent.test.tsx","../src/ChatbotContent/ChatbotContent.tsx","../src/ChatbotContent/index.ts","../src/ChatbotConversationHistoryNav/ChatbotConversationHistoryDropdown.test.tsx","../src/ChatbotConversationHistoryNav/ChatbotConversationHistoryDropdown.tsx","../src/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.test.tsx","../src/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.tsx","../src/ChatbotConversationHistoryNav/EmptyState.tsx","../src/ChatbotConversationHistoryNav/LoadingState.tsx","../src/ChatbotConversationHistoryNav/index.ts","../src/ChatbotFooter/ChatbotFooter.test.tsx","../src/ChatbotFooter/ChatbotFooter.tsx","../src/ChatbotFooter/ChatbotFooternote.test.tsx","../src/ChatbotFooter/ChatbotFootnote.tsx","../src/ChatbotFooter/index.ts","../src/ChatbotHeader/ChatbotHeader.test.tsx","../src/ChatbotHeader/ChatbotHeader.tsx","../src/ChatbotHeader/ChatbotHeaderActions.test.tsx","../src/ChatbotHeader/ChatbotHeaderActions.tsx","../src/ChatbotHeader/ChatbotHeaderCloseButton.test.tsx","../src/ChatbotHeader/ChatbotHeaderCloseButton.tsx","../src/ChatbotHeader/ChatbotHeaderMain.test.tsx","../src/ChatbotHeader/ChatbotHeaderMain.tsx","../src/ChatbotHeader/ChatbotHeaderMenu.test.tsx","../src/ChatbotHeader/ChatbotHeaderMenu.tsx","../src/ChatbotHeader/ChatbotHeaderOptionsDropdown.test.tsx","../src/ChatbotHeader/ChatbotHeaderOptionsDropdown.tsx","../src/ChatbotHeader/ChatbotHeaderSelectorDropdown.test.tsx","../src/ChatbotHeader/ChatbotHeaderSelectorDropdown.tsx","../src/ChatbotHeader/ChatbotHeaderTitle.test.tsx","../src/ChatbotHeader/ChatbotHeaderTitle.tsx","../src/ChatbotHeader/index.ts","../src/ChatbotModal/ChatbotModal.tsx","../src/ChatbotModal/index.ts","../src/ChatbotPopover/ChatbotPopover.tsx","../src/ChatbotPopover/index.ts","../src/ChatbotToggle/ChatbotToggle.test.tsx","../src/ChatbotToggle/ChatbotToggle.tsx","../src/ChatbotToggle/index.ts","../src/ChatbotWelcomePrompt/ChatbotWelcomePrompt.test.tsx","../src/ChatbotWelcomePrompt/ChatbotWelcomePrompt.tsx","../src/ChatbotWelcomePrompt/index.ts","../src/CodeModal/CodeModal.tsx","../src/CodeModal/index.ts","../src/Compare/Compare.test.tsx","../src/Compare/Compare.tsx","../src/Compare/index.ts","../src/FileDetails/FileDetails.test.tsx","../src/FileDetails/FileDetails.tsx","../src/FileDetails/index.ts","../src/FileDetailsLabel/FileDetailsLabel.test.tsx","../src/FileDetailsLabel/FileDetailsLabel.tsx","../src/FileDetailsLabel/index.ts","../src/FileDropZone/FileDropZone.test.tsx","../src/FileDropZone/FileDropZone.tsx","../src/FileDropZone/index.ts","../src/LoadingMessage/LoadingMessage.test.tsx","../src/LoadingMessage/LoadingMessage.tsx","../src/LoadingMessage/index.ts","../src/Message/Message.test.tsx","../src/Message/Message.tsx","../src/Message/MessageInput.tsx","../src/Message/MessageLoading.tsx","../src/Message/index.ts","../src/Message/CodeBlockMessage/CodeBlockMessage.tsx","../src/Message/ErrorMessage/ErrorMessage.tsx","../src/Message/ImageMessage/ImageMessage.tsx","../src/Message/LinkMessage/LinkMessage.tsx","../src/Message/ListMessage/ListItemMessage.tsx","../src/Message/ListMessage/OrderedListMessage.tsx","../src/Message/ListMessage/UnorderedListMessage.tsx","../src/Message/QuickResponse/QuickResponse.tsx","../src/Message/QuickStarts/FallbackImg.tsx","../src/Message/QuickStarts/QuickStartTile.tsx","../src/Message/QuickStarts/QuickStartTileDescription.test.tsx","../src/Message/QuickStarts/QuickStartTileDescription.tsx","../src/Message/QuickStarts/QuickStartTileHeader.tsx","../src/Message/QuickStarts/monitor-sampleapp-quickstart-with-image.ts","../src/Message/QuickStarts/monitor-sampleapp-quickstart.ts","../src/Message/QuickStarts/types.ts","../src/Message/TableMessage/TableMessage.tsx","../src/Message/TableMessage/TbodyMessage.tsx","../src/Message/TableMessage/TdMessage.tsx","../src/Message/TableMessage/ThMessage.tsx","../src/Message/TableMessage/TheadMessage.tsx","../src/Message/TableMessage/TrMessage.tsx","../src/Message/TextMessage/TextMessage.tsx","../src/Message/UserFeedback/CloseButton.tsx","../src/Message/UserFeedback/UserFeedback.test.tsx","../src/Message/UserFeedback/UserFeedback.tsx","../src/Message/UserFeedback/UserFeedbackComplete.test.tsx","../src/Message/UserFeedback/UserFeedbackComplete.tsx","../src/MessageBar/AttachButton.test.tsx","../src/MessageBar/AttachButton.tsx","../src/MessageBar/MessageBar.test.tsx","../src/MessageBar/MessageBar.tsx","../src/MessageBar/MicrophoneButton.tsx","../src/MessageBar/SendButton.test.tsx","../src/MessageBar/SendButton.tsx","../src/MessageBar/StopButton.test.tsx","../src/MessageBar/StopButton.tsx","../src/MessageBar/index.ts","../src/MessageBox/JumpButton.test.tsx","../src/MessageBox/JumpButton.tsx","../src/MessageBox/MessageBox.test.tsx","../src/MessageBox/MessageBox.tsx","../src/MessageBox/index.ts","../src/PreviewAttachment/PreviewAttachment.test.tsx","../src/PreviewAttachment/PreviewAttachment.tsx","../src/PreviewAttachment/index.ts","../src/ResponseActions/ResponseActionButton.test.tsx","../src/ResponseActions/ResponseActionButton.tsx","../src/ResponseActions/ResponseActions.test.tsx","../src/ResponseActions/ResponseActions.tsx","../src/ResponseActions/index.ts","../src/Settings/SettingsForm.test.tsx","../src/Settings/SettingsForm.tsx","../src/Settings/index.ts","../src/SourceDetailsMenuItem/SourceDetailsMenuItem.tsx","../src/SourceDetailsMenuItem/index.ts","../src/SourcesCard/SourcesCard.test.tsx","../src/SourcesCard/SourcesCard.tsx","../src/SourcesCard/index.ts","../src/TermsOfUse/TermsOfUse.test.tsx","../src/TermsOfUse/TermsOfUse.tsx","../src/TermsOfUse/index.ts","../src/__mocks__/rehype-external-links.ts","../src/__mocks__/rehype-sanitize.ts","../src/__mocks__/rehype-unwrap-images.tsx","../src/tracking/console_tracking_provider.ts","../src/tracking/index.ts","../src/tracking/posthog_tracking_provider.ts","../src/tracking/segment_tracking_provider.ts","../src/tracking/trackingProviderProxy.ts","../src/tracking/tracking_api.ts","../src/tracking/tracking_registry.ts","../src/tracking/tracking_spi.ts","../src/tracking/umami_tracking_provider.ts"],"version":"5.6.3"}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@patternfly/chatbot",
|
3
|
-
"version": "
|
3
|
+
"version": "6.3.0-prerelease.2",
|
4
4
|
"description": "This library provides React components based on PatternFly 6 that can be used to build chatbots.",
|
5
5
|
"main": "dist/cjs/index.js",
|
6
6
|
"module": "dist/esm/index.js",
|