@servicetitan/titan-chat-ui-common 3.0.0

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 (75) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/dist/index.d.ts +5 -0
  3. package/dist/index.d.ts.map +1 -0
  4. package/dist/index.js +5 -0
  5. package/dist/index.js.map +1 -0
  6. package/dist/models/__mocks__/support-chat.mock.d.ts +9 -0
  7. package/dist/models/__mocks__/support-chat.mock.d.ts.map +1 -0
  8. package/dist/models/__mocks__/support-chat.mock.js +82 -0
  9. package/dist/models/__mocks__/support-chat.mock.js.map +1 -0
  10. package/dist/models/chat-customizations.d.ts +42 -0
  11. package/dist/models/chat-customizations.d.ts.map +1 -0
  12. package/dist/models/chat-customizations.js +2 -0
  13. package/dist/models/chat-customizations.js.map +1 -0
  14. package/dist/models/file-descriptor.d.ts +7 -0
  15. package/dist/models/file-descriptor.d.ts.map +1 -0
  16. package/dist/models/file-descriptor.js +2 -0
  17. package/dist/models/file-descriptor.js.map +1 -0
  18. package/dist/models/index.d.ts +4 -0
  19. package/dist/models/index.d.ts.map +1 -0
  20. package/dist/models/index.js +4 -0
  21. package/dist/models/index.js.map +1 -0
  22. package/dist/models/support-chat.d.ts +76 -0
  23. package/dist/models/support-chat.d.ts.map +1 -0
  24. package/dist/models/support-chat.js +75 -0
  25. package/dist/models/support-chat.js.map +1 -0
  26. package/dist/stores/__tests__/chat-ui.store.test.d.ts +2 -0
  27. package/dist/stores/__tests__/chat-ui.store.test.d.ts.map +1 -0
  28. package/dist/stores/__tests__/chat-ui.store.test.js +424 -0
  29. package/dist/stores/__tests__/chat-ui.store.test.js.map +1 -0
  30. package/dist/stores/chat-ui-backend-echo.store.d.ts +13 -0
  31. package/dist/stores/chat-ui-backend-echo.store.d.ts.map +1 -0
  32. package/dist/stores/chat-ui-backend-echo.store.js +115 -0
  33. package/dist/stores/chat-ui-backend-echo.store.js.map +1 -0
  34. package/dist/stores/chat-ui-backend.store.d.ts +6 -0
  35. package/dist/stores/chat-ui-backend.store.d.ts.map +1 -0
  36. package/dist/stores/chat-ui-backend.store.js +3 -0
  37. package/dist/stores/chat-ui-backend.store.js.map +1 -0
  38. package/dist/stores/chat-ui.store.d.ts +153 -0
  39. package/dist/stores/chat-ui.store.d.ts.map +1 -0
  40. package/dist/stores/chat-ui.store.js +683 -0
  41. package/dist/stores/chat-ui.store.js.map +1 -0
  42. package/dist/stores/index.d.ts +4 -0
  43. package/dist/stores/index.d.ts.map +1 -0
  44. package/dist/stores/index.js +4 -0
  45. package/dist/stores/index.js.map +1 -0
  46. package/dist/utils/__tests__/text-utils.test.d.ts +2 -0
  47. package/dist/utils/__tests__/text-utils.test.d.ts.map +1 -0
  48. package/dist/utils/__tests__/text-utils.test.js +59 -0
  49. package/dist/utils/__tests__/text-utils.test.js.map +1 -0
  50. package/dist/utils/test-utils.d.ts +5 -0
  51. package/dist/utils/test-utils.d.ts.map +1 -0
  52. package/dist/utils/test-utils.js +17 -0
  53. package/dist/utils/test-utils.js.map +1 -0
  54. package/dist/utils/text-utils.d.ts +6 -0
  55. package/dist/utils/text-utils.d.ts.map +1 -0
  56. package/dist/utils/text-utils.js +33 -0
  57. package/dist/utils/text-utils.js.map +1 -0
  58. package/package.json +36 -0
  59. package/src/cypress.d.ts +10 -0
  60. package/src/index.ts +4 -0
  61. package/src/models/__mocks__/support-chat.mock.ts +105 -0
  62. package/src/models/chat-customizations.ts +50 -0
  63. package/src/models/file-descriptor.ts +6 -0
  64. package/src/models/index.ts +3 -0
  65. package/src/models/support-chat.ts +117 -0
  66. package/src/stores/__tests__/chat-ui.store.test.ts +531 -0
  67. package/src/stores/chat-ui-backend-echo.store.ts +98 -0
  68. package/src/stores/chat-ui-backend.store.ts +10 -0
  69. package/src/stores/chat-ui.store.ts +539 -0
  70. package/src/stores/index.ts +11 -0
  71. package/src/utils/__tests__/text-utils.test.ts +70 -0
  72. package/src/utils/test-utils.ts +22 -0
  73. package/src/utils/text-utils.ts +36 -0
  74. package/tsconfig.json +15 -0
  75. package/tsconfig.tsbuildinfo +1 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat-ui.store.js","sourceRoot":"","sources":["../../src/stores/chat-ui.store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export { CHAT_UI_STORE_TOKEN, IChatUiStore, ChatUiStore, ChatUiEvent, symbolUser, symbolAgent, ChatUiEventListener, } from './chat-ui.store';
