@genexus/genexus-ide-ui 1.1.55 → 1.1.57

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 (412) hide show
  1. package/dist/cjs/assets-manager-089e91b1.js +7 -0
  2. package/dist/cjs/assets-manager-089e91b1.js.map +1 -0
  3. package/dist/cjs/genexus-ide-ui.cjs.js +1 -1
  4. package/dist/cjs/gx-ide-bpm-app-declaration.cjs.entry.js +8 -4
  5. package/dist/cjs/gx-ide-bpm-app-declaration.cjs.entry.js.map +1 -1
  6. package/dist/cjs/gx-ide-bpm-task-documents.cjs.entry.js +8 -4
  7. package/dist/cjs/gx-ide-bpm-task-documents.cjs.entry.js.map +1 -1
  8. package/dist/cjs/gx-ide-chat-container_2.cjs.entry.js +12 -16
  9. package/dist/cjs/gx-ide-chat-container_2.cjs.entry.js.map +1 -1
  10. package/dist/cjs/gx-ide-create-kb-from-server.cjs.entry.js +8 -4
  11. package/dist/cjs/gx-ide-create-kb-from-server.cjs.entry.js.map +1 -1
  12. package/dist/cjs/gx-ide-current-user-info.cjs.entry.js +6 -2
  13. package/dist/cjs/gx-ide-current-user-info.cjs.entry.js.map +1 -1
  14. package/dist/cjs/gx-ide-data-selector.cjs.entry.js +6 -2
  15. package/dist/cjs/gx-ide-data-selector.cjs.entry.js.map +1 -1
  16. package/dist/cjs/gx-ide-data-type-selector.cjs.entry.js +6 -2
  17. package/dist/cjs/gx-ide-data-type-selector.cjs.entry.js.map +1 -1
  18. package/dist/cjs/gx-ide-design-import.cjs.entry.js +11 -7
  19. package/dist/cjs/gx-ide-design-import.cjs.entry.js.map +1 -1
  20. package/dist/cjs/gx-ide-details-acknowledgements.cjs.entry.js +6 -2
  21. package/dist/cjs/gx-ide-details-acknowledgements.cjs.entry.js.map +1 -1
  22. package/dist/cjs/gx-ide-entity-selector.cjs.entry.js +7 -3
  23. package/dist/cjs/gx-ide-entity-selector.cjs.entry.js.map +1 -1
  24. package/dist/cjs/gx-ide-file-item.cjs.entry.js +9 -5
  25. package/dist/cjs/gx-ide-file-item.cjs.entry.js.map +1 -1
  26. package/dist/cjs/gx-ide-file-uploader.cjs.entry.js +6 -2
  27. package/dist/cjs/gx-ide-file-uploader.cjs.entry.js.map +1 -1
  28. package/dist/cjs/gx-ide-json-import.cjs.entry.js +7 -3
  29. package/dist/cjs/gx-ide-json-import.cjs.entry.js.map +1 -1
  30. package/dist/cjs/gx-ide-kb-manager-export.cjs.entry.js +10 -6
  31. package/dist/cjs/gx-ide-kb-manager-export.cjs.entry.js.map +1 -1
  32. package/dist/cjs/gx-ide-kb-manager-import.cjs.entry.js +9 -5
  33. package/dist/cjs/gx-ide-kb-manager-import.cjs.entry.js.map +1 -1
  34. package/dist/cjs/gx-ide-manage-module-references.cjs.entry.js +7 -3
  35. package/dist/cjs/gx-ide-manage-module-references.cjs.entry.js.map +1 -1
  36. package/dist/cjs/gx-ide-new-kb.cjs.entry.js +6 -2
  37. package/dist/cjs/gx-ide-new-kb.cjs.entry.js.map +1 -1
  38. package/dist/cjs/gx-ide-new-version.cjs.entry.js +15 -3
  39. package/dist/cjs/gx-ide-new-version.cjs.entry.js.map +1 -1
  40. package/dist/cjs/gx-ide-object-selector.cjs.entry.js +7 -3
  41. package/dist/cjs/gx-ide-object-selector.cjs.entry.js.map +1 -1
  42. package/dist/cjs/gx-ide-open-api-import.cjs.entry.js +7 -3
  43. package/dist/cjs/gx-ide-open-api-import.cjs.entry.js.map +1 -1
  44. package/dist/cjs/gx-ide-plugin-details.cjs.entry.js +8 -4
  45. package/dist/cjs/gx-ide-plugin-details.cjs.entry.js.map +1 -1
  46. package/dist/cjs/gx-ide-plugin-explorer.cjs.entry.js +6 -2
  47. package/dist/cjs/gx-ide-plugin-explorer.cjs.entry.js.map +1 -1
  48. package/dist/cjs/gx-ide-references.cjs.entry.js +7 -3
  49. package/dist/cjs/gx-ide-references.cjs.entry.js.map +1 -1
  50. package/dist/cjs/gx-ide-sc-chat-container.cjs.entry.js +263 -20
  51. package/dist/cjs/gx-ide-sc-chat-container.cjs.entry.js.map +1 -1
  52. package/dist/cjs/gx-ide-select-kb-items.cjs.entry.js +7 -3
  53. package/dist/cjs/gx-ide-select-kb-items.cjs.entry.js.map +1 -1
  54. package/dist/cjs/gx-ide-server-selector.cjs.entry.js +9 -5
  55. package/dist/cjs/gx-ide-server-selector.cjs.entry.js.map +1 -1
  56. package/dist/cjs/gx-ide-share-kb.cjs.entry.js +6 -2
  57. package/dist/cjs/gx-ide-share-kb.cjs.entry.js.map +1 -1
  58. package/dist/cjs/gx-ide-splash.cjs.entry.js +6 -2
  59. package/dist/cjs/gx-ide-splash.cjs.entry.js.map +1 -1
  60. package/dist/cjs/gx-ide-start-page.cjs.entry.js +9 -5
  61. package/dist/cjs/gx-ide-start-page.cjs.entry.js.map +1 -1
  62. package/dist/cjs/gx-ide-starting-template.cjs.entry.js +6 -2
  63. package/dist/cjs/gx-ide-starting-template.cjs.entry.js.map +1 -1
  64. package/dist/cjs/gx-ide-team-dev-bring-changes.cjs.entry.js +14 -10
  65. package/dist/cjs/gx-ide-team-dev-bring-changes.cjs.entry.js.map +1 -1
  66. package/dist/cjs/gx-ide-team-dev-commit.cjs.entry.js +7 -3
  67. package/dist/cjs/gx-ide-team-dev-commit.cjs.entry.js.map +1 -1
  68. package/dist/cjs/gx-ide-team-dev-history.cjs.entry.js +10 -6
  69. package/dist/cjs/gx-ide-team-dev-history.cjs.entry.js.map +1 -1
  70. package/dist/cjs/gx-ide-team-dev-update-partial-selection.cjs.entry.js +6 -2
  71. package/dist/cjs/gx-ide-team-dev-update-partial-selection.cjs.entry.js.map +1 -1
  72. package/dist/cjs/gx-ide-team-dev-update.cjs.entry.js +17 -13
  73. package/dist/cjs/gx-ide-team-dev-update.cjs.entry.js.map +1 -1
  74. package/dist/cjs/gx-ide-welcome-page.cjs.entry.js +6 -2
  75. package/dist/cjs/gx-ide-welcome-page.cjs.entry.js.map +1 -1
  76. package/dist/cjs/gx-ide-ww-attributes.cjs.entry.js +6 -2
  77. package/dist/cjs/gx-ide-ww-attributes.cjs.entry.js.map +1 -1
  78. package/dist/cjs/gx-ide-ww-files.cjs.entry.js +8 -4
  79. package/dist/cjs/gx-ide-ww-files.cjs.entry.js.map +1 -1
  80. package/dist/cjs/index.cjs.js +0 -3
  81. package/dist/cjs/index.cjs.js.map +1 -1
  82. package/dist/cjs/loader.cjs.js +1 -1
  83. package/dist/cjs/mer-animated-dots-001c7465.js +79 -0
  84. package/dist/cjs/mer-animated-dots-001c7465.js.map +1 -0
  85. package/dist/cjs/{tabular-grid-render-b1767da2.js → tabular-grid-render-f97a5ab3.js} +18 -14
  86. package/dist/cjs/tabular-grid-render-f97a5ab3.js.map +1 -0
  87. package/dist/cjs/{utilities-0e316b39.js → utilities-0815a260.js} +10 -6
  88. package/dist/cjs/utilities-0815a260.js.map +1 -0
  89. package/dist/collection/components/chat/chat-container/chat-container.js +2 -10
  90. package/dist/collection/components/chat/chat-container/chat-container.js.map +1 -1
  91. package/dist/collection/components/new-version/gx-ide-assets/new-version/shortcuts.json +15 -0
  92. package/dist/collection/components/new-version/new-version.js +17 -4
  93. package/dist/collection/components/new-version/new-version.js.map +1 -1
  94. package/dist/collection/index.js +0 -2
  95. package/dist/collection/index.js.map +1 -1
  96. package/dist/collection/showcase/chat-container/callbacks.js +9 -9
  97. package/dist/collection/showcase/chat-container/callbacks.js.map +1 -1
  98. package/dist/collection/showcase/chat-container/chat.showcase.js +4 -4
  99. package/dist/collection/showcase/chat-container/chat.showcase.js.map +1 -1
  100. package/dist/collection/showcase/chat-container/models.js +18 -18
  101. package/dist/collection/showcase/chat-container/models.js.map +1 -1
  102. package/dist/components/chat-container.js +6 -11
  103. package/dist/components/chat-container.js.map +1 -1
  104. package/dist/components/chat-welcome.js +4 -1
  105. package/dist/components/chat-welcome.js.map +1 -1
  106. package/dist/components/entity-selector.js +4 -1
  107. package/dist/components/entity-selector.js.map +1 -1
  108. package/dist/components/file-item.js +4 -1
  109. package/dist/components/file-item.js.map +1 -1
  110. package/dist/components/gx-ide-bpm-app-declaration.js +4 -1
  111. package/dist/components/gx-ide-bpm-app-declaration.js.map +1 -1
  112. package/dist/components/gx-ide-bpm-task-documents.js +4 -1
  113. package/dist/components/gx-ide-bpm-task-documents.js.map +1 -1
  114. package/dist/components/gx-ide-create-kb-from-server.js +4 -1
  115. package/dist/components/gx-ide-create-kb-from-server.js.map +1 -1
  116. package/dist/components/gx-ide-current-user-info.js +4 -1
  117. package/dist/components/gx-ide-current-user-info.js.map +1 -1
  118. package/dist/components/gx-ide-data-selector.js +4 -1
  119. package/dist/components/gx-ide-data-selector.js.map +1 -1
  120. package/dist/components/gx-ide-data-type-selector.js +4 -1
  121. package/dist/components/gx-ide-data-type-selector.js.map +1 -1
  122. package/dist/components/gx-ide-design-import.js +4 -1
  123. package/dist/components/gx-ide-design-import.js.map +1 -1
  124. package/dist/components/gx-ide-details-acknowledgements.js +4 -1
  125. package/dist/components/gx-ide-details-acknowledgements.js.map +1 -1
  126. package/dist/components/gx-ide-file-uploader.js +4 -1
  127. package/dist/components/gx-ide-file-uploader.js.map +1 -1
  128. package/dist/components/gx-ide-json-import.js +4 -1
  129. package/dist/components/gx-ide-json-import.js.map +1 -1
  130. package/dist/components/gx-ide-kb-manager-export.js +4 -1
  131. package/dist/components/gx-ide-kb-manager-export.js.map +1 -1
  132. package/dist/components/gx-ide-kb-manager-import.js +4 -1
  133. package/dist/components/gx-ide-kb-manager-import.js.map +1 -1
  134. package/dist/components/gx-ide-manage-module-references.js +4 -1
  135. package/dist/components/gx-ide-manage-module-references.js.map +1 -1
  136. package/dist/components/gx-ide-new-kb.js +4 -1
  137. package/dist/components/gx-ide-new-kb.js.map +1 -1
  138. package/dist/components/gx-ide-new-version.js +17 -4
  139. package/dist/components/gx-ide-new-version.js.map +1 -1
  140. package/dist/components/gx-ide-object-selector.js +4 -1
  141. package/dist/components/gx-ide-object-selector.js.map +1 -1
  142. package/dist/components/gx-ide-open-api-import.js +4 -1
  143. package/dist/components/gx-ide-open-api-import.js.map +1 -1
  144. package/dist/components/gx-ide-plugin-details.js +4 -1
  145. package/dist/components/gx-ide-plugin-details.js.map +1 -1
  146. package/dist/components/gx-ide-plugin-explorer.js +4 -1
  147. package/dist/components/gx-ide-plugin-explorer.js.map +1 -1
  148. package/dist/components/gx-ide-references.js +4 -1
  149. package/dist/components/gx-ide-references.js.map +1 -1
  150. package/dist/components/gx-ide-sc-chat-container.js +263 -20
  151. package/dist/components/gx-ide-sc-chat-container.js.map +1 -1
  152. package/dist/components/gx-ide-server-selector.js +4 -1
  153. package/dist/components/gx-ide-server-selector.js.map +1 -1
  154. package/dist/components/gx-ide-share-kb.js +4 -1
  155. package/dist/components/gx-ide-share-kb.js.map +1 -1
  156. package/dist/components/gx-ide-splash.js +4 -1
  157. package/dist/components/gx-ide-splash.js.map +1 -1
  158. package/dist/components/gx-ide-start-page.js +4 -1
  159. package/dist/components/gx-ide-start-page.js.map +1 -1
  160. package/dist/components/gx-ide-starting-template.js +4 -1
  161. package/dist/components/gx-ide-starting-template.js.map +1 -1
  162. package/dist/components/gx-ide-team-dev-bring-changes.js +4 -1
  163. package/dist/components/gx-ide-team-dev-bring-changes.js.map +1 -1
  164. package/dist/components/gx-ide-team-dev-history.js +4 -1
  165. package/dist/components/gx-ide-team-dev-history.js.map +1 -1
  166. package/dist/components/gx-ide-team-dev-update-partial-selection.js +4 -1
  167. package/dist/components/gx-ide-team-dev-update-partial-selection.js.map +1 -1
  168. package/dist/components/gx-ide-team-dev-update.js +4 -1
  169. package/dist/components/gx-ide-team-dev-update.js.map +1 -1
  170. package/dist/components/gx-ide-welcome-page.js +4 -1
  171. package/dist/components/gx-ide-welcome-page.js.map +1 -1
  172. package/dist/components/gx-ide-ww-attributes.js +4 -1
  173. package/dist/components/gx-ide-ww-attributes.js.map +1 -1
  174. package/dist/components/gx-ide-ww-files.js +4 -1
  175. package/dist/components/gx-ide-ww-files.js.map +1 -1
  176. package/dist/components/index.js +0 -1
  177. package/dist/components/index.js.map +1 -1
  178. package/dist/components/mer-animated-dots.js +81 -0
  179. package/dist/components/mer-animated-dots.js.map +1 -0
  180. package/dist/components/select-kb-items.js +4 -1
  181. package/dist/components/select-kb-items.js.map +1 -1
  182. package/dist/components/tabular-grid-render.js +4 -1
  183. package/dist/components/tabular-grid-render.js.map +1 -1
  184. package/dist/components/utilities.js +4 -1
  185. package/dist/components/utilities.js.map +1 -1
  186. package/dist/esm/assets-manager-7d6fc08f.js +5 -0
  187. package/dist/esm/assets-manager-7d6fc08f.js.map +1 -0
  188. package/dist/esm/genexus-ide-ui.js +1 -1
  189. package/dist/esm/gx-ide-bpm-app-declaration.entry.js +5 -1
  190. package/dist/esm/gx-ide-bpm-app-declaration.entry.js.map +1 -1
  191. package/dist/esm/gx-ide-bpm-task-documents.entry.js +5 -1
  192. package/dist/esm/gx-ide-bpm-task-documents.entry.js.map +1 -1
  193. package/dist/esm/gx-ide-chat-container_2.entry.js +7 -11
  194. package/dist/esm/gx-ide-chat-container_2.entry.js.map +1 -1
  195. package/dist/esm/gx-ide-create-kb-from-server.entry.js +5 -1
  196. package/dist/esm/gx-ide-create-kb-from-server.entry.js.map +1 -1
  197. package/dist/esm/gx-ide-current-user-info.entry.js +5 -1
  198. package/dist/esm/gx-ide-current-user-info.entry.js.map +1 -1
  199. package/dist/esm/gx-ide-data-selector.entry.js +5 -1
  200. package/dist/esm/gx-ide-data-selector.entry.js.map +1 -1
  201. package/dist/esm/gx-ide-data-type-selector.entry.js +5 -1
  202. package/dist/esm/gx-ide-data-type-selector.entry.js.map +1 -1
  203. package/dist/esm/gx-ide-design-import.entry.js +5 -1
  204. package/dist/esm/gx-ide-design-import.entry.js.map +1 -1
  205. package/dist/esm/gx-ide-details-acknowledgements.entry.js +5 -1
  206. package/dist/esm/gx-ide-details-acknowledgements.entry.js.map +1 -1
  207. package/dist/esm/gx-ide-entity-selector.entry.js +5 -1
  208. package/dist/esm/gx-ide-entity-selector.entry.js.map +1 -1
  209. package/dist/esm/gx-ide-file-item.entry.js +5 -1
  210. package/dist/esm/gx-ide-file-item.entry.js.map +1 -1
  211. package/dist/esm/gx-ide-file-uploader.entry.js +5 -1
  212. package/dist/esm/gx-ide-file-uploader.entry.js.map +1 -1
  213. package/dist/esm/gx-ide-json-import.entry.js +5 -1
  214. package/dist/esm/gx-ide-json-import.entry.js.map +1 -1
  215. package/dist/esm/gx-ide-kb-manager-export.entry.js +5 -1
  216. package/dist/esm/gx-ide-kb-manager-export.entry.js.map +1 -1
  217. package/dist/esm/gx-ide-kb-manager-import.entry.js +5 -1
  218. package/dist/esm/gx-ide-kb-manager-import.entry.js.map +1 -1
  219. package/dist/esm/gx-ide-manage-module-references.entry.js +5 -1
  220. package/dist/esm/gx-ide-manage-module-references.entry.js.map +1 -1
  221. package/dist/esm/gx-ide-new-kb.entry.js +5 -1
  222. package/dist/esm/gx-ide-new-kb.entry.js.map +1 -1
  223. package/dist/esm/gx-ide-new-version.entry.js +16 -4
  224. package/dist/esm/gx-ide-new-version.entry.js.map +1 -1
  225. package/dist/esm/gx-ide-object-selector.entry.js +5 -1
  226. package/dist/esm/gx-ide-object-selector.entry.js.map +1 -1
  227. package/dist/esm/gx-ide-open-api-import.entry.js +5 -1
  228. package/dist/esm/gx-ide-open-api-import.entry.js.map +1 -1
  229. package/dist/esm/gx-ide-plugin-details.entry.js +5 -1
  230. package/dist/esm/gx-ide-plugin-details.entry.js.map +1 -1
  231. package/dist/esm/gx-ide-plugin-explorer.entry.js +5 -1
  232. package/dist/esm/gx-ide-plugin-explorer.entry.js.map +1 -1
  233. package/dist/esm/gx-ide-references.entry.js +5 -1
  234. package/dist/esm/gx-ide-references.entry.js.map +1 -1
  235. package/dist/esm/gx-ide-sc-chat-container.entry.js +263 -20
  236. package/dist/esm/gx-ide-sc-chat-container.entry.js.map +1 -1
  237. package/dist/esm/gx-ide-select-kb-items.entry.js +5 -1
  238. package/dist/esm/gx-ide-select-kb-items.entry.js.map +1 -1
  239. package/dist/esm/gx-ide-server-selector.entry.js +5 -1
  240. package/dist/esm/gx-ide-server-selector.entry.js.map +1 -1
  241. package/dist/esm/gx-ide-share-kb.entry.js +5 -1
  242. package/dist/esm/gx-ide-share-kb.entry.js.map +1 -1
  243. package/dist/esm/gx-ide-splash.entry.js +5 -1
  244. package/dist/esm/gx-ide-splash.entry.js.map +1 -1
  245. package/dist/esm/gx-ide-start-page.entry.js +5 -1
  246. package/dist/esm/gx-ide-start-page.entry.js.map +1 -1
  247. package/dist/esm/gx-ide-starting-template.entry.js +5 -1
  248. package/dist/esm/gx-ide-starting-template.entry.js.map +1 -1
  249. package/dist/esm/gx-ide-team-dev-bring-changes.entry.js +7 -3
  250. package/dist/esm/gx-ide-team-dev-bring-changes.entry.js.map +1 -1
  251. package/dist/esm/gx-ide-team-dev-commit.entry.js +7 -3
  252. package/dist/esm/gx-ide-team-dev-commit.entry.js.map +1 -1
  253. package/dist/esm/gx-ide-team-dev-history.entry.js +6 -2
  254. package/dist/esm/gx-ide-team-dev-history.entry.js.map +1 -1
  255. package/dist/esm/gx-ide-team-dev-update-partial-selection.entry.js +5 -1
  256. package/dist/esm/gx-ide-team-dev-update-partial-selection.entry.js.map +1 -1
  257. package/dist/esm/gx-ide-team-dev-update.entry.js +7 -3
  258. package/dist/esm/gx-ide-team-dev-update.entry.js.map +1 -1
  259. package/dist/esm/gx-ide-welcome-page.entry.js +5 -1
  260. package/dist/esm/gx-ide-welcome-page.entry.js.map +1 -1
  261. package/dist/esm/gx-ide-ww-attributes.entry.js +5 -1
  262. package/dist/esm/gx-ide-ww-attributes.entry.js.map +1 -1
  263. package/dist/esm/gx-ide-ww-files.entry.js +5 -1
  264. package/dist/esm/gx-ide-ww-files.entry.js.map +1 -1
  265. package/dist/esm/index.js +0 -2
  266. package/dist/esm/index.js.map +1 -1
  267. package/dist/esm/loader.js +1 -1
  268. package/dist/esm/mer-animated-dots-75d88f7e.js +77 -0
  269. package/dist/esm/mer-animated-dots-75d88f7e.js.map +1 -0
  270. package/dist/esm/{tabular-grid-render-96d67a8c.js → tabular-grid-render-2fca02f4.js} +7 -3
  271. package/dist/esm/tabular-grid-render-2fca02f4.js.map +1 -0
  272. package/dist/esm/{utilities-6624d90e.js → utilities-0cdc28eb.js} +6 -2
  273. package/dist/esm/utilities-0cdc28eb.js.map +1 -0
  274. package/dist/genexus-ide-ui/genexus-ide-ui.esm.js +1 -1
  275. package/dist/genexus-ide-ui/genexus-ide-ui.esm.js.map +1 -1
  276. package/dist/genexus-ide-ui/gx-ide-assets/new-version/shortcuts.json +15 -0
  277. package/dist/genexus-ide-ui/index.esm.js +0 -2
  278. package/dist/genexus-ide-ui/index.esm.js.map +1 -1
  279. package/dist/genexus-ide-ui/{p-2ce60f4c.entry.js → p-02883452.entry.js} +28 -20
  280. package/dist/genexus-ide-ui/{p-2ce60f4c.entry.js.map → p-02883452.entry.js.map} +1 -1
  281. package/dist/genexus-ide-ui/{p-c5eac770.entry.js → p-0548097b.entry.js} +10 -2
  282. package/dist/genexus-ide-ui/{p-c5eac770.entry.js.map → p-0548097b.entry.js.map} +1 -1
  283. package/dist/genexus-ide-ui/{p-64dbc4c0.entry.js → p-082780cc.entry.js} +10 -2
  284. package/dist/genexus-ide-ui/{p-64dbc4c0.entry.js.map → p-082780cc.entry.js.map} +1 -1
  285. package/dist/genexus-ide-ui/{p-9ac4aaa0.entry.js → p-1baf026c.entry.js} +16 -8
  286. package/dist/genexus-ide-ui/{p-9ac4aaa0.entry.js.map → p-1baf026c.entry.js.map} +1 -1
  287. package/dist/genexus-ide-ui/{p-098a7288.entry.js → p-1d647672.entry.js} +19 -11
  288. package/dist/genexus-ide-ui/{p-098a7288.entry.js.map → p-1d647672.entry.js.map} +1 -1
  289. package/dist/genexus-ide-ui/{p-13630aa2.entry.js → p-1e1d2672.entry.js} +51 -43
  290. package/dist/genexus-ide-ui/{p-13630aa2.entry.js.map → p-1e1d2672.entry.js.map} +1 -1
  291. package/dist/genexus-ide-ui/{p-b6a75c44.entry.js → p-207a698a.entry.js} +57 -49
  292. package/dist/genexus-ide-ui/{p-b6a75c44.entry.js.map → p-207a698a.entry.js.map} +1 -1
  293. package/dist/genexus-ide-ui/{p-d18c51fe.entry.js → p-2726ab59.entry.js} +18 -10
  294. package/dist/genexus-ide-ui/{p-d18c51fe.entry.js.map → p-2726ab59.entry.js.map} +1 -1
  295. package/dist/genexus-ide-ui/{p-0c5b7e75.entry.js → p-27633aae.entry.js} +10 -2
  296. package/dist/genexus-ide-ui/{p-0c5b7e75.entry.js.map → p-27633aae.entry.js.map} +1 -1
  297. package/dist/genexus-ide-ui/{p-2fe7ffc8.entry.js → p-28c11aff.entry.js} +32 -24
  298. package/dist/genexus-ide-ui/{p-2fe7ffc8.entry.js.map → p-28c11aff.entry.js.map} +1 -1
  299. package/dist/genexus-ide-ui/{p-3b955964.entry.js → p-2a51ea80.entry.js} +10 -2
  300. package/dist/genexus-ide-ui/{p-3b955964.entry.js.map → p-2a51ea80.entry.js.map} +1 -1
  301. package/dist/genexus-ide-ui/{p-1056dfe7.entry.js → p-336bb2ce.entry.js} +28 -20
  302. package/dist/genexus-ide-ui/{p-1056dfe7.entry.js.map → p-336bb2ce.entry.js.map} +1 -1
  303. package/dist/genexus-ide-ui/{p-ac026635.entry.js → p-364e8ecb.entry.js} +16 -8
  304. package/dist/genexus-ide-ui/{p-ac026635.entry.js.map → p-364e8ecb.entry.js.map} +1 -1
  305. package/dist/genexus-ide-ui/p-3c14bdfc.entry.js +234 -0
  306. package/dist/genexus-ide-ui/p-3c14bdfc.entry.js.map +1 -0
  307. package/dist/genexus-ide-ui/{p-1d044bf5.entry.js → p-4548ae72.entry.js} +17 -9
  308. package/dist/genexus-ide-ui/{p-1d044bf5.entry.js.map → p-4548ae72.entry.js.map} +1 -1
  309. package/dist/genexus-ide-ui/{p-80e49324.entry.js → p-46bb921b.entry.js} +36 -28
  310. package/dist/genexus-ide-ui/{p-80e49324.entry.js.map → p-46bb921b.entry.js.map} +1 -1
  311. package/dist/genexus-ide-ui/{p-11a60dbe.entry.js → p-506760d7.entry.js} +10 -2
  312. package/dist/genexus-ide-ui/{p-11a60dbe.entry.js.map → p-506760d7.entry.js.map} +1 -1
  313. package/dist/genexus-ide-ui/p-6e29711e.entry.js +608 -0
  314. package/dist/genexus-ide-ui/p-6e29711e.entry.js.map +1 -0
  315. package/dist/genexus-ide-ui/{p-7b986243.entry.js → p-71d4d3dd.entry.js} +32 -24
  316. package/dist/genexus-ide-ui/{p-7b986243.entry.js.map → p-71d4d3dd.entry.js.map} +1 -1
  317. package/dist/genexus-ide-ui/{p-891faf90.entry.js → p-77c315d9.entry.js} +28 -20
  318. package/dist/genexus-ide-ui/{p-891faf90.entry.js.map → p-77c315d9.entry.js.map} +1 -1
  319. package/dist/genexus-ide-ui/{p-18bbaa49.entry.js → p-7c95f511.entry.js} +16 -8
  320. package/dist/genexus-ide-ui/{p-18bbaa49.entry.js.map → p-7c95f511.entry.js.map} +1 -1
  321. package/dist/genexus-ide-ui/{p-eedb407c.entry.js → p-7e3cccf7.entry.js} +10 -2
  322. package/dist/genexus-ide-ui/{p-eedb407c.entry.js.map → p-7e3cccf7.entry.js.map} +1 -1
  323. package/dist/genexus-ide-ui/{p-410a35da.entry.js → p-8925fc99.entry.js} +40 -32
  324. package/dist/genexus-ide-ui/{p-410a35da.entry.js.map → p-8925fc99.entry.js.map} +1 -1
  325. package/dist/genexus-ide-ui/{p-072419f9.entry.js → p-94f74c12.entry.js} +18 -10
  326. package/dist/genexus-ide-ui/{p-072419f9.entry.js.map → p-94f74c12.entry.js.map} +1 -1
  327. package/dist/genexus-ide-ui/{p-d24c1115.entry.js → p-97f6438c.entry.js} +67 -59
  328. package/dist/genexus-ide-ui/{p-d24c1115.entry.js.map → p-97f6438c.entry.js.map} +1 -1
  329. package/dist/genexus-ide-ui/{p-9270c80f.entry.js → p-981873da.entry.js} +114 -118
  330. package/dist/genexus-ide-ui/p-981873da.entry.js.map +1 -0
  331. package/dist/genexus-ide-ui/{p-17b54532.entry.js → p-99b1dfd7.entry.js} +39 -31
  332. package/dist/genexus-ide-ui/{p-17b54532.entry.js.map → p-99b1dfd7.entry.js.map} +1 -1
  333. package/dist/genexus-ide-ui/{p-e1d0adf6.entry.js → p-9f7c347c.entry.js} +24 -16
  334. package/dist/genexus-ide-ui/{p-e1d0adf6.entry.js.map → p-9f7c347c.entry.js.map} +1 -1
  335. package/dist/genexus-ide-ui/{p-eacc81c8.entry.js → p-a28c2a64.entry.js} +122 -114
  336. package/dist/genexus-ide-ui/{p-eacc81c8.entry.js.map → p-a28c2a64.entry.js.map} +1 -1
  337. package/dist/genexus-ide-ui/{p-cccd6565.entry.js → p-a73db549.entry.js} +10 -2
  338. package/dist/genexus-ide-ui/{p-cccd6565.entry.js.map → p-a73db549.entry.js.map} +1 -1
  339. package/dist/genexus-ide-ui/{p-547fbde8.entry.js → p-be1ceb01.entry.js} +28 -20
  340. package/dist/genexus-ide-ui/{p-547fbde8.entry.js.map → p-be1ceb01.entry.js.map} +1 -1
  341. package/dist/genexus-ide-ui/{p-7adb9d1f.entry.js → p-c133095b.entry.js} +78 -70
  342. package/dist/genexus-ide-ui/{p-7adb9d1f.entry.js.map → p-c133095b.entry.js.map} +1 -1
  343. package/dist/genexus-ide-ui/{p-a58048e9.entry.js → p-c1c3996c.entry.js} +12 -4
  344. package/dist/genexus-ide-ui/{p-a58048e9.entry.js.map → p-c1c3996c.entry.js.map} +1 -1
  345. package/dist/genexus-ide-ui/{p-7551c2e9.entry.js → p-c426a3e7.entry.js} +22 -14
  346. package/dist/genexus-ide-ui/{p-7551c2e9.entry.js.map → p-c426a3e7.entry.js.map} +1 -1
  347. package/dist/genexus-ide-ui/{p-4f88fecd.entry.js → p-d12739cf.entry.js} +17 -9
  348. package/dist/genexus-ide-ui/{p-4f88fecd.entry.js.map → p-d12739cf.entry.js.map} +1 -1
  349. package/dist/genexus-ide-ui/{p-c8270f7d.js → p-d3ee56a4.js} +45 -37
  350. package/dist/genexus-ide-ui/{p-c8270f7d.js.map → p-d3ee56a4.js.map} +1 -1
  351. package/dist/genexus-ide-ui/p-d42e842b.js +7 -0
  352. package/dist/genexus-ide-ui/p-d42e842b.js.map +1 -0
  353. package/dist/genexus-ide-ui/{p-401bfc97.js → p-d4ecd3bb.js} +9366 -7152
  354. package/dist/genexus-ide-ui/p-d4ecd3bb.js.map +1 -0
  355. package/dist/genexus-ide-ui/{p-48e87e4f.entry.js → p-de6e9132.entry.js} +71 -63
  356. package/dist/genexus-ide-ui/{p-48e87e4f.entry.js.map → p-de6e9132.entry.js.map} +1 -1
  357. package/dist/genexus-ide-ui/{p-05fa08d7.entry.js → p-e4e3a7af.entry.js} +19 -11
  358. package/dist/genexus-ide-ui/{p-05fa08d7.entry.js.map → p-e4e3a7af.entry.js.map} +1 -1
  359. package/dist/genexus-ide-ui/{p-a24571ca.js → p-ea4b35b6.js} +19 -11
  360. package/dist/genexus-ide-ui/{p-a24571ca.js.map → p-ea4b35b6.js.map} +1 -1
  361. package/dist/genexus-ide-ui/{p-bd0ffc08.entry.js → p-f47b08c5.entry.js} +44 -36
  362. package/dist/genexus-ide-ui/{p-bd0ffc08.entry.js.map → p-f47b08c5.entry.js.map} +1 -1
  363. package/dist/types/components/new-version/new-version.d.ts +4 -0
  364. package/dist/types/index.d.ts +0 -2
  365. package/package.json +9 -8
  366. package/dist/cjs/MERCURY_ASSETS-f14e91ff.js +0 -9
  367. package/dist/cjs/MERCURY_ASSETS-f14e91ff.js.map +0 -1
  368. package/dist/cjs/render-item.lit-3f18e009.js +0 -329
  369. package/dist/cjs/render-item.lit-3f18e009.js.map +0 -1
  370. package/dist/cjs/tabular-grid-render-b1767da2.js.map +0 -1
  371. package/dist/cjs/utilities-0e316b39.js.map +0 -1
  372. package/dist/collection/components/chat/chat-container/gx-ide-assets/chat-container/chat-lit.css +0 -376
  373. package/dist/collection/components/chat/lit-custom-render/actions.lit.js +0 -27
  374. package/dist/collection/components/chat/lit-custom-render/actions.lit.js.map +0 -1
  375. package/dist/collection/components/chat/lit-custom-render/code-block.lit.js +0 -46
  376. package/dist/collection/components/chat/lit-custom-render/code-block.lit.js.map +0 -1
  377. package/dist/collection/components/chat/lit-custom-render/dots-animation.js +0 -61
  378. package/dist/collection/components/chat/lit-custom-render/dots-animation.js.map +0 -1
  379. package/dist/collection/components/chat/lit-custom-render/render-item.lit.js +0 -122
  380. package/dist/collection/components/chat/lit-custom-render/render-item.lit.js.map +0 -1
  381. package/dist/collection/components/chat/lit-custom-render/spinner-animation.js +0 -58
  382. package/dist/collection/components/chat/lit-custom-render/spinner-animation.js.map +0 -1
  383. package/dist/collection/components/chat/lit-custom-render/types.js +0 -2
  384. package/dist/collection/components/chat/lit-custom-render/types.js.map +0 -1
  385. package/dist/collection/components/chat/lit-custom-render/utils.js +0 -50
  386. package/dist/collection/components/chat/lit-custom-render/utils.js.map +0 -1
  387. package/dist/components/MERCURY_ASSETS.js +0 -7
  388. package/dist/components/MERCURY_ASSETS.js.map +0 -1
  389. package/dist/components/render-item.lit.js +0 -327
  390. package/dist/components/render-item.lit.js.map +0 -1
  391. package/dist/esm/MERCURY_ASSETS-ccf43ae3.js +0 -7
  392. package/dist/esm/MERCURY_ASSETS-ccf43ae3.js.map +0 -1
  393. package/dist/esm/render-item.lit-449f2946.js +0 -327
  394. package/dist/esm/render-item.lit-449f2946.js.map +0 -1
  395. package/dist/esm/tabular-grid-render-96d67a8c.js.map +0 -1
  396. package/dist/esm/utilities-6624d90e.js.map +0 -1
  397. package/dist/genexus-ide-ui/gx-ide-assets/chat-container/chat-lit.css +0 -376
  398. package/dist/genexus-ide-ui/p-401bfc97.js.map +0 -1
  399. package/dist/genexus-ide-ui/p-5f65a4bb.entry.js +0 -218
  400. package/dist/genexus-ide-ui/p-5f65a4bb.entry.js.map +0 -1
  401. package/dist/genexus-ide-ui/p-8d6f2b4f.entry.js +0 -359
  402. package/dist/genexus-ide-ui/p-8d6f2b4f.entry.js.map +0 -1
  403. package/dist/genexus-ide-ui/p-9270c80f.entry.js.map +0 -1
  404. package/dist/genexus-ide-ui/p-fd4f9904.js +0 -955
  405. package/dist/genexus-ide-ui/p-fd4f9904.js.map +0 -1
  406. package/dist/types/components/chat/lit-custom-render/actions.lit.d.ts +0 -2
  407. package/dist/types/components/chat/lit-custom-render/code-block.lit.d.ts +0 -2
  408. package/dist/types/components/chat/lit-custom-render/dots-animation.d.ts +0 -5
  409. package/dist/types/components/chat/lit-custom-render/render-item.lit.d.ts +0 -3
  410. package/dist/types/components/chat/lit-custom-render/spinner-animation.d.ts +0 -5
  411. package/dist/types/components/chat/lit-custom-render/types.d.ts +0 -4
  412. package/dist/types/components/chat/lit-custom-render/utils.d.ts +0 -23
