@patternfly/chatbot 2.2.0 → 6.3.0-prerelease.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.
Files changed (96) hide show
  1. package/dist/cjs/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.d.ts +4 -0
  2. package/dist/cjs/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.js +7 -1
  3. package/dist/cjs/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.test.js +23 -0
  4. package/dist/cjs/Message/Message.d.ts +17 -1
  5. package/dist/cjs/Message/Message.js +53 -34
  6. package/dist/cjs/Message/Message.test.js +52 -0
  7. package/dist/cjs/Message/MessageInput.d.ts +18 -0
  8. package/dist/cjs/Message/MessageInput.js +34 -0
  9. package/dist/cjs/MessageBar/MicrophoneButton.js +1 -1
  10. package/dist/cjs/MessageBox/MessageBox.js +5 -5
  11. package/dist/cjs/SourcesCard/SourcesCard.d.ts +7 -1
  12. package/dist/cjs/SourcesCard/SourcesCard.js +16 -10
  13. package/dist/cjs/SourcesCard/SourcesCard.test.js +25 -15
  14. package/dist/cjs/tracking/console_tracking_provider.d.ts +4 -5
  15. package/dist/cjs/tracking/console_tracking_provider.js +22 -15
  16. package/dist/cjs/tracking/posthog_tracking_provider.d.ts +2 -2
  17. package/dist/cjs/tracking/posthog_tracking_provider.js +21 -12
  18. package/dist/cjs/tracking/segment_tracking_provider.d.ts +2 -2
  19. package/dist/cjs/tracking/segment_tracking_provider.js +21 -12
  20. package/dist/cjs/tracking/trackingProviderProxy.d.ts +1 -1
  21. package/dist/cjs/tracking/trackingProviderProxy.js +2 -2
  22. package/dist/cjs/tracking/tracking_api.d.ts +1 -1
  23. package/dist/cjs/tracking/tracking_registry.js +46 -12
  24. package/dist/cjs/tracking/tracking_spi.d.ts +15 -5
  25. package/dist/cjs/tracking/tracking_spi.js +9 -0
  26. package/dist/cjs/tracking/umami_tracking_provider.d.ts +6 -2
  27. package/dist/cjs/tracking/umami_tracking_provider.js +66 -22
  28. package/dist/css/main.css +7 -7
  29. package/dist/css/main.css.map +1 -1
  30. package/dist/esm/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.d.ts +4 -0
  31. package/dist/esm/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.js +7 -1
  32. package/dist/esm/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.test.js +23 -0
  33. package/dist/esm/Message/Message.d.ts +17 -1
  34. package/dist/esm/Message/Message.js +53 -34
  35. package/dist/esm/Message/Message.test.js +52 -0
  36. package/dist/esm/Message/MessageInput.d.ts +18 -0
  37. package/dist/esm/Message/MessageInput.js +29 -0
  38. package/dist/esm/MessageBar/MicrophoneButton.js +1 -1
  39. package/dist/esm/MessageBox/MessageBox.js +5 -5
  40. package/dist/esm/SourcesCard/SourcesCard.d.ts +7 -1
  41. package/dist/esm/SourcesCard/SourcesCard.js +17 -11
  42. package/dist/esm/SourcesCard/SourcesCard.test.js +25 -15
  43. package/dist/esm/tracking/console_tracking_provider.d.ts +4 -5
  44. package/dist/esm/tracking/console_tracking_provider.js +22 -15
  45. package/dist/esm/tracking/posthog_tracking_provider.d.ts +2 -2
  46. package/dist/esm/tracking/posthog_tracking_provider.js +21 -12
  47. package/dist/esm/tracking/segment_tracking_provider.d.ts +2 -2
  48. package/dist/esm/tracking/segment_tracking_provider.js +21 -12
  49. package/dist/esm/tracking/trackingProviderProxy.d.ts +1 -1
  50. package/dist/esm/tracking/trackingProviderProxy.js +2 -2
  51. package/dist/esm/tracking/tracking_api.d.ts +1 -1
  52. package/dist/esm/tracking/tracking_registry.js +46 -12
  53. package/dist/esm/tracking/tracking_spi.d.ts +15 -5
  54. package/dist/esm/tracking/tracking_spi.js +8 -1
  55. package/dist/esm/tracking/umami_tracking_provider.d.ts +6 -2
  56. package/dist/esm/tracking/umami_tracking_provider.js +66 -22
  57. package/dist/tsconfig.tsbuildinfo +1 -1
  58. package/package.json +2 -2
  59. package/patternfly-docs/content/extensions/chatbot/examples/Analytics/Analytics.md +18 -14
  60. package/patternfly-docs/content/extensions/chatbot/examples/Messages/BotMessage.tsx +74 -104
  61. package/patternfly-docs/content/extensions/chatbot/examples/Messages/FileDetailsLabel.tsx +48 -37
  62. package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithQuickResponses.tsx +10 -0
  63. package/patternfly-docs/content/extensions/chatbot/examples/Messages/MessageWithSources.tsx +51 -14
  64. package/patternfly-docs/content/extensions/chatbot/examples/Messages/Messages.md +3 -1
  65. package/patternfly-docs/content/extensions/chatbot/examples/Messages/UserMessage.tsx +80 -104
  66. package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotHeaderDrawer.tsx +35 -2
  67. package/patternfly-docs/content/extensions/chatbot/examples/UI/ChatbotHeaderDrawerResizable.tsx +13 -2
  68. package/patternfly-docs/content/extensions/chatbot/examples/UI/UI.md +1 -1
  69. package/patternfly-docs/content/extensions/chatbot/examples/demos/Chatbot.tsx +6 -3
  70. package/patternfly-docs/content/extensions/chatbot/examples/demos/ChatbotAttachment.tsx +2 -0
  71. package/patternfly-docs/content/extensions/chatbot/examples/demos/ChatbotAttachmentMenu.tsx +2 -0
  72. package/patternfly-docs/content/extensions/chatbot/examples/demos/ChatbotInDrawer.tsx +2 -0
  73. package/patternfly-docs/content/extensions/chatbot/examples/demos/EmbeddedChatbot.tsx +2 -0
  74. package/patternfly-docs/content/extensions/chatbot/examples/demos/EmbeddedComparisonChatbot.tsx +62 -57
  75. package/patternfly-docs/content/extensions/chatbot/examples/demos/Feedback.tsx +2 -0
  76. package/src/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.test.tsx +53 -0
  77. package/src/ChatbotConversationHistoryNav/ChatbotConversationHistoryNav.tsx +14 -0
  78. package/src/FileDropZone/__snapshots__/FileDropZone.test.tsx.snap +1 -0
  79. package/src/Message/Message.scss +4 -0
  80. package/src/Message/Message.test.tsx +62 -0
  81. package/src/Message/Message.tsx +111 -53
  82. package/src/Message/MessageInput.tsx +59 -0
  83. package/src/MessageBar/MicrophoneButton.tsx +1 -1
  84. package/src/MessageBox/MessageBox.tsx +5 -5
  85. package/src/SourcesCard/SourcesCard.scss +3 -7
  86. package/src/SourcesCard/SourcesCard.test.tsx +30 -22
  87. package/src/SourcesCard/SourcesCard.tsx +54 -12
  88. package/src/tracking/console_tracking_provider.ts +21 -17
  89. package/src/tracking/posthog_tracking_provider.ts +20 -13
  90. package/src/tracking/segment_tracking_provider.ts +20 -13
  91. package/src/tracking/trackingProviderProxy.ts +2 -2
  92. package/src/tracking/tracking_api.ts +1 -1
  93. package/src/tracking/tracking_registry.ts +46 -13
  94. package/src/tracking/tracking_spi.ts +18 -7
  95. package/src/tracking/umami_tracking_provider.ts +76 -20
  96. package/src/SourcesCard/__snapshots__/SourcesCard.test.tsx.snap +0 -34
