@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,158 +0,0 @@
1
- import { r as e, c as r, a, h as t, H as o, g as i } from "./p-aaed592c.js";
2
-
3
- import { L as s } from "./p-74d59062.js";
4
-
5
- import { c as l } from "./p-78b90603.js";
6
-
7
- import { f as n } from "./p-b8624c0b.js";
8
-
9
- import { r as g } from "./p-3ef5a5a6.js";
10
-
11
- const c = ':root{--ui-animaton-speed:0.2s}.gxg-title-01{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-01-font-weight);font-size:var(--ds-title-01-font-size);letter-spacing:var(--ds-base-font-letter-spacing--comfortable);color:var(--ds-base-font-color);text-align:start;line-height:var(--ds-base-font-line-height--comfortable)}.gxg-title-01--negative{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-01-font-weight);font-size:var(--ds-title-01-font-size);letter-spacing:var(--ds-base-font-letter-spacing--comfortable);color:var(--ds-base-font-color);text-align:start;line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--negative)}.gxg-title-02{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-02-font-weight);font-size:var(--ds-title-02-font-size);letter-spacing:var(--ds-base-font-letter-spacing--regular);color:var(--ds-base-font-color);text-align:start;text-transform:uppercase;line-height:var(--ds-base-font-line-height--comfortable)}.gxg-title-02--negative{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-02-font-weight);font-size:var(--ds-title-02-font-size);letter-spacing:var(--ds-base-font-letter-spacing--regular);color:var(--ds-base-font-color);text-align:start;text-transform:uppercase;line-height:var(--ds-base-font-line-height--comfortable);color:var(--color-on-primary)}.gxg-title-03{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-03-font-weight);font-size:var(--ds-title-03-font-size);letter-spacing:var(--ds-base-font-letter-spacing--regular);color:var(--ds-base-font-color);text-align:start;text-transform:uppercase;line-height:var(--ds-base-font-line-height--comfortable)}.gxg-title-03--negative{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-03-font-weight);font-size:var(--ds-title-03-font-size);letter-spacing:var(--ds-base-font-letter-spacing--regular);color:var(--ds-base-font-color);text-align:start;text-transform:uppercase;line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--negative)}.gxg-title-04{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-04-font-weight);font-size:var(--ds-title-04-font-size);letter-spacing:var(--ds-base-font-letter-spacing--comfortable);color:var(--ds-base-font-color);text-align:start;line-height:var(--ds-base-font-line-height--comfortable)}.gxg-title-04--negative{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-04-font-weight);font-size:var(--ds-title-04-font-size);letter-spacing:var(--ds-base-font-letter-spacing--comfortable);color:var(--ds-base-font-color);text-align:start;line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--negative)}.gxg-title-05{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-05-font-weight);font-size:var(--ds-title-05-font-size);letter-spacing:var(--ds-base-font-letter-spacing--regular);color:var(--ds-base-font-color);text-align:start;line-height:var(--ds-base-font-line-height--comfortable)}.gxg-title-05--negative{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-05-font-weight);font-size:var(--ds-title-05-font-size);letter-spacing:var(--ds-base-font-letter-spacing--regular);color:var(--ds-base-font-color);text-align:start;line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--negative)}.gxg-text{font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable)}.gxg-text--negative{font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--negative)}.gxg-text--gray{font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--dimmed)}.gxg-quote{font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable);font-style:italic}.gxg-quote--negative{color:var(--ds-base-font-color--negative)}.gxg-link{line-height:unset;font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--link);text-decoration:underline;cursor:pointer;display:inline-block}.gxg-link:hover{color:var(--ds-base-font-color--link-hover)}.gxg-link:active{color:var(--ds-base-font-color--link-active)}.gxg-link-gray{line-height:unset;font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--link);text-decoration:underline;cursor:pointer;display:inline-block;color:var(--ds-base-font-color--dimmed)}.gxg-link-gray:hover{line-height:unset;font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--link);text-decoration:underline;cursor:pointer;display:inline-block;color:var(--ds-base-font-color--dimmed);filter:brightness(1.4)}.gxg-alert-error{font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--error);display:inline-block}.gxg-alert-warning{font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--warning);display:inline-block}.gxg-alert-success{font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--success);display:inline-block}.gxg-tab--disabled{color:var(--color-primary-disabled);pointer-events:none}.gxg-tab--disabled[disabled]{color:var(--color-primary-disabled);pointer-events:none}.gxg-label{font-family:var(--ds-base-font-family-primary);font-weight:var(--gxg-label-font-weight);font-size:var(--gxg-label-font-size);color:var(--gxg-label-color);text-align:center;line-height:1.455em;display:flex;align-items:center}.gxg-label:hover{color:var(--color-primary-hover)}.gxg-label:focus{color:var(--color-primary-active)}.gxg-label:active{color:var(--color-primary-active)}.gxg-label[disabled]{color:var(--color-primary-disabled)}.gxg-label--negative{color:var(--color-on-primary)}.gxg-label--negative[disabled]{color:var(--color-on-disabled)}.gxg-scrollbar{}.gxg-scrollbar::-webkit-scrollbar{width:var(--gxg-scrollbar-width);height:var(--gxg-scrollbar-width)}.gxg-scrollbar::-webkit-scrollbar-track{background-color:var(--gxg-scrollbar-track-background);border-radius:var(--gxg-scrollbar-track-border-radius)}.gxg-scrollbar::-webkit-scrollbar-thumb{background-color:var(--gxg-scrollbar-track-thumb-background);border-radius:var(--gxg-scrollbar-track-thumb-radius)}.gxg-scrollbar::-webkit-scrollbar-thumb:hover{background-color:var(--gxg-scrollbar-track-thumb-hover-background)}.gxg-scrollbar::-webkit-scrollbar-corner{background:rgba(0, 0, 0, 0)}@keyframes spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}:host{display:grid;block-size:100%}.card-regular{background-color:var(--mer-surface__elevation--01);border:var(--mer-border__width--sm) solid var(--mer-border-color__on-elevation--01);border-radius:var(--mer-border__radius--md);padding:var(--mer-spacing--md) var(--mer-spacing--md);display:grid}.card-small{background-color:var(--mer-surface__elevation--02);border-radius:var(--mer-border__radius--sm);padding:var(--mer-spacing--sm) var(--mer-spacing--sm)}.card-small--actionable:hover{background-color:var(--mer-color__neutral-gray--600)}.card-small--actionable:active{background-color:var(--mer-color__neutral-gray--650)}.card-small:focus-visible{outline:var(--focus__outline-width) var(--focus__outline-style) var(--focus__outline-color);outline-offset:var(--focus__outline-offset)}.empty-state{block-size:100%;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:var(--mer-spacing--sm);text-align:center}.empty-state__title,.empty-state__button,.empty-state__link{max-inline-size:300px}.opacity-0{opacity:0}.opacity-1{opacity:1}.display-contents{display:contents}.gxi-hidden{display:none !important}.gxi-full-height{height:100%}.gxi-overflow-auto{overflow:auto}.gxi-display-flex{display:flex}.align-start{display:flex;align-items:start}.align-center{display:flex;align-items:center}.align-end{display:flex;align-items:end}.overflow-auto{overflow:auto}.justify-start{display:flex;justify-content:start}.justify-center{display:flex;justify-content:center}.justify-end{display:flex;justify-content:end}.grid{display:grid;grid-row-gap:var(--gx-ide-grid-row-gap);grid-column-gap:var(--gx-ide-grid-column-gap);grid-template-rows:auto}ch-grid-cell{display:flex}ch-grid{overflow:auto;height:100%}ch-grid-column{z-index:99;border-bottom:1px solid var(--mer-color__neutral-gray--800)}ch-grid-column:first-child{padding-inline-start:var(--gx-ide-container__padding) !important}ch-grid-column:last-child{padding-inline-end:var(--gx-ide-container__padding) !important}ch-grid-cell{--mer-spacing--xs:var(--gx-ide-container__padding)}.layout{display:grid;gap:var(--mer-spacing--lg);box-sizing:border-box}.layout--two-cols{grid-template-columns:1fr 1fr}.layout--space-above{padding-block-start:var(--mer-spacing--lg)}gxg-tabs{box-shadow:none}:host(.gx-ide-component){height:100% !important;display:flex !important;flex-direction:column !important}:host(:focus-within) gx-ide-top-bar::part(wrapper){background-color:var(--color-secondary-enabled)}.gx-ide-main-wrapper{color:var(--gx-ide-component-text-color);font-weight:var(--mer-font__weight--regular);font-size:var(--mer-font__size--xs);font-family:var(--mer-font-family--primary);height:100%;background-color:var(--gx-ide-component-background-color);display:flex;flex-direction:column;flex-grow:1;box-sizing:border-box}.gx-ide-main{flex-grow:1;overflow-y:auto;}.gx-ide-main::-webkit-scrollbar{width:var(--gxg-scrollbar-width);height:var(--gxg-scrollbar-width)}.gx-ide-main::-webkit-scrollbar-track{background-color:var(--gxg-scrollbar-track-background);border-radius:var(--gxg-scrollbar-track-border-radius)}.gx-ide-main::-webkit-scrollbar-thumb{background-color:var(--gxg-scrollbar-track-thumb-background);border-radius:var(--gxg-scrollbar-track-thumb-radius)}.gx-ide-main::-webkit-scrollbar-thumb:hover{background-color:var(--gxg-scrollbar-track-thumb-hover-background)}.gx-ide-main::-webkit-scrollbar-corner{background:rgba(0, 0, 0, 0)}.gx-ide-overflow{overflow-y:auto;}.gx-ide-overflow::-webkit-scrollbar{width:var(--gxg-scrollbar-width);height:var(--gxg-scrollbar-width)}.gx-ide-overflow::-webkit-scrollbar-track{background-color:var(--gxg-scrollbar-track-background);border-radius:var(--gxg-scrollbar-track-border-radius)}.gx-ide-overflow::-webkit-scrollbar-thumb{background-color:var(--gxg-scrollbar-track-thumb-background);border-radius:var(--gxg-scrollbar-track-thumb-radius)}.gx-ide-overflow::-webkit-scrollbar-thumb:hover{background-color:var(--gxg-scrollbar-track-thumb-hover-background)}.gx-ide-overflow::-webkit-scrollbar-corner{background:rgba(0, 0, 0, 0)}.tree-view-primary{font-size:var(--mer-font__size--2xs)}p{margin:0;font-size:var(--mer-font__size--xxs)}.buttons-container{display:flex;gap:var(--mer-spacing--xs)}:host{display:block}.main{display:grid;column-gap:var(--gx-ide-grid-column-gap);row-gap:var(--gx-ide-grid-row-gap);grid-template-columns:auto 1fr;grid-template-areas:"kb-label kb-input " "server-label server-input" "auth-type-label auth-type-input" "user-name-label user-name-input" "password-label password-input"}.main .kb-name-label{grid-area:kb-label}.main .kb-input{grid-area:kb-input}.main .server-url-label{grid-area:server-label}.main .server-url-input{grid-area:server-input}.main .auth-type-label{grid-area:auth-type-label}.main .auth-type-input{grid-area:auth-type-input}.main .user-name-label{grid-area:user-name-label}.main .user-name-input{grid-area:user-name-input}.main .password-label{grid-area:password-label}.main .password-input{grid-area:password-input}';
12
-
13
- // Define your constants
14
- const d = [ "GeneXus Account", "Local" ];
15
-
16
- const b = class {
17
- constructor(t) {
18
- e(this, t);
19
- this.componentDidRenderFirstTime = r(this, "componentDidRenderFirstTime", 7);
20
- this.renderedFirstTime = false;
21
- this.shortcutsSrc = a(`./gx-ide-assets/share-kb/shortcuts.json`);
22
- // 7.LISTENERS //
23
- // 8.PUBLIC METHODS API //
24
- this.createKBCallbackHandler = async () => {
25
- const e = {
26
- name: this.kbNameEl.value,
27
- serverUrl: this.serverUrlEl.value,
28
- authenticationType: this.authTypeEl.value,
29
- user: this.userNameEl.value,
30
- password: this.passwordEl.value
31
- };
32
- const r = this.createKBCallback(e);
33
- r.then((e => {
34
- n(e, this);
35
- }));
36
- };
37
- this.displayTitle = false;
38
- this.kbName = undefined;
39
- this.serverUrls = undefined;
40
- this.enableCustomServer = true;
41
- this.createKBCallback = undefined;
42
- }
43
- // 6.COMPONENT LIFECYCLE METHODS //
44
- async componentWillLoad() {
45
- this._componentLocale = await s.getComponentStrings(this.el);
46
- }
47
- componentDidLoad() {
48
- this.kbNameEl.focus();
49
- }
50
- componentDidRender() {
51
- if (!this.renderedFirstTime) {
52
- this.componentDidRenderFirstTime.emit(this._componentLocale.componentName);
53
- this.renderedFirstTime = true;
54
- }
55
- }
56
- // 9.LOCAL METHODS //
57
- // 10.RENDER() FUNCTION //
58
- render() {
59
- return t(o, {
60
- class: "gx-ide-component"
61
- }, t("div", {
62
- class: "gx-ide-main-wrapper"
63
- }, t("gx-ide-container", {
64
- containerTitle: this.displayTitle ? this._componentLocale.componentName : null,
65
- slimmerFooter: l.gxIdeContainer.slimmerFooter
66
- }, t("main", {
67
- class: "main"
68
- }, t("gxg-label", {
69
- labelPosition: "start",
70
- class: "kb-label",
71
- noMargin: true
72
- }, this._componentLocale.main.kbName), t("gxg-form-text", {
73
- labelPosition: "start",
74
- placeholder: "SalesInventory",
75
- "max-width": "100%",
76
- value: this.kbName,
77
- toolTip: l.tooltip,
78
- ref: e => this.kbNameEl = e,
79
- part: "kb-name",
80
- class: "kb-input"
81
- }), t("gxg-label", {
82
- labelPosition: "start",
83
- class: "server-url-label",
84
- noMargin: true
85
- }, this._componentLocale.main.serverUrl), t("gxg-combo-box", {
86
- disableFilter: !this.enableCustomServer,
87
- labelPosition: "start",
88
- placeholder: "https://myexampleserver.com",
89
- strict: true,
90
- toolTip: l.tooltip,
91
- value: this.serverUrls[0],
92
- ref: e => this.serverUrlEl = e,
93
- part: "server-url",
94
- class: "server-url-input"
95
- }, g("gxg-combo-box-item", this.serverUrls.map((e => ({
96
- id: e,
97
- label: e
98
- }))), "server-url")), t("gxg-label", {
99
- labelPosition: "start",
100
- class: "auth-type-label",
101
- noMargin: true
102
- }, this._componentLocale.main.authentication), t("gxg-combo-box", {
103
- labelPosition: "start",
104
- placeholder: "https://myexampleserver.com",
105
- "max-width": "100%",
106
- value: d[0],
107
- ref: e => this.authTypeEl = e,
108
- part: "auth-type",
109
- class: "auth-type-input"
110
- }, g("gxg-combo-box-item", d.map((e => ({
111
- id: e,
112
- label: e
113
- }))), "auth-type")), t("gxg-label", {
114
- labelPosition: "start",
115
- class: "user-name-label",
116
- noMargin: true
117
- }, this._componentLocale.main.userName), t("gxg-form-text", {
118
- labelPosition: "start",
119
- placeholder: "My User",
120
- "max-width": "100%",
121
- toolTip: l.tooltip,
122
- ref: e => this.userNameEl = e,
123
- part: "user-name",
124
- class: "user-name-input"
125
- }), t("gxg-label", {
126
- labelPosition: "start",
127
- class: "password-label",
128
- noMargin: true
129
- }, this._componentLocale.main.password), t("gxg-form-text", {
130
- labelPosition: "start",
131
- password: true,
132
- toolTip: l.tooltip,
133
- "max-width": "100%",
134
- ref: e => this.passwordEl = e,
135
- part: "password",
136
- class: "password-input"
137
- })), t("gxg-button", {
138
- slot: "footer-end",
139
- type: "primary-text-icon",
140
- icon: "gemini-tools/share",
141
- onClick: this.createKBCallbackHandler,
142
- part: "share-kb"
143
- }, this._componentLocale.footer.shareBtn))), t("gxg-shortcuts", {
144
- src: this.shortcutsSrc
145
- }));
146
- }
147
- static get assetsDirs() {
148
- return [ "gx-ide-assets/share-kb" ];
149
- }
150
- get el() {
151
- return i(this);
152
- }
153
- };
154
-
155
- b.style = c;
156
-
157
- export { b as gx_ide_share_kb };
158
- //# sourceMappingURL=p-58e13823.entry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["shareKbCss","AUTHENTICATION_TYPE","GxIdeShareKb","this","renderedFirstTime","shortcutsSrc","getAssetPath","createKBCallbackHandler","async","kbData","name","kbNameEl","value","serverUrl","serverUrlEl","authenticationType","authTypeEl","user","userNameEl","password","passwordEl","createCallbackPromise","createKBCallback","then","formSubmitResult","formSubmitValidation","componentWillLoad","_componentLocale","Locale","getComponentStrings","el","componentDidLoad","focus","componentDidRender","componentDidRenderFirstTime","emit","componentName","render","h","Host","class","containerTitle","displayTitle","slimmerFooter","config","gxIdeContainer","labelPosition","noMargin","main","kbName","placeholder","toolTip","tooltip","ref","part","disableFilter","enableCustomServer","strict","serverUrls","renderFormItems","map","item","id","label","authentication","userName","slot","type","icon","onClick","footer","shareBtn","src"],"sources":["src/components/share-kb/share-kb.scss?tag=gx-ide-share-kb&encapsulation=shadow","src/components/share-kb/share-kb.tsx"],"sourcesContent":["@import \"../../global/gx-ide-common.scss\";\n@import \"../../global/gx-ide-mixins.scss\";\n\n:host {\n display: block;\n}\n\n.main {\n display: grid;\n column-gap: var(--gx-ide-grid-column-gap);\n row-gap: var(--gx-ide-grid-row-gap);\n grid-template-columns: auto 1fr;\n grid-template-areas:\n \"kb-label kb-input \"\n \"server-label server-input\"\n \"auth-type-label auth-type-input\"\n \"user-name-label user-name-input\"\n \"password-label password-input\";\n\n .kb-name-label {\n grid-area: kb-label;\n }\n .kb-input {\n grid-area: kb-input;\n }\n .server-url-label {\n grid-area: server-label;\n }\n .server-url-input {\n grid-area: server-input;\n }\n .auth-type-label {\n grid-area: auth-type-label;\n }\n .auth-type-input {\n grid-area: auth-type-input;\n }\n .user-name-label {\n grid-area: user-name-label;\n }\n .user-name-input {\n grid-area: user-name-input;\n }\n .password-label {\n grid-area: password-label;\n }\n .password-input {\n grid-area: password-input;\n }\n}\n","// Define your constants\nconst AUTHENTICATION_TYPE = [\"GeneXus Account\", \"Local\"];\n\n/* STENCIL IMPORTS */\nimport {\n Component,\n Host,\n h,\n Prop,\n Element,\n Event,\n EventEmitter,\n getAssetPath\n} from \"@stencil/core\";\n/* OTHER LIBRARIES IMPORTS */\n/* CUSTOM IMPORTS */\nimport { Locale } from \"../../common/locale\";\nimport {\n FormSubmitResult,\n GxServerAuthenticationType\n} from \"../../common/types\";\nimport { config } from \"../../common/config\";\nimport { formSubmitValidation } from \"../../common/form-validation\";\nimport { renderFormItems } from \"../../common/common\";\n\n@Component({\n tag: \"gx-ide-share-kb\",\n styleUrl: \"share-kb.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/share-kb\"]\n})\nexport class GxIdeShareKb {\n /*\nINDEX:\n1.OWN PROPERTIES \n2.REFERENCE TO ELEMENTS\n3.STATE() VARIABLES\n4.PUBLIC PROPERTY API | WATCH'S\n5.EVENTS (EMIT)\n6.COMPONENT LIFECYCLE METHODS\n7.LISTENERS\n8.PUBLIC METHODS API\n9.LOCAL METHODS\n10.RENDER() FUNCTION\n*/\n\n // 1.OWN PROPERTIES //\n\n /**\n * The component hard-coded strings translations.\n */\n\n private _componentLocale: any;\n private renderedFirstTime = false;\n private shortcutsSrc = getAssetPath(\n `./gx-ide-assets/share-kb/shortcuts.json`\n );\n\n // 2. REFERENCE TO ELEMENTS //\n\n @Element() el: HTMLGxIdeShareKbElement;\n private kbNameEl: HTMLGxgFormTextElement;\n private serverUrlEl: HTMLGxgComboBoxElement;\n private authTypeEl: HTMLGxgComboBoxElement;\n private userNameEl: HTMLGxgFormTextElement;\n private passwordEl: HTMLGxgFormTextElement;\n\n // 3.STATE() VARIABLES //\n\n // 4.PUBLIC PROPERTY API | WATCH'S //\n\n /**\n * If true it displays the component title on the header\n */\n @Prop() readonly displayTitle = false;\n\n /**\n * The name of the kb\n */\n @Prop() readonly kbName!: string;\n\n /**\n * Urls array of cataloged servers to be shown on combo\n */\n @Prop() readonly serverUrls!: string[];\n\n /**\n * True if user can introduce server url manually\n */\n @Prop() readonly enableCustomServer: boolean = true;\n\n /**\n * Callback invoked when Share button is pressed\n */\n @Prop() readonly createKBCallback!: CreateKBCallback;\n\n // 5.EVENTS (EMIT) //\n\n /**\n * @description Gets fired when the component has rendered for the first time.\n */\n @Event() componentDidRenderFirstTime: EventEmitter<string>;\n\n // 6.COMPONENT LIFECYCLE METHODS //\n\n async componentWillLoad() {\n this._componentLocale = await Locale.getComponentStrings(this.el);\n }\n\n componentDidLoad() {\n this.kbNameEl.focus();\n }\n\n componentDidRender() {\n if (!this.renderedFirstTime) {\n this.componentDidRenderFirstTime.emit(\n this._componentLocale.componentName\n );\n this.renderedFirstTime = true;\n }\n }\n\n // 7.LISTENERS //\n\n // 8.PUBLIC METHODS API //\n\n private createKBCallbackHandler = async () => {\n const kbData: ShareKBData = {\n name: this.kbNameEl.value,\n serverUrl: this.serverUrlEl.value,\n authenticationType: this.authTypeEl.value,\n user: this.userNameEl.value,\n password: this.passwordEl.value\n };\n const createCallbackPromise = this.createKBCallback(kbData);\n createCallbackPromise.then(formSubmitResult => {\n formSubmitValidation(formSubmitResult, this);\n });\n };\n\n // 9.LOCAL METHODS //\n\n // 10.RENDER() FUNCTION //\n\n render() {\n return (\n <Host class=\"gx-ide-component\">\n <div class=\"gx-ide-main-wrapper\">\n <gx-ide-container\n containerTitle={\n this.displayTitle ? this._componentLocale.componentName : null\n }\n slimmerFooter={config.gxIdeContainer.slimmerFooter}\n >\n <main class=\"main\">\n {/* #kb name */}\n <gxg-label labelPosition=\"start\" class=\"kb-label\" noMargin>\n {this._componentLocale.main.kbName}\n </gxg-label>\n <gxg-form-text\n labelPosition=\"start\"\n placeholder=\"SalesInventory\"\n max-width=\"100%\"\n value={this.kbName}\n toolTip={config.tooltip}\n ref={(el: HTMLGxgFormTextElement) =>\n (this.kbNameEl = el as HTMLGxgFormTextElement)\n }\n part=\"kb-name\"\n class=\"kb-input\"\n ></gxg-form-text>\n\n {/* #server url */}\n <gxg-label\n labelPosition=\"start\"\n class=\"server-url-label\"\n noMargin\n >\n {this._componentLocale.main.serverUrl}\n </gxg-label>\n <gxg-combo-box\n disableFilter={!this.enableCustomServer}\n labelPosition=\"start\"\n placeholder=\"https://myexampleserver.com\"\n strict\n toolTip={config.tooltip}\n value={this.serverUrls[0]}\n ref={(el: HTMLGxgComboBoxElement) =>\n (this.serverUrlEl = el as HTMLGxgComboBoxElement)\n }\n part=\"server-url\"\n class=\"server-url-input\"\n >\n {renderFormItems(\n \"gxg-combo-box-item\",\n this.serverUrls.map((item: string) => ({\n id: item,\n label: item\n })),\n \"server-url\"\n )}\n </gxg-combo-box>\n\n {/* #authentication type */}\n <gxg-label labelPosition=\"start\" class=\"auth-type-label\" noMargin>\n {this._componentLocale.main.authentication}\n </gxg-label>\n <gxg-combo-box\n labelPosition=\"start\"\n placeholder=\"https://myexampleserver.com\"\n max-width=\"100%\"\n value={AUTHENTICATION_TYPE[0]}\n ref={(el: HTMLGxgComboBoxElement) =>\n (this.authTypeEl = el as HTMLGxgComboBoxElement)\n }\n part=\"auth-type\"\n class=\"auth-type-input\"\n >\n {renderFormItems(\n \"gxg-combo-box-item\",\n AUTHENTICATION_TYPE.map((item: string) => ({\n id: item,\n label: item\n })),\n \"auth-type\"\n )}\n </gxg-combo-box>\n\n {/* #user name */}\n <gxg-label labelPosition=\"start\" class=\"user-name-label\" noMargin>\n {this._componentLocale.main.userName}\n </gxg-label>\n <gxg-form-text\n labelPosition=\"start\"\n placeholder=\"My User\"\n max-width=\"100%\"\n toolTip={config.tooltip}\n ref={(el: HTMLGxgFormTextElement) =>\n (this.userNameEl = el as HTMLGxgFormTextElement)\n }\n part=\"user-name\"\n class=\"user-name-input\"\n ></gxg-form-text>\n\n {/* #password */}\n <gxg-label labelPosition=\"start\" class=\"password-label\" noMargin>\n {this._componentLocale.main.password}\n </gxg-label>\n <gxg-form-text\n labelPosition=\"start\"\n password\n toolTip={config.tooltip}\n max-width=\"100%\"\n ref={(el: HTMLGxgFormTextElement) =>\n (this.passwordEl = el as HTMLGxgFormTextElement)\n }\n part=\"password\"\n class=\"password-input\"\n ></gxg-form-text>\n </main>\n <gxg-button\n slot=\"footer-end\"\n type=\"primary-text-icon\"\n icon=\"gemini-tools/share\"\n onClick={this.createKBCallbackHandler}\n part=\"share-kb\"\n >\n {this._componentLocale.footer.shareBtn}\n </gxg-button>\n </gx-ide-container>\n </div>\n <gxg-shortcuts src={this.shortcutsSrc}></gxg-shortcuts>\n </Host>\n );\n }\n}\n\nexport type CreateKBCallback = (data: ShareKBData) => Promise<FormSubmitResult>;\nexport type ShareKBData = {\n name: string;\n serverUrl: string;\n authenticationType: GxServerAuthenticationType;\n user: string;\n password: string;\n};\n"],"mappings":"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"}
@@ -1,106 +0,0 @@
1
- import { r as e, h as s, g as r } from "./p-aaed592c.js";
2
-
3
- import { h as a } from "./p-014916d7.js";
4
-
5
- const i = ':host{font-family:var(--mer-font-family--primary)}.message{color:var(--mer-color__neutral-gray--200);display:grid;grid-template-rows:0fr;transition:grid-template-rows 100ms;transition:grid-template-rows 100ms, -ms-grid-rows 100ms;}.message__outer-wrapper{overflow:hidden}.message__inner-wrapper{padding:var(--mer-spacing--2xs) var(--mer-spacing--xs);border-radius:var(--mer-border__radius--xs);border:var(--mer-border__width--sm) solid transparent;background-color:var(--mer-color__neutral-gray--1200);margin-block-start:var(--mer-spacing--xs)}.message__caption{font-size:var(--mer-font__size--2xs);line-height:var(--mer-line-height--comfortable);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(--mer-color__tint-blue--8)}.message--assistant-action .message__inner-wrapper{font-style:italic}.message--assistant-in-progress{color:var(--mer-color__neutral-gray--500)}.message--assistant-in-progress .message__inner-wrapper{font-style:italic;display:grid;grid-template-columns:1fr auto;gap:var(--mer-spacing--xs)}.message--assistant-in-progress .message__inner-wrapper .message__caption{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;flex:1}.message--assistant-in-progress .message__inner-wrapper .animation-wrapper{flex:none}.message--assistant-error .message__inner-wrapper{background-color:var(--mer-color__tint-red--5);border-color:var(--mer-color__tint-red--60)}.message--copyable{cursor:pointer}.message:last-child{margin-block-end:0}:host(:first-child) .message__inner-wrapper{margin-block-end:0}.animation-wrapper{width:45px;display:flex;align-items:center;justify-content:center}.dot-pulse{position:relative;left:-9999px;width:5px;height:5px;border-radius:2.5px;background-color:var(--mer-color__neutral-gray--400);color:var(--mer-color__neutral-gray--400);box-shadow:9999px 0 0 -5px;animation:dot-pulse 1.5s infinite linear;animation-delay:0.25s}.dot-pulse::before,.dot-pulse::after{content:"";display:inline-block;position:absolute;top:0;width:5px;height:5px;border-radius:2.5px;background-color:var(--mer-color__neutral-gray--400);color:var(--mer-color__neutral-gray--400)}.dot-pulse::before{box-shadow:9984px 0 0 -5px;animation:dot-pulse-before 1.5s infinite linear;animation-delay:0s}.dot-pulse::after{box-shadow:10014px 0 0 -5px;animation:dot-pulse-after 1.5s infinite linear;animation-delay:0.5s}@keyframes dot-pulse-before{0%{box-shadow:9984px 0 0 -5px}30%{box-shadow:9984px 0 0 2px}60%,100%{box-shadow:9984px 0 0 -5px}}@keyframes dot-pulse{0%{box-shadow:9999px 0 0 -5px}30%{box-shadow:9999px 0 0 2px}60%,100%{box-shadow:9999px 0 0 -5px}}@keyframes dot-pulse-after{0%{box-shadow:10014px 0 0 -5px}30%{box-shadow:10014px 0 0 2px}60%,100%{box-shadow:10014px 0 0 -5px}}.copied{position:absolute;width:100%;height:100%;display:flex;align-items:center;justify-content:center;color:var(--mer-color__neutral-gray--300);display:flex;gap:var(--mer-spacing--2xs)}.hiChar{color:var(--mer-color__primary--200);filter:brightness(1.3)}';
6
-
7
- const t = class {
8
- constructor(s) {
9
- e(this, s);
10
- /*
11
- INDEX:
12
- 1.OWN PROPERTIES
13
- 2.REFERENCE TO ELEMENTS
14
- 3.STATE() VARIABLES
15
- 4.PUBLIC PROPERTY API | WATCH'S
16
- 5.EVENTS (EMIT)
17
- 6.COMPONENT LIFECYCLE METHODS
18
- 7.LISTENERS
19
- 8.PUBLIC METHODS API
20
- 9.LOCAL METHODS
21
- 10.RENDER() FUNCTION
22
- */
23
- // 1.OWN PROPERTIES //
24
- /* The message allows to be copied*/ this.copyable = false;
25
- // 7.LISTENERS //
26
- // 8.PUBLIC METHODS API //
27
- // 9.LOCAL METHODS //
28
- this.evaluateMessageIsCopyable = () => {
29
- this.copyable = this.messageType !== "assistant-in-progress" && this.messageType !== "assistant-action";
30
- };
31
- this.copyMessage = () => {
32
- navigator.clipboard.writeText(this.message);
33
- this.showCopiedMessage = true;
34
- setTimeout((() => {
35
- this.showCopiedMessage = false;
36
- }), 1500);
37
- };
38
- this.visible = false;
39
- this.showCopiedMessage = false;
40
- this.message = undefined;
41
- this.messageType = undefined;
42
- this.filterValue = undefined;
43
- this.hidden = undefined;
44
- this.translations = undefined;
45
- }
46
- // 5.EVENTS (EMIT) //
47
- // 6.COMPONENT LIFECYCLE METHODS //
48
- async componentWillLoad() {
49
- this.evaluateMessageIsCopyable();
50
- }
51
- componentDidRender() {
52
- setTimeout((() => {
53
- /* Without the timeout it appears instantly (no apparent transition)*/
54
- this.visible = true;
55
- const e = this.el.parentElement;
56
- e.scrollTo(0, 0);
57
- }), 0);
58
- }
59
- // 10.RENDER() FUNCTION //
60
- render() {
61
- return s("li", {
62
- class: {
63
- message: true,
64
- "message--visible": this.visible && !this.hidden,
65
- [`message--${[ this.messageType ]}`]: true,
66
- "message--assistant": this.messageType !== "user",
67
- "message--copyable": this.copyable,
68
- "message--copying": this.showCopiedMessage
69
- },
70
- onClick: this.copyable && this.copyMessage
71
- }, s("div", {
72
- class: "message__outer-wrapper"
73
- }, s("div", {
74
- class: {
75
- "message__inner-wrapper": true
76
- }
77
- }, s("div", {
78
- class: {
79
- message__caption: true,
80
- "message__caption--in-progress": this.messageType === "assistant-in-progress"
81
- }
82
- }, this.showCopiedMessage ? s("span", {
83
- class: {
84
- copied: true
85
- }
86
- }, s("gxg-icon", {
87
- type: "bpm/tasks",
88
- color: "mercury"
89
- }), this.translations["copied"]) : null, a(this.message, this.filterValue)), this.messageType === "assistant-in-progress" ? s("div", {
90
- class: "animation-wrapper"
91
- }, s("div", {
92
- class: "dot-pulse"
93
- })) : null)));
94
- }
95
- static get assetsDirs() {
96
- return [ "gx-ide-assets/ai-message" ];
97
- }
98
- get el() {
99
- return r(this);
100
- }
101
- };
102
-
103
- t.style = i;
104
-
105
- export { t as gx_ide_ai_message };
106
- //# sourceMappingURL=p-5dfb7c66.entry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["aiMessageCss","GxIdeAiMessage","this","copyable","evaluateMessageIsCopyable","messageType","copyMessage","navigator","clipboard","writeText","message","showCopiedMessage","setTimeout","componentWillLoad","componentDidRender","visible","messagesList","el","parentElement","scrollTo","render","h","class","hidden","onClick","message__caption","copied","type","color","translations","hiChar","filterValue"],"sources":["src/components/ai-assistant/ai-message.scss?tag=gx-ide-ai-message&encapsulation=shadow","src/components/ai-assistant/ai-message.tsx"],"sourcesContent":["@import \"../../global/gx-ide-mixins.scss\";\n\n:host {\n font-family: var(--mer-font-family--primary);\n}\n/*--- Messages ---*/\n.message {\n color: var(--mer-color__neutral-gray--200);\n display: grid;\n grid-template-rows: 0fr;\n transition: grid-template-rows 100ms;\n transition: grid-template-rows 100ms, -ms-grid-rows 100ms;\n &__outer-wrapper {\n overflow: hidden;\n }\n &__inner-wrapper {\n padding: var(--mer-spacing--2xs) var(--mer-spacing--xs);\n border-radius: var(--mer-border__radius--xs);\n border: var(--mer-border__width--sm) solid transparent;\n background-color: var(--mer-color__neutral-gray--1200);\n margin-block-start: var(--mer-spacing--xs);\n }\n &__caption {\n font-size: var(--mer-font__size--2xs);\n line-height: var(--mer-line-height--comfortable);\n position: relative;\n }\n &--visible {\n grid-template-rows: 1fr;\n }\n &--copying {\n pointer-events: none;\n span:not(.copied),\n .message__caption {\n color: transparent;\n -webkit-user-select: none; /* Safari */\n -ms-user-select: none; /* IE 10 and IE 11 */\n user-select: none; /* Standard syntax */\n }\n }\n /*--- Types of messages ---*/\n &--user {\n .message__inner-wrapper {\n background-color: var(--mer-color__tint-blue--8);\n }\n }\n &--assistant-action {\n .message__inner-wrapper {\n font-style: italic;\n }\n }\n &--assistant-in-progress {\n color: var(--mer-color__neutral-gray--500);\n .message__inner-wrapper {\n font-style: italic;\n display: grid;\n grid-template-columns: 1fr auto;\n gap: var(--mer-spacing--xs);\n\n .message__caption {\n @include ellipsis;\n flex: 1;\n }\n .animation-wrapper {\n flex: none;\n }\n }\n }\n &--assistant-error {\n .message__inner-wrapper {\n background-color: var(--mer-color__tint-red--5);\n border-color: var(--mer-color__tint-red--60);\n }\n }\n &--copyable {\n cursor: pointer;\n &:hover {\n }\n }\n &:last-child {\n margin-block-end: 0;\n }\n}\n:host(:first-child) {\n .message {\n &__inner-wrapper {\n margin-block-end: 0;\n }\n }\n}\n\n/*--- Dot Pulse Sweet Animation ---*/\n.animation-wrapper {\n width: 45px;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n$color: var(--mer-color__neutral-gray--400);\n.dot-pulse {\n position: relative;\n left: -9999px;\n width: 5px;\n height: 5px;\n border-radius: 2.5px;\n background-color: $color;\n color: $color;\n box-shadow: 9999px 0 0 -5px;\n animation: dot-pulse 1.5s infinite linear;\n animation-delay: 0.25s;\n &::before,\n &::after {\n content: \"\";\n display: inline-block;\n position: absolute;\n top: 0;\n width: 5px;\n height: 5px;\n border-radius: 2.5px;\n background-color: $color;\n color: $color;\n }\n &::before {\n box-shadow: 9984px 0 0 -5px;\n animation: dot-pulse-before 1.5s infinite linear;\n animation-delay: 0s;\n }\n &::after {\n box-shadow: 10014px 0 0 -5px;\n animation: dot-pulse-after 1.5s infinite linear;\n animation-delay: 0.5s;\n }\n}\n@keyframes dot-pulse-before {\n 0% {\n box-shadow: 9984px 0 0 -5px;\n }\n 30% {\n box-shadow: 9984px 0 0 2px;\n }\n 60%,\n 100% {\n box-shadow: 9984px 0 0 -5px;\n }\n}\n@keyframes dot-pulse {\n 0% {\n box-shadow: 9999px 0 0 -5px;\n }\n 30% {\n box-shadow: 9999px 0 0 2px;\n }\n 60%,\n 100% {\n box-shadow: 9999px 0 0 -5px;\n }\n}\n@keyframes dot-pulse-after {\n 0% {\n box-shadow: 10014px 0 0 -5px;\n }\n 30% {\n box-shadow: 10014px 0 0 2px;\n }\n 60%,\n 100% {\n box-shadow: 10014px 0 0 -5px;\n }\n}\n\n/*--- Copy Message ---*/\n.copied {\n position: absolute;\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mer-color__neutral-gray--300);\n display: flex;\n gap: var(--mer-spacing--2xs);\n}\n\n@include hiChar;\n","/* STENCIL IMPORTS */\nimport { Component, h, Prop, Element, State } from \"@stencil/core\";\n/* OTHER LIBRARIES IMPORTS */\n/* CUSTOM IMPORTS */\nimport { MessageType } from \"./ai-assistant\";\nimport { hiChar } from \"../../common/helpers\";\n\n@Component({\n tag: \"gx-ide-ai-message\",\n styleUrl: \"ai-message.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/ai-message\"]\n})\nexport class GxIdeAiMessage {\n /*\nINDEX:\n1.OWN PROPERTIES \n2.REFERENCE TO ELEMENTS\n3.STATE() VARIABLES\n4.PUBLIC PROPERTY API | WATCH'S\n5.EVENTS (EMIT)\n6.COMPONENT LIFECYCLE METHODS\n7.LISTENERS\n8.PUBLIC METHODS API\n9.LOCAL METHODS\n10.RENDER() FUNCTION\n*/\n\n // 1.OWN PROPERTIES //\n\n /* The message allows to be copied*/\n private copyable = false;\n\n // 2. REFERENCE TO ELEMENTS //\n\n @Element() el: HTMLGxIdeAiMessageElement;\n\n // 3.STATE() VARIABLES //\n\n /**\n * This wil display the message if true\n */\n @State() visible = false;\n\n /**\n * This wil show the user a text, indicating that the message has been copied\n */\n @State() showCopiedMessage = false;\n\n // 4.PUBLIC PROPERTY API | WATCH'S //\n\n /**\n * The actual message\n */\n @Prop() readonly message: string;\n\n /**\n * The message type\n */\n @Prop() readonly messageType: MessageType;\n\n /**\n * The filter value\n */\n @Prop() readonly filterValue: string;\n\n /**\n * It hides the message (used for the filter)\n */\n @Prop() readonly hidden: boolean;\n\n /**\n * An object with the needed string translations.\n */\n @Prop() readonly translations: Translations;\n\n // 5.EVENTS (EMIT) //\n\n // 6.COMPONENT LIFECYCLE METHODS //\n\n async componentWillLoad() {\n this.evaluateMessageIsCopyable();\n }\n\n componentDidRender() {\n setTimeout(() => {\n /* Without the timeout it appears instantly (no apparent transition)*/\n this.visible = true;\n const messagesList = this.el.parentElement;\n messagesList.scrollTo(0, 0);\n }, 0);\n }\n\n // 7.LISTENERS //\n\n // 8.PUBLIC METHODS API //\n\n // 9.LOCAL METHODS //\n\n private evaluateMessageIsCopyable = () => {\n this.copyable =\n this.messageType !== \"assistant-in-progress\" &&\n this.messageType !== \"assistant-action\";\n };\n\n private copyMessage = () => {\n navigator.clipboard.writeText(this.message);\n this.showCopiedMessage = true;\n setTimeout(() => {\n this.showCopiedMessage = false;\n }, 1500);\n };\n\n // 10.RENDER() FUNCTION //\n\n render() {\n return (\n <li\n class={{\n \"message\": true,\n \"message--visible\": this.visible && !this.hidden,\n [`message--${[this.messageType]}`]: true,\n \"message--assistant\": this.messageType !== \"user\",\n \"message--copyable\": this.copyable,\n \"message--copying\": this.showCopiedMessage\n }}\n onClick={this.copyable && this.copyMessage}\n >\n <div class=\"message__outer-wrapper\">\n <div\n class={{\n \"message__inner-wrapper\": true\n }}\n >\n <div\n class={{\n \"message__caption\": true,\n \"message__caption--in-progress\":\n this.messageType === \"assistant-in-progress\"\n }}\n >\n {this.showCopiedMessage ? (\n <span\n class={{\n copied: true\n }}\n >\n <gxg-icon type=\"bpm/tasks\" color=\"mercury\"></gxg-icon>\n {this.translations[\"copied\"]}\n </span>\n ) : null}\n {hiChar(this.message, this.filterValue)}\n </div>\n {this.messageType === \"assistant-in-progress\" ? (\n <div class=\"animation-wrapper\">\n <div class=\"dot-pulse\"></div>\n </div>\n ) : null}\n </div>\n </div>\n </li>\n );\n }\n}\n\nexport type Translations = {\n [key: string]: string;\n};\n"],"mappings":";;;;AAAA,MAAMA,IAAe;;MCaRC,IAAc;;;;;;;;;;;;;;;;;4CAkBjBC,KAAAC,WAAW;;;;QAoEXD,KAAAE,4BAA4B;MAClCF,KAAKC,WACHD,KAAKG,gBAAgB,2BACrBH,KAAKG,gBAAgB;AAAkB;IAGnCH,KAAAI,cAAc;MACpBC,UAAUC,UAAUC,UAAUP,KAAKQ;MACnCR,KAAKS,oBAAoB;MACzBC,YAAW;QACTV,KAAKS,oBAAoB;AAAK,UAC7B;AAAK;mBApES;6BAKU;;;;;;;;;EAiC7B,uBAAME;IACJX,KAAKE;;EAGP,kBAAAU;IACEF,YAAW;;MAETV,KAAKa,UAAU;MACf,MAAMC,IAAed,KAAKe,GAAGC;MAC7BF,EAAaG,SAAS,GAAG;AAAE,QAC1B;;;EAyBL,MAAAC;IACE,OACEC,EAAA;MACEC,OAAO;QACLZ,SAAW;QACX,oBAAoBR,KAAKa,YAAYb,KAAKqB;QAC1C,CAAC,YAAY,EAACrB,KAAKG,kBAAiB;QACpC,sBAAsBH,KAAKG,gBAAgB;QAC3C,qBAAqBH,KAAKC;QAC1B,oBAAoBD,KAAKS;;MAE3Ba,SAAStB,KAAKC,YAAYD,KAAKI;OAE/Be,EAAA;MAAKC,OAAM;OACTD,EAAA;MACEC,OAAO;QACL,0BAA0B;;OAG5BD,EAAA;MACEC,OAAO;QACLG,kBAAoB;QACpB,iCACEvB,KAAKG,gBAAgB;;OAGxBH,KAAKS,oBACJU,EAAA;MACEC,OAAO;QACLI,QAAQ;;OAGVL,EAAA;MAAUM,MAAK;MAAYC,OAAM;QAChC1B,KAAK2B,aAAa,aAEnB,MACHC,EAAO5B,KAAKQ,SAASR,KAAK6B,eAE5B7B,KAAKG,gBAAgB,0BACpBgB,EAAA;MAAKC,OAAM;OACTD,EAAA;MAAKC,OAAM;UAEX"}
@@ -1 +0,0 @@
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 position: relative;\n padding-inline-start: 24px;\n &::before {\n $size: var(--mer-spacing--sm);\n content: \"\";\n display: inline-block;\n inline-size: $size;\n block-size: $size;\n border: var(--mer-border__width--sm) solid\n var(--mer-color__tinted-primary--50);\n border-radius: 50%;\n background-color: var(--mer-color__tinted-primary--10);\n margin-inline-end: var(--mer-spacing--sm);\n position: absolute;\n inset-inline-start: 0;\n inset-block-start: 6px;\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 <li class=\"slide__list-item\">{item}</li>;\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?: string[];\n};\n\nexport type CloseCallback = () => Promise<void>;\nexport type TransitionType = \"static\" | \"auto\";\n"],"mappings":"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"}
@@ -1,56 +0,0 @@
1
- // formSubmitValidation will be deprecated. use "validateControls" instead.
2
- const formSubmitValidation = (o, c) => {
3
- var e;
4
- (e = o.fieldErrors) === null || e === void 0 ? void 0 : e.forEach((o => {
5
- const e = o.key;
6
- const n = o.message;
7
- const r = o.hasError;
8
- const t = c[`${e}El`];
9
- if (t && r && n.trim()) {
10
- t.validationStatus = "error";
11
- t.validationMessage = n;
12
- } else if (t && !r) {
13
- t.validationStatus = "indeterminate";
14
- t.validationMessage = null;
15
- }
16
- }));
17
- };
18
-
19
- // TODO: Improve the way we mark components with error. We must not use error classes.
20
- const o = {
21
- "ch-checkbox": "checkbox-error",
22
- "ch-combo-box-render": "combo-box-error",
23
- "ch-edit": "input-error"
24
- };
25
-
26
- const toggleErrorClass = (c, e) => {
27
- const n = e.tagName.toLowerCase();
28
- const r = o[n];
29
- if (c) {
30
- e.classList.add(r);
31
- } else {
32
- e.classList.remove(r);
33
- }
34
- };
35
-
36
- const validateControls = (o, c) => {
37
- const e = new Map(c);
38
- o.fieldErrors.forEach((o => {
39
- const c = o.key;
40
- const n = o.hasError;
41
- const r = e.get(c);
42
- if (r === null || r === void 0 ? void 0 : r.reference) {
43
- // toggle class to add or remove error style
44
- toggleErrorClass(n, r.reference);
45
- e.set(c, Object.assign(Object.assign({}, r), {
46
- hasError: n,
47
- message: o.message
48
- }));
49
- }
50
- }));
51
- // return validatableControls updated.
52
- return e;
53
- };
54
-
55
- export { formSubmitValidation as f, validateControls as v };
56
- //# sourceMappingURL=p-b8624c0b.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["formSubmitValidation","result","ref","_a","fieldErrors","forEach","element","key","message","hasError","reference","trim","validationStatus","validationMessage","formElementsErrorClassesDictionary","toggleErrorClass","elementTagName","tagName","toLowerCase","errorClass","classList","add","remove","validateControls","formSubmitResult","validatableControls","validatableControlsUpdated","Map","fieldResult","fieldKey","fieldHasError","controlMapRecord","get","set","Object","assign"],"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":";MAIaA,uBAAuB,CAClCC,GACAC;;GAEAC,IAAAF,EAAOG,iBAAW,QAAAD,WAAA,aAAAA,EAAEE,SAAQC;IAC1B,MAAMC,IAAMD,EAAQC;IACpB,MAAMC,IAAUF,EAAQE;IACxB,MAAMC,IAAWH,EAAQG;IAEzB,MAAMC,IAA2BR,EAAI,GAAGK;IACxC,IAAIG,KAAaD,KAAYD,EAAQG,QAAQ;MAC3CD,EAAUE,mBAAmB;MAC7BF,EAAUG,oBAAoBL;WACzB,IAAIE,MAAcD,GAAU;MACjCC,EAAUE,mBAAmB;MAC7BF,EAAUG,oBAAoB;;;AAEhC;;sFAIJ;MAAMC,IAAqC;EACzC,eAAe;EACf,uBAAuB;EACvB,WAAW;;;AAGb,MAAMC,mBAAmB,CAACN,GAAmBH;EAC3C,MAAMU,IAAiBV,EAAQW,QAAQC;EACvC,MAAMC,IACJL,EACEE;EAEJ,IAAIP,GAAU;IACZH,EAAQc,UAAUC,IAAIF;SACjB;IACLb,EAAQc,UAAUE,OAAOH;;;;MAIhBI,mBAAmB,CAC9BC,GACAC;EAEA,MAAMC,IAA6B,IAAIC,IAAIF;EAC3CD,EAAiBpB,YAAYC,SAAQuB;IACnC,MAAMC,IAAWD,EAAYrB;IAC7B,MAAMuB,IAAgBF,EAAYnB;IAClC,MAAMsB,IAAmBL,EAA2BM,IAAIH;IACxD,IAAIE,MAAgB,QAAhBA,WAAgB,aAAhBA,EAAkBrB,WAAW;;MAE/BK,iBAAiBe,GAAeC,EAAiBrB;MACjDgB,EAA2BO,IAAIJ,GAAQK,OAAAC,OAAAD,OAAAC,OAAA,IAClCJ,IAAgB;QACnBtB,UAAUqB;QACVtB,SAASoB,EAAYpB;;;;;IAK3B,OAAOkB;AAA0B"}