@genexus/genexus-ide-ui 1.0.18 → 1.0.19

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 (236) hide show
  1. package/dist/cjs/{assets-manager-4b67360e.js → assets-manager-a318866f.js} +31 -31
  2. package/dist/cjs/{assets-manager-4b67360e.js.map → assets-manager-a318866f.js.map} +1 -1
  3. package/dist/cjs/genexus-ide-ui.cjs.js +1 -1
  4. package/dist/cjs/gx-ide-ai-message.cjs.entry.js +2 -2
  5. package/dist/cjs/gx-ide-ai-message.cjs.entry.js.map +1 -1
  6. package/dist/cjs/gx-ide-dashboard-home.cjs.entry.js +2 -2
  7. package/dist/cjs/gx-ide-data-selector.cjs.entry.js +3 -2
  8. package/dist/cjs/gx-ide-data-selector.cjs.entry.js.map +1 -1
  9. package/dist/cjs/gx-ide-entity-selector.cjs.entry.js +3 -3
  10. package/dist/cjs/gx-ide-entity-selector.cjs.entry.js.map +1 -1
  11. package/dist/cjs/gx-ide-kb-manager-export.cjs.entry.js +7 -4
  12. package/dist/cjs/gx-ide-kb-manager-export.cjs.entry.js.map +1 -1
  13. package/dist/cjs/gx-ide-kb-manager-import.cjs.entry.js +1 -1
  14. package/dist/cjs/gx-ide-list-selector_2.cjs.entry.js +4 -27
  15. package/dist/cjs/gx-ide-list-selector_2.cjs.entry.js.map +1 -1
  16. package/dist/cjs/gx-ide-manage-module-references-v2.cjs.entry.js +1 -1
  17. package/dist/cjs/gx-ide-manage-module-references.cjs.entry.js +1 -1
  18. package/dist/cjs/gx-ide-navigation-report.cjs.entry.js +228 -0
  19. package/dist/cjs/gx-ide-navigation-report.cjs.entry.js.map +1 -0
  20. package/dist/cjs/gx-ide-new-environment.cjs.entry.js +3 -2
  21. package/dist/cjs/gx-ide-new-environment.cjs.entry.js.map +1 -1
  22. package/dist/cjs/gx-ide-new-kb.cjs.entry.js +8 -7
  23. package/dist/cjs/gx-ide-new-kb.cjs.entry.js.map +1 -1
  24. package/dist/cjs/gx-ide-new-object.cjs.entry.js +4 -3
  25. package/dist/cjs/gx-ide-new-object.cjs.entry.js.map +1 -1
  26. package/dist/cjs/gx-ide-object-selector.cjs.entry.js +7 -6
  27. package/dist/cjs/gx-ide-object-selector.cjs.entry.js.map +1 -1
  28. package/dist/cjs/gx-ide-recent-news.cjs.entry.js +3 -3
  29. package/dist/cjs/gx-ide-recent-news.cjs.entry.js.map +1 -1
  30. package/dist/cjs/gx-ide-start-page.cjs.entry.js +4 -4
  31. package/dist/cjs/gx-ide-start-page.cjs.entry.js.map +1 -1
  32. package/dist/cjs/gx-ide-status-buttons.cjs.entry.js +35 -17
  33. package/dist/cjs/gx-ide-status-buttons.cjs.entry.js.map +1 -1
  34. package/dist/cjs/gx-ide-team-dev-commit.cjs.entry.js +1 -1
  35. package/dist/cjs/gx-ide-team-dev-update.cjs.entry.js +1 -1
  36. package/dist/cjs/gx-ide-ww-images.cjs.entry.js +396 -279
  37. package/dist/cjs/gx-ide-ww-images.cjs.entry.js.map +1 -1
  38. package/dist/cjs/{helpers-b5b4a659.js → helpers-19194a5a.js} +1 -7
  39. package/dist/{genexus-ide-ui/p-c339f703.js.map → cjs/helpers-19194a5a.js.map} +1 -1
  40. package/dist/cjs/loader.cjs.js +1 -1
  41. package/dist/collection/collection-manifest.json +1 -0
  42. package/dist/collection/components/_helpers/entity-selector/entity-selector.css +2 -2
  43. package/dist/collection/components/_helpers/entity-selector/entity-selector.js +1 -1
  44. package/dist/collection/components/_helpers/entity-selector/entity-selector.js.map +1 -1
  45. package/dist/collection/components/_helpers/list-selector/list-selector-item/list-selector-item.css +19 -332
  46. package/dist/collection/components/_helpers/list-selector/list-selector-item/list-selector-item.js +2 -64
  47. package/dist/collection/components/_helpers/list-selector/list-selector-item/list-selector-item.js.map +1 -1
  48. package/dist/collection/components/_helpers/list-selector/list-selector.css +11 -9
  49. package/dist/collection/components/_helpers/list-selector/list-selector.js +2 -75
  50. package/dist/collection/components/_helpers/list-selector/list-selector.js.map +1 -1
  51. package/dist/collection/components/_helpers/status-buttons/gx-ide-status-buttons.css +20 -61
  52. package/dist/collection/components/_helpers/status-buttons/gx-ide-status-buttons.js +34 -17
  53. package/dist/collection/components/_helpers/status-buttons/gx-ide-status-buttons.js.map +1 -1
  54. package/dist/collection/components/ai-assistant/ai-message.css +1 -1
  55. package/dist/collection/components/data-selector/data-selector.js +2 -1
  56. package/dist/collection/components/data-selector/data-selector.js.map +1 -1
  57. package/dist/collection/components/kb-manager-export/kb-manager-export.js +6 -3
  58. package/dist/collection/components/kb-manager-export/kb-manager-export.js.map +1 -1
  59. package/dist/collection/components/navigation-report/gx-ide-assets/navigation-report/langs/navigation-report.lang.en.json +6 -0
  60. package/dist/collection/components/navigation-report/gx-ide-assets/navigation-report/langs/navigation-report.lang.ja.json +3 -0
  61. package/dist/collection/components/navigation-report/gx-ide-assets/navigation-report/langs/navigation-report.lang.zh.json +3 -0
  62. package/dist/collection/components/navigation-report/helpers.js +17 -0
  63. package/dist/collection/components/navigation-report/helpers.js.map +1 -0
  64. package/dist/collection/components/navigation-report/navigation-report.css +75 -0
  65. package/dist/collection/components/navigation-report/navigation-report.js +407 -0
  66. package/dist/collection/components/navigation-report/navigation-report.js.map +1 -0
  67. package/dist/collection/components/new-environment/new-environment.js +2 -1
  68. package/dist/collection/components/new-environment/new-environment.js.map +1 -1
  69. package/dist/collection/components/new-kb/new-kb.js +7 -6
  70. package/dist/collection/components/new-kb/new-kb.js.map +1 -1
  71. package/dist/collection/components/new-object/new-object.js +4 -3
  72. package/dist/collection/components/new-object/new-object.js.map +1 -1
  73. package/dist/collection/components/object-selector/object-selector.js +5 -4
  74. package/dist/collection/components/object-selector/object-selector.js.map +1 -1
  75. package/dist/collection/components/start-page/recent-news.css +1 -1
  76. package/dist/collection/components/start-page/start-page.css +1 -1
  77. package/dist/collection/components/start-page/start-page.js +1 -1
  78. package/dist/collection/components/start-page/start-page.js.map +1 -1
  79. package/dist/collection/components/ww-images/gx-ide-assets/ww-images/langs/ww-images.lang.en.json +7 -3
  80. package/dist/collection/components/ww-images/gx-ide-assets/ww-images/langs/ww-images.lang.ja.json +8 -4
  81. package/dist/collection/components/ww-images/helpers.js +11 -0
  82. package/dist/collection/components/ww-images/helpers.js.map +1 -0
  83. package/dist/collection/components/ww-images/ww-images.css +82 -720
  84. package/dist/collection/components/ww-images/ww-images.js +465 -413
  85. package/dist/collection/components/ww-images/ww-images.js.map +1 -1
  86. package/dist/components/ai-message.js +1 -1
  87. package/dist/components/ai-message.js.map +1 -1
  88. package/dist/components/assets-manager.js +30 -30
  89. package/dist/components/assets-manager.js.map +1 -1
  90. package/dist/components/entity-selector.js +2 -2
  91. package/dist/components/entity-selector.js.map +1 -1
  92. package/dist/components/gx-ide-data-selector.js +2 -1
  93. package/dist/components/gx-ide-data-selector.js.map +1 -1
  94. package/dist/components/gx-ide-kb-manager-export.js +6 -3
  95. package/dist/components/gx-ide-kb-manager-export.js.map +1 -1
  96. package/dist/components/gx-ide-navigation-report.d.ts +11 -0
  97. package/dist/components/gx-ide-navigation-report.js +279 -0
  98. package/dist/components/gx-ide-navigation-report.js.map +1 -0
  99. package/dist/components/gx-ide-new-environment.js +2 -1
  100. package/dist/components/gx-ide-new-environment.js.map +1 -1
  101. package/dist/components/gx-ide-new-kb.js +7 -6
  102. package/dist/components/gx-ide-new-kb.js.map +1 -1
  103. package/dist/components/gx-ide-new-object.js +4 -3
  104. package/dist/components/gx-ide-new-object.js.map +1 -1
  105. package/dist/components/gx-ide-object-selector.js +5 -4
  106. package/dist/components/gx-ide-object-selector.js.map +1 -1
  107. package/dist/components/gx-ide-start-page.js +2 -2
  108. package/dist/components/gx-ide-start-page.js.map +1 -1
  109. package/dist/components/gx-ide-status-buttons2.js +35 -17
  110. package/dist/components/gx-ide-status-buttons2.js.map +1 -1
  111. package/dist/components/gx-ide-ww-images.js +419 -306
  112. package/dist/components/gx-ide-ww-images.js.map +1 -1
  113. package/dist/components/helpers.js +1 -6
  114. package/dist/components/helpers.js.map +1 -1
  115. package/dist/components/list-selector-item.js +2 -19
  116. package/dist/components/list-selector-item.js.map +1 -1
  117. package/dist/components/list-selector.js +2 -13
  118. package/dist/components/list-selector.js.map +1 -1
  119. package/dist/components/recent-news.js +1 -1
  120. package/dist/components/recent-news.js.map +1 -1
  121. package/dist/esm/{assets-manager-251883e0.js → assets-manager-5ac25bb6.js} +31 -31
  122. package/dist/esm/{assets-manager-251883e0.js.map → assets-manager-5ac25bb6.js.map} +1 -1
  123. package/dist/esm/genexus-ide-ui.js +1 -1
  124. package/dist/esm/gx-ide-ai-message.entry.js +2 -2
  125. package/dist/esm/gx-ide-ai-message.entry.js.map +1 -1
  126. package/dist/esm/gx-ide-dashboard-home.entry.js +2 -2
  127. package/dist/esm/gx-ide-data-selector.entry.js +3 -2
  128. package/dist/esm/gx-ide-data-selector.entry.js.map +1 -1
  129. package/dist/esm/gx-ide-entity-selector.entry.js +3 -3
  130. package/dist/esm/gx-ide-entity-selector.entry.js.map +1 -1
  131. package/dist/esm/gx-ide-kb-manager-export.entry.js +7 -4
  132. package/dist/esm/gx-ide-kb-manager-export.entry.js.map +1 -1
  133. package/dist/esm/gx-ide-kb-manager-import.entry.js +1 -1
  134. package/dist/esm/gx-ide-list-selector_2.entry.js +4 -27
  135. package/dist/esm/gx-ide-list-selector_2.entry.js.map +1 -1
  136. package/dist/esm/gx-ide-manage-module-references-v2.entry.js +1 -1
  137. package/dist/esm/gx-ide-manage-module-references.entry.js +1 -1
  138. package/dist/esm/gx-ide-navigation-report.entry.js +224 -0
  139. package/dist/esm/gx-ide-navigation-report.entry.js.map +1 -0
  140. package/dist/esm/gx-ide-new-environment.entry.js +3 -2
  141. package/dist/esm/gx-ide-new-environment.entry.js.map +1 -1
  142. package/dist/esm/gx-ide-new-kb.entry.js +8 -7
  143. package/dist/esm/gx-ide-new-kb.entry.js.map +1 -1
  144. package/dist/esm/gx-ide-new-object.entry.js +4 -3
  145. package/dist/esm/gx-ide-new-object.entry.js.map +1 -1
  146. package/dist/esm/gx-ide-object-selector.entry.js +7 -6
  147. package/dist/esm/gx-ide-object-selector.entry.js.map +1 -1
  148. package/dist/esm/gx-ide-recent-news.entry.js +3 -3
  149. package/dist/esm/gx-ide-recent-news.entry.js.map +1 -1
  150. package/dist/esm/gx-ide-start-page.entry.js +4 -4
  151. package/dist/esm/gx-ide-start-page.entry.js.map +1 -1
  152. package/dist/esm/gx-ide-status-buttons.entry.js +35 -17
  153. package/dist/esm/gx-ide-status-buttons.entry.js.map +1 -1
  154. package/dist/esm/gx-ide-team-dev-commit.entry.js +1 -1
  155. package/dist/esm/gx-ide-team-dev-update.entry.js +1 -1
  156. package/dist/esm/gx-ide-ww-images.entry.js +396 -279
  157. package/dist/esm/gx-ide-ww-images.entry.js.map +1 -1
  158. package/dist/esm/{helpers-64e1dd0b.js → helpers-9ee6ddce.js} +2 -7
  159. package/dist/esm/helpers-9ee6ddce.js.map +1 -0
  160. package/dist/esm/loader.js +1 -1
  161. package/dist/genexus-ide-ui/genexus-ide-ui.css +1 -1
  162. package/dist/genexus-ide-ui/genexus-ide-ui.esm.js +1 -1
  163. package/dist/genexus-ide-ui/genexus-ide-ui.esm.js.map +1 -1
  164. package/dist/genexus-ide-ui/gx-ide-assets/navigation-report/langs/navigation-report.lang.en.json +6 -0
  165. package/dist/genexus-ide-ui/gx-ide-assets/navigation-report/langs/navigation-report.lang.ja.json +3 -0
  166. package/dist/genexus-ide-ui/gx-ide-assets/navigation-report/langs/navigation-report.lang.zh.json +3 -0
  167. package/dist/genexus-ide-ui/gx-ide-assets/ww-images/langs/ww-images.lang.en.json +7 -3
  168. package/dist/genexus-ide-ui/gx-ide-assets/ww-images/langs/ww-images.lang.ja.json +8 -4
  169. package/dist/genexus-ide-ui/{p-e08213ef.entry.js → p-0576a392.entry.js} +6 -6
  170. package/dist/genexus-ide-ui/{p-e08213ef.entry.js.map → p-0576a392.entry.js.map} +1 -1
  171. package/dist/genexus-ide-ui/{p-c339f703.js → p-066028bc.js} +8 -14
  172. package/dist/genexus-ide-ui/p-066028bc.js.map +1 -0
  173. package/dist/genexus-ide-ui/{p-58e7d1ab.js → p-0b0ce806.js} +31 -31
  174. package/dist/genexus-ide-ui/p-0b0ce806.js.map +1 -0
  175. package/dist/genexus-ide-ui/{p-a4a56375.entry.js → p-1ced155b.entry.js} +4 -4
  176. package/dist/genexus-ide-ui/p-1ced155b.entry.js.map +1 -0
  177. package/dist/genexus-ide-ui/{p-0a1167a6.entry.js → p-1f37f5b5.entry.js} +2 -2
  178. package/dist/genexus-ide-ui/{p-d15717c5.entry.js → p-20389960.entry.js} +4 -4
  179. package/dist/genexus-ide-ui/{p-6b8f6569.entry.js → p-2465307a.entry.js} +54 -54
  180. package/dist/genexus-ide-ui/p-2465307a.entry.js.map +1 -0
  181. package/dist/genexus-ide-ui/{p-3b3f5ecb.entry.js → p-278afab1.entry.js} +3 -3
  182. package/dist/genexus-ide-ui/{p-940c83a6.entry.js → p-2dd09b01.entry.js} +22 -44
  183. package/dist/genexus-ide-ui/p-2dd09b01.entry.js.map +1 -0
  184. package/dist/genexus-ide-ui/{p-cfd29ed2.entry.js → p-352d4aad.entry.js} +36 -36
  185. package/dist/genexus-ide-ui/p-352d4aad.entry.js.map +1 -0
  186. package/dist/genexus-ide-ui/{p-5961ae84.entry.js → p-3f5ea8bf.entry.js} +34 -34
  187. package/dist/genexus-ide-ui/p-3f5ea8bf.entry.js.map +1 -0
  188. package/dist/genexus-ide-ui/{p-f06147d7.entry.js → p-44d779c9.entry.js} +7 -7
  189. package/dist/genexus-ide-ui/p-44d779c9.entry.js.map +1 -0
  190. package/dist/genexus-ide-ui/{p-5bff0103.entry.js → p-4ce0a85e.entry.js} +3 -3
  191. package/dist/genexus-ide-ui/p-4ce0a85e.entry.js.map +1 -0
  192. package/dist/genexus-ide-ui/{p-cff74f8a.entry.js → p-60cd6b09.entry.js} +2 -2
  193. package/dist/genexus-ide-ui/p-62efd8f2.entry.js +712 -0
  194. package/dist/genexus-ide-ui/p-62efd8f2.entry.js.map +1 -0
  195. package/dist/genexus-ide-ui/{p-dbfddffd.entry.js → p-69b88e9f.entry.js} +35 -23
  196. package/dist/genexus-ide-ui/p-69b88e9f.entry.js.map +1 -0
  197. package/dist/genexus-ide-ui/{p-fae9bd6c.entry.js → p-9efea53c.entry.js} +4 -4
  198. package/dist/genexus-ide-ui/p-9efea53c.entry.js.map +1 -0
  199. package/dist/genexus-ide-ui/{p-4ce47bcd.entry.js → p-acf0cbac.entry.js} +2 -2
  200. package/dist/genexus-ide-ui/{p-ca8b0024.entry.js → p-b785673d.entry.js} +2 -2
  201. package/dist/genexus-ide-ui/{p-23c9b4e6.entry.js → p-c36effd2.entry.js} +13 -13
  202. package/dist/genexus-ide-ui/p-c36effd2.entry.js.map +1 -0
  203. package/dist/genexus-ide-ui/{p-39792ac8.entry.js → p-c4d1d0ce.entry.js} +2 -2
  204. package/dist/genexus-ide-ui/p-de59d495.entry.js +273 -0
  205. package/dist/genexus-ide-ui/p-de59d495.entry.js.map +1 -0
  206. package/dist/types/components/_helpers/list-selector/list-selector-item/list-selector-item.d.ts +0 -11
  207. package/dist/types/components/_helpers/list-selector/list-selector.d.ts +0 -13
  208. package/dist/types/components/_helpers/status-buttons/gx-ide-status-buttons.d.ts +1 -4
  209. package/dist/types/components/navigation-report/helpers.d.ts +5 -0
  210. package/dist/types/components/navigation-report/navigation-report.d.ts +88 -0
  211. package/dist/types/components/ww-images/helpers.d.ts +3 -0
  212. package/dist/types/components/ww-images/ww-images.d.ts +98 -118
  213. package/dist/types/components.d.ts +142 -130
  214. package/package.json +5 -5
  215. package/dist/cjs/helpers-b5b4a659.js.map +0 -1
  216. package/dist/esm/helpers-64e1dd0b.js.map +0 -1
  217. package/dist/genexus-ide-ui/p-23c9b4e6.entry.js.map +0 -1
  218. package/dist/genexus-ide-ui/p-58e7d1ab.js.map +0 -1
  219. package/dist/genexus-ide-ui/p-5961ae84.entry.js.map +0 -1
  220. package/dist/genexus-ide-ui/p-5bff0103.entry.js.map +0 -1
  221. package/dist/genexus-ide-ui/p-6b8f6569.entry.js.map +0 -1
  222. package/dist/genexus-ide-ui/p-940c83a6.entry.js.map +0 -1
  223. package/dist/genexus-ide-ui/p-a4a56375.entry.js.map +0 -1
  224. package/dist/genexus-ide-ui/p-cfd29ed2.entry.js.map +0 -1
  225. package/dist/genexus-ide-ui/p-dbfddffd.entry.js.map +0 -1
  226. package/dist/genexus-ide-ui/p-f06147d7.entry.js.map +0 -1
  227. package/dist/genexus-ide-ui/p-f96614f3.entry.js +0 -611
  228. package/dist/genexus-ide-ui/p-f96614f3.entry.js.map +0 -1
  229. package/dist/genexus-ide-ui/p-fae9bd6c.entry.js.map +0 -1
  230. /package/dist/genexus-ide-ui/{p-0a1167a6.entry.js.map → p-1f37f5b5.entry.js.map} +0 -0
  231. /package/dist/genexus-ide-ui/{p-d15717c5.entry.js.map → p-20389960.entry.js.map} +0 -0
  232. /package/dist/genexus-ide-ui/{p-3b3f5ecb.entry.js.map → p-278afab1.entry.js.map} +0 -0
  233. /package/dist/genexus-ide-ui/{p-cff74f8a.entry.js.map → p-60cd6b09.entry.js.map} +0 -0
  234. /package/dist/genexus-ide-ui/{p-4ce47bcd.entry.js.map → p-acf0cbac.entry.js.map} +0 -0
  235. /package/dist/genexus-ide-ui/{p-ca8b0024.entry.js.map → p-b785673d.entry.js.map} +0 -0
  236. /package/dist/genexus-ide-ui/{p-39792ac8.entry.js.map → p-c4d1d0ce.entry.js.map} +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"names":["entitySelectorCss","CSS_BUNDLES","SELECT_DEFAULT_ICON","getIconPath","category","name","colorType","CLEAR_ICON","GxIdeEntitySelector","_GxIdeEntitySelector_componentLocale","set","this","_GxIdeEntitySelector_btnClearClickHandler","value","defaultValue","iconSrc","_a","_GxIdeEntitySelector_btnSelectClickHandler","selectEntityCallback","then","result","_GxIdeEntitySelector_buttonFocusHandler","e","type","buttonHasFocus","_GxIdeEntitySelector_renderControl","h","part","class","accessibleName","labelPosition","__classPrivateFieldGet","entitySelectorInputAccessibleName","entitySelectorNameAttribute","startImgSrc","_b","id","clearButtonLabel","title","onClick","onFocus","undefined","onBlur","src","selectButtonLabel","disabled","_GxIdeEntitySelector_updateIconSrc","valueChangedHandler","valueChanged","emit","call","componentWillLoad","__classPrivateFieldSet","Locale","getComponentStrings","el","connectedCallback","render","Host","model","field","htmlFor","labelCaption"],"sources":["src/components/_helpers/entity-selector/entity-selector.scss?tag=gx-ide-entity-selector&encapsulation=shadow","src/components/_helpers/entity-selector/entity-selector.tsx"],"sourcesContent":["/*wrapper*/\n.wrapper {\n display: grid;\n grid-template-columns: 1fr max-content max-content;\n gap: var(--mer-spacing--xs);\n border-radius: var(--control__border-radius);\n border: var(--control__border-width) var(--control__border-style)\n var(--control__border-color);\n padding: var(--control__padding-block) var(--control__padding-inline);\n\n &:hover {\n --control__border-color: var(--control__border-color--hover);\n }\n &:focus {\n }\n}\n/*form-input*/\n.form-input {\n --control__padding-block: 0;\n --control__padding-inline: 0;\n // Remove control border. We want to simulate a form-input that includes two buttons at the end.\n --control__border-width: 0;\n --focus__outline-width: 0;\n}\n:host(:focus-within) {\n .wrapper {\n --control__border-color: var(--focus__outline-color);\n }\n}\n:host(.entity-selector--button-has-focus) {\n .wrapper {\n outline: none;\n }\n}\n/*custom button icon*/\n","import {\n Component,\n Host,\n h,\n Prop,\n Element,\n State,\n Event,\n EventEmitter,\n Watch\n} from \"@stencil/core\";\n\nimport { MercuryBundles, getIconPath } from \"@genexus/mercury\";\n\nimport { Locale } from \"../../../common/locale\";\nimport { LabelPosition } from \"../../../common/types\";\nimport { EntityData } from \"../../../common/types\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"components/edit\",\n \"components/button\",\n \"components/icon\",\n \"utils/form\"\n];\nconst SELECT_DEFAULT_ICON = getIconPath({\n category: \"gemini-tools\",\n name: \"show-more-horizontal\",\n colorType: \"primary\"\n});\nconst CLEAR_ICON = getIconPath({\n category: \"gemini-tools\",\n name: \"reset\",\n colorType: \"primary\"\n});\n\n@Component({\n tag: \"gx-ide-entity-selector\",\n styleUrl: \"entity-selector.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/entity-selector\"]\n})\nexport class GxIdeEntitySelector {\n #componentLocale: any;\n\n @Element() el: HTMLGxIdeEntitySelectorElement;\n\n /**\n * Adds/removes a CSS class on the host. It removes focus-within styles when\n * focus is on a button.\n */\n @State() buttonHasFocus = false;\n\n @State() iconSrc: string = null;\n\n /**\n * Default value for the component. Used when the 'X' button is pressed.\n */\n @Prop() readonly defaultValue?: EntityData | null | undefined;\n\n /**\n * The label caption. Only visible if \"labelPosition\" is not \"none\".\n * I no \"labelCaption\" is provided, a generic caption \"Select Entity\" will be provided\n */\n @Prop() readonly labelCaption?: string;\n\n /**\n * The label position\n */\n @Prop({ reflect: true }) readonly labelPosition?: LabelPosition =\n \"block-start\";\n\n /**\n * This property specifies the `name` of the control when used in a form.\n */\n @Prop({ reflect: true }) readonly name?: string;\n\n /**\n * Callback invoked when the action button is pressed. Returns the new value.\n */\n @Prop() readonly selectEntityCallback!: () => Promise<EntityData>;\n\n /**\n * Value currently assigned.\n */\n @Prop({ mutable: true }) value: EntityData | null | undefined;\n @Watch(\"value\")\n valueChangedHandler() {\n this.valueChanged.emit(this.value);\n this.#updateIconSrc();\n }\n\n /**\n * Emits the input value every time it changes\n */\n @Event() valueChanged: EventEmitter<EntityData>;\n\n // 6.Component Lifecycle Events\n\n async componentWillLoad() {\n this.#componentLocale = await Locale.getComponentStrings(this.el);\n }\n\n connectedCallback() {\n this.#updateIconSrc();\n }\n\n #btnClearClickHandler = () => {\n this.value = this.defaultValue;\n this.iconSrc = this.defaultValue?.iconSrc;\n };\n\n #btnSelectClickHandler = () => {\n this.selectEntityCallback().then(result => {\n this.value = result;\n });\n };\n\n #buttonFocusHandler = (e: FocusEvent) => {\n if (e.type === \"focus\") {\n this.buttonHasFocus = true;\n } else if (e.type === \"blur\") {\n this.buttonHasFocus = false;\n }\n };\n\n #renderControl = (): HTMLDivElement => {\n return (\n <div part=\"wrapper\" class=\"wrapper\">\n <ch-edit\n accessibleName={\n this.labelPosition === \"none\" &&\n this.#componentLocale.entitySelectorInputAccessibleName\n }\n class=\"form-input\"\n name={this.name || this.#componentLocale.entitySelectorNameAttribute}\n startImgSrc={this.iconSrc}\n value={this.value?.name || this.defaultValue?.name}\n id=\"entity-input\"\n ></ch-edit>\n\n <button\n part=\"button-clear\"\n class=\"icon-button\"\n aria-label={this.#componentLocale.clearButtonLabel}\n title={this.#componentLocale.clearButtonLabel}\n type=\"button\"\n onClick={this.#btnClearClickHandler}\n onFocus={this.buttonHasFocus ? this.#buttonFocusHandler : undefined}\n onBlur={!this.buttonHasFocus ? this.#buttonFocusHandler : undefined}\n >\n <ch-image class=\"icon-md\" src={CLEAR_ICON}></ch-image>\n </button>\n\n <button\n class=\"icon-button\"\n aria-label={this.#componentLocale.selectButtonLabel}\n title={this.#componentLocale.selectButtonLabel}\n type=\"button\"\n disabled={!this.selectEntityCallback}\n onClick={this.#btnSelectClickHandler}\n onBlur={!this.buttonHasFocus ? this.#buttonFocusHandler : undefined}\n onFocus={this.buttonHasFocus ? this.#buttonFocusHandler : undefined}\n >\n <ch-image class=\"icon-md\" src={SELECT_DEFAULT_ICON}></ch-image>\n </button>\n </div>\n );\n };\n\n #updateIconSrc = () => {\n if (this.value && this.value.iconSrc) {\n this.iconSrc = this.value.iconSrc;\n }\n };\n\n render() {\n return (\n <Host\n class={{\n \"entity-selector--button-has-focus\": this.buttonHasFocus\n }}\n >\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n {this.labelPosition !== \"none\" ? (\n <div\n class={{\n \"field\": true,\n \"field-block\": this.labelPosition === \"block-start\",\n \"field-inline\": this.labelPosition === \"inline-start\"\n }}\n >\n <label class=\"label\" htmlFor=\"entity-input\">\n {this.labelCaption ||\n this.#componentLocale.entitySelectorInputAccessibleName}\n </label>\n {this.#renderControl()}\n </div>\n ) : (\n this.#renderControl()\n )}\n </Host>\n );\n }\n}\n\nexport type EntitySelectorLabels = {\n buttonClearLabel: string;\n buttonSelectLabel: string;\n};\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"names":["aiMessageCss","GxIdeAiMessage","this","copyable","evaluateMessageIsCopyable","messageType","copyMessage","navigator","clipboard","writeText","message","showCopiedMessage","setTimeout","componentWillLoad","componentDidRender","visible","messagesList","el","parentElement","scrollTo","render","h","class","hidden","onClick","message__caption","copied","type","color","translations","hiChar","filterValue"],"sources":["src/components/ai-assistant/ai-message.scss?tag=gx-ide-ai-message&encapsulation=shadow","src/components/ai-assistant/ai-message.tsx"],"sourcesContent":["@import \"../../global/gx-ide-mixins.scss\";\n\n:host {\n font-family: var(--mer-font-family--primary);\n}\n/*--- Messages ---*/\n.message {\n color: var(--mer-color__neutral-gray--200);\n display: grid;\n grid-template-rows: 0fr;\n transition: grid-template-rows 100ms;\n transition: grid-template-rows 100ms, -ms-grid-rows 100ms;\n &__outer-wrapper {\n overflow: hidden;\n }\n &__inner-wrapper {\n padding: var(--mer-spacing--2xs) var(--mer-spacing--xs);\n border-radius: var(--mer-border__radius--xs);\n border: var(--mer-border__width--sm) solid transparent;\n background-color: var(--mer-color__neutral-gray--1200);\n margin-block-start: var(--mer-spacing--xs);\n }\n &__caption {\n font-size: var(--mer-font__size--2xs);\n line-height: var(--mer-line-height--comfortable);\n position: relative;\n }\n &--visible {\n grid-template-rows: 1fr;\n }\n &--copying {\n pointer-events: none;\n span:not(.copied),\n .message__caption {\n color: transparent;\n -webkit-user-select: none; /* Safari */\n -ms-user-select: none; /* IE 10 and IE 11 */\n user-select: none; /* Standard syntax */\n }\n }\n /*--- Types of messages ---*/\n &--user {\n .message__inner-wrapper {\n background-color: var(--mer-color__tint-blue--8);\n }\n }\n &--assistant-action {\n .message__inner-wrapper {\n font-style: italic;\n }\n }\n &--assistant-in-progress {\n color: var(--mer-color__neutral-gray--500);\n .message__inner-wrapper {\n font-style: italic;\n display: grid;\n grid-template-columns: 1fr auto;\n gap: var(--mer-spacing--xs);\n\n .message__caption {\n @include elipsis;\n flex: 1;\n }\n .animation-wrapper {\n flex: none;\n }\n }\n }\n &--assistant-error {\n .message__inner-wrapper {\n background-color: var(--mer-color__tint-red--5);\n border-color: var(--mer-color__tint-red--60);\n }\n }\n &--copyable {\n cursor: pointer;\n &:hover {\n }\n }\n &:last-child {\n margin-block-end: 0;\n }\n}\n:host(:first-child) {\n .message {\n &__inner-wrapper {\n margin-block-end: 0;\n }\n }\n}\n\n/*--- Dot Pulse Sweet Animation ---*/\n.animation-wrapper {\n width: 45px;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n$color: var(--mer-color__neutral-gray--400);\n.dot-pulse {\n position: relative;\n left: -9999px;\n width: 5px;\n height: 5px;\n border-radius: 2.5px;\n background-color: $color;\n color: $color;\n box-shadow: 9999px 0 0 -5px;\n animation: dot-pulse 1.5s infinite linear;\n animation-delay: 0.25s;\n &::before,\n &::after {\n content: \"\";\n display: inline-block;\n position: absolute;\n top: 0;\n width: 5px;\n height: 5px;\n border-radius: 2.5px;\n background-color: $color;\n color: $color;\n }\n &::before {\n box-shadow: 9984px 0 0 -5px;\n animation: dot-pulse-before 1.5s infinite linear;\n animation-delay: 0s;\n }\n &::after {\n box-shadow: 10014px 0 0 -5px;\n animation: dot-pulse-after 1.5s infinite linear;\n animation-delay: 0.5s;\n }\n}\n@keyframes dot-pulse-before {\n 0% {\n box-shadow: 9984px 0 0 -5px;\n }\n 30% {\n box-shadow: 9984px 0 0 2px;\n }\n 60%,\n 100% {\n box-shadow: 9984px 0 0 -5px;\n }\n}\n@keyframes dot-pulse {\n 0% {\n box-shadow: 9999px 0 0 -5px;\n }\n 30% {\n box-shadow: 9999px 0 0 2px;\n }\n 60%,\n 100% {\n box-shadow: 9999px 0 0 -5px;\n }\n}\n@keyframes dot-pulse-after {\n 0% {\n box-shadow: 10014px 0 0 -5px;\n }\n 30% {\n box-shadow: 10014px 0 0 2px;\n }\n 60%,\n 100% {\n box-shadow: 10014px 0 0 -5px;\n }\n}\n\n/*--- Copy Message ---*/\n.copied {\n position: absolute;\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mer-color__neutral-gray--300);\n display: flex;\n gap: var(--mer-spacing--2xs);\n}\n\n@include hiChar;\n","/* STENCIL IMPORTS */\nimport { Component, h, Prop, Element, State } from \"@stencil/core\";\n/* OTHER LIBRARIES IMPORTS */\n/* CUSTOM IMPORTS */\nimport { MessageType } from \"./ai-assistant\";\nimport { hiChar } from \"../../common/helpers\";\n\n@Component({\n tag: \"gx-ide-ai-message\",\n styleUrl: \"ai-message.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/ai-message\"]\n})\nexport class GxIdeAiMessage {\n /*\nINDEX:\n1.OWN PROPERTIES \n2.REFERENCE TO ELEMENTS\n3.STATE() VARIABLES\n4.PUBLIC PROPERTY API | WATCH'S\n5.EVENTS (EMIT)\n6.COMPONENT LIFECYCLE METHODS\n7.LISTENERS\n8.PUBLIC METHODS API\n9.LOCAL METHODS\n10.RENDER() FUNCTION\n*/\n\n // 1.OWN PROPERTIES //\n\n /* The message allows to be copied*/\n private copyable = false;\n\n // 2. REFERENCE TO ELEMENTS //\n\n @Element() el: HTMLGxIdeAiMessageElement;\n\n // 3.STATE() VARIABLES //\n\n /**\n * This wil display the message if true\n */\n @State() visible = false;\n\n /**\n * This wil show the user a text, indicating that the message has been copied\n */\n @State() showCopiedMessage = false;\n\n // 4.PUBLIC PROPERTY API | WATCH'S //\n\n /**\n * The actual message\n */\n @Prop() readonly message: string;\n\n /**\n * The message type\n */\n @Prop() readonly messageType: MessageType;\n\n /**\n * The filter value\n */\n @Prop() readonly filterValue: string;\n\n /**\n * It hides the message (used for the filter)\n */\n @Prop() readonly hidden: boolean;\n\n /**\n * An object with the needed string translations.\n */\n @Prop() readonly translations: Translations;\n\n // 5.EVENTS (EMIT) //\n\n // 6.COMPONENT LIFECYCLE METHODS //\n\n async componentWillLoad() {\n this.evaluateMessageIsCopyable();\n }\n\n componentDidRender() {\n setTimeout(() => {\n /* Without the timeout it appears instantly (no apparent transition)*/\n this.visible = true;\n const messagesList = this.el.parentElement;\n messagesList.scrollTo(0, 0);\n }, 0);\n }\n\n // 7.LISTENERS //\n\n // 8.PUBLIC METHODS API //\n\n // 9.LOCAL METHODS //\n\n private evaluateMessageIsCopyable = () => {\n this.copyable =\n this.messageType !== \"assistant-in-progress\" &&\n this.messageType !== \"assistant-action\";\n };\n\n private copyMessage = () => {\n navigator.clipboard.writeText(this.message);\n this.showCopiedMessage = true;\n setTimeout(() => {\n this.showCopiedMessage = false;\n }, 1500);\n };\n\n // 10.RENDER() FUNCTION //\n\n render() {\n return (\n <li\n class={{\n \"message\": true,\n \"message--visible\": this.visible && !this.hidden,\n [`message--${[this.messageType]}`]: true,\n \"message--assistant\": this.messageType !== \"user\",\n \"message--copyable\": this.copyable,\n \"message--copying\": this.showCopiedMessage\n }}\n onClick={this.copyable && this.copyMessage}\n >\n <div class=\"message__outer-wrapper\">\n <div\n class={{\n \"message__inner-wrapper\": true\n }}\n >\n <div\n class={{\n \"message__caption\": true,\n \"message__caption--in-progress\":\n this.messageType === \"assistant-in-progress\"\n }}\n >\n {this.showCopiedMessage ? (\n <span\n class={{\n copied: true\n }}\n >\n <gxg-icon type=\"bpm/tasks\" color=\"mercury\"></gxg-icon>\n {this.translations[\"copied\"]}\n </span>\n ) : null}\n {hiChar(this.message, this.filterValue)}\n </div>\n {this.messageType === \"assistant-in-progress\" ? (\n <div class=\"animation-wrapper\">\n <div class=\"dot-pulse\"></div>\n </div>\n ) : null}\n </div>\n </div>\n </li>\n );\n }\n}\n\nexport type Translations = {\n [key: string]: string;\n};\n"],"mappings":";;;;AAAA,MAAMA,IAAe;;MCaRC,IAAc;;;;;;;;;;;;;;;;;4CAkBjBC,KAAAC,WAAW;;;;QAoEXD,KAAAE,4BAA4B;MAClCF,KAAKC,WACHD,KAAKG,gBAAgB,2BACrBH,KAAKG,gBAAgB;AAAkB;IAGnCH,KAAAI,cAAc;MACpBC,UAAUC,UAAUC,UAAUP,KAAKQ;MACnCR,KAAKS,oBAAoB;MACzBC,YAAW;QACTV,KAAKS,oBAAoB;AAAK,UAC7B;AAAK;mBApES;6BAKU;;;;;;;;;EAiC7B,uBAAME;IACJX,KAAKE;;EAGP,kBAAAU;IACEF,YAAW;;MAETV,KAAKa,UAAU;MACf,MAAMC,IAAed,KAAKe,GAAGC;MAC7BF,EAAaG,SAAS,GAAG;AAAE,QAC1B;;;EAyBL,MAAAC;IACE,OACEC,EAAA;MACEC,OAAO;QACLZ,SAAW;QACX,oBAAoBR,KAAKa,YAAYb,KAAKqB;QAC1C,CAAC,YAAY,EAACrB,KAAKG,kBAAiB;QACpC,sBAAsBH,KAAKG,gBAAgB;QAC3C,qBAAqBH,KAAKC;QAC1B,oBAAoBD,KAAKS;;MAE3Ba,SAAStB,KAAKC,YAAYD,KAAKI;OAE/Be,EAAA;MAAKC,OAAM;OACTD,EAAA;MACEC,OAAO;QACL,0BAA0B;;OAG5BD,EAAA;MACEC,OAAO;QACLG,kBAAoB;QACpB,iCACEvB,KAAKG,gBAAgB;;OAGxBH,KAAKS,oBACJU,EAAA;MACEC,OAAO;QACLI,QAAQ;;OAGVL,EAAA;MAAUM,MAAK;MAAYC,OAAM;QAChC1B,KAAK2B,aAAa,aAEnB,MACHC,EAAO5B,KAAKQ,SAASR,KAAK6B,eAE5B7B,KAAKG,gBAAgB,0BACpBgB,EAAA;MAAKC,OAAM;OACTD,EAAA;MAAKC,OAAM;UAEX"}
