@interopio/io-assist-ng 1.1.2 → 1.1.4
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.
|
@@ -3997,11 +3997,11 @@ class WorkingContextPanelComponent {
|
|
|
3997
3997
|
return textToJSONMarkdown(this.workingContext());
|
|
3998
3998
|
}
|
|
3999
3999
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.22", ngImport: i0, type: WorkingContextPanelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
4000
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.22", type: WorkingContextPanelComponent, isStandalone: true, selector: "working-context-panel", providers: [WorkingContextFacade, SubscriptionCleanupService], ngImport: i0, template: "<div class=\"flex flex-1 flex-col p-4 gap-4\">\n <div\n class=\"flex items-center gap-2 mb-4 p-4 bg-app-background-secondary border border-border-default rounded\"\n >\n <app-icon\n [variant]=\"APP_ICON_VARIANTS.INFO\"\n [size]=\"APP_ICON_SIZES.M\"\n [iconFill]=\"'--app-accent-color-1'\"\n [isWrapped]=\"false\"\n >\n </app-icon>\n\n <p class=\"text-sm text-proto-text-default\">\n {{ UI_STRINGS.CALLOUT_TEXT }}\n </p>\n </div>\n\n <app-md-formatter [content]=\"textToJSONMarkdown()\"></app-md-formatter>\n</div>\n", styles: [":host ::ng-deep remark-prism.io-assist-code-theme>pre{height:30vh;max-height:620px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: AppIconComponent, selector: "app-icon", inputs: ["variant", "size", "iconFill", "disabledIconFill", "hoverIconFill", "isDisabled", "isWrapped", "title", "customIcon", "backgroundColor", "hoverBackgroundShape", "hoverBackgroundColor", "isHoveredExternal", "tabIndex"], outputs: ["onClick"] }, { kind: "component", type: AppMdFormatterComponent, selector: "app-md-formatter", inputs: ["content"] }] });
|
|
4000
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.22", type: WorkingContextPanelComponent, isStandalone: true, selector: "working-context-panel", providers: [WorkingContextFacade, SubscriptionCleanupService], ngImport: i0, template: "<div data-testid=\"working-context-panel\" class=\"flex flex-1 flex-col p-4 gap-4\">\n <div\n class=\"flex items-center gap-2 mb-4 p-4 bg-app-background-secondary border border-border-default rounded\"\n >\n <app-icon\n [variant]=\"APP_ICON_VARIANTS.INFO\"\n [size]=\"APP_ICON_SIZES.M\"\n [iconFill]=\"'--app-accent-color-1'\"\n [isWrapped]=\"false\"\n >\n </app-icon>\n\n <p class=\"text-sm text-proto-text-default\">\n {{ UI_STRINGS.CALLOUT_TEXT }}\n </p>\n </div>\n\n <app-md-formatter [content]=\"textToJSONMarkdown()\"></app-md-formatter>\n</div>\n", styles: [":host ::ng-deep remark-prism.io-assist-code-theme>pre{height:30vh;max-height:620px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: AppIconComponent, selector: "app-icon", inputs: ["variant", "size", "iconFill", "disabledIconFill", "hoverIconFill", "isDisabled", "isWrapped", "title", "customIcon", "backgroundColor", "hoverBackgroundShape", "hoverBackgroundColor", "isHoveredExternal", "tabIndex"], outputs: ["onClick"] }, { kind: "component", type: AppMdFormatterComponent, selector: "app-md-formatter", inputs: ["content"] }] });
|
|
4001
4001
|
}
|
|
4002
4002
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.22", ngImport: i0, type: WorkingContextPanelComponent, decorators: [{
|
|
4003
4003
|
type: Component,
|
|
4004
|
-
args: [{ selector: 'working-context-panel', imports: [...MODULES$l, ...COMPONENTS$l], providers: [WorkingContextFacade, SubscriptionCleanupService], template: "<div class=\"flex flex-1 flex-col p-4 gap-4\">\n <div\n class=\"flex items-center gap-2 mb-4 p-4 bg-app-background-secondary border border-border-default rounded\"\n >\n <app-icon\n [variant]=\"APP_ICON_VARIANTS.INFO\"\n [size]=\"APP_ICON_SIZES.M\"\n [iconFill]=\"'--app-accent-color-1'\"\n [isWrapped]=\"false\"\n >\n </app-icon>\n\n <p class=\"text-sm text-proto-text-default\">\n {{ UI_STRINGS.CALLOUT_TEXT }}\n </p>\n </div>\n\n <app-md-formatter [content]=\"textToJSONMarkdown()\"></app-md-formatter>\n</div>\n", styles: [":host ::ng-deep remark-prism.io-assist-code-theme>pre{height:30vh;max-height:620px}\n"] }]
|
|
4004
|
+
args: [{ selector: 'working-context-panel', imports: [...MODULES$l, ...COMPONENTS$l], providers: [WorkingContextFacade, SubscriptionCleanupService], template: "<div data-testid=\"working-context-panel\" class=\"flex flex-1 flex-col p-4 gap-4\">\n <div\n class=\"flex items-center gap-2 mb-4 p-4 bg-app-background-secondary border border-border-default rounded\"\n >\n <app-icon\n [variant]=\"APP_ICON_VARIANTS.INFO\"\n [size]=\"APP_ICON_SIZES.M\"\n [iconFill]=\"'--app-accent-color-1'\"\n [isWrapped]=\"false\"\n >\n </app-icon>\n\n <p class=\"text-sm text-proto-text-default\">\n {{ UI_STRINGS.CALLOUT_TEXT }}\n </p>\n </div>\n\n <app-md-formatter [content]=\"textToJSONMarkdown()\"></app-md-formatter>\n</div>\n", styles: [":host ::ng-deep remark-prism.io-assist-code-theme>pre{height:30vh;max-height:620px}\n"] }]
|
|
4005
4005
|
}] });
|
|
4006
4006
|
|
|
4007
4007
|
const MODULES$k = [CommonModule];
|
|
@@ -4051,13 +4051,13 @@ class HeaderComponent {
|
|
|
4051
4051
|
});
|
|
4052
4052
|
}
|
|
4053
4053
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.22", ngImport: i0, type: HeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
4054
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.22", type: HeaderComponent, isStandalone: true, selector: "header", host: { styleAttribute: "display: flex; width: 100%;" }, providers: [WorkingContextFacade], ngImport: i0, template: "@let showHomeButton = isLoadingMessages() || messageLength() > 0;\n@let showThreadPanelToggleButton = !isThreadHistoryDisplayed();\n@let hasNotification = hasAnyCompletionNotification();\n\n<div\n class=\"header\"\n [ngClass]=\"{\n 'flex flex-1 justify-start px-4 py-2 gap-4 self-stretch': true,\n }\"\n>\n @if (showThreadPanelToggleButton || showHomeButton) {\n <div\n [ngClass]=\"{\n flex: true,\n }\"\n >\n @if (showThreadPanelToggleButton) {\n <div class=\"relative\">\n <app-icon\n [variant]=\"APP_ICON_VARIANTS.THREAD_HISTORY\"\n (click)=\"displayThreadHistory()\"\n ></app-icon>\n\n @if (hasNotification) {\n <span\n class=\"absolute -top-1 -right-1 w-2.5 h-2.5 rounded-full bg-orange-500\"\n title=\"New responses available\"\n ></span>\n }\n </div>\n }\n\n @if (showHomeButton) {\n <app-icon [variant]=\"APP_ICON_VARIANTS.HOME\" (click)=\"displayHome()\"></app-icon>\n }\n </div>\n }\n\n <!-- Context Area -->\n @if (isWorkingContextEnabled()) {\n <button\n [ngClass]=\"{\n 'flex justify-center items-center px-2 py-1 border-[1px] rounded-[4px] text-text-default cursor-pointer': true,\n 'hover:text-text-states-hover hover:text-states-hover': true,\n 'font-weight-400 text-xs leading-[100%]': true,\n }\"\n [animationEffect]=\"AnimationType.HOVER_MOUSE_FOLLOW\"\n (click)=\"handleWorkingContextPanelOpen()\"\n >\n {{ UI_STRINGS.WORKING_CONTEXT_PANEL_COMPONENT.VIEW_WORKING_CONTEXT_BUTTON }}\n </button>\n }\n</div>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: AppIconComponent, selector: "app-icon", inputs: ["variant", "size", "iconFill", "disabledIconFill", "hoverIconFill", "isDisabled", "isWrapped", "title", "customIcon", "backgroundColor", "hoverBackgroundShape", "hoverBackgroundColor", "isHoveredExternal", "tabIndex"], outputs: ["onClick"] }, { kind: "directive", type: AnimationEffectDirective, selector: "[animationEffect]", inputs: ["animationEffect"], outputs: ["animationStarted", "animationCompleted"] }] });
|
|
4054
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.22", type: HeaderComponent, isStandalone: true, selector: "header", host: { styleAttribute: "display: flex; width: 100%;" }, providers: [WorkingContextFacade], ngImport: i0, template: "@let showHomeButton = isLoadingMessages() || messageLength() > 0;\n@let showThreadPanelToggleButton = !isThreadHistoryDisplayed();\n@let hasNotification = hasAnyCompletionNotification();\n\n<div\n class=\"header\"\n [ngClass]=\"{\n 'flex flex-1 justify-start px-4 py-2 gap-4 self-stretch': true,\n }\"\n>\n @if (showThreadPanelToggleButton || showHomeButton) {\n <div\n [ngClass]=\"{\n flex: true,\n }\"\n >\n @if (showThreadPanelToggleButton) {\n <div class=\"relative\">\n <app-icon\n data-testid=\"thread-toggle-button\"\n [variant]=\"APP_ICON_VARIANTS.THREAD_HISTORY\"\n (click)=\"displayThreadHistory()\"\n ></app-icon>\n\n @if (hasNotification) {\n <span\n class=\"absolute -top-1 -right-1 w-2.5 h-2.5 rounded-full bg-orange-500\"\n title=\"New responses available\"\n ></span>\n }\n </div>\n }\n\n @if (showHomeButton) {\n <app-icon data-testid=\"home-button\" [variant]=\"APP_ICON_VARIANTS.HOME\" (click)=\"displayHome()\"></app-icon>\n }\n </div>\n }\n\n <!-- Context Area -->\n @if (isWorkingContextEnabled()) {\n <button\n data-testid=\"working-context-button\"\n [ngClass]=\"{\n 'flex justify-center items-center px-2 py-1 border-[1px] rounded-[4px] text-text-default cursor-pointer': true,\n 'hover:text-text-states-hover hover:text-states-hover': true,\n 'font-weight-400 text-xs leading-[100%]': true,\n }\"\n [animationEffect]=\"AnimationType.HOVER_MOUSE_FOLLOW\"\n (click)=\"handleWorkingContextPanelOpen()\"\n >\n {{ UI_STRINGS.WORKING_CONTEXT_PANEL_COMPONENT.VIEW_WORKING_CONTEXT_BUTTON }}\n </button>\n }\n</div>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: AppIconComponent, selector: "app-icon", inputs: ["variant", "size", "iconFill", "disabledIconFill", "hoverIconFill", "isDisabled", "isWrapped", "title", "customIcon", "backgroundColor", "hoverBackgroundShape", "hoverBackgroundColor", "isHoveredExternal", "tabIndex"], outputs: ["onClick"] }, { kind: "directive", type: AnimationEffectDirective, selector: "[animationEffect]", inputs: ["animationEffect"], outputs: ["animationStarted", "animationCompleted"] }] });
|
|
4055
4055
|
}
|
|
4056
4056
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.22", ngImport: i0, type: HeaderComponent, decorators: [{
|
|
4057
4057
|
type: Component,
|
|
4058
4058
|
args: [{ selector: 'header', imports: [...MODULES$k, ...COMPONENTS$k, ...DIRECTIVES$2], providers: [WorkingContextFacade], host: {
|
|
4059
4059
|
style: 'display: flex; width: 100%;',
|
|
4060
|
-
}, template: "@let showHomeButton = isLoadingMessages() || messageLength() > 0;\n@let showThreadPanelToggleButton = !isThreadHistoryDisplayed();\n@let hasNotification = hasAnyCompletionNotification();\n\n<div\n class=\"header\"\n [ngClass]=\"{\n 'flex flex-1 justify-start px-4 py-2 gap-4 self-stretch': true,\n }\"\n>\n @if (showThreadPanelToggleButton || showHomeButton) {\n <div\n [ngClass]=\"{\n flex: true,\n }\"\n >\n @if (showThreadPanelToggleButton) {\n <div class=\"relative\">\n <app-icon\n [variant]=\"APP_ICON_VARIANTS.THREAD_HISTORY\"\n (click)=\"displayThreadHistory()\"\n ></app-icon>\n\n @if (hasNotification) {\n <span\n class=\"absolute -top-1 -right-1 w-2.5 h-2.5 rounded-full bg-orange-500\"\n title=\"New responses available\"\n ></span>\n }\n </div>\n }\n\n @if (showHomeButton) {\n <app-icon [variant]=\"APP_ICON_VARIANTS.HOME\" (click)=\"displayHome()\"></app-icon>\n }\n </div>\n }\n\n <!-- Context Area -->\n @if (isWorkingContextEnabled()) {\n <button\n [ngClass]=\"{\n 'flex justify-center items-center px-2 py-1 border-[1px] rounded-[4px] text-text-default cursor-pointer': true,\n 'hover:text-text-states-hover hover:text-states-hover': true,\n 'font-weight-400 text-xs leading-[100%]': true,\n }\"\n [animationEffect]=\"AnimationType.HOVER_MOUSE_FOLLOW\"\n (click)=\"handleWorkingContextPanelOpen()\"\n >\n {{ UI_STRINGS.WORKING_CONTEXT_PANEL_COMPONENT.VIEW_WORKING_CONTEXT_BUTTON }}\n </button>\n }\n</div>" }]
|
|
4060
|
+
}, template: "@let showHomeButton = isLoadingMessages() || messageLength() > 0;\n@let showThreadPanelToggleButton = !isThreadHistoryDisplayed();\n@let hasNotification = hasAnyCompletionNotification();\n\n<div\n class=\"header\"\n [ngClass]=\"{\n 'flex flex-1 justify-start px-4 py-2 gap-4 self-stretch': true,\n }\"\n>\n @if (showThreadPanelToggleButton || showHomeButton) {\n <div\n [ngClass]=\"{\n flex: true,\n }\"\n >\n @if (showThreadPanelToggleButton) {\n <div class=\"relative\">\n <app-icon\n data-testid=\"thread-toggle-button\"\n [variant]=\"APP_ICON_VARIANTS.THREAD_HISTORY\"\n (click)=\"displayThreadHistory()\"\n ></app-icon>\n\n @if (hasNotification) {\n <span\n class=\"absolute -top-1 -right-1 w-2.5 h-2.5 rounded-full bg-orange-500\"\n title=\"New responses available\"\n ></span>\n }\n </div>\n }\n\n @if (showHomeButton) {\n <app-icon data-testid=\"home-button\" [variant]=\"APP_ICON_VARIANTS.HOME\" (click)=\"displayHome()\"></app-icon>\n }\n </div>\n }\n\n <!-- Context Area -->\n @if (isWorkingContextEnabled()) {\n <button\n data-testid=\"working-context-button\"\n [ngClass]=\"{\n 'flex justify-center items-center px-2 py-1 border-[1px] rounded-[4px] text-text-default cursor-pointer': true,\n 'hover:text-text-states-hover hover:text-states-hover': true,\n 'font-weight-400 text-xs leading-[100%]': true,\n }\"\n [animationEffect]=\"AnimationType.HOVER_MOUSE_FOLLOW\"\n (click)=\"handleWorkingContextPanelOpen()\"\n >\n {{ UI_STRINGS.WORKING_CONTEXT_PANEL_COMPONENT.VIEW_WORKING_CONTEXT_BUTTON }}\n </button>\n }\n</div>" }]
|
|
4061
4061
|
}] });
|
|
4062
4062
|
|
|
4063
4063
|
var INPUT_TYPES_ENUM;
|
|
@@ -4164,7 +4164,7 @@ class PromptListItemComponent {
|
|
|
4164
4164
|
this._promptFacade.dispatchToggleFavoritePrompt(this.prompt().name);
|
|
4165
4165
|
}
|
|
4166
4166
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.22", ngImport: i0, type: PromptListItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
4167
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.3.22", type: PromptListItemComponent, isStandalone: true, selector: "prompt-list-item", inputs: { prompt: { classPropertyName: "prompt", publicName: "prompt", isSignal: true, isRequired: true, transformFunction: null }, isDisplayedInFavoriteList: { classPropertyName: "isDisplayedInFavoriteList", publicName: "isDisplayedInFavoriteList", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "mouseenter": "handleMouseEnter()", "mouseleave": "handleMouseLeave()" }, properties: { "class": "hostClasses()" } }, ngImport: i0, template: "@let promptName = prompt().name;\n<!-- @let isAnyOperationPending = isUpdatePending() || isDeletePending(); -->\n<!-- @let favoriteListItemMode = isDisplayedInFavoriteList(); -->\n@let isFavorite = isCurrentPromptInFavorites();\n\n<div\n class=\"flex flex-1 justify-between items-center p-2 gap-2 cursor-pointer min-w-0\"\n tabindex=\"0\"\n [ngClass]=\"{\n 'hover:bg-app-background-secondary rounded-md': !isDisplayedInFavoriteList(),\n 'h-[48px] hover:shadow-[0_0.5px_0.5px_0.5px_rgba(0,0,0,0.15)] rounded-2xl':\n isDisplayedInFavoriteList(),\n }\"\n (click)=\"handlePromptSelect()\"\n (keyup)=\"handlePromptSelect()\"\n>\n <!-- Prompt Icon -->\n <app-icon\n class=\"shrink-0\"\n [variant]=\"APP_ICON_VARIANTS.PROMPT_PANEL\"\n [customIcon]=\"customIcon()\"\n [isHoveredExternal]=\"isHostHoveredSignal()\"\n ></app-icon>\n\n <!-- Prompt Title -->\n <span\n class=\"flex-1 min-w-0 overflow-hidden text-ellipsis whitespace-nowrap text-xs\"\n [ngClass]=\"{\n 'text-text-default': true,\n 'text-text-states-hover': isHostHoveredSignal(),\n }\"\n >{{ promptName }}</span\n >\n\n <app-icon\n class=\"p-2 ps-1 shrink-0\"\n [variant]=\"isFavorite ? APP_ICON_VARIANTS.STAR_FILLED : APP_ICON_VARIANTS.STAR_OUTLINE\"\n [isHoveredExternal]=\"isHostHoveredSignal()\"\n (click)=\"handlePromptToggleFavorite($event)\"\n ></app-icon>\n</div>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: AppIconComponent, selector: "app-icon", inputs: ["variant", "size", "iconFill", "disabledIconFill", "hoverIconFill", "isDisabled", "isWrapped", "title", "customIcon", "backgroundColor", "hoverBackgroundShape", "hoverBackgroundColor", "isHoveredExternal", "tabIndex"], outputs: ["onClick"] }] });
|
|
4167
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.3.22", type: PromptListItemComponent, isStandalone: true, selector: "prompt-list-item", inputs: { prompt: { classPropertyName: "prompt", publicName: "prompt", isSignal: true, isRequired: true, transformFunction: null }, isDisplayedInFavoriteList: { classPropertyName: "isDisplayedInFavoriteList", publicName: "isDisplayedInFavoriteList", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "mouseenter": "handleMouseEnter()", "mouseleave": "handleMouseLeave()" }, properties: { "class": "hostClasses()" } }, ngImport: i0, template: "@let promptName = prompt().name;\n<!-- @let isAnyOperationPending = isUpdatePending() || isDeletePending(); -->\n<!-- @let favoriteListItemMode = isDisplayedInFavoriteList(); -->\n@let isFavorite = isCurrentPromptInFavorites();\n\n<div\n class=\"flex flex-1 justify-between items-center p-2 gap-2 cursor-pointer min-w-0\"\n data-testid=\"prompt-list-item\"\n tabindex=\"0\"\n [ngClass]=\"{\n 'hover:bg-app-background-secondary rounded-md': !isDisplayedInFavoriteList(),\n 'h-[48px] hover:shadow-[0_0.5px_0.5px_0.5px_rgba(0,0,0,0.15)] rounded-2xl':\n isDisplayedInFavoriteList(),\n }\"\n (click)=\"handlePromptSelect()\"\n (keyup)=\"handlePromptSelect()\"\n>\n <!-- Prompt Icon -->\n <app-icon\n class=\"shrink-0\"\n [variant]=\"APP_ICON_VARIANTS.PROMPT_PANEL\"\n [customIcon]=\"customIcon()\"\n [isHoveredExternal]=\"isHostHoveredSignal()\"\n ></app-icon>\n\n <!-- Prompt Title -->\n <span\n class=\"flex-1 min-w-0 overflow-hidden text-ellipsis whitespace-nowrap text-xs\"\n [ngClass]=\"{\n 'text-text-default': true,\n 'text-text-states-hover': isHostHoveredSignal(),\n }\"\n >{{ promptName }}</span\n >\n\n <app-icon\n data-testid=\"prompt-favorite-button\"\n class=\"p-2 ps-1 shrink-0\"\n [variant]=\"isFavorite ? APP_ICON_VARIANTS.STAR_FILLED : APP_ICON_VARIANTS.STAR_OUTLINE\"\n [isHoveredExternal]=\"isHostHoveredSignal()\"\n (click)=\"handlePromptToggleFavorite($event)\"\n ></app-icon>\n</div>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: AppIconComponent, selector: "app-icon", inputs: ["variant", "size", "iconFill", "disabledIconFill", "hoverIconFill", "isDisabled", "isWrapped", "title", "customIcon", "backgroundColor", "hoverBackgroundShape", "hoverBackgroundColor", "isHoveredExternal", "tabIndex"], outputs: ["onClick"] }] });
|
|
4168
4168
|
}
|
|
4169
4169
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.22", ngImport: i0, type: PromptListItemComponent, decorators: [{
|
|
4170
4170
|
type: Component,
|
|
@@ -4172,7 +4172,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.22", ngImpo
|
|
|
4172
4172
|
'[class]': 'hostClasses()',
|
|
4173
4173
|
'(mouseenter)': 'handleMouseEnter()',
|
|
4174
4174
|
'(mouseleave)': 'handleMouseLeave()',
|
|
4175
|
-
}, template: "@let promptName = prompt().name;\n<!-- @let isAnyOperationPending = isUpdatePending() || isDeletePending(); -->\n<!-- @let favoriteListItemMode = isDisplayedInFavoriteList(); -->\n@let isFavorite = isCurrentPromptInFavorites();\n\n<div\n class=\"flex flex-1 justify-between items-center p-2 gap-2 cursor-pointer min-w-0\"\n tabindex=\"0\"\n [ngClass]=\"{\n 'hover:bg-app-background-secondary rounded-md': !isDisplayedInFavoriteList(),\n 'h-[48px] hover:shadow-[0_0.5px_0.5px_0.5px_rgba(0,0,0,0.15)] rounded-2xl':\n isDisplayedInFavoriteList(),\n }\"\n (click)=\"handlePromptSelect()\"\n (keyup)=\"handlePromptSelect()\"\n>\n <!-- Prompt Icon -->\n <app-icon\n class=\"shrink-0\"\n [variant]=\"APP_ICON_VARIANTS.PROMPT_PANEL\"\n [customIcon]=\"customIcon()\"\n [isHoveredExternal]=\"isHostHoveredSignal()\"\n ></app-icon>\n\n <!-- Prompt Title -->\n <span\n class=\"flex-1 min-w-0 overflow-hidden text-ellipsis whitespace-nowrap text-xs\"\n [ngClass]=\"{\n 'text-text-default': true,\n 'text-text-states-hover': isHostHoveredSignal(),\n }\"\n >{{ promptName }}</span\n >\n\n <app-icon\n class=\"p-2 ps-1 shrink-0\"\n [variant]=\"isFavorite ? APP_ICON_VARIANTS.STAR_FILLED : APP_ICON_VARIANTS.STAR_OUTLINE\"\n [isHoveredExternal]=\"isHostHoveredSignal()\"\n (click)=\"handlePromptToggleFavorite($event)\"\n ></app-icon>\n</div>" }]
|
|
4175
|
+
}, template: "@let promptName = prompt().name;\n<!-- @let isAnyOperationPending = isUpdatePending() || isDeletePending(); -->\n<!-- @let favoriteListItemMode = isDisplayedInFavoriteList(); -->\n@let isFavorite = isCurrentPromptInFavorites();\n\n<div\n class=\"flex flex-1 justify-between items-center p-2 gap-2 cursor-pointer min-w-0\"\n data-testid=\"prompt-list-item\"\n tabindex=\"0\"\n [ngClass]=\"{\n 'hover:bg-app-background-secondary rounded-md': !isDisplayedInFavoriteList(),\n 'h-[48px] hover:shadow-[0_0.5px_0.5px_0.5px_rgba(0,0,0,0.15)] rounded-2xl':\n isDisplayedInFavoriteList(),\n }\"\n (click)=\"handlePromptSelect()\"\n (keyup)=\"handlePromptSelect()\"\n>\n <!-- Prompt Icon -->\n <app-icon\n class=\"shrink-0\"\n [variant]=\"APP_ICON_VARIANTS.PROMPT_PANEL\"\n [customIcon]=\"customIcon()\"\n [isHoveredExternal]=\"isHostHoveredSignal()\"\n ></app-icon>\n\n <!-- Prompt Title -->\n <span\n class=\"flex-1 min-w-0 overflow-hidden text-ellipsis whitespace-nowrap text-xs\"\n [ngClass]=\"{\n 'text-text-default': true,\n 'text-text-states-hover': isHostHoveredSignal(),\n }\"\n >{{ promptName }}</span\n >\n\n <app-icon\n data-testid=\"prompt-favorite-button\"\n class=\"p-2 ps-1 shrink-0\"\n [variant]=\"isFavorite ? APP_ICON_VARIANTS.STAR_FILLED : APP_ICON_VARIANTS.STAR_OUTLINE\"\n [isHoveredExternal]=\"isHostHoveredSignal()\"\n (click)=\"handlePromptToggleFavorite($event)\"\n ></app-icon>\n</div>" }]
|
|
4176
4176
|
}], propDecorators: { prompt: [{ type: i0.Input, args: [{ isSignal: true, alias: "prompt", required: true }] }], isDisplayedInFavoriteList: [{ type: i0.Input, args: [{ isSignal: true, alias: "isDisplayedInFavoriteList", required: false }] }] } });
|
|
4177
4177
|
|
|
4178
4178
|
const MODULES$h = [CommonModule];
|
|
@@ -4236,11 +4236,11 @@ class PromptListComponent {
|
|
|
4236
4236
|
window.open('https://docs-ai.interop.io/', '_blank', 'noopener,noreferrer');
|
|
4237
4237
|
}
|
|
4238
4238
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.22", ngImport: i0, type: PromptListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
4239
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.22", type: PromptListComponent, isStandalone: true, selector: "prompt-list", inputs: { showFavoriteOnly: { classPropertyName: "showFavoriteOnly", publicName: "showFavoriteOnly", isSignal: true, isRequired: false, transformFunction: null } }, providers: [PromptFacade], ngImport: i0, template: "@let noAvailablePrompts = promptsToDisplay().length === 0;\n@let hasPrompts = promptsToDisplay().length > 0;\n@let isFavoriteOnlyList = showFavoriteOnly();\n@let shouldRenderInfoSection = noAvailablePrompts;\n@let hasCategories = promptGroups().length > 0;\n@let hasAnyPromptsInSystem = hasAnyPrompts();\n\n@if (!isFavoriteOnlyList && hasAnyPromptsInSystem) {\n <app-input\n [ngClass]=\"{\n 'sticky top-0': true,\n }\"\n [placeholder]=\"UI_STRINGS.INPUT_TOOLTIP\"\n [showLeadingIcon]=\"true\"\n [showTrailingIcon]=\"true\"\n (onValueChange)=\"searchTerm.set($event)\"\n />\n}\n\n<div\n class=\"prompt-list\"\
|
|
4239
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.22", type: PromptListComponent, isStandalone: true, selector: "prompt-list", inputs: { showFavoriteOnly: { classPropertyName: "showFavoriteOnly", publicName: "showFavoriteOnly", isSignal: true, isRequired: false, transformFunction: null } }, providers: [PromptFacade], ngImport: i0, template: "@let noAvailablePrompts = promptsToDisplay().length === 0;\n@let hasPrompts = promptsToDisplay().length > 0;\n@let isFavoriteOnlyList = showFavoriteOnly();\n@let shouldRenderInfoSection = noAvailablePrompts;\n@let hasCategories = promptGroups().length > 0;\n@let hasAnyPromptsInSystem = hasAnyPrompts();\n\n@if (!isFavoriteOnlyList && hasAnyPromptsInSystem) {\n <app-input\n data-testid=\"prompt-filter-input\"\n [ngClass]=\"{\n 'sticky top-0': true,\n }\"\n [placeholder]=\"UI_STRINGS.INPUT_TOOLTIP\"\n [showLeadingIcon]=\"true\"\n [showTrailingIcon]=\"true\"\n (onValueChange)=\"searchTerm.set($event)\"\n />\n}\n\n<div\n class=\"prompt-list\" data-testid=\"prompt-panel\" [ngClass]=\"{\n 'flex flex-col w-full h-full gap-[10px] py-2 pt-2 min-h-0': true,\n }\"\n>\n @if (isFavoriteOnlyList) {\n <div\n class=\"prompt-list__header\"\n [ngClass]=\"{\n 'flex items-center p-2 w-full shrink-0': true,\n }\"\n >\n <span\n [ngClass]=\"{\n 'text-xs text-text-default tracking-wide': true,\n }\"\n ><p>{{ UI_STRINGS.FAVORITE_PROMPTS }}</p></span\n >\n </div>\n }\n\n @if (shouldRenderInfoSection) {\n <div\n class=\"prompt-list__info\"\n [ngClass]=\"{\n 'flex justify-center items-center h-16': true,\n }\"\n >\n @if (noAvailablePrompts && !isFavoriteOnlyList && !hasAnyPromptsInSystem) {\n <div\n [ngClass]=\"{\n 'flex flex-col items-center gap-2 text-center px-4': true,\n }\"\n >\n <span\n [ngClass]=\"{\n 'text-proto-text-default': true,\n }\"\n >{{ UI_STRINGS.NO_PROMPTS_CONFIGURED }}</span\n >\n <!-- TODO: Add link to documentation -->\n <button\n type=\"button\"\n [ngClass]=\"{\n 'text-xs text-blue-500 hover:text-blue-600 underline cursor-pointer': true,\n }\"\n (click)=\"onDocsLinkClick()\"\n >\n {{ UI_STRINGS.NO_PROMPTS_SEE_MORE }}\n </button>\n </div>\n }\n\n @if (noAvailablePrompts && !isFavoriteOnlyList && hasAnyPromptsInSystem) {\n <span\n [ngClass]=\"{\n 'text-proto-text-default': true,\n }\"\n >{{ UI_STRINGS.NO_PROMPTS }}</span\n >\n }\n\n @if (noAvailablePrompts && isFavoriteOnlyList) {\n <span\n [ngClass]=\"{\n 'text-proto-text-default': true,\n }\"\n >{{ UI_STRINGS.NO_FAVORITE_PROMPTS }}</span\n >\n }\n </div>\n }\n\n <div\n class=\"prompt-list__items\"\n [ngClass]=\"{\n 'flex flex-col gap-3 w-full min-h-0 ': true,\n 'md:flex-row md:flex-wrap md:justify-center gap-3': isFavoriteOnlyList,\n 'overflow-y-auto overflow-x-hidden custom-scrollbar custom-scrollbar-no-gutter':\n !isFavoriteOnlyList,\n }\"\n >\n @if (hasPrompts) {\n <!-- Render with categories when not in favorite mode and has category groups -->\n @if (!isFavoriteOnlyList && hasCategories) {\n @for (group of promptGroups(); track group.category) {\n <!-- Category header -->\n <div\n class=\"prompt-category-header\"\n [ngClass]=\"{\n 'flex items-center px-2 py-1 mb-1': true,\n }\"\n >\n <span\n [ngClass]=\"{\n 'text-[10px] font-normal text-text-default leading-[13px] tracking-[0.1px]': true,\n }\"\n >{{ group.category }}</span\n >\n </div>\n\n <!-- Prompts in this category -->\n @for (prompt of group.prompts; track prompt.name) {\n <prompt-list-item\n [prompt]=\"prompt\"\n [isDisplayedInFavoriteList]=\"false\"\n ></prompt-list-item>\n }\n }\n }\n\n <!-- Render without categories for favorite mode -->\n @if (isFavoriteOnlyList) {\n @for (prompt of promptsToDisplay(); track prompt.name) {\n <prompt-list-item\n [prompt]=\"prompt\"\n [isDisplayedInFavoriteList]=\"true\"\n ></prompt-list-item>\n }\n }\n }\n </div>\n</div>\n", dependencies: [{ kind: "component", type: PromptListItemComponent, selector: "prompt-list-item", inputs: ["prompt", "isDisplayedInFavoriteList"] }, { kind: "component", type: AppInputComponent, selector: "app-input", inputs: ["placeholder", "type", "label", "isLabelSrOnly", "disabled", "error", "showLeadingIcon", "leadingIconVariant", "showTrailingIcon", "trailingIconVariant", "iconsSize"], outputs: ["onValueChange"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
|
|
4240
4240
|
}
|
|
4241
4241
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.22", ngImport: i0, type: PromptListComponent, decorators: [{
|
|
4242
4242
|
type: Component,
|
|
4243
|
-
args: [{ selector: 'prompt-list', imports: [...COMPONENTS$h, ...MODULES$h], providers: [PromptFacade], template: "@let noAvailablePrompts = promptsToDisplay().length === 0;\n@let hasPrompts = promptsToDisplay().length > 0;\n@let isFavoriteOnlyList = showFavoriteOnly();\n@let shouldRenderInfoSection = noAvailablePrompts;\n@let hasCategories = promptGroups().length > 0;\n@let hasAnyPromptsInSystem = hasAnyPrompts();\n\n@if (!isFavoriteOnlyList && hasAnyPromptsInSystem) {\n <app-input\n [ngClass]=\"{\n 'sticky top-0': true,\n }\"\n [placeholder]=\"UI_STRINGS.INPUT_TOOLTIP\"\n [showLeadingIcon]=\"true\"\n [showTrailingIcon]=\"true\"\n (onValueChange)=\"searchTerm.set($event)\"\n />\n}\n\n<div\n class=\"prompt-list\"\
|
|
4243
|
+
args: [{ selector: 'prompt-list', imports: [...COMPONENTS$h, ...MODULES$h], providers: [PromptFacade], template: "@let noAvailablePrompts = promptsToDisplay().length === 0;\n@let hasPrompts = promptsToDisplay().length > 0;\n@let isFavoriteOnlyList = showFavoriteOnly();\n@let shouldRenderInfoSection = noAvailablePrompts;\n@let hasCategories = promptGroups().length > 0;\n@let hasAnyPromptsInSystem = hasAnyPrompts();\n\n@if (!isFavoriteOnlyList && hasAnyPromptsInSystem) {\n <app-input\n data-testid=\"prompt-filter-input\"\n [ngClass]=\"{\n 'sticky top-0': true,\n }\"\n [placeholder]=\"UI_STRINGS.INPUT_TOOLTIP\"\n [showLeadingIcon]=\"true\"\n [showTrailingIcon]=\"true\"\n (onValueChange)=\"searchTerm.set($event)\"\n />\n}\n\n<div\n class=\"prompt-list\" data-testid=\"prompt-panel\" [ngClass]=\"{\n 'flex flex-col w-full h-full gap-[10px] py-2 pt-2 min-h-0': true,\n }\"\n>\n @if (isFavoriteOnlyList) {\n <div\n class=\"prompt-list__header\"\n [ngClass]=\"{\n 'flex items-center p-2 w-full shrink-0': true,\n }\"\n >\n <span\n [ngClass]=\"{\n 'text-xs text-text-default tracking-wide': true,\n }\"\n ><p>{{ UI_STRINGS.FAVORITE_PROMPTS }}</p></span\n >\n </div>\n }\n\n @if (shouldRenderInfoSection) {\n <div\n class=\"prompt-list__info\"\n [ngClass]=\"{\n 'flex justify-center items-center h-16': true,\n }\"\n >\n @if (noAvailablePrompts && !isFavoriteOnlyList && !hasAnyPromptsInSystem) {\n <div\n [ngClass]=\"{\n 'flex flex-col items-center gap-2 text-center px-4': true,\n }\"\n >\n <span\n [ngClass]=\"{\n 'text-proto-text-default': true,\n }\"\n >{{ UI_STRINGS.NO_PROMPTS_CONFIGURED }}</span\n >\n <!-- TODO: Add link to documentation -->\n <button\n type=\"button\"\n [ngClass]=\"{\n 'text-xs text-blue-500 hover:text-blue-600 underline cursor-pointer': true,\n }\"\n (click)=\"onDocsLinkClick()\"\n >\n {{ UI_STRINGS.NO_PROMPTS_SEE_MORE }}\n </button>\n </div>\n }\n\n @if (noAvailablePrompts && !isFavoriteOnlyList && hasAnyPromptsInSystem) {\n <span\n [ngClass]=\"{\n 'text-proto-text-default': true,\n }\"\n >{{ UI_STRINGS.NO_PROMPTS }}</span\n >\n }\n\n @if (noAvailablePrompts && isFavoriteOnlyList) {\n <span\n [ngClass]=\"{\n 'text-proto-text-default': true,\n }\"\n >{{ UI_STRINGS.NO_FAVORITE_PROMPTS }}</span\n >\n }\n </div>\n }\n\n <div\n class=\"prompt-list__items\"\n [ngClass]=\"{\n 'flex flex-col gap-3 w-full min-h-0 ': true,\n 'md:flex-row md:flex-wrap md:justify-center gap-3': isFavoriteOnlyList,\n 'overflow-y-auto overflow-x-hidden custom-scrollbar custom-scrollbar-no-gutter':\n !isFavoriteOnlyList,\n }\"\n >\n @if (hasPrompts) {\n <!-- Render with categories when not in favorite mode and has category groups -->\n @if (!isFavoriteOnlyList && hasCategories) {\n @for (group of promptGroups(); track group.category) {\n <!-- Category header -->\n <div\n class=\"prompt-category-header\"\n [ngClass]=\"{\n 'flex items-center px-2 py-1 mb-1': true,\n }\"\n >\n <span\n [ngClass]=\"{\n 'text-[10px] font-normal text-text-default leading-[13px] tracking-[0.1px]': true,\n }\"\n >{{ group.category }}</span\n >\n </div>\n\n <!-- Prompts in this category -->\n @for (prompt of group.prompts; track prompt.name) {\n <prompt-list-item\n [prompt]=\"prompt\"\n [isDisplayedInFavoriteList]=\"false\"\n ></prompt-list-item>\n }\n }\n }\n\n <!-- Render without categories for favorite mode -->\n @if (isFavoriteOnlyList) {\n @for (prompt of promptsToDisplay(); track prompt.name) {\n <prompt-list-item\n [prompt]=\"prompt\"\n [isDisplayedInFavoriteList]=\"true\"\n ></prompt-list-item>\n }\n }\n }\n </div>\n</div>\n" }]
|
|
4244
4244
|
}], propDecorators: { showFavoriteOnly: [{ type: i0.Input, args: [{ isSignal: true, alias: "showFavoriteOnly", required: false }] }] } });
|
|
4245
4245
|
|
|
4246
4246
|
var TOOL_ACTIONS;
|
|
@@ -4560,14 +4560,14 @@ class ToolListItemComponent {
|
|
|
4560
4560
|
this.isHovered.set(false);
|
|
4561
4561
|
}
|
|
4562
4562
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.22", ngImport: i0, type: ToolListItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
4563
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.3.22", type: ToolListItemComponent, isStandalone: true, selector: "tool-list-item", inputs: { tool: { classPropertyName: "tool", publicName: "tool", isSignal: true, isRequired: true, transformFunction: null } }, host: { listeners: { "mouseenter": "handleMouseEnter()", "mouseleave": "handleMouseLeave()" } }, ngImport: i0, template: "@let toolName = tool().name;\n<div\n class=\"flex justify-between content-center items-center px-2 py-1 gap-2 cursor-pointer rounded-md\"\n tabindex=\"0\"\n [ngClass]=\"{\n 'hover:bg-app-background-secondary': isHovered(),\n }\"\n>\n <app-toggle [isChecked]=\"isEnabled()\" (onToggle)=\"handleToolToggle(tool())\" />\n\n <!-- Tool Title -->\n <span\n class=\"flex flex-1 text-text-default text-xs\"\n [ngClass]=\"{\n 'text-text-states-hover': isHovered(),\n }\"\n >{{ toolName }}</span\n >\n\n <!-- Tool Info -->\n <app-tooltip [tooltipPosition]=\"TOOLTIP_POSITIONS.TOP\">\n <app-icon\n tooltip-trigger\n [variant]=\"APP_ICON_VARIANTS.INFO\"\n [iconFill]=\"!isHovered() ? '--app-text-default' : '--app-text-states-active'\"\n [hoverBackgroundColor]=\"'--app-icon-background-hover'\"\n [size]=\"APP_ICON_SIZES.XS\"\n ></app-icon>\n\n <tool-info tooltip-content [tool]=\"tool()\"></tool-info>\n </app-tooltip>\n</div>\n", dependencies: [{ kind: "component", type: AppToggleComponent, selector: "app-toggle", inputs: ["isChecked", "isDisabled"], outputs: ["onToggle"] }, { kind: "component", type: AppIconComponent, selector: "app-icon", inputs: ["variant", "size", "iconFill", "disabledIconFill", "hoverIconFill", "isDisabled", "isWrapped", "title", "customIcon", "backgroundColor", "hoverBackgroundShape", "hoverBackgroundColor", "isHoveredExternal", "tabIndex"], outputs: ["onClick"] }, { kind: "component", type: AppTooltipComponent, selector: "app-tooltip", inputs: ["tooltipPosition", "triggerOffset"] }, { kind: "component", type: ToolInfoComponent, selector: "tool-info", inputs: ["tool"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
|
|
4563
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.3.22", type: ToolListItemComponent, isStandalone: true, selector: "tool-list-item", inputs: { tool: { classPropertyName: "tool", publicName: "tool", isSignal: true, isRequired: true, transformFunction: null } }, host: { listeners: { "mouseenter": "handleMouseEnter()", "mouseleave": "handleMouseLeave()" } }, ngImport: i0, template: "@let toolName = tool().name;\n<div\n data-testid=\"tool-list-item\"\n class=\"flex justify-between content-center items-center px-2 py-1 gap-2 cursor-pointer rounded-md\"\n tabindex=\"0\"\n [ngClass]=\"{\n 'hover:bg-app-background-secondary': isHovered(),\n }\"\n>\n <app-toggle data-testid=\"tool-toggle\" [isChecked]=\"isEnabled()\" (onToggle)=\"handleToolToggle(tool())\" />\n\n <!-- Tool Title -->\n <span\n class=\"flex flex-1 text-text-default text-xs\"\n [ngClass]=\"{\n 'text-text-states-hover': isHovered(),\n }\"\n >{{ toolName }}</span\n >\n\n <!-- Tool Info -->\n <app-tooltip [tooltipPosition]=\"TOOLTIP_POSITIONS.TOP\">\n <app-icon\n tooltip-trigger\n [variant]=\"APP_ICON_VARIANTS.INFO\"\n [iconFill]=\"!isHovered() ? '--app-text-default' : '--app-text-states-active'\"\n [hoverBackgroundColor]=\"'--app-icon-background-hover'\"\n [size]=\"APP_ICON_SIZES.XS\"\n ></app-icon>\n\n <tool-info tooltip-content [tool]=\"tool()\"></tool-info>\n </app-tooltip>\n</div>\n", dependencies: [{ kind: "component", type: AppToggleComponent, selector: "app-toggle", inputs: ["isChecked", "isDisabled"], outputs: ["onToggle"] }, { kind: "component", type: AppIconComponent, selector: "app-icon", inputs: ["variant", "size", "iconFill", "disabledIconFill", "hoverIconFill", "isDisabled", "isWrapped", "title", "customIcon", "backgroundColor", "hoverBackgroundShape", "hoverBackgroundColor", "isHoveredExternal", "tabIndex"], outputs: ["onClick"] }, { kind: "component", type: AppTooltipComponent, selector: "app-tooltip", inputs: ["tooltipPosition", "triggerOffset"] }, { kind: "component", type: ToolInfoComponent, selector: "tool-info", inputs: ["tool"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
|
|
4564
4564
|
}
|
|
4565
4565
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.22", ngImport: i0, type: ToolListItemComponent, decorators: [{
|
|
4566
4566
|
type: Component,
|
|
4567
4567
|
args: [{ selector: 'tool-list-item', imports: [...COMPONENTS$f, ...MODULES$f], host: {
|
|
4568
4568
|
'(mouseenter)': 'handleMouseEnter()',
|
|
4569
4569
|
'(mouseleave)': 'handleMouseLeave()',
|
|
4570
|
-
}, template: "@let toolName = tool().name;\n<div\n class=\"flex justify-between content-center items-center px-2 py-1 gap-2 cursor-pointer rounded-md\"\n tabindex=\"0\"\n [ngClass]=\"{\n 'hover:bg-app-background-secondary': isHovered(),\n }\"\n>\n <app-toggle [isChecked]=\"isEnabled()\" (onToggle)=\"handleToolToggle(tool())\" />\n\n <!-- Tool Title -->\n <span\n class=\"flex flex-1 text-text-default text-xs\"\n [ngClass]=\"{\n 'text-text-states-hover': isHovered(),\n }\"\n >{{ toolName }}</span\n >\n\n <!-- Tool Info -->\n <app-tooltip [tooltipPosition]=\"TOOLTIP_POSITIONS.TOP\">\n <app-icon\n tooltip-trigger\n [variant]=\"APP_ICON_VARIANTS.INFO\"\n [iconFill]=\"!isHovered() ? '--app-text-default' : '--app-text-states-active'\"\n [hoverBackgroundColor]=\"'--app-icon-background-hover'\"\n [size]=\"APP_ICON_SIZES.XS\"\n ></app-icon>\n\n <tool-info tooltip-content [tool]=\"tool()\"></tool-info>\n </app-tooltip>\n</div>\n" }]
|
|
4570
|
+
}, template: "@let toolName = tool().name;\n<div\n data-testid=\"tool-list-item\"\n class=\"flex justify-between content-center items-center px-2 py-1 gap-2 cursor-pointer rounded-md\"\n tabindex=\"0\"\n [ngClass]=\"{\n 'hover:bg-app-background-secondary': isHovered(),\n }\"\n>\n <app-toggle data-testid=\"tool-toggle\" [isChecked]=\"isEnabled()\" (onToggle)=\"handleToolToggle(tool())\" />\n\n <!-- Tool Title -->\n <span\n class=\"flex flex-1 text-text-default text-xs\"\n [ngClass]=\"{\n 'text-text-states-hover': isHovered(),\n }\"\n >{{ toolName }}</span\n >\n\n <!-- Tool Info -->\n <app-tooltip [tooltipPosition]=\"TOOLTIP_POSITIONS.TOP\">\n <app-icon\n tooltip-trigger\n [variant]=\"APP_ICON_VARIANTS.INFO\"\n [iconFill]=\"!isHovered() ? '--app-text-default' : '--app-text-states-active'\"\n [hoverBackgroundColor]=\"'--app-icon-background-hover'\"\n [size]=\"APP_ICON_SIZES.XS\"\n ></app-icon>\n\n <tool-info tooltip-content [tool]=\"tool()\"></tool-info>\n </app-tooltip>\n</div>\n" }]
|
|
4571
4571
|
}], propDecorators: { tool: [{ type: i0.Input, args: [{ isSignal: true, alias: "tool", required: true }] }] } });
|
|
4572
4572
|
|
|
4573
4573
|
const MODULES$e = [CommonModule];
|
|
@@ -4592,11 +4592,11 @@ class ToolListComponent {
|
|
|
4592
4592
|
window.open('https://docs-ai.interop.io/', '_blank', 'noopener,noreferrer');
|
|
4593
4593
|
}
|
|
4594
4594
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.22", ngImport: i0, type: ToolListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
4595
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.22", type: ToolListComponent, isStandalone: true, selector: "tool-list", providers: [ToolFacade], ngImport: i0, template: "@let isLoadingTools = isLoading();\n@let hasTools = tools().length > 0;\n@let hasFilteredTools = !isLoadingTools && filteredTools().length > 0;\n\n@if (!isLoadingTools && hasTools) {\n <!-- Needs to be displayed above the tool list toggle icon -->\n <app-input\n [ngClass]=\"{\n 'sticky top-0 z-1': true,\n }\"\n [placeholder]=\"UI_STRINGS.INPUT_TOOLTIP\"\n [showLeadingIcon]=\"true\"\n [showTrailingIcon]=\"true\"\n (onValueChange)=\"searchTerm.set($event)\"\n />\n}\n\n<div\n class=\"tool-list\"\
|
|
4595
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.22", type: ToolListComponent, isStandalone: true, selector: "tool-list", providers: [ToolFacade], ngImport: i0, template: "@let isLoadingTools = isLoading();\n@let hasTools = tools().length > 0;\n@let hasFilteredTools = !isLoadingTools && filteredTools().length > 0;\n\n@if (!isLoadingTools && hasTools) {\n <!-- Needs to be displayed above the tool list toggle icon -->\n <app-input\n data-testid=\"tool-filter-input\"\n [ngClass]=\"{\n 'sticky top-0 z-1': true,\n }\"\n [placeholder]=\"UI_STRINGS.INPUT_TOOLTIP\"\n [showLeadingIcon]=\"true\"\n [showTrailingIcon]=\"true\"\n (onValueChange)=\"searchTerm.set($event)\"\n />\n}\n\n<div\n class=\"tool-list\" data-testid=\"tool-panel\" [ngClass]=\"{\n 'flex flex-col items-center pt-2': true,\n }\"\n>\n @if (isLoadingTools) {\n <span\n [ngClass]=\"{\n 'text-proto-text-default': true,\n }\"\n >{{ UI_STRINGS.LOADING_TOOLS }}</span\n >\n }\n\n @if (hasFilteredTools) {\n @for (tool of filteredTools(); track tool.name) {\n <tool-list-item\n [ngClass]=\"{\n 'w-full': true,\n }\"\n [tool]=\"tool\"\n ></tool-list-item>\n }\n }\n\n @if (hasTools && !hasFilteredTools) {\n <span\n [ngClass]=\"{\n 'text-proto-text-default': true,\n }\"\n >{{ UI_STRINGS.NO_FILTERED_TOOLS }}</span\n >\n }\n\n @if (!hasTools && !isLoadingTools) {\n <div\n [ngClass]=\"{\n 'flex flex-col items-center gap-2 text-center px-4': true,\n }\"\n >\n <span\n [ngClass]=\"{\n 'text-proto-text-default': true,\n }\"\n >{{ UI_STRINGS.NO_TOOLS }}</span\n >\n <!-- TODO: Add link to documentation -->\n <button\n type=\"button\"\n [ngClass]=\"{\n 'text-xs text-blue-500 hover:text-blue-600 underline cursor-pointer': true,\n }\"\n (click)=\"onDocsLinkClick()\"\n >\n {{ UI_STRINGS.NO_TOOLS_SEE_MORE }}\n </button>\n </div>\n }\n</div>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: ToolListItemComponent, selector: "tool-list-item", inputs: ["tool"] }, { kind: "component", type: AppInputComponent, selector: "app-input", inputs: ["placeholder", "type", "label", "isLabelSrOnly", "disabled", "error", "showLeadingIcon", "leadingIconVariant", "showTrailingIcon", "trailingIconVariant", "iconsSize"], outputs: ["onValueChange"] }] });
|
|
4596
4596
|
}
|
|
4597
4597
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.22", ngImport: i0, type: ToolListComponent, decorators: [{
|
|
4598
4598
|
type: Component,
|
|
4599
|
-
args: [{ selector: 'tool-list', imports: [...MODULES$e, ...COMPONENTS$e], providers: [ToolFacade], template: "@let isLoadingTools = isLoading();\n@let hasTools = tools().length > 0;\n@let hasFilteredTools = !isLoadingTools && filteredTools().length > 0;\n\n@if (!isLoadingTools && hasTools) {\n <!-- Needs to be displayed above the tool list toggle icon -->\n <app-input\n [ngClass]=\"{\n 'sticky top-0 z-1': true,\n }\"\n [placeholder]=\"UI_STRINGS.INPUT_TOOLTIP\"\n [showLeadingIcon]=\"true\"\n [showTrailingIcon]=\"true\"\n (onValueChange)=\"searchTerm.set($event)\"\n />\n}\n\n<div\n class=\"tool-list\"\
|
|
4599
|
+
args: [{ selector: 'tool-list', imports: [...MODULES$e, ...COMPONENTS$e], providers: [ToolFacade], template: "@let isLoadingTools = isLoading();\n@let hasTools = tools().length > 0;\n@let hasFilteredTools = !isLoadingTools && filteredTools().length > 0;\n\n@if (!isLoadingTools && hasTools) {\n <!-- Needs to be displayed above the tool list toggle icon -->\n <app-input\n data-testid=\"tool-filter-input\"\n [ngClass]=\"{\n 'sticky top-0 z-1': true,\n }\"\n [placeholder]=\"UI_STRINGS.INPUT_TOOLTIP\"\n [showLeadingIcon]=\"true\"\n [showTrailingIcon]=\"true\"\n (onValueChange)=\"searchTerm.set($event)\"\n />\n}\n\n<div\n class=\"tool-list\" data-testid=\"tool-panel\" [ngClass]=\"{\n 'flex flex-col items-center pt-2': true,\n }\"\n>\n @if (isLoadingTools) {\n <span\n [ngClass]=\"{\n 'text-proto-text-default': true,\n }\"\n >{{ UI_STRINGS.LOADING_TOOLS }}</span\n >\n }\n\n @if (hasFilteredTools) {\n @for (tool of filteredTools(); track tool.name) {\n <tool-list-item\n [ngClass]=\"{\n 'w-full': true,\n }\"\n [tool]=\"tool\"\n ></tool-list-item>\n }\n }\n\n @if (hasTools && !hasFilteredTools) {\n <span\n [ngClass]=\"{\n 'text-proto-text-default': true,\n }\"\n >{{ UI_STRINGS.NO_FILTERED_TOOLS }}</span\n >\n }\n\n @if (!hasTools && !isLoadingTools) {\n <div\n [ngClass]=\"{\n 'flex flex-col items-center gap-2 text-center px-4': true,\n }\"\n >\n <span\n [ngClass]=\"{\n 'text-proto-text-default': true,\n }\"\n >{{ UI_STRINGS.NO_TOOLS }}</span\n >\n <!-- TODO: Add link to documentation -->\n <button\n type=\"button\"\n [ngClass]=\"{\n 'text-xs text-blue-500 hover:text-blue-600 underline cursor-pointer': true,\n }\"\n (click)=\"onDocsLinkClick()\"\n >\n {{ UI_STRINGS.NO_TOOLS_SEE_MORE }}\n </button>\n </div>\n }\n</div>" }]
|
|
4600
4600
|
}] });
|
|
4601
4601
|
|
|
4602
4602
|
const MODULES$d = [CommonModule];
|
|
@@ -4622,11 +4622,11 @@ class InputAreaActionBarComponent {
|
|
|
4622
4622
|
});
|
|
4623
4623
|
}
|
|
4624
4624
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.22", ngImport: i0, type: InputAreaActionBarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
4625
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.22", type: InputAreaActionBarComponent, isStandalone: true, selector: "input-area-action-bar", ngImport: i0, template: "<div\n class=\"input-area-action-bar\"\n [ngClass]=\"{\n 'flex flex-1 gap-0.5': true,\n }\"\n>\n <app-icon\n [variant]=\"APP_ICON_VARIANTS.PROMPT_PANEL\"\n [size]=\"APP_ICON_SIZES.S\"\n [hoverBackgroundColor]=\"'app-icon-background-hover'\"\n (onClick)=\"handlePromptPanelOverlayOpen()\"\n >\n </app-icon>\n <app-icon\n [variant]=\"APP_ICON_VARIANTS.TOOL_PANEL\"\n [size]=\"APP_ICON_SIZES.S\"\n [hoverBackgroundColor]=\"'app-icon-background-hover'\"\n (onClick)=\"handleToolPanelOverlayOpen()\"\n >\n </app-icon>\n</div>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: AppIconComponent, selector: "app-icon", inputs: ["variant", "size", "iconFill", "disabledIconFill", "hoverIconFill", "isDisabled", "isWrapped", "title", "customIcon", "backgroundColor", "hoverBackgroundShape", "hoverBackgroundColor", "isHoveredExternal", "tabIndex"], outputs: ["onClick"] }] });
|
|
4625
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.22", type: InputAreaActionBarComponent, isStandalone: true, selector: "input-area-action-bar", ngImport: i0, template: "<div\n class=\"input-area-action-bar\"\n [ngClass]=\"{\n 'flex flex-1 gap-0.5': true,\n }\"\n>\n <app-icon\n data-testid=\"prompt-panel-button\"\n [variant]=\"APP_ICON_VARIANTS.PROMPT_PANEL\"\n [size]=\"APP_ICON_SIZES.S\"\n [hoverBackgroundColor]=\"'app-icon-background-hover'\"\n (onClick)=\"handlePromptPanelOverlayOpen()\"\n >\n </app-icon>\n <app-icon\n data-testid=\"tool-panel-button\"\n [variant]=\"APP_ICON_VARIANTS.TOOL_PANEL\"\n [size]=\"APP_ICON_SIZES.S\"\n [hoverBackgroundColor]=\"'app-icon-background-hover'\"\n (onClick)=\"handleToolPanelOverlayOpen()\"\n >\n </app-icon>\n</div>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: AppIconComponent, selector: "app-icon", inputs: ["variant", "size", "iconFill", "disabledIconFill", "hoverIconFill", "isDisabled", "isWrapped", "title", "customIcon", "backgroundColor", "hoverBackgroundShape", "hoverBackgroundColor", "isHoveredExternal", "tabIndex"], outputs: ["onClick"] }] });
|
|
4626
4626
|
}
|
|
4627
4627
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.22", ngImport: i0, type: InputAreaActionBarComponent, decorators: [{
|
|
4628
4628
|
type: Component,
|
|
4629
|
-
args: [{ selector: 'input-area-action-bar', imports: [...MODULES$d, ...COMPONENTS$d], template: "<div\n class=\"input-area-action-bar\"\n [ngClass]=\"{\n 'flex flex-1 gap-0.5': true,\n }\"\n>\n <app-icon\n [variant]=\"APP_ICON_VARIANTS.PROMPT_PANEL\"\n [size]=\"APP_ICON_SIZES.S\"\n [hoverBackgroundColor]=\"'app-icon-background-hover'\"\n (onClick)=\"handlePromptPanelOverlayOpen()\"\n >\n </app-icon>\n <app-icon\n [variant]=\"APP_ICON_VARIANTS.TOOL_PANEL\"\n [size]=\"APP_ICON_SIZES.S\"\n [hoverBackgroundColor]=\"'app-icon-background-hover'\"\n (onClick)=\"handleToolPanelOverlayOpen()\"\n >\n </app-icon>\n</div>\n" }]
|
|
4629
|
+
args: [{ selector: 'input-area-action-bar', imports: [...MODULES$d, ...COMPONENTS$d], template: "<div\n class=\"input-area-action-bar\"\n [ngClass]=\"{\n 'flex flex-1 gap-0.5': true,\n }\"\n>\n <app-icon\n data-testid=\"prompt-panel-button\"\n [variant]=\"APP_ICON_VARIANTS.PROMPT_PANEL\"\n [size]=\"APP_ICON_SIZES.S\"\n [hoverBackgroundColor]=\"'app-icon-background-hover'\"\n (onClick)=\"handlePromptPanelOverlayOpen()\"\n >\n </app-icon>\n <app-icon\n data-testid=\"tool-panel-button\"\n [variant]=\"APP_ICON_VARIANTS.TOOL_PANEL\"\n [size]=\"APP_ICON_SIZES.S\"\n [hoverBackgroundColor]=\"'app-icon-background-hover'\"\n (onClick)=\"handleToolPanelOverlayOpen()\"\n >\n </app-icon>\n</div>\n" }]
|
|
4630
4630
|
}] });
|
|
4631
4631
|
|
|
4632
4632
|
const COMPONENTS$c = [AppIconComponent];
|
|
@@ -5819,11 +5819,11 @@ class ToolMessageComponent {
|
|
|
5819
5819
|
};
|
|
5820
5820
|
}
|
|
5821
5821
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.22", ngImport: i0, type: ToolMessageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
5822
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.22", type: ToolMessageComponent, isStandalone: true, selector: "tool-message", inputs: { message: { classPropertyName: "message", publicName: "message", isSignal: true, isRequired: true, transformFunction: null }, parentToolTraceId: { classPropertyName: "parentToolTraceId", publicName: "parentToolTraceId", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: "@let hasResult = message().result !== undefined && message().result !== null;\n@let isExpanded = message().isExpanded !== undefined ? message().isExpanded : false;\n\n<div\n class=\"tool-message-wrapper\"\
|
|
5822
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.22", type: ToolMessageComponent, isStandalone: true, selector: "tool-message", inputs: { message: { classPropertyName: "message", publicName: "message", isSignal: true, isRequired: true, transformFunction: null }, parentToolTraceId: { classPropertyName: "parentToolTraceId", publicName: "parentToolTraceId", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: "@let hasResult = message().result !== undefined && message().result !== null;\n@let isExpanded = message().isExpanded !== undefined ? message().isExpanded : false;\n\n<div\n class=\"tool-message-wrapper\" data-testid=\"tool-message\" [ngClass]=\"{\n 'flex flex-col text-text-states-active justify-start py-2 px-[3px] text-[13px] font-weight-600 leading-[100%]': true,\n }\"\n>\n <div\n class=\"tool-message__header-wrapper\"\n [ngClass]=\"{ 'flex items-center justify-center gap-2 px-1': true }\"\n >\n <app-icon\n [title]=\"\n hasResult ? UI_STRINGS.TOOL_EXECUTION_SUCCESS : UI_STRINGS.TOOL_EXECUTION_PENDING\n \"\n [iconFill]=\"hasResult ? '--app-accent-color-1' : 'text-text-states-active'\"\n [hoverIconFill]=\"hasResult ? '--app-accent-color-1' : 'text-text-states-active'\"\n [size]=\"APP_ICON_SIZES.XXXS\"\n [variant]=\"\n hasResult ? APP_ICON_VARIANTS.CIRCLE_FILLED : APP_ICON_VARIANTS.CIRCLE_OUTLINE\n \"\n ></app-icon>\n\n <div\n class=\"tool-message__header\"\n tabindex=\"0\"\n [ngClass]=\"{ 'flex flex-1 cursor-pointer': true }\"\n (click)=\"handleToggle()\"\n (keyup)=\"handleToggle()\"\n >\n <div class=\"flex flex-1 ps-2 items-center\">\n {{ message().toolName }}\n </div>\n\n <app-icon\n [variant]=\"\n isExpanded ? APP_ICON_VARIANTS.CHEVRON_UP : APP_ICON_VARIANTS.CHEVRON_DOWN\n \"\n ></app-icon>\n </div>\n </div>\n\n @if (isExpanded) {\n <div\n class=\"tool-message__detail-pane\"\n [ngClass]=\"{\n 'flex flex-col gap-4 list-none pt-2 px-2 w-full': true,\n }\"\n >\n <div\n class=\"tool-message__detail-pane-section\"\n [ngClass]=\"{\n 'px-3 border-l border-text-default': true,\n }\"\n >\n <div class=\"tool-message__detail-pane-section-content\" [ngClass]=\"{ 'px-2': true }\">\n <span>Input</span>\n <app-md-formatter [content]=\"handleArgsToJSONMarkdown()\"></app-md-formatter>\n\n <span>Output</span>\n <app-md-formatter [content]=\"handleResultToJSONMarkdown()\"></app-md-formatter>\n </div>\n </div>\n </div>\n }\n</div>\n", styles: [":host ::ng-deep .io-assist-code-theme:before{background:none!important;background-color:transparent!important}:host ::ng-deep pre .language-json{max-height:320px}@media (min-width: 1024px){:host ::ng-deep pre .language-json{max-height:400px}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: AppIconComponent, selector: "app-icon", inputs: ["variant", "size", "iconFill", "disabledIconFill", "hoverIconFill", "isDisabled", "isWrapped", "title", "customIcon", "backgroundColor", "hoverBackgroundShape", "hoverBackgroundColor", "isHoveredExternal", "tabIndex"], outputs: ["onClick"] }, { kind: "component", type: AppMdFormatterComponent, selector: "app-md-formatter", inputs: ["content"] }] });
|
|
5823
5823
|
}
|
|
5824
5824
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.22", ngImport: i0, type: ToolMessageComponent, decorators: [{
|
|
5825
5825
|
type: Component,
|
|
5826
|
-
args: [{ selector: 'tool-message', imports: [...MODULES$7, ...COMPONENTS$7], template: "@let hasResult = message().result !== undefined && message().result !== null;\n@let isExpanded = message().isExpanded !== undefined ? message().isExpanded : false;\n\n<div\n class=\"tool-message-wrapper\"\
|
|
5826
|
+
args: [{ selector: 'tool-message', imports: [...MODULES$7, ...COMPONENTS$7], template: "@let hasResult = message().result !== undefined && message().result !== null;\n@let isExpanded = message().isExpanded !== undefined ? message().isExpanded : false;\n\n<div\n class=\"tool-message-wrapper\" data-testid=\"tool-message\" [ngClass]=\"{\n 'flex flex-col text-text-states-active justify-start py-2 px-[3px] text-[13px] font-weight-600 leading-[100%]': true,\n }\"\n>\n <div\n class=\"tool-message__header-wrapper\"\n [ngClass]=\"{ 'flex items-center justify-center gap-2 px-1': true }\"\n >\n <app-icon\n [title]=\"\n hasResult ? UI_STRINGS.TOOL_EXECUTION_SUCCESS : UI_STRINGS.TOOL_EXECUTION_PENDING\n \"\n [iconFill]=\"hasResult ? '--app-accent-color-1' : 'text-text-states-active'\"\n [hoverIconFill]=\"hasResult ? '--app-accent-color-1' : 'text-text-states-active'\"\n [size]=\"APP_ICON_SIZES.XXXS\"\n [variant]=\"\n hasResult ? APP_ICON_VARIANTS.CIRCLE_FILLED : APP_ICON_VARIANTS.CIRCLE_OUTLINE\n \"\n ></app-icon>\n\n <div\n class=\"tool-message__header\"\n tabindex=\"0\"\n [ngClass]=\"{ 'flex flex-1 cursor-pointer': true }\"\n (click)=\"handleToggle()\"\n (keyup)=\"handleToggle()\"\n >\n <div class=\"flex flex-1 ps-2 items-center\">\n {{ message().toolName }}\n </div>\n\n <app-icon\n [variant]=\"\n isExpanded ? APP_ICON_VARIANTS.CHEVRON_UP : APP_ICON_VARIANTS.CHEVRON_DOWN\n \"\n ></app-icon>\n </div>\n </div>\n\n @if (isExpanded) {\n <div\n class=\"tool-message__detail-pane\"\n [ngClass]=\"{\n 'flex flex-col gap-4 list-none pt-2 px-2 w-full': true,\n }\"\n >\n <div\n class=\"tool-message__detail-pane-section\"\n [ngClass]=\"{\n 'px-3 border-l border-text-default': true,\n }\"\n >\n <div class=\"tool-message__detail-pane-section-content\" [ngClass]=\"{ 'px-2': true }\">\n <span>Input</span>\n <app-md-formatter [content]=\"handleArgsToJSONMarkdown()\"></app-md-formatter>\n\n <span>Output</span>\n <app-md-formatter [content]=\"handleResultToJSONMarkdown()\"></app-md-formatter>\n </div>\n </div>\n </div>\n }\n</div>\n", styles: [":host ::ng-deep .io-assist-code-theme:before{background:none!important;background-color:transparent!important}:host ::ng-deep pre .language-json{max-height:320px}@media (min-width: 1024px){:host ::ng-deep pre .language-json{max-height:400px}}\n"] }]
|
|
5827
5827
|
}], propDecorators: { message: [{ type: i0.Input, args: [{ isSignal: true, alias: "message", required: true }] }], parentToolTraceId: [{ type: i0.Input, args: [{ isSignal: true, alias: "parentToolTraceId", required: true }] }] } });
|
|
5828
5828
|
|
|
5829
5829
|
const MODULES$6 = [CommonModule];
|
|
@@ -5897,11 +5897,11 @@ class UserMessageComponent {
|
|
|
5897
5897
|
}, this._activeThreadId());
|
|
5898
5898
|
}
|
|
5899
5899
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.22", ngImport: i0, type: UserMessageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
5900
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.22", type: UserMessageComponent, isStandalone: true, selector: "user-message", inputs: { message: { classPropertyName: "message", publicName: "message", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: "@let showLoadingSpinner = isGeneratingResponse() && message().id === lastUserMessage()?.id;\n@let showReloadButton = error() && message().id === lastUserMessage()?.id;\n@let showError = error() && message().id === lastUserMessage()?.id;\n\n<div\n class=\"user-message\"\
|
|
5900
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.22", type: UserMessageComponent, isStandalone: true, selector: "user-message", inputs: { message: { classPropertyName: "message", publicName: "message", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: "@let showLoadingSpinner = isGeneratingResponse() && message().id === lastUserMessage()?.id;\n@let showReloadButton = error() && message().id === lastUserMessage()?.id;\n@let showError = error() && message().id === lastUserMessage()?.id;\n\n<div\n class=\"user-message\" data-testid=\"user-message\" [ngClass]=\"{\n 'flex flex-col justify-end': true,\n }\"\n>\n <div class=\"user-message__inner\" [ngClass]=\"{ 'flex items-end justify-end': true }\">\n <div\n class=\"user-message__actions\"\n [ngClass]=\"{\n 'flex items-end px-2': true,\n }\"\n >\n @if (showLoadingSpinner) {\n <app-spinner data-testid=\"loading-indicator\" [size]=\"APP_SPINNER_COMPONENT_SIZE.SMALL\" />\n }\n\n @if (showReloadButton) {\n <app-icon\n [variant]=\"APP_ICON_VARIANTS.RELOAD\"\n [size]=\"APP_ICON_SIZES.S\"\n [backgroundColor]=\"'--app-accent-color-3'\"\n [iconFill]=\"'--app-neutrals-1000'\"\n [hoverIconFill]=\"'--app-accent-color-3'\"\n (click)=\"reloadResponse()\"\n >Reload</app-icon\n >\n }\n </div>\n\n <div class=\"user-message__content flex min-w-0\">\n <div\n class=\"user-message__bubble\"\n [ngClass]=\"{\n 'p-4 list-none text-[14px] leading-[18px] font-weight-400 text-user-message-text bg-user-message-background rounded-2xl max-w-[620px]': true,\n 'min-w-0 whitespace-pre-wrap break-words': true,\n }\"\n >\n {{ message().content }}\n </div>\n </div>\n </div>\n\n @if (showError) {\n <div\n class=\"user-message__error\"\n [ngClass]=\"{\n 'flex justify-end py-1 text-text-default text-[13px] font-weight-400 leading-[100%]': true,\n }\"\n >\n {{ error() }}\n </div>\n }\n</div>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: AppSpinnerComponent, selector: "app-spinner", inputs: ["size"] }, { kind: "component", type: AppIconComponent, selector: "app-icon", inputs: ["variant", "size", "iconFill", "disabledIconFill", "hoverIconFill", "isDisabled", "isWrapped", "title", "customIcon", "backgroundColor", "hoverBackgroundShape", "hoverBackgroundColor", "isHoveredExternal", "tabIndex"], outputs: ["onClick"] }] });
|
|
5901
5901
|
}
|
|
5902
5902
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.22", ngImport: i0, type: UserMessageComponent, decorators: [{
|
|
5903
5903
|
type: Component,
|
|
5904
|
-
args: [{ selector: 'user-message', imports: [...MODULES$5, ...COMPONENTS$5], template: "@let showLoadingSpinner = isGeneratingResponse() && message().id === lastUserMessage()?.id;\n@let showReloadButton = error() && message().id === lastUserMessage()?.id;\n@let showError = error() && message().id === lastUserMessage()?.id;\n\n<div\n class=\"user-message\"\
|
|
5904
|
+
args: [{ selector: 'user-message', imports: [...MODULES$5, ...COMPONENTS$5], template: "@let showLoadingSpinner = isGeneratingResponse() && message().id === lastUserMessage()?.id;\n@let showReloadButton = error() && message().id === lastUserMessage()?.id;\n@let showError = error() && message().id === lastUserMessage()?.id;\n\n<div\n class=\"user-message\" data-testid=\"user-message\" [ngClass]=\"{\n 'flex flex-col justify-end': true,\n }\"\n>\n <div class=\"user-message__inner\" [ngClass]=\"{ 'flex items-end justify-end': true }\">\n <div\n class=\"user-message__actions\"\n [ngClass]=\"{\n 'flex items-end px-2': true,\n }\"\n >\n @if (showLoadingSpinner) {\n <app-spinner data-testid=\"loading-indicator\" [size]=\"APP_SPINNER_COMPONENT_SIZE.SMALL\" />\n }\n\n @if (showReloadButton) {\n <app-icon\n [variant]=\"APP_ICON_VARIANTS.RELOAD\"\n [size]=\"APP_ICON_SIZES.S\"\n [backgroundColor]=\"'--app-accent-color-3'\"\n [iconFill]=\"'--app-neutrals-1000'\"\n [hoverIconFill]=\"'--app-accent-color-3'\"\n (click)=\"reloadResponse()\"\n >Reload</app-icon\n >\n }\n </div>\n\n <div class=\"user-message__content flex min-w-0\">\n <div\n class=\"user-message__bubble\"\n [ngClass]=\"{\n 'p-4 list-none text-[14px] leading-[18px] font-weight-400 text-user-message-text bg-user-message-background rounded-2xl max-w-[620px]': true,\n 'min-w-0 whitespace-pre-wrap break-words': true,\n }\"\n >\n {{ message().content }}\n </div>\n </div>\n </div>\n\n @if (showError) {\n <div\n class=\"user-message__error\"\n [ngClass]=\"{\n 'flex justify-end py-1 text-text-default text-[13px] font-weight-400 leading-[100%]': true,\n }\"\n >\n {{ error() }}\n </div>\n }\n</div>\n" }]
|
|
5905
5905
|
}], propDecorators: { message: [{ type: i0.Input, args: [{ isSignal: true, alias: "message", required: true }] }] } });
|
|
5906
5906
|
|
|
5907
5907
|
const COMPONENTS$4 = [
|
|
@@ -5964,11 +5964,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.22", ngImpo
|
|
|
5964
5964
|
|
|
5965
5965
|
class FavoritePromptListComponent {
|
|
5966
5966
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.22", ngImport: i0, type: FavoritePromptListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
5967
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.22", type: FavoritePromptListComponent, isStandalone: true, selector: "favorite-prompt-list", ngImport: i0, template: "<prompt-list [showFavoriteOnly]=\"true\"></prompt-list>\n", dependencies: [{ kind: "component", type: PromptListComponent, selector: "prompt-list", inputs: ["showFavoriteOnly"] }] });
|
|
5967
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.22", type: FavoritePromptListComponent, isStandalone: true, selector: "favorite-prompt-list", ngImport: i0, template: "<div data-testid=\"favorite-prompts-list\">\n\t<prompt-list [showFavoriteOnly]=\"true\"></prompt-list>\n</div>\n", dependencies: [{ kind: "component", type: PromptListComponent, selector: "prompt-list", inputs: ["showFavoriteOnly"] }] });
|
|
5968
5968
|
}
|
|
5969
5969
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.22", ngImport: i0, type: FavoritePromptListComponent, decorators: [{
|
|
5970
5970
|
type: Component,
|
|
5971
|
-
args: [{ selector: 'favorite-prompt-list', imports: [PromptListComponent], template: "<prompt-list [showFavoriteOnly]=\"true\"></prompt-list>\n" }]
|
|
5971
|
+
args: [{ selector: 'favorite-prompt-list', imports: [PromptListComponent], template: "<div data-testid=\"favorite-prompts-list\">\n\t<prompt-list [showFavoriteOnly]=\"true\"></prompt-list>\n</div>\n" }]
|
|
5972
5972
|
}] });
|
|
5973
5973
|
|
|
5974
5974
|
// TODO: Replace this when we decide to support multiple agents
|
|
@@ -6055,7 +6055,7 @@ class ThreadHistoryListItemComponent {
|
|
|
6055
6055
|
provide: ComponentEffectManagerService,
|
|
6056
6056
|
useFactory: () => new ComponentEffectManagerService('ThreadHistoryListItemComponent'),
|
|
6057
6057
|
},
|
|
6058
|
-
], viewQueries: [{ propertyName: "threadNameInput", first: true, predicate: ["threadNameInput"], descendants: true, isSignal: true }], ngImport: i0, template: "@let isCurrentlyActive = activeThreadId() === thread().id;\n@let isTryingToDeleteThread = thread().state === THREAD_STATE.DELETING;\n@let isTryingToRenameThread = thread().state === THREAD_STATE.RENAMING;\n@let isThreadActionPending =\n isThreadStreaming() || isTryingToDeleteThread || isTryingToRenameThread;\n@let hasNotification = hasCompletionNotification();\n@let showNotificationBadge = hasNotification && !isCurrentlyActive;\n\n<div\n class=\"flex flex-1 justify-start gap-2 px-4 h-8 rounded-md hover:bg-thread-list-item-hover-background group\"\n tabindex=\"0\"\n [ngClass]=\"{\n 'bg-thread-list-item-hover-background': isCurrentlyActive,\n }\"\n (keyup.enter)=\"handleThreadSelection()\"\n (click)=\"handleThreadSelection()\"\n>\n <div class=\"flex items-center gap-2 cursor-pointer p-2 flex-1 min-w-0\">\n @if (!isEditModeEnabled()) {\n <div\n class=\"flex items-center text-xs text-text-default flex-1 min-w-0 overflow-hidden\"\n [ngClass]=\"{\n 'text-text-states-active': isCurrentlyActive,\n }\"\n >\n @if (showNotificationBadge) {\n <span\n class=\"w-2 h-2 rounded-full bg-orange-500 mr-2 flex-shrink-0\"\n title=\"New response available\"\n ></span>\n }\n\n <span class=\"truncate block\" [attr.title]=\"thread().title\">\n {{ thread().title }}\n </span>\n\n @if (isThreadActionPending) {\n <app-spinner\n class=\"pl-2 flex-shrink-0\"\n tabindex=\"-1\"\n [size]=\"APP_SPINNER_COMPONENT_SIZE.SMALL\"\n ></app-spinner>\n }\n </div>\n }\n\n @if (isEditModeEnabled()) {\n <input\n #threadNameInput\n class=\"flex-1 px-2 border border-proto-border-default rounded text-proto-text-default\"\n [value]=\"thread().title\"\n (blur)=\"handleEditModeDisable(); onRenameThread(threadNameInput.value)\"\n (keydown.enter)=\"handleEditModeDisable(); onRenameThread(threadNameInput.value)\"\n (keydown.escape)=\"handleEditModeDisable(); $event.stopPropagation()\"\n />\n }\n\n <!-- Thread Action Buttons -->\n <div\n class=\"hidden group-hover:flex gap-2 ml-auto\"\n [ngClass]=\"{ flex: isCurrentlyActive, hidden: !isCurrentlyActive }\"\n >\n <app-icon\n [variant]=\"APP_ICON_VARIANTS.EDIT\"\n [tabIndex]=\"isCurrentlyActive ? 0 : -1\"\n [size]=\"APP_ICON_SIZES.S\"\n [isDisabled]=\"isThreadActionPending\"\n (onClick)=\"handleEditModeEnable()\"\n />\n <app-icon\n [variant]=\"APP_ICON_VARIANTS.DELETE\"\n [tabIndex]=\"isCurrentlyActive ? 0 : -1\"\n [size]=\"APP_ICON_SIZES.S\"\n [isDisabled]=\"isCurrentlyActive || isThreadActionPending\"\n (onClick)=\"onDeleteThread(thread()); $event.stopPropagation()\"\n />\n </div>\n </div>\n</div>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: AppSpinnerComponent, selector: "app-spinner", inputs: ["size"] }, { kind: "component", type: AppIconComponent, selector: "app-icon", inputs: ["variant", "size", "iconFill", "disabledIconFill", "hoverIconFill", "isDisabled", "isWrapped", "title", "customIcon", "backgroundColor", "hoverBackgroundShape", "hoverBackgroundColor", "isHoveredExternal", "tabIndex"], outputs: ["onClick"] }] });
|
|
6058
|
+
], viewQueries: [{ propertyName: "threadNameInput", first: true, predicate: ["threadNameInput"], descendants: true, isSignal: true }], ngImport: i0, template: "@let isCurrentlyActive = activeThreadId() === thread().id;\n@let isTryingToDeleteThread = thread().state === THREAD_STATE.DELETING;\n@let isTryingToRenameThread = thread().state === THREAD_STATE.RENAMING;\n@let isThreadActionPending =\n isThreadStreaming() || isTryingToDeleteThread || isTryingToRenameThread;\n@let hasNotification = hasCompletionNotification();\n@let showNotificationBadge = hasNotification && !isCurrentlyActive;\n\n<div\n data-testid=\"thread-list-item\"\n class=\"flex flex-1 justify-start gap-2 px-4 h-8 rounded-md hover:bg-thread-list-item-hover-background group\"\n tabindex=\"0\"\n [ngClass]=\"{\n 'bg-thread-list-item-hover-background': isCurrentlyActive,\n }\"\n (keyup.enter)=\"handleThreadSelection()\"\n (click)=\"handleThreadSelection()\"\n>\n <div class=\"flex items-center gap-2 cursor-pointer p-2 flex-1 min-w-0\">\n @if (!isEditModeEnabled()) {\n <div\n class=\"flex items-center text-xs text-text-default flex-1 min-w-0 overflow-hidden\"\n [ngClass]=\"{\n 'text-text-states-active': isCurrentlyActive,\n }\"\n >\n @if (showNotificationBadge) {\n <span\n class=\"w-2 h-2 rounded-full bg-orange-500 mr-2 flex-shrink-0\"\n title=\"New response available\"\n ></span>\n }\n\n <span class=\"truncate block\" [attr.title]=\"thread().title\">\n {{ thread().title }}\n </span>\n\n @if (isThreadActionPending) {\n <app-spinner\n class=\"pl-2 flex-shrink-0\"\n tabindex=\"-1\"\n [size]=\"APP_SPINNER_COMPONENT_SIZE.SMALL\"\n ></app-spinner>\n }\n </div>\n }\n\n @if (isEditModeEnabled()) {\n <input\n #threadNameInput\n class=\"flex-1 px-2 border border-proto-border-default rounded text-proto-text-default\"\n [value]=\"thread().title\"\n (blur)=\"handleEditModeDisable(); onRenameThread(threadNameInput.value)\"\n (keydown.enter)=\"handleEditModeDisable(); onRenameThread(threadNameInput.value)\"\n (keydown.escape)=\"handleEditModeDisable(); $event.stopPropagation()\"\n />\n }\n\n <!-- Thread Action Buttons -->\n <div\n class=\"hidden group-hover:flex gap-2 ml-auto\"\n [ngClass]=\"{ flex: isCurrentlyActive, hidden: !isCurrentlyActive }\"\n >\n <app-icon\n [variant]=\"APP_ICON_VARIANTS.EDIT\"\n [tabIndex]=\"isCurrentlyActive ? 0 : -1\"\n [size]=\"APP_ICON_SIZES.S\"\n [isDisabled]=\"isThreadActionPending\"\n (onClick)=\"handleEditModeEnable()\"\n />\n <app-icon\n [variant]=\"APP_ICON_VARIANTS.DELETE\"\n [tabIndex]=\"isCurrentlyActive ? 0 : -1\"\n [size]=\"APP_ICON_SIZES.S\"\n [isDisabled]=\"isCurrentlyActive || isThreadActionPending\"\n (onClick)=\"onDeleteThread(thread()); $event.stopPropagation()\"\n />\n </div>\n </div>\n</div>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: AppSpinnerComponent, selector: "app-spinner", inputs: ["size"] }, { kind: "component", type: AppIconComponent, selector: "app-icon", inputs: ["variant", "size", "iconFill", "disabledIconFill", "hoverIconFill", "isDisabled", "isWrapped", "title", "customIcon", "backgroundColor", "hoverBackgroundShape", "hoverBackgroundColor", "isHoveredExternal", "tabIndex"], outputs: ["onClick"] }] });
|
|
6059
6059
|
}
|
|
6060
6060
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.22", ngImport: i0, type: ThreadHistoryListItemComponent, decorators: [{
|
|
6061
6061
|
type: Component,
|
|
@@ -6064,7 +6064,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.22", ngImpo
|
|
|
6064
6064
|
provide: ComponentEffectManagerService,
|
|
6065
6065
|
useFactory: () => new ComponentEffectManagerService('ThreadHistoryListItemComponent'),
|
|
6066
6066
|
},
|
|
6067
|
-
], template: "@let isCurrentlyActive = activeThreadId() === thread().id;\n@let isTryingToDeleteThread = thread().state === THREAD_STATE.DELETING;\n@let isTryingToRenameThread = thread().state === THREAD_STATE.RENAMING;\n@let isThreadActionPending =\n isThreadStreaming() || isTryingToDeleteThread || isTryingToRenameThread;\n@let hasNotification = hasCompletionNotification();\n@let showNotificationBadge = hasNotification && !isCurrentlyActive;\n\n<div\n class=\"flex flex-1 justify-start gap-2 px-4 h-8 rounded-md hover:bg-thread-list-item-hover-background group\"\n tabindex=\"0\"\n [ngClass]=\"{\n 'bg-thread-list-item-hover-background': isCurrentlyActive,\n }\"\n (keyup.enter)=\"handleThreadSelection()\"\n (click)=\"handleThreadSelection()\"\n>\n <div class=\"flex items-center gap-2 cursor-pointer p-2 flex-1 min-w-0\">\n @if (!isEditModeEnabled()) {\n <div\n class=\"flex items-center text-xs text-text-default flex-1 min-w-0 overflow-hidden\"\n [ngClass]=\"{\n 'text-text-states-active': isCurrentlyActive,\n }\"\n >\n @if (showNotificationBadge) {\n <span\n class=\"w-2 h-2 rounded-full bg-orange-500 mr-2 flex-shrink-0\"\n title=\"New response available\"\n ></span>\n }\n\n <span class=\"truncate block\" [attr.title]=\"thread().title\">\n {{ thread().title }}\n </span>\n\n @if (isThreadActionPending) {\n <app-spinner\n class=\"pl-2 flex-shrink-0\"\n tabindex=\"-1\"\n [size]=\"APP_SPINNER_COMPONENT_SIZE.SMALL\"\n ></app-spinner>\n }\n </div>\n }\n\n @if (isEditModeEnabled()) {\n <input\n #threadNameInput\n class=\"flex-1 px-2 border border-proto-border-default rounded text-proto-text-default\"\n [value]=\"thread().title\"\n (blur)=\"handleEditModeDisable(); onRenameThread(threadNameInput.value)\"\n (keydown.enter)=\"handleEditModeDisable(); onRenameThread(threadNameInput.value)\"\n (keydown.escape)=\"handleEditModeDisable(); $event.stopPropagation()\"\n />\n }\n\n <!-- Thread Action Buttons -->\n <div\n class=\"hidden group-hover:flex gap-2 ml-auto\"\n [ngClass]=\"{ flex: isCurrentlyActive, hidden: !isCurrentlyActive }\"\n >\n <app-icon\n [variant]=\"APP_ICON_VARIANTS.EDIT\"\n [tabIndex]=\"isCurrentlyActive ? 0 : -1\"\n [size]=\"APP_ICON_SIZES.S\"\n [isDisabled]=\"isThreadActionPending\"\n (onClick)=\"handleEditModeEnable()\"\n />\n <app-icon\n [variant]=\"APP_ICON_VARIANTS.DELETE\"\n [tabIndex]=\"isCurrentlyActive ? 0 : -1\"\n [size]=\"APP_ICON_SIZES.S\"\n [isDisabled]=\"isCurrentlyActive || isThreadActionPending\"\n (onClick)=\"onDeleteThread(thread()); $event.stopPropagation()\"\n />\n </div>\n </div>\n</div>" }]
|
|
6067
|
+
], template: "@let isCurrentlyActive = activeThreadId() === thread().id;\n@let isTryingToDeleteThread = thread().state === THREAD_STATE.DELETING;\n@let isTryingToRenameThread = thread().state === THREAD_STATE.RENAMING;\n@let isThreadActionPending =\n isThreadStreaming() || isTryingToDeleteThread || isTryingToRenameThread;\n@let hasNotification = hasCompletionNotification();\n@let showNotificationBadge = hasNotification && !isCurrentlyActive;\n\n<div\n data-testid=\"thread-list-item\"\n class=\"flex flex-1 justify-start gap-2 px-4 h-8 rounded-md hover:bg-thread-list-item-hover-background group\"\n tabindex=\"0\"\n [ngClass]=\"{\n 'bg-thread-list-item-hover-background': isCurrentlyActive,\n }\"\n (keyup.enter)=\"handleThreadSelection()\"\n (click)=\"handleThreadSelection()\"\n>\n <div class=\"flex items-center gap-2 cursor-pointer p-2 flex-1 min-w-0\">\n @if (!isEditModeEnabled()) {\n <div\n class=\"flex items-center text-xs text-text-default flex-1 min-w-0 overflow-hidden\"\n [ngClass]=\"{\n 'text-text-states-active': isCurrentlyActive,\n }\"\n >\n @if (showNotificationBadge) {\n <span\n class=\"w-2 h-2 rounded-full bg-orange-500 mr-2 flex-shrink-0\"\n title=\"New response available\"\n ></span>\n }\n\n <span class=\"truncate block\" [attr.title]=\"thread().title\">\n {{ thread().title }}\n </span>\n\n @if (isThreadActionPending) {\n <app-spinner\n class=\"pl-2 flex-shrink-0\"\n tabindex=\"-1\"\n [size]=\"APP_SPINNER_COMPONENT_SIZE.SMALL\"\n ></app-spinner>\n }\n </div>\n }\n\n @if (isEditModeEnabled()) {\n <input\n #threadNameInput\n class=\"flex-1 px-2 border border-proto-border-default rounded text-proto-text-default\"\n [value]=\"thread().title\"\n (blur)=\"handleEditModeDisable(); onRenameThread(threadNameInput.value)\"\n (keydown.enter)=\"handleEditModeDisable(); onRenameThread(threadNameInput.value)\"\n (keydown.escape)=\"handleEditModeDisable(); $event.stopPropagation()\"\n />\n }\n\n <!-- Thread Action Buttons -->\n <div\n class=\"hidden group-hover:flex gap-2 ml-auto\"\n [ngClass]=\"{ flex: isCurrentlyActive, hidden: !isCurrentlyActive }\"\n >\n <app-icon\n [variant]=\"APP_ICON_VARIANTS.EDIT\"\n [tabIndex]=\"isCurrentlyActive ? 0 : -1\"\n [size]=\"APP_ICON_SIZES.S\"\n [isDisabled]=\"isThreadActionPending\"\n (onClick)=\"handleEditModeEnable()\"\n />\n <app-icon\n [variant]=\"APP_ICON_VARIANTS.DELETE\"\n [tabIndex]=\"isCurrentlyActive ? 0 : -1\"\n [size]=\"APP_ICON_SIZES.S\"\n [isDisabled]=\"isCurrentlyActive || isThreadActionPending\"\n (onClick)=\"onDeleteThread(thread()); $event.stopPropagation()\"\n />\n </div>\n </div>\n</div>" }]
|
|
6068
6068
|
}], ctorParameters: () => [], propDecorators: { thread: [{ type: i0.Input, args: [{ isSignal: true, alias: "thread", required: true }] }], threadNameInput: [{ type: i0.ViewChild, args: ['threadNameInput', { isSignal: true }] }] } });
|
|
6069
6069
|
|
|
6070
6070
|
class ThreadHistoryListItemDividerComponent {
|
|
@@ -6202,11 +6202,11 @@ class ThreadHistoryComponent {
|
|
|
6202
6202
|
this._overlayService.hideThreadHistory();
|
|
6203
6203
|
}
|
|
6204
6204
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.22", ngImport: i0, type: ThreadHistoryComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
6205
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.22", type: ThreadHistoryComponent, isStandalone: true, selector: "thread-history", ngImport: i0, template: "<div\n class=\"absolute left-0 top-0 md:static md:left-auto md:top-auto flex flex-col w-full h-full bg-app-background-secondary z-10 md:w-[368px] md:min-w-[368px] md:max-w-[368px] flex-shrink-0\"\n>\n <!-- Thread History Header -->\n <div class=\"flex items-center gap-4 px-4 py-2\">\n <!-- Thread Header Title Section -->\n <app-icon [variant]=\"APP_ICON_VARIANTS.THREAD_HISTORY\" (click)=\"hideThreadHistory()\" />\n\n <!-- IO.Assist Logo -->\n @if (isDarkMode()) {\n <svg\n width=\"68\"\n height=\"14\"\n viewBox=\"0 0 68 14\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M0.220798 3.28877H1.38651V13.2145H0.220798V3.28877ZM0.255084 1.38592C0.106512 1.22592 0.0322266 1.04306 0.0322266 0.837346C0.0322266 0.631632 0.106512 0.454489 0.255084 0.305918C0.415084 0.145918 0.597941 0.065918 0.803655 0.065918C1.00937 0.065918 1.18651 0.145918 1.33508 0.305918C1.49508 0.454489 1.57508 0.631632 1.57508 0.837346C1.57508 1.04306 1.49508 1.22592 1.33508 1.38592C1.18651 1.53449 1.00937 1.60877 0.803655 1.60877C0.597941 1.60877 0.415084 1.53449 0.255084 1.38592Z\"\n fill=\"white\"\n />\n <path\n d=\"M8.38897 12.3745C9.5204 12.3745 10.4804 11.9745 11.269 11.1745C12.069 10.3631 12.469 9.38592 12.469 8.24306C12.469 7.11163 12.069 6.14592 11.269 5.34592C10.4804 4.53449 9.5204 4.12877 8.38897 4.12877C7.26897 4.12877 6.30897 4.53449 5.50897 5.34592C4.70897 6.14592 4.30897 7.11163 4.30897 8.24306C4.30897 9.38592 4.70897 10.3631 5.50897 11.1745C6.30897 11.9745 7.26897 12.3745 8.38897 12.3745ZM8.38897 13.5059C6.93754 13.5059 5.69182 12.9916 4.65182 11.9631C3.62325 10.9345 3.10897 9.69449 3.10897 8.24306C3.10897 6.79163 3.62325 5.55735 4.65182 4.5402C5.69182 3.51163 6.93754 2.99735 8.38897 2.99735C9.85182 2.99735 11.0975 3.51163 12.1261 4.5402C13.1547 5.55735 13.669 6.79163 13.669 8.24306C13.669 9.69449 13.1547 10.9345 12.1261 11.9631C11.0975 12.9916 9.85182 13.5059 8.38897 13.5059Z\"\n fill=\"white\"\n />\n <path\n d=\"M16.4192 13.4039C16.072 13.4039 15.78 13.2855 15.5433 13.0488C15.3066 12.812 15.1882 12.528 15.1882 12.1965C15.1882 11.8651 15.3066 11.581 15.5433 11.3443C15.78 11.1076 16.072 10.9892 16.4192 10.9892C16.7349 10.9892 17.0111 11.1076 17.2478 11.3443C17.4845 11.581 17.6029 11.8651 17.6029 12.1965C17.6029 12.528 17.4845 12.812 17.2478 13.0488C17.0111 13.2855 16.7349 13.4039 16.4192 13.4039Z\"\n fill=\"#F25F1F\"\n />\n <path\n d=\"M22.7104 9.13449H28.1276L25.4361 2.08877H25.4018L22.7104 9.13449ZM30.9733 13.2145H29.7047L28.5733 10.2831H22.2476L21.1161 13.2145H19.8647L24.8361 0.357346H26.0018L30.9733 13.2145Z\"\n fill=\"white\"\n />\n <path\n d=\"M39.5573 5.84306H38.3744C38.3744 5.35163 38.1459 4.94592 37.6887 4.62592C37.243 4.29449 36.6487 4.12877 35.9059 4.12877C35.1401 4.12877 34.5401 4.26592 34.1059 4.5402C33.6716 4.80306 33.4544 5.15735 33.4544 5.60306C33.4544 6.11735 33.6144 6.51735 33.9344 6.80306C34.2544 7.07735 34.6544 7.24878 35.1344 7.31735C35.6144 7.38592 36.1287 7.47163 36.6773 7.57449C37.2373 7.66592 37.7573 7.7802 38.2373 7.91735C38.7173 8.05449 39.1173 8.3402 39.4373 8.77449C39.7573 9.19735 39.9173 9.76877 39.9173 10.4888C39.9173 11.4373 39.5573 12.1802 38.8373 12.7173C38.1287 13.2431 37.1516 13.5059 35.9059 13.5059C34.7059 13.5059 33.7402 13.2031 33.0087 12.5973C32.2773 11.9802 31.9116 11.1916 31.9116 10.2316H33.0944C33.0944 10.8602 33.3459 11.3745 33.8487 11.7745C34.3516 12.1745 35.0373 12.3745 35.9059 12.3745C36.7973 12.3745 37.4887 12.2088 37.9801 11.8773C38.4716 11.5345 38.7173 11.0545 38.7173 10.4373C38.7173 10.0031 38.5973 9.6602 38.3573 9.40877C38.1173 9.14592 37.8087 8.96306 37.4316 8.8602C37.0544 8.75735 36.6373 8.67735 36.1801 8.6202C35.723 8.56306 35.2602 8.49449 34.7916 8.41449C34.3344 8.32306 33.9173 8.19163 33.5401 8.0202C33.163 7.83735 32.8544 7.55163 32.6144 7.16306C32.3744 6.76306 32.2544 6.25449 32.2544 5.63735C32.2544 4.7802 32.5973 4.12877 33.283 3.68306C33.9802 3.22592 34.8544 2.99735 35.9059 2.99735C36.9916 2.99735 37.8716 3.26592 38.5459 3.80306C39.2201 4.32877 39.5573 5.00877 39.5573 5.84306Z\"\n fill=\"white\"\n />\n <path\n d=\"M48.9323 5.84306H47.7494C47.7494 5.35163 47.5209 4.94592 47.0637 4.62592C46.618 4.29449 46.0237 4.12877 45.2809 4.12877C44.5151 4.12877 43.9151 4.26592 43.4809 4.5402C43.0466 4.80306 42.8294 5.15735 42.8294 5.60306C42.8294 6.11735 42.9894 6.51735 43.3094 6.80306C43.6294 7.07735 44.0294 7.24878 44.5094 7.31735C44.9894 7.38592 45.5037 7.47163 46.0523 7.57449C46.6123 7.66592 47.1323 7.7802 47.6123 7.91735C48.0923 8.05449 48.4923 8.3402 48.8123 8.77449C49.1323 9.19735 49.2923 9.76877 49.2923 10.4888C49.2923 11.4373 48.9323 12.1802 48.2123 12.7173C47.5037 13.2431 46.5266 13.5059 45.2809 13.5059C44.0809 13.5059 43.1151 13.2031 42.3837 12.5973C41.6523 11.9802 41.2866 11.1916 41.2866 10.2316H42.4694C42.4694 10.8602 42.7209 11.3745 43.2237 11.7745C43.7266 12.1745 44.4123 12.3745 45.2809 12.3745C46.1723 12.3745 46.8637 12.2088 47.3551 11.8773C47.8466 11.5345 48.0923 11.0545 48.0923 10.4373C48.0923 10.0031 47.9723 9.6602 47.7323 9.40877C47.4923 9.14592 47.1837 8.96306 46.8066 8.8602C46.4294 8.75735 46.0123 8.67735 45.5551 8.6202C45.098 8.56306 44.6352 8.49449 44.1666 8.41449C43.7094 8.32306 43.2923 8.19163 42.9151 8.0202C42.538 7.83735 42.2294 7.55163 41.9894 7.16306C41.7494 6.76306 41.6294 6.25449 41.6294 5.63735C41.6294 4.7802 41.9723 4.12877 42.658 3.68306C43.3551 3.22592 44.2294 2.99735 45.2809 2.99735C46.3666 2.99735 47.2466 3.26592 47.9209 3.80306C48.5951 4.32877 48.9323 5.00877 48.9323 5.84306Z\"\n fill=\"white\"\n />\n <path\n d=\"M51.0044 3.28877H52.1701V13.2145H51.0044V3.28877ZM51.0387 1.38592C50.8901 1.22592 50.8159 1.04306 50.8159 0.837346C50.8159 0.631632 50.8901 0.454489 51.0387 0.305918C51.1987 0.145918 51.3816 0.065918 51.5873 0.065918C51.793 0.065918 51.9701 0.145918 52.1187 0.305918C52.2787 0.454489 52.3587 0.631632 52.3587 0.837346C52.3587 1.04306 52.2787 1.22592 52.1187 1.38592C51.9701 1.53449 51.793 1.60877 51.5873 1.60877C51.3816 1.60877 51.1987 1.53449 51.0387 1.38592Z\"\n fill=\"white\"\n />\n <path\n d=\"M61.5383 5.84306H60.3555C60.3555 5.35163 60.1269 4.94592 59.6697 4.62592C59.224 4.29449 58.6297 4.12877 57.8869 4.12877C57.1212 4.12877 56.5212 4.26592 56.0869 4.5402C55.6526 4.80306 55.4355 5.15735 55.4355 5.60306C55.4355 6.11735 55.5955 6.51735 55.9155 6.80306C56.2355 7.07735 56.6355 7.24878 57.1155 7.31735C57.5955 7.38592 58.1097 7.47163 58.6583 7.57449C59.2183 7.66592 59.7383 7.7802 60.2183 7.91735C60.6983 8.05449 61.0983 8.3402 61.4183 8.77449C61.7383 9.19735 61.8983 9.76877 61.8983 10.4888C61.8983 11.4373 61.5383 12.1802 60.8183 12.7173C60.1097 13.2431 59.1326 13.5059 57.8869 13.5059C56.6869 13.5059 55.7212 13.2031 54.9897 12.5973C54.2583 11.9802 53.8926 11.1916 53.8926 10.2316H55.0755C55.0755 10.8602 55.3269 11.3745 55.8297 11.7745C56.3326 12.1745 57.0183 12.3745 57.8869 12.3745C58.7783 12.3745 59.4697 12.2088 59.9612 11.8773C60.4526 11.5345 60.6983 11.0545 60.6983 10.4373C60.6983 10.0031 60.5783 9.6602 60.3383 9.40877C60.0983 9.14592 59.7897 8.96306 59.4126 8.8602C59.0355 8.75735 58.6183 8.67735 58.1612 8.6202C57.704 8.56306 57.2412 8.49449 56.7726 8.41449C56.3155 8.32306 55.8983 8.19163 55.5212 8.0202C55.144 7.83735 54.8355 7.55163 54.5955 7.16306C54.3555 6.76306 54.2355 6.25449 54.2355 5.63735C54.2355 4.7802 54.5783 4.12877 55.264 3.68306C55.9612 3.22592 56.8355 2.99735 57.8869 2.99735C58.9726 2.99735 59.8526 3.26592 60.5269 3.80306C61.2012 4.32877 61.5383 5.00877 61.5383 5.84306Z\"\n fill=\"white\"\n />\n <path\n d=\"M65.2562 4.45449V10.8831C65.2562 11.2716 65.3647 11.5631 65.5819 11.7573C65.799 11.9516 66.079 12.0488 66.4219 12.0488H67.3133V13.2145H66.4219C65.759 13.2145 65.2047 13.0031 64.759 12.5802C64.3133 12.1573 64.0905 11.5916 64.0905 10.8831V4.45449H62.9247V3.28877H64.0905V1.04306H65.2562V3.28877H67.3133V4.45449H65.2562Z\"\n fill=\"white\"\n />\n </svg>\n }\n\n @if (!isDarkMode()) {\n <svg\n width=\"68\"\n height=\"14\"\n viewBox=\"0 0 121 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M0.336735 5.7551H2.41837V23.4796H0.336735V5.7551ZM0.397959 2.35714C0.132653 2.07143 0 1.7449 0 1.37755C0 1.0102 0.132653 0.693878 0.397959 0.428571C0.683674 0.142857 1.0102 0 1.37755 0C1.7449 0 2.06122 0.142857 2.32653 0.428571C2.61225 0.693878 2.7551 1.0102 2.7551 1.37755C2.7551 1.7449 2.61225 2.07143 2.32653 2.35714C2.06122 2.62245 1.7449 2.7551 1.37755 2.7551C1.0102 2.7551 0.683674 2.62245 0.397959 2.35714Z\"\n fill=\"#26272A\"\n />\n <path\n d=\"M14.9228 21.9796C16.9432 21.9796 18.6574 21.2653 20.0656 19.8367C21.4942 18.3878 22.2085 16.6429 22.2085 14.602C22.2085 12.5816 21.4942 10.8571 20.0656 9.42857C18.6574 7.97959 16.9432 7.2551 14.9228 7.2551C12.9228 7.2551 11.2085 7.97959 9.77989 9.42857C8.35132 10.8571 7.63704 12.5816 7.63704 14.602C7.63704 16.6429 8.35132 18.3878 9.77989 19.8367C11.2085 21.2653 12.9228 21.9796 14.9228 21.9796ZM14.9228 24C12.3309 24 10.1064 23.0816 8.24928 21.2449C6.41255 19.4082 5.49418 17.1939 5.49418 14.602C5.49418 12.0102 6.41255 9.80612 8.24928 7.98979C10.1064 6.15306 12.3309 5.23469 14.9228 5.23469C17.535 5.23469 19.7595 6.15306 21.5962 7.98979C23.433 9.80612 24.3513 12.0102 24.3513 14.602C24.3513 17.1939 23.433 19.4082 21.5962 21.2449C19.7595 23.0816 17.535 24 14.9228 24Z\"\n fill=\"#26272A\"\n />\n <path\n d=\"M29.2625 23.8178C28.6425 23.8178 28.1211 23.6064 27.6984 23.1837C27.2756 22.7609 27.0643 22.2536 27.0643 21.6618C27.0643 21.07 27.2756 20.5627 27.6984 20.1399C28.1211 19.7172 28.6425 19.5058 29.2625 19.5058C29.8262 19.5058 30.3194 19.7172 30.7421 20.1399C31.1648 20.5627 31.3762 21.07 31.3762 21.6618C31.3762 22.2536 31.1648 22.7609 30.7421 23.1837C30.3194 23.6064 29.8262 23.8178 29.2625 23.8178Z\"\n fill=\"#F25F1F\"\n />\n <path\n d=\"M40.4968 16.1939H50.1702L45.3641 3.61224H45.3029L40.4968 16.1939ZM55.2519 23.4796H52.9866L50.9662 18.2449H39.6702L37.6498 23.4796H35.4151L44.2927 0.520407H46.3743L55.2519 23.4796Z\"\n fill=\"#26272A\"\n />\n <path\n d=\"M70.5805 10.3163H68.4682C68.4682 9.43878 68.0601 8.71428 67.2437 8.14286C66.4478 7.55102 65.3866 7.2551 64.0601 7.2551C62.6927 7.2551 61.6213 7.5 60.8458 7.98979C60.0703 8.45918 59.6825 9.09184 59.6825 9.88775C59.6825 10.8061 59.9682 11.5204 60.5397 12.0306C61.1111 12.5204 61.8254 12.8265 62.6825 12.949C63.5397 13.0714 64.458 13.2245 65.4376 13.4082C66.4376 13.5714 67.3662 13.7755 68.2233 14.0204C69.0805 14.2653 69.7948 14.7755 70.3662 15.551C70.9376 16.3061 71.2233 17.3265 71.2233 18.6122C71.2233 20.3061 70.5805 21.6327 69.2948 22.5918C68.0295 23.5306 66.2846 24 64.0601 24C61.9172 24 60.1927 23.4592 58.8866 22.3776C57.5805 21.2755 56.9274 19.8673 56.9274 18.1531H59.0397C59.0397 19.2755 59.4886 20.1939 60.3866 20.9082C61.2846 21.6224 62.509 21.9796 64.0601 21.9796C65.6519 21.9796 66.8866 21.6837 67.7642 21.0918C68.6417 20.4796 69.0805 19.6224 69.0805 18.5204C69.0805 17.7449 68.8662 17.1327 68.4376 16.6837C68.009 16.2143 67.458 15.8878 66.7846 15.7041C66.1111 15.5204 65.3662 15.3776 64.5499 15.2755C63.7335 15.1735 62.907 15.051 62.0703 14.9082C61.254 14.7449 60.5091 14.5102 59.8356 14.2041C59.1621 13.8776 58.6111 13.3673 58.1825 12.6735C57.754 11.9592 57.5397 11.051 57.5397 9.94898C57.5397 8.41837 58.1519 7.2551 59.3764 6.45918C60.6213 5.64286 62.1825 5.23469 64.0601 5.23469C65.9988 5.23469 67.5703 5.71429 68.7744 6.67347C69.9784 7.61224 70.5805 8.82653 70.5805 10.3163Z\"\n fill=\"#26272A\"\n />\n <path\n d=\"M87.3216 10.3163H85.2093C85.2093 9.43878 84.8011 8.71428 83.9848 8.14286C83.1889 7.55102 82.1277 7.2551 80.8011 7.2551C79.4338 7.2551 78.3624 7.5 77.5869 7.98979C76.8113 8.45918 76.4236 9.09184 76.4236 9.88775C76.4236 10.8061 76.7093 11.5204 77.2807 12.0306C77.8522 12.5204 78.5664 12.8265 79.4236 12.949C80.2807 13.0714 81.1991 13.2245 82.1787 13.4082C83.1787 13.5714 84.1073 13.7755 84.9644 14.0204C85.8216 14.2653 86.5358 14.7755 87.1073 15.551C87.6787 16.3061 87.9644 17.3265 87.9644 18.6122C87.9644 20.3061 87.3216 21.6327 86.0358 22.5918C84.7705 23.5306 83.0256 24 80.8011 24C78.6583 24 76.9338 23.4592 75.6277 22.3776C74.3215 21.2755 73.6685 19.8673 73.6685 18.1531H75.7807C75.7807 19.2755 76.2297 20.1939 77.1277 20.9082C78.0256 21.6224 79.2501 21.9796 80.8011 21.9796C82.393 21.9796 83.6277 21.6837 84.5052 21.0918C85.3828 20.4796 85.8215 19.6224 85.8215 18.5204C85.8215 17.7449 85.6073 17.1327 85.1787 16.6837C84.7501 16.2143 84.1991 15.8878 83.5256 15.7041C82.8522 15.5204 82.1073 15.3776 81.2909 15.2755C80.4746 15.1735 79.6481 15.051 78.8113 14.9082C77.995 14.7449 77.2501 14.5102 76.5767 14.2041C75.9032 13.8776 75.3522 13.3673 74.9236 12.6735C74.495 11.9592 74.2807 11.051 74.2807 9.94898C74.2807 8.41837 74.893 7.2551 76.1175 6.45918C77.3624 5.64286 78.9236 5.23469 80.8011 5.23469C82.7399 5.23469 84.3113 5.71429 85.5154 6.67347C86.7195 7.61224 87.3216 8.82653 87.3216 10.3163Z\"\n fill=\"#26272A\"\n />\n <path\n d=\"M91.0218 5.7551H93.1034V23.4796H91.0218V5.7551ZM91.083 2.35714C90.8177 2.07143 90.6851 1.7449 90.6851 1.37755C90.6851 1.0102 90.8177 0.693878 91.083 0.428571C91.3687 0.142857 91.6953 0 92.0626 0C92.43 0 92.7463 0.142857 93.0116 0.428571C93.2973 0.693878 93.4402 1.0102 93.4402 1.37755C93.4402 1.7449 93.2973 2.07143 93.0116 2.35714C92.7463 2.62245 92.43 2.7551 92.0626 2.7551C91.6953 2.7551 91.3687 2.62245 91.083 2.35714Z\"\n fill=\"#26272A\"\n />\n <path\n d=\"M109.832 10.3163H107.72C107.72 9.43878 107.312 8.71428 106.496 8.14286C105.7 7.55102 104.638 7.2551 103.312 7.2551C101.945 7.2551 100.873 7.5 100.098 7.98979C99.3221 8.45918 98.9343 9.09184 98.9343 9.88775C98.9343 10.8061 99.2201 11.5204 99.7915 12.0306C100.363 12.5204 101.077 12.8265 101.934 12.949C102.791 13.0714 103.71 13.2245 104.689 13.4082C105.689 13.5714 106.618 13.7755 107.475 14.0204C108.332 14.2653 109.047 14.7755 109.618 15.551C110.189 16.3061 110.475 17.3265 110.475 18.6122C110.475 20.3061 109.832 21.6327 108.547 22.5918C107.281 23.5306 105.536 24 103.312 24C101.169 24 99.4446 23.4592 98.1384 22.3776C96.8323 21.2755 96.1792 19.8673 96.1792 18.1531H98.2915C98.2915 19.2755 98.7405 20.1939 99.6384 20.9082C100.536 21.6224 101.761 21.9796 103.312 21.9796C104.904 21.9796 106.138 21.6837 107.016 21.0918C107.894 20.4796 108.332 19.6224 108.332 18.5204C108.332 17.7449 108.118 17.1327 107.689 16.6837C107.261 16.2143 106.71 15.8878 106.036 15.7041C105.363 15.5204 104.618 15.3776 103.802 15.2755C102.985 15.1735 102.159 15.051 101.322 14.9082C100.506 14.7449 99.7609 14.5102 99.0874 14.2041C98.4139 13.8776 97.8629 13.3673 97.4343 12.6735C97.0058 11.9592 96.7915 11.051 96.7915 9.94898C96.7915 8.41837 97.4037 7.2551 98.6282 6.45918C99.8731 5.64286 101.434 5.23469 103.312 5.23469C105.251 5.23469 106.822 5.71429 108.026 6.67347C109.23 7.61224 109.832 8.82653 109.832 10.3163Z\"\n fill=\"#26272A\"\n />\n <path\n d=\"M116.471 7.83673V19.3163C116.471 20.0102 116.665 20.5306 117.053 20.8776C117.441 21.2245 117.941 21.398 118.553 21.398H120.145V23.4796H118.553C117.369 23.4796 116.38 23.102 115.584 22.3469C114.788 21.5918 114.39 20.5816 114.39 19.3163V7.83673H112.308V5.7551H114.39V1.7449H116.471V5.7551H120.145V7.83673H116.471Z\"\n fill=\"#26272A\"\n />\n </svg>\n }\n </div>\n\n <!-- Thread History List Container -->\n <thread-history-list class=\"flex flex-1 flex-col p-2 overflow-y-scroll custom-scrollbar custom-scrollbar-no-gutter\"></thread-history-list>\n\n <!-- User Profile Section -->\n @if (hasUsername()) {\n <div\n class=\"thread-history__user-profile\"\n [ngClass]=\"{\n 'flex items-center gap-3 px-4 py-3 mt-auto border-t border-border-default': true,\n }\"\n >\n <!-- User Avatar -->\n <div\n class=\"thread-history__user-avatar\"\n [ngClass]=\"{\n 'flex items-center justify-center w-6 h-6 rounded-full bg-app-accent-color-1 text-white text-neutrals-0 font-weight-600 text-[12px] flex-shrink-0': true,\n }\"\n >\n {{ userInitial() }}\n </div>\n\n <!-- User Info -->\n <div\n class=\"thread-history__user-info\"\n [ngClass]=\"{\n 'flex flex-col flex-1 min-w-0': true,\n }\"\n >\n <span\n [ngClass]=\"{\n 'text-text-default text-[12px] leading-[12px] font-weight-400 truncate': true,\n }\"\n [attr.title]=\"username()\"\n >\n {{ username() }}\n </span>\n </div>\n </div>\n }\n\n <!-- Thread History Footer TODO: Revert and implement once we decide to support chat model picking -->\n <!-- <div class=\"flex items-center px-4 py-2 border-t border-proto-border-default\">\n <select\n class=\"p-2 border border-proto-border-default rounded text-proto-text-default bg-proto-background-light w-full\"\n >\n <option value=\"gpt-4\">GPT-4</option>\n <option value=\"gpt-3.5-turbo\">GPT-3.5 Turbo</option>\n </select>\n </div> -->\n</div>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: ThreadHistoryListComponent, selector: "thread-history-list" }, { kind: "component", type: AppIconComponent, selector: "app-icon", inputs: ["variant", "size", "iconFill", "disabledIconFill", "hoverIconFill", "isDisabled", "isWrapped", "title", "customIcon", "backgroundColor", "hoverBackgroundShape", "hoverBackgroundColor", "isHoveredExternal", "tabIndex"], outputs: ["onClick"] }] });
|
|
6205
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.22", type: ThreadHistoryComponent, isStandalone: true, selector: "thread-history", ngImport: i0, template: "<div\n data-testid=\"thread-history-panel\"\n class=\"absolute left-0 top-0 md:static md:left-auto md:top-auto flex flex-col w-full h-full bg-app-background-secondary z-10 md:w-[368px] md:min-w-[368px] md:max-w-[368px] flex-shrink-0\"\n>\n <!-- Thread History Header -->\n <div class=\"flex items-center gap-4 px-4 py-2\">\n <!-- Thread Header Title Section -->\n <app-icon [variant]=\"APP_ICON_VARIANTS.THREAD_HISTORY\" (click)=\"hideThreadHistory()\" />\n\n <!-- IO.Assist Logo -->\n @if (isDarkMode()) {\n <svg\n width=\"68\"\n height=\"14\"\n viewBox=\"0 0 68 14\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M0.220798 3.28877H1.38651V13.2145H0.220798V3.28877ZM0.255084 1.38592C0.106512 1.22592 0.0322266 1.04306 0.0322266 0.837346C0.0322266 0.631632 0.106512 0.454489 0.255084 0.305918C0.415084 0.145918 0.597941 0.065918 0.803655 0.065918C1.00937 0.065918 1.18651 0.145918 1.33508 0.305918C1.49508 0.454489 1.57508 0.631632 1.57508 0.837346C1.57508 1.04306 1.49508 1.22592 1.33508 1.38592C1.18651 1.53449 1.00937 1.60877 0.803655 1.60877C0.597941 1.60877 0.415084 1.53449 0.255084 1.38592Z\"\n fill=\"white\"\n />\n <path\n d=\"M8.38897 12.3745C9.5204 12.3745 10.4804 11.9745 11.269 11.1745C12.069 10.3631 12.469 9.38592 12.469 8.24306C12.469 7.11163 12.069 6.14592 11.269 5.34592C10.4804 4.53449 9.5204 4.12877 8.38897 4.12877C7.26897 4.12877 6.30897 4.53449 5.50897 5.34592C4.70897 6.14592 4.30897 7.11163 4.30897 8.24306C4.30897 9.38592 4.70897 10.3631 5.50897 11.1745C6.30897 11.9745 7.26897 12.3745 8.38897 12.3745ZM8.38897 13.5059C6.93754 13.5059 5.69182 12.9916 4.65182 11.9631C3.62325 10.9345 3.10897 9.69449 3.10897 8.24306C3.10897 6.79163 3.62325 5.55735 4.65182 4.5402C5.69182 3.51163 6.93754 2.99735 8.38897 2.99735C9.85182 2.99735 11.0975 3.51163 12.1261 4.5402C13.1547 5.55735 13.669 6.79163 13.669 8.24306C13.669 9.69449 13.1547 10.9345 12.1261 11.9631C11.0975 12.9916 9.85182 13.5059 8.38897 13.5059Z\"\n fill=\"white\"\n />\n <path\n d=\"M16.4192 13.4039C16.072 13.4039 15.78 13.2855 15.5433 13.0488C15.3066 12.812 15.1882 12.528 15.1882 12.1965C15.1882 11.8651 15.3066 11.581 15.5433 11.3443C15.78 11.1076 16.072 10.9892 16.4192 10.9892C16.7349 10.9892 17.0111 11.1076 17.2478 11.3443C17.4845 11.581 17.6029 11.8651 17.6029 12.1965C17.6029 12.528 17.4845 12.812 17.2478 13.0488C17.0111 13.2855 16.7349 13.4039 16.4192 13.4039Z\"\n fill=\"#F25F1F\"\n />\n <path\n d=\"M22.7104 9.13449H28.1276L25.4361 2.08877H25.4018L22.7104 9.13449ZM30.9733 13.2145H29.7047L28.5733 10.2831H22.2476L21.1161 13.2145H19.8647L24.8361 0.357346H26.0018L30.9733 13.2145Z\"\n fill=\"white\"\n />\n <path\n d=\"M39.5573 5.84306H38.3744C38.3744 5.35163 38.1459 4.94592 37.6887 4.62592C37.243 4.29449 36.6487 4.12877 35.9059 4.12877C35.1401 4.12877 34.5401 4.26592 34.1059 4.5402C33.6716 4.80306 33.4544 5.15735 33.4544 5.60306C33.4544 6.11735 33.6144 6.51735 33.9344 6.80306C34.2544 7.07735 34.6544 7.24878 35.1344 7.31735C35.6144 7.38592 36.1287 7.47163 36.6773 7.57449C37.2373 7.66592 37.7573 7.7802 38.2373 7.91735C38.7173 8.05449 39.1173 8.3402 39.4373 8.77449C39.7573 9.19735 39.9173 9.76877 39.9173 10.4888C39.9173 11.4373 39.5573 12.1802 38.8373 12.7173C38.1287 13.2431 37.1516 13.5059 35.9059 13.5059C34.7059 13.5059 33.7402 13.2031 33.0087 12.5973C32.2773 11.9802 31.9116 11.1916 31.9116 10.2316H33.0944C33.0944 10.8602 33.3459 11.3745 33.8487 11.7745C34.3516 12.1745 35.0373 12.3745 35.9059 12.3745C36.7973 12.3745 37.4887 12.2088 37.9801 11.8773C38.4716 11.5345 38.7173 11.0545 38.7173 10.4373C38.7173 10.0031 38.5973 9.6602 38.3573 9.40877C38.1173 9.14592 37.8087 8.96306 37.4316 8.8602C37.0544 8.75735 36.6373 8.67735 36.1801 8.6202C35.723 8.56306 35.2602 8.49449 34.7916 8.41449C34.3344 8.32306 33.9173 8.19163 33.5401 8.0202C33.163 7.83735 32.8544 7.55163 32.6144 7.16306C32.3744 6.76306 32.2544 6.25449 32.2544 5.63735C32.2544 4.7802 32.5973 4.12877 33.283 3.68306C33.9802 3.22592 34.8544 2.99735 35.9059 2.99735C36.9916 2.99735 37.8716 3.26592 38.5459 3.80306C39.2201 4.32877 39.5573 5.00877 39.5573 5.84306Z\"\n fill=\"white\"\n />\n <path\n d=\"M48.9323 5.84306H47.7494C47.7494 5.35163 47.5209 4.94592 47.0637 4.62592C46.618 4.29449 46.0237 4.12877 45.2809 4.12877C44.5151 4.12877 43.9151 4.26592 43.4809 4.5402C43.0466 4.80306 42.8294 5.15735 42.8294 5.60306C42.8294 6.11735 42.9894 6.51735 43.3094 6.80306C43.6294 7.07735 44.0294 7.24878 44.5094 7.31735C44.9894 7.38592 45.5037 7.47163 46.0523 7.57449C46.6123 7.66592 47.1323 7.7802 47.6123 7.91735C48.0923 8.05449 48.4923 8.3402 48.8123 8.77449C49.1323 9.19735 49.2923 9.76877 49.2923 10.4888C49.2923 11.4373 48.9323 12.1802 48.2123 12.7173C47.5037 13.2431 46.5266 13.5059 45.2809 13.5059C44.0809 13.5059 43.1151 13.2031 42.3837 12.5973C41.6523 11.9802 41.2866 11.1916 41.2866 10.2316H42.4694C42.4694 10.8602 42.7209 11.3745 43.2237 11.7745C43.7266 12.1745 44.4123 12.3745 45.2809 12.3745C46.1723 12.3745 46.8637 12.2088 47.3551 11.8773C47.8466 11.5345 48.0923 11.0545 48.0923 10.4373C48.0923 10.0031 47.9723 9.6602 47.7323 9.40877C47.4923 9.14592 47.1837 8.96306 46.8066 8.8602C46.4294 8.75735 46.0123 8.67735 45.5551 8.6202C45.098 8.56306 44.6352 8.49449 44.1666 8.41449C43.7094 8.32306 43.2923 8.19163 42.9151 8.0202C42.538 7.83735 42.2294 7.55163 41.9894 7.16306C41.7494 6.76306 41.6294 6.25449 41.6294 5.63735C41.6294 4.7802 41.9723 4.12877 42.658 3.68306C43.3551 3.22592 44.2294 2.99735 45.2809 2.99735C46.3666 2.99735 47.2466 3.26592 47.9209 3.80306C48.5951 4.32877 48.9323 5.00877 48.9323 5.84306Z\"\n fill=\"white\"\n />\n <path\n d=\"M51.0044 3.28877H52.1701V13.2145H51.0044V3.28877ZM51.0387 1.38592C50.8901 1.22592 50.8159 1.04306 50.8159 0.837346C50.8159 0.631632 50.8901 0.454489 51.0387 0.305918C51.1987 0.145918 51.3816 0.065918 51.5873 0.065918C51.793 0.065918 51.9701 0.145918 52.1187 0.305918C52.2787 0.454489 52.3587 0.631632 52.3587 0.837346C52.3587 1.04306 52.2787 1.22592 52.1187 1.38592C51.9701 1.53449 51.793 1.60877 51.5873 1.60877C51.3816 1.60877 51.1987 1.53449 51.0387 1.38592Z\"\n fill=\"white\"\n />\n <path\n d=\"M61.5383 5.84306H60.3555C60.3555 5.35163 60.1269 4.94592 59.6697 4.62592C59.224 4.29449 58.6297 4.12877 57.8869 4.12877C57.1212 4.12877 56.5212 4.26592 56.0869 4.5402C55.6526 4.80306 55.4355 5.15735 55.4355 5.60306C55.4355 6.11735 55.5955 6.51735 55.9155 6.80306C56.2355 7.07735 56.6355 7.24878 57.1155 7.31735C57.5955 7.38592 58.1097 7.47163 58.6583 7.57449C59.2183 7.66592 59.7383 7.7802 60.2183 7.91735C60.6983 8.05449 61.0983 8.3402 61.4183 8.77449C61.7383 9.19735 61.8983 9.76877 61.8983 10.4888C61.8983 11.4373 61.5383 12.1802 60.8183 12.7173C60.1097 13.2431 59.1326 13.5059 57.8869 13.5059C56.6869 13.5059 55.7212 13.2031 54.9897 12.5973C54.2583 11.9802 53.8926 11.1916 53.8926 10.2316H55.0755C55.0755 10.8602 55.3269 11.3745 55.8297 11.7745C56.3326 12.1745 57.0183 12.3745 57.8869 12.3745C58.7783 12.3745 59.4697 12.2088 59.9612 11.8773C60.4526 11.5345 60.6983 11.0545 60.6983 10.4373C60.6983 10.0031 60.5783 9.6602 60.3383 9.40877C60.0983 9.14592 59.7897 8.96306 59.4126 8.8602C59.0355 8.75735 58.6183 8.67735 58.1612 8.6202C57.704 8.56306 57.2412 8.49449 56.7726 8.41449C56.3155 8.32306 55.8983 8.19163 55.5212 8.0202C55.144 7.83735 54.8355 7.55163 54.5955 7.16306C54.3555 6.76306 54.2355 6.25449 54.2355 5.63735C54.2355 4.7802 54.5783 4.12877 55.264 3.68306C55.9612 3.22592 56.8355 2.99735 57.8869 2.99735C58.9726 2.99735 59.8526 3.26592 60.5269 3.80306C61.2012 4.32877 61.5383 5.00877 61.5383 5.84306Z\"\n fill=\"white\"\n />\n <path\n d=\"M65.2562 4.45449V10.8831C65.2562 11.2716 65.3647 11.5631 65.5819 11.7573C65.799 11.9516 66.079 12.0488 66.4219 12.0488H67.3133V13.2145H66.4219C65.759 13.2145 65.2047 13.0031 64.759 12.5802C64.3133 12.1573 64.0905 11.5916 64.0905 10.8831V4.45449H62.9247V3.28877H64.0905V1.04306H65.2562V3.28877H67.3133V4.45449H65.2562Z\"\n fill=\"white\"\n />\n </svg>\n }\n\n @if (!isDarkMode()) {\n <svg\n width=\"68\"\n height=\"14\"\n viewBox=\"0 0 121 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M0.336735 5.7551H2.41837V23.4796H0.336735V5.7551ZM0.397959 2.35714C0.132653 2.07143 0 1.7449 0 1.37755C0 1.0102 0.132653 0.693878 0.397959 0.428571C0.683674 0.142857 1.0102 0 1.37755 0C1.7449 0 2.06122 0.142857 2.32653 0.428571C2.61225 0.693878 2.7551 1.0102 2.7551 1.37755C2.7551 1.7449 2.61225 2.07143 2.32653 2.35714C2.06122 2.62245 1.7449 2.7551 1.37755 2.7551C1.0102 2.7551 0.683674 2.62245 0.397959 2.35714Z\"\n fill=\"#26272A\"\n />\n <path\n d=\"M14.9228 21.9796C16.9432 21.9796 18.6574 21.2653 20.0656 19.8367C21.4942 18.3878 22.2085 16.6429 22.2085 14.602C22.2085 12.5816 21.4942 10.8571 20.0656 9.42857C18.6574 7.97959 16.9432 7.2551 14.9228 7.2551C12.9228 7.2551 11.2085 7.97959 9.77989 9.42857C8.35132 10.8571 7.63704 12.5816 7.63704 14.602C7.63704 16.6429 8.35132 18.3878 9.77989 19.8367C11.2085 21.2653 12.9228 21.9796 14.9228 21.9796ZM14.9228 24C12.3309 24 10.1064 23.0816 8.24928 21.2449C6.41255 19.4082 5.49418 17.1939 5.49418 14.602C5.49418 12.0102 6.41255 9.80612 8.24928 7.98979C10.1064 6.15306 12.3309 5.23469 14.9228 5.23469C17.535 5.23469 19.7595 6.15306 21.5962 7.98979C23.433 9.80612 24.3513 12.0102 24.3513 14.602C24.3513 17.1939 23.433 19.4082 21.5962 21.2449C19.7595 23.0816 17.535 24 14.9228 24Z\"\n fill=\"#26272A\"\n />\n <path\n d=\"M29.2625 23.8178C28.6425 23.8178 28.1211 23.6064 27.6984 23.1837C27.2756 22.7609 27.0643 22.2536 27.0643 21.6618C27.0643 21.07 27.2756 20.5627 27.6984 20.1399C28.1211 19.7172 28.6425 19.5058 29.2625 19.5058C29.8262 19.5058 30.3194 19.7172 30.7421 20.1399C31.1648 20.5627 31.3762 21.07 31.3762 21.6618C31.3762 22.2536 31.1648 22.7609 30.7421 23.1837C30.3194 23.6064 29.8262 23.8178 29.2625 23.8178Z\"\n fill=\"#F25F1F\"\n />\n <path\n d=\"M40.4968 16.1939H50.1702L45.3641 3.61224H45.3029L40.4968 16.1939ZM55.2519 23.4796H52.9866L50.9662 18.2449H39.6702L37.6498 23.4796H35.4151L44.2927 0.520407H46.3743L55.2519 23.4796Z\"\n fill=\"#26272A\"\n />\n <path\n d=\"M70.5805 10.3163H68.4682C68.4682 9.43878 68.0601 8.71428 67.2437 8.14286C66.4478 7.55102 65.3866 7.2551 64.0601 7.2551C62.6927 7.2551 61.6213 7.5 60.8458 7.98979C60.0703 8.45918 59.6825 9.09184 59.6825 9.88775C59.6825 10.8061 59.9682 11.5204 60.5397 12.0306C61.1111 12.5204 61.8254 12.8265 62.6825 12.949C63.5397 13.0714 64.458 13.2245 65.4376 13.4082C66.4376 13.5714 67.3662 13.7755 68.2233 14.0204C69.0805 14.2653 69.7948 14.7755 70.3662 15.551C70.9376 16.3061 71.2233 17.3265 71.2233 18.6122C71.2233 20.3061 70.5805 21.6327 69.2948 22.5918C68.0295 23.5306 66.2846 24 64.0601 24C61.9172 24 60.1927 23.4592 58.8866 22.3776C57.5805 21.2755 56.9274 19.8673 56.9274 18.1531H59.0397C59.0397 19.2755 59.4886 20.1939 60.3866 20.9082C61.2846 21.6224 62.509 21.9796 64.0601 21.9796C65.6519 21.9796 66.8866 21.6837 67.7642 21.0918C68.6417 20.4796 69.0805 19.6224 69.0805 18.5204C69.0805 17.7449 68.8662 17.1327 68.4376 16.6837C68.009 16.2143 67.458 15.8878 66.7846 15.7041C66.1111 15.5204 65.3662 15.3776 64.5499 15.2755C63.7335 15.1735 62.907 15.051 62.0703 14.9082C61.254 14.7449 60.5091 14.5102 59.8356 14.2041C59.1621 13.8776 58.6111 13.3673 58.1825 12.6735C57.754 11.9592 57.5397 11.051 57.5397 9.94898C57.5397 8.41837 58.1519 7.2551 59.3764 6.45918C60.6213 5.64286 62.1825 5.23469 64.0601 5.23469C65.9988 5.23469 67.5703 5.71429 68.7744 6.67347C69.9784 7.61224 70.5805 8.82653 70.5805 10.3163Z\"\n fill=\"#26272A\"\n />\n <path\n d=\"M87.3216 10.3163H85.2093C85.2093 9.43878 84.8011 8.71428 83.9848 8.14286C83.1889 7.55102 82.1277 7.2551 80.8011 7.2551C79.4338 7.2551 78.3624 7.5 77.5869 7.98979C76.8113 8.45918 76.4236 9.09184 76.4236 9.88775C76.4236 10.8061 76.7093 11.5204 77.2807 12.0306C77.8522 12.5204 78.5664 12.8265 79.4236 12.949C80.2807 13.0714 81.1991 13.2245 82.1787 13.4082C83.1787 13.5714 84.1073 13.7755 84.9644 14.0204C85.8216 14.2653 86.5358 14.7755 87.1073 15.551C87.6787 16.3061 87.9644 17.3265 87.9644 18.6122C87.9644 20.3061 87.3216 21.6327 86.0358 22.5918C84.7705 23.5306 83.0256 24 80.8011 24C78.6583 24 76.9338 23.4592 75.6277 22.3776C74.3215 21.2755 73.6685 19.8673 73.6685 18.1531H75.7807C75.7807 19.2755 76.2297 20.1939 77.1277 20.9082C78.0256 21.6224 79.2501 21.9796 80.8011 21.9796C82.393 21.9796 83.6277 21.6837 84.5052 21.0918C85.3828 20.4796 85.8215 19.6224 85.8215 18.5204C85.8215 17.7449 85.6073 17.1327 85.1787 16.6837C84.7501 16.2143 84.1991 15.8878 83.5256 15.7041C82.8522 15.5204 82.1073 15.3776 81.2909 15.2755C80.4746 15.1735 79.6481 15.051 78.8113 14.9082C77.995 14.7449 77.2501 14.5102 76.5767 14.2041C75.9032 13.8776 75.3522 13.3673 74.9236 12.6735C74.495 11.9592 74.2807 11.051 74.2807 9.94898C74.2807 8.41837 74.893 7.2551 76.1175 6.45918C77.3624 5.64286 78.9236 5.23469 80.8011 5.23469C82.7399 5.23469 84.3113 5.71429 85.5154 6.67347C86.7195 7.61224 87.3216 8.82653 87.3216 10.3163Z\"\n fill=\"#26272A\"\n />\n <path\n d=\"M91.0218 5.7551H93.1034V23.4796H91.0218V5.7551ZM91.083 2.35714C90.8177 2.07143 90.6851 1.7449 90.6851 1.37755C90.6851 1.0102 90.8177 0.693878 91.083 0.428571C91.3687 0.142857 91.6953 0 92.0626 0C92.43 0 92.7463 0.142857 93.0116 0.428571C93.2973 0.693878 93.4402 1.0102 93.4402 1.37755C93.4402 1.7449 93.2973 2.07143 93.0116 2.35714C92.7463 2.62245 92.43 2.7551 92.0626 2.7551C91.6953 2.7551 91.3687 2.62245 91.083 2.35714Z\"\n fill=\"#26272A\"\n />\n <path\n d=\"M109.832 10.3163H107.72C107.72 9.43878 107.312 8.71428 106.496 8.14286C105.7 7.55102 104.638 7.2551 103.312 7.2551C101.945 7.2551 100.873 7.5 100.098 7.98979C99.3221 8.45918 98.9343 9.09184 98.9343 9.88775C98.9343 10.8061 99.2201 11.5204 99.7915 12.0306C100.363 12.5204 101.077 12.8265 101.934 12.949C102.791 13.0714 103.71 13.2245 104.689 13.4082C105.689 13.5714 106.618 13.7755 107.475 14.0204C108.332 14.2653 109.047 14.7755 109.618 15.551C110.189 16.3061 110.475 17.3265 110.475 18.6122C110.475 20.3061 109.832 21.6327 108.547 22.5918C107.281 23.5306 105.536 24 103.312 24C101.169 24 99.4446 23.4592 98.1384 22.3776C96.8323 21.2755 96.1792 19.8673 96.1792 18.1531H98.2915C98.2915 19.2755 98.7405 20.1939 99.6384 20.9082C100.536 21.6224 101.761 21.9796 103.312 21.9796C104.904 21.9796 106.138 21.6837 107.016 21.0918C107.894 20.4796 108.332 19.6224 108.332 18.5204C108.332 17.7449 108.118 17.1327 107.689 16.6837C107.261 16.2143 106.71 15.8878 106.036 15.7041C105.363 15.5204 104.618 15.3776 103.802 15.2755C102.985 15.1735 102.159 15.051 101.322 14.9082C100.506 14.7449 99.7609 14.5102 99.0874 14.2041C98.4139 13.8776 97.8629 13.3673 97.4343 12.6735C97.0058 11.9592 96.7915 11.051 96.7915 9.94898C96.7915 8.41837 97.4037 7.2551 98.6282 6.45918C99.8731 5.64286 101.434 5.23469 103.312 5.23469C105.251 5.23469 106.822 5.71429 108.026 6.67347C109.23 7.61224 109.832 8.82653 109.832 10.3163Z\"\n fill=\"#26272A\"\n />\n <path\n d=\"M116.471 7.83673V19.3163C116.471 20.0102 116.665 20.5306 117.053 20.8776C117.441 21.2245 117.941 21.398 118.553 21.398H120.145V23.4796H118.553C117.369 23.4796 116.38 23.102 115.584 22.3469C114.788 21.5918 114.39 20.5816 114.39 19.3163V7.83673H112.308V5.7551H114.39V1.7449H116.471V5.7551H120.145V7.83673H116.471Z\"\n fill=\"#26272A\"\n />\n </svg>\n }\n </div>\n\n <!-- Thread History List Container -->\n <thread-history-list class=\"flex flex-1 flex-col p-2 overflow-y-scroll custom-scrollbar custom-scrollbar-no-gutter\"></thread-history-list>\n\n <!-- User Profile Section -->\n @if (hasUsername()) {\n <div\n class=\"thread-history__user-profile\"\n [ngClass]=\"{\n 'flex items-center gap-3 px-4 py-3 mt-auto border-t border-border-default': true,\n }\"\n >\n <!-- User Avatar -->\n <div\n class=\"thread-history__user-avatar\"\n [ngClass]=\"{\n 'flex items-center justify-center w-6 h-6 rounded-full bg-app-accent-color-1 text-white text-neutrals-0 font-weight-600 text-[12px] flex-shrink-0': true,\n }\"\n >\n {{ userInitial() }}\n </div>\n\n <!-- User Info -->\n <div\n class=\"thread-history__user-info\"\n [ngClass]=\"{\n 'flex flex-col flex-1 min-w-0': true,\n }\"\n >\n <span\n [ngClass]=\"{\n 'text-text-default text-[12px] leading-[12px] font-weight-400 truncate': true,\n }\"\n [attr.title]=\"username()\"\n >\n {{ username() }}\n </span>\n </div>\n </div>\n }\n\n <!-- Thread History Footer TODO: Revert and implement once we decide to support chat model picking -->\n <!-- <div class=\"flex items-center px-4 py-2 border-t border-proto-border-default\">\n <select\n class=\"p-2 border border-proto-border-default rounded text-proto-text-default bg-proto-background-light w-full\"\n >\n <option value=\"gpt-4\">GPT-4</option>\n <option value=\"gpt-3.5-turbo\">GPT-3.5 Turbo</option>\n </select>\n </div> -->\n</div>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: ThreadHistoryListComponent, selector: "thread-history-list" }, { kind: "component", type: AppIconComponent, selector: "app-icon", inputs: ["variant", "size", "iconFill", "disabledIconFill", "hoverIconFill", "isDisabled", "isWrapped", "title", "customIcon", "backgroundColor", "hoverBackgroundShape", "hoverBackgroundColor", "isHoveredExternal", "tabIndex"], outputs: ["onClick"] }] });
|
|
6206
6206
|
}
|
|
6207
6207
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.22", ngImport: i0, type: ThreadHistoryComponent, decorators: [{
|
|
6208
6208
|
type: Component,
|
|
6209
|
-
args: [{ selector: 'thread-history', imports: [CommonModule, ThreadHistoryListComponent, AppIconComponent], template: "<div\n class=\"absolute left-0 top-0 md:static md:left-auto md:top-auto flex flex-col w-full h-full bg-app-background-secondary z-10 md:w-[368px] md:min-w-[368px] md:max-w-[368px] flex-shrink-0\"\n>\n <!-- Thread History Header -->\n <div class=\"flex items-center gap-4 px-4 py-2\">\n <!-- Thread Header Title Section -->\n <app-icon [variant]=\"APP_ICON_VARIANTS.THREAD_HISTORY\" (click)=\"hideThreadHistory()\" />\n\n <!-- IO.Assist Logo -->\n @if (isDarkMode()) {\n <svg\n width=\"68\"\n height=\"14\"\n viewBox=\"0 0 68 14\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M0.220798 3.28877H1.38651V13.2145H0.220798V3.28877ZM0.255084 1.38592C0.106512 1.22592 0.0322266 1.04306 0.0322266 0.837346C0.0322266 0.631632 0.106512 0.454489 0.255084 0.305918C0.415084 0.145918 0.597941 0.065918 0.803655 0.065918C1.00937 0.065918 1.18651 0.145918 1.33508 0.305918C1.49508 0.454489 1.57508 0.631632 1.57508 0.837346C1.57508 1.04306 1.49508 1.22592 1.33508 1.38592C1.18651 1.53449 1.00937 1.60877 0.803655 1.60877C0.597941 1.60877 0.415084 1.53449 0.255084 1.38592Z\"\n fill=\"white\"\n />\n <path\n d=\"M8.38897 12.3745C9.5204 12.3745 10.4804 11.9745 11.269 11.1745C12.069 10.3631 12.469 9.38592 12.469 8.24306C12.469 7.11163 12.069 6.14592 11.269 5.34592C10.4804 4.53449 9.5204 4.12877 8.38897 4.12877C7.26897 4.12877 6.30897 4.53449 5.50897 5.34592C4.70897 6.14592 4.30897 7.11163 4.30897 8.24306C4.30897 9.38592 4.70897 10.3631 5.50897 11.1745C6.30897 11.9745 7.26897 12.3745 8.38897 12.3745ZM8.38897 13.5059C6.93754 13.5059 5.69182 12.9916 4.65182 11.9631C3.62325 10.9345 3.10897 9.69449 3.10897 8.24306C3.10897 6.79163 3.62325 5.55735 4.65182 4.5402C5.69182 3.51163 6.93754 2.99735 8.38897 2.99735C9.85182 2.99735 11.0975 3.51163 12.1261 4.5402C13.1547 5.55735 13.669 6.79163 13.669 8.24306C13.669 9.69449 13.1547 10.9345 12.1261 11.9631C11.0975 12.9916 9.85182 13.5059 8.38897 13.5059Z\"\n fill=\"white\"\n />\n <path\n d=\"M16.4192 13.4039C16.072 13.4039 15.78 13.2855 15.5433 13.0488C15.3066 12.812 15.1882 12.528 15.1882 12.1965C15.1882 11.8651 15.3066 11.581 15.5433 11.3443C15.78 11.1076 16.072 10.9892 16.4192 10.9892C16.7349 10.9892 17.0111 11.1076 17.2478 11.3443C17.4845 11.581 17.6029 11.8651 17.6029 12.1965C17.6029 12.528 17.4845 12.812 17.2478 13.0488C17.0111 13.2855 16.7349 13.4039 16.4192 13.4039Z\"\n fill=\"#F25F1F\"\n />\n <path\n d=\"M22.7104 9.13449H28.1276L25.4361 2.08877H25.4018L22.7104 9.13449ZM30.9733 13.2145H29.7047L28.5733 10.2831H22.2476L21.1161 13.2145H19.8647L24.8361 0.357346H26.0018L30.9733 13.2145Z\"\n fill=\"white\"\n />\n <path\n d=\"M39.5573 5.84306H38.3744C38.3744 5.35163 38.1459 4.94592 37.6887 4.62592C37.243 4.29449 36.6487 4.12877 35.9059 4.12877C35.1401 4.12877 34.5401 4.26592 34.1059 4.5402C33.6716 4.80306 33.4544 5.15735 33.4544 5.60306C33.4544 6.11735 33.6144 6.51735 33.9344 6.80306C34.2544 7.07735 34.6544 7.24878 35.1344 7.31735C35.6144 7.38592 36.1287 7.47163 36.6773 7.57449C37.2373 7.66592 37.7573 7.7802 38.2373 7.91735C38.7173 8.05449 39.1173 8.3402 39.4373 8.77449C39.7573 9.19735 39.9173 9.76877 39.9173 10.4888C39.9173 11.4373 39.5573 12.1802 38.8373 12.7173C38.1287 13.2431 37.1516 13.5059 35.9059 13.5059C34.7059 13.5059 33.7402 13.2031 33.0087 12.5973C32.2773 11.9802 31.9116 11.1916 31.9116 10.2316H33.0944C33.0944 10.8602 33.3459 11.3745 33.8487 11.7745C34.3516 12.1745 35.0373 12.3745 35.9059 12.3745C36.7973 12.3745 37.4887 12.2088 37.9801 11.8773C38.4716 11.5345 38.7173 11.0545 38.7173 10.4373C38.7173 10.0031 38.5973 9.6602 38.3573 9.40877C38.1173 9.14592 37.8087 8.96306 37.4316 8.8602C37.0544 8.75735 36.6373 8.67735 36.1801 8.6202C35.723 8.56306 35.2602 8.49449 34.7916 8.41449C34.3344 8.32306 33.9173 8.19163 33.5401 8.0202C33.163 7.83735 32.8544 7.55163 32.6144 7.16306C32.3744 6.76306 32.2544 6.25449 32.2544 5.63735C32.2544 4.7802 32.5973 4.12877 33.283 3.68306C33.9802 3.22592 34.8544 2.99735 35.9059 2.99735C36.9916 2.99735 37.8716 3.26592 38.5459 3.80306C39.2201 4.32877 39.5573 5.00877 39.5573 5.84306Z\"\n fill=\"white\"\n />\n <path\n d=\"M48.9323 5.84306H47.7494C47.7494 5.35163 47.5209 4.94592 47.0637 4.62592C46.618 4.29449 46.0237 4.12877 45.2809 4.12877C44.5151 4.12877 43.9151 4.26592 43.4809 4.5402C43.0466 4.80306 42.8294 5.15735 42.8294 5.60306C42.8294 6.11735 42.9894 6.51735 43.3094 6.80306C43.6294 7.07735 44.0294 7.24878 44.5094 7.31735C44.9894 7.38592 45.5037 7.47163 46.0523 7.57449C46.6123 7.66592 47.1323 7.7802 47.6123 7.91735C48.0923 8.05449 48.4923 8.3402 48.8123 8.77449C49.1323 9.19735 49.2923 9.76877 49.2923 10.4888C49.2923 11.4373 48.9323 12.1802 48.2123 12.7173C47.5037 13.2431 46.5266 13.5059 45.2809 13.5059C44.0809 13.5059 43.1151 13.2031 42.3837 12.5973C41.6523 11.9802 41.2866 11.1916 41.2866 10.2316H42.4694C42.4694 10.8602 42.7209 11.3745 43.2237 11.7745C43.7266 12.1745 44.4123 12.3745 45.2809 12.3745C46.1723 12.3745 46.8637 12.2088 47.3551 11.8773C47.8466 11.5345 48.0923 11.0545 48.0923 10.4373C48.0923 10.0031 47.9723 9.6602 47.7323 9.40877C47.4923 9.14592 47.1837 8.96306 46.8066 8.8602C46.4294 8.75735 46.0123 8.67735 45.5551 8.6202C45.098 8.56306 44.6352 8.49449 44.1666 8.41449C43.7094 8.32306 43.2923 8.19163 42.9151 8.0202C42.538 7.83735 42.2294 7.55163 41.9894 7.16306C41.7494 6.76306 41.6294 6.25449 41.6294 5.63735C41.6294 4.7802 41.9723 4.12877 42.658 3.68306C43.3551 3.22592 44.2294 2.99735 45.2809 2.99735C46.3666 2.99735 47.2466 3.26592 47.9209 3.80306C48.5951 4.32877 48.9323 5.00877 48.9323 5.84306Z\"\n fill=\"white\"\n />\n <path\n d=\"M51.0044 3.28877H52.1701V13.2145H51.0044V3.28877ZM51.0387 1.38592C50.8901 1.22592 50.8159 1.04306 50.8159 0.837346C50.8159 0.631632 50.8901 0.454489 51.0387 0.305918C51.1987 0.145918 51.3816 0.065918 51.5873 0.065918C51.793 0.065918 51.9701 0.145918 52.1187 0.305918C52.2787 0.454489 52.3587 0.631632 52.3587 0.837346C52.3587 1.04306 52.2787 1.22592 52.1187 1.38592C51.9701 1.53449 51.793 1.60877 51.5873 1.60877C51.3816 1.60877 51.1987 1.53449 51.0387 1.38592Z\"\n fill=\"white\"\n />\n <path\n d=\"M61.5383 5.84306H60.3555C60.3555 5.35163 60.1269 4.94592 59.6697 4.62592C59.224 4.29449 58.6297 4.12877 57.8869 4.12877C57.1212 4.12877 56.5212 4.26592 56.0869 4.5402C55.6526 4.80306 55.4355 5.15735 55.4355 5.60306C55.4355 6.11735 55.5955 6.51735 55.9155 6.80306C56.2355 7.07735 56.6355 7.24878 57.1155 7.31735C57.5955 7.38592 58.1097 7.47163 58.6583 7.57449C59.2183 7.66592 59.7383 7.7802 60.2183 7.91735C60.6983 8.05449 61.0983 8.3402 61.4183 8.77449C61.7383 9.19735 61.8983 9.76877 61.8983 10.4888C61.8983 11.4373 61.5383 12.1802 60.8183 12.7173C60.1097 13.2431 59.1326 13.5059 57.8869 13.5059C56.6869 13.5059 55.7212 13.2031 54.9897 12.5973C54.2583 11.9802 53.8926 11.1916 53.8926 10.2316H55.0755C55.0755 10.8602 55.3269 11.3745 55.8297 11.7745C56.3326 12.1745 57.0183 12.3745 57.8869 12.3745C58.7783 12.3745 59.4697 12.2088 59.9612 11.8773C60.4526 11.5345 60.6983 11.0545 60.6983 10.4373C60.6983 10.0031 60.5783 9.6602 60.3383 9.40877C60.0983 9.14592 59.7897 8.96306 59.4126 8.8602C59.0355 8.75735 58.6183 8.67735 58.1612 8.6202C57.704 8.56306 57.2412 8.49449 56.7726 8.41449C56.3155 8.32306 55.8983 8.19163 55.5212 8.0202C55.144 7.83735 54.8355 7.55163 54.5955 7.16306C54.3555 6.76306 54.2355 6.25449 54.2355 5.63735C54.2355 4.7802 54.5783 4.12877 55.264 3.68306C55.9612 3.22592 56.8355 2.99735 57.8869 2.99735C58.9726 2.99735 59.8526 3.26592 60.5269 3.80306C61.2012 4.32877 61.5383 5.00877 61.5383 5.84306Z\"\n fill=\"white\"\n />\n <path\n d=\"M65.2562 4.45449V10.8831C65.2562 11.2716 65.3647 11.5631 65.5819 11.7573C65.799 11.9516 66.079 12.0488 66.4219 12.0488H67.3133V13.2145H66.4219C65.759 13.2145 65.2047 13.0031 64.759 12.5802C64.3133 12.1573 64.0905 11.5916 64.0905 10.8831V4.45449H62.9247V3.28877H64.0905V1.04306H65.2562V3.28877H67.3133V4.45449H65.2562Z\"\n fill=\"white\"\n />\n </svg>\n }\n\n @if (!isDarkMode()) {\n <svg\n width=\"68\"\n height=\"14\"\n viewBox=\"0 0 121 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M0.336735 5.7551H2.41837V23.4796H0.336735V5.7551ZM0.397959 2.35714C0.132653 2.07143 0 1.7449 0 1.37755C0 1.0102 0.132653 0.693878 0.397959 0.428571C0.683674 0.142857 1.0102 0 1.37755 0C1.7449 0 2.06122 0.142857 2.32653 0.428571C2.61225 0.693878 2.7551 1.0102 2.7551 1.37755C2.7551 1.7449 2.61225 2.07143 2.32653 2.35714C2.06122 2.62245 1.7449 2.7551 1.37755 2.7551C1.0102 2.7551 0.683674 2.62245 0.397959 2.35714Z\"\n fill=\"#26272A\"\n />\n <path\n d=\"M14.9228 21.9796C16.9432 21.9796 18.6574 21.2653 20.0656 19.8367C21.4942 18.3878 22.2085 16.6429 22.2085 14.602C22.2085 12.5816 21.4942 10.8571 20.0656 9.42857C18.6574 7.97959 16.9432 7.2551 14.9228 7.2551C12.9228 7.2551 11.2085 7.97959 9.77989 9.42857C8.35132 10.8571 7.63704 12.5816 7.63704 14.602C7.63704 16.6429 8.35132 18.3878 9.77989 19.8367C11.2085 21.2653 12.9228 21.9796 14.9228 21.9796ZM14.9228 24C12.3309 24 10.1064 23.0816 8.24928 21.2449C6.41255 19.4082 5.49418 17.1939 5.49418 14.602C5.49418 12.0102 6.41255 9.80612 8.24928 7.98979C10.1064 6.15306 12.3309 5.23469 14.9228 5.23469C17.535 5.23469 19.7595 6.15306 21.5962 7.98979C23.433 9.80612 24.3513 12.0102 24.3513 14.602C24.3513 17.1939 23.433 19.4082 21.5962 21.2449C19.7595 23.0816 17.535 24 14.9228 24Z\"\n fill=\"#26272A\"\n />\n <path\n d=\"M29.2625 23.8178C28.6425 23.8178 28.1211 23.6064 27.6984 23.1837C27.2756 22.7609 27.0643 22.2536 27.0643 21.6618C27.0643 21.07 27.2756 20.5627 27.6984 20.1399C28.1211 19.7172 28.6425 19.5058 29.2625 19.5058C29.8262 19.5058 30.3194 19.7172 30.7421 20.1399C31.1648 20.5627 31.3762 21.07 31.3762 21.6618C31.3762 22.2536 31.1648 22.7609 30.7421 23.1837C30.3194 23.6064 29.8262 23.8178 29.2625 23.8178Z\"\n fill=\"#F25F1F\"\n />\n <path\n d=\"M40.4968 16.1939H50.1702L45.3641 3.61224H45.3029L40.4968 16.1939ZM55.2519 23.4796H52.9866L50.9662 18.2449H39.6702L37.6498 23.4796H35.4151L44.2927 0.520407H46.3743L55.2519 23.4796Z\"\n fill=\"#26272A\"\n />\n <path\n d=\"M70.5805 10.3163H68.4682C68.4682 9.43878 68.0601 8.71428 67.2437 8.14286C66.4478 7.55102 65.3866 7.2551 64.0601 7.2551C62.6927 7.2551 61.6213 7.5 60.8458 7.98979C60.0703 8.45918 59.6825 9.09184 59.6825 9.88775C59.6825 10.8061 59.9682 11.5204 60.5397 12.0306C61.1111 12.5204 61.8254 12.8265 62.6825 12.949C63.5397 13.0714 64.458 13.2245 65.4376 13.4082C66.4376 13.5714 67.3662 13.7755 68.2233 14.0204C69.0805 14.2653 69.7948 14.7755 70.3662 15.551C70.9376 16.3061 71.2233 17.3265 71.2233 18.6122C71.2233 20.3061 70.5805 21.6327 69.2948 22.5918C68.0295 23.5306 66.2846 24 64.0601 24C61.9172 24 60.1927 23.4592 58.8866 22.3776C57.5805 21.2755 56.9274 19.8673 56.9274 18.1531H59.0397C59.0397 19.2755 59.4886 20.1939 60.3866 20.9082C61.2846 21.6224 62.509 21.9796 64.0601 21.9796C65.6519 21.9796 66.8866 21.6837 67.7642 21.0918C68.6417 20.4796 69.0805 19.6224 69.0805 18.5204C69.0805 17.7449 68.8662 17.1327 68.4376 16.6837C68.009 16.2143 67.458 15.8878 66.7846 15.7041C66.1111 15.5204 65.3662 15.3776 64.5499 15.2755C63.7335 15.1735 62.907 15.051 62.0703 14.9082C61.254 14.7449 60.5091 14.5102 59.8356 14.2041C59.1621 13.8776 58.6111 13.3673 58.1825 12.6735C57.754 11.9592 57.5397 11.051 57.5397 9.94898C57.5397 8.41837 58.1519 7.2551 59.3764 6.45918C60.6213 5.64286 62.1825 5.23469 64.0601 5.23469C65.9988 5.23469 67.5703 5.71429 68.7744 6.67347C69.9784 7.61224 70.5805 8.82653 70.5805 10.3163Z\"\n fill=\"#26272A\"\n />\n <path\n d=\"M87.3216 10.3163H85.2093C85.2093 9.43878 84.8011 8.71428 83.9848 8.14286C83.1889 7.55102 82.1277 7.2551 80.8011 7.2551C79.4338 7.2551 78.3624 7.5 77.5869 7.98979C76.8113 8.45918 76.4236 9.09184 76.4236 9.88775C76.4236 10.8061 76.7093 11.5204 77.2807 12.0306C77.8522 12.5204 78.5664 12.8265 79.4236 12.949C80.2807 13.0714 81.1991 13.2245 82.1787 13.4082C83.1787 13.5714 84.1073 13.7755 84.9644 14.0204C85.8216 14.2653 86.5358 14.7755 87.1073 15.551C87.6787 16.3061 87.9644 17.3265 87.9644 18.6122C87.9644 20.3061 87.3216 21.6327 86.0358 22.5918C84.7705 23.5306 83.0256 24 80.8011 24C78.6583 24 76.9338 23.4592 75.6277 22.3776C74.3215 21.2755 73.6685 19.8673 73.6685 18.1531H75.7807C75.7807 19.2755 76.2297 20.1939 77.1277 20.9082C78.0256 21.6224 79.2501 21.9796 80.8011 21.9796C82.393 21.9796 83.6277 21.6837 84.5052 21.0918C85.3828 20.4796 85.8215 19.6224 85.8215 18.5204C85.8215 17.7449 85.6073 17.1327 85.1787 16.6837C84.7501 16.2143 84.1991 15.8878 83.5256 15.7041C82.8522 15.5204 82.1073 15.3776 81.2909 15.2755C80.4746 15.1735 79.6481 15.051 78.8113 14.9082C77.995 14.7449 77.2501 14.5102 76.5767 14.2041C75.9032 13.8776 75.3522 13.3673 74.9236 12.6735C74.495 11.9592 74.2807 11.051 74.2807 9.94898C74.2807 8.41837 74.893 7.2551 76.1175 6.45918C77.3624 5.64286 78.9236 5.23469 80.8011 5.23469C82.7399 5.23469 84.3113 5.71429 85.5154 6.67347C86.7195 7.61224 87.3216 8.82653 87.3216 10.3163Z\"\n fill=\"#26272A\"\n />\n <path\n d=\"M91.0218 5.7551H93.1034V23.4796H91.0218V5.7551ZM91.083 2.35714C90.8177 2.07143 90.6851 1.7449 90.6851 1.37755C90.6851 1.0102 90.8177 0.693878 91.083 0.428571C91.3687 0.142857 91.6953 0 92.0626 0C92.43 0 92.7463 0.142857 93.0116 0.428571C93.2973 0.693878 93.4402 1.0102 93.4402 1.37755C93.4402 1.7449 93.2973 2.07143 93.0116 2.35714C92.7463 2.62245 92.43 2.7551 92.0626 2.7551C91.6953 2.7551 91.3687 2.62245 91.083 2.35714Z\"\n fill=\"#26272A\"\n />\n <path\n d=\"M109.832 10.3163H107.72C107.72 9.43878 107.312 8.71428 106.496 8.14286C105.7 7.55102 104.638 7.2551 103.312 7.2551C101.945 7.2551 100.873 7.5 100.098 7.98979C99.3221 8.45918 98.9343 9.09184 98.9343 9.88775C98.9343 10.8061 99.2201 11.5204 99.7915 12.0306C100.363 12.5204 101.077 12.8265 101.934 12.949C102.791 13.0714 103.71 13.2245 104.689 13.4082C105.689 13.5714 106.618 13.7755 107.475 14.0204C108.332 14.2653 109.047 14.7755 109.618 15.551C110.189 16.3061 110.475 17.3265 110.475 18.6122C110.475 20.3061 109.832 21.6327 108.547 22.5918C107.281 23.5306 105.536 24 103.312 24C101.169 24 99.4446 23.4592 98.1384 22.3776C96.8323 21.2755 96.1792 19.8673 96.1792 18.1531H98.2915C98.2915 19.2755 98.7405 20.1939 99.6384 20.9082C100.536 21.6224 101.761 21.9796 103.312 21.9796C104.904 21.9796 106.138 21.6837 107.016 21.0918C107.894 20.4796 108.332 19.6224 108.332 18.5204C108.332 17.7449 108.118 17.1327 107.689 16.6837C107.261 16.2143 106.71 15.8878 106.036 15.7041C105.363 15.5204 104.618 15.3776 103.802 15.2755C102.985 15.1735 102.159 15.051 101.322 14.9082C100.506 14.7449 99.7609 14.5102 99.0874 14.2041C98.4139 13.8776 97.8629 13.3673 97.4343 12.6735C97.0058 11.9592 96.7915 11.051 96.7915 9.94898C96.7915 8.41837 97.4037 7.2551 98.6282 6.45918C99.8731 5.64286 101.434 5.23469 103.312 5.23469C105.251 5.23469 106.822 5.71429 108.026 6.67347C109.23 7.61224 109.832 8.82653 109.832 10.3163Z\"\n fill=\"#26272A\"\n />\n <path\n d=\"M116.471 7.83673V19.3163C116.471 20.0102 116.665 20.5306 117.053 20.8776C117.441 21.2245 117.941 21.398 118.553 21.398H120.145V23.4796H118.553C117.369 23.4796 116.38 23.102 115.584 22.3469C114.788 21.5918 114.39 20.5816 114.39 19.3163V7.83673H112.308V5.7551H114.39V1.7449H116.471V5.7551H120.145V7.83673H116.471Z\"\n fill=\"#26272A\"\n />\n </svg>\n }\n </div>\n\n <!-- Thread History List Container -->\n <thread-history-list class=\"flex flex-1 flex-col p-2 overflow-y-scroll custom-scrollbar custom-scrollbar-no-gutter\"></thread-history-list>\n\n <!-- User Profile Section -->\n @if (hasUsername()) {\n <div\n class=\"thread-history__user-profile\"\n [ngClass]=\"{\n 'flex items-center gap-3 px-4 py-3 mt-auto border-t border-border-default': true,\n }\"\n >\n <!-- User Avatar -->\n <div\n class=\"thread-history__user-avatar\"\n [ngClass]=\"{\n 'flex items-center justify-center w-6 h-6 rounded-full bg-app-accent-color-1 text-white text-neutrals-0 font-weight-600 text-[12px] flex-shrink-0': true,\n }\"\n >\n {{ userInitial() }}\n </div>\n\n <!-- User Info -->\n <div\n class=\"thread-history__user-info\"\n [ngClass]=\"{\n 'flex flex-col flex-1 min-w-0': true,\n }\"\n >\n <span\n [ngClass]=\"{\n 'text-text-default text-[12px] leading-[12px] font-weight-400 truncate': true,\n }\"\n [attr.title]=\"username()\"\n >\n {{ username() }}\n </span>\n </div>\n </div>\n }\n\n <!-- Thread History Footer TODO: Revert and implement once we decide to support chat model picking -->\n <!-- <div class=\"flex items-center px-4 py-2 border-t border-proto-border-default\">\n <select\n class=\"p-2 border border-proto-border-default rounded text-proto-text-default bg-proto-background-light w-full\"\n >\n <option value=\"gpt-4\">GPT-4</option>\n <option value=\"gpt-3.5-turbo\">GPT-3.5 Turbo</option>\n </select>\n </div> -->\n</div>" }]
|
|
6209
|
+
args: [{ selector: 'thread-history', imports: [CommonModule, ThreadHistoryListComponent, AppIconComponent], template: "<div\n data-testid=\"thread-history-panel\"\n class=\"absolute left-0 top-0 md:static md:left-auto md:top-auto flex flex-col w-full h-full bg-app-background-secondary z-10 md:w-[368px] md:min-w-[368px] md:max-w-[368px] flex-shrink-0\"\n>\n <!-- Thread History Header -->\n <div class=\"flex items-center gap-4 px-4 py-2\">\n <!-- Thread Header Title Section -->\n <app-icon [variant]=\"APP_ICON_VARIANTS.THREAD_HISTORY\" (click)=\"hideThreadHistory()\" />\n\n <!-- IO.Assist Logo -->\n @if (isDarkMode()) {\n <svg\n width=\"68\"\n height=\"14\"\n viewBox=\"0 0 68 14\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M0.220798 3.28877H1.38651V13.2145H0.220798V3.28877ZM0.255084 1.38592C0.106512 1.22592 0.0322266 1.04306 0.0322266 0.837346C0.0322266 0.631632 0.106512 0.454489 0.255084 0.305918C0.415084 0.145918 0.597941 0.065918 0.803655 0.065918C1.00937 0.065918 1.18651 0.145918 1.33508 0.305918C1.49508 0.454489 1.57508 0.631632 1.57508 0.837346C1.57508 1.04306 1.49508 1.22592 1.33508 1.38592C1.18651 1.53449 1.00937 1.60877 0.803655 1.60877C0.597941 1.60877 0.415084 1.53449 0.255084 1.38592Z\"\n fill=\"white\"\n />\n <path\n d=\"M8.38897 12.3745C9.5204 12.3745 10.4804 11.9745 11.269 11.1745C12.069 10.3631 12.469 9.38592 12.469 8.24306C12.469 7.11163 12.069 6.14592 11.269 5.34592C10.4804 4.53449 9.5204 4.12877 8.38897 4.12877C7.26897 4.12877 6.30897 4.53449 5.50897 5.34592C4.70897 6.14592 4.30897 7.11163 4.30897 8.24306C4.30897 9.38592 4.70897 10.3631 5.50897 11.1745C6.30897 11.9745 7.26897 12.3745 8.38897 12.3745ZM8.38897 13.5059C6.93754 13.5059 5.69182 12.9916 4.65182 11.9631C3.62325 10.9345 3.10897 9.69449 3.10897 8.24306C3.10897 6.79163 3.62325 5.55735 4.65182 4.5402C5.69182 3.51163 6.93754 2.99735 8.38897 2.99735C9.85182 2.99735 11.0975 3.51163 12.1261 4.5402C13.1547 5.55735 13.669 6.79163 13.669 8.24306C13.669 9.69449 13.1547 10.9345 12.1261 11.9631C11.0975 12.9916 9.85182 13.5059 8.38897 13.5059Z\"\n fill=\"white\"\n />\n <path\n d=\"M16.4192 13.4039C16.072 13.4039 15.78 13.2855 15.5433 13.0488C15.3066 12.812 15.1882 12.528 15.1882 12.1965C15.1882 11.8651 15.3066 11.581 15.5433 11.3443C15.78 11.1076 16.072 10.9892 16.4192 10.9892C16.7349 10.9892 17.0111 11.1076 17.2478 11.3443C17.4845 11.581 17.6029 11.8651 17.6029 12.1965C17.6029 12.528 17.4845 12.812 17.2478 13.0488C17.0111 13.2855 16.7349 13.4039 16.4192 13.4039Z\"\n fill=\"#F25F1F\"\n />\n <path\n d=\"M22.7104 9.13449H28.1276L25.4361 2.08877H25.4018L22.7104 9.13449ZM30.9733 13.2145H29.7047L28.5733 10.2831H22.2476L21.1161 13.2145H19.8647L24.8361 0.357346H26.0018L30.9733 13.2145Z\"\n fill=\"white\"\n />\n <path\n d=\"M39.5573 5.84306H38.3744C38.3744 5.35163 38.1459 4.94592 37.6887 4.62592C37.243 4.29449 36.6487 4.12877 35.9059 4.12877C35.1401 4.12877 34.5401 4.26592 34.1059 4.5402C33.6716 4.80306 33.4544 5.15735 33.4544 5.60306C33.4544 6.11735 33.6144 6.51735 33.9344 6.80306C34.2544 7.07735 34.6544 7.24878 35.1344 7.31735C35.6144 7.38592 36.1287 7.47163 36.6773 7.57449C37.2373 7.66592 37.7573 7.7802 38.2373 7.91735C38.7173 8.05449 39.1173 8.3402 39.4373 8.77449C39.7573 9.19735 39.9173 9.76877 39.9173 10.4888C39.9173 11.4373 39.5573 12.1802 38.8373 12.7173C38.1287 13.2431 37.1516 13.5059 35.9059 13.5059C34.7059 13.5059 33.7402 13.2031 33.0087 12.5973C32.2773 11.9802 31.9116 11.1916 31.9116 10.2316H33.0944C33.0944 10.8602 33.3459 11.3745 33.8487 11.7745C34.3516 12.1745 35.0373 12.3745 35.9059 12.3745C36.7973 12.3745 37.4887 12.2088 37.9801 11.8773C38.4716 11.5345 38.7173 11.0545 38.7173 10.4373C38.7173 10.0031 38.5973 9.6602 38.3573 9.40877C38.1173 9.14592 37.8087 8.96306 37.4316 8.8602C37.0544 8.75735 36.6373 8.67735 36.1801 8.6202C35.723 8.56306 35.2602 8.49449 34.7916 8.41449C34.3344 8.32306 33.9173 8.19163 33.5401 8.0202C33.163 7.83735 32.8544 7.55163 32.6144 7.16306C32.3744 6.76306 32.2544 6.25449 32.2544 5.63735C32.2544 4.7802 32.5973 4.12877 33.283 3.68306C33.9802 3.22592 34.8544 2.99735 35.9059 2.99735C36.9916 2.99735 37.8716 3.26592 38.5459 3.80306C39.2201 4.32877 39.5573 5.00877 39.5573 5.84306Z\"\n fill=\"white\"\n />\n <path\n d=\"M48.9323 5.84306H47.7494C47.7494 5.35163 47.5209 4.94592 47.0637 4.62592C46.618 4.29449 46.0237 4.12877 45.2809 4.12877C44.5151 4.12877 43.9151 4.26592 43.4809 4.5402C43.0466 4.80306 42.8294 5.15735 42.8294 5.60306C42.8294 6.11735 42.9894 6.51735 43.3094 6.80306C43.6294 7.07735 44.0294 7.24878 44.5094 7.31735C44.9894 7.38592 45.5037 7.47163 46.0523 7.57449C46.6123 7.66592 47.1323 7.7802 47.6123 7.91735C48.0923 8.05449 48.4923 8.3402 48.8123 8.77449C49.1323 9.19735 49.2923 9.76877 49.2923 10.4888C49.2923 11.4373 48.9323 12.1802 48.2123 12.7173C47.5037 13.2431 46.5266 13.5059 45.2809 13.5059C44.0809 13.5059 43.1151 13.2031 42.3837 12.5973C41.6523 11.9802 41.2866 11.1916 41.2866 10.2316H42.4694C42.4694 10.8602 42.7209 11.3745 43.2237 11.7745C43.7266 12.1745 44.4123 12.3745 45.2809 12.3745C46.1723 12.3745 46.8637 12.2088 47.3551 11.8773C47.8466 11.5345 48.0923 11.0545 48.0923 10.4373C48.0923 10.0031 47.9723 9.6602 47.7323 9.40877C47.4923 9.14592 47.1837 8.96306 46.8066 8.8602C46.4294 8.75735 46.0123 8.67735 45.5551 8.6202C45.098 8.56306 44.6352 8.49449 44.1666 8.41449C43.7094 8.32306 43.2923 8.19163 42.9151 8.0202C42.538 7.83735 42.2294 7.55163 41.9894 7.16306C41.7494 6.76306 41.6294 6.25449 41.6294 5.63735C41.6294 4.7802 41.9723 4.12877 42.658 3.68306C43.3551 3.22592 44.2294 2.99735 45.2809 2.99735C46.3666 2.99735 47.2466 3.26592 47.9209 3.80306C48.5951 4.32877 48.9323 5.00877 48.9323 5.84306Z\"\n fill=\"white\"\n />\n <path\n d=\"M51.0044 3.28877H52.1701V13.2145H51.0044V3.28877ZM51.0387 1.38592C50.8901 1.22592 50.8159 1.04306 50.8159 0.837346C50.8159 0.631632 50.8901 0.454489 51.0387 0.305918C51.1987 0.145918 51.3816 0.065918 51.5873 0.065918C51.793 0.065918 51.9701 0.145918 52.1187 0.305918C52.2787 0.454489 52.3587 0.631632 52.3587 0.837346C52.3587 1.04306 52.2787 1.22592 52.1187 1.38592C51.9701 1.53449 51.793 1.60877 51.5873 1.60877C51.3816 1.60877 51.1987 1.53449 51.0387 1.38592Z\"\n fill=\"white\"\n />\n <path\n d=\"M61.5383 5.84306H60.3555C60.3555 5.35163 60.1269 4.94592 59.6697 4.62592C59.224 4.29449 58.6297 4.12877 57.8869 4.12877C57.1212 4.12877 56.5212 4.26592 56.0869 4.5402C55.6526 4.80306 55.4355 5.15735 55.4355 5.60306C55.4355 6.11735 55.5955 6.51735 55.9155 6.80306C56.2355 7.07735 56.6355 7.24878 57.1155 7.31735C57.5955 7.38592 58.1097 7.47163 58.6583 7.57449C59.2183 7.66592 59.7383 7.7802 60.2183 7.91735C60.6983 8.05449 61.0983 8.3402 61.4183 8.77449C61.7383 9.19735 61.8983 9.76877 61.8983 10.4888C61.8983 11.4373 61.5383 12.1802 60.8183 12.7173C60.1097 13.2431 59.1326 13.5059 57.8869 13.5059C56.6869 13.5059 55.7212 13.2031 54.9897 12.5973C54.2583 11.9802 53.8926 11.1916 53.8926 10.2316H55.0755C55.0755 10.8602 55.3269 11.3745 55.8297 11.7745C56.3326 12.1745 57.0183 12.3745 57.8869 12.3745C58.7783 12.3745 59.4697 12.2088 59.9612 11.8773C60.4526 11.5345 60.6983 11.0545 60.6983 10.4373C60.6983 10.0031 60.5783 9.6602 60.3383 9.40877C60.0983 9.14592 59.7897 8.96306 59.4126 8.8602C59.0355 8.75735 58.6183 8.67735 58.1612 8.6202C57.704 8.56306 57.2412 8.49449 56.7726 8.41449C56.3155 8.32306 55.8983 8.19163 55.5212 8.0202C55.144 7.83735 54.8355 7.55163 54.5955 7.16306C54.3555 6.76306 54.2355 6.25449 54.2355 5.63735C54.2355 4.7802 54.5783 4.12877 55.264 3.68306C55.9612 3.22592 56.8355 2.99735 57.8869 2.99735C58.9726 2.99735 59.8526 3.26592 60.5269 3.80306C61.2012 4.32877 61.5383 5.00877 61.5383 5.84306Z\"\n fill=\"white\"\n />\n <path\n d=\"M65.2562 4.45449V10.8831C65.2562 11.2716 65.3647 11.5631 65.5819 11.7573C65.799 11.9516 66.079 12.0488 66.4219 12.0488H67.3133V13.2145H66.4219C65.759 13.2145 65.2047 13.0031 64.759 12.5802C64.3133 12.1573 64.0905 11.5916 64.0905 10.8831V4.45449H62.9247V3.28877H64.0905V1.04306H65.2562V3.28877H67.3133V4.45449H65.2562Z\"\n fill=\"white\"\n />\n </svg>\n }\n\n @if (!isDarkMode()) {\n <svg\n width=\"68\"\n height=\"14\"\n viewBox=\"0 0 121 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M0.336735 5.7551H2.41837V23.4796H0.336735V5.7551ZM0.397959 2.35714C0.132653 2.07143 0 1.7449 0 1.37755C0 1.0102 0.132653 0.693878 0.397959 0.428571C0.683674 0.142857 1.0102 0 1.37755 0C1.7449 0 2.06122 0.142857 2.32653 0.428571C2.61225 0.693878 2.7551 1.0102 2.7551 1.37755C2.7551 1.7449 2.61225 2.07143 2.32653 2.35714C2.06122 2.62245 1.7449 2.7551 1.37755 2.7551C1.0102 2.7551 0.683674 2.62245 0.397959 2.35714Z\"\n fill=\"#26272A\"\n />\n <path\n d=\"M14.9228 21.9796C16.9432 21.9796 18.6574 21.2653 20.0656 19.8367C21.4942 18.3878 22.2085 16.6429 22.2085 14.602C22.2085 12.5816 21.4942 10.8571 20.0656 9.42857C18.6574 7.97959 16.9432 7.2551 14.9228 7.2551C12.9228 7.2551 11.2085 7.97959 9.77989 9.42857C8.35132 10.8571 7.63704 12.5816 7.63704 14.602C7.63704 16.6429 8.35132 18.3878 9.77989 19.8367C11.2085 21.2653 12.9228 21.9796 14.9228 21.9796ZM14.9228 24C12.3309 24 10.1064 23.0816 8.24928 21.2449C6.41255 19.4082 5.49418 17.1939 5.49418 14.602C5.49418 12.0102 6.41255 9.80612 8.24928 7.98979C10.1064 6.15306 12.3309 5.23469 14.9228 5.23469C17.535 5.23469 19.7595 6.15306 21.5962 7.98979C23.433 9.80612 24.3513 12.0102 24.3513 14.602C24.3513 17.1939 23.433 19.4082 21.5962 21.2449C19.7595 23.0816 17.535 24 14.9228 24Z\"\n fill=\"#26272A\"\n />\n <path\n d=\"M29.2625 23.8178C28.6425 23.8178 28.1211 23.6064 27.6984 23.1837C27.2756 22.7609 27.0643 22.2536 27.0643 21.6618C27.0643 21.07 27.2756 20.5627 27.6984 20.1399C28.1211 19.7172 28.6425 19.5058 29.2625 19.5058C29.8262 19.5058 30.3194 19.7172 30.7421 20.1399C31.1648 20.5627 31.3762 21.07 31.3762 21.6618C31.3762 22.2536 31.1648 22.7609 30.7421 23.1837C30.3194 23.6064 29.8262 23.8178 29.2625 23.8178Z\"\n fill=\"#F25F1F\"\n />\n <path\n d=\"M40.4968 16.1939H50.1702L45.3641 3.61224H45.3029L40.4968 16.1939ZM55.2519 23.4796H52.9866L50.9662 18.2449H39.6702L37.6498 23.4796H35.4151L44.2927 0.520407H46.3743L55.2519 23.4796Z\"\n fill=\"#26272A\"\n />\n <path\n d=\"M70.5805 10.3163H68.4682C68.4682 9.43878 68.0601 8.71428 67.2437 8.14286C66.4478 7.55102 65.3866 7.2551 64.0601 7.2551C62.6927 7.2551 61.6213 7.5 60.8458 7.98979C60.0703 8.45918 59.6825 9.09184 59.6825 9.88775C59.6825 10.8061 59.9682 11.5204 60.5397 12.0306C61.1111 12.5204 61.8254 12.8265 62.6825 12.949C63.5397 13.0714 64.458 13.2245 65.4376 13.4082C66.4376 13.5714 67.3662 13.7755 68.2233 14.0204C69.0805 14.2653 69.7948 14.7755 70.3662 15.551C70.9376 16.3061 71.2233 17.3265 71.2233 18.6122C71.2233 20.3061 70.5805 21.6327 69.2948 22.5918C68.0295 23.5306 66.2846 24 64.0601 24C61.9172 24 60.1927 23.4592 58.8866 22.3776C57.5805 21.2755 56.9274 19.8673 56.9274 18.1531H59.0397C59.0397 19.2755 59.4886 20.1939 60.3866 20.9082C61.2846 21.6224 62.509 21.9796 64.0601 21.9796C65.6519 21.9796 66.8866 21.6837 67.7642 21.0918C68.6417 20.4796 69.0805 19.6224 69.0805 18.5204C69.0805 17.7449 68.8662 17.1327 68.4376 16.6837C68.009 16.2143 67.458 15.8878 66.7846 15.7041C66.1111 15.5204 65.3662 15.3776 64.5499 15.2755C63.7335 15.1735 62.907 15.051 62.0703 14.9082C61.254 14.7449 60.5091 14.5102 59.8356 14.2041C59.1621 13.8776 58.6111 13.3673 58.1825 12.6735C57.754 11.9592 57.5397 11.051 57.5397 9.94898C57.5397 8.41837 58.1519 7.2551 59.3764 6.45918C60.6213 5.64286 62.1825 5.23469 64.0601 5.23469C65.9988 5.23469 67.5703 5.71429 68.7744 6.67347C69.9784 7.61224 70.5805 8.82653 70.5805 10.3163Z\"\n fill=\"#26272A\"\n />\n <path\n d=\"M87.3216 10.3163H85.2093C85.2093 9.43878 84.8011 8.71428 83.9848 8.14286C83.1889 7.55102 82.1277 7.2551 80.8011 7.2551C79.4338 7.2551 78.3624 7.5 77.5869 7.98979C76.8113 8.45918 76.4236 9.09184 76.4236 9.88775C76.4236 10.8061 76.7093 11.5204 77.2807 12.0306C77.8522 12.5204 78.5664 12.8265 79.4236 12.949C80.2807 13.0714 81.1991 13.2245 82.1787 13.4082C83.1787 13.5714 84.1073 13.7755 84.9644 14.0204C85.8216 14.2653 86.5358 14.7755 87.1073 15.551C87.6787 16.3061 87.9644 17.3265 87.9644 18.6122C87.9644 20.3061 87.3216 21.6327 86.0358 22.5918C84.7705 23.5306 83.0256 24 80.8011 24C78.6583 24 76.9338 23.4592 75.6277 22.3776C74.3215 21.2755 73.6685 19.8673 73.6685 18.1531H75.7807C75.7807 19.2755 76.2297 20.1939 77.1277 20.9082C78.0256 21.6224 79.2501 21.9796 80.8011 21.9796C82.393 21.9796 83.6277 21.6837 84.5052 21.0918C85.3828 20.4796 85.8215 19.6224 85.8215 18.5204C85.8215 17.7449 85.6073 17.1327 85.1787 16.6837C84.7501 16.2143 84.1991 15.8878 83.5256 15.7041C82.8522 15.5204 82.1073 15.3776 81.2909 15.2755C80.4746 15.1735 79.6481 15.051 78.8113 14.9082C77.995 14.7449 77.2501 14.5102 76.5767 14.2041C75.9032 13.8776 75.3522 13.3673 74.9236 12.6735C74.495 11.9592 74.2807 11.051 74.2807 9.94898C74.2807 8.41837 74.893 7.2551 76.1175 6.45918C77.3624 5.64286 78.9236 5.23469 80.8011 5.23469C82.7399 5.23469 84.3113 5.71429 85.5154 6.67347C86.7195 7.61224 87.3216 8.82653 87.3216 10.3163Z\"\n fill=\"#26272A\"\n />\n <path\n d=\"M91.0218 5.7551H93.1034V23.4796H91.0218V5.7551ZM91.083 2.35714C90.8177 2.07143 90.6851 1.7449 90.6851 1.37755C90.6851 1.0102 90.8177 0.693878 91.083 0.428571C91.3687 0.142857 91.6953 0 92.0626 0C92.43 0 92.7463 0.142857 93.0116 0.428571C93.2973 0.693878 93.4402 1.0102 93.4402 1.37755C93.4402 1.7449 93.2973 2.07143 93.0116 2.35714C92.7463 2.62245 92.43 2.7551 92.0626 2.7551C91.6953 2.7551 91.3687 2.62245 91.083 2.35714Z\"\n fill=\"#26272A\"\n />\n <path\n d=\"M109.832 10.3163H107.72C107.72 9.43878 107.312 8.71428 106.496 8.14286C105.7 7.55102 104.638 7.2551 103.312 7.2551C101.945 7.2551 100.873 7.5 100.098 7.98979C99.3221 8.45918 98.9343 9.09184 98.9343 9.88775C98.9343 10.8061 99.2201 11.5204 99.7915 12.0306C100.363 12.5204 101.077 12.8265 101.934 12.949C102.791 13.0714 103.71 13.2245 104.689 13.4082C105.689 13.5714 106.618 13.7755 107.475 14.0204C108.332 14.2653 109.047 14.7755 109.618 15.551C110.189 16.3061 110.475 17.3265 110.475 18.6122C110.475 20.3061 109.832 21.6327 108.547 22.5918C107.281 23.5306 105.536 24 103.312 24C101.169 24 99.4446 23.4592 98.1384 22.3776C96.8323 21.2755 96.1792 19.8673 96.1792 18.1531H98.2915C98.2915 19.2755 98.7405 20.1939 99.6384 20.9082C100.536 21.6224 101.761 21.9796 103.312 21.9796C104.904 21.9796 106.138 21.6837 107.016 21.0918C107.894 20.4796 108.332 19.6224 108.332 18.5204C108.332 17.7449 108.118 17.1327 107.689 16.6837C107.261 16.2143 106.71 15.8878 106.036 15.7041C105.363 15.5204 104.618 15.3776 103.802 15.2755C102.985 15.1735 102.159 15.051 101.322 14.9082C100.506 14.7449 99.7609 14.5102 99.0874 14.2041C98.4139 13.8776 97.8629 13.3673 97.4343 12.6735C97.0058 11.9592 96.7915 11.051 96.7915 9.94898C96.7915 8.41837 97.4037 7.2551 98.6282 6.45918C99.8731 5.64286 101.434 5.23469 103.312 5.23469C105.251 5.23469 106.822 5.71429 108.026 6.67347C109.23 7.61224 109.832 8.82653 109.832 10.3163Z\"\n fill=\"#26272A\"\n />\n <path\n d=\"M116.471 7.83673V19.3163C116.471 20.0102 116.665 20.5306 117.053 20.8776C117.441 21.2245 117.941 21.398 118.553 21.398H120.145V23.4796H118.553C117.369 23.4796 116.38 23.102 115.584 22.3469C114.788 21.5918 114.39 20.5816 114.39 19.3163V7.83673H112.308V5.7551H114.39V1.7449H116.471V5.7551H120.145V7.83673H116.471Z\"\n fill=\"#26272A\"\n />\n </svg>\n }\n </div>\n\n <!-- Thread History List Container -->\n <thread-history-list class=\"flex flex-1 flex-col p-2 overflow-y-scroll custom-scrollbar custom-scrollbar-no-gutter\"></thread-history-list>\n\n <!-- User Profile Section -->\n @if (hasUsername()) {\n <div\n class=\"thread-history__user-profile\"\n [ngClass]=\"{\n 'flex items-center gap-3 px-4 py-3 mt-auto border-t border-border-default': true,\n }\"\n >\n <!-- User Avatar -->\n <div\n class=\"thread-history__user-avatar\"\n [ngClass]=\"{\n 'flex items-center justify-center w-6 h-6 rounded-full bg-app-accent-color-1 text-white text-neutrals-0 font-weight-600 text-[12px] flex-shrink-0': true,\n }\"\n >\n {{ userInitial() }}\n </div>\n\n <!-- User Info -->\n <div\n class=\"thread-history__user-info\"\n [ngClass]=\"{\n 'flex flex-col flex-1 min-w-0': true,\n }\"\n >\n <span\n [ngClass]=\"{\n 'text-text-default text-[12px] leading-[12px] font-weight-400 truncate': true,\n }\"\n [attr.title]=\"username()\"\n >\n {{ username() }}\n </span>\n </div>\n </div>\n }\n\n <!-- Thread History Footer TODO: Revert and implement once we decide to support chat model picking -->\n <!-- <div class=\"flex items-center px-4 py-2 border-t border-proto-border-default\">\n <select\n class=\"p-2 border border-proto-border-default rounded text-proto-text-default bg-proto-background-light w-full\"\n >\n <option value=\"gpt-4\">GPT-4</option>\n <option value=\"gpt-3.5-turbo\">GPT-3.5 Turbo</option>\n </select>\n </div> -->\n</div>" }]
|
|
6210
6210
|
}] });
|
|
6211
6211
|
|
|
6212
6212
|
const COMPONENTS$1 = [
|
|
@@ -6250,7 +6250,7 @@ class ChatComponent {
|
|
|
6250
6250
|
provide: ComponentEffectManagerService,
|
|
6251
6251
|
useFactory: () => new ComponentEffectManagerService('ChatComponent'),
|
|
6252
6252
|
},
|
|
6253
|
-
], ngImport: i0, template: "@let showMessageArea = isLoadingMessages() || messageLength() > 0;\n@let showWelcomeMessage = !showMessageArea;\n@let showFavoritePrompts = !showMessageArea && hasFavoritePrompts();\n\n<div\n [ngClass]=\"{\n 'flex flex-1 min-h-0 overflow-hidden': true,\n }\"\n>\n @if (isThreadHistoryDisplayed()) {\n <thread-history></thread-history>\n }\n\n <div\n [ngClass]=\"{\n 'flex flex-col flex-1 min-h-0 min-w-0 items-center justify-end': true,\n }\"\n >\n <!-- Chat Header -->\n <header></header>\n\n <!-- Chat Main Content -->\n <div\n [ngClass]=\"{\n 'flex flex-col flex-1 min-h-0 pb-0 w-full overflow-x-hidden overflow-auto custom-scrollbar custom-scrollbar-no-gutter': true,\n 'pt-24 md:pt-20 gap-12 md:gap-14': !showMessageArea,\n 'pt-0 gap-0': showMessageArea,\n }\"\n >\n @if (showWelcomeMessage) {\n <div\n [ngClass]=\"{\n 'flex flex-col gap-3 items-center px-4 pt-[160px]': true,\n }\"\n >\n <h2\
|
|
6253
|
+
], ngImport: i0, template: "@let showMessageArea = isLoadingMessages() || messageLength() > 0;\n@let showWelcomeMessage = !showMessageArea;\n@let showFavoritePrompts = !showMessageArea && hasFavoritePrompts();\n\n<div\n [ngClass]=\"{\n 'flex flex-1 min-h-0 overflow-hidden': true,\n }\"\n>\n @if (isThreadHistoryDisplayed()) {\n <thread-history></thread-history>\n }\n\n <div\n [ngClass]=\"{\n 'flex flex-col flex-1 min-h-0 min-w-0 items-center justify-end': true,\n }\"\n >\n <!-- Chat Header -->\n <header></header>\n\n <!-- Chat Main Content -->\n <div\n [ngClass]=\"{\n 'flex flex-col flex-1 min-h-0 pb-0 w-full overflow-x-hidden overflow-auto custom-scrollbar custom-scrollbar-no-gutter': true,\n 'pt-24 md:pt-20 gap-12 md:gap-14': !showMessageArea,\n 'pt-0 gap-0': showMessageArea,\n }\"\n >\n @if (showWelcomeMessage) {\n <div\n [ngClass]=\"{\n 'flex flex-col gap-3 items-center px-4 pt-[160px]': true,\n }\"\n >\n <h2 data-testid=\"welcome-message\" [ngClass]=\"{\n 'text-[28px] font-bold text-text-states-active text-center': true,\n 'md:text-[44px]': true,\n }\"\n >\n {{ UI_STRINGS.GENERAL.WELCOME_MESSAGE(loggedInUser()) }}\n </h2>\n </div>\n }\n\n <div\n [ngClass]=\"{\n 'flex flex-1 min-h-0 flex-col items-center': true,\n 'gap-6': !showMessageArea,\n 'gap-0': showMessageArea,\n }\"\n >\n @if (showMessageArea) {\n <message-area\n [ngClass]=\"{\n 'flex-1 flex flex-col min-h-0 w-full': true,\n }\"\n ></message-area>\n }\n\n <input-area\n [ngClass]=\"{\n 'flex max-w-[920px] w-full px-4': true,\n 'md:max-w-[720px]': true,\n }\"\n ></input-area>\n\n @if (showFavoritePrompts) {\n <favorite-prompt-list\n [ngClass]=\"{\n 'max-w-[920px] w-full px-4': true,\n }\"\n ></favorite-prompt-list>\n }\n\n <div\n [ngClass]=\"{\n 'flex justify-center items-end text-center p-4': true,\n 'pt-4': showMessageArea,\n 'flex-1 pt-0': !showMessageArea,\n }\"\n >\n <span\n [ngClass]=\"{\n 'text-xs text-text-default tracking-wide': true,\n }\"\n >{{ UI_STRINGS.GENERAL.AI_CONTENT_INFO }}</span\n >\n </div>\n </div>\n </div>\n </div>\n</div>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: ThreadHistoryComponent, selector: "thread-history" }, { kind: "component", type: FavoritePromptListComponent, selector: "favorite-prompt-list" }, { kind: "component", type: InputAreaComponent, selector: "input-area" }, { kind: "component", type: HeaderComponent, selector: "header" }, { kind: "component", type: MessageAreaComponent, selector: "message-area" }] });
|
|
6254
6254
|
}
|
|
6255
6255
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.22", ngImport: i0, type: ChatComponent, decorators: [{
|
|
6256
6256
|
type: Component,
|
|
@@ -6263,7 +6263,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.22", ngImpo
|
|
|
6263
6263
|
},
|
|
6264
6264
|
], host: {
|
|
6265
6265
|
class: 'flex flex-1 flex-col bg-app-background min-h-0 text-app-text-default',
|
|
6266
|
-
}, template: "@let showMessageArea = isLoadingMessages() || messageLength() > 0;\n@let showWelcomeMessage = !showMessageArea;\n@let showFavoritePrompts = !showMessageArea && hasFavoritePrompts();\n\n<div\n [ngClass]=\"{\n 'flex flex-1 min-h-0 overflow-hidden': true,\n }\"\n>\n @if (isThreadHistoryDisplayed()) {\n <thread-history></thread-history>\n }\n\n <div\n [ngClass]=\"{\n 'flex flex-col flex-1 min-h-0 min-w-0 items-center justify-end': true,\n }\"\n >\n <!-- Chat Header -->\n <header></header>\n\n <!-- Chat Main Content -->\n <div\n [ngClass]=\"{\n 'flex flex-col flex-1 min-h-0 pb-0 w-full overflow-x-hidden overflow-auto custom-scrollbar custom-scrollbar-no-gutter': true,\n 'pt-24 md:pt-20 gap-12 md:gap-14': !showMessageArea,\n 'pt-0 gap-0': showMessageArea,\n }\"\n >\n @if (showWelcomeMessage) {\n <div\n [ngClass]=\"{\n 'flex flex-col gap-3 items-center px-4 pt-[160px]': true,\n }\"\n >\n <h2\
|
|
6266
|
+
}, template: "@let showMessageArea = isLoadingMessages() || messageLength() > 0;\n@let showWelcomeMessage = !showMessageArea;\n@let showFavoritePrompts = !showMessageArea && hasFavoritePrompts();\n\n<div\n [ngClass]=\"{\n 'flex flex-1 min-h-0 overflow-hidden': true,\n }\"\n>\n @if (isThreadHistoryDisplayed()) {\n <thread-history></thread-history>\n }\n\n <div\n [ngClass]=\"{\n 'flex flex-col flex-1 min-h-0 min-w-0 items-center justify-end': true,\n }\"\n >\n <!-- Chat Header -->\n <header></header>\n\n <!-- Chat Main Content -->\n <div\n [ngClass]=\"{\n 'flex flex-col flex-1 min-h-0 pb-0 w-full overflow-x-hidden overflow-auto custom-scrollbar custom-scrollbar-no-gutter': true,\n 'pt-24 md:pt-20 gap-12 md:gap-14': !showMessageArea,\n 'pt-0 gap-0': showMessageArea,\n }\"\n >\n @if (showWelcomeMessage) {\n <div\n [ngClass]=\"{\n 'flex flex-col gap-3 items-center px-4 pt-[160px]': true,\n }\"\n >\n <h2 data-testid=\"welcome-message\" [ngClass]=\"{\n 'text-[28px] font-bold text-text-states-active text-center': true,\n 'md:text-[44px]': true,\n }\"\n >\n {{ UI_STRINGS.GENERAL.WELCOME_MESSAGE(loggedInUser()) }}\n </h2>\n </div>\n }\n\n <div\n [ngClass]=\"{\n 'flex flex-1 min-h-0 flex-col items-center': true,\n 'gap-6': !showMessageArea,\n 'gap-0': showMessageArea,\n }\"\n >\n @if (showMessageArea) {\n <message-area\n [ngClass]=\"{\n 'flex-1 flex flex-col min-h-0 w-full': true,\n }\"\n ></message-area>\n }\n\n <input-area\n [ngClass]=\"{\n 'flex max-w-[920px] w-full px-4': true,\n 'md:max-w-[720px]': true,\n }\"\n ></input-area>\n\n @if (showFavoritePrompts) {\n <favorite-prompt-list\n [ngClass]=\"{\n 'max-w-[920px] w-full px-4': true,\n }\"\n ></favorite-prompt-list>\n }\n\n <div\n [ngClass]=\"{\n 'flex justify-center items-end text-center p-4': true,\n 'pt-4': showMessageArea,\n 'flex-1 pt-0': !showMessageArea,\n }\"\n >\n <span\n [ngClass]=\"{\n 'text-xs text-text-default tracking-wide': true,\n }\"\n >{{ UI_STRINGS.GENERAL.AI_CONTENT_INFO }}</span\n >\n </div>\n </div>\n </div>\n </div>\n</div>" }]
|
|
6267
6267
|
}] });
|
|
6268
6268
|
|
|
6269
6269
|
const MCPRemoteServerConfigSchema = z.object({
|