@genexus/genexus-ide-ui 1.0.19 → 1.0.21

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 (230) hide show
  1. package/dist/cjs/{form-validation-df39cabb.js → form-validation-0019e158.js} +2 -2
  2. package/dist/cjs/form-validation-0019e158.js.map +1 -0
  3. package/dist/cjs/genexus-ide-ui.cjs.js +1 -1
  4. package/dist/cjs/gx-ide-ai-message.cjs.entry.js +1 -1
  5. package/dist/cjs/gx-ide-connect-gx-server.cjs.entry.js +1 -1
  6. package/dist/cjs/gx-ide-create-kb-from-server.cjs.entry.js +1 -1
  7. package/dist/cjs/gx-ide-dashboard-home.cjs.entry.js +1 -1
  8. package/dist/cjs/{gx-ide-empty-state_2.cjs.entry.js → gx-ide-empty-state.cjs.entry.js} +3 -56
  9. package/dist/cjs/gx-ide-empty-state.cjs.entry.js.map +1 -0
  10. package/dist/cjs/gx-ide-kb-manager-import.cjs.entry.js +1 -1
  11. package/dist/cjs/gx-ide-loader.cjs.entry.js +61 -0
  12. package/dist/cjs/gx-ide-loader.cjs.entry.js.map +1 -0
  13. package/dist/cjs/gx-ide-new-environment.cjs.entry.js +2 -2
  14. package/dist/cjs/gx-ide-new-kb.cjs.entry.js +2 -2
  15. package/dist/cjs/gx-ide-object-selector.cjs.entry.js +1 -1
  16. package/dist/cjs/gx-ide-share-kb.cjs.entry.js +1 -1
  17. package/dist/cjs/gx-ide-splash.cjs.entry.js +76 -0
  18. package/dist/cjs/gx-ide-splash.cjs.entry.js.map +1 -0
  19. package/dist/cjs/gx-ide-start-page.cjs.entry.js +2644 -104
  20. package/dist/cjs/gx-ide-start-page.cjs.entry.js.map +1 -1
  21. package/dist/cjs/gx-ide-team-dev-commit.cjs.entry.js +1 -1
  22. package/dist/cjs/gx-ide-team-dev-update.cjs.entry.js +1 -1
  23. package/dist/cjs/gx-ide-welcome-page.cjs.entry.js +257 -0
  24. package/dist/cjs/gx-ide-welcome-page.cjs.entry.js.map +1 -0
  25. package/dist/cjs/gx-ide-ww-images.cjs.entry.js +279 -396
  26. package/dist/cjs/gx-ide-ww-images.cjs.entry.js.map +1 -1
  27. package/dist/cjs/{helpers-19194a5a.js → helpers-b5b4a659.js} +7 -1
  28. package/dist/cjs/helpers-b5b4a659.js.map +1 -0
  29. package/dist/cjs/loader.cjs.js +1 -1
  30. package/dist/collection/collection-manifest.json +3 -2
  31. package/dist/collection/common/form-validation.js +1 -1
  32. package/dist/collection/common/form-validation.js.map +1 -1
  33. package/dist/collection/components/_helpers/ide-loader/ide-loader.css +4 -1
  34. package/dist/collection/components/_helpers/ide-loader/ide-loader.js +2 -2
  35. package/dist/collection/components/_helpers/ide-loader/ide-loader.js.map +1 -1
  36. package/dist/collection/components/splash/gx-ide-assets/splash/images/copyrights-illustration.png +0 -0
  37. package/dist/collection/components/splash/gx-ide-assets/splash/images/icon-next.svg +4 -0
  38. package/dist/collection/components/splash/gx-ide-assets/splash/langs/splash.lang.en.json +14 -0
  39. package/dist/collection/components/splash/gx-ide-assets/splash/langs/splash.lang.ja.json +13 -0
  40. package/dist/collection/components/splash/gx-ide-assets/splash/langs/splash.lang.zh.json +13 -0
  41. package/dist/collection/components/splash/splash.css +56 -0
  42. package/dist/collection/components/splash/splash.js +125 -0
  43. package/dist/collection/components/splash/splash.js.map +1 -0
  44. package/dist/collection/components/start-page/gx-ide-assets/start-page/langs/start-page.lang.en.json +19 -27
  45. package/dist/collection/components/start-page/gx-ide-assets/start-page/langs/start-page.lang.ja.json +18 -26
  46. package/dist/collection/components/start-page/gx-ide-assets/start-page/langs/start-page.lang.zh.json +23 -1
  47. package/dist/collection/components/start-page/start-page.css +142 -624
  48. package/dist/collection/components/start-page/start-page.js +198 -181
  49. package/dist/collection/components/start-page/start-page.js.map +1 -1
  50. package/dist/collection/components/welcome-page/gx-ide-assets/welcome-page/images/arrow-next.svg +3 -0
  51. package/dist/collection/components/welcome-page/gx-ide-assets/welcome-page/images/copyrights-base.svg +61 -0
  52. package/dist/collection/components/welcome-page/gx-ide-assets/welcome-page/images/copyrights-illustration.png +0 -0
  53. package/dist/collection/components/welcome-page/gx-ide-assets/welcome-page/images/fig-ellipse-blurred.svg +21 -0
  54. package/dist/collection/components/welcome-page/gx-ide-assets/welcome-page/images/fig-ellipse-bottom-left.svg +14 -0
  55. package/dist/collection/components/welcome-page/gx-ide-assets/welcome-page/images/fig-ellipse-top-left.svg +14 -0
  56. package/dist/collection/components/welcome-page/gx-ide-assets/welcome-page/images/fig-polygon.svg +14 -0
  57. package/dist/collection/components/welcome-page/gx-ide-assets/welcome-page/images/icon-next.svg +4 -0
  58. package/dist/collection/components/welcome-page/gx-ide-assets/welcome-page/images/slide-1.svg +115 -0
  59. package/dist/collection/components/welcome-page/gx-ide-assets/welcome-page/images/slide-2.svg +67 -0
  60. package/dist/collection/components/welcome-page/gx-ide-assets/welcome-page/images/slide-3.svg +138 -0
  61. package/dist/collection/components/welcome-page/gx-ide-assets/welcome-page/images/slide-4.svg +97 -0
  62. package/dist/collection/components/welcome-page/gx-ide-assets/welcome-page/images/slide-5.svg +83 -0
  63. package/dist/collection/components/welcome-page/gx-ide-assets/welcome-page/langs/welcome-page.lang.en.json +13 -0
  64. package/dist/collection/components/welcome-page/gx-ide-assets/welcome-page/langs/welcome-page.lang.ja.json +13 -0
  65. package/dist/collection/components/welcome-page/gx-ide-assets/welcome-page/langs/welcome-page.lang.zh.json +13 -0
  66. package/dist/collection/components/welcome-page/welcome-page.css +264 -0
  67. package/dist/collection/components/welcome-page/welcome-page.js +360 -0
  68. package/dist/collection/components/welcome-page/welcome-page.js.map +1 -0
  69. package/dist/collection/components/ww-images/gx-ide-assets/ww-images/langs/ww-images.lang.en.json +3 -7
  70. package/dist/collection/components/ww-images/gx-ide-assets/ww-images/langs/ww-images.lang.ja.json +4 -8
  71. package/dist/collection/components/ww-images/ww-images.css +733 -80
  72. package/dist/collection/components/ww-images/ww-images.js +413 -465
  73. package/dist/collection/components/ww-images/ww-images.js.map +1 -1
  74. package/dist/collection/pages/assets/images/welcome-page/slide-1.svg +115 -0
  75. package/dist/collection/pages/assets/images/welcome-page/slide-2.svg +67 -0
  76. package/dist/collection/pages/assets/images/welcome-page/slide-3.svg +138 -0
  77. package/dist/collection/pages/assets/images/welcome-page/slide-4.svg +97 -0
  78. package/dist/collection/pages/assets/images/welcome-page/slide-5.svg +83 -0
  79. package/dist/components/form-validation.js +1 -1
  80. package/dist/components/form-validation.js.map +1 -1
  81. package/dist/components/{gx-ide-recent-news.d.ts → gx-ide-splash.d.ts} +4 -4
  82. package/dist/components/gx-ide-splash.js +96 -0
  83. package/dist/components/gx-ide-splash.js.map +1 -0
  84. package/dist/components/gx-ide-start-page.js +2654 -126
  85. package/dist/components/gx-ide-start-page.js.map +1 -1
  86. package/dist/components/gx-ide-welcome-page.d.ts +11 -0
  87. package/dist/components/gx-ide-welcome-page.js +283 -0
  88. package/dist/components/gx-ide-welcome-page.js.map +1 -0
  89. package/dist/components/gx-ide-ww-images.js +306 -419
  90. package/dist/components/gx-ide-ww-images.js.map +1 -1
  91. package/dist/components/helpers.js +6 -1
  92. package/dist/components/helpers.js.map +1 -1
  93. package/dist/components/ide-loader.js +3 -3
  94. package/dist/components/ide-loader.js.map +1 -1
  95. package/dist/esm/{form-validation-8b3f527c.js → form-validation-44b2c2a8.js} +2 -2
  96. package/dist/esm/form-validation-44b2c2a8.js.map +1 -0
  97. package/dist/esm/genexus-ide-ui.js +1 -1
  98. package/dist/esm/gx-ide-ai-message.entry.js +1 -1
  99. package/dist/esm/gx-ide-connect-gx-server.entry.js +1 -1
  100. package/dist/esm/gx-ide-create-kb-from-server.entry.js +1 -1
  101. package/dist/esm/gx-ide-dashboard-home.entry.js +1 -1
  102. package/dist/esm/{gx-ide-empty-state_2.entry.js → gx-ide-empty-state.entry.js} +5 -57
  103. package/dist/esm/gx-ide-empty-state.entry.js.map +1 -0
  104. package/dist/esm/gx-ide-kb-manager-import.entry.js +1 -1
  105. package/dist/esm/gx-ide-loader.entry.js +57 -0
  106. package/dist/esm/gx-ide-loader.entry.js.map +1 -0
  107. package/dist/esm/gx-ide-new-environment.entry.js +2 -2
  108. package/dist/esm/gx-ide-new-kb.entry.js +2 -2
  109. package/dist/esm/gx-ide-object-selector.entry.js +1 -1
  110. package/dist/esm/gx-ide-share-kb.entry.js +1 -1
  111. package/dist/esm/gx-ide-splash.entry.js +72 -0
  112. package/dist/esm/gx-ide-splash.entry.js.map +1 -0
  113. package/dist/esm/gx-ide-start-page.entry.js +2644 -104
  114. package/dist/esm/gx-ide-start-page.entry.js.map +1 -1
  115. package/dist/esm/gx-ide-team-dev-commit.entry.js +1 -1
  116. package/dist/esm/gx-ide-team-dev-update.entry.js +1 -1
  117. package/dist/esm/gx-ide-welcome-page.entry.js +253 -0
  118. package/dist/esm/gx-ide-welcome-page.entry.js.map +1 -0
  119. package/dist/esm/gx-ide-ww-images.entry.js +279 -396
  120. package/dist/esm/gx-ide-ww-images.entry.js.map +1 -1
  121. package/dist/esm/{helpers-9ee6ddce.js → helpers-64e1dd0b.js} +7 -2
  122. package/dist/esm/helpers-64e1dd0b.js.map +1 -0
  123. package/dist/esm/loader.js +1 -1
  124. package/dist/genexus-ide-ui/genexus-ide-ui.esm.js +1 -1
  125. package/dist/genexus-ide-ui/genexus-ide-ui.esm.js.map +1 -1
  126. package/dist/genexus-ide-ui/gx-ide-assets/splash/images/copyrights-illustration.png +0 -0
  127. package/dist/genexus-ide-ui/gx-ide-assets/splash/images/icon-next.svg +4 -0
  128. package/dist/genexus-ide-ui/gx-ide-assets/splash/langs/splash.lang.en.json +14 -0
  129. package/dist/genexus-ide-ui/gx-ide-assets/splash/langs/splash.lang.ja.json +13 -0
  130. package/dist/genexus-ide-ui/gx-ide-assets/splash/langs/splash.lang.zh.json +13 -0
  131. package/dist/genexus-ide-ui/gx-ide-assets/start-page/langs/start-page.lang.en.json +19 -27
  132. package/dist/genexus-ide-ui/gx-ide-assets/start-page/langs/start-page.lang.ja.json +18 -26
  133. package/dist/genexus-ide-ui/gx-ide-assets/start-page/langs/start-page.lang.zh.json +23 -1
  134. package/dist/genexus-ide-ui/gx-ide-assets/welcome-page/images/arrow-next.svg +3 -0
  135. package/dist/genexus-ide-ui/gx-ide-assets/welcome-page/images/copyrights-base.svg +61 -0
  136. package/dist/genexus-ide-ui/gx-ide-assets/welcome-page/images/copyrights-illustration.png +0 -0
  137. package/dist/genexus-ide-ui/gx-ide-assets/welcome-page/images/fig-ellipse-blurred.svg +21 -0
  138. package/dist/genexus-ide-ui/gx-ide-assets/welcome-page/images/fig-ellipse-bottom-left.svg +14 -0
  139. package/dist/genexus-ide-ui/gx-ide-assets/welcome-page/images/fig-ellipse-top-left.svg +14 -0
  140. package/dist/genexus-ide-ui/gx-ide-assets/welcome-page/images/fig-polygon.svg +14 -0
  141. package/dist/genexus-ide-ui/gx-ide-assets/welcome-page/images/icon-next.svg +4 -0
  142. package/dist/genexus-ide-ui/gx-ide-assets/welcome-page/images/slide-1.svg +115 -0
  143. package/dist/genexus-ide-ui/gx-ide-assets/welcome-page/images/slide-2.svg +67 -0
  144. package/dist/genexus-ide-ui/gx-ide-assets/welcome-page/images/slide-3.svg +138 -0
  145. package/dist/genexus-ide-ui/gx-ide-assets/welcome-page/images/slide-4.svg +97 -0
  146. package/dist/genexus-ide-ui/gx-ide-assets/welcome-page/images/slide-5.svg +83 -0
  147. package/dist/genexus-ide-ui/gx-ide-assets/welcome-page/langs/welcome-page.lang.en.json +13 -0
  148. package/dist/genexus-ide-ui/gx-ide-assets/welcome-page/langs/welcome-page.lang.ja.json +13 -0
  149. package/dist/genexus-ide-ui/gx-ide-assets/welcome-page/langs/welcome-page.lang.zh.json +13 -0
  150. package/dist/genexus-ide-ui/gx-ide-assets/ww-images/langs/ww-images.lang.en.json +3 -7
  151. package/dist/genexus-ide-ui/gx-ide-assets/ww-images/langs/ww-images.lang.ja.json +4 -8
  152. package/dist/genexus-ide-ui/{p-d5d0ed5e.entry.js → p-02bc66c1.entry.js} +2 -2
  153. package/dist/genexus-ide-ui/p-120d283a.entry.js +2419 -0
  154. package/dist/genexus-ide-ui/p-120d283a.entry.js.map +1 -0
  155. package/dist/genexus-ide-ui/{p-c4d1d0ce.entry.js → p-39792ac8.entry.js} +2 -2
  156. package/dist/genexus-ide-ui/{p-c36effd2.entry.js → p-4a0dab98.entry.js} +3 -3
  157. package/dist/genexus-ide-ui/{p-acf0cbac.entry.js → p-4ce47bcd.entry.js} +2 -2
  158. package/dist/genexus-ide-ui/{p-fc64d088.entry.js → p-58e13823.entry.js} +2 -2
  159. package/dist/genexus-ide-ui/p-62f4ad99.entry.js +612 -0
  160. package/dist/genexus-ide-ui/p-62f4ad99.entry.js.map +1 -0
  161. package/dist/genexus-ide-ui/{p-98b5b178.entry.js → p-658755d5.entry.js} +18 -87
  162. package/dist/genexus-ide-ui/p-658755d5.entry.js.map +1 -0
  163. package/dist/genexus-ide-ui/{p-278afab1.entry.js → p-6abe5291.entry.js} +2 -2
  164. package/dist/genexus-ide-ui/p-7a2d3f1c.entry.js +304 -0
  165. package/dist/genexus-ide-ui/p-7a2d3f1c.entry.js.map +1 -0
  166. package/dist/genexus-ide-ui/p-7ec19ed6.entry.js +73 -0
  167. package/dist/genexus-ide-ui/p-7ec19ed6.entry.js.map +1 -0
  168. package/dist/genexus-ide-ui/{p-4ce0a85e.entry.js → p-ac670f62.entry.js} +2 -2
  169. package/dist/genexus-ide-ui/{p-41ea711a.js → p-b8624c0b.js} +2 -2
  170. package/dist/genexus-ide-ui/p-b8624c0b.js.map +1 -0
  171. package/dist/genexus-ide-ui/{p-066028bc.js → p-c339f703.js} +14 -8
  172. package/dist/{cjs/helpers-19194a5a.js.map → genexus-ide-ui/p-c339f703.js.map} +1 -1
  173. package/dist/genexus-ide-ui/p-c8b4f34c.entry.js +113 -0
  174. package/dist/genexus-ide-ui/p-c8b4f34c.entry.js.map +1 -0
  175. package/dist/genexus-ide-ui/{p-b785673d.entry.js → p-ca8b0024.entry.js} +2 -2
  176. package/dist/genexus-ide-ui/{p-b1f6fdd6.entry.js → p-cf2c8b3c.entry.js} +2 -2
  177. package/dist/genexus-ide-ui/{p-44d779c9.entry.js → p-e8975ac0.entry.js} +2 -2
  178. package/dist/genexus-ide-ui/{p-352d4aad.entry.js → p-f1558097.entry.js} +3 -3
  179. package/dist/types/components/splash/splash.d.ts +20 -0
  180. package/dist/types/components/start-page/start-page.d.ts +31 -53
  181. package/dist/types/components/welcome-page/welcome-page.d.ts +63 -0
  182. package/dist/types/components/ww-images/ww-images.d.ts +118 -98
  183. package/dist/types/components.d.ts +156 -99
  184. package/package.json +6 -3
  185. package/dist/cjs/form-validation-df39cabb.js.map +0 -1
  186. package/dist/cjs/gx-ide-empty-state_2.cjs.entry.js.map +0 -1
  187. package/dist/cjs/gx-ide-recent-news.cjs.entry.js +0 -163
  188. package/dist/cjs/gx-ide-recent-news.cjs.entry.js.map +0 -1
  189. package/dist/collection/components/start-page/gx-ide-assets/recent-news/langs/recent-news.lang.en.json +0 -24
  190. package/dist/collection/components/start-page/gx-ide-assets/recent-news/langs/recent-news.lang.ja.json +0 -24
  191. package/dist/collection/components/start-page/gx-ide-assets/recent-news/langs/recent-news.lang.zh.json +0 -3
  192. package/dist/collection/components/start-page/recent-news.css +0 -641
  193. package/dist/collection/components/start-page/recent-news.js +0 -240
  194. package/dist/collection/components/start-page/recent-news.js.map +0 -1
  195. package/dist/collection/components/ww-images/helpers.js +0 -11
  196. package/dist/collection/components/ww-images/helpers.js.map +0 -1
  197. package/dist/components/gx-ide-recent-news.js +0 -8
  198. package/dist/components/gx-ide-recent-news.js.map +0 -1
  199. package/dist/components/recent-news.js +0 -197
  200. package/dist/components/recent-news.js.map +0 -1
  201. package/dist/esm/form-validation-8b3f527c.js.map +0 -1
  202. package/dist/esm/gx-ide-empty-state_2.entry.js.map +0 -1
  203. package/dist/esm/gx-ide-recent-news.entry.js +0 -159
  204. package/dist/esm/gx-ide-recent-news.entry.js.map +0 -1
  205. package/dist/esm/helpers-9ee6ddce.js.map +0 -1
  206. package/dist/genexus-ide-ui/gx-ide-assets/recent-news/langs/recent-news.lang.en.json +0 -24
  207. package/dist/genexus-ide-ui/gx-ide-assets/recent-news/langs/recent-news.lang.ja.json +0 -24
  208. package/dist/genexus-ide-ui/gx-ide-assets/recent-news/langs/recent-news.lang.zh.json +0 -3
  209. package/dist/genexus-ide-ui/p-0576a392.entry.js +0 -233
  210. package/dist/genexus-ide-ui/p-0576a392.entry.js.map +0 -1
  211. package/dist/genexus-ide-ui/p-066028bc.js.map +0 -1
  212. package/dist/genexus-ide-ui/p-20389960.entry.js +0 -211
  213. package/dist/genexus-ide-ui/p-20389960.entry.js.map +0 -1
  214. package/dist/genexus-ide-ui/p-41ea711a.js.map +0 -1
  215. package/dist/genexus-ide-ui/p-62efd8f2.entry.js +0 -712
  216. package/dist/genexus-ide-ui/p-62efd8f2.entry.js.map +0 -1
  217. package/dist/genexus-ide-ui/p-98b5b178.entry.js.map +0 -1
  218. package/dist/types/components/start-page/recent-news.d.ts +0 -43
  219. package/dist/types/components/ww-images/helpers.d.ts +0 -3
  220. /package/dist/genexus-ide-ui/{p-d5d0ed5e.entry.js.map → p-02bc66c1.entry.js.map} +0 -0
  221. /package/dist/genexus-ide-ui/{p-c4d1d0ce.entry.js.map → p-39792ac8.entry.js.map} +0 -0
  222. /package/dist/genexus-ide-ui/{p-c36effd2.entry.js.map → p-4a0dab98.entry.js.map} +0 -0
  223. /package/dist/genexus-ide-ui/{p-acf0cbac.entry.js.map → p-4ce47bcd.entry.js.map} +0 -0
  224. /package/dist/genexus-ide-ui/{p-fc64d088.entry.js.map → p-58e13823.entry.js.map} +0 -0
  225. /package/dist/genexus-ide-ui/{p-278afab1.entry.js.map → p-6abe5291.entry.js.map} +0 -0
  226. /package/dist/genexus-ide-ui/{p-4ce0a85e.entry.js.map → p-ac670f62.entry.js.map} +0 -0
  227. /package/dist/genexus-ide-ui/{p-b785673d.entry.js.map → p-ca8b0024.entry.js.map} +0 -0
  228. /package/dist/genexus-ide-ui/{p-b1f6fdd6.entry.js.map → p-cf2c8b3c.entry.js.map} +0 -0
  229. /package/dist/genexus-ide-ui/{p-44d779c9.entry.js.map → p-e8975ac0.entry.js.map} +0 -0
  230. /package/dist/genexus-ide-ui/{p-352d4aad.entry.js.map → p-f1558097.entry.js.map} +0 -0
