@genexus/genexus-ide-ui 1.0.23 → 1.0.25

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 (172) hide show
  1. package/dist/cjs/{form-validation-0019e158.js → form-validation-178cf461.js} +1 -19
  2. package/dist/cjs/form-validation-178cf461.js.map +1 -0
  3. package/dist/cjs/genexus-ide-ui.cjs.js +1 -1
  4. package/dist/cjs/gx-ide-ai-assistant.cjs.entry.js +4 -3
  5. package/dist/cjs/gx-ide-ai-assistant.cjs.entry.js.map +1 -1
  6. package/dist/cjs/gx-ide-ai-message.cjs.entry.js +10 -28
  7. package/dist/cjs/gx-ide-ai-message.cjs.entry.js.map +1 -1
  8. package/dist/cjs/gx-ide-connect-gx-server.cjs.entry.js +197 -61
  9. package/dist/cjs/gx-ide-connect-gx-server.cjs.entry.js.map +1 -1
  10. package/dist/cjs/gx-ide-create-kb-from-server.cjs.entry.js +190 -122
  11. package/dist/cjs/gx-ide-create-kb-from-server.cjs.entry.js.map +1 -1
  12. package/dist/cjs/gx-ide-new-environment.cjs.entry.js +1 -1
  13. package/dist/cjs/gx-ide-new-kb.cjs.entry.js +1 -1
  14. package/dist/cjs/gx-ide-share-kb.cjs.entry.js +149 -43
  15. package/dist/cjs/gx-ide-share-kb.cjs.entry.js.map +1 -1
  16. package/dist/cjs/gx-ide-welcome-page.cjs.entry.js +2 -2
  17. package/dist/cjs/gx-ide-welcome-page.cjs.entry.js.map +1 -1
  18. package/dist/cjs/loader.cjs.js +1 -1
  19. package/dist/collection/collection-manifest.json +3 -3
  20. package/dist/collection/components/ai-assistant/ai-assistant.css +2 -2
  21. package/dist/collection/components/ai-assistant/ai-assistant.js +3 -2
  22. package/dist/collection/components/ai-assistant/ai-assistant.js.map +1 -1
  23. package/dist/collection/components/ai-assistant/ai-message.css +38 -13
  24. package/dist/collection/components/ai-assistant/ai-message.js +11 -27
  25. package/dist/collection/components/ai-assistant/ai-message.js.map +1 -1
  26. package/dist/collection/components/ai-assistant/gx-ide-assets/ai-assistant/langs/ai-assistant.lang.en.json +1 -0
  27. package/dist/collection/components/ai-assistant/gx-ide-assets/ai-assistant/langs/ai-assistant.lang.ja.json +2 -1
  28. package/dist/collection/components/ai-assistant/gx-ide-assets/ai-message/langs/ai-message.lang.en.json +4 -0
  29. package/dist/collection/components/ai-assistant/gx-ide-assets/ai-message/langs/ai-message.lang.ja.json +3 -0
  30. package/dist/collection/components/ai-assistant/gx-ide-assets/ai-message/langs/ai-message.lang.zh.json +3 -0
  31. package/dist/collection/components/team-dev/connect-gx-server/connect-gx-server.css +33 -0
  32. package/dist/collection/components/team-dev/connect-gx-server/connect-gx-server.js +350 -0
  33. package/dist/collection/components/team-dev/connect-gx-server/connect-gx-server.js.map +1 -0
  34. package/dist/collection/components/team-dev/connect-gx-server/gx-ide-assets/connect-gx-server/langs/connect-gx-server.lang.en.json +13 -0
  35. package/dist/collection/components/team-dev/connect-gx-server/gx-ide-assets/connect-gx-server/langs/connect-gx-server.lang.ja.json +3 -0
  36. package/dist/collection/components/team-dev/connect-gx-server/helpers.js +17 -0
  37. package/dist/collection/components/team-dev/connect-gx-server/helpers.js.map +1 -0
  38. package/dist/collection/components/team-dev/create-kb-from-server/create-kb-from-server.css +39 -0
  39. package/dist/collection/components/team-dev/create-kb-from-server/create-kb-from-server.js +381 -0
  40. package/dist/collection/components/team-dev/create-kb-from-server/create-kb-from-server.js.map +1 -0
  41. package/dist/collection/components/team-dev/create-kb-from-server/gx-ide-assets/create-kb-from-server/langs/create-kb-from-server.lang.en.json +27 -0
  42. package/dist/collection/components/team-dev/create-kb-from-server/gx-ide-assets/create-kb-from-server/langs/create-kb-from-server.lang.ja.json +27 -0
  43. package/dist/collection/components/team-dev/create-kb-from-server/gx-ide-assets/create-kb-from-server/langs/create-kb-from-server.lang.zh.json +27 -0
  44. package/dist/collection/components/team-dev/create-kb-from-server/gx-ide-assets/create-kb-from-server/shortcuts.json +10 -0
  45. package/dist/collection/components/team-dev/create-kb-from-server/helpers.js +12 -0
  46. package/dist/collection/components/team-dev/create-kb-from-server/helpers.js.map +1 -0
  47. package/dist/collection/components/team-dev/share-kb/gx-ide-assets/share-kb/langs/share-kb.lang.en.json +27 -0
  48. package/dist/collection/components/team-dev/share-kb/gx-ide-assets/share-kb/langs/share-kb.lang.ja.json +27 -0
  49. package/dist/collection/components/team-dev/share-kb/gx-ide-assets/share-kb/langs/share-kb.lang.zh.json +27 -0
  50. package/dist/collection/components/team-dev/share-kb/gx-ide-assets/share-kb/shortcuts.json +10 -0
  51. package/dist/collection/components/team-dev/share-kb/helpers.js +12 -0
  52. package/dist/collection/components/team-dev/share-kb/helpers.js.map +1 -0
  53. package/dist/collection/components/team-dev/share-kb/share-kb.css +39 -0
  54. package/dist/collection/components/team-dev/share-kb/share-kb.js +349 -0
  55. package/dist/collection/components/team-dev/share-kb/share-kb.js.map +1 -0
  56. package/dist/collection/components/welcome-page/welcome-page.css +2 -16
  57. package/dist/collection/components/welcome-page/welcome-page.js +1 -1
  58. package/dist/collection/components/welcome-page/welcome-page.js.map +1 -1
  59. package/dist/components/ai-message.js +10 -28
  60. package/dist/components/ai-message.js.map +1 -1
  61. package/dist/components/form-validation.js +1 -18
  62. package/dist/components/form-validation.js.map +1 -1
  63. package/dist/components/gx-ide-ai-assistant.js +4 -3
  64. package/dist/components/gx-ide-ai-assistant.js.map +1 -1
  65. package/dist/components/gx-ide-connect-gx-server.js +211 -82
  66. package/dist/components/gx-ide-connect-gx-server.js.map +1 -1
  67. package/dist/components/gx-ide-create-kb-from-server.js +204 -148
  68. package/dist/components/gx-ide-create-kb-from-server.js.map +1 -1
  69. package/dist/components/gx-ide-share-kb.js +160 -61
  70. package/dist/components/gx-ide-share-kb.js.map +1 -1
  71. package/dist/components/gx-ide-welcome-page.js +2 -2
  72. package/dist/components/gx-ide-welcome-page.js.map +1 -1
  73. package/dist/esm/{form-validation-44b2c2a8.js → form-validation-cd0215c6.js} +2 -19
  74. package/dist/esm/form-validation-cd0215c6.js.map +1 -0
  75. package/dist/esm/genexus-ide-ui.js +1 -1
  76. package/dist/esm/gx-ide-ai-assistant.entry.js +4 -3
  77. package/dist/esm/gx-ide-ai-assistant.entry.js.map +1 -1
  78. package/dist/esm/gx-ide-ai-message.entry.js +10 -28
  79. package/dist/esm/gx-ide-ai-message.entry.js.map +1 -1
  80. package/dist/esm/gx-ide-connect-gx-server.entry.js +198 -62
  81. package/dist/esm/gx-ide-connect-gx-server.entry.js.map +1 -1
  82. package/dist/esm/gx-ide-create-kb-from-server.entry.js +191 -123
  83. package/dist/esm/gx-ide-create-kb-from-server.entry.js.map +1 -1
  84. package/dist/esm/gx-ide-new-environment.entry.js +1 -1
  85. package/dist/esm/gx-ide-new-kb.entry.js +1 -1
  86. package/dist/esm/gx-ide-share-kb.entry.js +149 -43
  87. package/dist/esm/gx-ide-share-kb.entry.js.map +1 -1
  88. package/dist/esm/gx-ide-welcome-page.entry.js +2 -2
  89. package/dist/esm/gx-ide-welcome-page.entry.js.map +1 -1
  90. package/dist/esm/loader.js +1 -1
  91. package/dist/genexus-ide-ui/genexus-ide-ui.esm.js +1 -1
  92. package/dist/genexus-ide-ui/genexus-ide-ui.esm.js.map +1 -1
  93. package/dist/genexus-ide-ui/gx-ide-assets/ai-assistant/langs/ai-assistant.lang.en.json +1 -0
  94. package/dist/genexus-ide-ui/gx-ide-assets/ai-assistant/langs/ai-assistant.lang.ja.json +2 -1
  95. package/dist/genexus-ide-ui/gx-ide-assets/ai-message/langs/ai-message.lang.en.json +4 -0
  96. package/dist/genexus-ide-ui/gx-ide-assets/ai-message/langs/ai-message.lang.ja.json +3 -0
  97. package/dist/genexus-ide-ui/gx-ide-assets/ai-message/langs/ai-message.lang.zh.json +3 -0
  98. package/dist/genexus-ide-ui/gx-ide-assets/connect-gx-server/langs/connect-gx-server.lang.en.json +8 -12
  99. package/dist/genexus-ide-ui/gx-ide-assets/connect-gx-server/langs/connect-gx-server.lang.ja.json +2 -16
  100. package/dist/genexus-ide-ui/gx-ide-assets/create-kb-from-server/langs/create-kb-from-server.lang.en.json +20 -12
  101. package/dist/genexus-ide-ui/gx-ide-assets/create-kb-from-server/langs/create-kb-from-server.lang.ja.json +20 -12
  102. package/dist/genexus-ide-ui/gx-ide-assets/create-kb-from-server/langs/create-kb-from-server.lang.zh.json +25 -1
  103. package/dist/genexus-ide-ui/gx-ide-assets/create-kb-from-server/shortcuts.json +5 -2
  104. package/dist/genexus-ide-ui/gx-ide-assets/share-kb/langs/share-kb.lang.en.json +22 -8
  105. package/dist/genexus-ide-ui/gx-ide-assets/share-kb/langs/share-kb.lang.ja.json +23 -9
  106. package/dist/genexus-ide-ui/gx-ide-assets/share-kb/langs/share-kb.lang.zh.json +25 -1
  107. package/dist/genexus-ide-ui/gx-ide-assets/share-kb/shortcuts.json +5 -2
  108. package/dist/genexus-ide-ui/{p-7a2d3f1c.entry.js → p-10beeb25.entry.js} +32 -30
  109. package/dist/genexus-ide-ui/p-10beeb25.entry.js.map +1 -0
  110. package/dist/genexus-ide-ui/p-289c3290.js +39 -0
  111. package/dist/genexus-ide-ui/p-289c3290.js.map +1 -0
  112. package/dist/genexus-ide-ui/p-2c6dd837.entry.js +305 -0
  113. package/dist/genexus-ide-ui/p-2c6dd837.entry.js.map +1 -0
  114. package/dist/genexus-ide-ui/p-407c31c6.entry.js +264 -0
  115. package/dist/genexus-ide-ui/p-407c31c6.entry.js.map +1 -0
  116. package/dist/genexus-ide-ui/{p-3adbc04c.entry.js → p-4cbaa118.entry.js} +11 -11
  117. package/dist/genexus-ide-ui/p-673480ac.entry.js +88 -0
  118. package/dist/genexus-ide-ui/p-673480ac.entry.js.map +1 -0
  119. package/dist/genexus-ide-ui/{p-26b2037d.entry.js → p-9e810ad5.entry.js} +5 -4
  120. package/dist/genexus-ide-ui/p-9e810ad5.entry.js.map +1 -0
  121. package/dist/genexus-ide-ui/p-e31b4df0.entry.js +249 -0
  122. package/dist/genexus-ide-ui/p-e31b4df0.entry.js.map +1 -0
  123. package/dist/genexus-ide-ui/{p-3d5fea0a.entry.js → p-ed7eada1.entry.js} +2 -2
  124. package/dist/types/components/ai-assistant/ai-message.d.ts +1 -1
  125. package/dist/types/components/team-dev/connect-gx-server/connect-gx-server.d.ts +50 -0
  126. package/dist/types/components/team-dev/connect-gx-server/helpers.d.ts +4 -0
  127. package/dist/types/components/team-dev/create-kb-from-server/create-kb-from-server.d.ts +82 -0
  128. package/dist/types/components/team-dev/create-kb-from-server/helpers.d.ts +3 -0
  129. package/dist/types/components/team-dev/share-kb/helpers.d.ts +3 -0
  130. package/dist/types/components/team-dev/share-kb/share-kb.d.ts +73 -0
  131. package/dist/types/components/welcome-page/welcome-page.d.ts +4 -1
  132. package/dist/types/components.d.ts +119 -151
  133. package/package.json +3 -3
  134. package/dist/cjs/form-validation-0019e158.js.map +0 -1
  135. package/dist/collection/components/connect-gx-server/connect-gx-server.css +0 -609
  136. package/dist/collection/components/connect-gx-server/connect-gx-server.js +0 -258
  137. package/dist/collection/components/connect-gx-server/connect-gx-server.js.map +0 -1
  138. package/dist/collection/components/connect-gx-server/gx-ide-assets/connect-gx-server/langs/connect-gx-server.lang.en.json +0 -17
  139. package/dist/collection/components/connect-gx-server/gx-ide-assets/connect-gx-server/langs/connect-gx-server.lang.ja.json +0 -17
  140. package/dist/collection/components/create-kb-from-server/create-kb-from-server.css +0 -638
  141. package/dist/collection/components/create-kb-from-server/create-kb-from-server.js +0 -349
  142. package/dist/collection/components/create-kb-from-server/create-kb-from-server.js.map +0 -1
  143. package/dist/collection/components/create-kb-from-server/gx-ide-assets/create-kb-from-server/langs/create-kb-from-server.lang.en.json +0 -19
  144. package/dist/collection/components/create-kb-from-server/gx-ide-assets/create-kb-from-server/langs/create-kb-from-server.lang.ja.json +0 -19
  145. package/dist/collection/components/create-kb-from-server/gx-ide-assets/create-kb-from-server/langs/create-kb-from-server.lang.zh.json +0 -3
  146. package/dist/collection/components/create-kb-from-server/gx-ide-assets/create-kb-from-server/shortcuts.json +0 -7
  147. package/dist/collection/components/share-kb/gx-ide-assets/share-kb/langs/share-kb.lang.en.json +0 -13
  148. package/dist/collection/components/share-kb/gx-ide-assets/share-kb/langs/share-kb.lang.ja.json +0 -13
  149. package/dist/collection/components/share-kb/gx-ide-assets/share-kb/langs/share-kb.lang.zh.json +0 -3
  150. package/dist/collection/components/share-kb/gx-ide-assets/share-kb/shortcuts.json +0 -7
  151. package/dist/collection/components/share-kb/share-kb.css +0 -636
  152. package/dist/collection/components/share-kb/share-kb.js +0 -189
  153. package/dist/collection/components/share-kb/share-kb.js.map +0 -1
  154. package/dist/esm/form-validation-44b2c2a8.js.map +0 -1
  155. package/dist/genexus-ide-ui/p-02bc66c1.entry.js +0 -129
  156. package/dist/genexus-ide-ui/p-02bc66c1.entry.js.map +0 -1
  157. package/dist/genexus-ide-ui/p-26b2037d.entry.js.map +0 -1
  158. package/dist/genexus-ide-ui/p-58e13823.entry.js +0 -158
  159. package/dist/genexus-ide-ui/p-58e13823.entry.js.map +0 -1
  160. package/dist/genexus-ide-ui/p-5dfb7c66.entry.js +0 -106
  161. package/dist/genexus-ide-ui/p-5dfb7c66.entry.js.map +0 -1
  162. package/dist/genexus-ide-ui/p-7a2d3f1c.entry.js.map +0 -1
  163. package/dist/genexus-ide-ui/p-b8624c0b.js +0 -56
  164. package/dist/genexus-ide-ui/p-b8624c0b.js.map +0 -1
  165. package/dist/genexus-ide-ui/p-cf2c8b3c.entry.js +0 -241
  166. package/dist/genexus-ide-ui/p-cf2c8b3c.entry.js.map +0 -1
  167. package/dist/types/components/connect-gx-server/connect-gx-server.d.ts +0 -62
  168. package/dist/types/components/create-kb-from-server/create-kb-from-server.d.ts +0 -97
  169. package/dist/types/components/share-kb/share-kb.d.ts +0 -53
  170. /package/dist/collection/components/{connect-gx-server → team-dev/connect-gx-server}/gx-ide-assets/connect-gx-server/langs/connect-gx-server.lang.zh.json +0 -0
  171. /package/dist/genexus-ide-ui/{p-3adbc04c.entry.js.map → p-4cbaa118.entry.js.map} +0 -0
  172. /package/dist/genexus-ide-ui/{p-3d5fea0a.entry.js.map → p-ed7eada1.entry.js.map} +0 -0