2
+ export { ChatUiBackendEchoStore } from './chat-ui-backend-echo.store';
3
+ export { CHAT_UI_BACKEND_STORE_TOKEN, IChatUiBackendStore } from './chat-ui-backend.store';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/stores/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,mBAAmB,EACnB,YAAY,EACZ,WAAW,EACX,WAAW,EACX,UAAU,EACV,WAAW,EACX,mBAAmB,GACtB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,EAAE,2BAA2B,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC"}
@@ -0,0 +1,4 @@
1
+ export { CHAT_UI_STORE_TOKEN, ChatUiStore, ChatUiEvent, symbolUser, symbolAgent, } from './chat-ui.store';
2
+ export { ChatUiBackendEchoStore } from './chat-ui-backend-echo.store';
3
+ export { CHAT_UI_BACKEND_STORE_TOKEN } from './chat-ui-backend.store';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/stores/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,mBAAmB,EAEnB,WAAW,EACX,WAAW,EACX,UAAU,EACV,WAAW,GAEd,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,EAAE,2BAA2B,EAAuB,MAAM,yBAAyB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=text-utils.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text-utils.test.d.ts","sourceRoot":"","sources":["../../../src/utils/__tests__/text-utils.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,59 @@
1
+ import { expect } from '@jest/globals';
2
+ import { extractFilenameAndExt, formatChatMessageDate, getFirstName, getNameInitials, getNameInitialsFirst, } from '../text-utils';
3
+ describe('text-utils', () => {
4
+ test('should get initials from name', () => {
5
+ expect(getNameInitials('')).toEqual('');
6
+ expect(getNameInitials('A')).toEqual('A');
7
+ expect(getNameInitials('AB')).toEqual('A');
8
+ expect(getNameInitials('abcd')).toEqual('A');
9
+ expect(getNameInitials(' abcd ')).toEqual('A');
10
+ expect(getNameInitials(' a b c ')).toEqual('AB');
11
+ expect(getNameInitials('abcd ef')).toEqual('AE');
12
+ expect(getNameInitials('a b c d')).toEqual('AB');
13
+ });
14
+ test('should extract filename and ext', () => {
15
+ expect(extractFilenameAndExt('')).toEqual(['', '']);
16
+ expect(extractFilenameAndExt('a')).toEqual(['a', '']);
17
+ expect(extractFilenameAndExt('a.')).toEqual(['a.', '']);
18
+ expect(extractFilenameAndExt('a.b')).toEqual(['a.', 'b']);
19
+ expect(extractFilenameAndExt('a.b.c')).toEqual(['a.b.', 'c']);
20
+ expect(extractFilenameAndExt('aaaa.bbbb.cccc')).toEqual(['aaaa.bbbb.', 'cccc']);
21
+ });
22
+ test('should getFirstName', () => {
23
+ expect(getFirstName('')).toEqual('');
24
+ expect(getFirstName('A')).toEqual('A');
25
+ expect(getFirstName('AB')).toEqual('AB');
26
+ expect(getFirstName('abcd')).toEqual('abcd');
27
+ expect(getFirstName(' abcd ')).toEqual('abcd');
28
+ expect(getFirstName(' a b c ')).toEqual('a');
29
+ expect(getFirstName('abcd ef')).toEqual('abcd');
30
+ expect(getFirstName('a b c d')).toEqual('a');
31
+ });
32
+ test('should getNameInitialsFirst', () => {
33
+ expect(getNameInitials('')).toEqual('');
34
+ expect(getNameInitials('A')).toEqual('A');
35
+ expect(getNameInitials('AB')).toEqual('A');
36
+ expect(getNameInitials('abcd')).toEqual('A');
37
+ expect(getNameInitials(' abcd ')).toEqual('A');
38
+ expect(getNameInitials(' a b c ')).toEqual('AB');
39
+ expect(getNameInitials('abcd ef')).toEqual('AE');
40
+ expect(getNameInitials('a b c d')).toEqual('AB');
41
+ });
42
+ test('should formatChatMessageDate', () => {
43
+ const date = new Date('2023-10-01T12:00:00Z');
44
+ expect(formatChatMessageDate(date)).toEqual('12:00 PM');
45
+ expect(formatChatMessageDate(new Date('2023-10-01T00:00:00Z'))).toEqual('12:00 AM');
46
+ expect(formatChatMessageDate(new Date('2023-10-01T23:59:59Z'))).toEqual('11:59 PM');
47
+ });
48
+ test('should getNameInitialsFirst', () => {
49
+ expect(getNameInitialsFirst('')).toEqual('');
50
+ expect(getNameInitialsFirst('A')).toEqual('A');
51
+ expect(getNameInitialsFirst('AB')).toEqual('A');
52
+ expect(getNameInitialsFirst('abcd')).toEqual('A');
53
+ expect(getNameInitialsFirst(' abcd ')).toEqual('A');
54
+ expect(getNameInitialsFirst(' a b c ')).toEqual('A');
55
+ expect(getNameInitialsFirst('abcd ef')).toEqual('A');
56
+ expect(getNameInitialsFirst('a b c d')).toEqual('A');
57
+ });
58
+ });
59
+ //# sourceMappingURL=text-utils.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text-utils.test.js","sourceRoot":"","sources":["../../../src/utils/__tests__/text-utils.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { Container } from '@servicetitan/react-ioc';
2
+ type Newable<T> = new (...args: never[]) => T;
3
+ export declare const initTestContainer: (serviceIdentifier: Newable<unknown> | Newable<unknown>[], initDependenciesFn: (container: Container) => void) => () => Container;
4
+ export {};
5
+ //# sourceMappingURL=test-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-utils.d.ts","sourceRoot":"","sources":["../../src/utils/test-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAEpD,KAAK,OAAO,CAAC,CAAC,IAAI,KAAK,GAAG,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;AAE9C,eAAO,MAAM,iBAAiB,GAC1B,mBAAmB,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,EAAE,EACxD,oBAAoB,CAAC,SAAS,EAAE,SAAS,KAAK,IAAI,oBAerD,CAAC"}
@@ -0,0 +1,17 @@
1
+ import { Container } from '@servicetitan/react-ioc';
2
+ export const initTestContainer = (serviceIdentifier, initDependenciesFn) => {
3
+ const rootContainer = new Container();
4
+ if (Array.isArray(serviceIdentifier)) {
5
+ serviceIdentifier.forEach(identifier => rootContainer.bind(identifier).toSelf());
6
+ }
7
+ else {
8
+ rootContainer.bind(serviceIdentifier).toSelf();
9
+ }
10
+ return () => {
11
+ const container = new Container();
12
+ container.parent = rootContainer;
13
+ initDependenciesFn(container);
14
+ return container;
15
+ };
16
+ };
17
+ //# sourceMappingURL=test-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-utils.js","sourceRoot":"","sources":["../../src/utils/test-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAIpD,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC7B,iBAAwD,EACxD,kBAAkD,EACpD,EAAE;IACA,MAAM,aAAa,GAAG,IAAI,SAAS,EAAE,CAAC;IACtC,IAAI,KAAK,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE,CAAC;QACnC,iBAAiB,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;IACrF,CAAC;SAAM,CAAC;QACJ,aAAa,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,MAAM,EAAE,CAAC;IACnD,CAAC;IAED,OAAO,GAAG,EAAE;QACR,MAAM,SAAS,GAAG,IAAI,SAAS,EAAE,CAAC;QAClC,SAAS,CAAC,MAAM,GAAG,aAAa,CAAC;QACjC,kBAAkB,CAAC,SAAS,CAAC,CAAC;QAC9B,OAAO,SAAS,CAAC;IACrB,CAAC,CAAC;AACN,CAAC,CAAC"}
@@ -0,0 +1,6 @@
1
+ export declare function formatChatMessageDate(date: Date): string;
2
+ export declare const getFirstName: (name: string) => string;
3
+ export declare const getNameInitials: (name: string) => string;
4
+ export declare const getNameInitialsFirst: (name: string) => string;
5
+ export declare const extractFilenameAndExt: (fileName: string) => [string, string];
6
+ //# sourceMappingURL=text-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text-utils.d.ts","sourceRoot":"","sources":["../../src/utils/text-utils.ts"],"names":[],"mappings":"AAAA,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,IAAI,UAK/C;AAED,eAAO,MAAM,YAAY,GAAI,MAAM,MAAM,KAAG,MAG3C,CAAC;AAEF,eAAO,MAAM,eAAe,GAAI,MAAM,MAAM,KAAG,MAO9C,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAAI,MAAM,MAAM,KAAG,MAGnD,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAAI,UAAU,MAAM,KAAG,CAAC,MAAM,EAAE,MAAM,CASvE,CAAC"}
@@ -0,0 +1,33 @@
1
+ export function formatChatMessageDate(date) {
2
+ return date.toLocaleTimeString('en-US', {
3
+ hour: '2-digit',
4
+ minute: '2-digit',
5
+ });
6
+ }
7
+ export const getFirstName = (name) => {
8
+ const parts = name.trim().split(' ');
9
+ return parts[0];
10
+ };
11
+ export const getNameInitials = (name) => {
12
+ const parts = name.trim().split(' ');
13
+ return parts
14
+ .filter(Boolean)
15
+ .splice(0, 2)
16
+ .map(p => p[0].toUpperCase())
17
+ .join('');
18
+ };
19
+ export const getNameInitialsFirst = (name) => {
20
+ const initials = getNameInitials(name);
21
+ return initials.length > 0 ? initials[0] : '';
22
+ };
23
+ export const extractFilenameAndExt = (fileName) => {
24
+ const lastIndex = fileName.lastIndexOf('.');
25
+ if (lastIndex === -1) {
26
+ return [fileName, ''];
27
+ }
28
+ return [
29
+ fileName.substring(0, lastIndex) + '.',
30
+ fileName.substring(lastIndex + 1, fileName.length),
31
+ ];
32
+ };
33
+ //# sourceMappingURL=text-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text-utils.js","sourceRoot":"","sources":["../../src/utils/text-utils.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,qBAAqB,CAAC,IAAU;IAC5C,OAAO,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE;QACpC,IAAI,EAAE,SAAS;QACf,MAAM,EAAE,SAAS;KACpB,CAAC,CAAC;AACP,CAAC;AAED,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,IAAY,EAAU,EAAE;IACjD,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACrC,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;AACpB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,IAAY,EAAU,EAAE;IACpD,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACrC,OAAO,KAAK;SACP,MAAM,CAAC,OAAO,CAAC;SACf,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;SACZ,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAE,CAAC,WAAW,EAAE,CAAC;SAC7B,IAAI,CAAC,EAAE,CAAC,CAAC;AAClB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,IAAY,EAAU,EAAE;IACzD,MAAM,QAAQ,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;IACvC,OAAO,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAClD,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,QAAgB,EAAoB,EAAE;IACxE,MAAM,SAAS,GAAG,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAC5C,IAAI,SAAS,KAAK,CAAC,CAAC,EAAE,CAAC;QACnB,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IAC1B,CAAC;IACD,OAAO;QACH,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,GAAG,GAAG;QACtC,QAAQ,CAAC,SAAS,CAAC,SAAS,GAAG,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC;KACrD,CAAC;AACN,CAAC,CAAC"}
package/package.json ADDED
@@ -0,0 +1,36 @@
1
+ {
2
+ "name": "@servicetitan/titan-chat-ui-common",
3
+ "version": "3.0.0",
4
+ "description": "Chat experience UI package common files",
5
+ "main": "./dist/index.js",
6
+ "typings": "./dist/index.d.ts",
7
+ "exports": {
8
+ ".": "./dist/index.js"
9
+ },
10
+ "scripts": {
11
+ "publish:local": "yalc publish",
12
+ "push:local": "yalc push"
13
+ },
14
+ "dependencies": {
15
+ "lodash": "4.17.21",
16
+ "nanoid": "^5.1.5"
17
+ },
18
+ "peerDependencies": {
19
+ "@servicetitan/react-ioc": ">=24",
20
+ "mobx": ">=6",
21
+ "mobx-react": ">=9",
22
+ "mobx-utils": ">=6",
23
+ "react": ">=18"
24
+ },
25
+ "keywords": [
26
+ "ServiceTitan"
27
+ ],
28
+ "author": "Alexander Yarmolchuk",
29
+ "publishConfig": {
30
+ "access": "public"
31
+ },
32
+ "cli": {
33
+ "webpack": false
34
+ },
35
+ "gitHead": "5c9c88b8b55c56cacefef6b8452e9367c31c9ad3"
36
+ }
@@ -0,0 +1,10 @@
1
+ // eslint-disable-next-line spaced-comment
2
+ /// <reference types="cypress" />
3
+ declare namespace Cypress {
4
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
5
+ interface Chainable<Subject = any> {
6
+ getCy<E extends Node = HTMLElement>(value: string): Chainable<JQuery<E>>;
7
+ getCy2<E extends Node = HTMLElement>(value: string): Chainable<JQuery<E>>;
8
+ getAnvil<E extends Node = HTMLElement>(value: string, extra?: string): Chainable<JQuery<E>>;
9
+ }
10
+ }
package/src/index.ts ADDED
@@ -0,0 +1,4 @@
1
+ export * from './stores';
2
+ export * from './models';
3
+ export * from './utils/text-utils';
4
+ export * from './utils/test-utils';
@@ -0,0 +1,105 @@
1
+ import {
2
+ ChatMessageModelFile,
3
+ ChatMessageModelText,
4
+ ChatMessageModelTimeout,
5
+ ChatMessageModelWelcome,
6
+ ChatMessageState,
7
+ ChatParticipantIcon,
8
+ ChatParticipantModel,
9
+ } from '../support-chat';
10
+
11
+ export function mockChatAgent(overrides?: Partial<ChatParticipantModel>): ChatParticipantModel {
12
+ return {
13
+ isAgent: true,
14
+ name: 'agent name',
15
+ icon: ChatParticipantIcon.Bot,
16
+ ...overrides,
17
+ };
18
+ }
19
+
20
+ export function mockChatUser(overrides?: Partial<ChatParticipantModel>): ChatParticipantModel {
21
+ return {
22
+ isAgent: false,
23
+ name: 'user name',
24
+ icon: ChatParticipantIcon.Initials,
25
+ ...overrides,
26
+ };
27
+ }
28
+
29
+ export function mockChatMessageModelText(
30
+ isAgent: boolean,
31
+ overrides?: Partial<ChatMessageModelText>
32
+ ): ChatMessageModelText {
33
+ return {
34
+ id: 'id',
35
+ type: 'message',
36
+ message: 'message',
37
+ timestamp: new Date('2000-01-01T00:00:00Z'),
38
+ state: ChatMessageState.Delivered,
39
+ data: {},
40
+ participant: isAgent ? mockChatAgent() : mockChatUser(),
41
+ ...overrides,
42
+ };
43
+ }
44
+
45
+ export function mockChatMessageModelWelcome(
46
+ overrides?: Partial<ChatMessageModelWelcome>
47
+ ): ChatMessageModelWelcome {
48
+ return {
49
+ id: 'id',
50
+ type: 'welcome',
51
+ message: 'message welcome',
52
+ timestamp: new Date('2000-01-01T00:00:00Z'),
53
+ state: ChatMessageState.Delivered,
54
+ data: {},
55
+ participant: mockChatAgent(),
56
+ ...overrides,
57
+ };
58
+ }
59
+
60
+ export function mockChatMessageModelFile(
61
+ overrides?: Partial<ChatMessageModelFile>
62
+ ): ChatMessageModelFile {
63
+ return {
64
+ id: 'id',
65
+ type: 'file',
66
+ timestamp: new Date('2000-01-01T00:00:00Z'),
67
+ state: ChatMessageState.Delivered,
68
+ fileName: 'file name',
69
+ data: {},
70
+ participant: mockChatUser(),
71
+ ...overrides,
72
+ };
73
+ }
74
+
75
+ export function mockChatMessageModelTimeout(
76
+ overrides?: Partial<ChatMessageModelTimeout>
77
+ ): ChatMessageModelTimeout {
78
+ return {
79
+ id: 'id',
80
+ type: 'timeout',
81
+ timestamp: new Date('2000-01-01T00:00:00Z'),
82
+ state: ChatMessageState.Delivered,
83
+ data: {},
84
+ participant: mockChatAgent(),
85
+ ...overrides,
86
+ };
87
+ }
88
+
89
+ export function mockChatConversation() {
90
+ return [
91
+ mockChatMessageModelWelcome(),
92
+ mockChatMessageModelText(false, {
93
+ message: 'question 1',
94
+ }),
95
+ mockChatMessageModelText(true, {
96
+ message: 'answer 1',
97
+ }),
98
+ mockChatMessageModelText(false, {
99
+ message: 'question 2',
100
+ }),
101
+ mockChatMessageModelText(true, {
102
+ message: 'answer 2',
103
+ }),
104
+ ];
105
+ }
@@ -0,0 +1,50 @@
1
+ import { FC, PropsWithChildren, ReactNode } from 'react';
2
+ import { ChatMessageModelBase, ChatParticipantIcon } from './support-chat';
3
+
4
+ export interface IChatMessageProps<T extends ChatMessageModelBase = ChatMessageModelBase> {
5
+ message: T;
6
+ omitAvatar?: boolean;
7
+ omitTimestamp?: boolean;
8
+ }
9
+
10
+ export interface ChatMessageTemplateCustomization<
11
+ T extends ChatMessageModelBase = ChatMessageModelBase,
12
+ > {
13
+ component: FC<PropsWithChildren<IChatMessageProps<T>>>;
14
+ predicate: (message: T) => boolean;
15
+ }
16
+
17
+ export type ChatMessageTemplateCustomizations = Partial<{
18
+ agent: ChatMessageTemplateCustomization;
19
+ user: ChatMessageTemplateCustomization;
20
+ }>;
21
+
22
+ export interface ChatMessageCustomization<T extends ChatMessageModelBase = ChatMessageModelBase> {
23
+ predicate: (message: T) => boolean;
24
+ component?: FC<IChatMessageProps<T>>;
25
+ isSystem?: boolean; // System messages are messages that are not sent by the user or the agent and rendered without chat bubbles
26
+ isIgnored?: boolean;
27
+ }
28
+
29
+ export interface ChatMessageTypingCustomization {
30
+ component: FC<{
31
+ avatar: {
32
+ className?: string;
33
+ name: string;
34
+ icon: ChatParticipantIcon;
35
+ };
36
+ }>;
37
+ }
38
+
39
+ export interface ChatInputCustomization {
40
+ isDisabled?: boolean;
41
+ }
42
+
43
+ export type ChatCustomizations = Partial<{
44
+ messageTemplates: ChatMessageTemplateCustomizations;
45
+ messages: ChatMessageCustomization[];
46
+ messageTyping: ChatMessageTypingCustomization;
47
+ input: ChatInputCustomization;
48
+ footerComponent: ReactNode;
49
+ loadingComponent: ReactNode;
50
+ }>;
@@ -0,0 +1,6 @@
1
+ export interface FileDescriptor {
2
+ displayName?: string;
3
+ downloadLink?: string;
4
+ file: File | string;
5
+ uploadProgress?: number;
6
+ }
@@ -0,0 +1,3 @@
1
+ export * from './support-chat';
2
+ export * from './__mocks__/support-chat.mock';
3
+ export * from './chat-customizations';
@@ -0,0 +1,117 @@
1
+ export interface ChatTimer {
2
+ secondsLeft: number;
3
+ secondsTotal: number;
4
+ }
5
+
6
+ export enum ChatMessageState {
7
+ Delivering = 'Delivering',
8
+ Delivered = 'Delivered',
9
+ Failed = 'Failed',
10
+ }
11
+
12
+ export enum ChatEndReason {
13
+ ByUser = 'ByUser',
14
+ ByAgent = 'ByAgent',
15
+ ByTimeout = 'ByTimeout',
16
+ ByFailedToStart = 'ByFailedToStart',
17
+ }
18
+
19
+ export enum ChatParticipantIcon {
20
+ Empty = 'empty',
21
+ Initials = 'initials',
22
+ Bot = 'bot',
23
+ }
24
+
25
+ export interface ChatParticipantModel {
26
+ isAgent: boolean;
27
+ name: string;
28
+ icon: ChatParticipantIcon;
29
+ }
30
+
31
+ export interface ChatConfiguration {
32
+ agentName?: string;
33
+ agentIcon?: ChatParticipantIcon;
34
+ }
35
+
36
+ export interface ChatMessageModelBase {
37
+ id: string;
38
+ timestamp: Date;
39
+ type: string;
40
+ participant: ChatParticipantModel;
41
+ state: ChatMessageState;
42
+ data?: any;
43
+ }
44
+
45
+ export interface ChatMessageModelTimeout extends ChatMessageModelBase {
46
+ type: 'timeout';
47
+ }
48
+
49
+ export interface ChatMessageModelText extends ChatMessageModelBase {
50
+ type: 'message';
51
+ message: string;
52
+ }
53
+
54
+ export interface ChatMessageModelWelcome extends ChatMessageModelBase {
55
+ type: 'welcome';
56
+ message: string;
57
+ }
58
+
59
+ export interface ChatMessageModelFile extends ChatMessageModelBase {
60
+ type: 'file';
61
+ fileName: string;
62
+ }
63
+
64
+ export type ChatErrorRecoverStrategy =
65
+ | {
66
+ recoverButtonTitle: string;
67
+ }
68
+ | false;
69
+
70
+ export interface ChatErrorOptions<T = any> {
71
+ title?: string;
72
+ recoverStrategy?: ChatErrorRecoverStrategy;
73
+ data?: T;
74
+ }
75
+
76
+ export class ChatError<T = any> extends Error {
77
+ title: string;
78
+ recoverStrategy: ChatErrorRecoverStrategy;
79
+ data?: T;
80
+
81
+ constructor(message: string, options?: ChatErrorOptions<T>) {
82
+ super(message);
83
+ this.name = 'ChatError';
84
+ this.title = options?.title ?? 'Chat Error';
85
+ this.recoverStrategy = options?.recoverStrategy ?? false;
86
+ this.data = options?.data;
87
+ Object.setPrototypeOf(this, ChatError.prototype);
88
+ }
89
+
90
+ toJSON(): Record<string, any> {
91
+ return {
92
+ name: this.name,
93
+ message: this.message,
94
+ title: this.title,
95
+ recoverStrategy: this.recoverStrategy,
96
+ data: this.data,
97
+ };
98
+ }
99
+
100
+ fromJSON(json: Record<string, any>): ChatError<T> {
101
+ const error = new ChatError<T>(json.message, {
102
+ title: json.title,
103
+ recoverStrategy: json.recoverStrategy,
104
+ data: json.data,
105
+ });
106
+ error.name = json.name;
107
+ return error;
108
+ }
109
+ }
110
+
111
+ export enum ChatRunState {
112
+ Offline = 0,
113
+ Initializing = 1,
114
+ Started = 2,
115
+ Ended = 3,
116
+ Error = 4,
117
+ }