@asgard-js/react 0.0.43 → 0.0.44-canary.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 (136) hide show
  1. package/dist/components/chatbot/chatbot.d.ts +1 -1
  2. package/dist/components/chatbot/chatbot.d.ts.map +1 -1
  3. package/dist/context/asgard-service-context.d.ts +1 -1
  4. package/dist/context/asgard-service-context.d.ts.map +1 -1
  5. package/dist/hooks/use-channel.d.ts +1 -1
  6. package/dist/hooks/use-channel.d.ts.map +1 -1
  7. package/dist/index.js +20457 -20222
  8. package/package.json +3 -3
  9. package/.babelrc +0 -12
  10. package/eslint.config.cjs +0 -12
  11. package/src/components/.DS_Store +0 -0
  12. package/src/components/chatbot/api-key-input/api-key-input.module.scss +0 -156
  13. package/src/components/chatbot/api-key-input/api-key-input.tsx +0 -111
  14. package/src/components/chatbot/api-key-input/index.ts +0 -1
  15. package/src/components/chatbot/chatbot-body/chatbot-body.module.scss +0 -13
  16. package/src/components/chatbot/chatbot-body/chatbot-body.tsx +0 -45
  17. package/src/components/chatbot/chatbot-body/conversation-message-renderer.tsx +0 -55
  18. package/src/components/chatbot/chatbot-body/index.ts +0 -1
  19. package/src/components/chatbot/chatbot-container/chatbot-container.module.scss +0 -41
  20. package/src/components/chatbot/chatbot-container/chatbot-container.tsx +0 -49
  21. package/src/components/chatbot/chatbot-container/chatbot-full-screen-container.tsx +0 -54
  22. package/src/components/chatbot/chatbot-footer/chatbot-footer.module.scss +0 -67
  23. package/src/components/chatbot/chatbot-footer/chatbot-footer.tsx +0 -140
  24. package/src/components/chatbot/chatbot-footer/index.ts +0 -1
  25. package/src/components/chatbot/chatbot-footer/speech-input-button.tsx +0 -132
  26. package/src/components/chatbot/chatbot-header/chatbot-header.module.scss +0 -48
  27. package/src/components/chatbot/chatbot-header/chatbot-header.tsx +0 -98
  28. package/src/components/chatbot/chatbot-header/index.ts +0 -1
  29. package/src/components/chatbot/chatbot.module.scss +0 -24
  30. package/src/components/chatbot/chatbot.spec.tsx +0 -8
  31. package/src/components/chatbot/chatbot.tsx +0 -227
  32. package/src/components/chatbot/profile-icon.tsx +0 -26
  33. package/src/components/index.ts +0 -2
  34. package/src/components/templates/avatar/avatar.module.scss +0 -6
  35. package/src/components/templates/avatar/avatar.tsx +0 -28
  36. package/src/components/templates/avatar/index.ts +0 -1
  37. package/src/components/templates/button-template/button-template.module.scss +0 -0
  38. package/src/components/templates/button-template/button-template.tsx +0 -45
  39. package/src/components/templates/button-template/card.module.scss +0 -58
  40. package/src/components/templates/button-template/card.spec.tsx +0 -213
  41. package/src/components/templates/button-template/card.tsx +0 -123
  42. package/src/components/templates/button-template/index.ts +0 -1
  43. package/src/components/templates/carousel-template/carousel-template.module.scss +0 -15
  44. package/src/components/templates/carousel-template/carousel-template.tsx +0 -49
  45. package/src/components/templates/carousel-template/index.ts +0 -1
  46. package/src/components/templates/chart-template/chart-template.module.scss +0 -52
  47. package/src/components/templates/chart-template/chart-template.tsx +0 -75
  48. package/src/components/templates/chart-template/index.ts +0 -1
  49. package/src/components/templates/hint-template/hint-template.module.scss +0 -43
  50. package/src/components/templates/hint-template/hint-template.tsx +0 -76
  51. package/src/components/templates/hint-template/index.ts +0 -1
  52. package/src/components/templates/image-template/image-template.module.scss +0 -67
  53. package/src/components/templates/image-template/image-template.tsx +0 -58
  54. package/src/components/templates/image-template/index.ts +0 -1
  55. package/src/components/templates/index.ts +0 -10
  56. package/src/components/templates/quick-replies/index.ts +0 -1
  57. package/src/components/templates/quick-replies/quick-replies.module.scss +0 -16
  58. package/src/components/templates/quick-replies/quick-replies.tsx +0 -47
  59. package/src/components/templates/template-box/index.ts +0 -2
  60. package/src/components/templates/template-box/template-box-content.module.scss +0 -13
  61. package/src/components/templates/template-box/template-box-content.tsx +0 -30
  62. package/src/components/templates/template-box/template-box.module.scss +0 -19
  63. package/src/components/templates/template-box/template-box.tsx +0 -48
  64. package/src/components/templates/text-template/bot-typing-box.tsx +0 -81
  65. package/src/components/templates/text-template/bot-typing-placeholder.tsx +0 -28
  66. package/src/components/templates/text-template/index.ts +0 -3
  67. package/src/components/templates/text-template/text-template.module.scss +0 -131
  68. package/src/components/templates/text-template/text-template.tsx +0 -94
  69. package/src/components/templates/text-template/use-react-markdown-renderer.spec.tsx +0 -758
  70. package/src/components/templates/time/index.ts +0 -1
  71. package/src/components/templates/time/time.module.scss +0 -6
  72. package/src/components/templates/time/time.tsx +0 -34
  73. package/src/context/asgard-app-initialization-context.tsx +0 -154
  74. package/src/context/asgard-service-context.tsx +0 -148
  75. package/src/context/asgard-template-context.tsx +0 -83
  76. package/src/context/asgard-theme-context.tsx +0 -553
  77. package/src/context/index.ts +0 -4
  78. package/src/hooks/index.ts +0 -11
  79. package/src/hooks/use-asgard-service-client.ts +0 -68
  80. package/src/hooks/use-channel.ts +0 -160
  81. package/src/hooks/use-debounce.ts +0 -18
  82. package/src/hooks/use-deep-compare-memo.ts +0 -19
  83. package/src/hooks/use-is-on-screen-keyboard-open.ts +0 -43
  84. package/src/hooks/use-on-screen-keyboard-scroll-fix.ts +0 -17
  85. package/src/hooks/use-prevent-over-scrolling.ts +0 -77
  86. package/src/hooks/use-react-markdown-renderer.tsx +0 -278
  87. package/src/hooks/use-resize-observer.tsx +0 -27
  88. package/src/hooks/use-update-vh.ts +0 -30
  89. package/src/hooks/use-viewport-size.ts +0 -51
  90. package/src/icons/add_a_photo.svg +0 -3
  91. package/src/icons/bot.svg +0 -14
  92. package/src/icons/close.svg +0 -3
  93. package/src/icons/distance.svg +0 -3
  94. package/src/icons/eye-off.svg +0 -4
  95. package/src/icons/eye.svg +0 -4
  96. package/src/icons/mic.svg +0 -3
  97. package/src/icons/photo_library.svg +0 -3
  98. package/src/icons/profile.svg +0 -28
  99. package/src/icons/refresh.svg +0 -3
  100. package/src/icons/send.svg +0 -3
  101. package/src/icons/stop.svg +0 -22
  102. package/src/icons/volume_up.svg +0 -3
  103. package/src/index.ts +0 -4
  104. package/src/models/bot-provider.ts +0 -108
  105. package/src/styles/_index.scss +0 -1
  106. package/src/styles/_styles.scss +0 -11
  107. package/src/styles/colors/_colors.scss +0 -10
  108. package/src/styles/colors/_index.scss +0 -1
  109. package/src/styles/colors/_variables.scss +0 -72
  110. package/src/styles/palette/_index.scss +0 -1
  111. package/src/styles/palette/_palette.scss +0 -42
  112. package/src/styles/palette/_variables.scss +0 -40
  113. package/src/styles/radius/_index.scss +0 -1
  114. package/src/styles/radius/_radius.scss +0 -8
  115. package/src/styles/radius/_variables.scss +0 -12
  116. package/src/styles/spacing/_index.scss +0 -1
  117. package/src/styles/spacing/_spacing.scss +0 -8
  118. package/src/styles/spacing/_variables.scss +0 -13
  119. package/src/styles/utils/_index.scss +0 -1
  120. package/src/styles/utils/_map.scss +0 -22
  121. package/src/test-setup.ts +0 -1
  122. package/src/utils/color-utils.ts +0 -52
  123. package/src/utils/deep-merge.ts +0 -26
  124. package/src/utils/extractors.ts +0 -20
  125. package/src/utils/format-time.ts +0 -8
  126. package/src/utils/index.ts +0 -1
  127. package/src/utils/is.ts +0 -72
  128. package/src/utils/selectors.ts +0 -7
  129. package/src/utils/uri-validation.spec.ts +0 -208
  130. package/src/utils/uri-validation.ts +0 -103
  131. package/tsconfig.json +0 -16
  132. package/tsconfig.lib.json +0 -63
  133. package/tsconfig.spec.json +0 -36
  134. package/tsconfig.tsbuildinfo +0 -1
  135. package/vite.config.ts +0 -63
  136. /package/dist/{style.css → index.css} +0 -0