@@ -1,3 +1,27 @@
1
1
  {
2
- "presentation": "你好,我的名字是 {0},我住在俄勒冈州。"
2
+ "componentName": "",
3
+ "header": {
4
+ "serverUrl": "",
5
+ "user": "",
6
+ "change": "",
7
+ "authenticationType": "",
8
+ "password": ""
9
+ },
10
+ "kb": {
11
+ "aliasLabel": "",
12
+ "localKbNamePlaceholder": "",
13
+ "searchKbsPlaceholder": "",
14
+ "trunkVersion": "",
15
+ "allVersions": "",
16
+ "selectVersion": "",
17
+ "versionsLabel": "",
18
+ "versionsPlaceholder": "",
19
+ "versionsPlaceholderDisabled": "",
20
+ "noMatches": "",
21
+ "versionSelectedFieldValue": ""
22
+ },
23
+ "footer": {
24
+ "cancel": "",
25
+ "shareKB": ""
26
+ }
3
27
  }
@@ -1,7 +1,10 @@
1
1
  [
2
2
  {
3
- "selector": "[part='share-kb']",
3
+ "selector": "[part~='button-create-kb']",
4
4
  "keyShortcuts": "Enter",
5
- "action": "click"
5
+ "action": "click",
6
+ "conditions": {
7
+ "focusExclude": "[part~='button-cancel']"
8
+ }
6
9
  }
7
10
  ]
@@ -1,10 +1,10 @@
1
- import { a as e, r as i, h as t, H as s, g as r } from "./p-aaed592c.js";
1
+ import { a as e, r as i, h as t, H as s, g as a } from "./p-aaed592c.js";
2
2
 
3
- import { g as a } from "./p-0b0ce806.js";
3
+ import { g as r } from "./p-0b0ce806.js";
4
4
 
5
5
  import { L as o } from "./p-74d59062.js";
6
6
 