@@ -1 +0,0 @@
1
- {"version":3,"names":["mapTypeCategoryDataToActionListModel","categories","map","category","id","type","additionalInformation","center","imgSrc","icon","undefined","caption","name","part","mapTypeDataToActionListModel","types","selectedCategoryId","selectedTypeId","imageSrc","selected","sortActionListDefault","subModel","newObjectCss","CSS_BUNDLES","GxIdeNewObject","_GxIdeNewObject_componentLocale","set","this","_GxIdeNewObject_shortcutsSrc","getAssetPath","_GxIdeNewObject_categoriesActionListEl","_GxIdeNewObject_chShortcutsEl","_GxIdeNewObject_descriptionEl","_GxIdeNewObject_descriptionModifiedByUser","_GxIdeNewObject_moduleFolderEl","_GxIdeNewObject_nameEl","_GxIdeNewObject_nameModifiedByUser","_GxIdeNewObject_cancelCallbackHandler","async","cancelCallback","_GxIdeNewObject_categoryOnSelectionChangedHandler","selectionEvent","selection","detail","length","selectedCategory","typeCategories","find","item","selectedType","selectedTypeMap","get","_GxIdeNewObject_createCallbackHandler","nameValidation","validateNameCallback","__classPrivateFieldGet","value","_GxIdeNewObject_validateNameHandler","call","data","typeId","_a","description","moduleId","_c","_b","result","createCallback","_GxIdeNewObject_descriptionValueHandler","console","log","_GxIdeNewObject_getNameSuggestion","replace","_GxIdeNewObject_init","defaultTypeFound","_GxIdeNewObject_setDefaultType","defaultTypeId","_GxIdeNewObject_nameValueHandler","_GxIdeNewObject_onBlurNameHandler","_GxIdeNewObject_onInputDescriptionHandler","e","__classPrivateFieldSet","_GxIdeNewObject_onInputNameHandler","_GxIdeNewObject_onNameValueChangedHandler","_GxIdeNewObject_renderModuleFolder","hasModule","hasFolder","labelDescription","moduleFolder","moduleOnly","folderOnly","h","class","htmlFor","labelPosition","parent","defaultValue","defaultParent","selectEntityCallback","selectModuleCallback","ref","el","found","outerLoop","i","j","loopTypeId","_GxIdeNewObject_setSelectedCategoryOnActionList","updateItemProperties","_GxIdeNewObject_typeOnSelectionChangedHandler","nameValidationErrorMessage","Map","typeCategoriesChanged","newValue","typeCategoriesActionListModel","connectedCallback","componentWillLoad","Locale","getComponentStrings","_GxIdeNewObject_instances","_GxIdeNewObject_initializeSelectedTypeMap","componentDidLoad","suspendShortcuts","suspend","render","Host","model","src","categorySelectionTitle","sortItemsCallback","onSelectedItemsChange","typeSelectionTitleSuffix","typeSelectionTitle","objectName","autoFocus","placeholder","onChange","onInput","onBlur","actionElement","blockAlign","config","tooltipSettings","inlineAlign","delay","objectDescription","onClick","footer","btnCancel","disabled","btnCreate","forEach"],"sources":["src/components/new-object/helpers.tsx","src/common/chameleon-helpers.ts","src/components/new-object/new-object.scss?tag=gx-ide-new-object&encapsulation=shadow","src/components/new-object/new-object.tsx"],"sourcesContent":["import { ActionListModel } from \"@genexus/chameleon-controls-library\";\nimport { TypeCategoryData } from \"../..\";\nimport { TypeData } from \"./new-object\";\n\nexport type ChCheckboxArray = HTMLChCheckboxElement[] | null;\n\nexport const mapTypeCategoryDataToActionListModel = (\n categories: TypeCategoryData[]\n): ActionListModel => {\n return categories.map(category => {\n return {\n id: category.id,\n type: \"actionable\",\n additionalInformation: {\n \"stretch-start\": {\n center: [{ imgSrc: category.icon || undefined }]\n }\n },\n caption: category.name,\n part: `category-${category.id}`\n };\n });\n};\n\nexport const mapTypeDataToActionListModel = (\n types: TypeData[],\n selectedCategoryId: string,\n selectedTypeId?: string\n): ActionListModel => {\n return types.map(type => {\n return {\n id: `${type.id}`,\n type: \"actionable\",\n imageSrc: \"objects/design\",\n selected: selectedTypeId === type.id,\n additionalInformation: {\n \"stretch-start\": {\n center: [{ imgSrc: type.icon }]\n }\n },\n caption: type.name,\n part: `type-${selectedCategoryId}-${type.id}`\n };\n });\n};\n","import { ActionListModel } from \"@genexus/chameleon-controls-library/dist/types/components/action-list/types\";\n\n/**\n * Order the items in the same order as they come.\n */\nexport const sortActionListDefault = (subModel: ActionListModel) => {\n return subModel;\n};\n",":host {\n display: grid;\n block-size: 100%;\n}\n\n.main {\n display: grid;\n grid-template-rows: 1fr max-content max-content;\n}\n.categories-types-layout {\n grid-template-columns: 1fr 1fr;\n}\n.api-description-layout {\n padding-block: calc(\n var(--content-block-spacing) * 2\n ); // WA until we define a class for internal spacing.\n display: grid;\n grid-template:\n \"api-description-title api-description-title\"\n \"api-name-label api-name-control\"\n \"api-description-label api-description-control\"\n \"api-module-label api-module-control\";\n grid-template-columns: max-content 1fr;\n}\n.api-description-title {\n grid-area: api-description-title;\n}\n.api-name-label {\n grid-area: api-name-label;\n}\n.api-name-control {\n grid-area: api-name-control;\n}\n.api-description-label {\n grid-area: api-description-label;\n}\n.api-description-control {\n grid-area: api-description-control;\n}\n.api-module-label {\n grid-area: api-module-label;\n}\n.api-module-control {\n grid-area: api-module-control;\n}\n","/* STENCIL IMPORTS */\nimport {\n Component,\n Host,\n h,\n Prop,\n Event,\n EventEmitter,\n Element,\n State,\n Watch,\n getAssetPath,\n Method\n} from \"@stencil/core\";\n/* OTHER LIBRARIES IMPORTS */\nimport { MercuryBundles } from \"@genexus/mercury\";\nimport { config } from \"../../common/config\";\n/* CUSTOM IMPORTS */\nimport { Locale } from \"../../common/locale\";\nimport { EntityData } from \"../../common/types\";\nimport {\n ActionListItemModelExtended,\n ActionListModel\n} from \"@genexus/chameleon-controls-library\";\nimport {\n mapTypeCategoryDataToActionListModel,\n mapTypeDataToActionListModel\n} from \"./helpers\";\n\nimport { sortActionListDefault } from \"../../common/chameleon-helpers\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"components/button\",\n \"components/edit\",\n \"components/icon\",\n \"components/tooltip\",\n \"components/list-box\",\n \"utils/form\",\n \"utils/layout\",\n \"utils/typography\"\n];\n\n@Component({\n tag: \"gx-ide-new-object\",\n styleUrl: \"new-object.scss\",\n shadow: { delegatesFocus: true },\n assetsDirs: [\"gx-ide-assets/new-object\"]\n})\nexport class GxIdeNewObject {\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 #shortcutsSrc = getAssetPath(`./gx-ide-assets/new-object/shortcuts.json`);\n\n @Element() el: HTMLGxIdeNewObjectElement;\n\n /* References needed to collect data on \"Create\" button submit */\n #categoriesActionListEl: HTMLChActionListRenderElement;\n #chShortcutsEl: HTMLChShortcutsElement;\n #descriptionEl!: HTMLChEditElement;\n #descriptionModifiedByUser = false;\n #moduleFolderEl!: HTMLGxIdeEntitySelectorElement;\n #nameEl!: HTMLChEditElement;\n #nameModifiedByUser = false;\n\n /**\n * Description of the new object\n */\n @State() description: string = undefined;\n\n /**\n * Name of the new object\n */\n @State() name: string = undefined;\n @State() nameValidationErrorMessage: string;\n @State() selectedCategory: TypeCategoryData | null;\n @State() selectedType: TypeData | null;\n // representations of TypeCategoryData[] as ComboBoxModel.\n @State() typeCategoriesActionListModel: ActionListModel = [];\n @State() typesActionListModel: ActionListModel = [];\n\n @State() selectedTypeMap: Map<string, string> = new Map();\n\n /**\n * Allows you to define the type selected by default when instantiating the dialog.\n * Represented by the type identifier.\n */\n @Prop() readonly defaultTypeId: string;\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 user wants to cancel object creation\n */\n @Prop() readonly cancelCallback: CancelCallback;\n\n /**\n * Callback invoked when user wants to confirm object creation\n */\n @Prop() readonly createCallback: CreateCallback;\n\n /**\n * Applies a shadow all around\n */\n @Prop() readonly shadow = false;\n\n /**\n * Array containing category list and its corresponding types\n */\n @Prop({ mutable: true }) typeCategories!: TypeCategoryData[];\n @Watch(\"typeCategories\")\n typeCategoriesChanged(newValue: TypeCategoryData[]) {\n if (newValue?.length) {\n this.typeCategoriesActionListModel = mapTypeCategoryDataToActionListModel(\n this.typeCategories\n );\n }\n }\n\n /**\n * Current value for Module/Folder\n */\n @Prop() readonly parent: EntityData;\n\n /**\n * Callback invoked when the action is executed on the Module/Folder filter\n * (button '...'). It returns the information of the selected object (id and\n * name) or 'undefined' if it was canceled.\n */\n @Prop() readonly selectModuleCallback: SelectModuleCallback;\n\n /**\n * Callback invoked when you must validate a name. Returns an error message or\n * 'undefined' if the name is not valid.\n */\n @Prop() readonly validateNameCallback: ValidateNameCallback;\n\n /**\n * This event emits the 'cancel' event\n */\n @Event() cancel: EventEmitter<boolean>;\n\n /**\n * This event emm=its the data needed to create a new object\n */\n @Event() create: EventEmitter<NewObjectData>;\n\n /**\n * This event is triggered after a validation of the object name is made.\n * Returns 'undefined' if it's valid, otherwise an error message.\n */\n @Event() validateName: EventEmitter<string | undefined>;\n\n connectedCallback() {\n // this.#validateInitialName();\n }\n\n async componentWillLoad() {\n this.#init();\n this.#componentLocale = await Locale.getComponentStrings(this.el);\n this.typeCategoriesChanged(this.typeCategories);\n this.#initializeSelectedTypeMap();\n }\n\n componentDidLoad() {\n this.#setSelectedCategoryOnActionList();\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 // - - - - - - - - - - -\n\n #cancelCallbackHandler = async (): Promise<void> => {\n await this.cancelCallback();\n };\n\n #categoryOnSelectionChangedHandler = (\n selectionEvent: CustomEvent<ActionListItemModelExtended[]>\n ): void => {\n const selection = selectionEvent.detail;\n if (selection.length > 0) {\n const selectedCategory = this.typeCategories.find(\n category => category.id === selection[0].item.id\n );\n if (selectedCategory) {\n this.selectedCategory = selectedCategory;\n if (selectedCategory.types.length > 0) {\n this.selectedType = selectedCategory.types.find(\n type => type.id === this.selectedTypeMap.get(selectedCategory.id)\n );\n }\n }\n }\n };\n\n #createCallbackHandler = async (): Promise<void> => {\n // validate name first\n const nameValidation: string | undefined = await this.validateNameCallback(\n this.#nameEl.value\n );\n if (!!nameValidation) {\n // name is invalid\n this.#validateNameHandler(nameValidation);\n return;\n }\n\n const data: NewObjectData = {\n typeId: this.selectedType?.id,\n name: this.#nameEl.value,\n description: !this.#descriptionModifiedByUser\n ? undefined\n : this.#descriptionEl.value,\n moduleId: this.#moduleFolderEl?.value?.id\n };\n const result = await this.createCallback(data);\n this.#validateNameHandler(result);\n };\n\n #descriptionValueHandler = () => {\n if (this.#nameModifiedByUser || this.#descriptionModifiedByUser) {\n console.log(\"description modified by user\");\n return this.#descriptionEl.value;\n } else {\n return this.selectedType.name;\n }\n };\n\n #getNameSuggestion = (selectedType: TypeData) => {\n // Type name can include whitespaces; we need to replace all whitespaces to\n // avoid invalid suggestions:\n return selectedType.name.replace(/\\s/g, \"\");\n };\n\n /**\n * This method defines the initial selected category and type, and it then\n * initializes the name value.\n */\n // eslint-disable-next-line @stencil-community/own-props-must-be-private\n #init = () => {\n const defaultTypeFound = this.#setDefaultType(this.defaultTypeId);\n if (!defaultTypeFound) {\n this.selectedCategory = this.typeCategories[0];\n this.selectedType = this.selectedCategory.types[0];\n }\n if (this.selectedType && this.selectedType.name.length > 0) {\n this.name = this.#getNameSuggestion(this.selectedType);\n this.description = this.selectedType.name;\n }\n };\n\n /**\n * Initializes the selectedTypeMap with the defaultTypeId if it exists, otherwise\n * it initializes the selectedTypeMap with the first type of each category.\n */\n // eslint-disable-next-line @stencil-community/own-methods-must-be-private\n #initializeSelectedTypeMap() {\n this.typeCategories.forEach(category => {\n if (this.defaultTypeId && category.id === this.selectedCategory.id) {\n this.selectedTypeMap.set(category.id, this.selectedType.id);\n } else {\n this.selectedTypeMap.set(category.id, category.types[0].id);\n }\n });\n }\n\n #nameValueHandler = (): string => {\n if (this.#nameModifiedByUser) {\n return this.#nameEl.value;\n } else {\n return this.#getNameSuggestion(this.selectedType);\n }\n };\n\n #onBlurNameHandler = async () => {\n const result: string | undefined = await this.validateNameCallback(\n this.#nameEl.value\n );\n this.#validateNameHandler(result);\n };\n\n #onInputDescriptionHandler = (e: CustomEvent<string>) => {\n this.description = e.detail;\n this.#descriptionModifiedByUser = true;\n };\n\n #onInputNameHandler = async (e: CustomEvent<any> | InputEvent) => {\n const name = e.detail;\n if (!this.#descriptionModifiedByUser) {\n // Description should be equal to name, unless the description was already\n // modified by the user.\n this.#descriptionEl.value = name;\n }\n this.#nameModifiedByUser = true;\n };\n\n #onNameValueChangedHandler = async (e: CustomEvent<string>) => {\n const name = e.detail;\n const result: string | undefined = await this.validateNameCallback(name);\n this.#validateNameHandler(result);\n };\n\n #renderModuleFolder = () => {\n if (this.selectedType.hasModule || this.selectedType.hasFolder) {\n let labelDescription = this.#componentLocale.moduleFolder;\n if (!this.selectedType.hasFolder) {\n labelDescription = this.#componentLocale.moduleOnly;\n } else if (!this.selectedType.hasModule) {\n labelDescription = this.#componentLocale.folderOnly;\n }\n return [\n <label\n // Module/folder\n class=\"label api-module-label\"\n htmlFor=\"module\"\n >\n {labelDescription}\n </label>,\n <gx-ide-entity-selector\n id=\"module\"\n class=\"api-module-control\"\n part=\"module\"\n labelPosition=\"none\"\n value={this.parent}\n defaultValue={this.defaultParent}\n selectEntityCallback={this.selectModuleCallback}\n ref={(el: HTMLGxIdeEntitySelectorElement) =>\n (this.#moduleFolderEl = el as HTMLGxIdeEntitySelectorElement)\n }\n ></gx-ide-entity-selector>\n ];\n }\n return null;\n };\n\n #setDefaultType = (typeId: string | undefined): boolean => {\n if (!typeId) {\n return false;\n }\n let found = false;\n outerLoop: for (let i = 0; i < this.typeCategories.length; i++) {\n for (let j = 0; j < this.typeCategories[i].types.length; j++) {\n const loopTypeId = this.typeCategories[i].types[j].id;\n if (loopTypeId === typeId) {\n this.selectedCategory = this.typeCategories[i];\n this.selectedType = this.typeCategories[i].types[j];\n found = true;\n break outerLoop;\n }\n }\n }\n return found;\n };\n\n #setSelectedCategoryOnActionList = () => {\n if (this.selectedCategory) {\n // update model by setting the selected category\n this.#categoriesActionListEl.updateItemProperties(\n this.selectedCategory.id,\n {\n selected: true,\n type: \"actionable\"\n }\n );\n }\n };\n\n #typeOnSelectionChangedHandler = (\n selectionEvent: CustomEvent<ActionListItemModelExtended[]>\n ) => {\n const selection = selectionEvent.detail;\n if (selection.length > 0) {\n this.selectedType = this.selectedCategory.types.find(\n type => type.id === selection[0].item.id\n );\n this.selectedTypeMap.set(this.selectedCategory.id, this.selectedType.id);\n }\n };\n\n // #validateInitialName = async () => {\n // const result: string | undefined = await this.validateNameCallback(\n // this.name\n // );\n // this.#validateNameHandler(result);\n // };\n\n /**\n * If the parameter is undefined, it means the name is valid. Otherwise, if it\n * receives a string, it indicates that the name is not valid. The string is the\n * error message to display.\n */\n // eslint-disable-next-line @stencil-community/own-props-must-be-private\n #validateNameHandler = (result: string | undefined): void => {\n this.nameValidationErrorMessage = result;\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\n <section class=\"main\">\n <section class=\"field-group categories-types-layout spacing-body-inline spacing-body-block-start\">\n <div class=\"field field-block\">\n <label class=\"label\">\n {this.#componentLocale.categorySelectionTitle}\n </label>\n <ch-action-list-render\n // #select a category\n // TODO: The \"scrollable\" class is a WA since the action-list currently does not support scrollbar customization\n class=\"list-box\"\n selection=\"single\"\n model={this.typeCategoriesActionListModel}\n sortItemsCallback={sortActionListDefault}\n onSelectedItemsChange={this.#categoryOnSelectionChangedHandler}\n ref={(el: HTMLChActionListRenderElement) =>\n (this.#categoriesActionListEl =\n el as HTMLChActionListRenderElement)\n }\n ></ch-action-list-render>\n </div>\n\n <div class=\"field field-block\">\n <label class=\"label\">\n {this.selectedCategory.name\n ? `${this.selectedCategory.name} ${\n this.#componentLocale.typeSelectionTitleSuffix\n }`\n : this.#componentLocale.typeSelectionTitle}\n </label>\n <ch-action-list-render\n // #data management types\n // TODO: The \"scrollable\" class is a WA since the action-list currently does not support scrollbar customization\n class=\"list-box\"\n selection=\"single\"\n sortItemsCallback={sortActionListDefault}\n model={mapTypeDataToActionListModel(\n this.selectedCategory.types,\n this.selectedCategory.id,\n this.selectedType.id\n )}\n onSelectedItemsChange={this.#typeOnSelectionChangedHandler}\n ></ch-action-list-render>\n </div>\n </section>\n\n <section class=\"api-description-layout field-group spacing-body-inline\">\n <h2\n // API Description\n class=\"text-align-center api-description-title heading-5\"\n >\n {this.selectedType?.description}\n </h2>\n\n <label\n // Name\n class=\"label api-name-label\"\n htmlFor=\"name\"\n >\n {this.#componentLocale.objectName}\n </label>\n <div>\n <ch-edit\n autoFocus\n class={{\n \"form-input\": true,\n \"api-name-control\": true,\n \"form-input-error\": !!this.nameValidationErrorMessage\n }}\n placeholder=\"Name\"\n value={this.#nameValueHandler()}\n ref={(el: HTMLChEditElement) =>\n (this.#nameEl = el as HTMLChEditElement)\n }\n onChange={this.#onNameValueChangedHandler}\n onInput={this.#onInputNameHandler as any}\n onBlur={this.#onBlurNameHandler}\n part=\"name\"\n ></ch-edit>\n {this.nameValidationErrorMessage && (\n <ch-tooltip\n class=\"tooltip\"\n actionElement={this.#nameEl as unknown as HTMLButtonElement}\n blockAlign={config.tooltipSettings.blockAlign}\n inlineAlign={config.tooltipSettings.inlineAlign}\n delay={config.tooltipSettings.delay}\n >\n {this.nameValidationErrorMessage}\n </ch-tooltip>\n )}\n </div>\n\n <label\n // Description\n class=\"label api-description-label\"\n htmlFor=\"description\"\n >\n {this.#componentLocale.objectDescription}\n </label>\n <ch-edit\n autoFocus\n class=\"form-input api-description-control\"\n placeholder=\"Description\"\n value={this.#descriptionValueHandler()}\n // TODO: toolTip={config.tooltip}\n ref={(el: HTMLChEditElement) =>\n (this.#descriptionEl = el as HTMLChEditElement)\n }\n onInput={this.#onInputDescriptionHandler as any}\n part=\"description\"\n ></ch-edit>\n\n {this.#renderModuleFolder()}\n </section>\n <footer class=\"footer control-footer-with-border spacing-body-inline spacing-body-block-end \">\n <div class=\"buttons-spacer\">\n <button\n // cancel\n class=\"button-secondary\"\n onClick={this.#cancelCallbackHandler}\n part=\"button button-cancel\"\n >\n {this.#componentLocale.footer.btnCancel}\n </button>\n\n <button\n // create\n class=\"button-primary\"\n onClick={this.#createCallbackHandler}\n disabled={!!this.nameValidationErrorMessage}\n part=\"button button-create\"\n >\n {this.#componentLocale.footer.btnCreate}\n </button>\n </div>\n </footer>\n </section>\n </Host>\n );\n }\n}\n\nexport interface NewObjectData {\n typeId: string;\n name: string;\n description: string | undefined;\n moduleId: string;\n}\n\nexport type ValidateNameCallback = (\n name: string\n) => Promise<string | undefined>;\n\nexport type SelectModuleCallback = () => Promise<EntityData | undefined>;\n\nexport type CreateCallback = (\n data: NewObjectData\n) => Promise<string | undefined>;\n\nexport type CancelCallback = () => Promise<void>;\n\nexport type TypeCategoryData = {\n id: string;\n name: string;\n icon: string;\n types: TypeData[];\n};\n\nexport type TypeData = {\n id: string;\n name: string;\n icon: string;\n hasModule: boolean;\n hasFolder: boolean;\n description: string;\n};\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"names":["listSelectorCss","GxIdeListSelector","this","evaluateChecked","allListItems","Array","from","el","querySelectorAll","checkedItems","filter","item","itemChecked","required","length","type","forEach","i","evaluateInitialValue","getChecked","value","itemValue","values","checked","push","allItems","clearPrevSelected","currentSelected","itemId","componentWillLoad","itemSelectionChangedHandler","event","stopPropagation","selectedItem","detail","checkedItemsInfo","newValue","itemIcon","icon","undefined","selectionChanged","emit","render","h","Host","exportparts","listTitle","ordered","class","part","listSelectorItemCss","GxIdeListSelectorItem","hasUniversalSlot","index","evaluateParentIsListSelector","parentList","parentElement","parentIsListSelector","nodeName","evaluateType","evaluateSelectable","readonly","evaluateEllipsis","ellipsis","evaluateBorder","noBorder","noItemsBorder","evaluateUniversalSlot","querySelector","assignName","listName","name","evaluateOrderedList","children","indexOf","evaluateIconColor","iconsColor","iconColor","evaluateIconSize","iconsSize","iconSize","onChangeHandler","e","target","itemSelectionChanged","role","id","onChange","disabled","htmlFor","size","color"],"sources":["src/components/_helpers/list-selector/list-selector.scss?tag=gx-ide-list-selector&encapsulation=shadow","src/components/_helpers/list-selector/list-selector.tsx","src/components/_helpers/list-selector/list-selector-item/list-selector-item.scss?tag=gx-ide-list-selector-item","src/components/_helpers/list-selector/list-selector-item/list-selector-item.tsx"],"sourcesContent":["@import \"../../../global/reset.scss\";\n@import \"../../../global/gx-ide-mixins.scss\";\n@import \"../../../global/gx-ide-common.scss\";\n@include box-sizing;\n\n:host {\n display: flex;\n flex-direction: column;\n max-height: 100%;\n font-family: var(--mer-font-family--primary);\n}\ngxg-title {\n display: block;\n margin-block-end: var(--gxg-label-margin-vertical);\n}\n.list {\n @include reset-defaults;\n @include reset-list;\n @include base-component-styles;\n @include gxg-scrollbar;\n display: block;\n background-color: var(--mer-color__surface);\n max-height: 100%;\n overflow-y: auto;\n border: 1px solid var(--gx-ide-container-border-color);\n border-radius: var(--ds-form-control-border-radius);\n}\n/*no border*/\n:host([no-list-border]) {\n .list {\n border: none;\n }\n}\n","/* STENCIL IMPORTS */\nimport {\n Component,\n Host,\n h,\n Prop,\n Listen,\n // Watch,\n Element,\n Event,\n EventEmitter\n} from \"@stencil/core\";\n/* OTHER LIBRARIES IMPORTS */\nimport { Color, Size } from \"@genexus/gemini/dist/types/components/icon/icon\";\n/* CUSTOM IMPORTS */\nimport { ItemData } from \"./list-selector-item/list-selector-item\";\n\n@Component({\n tag: \"gx-ide-list-selector\",\n styleUrl: \"list-selector.scss\",\n shadow: true\n})\nexport class GxIdeListSelector {\n // 1.OWN PROPERTIES | WATCH'S //\n\n // 2. REFERENCE TO ELEMENTS //\n\n @Element() el: HTMLGxIdeListSelectorElement;\n\n // 3.STATE() VARIABLES //\n\n // 4.PUBLIC PROPERTY API | WATCH'S //\n\n /**\n * The list title (optional)\n */\n @Prop() readonly listTitle: string;\n\n /**\n * It determines if the list is ordered, or unordered\n */\n @Prop() readonly ordered: boolean = false;\n\n /**\n * Makes the list readonly\n */\n @Prop() readonly readonly: boolean = false;\n\n /**\n * It determines the type of list: single-selection or multi-selection\n */\n @Prop() readonly type: \"single-selection\" | \"multi-selection\" =\n \"single-selection\";\n\n /**\n * Makes the list required\n */\n @Prop() readonly required: boolean = false;\n\n /**\n * The presence of this property will force all the items to not-wrap, and have ellipsis\n */\n @Prop() readonly ellipsis: boolean = false;\n\n /**\n * The value of the initial (or initials) checked list-item/s\n */\n @Prop({ mutable: true }) value: string | string[];\n\n /**\n * Icons color\n */\n @Prop() readonly iconsColor: Color = \"auto\";\n\n /**\n * Icons size\n */\n @Prop() readonly iconsSize: Size = \"small\";\n\n // @Watch(\"value\")\n // valueHandler(newValue: string) {\n // const foundItem = this.getItemByValue(newValue);\n // if (foundItem) {\n // const input = foundItem.querySelector(\"input\");\n // input.checked = true;\n // }\n // }\n\n /**\n * The name of this list. This is a required attribute for the list to work.\n */\n @Prop() readonly listName!: string;\n\n /**\n * Disables the items border\n */\n @Prop() readonly noItemsBorder: boolean = false;\n\n /**\n * Disables the list border\n */\n @Prop({ reflect: true }) readonly noListBorder: boolean = false;\n\n // 5.EVENTS (EMIT) //\n\n /**\n * Emits the actual selection\n */\n @Event() selectionChanged: EventEmitter<CheckedItemsInfo>;\n\n // 6.COMPONENT LIFECYCLE METHODS //\n\n componentWillLoad() {\n this.evaluateChecked();\n this.evaluateInitialValue();\n }\n\n // 7.LISTENERS //\n\n @Listen(\"itemSelectionChanged\", { capture: true })\n itemSelectionChangedHandler(event: CustomEvent<ItemData>) {\n event.stopPropagation();\n const selectedItem = event.detail;\n if (this.type === \"single-selection\") {\n this.clearPrevSelected(selectedItem);\n }\n const checkedItemsInfo: CheckedItemsInfo = [];\n const checkedItems: HTMLGxIdeListSelectorItemElement[] = this.getChecked();\n const newValue: string | string[] = [];\n checkedItems.forEach(item => {\n const value = item.itemValue;\n newValue.push(value);\n checkedItemsInfo.push({\n itemId: item.itemId,\n itemValue: value,\n itemIcon: item.icon,\n itemChecked: true\n });\n });\n /* update this.value*/\n if (this.type === \"single-selection\" && newValue.length > 0) {\n this.value = newValue[0] || undefined;\n } else {\n /* multi-selection*/\n this.value = newValue;\n }\n /* emit selectionChanged*/\n this.selectionChanged.emit(checkedItemsInfo);\n }\n\n // 8.PUBLIC METHODS API //\n\n // 9.LOCAL METHODS //\n\n /**\n * It evaluates the checked items, and checks or unchecks if needed\n */\n private evaluateChecked = () => {\n const allListItems = Array.from(\n this.el.querySelectorAll(\"gx-ide-list-selector-item\")\n );\n const checkedItems = allListItems.filter(item => item.itemChecked);\n /**\n * INDEX\n * 1.required and no one checked\n * 2.single-selection, and more than one checked\n */\n\n /* 1.required and no one checked*/\n if (this.required && checkedItems.length === 0) {\n allListItems[0].itemChecked = true;\n } else if (this.type === \"single-selection\" && checkedItems.length > 1) {\n /* 2.single-selection, and more than one checked*/\n checkedItems.forEach((item, i) => {\n if (i !== 0) {\n item.itemChecked = false;\n }\n });\n }\n };\n\n /**\n * It evaluates the initial value/s\n */\n private evaluateInitialValue = () => {\n const checkedItems = this.getChecked();\n if (this.type === \"single-selection\" && checkedItems.length > 0) {\n this.value = checkedItems[0].itemValue;\n } else if (this.type === \"multi-selection\" && checkedItems.length > 0) {\n const values: string[] = [];\n checkedItems.forEach(checked => {\n values.push(checked.itemValue);\n });\n this.value = values;\n }\n };\n\n private getChecked = (): HTMLGxIdeListSelectorItemElement[] => {\n const checkedItems: HTMLGxIdeListSelectorItemElement[] = [];\n const allItems = this.el.querySelectorAll(\"gx-ide-list-selector-item\");\n allItems.forEach(item => {\n if (item.itemChecked) {\n checkedItems.push(item);\n }\n });\n return checkedItems;\n };\n\n private clearPrevSelected = (currentSelected: ItemData) => {\n const allItems = this.el.querySelectorAll(\"gx-ide-list-selector-item\");\n allItems.forEach(item => {\n if (item.itemChecked && item.itemId !== currentSelected.itemId) {\n item.itemChecked = false;\n }\n });\n };\n\n // 10.RENDER() FUNCTION //\n\n render() {\n return (\n <Host exportparts=\"input:input\">\n {this.listTitle ? (\n <gxg-title type=\"title-04\">{this.listTitle}</gxg-title>\n ) : null}\n {this.ordered ? (\n <ol class=\"list\" part=\"list\">\n <slot></slot>\n </ol>\n ) : (\n <ul class=\"list\" part=\"list\">\n <slot></slot>\n </ul>\n )}\n </Host>\n );\n }\n}\n\nexport type CheckedItemsInfo = ItemData[];\n","@import \"../../../../global/gx-ide-mixins.scss\";\n@import \"../../../../../node_modules/@genexus/gemini/dist/collection/globals/mixins.scss\";\n@include box-sizing;\n\ngx-ide-list-selector-item {\n display: block;\n max-width: 100%;\n display: flex;\n font-size: inherit;\n\n &:hover {\n .label {\n background-color: var(--ds-item-background-color--hover);\n cursor: pointer;\n }\n input:checked + .label {\n background-color: inherit;\n }\n }\n}\ngx-ide-list-selector-item:not(:first-child) {\n border-block-start: var(--gx-ide-list-items-border);\n}\n/*change border color if checked*/\ngx-ide-list-selector-item:not(:first-child):has(input:checked) {\n border-block-color: var(--ds-item-border-color--selected);\n}\n/*readonly*/\ngx-ide-list-selector-item[readonly]:not([readonly=\"false\"]) {\n .label {\n pointer-events: none;\n background-color: transparent;\n }\n}\n/*ellipsis*/\ngx-ide-list-selector-item[ellipsis]:not([ellipsis=\"false\"]) {\n .label {\n &__description {\n @include elipsis;\n }\n }\n}\n\ngx-ide-list-selector-item input {\n width: 0;\n height: 0;\n opacity: 0;\n margin: 0;\n\n &:focus + .label {\n @include form-element-common-styles-focus-type-1();\n outline-offset: var(--gxg-tree-view-item__outline-offset--active);\n }\n &:checked + .label {\n background-color: inherit;\n color: var(--gxg-grid-row-cell__color--selected);\n }\n}\n\n/*label-wrapper*/\ngx-ide-list-selector-item .label {\n width: 100%;\n}\n/*label*/\ngx-ide-list-selector-item .label {\n &__index {\n }\n &__wrapper {\n display: flex;\n min-height: 28px; /*this prevents height difference between items that have icons and items that do not*/\n align-items: center;\n gap: var(--mer-spacing--xs);\n padding: var(--mer-spacing--2xs) var(--mer-spacing--xs);\n width: 100%;\n }\n &__description {\n flex: 1;\n display: flex;\n align-items: center;\n gap: var(--mer-spacing--xs);\n }\n}\n\n/*no border*/\ngx-ide-list-selector-item[no-border] {\n border-block-start: none;\n}\n\n/*universal slot*/\ngx-ide-list-selector-item .label__universal-slot {\n display: flex;\n align-items: center;\n justify-content: center;\n}\n","/* STENCIL IMPORTS */\nimport {\n Component,\n Host,\n h,\n Prop,\n Event,\n EventEmitter,\n Element\n} from \"@stencil/core\";\n/* OTHER LIBRARIES IMPORTS */\nimport { Color, Size } from \"@genexus/gemini/dist/types/components/icon/icon\";\n/* CUSTOM IMPORTS */\n@Component({\n tag: \"gx-ide-list-selector-item\",\n styleUrl: \"list-selector-item.scss\",\n shadow: false\n})\nexport class GxIdeListSelectorItem {\n /*\nINDEX:\n1.OWN PROPERTIES \n2.REFERENCE TO ELEMENTS\n3.STATE() VARIABLES\n4.PUBLIC PROPERTY API | WATCH'S\n5.EVENTS (EMIT)\n6.COMPONENT LIFECYCLE METHODS\n7.LISTENERS\n8.PUBLIC METHODS API\n9.LOCAL METHODS\n10.RENDER() FUNCTION\n*/\n\n // 1.OWN PROPERTIES | WATCH'S //\n\n private parentIsListSelector: boolean;\n private parentList: HTMLGxIdeListSelectorElement;\n private checked: boolean;\n private name: string;\n private type: string;\n private hasUniversalSlot = false;\n private index: string = undefined;\n\n // 2. REFERENCE TO ELEMENTS //\n\n @Element() el: HTMLGxIdeListSelectorItemElement;\n\n // 3.STATE() VARIABLES //\n\n // 4.PUBLIC PROPERTY API | WATCH'S //\n\n /**\n * The item id\n */\n @Prop({ reflect: true }) readonly itemId!: string;\n\n /**\n * The item value, that acts as a label as well\n */\n @Prop() readonly itemValue!: string;\n\n /**\n * This will set the input as checked\n */\n @Prop({ mutable: true }) itemChecked = false;\n\n /**\n * It allows to select the item by clicking on it. It will emit the item-id\n */\n @Prop({ mutable: true, reflect: true }) readonly: boolean;\n\n /**\n * The presence of this property will force the item text to not-wrap, and have ellipsis\n */\n @Prop({ mutable: true, reflect: true }) ellipsis: boolean;\n\n /**\n * The gemini icon name\n */\n @Prop() readonly icon: string;\n\n /**\n * The gemini icon color. If no one provided, it will inherit the value from the list-selector\n */\n @Prop({ mutable: true }) iconColor: Color;\n\n /**\n * The gemini icon size. Inherited from the parent.\n */\n @Prop({ mutable: true }) iconSize: Size;\n\n /**\n * Disables the item border\n */\n @Prop({ mutable: true, reflect: true }) noBorder = false;\n\n /**\n * Displays the universal slot at the end, instead of at the benign\n */\n @Prop({ reflect: true }) readonly universalSlotEnd = false;\n\n // 5.EVENTS (EMIT) //\n\n componentWillLoad() {\n this.evaluateParentIsListSelector();\n this.evaluateType();\n this.evaluateSelectable();\n this.evaluateEllipsis();\n this.evaluateChecked();\n this.evaluateIconColor();\n this.evaluateIconSize();\n this.evaluateBorder();\n this.evaluateUniversalSlot();\n this.assignName();\n this.evaluateOrderedList();\n }\n\n /**\n * Emits the item data\n */\n @Event() itemSelectionChanged: EventEmitter<ItemData>;\n\n // 6.COMPONENT LIFECYCLE METHODS //\n\n // 7.LISTENERS //\n\n // 8.PUBLIC METHODS API //\n\n // 9.LOCAL METHODS //\n\n /**\n * Checks if this item parentElement is a gx-ide-list-selector, and assigns a reference\n */\n private evaluateParentIsListSelector = () => {\n const parentList = this.el.parentElement as HTMLGxIdeListSelectorElement;\n this.parentIsListSelector = parentList?.nodeName === \"GX-IDE-LIST-SELECTOR\";\n this.parentIsListSelector && (this.parentList = parentList);\n };\n\n /**\n * Determines the type of item, based on the parent list-selector 'type' property value\n */\n private evaluateType = () => {\n const parentList: HTMLGxIdeListSelectorElement = this.el\n .parentElement as HTMLGxIdeListSelectorElement;\n this.type = parentList.type === \"single-selection\" ? \"radio\" : \"checkbox\";\n };\n\n /**\n * Evaluates if is selectable, considering the parent list-selector 'selectable' property value, only if it is undefined on this item\n */\n private evaluateSelectable = () => {\n if (this.readonly === undefined && this.parentIsListSelector) {\n this.readonly = this.parentList.readonly;\n }\n };\n\n /**\n * Evaluates if text should truncate with ellipsis, considering the parent list-selector 'ellipsis' property value, only if it is undefined on this item\n */\n private evaluateEllipsis = () => {\n if (this.ellipsis === undefined && this.parentIsListSelector) {\n this.ellipsis = this.parentList.ellipsis;\n }\n };\n\n /**\n * Evaluates if this item should be initially checked, only if the parent list-selector listValue equals this item value.\n */\n private evaluateChecked = () => {\n if (\n this.checked === undefined &&\n this.parentIsListSelector &&\n this.parentList.value !== undefined &&\n this.parentList.value === this.itemValue\n ) {\n this.checked = true;\n }\n };\n\n private evaluateBorder = () => {\n if (this.parentIsListSelector) {\n this.noBorder = this.parentList.noItemsBorder;\n }\n };\n\n private evaluateUniversalSlot = () => {\n this.hasUniversalSlot = !!this.el.querySelector(\"[slot=universal]\");\n };\n\n /**\n * Gets the listName required value, that is needed for the list selection to properly work\n */\n private assignName = () => {\n this.parentIsListSelector &&\n this.parentList.listName &&\n (this.name = this.parentList.listName);\n };\n\n private evaluateOrderedList = () => {\n if (this.parentIsListSelector && this.parentList.ordered) {\n let index: number | string =\n Array.from(this.parentList.children).indexOf(this.el) + 1;\n if (index < 10) {\n // This will make descriptions to be nicely aligned, between one digit, and two digit indexes items.\n index = `0${index}`;\n } else {\n index = `${index}`;\n }\n this.index = index;\n }\n };\n\n private evaluateIconColor = () => {\n this.parentIsListSelector &&\n this.parentList.iconsColor &&\n this.iconColor === undefined &&\n (this.iconColor = this.parentList.iconsColor);\n };\n\n private evaluateIconSize = () => {\n this.parentIsListSelector &&\n this.parentList.iconsSize &&\n (this.iconSize = this.parentList.iconsSize);\n };\n\n private onChangeHandler = (e: Event) => {\n this.itemChecked = (e.target as HTMLInputElement).checked;\n this.itemSelectionChanged.emit({\n itemId: this.itemId,\n itemValue: this.itemValue,\n itemIcon: this.icon,\n itemChecked: this.itemChecked\n });\n };\n\n // 10.RENDER() FUNCTION //\n\n render() {\n return (\n <Host role=\"listitem\">\n <input\n type={this.type}\n id={this.itemId}\n name={this.name}\n value={this.itemValue}\n checked={this.itemChecked}\n onChange={this.onChangeHandler}\n disabled={this.readonly}\n part=\"input\"\n />\n <label class=\"label\" htmlFor={this.itemId} part=\"label\">\n <div class=\"label__wrapper\">\n {this.index ? (\n <span class=\"label__index\">{this.index}. </span>\n ) : null}\n {this.icon ? (\n <gxg-icon\n class=\"label__icon\"\n type={this.icon}\n size=\"small\"\n color={this.iconColor}\n part=\"icon\"\n ></gxg-icon>\n ) : null}\n {this.hasUniversalSlot ? (\n <span class=\"label__universal-slot\" part=\"universal-slot\">\n <slot name=\"universal\"></slot>\n </span>\n ) : null}\n <span class=\"label__description\" part=\"description\">\n {this.itemValue ? this.itemValue : <slot></slot>}\n </span>\n </div>\n </label>\n </Host>\n );\n }\n}\n\nexport type ItemData = {\n itemId: string;\n itemValue: string;\n itemIcon?: string;\n itemChecked: boolean;\n};\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"names":["KB_PROPERTY","KB_OBJECT","getPropertyIcon","typeId","kbPropertiesTypes","find","propertyType","id","icon","convertObjectTypeToTreeItem","objectType","caption","name","startImgSrc","leaf","parts","expanded","items","convertObjectToTreeItem","object","objectTypes","get","metadata","convertPropertyToTreeItem","property","updateObjectsTreeModel","objects","objectTypesMap","objectsSet","actualTreeState","updatedTreeData","forEach","has","objectTreeItem","objectTypeTreeItemIndex","findIndex","treeItem","objectTypeTreeItem","push","add","convertKbPropertiesDataToTreeItemData","properties","propertyAlreadyExists","node","undefined","propertyTreeItem","unshift","clearKbPropertiesFromTree","filter","item","kbManagerExportCss","FILE_ICON","getIconPath","category","colorType","SETTINGS_ICON","GENERAL_REFERENCES_ICON","MENUS_NEW_OBJECT_ICON","TREE_VIEW_ICON","CHECKBOX_CHECKED_VALUE","CSS_BUNDLES","GxIdeKbManagerExport","_GxIdeKbManagerExport_addKbDescriptionEl","set","this","_GxIdeKbManagerExport_componentLocale","_GxIdeKbManagerExport_animateEmptyState","_GxIdeKbManagerExport_exportAllEl","_GxIdeKbManagerExport_fileNameEl","_GxIdeKbManagerExport_kBPropertiesData","_GxIdeKbManagerExport_objectTypesMap","Map","_GxIdeKbManagerExport_objectsSet","Set","_GxIdeKbManagerExport_addKBPropertiesCallbackHandler","async","_e","addKbPropertiesIsChecked","__classPrivateFieldGet","value","__classPrivateFieldSet","addKBPropertiesCallback","length","objectsTreeViewModel","_GxIdeKbManagerExport_addObjectsCallbackHandler","exportAllIsChecked","addedObjects","addObjectsCallback","_GxIdeKbManagerExport_updateObjects","call","_GxIdeKbManagerExport_addReferencesCallbackHandler","addReferencesCallback","checkedObjectsIds","_GxIdeKbManagerExport_cancelCallbackHandler","cancelled","cancelCallback","exportingIsInProcess","_GxIdeKbManagerExport_clearButtonHandler","clear","_GxIdeKbManagerExport_evaluateContentToDisplay","hasObjects","h","isAnimated","stateTitle","main","noObjectsToDisplay","key","class","onClick","beginByADdingSomeObjects","stateIconSrc","exportAllMessage","checkbox","checked","dragDisabled","dropDisabled","_GxIdeKbManagerExport_evaluateTreeViewFilters","filterType","model","showLines","toggleCheckboxes","sortItemsCallback","_GxIdeKbManagerExport_sortTreeItems","onCheckedItemsChange","_GxIdeKbManagerExport_objectsTreeCheckedItemsChangedHandler","_GxIdeKbManagerExport_evaluateObjects","_GxIdeKbManagerExport_exportAllChangedHandler","_event","_GxIdeKbManagerExport_exportCallbackHandler","fileName","checkedKbPropertiesIds","checkedPropertiesIds","checkedObjectIds","exportCallback","then","event","allItemsWithCheckbox","detail","values","atLeastOnePropertyItemIsChecked","atLeastOneObjectItemIsChecked","subModel","sort","a","b","localeCompare","_GxIdeKbManagerExport_renderFooter","referencesButtonEnabled","clearButtonEnabled","disabled","part","footer","clearButton","src","addReferencesButton","addButton","objectsDataArray","newObjectsTreeModel","objectsTreeViewModelChanged","newObjectsTreeViewModel","objectTypesChanged","newObjectTypesArray","_GxIdeKbManagerExport_instances","_GxIdeKbManagerExport_objectsTypesArrayToMap","componentWillLoad","Locale","getComponentStrings","el","render","exportButtonEnabled","cancelButtonEnabled","Host","htmlFor","header","exportFileName","autoFocus","ref","exportButton","cancelButton","optionsButton","title","optionsCallback","addKnowledgeBaseDescription","checkedValue","onInput","exportAll","loader","cancelLabel","loaderTitle","show","objectTypesArray"],"sources":["src/components/kb-manager-export/helpers.ts","src/components/kb-manager-export/kb-manager-export.scss?tag=gx-ide-kb-manager-export&encapsulation=shadow","src/components/kb-manager-export/kb-manager-export.tsx"],"sourcesContent":["// /* Tree View */\nimport {\n TreeViewItemModel,\n TreeViewModel\n} from \"@genexus/chameleon-controls-library\";\nimport { ObjectData, KBPropertyData, KBPropertyType } from \"./types\";\nimport { ObjectType } from \"../../common/types\";\nexport const KB_PROPERTY = \"property\";\nexport const KB_OBJECT = \"object\";\n\nconst getPropertyIcon = (\n typeId: string,\n kbPropertiesTypes: KBPropertyType[]\n): string =>\n // The object icon has to be retrieved from the ObjectTypes array, by\n // matching the ObjectData typeId with the ObjectType id\n kbPropertiesTypes.find(propertyType => propertyType.id === typeId).icon;\n\nconst convertObjectTypeToTreeItem = (\n objectType: ObjectType\n): TreeViewItemModel => ({\n caption: objectType.name,\n id: objectType.id,\n startImgSrc: objectType.icon,\n leaf: false,\n parts: \"object-type tree-view-item\",\n expanded: true,\n items: []\n});\n\nconst convertObjectToTreeItem = (\n object: ObjectData,\n objectTypes: Map<string, ObjectType>\n): TreeViewItemModel => ({\n caption: object.name,\n id: object.id,\n startImgSrc: objectTypes.get(object.typeId).icon,\n parts: \"object tree-view-item\",\n metadata: KB_OBJECT,\n leaf: true\n});\n\nconst convertPropertyToTreeItem = (\n property: KBPropertyData,\n kbPropertiesTypes: KBPropertyType[]\n): TreeViewItemModel => ({\n caption: property.name,\n id: property.id,\n startImgSrc: getPropertyIcon(property.typeId, kbPropertiesTypes),\n parts: \"property tree-view-item\",\n metadata: KB_PROPERTY,\n leaf: true\n});\n\n/**\n * Updates the tree model with the provided objects.\n * Objects may already exist and are placed under their parent node.\n * If the parent node doesn't exist (identified by typeId on ObjectTypes),\n * it is created and added at the bottom.\n *\n * @param {ObjectData[] | undefined} objects - The array of objects to update.\n * @param {Map<string, ObjectType>} objectTypesMap - A map of object types by ID.\n * @param {Set<string>} objectsSet - A set of existing object IDs.\n * @param {TreeViewModel} actualTreeState - The current tree state to be updated.\n * @returns {TreeViewModel} - The updated tree view model.\n */\nexport const updateObjectsTreeModel = (\n objects: ObjectData[] | undefined,\n objectTypesMap: Map<string, ObjectType>,\n objectsSet: Set<string>,\n actualTreeState: TreeViewModel\n): TreeViewModel => {\n if (!objects) {\n return [...actualTreeState];\n }\n\n const updatedTreeData: TreeViewModel = [...actualTreeState];\n objects.forEach(object => {\n // objects that already exists in the actual actualTreeState should not be added.\n\n if (objectsSet.has(object.id)) {\n // object already exists\n return;\n }\n\n const objectTreeItem = convertObjectToTreeItem(object, objectTypesMap);\n\n // TODO: Improve the algorithm efficiency. This check visits potentially all nodes\n // from the TreeViewModel on each iteration. Using a Map to pre-store the TreeView\n // nodes would improve efficiency.\n const objectTypeTreeItemIndex = updatedTreeData.findIndex(\n treeItem => treeItem.id === object.typeId\n );\n\n if (objectTypeTreeItemIndex === -1) {\n // Create and add new object type tree item\n const objectType = objectTypesMap.get(object.typeId);\n if (objectType) {\n const objectTypeTreeItem = convertObjectTypeToTreeItem(objectType);\n objectTypeTreeItem.items.push(objectTreeItem);\n updatedTreeData.push(objectTypeTreeItem);\n }\n } else {\n // objectType exists already. insert object as children of the object type tree item.\n updatedTreeData[objectTypeTreeItemIndex].items.push(objectTreeItem);\n }\n\n objectsSet.add(object.id);\n });\n\n return updatedTreeData;\n};\n\n/**\n * Converts an array of KB properties data into tree item data for a tree view.\n *\n * @param {KBPropertyData[]} properties - The array of KB property data.\n * @param {KBPropertyType[]} kbPropertiesTypes - The array of KB property types.\n * @param {TreeViewModel} actualTreeState - The current state of the tree.\n * @returns {TreeViewModel} - The updated tree view item models.\n */\nexport const convertKbPropertiesDataToTreeItemData = (\n properties: KBPropertyData[],\n kbPropertiesTypes: KBPropertyType[],\n actualTreeState: TreeViewModel\n): TreeViewModel => {\n if (!properties) {\n return [...actualTreeState];\n }\n\n const updatedTreeData: TreeViewModel = [...actualTreeState];\n properties.forEach(property => {\n // properties have no parent node, and they should be added at the beginning of the tree\n const propertyAlreadyExists =\n updatedTreeData.find(node => node.id === property.id) !== undefined;\n if (propertyAlreadyExists) {\n return;\n }\n const propertyTreeItem = convertPropertyToTreeItem(\n property,\n kbPropertiesTypes\n );\n updatedTreeData.unshift(propertyTreeItem);\n });\n return updatedTreeData;\n};\n\n/**\n * Removes properties from the tree model.\n *\n * @param {TreeViewModel} actualTreeState - The current state of the tree,\n * containing various tree view items.\n * @returns {TreeViewModel} - A new array of tree view items that excludes\n * any items with metadata of type `KB_PROPERTY`.\n */\nexport const clearKbPropertiesFromTree = (\n actualTreeState: TreeViewModel\n): TreeViewModel =>\n actualTreeState.filter(item => item.metadata !== KB_PROPERTY);\n","section {\n display: grid;\n block-size: 100%;\n grid-template-rows: max-content 1fr max-content;\n}\n\n.header__field-group {\n grid-template:\n \"export-file-name buttons-container\" max-content\n \"checkboxes checkboxes\" max-content\n / 1fr max-content;\n}\n.export-file-name {\n grid-area: export-file-name;\n}\n.header__buttons-container {\n grid-area: buttons-container;\n}\n.header__checkboxes {\n grid-area: checkboxes;\n grid-template-columns: max-content 1fr;\n}\n\n.main {\n position: relative;\n padding-block: var(--content-block-spacing);\n}\n","import { Component, Host, h, Prop, Element, State, Watch } from \"@stencil/core\";\n\nimport { ChCheckboxCustomEvent } from \"@genexus/chameleon-controls-library\";\nimport {\n TreeViewItemModelExtended,\n TreeViewModel\n} from \"@genexus/chameleon-controls-library\";\nimport { MercuryBundles } from \"@genexus/mercury\";\n\nimport { Locale } from \"../../common/locale\";\nimport {\n updateObjectsTreeModel,\n convertKbPropertiesDataToTreeItemData,\n clearKbPropertiesFromTree\n} from \"./helpers\";\nimport { ObjectType } from \"../../common/types\";\n\nimport { KB_PROPERTY, KB_OBJECT } from \"./helpers\";\nimport {\n KBPropertiesCallback,\n KBPropertyData,\n KBPropertyType,\n ObjectData,\n ExportFileDirectoryCallback,\n OptionsCallback,\n AddObjectsCallback,\n ExportCallback,\n AddReferencesCallback,\n CancelCallback\n} from \"./types\";\n\nimport { getIconPath } from \"@genexus/mercury\";\n\nconst FILE_ICON = getIconPath({\n category: \"gemini-tools\",\n name: \"file\",\n colorType: \"on-elevation\"\n});\nconst SETTINGS_ICON = getIconPath({\n category: \"gemini-tools\",\n name: \"settings\",\n colorType: \"primary\"\n});\nconst GENERAL_REFERENCES_ICON = getIconPath({\n category: \"window-tools\",\n name: \"references\",\n colorType: \"neutral\"\n});\nconst MENUS_NEW_OBJECT_ICON = getIconPath({\n category: \"menus\",\n name: \"new-object\",\n colorType: \"on-primary\"\n});\nconst TREE_VIEW_ICON = getIconPath({\n category: \"controls\",\n name: \"treeview\"\n});\nconst CHECKBOX_CHECKED_VALUE = \"true\";\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 \"utils/form\",\n \"utils/layout\",\n \"utils/typography\"\n];\n@Component({\n tag: \"gx-ide-kb-manager-export\",\n styleUrl: \"kb-manager-export.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/kb-manager-export\"]\n})\nexport class GxIdeKbManagerExport {\n #addKbDescriptionEl!: HTMLChCheckboxElement;\n #componentLocale: any;\n #animateEmptyState: boolean = false;\n #exportAllEl!: HTMLChCheckboxElement;\n #fileNameEl!: HTMLChEditElement;\n #kBPropertiesData!: KBPropertyData[];\n /**\n * Stores the object types information (name, and icon)\n */\n // eslint-disable-next-line @stencil-community/own-props-must-be-private\n #objectTypesMap: Map<string, ObjectType> = new Map();\n /**\n * Stores the object's id that have been added.\n */\n // eslint-disable-next-line @stencil-community/own-props-must-be-private\n #objectsSet: Set<string> = new Set();\n\n @Element() el: HTMLGxIdeKbManagerExportElement;\n\n @State() addKbPropertiesIsChecked = false;\n @State() atLeastOnePropertyItemIsChecked = false;\n @State() atLeastOneObjectItemIsChecked = false;\n @State() checkedObjectsIds: string[] = [];\n @State() checkedPropertiesIds: string[] = [];\n @State() exportAllIsChecked = false;\n @State() exportingIsInProcess = false;\n @State() hasObjects: boolean;\n @State() objectsTreeViewModel: TreeViewModel = [];\n @Watch(\"objectsTreeViewModel\")\n objectsTreeViewModelChanged(newObjectsTreeViewModel: TreeViewModel) {\n this.hasObjects =\n newObjectsTreeViewModel && newObjectsTreeViewModel.length > 0;\n if (!this.hasObjects) {\n this.atLeastOnePropertyItemIsChecked = false;\n this.atLeastOneObjectItemIsChecked = false;\n }\n }\n\n /**\n * Callback invoked when the user wants to include KB properties.\n */\n @Prop() readonly addKBPropertiesCallback!: KBPropertiesCallback;\n\n /**\n * Callback invoked when the user wants to add objects.\n */\n @Prop() readonly addObjectsCallback!: AddObjectsCallback;\n\n /**\n *Callback invoked when the user wants to add all the references for the selected objects.\n *@param itemIds:string[] The selected item ids\n *@returns : Returns an object with the items and its references\n */\n @Prop() readonly addReferencesCallback!: AddReferencesCallback;\n\n /**\n * Callback invoked when the user wants to cancel the export process.\n * @returns It returns a boolean indicating whether the process could be canceled or not.\n */\n @Prop() readonly cancelCallback!: CancelCallback;\n\n /**\n *Callback invoked when the user wants to initiate the export process.\n *@param fileName:string\n *@param itemIds:string[] The selected item ids\n *@returns : It returns a boolean indicating whether the process was successful\n */\n @Prop() readonly exportCallback!: ExportCallback;\n\n /**\n * Callback invoked when the user wants to access the export options.\n */\n @Prop() readonly exportFileDirectoryCallback!: ExportFileDirectoryCallback;\n\n /**\n * It allows defining the default Export File Name\n */\n @Prop() readonly fileName: string;\n\n /**\n * Array with the possible types of KB properties\n */\n @Prop() readonly kbPropertiesTypes: KBPropertyType[];\n\n /**\n * If true, it will display a loader when needed.\n */\n @Prop() readonly loader = false;\n\n /**\n * Array of possible object types\n */\n @Prop() readonly objectTypes: ObjectType[];\n @Watch(\"objectTypes\")\n objectTypesChanged(newObjectTypesArray: ObjectType[]) {\n this.#objectsTypesArrayToMap(newObjectTypesArray);\n }\n\n /**\n * Callback invoked when the user wants to access the export options.\n */\n @Prop() readonly optionsCallback: OptionsCallback;\n\n async componentWillLoad() {\n this.#componentLocale = await Locale.getComponentStrings(this.el);\n this.#evaluateObjects();\n this.#objectsTypesArrayToMap(this.objectTypes);\n }\n\n #addKBPropertiesCallbackHandler = async (\n _e: ChCheckboxCustomEvent<any> | InputEvent\n ) => {\n this.addKbPropertiesIsChecked = this.#addKbDescriptionEl.value === CHECKBOX_CHECKED_VALUE;\n if (this.addKbPropertiesIsChecked) {\n this.#kBPropertiesData = await this.addKBPropertiesCallback();\n if (this.#kBPropertiesData.length) {\n this.objectsTreeViewModel = convertKbPropertiesDataToTreeItemData(\n this.#kBPropertiesData,\n this.kbPropertiesTypes,\n this.objectsTreeViewModel\n );\n }\n } else {\n // previous properties (if any) should be removed\n this.objectsTreeViewModel = clearKbPropertiesFromTree(\n this.objectsTreeViewModel\n );\n }\n };\n\n #addObjectsCallbackHandler = async () => {\n this.#exportAllEl.value = undefined;\n this.exportAllIsChecked = false;\n const addedObjects = await this.addObjectsCallback();\n this.#updateObjects(addedObjects);\n };\n\n #addReferencesCallbackHandler = async () => {\n const objects: ObjectData[] = await this.addReferencesCallback(\n this.checkedObjectsIds\n );\n this.#updateObjects(objects);\n };\n\n #cancelCallbackHandler = async () => {\n const cancelled = await this.cancelCallback();\n if (cancelled) {\n this.exportingIsInProcess = false;\n }\n };\n\n #clearButtonHandler = () => {\n this.objectsTreeViewModel = [];\n this.#objectsSet.clear();\n this.#addKbDescriptionEl.value = undefined;\n this.#exportAllEl.value = undefined;\n };\n\n #evaluateContentToDisplay = () => {\n // Nothing to display on the tree-view\n if (!this.hasObjects && !this.exportAllIsChecked) {\n return (\n <gx-ide-empty-state\n isAnimated={this.#animateEmptyState}\n stateTitle={this.#componentLocale.main.noObjectsToDisplay}\n key=\"no-objects-empty-state\"\n >\n <button\n class=\"button-primary\"\n onClick={this.#addObjectsCallbackHandler}\n >\n {this.#componentLocale.main.beginByADdingSomeObjects}\n </button>\n </gx-ide-empty-state>\n );\n } else {\n this.#animateEmptyState = true; // improve performance if is first render\n }\n\n if (this.exportAllIsChecked) {\n return (\n <gx-ide-empty-state\n isAnimated={this.#animateEmptyState}\n stateIconSrc={TREE_VIEW_ICON}\n stateTitle={this.#componentLocale.main.exportAllMessage}\n key=\"exporting-all-empty-state\"\n ></gx-ide-empty-state>\n );\n } else {\n this.#animateEmptyState = true; // improve performance if is first render\n }\n\n return (\n <ch-tree-view-render\n class=\"tree-view\"\n checkbox\n checked\n dragDisabled\n dropDisabled\n filter={this.#evaluateTreeViewFilters()}\n filterType={\n this.addKbPropertiesIsChecked && !this.exportAllIsChecked\n ? \"none\"\n : \"metadata\"\n }\n model={this.objectsTreeViewModel}\n showLines=\"last\"\n toggleCheckboxes\n sortItemsCallback={this.#sortTreeItems}\n onCheckedItemsChange={this.#objectsTreeCheckedItemsChangedHandler}\n ></ch-tree-view-render>\n );\n };\n\n #evaluateObjects = () => {\n this.hasObjects =\n this.objectsTreeViewModel && this.objectsTreeViewModel.length > 0;\n };\n\n #evaluateTreeViewFilters = (): string => {\n if (this.addKbPropertiesIsChecked && this.exportAllIsChecked) {\n return KB_PROPERTY; // only show properties\n }\n if (!this.addKbPropertiesIsChecked && !this.exportAllIsChecked) {\n return KB_OBJECT; // only show objects\n }\n return \"none\";\n };\n\n #exportAllChangedHandler = (\n _event: ChCheckboxCustomEvent<any> | InputEvent\n ) => {\n this.exportAllIsChecked = this.#exportAllEl.value === CHECKBOX_CHECKED_VALUE;\n };\n\n #exportCallbackHandler = async () => {\n this.exportingIsInProcess = true;\n const fileName: string = this.#fileNameEl.value;\n const checkedKbPropertiesIds = this.addKbPropertiesIsChecked\n ? this.checkedPropertiesIds\n : [];\n const checkedObjectIds = this.exportAllIsChecked\n ? undefined\n : this.checkedObjectsIds;\n this.exportCallback(\n fileName,\n checkedKbPropertiesIds,\n checkedObjectIds\n ).then(() => {\n this.exportingIsInProcess = false;\n });\n // returns Promise<boolean> but no procedure was detailed on the spec.\n };\n\n #objectsTypesArrayToMap(objectTypesArray: ObjectType[]) {\n objectTypesArray.forEach(objectType => {\n this.#objectTypesMap.set(objectType.id, objectType);\n });\n }\n\n #objectsTreeCheckedItemsChangedHandler = (\n event: CustomEvent<Map<string, TreeViewItemModelExtended>>\n ) => {\n // filter 'checked objects' and 'checked properties' ids\n const checkedObjectsIds: string[] = [];\n const checkedPropertiesIds: string[] = [];\n const allItemsWithCheckbox = [...event.detail.values()];\n allItemsWithCheckbox.forEach(node => {\n if (node.item.checked && node.item.metadata === KB_OBJECT) {\n checkedObjectsIds.push(node.item.id);\n } else if (node.item.checked && node.item.metadata === KB_PROPERTY) {\n checkedPropertiesIds.push(node.item.id);\n }\n });\n this.checkedObjectsIds = checkedObjectsIds;\n this.checkedPropertiesIds = checkedPropertiesIds;\n\n this.atLeastOnePropertyItemIsChecked = this.checkedPropertiesIds.length > 0;\n this.atLeastOneObjectItemIsChecked = this.checkedObjectsIds.length > 0;\n };\n\n #sortTreeItems = (subModel: TreeViewModel) => {\n // \"property\" items should be added on top.\n // else sort alphabetically by \"caption\" value.\n return subModel.sort((a, b) => {\n if (a.metadata === \"property\" && b.metadata !== \"property\") {\n return -1;\n }\n if (b.metadata === \"property\" && a.metadata !== \"property\") {\n return 1;\n }\n\n return a.caption.localeCompare(b.caption);\n });\n };\n\n #renderFooter = (): HTMLElement => {\n const referencesButtonEnabled = this.atLeastOneObjectItemIsChecked;\n const clearButtonEnabled = this.objectsTreeViewModel.length > 0;\n return (\n <footer class=\"footer control-footer-with-border control-footer-space-between space-body spacing-body-inline spacing-body-block-end\">\n <button\n class=\"button-tertiary clear-btn\"\n disabled={!clearButtonEnabled}\n part=\"clear-button\"\n onClick={clearButtonEnabled && this.#clearButtonHandler}\n >\n {this.#componentLocale.footer.clearButton}\n </button>\n\n <div class=\"buttons-spacer\">\n <button\n class=\"button-secondary button-icon-and-text\"\n part=\"references-button\"\n disabled={!referencesButtonEnabled}\n onClick={\n referencesButtonEnabled && this.#addReferencesCallbackHandler\n }\n >\n <ch-image\n class=\"icon-sm\"\n disabled={!referencesButtonEnabled}\n src={GENERAL_REFERENCES_ICON}\n ></ch-image>\n {this.#componentLocale.footer.addReferencesButton}\n </button>\n\n <button\n // Add button\n class=\"button-primary button-icon-and-text\"\n disabled={this.exportAllIsChecked}\n part=\"add-button\"\n onClick={\n !this.exportAllIsChecked && this.#addObjectsCallbackHandler\n }\n >\n <ch-image\n class=\"icon-sm\"\n disabled={this.exportAllIsChecked}\n src={MENUS_NEW_OBJECT_ICON}\n ></ch-image>\n {this.#componentLocale.footer.addButton}\n </button>\n </div>\n </footer>\n );\n };\n\n #updateObjects = (objectsDataArray: ObjectData[]) => {\n if (objectsDataArray.length) {\n const newObjectsTreeModel = updateObjectsTreeModel(\n objectsDataArray,\n this.#objectTypesMap,\n this.#objectsSet,\n this.objectsTreeViewModel\n );\n this.objectsTreeViewModel = newObjectsTreeModel;\n }\n };\n\n render(): void {\n const exportButtonEnabled =\n this.atLeastOnePropertyItemIsChecked ||\n this.atLeastOneObjectItemIsChecked ||\n this.exportAllIsChecked;\n\n const cancelButtonEnabled = this.exportingIsInProcess;\n\n return (\n <Host class=\"widget\">\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n\n <section>\n <header class=\"header control-header-with-border space-body spacing-body-inline spacing-body-block-start\">\n <div class=\"field-group header__field-group\">\n <div class=\"field field-inline export-file-name\">\n <label class=\"label\" htmlFor=\"xpz-file\">\n {this.#componentLocale.header.exportFileName}\n </label>\n <ch-edit\n autoFocus\n id=\"xpz-file\"\n class=\"form-input\"\n part=\"xpz-file\"\n value={this.fileName}\n startImgSrc={FILE_ICON}\n ref={(el: HTMLChEditElement) =>\n (this.#fileNameEl = el as HTMLChEditElement)\n }\n ></ch-edit>\n </div>\n\n <div class=\"header__buttons-container buttons-spacer\">\n <button\n id=\"export-kb-btn\"\n class=\"button-primary export-btn\"\n part=\"export-btn\"\n disabled={!exportButtonEnabled}\n onClick={exportButtonEnabled && this.#exportCallbackHandler}\n >\n {this.#componentLocale.header.exportButton}\n </button>\n <button\n id=\"cancel-kb-export-btn\"\n class=\"button-secondary cancel-btn\"\n part=\"cancel-button\"\n disabled={!cancelButtonEnabled}\n onClick={cancelButtonEnabled && this.#cancelCallbackHandler}\n >\n {this.#componentLocale.header.cancelButton}\n </button>\n\n <button\n aria-label={this.#componentLocale.header.optionsButton}\n title={this.#componentLocale.header.optionsButton}\n class=\"button-tertiary button-icon-only options-btn\"\n part=\"select-kb-btn\"\n onClick={this.optionsCallback}\n >\n <ch-image class=\"icon-md\" src={SETTINGS_ICON}></ch-image>\n </button>\n </div>\n\n <div class=\"header__checkboxes field-group\">\n <ch-checkbox\n class=\"checkbox add-kb-description\"\n part=\"add-kb-description\"\n caption={\n this.#componentLocale.main.addKnowledgeBaseDescription\n }\n checkedValue={CHECKBOX_CHECKED_VALUE}\n onInput={this.#addKBPropertiesCallbackHandler}\n ref={(el: HTMLChCheckboxElement) =>\n (this.#addKbDescriptionEl = el as HTMLChCheckboxElement)\n }\n ></ch-checkbox>\n\n <ch-checkbox\n class=\"checkbox export-all\"\n part=\"export-all-checkbox\"\n checkedValue={CHECKBOX_CHECKED_VALUE}\n caption={this.#componentLocale.main.exportAll}\n onInput={this.#exportAllChangedHandler}\n ref={(el: HTMLChCheckboxElement) =>\n (this.#exportAllEl = el as HTMLChCheckboxElement)\n }\n ></ch-checkbox>\n </div>\n </div>\n </header>\n\n <div class=\"main spacing-body-inline\">\n {this.#evaluateContentToDisplay()}\n {this.loader && this.exportingIsInProcess && (\n <gx-ide-loader\n cancelLabel={this.#componentLocale.loader.cancelLabel}\n loaderTitle={this.#componentLocale.loader.title}\n cancelCallback={this.#cancelCallbackHandler}\n show\n class=\"loader\"\n ></gx-ide-loader>\n )}\n </div>\n\n {this.#renderFooter()}\n </section>\n </Host>\n );\n }\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"names":["newKbCss","CSS_BUNDLES","WINDOWS_AUTHENTICATION_VALUE","MAIN_SECTION_CLASSES","BASIC_SECTION_PARENT_CLASSES","SYSTEM_ICON","getIconPath","category","name","colorType","BASIC_TAB_SELECTOR","ADVANCED_TAB_SELECTOR","GxIdeNewKb","_GxIdeNewKb_advancedTabHasBeenRendered","set","this","_GxIdeNewKb_componentLocale","_GxIdeNewKb_frontEndsCheckedMap","Map","_GxIdeNewKb_selectedPrototypingEnvironmentId","_GxIdeNewKb_shortcutsSrc","getAssetPath","_GxIdeNewKb_kbSectionsModel","_GxIdeNewKb_authenticationTypeEl","_GxIdeNewKb_collationEl","_GxIdeNewKb_createDataFilesInKBFolderEl","_GxIdeNewKb_databaseNameEl","_GxIdeNewKb_dataSourceEl","_GxIdeNewKb_kbNameEl","_GxIdeNewKb_locationEl","_GxIdeNewKb_passwordEl","_GxIdeNewKb_prototypingEnvironmentEl","_GxIdeNewKb_prototypingTargetEl","_GxIdeNewKb_savePasswordEl","_GxIdeNewKb_serverNameEl","_GxIdeNewKb_userInterfaceLanguageEl","_GxIdeNewKb_userNameEl","_GxIdeNewKb_chShortcutsEl","_GxIdeNewKb_handlerAuthenticationTypeInput","e","authenticationTypeValue","detail","__classPrivateFieldGet","_GxIdeNewKb_evaluateUserInputsDisplay","call","_GxIdeNewKb_handlerServerNameInput","_GxIdeNewKb_evaluateCreateDataCheckboxEnabled","_GxIdeNewKb_prototypingEnvironmentValueChangedHandler","event","__classPrivateFieldSet","_GxIdeNewKb_getDataSources","_GxIdeNewKb_updateFrontEnds","_GxIdeNewKb_prototypingTargetValueChangedHandler","_GxIdeNewKb_renderAdvanced","h","class","tabAdvanced","tabTitle","htmlFor","serverName","label","disabled","serverNames","length","placeholder","disabledPlaceholder","value","serverNamesInitialValue","ref","el","model","serverNamesComboBoxModel","onInput","id","part","_GxIdeNewKb_evaluateTooltipRender","authenticationType","authenticationTypes","authenticationTypesInitialValue","authenticationTypesComboBoxModel","undefined","databaseName","userNameVisible","userName","collation","collations","collationsInitialValue","collationsComboBoxModel","passwordVisible","password","type","checkedValue","caption","createDataFilesInKbFolder","createDataInKbDisabled","savePasswordVisible","savePassword","_GxIdeNewKb_renderBasic","tabBasic","prototypingTarget","prototypingTargets","prototypingTargetsInitialValue","prototypingTargetsComboBoxModel","userInterfaceLanguage","userInterfaceLanguages","userInterfaceLanguagesInitialValue","userInterfaceLanguagesComboBoxModel","backEnd","backEndLabel","prototypingEnvironment","prototypingEnvironments","prototypingEnvironmentsComboBoxModel","dataSource","defaultDataSources","defaultDataSourcesInitialValue","defaultDataSourcesComboBoxModel","frontEnd","frontEndLabel","renderChCheckboxItems","frontEnds","_GxIdeNewKb_frontEndCheckboxInputHandler","get","_GxIdeNewKb_cancelKbHandler","cancelCallback","_GxIdeNewKb_createKbHandler","selectedFrontEndIds","_a","createCallback","_b","_c","createDataFilesInKBFolder","_d","_e","_f","kbLocation","_g","kbName","_h","_j","_k","_l","_m","_o","_p","_q","then","formSubmitResult","validatableControls","validateControls","serverNameValue","controlReference","hasError","message","actionElement","blockAlign","config","tooltipSettings","inlineAlign","delay","target","checked","_GxIdeNewKb_updateFrontEndsCheckedMap","checkboxId","currentState","push","checkboxIndex","findIndex","removeIndex","getDataSourcesCallback","selectedPrototypingEnvironmentId","selectedPrototypingTargetId","updatedDefaultDataSourcesPromise","result","catch","_GxIdeNewKb_initialSetupAdvancedTab","selectedServerNameValue","selectedAuthenticationType","watchAuthenticationTypes","watchCollations","_GxIdeNewKb_initializeValidatableControlsBasicTab","forEach","validatableControl","reference","_GxIdeNewKb_initializeValidatableControlsAdvancedTab","_GxIdeNewKb_selectLocationHandler","selectLocationCallback","_GxIdeNewKb_tabSelectionChangedHandler","newSelectedId","advancedTabIsVisible","async","updatedFrontEnds","getFrontEndsCallback","newValue","mapOptionsToComboBoxItemModel","getSelectedItem","watchDefaultDataSources","watchPrototypingEnvironments","watchPrototypingTargets","watchServerNames","watchUserInterfaceLanguages","componentWillLoad","Locale","getComponentStrings","tabLabel","connectedCallback","componentDidLoad","componentDidRender","suspendShortcuts","suspend","render","Host","src","isAdvanced","header","autoFocus","selectLocationButton","title","onClick","scrollable","tab","direction","selectedId","overflow","contain","onSelectedItemChange","slot","footer","btnCancel","btnCreate"],"sources":["src/components/new-kb/new-kb.scss?tag=gx-ide-new-kb&encapsulation=shadow","src/components/new-kb/new-kb.tsx"],"sourcesContent":[":host {\n display: grid;\n block-size: 100%;\n overflow: auto;\n grid-template-rows: max-content 1fr max-content;\n}\n\n.section {\n display: contents;\n}\n\n.header {\n &-one-col {\n grid-template-columns: 1fr;\n }\n &-two-cols {\n grid-template-columns: 1fr 1fr;\n }\n}\n// location appears if advanced is true\n.location-wrapper {\n display: flex;\n gap: var(--mer-spacing--2xs);\n}\n.location {\n flex-grow: 1;\n grid-area: location;\n}\n\n.basic {\n display: grid;\n grid-template:\n \"basic-top basic-top\" max-content\n \"back-end front-end\" 1fr;\n grid-template-columns: 1fr 1fr;\n}\n.basic__header {\n grid-area: basic-top;\n grid-template-columns: 1fr 1fr;\n}\n.control-header__back-end,\n.control-header__front-end {\n padding-block-start: var(--mer-spacing--md);\n}\n.main__back-end {\n border-inline-end: var(--section-common-border);\n}\n.main__back-end,\n.main__front-end {\n grid-auto-rows: max-content;\n padding-block: var(--content-block-spacing);\n overflow: auto;\n}\n// back end\n.section__back-end {\n grid-area: back-end;\n grid-auto-rows: max-content;\n}\n// front end\n.section__front-end {\n grid-area: front-end;\n}\n.section__back-end,\n.section__front-end {\n display: grid;\n grid-template-rows: max-content 1fr;\n overflow: auto;\n}\n\n// advanced\n.tab-advanced-title {\n grid-area: tab-advanced-title;\n}\n.layout-tab-advanced-left-col {\n grid-area: layout-tab-advanced-left-col;\n}\n.layout-tab-advanced-right-col {\n grid-area: layout-tab-advanced-right-col;\n}\n\n.basic,\n.advanced {\n padding-block-start: var(--content-block-spacing);\n overflow: auto;\n block-size: 100%;\n}\n\n.tab-advanced__field-group {\n display: grid;\n grid-template-columns: 1fr 1fr;\n grid-auto-rows: auto;\n}\n\n// WA / TODO: Add a helper class in Mercury to justify text.\n.text-align-center {\n text-align: center; // should be resolved on mercury\n}\n\n.tab::part(page) {\n // WA / TODO: Remove this line when the ch-tab renders supports scrollbar\n // custom styling\n scrollbar-width: thin;\n}\n","import {\n Component,\n Host,\n Prop,\n Element,\n State,\n getAssetPath,\n Method,\n h,\n Watch\n} from \"@stencil/core\";\n\nimport { MercuryBundles } from \"@genexus/mercury\";\n\nimport { config } from \"../../common/config\";\nimport { Locale } from \"../../common/locale\";\nimport { getSelectedItem } from \"../../common/common\";\nimport {\n mapOptionsToComboBoxItemModel,\n renderChCheckboxItems\n} from \"../../common/helpers\";\nimport { FormSubmitResult, GxOption } from \"../../common/types\";\nimport {\n ControlValidation,\n validateControls\n} from \"../../common/form-validation\";\nimport { getIconPath } from \"@genexus/mercury\";\nimport {\n TabModel,\n ComboBoxModel,\n ChCheckboxCustomEvent\n} from \"@genexus/chameleon-controls-library\";\nimport { removeIndex } from \"../../common/array\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"components/tab\",\n \"components/tooltip\",\n \"utils/form--full\",\n \"utils/layout\",\n \"utils/typography\",\n \"chameleon/scrollbar\"\n];\n\nconst WINDOWS_AUTHENTICATION_VALUE: string = \"windows-authentication\";\nconst MAIN_SECTION_CLASSES: string = \"main\";\nconst BASIC_SECTION_PARENT_CLASSES: string = \"basic\";\n\nconst SYSTEM_ICON = getIconPath({\n category: \"system\",\n name: \"folder\",\n colorType: \"primary\"\n});\n\nconst BASIC_TAB_SELECTOR: string = \"basic\";\nconst ADVANCED_TAB_SELECTOR: string = \"advanced\";\n\n@Component({\n tag: \"gx-ide-new-kb\",\n styleUrl: \"new-kb.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/new-kb\"]\n})\nexport class GxIdeNewKb {\n #advancedTabHasBeenRendered: boolean = false;\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 * frontEndsState saves the id's of the front ends checkboxes that are checked\n */\n // eslint-disable-next-line @stencil-community/own-props-must-be-private\n #frontEndsCheckedMap = new Map<string, string[]>();\n #selectedPrototypingEnvironmentId: string;\n #shortcutsSrc = getAssetPath(`./gx-ide-assets/new-kb/shortcuts.json`);\n #kbSectionsModel: TabModel = [];\n\n @Element() el: HTMLGxIdeNewKbElement;\n\n /* References needed to collect data con \"Create\" button submit*/\n #authenticationTypeEl!: HTMLChComboBoxRenderElement;\n #collationEl!: HTMLChComboBoxRenderElement;\n #createDataFilesInKBFolderEl!: HTMLChCheckboxElement;\n #databaseNameEl!: HTMLChEditElement;\n #dataSourceEl!: HTMLChComboBoxRenderElement;\n #kbNameEl!: HTMLChEditElement;\n #locationEl!: HTMLChEditElement;\n #passwordEl!: HTMLChEditElement;\n #prototypingEnvironmentEl!: HTMLChComboBoxRenderElement;\n #prototypingTargetEl!: HTMLChComboBoxRenderElement;\n #savePasswordEl!: HTMLChCheckboxElement;\n #serverNameEl!: HTMLChComboBoxRenderElement;\n #userInterfaceLanguageEl!: HTMLChComboBoxRenderElement;\n #userNameEl!: HTMLChEditElement;\n\n #chShortcutsEl: HTMLChShortcutsElement;\n\n @State() advancedTabIsVisible: boolean = false;\n /**\n * Allows selecting multiple generators for the front end\n * TODO: Check if this property can be deleted, since we can call getFrontEndsCallback.\n */\n @State() frontEnds: GxOption[];\n @State() validatableControls = new Map<string, ControlValidation>();\n @State() createDataInKbDisabled = false;\n @State() userNameVisible = true;\n @State() passwordVisible = true;\n @State() savePasswordVisible = true;\n // representations of GxOption[] as ComboBoxModel, and initialValue for each one.\n @State() authenticationTypesComboBoxModel: ComboBoxModel = [];\n @State() authenticationTypesInitialValue: string;\n @State() collationsComboBoxModel: ComboBoxModel = [];\n @State() collationsInitialValue: string;\n @State() defaultDataSourcesComboBoxModel: ComboBoxModel = [];\n @State() defaultDataSourcesInitialValue: string;\n @State() prototypingTargetsComboBoxModel: ComboBoxModel = [];\n @State() prototypingTargetsInitialValue: string;\n @State() prototypingEnvironmentsComboBoxModel: ComboBoxModel = [];\n @State() prototypingEnvironmentsInitialValue: string;\n @State() serverNamesComboBoxModel: ComboBoxModel = [];\n @State() serverNamesInitialValue: string;\n @State() userInterfaceLanguagesComboBoxModel: ComboBoxModel = [];\n @State() userInterfaceLanguagesInitialValue: string;\n\n /**\n * Defines the type of authentication for the connection to the previously defined database\n */\n @Prop() readonly authenticationTypes!: GxOption[];\n @Watch(\"authenticationTypes\")\n watchAuthenticationTypes(newValue: GxOption[]) {\n if (newValue?.length) {\n this.authenticationTypesComboBoxModel =\n mapOptionsToComboBoxItemModel(newValue);\n this.authenticationTypesInitialValue = getSelectedItem(newValue);\n }\n }\n\n /**\n * Callback invoked when the user wants to cancel KB creation (‘Cancel’ button)\n */\n @Prop() readonly cancelCallback: CancelCallback;\n\n /**\n * DB Collations\n */\n @Prop() readonly collations!: GxOption[];\n @Watch(\"collations\")\n watchCollations(newValue: GxOption[]) {\n if (newValue?.length) {\n this.collationsComboBoxModel = mapOptionsToComboBoxItemModel(newValue);\n this.collationsInitialValue = getSelectedItem(newValue);\n }\n }\n\n /**\n * Callback that will be invoked when the user confirms KB creation (‘Create’ button)\n */\n @Prop() readonly createCallback!: CreateCallback;\n\n /**\n * Disabled if the first item of the 'Server Name' combo is selected\n */\n @Prop() readonly createDataFilesInKBFolder: boolean = false;\n\n /**\n * Name of the database where we are going to persist the information of our KB\n */\n @Prop() readonly databaseName: string;\n\n /**\n * It allows defining the DBMS that will be used in the solution\n */\n @Prop({ mutable: true }) defaultDataSources!: GxOption[];\n @Watch(\"defaultDataSources\")\n watchDefaultDataSources(newValue: GxOption[]) {\n if (newValue?.length) {\n this.defaultDataSourcesComboBoxModel =\n mapOptionsToComboBoxItemModel(newValue);\n this.defaultDataSourcesInitialValue = getSelectedItem(newValue);\n }\n }\n\n /**\n * Callback invoked when the user wants to cancel KB creation (‘Cancel’ button)\n */\n @Prop() readonly getDataSourcesCallback: GetDataSourcesCallback;\n\n /**\n * Callback invoked when the user changes the prototyping environment, allowing for the modification of the list of front ends\n */\n @Prop() readonly getFrontEndsCallback: GetFrontEndsCallback;\n\n /**\n * Specify whether it is feasible to display information related to local configuration parameters\n */\n @Prop() readonly isAdvanced = false;\n\n /**\n * Default suggested path to a directory where the information related to the KB will be stored/generated\n */\n @Prop({ mutable: true }) kbLocation: string;\n\n /**\n * The knowledge base default suggested name\n */\n @Prop() readonly kbName: string;\n\n /**\n * Password for the database connection. Visible if the Authentication Type is different from Windows Authentication (first item of the combo)\n */\n @Prop() readonly password: string;\n\n /**\n * It allows selecting the default environment that the KB will have (additional environments can be created later)\n */\n @Prop() readonly prototypingEnvironments!: GxOption[];\n @Watch(\"prototypingEnvironments\")\n watchPrototypingEnvironments(newValue: GxOption[]) {\n if (newValue?.length) {\n this.prototypingEnvironmentsComboBoxModel =\n mapOptionsToComboBoxItemModel(newValue);\n this.#selectedPrototypingEnvironmentId = getSelectedItem(newValue);\n this.#updateFrontEnds();\n }\n }\n\n /**\n * Path to a directory where the information related to the KB will be stored/generated\n */\n @Prop() readonly prototypingTargets!: GxOption[];\n @Watch(\"prototypingTargets\")\n watchPrototypingTargets(newValue: GxOption[]) {\n if (newValue?.length) {\n this.prototypingTargetsComboBoxModel =\n mapOptionsToComboBoxItemModel(newValue);\n this.prototypingTargetsInitialValue = getSelectedItem(newValue);\n }\n }\n\n /**\n * Visible if something other than Windows Authentication is selected\n */\n @Prop() readonly savePassword: boolean = false;\n\n /**\n * This is a function provided by the developer that returns a string, with the location path\n */\n @Prop() readonly selectLocationCallback!: SelectLocationCallback;\n\n /**\n * Name of the DB server where we want to persist the information of our KB\n */\n @Prop() readonly serverNames!: GxOption[];\n @Watch(\"serverNames\")\n watchServerNames(newValue: GxOption[]) {\n if (newValue?.length) {\n this.serverNamesComboBoxModel = mapOptionsToComboBoxItemModel(newValue);\n this.serverNamesInitialValue = getSelectedItem(newValue);\n }\n }\n\n /**\n * Specify the language in which the application screens will be developed (default language)\n */\n @Prop() readonly userInterfaceLanguages!: GxOption[];\n @Watch(\"userInterfaceLanguages\")\n watchUserInterfaceLanguages(newValue: GxOption[]) {\n if (newValue?.length) {\n this.userInterfaceLanguagesComboBoxModel =\n mapOptionsToComboBoxItemModel(newValue);\n this.userInterfaceLanguagesInitialValue = getSelectedItem(newValue);\n }\n }\n\n /**\n * Username for the database connection. Visible if the Authentication Type is different from Windows Authentication (first item of the combo)\n */\n @Prop() readonly userName: string;\n\n async componentWillLoad() {\n this.#componentLocale = await Locale.getComponentStrings(this.el);\n this.#kbSectionsModel = [\n {\n id: BASIC_TAB_SELECTOR,\n name: this.#componentLocale.tabBasic.tabLabel\n },\n {\n id: ADVANCED_TAB_SELECTOR,\n name: this.#componentLocale.tabAdvanced.tabLabel\n }\n ];\n }\n\n connectedCallback() {\n this.watchDefaultDataSources(this.defaultDataSources);\n this.watchPrototypingEnvironments(this.prototypingEnvironments);\n this.watchPrototypingTargets(this.prototypingTargets);\n this.watchServerNames(this.serverNames);\n this.watchUserInterfaceLanguages(this.userInterfaceLanguages);\n }\n\n componentDidLoad() {\n this.#initializeValidatableControlsBasicTab();\n }\n\n componentDidRender() {\n if (this.advancedTabIsVisible && !this.#advancedTabHasBeenRendered) {\n // just call this once.\n this.#initialSetupAdvancedTab();\n this.#initializeValidatableControlsAdvancedTab();\n this.#advancedTabHasBeenRendered = true;\n }\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 // Uncomment when \"TODO: define button handler and logic\" is done.\n // #geminiToolsSearchPrimary = getIconPath({\n // category: \"gemini-tools\",\n // name: \"search\",\n // colorType: \"primary\"\n // });\n // #geminiToolsResetPrimary = getIconPath({\n // category: \"gemini-tools\",\n // name: \"reset\",\n // colorType: \"primary\"\n // });\n\n #handlerAuthenticationTypeInput = (e: CustomEvent<string> | InputEvent) => {\n const authenticationTypeValue = e?.detail;\n this.#evaluateUserInputsDisplay(authenticationTypeValue as string);\n };\n\n #handlerServerNameInput = (e: CustomEvent<string> | InputEvent) => {\n this.#evaluateCreateDataCheckboxEnabled(e.detail as string);\n };\n\n #prototypingEnvironmentValueChangedHandler = (\n event: CustomEvent<string> | InputEvent\n ): void => {\n this.#selectedPrototypingEnvironmentId = event.detail as string;\n this.#getDataSources();\n this.#updateFrontEnds();\n };\n\n #prototypingTargetValueChangedHandler = (): void => {\n this.#getDataSources();\n };\n\n #renderAdvanced = (): Element[] => {\n return [\n <h2\n // #knowledge base storage\n class=\"control-header heading-5 text-align-center\"\n >\n {this.#componentLocale.tabAdvanced.tabTitle}\n </h2>,\n <div class=\"field-group tab-advanced__field-group\">\n <div\n // #server name\n class=\"field field-block server-name-field\"\n >\n <label class=\"label\" htmlFor=\"serverName\">\n {this.#componentLocale.tabAdvanced.serverName.label}\n </label>\n <ch-combo-box-render\n class=\"combo-box\"\n disabled={this.serverNames.length === 0}\n placeholder={\n this.serverNames.length === 0\n ? this.#componentLocale.tabAdvanced.serverName\n .disabledPlaceholder\n : \"\"\n }\n value={this.serverNamesInitialValue}\n ref={(el: HTMLChComboBoxRenderElement) =>\n (this.#serverNameEl = el as HTMLChComboBoxRenderElement)\n }\n model={this.serverNamesComboBoxModel}\n onInput={\n this.serverNames.length > 0 && this.#handlerServerNameInput\n }\n id=\"serverName\"\n part=\"server-name\"\n ></ch-combo-box-render>\n {this.#evaluateTooltipRender(this.#serverNameEl)}\n </div>\n\n {/* <button\n TODO: define button handler and logic\n class=\"button-tertiary button-icon-only server-name-button\"\n aria-label=\"caption\"\n part=\"search-server-name\"\n hidden\n >\n <ch-image\n class=\"icon-sm\"\n src={this.#geminiToolsSearchPrimary}\n ></ch-image>\n </button> */}\n\n <div\n // #authentication type\n class=\"field field-block authentication-type-field\"\n >\n <label class=\"label\" htmlFor=\"authenticationType\">\n {this.#componentLocale.tabAdvanced.authenticationType.label}\n </label>\n <ch-combo-box-render\n class=\"combo-box\"\n disabled={this.authenticationTypes.length === 0}\n placeholder={\n this.authenticationTypes.length === 0\n ? this.#componentLocale.tabAdvanced.authenticationType\n .disabledPlaceholder\n : \"\"\n }\n value={this.authenticationTypesInitialValue}\n ref={(el: HTMLChComboBoxRenderElement) =>\n (this.#authenticationTypeEl = el as HTMLChComboBoxRenderElement)\n }\n model={this.authenticationTypesComboBoxModel}\n id=\"authenticationType\"\n part=\"authentication-type\"\n onInput={\n this.authenticationTypes.length > 0\n ? this.#handlerAuthenticationTypeInput\n : undefined\n }\n ></ch-combo-box-render>\n {this.#evaluateTooltipRender(this.#authenticationTypeEl)}\n </div>\n\n <div\n // #database\n class=\"field field-block database-field\"\n >\n <label class=\"label\" htmlFor=\"databaseName\">\n {this.#componentLocale.tabAdvanced.databaseName.label}\n </label>\n <ch-edit\n // TODO add placeholder\n class=\"form-input\"\n value={this.databaseName}\n id=\"databaseName\"\n part=\"database-name\"\n ref={(el: HTMLChEditElement) =>\n (this.#databaseNameEl = el as HTMLChEditElement)\n }\n ></ch-edit>\n {this.#evaluateTooltipRender(this.#databaseNameEl)}\n </div>\n\n {this.userNameVisible ? (\n <div\n // #username\n class=\"field field-block username-field\"\n >\n <label class=\"label\" htmlFor=\"userName\">\n {this.#componentLocale.tabAdvanced.userName.label}\n </label>\n <ch-edit\n // TODO add placeholder\n class=\"form-input\"\n value={this.userName}\n id=\"userName\"\n part=\"user-name\"\n ref={(el: HTMLChEditElement) =>\n (this.#userNameEl = el as HTMLChEditElement)\n }\n ></ch-edit>\n {this.#evaluateTooltipRender(this.#userNameEl)}\n </div>\n ) : null}\n\n <div\n // #collation\n class=\"field field-block collation-field\"\n >\n <label class=\"label\" htmlFor=\"collation\">\n {this.#componentLocale.tabAdvanced.collation.label}\n </label>\n <ch-combo-box-render\n class=\"combo-box\"\n disabled={this.serverNames.length === 0}\n placeholder={\n this.collations.length === 0\n ? this.#componentLocale.tabAdvanced.collation\n .disabledPlaceholder\n : \"\"\n }\n value={this.collationsInitialValue}\n ref={(el: HTMLChComboBoxRenderElement) =>\n (this.#collationEl = el as HTMLChComboBoxRenderElement)\n }\n model={this.collationsComboBoxModel}\n id=\"collation\"\n part=\"collation\"\n ></ch-combo-box-render>\n {this.#evaluateTooltipRender(this.#collationEl)}\n </div>\n\n {/* <button\n TODO: define button handler and logic \n class=\"button-tertiary button-icon-only collation-button\"\n aria-label=\"caption\"\n part=\"reset-collation\"\n >\n <ch-image\n class=\"icon-sm\"\n src={this.#geminiToolsResetPrimary}\n ></ch-image>\n </button> */}\n\n {this.passwordVisible ? (\n <div\n // #password\n class=\"field field-block password-field\"\n >\n <label class=\"label\" htmlFor=\"password\">\n {this.#componentLocale.tabAdvanced.password.label}\n </label>\n <ch-edit\n // TODO add placeholder\n class=\"form-input\"\n type=\"password\"\n value={this.password}\n id=\"password\"\n part=\"password\"\n ref={(el: HTMLChEditElement) =>\n (this.#passwordEl = el as HTMLChEditElement)\n }\n ></ch-edit>\n {this.#evaluateTooltipRender(this.#passwordEl)}\n </div>\n ) : null}\n\n <ch-checkbox\n // #create data in knowledge base folder\n class=\"checkbox create-data-in-kb-checkbox\"\n checkedValue=\"createDataFilesInKBFolder\"\n caption={this.#componentLocale.tabAdvanced.createDataFilesInKbFolder}\n disabled={this.createDataInKbDisabled}\n part=\"create-data-in-kb\"\n id=\"createDataFilesInKBFolder\"\n ref={(el: HTMLChCheckboxElement) =>\n (this.#createDataFilesInKBFolderEl = el as HTMLChCheckboxElement)\n }\n ></ch-checkbox>\n\n {this.savePasswordVisible ? (\n <ch-checkbox\n // #save password\n class=\"checkbox save-password-checkbox\"\n checkedValue=\"password\"\n caption={this.#componentLocale.tabAdvanced.savePassword}\n part=\"save-password\"\n id=\"savePassword\"\n ref={(el: HTMLChCheckboxElement) =>\n (this.#savePasswordEl = el as HTMLChCheckboxElement)\n }\n ></ch-checkbox>\n ) : null}\n </div>\n ];\n };\n\n #renderBasic = (): HTMLElement[] => {\n return [\n <section class=\"basic__header field-group control-header-with-border spacing-body-inline\">\n <div\n // #prototyping target\n class=\"field field-block prototyping-target\"\n >\n <label class=\"label\" htmlFor=\"prototypingTarget\">\n {this.#componentLocale.tabBasic.prototypingTarget.label}\n </label>\n\n <ch-combo-box-render\n id=\"prototypingTarget\"\n class=\"combo-box\"\n part=\"prototyping-target\"\n disabled={this.prototypingTargets.length === 0}\n placeholder={\n this.prototypingTargets.length === 0\n ? this.#componentLocale.tabBasic.prototypingTarget\n .disabledPlaceholder\n : \"\"\n }\n value={this.prototypingTargetsInitialValue}\n model={this.prototypingTargetsComboBoxModel}\n onInput={\n this.prototypingTargets.length > 0\n ? this.#prototypingTargetValueChangedHandler\n : undefined\n }\n ref={(el: HTMLChComboBoxRenderElement) =>\n (this.#prototypingTargetEl = el as HTMLChComboBoxRenderElement)\n }\n ></ch-combo-box-render>\n {this.#evaluateTooltipRender(this.#prototypingTargetEl)}\n </div>\n\n <div\n // #user interface\n class=\"field field-block user-interface-language\"\n >\n <label class=\"label\" htmlFor=\"userInterfaceLanguage\">\n {this.#componentLocale.tabBasic.userInterfaceLanguage.label}\n </label>\n <ch-combo-box-render\n class=\"combo-box\"\n disabled={this.userInterfaceLanguages.length === 0}\n placeholder={\n this.userInterfaceLanguages.length === 0\n ? this.#componentLocale.tabBasic.userInterfaceLanguage\n .disabledPlaceholder\n : \"\"\n }\n value={this.userInterfaceLanguagesInitialValue}\n ref={(el: HTMLChComboBoxRenderElement) =>\n (this.#userInterfaceLanguageEl =\n el as HTMLChComboBoxRenderElement)\n }\n model={this.userInterfaceLanguagesComboBoxModel}\n id=\"userInterfaceLanguage\"\n part=\"user-interface-language\"\n ></ch-combo-box-render>\n {this.#evaluateTooltipRender(this.#userInterfaceLanguageEl)}\n </div>\n </section>,\n\n <section\n class=\"section__back-end\"\n // backend\n >\n <h2\n // back end\n class=\"control-header control-header-with-border control-header__back-end heading-5 text-align-center spacing-body-inline\"\n >\n {this.#componentLocale.tabBasic.backEnd.backEndLabel}\n </h2>\n <div class=\"field-group main__back-end spacing-body-inline scrollable\">\n <div\n // #prototyping environment\n class=\"field field-block\"\n >\n <label class=\"label\" htmlFor=\"prototypingEnvironment\">\n {\n this.#componentLocale.tabBasic.backEnd.prototypingEnvironment\n .label\n }\n </label>\n <ch-combo-box-render\n class=\"combo-box\"\n disabled={this.prototypingEnvironments.length === 0}\n placeholder={\n this.prototypingEnvironments.length === 0\n ? this.#componentLocale.tabBasic.backEnd\n .prototypingEnvironment.disabledPlaceholder\n : \"\"\n }\n value={this.#selectedPrototypingEnvironmentId}\n ref={(el: HTMLChComboBoxRenderElement) =>\n (this.#prototypingEnvironmentEl =\n el as HTMLChComboBoxRenderElement)\n }\n model={this.prototypingEnvironmentsComboBoxModel}\n onInput={this.#prototypingEnvironmentValueChangedHandler}\n part=\"prototyping-environment\"\n id=\"prototypingEnvironment\"\n ></ch-combo-box-render>\n {this.#evaluateTooltipRender(this.#prototypingEnvironmentEl)}\n </div>\n\n <div\n // #data source\n class=\"field field-block\"\n >\n <label class=\"label\" htmlFor=\"dataSource\">\n {this.#componentLocale.tabBasic.backEnd.dataSource.label}\n </label>\n <ch-combo-box-render\n class=\"combo-box\"\n disabled={this.defaultDataSources.length === 0}\n placeholder={\n this.defaultDataSources.length === 0\n ? this.#componentLocale.tabBasic.backEnd.dataSource\n .disabledPlaceholder\n : \"\"\n }\n value={this.defaultDataSourcesInitialValue}\n ref={(el: HTMLChComboBoxRenderElement) =>\n (this.#dataSourceEl = el as HTMLChComboBoxRenderElement)\n }\n model={this.defaultDataSourcesComboBoxModel}\n part=\"data-source\"\n id=\"dataSource\"\n ></ch-combo-box-render>\n {this.#evaluateTooltipRender(this.#dataSourceEl)}\n </div>\n </div>\n </section>,\n\n <section\n class=\"section__front-end\"\n // front end\n >\n <h2 class=\"control-header control-header-with-border control-header__front-end heading-5 text-align-center spacing-body-inline\">\n {this.#componentLocale.tabBasic.frontEnd.frontEndLabel}\n </h2>\n <div class=\"field-group main__front-end spacing-body-inline scrollable\">\n {renderChCheckboxItems(\n this.frontEnds,\n this.#frontEndCheckboxInputHandler,\n this.#frontEndsCheckedMap.get(\n this.#selectedPrototypingEnvironmentId\n )\n )}\n </div>\n </section>\n ];\n };\n\n // - - - - - - - - - -\n\n #cancelKbHandler = (): void => {\n if (this.cancelCallback) {\n this.cancelCallback();\n }\n };\n\n #createKbHandler = (): void => {\n const selectedFrontEndIds =\n this.#frontEndsCheckedMap.get(this.#selectedPrototypingEnvironmentId) ??\n [];\n\n this.createCallback({\n authenticationType: this.#authenticationTypeEl?.value,\n collation: this.#collationEl?.value,\n createDataFilesInKBFolder: !!this.#createDataFilesInKBFolderEl?.value,\n dataSource: this.#dataSourceEl?.value,\n databaseName: this.#databaseNameEl?.value,\n frontEnds: selectedFrontEndIds,\n kbLocation: this.#locationEl?.value,\n kbName: this.#kbNameEl?.value,\n password: this.#passwordEl?.value,\n prototypingEnvironment: this.#prototypingEnvironmentEl?.value,\n prototypingTarget: this.#prototypingTargetEl?.value,\n savePassword: !!this.#savePasswordEl?.value,\n serverName: this.#serverNameEl?.value,\n userInterfaceLanguage: this.#userInterfaceLanguageEl?.value,\n userName: this.#userNameEl?.value\n }).then((formSubmitResult: FormSubmitResult) => {\n this.validatableControls = validateControls(\n formSubmitResult,\n this.validatableControls\n );\n });\n };\n\n /**\n * Disable \"Create Data in Knowledge Base Folder\" if the first Server Name\n * option is selected.\n * */\n // eslint-disable-next-line @stencil-community/own-props-must-be-private\n #evaluateCreateDataCheckboxEnabled = (serverNameValue: string) => {\n if (this.serverNames[0]?.id === serverNameValue) {\n this.createDataInKbDisabled = true;\n } else {\n this.createDataInKbDisabled = false;\n }\n };\n\n // TODO: evaluate if this should be a global helper function.\n // It is used on new-kb 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 /**\n * If \"Authentication Type\" is \"Windows Authentication\", hide User Name,\n * Password, and Save Password fields.\n */\n // eslint-disable-next-line @stencil-community/own-props-must-be-private\n #evaluateUserInputsDisplay = (authenticationTypeValue: string) => {\n if (authenticationTypeValue === WINDOWS_AUTHENTICATION_VALUE) {\n this.userNameVisible = false;\n this.passwordVisible = false;\n this.savePasswordVisible = false;\n } else {\n this.userNameVisible = true;\n this.passwordVisible = true;\n this.savePasswordVisible = true;\n }\n };\n\n #frontEndCheckboxInputHandler = (\n event: ChCheckboxCustomEvent<string> | InputEvent\n ) => {\n const checkedValue = (event.target as HTMLChCheckboxElement).checkedValue;\n const checked = event.detail === checkedValue;\n this.#updateFrontEndsCheckedMap(checkedValue, checked);\n };\n\n /**\n * This function updates frontEndsCheckedMap, that contains the checked\n * checkboxes for each language front ends.\n */\n // eslint-disable-next-line @stencil-community/own-props-must-be-private\n #updateFrontEndsCheckedMap = (checkboxId: string, checked: boolean) => {\n let currentState = this.#frontEndsCheckedMap.get(\n this.#selectedPrototypingEnvironmentId\n );\n if (!currentState) {\n // first time\n currentState = [];\n this.#frontEndsCheckedMap.set(\n this.#selectedPrototypingEnvironmentId,\n currentState\n );\n }\n if (checked) {\n // update by adding\n currentState.push(checkboxId);\n } else {\n // update by removing\n const checkboxIndex = currentState.findIndex(id => id === checkboxId);\n removeIndex(currentState, checkboxIndex);\n }\n };\n\n #getDataSources = (): void => {\n if (this.getDataSourcesCallback) {\n const selectedPrototypingEnvironmentId =\n this.#prototypingEnvironmentEl.value;\n const selectedPrototypingTargetId = this.#prototypingTargetEl.value;\n const updatedDefaultDataSourcesPromise: Promise<GxOption[]> =\n this.getDataSourcesCallback(\n selectedPrototypingEnvironmentId,\n selectedPrototypingTargetId\n );\n updatedDefaultDataSourcesPromise\n .then(result => {\n if (result.length > 0) {\n this.defaultDataSources = result;\n // set first option as selected\n this.#dataSourceEl.value = this.defaultDataSources[0].id;\n }\n })\n .catch(() => {\n // to do\n });\n }\n };\n\n #initialSetupAdvancedTab = () => {\n const selectedServerNameValue = this.#serverNameEl.value;\n this.#evaluateCreateDataCheckboxEnabled(selectedServerNameValue);\n\n const selectedAuthenticationType = this.#authenticationTypeEl.value;\n this.#evaluateUserInputsDisplay(selectedAuthenticationType);\n\n // map all \"Advanced Tab\" GxOption[]'s to ComboBoxModel's\n this.watchAuthenticationTypes(this.authenticationTypes);\n this.watchCollations(this.collations);\n };\n\n #initializeValidatableControlsBasicTab = () => {\n // populate #controlsValidation with the controls that could have errors.\n const validatableControls: HTMLElement[] = [\n this.#dataSourceEl,\n this.#kbNameEl,\n this.#prototypingEnvironmentEl,\n this.#prototypingTargetEl,\n this.#userInterfaceLanguageEl\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 #initializeValidatableControlsAdvancedTab = () => {\n // populate #controlsValidation with the controls that could have errors.\n const validatableControls: HTMLElement[] = [\n this.#locationEl,\n this.#authenticationTypeEl,\n this.#createDataFilesInKBFolderEl,\n this.#serverNameEl,\n this.#authenticationTypeEl,\n this.#databaseNameEl,\n this.#userNameEl,\n this.#collationEl,\n this.#passwordEl,\n this.#savePasswordEl\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 /**\n * @description It allows defining the DBMS that will be used in the solution\n */\n // eslint-disable-next-line @stencil-community/own-props-must-be-private\n #selectLocationHandler = (): void => {\n this.selectLocationCallback().then(kbLocation => {\n if (kbLocation) {\n this.kbLocation = kbLocation;\n } else {\n // to be defined\n }\n });\n };\n\n #tabSelectionChangedHandler = (\n event: CustomEvent<{\n lastSelectedIndex: number;\n newSelectedId: string;\n newSelectedIndex: number;\n }>\n ): void => {\n if (event.detail.newSelectedId === ADVANCED_TAB_SELECTOR) {\n this.advancedTabIsVisible = true;\n // Some logic for advanced tab is done on componentDidRender lifecycle,\n // since the reference to the elements is needed.\n }\n };\n\n /**\n * Evaluates which front-end options need updates on 'getFrontEndsCallback'\n * by comparing the new state (getFrontEndsCallback result) and previous state.\n */\n // eslint-disable-next-line @stencil-community/own-props-must-be-private\n #updateFrontEnds = async () => {\n const updatedFrontEnds = await this.getFrontEndsCallback(\n this.#selectedPrototypingEnvironmentId\n );\n if (updatedFrontEnds?.length > 0) {\n this.frontEnds = updatedFrontEnds;\n }\n };\n\n render(): void {\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 class=\"section\">\n <header\n class={{\n \"field-group\": true,\n \"control-header-with-border\": !this.isAdvanced,\n \"control-header\": this.isAdvanced,\n \"header\": true,\n \"header-two-cols\": this.isAdvanced,\n \"header-one-col\": !this.isAdvanced,\n \"spacing-body-block-start\": true,\n \"spacing-body-inline\": true\n }}\n >\n <div\n // #kb name\n class=\"field field-inline kb-name\"\n >\n <label class=\"label kb-label\" htmlFor=\"kbName\">\n {this.#componentLocale.header.kbName}\n </label>\n <ch-edit\n // TODO add placeholder\n autoFocus\n class=\"form-input kb-input\"\n placeholder=\"SalesInventory\"\n value={this.kbName}\n ref={(el: HTMLChEditElement) =>\n (this.#kbNameEl = el as HTMLChEditElement)\n }\n id=\"kbName\"\n part=\"kb-name\"\n ></ch-edit>\n {this.#evaluateTooltipRender(this.#kbNameEl)}\n </div>\n\n {this.isAdvanced && (\n <div class=\"location-wrapper\">\n <div\n // #location\n class=\"field field-inline location\"\n >\n <label class=\"label location-label\" htmlFor=\"kbLocation\">\n {this.#componentLocale.header.kbLocation}\n </label>\n <ch-edit\n // TODO add placeholder\n class=\"form-input location-input\"\n value={this.kbLocation}\n ref={(el: HTMLChEditElement) =>\n (this.#locationEl = el as HTMLChEditElement)\n }\n id=\"kbLocation\"\n part=\"kb-location\"\n ></ch-edit>\n {this.#evaluateTooltipRender(this.#locationEl)}\n </div>\n <button\n class=\"button-tertiary button-icon-only location-icon\"\n aria-label={this.#componentLocale.header.selectLocationButton}\n title={this.#componentLocale.header.selectLocationButton}\n part=\"button-select-location\"\n onClick={this.#selectLocationHandler}\n >\n <ch-image class=\"icon-md\" src={SYSTEM_ICON}></ch-image>\n </button>\n </div>\n )}\n </header>\n\n {this.isAdvanced ? (\n <ch-tab-render\n // #tab\n class={{\n scrollable: true,\n tab: true,\n [MAIN_SECTION_CLASSES]: true\n }}\n direction=\"block\"\n model={this.#kbSectionsModel}\n selectedId={BASIC_TAB_SELECTOR}\n overflow=\"auto\"\n contain=\"size\"\n onSelectedItemChange={\n !this.advancedTabIsVisible && this.#tabSelectionChangedHandler\n }\n >\n <div\n slot={BASIC_TAB_SELECTOR}\n class={BASIC_SECTION_PARENT_CLASSES}\n part=\"tab-button-basic\"\n >\n {this.#renderBasic()}\n </div>\n\n {this.advancedTabIsVisible && (\n <div\n slot={ADVANCED_TAB_SELECTOR}\n class=\"advanced spacing-body-inline\"\n part=\"tab-button-advanced\"\n >\n {this.#renderAdvanced()}\n </div>\n )}\n </ch-tab-render>\n ) : (\n <div class={MAIN_SECTION_CLASSES}>\n <div class={BASIC_SECTION_PARENT_CLASSES}>\n {this.#renderBasic()}\n </div>\n </div>\n )}\n\n <footer\n class={{\n \"control-footer\": this.isAdvanced,\n \"control-footer-with-border\": !this.isAdvanced,\n \"spacing-body-block-end\": true,\n \"spacing-body-inline\": true\n }}\n >\n <div class=\"buttons-spacer\">\n <button\n // #cancel\n class=\"button-secondary\"\n id=\"button-cancel\"\n onClick={this.#cancelKbHandler}\n part=\"button-cancel\"\n >\n {this.#componentLocale.footer.btnCancel}\n </button>\n <button\n // #create\n class=\"button-primary\"\n id=\"button-create\"\n onClick={this.#createKbHandler}\n part=\"button-create\"\n >\n {this.#componentLocale.footer.btnCreate}\n </button>\n </div>\n </footer>\n </section>\n </Host>\n );\n }\n}\nexport interface NewKBData {\n authenticationType: string;\n collation: string;\n createDataFilesInKBFolder: boolean;\n databaseName: string;\n dataSource: string;\n frontEnds: string[];\n kbLocation: string;\n kbName: string;\n password: string;\n prototypingEnvironment: string;\n prototypingTarget: string;\n savePassword: boolean;\n serverName: string;\n userInterfaceLanguage: string;\n userName: string;\n}\n\nexport type CreateCallback = (data: NewKBData) => Promise<FormSubmitResult>;\n\nexport type CancelCallback = () => Promise<void>;\n\nexport type GetDataSourcesCallback = (\n selectedPrototypingEnvironmentId: string,\n selectedPrototypingTargetId: string\n) => Promise<GxOption[]>;\n\nexport type GetFrontEndsCallback = (\n selectedPrototypingEnvironmentId: string\n) => Promise<GxOption[]>;\n\nexport type SelectLocationCallback = () => Promise<string>;\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"names":["gxIdeStatusButtonsCss","GxIdeStatusButtons","this","evaluateIconsSize","compact","iconsSize","evaluateLabel","type","amount","minimal","singular","_componentLocale","selectionChangedHandler","e","stopPropagation","selectionChanged","emit","detail","componentWillLoad","Locale","getComponentStrings","el","render","h","Host","listName","noListBorder","ellipsis","onSelectionChanged","hideError","itemId","itemValue","icon","iconColor","errors","class","error","itemChecked","slot","hideWarning","warnings","warning","hideSuccess","successes","success","hideMessage","messages","message"],"sources":["src/components/_helpers/status-buttons/gx-ide-status-buttons.scss?tag=gx-ide-status-buttons&encapsulation=shadow","src/components/_helpers/status-buttons/gx-ide-status-buttons.tsx"],"sourcesContent":["@import \"../../../../node_modules/@genexus/gemini/dist/gemini/globals/mixins.scss\";\n\n:host {\n display: block;\n border-radius: var(--ds-form-control-border-radius);\n --status-buttons-label-color: var(--mer-text__on-surface);\n}\n/*list-selector*/\ngx-ide-list-selector::part(list) {\n display: flex;\n flex-direction: row;\n background-color: transparent;\n}\n/*list-selector-items*/\ngx-ide-list-selector-item {\n border-block-start: none !important; //reset\n\n &:not(:last-child) {\n border-inline-end: 1px solid var(--gx-ide-container-border-color);\n }\n flex: 1;\n text-align: center;\n\n .label {\n &__wrapper {\n display: inline-flex;\n width: auto;\n min-height: 0;\n }\n &__description {\n color: var(--status-buttons-label-color);\n margin-inline-start: var(--mer-spacing--2xs);\n text-transform: capitalize;\n }\n }\n\n /*active indicator*/\n .active-indicator {\n display: inline-block;\n width: var(--mer-spacing--2xs);\n height: var(--mer-spacing--2xs);\n border: 1px solid var(--mer-border-color__dim);\n border-radius: calc(var(--mer-spacing--xs) / 2);\n background-color: var(--mer-border-color__dim);\n }\n\n /*States*/\n &.error.not-zero {\n .active-indicator {\n background-color: var(--mer-border-color__error);\n border-color: var(--mer-border-color__error);\n }\n }\n &.warning.not-zero {\n .active-indicator {\n background-color: var(--mer-border-color__warning);\n border-color: var(--mer-border-color__warning);\n }\n }\n &.success.not-zero {\n .active-indicator {\n background-color: var(--mer-border-color__success);\n border-color: var(--mer-border-color__success);\n }\n }\n &.message.not-zero {\n .active-indicator {\n background-color: var(--mer-border-color__primary);\n border-color: var(--mer-border-color__primary);\n }\n }\n\n input {\n &:after {\n display: none;\n }\n }\n input:checked {\n + .label {\n --status-buttons-label-color: var(--mer-text__on-surface);\n background-color: inherit;\n\n .label__wrapper {\n &:before {\n display: block;\n }\n }\n }\n }\n\n /*hover*/\n &:hover {\n input:checked + .label {\n background-color: var(--ds-item-background-color--hover) !important;\n }\n }\n\n .label__wrapper {\n position: relative;\n &:before {\n content: \"\";\n width: 4px;\n height: 7px;\n border-width: 0 2px 2px 0;\n -webkit-transform: rotate(45deg);\n -ms-transform: rotate(45deg);\n transform: rotate(45deg);\n border-color: var(--gxg-checkbox-indicator-color);\n border-style: solid;\n position: absolute;\n left: auto;\n top: 12px;\n right: 14px;\n display: none;\n }\n &:after {\n content: \"\";\n width: var(--gxg-checkbox-size);\n height: var(--gxg-checkbox-size);\n border: 1px solid var(--gxg-checkbox-border-color);\n border-radius: var(--gxg-checkbox-border-radius);\n }\n }\n}\n\n/*--------------------\nCompact size\n--------------------*/\n:host([compact]) {\n gx-ide-list-selector-item {\n font-size: var(--mer-font__size--2xs);\n }\n .label__wrapper {\n padding: var(--mer-spacing--3xs) var(--mer-spacing--xs)\n var(--mer-spacing--3xs) var(--mer-spacing--2xs);\n &:before {\n top: 10px;\n }\n }\n .label__universal-slot {\n margin-inline-end: var(--mer-spacing--3xs);\n }\n}\n\n/*--------------------\nAll about borders\n--------------------*/\n:host([no-inner-borders]) {\n gx-ide-list-selector-item {\n border-inline-end: none;\n }\n}\n","/* STENCIL IMPORTS */\nimport {\n Component,\n Host,\n h,\n Prop,\n Element,\n State,\n Event,\n EventEmitter\n} from \"@stencil/core\";\n/* OTHER LIBRARIES IMPORTS */\nimport { Size } from \"@genexus/gemini/dist/types/components/icon/icon\";\n/* CUSTOM IMPORTS */\nimport { CheckedItemsInfo } from \"../list-selector/list-selector\";\nimport { Locale } from \"../../../common/locale\";\n@Component({\n tag: \"gx-ide-status-buttons\",\n styleUrl: \"gx-ide-status-buttons.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/status-buttons\"]\n})\nexport class GxIdeStatusButtons {\n /*\nINDEX:\n1.OWN PROPERTIES \n2.REFERENCE TO ELEMENTS\n3.STATE() VARIABLES\n4.PUBLIC PROPERTY API | WATCH'S\n5.EVENTS (EMIT)\n6.COMPONENT LIFECYCLE METHODS\n7.LISTENERS\n8.PUBLIC METHODS API\n9.LOCAL METHODS\n10.RENDER() FUNCTION\n*/\n\n // 1.OWN PROPERTIES | WATCH'S //\n\n /**\n * The component hard-coded strings translations.\n */\n private _componentLocale: any;\n\n /**\n * Whether or not the buttons are active\n */\n @Prop() readonly active: boolean = false;\n\n /**\n * The errors amount\n */\n @Prop() readonly errors: number = 0;\n\n /**\n * Hide the errors button\n */\n @Prop() readonly hideError: boolean = false;\n\n /**\n * The warnings amount\n */\n @Prop() readonly warnings: number = 0;\n\n /**\n * Hide the warnings button\n */\n @Prop() readonly hideWarning: boolean = false;\n\n /**\n * The successes amount\n */\n @Prop() readonly successes: number = 0;\n\n /**\n * Hide the successes button\n */\n @Prop() readonly hideSuccess: boolean = false;\n\n /**\n * The messages amount\n */\n @Prop() readonly messages: number = 0;\n\n /**\n * Hide the messages button\n */\n @Prop() readonly hideMessage: boolean = false;\n\n /**\n * Display only the number\n */\n @Prop() readonly minimal: boolean = false;\n\n /**\n * If present will make the component look smaller.\n */\n @Prop({ reflect: true }) readonly compact: boolean = false;\n\n /**\n * No inner borders\n */\n @Prop({ reflect: true }) readonly noInnerBorders: boolean = false;\n\n // 2. REFERENCE TO ELEMENTS //\n\n @Element() el: HTMLGxIdeStatusButtonsElement;\n\n // 3.STATE() VARIABLES //\n\n @State() iconsSize: Size = \"small\";\n\n // 4.PUBLIC PROPERTY API | WATCH'S //\n\n // 5.EVENTS (EMIT) //\n\n /**\n * Emits the actual selection\n */\n @Event() selectionChanged: EventEmitter<CheckedItemsInfo>;\n\n // 6.COMPONENT LIFECYCLE METHODS //\n\n async componentWillLoad() {\n this._componentLocale = await Locale.getComponentStrings(this.el);\n this.evaluateIconsSize();\n }\n\n // 7.LISTENERS //\n\n // 8.PUBLIC METHODS API //\n\n // 9.LOCAL METHODS //\n\n private evaluateIconsSize = () => {\n if (this.compact) {\n this.iconsSize = \"small\";\n }\n };\n\n private evaluateLabel = (\n type: \"errors\" | \"warnings\" | \"successes\" | \"messages\"\n ): string => {\n const amount = this[type];\n if (this.minimal) {\n return `${amount}`;\n } else {\n const singular: boolean = amount === 1;\n return singular\n ? `${amount} ${this._componentLocale[type][\"singular\"]}`\n : `${amount} ${this._componentLocale[type][\"plural\"]}`;\n }\n };\n\n private selectionChangedHandler = (e: CustomEvent<CheckedItemsInfo>) => {\n e.stopPropagation();\n this.selectionChanged.emit(e.detail);\n };\n\n // 10.RENDER() FUNCTION //\n\n render() {\n return (\n <Host>\n <gx-ide-list-selector\n type=\"multi-selection\"\n listName=\"status-buttons\"\n noListBorder\n ellipsis\n iconsSize={this.iconsSize}\n onSelectionChanged={this.selectionChangedHandler}\n >\n {!this.hideError ? (\n <gx-ide-list-selector-item\n itemId=\"errors\"\n itemValue={this.evaluateLabel(\"errors\")}\n icon=\"gx-test/result-exception\"\n iconColor={this.errors === 0 ? \"disabled\" : \"mercury-on-surface\"}\n class={{ \"error\": true, \"not-zero\": this.errors !== 0 }}\n itemChecked\n >\n <span\n slot=\"universal\"\n class={{\n \"active-indicator\": true\n }}\n ></span>\n </gx-ide-list-selector-item>\n ) : null}\n {!this.hideWarning ? (\n <gx-ide-list-selector-item\n itemId=\"warnings\"\n itemValue={this.evaluateLabel(\"warnings\")}\n icon=\"gx-test/result-warning\"\n iconColor={\n this.warnings === 0 ? \"disabled\" : \"mercury-on-surface\"\n }\n class={{ \"warning\": true, \"not-zero\": this.warnings !== 0 }}\n itemChecked\n >\n <span\n slot=\"universal\"\n class={{\n \"active-indicator\": true\n }}\n ></span>\n </gx-ide-list-selector-item>\n ) : null}\n {!this.hideSuccess ? (\n <gx-ide-list-selector-item\n itemId=\"successes\"\n itemValue={this.evaluateLabel(\"successes\")}\n icon=\"gx-test/result-ok\"\n iconColor={\n this.successes === 0 ? \"disabled\" : \"mercury-on-surface\"\n }\n class={{ \"success\": true, \"not-zero\": this.successes !== 0 }}\n itemChecked\n >\n <span\n slot=\"universal\"\n class={{\n \"active-indicator\": true\n }}\n ></span>\n </gx-ide-list-selector-item>\n ) : null}\n {!this.hideMessage ? (\n <gx-ide-list-selector-item\n itemId=\"messages\"\n itemValue={this.evaluateLabel(\"messages\")}\n icon=\"gx-test/screenshot-viewer\"\n iconColor={\n this.messages === 0 ? \"disabled\" : \"mercury-on-surface\"\n }\n class={{ \"message\": true, \"not-zero\": this.messages !== 0 }}\n itemChecked\n >\n <span\n slot=\"universal\"\n class={{\n \"active-indicator\": true\n }}\n ></span>\n </gx-ide-list-selector-item>\n ) : null}\n </gx-ide-list-selector>\n </Host>\n );\n }\n}\n"],"mappings":";;;;AAAA,MAAMA,IAAwB;;MCsBjBC,IAAkB;;;;;;;QAgHrBC,KAAAC,oBAAoB;MAC1B,IAAID,KAAKE,SAAS;QAChBF,KAAKG,YAAY;;;IAIbH,KAAAI,gBACNC;MAEA,MAAMC,IAASN,KAAKK;MACpB,IAAIL,KAAKO,SAAS;QAChB,OAAO,GAAGD;aACL;QACL,MAAME,IAAoBF,MAAW;QACrC,OAAOE,IACH,GAAGF,KAAUN,KAAKS,iBAAiBJ,GAAM,gBACzC,GAAGC,KAAUN,KAAKS,iBAAiBJ,GAAM;;;IAIzCL,KAAAU,0BAA2BC;MACjCA,EAAEC;MACFZ,KAAKa,iBAAiBC,KAAKH,EAAEI;AAAO;kBA7GH;kBAKD;qBAKI;oBAKF;uBAKI;qBAKH;uBAKG;oBAKJ;uBAKI;mBAKJ;mBAKiB;0BAKO;qBAQjC;;;EAa3B,uBAAMC;IACJhB,KAAKS,yBAAyBQ,EAAOC,oBAAoBlB,KAAKmB;IAC9DnB,KAAKC;;;EAoCP,MAAAmB;IACE,OACEC,EAACC,GAAI,MACHD,EAAA;MACEhB,MAAK;MACLkB,UAAS;MACTC,cAAY;MACZC,UAAQ;MACRtB,WAAWH,KAAKG;MAChBuB,oBAAoB1B,KAAKU;QAEvBV,KAAK2B,YACLN,EAAA;MACEO,QAAO;MACPC,WAAW7B,KAAKI,cAAc;MAC9B0B,MAAK;MACLC,WAAW/B,KAAKgC,WAAW,IAAI,aAAa;MAC5CC,OAAO;QAAEC,OAAS;QAAM,YAAYlC,KAAKgC,WAAW;;MACpDG,aAAW;OAEXd,EAAA;MACEe,MAAK;MACLH,OAAO;QACL,oBAAoB;;UAIxB,OACFjC,KAAKqC,cACLhB,EAAA;MACEO,QAAO;MACPC,WAAW7B,KAAKI,cAAc;MAC9B0B,MAAK;MACLC,WACE/B,KAAKsC,aAAa,IAAI,aAAa;MAErCL,OAAO;QAAEM,SAAW;QAAM,YAAYvC,KAAKsC,aAAa;;MACxDH,aAAW;OAEXd,EAAA;MACEe,MAAK;MACLH,OAAO;QACL,oBAAoB;;UAIxB,OACFjC,KAAKwC,cACLnB,EAAA;MACEO,QAAO;MACPC,WAAW7B,KAAKI,cAAc;MAC9B0B,MAAK;MACLC,WACE/B,KAAKyC,cAAc,IAAI,aAAa;MAEtCR,OAAO;QAAES,SAAW;QAAM,YAAY1C,KAAKyC,cAAc;;MACzDN,aAAW;OAEXd,EAAA;MACEe,MAAK;MACLH,OAAO;QACL,oBAAoB;;UAIxB,OACFjC,KAAK2C,cACLtB,EAAA;MACEO,QAAO;MACPC,WAAW7B,KAAKI,cAAc;MAC9B0B,MAAK;MACLC,WACE/B,KAAK4C,aAAa,IAAI,aAAa;MAErCX,OAAO;QAAEY,SAAW;QAAM,YAAY7C,KAAK4C,aAAa;;MACxDT,aAAW;OAEXd,EAAA;MACEe,MAAK;MACLH,OAAO;QACL,oBAAoB;;UAIxB"}