@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.
Files changed (66) hide show
  1. package/dist/cjs/ch-next-data-modeling-render.cjs.entry.js +2 -1
  2. package/dist/cjs/ch-shortcuts.cjs.entry.js +42 -18
  3. package/dist/cjs/genexus-ide-ui.cjs.js +1 -1
  4. package/dist/cjs/gx-ide-ai-assistant.cjs.entry.js +35 -7
  5. package/dist/cjs/gx-ide-ai-message.cjs.entry.js +19 -6
  6. package/dist/cjs/gx-ide-kb-manager-import.cjs.entry.js +1 -1
  7. package/dist/cjs/gx-ide-new-environment.cjs.entry.js +1 -1
  8. package/dist/cjs/gx-ide-object-selector.cjs.entry.js +1 -1
  9. package/dist/cjs/gx-ide-team-dev-commit.cjs.entry.js +1 -1
  10. package/dist/cjs/gx-ide-team-dev-update.cjs.entry.js +1 -1
  11. package/dist/cjs/gx-ide-ww-images.cjs.entry.js +1 -1
  12. package/dist/cjs/{helpers-0a984c76.js → helpers-e25e57cb.js} +12 -3
  13. package/dist/cjs/loader.cjs.js +1 -1
  14. package/dist/collection/collection-manifest.json +2 -2
  15. package/dist/collection/common/helpers.js +12 -3
  16. package/dist/collection/components/ai-assistant/ai-assistant.css +3 -21
  17. package/dist/collection/components/ai-assistant/ai-assistant.js +37 -6
  18. package/dist/collection/components/ai-assistant/ai-message.css +9 -12
  19. package/dist/collection/components/ai-assistant/ai-message.js +36 -4
  20. package/dist/collection/components/ai-assistant/gx-ide-assets/ai-assistant/langs/ai-assistant.lang.en.json +3 -1
  21. package/dist/components/ai-message.js +19 -5
  22. package/dist/components/ch-next-data-modeling-render.js +2 -1
  23. package/dist/components/ch-shortcuts.js +42 -18
  24. package/dist/components/gx-ide-ai-assistant.js +36 -7
  25. package/dist/components/helpers2.js +12 -3
  26. package/dist/esm/ch-next-data-modeling-render.entry.js +2 -1
  27. package/dist/esm/ch-shortcuts.entry.js +42 -18
  28. package/dist/esm/genexus-ide-ui.js +1 -1
  29. package/dist/esm/gx-ide-ai-assistant.entry.js +35 -7
  30. package/dist/esm/gx-ide-ai-message.entry.js +19 -6
  31. package/dist/esm/gx-ide-kb-manager-import.entry.js +1 -1
  32. package/dist/esm/gx-ide-new-environment.entry.js +1 -1
  33. package/dist/esm/gx-ide-object-selector.entry.js +1 -1
  34. package/dist/esm/gx-ide-team-dev-commit.entry.js +1 -1
  35. package/dist/esm/gx-ide-team-dev-update.entry.js +1 -1
  36. package/dist/esm/gx-ide-ww-images.entry.js +1 -1
  37. package/dist/esm/{helpers-91494352.js → helpers-a11a19fb.js} +12 -3
  38. package/dist/esm/loader.js +1 -1
  39. package/dist/genexus-ide-ui/genexus-ide-ui.esm.js +1 -1
  40. package/dist/genexus-ide-ui/gx-ide-assets/ai-assistant/langs/ai-assistant.lang.en.json +3 -1
  41. package/dist/genexus-ide-ui/p-0f3c3a5e.entry.js +1 -0
  42. package/dist/genexus-ide-ui/{p-cb07fc99.entry.js → p-1b1fd856.entry.js} +1 -1
  43. package/dist/genexus-ide-ui/{p-440fe7b3.entry.js → p-1da59907.entry.js} +1 -1
  44. package/dist/genexus-ide-ui/{p-8c5919ec.entry.js → p-2b6a3afa.entry.js} +1 -1
  45. package/dist/genexus-ide-ui/p-2e7d1eef.entry.js +1 -0
  46. package/dist/genexus-ide-ui/{p-3d410e77.entry.js → p-33961b41.entry.js} +1 -1
  47. package/dist/genexus-ide-ui/p-4a8187c1.entry.js +1 -0
  48. package/dist/genexus-ide-ui/{p-4758d51e.js → p-64d3885f.js} +1 -1
  49. package/dist/genexus-ide-ui/p-6e9794d0.entry.js +1 -0
  50. package/dist/genexus-ide-ui/{p-13085dd7.entry.js → p-72fad9dd.entry.js} +1 -1
  51. package/dist/genexus-ide-ui/{p-e13a299b.entry.js → p-a43dc4e7.entry.js} +1 -1
  52. package/dist/types/common/helpers.d.ts +1 -0
  53. package/dist/types/components/ai-assistant/ai-assistant.d.ts +8 -0
  54. package/dist/types/components/ai-assistant/ai-message.d.ts +7 -4
  55. package/dist/types/components.d.ts +9 -0
  56. package/package.json +1 -1
  57. package/dist/collection/components/ai-assistant/gx-ide-assets/ai-message/langs/ai-message.lang.en.json +0 -4
  58. package/dist/collection/components/ai-assistant/gx-ide-assets/ai-message/langs/ai-message.lang.ja.json +0 -3
  59. package/dist/collection/components/ai-assistant/gx-ide-assets/ai-message/langs/ai-message.lang.zh.json +0 -3
  60. package/dist/genexus-ide-ui/gx-ide-assets/ai-message/langs/ai-message.lang.en.json +0 -4
  61. package/dist/genexus-ide-ui/gx-ide-assets/ai-message/langs/ai-message.lang.ja.json +0 -3
  62. package/dist/genexus-ide-ui/gx-ide-assets/ai-message/langs/ai-message.lang.zh.json +0 -3
  63. package/dist/genexus-ide-ui/p-0261c202.entry.js +0 -1
  64. package/dist/genexus-ide-ui/p-38dacc01.entry.js +0 -1
  65. package/dist/genexus-ide-ui/p-47f3b15b.entry.js +0 -1
  66. 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-message-success-color: var(--color-success-dark);
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-xs) var(--border-radius-sm) var(--border-radius-sm) var(--border-radius-xs);
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
- border-inline-start-width: var(--border-width-md);
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
- border-inline-start-color: var(--ai-message-success-color);
72
+ background-color: var(--ai-bg-color);
77
73
  }