7
- const n = ':host{--slide-header-block-padding:34px;--slide-footer-block:var(--mer-spacing--md) var(--mer-spacing--4xl);--slide-footer-block-last-slide:var(--mer-spacing--md) 42px;--slide-footer-navigation-hide-transition:var(--mer-timing--fast);display:grid;block-size:100%;inline-size:100%;overflow:auto;padding:var(--mer-spacing--lg);box-sizing:border-box;padding:var(--mer-spacing--xl)}.main{display:grid;place-self:center;inline-size:100%;max-inline-size:1100px;background-color:var(--mer-surface__elevation--01);border-radius:17px;overflow:hidden;border:var(--mer-border__width--sm) solid var(--mer-surface__elevation--01);inset-block-start:0;transition:opacity var(--slide-fade-duration);opacity:0;pointer-events:none}.main--border-glow{animation:borderColorCycle 2s infinite}.main--visible{pointer-events:visible;opacity:1}.slide{display:grid;block-size:100%;grid-template-areas:"header header" "slide-wrapper slide-wrapper" "footer footer";grid-template-rows:max-content 1fr max-content}.slide__header{padding-inline:18px;padding-block:24px 27px;display:flex;flex-direction:row-reverse;grid-area:header}.slide__container{display:contents}.slide__wrapper{display:grid;column-gap:var(--mer-spacing--3xl);grid-template-areas:"header header" "illustration copy" "footer footer";grid-template-rows:max-content 1fr max-content;grid-template-columns:1fr 520px;grid-area:slide-wrapper;transition:var(--slide-fade-duration) opacity;transition:opacity 200ms;padding-inline:48px;opacity:1;z-index:1}.slide__wrapper:not(.active){opacity:0;z-index:0;pointer-events:none}.slide__illustration{position:relative;overflow:hidden;display:grid;grid-area:illustration;place-items:center;inline-size:100%}.slide__illustration-img{object-fit:contain;block-size:100%;inline-size:100%}.slide__copy{grid-area:copy;place-self:center;justify-self:flex-start}.slide__copy-container{display:grid;gap:var(--mer-spacing--md);max-inline-size:524px}.slide__copy-header{display:grid;gap:var(--mer-spacing--md)}.slide__copy-title{font-size:var(--mer-font__size--xl);color:var(--mer-text__on-surface);letter-spacing:0.02em;font-weight:var(--mer-font__weight--semi-bold)}.slide__copy-description{display:grid;gap:var(--mer-spacing--md);font-size:var(--mer-font__size--sm);font-weight:var(--mer-font__weight--light);line-height:var(--mer-line-height--spaced)}.slide__list{display:grid;gap:var(--mer-spacing--md);list-style:none;padding:0;margin:0}.slide__list-item{position:relative;padding-inline-start:24px}.slide__list-item::before{content:"";display:inline-block;inline-size:var(--mer-spacing--sm);block-size:var(--mer-spacing--sm);border:var(--mer-border__width--sm) solid var(--mer-color__tinted-primary--50);border-radius:50%;background-color:var(--mer-color__tinted-primary--10);margin-inline-end:var(--mer-spacing--sm);position:absolute;inset-inline-start:0;inset-block-start:6px}.slide__word{transition:var(--mer-timing--regular) opacity;opacity:0}.slide__word--visible{opacity:1}.slide__footer{grid-area:footer;display:grid;padding-block:var(--slide-footer-block);opacity:1}.slide__footer-last-slide{opacity:0;transition:calc(var(--mer-timing--fast) + 200ms) opacity;pointer-events:none;animation:footerPaddingBlockLastSlide var(--mer-timing--regular) ease-out forwards calc(var(--mer-timing--fast) + 200ms)}.slide__footer-wrapper{display:grid;grid-auto-flow:column;grid-auto-columns:max-content;gap:var(--mer-spacing--md);align-items:center;justify-content:center;transition:var(--mer-timing--regular) opacity;opacity:1}.slide__footer-wrapper-hidden{opacity:0}.slide__dots{display:grid;gap:var(--mer-spacing--2xs);list-style:none;padding:0;margin:0;grid-auto-flow:column;grid-auto-columns:max-content;justify-content:center}.slide__dots-inactive{pointer-events:none}.slide__dot{display:grid;padding:var(--mer-spacing--xs);cursor:pointer}.slide__dot::before{content:"";place-self:center;inline-size:var(--mer-spacing--sm);block-size:var(--mer-spacing--sm);border-radius:calc(var(--mer-spacing--sm) / 2);background-color:var(--mer-color__neutral-gray--500)}.slide__dot:hover::before{background-color:var(--mer-icon__on-primary--hover)}.slide__dot.active{cursor:auto}.slide__dot.active::before{background-color:var(--mer-accent__primary);cursor:auto}.slide__dot-inactive{pointer-events:none}.close-icon{transition:all var(--mer-timing--fast)}.close-icon:hover{filter:brightness(1.5)}.start-button{justify-self:start;margin-block-start:25px}@keyframes ellipseFadeInOut{0%{opacity:0.3}100%{opacity:0.7}}@keyframes ellipseRotate{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}@keyframes polygonRotate{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}@keyframes borderColorCycle{0%{border-color:var(--mer-surface__elevation--01)}50%{border-color:var(--mer-color__primary--400)}100%{border-color:var(--mer-surface__elevation--01)}}@keyframes footerPaddingBlockLastSlide{0%{padding-block:var(--slide-footer-block)}100%{padding-block:var(--slide-footer-block-last-slide)}}.fade-out{animation:fadeOut 0.5s forwards 0.3s}';
7
+ const n = ':host{--slide-header-block-padding:34px;--slide-footer-block:var(--mer-spacing--md) var(--mer-spacing--4xl);--slide-footer-block-last-slide:var(--mer-spacing--md) 42px;--slide-footer-navigation-hide-transition:var(--mer-timing--fast);display:grid;block-size:100%;inline-size:100%;overflow:auto;padding:var(--mer-spacing--lg);box-sizing:border-box;padding:var(--mer-spacing--xl)}.main{display:grid;place-self:center;inline-size:100%;max-inline-size:1100px;background-color:var(--mer-surface__elevation--01);border-radius:17px;overflow:hidden;border:var(--mer-border__width--sm) solid var(--mer-surface__elevation--01);inset-block-start:0;transition:opacity var(--slide-fade-duration);opacity:0;pointer-events:none}.main--border-glow{animation:borderColorCycle 2s infinite}.main--visible{pointer-events:visible;opacity:1}.slide{display:grid;block-size:100%;grid-template-areas:"header header" "slide-wrapper slide-wrapper" "footer footer";grid-template-rows:max-content 1fr max-content}.slide__header{padding-inline:18px;padding-block:24px 27px;display:flex;flex-direction:row-reverse;grid-area:header}.slide__container{display:contents}.slide__wrapper{display:grid;column-gap:var(--mer-spacing--3xl);grid-template-areas:"header header" "illustration copy" "footer footer";grid-template-rows:max-content 1fr max-content;grid-template-columns:1fr 520px;grid-area:slide-wrapper;transition:var(--slide-fade-duration) opacity;transition:opacity 200ms;padding-inline:48px;opacity:1;z-index:1}.slide__wrapper:not(.active){opacity:0;z-index:0;pointer-events:none}.slide__illustration{position:relative;overflow:hidden;display:grid;grid-area:illustration;place-items:center;inline-size:100%}.slide__illustration-img{object-fit:contain;block-size:100%;inline-size:100%}.slide__copy{grid-area:copy;place-self:center;justify-self:flex-start}.slide__copy-container{display:grid;gap:var(--mer-spacing--md);max-inline-size:524px}.slide__copy-header{display:grid;gap:var(--mer-spacing--md)}.slide__copy-title{font-size:var(--mer-font__size--xl);color:var(--mer-text__on-surface);letter-spacing:0.02em;font-weight:var(--mer-font__weight--semi-bold)}.slide__copy-description{display:grid;gap:var(--mer-spacing--md);font-size:var(--mer-font__size--sm);font-weight:var(--mer-font__weight--light);line-height:var(--mer-line-height--spaced)}.slide__list{display:grid;gap:var(--mer-spacing--md);list-style:none;padding:0;margin:0}.slide__list-item-title{font-weight:var(--mer-font__weight--medium)}.slide__word{transition:var(--mer-timing--regular) opacity;opacity:0}.slide__word--visible{opacity:1}.slide__footer{grid-area:footer;display:grid;padding-block:var(--slide-footer-block);opacity:1}.slide__footer-last-slide{opacity:0;transition:calc(var(--mer-timing--fast) + 200ms) opacity;pointer-events:none;animation:footerPaddingBlockLastSlide var(--mer-timing--regular) ease-out forwards calc(var(--mer-timing--fast) + 200ms)}.slide__footer-wrapper{display:grid;grid-auto-flow:column;grid-auto-columns:max-content;gap:var(--mer-spacing--md);align-items:center;justify-content:center;transition:var(--mer-timing--regular) opacity;opacity:1}.slide__footer-wrapper-hidden{opacity:0}.slide__dots{display:grid;gap:var(--mer-spacing--2xs);list-style:none;padding:0;margin:0;grid-auto-flow:column;grid-auto-columns:max-content;justify-content:center}.slide__dots-inactive{pointer-events:none}.slide__dot{display:grid;padding:var(--mer-spacing--xs);cursor:pointer}.slide__dot::before{content:"";place-self:center;inline-size:var(--mer-spacing--sm);block-size:var(--mer-spacing--sm);border-radius:calc(var(--mer-spacing--sm) / 2);background-color:var(--mer-color__neutral-gray--500)}.slide__dot:hover::before{background-color:var(--mer-icon__on-primary--hover)}.slide__dot.active{cursor:auto}.slide__dot.active::before{background-color:var(--mer-accent__primary);cursor:auto}.slide__dot-inactive{pointer-events:none}.close-icon{transition:all var(--mer-timing--fast)}.close-icon:hover{filter:brightness(1.5)}.start-button{justify-self:start;margin-block-start:25px}@keyframes ellipseFadeInOut{0%{opacity:0.3}100%{opacity:0.7}}@keyframes ellipseRotate{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}@keyframes polygonRotate{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}@keyframes borderColorCycle{0%{border-color:var(--mer-surface__elevation--01)}50%{border-color:var(--mer-color__primary--400)}100%{border-color:var(--mer-surface__elevation--01)}}@keyframes footerPaddingBlockLastSlide{0%{padding-block:var(--slide-footer-block)}100%{padding-block:var(--slide-footer-block-last-slide)}}.fade-out{animation:fadeOut 0.5s forwards 0.3s}';
8
8
 
