@stack-spot/ai-chat-widget 1.4.1 → 1.5.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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,19 @@
1
1
  # Changelog
2
2
 
3
+ ## [1.5.0](https://github.com/stack-spot/portal-ai-chat-widget/compare/ai-chat-widget@v1.4.1...ai-chat-widget@v1.5.0) (2024-11-05)
4
+
5
+
6
+ ### Features
7
+
8
+ * style feature ([5ef9a29](https://github.com/stack-spot/portal-ai-chat-widget/commit/5ef9a29cede82f6de7aaf90597c92022eb48fd2f))
9
+
10
+ ## [1.4.1](https://github.com/stack-spot/portal-ai-chat-widget/compare/ai-chat-widget@v1.4.0...ai-chat-widget@v1.4.1) (2024-11-05)
11
+
12
+
13
+ ### Bug Fixes
14
+
15
+ * release ([b26e08a](https://github.com/stack-spot/portal-ai-chat-widget/commit/b26e08a29bad33faa47f48077f438ef67bcce731))
16
+
3
17
  ## [1.4.0](https://github.com/stack-spot/portal-ai-chat-widget/compare/ai-chat-widget-v1.3.3...ai-chat-widget@v1.4.0) (2024-11-04)
4
18
 
5
19
 
@@ -1,6 +1,7 @@
1
+ import { WithStyle } from '@stack-spot/portal-theme';
1
2
  import './layout.css';
2
3
  import { MinimizedActions } from './types.js';
3
- export interface AIWidgetProps {
4
+ export interface AIWidgetProps extends WithStyle {
4
5
  /**
5
6
  * The name of the user currently logged in.
6
7
  */
@@ -18,5 +19,5 @@ export interface AIWidgetProps {
18
19
  * Renders a Chat Widget according to the closest model found in the React tree (AIWidgetProvider). If no model is found, a global version
19
20
  * of the Chat Widget will be instantiated and used.
20
21
  */
21
- export declare const StackspotAIWidget: ({ username, minimizedActions, children }: AIWidgetProps) => import("react/jsx-runtime").JSX.Element;
22
+ export declare const StackspotAIWidget: ({ username, minimizedActions, children, className, style }: AIWidgetProps) => import("react/jsx-runtime").JSX.Element;
22
23
  //# sourceMappingURL=StackspotAIWidget.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"StackspotAIWidget.d.ts","sourceRoot":"","sources":["../src/StackspotAIWidget.tsx"],"names":[],"mappings":"AAIA,OAAO,cAAc,CAAA;AAGrB,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAc1C,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB;;OAEG;IACH,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B;;OAEG;IACH,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;CACrC;AAED;;;GAGG;AACH,eAAO,MAAM,iBAAiB,6CACmB,aAAa,4CAoC7D,CAAA"}
1
+ {"version":3,"file":"StackspotAIWidget.d.ts","sourceRoot":"","sources":["../src/StackspotAIWidget.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAe,SAAS,EAAE,MAAM,0BAA0B,CAAA;AAIjE,OAAO,cAAc,CAAA;AAGrB,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAc1C,MAAM,WAAW,aAAc,SAAQ,SAAS;IAC9C;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB;;OAEG;IACH,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B;;OAEG;IACH,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;CACrC;AAED;;;GAGG;AACH,eAAO,MAAM,iBAAiB,+DAAqE,aAAa,4CAmC/G,CAAA"}
@@ -22,13 +22,13 @@ import { Workspaces } from './views/Workspaces.js';
22
22
  * Renders a Chat Widget according to the closest model found in the React tree (AIWidgetProvider). If no model is found, a global version
23
23
  * of the Chat Widget will be instantiated and used.
24
24
  */
25
- export const StackspotAIWidget = ({ username, minimizedActions = {}, children }) => {
25
+ export const StackspotAIWidget = ({ username, minimizedActions = {}, children, className, style }) => {
26
26
  const rightPanelRef = useRef(null);
27
27
  const chatWindowRef = useRef(null);
28
28
  const currentChat = useCurrentChatMessages();
29
29
  const isMinimized = useWidgetState('isMinimized');
30
30
  const isCurrentChatEmpty = currentChat.length === 0;
31
- return useMemo(() => (_jsx(TooltipProvider, { children: _jsx(RightPanelProvider, { chatWindow: chatWindowRef, panel: rightPanelRef, children: _jsxs("div", { className: listToClass(['ai-chat-widget', isMinimized && 'minimized']), translate: "no", children: [_jsxs("div", { className: "chat-window", ref: chatWindowRef, children: [isMinimized
31
+ return useMemo(() => (_jsx(TooltipProvider, { children: _jsx(RightPanelProvider, { chatWindow: chatWindowRef, panel: rightPanelRef, children: _jsxs("div", { className: listToClass(['ai-chat-widget', isMinimized && 'minimized', className]), translate: "no", style: style, children: [_jsxs("div", { className: "chat-window", ref: chatWindowRef, children: [isMinimized
32
32
  ? _jsx(MinimizedHeader, { ...minimizedActions })
33
33
  : _jsx(ChatTabSelection, {}), _jsxs("div", { className: "chat-container", children: [_jsx("div", { className: "chat-content", children: isCurrentChatEmpty ? (children ?? _jsx(Home, { username: username })) : _jsx(Chat, { username: username }) }), _jsx(MessageInput, {})] })] }), _jsx(Stacks, {}), _jsx(Workspaces, {}), _jsx(KnowledgeSources, {}), _jsx(KSDocument, {}), _jsx(Agents, {}), _jsx(Editor, {}), _jsx(ChatHistory, {}), _jsx("div", { className: "chat-right-panel", ref: rightPanelRef, children: _jsx(RightPanel, {}) })] }) }) })), [isCurrentChatEmpty, username, isMinimized, children]);
34
34
  };
@@ -1 +1 @@
1
- {"version":3,"file":"StackspotAIWidget.js","sourceRoot":"","sources":["../src/StackspotAIWidget.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"StackspotAIWidget.js","sourceRoot":"","sources":["../src/StackspotAIWidget.tsx"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@stack-spot/ai-chat-widget",
3
- "version": "1.4.1",
4
- "date": "Mon Nov 04 2024 16:26:03 GMT-0300 (Horário Padrão de Brasília)",
3
+ "version": "1.5.0",
4
+ "date": "Tue Nov 05 2024 14:14:04 GMT+0000 (Coordinated Universal Time)",
5
5
  "dependencies": [
6
6
  {
7
7
  "name": "@stack-spot/app-metadata",
@@ -68,7 +68,6 @@ export declare class WidgetState extends ObservableState<WidgetProperties> {
68
68
  chatFeatures: ChatFeatures;
69
69
  constructor({ chatTabs, initial, interceptors, features }?: Options);
70
70
  private getNextUntitledChatIndex;
71
- private getNextUntitledChatLabel;
72
71
  /**
73
72
  * Utility function for adding a new chat to the chat tabs. This also selects the new tab.
74
73
  * @param properties the chat properties (initial state).
@@ -1 +1 @@
1
- {"version":3,"file":"WidgetState.d.ts","sourceRoot":"","sources":["../../src/state/WidgetState.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAA2B,cAAc,EAAE,MAAM,aAAa,CAAA;AACrG,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,EAAE,kCAAkC,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAC/F,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAEnD,MAAM,WAAW,gBAAgB;IAC/B;;OAEG;IACH,KAAK,CAAC,EAAE,OAAO,GAAG,WAAW,GAAG,OAAO,GAAG,IAAI,GAAG,QAAQ,GAAG,SAAS,GAAG,YAAY,CAAC;IACrF;;OAEG;IACH,gBAAgB,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;IACrF;;OAEG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;OAEG;IACH,QAAQ,EAAE,cAAc,CAAC;CAC1B;AAED,UAAU,OAAO;IACf;;;;;OAKG;IACH,YAAY,CAAC,EAAE,kBAAkB,EAAE,CAAC;IACpC;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACrC;;;;OAIG;IACH,OAAO,CAAC,EAAE,IAAI,CAAC,gBAAgB,EAAE,UAAU,CAAC,CAAC;IAC7C;;OAEG;IACH,QAAQ,CAAC,EAAE,kBAAkB,CAAC;CAC/B;AAID;;;;GAIG;AACH,qBAAa,WAAY,SAAQ,eAAe,CAAC,gBAAgB,CAAC;IAChE,QAAQ,CAAC,QAAQ,EAAE,kBAAkB,CAAA;IACrC;;OAEG;IACH,YAAY,EAAE,kBAAkB,EAAE,CAAK;IACvC;;OAEG;IACH,YAAY,EAAE,YAAY,CAAA;gBAEd,EAAE,QAAQ,EAAE,OAAO,EAAE,YAAiB,EAAE,QAAQ,EAAE,GAAE,OAAY;IAc5E,OAAO,CAAC,wBAAwB;IAWhC,OAAO,CAAC,wBAAwB;IAKhC;;;;;OAKG;IACH,UAAU,CAAC,EAAE,KAAK,EAAE,GAAG,UAAU,EAAE,GAAE,OAAO,CAAC,kCAAkC,CAAM,EAAE,OAAO,GAAE,SAAS,EAAO;CAYjH"}
1
+ {"version":3,"file":"WidgetState.d.ts","sourceRoot":"","sources":["../../src/state/WidgetState.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAA2B,cAAc,EAAE,MAAM,aAAa,CAAA;AACrG,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,EAAE,kCAAkC,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAC/F,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAEnD,MAAM,WAAW,gBAAgB;IAC/B;;OAEG;IACH,KAAK,CAAC,EAAE,OAAO,GAAG,WAAW,GAAG,OAAO,GAAG,IAAI,GAAG,QAAQ,GAAG,SAAS,GAAG,YAAY,CAAC;IACrF;;OAEG;IACH,gBAAgB,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;IACrF;;OAEG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;OAEG;IACH,QAAQ,EAAE,cAAc,CAAC;CAC1B;AAED,UAAU,OAAO;IACf;;;;;OAKG;IACH,YAAY,CAAC,EAAE,kBAAkB,EAAE,CAAC;IACpC;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACrC;;;;OAIG;IACH,OAAO,CAAC,EAAE,IAAI,CAAC,gBAAgB,EAAE,UAAU,CAAC,CAAC;IAC7C;;OAEG;IACH,QAAQ,CAAC,EAAE,kBAAkB,CAAC;CAC/B;AAID;;;;GAIG;AACH,qBAAa,WAAY,SAAQ,eAAe,CAAC,gBAAgB,CAAC;IAChE,QAAQ,CAAC,QAAQ,EAAE,kBAAkB,CAAA;IACrC;;OAEG;IACH,YAAY,EAAE,kBAAkB,EAAE,CAAK;IACvC;;OAEG;IACH,YAAY,EAAE,YAAY,CAAA;gBAEd,EAAE,QAAQ,EAAE,OAAO,EAAE,YAAiB,EAAE,QAAQ,EAAE,GAAE,OAAY;IAc5E,OAAO,CAAC,wBAAwB;IAUhC;;;;;OAKG;IACH,UAAU,CAAC,EAAE,KAAK,EAAE,GAAG,UAAU,EAAE,GAAE,OAAO,CAAC,kCAAkC,CAAM,EAAE,OAAO,GAAE,SAAS,EAAO;CAYjH"}
@@ -7,7 +7,7 @@ import { getFeaturesWithDefaults } from '../features.js';
7
7
  import { ChatState } from './ChatState.js';
8
8
  import { ChatTabsController } from './ChatTabsController.js';
9
9
  import { ObservableState } from './ObservableState.js';
10
- const untitledChatPrefix = 'Chat';
10
+ const untitledChatPrefix = 'Chat ';
11
11
  /**
12
12
  * Holds the full state of the AI Chat Widget.
13
13
  *
@@ -39,19 +39,13 @@ export class WidgetState extends ObservableState {
39
39
  getNextUntitledChatIndex() {
40
40
  let max = 0;
41
41
  for (const chat of this.chatTabs.getAll()) {
42
- if (chat.get('label') === untitledChatPrefix && max < 1)
43
- max = 1;
44
- const [, match] = chat.get('label').match(`^${untitledChatPrefix} (\\d+)$`) ?? [];
45
- const index = match ? parseInt(match) : 0;
42
+ const [, match] = chat.get('label').match(`${untitledChatPrefix}(\\d+)`) ?? [];
43
+ const index = parseInt(match);
46
44
  if (index > max)
47
45
  max = index;
48
46
  }
49
47
  return max + 1;
50
48
  }
51
- getNextUntitledChatLabel() {
52
- const next = this.getNextUntitledChatIndex();
53
- return next > 1 ? `${untitledChatPrefix} ${next}` : untitledChatPrefix;
54
- }
55
49
  /**
56
50
  * Utility function for adding a new chat to the chat tabs. This also selects the new tab.
57
51
  * @param properties the chat properties (initial state).
@@ -61,7 +55,7 @@ export class WidgetState extends ObservableState {
61
55
  createChat({ label, ...properties } = {}, entries = []) {
62
56
  const chat = new ChatState({
63
57
  id: ulid(),
64
- initial: { label: label || this.getNextUntitledChatLabel(), features: this.chatFeatures, ...properties },
58
+ initial: { label: label || `${untitledChatPrefix}${this.getNextUntitledChatIndex()}`, features: this.chatFeatures, ...properties },
65
59
  entries,
66
60
  interceptors: this.interceptors,
67
61
  untitled: !label,
@@ -1 +1 @@
1
- {"version":3,"file":"WidgetState.js","sourceRoot":"","sources":["../../src/state/WidgetState.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"WidgetState.js","sourceRoot":"","sources":["../../src/state/WidgetState.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAC7C,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,EAAE,gCAAgC,EAAE,MAAM,8CAA8C,CAAA;AAC/F,OAAO,EAAE,6BAA6B,EAAE,MAAM,qCAAqC,CAAA;AACnF,OAAO,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAA;AAC1E,OAAO,EAAkC,uBAAuB,EAAkB,MAAM,aAAa,CAAA;AAErG,OAAO,EAAsC,SAAS,EAAsB,MAAM,aAAa,CAAA;AAC/F,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AA+CnD,MAAM,kBAAkB,GAAG,OAAO,CAAA;AAElC;;;;GAIG;AACH,MAAM,OAAO,WAAY,SAAQ,eAAiC;IACvD,QAAQ,CAAoB;IACrC;;OAEG;IACH,YAAY,GAAyB,EAAE,CAAA;IACvC;;OAEG;IACH,YAAY,CAAc;IAE1B,YAAY,EAAE,QAAQ,EAAE,OAAO,EAAE,YAAY,GAAG,EAAE,EAAE,QAAQ,KAAc,EAAE;QAC1E,MAAM,oBAAoB,GAAG,uBAAuB,CAAC,QAAQ,CAAC,CAAA;QAC9D,KAAK,CAAC,EAAE,GAAG,OAAO,EAAE,QAAQ,EAAE,oBAAoB,EAAE,CAAC,CAAA;QACrD,IAAI,CAAC,YAAY,GAAG,oBAAoB,CAAA;QACxC,IAAI,CAAC,QAAQ,GAAG,QAAQ,IAAI,IAAI,kBAAkB,EAAE,CAAA;QACpD,IAAI,CAAC,YAAY,GAAG;YAClB,GAAG,YAAY;YACf,gCAAgC;YAChC,6BAA6B,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,mBAAmB,EAAE,EAAE,MAAM,CAAC;YAC/E,sBAAsB;SACvB,CAAA;QACD,IAAI,CAAC,UAAU,EAAE,CAAA;IACnB,CAAC;IAEO,wBAAwB;QAC9B,IAAI,GAAG,GAAG,CAAC,CAAA;QACX,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;YAC1C,MAAM,CAAC,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,kBAAkB,QAAQ,CAAC,IAAI,EAAE,CAAA;YAC9E,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;YAC7B,IAAI,KAAK,GAAG,GAAG;gBAAE,GAAG,GAAG,KAAK,CAAA;QAC9B,CAAC;QACD,OAAO,GAAG,GAAG,CAAC,CAAA;IAChB,CAAC;IAED;;;;;OAKG;IACH,UAAU,CAAC,EAAE,KAAK,EAAE,GAAG,UAAU,KAAkD,EAAE,EAAE,UAAuB,EAAE;QAC9G,MAAM,IAAI,GAAG,IAAI,SAAS,CAAC;YACzB,EAAE,EAAE,IAAI,EAAE;YACV,OAAO,EAAE,EAAE,KAAK,EAAE,KAAK,IAAI,GAAG,kBAAkB,GAAG,IAAI,CAAC,wBAAwB,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,YAAY,EAAE,GAAG,UAAU,EAAE;YAClI,OAAO;YACP,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,QAAQ,EAAE,CAAC,KAAK;SACjB,CAAC,CAAA;QACF,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QACvB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QAC7B,OAAO,IAAI,CAAA;IACb,CAAC;CACF"}
package/package.json CHANGED
@@ -1,9 +1,14 @@
1
1
  {
2
2
  "name": "@stack-spot/ai-chat-widget",
3
- "version": "1.4.1",
3
+ "version": "1.5.0",
4
4
  "type": "module",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
7
+ "scripts": {
8
+ "build": "rimraf dist && pnpm generate:metadata && tsc && tsc-esm-fix --target='dist' && cpy src/layout.css dist --flat",
9
+ "lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0",
10
+ "generate:metadata": "pnpm app-metadata --lockfile ../../pnpm-lock.yaml --path packages/widget"
11
+ },
7
12
  "peerDependencies": {
8
13
  "@citric/core": "^6.0.0",
9
14
  "@citric/icons": "^5.4.0 || ^6.0.0",
@@ -48,10 +53,5 @@
48
53
  "react-syntax-highlighter": "^15.5.0",
49
54
  "remark-gfm": "^4.0.0",
50
55
  "ulid": "^2.3.0"
51
- },
52
- "scripts": {
53
- "build": "rimraf dist && pnpm generate:metadata && tsc && tsc-esm-fix --target='dist' && cpy src/layout.css dist --flat",
54
- "lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0",
55
- "generate:metadata": "pnpm app-metadata --lockfile ../../pnpm-lock.yaml --path packages/widget"
56
56
  }
57
57
  }
@@ -1,4 +1,4 @@
1
- import { listToClass } from '@stack-spot/portal-theme'
1
+ import { listToClass, WithStyle } from '@stack-spot/portal-theme'
2
2
  import { useMemo, useRef } from 'react'
3
3
  import { TooltipProvider } from './components/Tooltip'
4
4
  import { useCurrentChatMessages, useWidgetState } from './context/hooks'
@@ -19,7 +19,7 @@ import { MinimizedHeader } from './views/MinimizedHeader'
19
19
  import { Stacks } from './views/Stacks'
20
20
  import { Workspaces } from './views/Workspaces'
21
21
 
22
- export interface AIWidgetProps {
22
+ export interface AIWidgetProps extends WithStyle {
23
23
  /**
24
24
  * The name of the user currently logged in.
25
25
  */
@@ -38,9 +38,7 @@ export interface AIWidgetProps {
38
38
  * Renders a Chat Widget according to the closest model found in the React tree (AIWidgetProvider). If no model is found, a global version
39
39
  * of the Chat Widget will be instantiated and used.
40
40
  */
41
- export const StackspotAIWidget = (
42
- { username, minimizedActions = {}, children }: AIWidgetProps,
43
- ) => {
41
+ export const StackspotAIWidget = ({ username, minimizedActions = {}, children, className, style }: AIWidgetProps) => {
44
42
  const rightPanelRef = useRef<HTMLDivElement>(null)
45
43
  const chatWindowRef = useRef<HTMLDivElement>(null)
46
44
  const currentChat = useCurrentChatMessages()
@@ -50,7 +48,7 @@ export const StackspotAIWidget = (
50
48
  return useMemo(() => (
51
49
  <TooltipProvider>
52
50
  <RightPanelProvider chatWindow={chatWindowRef} panel={rightPanelRef}>
53
- <div className={listToClass(['ai-chat-widget', isMinimized && 'minimized'])} translate="no">
51
+ <div className={listToClass(['ai-chat-widget', isMinimized && 'minimized', className])} translate="no" style={style}>
54
52
  <div className="chat-window" ref={chatWindowRef}>
55
53
  {isMinimized
56
54
  ? <MinimizedHeader {...minimizedActions} />
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@stack-spot/ai-chat-widget",
3
- "version": "1.4.1",
4
- "date": "Mon Nov 04 2024 16:26:03 GMT-0300 (Horário Padrão de Brasília)",
3
+ "version": "1.5.0",
4
+ "date": "Tue Nov 05 2024 14:14:04 GMT+0000 (Coordinated Universal Time)",
5
5
  "dependencies": [
6
6
  {
7
7
  "name": "@stack-spot/app-metadata",
@@ -54,7 +54,7 @@ interface Options {
54
54
  chatTabs?: ChatTabsController,
55
55
  }
56
56
 
57
- const untitledChatPrefix = 'Chat'
57
+ const untitledChatPrefix = 'Chat '
58
58
 
59
59
  /**
60
60
  * Holds the full state of the AI Chat Widget.
@@ -89,19 +89,13 @@ export class WidgetState extends ObservableState<WidgetProperties> {
89
89
  private getNextUntitledChatIndex() {
90
90
  let max = 0
91
91
  for (const chat of this.chatTabs.getAll()) {
92
- if (chat.get('label') === untitledChatPrefix && max < 1) max = 1
93
- const [, match] = chat.get('label').match(`^${untitledChatPrefix} (\\d+)$`) ?? []
94
- const index = match ? parseInt(match) : 0
92
+ const [, match] = chat.get('label').match(`${untitledChatPrefix}(\\d+)`) ?? []
93
+ const index = parseInt(match)
95
94
  if (index > max) max = index
96
95
  }
97
96
  return max + 1
98
97
  }
99
98
 
100
- private getNextUntitledChatLabel() {
101
- const next = this.getNextUntitledChatIndex()
102
- return next > 1 ? `${untitledChatPrefix} ${next}` : untitledChatPrefix
103
- }
104
-
105
99
  /**
106
100
  * Utility function for adding a new chat to the chat tabs. This also selects the new tab.
107
101
  * @param properties the chat properties (initial state).
@@ -111,7 +105,7 @@ export class WidgetState extends ObservableState<WidgetProperties> {
111
105
  createChat({ label, ...properties }: Partial<ChatPropertiesWithOptionalFeatures> = {}, entries: ChatEntry[] = []) {
112
106
  const chat = new ChatState({
113
107
  id: ulid(),
114
- initial: { label: label || this.getNextUntitledChatLabel(), features: this.chatFeatures, ...properties },
108
+ initial: { label: label || `${untitledChatPrefix}${this.getNextUntitledChatIndex()}`, features: this.chatFeatures, ...properties },
115
109
  entries,
116
110
  interceptors: this.interceptors,
117
111
  untitled: !label,
package/tsconfig.json CHANGED
@@ -2,7 +2,11 @@
2
2
  "compilerOptions": {
3
3
  "target": "ES2023",
4
4
  "useDefineForClassFields": true,
5
- "lib": ["ES2023", "DOM", "DOM.Iterable"],
5
+ "lib": [
6
+ "ES2023",
7
+ "DOM",
8
+ "DOM.Iterable"
9
+ ],
6
10
  "moduleResolution": "Bundler",
7
11
  "jsx": "react-jsx",
8
12
  "skipLibCheck": true,
@@ -11,12 +15,13 @@
11
15
  "declarationMap": true,
12
16
  "module": "ESNext",
13
17
  "outDir": "dist",
14
- /* Linting */
15
18
  "strict": true,
16
19
  "noUnusedLocals": true,
17
20
  "noUnusedParameters": true,
18
21
  "noFallthroughCasesInSwitch": true,
19
22
  "stripInternal": true
20
23
  },
21
- "include": ["src"]
24
+ "include": [
25
+ "src"
26
+ ]
22
27
  }