@@ -1 +0,0 @@
1
- export * from './time';
@@ -1,6 +0,0 @@
1
- .time {
2
- display: flex;
3
- align-items: flex-end;
4
- font-size: 12px;
5
- color: #8C8C8C;
6
- }
@@ -1,34 +0,0 @@
1
- import { ReactNode, useMemo } from 'react';
2
- import { formatTime } from '../../../utils';
3
- import styles from './time.module.scss';
4
- import clsx from 'clsx';
5
- import { useAsgardThemeContext } from '../../../context/asgard-theme-context';
6
-
7
- interface TimeProps {
8
- time?: Date;
9
- className?: string;
10
- }
11
-
12
- export function Time(props: TimeProps): ReactNode {
13
- const { time, className } = props;
14
-
15
- const { template } = useAsgardThemeContext();
16
-
17
- const timeStyle = useMemo(
18
- () => ({
19
- color: template?.time?.style?.color,
20
- }),
21
- [template?.time?.style?.color]
22
- );
23
-
24
- if (!time) return null;
25
-
26
- return (
27
- <div
28
- className={clsx('asgard-time', styles.time, className)}
29
- style={timeStyle}
30
- >
31
- {formatTime(time)}
32
- </div>
33
- );
34
- }
@@ -1,154 +0,0 @@
1
- import React, {
2
- createContext,
3
- useContext,
4
- useEffect,
5
- useState,
6
- PropsWithChildren,
7
- ReactNode,
8
- } from 'react';
9
- import { ClientConfig } from '@asgard-js/core';
10
- import { getBotProviderModels } from '../models/bot-provider';
11
- import { useDeepCompareMemo } from '../hooks';
12
- import { deepMerge } from '../utils/deep-merge';
13
- import { extractRefs } from '../utils/extractors';
14
-
15
- type AsyncInitializers = {
16
- [key: string]: () => Promise<unknown>;
17
- };
18
-
19
- export interface Annotations {
20
- embedConfig: {
21
- avatar?: string;
22
- botTypingPlaceholder?: string;
23
- debugMode?: boolean;
24
- fullScreen?: boolean;
25
- inputPlaceholder?: string;
26
- theme: {
27
- chatbot: {
28
- backgroundColor?: string;
29
- borderColor?: string;
30
- inactiveColor?: string;
31
- primaryComponent?: {
32
- mainColor?: string;
33
- secondaryColor?: string;
34
- };
35
- };
36
- botMessage: {
37
- backgroundColor?: string;
38
- carouselButtonBackgroundColor?: string;
39
- color?: string;
40
- };
41
- userMessage: {
42
- backgroundColor?: string;
43
- color?: string;
44
- };
45
- };
46
- title?: string;
47
- };
48
- }
49
-
50
- export interface AsgardAppInitializationContextValue {
51
- data: {
52
- annotations?: Annotations;
53
- };
54
- loading: boolean;
55
- error: Error | null;
56
- }
57
-
58
- export const AsgardAppInitializationContext =
59
- createContext<AsgardAppInitializationContextValue>({
60
- data: {},
61
- loading: true,
62
- error: null,
63
- });
64
-
65
- export interface AsgardAppInitializationContextProviderProps {
66
- enabled: boolean;
67
- config: ClientConfig;
68
- asyncInitializers?: AsyncInitializers;
69
- loadingComponent?: React.ReactNode;
70
- }
71
-
72
- export const AsgardAppInitializationContextProvider = (
73
- props: PropsWithChildren<AsgardAppInitializationContextProviderProps>
74
- ): ReactNode => {
75
- const {
76
- enabled,
77
- asyncInitializers: asyncInitializersFromProp = {},
78
- children,
79
- loadingComponent = <div>Loading...</div>,
80
- } = props;
81
-
82
- const botProviderModels = useDeepCompareMemo(
83
- () => getBotProviderModels(props.config),
84
- [props.config]
85
- );
86
-
87
- const asyncInitializers = useDeepCompareMemo(
88
- () =>
89
- deepMerge(
90
- { annotations: botProviderModels.getAnnotations },
91
- asyncInitializersFromProp
92
- ),
93
- [...extractRefs(asyncInitializersFromProp), botProviderModels]
94
- );
95
-
96
- const [data, setData] = useState<AsgardAppInitializationContextValue['data']>(
97
- {}
98
- );
99
- const [loading, setLoading] = useState(true);
100
- const [error, setError] = useState<Error | null>(null);
101
-
102
- useEffect(() => {
103
- let isMounted = true;
104
-
105
- if (!enabled) {
106
- return;
107
- }
108
-
109
- setLoading(true);
110
-
111
- Promise.all(
112
- Object.entries(asyncInitializers).map(async ([key, fn]) => {
113
- try {
114
- const value = await fn();
115
-
116
- return [key, value];
117
- } catch {
118
- return [key, undefined];
119
- }
120
- })
121
- )
122
- .then((results) => {
123
- if (isMounted) setData(Object.fromEntries(results));
124
- })
125
- .catch((err) => {
126
- if (isMounted) setError(err);
127
- })
128
- .finally(() => {
129
- if (isMounted) setLoading(false);
130
- });
131
-
132
- return (): void => {
133
- isMounted = false;
134
- };
135
- }, [asyncInitializers, enabled]);
136
-
137
- if (!enabled) {
138
- return children;
139
- }
140
-
141
- if (loading) {
142
- return loadingComponent;
143
- }
144
-
145
- return (
146
- <AsgardAppInitializationContext.Provider value={{ data, loading, error }}>
147
- {children}
148
- </AsgardAppInitializationContext.Provider>
149
- );
150
- };
151
-
152
- export const useAsgardAppInitializationContext =
153
- (): AsgardAppInitializationContextValue =>
154
- useContext(AsgardAppInitializationContext);
@@ -1,148 +0,0 @@
1
- import {
2
- AsgardServiceClient,
3
- ClientConfig,
4
- ConversationMessage,
5
- } from '@asgard-js/core';
6
- import {
7
- createContext,
8
- ForwardedRef,
9
- ReactNode,
10
- RefObject,
11
- useContext,
12
- useImperativeHandle,
13
- useMemo,
14
- useRef,
15
- } from 'react';
16
- import {
17
- useAsgardServiceClient,
18
- useChannel,
19
- UseChannelProps,
20
- UseChannelReturn,
21
- } from '../hooks';
22
-
23
- export interface AsgardServiceContextValue {
24
- avatar?: string;
25
- client: AsgardServiceClient | null;
26
- isOpen: boolean;
27
- isResetting: boolean;
28
- isConnecting: boolean;
29
- messages: Map<string, ConversationMessage> | null;
30
- messageBoxBottomRef: RefObject<HTMLDivElement>;
31
- sendMessage?: UseChannelReturn['sendMessage'];
32
- resetChannel?: UseChannelReturn['resetChannel'];
33
- closeChannel?: UseChannelReturn['closeChannel'];
34
- botTypingPlaceholder?: string;
35
- inputPlaceholder?: string;
36
- }
37
-
38
- export const AsgardServiceContext = createContext<AsgardServiceContextValue>({
39
- avatar: undefined,
40
- client: null,
41
- isOpen: false,
42
- isResetting: false,
43
- isConnecting: false,
44
- messages: null,
45
- messageBoxBottomRef: { current: null },
46
- botTypingPlaceholder: undefined,
47
- inputPlaceholder: undefined,
48
- });
49
-
50
- export interface AsgardServiceContextProviderProps {
51
- children: ReactNode;
52
- parentRef?: ForwardedRef<
53
- Partial<{ serviceContext?: AsgardServiceContextValue }>
54
- >;
55
- avatar?: string;
56
- config: ClientConfig;
57
- botTypingPlaceholder?: string;
58
- inputPlaceholder?: string;
59
- customChannelId: string;
60
- customMessageId?: string;
61
- delayTime?: number;
62
- initMessages?: ConversationMessage[];
63
- onSseMessage?: UseChannelProps['onSseMessage'];
64
- onAuthError?: (error: { isAuthError: boolean; isBotProviderError: boolean; errorDetail?: any }) => void;
65
- }
66
-
67
- export function AsgardServiceContextProvider(
68
- props: AsgardServiceContextProviderProps
69
- ): ReactNode {
70
- const {
71
- avatar,
72
- children,
73
- parentRef,
74
- config,
75
- botTypingPlaceholder,
76
- inputPlaceholder,
77
- customChannelId,
78
- initMessages,
79
- onSseMessage,
80
- onAuthError,
81
- } = props;
82
-
83
- const messageBoxBottomRef = useRef<HTMLDivElement>(null);
84
-
85
- const client = useAsgardServiceClient({ config });
86
-
87
- const {
88
- isOpen,
89
- isResetting,
90
- isConnecting,
91
- conversation,
92
- sendMessage,
93
- resetChannel,
94
- closeChannel,
95
- } = useChannel({
96
- client,
97
- customChannelId,
98
- initMessages,
99
- onSseMessage,
100
- onAuthError,
101
- });
102
-
103
- const contextValue = useMemo(
104
- () => ({
105
- avatar,
106
- client,
107
- isOpen,
108
- isResetting,
109
- isConnecting,
110
- messages: conversation?.messages ?? null,
111
- sendMessage,
112
- resetChannel,
113
- closeChannel,
114
- botTypingPlaceholder,
115
- inputPlaceholder,
116
- messageBoxBottomRef,
117
- }),
118
- [
119
- avatar,
120
- client,
121
- isOpen,
122
- isResetting,
123
- isConnecting,
124
- conversation?.messages,
125
- sendMessage,
126
- resetChannel,
127
- closeChannel,
128
- botTypingPlaceholder,
129
- inputPlaceholder,
130
- ]
131
- );
132
-
133
- useImperativeHandle(parentRef, () => {
134
- return {
135
- serviceContext: contextValue,
136
- };
137
- });
138
-
139
- return (
140
- <AsgardServiceContext.Provider value={contextValue}>
141
- {children}
142
- </AsgardServiceContext.Provider>
143
- );
144
- }
145
-
146
- export function useAsgardContext(): AsgardServiceContextValue {
147
- return useContext(AsgardServiceContext);
148
- }
@@ -1,83 +0,0 @@
1
- import {
2
- createContext,
3
- PropsWithChildren,
4
- ReactNode,
5
- useContext,
6
- useMemo,
7
- } from 'react';
8
- import { ConversationErrorMessage, FetchSsePayload } from '@asgard-js/core';
9
-
10
- export interface AsgardTemplateContextValue {
11
- onErrorClick?: (message: ConversationErrorMessage) => void;
12
- errorMessageRenderer?: (message: ConversationErrorMessage) => ReactNode;
13
- onTemplateBtnClick?: (
14
- payload: Record<string, unknown>,
15
- {
16
- sse,
17
- }: {
18
- sse: {
19
- sendMessage: (
20
- payload: Pick<FetchSsePayload, 'text'> & Partial<Pick<FetchSsePayload, 'payload'>>
21
- ) => void;
22
- };
23
- }
24
- ) => void;
25
- defaultLinkTarget?: '_blank' | '_self' | '_parent' | '_top';
26
- }
27
-
28
- export const AsgardTemplateContext = createContext<AsgardTemplateContextValue>({
29
- onErrorClick: undefined,
30
- errorMessageRenderer: undefined,
31
- onTemplateBtnClick: undefined,
32
- defaultLinkTarget: undefined,
33
- });
34
-
35
- interface AsgardTemplateContextProviderProps extends PropsWithChildren {
36
- onErrorClick?: (message: ConversationErrorMessage) => void;
37
- errorMessageRenderer?: (message: ConversationErrorMessage) => ReactNode;
38
- onTemplateBtnClick?: (
39
- payload: Record<string, unknown>,
40
- {
41
- sse,
42
- }: {
43
- sse: {
44
- sendMessage: (
45
- payload: Pick<FetchSsePayload, 'text'> & Partial<Pick<FetchSsePayload, 'payload'>>
46
- ) => void;
47
- };
48
- }
49
- ) => void;
50
- defaultLinkTarget?: '_blank' | '_self' | '_parent' | '_top';
51
- }
52
-
53
- export function AsgardTemplateContextProvider(
54
- props: AsgardTemplateContextProviderProps
55
- ): ReactNode {
56
- const {
57
- children,
58
- onErrorClick,
59
- errorMessageRenderer,
60
- onTemplateBtnClick,
61
- defaultLinkTarget,
62
- } = props;
63
-
64
- const contextValue = useMemo(
65
- () => ({
66
- onErrorClick,
67
- errorMessageRenderer,
68
- onTemplateBtnClick,
69
- defaultLinkTarget,
70
- }),
71
- [errorMessageRenderer, onErrorClick, onTemplateBtnClick, defaultLinkTarget]
72
- );
73
-
74
- return (
75
- <AsgardTemplateContext.Provider value={contextValue}>
76
- {children}
77
- </AsgardTemplateContext.Provider>
78
- );
79
- }
80
-
81
- export function useAsgardTemplateContext(): AsgardTemplateContextValue {
82
- return useContext(AsgardTemplateContext);
83
- }