@genexus/genexus-ide-ui 3.2.8 → 3.2.10

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 (67) hide show
  1. package/dist/cjs/genexus-ide-ui.cjs.js +1 -1
  2. package/dist/cjs/gx-ide-db-instance-selector.cjs.entry.js +147 -0
  3. package/dist/cjs/gx-ide-db-instance-selector.cjs.entry.js.map +1 -0
  4. package/dist/cjs/gx-ide-mcp-server.cjs.entry.js +6 -20
  5. package/dist/cjs/gx-ide-mcp-server.cjs.entry.js.map +1 -1
  6. package/dist/cjs/gx-ide-new-kb.cjs.entry.js +261 -138
  7. package/dist/cjs/gx-ide-new-kb.cjs.entry.js.map +1 -1
  8. package/dist/cjs/loader.cjs.js +1 -1
  9. package/dist/collection/collection-manifest.json +1 -0
  10. package/dist/collection/components/db-instance-selector/db-instance-selector.css +20 -0
  11. package/dist/collection/components/db-instance-selector/db-instance-selector.js +262 -0
  12. package/dist/collection/components/db-instance-selector/db-instance-selector.js.map +1 -0
  13. package/dist/collection/components/db-instance-selector/gx-ide-assets/db-instance-selector/langs/db-instance-selector.lang.en.json +14 -0
  14. package/dist/collection/components/db-instance-selector/gx-ide-assets/db-instance-selector/langs/db-instance-selector.lang.ja.json +14 -0
  15. package/dist/collection/components/db-instance-selector/gx-ide-assets/db-instance-selector/langs/db-instance-selector.lang.zh.json +14 -0
  16. package/dist/collection/components/db-instance-selector/gx-ide-assets/db-instance-selector/shortcuts.json +15 -0
  17. package/dist/collection/components/mcp-server/mcp-server.js +6 -20
  18. package/dist/collection/components/mcp-server/mcp-server.js.map +1 -1
  19. package/dist/collection/components/mcp-server/types.js.map +1 -1
  20. package/dist/collection/components/new-kb/gx-ide-assets/new-kb/langs/new-kb.lang.en.json +17 -4
  21. package/dist/collection/components/new-kb/gx-ide-assets/new-kb/langs/new-kb.lang.ja.json +17 -4
  22. package/dist/collection/components/new-kb/gx-ide-assets/new-kb/langs/new-kb.lang.zh.json +17 -4
  23. package/dist/collection/components/new-kb/new-kb.css +122 -17
  24. package/dist/collection/components/new-kb/new-kb.js +320 -193
  25. package/dist/collection/components/new-kb/new-kb.js.map +1 -1
  26. package/dist/collection/components/new-kb/tests/new-kb.e2e.js +48 -60
  27. package/dist/collection/components/new-kb/tests/new-kb.e2e.js.map +1 -1
  28. package/dist/collection/testing/locale.e2e.js +1 -0
  29. package/dist/collection/testing/locale.e2e.js.map +1 -1
  30. package/dist/components/gx-ide-db-instance-selector.d.ts +11 -0
  31. package/dist/components/gx-ide-db-instance-selector.js +168 -0
  32. package/dist/components/gx-ide-db-instance-selector.js.map +1 -0
  33. package/dist/components/gx-ide-mcp-server.js +6 -20
  34. package/dist/components/gx-ide-mcp-server.js.map +1 -1
  35. package/dist/components/gx-ide-new-kb.js +281 -152
  36. package/dist/components/gx-ide-new-kb.js.map +1 -1
  37. package/dist/esm/genexus-ide-ui.js +1 -1
  38. package/dist/esm/gx-ide-db-instance-selector.entry.js +143 -0
  39. package/dist/esm/gx-ide-db-instance-selector.entry.js.map +1 -0
  40. package/dist/esm/gx-ide-mcp-server.entry.js +6 -20
  41. package/dist/esm/gx-ide-mcp-server.entry.js.map +1 -1
  42. package/dist/esm/gx-ide-new-kb.entry.js +261 -138
  43. package/dist/esm/gx-ide-new-kb.entry.js.map +1 -1
  44. package/dist/esm/loader.js +1 -1
  45. package/dist/genexus-ide-ui/genexus-ide-ui.esm.js +1 -1
  46. package/dist/genexus-ide-ui/genexus-ide-ui.esm.js.map +1 -1
  47. package/dist/genexus-ide-ui/gx-ide-assets/db-instance-selector/langs/db-instance-selector.lang.en.json +14 -0
  48. package/dist/genexus-ide-ui/gx-ide-assets/db-instance-selector/langs/db-instance-selector.lang.ja.json +14 -0
  49. package/dist/genexus-ide-ui/gx-ide-assets/db-instance-selector/langs/db-instance-selector.lang.zh.json +14 -0
  50. package/dist/genexus-ide-ui/gx-ide-assets/db-instance-selector/shortcuts.json +15 -0
  51. package/dist/genexus-ide-ui/gx-ide-assets/new-kb/langs/new-kb.lang.en.json +17 -4
  52. package/dist/genexus-ide-ui/gx-ide-assets/new-kb/langs/new-kb.lang.ja.json +17 -4
  53. package/dist/genexus-ide-ui/gx-ide-assets/new-kb/langs/new-kb.lang.zh.json +17 -4
  54. package/dist/genexus-ide-ui/{p-45b6dc45.entry.js → p-a456237f.entry.js} +7 -19
  55. package/dist/genexus-ide-ui/p-a456237f.entry.js.map +1 -0
  56. package/dist/genexus-ide-ui/p-c1db7f38.entry.js +182 -0
  57. package/dist/genexus-ide-ui/p-c1db7f38.entry.js.map +1 -0
  58. package/dist/genexus-ide-ui/p-eeae9dd5.entry.js +1020 -0
  59. package/dist/genexus-ide-ui/p-eeae9dd5.entry.js.map +1 -0
  60. package/dist/types/components/db-instance-selector/db-instance-selector.d.ts +39 -0
  61. package/dist/types/components/mcp-server/types.d.ts +0 -2
  62. package/dist/types/components/new-kb/new-kb.d.ts +51 -23
  63. package/dist/types/components.d.ts +135 -84
  64. package/package.json +1 -1
  65. package/dist/genexus-ide-ui/p-45b6dc45.entry.js.map +0 -1
  66. package/dist/genexus-ide-ui/p-76e1c357.entry.js +0 -802
  67. package/dist/genexus-ide-ui/p-76e1c357.entry.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"names":["newKbCss","CSS_BUNDLES","WINDOWS_AUTHENTICATION_VALUE","LOCALDB_INSTANCE","MAIN_SECTION_CLASSES","BASIC_SECTION_PARENT_CLASSES","SYSTEM_ICON","getIconPath","category","name","colorType","WARNING_ICON","DATABASE_ICON","LOCATION_MODE_DEFAULT","LOCATION_MODE_CUSTOM","DATABASE_NAME_PREFIX","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_locationModeEl","_GxIdeNewKb_locationModeModel","_GxIdeNewKb_locationElRegistered","_GxIdeNewKb_credentialControlsRegistered","_GxIdeNewKb_passwordEl","_GxIdeNewKb_prototypingEnvironmentEl","_GxIdeNewKb_prototypingTargetEl","_GxIdeNewKb_savePasswordEl","_GxIdeNewKb_serverNameEl","_GxIdeNewKb_userInterfaceLanguageEl","_GxIdeNewKb_userNameEl","_GxIdeNewKb_chShortcutsEl","_GxIdeNewKb_computeDefaultDatabaseName","kbName","_GxIdeNewKb_kbNameInputHandler","e","kbNameValue","_a","detail","_b","__classPrivateFieldGet","value","databaseNameValue","call","_GxIdeNewKb_databaseNameInputHandler","_GxIdeNewKb_handlerAuthenticationTypeInput","async","authenticationTypeValue","collations","defaultCollation","undefined","connectionStatus","_GxIdeNewKb_loadCollationsForCurrentConnection","_GxIdeNewKb_handlerCredentialsChanged","userNameValue","passwordValue","_d","_c","_GxIdeNewKb_browseForMoreHandler","browseForMoreCallback","browseForMoreDialogOpen","selectedInstance","serverNameValue","_GxIdeNewKb_serverNameChangedHandler","CustomEvent","error","target","_GxIdeNewKb_applyCreateDataFilesInKBFolderForServer","_GxIdeNewKb_classifyServer","serverName","toLowerCase","isLocal","serverInstances","some","s","label","_GxIdeNewKb_createDataFilesInKBFolderDisabled","kind","_GxIdeNewKb_sqlAuthMissingCredentials","authType","createDataFilesInKBFolder","getCollationsForInstanceCallback","isWindowsAuth","userName","password","result","_e","_GxIdeNewKb_prototypingEnvironmentValueChangedHandler","event","__classPrivateFieldSet","_GxIdeNewKb_getDataSources","_GxIdeNewKb_updateFrontEnds","_GxIdeNewKb_prototypingTargetValueChangedHandler","_GxIdeNewKb_getPrototypingEnvironments","_GxIdeNewKb_dataSourceValueChangedHandler","_GxIdeNewKb_renderAdvanced","showCredentials","h","class","part","tabAdvanced","tabTitle","connectionGroup","htmlFor","ref","el","id","model","serverInstancesComboBoxModel","suggest","suggestDebounce","config","inputDebounce","onInput","onChange","browseForMore","onClick","src","actionElement","blockAlign","inlineAlign","delay","tooltipSettings","_GxIdeNewKb_evaluateTooltipRender","databaseName","collation","disabled","length","placeholder","disabledPlaceholder","collationsComboBoxModel","checkedValue","caption","createDataFilesInKbFolder","authenticationGroup","authenticationType","authenticationTypes","authenticationTypesComboBoxModel","debounce","type","showPasswordButton","savePassword","windowsAuthCalloutTitle","windowsAuthCalloutDescription","_GxIdeNewKb_renderBasic","tabBasic","prototypingTarget","prototypingTargets","prototypingTargetsInitialValue","prototypingTargetsComboBoxModel","userInterfaceLanguage","userInterfaceLanguages","userInterfaceLanguagesInitialValue","userInterfaceLanguagesComboBoxModel","backEnd","backEndLabel","prototypingEnvironment","defaultPrototypingEnvironments","prototypingEnvironmentsComboBoxModel","dataSource","defaultDataSources","defaultDataSourcesComboBoxModel","frontEnd","frontEndLabel","renderChCheckboxItems","frontEnds","_GxIdeNewKb_frontEndCheckboxInputHandler","get","_GxIdeNewKb_cancelKbHandler","cancelCallback","_GxIdeNewKb_createKbHandler","selectedFrontEndIds","createCallback","_f","kbLocation","_g","_h","_j","_k","_l","_m","_o","_p","_q","creationMode","selectedTab","then","formSubmitResult","validatableControls","validateControls","controlReference","hasError","message","checked","_GxIdeNewKb_updateFrontEndsCheckedMap","checkboxId","currentState","push","checkboxIndex","findIndex","removeIndex","getPrototypingEnvironmentsCallback","selectedPrototypingTargetId","envs","getDataSourcesCallback","selectedPrototypingEnvironmentId","updatedDefaultDataSourcesPromise","setSelectedItem","getSelectedItem","catch","_GxIdeNewKb_initialSetupAdvancedTab","hasWindowsAuth","opt","_GxIdeNewKb_initializeValidatableControlsBasicTab","forEach","validatableControl","reference","_GxIdeNewKb_initializeValidatableControlsAdvancedTab","_GxIdeNewKb_selectLocationHandler","selectLocationCallback","_GxIdeNewKb_locationModeChangeHandler","locationMode","_GxIdeNewKb_tabSelectionChangedHandler","newSelectedId","advancedTabIsVisible","_GxIdeNewKb_loadAdvancedTabData","getAdvancedTabDataCallback","loadingAdvancedTab","data","updatedFrontEnds","getFrontEndsCallback","has","checkedIds","filter","fe","map","watchAuthenticationTypes","newValue","mapOptionsToComboBoxItemModel","watchCollations","watchServerInstances","watchDefaultDataSources","watchDefaultPrototypingEnvironments","watchPrototypingTargets","watchUserInterfaceLanguages","componentWillLoad","Locale","getComponentStrings","tabLabel","header","kbLocationDefault","kbLocationCustom","connectedCallback","componentDidLoad","componentDidRender","suspendShortcuts","suspend","render","Host","isAdvanced","autoFocus","canSetLocation","selectLocationButton","title","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}\n// location appears when canSetLocation is true\n.location-wrapper {\n display: flex;\n align-items: center;\n gap: var(--spacing-gap-xs);\n min-block-size: var(--control-block-size);\n}\n.location-custom-wrapper {\n display: flex;\n align-items: center;\n gap: var(--spacing-gap-xs);\n flex-grow: 1;\n min-inline-size: 0;\n}\n.location-field {\n flex-grow: 1;\n min-inline-size: 0;\n\n > .input {\n inline-size: 100%;\n }\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.dialog-header__back-end,\n.dialog-header__front-end {\n padding-block-start: 16px;\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: 12px;\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.basic,\n.advanced {\n padding-block-start: 12px;\n overflow: auto;\n block-size: 100%;\n}\n\n// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\n// Knowledge Base Storage card (advanced tab)\n// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\n.kb-storage-card {\n display: flex;\n flex-direction: column;\n gap: var(--spacing-gap-l);\n padding-inline: var(--spacing-padding-xl);\n}\n\n.kb-storage-card__header {\n display: flex;\n align-items: center;\n gap: var(--spacing-gap-s);\n padding-block-end: var(--spacing-padding-m);\n border-bottom: 1px solid var(--color-border-surface-on-elevation-1);\n}\n\n.kb-storage-card__heading {\n display: flex;\n flex-direction: column;\n gap: var(--spacing-gap-xs);\n min-inline-size: 0;\n}\n\n.kb-storage-card__title {\n margin: 0;\n color: var(--color-text-neutral-default);\n}\n\n.kb-storage-card__grid {\n display: grid;\n grid-template-columns: 1fr 1fr;\n column-gap: var(--spacing-gap-xl);\n row-gap: var(--spacing-gap-l);\n}\n\n.kb-storage-column {\n display: flex;\n flex-direction: column;\n gap: var(--spacing-gap-m);\n min-inline-size: 0;\n}\n\n.kb-storage-column__title {\n display: flex;\n align-items: center;\n gap: var(--spacing-gap-s);\n color: var(--color-text-neutral-disabled);\n text-transform: uppercase;\n letter-spacing: 0.04em;\n}\n\n.kb-storage-column__title-text {\n white-space: nowrap;\n}\n\n.kb-storage-column__title-rule {\n flex: 1;\n block-size: 1px;\n background-color: var(--color-border-surface-on-elevation-1);\n}\n\n.field-group--stacked {\n display: flex;\n flex-direction: column;\n gap: var(--spacing-gap-m);\n}\n\n.server-name-wrapper {\n display: grid;\n grid-template-columns: 1fr max-content;\n gap: var(--spacing-gap-xs);\n min-inline-size: 0;\n}\n\n.kb-storage-credentials {\n display: flex;\n flex-direction: column;\n gap: var(--spacing-gap-m);\n}\n\n.kb-storage-callout {\n display: flex;\n flex-direction: row;\n gap: var(--spacing-gap-xs);\n padding: var(--spacing-padding-m);\n border: 1px solid var(--color-border-surface-on-elevation-2);\n border-radius: var(--border-radius-s);\n background-color: var(--color-accent-surface-elevation-2);\n}\n\n.kb-storage-callout-inner {\n display: flex;\n flex-direction: column;\n}\n\n.kb-storage-callout__title {\n display: flex;\n gap: var(--spacing-gap-xs);\n}\n\n.kb-storage-callout__description {\n color: var(--color-text-neutral-disabled);\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\n// Align the tab list with the header / footer horizontal padding\n// (matches `spacing-body-inline` -> --spacing-padding-xl).\n.tab::part(tab-list block-start) {\n padding-inline: var(--spacing-padding-xl);\n}\n\n// WA: Staring on Mercury V1.0.0. the checkbox displays an outline all around.\n// This requires the checkbox inline-size to be set to max-content.\n// TODO: Remove this once the checkbox displays correctly on a later version of Mercury.\n.checkbox {\n inline-size: max-content;\n}\n\n.footer.dialog-footer-with-border {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--spacing-gap-m);\n\n > .buttons-spacer {\n margin-inline-start: auto;\n }\n}\n\n.connection-status {\n &--connecting {\n color: var(--color-text-neutral-disabled);\n }\n\n &--success {\n color: var(--color-text-success-default);\n }\n\n &--failed {\n color: var(--color-text-error-default);\n }\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 { RadioGroupItemModel } from \"@genexus/chameleon-controls-library/dist/types/components/radio-group/types\";\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 LOCALDB_INSTANCE: string = \"(LocalDB)\\\\MSSQLLocalDB\";\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 WARNING_ICON = getIconPath({\n category: \"system\",\n name: \"warning\",\n colorType: \"on-interactive\"\n});\n\nconst DATABASE_ICON = getIconPath({\n category: \"system\",\n name: \"database\",\n colorType: \"primary\"\n});\n\nconst LOCATION_MODE_DEFAULT = \"default\";\nconst LOCATION_MODE_CUSTOM = \"custom\";\n\nconst DATABASE_NAME_PREFIX: string = \"GX_KB_\";\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 #locationModeEl!: HTMLChRadioGroupRenderElement;\n #locationModeModel: RadioGroupItemModel[];\n #locationElRegistered = false;\n #credentialControlsRegistered = false;\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 @State() loadingAdvancedTab: boolean = false;\n @State() browseForMoreDialogOpen: boolean = false;\n @State() databaseNameValue: string = \"\";\n @State() locationMode: string = LOCATION_MODE_DEFAULT;\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() connectionStatus: \"connecting\" | \"success\" | \"failed\" | undefined;\n @State() userNameValue: string = \"\";\n @State() passwordValue: string = \"\";\n\n // representations of GxOption[] as ComboBoxModel, and initialValue for each one.\n @State() authenticationTypes: GxOption[] = [];\n @Watch(\"authenticationTypes\")\n watchAuthenticationTypes(newValue: GxOption[]) {\n if (newValue?.length) {\n this.authenticationTypesComboBoxModel =\n mapOptionsToComboBoxItemModel(newValue);\n this.authenticationTypeValue = getSelectedItem(newValue);\n }\n }\n @State() authenticationTypesComboBoxModel: ComboBoxModel = [];\n @State() authenticationTypeValue: string;\n @State() collations: GxOption[] = [];\n @Watch(\"collations\")\n watchCollations(newValue: GxOption[]) {\n if (!newValue?.length) {\n this.collationsComboBoxModel = [];\n return;\n }\n this.collationsComboBoxModel = mapOptionsToComboBoxItemModel(newValue);\n }\n @State() collationsComboBoxModel: ComboBoxModel = [];\n @State() defaultCollation: string;\n @State() defaultDataSourcesComboBoxModel: ComboBoxModel = [];\n @State() prototypingTargetsComboBoxModel: ComboBoxModel = [];\n @State() prototypingTargetsInitialValue: string;\n @State() prototypingEnvironmentsComboBoxModel: ComboBoxModel = [];\n @State() prototypingEnvironmentsInitialValue: string;\n @State() serverInstances: GxOption[] = [];\n @Watch(\"serverInstances\")\n watchServerInstances(newValue: GxOption[]) {\n if (!newValue?.length) {\n this.serverInstancesComboBoxModel = [];\n return;\n }\n this.serverInstancesComboBoxModel = mapOptionsToComboBoxItemModel(newValue);\n }\n @State() serverInstancesComboBoxModel: ComboBoxModel = [];\n @State() serverNameValue: string = \"\";\n @State() userInterfaceLanguagesComboBoxModel: ComboBoxModel = [];\n @State() userInterfaceLanguagesInitialValue: string;\n @State() selectedTab: string = BASIC_TAB_SELECTOR;\n\n /**\n * Callback invoked when the user wants to cancel KB creation (‘Cancel’ button)\n */\n @Prop() readonly cancelCallback: CancelCallback;\n\n /**\n * Specifies whether the location field (and its folder-picker button) is\n * shown in the header, allowing the user to override the default `kbLocation`\n * path. Independent from `isAdvanced`.\n */\n @Prop() readonly canSetLocation: boolean = false;\n\n /**\n * Callback invoked when the advanced tab is selected for the first time.\n * Returns the data needed to populate the advanced tab fields lazily,\n * avoiding unnecessary loading at component initialization.\n */\n @Prop() readonly getAdvancedTabDataCallback: GetAdvancedTabDataCallback;\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 * It allows defining whether the option to create the data files in the KB folder will be shown in the advanced tab\n */\n @Prop({ mutable: true }) createDataFilesInKBFolder: boolean = true;\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 const result = setSelectedItem(newValue, this.#selectedDataSourceId);\n this.#selectedDataSourceId = getSelectedItem(result);\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()\n 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 * Callback invoked when the user clicks the \"Browse for more...\" button next\n * to the Server Name combo. The host is expected to display its own server\n * picker UI and resolve with the name of the selected server instance, which\n * will be set as the value of the Server Name combo.\n */\n @Prop() readonly browseForMoreCallback: BrowseForMoreCallback;\n\n /**\n * Callback invoked when the user selects a different server instance,\n * allowing the host to fetch the collations available on that instance.\n */\n @Prop()\n readonly getCollationsForInstanceCallback: GetCollationsForInstanceCallback;\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\n */\n @Prop({ mutable: true }) userName: string;\n\n async componentWillLoad() {\n this.#componentLocale = await Locale.getComponentStrings(this.el);\n this.databaseNameValue = this.#computeDefaultDatabaseName(this.kbName);\n if (this.databaseName) {\n this.databaseNameValue = this.databaseName;\n }\n this.userNameValue = this.userName ?? \"\";\n this.passwordValue = this.password ?? \"\";\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 this.#locationModeModel = [\n {\n value: LOCATION_MODE_DEFAULT,\n caption: this.#componentLocale.header.kbLocationDefault\n },\n {\n value: LOCATION_MODE_CUSTOM,\n caption: this.#componentLocale.header.kbLocationCustom\n }\n ];\n }\n\n connectedCallback() {\n this.watchDefaultDataSources(this.defaultDataSources);\n this.watchDefaultPrototypingEnvironments(\n this.defaultPrototypingEnvironments\n );\n this.watchPrototypingTargets(this.prototypingTargets);\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 // Register the location input for validation once it's rendered (custom mode)\n if (\n this.locationMode === LOCATION_MODE_CUSTOM &&\n !this.#locationElRegistered &&\n this.#locationEl\n ) {\n this.validatableControls.set(this.#locationEl.id, {\n reference: this.#locationEl,\n hasError: false,\n message: undefined\n });\n this.#locationElRegistered = true;\n }\n\n // Register credential controls when they become visible (SQL Auth selected)\n if (\n this.authenticationTypeValue !== WINDOWS_AUTHENTICATION_VALUE &&\n !this.#credentialControlsRegistered &&\n this.#userNameEl &&\n this.#passwordEl\n ) {\n this.validatableControls.set(this.#userNameEl.id, {\n reference: this.#userNameEl,\n hasError: false,\n message: undefined\n });\n this.validatableControls.set(this.#passwordEl.id, {\n reference: this.#passwordEl,\n hasError: false,\n message: undefined\n });\n this.#credentialControlsRegistered = true;\n }\n\n // Reset flag when switching back to Windows Auth so they re-register next time\n if (\n this.authenticationTypeValue === WINDOWS_AUTHENTICATION_VALUE &&\n this.#credentialControlsRegistered\n ) {\n this.#credentialControlsRegistered = false;\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 #computeDefaultDatabaseName = (kbName: string): string =>\n `${DATABASE_NAME_PREFIX}${kbName ?? \"\"}`;\n\n #kbNameInputHandler = (e: CustomEvent<string> | InputEvent) => {\n const kbNameValue = (e.detail ?? this.#kbNameEl?.value) as string;\n this.databaseNameValue = this.#computeDefaultDatabaseName(kbNameValue);\n };\n\n #databaseNameInputHandler = (e: CustomEvent<string> | InputEvent) => {\n this.databaseNameValue = (e.detail ??\n this.#databaseNameEl?.value) as string;\n };\n\n #handlerAuthenticationTypeInput = async (\n e: CustomEvent<string> | InputEvent\n ) => {\n this.authenticationTypeValue = (e as CustomEvent<string>)?.detail as string;\n this.collations = [];\n this.defaultCollation = undefined;\n this.connectionStatus = undefined;\n await this.#loadCollationsForCurrentConnection();\n };\n\n #handlerCredentialsChanged = async (): Promise<void> => {\n this.userNameValue = this.#userNameEl?.value ?? \"\";\n this.passwordValue = this.#passwordEl?.value ?? \"\";\n await this.#loadCollationsForCurrentConnection();\n };\n\n #browseForMoreHandler = async (): Promise<void> => {\n if (!this.browseForMoreCallback) {\n return;\n }\n this.browseForMoreDialogOpen = true;\n try {\n const selectedInstance = await this.browseForMoreCallback();\n if (selectedInstance) {\n this.serverNameValue = selectedInstance;\n if (this.#serverNameEl) {\n this.#serverNameEl.value = selectedInstance;\n }\n await this.#serverNameChangedHandler(\n new CustomEvent<string>(\"change\", { detail: selectedInstance })\n );\n }\n } catch (error) {\n } finally {\n this.browseForMoreDialogOpen = false;\n }\n };\n\n #serverNameChangedHandler = async (\n e: CustomEvent<string> | InputEvent\n ): Promise<void> => {\n const selectedInstance =\n (e as CustomEvent<string>)?.detail ??\n (e.target as HTMLInputElement)?.value;\n this.serverNameValue = selectedInstance ?? \"\";\n this.#applyCreateDataFilesInKBFolderForServer();\n await this.#loadCollationsForCurrentConnection();\n };\n\n #classifyServer = (\n serverName: string\n ): \"localdb\" | \"local\" | \"remote\" | \"empty\" => {\n if (!serverName) {\n return \"empty\";\n }\n if (serverName.toLowerCase() === LOCALDB_INSTANCE.toLowerCase()) {\n return \"localdb\";\n }\n const isLocal = (this.serverInstances ?? []).some(\n s => s.label?.toLowerCase() === serverName.toLowerCase()\n );\n return isLocal ? \"local\" : \"remote\";\n };\n\n #createDataFilesInKBFolderDisabled = (): boolean => {\n const kind = this.#classifyServer(this.serverNameValue);\n return kind === \"localdb\" || kind === \"remote\" || kind === \"empty\";\n };\n\n #sqlAuthMissingCredentials = (): boolean => {\n const authType = this.authenticationTypeValue;\n if (!authType || authType === WINDOWS_AUTHENTICATION_VALUE) {\n return false;\n }\n return !this.userNameValue || !this.passwordValue;\n };\n\n #applyCreateDataFilesInKBFolderForServer = (): void => {\n const kind = this.#classifyServer(this.serverNameValue);\n if (kind === \"local\" || kind === \"localdb\") {\n this.createDataFilesInKBFolder = true;\n } else if (kind === \"remote\") {\n this.createDataFilesInKBFolder = false;\n }\n };\n\n #loadCollationsForCurrentConnection = async (): Promise<void> => {\n const selectedInstance = this.serverNameValue;\n if (\n !selectedInstance ||\n !this.getCollationsForInstanceCallback ||\n this.connectionStatus === \"connecting\"\n ) {\n return;\n }\n const authType = this.authenticationTypeValue;\n const isWindowsAuth = authType === WINDOWS_AUTHENTICATION_VALUE;\n const userName = isWindowsAuth ? undefined : this.#userNameEl?.value;\n const password = isWindowsAuth ? undefined : this.#passwordEl?.value;\n\n if (!isWindowsAuth && authType && (!userName || !password)) {\n return;\n }\n\n this.connectionStatus = \"connecting\";\n try {\n const result = await this.getCollationsForInstanceCallback(\n selectedInstance,\n authType,\n userName,\n password\n );\n if (result) {\n this.collations = result.collations ?? [];\n this.defaultCollation = result.defaultCollation ?? undefined;\n this.connectionStatus = \"success\";\n } else {\n this.collations = [];\n this.defaultCollation = undefined;\n this.connectionStatus = \"failed\";\n }\n } catch {\n this.collations = [];\n this.defaultCollation = undefined;\n this.connectionStatus = \"failed\";\n }\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 const showCredentials =\n this.authenticationTypeValue !== WINDOWS_AUTHENTICATION_VALUE;\n\n return [\n <section class=\"kb-storage-card\" part=\"kb-storage-card\">\n <header class=\"kb-storage-card__header\">\n <div class=\"kb-storage-card__heading\">\n <h2 class=\"kb-storage-card__title body-semi-bold-m\">\n {this.#componentLocale.tabAdvanced.tabTitle}\n </h2>\n </div>\n </header>\n\n <div class=\"kb-storage-card__grid\">\n <div class=\"kb-storage-column\">\n <div class=\"kb-storage-column__title body-regular-xs\">\n <span class=\"kb-storage-column__title-text\">\n {this.#componentLocale.tabAdvanced.connectionGroup}\n </span>\n <span class=\"kb-storage-column__title-rule\" aria-hidden=\"true\" />\n </div>\n\n <div class=\"field-group field-group--stacked\">\n <div class=\"field field-block server-name-field\">\n <label class=\"label\" htmlFor=\"serverName\">\n {this.#componentLocale.tabAdvanced.serverName.label}\n </label>\n <div class=\"server-name-wrapper\">\n <ch-combo-box-render\n class=\"combo-box\"\n value={this.serverNameValue}\n ref={(el: HTMLChComboBoxRenderElement) =>\n (this.#serverNameEl = el as HTMLChComboBoxRenderElement)\n }\n id=\"serverName\"\n part=\"server-name\"\n model={this.serverInstancesComboBoxModel}\n suggest\n suggestDebounce={config.inputDebounce}\n onInput={this.#serverNameChangedHandler}\n onChange={this.#serverNameChangedHandler}\n ></ch-combo-box-render>\n <button\n class=\"button-tertiary button-icon-only\"\n aria-label={\n this.#componentLocale.tabAdvanced.serverName.browseForMore\n }\n part=\"button-browse-for-more\"\n onClick={this.#browseForMoreHandler}\n >\n <ch-image class=\"icon-m\" src={DATABASE_ICON}></ch-image>\n {!this.browseForMoreDialogOpen && (\n <ch-tooltip\n class=\"tooltip\"\n actionElement={null}\n blockAlign=\"outside-start\"\n inlineAlign=\"center\"\n delay={config.tooltipSettings.delay}\n >\n {\n this.#componentLocale.tabAdvanced.serverName\n .browseForMore\n }\n </ch-tooltip>\n )}\n </button>\n </div>\n {this.#evaluateTooltipRender(this.#serverNameEl)}\n </div>\n\n <div class=\"field field-block database-field\">\n <label class=\"label\" htmlFor=\"databaseName\">\n {this.#componentLocale.tabAdvanced.databaseName.label}\n </label>\n <ch-edit\n class=\"input\"\n value={this.databaseNameValue}\n id=\"databaseName\"\n part=\"database-name\"\n onInput={this.#databaseNameInputHandler}\n ref={(el: HTMLChEditElement) =>\n (this.#databaseNameEl = el as HTMLChEditElement)\n }\n ></ch-edit>\n\n {this.#evaluateTooltipRender(this.#databaseNameEl)}\n </div>\n\n <div class=\"field field-block collation-field\">\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={\n !this.serverNameValue || this.collations.length === 0\n }\n placeholder={\n this.collations.length === 0\n ? this.#componentLocale.tabAdvanced.collation\n .disabledPlaceholder\n : \"\"\n }\n value={this.defaultCollation}\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 <ch-checkbox\n class=\"checkbox\"\n checkedValue=\"true\"\n value={this.createDataFilesInKBFolder ? \"true\" : undefined}\n disabled={this.#createDataFilesInKBFolderDisabled()}\n caption={\n this.#componentLocale.tabAdvanced.createDataFilesInKbFolder\n }\n part=\"create-data-in-kb\"\n id=\"createDataFilesInKBFolder\"\n ref={(el: HTMLChCheckboxElement) =>\n (this.#createDataFilesInKBFolderEl =\n el as HTMLChCheckboxElement)\n }\n ></ch-checkbox>\n </div>\n </div>\n\n <div class=\"kb-storage-column\">\n <div class=\"kb-storage-column__title body-regular-xs\">\n <span class=\"kb-storage-column__title-text\">\n {this.#componentLocale.tabAdvanced.authenticationGroup}\n </span>\n <span class=\"kb-storage-column__title-rule\" aria-hidden=\"true\" />\n </div>\n\n <div class=\"field-group field-group--stacked\">\n <div class=\"field field-block authentication-type-field\">\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.authenticationTypeValue}\n ref={(el: HTMLChComboBoxRenderElement) =>\n (this.#authenticationTypeEl =\n 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 {showCredentials ? (\n <div class=\"kb-storage-credentials\">\n <div class=\"field field-block username-field\">\n <label class=\"label\" htmlFor=\"userName\">\n {this.#componentLocale.tabAdvanced.userName.label}\n </label>\n <ch-edit\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 onInput={this.#handlerCredentialsChanged}\n debounce={config.inputDebounce}\n ></ch-edit>\n {this.#evaluateTooltipRender(this.#userNameEl)}\n </div>\n\n <div class=\"field field-block password-field\">\n <label class=\"label\" htmlFor=\"password\">\n {this.#componentLocale.tabAdvanced.password.label}\n </label>\n <ch-edit\n class=\"input\"\n type=\"password\"\n showPasswordButton\n value={this.password}\n id=\"password\"\n part=\"password\"\n ref={(el: HTMLChEditElement) =>\n (this.#passwordEl = el as HTMLChEditElement)\n }\n onInput={this.#handlerCredentialsChanged}\n debounce={config.inputDebounce}\n ></ch-edit>\n {this.#evaluateTooltipRender(this.#passwordEl)}\n </div>\n\n <ch-checkbox\n class=\"checkbox\"\n checkedValue=\"password\"\n value=\"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 disabled\n ></ch-checkbox>\n </div>\n ) : (\n <div class=\"kb-storage-callout\" part=\"windows-auth-callout\">\n <ch-image\n class=\"icon-l\"\n src={WARNING_ICON}\n type=\"mask\"\n ></ch-image>\n\n <div class=\"kb-storage-callout-inner\">\n <span class=\"kb-storage-callout__title body-semi-bold-s\">\n {\n this.#componentLocale.tabAdvanced\n .windowsAuthCalloutTitle\n }\n </span>\n <span class=\"kb-storage-callout__description body-regular-xs\">\n {\n this.#componentLocale.tabAdvanced\n .windowsAuthCalloutDescription\n }\n </span>\n </div>\n </div>\n )}\n </div>\n </div>\n </div>\n </section>\n ];\n };\n\n #renderBasic = (): HTMLElement[] => {\n return [\n <section class=\"basic__header field-group dialog-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=\"dialog-header dialog-header-with-border dialog-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.#selectedDataSourceId}\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=\"dialog-header dialog-header-with-border dialog-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 creationMode: this.selectedTab as CreationMode\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 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 #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\n : this.prototypingTargetsInitialValue;\n const envs = await this.getPrototypingEnvironmentsCallback(\n selectedPrototypingTargetId\n );\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\n ? this.#selectedDataSourceId\n : this.defaultDataSources[0].id;\n }\n })\n .catch(() => {\n // to do\n });\n }\n };\n\n #initialSetupAdvancedTab = () => {\n const hasWindowsAuth = this.authenticationTypes.some(\n opt => opt.id === WINDOWS_AUTHENTICATION_VALUE\n );\n if (hasWindowsAuth) {\n this.authenticationTypeValue = WINDOWS_AUTHENTICATION_VALUE;\n }\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.#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 #locationModeChangeHandler = () => {\n this.locationMode = this.#locationModeEl.value;\n };\n\n #tabSelectionChangedHandler = (\n event: CustomEvent<{\n lastSelectedIndex: number;\n newSelectedId: string;\n newSelectedIndex: number;\n }>\n ): void => {\n this.selectedTab = event.detail.newSelectedId;\n if (event.detail.newSelectedId === ADVANCED_TAB_SELECTOR) {\n if (!this.advancedTabIsVisible) {\n this.advancedTabIsVisible = true;\n this.#loadAdvancedTabData();\n }\n } else {\n this.connectionStatus = undefined;\n }\n };\n\n #loadAdvancedTabData = async (): Promise<void> => {\n if (!this.getAdvancedTabDataCallback || this.loadingAdvancedTab) {\n return;\n }\n this.loadingAdvancedTab = true;\n this.connectionStatus = \"connecting\";\n try {\n const data = await this.getAdvancedTabDataCallback();\n if (data) {\n if (data.serverName != null) {\n this.serverNameValue = data.serverName;\n this.#applyCreateDataFilesInKBFolderForServer();\n }\n this.serverInstances = data.serverInstances ?? this.serverInstances;\n this.collations = data.collations ?? this.collations;\n this.authenticationTypes =\n data.authenticationTypes ?? this.authenticationTypes;\n this.defaultCollation = data.defaultCollation ?? this.defaultCollation;\n this.authenticationTypeValue =\n data.authenticationTypes?.[0]?.id ?? this.authenticationTypeValue;\n this.connectionStatus = \"success\";\n } else {\n this.connectionStatus = \"failed\";\n }\n } catch {\n this.connectionStatus = \"failed\";\n } finally {\n this.loadingAdvancedTab = false;\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 // Seed the checked map from the data's checked property so that\n // initially checked items render as checked on first load.\n if (\n !this.#frontEndsCheckedMap.has(this.#selectedPrototypingEnvironmentId)\n ) {\n const checkedIds = updatedFrontEnds\n .filter(fe => fe.checked)\n .map(fe => fe.value || fe.id);\n\n if (checkedIds.length > 0) {\n this.#frontEndsCheckedMap.set(\n this.#selectedPrototypingEnvironmentId,\n checkedIds\n );\n }\n }\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 \"dialog-header-with-border\": !this.isAdvanced,\n \"dialog-header\": this.isAdvanced,\n \"header\": true,\n \"header-one-col\": true,\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 onInput={this.#kbNameInputHandler}\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.canSetLocation && (\n <div class=\"location-wrapper\">\n <label class=\"label location-label\">\n {this.#componentLocale.header.kbLocation}\n </label>\n <ch-radio-group-render\n class=\"radio-group\"\n model={this.#locationModeModel}\n value={LOCATION_MODE_DEFAULT}\n onChange={this.#locationModeChangeHandler}\n ref={(el: HTMLChRadioGroupRenderElement) =>\n (this.#locationModeEl = el as HTMLChRadioGroupRenderElement)\n }\n ></ch-radio-group-render>\n\n {this.locationMode === LOCATION_MODE_CUSTOM && (\n <div class=\"location-custom-wrapper\">\n <div class=\"location-field\">\n <ch-edit\n class=\"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={\n this.#componentLocale.header.selectLocationButton\n }\n title={this.#componentLocale.header.selectLocationButton}\n part=\"button-select-location\"\n onClick={this.#selectLocationHandler}\n >\n <ch-image class=\"icon-m\" src={SYSTEM_ICON}></ch-image>\n </button>\n </div>\n )}\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={this.#tabSelectionChangedHandler}\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\"\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 \"footer\": true,\n \"dialog-footer-with-border\": true,\n \"spacing-body-block-end\": true,\n \"spacing-body-inline\": true\n }}\n >\n {this.connectionStatus && (\n <span\n class={{\n \"connection-status\": true,\n [`connection-status--${this.connectionStatus}`]: true\n }}\n part={`connection-status connection-status-${this.connectionStatus}`}\n >\n {\n this.#componentLocale.footer.connectionStatus[\n this.connectionStatus\n ]\n }\n </span>\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 disabled={\n this.connectionStatus === \"failed\" ||\n this.connectionStatus === \"connecting\" ||\n this.#sqlAuthMissingCredentials()\n }\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 creationMode: CreationMode;\n}\n\nexport type CreationMode = \"basic\" | \"advanced\";\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\nexport type BrowseForMoreCallback = () => Promise<string>;\n\nexport type CollationsForInstanceResult = {\n collations: GxOption[];\n defaultCollation: string;\n};\n\nexport type GetCollationsForInstanceCallback = (\n serverInstance: string,\n authType?: string,\n userName?: string,\n password?: string\n) => Promise<CollationsForInstanceResult | undefined>;\n\nexport interface AdvancedTabData {\n serverName?: string;\n serverInstances?: GxOption[];\n collations?: GxOption[];\n authenticationTypes?: GxOption[];\n defaultCollation?: string;\n}\n\nexport type GetAdvancedTabDataCallback = () => Promise<\n AdvancedTabData | undefined\n>;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAAA,MAAMA,IAAW;;;;;;;;;;;;;;;;;ACkCjB,MAAMC,KAA8B,EAClC,qBACA,kBACA,sBACA,oBACA,gBACA,oBACA,iBACA;;AAGF,MAAMC,KAAuC;;AAC7C,MAAMC,KAA2B;;AACjC,MAAMC,KAA+B;;AACrC,MAAMC,KAAuC;;AAE7C,MAAMC,KAAcC,EAAY;EAC9BC,UAAU;EACVC,MAAM;EACNC,WAAW;;;AAGb,MAAMC,KAAeJ,EAAY;EAC/BC,UAAU;EACVC,MAAM;EACNC,WAAW;;;AAGb,MAAME,KAAgBL,EAAY;EAChCC,UAAU;EACVC,MAAM;EACNC,WAAW;;;AAGb,MAAMG,KAAwB;;AAC9B,MAAMC,KAAuB;;AAE7B,MAAMC,KAA+B;;AAErC,MAAMC,KAA6B;;AACnC,MAAMC,KAAgC;;MAQzBC,KAAU;;;IACrBC,EAAAC,IAAAC,MAAuC;;;;;QAKvCC,EAAAF,IAAAC,WAAA;;;;;QAKAE,EAAAH,IAAAC,MAAuB,IAAIG;IAC3BC,EAAAL,IAAAC,WAAA;IACAK,EAAAN,IAAAC,WAAA;IACAM,EAAAP,IAAAC,MAAgBO,EAAa;IAC7BC,EAAAT,IAAAC,MAA6B;yEAK7BS,EAAAV,IAAAC,WAAA;IACAU,EAAAX,IAAAC,WAAA;IACAW,EAAAZ,IAAAC,WAAA;IACAY,EAAAb,IAAAC,WAAA;IACAa,EAAAd,IAAAC,WAAA;IACAc,EAAAf,IAAAC,WAAA;IACAe,EAAAhB,IAAAC,WAAA;IACAgB,EAAAjB,IAAAC,WAAA;IACAiB,EAAAlB,IAAAC,WAAA;IACAkB,EAAAnB,IAAAC,MAAwB;IACxBmB,EAAApB,IAAAC,MAAgC;IAChCoB,EAAArB,IAAAC,WAAA;IACAqB,EAAAtB,IAAAC,WAAA;IACAsB,EAAAvB,IAAAC,WAAA;IACAuB,EAAAxB,IAAAC,WAAA;IACAwB,EAAAzB,IAAAC,WAAA;IACAyB,EAAA1B,IAAAC,WAAA;IACA0B,EAAA3B,IAAAC,WAAA;IAEA2B,EAAA5B,IAAAC,WAAA;IAkUA4B,EAAA7B,IAAAC,OAA+B6B,KAC7B,GAAGnC,KAAuBmC,MAAM,QAANA,WAAM,IAANA,IAAU;IAEtCC,EAAA/B,IAAAC,OAAuB+B;;MACrB,MAAMC,KAAeC,IAAAF,EAAEG,YAAM,QAAAD,WAAA,IAAAA,KAAIE,IAAAC,EAAApC,MAAIc,GAAA,UAAU,QAAAqB,WAAA,aAAAA,EAAEE;MACjDrC,KAAKsC,oBAAoBF,EAAApC,MAAI4B,GAAA,KAA4BW,KAAhCvC,MAAiCgC;AAAY;IAGxEQ,EAAAzC,IAAAC,OAA6B+B;;MAC3B/B,KAAKsC,qBAAqBL,IAAAF,EAAEG,YAAM,QAAAD,WAAA,IAAAA,KAChCE,IAAAC,EAAApC,MAAIY,GAAA,UAAgB,QAAAuB,WAAA,aAAAA,EAAEE;AAAgB;IAG1CI,EAAA1C,IAAAC,OAAkC0C,MAChCX;MAEA/B,KAAK2C,0BAA2BZ,MAAyB,QAAzBA,WAAC,aAADA,EAA2BG;MAC3DlC,KAAK4C,aAAa;MAClB5C,KAAK6C,mBAAmBC;MACxB9C,KAAK+C,mBAAmBD;YAClBV,EAAApC,MAAIgD,IAAA,KAAoCT,KAAxCvC;AAA0C;IAGlDiD,EAAAlD,IAAAC,OAA6B0C;;MAC3B1C,KAAKkD,iBAAgBf,KAAAF,IAAAG,EAAApC,MAAI0B,GAAA,UAAY,QAAAO,WAAA,aAAAA,EAAEI,WAAK,QAAAF,WAAA,IAAAA,IAAI;MAChDnC,KAAKmD,iBAAgBC,KAAAC,IAAAjB,EAAApC,MAAIoB,GAAA,UAAY,QAAAiC,WAAA,aAAAA,EAAEhB,WAAK,QAAAe,WAAA,IAAAA,IAAI;YAC1ChB,EAAApC,MAAIgD,IAAA,KAAoCT,KAAxCvC;AAA0C;IAGlDsD,EAAAvD,IAAAC,OAAwB0C;MACtB,KAAK1C,KAAKuD,uBAAuB;QAC/B;;MAEFvD,KAAKwD,0BAA0B;MAC/B;QACE,MAAMC,UAAyBzD,KAAKuD;QACpC,IAAIE,GAAkB;UACpBzD,KAAK0D,kBAAkBD;UACvB,IAAIrB,EAAApC,MAAIwB,GAAA,MAAgB;YACtBY,EAAApC,MAAIwB,GAAA,KAAea,QAAQoB;;gBAEvBrB,EAAApC,MAAI2D,GAAA,KAA0BpB,KAA9BvC,MACJ,IAAI4D,YAAoB,UAAU;YAAE1B,QAAQuB;;;QAGhD,OAAOI,I;QAEP7D,KAAKwD,0BAA0B;;;IAInCG,EAAA5D,IAAAC,OAA4B0C,MAC1BX;;MAEA,MAAM0B,KACJxB,IAACF,MAAyB,QAAzBA,WAAC,aAADA,EAA2BG,YAAM,QAAAD,WAAA,IAAAA,KAClCE,IAACJ,EAAE+B,YAA2B,QAAA3B,WAAA,aAAAA,EAAEE;MAClCrC,KAAK0D,kBAAkBD,MAAgB,QAAhBA,WAAgB,IAAhBA,IAAoB;MAC3CrB,EAAApC,MAAI+D,GAAA,KAAyCxB,KAA7CvC;YACMoC,EAAApC,MAAIgD,IAAA,KAAoCT,KAAxCvC;AAA0C;IAGlDgE,EAAAjE,IAAAC,OACEiE;;MAEA,KAAKA,GAAY;QACf,OAAO;;MAET,IAAIA,EAAWC,kBAAkBpF,GAAiBoF,eAAe;QAC/D,OAAO;;MAET,MAAMC,MAAWlC,IAAAjC,KAAKoE,qBAAe,QAAAnC,WAAA,IAAAA,IAAI,IAAIoC,MAC3CC;QAAC,IAAArC;QAAI,SAAAA,IAAAqC,EAAEC,WAAK,QAAAtC,WAAA,aAAAA,EAAEiC,mBAAkBD,EAAWC;AAAa;MAE1D,OAAOC,IAAU,UAAU;AAAQ;IAGrCK,EAAAzE,IAAAC,OAAqC;MACnC,MAAMyE,IAAOrC,EAAApC,MAAIgE,GAAA,KAAgBzB,KAApBvC,MAAqBA,KAAK0D;MACvC,OAAOe,MAAS,aAAaA,MAAS,YAAYA,MAAS;AAAO;IAGpEC,EAAA3E,IAAAC,OAA6B;MAC3B,MAAM2E,IAAW3E,KAAK2C;MACtB,KAAKgC,KAAYA,MAAa9F,IAA8B;QAC1D,OAAO;;MAET,QAAQmB,KAAKkD,kBAAkBlD,KAAKmD;AAAa;IAGnDY,EAAAhE,IAAAC,OAA2C;MACzC,MAAMyE,IAAOrC,EAAApC,MAAIgE,GAAA,KAAgBzB,KAApBvC,MAAqBA,KAAK0D;MACvC,IAAIe,MAAS,WAAWA,MAAS,WAAW;QAC1CzE,KAAK4E,4BAA4B;aAC5B,IAAIH,MAAS,UAAU;QAC5BzE,KAAK4E,4BAA4B;;;IAIrC5B,GAAAjD,IAAAC,OAAsC0C;;MACpC,MAAMe,IAAmBzD,KAAK0D;MAC9B,KACGD,MACAzD,KAAK6E,oCACN7E,KAAK+C,qBAAqB,cAC1B;QACA;;MAEF,MAAM4B,IAAW3E,KAAK2C;MACtB,MAAMmC,IAAgBH,MAAa9F;MACnC,MAAMkG,IAAWD,IAAgBhC,aAAYb,IAAAG,EAAApC,MAAI0B,GAAA,UAAY,QAAAO,WAAA,aAAAA,EAAEI;MAC/D,MAAM2C,IAAWF,IAAgBhC,aAAYX,IAAAC,EAAApC,MAAIoB,GAAA,UAAY,QAAAe,WAAA,aAAAA,EAAEE;MAE/D,KAAKyC,KAAiBH,OAAcI,MAAaC,IAAW;QAC1D;;MAGFhF,KAAK+C,mBAAmB;MACxB;QACE,MAAMkC,UAAejF,KAAK6E,iCACxBpB,GACAkB,GACAI,GACAC;QAEF,IAAIC,GAAQ;UACVjF,KAAK4C,cAAaS,IAAA4B,EAAOrC,gBAAU,QAAAS,WAAA,IAAAA,IAAI;UACvCrD,KAAK6C,oBAAmBO,IAAA6B,EAAOpC,sBAAgB,QAAAO,WAAA,IAAAA,IAAIN;UACnD9C,KAAK+C,mBAAmB;eACnB;UACL/C,KAAK4C,aAAa;UAClB5C,KAAK6C,mBAAmBC;UACxB9C,KAAK+C,mBAAmB;;QAE1B,OAAAmC;QACAlF,KAAK4C,aAAa;QAClB5C,KAAK6C,mBAAmBC;QACxB9C,KAAK+C,mBAAmB;;;IAI5BoC,GAAApF,IAAAC,OACEoF;MAEAC,EAAArF,MAAII,GAAqCgF,EAAMlD,QAAgB;MAC/DE,EAAApC,MAAIsF,IAAA,KAAgB/C,KAApBvC;MACAoC,EAAApC,MAAIuF,IAAA,KAAiBhD,KAArBvC;AAAuB;IAGzBwF,GAAAzF,IAAAC,OAAwC0C;YAChCN,EAAApC,MAAIyF,IAAA,KAA4BlD,KAAhCvC;MACNoC,EAAApC,MAAIsF,IAAA,KAAgB/C,KAApBvC;AAAsB;IAGxB0F,GAAA3F,IAAAC,OAAiC;MAC/BqF,EAAArF,MAAIK,GAAyB+B,EAAApC,MAAIa,GAAA,KAAewB,OAAK;AAAA;IAGvDsD,GAAA5F,IAAAC,OAAkB;MAChB,MAAM4F,IACJ5F,KAAK2C,4BAA4B9D;MAEnC,OAAO,EACLgH,EAAA;QAASC,OAAM;QAAkBC,MAAK;SACpCF,EAAA;QAAQC,OAAM;SACZD,EAAA;QAAKC,OAAM;SACTD,EAAA;QAAIC,OAAM;SACP1D,EAAApC,MAAIC,GAAA,KAAkB+F,YAAYC,aAKzCJ,EAAA;QAAKC,OAAM;SACTD,EAAA;QAAKC,OAAM;SACTD,EAAA;QAAKC,OAAM;SACTD,EAAA;QAAMC,OAAM;SACT1D,EAAApC,MAAIC,GAAA,KAAkB+F,YAAYE,kBAErCL,EAAA;QAAMC,OAAM;QAA+B,eAAa;WAG1DD,EAAA;QAAKC,OAAM;SACTD,EAAA;QAAKC,OAAM;SACTD,EAAA;QAAOC,OAAM;QAAQK,SAAQ;SAC1B/D,EAAApC,MAAIC,GAAA,KAAkB+F,YAAY/B,WAAWM,QAEhDsB,EAAA;QAAKC,OAAM;SACTD,EAAA;QACEC,OAAM;QACNzD,OAAOrC,KAAK0D;QACZ0C,KAAMC,KACHhB,EAAArF,MAAIwB,GAAiB6E,GAAiC;QAEzDC,IAAG;QACHP,MAAK;QACLQ,OAAOvG,KAAKwG;QACZC,SAAO;QACPC,iBAAiBC,EAAOC;QACxBC,SAASzE,EAAApC,MAAI2D,GAAA;QACbmD,UAAU1E,EAAApC,MAAI2D,GAAA;UAEhBkC,EAAA;QACEC,OAAM;QAAkC,cAEtC1D,EAAApC,MAAIC,GAAA,KAAkB+F,YAAY/B,WAAW8C;QAE/ChB,MAAK;QACLiB,SAAS5E,EAAApC,MAAIsD,GAAA;SAEbuC,EAAA;QAAUC,OAAM;QAASmB,KAAK1H;WAC5BS,KAAKwD,2BACLqC,EAAA;QACEC,OAAM;QACNoB,eAAe;QACfC,YAAW;QACXC,aAAY;QACZC,OAAOV,EAAOW,gBAAgBD;SAG5BjF,EAAApC,MAAIC,GAAA,KAAkB+F,YAAY/B,WAC/B8C,kBAMZ3E,EAAApC,MAAIuH,IAAA,KAAuBhF,KAA3BvC,MAA4BoC,EAAApC,MAAIwB,GAAA,QAGnCqE,EAAA;QAAKC,OAAM;SACTD,EAAA;QAAOC,OAAM;QAAQK,SAAQ;SAC1B/D,EAAApC,MAAIC,GAAA,KAAkB+F,YAAYwB,aAAajD,QAElDsB,EAAA;QACEC,OAAM;QACNzD,OAAOrC,KAAKsC;QACZgE,IAAG;QACHP,MAAK;QACLc,SAASzE,EAAApC,MAAIwC,GAAA;QACb4D,KAAMC,KACHhB,EAAArF,MAAIY,GAAmByF,GAAuB;UAIlDjE,EAAApC,MAAIuH,IAAA,KAAuBhF,KAA3BvC,MAA4BoC,EAAApC,MAAIY,GAAA,QAGnCiF,EAAA;QAAKC,OAAM;SACTD,EAAA;QAAOC,OAAM;QAAQK,SAAQ;SAC1B/D,EAAApC,MAAIC,GAAA,KAAkB+F,YAAYyB,UAAUlD,QAE/CsB,EAAA;QACEC,OAAM;QACN4B,WACG1H,KAAK0D,mBAAmB1D,KAAK4C,WAAW+E,WAAW;QAEtDC,aACE5H,KAAK4C,WAAW+E,WAAW,IACvBvF,EAAApC,MAAIC,GAAA,KAAkB+F,YAAYyB,UAC/BI,sBACH;QAENxF,OAAOrC,KAAK6C;QACZuD,KAAMC,KACHhB,EAAArF,MAAIU,GAAgB2F,GAAiC;QAExDE,OAAOvG,KAAK8H;QACZxB,IAAG;QACHP,MAAK;UAEN3D,EAAApC,MAAIuH,IAAA,KAAuBhF,KAA3BvC,MAA4BoC,EAAApC,MAAIU,GAAA,QAGnCmF,EAAA;QACEC,OAAM;QACNiC,cAAa;QACb1F,OAAOrC,KAAK4E,4BAA4B,SAAS9B;QACjD4E,UAAUtF,EAAApC,MAAIwE,GAAA,KAAmCjC,KAAvCvC;QACVgI,SACE5F,EAAApC,MAAIC,GAAA,KAAkB+F,YAAYiC;QAEpClC,MAAK;QACLO,IAAG;QACHF,KAAMC,KACHhB,EAAArF,MAAIW,GACH0F,GAA2B;YAMrCR,EAAA;QAAKC,OAAM;SACTD,EAAA;QAAKC,OAAM;SACTD,EAAA;QAAMC,OAAM;SACT1D,EAAApC,MAAIC,GAAA,KAAkB+F,YAAYkC,sBAErCrC,EAAA;QAAMC,OAAM;QAA+B,eAAa;WAG1DD,EAAA;QAAKC,OAAM;SACTD,EAAA;QAAKC,OAAM;SACTD,EAAA;QAAOC,OAAM;QAAQK,SAAQ;SAC1B/D,EAAApC,MAAIC,GAAA,KAAkB+F,YAAYmC,mBAAmB5D,QAExDsB,EAAA;QACEC,OAAM;QACN4B,UAAU1H,KAAKoI,oBAAoBT,WAAW;QAC9CC,aACE5H,KAAKoI,oBAAoBT,WAAW,IAChCvF,EAAApC,MAAIC,GAAA,KAAkB+F,YAAYmC,mBAC/BN,sBACH;QAENxF,OAAOrC,KAAK2C;QACZyD,KAAMC,KACHhB,EAAArF,MAAIS,GACH4F,GAAiC;QAErCE,OAAOvG,KAAKqI;QACZ/B,IAAG;QACHP,MAAK;QACLc,SACE7G,KAAKoI,oBAAoBT,SAAS,IAC9BvF,EAAApC,MAAIyC,GAAA,OACJK;UAGPV,EAAApC,MAAIuH,IAAA,KAAuBhF,KAA3BvC,MAA4BoC,EAAApC,MAAIS,GAAA,QAGlCmF,IACCC,EAAA;QAAKC,OAAM;SACTD,EAAA;QAAKC,OAAM;SACTD,EAAA;QAAOC,OAAM;QAAQK,SAAQ;SAC1B/D,EAAApC,MAAIC,GAAA,KAAkB+F,YAAYjB,SAASR,QAE9CsB,EAAA;QACEC,OAAM;QACNzD,OAAOrC,KAAK+E;QACZuB,IAAG;QACHP,MAAK;QACLK,KAAMC,KACHhB,EAAArF,MAAI0B,GAAe2E,GAAuB;QAE7CQ,SAASzE,EAAApC,MAAIiD,GAAA;QACbqF,UAAU3B,EAAOC;UAElBxE,EAAApC,MAAIuH,IAAA,KAAuBhF,KAA3BvC,MAA4BoC,EAAApC,MAAI0B,GAAA,QAGnCmE,EAAA;QAAKC,OAAM;SACTD,EAAA;QAAOC,OAAM;QAAQK,SAAQ;SAC1B/D,EAAApC,MAAIC,GAAA,KAAkB+F,YAAYhB,SAAST,QAE9CsB,EAAA;QACEC,OAAM;QACNyC,MAAK;QACLC,oBAAkB;QAClBnG,OAAOrC,KAAKgF;QACZsB,IAAG;QACHP,MAAK;QACLK,KAAMC,KACHhB,EAAArF,MAAIoB,GAAeiF,GAAuB;QAE7CQ,SAASzE,EAAApC,MAAIiD,GAAA;QACbqF,UAAU3B,EAAOC;UAElBxE,EAAApC,MAAIuH,IAAA,KAAuBhF,KAA3BvC,MAA4BoC,EAAApC,MAAIoB,GAAA,QAGnCyE,EAAA;QACEC,OAAM;QACNiC,cAAa;QACb1F,OAAM;QACN2F,SAAS5F,EAAApC,MAAIC,GAAA,KAAkB+F,YAAYyC;QAC3C1C,MAAK;QACLO,IAAG;QACHF,KAAMC,KACHhB,EAAArF,MAAIuB,GAAmB8E,GAA2B;QAErDqB,UAAQ;YAIZ7B,EAAA;QAAKC,OAAM;QAAqBC,MAAK;SACnCF,EAAA;QACEC,OAAM;QACNmB,KAAK3H;QACLiJ,MAAK;UAGP1C,EAAA;QAAKC,OAAM;SACTD,EAAA;QAAMC,OAAM;SAER1D,EAAApC,MAAIC,GAAA,KAAkB+F,YACnB0C,0BAGP7C,EAAA;QAAMC,OAAM;SAER1D,EAAApC,MAAIC,GAAA,KAAkB+F,YACnB2C;AAUtB;IAGHC,GAAA7I,IAAAC,OAAe,MACN,EACL6F,EAAA;MAASC,OAAM;OACbD,EAAA;;MAEEC,OAAM;OAEND,EAAA;MAAOC,OAAM;MAAQK,SAAQ;OAC1B/D,EAAApC,MAAIC,GAAA,KAAkB4I,SAASC,kBAAkBvE,QAGpDsB,EAAA;MACES,IAAG;MACHR,OAAM;MACNC,MAAK;MACL2B,UAAU1H,KAAK+I,mBAAmBpB,WAAW;MAC7CC,aACE5H,KAAK+I,mBAAmBpB,WAAW,IAC/BvF,EAAApC,MAAIC,GAAA,KAAkB4I,SAASC,kBAC5BjB,sBACH;MAENxF,OAAOrC,KAAKgJ;MACZzC,OAAOvG,KAAKiJ;MACZpC,SACE7G,KAAK+I,mBAAmBpB,SAAS,IAC7BvF,EAAApC,MAAIwF,IAAA,OACJ1C;MAENsD,KAAMC,KACHhB,EAAArF,MAAIsB,GAAwB+E,GAAiC;QAGjEjE,EAAApC,MAAIuH,IAAA,KAAuBhF,KAA3BvC,MAA4BoC,EAAApC,MAAIsB,GAAA,QAGnCuE,EAAA;;MAEEC,OAAM;OAEND,EAAA;MAAOC,OAAM;MAAQK,SAAQ;OAC1B/D,EAAApC,MAAIC,GAAA,KAAkB4I,SAASK,sBAAsB3E,QAExDsB,EAAA;MACEC,OAAM;MACN4B,UAAU1H,KAAKmJ,uBAAuBxB,WAAW;MACjDC,aACE5H,KAAKmJ,uBAAuBxB,WAAW,IACnCvF,EAAApC,MAAIC,GAAA,KAAkB4I,SAASK,sBAC5BrB,sBACH;MAENxF,OAAOrC,KAAKoJ;MACZhD,KAAMC,KACHhB,EAAArF,MAAIyB,GACH4E,GAAiC;MAErCE,OAAOvG,KAAKqJ;MACZ/C,IAAG;MACHP,MAAK;QAEN3D,EAAApC,MAAIuH,IAAA,KAAuBhF,KAA3BvC,MAA4BoC,EAAApC,MAAIyB,GAAA,SAIrCoE,EAAA;MACEC,OAAM;OAGND,EAAA;;MAEEC,OAAM;OAEL1D,EAAApC,MAAIC,GAAA,KAAkB4I,SAASS,QAAQC,eAE1C1D,EAAA;MAAKC,OAAM;OACTD,EAAA;;MAEEC,OAAM;OAEND,EAAA;MAAOC,OAAM;MAAQK,SAAQ;OAEzB/D,EAAApC,MAAIC,GAAA,KAAkB4I,SAASS,QAAQE,uBACpCjF,QAGPsB,EAAA;MACEC,OAAM;MACN4B,UAAU1H,KAAKyJ,+BAA+B9B,WAAW;MACzDC,aACE5H,KAAKyJ,+BAA+B9B,WAAW,IAC3CvF,EAAApC,MAAIC,GAAA,KAAkB4I,SAASS,QAC5BE,uBAAuB3B,sBAC1B;MAENxF,OAAOD,EAAApC,MAAII,GAAA;MACXgG,KAAMC,KACHhB,EAAArF,MAAIqB,GACHgF,GAAiC;MAErCE,OAAOvG,KAAK0J;MACZ7C,SAASzE,EAAApC,MAAImF,IAAA;MACbY,MAAK;MACLO,IAAG;QAEJlE,EAAApC,MAAIuH,IAAA,KAAuBhF,KAA3BvC,MAA4BoC,EAAApC,MAAIqB,GAAA,QAGnCwE,EAAA;;MAEEC,OAAM;OAEND,EAAA;MAAOC,OAAM;MAAQK,SAAQ;OAC1B/D,EAAApC,MAAIC,GAAA,KAAkB4I,SAASS,QAAQK,WAAWpF,QAErDsB,EAAA;MACEC,OAAM;MACN4B,UAAU1H,KAAK4J,mBAAmBjC,WAAW;MAC7CC,aACE5H,KAAK4J,mBAAmBjC,WAAW,IAC/BvF,EAAApC,MAAIC,GAAA,KAAkB4I,SAASS,QAAQK,WACpC9B,sBACH;MAENxF,OAAOD,EAAApC,MAAIK,GAAA;MACX+F,KAAMC,KACHhB,EAAArF,MAAIa,GAAiBwF,GAAiC;MAEzDQ,SAASzE,EAAApC,MAAI0F,IAAA;MACba,OAAOvG,KAAK6J;MACZ9D,MAAK;MACLO,IAAG;QAEJlE,EAAApC,MAAIuH,IAAA,KAAuBhF,KAA3BvC,MAA4BoC,EAAApC,MAAIa,GAAA,UAKvCgF,EAAA;MACEC,OAAM;OAGND,EAAA;MAAIC,OAAM;OACP1D,EAAApC,MAAIC,GAAA,KAAkB4I,SAASiB,SAASC,gBAE3ClE,EAAA;MAAKC,OAAM;OACRkE,EACChK,KAAKiK,WACL7H,EAAApC,MAAIkK,IAAA,MACJ9H,EAAApC,MAAIE,GAAA,KAAsBiK,IACxB/H,EAAApC,MAAII,GAAA;;QAUhBgK,GAAArK,IAAAC,OAAmB;MACjB,IAAIA,KAAKqK,gBAAgB;QACvBrK,KAAKqK;;;IAITC,GAAAvK,IAAAC,OAAmB;;MACjB,MAAMuK,KACJtI,IAAAG,EAAApC,MAAIE,GAAA,KAAsBiK,IAAI/H,EAAApC,MAAII,GAAA,WAAmC,QAAA6B,WAAA,IAAAA,IACrE;MAEFjC,KAAKwK,eAAe;QAClBrC,qBAAoBhG,IAAAC,EAAApC,MAAIS,GAAA,UAAsB,QAAA0B,WAAA,aAAAA,EAAEE;QAChDoF,YAAWpE,IAAAjB,EAAApC,MAAIU,GAAA,UAAa,QAAA2C,WAAA,aAAAA,EAAEhB;QAC9BuC,+BAA6BxB,IAAAhB,EAAApC,MAAIW,GAAA,UAA6B,QAAAyC,WAAA,aAAAA,EAAEf;QAChEsH,aAAYzE,IAAA9C,EAAApC,MAAIa,GAAA,UAAc,QAAAqE,WAAA,aAAAA,EAAE7C;QAChCmF,eAAciD,IAAArI,EAAApC,MAAIY,GAAA,UAAgB,QAAA6J,WAAA,aAAAA,EAAEpI;QACpC4H,WAAWM;QACXG,aAAYC,IAAAvI,EAAApC,MAAIe,GAAA,UAAY,QAAA4J,WAAA,aAAAA,EAAEtI;QAC9BR,SAAQ+I,IAAAxI,EAAApC,MAAIc,GAAA,UAAU,QAAA8J,WAAA,aAAAA,EAAEvI;QACxB2C,WAAU6F,IAAAzI,EAAApC,MAAIoB,GAAA,UAAY,QAAAyJ,WAAA,aAAAA,EAAExI;QAC5BmH,yBAAwBsB,IAAA1I,EAAApC,MAAIqB,GAAA,UAA0B,QAAAyJ,WAAA,aAAAA,EAAEzI;QACxDyG,oBAAmBiC,IAAA3I,EAAApC,MAAIsB,GAAA,UAAqB,QAAAyJ,WAAA,aAAAA,EAAE1I;QAC9CoG,kBAAgBuC,IAAA5I,EAAApC,MAAIuB,GAAA,UAAgB,QAAAyJ,WAAA,aAAAA,EAAE3I;QACtC4B,aAAYgH,IAAA7I,EAAApC,MAAIwB,GAAA,UAAc,QAAAyJ,WAAA,aAAAA,EAAE5I;QAChC6G,wBAAuBgC,IAAA9I,EAAApC,MAAIyB,GAAA,UAAyB,QAAAyJ,WAAA,aAAAA,EAAE7I;QACtD0C,WAAUoG,IAAA/I,EAAApC,MAAI0B,GAAA,UAAY,QAAAyJ,WAAA,aAAAA,EAAE9I;QAC5B+I,cAAcpL,KAAKqL;SAClBC,MAAMC;QACPvL,KAAKwL,sBAAsBC,EACzBF,GACAvL,KAAKwL;AACN;AACD;;;QAKJjE,GAAAxH,IAAAC,OACE0L;;MAEA,SAAAvJ,KAAAF,IAAAjC,KAAKwL,yBAAmB,QAAAvJ,WAAA,aAAAA,EAAEkI,IAAIuB,MAAgB,QAAhBA,WAAgB,aAAhBA,EAAkBpF,SAAG,QAAAnE,WAAA,aAAAA,EAAEwJ,eACrDtI,IAAArD,KAAKwL,oBAAoBrB,IAAIuB,EAAiBpF,SAAG,QAAAjD,WAAA,aAAAA,EAAEuI,YACjD/F,EAAA;QACEC,OAAM;QACNoB,eAAewE;QACfvE,YAAYR,EAAOW,gBAAgBH;QACnCC,aAAaT,EAAOW,gBAAgBF;QACpCC,OAAOV,EAAOW,gBAAgBD;SAE7BrH,KAAKwL,oBAAoBrB,IAAIuB,EAAiBpF,IAAIsF;AAEtD;IAEH1B,GAAAnK,IAAAC,OACEoF;MAEA,MAAM2C,IAAgB3C,EAAMtB,OAAiCiE;MAC7D,MAAM8D,IAAUzG,EAAMlD,WAAW6F;MACjC3F,EAAApC,MAAI8L,IAAA,KAA2BvJ,KAA/BvC,MAAgC+H,GAAc8D;AAAQ;;;;;;QAQxDC,GAAA/L,IAAAC,OAA6B,CAAC+L,GAAoBF;MAChD,IAAIG,IAAe5J,EAAApC,MAAIE,GAAA,KAAsBiK,IAC3C/H,EAAApC,MAAII,GAAA;MAEN,KAAK4L,GAAc;;QAEjBA,IAAe;QACf5J,EAAApC,MAAIE,GAAA,KAAsBH,IACxBqC,EAAApC,MAAII,GAAA,MACJ4L;;MAGJ,IAAIH,GAAS;;QAEXG,EAAaC,KAAKF;aACb;;QAEL,MAAMG,IAAgBF,EAAaG,WAAU7F,KAAMA,MAAOyF;QAC1DK,EAAYJ,GAAcE;;;IAI9BzG,GAAA1F,IAAAC,OAA8B0C;MAC5B,IAAI1C,KAAKqM,oCAAoC;QAC3C,MAAMC,IAA8BlK,EAAApC,MAAIsB,GAAA,OACpCc,EAAApC,MAAIsB,GAAA,KAAsBe,QAC1BrC,KAAKgJ;QACT,MAAMuD,UAAavM,KAAKqM,mCACtBC;QAEF,IAAIC,GAAM;UACRvM,KAAKyJ,iCAAiC8C;;;;IAK5CjH,GAAAvF,IAAAC,OAAkB;MAChB,IAAIA,KAAKwM,wBAAwB;QAC/B,MAAMC,IACJrK,EAAApC,MAAIqB,GAAA,KAA2BgB;QACjC,MAAMiK,IAA8BlK,EAAApC,MAAIsB,GAAA,KAAsBe;QAC9D,MAAMqK,IACJ1M,KAAKwM,uBACHC,GACAH;QAEJI,EACGpB,MAAKrG;UACJ,IAAIA,EAAO0C,SAAS,GAAG;YACrB1C,IAAS0H,EAAgB1H,GAAQ7C,EAAApC,MAAIK,GAAA;YACrCgF,EAAArF,MAAIK,GAAyBuM,EAAgB3H,IAAO;YACpDjF,KAAK4J,qBAAqB3E;;wBAE1B7C,EAAApC,MAAIa,GAAA,KAAewB,QACjBD,EAAApC,MAAIK,GAAA,SAA2ByC,YAC3BV,EAAApC,MAAIK,GAAA,OACJL,KAAK4J,mBAAmB,GAAGtD;;YAGpCuG,OAAM;;;IAMbC,GAAA/M,IAAAC,OAA2B;MACzB,MAAM+M,IAAiB/M,KAAKoI,oBAAoB/D,MAC9C2I,KAAOA,EAAI1G,OAAOzH;MAEpB,IAAIkO,GAAgB;QAClB/M,KAAK2C,0BAA0B9D;;;IAInCoO,GAAAlN,IAAAC,OAAyC;;MAEvC,MAAMwL,IAAqC,EACzCpJ,EAAApC,MAAIa,GAAA,MACJuB,EAAApC,MAAIc,GAAA,MACJsB,EAAApC,MAAIqB,GAAA,MACJe,EAAApC,MAAIsB,GAAA,MACJc,EAAApC,MAAIyB,GAAA;MAEN+J,EAAoB0B,SAAQC;QAC1B,IAAIA,EAAmB7G,IAAI;UACzBtG,KAAKwL,oBAAoBzL,IAAIoN,EAAmB7G,IAAI;YAClD8G,WAAWD;YACXxB,UAAU;YACVC,SAAS9I;;;;AAGb;IAGJuK,GAAAtN,IAAAC,OAA4C;;MAE1C,MAAMwL,IAAqC,EACzCpJ,EAAApC,MAAIS,GAAA,MACJ2B,EAAApC,MAAIW,GAAA,MACJyB,EAAApC,MAAIwB,GAAA,MACJY,EAAApC,MAAIS,GAAA,MACJ2B,EAAApC,MAAIY,GAAA,MACJwB,EAAApC,MAAI0B,GAAA,MACJU,EAAApC,MAAIU,GAAA,MACJ0B,EAAApC,MAAIoB,GAAA,MACJgB,EAAApC,MAAIuB,GAAA;MAENiK,EAAoB0B,SAAQC;QAC1B,IAAIA,EAAmB7G,IAAI;UACzBtG,KAAKwL,oBAAoBzL,IAAIoN,EAAmB7G,IAAI;YAClD8G,WAAWD;YACXxB,UAAU;YACVC,SAAS9I;;;;AAGb;;;;;QAOJwK,GAAAvN,IAAAC,OAAyB;MACvBA,KAAKuN,yBAAyBjC,MAAKZ;QACjC,IAAIA,GAAY;UACd1K,KAAK0K,aAAaA;;;AAIpB;IAGJ8C,GAAAzN,IAAAC,OAA6B;MAC3BA,KAAKyN,eAAerL,EAAApC,MAAIgB,GAAA,KAAiBqB;AAAK;IAGhDqL,GAAA3N,IAAAC,OACEoF;MAMApF,KAAKqL,cAAcjG,EAAMlD,OAAOyL;MAChC,IAAIvI,EAAMlD,OAAOyL,kBAAkB/N,IAAuB;QACxD,KAAKI,KAAK4N,sBAAsB;UAC9B5N,KAAK4N,uBAAuB;UAC5BxL,EAAApC,MAAI6N,IAAA,KAAqBtL,KAAzBvC;;aAEG;QACLA,KAAK+C,mBAAmBD;;;IAI5B+K,GAAA9N,IAAAC,OAAuB0C;;MACrB,KAAK1C,KAAK8N,8BAA8B9N,KAAK+N,oBAAoB;QAC/D;;MAEF/N,KAAK+N,qBAAqB;MAC1B/N,KAAK+C,mBAAmB;MACxB;QACE,MAAMiL,UAAahO,KAAK8N;QACxB,IAAIE,GAAM;UACR,IAAIA,EAAK/J,cAAc,MAAM;YAC3BjE,KAAK0D,kBAAkBsK,EAAK/J;YAC5B7B,EAAApC,MAAI+D,GAAA,KAAyCxB,KAA7CvC;;UAEFA,KAAKoE,mBAAkBnC,IAAA+L,EAAK5J,qBAAe,QAAAnC,WAAA,IAAAA,IAAIjC,KAAKoE;UACpDpE,KAAK4C,cAAaT,IAAA6L,EAAKpL,gBAAU,QAAAT,WAAA,IAAAA,IAAInC,KAAK4C;UAC1C5C,KAAKoI,uBACH/E,IAAA2K,EAAK5F,yBAAmB,QAAA/E,WAAA,IAAAA,IAAIrD,KAAKoI;UACnCpI,KAAK6C,oBAAmBO,IAAA4K,EAAKnL,sBAAgB,QAAAO,WAAA,IAAAA,IAAIpD,KAAK6C;UACtD7C,KAAK2C,2BACHgI,KAAAF,KAAAvF,IAAA8I,EAAK5F,yBAAmB,QAAAlD,WAAA,aAAAA,EAAG,QAAE,QAAAuF,WAAA,aAAAA,EAAEnE,QAAE,QAAAqE,WAAA,IAAAA,IAAI3K,KAAK2C;UAC5C3C,KAAK+C,mBAAmB;eACnB;UACL/C,KAAK+C,mBAAmB;;QAE1B,OAAA6H;QACA5K,KAAK+C,mBAAmB;;QAExB/C,KAAK+N,qBAAqB;;;;;;;;QAS9BxI,GAAAxF,IAAAC,OAAmB0C;MACjB,MAAMuL,UAAyBjO,KAAKkO,qBAClC9L,EAAApC,MAAII,GAAA;MAEN,KAAI6N,MAAgB,QAAhBA,WAAgB,aAAhBA,EAAkBtG,UAAS,GAAG;QAChC3H,KAAKiK,YAAYgE;;;gBAIjB,KACG7L,EAAApC,MAAIE,GAAA,KAAsBiO,IAAI/L,EAAApC,MAAII,GAAA,OACnC;UACA,MAAMgO,IAAaH,EAChBI,QAAOC,KAAMA,EAAGzC,UAChB0C,KAAID,KAAMA,EAAGjM,SAASiM,EAAGhI;UAE5B,IAAI8H,EAAWzG,SAAS,GAAG;YACzBvF,EAAApC,MAAIE,GAAA,KAAsBH,IACxBqC,EAAApC,MAAII,GAAA,MACJgO;;;;;gCAlpC+B;8BACF;mCACK;6BACP;wBACL5O;;+BAMD,IAAIW;;yBAEF;yBACA;+BAGU;4CASgB;;sBAEzB;mCASgB;;2CAEQ;2CACA;;gDAEK;;2BAExB;wCASgB;2BACpB;+CAC2B;;uBAE/BR;;0BAYY;;;qCAiBmB;;8BAUJ;;;;sBA8B5B;;;;0CAoBwC;8BAcpB;wBAcT;;;;kCAyBa;;;EApLtD,wBAAA6O,CAAyBC;IACvB,IAAIA,MAAQ,QAARA,WAAQ,aAARA,EAAU9G,QAAQ;MACpB3H,KAAKqI,mCACHqG,EAA8BD;MAChCzO,KAAK2C,0BAA0BiK,EAAgB6B;;;EAOnD,eAAAE,CAAgBF;IACd,MAAKA,MAAQ,QAARA,WAAQ,aAARA,EAAU9G,SAAQ;MACrB3H,KAAK8H,0BAA0B;MAC/B;;IAEF9H,KAAK8H,0BAA0B4G,EAA8BD;;EAW/D,oBAAAG,CAAqBH;IACnB,MAAKA,MAAQ,QAARA,WAAQ,aAARA,EAAU9G,SAAQ;MACrB3H,KAAKwG,+BAA+B;MACpC;;IAEFxG,KAAKwG,+BAA+BkI,EAA8BD;;EA+CpE,uBAAAI,CAAwBJ;IACtB,IAAIA,MAAQ,QAARA,WAAQ,aAARA,EAAU9G,QAAQ;MACpB3H,KAAK6J,kCACH6E,EAA8BD;MAChC,MAAMxJ,IAAS0H,EAAgB8B,GAAUrM,EAAApC,MAAIK,GAAA;MAC7CgF,EAAArF,MAAIK,GAAyBuM,EAAgB3H,IAAO;;;EA6CxD,mCAAA6J,CAAoCL;IAClC,IAAIA,MAAQ,QAARA,WAAQ,aAARA,EAAU9G,QAAQ;MACpB3H,KAAK0J,uCACHgF,EAA8BD;MAChCpJ,EAAArF,MAAII,GAAqCwM,EAAgB6B,IAAS;MAClErM,EAAApC,MAAIuF,IAAA,KAAiBhD,KAArBvC;;;EASJ,uBAAA+O,CAAwBN;IACtB,IAAIA,MAAQ,QAARA,WAAQ,aAARA,EAAU9G,QAAQ;MACpB3H,KAAKiJ,kCACHyF,EAA8BD;MAChCzO,KAAKgJ,iCAAiC4D,EAAgB6B;MACtDrM,EAAApC,MAAIyF,IAAA,KAA4BlD,KAAhCvC;;;EAkCJ,2BAAAgP,CAA4BP;IAC1B,IAAIA,MAAQ,QAARA,WAAQ,aAARA,EAAU9G,QAAQ;MACpB3H,KAAKqJ,sCACHqF,EAA8BD;MAChCzO,KAAKoJ,qCAAqCwD,EAAgB6B;;;EAS9D,uBAAMQ;;IACJ5J,EAAArF,MAAIC,SAA0BiP,EAAOC,oBAAoBnP,KAAKqG,KAAG;IACjErG,KAAKsC,oBAAoBF,EAAApC,MAAI4B,GAAA,KAA4BW,KAAhCvC,MAAiCA,KAAK6B;IAC/D,IAAI7B,KAAKwH,cAAc;MACrBxH,KAAKsC,oBAAoBtC,KAAKwH;;IAEhCxH,KAAKkD,iBAAgBjB,IAAAjC,KAAK+E,cAAQ,QAAA9C,WAAA,IAAAA,IAAI;IACtCjC,KAAKmD,iBAAgBhB,IAAAnC,KAAKgF,cAAQ,QAAA7C,WAAA,IAAAA,IAAI;IACtCkD,EAAArF,MAAIQ,GAAoB,EACtB;MACE8F,IAAI3G;MACJP,MAAMgD,EAAApC,MAAIC,GAAA,KAAkB4I,SAASuG;OAEvC;MACE9I,IAAI1G;MACJR,MAAMgD,EAAApC,MAAIC,GAAA,KAAkB+F,YAAYoJ;SAE3C;IAED/J,EAAArF,MAAIiB,GAAsB,EACxB;MACEoB,OAAO7C;MACPwI,SAAS5F,EAAApC,MAAIC,GAAA,KAAkBoP,OAAOC;OAExC;MACEjN,OAAO5C;MACPuI,SAAS5F,EAAApC,MAAIC,GAAA,KAAkBoP,OAAOE;SAEzC;;EAGH,iBAAAC;IACExP,KAAK6O,wBAAwB7O,KAAK4J;IAClC5J,KAAK8O,oCACH9O,KAAKyJ;IAEPzJ,KAAK+O,wBAAwB/O,KAAK+I;IAClC/I,KAAKgP,4BAA4BhP,KAAKmJ;;EAGxC,gBAAAsG;IACErN,EAAApC,MAAIiN,IAAA,KAAuC1K,KAA3CvC;;EAGF,kBAAA0P;IACE,IAAI1P,KAAK4N,yBAAyBxL,EAAApC,MAAIF,GAAA,MAA8B;;MAElEsC,EAAApC,MAAI8M,IAAA,KAAyBvK,KAA7BvC;MACAoC,EAAApC,MAAIqN,IAAA,KAA0C9K,KAA9CvC;MACAqF,EAAArF,MAAIF,GAA+B,MAAI;;;QAIzC,IACEE,KAAKyN,iBAAiBhO,OACrB2C,EAAApC,MAAIkB,GAAA,QACLkB,EAAApC,MAAIe,GAAA,MACJ;MACAf,KAAKwL,oBAAoBzL,IAAIqC,EAAApC,MAAIe,GAAA,KAAauF,IAAI;QAChD8G,WAAWhL,EAAApC,MAAIe,GAAA;QACf4K,UAAU;QACVC,SAAS9I;;MAEXuC,EAAArF,MAAIkB,GAAyB,MAAI;;;QAInC,IACElB,KAAK2C,4BAA4B9D,OAChCuD,EAAApC,MAAImB,GAAA,QACLiB,EAAApC,MAAI0B,GAAA,QACJU,EAAApC,MAAIoB,GAAA,MACJ;MACApB,KAAKwL,oBAAoBzL,IAAIqC,EAAApC,MAAI0B,GAAA,KAAa4E,IAAI;QAChD8G,WAAWhL,EAAApC,MAAI0B,GAAA;QACfiK,UAAU;QACVC,SAAS9I;;MAEX9C,KAAKwL,oBAAoBzL,IAAIqC,EAAApC,MAAIoB,GAAA,KAAakF,IAAI;QAChD8G,WAAWhL,EAAApC,MAAIoB,GAAA;QACfuK,UAAU;QACVC,SAAS9I;;MAEXuC,EAAArF,MAAImB,GAAiC,MAAI;;;QAI3C,IACEnB,KAAK2C,4BAA4B9D,MACjCuD,EAAApC,MAAImB,GAAA,MACJ;MACAkE,EAAArF,MAAImB,GAAiC,OAAK;;;;;SAQ9C,sBAAMwO,CAAiBA;IACrB,IAAIA,GAAkB;MACpBvN,EAAApC,MAAI2B,GAAA,KAAgBiO,UAAU;WACzB;MACLxN,EAAApC,MAAI2B,GAAA,KAAgBiO,UAAU;;;EA61BlC,MAAAC;IACE,OACEhK,EAACiK,GAAI;MAAChK,OAAM;OACVD,EAAA;MAAUU,OAAO3H;QACjBiH,EAAA;MACEoB,KAAK7E,EAAApC,MAAIM,GAAA;MACT8F,KAAMC,KACHhB,EAAArF,MAAI2B,GAAkB0E,GAA4B;QAGvDR,EAAA;MAASC,OAAM;OACbD,EAAA;MACEC,OAAO;QACL,eAAe;QACf,8BAA8B9F,KAAK+P;QACnC,iBAAiB/P,KAAK+P;QACtBV,QAAU;QACV,kBAAkB;QAClB,4BAA4B;QAC5B,uBAAuB;;OAGzBxJ,EAAA;;MAEEC,OAAM;OAEND,EAAA;MAAOC,OAAM;MAAiBK,SAAQ;OACnC/D,EAAApC,MAAIC,GAAA,KAAkBoP,OAAOxN,SAEhCgE,EAAA;;MAEEmK,WAAS;MACTlK,OAAM;MACN8B,aAAY;MACZvF,OAAOrC,KAAK6B;MACZgF,SAASzE,EAAApC,MAAI8B,GAAA;MACbsE,KAAMC,KACHhB,EAAArF,MAAIc,GAAauF,GAAuB;MAE3CC,IAAG;MACHP,MAAK;QAEN3D,EAAApC,MAAIuH,IAAA,KAAuBhF,KAA3BvC,MAA4BoC,EAAApC,MAAIc,GAAA,QAGlCd,KAAKiQ,kBACJpK,EAAA;MAAKC,OAAM;OACTD,EAAA;MAAOC,OAAM;OACV1D,EAAApC,MAAIC,GAAA,KAAkBoP,OAAO3E,aAEhC7E,EAAA;MACEC,OAAM;MACNS,OAAOnE,EAAApC,MAAIiB,GAAA;MACXoB,OAAO7C;MACPsH,UAAU1E,EAAApC,MAAIwN,IAAA;MACdpH,KAAMC,KACHhB,EAAArF,MAAIgB,GAAmBqF,GAAmC;QAI9DrG,KAAKyN,iBAAiBhO,MACrBoG,EAAA;MAAKC,OAAM;OACTD,EAAA;MAAKC,OAAM;OACTD,EAAA;MACEC,OAAM;MACNzD,OAAOrC,KAAK0K;MACZtE,KAAMC,KACHhB,EAAArF,MAAIe,GAAesF,GAAuB;MAE7CC,IAAG;MACHP,MAAK;QAEN3D,EAAApC,MAAIuH,IAAA,KAAuBhF,KAA3BvC,MAA4BoC,EAAApC,MAAIe,GAAA,QAEnC8E,EAAA;MACEC,OAAM;MAAgD,cAEpD1D,EAAApC,MAAIC,GAAA,KAAkBoP,OAAOa;MAE/BC,OAAO/N,EAAApC,MAAIC,GAAA,KAAkBoP,OAAOa;MACpCnK,MAAK;MACLiB,SAAS5E,EAAApC,MAAIsN,IAAA;OAEbzH,EAAA;MAAUC,OAAM;MAASmB,KAAKhI;YAQzCe,KAAK+P,aACJlK,EAAA;;MAEEC,OAAO;QACLsK,YAAY;QACZC,KAAK;QACLtR,CAACA,KAAuB;;MAE1BuR,iBAAgB;MAChB/J,OAAOnE,EAAApC,MAAIQ,GAAA;MACX+P,YAAY5Q;MACZ6Q,UAAS;MACTC,SAAQ;MACRC,sBAAsBtO,EAAApC,MAAI0N,IAAA;OAE1B7H,EAAA;MACE8K,MAAMhR;MACNmG,OAAO9G;MACP+G,MAAK;OAEJ3D,EAAApC,MAAI4I,IAAA,KAAarG,KAAjBvC,QAGFA,KAAK4N,wBACJ/H,EAAA;MACE8K,MAAM/Q;MACNkG,OAAM;MACNC,MAAK;OAEJ3D,EAAApC,MAAI2F,IAAA,KAAgBpD,KAApBvC,UAKP6F,EAAA;MAAKC,OAAO/G;OACV8G,EAAA;MAAKC,OAAO9G;OACToD,EAAApC,MAAI4I,IAAA,KAAarG,KAAjBvC,SAKP6F,EAAA;MACEC,OAAO;QACL8K,QAAU;QACV,6BAA6B;QAC7B,0BAA0B;QAC1B,uBAAuB;;OAGxB5Q,KAAK+C,oBACJ8C,EAAA;MACEC,OAAO;QACL,qBAAqB;QACrB,CAAC,sBAAsB9F,KAAK+C,qBAAqB;;MAEnDgD,MAAM,uCAAuC/F,KAAK+C;OAGhDX,EAAApC,MAAIC,GAAA,KAAkB2Q,OAAO7N,iBAC3B/C,KAAK+C,oBAKb8C,EAAA;MAAKC,OAAM;OACTD,EAAA;;MAEEC,OAAM;MACNQ,IAAG;MACHU,SAAS5E,EAAApC,MAAIoK,IAAA;MACbrE,MAAK;OAEJ3D,EAAApC,MAAIC,GAAA,KAAkB2Q,OAAOC,YAEhChL,EAAA;;MAEEC,OAAM;MACNQ,IAAG;MACHoB,UACE1H,KAAK+C,qBAAqB,YAC1B/C,KAAK+C,qBAAqB,gBAC1BX,EAAApC,MAAI0E,GAAA,KAA2BnC,KAA/BvC;MAEFgH,SAAS5E,EAAApC,MAAIsK,IAAA;MACbvE,MAAK;OAEJ3D,EAAApC,MAAIC,GAAA,KAAkB2Q,OAAOE"}
