@genexus/genexus-ide-ui 1.1.37 → 1.1.39

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 (88) hide show
  1. package/dist/cjs/genexus-ide-ui.cjs.js +1 -1
  2. package/dist/cjs/gx-ide-create-kb-from-server.cjs.entry.js +9 -3
  3. package/dist/cjs/gx-ide-create-kb-from-server.cjs.entry.js.map +1 -1
  4. package/dist/cjs/gx-ide-details-acknowledgements.cjs.entry.js +19 -34
  5. package/dist/cjs/gx-ide-details-acknowledgements.cjs.entry.js.map +1 -1
  6. package/dist/cjs/gx-ide-new-kb.cjs.entry.js +9 -6
  7. package/dist/cjs/gx-ide-new-kb.cjs.entry.js.map +1 -1
  8. package/dist/cjs/gx-ide-server-selector.cjs.entry.js +12 -4
  9. package/dist/cjs/gx-ide-server-selector.cjs.entry.js.map +1 -1
  10. package/dist/cjs/gx-ide-status-message.cjs.entry.js +42 -0
  11. package/dist/cjs/gx-ide-status-message.cjs.entry.js.map +1 -0
  12. package/dist/cjs/loader.cjs.js +1 -1
  13. package/dist/collection/collection-manifest.json +1 -0
  14. package/dist/collection/components/details-acknowledgements/details-acknowledgements.js +19 -34
  15. package/dist/collection/components/details-acknowledgements/details-acknowledgements.js.map +1 -1
  16. package/dist/collection/components/details-acknowledgements/gx-ide-assets/details-acknowledgements/langs/details-acknowledgements.lang.en.json +3 -1
  17. package/dist/collection/components/details-acknowledgements/gx-ide-assets/details-acknowledgements/langs/details-acknowledgements.lang.ja.json +3 -1
  18. package/dist/collection/components/details-acknowledgements/gx-ide-assets/details-acknowledgements/langs/details-acknowledgements.lang.zh.json +3 -1
  19. package/dist/collection/components/new-kb/new-kb.js +9 -7
  20. package/dist/collection/components/new-kb/new-kb.js.map +1 -1
  21. package/dist/collection/components/status-message/gx-ide-assets/status-message/images/genexus-next-logo.svg +3 -0
  22. package/dist/collection/components/status-message/gx-ide-assets/status-message/images/left-side-illustration.svg +36 -0
  23. package/dist/collection/components/status-message/gx-ide-assets/status-message/images/right-side-illustration.svg +31 -0
  24. package/dist/collection/components/status-message/gx-ide-assets/status-message/langs/status-message.lang.en.json +6 -0
  25. package/dist/collection/components/status-message/gx-ide-assets/status-message/langs/status-message.lang.ja.json +6 -0
  26. package/dist/collection/components/status-message/gx-ide-assets/status-message/langs/status-message.lang.zh.json +6 -0
  27. package/dist/collection/components/status-message/status-message.css +33 -0
  28. package/dist/collection/components/status-message/status-message.js +42 -0
  29. package/dist/collection/components/status-message/status-message.js.map +1 -0
  30. package/dist/collection/components/team-dev/create-kb-from-server/create-kb-from-server.js +9 -3
  31. package/dist/collection/components/team-dev/create-kb-from-server/create-kb-from-server.js.map +1 -1
  32. package/dist/collection/components/team-dev/server-selector/server-selector.js +12 -4
  33. package/dist/collection/components/team-dev/server-selector/server-selector.js.map +1 -1
  34. package/dist/collection/testing/locale.e2e.js +1 -0
  35. package/dist/collection/testing/locale.e2e.js.map +1 -1
  36. package/dist/components/gx-ide-create-kb-from-server.js +9 -3
  37. package/dist/components/gx-ide-create-kb-from-server.js.map +1 -1
  38. package/dist/components/gx-ide-details-acknowledgements.js +19 -34
  39. package/dist/components/gx-ide-details-acknowledgements.js.map +1 -1
  40. package/dist/components/gx-ide-new-kb.js +9 -7
  41. package/dist/components/gx-ide-new-kb.js.map +1 -1
  42. package/dist/components/gx-ide-server-selector.js +12 -4
  43. package/dist/components/gx-ide-server-selector.js.map +1 -1
  44. package/dist/components/gx-ide-status-message.d.ts +11 -0
  45. package/dist/components/gx-ide-status-message.js +56 -0
  46. package/dist/components/gx-ide-status-message.js.map +1 -0
  47. package/dist/esm/genexus-ide-ui.js +1 -1
  48. package/dist/esm/gx-ide-create-kb-from-server.entry.js +9 -3
  49. package/dist/esm/gx-ide-create-kb-from-server.entry.js.map +1 -1
  50. package/dist/esm/gx-ide-details-acknowledgements.entry.js +19 -34
  51. package/dist/esm/gx-ide-details-acknowledgements.entry.js.map +1 -1
  52. package/dist/esm/gx-ide-new-kb.entry.js +9 -6
  53. package/dist/esm/gx-ide-new-kb.entry.js.map +1 -1
  54. package/dist/esm/gx-ide-server-selector.entry.js +12 -4
  55. package/dist/esm/gx-ide-server-selector.entry.js.map +1 -1
  56. package/dist/esm/gx-ide-status-message.entry.js +38 -0
  57. package/dist/esm/gx-ide-status-message.entry.js.map +1 -0
  58. package/dist/esm/loader.js +1 -1
  59. package/dist/genexus-ide-ui/genexus-ide-ui.esm.js +1 -1
  60. package/dist/genexus-ide-ui/genexus-ide-ui.esm.js.map +1 -1
  61. package/dist/genexus-ide-ui/gx-ide-assets/details-acknowledgements/langs/details-acknowledgements.lang.en.json +3 -1
  62. package/dist/genexus-ide-ui/gx-ide-assets/details-acknowledgements/langs/details-acknowledgements.lang.ja.json +3 -1
  63. package/dist/genexus-ide-ui/gx-ide-assets/details-acknowledgements/langs/details-acknowledgements.lang.zh.json +3 -1
  64. package/dist/genexus-ide-ui/gx-ide-assets/status-message/images/genexus-next-logo.svg +3 -0
  65. package/dist/genexus-ide-ui/gx-ide-assets/status-message/images/left-side-illustration.svg +36 -0
  66. package/dist/genexus-ide-ui/gx-ide-assets/status-message/images/right-side-illustration.svg +31 -0
  67. package/dist/genexus-ide-ui/gx-ide-assets/status-message/langs/status-message.lang.en.json +6 -0
  68. package/dist/genexus-ide-ui/gx-ide-assets/status-message/langs/status-message.lang.ja.json +6 -0
  69. package/dist/genexus-ide-ui/gx-ide-assets/status-message/langs/status-message.lang.zh.json +6 -0
  70. package/dist/genexus-ide-ui/{p-3dc5d62e.entry.js → p-4b680e46.entry.js} +102 -102
  71. package/dist/genexus-ide-ui/p-4b680e46.entry.js.map +1 -0
  72. package/dist/genexus-ide-ui/p-50253b96.entry.js +61 -0
  73. package/dist/genexus-ide-ui/p-50253b96.entry.js.map +1 -0
  74. package/dist/genexus-ide-ui/{p-bee71b20.entry.js → p-970e89ac.entry.js} +55 -45
  75. package/dist/genexus-ide-ui/p-970e89ac.entry.js.map +1 -0
  76. package/dist/genexus-ide-ui/{p-9ad85231.entry.js → p-b34ecbdc.entry.js} +35 -28
  77. package/dist/genexus-ide-ui/p-b34ecbdc.entry.js.map +1 -0
  78. package/dist/genexus-ide-ui/{p-5e2f9545.entry.js → p-bd0ffc08.entry.js} +56 -72
  79. package/dist/genexus-ide-ui/p-bd0ffc08.entry.js.map +1 -0
  80. package/dist/types/components/details-acknowledgements/types.d.ts +1 -1
  81. package/dist/types/components/new-kb/new-kb.d.ts +2 -3
  82. package/dist/types/components/status-message/status-message.d.ts +9 -0
  83. package/dist/types/components.d.ts +13 -0
  84. package/package.json +1 -1
  85. package/dist/genexus-ide-ui/p-3dc5d62e.entry.js.map +0 -1
  86. package/dist/genexus-ide-ui/p-5e2f9545.entry.js.map +0 -1
  87. package/dist/genexus-ide-ui/p-9ad85231.entry.js.map +0 -1
  88. package/dist/genexus-ide-ui/p-bee71b20.entry.js.map +0 -1
