@genexus/genexus-ide-ui 0.0.74 → 0.0.76
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/ch-next-data-modeling-render.cjs.entry.js +2 -1
- package/dist/cjs/ch-shortcuts.cjs.entry.js +42 -18
- package/dist/cjs/genexus-ide-ui.cjs.js +1 -1
- package/dist/cjs/gx-ide-ai-assistant.cjs.entry.js +35 -7
- package/dist/cjs/gx-ide-ai-message.cjs.entry.js +19 -6
- package/dist/cjs/gx-ide-kb-manager-import.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-new-environment.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-object-selector.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-team-dev-commit.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-team-dev-update.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-ww-images.cjs.entry.js +1 -1
- package/dist/cjs/{helpers-0a984c76.js → helpers-e25e57cb.js} +12 -3
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/collection/collection-manifest.json +2 -2
- package/dist/collection/common/helpers.js +12 -3
- package/dist/collection/components/ai-assistant/ai-assistant.css +3 -21
- package/dist/collection/components/ai-assistant/ai-assistant.js +37 -6
- package/dist/collection/components/ai-assistant/ai-message.css +9 -12
- package/dist/collection/components/ai-assistant/ai-message.js +36 -4
- package/dist/collection/components/ai-assistant/gx-ide-assets/ai-assistant/langs/ai-assistant.lang.en.json +3 -1
- package/dist/components/ai-message.js +19 -5
- package/dist/components/ch-next-data-modeling-render.js +2 -1
- package/dist/components/ch-shortcuts.js +42 -18
- package/dist/components/gx-ide-ai-assistant.js +36 -7
- package/dist/components/helpers2.js +12 -3
- package/dist/esm/ch-next-data-modeling-render.entry.js +2 -1
- package/dist/esm/ch-shortcuts.entry.js +42 -18
- package/dist/esm/genexus-ide-ui.js +1 -1
- package/dist/esm/gx-ide-ai-assistant.entry.js +35 -7
- package/dist/esm/gx-ide-ai-message.entry.js +19 -6
- package/dist/esm/gx-ide-kb-manager-import.entry.js +1 -1
- package/dist/esm/gx-ide-new-environment.entry.js +1 -1
- package/dist/esm/gx-ide-object-selector.entry.js +1 -1
- package/dist/esm/gx-ide-team-dev-commit.entry.js +1 -1
- package/dist/esm/gx-ide-team-dev-update.entry.js +1 -1
- package/dist/esm/gx-ide-ww-images.entry.js +1 -1
- package/dist/esm/{helpers-91494352.js → helpers-a11a19fb.js} +12 -3
- package/dist/esm/loader.js +1 -1
- package/dist/genexus-ide-ui/genexus-ide-ui.esm.js +1 -1
- package/dist/genexus-ide-ui/gx-ide-assets/ai-assistant/langs/ai-assistant.lang.en.json +3 -1
- package/dist/genexus-ide-ui/p-0f3c3a5e.entry.js +1 -0
- package/dist/genexus-ide-ui/{p-cb07fc99.entry.js → p-1b1fd856.entry.js} +1 -1
- package/dist/genexus-ide-ui/{p-440fe7b3.entry.js → p-1da59907.entry.js} +1 -1
- package/dist/genexus-ide-ui/{p-8c5919ec.entry.js → p-2b6a3afa.entry.js} +1 -1
- package/dist/genexus-ide-ui/p-2e7d1eef.entry.js +1 -0
- package/dist/genexus-ide-ui/{p-3d410e77.entry.js → p-33961b41.entry.js} +1 -1
- package/dist/genexus-ide-ui/p-4a8187c1.entry.js +1 -0
- package/dist/genexus-ide-ui/{p-4758d51e.js → p-64d3885f.js} +1 -1
- package/dist/genexus-ide-ui/p-6e9794d0.entry.js +1 -0
- package/dist/genexus-ide-ui/{p-13085dd7.entry.js → p-72fad9dd.entry.js} +1 -1
- package/dist/genexus-ide-ui/{p-e13a299b.entry.js → p-a43dc4e7.entry.js} +1 -1
- package/dist/types/common/helpers.d.ts +1 -0
- package/dist/types/components/ai-assistant/ai-assistant.d.ts +8 -0
- package/dist/types/components/ai-assistant/ai-message.d.ts +7 -4
- package/dist/types/components.d.ts +9 -0
- package/package.json +1 -1
- package/dist/collection/components/ai-assistant/gx-ide-assets/ai-message/langs/ai-message.lang.en.json +0 -4
- package/dist/collection/components/ai-assistant/gx-ide-assets/ai-message/langs/ai-message.lang.ja.json +0 -3
- package/dist/collection/components/ai-assistant/gx-ide-assets/ai-message/langs/ai-message.lang.zh.json +0 -3
- package/dist/genexus-ide-ui/gx-ide-assets/ai-message/langs/ai-message.lang.en.json +0 -4
- package/dist/genexus-ide-ui/gx-ide-assets/ai-message/langs/ai-message.lang.ja.json +0 -3
- package/dist/genexus-ide-ui/gx-ide-assets/ai-message/langs/ai-message.lang.zh.json +0 -3
- package/dist/genexus-ide-ui/p-0261c202.entry.js +0 -1
- package/dist/genexus-ide-ui/p-38dacc01.entry.js +0 -1
- package/dist/genexus-ide-ui/p-47f3b15b.entry.js +0 -1
- package/dist/genexus-ide-ui/p-b417c899.entry.js +0 -1
|
@@ -6,7 +6,9 @@ Found on /common/helpers.tsx hiChar function is used to add a span/class to ever
|
|
|
6
6
|
*/
|
|
7
7
|
/*--- Messages ---*/
|
|
8
8
|
.message {
|
|
9
|
-
--ai-
|
|
9
|
+
--ai-bg-color: #242d36;
|
|
10
|
+
--ai-error-bg-color: #272124;
|
|
11
|
+
--ai-error-border-color: #a3585e;
|
|
10
12
|
--ai-message-error-color: var(--color-error-dark);
|
|
11
13
|
display: grid;
|
|
12
14
|
grid-template-rows: 0fr;
|
|
@@ -19,11 +21,10 @@ Found on /common/helpers.tsx hiChar function is used to add a span/class to ever
|
|
|
19
21
|
}
|
|
20
22
|
.message__inner-wrapper {
|
|
21
23
|
padding: var(--spacing-comp-01) var(--spacing-comp-02);
|
|
22
|
-
border-radius: var(--border-radius-
|
|
24
|
+
border-radius: var(--border-radius-sm);
|
|
23
25
|
border: var(--border-width-sm) solid transparent;
|
|
24
26
|
background-color: var(--assistant-bg-color);
|
|
25
|
-
|
|
26
|
-
margin-block-end: var(--spacing-comp-02);
|
|
27
|
+
margin-block-start: var(--spacing-comp-02);
|
|
27
28
|
}
|
|
28
29
|
.message__caption {
|
|
29
30
|
font-size: var(--mc-font-size-xxs);
|
|
@@ -36,6 +37,7 @@ Found on /common/helpers.tsx hiChar function is used to add a span/class to ever
|
|
|
36
37
|
.message--copying {
|
|
37
38
|
pointer-events: none;
|
|
38
39
|
}
|
|
40
|
+
.message--copying span:not(.copied),
|
|
39
41
|
.message--copying .message__caption {
|
|
40
42
|
color: transparent;
|
|
41
43
|
-webkit-user-select: none;
|
|
@@ -48,11 +50,6 @@ Found on /common/helpers.tsx hiChar function is used to add a span/class to ever
|
|
|
48
50
|
.message--user .message__inner-wrapper {
|
|
49
51
|
background-color: var(--gray-12);
|
|
50
52
|
}
|
|
51
|
-
.message--user .message__inner-wrapper {
|
|
52
|
-
/*override default message border radius*/
|
|
53
|
-
border-top-left-radius: var(--border-radius-sm);
|
|
54
|
-
border-bottom-left-radius: var(--border-radius-sm);
|
|
55
|
-
}
|
|
56
53
|
.message--assistant-action .message__inner-wrapper {
|
|
57
54
|
font-style: italic;
|
|
58
55
|
}
|
|
@@ -61,7 +58,6 @@ Found on /common/helpers.tsx hiChar function is used to add a span/class to ever
|
|
|
61
58
|
display: grid;
|
|
62
59
|
grid-template-columns: 1fr auto;
|
|
63
60
|
gap: var(--spacing-comp-02);
|
|
64
|
-
border-inline-start-color: var(--gray-02);
|
|
65
61
|
}
|
|
66
62
|
.message--assistant-in-progress .message__inner-wrapper .message__caption {
|
|
67
63
|
overflow: hidden;
|
|
@@ -73,10 +69,11 @@ Found on /common/helpers.tsx hiChar function is used to add a span/class to ever
|
|
|
73
69
|
flex: none;
|
|
74
70
|
}
|
|
75
71
|
.message--assistant-chat .message__inner-wrapper, .message--assistant-action .message__inner-wrapper {
|
|
76
|
-
|
|
72
|
+
background-color: var(--ai-bg-color);
|
|
77
73
|
}
|
|
78
74
|
.message--assistant-error .message__inner-wrapper {
|
|
79
|
-
|
|
75
|
+
background-color: var(--ai-error-bg-color);
|
|
76
|
+
border-color: var(--ai-error-border-color);
|
|
80
77
|
}
|
|
81
78
|
.message--copyable {
|
|
82
79
|
cursor: pointer;
|
|
@@ -1,9 +1,22 @@
|
|
|
1
1
|
/* STENCIL IMPORTS */
|
|
2
2
|
import { h } from "@stencil/core";
|
|
3
|
-
import { Locale } from "../../common/locale";
|
|
4
3
|
import { hiChar } from "../../common/helpers";
|
|
5
4
|
export class GxIdeAiMessage {
|
|
6
5
|
constructor() {
|
|
6
|
+
/*
|
|
7
|
+
INDEX:
|
|
8
|
+
1.OWN PROPERTIES
|
|
9
|
+
2.REFERENCE TO ELEMENTS
|
|
10
|
+
3.STATE() VARIABLES
|
|
11
|
+
4.PUBLIC PROPERTY API | WATCH'S
|
|
12
|
+
5.EVENTS (EMIT)
|
|
13
|
+
6.COMPONENT LIFECYCLE METHODS
|
|
14
|
+
7.LISTENERS
|
|
15
|
+
8.PUBLIC METHODS API
|
|
16
|
+
9.LOCAL METHODS
|
|
17
|
+
10.RENDER() FUNCTION
|
|
18
|
+
*/
|
|
19
|
+
// 1.OWN PROPERTIES //
|
|
7
20
|
/* The message allows to be copied*/
|
|
8
21
|
this.copyable = false;
|
|
9
22
|
// 7.LISTENERS //
|
|
@@ -19,7 +32,7 @@ export class GxIdeAiMessage {
|
|
|
19
32
|
this.showCopiedMessage = true;
|
|
20
33
|
setTimeout(() => {
|
|
21
34
|
this.showCopiedMessage = false;
|
|
22
|
-
},
|
|
35
|
+
}, 1500);
|
|
23
36
|
};
|
|
24
37
|
this.visible = false;
|
|
25
38
|
this.showCopiedMessage = false;
|
|
@@ -27,11 +40,11 @@ export class GxIdeAiMessage {
|
|
|
27
40
|
this.messageType = undefined;
|
|
28
41
|
this.filterValue = undefined;
|
|
29
42
|
this.hidden = undefined;
|
|
43
|
+
this.translations = undefined;
|
|
30
44
|
}
|
|
31
45
|
// 5.EVENTS (EMIT) //
|
|
32
46
|
// 6.COMPONENT LIFECYCLE METHODS //
|
|
33
47
|
async componentWillLoad() {
|
|
34
|
-
this._componentLocale = await Locale.getComponentStrings(this.el);
|
|
35
48
|
this.evaluateMessageIsCopyable();
|
|
36
49
|
}
|
|
37
50
|
componentDidRender() {
|
|
@@ -58,7 +71,7 @@ export class GxIdeAiMessage {
|
|
|
58
71
|
"message__caption--in-progress": this.messageType === "assistant-in-progress"
|
|
59
72
|
} }, this.showCopiedMessage ? (h("span", { class: {
|
|
60
73
|
copied: true
|
|
61
|
-
} }, h("gxg-icon", { color: "mercury", type: "bpm/tasks" }), this.
|
|
74
|
+
} }, h("gxg-icon", { color: "mercury", type: "bpm/tasks" }), this.translations["copied"])) : null, hiChar(this.message, this.filterValue)), this.messageType === "assistant-in-progress" ? (h("div", { class: "animation-wrapper" }, h("div", { class: "dot-pulse" }))) : null))));
|
|
62
75
|
}
|
|
63
76
|
static get is() { return "gx-ide-ai-message"; }
|
|
64
77
|
static get encapsulation() { return "shadow"; }
|
|
@@ -147,6 +160,25 @@ export class GxIdeAiMessage {
|
|
|
147
160
|
},
|
|
148
161
|
"attribute": "hidden",
|
|
149
162
|
"reflect": false
|
|
163
|
+
},
|
|
164
|
+
"translations": {
|
|
165
|
+
"type": "unknown",
|
|
166
|
+
"mutable": false,
|
|
167
|
+
"complexType": {
|
|
168
|
+
"original": "Translations",
|
|
169
|
+
"resolved": "{ [key: string]: string; }",
|
|
170
|
+
"references": {
|
|
171
|
+
"Translations": {
|
|
172
|
+
"location": "local"
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
},
|
|
176
|
+
"required": false,
|
|
177
|
+
"optional": false,
|
|
178
|
+
"docs": {
|
|
179
|
+
"tags": [],
|
|
180
|
+
"text": "An object with the needed string translations."
|
|
181
|
+
}
|
|
150
182
|
}
|
|
151
183
|
};
|
|
152
184
|
}
|
|
@@ -1,16 +1,29 @@
|
|
|
1
1
|
import { proxyCustomElement, HTMLElement, h } from '@stencil/core/internal/client';
|
|
2
|
-
import { L as Locale } from './locale.js';
|
|
3
2
|
import { h as hiChar } from './helpers2.js';
|
|
4
3
|
import { d as defineCustomElement$2 } from './icon.js';
|
|
5
4
|
import { d as defineCustomElement$1 } from './icon2.js';
|
|
6
5
|
|
|
7
|
-
const aiMessageCss = ".message{--ai-
|
|
6
|
+
const aiMessageCss = ".message{--ai-bg-color:#242d36;--ai-error-bg-color:#272124;--ai-error-border-color:#a3585e;--ai-message-error-color:var(--color-error-dark);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(--spacing-comp-01) var(--spacing-comp-02);border-radius:var(--border-radius-sm);border:var(--border-width-sm) solid transparent;background-color:var(--assistant-bg-color);margin-block-start:var(--spacing-comp-02)}.message__caption{font-size:var(--mc-font-size-xxs);line-height:1.6em;position:relative}.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:var(--gray-12)}.message--assistant-action .message__inner-wrapper{font-style:italic}.message--assistant-in-progress .message__inner-wrapper{font-style:italic;display:grid;grid-template-columns:1fr auto;gap:var(--spacing-comp-02)}.message--assistant-in-progress .message__inner-wrapper .message__caption{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;flex:1}.message--assistant-in-progress .message__inner-wrapper .animation-wrapper{flex:none}.message--assistant-chat .message__inner-wrapper,.message--assistant-action .message__inner-wrapper{background-color:var(--ai-bg-color)}.message--assistant-error .message__inner-wrapper{background-color:var(--ai-error-bg-color);border-color:var(--ai-error-border-color)}.message--copyable{cursor:pointer}.message--copyable:hover{filter:brightness(1.2)}.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(--gray-03);color:var(--gray-03);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(--gray-03);color:var(--gray-03)}.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%;display:flex;align-items:center;justify-content:center;color:var(--color-on-background);display:flex;gap:var(--spacing-comp-01)}.hiChar{color:var(--gx-ide-hi-char-color);font-weight:600}";
|
|
8
7
|
|
|
9
8
|
const GxIdeAiMessage = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
|
|
10
9
|
constructor() {
|
|
11
10
|
super();
|
|
12
11
|
this.__registerHost();
|
|
13
12
|
this.__attachShadow();
|
|
13
|
+
/*
|
|
14
|
+
INDEX:
|
|
15
|
+
1.OWN PROPERTIES
|
|
16
|
+
2.REFERENCE TO ELEMENTS
|
|
17
|
+
3.STATE() VARIABLES
|
|
18
|
+
4.PUBLIC PROPERTY API | WATCH'S
|
|
19
|
+
5.EVENTS (EMIT)
|
|
20
|
+
6.COMPONENT LIFECYCLE METHODS
|
|
21
|
+
7.LISTENERS
|
|
22
|
+
8.PUBLIC METHODS API
|
|
23
|
+
9.LOCAL METHODS
|
|
24
|
+
10.RENDER() FUNCTION
|
|
25
|
+
*/
|
|
26
|
+
// 1.OWN PROPERTIES //
|
|
14
27
|
/* The message allows to be copied*/
|
|
15
28
|
this.copyable = false;
|
|
16
29
|
// 7.LISTENERS //
|
|
@@ -26,7 +39,7 @@ const GxIdeAiMessage = /*@__PURE__*/ proxyCustomElement(class extends HTMLElemen
|
|
|
26
39
|
this.showCopiedMessage = true;
|
|
27
40
|
setTimeout(() => {
|
|
28
41
|
this.showCopiedMessage = false;
|
|
29
|
-
},
|
|
42
|
+
}, 1500);
|
|
30
43
|
};
|
|
31
44
|
this.visible = false;
|
|
32
45
|
this.showCopiedMessage = false;
|
|
@@ -34,11 +47,11 @@ const GxIdeAiMessage = /*@__PURE__*/ proxyCustomElement(class extends HTMLElemen
|
|
|
34
47
|
this.messageType = undefined;
|
|
35
48
|
this.filterValue = undefined;
|
|
36
49
|
this.hidden = undefined;
|
|
50
|
+
this.translations = undefined;
|
|
37
51
|
}
|
|
38
52
|
// 5.EVENTS (EMIT) //
|
|
39
53
|
// 6.COMPONENT LIFECYCLE METHODS //
|
|
40
54
|
async componentWillLoad() {
|
|
41
|
-
this._componentLocale = await Locale.getComponentStrings(this.el);
|
|
42
55
|
this.evaluateMessageIsCopyable();
|
|
43
56
|
}
|
|
44
57
|
componentDidRender() {
|
|
@@ -65,7 +78,7 @@ const GxIdeAiMessage = /*@__PURE__*/ proxyCustomElement(class extends HTMLElemen
|
|
|
65
78
|
"message__caption--in-progress": this.messageType === "assistant-in-progress"
|
|
66
79
|
} }, this.showCopiedMessage ? (h("span", { class: {
|
|
67
80
|
copied: true
|
|
68
|
-
} }, h("gxg-icon", { color: "mercury", type: "bpm/tasks" }), this.
|
|
81
|
+
} }, h("gxg-icon", { color: "mercury", type: "bpm/tasks" }), this.translations["copied"])) : null, hiChar(this.message, this.filterValue)), this.messageType === "assistant-in-progress" ? (h("div", { class: "animation-wrapper" }, h("div", { class: "dot-pulse" }))) : null))));
|
|
69
82
|
}
|
|
70
83
|
static get assetsDirs() { return ["gx-ide-assets/ai-message"]; }
|
|
71
84
|
get el() { return this; }
|
|
@@ -75,6 +88,7 @@ const GxIdeAiMessage = /*@__PURE__*/ proxyCustomElement(class extends HTMLElemen
|
|
|
75
88
|
"messageType": [1, "message-type"],
|
|
76
89
|
"filterValue": [1, "filter-value"],
|
|
77
90
|
"hidden": [4],
|
|
91
|
+
"translations": [16],
|
|
78
92
|
"visible": [32],
|
|
79
93
|
"showCopiedMessage": [32]
|
|
80
94
|
}]);
|
|
@@ -104,6 +104,7 @@ const NextDataModeling = /*@__PURE__*/ proxyCustomElement(class extends HTMLElem
|
|
|
104
104
|
this.updateReferences(event, true);
|
|
105
105
|
};
|
|
106
106
|
this.addEntity = (collection) => (event) => {
|
|
107
|
+
this.entityWasAdded = "adding";
|
|
107
108
|
const newItem = {
|
|
108
109
|
Name: event.detail.name,
|
|
109
110
|
Level: this.createGxCollectionCallback()
|
|
@@ -111,7 +112,6 @@ const NextDataModeling = /*@__PURE__*/ proxyCustomElement(class extends HTMLElem
|
|
|
111
112
|
collection.push(newItem);
|
|
112
113
|
this.addEntityItem(newItem.Level, event.detail.level[0]);
|
|
113
114
|
this.updateReferences(event, true);
|
|
114
|
-
this.entityWasAdded = "adding";
|
|
115
115
|
};
|
|
116
116
|
this.editEntity = (entityItem) => (event) => {
|
|
117
117
|
entityItem.Name = event.detail.name;
|
|
@@ -126,6 +126,7 @@ const NextDataModeling = /*@__PURE__*/ proxyCustomElement(class extends HTMLElem
|
|
|
126
126
|
this.editedControl.hideWaitingMode();
|
|
127
127
|
if (this.entityWasAdded === "adding") {
|
|
128
128
|
this.entityWasAdded = "finished";
|
|
129
|
+
this.processEntityAdding();
|
|
129
130
|
}
|
|
130
131
|
}
|
|
131
132
|
addEntityItem(collection, item) {
|
|
@@ -3,12 +3,13 @@ import { f as focusComposedPath } from './helpers.js';
|
|
|
3
3
|
import { d as defineCustomElement$3 } from './ch-window2.js';
|
|
4
4
|
import { d as defineCustomElement$2 } from './ch-window-close2.js';
|
|
5
5
|
|
|
6
|
-
const
|
|
6
|
+
const SHORTCUTS = new Map();
|
|
7
|
+
let LATEST_SHORTCUT;
|
|
7
8
|
function loadShortcuts(name, root, shortcuts) {
|
|
8
9
|
shortcuts.forEach(shortcut => {
|
|
9
10
|
const keyShortcuts = parseKeyShortcuts(shortcut.keyShortcuts);
|
|
10
11
|
keyShortcuts.forEach(keyShortcut => {
|
|
11
|
-
|
|
12
|
+
SHORTCUTS.set(normalize(keyShortcut.ctrl, keyShortcut.alt, keyShortcut.shift, keyShortcut.meta, keyShortcut.key), {
|
|
12
13
|
name,
|
|
13
14
|
root,
|
|
14
15
|
shortcut
|
|
@@ -19,16 +20,16 @@ function loadShortcuts(name, root, shortcuts) {
|
|
|
19
20
|
}
|
|
20
21
|
function unloadShortcuts(name) {
|
|
21
22
|
const removeKeyShortcuts = [];
|
|
22
|
-
|
|
23
|
+
SHORTCUTS.forEach((shortcutMap, key) => {
|
|
23
24
|
if (shortcutMap.name === name) {
|
|
24
25
|
removeKeyShortcuts.push(key);
|
|
25
26
|
}
|
|
26
27
|
});
|
|
27
|
-
removeKeyShortcuts.forEach(key =>
|
|
28
|
+
removeKeyShortcuts.forEach(key => SHORTCUTS.delete(key));
|
|
28
29
|
removeListener();
|
|
29
30
|
}
|
|
30
31
|
function getShortcuts() {
|
|
31
|
-
return Array.from(
|
|
32
|
+
return Array.from(SHORTCUTS.values())
|
|
32
33
|
.filter(shortcutMap => {
|
|
33
34
|
var _a;
|
|
34
35
|
return !((_a = shortcutMap.shortcut.conditions) === null || _a === void 0 ? void 0 : _a.focusInclude);
|
|
@@ -40,17 +41,24 @@ function getShortcuts() {
|
|
|
40
41
|
}));
|
|
41
42
|
}
|
|
42
43
|
function addListener() {
|
|
43
|
-
if (
|
|
44
|
+
if (SHORTCUTS.size > 0) {
|
|
44
45
|
window.addEventListener("keydown", keydownHandler, { capture: true });
|
|
45
46
|
}
|
|
46
47
|
}
|
|
47
48
|
function removeListener() {
|
|
48
|
-
if (
|
|
49
|
+
if (SHORTCUTS.size === 0) {
|
|
49
50
|
window.removeEventListener("keydown", keydownHandler, { capture: true });
|
|
50
51
|
}
|
|
51
52
|
}
|
|
52
53
|
function keydownHandler(eventInfo) {
|
|
53
|
-
|
|
54
|
+
var _a;
|
|
55
|
+
if (!eventInfo.repeat ||
|
|
56
|
+
(eventInfo.repeat && ((_a = LATEST_SHORTCUT === null || LATEST_SHORTCUT === void 0 ? void 0 : LATEST_SHORTCUT.shortcut.conditions) === null || _a === void 0 ? void 0 : _a.allowRepeat))) {
|
|
57
|
+
LATEST_SHORTCUT = triggerShortcut(eventInfo);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
function triggerShortcut(eventInfo) {
|
|
61
|
+
const shortcutMap = SHORTCUTS.get(normalize(eventInfo.ctrlKey, eventInfo.altKey, eventInfo.shiftKey, eventInfo.metaKey, eventInfo.key));
|
|
54
62
|
if (shortcutMap && conditions(shortcutMap)) {
|
|
55
63
|
const element = querySelectorPlus(shortcutMap.shortcut.selector, shortcutMap.root);
|
|
56
64
|
if (element) {
|
|
@@ -66,19 +74,35 @@ function keydownHandler(eventInfo) {
|
|
|
66
74
|
}
|
|
67
75
|
}
|
|
68
76
|
}
|
|
77
|
+
return shortcutMap;
|
|
69
78
|
}
|
|
70
79
|
function parseKeyShortcuts(value = "") {
|
|
71
80
|
return value.split(" ").map(item => {
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
81
|
+
return item.split("+").reduce((keyShortcut, key) => {
|
|
82
|
+
switch (key.toLowerCase()) {
|
|
83
|
+
case "ctrl":
|
|
84
|
+
keyShortcut.ctrl = true;
|
|
85
|
+
break;
|
|
86
|
+
case "alt":
|
|
87
|
+
keyShortcut.alt = true;
|
|
88
|
+
break;
|
|
89
|
+
case "shift":
|
|
90
|
+
keyShortcut.shift = true;
|
|
91
|
+
break;
|
|
92
|
+
case "meta":
|
|
93
|
+
keyShortcut.meta = true;
|
|
94
|
+
break;
|
|
95
|
+
default:
|
|
96
|
+
keyShortcut.key = key;
|
|
97
|
+
}
|
|
98
|
+
return keyShortcut;
|
|
99
|
+
}, {
|
|
100
|
+
ctrl: false,
|
|
101
|
+
alt: false,
|
|
102
|
+
shift: false,
|
|
103
|
+
meta: false,
|
|
104
|
+
key: ""
|
|
105
|
+
});
|
|
82
106
|
});
|
|
83
107
|
}
|
|
84
108
|
function normalize(ctrl, alt, shift, meta, key) {
|
|
@@ -10,7 +10,7 @@ import { d as defineCustomElement$4 } from './gxg-label2.js';
|
|
|
10
10
|
import { d as defineCustomElement$3 } from './title2.js';
|
|
11
11
|
import { d as defineCustomElement$2 } from './tooltip.js';
|
|
12
12
|
|
|
13
|
-
const aiAssistantCss = ".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}.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(--gray-01)}ch-grid-column:first-child{padding-inline-start:var(--gxg-container--padding) !important}ch-grid-column:last-child{padding-inline-end:var(--gxg-container--padding) !important}ch-grid-cell{--spacing-comp-02:var(--gxg-container--padding)}gxg-tabs{box-shadow:none}:host(.gx-ide-component){box-shadow:var(--box-shadow-01) !important;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(--font-weight-regular);font-size:var(--font-size-lg);font-family:var(--font-family-primary);line-height:1.6em;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:6px;height:6px}.gx-ide-main::-webkit-scrollbar-track{background-color:var(--gray-02);border-radius:10px}.gx-ide-main::-webkit-scrollbar-thumb{background:var(--gray-05);border-radius:10px}.gx-ide-main::-webkit-scrollbar-thumb:hover{background:var(--gray-04);cursor:pointer}.gx-ide-main .gxg-scroll{display:block;overflow-y:auto;padding-inline-end:2px}.gx-ide-overflow{overflow-y:auto;}.gx-ide-overflow::-webkit-scrollbar{width:6px;height:6px}.gx-ide-overflow::-webkit-scrollbar-track{background-color:var(--gray-02);border-radius:10px}.gx-ide-overflow::-webkit-scrollbar-thumb{background:var(--gray-05);border-radius:10px}.gx-ide-overflow::-webkit-scrollbar-thumb:hover{background:var(--gray-04);cursor:pointer}.gx-ide-overflow .gxg-scroll{display:block;overflow-y:auto;padding-inline-end:2px}.tree-container{display:flex;height:100%;width:100%;box-sizing:border-box}:root{--ui-animaton-speed:0.2s}.gxg-title-01{font-family:var(--font-family-primary);font-weight:var(--font-weight-bold);font-size:var(--font-size-md);letter-spacing:var(--letter-spacing-md);color:var(--color-on-background);text-align:start;line-height:1.455em}.gxg-title-01--negative{font-family:var(--font-family-primary);font-weight:var(--font-weight-bold);font-size:var(--font-size-md);letter-spacing:var(--letter-spacing-md);color:var(--color-on-background);text-align:start;line-height:1.455em;color:var(--color-on-primary)}.gxg-title-02{font-family:var(--font-family-primary);font-weight:var(--font-weight-bold);font-size:var(--font-size-sm);letter-spacing:var(--letter-spacing-sm);color:var(--color-on-background);text-align:start;text-transform:uppercase;line-height:1.556em}.gxg-title-02--negative{font-family:var(--font-family-primary);font-weight:var(--font-weight-bold);font-size:var(--font-size-sm);letter-spacing:var(--letter-spacing-sm);color:var(--color-on-background);text-align:start;text-transform:uppercase;line-height:1.556em;color:var(--color-on-primary)}.gxg-title-03{font-family:var(--font-family-primary);font-weight:var(--font-weight-regular);font-size:var(--font-size-xs);letter-spacing:var(--letter-spacing-sm);color:var(--color-on-background);text-align:start;text-transform:uppercase;line-height:1.556em}.gxg-title-03--negative{font-family:var(--font-family-primary);font-weight:var(--font-weight-regular);font-size:var(--font-size-xs);letter-spacing:var(--letter-spacing-sm);color:var(--color-on-background);text-align:start;text-transform:uppercase;line-height:1.556em;color:var(--color-on-primary)}.gxg-title-04{font-family:var(--font-family-primary);font-weight:var(--font-weight-semibold);font-size:var(--font-size-md);letter-spacing:var(--letter-spacing-md);color:var(--color-on-background);text-align:start;line-height:1.455em}.gxg-title-04--negative{font-family:var(--font-family-primary);font-weight:var(--font-weight-semibold);font-size:var(--font-size-md);letter-spacing:var(--letter-spacing-md);color:var(--color-on-background);text-align:start;line-height:1.455em;color:var(--color-on-primary)}.gxg-title-05{font-family:var(--font-family-primary);font-weight:var(--font-weight-semibold);font-size:var(--font-size-sm);letter-spacing:var(--letter-spacing-sm);color:var(--color-on-background);text-align:start;line-height:1.556em}.gxg-title-05--negative{font-family:var(--font-family-primary);font-weight:var(--font-weight-semibold);font-size:var(--font-size-sm);letter-spacing:var(--letter-spacing-sm);color:var(--color-on-background);text-align:start;line-height:1.556em;color:var(--color-on-primary)}.gxg-text{font-family:var(--font-family-primary);font-weight:var(--font-weight-regular);font-size:var(--font-size-sm);letter-spacing:var(--letter-spacing-xs);color:var(--color-on-background);text-align:start;line-height:1.455em}.gxg-text--negative{font-family:var(--font-family-primary);font-weight:var(--font-weight-regular);font-size:var(--font-size-sm);letter-spacing:var(--letter-spacing-xs);color:var(--color-on-background);text-align:start;line-height:1.455em;color:var(--color-on-primary)}.gxg-text--gray{font-family:var(--font-family-primary);font-weight:var(--font-weight-regular);font-size:var(--font-size-sm);letter-spacing:var(--letter-spacing-xs);color:var(--color-on-background);text-align:start;line-height:1.455em;color:var(--gray-05)}.gxg-quote{font-family:var(--font-family-primary);font-weight:var(--font-weight-regular);font-size:var(--font-size-sm);letter-spacing:var(--letter-spacing-xs);color:var(--color-on-background);text-align:start;line-height:1.455em;font-style:italic}.gxg-quote--negative{color:var(--color-on-primary)}.gxg-link{font-family:var(--font-family-primary);font-weight:var(--font-weight-regular);font-size:var(--font-size-sm);letter-spacing:var(--letter-spacing-xs);color:var(--color-on-background);text-align:start;line-height:1.455em;color:var(--color-primary);text-decoration:underline;cursor:pointer;display:inline-block}.gxg-link:hover{color:var(--color-primary-hover)}.gxg-link:active{color:var(--color-primary-active)}.gxg-link-gray{font-family:var(--font-family-primary);font-weight:var(--font-weight-regular);font-size:var(--font-size-sm);letter-spacing:var(--letter-spacing-xs);color:var(--color-on-background);text-align:start;line-height:1.455em;color:var(--color-primary);text-decoration:underline;cursor:pointer;display:inline-block;color:var(--gray-04)}.gxg-link-gray:hover{font-family:var(--font-family-primary);font-weight:var(--font-weight-regular);font-size:var(--font-size-sm);letter-spacing:var(--letter-spacing-xs);color:var(--color-on-background);text-align:start;line-height:1.455em;color:var(--color-primary);text-decoration:underline;cursor:pointer;display:inline-block;color:var(--gray-04);color:var(--gray-06)}.gxg-alert-error{font-family:var(--font-family-primary);font-weight:var(--font-weight-regular);font-size:var(--font-size-sm);letter-spacing:var(--letter-spacing-xs);color:var(--color-on-background);text-align:start;line-height:1.455em;color:var(--color-error-dark);display:inline-block}.gxg-alert-warning{font-family:var(--font-family-primary);font-weight:var(--font-weight-regular);font-size:var(--font-size-sm);letter-spacing:var(--letter-spacing-xs);color:var(--color-on-background);text-align:start;line-height:1.455em;color:var(--color-warning-dark);display:inline-block}.gxg-alert-success{font-family:var(--font-family-primary);font-weight:var(--font-weight-regular);font-size:var(--font-size-sm);letter-spacing:var(--letter-spacing-xs);color:var(--color-on-background);text-align:start;line-height:1.455em;color:var(--color-success-dark);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(--font-family-primary) !important;font-weight:var(--font-weight-semibold);font-size:var(--font-size-sm) !important;letter-spacing:var(--letter-spacing-xs);color:var(--color-primary-enabled);text-align:center;line-height:1.455em}.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-button-styles{font-family:var(--font-family-primary) !important;font-weight:var(--font-weight-semibold);font-size:var(--font-size-sm) !important;letter-spacing:var(--letter-spacing-xs);color:var(--color-primary-enabled);text-align:center;line-height:1.455em}.gxg-scrollbar{cursor:initial}.gxg-scrollbar::-webkit-scrollbar{width:var(--gxg-scrollbar-width, 6px);height:var(--gxg-scrollbar-width, 6px)}.gxg-scrollbar::-webkit-scrollbar-track{background-color:var(--gxg-scrollbar-track-background, --gray-02);border-radius:var(--gxg-scrollbar-track-border-radius, 10px)}.gxg-scrollbar::-webkit-scrollbar-thumb{background-color:var(--gxg-scrollbar-track-thumb-background, --gray-05);border-radius:var(--gxg-scrollbar-track-thumb-radius, 10px);border:var(--gxg-scrollbar-track-thumb-border);background-clip:padding-box}.gxg-scrollbar::-webkit-scrollbar-thumb:hover{background-color:var(--gxg-scrollbar-track-thumb-hover-background, --gray-04)}:host{--ai-dot-bg-color:var(--color-success-dark);display:block;height:100%;--assistant-bg-color:var(--gray-11);flex-basis:286px;flex-shrink:0;height:100%;overflow-y:auto}:host .header::before{transition:200ms background-color}:host(.assistant--success) .header__first-row::before{background-color:var(--ai-dot-bg-color)}:host(.assistant--error) .header__first-row::before{background-color:var(--color-error-dark)}.gx-ide-main-wrapper{padding:106px 10px 52px 10px;background-color:var(--gray-10);height:100%;display:grid;grid-template-rows:auto 1fr auto;gap:var(--spacing-comp-03)}.header{border-block-start:1px solid var(--gray-13);padding-block-start:var(--spacing-comp-03);display:flex;flex-direction:column}.header__actions-wrapper{display:flex;gap:var(--spacing-comp-02);margin-inline-start:auto}.header__first-row{display:flex;gap:var(--spacing-comp-02);align-items:center;justify-content:space-between}.header__first-row::before{content:\"\";width:var(--spacing-comp-02);height:var(--spacing-comp-02);display:block;border-radius:calc(var(--spacing-comp-02) / 2);background-color:var(--ai-dot-bg-color)}.header__filter{margin-block-start:var(--spacing-comp-02)}.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;cursor:initial}.messages-wrapper::-webkit-scrollbar{width:var(--gxg-scrollbar-width, 6px);height:var(--gxg-scrollbar-width, 6px)}.messages-wrapper::-webkit-scrollbar-track{background-color:var(--gxg-scrollbar-track-background, --gray-02);border-radius:var(--gxg-scrollbar-track-border-radius, 10px)}.messages-wrapper::-webkit-scrollbar-thumb{background-color:var(--gxg-scrollbar-track-thumb-background, --gray-05);border-radius:var(--gxg-scrollbar-track-thumb-radius, 10px);border:var(--gxg-scrollbar-track-thumb-border);background-clip:padding-box}.messages-wrapper::-webkit-scrollbar-thumb:hover{background-color:var(--gxg-scrollbar-track-thumb-hover-background, --gray-04)}.messages{display:flex;flex-direction:column-reverse;list-style-type:none;padding:0;margin:0}.prompt{position:relative;margin-top:auto}.prompt__textarea::part(textarea-wrapper){border:none;background-color:var(--assistant-bg-color)}.prompt__shortcuts{position:absolute;display:flex;align-items:center;gap:var(--spacing-comp-01);padding-right:var(--spacing-comp-02);right:0;top:0;height:100%}.prompt__shortcut{padding:var(--spacing-comp-00) var(--spacing-comp-02);background-color:var(--gray-00);border-radius:var(--border-width-md)}";
|
|
13
|
+
const aiAssistantCss = ".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}.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(--gray-01)}ch-grid-column:first-child{padding-inline-start:var(--gxg-container--padding) !important}ch-grid-column:last-child{padding-inline-end:var(--gxg-container--padding) !important}ch-grid-cell{--spacing-comp-02:var(--gxg-container--padding)}gxg-tabs{box-shadow:none}:host(.gx-ide-component){box-shadow:var(--box-shadow-01) !important;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(--font-weight-regular);font-size:var(--font-size-lg);font-family:var(--font-family-primary);line-height:1.6em;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:6px;height:6px}.gx-ide-main::-webkit-scrollbar-track{background-color:var(--gray-02);border-radius:10px}.gx-ide-main::-webkit-scrollbar-thumb{background:var(--gray-05);border-radius:10px}.gx-ide-main::-webkit-scrollbar-thumb:hover{background:var(--gray-04);cursor:pointer}.gx-ide-main .gxg-scroll{display:block;overflow-y:auto;padding-inline-end:2px}.gx-ide-overflow{overflow-y:auto;}.gx-ide-overflow::-webkit-scrollbar{width:6px;height:6px}.gx-ide-overflow::-webkit-scrollbar-track{background-color:var(--gray-02);border-radius:10px}.gx-ide-overflow::-webkit-scrollbar-thumb{background:var(--gray-05);border-radius:10px}.gx-ide-overflow::-webkit-scrollbar-thumb:hover{background:var(--gray-04);cursor:pointer}.gx-ide-overflow .gxg-scroll{display:block;overflow-y:auto;padding-inline-end:2px}.tree-container{display:flex;height:100%;width:100%;box-sizing:border-box}:root{--ui-animaton-speed:0.2s}.gxg-title-01{font-family:var(--font-family-primary);font-weight:var(--font-weight-bold);font-size:var(--font-size-md);letter-spacing:var(--letter-spacing-md);color:var(--color-on-background);text-align:start;line-height:1.455em}.gxg-title-01--negative{font-family:var(--font-family-primary);font-weight:var(--font-weight-bold);font-size:var(--font-size-md);letter-spacing:var(--letter-spacing-md);color:var(--color-on-background);text-align:start;line-height:1.455em;color:var(--color-on-primary)}.gxg-title-02{font-family:var(--font-family-primary);font-weight:var(--font-weight-bold);font-size:var(--font-size-sm);letter-spacing:var(--letter-spacing-sm);color:var(--color-on-background);text-align:start;text-transform:uppercase;line-height:1.556em}.gxg-title-02--negative{font-family:var(--font-family-primary);font-weight:var(--font-weight-bold);font-size:var(--font-size-sm);letter-spacing:var(--letter-spacing-sm);color:var(--color-on-background);text-align:start;text-transform:uppercase;line-height:1.556em;color:var(--color-on-primary)}.gxg-title-03{font-family:var(--font-family-primary);font-weight:var(--font-weight-regular);font-size:var(--font-size-xs);letter-spacing:var(--letter-spacing-sm);color:var(--color-on-background);text-align:start;text-transform:uppercase;line-height:1.556em}.gxg-title-03--negative{font-family:var(--font-family-primary);font-weight:var(--font-weight-regular);font-size:var(--font-size-xs);letter-spacing:var(--letter-spacing-sm);color:var(--color-on-background);text-align:start;text-transform:uppercase;line-height:1.556em;color:var(--color-on-primary)}.gxg-title-04{font-family:var(--font-family-primary);font-weight:var(--font-weight-semibold);font-size:var(--font-size-md);letter-spacing:var(--letter-spacing-md);color:var(--color-on-background);text-align:start;line-height:1.455em}.gxg-title-04--negative{font-family:var(--font-family-primary);font-weight:var(--font-weight-semibold);font-size:var(--font-size-md);letter-spacing:var(--letter-spacing-md);color:var(--color-on-background);text-align:start;line-height:1.455em;color:var(--color-on-primary)}.gxg-title-05{font-family:var(--font-family-primary);font-weight:var(--font-weight-semibold);font-size:var(--font-size-sm);letter-spacing:var(--letter-spacing-sm);color:var(--color-on-background);text-align:start;line-height:1.556em}.gxg-title-05--negative{font-family:var(--font-family-primary);font-weight:var(--font-weight-semibold);font-size:var(--font-size-sm);letter-spacing:var(--letter-spacing-sm);color:var(--color-on-background);text-align:start;line-height:1.556em;color:var(--color-on-primary)}.gxg-text{font-family:var(--font-family-primary);font-weight:var(--font-weight-regular);font-size:var(--font-size-sm);letter-spacing:var(--letter-spacing-xs);color:var(--color-on-background);text-align:start;line-height:1.455em}.gxg-text--negative{font-family:var(--font-family-primary);font-weight:var(--font-weight-regular);font-size:var(--font-size-sm);letter-spacing:var(--letter-spacing-xs);color:var(--color-on-background);text-align:start;line-height:1.455em;color:var(--color-on-primary)}.gxg-text--gray{font-family:var(--font-family-primary);font-weight:var(--font-weight-regular);font-size:var(--font-size-sm);letter-spacing:var(--letter-spacing-xs);color:var(--color-on-background);text-align:start;line-height:1.455em;color:var(--gray-05)}.gxg-quote{font-family:var(--font-family-primary);font-weight:var(--font-weight-regular);font-size:var(--font-size-sm);letter-spacing:var(--letter-spacing-xs);color:var(--color-on-background);text-align:start;line-height:1.455em;font-style:italic}.gxg-quote--negative{color:var(--color-on-primary)}.gxg-link{font-family:var(--font-family-primary);font-weight:var(--font-weight-regular);font-size:var(--font-size-sm);letter-spacing:var(--letter-spacing-xs);color:var(--color-on-background);text-align:start;line-height:1.455em;color:var(--color-primary);text-decoration:underline;cursor:pointer;display:inline-block}.gxg-link:hover{color:var(--color-primary-hover)}.gxg-link:active{color:var(--color-primary-active)}.gxg-link-gray{font-family:var(--font-family-primary);font-weight:var(--font-weight-regular);font-size:var(--font-size-sm);letter-spacing:var(--letter-spacing-xs);color:var(--color-on-background);text-align:start;line-height:1.455em;color:var(--color-primary);text-decoration:underline;cursor:pointer;display:inline-block;color:var(--gray-04)}.gxg-link-gray:hover{font-family:var(--font-family-primary);font-weight:var(--font-weight-regular);font-size:var(--font-size-sm);letter-spacing:var(--letter-spacing-xs);color:var(--color-on-background);text-align:start;line-height:1.455em;color:var(--color-primary);text-decoration:underline;cursor:pointer;display:inline-block;color:var(--gray-04);color:var(--gray-06)}.gxg-alert-error{font-family:var(--font-family-primary);font-weight:var(--font-weight-regular);font-size:var(--font-size-sm);letter-spacing:var(--letter-spacing-xs);color:var(--color-on-background);text-align:start;line-height:1.455em;color:var(--color-error-dark);display:inline-block}.gxg-alert-warning{font-family:var(--font-family-primary);font-weight:var(--font-weight-regular);font-size:var(--font-size-sm);letter-spacing:var(--letter-spacing-xs);color:var(--color-on-background);text-align:start;line-height:1.455em;color:var(--color-warning-dark);display:inline-block}.gxg-alert-success{font-family:var(--font-family-primary);font-weight:var(--font-weight-regular);font-size:var(--font-size-sm);letter-spacing:var(--letter-spacing-xs);color:var(--color-on-background);text-align:start;line-height:1.455em;color:var(--color-success-dark);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(--font-family-primary) !important;font-weight:var(--font-weight-semibold);font-size:var(--font-size-sm) !important;letter-spacing:var(--letter-spacing-xs);color:var(--color-primary-enabled);text-align:center;line-height:1.455em}.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-button-styles{font-family:var(--font-family-primary) !important;font-weight:var(--font-weight-semibold);font-size:var(--font-size-sm) !important;letter-spacing:var(--letter-spacing-xs);color:var(--color-primary-enabled);text-align:center;line-height:1.455em}.gxg-scrollbar{cursor:initial}.gxg-scrollbar::-webkit-scrollbar{width:var(--gxg-scrollbar-width, 6px);height:var(--gxg-scrollbar-width, 6px)}.gxg-scrollbar::-webkit-scrollbar-track{background-color:var(--gxg-scrollbar-track-background, --gray-02);border-radius:var(--gxg-scrollbar-track-border-radius, 10px)}.gxg-scrollbar::-webkit-scrollbar-thumb{background-color:var(--gxg-scrollbar-track-thumb-background, --gray-05);border-radius:var(--gxg-scrollbar-track-thumb-radius, 10px);border:var(--gxg-scrollbar-track-thumb-border);background-clip:padding-box}.gxg-scrollbar::-webkit-scrollbar-thumb:hover{background-color:var(--gxg-scrollbar-track-thumb-hover-background, --gray-04)}:host{--ai-dot-bg-color:var(--color-success-dark);display:block;height:100%;--assistant-bg-color:var(--gray-11);flex-basis:286px;flex-shrink:0;height:100%;overflow-y:auto}.gx-ide-main-wrapper{padding:106px 10px 52px 10px;background-color:var(--gray-10);height:100%;display:grid;grid-template-rows:auto 1fr auto;gap:var(--spacing-comp-03)}.header{border-block-start:1px solid var(--gray-13);padding-block-start:var(--spacing-comp-03);display:flex;flex-direction:column}.header__actions-wrapper{display:flex;gap:var(--spacing-comp-02);margin-inline-start:auto}.header__first-row{display:flex;gap:var(--spacing-comp-02);align-items:center;justify-content:space-between}.header__filter{margin-block-start:var(--spacing-comp-02)}.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;cursor:initial}.messages-wrapper::-webkit-scrollbar{width:var(--gxg-scrollbar-width, 6px);height:var(--gxg-scrollbar-width, 6px)}.messages-wrapper::-webkit-scrollbar-track{background-color:var(--gxg-scrollbar-track-background, --gray-02);border-radius:var(--gxg-scrollbar-track-border-radius, 10px)}.messages-wrapper::-webkit-scrollbar-thumb{background-color:var(--gxg-scrollbar-track-thumb-background, --gray-05);border-radius:var(--gxg-scrollbar-track-thumb-radius, 10px);border:var(--gxg-scrollbar-track-thumb-border);background-clip:padding-box}.messages-wrapper::-webkit-scrollbar-thumb:hover{background-color:var(--gxg-scrollbar-track-thumb-hover-background, --gray-04)}.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;background-color:var(--assistant-bg-color)}.prompt__shortcuts{position:absolute;display:flex;align-items:center;gap:var(--spacing-comp-01);padding-right:var(--spacing-comp-02);right:0;top:0;height:100%}.prompt__shortcut{padding:var(--spacing-comp-00) var(--spacing-comp-02);background-color:var(--gray-00);border-radius:var(--border-width-md)}";
|
|
14
14
|
|
|
15
15
|
const GxIdeTemplate = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
|
|
16
16
|
constructor() {
|
|
@@ -19,6 +19,7 @@ const GxIdeTemplate = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement
|
|
|
19
19
|
this.__attachShadow();
|
|
20
20
|
this.componentDidRenderFirstTime = createEvent(this, "componentDidRenderFirstTime", 7);
|
|
21
21
|
this.renderedFirstTime = false;
|
|
22
|
+
this.setFocus = true;
|
|
22
23
|
// 9.LOCAL METHODS //
|
|
23
24
|
this.evaluateAiInProgress = () => {
|
|
24
25
|
var _a;
|
|
@@ -50,7 +51,7 @@ const GxIdeTemplate = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement
|
|
|
50
51
|
};
|
|
51
52
|
this.renderMessage = (message, i) => {
|
|
52
53
|
if (message.text.length > 0) {
|
|
53
|
-
return (h("gx-ide-ai-message", { message: message.text, messageType: message.type, hidden: message.hidden, filterValue: this.filterValue, key: `${i.toString()}-${message.type}
|
|
54
|
+
return (h("gx-ide-ai-message", { message: message.text, messageType: message.type, hidden: message.hidden, filterValue: this.filterValue, key: `${i.toString()}-${message.type}`, translations: this._componentLocale.aiMessage }));
|
|
54
55
|
}
|
|
55
56
|
};
|
|
56
57
|
this.textAreaInputHandler = () => {
|
|
@@ -60,16 +61,22 @@ const GxIdeTemplate = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement
|
|
|
60
61
|
this.filterValue = "";
|
|
61
62
|
};
|
|
62
63
|
this.promptEnterHandler = async (prompt) => {
|
|
63
|
-
/* First remove double spaces*/
|
|
64
|
+
/* First remove double spaces */
|
|
64
65
|
const promptTrimmed = prompt.detail.replace(/\s+/g, " ");
|
|
65
|
-
/* Update textarea value to get the proper height*/
|
|
66
|
+
/* Update textarea value to get the proper height */
|
|
66
67
|
this.textAreaEl.value = promptTrimmed;
|
|
67
68
|
setTimeout(() => {
|
|
68
|
-
/* Then save the actual height (setTimeOut required)*/
|
|
69
|
+
/* Then save the actual height (setTimeOut required) */
|
|
69
70
|
this.lastUserMessageHeight = this.textAreaEl.offsetHeight;
|
|
70
71
|
}, 0);
|
|
71
|
-
/* The clear the textarea*/
|
|
72
|
+
/* The clear the textarea */
|
|
72
73
|
this.textAreaEl.value = "";
|
|
74
|
+
/* Insert the user message */
|
|
75
|
+
this.addMessage({
|
|
76
|
+
type: "user",
|
|
77
|
+
text: promptTrimmed
|
|
78
|
+
});
|
|
79
|
+
/* Call the callback */
|
|
73
80
|
if (this.userMessageCallback && !this.aIInProgress) {
|
|
74
81
|
this.aIInProgress = true;
|
|
75
82
|
this.userMessageCallback(promptTrimmed).then(() => {
|
|
@@ -142,9 +149,16 @@ const GxIdeTemplate = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement
|
|
|
142
149
|
this.filterEl.focus();
|
|
143
150
|
}
|
|
144
151
|
};
|
|
152
|
+
this.promptFocusHandler = () => {
|
|
153
|
+
this.promptHasFocus = true;
|
|
154
|
+
};
|
|
155
|
+
this.promptBlurHandler = () => {
|
|
156
|
+
this.promptHasFocus = false;
|
|
157
|
+
};
|
|
145
158
|
this.userHasTyped = false;
|
|
146
159
|
this.aIInProgress = false;
|
|
147
160
|
this.showFilter = false;
|
|
161
|
+
this.promptHasFocus = false;
|
|
148
162
|
this.filterValue = undefined;
|
|
149
163
|
this.messages = [];
|
|
150
164
|
this.promptMaxHeight = "128px";
|
|
@@ -154,6 +168,11 @@ const GxIdeTemplate = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement
|
|
|
154
168
|
this.promptValue = undefined;
|
|
155
169
|
this.filter = true;
|
|
156
170
|
}
|
|
171
|
+
watchAIInProgressHandler(aiInProgress) {
|
|
172
|
+
if (!aiInProgress) {
|
|
173
|
+
this.setFocus = true;
|
|
174
|
+
}
|
|
175
|
+
}
|
|
157
176
|
watchMessagesHandler() {
|
|
158
177
|
this.evaluateAiInProgress();
|
|
159
178
|
this.evaluateAiStatus();
|
|
@@ -174,6 +193,13 @@ const GxIdeTemplate = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement
|
|
|
174
193
|
this.componentDidRenderFirstTime.emit(this._componentLocale.componentName);
|
|
175
194
|
this.renderedFirstTime = true;
|
|
176
195
|
}
|
|
196
|
+
if (this.setFocus) {
|
|
197
|
+
setTimeout(() => {
|
|
198
|
+
/* Doesn't seems to work without the setTimeout */
|
|
199
|
+
this.textAreaEl.focus();
|
|
200
|
+
this.setFocus = false;
|
|
201
|
+
}, 0);
|
|
202
|
+
}
|
|
177
203
|
}
|
|
178
204
|
// 7.LISTENERS //
|
|
179
205
|
// 8.PUBLIC METHODS API //
|
|
@@ -216,8 +242,9 @@ const GxIdeTemplate = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement
|
|
|
216
242
|
prompt: true
|
|
217
243
|
} }, h("gxg-form-textarea", { ai: true, class: "prompt__textarea", value: this.promptValue, maxHeight: this.promptMaxHeight, placeholder: this.aIInProgress
|
|
218
244
|
? this._componentLocale.processingQueryPlaceholder
|
|
219
|
-
: this._componentLocale.promptPlaceholder, onInput: this.textAreaInputHandler, onEnter: this.promptEnterHandler, onArrowUpPressed: this.promptArrowUpHandler, disabled: this.aIInProgress, ref: el => (this.textAreaEl = el) }), !this.userHasTyped &&
|
|
245
|
+
: this._componentLocale.promptPlaceholder, onInput: this.textAreaInputHandler, onEnter: this.promptEnterHandler, onArrowUpPressed: this.promptArrowUpHandler, onBlur: this.promptBlurHandler, onFocus: this.promptFocusHandler, disabled: this.aIInProgress, ref: el => (this.textAreaEl = el) }), !this.userHasTyped &&
|
|
220
246
|
!this.aIInProgress &&
|
|
247
|
+
!this.promptHasFocus &&
|
|
221
248
|
((_b = this.focusShortcuts) === null || _b === void 0 ? void 0 : _b.length) > 0 ? (h("div", { class: {
|
|
222
249
|
prompt__shortcuts: true
|
|
223
250
|
} }, this.focusShortcuts.map((shortcut, i) => {
|
|
@@ -228,6 +255,7 @@ const GxIdeTemplate = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement
|
|
|
228
255
|
static get assetsDirs() { return ["gx-ide-assets/ai-assistant"]; }
|
|
229
256
|
get el() { return this; }
|
|
230
257
|
static get watchers() { return {
|
|
258
|
+
"aIInProgress": ["watchAIInProgressHandler"],
|
|
231
259
|
"messages": ["watchMessagesHandler"]
|
|
232
260
|
}; }
|
|
233
261
|
static get style() { return aiAssistantCss; }
|
|
@@ -242,6 +270,7 @@ const GxIdeTemplate = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement
|
|
|
242
270
|
"userHasTyped": [32],
|
|
243
271
|
"aIInProgress": [32],
|
|
244
272
|
"showFilter": [32],
|
|
273
|
+
"promptHasFocus": [32],
|
|
245
274
|
"filterValue": [32],
|
|
246
275
|
"clear": [64],
|
|
247
276
|
"addMessage": [64]
|
|
@@ -52,10 +52,19 @@ const setInitialComboValue = (options) => {
|
|
|
52
52
|
return options[0].value || options[0].id;
|
|
53
53
|
}
|
|
54
54
|
};
|
|
55
|
+
const escapeRegExp = (str) => {
|
|
56
|
+
return str.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
57
|
+
};
|
|
55
58
|
const hiChar = function (text, filterValue) {
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
+
if (text && filterValue) {
|
|
60
|
+
/* this function highlights the character(s) that match(es) the filter value. (hi)light (Char)acters */
|
|
61
|
+
const escapedFilterValue = escapeRegExp(filterValue);
|
|
62
|
+
const re = new RegExp(escapedFilterValue, "gi");
|
|
63
|
+
return (h("span", { innerHTML: text.replace(re, '<span class="hiChar">$&</span>') }));
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
return text;
|
|
67
|
+
}
|
|
59
68
|
};
|
|
60
69
|
const closeOnOutsideClickHandler = (eventInfo, ref) => {
|
|
61
70
|
if (!eventInfo.composedPath().includes(ref)) {
|
|
@@ -100,6 +100,7 @@ const NextDataModeling = class {
|
|
|
100
100
|
this.updateReferences(event, true);
|
|
101
101
|
};
|
|
102
102
|
this.addEntity = (collection) => (event) => {
|
|
103
|
+
this.entityWasAdded = "adding";
|
|
103
104
|
const newItem = {
|
|
104
105
|
Name: event.detail.name,
|
|
105
106
|
Level: this.createGxCollectionCallback()
|
|
@@ -107,7 +108,6 @@ const NextDataModeling = class {
|
|
|
107
108
|
collection.push(newItem);
|
|
108
109
|
this.addEntityItem(newItem.Level, event.detail.level[0]);
|
|
109
110
|
this.updateReferences(event, true);
|
|
110
|
-
this.entityWasAdded = "adding";
|
|
111
111
|
};
|
|
112
112
|
this.editEntity = (entityItem) => (event) => {
|
|
113
113
|
entityItem.Name = event.detail.name;
|
|
@@ -122,6 +122,7 @@ const NextDataModeling = class {
|
|
|
122
122
|
this.editedControl.hideWaitingMode();
|
|
123
123
|
if (this.entityWasAdded === "adding") {
|
|
124
124
|
this.entityWasAdded = "finished";
|
|
125
|
+
this.processEntityAdding();
|
|
125
126
|
}
|
|
126
127
|
}
|
|
127
128
|
addEntityItem(collection, item) {
|