9
9
  var l = undefined && undefined.__classPrivateFieldGet || function(e, i, t, s) {
10
10
  if (t === "a" && !s) throw new TypeError("Private accessor was defined without a getter");
@@ -12,14 +12,14 @@ var l = undefined && undefined.__classPrivateFieldGet || function(e, i, t, s) {
12
12
  return t === "m" ? s : t === "a" ? s.call(e) : s ? s.value : i.get(e);
13
13
  };
14
14
 
15
- var d = undefined && undefined.__classPrivateFieldSet || function(e, i, t, s, r) {
15
+ var d = undefined && undefined.__classPrivateFieldSet || function(e, i, t, s, a) {
16
16
  if (s === "m") throw new TypeError("Private method is not writable");
17
- if (s === "a" && !r) throw new TypeError("Private accessor was defined without a setter");
18
- if (typeof i === "function" ? e !== i || !r : !i.has(e)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
19
- return s === "a" ? r.call(e, t) : r ? r.value = t : i.set(e, t), t;
17
+ if (s === "a" && !a) throw new TypeError("Private accessor was defined without a setter");
18
+ if (typeof i === "function" ? e !== i || !a : !i.has(e)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
19
+ return s === "a" ? a.call(e, t) : a ? a.value = t : i.set(e, t), t;
20
20
  };
21
21
 
22
- var c, p, h, m, f, _, g, u, v, y, w, b, k, x, z, M, W;
22
+ var c, p, h, f, m, _, g, u, v, y, w, b, k, x, z, M, W;
23
23
 
24
24
  const T = "active";
25
25
 
@@ -40,7 +40,7 @@ const S = "slide__word--visible";
40
40
  // icons
41
41
  const A = e(`./gx-ide-assets/welcome-page/images/icon-next.svg`);
42
42
 
43
- const B = a({
43
+ const B = r({
44
44
  category: "system",
45
45
  name: "close",
46
46
  colorType: "on-elevation"
@@ -58,11 +58,11 @@ const I = class {
58
58
  c.set(this, void 0);
59
59
  p.set(this, new Map);
60
60
  h.set(this, []);
61
- m.set(this, []);
61
+ f.set(this, []);
62
62
  // #slidesDescriptionAsChunksAlreadyDisplayed is used to know if the description of a slide
63
63
  // that is set to be displayed as chunks, has already been displayed. Used to not display
64
64
  // as chunks after the first time.
65
- f.set(this, void 0);
65
+ m.set(this, void 0);
66
66
  _.set(this, (() => {
67
67
  this.sliderVisible = false;
68
68
  setTimeout((() => {
@@ -113,8 +113,8 @@ const I = class {
113
113
  }));
114
114
  k.set(this, (() => {
115
115
  // Clear any existing timeout
116
- if (l(this, f, "f")) {
117
- clearTimeout(l(this, f, "f"));
116
+ if (l(this, m, "f")) {
117
+ clearTimeout(l(this, m, "f"));
118
118
  }
119
119
  const e = this.transitionType === "auto" && !this.lastSlideReached && !this.userHasChangedSlide;
120
120
  if (!e) {
@@ -125,7 +125,7 @@ const I = class {
125
125
  const s = l(this, x, "f").call(this, t);
126
126
  // Set a fresh timeout
127
127
  if (s) {
128
- d(this, f, setTimeout((() => {
128
+ d(this, m, setTimeout((() => {
129
129
  l(this, w, "f").call(this);
130
130
  }), s), "f");
131
131
  }
@@ -138,11 +138,11 @@ const I = class {
138
138
  }));
139
139
  z.set(this, (() => {
140
140
  d(this, h, this.slides.map(((e, i) => {
141
- var s, r;
142
- const a = i === this.slides.length - 1;
141
+ var s, a;
142
+ const r = i === this.slides.length - 1;
143
143
  return t("section", {
144
144
  class: "slide__wrapper",
145
- ref: e => l(this, m, "f")[i] = e
145
+ ref: e => l(this, f, "f")[i] = e
146
146
  }, t("div", {
147
147
  class: "slide__illustration",
148
148
  role: "img",
@@ -164,11 +164,13 @@ const I = class {
164
164
  class: "slide__copy-title"
165
165
  }, e.title)), t("div", {
166
166
  class: "slide__copy-description"
167
- }, (s = e.description) === null || s === void 0 ? void 0 : s.map((i => t("p", null, e.descriptionAsChunks ? l(this, M, "f").call(this, i) : i))), ((r = e.listItems) === null || r === void 0 ? void 0 : r.length) && t("ul", {
167
+ }, (s = e.description) === null || s === void 0 ? void 0 : s.map((i => t("p", null, e.descriptionAsChunks ? l(this, M, "f").call(this, i) : i))), ((a = e.listItems) === null || a === void 0 ? void 0 : a.length) && t("ul", {
168
168
  class: "slide__list"
169
169
  }, e.listItems.map((e => t("li", {
170
170
  class: "slide__list-item"
171
- }, e))))), a && t("button", {
171
+ }, t("strong", {
172
+ class: "slide__list-item-title"
173
+ }, e.title), " ", e.description))))), r && t("button", {
172
174
  class: "button-primary start-button",
173
175
  onClick: l(this, _, "f")
174
176
  }, l(this, c, "f").startButtonCaption))));
@@ -183,24 +185,24 @@ const I = class {
183
185
  }
184
186
  this.slideTransitioning = true;
185
187
  // unset current active slide
186
- const i = l(this, m, "f")[this.activeSlideIndex];
188
+ const i = l(this, f, "f")[this.activeSlideIndex];
187
189
  i.classList.remove(T);
188
- const t = l(this, m, "f")[e];
190
+ const t = l(this, f, "f")[e];
189
191
  const s = this.slides[e].descriptionAsChunks;
190
- const r = l(this, p, "f").get(e);
191
- let a;
192
+ const a = l(this, p, "f").get(e);
193
+ let r;
192
194
  let o;
193
195
  let n = 0;
194
196
  if (s) {
195
197
  o = t.querySelectorAll(P);
196
- a = o.length;
197
- n = a * R;
198
+ r = o.length;
199
+ n = r * R;
198
200
  }
199
201
  this.lastSlideReached = e === this.slides.length - 1;
200
202
  // set new slide as active after fade out
201
203
  setTimeout((() => {
202
204
  t.classList.add(T);
203
- if (s && !r) {
205
+ if (s && !a) {
204
206
  l(this, p, "f").set(e, true);
205
207
  l(this, u, "f").call(this, o);
206
208
  setTimeout((() => {
@@ -232,7 +234,7 @@ const I = class {
232
234
  l(this, z, "f").call(this);
233
235
  }
234
236
  componentDidLoad() {
235
- l(this, m, "f")[this.activeSlideIndex].classList.add(T);
237
+ l(this, f, "f")[this.activeSlideIndex].classList.add(T);
236
238
  this.sliderVisible = true;
237
239
  l(this, g, "f").call(this);
238
240
  }
@@ -289,11 +291,11 @@ const I = class {
289
291
  return [ "gx-ide-assets/welcome-page" ];
290
292
  }
291
293
  get el() {
292
- return r(this);
294
+ return a(this);
293
295
  }
294
296
  };
295
297
 
296
- c = new WeakMap, p = new WeakMap, h = new WeakMap, m = new WeakMap, f = new WeakMap,
298
+ c = new WeakMap, p = new WeakMap, h = new WeakMap, f = new WeakMap, m = new WeakMap,
297
299
  _ = new WeakMap, g = new WeakMap, u = new WeakMap, v = new WeakMap, y = new WeakMap,
298
300
  w = new WeakMap, b = new WeakMap, k = new WeakMap, x = new WeakMap, z = new WeakMap,
299
301
  M = new WeakMap, W = new WeakMap;
@@ -301,4 +303,4 @@ M = new WeakMap, W = new WeakMap;
301
303
  I.style = n;
302
304
 
303
305
  export { I as gx_ide_welcome_page };
304
- //# sourceMappingURL=p-7a2d3f1c.entry.js.map
306
+ //# sourceMappingURL=p-10beeb25.entry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["welcomePageCss","ACTIVE_SLIDE_SELECTOR","ARROW_LEFT_KEY","ARROW_RIGHT_KEY","ESCAPE_KEY","SLIDE_FADE_DURATION","SLIDE_WORD_SELECTOR","SLIDE_WORD_SELECTOR_TIMEOUT","SLIDE_WORD_SELECTOR_VISIBLE","ICON_NEXT","getAssetPath","CLOSE_ICON","getIconPath","category","name","colorType","CSS_BUNDLES","GxIdeWelcomePage","_GxIdeWelcomePage_componentLocale","set","this","_GxIdeWelcomePage_slidesDescriptionAsChunksAlreadyDisplayed","Map","_GxIdeWelcomePage_slidesElements","_GxIdeWelcomePage_slidesElementsRef","_GxIdeWelcomePage_slideTimeOutId","_GxIdeWelcomePage_closeSlider","sliderVisible","setTimeout","el","remove","closeCallback","document","removeEventListener","__classPrivateFieldGet","_GxIdeWelcomePage_keyboardEventHandler","_GxIdeWelcomePage_initiateSlidesTransition","_GxIdeWelcomePage_slideTimeOut","call","addEventListener","_GxIdeWelcomePage_displayWords","wordsNodeList","forEach","word","index","classList","add","_GxIdeWelcomePage_dotClickedHandler","event","userHasChangedSlide","itemClicked","currentTarget","parseInt","getAttribute","_GxIdeWelcomePage_updateActiveSlide","goToPrevSlide","key","slideTransitioning","lastSlideReached","activeSlideIndex","goToNextSlide","closeSlider","_GxIdeWelcomePage_nextSlideHandler","_GxIdeWelcomePage_prevSlideHandler","newIndex","clearTimeout","autoChangeSlide","transitionType","mergedDescription","slides","description","join","words","split","length","timeBeforeNextSlide","_GxIdeWelcomePage_secondsToRead","__classPrivateFieldSet","wordsCount","wordsPerMinute","minutes","milliseconds","_GxIdeWelcomePage_renderSlides","map","slide","isLastSlide","h","class","ref","role","copyright","illustrationAriaLabel","src","illustration","url","alt","title","_a","paragraph","descriptionAsChunks","_GxIdeWelcomePage_splitWords","_b","listItems","item","onClick","startButtonCaption","newSlideIndex","activeSlide","nextSlideReference","displayDescriptionAsChunks","descriptionAsChunksDisplayedAlready","get","slideTimeOut","querySelectorAll","componentWillLoad","Locale","getComponentStrings","componentDidLoad","render","Host","model","main","style","slide__footer","_","slide__dot"],"sources":["src/components/welcome-page/welcome-page.scss?tag=gx-ide-welcome-page&encapsulation=shadow","src/components/welcome-page/welcome-page.tsx"],"sourcesContent":[":host {\n --slide-header-block-padding: 34px;\n --slide-footer-block: var(--mer-spacing--md) var(--mer-spacing--4xl);\n --slide-footer-block-last-slide: var(--mer-spacing--md) 42px;\n --slide-footer-navigation-hide-transition: var(--mer-timing--fast);\n display: grid;\n block-size: 100%;\n inline-size: 100%;\n overflow: auto;\n padding: var(--mer-spacing--lg);\n box-sizing: border-box;\n padding: var(--mer-spacing--xl);\n}\n\n.main {\n display: grid;\n place-self: center;\n inline-size: 100%;\n max-inline-size: 1100px;\n background-color: var(--mer-surface__elevation--01);\n border-radius: 17px;\n overflow: hidden;\n border: var(--mer-border__width--sm) solid var(--mer-surface__elevation--01);\n inset-block-start: 0;\n transition: opacity var(--slide-fade-duration);\n opacity: 0;\n pointer-events: none;\n\n &--border-glow {\n animation: borderColorCycle 2s infinite;\n }\n &--visible {\n pointer-events: visible;\n opacity: 1;\n }\n}\n\n// - - - - - - - - - - - - -\n// Slide\n// - - - - - - - - - - - - -\n\n.slide {\n display: grid;\n block-size: 100%;\n grid-template-areas:\n \"header header\"\n \"slide-wrapper slide-wrapper\"\n \"footer footer\";\n grid-template-rows: max-content 1fr max-content;\n\n // - - - - - Header\n\n &__header {\n padding-inline: 18px;\n padding-block: 24px 27px;\n display: flex;\n flex-direction: row-reverse;\n grid-area: header;\n }\n\n // - - - - - Container\n\n &__container {\n display: contents;\n }\n\n &__wrapper {\n display: grid;\n column-gap: var(--mer-spacing--3xl);\n grid-template-areas:\n \"header header\"\n \"illustration copy\"\n \"footer footer\";\n grid-template-rows: max-content 1fr max-content;\n // grid-template-columns: 411px 1fr;\n grid-template-columns: 1fr 520px;\n grid-area: slide-wrapper;\n transition: var(--slide-fade-duration) opacity;\n transition: opacity 200ms;\n padding-inline: 48px;\n opacity: 1;\n z-index: 1;\n }\n &__wrapper:not(.active) {\n opacity: 0;\n z-index: 0;\n pointer-events: none;\n }\n\n &__illustration {\n position: relative;\n overflow: hidden;\n display: grid;\n grid-area: illustration;\n place-items: center;\n inline-size: 100%;\n\n &-img {\n object-fit: contain;\n block-size: 100%;\n inline-size: 100%;\n }\n }\n\n &__copy {\n grid-area: copy;\n place-self: center;\n justify-self: flex-start;\n }\n\n &__copy-container {\n display: grid;\n gap: var(--mer-spacing--md);\n max-inline-size: 524px;\n }\n\n &__copy-header {\n display: grid;\n gap: var(--mer-spacing--md);\n }\n\n &__copy-title {\n font-size: var(--mer-font__size--xl);\n color: var(--mer-text__on-surface);\n letter-spacing: 0.02em;\n font-weight: var(--mer-font__weight--semi-bold);\n }\n\n &__copy-description {\n display: grid;\n gap: var(--mer-spacing--md);\n font-size: var(--mer-font__size--sm);\n font-weight: var(--mer-font__weight--light);\n line-height: var(--mer-line-height--spaced);\n }\n\n &__list {\n display: grid;\n gap: var(--mer-spacing--md);\n list-style: none;\n padding: 0;\n margin: 0;\n\n &-item {\n &-title {\n font-weight: var(--mer-font__weight--medium);\n }\n }\n }\n\n // words (if 'showTextInChunks' is true)\n &__word {\n transition: var(--mer-timing--regular) opacity;\n opacity: 0;\n\n &--visible {\n opacity: 1;\n }\n }\n\n // - - - - - Footer\n\n &__footer {\n $hideDotsDuration: calc(var(--mer-timing--fast) + 200ms);\n grid-area: footer;\n display: grid;\n padding-block: var(--slide-footer-block);\n opacity: 1;\n\n &-last-slide {\n opacity: 0;\n transition: $hideDotsDuration opacity;\n pointer-events: none;\n animation: footerPaddingBlockLastSlide var(--mer-timing--regular) ease-out\n forwards $hideDotsDuration;\n }\n }\n\n &__footer-wrapper {\n display: grid;\n grid-auto-flow: column;\n grid-auto-columns: max-content;\n gap: var(--mer-spacing--md);\n align-items: center;\n justify-content: center;\n transition: var(--mer-timing--regular) opacity;\n opacity: 1;\n\n &-hidden {\n opacity: 0;\n }\n }\n &__dots {\n display: grid;\n gap: var(--mer-spacing--2xs);\n list-style: none;\n padding: 0;\n margin: 0;\n grid-auto-flow: column;\n grid-auto-columns: max-content;\n justify-content: center;\n\n &-inactive {\n pointer-events: none;\n }\n }\n &__dot {\n display: grid;\n padding: var(--mer-spacing--xs);\n cursor: pointer;\n\n &::before {\n content: \"\";\n place-self: center;\n inline-size: var(--mer-spacing--sm);\n block-size: var(--mer-spacing--sm);\n border-radius: calc(var(--mer-spacing--sm) / 2);\n background-color: var(--mer-color__neutral-gray--500);\n }\n &:hover::before {\n background-color: var(--mer-icon__on-primary--hover);\n }\n\n &.active {\n cursor: auto;\n &::before {\n background-color: var(--mer-accent__primary);\n cursor: auto;\n }\n }\n\n &-inactive {\n pointer-events: none;\n }\n }\n}\n\n.close-icon {\n transition: all var(--mer-timing--fast);\n &:hover {\n filter: brightness(1.5);\n }\n}\n\n.start-button {\n justify-self: start;\n margin-block-start: 25px;\n}\n\n// - - - - - - - - - - - - - -\n// Animations\n// - - - - - - - - - - - - - -\n\n@keyframes ellipseFadeInOut {\n 0% {\n opacity: 0.3;\n }\n 100% {\n opacity: 0.7;\n }\n}\n@keyframes ellipseRotate {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n}\n@keyframes polygonRotate {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n}\n\n@keyframes borderColorCycle {\n 0% {\n border-color: var(--mer-surface__elevation--01);\n }\n 50% {\n border-color: var(--mer-color__primary--400);\n }\n 100% {\n border-color: var(--mer-surface__elevation--01);\n }\n}\n\n@keyframes footerPaddingBlockLastSlide {\n 0% {\n padding-block: var(--slide-footer-block);\n }\n 100% {\n padding-block: var(--slide-footer-block-last-slide);\n }\n}\n\n.fade-out {\n animation: fadeOut 0.5s forwards 0.3s;\n}\n","// Stencil\nimport {\n Component,\n Host,\n h,\n Prop,\n Element,\n State,\n getAssetPath\n} from \"@stencil/core\";\n// Other Libraries\nimport { MercuryBundles, getIconPath } from \"@genexus/mercury\";\n\n// Custom Imports\nimport { Locale } from \"../../common/locale\";\n\nconst ACTIVE_SLIDE_SELECTOR = \"active\";\nconst ARROW_LEFT_KEY = \"ArrowLeft\";\nconst ARROW_RIGHT_KEY = \"ArrowRight\";\nconst ESCAPE_KEY = \"Escape\";\nconst SLIDE_FADE_DURATION = 300;\nconst SLIDE_WORD_SELECTOR = \".slide__word\";\nconst SLIDE_WORD_SELECTOR_TIMEOUT = 70;\nconst SLIDE_WORD_SELECTOR_VISIBLE = \"slide__word--visible\";\n\n// icons\nconst ICON_NEXT = getAssetPath(\n `./gx-ide-assets/welcome-page/images/icon-next.svg`\n);\nconst CLOSE_ICON = getIconPath({\n category: \"system\",\n name: \"close\",\n colorType: \"on-elevation\"\n});\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"utils/typography\",\n \"components/icon\",\n \"components/button\"\n];\n\n@Component({\n tag: \"gx-ide-welcome-page\",\n styleUrl: \"welcome-page.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/welcome-page\"]\n})\nexport class GxIdeWelcomePage {\n /**\n * The component hard-coded strings translations.\n */\n // eslint-disable-next-line @stencil-community/own-props-must-be-private\n #componentLocale: any;\n\n #slidesDescriptionAsChunksAlreadyDisplayed: Map<number, boolean> = new Map();\n #slidesElements: HTMLElement[] = [];\n #slidesElementsRef: HTMLElement[] = [];\n // #slidesDescriptionAsChunksAlreadyDisplayed is used to know if the description of a slide\n // that is set to be displayed as chunks, has already been displayed. Used to not display\n // as chunks after the first time.\n #slideTimeOutId: NodeJS.Timeout;\n\n @Element() el: HTMLGxIdeWelcomePageElement;\n\n /**\n * The current active slide index from 'slides' Prop. It does not considers the very first slide \"Copyright\".\n */\n @State() activeSlideIndex: number = 0;\n\n /**\n * When true the slider will be visible. Used to display and hide the slide with a smooth transition.\n */\n @State() displaySlider: boolean = false;\n\n /**\n * True if the very first slide is visible (The copyright slide)\n */\n @State() copyrightsVisible: boolean = true;\n\n /**\n * True if the user has reached the last slide. Used to hide/disable the navigation.\n */\n @State() lastSlideReached: boolean = false;\n\n /**\n * When true the slider will be visible. Used to display and hide the slider with a smooth transition.\n */\n @State() sliderVisible: boolean = false;\n\n /**\n * True if a slide is transitioning, false otherwise. Used to disable the navigation arrows while transitioning.\n */\n @State() slideTransitioning: boolean = false;\n\n /**\n * True if the user has changed slides by clicking on the navigation dots, or by using the keyboard arrows. This is used to know evaluate the slide transition setTimeOut. If the user has navigated, automatic slide transition should be turned off.\n */\n @State() userHasChangedSlide: boolean = false;\n\n /**\n * The transition type between the slides. \"static\" requires the user to navigate by clicking the navigation dots. \"auto\" will transition automatically after a calculated amount of time.\n */\n @Prop() readonly transitionType: TransitionType = \"auto\";\n\n /**\n * The estimated amount of words per minute that the user requires to read a slide. This value is used to return the time each slide is freezed before transitioning to the next one. Only evaluated when transitionType is set to \"auto\".\n */\n @Prop() readonly wordsPerMinute: number = 250;\n\n /**\n * Callback invoked when the user closes the slider by pressing the close button.\n */\n @Prop() readonly closeCallback!: CloseCallback;\n\n /**\n * An array of slides, with the information that each slide requires. This slides appear after the first slide (Copyrights) that is defined inside the component.\n */\n @Prop() readonly slides: SlideInfo[] = [];\n\n async componentWillLoad() {\n this.#componentLocale = await Locale.getComponentStrings(this.el);\n this.#renderSlides();\n }\n\n componentDidLoad() {\n this.#slidesElementsRef[this.activeSlideIndex].classList.add(\n ACTIVE_SLIDE_SELECTOR\n );\n this.sliderVisible = true;\n this.#initiateSlidesTransition();\n }\n\n #closeSlider = () => {\n this.sliderVisible = false;\n setTimeout(() => {\n // wait until the slide disappears, then remove.\n this.el.remove();\n this.closeCallback();\n document.removeEventListener(\"keydown\", this.#keyboardEventHandler);\n }, SLIDE_FADE_DURATION);\n };\n\n #initiateSlidesTransition = () => {\n this.#slideTimeOut();\n // listen to keydown events to navigate the slides with the arrows\n document.addEventListener(\"keydown\", this.#keyboardEventHandler);\n };\n\n #displayWords = (wordsNodeList: NodeListOf<HTMLElement>) => {\n wordsNodeList.forEach((word, index) => {\n setTimeout(() => {\n word.classList.add(SLIDE_WORD_SELECTOR_VISIBLE);\n }, index * SLIDE_WORD_SELECTOR_TIMEOUT);\n });\n };\n\n #dotClickedHandler = (event: MouseEvent) => {\n this.userHasChangedSlide = true;\n const itemClicked = event.currentTarget as HTMLElement;\n const index = parseInt(itemClicked.getAttribute(\"data-index\"), 10);\n this.#updateActiveSlide(index);\n };\n\n #keyboardEventHandler = (event: KeyboardEvent) => {\n this.userHasChangedSlide = true;\n const goToPrevSlide =\n event.key === ARROW_LEFT_KEY &&\n !this.slideTransitioning &&\n !this.lastSlideReached &&\n this.activeSlideIndex !== 0;\n\n const goToNextSlide =\n event.key === ARROW_RIGHT_KEY &&\n !this.slideTransitioning &&\n !this.lastSlideReached;\n\n const closeSlider =\n event.key === ESCAPE_KEY ||\n (event.key === ARROW_RIGHT_KEY &&\n !this.slideTransitioning &&\n this.lastSlideReached);\n\n if (goToNextSlide) {\n this.#nextSlideHandler();\n } else if (goToPrevSlide) {\n this.#prevSlideHandler();\n } else if (closeSlider) {\n this.#closeSlider();\n }\n };\n\n #nextSlideHandler = () => {\n const newIndex = this.activeSlideIndex + 1;\n this.#updateActiveSlide(newIndex);\n };\n\n #prevSlideHandler = () => {\n const newIndex = this.activeSlideIndex - 1;\n this.#updateActiveSlide(newIndex);\n };\n\n #slideTimeOut = () => {\n // Clear any existing timeout\n if (this.#slideTimeOutId) {\n clearTimeout(this.#slideTimeOutId);\n }\n\n const autoChangeSlide =\n this.transitionType === \"auto\" &&\n !this.lastSlideReached &&\n !this.userHasChangedSlide;\n\n if (!autoChangeSlide) {\n return;\n }\n\n const mergedDescription =\n this.slides[this.activeSlideIndex].description.join(\"\");\n const words = mergedDescription.split(\" \").length;\n const timeBeforeNextSlide: number = this.#secondsToRead(words);\n\n // Set a fresh timeout\n if (timeBeforeNextSlide) {\n this.#slideTimeOutId = setTimeout(() => {\n this.#nextSlideHandler();\n }, timeBeforeNextSlide);\n }\n };\n\n #secondsToRead = (\n wordsCount: number,\n wordsPerMinute = this.wordsPerMinute\n ): number => {\n const minutes = wordsCount / wordsPerMinute;\n const milliseconds = minutes * 60000; // Convert minutes to milliseconds\n return milliseconds;\n };\n\n #renderSlides = () => {\n this.#slidesElements = this.slides.map((slide, index) => {\n const isLastSlide = index === this.slides.length - 1;\n return (\n <section\n class=\"slide__wrapper\"\n ref={(el: HTMLElement) =>\n (this.#slidesElementsRef[index] = el as HTMLElement)\n }\n >\n <div\n class=\"slide__illustration\"\n role=\"img\"\n aria-label={this.#componentLocale.copyright.illustrationAriaLabel}\n >\n <img\n class=\"slide__illustration-img\"\n src={slide.illustration.url}\n alt={slide.illustration.alt}\n />\n </div>\n <section class=\"slide__copy\">\n <div class=\"slide__copy-container\">\n <header class=\"slide__copy-header\">\n <img src={ICON_NEXT} alt=\"GeneXus Next isologotype\" />\n <h2 class=\"slide__copy-title\">{slide.title}</h2>\n </header>\n <div class=\"slide__copy-description\">\n {slide.description?.map(paragraph => {\n return (\n <p>\n {slide.descriptionAsChunks\n ? this.#splitWords(paragraph)\n : paragraph}\n </p>\n );\n })}\n {slide.listItems?.length && (\n <ul class=\"slide__list\">\n {slide.listItems.map(item => {\n return (\n <li class=\"slide__list-item\">\n <strong class=\"slide__list-item-title\">\n {item.title}\n </strong>{\" \"}\n {item.description}\n </li>\n );\n })}\n </ul>\n )}\n </div>\n {isLastSlide && (\n <button\n class=\"button-primary start-button\"\n onClick={this.#closeSlider}\n >\n {this.#componentLocale.startButtonCaption}\n </button>\n )}\n </div>\n </section>\n </section>\n );\n });\n };\n\n #splitWords = (paragraph: string): HTMLSpanElement[] => {\n return paragraph.split(\" \").map(word => {\n // keep the space after {word} !\n return <span class=\"slide__word\">{word} </span>;\n });\n };\n\n #updateActiveSlide = (newSlideIndex: number) => {\n if (this.lastSlideReached) {\n return;\n }\n this.slideTransitioning = true;\n\n // unset current active slide\n const activeSlide = this.#slidesElementsRef[this.activeSlideIndex];\n activeSlide.classList.remove(ACTIVE_SLIDE_SELECTOR);\n\n const nextSlideReference = this.#slidesElementsRef[newSlideIndex];\n const displayDescriptionAsChunks =\n this.slides[newSlideIndex].descriptionAsChunks;\n const descriptionAsChunksDisplayedAlready =\n this.#slidesDescriptionAsChunksAlreadyDisplayed.get(newSlideIndex);\n let wordsCount;\n let wordsNodeList: NodeListOf<HTMLElement>;\n let slideTimeOut = 0;\n if (displayDescriptionAsChunks) {\n wordsNodeList = nextSlideReference.querySelectorAll(SLIDE_WORD_SELECTOR);\n wordsCount = wordsNodeList.length;\n slideTimeOut = wordsCount * SLIDE_WORD_SELECTOR_TIMEOUT;\n }\n\n this.lastSlideReached = newSlideIndex === this.slides.length - 1;\n\n // set new slide as active after fade out\n setTimeout(() => {\n nextSlideReference.classList.add(ACTIVE_SLIDE_SELECTOR);\n\n if (displayDescriptionAsChunks && !descriptionAsChunksDisplayedAlready) {\n this.#slidesDescriptionAsChunksAlreadyDisplayed.set(\n newSlideIndex,\n true\n );\n this.#displayWords(wordsNodeList);\n setTimeout(() => {\n this.slideTransitioning = false;\n }, slideTimeOut);\n } else {\n this.slideTransitioning = false;\n }\n }, SLIDE_FADE_DURATION);\n\n // update active slide index\n this.activeSlideIndex = newSlideIndex;\n this.#slideTimeOut(); // this has to be after this.#updateActiveSlide.\n };\n\n render() {\n return (\n <Host>\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <div\n class={{\n \"main\": true,\n \"main--visible\": this.sliderVisible,\n \"main--border-glow\": this.lastSlideReached\n }}\n style={{ \"--slide-fade-duration\": `${SLIDE_FADE_DURATION}ms` }}\n >\n <section class=\"slide\">\n <header class=\"slide__header\">\n <button\n class=\"button-tertiary button-icon-only close-icon\"\n aria-label=\"close presentation\"\n onClick={this.#closeSlider}\n >\n <ch-image class=\"icon-md\" src={CLOSE_ICON}></ch-image>\n </button>\n </header>\n <div class=\"slide__container\">{this.#slidesElements}</div>\n <footer\n // slide common footer\n class={{\n \"slide__footer\": true,\n \"slide__footer-last-slide\": this.lastSlideReached\n }}\n >\n <div\n class={{\n \"slide__footer-wrapper\": true,\n \"slide__footer-wrapper-hidden\": this.lastSlideReached\n }}\n >\n <ul class=\"slide__dots\" aria-label=\"Slide indicators\">\n {this.slides.map((_, index) => {\n return (\n <li\n class={{\n \"slide__dot\": true,\n \"slide__dot-inactive\": this.slideTransitioning,\n [ACTIVE_SLIDE_SELECTOR]:\n index === this.activeSlideIndex\n }}\n data-index={index}\n onClick={\n !this.slideTransitioning && this.#dotClickedHandler\n }\n ></li>\n );\n })}\n </ul>\n </div>\n </footer>\n </section>\n </div>\n </Host>\n );\n }\n}\n\nexport type SlideInfo = {\n illustration: {\n url: string;\n alt: string;\n };\n title: string;\n description?: string[];\n descriptionAsChunks?: boolean;\n listItems?: Array<{\n title: string;\n description: string;\n }>;\n};\n\nexport type CloseCallback = () => Promise<void>;\nexport type TransitionType = \"static\" | \"auto\";\n"],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ // formSubmitValidation will be deprecated. use "validateControls" instead.
2
+ // TODO: Improve the way we mark components with error. We must not use error classes.
3
+ const o = {
4
+ "ch-checkbox": "checkbox-error",
5
+ "ch-combo-box-render": "combo-box-error",
6
+ "ch-edit": "input-error"
7
+ };
8
+
9
+ const toggleErrorClass = (c, e) => {
10
+ const r = e.tagName.toLowerCase();
11
+ const t = o[r];
12
+ if (c) {
13
+ e.classList.add(t);
14
+ } else {
15
+ e.classList.remove(t);
16
+ }
17
+ };
18
+
19
+ const validateControls = (o, c) => {
20
+ const e = new Map(c);
21
+ o.fieldErrors.forEach((o => {
22
+ const c = o.key;
23
+ const r = o.hasError;
24
+ const t = e.get(c);
25
+ if (t === null || t === void 0 ? void 0 : t.reference) {
26
+ // toggle class to add or remove error style
27
+ toggleErrorClass(r, t.reference);
28
+ e.set(c, Object.assign(Object.assign({}, t), {
29
+ hasError: r,
30
+ message: o.message
31
+ }));
32
+ }
33
+ }));
34
+ // return validatableControls updated.
35
+ return e;
36
+ };
37
+
38
+ export { validateControls as v };
39
+ //# sourceMappingURL=p-289c3290.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["formElementsErrorClassesDictionary","toggleErrorClass","hasError","element","elementTagName","tagName","toLowerCase","errorClass","classList","add","remove","validateControls","formSubmitResult","validatableControls","validatableControlsUpdated","Map","fieldErrors","forEach","fieldResult","fieldKey","key","fieldHasError","controlMapRecord","get","reference","set","Object","assign","message"],"sources":["src/common/form-validation.ts"],"sourcesContent":["import { FormSubmitResult, ConnectionResultData } from \"../common/types\";\nimport { FormComponent } from \"@genexus/gemini/dist/types/common/interfaces\";\n\n// formSubmitValidation will be deprecated. use \"validateControls\" instead.\nexport const formSubmitValidation = (\n result: FormSubmitResult | ConnectionResultData,\n ref: any\n) => {\n result.fieldErrors?.forEach(element => {\n const key = element.key;\n const message = element.message;\n const hasError = element.hasError;\n\n const reference: FormComponent = ref[`${key}El`];\n if (reference && hasError && message.trim()) {\n reference.validationStatus = \"error\";\n reference.validationMessage = message;\n } else if (reference && !hasError) {\n reference.validationStatus = \"indeterminate\";\n reference.validationMessage = null;\n }\n });\n};\n\n// TODO: Improve the way we mark components with error. We must not use error classes.\nconst formElementsErrorClassesDictionary = {\n \"ch-checkbox\": \"checkbox-error\",\n \"ch-combo-box-render\": \"combo-box-error\",\n \"ch-edit\": \"input-error\"\n} as const;\n\nconst toggleErrorClass = (hasError: boolean, element: HTMLElement) => {\n const elementTagName = element.tagName.toLowerCase();\n const errorClass =\n formElementsErrorClassesDictionary[\n elementTagName as keyof typeof formElementsErrorClassesDictionary\n ];\n if (hasError) {\n element.classList.add(errorClass);\n } else {\n element.classList.remove(errorClass);\n }\n};\n\nexport const validateControls = (\n formSubmitResult: FormSubmitResult,\n validatableControls: Map<string, ControlValidation>\n): Map<string, ControlValidation> => {\n const validatableControlsUpdated = new Map(validatableControls);\n formSubmitResult.fieldErrors.forEach(fieldResult => {\n const fieldKey = fieldResult.key;\n const fieldHasError = fieldResult.hasError;\n const controlMapRecord = validatableControlsUpdated.get(fieldKey);\n if (controlMapRecord?.reference) {\n // toggle class to add or remove error style\n toggleErrorClass(fieldHasError, controlMapRecord.reference);\n validatableControlsUpdated.set(fieldKey, {\n ...controlMapRecord,\n hasError: fieldHasError,\n message: fieldResult.message\n });\n }\n });\n // return validatableControls updated.\n return validatableControlsUpdated;\n};\n\nexport type ControlValidation = {\n reference: HTMLElement;\n hasError: boolean;\n message: string;\n};\n"],"mappings":";;AAyBA,MAAMA,IAAqC;EACzC,eAAe;EACf,uBAAuB;EACvB,WAAW;;;AAGb,MAAMC,mBAAmB,CAACC,GAAmBC;EAC3C,MAAMC,IAAiBD,EAAQE,QAAQC;EACvC,MAAMC,IACJP,EACEI;EAEJ,IAAIF,GAAU;IACZC,EAAQK,UAAUC,IAAIF;SACjB;IACLJ,EAAQK,UAAUE,OAAOH;;;;MAIhBI,mBAAmB,CAC9BC,GACAC;EAEA,MAAMC,IAA6B,IAAIC,IAAIF;EAC3CD,EAAiBI,YAAYC,SAAQC;IACnC,MAAMC,IAAWD,EAAYE;IAC7B,MAAMC,IAAgBH,EAAYhB;IAClC,MAAMoB,IAAmBR,EAA2BS,IAAIJ;IACxD,IAAIG,MAAgB,QAAhBA,WAAgB,aAAhBA,EAAkBE,WAAW;;MAE/BvB,iBAAiBoB,GAAeC,EAAiBE;MACjDV,EAA2BW,IAAIN,GAAQO,OAAAC,OAAAD,OAAAC,OAAA,IAClCL,IAAgB;QACnBpB,UAAUmB;QACVO,SAASV,EAAYU;;;;;IAK3B,OAAOd;AAA0B"}
@@ -0,0 +1,305 @@
1
+ import { r as t, a as e, h as s, H as i, g as a } from "./p-aaed592c.js";
2
+
3
+ import { g as n } from "./p-0b0ce806.js";
4
+
5
+ import { c as o } from "./p-78b90603.js";
6
+
7
+ import { v as r } from "./p-289c3290.js";
8
+
9
+ import { L as l } from "./p-74d59062.js";
10
+
11
+ const mapKbsModelToActionListModel = t => {
12
+ const e = [];
13
+ t.forEach((t => {
14
+ e.push({
15
+ id: t.id,
16
+ type: "actionable",
17
+ caption: t.name
18
+ });
19
+ }));
20
+ return e;
21
+ };
22
+
23
+ const h = ":host{display:grid;block-size:100%;grid-template-rows:max-content 1fr max-content}.section{display:contents}header{display:grid;grid-template-rows:max-content;grid-template-columns:1fr 1fr max-content}.button-change{align-self:center;justify-self:end}.main{display:grid;grid-template-columns:1fr;grid-template-rows:max-content 1fr max-content max-content}.search-kbs{inline-size:50%}.versions-container{grid-auto-rows:max-content}.versions-container__input{display:grid;grid-template-columns:1fr max-content;gap:var(--mer-spacing--xs)}";
24
+
25
+ var c = undefined && undefined.__classPrivateFieldSet || function(t, e, s, i, a) {
26
+ if (i === "m") throw new TypeError("Private method is not writable");
27
+ if (i === "a" && !a) throw new TypeError("Private accessor was defined without a setter");
28
+ if (typeof e === "function" ? t !== e || !a : !e.has(t)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
29
+ return i === "a" ? a.call(t, s) : a ? a.value = s : e.set(t, s), s;
30
+ };
31
+
32
+ var d = undefined && undefined.__classPrivateFieldGet || function(t, e, s, i) {
33
+ if (s === "a" && !i) throw new TypeError("Private accessor was defined without a getter");
34
+ if (typeof e === "function" ? t !== e || !i : !e.has(t)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
35
+ return s === "m" ? i : s === "a" ? i.call(t) : i ? i.value : e.get(t);
36
+ };
37
+
38
+ var f, p, u, m, b, w, v, g, k, y, M, W, x, T, _, j, C, E, P, S, z, A, I, L;
39
+
40
+ const N = [ "resets/box-sizing", "utils/form--full", "utils/layout", "utils/typography", "utils/spacing", "components/list-box", "components/tooltip", "chameleon/scrollbar" ];
41
+
42
+ const K = class {
43
+ constructor(i) {
44
+ t(this, i);
45
+ f.set(this, n({
46
+ category: "system",
47
+ name: "search",
48
+ colorType: "on-surface"
49
+ }));
50
+ p.set(this, n({
51
+ category: "gemini-tools",
52
+ name: "show-more-horizontal",
53
+ colorType: "on-elevation"
54
+ }));
55
+ u.set(this, [ {
56
+ value: "Trunk",
57
+ caption: "Trunk Version"
58
+ }, {
59
+ value: "All",
60
+ caption: "All Versions"
61
+ } ]);
62
+ m.set(this, void 0);
63
+ b.set(this, []);
64
+ w.set(this, []);
65
+ v.set(this, e(`./gx-ide-assets/create-kb-from-server/shortcuts.json`));
66
+ g.set(this, void 0);
67
+ k.set(this, false);
68
+ y.set(this, void 0);
69
+ M.set(this, void 0);
70
+ W.set(this, void 0);
71
+ x.set(this, (() => {
72
+ this.cancelCallback();
73
+ }));
74
+ T.set(this, (async () => {
75
+ this.changeConnectionCallback({
76
+ authenticationType: this.connectionData.authenticationType,
77
+ serverUrl: this.connectionData.serverUrl,
78
+ userName: this.connectionData.userName,
79
+ userPassword: this.connectionData.userPassword
80
+ });
81
+ }));
82
+ _.set(this, (async () => {
83
+ if (this.versionSelectedType !== "Select") {
84
+ c(this, w, [], "f");
85
+ }
86
+ this.createKBCallback({
87
+ selectedKB: d(this, g, "f"),
88
+ versionSelected: this.versionSelectedType,
89
+ localKBName: this.localKbNameInputValue,
90
+ versionList: d(this, w, "f")
91
+ }).then((t => {
92
+ this.validatableControls = r(t, this.validatableControls);
93
+ }));
94
+ }));
95
+ // TODO: evaluate if this should be a global helper function.
96
+ // It is used on other dialogs as well.
97
+ j.set(this, (t => {
98
+ var e, i, a;
99
+ return ((i = (e = this.validatableControls) === null || e === void 0 ? void 0 : e.get(t === null || t === void 0 ? void 0 : t.id)) === null || i === void 0 ? void 0 : i.hasError) && ((a = this.validatableControls.get(t.id)) === null || a === void 0 ? void 0 : a.message) && s("ch-tooltip", {
100
+ class: "tooltip",
101
+ actionElement: t,
102
+ blockAlign: o.tooltipSettings.blockAlign,
103
+ inlineAlign: o.tooltipSettings.inlineAlign,
104
+ delay: o.tooltipSettings.delay
105
+ }, this.validatableControls.get(t.id).message);
106
+ }));
107
+ C.set(this, (t => {
108
+ this.filterValue = t.detail.toLowerCase();
109
+ this.kbsFilteredActionListModel = d(this, b, "f").filter((t => t.caption.toLowerCase().includes(this.filterValue)));
110
+ }));
111
+ E.set(this, (async () => {
112
+ await this.getGXserverKBsCallback({
113
+ authenticationType: this.connectionData.authenticationType,
114
+ serverUrl: this.connectionData.serverUrl,
115
+ userName: this.connectionData.userName,
116
+ userPassword: this.connectionData.userPassword
117
+ }).then((t => {
118
+ c(this, b, mapKbsModelToActionListModel(t), "f");
119
+ this.kbsFilteredActionListModel = d(this, b, "f");
120
+ this.filterValue = "";
121
+ }));
122
+ }));
123
+ P.set(this, (() => {
124
+ // populate validatableControls with the controls that could have errors.
125
+ const t = [ d(this, W, "f") ];
126
+ t.forEach((t => {
127
+ if (t.id) {
128
+ this.validatableControls.set(t.id, {
129
+ reference: t,
130
+ hasError: false,
131
+ message: undefined
132
+ });
133
+ }
134
+ }));
135
+ }));
136
+ S.set(this, (t => {
137
+ this.localKbNameInputValue = t.detail;
138
+ c(this, k, true, "f");
139
+ }));
140
+ z.set(this, (async () => {
141
+ if (this.selectKBVersionsCallback) {
142
+ await this.selectKBVersionsCallback(d(this, g, "f")).then((t => {
143
+ if (t === null || t === void 0 ? void 0 : t.length) {
144
+ this.versionsValueInput = t.length.toString().concat(d(this, m, "f").kb.versionSelectedFieldValue);
145
+ c(this, w, t.map((t => t.id.toString())), "f");
146
+ }
147
+ }));
148
+ }
149
+ }));
150
+ A.set(this, (t => {
151
+ var e;
152
+ const s = (e = t.detail[0]) === null || e === void 0 ? void 0 : e.item;
153
+ if (s === undefined) {
154
+ this.enableSelectVersionsButton = false;
155
+ c(this, g, undefined, "f");
156
+ return;
157
+ }
158
+ this.enableSelectVersionsButton = true;
159
+ c(this, g, s.id, "f");
160
+ if (d(this, k, "f")) {
161
+ return;
162
+ }
163
+ this.localKbNameInputValue = s.caption;
164
+ }));
165
+ I.set(this, (t => {
166
+ this.versionSelectedType = t.detail;
167
+ }));
168
+ L.set(this, (() => s("footer", {
169
+ class: "footer control-footer-with-border spacing-body-inline spacing-body-block-end"
170
+ }, s("div", {
171
+ class: "buttons-spacer"
172
+ }, s("button", {
173
+ // cancel button
174
+ class: "button-secondary",
175
+ onClick: d(this, x, "f"),
176
+ part: "button button-cancel"
177
+ }, d(this, m, "f").footer.cancel), s("button", {
178
+ // create kb button
179
+ class: "button-primary",
180
+ onClick: this.enableSelectVersionsButton && d(this, _, "f"),
181
+ disabled: !this.enableSelectVersionsButton,
182
+ part: "button button-create-kb"
183
+ }, d(this, m, "f").footer.createKb)))));
184
+ this.enableSelectVersionsButton = false;
185
+ this.localKbNameInputValue = "";
186
+ this.filterValue = "";
187
+ this.kbsFilteredActionListModel = [];
188
+ this.validatableControls = new Map;
189
+ this.versionSelectedType = undefined;
190
+ this.versionsValueInput = "";
191
+ this.connectionData = undefined;
192
+ this.cancelCallback = undefined;
193
+ this.changeConnectionCallback = undefined;
194
+ this.createKBCallback = undefined;
195
+ this.getGXserverKBsCallback = undefined;
196
+ this.selectKBVersionsCallback = undefined;
197
+ }
198
+ componentDidLoad() {
199
+ d(this, y, "f").focus();
200
+ this.versionSelectedType = d(this, M, "f").value;
201
+ d(this, P, "f").call(this);
202
+ }
203
+ async componentWillLoad() {
204
+ c(this, m, await l.getComponentStrings(this.el), "f");
205
+ await d(this, E, "f").call(this);
206
+ }
207
+ render() {
208
+ return s(i, {
209
+ class: "widget"
210
+ }, s("ch-theme", {
211
+ model: N
212
+ }), s("ch-shortcuts", {
213
+ src: d(this, v, "f"),
214
+ ref: t => this.chShortcutsEl = t
215
+ }), s("section", {
216
+ class: "section"
217
+ }, s("header", {
218
+ class: "header control-header-with-border space-body spacing-body-inline spacing-body-block-start"
219
+ }, s("div", {
220
+ class: "field field-block"
221
+ }, s("label", {
222
+ class: "label"
223
+ }, d(this, m, "f").header.serverUrl), s("p", null, this.connectionData.serverUrl)), s("div", {
224
+ class: "field field-block"
225
+ }, s("label", {
226
+ class: "label"
227
+ }, d(this, m, "f").header.user), s("p", null, this.connectionData.userName)), s("button", {
228
+ class: "button-tertiary button-change",
229
+ onClick: d(this, T, "f")
230
+ }, d(this, m, "f").header.change)), s("section", {
231
+ class: "main field-group spacing-body"
232
+ }, s("ch-edit", {
233
+ class: "input search-kbs",
234
+ id: "local-kb-name",
235
+ startImgSrc: d(this, f, "f"),
236
+ onInput: d(this, C, "f"),
237
+ placeholder: d(this, m, "f").kb.searchKbsPlaceholder,
238
+ ref: t => c(this, y, t, "f")
239
+ }), s("ch-action-list-render", {
240
+ selection: "single",
241
+ class: "list-box",
242
+ onSelectedItemsChange: d(this, A, "f"),
243
+ model: this.kbsFilteredActionListModel
244
+ }), s("div", {
245
+ class: "versions-container field-group"
246
+ }, s("ch-radio-group-render", {
247
+ class: "radio-group",
248
+ model: d(this, u, "f"),
249
+ onChange: d(this, I, "f"),
250
+ value: d(this, u, "f")[0].value,
251
+ ref: t => c(this, M, t, "f")
252
+ }), this.versionSelectedType === "Select" && s("div", {
253
+ class: "versions-container__item field-group"
254
+ }, s("div", {
255
+ class: "field field-block"
256
+ }, s("label", {
257
+ class: "label",
258
+ htmlFor: "control-id-1"
259
+ }, d(this, m, "f").kb.versionsLabel), s("div", {
260
+ class: "versions-container__input"
261
+ }, s("ch-edit", {
262
+ class: "input",
263
+ readonly: true,
264
+ placeholder: this.enableSelectVersionsButton ? d(this, m, "f").kb.versionsPlaceholder : d(this, m, "f").kb.versionsPlaceholderDisabled,
265
+ value: this.versionsValueInput
266
+ }), s("button", {
267
+ class: "button-tertiary button-icon-only",
268
+ onClick: d(this, z, "f"),
269
+ disabled: !this.enableSelectVersionsButton
270
+ }, s("ch-image", {
271
+ src: d(this, p, "f"),
272
+ class: "icon-sm"
273
+ })))))), s("div", {
274
+ class: "field field-block"
275
+ }, s("label", {
276
+ class: "label",
277
+ htmlFor: "localKbName"
278
+ }, d(this, m, "f").kb.localKbNameLabel), s("ch-edit", {
279
+ // local kb name
280
+ class: "input",
281
+ id: "local-kb-name",
282
+ value: this.localKbNameInputValue,
283
+ onInput: d(this, S, "f"),
284
+ placeholder: d(this, m, "f").kb.localKbNamePlaceholder,
285
+ ref: t => c(this, W, t, "f")
286
+ }), d(this, j, "f").call(this, d(this, W, "f")))), d(this, L, "f").call(this)));
287
+ }
288
+ static get assetsDirs() {
289
+ return [ "gx-ide-assets/create-kb-from-server" ];
290
+ }
291
+ get el() {
292
+ return a(this);
293
+ }
294
+ };
295
+
296
+ f = new WeakMap, p = new WeakMap, u = new WeakMap, m = new WeakMap, b = new WeakMap,
297
+ w = new WeakMap, v = new WeakMap, g = new WeakMap, k = new WeakMap, y = new WeakMap,
298
+ M = new WeakMap, W = new WeakMap, x = new WeakMap, T = new WeakMap, _ = new WeakMap,
299
+ j = new WeakMap, C = new WeakMap, E = new WeakMap, P = new WeakMap, S = new WeakMap,
300
+ z = new WeakMap, A = new WeakMap, I = new WeakMap, L = new WeakMap;
301
+
302
+ K.style = h;
303
+
304
+ export { K as gx_ide_create_kb_from_server };
305
+ //# sourceMappingURL=p-2c6dd837.entry.js.map