@@ -1 +1 @@
1
- {"file":"gx-ide-welcome-page.entry.cjs.js","mappings":"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","names":["getAssetPath","getIconPath","index","h","Locale","Host"],"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 1fr;\n grid-area: slide-wrapper;\n transition: var(--slide-fade-duration) opacity;\n transition: opacity 200ms;\n padding-inline: 48px;\n opacity: 1;\n z-index: 1;\n }\n &__wrapper:not(.active) {\n opacity: 0;\n z-index: 0;\n pointer-events: none;\n }\n\n &__illustration {\n position: relative;\n overflow: hidden;\n display: grid;\n grid-area: illustration;\n place-items: center;\n inline-size: 100%;\n\n &-img {\n object-fit: contain;\n block-size: 100%;\n inline-size: 100%;\n }\n }\n\n &__copy {\n grid-area: copy;\n place-self: center;\n justify-self: flex-start;\n }\n\n &__copy-container {\n display: grid;\n gap: var(--mer-spacing--md);\n max-inline-size: 524px;\n }\n\n &__copy-header {\n display: grid;\n gap: var(--mer-spacing--md);\n }\n\n &__copy-title {\n font-size: var(--mer-font__size--xl);\n color: var(--mer-text__on-surface);\n letter-spacing: 0.02em;\n font-weight: var(--mer-font__weight--semi-bold);\n }\n\n &__copy-description {\n display: grid;\n gap: var(--mer-spacing--md);\n font-size: var(--mer-font__size--sm);\n font-weight: var(--mer-font__weight--light);\n line-height: var(--mer-line-height--spaced);\n }\n\n &__list {\n display: grid;\n gap: var(--mer-spacing--md);\n list-style: none;\n padding: 0;\n margin: 0;\n\n &-item {\n &-title {\n font-weight: var(--mer-font__weight--medium);\n }\n }\n }\n\n // words (if 'showTextInChunks' is true)\n &__word {\n transition: var(--mer-timing--regular) opacity;\n opacity: 0;\n\n &--visible {\n opacity: 1;\n }\n }\n\n // - - - - - Footer\n\n &__footer {\n $hideDotsDuration: calc(var(--mer-timing--fast) + 200ms);\n grid-area: footer;\n display: grid;\n padding-block: var(--slide-footer-block);\n opacity: 1;\n\n &-last-slide {\n opacity: 0;\n transition: $hideDotsDuration opacity;\n pointer-events: none;\n animation: footerPaddingBlockLastSlide var(--mer-timing--regular) ease-out\n forwards $hideDotsDuration;\n }\n }\n\n &__footer-wrapper {\n display: grid;\n grid-auto-flow: column;\n grid-auto-columns: max-content;\n gap: var(--mer-spacing--md);\n align-items: center;\n justify-content: center;\n transition: var(--mer-timing--regular) opacity;\n opacity: 1;\n\n &-hidden {\n opacity: 0;\n }\n }\n &__dots {\n display: grid;\n gap: var(--mer-spacing--2xs);\n list-style: none;\n padding: 0;\n margin: 0;\n grid-auto-flow: column;\n grid-auto-columns: max-content;\n justify-content: center;\n\n &-inactive {\n pointer-events: none;\n }\n }\n &__dot {\n display: grid;\n padding: var(--mer-spacing--xs);\n cursor: pointer;\n\n &::before {\n content: \"\";\n place-self: center;\n inline-size: var(--mer-spacing--sm);\n block-size: var(--mer-spacing--sm);\n border-radius: calc(var(--mer-spacing--sm) / 2);\n background-color: var(--mer-color__neutral-gray--500);\n }\n &:hover::before {\n background-color: var(--mer-icon__on-primary--hover);\n }\n\n &.active {\n cursor: auto;\n &::before {\n background-color: var(--mer-accent__primary);\n cursor: auto;\n }\n }\n\n &-inactive {\n pointer-events: none;\n }\n }\n}\n\n.close-icon {\n transition: all var(--mer-timing--fast);\n &:hover {\n filter: brightness(1.5);\n }\n}\n\n.start-button {\n justify-self: start;\n margin-block-start: 25px;\n}\n\n// - - - - - - - - - - - - - -\n// Animations\n// - - - - - - - - - - - - - -\n\n@keyframes ellipseFadeInOut {\n 0% {\n opacity: 0.3;\n }\n 100% {\n opacity: 0.7;\n }\n}\n@keyframes ellipseRotate {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n}\n@keyframes polygonRotate {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n}\n\n@keyframes borderColorCycle {\n 0% {\n border-color: var(--mer-surface__elevation--01);\n }\n 50% {\n border-color: var(--mer-color__primary--400);\n }\n 100% {\n border-color: var(--mer-surface__elevation--01);\n }\n}\n\n@keyframes footerPaddingBlockLastSlide {\n 0% {\n padding-block: var(--slide-footer-block);\n }\n 100% {\n padding-block: var(--slide-footer-block-last-slide);\n }\n}\n\n.fade-out {\n animation: fadeOut 0.5s forwards 0.3s;\n}\n","// Stencil\nimport {\n Component,\n Host,\n h,\n Prop,\n Element,\n State,\n getAssetPath\n} from \"@stencil/core\";\n// Other Libraries\nimport { MercuryBundles, getIconPath } from \"@genexus/mercury\";\n\n// Custom Imports\nimport { Locale } from \"../../common/locale\";\n\nconst ACTIVE_SLIDE_SELECTOR = \"active\";\nconst ARROW_LEFT_KEY = \"ArrowLeft\";\nconst ARROW_RIGHT_KEY = \"ArrowRight\";\nconst ESCAPE_KEY = \"Escape\";\nconst SLIDE_FADE_DURATION = 300;\nconst SLIDE_WORD_SELECTOR = \".slide__word\";\nconst SLIDE_WORD_SELECTOR_TIMEOUT = 70;\nconst SLIDE_WORD_SELECTOR_VISIBLE = \"slide__word--visible\";\n\n// icons\nconst ICON_NEXT = getAssetPath(\n `./gx-ide-assets/welcome-page/images/icon-next.svg`\n);\nconst CLOSE_ICON = getIconPath({\n category: \"system\",\n name: \"close\",\n colorType: \"on-elevation\"\n});\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"utils/typography\",\n \"components/icon\",\n \"components/button\"\n];\n\n@Component({\n tag: \"gx-ide-welcome-page\",\n styleUrl: \"welcome-page.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/welcome-page\"]\n})\nexport class GxIdeWelcomePage {\n /**\n * The component hard-coded strings translations.\n */\n // eslint-disable-next-line @stencil-community/own-props-must-be-private\n #componentLocale: any;\n\n #slidesDescriptionAsChunksAlreadyDisplayed: Map<number, boolean> = new Map();\n #slidesElements: HTMLElement[] = [];\n #slidesElementsRef: HTMLElement[] = [];\n // #slidesDescriptionAsChunksAlreadyDisplayed is used to know if the description of a slide\n // that is set to be displayed as chunks, has already been displayed. Used to not display\n // as chunks after the first time.\n #slideTimeOutId: NodeJS.Timeout;\n\n @Element() el: HTMLGxIdeWelcomePageElement;\n\n /**\n * The current active slide index from 'slides' Prop. It does not considers the very first slide \"Copyright\".\n */\n @State() activeSlideIndex: number = 0;\n\n /**\n * When true the slider will be visible. Used to display and hide the slide with a smooth transition.\n */\n @State() displaySlider: boolean = false;\n\n /**\n * True if the very first slide is visible (The copyright slide)\n */\n @State() copyrightsVisible: boolean = true;\n\n /**\n * True if the user has reached the last slide. Used to hide/disable the navigation.\n */\n @State() lastSlideReached: boolean = false;\n\n /**\n * When true the slider will be visible. Used to display and hide the slider with a smooth transition.\n */\n @State() sliderVisible: boolean = false;\n\n /**\n * True if a slide is transitioning, false otherwise. Used to disable the navigation arrows while transitioning.\n */\n @State() slideTransitioning: boolean = false;\n\n /**\n * True if the user has changed slides by clicking on the navigation dots, or by using the keyboard arrows. This is used to know evaluate the slide transition setTimeOut. If the user has navigated, automatic slide transition should be turned off.\n */\n @State() userHasChangedSlide: boolean = false;\n\n /**\n * The transition type between the slides. \"static\" requires the user to navigate by clicking the navigation dots. \"auto\" will transition automatically after a calculated amount of time.\n */\n @Prop() readonly transitionType: TransitionType = \"auto\";\n\n /**\n * The estimated amount of words per minute that the user requires to read a slide. This value is used to return the time each slide is freezed before transitioning to the next one. Only evaluated when transitionType is set to \"auto\".\n */\n @Prop() readonly wordsPerMinute: number = 250;\n\n /**\n * Callback invoked when the user closes the slider by pressing the close button.\n */\n @Prop() readonly closeCallback!: CloseCallback;\n\n /**\n * An array of slides, with the information that each slide requires. This slides appear after the first slide (Copyrights) that is defined inside the component.\n */\n @Prop() readonly slides: SlideInfo[] = [];\n\n async componentWillLoad() {\n this.#componentLocale = await Locale.getComponentStrings(this.el);\n this.#renderSlides();\n }\n\n componentDidLoad() {\n this.#slidesElementsRef[this.activeSlideIndex].classList.add(\n ACTIVE_SLIDE_SELECTOR\n );\n this.sliderVisible = true;\n this.#initiateSlidesTransition();\n }\n\n #closeSlider = () => {\n this.sliderVisible = false;\n setTimeout(() => {\n // wait until the slide disappears, then remove.\n this.el.remove();\n this.closeCallback();\n document.removeEventListener(\"keydown\", this.#keyboardEventHandler);\n }, SLIDE_FADE_DURATION);\n };\n\n #initiateSlidesTransition = () => {\n this.#slideTimeOut();\n // listen to keydown events to navigate the slides with the arrows\n document.addEventListener(\"keydown\", this.#keyboardEventHandler);\n };\n\n #displayWords = (wordsNodeList: NodeListOf<HTMLElement>) => {\n wordsNodeList.forEach((word, index) => {\n setTimeout(() => {\n word.classList.add(SLIDE_WORD_SELECTOR_VISIBLE);\n }, index * SLIDE_WORD_SELECTOR_TIMEOUT);\n });\n };\n\n #dotClickedHandler = (event: MouseEvent) => {\n this.userHasChangedSlide = true;\n const itemClicked = event.currentTarget as HTMLElement;\n const index = parseInt(itemClicked.getAttribute(\"data-index\"), 10);\n this.#updateActiveSlide(index);\n };\n\n #keyboardEventHandler = (event: KeyboardEvent) => {\n this.userHasChangedSlide = true;\n const goToPrevSlide =\n event.key === ARROW_LEFT_KEY &&\n !this.slideTransitioning &&\n !this.lastSlideReached &&\n this.activeSlideIndex !== 0;\n\n const goToNextSlide =\n event.key === ARROW_RIGHT_KEY &&\n !this.slideTransitioning &&\n !this.lastSlideReached;\n\n const closeSlider =\n event.key === ESCAPE_KEY ||\n (event.key === ARROW_RIGHT_KEY &&\n !this.slideTransitioning &&\n this.lastSlideReached);\n\n if (goToNextSlide) {\n this.#nextSlideHandler();\n } else if (goToPrevSlide) {\n this.#prevSlideHandler();\n } else if (closeSlider) {\n this.#closeSlider();\n }\n };\n\n #nextSlideHandler = () => {\n const newIndex = this.activeSlideIndex + 1;\n this.#updateActiveSlide(newIndex);\n };\n\n #prevSlideHandler = () => {\n const newIndex = this.activeSlideIndex - 1;\n this.#updateActiveSlide(newIndex);\n };\n\n #slideTimeOut = () => {\n // Clear any existing timeout\n if (this.#slideTimeOutId) {\n clearTimeout(this.#slideTimeOutId);\n }\n\n const autoChangeSlide =\n this.transitionType === \"auto\" &&\n !this.lastSlideReached &&\n !this.userHasChangedSlide;\n\n if (!autoChangeSlide) {\n return;\n }\n\n let itemsWordsCount = 0;\n if (this.slides[this.activeSlideIndex].listItems) {\n const itemsWords = this.slides[this.activeSlideIndex].listItems.map(\n item => {\n return item.title + item.description;\n }\n );\n if (itemsWords.length) {\n const mergedItemsWords = itemsWords.join(\"\");\n itemsWordsCount = mergedItemsWords.split(\" \").length;\n }\n }\n\n const mergedDescription =\n this.slides[this.activeSlideIndex].description.join(\"\");\n const words = mergedDescription.split(\" \").length;\n const timeBeforeNextSlide: number = this.#secondsToRead(\n words + itemsWordsCount\n );\n\n // Set a fresh timeout\n if (timeBeforeNextSlide) {\n this.#slideTimeOutId = setTimeout(() => {\n this.#nextSlideHandler();\n }, timeBeforeNextSlide);\n }\n };\n\n #secondsToRead = (\n wordsCount: number,\n wordsPerMinute = this.wordsPerMinute\n ): number => {\n const minutes = wordsCount / wordsPerMinute;\n const milliseconds = minutes * 60000; // Convert minutes to milliseconds\n return milliseconds;\n };\n\n #renderSlides = () => {\n this.#slidesElements = this.slides.map((slide, index) => {\n const isLastSlide = index === this.slides.length - 1;\n return (\n <section\n class=\"slide__wrapper\"\n ref={(el: HTMLElement) =>\n (this.#slidesElementsRef[index] = el as HTMLElement)\n }\n >\n <div\n class=\"slide__illustration\"\n role=\"img\"\n aria-label={this.#componentLocale.copyright.illustrationAriaLabel}\n >\n <img\n class=\"slide__illustration-img\"\n src={slide.illustration.url}\n alt={slide.illustration.alt}\n />\n </div>\n <section class=\"slide__copy\">\n <div class=\"slide__copy-container\">\n <header class=\"slide__copy-header\">\n <img src={ICON_NEXT} alt=\"GeneXus Next isologotype\" />\n <h2 class=\"slide__copy-title\">{slide.title}</h2>\n </header>\n <div class=\"slide__copy-description\">\n {slide.description?.map(paragraph => {\n return (\n <p>\n {slide.descriptionAsChunks\n ? this.#splitWords(paragraph)\n : paragraph}\n </p>\n );\n })}\n {slide.listItems?.length && (\n <ul class=\"slide__list\">\n {slide.listItems.map(item => {\n return (\n <li class=\"slide__list-item\">\n <strong class=\"slide__list-item-title\">\n {item.title}\n </strong>{\" \"}\n {item.description}\n </li>\n );\n })}\n </ul>\n )}\n </div>\n {isLastSlide && (\n <button\n class=\"button-primary start-button\"\n onClick={this.#closeSlider}\n >\n {this.#componentLocale.startButtonCaption}\n </button>\n )}\n </div>\n </section>\n </section>\n );\n });\n };\n\n #splitWords = (paragraph: string): HTMLSpanElement[] => {\n return paragraph.split(\" \").map(word => {\n // keep the space after {word} !\n return <span class=\"slide__word\">{word} </span>;\n });\n };\n\n #updateActiveSlide = (newSlideIndex: number) => {\n 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 }}\n >\n <div\n class={{\n \"slide__footer-wrapper\": true\n }}\n >\n <ul class=\"slide__dots\" aria-label=\"Slide indicators\">\n {this.slides.map((_, index) => {\n return (\n <li\n class={{\n \"slide__dot\": true,\n \"slide__dot-inactive\": this.slideTransitioning,\n [ACTIVE_SLIDE_SELECTOR]:\n index === this.activeSlideIndex\n }}\n data-index={index}\n onClick={\n !this.slideTransitioning && this.#dotClickedHandler\n }\n ></li>\n );\n })}\n </ul>\n </div>\n </footer>\n </section>\n </div>\n </Host>\n );\n }\n}\n\nexport type SlideInfo = {\n illustration: {\n url: string;\n alt: string;\n };\n title: string;\n description?: string[];\n descriptionAsChunks?: boolean;\n listItems?: Array<{\n title: string;\n description: string;\n }>;\n};\n\nexport type CloseCallback = () => Promise<void>;\nexport type TransitionType = \"static\" | \"auto\";\n"],"version":3}
1
+ {"file":"gx-ide-welcome-page.entry.cjs.js","mappings":";;;;;;;;;;;;AAAA,MAAM,cAAc,GAAG,8hJAA8hJ;;;;;;;;;;;;;;;;;;;ACgBrjJ,MAAM,qBAAqB,GAAG,QAAQ,CAAC;AACvC,MAAM,cAAc,GAAG,WAAW,CAAC;AACnC,MAAM,eAAe,GAAG,YAAY,CAAC;AACrC,MAAM,UAAU,GAAG,QAAQ,CAAC;AAC5B,MAAM,mBAAmB,GAAG,GAAG,CAAC;AAChC,MAAM,mBAAmB,GAAG,cAAc,CAAC;AAC3C,MAAM,2BAA2B,GAAG,EAAE,CAAC;AACvC,MAAM,2BAA2B,GAAG,sBAAsB,CAAC;AAE3D;AACA,MAAM,SAAS,GAAGA,kBAAY,CAC5B,mDAAmD,CACpD,CAAC;AACF,MAAM,UAAU,GAAGC,yBAAW,CAAC;IAC7B,QAAQ,EAAE,QAAQ;IAClB,IAAI,EAAE,OAAO;IACb,SAAS,EAAE,cAAc;CAC1B,CAAC,CAAC;AAEH,MAAM,WAAW,GAAmB;IAClC,mBAAmB;IACnB,kBAAkB;IAClB,iBAAiB;IACjB,mBAAmB;CACpB,CAAC;MAQW,gBAAgB;;;;;;;QAK3B,oDAAsB;QAEtB,sEAAmE,IAAI,GAAG,EAAE,EAAC;QAC7E,2CAAiC,EAAE,EAAC;QACpC,8CAAoC,EAAE,EAAC;;;;QAIvC,mDAAgC;QAwEhC,wCAAe;YACb,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;YAC3B,UAAU,CAAC;;gBAET,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC;gBACjB,IAAI,CAAC,aAAa,EAAE,CAAC;gBACrB,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,uBAAA,IAAI,8CAAsB,CAAC,CAAC;aACrE,EAAE,mBAAmB,CAAC,CAAC;SACzB,EAAC;QAEF,qDAA4B;YAC1B,uBAAA,IAAI,sCAAc,MAAlB,IAAI,CAAgB,CAAC;;YAErB,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,uBAAA,IAAI,8CAAsB,CAAC,CAAC;SAClE,EAAC;QAEF,yCAAgB,CAAC,aAAsC;YACrD,aAAa,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK;gBAChC,UAAU,CAAC;oBACT,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;iBACjD,EAAE,KAAK,GAAG,2BAA2B,CAAC,CAAC;aACzC,CAAC,CAAC;SACJ,EAAC;QAEF,8CAAqB,CAAC,KAAiB;YACrC,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;YAChC,MAAM,WAAW,GAAG,KAAK,CAAC,aAA4B,CAAC;YACvD,MAAM,KAAK,GAAG,QAAQ,CAAC,WAAW,CAAC,YAAY,CAAC,YAAY,CAAC,EAAE,EAAE,CAAC,CAAC;YACnE,uBAAA,IAAI,2CAAmB,MAAvB,IAAI,EAAoB,KAAK,CAAC,CAAC;SAChC,EAAC;QAEF,iDAAwB,CAAC,KAAoB;YAC3C,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;YAChC,MAAM,aAAa,GACjB,KAAK,CAAC,GAAG,KAAK,cAAc;gBAC5B,CAAC,IAAI,CAAC,kBAAkB;gBACxB,CAAC,IAAI,CAAC,gBAAgB;gBACtB,IAAI,CAAC,gBAAgB,KAAK,CAAC,CAAC;YAE9B,MAAM,aAAa,GACjB,KAAK,CAAC,GAAG,KAAK,eAAe;gBAC7B,CAAC,IAAI,CAAC,kBAAkB;gBACxB,CAAC,IAAI,CAAC,gBAAgB,CAAC;YAEzB,MAAM,WAAW,GACf,KAAK,CAAC,GAAG,KAAK,UAAU;iBACvB,KAAK,CAAC,GAAG,KAAK,eAAe;oBAC5B,CAAC,IAAI,CAAC,kBAAkB;oBACxB,IAAI,CAAC,gBAAgB,CAAC,CAAC;YAE3B,IAAI,aAAa,EAAE;gBACjB,uBAAA,IAAI,0CAAkB,MAAtB,IAAI,CAAoB,CAAC;aAC1B;iBAAM,IAAI,aAAa,EAAE;gBACxB,uBAAA,IAAI,0CAAkB,MAAtB,IAAI,CAAoB,CAAC;aAC1B;iBAAM,IAAI,WAAW,EAAE;gBACtB,uBAAA,IAAI,qCAAa,MAAjB,IAAI,CAAe,CAAC;aACrB;SACF,EAAC;QAEF,6CAAoB;YAClB,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC;YAC3C,uBAAA,IAAI,2CAAmB,MAAvB,IAAI,EAAoB,QAAQ,CAAC,CAAC;SACnC,EAAC;QAEF,6CAAoB;YAClB,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC;YAC3C,uBAAA,IAAI,2CAAmB,MAAvB,IAAI,EAAoB,QAAQ,CAAC,CAAC;SACnC,EAAC;QAEF,yCAAgB;;YAEd,IAAI,uBAAA,IAAI,wCAAgB,EAAE;gBACxB,YAAY,CAAC,uBAAA,IAAI,wCAAgB,CAAC,CAAC;aACpC;YAED,MAAM,eAAe,GACnB,IAAI,CAAC,cAAc,KAAK,MAAM;gBAC9B,CAAC,IAAI,CAAC,gBAAgB;gBACtB,CAAC,IAAI,CAAC,mBAAmB,CAAC;YAE5B,IAAI,CAAC,eAAe,EAAE;gBACpB,OAAO;aACR;YAED,IAAI,eAAe,GAAG,CAAC,CAAC;YACxB,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,SAAS,EAAE;gBAChD,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,SAAS,CAAC,GAAG,CACjE,IAAI;oBACF,OAAO,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC;iBACtC,CACF,CAAC;gBACF,IAAI,UAAU,CAAC,MAAM,EAAE;oBACrB,MAAM,gBAAgB,GAAG,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBAC7C,eAAe,GAAG,gBAAgB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;iBACtD;aACF;YAED,MAAM,iBAAiB,GACrB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC1D,MAAM,KAAK,GAAG,iBAAiB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;YAClD,MAAM,mBAAmB,GAAW,uBAAA,IAAI,uCAAe,MAAnB,IAAI,EACtC,KAAK,GAAG,eAAe,CACxB,CAAC;;YAGF,IAAI,mBAAmB,EAAE;gBACvB,uBAAA,IAAI,oCAAmB,UAAU,CAAC;oBAChC,uBAAA,IAAI,0CAAkB,MAAtB,IAAI,CAAoB,CAAC;iBAC1B,EAAE,mBAAmB,CAAC,MAAA,CAAC;aACzB;SACF,EAAC;QAEF,0CAAiB,CACf,UAAkB,EAClB,cAAc,GAAG,IAAI,CAAC,cAAc;YAEpC,MAAM,OAAO,GAAG,UAAU,GAAG,cAAc,CAAC;YAC5C,MAAM,YAAY,GAAG,OAAO,GAAG,KAAK,CAAC;YACrC,OAAO,YAAY,CAAC;SACrB,EAAC;QAEF,yCAAgB;YACd,uBAAA,IAAI,oCAAmB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAEC,OAAK;;gBAClD,MAAM,WAAW,GAAGA,OAAK,KAAK,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;gBACrD,QACEC,qBACE,KAAK,EAAC,gBAAgB,EACtB,GAAG,EAAE,CAAC,EAAe,MAClB,uBAAA,IAAI,2CAAmB,CAACD,OAAK,CAAC,GAAG,EAAiB,CAAC,IAGtDC,iBACE,KAAK,EAAC,qBAAqB,EAC3B,IAAI,EAAC,KAAK,gBACE,uBAAA,IAAI,yCAAiB,CAAC,SAAS,CAAC,qBAAqB,IAEjEA,iBACE,KAAK,EAAC,yBAAyB,EAC/B,GAAG,EAAE,KAAK,CAAC,YAAY,CAAC,GAAG,EAC3B,GAAG,EAAE,KAAK,CAAC,YAAY,CAAC,GAAG,GAC3B,CACE,EACNA,qBAAS,KAAK,EAAC,aAAa,IAC1BA,iBAAK,KAAK,EAAC,uBAAuB,IAChCA,oBAAQ,KAAK,EAAC,oBAAoB,IAChCA,iBAAK,GAAG,EAAE,SAAS,EAAE,GAAG,EAAC,0BAA0B,GAAG,EACtDA,gBAAI,KAAK,EAAC,mBAAmB,IAAE,KAAK,CAAC,KAAK,CAAM,CACzC,EACTA,iBAAK,KAAK,EAAC,yBAAyB,IACjC,MAAA,KAAK,CAAC,WAAW;uBAAE,GAAG,CAAC,SAAS;wBAC/B,QACEA,mBACG,KAAK,CAAC,mBAAmB;8BACtB,uBAAA,IAAI,oCAAY,MAAhB,IAAI,EAAa,SAAS,CAAC;8BAC3B,SAAS,CACX,EACJ;qBACH,CAAC,EACD,CAAA,MAAA,KAAK,CAAC,SAAS,0CAAE,MAAM,MACtBA,gBAAI,KAAK,EAAC,aAAa,IACpB,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI;oBACvB,QACEA,gBAAI,KAAK,EAAC,kBAAkB,IAC1BA,oBAAQ,KAAK,EAAC,wBAAwB,IACnC,IAAI,CAAC,KAAK,CACJ,EAAC,GAAG,EACZ,IAAI,CAAC,WAAW,CACd,EACL;iBACH,CAAC,CACC,CACN,CACG,EACL,WAAW,KACVA,oBACE,KAAK,EAAC,6BAA6B,EACnC,OAAO,EAAE,uBAAA,IAAI,qCAAa,IAEzB,uBAAA,IAAI,yCAAiB,CAAC,kBAAkB,CAClC,CACV,CACG,CACE,CACF,EACV;aACH,CAAC,MAAA,CAAC;SACJ,EAAC;QAEF,uCAAc,CAAC,SAAiB;YAC9B,OAAO,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI;;gBAElC,OAAOA,kBAAM,KAAK,EAAC,aAAa,IAAE,IAAI,MAAS,CAAC;aACjD,CAAC,CAAC;SACJ,EAAC;QAEF,8CAAqB,CAAC,aAAqB;YACzC,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;;YAG/B,MAAM,WAAW,GAAG,uBAAA,IAAI,2CAAmB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;YACnE,WAAW,CAAC,SAAS,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC;YAEpD,MAAM,kBAAkB,GAAG,uBAAA,IAAI,2CAAmB,CAAC,aAAa,CAAC,CAAC;YAClE,MAAM,0BAA0B,GAC9B,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,mBAAmB,CAAC;YACjD,MAAM,mCAAmC,GACvC,uBAAA,IAAI,mEAA2C,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;YACrE,IAAI,UAAU,CAAC;YACf,IAAI,aAAsC,CAAC;YAC3C,IAAI,YAAY,GAAG,CAAC,CAAC;YACrB,IAAI,0BAA0B,EAAE;gBAC9B,aAAa,GAAG,kBAAkB,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,CAAC;gBACzE,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC;gBAClC,YAAY,GAAG,UAAU,GAAG,2BAA2B,CAAC;aACzD;YAED,IAAI,CAAC,gBAAgB,GAAG,aAAa,KAAK,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;;YAGjE,UAAU,CAAC;gBACT,kBAAkB,CAAC,SAAS,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;gBAExD,IAAI,0BAA0B,IAAI,CAAC,mCAAmC,EAAE;oBACtE,uBAAA,IAAI,mEAA2C,CAAC,GAAG,CACjD,aAAa,EACb,IAAI,CACL,CAAC;oBACF,uBAAA,IAAI,sCAAc,MAAlB,IAAI,EAAe,aAAa,CAAC,CAAC;oBAClC,UAAU,CAAC;wBACT,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;qBACjC,EAAE,YAAY,CAAC,CAAC;iBAClB;qBAAM;oBACL,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;iBACjC;aACF,EAAE,mBAAmB,CAAC,CAAC;;YAGxB,IAAI,CAAC,gBAAgB,GAAG,aAAa,CAAC;YACtC,uBAAA,IAAI,sCAAc,MAAlB,IAAI,CAAgB,CAAC;SACtB,EAAC;gCAhTkC,CAAC;6BAKH,KAAK;iCAKD,IAAI;gCAKL,KAAK;6BAKR,KAAK;kCAKA,KAAK;mCAKJ,KAAK;8BAKK,MAAM;8BAKd,GAAG;;sBAUN,EAAE;;IAEzC,MAAM,iBAAiB;QACrB,uBAAA,IAAI,qCAAoB,MAAMC,aAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC,MAAA,CAAC;QAClE,uBAAA,IAAI,sCAAc,MAAlB,IAAI,CAAgB,CAAC;KACtB;IAED,gBAAgB;QACd,uBAAA,IAAI,2CAAmB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,SAAS,CAAC,GAAG,CAC1D,qBAAqB,CACtB,CAAC;QACF,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAC1B,uBAAA,IAAI,kDAA0B,MAA9B,IAAI,CAA4B,CAAC;KAClC;IAmPD,MAAM;QACJ,QACED,QAACE,UAAI,QACHF,sBAAU,KAAK,EAAE,WAAW,GAAa,EACzCA,iBACE,KAAK,EAAE;gBACL,MAAM,EAAE,IAAI;gBACZ,eAAe,EAAE,IAAI,CAAC,aAAa;gBACnC,mBAAmB,EAAE,IAAI,CAAC,gBAAgB;aAC3C,EACD,KAAK,EAAE,EAAE,uBAAuB,EAAE,GAAG,mBAAmB,IAAI,EAAE,IAE9DA,qBAAS,KAAK,EAAC,OAAO,IACpBA,oBAAQ,KAAK,EAAC,eAAe,IAC3BA,oBACE,KAAK,EAAC,6CAA6C,gBACxC,oBAAoB,EAC/B,OAAO,EAAE,uBAAA,IAAI,qCAAa,IAE1BA,sBAAU,KAAK,EAAC,SAAS,EAAC,GAAG,EAAE,UAAU,GAAa,CAC/C,CACF,EACTA,iBAAK,KAAK,EAAC,kBAAkB,IAAE,uBAAA,IAAI,wCAAgB,CAAO,EAC1DA;;YAEE,KAAK,EAAE;gBACL,aAAa,EAAE,IAAI;aACpB;WAEDA,iBACE,KAAK,EAAE;gBACL,uBAAuB,EAAE,IAAI;aAC9B,IAEDA,gBAAI,KAAK,EAAC,aAAa,gBAAY,kBAAkB,IAClD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAED,OAAK;YACxB,QACEC,gBACE,KAAK,EAAE;oBACL,YAAY,EAAE,IAAI;oBAClB,qBAAqB,EAAE,IAAI,CAAC,kBAAkB;oBAC9C,CAAC,qBAAqB,GACpBD,OAAK,KAAK,IAAI,CAAC,gBAAgB;iBAClC,gBACWA,OAAK,EACjB,OAAO,EACL,CAAC,IAAI,CAAC,kBAAkB,IAAI,uBAAA,IAAI,2CAAmB,GAEjD,EACN;SACH,CAAC,CACC,CACD,CACC,CACD,CACN,CACD,EACP;KACH;;;;;;;;;","names":["getAssetPath","getIconPath","index","h","Locale","Host"],"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 1fr;\n grid-area: slide-wrapper;\n transition: var(--slide-fade-duration) opacity;\n transition: opacity 200ms;\n padding-inline: 48px;\n opacity: 1;\n z-index: 1;\n }\n &__wrapper:not(.active) {\n opacity: 0;\n z-index: 0;\n pointer-events: none;\n }\n\n &__illustration {\n position: relative;\n overflow: hidden;\n display: grid;\n grid-area: illustration;\n place-items: center;\n inline-size: 100%;\n\n &-img {\n object-fit: contain;\n block-size: 100%;\n inline-size: 100%;\n }\n }\n\n &__copy {\n grid-area: copy;\n place-self: center;\n justify-self: flex-start;\n }\n\n &__copy-container {\n display: grid;\n gap: var(--mer-spacing--md);\n max-inline-size: 524px;\n }\n\n &__copy-header {\n display: grid;\n gap: var(--mer-spacing--md);\n }\n\n &__copy-title {\n font-size: var(--mer-font__size--xl);\n color: var(--mer-text__on-surface);\n letter-spacing: 0.02em;\n font-weight: var(--mer-font__weight--semi-bold);\n }\n\n &__copy-description {\n display: grid;\n gap: var(--mer-spacing--md);\n font-size: var(--mer-font__size--sm);\n font-weight: var(--mer-font__weight--light);\n line-height: var(--mer-line-height--spaced);\n }\n\n &__list {\n display: grid;\n gap: var(--mer-spacing--md);\n list-style: none;\n padding: 0;\n margin: 0;\n\n &-item {\n &-title {\n font-weight: var(--mer-font__weight--medium);\n }\n }\n }\n\n // words (if 'showTextInChunks' is true)\n &__word {\n transition: var(--mer-timing--regular) opacity;\n opacity: 0;\n\n &--visible {\n opacity: 1;\n }\n }\n\n // - - - - - Footer\n\n &__footer {\n $hideDotsDuration: calc(var(--mer-timing--fast) + 200ms);\n grid-area: footer;\n display: grid;\n padding-block: var(--slide-footer-block);\n opacity: 1;\n\n &-last-slide {\n opacity: 0;\n transition: $hideDotsDuration opacity;\n pointer-events: none;\n animation: footerPaddingBlockLastSlide var(--mer-timing--regular) ease-out\n forwards $hideDotsDuration;\n }\n }\n\n &__footer-wrapper {\n display: grid;\n grid-auto-flow: column;\n grid-auto-columns: max-content;\n gap: var(--mer-spacing--md);\n align-items: center;\n justify-content: center;\n transition: var(--mer-timing--regular) opacity;\n opacity: 1;\n\n &-hidden {\n opacity: 0;\n }\n }\n &__dots {\n display: grid;\n gap: var(--mer-spacing--2xs);\n list-style: none;\n padding: 0;\n margin: 0;\n grid-auto-flow: column;\n grid-auto-columns: max-content;\n justify-content: center;\n\n &-inactive {\n pointer-events: none;\n }\n }\n &__dot {\n display: grid;\n padding: var(--mer-spacing--xs);\n cursor: pointer;\n\n &::before {\n content: \"\";\n place-self: center;\n inline-size: var(--mer-spacing--sm);\n block-size: var(--mer-spacing--sm);\n border-radius: calc(var(--mer-spacing--sm) / 2);\n background-color: var(--mer-color__neutral-gray--500);\n }\n &:hover::before {\n background-color: var(--mer-icon__on-primary--hover);\n }\n\n &.active {\n cursor: auto;\n &::before {\n background-color: var(--mer-accent__primary);\n cursor: auto;\n }\n }\n\n &-inactive {\n pointer-events: none;\n }\n }\n}\n\n.close-icon {\n transition: all var(--mer-timing--fast);\n &:hover {\n filter: brightness(1.5);\n }\n}\n\n.start-button {\n justify-self: start;\n margin-block-start: 25px;\n}\n\n// - - - - - - - - - - - - - -\n// Animations\n// - - - - - - - - - - - - - -\n\n@keyframes ellipseFadeInOut {\n 0% {\n opacity: 0.3;\n }\n 100% {\n opacity: 0.7;\n }\n}\n@keyframes ellipseRotate {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n}\n@keyframes polygonRotate {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n}\n\n@keyframes borderColorCycle {\n 0% {\n border-color: var(--mer-surface__elevation--01);\n }\n 50% {\n border-color: var(--mer-color__primary--400);\n }\n 100% {\n border-color: var(--mer-surface__elevation--01);\n }\n}\n\n@keyframes footerPaddingBlockLastSlide {\n 0% {\n padding-block: var(--slide-footer-block);\n }\n 100% {\n padding-block: var(--slide-footer-block-last-slide);\n }\n}\n\n.fade-out {\n animation: fadeOut 0.5s forwards 0.3s;\n}\n","// Stencil\nimport {\n Component,\n Host,\n h,\n Prop,\n Element,\n State,\n getAssetPath\n} from \"@stencil/core\";\n// Other Libraries\nimport { MercuryBundles, getIconPath } from \"@genexus/mercury\";\n\n// Custom Imports\nimport { Locale } from \"../../common/locale\";\n\nconst ACTIVE_SLIDE_SELECTOR = \"active\";\nconst ARROW_LEFT_KEY = \"ArrowLeft\";\nconst ARROW_RIGHT_KEY = \"ArrowRight\";\nconst ESCAPE_KEY = \"Escape\";\nconst SLIDE_FADE_DURATION = 300;\nconst SLIDE_WORD_SELECTOR = \".slide__word\";\nconst SLIDE_WORD_SELECTOR_TIMEOUT = 70;\nconst SLIDE_WORD_SELECTOR_VISIBLE = \"slide__word--visible\";\n\n// icons\nconst ICON_NEXT = getAssetPath(\n `./gx-ide-assets/welcome-page/images/icon-next.svg`\n);\nconst CLOSE_ICON = getIconPath({\n category: \"system\",\n name: \"close\",\n colorType: \"on-elevation\"\n});\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"utils/typography\",\n \"components/icon\",\n \"components/button\"\n];\n\n@Component({\n tag: \"gx-ide-welcome-page\",\n styleUrl: \"welcome-page.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/welcome-page\"]\n})\nexport class GxIdeWelcomePage {\n /**\n * The component hard-coded strings translations.\n */\n // eslint-disable-next-line @stencil-community/own-props-must-be-private\n #componentLocale: any;\n\n #slidesDescriptionAsChunksAlreadyDisplayed: Map<number, boolean> = new Map();\n #slidesElements: HTMLElement[] = [];\n #slidesElementsRef: HTMLElement[] = [];\n // #slidesDescriptionAsChunksAlreadyDisplayed is used to know if the description of a slide\n // that is set to be displayed as chunks, has already been displayed. Used to not display\n // as chunks after the first time.\n #slideTimeOutId: NodeJS.Timeout;\n\n @Element() el: HTMLGxIdeWelcomePageElement;\n\n /**\n * The current active slide index from 'slides' Prop. It does not considers the very first slide \"Copyright\".\n */\n @State() activeSlideIndex: number = 0;\n\n /**\n * When true the slider will be visible. Used to display and hide the slide with a smooth transition.\n */\n @State() displaySlider: boolean = false;\n\n /**\n * True if the very first slide is visible (The copyright slide)\n */\n @State() copyrightsVisible: boolean = true;\n\n /**\n * True if the user has reached the last slide. Used to hide/disable the navigation.\n */\n @State() lastSlideReached: boolean = false;\n\n /**\n * When true the slider will be visible. Used to display and hide the slider with a smooth transition.\n */\n @State() sliderVisible: boolean = false;\n\n /**\n * True if a slide is transitioning, false otherwise. Used to disable the navigation arrows while transitioning.\n */\n @State() slideTransitioning: boolean = false;\n\n /**\n * True if the user has changed slides by clicking on the navigation dots, or by using the keyboard arrows. This is used to know evaluate the slide transition setTimeOut. If the user has navigated, automatic slide transition should be turned off.\n */\n @State() userHasChangedSlide: boolean = false;\n\n /**\n * The transition type between the slides. \"static\" requires the user to navigate by clicking the navigation dots. \"auto\" will transition automatically after a calculated amount of time.\n */\n @Prop() readonly transitionType: TransitionType = \"auto\";\n\n /**\n * The estimated amount of words per minute that the user requires to read a slide. This value is used to return the time each slide is freezed before transitioning to the next one. Only evaluated when transitionType is set to \"auto\".\n */\n @Prop() readonly wordsPerMinute: number = 250;\n\n /**\n * Callback invoked when the user closes the slider by pressing the close button.\n */\n @Prop() readonly closeCallback!: CloseCallback;\n\n /**\n * An array of slides, with the information that each slide requires. This slides appear after the first slide (Copyrights) that is defined inside the component.\n */\n @Prop() readonly slides: SlideInfo[] = [];\n\n async componentWillLoad() {\n this.#componentLocale = await Locale.getComponentStrings(this.el);\n this.#renderSlides();\n }\n\n componentDidLoad() {\n this.#slidesElementsRef[this.activeSlideIndex].classList.add(\n ACTIVE_SLIDE_SELECTOR\n );\n this.sliderVisible = true;\n this.#initiateSlidesTransition();\n }\n\n #closeSlider = () => {\n this.sliderVisible = false;\n setTimeout(() => {\n // wait until the slide disappears, then remove.\n this.el.remove();\n this.closeCallback();\n document.removeEventListener(\"keydown\", this.#keyboardEventHandler);\n }, SLIDE_FADE_DURATION);\n };\n\n #initiateSlidesTransition = () => {\n this.#slideTimeOut();\n // listen to keydown events to navigate the slides with the arrows\n document.addEventListener(\"keydown\", this.#keyboardEventHandler);\n };\n\n #displayWords = (wordsNodeList: NodeListOf<HTMLElement>) => {\n wordsNodeList.forEach((word, index) => {\n setTimeout(() => {\n word.classList.add(SLIDE_WORD_SELECTOR_VISIBLE);\n }, index * SLIDE_WORD_SELECTOR_TIMEOUT);\n });\n };\n\n #dotClickedHandler = (event: MouseEvent) => {\n this.userHasChangedSlide = true;\n const itemClicked = event.currentTarget as HTMLElement;\n const index = parseInt(itemClicked.getAttribute(\"data-index\"), 10);\n this.#updateActiveSlide(index);\n };\n\n #keyboardEventHandler = (event: KeyboardEvent) => {\n this.userHasChangedSlide = true;\n const goToPrevSlide =\n event.key === ARROW_LEFT_KEY &&\n !this.slideTransitioning &&\n !this.lastSlideReached &&\n this.activeSlideIndex !== 0;\n\n const goToNextSlide =\n event.key === ARROW_RIGHT_KEY &&\n !this.slideTransitioning &&\n !this.lastSlideReached;\n\n const closeSlider =\n event.key === ESCAPE_KEY ||\n (event.key === ARROW_RIGHT_KEY &&\n !this.slideTransitioning &&\n this.lastSlideReached);\n\n if (goToNextSlide) {\n this.#nextSlideHandler();\n } else if (goToPrevSlide) {\n this.#prevSlideHandler();\n } else if (closeSlider) {\n this.#closeSlider();\n }\n };\n\n #nextSlideHandler = () => {\n const newIndex = this.activeSlideIndex + 1;\n this.#updateActiveSlide(newIndex);\n };\n\n #prevSlideHandler = () => {\n const newIndex = this.activeSlideIndex - 1;\n this.#updateActiveSlide(newIndex);\n };\n\n #slideTimeOut = () => {\n // Clear any existing timeout\n if (this.#slideTimeOutId) {\n clearTimeout(this.#slideTimeOutId);\n }\n\n const autoChangeSlide =\n this.transitionType === \"auto\" &&\n !this.lastSlideReached &&\n !this.userHasChangedSlide;\n\n if (!autoChangeSlide) {\n return;\n }\n\n let itemsWordsCount = 0;\n if (this.slides[this.activeSlideIndex].listItems) {\n const itemsWords = this.slides[this.activeSlideIndex].listItems.map(\n item => {\n return item.title + item.description;\n }\n );\n if (itemsWords.length) {\n const mergedItemsWords = itemsWords.join(\"\");\n itemsWordsCount = mergedItemsWords.split(\" \").length;\n }\n }\n\n const mergedDescription =\n this.slides[this.activeSlideIndex].description.join(\"\");\n const words = mergedDescription.split(\" \").length;\n const timeBeforeNextSlide: number = this.#secondsToRead(\n words + itemsWordsCount\n );\n\n // Set a fresh timeout\n if (timeBeforeNextSlide) {\n this.#slideTimeOutId = setTimeout(() => {\n this.#nextSlideHandler();\n }, timeBeforeNextSlide);\n }\n };\n\n #secondsToRead = (\n wordsCount: number,\n wordsPerMinute = this.wordsPerMinute\n ): number => {\n const minutes = wordsCount / wordsPerMinute;\n const milliseconds = minutes * 60000; // Convert minutes to milliseconds\n return milliseconds;\n };\n\n #renderSlides = () => {\n this.#slidesElements = this.slides.map((slide, index) => {\n const isLastSlide = index === this.slides.length - 1;\n return (\n <section\n class=\"slide__wrapper\"\n ref={(el: HTMLElement) =>\n (this.#slidesElementsRef[index] = el as HTMLElement)\n }\n >\n <div\n class=\"slide__illustration\"\n role=\"img\"\n aria-label={this.#componentLocale.copyright.illustrationAriaLabel}\n >\n <img\n class=\"slide__illustration-img\"\n src={slide.illustration.url}\n alt={slide.illustration.alt}\n />\n </div>\n <section class=\"slide__copy\">\n <div class=\"slide__copy-container\">\n <header class=\"slide__copy-header\">\n <img src={ICON_NEXT} alt=\"GeneXus Next isologotype\" />\n <h2 class=\"slide__copy-title\">{slide.title}</h2>\n </header>\n <div class=\"slide__copy-description\">\n {slide.description?.map(paragraph => {\n return (\n <p>\n {slide.descriptionAsChunks\n ? this.#splitWords(paragraph)\n : paragraph}\n </p>\n );\n })}\n {slide.listItems?.length && (\n <ul class=\"slide__list\">\n {slide.listItems.map(item => {\n return (\n <li class=\"slide__list-item\">\n <strong class=\"slide__list-item-title\">\n {item.title}\n </strong>{\" \"}\n {item.description}\n </li>\n );\n })}\n </ul>\n )}\n </div>\n {isLastSlide && (\n <button\n class=\"button-primary start-button\"\n onClick={this.#closeSlider}\n >\n {this.#componentLocale.startButtonCaption}\n </button>\n )}\n </div>\n </section>\n </section>\n );\n });\n };\n\n #splitWords = (paragraph: string): HTMLSpanElement[] => {\n return paragraph.split(\" \").map(word => {\n // keep the space after {word} !\n return <span class=\"slide__word\">{word} </span>;\n });\n };\n\n #updateActiveSlide = (newSlideIndex: number) => {\n 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 }}\n >\n <div\n class={{\n \"slide__footer-wrapper\": true\n }}\n >\n <ul class=\"slide__dots\" aria-label=\"Slide indicators\">\n {this.slides.map((_, index) => {\n return (\n <li\n class={{\n \"slide__dot\": true,\n \"slide__dot-inactive\": this.slideTransitioning,\n [ACTIVE_SLIDE_SELECTOR]:\n index === this.activeSlideIndex\n }}\n data-index={index}\n onClick={\n !this.slideTransitioning && this.#dotClickedHandler\n }\n ></li>\n );\n })}\n </ul>\n </div>\n </footer>\n </section>\n </div>\n </Host>\n );\n }\n}\n\nexport type SlideInfo = {\n illustration: {\n url: string;\n alt: string;\n };\n title: string;\n description?: string[];\n descriptionAsChunks?: boolean;\n listItems?: Array<{\n title: string;\n description: string;\n }>;\n};\n\nexport type CloseCallback = () => Promise<void>;\nexport type TransitionType = \"static\" | \"auto\";\n"],"version":3}
@@ -3,7 +3,11 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  const index = require('./index-2f1471c9.js');
6
- const MERCURY_ASSETS = require('./MERCURY_ASSETS-f14e91ff.js');
6
+ const assetsManager = require('./assets-manager-089e91b1.js');
7
+ require('./mer-animated-dots-001c7465.js');
8
+ require('lit');
9
+ require('lit/directives/when.js');
10
+ require('lit/directives/if-defined.js');
7
11
  const config = require('./config-df6ba4e9.js');