78
74
  .message--assistant-error .message__inner-wrapper {
79
- border-inline-start-color: var(--ai-message-error-color);
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
- }, 1000);
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._componentLocale.copied)) : null, hiChar(this.message, this.filterValue)), this.messageType === "assistant-in-progress" ? (h("div", { class: "animation-wrapper" }, h("div", { class: "dot-pulse" }))) : null))));
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
  }
@@ -3,5 +3,7 @@
3
3
  "greeting": "✨ Greetings!, ¿How may I assist you?",
4
4
  "promptPlaceholder": "Ask anything...",
5
5
  "processingQueryPlaceholder": "Processing query...",
6
- "copied": "Copied"
6
+ "aiMessage": {
7
+ "copied": "Copied"
8
+ }
7
9
  }
@@ -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-message-success-color:var(--color-success-dark);--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-xs) var(--border-radius-sm) var(--border-radius-sm) var(--border-radius-xs);border:var(--border-width-sm) solid transparent;background-color:var(--assistant-bg-color);border-inline-start-width:var(--border-width-md);margin-block-end: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 .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--user .message__inner-wrapper{border-top-left-radius:var(--border-radius-sm);border-bottom-left-radius:var(--border-radius-sm)}.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);border-inline-start-color:var(--gray-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{border-inline-start-color:var(--ai-message-success-color)}.message--assistant-error .message__inner-wrapper{border-inline-start-color:var(--ai-message-error-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}";
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
- }, 1000);
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._componentLocale.copied)) : null, hiChar(this.message, this.filterValue)), this.messageType === "assistant-in-progress" ? (h("div", { class: "animation-wrapper" }, h("div", { class: "dot-pulse" }))) : null))));
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 CH_SHORTCUTS = new Map();
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
- CH_SHORTCUTS.set(normalize(keyShortcut.ctrl, keyShortcut.alt, keyShortcut.shift, keyShortcut.meta, keyShortcut.key), {
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
- CH_SHORTCUTS.forEach((shortcutMap, key) => {
23
+ SHORTCUTS.forEach((shortcutMap, key) => {
23
24
  if (shortcutMap.name === name) {
24
25
  removeKeyShortcuts.push(key);
25
26
  }
26
27
  });
27
- removeKeyShortcuts.forEach(key => CH_SHORTCUTS.delete(key));
28
+ removeKeyShortcuts.forEach(key => SHORTCUTS.delete(key));
28
29
  removeListener();
29
30
  }
30
31
  function getShortcuts() {
31
- return Array.from(CH_SHORTCUTS.values())
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 (CH_SHORTCUTS.size > 0) {
44
+ if (SHORTCUTS.size > 0) {
44
45
  window.addEventListener("keydown", keydownHandler, { capture: true });
45
46
  }
46
47
  }
47
48
  function removeListener() {
48
- if (CH_SHORTCUTS.size === 0) {
49
+ if (SHORTCUTS.size === 0) {
49
50
  window.removeEventListener("keydown", keydownHandler, { capture: true });
50
51
  }
51
52
  }
52
53
  function keydownHandler(eventInfo) {
53
- const shortcutMap = CH_SHORTCUTS.get(normalize(eventInfo.ctrlKey, eventInfo.altKey, eventInfo.shiftKey, eventInfo.metaKey, eventInfo.key));
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
- const match = item.match(/(?:(?<ctrl>Ctrl)?(?<alt>Alt)?(?<shift>Shift)?(?<meta>Meta)?\+?)*(?<key>.*)?/i);
73
- if (match.groups.key !== "") {
74
- return {
75
- ctrl: match.groups.ctrl !== undefined,
76
- alt: match.groups.alt !== undefined,
77
- shift: match.groups.shift !== undefined,
78
- meta: match.groups.meta !== undefined,
79
- key: match.groups.key
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
- /* this function highlights the character(s) that match(es) the filter value. (hi)light (Char)acters */
57
- const re = new RegExp(filterValue, "gi");
58
- return (h("span", { innerHTML: text.replace(re, '<span class="hiChar">$&</span>') }));
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) {