@@ -0,0 +1,39 @@
1
+ import { TreeViewItemModel } from "@genexus/chameleon-controls-library";
2
+ export declare class GxIdeDbInstanceSelector {
3
+ #private;
4
+ el: HTMLGxIdeDbInstanceSelectorElement;
5
+ treeModel: TreeViewItemModel[];
6
+ selectedInstanceId: string | undefined;
7
+ /**
8
+ * Callback invoked to load the available local server instances.
9
+ * Should return the list of database instances available on local servers.
10
+ */
11
+ readonly getLocalServersCallback: GetServersCallback;
12
+ /**
13
+ * Callback invoked to load the available network server instances.
14
+ * Should return the list of database instances available on network servers.
15
+ */
16
+ readonly getNetworkServersCallback: GetServersCallback;
17
+ /**
18
+ * Callback invoked when the user cancels the selection.
19
+ */
20
+ readonly cancelCallback: CancelCallback;
21
+ /**
22
+ * Callback invoked when the user confirms the selection. Receives the name
23
+ * of the selected database instance.
24
+ */
25
+ readonly confirmCallback: ConfirmCallback;
26
+ componentWillLoad(): Promise<void>;
27
+ /**
28
+ * Suspends or reactivates the shortcuts.
29
+ */
30
+ suspendShortcuts(suspendShortcuts: boolean): Promise<void>;
31
+ render(): any;
32
+ }
33
+ export type DbServerInstance = {
34
+ id: string;
35
+ name: string;
36
+ };
37
+ export type GetServersCallback = () => Promise<DbServerInstance[]> | DbServerInstance[];
38
+ export type CancelCallback = () => void | Promise<void>;
39
+ export type ConfirmCallback = (selectedInstanceName: string) => void | Promise<void>;
@@ -1,8 +1,6 @@
1
1
  export type McpServerStatus = "running" | "stopped" | "starting" | "stopping" | "error";
