graphdb-workbench 3.3.2 → 3.3.3-RC2
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.
- package/dist/{10759.b2e1d643d681ebd9c124.bundle.js → 10759.57059f90014058a86952.bundle.js} +2 -2
- package/dist/10759.57059f90014058a86952.bundle.js.map +1 -0
- package/dist/{13231.d7107e7549453805e13a.bundle.js → 13231.8bbbe30c10e6c0dfdba3.bundle.js} +2 -2
- package/dist/13231.8bbbe30c10e6c0dfdba3.bundle.js.map +1 -0
- package/dist/{18961.01ff5fcc0f4b9f99236e.bundle.js → 18961.732c0c355509452ac6da.bundle.js} +2 -2
- package/dist/18961.732c0c355509452ac6da.bundle.js.map +1 -0
- package/dist/{20694.4becb7771236462dcc5a.bundle.js → 20694.03b5abf23347ae0bad65.bundle.js} +2 -2
- package/dist/{20694.4becb7771236462dcc5a.bundle.js.map → 20694.03b5abf23347ae0bad65.bundle.js.map} +1 -1
- package/dist/21015.6db2b66597f78d4b83cc.bundle.js +2 -0
- package/dist/21015.6db2b66597f78d4b83cc.bundle.js.map +1 -0
- package/dist/2975.c5ebc3e3ad52df3ab907.bundle.js +2 -0
- package/dist/2975.c5ebc3e3ad52df3ab907.bundle.js.map +1 -0
- package/dist/38644.95e9083c584fed8acdc1.bundle.js +2 -0
- package/dist/38644.95e9083c584fed8acdc1.bundle.js.map +1 -0
- package/dist/39518.952b269313461489181c.bundle.js +2 -0
- package/dist/{39518.4d72b74fffba395c6b2a.bundle.js.map → 39518.952b269313461489181c.bundle.js.map} +1 -1
- package/dist/{39874.710e94f211579215f997.bundle.js → 39874.17dde6245fc4cc91bb58.bundle.js} +2 -2
- package/dist/39874.17dde6245fc4cc91bb58.bundle.js.map +1 -0
- package/dist/{45758.1212136a37dd4f7528f8.bundle.js → 45758.b9ce5fe0ed6c8c4fc141.bundle.js} +2 -2
- package/dist/45758.b9ce5fe0ed6c8c4fc141.bundle.js.map +1 -0
- package/dist/{60560.6ba1b091a34af6c00770.bundle.js → 60560.62ed0cb0b3d07fecbf28.bundle.js} +2 -2
- package/dist/60560.62ed0cb0b3d07fecbf28.bundle.js.map +1 -0
- package/dist/{60730.35493812d428872eddb6.bundle.js → 60730.a9fc5342637039776562.bundle.js} +2 -2
- package/dist/60730.a9fc5342637039776562.bundle.js.map +1 -0
- package/dist/{64118.b06aebc9f8d7e822244f.bundle.js → 64118.177457589341de779668.bundle.js} +2 -2
- package/dist/64118.177457589341de779668.bundle.js.map +1 -0
- package/dist/67888.bc281108507cb9ca2ff5.bundle.js +2 -0
- package/dist/67888.bc281108507cb9ca2ff5.bundle.js.map +1 -0
- package/dist/71099.ba1073458b96d9789756.bundle.js +2 -0
- package/dist/71099.ba1073458b96d9789756.bundle.js.map +1 -0
- package/dist/75881.148ce498d06784abfd6c.bundle.js +2 -0
- package/dist/75881.148ce498d06784abfd6c.bundle.js.map +1 -0
- package/dist/78070.d54ede951a08e1c8689d.bundle.js +2 -0
- package/dist/78070.d54ede951a08e1c8689d.bundle.js.map +1 -0
- package/dist/{7815.2aec5ebbcd434f5582ff.bundle.js → 7815.89cc59b6625e84913351.bundle.js} +2 -2
- package/dist/7815.89cc59b6625e84913351.bundle.js.map +1 -0
- package/dist/{78681.9e1d4e064e9e1fb5fb21.bundle.js → 78681.6c8614aad7e5465be505.bundle.js} +2 -2
- package/dist/78681.6c8614aad7e5465be505.bundle.js.map +1 -0
- package/dist/{82206.229877d7931849236456.bundle.js → 82206.473f6d4f79e12f6a9da6.bundle.js} +2 -2
- package/dist/82206.473f6d4f79e12f6a9da6.bundle.js.map +1 -0
- package/dist/{82926.ce1d6bf65b09288a2b10.bundle.js → 82926.0bc447d56f8bcff3aa6c.bundle.js} +2 -2
- package/dist/{82926.ce1d6bf65b09288a2b10.bundle.js.map → 82926.0bc447d56f8bcff3aa6c.bundle.js.map} +1 -1
- package/dist/{94229.47dbdba202106c61dff1.bundle.js → 94229.5a853fae006f6ef633af.bundle.js} +2 -2
- package/dist/94229.5a853fae006f6ef633af.bundle.js.map +1 -0
- package/dist/95953.1350a9dc14b22372b4e2.bundle.js +2 -0
- package/dist/95953.1350a9dc14b22372b4e2.bundle.js.map +1 -0
- package/dist/98268.a1bd17e40ede031a0a00.bundle.js +2 -0
- package/dist/98268.a1bd17e40ede031a0a00.bundle.js.map +1 -0
- package/dist/99448.313d3ccb611777cf8125.bundle.js +2 -0
- package/dist/99448.313d3ccb611777cf8125.bundle.js.map +1 -0
- package/dist/index.html +9 -9
- package/dist/js/angular/clustermanagement/templates/cluster-nodes-configuration.html +1 -1
- package/dist/js/angular/core/directives/autocomplete/templates/autocomplete.html +1 -1
- package/dist/js/angular/core/directives/dynamic-form/templates/dynamic-form.html +1 -1
- package/dist/js/angular/core/directives/operations-statuses-monitor/templates/operations-statuses-monitor.html +1 -1
- package/dist/js/angular/core/directives/rdfresourcesearch/templates/rdfResourceSearchTemplate.html +1 -1
- package/dist/js/angular/core/directives/shuttle-multiselect/templates/shuttle-multiselect.html +1 -1
- package/dist/js/angular/core/directives/yasgui-component/templates/yasgui-component.html +2 -2
- package/dist/js/angular/core/templates/cookie-policy/cookie-consent.html +1 -1
- package/dist/js/angular/core/templates/cookie-policy/cookie-policy.html +1 -1
- package/dist/js/angular/core/templates/editable-content/editable-content.html +1 -1
- package/dist/js/angular/core/templates/markdown-content/markdown-content.html +1 -1
- package/dist/js/angular/core/templates/search-resource-input.html +1 -1
- package/dist/js/angular/graphql/templates/create-graphql-endpoint.html +2 -2
- package/dist/js/angular/graphql/templates/graphql-endpoint-management.html +1 -1
- package/dist/js/angular/graphql/templates/graphql-playground.html +2 -2
- package/dist/js/angular/graphql/templates/modal/endpoint-configuration-modal.html +1 -1
- package/dist/js/angular/graphql/templates/modal/endpoint-generation-failure-result-modal.html +1 -1
- package/dist/js/angular/graphql/templates/modal/import-endpoint-definition-modal.html +1 -1
- package/dist/js/angular/security/templates/user.html +2 -2
- package/dist/js/angular/ttyg/templates/agent-list.html +1 -1
- package/dist/js/angular/ttyg/templates/agent-select-menu.html +1 -1
- package/dist/js/angular/ttyg/templates/chat-item-detail.html +3 -2
- package/dist/js/angular/ttyg/templates/chat-list.html +1 -1
- package/dist/js/angular/ttyg/templates/chat-panel.html +1 -1
- package/dist/js/angular/ttyg/templates/modal/agent-instructions-explain-modal.html +1 -1
- package/dist/js/angular/ttyg/templates/modal/agent-settings-modal.html +3 -3
- package/dist/js/angular/ttyg/templates/modal/external-integration-configuration-modal.html +1 -1
- package/dist/js/angular/ttyg/templates/no-agents-view.html +1 -1
- package/dist/js/angular/ttyg/templates/ttyg.html +1 -1
- package/dist/legacyWorkbench.e97c21d179749854900d.js +3 -0
- package/dist/{legacyWorkbench.40eba9e09196e1483221.js.map → legacyWorkbench.e97c21d179749854900d.js.map} +1 -1
- package/dist/main.a67c284710a8b9a98ca2.js +3 -0
- package/dist/main.a67c284710a8b9a98ca2.js.map +1 -0
- package/dist/pages/aclmanagement.html +1 -1
- package/dist/pages/autocomplete.html +1 -1
- package/dist/pages/choose-repository-type.html +1 -1
- package/dist/pages/cluster-management/clusterInfo.html +3 -3
- package/dist/pages/create-index.html +1 -1
- package/dist/pages/dependencies.html +1 -1
- package/dist/pages/domainRangeInfo.html +2 -2
- package/dist/pages/edit.html +1 -1
- package/dist/pages/explore.html +1 -1
- package/dist/pages/export.html +1 -1
- package/dist/pages/find.html +1 -1
- package/dist/pages/graph-config/saveGraphConfig.html +8 -8
- package/dist/pages/graphs-visualizations.html +7 -7
- package/dist/pages/guides.html +1 -1
- package/dist/pages/home.html +1 -1
- package/dist/pages/import.html +2 -2
- package/dist/pages/jdbc-create.html +1 -1
- package/dist/pages/jdbc.html +1 -1
- package/dist/pages/monitor/backup-and-restore.html +1 -1
- package/dist/pages/monitor/queries.html +1 -1
- package/dist/pages/monitor/resources.html +1 -1
- package/dist/pages/namespaces.html +2 -2
- package/dist/pages/plugins.html +1 -1
- package/dist/pages/rdfClassHierarchyInfo.html +7 -7
- package/dist/pages/rdfrank.html +2 -2
- package/dist/pages/repositories.html +1 -1
- package/dist/pages/repository.html +1 -1
- package/dist/pages/similarity-indexes.html +1 -1
- package/dist/pages/sparql-editor.html +1 -1
- package/dist/pages/sparql-template-create.html +1 -1
- package/dist/pages/sparql-templates.html +1 -1
- package/dist/pages/ux-test1.html +2 -2
- package/dist/pages/webapi.html +4 -3
- package/dist/res/swagger5/index.html +11 -11
- package/dist/res/swagger5/swagger-initializer.js +1 -1
- package/dist/shared-components/cjs/index-CTK5NoJt.js +2 -0
- package/dist/shared-components/cjs/loader.cjs.js +1 -1
- package/dist/shared-components/cjs/onto-cookie-consent_2.cjs.entry.js +1 -1
- package/dist/shared-components/cjs/onto-dialog_2.cjs.entry.js +1 -1
- package/dist/shared-components/cjs/onto-dropdown.cjs.entry.js +1 -1
- package/dist/shared-components/cjs/onto-footer_5.cjs.entry.js +1 -1
- package/dist/shared-components/cjs/onto-language-selector_9.cjs.entry.js +1 -1
- package/dist/shared-components/cjs/onto-layout.cjs.entry.js +1 -1
- package/dist/shared-components/cjs/onto-permission-banner.cjs.entry.js +1 -1
- package/dist/shared-components/cjs/onto-test-context.cjs.entry.js +1 -1
- package/dist/shared-components/cjs/onto-toastr.cjs.entry.js +1 -1
- package/dist/shared-components/cjs/shared-components.cjs.js +1 -1
- package/dist/shared-components/cjs/translate-label.cjs.entry.js +1 -1
- package/dist/shared-components/collection/collection-manifest.json +2 -2
- package/dist/shared-components/collection/components/dialogs/onto-dialog.js +1 -1
- package/dist/shared-components/collection/components/onto-dropdown/onto-dropdown.js +1 -1
- package/dist/shared-components/collection/components/onto-language-selector/onto-language-selector.js +1 -1
- package/dist/shared-components/collection/components/onto-license-alert/onto-license-alert.js +1 -1
- package/dist/shared-components/collection/components/onto-loader/onto-loader.js +1 -1
- package/dist/shared-components/collection/components/onto-navbar/onto-navbar.js +1 -1
- package/dist/shared-components/collection/components/onto-operations-notification/onto-operations-notification.js +1 -1
- package/dist/shared-components/collection/components/onto-repository-selector/onto-repository-selector.js +1 -1
- package/dist/shared-components/collection/components/onto-search-resource-input/onto-search-resource-input.js +1 -1
- package/dist/shared-components/collection/components/onto-test-context/onto-test-context.js +1 -1
- package/dist/shared-components/collection/components/onto-toggle-switch/onto-toggle-switch.js +1 -1
- package/dist/shared-components/collection/components/onto-user-menu/onto-user-menu.js +1 -1
- package/dist/shared-components/collection/components/translate-label/translate-label.js +1 -1
- package/dist/shared-components/esm/index-EiAqSNMq.js +2 -0
- package/dist/shared-components/esm/loader.js +1 -1
- package/dist/shared-components/esm/onto-cookie-consent_2.entry.js +1 -1
- package/dist/shared-components/esm/onto-dialog_2.entry.js +1 -1
- package/dist/shared-components/esm/onto-dropdown.entry.js +1 -1
- package/dist/shared-components/esm/onto-footer_5.entry.js +1 -1
- package/dist/shared-components/esm/onto-language-selector_9.entry.js +1 -1
- package/dist/shared-components/esm/onto-layout.entry.js +1 -1
- package/dist/shared-components/esm/onto-permission-banner.entry.js +1 -1
- package/dist/shared-components/esm/onto-test-context.entry.js +1 -1
- package/dist/shared-components/esm/onto-toastr.entry.js +1 -1
- package/dist/shared-components/esm/shared-components.js +1 -1
- package/dist/shared-components/esm/translate-label.entry.js +1 -1
- package/dist/shared-components/shared-components/{p-6d34b2cb.entry.js → p-1103d100.entry.js} +1 -1
- package/dist/shared-components/shared-components/{p-9b2c6e80.entry.js → p-2e2bb175.entry.js} +1 -1
- package/dist/shared-components/shared-components/{p-b754971e.entry.js → p-50735428.entry.js} +1 -1
- package/dist/shared-components/shared-components/{p-7e47d850.entry.js → p-59707503.entry.js} +1 -1
- package/dist/shared-components/shared-components/{p-598d33d7.entry.js → p-6a37f808.entry.js} +1 -1
- package/dist/shared-components/shared-components/{p-9214bb16.entry.js → p-6fb5eec5.entry.js} +1 -1
- package/dist/shared-components/shared-components/{p-c27fe716.entry.js → p-97930684.entry.js} +1 -1
- package/dist/shared-components/shared-components/p-EiAqSNMq.js +2 -0
- package/dist/shared-components/shared-components/{p-b5d4081d.entry.js → p-a5a49d87.entry.js} +1 -1
- package/dist/shared-components/shared-components/{p-74888633.entry.js → p-d134e207.entry.js} +1 -1
- package/dist/shared-components/shared-components/{p-5886e663.entry.js → p-ec2f4ea5.entry.js} +1 -1
- package/dist/shared-components/shared-components/shared-components.esm.js +1 -1
- package/dist/shared-components/types/stencil-public-runtime.d.ts +10 -147
- package/package.json +1 -1
- package/dist/10759.b2e1d643d681ebd9c124.bundle.js.map +0 -1
- package/dist/13231.d7107e7549453805e13a.bundle.js.map +0 -1
- package/dist/18961.01ff5fcc0f4b9f99236e.bundle.js.map +0 -1
- package/dist/21015.ea34b563b4149ad0975e.bundle.js +0 -2
- package/dist/21015.ea34b563b4149ad0975e.bundle.js.map +0 -1
- package/dist/2975.8be1a79816fd811be223.bundle.js +0 -2
- package/dist/2975.8be1a79816fd811be223.bundle.js.map +0 -1
- package/dist/38644.0e8652c647a0f341abd7.bundle.js +0 -2
- package/dist/38644.0e8652c647a0f341abd7.bundle.js.map +0 -1
- package/dist/39518.4d72b74fffba395c6b2a.bundle.js +0 -2
- package/dist/39874.710e94f211579215f997.bundle.js.map +0 -1
- package/dist/45758.1212136a37dd4f7528f8.bundle.js.map +0 -1
- package/dist/60560.6ba1b091a34af6c00770.bundle.js.map +0 -1
- package/dist/60730.35493812d428872eddb6.bundle.js.map +0 -1
- package/dist/64118.b06aebc9f8d7e822244f.bundle.js.map +0 -1
- package/dist/67888.41803878170b6c7a5ca5.bundle.js +0 -2
- package/dist/67888.41803878170b6c7a5ca5.bundle.js.map +0 -1
- package/dist/71099.ca7720893604e9d908d6.bundle.js +0 -2
- package/dist/71099.ca7720893604e9d908d6.bundle.js.map +0 -1
- package/dist/75881.54dc716f79b6fe29232a.bundle.js +0 -2
- package/dist/75881.54dc716f79b6fe29232a.bundle.js.map +0 -1
- package/dist/78070.13538271878de6a98862.bundle.js +0 -2
- package/dist/78070.13538271878de6a98862.bundle.js.map +0 -1
- package/dist/7815.2aec5ebbcd434f5582ff.bundle.js.map +0 -1
- package/dist/78681.9e1d4e064e9e1fb5fb21.bundle.js.map +0 -1
- package/dist/82206.229877d7931849236456.bundle.js.map +0 -1
- package/dist/94229.47dbdba202106c61dff1.bundle.js.map +0 -1
- package/dist/95953.ec1b9d5e568d43ec3dcf.bundle.js +0 -2
- package/dist/95953.ec1b9d5e568d43ec3dcf.bundle.js.map +0 -1
- package/dist/98268.86ff371dde616b4e2a76.bundle.js +0 -2
- package/dist/98268.86ff371dde616b4e2a76.bundle.js.map +0 -1
- package/dist/99448.2a87f387a8062617d893.bundle.js +0 -2
- package/dist/99448.2a87f387a8062617d893.bundle.js.map +0 -1
- package/dist/legacyWorkbench.40eba9e09196e1483221.js +0 -3
- package/dist/main.14f083264cd64618d96a.js +0 -3
- package/dist/main.14f083264cd64618d96a.js.map +0 -1
- package/dist/shared-components/cjs/app-globals-V2Kpy_OQ.js +0 -1
- package/dist/shared-components/cjs/index-L_ZmIeD5.js +0 -2
- package/dist/shared-components/esm/app-globals-DQuL1Twl.js +0 -1
- package/dist/shared-components/esm/index-CGqARDX4.js +0 -2
- package/dist/shared-components/shared-components/p-CGqARDX4.js +0 -2
- package/dist/shared-components/shared-components/p-DQuL1Twl.js +0 -1
- /package/dist/{legacyWorkbench.40eba9e09196e1483221.js.LICENSE.txt → legacyWorkbench.e97c21d179749854900d.js.LICENSE.txt} +0 -0
- /package/dist/{main.14f083264cd64618d96a.js.LICENSE.txt → main.a67c284710a8b9a98ca2.js.LICENSE.txt} +0 -0
- /package/dist/shared-components/cjs/{index-L_ZmIeD5.js.LICENSE.txt → index-CTK5NoJt.js.LICENSE.txt} +0 -0
- /package/dist/shared-components/esm/{index-CGqARDX4.js.LICENSE.txt → index-EiAqSNMq.js.LICENSE.txt} +0 -0
- /package/dist/shared-components/shared-components/{p-CGqARDX4.js.LICENSE.txt → p-EiAqSNMq.js.LICENSE.txt} +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"82206.229877d7931849236456.bundle.js","mappings":"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","sources":["webpack://root-config/./packages/shared-components/dist/esm/dropdown-item-alignment-DghTf3pJ.js","webpack://root-config/./packages/shared-components/dist/esm/onto-tooltip-placement-D_J2-9CG.js","webpack://root-config/./packages/shared-components/dist/esm/translation.service-nljGIprK.js","webpack://root-config/./packages/shared-components/dist/esm/html-util-C8DO915D.js","webpack://root-config/./packages/shared-components/dist/esm/onto-language-selector_9.entry.js","webpack://root-config/./packages/shared-components/dist/esm/resource-search-constants-CapzAxJp.js"],"sourcesContent":["var DropdownItemAlignment;\n(function (DropdownItemAlignment) {\n DropdownItemAlignment[\"RIGHT\"] = \"right\";\n DropdownItemAlignment[\"LEFT\"] = \"left\";\n})(DropdownItemAlignment || (DropdownItemAlignment = {}));\n\nexport { DropdownItemAlignment as D };\n","var OntoTooltipPlacement;\n(function (OntoTooltipPlacement) {\n OntoTooltipPlacement[\"LEFT\"] = \"left\";\n OntoTooltipPlacement[\"RIGHT\"] = \"right\";\n OntoTooltipPlacement[\"TOP\"] = \"top\";\n OntoTooltipPlacement[\"BOTTOM\"] = \"bottom\";\n OntoTooltipPlacement[\"AUTO\"] = \"auto\";\n})(OntoTooltipPlacement || (OntoTooltipPlacement = {}));\n\nexport { OntoTooltipPlacement as O };\n","import { Loggers, ServiceProvider, LanguageContextService } from '@ontotext/workbench-api';\n\nfunction sanitizeHTML(html) {\n const element = document.createElement('textarea');\n element.innerHTML = html;\n return element.value;\n}\n\nconst MODULE_NAME = 'SharedComponents';\n/**\n * Logger for the Shared Components module.\n */\nclass LoggerProvider {\n /**\n * Gets the logger instance for the Shared Components module.\n *\n * @returns LoggerService instance for the Shared Components module\n */\n static get logger() {\n return Loggers.getLoggerInstance(MODULE_NAME);\n }\n}\n\n/**\n * Service responsible for translation operations in the component.\n */\nclass TranslationServiceClassDefinition {\n constructor() {\n this.languageContextService = ServiceProvider.get(LanguageContextService);\n this.translationChangedObservers = {};\n this.logger = LoggerProvider.logger;\n // log with background color\n this.defaultBundle = this.languageContextService.getDefaultBundle();\n this.subscribeToBundleChange();\n }\n /**\n * Translates the <code>messageLabelKey</code> with <code>translationParameter</code> and call <code>translationCallback</code> with translation of current language.\n * The <code>translationCallback</code> is called upon subscription and whenever the selected language is changed.\n *\n * @param messageLabelKey - The label key for the translation.\n * @param translationParameter - Parameters, if needed, for translation.\n * @param translationCallback - A function to be called when translating the `messageLabelKey`.\n * @returns A function that, when called, unsubscribes the provided callback from further translation updates.\n */\n onTranslate(messageLabelKey, translationParameter = [], translationCallback = () => { }) {\n this.translationChangedObservers[messageLabelKey] = this.translationChangedObservers[messageLabelKey] || [];\n const observer = { parameters: translationParameter, callback: translationCallback };\n this.translationChangedObservers[messageLabelKey].push(observer);\n translationCallback(this.translate(messageLabelKey, translationParameter));\n return () => {\n const index = this.translationChangedObservers[messageLabelKey].indexOf(observer);\n if (index !== -1) {\n this.translationChangedObservers[messageLabelKey].splice(index, 1);\n }\n };\n }\n /**\n * Translates the provided key using the currently selected language by applying the parameters if\n * provided.\n * @param key The key for the label which needs to be translated.\n * @param parameters Optional parameters which to be applied during the translation.\n */\n translate(key, parameters) {\n return this.translateInLocale(key, parameters);\n }\n /**\n * Translates a given key into the specified locale. If parameters are provided,\n * they will be applied to the translation.\n *\n * @param key - The translation key, which can be dot-separated for nested translations.\n * @param parameters - Optional parameters to be substituted into the translation string.\n * @returns The translated string with parameters applied if available, or the key itself if not found.\n */\n translateInLocale(key, parameters) {\n // Attempt to retrieve the translation from the specified locale's bundle.\n let translation = this.translateFromBundle(this.currentBundle, key);\n // If not found, fall back to the default language bundle.\n if (!translation) {\n translation = this.translateFromBundle(this.defaultBundle, key);\n }\n // If translation was found, apply any parameters provided and return the result.\n if (translation) {\n translation = this.applyParameters(translation, parameters);\n return sanitizeHTML(translation);\n }\n this.logger.warn(`Missing translation for key: [${key}]`);\n return key;\n }\n /**\n * Retrieves a translation from a specified translation bundle using the given key.\n * If the key represents a nested JSON path, it attempts to resolve the key as such.\n *\n * @param bundle - The translation bundle for the specified locale.\n * @param key - The key to translate, which may be a simple key or dot-separated for nested keys.\n * @returns The translation string if found, or `undefined` if not available.\n */\n translateFromBundle(bundle, key) {\n if (!bundle) {\n return undefined;\n }\n // Try to retrieve the translation directly if it is defined as a whole string,\n // for instance as \"some_function.btn.label\".\n let translation = bundle[key];\n // If not found, attempt to retrieve the translation if it is defined as a JSON object.\n if (typeof translation !== 'string') {\n translation = this.translateAsJsonObject(bundle, key);\n }\n return translation;\n }\n /**\n * Resolves a nested translation key by treating it as a path in a JSON object.\n * For example, if the key is \"some.key.path\", this method will navigate through\n * the JSON object structure to retrieve the value at that path.\n *\n * @param bundle - The translation bundle containing nested keys.\n * @param key - The dot-separated key representing the path to the translation.\n * @returns The translation string if found, or `undefined` if the path does not exist.\n */\n translateAsJsonObject(bundle, key) {\n let path = key.split('.');\n return this.getTranslation(bundle, path);\n }\n /**\n * Recursively navigates through a JSON object based on a path array to retrieve\n * a translation string. Each element in the path array represents a nested key.\n *\n * @param jsonObject - The current JSON object or nested object being searched.\n * @param path - An array representing the path to the translation, where each element is a key.\n * @returns The translation string if found, or `undefined` if the path does not exist.\n */\n getTranslation(jsonObject, path) {\n // Stop the recursion if path or reach the inner element\n if (!path || !jsonObject) {\n return undefined;\n }\n const jsonOrTranslation = jsonObject[path.splice(0, 1)[0]];\n if (path.length === 0) {\n return jsonOrTranslation;\n }\n if (typeof jsonOrTranslation !== 'string') {\n // continue if the inner element is not reached.\n if (path.length > 0) {\n return this.getTranslation(jsonOrTranslation, path);\n }\n return jsonOrTranslation;\n }\n return undefined;\n }\n applyParameters(translation, parameters) {\n if (parameters) {\n return parameters.reduce(\n // replace all occurrence of parameter key with parameter value.\n (translation, parameter) => TranslationServiceClassDefinition.replaceAll(translation, parameter), translation);\n }\n return translation;\n }\n static replaceAll(translation, parameter) {\n return parameter ? translation.split(`{{${parameter.key}}}`).join(parameter.value) : translation;\n }\n notifyTranslationsChanged() {\n Object.keys(this.translationChangedObservers).forEach((eventName) => {\n const observers = this.translationChangedObservers[eventName] || [];\n observers.forEach((observer) => observer.callback(this.translate(eventName, observer.parameters)));\n });\n }\n subscribeToBundleChange() {\n this.languageChangeSubscription = this.languageContextService.onLanguageBundleChanged((bundle) => {\n if (bundle) {\n this.currentBundle = bundle;\n this.notifyTranslationsChanged();\n }\n });\n }\n destroy() {\n if (this.languageChangeSubscription) {\n this.languageChangeSubscription();\n }\n }\n}\nconst TranslationService = new TranslationServiceClassDefinition();\n\nexport { LoggerProvider as L, TranslationService as T, sanitizeHTML as s };\n","const INTERACTIVE_ELEMENTS_SELECTOR = 'button, [href], input:not([type=\"hidden\"]), select, textarea, [tabindex]:not([tabindex=\"-1\"])';\nclass HtmlUtil {\n /**\n * Setter for the document body overflow property.\n *\n * @param newOverflow - the new overflow value.\n *\n * @return the old overflow value.\n */\n static setDocumentBodyOverflow(newOverflow) {\n const oldOverflow = document.body.style.overflow;\n document.body.style.overflow = newOverflow;\n return oldOverflow;\n }\n /**\n * Hides the document body overflow.\n *\n * @return the value of overflow before set it to hidden.\n */\n static hideDocumentBodyOverflow() {\n return HtmlUtil.setDocumentBodyOverflow('hidden');\n }\n /**\n * Focuses the next element within a specified parent element based on the <code>activeElementSelector</code>, that selects all elements to be focused.\n *\n * @param parentElement - The parent element containing the focusable elements.\n * @param activeElementSelector - The CSS selector for identifying focusable elements.\n */\n static focusNextElement(parentElement, activeElementSelector = INTERACTIVE_ELEMENTS_SELECTOR) {\n const focusableElements = Array.from(parentElement.querySelectorAll(activeElementSelector));\n if (focusableElements.length > 0) {\n const currentIndex = focusableElements.indexOf(document.activeElement);\n const nextIndex = (currentIndex + 1) % focusableElements.length;\n const nextActiveElement = focusableElements[nextIndex];\n if (nextActiveElement) {\n nextActiveElement.focus();\n }\n }\n }\n /**\n * Focuses the previous element within a specified parent element based on the <code>activeElementSelector</code>, that selects all elements to be focused.\n *\n * @param parentElement - The parent element containing the focusable elements.\n * @param activeElementSelector - The CSS selector for identifying focusable elements.\n */\n static focusPreviousElement(parentElement, activeElementSelector = INTERACTIVE_ELEMENTS_SELECTOR) {\n const focusableElements = Array.from(parentElement.querySelectorAll(activeElementSelector));\n if (focusableElements.length > 0) {\n const currentIndex = focusableElements.indexOf(document.activeElement);\n const previousIndex = (currentIndex - 1 + focusableElements.length) % focusableElements.length;\n const previousActiveElement = focusableElements[previousIndex];\n if (previousActiveElement) {\n previousActiveElement.focus();\n }\n }\n }\n static preventLeavingDialog(hostElement, ev) {\n if (ev.key === 'Tab') {\n ev.preventDefault();\n if (ev.shiftKey) {\n HtmlUtil.focusPreviousElement(hostElement);\n }\n else {\n HtmlUtil.focusNextElement(hostElement);\n }\n }\n }\n /**\n * Focuses an element in the document based on the provided CSS selector.\n *\n * @param selector - A CSS selector string used to identify the element to focus.\n * This should be a valid CSS selector that uniquely identifies the target element.\n */\n static focusElement(selector) {\n const element = document.querySelector(selector);\n element === null || element === void 0 ? void 0 : element.focus();\n }\n /**\n * Scrolls an element into the visible area of its scrollable container.\n *\n * @param elementSelector - A CSS selector string used to identify the element to scroll into view.\n * This should be a valid CSS selector that uniquely identifies the target element.\n * @param options the scroll into view options.\n */\n static scrollElementIntoView(elementSelector, options = { block: 'nearest' }) {\n const element = document.querySelector(elementSelector);\n if (!element) {\n return;\n }\n element.scrollIntoView(options);\n }\n /**\n * Waits for an element to appear in the DOM by observing DOM mutations.\n * This function creates a MutationObserver that watches for changes in the document body\n * and resolves with the element once it becomes available.\n *\n * @param selector - A CSS selector string used to identify the element to wait for.\n * This should be a valid CSS selector that uniquely identifies the target element.\n *\n * @returns A Promise that resolves with the found HTMLElement when it appears in the DOM,\n * or rejects if an error occurs during the observation process.\n */\n static waitForElement(selector) {\n return new Promise((resolve, reject) => {\n const observer = new MutationObserver(() => {\n try {\n const element = document.querySelector(selector);\n if (element) {\n observer.disconnect();\n resolve(element);\n }\n }\n catch (error) {\n observer.disconnect();\n reject(error);\n }\n });\n observer.observe(document.body, { subtree: true, childList: true, attributes: true });\n });\n }\n}\n\nexport { HtmlUtil as H };\n","import { r as registerInstance, h, a as Host, g as getElement } from './index-CGqARDX4.js';\nimport { D as DropdownItem, R as ResourceSearchConstants } from './resource-search-constants-CapzAxJp.js';\nimport { ServiceProvider, LanguageService, LanguageContextService, navigateTo, OperationStatus, OperationGroup, SubscriptionList, EventService, ResourceSearchStorageService, UriUtil, SearchButtonConfig, SearchButton, openInNewTab, service, RepositoryContextService, AutocompleteService, AutocompleteContextService, AutocompleteStorageService, OntoToastrService, NamespacesContextService, SuggestionType, SuggestionSelectedPayload, Suggestion, getCurrentRoute, navigate, AuthenticationService } from '@ontotext/workbench-api';\nimport { D as DropdownItemAlignment } from './dropdown-item-alignment-DghTf3pJ.js';\nimport { O as OntoTooltipPlacement } from './onto-tooltip-placement-D_J2-9CG.js';\nimport { T as TranslationService } from './translation.service-nljGIprK.js';\nimport { H as HtmlUtil } from './html-util-C8DO915D.js';\n\nconst ontoLanguageSelectorCss = () => `:host{display:block}onto-language-selector{display:block}onto-language-selector .onto-dropdown{height:100%}onto-language-selector .onto-dropdown .onto-dropdown-button{background-color:transparent;color:var(--gw-button-tertiary-color);border:1px solid var(--gw-button-tertiary-border-color)}onto-language-selector .onto-dropdown .onto-dropdown-button .button-icon{color:var(--gw-button-tertiary-icon-color)}onto-language-selector .onto-dropdown .onto-dropdown-button:hover{background-color:var(--gw-button-tertiary-hover-background);color:var(--gw-button-tertiary-hover-color);border:1px solid var(--gw-button-tertiary-hover-border-color)}onto-language-selector .onto-dropdown.open{color:var(--gw-button-tertiary-color);background-color:var(--gw-button-tertiary-background);border-color:var(--gw-button-tertiary-border-color)}onto-language-selector .onto-dropdown.open .onto-dropdown-button{height:fit-content}`;\n\nconst OntoLanguageSelector = class {\n constructor(hostRef) {\n registerInstance(this, hostRef);\n this.languageService = ServiceProvider.get(LanguageService);\n this.languageContextService = ServiceProvider.get(LanguageContextService);\n this.items = [];\n /**\n * Specifies the dropdown items' alignment. If not provided, the items and the dropdown button will be aligned to the left.\n *\n */\n this.dropdownAlignment = DropdownItemAlignment.LEFT;\n }\n connectedCallback() {\n this.onLanguageChangeSubscription = this.languageContextService.onSelectedLanguageChanged((newLanguage) => this.changeLanguage(newLanguage));\n this.items = this.getLanguageDropdownOptions();\n }\n disconnectedCallback() {\n if (this.onLanguageChangeSubscription) {\n this.onLanguageChangeSubscription();\n }\n }\n render() {\n var _a, _b;\n return (h(Host, { key: '7d42fb1b7033270442f3565520c95f1f071024d6' }, h(\"onto-dropdown\", { key: '28f71d775d7194f79191e2d12ae3e84ffbdf610c', class: 'onto-language-selector', onValueChanged: this.valueChangeHandler(), dropdownButtonNameLabelKey: !this.currentLanguage ? 'language_selector.toggle_menu.label' : undefined, dropdownButtonName: (_a = this.currentLanguage) !== null && _a !== void 0 ? _a : undefined, dropdownButtonTooltipLabelKey: this.currentLanguage ? 'language_selector.toggle_menu.tooltip' : 'language_selector.toggle_menu.label', dropdownAlignment: (_b = this.dropdownAlignment) !== null && _b !== void 0 ? _b : DropdownItemAlignment.RIGHT, iconClass: 'ri-translate-2', items: this.items, \"auto-close\": true })));\n }\n valueChangeHandler() {\n return (newLanguage) => this.onSelectedLanguageChanged(newLanguage);\n }\n changeLanguage(newLanguage) {\n let selectedLanguage = newLanguage;\n if (!selectedLanguage) {\n selectedLanguage = this.languageService.getDefaultLanguage();\n }\n this.currentLanguage = selectedLanguage;\n this.items = this.getLanguageDropdownOptions();\n }\n onSelectedLanguageChanged(newLanguageEvent) {\n this.languageContextService.updateSelectedLanguage(newLanguageEvent.detail);\n }\n getLanguageDropdownOptions() {\n return this.languageService.getSupportedLanguages().map((locale) => {\n const iconClass = this.currentLanguage === locale ? 'ri-check-line' : '';\n return new DropdownItem()\n .setNameLabelKey(`language_selector.language.${locale}.label`)\n .setTooltipLabelKey(`language_selector.language.${locale}.tooltip.` + (this.currentLanguage === locale ? 'selected' : 'not_selected'))\n .setIconClass(iconClass)\n .setCssClass(locale)\n .setValue(locale);\n });\n }\n};\nOntoLanguageSelector.style = ontoLanguageSelectorCss();\n\nconst ontoLicenseAlertCss = () => `:host{display:block}.onto-license-alert{animation:fade-button 2s infinite;--fade-color:var(--gw-error-light);border:1px solid transparent !important}.onto-license-alert:hover{text-decoration:none;background-color:var(--gw-error-light) !important;border-color:var(--gw-error-light) !important}.onto-license-alert:hover span{transform:scale(1.2)}.onto-license-alert span{transition:transform 0.15s ease-out}.onto-license-alert .ri-alert-line{margin-right:0.2em;line-height:0.75;font-size:1.4em;display:inline-block;vertical-align:middle}`;\n\nconst OntoLicenseAlert = class {\n constructor(hostRef) {\n registerInstance(this, hostRef);\n }\n render() {\n var _a;\n return (h(Host, { key: '8a1a9ad6ea4b4e336499d38588fdc373c2cd71a4', \"tooltip-content\": (_a = this.license) === null || _a === void 0 ? void 0 : _a.message, \"tooltip-placement\": OntoTooltipPlacement.BOTTOM, \"data-test\": 'onto-license-alert' }, h(\"button\", { key: '4584d26858a08aae7238260d1e8d994f3cf84199', class: \"onto-license-alert onto-btn\", onClick: navigateTo('license') }, h(\"span\", { key: '6bc7adea570d54f5af32885a8705bf4efa2cc430', class: \"ri-alert-line\" }), h(\"translate-label\", { key: '86f42bc0a3bd42f5bb5678dd02fa5a66eb7fa1de', labelKey: 'license_alert.label' }))));\n }\n};\nOntoLicenseAlert.style = ontoLicenseAlertCss();\n\nconst ontoOperationsNotificationCss = () => `.operations-statuses{position:relative;background-color:transparent}.operations-statuses .operations-statuses-content i{padding-left:3px;padding-right:3px;font-size:1.1em;line-height:1.6rem !important;align-content:center;transition:transform 0.15s ease-out}.operations-statuses .operations-statuses-dropdown-toggle{display:flex;font-weight:400;line-height:1.25;text-align:center;white-space:nowrap;vertical-align:middle;cursor:pointer;user-select:none;background-color:transparent;border:1px solid var(--gw-button-tertiary-border-color);padding:0.4rem 1rem;gap:0.75em;transition:all 0.15s ease-out}.operations-statuses .operations-statuses-dropdown-toggle .operation-status-icon,.operations-statuses .operations-statuses-dropdown-toggle .ri-arrow-down-s-line{color:var(--gw-button-tertiary-icon-color)}.operations-statuses .operations-statuses-dropdown-toggle:hover i:not(.ri-arrow-down-s-line){transform:scale(1.2)}.operations-statuses .operations-statuses-dropdown-toggle:focus{outline:none}.operations-statuses .operations-statuses-dropdown-toggle .operation-status-header{display:flex}.operations-statuses .operations-statuses-dropdown-toggle .operation-status-header .running-operation-count{line-height:1.7;display:inline;min-width:1rem;height:1rem;padding:0 6px;background-color:var(--gw-badge-primary-background);color:var(--gw-badge-primary-color);font-size:0.625rem;font-weight:600}.operations-statuses .operations-dropdown{position:absolute;right:0;z-index:1000;background-color:var(--gw-contextmenu-background);border:1px solid var(--gw-contextmenu-border-color);color:var(--gw-contextmenu-color);list-style:none;padding:0;-moz-transition:all 150ms ease-out;-o-transition:all 150ms ease-out;-webkit-transition:all 150ms ease-out;transition:all 150ms ease-out}.operations-statuses .operations-dropdown .operations-statuses-content{display:flex;flex-direction:column;margin:0}.operations-statuses .operations-dropdown .operations-statuses-content li:first-child{margin-top:5px}.operations-statuses .operations-dropdown .operations-statuses-content li:last-child{margin-bottom:5px}.operations-statuses .operations-dropdown .operation-status-content{display:flex;flex-direction:row;margin:5px 10px;align-items:center;justify-content:start;cursor:pointer;text-decoration:none;width:auto;gap:0.5em}.operations-statuses .operations-dropdown .operation-status-content.status-warning{background-color:var(--gw-button-warn-background);border:1px solid var(--gw-button-warn-border-color);color:var(--gw-button-warn-color)}.operations-statuses .operations-dropdown .operation-status-content.status-warning:hover{background-color:var(--gw-button-warn-hover-background);border:1px solid var(--gw-button-warn-hover-border-color);color:var(--gw-button-warn-hover-color)}.operations-statuses .operations-dropdown .operation-status-content.status-critical{background-color:var(--gw-button-danger-background);border:1px solid var(--gw-button-danger-border-color);color:var(--gw-button-danger-color)}.operations-statuses .operations-dropdown .operation-status-content.status-critical:hover{background-color:var(--gw-button-danger-hover-background);border:1px solid var(--gw-button-danger-hover-border-color);color:var(--gw-button-danger-hover-color)}.operations-statuses .operations-dropdown .operation-status-content .operation-number{min-width:50px;display:block}.operations-statuses .operations-dropdown .operation-status-content .operation-number .operation-status-running-operation-count{display:inline;min-width:1rem;height:1rem;padding:2px 6px;background-color:var(--gw-badge-primary-background);color:var(--gw-badge-primary-color);font-size:0.625rem;font-weight:600}.operations-statuses .operations-dropdown .operation-status-content .operation-status-content>*{padding:0}.operations-statuses .operations-dropdown .operation-status-content .operation-status-label{width:66.66%;padding-left:5px;line-height:0;text-align:start}.operations-statuses .operations-dropdown .operation-status-content:hover{text-decoration:none;color:var(--gw-button-tertiary-hover-color);background-color:var(--gw-button-tertiary-hover-background)}.operations-statuses .operations-dropdown .operation-status-content:hover i{transform:scale(1.2)}.operations-statuses .operations-dropdown .operation-status-content.status-information{background-color:var(--gw-button-tertiary-background);border:1px solid var(--gw-button-tertiary-border-color);color:var(--gw-button-tertiary-color)}.operations-statuses .operations-dropdown .operation-status-content.status-information:hover{background-color:var(--gw-button-tertiary-hover-background);border:1px solid var(--gw-button-tertiary-hover-border-color);color:var(--gw-button-tertiary-hover-color)}`;\n\nconst operationGroupToIcon = {\n [OperationGroup.BACKUP]: 'ri-archive-line',\n [OperationGroup.QUERY]: 'ri-arrow-left-right-line',\n [OperationGroup.CLUSTER]: 'ri-organization-chart',\n [OperationGroup.IMPORT]: 'icon-import'\n};\nconst operationStatusToWarningClass = {\n [OperationStatus.WARNING]: 'status-warning',\n [OperationStatus.INFORMATION]: 'status-information',\n [OperationStatus.CRITICAL]: 'status-critical'\n};\nconst operationStatusToFadeClass = {\n [OperationStatus.WARNING]: 'onto-btn-fade-warning',\n [OperationStatus.CRITICAL]: 'onto-btn-fade-danger'\n};\nconst OntoOperationsNotification = class {\n constructor(hostRef) {\n registerInstance(this, hostRef);\n /** Whether the dropdown menu is open or closed */\n this.isOpen = false;\n this.toggleDropdown = (event) => {\n event.stopPropagation();\n this.isOpen = !this.isOpen;\n };\n }\n handleOutsideClick() {\n if (this.isOpen) {\n this.isOpen = false;\n }\n }\n render() {\n var _a;\n this.operationGroups = this.activeOperations.toOperationGroupSummaryList();\n return (h(\"section\", { key: 'f1d9e777583a1774818846fdeb5244d85518e0ca', class: \"operations-statuses\" }, h(\"button\", { key: '82ede64d5fcb045f1612f79c5a1bd402e9081491', class: `operations-statuses-dropdown-toggle ${this.isOpen ? 'open' : 'closed'} ${(_a = operationStatusToFadeClass[this.activeOperations.status]) !== null && _a !== void 0 ? _a : ''}`, onClick: this.toggleDropdown }, this.operationGroups.getItems().map((groupSummary) => (h(\"section\", { key: groupSummary.id, class: \"operation-status-header\" }, h(\"i\", { class: `operation-status-icon icon-1-33x ${operationGroupToIcon[groupSummary.group]} ${operationStatusToWarningClass[groupSummary.status]}` }), groupSummary.totalOperations\n ? h(\"sup\", { class: \"running-operation-count\" }, groupSummary.totalOperations)\n : ''))), h(\"i\", { key: '0f1c0118cafffcf59c7988efc6617a07e9e11088', class: `ri-arrow-down-s-line ${this.isOpen ? 'rotate-180' : ''}` })), this.isOpen &&\n h(\"ul\", { key: '9a86f8e65e9fbfc9338c131e6a290b9ef95168bc', class: \"operations-dropdown\" }, h(\"section\", { key: 'c03491fc69387608ead8aaf5faefeb4a159f79d5', class: \"operations-statuses-content\" }, this.activeOperations.allRunningOperations.getItems().map((operation) => (h(\"li\", { key: operation.id }, h(\"a\", { class: `operation-status-content onto-btn no-underline ${operationStatusToWarningClass[operation.status]}`, target: \"_blank\", onClick: navigateTo(operation.href) }, h(\"i\", { class: operationGroupToIcon[operation.group] }), h(\"span\", { class: \"operation-status-label\" }, h(\"translate-label\", { labelKey: `operations_notification.links.${operation.labelKey}` })), h(\"span\", { class: \"operation-number\" }, operation.count\n ? h(\"span\", { class: \"operation-status-running-operation-count\" }, operation.count)\n : '')))))))));\n }\n get el() { return getElement(this); }\n};\nOntoOperationsNotification.style = ontoOperationsNotificationCss();\n\nconst ontoRdfSearchCss = () => `.onto-rdf-search{display:flex;align-items:center;height:auto}.onto-rdf-search .search-area{white-space:nowrap;text-align:start;font-weight:300;max-width:100vw;position:fixed;right:3em;z-index:1;display:block;width:60vw;-webkit-transition:top 0.3s ease-in, opacity 0.5s ease;transition:top 0.3s ease-in, opacity 0.5s ease;border-radius:0;margin-bottom:1em;padding:1.6rem;color:var(--gw-dialog-color);background-color:var(--gw-dialog-background);border:1px solid var(--gw-dialog-border-color);box-shadow:var(--gw-dialog-shadow-1-offset-x) var(--gw-dialog-shadow-1-offset-y) var(--gw-dialog-shadow-1-blur) var(--gw-dialog-shadow-1-spread) var(--gw-dialog-shadow-1-color)}.onto-rdf-search .search-area.visible{top:40px;opacity:1}.onto-rdf-search .search-area.invisible{top:-550px;opacity:0}.onto-rdf-search .search-area .close-btn{display:block;position:absolute;top:0;right:0;font-size:1.5rem}.onto-rdf-search i{cursor:pointer;color:var(--gw-button-tertiary-icon-color);transition:all 0.15s ease-out}.onto-rdf-search i.ri-search-line,.onto-rdf-search i.close-btn{padding:0.5rem 0.8rem}.onto-rdf-search i:hover{transform:scale(1.2)}`;\n\nconst OntoRdfSearch = class {\n constructor(hostRef) {\n registerInstance(this, hostRef);\n this.subscriptions = new SubscriptionList();\n this.eventService = ServiceProvider.get(EventService);\n this.resourceSearchStorageService = ServiceProvider.get(ResourceSearchStorageService);\n this.RDF_CONTEXT = 'rdfSearchContext';\n this.isOpen = false;\n this.redirectUrl = UriUtil.RESOURCE_URL;\n }\n /**\n * Handles click events on the window.\n * Closes the search area if it's open and the click is outside the search area.\n * @param event - The MouseEvent object.\n */\n handleClick(event) {\n var _a;\n if (!this.isOpen) {\n return;\n }\n if (!((_a = this.rdfSearchRef) === null || _a === void 0 ? void 0 : _a.contains(event.target))) {\n this.isOpen = false;\n }\n }\n connectedCallback() {\n this.onSuggestionSelected();\n }\n disconnectedCallback() {\n this.subscriptions.unsubscribeAll();\n }\n componentDidRender() {\n this.focusSearchInput();\n }\n componentDidLoad() {\n this.buttonConfig = this.createButtonConfig();\n }\n render() {\n return (h(\"section\", { key: 'ab853ae8835280311974ada17bd83593d084f2c4', ref: (ref) => this.rdfSearchRef = ref, class: \"onto-rdf-search\", onKeyDown: this.onKeyDown(), \"data-test\": 'onto-rdf-search-component' }, h(\"section\", { key: 'fde7d09d0d3a796c7b5313d706f5e3892975c8fd', class: `search-area ${this.isOpen ? 'visible' : 'invisible'}` }, h(\"i\", { key: '0bd9a120019ff2efb4d906d6ba3c228b446a3831', onClick: this.setIsOpen(false), \"tooltip-content\": TranslationService.translate('rdf_search.tooltips.close_search_area'), \"tooltip-placement\": OntoTooltipPlacement.BOTTOM, \"data-test\": 'onto-rdf-resource-search-close-btn', class: \"ri-close-line close-btn\" }), h(\"onto-search-resource-input\", { key: '281a7105140989c1fc624827f1acb5e3e1f7e305', buttonConfig: this.buttonConfig, preserveSearch: true, isHidden: !this.isOpen, \"data-test\": 'onto-rdf-resource-search-input', context: this.RDF_CONTEXT })), !this.isOpen ? h(\"onto-search-icon\", { onClick: this.setIsOpen(true) }) : ''));\n }\n /**\n * Creates a function to set the open state of the search area.\n * @param isOpen - Boolean indicating whether the search area should be open.\n */\n setIsOpen(isOpen) {\n return () => {\n this.isOpen = isOpen;\n if (this.isOpen) {\n this.loadSelectedViewFromStorage();\n }\n };\n }\n /**\n * Creates the configuration for search buttons.\n * @returns A SearchButtonConfig object with radio buttons for table and visual search.\n */\n createButtonConfig() {\n return new SearchButtonConfig({\n isRadio: true,\n buttons: [\n this.createSearchButton(ResourceSearchConstants.TABLE_VIEW, 'rdf_search.buttons.table', () => {\n this.redirectUrl = UriUtil.RESOURCE_URL;\n this.resourceSearchStorageService.setSelectedView(ResourceSearchConstants.TABLE_VIEW);\n }, true),\n this.createSearchButton(ResourceSearchConstants.VISUAL_VIEW, 'rdf_search.buttons.visual', () => {\n this.redirectUrl = UriUtil.GRAPHS_VISUALIZATIONS_URL;\n this.resourceSearchStorageService.setSelectedView(ResourceSearchConstants.VISUAL_VIEW);\n }, false)\n ]\n });\n }\n /**\n * Creates a search button with the given parameters.\n * @param id - The id for the button.\n * @param labelKey - The key for the button's label translation.\n * @param callback - The function to be called when the button is clicked.\n * @param selected - Boolean indicating whether the button should be initially selected.\n * @returns A SearchButton object.\n */\n createSearchButton(id, labelKey, callback, selected) {\n return new SearchButton({\n label: TranslationService.translate(labelKey),\n id,\n callback,\n selected\n });\n }\n onSuggestionSelected() {\n this.subscriptions.add(this.eventService.subscribe(ResourceSearchConstants.SUGGESTION_SELECTED_EVENT, (payload) => {\n if (payload.getContext() === this.RDF_CONTEXT) {\n const redirectUrl = payload.getSuggestion().getOverrideToVisual()\n ? UriUtil.GRAPHS_VISUALIZATIONS_URL\n : this.redirectUrl;\n openInNewTab(UriUtil.createAutocompleteRedirect(redirectUrl, payload.getSuggestion().getValue()));\n }\n }));\n }\n onKeyDown() {\n return (event) => {\n if (event.key === 'Escape') {\n this.isOpen = false;\n }\n };\n }\n focusSearchInput() {\n if (this.isOpen) {\n HtmlUtil.focusElement(`#${this.RDF_CONTEXT}`);\n }\n }\n loadSelectedViewFromStorage() {\n const selectedView = this.resourceSearchStorageService.getSelectedView();\n if (selectedView) {\n const selectedButton = this.buttonConfig.getButtons().find((button) => button.id === selectedView);\n if (selectedButton) {\n this.buttonConfig = this.buttonConfig.selectButton(selectedButton);\n }\n }\n }\n};\nOntoRdfSearch.style = ontoRdfSearchCss();\n\n/**\n *\n * A StencilJS component that renders a repository selection. The element displays the repository's icon and ID\n * if a repository is selected; otherwise, it shows a translated toggle button name. The component dynamically\n * updates the name when the translation changes.\n *\n * @example\n * <RepositorySelection repository={repository}></>\n *\n */\nconst RepositorySelection = ({ repository, defaultToggleButtonName, location }) => {\n var _a;\n const className = repository ? 'repository-selection active-repository' : 'repository-selection no-selected-repository';\n return (h(\"div\", { class: className, \"data-test\": 'repository-selection' }, repository && h(\"i\", { class: 'button-icon icon-1-5x icon-repo-' + repository.type }), \"\\u00A0\", (_a = repository === null || repository === void 0 ? void 0 : repository.id) !== null && _a !== void 0 ? _a : defaultToggleButtonName, location));\n};\n\nconst ontoRepositorySelectorCss = () => `:host{display:block}.onto-repository-selector .onto-dropdown.closed .onto-dropdown-button:not(:hover){background-color:transparent}.onto-repository-selector .repository-selector-dropdown-item{display:flex;align-items:center;gap:0.4em}.onto-repository-selector .repository-selector-dropdown-item .item-icon{font-size:1.4em}.onto-repository-selector .repository-selector-dropdown-item .item-label{line-height:0.75em;display:inline-block;vertical-align:middle;text-align:left}.onto-repository-selector .repository-selector-dropdown-item .item-label .repository-id{line-height:0.75em}.onto-repository-selector .repository-selector-dropdown-item .item-label .repository-location{font-weight:300;font-size:0.75em;margin-top:0.4em;display:inline-block;max-width:120px;text-overflow:ellipsis;overflow:hidden}.tooltip-box[data-theme=light-border]{color:var(--gw-dialog-color) !important;background-color:var(--gw-dialog-background) !important;border:1px solid var(--gw-dialog-border-color) !important;box-shadow:var(--gw-dialog-shadow-1-offset-x) var(--gw-dialog-shadow-1-offset-y) var(--gw-dialog-shadow-1-blur) var(--gw-dialog-shadow-1-spread) var(--gw-dialog-shadow-1-color);max-width:350px;opacity:1 !important}.tooltip-box[data-theme=light-border] .tooltip-arrow::before{border:1px solid var(--gw-dialog-border-color);background-color:var(--gw-dialog-background)}.tooltip-box[data-theme=light-border] .tooltip-content{padding:0}.tooltip-box[data-theme=light-border] .tooltip-content .repository-tooltip-title{font-size:1rem;font-weight:400;padding:8px 14px;background-color:var(--gw-dialog-background);border-bottom:var(--gw-dialog-border-color) 1px solid}.tooltip-box[data-theme=light-border] .tooltip-content .repository-tooltip-title .value{overflow-wrap:break-word}.tooltip-box[data-theme=light-border] .tooltip-content .repository-tooltip-content{background-color:var(--gw-dialog-background);padding:1.5rem 0.5rem;display:flex;flex-direction:column;gap:0.8em;font-weight:400;font-size:0.875rem}.tooltip-box[data-theme=light-border] .tooltip-content .repository-tooltip-row{display:flex;flex-direction:row;justify-content:space-between}.tooltip-box[data-theme=light-border] .tooltip-content .repository-tooltip-row.total{margin-top:1.2em}.tooltip-box[data-theme=light-border] .tooltip-content .repository-tooltip-row .value{margin-left:0.6em}`;\n\nconst OntoRepositorySelector = class {\n constructor(hostRef) {\n registerInstance(this, hostRef);\n this.repositoryContextService = service(RepositoryContextService);\n this.subscriptions = [];\n }\n /**\n * Re-applies tooltip functions to all dropdown items when the items prop changes.\n */\n onItemsChanged(newItems) {\n if (!(newItems === null || newItems === void 0 ? void 0 : newItems.length)) {\n this.dropdownItems = [];\n return;\n }\n this.dropdownItems = this.attachTooltipsToItems(this.items);\n }\n connectedCallback() {\n var _a;\n this.subscriptions.push(...this.subscribeToTranslationChanged());\n // Manually apply tooltip functions to each item on first mount.\n if ((_a = this.items) === null || _a === void 0 ? void 0 : _a.length) {\n this.dropdownItems = this.attachTooltipsToItems(this.items);\n }\n else {\n this.dropdownItems = [];\n }\n }\n /**\n * Cleans up the subscriptions when the component is removed from the DOM to avoid memory leaks.\n * This method unsubscribes from both the repository change and selected repository change events.\n */\n disconnectedCallback() {\n this.subscriptions.forEach((subscription) => subscription());\n }\n render() {\n const repositorySelection = h(RepositorySelection, { key: 'eeaf798b50c245f6e3946e27d66522a478af8df5', repository: this.currentRepository, defaultToggleButtonName: this.getButtonLabel(), location: this.getLocation() });\n return (h(Host, { key: '285be46de66e76663616f0a686e04a93cff42e2e' }, h(\"onto-dropdown\", Object.assign({ key: 'cf65ea18aa3a96791bd2f810d20ef7c966bacf2f', class: \"onto-repository-selector\", \"data-test\": 'onto-repository-selector', onValueChanged: this.onValueChanged(), dropdownButtonName: repositorySelection, dropdownButtonTooltip: this.createTooltipFunctionForRepository(this.currentRepository) }, (this.currentRepository ? { 'dropdownButtonGuideSelector': `repository-id-${this.currentRepository.id}` } : {}), { dropdownAlignment: DropdownItemAlignment.RIGHT, tooltipPlacement: this.tooltipAlignment, tooltipTheme: \"light-border\", items: this.dropdownItems, \"auto-close\": true }))));\n }\n attachTooltipsToItems(items) {\n if (!items) {\n return [];\n }\n return items.map((item) => item.setTooltip(this.createTooltipFunctionForRepository(item.value)));\n }\n tooltipAlignment(isOpen) {\n if (isOpen) {\n return OntoTooltipPlacement.LEFT;\n }\n return OntoTooltipPlacement.BOTTOM;\n }\n onValueChanged() {\n return (valueChangeEvent) => this.onRepositoryChanged(valueChangeEvent.detail);\n }\n /**\n * Returns an async function that generates HTML tooltip content for the given repository.\n */\n createTooltipFunctionForRepository(repository) {\n return async () => {\n if (!repository) {\n return '';\n }\n const repositorySizeInfo = await this.repositorySizeInfoFetcher(repository);\n return this.buildRepositoryTooltipHtml(repository, repositorySizeInfo);\n };\n }\n /**\n * Builds the complete HTML string used as tooltip content for a repository.\n */\n buildRepositoryTooltipHtml(repository, repositorySizeInfo) {\n let html = `\n <div class=\"repository-tooltip-title\">\n <span class=\"label\">${TranslationService.translate('repository-selector.tooltip.repository')}</span>\n <span class=\"value\">${repository.id}</span>\n </div>\n <div class=\"repository-tooltip-content\">\n <div class=\"repository-tooltip-row\">\n <div class=\"label\">${TranslationService.translate('repository-selector.tooltip.location')}:</div>\n <div class=\"value\">${repository.location ? repository.location : TranslationService.translate('repository-selector.tooltip.local')}</div>\n </div>\n <div class=\"repository-tooltip-row\">\n <div class=\"label\">${TranslationService.translate('repository-selector.tooltip.type')}:</div>\n <div class=\"value\">${TranslationService.translate('repository-selector.tooltip.types.' + (repository.type || 'unknown'))}</div>\n </div>\n <div class=\"repository-tooltip-row\">\n <div class=\"label\">${TranslationService.translate('repository-selector.tooltip.access')}:</div>\n <div class=\"value\">${TranslationService.translate(this.canWriteRepo(repository) ? 'repository-selector.tooltip.accesses.read_write' : 'repository-selector.tooltip.accesses.read')}</div>\n </div>`;\n html += this.buildRepositorySizeInfoHtml(repositorySizeInfo);\n html += '</div>';\n return html;\n }\n /**\n * Builds the repository size section of the tooltip.\n */\n buildRepositorySizeInfoHtml(repositorySizeInfo) {\n if (!repositorySizeInfo || repositorySizeInfo.total < 0) {\n return '';\n }\n let html = `\n <div class=\"repository-tooltip-row total\">\n <div class=\"label\">${TranslationService.translate('repository-selector.tooltip.repository-size.total')}:</div>\n <div class=\"value\">${this.totalTripletsFormatter.format(repositorySizeInfo.total)}</div>\n </div>`;\n if (repositorySizeInfo.explicit >= 0) {\n html += `\n <div class=\"repository-tooltip-row\">\n <div class=\"label\">${TranslationService.translate('repository-selector.tooltip.repository-size.explicit')}:</div>\n <div class=\"value\">${this.totalTripletsFormatter.format(repositorySizeInfo.explicit)}</div>\n </div>`;\n }\n if (repositorySizeInfo.inferred >= 0) {\n html += `\n <div class=\"repository-tooltip-row\">\n <div class=\"label\">${TranslationService.translate('repository-selector.tooltip.repository-size.inferred')}:</div>\n <div class=\"value\">${this.totalTripletsFormatter.format(repositorySizeInfo.inferred)}</div>\n </div>`;\n }\n if (repositorySizeInfo.total >= 0) {\n let value = '-';\n if (repositorySizeInfo.explicit > 0) {\n value = this.expansionRatioFormatter.format(repositorySizeInfo.total / repositorySizeInfo.explicit);\n }\n html += `\n <div class=\"repository-tooltip-row\">\n <div class=\"label\">${TranslationService.translate('repository-selector.tooltip.repository-size.expansion_ratio')}:</div>\n <div class=\"value\">${value}</div>\n </div>`;\n }\n return html;\n }\n subscribeToTranslationChanged() {\n return [\n TranslationService.onTranslate('repository-selector.btn.toggle', [], (toggleButtonName) => {\n this.defaultToggleButtonName = toggleButtonName;\n }),\n TranslationService.onTranslate('repository-selector.btn.no_repositories', [], (noRepositoriesButtonMessage) => {\n this.noRepositoriesButtonMessage = noRepositoriesButtonMessage;\n })\n ];\n }\n onRepositoryChanged(selectedRepository) {\n this.repositoryContextService.updateSelectedRepository(selectedRepository);\n }\n getLocation() {\n var _a;\n if (!((_a = this.currentRepository) === null || _a === void 0 ? void 0 : _a.location)) {\n return '';\n }\n return `@${UriUtil.shortenIri(this.currentRepository.location)}`;\n }\n getButtonLabel() {\n var _a;\n return ((_a = this.items) === null || _a === void 0 ? void 0 : _a.length)\n ? this.defaultToggleButtonName\n : this.noRepositoriesButtonMessage;\n }\n static get watchers() { return {\n \"items\": [{\n \"onItemsChanged\": 0\n }]\n }; }\n};\nOntoRepositorySelector.style = ontoRepositorySelectorCss();\n\nconst ontoSearchIconCss = () => `.onto-search-icon{cursor:pointer;color:var(--gw-button-tertiary-icon-color);transition:all 0.15s ease-out}.onto-search-icon.ri-search-line{padding:0.5rem 0.8rem}.onto-search-icon:hover{transform:scale(1.2)}`;\n\nconst OntoSearchIcon = class {\n constructor(hostRef) {\n registerInstance(this, hostRef);\n this.tooltipKey = 'rdf_search.labels.search';\n this.subscriptions = new SubscriptionList();\n }\n // ========================\n // Lifecycle methods\n // ========================\n connectedCallback() {\n this.onTooltipChange();\n }\n disconnectedCallback() {\n this.subscriptions.unsubscribeAll();\n }\n render() {\n return (h(\"i\", { key: '36c552ab017abc9d3b76ca47ff3a8202f243f10d', \"tooltip-content\": this.tooltipLabel, \"tooltip-placement\": OntoTooltipPlacement.BOTTOM, class: \"onto-search-icon ri-search-line ri-lg\" }));\n }\n onTooltipChange() {\n this.subscriptions.add(TranslationService.onTranslate(this.tooltipKey, [], (translation) => this.tooltipLabel = translation));\n }\n};\nOntoSearchIcon.style = ontoSearchIconCss();\n\nconst ontoSearchResourceInputCss = () => `.search-resources-input{padding-right:20px}.search-resources-input .input-row{gap:3px;display:flex;flex-wrap:wrap}.search-resources-input .input-row .input-wrapper{position:relative;display:flex;flex:1;min-width:20vw}.search-resources-input .input-row .input-wrapper input{min-width:inherit;flex:1;padding:0.5rem 0.75rem;font-size:1rem;line-height:1.25;color:var(--gw-form-field-color);background-color:var(--gw-form-field-background);background-image:none;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid var(--gw-form-field-border-color)}.search-resources-input .input-row .input-wrapper input:focus{outline:0;color:var(--gw-form-field-color);border-color:var(--gw-form-field-focus-border-color)}.search-resources-input .input-row i.ri-close-line{position:absolute;right:10px;top:7px;z-index:10;font-size:1.6rem}.search-resources-input .input-row button{display:inline-block;font-weight:400;line-height:1.25;text-align:center;white-space:nowrap;vertical-align:middle;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;transition:all 0.15s ease-out;user-select:none;border:1px solid transparent;padding:0.5rem 1rem;font-size:1rem;color:var(--gw-button-secondary-color);background-color:var(--gw-button-secondary-background)}.search-resources-input .input-row button.selected{background-color:var(--gw-button-primary-background);color:var(--gw-button-primary-color)}.search-resources-input .input-row button:focus{outline:none}.search-resources-input .input-row button:hover:not(.selected){background-color:var(--gw-button-secondary-hover-background);border-color:var(--gw-button-secondary-hover-color)}.search-resources-input .hint{font-size:0.8rem;color:#818a91}.search-resources-input .autocomplete-results-wrapper{margin-top:6px;max-height:204px;overflow:auto}.search-resources-input .autocomplete-results-wrapper p{font-size:1.1rem;line-height:1.5;color:var(--gw-autocomplete-color);background-color:var(--gw-autocomplete-background);margin-bottom:0;padding:5px 25px;cursor:pointer}.search-resources-input .autocomplete-results-wrapper p b{color:var(--gw-autocomplete-dropdown-match-color)}.search-resources-input .autocomplete-results-wrapper p.selected{color:var(--gw-autocomplete-option-selected-color);background-color:var(--gw-autocomplete-option-selected-background)}.search-resources-input .autocomplete-results-wrapper p.hovered:not(.selected),.search-resources-input .autocomplete-results-wrapper p:hover:not(.selected){color:var(--gw-autocomplete-option-focus-color);background-color:var(--gw-autocomplete-option-focus-background)}`;\n\nconst OntoSearchResourceInput = class {\n constructor(hostRef) {\n registerInstance(this, hostRef);\n this.autocompleteService = ServiceProvider.get(AutocompleteService);\n this.autocompleteContextService = ServiceProvider.get(AutocompleteContextService);\n this.autocompleteStorageService = ServiceProvider.get(AutocompleteStorageService);\n this.resourceSearchStorageService = ServiceProvider.get(ResourceSearchStorageService);\n this.toastrService = ServiceProvider.get(OntoToastrService);\n this.eventService = ServiceProvider.get(EventService);\n this.namespaceContextService = ServiceProvider.get(NamespacesContextService);\n this.subscriptions = new SubscriptionList();\n this.autocompleteWarningShown = false;\n /** Whether the rdf resource pre-search validation should be skipped. */\n this.skipValidation = false;\n /**\n * Whether the search component is currently hidden. Can be shown/hidden in the RDF search\n */\n this.isHidden = false;\n /**\n * Whether the autocomplete setting is enabled.\n */\n this.isAutocompleteEnabled = false;\n /**\n * Updates the local inputValue with the html input element's value.'\n */\n this.handleInput = (event) => {\n const target = event.target;\n if (!target.value) {\n this.clearInput();\n return;\n }\n this.setInputValue(target.value);\n this.checkForAutocomplete();\n };\n /**\n * Clears the search input field.\n */\n this.clearInput = () => {\n this.setInputValue('');\n if (this.preserveSearch) {\n this.resourceSearchStorageService.clearStoredSearch();\n }\n };\n this.onKeyDown = (event) => {\n switch (event.key) {\n case 'Enter':\n this.onEnter(event);\n break;\n case 'Escape':\n this.onEscape();\n break;\n case 'ArrowUp':\n this.onArrowUp(event);\n break;\n case 'ArrowDown':\n this.onArrowDown(event);\n break;\n }\n };\n }\n onVisibilityChange(isHidden) {\n var _a;\n if (isHidden) {\n (_a = this.searchResult) === null || _a === void 0 ? void 0 : _a.clearSuggestions();\n }\n else {\n this.setInputValue(this.resourceSearchStorageService.getInputValue());\n }\n }\n connectedCallback() {\n this.onAutocompleteEnabledChange();\n this.onNamespaceChange();\n this.loadInputFromStorage();\n }\n disconnectedCallback() {\n this.subscriptions.unsubscribeAll();\n }\n render() {\n var _a, _b, _c;\n return (h(\"section\", { key: '07393acc0648ecd5859d053d6769ece464b9c664', class: \"search-resources-input\" }, h(\"div\", { key: '9c95b8ca64d8334472d14518845a8c16a9568335', class: \"input-row\" }, h(\"span\", { key: '0efbbe550fadf44dfab837e05ce8857c724d5da7', class: \"input-wrapper\" }, h(\"input\", { key: 'c55ffa901d87dd7569c1e55b5fb7e6689855f6d1', value: this.inputValue, id: this.context, type: \"text\", autocomplete: \"off\", placeholder: `${TranslationService.translate('rdf_search.labels.search')}...`, ref: (ref) => this.inputRef = ref, onKeyDown: this.onKeyDown, \"data-test\": this.context, onInput: this.handleInput }), ((_a = this.inputValue) === null || _a === void 0 ? void 0 : _a.length) ?\n h(\"i\", { onClick: this.clearInput, \"tooltip-content\": TranslationService.translate('rdf_search.tooltips.clear'), \"tooltip-placement\": OntoTooltipPlacement.BOTTOM, class: \"ri-close-line clear-input\" }) : ''), (_b = this.buttonConfig) === null || _b === void 0 ? void 0 :\n _b.getButtons().getItems().map((button) => (h(\"button\", { key: button.label, onClick: this.handleButtonClick(button), class: `${button.selected ? 'selected' : ''}` }, button.label)))), h(\"span\", { key: '94fa466d5f73e84247ac8efc45c12980f052a2b1', class: \"hint\" }, TranslationService.translate('rdf_search.labels.hint')), h(\"section\", { key: 'b4d9379572bdfa66bc16b8218e86128a6807f399', class: \"autocomplete-results-wrapper\", \"data-test\": 'onto-autocomplete-results' }, (_c = this.searchResult) === null || _c === void 0 ? void 0 : _c.suggestions.getItems().map((suggestion) => (h(\"p\", { key: suggestion.getId(), onClick: this.onSuggestionClick(suggestion), \"data-test\": 'onto-autocomplete-suggestion', onMouseMove: this.hoverSuggestion(suggestion), class: `${suggestion.isHovered() ? 'hovered' : ''} ${suggestion.isSelected() ? 'selected' : ''}`, innerHTML: suggestion.getDescription() }))))));\n }\n /**\n * Handles the click event for a search button.\n * If the button configuration is set to radio mode and the clicked button is not selected,\n * it deselects all other buttons and selects the clicked one.\n * @param {SearchButton} button - The button that was clicked.\n */\n handleButtonClick(button) {\n return () => this.buttonConfig = this.buttonConfig.selectButton(button);\n }\n loadAutocompleteResults() {\n var _a;\n if (!this.inputValue) {\n (_a = this.searchResult) === null || _a === void 0 ? void 0 : _a.clearSuggestions();\n return;\n }\n if (this.isAutocompleteEnabled) {\n this.autocompleteService.search(this.inputValue)\n .then((searchResult) => {\n this.onResultsReceived(searchResult);\n });\n }\n }\n hoverSuggestion(suggestion) {\n return () => this.searchResult = this.searchResult.hoverSuggestion(suggestion);\n }\n onAutocompleteEnabledChange() {\n this.isAutocompleteEnabled = this.autocompleteStorageService.isEnabled();\n this.subscriptions.add(this.autocompleteContextService.onAutocompleteEnabledChanged((enabled) => {\n this.isAutocompleteEnabled = enabled !== null && enabled !== void 0 ? enabled : this.isAutocompleteEnabled;\n }));\n }\n checkForAutocomplete() {\n if (this.inputValue.length > 0 && !this.isAutocompleteEnabled && !this.autocompleteWarningShown) {\n this.autocompleteWarningShown = true;\n const message = TranslationService.translate('rdf_search.toasts.autocomplete_is_off');\n this.toastrService.warning(`<a class=\"no-underline\" style=\"font-weight: 500\">${message}</a>`, {\n onClick: navigateTo('autocomplete'),\n removeOnClick: true\n });\n }\n }\n onSuggestionClick(suggestion) {\n return (event) => {\n suggestion.setOverrideToVisual(event.ctrlKey || event.metaKey);\n this.searchRdfResource(suggestion);\n };\n }\n searchRdfResource(suggestion) {\n if (suggestion.getType() === SuggestionType.PREFIX) {\n this.expandPrefix(suggestion);\n }\n else {\n this.notifyRdfResourceSelected(suggestion);\n if (this.preserveSearch) {\n this.resourceSearchStorageService.setLastSelected(suggestion);\n }\n }\n }\n notifyRdfResourceSelected(suggestion) {\n var _a;\n this.searchResult = (_a = this.searchResult) === null || _a === void 0 ? void 0 : _a.selectSuggestion(suggestion);\n this.eventService.emit({\n NAME: ResourceSearchConstants.SUGGESTION_SELECTED_EVENT,\n payload: new SuggestionSelectedPayload(suggestion, this.context)\n });\n }\n expandPrefix(suggestion) {\n this.setInputValue(this.namespaces.getByPrefix(suggestion.getValue()));\n this.inputRef.focus();\n }\n setInputValue(value) {\n this.inputValue = value;\n if (this.preserveSearch) {\n this.resourceSearchStorageService.setInputValue(this.inputValue);\n }\n this.loadAutocompleteResults();\n }\n onNamespaceChange() {\n this.subscriptions.add(this.namespaceContextService.onNamespacesChanged((namespaces) => {\n this.namespaces = namespaces;\n }));\n }\n onEnter(event) {\n var _a;\n let selectedSuggestion = (_a = this.searchResult) === null || _a === void 0 ? void 0 : _a.getHoveredSuggestion();\n if (!selectedSuggestion) {\n selectedSuggestion = new Suggestion({\n value: UriUtil.removeAngleBrackets(this.inputValue),\n type: SuggestionType.URI\n });\n }\n selectedSuggestion.setOverrideToVisual(event.ctrlKey || event.metaKey);\n this.validateAndSearch(selectedSuggestion);\n }\n onArrowUp(event) {\n if (!this.searchResult) {\n return;\n }\n this.searchResult = this.searchResult.hoverPreviousSuggestion();\n this.displaySuggestion(event);\n }\n onArrowDown(event) {\n if (!this.searchResult) {\n return;\n }\n this.searchResult = this.searchResult.hoverNextSuggestion();\n this.displaySuggestion(event);\n }\n displaySuggestion(event) {\n event.preventDefault();\n // Update the input directly, because the value should only be displayed,\n // without triggering a new search and altering the autocomplete results\n this.inputRef.value = this.searchResult.getHoveredSuggestion().getValue();\n this.scrollToSuggestionBySelector('p.hovered');\n }\n getSuggestionValue(suggestion) {\n return suggestion.getType() === SuggestionType.PREFIX\n ? this.namespaces.getByPrefix(suggestion.getValue())\n : suggestion.getValue();\n }\n scrollToSuggestionBySelector(selector, options) {\n HtmlUtil.waitForElement(selector)\n .then(() => {\n HtmlUtil.scrollElementIntoView(selector, options);\n });\n }\n validateAndSearch(suggestion) {\n if (!this.skipValidation) {\n if (!suggestion.getValue()) {\n this.toastrService.error(TranslationService.translate('rdf_search.toasts.empty_input'));\n return;\n }\n if (!UriUtil.isValidUri(this.getSuggestionValue(suggestion))) {\n this.toastrService.error(TranslationService.translate('rdf_search.toasts.invalid_uri'));\n return;\n }\n }\n this.searchRdfResource(suggestion);\n }\n onEscape() {\n if (this.preserveSearch) {\n return;\n }\n this.clearInput();\n }\n loadInputFromStorage() {\n if (!this.preserveSearch) {\n return;\n }\n this.inputValue = this.resourceSearchStorageService.getInputValue() || '';\n }\n onResultsReceived(searchResult) {\n const lastSelected = searchResult === null || searchResult === void 0 ? void 0 : searchResult.getByValue(this.resourceSearchStorageService.getLastSelectedValue());\n if (lastSelected && this.preserveSearch) {\n // No need to reassign twice in the same thread tick. One will trigger the re-render\n searchResult.hoverSuggestion(lastSelected);\n this.searchResult = searchResult.selectSuggestion(lastSelected);\n this.scrollToSuggestionBySelector('p.hovered.selected', { block: 'start' });\n }\n else {\n this.searchResult = searchResult.hoverFirstSuggestion();\n this.scrollToSuggestionBySelector('p.hovered', { block: 'start' });\n }\n }\n static get watchers() { return {\n \"isHidden\": [{\n \"onVisibilityChange\": 0\n }]\n }; }\n};\nOntoSearchResourceInput.style = ontoSearchResourceInputCss();\n\nconst ontoUserLoginCss = () => `.onto-user-login{position:relative;width:fit-content}.onto-user-login button{display:flex;color:var(--gw-button-tertiary-color);background-color:var(--gw-button-tertiary-background);flex-direction:row;line-height:1.5;font-weight:400;font-size:1rem;text-align:center;user-select:none;border:1px solid transparent;padding:0.4em 1rem;cursor:pointer;white-space:nowrap;place-items:center;transition:all 0.15s ease-out}.onto-user-login button .user-login-label{padding:0 0.4rem}.onto-user-login button:hover{color:var(--gw-button-tertiary-hover-color);background-color:var(--gw-button-tertiary-hover-background)}.onto-user-login button:hover .ri-user-fill{transform:scale(1.2)}.onto-user-login button:focus{outline:none}.onto-user-login button i{color:var(--user-menu-primary-color);line-height:0.75;font-size:1.2em;transition:0.15s ease-out}.onto-user-login button i.ri-arrow-down-s-line{color:rgba(0, 0, 0, 0.35);font-size:1.1em;transition:all 0.2s ease-in}`;\n\nconst OntoUserLogin = class {\n constructor(hostRef) {\n registerInstance(this, hostRef);\n }\n navigateToLogin() {\n return (event) => {\n event.preventDefault();\n const returnUrl = encodeURIComponent(getCurrentRoute());\n navigate(`login?r=${encodeURIComponent(returnUrl)}`);\n };\n }\n render() {\n return (h(\"section\", { key: '56843d38290568346cfd746fd71958113436cd94', class: \"onto-user-login\" }, h(\"button\", { key: '3166bbb91655243194c992101ede66d6bd3ab4c7', onClick: this.navigateToLogin() }, h(\"i\", { key: 'e562126298532327c4b5c0a59cf4223c2e466fe6', class: \"ri-arrow-right-circle-line\" }), h(\"translate-label\", { key: 'ecd6d795c44eac7c22291350cf7f297f00870ad6', class: \"user-login-label\", labelKey: \"user_menu.login\" }))));\n }\n};\nOntoUserLogin.style = ontoUserLoginCss();\n\nconst ontoUserMenuCss = () => `.onto-user-menu{position:relative;width:fit-content}.onto-user-menu button{display:flex;flex-direction:row;line-height:1.5;font-weight:400;font-size:1rem;text-align:center;user-select:none;padding:0.4em 1rem;cursor:pointer;white-space:nowrap;place-items:center;transition:all 0.15s ease-out;background-color:transparent;color:var(--gw-button-tertiary-color);border:1px solid var(--gw-button-tertiary-border-color)}.onto-user-menu button .ri-user-line,.onto-user-menu button .ri-arrow-down-s-line{color:var(--gw-button-tertiary-icon-color)}.onto-user-menu button:hover{background-color:var(--gw-button-tertiary-hover-background);color:var(--gw-button-tertiary-hover-color);border:1px solid var(--gw-button-tertiary-hover-border-color)}.onto-user-menu button:hover .ri-user-line{transform:scale(1.2)}.onto-user-menu button:focus{outline:none}.onto-user-menu button.open{color:var(--gw-button-primary-color);background-color:var(--gw-button-primary-background)}.onto-user-menu button.open .ri-user-line,.onto-user-menu button.open .ri-arrow-down-s-line{color:var(--gw-button-primary-color)}.onto-user-menu button.open:hover{color:var(--gw-button-primary-hover-color);background-color:var(--gw-button-primary-hover-background);border-color:var(--gw-button-primary-hover-border-color)}.onto-user-menu button.open:hover .ri-user-line{transform:scale(1.2)}.onto-user-menu button .username{padding:0 5px}.onto-user-menu button i{transition:0.15s ease-out}.onto-user-menu button i.ri-arrow-down-s-line{font-size:1.1em;transition:all 0.2s ease-in}.onto-user-menu .onto-user-menu-dropdown{position:absolute;z-index:1000;display:flex;flex-direction:column;cursor:pointer;text-decoration:none;right:0;min-width:7rem;font-size:1rem;width:100%;color:var(--gw-button-primary-color);background-color:var(--gw-button-primary-background)}.onto-user-menu .onto-user-menu-dropdown translate-label{padding:0.4rem 1rem;user-select:none;white-space:nowrap;font-weight:400}.onto-user-menu .onto-user-menu-dropdown translate-label:hover{color:var(--gw-button-primary-hover-color);background-color:var(--gw-button-primary-hover-background);border-color:var(--gw-button-primary-hover-border-color)}`;\n\nconst OntoUserMenu = class {\n constructor(hostRef) {\n registerInstance(this, hostRef);\n this.authenticationService = service(AuthenticationService);\n /**\n * Log out the current user.\n */\n this.logout = () => {\n this.authenticationService.logout();\n };\n /**\n * Toggles the dropdown menu's open state.\n *\n * @returns A function that toggles the `isOpen` state between true and false.\n */\n this.toggleDropdown = () => {\n this.isOpen = !this.isOpen;\n };\n /**\n * Closes the dropdown if the user clicks outside the component.\n */\n this.handleOutsideClick = (event) => {\n if (this.isOpen && !this.hostElement.contains(event.target)) {\n this.isOpen = false;\n }\n };\n }\n connectedCallback() {\n document.addEventListener('click', this.handleOutsideClick);\n }\n disconnectedCallback() {\n document.removeEventListener('click', this.handleOutsideClick);\n }\n render() {\n return (h(\"section\", { key: '12259fc1a98c0194a5bdd9846ff2e78715d4704c', class: 'onto-user-menu' }, h(\"div\", { key: 'b63d9259ebfe7856a1ece71e03cab280225e8757', class: 'dropdown-toggle-wrapper', onClick: this.toggleDropdown }, h(\"button\", { key: '514abf4b023aecfec9ddf3b02e77368640b7d554', class: `${this.isOpen ? 'open' : ''}` }, h(\"i\", { key: 'aefc12e677d20783f339d4c88afed959dc8435a4', class: 'ri-user-line ri-lg' }), h(\"span\", { key: '2cf215fc53e15b526a43c78026e4b9cfa499730e', class: 'username' }, this.user.username), h(\"i\", { key: '4e514af450f4eb9817e024f993033c3094e17cfd', class: `ri-arrow-down-s-line ${this.isOpen ? 'rotate-180' : ''}` })), this.isOpen ?\n h(\"section\", { class: 'onto-user-menu-dropdown' }, h(\"translate-label\", { onClick: navigateTo('settings'), labelKey: 'user_menu.my_settings' }), !this.authenticationService.isExternalUser() ?\n h(\"translate-label\", { onClick: this.logout, labelKey: 'user_menu.logout' }) : '') : '')));\n }\n get hostElement() { return getElement(this); }\n};\nOntoUserMenu.style = ontoUserMenuCss();\n\nexport { OntoLanguageSelector as onto_language_selector, OntoLicenseAlert as onto_license_alert, OntoOperationsNotification as onto_operations_notification, OntoRdfSearch as onto_rdf_search, OntoRepositorySelector as onto_repository_selector, OntoSearchIcon as onto_search_icon, OntoSearchResourceInput as onto_search_resource_input, OntoUserLogin as onto_user_login, OntoUserMenu as onto_user_menu };\n","/**\n * Model that holds a dropdown item configuration.\n */\nclass DropdownItem {\n constructor() {\n /**\n * Specifies the events that trigger the dropdown item tooltip to appear. Multiple event names should be separated by spaces.\n */\n this._dropdownTooltipTrigger = 'manual';\n }\n get name() {\n return this._name;\n }\n setName(value) {\n this._name = value;\n return this;\n }\n get nameLabelKey() {\n return this._nameLabelKey;\n }\n setNameLabelKey(value) {\n this._nameLabelKey = value;\n return this;\n }\n get tooltip() {\n return this._tooltip;\n }\n setTooltip(value) {\n this._tooltip = value;\n return this;\n }\n get tooltipLabelKey() {\n return this._tooltipLabelKey;\n }\n setTooltipLabelKey(value) {\n this._tooltipLabelKey = value;\n return this;\n }\n get iconClass() {\n return this._iconClass;\n }\n setIconClass(value) {\n this._iconClass = value;\n return this;\n }\n get value() {\n return this._value;\n }\n setValue(value) {\n this._value = value;\n return this;\n }\n get dropdownTooltipTrigger() {\n return this._dropdownTooltipTrigger;\n }\n setDropdownTooltipTrigger(value) {\n this._dropdownTooltipTrigger = value;\n return this;\n }\n get cssClass() {\n return this._cssClass;\n }\n setCssClass(value) {\n this._cssClass = value;\n return this;\n }\n get guideSelector() {\n return this._guideSelector;\n }\n setGuideSelector(value) {\n this._guideSelector = value;\n return this;\n }\n}\n\nvar ResourceSearchConstants;\n(function (ResourceSearchConstants) {\n ResourceSearchConstants[\"SUGGESTION_SELECTED_EVENT\"] = \"suggestion-selected-event\";\n ResourceSearchConstants[\"TABLE_VIEW\"] = \"table\";\n ResourceSearchConstants[\"VISUAL_VIEW\"] = \"visual\";\n ResourceSearchConstants[\"RDF_SEARCH_ICON_CLICKED\"] = \"rdfSearchIconClicked\";\n})(ResourceSearchConstants || (ResourceSearchConstants = {}));\n\nexport { DropdownItem as D, ResourceSearchConstants as R };\n"],"names":["DropdownItemAlignment","OntoTooltipPlacement","sanitizeHTML","html","element","document","createElement","innerHTML","value","LoggerProvider","logger","Loggers","getLoggerInstance","TranslationServiceClassDefinition","constructor","this","languageContextService","ServiceProvider","get","LanguageContextService","translationChangedObservers","defaultBundle","getDefaultBundle","subscribeToBundleChange","onTranslate","messageLabelKey","translationParameter","translationCallback","observer","parameters","callback","push","translate","index","indexOf","splice","key","translateInLocale","translation","translateFromBundle","currentBundle","applyParameters","warn","bundle","translateAsJsonObject","path","split","getTranslation","jsonObject","jsonOrTranslation","length","reduce","parameter","replaceAll","join","notifyTranslationsChanged","Object","keys","forEach","eventName","languageChangeSubscription","onLanguageBundleChanged","destroy","TranslationService","INTERACTIVE_ELEMENTS_SELECTOR","HtmlUtil","setDocumentBodyOverflow","newOverflow","oldOverflow","body","style","overflow","hideDocumentBodyOverflow","focusNextElement","parentElement","activeElementSelector","focusableElements","Array","from","querySelectorAll","currentIndex","activeElement","nextActiveElement","focus","focusPreviousElement","previousActiveElement","preventLeavingDialog","hostElement","ev","preventDefault","shiftKey","focusElement","selector","querySelector","scrollElementIntoView","elementSelector","options","block","scrollIntoView","waitForElement","Promise","resolve","reject","MutationObserver","disconnect","error","observe","subtree","childList","attributes","OntoLanguageSelector","hostRef","registerInstance","languageService","LanguageService","items","dropdownAlignment","LEFT","connectedCallback","onLanguageChangeSubscription","onSelectedLanguageChanged","newLanguage","changeLanguage","getLanguageDropdownOptions","disconnectedCallback","render","_a","_b","h","Host","class","onValueChanged","valueChangeHandler","dropdownButtonNameLabelKey","currentLanguage","undefined","dropdownButtonName","dropdownButtonTooltipLabelKey","RIGHT","iconClass","selectedLanguage","getDefaultLanguage","newLanguageEvent","updateSelectedLanguage","detail","getSupportedLanguages","map","locale","DropdownItem","setNameLabelKey","setTooltipLabelKey","setIconClass","setCssClass","setValue","OntoLicenseAlert","license","message","BOTTOM","onClick","navigateTo","labelKey","operationGroupToIcon","OperationGroup","BACKUP","QUERY","CLUSTER","IMPORT","operationStatusToWarningClass","OperationStatus","WARNING","INFORMATION","CRITICAL","operationStatusToFadeClass","OntoOperationsNotification","isOpen","toggleDropdown","event","stopPropagation","handleOutsideClick","operationGroups","activeOperations","toOperationGroupSummaryList","status","getItems","groupSummary","id","group","totalOperations","allRunningOperations","operation","target","href","count","el","getElement","OntoRdfSearch","subscriptions","SubscriptionList","eventService","EventService","resourceSearchStorageService","ResourceSearchStorageService","RDF_CONTEXT","redirectUrl","UriUtil","RESOURCE_URL","handleClick","rdfSearchRef","contains","onSuggestionSelected","unsubscribeAll","componentDidRender","focusSearchInput","componentDidLoad","buttonConfig","createButtonConfig","ref","onKeyDown","setIsOpen","preserveSearch","isHidden","context","loadSelectedViewFromStorage","SearchButtonConfig","isRadio","buttons","createSearchButton","ResourceSearchConstants","TABLE_VIEW","setSelectedView","VISUAL_VIEW","GRAPHS_VISUALIZATIONS_URL","selected","SearchButton","label","add","subscribe","SUGGESTION_SELECTED_EVENT","payload","getContext","getSuggestion","getOverrideToVisual","openInNewTab","createAutocompleteRedirect","getValue","selectedView","getSelectedView","selectedButton","getButtons","find","button","selectButton","RepositorySelection","repository","defaultToggleButtonName","location","className","type","OntoRepositorySelector","repositoryContextService","service","RepositoryContextService","onItemsChanged","newItems","dropdownItems","attachTooltipsToItems","subscribeToTranslationChanged","subscription","repositorySelection","currentRepository","getButtonLabel","getLocation","assign","dropdownButtonTooltip","createTooltipFunctionForRepository","tooltipPlacement","tooltipAlignment","tooltipTheme","item","setTooltip","valueChangeEvent","onRepositoryChanged","async","repositorySizeInfo","repositorySizeInfoFetcher","buildRepositoryTooltipHtml","canWriteRepo","buildRepositorySizeInfoHtml","total","totalTripletsFormatter","format","explicit","inferred","expansionRatioFormatter","toggleButtonName","noRepositoriesButtonMessage","selectedRepository","updateSelectedRepository","shortenIri","watchers","OntoSearchIcon","tooltipKey","onTooltipChange","tooltipLabel","OntoSearchResourceInput","autocompleteService","AutocompleteService","autocompleteContextService","AutocompleteContextService","autocompleteStorageService","AutocompleteStorageService","toastrService","OntoToastrService","namespaceContextService","NamespacesContextService","autocompleteWarningShown","skipValidation","isAutocompleteEnabled","handleInput","setInputValue","checkForAutocomplete","clearInput","clearStoredSearch","onEnter","onEscape","onArrowUp","onArrowDown","onVisibilityChange","searchResult","clearSuggestions","getInputValue","onAutocompleteEnabledChange","onNamespaceChange","loadInputFromStorage","_c","inputValue","autocomplete","placeholder","inputRef","onInput","handleButtonClick","suggestions","suggestion","getId","onSuggestionClick","onMouseMove","hoverSuggestion","isHovered","isSelected","getDescription","loadAutocompleteResults","search","then","onResultsReceived","isEnabled","onAutocompleteEnabledChanged","enabled","warning","removeOnClick","setOverrideToVisual","ctrlKey","metaKey","searchRdfResource","getType","SuggestionType","PREFIX","expandPrefix","notifyRdfResourceSelected","setLastSelected","selectSuggestion","emit","NAME","SuggestionSelectedPayload","namespaces","getByPrefix","onNamespacesChanged","selectedSuggestion","getHoveredSuggestion","Suggestion","removeAngleBrackets","URI","validateAndSearch","hoverPreviousSuggestion","displaySuggestion","hoverNextSuggestion","scrollToSuggestionBySelector","getSuggestionValue","isValidUri","lastSelected","getByValue","getLastSelectedValue","hoverFirstSuggestion","OntoUserLogin","navigateToLogin","returnUrl","encodeURIComponent","getCurrentRoute","navigate","OntoUserMenu","authenticationService","AuthenticationService","logout","addEventListener","removeEventListener","user","username","isExternalUser","_dropdownTooltipTrigger","name","_name","setName","nameLabelKey","_nameLabelKey","tooltip","_tooltip","tooltipLabelKey","_tooltipLabelKey","_iconClass","_value","dropdownTooltipTrigger","setDropdownTooltipTrigger","cssClass","_cssClass","guideSelector","_guideSelector","setGuideSelector"],"ignoreList":[],"sourceRoot":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"94229.47dbdba202106c61dff1.bundle.js","mappings":"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","sources":["webpack://root-config/./packages/legacy-workbench/src/js/angular/security/services/constants.js","webpack://root-config/./packages/legacy-workbench/src/js/angular/security/directives/custom-prefix-tags-input.directive.js","webpack://root-config/./packages/legacy-workbench/src/js/angular/security/controllers.js"],"sourcesContent":["export const SYSTEM_REPO = 'SYSTEM';\nexport const READ_REPO = 'READ_REPO';\nexport const READ_REPO_PREFIX = 'READ_REPO_';\nexport const WRITE_REPO = 'WRITE_REPO';\nexport const GRAPHQL = 'GRAPHQL';\nexport const WRITE_REPO_PREFIX = 'WRITE_REPO_';\nexport const GRAPHQL_PREFIX = 'GRAPHQL_';\nexport const GRAPHQL_SUFFIX = 'GRAPHQL';\nexport const SUFFIX_DELIMITER = ':';\nexport const GRAPHQL_SUFFIX_WITH_DELIMITER = SUFFIX_DELIMITER + GRAPHQL_SUFFIX;\nexport const CUSTOM_PREFIX = 'CUSTOM_'\n","angular\n .module('graphdb.framework.security.directives', [])\n .directive('customPrefixTagsInput', customPrefixTagsInputDirective);\n\n/**\n * @ngdoc directive\n * @name customPrefixTagsInput\n * @module app\n * @restrict A\n * @description\n * The `customPrefixTagsInput` directive is used to check 'tags-input' for roles containing 'CUSTOM_' or '!CUSTOM_' prefix.\n *\n * If the value starts with either of these prefixes, a warning property will be set in ngModel.\n *\n * @usage\n * <tags-input custom-prefix-tags-input>{{yourModel.role}}</tags-input>\n *\n * @return {Object} Directive definition object with restrict and link properties.\n */\nfunction customPrefixTagsInputDirective() {\n return {\n restrict: 'A',\n link: function(scope, element, attrs) {\n const customPrefix = \"CUSTOM_\";\n const negatedCustomPrefix = \"!CUSTOM_\";\n const subscriptions = [];\n\n function hasCustomOrNegatedPrefix(tag) {\n return tag.startsWith(customPrefix) || tag.startsWith(negatedCustomPrefix);\n }\n\n // Check if the element is tags-input and has ngModel associated with it\n const isNgTagsInput = element[0].nodeName.toLowerCase() === 'tags-input';\n\n if (isNgTagsInput && attrs.ngModel) {\n const ngModelCtrl = element.controller('ngModel');\n\n if (isNgTagsInput) {\n ngModelCtrl.$parsers.push(function (viewValue) {\n if (Array.isArray(viewValue)) {\n ngModelCtrl.$warning = viewValue.some((tag) => hasCustomOrNegatedPrefix(tag));\n }\n return viewValue;\n });\n\n subscriptions.push(scope.$watch(attrs.ngModel, function (newVal) {\n if (Array.isArray(newVal)) {\n ngModelCtrl.$warning = newVal.some((tag) => hasCustomOrNegatedPrefix(tag));\n }\n }, true));\n }\n }\n\n const unsubscribeListeners = () => {\n subscriptions.forEach((subscription) => subscription());\n };\n\n subscriptions.push(scope.$on('$destroy', unsubscribeListeners));\n }\n };\n}\n","import 'angular/core/services';\nimport 'angular/core/services/jwt-auth.service';\nimport 'angular/core/services/security.service';\nimport {UserRole, UserType} from 'angular/utils/user-utils';\nimport 'angular/security/directives/custom-prefix-tags-input.directive';\nimport {GRAPHQL, GRAPHQL_PREFIX, READ_REPO, READ_REPO_PREFIX, SYSTEM_REPO, WRITE_REPO, WRITE_REPO_PREFIX} from './services/constants';\nimport {\n AppSettings,\n AuthorityList,\n AuthorizationService,\n SecurityContextService,\n AuthenticationService,\n mapAuthSettingsResponseToModel,\n mapGrantedAuthoritiesResponseToModel,\n OntoToastrService,\n RepositoryService,\n SecurityService as SecurityServiceAPI,\n service,\n User,\n UsersService,\n} from '@ontotext/workbench-api';\n\nconst modules = [\n 'ngCookies',\n 'ui.bootstrap',\n 'graphdb.framework.core.services.jwtauth',\n 'graphdb.framework.core.services.security-service',\n 'toastr',\n 'ngTagsInput',\n];\n\nconst securityModule = angular.module('graphdb.framework.security.controllers', modules);\n\nsecurityModule.controller('UsersCtrl', ['$scope', '$uibModal', 'toastr', '$window', '$jwtAuth', '$timeout', 'ModalService', 'SecurityService', '$translate',\n function($scope, $uibModal, toastr, $window, $jwtAuth, $timeout, ModalService, SecurityService, $translate) {\n const authorizationService = service(AuthorizationService);\n const authenticationService = service(AuthenticationService);\n const securityServiceAPI = service(SecurityServiceAPI);\n const toastrService = service(OntoToastrService);\n const usersService = service(UsersService);\n const repositoryService = service(RepositoryService);\n\n // UI view-model\n $scope.usersData = [];\n\n $scope.loader = true;\n $scope.securityEnabled = function() {\n return authenticationService.isSecurityEnabled();\n };\n $scope.hasExternalAuth = function() {\n return $jwtAuth.hasExternalAuth();\n };\n $scope.getAuthImplementation = function() {\n return $jwtAuth.getAuthImplementation();\n };\n $scope.freeAccessEnabled = function() {\n return authorizationService.hasFreeAccess();\n };\n $scope.getUsers = () => {\n return usersService.getUsers()\n .then(function(data) {\n $scope.usersData = data.map((user) => ({\n username: user.username,\n dateCreated: user.dateCreated,\n userType: user.getUserType(),\n userTypeDescription: user.getUserTypeDescription(),\n repositories: user.authorities.getRepositoriesPermissions(),\n customRoles: user.authorities.getCustomRoles(),\n }));\n $scope.loader = false;\n }).catch(function(data) {\n const msg = getError(data);\n toastr.error(msg, $translate.instant('common.error'));\n $scope.loader = false;\n });\n };\n $scope.getUsers();\n\n $scope.$on('repositoryIsSet', function() {\n $scope.getUsers();\n });\n\n $scope.toggleSecurity = function() {\n const isSecurityEnabled = authenticationService.isSecurityEnabled();\n $jwtAuth.toggleSecurity(!isSecurityEnabled)\n .then(() => {\n // reload UI\n // TODO: Not sure if we really need to reload the page here. The UI state is updated just fine. But maybe the reload is needed for something else?\n // Remove and fix this when migrated\n $window.location.reload();\n });\n };\n\n const setFreeAccess = function(enabled, authSettings) {\n // TODO: check this what app settings are provided here and if cookie settings should be updated in the storage\n return securityServiceAPI.setFreeAccess(enabled, authSettings);\n };\n\n /**\n * @param {boolean|undefined} updateFreeAccess - Whether to enable or disable free access. If undefined, the\n * free access has not been set yet.\n */\n $scope.toggleFreeAccess = function(updateFreeAccess) {\n if (!authorizationService.hasFreeAccess() || (authorizationService.hasFreeAccess() && updateFreeAccess)) {\n // enable and configure or only configure\n securityServiceAPI.getFreeAccess()\n .then((freeAccessAuthSettings) => {\n const authorities = mapGrantedAuthoritiesResponseToModel(freeAccessAuthSettings.authorities).getItems();\n const appSettings = freeAccessAuthSettings.appSettings ?? {\n 'DEFAULT_SAMEAS': true,\n 'DEFAULT_INFERENCE': true,\n 'EXECUTE_COUNT': true,\n 'IGNORE_SHARED_QUERIES': false,\n 'DEFAULT_VIS_GRAPH_SCHEMA': true,\n };\n return configureFreeAccess(appSettings, authorities, updateFreeAccess);\n })\n .then((updatedFreeAccessAuthSettings) => setFreeAccess(updateFreeAccess || !$jwtAuth.isFreeAccessEnabled(), updatedFreeAccessAuthSettings))\n .then(() => {\n const translateKey = updateFreeAccess ? 'jwt.auth.free.access.updated.msg' : 'jwt.auth.free.access.status';\n toastrService.success($translate.instant(translateKey, {status: $translate.instant('enabled.status')}));\n })\n .catch((err) => {\n if (err === 'cancel') {\n // Check if modal was dismissed by user\n return;\n }\n toastrService.error(err.data ?? err, $translate.instant('common.error'));\n });\n } else {\n // disable\n setFreeAccess(!authorizationService.hasFreeAccess())\n .then(() => {\n toastrService.success($translate.instant('jwt.auth.free.access.status', {status: ($translate.instant('disabled.status'))}));\n })\n .catch((err) => {\n toastrService.error(err.data, $translate.instant('common.error'));\n });\n }\n };\n\n const configureFreeAccess = (appSettings, authorities, updateFreeAccess) => {\n const modalInstance = $uibModal.open({\n templateUrl: 'js/angular/security/templates/modal/default-authorities.html',\n controller: 'DefaultAuthoritiesCtrl',\n resolve: {\n data: function() {\n return {\n // converts the array rights to hash ones. why, oh, why do we have both formats?\n defaultAuthorities: function() {\n const defaultAuthorities = {\n [READ_REPO]: {},\n [WRITE_REPO]: {},\n [GRAPHQL]: {},\n };\n // We might have old (no longer existing) repositories so we have to check that\n const repoIds = _.mapKeys($scope.getRepositories(), function(r) {\n return repositoryService.getLocationSpecificId(r);\n });\n _.each(authorities, function(a) {\n // indexOf works in IE 11, startsWith doesn't\n if (a.indexOf(WRITE_REPO_PREFIX) === 0) {\n if (repoIds.hasOwnProperty(a.substr(11))) {\n defaultAuthorities[WRITE_REPO][a.substr(11)] = true;\n }\n } else if (a.indexOf(READ_REPO_PREFIX) === 0) {\n if (repoIds.hasOwnProperty(a.substr(10))) {\n defaultAuthorities[READ_REPO][a.substr(10)] = true;\n }\n } else if (a.indexOf(GRAPHQL_PREFIX) === 0) {\n if (repoIds.hasOwnProperty(a.substr(8))) {\n defaultAuthorities[GRAPHQL][a.substr(8)] = true;\n }\n }\n });\n return defaultAuthorities;\n },\n appSettings: appSettings,\n };\n },\n },\n });\n return modalInstance.result.then(function(data) {\n authorities = data.authorities;\n appSettings = data.appSettings;\n return mapAuthSettingsResponseToModel({\n enabled: updateFreeAccess || !authorizationService.hasFreeAccess(),\n appSettings,\n authorities,\n });\n });\n };\n\n $scope.editFreeAccess = function() {\n $scope.toggleFreeAccess(true);\n };\n\n $scope.removeUser = function(username) {\n ModalService.openSimpleModal({\n title: $translate.instant('common.confirm.delete'),\n message: $translate.instant('security.confirm.delete.user', {name: username}),\n warning: true,\n }).result.then(function() {\n $scope.loader = true;\n usersService.deleteUser(username)\n .then(() => $scope.getUsers())\n .catch((data) => {\n const msg = getError(data);\n toastr.error(msg, $translate.instant('common.error'));\n $scope.loader = false;\n });\n });\n };\n\n // Should be able to send the original username to $routeParams\n $scope.encodeURIComponent = function(name) {\n return encodeURIComponent(name);\n };\n }]);\n\nsecurityModule.controller('DefaultAuthoritiesCtrl', ['$scope', '$http', '$uibModalInstance', 'data', '$rootScope',\n function($scope, $http, $uibModalInstance, data, $rootScope) {\n const repositoryService = service(RepositoryService);\n\n $scope.grantedAuthorities = data.defaultAuthorities();\n $scope.appSettings = data.appSettings;\n\n $scope.hasActiveLocation = function() {\n // Hack to get this from root scope to avoid cyclic dependency\n return !_.isEmpty($rootScope.globalLocation);\n };\n\n $scope.getRepositories = function() {\n // Hack to get this from root scope to avoid cyclic dependency\n return $rootScope.globalRepositories;\n };\n\n $scope.ok = function() {\n const auth = [];\n $scope.repositoryCheckError = true;\n for (const index in $scope.grantedAuthorities.WRITE_REPO) {\n if ($scope.grantedAuthorities.WRITE_REPO[index]) {\n auth.push(WRITE_REPO_PREFIX + index);\n auth.push(READ_REPO_PREFIX + index);\n $scope.repositoryCheckError = false;\n }\n }\n for (const index in $scope.grantedAuthorities.READ_REPO) {\n if ($scope.grantedAuthorities.READ_REPO[index] && auth.indexOf(READ_REPO_PREFIX + index) === -1) {\n auth.push(READ_REPO_PREFIX + index);\n $scope.repositoryCheckError = false;\n }\n }\n for (const index in $scope.grantedAuthorities.GRAPHQL) {\n if ($scope.grantedAuthorities.GRAPHQL[index] && auth.indexOf(GRAPHQL_PREFIX + index) === -1) {\n auth.push(GRAPHQL_PREFIX + index);\n }\n }\n if (!$scope.repositoryCheckError) {\n $uibModalInstance.close({authorities: auth, appSettings: $scope.appSettings});\n }\n };\n\n $scope.cancel = function() {\n $uibModalInstance.dismiss('cancel');\n };\n\n $scope.createUniqueKey = function(repository) {\n return repositoryService.getLocationSpecificId(repository);\n };\n }]);\n\nsecurityModule.controller('CommonUserCtrl', ['$rootScope', '$scope', '$http', 'toastr', '$window', '$timeout', '$location', '$jwtAuth', '$translate', 'passwordPlaceholder',\n function($rootScope, $scope, $http, toastr, $window, $timeout, $location, $jwtAuth, $translate, passwordPlaceholder) {\n const authorizationService = service(AuthorizationService);\n const repositoryService = service(RepositoryService);\n\n $rootScope.$on('$translateChangeSuccess', function() {\n $scope.passwordPlaceholder = $translate.instant(passwordPlaceholder);\n });\n $scope.isAdmin = function() {\n return authorizationService.hasRole(UserRole.ROLE_ADMIN);\n };\n $scope.hasExternalAuth = function() {\n return $jwtAuth.hasExternalAuth();\n };\n\n $scope.hasEditRestrictions = function() {\n return $scope.user && $scope.user.username === UserType.ADMIN;\n };\n\n $scope.isOverrideAuth = function() {\n return $jwtAuth.isDefaultAuthEnabled();\n };\n\n $scope.setGrantedAuthorities = function() {\n function pushAuthority(...authorities) {\n for (let i = 0; i < authorities.length; i++) {\n const authority = authorities[i];\n if (_.indexOf($scope.user.grantedAuthorities, authority) < 0) {\n $scope.user.grantedAuthorities.push(authority);\n }\n }\n }\n\n $scope.user.grantedAuthorities = [];\n\n $scope.repositoryCheckError = true;\n if ($scope.userType === UserType.ADMIN) {\n $scope.repositoryCheckError = false;\n pushAuthority(UserRole.ROLE_ADMIN);\n } else if ($scope.userType === UserType.REPO_MANAGER) {\n $scope.repositoryCheckError = false;\n pushAuthority(UserRole.ROLE_REPO_MANAGER);\n } else {\n pushAuthority(UserRole.ROLE_USER);\n for (const index in $scope.grantedAuthorities.WRITE_REPO) {\n if ($scope.grantedAuthorities.WRITE_REPO[index]) {\n $scope.repositoryCheckError = false;\n pushAuthority(WRITE_REPO_PREFIX + index, READ_REPO_PREFIX + index);\n }\n }\n for (const index in $scope.grantedAuthorities.READ_REPO) {\n if ($scope.grantedAuthorities.READ_REPO[index]) {\n $scope.repositoryCheckError = false;\n pushAuthority(READ_REPO_PREFIX + index);\n }\n }\n for (const index in $scope.grantedAuthorities.GRAPHQL) {\n if ($scope.grantedAuthorities.GRAPHQL[index]) {\n pushAuthority(GRAPHQL_PREFIX + index);\n }\n }\n }\n if ($scope.customRoles) {\n $scope.customRoles.forEach((role) => pushAuthority('CUSTOM_' + role));\n }\n };\n\n $scope.$watch('userType', function() {\n if (!$scope.isUser()) {\n $scope.customRoles = '';\n }\n });\n\n $scope.isUser = function() {\n return $scope.userType === UserType.USER;\n };\n\n $scope.hasReadPermission = function(repository) {\n const uniqueKey = repositoryService.getLocationSpecificId(repository);\n return $scope.userType === UserType.ADMIN\n || $scope.userType === UserType.REPO_MANAGER\n || repository.id !== SYSTEM_REPO && ($scope.grantedAuthorities.READ_REPO['*']\n || $scope.grantedAuthorities.WRITE_REPO['*'])\n || $scope.grantedAuthorities.READ_REPO[uniqueKey]\n || $scope.grantedAuthorities.WRITE_REPO[uniqueKey];\n };\n\n $scope.hasWritePermission = function(repoOrWildCard) {\n const uniqueKey = repositoryService.getLocationSpecificId(repoOrWildCard);\n return $scope.userType === UserType.ADMIN\n || $scope.userType === UserType.REPO_MANAGER\n || repoOrWildCard.id !== SYSTEM_REPO && $scope.grantedAuthorities.WRITE_REPO['*']\n || $scope.grantedAuthorities.WRITE_REPO[uniqueKey];\n };\n\n $scope.hasGraphqlPermission = function(repository) {\n const uniqueKey = repositoryService.getLocationSpecificId(repository);\n return repository.id !== SYSTEM_REPO && $scope.grantedAuthorities.GRAPHQL['*']\n || $scope.grantedAuthorities.GRAPHQL[uniqueKey];\n };\n\n $scope.readCheckDisabled = function(repoOrWildCard) {\n return $scope.hasWritePermission(repoOrWildCard)\n || repoOrWildCard.id !== SYSTEM_REPO && repoOrWildCard !== '*' && $scope.grantedAuthorities.READ_REPO['*']\n || $scope.hasEditRestrictions();\n };\n\n $scope.writeCheckDisabled = function(repoOrWildCard) {\n return $scope.userType === UserType.ADMIN\n || $scope.userType === UserType.REPO_MANAGER\n || repoOrWildCard.id !== SYSTEM_REPO && repoOrWildCard !== '*' && $scope.grantedAuthorities.WRITE_REPO['*']\n || $scope.hasEditRestrictions();\n };\n\n /**\n * Determines whether the GraphQL checkbox for a given repository or wildcard\n * should be disabled.\n *\n * @param {Object|string} repoOrWildCard - A repo object or the string wildcard '*'\n * @returns {boolean} true if disabled, false if enabled\n */\n $scope.graphqlCheckDisabled = function(repoOrWildCard) {\n if ($scope.userType === UserType.ADMIN || $scope.userType === UserType.REPO_MANAGER) {\n return true;\n }\n\n if ($scope.hasEditRestrictions()) {\n return true;\n }\n\n if (repoOrWildCard !== '*' && $scope.grantedAuthorities.GRAPHQL['*']) {\n return true;\n }\n\n if (repoOrWildCard === '*' && $scope.grantedAuthorities.GRAPHQL['*']) {\n return false;\n }\n\n let uniqueKey;\n if (repoOrWildCard !== null && typeof repoOrWildCard === 'object') {\n uniqueKey = repositoryService.getLocationSpecificId(repoOrWildCard);\n } else {\n uniqueKey = repoOrWildCard;\n }\n\n const hasReadWildcard = $scope.grantedAuthorities.READ_REPO['*'];\n const hasWriteWildcard = $scope.grantedAuthorities.WRITE_REPO['*'];\n const hasReadForRepo = $scope.grantedAuthorities.READ_REPO[uniqueKey];\n const hasWriteForRepo = $scope.grantedAuthorities.WRITE_REPO[uniqueKey];\n\n return !(hasReadWildcard || hasWriteWildcard || hasReadForRepo || hasWriteForRepo);\n };\n\n $scope.createUniqueKey = function(repository) {\n return repositoryService.getLocationSpecificId(repository);\n };\n\n $scope.userType = UserType.USER;\n $scope.grantedAuthorities = {\n [READ_REPO]: {},\n [WRITE_REPO]: {},\n [GRAPHQL]: {},\n };\n\n $scope.validatePassword = function() {\n if ($scope.noPassword) {\n $scope.passwordError = '';\n $scope.confirmPasswordError = '';\n return true;\n }\n if ($scope.user.password !== $scope.user.confirmpassword) {\n if (!$scope.user.password) {\n $scope.passwordError = $translate.instant('security.enter.password');\n $scope.confirmPasswordError = '';\n } else {\n $scope.passwordError = '';\n $scope.confirmPasswordError = $translate.instant('security.confirm.password');\n }\n return false;\n } else {\n $scope.passwordError = '';\n $scope.confirmPasswordError = '';\n }\n return true;\n };\n\n $scope.isLocalAuthentication = function() {\n return $jwtAuth.getAuthImplementation() === 'Local';\n };\n\n $scope.updateUser = function() {\n if (!$scope.validateForm()) {\n return false;\n }\n\n if ($scope.isLocalAuthentication()) {\n $scope.setGrantedAuthorities();\n }\n\n if (!$scope.repositoryCheckError) {\n $scope.updateUserHttp();\n }\n };\n\n $scope.setNoPassword = function() {\n if ($scope.noPassword) {\n $scope.user.password = '';\n $scope.user.confirmpassword = '';\n $scope.passwordError = '';\n $scope.confirmPasswordError = '';\n }\n };\n\n $scope.shouldDisableSameAs = function() {\n const sameAsCheckbox = $('#sameAsCheck');\n if ($scope.user && !$scope.user.appSettings.DEFAULT_INFERENCE && sameAsCheckbox.prop('checked')) {\n sameAsCheckbox.prop('checked', false);\n $scope.user.appSettings.DEFAULT_SAMEAS = false;\n }\n\n return $scope.user && !$scope.user.appSettings.DEFAULT_INFERENCE;\n };\n\n /**\n * The validity of the last user typed custom role.\n * @type {boolean}\n */\n $scope.isRoleValid = true;\n const minTagLength = 2;\n\n /**\n * Adds the user typed custom role and sets role validity flag to true.\n *\n * @param {{text: string}} role the user input\n * @return {{text: string}} the user input in uppercase\n */\n $scope.addCustomRole = function(role) {\n $scope.isRoleValid = true;\n role.text = role.text.toUpperCase();\n return role;\n };\n\n /**\n * Checks if the input text is valid or not.\n *\n * @param {{text: string}} fieldValue the user input\n * @return {boolean} true if valid, otherwise false\n */\n $scope.isCustomRoleValid = function(fieldValue) {\n $scope.isRoleValid = fieldValue.text.length >= minTagLength;\n return $scope.isRoleValid;\n };\n\n /**\n * Checks if the user pressed the 'Backspace' or 'Delete' key and sets the role validity flag accordingly.\n *\n * @param {Object} event\n */\n $scope.checkUserInput = function(event) {\n // If the key pressed is the backspace or delete key, the tag error message will be hidden\n if (event.keyCode === 8 || event.keyCode === 46) {\n $scope.isRoleValid = true;\n }\n };\n\n /**\n * Sets the role validity flag to true.\n */\n $scope.removeErrorOnCut = function() {\n // If the user cuts text from the field, the tag error message will be hidden\n $scope.isRoleValid = true;\n };\n }]);\n\nsecurityModule.controller('AddUserCtrl', ['$scope', '$http', 'toastr', '$window', '$timeout', '$location', '$jwtAuth', '$controller', 'SecurityService', 'ModalService', '$translate',\n function($scope, $http, toastr, $window, $timeout, $location, $jwtAuth, $controller, SecurityService, ModalService, $translate) {\n // eslint-disable-next-line no-invalid-this\n angular.extend(this, $controller('CommonUserCtrl', {$scope: $scope, passwordPlaceholder: 'security.password.placeholder'}));\n const usersService = service(UsersService);\n\n $scope.mode = 'add';\n $scope.saveButtonText = $translate.instant('common.create.btn');\n $scope.goBack = function() {\n const timer = $timeout(function() {\n $window.history.back();\n }, 100);\n $scope.$on('$destroy', function() {\n $timeout.cancel(timer);\n });\n };\n $scope.pageTitle = $translate.instant('view.create.user.title');\n $scope.passwordPlaceholder = $translate.instant('security.password.placeholder');\n\n $scope.user = {\n 'username': '',\n 'password': '',\n 'confirmpassword': '',\n 'grantedAuthorities': [],\n 'appSettings': {\n 'DEFAULT_SAMEAS': true,\n 'DEFAULT_INFERENCE': true,\n 'EXECUTE_COUNT': true,\n 'IGNORE_SHARED_QUERIES': false,\n 'DEFAULT_VIS_GRAPH_SCHEMA': true,\n },\n };\n\n $scope.submit = function() {\n if ($scope.noPassword && $scope.userType === UserType.ADMIN) {\n ModalService.openSimpleModal({\n title: $translate.instant('security.create.admin'),\n message: $translate.instant('security.admin.login.warning'),\n warning: true,\n }).result.then(function() {\n $scope.createUser();\n });\n } else {\n $scope.createUser();\n }\n };\n\n $scope.createUserHttp = function() {\n $scope.loader = true;\n const user = new User({\n username: $scope.user.username,\n password: $scope.user.password,\n appSettings: new AppSettings($scope.user.appSettings),\n authorities: new AuthorityList($scope.user.grantedAuthorities),\n });\n usersService.createUser(user)\n .then(() => {\n toastr.success($translate.instant('security.user.created', {name: $scope.user.username}));\n const timer = $timeout(function() {\n $scope.loader = false;\n $location.path('/users');\n }, 2000);\n $scope.$on('$destroy', function() {\n $timeout.cancel(timer);\n });\n })\n .catch(async (data) => {\n $scope.loader = false;\n toastr.error(getError(data), $translate.instant('common.error'));\n });\n };\n\n $scope.createUser = function() {\n if ($scope.validateForm()) {\n $scope.setGrantedAuthorities();\n\n if (!$scope.repositoryCheckError) {\n $scope.createUserHttp();\n }\n }\n };\n\n $scope.validateForm = function() {\n let result = true;\n if (!$scope.user.username) {\n $scope.usernameError = $translate.instant('security.enter.username');\n result = false;\n } else {\n $scope.usernameError = '';\n }\n if ($scope.noPassword) {\n $scope.passwordError = '';\n $scope.confirmPasswordError = '';\n } else {\n if (!$scope.user.password) {\n $scope.passwordError = $translate.instant('security.enter.password');\n result = false;\n } else {\n $scope.passwordError = '';\n }\n if (!$scope.user.confirmpassword || $scope.user.password !== $scope.user.confirmpassword) {\n $scope.confirmPasswordError = $translate.instant('security.confirm.password');\n result = false;\n } else {\n $scope.confirmPasswordError = '';\n }\n }\n\n return result;\n };\n }]);\n\nsecurityModule.controller('EditUserCtrl', ['$scope', '$http', 'toastr', '$window', '$routeParams', '$timeout', '$location', '$jwtAuth', '$controller', 'SecurityService', 'ModalService', '$translate',\n function($scope, $http, toastr, $window, $routeParams, $timeout, $location, $jwtAuth, $controller, SecurityService, ModalService, $translate) {\n // eslint-disable-next-line no-invalid-this\n angular.extend(this, $controller('CommonUserCtrl', {$scope: $scope, passwordPlaceholder: 'security.new.password'}));\n const usersService = service(UsersService);\n const authorizationService = service(AuthorizationService);\n const securityContextService = service(SecurityContextService);\n\n $scope.mode = 'edit';\n $scope.saveButtonText = $translate.instant('common.save.btn');\n $scope.goBack = function() {\n const timer = $timeout(function() {\n $window.history.back();\n }, 100);\n $scope.$on('$destroy', function() {\n $timeout.cancel(timer);\n });\n };\n $scope.params = $routeParams;\n $scope.pageTitle = $translate.instant('view.edit.user.title', {userId: $scope.params.userId});\n $scope.passwordPlaceholder = $translate.instant('security.new.password');\n $scope.userType = UserType.USER;\n const defaultUserSettings = {\n 'DEFAULT_SAMEAS': true,\n 'DEFAULT_INFERENCE': true,\n 'EXECUTE_COUNT': true,\n 'IGNORE_SHARED_QUERIES': false,\n 'DEFAULT_VIS_GRAPH_SCHEMA': true,\n };\n\n if (!authorizationService.hasRole(UserRole.ROLE_ADMIN)) {\n $location.url('settings');\n }\n $scope.getUserData = function() {\n usersService.getUser($scope.params.userId).then(function(data) {\n $scope.user = {username: data.username};\n $scope.user.password = '';\n $scope.user.confirmpassword = '';\n $scope.user.external = data.external;\n $scope.user.appSettings = data.appSettings || defaultUserSettings;\n $scope.userType = data.getUserType();\n $scope.grantedAuthorities = data.authorities.toUIModel();\n $scope.customRoles = data.authorities.getCustomRoles();\n }).catch(function(data) {\n const msg = getError(data);\n toastr.error(msg, $translate.instant('common.error'));\n });\n };\n\n $scope.getUserData();\n\n $scope.submit = function() {\n if ($scope.noPassword && $scope.userType === UserType.ADMIN) {\n ModalService.openSimpleModal({\n title: $translate.instant('security.save.admin.settings'),\n message: $translate.instant('security.admin.pass.unset'),\n warning: true,\n }).result.then(function() {\n $scope.updateUser();\n });\n } else {\n $scope.updateUser();\n }\n };\n\n $scope.updateUserHttp = function() {\n $scope.loader = true;\n const user = new User({\n username: $scope.user.username,\n password: $scope.noPassword ? '' : $scope.user.password || undefined,\n appSettings: new AppSettings($scope.user.appSettings),\n authorities: new AuthorityList($scope.user.grantedAuthorities),\n });\n usersService.updateUser(user).then(() => {\n toastr.success($translate.instant('security.user.updated', {name: $scope.user.username}));\n const timer = $timeout(function() {\n $scope.loader = false;\n $window.history.back();\n }, 2000);\n $scope.$on('$destroy', function() {\n $timeout.cancel(timer);\n });\n // if we update the settings of the currently logged user, update the principal\n const principal = securityContextService.getAuthenticatedUser();\n if ($scope.user.username === principal.username) {\n // TODO: Discuss what's the point in updating the principal's appSettings here?!\n // principal.appSettings = $scope.user.appSettings;\n principal.setAppSettings(new AppSettings($scope.user.appSettings));\n }\n }).catch((data) => {\n const msg = getError(data);\n $scope.loader = false;\n toastr.error(msg, $translate.instant('common.error'));\n });\n };\n\n $scope.validateForm = function() {\n return $scope.validatePassword();\n };\n }]);\n\nsecurityModule.controller('RolesMappingController', ['$scope', 'toastr', 'SecurityService', '$translate',\n function($scope, toastr, SecurityService, $translate) {\n $scope.debugMapping = function(role, mapping) {\n const method = mapping.split(':');\n SecurityService.getRolesMapping({\n role: role,\n method: method[1],\n mapping: method[0],\n });\n };\n\n const loadRoles = function() {\n SecurityService.getRoles()\n .success(function(data) {\n $scope.roleMappings = data;\n $scope.roles = _.keys($scope.roleMappings);\n $scope.mappings = _.keys($scope.roleMappings[$scope.roles[0]]);\n const permissionsCount = _.map($scope.roles, function(role) {\n return [role, _.filter($scope.roleMappings[role]).length];\n });\n $scope.roles = _.reverse(_.map(_.orderBy(permissionsCount, function(p) {\n return p[1];\n }), function(p) {\n return p[0];\n }));\n })\n .error(function(data) {\n const msg = getError(data);\n $scope.loader = false;\n toastr.error(msg, $translate.instant('common.error'));\n });\n };\n\n $scope.$on('repositoryIsSet', function() {\n loadRoles();\n });\n }]);\n\nsecurityModule.controller('DeleteUserCtrl', ['$scope', '$uibModalInstance', 'username', function($scope, $uibModalInstance, username) {\n $scope.username = username;\n\n $scope.ok = function() {\n $uibModalInstance.close();\n };\n\n $scope.cancel = function() {\n $uibModalInstance.dismiss('cancel');\n };\n}]);\n"],"names":["SYSTEM_REPO","READ_REPO","READ_REPO_PREFIX","WRITE_REPO","GRAPHQL","WRITE_REPO_PREFIX","GRAPHQL_PREFIX","angular","module","directive","restrict","link","scope","element","attrs","subscriptions","hasCustomOrNegatedPrefix","tag","startsWith","isNgTagsInput","nodeName","toLowerCase","ngModel","ngModelCtrl","controller","$parsers","push","viewValue","Array","isArray","$warning","some","$watch","newVal","$on","unsubscribeListeners","forEach","subscription","securityModule","$scope","$uibModal","toastr","$window","$jwtAuth","$timeout","ModalService","SecurityService","$translate","authorizationService","service","AuthorizationService","authenticationService","AuthenticationService","securityServiceAPI","SecurityServiceAPI","toastrService","OntoToastrService","usersService","UsersService","repositoryService","RepositoryService","usersData","loader","securityEnabled","isSecurityEnabled","hasExternalAuth","getAuthImplementation","freeAccessEnabled","hasFreeAccess","getUsers","then","data","map","user","username","dateCreated","userType","getUserType","userTypeDescription","getUserTypeDescription","repositories","authorities","getRepositoriesPermissions","customRoles","getCustomRoles","catch","msg","getError","error","instant","toggleSecurity","location","reload","setFreeAccess","enabled","authSettings","toggleFreeAccess","updateFreeAccess","getFreeAccess","freeAccessAuthSettings","mapGrantedAuthoritiesResponseToModel","getItems","appSettings","configureFreeAccess","updatedFreeAccessAuthSettings","isFreeAccessEnabled","translateKey","success","status","err","open","templateUrl","resolve","defaultAuthorities","repoIds","_","mapKeys","getRepositories","r","getLocationSpecificId","each","a","indexOf","hasOwnProperty","substr","result","mapAuthSettingsResponseToModel","editFreeAccess","removeUser","openSimpleModal","title","message","name","warning","deleteUser","encodeURIComponent","$http","$uibModalInstance","$rootScope","grantedAuthorities","hasActiveLocation","isEmpty","globalLocation","globalRepositories","ok","auth","repositoryCheckError","index","close","cancel","dismiss","createUniqueKey","repository","$location","passwordPlaceholder","isAdmin","hasRole","UserRole","ROLE_ADMIN","hasEditRestrictions","UserType","ADMIN","isOverrideAuth","isDefaultAuthEnabled","setGrantedAuthorities","pushAuthority","i","length","authority","REPO_MANAGER","ROLE_REPO_MANAGER","ROLE_USER","role","isUser","USER","hasReadPermission","uniqueKey","id","hasWritePermission","repoOrWildCard","hasGraphqlPermission","readCheckDisabled","writeCheckDisabled","graphqlCheckDisabled","hasReadWildcard","hasWriteWildcard","hasReadForRepo","hasWriteForRepo","validatePassword","noPassword","passwordError","confirmPasswordError","password","confirmpassword","isLocalAuthentication","updateUser","validateForm","updateUserHttp","setNoPassword","shouldDisableSameAs","sameAsCheckbox","$","DEFAULT_INFERENCE","prop","DEFAULT_SAMEAS","isRoleValid","addCustomRole","text","toUpperCase","isCustomRoleValid","fieldValue","checkUserInput","event","keyCode","removeErrorOnCut","$controller","extend","this","mode","saveButtonText","goBack","timer","history","back","pageTitle","submit","createUser","createUserHttp","User","AppSettings","AuthorityList","path","async","usernameError","$routeParams","securityContextService","SecurityContextService","params","userId","defaultUserSettings","url","getUserData","getUser","external","toUIModel","undefined","principal","getAuthenticatedUser","setAppSettings","debugMapping","mapping","method","split","getRolesMapping","getRoles","roleMappings","roles","keys","mappings","permissionsCount","filter","reverse","orderBy","p"],"ignoreList":[],"sourceRoot":""}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export const __webpack_esm_id__=95953;export const __webpack_esm_ids__=[40618,62608,65191,95953];export const __webpack_esm_modules__={40618(){angular.module("graphdb.framework.core.directives.multiselect",[]).directive("multiSelectDropdown",function(){return{restrict:"E",scope:{items:"=",placeholder:"@?",onChange:"&?",labelKeys:"=?"},templateUrl:"js/angular/core/directives/multiselect-search/templates/multiselect-search.html",controller:["$scope","$document","$element","$filter","$timeout",function(e,t,o,n,r){e.open=!1,e.search={query:""},e.visibleItems=[];const i=[],a=e=>null===e?"":(""+e).toLowerCase(),s=()=>{const t=Array.isArray(e.items)?e.items:[],o=a(e.search.query);e.visibleItems=o?t.filter(e=>a(e.label).includes(o)):t},l=t=>{e.open&&(o[0].contains(t.target)||e.$applyAsync(function(){e.open=!1}))};e.toggleOpen=function(t){t&&t.stopPropagation(),e.open=!e.open,e.open&&r(function(){const e=o[0].querySelector(".multiselect-search");e&&e.focus()})},e.onKeydownMenu=function(t){"Escape"===t.key&&(e.open=!1,t.stopPropagation(),t.preventDefault(),r(function(){const e=o[0].querySelector(".multiselect-button");e&&e.focus()}))},e.selectedCount=function(){return Array.isArray(e.items)?e.items.filter(e=>e.selected).length:0},e.allFilteredSelected=function(){const t=e.visibleItems||[];return 0!==t.length&&t.every(e=>e.selected)},e.someFilteredSelected=function(){const t=e.visibleItems||[],o=t.some(e=>e.selected),n=t.every(e=>e.selected);return o&&!n},e.toggleSelectAll=function(t){t&&t.stopPropagation();const o=e.visibleItems||[],n=!e.allFilteredSelected();for(const e of o)e.selected=n;e.emitChange()},e.emitChange=function(){if("function"==typeof e.onChange){const t=(e.items||[]).filter(e=>e.selected);e.onChange({selected:t})}},t.on("click",l),i.push(e.$watch("search.query",s),e.$watchCollection("items",s)),e.$on("$destroy",()=>{t.off("click",l);for(const e of i)e()}),s()}]}})},62608(e,t,o){o.d(t,{X:()=>n});const n={SIMILARITY:"similarity",ELASTICSEARCH:"elasticsearch",OPENSEARCH:"opensearch"}},65191(){function e(e,t,o,n,r){e.externalIntegrationConfiguration=r.externalIntegrationConfiguration,e.difyExtension=r.difyExtensionUrl,e.queryMethods=r.queryMethodsUrl,e.agentId=r.agentId,e.agentName=r.agentName,e.close=()=>{t.dismiss({})},e.onCloseExternalIntegrationConfigurationModal=()=>{t.dismiss({})}}angular.module("graphdb.framework.ttyg.controllers.external-integration-configuration-modal",[]).controller("ExternalIntegrationConfigurationModalController",e),e.$inject=["$scope","$uibModalInstance","ModalService","$translate","dialogModel"]},84430(e,t,o){o(65191);var n=o(70826);function r(e,t,o){return{open:function(r){return t.getExternalUrl().then(t=>{const o=function(e,t){return{agentName:e.name,agentId:e.id,queryMethodsUrl:`${t}/rest/llm/tool/ttyg/${e.id}`,difyExtensionUrl:`${t}/rest/llm/ttyg/${e.id}/dify`}}(r,t.data);return e.open({templateUrl:"js/angular/ttyg/templates/modal/external-integration-configuration-modal.html",controller:"ExternalIntegrationConfigurationModalController",windowClass:"external-integration-configuration-modal",backdrop:"static",resolve:{dialogModel:()=>o}}).result.then(()=>{}).catch(()=>{})}).catch(e=>{o.error(getError(e,0,n.LE))})}}}angular.module("graphdb.framework.ttyg.services.externalIntegrationModal",["graphdb.framework.ttyg.controllers.external-integration-configuration-modal"]).factory("ExternalIntegrationModalService",r),r.$inject=["$uibModal","LocationsRestService","toastr"]},95953(e,t,o){var n=o(60529),r=o(28319),i=(o(51682),o(66989),o(36665),o(40618),o(69289),o(17187),o(84430),o(51445)),a=o(71920),s=o(70826),l=o(16135),c=o(76076),d=o(304),g=o(38940),m=o(62608);const u=d.I.logger;function p(e,t,o,d,p,y,h,I,f,v,S,E,M,x,F,_,C,A,T){e.AGENT_OPERATION=s.A1,e.operation=E.operation,e.savingAgent=!1,e.agentFormModel=E.agentFormModel,e.activeRepositoryInfo=E.activeRepositoryInfo,e.extractionMethodLoaderFlags={[r.Ht.SIMILARITY]:!1},e.activeRepositoryList=E.activeRepositoryList,e.extractionMethods=r.Ht,e.additionalExtractionMethods=r.eA,e.ExtractionMethodTemplates=F,e.showAdvancedSettings=!1,e.showHighTemperatureWarning=!1,e.showSystemInstructionWarning=!1,e.retrievalConnectors=[],e.ftsEnabled=!1,e.autocompleteSuggestions=[],e.showContextSize=null!==e.agentFormModel.contextSize,e.vectorFields=[],e.documentationUrlForSimilarity=c.m.getDocumentationUrl(T.productShortVersion,"talk-to-graph.html#prerequisites-and-configuration"),e.similarityOptionsGrouped=[],e.toggleExtractionMethod=t=>{t.expanded=t.selected,e.agentSettingsForm.extractionMethods.$setTouched(),k(),j[t.method](t)},e.onExtractionMethodPanelToggle=e=>{e.toggleCollapse(),j[e.method](e)},e.toggleAdditionalExtractionMethod=t=>{t.expanded=t.selected,e.checkAutocompleteIndexEnabled(),q[t.method](t)},e.onAdditionalExtractionMethodPanelToggle=e=>{e.toggleCollapse(),q[e.method](e)},e.helpInfoForModel={ttygHelpInfo:function(){const e=(0,n.Gz)(S.instant("ttyg.agent.create_agent_modal.form.model.hint"));return I.trustAsHtml(e)}(),linkText:S.instant("ttyg.agent.create_agent_modal.form.model.link_text"),documentationUrl:c.m.getDocumentationUrl(T.productShortVersion,"talk-to-graph.html#prerequisites-and-configuration")},e.getFTSDisabledHelpMessage=()=>{const t=(0,n.Gz)(S.instant("ttyg.agent.create_agent_modal.form.fts_search.fts_disabled_message",{repositoryEditPage:"repository/edit/"+e.agentFormModel.repositoryId}));return I.trustAsHtml(t)},e.goToAutocompleteView=t=>{t.preventDefault(),M.emit(a.I.GO_TO_AUTOCOMPLETE_INDEX_VIEW,{repositoryId:e.agentFormModel.repositoryId})},e.goToCreateSimilarityView=t=>{t.preventDefault(),M.emit(a.I.GO_TO_CREATE_SIMILARITY_VIEW,{repositoryId:e.agentFormModel.repositoryId})},e.goToConnectorsView=t=>{t.preventDefault(),M.emit(a.I.GO_TO_CONNECTORS_VIEW,{repositoryId:e.agentFormModel.repositoryId})},e.ok=()=>{const t=e.agentFormModel.toPayload();return R[e.operation](t)},e.cancel=()=>{t.dismiss({})},e.close=()=>{t.dismiss({})},e.updateSimilaritySearchPanel=(t=!1)=>{const o=e.agentFormModel.assistantExtractionMethods.getSimilarityExtractionMethod();o.selected&&(t&&(o.similarityIndex=null),H(o,!0))},e.updateRetrievalConnectorPanel=(t=!1)=>{const o=e.agentFormModel.assistantExtractionMethods.getRetrievalExtractionMethod();o.selected&&(t&&(o.retrievalConnectorInstance=null),N(o))},e.checkIfFTSEnabled=()=>{e.agentFormModel.repositoryId?e.agentFormModel.assistantExtractionMethods.getFTSSearchExtractionMethod().selected?(e.extractionMethodLoaderFlags[r.Ht.FTS_SEARCH]=!0,h.getRepositoryModel({id:e.agentFormModel.repositoryId}).then(t=>{e.ftsEnabled=t.getParamValue(i.YF.enableFtsIndex)}).catch(e=>{O(e,"ttyg.agent.messages.error_repository_config_loading")}).finally(()=>{e.extractionMethodLoaderFlags[r.Ht.FTS_SEARCH]=!1,e.agentSettingsForm.$setValidity("FTSDisabled",e.ftsEnabled)})):e.agentSettingsForm.$setValidity("FTSDisabled",!0):e.agentSettingsForm.$setValidity("FTSDisabled",!1)},e.openExternalIntegrationConfig=()=>{const t=e.agentFormModel;A.open(t)},e.onRepositoryChange=()=>{Y(!0,!0)},e.checkAutocompleteIndexEnabled=t=>{if(t||(t=e.agentFormModel.additionalExtractionMethods.additionalExtractionMethods.find(e=>e.method===r.eA.AUTOCOMPLETE_IRI_DISCOVERY_SEARCH)),t&&!t.selected||!e.agentFormModel.repositoryId)return;const o=V();_.checkAutocompleteStatus(o.repositoryId,o.repositoryLocation).then(t=>{e.autocompleteEnabled=t,e.agentSettingsForm.$setValidity("autocompleteDisabled",t)}).catch(t=>{e.agentSettingsForm.$setValidity("autocompleteDisabled",!1),f.error(getError(t))})},e.onRestoreDefaultContextSize=()=>{e.agentFormModel.contextSize=e.agentFormModel.contextSizeCopy},e.onRestoreDefaultSystemInstructions=()=>{e.agentFormModel.instructions.systemInstruction=e.agentFormModel.instructions.systemInstructionCopy},e.onRestoreDefaultUserInstructions=()=>{e.agentFormModel.instructions.userInstruction=e.agentFormModel.instructions.userInstructionCopy},e.onTemperatureChange=()=>{e.showHighTemperatureWarning=e.agentFormModel.temperature.value>1},e.onSystemInstructionChange=()=>{""===e.agentFormModel.instructions.systemInstruction||e.showSystemInstructionWarning||(e.showSystemInstructionWarning=!0,o.openModalAlert({title:S.instant("ttyg.agent.create_agent_modal.form.system_instruction.overriding_system_instruction_warning.title"),message:S.instant("ttyg.agent.create_agent_modal.form.system_instruction.overriding_system_instruction_warning.body")}).result.then(function(){})),""===e.agentFormModel.instructions.systemInstruction&&(e.showSystemInstructionWarning=!1)},e.onExplainAgentSettings=()=>{const t=e.agentFormModel.toPayload();x.explainAgentSettings(t).then(e=>{const t={templateUrl:"js/angular/ttyg/templates/modal/agent-instructions-explain-modal.html",controller:"AgentInstructionsExplainModalController",windowClass:"agent-instructions-explain-modal",backdrop:"static",resolve:{dialogModel:function(){return{agentInstructionsExplain:e}}},size:"lg"};d.open(t).result.then(()=>{})}).catch(e=>{f.error(getError(e,0,s.LE))})},e.getSuggestions=t=>{const o=t.target.value;C.getAutocompleteSuggestions(o).then(l.C).then(t=>{e.autocompleteSuggestions=t.map(e=>({text:e.value}))}).catch(e=>{f.error(getError(e,0,s.LE))})},e.onVectorFieldsChange=function(e){e.connectorFields=e.selectedConnectorField?[e.selectedConnectorField]:[]},e.hasConnectorData=()=>!(!e.connectorMap||!Object.keys(e.connectorMap).length),e.shouldShowVectorFields=t=>{if(!t)return!1;const o=t.connectorType,n=t.similarityIndex;if(!D(o))return!1;if(Array.isArray(e.vectorFields))return e.vectorFields.length>0;const r=b(o,n);return Array.isArray(r)&&r.length>0},e.onSimilarityIndexChange=t=>{const o=t&&t.similarityIndexOption;if(t.selectedConnectorField=void 0,t.connectorFields=[],!o)return t.connectorType=null,t.similarityIndex="",void(e.vectorFields=[]);t.connectorType=o.provider,t.similarityIndex=o.value,e.vectorFields=b(o.provider,o.value)};const b=(t,o)=>{const n=e.connectorMap||{};return n[t]&&n[t][o]?n[t][o]:[]},R={[s.A1.CREATE]:e=>$(e),[s.A1.EDIT]:e=>w(e),[s.A1.CLONE]:e=>L(e)},$=o=>(e.savingAgent=!0,x.createAgent(o).then(e=>{t.close(e),f.success(S.instant("ttyg.agent.messages.agent_save_successfully",{agentName:e.name}))}).catch(e=>{f.error(getError(e,0,s.LE))}).finally(()=>{e.savingAgent=!1})),w=o=>(e.savingAgent=!0,x.editAgent(o).then(e=>{t.close(e),f.success(S.instant("ttyg.agent.messages.agent_save_successfully",{agentName:e.name}))}).catch(e=>{f.error(getError(e,0,s.LE))}).finally(()=>{e.savingAgent=!1})),L=o=>(e.savingAgent=!0,x.createAgent(o).then(e=>{t.close(e),f.success(S.instant("ttyg.agent.messages.agent_save_successfully",{agentName:e.name}))}).catch(e=>{f.error(getError(e,0,s.LE))}).finally(()=>{e.savingAgent=!1})),O=(e,t)=>{u.error(e),f.error(S.instant(t))},k=()=>{e.agentSettingsForm.extractionMethods.$setValidity("required",e.agentFormModel.hasExtractionMethodSelected())},V=()=>{const t=e.activeRepositoryList.find(t=>t.value===e.agentFormModel.repositoryId);return{repositoryId:t?t.data.repository.id:void 0,repositoryLocation:t?t.data.repository.location:void 0}},D=e=>e===m.X.OPENSEARCH||e===m.X.ELASTICSEARCH,H=(t,o=!1)=>{if(t.selected||e.agentSettingsForm.$setValidity("missingIndex",!0),t.selected){const t=e.agentSettingsForm&&e.agentSettingsForm.connectorInstances,o=!t||t.$pristine;if(e.connectorMap&&!o)return}if(e.agentFormModel.repositoryId&&t.expanded){e.extractionMethodLoaderFlags[t.method]=!0;const n=V();p.getSimilarityIndexesWithVectorFields(n.repositoryId).then(n=>{e.connectorMap=n;const r=U(n);(t=>{e.similarityOptionsGrouped=[],Object.entries(t).forEach(([t,o])=>{const n=S.instant(`ttyg.agent.create_agent_modal.form.similarity_instance_type_label.${t}`);Object.keys(o||{}).forEach(o=>{e.similarityOptionsGrouped.push({provider:t,label:o,value:o,group:n})})})})(n),P(r,t),(t=>{const o=t.connectorType,n=t.similarityIndex;D(o)?e.vectorFields=b(o,n):e.vectorFields=[]})(t),e.agentSettingsForm.$setValidity("missingIndex",!t.selected||e.hasConnectorData()),(o||t.connectorFields&&0===t.connectorFields.length)&&e.onSimilarityIndexChange(t)}).catch(t=>{e.connectorMap=null,e.agentSettingsForm.$setValidity("missingIndex",!1),O(t,"ttyg.agent.messages.error_similarity_indexes_loading")}).finally(()=>{e.extractionMethodLoaderFlags[t.method]=!1})}},P=(t,o)=>{if(!t.length)return o.connectorType="",o.similarityIndex="",void(o.similarityIndexOption=void 0);const n=o.connectorType,r=o.similarityIndex,i=t.find(e=>e.data.connectorType===n&&e.value===r)||t[0];o.connectorType=i.data.connectorType,o.similarityIndex=i.value;const a=(e.similarityOptionsGrouped||[]).find(e=>e.provider===o.connectorType&&e.value===o.similarityIndex);o.similarityIndexOption=a||void 0},U=e=>{const t=[];return Object.entries(e).forEach(([e,o])=>{Object.entries(o).forEach(([o,n])=>{t.push(new g.rx({label:o,value:o,data:{connectorType:e,connectorFields:n}}))})}),t},N=t=>{if(e.agentFormModel.repositoryId&&(t.selected||e.agentSettingsForm.$setValidity("missingConnector",!0),t.expanded)){e.extractionMethodLoaderFlags[t.method]=!0;const o=V();y.getConnectorPrefixByName("ChatGPT Retrieval",o.repositoryId,o.repositoryLocation).then(e=>y.getConnectorsByTypeAsSelectMenuOptions(e,o.repositoryId,o.repositoryLocation)).then(o=>{e.retrievalConnectors=o,e.agentSettingsForm.$setValidity("missingConnector",!t.selected||!(!o||!o.length)),G(e.retrievalConnectors,t)}).catch(t=>{e.agentSettingsForm.$setValidity("missingConnector",!1),O(t,"ttyg.agent.messages.error_retrieval_connectors_loading")}).finally(()=>{e.extractionMethodLoaderFlags[t.method]=!1})}},G=(e,t)=>{if(0===e.length)return void(t.retrievalConnectorInstance=null);const o=e.find(e=>e.value===t.retrievalConnectorInstance);t.retrievalConnectorInstance=o?o.value:e[0].value},j={[r.Ht.FTS_SEARCH]:t=>{e.checkIfFTSEnabled()},[r.Ht.SPARQL]:e=>{},[r.Ht.SIMILARITY]:e=>H(e),[r.Ht.RETRIEVAL]:e=>N(e)},q={[r.eA.AUTOCOMPLETE_IRI_DISCOVERY_SEARCH]:e=>W(e),[r.eA.IRI_DISCOVERY_SEARCH]:()=>{}},W=t=>{t.selected||e.agentSettingsForm.$setValidity("autocompleteDisabled",!0),e.checkAutocompleteIndexEnabled(t)},Y=(t=!1,o=!1)=>{e.checkIfFTSEnabled(),e.updateSimilaritySearchPanel(t),e.updateRetrievalConnectorPanel(o),e.checkAutocompleteIndexEnabled()},z=()=>{document.hidden||Y()},X=(e,t)=>{const o=document.getElementById(e);o&&(o.value=t)};document.addEventListener("visibilitychange",z),e.$on("$destroy",()=>{document.removeEventListener("visibilitychange",z)}),V().repositoryId||(e.agentFormModel.repositoryId=null),setTimeout(k,0),t.rendered.then(()=>{X("temperatureSlider",e.agentFormModel.temperature.value),X("topPSlider",e.agentFormModel.topP.value)})}angular.module("graphdb.framework.ttyg.controllers.agent-settings-modal",["graphdb.framework.core.services.similarity","graphdb.framework.core.services.connectors","graphdb.framework.rest.repositories.service","graphdb.framework.ttyg.controllers.agent-instructions-explain-modal","graphdb.framework.ttyg.services.externalIntegrationModal","ngTagsInput","graphdb.framework.core.directives.multiselect"]).constant("ExtractionMethodTemplates",{iri_discovery_search:"iri-discovery-search",autocomplete_iri_discovery_search:"autocomplete-iri-discovery-search"}).filter("map",function(){return function(e,t){return Array.isArray(e)?e.map(function(e){return e[t]}):e}}).controller("AgentSettingsModalController",p),p.$inject=["$scope","$uibModalInstance","ModalService","$uibModal","SimilarityService","ConnectorsService","RepositoriesRestService","$sce","toastr","UriUtils","$translate","dialogModel","TTYGContextService","TTYGService","ExtractionMethodTemplates","AutocompleteService","AutocompleteRestService","ExternalIntegrationModalService","productInfo"]}};
|
|
2
|
-
//# sourceMappingURL=95953.ec1b9d5e568d43ec3dcf.bundle.js.map
|