@genexus/genexus-ide-ui 2.1.2 → 2.1.4

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 (583) hide show
  1. package/dist/cjs/gx-ide-about.cjs.entry.js +1 -1
  2. package/dist/cjs/gx-ide-about.cjs.entry.js.map +1 -1
  3. package/dist/cjs/gx-ide-bpm-app-declaration.cjs.entry.js +1 -1
  4. package/dist/cjs/gx-ide-bpm-app-declaration.cjs.entry.js.map +1 -1
  5. package/dist/cjs/gx-ide-bpm-assign-roles.cjs.entry.js +1 -1
  6. package/dist/cjs/gx-ide-bpm-assign-roles.cjs.entry.js.map +1 -1
  7. package/dist/cjs/gx-ide-bpm-export-xpdl.cjs.entry.js +1 -1
  8. package/dist/cjs/gx-ide-bpm-export-xpdl.cjs.entry.js.map +1 -1
  9. package/dist/cjs/gx-ide-bpm-import-files.cjs.entry.js +1 -1
  10. package/dist/cjs/gx-ide-bpm-import-files.cjs.entry.js.map +1 -1
  11. package/dist/cjs/gx-ide-bpm-import-gxpm.cjs.entry.js +1 -1
  12. package/dist/cjs/gx-ide-bpm-import-gxpm.cjs.entry.js.map +1 -1
  13. package/dist/cjs/gx-ide-bpm-objects-selector.cjs.entry.js +1 -1
  14. package/dist/cjs/gx-ide-bpm-objects-selector.cjs.entry.js.map +1 -1
  15. package/dist/cjs/gx-ide-bpm-sync-gam-roles.cjs.entry.js +1 -1
  16. package/dist/cjs/gx-ide-bpm-sync-gam-roles.cjs.entry.js.map +1 -1
  17. package/dist/cjs/gx-ide-bpm-task-documents.cjs.entry.js +1 -1
  18. package/dist/cjs/gx-ide-bpm-task-documents.cjs.entry.js.map +1 -1
  19. package/dist/cjs/gx-ide-bpm-timer-duration.cjs.entry.js +1 -1
  20. package/dist/cjs/gx-ide-bpm-timer-duration.cjs.entry.js.map +1 -1
  21. package/dist/cjs/gx-ide-comments-viewer.cjs.entry.js +1 -1
  22. package/dist/cjs/gx-ide-comments-viewer.cjs.entry.js.map +1 -1
  23. package/dist/cjs/gx-ide-connect-gx-server.cjs.entry.js +1 -1
  24. package/dist/cjs/gx-ide-connect-gx-server.cjs.entry.js.map +1 -1
  25. package/dist/cjs/gx-ide-create-kb-from-server.cjs.entry.js +1 -1
  26. package/dist/cjs/gx-ide-create-kb-from-server.cjs.entry.js.map +1 -1
  27. package/dist/cjs/gx-ide-curl-inspector.cjs.entry.js +1 -1
  28. package/dist/cjs/gx-ide-curl-inspector.cjs.entry.js.map +1 -1
  29. package/dist/cjs/gx-ide-data-selector.cjs.entry.js +1 -1
  30. package/dist/cjs/gx-ide-data-selector.cjs.entry.js.map +1 -1
  31. package/dist/cjs/gx-ide-data-type-selector.cjs.entry.js +1 -1
  32. package/dist/cjs/gx-ide-data-type-selector.cjs.entry.js.map +1 -1
  33. package/dist/cjs/gx-ide-deployment-tool.cjs.entry.js +1 -1
  34. package/dist/cjs/gx-ide-deployment-tool.cjs.entry.js.map +1 -1
  35. package/dist/cjs/gx-ide-design-import.cjs.entry.js +1 -1
  36. package/dist/cjs/gx-ide-design-import.cjs.entry.js.map +1 -1
  37. package/dist/cjs/gx-ide-details-acknowledgements.cjs.entry.js +1 -1
  38. package/dist/cjs/gx-ide-details-acknowledgements.cjs.entry.js.map +1 -1
  39. package/dist/cjs/gx-ide-edit-module-server.cjs.entry.js +1 -1
  40. package/dist/cjs/gx-ide-edit-module-server.cjs.entry.js.map +1 -1
  41. package/dist/cjs/gx-ide-empty-state.cjs.entry.js +1 -1
  42. package/dist/cjs/gx-ide-empty-state.cjs.entry.js.map +1 -1
  43. package/dist/cjs/gx-ide-file-uploader.cjs.entry.js +1 -1
  44. package/dist/cjs/gx-ide-file-uploader.cjs.entry.js.map +1 -1
  45. package/dist/cjs/gx-ide-gam-installation-settings.cjs.entry.js +1 -1
  46. package/dist/cjs/gx-ide-gam-installation-settings.cjs.entry.js.map +1 -1
  47. package/dist/cjs/gx-ide-json-import.cjs.entry.js +1 -1
  48. package/dist/cjs/gx-ide-json-import.cjs.entry.js.map +1 -1
  49. package/dist/cjs/gx-ide-kb-manager-export.cjs.entry.js +1 -1
  50. package/dist/cjs/gx-ide-kb-manager-export.cjs.entry.js.map +1 -1
  51. package/dist/cjs/gx-ide-kb-manager-import.cjs.entry.js +1 -1
  52. package/dist/cjs/gx-ide-kb-manager-import.cjs.entry.js.map +1 -1
  53. package/dist/cjs/gx-ide-launchpad-apis_3.cjs.entry.js +1 -1
  54. package/dist/cjs/gx-ide-launchpad-apis_3.cjs.entry.js.map +1 -1
  55. package/dist/cjs/gx-ide-list-selector_2.cjs.entry.js +1 -1
  56. package/dist/cjs/gx-ide-list-selector_2.cjs.entry.js.map +1 -1
  57. package/dist/cjs/gx-ide-loader.cjs.entry.js +1 -1
  58. package/dist/cjs/gx-ide-loader.cjs.entry.js.map +1 -1
  59. package/dist/cjs/gx-ide-name-picker.cjs.entry.js +1 -1
  60. package/dist/cjs/gx-ide-name-picker.cjs.entry.js.map +1 -1
  61. package/dist/cjs/gx-ide-navigation-report.cjs.entry.js +1 -1
  62. package/dist/cjs/gx-ide-navigation-report.cjs.entry.js.map +1 -1
  63. package/dist/cjs/gx-ide-new-environment.cjs.entry.js +1 -1
  64. package/dist/cjs/gx-ide-new-environment.cjs.entry.js.map +1 -1
  65. package/dist/cjs/gx-ide-new-kb.cjs.entry.js +1 -1
  66. package/dist/cjs/gx-ide-new-kb.cjs.entry.js.map +1 -1
  67. package/dist/cjs/gx-ide-new-object.cjs.entry.js +1 -1
  68. package/dist/cjs/gx-ide-new-object.cjs.entry.js.map +1 -1
  69. package/dist/cjs/gx-ide-new-version.cjs.entry.js +1 -1
  70. package/dist/cjs/gx-ide-new-version.cjs.entry.js.map +1 -1
  71. package/dist/cjs/gx-ide-object-selector.cjs.entry.js +1 -1
  72. package/dist/cjs/gx-ide-object-selector.cjs.entry.js.map +1 -1
  73. package/dist/cjs/gx-ide-open-api-import.cjs.entry.js +1 -1
  74. package/dist/cjs/gx-ide-open-api-import.cjs.entry.js.map +1 -1
  75. package/dist/cjs/gx-ide-references.cjs.entry.js +1 -1
  76. package/dist/cjs/gx-ide-references.cjs.entry.js.map +1 -1
  77. package/dist/cjs/gx-ide-restore-version.cjs.entry.js +5 -4
  78. package/dist/cjs/gx-ide-restore-version.cjs.entry.js.map +1 -1
  79. package/dist/cjs/gx-ide-select-kb-items.cjs.entry.js +1 -1
  80. package/dist/cjs/gx-ide-select-kb-items.cjs.entry.js.map +1 -1
  81. package/dist/cjs/gx-ide-select-user-team.cjs.entry.js +1 -1
  82. package/dist/cjs/gx-ide-select-user-team.cjs.entry.js.map +1 -1
  83. package/dist/cjs/gx-ide-server-selector.cjs.entry.js +1 -1
  84. package/dist/cjs/gx-ide-server-selector.cjs.entry.js.map +1 -1
  85. package/dist/cjs/gx-ide-share-kb.cjs.entry.js +1 -1
  86. package/dist/cjs/gx-ide-share-kb.cjs.entry.js.map +1 -1
  87. package/dist/cjs/gx-ide-splash.cjs.entry.js +1 -1
  88. package/dist/cjs/gx-ide-splash.cjs.entry.js.map +1 -1
  89. package/dist/cjs/gx-ide-start-page.cjs.entry.js +1 -1
  90. package/dist/cjs/gx-ide-start-page.cjs.entry.js.map +1 -1
  91. package/dist/cjs/gx-ide-starting-template.cjs.entry.js +1 -1
  92. package/dist/cjs/gx-ide-starting-template.cjs.entry.js.map +1 -1
  93. package/dist/cjs/gx-ide-team-dev-bring-all-changes-selector.cjs.entry.js +1 -1
  94. package/dist/cjs/gx-ide-team-dev-bring-all-changes-selector.cjs.entry.js.map +1 -1
  95. package/dist/cjs/gx-ide-team-dev-bring-changes.cjs.entry.js +1 -1
  96. package/dist/cjs/gx-ide-team-dev-bring-changes.cjs.entry.js.map +1 -1
  97. package/dist/cjs/gx-ide-team-dev-commit.cjs.entry.js +1 -1
  98. package/dist/cjs/gx-ide-team-dev-commit.cjs.entry.js.map +1 -1
  99. package/dist/cjs/gx-ide-team-dev-history.cjs.entry.js +1 -1
  100. package/dist/cjs/gx-ide-team-dev-history.cjs.entry.js.map +1 -1
  101. package/dist/cjs/gx-ide-team-dev-preview.cjs.entry.js +3 -3
  102. package/dist/cjs/gx-ide-team-dev-preview.cjs.entry.js.map +1 -1
  103. package/dist/cjs/gx-ide-team-dev-select-recent-comment.cjs.entry.js +1 -1
  104. package/dist/cjs/gx-ide-team-dev-select-recent-comment.cjs.entry.js.map +1 -1
  105. package/dist/cjs/gx-ide-team-dev-update-partial-selection.cjs.entry.js +1 -1
  106. package/dist/cjs/gx-ide-team-dev-update-partial-selection.cjs.entry.js.map +1 -1
  107. package/dist/cjs/gx-ide-team-dev-update-to-revision.cjs.entry.js +1 -1
  108. package/dist/cjs/gx-ide-team-dev-update-to-revision.cjs.entry.js.map +1 -1
  109. package/dist/cjs/gx-ide-team-dev-update.cjs.entry.js +1 -1
  110. package/dist/cjs/gx-ide-team-dev-update.cjs.entry.js.map +1 -1
  111. package/dist/cjs/gx-ide-test.cjs.entry.js +1 -1
  112. package/dist/cjs/gx-ide-test.cjs.entry.js.map +1 -1
  113. package/dist/cjs/gx-ide-wf-settings.cjs.entry.js +1 -1
  114. package/dist/cjs/gx-ide-wf-settings.cjs.entry.js.map +1 -1
  115. package/dist/cjs/gx-ide-ww-files.cjs.entry.js +1 -1
  116. package/dist/cjs/gx-ide-ww-files.cjs.entry.js.map +1 -1
  117. package/dist/cjs/gx-ide-ww-images.cjs.entry.js +1 -1
  118. package/dist/cjs/gx-ide-ww-images.cjs.entry.js.map +1 -1
  119. package/dist/collection/components/_helpers/comments-viewer/comments-viewer.css +1 -1
  120. package/dist/collection/components/_helpers/empty-state/gx-ide-empty-state.css +1 -0
  121. package/dist/collection/components/_helpers/ide-loader/ide-loader.css +4 -0
  122. package/dist/collection/components/_helpers/list-selector/list-selector.css +1 -0
  123. package/dist/collection/components/_starting-template/starting-template.css +4 -0
  124. package/dist/collection/components/_test/test.css +1 -0
  125. package/dist/collection/components/about/about.css +4 -0
  126. package/dist/collection/components/bpm/application-declaration/bpm-app-declaration.css +5 -0
  127. package/dist/collection/components/bpm/assign-roles/bpm-assign-roles.css +1 -0
  128. package/dist/collection/components/bpm/export-xpdl/bpm-export-xpdl.css +1 -0
  129. package/dist/collection/components/bpm/import-files/bpm-import-files.css +1 -0
  130. package/dist/collection/components/bpm/import-gxpm/bpm-import-gxpm.css +1 -0
  131. package/dist/collection/components/bpm/objects-selector/bpm-objects-selector.css +1 -0
  132. package/dist/collection/components/bpm/sync-gam-roles/bpm-sync-gam-roles.css +4 -0
  133. package/dist/collection/components/bpm/task-documents/task-documents.css +4 -0
  134. package/dist/collection/components/bpm/timer-duration/bpm-timer-duration.css +1 -0
  135. package/dist/collection/components/curl-inspector/curl-inspector.css +4 -0
  136. package/dist/collection/components/data-selector/data-selector.css +4 -0
  137. package/dist/collection/components/data-type-selector/data-type-selector.css +4 -0
  138. package/dist/collection/components/deployment-tool/deployment-tool.css +1 -0
  139. package/dist/collection/components/design-import/design-import.css +5 -0
  140. package/dist/collection/components/details-acknowledgements/details-acknowledgements.css +4 -0
  141. package/dist/collection/components/file-uploader/file-uploader.css +5 -0
  142. package/dist/collection/components/gam-installation-settings/gam-installation-settings.css +5 -0
  143. package/dist/collection/components/json-import/json-import.css +4 -0
  144. package/dist/collection/components/kb-manager-export/kb-manager-export.css +4 -0
  145. package/dist/collection/components/kb-manager-import/kb-manager-import.css +4 -0
  146. package/dist/collection/components/launchpad/native-apps/launchpad-native-apps.css +4 -0
  147. package/dist/collection/components/modules/edit-module-server/edit-module-server.css +4 -0
  148. package/dist/collection/components/name-picker/name-picker.css +4 -0
  149. package/dist/collection/components/navigation-report/navigation-report.css +4 -0
  150. package/dist/collection/components/new-environment/new-environment.css +4 -0
  151. package/dist/collection/components/new-kb/new-kb.css +4 -0
  152. package/dist/collection/components/new-object/new-object.css +4 -0
  153. package/dist/collection/components/new-version/new-version.css +4 -0
  154. package/dist/collection/components/object-selector/object-selector.css +4 -0
  155. package/dist/collection/components/open-api-import/open-api-import.css +4 -0
  156. package/dist/collection/components/references/references.css +1 -0
  157. package/dist/collection/components/restore-version/restore-version.css +7 -14
  158. package/dist/collection/components/restore-version/restore-version.js +4 -3
  159. package/dist/collection/components/restore-version/restore-version.js.map +1 -1
  160. package/dist/collection/components/select-kb-items/select-kb-items.css +4 -0
  161. package/dist/collection/components/select-user-team/select-user-team.css +4 -0
  162. package/dist/collection/components/splash/splash.css +4 -0
  163. package/dist/collection/components/start-page/start-page.css +4 -0
  164. package/dist/collection/components/team-dev/bring-all-changes-selector/bring-all-changes-selector.css +4 -0
  165. package/dist/collection/components/team-dev/bring-changes/bring-changes.css +4 -0
  166. package/dist/collection/components/team-dev/connect-gx-server/connect-gx-server.css +4 -0
  167. package/dist/collection/components/team-dev/create-kb-from-server/create-kb-from-server.css +4 -0
  168. package/dist/collection/components/team-dev/history/history.css +4 -0
  169. package/dist/collection/components/team-dev/preview/team-dev-preview.css +1 -0
  170. package/dist/collection/components/team-dev/preview/team-dev-preview.js +2 -2
  171. package/dist/collection/components/team-dev/preview/team-dev-preview.js.map +1 -1
  172. package/dist/collection/components/team-dev/select-recent-comment/select-recent-comment.css +5 -0
  173. package/dist/collection/components/team-dev/server-selector/server-selector.css +4 -0
  174. package/dist/collection/components/team-dev/share-kb/share-kb.css +4 -0
  175. package/dist/collection/components/team-dev/update/update.css +4 -0
  176. package/dist/collection/components/team-dev/update-partial-selection/update-partial-selection.css +4 -0
  177. package/dist/collection/components/team-dev/update-to-revision/update-to-revision.css +4 -0
  178. package/dist/collection/components/team-dev/version-control/commit/commit.css +4 -0
  179. package/dist/collection/components/wf-settings/wf-settings.css +1 -0
  180. package/dist/collection/components/ww-files/ww-files.css +4 -0
  181. package/dist/collection/components/ww-images/ww-images.css +4 -0
  182. package/dist/components/bpm-objects-selector.js +1 -1
  183. package/dist/components/bpm-objects-selector.js.map +1 -1
  184. package/dist/components/gx-ide-about.js +1 -1
  185. package/dist/components/gx-ide-about.js.map +1 -1
  186. package/dist/components/gx-ide-bpm-app-declaration.js +1 -1
  187. package/dist/components/gx-ide-bpm-app-declaration.js.map +1 -1
  188. package/dist/components/gx-ide-bpm-assign-roles.js +1 -1
  189. package/dist/components/gx-ide-bpm-assign-roles.js.map +1 -1
  190. package/dist/components/gx-ide-bpm-export-xpdl.js +1 -1
  191. package/dist/components/gx-ide-bpm-export-xpdl.js.map +1 -1
  192. package/dist/components/gx-ide-bpm-import-files.js +1 -1
  193. package/dist/components/gx-ide-bpm-import-files.js.map +1 -1
  194. package/dist/components/gx-ide-bpm-import-gxpm.js +1 -1
  195. package/dist/components/gx-ide-bpm-import-gxpm.js.map +1 -1
  196. package/dist/components/gx-ide-bpm-sync-gam-roles.js +1 -1
  197. package/dist/components/gx-ide-bpm-sync-gam-roles.js.map +1 -1
  198. package/dist/components/gx-ide-bpm-task-documents.js +1 -1
  199. package/dist/components/gx-ide-bpm-task-documents.js.map +1 -1
  200. package/dist/components/gx-ide-bpm-timer-duration.js +1 -1
  201. package/dist/components/gx-ide-bpm-timer-duration.js.map +1 -1
  202. package/dist/components/gx-ide-comments-viewer.js +1 -1
  203. package/dist/components/gx-ide-comments-viewer.js.map +1 -1
  204. package/dist/components/gx-ide-connect-gx-server.js +1 -1
  205. package/dist/components/gx-ide-connect-gx-server.js.map +1 -1
  206. package/dist/components/gx-ide-create-kb-from-server.js +1 -1
  207. package/dist/components/gx-ide-create-kb-from-server.js.map +1 -1
  208. package/dist/components/gx-ide-curl-inspector.js +1 -1
  209. package/dist/components/gx-ide-curl-inspector.js.map +1 -1
  210. package/dist/components/gx-ide-data-selector.js +1 -1
  211. package/dist/components/gx-ide-data-selector.js.map +1 -1
  212. package/dist/components/gx-ide-data-type-selector.js +1 -1
  213. package/dist/components/gx-ide-data-type-selector.js.map +1 -1
  214. package/dist/components/gx-ide-deployment-tool.js +1 -1
  215. package/dist/components/gx-ide-deployment-tool.js.map +1 -1
  216. package/dist/components/gx-ide-design-import.js +1 -1
  217. package/dist/components/gx-ide-design-import.js.map +1 -1
  218. package/dist/components/gx-ide-details-acknowledgements.js +1 -1
  219. package/dist/components/gx-ide-details-acknowledgements.js.map +1 -1
  220. package/dist/components/gx-ide-edit-module-server.js +1 -1
  221. package/dist/components/gx-ide-edit-module-server.js.map +1 -1
  222. package/dist/components/gx-ide-empty-state2.js +1 -1
  223. package/dist/components/gx-ide-empty-state2.js.map +1 -1
  224. package/dist/components/gx-ide-file-uploader.js +1 -1
  225. package/dist/components/gx-ide-file-uploader.js.map +1 -1
  226. package/dist/components/gx-ide-gam-installation-settings.js +1 -1
  227. package/dist/components/gx-ide-gam-installation-settings.js.map +1 -1
  228. package/dist/components/gx-ide-json-import.js +1 -1
  229. package/dist/components/gx-ide-json-import.js.map +1 -1
  230. package/dist/components/gx-ide-kb-manager-export.js +1 -1
  231. package/dist/components/gx-ide-kb-manager-export.js.map +1 -1
  232. package/dist/components/gx-ide-kb-manager-import.js +1 -1
  233. package/dist/components/gx-ide-kb-manager-import.js.map +1 -1
  234. package/dist/components/gx-ide-name-picker.js +1 -1
  235. package/dist/components/gx-ide-name-picker.js.map +1 -1
  236. package/dist/components/gx-ide-navigation-report.js +1 -1
  237. package/dist/components/gx-ide-navigation-report.js.map +1 -1
  238. package/dist/components/gx-ide-new-environment.js +1 -1
  239. package/dist/components/gx-ide-new-environment.js.map +1 -1
  240. package/dist/components/gx-ide-new-kb.js +1 -1
  241. package/dist/components/gx-ide-new-kb.js.map +1 -1
  242. package/dist/components/gx-ide-new-object.js +1 -1
  243. package/dist/components/gx-ide-new-object.js.map +1 -1
  244. package/dist/components/gx-ide-new-version.js +1 -1
  245. package/dist/components/gx-ide-new-version.js.map +1 -1
  246. package/dist/components/gx-ide-object-selector.js +1 -1
  247. package/dist/components/gx-ide-object-selector.js.map +1 -1
  248. package/dist/components/gx-ide-open-api-import.js +1 -1
  249. package/dist/components/gx-ide-open-api-import.js.map +1 -1
  250. package/dist/components/gx-ide-references.js +1 -1
  251. package/dist/components/gx-ide-references.js.map +1 -1
  252. package/dist/components/gx-ide-restore-version.js +5 -4
  253. package/dist/components/gx-ide-restore-version.js.map +1 -1
  254. package/dist/components/gx-ide-select-user-team.js +1 -1
  255. package/dist/components/gx-ide-select-user-team.js.map +1 -1
  256. package/dist/components/gx-ide-server-selector.js +1 -1
  257. package/dist/components/gx-ide-server-selector.js.map +1 -1
  258. package/dist/components/gx-ide-share-kb.js +1 -1
  259. package/dist/components/gx-ide-share-kb.js.map +1 -1
  260. package/dist/components/gx-ide-splash.js +1 -1
  261. package/dist/components/gx-ide-splash.js.map +1 -1
  262. package/dist/components/gx-ide-start-page.js +1 -1
  263. package/dist/components/gx-ide-start-page.js.map +1 -1
  264. package/dist/components/gx-ide-starting-template.js +1 -1
  265. package/dist/components/gx-ide-starting-template.js.map +1 -1
  266. package/dist/components/gx-ide-team-dev-bring-all-changes-selector.js +1 -1
  267. package/dist/components/gx-ide-team-dev-bring-all-changes-selector.js.map +1 -1
  268. package/dist/components/gx-ide-team-dev-bring-changes.js +1 -1
  269. package/dist/components/gx-ide-team-dev-bring-changes.js.map +1 -1
  270. package/dist/components/gx-ide-team-dev-commit.js +1 -1
  271. package/dist/components/gx-ide-team-dev-commit.js.map +1 -1
  272. package/dist/components/gx-ide-team-dev-history.js +1 -1
  273. package/dist/components/gx-ide-team-dev-history.js.map +1 -1
  274. package/dist/components/gx-ide-team-dev-preview.js +3 -3
  275. package/dist/components/gx-ide-team-dev-preview.js.map +1 -1
  276. package/dist/components/gx-ide-team-dev-select-recent-comment.js +1 -1
  277. package/dist/components/gx-ide-team-dev-select-recent-comment.js.map +1 -1
  278. package/dist/components/gx-ide-team-dev-update-partial-selection.js +1 -1
  279. package/dist/components/gx-ide-team-dev-update-partial-selection.js.map +1 -1
  280. package/dist/components/gx-ide-team-dev-update-to-revision.js +1 -1
  281. package/dist/components/gx-ide-team-dev-update-to-revision.js.map +1 -1
  282. package/dist/components/gx-ide-team-dev-update.js +1 -1
  283. package/dist/components/gx-ide-team-dev-update.js.map +1 -1
  284. package/dist/components/gx-ide-test.js +1 -1
  285. package/dist/components/gx-ide-test.js.map +1 -1
  286. package/dist/components/gx-ide-wf-settings.js +1 -1
  287. package/dist/components/gx-ide-wf-settings.js.map +1 -1
  288. package/dist/components/gx-ide-ww-files.js +1 -1
  289. package/dist/components/gx-ide-ww-files.js.map +1 -1
  290. package/dist/components/gx-ide-ww-images.js +1 -1
  291. package/dist/components/gx-ide-ww-images.js.map +1 -1
  292. package/dist/components/ide-loader.js +1 -1
  293. package/dist/components/ide-loader.js.map +1 -1
  294. package/dist/components/launchpad-native-apps.js +1 -1
  295. package/dist/components/launchpad-native-apps.js.map +1 -1
  296. package/dist/components/list-selector.js +1 -1
  297. package/dist/components/list-selector.js.map +1 -1
  298. package/dist/components/select-kb-items.js +1 -1
  299. package/dist/components/select-kb-items.js.map +1 -1
  300. package/dist/esm/gx-ide-about.entry.js +1 -1
  301. package/dist/esm/gx-ide-about.entry.js.map +1 -1
  302. package/dist/esm/gx-ide-bpm-app-declaration.entry.js +1 -1
  303. package/dist/esm/gx-ide-bpm-app-declaration.entry.js.map +1 -1
  304. package/dist/esm/gx-ide-bpm-assign-roles.entry.js +1 -1
  305. package/dist/esm/gx-ide-bpm-assign-roles.entry.js.map +1 -1
  306. package/dist/esm/gx-ide-bpm-export-xpdl.entry.js +1 -1
  307. package/dist/esm/gx-ide-bpm-export-xpdl.entry.js.map +1 -1
  308. package/dist/esm/gx-ide-bpm-import-files.entry.js +1 -1
  309. package/dist/esm/gx-ide-bpm-import-files.entry.js.map +1 -1
  310. package/dist/esm/gx-ide-bpm-import-gxpm.entry.js +1 -1
  311. package/dist/esm/gx-ide-bpm-import-gxpm.entry.js.map +1 -1
  312. package/dist/esm/gx-ide-bpm-objects-selector.entry.js +1 -1
  313. package/dist/esm/gx-ide-bpm-objects-selector.entry.js.map +1 -1
  314. package/dist/esm/gx-ide-bpm-sync-gam-roles.entry.js +1 -1
  315. package/dist/esm/gx-ide-bpm-sync-gam-roles.entry.js.map +1 -1
  316. package/dist/esm/gx-ide-bpm-task-documents.entry.js +1 -1
  317. package/dist/esm/gx-ide-bpm-task-documents.entry.js.map +1 -1
  318. package/dist/esm/gx-ide-bpm-timer-duration.entry.js +1 -1
  319. package/dist/esm/gx-ide-bpm-timer-duration.entry.js.map +1 -1
  320. package/dist/esm/gx-ide-comments-viewer.entry.js +1 -1
  321. package/dist/esm/gx-ide-comments-viewer.entry.js.map +1 -1
  322. package/dist/esm/gx-ide-connect-gx-server.entry.js +1 -1
  323. package/dist/esm/gx-ide-connect-gx-server.entry.js.map +1 -1
  324. package/dist/esm/gx-ide-create-kb-from-server.entry.js +1 -1
  325. package/dist/esm/gx-ide-create-kb-from-server.entry.js.map +1 -1
  326. package/dist/esm/gx-ide-curl-inspector.entry.js +1 -1
  327. package/dist/esm/gx-ide-curl-inspector.entry.js.map +1 -1
  328. package/dist/esm/gx-ide-data-selector.entry.js +1 -1
  329. package/dist/esm/gx-ide-data-selector.entry.js.map +1 -1
  330. package/dist/esm/gx-ide-data-type-selector.entry.js +1 -1
  331. package/dist/esm/gx-ide-data-type-selector.entry.js.map +1 -1
  332. package/dist/esm/gx-ide-deployment-tool.entry.js +1 -1
  333. package/dist/esm/gx-ide-deployment-tool.entry.js.map +1 -1
  334. package/dist/esm/gx-ide-design-import.entry.js +1 -1
  335. package/dist/esm/gx-ide-design-import.entry.js.map +1 -1
  336. package/dist/esm/gx-ide-details-acknowledgements.entry.js +1 -1
  337. package/dist/esm/gx-ide-details-acknowledgements.entry.js.map +1 -1
  338. package/dist/esm/gx-ide-edit-module-server.entry.js +1 -1
  339. package/dist/esm/gx-ide-edit-module-server.entry.js.map +1 -1
  340. package/dist/esm/gx-ide-empty-state.entry.js +1 -1
  341. package/dist/esm/gx-ide-empty-state.entry.js.map +1 -1
  342. package/dist/esm/gx-ide-file-uploader.entry.js +1 -1
  343. package/dist/esm/gx-ide-file-uploader.entry.js.map +1 -1
  344. package/dist/esm/gx-ide-gam-installation-settings.entry.js +1 -1
  345. package/dist/esm/gx-ide-gam-installation-settings.entry.js.map +1 -1
  346. package/dist/esm/gx-ide-json-import.entry.js +1 -1
  347. package/dist/esm/gx-ide-json-import.entry.js.map +1 -1
  348. package/dist/esm/gx-ide-kb-manager-export.entry.js +1 -1
  349. package/dist/esm/gx-ide-kb-manager-export.entry.js.map +1 -1
  350. package/dist/esm/gx-ide-kb-manager-import.entry.js +1 -1
  351. package/dist/esm/gx-ide-kb-manager-import.entry.js.map +1 -1
  352. package/dist/esm/gx-ide-launchpad-apis_3.entry.js +1 -1
  353. package/dist/esm/gx-ide-launchpad-apis_3.entry.js.map +1 -1
  354. package/dist/esm/gx-ide-list-selector_2.entry.js +1 -1
  355. package/dist/esm/gx-ide-list-selector_2.entry.js.map +1 -1
  356. package/dist/esm/gx-ide-loader.entry.js +1 -1
  357. package/dist/esm/gx-ide-loader.entry.js.map +1 -1
  358. package/dist/esm/gx-ide-name-picker.entry.js +1 -1
  359. package/dist/esm/gx-ide-name-picker.entry.js.map +1 -1
  360. package/dist/esm/gx-ide-navigation-report.entry.js +1 -1
  361. package/dist/esm/gx-ide-navigation-report.entry.js.map +1 -1
  362. package/dist/esm/gx-ide-new-environment.entry.js +1 -1
  363. package/dist/esm/gx-ide-new-environment.entry.js.map +1 -1
  364. package/dist/esm/gx-ide-new-kb.entry.js +1 -1
  365. package/dist/esm/gx-ide-new-kb.entry.js.map +1 -1
  366. package/dist/esm/gx-ide-new-object.entry.js +1 -1
  367. package/dist/esm/gx-ide-new-object.entry.js.map +1 -1
  368. package/dist/esm/gx-ide-new-version.entry.js +1 -1
  369. package/dist/esm/gx-ide-new-version.entry.js.map +1 -1
  370. package/dist/esm/gx-ide-object-selector.entry.js +1 -1
  371. package/dist/esm/gx-ide-object-selector.entry.js.map +1 -1
  372. package/dist/esm/gx-ide-open-api-import.entry.js +1 -1
  373. package/dist/esm/gx-ide-open-api-import.entry.js.map +1 -1
  374. package/dist/esm/gx-ide-references.entry.js +1 -1
  375. package/dist/esm/gx-ide-references.entry.js.map +1 -1
  376. package/dist/esm/gx-ide-restore-version.entry.js +5 -4
  377. package/dist/esm/gx-ide-restore-version.entry.js.map +1 -1
  378. package/dist/esm/gx-ide-select-kb-items.entry.js +1 -1
  379. package/dist/esm/gx-ide-select-kb-items.entry.js.map +1 -1
  380. package/dist/esm/gx-ide-select-user-team.entry.js +1 -1
  381. package/dist/esm/gx-ide-select-user-team.entry.js.map +1 -1
  382. package/dist/esm/gx-ide-server-selector.entry.js +1 -1
  383. package/dist/esm/gx-ide-server-selector.entry.js.map +1 -1
  384. package/dist/esm/gx-ide-share-kb.entry.js +1 -1
  385. package/dist/esm/gx-ide-share-kb.entry.js.map +1 -1
  386. package/dist/esm/gx-ide-splash.entry.js +1 -1
  387. package/dist/esm/gx-ide-splash.entry.js.map +1 -1
  388. package/dist/esm/gx-ide-start-page.entry.js +1 -1
  389. package/dist/esm/gx-ide-start-page.entry.js.map +1 -1
  390. package/dist/esm/gx-ide-starting-template.entry.js +1 -1
  391. package/dist/esm/gx-ide-starting-template.entry.js.map +1 -1
  392. package/dist/esm/gx-ide-team-dev-bring-all-changes-selector.entry.js +1 -1
  393. package/dist/esm/gx-ide-team-dev-bring-all-changes-selector.entry.js.map +1 -1
  394. package/dist/esm/gx-ide-team-dev-bring-changes.entry.js +1 -1
  395. package/dist/esm/gx-ide-team-dev-bring-changes.entry.js.map +1 -1
  396. package/dist/esm/gx-ide-team-dev-commit.entry.js +1 -1
  397. package/dist/esm/gx-ide-team-dev-commit.entry.js.map +1 -1
  398. package/dist/esm/gx-ide-team-dev-history.entry.js +1 -1
  399. package/dist/esm/gx-ide-team-dev-history.entry.js.map +1 -1
  400. package/dist/esm/gx-ide-team-dev-preview.entry.js +3 -3
  401. package/dist/esm/gx-ide-team-dev-preview.entry.js.map +1 -1
  402. package/dist/esm/gx-ide-team-dev-select-recent-comment.entry.js +1 -1
  403. package/dist/esm/gx-ide-team-dev-select-recent-comment.entry.js.map +1 -1
  404. package/dist/esm/gx-ide-team-dev-update-partial-selection.entry.js +1 -1
  405. package/dist/esm/gx-ide-team-dev-update-partial-selection.entry.js.map +1 -1
  406. package/dist/esm/gx-ide-team-dev-update-to-revision.entry.js +1 -1
  407. package/dist/esm/gx-ide-team-dev-update-to-revision.entry.js.map +1 -1
  408. package/dist/esm/gx-ide-team-dev-update.entry.js +1 -1
  409. package/dist/esm/gx-ide-team-dev-update.entry.js.map +1 -1
  410. package/dist/esm/gx-ide-test.entry.js +1 -1
  411. package/dist/esm/gx-ide-test.entry.js.map +1 -1
  412. package/dist/esm/gx-ide-wf-settings.entry.js +1 -1
  413. package/dist/esm/gx-ide-wf-settings.entry.js.map +1 -1
  414. package/dist/esm/gx-ide-ww-files.entry.js +1 -1
  415. package/dist/esm/gx-ide-ww-files.entry.js.map +1 -1
  416. package/dist/esm/gx-ide-ww-images.entry.js +1 -1
  417. package/dist/esm/gx-ide-ww-images.entry.js.map +1 -1
  418. package/dist/genexus-ide-ui/genexus-ide-ui.esm.js +1 -1
  419. package/dist/genexus-ide-ui/{p-5929f575.entry.js → p-00705e1c.entry.js} +2 -2
  420. package/dist/genexus-ide-ui/p-00705e1c.entry.js.map +1 -0
  421. package/dist/genexus-ide-ui/{p-18c3c961.entry.js → p-056955be.entry.js} +17 -17
  422. package/dist/genexus-ide-ui/p-056955be.entry.js.map +1 -0
  423. package/dist/genexus-ide-ui/{p-3ff33154.entry.js → p-0620e8f2.entry.js} +33 -33
  424. package/dist/genexus-ide-ui/p-0620e8f2.entry.js.map +1 -0
  425. package/dist/genexus-ide-ui/{p-4af50a00.entry.js → p-06c31f23.entry.js} +2 -2
  426. package/dist/genexus-ide-ui/p-06c31f23.entry.js.map +1 -0
  427. package/dist/genexus-ide-ui/{p-76fdea52.entry.js → p-0be24413.entry.js} +2 -2
  428. package/dist/genexus-ide-ui/p-0be24413.entry.js.map +1 -0
  429. package/dist/genexus-ide-ui/{p-8019e064.entry.js → p-0e4daeb7.entry.js} +11 -11
  430. package/dist/genexus-ide-ui/p-0e4daeb7.entry.js.map +1 -0
  431. package/dist/genexus-ide-ui/{p-840c09d2.entry.js → p-123ef674.entry.js} +2 -2
  432. package/dist/genexus-ide-ui/{p-70cd77bc.entry.js → p-217bd2d7.entry.js} +2 -2
  433. package/dist/genexus-ide-ui/p-217bd2d7.entry.js.map +1 -0
  434. package/dist/genexus-ide-ui/{p-d6e7a813.entry.js → p-24247ec3.entry.js} +11 -11
  435. package/dist/genexus-ide-ui/p-24247ec3.entry.js.map +1 -0
  436. package/dist/genexus-ide-ui/{p-af2f9983.entry.js → p-2b3f161f.entry.js} +21 -21
  437. package/dist/genexus-ide-ui/p-2b3f161f.entry.js.map +1 -0
  438. package/dist/genexus-ide-ui/{p-750eb88a.entry.js → p-34577955.entry.js} +9 -9
  439. package/dist/genexus-ide-ui/p-34577955.entry.js.map +1 -0
  440. package/dist/genexus-ide-ui/{p-bdaae26a.entry.js → p-35c2a2f9.entry.js} +2 -2
  441. package/dist/genexus-ide-ui/p-35c2a2f9.entry.js.map +1 -0
  442. package/dist/genexus-ide-ui/{p-ee77b260.entry.js → p-37812762.entry.js} +8 -8
  443. package/dist/genexus-ide-ui/p-37812762.entry.js.map +1 -0
  444. package/dist/genexus-ide-ui/{p-0a7cbbd0.entry.js → p-3bbdad29.entry.js} +2 -2
  445. package/dist/genexus-ide-ui/p-3bbdad29.entry.js.map +1 -0
  446. package/dist/genexus-ide-ui/{p-f05a137a.entry.js → p-42860e7e.entry.js} +71 -71
  447. package/dist/genexus-ide-ui/p-42860e7e.entry.js.map +1 -0
  448. package/dist/genexus-ide-ui/{p-168d3c83.entry.js → p-4431f46f.entry.js} +2 -2
  449. package/dist/genexus-ide-ui/{p-24cf1cd2.entry.js → p-4bafe061.entry.js} +39 -39
  450. package/dist/genexus-ide-ui/p-4bafe061.entry.js.map +1 -0
  451. package/dist/genexus-ide-ui/{p-e4116b36.entry.js → p-4d7433e0.entry.js} +2 -2
  452. package/dist/genexus-ide-ui/p-4d7433e0.entry.js.map +1 -0
  453. package/dist/genexus-ide-ui/{p-dcfae3da.entry.js → p-4f58397f.entry.js} +53 -53
  454. package/dist/genexus-ide-ui/p-4f58397f.entry.js.map +1 -0
  455. package/dist/genexus-ide-ui/{p-2567883a.entry.js → p-508c4bee.entry.js} +2 -2
  456. package/dist/genexus-ide-ui/{p-8cee1076.entry.js → p-55cb0614.entry.js} +14 -14
  457. package/dist/genexus-ide-ui/p-55cb0614.entry.js.map +1 -0
  458. package/dist/genexus-ide-ui/{p-6b430ac1.entry.js → p-5727fce7.entry.js} +2 -2
  459. package/dist/genexus-ide-ui/p-5727fce7.entry.js.map +1 -0
  460. package/dist/genexus-ide-ui/{p-520c3763.entry.js → p-572fdc25.entry.js} +2 -2
  461. package/dist/genexus-ide-ui/p-572fdc25.entry.js.map +1 -0
  462. package/dist/genexus-ide-ui/{p-a50c520c.entry.js → p-5864a82d.entry.js} +18 -18
  463. package/dist/genexus-ide-ui/p-5864a82d.entry.js.map +1 -0
  464. package/dist/genexus-ide-ui/{p-2a59b523.entry.js → p-60db2f02.entry.js} +2 -2
  465. package/dist/genexus-ide-ui/p-60db2f02.entry.js.map +1 -0
  466. package/dist/genexus-ide-ui/{p-178805d6.entry.js → p-632d3a74.entry.js} +2 -2
  467. package/dist/genexus-ide-ui/p-632d3a74.entry.js.map +1 -0
  468. package/dist/genexus-ide-ui/{p-36462e51.entry.js → p-63abf7e8.entry.js} +41 -41
  469. package/dist/genexus-ide-ui/p-63abf7e8.entry.js.map +1 -0
  470. package/dist/genexus-ide-ui/{p-bb5a5c23.entry.js → p-69e7d46b.entry.js} +12 -12
  471. package/dist/genexus-ide-ui/p-69e7d46b.entry.js.map +1 -0
  472. package/dist/genexus-ide-ui/{p-1d3da80d.entry.js → p-7b76b0e4.entry.js} +2 -2
  473. package/dist/genexus-ide-ui/p-7b76b0e4.entry.js.map +1 -0
  474. package/dist/genexus-ide-ui/{p-875b8615.entry.js → p-83a7e6fb.entry.js} +6 -6
  475. package/dist/genexus-ide-ui/p-83a7e6fb.entry.js.map +1 -0
  476. package/dist/genexus-ide-ui/{p-dbac8ae2.entry.js → p-886dc9c1.entry.js} +2 -2
  477. package/dist/genexus-ide-ui/{p-79d4490e.entry.js → p-90a50197.entry.js} +58 -58
  478. package/dist/genexus-ide-ui/p-90a50197.entry.js.map +1 -0
  479. package/dist/genexus-ide-ui/{p-49c1d667.entry.js → p-90b2307f.entry.js} +7 -7
  480. package/dist/genexus-ide-ui/p-90b2307f.entry.js.map +1 -0
  481. package/dist/genexus-ide-ui/{p-38d3adf1.entry.js → p-944a589f.entry.js} +21 -21
  482. package/dist/genexus-ide-ui/p-944a589f.entry.js.map +1 -0
  483. package/dist/genexus-ide-ui/{p-ca47bb29.entry.js → p-98820155.entry.js} +2 -2
  484. package/dist/genexus-ide-ui/{p-ca47bb29.entry.js.map → p-98820155.entry.js.map} +1 -1
  485. package/dist/genexus-ide-ui/{p-27786355.entry.js → p-98dbb43d.entry.js} +25 -25
  486. package/dist/genexus-ide-ui/p-98dbb43d.entry.js.map +1 -0
  487. package/dist/genexus-ide-ui/{p-b167052a.entry.js → p-9a10fa97.entry.js} +2 -2
  488. package/dist/genexus-ide-ui/{p-d0e61bdc.entry.js → p-9ca0c042.entry.js} +2 -2
  489. package/dist/genexus-ide-ui/p-9ca0c042.entry.js.map +1 -0
  490. package/dist/genexus-ide-ui/{p-c31f9478.entry.js → p-aad714a5.entry.js} +31 -31
  491. package/dist/genexus-ide-ui/p-aad714a5.entry.js.map +1 -0
  492. package/dist/genexus-ide-ui/{p-f61bde09.entry.js → p-af267991.entry.js} +49 -49
  493. package/dist/genexus-ide-ui/p-af267991.entry.js.map +1 -0
  494. package/dist/genexus-ide-ui/{p-22c0058b.entry.js → p-b5f2603f.entry.js} +11 -11
  495. package/dist/genexus-ide-ui/p-b5f2603f.entry.js.map +1 -0
  496. package/dist/genexus-ide-ui/{p-0dfa813a.entry.js → p-b6d59827.entry.js} +16 -16
  497. package/dist/genexus-ide-ui/p-b6d59827.entry.js.map +1 -0
  498. package/dist/genexus-ide-ui/{p-a8465dff.entry.js → p-c05dc058.entry.js} +5 -5
  499. package/dist/genexus-ide-ui/p-c05dc058.entry.js.map +1 -0
  500. package/dist/genexus-ide-ui/{p-885e5d1c.entry.js → p-c2f2d79f.entry.js} +2 -2
  501. package/dist/genexus-ide-ui/p-c2f2d79f.entry.js.map +1 -0
  502. package/dist/genexus-ide-ui/{p-14c82d16.entry.js → p-c3a355c6.entry.js} +48 -48
  503. package/dist/genexus-ide-ui/p-c3a355c6.entry.js.map +1 -0
  504. package/dist/genexus-ide-ui/{p-1356ec09.entry.js → p-cd9e9e2b.entry.js} +2 -2
  505. package/dist/genexus-ide-ui/p-cd9e9e2b.entry.js.map +1 -0
  506. package/dist/genexus-ide-ui/{p-fa8cb0d8.entry.js → p-cdd2e79d.entry.js} +2 -2
  507. package/dist/genexus-ide-ui/{p-60bbf1b4.entry.js → p-d68412ac.entry.js} +8 -8
  508. package/dist/genexus-ide-ui/{p-b2966a6b.entry.js → p-d7964c12.entry.js} +2 -2
  509. package/dist/genexus-ide-ui/{p-8735d37c.entry.js → p-dbf9a97d.entry.js} +2 -2
  510. package/dist/genexus-ide-ui/{p-14823abe.entry.js → p-e0fb6257.entry.js} +9 -9
  511. package/dist/genexus-ide-ui/p-e0fb6257.entry.js.map +1 -0
  512. package/dist/genexus-ide-ui/{p-734d5fa1.entry.js → p-e32f5b19.entry.js} +2 -2
  513. package/dist/genexus-ide-ui/{p-af3cc463.entry.js → p-e3ff125f.entry.js} +2 -2
  514. package/dist/genexus-ide-ui/{p-899ec74e.entry.js → p-e883cd82.entry.js} +35 -35
  515. package/dist/genexus-ide-ui/p-e883cd82.entry.js.map +1 -0
  516. package/dist/genexus-ide-ui/{p-e4c250eb.entry.js → p-ebb56b65.entry.js} +23 -23
  517. package/dist/genexus-ide-ui/p-ebb56b65.entry.js.map +1 -0
  518. package/dist/genexus-ide-ui/{p-b44a875d.entry.js → p-f1b452fb.entry.js} +2 -2
  519. package/dist/genexus-ide-ui/p-f1b452fb.entry.js.map +1 -0
  520. package/dist/genexus-ide-ui/{p-ebfc64a5.entry.js → p-fb5dd0a2.entry.js} +10 -10
  521. package/dist/genexus-ide-ui/p-fb5dd0a2.entry.js.map +1 -0
  522. package/dist/genexus-ide-ui/{p-392bdfaa.entry.js → p-fb64e0b1.entry.js} +20 -20
  523. package/dist/genexus-ide-ui/p-fb64e0b1.entry.js.map +1 -0
  524. package/dist/genexus-ide-ui/{p-747fbbd8.entry.js → p-fdaeb19a.entry.js} +2 -2
  525. package/package.json +1 -1
  526. package/dist/genexus-ide-ui/p-0a7cbbd0.entry.js.map +0 -1
  527. package/dist/genexus-ide-ui/p-0dfa813a.entry.js.map +0 -1
  528. package/dist/genexus-ide-ui/p-1356ec09.entry.js.map +0 -1
  529. package/dist/genexus-ide-ui/p-14823abe.entry.js.map +0 -1
  530. package/dist/genexus-ide-ui/p-14c82d16.entry.js.map +0 -1
  531. package/dist/genexus-ide-ui/p-178805d6.entry.js.map +0 -1
  532. package/dist/genexus-ide-ui/p-18c3c961.entry.js.map +0 -1
  533. package/dist/genexus-ide-ui/p-1d3da80d.entry.js.map +0 -1
  534. package/dist/genexus-ide-ui/p-22c0058b.entry.js.map +0 -1
  535. package/dist/genexus-ide-ui/p-24cf1cd2.entry.js.map +0 -1
  536. package/dist/genexus-ide-ui/p-27786355.entry.js.map +0 -1
  537. package/dist/genexus-ide-ui/p-2a59b523.entry.js.map +0 -1
  538. package/dist/genexus-ide-ui/p-36462e51.entry.js.map +0 -1
  539. package/dist/genexus-ide-ui/p-38d3adf1.entry.js.map +0 -1
  540. package/dist/genexus-ide-ui/p-392bdfaa.entry.js.map +0 -1
  541. package/dist/genexus-ide-ui/p-3ff33154.entry.js.map +0 -1
  542. package/dist/genexus-ide-ui/p-49c1d667.entry.js.map +0 -1
  543. package/dist/genexus-ide-ui/p-4af50a00.entry.js.map +0 -1
  544. package/dist/genexus-ide-ui/p-520c3763.entry.js.map +0 -1
  545. package/dist/genexus-ide-ui/p-5929f575.entry.js.map +0 -1
  546. package/dist/genexus-ide-ui/p-6b430ac1.entry.js.map +0 -1
  547. package/dist/genexus-ide-ui/p-70cd77bc.entry.js.map +0 -1
  548. package/dist/genexus-ide-ui/p-750eb88a.entry.js.map +0 -1
  549. package/dist/genexus-ide-ui/p-76fdea52.entry.js.map +0 -1
  550. package/dist/genexus-ide-ui/p-79d4490e.entry.js.map +0 -1
  551. package/dist/genexus-ide-ui/p-8019e064.entry.js.map +0 -1
  552. package/dist/genexus-ide-ui/p-875b8615.entry.js.map +0 -1
  553. package/dist/genexus-ide-ui/p-885e5d1c.entry.js.map +0 -1
  554. package/dist/genexus-ide-ui/p-899ec74e.entry.js.map +0 -1
  555. package/dist/genexus-ide-ui/p-8cee1076.entry.js.map +0 -1
  556. package/dist/genexus-ide-ui/p-a50c520c.entry.js.map +0 -1
  557. package/dist/genexus-ide-ui/p-a8465dff.entry.js.map +0 -1
  558. package/dist/genexus-ide-ui/p-af2f9983.entry.js.map +0 -1
  559. package/dist/genexus-ide-ui/p-b44a875d.entry.js.map +0 -1
  560. package/dist/genexus-ide-ui/p-bb5a5c23.entry.js.map +0 -1
  561. package/dist/genexus-ide-ui/p-bdaae26a.entry.js.map +0 -1
  562. package/dist/genexus-ide-ui/p-c31f9478.entry.js.map +0 -1
  563. package/dist/genexus-ide-ui/p-d0e61bdc.entry.js.map +0 -1
  564. package/dist/genexus-ide-ui/p-d6e7a813.entry.js.map +0 -1
  565. package/dist/genexus-ide-ui/p-dcfae3da.entry.js.map +0 -1
  566. package/dist/genexus-ide-ui/p-e4116b36.entry.js.map +0 -1
  567. package/dist/genexus-ide-ui/p-e4c250eb.entry.js.map +0 -1
  568. package/dist/genexus-ide-ui/p-ebfc64a5.entry.js.map +0 -1
  569. package/dist/genexus-ide-ui/p-ee77b260.entry.js.map +0 -1
  570. package/dist/genexus-ide-ui/p-f05a137a.entry.js.map +0 -1
  571. package/dist/genexus-ide-ui/p-f61bde09.entry.js.map +0 -1
  572. /package/dist/genexus-ide-ui/{p-840c09d2.entry.js.map → p-123ef674.entry.js.map} +0 -0
  573. /package/dist/genexus-ide-ui/{p-168d3c83.entry.js.map → p-4431f46f.entry.js.map} +0 -0
  574. /package/dist/genexus-ide-ui/{p-2567883a.entry.js.map → p-508c4bee.entry.js.map} +0 -0
  575. /package/dist/genexus-ide-ui/{p-dbac8ae2.entry.js.map → p-886dc9c1.entry.js.map} +0 -0
  576. /package/dist/genexus-ide-ui/{p-b167052a.entry.js.map → p-9a10fa97.entry.js.map} +0 -0
  577. /package/dist/genexus-ide-ui/{p-fa8cb0d8.entry.js.map → p-cdd2e79d.entry.js.map} +0 -0
  578. /package/dist/genexus-ide-ui/{p-60bbf1b4.entry.js.map → p-d68412ac.entry.js.map} +0 -0
  579. /package/dist/genexus-ide-ui/{p-b2966a6b.entry.js.map → p-d7964c12.entry.js.map} +0 -0
  580. /package/dist/genexus-ide-ui/{p-8735d37c.entry.js.map → p-dbf9a97d.entry.js.map} +0 -0
  581. /package/dist/genexus-ide-ui/{p-734d5fa1.entry.js.map → p-e32f5b19.entry.js.map} +0 -0
  582. /package/dist/genexus-ide-ui/{p-af3cc463.entry.js.map → p-e3ff125f.entry.js.map} +0 -0
  583. /package/dist/genexus-ide-ui/{p-747fbbd8.entry.js.map → p-fdaeb19a.entry.js.map} +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"names":["bpmAppDeclarationCss","CSS_BUNDLES","ADD_ICON","getIconPath","category","name","colorType","FILTER_ICON","MORE_ICON","SUGGEST_OPTIONS","alreadyProcessed","autoExpand","hideMatchesAndShowNonMatches","highlightMatchedItems","matchCase","regularExpression","strict","renderActiveItemIconOnExpand","GxIdeBpmAppDeclaration","_GxIdeBpmAppDeclaration_componentLocale","set","this","_GxIdeBpmAppDeclaration_animateEmptyState","_GxIdeBpmAppDeclaration_shortcutsSrc","getAssetPath","_GxIdeBpmAppDeclaration_ACCESS_CAPTION_MAP","in","undefined","out","inout","_GxIdeBpmAppDeclaration_setAccessCaptions","__classPrivateFieldGet","dataMappings","access","_GxIdeBpmAppDeclaration_applicationInputChangedHandler","async","event","selectedApplicationName","detail","application","mappings","getDataMappingCallback","_GxIdeBpmAppDeclaration_cancelCallbackHandler","cancelCallback","_GxIdeBpmAppDeclaration_clearApplicationHandler","typeIcon","_GxIdeBpmAppDeclaration_confirmCallbackHandler","confirmCallback","_GxIdeBpmAppDeclaration_mapRelevantDataOptionsToComboBoxModel","relevantDataOptions","map","optionName","caption","value","_GxIdeBpmAppDeclaration_mapSuggestedApplicationsToComboBoxModel","suggestedApplicationsNames","applicationName","_GxIdeBpmAppDeclaration_relevantDataInputHandler","mappingIndex","inputValue","relevantData","_GxIdeBpmAppDeclaration_selectApplicationCallbackHandler","applicationDeclarationData","selectApplicationCallback","_GxIdeBpmAppDeclaration_setApplicationData","call","_GxIdeBpmAppDeclaration_selectMappingCallbackHandler","parameter","returnedRelevantData","selectMappingCallback","currentRelevantDataOptions","indexOfReturnedRelevantData","indexOf","push","_GxIdeBpmAppDeclaration_updateApplicationData","applicationData","applicationComboBoxModel","startImgSrc","_GxIdeBpmAppDeclaration_suggestInputHandler","suggestedApplicationNames","suggestApplicationsCallback","Object","assign","_GxIdeBpmAppDeclaration_renderDataMappingsGrid","applicationDataToDisplay","length","__classPrivateFieldSet","h","class","title","scrollable","part","columnName","_a","firstColName","firstColNameParameter","settingable","sortable","size","config","tabularGrid","colSize","common","secondColName","auto","obj","index","rowId","key","model","onInput","onClick","buttons","selectMapping","src","isAnimated","stateIconSrc","stateTitle","emptyState","stateDescription","description","componentWillLoad","Locale","getComponentStrings","el","render","Host","slot","suggestDebounce","inputDebounce","suggest","suggestOptions","onChange","selectApplication","cancelButton","confirmButton"],"sources":["src/components/bpm/application-declaration/bpm-app-declaration.scss?tag=gx-ide-bpm-app-declaration&encapsulation=shadow","src/components/bpm/application-declaration/bpm-app-declaration.tsx"],"sourcesContent":["@import \"../../../global/gx-ide-common.scss\";\n@import \"../../../global/gx-ide-mixins.scss\";\n@import \"../../../../node_modules/@genexus/mercury/dist/assets/scss/helpers.scss\";\n\n:host {\n display: grid;\n block-size: 100%;\n grid-template-rows: max-content 1fr max-content;\n overflow: auto;\n}\n\n.section {\n display: contents;\n}\n\n.header {\n display: grid;\n grid-template-columns: 1fr max-content;\n}\n\n.data-mapping-grid-container,\n.data-mapping-grid-container .field {\n overflow: auto;\n block-size: 100%;\n}\n\n.tabular-grid-application-declaration {\n overflow: auto;\n}\nch-tabular-grid.empty-result::part(main) {\n // WA to avoid scrollbar flickering when displaying the empty-state message\n overflow: hidden;\n}\n\n.pill-tag {\n // base styles for this class defined on \"gx-ide-common.scss\"\n min-inline-size: 40px;\n margin-inline-end: 8px;\n padding-block: 1px;\n padding-inline: 4px;\n border-radius: 2px;\n text-align: center;\n font-size: var(--font-size-body-xs);\n}\n\n@include tabular-grid-cell-layout(\n $tabular-grid-selector: \".tabular-grid-application-declaration\",\n $tabular-grid-cell-node-type: \"element\",\n $tabular-grid-affected-columns-nth-list: (\n 2\n )\n);\n\n// WA\n.tabular-grid-cell:nth-child(2) {\n padding: 0 !important;\n display: grid;\n align-items: stretch;\n justify-content: stretch;\n --ds-focus-border-width: none;\n}\n.tabular-grid-cell:nth-child(3) {\n padding: 0 !important;\n align-items: center !important;\n justify-content: center !important;\n}\n.tabular-grid {\n overflow: auto;\n}\n","import {\n Component,\n Host,\n h,\n Prop,\n State,\n Element,\n Event,\n EventEmitter,\n getAssetPath\n} from \"@stencil/core\";\n\nimport { MercuryBundles, getIconPath } from \"@genexus/mercury\";\n\nimport { Locale } from \"../../../common/locale\";\nimport { config } from \"../../../common/config\";\nimport { ComboBoxModel } from \"@genexus/chameleon-controls-library\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"components/button\",\n \"components/combo-box\",\n \"components/icon\",\n \"components/tabular-grid\",\n \"utils/elevation\",\n \"utils/form\",\n \"utils/layout\",\n \"utils/spacing\"\n];\n\nconst ADD_ICON = getIconPath({\n category: \"system\",\n name: \"add\",\n colorType: \"interactive\"\n});\nconst FILTER_ICON = getIconPath({\n category: \"window-tools\",\n name: \"filter\",\n colorType: \"on-surface\"\n});\nconst MORE_ICON = getIconPath({\n category: \"system\",\n name: \"more-horizontal\",\n colorType: \"primary\"\n});\n\nconst SUGGEST_OPTIONS = {\n alreadyProcessed: true,\n autoExpand: false,\n hideMatchesAndShowNonMatches: false,\n highlightMatchedItems: false,\n matchCase: false,\n regularExpression: false,\n strict: false,\n renderActiveItemIconOnExpand: true\n};\n\n@Component({\n tag: \"gx-ide-bpm-app-declaration\",\n styleUrl: \"bpm-app-declaration.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/bpm-app-declaration\"]\n})\nexport class GxIdeBpmAppDeclaration {\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 #animateEmptyState = true;\n #shortcutsSrc = getAssetPath(\n `./gx-ide-assets/bpm-app-declaration/shortcuts.json`\n );\n\n #ACCESS_CAPTION_MAP: Record<DataMappingAccess, string> = {\n // To be defined on componentWillLoad\n in: undefined,\n out: undefined,\n inout: undefined\n };\n\n @Element() el: HTMLGxIdeBpmAppDeclarationElement;\n\n /**\n * The application ComoBoxModel. When the component renders for the first time, it is required\n * to display the application typeIcon. Later, it is required to display the suggested application\n * options with the combo suggest.\n */\n @State() applicationComboBoxModel: ComboBoxModel = [];\n\n /**\n * Current value of the application declaration. Keep in mind that this property will be used by\n * the host to initialize the component, meaning it will assign the current declaration value.\n */\n @Prop({ mutable: true }) application: ApplicationDeclarationData;\n\n /**\n * Callback invoked when user cancels application declaration\n */\n @Prop() readonly cancelCallback: CancelCallback;\n\n /**\n * Callback invoked when user confirms application declaration\n */\n @Prop() readonly confirmCallback: ConfirmCallback;\n\n /**\n * Callback invoked when user select one of the options provided by the suggest\n */\n @Prop() readonly getDataMappingCallback: GetDataMappingCallback;\n\n /**\n * Callback invoked to get access to selection application dialog\n */\n @Prop() readonly selectApplicationCallback: SelectApplicationCallback;\n\n /**\n * Callback invoked when user press mapping auto-def button\n */\n @Prop() readonly selectMappingCallback: SelectMappingCallback;\n\n /**\n * Callback invoked to get options for application input suggest\n */\n @Prop() readonly suggestApplicationsCallback: SuggestApplicationsCallback;\n\n /**\n * @description Gets fired when the component has rendered for the first time.\n */\n @Event() componentDidRenderFirstTime: EventEmitter<string>;\n\n async componentWillLoad() {\n this.#componentLocale = await Locale.getComponentStrings(this.el);\n this.#setApplicationData(this.application.application);\n if (this.application.mappings.length === 0) {\n this.#animateEmptyState = false;\n }\n this.#setAccessCaptions();\n }\n\n #setAccessCaptions = () => {\n this.#ACCESS_CAPTION_MAP.in = this.#componentLocale.dataMappings.access.in;\n this.#ACCESS_CAPTION_MAP.out =\n this.#componentLocale.dataMappings.access.out;\n this.#ACCESS_CAPTION_MAP.inout =\n this.#componentLocale.dataMappings.access.inout;\n };\n\n #applicationInputChangedHandler = async (\n event: CustomEvent<string> | InputEvent\n ) => {\n const selectedApplicationName = event.detail as string;\n this.application.mappings = await this.getDataMappingCallback(\n selectedApplicationName\n );\n };\n\n #cancelCallbackHandler = () => {\n this.cancelCallback();\n };\n\n #clearApplicationHandler = () => {\n this.application = {\n application: {\n name: \"\",\n typeIcon: \"\"\n },\n mappings: []\n };\n };\n\n #confirmCallbackHandler = () => {\n this.confirmCallback(this.application);\n };\n\n #mapRelevantDataOptionsToComboBoxModel = (\n relevantDataOptions: string[]\n ): ComboBoxModel => {\n return relevantDataOptions.map(optionName => {\n return {\n caption: optionName,\n value: optionName\n };\n });\n };\n\n #mapSuggestedApplicationsToComboBoxModel = (\n suggestedApplicationsNames: string[]\n ): ComboBoxModel => {\n return suggestedApplicationsNames.map(applicationName => {\n return {\n caption: applicationName,\n value: applicationName\n };\n });\n };\n\n #relevantDataInputHandler =\n (mappingIndex: number) =>\n async (event: CustomEvent<string> | InputEvent) => {\n const inputValue = event.detail as string;\n this.application.mappings[mappingIndex].relevantData = inputValue;\n };\n\n #selectApplicationCallbackHandler = async () => {\n const applicationDeclarationData = await this.selectApplicationCallback();\n if (applicationDeclarationData) {\n this.#setApplicationData(applicationDeclarationData.application);\n this.application.mappings = applicationDeclarationData.mappings;\n }\n };\n\n #selectMappingCallbackHandler =\n (parameter: string, mappingIndex: number) => async () => {\n const returnedRelevantData = await this.selectMappingCallback(parameter);\n if (returnedRelevantData) {\n const currentRelevantDataOptions =\n this.application.mappings[mappingIndex].relevantDataOptions;\n\n const indexOfReturnedRelevantData =\n currentRelevantDataOptions.indexOf(returnedRelevantData);\n\n if (indexOfReturnedRelevantData === -1) {\n // returnedRelevantData is a new option. Add to combo-box.\n currentRelevantDataOptions.push(returnedRelevantData);\n }\n // Set as selected\n this.application.mappings[mappingIndex].relevantData =\n returnedRelevantData;\n\n this.#updateApplicationData();\n }\n };\n\n #setApplicationData = (applicationData: ApplicationData) => {\n if (applicationData) {\n const applicationName = applicationData.name;\n this.application.application.name = applicationName;\n this.applicationComboBoxModel = [\n {\n caption: applicationName,\n value: applicationName,\n startImgSrc: applicationData.typeIcon\n }\n ];\n }\n };\n\n #suggestInputHandler = async (event: CustomEvent<string> | InputEvent) => {\n const inputValue = event.detail as string;\n this.application.application.name = inputValue;\n const suggestedApplicationNames: string[] =\n await this.suggestApplicationsCallback(inputValue);\n\n this.applicationComboBoxModel =\n this.#mapSuggestedApplicationsToComboBoxModel(suggestedApplicationNames);\n };\n\n #updateApplicationData = () => {\n this.application = { ...this.application };\n };\n\n // Renders\n\n #renderDataMappingsGrid = (): Element => {\n const applicationDataToDisplay = this.application.mappings.length;\n if (applicationDataToDisplay) {\n // Set as animated for the next time.\n this.#animateEmptyState = true;\n }\n return (\n <div class=\"field-group data-mapping-grid-container\">\n <div class=\"field field-block\">\n <label class=\"spacing-body-inline-start label\">\n {this.#componentLocale.dataMappings.title}\n </label>\n <ch-tabular-grid\n class={{\n \"tabular-grid\": true,\n \"tabular-grid-application-declaration\": true,\n \"scrollable\": true,\n \"empty-result\": !applicationDataToDisplay\n }}\n part=\"ch-grid-data-mappings\"\n >\n <ch-tabular-grid-columnset class=\"tabular-grid-column-set\">\n <ch-tabular-grid-column\n class=\"tabular-grid-column\"\n columnName={\n this.application.application?.typeIcon ===\n \"objects/transaction\"\n ? this.#componentLocale.dataMappings.firstColName\n : this.#componentLocale.dataMappings.firstColNameParameter\n }\n settingable={false}\n sortable={false}\n size={config.tabularGrid.colSize.common}\n ></ch-tabular-grid-column>\n\n <ch-tabular-grid-column\n class=\"tabular-grid-column\"\n columnName={this.#componentLocale.dataMappings.secondColName}\n settingable={false}\n sortable={false}\n size={config.tabularGrid.colSize.common}\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n class=\"tabular-grid-column\"\n settingable={false}\n sortable={false}\n size={config.tabularGrid.colSize.auto}\n ></ch-tabular-grid-column>\n </ch-tabular-grid-columnset>\n\n {this.application.mappings.length ? (\n <ch-tabular-grid-rowset class=\"tabular-grid-rowset\">\n {this.application.mappings.map(\n (obj: DataMappingData, index) => (\n <ch-tabular-grid-row\n class=\"tabular-grid-row\"\n rowId={`${index}-${obj.parameter}`}\n key={`${index}-${obj.parameter}-grid-row`}\n >\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n <span class=\"pill-tag elevation-3\">\n {\n this.#ACCESS_CAPTION_MAP[\n obj.access as DataMappingAccess\n ]\n }\n </span>\n {obj.parameter}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n <ch-combo-box-render\n class=\"combo-box\"\n model={this.#mapRelevantDataOptionsToComboBoxModel(\n obj.relevantDataOptions\n )}\n value={obj.relevantData}\n key={`${index}-${obj.parameter}-combo-box`}\n onInput={this.#relevantDataInputHandler(index)}\n ></ch-combo-box-render>\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n <button\n data-index={index}\n onClick={this.#selectMappingCallbackHandler(\n obj.parameter,\n index\n )}\n class=\"button-tertiary button-icon-only\"\n aria-label={\n this.#componentLocale.buttons.selectMapping\n }\n title={this.#componentLocale.buttons.selectMapping}\n >\n <ch-image class=\"icon-m\" src={ADD_ICON}></ch-image>\n </button>\n </ch-tabular-grid-cell>\n </ch-tabular-grid-row>\n )\n )}\n </ch-tabular-grid-rowset>\n ) : (\n <ch-tabular-grid-rowset class=\"tabular-grid-rowset\">\n <ch-tabular-grid-rowset-empty>\n <gx-ide-empty-state\n isAnimated={this.#animateEmptyState}\n stateIconSrc={FILTER_ICON}\n stateTitle={this.#componentLocale.emptyState.title}\n stateDescription={\n this.#componentLocale.emptyState.description\n }\n ></gx-ide-empty-state>\n </ch-tabular-grid-rowset-empty>\n </ch-tabular-grid-rowset>\n )}\n </ch-tabular-grid>\n </div>\n </div>\n );\n };\n\n render() {\n return (\n <Host class=\"widget\">\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <section class=\"section\">\n <header slot=\"header\" class=\"header spacing-body\">\n <ch-combo-box-render\n class=\"combo-box\"\n value={this.application.application.name}\n model={this.applicationComboBoxModel}\n suggestDebounce={config.inputDebounce}\n suggest\n suggestOptions={SUGGEST_OPTIONS}\n onInput={this.#suggestInputHandler}\n onChange={this.#applicationInputChangedHandler}\n ></ch-combo-box-render>\n\n <div class=\"buttons-spacer\">\n <button\n onClick={this.#selectApplicationCallbackHandler}\n class=\"button-tertiary button-icon-only\"\n aria-label={this.#componentLocale.buttons.selectApplication}\n title={this.#componentLocale.buttons.selectApplication}\n >\n <ch-image class=\"icon-m\" src={MORE_ICON}></ch-image>\n </button>\n <button\n onClick={this.#clearApplicationHandler}\n class=\"button-secondary\"\n >\n Clear\n </button>\n </div>\n </header>\n\n {this.#renderDataMappingsGrid()}\n\n <footer class=\"dialog-footer spacing-body-block-end spacing-body-inline\">\n <div class=\"buttons-spacer\">\n <button\n class=\"button-secondary\"\n onClick={this.#cancelCallbackHandler}\n >\n {this.#componentLocale.buttons.cancelButton}\n </button>\n <button\n class=\"button-primary\"\n onClick={this.#confirmCallbackHandler}\n >\n {this.#componentLocale.buttons.confirmButton}\n </button>\n </div>\n </footer>\n </section>\n <ch-shortcuts src={this.#shortcutsSrc}></ch-shortcuts>\n </Host>\n );\n }\n}\n\nexport type ApplicationDeclarationData = {\n application?: ApplicationData;\n mappings: DataMappingData[];\n};\nexport type ApplicationData = {\n name: string;\n typeIcon: string;\n};\n\ntype DataMappingAccess = \"in\" | \"out\" | \"inout\";\n\nexport type DataMappingData = {\n parameter: string;\n access: DataMappingAccess;\n relevantDataOptions: string[];\n relevantData?: string;\n};\n\nexport type SuggestApplicationsCallback = (\n prefix: string\n) => Promise<string[] | undefined>;\n\nexport type SelectApplicationCallback = () => Promise<\n ApplicationDeclarationData | undefined\n>;\n\nexport type SelectMappingCallback = (parameter: string) => Promise<string>;\n\nexport type ConfirmCallback = (\n data: ApplicationDeclarationData\n) => Promise<void>;\n\nexport type CancelCallback = () => Promise<void>;\n\nexport type GetDataMappingCallback = (\n applicationName: string\n) => Promise<DataMappingData[]>;\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"names":["mapCategoryToListItemGroup","category","categoryGroup","caption","name","id","type","expanded","expandable","items","types","map","selected","additionalInformation","center","imgSrc","icon","mapDataTypesToList","dataTypes","dataType","index","undefined","order","dataTypeSelectorCss","CSS_BUNDLES","ARROW_UP_KEY","ARROW_DOWN_KEY","ENTER_KEY","TAB_KEY","ALL_CATEGORY_ID","RECENTLY_USED_CATEGORY_ID","CLOCK_ICON","getIconPath","colorType","GxIdeKbManagerImport","_GxIdeKbManagerImport__componentLocale","set","this","_GxIdeKbManagerImport_showAll","_GxIdeKbManagerImport_categoriesActionListItemGroupMap","Map","_GxIdeKbManagerImport_dataTypeCategoryMap","_GxIdeKbManagerImport_dataTypeDataIdMap","_GxIdeKbManagerImport_lastArrowKey","_GxIdeKbManagerImport_selectedDataTypeIds","categoryId","dataTypeId","_GxIdeKbManagerImport_focusAlreadySet","_GxIdeKbManagerImport_actionListEl","_GxIdeKbManagerImport_evaluateSelectionChanged","path","chActionListItem","find","el","tagName","dataTypeData","__classPrivateFieldGet","get","dataTypeSelectedCallback","_GxIdeKbManagerImport_listKeyDownHandler","event","pressedKey","key","composedPath","__classPrivateFieldSet","actionGroup","currentFocusedActionGroupId","firstActionListGroupId","shadowRoot","firstElementChild","arrowUpOnFirstElement","call","stopPropagation","_GxIdeKbManagerImport_listClickHandler","detail","_GxIdeKbManagerImport_showAllObjects","allCategoriesActionListModel","counter","mapLength","size","keys","push","categoriesListBoxModel","selectedCategory","_GxIdeKbManagerImport_showRecentlyObjects","recentlyUsedActionListModel","selectedCategoryHandler","e","currentTarget","dataset","newSelectedCategory","_GxIdeKbManagerImport_handleButtonTab","_GxIdeKbManagerImport_renderFooter","recentlyUsedBtnClass","allBtnClass","selectedCategoryDescription","fixedTypes","recentlyUsed","all","h","class","length","select","title","onClick","onKeyDown","src","categories","buttonClass","_GxIdeKbManagerImport_setFocus","async","focusableElement","setTimeout","focusType","selectedDataTypeEl","getElementById","firstActionListGroup","firstButton","focus","categoriesChanged","newCategories","clear","forEach","categoryListBoxModel","isSelected","loading","categoriesJustChanged","recentlyUsedChanged","newRecentlyUsed","componentWillLoad","Locale","getComponentStrings","render","Host","model","loaderTitle","loader","description","show","ref","selection"],"sources":["src/components/data-type-selector/helpers.ts","src/components/data-type-selector/data-type-selector.scss?tag=gx-ide-data-type-selector&encapsulation=shadow","src/components/data-type-selector/data-type-selector.tsx"],"sourcesContent":["import { DataTypeCategoryData, DataTypeData } from \"./data-type-selector\";\nimport {\n ActionListItemGroup,\n ActionListModel\n} from \"@genexus/chameleon-controls-library/dist/types/components/action-list/types\";\n\nexport const mapCategoryToListItemGroup = (\n category: DataTypeCategoryData\n): ActionListItemGroup => {\n const categoryGroup: ActionListItemGroup = {\n caption: category.name,\n id: category.name,\n type: \"group\",\n expanded: true,\n expandable: true,\n items: category.types.map(type => {\n return {\n caption: type.name,\n id: type.name,\n selected: type.selected,\n additionalInformation: {\n \"stretch-start\": {\n center: [{ imgSrc: type.icon }]\n }\n },\n type: \"actionable\"\n };\n })\n };\n return categoryGroup;\n};\n\nexport const mapDataTypesToList = (\n dataTypes: DataTypeData[]\n): ActionListModel => {\n return dataTypes.map((dataType, index) => {\n return {\n caption: dataType.name,\n id: dataType.name,\n selected: dataType.selected,\n additionalInformation: {\n \"stretch-start\": {\n center: [{ imgSrc: dataType.icon || undefined }]\n }\n },\n type: \"actionable\",\n order: index\n };\n });\n};\n",":host {\n position: relative;\n display: grid;\n block-size: 100%;\n overflow: auto;\n grid-template-rows: 1fr max-content;\n\n // WA: Prevent a custom css rule on genexus-web from overriding --control-border-width value.\n // TDOO: remove this when the custom style is removed from genexus-web.\n // custom stlye is: .gx-struct-editor .tabular-grid-cell {\n // --control-border-width: 0;\n // }\n\n --control-border-width: 1px;\n --control-border-radius: 4px;\n}\n\n.main {\n display: contents;\n}\n\n.selected-category {\n margin: 0;\n text-transform: capitalize;\n margin-inline-start: 16px; // TODO: Create a semantic class in Mercury for this case.\n white-space: nowrap;\n}\n\n.footer {\n overflow: auto;\n padding: var(--spacing-padding-m);\n}\n\n// WA: Reduce font-size. This should be solved on Mercury.\n.list-box::part(item__action),\n.list-box::part(group__action) {\n font-size: var(--font-size-body-s) !important;\n}\n\n// WA: There is no icon for [*]. This should be added to the icon library,\n// and use a ch-image instead.\n.pseudo-icon {\n inline-size: var(--icon-m);\n block-size: var(--icon-m);\n display: flex;\n align-items: center;\n justify-content: center;\n}\n","// Stencil\nimport { Component, Host, h, Prop, Element, State, Watch } from \"@stencil/core\";\n// Other Libraries\nimport { MercuryBundles, getIconPath } from \"@genexus/mercury\";\nimport {\n ActionListItemModel,\n ActionListModel\n} from \"@genexus/chameleon-controls-library\";\nimport { ActionListItemGroup } from \"@genexus/chameleon-controls-library/dist/types/components/action-list/types\";\n// Gx Ide Ui\nimport { Locale } from \"../../common/locale\";\nimport { mapCategoryToListItemGroup, mapDataTypesToList } from \"./helpers\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"components/list-box\",\n \"utils/form--full\",\n \"utils/typography\",\n \"utils/layout\",\n \"utils/spacing\",\n \"chameleon/scrollbar\"\n];\n\nconst ARROW_UP_KEY = \"ArrowUp\";\nconst ARROW_DOWN_KEY = \"ArrowDown\";\nconst ENTER_KEY = \"Enter\";\nconst TAB_KEY = \"Tab\";\n\nconst ALL_CATEGORY_ID = \"all\";\nconst RECENTLY_USED_CATEGORY_ID = \"recenttly-used\";\n\nconst CLOCK_ICON = getIconPath({\n category: \"system\",\n name: \"time\",\n colorType: \"primary\"\n});\n\n@Component({\n tag: \"gx-ide-data-type-selector\",\n styleUrl: \"data-type-selector.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/data-type-selector\"]\n})\nexport class GxIdeKbManagerImport {\n #_componentLocale: any;\n #showAll: boolean = false;\n #categoriesActionListItemGroupMap: Map<string, ActionListItemGroup> = new Map<\n string,\n ActionListItemGroup\n >();\n\n #dataTypeCategoryMap: Map<string, string> = new Map<string, string>();\n #dataTypeDataIdMap: Map<string, DataTypeData> = new Map<\n string,\n DataTypeData\n >();\n #lastArrowKey: typeof ARROW_UP_KEY | typeof ARROW_DOWN_KEY | null = null;\n #selectedDataTypeIds: SelectedDataTypeIds = {\n // For setting focus\n categoryId: undefined,\n dataTypeId: undefined\n };\n #focusAlreadySet: boolean = false;\n\n #actionListEl!: HTMLChActionListRenderElement;\n @Element() el: HTMLGxIdeDataTypeSelectorElement;\n\n @State() categoriesListBoxModel: ActionListItemModel[] = [];\n @State() selectedCategory: string;\n @State() recentlyUsedActionListModel: ActionListModel = [];\n @State() loading: boolean = true;\n @State() categoriesJustChanged: boolean = false;\n @State() actionListDidRender: boolean = false;\n\n /**\n * All possible types and its category\n */\n @Prop() readonly categories: DataTypeCategoryData[] = undefined;\n @Watch(\"categories\")\n categoriesChanged(newCategories: DataTypeCategoryData[]) {\n if (!newCategories?.length) {\n return;\n }\n\n this.#categoriesActionListItemGroupMap.clear();\n newCategories.forEach(category => {\n const categoryListBoxModel = mapCategoryToListItemGroup(category);\n this.#categoriesActionListItemGroupMap.set(\n category.name,\n categoryListBoxModel\n );\n category.types.forEach(type => {\n const isSelected = type.selected;\n if (isSelected) {\n // For setting focus\n this.#selectedDataTypeIds.categoryId = category.name;\n this.#selectedDataTypeIds.dataTypeId = type.name;\n }\n\n this.#dataTypeCategoryMap.set(type.name, category.id);\n this.#dataTypeDataIdMap.set(type.name, {\n id: category.id,\n name: type.name,\n icon: type.icon,\n selected: type.selected\n });\n });\n });\n this.loading = false;\n this.#showAllObjects();\n this.categoriesJustChanged = true;\n }\n\n /**\n * Callback invoked when the user has selected an item type\n */\n @Prop() readonly dataTypeSelectedCallback: DataTypeSelectedCallback;\n\n /**\n * Defines the type of focus applied when the component renders for the first time.\n */\n @Prop() readonly arrowUpOnFirstElement: ArrowFirstOnFirstElement;\n\n /**\n * Defines the type of focus applied when the component renders for the first time.\n */\n @Prop() readonly focusType: \"first-element\" | \"selected\" = \"first-element\";\n\n /**\n * All recently used types list\n */\n @Prop() readonly recentlyUsed: DataTypeData[] = [];\n @Watch(\"recentlyUsed\")\n recentlyUsedChanged(newRecentlyUsed: DataTypeData[]) {\n this.recentlyUsedActionListModel = null;\n this.recentlyUsedActionListModel = mapDataTypesToList(newRecentlyUsed);\n }\n\n async componentWillLoad() {\n this.#_componentLocale = await Locale.getComponentStrings(this.el);\n // initialize models\n this.recentlyUsed.length && this.recentlyUsedChanged(this.recentlyUsed);\n }\n\n #evaluateSelectionChanged = (path: EventTarget[]) => {\n const chActionListItem = path.find(\n el => (el as HTMLElement).tagName === \"CH-ACTION-LIST-ITEM\"\n );\n if (chActionListItem) {\n const id = (chActionListItem as HTMLElement).id;\n const dataTypeData = this.#dataTypeDataIdMap.get(id);\n this.dataTypeSelectedCallback(dataTypeData);\n }\n };\n\n #listKeyDownHandler = (event: KeyboardEvent) => {\n const pressedKey = event.key;\n const path = event.composedPath();\n\n if (pressedKey === ARROW_UP_KEY || pressedKey === ARROW_DOWN_KEY) {\n this.#lastArrowKey = pressedKey;\n\n if (pressedKey === ARROW_UP_KEY) {\n // Check if this is the first group. IF it is, let the host know,\n // so it can close the dialog.\n\n const chActionListItem = path.find(\n el => (el as HTMLElement).tagName === \"CH-ACTION-LIST-ITEM\"\n );\n\n if (chActionListItem !== undefined) {\n return;\n }\n\n // This is a ch-action-list-group\n const actionGroup = path.find(\n el => (el as HTMLElement).tagName === \"CH-ACTION-LIST-GROUP\"\n );\n const currentFocusedActionGroupId = (actionGroup as HTMLElement).id;\n\n const firstActionListGroupId =\n this.#actionListEl.shadowRoot.firstElementChild.id;\n\n if (currentFocusedActionGroupId === firstActionListGroupId) {\n this.arrowUpOnFirstElement();\n }\n }\n } else if (pressedKey === ENTER_KEY) {\n this.#evaluateSelectionChanged(path);\n } else if (pressedKey === TAB_KEY) {\n event.stopPropagation();\n }\n };\n\n #listClickHandler = (event: MouseEvent) => {\n if (this.#lastArrowKey) {\n // User navigated with ArrowUp or ArrowDown\n // Ignore, since this was not a click event.\n } else if (event.detail === 0) {\n // ignore keyboard Enter (Enter happens by default on buttons on onClick)\n return;\n } else {\n const path = event.composedPath();\n this.#evaluateSelectionChanged(path);\n }\n this.#lastArrowKey = null;\n };\n\n #showAllObjects = () => {\n if (!this.#showAll) {\n const allCategoriesActionListModel: ActionListItemModel[] = [];\n let counter = 1;\n const mapLength = this.#categoriesActionListItemGroupMap.size;\n for (const key of this.#categoriesActionListItemGroupMap.keys()) {\n allCategoriesActionListModel.push(\n this.#categoriesActionListItemGroupMap.get(key)\n );\n if (counter !== mapLength) {\n allCategoriesActionListModel.push({ type: \"separator\" });\n }\n counter++;\n }\n this.categoriesListBoxModel = allCategoriesActionListModel;\n this.#showAll = true;\n this.selectedCategory = ALL_CATEGORY_ID;\n }\n };\n\n #showRecentlyObjects = () => {\n this.#showAll = false;\n this.categoriesListBoxModel = this.recentlyUsedActionListModel;\n this.selectedCategory = RECENTLY_USED_CATEGORY_ID;\n };\n\n private selectedCategoryHandler = (e: MouseEvent) => {\n this.selectedCategory = (e.currentTarget as HTMLButtonElement).dataset.name;\n const newSelectedCategory = [\n this.#categoriesActionListItemGroupMap.get(this.selectedCategory)\n ];\n this.categoriesListBoxModel = newSelectedCategory;\n this.#showAll = false;\n };\n\n #handleButtonTab = (event: KeyboardEvent) => {\n // Prevents bubbling, which causes this component to close, due to how the IDE handles Tab event\n // in a parent element.\n if (event.key === TAB_KEY || event.key === ENTER_KEY) {\n event.stopPropagation();\n }\n };\n\n #renderFooter = () => {\n const recentlyUsedBtnClass =\n this.selectedCategory === RECENTLY_USED_CATEGORY_ID\n ? \"button-secondary\"\n : \"button-tertiary\";\n const allBtnClass =\n this.selectedCategory === ALL_CATEGORY_ID\n ? \"button-secondary\"\n : \"button-tertiary\";\n let selectedCategoryDescription = this.selectedCategory;\n if (this.selectedCategory === RECENTLY_USED_CATEGORY_ID) {\n selectedCategoryDescription =\n this.#_componentLocale.fixedTypes.recentlyUsed;\n } else if (this.selectedCategory === ALL_CATEGORY_ID) {\n selectedCategoryDescription = this.#_componentLocale.fixedTypes.all;\n } else {\n selectedCategoryDescription = this.selectedCategory;\n }\n\n return (\n <footer\n class=\"footer dialog-footer dialog-footer-start scrollable\n \"\n >\n <div class=\"buttons-spacer\">\n {this.recentlyUsed && this.recentlyUsed.length > 0 && (\n <button\n class={`button-icon-only ${recentlyUsedBtnClass}`}\n aria-label={`${this.#_componentLocale.select} ${\n this.#_componentLocale.fixedTypes.recentlyUsed\n }`}\n title={`${this.#_componentLocale.select} ${\n this.#_componentLocale.fixedTypes.recentlyUsed\n }`}\n onClick={this.#showRecentlyObjects}\n onKeyDown={this.#handleButtonTab}\n >\n <ch-image class=\"icon-m\" src={CLOCK_ICON}></ch-image>\n </button>\n )}\n <button\n class={`button-icon-only ${allBtnClass}`}\n onClick={this.#showAllObjects}\n onKeyDown={this.#handleButtonTab}\n aria-label={`${this.#_componentLocale.select} ${\n this.#_componentLocale.fixedTypes.all\n }`}\n title={`${this.#_componentLocale.select} ${\n this.#_componentLocale.fixedTypes.all\n }`}\n >\n <span class=\"pseudo-icon\">[*]</span>\n </button>\n {this.categories.map(category => {\n const buttonClass =\n category.name === this.selectedCategory\n ? \"button-secondary\"\n : \"button-tertiary\";\n\n return (\n <button\n class={`button-icon-only ${buttonClass}`}\n aria-label={category.name}\n title={category.name}\n onClick={this.selectedCategoryHandler}\n onKeyDown={this.#handleButtonTab}\n data-name={category.name}\n >\n <ch-image class=\"icon-m\" src={category.icon}></ch-image>\n </button>\n );\n })}\n </div>\n <p class=\"body-regular-s selected-category\">\n {selectedCategoryDescription}\n </p>\n </footer>\n );\n };\n\n #setFocus = async () => {\n if (this.#focusAlreadySet) {\n return;\n }\n let focusableElement: HTMLElement;\n\n setTimeout(() => {\n // setTimeout as a WA, since the list-box elements are not rendered/read immediatelly\n if (\n this.focusType === \"selected\" &&\n this.#selectedDataTypeIds.categoryId &&\n this.#selectedDataTypeIds.dataTypeId\n ) {\n // set focus on the selected element\n const selectedDataTypeEl = this.#actionListEl.shadowRoot.getElementById(\n this.#selectedDataTypeIds.dataTypeId\n );\n if (selectedDataTypeEl) {\n focusableElement = selectedDataTypeEl;\n }\n } else {\n // set focus of the first element\n const firstActionListGroup =\n this.#actionListEl.shadowRoot.firstElementChild;\n\n const firstButton = firstActionListGroup.shadowRoot.firstElementChild;\n focusableElement = firstButton as HTMLButtonElement;\n }\n\n focusableElement && (focusableElement as HTMLElement).focus();\n this.#focusAlreadySet = true;\n }, 150);\n };\n\n render(): void {\n return (\n <Host class=\"widget\">\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n {this.loading ? (\n <gx-ide-loader\n loaderTitle={this.#_componentLocale.loader.title}\n description={this.#_componentLocale.loader.description}\n show\n ></gx-ide-loader>\n ) : (\n <section class=\"main\">\n <ch-action-list-render\n ref={async (el: HTMLChActionListRenderElement) => {\n this.#actionListEl = el as HTMLChActionListRenderElement;\n this.#setFocus();\n }}\n class=\"list-box\"\n model={this.categoriesListBoxModel}\n selection=\"single\"\n onKeyDown={this.#listKeyDownHandler}\n onClick={this.#listClickHandler}\n ></ch-action-list-render>\n {this.#renderFooter()}\n </section>\n )}\n </Host>\n );\n }\n}\n\nexport type DataTypeCategoryData = {\n id: string;\n name: string;\n icon: string;\n types: DataTypeData[];\n};\nexport type DataTypeData = {\n id: string;\n name: string;\n icon: string;\n selected: boolean;\n};\n\nexport type DataTypeSelectedCallback = (data: DataTypeData) => Promise<void>;\n\ntype SelectedDataTypeIds = {\n categoryId: string;\n dataTypeId: string;\n};\n\nexport type ArrowFirstOnFirstElement = () => Promise<void>;\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"names":["mapAuthenticationTypeToComboBoxModel","authenticationTypes","map","authenticationType","value","id","caption","name","connectGxServerCss","CSS_BUNDLES","HTMLGxIdeConnectGxServer","_HTMLGxIdeConnectGxServer_componentLocale","set","this","_HTMLGxIdeConnectGxServer_usernameRef","_HTMLGxIdeConnectGxServer_passwordRef","_HTMLGxIdeConnectGxServer_serverUrlRef","_HTMLGxIdeConnectGxServer_shortcutsSrc","getAssetPath","_HTMLGxIdeConnectGxServer_cancelClickHandler","cancelCallback","_HTMLGxIdeConnectGxServer_connectClickHandler","async","connectCallback","gxServerConnectionData","then","formSubmitResult","validatableControls","validateControls","_HTMLGxIdeConnectGxServer_evaluateTooltipRender","controlReference","_b","_a","get","hasError","_c","message","h","class","actionElement","blockAlign","config","tooltipSettings","inlineAlign","delay","_HTMLGxIdeConnectGxServer_init","authenticationTypesChanged","serverUrl","defaultConnectionData","serverName","authenticationTypesComboBoxModel","_d","_HTMLGxIdeConnectGxServer_initializeValidatableControls","__classPrivateFieldGet","forEach","validatableControl","reference","undefined","_HTMLGxIdeConnectGxServer_authenticationInputEventHandler","event","authenticationTypeId","detail","authenticationTypeIndex","findIndex","authType","authenticationTypeName","_HTMLGxIdeConnectGxServer_usernameInputEventHandler","userName","_HTMLGxIdeConnectGxServer_passwordInputEventHandler","userPassword","Map","newAuthenticationTypes","length","componentWillLoad","__classPrivateFieldSet","Locale","getComponentStrings","el","call","componentDidLoad","render","Host","model","src","htmlFor","main","serverURLLabel","type","readonly","ref","authenticationTypeLabel","accessibleName","placeholder","onInput","usernameLabel","passwordLabel","showPasswordButton","onClick","footer","backButtonCaption","connectButtonCaption"],"sources":["src/components/team-dev/connect-gx-server/helpers.ts","src/components/team-dev/connect-gx-server/connect-gx-server.scss?tag=gx-ide-connect-gx-server&encapsulation=shadow","src/components/team-dev/connect-gx-server/connect-gx-server.tsx"],"sourcesContent":["import { AuthenticationType } from \"./connect-gx-server\";\nimport { ComboBoxModel } from \"@genexus/chameleon-controls-library\";\n\nexport const mapAuthenticationTypeToComboBoxModel = (\n authenticationTypes: AuthenticationType[]\n): ComboBoxModel => {\n return authenticationTypes.map(authenticationType => {\n return {\n value: authenticationType.id,\n caption: authenticationType.name\n };\n });\n};\n\nexport const mapServerUrlsToComboBoxModel = (\n serverUrls: string[]\n): ComboBoxModel => {\n return serverUrls.map(serverUrl => {\n return {\n value: serverUrl,\n caption: serverUrl\n };\n });\n};\n",":host {\n display: grid;\n block-size: 100%;\n overflow: auto;\n grid-template-rows: 1fr max-content;\n}\n\n.main {\n display: grid;\n grid-template-areas:\n \"server-url server-url\"\n \"authentication-type .\"\n \"user-name user-password\";\n grid-auto-rows: max-content;\n grid-template-columns: 1fr 1fr;\n}\n\n.section {\n display: contents;\n}\n\n.authentication-type {\n grid-area: authentication-type;\n}\n.server-url {\n grid-area: server-url;\n}\n.user-name {\n grid-area: user-name;\n}\n.user-password {\n grid-area: user-password;\n}\n\n.tooltip {\n position: absolute;\n}\n","// Stencil\nimport {\n Component,\n Element,\n getAssetPath,\n h,\n Host,\n Prop,\n State,\n Watch\n} from \"@stencil/core\";\n\n// Other Libraries\nimport { ComboBoxModel } from \"@genexus/chameleon-controls-library\";\nimport { MercuryBundles } from \"@genexus/mercury\";\n\n// Custom Imports\nimport { config } from \"../../../common/config\";\nimport {\n ControlValidation,\n validateControls\n} from \"../../../common/form-validation\";\nimport { Locale } from \"../../../common/locale\";\nimport { FormSubmitResult } from \"../../../common/types\";\nimport { mapAuthenticationTypeToComboBoxModel } from \"./helpers\";\nimport { NewServerConnectionData } from \"../server-selector/server-selector\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"components/tooltip\",\n \"utils/form--full\",\n \"utils/layout\",\n \"utils/typography\",\n \"utils/spacing\",\n \"chameleon/scrollbar\"\n];\n\n@Component({\n tag: \"gx-ide-connect-gx-server\",\n styleUrl: \"connect-gx-server.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/connect-gx-server\"]\n})\nexport class HTMLGxIdeConnectGxServer {\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 @Element() el: HTMLGxIdeConnectGxServerElement;\n #usernameRef!: HTMLChEditElement;\n #passwordRef!: HTMLChEditElement;\n #serverUrlRef!: HTMLChEditElement;\n #shortcutsSrc = getAssetPath(\n `./gx-ide-assets/connect-gx-server/shortcuts.json`\n );\n\n @State() authenticationTypesComboBoxModel: ComboBoxModel;\n @State() gxServerConnectionData: GXServerConnectionData = {\n authenticationType: {\n id: null,\n name: null\n },\n serverUrl: null,\n userName: null,\n userPassword: null,\n serverName: null\n };\n @State() validatableControls = new Map<string, ControlValidation>();\n\n /**\n * List of authentication types.\n */\n @Prop() readonly authenticationTypes!: AuthenticationType[];\n @Watch(\"authenticationTypes\")\n authenticationTypesChanged(newAuthenticationTypes: AuthenticationType[]) {\n if (newAuthenticationTypes?.length) {\n this.authenticationTypesComboBoxModel =\n mapAuthenticationTypeToComboBoxModel(newAuthenticationTypes);\n }\n }\n\n /**\n * Callback that must be invoked when the 'Cancel' button is pressed.\n */\n @Prop() readonly cancelCallback!: () => Promise<void>;\n\n /**\n * Callback that must be invoked when the 'Connect' button is pressed.\n */\n @Prop() readonly connectCallback!: (\n data: GXServerConnectionData\n ) => Promise<FormSubmitResult>;\n\n /**\n * Initial user values for the case in which the user returns to the\n * login modal after successful authentication.\n */\n @Prop() readonly defaultConnectionData?: NewServerConnectionData;\n\n /**\n * true if the user should be allowed to manually enter a server URL.\n */\n @Prop() readonly enableCustomServer: boolean = false;\n\n async componentWillLoad() {\n this.#componentLocale = await Locale.getComponentStrings(this.el);\n\n this.#init();\n }\n\n async componentDidLoad() {\n this.#initializeValidatableControls();\n }\n\n #cancelClickHandler = () => {\n this.cancelCallback();\n };\n\n #connectClickHandler = async () => {\n this.connectCallback(this.gxServerConnectionData).then(\n (formSubmitResult: FormSubmitResult) => {\n this.validatableControls = validateControls(\n formSubmitResult,\n this.validatableControls\n );\n }\n );\n };\n\n // TODO: evaluate if this should be a global helper function.\n // It is used on other dialogs as well.\n #evaluateTooltipRender = (\n controlReference: HTMLElement\n ): HTMLChTooltipElement =>\n this.validatableControls?.get(controlReference?.id)?.hasError &&\n this.validatableControls.get(controlReference.id)?.message && (\n <ch-tooltip\n class=\"tooltip\"\n actionElement={controlReference as unknown as HTMLButtonElement}\n blockAlign={config.tooltipSettings.blockAlign}\n inlineAlign={config.tooltipSettings.inlineAlign}\n delay={config.tooltipSettings.delay}\n >\n {this.validatableControls.get(controlReference.id).message}\n </ch-tooltip>\n );\n\n #init = () => {\n this.authenticationTypesChanged(this.authenticationTypes);\n // set initial values:\n // server url\n this.gxServerConnectionData.serverUrl =\n this.defaultConnectionData?.serverUrl;\n //server name\n this.gxServerConnectionData.serverName =\n this.defaultConnectionData?.serverName;\n // authentication type\n this.gxServerConnectionData.authenticationType = {\n id: this.authenticationTypesComboBoxModel[0]?.value,\n name: this.authenticationTypesComboBoxModel[0]?.caption\n };\n };\n\n #initializeValidatableControls = () => {\n // populate #controlsValidation with the controls that could have errors.\n const validatableControls: HTMLElement[] = [\n this.#usernameRef,\n this.#passwordRef,\n this.#serverUrlRef\n ];\n validatableControls.forEach(validatableControl => {\n if (validatableControl.id) {\n this.validatableControls.set(validatableControl.id, {\n reference: validatableControl,\n hasError: false,\n message: undefined\n });\n }\n });\n };\n\n #authenticationInputEventHandler = (\n event: CustomEvent<string> | InputEvent\n ) => {\n const authenticationTypeId = event.detail as string;\n const authenticationTypeIndex = this.authenticationTypes.findIndex(\n authType => {\n return authType.id === authenticationTypeId;\n }\n );\n const authenticationTypeName =\n this.authenticationTypes[authenticationTypeIndex].name;\n\n this.gxServerConnectionData.authenticationType = {\n id: authenticationTypeId,\n name: authenticationTypeName\n };\n };\n #usernameInputEventHandler = (event: CustomEvent<string> | InputEvent) => {\n this.gxServerConnectionData.userName = event.detail as string;\n };\n #passwordInputEventHandler = (event: CustomEvent<string> | InputEvent) => {\n this.gxServerConnectionData.userPassword = event.detail as string;\n };\n\n render() {\n return (\n <Host class=\"widget\">\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <ch-shortcuts src={this.#shortcutsSrc}></ch-shortcuts>\n\n <section class=\"section\">\n <div class=\"main field-group spacing-body\">\n <div\n // server urls\n class=\"field field-block server-url\"\n >\n <label class=\"label\" htmlFor=\"server-url\">\n {this.#componentLocale.main.serverURLLabel}\n </label>\n <ch-edit\n type=\"url\"\n id=\"server-url\"\n class=\"input\"\n value={this.gxServerConnectionData?.serverUrl}\n readonly={true}\n ref={(el: HTMLChEditElement) =>\n (this.#serverUrlRef = el as HTMLChEditElement)\n }\n ></ch-edit>\n </div>\n\n <div\n // authentication types\n class=\"field field-block authentication-type\"\n >\n <label class=\"label\" htmlFor=\"authentication-type\">\n {this.#componentLocale.main.authenticationTypeLabel}\n </label>\n <ch-combo-box-render\n id=\"authentication-type\"\n class=\"combo-box\"\n accessibleName=\"Authentication Types\"\n model={this.authenticationTypesComboBoxModel}\n placeholder=\"Select an authentication type\"\n value={this.gxServerConnectionData?.authenticationType.id}\n onInput={this.#authenticationInputEventHandler}\n ></ch-combo-box-render>\n </div>\n\n <div\n // username\n class=\"field field-block user-name\"\n >\n <label class=\"label\" htmlFor=\"username\">\n {this.#componentLocale.main.usernameLabel}\n </label>\n <ch-edit\n type=\"text\"\n id=\"username\"\n class=\"input\"\n value={this.gxServerConnectionData?.userName}\n onInput={this.#usernameInputEventHandler}\n ref={(el: HTMLChEditElement) =>\n (this.#usernameRef = el as HTMLChEditElement)\n }\n ></ch-edit>\n {this.#evaluateTooltipRender(this.#usernameRef)}\n </div>\n\n <div\n // user password\n class=\"field field-block user-password\"\n >\n <label class=\"label\" htmlFor=\"password\">\n {this.#componentLocale.main.passwordLabel}\n </label>\n <ch-edit\n type=\"password\"\n id=\"password\"\n class=\"input\"\n value={this.gxServerConnectionData?.userPassword}\n onInput={this.#passwordInputEventHandler}\n ref={(el: HTMLChEditElement) =>\n (this.#passwordRef = el as HTMLChEditElement)\n }\n showPasswordButton={true}\n ></ch-edit>\n {this.#evaluateTooltipRender(this.#passwordRef)}\n </div>\n </div>\n\n <footer class=\"dialog-footer-with-border spacing-body\">\n <div class=\"buttons-spacer\">\n <button\n id=\"cancel-button\"\n // cancel button\n class=\"button-secondary\"\n onClick={this.#cancelClickHandler}\n >\n {this.#componentLocale.footer.backButtonCaption}\n </button>\n\n <button\n id=\"connect-button\"\n // connect button\n class=\"button-primary\"\n onClick={this.#connectClickHandler}\n >\n {this.#componentLocale.footer.connectButtonCaption}\n </button>\n </div>\n </footer>\n </section>\n </Host>\n );\n }\n}\n\nexport type GXServerConnectionData = {\n authenticationType: AuthenticationType;\n serverUrl: string;\n userName: string;\n userPassword: string;\n serverName?: string;\n};\n\nexport type AuthenticationType = {\n id: string;\n name: string;\n};\n"],"mappings":";;;;;;;;AAGO,MAAMA,uCACXC,KAEOA,EAAoBC,KAAIC,MACtB;EACLC,OAAOD,EAAmBE;EAC1BC,SAASH,EAAmBI;;;ACTlC,MAAMC,IAAqB;;;;;;;;;;;;;;;;;AC2B3B,MAAMC,IAA8B,EAClC,qBACA,sBACA,oBACA,gBACA,oBACA,iBACA;;MASWC,IAAwB;;;;;;;QAKnCC,EAAAC,IAAAC,WAAA;IAGAC,EAAAF,IAAAC,WAAA;IACAE,EAAAH,IAAAC,WAAA;IACAG,EAAAJ,IAAAC,WAAA;IACAI,EAAAL,IAAAC,MAAgBK,EACd;IA6DFC,EAAAP,IAAAC,OAAsB;MACpBA,KAAKO;AAAgB;IAGvBC,EAAAT,IAAAC,OAAuBS;MACrBT,KAAKU,gBAAgBV,KAAKW,wBAAwBC,MAC/CC;QACCb,KAAKc,sBAAsBC,EACzBF,GACAb,KAAKc;AACN;AAEJ;;;QAKHE,EAAAjB,IAAAC,OACEiB;;MAEA,SAAAC,KAAAC,IAAAnB,KAAKc,yBAAmB,QAAAK,WAAA,aAAAA,EAAEC,IAAIH,MAAgB,QAAhBA,WAAgB,aAAhBA,EAAkBzB,SAAG,QAAA0B,WAAA,aAAAA,EAAEG,eACrDC,IAAAtB,KAAKc,oBAAoBM,IAAIH,EAAiBzB,SAAG,QAAA8B,WAAA,aAAAA,EAAEC,YACjDC,EAAA;QACEC,OAAM;QACNC,eAAeT;QACfU,YAAYC,EAAOC,gBAAgBF;QACnCG,aAAaF,EAAOC,gBAAgBC;QACpCC,OAAOH,EAAOC,gBAAgBE;SAE7B/B,KAAKc,oBAAoBM,IAAIH,EAAiBzB,IAAI+B;AAEtD;IAEHS,EAAAjC,IAAAC,OAAQ;;MACNA,KAAKiC,2BAA2BjC,KAAKZ;;;YAGrCY,KAAKW,uBAAuBuB,aAC1Bf,IAAAnB,KAAKmC,2BAAqB,QAAAhB,WAAA,aAAAA,EAAEe;;YAE9BlC,KAAKW,uBAAuByB,cAC1BlB,IAAAlB,KAAKmC,2BAAqB,QAAAjB,WAAA,aAAAA,EAAEkB;;YAE9BpC,KAAKW,uBAAuBrB,qBAAqB;QAC/CE,KAAI8B,IAAAtB,KAAKqC,iCAAiC,QAAE,QAAAf,WAAA,aAAAA,EAAE/B;QAC9CG,OAAM4C,IAAAtC,KAAKqC,iCAAiC,QAAE,QAAAC,WAAA,aAAAA,EAAE7C;;AACjD;IAGH8C,EAAAxC,IAAAC,OAAiC;;MAE/B,MAAMc,IAAqC,EACzC0B,EAAAxC,MAAIC,GAAA,MACJuC,EAAAxC,MAAIE,GAAA,MACJsC,EAAAxC,MAAIG,GAAA;MAENW,EAAoB2B,SAAQC;QAC1B,IAAIA,EAAmBlD,IAAI;UACzBQ,KAAKc,oBAAoBf,IAAI2C,EAAmBlD,IAAI;YAClDmD,WAAWD;YACXrB,UAAU;YACVE,SAASqB;;;;AAGb;IAGJC,EAAA9C,IAAAC,OACE8C;MAEA,MAAMC,IAAuBD,EAAME;MACnC,MAAMC,IAA0BjD,KAAKZ,oBAAoB8D,WACvDC,KACSA,EAAS3D,OAAOuD;MAG3B,MAAMK,IACJpD,KAAKZ,oBAAoB6D,GAAyBvD;MAEpDM,KAAKW,uBAAuBrB,qBAAqB;QAC/CE,IAAIuD;QACJrD,MAAM0D;;AACP;IAEHC,EAAAtD,IAAAC,OAA8B8C;MAC5B9C,KAAKW,uBAAuB2C,WAAWR,EAAME;AAAgB;IAE/DO,EAAAxD,IAAAC,OAA8B8C;MAC5B9C,KAAKW,uBAAuB6C,eAAeV,EAAME;AAAgB;;kCAjJT;MACxD1D,oBAAoB;QAClBE,IAAI;QACJE,MAAM;;MAERwC,WAAW;MACXoB,UAAU;MACVE,cAAc;MACdpB,YAAY;;+BAEiB,IAAIqB;;;;;8BAmCY;;EA5B/C,0BAAAxB,CAA2ByB;IACzB,IAAIA,MAAsB,QAAtBA,WAAsB,aAAtBA,EAAwBC,QAAQ;MAClC3D,KAAKqC,mCACHlD,qCAAqCuE;;;EA2B3C,uBAAME;IACJC,EAAA7D,MAAIF,SAA0BgE,EAAOC,oBAAoB/D,KAAKgE,KAAG;IAEjExB,EAAAxC,MAAIgC,GAAA,KAAMiC,KAAVjE;;EAGF,sBAAMkE;IACJ1B,EAAAxC,MAAIuC,GAAA,KAA+B0B,KAAnCjE;;EA8FF,MAAAmE;;IACE,OACE3C,EAAC4C,GAAI;MAAC3C,OAAM;OACVD,EAAA;MAAU6C,OAAOzE;QACjB4B,EAAA;MAAc8C,KAAK9B,EAAAxC,MAAII,GAAA;QAEvBoB,EAAA;MAASC,OAAM;OACbD,EAAA;MAAKC,OAAM;OACTD,EAAA;;MAEEC,OAAM;OAEND,EAAA;MAAOC,OAAM;MAAQ8C,SAAQ;OAC1B/B,EAAAxC,MAAIF,GAAA,KAAkB0E,KAAKC,iBAE9BjD,EAAA;MACEkD,MAAK;MACLlF,IAAG;MACHiC,OAAM;MACNlC,QAAO4B,IAAAnB,KAAKW,4BAAsB,QAAAQ,WAAA,aAAAA,EAAEe;MACpCyC,UAAU;MACVC,KAAMZ,KACHH,EAAA7D,MAAIG,GAAiB6D,GAAuB;SAKnDxC,EAAA;;MAEEC,OAAM;OAEND,EAAA;MAAOC,OAAM;MAAQ8C,SAAQ;OAC1B/B,EAAAxC,MAAIF,GAAA,KAAkB0E,KAAKK,0BAE9BrD,EAAA;MACEhC,IAAG;MACHiC,OAAM;MACNqD,gBAAe;MACfT,OAAOrE,KAAKqC;MACZ0C,aAAY;MACZxF,QAAO2B,IAAAlB,KAAKW,4BAAsB,QAAAO,WAAA,aAAAA,EAAE5B,mBAAmBE;MACvDwF,SAASxC,EAAAxC,MAAI6C,GAAA;SAIjBrB,EAAA;;MAEEC,OAAM;OAEND,EAAA;MAAOC,OAAM;MAAQ8C,SAAQ;OAC1B/B,EAAAxC,MAAIF,GAAA,KAAkB0E,KAAKS,gBAE9BzD,EAAA;MACEkD,MAAK;MACLlF,IAAG;MACHiC,OAAM;MACNlC,QAAO+B,IAAAtB,KAAKW,4BAAsB,QAAAW,WAAA,aAAAA,EAAEgC;MACpC0B,SAASxC,EAAAxC,MAAIqD,GAAA;MACbuB,KAAMZ,KACHH,EAAA7D,MAAIC,GAAgB+D,GAAuB;QAG/CxB,EAAAxC,MAAIgB,GAAA,KAAuBiD,KAA3BjE,MAA4BwC,EAAAxC,MAAIC,GAAA,QAGnCuB,EAAA;;MAEEC,OAAM;OAEND,EAAA;MAAOC,OAAM;MAAQ8C,SAAQ;OAC1B/B,EAAAxC,MAAIF,GAAA,KAAkB0E,KAAKU,gBAE9B1D,EAAA;MACEkD,MAAK;MACLlF,IAAG;MACHiC,OAAM;MACNlC,QAAO+C,IAAAtC,KAAKW,4BAAsB,QAAA2B,WAAA,aAAAA,EAAEkB;MACpCwB,SAASxC,EAAAxC,MAAIuD,GAAA;MACbqB,KAAMZ,KACHH,EAAA7D,MAAIE,GAAgB8D,GAAuB;MAE9CmB,oBAAoB;QAErB3C,EAAAxC,MAAIgB,GAAA,KAAuBiD,KAA3BjE,MAA4BwC,EAAAxC,MAAIE,GAAA,SAIrCsB,EAAA;MAAQC,OAAM;OACZD,EAAA;MAAKC,OAAM;OACTD,EAAA;MACEhC,IAAG;;MAEHiC,OAAM;MACN2D,SAAS5C,EAAAxC,MAAIM,GAAA;OAEZkC,EAAAxC,MAAIF,GAAA,KAAkBuF,OAAOC,oBAGhC9D,EAAA;MACEhC,IAAG;;MAEHiC,OAAM;MACN2D,SAAS5C,EAAAxC,MAAIQ,GAAA;OAEZgC,EAAAxC,MAAIF,GAAA,KAAkBuF,OAAOE"}