2
2
  export type McpStartResult = {
3
3
  success: boolean;
4
- port?: number;
5
- endpoint?: string;
6
4
  errorMessage?: string;
7
5
  };
8
6
  export type McpStopResult = {
@@ -5,6 +5,9 @@ export declare class GxIdeNewKb {
5
5
  #private;
6
6
  el: HTMLGxIdeNewKbElement;
7
7
  advancedTabIsVisible: boolean;
8
+ loadingAdvancedTab: boolean;
9
+ browseForMoreDialogOpen: boolean;
10
+ databaseNameValue: string;
8
11
  locationMode: string;
9
12
  /**
10
13
  * Allows selecting multiple generators for the front end
@@ -12,28 +15,29 @@ export declare class GxIdeNewKb {
12
15
  */
13
16
  frontEnds: GxOption[];
14
17
  validatableControls: Map<string, ControlValidation>;
15
- createDataInKbDisabled: boolean;
16
- userNameVisible: boolean;
17
- passwordVisible: boolean;
18
- savePasswordVisible: boolean;
18
+ connectionStatus: "connecting" | "success" | "failed" | undefined;
19
+ userNameValue: string;
20
+ passwordValue: string;
21
+ authenticationTypes: GxOption[];
22
+ watchAuthenticationTypes(newValue: GxOption[]): void;
19
23
  authenticationTypesComboBoxModel: ComboBoxModel;
20
- authenticationTypesInitialValue: string;
24
+ authenticationTypeValue: string;
25
+ collations: GxOption[];
26
+ watchCollations(newValue: GxOption[]): void;
21
27
  collationsComboBoxModel: ComboBoxModel;
22
- collationsInitialValue: string;
28
+ defaultCollation: string;
23
29
  defaultDataSourcesComboBoxModel: ComboBoxModel;
24
30
  prototypingTargetsComboBoxModel: ComboBoxModel;
25
31
  prototypingTargetsInitialValue: string;
26
32
  prototypingEnvironmentsComboBoxModel: ComboBoxModel;
27
33
  prototypingEnvironmentsInitialValue: string;
28
- serverNamesComboBoxModel: ComboBoxModel;
29
- serverNamesInitialValue: string;
34
+ serverInstances: GxOption[];
35
+ watchServerInstances(newValue: GxOption[]): void;
36
+ serverInstancesComboBoxModel: ComboBoxModel;
37
+ serverNameValue: string;
30
38
  userInterfaceLanguagesComboBoxModel: ComboBoxModel;
31
39
  userInterfaceLanguagesInitialValue: string;
32
- /**
33
- * Defines the type of authentication for the connection to the previously defined database
34
- */
35
- readonly authenticationTypes: GxOption[];
36
- watchAuthenticationTypes(newValue: GxOption[]): void;
40
+ selectedTab: string;
37
41
  /**
38
42
  * Callback invoked when the user wants to cancel KB creation (‘Cancel’ button)
39
43
  */
@@ -45,18 +49,19 @@ export declare class GxIdeNewKb {
45
49
  */
46
50
  readonly canSetLocation: boolean;
47
51
  /**
48
- * DB Collations
52
+ * Callback invoked when the advanced tab is selected for the first time.
53
+ * Returns the data needed to populate the advanced tab fields lazily,
54
+ * avoiding unnecessary loading at component initialization.
49
55
  */
50
- readonly collations: GxOption[];
51
- watchCollations(newValue: GxOption[]): void;
56
+ readonly getAdvancedTabDataCallback: GetAdvancedTabDataCallback;
52
57
  /**
53
58
  * Callback that will be invoked when the user confirms KB creation (‘Create’ button)
54
59
  */
55
60
  readonly createCallback: CreateCallback;
56
61
  /**
57
- * Disabled if the first item of the 'Server Name' combo is selected
62
+ * It allows defining whether the option to create the data files in the KB folder will be shown in the advanced tab
58
63
  */
59
- readonly createDataFilesInKBFolder: boolean;
64
+ createDataFilesInKBFolder: boolean;
60
65
  /**
61
66
  * Name of the database where we are going to persist the information of our KB
62
67
  */
@@ -113,19 +118,26 @@ export declare class GxIdeNewKb {
113
118
  */
114
119
  readonly selectLocationCallback: SelectLocationCallback;
115
120
  /**
116
- * Name of the DB server where we want to persist the information of our KB
121
+ * Callback invoked when the user clicks the "Browse for more..." button next
122
+ * to the Server Name combo. The host is expected to display its own server
123
+ * picker UI and resolve with the name of the selected server instance, which
124
+ * will be set as the value of the Server Name combo.
125
+ */
126
+ readonly browseForMoreCallback: BrowseForMoreCallback;
127
+ /**
128
+ * Callback invoked when the user selects a different server instance,
129
+ * allowing the host to fetch the collations available on that instance.
117
130
  */
118
- readonly serverNames: GxOption[];
119
- watchServerNames(newValue: GxOption[]): void;
131
+ readonly getCollationsForInstanceCallback: GetCollationsForInstanceCallback;
120
132
  /**
121
133
  * Specify the language in which the application screens will be developed (default language)
122
134
  */
123
135
  readonly userInterfaceLanguages: GxOption[];
124
136
  watchUserInterfaceLanguages(newValue: GxOption[]): void;
125
137
  /**
126
- * Username for the database connection. Visible if the Authentication Type is different from Windows Authentication (first item of the combo)
138
+ * Username for the database connection. Visible if the Authentication Type is different from Windows Authentication
127
139
  */
128
- readonly userName: string;
140
+ userName: string;
129
141
  componentWillLoad(): Promise<void>;
130
142
  connectedCallback(): void;
131
143
  componentDidLoad(): void;
@@ -152,10 +164,26 @@ export interface NewKBData {
152
164
  serverName: string;
153
165
  userInterfaceLanguage: string;
154
166
  userName: string;
167
+ creationMode: CreationMode;
155
168
  }
169
+ export type CreationMode = "basic" | "advanced";
156
170
  export type CreateCallback = (data: NewKBData) => Promise<FormSubmitResult>;
157
171
  export type CancelCallback = () => Promise<void>;
158
172
  export type GetDataSourcesCallback = (selectedPrototypingEnvironmentId: string, selectedPrototypingTargetId: string) => Promise<GxOption[]>;
159
173
  export type GetFrontEndsCallback = (selectedPrototypingEnvironmentId: string) => Promise<GxOption[]>;
160
174
  export type GetPrototypingEnvironmentsCallback = (selectedPrototypingTargetId: string) => Promise<GxOption[]>;
161
175
  export type SelectLocationCallback = () => Promise<string>;
176
+ export type BrowseForMoreCallback = () => Promise<string>;
177
+ export type CollationsForInstanceResult = {
178
+ collations: GxOption[];
179
+ defaultCollation: string;
180
+ };
181
+ export type GetCollationsForInstanceCallback = (serverInstance: string, authType?: string, userName?: string, password?: string) => Promise<CollationsForInstanceResult | undefined>;
182
+ export interface AdvancedTabData {
183
+ serverName?: string;
184
+ serverInstances?: GxOption[];
185
+ collations?: GxOption[];
186
+ authenticationTypes?: GxOption[];
187
+ defaultCollation?: string;
188
+ }
189
+ export type GetAdvancedTabDataCallback = () => Promise<AdvancedTabData | undefined>;