@@ -0,0 +1,304 @@
1
+ import { a as e, r as i, h as t, H as s, g as r } from "./p-aaed592c.js";
2
+
3
+ import { g as a } from "./p-0b0ce806.js";
4
+
5
+ import { L as o } from "./p-74d59062.js";
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}';
8
+
9
+ var l = undefined && undefined.__classPrivateFieldGet || function(e, i, t, s) {
10
+ if (t === "a" && !s) throw new TypeError("Private accessor was defined without a getter");
11
+ if (typeof i === "function" ? e !== i || !s : !i.has(e)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
12
+ return t === "m" ? s : t === "a" ? s.call(e) : s ? s.value : i.get(e);
13
+ };
14
+
15
+ var d = undefined && undefined.__classPrivateFieldSet || function(e, i, t, s, r) {
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;
20
+ };
21
+
22
+ var c, p, h, m, f, _, g, u, v, y, w, b, k, x, z, M, W;
23
+
24
+ const T = "active";
25
+
26
+ const j = "ArrowLeft";
27
+
28
+ const C = "ArrowRight";
29
+
30
+ const E = "Escape";
31
+
32
+ const L = 300;
33
+
34
+ const P = ".slide__word";
35
+
36
+ const R = 70;
37
+
38
+ const S = "slide__word--visible";
39
+
40
+ // icons
41
+ const A = e(`./gx-ide-assets/welcome-page/images/icon-next.svg`);
42
+
43
+ const B = a({
44
+ category: "system",
45
+ name: "close",
46
+ colorType: "on-elevation"
47
+ });
48
+
49
+ const D = [ "resets/box-sizing", "utils/typography", "components/icon", "components/button" ];
50
+
51
+ const I = class {
52
+ constructor(e) {
53
+ i(this, e);
54
+ /**
55
+ * The component hard-coded strings translations.
56
+ */
57
+ // eslint-disable-next-line @stencil-community/own-props-must-be-private
58
+ c.set(this, void 0);
59
+ p.set(this, new Map);
60
+ h.set(this, []);
61
+ m.set(this, []);
62
+ // #slidesDescriptionAsChunksAlreadyDisplayed is used to know if the description of a slide
63
+ // that is set to be displayed as chunks, has already been displayed. Used to not display
64
+ // as chunks after the first time.
65
+ f.set(this, void 0);
66
+ _.set(this, (() => {
67
+ this.sliderVisible = false;
68
+ setTimeout((() => {
69
+ // wait until the slide disappears, then remove.
70
+ this.el.remove();
71
+ this.closeCallback();
72
+ document.removeEventListener("keydown", l(this, y, "f"));
73
+ }), L);
74
+ }));
75
+ g.set(this, (() => {
76
+ l(this, k, "f").call(this);
77
+ // listen to keydown events to navigate the slides with the arrows
78
+ document.addEventListener("keydown", l(this, y, "f"));
79
+ }));
80
+ u.set(this, (e => {
81
+ e.forEach(((e, i) => {
82
+ setTimeout((() => {
83
+ e.classList.add(S);
84
+ }), i * R);
85
+ }));
86
+ }));
87
+ v.set(this, (e => {
88
+ this.userHasChangedSlide = true;
89
+ const i = e.currentTarget;
90
+ const t = parseInt(i.getAttribute("data-index"), 10);
91
+ l(this, W, "f").call(this, t);
92
+ }));
93
+ y.set(this, (e => {
94
+ this.userHasChangedSlide = true;
95
+ const i = e.key === j && !this.slideTransitioning && !this.lastSlideReached && this.activeSlideIndex !== 0;
96
+ const t = e.key === C && !this.slideTransitioning && !this.lastSlideReached;
97
+ const s = e.key === E || e.key === C && !this.slideTransitioning && this.lastSlideReached;
98
+ if (t) {
99
+ l(this, w, "f").call(this);
100
+ } else if (i) {
101
+ l(this, b, "f").call(this);
102
+ } else if (s) {
103
+ l(this, _, "f").call(this);
104
+ }
105
+ }));
106
+ w.set(this, (() => {
107
+ const e = this.activeSlideIndex + 1;
108
+ l(this, W, "f").call(this, e);
109
+ }));
110
+ b.set(this, (() => {
111
+ const e = this.activeSlideIndex - 1;
112
+ l(this, W, "f").call(this, e);
113
+ }));
114
+ k.set(this, (() => {
115
+ // Clear any existing timeout
116
+ if (l(this, f, "f")) {
117
+ clearTimeout(l(this, f, "f"));
118
+ }
119
+ const e = this.transitionType === "auto" && !this.lastSlideReached && !this.userHasChangedSlide;
120
+ if (!e) {
121
+ return;
122
+ }
123
+ const i = this.slides[this.activeSlideIndex].description.join("");
124
+ const t = i.split(" ").length;
125
+ const s = l(this, x, "f").call(this, t);
126
+ // Set a fresh timeout
127
+ if (s) {
128
+ d(this, f, setTimeout((() => {
129
+ l(this, w, "f").call(this);
130
+ }), s), "f");
131
+ }
132
+ }));
133
+ x.set(this, ((e, i = this.wordsPerMinute) => {
134
+ const t = e / i;
135
+ const s = t * 6e4;
136
+ // Convert minutes to milliseconds
137
+ return s;
138
+ }));
139
+ z.set(this, (() => {
140
+ d(this, h, this.slides.map(((e, i) => {
141
+ var s, r;
142
+ const a = i === this.slides.length - 1;
143
+ return t("section", {
144
+ class: "slide__wrapper",
145
+ ref: e => l(this, m, "f")[i] = e
146
+ }, t("div", {
147
+ class: "slide__illustration",
148
+ role: "img",
149
+ "aria-label": l(this, c, "f").copyright.illustrationAriaLabel
150
+ }, t("img", {
151
+ class: "slide__illustration-img",
152
+ src: e.illustration.url,
153
+ alt: e.illustration.alt
154
+ })), t("section", {
155
+ class: "slide__copy"
156
+ }, t("div", {
157
+ class: "slide__copy-container"
158
+ }, t("header", {
159
+ class: "slide__copy-header"
160
+ }, t("img", {
161
+ src: A,
162
+ alt: "GeneXus Next isologotype"
163
+ }), t("h2", {
164
+ class: "slide__copy-title"
165
+ }, e.title)), t("div", {
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", {
168
+ class: "slide__list"
169
+ }, e.listItems.map((e => t("li", {
170
+ class: "slide__list-item"
171
+ }, e))))), a && t("button", {
172
+ class: "button-primary start-button",
173
+ onClick: l(this, _, "f")
174
+ }, l(this, c, "f").startButtonCaption))));
175
+ })), "f");
176
+ }));
177
+ M.set(this, (e => e.split(" ").map((e => t("span", {
178
+ class: "slide__word"
179
+ }, e, " ")))));
180
+ W.set(this, (e => {
181
+ if (this.lastSlideReached) {
182
+ return;
183
+ }
184
+ this.slideTransitioning = true;
185
+ // unset current active slide
186
+ const i = l(this, m, "f")[this.activeSlideIndex];
187
+ i.classList.remove(T);
188
+ const t = l(this, m, "f")[e];
189
+ const s = this.slides[e].descriptionAsChunks;
190
+ const r = l(this, p, "f").get(e);
191
+ let a;
192
+ let o;
193
+ let n = 0;
194
+ if (s) {
195
+ o = t.querySelectorAll(P);
196
+ a = o.length;
197
+ n = a * R;
198
+ }
199
+ this.lastSlideReached = e === this.slides.length - 1;
200
+ // set new slide as active after fade out
201
+ setTimeout((() => {
202
+ t.classList.add(T);
203
+ if (s && !r) {
204
+ l(this, p, "f").set(e, true);
205
+ l(this, u, "f").call(this, o);
206
+ setTimeout((() => {
207
+ this.slideTransitioning = false;
208
+ }), n);
209
+ } else {
210
+ this.slideTransitioning = false;
211
+ }
212
+ }), L);
213
+ // update active slide index
214
+ this.activeSlideIndex = e;
215
+ l(this, k, "f").call(this);
216
+ // this has to be after this.#updateActiveSlide.
217
+ }));
218
+ this.activeSlideIndex = 0;
219
+ this.displaySlider = false;
220
+ this.copyrightsVisible = true;
221
+ this.lastSlideReached = false;
222
+ this.sliderVisible = false;
223
+ this.slideTransitioning = false;
224
+ this.userHasChangedSlide = false;
225
+ this.transitionType = "auto";
226
+ this.wordsPerMinute = 250;
227
+ this.closeCallback = undefined;
228
+ this.slides = [];
229
+ }
230
+ async componentWillLoad() {
231
+ d(this, c, await o.getComponentStrings(this.el), "f");
232
+ l(this, z, "f").call(this);
233
+ }
234
+ componentDidLoad() {
235
+ l(this, m, "f")[this.activeSlideIndex].classList.add(T);
236
+ this.sliderVisible = true;
237
+ l(this, g, "f").call(this);
238
+ }
239
+ render() {
240
+ return t(s, null, t("ch-theme", {
241
+ model: D
242
+ }), t("div", {
243
+ class: {
244
+ main: true,
245
+ "main--visible": this.sliderVisible,
246
+ "main--border-glow": this.lastSlideReached
247
+ },
248
+ style: {
249
+ "--slide-fade-duration": `${L}ms`
250
+ }
251
+ }, t("section", {
252
+ class: "slide"
253
+ }, t("header", {
254
+ class: "slide__header"
255
+ }, t("button", {
256
+ class: "button-tertiary button-icon-only close-icon",
257
+ "aria-label": "close presentation",
258
+ onClick: l(this, _, "f")
259
+ }, t("ch-image", {
260
+ class: "icon-md",
261
+ src: B
262
+ }))), t("div", {
263
+ class: "slide__container"
264
+ }, l(this, h, "f")), t("footer", {
265
+ // slide common footer
266
+ class: {
267
+ slide__footer: true,
268
+ "slide__footer-last-slide": this.lastSlideReached
269
+ }
270
+ }, t("div", {
271
+ class: {
272
+ "slide__footer-wrapper": true,
273
+ "slide__footer-wrapper-hidden": this.lastSlideReached
274
+ }
275
+ }, t("ul", {
276
+ class: "slide__dots",
277
+ "aria-label": "Slide indicators"
278
+ }, this.slides.map(((e, i) => t("li", {
279
+ class: {
280
+ slide__dot: true,
281
+ "slide__dot-inactive": this.slideTransitioning,
282
+ [T]: i === this.activeSlideIndex
283
+ },
284
+ "data-index": i,
285
+ onClick: !this.slideTransitioning && l(this, v, "f")
286
+ })))))))));
287
+ }
288
+ static get assetsDirs() {
289
+ return [ "gx-ide-assets/welcome-page" ];
290
+ }
291
+ get el() {
292
+ return r(this);
293
+ }
294
+ };
295
+
296
+ c = new WeakMap, p = new WeakMap, h = new WeakMap, m = new WeakMap, f = new WeakMap,
297
+ _ = new WeakMap, g = new WeakMap, u = new WeakMap, v = new WeakMap, y = new WeakMap,
298
+ w = new WeakMap, b = new WeakMap, k = new WeakMap, x = new WeakMap, z = new WeakMap,
299
+ M = new WeakMap, W = new WeakMap;
300
+
301
+ I.style = n;
302
+
303
+ export { I as gx_ide_welcome_page };
304
+ //# sourceMappingURL=p-7a2d3f1c.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 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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"}
@@ -0,0 +1,73 @@
1
+ import { r as e, c as r, h as a, H as i } from "./p-aaed592c.js";
2
+
3
+ const o = ".loader__wrapper{position:absolute;border:none;opacity:0;transition:var(--show-transition) opacity;inline-size:100%;block-size:100%;display:flex;background-color:var(--gxg-ide-loader-wrapper__background-color--from);backdrop-filter:var(--gxg-ide-loader-wrapper__backdrop-filter);padding:var(--gxg-ide-loader-wrapper__padding);flex-direction:column;align-items:center;justify-content:center;box-sizing:border-box;color:var(--gxg-ide-loader-wrapper__color);z-index:99;animation:fadeIn var(--mer-timing--fast) forwards}.loader__wrapper--visible{opacity:1}.loader__spinner{border:var(--gxg-ide-loader-spinner__border);border-block-start:var(--gxg-ide-loader-spinner__border-top);border-radius:50%;animation:spinner 0.6s infinite linear;inline-size:var(--gxg-ide-loader-spinner__width);block-size:var(--gxg-ide-loader-spinner__width);flex-shrink:0;opacity:1}.loader__content-wrapper{display:flex;text-align:center;flex-direction:column;margin-block-start:var(--gxg-ide-loader-content-wrapper__mbs);gap:var(--mer-spacing--xs);max-block-size:var(--gxg-ide-loader-content-wrapper__max-width);opacity:1}.loader__content-wrapper--hidden{display:none}.loader__cancel-button{margin-block-start:var(--mer-spacing--xs)}@keyframes wrapper{0%{background-color:var(--gxg-ide-loader-wrapper__background-color--from)}100%{background-color:var(--gxg-ide-loader-wrapper__background-color--to)}}@keyframes spinner{0%{transform:rotate(0deg)}100%{transform:rotate(359deg)}}:host([display-border]) .loader__wrapper{border:1px solid var(--mer-color__elevation--02)}@keyframes fadeIn{0%{opacity:0}}";
4
+
5
+ var t = undefined && undefined.__classPrivateFieldGet || function(e, r, a, i) {
6
+ if (a === "a" && !i) throw new TypeError("Private accessor was defined without a getter");
7
+ if (typeof r === "function" ? e !== r || !i : !r.has(e)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
8
+ return a === "m" ? i : a === "a" ? i.call(e) : i ? i.value : r.get(e);
9
+ };
10
+
11
+ var n, s, d, l, p;
12
+
13
+ const c = [ "resets/box-sizing", "components/button", "utils/typography" ];
14
+
15
+ const h = class {
16
+ constructor(i) {
17
+ e(this, i);
18
+ this.loaderFinished = r(this, "loaderFinished", 7);
19
+ n.set(this, void 0);
20
+ s.set(this, (() => {
21
+ if (this.cancelCallback) {
22
+ this.cancelCallback();
23
+ }
24
+ clearTimeout(t(this, n, "f"));
25
+ this.show = false;
26
+ }));
27
+ d.set(this, (() => this.cancelLabel && a("div", null, a("button", {
28
+ class: "button-secondary loader__cancel-button",
29
+ type: "button",
30
+ onClick: t(this, s, "f")
31
+ }, this.cancelLabel))));
32
+ l.set(this, (() => this.description && a("p", {
33
+ class: "text-body-italic-s"
34
+ }, this.description)));
35
+ p.set(this, (() => this.loaderTitle && a("p", {
36
+ class: "text-body-regular-l"
37
+ }, this.loaderTitle)));
38
+ this.showWrapper = true;
39
+ this.abortTime = 5 * 60 * 1e3;
40
+ this.cancelCallback = undefined;
41
+ this.cancelLabel = undefined;
42
+ this.description = undefined;
43
+ this.displayBorder = false;
44
+ this.loaderTitle = undefined;
45
+ this.show = false;
46
+ }
47
+ render() {
48
+ return a(i, null, a("ch-theme", {
49
+ model: c
50
+ }), this.show && a("div", {
51
+ class: {
52
+ [`loader__wrapper`]: true,
53
+ "loader__wrapper--visible": this.showWrapper
54
+ },
55
+ part: "loader-wrapper",
56
+ popover: ""
57
+ }, a("div", {
58
+ class: "loader__spinner"
59
+ }), a("div", {
60
+ class: {
61
+ "loader__content-wrapper": true,
62
+ "loader__content-wrapper--hidden": !this.description && !this.loaderTitle && !this.cancelLabel
63
+ }
64
+ }, t(this, p, "f").call(this), t(this, l, "f").call(this), t(this, d, "f").call(this))));
65
+ }
66
+ };
67
+
68
+ n = new WeakMap, s = new WeakMap, d = new WeakMap, l = new WeakMap, p = new WeakMap;
69
+
70
+ h.style = o;
71
+
72
+ export { h as gx_ide_loader };
73
+ //# sourceMappingURL=p-7ec19ed6.entry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["ideLoaderCss","CSS_BUNDLES","IdeLoader","_IdeLoader_timeoutReference","set","this","_IdeLoader_cancelProcess","cancelCallback","clearTimeout","__classPrivateFieldGet","show","_IdeLoader_renderCancelButton","cancelLabel","h","class","type","onClick","_IdeLoader_renderDescription","description","_IdeLoader_renderTitle","loaderTitle","render","Host","model","showWrapper","part","popover","call"],"sources":["src/components/_helpers/ide-loader/ide-loader.scss?tag=gx-ide-loader&encapsulation=shadow","src/components/_helpers/ide-loader/ide-loader.tsx"],"sourcesContent":[".loader {\n &__wrapper {\n position: absolute;\n border: none;\n opacity: 0;\n transition: var(--show-transition) opacity;\n inline-size: 100%;\n block-size: 100%;\n display: flex;\n background-color: var(--gxg-ide-loader-wrapper__background-color--from);\n backdrop-filter: var(--gxg-ide-loader-wrapper__backdrop-filter);\n padding: var(--gxg-ide-loader-wrapper__padding);\n flex-direction: column;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n color: var(--gxg-ide-loader-wrapper__color);\n z-index: 99; // WA to prevent tree-view chevron arrow to appear above.\n animation: fadeIn var(--mer-timing--fast) forwards;\n\n &--visible {\n opacity: 1;\n }\n }\n &__spinner {\n border: var(--gxg-ide-loader-spinner__border);\n border-block-start: var(--gxg-ide-loader-spinner__border-top);\n border-radius: 50%;\n animation: spinner 0.6s infinite linear;\n inline-size: var(--gxg-ide-loader-spinner__width);\n block-size: var(--gxg-ide-loader-spinner__width);\n flex-shrink: 0;\n opacity: 1;\n }\n\n &__content-wrapper {\n display: flex;\n text-align: center;\n flex-direction: column;\n margin-block-start: var(--gxg-ide-loader-content-wrapper__mbs);\n gap: var(--mer-spacing--xs);\n max-block-size: var(--gxg-ide-loader-content-wrapper__max-width);\n &--hidden {\n display: none;\n }\n opacity: 1;\n }\n\n &__cancel-button {\n margin-block-start: var(--mer-spacing--xs);\n }\n}\n\n/*background color animation*/\n@keyframes wrapper {\n 0% {\n background-color: var(--gxg-ide-loader-wrapper__background-color--from);\n }\n 100% {\n background-color: var(--gxg-ide-loader-wrapper__background-color--to);\n }\n}\n@keyframes spinner {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(359deg);\n }\n}\n\n:host([display-border]) {\n .loader {\n &__wrapper {\n border: 1px solid var(--mer-color__elevation--02);\n }\n }\n}\n\n@keyframes fadeIn {\n 0% {\n opacity: 0;\n }\n}\n","import {\n Component,\n Host,\n h,\n Prop,\n State,\n Event,\n EventEmitter\n} from \"@stencil/core\";\n\nimport { MercuryBundles } from \"@genexus/mercury\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"components/button\",\n \"utils/typography\"\n];\n@Component({\n tag: \"gx-ide-loader\",\n styleUrl: \"ide-loader.scss\",\n shadow: true\n})\nexport class IdeLoader {\n #timeoutReference: ReturnType<typeof setTimeout>;\n\n /**\n * shows the '.loader-wrapper'\n */\n @State() showWrapper = true;\n\n /**\n * The time the loader will await before abort.\n */\n @Prop() readonly abortTime: number = 5 * 60 * 1000; // 5 minutes\n\n /**\n * The cancel callback\n */\n @Prop() readonly cancelCallback: IdeLoaderCancelCallback;\n\n /**\n * The cancel button label (optional)\n */\n @Prop() readonly cancelLabel: string;\n\n /**\n * The loader description (optional)\n */\n @Prop() readonly description: string;\n\n /**\n * Displays a border all around\n */\n @Prop({ reflect: true }) readonly displayBorder: boolean = false;\n\n /**\n * The loader title (optional)\n */\n @Prop() readonly loaderTitle: string;\n\n /**\n * It shows the loader\n */\n @Prop({ mutable: true }) show = false;\n\n /**\n * This event is emitted when \"show\" is false.\n */\n @Event() loaderFinished: EventEmitter<void>;\n\n #cancelProcess = (): void => {\n if (this.cancelCallback) {\n this.cancelCallback();\n }\n clearTimeout(this.#timeoutReference);\n this.show = false;\n };\n\n #renderCancelButton = (): HTMLButtonElement | null =>\n this.cancelLabel && (\n <div>\n <button\n class=\"button-secondary loader__cancel-button\"\n type=\"button\"\n onClick={this.#cancelProcess}\n >\n {this.cancelLabel}\n </button>\n </div>\n );\n\n #renderDescription = (): HTMLParagraphElement | null =>\n this.description && <p class=\"text-body-italic-s\">{this.description}</p>;\n\n #renderTitle = (): HTMLParagraphElement | null =>\n this.loaderTitle && <p class=\"text-body-regular-l\">{this.loaderTitle}</p>;\n\n render() {\n return (\n <Host>\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n {this.show && (\n <div\n class={{\n [`loader__wrapper`]: true,\n \"loader__wrapper--visible\": this.showWrapper\n }}\n part=\"loader-wrapper\"\n popover=\"\"\n >\n <div class=\"loader__spinner\"></div>\n <div\n class={{\n \"loader__content-wrapper\": true,\n \"loader__content-wrapper--hidden\":\n !this.description && !this.loaderTitle && !this.cancelLabel\n }}\n >\n {this.#renderTitle()}\n {this.#renderDescription()}\n {this.#renderCancelButton()}\n </div>\n </div>\n )}\n </Host>\n );\n }\n}\n\nexport type IdeLoaderCancelCallback = () => void;\n"],"mappings":";;AAAA,MAAMA,IAAe;;;;;;;;;;ACYrB,MAAMC,IAA8B,EAClC,qBACA,qBACA;;MAOWC,IAAS;;;;IACpBC,EAAAC,IAAAC,WAAA;IA+CAC,EAAAF,IAAAC,OAAiB;MACf,IAAIA,KAAKE,gBAAgB;QACvBF,KAAKE;;MAEPC,aAAaC,EAAAJ,MAAIF,GAAA;MACjBE,KAAKK,OAAO;AAAK;IAGnBC,EAAAP,IAAAC,OAAsB,MACpBA,KAAKO,eACHC,EAAA,aACEA,EAAA;MACEC,OAAM;MACNC,MAAK;MACLC,SAASP,EAAAJ,MAAIC,GAAA;OAEZD,KAAKO;IAKdK,EAAAb,IAAAC,OAAqB,MACnBA,KAAKa,eAAeL,EAAA;MAAGC,OAAM;OAAsBT,KAAKa;IAE1DC,EAAAf,IAAAC,OAAe,MACbA,KAAKe,eAAeP,EAAA;MAAGC,OAAM;OAAuBT,KAAKe;uBAnEpC;qBAKc,IAAI,KAAK;;;;yBAoBa;;gBAU3B;;EAkChC,MAAAC;IACE,OACER,EAACS,GAAI,MACHT,EAAA;MAAUU,OAAOtB;QAChBI,KAAKK,QACJG,EAAA;MACEC,OAAO;QACL,CAAC,oBAAoB;QACrB,4BAA4BT,KAAKmB;;MAEnCC,MAAK;MACLC,SAAQ;OAERb,EAAA;MAAKC,OAAM;QACXD,EAAA;MACEC,OAAO;QACL,2BAA2B;QAC3B,oCACGT,KAAKa,gBAAgBb,KAAKe,gBAAgBf,KAAKO;;OAGnDH,EAAAJ,MAAIc,GAAA,KAAaQ,KAAjBtB,OACAI,EAAAJ,MAAIY,GAAA,KAAmBU,KAAvBtB,OACAI,EAAAJ,MAAIM,GAAA,KAAoBgB,KAAxBtB"}
@@ -1,6 +1,6 @@
1
1
  import { r as e, h as s, g as r } from "./p-aaed592c.js";
2
2
 
3
- import { h as a } from "./p-066028bc.js";
3
+ import { h as a } from "./p-c339f703.js";
4
4
 
5
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
6
 
@@ -103,4 +103,4 @@ const t = class {
103
103
  t.style = i;
104
104
 
105
105
  export { t as gx_ide_ai_message };
106
- //# sourceMappingURL=p-4ce0a85e.entry.js.map
106
+ //# sourceMappingURL=p-ac670f62.entry.js.map
@@ -20,7 +20,7 @@ const formSubmitValidation = (o, c) => {
20
20
  const o = {
21
21
  "ch-checkbox": "checkbox-error",
22
22
  "ch-combo-box-render": "combo-box-error",
23
- "ch-edit": "form-input-error"
23
+ "ch-edit": "input-error"
24
24
  };
25
25
 
26
26
  const toggleErrorClass = (c, e) => {
@@ -53,4 +53,4 @@ const validateControls = (o, c) => {
53
53
  };
54
54
 
55
55
  export { formSubmitValidation as f, validateControls as v };
56
- //# sourceMappingURL=p-41ea711a.js.map
56
+ //# sourceMappingURL=p-b8624c0b.js.map
@@ -0,0 +1 @@
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"}
@@ -51,8 +51,8 @@ const formatDate = (e, n = "date-time") => {
51
51
  }
52
52
  o = e.toLocaleDateString(a);
53
53
  const i = e.getFullYear();
54
- const l = String(e.getMonth() + 1).padStart(2, "0");
55
- const u = String(e.getDate()).padStart(2, "0");
54
+ const u = String(e.getMonth() + 1).padStart(2, "0");
55
+ const l = String(e.getDate()).padStart(2, "0");
56
56
  const d = String(e.getHours()).padStart(2, "0");
57
57
  const $ = String(e.getMinutes()).padStart(2, "0");
58
58
  const f = `${d}:${$}`;
@@ -61,9 +61,9 @@ const formatDate = (e, n = "date-time") => {
61
61
  } else if (n === "date-time-short") {
62
62
  // No seconds
63
63
  if (a === "es-ES") {
64
- o = `${i}-${l}-${u} ${f}`;
64
+ o = `${i}-${u}-${l} ${f}`;
65
65
  } else {
66
- o = `${l}/${u}/${i} ${f}`;
66
+ o = `${u}/${l}/${i} ${f}`;
67
67
  }
68
68
  } else {
69
69
  const n = daysFromToday(e);
@@ -80,13 +80,13 @@ const formatDate = (e, n = "date-time") => {
80
80
  } else if (r === i) {
81
81
  // If current year, show day number and month name. Example: November 17th
82
82
  if (a === "es-ES") {
83
- o = `${u} de ${e.toLocaleString("es-ES", {
83
+ o = `${l} de ${e.toLocaleString("es-ES", {
84
84
  month: "long"
85
85
  })} ${f}`;
86
86
  } else {
87
87
  o = `${e.toLocaleString("en-US", {
88
88
  month: "long"
89
- })} ${u} ${f}`;
89
+ })} ${l} ${f}`;
90
90
  }
91
91
  } else {
92
92
  // Display date as usual
@@ -130,6 +130,12 @@ const escapeRegExp = e => e.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
130
130
  }
131
131
  };
132
132
 
133
+ const closeOnOutsideClickHandler = (e, t) => {
134
+ if (!e.composedPath().includes(t)) {
135
+ return true;
136
+ }
137
+ };
138
+
133
139
  const mapOptionsToComboBoxItemModel = e => e.map((e => ({
134
140
  value: e.id,
135
141
  caption: e.label
@@ -150,5 +156,5 @@ const renderChCheckboxItems = (t, n, s) => t === null || t === void 0 ? void 0 :
150
156
  });
151
157
  }));
152
158
 
153
- export { countTreeItems as c, formatDate as f, hiChar as h, mapOptionsToComboBoxItemModel as m, renderChCheckboxItems as r };
154
- //# sourceMappingURL=p-066028bc.js.map
159
+ export { closeOnOutsideClickHandler as a, countTreeItems as c, formatDate as f, hiChar as h, mapOptionsToComboBoxItemModel as m, renderChCheckboxItems as r };
160
+ //# sourceMappingURL=p-c339f703.js.map