@@ -1 +0,0 @@
1
- {"version":3,"names":["STATUS_REGEXP_KEY","CAPTION_REGEXP_KEY","mapNavigationDataToTreeView","navigationData","map","dataItem","i","id","selected","caption","name","startImgSrc","icon","parts","result","leaf","metadata","JSON","stringify","toString","navigationReportCss","CSS_BUNDLES","GxIdeNavigationReport","_GxIdeNavigationReport_componentLocale","set","this","_GxIdeNavigationReport_items","_GxIdeNavigationReport_combinedRegExp","statusPattern","navigationItemsStatusRegExpString","captionPattern","navigationItemsCaptionRegExpString","combinedPattern","navigationItemsRegExp","RegExp","_GxIdeNavigationReport_itemsSelectionChangedHandler","event","selectedItemId","_a","detail","item","itemSelectedCallback","_GxIdeNavigationReport_sortItemsCallback","subModel","sort","a","b","localeCompare","_GxIdeNavigationReport_statusButtonsSelectionChangedHandler","activeStates","statuses","errorIndex","findIndex","state","itemId","warningIndex","successIndex","push","length","statusOptions","join","statusInfo","error","display","number","warning","success","_GxIdeNavigationReport_patternInputHandler","patternFilterValue","_GxIdeNavigationReport_handleChangedItems","newItems","__classPrivateFieldSet","reportTreeItems","errorsCount","warningsCount","successCount","forEach","metadataObject","parse","statusValue","navigationItemsStatusRegExpStringChanged","__classPrivateFieldGet","call","navigationItemsCaptionRegExpStringChanged","addItem","concat","clearItems","componentWillLoad","Locale","getComponentStrings","el","render","h","Host","class","widget","headerData","model","title","description","buttons","button","buttonIcon","buttonType","type","onClick","callback","src","htmlFor","aside","filterLabel","placeholder","filterPlaceholder","onInput","filter","filterType","onSelectedItemsChange","sortItemsCallback","filterOptions","autoExpand","hideMatchesAndShowNonMatches","errors","warnings","successes","hideMessage","compact","onSelectionChanged"],"sources":["src/components/navigation-report/helpers.ts","src/components/navigation-report/navigation-report.scss?tag=gx-ide-navigation-report&encapsulation=shadow","src/components/navigation-report/navigation-report.tsx"],"sourcesContent":["import { TreeViewModel } from \"@genexus/chameleon-controls-library\";\nimport { NavigationData, Status } from \"./navigation-report\";\n\nexport const STATUS_REGEXP_KEY = \"status\";\nexport const CAPTION_REGEXP_KEY = \"caption\";\n\nexport const mapNavigationDataToTreeView = (\n navigationData: NavigationData[]\n): TreeViewModel =>\n navigationData.map((dataItem, i) => {\n return {\n id: dataItem.id,\n selected: i === 0,\n caption: dataItem.name,\n startImgSrc: dataItem.icon,\n parts: `tree-view-item tree-view-item--status tree-view-item--${dataItem.result}`,\n leaf: true,\n metadata: JSON.stringify({\n [STATUS_REGEXP_KEY]: dataItem.result.toString() as Status,\n [CAPTION_REGEXP_KEY]: dataItem.name\n })\n };\n });\n","@import \"../../global/gx-ide-mixins.scss\";\n\n:host {\n display: grid;\n block-size: 100%;\n overflow: auto;\n grid-template-areas:\n \"aside main\"\n \"footer footer\";\n grid-template-rows: 1fr max-content;\n grid-template-columns: 240px 1fr;\n}\n\n:host(.display-header-type) {\n grid-template-areas:\n \"header header\"\n \"aside main\"\n \"footer footer\";\n\n grid-template-rows: max-content 1fr max-content;\n grid-template-columns: 240px 1fr;\n}\n\n.section {\n display: contents;\n}\n\n// - - - - - - - - - - - - -\n// Header\n// - - - - - - - - - - - - -\n\n.header {\n grid-area: header;\n display: grid;\n grid-template-columns: 1fr max-content;\n\n &__description {\n display: grid;\n gap: var(--spacing-gap-m);\n\n &-p {\n max-inline-size: 460px;\n }\n }\n &__actions {\n flex-shrink: 0;\n }\n}\n\n// - - - - - - - - - - - - -\n// Aside & Main\n// - - - - - - - - - - - - -\n\n.aside {\n grid-area: aside;\n overflow: auto;\n border-inline-end: var(--section-common-border);\n display: grid;\n grid-template-rows: max-content 1fr;\n}\n\n.main {\n grid-area: main;\n overflow: auto;\n}\n\n// - - - - - - - - - - - - -\n// Footer\n// - - - - - - - - - - - - -\n\n.footer {\n grid-area: footer;\n justify-content: flex-start;\n}\n\n// - - - - - - - - - - - - - - - - - - -\n// Tree view status custom status \"icon\"\n// - - - - - - - - - - - - - - - - - - -\n.tree-view::part(item__action tree-view-item--success),\n.tree-view::part(item__action tree-view-item--warning),\n.tree-view::part(item__action tree-view-item--error) {\n // WA custom solution for two icons\n // Because this is a one level tree, there is no risk of\n // breaking the layout with a custom padding.\n padding-inline-start: 24px;\n}\n\n.tree-view::part(item__action tree-view-item--success) {\n background: var(--icon__states_pill-filled_success--enabled) no-repeat;\n background-position-y: center;\n}\n.tree-view::part(item__action tree-view-item--warning) {\n background: var(--icon__states_pill-filled_warning--enabled) no-repeat;\n background-position-y: center;\n}\n.tree-view::part(item__action tree-view-item--error) {\n background: var(--icon__states_pill-filled_error--enabled) no-repeat;\n background-position-y: center;\n}\n","// Stencil\nimport {\n Component,\n Host,\n h,\n Prop,\n Element,\n Event,\n EventEmitter,\n State,\n Watch,\n Method\n} from \"@stencil/core\";\n// Other Libraries\nimport { MercuryBundles } from \"@genexus/mercury\";\n// Custom Imports\nimport { Locale } from \"../../common/locale\";\nimport {\n mapNavigationDataToTreeView,\n STATUS_REGEXP_KEY,\n CAPTION_REGEXP_KEY\n} from \"./helpers\";\nimport {\n ChEditCustomEvent,\n TreeViewItemModelExtended,\n TreeViewModel\n} from \"@genexus/chameleon-controls-library\";\nimport { CheckedItemsInfo } from \"../_helpers/list-selector/list-selector\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"components/tab\",\n \"components/tooltip\",\n \"components/tree-view\",\n \"utils/form--full\",\n \"utils/layout\",\n \"utils/typography\",\n \"utils/spacing\",\n \"chameleon/scrollbar\"\n];\n\n@Component({\n tag: \"gx-ide-navigation-report\",\n styleUrl: \"navigation-report.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/navigation-report\"]\n})\nexport class GxIdeNavigationReport {\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 #items: NavigationData[] = [];\n\n @Element() el: HTMLGxIdeNavigationReportElement;\n @State() reportTreeItems: TreeViewModel = [];\n @State() navigationItemsStatusRegExpString: string = \"\";\n @Watch(\"navigationItemsStatusRegExpString\")\n navigationItemsStatusRegExpStringChanged() {\n this.#combinedRegExp();\n }\n @State() navigationItemsCaptionRegExpString: string = \"\";\n @Watch(\"navigationItemsCaptionRegExpString\")\n navigationItemsCaptionRegExpStringChanged() {\n this.#combinedRegExp();\n }\n @State() navigationItemsRegExp: RegExp;\n @State() confirmed = false;\n @State() headerState: \"none\" | \"create\" | \"reorganize\" = \"none\";\n\n @State() statusInfo: StatusInfo = {\n error: {\n display: true,\n number: 0\n },\n warning: {\n display: true,\n number: 0\n },\n success: {\n display: true,\n number: 0\n }\n };\n @State() someStatusVisible: boolean;\n\n /**\n * The header data to display on the header.\n */\n @Prop() readonly headerData: HeaderData;\n\n /**\n * Callback invoked when user confirms data base reorganization\n */\n @Prop() readonly confirmCallback: ConfirmCallback;\n\n /**\n * Callback invoked when user cancels reorganization\n */\n @Prop() readonly cancelCallback: CancelCallback;\n\n /**\n * Callback to be invoked when the user closes the dialog\n */\n @Prop() readonly closeCallback: CloseCallback;\n\n /**\n * Callback invoked when a list item is selected\n */\n @Prop() readonly itemSelectedCallback: ItemSelectedCallback;\n\n /**\n * @description Gets fired when the component has rendered for the first time.\n */\n @Event() componentDidRenderEvent: EventEmitter<string>;\n\n /**\n * Add a new item\n */\n @Method()\n async addItem(item: NavigationData) {\n this.#handleChangedItems(this.#items.concat([item]));\n }\n\n /**\n * Clear items\n */\n @Method()\n async clearItems() {\n this.#handleChangedItems([]);\n }\n\n async componentWillLoad() {\n this.#componentLocale = await Locale.getComponentStrings(this.el);\n }\n\n #combinedRegExp = () => {\n const statusPattern = this.navigationItemsStatusRegExpString || \"\";\n const captionPattern = this.navigationItemsCaptionRegExpString || \"\";\n\n // Create a RegExp that combines the values from the buttons statues and the filer value.\n const combinedPattern = `${statusPattern && `(${statusPattern})`}${\n statusPattern && captionPattern ? \".*\" : \"\"\n }${captionPattern && `(${captionPattern})`}`;\n\n this.navigationItemsRegExp = new RegExp(combinedPattern, \"i\");\n };\n\n #itemsSelectionChangedHandler = (\n event: CustomEvent<TreeViewItemModelExtended[]>\n ) => {\n const selectedItemId = event.detail[0]?.item.id;\n if (selectedItemId) {\n this.itemSelectedCallback(selectedItemId);\n }\n };\n\n #sortItemsCallback = (subModel: TreeViewModel) => {\n return subModel.sort((a, b) => a.caption.localeCompare(b.caption));\n };\n\n #statusButtonsSelectionChangedHandler = (\n event: CustomEvent<CheckedItemsInfo>\n ) => {\n const activeStates = event.detail;\n const statuses: Status[] = [];\n\n const errorIndex = activeStates.findIndex(\n state => state.itemId === \"errors\"\n );\n const warningIndex = activeStates.findIndex(\n state => state.itemId === \"warnings\"\n );\n const successIndex = activeStates.findIndex(\n state => state.itemId === \"successes\"\n );\n\n if (errorIndex !== -1) {\n statuses.push(\"error\");\n }\n if (warningIndex !== -1) {\n statuses.push(\"warning\");\n }\n if (successIndex !== -1) {\n statuses.push(\"success\");\n }\n\n if (statuses.length) {\n const statusOptions = statuses.join(\"|\");\n this.navigationItemsStatusRegExpString = `\"${STATUS_REGEXP_KEY}\":\"(${statusOptions})\"`;\n } else {\n this.navigationItemsStatusRegExpString = `\"${STATUS_REGEXP_KEY}\":\"\"`;\n }\n\n // Update statusInfo for the status-buttons\n this.statusInfo = {\n error: {\n display: errorIndex !== -1,\n number: this.statusInfo.error.number\n },\n warning: {\n display: warningIndex !== -1,\n number: this.statusInfo.warning.number\n },\n success: {\n display: successIndex !== -1,\n number: this.statusInfo.success.number\n }\n };\n };\n\n #patternInputHandler = (event: ChEditCustomEvent<string> | InputEvent) => {\n const patternFilterValue = event.detail as string;\n this.navigationItemsCaptionRegExpString = `\"${CAPTION_REGEXP_KEY}\":\".*${patternFilterValue}.*\"`;\n };\n\n #handleChangedItems = (newItems: NavigationData[]) => {\n this.#items = newItems;\n this.reportTreeItems = mapNavigationDataToTreeView(newItems);\n let errorsCount: number = 0;\n let warningsCount: number = 0;\n let successCount: number = 0;\n this.reportTreeItems.forEach(item => {\n const metadataObject = JSON.parse(item.metadata);\n let statusValue;\n if (STATUS_REGEXP_KEY in metadataObject) {\n statusValue = metadataObject[STATUS_REGEXP_KEY] as Status;\n }\n\n if (statusValue && statusValue === \"error\") {\n errorsCount++;\n } else if (statusValue && statusValue === \"warning\") {\n warningsCount++;\n } else if (statusValue && statusValue === \"success\") {\n successCount++;\n }\n });\n\n this.statusInfo[\"error\"].number = errorsCount;\n this.statusInfo[\"warning\"].number = warningsCount;\n this.statusInfo[\"success\"].number = successCount;\n };\n\n render() {\n return (\n <Host\n class={{\n \"widget\": true,\n \"display-header-type\": !!this.headerData\n }}\n >\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <section class=\"section\">\n {this.headerData && (\n <header class=\"header dialog-header-with-border spacing-body-inline spacing-body-block-start\">\n <div class=\"header__description\">\n <h3 class=\"subtitle-regular-s\">{this.headerData.title}</h3>\n <p class=\"body-regular-s header__description-p\">\n {this.headerData.description}\n </p>\n </div>\n <div class=\"header__actions\">\n <div class=\"buttons-spacer header__actions\">\n {this.headerData.buttons?.map(button => {\n const buttonIcon = button.icon;\n const buttonType: headerButtonType =\n button.type ?? \"button-primary\";\n return (\n <button\n class={{\n [buttonType]: true,\n \"button-icon-and-text\": !!buttonIcon\n }}\n onClick={button.callback}\n >\n {buttonIcon && (\n <ch-image class=\"icon-m\" src={buttonIcon}></ch-image>\n )}\n {button.caption}\n </button>\n );\n })}\n </div>\n </div>\n </header>\n )}\n\n <section class=\"aside field-group\">\n <header class=\"aside__header spacing-body-inline spacing-body-block-start\">\n <div class=\"field field-block\">\n <label class=\"label\" htmlFor=\"pattern\">\n {this.#componentLocale.aside.filterLabel}\n </label>\n <ch-edit\n id=\"pattern\"\n class=\"input\"\n placeholder={this.#componentLocale.aside.filterPlaceholder}\n onInput={this.#patternInputHandler}\n ></ch-edit>\n </div>\n </header>\n <ch-tree-view-render\n class=\"tree-view\"\n show-lines=\"last\"\n filter={this.navigationItemsRegExp}\n filterType=\"metadata\"\n model={this.reportTreeItems}\n onSelectedItemsChange={this.#itemsSelectionChangedHandler}\n sortItemsCallback={this.#sortItemsCallback}\n filterOptions={{\n autoExpand: true,\n hideMatchesAndShowNonMatches: false\n }}\n ></ch-tree-view-render>\n </section>\n <section class=\"main spacing-body\">\n <slot></slot>\n </section>\n <footer class=\"footer dialog-footer-with-border dialog-footer-start spacing-body-inline spacing-body-block-end\">\n <gx-ide-status-buttons\n errors={this.statusInfo.error.number}\n warnings={this.statusInfo.warning.number}\n successes={this.statusInfo.success.number}\n hideMessage\n compact\n onSelectionChanged={this.#statusButtonsSelectionChangedHandler}\n ></gx-ide-status-buttons>\n </footer>\n </section>\n </Host>\n );\n }\n}\n\nexport type NavigationData = {\n id: string;\n result: Status;\n icon: string;\n name: string;\n};\n\nexport type ConfirmCallback = () => Promise<void>;\nexport type CancelCallback = () => Promise<void>;\nexport type CloseCallback = () => Promise<void>;\nexport type ItemSelectedCallback = (id: string) => Promise<void>;\n\ntype StatusInfo = {\n error: {\n display: boolean;\n number: number;\n };\n warning: {\n display: boolean;\n number: number;\n };\n success: {\n display: boolean;\n number: number;\n };\n};\n\nexport type HeaderData = {\n title: string;\n description: string;\n buttons: HeaderButtonData[];\n};\n\nexport type HeaderButtonData = {\n caption: string;\n icon?: string;\n type?: headerButtonType;\n callback: () => Promise<void>;\n};\n\nexport type headerButtonType = \"button-primary\" | \"button-secondary\";\n\nexport type Status = \"success\" | \"error\" | \"warning\";\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"names":["launchpadApisCss","CSS_BUNDLES","GxIdeLaunchpadApis","_GxIdeLaunchpadApis_componentLocale","set","this","_GxIdeLaunchpadApis_ACCORDION_MODEL","componentWillLoad","__classPrivateFieldSet","Locale","getComponentStrings","element","error","console","initializeAccordionModel","apis","Array","isArray","map","api","index","url","toString","lastSlash","lastIndexOf","name","substring","length","toUpperCase","id","caption","expanded","filter","Boolean","renderApis","apiData","h","key","slot","class","data","onObjectSelected","event","handleObjectSelection","onCopyToClipboard","handleCopyToClipboard","copyToClipboard","emit","detail","render","Host","model","_a","__classPrivateFieldGet","noApis","launchpadNativeAppsCss","IOS_ID","ANDROID_ID","APP_STORE_BADGE","getAssetPath","ANDROID_LOGO","MAC_LOGO","QR_ICON","getIconPath","category","colorType","GxIdeLaunchpadNativeApps","_GxIdeLaunchpadNativeApps_componentLocale","_GxIdeLaunchpadNativeApps_ACCORDION_MODEL","_GxIdeLaunchpadNativeApps_timeoutIds","Set","orderCriteria","ascending","el","disconnectedCallback","forEach","timeoutId","clearTimeout","clear","objects","noData","_GxIdeLaunchpadNativeApps_instances","_GxIdeLaunchpadNativeApps_renderPlatformSection","call","show","showQRDialog","closable","onDialogClosed","_GxIdeLaunchpadNativeApps_handleCloseQRDialog","selectedObjectForQR","value","size","fill","_GxIdeLaunchpadNativeApps_getQRFillColor","background","_GxIdeLaunchpadNativeApps_getQRBackgroundColor","computedStyle","getComputedStyle","document","documentElement","getPropertyValue","trim","_GxIdeLaunchpadNativeApps_getCopyIcon","_GxIdeLaunchpadNativeApps_copyToClipboardFunc","object","navigator","clipboard","writeText","then","objectKey","showCopiedMessage","Object","assign","window","setTimeout","delete","add","catch","err","_GxIdeLaunchpadNativeApps_openAppStoreFunc","openOnTheAppStore","open","_GxIdeLaunchpadNativeApps_handleQRClick","_GxIdeLaunchpadNativeApps_handleObjectClick","keyString","type","platformType","platformIcon","src","alt","platformSection","find","obj","_b","noPlatformApps","replace","tabindex","onClick","description","showQR","copied","_c","copy","launchpadWebAppsCss","ANGULAR_LOGO","ACCORDION_RECENT_OBJECTS_ID","COLUMN_NAME","COLUMN_MODULE","COLUMN_TYPE","COLUMN_DESCRIPTION","GxIdeLaunchpadWebApps","_GxIdeLaunchpadWebApps_componentLocale","_GxIdeLaunchpadWebApps_sortRecentObjects","a","b","order","orderCriteriaA","_GxIdeLaunchpadWebApps_instances","_GxIdeLaunchpadWebApps_getObjectValue","orderCriteriaB","_GxIdeLaunchpadWebApps_handleColumnSortChanged","e","columnId","sortDirection","handleAccordionExpandedChange","recentObjectsExpanded","placeholder","search","filterValue","accessibleName","onInput","String","_GxIdeLaunchpadWebApps_renderMainObjects","_GxIdeLaunchpadWebApps_renderRecentObjects","filterV","toLowerCase","module","includes","_GxIdeLaunchpadWebApps_getObjectTypeIcon","iconMap","API","Menu","Dashboard","Panel","SDPanel","Procedure","Transaction","WebPanel","WebComponent","WorkWith","fullKey","_GxIdeLaunchpadWebApps_handleObjectClick","mainObjects","filteredObjects","_GxIdeLaunchpadWebApps_filterObjects","noMainObjects","noObjectsMatchSearch","angular","from","_","recentObjects","noRecentObjects","sortedObjects","sort","columnName","_e","_d","columns","columnNameHidden","settingable","sortable","onColumnSortChanged","resizable","_g","_f","_j","_h","_l","_k","rowid"],"sources":["src/components/launchpad/apis/launchpad-apis.scss?tag=gx-ide-launchpad-apis&encapsulation=shadow","src/components/launchpad/apis/launchpad-apis.tsx","src/components/launchpad/native-apps/launchpad-native-apps.scss?tag=gx-ide-launchpad-native-apps&encapsulation=shadow","src/components/launchpad/native-apps/launchpad-native-apps.tsx","src/components/launchpad/web-apps/launchpad-web-apps.scss?tag=gx-ide-launchpad-web-apps&encapsulation=shadow","src/components/launchpad/web-apps/launchpad-web-apps.tsx"],"sourcesContent":[":host {\n display: block;\n block-size: 100%;\n overflow: auto;\n background-color: var(--ch-color-surface-primary);\n color: var(--ch-color-text-primary);\n}\n\n.main {\n overflow: auto;\n display: block;\n}\n\n.apis-container {\n padding: 24px;\n display: flex;\n flex-direction: column;\n gap: var(--spacing-gap-xl);\n max-width: 100%;\n}\n\n.api-item {\n background: var(--ch-color-surface-secondary);\n border: 1px solid var(--color-border-neutral-default);\n border-radius: 0;\n overflow: hidden;\n transition: all var(--timing-fast) ease;\n width: 100%;\n max-width: 100%;\n display: flex;\n flex-direction: column;\n min-height: 64px;\n\n &:hover {\n box-shadow: var(--color-accent-surface-elevation-2);\n transform: translateY(-2px);\n border-color: var(--color-border-primary-hover);\n }\n}\n\n.api-header {\n padding: 16px;\n background: transparent;\n border-bottom: 1px solid var(--color-border-neutral-default);\n flex-shrink: 0;\n\n .api-name {\n margin: 0;\n color: var(--color-text-neutral-default);\n word-break: break-all;\n overflow-wrap: break-word;\n }\n}\n\n.api-content {\n overflow: hidden;\n}\n\n.no-apis,\n.no-data {\n color: var(--color-text-neutral-disabled);\n font-style: italic;\n text-align: center;\n padding: 16px;\n\n p {\n font-size: var(--font-size-body-m);\n font-weight: var(--font-style-semi-bold);\n line-height: var(--line-height-spacious);\n }\n}\n","import {\n Component,\n Host,\n Prop,\n Element,\n h,\n Event,\n EventEmitter\n} from \"@stencil/core\";\n\nimport { MercuryBundles } from \"@genexus/mercury\";\nimport { AccordionModel } from \"@genexus/chameleon-controls-library\";\n\nimport { Locale } from \"../../../common/locale\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"components/accordion\",\n \"utils/elevation\",\n \"utils/layout\",\n \"utils/typography\",\n \"utils/spacing\"\n];\n\n@Component({\n tag: \"gx-ide-launchpad-apis\",\n styleUrl: \"launchpad-apis.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/launchpad-apis\"]\n})\nexport class GxIdeLaunchpadApis {\n #componentLocale: any;\n #ACCORDION_MODEL: AccordionModel = [];\n\n @Prop() apis: Array<any>;\n @Element() element: HTMLElement;\n\n /**\n * Callback function for object selection (passed from parent)\n */\n @Prop() onObjectSelected?: (event: any) => void;\n\n /**\n * Event emitted when copying to clipboard\n */\n @Event() copyToClipboard: EventEmitter<{ url: string }>;\n\n async componentWillLoad() {\n try {\n this.#componentLocale = await Locale.getComponentStrings(this.element);\n } catch (error) {\n console.error(\"Error loading locale:\", error);\n this.#componentLocale = {};\n }\n\n this.initializeAccordionModel();\n }\n\n /**\n * Initialize accordion model with dynamic sections for each API\n */\n private initializeAccordionModel() {\n if (!this.apis || !Array.isArray(this.apis)) {\n this.#ACCORDION_MODEL = [];\n return;\n }\n\n this.#ACCORDION_MODEL = this.apis\n .map((api: any, index: number) => {\n let url: string;\n\n if (typeof api === \"string\") {\n url = api;\n } else if (api && typeof api === \"object\" && api.url) {\n url = api.url.toString();\n } else {\n return null;\n }\n\n const lastSlash = url.lastIndexOf(\"/\");\n const name = url.substring(lastSlash + 1, url.length).toUpperCase();\n\n return {\n id: `api-${index}`,\n caption: name,\n expanded: true\n };\n })\n .filter(Boolean);\n }\n\n renderApis() {\n if (!this.apis || !Array.isArray(this.apis)) {\n return null;\n }\n\n return this.apis\n .map((api: any, index: number) => {\n let apiData: any;\n\n if (typeof api === \"string\") {\n apiData = { url: api };\n } else if (api && typeof api === \"object\" && api.url) {\n apiData = api;\n } else {\n return null;\n }\n\n return (\n <div\n key={`api-${index}`}\n slot={`api-${index}`}\n class=\"api-content spacing-body\"\n >\n <gx-ide-launchpad-api\n data={apiData}\n onObjectSelected={(event: any) =>\n this.handleObjectSelection(event)\n }\n onCopyToClipboard={(event: any) =>\n this.handleCopyToClipboard(event)\n }\n ></gx-ide-launchpad-api>\n </div>\n );\n })\n .filter(Boolean);\n }\n\n /**\n * Handles object selection from subcomponents\n */\n private handleObjectSelection(event: any) {\n if (this.onObjectSelected) {\n this.onObjectSelected(event);\n }\n }\n\n /**\n * Handles copy to clipboard from subcomponents\n */\n private handleCopyToClipboard(event: any) {\n this.copyToClipboard.emit({ url: event.detail.url });\n }\n\n render() {\n if (!this.apis || this.apis.length === 0) {\n return (\n <Host>\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <div class=\"no-data\">\n <p class=\"body-regular-s\">\n {this.#componentLocale?.noApis || \"No APIs available\"}\n </p>\n </div>\n </Host>\n );\n }\n\n return (\n <Host>\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n\n <div class=\"main\">\n <ch-accordion-render\n class=\"accordion-filled-header elevation-2 apis-accordion\"\n model={this.#ACCORDION_MODEL}\n >\n {this.renderApis()}\n </ch-accordion-render>\n </div>\n </Host>\n );\n }\n}\n","@use \"../common.scss\" as *;\n\n:host {\n display: block;\n block-size: 100%;\n overflow: auto;\n}\n\n.main {\n overflow: auto;\n display: block;\n}\n\nch-accordion-render {\n inline-size: 100%;\n block-size: 100%;\n}\n\n.native-apps-accordion {\n inline-size: 100%;\n block-size: 100%;\n}\n\n/* WA: Platform Section */\n.platform-section {\n display: flex;\n align-items: center;\n gap: var(--spacing-gap-l);\n}\n\n.app__apple-store {\n height: 32px; // This should equal the button height in Mercury\n cursor: pointer;\n transition: opacity var(--timing-fast) ease;\n\n &:hover {\n opacity: 0.8;\n }\n}\n\n.platform-grid {\n --card-min-inline-size: 360px;\n @extend %appCardsContainer;\n}\n\n.object-card {\n @extend %appCard;\n}\n\n.card-content {\n display: flex;\n gap: var(--spacing-gap-xl);\n flex: 1;\n width: 100%;\n\n &:focus {\n outline: none;\n }\n}\n\n.info-section {\n flex: 1;\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n width: 100%;\n}\n\n.app-info {\n display: flex;\n flex-direction: column;\n gap: var(--spacing-gap-xs);\n flex: 1;\n}\n\n.name {\n color: var(--color-text-neutral-default);\n}\n\n.description {\n color: var(--color-text-neutral-disabled);\n margin: 0;\n line-height: var(--line-height-relaxed);\n}\n\n/* Copy button styles handled by Mercury components/button bundle */\n\n/* QR Dialog Styles */\n.dialog {\n --ch-dialog-block-size: 400px;\n --ch-dialog-inline-size: 350px;\n --ch-dialog-min-block-size: 400px;\n --ch-dialog-min-inline-size: 350px;\n}\n.qr-container {\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.card-actions {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding-top: 12px;\n border-top: 1px solid var(--color-border-neutral-default);\n}\n\n/* No Data States */\n.no-data,\n.no-results {\n color: var(--color-text-neutral-disabled);\n font-style: italic;\n text-align: center;\n padding: 16px;\n\n p {\n font-size: var(--font-size-body-m);\n font-weight: var(--font-style-semi-bold);\n line-height: var(--line-height-spacious);\n }\n}\n\n/* Responsive Design */\n@media (max-width: 768px) {\n .platform-grid {\n justify-content: center;\n }\n\n .card-content {\n flex-direction: column;\n gap: var(--spacing-gap-l);\n }\n\n .card-actions {\n flex-direction: column;\n gap: var(--spacing-gap-l);\n align-items: stretch;\n }\n}\n\n@media (max-width: 480px) {\n .main {\n padding: 12px;\n }\n\n .object-card {\n padding: 12px;\n }\n\n .platform-grid {\n gap: var(--spacing-gap-l);\n padding: 12px;\n }\n}\n\n.android:after {\n content: \"\";\n display: block;\n}\n","import {\n Component,\n h,\n Prop,\n State,\n Event,\n EventEmitter,\n Element,\n getAssetPath\n} from \"@stencil/core\";\n\nimport { getIconPath, MercuryBundles } from \"@genexus/mercury\";\nimport { AccordionModel } from \"@genexus/chameleon-controls-library\";\n\nimport { Locale } from \"../../../common/locale\";\n\nconst IOS_ID = \"ios\";\nconst ANDROID_ID = \"android\";\n\nconst APP_STORE_BADGE = getAssetPath(\n \"./gx-ide-assets/launchpad-native-apps/images/app-store-badge.svg\"\n);\nconst ANDROID_LOGO = getAssetPath(\n \"./gx-ide-assets/launchpad-native-apps/images/android-logo.svg\"\n);\nconst MAC_LOGO = getAssetPath(\n \"./gx-ide-assets/launchpad-native-apps/images/mac-logo.svg\"\n);\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"components/accordion\",\n \"components/button\",\n \"components/dialog\",\n \"components/icon\",\n \"utils/elevation\",\n \"utils/layout\",\n \"utils/spacing\",\n \"utils/typography\"\n];\n\nconst QR_ICON = getIconPath({\n category: \"system\",\n name: \"qr-code\",\n colorType: \"interactive\"\n});\n\n@Component({\n tag: \"gx-ide-launchpad-native-apps\",\n styleUrl: \"launchpad-native-apps.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/launchpad-native-apps\"]\n})\nexport class GxIdeLaunchpadNativeApps {\n #componentLocale: any;\n #ACCORDION_MODEL: AccordionModel = [];\n #timeoutIds: Set<number> = new Set();\n\n @Element() el: HTMLGxIdeLaunchpadNativeAppsElement;\n\n /**\n * Array of platform sections (ios, android)\n */\n @Prop() readonly objects: PlatformSection[] = [];\n\n /**\n * Filter value for searching objects\n */\n @State() filterValue: string = \"\";\n\n /**\n * Sorting order for recent objects table\n */\n @State() order: { orderCriteria: string | null; ascending: boolean | null } =\n {\n orderCriteria: null,\n ascending: null\n };\n\n /**\n * Current page for pagination\n */\n @State() page: number = 1;\n\n /**\n * Items per page for pagination\n */\n @State() perPage: number = 10;\n\n /**\n * Event emitted when copying to clipboard - like the original version\n */\n @Event() copyToClipboard: EventEmitter<{ url: string }>;\n\n /**\n * Event emitted when opening app store - like the original version\n */\n @Event() openOnTheAppStore: EventEmitter<{ url: string }>;\n\n /**\n * Callback function for object selection (passed from parent)\n */\n @Prop() onObjectSelected?: (event: any) => void;\n\n /**\n * State to track copied messages for each object\n */\n @State() showCopiedMessage: { [key: string]: boolean } = {};\n\n /**\n * State to control QR dialog visibility\n */\n @State() showQRDialog: boolean = false;\n\n /**\n * State to store the selected object for QR display\n */\n @State() selectedObjectForQR: NativeAppObject | null = null;\n\n async componentWillLoad() {\n try {\n this.#componentLocale = await Locale.getComponentStrings(this.el);\n } catch (error) {\n console.error(\"Error loading locale:\", error);\n this.#componentLocale = {};\n }\n\n this.#ACCORDION_MODEL = [\n {\n id: IOS_ID,\n caption: \"iOS\",\n expanded: true\n },\n {\n id: ANDROID_ID,\n caption: \"Android\",\n expanded: true\n }\n ];\n }\n\n #getQRFillColor(): string {\n const computedStyle = getComputedStyle(document.documentElement);\n return (\n computedStyle.getPropertyValue(\"--color-text-neutral-default\").trim() ||\n computedStyle.getPropertyValue(\"--color-neutral-400\").trim() ||\n \"#49566d\"\n );\n }\n\n #getQRBackgroundColor(): string {\n const computedStyle = getComputedStyle(document.documentElement);\n return (\n computedStyle.getPropertyValue(\"--color-neutral-1600\").trim() || \"#ffffff\"\n );\n }\n\n #getCopyIcon(): string {\n return getIconPath({\n category: \"system\",\n name: \"copy\",\n colorType: \"primary\"\n });\n }\n\n /**\n * Copies text to clipboard and emits event - like the original version\n */\n #copyToClipboardFunc(object: NativeAppObject) {\n this.copyToClipboard.emit({\n url: object.url\n });\n\n if (object.url) {\n navigator.clipboard\n .writeText(object.url)\n .then(() => {\n const objectKey = `${object.name}-${object.url}`;\n\n this.showCopiedMessage = {\n ...this.showCopiedMessage,\n [objectKey]: true\n };\n\n const timeoutId = window.setTimeout(() => {\n this.showCopiedMessage = {\n ...this.showCopiedMessage,\n [objectKey]: false\n };\n this.#timeoutIds.delete(timeoutId);\n }, 2000);\n\n this.#timeoutIds.add(timeoutId);\n })\n .catch(err => {\n console.error(\"Failed to copy text: \", err);\n });\n }\n }\n\n /**\n * Opens app store and emits event - like the original version\n */\n #openAppStoreFunc(object: NativeAppObject) {\n this.openOnTheAppStore.emit({\n url: object.url\n });\n\n if (object.url) {\n window.open(object.url, \"_blank\");\n }\n }\n\n /**\n * Handles QR button click\n */\n #handleQRClick(object: NativeAppObject) {\n this.selectedObjectForQR = object;\n this.showQRDialog = true;\n }\n\n /**\n * Handles closing QR dialog\n */\n #handleCloseQRDialog() {\n this.showQRDialog = false;\n this.selectedObjectForQR = null;\n }\n\n /**\n * Handles object click and calls parent callback\n */\n #handleObjectClick(object: NativeAppObject) {\n if (object.key && this.onObjectSelected) {\n // Send the full key object as string in format \"type|id\"\n const keyString = `${object.key.type}|${object.key.id}`;\n this.onObjectSelected({ detail: { key: keyString } });\n }\n }\n\n /**\n * Cleanup method to prevent memory leaks\n */\n disconnectedCallback() {\n if (this.#timeoutIds) {\n this.#timeoutIds.forEach(timeoutId => {\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n });\n this.#timeoutIds.clear();\n }\n }\n\n /**\n * Renders platform section (iOS or Android) with grid layout like the original version\n */\n #renderPlatformSection(platformType: string) {\n const platformIcon =\n platformType === IOS_ID ? (\n <img src={MAC_LOGO} alt=\"Apple iOS Logo\"></img>\n ) : (\n <img src={ANDROID_LOGO} alt=\"Android Logo\"></img>\n );\n\n const platformSection = this.objects.find(obj => obj.type === platformType);\n\n if (!platformSection || platformSection.objects.length === 0) {\n return (\n <div class=\"no-results\">\n <p class=\"body-regular-s\">\n {this.#componentLocale?.noPlatformApps?.replace(\n \"{platformType}\",\n platformType\n ) || `No ${platformType} applications available`}\n </p>\n </div>\n );\n }\n\n return (\n <div class=\"platform-grid\">\n {platformSection.objects.map((object, index) => (\n <div\n key={index}\n class=\"object-card elevation-1\"\n tabindex=\"0\"\n onClick={() => this.#handleObjectClick(object)}\n >\n <div class=\"card-content\">\n <div class=\"info-section\">\n <div class=\"app-info\">\n <h1 class=\"name body-semi-bold-s\">{object.name}</h1>\n {object.description && (\n <p class=\"description body-regular-xs\">\n {object.description}\n </p>\n )}\n </div>\n </div>\n </div>\n <div class=\"card-actions\">\n {object.url && (\n <div class=\"platform-section\">\n {object[\"app-store-badge\"] ? (\n <img\n src={APP_STORE_BADGE}\n alt=\"Download on the App Store\"\n class=\"app__apple-store\"\n onClick={() => this.#openAppStoreFunc(object)}\n />\n ) : (\n platformIcon\n )}\n <button\n class=\"button-secondary button-icon-and-text\"\n onClick={() => this.#handleQRClick(object)}\n aria-label=\"Show QR Code\"\n >\n <ch-image class=\"icon-m\" src={QR_ICON} type=\"mask\" />\n {this.#componentLocale?.showQR || \"Show QR\"}\n </button>\n </div>\n )}\n <button\n class=\"button-tertiary button-icon-and-text copy-button\"\n onClick={() => this.#copyToClipboardFunc(object)}\n aria-label=\"Copy to clipboard\"\n >\n <ch-image class=\"icon-m\" src={this.#getCopyIcon()} />\n {this.showCopiedMessage[`${object.name}-${object.url}`]\n ? this.#componentLocale?.copied || \"Copied!\"\n : this.#componentLocale?.copy || \"Copy\"}\n </button>\n </div>\n </div>\n ))}\n {\n // WA: Prevent card take full width if there is only one card\n platformSection.objects.length === 1 && <div></div>\n }\n </div>\n );\n }\n\n render() {\n if (!this.objects || this.objects.length === 0) {\n <div class=\"no-data\">\n <p class=\"body-regular-s\">\n {this.#componentLocale?.noData ||\n \"No native applications data available\"}\n </p>\n </div>;\n }\n\n return [\n <ch-theme model={CSS_BUNDLES}></ch-theme>,\n <div class=\"main\">\n <ch-accordion-render\n class=\"accordion-filled-header elevation-1 native-apps-accordion\"\n model={this.#ACCORDION_MODEL}\n >\n <div slot={IOS_ID} class=\"accordion-content spacing-body\">\n {this.#renderPlatformSection(IOS_ID)}\n </div>\n <div slot={ANDROID_ID} class=\"accordion-content spacing-body\">\n {this.#renderPlatformSection(ANDROID_ID)}\n </div>\n </ch-accordion-render>\n </div>,\n <ch-dialog\n class=\"dialog\"\n show={this.showQRDialog}\n show-header={true}\n closable={true}\n close-button-accessible-name=\"Close QR code\"\n onDialogClosed={() => this.#handleCloseQRDialog()}\n >\n {this.selectedObjectForQR && (\n <div class=\"qr-container\">\n <ch-qr\n value={this.selectedObjectForQR.url || \"\"}\n size={200}\n error-correction-level=\"Low\"\n class=\"qr-code\"\n fill={this.#getQRFillColor()}\n background={this.#getQRBackgroundColor()}\n ></ch-qr>\n </div>\n )}\n </ch-dialog>\n ];\n }\n}\n\ninterface NativeAppObject {\n \"name\": string;\n \"module\"?: string;\n \"type\"?: string;\n \"description\"?: string;\n \"platform\"?: string;\n \"url\"?: string;\n \"generator\"?: string;\n \"app-store-badge\"?: boolean;\n \"key\"?: {\n type: string;\n id: string;\n };\n}\n\ninterface PlatformSection {\n type: string;\n objects: NativeAppObject[];\n}\n","@use \"../common.scss\" as *;\n\n:host {\n display: block;\n block-size: 100%;\n overflow: auto;\n}\n\n.main {\n overflow: auto;\n display: block;\n}\n\n.input-filter {\n inline-size: 33%;\n min-inline-size: 300px;\n}\n\nch-accordion-render {\n inline-size: 100%;\n block-size: 100%;\n}\n\n.accordion-content {\n inline-size: 100%;\n overflow-x: auto;\n min-width: 0;\n}\n\n.web-apps-accordion {\n inline-size: 100%;\n block-size: 100%;\n}\n\n/* WA: Responsive cards with CSS Grid - cards stretch to fill available width */\n.main-objects-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(267px, 1fr));\n gap: var(--spacing-gap-l);\n align-items: stretch;\n}\n\n.object-card {\n inline-size: 100%; // Adapt to grid column width\n @extend %appCard;\n @extend %appCardInteractive;\n border-width: 1px;\n border-style: solid;\n\n &.elevation-1 {\n --elevation-border-color: var(\n --color-accent-surface-elevation-1\n ); // Overwrite elevation border color\n }\n}\n\n.card-header {\n $commonGap: 8px;\n\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n flex-shrink: 0;\n\n .left {\n display: flex;\n flex-direction: column;\n flex: 1;\n gap: $commonGap;\n\n .name {\n color: var(--color-text-neutral-default);\n font-weight: var(--font-style-regular); //WA\n }\n\n .module {\n color: var(--ch-color-text-secondary);\n margin: 0;\n }\n }\n\n .right {\n .type-container {\n display: flex;\n flex-direction: column;\n align-items: flex-end;\n gap: $commonGap;\n }\n }\n\n .type {\n margin: 0;\n color: var(--color-text-neutral-disabled);\n }\n}\n\n.card-footer {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-top: auto;\n padding-top: 12px;\n border-top: 1px solid var(--color-border-surface-on-elevation-1);\n flex-shrink: 0;\n\n .description {\n margin: 0;\n line-height: var(--line-height-relaxed);\n color: var(--color-text-neutral-default);\n }\n\n .angular-icon {\n inline-size: 14px;\n block-size: 14px;\n opacity: 0.8;\n }\n}\n\n.no-results,\n.no-objects {\n color: var(--color-text-neutral-disabled);\n text-align: center;\n padding: 16px;\n}\n\n.recent-objects-grid-container {\n .cell-content {\n display: flex;\n align-items: center;\n gap: var(--spacing-gap-m);\n }\n}\n\n.tabular-grid-scroll-container {\n max-block-size: 400px;\n overflow-y: auto;\n overflow-x: hidden;\n\n // WA: Use thin scrollbar\n scrollbar-width: thin;\n}\n\n/* Override global CSS for vertical layout */\n:host {\n display: block !important;\n}\n\n.header {\n display: block !important;\n inline-size: 100% !important;\n float: none !important;\n clear: both !important;\n}\n\n.field {\n display: block !important;\n inline-size: 100% !important;\n float: none !important;\n clear: both !important;\n}\n\n.main {\n display: block !important;\n inline-size: 100% !important;\n float: none !important;\n clear: both !important;\n}\n","import {\n Component,\n Host,\n Prop,\n Element,\n State,\n h,\n Event,\n EventEmitter,\n Listen,\n getAssetPath\n} from \"@stencil/core\";\n\nimport { getIconPath, MercuryBundles } from \"@genexus/mercury\";\n\nimport { Locale } from \"../../../common/locale\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"components/edit\",\n \"components/accordion\",\n \"components/tabular-grid\",\n \"components/icon\",\n \"chameleon/scrollbar\",\n \"utils/layout\",\n \"utils/form\",\n \"utils/typography\",\n \"utils/spacing\",\n \"utils/elevation\"\n];\nconst ANGULAR_LOGO = getAssetPath(\n \"./gx-ide-assets/launchpad-web-apps/images/angular-logo.svg\"\n);\nconst ACCORDION_RECENT_OBJECTS_ID = \"recent-objects\";\n\nconst COLUMN_NAME = \"name\";\nconst COLUMN_MODULE = \"module\";\nconst COLUMN_TYPE = \"type\";\nconst COLUMN_DESCRIPTION = \"description\";\n\n@Component({\n tag: \"gx-ide-launchpad-web-apps\",\n styleUrl: \"launchpad-web-apps.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/launchpad-web-apps\"]\n})\nexport class GxIdeLaunchpadWebApps {\n #componentLocale: any;\n\n @Element() el: HTMLGxIdeLaunchpadWebAppsElement;\n\n /**\n * Array of types of web objects organized by category\n */\n @Prop() readonly objects: ObjectType[] = [];\n\n /**\n * Callback function for object selection (passed from parent)\n */\n @Prop() onObjectSelected?: (event: any) => void;\n\n /**\n * Event emitted when copying to clipboard\n */\n @Event() copyToClipboard: EventEmitter<{ url: string }>;\n\n /**\n * Filter value for searching objects\n */\n @State() filterValue: string = \"\";\n\n /**\n * State to control if recent objects accordion is expanded\n */\n @State() recentObjectsExpanded: boolean = true;\n\n /**\n * Sorting order for recent objects table\n */\n @State() order: { orderCriteria: string | null; ascending: boolean | null } =\n {\n orderCriteria: null,\n ascending: null\n };\n\n async componentWillLoad() {\n try {\n this.#componentLocale = await Locale.getComponentStrings(this.el);\n } catch (error) {\n console.error(\"Error loading locale:\", error);\n this.#componentLocale = {};\n }\n }\n\n @Listen(\"expandedChange\")\n handleAccordionExpandedChange(e: CustomEvent) {\n if (e.detail.id === ACCORDION_RECENT_OBJECTS_ID) {\n this.recentObjectsExpanded = e.detail.expanded;\n }\n }\n\n /**\n * Filters objects based on search criteria\n */\n #filterObjects(object: WebAppObject): boolean {\n if (!this.filterValue) return true;\n\n const filterV = this.filterValue.toLowerCase();\n return (\n (object.module && object.module.toLowerCase().includes(filterV)) ||\n (object.name && object.name.toLowerCase().includes(filterV)) ||\n (object.type && object.type.toLowerCase().includes(filterV)) ||\n (object.description && object.description.toLowerCase().includes(filterV))\n );\n }\n\n /**\n * Sorts recent objects\n */\n #sortRecentObjects = (a: WebAppObject, b: WebAppObject): number => {\n if (this.order.orderCriteria) {\n const orderCriteriaA =\n this.#getObjectValue(a, this.order.orderCriteria)?.toUpperCase() || \"\";\n const orderCriteriaB =\n this.#getObjectValue(b, this.order.orderCriteria)?.toUpperCase() || \"\";\n if (orderCriteriaA < orderCriteriaB) {\n return this.order.ascending ? -1 : 1;\n }\n if (orderCriteriaA > orderCriteriaB) {\n return this.order.ascending ? 1 : -1;\n }\n }\n return 0;\n };\n\n /**\n * Helper function to safely get object values\n */\n #getObjectValue(obj: WebAppObject, key: string): string {\n switch (key) {\n case \"name\":\n return obj.name || \"\";\n case \"module\":\n return obj.module || \"\";\n case \"type\":\n return obj.type || \"\";\n case \"description\":\n return obj.description || \"\";\n default:\n return \"\";\n }\n }\n\n /**\n * Handles column sort changes\n */\n #handleColumnSortChanged = (e: CustomEvent) => {\n const { columnId, sortDirection } = e.detail;\n this.order = {\n orderCriteria: columnId,\n ascending: sortDirection === \"asc\"\n };\n };\n\n #getObjectTypeIcon(object: WebAppObject): string {\n const iconMap: Record<string, string> = {\n \"36e32e2d-023e-4188-95df-d13573bac2e0:API\": getIconPath({\n category: \"objects\",\n name: \"api\"\n }),\n \"2a9e9aba-d2de-4801-ae7f-5e3819222daf:Data Provider\": getIconPath({\n category: \"objects\",\n name: \"data-provider\"\n }),\n \"9bdcc055-174e-4af6-96cb-a2ceef6c5f09:Menu\": getIconPath({\n category: \"objects\",\n name: \"dashboard\"\n }),\n \"9bdcc055-174e-4af6-96cb-a2ceef6c5f09:Dashboard\": getIconPath({\n category: \"objects\",\n name: \"dashboard\"\n }),\n \"0eee17f4-cef9-4988-aed4-c2da632be85b:Mini App\": getIconPath({\n category: \"objects\",\n name: \"mini-app\"\n }),\n \"d82625fd-5892-40b0-99c9-5c8559c197fc:Panel\": getIconPath({\n category: \"objects\",\n name: \"panel-for-sd\"\n }),\n \"d82625fd-5892-40b0-99c9-5c8559c197fc:SDPanel\": getIconPath({\n category: \"objects\",\n name: \"panel-for-sd\"\n }),\n \"84a12160-f59b-4ad7-a683-ea4481ac23e9:Procedure\": getIconPath({\n category: \"objects\",\n name: \"procedure\"\n }),\n \"a7e6cce5-1171-49e9-a6a0-07f137eedc07:Super App\": getIconPath({\n category: \"objects\",\n name: \"super-app\"\n }),\n \"1db606f2-af09-4cf9-a3b5-b481519d28f6:Transaction\": getIconPath({\n category: \"objects\",\n name: \"transaction\"\n }),\n \"c9584656-94b6-4ccd-890f-332d11fc2c25:Web Panel\": getIconPath({\n category: \"objects\",\n name: \"webpanel\"\n }),\n \"c9584656-94b6-4ccd-890f-332d11fc2c25:WebPanel\": getIconPath({\n category: \"objects\",\n name: \"webpanel\"\n }),\n \"c9584656-94b6-4ccd-890f-332d11fc2c25:Web Component\": getIconPath({\n category: \"objects\",\n name: \"web-component\"\n }),\n \"c9584656-94b6-4ccd-890f-332d11fc2c25:WebComponent\": getIconPath({\n category: \"objects\",\n name: \"web-component\"\n }),\n \"15cf49b5-fc38-4899-91b5-395d02d79889:Work With\": getIconPath({\n category: \"patterns\",\n name: \"workwith-for-sd\"\n }),\n \"15cf49b5-fc38-4899-91b5-395d02d79889:WorkWith\": getIconPath({\n category: \"patterns\",\n name: \"workwith-for-sd\"\n }),\n \"API\": getIconPath({ category: \"objects\", name: \"api\" }),\n \"Data Provider\": getIconPath({\n category: \"objects\",\n name: \"data-provider\"\n }),\n \"Menu\": getIconPath({ category: \"objects\", name: \"dashboard\" }),\n \"Dashboard\": getIconPath({ category: \"objects\", name: \"dashboard\" }),\n \"Mini App\": getIconPath({ category: \"objects\", name: \"mini-app\" }),\n \"Panel\": getIconPath({ category: \"objects\", name: \"panel-for-sd\" }),\n \"SDPanel\": getIconPath({ category: \"objects\", name: \"panel-for-sd\" }),\n \"Procedure\": getIconPath({ category: \"objects\", name: \"procedure\" }),\n \"Super App\": getIconPath({ category: \"objects\", name: \"super-app\" }),\n \"Transaction\": getIconPath({ category: \"objects\", name: \"transaction\" }),\n \"Web Panel\": getIconPath({ category: \"objects\", name: \"webpanel\" }),\n \"WebPanel\": getIconPath({ category: \"objects\", name: \"webpanel\" }),\n \"Web Component\": getIconPath({\n category: \"objects\",\n name: \"web-component\"\n }),\n \"WebComponent\": getIconPath({\n category: \"objects\",\n name: \"web-component\"\n }),\n \"Work With\": getIconPath({\n category: \"patterns\",\n name: \"workwith-for-sd\"\n }),\n \"WorkWith\": getIconPath({ category: \"patterns\", name: \"workwith-for-sd\" })\n };\n\n if (object.key?.type) {\n const fullKey = `${object.key.type}:${object.type}`;\n if (iconMap[fullKey]) {\n return iconMap[fullKey];\n }\n }\n\n if (iconMap[object.type]) {\n return iconMap[object.type];\n }\n\n return getIconPath({ category: \"objects\", name: \"object\" });\n }\n\n /**\n * Handles object click and calls parent callback\n */\n #handleObjectClick(object: WebAppObject) {\n if (object.key && this.onObjectSelected) {\n // Send the full key object as string in format \"type|id\"\n const keyString = `${object.key.type}|${object.key.id}`;\n this.onObjectSelected({ detail: { key: keyString } });\n }\n }\n\n /**\n * Renders main objects section\n */\n #renderMainObjects() {\n const mainObjects =\n this.objects.find(obj => obj.type === \"main\")?.objects || [];\n const filteredObjects = mainObjects.filter(obj => this.#filterObjects(obj));\n\n if (mainObjects.length === 0) {\n return (\n <div class=\"no-results\">\n <p class=\"body-regular-s\">\n {this.#componentLocale?.noMainObjects ||\n \"There are no main objects to display\"}\n </p>\n </div>\n );\n }\n\n if (filteredObjects.length === 0) {\n return (\n <div class=\"no-results\">\n <p class=\"body-regular-s\">\n {this.#componentLocale?.noObjectsMatchSearch}\n </p>\n </div>\n );\n }\n\n return (\n <div class=\"main-objects-grid\">\n {filteredObjects.map((object, index) => (\n <button\n key={index}\n class=\"object-card elevation-1\"\n onClick={() => this.#handleObjectClick(object)}\n >\n <div class=\"card-header\">\n <div class=\"left\">\n <h1 class=\"name body-semi-bold-s\">{object.name}</h1>\n <h3 class=\"module body-regular-xs\">{object.module}</h3>\n <p class=\"type body-italic-xs\">{object.type}</p>\n </div>\n <div class=\"right\">\n <div class=\"type-container\">\n <ch-image\n class=\"type-icon icon-m\"\n src={this.#getObjectTypeIcon(object)}\n />\n </div>\n </div>\n </div>\n {(object.description || object.angular) && (\n <footer class=\"card-footer\">\n <div class=\"left\">\n {object.description && (\n <p class=\"description body-regular-xs\">\n {object.description}\n </p>\n )}\n </div>\n <div class=\"right\">\n {object.angular && (\n <img src={ANGULAR_LOGO} alt=\"Angular Logotype\" />\n )}\n </div>\n </footer>\n )}\n </button>\n ))}\n {\n // WA: Add empty divs to ensure a minimum of 4 grid items for proper layout\n filteredObjects.length < 4 &&\n Array.from({ length: 4 - filteredObjects.length }).map(\n (_, index) => <div key={`empty-${index}`}></div>\n )\n }\n </div>\n );\n }\n\n /**\n * Renders recent objects section\n */\n #renderRecentObjects() {\n const recentObjects =\n this.objects.find(obj => obj.type === \"recent\")?.objects || [];\n const filteredObjects = recentObjects.filter(obj =>\n this.#filterObjects(obj)\n );\n\n if (recentObjects.length === 0) {\n return (\n <div class=\"no-objects\">\n <p class=\"body-regular-s\">{this.#componentLocale?.noRecentObjects}</p>\n </div>\n );\n }\n\n if (filteredObjects.length === 0) {\n return (\n <div class=\"no-objects\">\n <p class=\"body-regular-s\">\n {this.#componentLocale?.noObjectsMatchSearch}\n </p>\n </div>\n );\n }\n\n const sortedObjects = [...filteredObjects].sort(this.#sortRecentObjects);\n\n return (\n <div class=\"recent-objects-grid-container\">\n <div class=\"tabular-grid-scroll-container\">\n <ch-tabular-grid class=\"tabular-grid elevation-2\">\n <ch-tabular-grid-columnset class=\"tabular-grid-column-set\">\n <ch-tabular-grid-column\n class=\"tabular-grid-column\"\n columnId={COLUMN_NAME}\n columnName={this.#componentLocale?.columns?.name || \"Name\"}\n columnNameHidden={false}\n settingable={false}\n sortable\n onColumnSortChanged={this.#handleColumnSortChanged}\n size=\"25%\"\n resizable={false}\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n class=\"tabular-grid-column\"\n columnId={COLUMN_MODULE}\n columnName={this.#componentLocale?.columns?.module || \"Module\"}\n columnNameHidden={false}\n settingable={false}\n sortable\n onColumnSortChanged={this.#handleColumnSortChanged}\n size=\"20%\"\n resizable={false}\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n class=\"tabular-grid-column\"\n columnId={COLUMN_TYPE}\n columnName={this.#componentLocale?.columns?.type || \"Type\"}\n columnNameHidden={false}\n settingable={false}\n sortable\n onColumnSortChanged={this.#handleColumnSortChanged}\n size=\"20%\"\n resizable={false}\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n class=\"tabular-grid-column\"\n columnId={COLUMN_DESCRIPTION}\n columnName={\n this.#componentLocale?.columns?.description || \"Description\"\n }\n columnNameHidden={false}\n settingable={false}\n sortable={false}\n size=\"35%\"\n resizable={false}\n ></ch-tabular-grid-column>\n </ch-tabular-grid-columnset>\n\n <ch-tabular-grid-rowset class=\"tabular-grid-rowset\">\n {sortedObjects.map((obj, index) => (\n <ch-tabular-grid-row\n rowid={obj.key?.id || index.toString()}\n class=\"tabular-grid-row\"\n onClick={() => this.#handleObjectClick(obj)}\n >\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n <div class=\"cell-content\">\n <ch-image\n class=\"object-icon icon-m\"\n src={this.#getObjectTypeIcon(obj)}\n />\n <span class=\"object-name\">{obj.name || \"Unnamed\"}</span>\n </div>\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {obj.module || \"\"}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {obj.type}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {obj.description || \"\"}\n </ch-tabular-grid-cell>\n </ch-tabular-grid-row>\n ))}\n </ch-tabular-grid-rowset>\n </ch-tabular-grid>\n </div>\n </div>\n );\n }\n\n render() {\n if (!this.objects || this.objects.length === 0) {\n return (\n <Host>\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <div class=\"no-data\">\n <p class=\"body-regular-s\">\n {this.#componentLocale?.noData ||\n \"No web applications data available\"}\n </p>\n </div>\n </Host>\n );\n }\n\n return (\n <Host>\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n\n <header class=\"header dialog-header\">\n <div class=\"field field-block\">\n <ch-edit\n class=\"input input-filter\"\n id=\"filter\"\n placeholder={this.#componentLocale?.search || \"Search\"}\n value={this.filterValue}\n accessibleName={this.#componentLocale?.search || \"Search\"}\n onInput={e => (this.filterValue = String(e.detail))}\n />\n </div>\n </header>\n\n <div class=\"main\">\n <ch-accordion-render\n class=\"accordion-filled-header elevation-1 web-apps-accordion\"\n model={[\n {\n id: \"main-objects\",\n caption: \"Main Objects\",\n expanded: true\n },\n {\n id: ACCORDION_RECENT_OBJECTS_ID,\n caption: \"Recent Objects\",\n expanded: this.recentObjectsExpanded\n }\n ]}\n >\n <div slot=\"main-objects\" class=\"accordion-content spacing-body\">\n {this.#renderMainObjects()}\n </div>\n <div\n slot={ACCORDION_RECENT_OBJECTS_ID}\n class=\"accordion-content spacing-body\"\n >\n {this.#renderRecentObjects()}\n </div>\n </ch-accordion-render>\n </div>\n </Host>\n );\n }\n}\n\ninterface WebAppObject {\n name: string;\n module: string;\n type: string;\n description?: string;\n url?: string;\n key?: {\n type: string;\n id: string;\n };\n angular?: boolean;\n}\n\ninterface ObjectType {\n type: \"main\" | \"recent\";\n objects: WebAppObject[];\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"names":["convertActionToTreeViewItem","operations","treeData","forEach","operation","importCategoryTreeItem","id","caption","name","expanded","leaf","checkbox","push","openApiImportCss","CSS_BUNDLES","FILE_ICON","getIconPath","category","colorType","MENU_DELETE","CHECKBOX_ALL_CHECKED_VALUE","CHECKBOX_ALL_UNCHECKED_VALUE","GxIdeOpenAPIImport","_GxIdeOpenAPIImport__componentLocale","set","this","_GxIdeOpenAPIImport_renderedFirstTime","_GxIdeOpenAPIImport_shortcutsSrc","getAssetPath","_GxIdeOpenAPIImport_chShortcutsEl","_GxIdeOpenAPIImport_fileInputHiddenEl","_GxIdeOpenAPIImport_parentEl","_GxIdeOpenAPIImport_objectsTreeEl","_GxIdeOpenAPIImport_cancelImportHandler","cancelCallback","_GxIdeOpenAPIImport_handleImport","async","importCallback","selectedOperations","_GxIdeOpenAPIImport_objectsTreeCheckedItemsChangedHandler","event","detail","size","allItems","checkedItems","values","filter","node","item","checked","map","length","selectAllCheckboxValue","selectAllCheckboxIndeterminate","_GxIdeOpenAPIImport_handleSelectAll","__classPrivateFieldGet","updateAllItemsProperties","op","_GxIdeOpenAPIImport_objectTreeClickedHandler","selectedOperationForDescription","_a","description","_GxIdeOpenAPIImport_removeFileSelection","selectedFile","value","actionListItems","_GxIdeOpenAPIImport_selectFileInputChangedHandler","target","files","loadCallback","_GxIdeOpenAPIImport_selectFileInputHandler","click","_GxIdeOpenAPIImport_renderFooter","h","class","checkedValue","unCheckedValue","main","selectAll","indeterminate","onInput","disabled","importingIsInProcess","part","slot","onClick","footer","cancel","import","componentDidRender","componentDidRenderFirstTime","emit","componentName","__classPrivateFieldSet","componentWillLoad","Locale","getComponentStrings","el","suspendShortcuts","suspend","render","Host","model","src","ref","role","htmlFor","header","fileNameLabel","autoFocus","type","readonly","placeholder","fileNamePlaceholder","startImgSrc","hidden","accept","onChange","removeFileSelection","title","selectFileButton","moduleFolderLabel","defaultParent","defaultValue","selectEntityCallback","selectParentCallback","labelPosition","onCheckedItemsChange","onSelectedItemsChange","procedureDescription","call"],"sources":["src/components/open-api-import/helpers.ts","src/components/open-api-import/open-api-import.scss?tag=gx-ide-open-api-import&encapsulation=shadow","src/components/open-api-import/open-api-import.tsx"],"sourcesContent":["import { ApiOperationData } from \"./open-api-import\";\nimport { TreeViewItemModel } from \"@genexus/chameleon-controls-library\";\n\nexport const convertActionToTreeViewItem = (\n operations: ApiOperationData[]\n): TreeViewItemModel[] => {\n const treeData: TreeViewItemModel[] = [];\n if (!operations) {\n return treeData;\n }\n operations.forEach(operation => {\n const importCategoryTreeItem: TreeViewItemModel = {\n id: operation.id,\n caption: `${operation.name}`,\n expanded: true,\n leaf: true,\n checkbox: true\n };\n treeData.push(importCategoryTreeItem);\n });\n return treeData;\n};\n","section {\n display: grid;\n block-size: 100%;\n grid-template-rows: max-content 1fr max-content;\n}\n\n.main {\n position: relative;\n display: contents;\n}\n\n.input-file {\n display: flex;\n}\n\n.field {\n width: 100%;\n}\n\n.dialog-header__operations,\n.dialog-header__description {\n padding-block-start: 16px;\n}\n\n.header__field-group {\n grid-template:\n \"import-file-label import-file-name buttons-container\" max-content\n \"module-folder-label module-folder module-folder\" max-content\n / max-content 1fr max-content;\n}\n.module-folder-name {\n grid-area: module-folder;\n}\n.module-folder-label {\n grid-area: module-folder-label;\n}\n.import-file-label {\n grid-area: import-file-label;\n}\n\n.header__buttons-container {\n grid-area: buttons-container;\n}\n\n.section-grid {\n display: grid;\n grid-template:\n \"top-content-operations top-content-description\" max-content\n \"operations-area operations-description\" 1fr\n / 1fr 1fr;\n background-color: var(--items-container__bg-color);\n border-style: var(--items-container__border-style);\n border-width: var(--items-container__border-width);\n border-color: var(--items-container__border-color);\n border-block-start: 0;\n overflow-y: auto;\n}\n\n.list-wrapper {\n grid-area: operations-area;\n border-inline-end: var(--section-common-border);\n}\n.label {\n margin-block-start: 8px !important;\n}\n\n.tree-operations::part(item__header) {\n // WA Since this is a tree without parent node.\n // This componnent should ideally by an action-list,\n // but at the time of writting it doesn't support checkboxes.\n padding-inline-start: 0;\n}\n\n.procedure-description {\n grid-area: operations-description;\n overflow: auto;\n text-align: justify;\n}\n\n.dialog-header__operations {\n grid-area: top-content-operations;\n background-color: var(--items-container__bg-color);\n}\n\n.dialog-header__description {\n grid-area: top-content-description;\n background-color: var(--items-container__bg-color);\n}\n.text-align-center {\n text-align: center;\n}\n","/* STENCIL IMPORTS */\nimport {\n Component,\n Host,\n h,\n Prop,\n Element,\n Event,\n EventEmitter,\n State,\n getAssetPath,\n Method\n} from \"@stencil/core\";\n/* OTHER LIBRARIES IMPORTS */\n/* CUSTOM IMPORTS */\nimport { Locale } from \"../../common/locale\";\nimport { EntityData } from \"../../common/types\";\nimport { getIconPath, MercuryBundles } from \"@genexus/mercury\";\nimport {\n TreeViewItemModel,\n TreeViewItemModelExtended,\n ChCheckboxCustomEvent\n} from \"@genexus/chameleon-controls-library\";\nimport { convertActionToTreeViewItem } from \"./helpers\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"components/button\",\n \"components/checkbox\",\n \"components/edit\",\n \"components/icon\",\n \"components/tree-view\",\n \"components/list-box\",\n \"utils/form\",\n \"utils/layout\",\n \"utils/spacing\",\n \"utils/typography\"\n];\n\nconst FILE_ICON = getIconPath({\n category: \"gemini-tools\",\n name: \"file\",\n colorType: \"on-surface\"\n});\n\nconst MENU_DELETE = getIconPath({\n category: \"menus\",\n name: \"delete\",\n colorType: \"primary\"\n});\n\nconst CHECKBOX_ALL_CHECKED_VALUE = \"allChecked\";\nconst CHECKBOX_ALL_UNCHECKED_VALUE = \"allUnchecked\";\n\n@Component({\n tag: \"gx-ide-open-api-import\",\n styleUrl: \"open-api-import.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/open-api-import\"]\n})\nexport class GxIdeOpenAPIImport {\n #_componentLocale: any;\n #renderedFirstTime = false;\n #shortcutsSrc = getAssetPath(`./gx-ide-assets/new-object/shortcuts.json`);\n\n @Element() el: HTMLGxIdeOpenApiImportElement;\n\n #chShortcutsEl: HTMLChShortcutsElement;\n #fileInputHiddenEl!: HTMLInputElement;\n #parentEl!: HTMLGxIdeEntitySelectorElement;\n\n @State() actionListItems: TreeViewItemModel[] = [];\n @State() importingIsInProcess = false;\n @State() operations: ApiOperationData[] = [];\n @State() selectedFile: File;\n @State() selectedOperationForDescription: string;\n @State() selectedOperations: string[] = [];\n @State() selectAllCheckboxValue: string;\n @State() selectAllCheckboxIndeterminate: boolean = false;\n\n /**\n * Default value for the Module/Folder field.\n */\n @Prop() readonly defaultParent: EntityData;\n\n /**\n * If true it displays the component title on the header\n */\n @Prop() readonly displayTitle = false;\n\n /**\n * Callback invoked when the user wants to cancel the export process.\n */\n @Prop() readonly cancelCallback: CancelCallback;\n\n /**\n * Callback invoked when the user wants to initiate the import process.\n */\n @Prop() readonly importCallback: ImportCallback;\n\n /**\n * Callback invoked must be loaded the content for an specification API\n */\n @Prop() readonly loadCallback: LoadCallback;\n\n /**\n * Callback invoked when action is executed on Module/Folder filter (button '...').\n */\n @Prop() readonly selectParentCallback: SelectParentCallback;\n\n /**\n * @description Gets fired when the component has rendered for the first time.\n */\n @Event() componentDidRenderFirstTime: EventEmitter<string>;\n\n #objectsTreeEl!: HTMLChTreeViewRenderElement;\n\n componentDidRender() {\n if (!this.#renderedFirstTime) {\n this.componentDidRenderFirstTime.emit(\n this.#_componentLocale.componentName\n );\n this.#renderedFirstTime = true;\n }\n }\n\n async componentWillLoad() {\n this.#_componentLocale = await Locale.getComponentStrings(this.el);\n }\n\n /**\n * Suspends or reactivates the shortcuts\n */\n @Method()\n async suspendShortcuts(suspendShortcuts: boolean) {\n if (suspendShortcuts) {\n this.#chShortcutsEl.suspend = true;\n } else {\n this.#chShortcutsEl.suspend = false;\n }\n }\n\n // 9.LOCAL METHODS //\n #cancelImportHandler = () => {\n if (this.cancelCallback) {\n this.cancelCallback();\n }\n };\n\n #handleImport = async () => {\n await this.importCallback(this.selectedOperations);\n };\n\n #objectsTreeCheckedItemsChangedHandler = (\n event: CustomEvent<Map<string, TreeViewItemModelExtended>>\n ) => {\n if (event.detail.size === 0) {\n return;\n }\n const allItems = event.detail;\n const checkedItems = [...allItems.values()].filter(\n node => node.item.checked\n );\n this.selectedOperations = checkedItems.map(item => item.item.id);\n\n // Evaluate \"Select All\" checkbox state (siguiendo el patrón de kb-manager-import)\n if (allItems.size === checkedItems.length) {\n this.selectAllCheckboxValue = CHECKBOX_ALL_CHECKED_VALUE;\n this.selectAllCheckboxIndeterminate = false;\n } else if (checkedItems.length === 0) {\n this.selectAllCheckboxValue = CHECKBOX_ALL_UNCHECKED_VALUE;\n this.selectAllCheckboxIndeterminate = false;\n } else {\n this.selectAllCheckboxIndeterminate = true;\n }\n };\n\n #handleSelectAll = (event: ChCheckboxCustomEvent<string> | InputEvent) => {\n if (\"detail\" in event && this.#objectsTreeEl) {\n const checked =\n (event as ChCheckboxCustomEvent<string>).detail ===\n CHECKBOX_ALL_CHECKED_VALUE;\n // Usar updateAllItemsProperties como en kb-manager-import\n this.#objectsTreeEl.updateAllItemsProperties({ checked: checked });\n this.selectedOperations = checked ? this.operations.map(op => op.id) : [];\n this.selectAllCheckboxValue = checked\n ? CHECKBOX_ALL_CHECKED_VALUE\n : CHECKBOX_ALL_UNCHECKED_VALUE;\n this.selectAllCheckboxIndeterminate = false;\n }\n };\n\n #objectTreeClickedHandler = (\n event: CustomEvent<TreeViewItemModelExtended[]>\n ) => {\n this.selectedOperationForDescription = this.operations.filter(\n op => op.id === event.detail[0]?.item.id\n )[0]?.description;\n };\n\n #removeFileSelection = () => {\n this.selectedFile = null;\n this.#fileInputHiddenEl.value = null;\n this.operations = [];\n this.actionListItems = [];\n this.selectedOperationForDescription = null;\n };\n\n #selectFileInputChangedHandler = async (event: InputEvent) => {\n const target = event.target as HTMLInputElement;\n if (target.files?.length > 0) {\n this.selectedFile = target.files[0];\n this.operations = await this.loadCallback(\n this.selectedFile,\n this.#parentEl.value.id\n );\n this.actionListItems = convertActionToTreeViewItem(this.operations);\n }\n };\n\n #selectFileInputHandler = () => {\n this.#fileInputHiddenEl.click();\n };\n\n #renderFooter = (): HTMLElement => {\n return (\n <footer class=\"dialog-footer dialog-footer-space-between spacing-body-block-end spacing-body-inline\">\n <div class=\"buttons-spacer\">\n <ch-checkbox\n id=\"select-all-checkbox\"\n class=\"checkbox\"\n checkedValue={CHECKBOX_ALL_CHECKED_VALUE}\n unCheckedValue={CHECKBOX_ALL_UNCHECKED_VALUE}\n caption={this.#_componentLocale.main.selectAll}\n value={this.selectAllCheckboxValue}\n indeterminate={this.selectAllCheckboxIndeterminate}\n onInput={this.#handleSelectAll}\n disabled={this.importingIsInProcess || !this.operations?.length}\n part=\"select-all-checkbox\"\n ></ch-checkbox>\n </div>\n <div class=\"buttons-spacer\">\n <button\n class=\"button-secondary\"\n slot=\"footer-end\"\n part=\"button-cancel\"\n onClick={this.#cancelImportHandler}\n >\n {this.#_componentLocale.footer.cancel}\n </button>\n\n <button\n class=\"button-primary\"\n slot=\"footer-end\"\n part=\"button-confirm\"\n onClick={this.#handleImport}\n >\n {this.#_componentLocale.footer.import}\n </button>\n </div>\n </footer>\n );\n };\n\n render() {\n return (\n <Host class=\"widget\">\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <ch-shortcuts\n src={this.#shortcutsSrc}\n ref={(el: HTMLChShortcutsElement) =>\n (this.#chShortcutsEl = el as HTMLChShortcutsElement)\n }\n ></ch-shortcuts>\n <section>\n <header\n class=\"header dialog-header-with-border space-body spacing-body-inline spacing-body-block-start\"\n role=\"banner\"\n >\n <div class=\"field-group header__field-group\">\n <div class=\"import-file-label\">\n <div class=\"field field-block\">\n <label class=\"label\" htmlFor=\"file-name\">\n {this.#_componentLocale.header.fileNameLabel}\n </label>\n </div>\n </div>\n <div class=\"input-file\">\n <div class=\"field input-file\">\n <ch-edit\n autoFocus\n id=\"file-name\"\n class=\"input file\"\n part=\"file-name\"\n type=\"text\"\n readonly\n value={this.selectedFile?.name}\n placeholder={\n this.#_componentLocale.header.fileNamePlaceholder\n }\n startImgSrc={FILE_ICON}\n ></ch-edit>\n <input\n hidden\n type=\"file\"\n accept=\".json, .yaml\"\n onChange={this.#selectFileInputChangedHandler}\n ref={(el: HTMLInputElement) =>\n (this.#fileInputHiddenEl = el as HTMLInputElement)\n }\n />\n </div>\n <div class=\"cancel-btn \">\n <button\n aria-label={\n this.#_componentLocale.header.removeFileSelection\n }\n title={this.#_componentLocale.header.removeFileSelection}\n id=\"reset-all-button\"\n class=\"button-tertiary button-icon-only\"\n part=\"reset-all-button\"\n onClick={this.#removeFileSelection}\n >\n <ch-image class=\"icon-m\" src={MENU_DELETE}></ch-image>\n </button>\n </div>\n </div>\n\n <div class=\"header__buttons-container\">\n <button\n id=\"select-file-load-button\"\n class=\"button-primary\"\n part=\"select-file-load-button\"\n onClick={this.#selectFileInputHandler}\n disabled={this.importingIsInProcess}\n >\n {this.#_componentLocale.header.selectFileButton}\n </button>\n </div>\n <div class=\"module-folder-label\">\n <div class=\"field field-block\">\n <label class=\"label\">\n {this.#_componentLocale.header.moduleFolderLabel}\n </label>\n </div>\n </div>\n <div class=\"field module-folder-name \">\n <gx-ide-entity-selector\n value={this.defaultParent}\n defaultValue={this.defaultParent}\n selectEntityCallback={this.selectParentCallback}\n labelPosition=\"none\"\n ref={(el: HTMLGxIdeEntitySelectorElement) =>\n (this.#parentEl = el as HTMLGxIdeEntitySelectorElement)\n }\n class=\"module-folder\"\n ></gx-ide-entity-selector>\n </div>\n </div>\n </header>\n\n <main class=\"main\">\n <div class=\"section-grid\">\n <h2\n id=\"operations-title\"\n class=\"dialog-header dialog-header-with-border dialog-header__operations subtitle-regular-xs text-align-center spacing-body-inline\"\n >\n {this.#_componentLocale.main.operations}\n </h2>\n\n <div\n class=\"list-wrapper field-group spacing-body-block-start spacing-body-inline scrollable\"\n role=\"region\"\n aria-labelledby=\"operations-title\"\n >\n <ch-tree-view-render\n class=\"tree-view tree-operations\"\n model={this.actionListItems}\n show-lines=\"last\"\n onCheckedItemsChange={\n this.#objectsTreeCheckedItemsChangedHandler\n }\n onSelectedItemsChange={this.#objectTreeClickedHandler}\n ref={(el: HTMLChTreeViewRenderElement) =>\n (this.#objectsTreeEl = el as HTMLChTreeViewRenderElement)\n }\n ></ch-tree-view-render>\n </div>\n\n <h2\n id=\"description-title\"\n class=\"dialog-header dialog-header-with-border dialog-header__description subtitle-regular-xs text-align-center spacing-body-inline\"\n >\n {this.#_componentLocale.main.procedureDescription}\n </h2>\n\n <div\n class=\"procedure-description field-group spacing-body-block-start spacing-body-inline scrollable\"\n role=\"region\"\n aria-labelledby=\"description-title\"\n >\n {this.selectedOperationForDescription}\n </div>\n </div>\n </main>\n {this.#renderFooter()}\n </section>\n </Host>\n );\n }\n}\n\nexport type ApiOperationData = {\n id: string;\n name: string;\n description: string;\n};\nexport type SelectionEventDetail = {\n itemId: string;\n itemValue: string;\n};\n\nexport type CancelCallback = () => Promise<void>;\nexport type ImportCallback = (operationIds: string[]) => Promise<boolean>;\nexport type SelectParentCallback = () => Promise<EntityData | undefined>;\nexport type LoadCallback = (\n source: string | File,\n parentId: string\n) => Promise<ApiOperationData[]>;\n"],"mappings":";;;;;;;;;;;;;;AAGO,MAAMA,8BACXC;EAEA,MAAMC,IAAgC;EACtC,KAAKD,GAAY;IACf,OAAOC;;EAETD,EAAWE,SAAQC;IACjB,MAAMC,IAA4C;MAChDC,IAAIF,EAAUE;MACdC,SAAS,GAAGH,EAAUI;MACtBC,UAAU;MACVC,MAAM;MACNC,UAAU;;IAEZT,EAASU,KAAKP;AAAuB;EAEvC,OAAOH;AAAQ;;ACpBjB,MAAMW,IAAmB;;;;;;;;;;;;;;;;;ACyBzB,MAAMC,IAA8B,EAClC,qBACA,qBACA,uBACA,mBACA,mBACA,wBACA,uBACA,cACA,gBACA,iBACA;;AAGF,MAAMC,IAAYC,EAAY;EAC5BC,UAAU;EACVT,MAAM;EACNU,WAAW;;;AAGb,MAAMC,IAAcH,EAAY;EAC9BC,UAAU;EACVT,MAAM;EACNU,WAAW;;;AAGb,MAAME,IAA6B;;AACnC,MAAMC,IAA+B;;MAQxBC,IAAkB;;;;IAC7BC,EAAAC,IAAAC,WAAA;IACAC,EAAAF,IAAAC,MAAqB;IACrBE,EAAAH,IAAAC,MAAgBG,EAAa;IAI7BC,EAAAL,IAAAC,WAAA;IACAK,EAAAN,IAAAC,WAAA;IACAM,EAAAP,IAAAC,WAAA;IA8CAO,EAAAR,IAAAC,WAAA;;QA4BAQ,EAAAT,IAAAC,OAAuB;MACrB,IAAIA,KAAKS,gBAAgB;QACvBT,KAAKS;;;IAITC,EAAAX,IAAAC,OAAgBW;YACRX,KAAKY,eAAeZ,KAAKa;AAAmB;IAGpDC,EAAAf,IAAAC,OACEe;MAEA,IAAIA,EAAMC,OAAOC,SAAS,GAAG;QAC3B;;MAEF,MAAMC,IAAWH,EAAMC;MACvB,MAAMG,IAAe,KAAID,EAASE,WAAUC,QAC1CC,KAAQA,EAAKC,KAAKC;MAEpBxB,KAAKa,qBAAqBM,EAAaM,KAAIF,KAAQA,EAAKA,KAAK1C;;YAG7D,IAAIqC,EAASD,SAASE,EAAaO,QAAQ;QACzC1B,KAAK2B,yBAAyBhC;QAC9BK,KAAK4B,iCAAiC;aACjC,IAAIT,EAAaO,WAAW,GAAG;QACpC1B,KAAK2B,yBAAyB/B;QAC9BI,KAAK4B,iCAAiC;aACjC;QACL5B,KAAK4B,iCAAiC;;;IAI1CC,EAAA9B,IAAAC,OAAoBe;MAClB,IAAI,YAAYA,KAASe,EAAA9B,MAAIO,GAAA,MAAiB;QAC5C,MAAMiB,IACHT,EAAwCC,WACzCrB;;gBAEFmC,EAAA9B,MAAIO,GAAA,KAAgBwB,yBAAyB;UAAEP,SAASA;;QACxDxB,KAAKa,qBAAqBW,IAAUxB,KAAKxB,WAAWiD,KAAIO,KAAMA,EAAGnD,OAAM;QACvEmB,KAAK2B,yBAAyBH,IAC1B7B,IACAC;QACJI,KAAK4B,iCAAiC;;;IAI1CK,EAAAlC,IAAAC,OACEe;;MAEAf,KAAKkC,mCAAkCC,IAAAnC,KAAKxB,WAAW6C,QACrDW;QAAE,IAAAG;QAAI,OAAAH,EAAGnD,SAAOsD,IAAApB,EAAMC,OAAO,QAAE,QAAAmB,WAAA,aAAAA,EAAEZ,KAAK1C;AAAE,UACxC,QAAE,QAAAsD,WAAA,aAAAA,EAAEC;AAAW;IAGnBC,EAAAtC,IAAAC,OAAuB;MACrBA,KAAKsC,eAAe;MACpBR,EAAA9B,MAAIK,GAAA,KAAoBkC,QAAQ;MAChCvC,KAAKxB,aAAa;MAClBwB,KAAKwC,kBAAkB;MACvBxC,KAAKkC,kCAAkC;AAAI;IAG7CO,EAAA1C,IAAAC,OAAiCW,MAAOI;;MACtC,MAAM2B,IAAS3B,EAAM2B;MACrB,MAAIP,IAAAO,EAAOC,WAAK,QAAAR,WAAA,aAAAA,EAAET,UAAS,GAAG;QAC5B1B,KAAKsC,eAAeI,EAAOC,MAAM;QACjC3C,KAAKxB,mBAAmBwB,KAAK4C,aAC3B5C,KAAKsC,cACLR,EAAA9B,MAAIM,GAAA,KAAWiC,MAAM1D;QAEvBmB,KAAKwC,kBAAkBjE,4BAA4ByB,KAAKxB;;;IAI5DqE,EAAA9C,IAAAC,OAA0B;MACxB8B,EAAA9B,MAAIK,GAAA,KAAoByC;AAAO;IAGjCC,EAAAhD,IAAAC,OAAgB;;MACd,OACEgD,EAAA;QAAQC,OAAM;SACZD,EAAA;QAAKC,OAAM;SACTD,EAAA;QACEnE,IAAG;QACHoE,OAAM;QACNC,cAAcvD;QACdwD,gBAAgBvD;QAChBd,SAASgD,EAAA9B,MAAIF,GAAA,KAAmBsD,KAAKC;QACrCd,OAAOvC,KAAK2B;QACZ2B,eAAetD,KAAK4B;QACpB2B,SAASzB,EAAA9B,MAAI6B,GAAA;QACb2B,UAAUxD,KAAKyD,2BAAyBtB,IAAAnC,KAAKxB,gBAAU,QAAA2D,WAAA,aAAAA,EAAET;QACzDgC,MAAK;WAGTV,EAAA;QAAKC,OAAM;SACTD,EAAA;QACEC,OAAM;QACNU,MAAK;QACLD,MAAK;QACLE,SAAS9B,EAAA9B,MAAIQ,GAAA;SAEZsB,EAAA9B,MAAIF,GAAA,KAAmB+D,OAAOC,SAGjCd,EAAA;QACEC,OAAM;QACNU,MAAK;QACLD,MAAK;QACLE,SAAS9B,EAAA9B,MAAIU,GAAA;SAEZoB,EAAA9B,MAAIF,GAAA,KAAmB+D,OAAOE;AAG5B;2BA7LmC;gCAChB;sBACU;;;8BAGF;;0CAEW;;wBAUnB;;;;;;EA6BhC,kBAAAC;IACE,KAAKlC,EAAA9B,MAAIC,GAAA,MAAqB;MAC5BD,KAAKiE,4BAA4BC,KAC/BpC,EAAA9B,MAAIF,GAAA,KAAmBqE;MAEzBC,EAAApE,MAAIC,GAAsB,MAAI;;;EAIlC,uBAAMoE;IACJD,EAAApE,MAAIF,SAA2BwE,EAAOC,oBAAoBvE,KAAKwE,KAAG;;;;SAOpE,sBAAMC,CAAiBA;IACrB,IAAIA,GAAkB;MACpB3C,EAAA9B,MAAII,GAAA,KAAgBsE,UAAU;WACzB;MACL5C,EAAA9B,MAAII,GAAA,KAAgBsE,UAAU;;;EA8HlC,MAAAC;;IACE,OACE3B,EAAC4B,GAAI;MAAC3B,OAAM;OACVD,EAAA;MAAU6B,OAAOxF;QACjB2D,EAAA;MACE8B,KAAKhD,EAAA9B,MAAIE,GAAA;MACT6E,KAAMP,KACHJ,EAAApE,MAAII,GAAkBoE,GAA4B;QAGvDxB,EAAA,iBACEA,EAAA;MACEC,OAAM;MACN+B,MAAK;OAELhC,EAAA;MAAKC,OAAM;OACTD,EAAA;MAAKC,OAAM;OACTD,EAAA;MAAKC,OAAM;OACTD,EAAA;MAAOC,OAAM;MAAQgC,SAAQ;OAC1BnD,EAAA9B,MAAIF,GAAA,KAAmBoF,OAAOC,kBAIrCnC,EAAA;MAAKC,OAAM;OACTD,EAAA;MAAKC,OAAM;OACTD,EAAA;MACEoC,WAAS;MACTvG,IAAG;MACHoE,OAAM;MACNS,MAAK;MACL2B,MAAK;MACLC,UAAQ;MACR/C,QAAOJ,IAAAnC,KAAKsC,kBAAY,QAAAH,WAAA,aAAAA,EAAEpD;MAC1BwG,aACEzD,EAAA9B,MAAIF,GAAA,KAAmBoF,OAAOM;MAEhCC,aAAanG;QAEf0D,EAAA;MACE0C,QAAM;MACNL,MAAK;MACLM,QAAO;MACPC,UAAU9D,EAAA9B,MAAIyC,GAAA;MACdsC,KAAMP,KACHJ,EAAApE,MAAIK,GAAsBmE,GAAsB;SAIvDxB,EAAA;MAAKC,OAAM;OACTD,EAAA;MAAA,cAEIlB,EAAA9B,MAAIF,GAAA,KAAmBoF,OAAOW;MAEhCC,OAAOhE,EAAA9B,MAAIF,GAAA,KAAmBoF,OAAOW;MACrChH,IAAG;MACHoE,OAAM;MACNS,MAAK;MACLE,SAAS9B,EAAA9B,MAAIqC,GAAA;OAEbW,EAAA;MAAUC,OAAM;MAAS6B,KAAKpF;WAKpCsD,EAAA;MAAKC,OAAM;OACTD,EAAA;MACEnE,IAAG;MACHoE,OAAM;MACNS,MAAK;MACLE,SAAS9B,EAAA9B,MAAI6C,GAAA;MACbW,UAAUxD,KAAKyD;OAEd3B,EAAA9B,MAAIF,GAAA,KAAmBoF,OAAOa,oBAGnC/C,EAAA;MAAKC,OAAM;OACTD,EAAA;MAAKC,OAAM;OACTD,EAAA;MAAOC,OAAM;OACVnB,EAAA9B,MAAIF,GAAA,KAAmBoF,OAAOc,sBAIrChD,EAAA;MAAKC,OAAM;OACTD,EAAA;MACET,OAAOvC,KAAKiG;MACZC,cAAclG,KAAKiG;MACnBE,sBAAsBnG,KAAKoG;MAC3BC,eAAc;MACdtB,KAAMP,KACHJ,EAAApE,MAAIM,GAAakE,GAAoC;MAExDvB,OAAM;WAMdD,EAAA;MAAMC,OAAM;OACVD,EAAA;MAAKC,OAAM;OACTD,EAAA;MACEnE,IAAG;MACHoE,OAAM;OAELnB,EAAA9B,MAAIF,GAAA,KAAmBsD,KAAK5E,aAG/BwE,EAAA;MACEC,OAAM;MACN+B,MAAK;MAAQ,mBACG;OAEhBhC,EAAA;MACEC,OAAM;MACN4B,OAAO7E,KAAKwC;MAAe,cAChB;MACX8D,sBACExE,EAAA9B,MAAIc,GAAA;MAENyF,uBAAuBzE,EAAA9B,MAAIiC,GAAA;MAC3B8C,KAAMP,KACHJ,EAAApE,MAAIO,GAAkBiE,GAAiC;SAK9DxB,EAAA;MACEnE,IAAG;MACHoE,OAAM;OAELnB,EAAA9B,MAAIF,GAAA,KAAmBsD,KAAKoD,uBAG/BxD,EAAA;MACEC,OAAM;MACN+B,MAAK;MAAQ,mBACG;OAEfhF,KAAKkC,oCAIXJ,EAAA9B,MAAI+C,GAAA,KAAc0D,KAAlBzG"}