@@ -1,11 +1,14 @@
1
1
  import { posthog } from 'posthog-js';
2
2
  export class PosthogTrackingProvider {
3
- getKey() {
4
- return 'posthogKey';
3
+ constructor() {
4
+ this.verbose = false;
5
5
  }
6
6
  initialize(props) {
7
- // eslint-disable-next-line no-console
8
- console.log('PosthogProvider initialize');
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
- // eslint-disable-next-line no-console
19
- console.log('PosthogProvider userID: ' + userID);
20
- posthog.identify(userID);
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
- // eslint-disable-next-line no-console
24
- console.log('PostHogProvider url', url);
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
- // eslint-disable-next-line no-console
30
- console.log('PosthogProvider: trackSingleItem' + item, properties);
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
- getKey(): string;
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
- getKey() {
4
- return 'segmentKey';
3
+ constructor() {
4
+ this.verbose = false;
5
5
  }
6
6
  initialize(props) {
7
- // eslint-disable-next-line no-console
8
- console.log('SegmentProvider initialize');
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
- // eslint-disable-next-line no-console
22
- console.log('SegmentProvider userID: ' + userID);
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
- // eslint-disable-next-line no-console
29
- console.log('SegmentProvider url', url);
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
- // eslint-disable-next-line no-console
41
- console.log('SegmentProvider: trackSingleItem' + item, properties);
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
- providers.push(new SegmentTrackingProvider());
9
- providers.push(new PosthogTrackingProvider());
10
- providers.push(new UmamiTrackingProvider());
11
- // TODO dynamically find and register providers
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
- const key = provider.getKey();
16
- if (Object.keys(initProps).indexOf(key) > -1) {
50
+ try {
17
51
  provider.initialize(initProps);
18
- enabledProviders.push(provider);
52
+ }
53
+ catch (e) {
54
+ // eslint-disable-next-line no-console
55
+ console.error(e);
19
56
  }
20
57
  }
21
- // Add the console provider
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, TrackingEventProperties } from './tracking_api';
2
- export interface InitProps {
3
- [key: string]: string | number | boolean;
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
- getKey(): string;
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
- getKey() {
3
- return 'umamiKey';
2
+ constructor() {
3
+ this.verbose = false;
4
+ this.queue = [];
4
5
  }
5
6
  initialize(props) {
6
- // eslint-disable-next-line no-console
7
- console.log('UmamiProvider initialize');
8
- const umamiKey = props.umamiKey;
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', umamiKey);
16
- script.setAttribute('data-domains', 'localhost'); // TODO ?
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-host-url', hostUrl); // TODO ?
19
- script.setAttribute('data-exclude-search', 'false'); // TODO ?
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
- var _a;
24
- // eslint-disable-next-line no-console
25
- console.log('UmamiProvider userID: ' + userID);
26
- (_a = window.umami) === null || _a === void 0 ? void 0 : _a.identify({ userID });
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
- var _a;
30
- // eslint-disable-next-line no-console
31
- console.log('UmamiProvider url', url);
32
- (_a = window.umami) === null || _a === void 0 ? void 0 : _a.track({ url });
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
- var _a;
36
- // eslint-disable-next-line no-console
37
- console.log('UmamiProvider: trackSingleItem' + item, properties);
38
- (_a = window.umami) === null || _a === void 0 ? void 0 : _a.track(item, properties);
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": "2.2.0",
3
+ "version": "6.3.0-prerelease.1",
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",
@@ -52,7 +52,7 @@
52
52
  "react-dom": "^17 || ^18"
53
53
  },
54
54
  "devDependencies": {
55
- "@patternfly/documentation-framework": "6.5.20",
55
+ "@patternfly/documentation-framework": "6.8.2",
56
56
  "@patternfly/patternfly": "^6.1.0",
57
57
  "@patternfly/patternfly-a11y": "^5.0.0",
58
58
  "@types/dom-speech-recognition": "^0.0.4",
@@ -36,10 +36,12 @@ Note that user code only interacts with:
36
36
 
37
37
  ### Setup
38
38
 
39
- 1. Before you can use the `trackingAPI`, you must first supply the API keys of the respective providers.
39
+ 1. Before you can use the `trackingAPI`, you must first supply the API keys of the respective providers. To enable a provider, it must be added to the `activeProviders` property:
40
40
 
41
41
  ```nolive
42
42
  const initProps: InitProps = {
43
+ verbose: false,
44
+ activeProviders: ['Segment', 'Umami', 'Posthog', 'Console' ],
43
45
  segmentKey: 'TODO-key', // TODO add your key here
44
46
  // segmentCdn: 'https://my.org/cdn', // Set up segment cdn (optional)
45
47
  // segmentIntegrations: { // Provide Segment integrations (optional)
@@ -50,13 +52,15 @@ const initProps: InitProps = {
50
52
  },
51
53
 
52
54
  posthogKey: 'TODO-key',
53
- umamiKey: 'TODO-key',
55
+ umamiKey: 'TODO-umami-key',
54
56
  umamiHostUrl: 'http://localhost:3000', // TODO where is your JS provider?
57
+ 'umami-data-domains': 'TODO umami data domain',
55
58
  something: 'test',
56
- console: 'true' // Console provider
57
59
  };
58
60
  ```
59
61
 
62
+ - **Note:** To enable output debugging via the web-browser console, set the `verbose` key to `true`. By default, this is set to `false`.
63
+
60
64
  1. Once this is done, you can create an instance of the `trackingAPI` and start sending events.
61
65
 
62
66
  ```nolive
@@ -76,22 +80,20 @@ trackingAPI.trackSingleItem("MyEvent", { response: 'Good response' })
76
80
 
77
81
  #### Tracking providers
78
82
 
79
- Only providers with a matching key in the `InitProps` will be started and used.
83
+ Only providers with a matching entry in the `InitProps.activeProviders` array will be started and used.
84
+
85
+ Possible values are:
86
+ * Umami
87
+ * Posthog
88
+ * Segment
89
+ * Console
80
90
 
81
- ```nolive
82
- const initProps: InitProps = {
83
- segmentKey: 'TODO-key', // TODO add your key here
84
- posthogKey: 'TODO-key',
85
- umamiKey: 'TODO-key',
86
- umamiHostUrl: 'http://localhost:3000', // TODO where is your JS provider?
87
- console: true
88
- ```
89
91
 
90
92
  ##### Modifying providers
91
93
 
92
94
  If you know upfront that you only want to use 1 of the supported providers, you can modify `getTrackingProviders()` and remove all other providers in the providers array.
93
95
 
94
- When using the providers you need to add additional dependencies to your package.json file:
96
+ When using the providers, you might need to add additional dependencies to your package.json file:
95
97
 
96
98
  ```nolive
97
99
  "dependencies": {
@@ -99,12 +101,14 @@ When using the providers you need to add additional dependencies to your package
99
101
  "posthog-js": "^1.194.4"
100
102
  ```
101
103
 
104
+ Depending on your local setup, this might not be necessary. For example, if you pull the ChatBot codebase as a dependency into your project, you don't need to add it as an additional dependency in your package.json.
105
+
102
106
  ##### Adding providers
103
107
 
104
108
  To add another analytics provider, you need to implement 2 interfaces, `TrackingSpi` and `trackingApi`.
105
109
 
106
110
  1. It is easiest to start by copying the `ConsoleTrackingProvider`
107
- 1. The first thing you should do is to provide a correct value in `getKey()`
111
+ 1. Add an entry for your new provider to the `Providers` enum in `tracking_spi.ts`
108
112
  1. Once you are happy enough with the implementation, add it to the array of providers in `getTrackingProviders()`
109
113
 
110
114
  ### Page flow tracking