8
12
  const locale = require('./locale-ff30a5f3.js');
9
13
 
@@ -49,7 +53,7 @@ const CSS_BUNDLES = [
49
53
  "utils/spacing",
50
54
  "chameleon/scrollbar"
51
55
  ];
52
- const FILTER_ICON = MERCURY_ASSETS.getIconPath({
56
+ const FILTER_ICON = assetsManager.getIconPath({
53
57
  category: "window-tools",
54
58
  name: "filter",
55
59
  colorType: "on-elevation"
@@ -1 +1 @@
1
- {"file":"gx-ide-ww-attributes.entry.cjs.js","mappings":"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","names":["getIconPath","h","config","Locale","Host"],"sources":["src/components/ww-attributes/helpers.tsx","src/components/ww-attributes/ww-attributes.scss?tag=gx-ide-ww-attributes&encapsulation=shadow","src/components/ww-attributes/ww-attributes.tsx"],"sourcesContent":["import { ComboBoxModel } from \"@genexus/chameleon-controls-library\";\nimport { GxOption } from \"../..\";\n\nexport const mapOptionsToComboBoxItemModel = (\n options: GxOption[]\n): ComboBoxModel => {\n return options.map(option => {\n return {\n value: option.id,\n caption: option.label,\n startImgSrc: option.iconName ?? \"\"\n };\n });\n};\n","@import \"../../../node_modules/@genexus/mercury/dist/assets/scss/helpers.scss\"; // for the tabular-grid-cell-layout mixin\n\n$nameInlineSize: 40px;\n$moreBtnInlineSize: 64px;\n\n:host {\n display: grid;\n block-size: 100%;\n overflow: auto;\n grid-template-rows: max-content 1fr max-content;\n}\n\n.section {\n display: contents;\n}\n// Header\n.header {\n grid-template:\n \"name type\" max-content\n \"object object\" max-content;\n grid-template-columns: 1fr 1fr;\n}\n.name__field {\n grid-area: name;\n}\n.name__label {\n inline-size: $nameInlineSize;\n}\n.type__field {\n grid-area: type;\n}\n.more__btn {\n grid-area: more;\n inline-size: $moreBtnInlineSize;\n}\n.object-selector__field {\n grid-area: object;\n}\n\n// Main\n.main {\n overflow: auto;\n}\n\nch-tabular-grid.tabular-grid--empty::part(main) {\n // WA to avoid scrollbar flickering when displaying the empty-state message\n overflow: hidden;\n}\nch-tabular-grid-rowset-empty {\n position: relative; // makes this the bounder element for the loader\n}\n\n@include tabular-grid-cell-layout(\n $tabular-grid-selector: \".tabular-grid-row\",\n $tabular-grid-cell-node-type: \"text\",\n $tabular-grid-cell-apply-ellipsis: true,\n $tabular-grid-affected-columns-nth-list: (\n 2,\n 3,\n 4\n )\n);\n\n// WA: remove this when Mercury removes margin from p elements\n.matching-attributes {\n margin: 0;\n}\n","/* eslint-disable @stencil-community/own-props-must-be-private */\n// Stencil\nimport {\n Component,\n Element,\n Host,\n Listen,\n Method,\n Prop,\n State,\n h\n} from \"@stencil/core\";\n// Other Libraries\nimport { MercuryBundles, getIconPath } from \"@genexus/mercury\";\n// Custom Imports\nimport { config } from \"../../common/config\";\nimport { Locale } from \"../../common/locale\";\nimport { ContextMenuInfo, EntityData, GxOption } from \"../../common/types\";\nimport { mapOptionsToComboBoxItemModel } from \"./helpers\";\nimport { ChEditCustomEvent } from \"@genexus/chameleon-controls-library\";\nimport HTMLChTabularGridRowsetElement from \"@genexus/chameleon-controls-library/dist/types/components/tabular-grid/rowset/tabular-grid-rowset\";\nimport { GxIdeEntitySelectorCustomEvent } from \"../../components\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"components/button\",\n \"components/edit\",\n \"components/combo-box\",\n \"components/tabular-grid\",\n \"components/icon\",\n \"utils/form\",\n \"utils/layout\",\n \"utils/spacing\",\n \"chameleon/scrollbar\"\n];\n\nconst FILTER_ICON = getIconPath({\n category: \"window-tools\",\n name: \"filter\",\n colorType: \"on-elevation\"\n});\n\n@Component({\n tag: \"gx-ide-ww-attributes\",\n styleUrl: \"ww-attributes.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/ww-attributes\"]\n})\nexport class GxIdeWWAttributes {\n /**\n * Component hard-coded strings translations.\n */\n #_componentLocale: any;\n\n @Element() el: HTMLGxIdeWwAttributesElement;\n\n /* References needed to collect data */\n #chGridEl!: HTMLChTabularGridElement;\n\n /**\n * Attributes rendered in the table\n */\n @State() attributes: AttributeData[];\n\n /**\n * Selected attributes in the table of attributes\n */\n @State() selectedAttributesIds: string[] = [];\n\n /**\n * Show or hide advanced filters\n */\n @State() filterMore = false;\n\n /**\n * The attribute filter name\n */\n @State() name: string = \"\";\n\n /**\n * True if loadCallback hasn't been resolved yet\n */\n @State() loading: boolean = true;\n\n /**\n * The attribute object value\n */\n @State() object: EntityData;\n\n /**\n * The attribute filter type value\n */\n @State() type: string;\n\n /**\n * Callback invoked when user right-clicks on the grid\n */\n @Prop() readonly contextMenuCallback!: ContextMenuCallback;\n\n /**\n * Callback invoked when user deletes an object\n */\n @Prop() readonly deleteSelectionCallback!: DeleteSelectionCallback;\n\n /**\n * Callback invoked when user filters the objects\n */\n @Prop() readonly loadCallback!: LoadCallback;\n\n /**\n * Callback invoked when user executes filter action\n */\n @Prop() readonly objectActionCallback!: ObjectActionCallback;\n\n /**\n * Objects rendered in the object selector\n */\n @Prop() readonly objects!: GxOption[];\n\n /**\n * Callback invoked when user opens the selection dialog\n */\n @Prop() readonly openSelectionCallback!: OpenSelectionCallback;\n\n /**\n * Callback invoked when user selects or deselects an object\n */\n @Prop() readonly selectionChangeCallback!: SelectionChangeCallback;\n\n /**\n * Types rendered in the filter type selector\n */\n @Prop() readonly types!: GxOption[];\n\n async componentWillLoad() {\n this.#_componentLocale = await Locale.getComponentStrings(this.el);\n }\n\n componentDidLoad() {\n this.#listenChanges();\n this.type = this.types[0].id; // before #getAttributes\n this.#getAttributes();\n }\n\n @Listen(\"keydown\", { passive: true })\n keyDownHandler(eventInfo: KeyboardEvent) {\n if (document.activeElement === this.el) {\n switch (eventInfo.key) {\n case \"Enter\":\n this.#openSelectionCallbackHandle();\n break;\n case \"Delete\":\n this.#deleteSelectionCallbackHandle();\n break;\n }\n }\n }\n\n /**\n * Reloads the view, refreshing the filters and attributes table.\n */\n @Method()\n async reload(): Promise<void> {\n this.name = \"\";\n this.type = this.types[0].id;\n this.object = null;\n this.#getAttributes();\n }\n\n /**\n * Validate necessary data input\n */\n @Method()\n async validate(): Promise<boolean> {\n const isValid = true;\n return isValid;\n }\n\n #contextMenuCallbackHandler = (ev: MouseEvent): void => {\n this.contextMenuCallback({\n selection: this.selectedAttributesIds,\n clientX: ev.clientX,\n clientY: ev.clientY\n });\n };\n\n #deleteSelectionCallbackHandle = (): void => {\n this.deleteSelectionCallback(this.selectedAttributesIds);\n };\n\n #deselectAll = (): void => {\n (this.#chGridEl as any).selectAllRows(false);\n };\n\n #getAttributes = (): void => {\n this.loading = true;\n const filters: AttributeFiltersData = {\n name: this.name.trim(),\n type: this.type,\n object: this.object?.id\n };\n this.loadCallback(filters).then((items: AttributeData[]) => {\n this.attributes = items;\n if (this.selectedAttributesIds?.length > 0) {\n this.selectedAttributesIds = [];\n this.#deselectAll();\n }\n this.loading = false;\n });\n };\n\n #listenChanges = (): void => {\n // for grid selection\n this.#chGridEl.addEventListener(\"selectionChanged\", (ev: any): void => {\n this.selectedAttributesIds = ev.detail.rowsId;\n this.selectionChangeCallback(this.selectedAttributesIds);\n });\n this.#chGridEl.addEventListener(\"contextmenu\", (ev: MouseEvent): void => {\n ev.preventDefault();\n ev.stopPropagation();\n this.#contextMenuCallbackHandler(ev);\n });\n\n this.#chGridEl.addEventListener(\"rowDoubleClicked\", (): void => {\n this.#openSelectionCallbackHandle();\n });\n };\n\n #openSelectionCallbackHandle = (): void => {\n this.openSelectionCallback(this.selectedAttributesIds);\n };\n\n #entityCallbackHandler = async (): Promise<null> => {\n const result = await this.objectActionCallback();\n this.object = {\n id: result.id,\n name: result.name,\n iconSrc: result.iconSrc\n };\n return new Promise(resolve => {\n resolve(null);\n });\n };\n\n #entityValueChangedHandler = (\n event: GxIdeEntitySelectorCustomEvent<EntityData>\n ) => {\n this.object = event.detail;\n this.#getAttributes();\n };\n\n #renderAttributesGrid = (): Element => {\n const tabularGridEmpty = this.attributes?.length === 0 || !this.attributes;\n return (\n <ch-tabular-grid\n class={{\n \"tabular-grid\": true,\n \"tabular-grid--empty\": tabularGridEmpty,\n \"main\": true\n }}\n ref={(el: HTMLChTabularGridElement) => (this.#chGridEl = el)}\n row-selection-mode=\"multiple\"\n part=\"ch-grid-attributes\"\n >\n <ch-tabular-grid-columnset class=\"tabular-grid-column-set\">\n <ch-tabular-grid-column\n column-name=\"\"\n column-name-position=\"text\"\n settingable={false}\n size={config.tabularGrid.colSize.maxContent}\n class=\"tabular-grid-column\"\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n column-name={this.#_componentLocale.tableHead.name}\n column-name-position=\"text\"\n size={config.tabularGrid.colSize.auto}\n class=\"tabular-grid-column\"\n settingable={false}\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n column-name={this.#_componentLocale.tableHead.type}\n column-name-position=\"text\"\n class=\"tabular-grid-column\"\n size={config.tabularGrid.colSize.auto}\n settingable={false}\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n column-name={this.#_componentLocale.tableHead.description}\n column-name-position=\"text\"\n size={config.tabularGrid.colSize.auto}\n class=\"tabular-grid-column\"\n settingable={false}\n ></ch-tabular-grid-column>\n </ch-tabular-grid-columnset>\n\n {this.#evaluateAttributesGridContent()}\n </ch-tabular-grid>\n );\n };\n\n #evaluateAttributesGridContent = (): HTMLChTabularGridRowsetElement => {\n if (this.loading) {\n return (\n <ch-tabular-grid-rowset class=\"tabular-grid-rowset\">\n <ch-tabular-grid-rowset-empty>\n <gx-ide-loader\n loaderTitle={this.#_componentLocale.loader.title}\n description={this.#_componentLocale.loader.description}\n show\n ></gx-ide-loader>\n </ch-tabular-grid-rowset-empty>\n </ch-tabular-grid-rowset>\n );\n } else if (this.attributes.length) {\n return (\n <ch-tabular-grid-rowset class=\"tabular-grid-rowset\">\n {this.attributes.map((attr: AttributeData) => (\n <ch-tabular-grid-row class=\"tabular-grid-row\" rowid={attr.id}>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n <ch-image class=\"icon-sm\" src={attr.icon}></ch-image>\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {attr.name}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {attr.type}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {attr.description}\n </ch-tabular-grid-cell>\n </ch-tabular-grid-row>\n ))}\n </ch-tabular-grid-rowset>\n );\n } else {\n // filter returned none\n return (\n <ch-tabular-grid-rowset class=\"tabular-grid-rowset\">\n <ch-tabular-grid-rowset-empty>\n <gx-ide-empty-state\n stateIconSrc={FILTER_ICON}\n stateTitle={this.#_componentLocale.emptyStateTitle}\n isAnimated={true}\n ></gx-ide-empty-state>\n </ch-tabular-grid-rowset-empty>\n </ch-tabular-grid-rowset>\n );\n }\n };\n\n #renderFilter = (): Element => {\n return (\n <header class=\"header field-group control-header-with-border spacing-body\">\n <div class=\"field field-inline name__field\">\n <label class=\"label name__label\" htmlFor=\"name\">\n {this.#_componentLocale.filter.name}\n </label>\n <ch-edit\n // Name\n id=\"name\"\n class=\"input\"\n value={this.name}\n debounce={300}\n onInput={this.#nameInputHandler}\n part=\"filter-name\"\n ></ch-edit>\n </div>\n\n <div class=\"field field-inline type__field\">\n <label class=\"label\" htmlFor=\"type\">\n {this.#_componentLocale.filter.type}\n </label>\n <ch-combo-box-render\n // Type\n id=\"type\"\n class=\"combo-box\"\n disabled={!this.types}\n value={this.type}\n model={mapOptionsToComboBoxItemModel(this.types ?? [])}\n part=\"filter-type\"\n onInput={this.#typeInputHandler}\n ></ch-combo-box-render>\n </div>\n\n {/* <button\n // TODO: Check with Design if it maes sense to have a button that toggles only one control.\n // More\n class=\"button-primary more__btn\"\n onClick={this.#showMoreFilter}\n part=\"button button--more-less\"\n >\n {this.filterMore\n ? this.#_componentLocale.filter.btnLess\n : this.#_componentLocale.filter.btnMore}\n </button> */}\n\n <div class=\"field field-inline object-selector__field\">\n <label class=\"label\" htmlFor=\"object-selector\">\n {this.#_componentLocale.filter.object}\n </label>\n <gx-ide-entity-selector\n // Object\n id=\"object-selector\"\n value={this.object}\n labelPosition=\"none\"\n defaultValue={null}\n selectEntityCallback={this.#entityCallbackHandler}\n onValueChanged={this.#entityValueChangedHandler}\n part=\"filter-module-folder\"\n ></gx-ide-entity-selector>\n </div>\n </header>\n );\n };\n\n #selectAll = (): void => {\n (this.#chGridEl as any).selectAllRows();\n };\n\n #nameInputHandler = (e: ChEditCustomEvent<string> | InputEvent) => {\n this.name = (e as ChEditCustomEvent<string>).detail.trim();\n this.#getAttributes();\n };\n\n #typeInputHandler = (e: CustomEvent<string> | InputEvent) => {\n this.type = e.detail as string;\n this.#getAttributes();\n };\n\n render(): void {\n const btnDisabled = !this.attributes || this.attributes.length === 0;\n const matchingAttributesLabel =\n this.attributes?.length === 1\n ? this.#_componentLocale.matchingAttribute\n : this.#_componentLocale.matchingAttributes;\n const attributesLength = this.attributes?.length || 0;\n\n return (\n <Host class=\"widget\">\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <section class=\"section\">\n {this.#renderFilter()}\n\n {this.#renderAttributesGrid()}\n\n <footer class=\"control-footer control-footer-with-border spacing-body-block-end spacing-body-inline control-footer-space-between\">\n <p class=\"body-regular-s matching-attributes\">\n {`${attributesLength} ${matchingAttributesLabel}`}\n </p>\n\n <button\n id=\"button-select-all\"\n class=\"button-primary\"\n onClick={this.#selectAll}\n disabled={btnDisabled}\n part=\"button button--select-all\"\n >\n {this.#_componentLocale.footer.btnSelectAll}\n </button>\n </footer>\n </section>\n </Host>\n );\n }\n}\n\nexport type ContextMenuCallback = (\n contextMenuInfo: ContextMenuInfo\n) => Promise<void>;\n\nexport type DeleteSelectionCallback = (ids: string[]) => Promise<void>;\n\nexport type LoadCallback = (\n filters: AttributeFiltersData\n) => Promise<AttributeData[]>;\n\nexport type ObjectActionCallback = () => Promise<EntityData | undefined>;\n\nexport type OpenSelectionCallback = (ids: string[]) => Promise<void>;\n\nexport type SelectionChangeCallback = (ids: string[]) => Promise<void>;\n\nexport interface AttributeData {\n id: string;\n icon: string;\n name: string;\n type: string;\n description: string;\n}\n\nexport interface AttributeFiltersData {\n name?: string;\n type?: string;\n object?: string;\n}\n"],"version":3}
1
+ {"file":"gx-ide-ww-attributes.entry.cjs.js","mappings":"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","names":["getIconPath","h","config","Locale","Host"],"sources":["src/components/ww-attributes/helpers.tsx","src/components/ww-attributes/ww-attributes.scss?tag=gx-ide-ww-attributes&encapsulation=shadow","src/components/ww-attributes/ww-attributes.tsx"],"sourcesContent":["import { ComboBoxModel } from \"@genexus/chameleon-controls-library\";\nimport { GxOption } from \"../..\";\n\nexport const mapOptionsToComboBoxItemModel = (\n options: GxOption[]\n): ComboBoxModel => {\n return options.map(option => {\n return {\n value: option.id,\n caption: option.label,\n startImgSrc: option.iconName ?? \"\"\n };\n });\n};\n","@import \"../../../node_modules/@genexus/mercury/dist/assets/scss/helpers.scss\"; // for the tabular-grid-cell-layout mixin\n\n$nameInlineSize: 40px;\n$moreBtnInlineSize: 64px;\n\n:host {\n display: grid;\n block-size: 100%;\n overflow: auto;\n grid-template-rows: max-content 1fr max-content;\n}\n\n.section {\n display: contents;\n}\n// Header\n.header {\n grid-template:\n \"name type\" max-content\n \"object object\" max-content;\n grid-template-columns: 1fr 1fr;\n}\n.name__field {\n grid-area: name;\n}\n.name__label {\n inline-size: $nameInlineSize;\n}\n.type__field {\n grid-area: type;\n}\n.more__btn {\n grid-area: more;\n inline-size: $moreBtnInlineSize;\n}\n.object-selector__field {\n grid-area: object;\n}\n\n// Main\n.main {\n overflow: auto;\n}\n\nch-tabular-grid.tabular-grid--empty::part(main) {\n // WA to avoid scrollbar flickering when displaying the empty-state message\n overflow: hidden;\n}\nch-tabular-grid-rowset-empty {\n position: relative; // makes this the bounder element for the loader\n}\n\n@include tabular-grid-cell-layout(\n $tabular-grid-selector: \".tabular-grid-row\",\n $tabular-grid-cell-node-type: \"text\",\n $tabular-grid-cell-apply-ellipsis: true,\n $tabular-grid-affected-columns-nth-list: (\n 2,\n 3,\n 4\n )\n);\n\n// WA: remove this when Mercury removes margin from p elements\n.matching-attributes {\n margin: 0;\n}\n","/* eslint-disable @stencil-community/own-props-must-be-private */\n// Stencil\nimport {\n Component,\n Element,\n Host,\n Listen,\n Method,\n Prop,\n State,\n h\n} from \"@stencil/core\";\n// Other Libraries\nimport { MercuryBundles, getIconPath } from \"@genexus/mercury\";\n// Custom Imports\nimport { config } from \"../../common/config\";\nimport { Locale } from \"../../common/locale\";\nimport { ContextMenuInfo, EntityData, GxOption } from \"../../common/types\";\nimport { mapOptionsToComboBoxItemModel } from \"./helpers\";\nimport { ChEditCustomEvent } from \"@genexus/chameleon-controls-library\";\nimport HTMLChTabularGridRowsetElement from \"@genexus/chameleon-controls-library/dist/types/components/tabular-grid/rowset/tabular-grid-rowset\";\nimport { GxIdeEntitySelectorCustomEvent } from \"../../components\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"components/button\",\n \"components/edit\",\n \"components/combo-box\",\n \"components/tabular-grid\",\n \"components/icon\",\n \"utils/form\",\n \"utils/layout\",\n \"utils/spacing\",\n \"chameleon/scrollbar\"\n];\n\nconst FILTER_ICON = getIconPath({\n category: \"window-tools\",\n name: \"filter\",\n colorType: \"on-elevation\"\n});\n\n@Component({\n tag: \"gx-ide-ww-attributes\",\n styleUrl: \"ww-attributes.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/ww-attributes\"]\n})\nexport class GxIdeWWAttributes {\n /**\n * Component hard-coded strings translations.\n */\n #_componentLocale: any;\n\n @Element() el: HTMLGxIdeWwAttributesElement;\n\n /* References needed to collect data */\n #chGridEl!: HTMLChTabularGridElement;\n\n /**\n * Attributes rendered in the table\n */\n @State() attributes: AttributeData[];\n\n /**\n * Selected attributes in the table of attributes\n */\n @State() selectedAttributesIds: string[] = [];\n\n /**\n * Show or hide advanced filters\n */\n @State() filterMore = false;\n\n /**\n * The attribute filter name\n */\n @State() name: string = \"\";\n\n /**\n * True if loadCallback hasn't been resolved yet\n */\n @State() loading: boolean = true;\n\n /**\n * The attribute object value\n */\n @State() object: EntityData;\n\n /**\n * The attribute filter type value\n */\n @State() type: string;\n\n /**\n * Callback invoked when user right-clicks on the grid\n */\n @Prop() readonly contextMenuCallback!: ContextMenuCallback;\n\n /**\n * Callback invoked when user deletes an object\n */\n @Prop() readonly deleteSelectionCallback!: DeleteSelectionCallback;\n\n /**\n * Callback invoked when user filters the objects\n */\n @Prop() readonly loadCallback!: LoadCallback;\n\n /**\n * Callback invoked when user executes filter action\n */\n @Prop() readonly objectActionCallback!: ObjectActionCallback;\n\n /**\n * Objects rendered in the object selector\n */\n @Prop() readonly objects!: GxOption[];\n\n /**\n * Callback invoked when user opens the selection dialog\n */\n @Prop() readonly openSelectionCallback!: OpenSelectionCallback;\n\n /**\n * Callback invoked when user selects or deselects an object\n */\n @Prop() readonly selectionChangeCallback!: SelectionChangeCallback;\n\n /**\n * Types rendered in the filter type selector\n */\n @Prop() readonly types!: GxOption[];\n\n async componentWillLoad() {\n this.#_componentLocale = await Locale.getComponentStrings(this.el);\n }\n\n componentDidLoad() {\n this.#listenChanges();\n this.type = this.types[0].id; // before #getAttributes\n this.#getAttributes();\n }\n\n @Listen(\"keydown\", { passive: true })\n keyDownHandler(eventInfo: KeyboardEvent) {\n if (document.activeElement === this.el) {\n switch (eventInfo.key) {\n case \"Enter\":\n this.#openSelectionCallbackHandle();\n break;\n case \"Delete\":\n this.#deleteSelectionCallbackHandle();\n break;\n }\n }\n }\n\n /**\n * Reloads the view, refreshing the filters and attributes table.\n */\n @Method()\n async reload(): Promise<void> {\n this.name = \"\";\n this.type = this.types[0].id;\n this.object = null;\n this.#getAttributes();\n }\n\n /**\n * Validate necessary data input\n */\n @Method()\n async validate(): Promise<boolean> {\n const isValid = true;\n return isValid;\n }\n\n #contextMenuCallbackHandler = (ev: MouseEvent): void => {\n this.contextMenuCallback({\n selection: this.selectedAttributesIds,\n clientX: ev.clientX,\n clientY: ev.clientY\n });\n };\n\n #deleteSelectionCallbackHandle = (): void => {\n this.deleteSelectionCallback(this.selectedAttributesIds);\n };\n\n #deselectAll = (): void => {\n (this.#chGridEl as any).selectAllRows(false);\n };\n\n #getAttributes = (): void => {\n this.loading = true;\n const filters: AttributeFiltersData = {\n name: this.name.trim(),\n type: this.type,\n object: this.object?.id\n };\n this.loadCallback(filters).then((items: AttributeData[]) => {\n this.attributes = items;\n if (this.selectedAttributesIds?.length > 0) {\n this.selectedAttributesIds = [];\n this.#deselectAll();\n }\n this.loading = false;\n });\n };\n\n #listenChanges = (): void => {\n // for grid selection\n this.#chGridEl.addEventListener(\"selectionChanged\", (ev: any): void => {\n this.selectedAttributesIds = ev.detail.rowsId;\n this.selectionChangeCallback(this.selectedAttributesIds);\n });\n this.#chGridEl.addEventListener(\"contextmenu\", (ev: MouseEvent): void => {\n ev.preventDefault();\n ev.stopPropagation();\n this.#contextMenuCallbackHandler(ev);\n });\n\n this.#chGridEl.addEventListener(\"rowDoubleClicked\", (): void => {\n this.#openSelectionCallbackHandle();\n });\n };\n\n #openSelectionCallbackHandle = (): void => {\n this.openSelectionCallback(this.selectedAttributesIds);\n };\n\n #entityCallbackHandler = async (): Promise<null> => {\n const result = await this.objectActionCallback();\n this.object = {\n id: result.id,\n name: result.name,\n iconSrc: result.iconSrc\n };\n return new Promise(resolve => {\n resolve(null);\n });\n };\n\n #entityValueChangedHandler = (\n event: GxIdeEntitySelectorCustomEvent<EntityData>\n ) => {\n this.object = event.detail;\n this.#getAttributes();\n };\n\n #renderAttributesGrid = (): Element => {\n const tabularGridEmpty = this.attributes?.length === 0 || !this.attributes;\n return (\n <ch-tabular-grid\n class={{\n \"tabular-grid\": true,\n \"tabular-grid--empty\": tabularGridEmpty,\n \"main\": true\n }}\n ref={(el: HTMLChTabularGridElement) => (this.#chGridEl = el)}\n row-selection-mode=\"multiple\"\n part=\"ch-grid-attributes\"\n >\n <ch-tabular-grid-columnset class=\"tabular-grid-column-set\">\n <ch-tabular-grid-column\n column-name=\"\"\n column-name-position=\"text\"\n settingable={false}\n size={config.tabularGrid.colSize.maxContent}\n class=\"tabular-grid-column\"\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n column-name={this.#_componentLocale.tableHead.name}\n column-name-position=\"text\"\n size={config.tabularGrid.colSize.auto}\n class=\"tabular-grid-column\"\n settingable={false}\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n column-name={this.#_componentLocale.tableHead.type}\n column-name-position=\"text\"\n class=\"tabular-grid-column\"\n size={config.tabularGrid.colSize.auto}\n settingable={false}\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n column-name={this.#_componentLocale.tableHead.description}\n column-name-position=\"text\"\n size={config.tabularGrid.colSize.auto}\n class=\"tabular-grid-column\"\n settingable={false}\n ></ch-tabular-grid-column>\n </ch-tabular-grid-columnset>\n\n {this.#evaluateAttributesGridContent()}\n </ch-tabular-grid>\n );\n };\n\n #evaluateAttributesGridContent = (): HTMLChTabularGridRowsetElement => {\n if (this.loading) {\n return (\n <ch-tabular-grid-rowset class=\"tabular-grid-rowset\">\n <ch-tabular-grid-rowset-empty>\n <gx-ide-loader\n loaderTitle={this.#_componentLocale.loader.title}\n description={this.#_componentLocale.loader.description}\n show\n ></gx-ide-loader>\n </ch-tabular-grid-rowset-empty>\n </ch-tabular-grid-rowset>\n );\n } else if (this.attributes.length) {\n return (\n <ch-tabular-grid-rowset class=\"tabular-grid-rowset\">\n {this.attributes.map((attr: AttributeData) => (\n <ch-tabular-grid-row class=\"tabular-grid-row\" rowid={attr.id}>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n <ch-image class=\"icon-sm\" src={attr.icon}></ch-image>\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {attr.name}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {attr.type}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {attr.description}\n </ch-tabular-grid-cell>\n </ch-tabular-grid-row>\n ))}\n </ch-tabular-grid-rowset>\n );\n } else {\n // filter returned none\n return (\n <ch-tabular-grid-rowset class=\"tabular-grid-rowset\">\n <ch-tabular-grid-rowset-empty>\n <gx-ide-empty-state\n stateIconSrc={FILTER_ICON}\n stateTitle={this.#_componentLocale.emptyStateTitle}\n isAnimated={true}\n ></gx-ide-empty-state>\n </ch-tabular-grid-rowset-empty>\n </ch-tabular-grid-rowset>\n );\n }\n };\n\n #renderFilter = (): Element => {\n return (\n <header class=\"header field-group control-header-with-border spacing-body\">\n <div class=\"field field-inline name__field\">\n <label class=\"label name__label\" htmlFor=\"name\">\n {this.#_componentLocale.filter.name}\n </label>\n <ch-edit\n // Name\n id=\"name\"\n class=\"input\"\n value={this.name}\n debounce={300}\n onInput={this.#nameInputHandler}\n part=\"filter-name\"\n ></ch-edit>\n </div>\n\n <div class=\"field field-inline type__field\">\n <label class=\"label\" htmlFor=\"type\">\n {this.#_componentLocale.filter.type}\n </label>\n <ch-combo-box-render\n // Type\n id=\"type\"\n class=\"combo-box\"\n disabled={!this.types}\n value={this.type}\n model={mapOptionsToComboBoxItemModel(this.types ?? [])}\n part=\"filter-type\"\n onInput={this.#typeInputHandler}\n ></ch-combo-box-render>\n </div>\n\n {/* <button\n // TODO: Check with Design if it maes sense to have a button that toggles only one control.\n // More\n class=\"button-primary more__btn\"\n onClick={this.#showMoreFilter}\n part=\"button button--more-less\"\n >\n {this.filterMore\n ? this.#_componentLocale.filter.btnLess\n : this.#_componentLocale.filter.btnMore}\n </button> */}\n\n <div class=\"field field-inline object-selector__field\">\n <label class=\"label\" htmlFor=\"object-selector\">\n {this.#_componentLocale.filter.object}\n </label>\n <gx-ide-entity-selector\n // Object\n id=\"object-selector\"\n value={this.object}\n labelPosition=\"none\"\n defaultValue={null}\n selectEntityCallback={this.#entityCallbackHandler}\n onValueChanged={this.#entityValueChangedHandler}\n part=\"filter-module-folder\"\n ></gx-ide-entity-selector>\n </div>\n </header>\n );\n };\n\n #selectAll = (): void => {\n (this.#chGridEl as any).selectAllRows();\n };\n\n #nameInputHandler = (e: ChEditCustomEvent<string> | InputEvent) => {\n this.name = (e as ChEditCustomEvent<string>).detail.trim();\n this.#getAttributes();\n };\n\n #typeInputHandler = (e: CustomEvent<string> | InputEvent) => {\n this.type = e.detail as string;\n this.#getAttributes();\n };\n\n render(): void {\n const btnDisabled = !this.attributes || this.attributes.length === 0;\n const matchingAttributesLabel =\n this.attributes?.length === 1\n ? this.#_componentLocale.matchingAttribute\n : this.#_componentLocale.matchingAttributes;\n const attributesLength = this.attributes?.length || 0;\n\n return (\n <Host class=\"widget\">\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <section class=\"section\">\n {this.#renderFilter()}\n\n {this.#renderAttributesGrid()}\n\n <footer class=\"control-footer control-footer-with-border spacing-body-block-end spacing-body-inline control-footer-space-between\">\n <p class=\"body-regular-s matching-attributes\">\n {`${attributesLength} ${matchingAttributesLabel}`}\n </p>\n\n <button\n id=\"button-select-all\"\n class=\"button-primary\"\n onClick={this.#selectAll}\n disabled={btnDisabled}\n part=\"button button--select-all\"\n >\n {this.#_componentLocale.footer.btnSelectAll}\n </button>\n </footer>\n </section>\n </Host>\n );\n }\n}\n\nexport type ContextMenuCallback = (\n contextMenuInfo: ContextMenuInfo\n) => Promise<void>;\n\nexport type DeleteSelectionCallback = (ids: string[]) => Promise<void>;\n\nexport type LoadCallback = (\n filters: AttributeFiltersData\n) => Promise<AttributeData[]>;\n\nexport type ObjectActionCallback = () => Promise<EntityData | undefined>;\n\nexport type OpenSelectionCallback = (ids: string[]) => Promise<void>;\n\nexport type SelectionChangeCallback = (ids: string[]) => Promise<void>;\n\nexport interface AttributeData {\n id: string;\n icon: string;\n name: string;\n type: string;\n description: string;\n}\n\nexport interface AttributeFiltersData {\n name?: string;\n type?: string;\n object?: string;\n}\n"],"version":3}
@@ -3,7 +3,11 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  const index = require('./index-2f1471c9.js');
6
- const MERCURY_ASSETS = require('./MERCURY_ASSETS-f14e91ff.js');
6
+ const assetsManager = require('./assets-manager-089e91b1.js');
7
+ require('./mer-animated-dots-001c7465.js');
8
+ require('lit');
9
+ require('lit/directives/when.js');
10
+ require('lit/directives/if-defined.js');
7
11
  const locale = require('./locale-ff30a5f3.js');
8
12
  const config = require('./config-df6ba4e9.js');
9
13
  const helpers$1 = require('./helpers-8fb178a2.js');
@@ -43,17 +47,17 @@ const CSS_BUNDLES = [
43
47
  "utils/typography",
44
48
  "utils/spacing"
45
49
  ];
46
- const CLEAR_ICON = MERCURY_ASSETS.getIconPath({
50
+ const CLEAR_ICON = assetsManager.getIconPath({
47
51
  category: "system",
48
52
  name: "close",
49
53
  colorType: "neutral"
50
54
  });
51
- const FILTER_ICON = MERCURY_ASSETS.getIconPath({
55
+ const FILTER_ICON = assetsManager.getIconPath({
52
56
  category: "window-tools",
53
57
  name: "filter",
54
58
  colorType: "on-elevation"
55
59
  });
56
- const INFO_ICON = MERCURY_ASSETS.getIconPath({
60
+ const INFO_ICON = assetsManager.getIconPath({
57
61
  category: "system",
58
62
  name: "information",
59
63
  colorType: "on-elevation"
@@ -1 +1 @@
1
- {"file":"gx-ide-ww-files.entry.cjs.js","mappings":"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","names":["getIconPath","h","formatDate","config","hiChar","mapOptionsToComboBoxItemModel","Locale","Host"],"sources":["src/components/ww-files/ww-files.scss?tag=gx-ide-ww-files&encapsulation=shadow","src/components/ww-files/ww-files.tsx"],"sourcesContent":["@import \"../../global/gx-ide-mixins.scss\";\n@import \"../../../node_modules/@genexus/mercury/dist/assets/scss/helpers.scss\";\n\n:host {\n container-type: inline-size;\n display: grid;\n block-size: 100%;\n overflow: auto;\n grid-template-rows: max-content 1fr max-content;\n}\n\n.section {\n display: contents;\n}\n\n// - - - - - - - - - - - -\n// Header\n// - - - - - - - - - - - -\n\n.header {\n grid-template-areas:\n \"name module-folder\"\n \"advanced-filter advanced-filter\";\n grid-template-columns: 1fr 1fr;\n grid-auto-rows: max-content max-content;\n}\n.name {\n grid-area: name;\n}\n.module-folder {\n grid-area: module-folder;\n}\n.advanced-filter {\n grid-area: advanced-filter;\n}\n\n// Advanced Filter\n.advanced-filter {\n &__container {\n display: grid;\n grid-auto-rows: max-content;\n }\n &__first-row {\n grid-template-columns: 1fr 1fr;\n }\n &__second-row {\n grid-template-columns: 1fr 1fr 1fr;\n }\n .all-descendants__modified {\n display: flex;\n flex-direction: row;\n align-items: center;\n block-size: 32px;\n gap: 16px;\n align-self: self-end;\n }\n}\n// date/time\n.field-date {\n grid-template-areas:\n \"label-date-time label-date-time\"\n \"input-date-time icon-clear-date-time\";\n grid-template-columns: 1fr max-content;\n column-gap: var(--mer-spacing--2xs);\n}\n.label-date-time {\n // WA: There is no official way to use an icon (ch-image) within a label\n display: flex;\n align-items: center;\n gap: 6px;\n .icon-md {\n // WA: Icon looks so small that it is not recognizable\n --mer-icon__box--md: 16.8px;\n }\n grid-area: label-date-time;\n}\n.input-date-time {\n block-size: 31.98px; // WA: ch-edit of type \"date\" block-size is a little bit larger than regular ch-edit block-size. It should compute to 31.98px at the time of writting.\n grid-area: input-date-time;\n}\n.icon-clear-date-time {\n grid-area: icon-clear-date-time;\n}\n\n// - - - - - - - - - - - -\n// Grid\n// - - - - - - - - - - - -\n\n.tabular-grid {\n overflow: auto;\n inline-size: 100%;\n border-inline-end: var(--section-common-border);\n}\n.tabular-grid.empty::part(main),\n.tabular-grid.loading::part(main) {\n // WA to avoid scrollbar flickering when displaying the empty-state message\n overflow: hidden;\n}\nch-tabular-grid-rowset-empty {\n position: relative;\n}\n.main__files-container {\n display: grid;\n grid-template-columns: repeat(4, 1fr);\n gap: var(--mer-spacing--xs);\n position: relative;\n z-index: 1;\n}\n\n@include hiChar;\n\n@include tabular-grid-cell-layout(\n $tabular-grid-selector: \".tabular-grid\",\n $tabular-grid-cell-node-type: \"text\",\n $tabular-grid-cell-apply-ellipsis: true,\n $tabular-grid-affected-columns-nth-list: (\n 4\n )\n);\n.tabular-grid-cell-description {\n min-inline-size: max-content !important; // TODO: See how to remove the !important\n}\n\n@include hiChar();\n\n// - - - - - - - - - - - -\n// Responsive\n// - - - - - - - - - - - -\n\n// @container (max-width: 992px) {\n// .main__files-container {\n// grid-template-columns: repeat(3, 1fr);\n// }\n// }\n","import {\n Component,\n Host,\n h,\n Prop,\n Element,\n State,\n Method,\n Listen,\n Watch\n} from \"@stencil/core\";\n\nimport {\n ChCheckboxCustomEvent,\n TabularGridRowContextMenuEvent\n} from \"@genexus/chameleon-controls-library\";\n\nimport { getIconPath, MercuryBundles } from \"@genexus/mercury\";\n\nimport { Locale } from \"../../common/locale\";\nimport { GxOption } from \"../../common/types\";\nimport { EntityData, ContextMenuInfo } from \"../../common/types\";\nimport { config } from \"../../common/config\";\nimport { mapOptionsToComboBoxItemModel, hiChar } from \"./helpers\";\nimport {\n AccordionModel,\n ComboBoxModel\n} from \"@genexus/chameleon-controls-library\";\nimport { formatDate } from \"../../common/helpers\";\nimport { GxIdeEntitySelectorCustomEvent } from \"../..\";\n\ninterface TabularGridWithSelection extends HTMLChTabularGridElement {\n selectAllRows: (select?: boolean) => Promise<void>;\n}\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"components/button\",\n \"components/checkbox\",\n \"components/combo-box\",\n \"components/accordion\",\n \"components/edit\",\n \"components/icon\",\n \"components/tooltip\",\n \"components/tabular-grid\",\n \"utils/form\",\n \"utils/layout\",\n \"utils/typography\",\n \"utils/spacing\"\n];\n\nconst CLEAR_ICON = getIconPath({\n category: \"system\",\n name: \"close\",\n colorType: \"neutral\"\n});\nconst FILTER_ICON = getIconPath({\n category: \"window-tools\",\n name: \"filter\",\n colorType: \"on-elevation\"\n});\nconst INFO_ICON = getIconPath({\n category: \"system\",\n name: \"information\",\n colorType: \"on-elevation\"\n});\n\nconst ACCORDION_FILTER_ID = \"advanced-filter\";\nconst FILTER_AFTER_DATE_TIME = \"afterDateTime\";\nconst FILTER_AFTER_LAST_BUILD = \"afterLastBuild\";\nconst FILTER_AFTER_IMPORT = \"afterImport\";\n\nconst CHECKBOX_CHECKED_VALUE = \"checked\";\nconst CHECKBOX_UNCHECKED_VALUE = \"unchecked\";\n\n@Component({\n tag: \"gx-ide-ww-files\",\n styleUrl: \"ww-files.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/ww-files\"]\n})\nexport class GxIdeWWFiles {\n #componentLocale: any;\n #ACCORDION_MODEL: AccordionModel = [];\n\n // Filter Values\n #nameValue: string;\n #moduleValue: EntityData;\n // Advanced Filter Values\n #searchContentsValue: string;\n #categoryValue: string;\n #allDescendants: CheckboxState;\n #userValue: string;\n // Other\n #selectedObjectsIds: string[] = [];\n\n @Element() el: HTMLGxIdeWwFilesElement;\n #chGridEl!: HTMLChTabularGridElement;\n #filterModuleEl!: HTMLGxIdeEntitySelectorElement;\n\n /**\n * The \"After\" control value. Controls the visibility of the \"Date/Time\" control.\n */\n @State() afterValue: string;\n\n /**\n * The \"Category\" options as combo box model\n */\n @State() categoriesComboBoxModel: ComboBoxModel = [];\n\n /**\n * Value of the Date/Time control\n */\n @State() dateTimeValue: string;\n @Watch(\"dateTimeValue\")\n dateTimeValueChanged() {\n this.#getObjects();\n }\n\n /**\n * A loader that is shown when the filter changes and the server has to retrieve new data.\n */\n @State() isLoading: boolean = true;\n\n /**\n * The options for the \"After\" combo-box\n */\n @State() filterAfterComboBoxModel: ComboBoxModel;\n\n /**\n * For show or hide the filters relative to modifiers\n */\n @State() showModified: CheckboxState = CHECKBOX_CHECKED_VALUE;\n\n /**\n * The files rendered in the table\n */\n @State() objects: ObjectData[] = [];\n\n /**\n * The categories render in the filter category selector\n */\n @Prop() readonly categories!: GxOption[];\n @Watch(\"categories\")\n categoriesChanged(newCategories: GxOption[]) {\n this.categoriesComboBoxModel = mapOptionsToComboBoxItemModel(newCategories);\n }\n\n /**\n * This is a function provided by the developer for show the context menu of the selected files.\n */\n @Prop() readonly contextMenuCallback!: ContextMenuCallback;\n\n /**\n * The default value for the category filter\n */\n @Prop() readonly defaultCategory: string;\n\n /**\n * The default value for the module/folder filter\n */\n @Prop() readonly defaultModule: EntityData;\n\n /**\n * This is a function provided by the developer for delete the selected files.\n */\n @Prop() readonly deleteSelectionCallback!: DeleteSelectionCallback;\n\n /**\n * Controls the visibility of the tabular grid cell columns, and respective cells.\n */\n @Prop() readonly gridColumnsVisibility: GridColumnsVisibility = {\n description: true,\n importDate: true,\n lastBuildDate: true,\n lastUser: true,\n modifiedDate: true\n };\n\n /**\n * This is a function provided by the developer that return a list of files to populate the table of files.\n */\n @Prop() readonly loadCallback!: LoadCallback;\n\n /**\n *\n */\n @Prop() readonly newFileCallback!: NewFileCallback;\n\n /**\n * This is a function provided by the developer to expand the data of files that is double-clicked or entered.\n */\n @Prop() readonly openSelectionCallback!: OpenSelectionCallback;\n\n /**\n * Callback invoked when the action is executed on the Module/Folder filter (button '...'). It returns the information of the selected object (id and name) or 'undefined' if it was canceled.\n */\n @Prop() readonly selectModuleCallback!: SelectModuleCallback;\n\n /**\n * This is a function provided by the developer for expanded the data of files that is double-clicked or entered.\n */\n @Prop() readonly selectionChangeCallback!: SelectionChangeCallback;\n\n /**\n * Controls whether to show the Search contents field in the advanced filter section (Not available at the time of writting, since the server is not handling this feature yet.)\n */\n @Prop() readonly showSearchContents = false;\n\n async componentWillLoad() {\n this.#componentLocale = await Locale.getComponentStrings(this.el);\n\n // initialize combo-box models∂\n this.categoriesChanged(this.categories);\n\n // initialize \"After\" combo-box options\n this.filterAfterComboBoxModel = [\n {\n caption: this.#componentLocale.filter[FILTER_AFTER_DATE_TIME],\n value: FILTER_AFTER_DATE_TIME\n },\n {\n caption: this.#componentLocale.filter[FILTER_AFTER_LAST_BUILD],\n value: FILTER_AFTER_LAST_BUILD\n },\n {\n caption: this.#componentLocale.filter[FILTER_AFTER_IMPORT],\n value: FILTER_AFTER_IMPORT\n }\n ];\n\n // initialize accordion model with proper configuration\n this.#ACCORDION_MODEL = [\n {\n id: ACCORDION_FILTER_ID,\n caption: this.#componentLocale.filter.accordionCaption,\n expanded: false\n }\n ];\n\n this.#setFilterDefaultValues();\n }\n #setFilterDefaultValues = () => {\n this.#nameValue = \"\";\n this.#moduleValue = { ...this.defaultModule };\n this.#searchContentsValue = \"\";\n\n this.#categoryValue =\n this.defaultCategory ||\n (this.categoriesComboBoxModel && this.categoriesComboBoxModel.length > 0\n ? this.categoriesComboBoxModel[0].value\n : \"\");\n\n this.#allDescendants = CHECKBOX_UNCHECKED_VALUE;\n\n this.afterValue =\n this.filterAfterComboBoxModel && this.filterAfterComboBoxModel.length > 0\n ? this.filterAfterComboBoxModel[0].value\n : FILTER_AFTER_DATE_TIME;\n\n this.#userValue = \"\";\n this.dateTimeValue = undefined;\n };\n\n componentDidLoad() {\n this.#attachGridListeners();\n this.#getObjects();\n }\n\n @Listen(\"keydown\", { passive: true })\n keyDownHandler(eventInfo: KeyboardEvent) {\n if (document.activeElement === this.el) {\n switch (eventInfo.key) {\n case \"Enter\":\n eventInfo.preventDefault();\n this.#openSelectionCallbackHandler();\n break;\n case \"Delete\":\n eventInfo.preventDefault();\n this.#deleteSelectionCallbackHandler();\n break;\n case \"Escape\":\n eventInfo.preventDefault();\n this.#deselectAll();\n break;\n }\n }\n }\n\n /**\n * Reloads the view, refreshing the filters and the table of files.\n */\n @Method()\n async reload(): Promise<void> {\n try {\n if (this.#componentLocale && this.filterAfterComboBoxModel) {\n this.#setFilterDefaultValues();\n this.#getObjects();\n }\n } catch (error) {\n console.error(\"Error in reload method:\");\n // Fallback: try only getObjects if setFilterDefaultValues fails\n try {\n this.#getObjects();\n } catch (fallbackError) {\n console.error(\"Fallback also failed:\");\n }\n }\n }\n\n #allDescendantsCheckboxHandler = (\n event: ChCheckboxCustomEvent<any> | InputEvent\n ) => {\n this.#allDescendants =\n event.detail === CHECKBOX_CHECKED_VALUE\n ? CHECKBOX_CHECKED_VALUE\n : CHECKBOX_UNCHECKED_VALUE;\n this.#getObjects();\n };\n\n #handleSelectionChanged = (ev: CustomEvent<{ rowsId: string[] }>): void => {\n this.#selectedObjectsIds = ev.detail.rowsId;\n this.selectionChangeCallback(this.#selectedObjectsIds);\n };\n\n #handleRowDoubleClicked = (): void => {\n this.#openSelectionCallbackHandler();\n };\n\n #handleRowContextMenu = (ev: CustomEvent<TabularGridRowContextMenuEvent>): void => {\n ev.preventDefault();\n ev.stopPropagation();\n this.contextMenuCallback({\n selection: ev.detail.selectedRowsId,\n clientX: ev.detail.clientX,\n clientY: ev.detail.clientY\n });\n };\n\n #attachGridListeners = (): void => {\n this.#chGridEl.addEventListener(\"selectionChanged\", this.#handleSelectionChanged);\n this.#chGridEl.addEventListener(\"rowDoubleClicked\", this.#handleRowDoubleClicked);\n this.#chGridEl.addEventListener(\"rowContextMenu\", this.#handleRowContextMenu);\n };\n\n #categoryInputHandler = async (event: CustomEvent<string> | InputEvent) => {\n this.#categoryValue = event.detail as string;\n this.#getObjects();\n };\n\n #clearDateTimeValue = () => {\n this.dateTimeValue = undefined;\n };\n\n #dateTimeInputHandler = (event: CustomEvent<any> | InputEvent) => {\n this.dateTimeValue = event.detail;\n this.#getObjects();\n };\n\n #deleteSelectionCallbackHandler = (): void => {\n this.deleteSelectionCallback(this.#selectedObjectsIds);\n };\n\n #deselectAll = (): void => {\n if (\n this.#chGridEl &&\n typeof (this.#chGridEl as TabularGridWithSelection).selectAllRows === \"function\"\n ) {\n (this.#chGridEl as TabularGridWithSelection).selectAllRows(false);\n }\n };\n\n #evaluateModifiedDates = (\n objectModifiedDate: Date,\n filterSelectedModifiedDate: string\n ) => {\n const filterSelectedModifiedDateAsDate = new Date(\n filterSelectedModifiedDate\n );\n if (filterSelectedModifiedDateAsDate >= objectModifiedDate) {\n // Object modifed date matches with filter date, or was modified after that date.\n // Highlight to show that it matches.\n return <span class=\"hiChar\">{this.#formatDate(objectModifiedDate)}</span>;\n } else {\n return this.#formatDate(objectModifiedDate);\n }\n };\n\n #filterAfterTypeCallbackHandler = (\n event: CustomEvent<string> | InputEvent\n ) => {\n this.afterValue = event.detail as string;\n this.#getObjects();\n };\n\n #formatDate = (date: Date): string => {\n return formatDate(date, \"date-time-short\");\n };\n\n #getObjects = () => {\n this.#setLoadingState();\n\n const parentId =\n this.#filterModuleEl && this.#filterModuleEl.value\n ? this.#filterModuleEl.value.id\n : this.defaultModule\n ? this.defaultModule.id\n : \"\";\n\n const filtersValues: ObjectFiltersData = {\n name: this.#nameValue,\n searchContents: this.#searchContentsValue,\n category: this.#categoryValue,\n parent: parentId,\n allDescendants: this.#allDescendants === CHECKBOX_CHECKED_VALUE,\n modifiedAfter: this.showModified ? this.afterValue : undefined,\n modifiedBy: this.showModified ? this.#userValue : undefined,\n modifiedDate: this.showModified ? new Date(this.dateTimeValue) : undefined\n };\n\n this.loadCallback(filtersValues).then((items: ObjectData[]) => {\n this.objects = items;\n this.#selectedObjectsIds = [];\n\n if (this.#chGridEl) {\n this.#deselectAll();\n }\n\n this.isLoading = false;\n });\n };\n\n #renderHeader = (): Element[] => {\n return [\n <div\n // Name\n class=\"field field-block field-name\"\n >\n <label class=\"label\" htmlFor=\"name\">\n {this.#componentLocale.filter.name}\n </label>\n <ch-edit\n id=\"name\"\n class=\"input\"\n value={this.#nameValue}\n onInput={this.#nameInputHandler}\n part=\"filter-files\"\n debounce={config.inputDebounce}\n disabled={this.isLoading}\n ></ch-edit>\n </div>,\n\n <div\n // Module\n class=\"field field-block field-module-folder\"\n >\n <label class=\"label\" htmlFor=\"module-folder\">\n {this.#componentLocale.filter.moduleFolder}\n </label>\n <gx-ide-entity-selector\n part=\"filter-module-folder\"\n id=\"module/folder\"\n labelPosition=\"none\"\n value={this.#moduleValue}\n defaultValue={this.defaultModule}\n selectEntityCallback={this.selectModuleCallback}\n ref={(el: HTMLGxIdeEntitySelectorElement) =>\n (this.#filterModuleEl = el as HTMLGxIdeEntitySelectorElement)\n }\n onValueChanged={this.#moduleValueChangedHandler}\n disabled={this.isLoading}\n ></gx-ide-entity-selector>\n </div>,\n\n <ch-accordion-render\n class=\"accordion-outlined advanced-filter\"\n model={this.#ACCORDION_MODEL}\n >\n <div\n slot={ACCORDION_FILTER_ID}\n class=\"spacing-body field-group advanced-filter__container\"\n >\n {this.showSearchContents && (\n <div\n // Search contents\n class=\"field field-block field-search-contents\"\n >\n <label class=\"label\" htmlFor=\"filter-content\">\n {this.#componentLocale.filter.content}\n </label>\n <ch-edit\n id=\"filter-content\"\n class=\"input\"\n onInput={this.#searchContentsInputHandler}\n part=\"filter-content\"\n ></ch-edit>\n </div>\n )}\n\n <div class=\"field-group advanced-filter__first-row\">\n <div\n // Category\n class=\"field field-block field-category\"\n >\n <label class=\"label\" htmlFor=\"filter-category\">\n {this.#componentLocale.filter.category}\n </label>\n <ch-combo-box-render\n id=\"filter-category\"\n class=\"combo-box disabled\"\n value={this.#categoryValue}\n disabled={!this.categories || this.isLoading}\n model={this.categoriesComboBoxModel}\n part=\"filter-category\"\n onInput={this.#categoryInputHandler}\n ></ch-combo-box-render>\n </div>\n\n <div\n // All descendants / Modified\n class=\"all-descendants__modified field field-inline\"\n >\n <ch-checkbox\n // All descendants\n class=\"checkbox\"\n caption={this.#componentLocale.filter.allDescendants}\n checkedValue={CHECKBOX_CHECKED_VALUE}\n unCheckedValue={CHECKBOX_UNCHECKED_VALUE}\n value={this.#allDescendants}\n onInput={this.#allDescendantsCheckboxHandler}\n part=\"filter-all-descendants\"\n disabled={this.isLoading}\n ></ch-checkbox>\n\n <ch-checkbox\n // Modified\n class=\"checkbox align-center\"\n caption={this.#componentLocale.filter.modified}\n checkedValue={CHECKBOX_CHECKED_VALUE}\n unCheckedValue={CHECKBOX_UNCHECKED_VALUE}\n value={this.showModified}\n onInput={this.#showModifiedCheckboxHandler}\n part=\"filter-modified\"\n ></ch-checkbox>\n </div>\n </div>\n\n {this.showModified === CHECKBOX_CHECKED_VALUE && (\n <div class=\"field-group advanced-filter__second-row\">\n <div\n // After\n class=\"field field-block field-after\"\n >\n <label class=\"label\" htmlFor=\"filter-after-type\">\n {this.#componentLocale.filter.after}\n </label>\n <ch-combo-box-render\n id=\"filter-after-type\"\n class=\"combo-box\"\n value={this.afterValue}\n model={this.filterAfterComboBoxModel}\n onInput={this.#filterAfterTypeCallbackHandler}\n part=\"filter-after-type\"\n disabled={this.isLoading}\n ></ch-combo-box-render>\n </div>\n\n <div\n // User\n class=\"field field-block field-user\"\n >\n <label class=\"label\" htmlFor=\"filter-user\">\n {this.#componentLocale.filter.user}\n </label>\n <ch-edit\n id=\"filter-user\"\n class=\"input\"\n value={this.#userValue}\n onInput={this.#userInputHandler}\n part=\"filter-user\"\n debounce={config.inputDebounce}\n disabled={this.isLoading}\n ></ch-edit>\n </div>\n\n {this.afterValue === FILTER_AFTER_DATE_TIME && (\n <div\n // Date/Time\n class={{\n \"field field-block field-date\": true,\n \"hide\": this.afterValue !== FILTER_AFTER_DATE_TIME\n }}\n >\n <label\n class=\"label label-date-time\"\n htmlFor=\"filter-date-time\"\n >\n {this.#componentLocale.filter.dateTime}\n <ch-image\n class=\"icon-md icon-clear-date-time\"\n src={INFO_ICON}\n ></ch-image>\n <ch-tooltip\n class=\"tooltip\"\n actionElement={null}\n blockAlign=\"outside-start\"\n inlineAlign=\"inside-start\"\n delay={config.tooltipSettings.delay}\n >\n {this.#componentLocale.filter.dateTimeTooltip}\n </ch-tooltip>\n </label>\n\n <ch-edit\n id=\"filter-date-time\"\n type=\"datetime-local\"\n class=\"input input-date-time\"\n value={this.dateTimeValue}\n onInput={this.#dateTimeInputHandler}\n part=\"filter-date-time\"\n disabled={this.isLoading}\n ></ch-edit>\n\n <button\n class=\"button-tertiary button-icon-only\"\n onClick={this.#clearDateTimeValue}\n disabled={this.isLoading}\n >\n <ch-image class=\"icon-md\" src={CLEAR_ICON} type=\"mask\" />\n </button>\n </div>\n )}\n </div>\n )}\n </div>\n </ch-accordion-render>\n ];\n };\n\n #renderObjects = (): Element => {\n const gridIsEmpty = !this.objects.length;\n\n return (\n <ch-tabular-grid\n ref={(el: HTMLChTabularGridElement) => (this.#chGridEl = el)}\n class={{\n \"tabular-grid\": true,\n \"loading\": this.isLoading,\n \"empty\": this.objects.length === 0\n }}\n rowSelectionMode=\"multiple\"\n part=\"ch-grid-files\"\n >\n <ch-tabular-grid-columnset class=\"tabular-grid-column-set\">\n <ch-tabular-grid-column\n columnName=\"\"\n columnNameHidden={false}\n settingable={false}\n size={config.tabularGrid.colSize.maxContent}\n class=\"tabular-grid-column\"\n ></ch-tabular-grid-column>\n\n <ch-tabular-grid-column\n columnName={this.#componentLocale.tableHead.name}\n columnNameHidden={false}\n settingable={false}\n size={config.tabularGrid.colSize.maxContent}\n class=\"tabular-grid-column\"\n ></ch-tabular-grid-column>\n\n <ch-tabular-grid-column\n columnName={this.#componentLocale.tableHead.module}\n columnNameHidden={false}\n settingable={false}\n size={config.tabularGrid.colSize.maxContent}\n class=\"tabular-grid-column\"\n ></ch-tabular-grid-column>\n\n {this.gridColumnsVisibility.description && (\n <ch-tabular-grid-column\n columnName={this.#componentLocale.tableHead.description}\n columnNameHidden={false}\n settingable={false}\n size={config.tabularGrid.colSize.auto}\n class=\"tabular-grid-column\"\n ></ch-tabular-grid-column>\n )}\n\n {this.gridColumnsVisibility.modifiedDate && (\n <ch-tabular-grid-column\n columnName={this.#componentLocale.tableHead.modifiedDate}\n columnNameHidden={false}\n settingable={false}\n size={config.tabularGrid.colSize.maxContent}\n class=\"tabular-grid-column\"\n ></ch-tabular-grid-column>\n )}\n\n {this.gridColumnsVisibility.lastUser && (\n <ch-tabular-grid-column\n columnName={this.#componentLocale.tableHead.lastUser}\n columnNameHidden={false}\n settingable={false}\n size={config.tabularGrid.colSize.maxContent}\n class=\"tabular-grid-column\"\n ></ch-tabular-grid-column>\n )}\n\n {this.gridColumnsVisibility.importDate && (\n <ch-tabular-grid-column\n columnName={this.#componentLocale.tableHead.importDate}\n columnNameHidden={false}\n settingable={false}\n size={config.tabularGrid.colSize.maxContent}\n class=\"tabular-grid-column\"\n ></ch-tabular-grid-column>\n )}\n\n {this.gridColumnsVisibility.lastBuildDate && (\n <ch-tabular-grid-column\n columnName={this.#componentLocale.tableHead.lastBuildDate}\n columnNameHidden={false}\n settingable={false}\n size={config.tabularGrid.colSize.maxContent}\n class=\"tabular-grid-column\"\n ></ch-tabular-grid-column>\n )}\n </ch-tabular-grid-columnset>\n\n {!gridIsEmpty ? (\n <ch-tabular-grid-rowset class=\"tabular-grid-rowset\">\n {this.objects?.map((object: ObjectData) => (\n <ch-tabular-grid-row rowid={object.id} class=\"tabular-grid-row\">\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n <ch-image src={object.icon}></ch-image>\n </ch-tabular-grid-cell>\n\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {hiChar(\n object.name.toLowerCase(),\n this.#nameValue.toLowerCase()\n )}\n </ch-tabular-grid-cell>\n\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {object.parent}\n </ch-tabular-grid-cell>\n\n {this.gridColumnsVisibility.description && (\n <ch-tabular-grid-cell class=\"tabular-grid-cell tabular-grid-cell-description\">\n {object.description}\n </ch-tabular-grid-cell>\n )}\n\n {this.gridColumnsVisibility.modifiedDate && (\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {this.#evaluateModifiedDates(\n object.modifiedDate,\n this.dateTimeValue\n )}\n </ch-tabular-grid-cell>\n )}\n\n {this.gridColumnsVisibility.lastUser && (\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {hiChar(object.lastUser?.toLowerCase(), this.#userValue)}\n </ch-tabular-grid-cell>\n )}\n\n {this.gridColumnsVisibility.importDate && (\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {hiChar(\n object.importDate\n ? this.#formatDate(object.importDate)\n : \"\",\n this.#nameValue\n )}\n </ch-tabular-grid-cell>\n )}\n\n {this.gridColumnsVisibility.lastBuildDate && (\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {hiChar(\n object.lastBuildDate\n ? this.#formatDate(object.lastBuildDate)\n : \"\",\n this.#nameValue\n )}\n </ch-tabular-grid-cell>\n )}\n </ch-tabular-grid-row>\n ))}\n </ch-tabular-grid-rowset>\n ) : (\n <ch-tabular-grid-rowset class=\"tabular-grid-rowset\">\n <ch-tabular-grid-rowset-empty>\n {this.isLoading ? (\n <gx-ide-loader\n loaderTitle={this.#componentLocale.loader.title}\n description={this.#componentLocale.loader.description}\n show\n ></gx-ide-loader>\n ) : (\n <gx-ide-empty-state\n isAnimated={true}\n stateIconSrc={FILTER_ICON}\n stateTitle={this.#componentLocale.emptyState.title}\n ></gx-ide-empty-state>\n )}\n </ch-tabular-grid-rowset-empty>\n </ch-tabular-grid-rowset>\n )}\n </ch-tabular-grid>\n );\n };\n\n #moduleValueChangedHandler = (\n event: GxIdeEntitySelectorCustomEvent<EntityData>\n ) => {\n this.#moduleValue = event.detail;\n this.#getObjects();\n };\n\n #nameInputHandler = (event: CustomEvent<any> | InputEvent) => {\n this.#nameValue = event.detail;\n this.#getObjects();\n };\n\n #newFileCallbackHandler = (): void => {\n this.newFileCallback();\n };\n\n #openSelectionCallbackHandler = (): void => {\n this.openSelectionCallback(this.#selectedObjectsIds);\n };\n\n #searchContentsInputHandler = (event: CustomEvent<any> | InputEvent) => {\n this.#searchContentsValue = event.detail;\n this.#getObjects();\n };\n\n #setLoadingState = () => {\n // Only clear if no objects or first load\n if (!this.objects || this.objects.length === 0) {\n this.objects = [];\n }\n this.isLoading = true;\n };\n\n #userInputHandler = (event: CustomEvent<any> | InputEvent) => {\n this.#userValue = event.detail;\n this.#getObjects();\n };\n\n #showModifiedCheckboxHandler = (\n event: ChCheckboxCustomEvent<any> | InputEvent\n ) => {\n this.showModified = event.detail;\n };\n\n #selectAll = (): void => {\n if (\n this.#chGridEl &&\n typeof (this.#chGridEl as TabularGridWithSelection).selectAllRows === \"function\"\n ) {\n (this.#chGridEl as TabularGridWithSelection).selectAllRows();\n }\n };\n\n render(): void {\n return (\n <Host class=\"widget\">\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n\n <section class=\"section\">\n <header class=\"header control-header-with-border spacing-body-inline spacing-body-block-start field-group\">\n {this.#renderHeader()}\n </header>\n\n {this.#renderObjects()}\n\n <footer class=\"control-footer-with-border control-footer-space-between spacing-body\">\n <p\n // matching objects\n class=\"text-body\"\n part=\"objects-matching\"\n >\n {`${this.objects?.length} ${\n this.#componentLocale.objCount.matching\n }`}\n </p>\n\n <div class=\"buttons-spacer\">\n <button\n // select all button\n id=\"button-select-all\"\n class=\"button-secondary\"\n onClick={this.#selectAll}\n part=\"button button--select-all\"\n disabled={this.isLoading}\n >\n {this.#componentLocale.footer.btnSelectAll}\n </button>\n\n <button\n // new file button\n id=\"button-new-file\"\n class=\"button-primary button-icon-and-text\"\n onClick={this.#newFileCallbackHandler}\n part=\"button button--new-file\"\n disabled={this.isLoading}\n >\n {this.#componentLocale.footer.btnNew}\n </button>\n </div>\n </footer>\n </section>\n </Host>\n );\n }\n}\n\nexport type SelectionChangeCallback = (ids: string[]) => Promise<void>;\nexport type OpenSelectionCallback = (ids: string[]) => Promise<void>;\nexport type DeleteSelectionCallback = (ids: string[]) => Promise<void>;\nexport type SelectModuleCallback = () => Promise<EntityData | undefined>;\n// export type ContextMenuCallback = (ids: string[]) => Promise<void>;\nexport type ContextMenuCallback = (\n contextMenuInfo: ContextMenuInfo\n) => Promise<void>;\nexport type NewFileCallback = () => Promise<void>;\nexport type LoadCallback = (\n filters: ObjectFiltersData\n) => Promise<ObjectData[]>;\n\nexport interface ObjectFiltersData {\n name?: string;\n searchContents?: string;\n category?: string;\n parent?: string;\n allDescendants?: boolean;\n modifiedAfter?: string;\n modifiedBy?: string;\n modifiedDate?: Date;\n}\nexport interface ObjectData {\n id: string;\n icon: string;\n name: string;\n description: string;\n parent: string;\n modifiedDate?: Date;\n lastUser?: string;\n importDate?: Date;\n lastBuildDate: Date;\n}\n\nexport type GridColumnsVisibility = {\n description: boolean;\n importDate: boolean;\n lastBuildDate: boolean;\n lastUser: boolean;\n modifiedDate: boolean;\n};\n\ntype CheckboxState =\n | typeof CHECKBOX_CHECKED_VALUE\n | typeof CHECKBOX_UNCHECKED_VALUE;\n"],"version":3}
1
+ {"file":"gx-ide-ww-files.entry.cjs.js","mappings":";;;;;;;;;;;;;;;AAAA,MAAM,UAAU,GAAG,29DAA29D;;;;;;;;;;;;;;;;;;;ACmC9+D,MAAM,WAAW,GAAmB;IAClC,mBAAmB;IACnB,mBAAmB;IACnB,qBAAqB;IACrB,sBAAsB;IACtB,sBAAsB;IACtB,iBAAiB;IACjB,iBAAiB;IACjB,oBAAoB;IACpB,yBAAyB;IACzB,YAAY;IACZ,cAAc;IACd,kBAAkB;IAClB,eAAe;CAChB,CAAC;AAEF,MAAM,UAAU,GAAGA,yBAAW,CAAC;IAC7B,QAAQ,EAAE,QAAQ;IAClB,IAAI,EAAE,OAAO;IACb,SAAS,EAAE,SAAS;CACrB,CAAC,CAAC;AACH,MAAM,WAAW,GAAGA,yBAAW,CAAC;IAC9B,QAAQ,EAAE,cAAc;IACxB,IAAI,EAAE,QAAQ;IACd,SAAS,EAAE,cAAc;CAC1B,CAAC,CAAC;AACH,MAAM,SAAS,GAAGA,yBAAW,CAAC;IAC5B,QAAQ,EAAE,QAAQ;IAClB,IAAI,EAAE,aAAa;IACnB,SAAS,EAAE,cAAc;CAC1B,CAAC,CAAC;AAEH,MAAM,mBAAmB,GAAG,iBAAiB,CAAC;AAC9C,MAAM,sBAAsB,GAAG,eAAe,CAAC;AAC/C,MAAM,uBAAuB,GAAG,gBAAgB,CAAC;AACjD,MAAM,mBAAmB,GAAG,aAAa,CAAC;AAE1C,MAAM,sBAAsB,GAAG,SAAS,CAAC;AACzC,MAAM,wBAAwB,GAAG,WAAW,CAAC;MAQhC,YAAY;;;QACvB,gDAAsB;QACtB,wCAAmC,EAAE,EAAC;;QAGtC,0CAAmB;QACnB,4CAAyB;;QAEzB,oDAA6B;QAC7B,8CAAuB;QACvB,+CAA+B;QAC/B,0CAAmB;;QAEnB,2CAAgC,EAAE,EAAC;QAGnC,yCAAqC;QACrC,+CAAiD;QAgJjD,+CAA0B;YACxB,uBAAA,IAAI,2BAAc,EAAE,MAAA,CAAC;YACrB,uBAAA,IAAI,+CAAqB,IAAI,CAAC,aAAa,OAAE,CAAC;YAC9C,uBAAA,IAAI,qCAAwB,EAAE,MAAA,CAAC;YAE/B,uBAAA,IAAI,+BACF,IAAI,CAAC,eAAe;iBACnB,IAAI,CAAC,uBAAuB,IAAI,IAAI,CAAC,uBAAuB,CAAC,MAAM,GAAG,CAAC;sBACpE,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,KAAK;sBACrC,EAAE,CAAC,MAAA,CAAC;YAEV,uBAAA,IAAI,gCAAmB,wBAAwB,MAAA,CAAC;YAEhD,IAAI,CAAC,UAAU;gBACb,IAAI,CAAC,wBAAwB,IAAI,IAAI,CAAC,wBAAwB,CAAC,MAAM,GAAG,CAAC;sBACrE,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,KAAK;sBACtC,sBAAsB,CAAC;YAE7B,uBAAA,IAAI,2BAAc,EAAE,MAAA,CAAC;YACrB,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC;SAChC,EAAC;QAgDF,sDAAiC,CAC/B,KAA8C;YAE9C,uBAAA,IAAI,gCACF,KAAK,CAAC,MAAM,KAAK,sBAAsB;kBACnC,sBAAsB;kBACtB,wBAAwB,MAAA,CAAC;YAC/B,uBAAA,IAAI,gCAAY,MAAhB,IAAI,CAAc,CAAC;SACpB,EAAC;QAEF,+CAA0B,CAAC,EAAqC;YAC9D,uBAAA,IAAI,oCAAuB,EAAE,CAAC,MAAM,CAAC,MAAM,MAAA,CAAC;YAC5C,IAAI,CAAC,uBAAuB,CAAC,uBAAA,IAAI,wCAAoB,CAAC,CAAC;SACxD,EAAC;QAEF,+CAA0B;YACxB,uBAAA,IAAI,kDAA8B,MAAlC,IAAI,CAAgC,CAAC;SACtC,EAAC;QAEF,6CAAwB,CAAC,EAA+C;YACtE,EAAE,CAAC,cAAc,EAAE,CAAC;YACpB,EAAE,CAAC,eAAe,EAAE,CAAC;YACrB,IAAI,CAAC,mBAAmB,CAAC;gBACvB,SAAS,EAAE,EAAE,CAAC,MAAM,CAAC,cAAc;gBACnC,OAAO,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO;gBAC1B,OAAO,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO;aAC3B,CAAC,CAAC;SACJ,EAAC;QAEF,4CAAuB;YACrB,uBAAA,IAAI,8BAAU,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,uBAAA,IAAI,4CAAwB,CAAC,CAAC;YAClF,uBAAA,IAAI,8BAAU,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,uBAAA,IAAI,4CAAwB,CAAC,CAAC;YAClF,uBAAA,IAAI,8BAAU,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,uBAAA,IAAI,0CAAsB,CAAC,CAAC;SAC/E,EAAC;QAEF,6CAAwB,OAAO,KAAuC;YACpE,uBAAA,IAAI,+BAAkB,KAAK,CAAC,MAAgB,MAAA,CAAC;YAC7C,uBAAA,IAAI,gCAAY,MAAhB,IAAI,CAAc,CAAC;SACpB,EAAC;QAEF,2CAAsB;YACpB,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC;SAChC,EAAC;QAEF,6CAAwB,CAAC,KAAoC;YAC3D,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC,MAAM,CAAC;YAClC,uBAAA,IAAI,gCAAY,MAAhB,IAAI,CAAc,CAAC;SACpB,EAAC;QAEF,uDAAkC;YAChC,IAAI,CAAC,uBAAuB,CAAC,uBAAA,IAAI,wCAAoB,CAAC,CAAC;SACxD,EAAC;QAEF,oCAAe;YACb,IACE,uBAAA,IAAI,8BAAU;gBACd,OAAQ,uBAAA,IAAI,8BAAuC,CAAC,aAAa,KAAK,UAAU,EAChF;gBACC,uBAAA,IAAI,8BAAuC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;aACnE;SACF,EAAC;QAEF,8CAAyB,CACvB,kBAAwB,EACxB,0BAAkC;YAElC,MAAM,gCAAgC,GAAG,IAAI,IAAI,CAC/C,0BAA0B,CAC3B,CAAC;YACF,IAAI,gCAAgC,IAAI,kBAAkB,EAAE;;;gBAG1D,OAAOC,kBAAM,KAAK,EAAC,QAAQ,IAAE,uBAAA,IAAI,gCAAY,MAAhB,IAAI,EAAa,kBAAkB,CAAC,CAAQ,CAAC;aAC3E;iBAAM;gBACL,OAAO,uBAAA,IAAI,gCAAY,MAAhB,IAAI,EAAa,kBAAkB,CAAC,CAAC;aAC7C;SACF,EAAC;QAEF,uDAAkC,CAChC,KAAuC;YAEvC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,MAAgB,CAAC;YACzC,uBAAA,IAAI,gCAAY,MAAhB,IAAI,CAAc,CAAC;SACpB,EAAC;QAEF,mCAAc,CAAC,IAAU;YACvB,OAAOC,kBAAU,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC;SAC5C,EAAC;QAEF,mCAAc;YACZ,uBAAA,IAAI,qCAAiB,MAArB,IAAI,CAAmB,CAAC;YAExB,MAAM,QAAQ,GACZ,uBAAA,IAAI,oCAAgB,IAAI,uBAAA,IAAI,oCAAgB,CAAC,KAAK;kBAC9C,uBAAA,IAAI,oCAAgB,CAAC,KAAK,CAAC,EAAE;kBAC7B,IAAI,CAAC,aAAa;sBAChB,IAAI,CAAC,aAAa,CAAC,EAAE;sBACrB,EAAE,CAAC;YAEX,MAAM,aAAa,GAAsB;gBACvC,IAAI,EAAE,uBAAA,IAAI,+BAAW;gBACrB,cAAc,EAAE,uBAAA,IAAI,yCAAqB;gBACzC,QAAQ,EAAE,uBAAA,IAAI,mCAAe;gBAC7B,MAAM,EAAE,QAAQ;gBAChB,cAAc,EAAE,uBAAA,IAAI,oCAAgB,KAAK,sBAAsB;gBAC/D,aAAa,EAAE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,UAAU,GAAG,SAAS;gBAC9D,UAAU,EAAE,IAAI,CAAC,YAAY,GAAG,uBAAA,IAAI,+BAAW,GAAG,SAAS;gBAC3D,YAAY,EAAE,IAAI,CAAC,YAAY,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,SAAS;aAC3E,CAAC;YAEF,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC,KAAmB;gBACxD,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;gBACrB,uBAAA,IAAI,oCAAuB,EAAE,MAAA,CAAC;gBAE9B,IAAI,uBAAA,IAAI,8BAAU,EAAE;oBAClB,uBAAA,IAAI,iCAAa,MAAjB,IAAI,CAAe,CAAC;iBACrB;gBAED,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;aACxB,CAAC,CAAC;SACJ,EAAC;QAEF,qCAAgB;YACd,OAAO;gBACLD;;oBAEE,KAAK,EAAC,8BAA8B;mBAEpCA,mBAAO,KAAK,EAAC,OAAO,EAAC,OAAO,EAAC,MAAM,IAChC,uBAAA,IAAI,qCAAiB,CAAC,MAAM,CAAC,IAAI,CAC5B,EACRA,qBACE,EAAE,EAAC,MAAM,EACT,KAAK,EAAC,OAAO,EACb,KAAK,EAAE,uBAAA,IAAI,+BAAW,EACtB,OAAO,EAAE,uBAAA,IAAI,sCAAkB,EAC/B,IAAI,EAAC,cAAc,EACnB,QAAQ,EAAEE,aAAM,CAAC,aAAa,EAC9B,QAAQ,EAAE,IAAI,CAAC,SAAS,GACf,CACP;gBAENF;;oBAEE,KAAK,EAAC,uCAAuC;mBAE7CA,mBAAO,KAAK,EAAC,OAAO,EAAC,OAAO,EAAC,eAAe,IACzC,uBAAA,IAAI,qCAAiB,CAAC,MAAM,CAAC,YAAY,CACpC,EACRA,oCACE,IAAI,EAAC,sBAAsB,EAC3B,EAAE,EAAC,eAAe,EAClB,aAAa,EAAC,MAAM,EACpB,KAAK,EAAE,uBAAA,IAAI,iCAAa,EACxB,YAAY,EAAE,IAAI,CAAC,aAAa,EAChC,oBAAoB,EAAE,IAAI,CAAC,oBAAoB,EAC/C,GAAG,EAAE,CAAC,EAAkC,MACrC,uBAAA,IAAI,gCAAmB,EAAoC,MAAA,CAAC,EAE/D,cAAc,EAAE,uBAAA,IAAI,+CAA2B,EAC/C,QAAQ,EAAE,IAAI,CAAC,SAAS,GACA,CACtB;gBAENA,iCACE,KAAK,EAAC,oCAAoC,EAC1C,KAAK,EAAE,uBAAA,IAAI,qCAAiB,IAE5BA,iBACE,IAAI,EAAE,mBAAmB,EACzB,KAAK,EAAC,qDAAqD,IAE1D,IAAI,CAAC,kBAAkB,KACtBA;;oBAEE,KAAK,EAAC,yCAAyC;mBAE/CA,mBAAO,KAAK,EAAC,OAAO,EAAC,OAAO,EAAC,gBAAgB,IAC1C,uBAAA,IAAI,qCAAiB,CAAC,MAAM,CAAC,OAAO,CAC/B,EACRA,qBACE,EAAE,EAAC,gBAAgB,EACnB,KAAK,EAAC,OAAO,EACb,OAAO,EAAE,uBAAA,IAAI,gDAA4B,EACzC,IAAI,EAAC,gBAAgB,GACZ,CACP,CACP,EAEDA,iBAAK,KAAK,EAAC,wCAAwC,IACjDA;;oBAEE,KAAK,EAAC,kCAAkC;mBAExCA,mBAAO,KAAK,EAAC,OAAO,EAAC,OAAO,EAAC,iBAAiB,IAC3C,uBAAA,IAAI,qCAAiB,CAAC,MAAM,CAAC,QAAQ,CAChC,EACRA,iCACE,EAAE,EAAC,iBAAiB,EACpB,KAAK,EAAC,oBAAoB,EAC1B,KAAK,EAAE,uBAAA,IAAI,mCAAe,EAC1B,QAAQ,EAAE,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,SAAS,EAC5C,KAAK,EAAE,IAAI,CAAC,uBAAuB,EACnC,IAAI,EAAC,iBAAiB,EACtB,OAAO,EAAE,uBAAA,IAAI,0CAAsB,GACd,CACnB,EAENA;;oBAEE,KAAK,EAAC,8CAA8C;mBAEpDA;;oBAEE,KAAK,EAAC,UAAU,EAChB,OAAO,EAAE,uBAAA,IAAI,qCAAiB,CAAC,MAAM,CAAC,cAAc,EACpD,YAAY,EAAE,sBAAsB,EACpC,cAAc,EAAE,wBAAwB,EACxC,KAAK,EAAE,uBAAA,IAAI,oCAAgB,EAC3B,OAAO,EAAE,uBAAA,IAAI,mDAA+B,EAC5C,IAAI,EAAC,wBAAwB,EAC7B,QAAQ,EAAE,IAAI,CAAC,SAAS;kBACX,EAEfA;;oBAEE,KAAK,EAAC,uBAAuB,EAC7B,OAAO,EAAE,uBAAA,IAAI,qCAAiB,CAAC,MAAM,CAAC,QAAQ,EAC9C,YAAY,EAAE,sBAAsB,EACpC,cAAc,EAAE,wBAAwB,EACxC,KAAK,EAAE,IAAI,CAAC,YAAY,EACxB,OAAO,EAAE,uBAAA,IAAI,iDAA6B,EAC1C,IAAI,EAAC,iBAAiB;kBACT,CACX,CACF,EAEL,IAAI,CAAC,YAAY,KAAK,sBAAsB,KAC3CA,iBAAK,KAAK,EAAC,yCAAyC,IAClDA;;oBAEE,KAAK,EAAC,+BAA+B;mBAErCA,mBAAO,KAAK,EAAC,OAAO,EAAC,OAAO,EAAC,mBAAmB,IAC7C,uBAAA,IAAI,qCAAiB,CAAC,MAAM,CAAC,KAAK,CAC7B,EACRA,iCACE,EAAE,EAAC,mBAAmB,EACtB,KAAK,EAAC,WAAW,EACjB,KAAK,EAAE,IAAI,CAAC,UAAU,EACtB,KAAK,EAAE,IAAI,CAAC,wBAAwB,EACpC,OAAO,EAAE,uBAAA,IAAI,oDAAgC,EAC7C,IAAI,EAAC,mBAAmB,EACxB,QAAQ,EAAE,IAAI,CAAC,SAAS,GACH,CACnB,EAENA;;oBAEE,KAAK,EAAC,8BAA8B;mBAEpCA,mBAAO,KAAK,EAAC,OAAO,EAAC,OAAO,EAAC,aAAa,IACvC,uBAAA,IAAI,qCAAiB,CAAC,MAAM,CAAC,IAAI,CAC5B,EACRA,qBACE,EAAE,EAAC,aAAa,EAChB,KAAK,EAAC,OAAO,EACb,KAAK,EAAE,uBAAA,IAAI,+BAAW,EACtB,OAAO,EAAE,uBAAA,IAAI,sCAAkB,EAC/B,IAAI,EAAC,aAAa,EAClB,QAAQ,EAAEE,aAAM,CAAC,aAAa,EAC9B,QAAQ,EAAE,IAAI,CAAC,SAAS,GACf,CACP,EAEL,IAAI,CAAC,UAAU,KAAK,sBAAsB,KACzCF;;oBAEE,KAAK,EAAE;wBACL,8BAA8B,EAAE,IAAI;wBACpC,MAAM,EAAE,IAAI,CAAC,UAAU,KAAK,sBAAsB;qBACnD;mBAEDA,mBACE,KAAK,EAAC,uBAAuB,EAC7B,OAAO,EAAC,kBAAkB,IAEzB,uBAAA,IAAI,qCAAiB,CAAC,MAAM,CAAC,QAAQ,EACtCA,sBACE,KAAK,EAAC,8BAA8B,EACpC,GAAG,EAAE,SAAS,GACJ,EACZA,wBACE,KAAK,EAAC,SAAS,EACf,aAAa,EAAE,IAAI,EACnB,UAAU,EAAC,eAAe,EAC1B,WAAW,EAAC,cAAc,EAC1B,KAAK,EAAEE,aAAM,CAAC,eAAe,CAAC,KAAK,IAElC,uBAAA,IAAI,qCAAiB,CAAC,MAAM,CAAC,eAAe,CAClC,CACP,EAERF,qBACE,EAAE,EAAC,kBAAkB,EACrB,IAAI,EAAC,gBAAgB,EACrB,KAAK,EAAC,uBAAuB,EAC7B,KAAK,EAAE,IAAI,CAAC,aAAa,EACzB,OAAO,EAAE,uBAAA,IAAI,0CAAsB,EACnC,IAAI,EAAC,kBAAkB,EACvB,QAAQ,EAAE,IAAI,CAAC,SAAS,GACf,EAEXA,oBACE,KAAK,EAAC,kCAAkC,EACxC,OAAO,EAAE,uBAAA,IAAI,wCAAoB,EACjC,QAAQ,EAAE,IAAI,CAAC,SAAS,IAExBA,sBAAU,KAAK,EAAC,SAAS,EAAC,GAAG,EAAE,UAAU,EAAE,IAAI,EAAC,MAAM,GAAG,CAClD,CACL,CACP,CACG,CACP,CACG,CACc;aACvB,CAAC;SACH,EAAC;QAEF,sCAAiB;;YACf,MAAM,WAAW,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;YAEzC,QACEA,6BACE,GAAG,EAAE,CAAC,EAA4B,MAAM,uBAAA,IAAI,0BAAa,EAAE,MAAA,CAAC,EAC5D,KAAK,EAAE;oBACL,cAAc,EAAE,IAAI;oBACpB,SAAS,EAAE,IAAI,CAAC,SAAS;oBACzB,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;iBACnC,EACD,gBAAgB,EAAC,UAAU,EAC3B,IAAI,EAAC,eAAe,IAEpBA,uCAA2B,KAAK,EAAC,yBAAyB,IACxDA,oCACE,UAAU,EAAC,EAAE,EACb,gBAAgB,EAAE,KAAK,EACvB,WAAW,EAAE,KAAK,EAClB,IAAI,EAAEE,aAAM,CAAC,WAAW,CAAC,OAAO,CAAC,UAAU,EAC3C,KAAK,EAAC,qBAAqB,GACH,EAE1BF,oCACE,UAAU,EAAE,uBAAA,IAAI,qCAAiB,CAAC,SAAS,CAAC,IAAI,EAChD,gBAAgB,EAAE,KAAK,EACvB,WAAW,EAAE,KAAK,EAClB,IAAI,EAAEE,aAAM,CAAC,WAAW,CAAC,OAAO,CAAC,UAAU,EAC3C,KAAK,EAAC,qBAAqB,GACH,EAE1BF,oCACE,UAAU,EAAE,uBAAA,IAAI,qCAAiB,CAAC,SAAS,CAAC,MAAM,EAClD,gBAAgB,EAAE,KAAK,EACvB,WAAW,EAAE,KAAK,EAClB,IAAI,EAAEE,aAAM,CAAC,WAAW,CAAC,OAAO,CAAC,UAAU,EAC3C,KAAK,EAAC,qBAAqB,GACH,EAEzB,IAAI,CAAC,qBAAqB,CAAC,WAAW,KACrCF,oCACE,UAAU,EAAE,uBAAA,IAAI,qCAAiB,CAAC,SAAS,CAAC,WAAW,EACvD,gBAAgB,EAAE,KAAK,EACvB,WAAW,EAAE,KAAK,EAClB,IAAI,EAAEE,aAAM,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,EACrC,KAAK,EAAC,qBAAqB,GACH,CAC3B,EAEA,IAAI,CAAC,qBAAqB,CAAC,YAAY,KACtCF,oCACE,UAAU,EAAE,uBAAA,IAAI,qCAAiB,CAAC,SAAS,CAAC,YAAY,EACxD,gBAAgB,EAAE,KAAK,EACvB,WAAW,EAAE,KAAK,EAClB,IAAI,EAAEE,aAAM,CAAC,WAAW,CAAC,OAAO,CAAC,UAAU,EAC3C,KAAK,EAAC,qBAAqB,GACH,CAC3B,EAEA,IAAI,CAAC,qBAAqB,CAAC,QAAQ,KAClCF,oCACE,UAAU,EAAE,uBAAA,IAAI,qCAAiB,CAAC,SAAS,CAAC,QAAQ,EACpD,gBAAgB,EAAE,KAAK,EACvB,WAAW,EAAE,KAAK,EAClB,IAAI,EAAEE,aAAM,CAAC,WAAW,CAAC,OAAO,CAAC,UAAU,EAC3C,KAAK,EAAC,qBAAqB,GACH,CAC3B,EAEA,IAAI,CAAC,qBAAqB,CAAC,UAAU,KACpCF,oCACE,UAAU,EAAE,uBAAA,IAAI,qCAAiB,CAAC,SAAS,CAAC,UAAU,EACtD,gBAAgB,EAAE,KAAK,EACvB,WAAW,EAAE,KAAK,EAClB,IAAI,EAAEE,aAAM,CAAC,WAAW,CAAC,OAAO,CAAC,UAAU,EAC3C,KAAK,EAAC,qBAAqB,GACH,CAC3B,EAEA,IAAI,CAAC,qBAAqB,CAAC,aAAa,KACvCF,oCACE,UAAU,EAAE,uBAAA,IAAI,qCAAiB,CAAC,SAAS,CAAC,aAAa,EACzD,gBAAgB,EAAE,KAAK,EACvB,WAAW,EAAE,KAAK,EAClB,IAAI,EAAEE,aAAM,CAAC,WAAW,CAAC,OAAO,CAAC,UAAU,EAC3C,KAAK,EAAC,qBAAqB,GACH,CAC3B,CACyB,EAE3B,CAAC,WAAW,IACXF,oCAAwB,KAAK,EAAC,qBAAqB,IAChD,MAAA,IAAI,CAAC,OAAO,0CAAE,GAAG,CAAC,CAAC,MAAkB;;gBAAK,QACzCA,iCAAqB,KAAK,EAAE,MAAM,CAAC,EAAE,EAAE,KAAK,EAAC,kBAAkB,IAC7DA,kCAAsB,KAAK,EAAC,mBAAmB,IAC7CA,sBAAU,GAAG,EAAE,MAAM,CAAC,IAAI,GAAa,CAClB,EAEvBA,kCAAsB,KAAK,EAAC,mBAAmB,IAC5CG,gBAAM,CACL,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,EACzB,uBAAA,IAAI,+BAAW,CAAC,WAAW,EAAE,CAC9B,CACoB,EAEvBH,kCAAsB,KAAK,EAAC,mBAAmB,IAC5C,MAAM,CAAC,MAAM,CACO,EAEtB,IAAI,CAAC,qBAAqB,CAAC,WAAW,KACrCA,kCAAsB,KAAK,EAAC,iDAAiD,IAC1E,MAAM,CAAC,WAAW,CACE,CACxB,EAEA,IAAI,CAAC,qBAAqB,CAAC,YAAY,KACtCA,kCAAsB,KAAK,EAAC,mBAAmB,IAC5C,uBAAA,IAAI,2CAAuB,MAA3B,IAAI,EACH,MAAM,CAAC,YAAY,EACnB,IAAI,CAAC,aAAa,CACnB,CACoB,CACxB,EAEA,IAAI,CAAC,qBAAqB,CAAC,QAAQ,KAClCA,kCAAsB,KAAK,EAAC,mBAAmB,IAC5CG,gBAAM,CAAC,MAAA,MAAM,CAAC,QAAQ,0CAAE,WAAW,EAAE,EAAE,uBAAA,IAAI,+BAAW,CAAC,CACnC,CACxB,EAEA,IAAI,CAAC,qBAAqB,CAAC,UAAU,KACpCH,kCAAsB,KAAK,EAAC,mBAAmB,IAC5CG,gBAAM,CACL,MAAM,CAAC,UAAU;sBACb,uBAAA,IAAI,gCAAY,MAAhB,IAAI,EAAa,MAAM,CAAC,UAAU,CAAC;sBACnC,EAAE,EACN,uBAAA,IAAI,+BAAW,CAChB,CACoB,CACxB,EAEA,IAAI,CAAC,qBAAqB,CAAC,aAAa,KACvCH,kCAAsB,KAAK,EAAC,mBAAmB,IAC5CG,gBAAM,CACL,MAAM,CAAC,aAAa;sBAChB,uBAAA,IAAI,gCAAY,MAAhB,IAAI,EAAa,MAAM,CAAC,aAAa,CAAC;sBACtC,EAAE,EACN,uBAAA,IAAI,+BAAW,CAChB,CACoB,CACxB,CACmB,EACvB;aAAA,CAAC,CACqB,KAEzBH,oCAAwB,KAAK,EAAC,qBAAqB,IACjDA,8CACG,IAAI,CAAC,SAAS,IACbA,2BACE,WAAW,EAAE,uBAAA,IAAI,qCAAiB,CAAC,MAAM,CAAC,KAAK,EAC/C,WAAW,EAAE,uBAAA,IAAI,qCAAiB,CAAC,MAAM,CAAC,WAAW,EACrD,IAAI,SACW,KAEjBA,gCACE,UAAU,EAAE,IAAI,EAChB,YAAY,EAAE,WAAW,EACzB,UAAU,EAAE,uBAAA,IAAI,qCAAiB,CAAC,UAAU,CAAC,KAAK,GAC9B,CACvB,CAC4B,CACR,CAC1B,CACe,EAClB;SACH,EAAC;QAEF,kDAA6B,CAC3B,KAAiD;YAEjD,uBAAA,IAAI,6BAAgB,KAAK,CAAC,MAAM,MAAA,CAAC;YACjC,uBAAA,IAAI,gCAAY,MAAhB,IAAI,CAAc,CAAC;SACpB,EAAC;QAEF,yCAAoB,CAAC,KAAoC;YACvD,uBAAA,IAAI,2BAAc,KAAK,CAAC,MAAM,MAAA,CAAC;YAC/B,uBAAA,IAAI,gCAAY,MAAhB,IAAI,CAAc,CAAC;SACpB,EAAC;QAEF,+CAA0B;YACxB,IAAI,CAAC,eAAe,EAAE,CAAC;SACxB,EAAC;QAEF,qDAAgC;YAC9B,IAAI,CAAC,qBAAqB,CAAC,uBAAA,IAAI,wCAAoB,CAAC,CAAC;SACtD,EAAC;QAEF,mDAA8B,CAAC,KAAoC;YACjE,uBAAA,IAAI,qCAAwB,KAAK,CAAC,MAAM,MAAA,CAAC;YACzC,uBAAA,IAAI,gCAAY,MAAhB,IAAI,CAAc,CAAC;SACpB,EAAC;QAEF,wCAAmB;;YAEjB,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;gBAC9C,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;aACnB;YACD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;SACvB,EAAC;QAEF,yCAAoB,CAAC,KAAoC;YACvD,uBAAA,IAAI,2BAAc,KAAK,CAAC,MAAM,MAAA,CAAC;YAC/B,uBAAA,IAAI,gCAAY,MAAhB,IAAI,CAAc,CAAC;SACpB,EAAC;QAEF,oDAA+B,CAC7B,KAA8C;YAE9C,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC;SAClC,EAAC;QAEF,kCAAa;YACX,IACE,uBAAA,IAAI,8BAAU;gBACd,OAAQ,uBAAA,IAAI,8BAAuC,CAAC,aAAa,KAAK,UAAU,EAChF;gBACC,uBAAA,IAAI,8BAAuC,CAAC,aAAa,EAAE,CAAC;aAC9D;SACF,EAAC;;uCAvvBgD,EAAE;;yBActB,IAAI;;4BAUK,sBAAsB;uBAK5B,EAAE;;;;;;qCAkC6B;YAC9D,WAAW,EAAE,IAAI;YACjB,UAAU,EAAE,IAAI;YAChB,aAAa,EAAE,IAAI;YACnB,QAAQ,EAAE,IAAI;YACd,YAAY,EAAE,IAAI;SACnB;;;;;;kCA8BqC,KAAK;;IA5F3C,oBAAoB;QAClB,uBAAA,IAAI,gCAAY,MAAhB,IAAI,CAAc,CAAC;KACpB;IA2BD,iBAAiB,CAAC,aAAyB;QACzC,IAAI,CAAC,uBAAuB,GAAGI,uCAA6B,CAAC,aAAa,CAAC,CAAC;KAC7E;IA+DD,MAAM,iBAAiB;QACrB,uBAAA,IAAI,iCAAoB,MAAMC,aAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC,MAAA,CAAC;;QAGlE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;;QAGxC,IAAI,CAAC,wBAAwB,GAAG;YAC9B;gBACE,OAAO,EAAE,uBAAA,IAAI,qCAAiB,CAAC,MAAM,CAAC,sBAAsB,CAAC;gBAC7D,KAAK,EAAE,sBAAsB;aAC9B;YACD;gBACE,OAAO,EAAE,uBAAA,IAAI,qCAAiB,CAAC,MAAM,CAAC,uBAAuB,CAAC;gBAC9D,KAAK,EAAE,uBAAuB;aAC/B;YACD;gBACE,OAAO,EAAE,uBAAA,IAAI,qCAAiB,CAAC,MAAM,CAAC,mBAAmB,CAAC;gBAC1D,KAAK,EAAE,mBAAmB;aAC3B;SACF,CAAC;;QAGF,uBAAA,IAAI,iCAAoB;YACtB;gBACE,EAAE,EAAE,mBAAmB;gBACvB,OAAO,EAAE,uBAAA,IAAI,qCAAiB,CAAC,MAAM,CAAC,gBAAgB;gBACtD,QAAQ,EAAE,KAAK;aAChB;SACF,MAAA,CAAC;QAEF,uBAAA,IAAI,4CAAwB,MAA5B,IAAI,CAA0B,CAAC;KAChC;IAuBD,gBAAgB;QACd,uBAAA,IAAI,yCAAqB,MAAzB,IAAI,CAAuB,CAAC;QAC5B,uBAAA,IAAI,gCAAY,MAAhB,IAAI,CAAc,CAAC;KACpB;IAGD,cAAc,CAAC,SAAwB;QACrC,IAAI,QAAQ,CAAC,aAAa,KAAK,IAAI,CAAC,EAAE,EAAE;YACtC,QAAQ,SAAS,CAAC,GAAG;gBACnB,KAAK,OAAO;oBACV,SAAS,CAAC,cAAc,EAAE,CAAC;oBAC3B,uBAAA,IAAI,kDAA8B,MAAlC,IAAI,CAAgC,CAAC;oBACrC,MAAM;gBACR,KAAK,QAAQ;oBACX,SAAS,CAAC,cAAc,EAAE,CAAC;oBAC3B,uBAAA,IAAI,oDAAgC,MAApC,IAAI,CAAkC,CAAC;oBACvC,MAAM;gBACR,KAAK,QAAQ;oBACX,SAAS,CAAC,cAAc,EAAE,CAAC;oBAC3B,uBAAA,IAAI,iCAAa,MAAjB,IAAI,CAAe,CAAC;oBACpB,MAAM;aACT;SACF;KACF;;;;IAMD,MAAM,MAAM;QACV,IAAI;YACF,IAAI,uBAAA,IAAI,qCAAiB,IAAI,IAAI,CAAC,wBAAwB,EAAE;gBAC1D,uBAAA,IAAI,4CAAwB,MAA5B,IAAI,CAA0B,CAAC;gBAC/B,uBAAA,IAAI,gCAAY,MAAhB,IAAI,CAAc,CAAC;aACpB;SACF;QAAC,OAAO,KAAK,EAAE;YACd,OAAO,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;;YAEzC,IAAI;gBACF,uBAAA,IAAI,gCAAY,MAAhB,IAAI,CAAc,CAAC;aACpB;YAAC,OAAO,aAAa,EAAE;gBACtB,OAAO,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;aACxC;SACF;KACF;IAijBD,MAAM;;QACJ,QACEL,QAACM,UAAI,IAAC,KAAK,EAAC,QAAQ,IAClBN,sBAAU,KAAK,EAAE,WAAW,GAAa,EAEzCA,qBAAS,KAAK,EAAC,SAAS,IACtBA,oBAAQ,KAAK,EAAC,4FAA4F,IACvG,uBAAA,IAAI,kCAAc,MAAlB,IAAI,CAAgB,CACd,EAER,uBAAA,IAAI,mCAAe,MAAnB,IAAI,CAAiB,EAEtBA,oBAAQ,KAAK,EAAC,sEAAsE,IAClFA;;YAEE,KAAK,EAAC,WAAW,EACjB,IAAI,EAAC,kBAAkB;WAEtB,GAAG,MAAA,IAAI,CAAC,OAAO,0CAAE,MAAM,IACtB,uBAAA,IAAI,qCAAiB,CAAC,QAAQ,CAAC,QACjC,EAAE,CACA,EAEJA,iBAAK,KAAK,EAAC,gBAAgB,IACzBA;;YAEE,EAAE,EAAC,mBAAmB,EACtB,KAAK,EAAC,kBAAkB,EACxB,OAAO,EAAE,uBAAA,IAAI,+BAAW,EACxB,IAAI,EAAC,2BAA2B,EAChC,QAAQ,EAAE,IAAI,CAAC,SAAS;WAEvB,uBAAA,IAAI,qCAAiB,CAAC,MAAM,CAAC,YAAY,CACnC,EAETA;;YAEE,EAAE,EAAC,iBAAiB,EACpB,KAAK,EAAC,qCAAqC,EAC3C,OAAO,EAAE,uBAAA,IAAI,4CAAwB,EACrC,IAAI,EAAC,yBAAyB,EAC9B,QAAQ,EAAE,IAAI,CAAC,SAAS;WAEvB,uBAAA,IAAI,qCAAiB,CAAC,MAAM,CAAC,MAAM,CAC7B,CACL,CACC,CACD,CACL,EACP;KACH;;;;;;;;;;;;;","names":["getIconPath","h","formatDate","config","hiChar","mapOptionsToComboBoxItemModel","Locale","Host"],"sources":["src/components/ww-files/ww-files.scss?tag=gx-ide-ww-files&encapsulation=shadow","src/components/ww-files/ww-files.tsx"],"sourcesContent":["@import \"../../global/gx-ide-mixins.scss\";\n@import \"../../../node_modules/@genexus/mercury/dist/assets/scss/helpers.scss\";\n\n:host {\n container-type: inline-size;\n display: grid;\n block-size: 100%;\n overflow: auto;\n grid-template-rows: max-content 1fr max-content;\n}\n\n.section {\n display: contents;\n}\n\n// - - - - - - - - - - - -\n// Header\n// - - - - - - - - - - - -\n\n.header {\n grid-template-areas:\n \"name module-folder\"\n \"advanced-filter advanced-filter\";\n grid-template-columns: 1fr 1fr;\n grid-auto-rows: max-content max-content;\n}\n.name {\n grid-area: name;\n}\n.module-folder {\n grid-area: module-folder;\n}\n.advanced-filter {\n grid-area: advanced-filter;\n}\n\n// Advanced Filter\n.advanced-filter {\n &__container {\n display: grid;\n grid-auto-rows: max-content;\n }\n &__first-row {\n grid-template-columns: 1fr 1fr;\n }\n &__second-row {\n grid-template-columns: 1fr 1fr 1fr;\n }\n .all-descendants__modified {\n display: flex;\n flex-direction: row;\n align-items: center;\n block-size: 32px;\n gap: 16px;\n align-self: self-end;\n }\n}\n// date/time\n.field-date {\n grid-template-areas:\n \"label-date-time label-date-time\"\n \"input-date-time icon-clear-date-time\";\n grid-template-columns: 1fr max-content;\n column-gap: var(--mer-spacing--2xs);\n}\n.label-date-time {\n // WA: There is no official way to use an icon (ch-image) within a label\n display: flex;\n align-items: center;\n gap: 6px;\n .icon-md {\n // WA: Icon looks so small that it is not recognizable\n --mer-icon__box--md: 16.8px;\n }\n grid-area: label-date-time;\n}\n.input-date-time {\n block-size: 31.98px; // WA: ch-edit of type \"date\" block-size is a little bit larger than regular ch-edit block-size. It should compute to 31.98px at the time of writting.\n grid-area: input-date-time;\n}\n.icon-clear-date-time {\n grid-area: icon-clear-date-time;\n}\n\n// - - - - - - - - - - - -\n// Grid\n// - - - - - - - - - - - -\n\n.tabular-grid {\n overflow: auto;\n inline-size: 100%;\n border-inline-end: var(--section-common-border);\n}\n.tabular-grid.empty::part(main),\n.tabular-grid.loading::part(main) {\n // WA to avoid scrollbar flickering when displaying the empty-state message\n overflow: hidden;\n}\nch-tabular-grid-rowset-empty {\n position: relative;\n}\n.main__files-container {\n display: grid;\n grid-template-columns: repeat(4, 1fr);\n gap: var(--mer-spacing--xs);\n position: relative;\n z-index: 1;\n}\n\n@include hiChar;\n\n@include tabular-grid-cell-layout(\n $tabular-grid-selector: \".tabular-grid\",\n $tabular-grid-cell-node-type: \"text\",\n $tabular-grid-cell-apply-ellipsis: true,\n $tabular-grid-affected-columns-nth-list: (\n 4\n )\n);\n.tabular-grid-cell-description {\n min-inline-size: max-content !important; // TODO: See how to remove the !important\n}\n\n@include hiChar();\n\n// - - - - - - - - - - - -\n// Responsive\n// - - - - - - - - - - - -\n\n// @container (max-width: 992px) {\n// .main__files-container {\n// grid-template-columns: repeat(3, 1fr);\n// }\n// }\n","import {\n Component,\n Host,\n h,\n Prop,\n Element,\n State,\n Method,\n Listen,\n Watch\n} from \"@stencil/core\";\n\nimport {\n ChCheckboxCustomEvent,\n TabularGridRowContextMenuEvent\n} from \"@genexus/chameleon-controls-library\";\n\nimport { getIconPath, MercuryBundles } from \"@genexus/mercury\";\n\nimport { Locale } from \"../../common/locale\";\nimport { GxOption } from \"../../common/types\";\nimport { EntityData, ContextMenuInfo } from \"../../common/types\";\nimport { config } from \"../../common/config\";\nimport { mapOptionsToComboBoxItemModel, hiChar } from \"./helpers\";\nimport {\n AccordionModel,\n ComboBoxModel\n} from \"@genexus/chameleon-controls-library\";\nimport { formatDate } from \"../../common/helpers\";\nimport { GxIdeEntitySelectorCustomEvent } from \"../..\";\n\ninterface TabularGridWithSelection extends HTMLChTabularGridElement {\n selectAllRows: (select?: boolean) => Promise<void>;\n}\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"components/button\",\n \"components/checkbox\",\n \"components/combo-box\",\n \"components/accordion\",\n \"components/edit\",\n \"components/icon\",\n \"components/tooltip\",\n \"components/tabular-grid\",\n \"utils/form\",\n \"utils/layout\",\n \"utils/typography\",\n \"utils/spacing\"\n];\n\nconst CLEAR_ICON = getIconPath({\n category: \"system\",\n name: \"close\",\n colorType: \"neutral\"\n});\nconst FILTER_ICON = getIconPath({\n category: \"window-tools\",\n name: \"filter\",\n colorType: \"on-elevation\"\n});\nconst INFO_ICON = getIconPath({\n category: \"system\",\n name: \"information\",\n colorType: \"on-elevation\"\n});\n\nconst ACCORDION_FILTER_ID = \"advanced-filter\";\nconst FILTER_AFTER_DATE_TIME = \"afterDateTime\";\nconst FILTER_AFTER_LAST_BUILD = \"afterLastBuild\";\nconst FILTER_AFTER_IMPORT = \"afterImport\";\n\nconst CHECKBOX_CHECKED_VALUE = \"checked\";\nconst CHECKBOX_UNCHECKED_VALUE = \"unchecked\";\n\n@Component({\n tag: \"gx-ide-ww-files\",\n styleUrl: \"ww-files.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/ww-files\"]\n})\nexport class GxIdeWWFiles {\n #componentLocale: any;\n #ACCORDION_MODEL: AccordionModel = [];\n\n // Filter Values\n #nameValue: string;\n #moduleValue: EntityData;\n // Advanced Filter Values\n #searchContentsValue: string;\n #categoryValue: string;\n #allDescendants: CheckboxState;\n #userValue: string;\n // Other\n #selectedObjectsIds: string[] = [];\n\n @Element() el: HTMLGxIdeWwFilesElement;\n #chGridEl!: HTMLChTabularGridElement;\n #filterModuleEl!: HTMLGxIdeEntitySelectorElement;\n\n /**\n * The \"After\" control value. Controls the visibility of the \"Date/Time\" control.\n */\n @State() afterValue: string;\n\n /**\n * The \"Category\" options as combo box model\n */\n @State() categoriesComboBoxModel: ComboBoxModel = [];\n\n /**\n * Value of the Date/Time control\n */\n @State() dateTimeValue: string;\n @Watch(\"dateTimeValue\")\n dateTimeValueChanged() {\n this.#getObjects();\n }\n\n /**\n * A loader that is shown when the filter changes and the server has to retrieve new data.\n */\n @State() isLoading: boolean = true;\n\n /**\n * The options for the \"After\" combo-box\n */\n @State() filterAfterComboBoxModel: ComboBoxModel;\n\n /**\n * For show or hide the filters relative to modifiers\n */\n @State() showModified: CheckboxState = CHECKBOX_CHECKED_VALUE;\n\n /**\n * The files rendered in the table\n */\n @State() objects: ObjectData[] = [];\n\n /**\n * The categories render in the filter category selector\n */\n @Prop() readonly categories!: GxOption[];\n @Watch(\"categories\")\n categoriesChanged(newCategories: GxOption[]) {\n this.categoriesComboBoxModel = mapOptionsToComboBoxItemModel(newCategories);\n }\n\n /**\n * This is a function provided by the developer for show the context menu of the selected files.\n */\n @Prop() readonly contextMenuCallback!: ContextMenuCallback;\n\n /**\n * The default value for the category filter\n */\n @Prop() readonly defaultCategory: string;\n\n /**\n * The default value for the module/folder filter\n */\n @Prop() readonly defaultModule: EntityData;\n\n /**\n * This is a function provided by the developer for delete the selected files.\n */\n @Prop() readonly deleteSelectionCallback!: DeleteSelectionCallback;\n\n /**\n * Controls the visibility of the tabular grid cell columns, and respective cells.\n */\n @Prop() readonly gridColumnsVisibility: GridColumnsVisibility = {\n description: true,\n importDate: true,\n lastBuildDate: true,\n lastUser: true,\n modifiedDate: true\n };\n\n /**\n * This is a function provided by the developer that return a list of files to populate the table of files.\n */\n @Prop() readonly loadCallback!: LoadCallback;\n\n /**\n *\n */\n @Prop() readonly newFileCallback!: NewFileCallback;\n\n /**\n * This is a function provided by the developer to expand the data of files that is double-clicked or entered.\n */\n @Prop() readonly openSelectionCallback!: OpenSelectionCallback;\n\n /**\n * Callback invoked when the action is executed on the Module/Folder filter (button '...'). It returns the information of the selected object (id and name) or 'undefined' if it was canceled.\n */\n @Prop() readonly selectModuleCallback!: SelectModuleCallback;\n\n /**\n * This is a function provided by the developer for expanded the data of files that is double-clicked or entered.\n */\n @Prop() readonly selectionChangeCallback!: SelectionChangeCallback;\n\n /**\n * Controls whether to show the Search contents field in the advanced filter section (Not available at the time of writting, since the server is not handling this feature yet.)\n */\n @Prop() readonly showSearchContents = false;\n\n async componentWillLoad() {\n this.#componentLocale = await Locale.getComponentStrings(this.el);\n\n // initialize combo-box models∂\n this.categoriesChanged(this.categories);\n\n // initialize \"After\" combo-box options\n this.filterAfterComboBoxModel = [\n {\n caption: this.#componentLocale.filter[FILTER_AFTER_DATE_TIME],\n value: FILTER_AFTER_DATE_TIME\n },\n {\n caption: this.#componentLocale.filter[FILTER_AFTER_LAST_BUILD],\n value: FILTER_AFTER_LAST_BUILD\n },\n {\n caption: this.#componentLocale.filter[FILTER_AFTER_IMPORT],\n value: FILTER_AFTER_IMPORT\n }\n ];\n\n // initialize accordion model with proper configuration\n this.#ACCORDION_MODEL = [\n {\n id: ACCORDION_FILTER_ID,\n caption: this.#componentLocale.filter.accordionCaption,\n expanded: false\n }\n ];\n\n this.#setFilterDefaultValues();\n }\n #setFilterDefaultValues = () => {\n this.#nameValue = \"\";\n this.#moduleValue = { ...this.defaultModule };\n this.#searchContentsValue = \"\";\n\n this.#categoryValue =\n this.defaultCategory ||\n (this.categoriesComboBoxModel && this.categoriesComboBoxModel.length > 0\n ? this.categoriesComboBoxModel[0].value\n : \"\");\n\n this.#allDescendants = CHECKBOX_UNCHECKED_VALUE;\n\n this.afterValue =\n this.filterAfterComboBoxModel && this.filterAfterComboBoxModel.length > 0\n ? this.filterAfterComboBoxModel[0].value\n : FILTER_AFTER_DATE_TIME;\n\n this.#userValue = \"\";\n this.dateTimeValue = undefined;\n };\n\n componentDidLoad() {\n this.#attachGridListeners();\n this.#getObjects();\n }\n\n @Listen(\"keydown\", { passive: true })\n keyDownHandler(eventInfo: KeyboardEvent) {\n if (document.activeElement === this.el) {\n switch (eventInfo.key) {\n case \"Enter\":\n eventInfo.preventDefault();\n this.#openSelectionCallbackHandler();\n break;\n case \"Delete\":\n eventInfo.preventDefault();\n this.#deleteSelectionCallbackHandler();\n break;\n case \"Escape\":\n eventInfo.preventDefault();\n this.#deselectAll();\n break;\n }\n }\n }\n\n /**\n * Reloads the view, refreshing the filters and the table of files.\n */\n @Method()\n async reload(): Promise<void> {\n try {\n if (this.#componentLocale && this.filterAfterComboBoxModel) {\n this.#setFilterDefaultValues();\n this.#getObjects();\n }\n } catch (error) {\n console.error(\"Error in reload method:\");\n // Fallback: try only getObjects if setFilterDefaultValues fails\n try {\n this.#getObjects();\n } catch (fallbackError) {\n console.error(\"Fallback also failed:\");\n }\n }\n }\n\n #allDescendantsCheckboxHandler = (\n event: ChCheckboxCustomEvent<any> | InputEvent\n ) => {\n this.#allDescendants =\n event.detail === CHECKBOX_CHECKED_VALUE\n ? CHECKBOX_CHECKED_VALUE\n : CHECKBOX_UNCHECKED_VALUE;\n this.#getObjects();\n };\n\n #handleSelectionChanged = (ev: CustomEvent<{ rowsId: string[] }>): void => {\n this.#selectedObjectsIds = ev.detail.rowsId;\n this.selectionChangeCallback(this.#selectedObjectsIds);\n };\n\n #handleRowDoubleClicked = (): void => {\n this.#openSelectionCallbackHandler();\n };\n\n #handleRowContextMenu = (ev: CustomEvent<TabularGridRowContextMenuEvent>): void => {\n ev.preventDefault();\n ev.stopPropagation();\n this.contextMenuCallback({\n selection: ev.detail.selectedRowsId,\n clientX: ev.detail.clientX,\n clientY: ev.detail.clientY\n });\n };\n\n #attachGridListeners = (): void => {\n this.#chGridEl.addEventListener(\"selectionChanged\", this.#handleSelectionChanged);\n this.#chGridEl.addEventListener(\"rowDoubleClicked\", this.#handleRowDoubleClicked);\n this.#chGridEl.addEventListener(\"rowContextMenu\", this.#handleRowContextMenu);\n };\n\n #categoryInputHandler = async (event: CustomEvent<string> | InputEvent) => {\n this.#categoryValue = event.detail as string;\n this.#getObjects();\n };\n\n #clearDateTimeValue = () => {\n this.dateTimeValue = undefined;\n };\n\n #dateTimeInputHandler = (event: CustomEvent<any> | InputEvent) => {\n this.dateTimeValue = event.detail;\n this.#getObjects();\n };\n\n #deleteSelectionCallbackHandler = (): void => {\n this.deleteSelectionCallback(this.#selectedObjectsIds);\n };\n\n #deselectAll = (): void => {\n if (\n this.#chGridEl &&\n typeof (this.#chGridEl as TabularGridWithSelection).selectAllRows === \"function\"\n ) {\n (this.#chGridEl as TabularGridWithSelection).selectAllRows(false);\n }\n };\n\n #evaluateModifiedDates = (\n objectModifiedDate: Date,\n filterSelectedModifiedDate: string\n ) => {\n const filterSelectedModifiedDateAsDate = new Date(\n filterSelectedModifiedDate\n );\n if (filterSelectedModifiedDateAsDate >= objectModifiedDate) {\n // Object modifed date matches with filter date, or was modified after that date.\n // Highlight to show that it matches.\n return <span class=\"hiChar\">{this.#formatDate(objectModifiedDate)}</span>;\n } else {\n return this.#formatDate(objectModifiedDate);\n }\n };\n\n #filterAfterTypeCallbackHandler = (\n event: CustomEvent<string> | InputEvent\n ) => {\n this.afterValue = event.detail as string;\n this.#getObjects();\n };\n\n #formatDate = (date: Date): string => {\n return formatDate(date, \"date-time-short\");\n };\n\n #getObjects = () => {\n this.#setLoadingState();\n\n const parentId =\n this.#filterModuleEl && this.#filterModuleEl.value\n ? this.#filterModuleEl.value.id\n : this.defaultModule\n ? this.defaultModule.id\n : \"\";\n\n const filtersValues: ObjectFiltersData = {\n name: this.#nameValue,\n searchContents: this.#searchContentsValue,\n category: this.#categoryValue,\n parent: parentId,\n allDescendants: this.#allDescendants === CHECKBOX_CHECKED_VALUE,\n modifiedAfter: this.showModified ? this.afterValue : undefined,\n modifiedBy: this.showModified ? this.#userValue : undefined,\n modifiedDate: this.showModified ? new Date(this.dateTimeValue) : undefined\n };\n\n this.loadCallback(filtersValues).then((items: ObjectData[]) => {\n this.objects = items;\n this.#selectedObjectsIds = [];\n\n if (this.#chGridEl) {\n this.#deselectAll();\n }\n\n this.isLoading = false;\n });\n };\n\n #renderHeader = (): Element[] => {\n return [\n <div\n // Name\n class=\"field field-block field-name\"\n >\n <label class=\"label\" htmlFor=\"name\">\n {this.#componentLocale.filter.name}\n </label>\n <ch-edit\n id=\"name\"\n class=\"input\"\n value={this.#nameValue}\n onInput={this.#nameInputHandler}\n part=\"filter-files\"\n debounce={config.inputDebounce}\n disabled={this.isLoading}\n ></ch-edit>\n </div>,\n\n <div\n // Module\n class=\"field field-block field-module-folder\"\n >\n <label class=\"label\" htmlFor=\"module-folder\">\n {this.#componentLocale.filter.moduleFolder}\n </label>\n <gx-ide-entity-selector\n part=\"filter-module-folder\"\n id=\"module/folder\"\n labelPosition=\"none\"\n value={this.#moduleValue}\n defaultValue={this.defaultModule}\n selectEntityCallback={this.selectModuleCallback}\n ref={(el: HTMLGxIdeEntitySelectorElement) =>\n (this.#filterModuleEl = el as HTMLGxIdeEntitySelectorElement)\n }\n onValueChanged={this.#moduleValueChangedHandler}\n disabled={this.isLoading}\n ></gx-ide-entity-selector>\n </div>,\n\n <ch-accordion-render\n class=\"accordion-outlined advanced-filter\"\n model={this.#ACCORDION_MODEL}\n >\n <div\n slot={ACCORDION_FILTER_ID}\n class=\"spacing-body field-group advanced-filter__container\"\n >\n {this.showSearchContents && (\n <div\n // Search contents\n class=\"field field-block field-search-contents\"\n >\n <label class=\"label\" htmlFor=\"filter-content\">\n {this.#componentLocale.filter.content}\n </label>\n <ch-edit\n id=\"filter-content\"\n class=\"input\"\n onInput={this.#searchContentsInputHandler}\n part=\"filter-content\"\n ></ch-edit>\n </div>\n )}\n\n <div class=\"field-group advanced-filter__first-row\">\n <div\n // Category\n class=\"field field-block field-category\"\n >\n <label class=\"label\" htmlFor=\"filter-category\">\n {this.#componentLocale.filter.category}\n </label>\n <ch-combo-box-render\n id=\"filter-category\"\n class=\"combo-box disabled\"\n value={this.#categoryValue}\n disabled={!this.categories || this.isLoading}\n model={this.categoriesComboBoxModel}\n part=\"filter-category\"\n onInput={this.#categoryInputHandler}\n ></ch-combo-box-render>\n </div>\n\n <div\n // All descendants / Modified\n class=\"all-descendants__modified field field-inline\"\n >\n <ch-checkbox\n // All descendants\n class=\"checkbox\"\n caption={this.#componentLocale.filter.allDescendants}\n checkedValue={CHECKBOX_CHECKED_VALUE}\n unCheckedValue={CHECKBOX_UNCHECKED_VALUE}\n value={this.#allDescendants}\n onInput={this.#allDescendantsCheckboxHandler}\n part=\"filter-all-descendants\"\n disabled={this.isLoading}\n ></ch-checkbox>\n\n <ch-checkbox\n // Modified\n class=\"checkbox align-center\"\n caption={this.#componentLocale.filter.modified}\n checkedValue={CHECKBOX_CHECKED_VALUE}\n unCheckedValue={CHECKBOX_UNCHECKED_VALUE}\n value={this.showModified}\n onInput={this.#showModifiedCheckboxHandler}\n part=\"filter-modified\"\n ></ch-checkbox>\n </div>\n </div>\n\n {this.showModified === CHECKBOX_CHECKED_VALUE && (\n <div class=\"field-group advanced-filter__second-row\">\n <div\n // After\n class=\"field field-block field-after\"\n >\n <label class=\"label\" htmlFor=\"filter-after-type\">\n {this.#componentLocale.filter.after}\n </label>\n <ch-combo-box-render\n id=\"filter-after-type\"\n class=\"combo-box\"\n value={this.afterValue}\n model={this.filterAfterComboBoxModel}\n onInput={this.#filterAfterTypeCallbackHandler}\n part=\"filter-after-type\"\n disabled={this.isLoading}\n ></ch-combo-box-render>\n </div>\n\n <div\n // User\n class=\"field field-block field-user\"\n >\n <label class=\"label\" htmlFor=\"filter-user\">\n {this.#componentLocale.filter.user}\n </label>\n <ch-edit\n id=\"filter-user\"\n class=\"input\"\n value={this.#userValue}\n onInput={this.#userInputHandler}\n part=\"filter-user\"\n debounce={config.inputDebounce}\n disabled={this.isLoading}\n ></ch-edit>\n </div>\n\n {this.afterValue === FILTER_AFTER_DATE_TIME && (\n <div\n // Date/Time\n class={{\n \"field field-block field-date\": true,\n \"hide\": this.afterValue !== FILTER_AFTER_DATE_TIME\n }}\n >\n <label\n class=\"label label-date-time\"\n htmlFor=\"filter-date-time\"\n >\n {this.#componentLocale.filter.dateTime}\n <ch-image\n class=\"icon-md icon-clear-date-time\"\n src={INFO_ICON}\n ></ch-image>\n <ch-tooltip\n class=\"tooltip\"\n actionElement={null}\n blockAlign=\"outside-start\"\n inlineAlign=\"inside-start\"\n delay={config.tooltipSettings.delay}\n >\n {this.#componentLocale.filter.dateTimeTooltip}\n </ch-tooltip>\n </label>\n\n <ch-edit\n id=\"filter-date-time\"\n type=\"datetime-local\"\n class=\"input input-date-time\"\n value={this.dateTimeValue}\n onInput={this.#dateTimeInputHandler}\n part=\"filter-date-time\"\n disabled={this.isLoading}\n ></ch-edit>\n\n <button\n class=\"button-tertiary button-icon-only\"\n onClick={this.#clearDateTimeValue}\n disabled={this.isLoading}\n >\n <ch-image class=\"icon-md\" src={CLEAR_ICON} type=\"mask\" />\n </button>\n </div>\n )}\n </div>\n )}\n </div>\n </ch-accordion-render>\n ];\n };\n\n #renderObjects = (): Element => {\n const gridIsEmpty = !this.objects.length;\n\n return (\n <ch-tabular-grid\n ref={(el: HTMLChTabularGridElement) => (this.#chGridEl = el)}\n class={{\n \"tabular-grid\": true,\n \"loading\": this.isLoading,\n \"empty\": this.objects.length === 0\n }}\n rowSelectionMode=\"multiple\"\n part=\"ch-grid-files\"\n >\n <ch-tabular-grid-columnset class=\"tabular-grid-column-set\">\n <ch-tabular-grid-column\n columnName=\"\"\n columnNameHidden={false}\n settingable={false}\n size={config.tabularGrid.colSize.maxContent}\n class=\"tabular-grid-column\"\n ></ch-tabular-grid-column>\n\n <ch-tabular-grid-column\n columnName={this.#componentLocale.tableHead.name}\n columnNameHidden={false}\n settingable={false}\n size={config.tabularGrid.colSize.maxContent}\n class=\"tabular-grid-column\"\n ></ch-tabular-grid-column>\n\n <ch-tabular-grid-column\n columnName={this.#componentLocale.tableHead.module}\n columnNameHidden={false}\n settingable={false}\n size={config.tabularGrid.colSize.maxContent}\n class=\"tabular-grid-column\"\n ></ch-tabular-grid-column>\n\n {this.gridColumnsVisibility.description && (\n <ch-tabular-grid-column\n columnName={this.#componentLocale.tableHead.description}\n columnNameHidden={false}\n settingable={false}\n size={config.tabularGrid.colSize.auto}\n class=\"tabular-grid-column\"\n ></ch-tabular-grid-column>\n )}\n\n {this.gridColumnsVisibility.modifiedDate && (\n <ch-tabular-grid-column\n columnName={this.#componentLocale.tableHead.modifiedDate}\n columnNameHidden={false}\n settingable={false}\n size={config.tabularGrid.colSize.maxContent}\n class=\"tabular-grid-column\"\n ></ch-tabular-grid-column>\n )}\n\n {this.gridColumnsVisibility.lastUser && (\n <ch-tabular-grid-column\n columnName={this.#componentLocale.tableHead.lastUser}\n columnNameHidden={false}\n settingable={false}\n size={config.tabularGrid.colSize.maxContent}\n class=\"tabular-grid-column\"\n ></ch-tabular-grid-column>\n )}\n\n {this.gridColumnsVisibility.importDate && (\n <ch-tabular-grid-column\n columnName={this.#componentLocale.tableHead.importDate}\n columnNameHidden={false}\n settingable={false}\n size={config.tabularGrid.colSize.maxContent}\n class=\"tabular-grid-column\"\n ></ch-tabular-grid-column>\n )}\n\n {this.gridColumnsVisibility.lastBuildDate && (\n <ch-tabular-grid-column\n columnName={this.#componentLocale.tableHead.lastBuildDate}\n columnNameHidden={false}\n settingable={false}\n size={config.tabularGrid.colSize.maxContent}\n class=\"tabular-grid-column\"\n ></ch-tabular-grid-column>\n )}\n </ch-tabular-grid-columnset>\n\n {!gridIsEmpty ? (\n <ch-tabular-grid-rowset class=\"tabular-grid-rowset\">\n {this.objects?.map((object: ObjectData) => (\n <ch-tabular-grid-row rowid={object.id} class=\"tabular-grid-row\">\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n <ch-image src={object.icon}></ch-image>\n </ch-tabular-grid-cell>\n\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {hiChar(\n object.name.toLowerCase(),\n this.#nameValue.toLowerCase()\n )}\n </ch-tabular-grid-cell>\n\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {object.parent}\n </ch-tabular-grid-cell>\n\n {this.gridColumnsVisibility.description && (\n <ch-tabular-grid-cell class=\"tabular-grid-cell tabular-grid-cell-description\">\n {object.description}\n </ch-tabular-grid-cell>\n )}\n\n {this.gridColumnsVisibility.modifiedDate && (\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {this.#evaluateModifiedDates(\n object.modifiedDate,\n this.dateTimeValue\n )}\n </ch-tabular-grid-cell>\n )}\n\n {this.gridColumnsVisibility.lastUser && (\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {hiChar(object.lastUser?.toLowerCase(), this.#userValue)}\n </ch-tabular-grid-cell>\n )}\n\n {this.gridColumnsVisibility.importDate && (\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {hiChar(\n object.importDate\n ? this.#formatDate(object.importDate)\n : \"\",\n this.#nameValue\n )}\n </ch-tabular-grid-cell>\n )}\n\n {this.gridColumnsVisibility.lastBuildDate && (\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {hiChar(\n object.lastBuildDate\n ? this.#formatDate(object.lastBuildDate)\n : \"\",\n this.#nameValue\n )}\n </ch-tabular-grid-cell>\n )}\n </ch-tabular-grid-row>\n ))}\n </ch-tabular-grid-rowset>\n ) : (\n <ch-tabular-grid-rowset class=\"tabular-grid-rowset\">\n <ch-tabular-grid-rowset-empty>\n {this.isLoading ? (\n <gx-ide-loader\n loaderTitle={this.#componentLocale.loader.title}\n description={this.#componentLocale.loader.description}\n show\n ></gx-ide-loader>\n ) : (\n <gx-ide-empty-state\n isAnimated={true}\n stateIconSrc={FILTER_ICON}\n stateTitle={this.#componentLocale.emptyState.title}\n ></gx-ide-empty-state>\n )}\n </ch-tabular-grid-rowset-empty>\n </ch-tabular-grid-rowset>\n )}\n </ch-tabular-grid>\n );\n };\n\n #moduleValueChangedHandler = (\n event: GxIdeEntitySelectorCustomEvent<EntityData>\n ) => {\n this.#moduleValue = event.detail;\n this.#getObjects();\n };\n\n #nameInputHandler = (event: CustomEvent<any> | InputEvent) => {\n this.#nameValue = event.detail;\n this.#getObjects();\n };\n\n #newFileCallbackHandler = (): void => {\n this.newFileCallback();\n };\n\n #openSelectionCallbackHandler = (): void => {\n this.openSelectionCallback(this.#selectedObjectsIds);\n };\n\n #searchContentsInputHandler = (event: CustomEvent<any> | InputEvent) => {\n this.#searchContentsValue = event.detail;\n this.#getObjects();\n };\n\n #setLoadingState = () => {\n // Only clear if no objects or first load\n if (!this.objects || this.objects.length === 0) {\n this.objects = [];\n }\n this.isLoading = true;\n };\n\n #userInputHandler = (event: CustomEvent<any> | InputEvent) => {\n this.#userValue = event.detail;\n this.#getObjects();\n };\n\n #showModifiedCheckboxHandler = (\n event: ChCheckboxCustomEvent<any> | InputEvent\n ) => {\n this.showModified = event.detail;\n };\n\n #selectAll = (): void => {\n if (\n this.#chGridEl &&\n typeof (this.#chGridEl as TabularGridWithSelection).selectAllRows === \"function\"\n ) {\n (this.#chGridEl as TabularGridWithSelection).selectAllRows();\n }\n };\n\n render(): void {\n return (\n <Host class=\"widget\">\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n\n <section class=\"section\">\n <header class=\"header control-header-with-border spacing-body-inline spacing-body-block-start field-group\">\n {this.#renderHeader()}\n </header>\n\n {this.#renderObjects()}\n\n <footer class=\"control-footer-with-border control-footer-space-between spacing-body\">\n <p\n // matching objects\n class=\"text-body\"\n part=\"objects-matching\"\n >\n {`${this.objects?.length} ${\n this.#componentLocale.objCount.matching\n }`}\n </p>\n\n <div class=\"buttons-spacer\">\n <button\n // select all button\n id=\"button-select-all\"\n class=\"button-secondary\"\n onClick={this.#selectAll}\n part=\"button button--select-all\"\n disabled={this.isLoading}\n >\n {this.#componentLocale.footer.btnSelectAll}\n </button>\n\n <button\n // new file button\n id=\"button-new-file\"\n class=\"button-primary button-icon-and-text\"\n onClick={this.#newFileCallbackHandler}\n part=\"button button--new-file\"\n disabled={this.isLoading}\n >\n {this.#componentLocale.footer.btnNew}\n </button>\n </div>\n </footer>\n </section>\n </Host>\n );\n }\n}\n\nexport type SelectionChangeCallback = (ids: string[]) => Promise<void>;\nexport type OpenSelectionCallback = (ids: string[]) => Promise<void>;\nexport type DeleteSelectionCallback = (ids: string[]) => Promise<void>;\nexport type SelectModuleCallback = () => Promise<EntityData | undefined>;\n// export type ContextMenuCallback = (ids: string[]) => Promise<void>;\nexport type ContextMenuCallback = (\n contextMenuInfo: ContextMenuInfo\n) => Promise<void>;\nexport type NewFileCallback = () => Promise<void>;\nexport type LoadCallback = (\n filters: ObjectFiltersData\n) => Promise<ObjectData[]>;\n\nexport interface ObjectFiltersData {\n name?: string;\n searchContents?: string;\n category?: string;\n parent?: string;\n allDescendants?: boolean;\n modifiedAfter?: string;\n modifiedBy?: string;\n modifiedDate?: Date;\n}\nexport interface ObjectData {\n id: string;\n icon: string;\n name: string;\n description: string;\n parent: string;\n modifiedDate?: Date;\n lastUser?: string;\n importDate?: Date;\n lastBuildDate: Date;\n}\n\nexport type GridColumnsVisibility = {\n description: boolean;\n importDate: boolean;\n lastBuildDate: boolean;\n lastUser: boolean;\n modifiedDate: boolean;\n};\n\ntype CheckboxState =\n | typeof CHECKBOX_CHECKED_VALUE\n | typeof CHECKBOX_UNCHECKED_VALUE;\n"],"version":3}