@genexus/genexus-ide-ui 1.0.38 → 1.0.39
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/genexus-ide-ui.cjs.js +1 -1
- package/dist/cjs/gx-ide-ai-assistant.cjs.entry.js +26 -16
- package/dist/cjs/gx-ide-ai-assistant.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-ai-message.cjs.entry.js +22 -11
- package/dist/cjs/gx-ide-ai-message.cjs.entry.js.map +1 -1
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/collection/components/ai-assistant/ai-assistant.js +26 -35
- package/dist/collection/components/ai-assistant/ai-assistant.js.map +1 -1
- package/dist/collection/components/ai-assistant/ai-message.css +13 -11
- package/dist/collection/components/ai-assistant/ai-message.js +41 -13
- package/dist/collection/components/ai-assistant/ai-message.js.map +1 -1
- package/dist/components/ai-message.js +23 -11
- package/dist/components/ai-message.js.map +1 -1
- package/dist/components/gx-ide-ai-assistant.js +28 -18
- package/dist/components/gx-ide-ai-assistant.js.map +1 -1
- package/dist/esm/genexus-ide-ui.js +1 -1
- package/dist/esm/gx-ide-ai-assistant.entry.js +27 -17
- package/dist/esm/gx-ide-ai-assistant.entry.js.map +1 -1
- package/dist/esm/gx-ide-ai-message.entry.js +22 -11
- package/dist/esm/gx-ide-ai-message.entry.js.map +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/genexus-ide-ui/genexus-ide-ui.esm.js +1 -1
- package/dist/genexus-ide-ui/genexus-ide-ui.esm.js.map +1 -1
- package/dist/genexus-ide-ui/{p-798eb91a.entry.js → p-6e993843.entry.js} +42 -22
- package/dist/genexus-ide-ui/p-6e993843.entry.js.map +1 -0
- package/dist/genexus-ide-ui/{p-a7dcfedd.entry.js → p-fdd9de33.entry.js} +62 -54
- package/dist/genexus-ide-ui/p-fdd9de33.entry.js.map +1 -0
- package/dist/types/components/ai-assistant/ai-assistant.d.ts +1 -6
- package/dist/types/components/ai-assistant/ai-message.d.ts +5 -0
- package/dist/types/components.d.ts +8 -19
- package/package.json +1 -1
- package/dist/genexus-ide-ui/p-798eb91a.entry.js.map +0 -1
- package/dist/genexus-ide-ui/p-a7dcfedd.entry.js.map +0 -1
|
@@ -6,22 +6,27 @@ import { L as i } from "./p-311eedf3.js";
|
|
|
6
6
|
|
|
7
7
|
import { h as o } from "./p-960c4988.js";
|
|
8
8
|
|
|
9
|
-
const t = ':host{font-family:var(--mer-font-family--primary)}.message{color:var(--mer-color__neutral-gray--100);display:grid;grid-template-rows:0fr;transition:grid-template-rows 100ms;transition:grid-template-rows 100ms, -ms-grid-rows 100ms;}.message__outer-wrapper{overflow:hidden}.message__inner-wrapper{padding:var(--mer-spacing--sm) var(--mer-spacing--sm);border-radius:var(--mer-border__radius--sm);border-inline-start:var(--mer-border__width--md) solid transparent;background-color:var(--mer-color__neutral-gray--1200);margin-block-start:var(--mer-spacing--xs);position:relative}.message__header{display:flex;gap:var(--mer-spacing--xs);justify-content:space-between
|
|
9
|
+
const t = ':host{font-family:var(--mer-font-family--primary)}.message{color:var(--mer-color__neutral-gray--100);display:grid;grid-template-rows:0fr;transition:grid-template-rows 100ms;transition:grid-template-rows 100ms, -ms-grid-rows 100ms;}.message__outer-wrapper{overflow:hidden}.message__inner-wrapper{padding:var(--mer-spacing--sm) var(--mer-spacing--sm);border-radius:var(--mer-border__radius--sm);border-inline-start:var(--mer-border__width--md) solid transparent;background-color:var(--mer-color__neutral-gray--1200);margin-block-start:var(--mer-spacing--xs);position:relative}.message__header{display:flex;gap:var(--mer-spacing--xs);justify-content:space-between}.message__header .icon-md{opacity:0}.message__header--in-progress{display:contents}.message__role{font-weight:var(--mer-font__weight--semi-bold);margin-block-end:var(--mer-spacing--xs);display:inline-grid;grid-template-columns:max-content 1fr;gap:8px}.message__role:before{content:"";display:grid;place-self:center flex-end;inline-size:4px;block-size:4px;border-radius:50%;background-color:currentcolor}.message__role-description{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:inline-block;padding-block-start:2px}.message__role--user{color:var(--mer-color__primary--300)}.message__role--hidden{display:none}.message__caption{font-size:var(--mer-font__size--xs);line-height:var(--mer-line-height--regular)}.message--visible{grid-template-rows:1fr}.message--copying{pointer-events:none}.message--copying span:not(.copied),.message--copying .message__caption{color:transparent;-webkit-user-select:none;-ms-user-select:none;user-select:none;}.message--user .message__inner-wrapper{background-color:rgba(91, 167, 255, 0.08);border-color:var(--mer-border-color__primary)}.message--assistant-action .message__inner-wrapper{background-color:rgba(63, 168, 155, 0.05);border-color:var(--mer-border-color__success)}.message--assistant-chat .message__inner-wrapper{background-color:var(--mer-surface__elevation--01)}.message--assistant-in-progress{color:var(--mer-color__neutral-gray--500)}.message--assistant-in-progress .message__inner-wrapper{font-style:italic;display:grid;grid-template-columns:1fr auto;gap:var(--mer-spacing--xs)}.message--assistant-in-progress .message__inner-wrapper .message__caption{flex:1}.message--assistant-in-progress .message__inner-wrapper .animation-wrapper{flex:none}.message--assistant-error .message__inner-wrapper{background-color:rgba(251, 124, 132, 0.05);border-color:var(--mer-border-color__error)}.message--copyable:hover{filter:brightness(1.2)}.message--copyable:hover .icon-md{opacity:1}.message:last-child{margin-block-end:0}:host(:first-child) .message__inner-wrapper{margin-block-end:0}.animation-wrapper{width:45px;display:flex;align-items:center;justify-content:center}.dot-pulse{position:relative;left:-9999px;width:5px;height:5px;border-radius:2.5px;background-color:var(--mer-color__neutral-gray--400);color:var(--mer-color__neutral-gray--400);box-shadow:9999px 0 0 -5px;animation:dot-pulse 1.5s infinite linear;animation-delay:0.25s}.dot-pulse::before,.dot-pulse::after{content:"";display:inline-block;position:absolute;top:0;width:5px;height:5px;border-radius:2.5px;background-color:var(--mer-color__neutral-gray--400);color:var(--mer-color__neutral-gray--400)}.dot-pulse::before{box-shadow:9984px 0 0 -5px;animation:dot-pulse-before 1.5s infinite linear;animation-delay:0s}.dot-pulse::after{box-shadow:10014px 0 0 -5px;animation:dot-pulse-after 1.5s infinite linear;animation-delay:0.5s}@keyframes dot-pulse-before{0%{box-shadow:9984px 0 0 -5px}30%{box-shadow:9984px 0 0 2px}60%,100%{box-shadow:9984px 0 0 -5px}}@keyframes dot-pulse{0%{box-shadow:9999px 0 0 -5px}30%{box-shadow:9999px 0 0 2px}60%,100%{box-shadow:9999px 0 0 -5px}}@keyframes dot-pulse-after{0%{box-shadow:10014px 0 0 -5px}30%{box-shadow:10014px 0 0 2px}60%,100%{box-shadow:10014px 0 0 -5px}}.copied{position:absolute;width:100%;height:100%;top:0;left:0;display:flex;align-items:center;justify-content:center;color:var(--mer-color__neutral-gray--300);display:flex;gap:var(--mer-spacing--xs);opacity:0;animation:fadeIn var(--mer-timing--regular) ease-out forwards}@keyframes fadeIn{0%{opacity:0}100%{opacity:1}}.hiChar{color:var(--mer-color__primary--200);filter:brightness(1.3)}';
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
var n = undefined && undefined.__classPrivateFieldGet || function(e, s, r, a) {
|
|
12
|
+
if (r === "a" && !a) throw new TypeError("Private accessor was defined without a getter");
|
|
13
|
+
if (typeof s === "function" ? e !== s || !a : !s.has(e)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
14
|
+
return r === "m" ? a : r === "a" ? a.call(e) : a ? a.value : s.get(e);
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
var l;
|
|
18
|
+
|
|
19
|
+
const p = a({
|
|
12
20
|
category: "bpm",
|
|
13
21
|
name: "tasks",
|
|
14
22
|
colorType: "neutral"
|
|
15
23
|
});
|
|
16
24
|
|
|
17
|
-
const
|
|
25
|
+
const d = class {
|
|
18
26
|
constructor(r) {
|
|
19
27
|
e(this, r);
|
|
20
28
|
this.copyable = false;
|
|
21
|
-
|
|
22
|
-
// 8.PUBLIC METHODS API //
|
|
23
|
-
// 9.LOCAL METHODS //
|
|
24
|
-
this.copyMessage = () => {
|
|
29
|
+
this.copyMessage = () => {
|
|
25
30
|
const e = JSON.stringify({
|
|
26
31
|
messageType: this.messageType,
|
|
27
32
|
message: this.message
|
|
@@ -32,23 +37,31 @@ const l = class {
|
|
|
32
37
|
this.showCopiedMessage = false;
|
|
33
38
|
}), 1500);
|
|
34
39
|
};
|
|
40
|
+
l.set(this, (e => {
|
|
41
|
+
e.preventDefault();
|
|
42
|
+
e.stopPropagation();
|
|
43
|
+
}));
|
|
35
44
|
this.evaluateMessageIsCopyable = () => {
|
|
36
45
|
this.copyable = this.messageType !== "assistant-in-progress";
|
|
37
46
|
};
|
|
38
|
-
this.evaluateCopyIcon = () => this.copyable ? s("
|
|
47
|
+
this.evaluateCopyIcon = () => this.copyable ? s("button", {
|
|
48
|
+
class: "button-tertiary button-icon-only",
|
|
49
|
+
"aria-label": "copy",
|
|
50
|
+
onClick: this.copyMessage,
|
|
51
|
+
onMouseDown: n(this, l, "f")
|
|
52
|
+
}, s("ch-image", {
|
|
39
53
|
class: "icon-md",
|
|
40
|
-
src:
|
|
41
|
-
}) : null;
|
|
54
|
+
src: p
|
|
55
|
+
})) : null;
|
|
42
56
|
this.visible = false;
|
|
43
57
|
this.showCopiedMessage = false;
|
|
58
|
+
this.aiAssistantHostRef = undefined;
|
|
44
59
|
this.message = undefined;
|
|
45
60
|
this.messageType = undefined;
|
|
46
61
|
this.filterValue = undefined;
|
|
47
62
|
this.hidden = undefined;
|
|
48
63
|
this.translations = undefined;
|
|
49
64
|
}
|
|
50
|
-
// 5.EVENTS (EMIT) //
|
|
51
|
-
// 6.COMPONENT LIFECYCLE METHODS //
|
|
52
65
|
async componentWillLoad() {
|
|
53
66
|
this._componentLocale = await i.getComponentStrings(this.el);
|
|
54
67
|
this.evaluateMessageIsCopyable();
|
|
@@ -61,7 +74,6 @@ const l = class {
|
|
|
61
74
|
e.scrollTo(0, 0);
|
|
62
75
|
}), 0);
|
|
63
76
|
}
|
|
64
|
-
// 10.RENDER() FUNCTION //
|
|
65
77
|
render() {
|
|
66
78
|
return s("li", {
|
|
67
79
|
class: {
|
|
@@ -71,8 +83,7 @@ const l = class {
|
|
|
71
83
|
"message--assistant": this.messageType !== "user",
|
|
72
84
|
"message--copyable": this.copyable,
|
|
73
85
|
"message--copying": this.showCopiedMessage
|
|
74
|
-
}
|
|
75
|
-
onClick: this.copyable && this.copyMessage
|
|
86
|
+
}
|
|
76
87
|
}, s("div", {
|
|
77
88
|
class: "message__outer-wrapper"
|
|
78
89
|
}, s("div", {
|
|
@@ -83,15 +94,22 @@ const l = class {
|
|
|
83
94
|
class: "message__header"
|
|
84
95
|
}, s("span", {
|
|
85
96
|
class: "message__role message__role--user"
|
|
86
|
-
},
|
|
87
|
-
class: "
|
|
97
|
+
}, s("span", {
|
|
98
|
+
class: "message__role-description"
|
|
99
|
+
}, this._componentLocale.you)), this.evaluateCopyIcon()) : s("div", {
|
|
100
|
+
class: {
|
|
101
|
+
message__header: true,
|
|
102
|
+
"message__header--in-progress": this.messageType === "assistant-in-progress"
|
|
103
|
+
}
|
|
88
104
|
}, s("span", {
|
|
89
105
|
class: {
|
|
90
106
|
message__role: this.messageType !== "assistant-in-progress",
|
|
91
107
|
"message__role--hidden": this.messageType === "assistant-in-progress",
|
|
92
108
|
"message__role--assistant": true
|
|
93
109
|
}
|
|
94
|
-
},
|
|
110
|
+
}, s("span", {
|
|
111
|
+
class: "message__role-description"
|
|
112
|
+
}, this._componentLocale.assistant)), this.evaluateCopyIcon()), s("div", {
|
|
95
113
|
class: {
|
|
96
114
|
message__caption: true,
|
|
97
115
|
"message__caption--in-progress": this.messageType === "assistant-in-progress"
|
|
@@ -100,7 +118,7 @@ const l = class {
|
|
|
100
118
|
class: "copied"
|
|
101
119
|
}, s("ch-image", {
|
|
102
120
|
class: "icon-md",
|
|
103
|
-
src:
|
|
121
|
+
src: p
|
|
104
122
|
}), this.translations["copied"]) : null, o(this.message, this.filterValue)), this.messageType === "assistant-in-progress" ? s("div", {
|
|
105
123
|
class: "animation-wrapper"
|
|
106
124
|
}, s("div", {
|
|
@@ -115,7 +133,9 @@ const l = class {
|
|
|
115
133
|
}
|
|
116
134
|
};
|
|
117
135
|
|
|
118
|
-
l
|
|
136
|
+
l = new WeakMap;
|
|
137
|
+
|
|
138
|
+
d.style = t;
|
|
119
139
|
|
|
120
|
-
export {
|
|
121
|
-
//# sourceMappingURL=p-
|
|
140
|
+
export { d as gx_ide_ai_message };
|
|
141
|
+
//# sourceMappingURL=p-6e993843.entry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["aiMessageCss","COPY_ICON","getIconPath","category","name","colorType","GxIdeAiMessage","this","copyable","copyMessage","messageInfo","JSON","stringify","messageType","message","navigator","clipboard","writeText","showCopiedMessage","setTimeout","_GxIdeAiMessage_buttonMouseDownHandler","set","e","preventDefault","stopPropagation","evaluateMessageIsCopyable","evaluateCopyIcon","h","class","onClick","onMouseDown","__classPrivateFieldGet","src","componentWillLoad","_componentLocale","Locale","getComponentStrings","el","componentDidRender","visible","messagesList","parentElement","scrollTo","render","hidden","you","message__header","message__role","assistant","message__caption","translations","hiChar","filterValue"],"sources":["src/components/ai-assistant/ai-message.scss?tag=gx-ide-ai-message","src/components/ai-assistant/ai-message.tsx"],"sourcesContent":["@import \"../../global/gx-ide-mixins.scss\";\n\n:host {\n font-family: var(--mer-font-family--primary);\n}\n/*--- Messages ---*/\n.message {\n color: var(--mer-color__neutral-gray--100);\n display: grid;\n grid-template-rows: 0fr;\n transition: grid-template-rows 100ms;\n transition: grid-template-rows 100ms, -ms-grid-rows 100ms;\n &__outer-wrapper {\n overflow: hidden;\n }\n &__inner-wrapper {\n padding: var(--mer-spacing--sm) var(--mer-spacing--sm);\n border-radius: var(--mer-border__radius--sm);\n border-inline-start: var(--mer-border__width--md) solid transparent;\n background-color: var(--mer-color__neutral-gray--1200);\n margin-block-start: var(--mer-spacing--xs);\n position: relative;\n }\n &__header {\n display: flex;\n gap: var(--mer-spacing--xs);\n justify-content: space-between;\n\n .icon-md {\n opacity: 0;\n }\n\n &--in-progress {\n display: contents;\n }\n }\n &__role {\n &:before {\n content: \"\";\n display: grid;\n place-self: center flex-end;\n inline-size: 4px;\n block-size: 4px;\n border-radius: 50%;\n background-color: currentcolor;\n }\n\n font-weight: var(--mer-font__weight--semi-bold);\n margin-block-end: var(--mer-spacing--xs);\n display: inline-grid;\n grid-template-columns: max-content 1fr;\n gap: 8px;\n\n &-description {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n display: inline-block;\n padding-block-start: 2px;\n }\n &--user {\n color: var(--mer-color__primary--300);\n }\n &--assistant {\n }\n &--hidden {\n display: none;\n }\n }\n &__caption {\n font-size: var(--mer-font__size--xs);\n line-height: var(--mer-line-height--regular);\n }\n &--visible {\n grid-template-rows: 1fr;\n }\n &--copying {\n pointer-events: none;\n span:not(.copied),\n .message__caption {\n color: transparent;\n -webkit-user-select: none; /* Safari */\n -ms-user-select: none; /* IE 10 and IE 11 */\n user-select: none; /* Standard syntax */\n }\n }\n /*--- Types of messages ---*/\n &--user {\n .message__inner-wrapper {\n background-color: rgba(91, 167, 255, 0.08);\n border-color: var(--mer-border-color__primary);\n }\n }\n &--assistant-action {\n .message__inner-wrapper {\n background-color: rgba(63, 168, 155, 0.05);\n border-color: var(--mer-border-color__success);\n }\n }\n &--assistant-chat {\n .message__inner-wrapper {\n background-color: var(--mer-surface__elevation--01);\n }\n }\n &--assistant-in-progress {\n color: var(--mer-color__neutral-gray--500);\n .message__inner-wrapper {\n font-style: italic;\n display: grid;\n grid-template-columns: 1fr auto;\n gap: var(--mer-spacing--xs);\n\n .message__caption {\n flex: 1;\n }\n .animation-wrapper {\n flex: none;\n }\n }\n }\n &--assistant-error {\n .message__inner-wrapper {\n background-color: rgba(251, 124, 132, 0.05);\n border-color: var(--mer-border-color__error);\n }\n }\n &--copyable {\n &:hover {\n filter: brightness(1.2);\n .icon-md {\n opacity: 1;\n }\n }\n }\n &:last-child {\n margin-block-end: 0;\n }\n}\n:host(:first-child) {\n .message {\n &__inner-wrapper {\n margin-block-end: 0;\n }\n }\n}\n\n/*--- Dot Pulse Sweet Animation ---*/\n.animation-wrapper {\n width: 45px;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n$color: var(--mer-color__neutral-gray--400);\n.dot-pulse {\n position: relative;\n left: -9999px;\n width: 5px;\n height: 5px;\n border-radius: 2.5px;\n background-color: $color;\n color: $color;\n box-shadow: 9999px 0 0 -5px;\n animation: dot-pulse 1.5s infinite linear;\n animation-delay: 0.25s;\n &::before,\n &::after {\n content: \"\";\n display: inline-block;\n position: absolute;\n top: 0;\n width: 5px;\n height: 5px;\n border-radius: 2.5px;\n background-color: $color;\n color: $color;\n }\n &::before {\n box-shadow: 9984px 0 0 -5px;\n animation: dot-pulse-before 1.5s infinite linear;\n animation-delay: 0s;\n }\n &::after {\n box-shadow: 10014px 0 0 -5px;\n animation: dot-pulse-after 1.5s infinite linear;\n animation-delay: 0.5s;\n }\n}\n@keyframes dot-pulse-before {\n 0% {\n box-shadow: 9984px 0 0 -5px;\n }\n 30% {\n box-shadow: 9984px 0 0 2px;\n }\n 60%,\n 100% {\n box-shadow: 9984px 0 0 -5px;\n }\n}\n@keyframes dot-pulse {\n 0% {\n box-shadow: 9999px 0 0 -5px;\n }\n 30% {\n box-shadow: 9999px 0 0 2px;\n }\n 60%,\n 100% {\n box-shadow: 9999px 0 0 -5px;\n }\n}\n@keyframes dot-pulse-after {\n 0% {\n box-shadow: 10014px 0 0 -5px;\n }\n 30% {\n box-shadow: 10014px 0 0 2px;\n }\n 60%,\n 100% {\n box-shadow: 10014px 0 0 -5px;\n }\n}\n\n/*--- Copy Message ---*/\n.copied {\n position: absolute;\n width: 100%;\n height: 100%;\n top: 0;\n left: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mer-color__neutral-gray--300);\n display: flex;\n gap: var(--mer-spacing--xs);\n opacity: 0;\n animation: fadeIn var(--mer-timing--regular) ease-out forwards;\n}\n\n@keyframes fadeIn {\n 0% {\n opacity: 0;\n }\n 100% {\n opacity: 1;\n }\n}\n\n@include hiChar;\n","import { Component, h, Prop, Element, State } from \"@stencil/core\";\n\nimport { getIconPath } from \"@genexus/mercury\";\n\nimport { Locale } from \"../../common/locale\";\nimport { MessageType } from \"./ai-assistant\";\nimport { hiChar } from \"../../common/helpers\";\n\nconst COPY_ICON = getIconPath({\n category: \"bpm\",\n name: \"tasks\",\n colorType: \"neutral\"\n});\n\n@Component({\n tag: \"gx-ide-ai-message\",\n styleUrl: \"ai-message.scss\",\n shadow: false,\n assetsDirs: [\"gx-ide-assets/ai-message\"]\n})\nexport class GxIdeAiMessage {\n /* The message allows to be copied*/\n private _componentLocale: any;\n private copyable = false;\n\n @Element() el: HTMLGxIdeAiMessageElement;\n\n /**\n * This wil display the message if true\n */\n @State() visible = false;\n\n /**\n * This wil show the user a text, indicating that the message has been copied\n */\n @State() showCopiedMessage = false;\n\n /**\n * A reference to the gx-ide-ai-assistant host element\n */\n @Prop() readonly aiAssistantHostRef: HTMLGxIdeAiAssistantElement;\n\n /**\n * The actual message\n */\n @Prop() readonly message: string;\n\n /**\n * The message type\n */\n @Prop() readonly messageType: MessageType;\n\n /**\n * The filter value\n */\n @Prop() readonly filterValue: string;\n\n /**\n * It hides the message (used for the filter)\n */\n @Prop() readonly hidden: boolean;\n\n /**\n * An object with the needed string translations.\n */\n @Prop() readonly translations: Translations;\n\n async componentWillLoad() {\n this._componentLocale = await Locale.getComponentStrings(this.el);\n this.evaluateMessageIsCopyable();\n }\n\n componentDidRender() {\n setTimeout(() => {\n /* Without the timeout it appears instantly (no apparent transition)*/\n this.visible = true;\n const messagesList = this.el.parentElement;\n messagesList.scrollTo(0, 0);\n }, 0);\n }\n\n private copyMessage = () => {\n const messageInfo = JSON.stringify(\n {\n messageType: this.messageType,\n message: this.message\n },\n null,\n 2\n );\n\n navigator.clipboard.writeText(messageInfo);\n this.showCopiedMessage = true;\n setTimeout(() => {\n this.showCopiedMessage = false;\n }, 1500);\n };\n\n #buttonMouseDownHandler = (e: MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n };\n\n private evaluateMessageIsCopyable = () => {\n this.copyable = this.messageType !== \"assistant-in-progress\";\n };\n\n private evaluateCopyIcon = () => {\n return this.copyable ? (\n <button\n class=\"button-tertiary button-icon-only\"\n aria-label=\"copy\"\n onClick={this.copyMessage}\n onMouseDown={this.#buttonMouseDownHandler}\n >\n <ch-image class=\"icon-md\" src={COPY_ICON}></ch-image>\n </button>\n ) : null;\n };\n\n render() {\n return (\n <li\n class={{\n \"message\": true,\n \"message--visible\": this.visible && !this.hidden,\n [`message--${[this.messageType]}`]: true,\n \"message--assistant\": this.messageType !== \"user\",\n \"message--copyable\": this.copyable,\n \"message--copying\": this.showCopiedMessage\n }}\n >\n <div class=\"message__outer-wrapper\">\n <div\n class={{\n \"message__inner-wrapper\": true\n }}\n >\n {this.messageType === \"user\" ? (\n <div class=\"message__header\">\n <span class=\"message__role message__role--user\">\n <span class=\"message__role-description\">\n {this._componentLocale.you}\n </span>\n </span>\n {this.evaluateCopyIcon()}\n </div>\n ) : (\n <div\n class={{\n \"message__header\": true,\n \"message__header--in-progress\":\n this.messageType === \"assistant-in-progress\"\n }}\n >\n <span\n class={{\n \"message__role\":\n this.messageType !== \"assistant-in-progress\",\n \"message__role--hidden\":\n this.messageType === \"assistant-in-progress\",\n \"message__role--assistant\": true\n }}\n >\n <span class=\"message__role-description\">\n {this._componentLocale.assistant}\n </span>\n </span>\n {this.evaluateCopyIcon()}\n </div>\n )}\n <div\n class={{\n \"message__caption\": true,\n \"message__caption--in-progress\":\n this.messageType === \"assistant-in-progress\"\n }}\n >\n {this.showCopiedMessage ? (\n <span class=\"copied\">\n <ch-image class=\"icon-md\" src={COPY_ICON}></ch-image>\n {this.translations[\"copied\"]}\n </span>\n ) : null}\n {hiChar(this.message, this.filterValue)}\n </div>\n {this.messageType === \"assistant-in-progress\" ? (\n <div class=\"animation-wrapper\">\n <div class=\"dot-pulse\"></div>\n </div>\n ) : null}\n </div>\n </div>\n </li>\n );\n }\n}\n\nexport type Translations = {\n [key: string]: string;\n};\n"],"mappings":";;;;;;;;AAAA,MAAMA,IAAe;;;;;;;;;;ACQrB,MAAMC,IAAYC,EAAY;EAC5BC,UAAU;EACVC,MAAM;EACNC,WAAW;;;MASAC,IAAc;;;IAGjBC,KAAAC,WAAW;IA0DXD,KAAAE,cAAc;MACpB,MAAMC,IAAcC,KAAKC,UACvB;QACEC,aAAaN,KAAKM;QAClBC,SAASP,KAAKO;SAEhB,MACA;MAGFC,UAAUC,UAAUC,UAAUP;MAC9BH,KAAKW,oBAAoB;MACzBC,YAAW;QACTZ,KAAKW,oBAAoB;AAAK,UAC7B;AAAK;IAGVE,EAAAC,IAAAd,OAA2Be;MACzBA,EAAEC;MACFD,EAAEE;AAAiB;IAGbjB,KAAAkB,4BAA4B;MAClClB,KAAKC,WAAWD,KAAKM,gBAAgB;AAAuB;IAGtDN,KAAAmB,mBAAmB,MAClBnB,KAAKC,WACVmB,EAAA;MACEC,OAAM;MAAkC,cAC7B;MACXC,SAAStB,KAAKE;MACdqB,aAAaC,EAAAxB,MAAIa,GAAA;OAEjBO,EAAA;MAAUC,OAAM;MAAUI,KAAK/B;UAE/B;mBAvFa;6BAKU;;;;;;;;EAgC7B,uBAAMgC;IACJ1B,KAAK2B,yBAAyBC,EAAOC,oBAAoB7B,KAAK8B;IAC9D9B,KAAKkB;;EAGP,kBAAAa;IACEnB,YAAW;;MAETZ,KAAKgC,UAAU;MACf,MAAMC,IAAejC,KAAK8B,GAAGI;MAC7BD,EAAaE,SAAS,GAAG;AAAE,QAC1B;;EA0CL,MAAAC;IACE,OACEhB,EAAA;MACEC,OAAO;QACLd,SAAW;QACX,oBAAoBP,KAAKgC,YAAYhC,KAAKqC;QAC1C,CAAC,YAAY,EAACrC,KAAKM,kBAAiB;QACpC,sBAAsBN,KAAKM,gBAAgB;QAC3C,qBAAqBN,KAAKC;QAC1B,oBAAoBD,KAAKW;;OAG3BS,EAAA;MAAKC,OAAM;OACTD,EAAA;MACEC,OAAO;QACL,0BAA0B;;OAG3BrB,KAAKM,gBAAgB,SACpBc,EAAA;MAAKC,OAAM;OACTD,EAAA;MAAMC,OAAM;OACVD,EAAA;MAAMC,OAAM;OACTrB,KAAK2B,iBAAiBW,OAG1BtC,KAAKmB,sBAGRC,EAAA;MACEC,OAAO;QACLkB,iBAAmB;QACnB,gCACEvC,KAAKM,gBAAgB;;OAGzBc,EAAA;MACEC,OAAO;QACLmB,eACExC,KAAKM,gBAAgB;QACvB,yBACEN,KAAKM,gBAAgB;QACvB,4BAA4B;;OAG9Bc,EAAA;MAAMC,OAAM;OACTrB,KAAK2B,iBAAiBc,aAG1BzC,KAAKmB,qBAGVC,EAAA;MACEC,OAAO;QACLqB,kBAAoB;QACpB,iCACE1C,KAAKM,gBAAgB;;OAGxBN,KAAKW,oBACJS,EAAA;MAAMC,OAAM;OACVD,EAAA;MAAUC,OAAM;MAAUI,KAAK/B;QAC9BM,KAAK2C,aAAa,aAEnB,MACHC,EAAO5C,KAAKO,SAASP,KAAK6C,eAE5B7C,KAAKM,gBAAgB,0BACpBc,EAAA;MAAKC,OAAM;OACTD,EAAA;MAAKC,OAAM;UAEX"}
|
|
@@ -1,20 +1,25 @@
|
|
|
1
|
-
import { r as e,
|
|
1
|
+
import { r as e, h as t, H as r, g as a } from "./p-49712340.js";
|
|
2
2
|
|
|
3
|
-
import { L as
|
|
3
|
+
import { L as o } from "./p-311eedf3.js";
|
|
4
4
|
|
|
5
|
-
const s = ":root{--ui-animaton-speed:0.2s}.gxg-title-01{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-01-font-weight);font-size:var(--ds-title-01-font-size);letter-spacing:var(--ds-base-font-letter-spacing--comfortable);color:var(--ds-base-font-color);text-align:start;line-height:var(--ds-base-font-line-height--comfortable)}.gxg-title-01--negative{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-01-font-weight);font-size:var(--ds-title-01-font-size);letter-spacing:var(--ds-base-font-letter-spacing--comfortable);color:var(--ds-base-font-color);text-align:start;line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--negative)}.gxg-title-02{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-02-font-weight);font-size:var(--ds-title-02-font-size);letter-spacing:var(--ds-base-font-letter-spacing--regular);color:var(--ds-base-font-color);text-align:start;text-transform:uppercase;line-height:var(--ds-base-font-line-height--comfortable)}.gxg-title-02--negative{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-02-font-weight);font-size:var(--ds-title-02-font-size);letter-spacing:var(--ds-base-font-letter-spacing--regular);color:var(--ds-base-font-color);text-align:start;text-transform:uppercase;line-height:var(--ds-base-font-line-height--comfortable);color:var(--color-on-primary)}.gxg-title-03{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-03-font-weight);font-size:var(--ds-title-03-font-size);letter-spacing:var(--ds-base-font-letter-spacing--regular);color:var(--ds-base-font-color);text-align:start;text-transform:uppercase;line-height:var(--ds-base-font-line-height--comfortable)}.gxg-title-03--negative{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-03-font-weight);font-size:var(--ds-title-03-font-size);letter-spacing:var(--ds-base-font-letter-spacing--regular);color:var(--ds-base-font-color);text-align:start;text-transform:uppercase;line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--negative)}.gxg-title-04{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-04-font-weight);font-size:var(--ds-title-04-font-size);letter-spacing:var(--ds-base-font-letter-spacing--comfortable);color:var(--ds-base-font-color);text-align:start;line-height:var(--ds-base-font-line-height--comfortable)}.gxg-title-04--negative{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-04-font-weight);font-size:var(--ds-title-04-font-size);letter-spacing:var(--ds-base-font-letter-spacing--comfortable);color:var(--ds-base-font-color);text-align:start;line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--negative)}.gxg-title-05{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-05-font-weight);font-size:var(--ds-title-05-font-size);letter-spacing:var(--ds-base-font-letter-spacing--regular);color:var(--ds-base-font-color);text-align:start;line-height:var(--ds-base-font-line-height--comfortable)}.gxg-title-05--negative{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-05-font-weight);font-size:var(--ds-title-05-font-size);letter-spacing:var(--ds-base-font-letter-spacing--regular);color:var(--ds-base-font-color);text-align:start;line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--negative)}.gxg-text{font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable)}.gxg-text--negative{font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--negative)}.gxg-text--gray{font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--dimmed)}.gxg-quote{font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable);font-style:italic}.gxg-quote--negative{color:var(--ds-base-font-color--negative)}.gxg-link{line-height:unset;font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--link);text-decoration:underline;cursor:pointer;display:inline-block}.gxg-link:hover{color:var(--ds-base-font-color--link-hover)}.gxg-link:active{color:var(--ds-base-font-color--link-active)}.gxg-link-gray{line-height:unset;font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--link);text-decoration:underline;cursor:pointer;display:inline-block;color:var(--ds-base-font-color--dimmed)}.gxg-link-gray:hover{line-height:unset;font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--link);text-decoration:underline;cursor:pointer;display:inline-block;color:var(--ds-base-font-color--dimmed);filter:brightness(1.4)}.gxg-alert-error{font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--error);display:inline-block}.gxg-alert-warning{font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--warning);display:inline-block}.gxg-alert-success{font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--success);display:inline-block}.gxg-tab--disabled{color:var(--color-primary-disabled);pointer-events:none}.gxg-tab--disabled[disabled]{color:var(--color-primary-disabled);pointer-events:none}.gxg-label{font-family:var(--ds-base-font-family-primary);font-weight:var(--gxg-label-font-weight);font-size:var(--gxg-label-font-size);color:var(--gxg-label-color);text-align:center;line-height:1.455em;display:flex;align-items:center}.gxg-label:hover{color:var(--color-primary-hover)}.gxg-label:focus{color:var(--color-primary-active)}.gxg-label:active{color:var(--color-primary-active)}.gxg-label[disabled]{color:var(--color-primary-disabled)}.gxg-label--negative{color:var(--color-on-primary)}.gxg-label--negative[disabled]{color:var(--color-on-disabled)}.gxg-scrollbar{}.gxg-scrollbar::-webkit-scrollbar{width:var(--gxg-scrollbar-width);height:var(--gxg-scrollbar-width)}.gxg-scrollbar::-webkit-scrollbar-track{background-color:var(--gxg-scrollbar-track-background);border-radius:var(--gxg-scrollbar-track-border-radius)}.gxg-scrollbar::-webkit-scrollbar-thumb{background-color:var(--gxg-scrollbar-track-thumb-background);border-radius:var(--gxg-scrollbar-track-thumb-radius)}.gxg-scrollbar::-webkit-scrollbar-thumb:hover{background-color:var(--gxg-scrollbar-track-thumb-hover-background)}.gxg-scrollbar::-webkit-scrollbar-corner{background:rgba(0, 0, 0, 0)}@keyframes spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}:host{display:grid;block-size:100%}.card-regular{background-color:var(--mer-surface__elevation--01);border:var(--mer-border__width--sm) solid var(--mer-border-color__on-elevation--01);border-radius:var(--mer-border__radius--md);padding:var(--mer-spacing--md) var(--mer-spacing--md);display:grid}.card-small{background-color:var(--mer-surface__elevation--02);border-radius:var(--mer-border__radius--sm);padding:var(--mer-spacing--sm) var(--mer-spacing--sm)}.card-small--actionable:hover{background-color:var(--mer-color__neutral-gray--600)}.card-small--actionable:active{background-color:var(--mer-color__neutral-gray--650)}.card-small:focus-visible{outline:var(--focus__outline-width) var(--focus__outline-style) var(--focus__outline-color);outline-offset:var(--focus__outline-offset)}.empty-state{block-size:100%;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:var(--mer-spacing--sm);text-align:center}.empty-state__title,.empty-state__button,.empty-state__link{max-inline-size:300px}.opacity-0{opacity:0}.opacity-1{opacity:1}.display-contents{display:contents}.gxi-hidden{display:none !important}.gxi-full-height{height:100%}.gxi-overflow-auto{overflow:auto}.gxi-display-flex{display:flex}.align-start{display:flex;align-items:start}.align-center{display:flex;align-items:center}.align-end{display:flex;align-items:end}.overflow-auto{overflow:auto}.justify-start{display:flex;justify-content:start}.justify-center{display:flex;justify-content:center}.justify-end{display:flex;justify-content:end}.grid{display:grid;grid-row-gap:var(--gx-ide-grid-row-gap);grid-column-gap:var(--gx-ide-grid-column-gap);grid-template-rows:auto}ch-grid-cell{display:flex}ch-grid{overflow:auto;height:100%}ch-grid-column{z-index:99;border-bottom:1px solid var(--mer-color__neutral-gray--800)}ch-grid-column:first-child{padding-inline-start:var(--gx-ide-container__padding) !important}ch-grid-column:last-child{padding-inline-end:var(--gx-ide-container__padding) !important}ch-grid-cell{--mer-spacing--xs:var(--gx-ide-container__padding)}.layout{display:grid;gap:var(--mer-spacing--lg);box-sizing:border-box}.layout--two-cols{grid-template-columns:1fr 1fr}.layout--space-above{padding-block-start:var(--mer-spacing--lg)}gxg-tabs{box-shadow:none}:host(.gx-ide-component){height:100% !important;display:flex !important;flex-direction:column !important}:host(:focus-within) gx-ide-top-bar::part(wrapper){background-color:var(--color-secondary-enabled)}.gx-ide-main-wrapper{color:var(--gx-ide-component-text-color);font-weight:var(--mer-font__weight--regular);font-size:var(--mer-font__size--xs);font-family:var(--mer-font-family--primary);height:100%;background-color:var(--gx-ide-component-background-color);display:flex;flex-direction:column;flex-grow:1;box-sizing:border-box}.gx-ide-main{flex-grow:1;overflow-y:auto;}.gx-ide-main::-webkit-scrollbar{width:var(--gxg-scrollbar-width);height:var(--gxg-scrollbar-width)}.gx-ide-main::-webkit-scrollbar-track{background-color:var(--gxg-scrollbar-track-background);border-radius:var(--gxg-scrollbar-track-border-radius)}.gx-ide-main::-webkit-scrollbar-thumb{background-color:var(--gxg-scrollbar-track-thumb-background);border-radius:var(--gxg-scrollbar-track-thumb-radius)}.gx-ide-main::-webkit-scrollbar-thumb:hover{background-color:var(--gxg-scrollbar-track-thumb-hover-background)}.gx-ide-main::-webkit-scrollbar-corner{background:rgba(0, 0, 0, 0)}.gx-ide-overflow{overflow-y:auto;}.gx-ide-overflow::-webkit-scrollbar{width:var(--gxg-scrollbar-width);height:var(--gxg-scrollbar-width)}.gx-ide-overflow::-webkit-scrollbar-track{background-color:var(--gxg-scrollbar-track-background);border-radius:var(--gxg-scrollbar-track-border-radius)}.gx-ide-overflow::-webkit-scrollbar-thumb{background-color:var(--gxg-scrollbar-track-thumb-background);border-radius:var(--gxg-scrollbar-track-thumb-radius)}.gx-ide-overflow::-webkit-scrollbar-thumb:hover{background-color:var(--gxg-scrollbar-track-thumb-hover-background)}.gx-ide-overflow::-webkit-scrollbar-corner{background:rgba(0, 0, 0, 0)}.tree-view-primary{font-size:var(--mer-font__size--2xs)}p{margin:0;font-size:var(--mer-font__size--xxs)}.buttons-container{display:flex;gap:var(--mer-spacing--xs)}:root{--ui-animaton-speed:0.2s}.gxg-title-01{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-01-font-weight);font-size:var(--ds-title-01-font-size);letter-spacing:var(--ds-base-font-letter-spacing--comfortable);color:var(--ds-base-font-color);text-align:start;line-height:var(--ds-base-font-line-height--comfortable)}.gxg-title-01--negative{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-01-font-weight);font-size:var(--ds-title-01-font-size);letter-spacing:var(--ds-base-font-letter-spacing--comfortable);color:var(--ds-base-font-color);text-align:start;line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--negative)}.gxg-title-02{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-02-font-weight);font-size:var(--ds-title-02-font-size);letter-spacing:var(--ds-base-font-letter-spacing--regular);color:var(--ds-base-font-color);text-align:start;text-transform:uppercase;line-height:var(--ds-base-font-line-height--comfortable)}.gxg-title-02--negative{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-02-font-weight);font-size:var(--ds-title-02-font-size);letter-spacing:var(--ds-base-font-letter-spacing--regular);color:var(--ds-base-font-color);text-align:start;text-transform:uppercase;line-height:var(--ds-base-font-line-height--comfortable);color:var(--color-on-primary)}.gxg-title-03{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-03-font-weight);font-size:var(--ds-title-03-font-size);letter-spacing:var(--ds-base-font-letter-spacing--regular);color:var(--ds-base-font-color);text-align:start;text-transform:uppercase;line-height:var(--ds-base-font-line-height--comfortable)}.gxg-title-03--negative{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-03-font-weight);font-size:var(--ds-title-03-font-size);letter-spacing:var(--ds-base-font-letter-spacing--regular);color:var(--ds-base-font-color);text-align:start;text-transform:uppercase;line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--negative)}.gxg-title-04{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-04-font-weight);font-size:var(--ds-title-04-font-size);letter-spacing:var(--ds-base-font-letter-spacing--comfortable);color:var(--ds-base-font-color);text-align:start;line-height:var(--ds-base-font-line-height--comfortable)}.gxg-title-04--negative{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-04-font-weight);font-size:var(--ds-title-04-font-size);letter-spacing:var(--ds-base-font-letter-spacing--comfortable);color:var(--ds-base-font-color);text-align:start;line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--negative)}.gxg-title-05{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-05-font-weight);font-size:var(--ds-title-05-font-size);letter-spacing:var(--ds-base-font-letter-spacing--regular);color:var(--ds-base-font-color);text-align:start;line-height:var(--ds-base-font-line-height--comfortable)}.gxg-title-05--negative{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-05-font-weight);font-size:var(--ds-title-05-font-size);letter-spacing:var(--ds-base-font-letter-spacing--regular);color:var(--ds-base-font-color);text-align:start;line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--negative)}.gxg-text{font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable)}.gxg-text--negative{font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--negative)}.gxg-text--gray{font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--dimmed)}.gxg-quote{font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable);font-style:italic}.gxg-quote--negative{color:var(--ds-base-font-color--negative)}.gxg-link{line-height:unset;font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--link);text-decoration:underline;cursor:pointer;display:inline-block}.gxg-link:hover{color:var(--ds-base-font-color--link-hover)}.gxg-link:active{color:var(--ds-base-font-color--link-active)}.gxg-link-gray{line-height:unset;font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--link);text-decoration:underline;cursor:pointer;display:inline-block;color:var(--ds-base-font-color--dimmed)}.gxg-link-gray:hover{line-height:unset;font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--link);text-decoration:underline;cursor:pointer;display:inline-block;color:var(--ds-base-font-color--dimmed);filter:brightness(1.4)}.gxg-alert-error{font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--error);display:inline-block}.gxg-alert-warning{font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--warning);display:inline-block}.gxg-alert-success{font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--success);display:inline-block}.gxg-tab--disabled{color:var(--color-primary-disabled);pointer-events:none}.gxg-tab--disabled[disabled]{color:var(--color-primary-disabled);pointer-events:none}.gxg-label{font-family:var(--ds-base-font-family-primary);font-weight:var(--gxg-label-font-weight);font-size:var(--gxg-label-font-size);color:var(--gxg-label-color);text-align:center;line-height:1.455em;display:flex;align-items:center}.gxg-label:hover{color:var(--color-primary-hover)}.gxg-label:focus{color:var(--color-primary-active)}.gxg-label:active{color:var(--color-primary-active)}.gxg-label[disabled]{color:var(--color-primary-disabled)}.gxg-label--negative{color:var(--color-on-primary)}.gxg-label--negative[disabled]{color:var(--color-on-disabled)}.gxg-scrollbar{}.gxg-scrollbar::-webkit-scrollbar{width:var(--gxg-scrollbar-width);height:var(--gxg-scrollbar-width)}.gxg-scrollbar::-webkit-scrollbar-track{background-color:var(--gxg-scrollbar-track-background);border-radius:var(--gxg-scrollbar-track-border-radius)}.gxg-scrollbar::-webkit-scrollbar-thumb{background-color:var(--gxg-scrollbar-track-thumb-background);border-radius:var(--gxg-scrollbar-track-thumb-radius)}.gxg-scrollbar::-webkit-scrollbar-thumb:hover{background-color:var(--gxg-scrollbar-track-thumb-hover-background)}.gxg-scrollbar::-webkit-scrollbar-corner{background:rgba(0, 0, 0, 0)}:host{font-family:var(--mer-font-family--primary);display:block;height:100%;flex-basis:286px;flex-shrink:0;height:100%;overflow-y:auto}.gx-ide-main-wrapper{padding:0 10px 52px 10px;background-color:var(--mer-surface);height:100%;display:grid;grid-template-rows:auto 1fr auto;gap:var(--mer-spacing--sm)}.header{padding-block-start:var(--mer-spacing--sm);display:flex;flex-direction:column}.header__actions-wrapper{display:flex;gap:var(--ai-assistant-header-actions-gap);margin-inline-start:auto}.header__first-row{display:flex;gap:var(--mer-spacing--xs);align-items:center;justify-content:space-between}.header__filter{margin-block-start:var(--mer-spacing--xs)}.header__second-row{transition:100ms grid-template-rows;display:grid;grid-template-rows:0fr}.header__second-row--visible{grid-template-rows:1fr}.header .filter-inner-wrapper{overflow:hidden}.messages-wrapper{position:relative;overflow:auto;display:flex;flex-direction:column;scroll-behavior:smooth;}.messages-wrapper::-webkit-scrollbar{width:var(--gxg-scrollbar-width);height:var(--gxg-scrollbar-width)}.messages-wrapper::-webkit-scrollbar-track{background-color:var(--gxg-scrollbar-track-background);border-radius:var(--gxg-scrollbar-track-border-radius)}.messages-wrapper::-webkit-scrollbar-thumb{background-color:var(--gxg-scrollbar-track-thumb-background);border-radius:var(--gxg-scrollbar-track-thumb-radius)}.messages-wrapper::-webkit-scrollbar-thumb:hover{background-color:var(--gxg-scrollbar-track-thumb-hover-background)}.messages-wrapper::-webkit-scrollbar-corner{background:rgba(0, 0, 0, 0)}.messages{display:flex;flex-direction:column;list-style-type:none;padding:0;margin:0}.prompt{position:relative;margin-top:auto}.prompt__textarea::part(textarea-wrapper){border:none}.prompt__textarea::part(textarea){border:none;background-color:var(--mer-color__neutral-gray--800)}.prompt__shortcuts{position:absolute;display:flex;align-items:center;gap:var(--mer-spacing--2xs);padding-inline-end:var(--mer-spacing--xs);right:0;top:0;height:100%}.prompt__shortcut{color:var(--mer-color__neutral-gray--400);font-size:var(--mer-font__size--2xs);padding:var(--mer-spacing--3xs) var(--mer-spacing--xs);background-color:var(--mer-color__neutral-gray--700);border-radius:var(--mer-border__radius--xs)}";
|
|
5
|
+
const i = ":root{--ui-animaton-speed:0.2s}.gxg-title-01{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-01-font-weight);font-size:var(--ds-title-01-font-size);letter-spacing:var(--ds-base-font-letter-spacing--comfortable);color:var(--ds-base-font-color);text-align:start;line-height:var(--ds-base-font-line-height--comfortable)}.gxg-title-01--negative{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-01-font-weight);font-size:var(--ds-title-01-font-size);letter-spacing:var(--ds-base-font-letter-spacing--comfortable);color:var(--ds-base-font-color);text-align:start;line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--negative)}.gxg-title-02{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-02-font-weight);font-size:var(--ds-title-02-font-size);letter-spacing:var(--ds-base-font-letter-spacing--regular);color:var(--ds-base-font-color);text-align:start;text-transform:uppercase;line-height:var(--ds-base-font-line-height--comfortable)}.gxg-title-02--negative{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-02-font-weight);font-size:var(--ds-title-02-font-size);letter-spacing:var(--ds-base-font-letter-spacing--regular);color:var(--ds-base-font-color);text-align:start;text-transform:uppercase;line-height:var(--ds-base-font-line-height--comfortable);color:var(--color-on-primary)}.gxg-title-03{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-03-font-weight);font-size:var(--ds-title-03-font-size);letter-spacing:var(--ds-base-font-letter-spacing--regular);color:var(--ds-base-font-color);text-align:start;text-transform:uppercase;line-height:var(--ds-base-font-line-height--comfortable)}.gxg-title-03--negative{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-03-font-weight);font-size:var(--ds-title-03-font-size);letter-spacing:var(--ds-base-font-letter-spacing--regular);color:var(--ds-base-font-color);text-align:start;text-transform:uppercase;line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--negative)}.gxg-title-04{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-04-font-weight);font-size:var(--ds-title-04-font-size);letter-spacing:var(--ds-base-font-letter-spacing--comfortable);color:var(--ds-base-font-color);text-align:start;line-height:var(--ds-base-font-line-height--comfortable)}.gxg-title-04--negative{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-04-font-weight);font-size:var(--ds-title-04-font-size);letter-spacing:var(--ds-base-font-letter-spacing--comfortable);color:var(--ds-base-font-color);text-align:start;line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--negative)}.gxg-title-05{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-05-font-weight);font-size:var(--ds-title-05-font-size);letter-spacing:var(--ds-base-font-letter-spacing--regular);color:var(--ds-base-font-color);text-align:start;line-height:var(--ds-base-font-line-height--comfortable)}.gxg-title-05--negative{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-05-font-weight);font-size:var(--ds-title-05-font-size);letter-spacing:var(--ds-base-font-letter-spacing--regular);color:var(--ds-base-font-color);text-align:start;line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--negative)}.gxg-text{font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable)}.gxg-text--negative{font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--negative)}.gxg-text--gray{font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--dimmed)}.gxg-quote{font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable);font-style:italic}.gxg-quote--negative{color:var(--ds-base-font-color--negative)}.gxg-link{line-height:unset;font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--link);text-decoration:underline;cursor:pointer;display:inline-block}.gxg-link:hover{color:var(--ds-base-font-color--link-hover)}.gxg-link:active{color:var(--ds-base-font-color--link-active)}.gxg-link-gray{line-height:unset;font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--link);text-decoration:underline;cursor:pointer;display:inline-block;color:var(--ds-base-font-color--dimmed)}.gxg-link-gray:hover{line-height:unset;font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--link);text-decoration:underline;cursor:pointer;display:inline-block;color:var(--ds-base-font-color--dimmed);filter:brightness(1.4)}.gxg-alert-error{font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--error);display:inline-block}.gxg-alert-warning{font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--warning);display:inline-block}.gxg-alert-success{font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--success);display:inline-block}.gxg-tab--disabled{color:var(--color-primary-disabled);pointer-events:none}.gxg-tab--disabled[disabled]{color:var(--color-primary-disabled);pointer-events:none}.gxg-label{font-family:var(--ds-base-font-family-primary);font-weight:var(--gxg-label-font-weight);font-size:var(--gxg-label-font-size);color:var(--gxg-label-color);text-align:center;line-height:1.455em;display:flex;align-items:center}.gxg-label:hover{color:var(--color-primary-hover)}.gxg-label:focus{color:var(--color-primary-active)}.gxg-label:active{color:var(--color-primary-active)}.gxg-label[disabled]{color:var(--color-primary-disabled)}.gxg-label--negative{color:var(--color-on-primary)}.gxg-label--negative[disabled]{color:var(--color-on-disabled)}.gxg-scrollbar{}.gxg-scrollbar::-webkit-scrollbar{width:var(--gxg-scrollbar-width);height:var(--gxg-scrollbar-width)}.gxg-scrollbar::-webkit-scrollbar-track{background-color:var(--gxg-scrollbar-track-background);border-radius:var(--gxg-scrollbar-track-border-radius)}.gxg-scrollbar::-webkit-scrollbar-thumb{background-color:var(--gxg-scrollbar-track-thumb-background);border-radius:var(--gxg-scrollbar-track-thumb-radius)}.gxg-scrollbar::-webkit-scrollbar-thumb:hover{background-color:var(--gxg-scrollbar-track-thumb-hover-background)}.gxg-scrollbar::-webkit-scrollbar-corner{background:rgba(0, 0, 0, 0)}@keyframes spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}:host{display:grid;block-size:100%}.card-regular{background-color:var(--mer-surface__elevation--01);border:var(--mer-border__width--sm) solid var(--mer-border-color__on-elevation--01);border-radius:var(--mer-border__radius--md);padding:var(--mer-spacing--md) var(--mer-spacing--md);display:grid}.card-small{background-color:var(--mer-surface__elevation--02);border-radius:var(--mer-border__radius--sm);padding:var(--mer-spacing--sm) var(--mer-spacing--sm)}.card-small--actionable:hover{background-color:var(--mer-color__neutral-gray--600)}.card-small--actionable:active{background-color:var(--mer-color__neutral-gray--650)}.card-small:focus-visible{outline:var(--focus__outline-width) var(--focus__outline-style) var(--focus__outline-color);outline-offset:var(--focus__outline-offset)}.empty-state{block-size:100%;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:var(--mer-spacing--sm);text-align:center}.empty-state__title,.empty-state__button,.empty-state__link{max-inline-size:300px}.opacity-0{opacity:0}.opacity-1{opacity:1}.display-contents{display:contents}.gxi-hidden{display:none !important}.gxi-full-height{height:100%}.gxi-overflow-auto{overflow:auto}.gxi-display-flex{display:flex}.align-start{display:flex;align-items:start}.align-center{display:flex;align-items:center}.align-end{display:flex;align-items:end}.overflow-auto{overflow:auto}.justify-start{display:flex;justify-content:start}.justify-center{display:flex;justify-content:center}.justify-end{display:flex;justify-content:end}.grid{display:grid;grid-row-gap:var(--gx-ide-grid-row-gap);grid-column-gap:var(--gx-ide-grid-column-gap);grid-template-rows:auto}ch-grid-cell{display:flex}ch-grid{overflow:auto;height:100%}ch-grid-column{z-index:99;border-bottom:1px solid var(--mer-color__neutral-gray--800)}ch-grid-column:first-child{padding-inline-start:var(--gx-ide-container__padding) !important}ch-grid-column:last-child{padding-inline-end:var(--gx-ide-container__padding) !important}ch-grid-cell{--mer-spacing--xs:var(--gx-ide-container__padding)}.layout{display:grid;gap:var(--mer-spacing--lg);box-sizing:border-box}.layout--two-cols{grid-template-columns:1fr 1fr}.layout--space-above{padding-block-start:var(--mer-spacing--lg)}gxg-tabs{box-shadow:none}:host(.gx-ide-component){height:100% !important;display:flex !important;flex-direction:column !important}:host(:focus-within) gx-ide-top-bar::part(wrapper){background-color:var(--color-secondary-enabled)}.gx-ide-main-wrapper{color:var(--gx-ide-component-text-color);font-weight:var(--mer-font__weight--regular);font-size:var(--mer-font__size--xs);font-family:var(--mer-font-family--primary);height:100%;background-color:var(--gx-ide-component-background-color);display:flex;flex-direction:column;flex-grow:1;box-sizing:border-box}.gx-ide-main{flex-grow:1;overflow-y:auto;}.gx-ide-main::-webkit-scrollbar{width:var(--gxg-scrollbar-width);height:var(--gxg-scrollbar-width)}.gx-ide-main::-webkit-scrollbar-track{background-color:var(--gxg-scrollbar-track-background);border-radius:var(--gxg-scrollbar-track-border-radius)}.gx-ide-main::-webkit-scrollbar-thumb{background-color:var(--gxg-scrollbar-track-thumb-background);border-radius:var(--gxg-scrollbar-track-thumb-radius)}.gx-ide-main::-webkit-scrollbar-thumb:hover{background-color:var(--gxg-scrollbar-track-thumb-hover-background)}.gx-ide-main::-webkit-scrollbar-corner{background:rgba(0, 0, 0, 0)}.gx-ide-overflow{overflow-y:auto;}.gx-ide-overflow::-webkit-scrollbar{width:var(--gxg-scrollbar-width);height:var(--gxg-scrollbar-width)}.gx-ide-overflow::-webkit-scrollbar-track{background-color:var(--gxg-scrollbar-track-background);border-radius:var(--gxg-scrollbar-track-border-radius)}.gx-ide-overflow::-webkit-scrollbar-thumb{background-color:var(--gxg-scrollbar-track-thumb-background);border-radius:var(--gxg-scrollbar-track-thumb-radius)}.gx-ide-overflow::-webkit-scrollbar-thumb:hover{background-color:var(--gxg-scrollbar-track-thumb-hover-background)}.gx-ide-overflow::-webkit-scrollbar-corner{background:rgba(0, 0, 0, 0)}.tree-view-primary{font-size:var(--mer-font__size--2xs)}p{margin:0;font-size:var(--mer-font__size--xxs)}.buttons-container{display:flex;gap:var(--mer-spacing--xs)}:root{--ui-animaton-speed:0.2s}.gxg-title-01{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-01-font-weight);font-size:var(--ds-title-01-font-size);letter-spacing:var(--ds-base-font-letter-spacing--comfortable);color:var(--ds-base-font-color);text-align:start;line-height:var(--ds-base-font-line-height--comfortable)}.gxg-title-01--negative{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-01-font-weight);font-size:var(--ds-title-01-font-size);letter-spacing:var(--ds-base-font-letter-spacing--comfortable);color:var(--ds-base-font-color);text-align:start;line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--negative)}.gxg-title-02{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-02-font-weight);font-size:var(--ds-title-02-font-size);letter-spacing:var(--ds-base-font-letter-spacing--regular);color:var(--ds-base-font-color);text-align:start;text-transform:uppercase;line-height:var(--ds-base-font-line-height--comfortable)}.gxg-title-02--negative{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-02-font-weight);font-size:var(--ds-title-02-font-size);letter-spacing:var(--ds-base-font-letter-spacing--regular);color:var(--ds-base-font-color);text-align:start;text-transform:uppercase;line-height:var(--ds-base-font-line-height--comfortable);color:var(--color-on-primary)}.gxg-title-03{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-03-font-weight);font-size:var(--ds-title-03-font-size);letter-spacing:var(--ds-base-font-letter-spacing--regular);color:var(--ds-base-font-color);text-align:start;text-transform:uppercase;line-height:var(--ds-base-font-line-height--comfortable)}.gxg-title-03--negative{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-03-font-weight);font-size:var(--ds-title-03-font-size);letter-spacing:var(--ds-base-font-letter-spacing--regular);color:var(--ds-base-font-color);text-align:start;text-transform:uppercase;line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--negative)}.gxg-title-04{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-04-font-weight);font-size:var(--ds-title-04-font-size);letter-spacing:var(--ds-base-font-letter-spacing--comfortable);color:var(--ds-base-font-color);text-align:start;line-height:var(--ds-base-font-line-height--comfortable)}.gxg-title-04--negative{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-04-font-weight);font-size:var(--ds-title-04-font-size);letter-spacing:var(--ds-base-font-letter-spacing--comfortable);color:var(--ds-base-font-color);text-align:start;line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--negative)}.gxg-title-05{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-05-font-weight);font-size:var(--ds-title-05-font-size);letter-spacing:var(--ds-base-font-letter-spacing--regular);color:var(--ds-base-font-color);text-align:start;line-height:var(--ds-base-font-line-height--comfortable)}.gxg-title-05--negative{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-05-font-weight);font-size:var(--ds-title-05-font-size);letter-spacing:var(--ds-base-font-letter-spacing--regular);color:var(--ds-base-font-color);text-align:start;line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--negative)}.gxg-text{font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable)}.gxg-text--negative{font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--negative)}.gxg-text--gray{font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--dimmed)}.gxg-quote{font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable);font-style:italic}.gxg-quote--negative{color:var(--ds-base-font-color--negative)}.gxg-link{line-height:unset;font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--link);text-decoration:underline;cursor:pointer;display:inline-block}.gxg-link:hover{color:var(--ds-base-font-color--link-hover)}.gxg-link:active{color:var(--ds-base-font-color--link-active)}.gxg-link-gray{line-height:unset;font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--link);text-decoration:underline;cursor:pointer;display:inline-block;color:var(--ds-base-font-color--dimmed)}.gxg-link-gray:hover{line-height:unset;font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--link);text-decoration:underline;cursor:pointer;display:inline-block;color:var(--ds-base-font-color--dimmed);filter:brightness(1.4)}.gxg-alert-error{font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--error);display:inline-block}.gxg-alert-warning{font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--warning);display:inline-block}.gxg-alert-success{font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--success);display:inline-block}.gxg-tab--disabled{color:var(--color-primary-disabled);pointer-events:none}.gxg-tab--disabled[disabled]{color:var(--color-primary-disabled);pointer-events:none}.gxg-label{font-family:var(--ds-base-font-family-primary);font-weight:var(--gxg-label-font-weight);font-size:var(--gxg-label-font-size);color:var(--gxg-label-color);text-align:center;line-height:1.455em;display:flex;align-items:center}.gxg-label:hover{color:var(--color-primary-hover)}.gxg-label:focus{color:var(--color-primary-active)}.gxg-label:active{color:var(--color-primary-active)}.gxg-label[disabled]{color:var(--color-primary-disabled)}.gxg-label--negative{color:var(--color-on-primary)}.gxg-label--negative[disabled]{color:var(--color-on-disabled)}.gxg-scrollbar{}.gxg-scrollbar::-webkit-scrollbar{width:var(--gxg-scrollbar-width);height:var(--gxg-scrollbar-width)}.gxg-scrollbar::-webkit-scrollbar-track{background-color:var(--gxg-scrollbar-track-background);border-radius:var(--gxg-scrollbar-track-border-radius)}.gxg-scrollbar::-webkit-scrollbar-thumb{background-color:var(--gxg-scrollbar-track-thumb-background);border-radius:var(--gxg-scrollbar-track-thumb-radius)}.gxg-scrollbar::-webkit-scrollbar-thumb:hover{background-color:var(--gxg-scrollbar-track-thumb-hover-background)}.gxg-scrollbar::-webkit-scrollbar-corner{background:rgba(0, 0, 0, 0)}:host{font-family:var(--mer-font-family--primary);display:block;height:100%;flex-basis:286px;flex-shrink:0;height:100%;overflow-y:auto}.gx-ide-main-wrapper{padding:0 10px 52px 10px;background-color:var(--mer-surface);height:100%;display:grid;grid-template-rows:auto 1fr auto;gap:var(--mer-spacing--sm)}.header{padding-block-start:var(--mer-spacing--sm);display:flex;flex-direction:column}.header__actions-wrapper{display:flex;gap:var(--ai-assistant-header-actions-gap);margin-inline-start:auto}.header__first-row{display:flex;gap:var(--mer-spacing--xs);align-items:center;justify-content:space-between}.header__filter{margin-block-start:var(--mer-spacing--xs)}.header__second-row{transition:100ms grid-template-rows;display:grid;grid-template-rows:0fr}.header__second-row--visible{grid-template-rows:1fr}.header .filter-inner-wrapper{overflow:hidden}.messages-wrapper{position:relative;overflow:auto;display:flex;flex-direction:column;scroll-behavior:smooth;}.messages-wrapper::-webkit-scrollbar{width:var(--gxg-scrollbar-width);height:var(--gxg-scrollbar-width)}.messages-wrapper::-webkit-scrollbar-track{background-color:var(--gxg-scrollbar-track-background);border-radius:var(--gxg-scrollbar-track-border-radius)}.messages-wrapper::-webkit-scrollbar-thumb{background-color:var(--gxg-scrollbar-track-thumb-background);border-radius:var(--gxg-scrollbar-track-thumb-radius)}.messages-wrapper::-webkit-scrollbar-thumb:hover{background-color:var(--gxg-scrollbar-track-thumb-hover-background)}.messages-wrapper::-webkit-scrollbar-corner{background:rgba(0, 0, 0, 0)}.messages{display:flex;flex-direction:column;list-style-type:none;padding:0;margin:0}.prompt{position:relative;margin-top:auto}.prompt__textarea::part(textarea-wrapper){border:none}.prompt__textarea::part(textarea){border:none;background-color:var(--mer-color__neutral-gray--800)}.prompt__shortcuts{position:absolute;display:flex;align-items:center;gap:var(--mer-spacing--2xs);padding-inline-end:var(--mer-spacing--xs);right:0;top:0;height:100%}.prompt__shortcut{color:var(--mer-color__neutral-gray--400);font-size:var(--mer-font__size--2xs);padding:var(--mer-spacing--3xs) var(--mer-spacing--xs);background-color:var(--mer-color__neutral-gray--700);border-radius:var(--mer-border__radius--xs)}";
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
var s = undefined && undefined.__classPrivateFieldGet || function(e, t, r, a) {
|
|
8
|
+
if (r === "a" && !a) throw new TypeError("Private accessor was defined without a getter");
|
|
9
|
+
if (typeof t === "function" ? e !== t || !a : !t.has(e)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
10
|
+
return r === "m" ? a : r === "a" ? a.call(e) : a ? a.value : t.get(e);
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
var l, n;
|
|
8
14
|
|
|
9
|
-
const
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
this
|
|
15
|
+
const g = [ "resets/box-sizing", "components/icon", "components/button" ];
|
|
16
|
+
|
|
17
|
+
const c = class {
|
|
18
|
+
constructor(r) {
|
|
19
|
+
e(this, r);
|
|
14
20
|
this.setFocus = true;
|
|
15
21
|
this.scrollToBottomFlag = true;
|
|
16
|
-
|
|
17
|
-
this.evaluateAiInProgress = () => {
|
|
22
|
+
this.evaluateAiInProgress = () => {
|
|
18
23
|
var e;
|
|
19
24
|
if (((e = this.messages) === null || e === void 0 ? void 0 : e.length) > 0 && this.messages[this.messages.length - 1].type === "assistant-in-progress") {
|
|
20
25
|
this.aIInProgress = true;
|
|
@@ -36,15 +41,19 @@ const n = class {
|
|
|
36
41
|
this.assistantStatus = "success";
|
|
37
42
|
}
|
|
38
43
|
};
|
|
39
|
-
this.renderMessage = (e,
|
|
44
|
+
this.renderMessage = (e, r) => {
|
|
40
45
|
if (e.text.length > 0) {
|
|
41
|
-
return
|
|
46
|
+
return t("gx-ide-ai-message", {
|
|
47
|
+
style: {
|
|
48
|
+
"--primary-color": "lightblue"
|
|
49
|
+
},
|
|
42
50
|
message: e.text,
|
|
43
51
|
messageType: e.type,
|
|
44
52
|
hidden: e.hidden,
|
|
45
53
|
filterValue: this.filterValue,
|
|
46
|
-
key: `${
|
|
47
|
-
translations: this._componentLocale.aiMessage
|
|
54
|
+
key: `${r.toString()}-${e.type}`,
|
|
55
|
+
translations: this._componentLocale.aiMessage,
|
|
56
|
+
aiAssistantHostRef: this.el
|
|
48
57
|
});
|
|
49
58
|
}
|
|
50
59
|
};
|
|
@@ -145,6 +154,12 @@ const n = class {
|
|
|
145
154
|
this.messagesWrapperEl.scrollTop = this.messagesWrapperEl.scrollHeight - this.messagesWrapperEl.clientHeight;
|
|
146
155
|
}
|
|
147
156
|
};
|
|
157
|
+
l.set(this, (() => {
|
|
158
|
+
this.el.removeAttribute("tabindex");
|
|
159
|
+
}));
|
|
160
|
+
n.set(this, (() => {
|
|
161
|
+
this.el.setAttribute("tabindex", "0");
|
|
162
|
+
}));
|
|
148
163
|
this.userHasTyped = false;
|
|
149
164
|
this.aIInProgress = false;
|
|
150
165
|
this.showFilter = false;
|
|
@@ -168,21 +183,18 @@ const n = class {
|
|
|
168
183
|
this.evaluateAiInProgress();
|
|
169
184
|
this.evaluateAiStatus();
|
|
170
185
|
}
|
|
171
|
-
// 6.COMPONENT LIFECYCLE METHODS //
|
|
172
186
|
async componentWillLoad() {
|
|
173
|
-
this._componentLocale = await
|
|
187
|
+
this._componentLocale = await o.getComponentStrings(this.el);
|
|
174
188
|
this.evaluateAiInProgress();
|
|
175
189
|
this.evaluateAiStatus();
|
|
176
190
|
this.attachShortcuts();
|
|
177
191
|
}
|
|
178
192
|
componentDidLoad() {
|
|
179
193
|
this.textareaShadowPart = this.textAreaEl.shadowRoot.querySelector("textarea");
|
|
194
|
+
this.el.addEventListener("mousedown", s(this, l, "f"));
|
|
195
|
+
this.el.addEventListener("mouseup", s(this, n, "f"));
|
|
180
196
|
}
|
|
181
197
|
componentDidRender() {
|
|
182
|
-
if (!this.renderedFirstTime) {
|
|
183
|
-
this.componentDidRenderFirstTime.emit(this._componentLocale.componentName);
|
|
184
|
-
this.renderedFirstTime = true;
|
|
185
|
-
}
|
|
186
198
|
if (this.setFocus) {
|
|
187
199
|
setTimeout((() => {
|
|
188
200
|
/* Doesn't seems to work without the setTimeout */
|
|
@@ -194,18 +206,15 @@ const n = class {
|
|
|
194
206
|
this.scrollToBottom();
|
|
195
207
|
}), 200);
|
|
196
208
|
}
|
|
197
|
-
// 7.LISTENERS //
|
|
198
209
|
handleFocus(e) {
|
|
199
210
|
if (this.textAreaEl) {
|
|
200
211
|
e.preventDefault();
|
|
201
212
|
this.textAreaEl.focus();
|
|
202
213
|
}
|
|
203
214
|
}
|
|
204
|
-
// 8.PUBLIC METHODS API //
|
|
205
215
|
/**
|
|
206
216
|
* Clear the list of messages
|
|
207
|
-
*/
|
|
208
|
-
async clear() {
|
|
217
|
+
*/ async clear() {
|
|
209
218
|
this.messages = [];
|
|
210
219
|
}
|
|
211
220
|
/**
|
|
@@ -222,64 +231,64 @@ const n = class {
|
|
|
222
231
|
this.messages = t;
|
|
223
232
|
}
|
|
224
233
|
}
|
|
225
|
-
// 10.RENDER() FUNCTION //
|
|
226
234
|
render() {
|
|
227
|
-
var e,
|
|
228
|
-
return r
|
|
235
|
+
var e, a;
|
|
236
|
+
return t(r, {
|
|
229
237
|
class: {
|
|
230
238
|
[`assistant--${this.assistantStatus}`]: true,
|
|
231
239
|
"assistant--in-progress": this.aIInProgress
|
|
232
|
-
}
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
240
|
+
},
|
|
241
|
+
tabindex: "0"
|
|
242
|
+
}, t("ch-theme", {
|
|
243
|
+
model: g
|
|
244
|
+
}), t("div", {
|
|
236
245
|
class: "gx-ide-main-wrapper"
|
|
237
|
-
},
|
|
246
|
+
}, t("slot", null), t("header", {
|
|
238
247
|
class: "header"
|
|
239
|
-
},
|
|
248
|
+
}, t("div", {
|
|
240
249
|
class: "header__first-row"
|
|
241
|
-
},
|
|
250
|
+
}, t("gxg-title", {
|
|
242
251
|
type: "title-02"
|
|
243
|
-
}, this._componentLocale.componentName),
|
|
252
|
+
}, this._componentLocale.componentName), t("div", {
|
|
244
253
|
class: "header__actions-wrapper"
|
|
245
|
-
}, this.filter ?
|
|
254
|
+
}, this.filter ? t("gxg-button", {
|
|
246
255
|
class: "header__filter-button",
|
|
247
256
|
type: "tertiary",
|
|
248
257
|
icon: "menus/find",
|
|
249
258
|
onClick: this.toggleFilterHandler,
|
|
250
259
|
disabled: this.messages.length === 0
|
|
251
|
-
}) : null,
|
|
260
|
+
}) : null, t("gxg-button", {
|
|
252
261
|
class: "header__clear-button",
|
|
253
262
|
type: "tertiary",
|
|
254
263
|
icon: "bpm/delete",
|
|
255
264
|
onClick: this.clearMessages,
|
|
256
265
|
disabled: this.messages.length === 0
|
|
257
|
-
}))), this.filter ?
|
|
266
|
+
}))), this.filter ? t("div", {
|
|
258
267
|
class: {
|
|
259
268
|
"header__second-row": true,
|
|
260
269
|
"header__second-row--visible": this.showFilter
|
|
261
270
|
}
|
|
262
|
-
},
|
|
271
|
+
}, t("div", {
|
|
263
272
|
class: "filter-inner-wrapper"
|
|
264
|
-
},
|
|
273
|
+
}, t("gxg-form-text", {
|
|
265
274
|
class: "header__filter",
|
|
266
275
|
onInput: this.filterMessagesHandler,
|
|
267
276
|
ref: e => this.filterEl = e
|
|
268
|
-
}))) : null),
|
|
277
|
+
}))) : null), t("div", {
|
|
269
278
|
class: {
|
|
270
279
|
"messages-wrapper": true,
|
|
271
280
|
scrollable: true
|
|
272
281
|
},
|
|
273
282
|
ref: e => this.messagesWrapperEl = e
|
|
274
|
-
}, ((e = this.messages) === null || e === void 0 ? void 0 : e.length) ?
|
|
283
|
+
}, ((e = this.messages) === null || e === void 0 ? void 0 : e.length) ? t("ol", {
|
|
275
284
|
class: {
|
|
276
285
|
messages: true
|
|
277
286
|
}
|
|
278
|
-
}, this.messages.map(((e, t) => this.renderMessage(e, t)))) : null),
|
|
287
|
+
}, this.messages.map(((e, t) => this.renderMessage(e, t)))) : null), t("div", {
|
|
279
288
|
class: {
|
|
280
289
|
prompt: true
|
|
281
290
|
}
|
|
282
|
-
},
|
|
291
|
+
}, t("gxg-form-textarea", {
|
|
283
292
|
ai: true,
|
|
284
293
|
class: "prompt__textarea",
|
|
285
294
|
value: this.promptValue,
|
|
@@ -292,22 +301,19 @@ const n = class {
|
|
|
292
301
|
onFocus: this.promptFocusHandler,
|
|
293
302
|
disabled: this.aIInProgress,
|
|
294
303
|
ref: e => this.textAreaEl = e
|
|
295
|
-
}), !this.userHasTyped && !this.aIInProgress && !this.promptHasFocus && ((
|
|
304
|
+
}), !this.userHasTyped && !this.aIInProgress && !this.promptHasFocus && ((a = this.focusShortcuts) === null || a === void 0 ? void 0 : a.length) > 0 ? t("div", {
|
|
296
305
|
class: {
|
|
297
306
|
prompt__shortcuts: true
|
|
298
307
|
}
|
|
299
|
-
}, this.focusShortcuts.map(((e,
|
|
308
|
+
}, this.focusShortcuts.map(((e, r) => r <= 2 ? t("span", {
|
|
300
309
|
class: "prompt__shortcut"
|
|
301
310
|
}, e) : null))) : null)));
|
|
302
311
|
}
|
|
303
|
-
static get delegatesFocus() {
|
|
304
|
-
return true;
|
|
305
|
-
}
|
|
306
312
|
static get assetsDirs() {
|
|
307
313
|
return [ "gx-ide-assets/ai-assistant" ];
|
|
308
314
|
}
|
|
309
315
|
get el() {
|
|
310
|
-
return
|
|
316
|
+
return a(this);
|
|
311
317
|
}
|
|
312
318
|
static get watchers() {
|
|
313
319
|
return {
|
|
@@ -317,7 +323,9 @@ const n = class {
|
|
|
317
323
|
}
|
|
318
324
|
};
|
|
319
325
|
|
|
320
|
-
n
|
|
326
|
+
l = new WeakMap, n = new WeakMap;
|
|
327
|
+
|
|
328
|
+
c.style = i;
|
|
321
329
|
|
|
322
|
-
export {
|
|
323
|
-
//# sourceMappingURL=p-
|
|
330
|
+
export { c as gx_ide_ai_assistant };
|
|
331
|
+
//# sourceMappingURL=p-fdd9de33.entry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["aiAssistantCss","CSS_BUNDLES","GxIdeTemplate","this","setFocus","scrollToBottomFlag","evaluateAiInProgress","_a","messages","length","type","aIInProgress","evaluateAiStatus","assistantStatus","renderMessage","message","i","text","h","style","messageType","hidden","filterValue","key","toString","translations","_componentLocale","aiMessage","aiAssistantHostRef","el","textAreaInputHandler","userHasTyped","showFilter","filterEl","value","promptEnterHandler","async","prompt","promptTrimmed","detail","replace","textAreaEl","setTimeout","lastUserMessageHeight","offsetHeight","addMessage","userMessageCallback","then","filterMessagesHandler","e","toLowerCase","filteredMessages","forEach","includes","clearMessages","focus","clearCallback","attachShortcuts","focusShortcuts","ctrlFocusIndex","findIndex","toLocaleLowerCase","shiftFocusIndex","cmdKeyIndex","keyFocus","find","document","addEventListener","ctrlKey","shiftKey","metaKey","promptArrowUpHandler","lastUserMessage","textareaShadowPart","height","toggleFilterHandler","promptFocusHandler","promptHasFocus","promptBlurHandler","scrollToBottom","messagesWrapperEl","scrollTo","scrollHeight","scrollTop","clientHeight","_GxIdeTemplate_mouseDownListener","set","removeAttribute","_GxIdeTemplate_mouseUpListener","setAttribute","watchAIInProgressHandler","aiInProgress","watchMessagesHandler","componentWillLoad","Locale","getComponentStrings","componentDidLoad","shadowRoot","querySelector","__classPrivateFieldGet","componentDidRender","handleFocus","event","preventDefault","clear","updateInProgressMessage","pop","push","render","Host","class","tabindex","model","componentName","filter","icon","onClick","disabled","onInput","ref","scrollable","map","ai","promptValue","maxHeight","promptMaxHeight","placeholder","processingQueryPlaceholder","promptPlaceholder","onEnter","onArrowUpPressed","onBlur","onFocus","_b","prompt__shortcuts","shortcut"],"sources":["src/components/ai-assistant/ai-assistant.scss?tag=gx-ide-ai-assistant&encapsulation=shadow","src/components/ai-assistant/ai-assistant.tsx"],"sourcesContent":["@import \"../../global/gx-ide-common.scss\";\n@import \"../../global/gx-ide-mixins.scss\";\n@import \"../../../node_modules/@genexus/gemini/dist/gemini/globals/mixins.scss\";\n\n:host {\n font-family: var(--mer-font-family--primary);\n display: block;\n height: 100%;\n flex-basis: 286px;\n flex-shrink: 0;\n height: 100%;\n overflow-y: auto;\n}\n.gx-ide-main-wrapper {\n padding: 0 10px 52px 10px;\n background-color: var(--mer-surface);\n height: 100%;\n display: grid;\n grid-template-rows: auto 1fr auto;\n gap: var(--mer-spacing--sm);\n}\n\n/*--- Header ---*/\n.header {\n padding-block-start: var(--mer-spacing--sm);\n display: flex;\n flex-direction: column;\n\n &__actions-wrapper {\n display: flex;\n gap: var(--ai-assistant-header-actions-gap);\n margin-inline-start: auto;\n }\n &__first-row {\n display: flex;\n gap: var(--mer-spacing--xs);\n align-items: center;\n justify-content: space-between;\n }\n &__filter {\n margin-block-start: var(--mer-spacing--xs);\n }\n &__second-row {\n transition: 100ms grid-template-rows;\n display: grid;\n grid-template-rows: 0fr;\n\n &--visible {\n grid-template-rows: 1fr;\n }\n }\n .filter-inner-wrapper {\n overflow: hidden;\n }\n}\n\n/*--- Messages ---*/\n.messages-wrapper {\n position: relative;\n overflow: auto;\n display: flex;\n flex-direction: column;\n scroll-behavior: smooth;\n @include gxg-scrollbar();\n}\n.messages {\n display: flex;\n flex-direction: column;\n list-style-type: none;\n padding: 0;\n margin: 0;\n}\n\n/*--- Prompt ---*/\n.prompt {\n position: relative;\n margin-top: auto;\n\n &__textarea {\n &::part(textarea-wrapper) {\n border: none;\n }\n &::part(textarea) {\n border: none;\n background-color: var(--mer-color__neutral-gray--800);\n }\n }\n &__shortcuts {\n position: absolute;\n display: flex;\n align-items: center;\n gap: var(--mer-spacing--2xs);\n padding-inline-end: var(--mer-spacing--xs);\n right: 0;\n top: 0;\n height: 100%;\n }\n &__shortcut {\n color: var(--mer-color__neutral-gray--400);\n font-size: var(--mer-font__size--2xs);\n padding: var(--mer-spacing--3xs) var(--mer-spacing--xs);\n background-color: var(--mer-color__neutral-gray--700);\n border-radius: var(--mer-border__radius--xs);\n }\n}\n","import {\n Component,\n Host,\n h,\n Prop,\n Element,\n Method,\n State,\n Watch,\n Listen\n} from \"@stencil/core\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"components/icon\",\n \"components/button\"\n];\n\nimport { Locale } from \"../../common/locale\";\n\nimport { MercuryBundles } from \"@genexus/mercury\";\n\n@Component({\n tag: \"gx-ide-ai-assistant\",\n styleUrl: \"ai-assistant.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/ai-assistant\"]\n})\nexport class GxIdeTemplate {\n /**\n * The component hard-coded strings translations.\n */\n private _componentLocale: any;\n /* lastUserMessageHeight is used to set the appropriate height on the textarea, if user presses arrowUp (recover last message)*/\n private lastUserMessageHeight: number;\n private setFocus = true;\n private scrollToBottomFlag = true;\n\n @Element() el: HTMLGxIdeAiAssistantElement;\n private textAreaEl!: HTMLGxgFormTextareaElement;\n private textareaShadowPart: HTMLTextAreaElement;\n private filterEl: HTMLGxgFormTextElement;\n private messagesWrapperEl!: HTMLDivElement;\n\n /**\n * Flag used to hide the shortcuts\n */\n @State() userHasTyped = false;\n\n /**\n * This is true if the last message is of type 'assistant-in-progress'\n */\n @State() aIInProgress = false;\n @Watch(\"aIInProgress\")\n watchAIInProgressHandler(aiInProgress: boolean) {\n if (!aiInProgress) {\n this.setFocus = true;\n }\n }\n\n /**\n * This displays or hides the messages filter\n */\n @State() showFilter = false;\n\n /**\n * True if the prompt textbox has focus\n */\n @State() promptHasFocus = false;\n\n /**\n * The filter value\n */\n @State() filterValue: string;\n\n /**\n * List of messages displayed by the component\n */\n @Prop({ mutable: true }) messages: Message[] = [];\n @Watch(\"messages\")\n watchMessagesHandler() {\n this.evaluateAiInProgress();\n this.evaluateAiStatus();\n }\n\n /**\n * The prompt textarea max-height\n */\n @Prop() readonly promptMaxHeight = \"128px\";\n\n /**\n * A temporary property to illustrate the assistant status\n */\n @Prop({ mutable: true }) assistantStatus: AiStatus = \"indeterminate\";\n\n /**\n * List of keys that make up the shortcut to focus on the component's text input\n */\n @Prop() readonly focusShortcuts: string[];\n\n /**\n * List of keys that make up the shortcut to focus on the component's text input\n */\n @Prop() readonly userMessageCallback: UserMessageCallback;\n\n /**\n * Callback that must be invoked when the conversation is cleared, using the header button.\n */\n @Prop() readonly clearCallback: () => Promise<void>;\n\n /**\n * the prompt value\n */\n @Prop() readonly promptValue: string;\n\n /**\n * If tue, it will display a filter.\n */\n @Prop() readonly filter = true;\n\n async componentWillLoad() {\n this._componentLocale = await Locale.getComponentStrings(this.el);\n this.evaluateAiInProgress();\n this.evaluateAiStatus();\n this.attachShortcuts();\n }\n\n componentDidLoad() {\n this.textareaShadowPart =\n this.textAreaEl.shadowRoot.querySelector(\"textarea\");\n this.el.addEventListener(\"mousedown\", this.#mouseDownListener);\n this.el.addEventListener(\"mouseup\", this.#mouseUpListener);\n }\n\n componentDidRender() {\n if (this.setFocus) {\n setTimeout(() => {\n /* Doesn't seems to work without the setTimeout */\n this.textAreaEl.focus();\n this.setFocus = false;\n }, 50);\n }\n setTimeout(() => {\n this.scrollToBottom();\n }, 200);\n }\n\n @Listen(\"focus\", { capture: true })\n handleFocus(event: FocusEvent) {\n if (this.textAreaEl) {\n event.preventDefault();\n this.textAreaEl.focus();\n }\n }\n\n /**\n * Clear the list of messages\n */\n @Method()\n async clear() {\n this.messages = [];\n }\n\n /**\n * Add a message. This method will be used by the host to add messages from the assistant\n */\n @Method()\n async addMessage(message: Message) {\n if (message.text?.length > 0) {\n const messages = [...this.messages];\n const updateInProgressMessage =\n messages?.length > 0 &&\n messages[messages.length - 1].type === \"assistant-in-progress\";\n if (updateInProgressMessage) {\n messages.pop();\n }\n messages.push(message);\n this.messages = messages;\n }\n }\n\n private evaluateAiInProgress = () => {\n if (\n this.messages?.length > 0 &&\n this.messages[this.messages.length - 1].type === \"assistant-in-progress\"\n ) {\n this.aIInProgress = true;\n } else {\n this.aIInProgress = false;\n }\n };\n\n private evaluateAiStatus = () => {\n if (this.messages?.length === 0) {\n this.assistantStatus = \"indeterminate\";\n return;\n }\n if (\n this.messages[this.messages.length - 1].type ===\n \"assistant-in-progress\" ||\n this.messages[this.messages.length - 1].type === \"user\"\n ) {\n this.assistantStatus = \"indeterminate\";\n } else if (\n this.messages[this.messages.length - 1].type === \"assistant-error\"\n ) {\n this.assistantStatus = \"error\";\n } else {\n this.assistantStatus = \"success\";\n }\n };\n\n private renderMessage = (\n message: Message,\n i: number\n ): HTMLLIElement | void => {\n if (message.text.length > 0) {\n return (\n <gx-ide-ai-message\n style={{\n \"--primary-color\": \"lightblue\"\n }}\n message={message.text}\n messageType={message.type}\n hidden={message.hidden}\n filterValue={this.filterValue}\n key={`${i.toString()}-${message.type}`}\n translations={this._componentLocale.aiMessage}\n aiAssistantHostRef={this.el}\n ></gx-ide-ai-message>\n );\n }\n };\n\n private textAreaInputHandler = () => {\n this.userHasTyped = true;\n this.showFilter = false;\n this.filterEl.value = \"\";\n this.filterValue = \"\";\n this.scrollToBottomFlag = true;\n };\n\n private promptEnterHandler = async (prompt: CustomEvent<string>) => {\n /* First remove double spaces */\n const promptTrimmed = prompt.detail.replace(/\\s+/g, \" \");\n /* Update textarea value to get the proper height */\n this.textAreaEl.value = promptTrimmed;\n setTimeout(() => {\n /* Then save the actual height (setTimeOut required) */\n this.lastUserMessageHeight = this.textAreaEl.offsetHeight;\n }, 0);\n /* The clear the textarea */\n this.textAreaEl.value = \"\";\n /* Insert the user message */\n this.addMessage({\n type: \"user\",\n text: promptTrimmed\n });\n /* Call the callback */\n if (this.userMessageCallback && !this.aIInProgress) {\n this.aIInProgress = true;\n this.userMessageCallback(promptTrimmed).then(() => {\n this.aIInProgress = false;\n });\n }\n };\n\n private filterMessagesHandler = (e: CustomEvent<string>) => {\n this.scrollToBottomFlag = false;\n this.filterValue = e.detail.toLowerCase();\n const filteredMessages = [...this.messages];\n filteredMessages.forEach(message => {\n if (message.text.toLowerCase().includes(this.filterValue)) {\n message.hidden = false;\n } else {\n message.hidden = true;\n }\n });\n this.messages = filteredMessages;\n };\n\n private clearMessages = () => {\n this.messages = [];\n this.textAreaEl.focus();\n if (this.clearCallback) {\n this.clearCallback();\n }\n };\n\n private attachShortcuts = () => {\n if (this.focusShortcuts?.length > 0) {\n const ctrlFocusIndex = this.focusShortcuts.findIndex(\n key => key.toLocaleLowerCase() === \"ctrl\"\n );\n const shiftFocusIndex = this.focusShortcuts.findIndex(\n key => key.toLocaleLowerCase() === \"shift\"\n );\n const cmdKeyIndex = this.focusShortcuts.findIndex(\n key => key.toLocaleLowerCase() === \"cmd\"\n );\n const keyFocus = this.focusShortcuts\n .find(key => {\n return (\n key.toLocaleLowerCase() !== \"ctrl\" &&\n key.toLocaleLowerCase() !== \"shift\" &&\n key.toLocaleLowerCase() !== \"cmd\"\n );\n })\n .toLowerCase();\n document.addEventListener(\"keydown\", (e: KeyboardEvent) => {\n if (e.key === keyFocus && ctrlFocusIndex !== -1 && e.ctrlKey) {\n this.textAreaEl.focus();\n this.userHasTyped = true;\n } else if (e.key === keyFocus && shiftFocusIndex !== -1 && e.shiftKey) {\n this.textAreaEl.focus();\n this.userHasTyped = true;\n } else if (e.key === keyFocus && cmdKeyIndex !== -1 && e.metaKey) {\n this.textAreaEl.focus();\n this.userHasTyped = true;\n }\n });\n }\n };\n\n private promptArrowUpHandler = () => {\n this.userHasTyped = true;\n const lastUserMessage = this.messages?.find(message => {\n return message.type === \"user\";\n });\n if (lastUserMessage) {\n if (this.lastUserMessageHeight) {\n this.textareaShadowPart.style.height = `${this.lastUserMessageHeight}px`;\n }\n this.textAreaEl.value = lastUserMessage.text;\n }\n };\n\n private toggleFilterHandler = () => {\n this.showFilter = !this.showFilter;\n if (this.showFilter) {\n this.filterEl.focus();\n }\n };\n\n private promptFocusHandler = () => {\n this.promptHasFocus = true;\n };\n\n private promptBlurHandler = () => {\n this.promptHasFocus = false;\n };\n\n private scrollToBottom = () => {\n if (this.scrollToBottomFlag) {\n this.messagesWrapperEl.scrollTo(0, this.messagesWrapperEl.scrollHeight);\n this.messagesWrapperEl.scrollTop =\n this.messagesWrapperEl.scrollHeight -\n this.messagesWrapperEl.clientHeight;\n }\n };\n\n #mouseDownListener = () => {\n this.el.removeAttribute(\"tabindex\");\n };\n\n #mouseUpListener = () => {\n this.el.setAttribute(\"tabindex\", \"0\");\n };\n\n render() {\n return (\n <Host\n class={{\n [`assistant--${this.assistantStatus}`]: true,\n \"assistant--in-progress\": this.aIInProgress\n }}\n tabindex=\"0\"\n >\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <div class=\"gx-ide-main-wrapper\">\n <slot></slot>\n <header class=\"header\">\n <div class=\"header__first-row\">\n <gxg-title type=\"title-02\">\n {this._componentLocale.componentName}\n </gxg-title>\n <div class=\"header__actions-wrapper\">\n {this.filter ? (\n <gxg-button\n class=\"header__filter-button\"\n type=\"tertiary\"\n icon=\"menus/find\"\n onClick={this.toggleFilterHandler}\n disabled={this.messages.length === 0}\n ></gxg-button>\n ) : null}\n\n <gxg-button\n class=\"header__clear-button\"\n type=\"tertiary\"\n icon=\"bpm/delete\"\n onClick={this.clearMessages}\n disabled={this.messages.length === 0}\n ></gxg-button>\n </div>\n </div>\n {this.filter ? (\n <div\n class={{\n \"header__second-row\": true,\n \"header__second-row--visible\": this.showFilter\n }}\n >\n <div class=\"filter-inner-wrapper\">\n <gxg-form-text\n class=\"header__filter\"\n onInput={this.filterMessagesHandler as any}\n ref={el => (this.filterEl = el as HTMLGxgFormTextElement)}\n ></gxg-form-text>\n </div>\n </div>\n ) : null}\n </header>\n\n <div\n class={{\n \"messages-wrapper\": true,\n \"scrollable\": true\n }}\n ref={el => (this.messagesWrapperEl = el as HTMLDivElement)}\n >\n {this.messages?.length ? (\n <ol class={{ messages: true }}>\n {this.messages.map((message, i) => {\n return this.renderMessage(message, i);\n })}\n </ol>\n ) : null}\n </div>\n\n <div\n class={{\n prompt: true\n }}\n >\n <gxg-form-textarea\n ai\n class=\"prompt__textarea\"\n value={this.promptValue}\n maxHeight={this.promptMaxHeight}\n placeholder={\n this.aIInProgress\n ? this._componentLocale.processingQueryPlaceholder\n : this._componentLocale.promptPlaceholder\n }\n onInput={this.textAreaInputHandler}\n onEnter={this.promptEnterHandler}\n onArrowUpPressed={this.promptArrowUpHandler}\n onBlur={this.promptBlurHandler}\n onFocus={this.promptFocusHandler}\n disabled={this.aIInProgress}\n ref={el => (this.textAreaEl = el as HTMLGxgFormTextareaElement)}\n ></gxg-form-textarea>\n {!this.userHasTyped &&\n !this.aIInProgress &&\n !this.promptHasFocus &&\n this.focusShortcuts?.length > 0 ? (\n <div\n class={{\n prompt__shortcuts: true\n }}\n >\n {this.focusShortcuts.map((shortcut, i) => {\n /* Up to three keys allowed*/\n return i <= 2 ? (\n <span class=\"prompt__shortcut\">{shortcut}</span>\n ) : null;\n })}\n </div>\n ) : null}\n </div>\n </div>\n </Host>\n );\n }\n}\n\nexport type AiStatus = \"indeterminate\" | \"success\" | \"error\";\n\nexport type Message = {\n type: MessageType;\n text: string;\n hidden?: boolean;\n filterValue?: string;\n};\n\nexport type MessageType =\n | \"user\"\n | \"assistant-chat\"\n | \"assistant-action\"\n | \"assistant-in-progress\"\n | \"assistant-error\";\n\nexport type UserMessageCallback = (text: string) => Promise<void>;\n"],"mappings":"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"}
|
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
import { EventEmitter } from "../../stencil-public-runtime";
|
|
2
1
|
export declare class GxIdeTemplate {
|
|
2
|
+
#private;
|
|
3
3
|
/**
|
|
4
4
|
* The component hard-coded strings translations.
|
|
5
5
|
*/
|
|
6
6
|
private _componentLocale;
|
|
7
|
-
private renderedFirstTime;
|
|
8
7
|
private lastUserMessageHeight;
|
|
9
8
|
private setFocus;
|
|
10
9
|
private scrollToBottomFlag;
|
|
@@ -67,10 +66,6 @@ export declare class GxIdeTemplate {
|
|
|
67
66
|
* If tue, it will display a filter.
|
|
68
67
|
*/
|
|
69
68
|
readonly filter = true;
|
|
70
|
-
/**
|
|
71
|
-
* This event is emitted once just after the component is fully loaded and the first render() occurs
|
|
72
|
-
*/
|
|
73
|
-
componentDidRenderFirstTime: EventEmitter<boolean>;
|
|
74
69
|
componentWillLoad(): Promise<void>;
|
|
75
70
|
componentDidLoad(): void;
|
|
76
71
|
componentDidRender(): void;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { MessageType } from "./ai-assistant";
|
|
2
2
|
export declare class GxIdeAiMessage {
|
|
3
|
+
#private;
|
|
3
4
|
private _componentLocale;
|
|
4
5
|
private copyable;
|
|
5
6
|
el: HTMLGxIdeAiMessageElement;
|
|
@@ -11,6 +12,10 @@ export declare class GxIdeAiMessage {
|
|
|
11
12
|
* This wil show the user a text, indicating that the message has been copied
|
|
12
13
|
*/
|
|
13
14
|
showCopiedMessage: boolean;
|
|
15
|
+
/**
|
|
16
|
+
* A reference to the gx-ide-ai-assistant host element
|
|
17
|
+
*/
|
|
18
|
+
readonly aiAssistantHostRef: HTMLGxIdeAiAssistantElement;
|
|
14
19
|
/**
|
|
15
20
|
* The actual message
|
|
16
21
|
*/
|