@@ -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_selectedDataSourceId","_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","async","_GxIdeNewKb_getPrototypingEnvironments","_GxIdeNewKb_dataSourceValueChangedHandler","value","_GxIdeNewKb_renderAdvanced","h","class","tabAdvanced","tabTitle","htmlFor","serverName","label","disabled","serverNames","length","placeholder","disabledPlaceholder","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","defaultPrototypingEnvironments","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","getPrototypingEnvironmentsCallback","selectedPrototypingTargetId","envs","getDataSourcesCallback","selectedPrototypingEnvironmentId","updatedDefaultDataSourcesPromise","result","setSelectedItem","getSelectedItem","catch","_GxIdeNewKb_initialSetupAdvancedTab","selectedServerNameValue","selectedAuthenticationType","watchAuthenticationTypes","watchCollations","_GxIdeNewKb_initializeValidatableControlsBasicTab","forEach","validatableControl","reference","_GxIdeNewKb_initializeValidatableControlsAdvancedTab","_GxIdeNewKb_selectLocationHandler","selectLocationCallback","_GxIdeNewKb_tabSelectionChangedHandler","newSelectedId","advancedTabIsVisible","updatedFrontEnds","getFrontEndsCallback","newValue","mapOptionsToComboBoxItemModel","watchDefaultDataSources","watchDefaultPrototypingEnvironments","watchPrototypingTargets","watchServerNames","watchUserInterfaceLanguages","componentWillLoad","Locale","getComponentStrings","tabLabel","connectedCallback","componentDidLoad","componentDidRender","suspendShortcuts","suspend","render","Host","src","isAdvanced","header","autoFocus","selectLocationButton","title","onClick","scrollable","tab","tabListPosition","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, getIconPath } from \"@genexus/mercury\";\n\nimport { config } from \"../../common/config\";\nimport { Locale } from \"../../common/locale\";\nimport { getSelectedItem, setSelectedItem } 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 {\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 \"utils/spacing\",\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 #selectedDataSourceId: 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 * Callback invoked when the user changes the prototyping target id, allowing for the modification of the list of prototyping environments\n */\n @Prop() readonly getPrototypingEnvironmentsCallback!: GetPrototypingEnvironmentsCallback;\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({ mutable: true }) defaultPrototypingEnvironments: GxOption[] = [];\n @Watch(\"defaultPrototypingEnvironments\")\n watchDefaultPrototypingEnvironments(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 this.#getPrototypingEnvironments();\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.watchDefaultPrototypingEnvironments(this.defaultPrototypingEnvironments);\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 = async (): Promise<void> => {\n await this.#getPrototypingEnvironments();\n this.#getDataSources();\n };\n\n #dataSourceValueChangedHandler = () => {\n this.#selectedDataSourceId = this.#dataSourceEl.value;\n };\n\n #renderAdvanced = (): Element[] => {\n return [\n <h2\n // #knowledge base storage\n class=\"control-header subtitle-regular-xs\t 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=\"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=\"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=\"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 subtitle-regular-xs\t 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.defaultPrototypingEnvironments.length === 0}\n placeholder={\n this.defaultPrototypingEnvironments.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 onInput={this.#dataSourceValueChangedHandler}\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 subtitle-regular-xs\t 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 #getPrototypingEnvironments = async (): Promise<void> => {\n if (this.getPrototypingEnvironmentsCallback) {\n const selectedPrototypingTargetId = this.#prototypingTargetEl ? \n this.#prototypingTargetEl.value : this.prototypingTargetsInitialValue;\n const envs = await this.getPrototypingEnvironmentsCallback(selectedPrototypingTargetId);\n if (envs) {\n this.defaultPrototypingEnvironments = envs;\n }\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 result = setSelectedItem(result, this.#selectedDataSourceId);\n this.#selectedDataSourceId = getSelectedItem(result);\n this.defaultDataSources = result;\n // set first option as selected\n this.#dataSourceEl.value = \n this.#selectedDataSourceId !== undefined ? this.#selectedDataSourceId : 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() {\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=\"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=\"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 tabListPosition=\"block-start\"\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 GetPrototypingEnvironmentsCallback = (\n selectedPrototypingTargetId: string\n) => Promise<GxOption[]>;\n\nexport type SelectLocationCallback = () => Promise<string>;\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"names":["detailsAcknowledgementsCss","OPEN_WINDOW_ICON","getIconPath","category","name","colorType","EXPAND_ICON","COLLAPSE_ICON","IMAGES_PATH","BACKGROUND_SIZE","GENEXUS_NEXT_LOGO_SRC","getAssetPath","BG_IMAGE_TOP_START","BG_IMAGE_BOTTOM_START","BG_IMAGE_BOTTOM_END","CSS_BUNDLES","GxIdeDetailsAcknowledgements","_GxIdeDetailsAcknowledgements_getFormatedDate","set","this","date","toISOString","split","_GxIdeDetailsAcknowledgements_renderLicensesInfo","licenses","type","packageData","h","class","map","license","licenseId","__classPrivateFieldGet","_GxIdeDetailsAcknowledgements_getLicenseId","call","showDescription","expandedLicenseId","key","description","_GxIdeDetailsAcknowledgements_renderLicensesViewButtons","visibleLicenseButton","icon","viewLicenseButtonLabel","_componentLocale","packageCard","licenseLabel","onClick","_GxIdeDetailsAcknowledgements_viewLicenseClickedHandler","src","licenseName","packageName","packageVersion","undefined","_GxIdeDetailsAcknowledgements_openLinkClickedHandler","url","e","openPackageUrlCallback","preventDefault","componentWillLoad","Locale","getComponentStrings","el","render","formatedDate","dateGenerated","Host","style","backgroundImage","backgroundPosition","backgroundRepeat","backgroundSize","model","detailsCard","title","mainDescription","secondaryDescription","dateTime","_a","packages","packageItem","headingContent","packageURL","href","target","declaredLicenses"],"sources":["src/components/details-acknowledgements/details-acknowledgements.scss?tag=gx-ide-details-acknowledgements&encapsulation=shadow","src/components/details-acknowledgements/details-acknowledgements.tsx"],"sourcesContent":[":host {\n display: grid;\n block-size: 100%;\n grid-auto-rows: max-content;\n justify-content: center;\n padding: 95px var(--mer-spacing--lg) 95px var(--mer-spacing--lg);\n overflow: auto;\n}\n\n%resetList {\n // TODO: Use mixin from common\n list-style: none;\n margin: 0;\n padding: 0;\n}\n\n.main-wrapper {\n max-inline-size: 1000px;\n display: grid;\n gap: var(--mer-spacing--xl);\n}\n\n.logo {\n inline-size: 200px;\n margin: 0 auto;\n margin-block-end: var(--mer-spacing--2xl);\n opacity: 0;\n transform: translateY(var(--mer-spacing--2xs));\n animation: showLogo var(--mer-timing--regular) ease-out forwards;\n animation-delay: var(--mer-timing--regular);\n}\n@keyframes showLogo {\n 100% {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n// general\n\n.card {\n display: grid;\n border-radius: var(--mer-border__radius--sm);\n border-width: var(--mer-border__width--sm);\n border-color: var(--elevation-border-color);\n border-style: solid;\n padding: var(--mer-spacing--lg);\n gap: var(--mer-spacing--md);\n opacity: 0;\n animation: showCard var(--mer-timing--fast) ease-out forwards;\n animation-delay: calc(var(--mer-timing--regular) * 2);\n}\n@keyframes showCard {\n 100% {\n opacity: 1;\n }\n}\n\n// details card\n\nh1.title {\n font-weight: 600;\n}\n\n.intro-container {\n display: grid;\n gap: var(--mer-spacing--md);\n}\n\n.date-container {\n display: grid;\n gap: var(--mer-spacing--sm);\n}\n\n// package card\n\n.card-package {\n opacity: 0;\n transition: opacity var(--mer-timing--fast);\n}\n\n.package-name {\n --package-name-color: var(--mer-text__primary);\n color: var(--package-name-color);\n\n a {\n display: flex;\n align-items: center;\n gap: 8px;\n }\n\n &.has-link {\n // TODO: This should be a class in Mercury\n &:hover {\n --package-name-color: var(--mer-text__primary--hover);\n }\n &:active {\n --package-name-color: var(--mer-text__primary--active);\n }\n }\n}\n.package-link {\n display: inline-block;\n}\n\n.licenses-names-list {\n @extend %resetList;\n display: flex;\n align-items: center;\n}\n.licenses-names-item:not(:first-child)::before {\n content: \"•\";\n padding-inline: 8px;\n}\n\n.licenses-descriptions-list {\n @extend %resetList;\n}\n.licenses-descriptions-description {\n white-space: break-spaces;\n max-block-size: 940px;\n overflow: auto;\n line-height: 1.5;\n}\n.licenses-descriptions-item {\n display: grid;\n gap: var(--mer-spacing--md);\n}\n\n.code-box {\n border-radius: var(--mer-border__radius--sm);\n background-color: var(--mer-surface);\n border: 1px solid var(--mer-border-color__on-elevation--01);\n padding: var(--mer-spacing--md);\n font-family: var(--font-family-code);\n font-size: var(--font-size-body-s);\n display: grid;\n gap: var(--mer-spacing--lg);\n}\n\n.description-list {\n display: grid;\n gap: var(--mer-spacing--xs);\n max-inline-size: 400px;\n margin: 0 auto;\n}\n\n.show-more-button {\n justify-self: start;\n}\n\n// utilities\n// WA/TODO: This should be defined on Mercury\n.color-default {\n color: var(--mer-text__highlighted);\n}\n.color-neutral {\n color: var(--mer-color__neutral-gray--400);\n}\n.color-primary {\n color: var(--mer-text__primary);\n}\n\np {\n // TODO: Update line-height values on Mercury\n --line-height-tight: 1.5;\n --font-weight-regular: 300;\n}\n\nhr {\n // WA/TODO: A style for hr should be defined on Mercury\n border-block-start: 0;\n border-color: var(--mer-border-color__on-elevation--01);\n inline-size: 100%;\n margin: 0;\n}\n","import {\n Component,\n Host,\n h,\n Prop,\n Element,\n State,\n getAssetPath,\n JSX\n} from \"@stencil/core\";\nimport { MercuryBundles, getIconPath } from \"@genexus/mercury\";\nimport { Locale } from \"../../common/locale\";\n\nimport type { PackageData, License, OpenPackageURLCallback } from \"./types\";\n\nconst OPEN_WINDOW_ICON = getIconPath({\n category: \"gemini-tools\",\n name: \"open-window\",\n colorType: \"primary\"\n});\nconst EXPAND_ICON = getIconPath({\n category: \"system\",\n name: \"expand\",\n colorType: \"on-primary\"\n});\nconst COLLAPSE_ICON = getIconPath({\n category: \"system\",\n name: \"collapse-content\",\n colorType: \"on-primary\"\n});\n\nconst IMAGES_PATH = \"./gx-ide-assets/details-acknowledgements/images\";\nconst BACKGROUND_SIZE = \"300px\";\n\nconst GENEXUS_NEXT_LOGO_SRC = getAssetPath(\n `${IMAGES_PATH}/genexus-next-logo.svg`\n);\nconst BG_IMAGE_TOP_START = getAssetPath(`${IMAGES_PATH}/top-start.svg`);\nconst BG_IMAGE_BOTTOM_START = getAssetPath(`${IMAGES_PATH}/bottom-start.svg`);\nconst BG_IMAGE_BOTTOM_END = getAssetPath(`${IMAGES_PATH}/bottom-end.svg`);\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"utils/typography\",\n \"utils/elevation\",\n \"components/button\",\n \"components/icon\",\n \"chameleon/scrollbar\"\n];\n\n@Component({\n tag: \"gx-ide-details-acknowledgements\",\n styleUrl: \"details-acknowledgements.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/details-acknowledgements\"]\n})\nexport class GxIdeDetailsAcknowledgements {\n /**\n * The component hard-coded strings translations.\n */\n _componentLocale: any;\n\n @Element() el: HTMLGxIdeDetailsAcknowledgementsElement;\n\n /**\n * Identifier of the currently expanded license. Should combine:\n * packageName + packageVersion + license.name. Example:\n * @sentry/core-6.7.1-mit\n */\n @State() expandedLicenseId?: string;\n\n /** The date when the current release was published */\n @Prop() readonly dateGenerated?: Date;\n\n /** The version of the current release*/\n @Prop() readonly release?: string;\n\n /** The list of packages that the current release contains*/\n @Prop() readonly packages: PackageData[];\n\n /**\n * Callback invoked when the user clicks a package with a packageURL.\n * If openPackageUrlCallback is defined, the default link action is\n * prevented and the URL is passed to the host via the callback.\n * Otherwise, the link opens in a new tab as usual.\n */\n @Prop() readonly openPackageUrlCallback: OpenPackageURLCallback;\n\n async componentWillLoad() {\n this._componentLocale = await Locale.getComponentStrings(this.el);\n }\n\n #getFormatedDate = (date: Date) => {\n return date?.toISOString().split(\"T\")[0];\n };\n\n #renderLicensesInfo = (\n licenses: License[],\n type: \"name\" | \"description\" = \"name\",\n packageData?: PackageData\n ): JSX.Element => {\n return type === \"name\" ? (\n <ul class=\"licenses-names-list\">\n {licenses.map(license => {\n return (\n <li class=\"color-default body-regular-m licenses-names-item\">\n {license.name}\n </li>\n );\n })}\n </ul>\n ) : (\n <ul class=\"licenses-descriptions-list\">\n {licenses.map(license => {\n const licenseId = this.#getLicenseId(packageData, license.name);\n const showDescription = licenseId === this.expandedLicenseId;\n\n return (\n <li class=\"licenses-descriptions-item\" key={licenseId}>\n {showDescription ? (\n <p class=\"code-box color-neutral licenses-descriptions-description scrollable\">\n {license.description}\n </p>\n ) : null}\n </li>\n );\n })}\n </ul>\n );\n };\n\n #renderLicensesViewButtons = (\n licenses: License[],\n packageData?: PackageData\n ): JSX.Element => {\n return (\n <div class=\"licenses-buttons-container buttons-spacer\">\n {licenses.map(license => {\n const licenseId = this.#getLicenseId(packageData, license.name);\n const visibleLicenseButton = licenseId === this.expandedLicenseId;\n const icon = visibleLicenseButton ? COLLAPSE_ICON : EXPAND_ICON;\n\n const viewLicenseButtonLabel = `${license.name} ${this._componentLocale.packageCard.licenseLabel}`;\n\n return (\n <button\n class={{\n \"button-icon-and-text\": true,\n \"button-primary\": !visibleLicenseButton,\n \"button-secondary\": visibleLicenseButton,\n \"show-more-button\": true\n }}\n onClick={this.#viewLicenseClickedHandler(licenseId)}\n >\n <ch-image src={icon} class=\"package-icon icon-md\"></ch-image>\n {viewLicenseButtonLabel}\n </button>\n );\n })}\n </div>\n );\n };\n\n #getLicenseId = (packageData: PackageData, licenseName: string): string => {\n return `${packageData.packageName}-${packageData.packageVersion}-${licenseName}`;\n };\n\n #viewLicenseClickedHandler = (licenseId: string) => () => {\n if (licenseId === this.expandedLicenseId) {\n // collapse\n this.expandedLicenseId = undefined;\n } else {\n // expand collapse\n this.expandedLicenseId = licenseId;\n }\n };\n\n #openLinkClickedHandler = (url: string) => (e: MouseEvent) => {\n if (this.openPackageUrlCallback) {\n e.preventDefault();\n this.openPackageUrlCallback(url);\n }\n };\n\n render() {\n const formatedDate = this.#getFormatedDate(this.dateGenerated);\n return (\n <Host\n class=\"scrollable\"\n style={{\n backgroundImage: `url(${BG_IMAGE_TOP_START}), url(${BG_IMAGE_BOTTOM_START}), url(${BG_IMAGE_BOTTOM_END})`,\n backgroundPosition: \"left top, left bottom, right bottom\",\n backgroundRepeat: \"no-repeat, no-repeat, no-repeat\",\n backgroundSize: `${BACKGROUND_SIZE}, ${BACKGROUND_SIZE}, ${BACKGROUND_SIZE}`\n }}\n >\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <div class=\"main-wrapper\">\n <img src={GENEXUS_NEXT_LOGO_SRC} class=\"logo\"></img>\n <div class=\"card card-details elevation-1\">\n <div class=\"intro-container\">\n <h1 class=\"title heading-3 color-default\">\n {this._componentLocale.detailsCard.title}\n </h1>\n <p class=\"color-default body-regular-m\">\n {this._componentLocale.detailsCard.mainDescription}\n </p>\n <p class=\"color-neutral body-italic-s\">\n {this._componentLocale.detailsCard.secondaryDescription}\n </p>\n </div>\n\n <hr />\n\n <div class=\"date-container\">\n <p class=\"color-neutral\">\n {this._componentLocale.detailsCard.dateGenerated}\n </p>\n <time class=\"color-default\" dateTime={formatedDate}>\n {formatedDate}\n </time>\n </div>\n </div>\n\n {this.packages?.map(packageItem => {\n let packageName = `${packageItem.packageName} ${packageItem.packageVersion}`;\n const headingContent = packageItem.packageURL ? (\n <a\n href={packageItem.packageURL}\n target=\"_blank\"\n onClick={this.#openLinkClickedHandler(packageItem.packageURL)}\n class=\"package-link\"\n >\n {packageName}\n <ch-image\n src={OPEN_WINDOW_ICON}\n class=\"package-icon icon-md\"\n ></ch-image>\n </a>\n ) : (\n packageName\n );\n\n return (\n <article class=\"card card-package elevation-1\">\n <h2\n class={{\n \"subtitle-semi-bold-s\": true,\n \"package-name\": true,\n \"has-link\": !!packageItem.packageURL\n }}\n >\n {headingContent}\n </h2>\n <p class=\"color-default subtitle-semi-bold-s\">\n {this._componentLocale.packageCard.declaredLicenses}\n </p>\n {this.#renderLicensesInfo(packageItem.declaredLicenses, \"name\")}\n\n {this.#renderLicensesInfo(\n packageItem.declaredLicenses,\n \"description\",\n packageItem\n )}\n\n {this.#renderLicensesViewButtons(\n packageItem.declaredLicenses,\n packageItem\n )}\n </article>\n );\n })}\n </div>\n </Host>\n );\n }\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"names":["mapKbsModelToActionListModel","kbsData","listBoxItems","forEach","kb","push","id","type","caption","name","createKbFromServerCss","CSS_BUNDLES","INFO_ICON","getIconPath","category","colorType","GxIdeCreateKbFromServer","_GxIdeCreateKbFromServer_chSearchIcon","set","this","_GxIdeCreateKbFromServer_showMoreIcon","_GxIdeCreateKbFromServer_versionsSelect","value","_GxIdeCreateKbFromServer__componentLocale","_GxIdeCreateKbFromServer_kbsActionListModel","_GxIdeCreateKbFromServer_kbVersions","_GxIdeCreateKbFromServer_shortcutsSrc","getAssetPath","_GxIdeCreateKbFromServer_selectedKbId","_GxIdeCreateKbFromServer_kbNameAlreadyEditedByUser","_GxIdeCreateKbFromServer_versionSelectedTypeEl","_GxIdeCreateKbFromServer_localKBNameEl","_GxIdeCreateKbFromServer_cancelHandler","cancelCallback","_GxIdeCreateKbFromServer_changeConnectionHandler","async","changeConnectionCallback","authenticationType","connectionData","serverUrl","userName","userPassword","_GxIdeCreateKbFromServer_createHandler","versionSelectedType","__classPrivateFieldSet","createKBCallback","selectedKB","__classPrivateFieldGet","versionSelected","localKBName","localKbNameInputValue","versionList","then","formSubmitResult","validatableControls","validateControls","_GxIdeCreateKbFromServer_evaluateTooltipRender","controlReference","_b","_a","get","hasError","_c","message","h","class","actionElement","blockAlign","config","tooltipSettings","inlineAlign","delay","_GxIdeCreateKbFromServer_filterValueChangedHandler","event","filterValue","detail","toLowerCase","kbsFilteredActionListModel","filter","item","includes","_GxIdeCreateKbFromServer_init","getGXserverKBsCallback","result","_GxIdeCreateKbFromServer_initializeValidatableControls","validatableControl","reference","undefined","_GxIdeCreateKbFromServer_inputLocalKbNameHandler","_GxIdeCreateKbFromServer_selectedVersionHandler","selectKBVersionsCallback","length","map","kbVersion","versionsValueInput","versionsPlaceholder","toString","versionSelectedFieldValue","oneVersionSelectedFieldValue","_GxIdeCreateKbFromServer_selectKbChangeHandler","enableSelectVersionsButton","_GxIdeCreateKbFromServer_versionsChangedHandler","_GxIdeCreateKbFromServer_renderFooter","onClick","part","footer","cancel","disabled","createKb","Map","componentDidLoad","call","loading","componentWillLoad","Locale","getComponentStrings","el","render","Host","model","src","ref","chShortcutsEl","header","user","change","loaderTitle","loader","title","description","show","Fragment","startImgSrc","onInput","placeholder","searchKbsPlaceholder","stateIconSrc","stateTitle","emptyKBsText","isAnimated","selection","onSelectedItemsChange","onChange","htmlFor","versionsLabel","readonly","versionsPlaceholderDisabled","localKbNameLabel","localKbNamePlaceholder"],"sources":["src/components/team-dev/create-kb-from-server/helpers.ts","src/components/team-dev/create-kb-from-server/create-kb-from-server.scss?tag=gx-ide-create-kb-from-server&encapsulation=shadow","src/components/team-dev/create-kb-from-server/create-kb-from-server.tsx"],"sourcesContent":["import { ActionListItemModel } from \"@genexus/chameleon-controls-library\";\nimport { KBData } from \"./create-kb-from-server\";\n\nexport const mapKbsModelToActionListModel = (\n kbsData: KBData[]\n): ActionListItemModel[] => {\n const listBoxItems: ActionListItemModel[] = [];\n kbsData.forEach(kb => {\n listBoxItems.push({\n id: kb.id,\n type: \"actionable\",\n caption: kb.name\n });\n });\n return listBoxItems;\n};\n",":host {\n display: grid;\n block-size: 100%;\n grid-template-rows: max-content 1fr max-content;\n}\n\n.section {\n display: contents;\n}\n\n// - - - - - - - - - - -\n// Header\n// - - - - - - - - - - -\n\nheader {\n display: grid;\n grid-template-rows: max-content;\n grid-template-columns: 1fr 1fr max-content;\n}\n\n.button-change {\n align-self: center;\n justify-self: end;\n}\n\n// - - - - - - - - - - -\n// Main\n// - - - - - - - - - - -\n\n.main {\n display: grid;\n grid-template-columns: 1fr;\n grid-template-rows: max-content 1fr max-content max-content;\n position: relative;\n}\n\n.search-kbs {\n inline-size: 50%;\n}\n\n.versions-container {\n grid-auto-rows: max-content;\n\n &__input {\n display: grid;\n grid-template-columns: 1fr max-content;\n gap: var(--mer-spacing--xs);\n }\n\n .button-icon-only {\n border-color: var(--mer-color__neutral-gray--500);\n border-width: var(--mer-border__width--sm);\n border-radius: var(--mer-border__radius--sm);\n }\n\n .button-icon-only:hover {\n border-color: var(--mer-color__neutral-gray--100);\n }\n}\n","// Stencil\nimport {\n Component,\n Host,\n h,\n Prop,\n Element,\n State,\n getAssetPath,\n Fragment\n} from \"@stencil/core\";\n\n// Other Libraries\nimport { getIconPath, MercuryBundles } from \"@genexus/mercury\";\n\n// Custom Imports\nimport { config } from \"../../../common/config\";\nimport { GXServerConnectionData } from \"../connect-gx-server/connect-gx-server\";\nimport { FormSubmitResult } from \"../../../common/types\";\nimport {\n ControlValidation,\n validateControls\n} from \"../../../common/form-validation\";\nimport { Locale } from \"../../../common/locale\";\nimport { mapKbsModelToActionListModel } from \"./helpers\";\nimport {\n ActionListItemActionable,\n ActionListItemModel,\n ActionListItemModelExtended,\n ChActionListRenderCustomEvent,\n ChEditCustomEvent\n} from \"@genexus/chameleon-controls-library\";\nimport { RadioGroupItemModel } from \"@genexus/chameleon-controls-library/dist/types/components/radio-group/types\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"utils/form--full\",\n \"utils/layout\",\n \"utils/typography\",\n \"utils/spacing\",\n \"components/list-box\",\n \"components/tooltip\",\n \"chameleon/scrollbar\"\n];\n\nconst INFO_ICON = getIconPath({\n category: \"system\",\n name: \"information\",\n colorType: \"on-surface\"\n});\n\n@Component({\n tag: \"gx-ide-create-kb-from-server\",\n styleUrl: \"create-kb-from-server.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/create-kb-from-server\"]\n})\nexport class GxIdeCreateKbFromServer {\n #chSearchIcon = getIconPath({\n category: \"system\",\n name: \"search\",\n colorType: \"on-surface\"\n });\n\n #showMoreIcon = getIconPath({\n category: \"gemini-tools\",\n name: \"show-more-horizontal\",\n colorType: \"on-elevation\"\n });\n\n #versionsSelect: RadioGroupItemModel[] = [\n { value: \"Trunk\", caption: \"Trunk Version\" },\n { value: \"All\", caption: \"All Versions\" },\n { value: \"Select\", caption: \"Select Version\" }\n ];\n\n [key: string]: any;\n\n #_componentLocale: any;\n #kbsActionListModel: ActionListItemModel[] = [];\n #kbVersions: KBVersion[] = [];\n #shortcutsSrc = getAssetPath(\n `./gx-ide-assets/create-kb-from-server/shortcuts.json`\n );\n #selectedKbId: string;\n #kbNameAlreadyEditedByUser: boolean = false;\n\n #versionSelectedTypeEl: HTMLChRadioGroupRenderElement;\n\n @Element() el: HTMLGxIdeCreateKbFromServerElement;\n\n #localKBNameEl!: HTMLChEditElement;\n\n /**\n * State to enable/disable the select versions button\n */\n @State() enableSelectVersionsButton: boolean = false;\n\n /**\n * The current kbn name value.\n */\n @State() localKbNameInputValue: string = \"\";\n\n /**\n * State to store the loading state of the component\n */\n @State() loading = true;\n\n /**\n * State to store the filter input value to filter the list-box\n */\n @State() filterValue: string = \"\";\n\n /**\n * KBs filtered\n */\n @State() kbsFilteredActionListModel: ActionListItemModel[] = [];\n\n @State() validatableControls = new Map<string, ControlValidation>();\n\n /**\n * The version selected type\n */\n @State() versionSelectedType: VersionOption;\n\n /**\n * String value to show the number of versions selected (\"N versions selected\")\n */\n @State() versionsValueInput: string = \"\";\n\n /**\n * Set of data required when executing any of the callbacks that require a connection to the server.\n */\n @Prop() readonly connectionData: GXServerConnectionData;\n\n /**\n * Callback that is invoked when the dialog is closed\n */\n @Prop() readonly cancelCallback!: () => Promise<void>;\n\n /**\n * The host reopens the gx-ide-connect-server login modal with the previous data, and closes the current modal\n */\n @Prop() readonly changeConnectionCallback: (\n data: GXServerConnectionData\n ) => Promise<void>;\n\n /**\n * Callback that must be invoked when the 'Create KB' button is pressed. Receives the user's parameter selection to create the remote KB locally and ends the dialog.\n */\n @Prop() readonly createKBCallback!: (\n kbInfo: KnowledgeBaseInfo\n ) => Promise<FormSubmitResult>;\n\n /**\n * Callback that must be invoked when invoking the dialog\n */\n @Prop() readonly getGXserverKBsCallback!: (\n data: GXServerConnectionData\n ) => Promise<KBData[]>;\n\n /**\n * Callback invoked by pressing the ellipsis in the version selector. Receives the KB selected by the user, and displays the version selector dialog. Returns a list of versions chosen by the user.\n */\n @Prop() readonly selectKBVersionsCallback: (\n selectedKB: string\n ) => Promise<KBVersion[]>;\n\n async componentDidLoad() {\n await this.#init();\n this.loading = false;\n }\n\n async componentWillLoad() {\n this.#_componentLocale = await Locale.getComponentStrings(this.el);\n }\n\n #cancelHandler = (): void => {\n this.cancelCallback();\n };\n\n #changeConnectionHandler = async (): Promise<void> => {\n this.changeConnectionCallback({\n authenticationType: this.connectionData.authenticationType,\n serverUrl: this.connectionData.serverUrl,\n userName: this.connectionData.userName,\n userPassword: this.connectionData.userPassword\n });\n };\n\n #createHandler = async (): Promise<void> => {\n if (this.versionSelectedType !== \"Select\") {\n this.#kbVersions = [];\n }\n this.createKBCallback({\n selectedKB: this.#selectedKbId,\n versionSelected: this.versionSelectedType,\n localKBName: this.localKbNameInputValue,\n versionList: this.#kbVersions\n }).then((formSubmitResult: FormSubmitResult) => {\n this.validatableControls = validateControls(\n formSubmitResult,\n this.validatableControls\n );\n });\n };\n\n // TODO: evaluate if this should be a global helper function.\n // It is used on other dialogs as well.\n #evaluateTooltipRender = (\n controlReference: HTMLElement\n ): HTMLChTooltipElement =>\n this.validatableControls?.get(controlReference?.id)?.hasError &&\n this.validatableControls.get(controlReference.id)?.message && (\n <ch-tooltip\n class=\"tooltip\"\n actionElement={controlReference as unknown as HTMLButtonElement}\n blockAlign={config.tooltipSettings.blockAlign}\n inlineAlign={config.tooltipSettings.inlineAlign}\n delay={config.tooltipSettings.delay}\n >\n {this.validatableControls.get(controlReference.id).message}\n </ch-tooltip>\n );\n\n #filterValueChangedHandler = (\n event: ChEditCustomEvent<string> | InputEvent\n ) => {\n this.filterValue = (event.detail as string).toLowerCase();\n this.kbsFilteredActionListModel = this.#kbsActionListModel.filter(\n (item: ActionListItemActionable) =>\n item.caption.toLowerCase().includes(this.filterValue)\n );\n };\n\n #init = async () => {\n await this.getGXserverKBsCallback({\n authenticationType: this.connectionData.authenticationType,\n serverUrl: this.connectionData.serverUrl,\n userName: this.connectionData.userName,\n userPassword: this.connectionData.userPassword\n }).then(result => {\n this.#kbsActionListModel = mapKbsModelToActionListModel(result);\n this.kbsFilteredActionListModel = this.#kbsActionListModel;\n this.filterValue = \"\";\n });\n };\n\n #initializeValidatableControls = () => {\n // populate validatableControls with the controls that could have errors.\n const validatableControls: HTMLElement[] = [this.#localKBNameEl];\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 #inputLocalKbNameHandler = (\n event: ChEditCustomEvent<string> | InputEvent\n ) => {\n this.localKbNameInputValue = event.detail as string;\n this.#kbNameAlreadyEditedByUser = true;\n };\n\n #selectedVersionHandler = async () => {\n if (this.selectKBVersionsCallback) {\n await this.selectKBVersionsCallback(this.#selectedKbId).then(result => {\n if (result?.length) {\n this.#kbVersions = result.map(kbVersion => ({\n id: kbVersion.id,\n name: kbVersion.name\n }));\n\n if (result.length === 1 && this.#kbVersions[0].id === 0) {\n this.localKbNameInputValue = this.#selectedKbId;\n this.versionsValueInput =\n this.#_componentLocale.kb.versionsPlaceholder;\n } else if (result.length > 1) {\n this.localKbNameInputValue = this.#selectedKbId;\n this.versionsValueInput = `${result.length.toString()} ${\n this.#_componentLocale.kb.versionSelectedFieldValue\n }`;\n } else {\n this.localKbNameInputValue = `${this.#selectedKbId}_${\n this.#kbVersions[0].name\n }`;\n this.versionsValueInput = `${result[0].name} ${\n this.#_componentLocale.kb.oneVersionSelectedFieldValue\n }`;\n }\n }\n });\n }\n };\n\n #selectKbChangeHandler = (\n event: ChActionListRenderCustomEvent<ActionListItemModelExtended[]>\n ): void => {\n const item = event.detail[0]?.item as ActionListItemActionable;\n if (item === undefined) {\n this.enableSelectVersionsButton = false;\n this.#selectedKbId = undefined;\n return;\n }\n this.enableSelectVersionsButton = true;\n this.#selectedKbId = item.id;\n if (this.#kbNameAlreadyEditedByUser) {\n return;\n }\n this.localKbNameInputValue = item.caption;\n if (this.versionSelectedType === \"Select\") {\n this.versionsValueInput = \"\";\n this.#kbVersions = [];\n }\n };\n\n #versionsChangedHandler = (event: CustomEvent<string>) => {\n this.versionSelectedType = event.detail as VersionOption;\n };\n\n #renderFooter = () => {\n return (\n <footer class=\"footer control-footer-with-border spacing-body-inline spacing-body-block-end\">\n <div class=\"buttons-spacer\">\n <button\n // cancel button\n class=\"button-secondary\"\n onClick={this.#cancelHandler}\n part=\"button button-cancel\"\n >\n {this.#_componentLocale.footer.cancel}\n </button>\n\n <button\n // create kb button\n class=\"button-primary\"\n onClick={this.enableSelectVersionsButton && this.#createHandler}\n disabled={!this.enableSelectVersionsButton}\n part=\"button button-create-kb\"\n >\n {this.#_componentLocale.footer.createKb}\n </button>\n </div>\n </footer>\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\n <section class=\"section\">\n <header class=\"header control-header-with-border space-body spacing-body-inline spacing-body-block-start\">\n <div class=\"field field-block\">\n <label class=\"label\">\n {this.#_componentLocale.header.serverUrl}\n </label>\n <p>{this.connectionData.serverUrl}</p>\n </div>\n\n <div class=\"field field-block\">\n <label class=\"label\">{this.#_componentLocale.header.user}</label>\n <p>{this.connectionData.userName}</p>\n </div>\n\n <button\n class=\"button-tertiary button-change\"\n onClick={this.#changeConnectionHandler}\n >\n {this.#_componentLocale.header.change}\n </button>\n </header>\n <section class=\"main field-group spacing-body\">\n {this.loading ? (\n <gx-ide-loader\n loaderTitle={this.#_componentLocale.loader.title}\n description={this.#_componentLocale.loader.description}\n show\n ></gx-ide-loader>\n ) : (\n <Fragment>\n <ch-edit\n class=\"input search-kbs\"\n id=\"local-kb-name\"\n startImgSrc={this.#chSearchIcon}\n onInput={this.#filterValueChangedHandler}\n placeholder={this.#_componentLocale.kb.searchKbsPlaceholder}\n ></ch-edit>\n {this.#kbsActionListModel.length === 0 ||\n this.kbsFilteredActionListModel.length === 0 ? (\n <div class=\"list-box\">\n <gx-ide-empty-state\n stateIconSrc={INFO_ICON}\n stateTitle={this.#_componentLocale.emptyKBsText}\n isAnimated={true}\n ></gx-ide-empty-state>\n </div>\n ) : (\n <ch-action-list-render\n selection=\"single\"\n class=\"list-box\"\n onSelectedItemsChange={this.#selectKbChangeHandler}\n model={this.kbsFilteredActionListModel}\n ></ch-action-list-render>\n )}\n <div class=\"versions-container field-group\">\n <ch-radio-group-render\n class=\"radio-group\"\n model={this.#versionsSelect}\n onChange={this.#versionsChangedHandler}\n value={this.#versionsSelect[0].value}\n ref={(el: HTMLChRadioGroupRenderElement) => {\n this.#versionSelectedTypeEl =\n el as HTMLChRadioGroupRenderElement;\n if (this.#versionSelectedTypeEl) {\n this.versionSelectedType = this.#versionSelectedTypeEl\n .value as VersionOption;\n }\n }}\n ></ch-radio-group-render>\n\n {this.versionSelectedType === \"Select\" && (\n <div class=\"versions-container__item field-group\">\n <div class=\"field field-block\">\n <label class=\"label\" htmlFor=\"control-id-1\">\n {this.#_componentLocale.kb.versionsLabel}\n </label>\n <div class=\"versions-container__input\">\n <ch-edit\n class=\"input\"\n readonly\n placeholder={\n this.enableSelectVersionsButton\n ? this.#_componentLocale.kb.versionsPlaceholder\n : this.#_componentLocale.kb\n .versionsPlaceholderDisabled\n }\n value={this.versionsValueInput}\n ></ch-edit>\n <button\n class=\"button-tertiary button-icon-only\"\n onClick={this.#selectedVersionHandler}\n disabled={!this.enableSelectVersionsButton}\n >\n <ch-image\n src={this.#showMoreIcon}\n class=\"icon-sm\"\n ></ch-image>\n </button>\n </div>\n </div>\n </div>\n )}\n </div>\n\n <div class=\"field field-block\">\n <label class=\"label\" htmlFor=\"localKbName\">\n {this.#_componentLocale.kb.localKbNameLabel}\n </label>\n <ch-edit\n // local kb name\n class=\"input\"\n id=\"local-kb-name\"\n value={this.localKbNameInputValue}\n onInput={this.#inputLocalKbNameHandler}\n placeholder={\n this.#_componentLocale.kb.localKbNamePlaceholder\n }\n ref={(el: HTMLChEditElement) => {\n this.#localKBNameEl = el as HTMLChEditElement;\n if (this.#localKBNameEl) {\n this.#initializeValidatableControls();\n }\n }}\n ></ch-edit>\n {this.#evaluateTooltipRender(this.#localKBNameEl)}\n </div>\n </Fragment>\n )}\n </section>\n\n {this.#renderFooter()}\n </section>\n </Host>\n );\n }\n}\n\nexport type KBData = {\n id: string;\n name: string;\n};\n\nexport type KBVersion = {\n id: number;\n name: string;\n type?: VersionType;\n};\n\nexport type ConnectionResultData = {\n formResult: FormSubmitResult;\n kbs: KBData[];\n};\n\nexport type KnowledgeBaseInfo = {\n selectedKB: string;\n versionSelected: VersionOption;\n localKBName: string;\n versionList: KBVersion[];\n};\n\nexport type VersionOption = \"Trunk\" | \"All\" | \"Select\";\n\nexport type VersionType = \"Branch\" | \"Frozen\";\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"names":["serverSelectorCss","CSS_BUNDLES","INFO_ICON","getIconPath","category","name","colorType","LOCK_ICON","LANGUAGE_ICON","GxIdeServerSelector","_GxIdeServerSelector_chSearchIcon","set","this","_GxIdeServerSelector_versionsSelect","value","caption","_GxIdeServerSelector__componentLocale","_GxIdeServerSelector_chGridRecentlyUsedServersEl","_GxIdeServerSelector_chGridConnectedServersEl","_GxIdeServerSelector_previousSelectedRowId","_GxIdeServerSelector_selectedRowId","_GxIdeServerSelector_serverUrlEL","_GxIdeServerSelector_cancelHandler","cancelCallback","_GxIdeServerSelector_confirmHandler","async","selectedConnectionType","selectServerCallback","uri","selectedServerUri","selectedServerName","isValidUrl","__classPrivateFieldGet","_GxIdeServerSelector_validateUrl","call","serverUrlInputValue","serverNameInputValue","_GxIdeServerSelector_filterValueChangedHandler","event","filterValue","detail","toLowerCase","filteredConnectedServersData","connectedServersData","filter","item","serverName","includes","_GxIdeServerSelector_inputHandler","field","enableConfirmButton","_GxIdeServerSelector_enableConfirmButton","url","serverUrl","URL","protocolValid","protocol","startsWith","ex","length","_GxIdeServerSelector_selectConnectedServersHandler","_GxIdeServerSelector_handleServerSelection","_GxIdeServerSelector_selectRecentlyUsedServersHandler","recentlyUsedServersData","serversData","otherGridEl","isFirstSelection","__classPrivateFieldSet","rowId","undefined","selectedServer","find","server","id","userName","gxServerUsername","selectRow","_GxIdeServerSelector_connectionTypeChangedHandler","_GxIdeServerSelector_renderTabularGridColumnSet","hideColumnName","h","class","columnId","columnName","settingable","columnNameHidden","size","config","tabularGrid","colSize","maxContent","resizable","sortable","onColumnSortChanged","_GxIdeServerSelector_handleColumnSortChanged","auto","_GxIdeServerSelector_renderTooltip","text","actionElement","blockAlign","inlineAlign","tooltipSettings","delay","_GxIdeServerSelector_renderTabularGridCommonCells","_GxIdeServerSelector_renderIcon","accessLevel","isConnected","_GxIdeServerSelector_renderRecentlyUsedServersGrid","rowSelectionMode","ref","el","allowColumnReorder","onRowClicked","map","rowid","stateIconSrc","stateTitle","emptyConnectedServers","isAnimated","_GxIdeServerSelector_renderConnectedServersGrid","e","sortDirection","aux","sort","a","b","icon","src","_GxIdeServerSelector_renderFooter","isSelectionMode","onClick","footer","cancel","disabled","confirm","Map","componentWillLoad","Locale","getComponentStrings","_a","_b","render","connectionTypeClass","recentlyUsedEmptyClass","Host","model","header","title","onChange","startImgSrc","onInput","placeholder","placeholders","searchServers","accessibleName","type","htmlFor","recentlyUsed","allServers","labels","input","maxLength","errors","serverUrlInvalid"],"sources":["src/components/team-dev/server-selector/server-selector.scss?tag=gx-ide-server-selector&encapsulation=shadow","src/components/team-dev/server-selector/server-selector.tsx"],"sourcesContent":["@import \"../../../../node_modules/@genexus/mercury/dist/assets/scss/helpers.scss\";\n\n:host {\n display: grid;\n block-size: 100%;\n grid-template-rows: max-content max-content 1fr max-content;\n row-gap: var(--mer-spacing--md);\n overflow: auto;\n}\n\n:host(.new-connection) {\n grid-template-rows: max-content 1fr;\n}\n\n:host(.recently-used-empty) {\n grid-template-rows: max-content 1fr;\n}\n\n.section {\n display: contents;\n}\n\n// General\n\n.tabular-grid {\n border-radius: var(--mer-border__radius--sm);\n overflow: hidden;\n border-inline: 1px solid var(--grid-cell__border-color);\n --grid-cell__box-shadow-inline-block:\n inset 0 0px var(--grid-cell__border-color),\n inset 0 -1px var(--grid-cell__border-color);\n overflow: auto;\n}\n\n.tabular-grid-rowset-empty {\n border-block-end: 1px solid var(--grid-cell__border-color);\n overflow: hidden;\n}\n\n@include tabular-grid-cell-layout(\n $tabular-grid-selector: \".tabular-grid\",\n $tabular-grid-cell-apply-ellipsis: true,\n $tabular-grid-affected-columns-nth-list: (\n 2,\n 3,\n 4\n )\n);\n\n.text-neutral-gray-400,\n.tabular-grid-cell.text-neutral-gray-400 {\n // WA: colors for text should be defined in Mercury\n color: var(--mer-color__neutral-gray--400);\n}\n// Header\n\n.search-server {\n inline-size: 50%;\n}\n\n// Recently Used\n\n.tabular-grid-recently-used .tabular-grid-column::part(bar) {\n --grid-cell__padding-block: 0;\n --grid-cell__padding-inline: 0;\n}\n\n.tabular-grid.tabular-grid-recently-used {\n border-block-end: 1px solid var(--grid-cell__border-color);\n max-block-size: 100px;\n}\n\n// All Servers\n\n.tabular-grid-all-servers {\n overflow: auto;\n}\n\n.field-block-all-servers {\n overflow: auto;\n}\n\n.tabular-grid-all-servers {\n border-block: 1px solid var(--grid-cell__border-color);\n\n .tabular-grid-column:first-child::part(bar-name-icon) {\n background-image: var(\n --icon__system_order-alphabetically_on-elevation--enabled\n );\n block-size: var(--mer-icon__box--md);\n inline-size: var(--mer-icon__box--md);\n background-size: var(--mer-icon__size--md);\n }\n .tabular-grid-rowset-empty {\n border-block-end: none;\n overflow: hidden;\n }\n}\n\n.tabular-grid-all-servers .tabular-grid-column:first-child::part(bar) {\n --grid-common__gap: 0;\n}\n","// Stencil\nimport { Component, Element, h, Host, Prop, State } from \"@stencil/core\";\n\n// Other Libraries\nimport { getIconPath, MercuryBundles } from \"@genexus/mercury\";\n\n// Custom Imports\nimport {\n ChEditCustomEvent,\n TabularGridRowClickedEvent\n} from \"@genexus/chameleon-controls-library\";\nimport { RadioGroupItemModel } from \"@genexus/chameleon-controls-library/dist/types/components/radio-group/types\";\nimport { JSX } from \"@stencil/core/internal\";\nimport { config } from \"../../../common/config\";\nimport {\n ControlValidation\n // validateControls\n} from \"../../../common/form-validation\";\nimport { Locale } from \"../../../common/locale\";\nimport { FormSubmitResult } from \"../../../common/types\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"utils/form--full\",\n \"utils/layout\",\n \"utils/typography\",\n \"utils/spacing\",\n \"components/tooltip\",\n \"chameleon/scrollbar\",\n \"components/tabular-grid\"\n];\n\nconst INFO_ICON = getIconPath({\n category: \"system\",\n name: \"information\",\n colorType: \"on-surface\"\n});\n\nconst LOCK_ICON = getIconPath({\n category: \"system\",\n name: \"lock\",\n colorType: \"on-surface\"\n});\n\nconst LANGUAGE_ICON = getIconPath({\n category: \"system\",\n name: \"language\",\n colorType: \"on-surface\"\n});\n\n@Component({\n tag: \"gx-ide-server-selector\",\n styleUrl: \"server-selector.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/server-selector\"]\n})\nexport class GxIdeServerSelector {\n #chSearchIcon = getIconPath({\n category: \"system\",\n name: \"search\",\n colorType: \"on-surface\"\n });\n\n #versionsSelect: RadioGroupItemModel[] = [\n { value: \"select\", caption: \"Select a server from the list below\" },\n { value: \"new\", caption: \"Enter a server URL manually\" }\n ];\n\n [key: string]: any;\n\n #_componentLocale: any;\n\n #chGridRecentlyUsedServersEl: HTMLChTabularGridElement;\n #chGridConnectedServersEl: HTMLChTabularGridElement;\n #previousSelectedRowId: string | undefined;\n #selectedRowId: string | undefined;\n #serverUrlEL: HTMLChEditElement;\n\n @Element() el: HTMLGxIdeServerSelectorElement;\n\n /**\n * State to enable/disable confirm button.\n */\n @State() enableConfirmButton: boolean = false;\n\n /**\n * State to track if this is the first selection made by the user.\n */\n @State() isFirstSelection: boolean = true;\n\n /**\n * State to track if the server URL is valid.\n */\n @State() isValidUrl: boolean = true;\n\n /**\n * The current server URL input value.\n */\n @State() serverUrlInputValue: string = \"\";\n\n /**\n * The current server URL input value.\n */\n @State() serverNameInputValue: string = \"\";\n\n /**\n * The selected server URI.\n */\n @State() selectedServerUri: string | undefined;\n\n /**\n * The selected server name.\n */\n @State() selectedServerName: string | undefined = \"None\";\n\n /**\n * The user name of the selected server.\n */\n @State() userName: string;\n\n /**\n * State to store the filter input value to filter the list-box\n */\n @State() filterValue: string = \"\";\n\n /**\n * Servers filtered\n */\n @State() filteredConnectedServersData: ConnectedGXServerData[] = [];\n\n @State() validatableControls = new Map<string, ControlValidation>();\n\n /**\n * The selected connection type\n */\n @State() selectedConnectionType: ConnectionOption = \"select\";\n\n /**\n * The list of connected GX servers.\n */\n @Prop({ mutable: true }) connectedServersData: ConnectedGXServerData[] = [];\n\n /**\n * The list of recently used servers.\n */\n @Prop() readonly recentlyUsedServersData: ConnectedGXServerData[] = [];\n\n /**\n * Callback that is invoked when the dialog is closed\n */\n @Prop() readonly cancelCallback!: () => Promise<void>;\n\n /**\n * Callback that must be invoked when the 'Confirm' button is pressed and the Select Server option is checked.\n */\n @Prop() readonly selectServerCallback!: (\n authenticationSessionOrigin: AuthenticationSessionOrigin\n ) => Promise<void>;\n\n async componentWillLoad() {\n this.#_componentLocale = await Locale.getComponentStrings(this.el);\n this.selectedServerUri = this.connectedServersData[0]?.serverUrl;\n this.userName = this.connectedServersData[0]?.gxServerUsername;\n\n this.filteredConnectedServersData = this.connectedServersData;\n }\n\n #cancelHandler = (): void => {\n this.cancelCallback();\n };\n\n #confirmHandler = async (): Promise<void | ServerType> => {\n if (this.selectedConnectionType === \"select\") {\n await this.selectServerCallback({\n uri: this.selectedServerUri,\n name: this.selectedServerName\n });\n } else if (this.selectedConnectionType === \"new\") {\n this.isValidUrl = this.#validateUrl(this.serverUrlInputValue);\n if (this.isValidUrl) {\n await this.selectServerCallback({\n uri: this.serverUrlInputValue,\n name: this.serverNameInputValue\n });\n }\n }\n };\n\n #filterValueChangedHandler = (\n event: ChEditCustomEvent<string> | InputEvent\n ) => {\n this.filterValue = (event.detail as string).toLowerCase();\n this.filteredConnectedServersData = this.connectedServersData.filter(item =>\n item.serverName.toLowerCase().includes(this.filterValue)\n );\n };\n\n #inputHandler = (\n event: ChEditCustomEvent<string> | InputEvent,\n field: \"serverUrlInputValue\" | \"serverNameInputValue\"\n ) => {\n this.enableConfirmButton = false;\n this[field] = event.detail as string;\n this.#enableConfirmButton();\n };\n\n #validateUrl = (url: string): boolean => {\n try {\n const serverUrl = new URL(url);\n const protocolValid =\n (serverUrl.protocol === \"http:\" || serverUrl.protocol === \"https:\") &&\n url.startsWith(`${serverUrl.protocol}//`);\n return protocolValid;\n } catch (ex) {\n return false;\n }\n };\n\n #enableConfirmButton = () => {\n if (\n this.serverUrlInputValue &&\n this.serverUrlInputValue.length > 0 &&\n this.serverNameInputValue &&\n this.serverNameInputValue.length > 0\n ) {\n this.enableConfirmButton = true;\n } else {\n this.enableConfirmButton = false;\n }\n };\n\n #selectConnectedServersHandler = (\n event: CustomEvent<TabularGridRowClickedEvent>\n ) =>\n this.#handleServerSelection(\n event,\n this.connectedServersData,\n this.#chGridRecentlyUsedServersEl\n );\n\n #selectRecentlyUsedServersHandler = (\n event: CustomEvent<TabularGridRowClickedEvent>\n ) =>\n this.#handleServerSelection(\n event,\n this.recentlyUsedServersData,\n this.#chGridConnectedServersEl\n );\n\n #handleServerSelection = async (\n event: CustomEvent<TabularGridRowClickedEvent>,\n serversData: ConnectedGXServerData[],\n otherGridEl: HTMLChTabularGridElement\n ): Promise<void> => {\n if (!this.isFirstSelection) {\n this.#previousSelectedRowId = this.#selectedRowId;\n }\n this.#selectedRowId = event.detail.rowId;\n if (this.#selectedRowId === undefined) {\n this.enableConfirmButton = false;\n this.selectedServerUri = undefined;\n this.selectedServerName = undefined;\n return;\n } else {\n const selectedServer = serversData.find(\n server => server.id === this.#selectedRowId\n );\n this.enableConfirmButton = true;\n this.selectedServerName = selectedServer?.serverName;\n this.selectedServerUri = selectedServer?.serverUrl;\n this.userName = selectedServer?.gxServerUsername || \"\";\n this.isFirstSelection = false;\n await otherGridEl?.selectRow(this.#previousSelectedRowId, false);\n }\n };\n\n #connectionTypeChangedHandler = (event: CustomEvent<string>) => {\n this.selectedConnectionType = event.detail as ConnectionOption;\n if (this.selectedConnectionType === \"new\") {\n this.enableConfirmButton = false;\n this.serverUrlInputValue = \"\";\n }\n this.selectedServerName = \"None\";\n };\n\n #renderTabularGridColumnSet = (\n hideColumnName: boolean = false\n ): HTMLChTabularGridColumnsetElement => {\n return (\n <ch-tabular-grid-columnset class=\"tabular-grid-column-set\">\n <ch-tabular-grid-column\n columnId=\"icon\"\n class=\"tabular-grid-column\"\n columnName=\"Icon\"\n settingable={false}\n columnNameHidden={true}\n size={config.tabularGrid.colSize.maxContent}\n resizable={false}\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n columnId=\"serverName\"\n class=\"tabular-grid-column\"\n sortable\n columnName=\"Server Name\"\n settingable={false}\n columnNameHidden={hideColumnName}\n onColumnSortChanged={this.#handleColumnSortChanged}\n size={config.tabularGrid.colSize.serverName}\n resizable={false}\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n columnId=\"serverUrl\"\n class=\"tabular-grid-column\"\n sortable\n columnName=\"Server Url\"\n settingable={false}\n columnNameHidden={hideColumnName}\n onColumnSortChanged={this.#handleColumnSortChanged}\n size={config.tabularGrid.colSize.auto}\n resizable={false}\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n columnId=\"userName\"\n class=\"tabular-grid-column\"\n sortable\n columnName=\"Username\"\n settingable={false}\n columnNameHidden={hideColumnName}\n onColumnSortChanged={this.#handleColumnSortChanged}\n size={config.tabularGrid.colSize.userName}\n resizable={false}\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n columnId=\"status\"\n class=\"tabular-grid-column\"\n sortable\n columnName=\"Status\"\n settingable={false}\n columnNameHidden={hideColumnName}\n onColumnSortChanged={this.#handleColumnSortChanged}\n size={config.tabularGrid.colSize.maxContent}\n resizable={false}\n ></ch-tabular-grid-column>\n </ch-tabular-grid-columnset>\n );\n };\n\n #renderTooltip = (text: string): JSX.Element | null => {\n return text !== \"\" ? (\n <ch-tooltip\n class=\"tooltip\"\n actionElement={null}\n blockAlign=\"outside-end\"\n inlineAlign={config.tooltipSettings.inlineAlign}\n delay={config.tooltipSettings.delay}\n >\n {text}\n </ch-tooltip>\n ) : null;\n };\n\n #renderTabularGridCommonCells = (server: ConnectedGXServerData) => {\n return [\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {this.#renderIcon(server.accessLevel)}\n </ch-tabular-grid-cell>,\n <ch-tabular-grid-cell class=\"tabular-grid-cell tabular-grid-cell-server-name\">\n {server.serverName}\n </ch-tabular-grid-cell>,\n <ch-tabular-grid-cell class=\"tabular-grid-cell tabular-grid-cell-server-url\">\n {server.serverUrl}\n {this.#renderTooltip(server.serverUrl)}\n </ch-tabular-grid-cell>,\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {server.gxServerUsername}\n </ch-tabular-grid-cell>,\n <ch-tabular-grid-cell class=\"tabular-grid-cell text-neutral-gray-400 body-italic-s\">\n {server.isConnected && \"Connected\"}\n </ch-tabular-grid-cell>\n ];\n };\n\n #renderRecentlyUsedServersGrid = (hideColumnName: boolean): Element => {\n return (\n <ch-tabular-grid\n class={\"tabular-grid-recently-used tabular-grid\"}\n rowSelectionMode=\"single\"\n ref={(el: HTMLChTabularGridElement) =>\n (this.#chGridRecentlyUsedServersEl = el)\n }\n allowColumnReorder={false}\n onRowClicked={this.#selectRecentlyUsedServersHandler}\n id=\"recently-used-servers\"\n >\n {this.#renderTabularGridColumnSet(hideColumnName)}\n {this.recentlyUsedServersData.length > 0 ? (\n <ch-tabular-grid-rowset class=\"tabular-grid-rowset\">\n {this.recentlyUsedServersData.map(\n (server: ConnectedGXServerData) => (\n <ch-tabular-grid-row rowid={server.id} class=\"tabular-grid-row\">\n {this.#renderTabularGridCommonCells(server)}\n </ch-tabular-grid-row>\n )\n )}\n </ch-tabular-grid-rowset>\n ) : (\n <ch-tabular-grid-rowset class=\"tabular-grid-rowset\">\n <ch-tabular-grid-rowset-empty>\n <gx-ide-empty-state\n stateIconSrc={INFO_ICON}\n stateTitle={this.#_componentLocale.emptyConnectedServers}\n isAnimated={true}\n ></gx-ide-empty-state>\n </ch-tabular-grid-rowset-empty>\n </ch-tabular-grid-rowset>\n )}\n </ch-tabular-grid>\n );\n };\n\n #renderConnectedServersGrid = (): Element => {\n return (\n <ch-tabular-grid\n class={\"tabular-grid tabular-grid-all-servers\"}\n rowSelectionMode=\"single\"\n ref={(el: HTMLChTabularGridElement) =>\n (this.#chGridConnectedServersEl = el)\n }\n allowColumnReorder={false}\n onRowClicked={this.#selectConnectedServersHandler}\n id=\"all-servers\"\n >\n {this.#renderTabularGridColumnSet()}\n {this.filteredConnectedServersData.length > 0 ? (\n <ch-tabular-grid-rowset class=\"tabular-grid-rowset\">\n {this.filteredConnectedServersData.map(\n (server: ConnectedGXServerData) => (\n <ch-tabular-grid-row rowid={server.id} class=\"tabular-grid-row\">\n {this.#renderTabularGridCommonCells(server)}\n </ch-tabular-grid-row>\n )\n )}\n </ch-tabular-grid-rowset>\n ) : (\n <ch-tabular-grid-rowset class=\"tabular-grid-rowset\">\n <ch-tabular-grid-rowset-empty class=\"tabular-grid-rowset-empty\">\n <gx-ide-empty-state\n stateIconSrc={INFO_ICON}\n stateTitle={this.#_componentLocale.emptyConnectedServers}\n isAnimated={true}\n ></gx-ide-empty-state>\n </ch-tabular-grid-rowset-empty>\n </ch-tabular-grid-rowset>\n )}\n </ch-tabular-grid>\n );\n };\n\n #handleColumnSortChanged = (e: CustomEvent) => {\n const { columnId, sortDirection } = e.detail;\n\n const aux = this.connectedServersData;\n aux.sort((a: any, b: any) => {\n if (a[columnId] < b[columnId]) {\n return sortDirection === \"asc\" ? -1 : 1;\n }\n if (a[columnId] > b[columnId]) {\n return sortDirection === \"asc\" ? 1 : -1;\n }\n return 0;\n });\n\n this.connectedServersData = [...aux];\n };\n\n #renderIcon = (accessLevel: string): JSX.Element => {\n const icon = accessLevel === \"private\" ? LOCK_ICON : LANGUAGE_ICON;\n return <ch-image class=\"icon-md\" src={icon}></ch-image>;\n };\n\n #renderFooter = () => {\n const isSelectionMode = this.selectedConnectionType === \"select\";\n return (\n <footer\n class={{\n \"control-footer-with-border\": true,\n \"control-footer-space-between\":\n this.selectedConnectionType === \"select\",\n \"space-between\": isSelectionMode,\n \"spacing-body-inline\": true,\n \"spacing-body-block\": true\n }}\n >\n {isSelectionMode && (\n <p class=\"body-italic-m\">Selected: {this.selectedServerName}</p>\n )}\n <div class=\"buttons-spacer\">\n <button\n // cancel button\n class=\"button-secondary\"\n onClick={this.#cancelHandler}\n >\n {this.#_componentLocale.footer.cancel}\n </button>\n\n <button\n // confirm button\n class=\"button-primary\"\n onClick={this.enableConfirmButton && this.#confirmHandler}\n disabled={!this.enableConfirmButton}\n >\n {this.#_componentLocale.footer.confirm}\n </button>\n </div>\n </footer>\n );\n };\n\n render(): void {\n const connectionTypeClass =\n this.selectedConnectionType === \"new\" && \"new-connection\";\n const recentlyUsedEmptyClass =\n this.recentlyUsedServersData.length === 0 && \"recently-used-empty\";\n return (\n <Host\n class={`widget elevation-1 ${connectionTypeClass} ${recentlyUsedEmptyClass}`}\n >\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <main class=\"section\">\n <header class=\"header spacing-body-block-start spacing-body-inline\">\n <div class=\"field-group\">\n <label class=\"body-regular-m text-neutral-gray-400\">\n {this.#_componentLocale.header.title}\n </label>\n <ch-radio-group-render\n class=\"radio-group\"\n model={this.#versionsSelect}\n onChange={this.#connectionTypeChangedHandler}\n value={this.#versionsSelect[0].value}\n ></ch-radio-group-render>\n\n {this.selectedConnectionType === \"select\" && (\n <ch-edit\n class=\"input search-server\"\n id=\"server-name-search\"\n startImgSrc={this.#chSearchIcon}\n onInput={this.#filterValueChangedHandler}\n placeholder={\n this.#_componentLocale.placeholders.searchServers\n }\n accessibleName=\"search server\"\n type=\"search\"\n ></ch-edit>\n )}\n </div>\n </header>\n {this.selectedConnectionType === \"select\" && [\n this.recentlyUsedServersData.length > 0 && (\n <div class=\"field field-block spacing-body-inline\">\n <label class=\"label\" htmlFor=\"recently-used-servers\">\n {this.#_componentLocale.recentlyUsed.title}\n </label>\n {this.#renderRecentlyUsedServersGrid(true)}\n </div>\n ),\n <div class=\"field field-block field-block-all-servers spacing-body-inline\">\n <label class=\"label\" htmlFor=\"all-servers\">\n {this.#_componentLocale.allServers.title}\n </label>\n {this.#renderConnectedServersGrid()}\n </div>\n ]}\n\n {this.selectedConnectionType === \"new\" && (\n <section class=\"spacing-body-inline\">\n <div class=\"layout layout--cols-2\">\n <div class=\"field field-block layout__panel\">\n <label class=\"label\" htmlFor=\"server-url\">\n {this.#_componentLocale.labels.serverUrl}\n </label>\n <ch-edit\n // server url\n class={{ \"input\": true, \"input-error\": !this.isValidUrl }}\n id=\"server-url\"\n value={this.serverUrlInputValue}\n onInput={event =>\n this.#inputHandler(event, \"serverUrlInputValue\")\n }\n placeholder={this.#_componentLocale.placeholders.serverUrl}\n ref={el => (this.#serverUrlEL = el as HTMLChEditElement)}\n ></ch-edit>\n </div>\n <div class=\"field field-block layout__panel\">\n <label class=\"label\" htmlFor=\"server-name\">\n {this.#_componentLocale.labels.serverName}\n </label>\n <ch-edit\n // server friendly name\n class=\"input\"\n id=\"server-name\"\n value={this.serverNameInputValue}\n onInput={event =>\n this.#inputHandler(event, \"serverNameInputValue\")\n }\n placeholder={this.#_componentLocale.placeholders.serverName}\n maxLength={18}\n ></ch-edit>\n </div>\n {!this.isValidUrl && (\n <ch-tooltip\n class=\"tooltip\"\n actionElement={\n this.#serverUrlEL as unknown as HTMLButtonElement\n }\n blockAlign=\"outside-end\"\n inlineAlign={config.tooltipSettings.inlineAlign}\n delay={config.tooltipSettings.delay}\n >\n {this.#_componentLocale.errors.serverUrlInvalid}\n </ch-tooltip>\n )}\n </div>\n </section>\n )}\n\n {this.#renderFooter()}\n </main>\n </Host>\n );\n }\n}\n\nexport type ConnectionResultData = {\n formResult: FormSubmitResult;\n};\n\nexport type ConnectionOption = \"select\" | \"new\";\n\nexport type ServerType = \"legacy\" | \"next\";\n\nexport type ServerAccessLevel = \"public\" | \"private\";\n\nexport type AuthenticationSessionOrigin = {\n uri: string;\n name: string;\n};\n\nexport type ConnectedGXServerData = {\n id: string;\n serverUrl: string;\n accessLevel: ServerAccessLevel;\n masterSessionUsername: string;\n serverName?: string;\n gxServerUsername: string;\n isConnected: boolean;\n};\n\nexport type NewServerConnectionData = {\n serverUrl: string;\n serverName: string;\n};\n"],"mappings":";;;;;;;;AAAA,MAAMA,IAAoB;;;;;;;;;;;;;;;;;ACqB1B,MAAMC,IAA8B,EAClC,qBACA,oBACA,gBACA,oBACA,iBACA,sBACA,uBACA;;AAGF,MAAMC,IAAYC,EAAY;EAC5BC,UAAU;EACVC,MAAM;EACNC,WAAW;;;AAGb,MAAMC,IAAYJ,EAAY;EAC5BC,UAAU;EACVC,MAAM;EACNC,WAAW;;;AAGb,MAAME,IAAgBL,EAAY;EAChCC,UAAU;EACVC,MAAM;EACNC,WAAW;;;MASAG,IAAmB;;;IAC9BC,EAAAC,IAAAC,MAAgBT,EAAY;MAC1BC,UAAU;MACVC,MAAM;MACNC,WAAW;;IAGbO,EAAAF,IAAAC,MAAyC,EACvC;MAAEE,OAAO;MAAUC,SAAS;OAC5B;MAAED,OAAO;MAAOC,SAAS;;IAK3BC,EAAAL,IAAAC,WAAA;IAEAK,EAAAN,IAAAC,WAAA;IACAM,EAAAP,IAAAC,WAAA;IACAO,EAAAR,IAAAC,WAAA;IACAQ,EAAAT,IAAAC,WAAA;IACAS,EAAAV,IAAAC,WAAA;IA2FAU,EAAAX,IAAAC,OAAiB;MACfA,KAAKW;AAAgB;IAGvBC,EAAAb,IAAAC,OAAkBa;MAChB,IAAIb,KAAKc,2BAA2B,UAAU;cACtCd,KAAKe,qBAAqB;UAC9BC,KAAKhB,KAAKiB;UACVxB,MAAMO,KAAKkB;;aAER,IAAIlB,KAAKc,2BAA2B,OAAO;QAChDd,KAAKmB,aAAaC,EAAApB,MAAIqB,GAAA,KAAaC,KAAjBtB,MAAkBA,KAAKuB;QACzC,IAAIvB,KAAKmB,YAAY;gBACbnB,KAAKe,qBAAqB;YAC9BC,KAAKhB,KAAKuB;YACV9B,MAAMO,KAAKwB;;;;;IAMnBC,EAAA1B,IAAAC,OACE0B;MAEA1B,KAAK2B,cAAeD,EAAME,OAAkBC;MAC5C7B,KAAK8B,+BAA+B9B,KAAK+B,qBAAqBC,QAAOC,KACnEA,EAAKC,WAAWL,cAAcM,SAASnC,KAAK2B;AAC7C;IAGHS,EAAArC,IAAAC,OAAgB,CACd0B,GACAW;MAEArC,KAAKsC,sBAAsB;MAC3BtC,KAAKqC,KAASX,EAAME;MACpBR,EAAApB,MAAIuC,GAAA,KAAqBjB,KAAzBtB;AAA2B;IAG7BqB,EAAAtB,IAAAC,OAAgBwC;MACd;QACE,MAAMC,IAAY,IAAIC,IAAIF;QAC1B,MAAMG,KACHF,EAAUG,aAAa,WAAWH,EAAUG,aAAa,aAC1DJ,EAAIK,WAAW,GAAGJ,EAAUG;QAC9B,OAAOD;QACP,OAAOG;QACP,OAAO;;;IAIXP,EAAAxC,IAAAC,OAAuB;MACrB,IACEA,KAAKuB,uBACLvB,KAAKuB,oBAAoBwB,SAAS,KAClC/C,KAAKwB,wBACLxB,KAAKwB,qBAAqBuB,SAAS,GACnC;QACA/C,KAAKsC,sBAAsB;aACtB;QACLtC,KAAKsC,sBAAsB;;;IAI/BU,EAAAjD,IAAAC,OACE0B,KAEAN,EAAApB,MAAIiD,GAAA,KAAuB3B,KAA3BtB,MACE0B,GACA1B,KAAK+B,sBACLX,EAAApB,MAAIK,GAAA;IAGR6C,EAAAnD,IAAAC,OACE0B,KAEAN,EAAApB,MAAIiD,GAAA,KAAuB3B,KAA3BtB,MACE0B,GACA1B,KAAKmD,yBACL/B,EAAApB,MAAIM,GAAA;IAGR2C,EAAAlD,IAAAC,OAAyBa,OACvBa,GACA0B,GACAC;MAEA,KAAKrD,KAAKsD,kBAAkB;QAC1BC,EAAAvD,MAAIO,GAA0Ba,EAAApB,MAAIQ,GAAA,MAAe;;MAEnD+C,EAAAvD,MAAIQ,GAAkBkB,EAAME,OAAO4B,OAAK;MACxC,IAAIpC,EAAApB,MAAIQ,GAAA,SAAoBiD,WAAW;QACrCzD,KAAKsC,sBAAsB;QAC3BtC,KAAKiB,oBAAoBwC;QACzBzD,KAAKkB,qBAAqBuC;QAC1B;aACK;QACL,MAAMC,IAAiBN,EAAYO,MACjCC,KAAUA,EAAOC,OAAOzC,EAAApB,MAAIQ,GAAA;QAE9BR,KAAKsC,sBAAsB;QAC3BtC,KAAKkB,qBAAqBwC,MAAc,QAAdA,WAAc,aAAdA,EAAgBxB;QAC1ClC,KAAKiB,oBAAoByC,MAAc,QAAdA,WAAc,aAAdA,EAAgBjB;QACzCzC,KAAK8D,YAAWJ,MAAc,QAAdA,WAAc,aAAdA,EAAgBK,qBAAoB;QACpD/D,KAAKsD,mBAAmB;eAClBD,MAAW,QAAXA,WAAW,aAAXA,EAAaW,UAAU5C,EAAApB,MAAIO,GAAA,MAAyB;;;IAI9D0D,EAAAlE,IAAAC,OAAiC0B;MAC/B1B,KAAKc,yBAAyBY,EAAME;MACpC,IAAI5B,KAAKc,2BAA2B,OAAO;QACzCd,KAAKsC,sBAAsB;QAC3BtC,KAAKuB,sBAAsB;;MAE7BvB,KAAKkB,qBAAqB;AAAM;IAGlCgD,EAAAnE,IAAAC,OAA8B,CAC5BmE,IAA0B,UAGxBC,EAAA;MAA2BC,OAAM;OAC/BD,EAAA;MACEE,UAAS;MACTD,OAAM;MACNE,YAAW;MACXC,aAAa;MACbC,kBAAkB;MAClBC,MAAMC,EAAOC,YAAYC,QAAQC;MACjCC,WAAW;QAEbX,EAAA;MACEE,UAAS;MACTD,OAAM;MACNW,UAAQ;MACRT,YAAW;MACXC,aAAa;MACbC,kBAAkBN;MAClBc,qBAAqB7D,EAAApB,MAAIkF,GAAA;MACzBR,MAAMC,EAAOC,YAAYC,QAAQ3C;MACjC6C,WAAW;QAEbX,EAAA;MACEE,UAAS;MACTD,OAAM;MACNW,UAAQ;MACRT,YAAW;MACXC,aAAa;MACbC,kBAAkBN;MAClBc,qBAAqB7D,EAAApB,MAAIkF,GAAA;MACzBR,MAAMC,EAAOC,YAAYC,QAAQM;MACjCJ,WAAW;QAEbX,EAAA;MACEE,UAAS;MACTD,OAAM;MACNW,UAAQ;MACRT,YAAW;MACXC,aAAa;MACbC,kBAAkBN;MAClBc,qBAAqB7D,EAAApB,MAAIkF,GAAA;MACzBR,MAAMC,EAAOC,YAAYC,QAAQf;MACjCiB,WAAW;QAEbX,EAAA;MACEE,UAAS;MACTD,OAAM;MACNW,UAAQ;MACRT,YAAW;MACXC,aAAa;MACbC,kBAAkBN;MAClBc,qBAAqB7D,EAAApB,MAAIkF,GAAA;MACzBR,MAAMC,EAAOC,YAAYC,QAAQC;MACjCC,WAAW;;IAMnBK,EAAArF,IAAAC,OAAkBqF,KACTA,MAAS,KACdjB,EAAA;MACEC,OAAM;MACNiB,eAAe;MACfC,YAAW;MACXC,aAAab,EAAOc,gBAAgBD;MACpCE,OAAOf,EAAOc,gBAAgBC;OAE7BL,KAED;IAGNM,EAAA5F,IAAAC,OAAiC4D,KACxB,EACLQ,EAAA;MAAsBC,OAAM;OACzBjD,EAAApB,MAAI4F,GAAA,KAAYtE,KAAhBtB,MAAiB4D,EAAOiC,eAE3BzB,EAAA;MAAsBC,OAAM;OACzBT,EAAO1B,aAEVkC,EAAA;MAAsBC,OAAM;OACzBT,EAAOnB,WACPrB,EAAApB,MAAIoF,GAAA,KAAe9D,KAAnBtB,MAAoB4D,EAAOnB,aAE9B2B,EAAA;MAAsBC,OAAM;OACzBT,EAAOG,mBAEVK,EAAA;MAAsBC,OAAM;OACzBT,EAAOkC,eAAe;IAK7BC,EAAAhG,IAAAC,OAAkCmE,KAE9BC,EAAA;MACEC,OAAO;MACP2B,kBAAiB;MACjBC,KAAMC,KACH3C,EAAAvD,MAAIK,GAAgC6F,GAAE;MAEzCC,oBAAoB;MACpBC,cAAchF,EAAApB,MAAIkD,GAAA;MAClBW,IAAG;OAEFzC,EAAApB,MAAIkE,GAAA,KAA4B5C,KAAhCtB,MAAiCmE,IACjCnE,KAAKmD,wBAAwBJ,SAAS,IACrCqB,EAAA;MAAwBC,OAAM;OAC3BrE,KAAKmD,wBAAwBkD,KAC3BzC,KACCQ,EAAA;MAAqBkC,OAAO1C,EAAOC;MAAIQ,OAAM;OAC1CjD,EAAApB,MAAI2F,GAAA,KAA8BrE,KAAlCtB,MAAmC4D,SAM5CQ,EAAA;MAAwBC,OAAM;OAC5BD,EAAA,sCACEA,EAAA;MACEmC,cAAcjH;MACdkH,YAAYpF,EAAApB,MAAII,GAAA,KAAmBqG;MACnCC,YAAY;;IAS1BC,EAAA5G,IAAAC,OAA8B,MAE1BoE,EAAA;MACEC,OAAO;MACP2B,kBAAiB;MACjBC,KAAMC,KACH3C,EAAAvD,MAAIM,GAA6B4F,GAAE;MAEtCC,oBAAoB;MACpBC,cAAchF,EAAApB,MAAIgD,GAAA;MAClBa,IAAG;OAEFzC,EAAApB,MAAIkE,GAAA,KAA4B5C,KAAhCtB,OACAA,KAAK8B,6BAA6BiB,SAAS,IAC1CqB,EAAA;MAAwBC,OAAM;OAC3BrE,KAAK8B,6BAA6BuE,KAChCzC,KACCQ,EAAA;MAAqBkC,OAAO1C,EAAOC;MAAIQ,OAAM;OAC1CjD,EAAApB,MAAI2F,GAAA,KAA8BrE,KAAlCtB,MAAmC4D,SAM5CQ,EAAA;MAAwBC,OAAM;OAC5BD,EAAA;MAA8BC,OAAM;OAClCD,EAAA;MACEmC,cAAcjH;MACdkH,YAAYpF,EAAApB,MAAII,GAAA,KAAmBqG;MACnCC,YAAY;;IAS1BxB,EAAAnF,IAAAC,OAA4B4G;MAC1B,OAAMtC,UAAEA,GAAQuC,eAAEA,KAAkBD,EAAEhF;MAEtC,MAAMkF,IAAM9G,KAAK+B;MACjB+E,EAAIC,MAAK,CAACC,GAAQC;QAChB,IAAID,EAAE1C,KAAY2C,EAAE3C,IAAW;UAC7B,OAAOuC,MAAkB,SAAS,IAAI;;QAExC,IAAIG,EAAE1C,KAAY2C,EAAE3C,IAAW;UAC7B,OAAOuC,MAAkB,QAAQ,KAAK;;QAExC,OAAO;AAAC;MAGV7G,KAAK+B,uBAAuB,KAAI+E;AAAI;IAGtClB,EAAA7F,IAAAC,OAAe6F;MACb,MAAMqB,IAAOrB,MAAgB,YAAYlG,IAAYC;MACrD,OAAOwE,EAAA;QAAUC,OAAM;QAAU8C,KAAKD;;AAAiB;IAGzDE,EAAArH,IAAAC,OAAgB;MACd,MAAMqH,IAAkBrH,KAAKc,2BAA2B;MACxD,OACEsD,EAAA;QACEC,OAAO;UACL,8BAA8B;UAC9B,gCACErE,KAAKc,2BAA2B;UAClC,iBAAiBuG;UACjB,uBAAuB;UACvB,sBAAsB;;SAGvBA,KACCjD,EAAA;QAAGC,OAAM;SAAe,cAAYrE,KAAKkB,qBAE3CkD,EAAA;QAAKC,OAAM;SACTD,EAAA;;QAEEC,OAAM;QACNiD,SAASlG,EAAApB,MAAIU,GAAA;SAEZU,EAAApB,MAAII,GAAA,KAAmBmH,OAAOC,SAGjCpD,EAAA;;QAEEC,OAAM;QACNiD,SAAStH,KAAKsC,uBAAuBlB,EAAApB,MAAIY,GAAA;QACzC6G,WAAWzH,KAAKsC;SAEflB,EAAApB,MAAII,GAAA,KAAmBmH,OAAOG;AAG5B;+BA/a2B;4BAKH;sBAKN;+BAKQ;gCAKC;;8BAUU;;uBAUnB;wCAKkC;+BAElC,IAAIC;kCAKiB;gCAKqB;mCAKL;;;;EAcpE,uBAAMC;;IACJrE,EAAAvD,MAAII,SAA2ByH,EAAOC,oBAAoB9H,KAAKkG,KAAG;IAClElG,KAAKiB,qBAAoB8G,IAAA/H,KAAK+B,qBAAqB,QAAE,QAAAgG,WAAA,aAAAA,EAAEtF;IACvDzC,KAAK8D,YAAWkE,IAAAhI,KAAK+B,qBAAqB,QAAE,QAAAiG,WAAA,aAAAA,EAAEjE;IAE9C/D,KAAK8B,+BAA+B9B,KAAK+B;;EAkW3C,MAAAkG;IACE,MAAMC,IACJlI,KAAKc,2BAA2B,SAAS;IAC3C,MAAMqH,IACJnI,KAAKmD,wBAAwBJ,WAAW,KAAK;IAC/C,OACEqB,EAACgE,GAAI;MACH/D,OAAO,sBAAsB6D,KAAuBC;OAEpD/D,EAAA;MAAUiE,OAAOhJ;QACjB+E,EAAA;MAAMC,OAAM;OACVD,EAAA;MAAQC,OAAM;OACZD,EAAA;MAAKC,OAAM;OACTD,EAAA;MAAOC,OAAM;OACVjD,EAAApB,MAAII,GAAA,KAAmBkI,OAAOC,QAEjCnE,EAAA;MACEC,OAAM;MACNgE,OAAOjH,EAAApB,MAAIC,GAAA;MACXuI,UAAUpH,EAAApB,MAAIiE,GAAA;MACd/D,OAAOkB,EAAApB,MAAIC,GAAA,KAAiB,GAAGC;QAGhCF,KAAKc,2BAA2B,YAC/BsD,EAAA;MACEC,OAAM;MACNR,IAAG;MACH4E,aAAarH,EAAApB,MAAIF,GAAA;MACjB4I,SAAStH,EAAApB,MAAIyB,GAAA;MACbkH,aACEvH,EAAApB,MAAII,GAAA,KAAmBwI,aAAaC;MAEtCC,gBAAe;MACfC,MAAK;UAKZ/I,KAAKc,2BAA2B,YAAY,EAC3Cd,KAAKmD,wBAAwBJ,SAAS,KACpCqB,EAAA;MAAKC,OAAM;OACTD,EAAA;MAAOC,OAAM;MAAQ2E,SAAQ;OAC1B5H,EAAApB,MAAII,GAAA,KAAmB6I,aAAaV,QAEtCnH,EAAApB,MAAI+F,GAAA,KAA+BzE,KAAnCtB,MAAoC,QAGzCoE,EAAA;MAAKC,OAAM;OACTD,EAAA;MAAOC,OAAM;MAAQ2E,SAAQ;OAC1B5H,EAAApB,MAAII,GAAA,KAAmB8I,WAAWX,QAEpCnH,EAAApB,MAAI2G,GAAA,KAA4BrF,KAAhCtB,UAIJA,KAAKc,2BAA2B,SAC/BsD,EAAA;MAASC,OAAM;OACbD,EAAA;MAAKC,OAAM;OACTD,EAAA;MAAKC,OAAM;OACTD,EAAA;MAAOC,OAAM;MAAQ2E,SAAQ;OAC1B5H,EAAApB,MAAII,GAAA,KAAmB+I,OAAO1G,YAEjC2B,EAAA;;MAEEC,OAAO;QAAE+E,OAAS;QAAM,gBAAgBpJ,KAAKmB;;MAC7C0C,IAAG;MACH3D,OAAOF,KAAKuB;MACZmH,SAAShH,KACPN,EAAApB,MAAIoC,GAAA,KAAcd,KAAlBtB,MAAmB0B,GAAO;MAE5BiH,aAAavH,EAAApB,MAAII,GAAA,KAAmBwI,aAAanG;MACjDwD,KAAKC,KAAO3C,EAAAvD,MAAIS,GAAgByF,GAAuB;SAG3D9B,EAAA;MAAKC,OAAM;OACTD,EAAA;MAAOC,OAAM;MAAQ2E,SAAQ;OAC1B5H,EAAApB,MAAII,GAAA,KAAmB+I,OAAOjH,aAEjCkC,EAAA;;MAEEC,OAAM;MACNR,IAAG;MACH3D,OAAOF,KAAKwB;MACZkH,SAAShH,KACPN,EAAApB,MAAIoC,GAAA,KAAcd,KAAlBtB,MAAmB0B,GAAO;MAE5BiH,aAAavH,EAAApB,MAAII,GAAA,KAAmBwI,aAAa1G;MACjDmH,WAAW;UAGbrJ,KAAKmB,cACLiD,EAAA;MACEC,OAAM;MACNiB,eACElE,EAAApB,MAAIS,GAAA;MAEN8E,YAAW;MACXC,aAAab,EAAOc,gBAAgBD;MACpCE,OAAOf,EAAOc,gBAAgBC;OAE7BtE,EAAApB,MAAII,GAAA,KAAmBkJ,OAAOC,qBAOxCnI,EAAApB,MAAIoH,GAAA,KAAc9F,KAAlBtB"}