graphdb-workbench 3.1.1-TR3 → 3.2.0-TR1
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/README.md +45 -0
- package/dist/10142.f47cd2aec05492fce7ce.bundle.js +2 -0
- package/dist/10142.f47cd2aec05492fce7ce.bundle.js.map +1 -0
- package/dist/10406.52677950658780fd8859.bundle.js +2 -0
- package/dist/{10406.7fed4b667b0d2813b305.bundle.js.map → 10406.52677950658780fd8859.bundle.js.map} +1 -1
- package/dist/12358.2061f29dc113149946a3.bundle.js +3 -0
- package/dist/12358.2061f29dc113149946a3.bundle.js.map +1 -0
- package/dist/{12396.6a14b6f5e2006b200818.bundle.js → 12396.4c26c8da50c790b0f39a.bundle.js} +2 -2
- package/dist/{12396.6a14b6f5e2006b200818.bundle.js.map → 12396.4c26c8da50c790b0f39a.bundle.js.map} +1 -1
- package/dist/14874.d6973a34188c0335fa12.bundle.js +2 -0
- package/dist/14874.d6973a34188c0335fa12.bundle.js.map +1 -0
- package/dist/{15535.a192d8a2d5f76b626c81.bundle.js → 15535.ce8d657c04f3401b9539.bundle.js} +2 -2
- package/dist/{15535.a192d8a2d5f76b626c81.bundle.js.map → 15535.ce8d657c04f3401b9539.bundle.js.map} +1 -1
- package/dist/{16162.9cfcb9db05b9cef9ef2c.bundle.js → 16162.8f482628d1b34d41d496.bundle.js} +2 -2
- package/dist/{16162.9cfcb9db05b9cef9ef2c.bundle.js.map → 16162.8f482628d1b34d41d496.bundle.js.map} +1 -1
- package/dist/{18961.d83ba5fd0855f3cfa7d7.bundle.js → 18961.c6505525fb0491b48f8b.bundle.js} +2 -2
- package/dist/{18961.d83ba5fd0855f3cfa7d7.bundle.js.map → 18961.c6505525fb0491b48f8b.bundle.js.map} +1 -1
- package/dist/19968.fdb823f9a12e11a633ec.bundle.js +2 -0
- package/dist/19968.fdb823f9a12e11a633ec.bundle.js.map +1 -0
- package/dist/{20287.8922d85f31b5c32871fa.bundle.js → 20287.c42f9d1d913c36e46931.bundle.js} +2 -2
- package/dist/{20287.8922d85f31b5c32871fa.bundle.js.map → 20287.c42f9d1d913c36e46931.bundle.js.map} +1 -1
- package/dist/20694.70b6e390d6397249c72d.bundle.js.map +1 -1
- package/dist/{21136.56c47558cdf33e965b38.bundle.js → 21136.199caea09a1c9ad90393.bundle.js} +2 -2
- package/dist/{21136.56c47558cdf33e965b38.bundle.js.map → 21136.199caea09a1c9ad90393.bundle.js.map} +1 -1
- package/dist/{21142.93c830c0610f98d282df.bundle.js → 21142.b690e00c8884fddb2bb3.bundle.js} +2 -2
- package/dist/{21142.93c830c0610f98d282df.bundle.js.map → 21142.b690e00c8884fddb2bb3.bundle.js.map} +1 -1
- package/dist/{21170.40b856a0c1059be48ff7.bundle.js → 21170.d5e3041241741d21080c.bundle.js} +2 -2
- package/dist/{21170.40b856a0c1059be48ff7.bundle.js.map → 21170.d5e3041241741d21080c.bundle.js.map} +1 -1
- package/dist/{21195.96a947771170a900d9e0.bundle.js → 21195.267abc9d42b711d0f17a.bundle.js} +2 -2
- package/dist/{21195.96a947771170a900d9e0.bundle.js.map → 21195.267abc9d42b711d0f17a.bundle.js.map} +1 -1
- package/dist/{25747.ce7c2a7b48934c1426d2.bundle.js → 25747.4e00941ec221c4d6ce8f.bundle.js} +2 -2
- package/dist/{25747.ce7c2a7b48934c1426d2.bundle.js.map → 25747.4e00941ec221c4d6ce8f.bundle.js.map} +1 -1
- package/dist/{27580.0ef093964518f35c5118.bundle.js → 27580.f71ebbc69dd1c7785ef3.bundle.js} +2 -2
- package/dist/{27580.0ef093964518f35c5118.bundle.js.map → 27580.f71ebbc69dd1c7785ef3.bundle.js.map} +1 -1
- package/dist/28050.8ca1fa760c892bfc5466.bundle.js +2 -0
- package/dist/28050.8ca1fa760c892bfc5466.bundle.js.map +1 -0
- package/dist/{31636.43cac2fcf593e3258dc8.bundle.js → 31636.e34ccc2d6f2dec577446.bundle.js} +2 -2
- package/dist/{31636.43cac2fcf593e3258dc8.bundle.js.map → 31636.e34ccc2d6f2dec577446.bundle.js.map} +1 -1
- package/dist/{32489.e369df1e7dac02c0c364.bundle.js → 32489.97fac2c3daa49b143d13.bundle.js} +2 -2
- package/dist/{32489.e369df1e7dac02c0c364.bundle.js.map → 32489.97fac2c3daa49b143d13.bundle.js.map} +1 -1
- package/dist/32534.fb6ef715bfb44761ec63.bundle.js +2 -0
- package/dist/32534.fb6ef715bfb44761ec63.bundle.js.map +1 -0
- package/dist/{34495.0330520329177233edb1.bundle.js → 34495.cfa15bda8009fa37c6ff.bundle.js} +2 -2
- package/dist/{34495.0330520329177233edb1.bundle.js.map → 34495.cfa15bda8009fa37c6ff.bundle.js.map} +1 -1
- package/dist/{38360.386e744b1359deaf4b8e.bundle.js → 38360.0a90e77042876c86b279.bundle.js} +2 -2
- package/dist/{38360.386e744b1359deaf4b8e.bundle.js.map → 38360.0a90e77042876c86b279.bundle.js.map} +1 -1
- package/dist/38412.fa86361561ffa367709f.bundle.js +2 -0
- package/dist/38412.fa86361561ffa367709f.bundle.js.map +1 -0
- package/dist/{38644.5b75d86fdb1b61a01177.bundle.js → 38644.3a0954c798ec413a3810.bundle.js} +2 -2
- package/dist/{38644.5b75d86fdb1b61a01177.bundle.js.map → 38644.3a0954c798ec413a3810.bundle.js.map} +1 -1
- package/dist/{38843.cb5377dcb4da9cb3786d.bundle.js → 38843.5ef7a063337524ce3bb2.bundle.js} +2 -2
- package/dist/{38843.cb5377dcb4da9cb3786d.bundle.js.map → 38843.5ef7a063337524ce3bb2.bundle.js.map} +1 -1
- package/dist/{39518.ae7e3b16d56939b60efc.bundle.js → 39518.4199684f3273d29d9105.bundle.js} +2 -2
- package/dist/{39518.ae7e3b16d56939b60efc.bundle.js.map → 39518.4199684f3273d29d9105.bundle.js.map} +1 -1
- package/dist/{39539.f6e6e6cde9c6f9830cf7.bundle.js → 39539.c23e4878044d73f2505b.bundle.js} +2 -2
- package/dist/{39539.f6e6e6cde9c6f9830cf7.bundle.js.map → 39539.c23e4878044d73f2505b.bundle.js.map} +1 -1
- package/dist/{39874.c2d7cab1a65e5a869e78.bundle.js → 39874.f94a5059e1ae4f4a87e9.bundle.js} +2 -2
- package/dist/39874.f94a5059e1ae4f4a87e9.bundle.js.map +1 -0
- package/dist/{41453.e741eca570ac0a4c772a.bundle.js → 41453.8bb4c783da2c5077a6e9.bundle.js} +2 -2
- package/dist/{41453.e741eca570ac0a4c772a.bundle.js.map → 41453.8bb4c783da2c5077a6e9.bundle.js.map} +1 -1
- package/dist/{42129.0ef4171ed6a1984d759c.bundle.js → 42129.f44b7b20f9cd376c6e59.bundle.js} +2 -2
- package/dist/{42129.0ef4171ed6a1984d759c.bundle.js.map → 42129.f44b7b20f9cd376c6e59.bundle.js.map} +1 -1
- package/dist/{44444.dab617ddb7622503b87c.bundle.js → 44444.ad66c8256bc5b653de1a.bundle.js} +2 -2
- package/dist/{44444.dab617ddb7622503b87c.bundle.js.map → 44444.ad66c8256bc5b653de1a.bundle.js.map} +1 -1
- package/dist/44874.5854c207bbe2c4f2438e.bundle.js +2 -0
- package/dist/44874.5854c207bbe2c4f2438e.bundle.js.map +1 -0
- package/dist/45149.2f77aa736bbfb13fd987.bundle.js +2 -0
- package/dist/45149.2f77aa736bbfb13fd987.bundle.js.map +1 -0
- package/dist/45758.6ceb731cbe0576149f31.bundle.js +2 -0
- package/dist/45758.6ceb731cbe0576149f31.bundle.js.map +1 -0
- package/dist/{46591.ac9d19fd699104a9ed9b.bundle.js → 46591.0b142aa76a8991a89848.bundle.js} +2 -2
- package/dist/46591.0b142aa76a8991a89848.bundle.js.map +1 -0
- package/dist/{55862.8ef52c24ecad5d1b335f.bundle.js → 55862.1fb5abd075ba11a7e93c.bundle.js} +2 -2
- package/dist/{55862.8ef52c24ecad5d1b335f.bundle.js.map → 55862.1fb5abd075ba11a7e93c.bundle.js.map} +1 -1
- package/dist/{58306.69f132627b7aa8a2fd8b.bundle.js → 58306.ba9545cbaee021ebcbce.bundle.js} +2 -2
- package/dist/{58306.69f132627b7aa8a2fd8b.bundle.js.map → 58306.ba9545cbaee021ebcbce.bundle.js.map} +1 -1
- package/dist/{60560.024578077d95b851beea.bundle.js → 60560.37740d97b418899a5d21.bundle.js} +2 -2
- package/dist/{60560.024578077d95b851beea.bundle.js.map → 60560.37740d97b418899a5d21.bundle.js.map} +1 -1
- package/dist/67232.e76f40f9d09e64ebb365.bundle.js.map +1 -1
- package/dist/{67888.0e199b9af05ec62b2aac.bundle.js → 67888.7d4966e0a22ba655f1b8.bundle.js} +2 -2
- package/dist/{67888.0e199b9af05ec62b2aac.bundle.js.map → 67888.7d4966e0a22ba655f1b8.bundle.js.map} +1 -1
- package/dist/{72379.90c38d8cdf911698fd58.bundle.js → 72379.bac50d0011665a85b6cd.bundle.js} +2 -2
- package/dist/{72379.90c38d8cdf911698fd58.bundle.js.map → 72379.bac50d0011665a85b6cd.bundle.js.map} +1 -1
- package/dist/{73667.6eb291069cdbfa7ee5a0.bundle.js → 73667.3dd4f377e7ef54fd8758.bundle.js} +2 -2
- package/dist/{73667.6eb291069cdbfa7ee5a0.bundle.js.map → 73667.3dd4f377e7ef54fd8758.bundle.js.map} +1 -1
- package/dist/73779.193df86f08e3a1d06d67.bundle.js +2 -0
- package/dist/73779.193df86f08e3a1d06d67.bundle.js.map +1 -0
- package/dist/{73793.0f7acda985d6954bb4f8.bundle.js → 73793.6d80d47c26ed60a587fd.bundle.js} +2 -2
- package/dist/{73793.0f7acda985d6954bb4f8.bundle.js.map → 73793.6d80d47c26ed60a587fd.bundle.js.map} +1 -1
- package/dist/{75282.e691d50bb173673e70fc.bundle.js → 75282.88819e851ed18720b275.bundle.js} +2 -2
- package/dist/{75282.e691d50bb173673e70fc.bundle.js.map → 75282.88819e851ed18720b275.bundle.js.map} +1 -1
- package/dist/{75849.ac13a455c619510af005.bundle.js → 75849.51ade15bf0074eab76f3.bundle.js} +2 -2
- package/dist/{75849.ac13a455c619510af005.bundle.js.map → 75849.51ade15bf0074eab76f3.bundle.js.map} +1 -1
- package/dist/78013.e32fade7ad42b64c8122.bundle.js +2 -0
- package/dist/78013.e32fade7ad42b64c8122.bundle.js.map +1 -0
- package/dist/{78250.93a299876bba79ebbff4.bundle.js → 78250.6db42146a120459280e4.bundle.js} +2 -2
- package/dist/{78250.93a299876bba79ebbff4.bundle.js.map → 78250.6db42146a120459280e4.bundle.js.map} +1 -1
- package/dist/{78681.e44a1eb1dce4a8a29f57.bundle.js → 78681.39694d37c0f75ea04df6.bundle.js} +2 -2
- package/dist/{78681.e44a1eb1dce4a8a29f57.bundle.js.map → 78681.39694d37c0f75ea04df6.bundle.js.map} +1 -1
- package/dist/{79329.7f5eab5efab56b8c4f3d.bundle.js → 79329.5a5cbfa466d1c62af915.bundle.js} +2 -2
- package/dist/{79329.7f5eab5efab56b8c4f3d.bundle.js.map → 79329.5a5cbfa466d1c62af915.bundle.js.map} +1 -1
- package/dist/82206.8ec983edcf675cfd4531.bundle.js +2 -0
- package/dist/82206.8ec983edcf675cfd4531.bundle.js.map +1 -0
- package/dist/82896.9aed45baf67510717c6f.bundle.js +2 -0
- package/dist/82896.9aed45baf67510717c6f.bundle.js.map +1 -0
- package/dist/{82926.eb9ca3ba256ddcf218d6.bundle.js → 82926.93dbf44f2bcccba34e9b.bundle.js} +2 -2
- package/dist/{82926.eb9ca3ba256ddcf218d6.bundle.js.map → 82926.93dbf44f2bcccba34e9b.bundle.js.map} +1 -1
- package/dist/85281.27b5a1eb8e7ac2cf8459.bundle.js +2 -0
- package/dist/85281.27b5a1eb8e7ac2cf8459.bundle.js.map +1 -0
- package/dist/{88206.fbbcf8ccd9460c579e87.bundle.js → 88206.28c337e2edbf17928836.bundle.js} +2 -2
- package/dist/88206.28c337e2edbf17928836.bundle.js.map +1 -0
- package/dist/{9062.8b631bfc91a2ae919c46.bundle.js → 9062.d9049833d076191d3e1a.bundle.js} +2 -2
- package/dist/{9062.8b631bfc91a2ae919c46.bundle.js.map → 9062.d9049833d076191d3e1a.bundle.js.map} +1 -1
- package/dist/99379.be6c85ef305af6667dc1.bundle.js +2 -0
- package/dist/99379.be6c85ef305af6667dc1.bundle.js.map +1 -0
- package/dist/{99448.4b7fc65ec6dda3d684c5.bundle.js → 99448.314018d0afb1af150ddf.bundle.js} +2 -2
- package/dist/{99448.4b7fc65ec6dda3d684c5.bundle.js.map → 99448.314018d0afb1af150ddf.bundle.js.map} +1 -1
- package/dist/api/error/error-base.d.ts +1 -1
- package/dist/api/ontotext-workbench-api.js +1 -1
- package/dist/api/ontotext-workbench-api.js.map +1 -1
- package/dist/i18n/locale-en.json +31 -0
- package/dist/i18n/locale-fr.json +31 -0
- package/dist/index.html +8 -8
- 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 +1 -1
- 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 +4 -3
- package/dist/js/angular/graphql/templates/graphql-endpoint-management.html +1 -1
- package/dist/js/angular/graphql/templates/graphql-playground.html +1 -1
- 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 +1 -1
- 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 +2 -2
- 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.e60d05442435ec0d1bd0.js → legacyWorkbench.57fc12c172f6350ac4c5.js} +3 -3
- package/dist/{legacyWorkbench.e60d05442435ec0d1bd0.js.map → legacyWorkbench.57fc12c172f6350ac4c5.js.map} +1 -1
- package/dist/{main.400f2248f076a2d31d80.js → main.b9a83da68ffc43c91de0.js} +3 -3
- package/dist/{main.400f2248f076a2d31d80.js.map → main.b9a83da68ffc43c91de0.js.map} +1 -1
- package/dist/pages/aclmanagement.html +2 -2
- 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/import.html +2 -2
- package/dist/pages/jdbc-create.html +1 -1
- package/dist/pages/login.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/ux-test1.html +2 -2
- package/dist/pages/webapi.html +2 -2
- package/dist/plugins.js +1 -1
- package/dist/res/swagger5/css/onto-theme.css +1 -1
- package/dist/res/swagger5/index.html +11 -11
- 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_6.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/translate-label.cjs.entry.js +1 -1
- package/dist/shared-components/collection/components/dialogs/onto-cookie-policy-dialog/onto-cookie-policy-dialog.js +1 -1
- package/dist/shared-components/collection/components/dialogs/onto-dialog.js +1 -1
- package/dist/shared-components/collection/components/onto-cookie-consent/onto-cookie-consent.js +1 -1
- package/dist/shared-components/collection/components/onto-dropdown/onto-dropdown.js +1 -1
- package/dist/shared-components/collection/components/onto-footer/onto-footer.js +1 -1
- package/dist/shared-components/collection/components/onto-header/onto-header.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-layout/onto-layout.js +1 -1
- package/dist/shared-components/collection/components/onto-navbar/navbar-model.js +1 -1
- package/dist/shared-components/collection/components/onto-navbar/navbar-service.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-rdf-search/onto-rdf-search.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-icon/onto-search-icon.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-toastr/onto-toastr.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-tooltip/onto-tooltip.js +1 -1
- package/dist/shared-components/collection/components/translate-label/translate-label.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_6.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/translate-label.entry.js +1 -1
- package/dist/shared-components/shared-components/p-17bac1e3.entry.js +1 -0
- package/dist/shared-components/shared-components/p-1bc2ac8e.entry.js +1 -0
- package/dist/shared-components/shared-components/p-2433b25f.entry.js +1 -0
- package/dist/shared-components/shared-components/p-25fa0ee5.entry.js +1 -0
- package/dist/shared-components/shared-components/{p-a4e82a3f.entry.js → p-6266be98.entry.js} +1 -1
- package/dist/shared-components/shared-components/{p-eed8b067.entry.js → p-91ad7f7f.entry.js} +1 -1
- package/dist/shared-components/shared-components/p-aef0b970.entry.js +1 -0
- package/dist/shared-components/shared-components/shared-components.esm.js +1 -1
- package/dist/shared-components/types/components/onto-dropdown/onto-dropdown.d.ts +2 -2
- package/dist/shared-components/types/components/onto-navbar/navbar-model.d.ts +4 -1
- package/dist/shared-components/types/components/onto-navbar/navbar-toggled-event.d.ts +1 -1
- package/dist/shared-components/types/components/onto-navbar/onto-navbar.d.ts +2 -2
- package/dist/shared-components/types/components/onto-test-context/onto-test-context.d.ts +23 -23
- package/dist/shared-components/types/components/onto-tooltip/models/onto-tooltip-configuration.d.ts +1 -2
- package/dist/shared-components/types/components.d.ts +4 -4
- package/dist/shared-components/types/models/component-event.d.ts +1 -1
- package/dist/shared-components/types/utils/function-utils.d.ts +1 -1
- package/dist/shared-components/types/utils/tooltip-util.d.ts +2 -2
- package/dist/workbench/workbench/workbenchApp.js +1 -1
- package/package.json +8 -2
- package/dist/10142.6a276ff32f58aa4d1b72.bundle.js +0 -2
- package/dist/10142.6a276ff32f58aa4d1b72.bundle.js.map +0 -1
- package/dist/10153.1532fddd43604bf408c3.bundle.js +0 -2
- package/dist/10153.1532fddd43604bf408c3.bundle.js.map +0 -1
- package/dist/10406.7fed4b667b0d2813b305.bundle.js +0 -2
- package/dist/12358.736ea9c178c92655de3a.bundle.js +0 -3
- package/dist/12358.736ea9c178c92655de3a.bundle.js.map +0 -1
- package/dist/14874.17bc671b6ff6123b9eb1.bundle.js +0 -2
- package/dist/14874.17bc671b6ff6123b9eb1.bundle.js.map +0 -1
- package/dist/28050.1359d262b2e2c497ad6d.bundle.js +0 -2
- package/dist/28050.1359d262b2e2c497ad6d.bundle.js.map +0 -1
- package/dist/32534.73081e468e918a03bd70.bundle.js +0 -2
- package/dist/32534.73081e468e918a03bd70.bundle.js.map +0 -1
- package/dist/32606.376e14770ba6e81b7159.bundle.js +0 -2
- package/dist/32606.376e14770ba6e81b7159.bundle.js.map +0 -1
- package/dist/38412.85b4c12f5ed5ffb6e4dd.bundle.js +0 -2
- package/dist/38412.85b4c12f5ed5ffb6e4dd.bundle.js.map +0 -1
- package/dist/39874.c2d7cab1a65e5a869e78.bundle.js.map +0 -1
- package/dist/44874.60bab9adf89019b35654.bundle.js +0 -2
- package/dist/44874.60bab9adf89019b35654.bundle.js.map +0 -1
- package/dist/45758.4e363b98020c3460b4ff.bundle.js +0 -2
- package/dist/45758.4e363b98020c3460b4ff.bundle.js.map +0 -1
- package/dist/46591.ac9d19fd699104a9ed9b.bundle.js.map +0 -1
- package/dist/58163.747b20ea052b22b24bd0.bundle.js +0 -2
- package/dist/58163.747b20ea052b22b24bd0.bundle.js.map +0 -1
- package/dist/73779.c4608b73b63083cb3352.bundle.js +0 -2
- package/dist/73779.c4608b73b63083cb3352.bundle.js.map +0 -1
- package/dist/82206.b3b37c3e0cc1aa18148c.bundle.js +0 -2
- package/dist/82206.b3b37c3e0cc1aa18148c.bundle.js.map +0 -1
- package/dist/85281.049ddec87de0b8b07e79.bundle.js +0 -2
- package/dist/85281.049ddec87de0b8b07e79.bundle.js.map +0 -1
- package/dist/88206.fbbcf8ccd9460c579e87.bundle.js.map +0 -1
- package/dist/99379.d5dffb14dd46150e91f9.bundle.js +0 -2
- package/dist/99379.d5dffb14dd46150e91f9.bundle.js.map +0 -1
- package/dist/shared-components/shared-components/p-106d7df8.entry.js +0 -1
- package/dist/shared-components/shared-components/p-17ce51bb.entry.js +0 -1
- package/dist/shared-components/shared-components/p-306527cc.entry.js +0 -1
- package/dist/shared-components/shared-components/p-96e87635.entry.js +0 -1
- package/dist/shared-components/shared-components/p-af359495.entry.js +0 -1
- /package/dist/{12358.736ea9c178c92655de3a.bundle.js.LICENSE.txt → 12358.2061f29dc113149946a3.bundle.js.LICENSE.txt} +0 -0
- /package/dist/{legacyWorkbench.e60d05442435ec0d1bd0.js.LICENSE.txt → legacyWorkbench.57fc12c172f6350ac4c5.js.LICENSE.txt} +0 -0
- /package/dist/{main.400f2248f076a2d31d80.js.LICENSE.txt → main.b9a83da68ffc43c91de0.js.LICENSE.txt} +0 -0
- /package/dist/shared-components/cjs/{tooltip-util-CmDLnWqH.js → tooltip-util-CnEXLMnw.js} +0 -0
- /package/dist/shared-components/esm/{tooltip-util-C1So-qrf.js → tooltip-util-BqOc8q8q.js} +0 -0
- /package/dist/shared-components/shared-components/{p-Bisudk7O.js → p-DzOPDgzQ.js} +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"12358.736ea9c178c92655de3a.bundle.js","mappings":"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","sources":["webpack://root-config/./packages/legacy-workbench/src/js/angular/core/directives/editable-content/editable-content.js","webpack://root-config/./packages/legacy-workbench/src/js/angular/ttyg/directives/no-agents-view.directive.js","webpack://root-config/./packages/legacy-workbench/src/js/angular/ttyg/controllers/ttyg-view.controller.js","webpack://root-config/./packages/legacy-workbench/src/js/angular/ttyg/directives/chat-panel.directive.js","webpack://root-config/./packages/legacy-workbench/src/js/angular/ttyg/directives/agent-list.directive.js","webpack://root-config/./packages/legacy-workbench/src/js/angular/core/directives/inline-editable-text/inline-editable-text.directive.js","webpack://root-config/./packages/legacy-workbench/src/js/angular/ttyg/model/agent-settings-modal.js","webpack://root-config/./packages/legacy-workbench/src/js/angular/ttyg/directives/agent-select-menu.directive.js","webpack://root-config/./packages/legacy-workbench/src/js/angular/ttyg/directives/chat-list.directive.js","webpack://root-config/./packages/legacy-workbench/src/js/angular/ttyg/directives/show-tooltip-on-overflow.directive.js","webpack://root-config/./packages/legacy-workbench/src/js/lib/FileSaver-patch.js","webpack://root-config/./packages/legacy-workbench/src/js/angular/ttyg/directives/help-info-popover.directive.js","webpack://root-config/./packages/legacy-workbench/src/js/angular/models/http-status.js","webpack://root-config/./packages/legacy-workbench/src/js/angular/ttyg/services/ttyg-storage.service.js"],"sourcesContent":["/**\n * @ngdoc directive\n * @name editableContent\n * @module graphdb.framework.core.directives.editable-content\n * @restrict E\n * @description\n * A reusable contenteditable directive bound to an ngModel. It allows editable plain-text input and supports disabling and placeholder text.\n *\n * @param {string} ngModel - The model to bind contenteditable input to.\n * @param {boolean=} ngDisabled - Disables the contenteditable field when true.\n * @param {string=} placeholder - Placeholder text to show when input is empty.\n */\nconst modules = [];\n\nangular\n .module('graphdb.framework.core.directives.editable-content', modules)\n .directive('editableContent', editableContent);\n\neditableContent.$inject = [];\n\nfunction editableContent() {\n return {\n restrict: 'E',\n require: 'ngModel',\n scope: {\n ngModel: '=',\n ngDisabled: '=',\n placeholder: '@'\n },\n templateUrl: 'js/angular/core/templates/editable-content/editable-content.html',\n link: function(scope, element, attrs, ngModelCtrl) {\n\n // =========================\n // Private variables\n // =========================\n\n const editableDiv = element.find('div');\n\n // =========================\n // Private functions\n // =========================\n\n /**\n * Updates the bound ngModel with the current contenteditable value.\n * Also clears invalid HTML when only whitespace remains.\n */\n const updateModelValue = () => {\n if (!scope.ngDisabled) {\n scope.$apply(() => {\n if (editableDiv.html().length && !editableDiv.text().trim().length) {\n // Fixes a problem with the placeholder when type some word and delete it.\n editableDiv.empty();\n }\n ngModelCtrl.$setViewValue(editableDiv[0].innerText);\n });\n }\n };\n\n /**\n * Renders the model value into the contenteditable element.\n */\n ngModelCtrl.$render = () => {\n editableDiv.html(ngModelCtrl.$viewValue || '');\n };\n\n /**\n * Handles paste events in the contenteditable element by inserting plain text only.\n * Prevents the default paste behavior and manually inserts the clipboard text as plain text,\n * preserving line breaks by converting them to <br> elements.\n *\n * @param {Event} event - The paste event object containing clipboard data.\n */\n const pasteHandler = (event) => {\n event.preventDefault();\n\n const text = (event.originalEvent || event).clipboardData.getData('text/plain');\n const selection = window.getSelection();\n\n if (!selection.rangeCount) return;\n\n selection.deleteFromDocument();\n const range = selection.getRangeAt(0);\n const fragment = document.createDocumentFragment();\n const lines = text.split('\\n');\n\n lines.forEach((line, index) => {\n fragment.appendChild(document.createTextNode(line));\n if (index < lines.length - 1) {\n fragment.appendChild(document.createElement('br'));\n }\n });\n\n range.insertNode(fragment);\n selection.collapseToEnd();\n }\n\n // =========================\n // Subscriptions\n // =========================\n\n /**\n * Unsubscribes from all watchers and event listeners to prevent memory leaks.\n */\n const removeAllSubscribers = () => {\n editableDiv.off('blur keyup change input', updateModelValue);\n editableDiv.off('paste', pasteHandler);\n };\n\n scope.$on('$destroy', removeAllSubscribers);\n editableDiv.on('blur keyup change input', updateModelValue);\n editableDiv.on('paste', pasteHandler)\n }\n };\n}\n","import {TTYGEventName} from \"../services/ttyg-context.service\";\nimport {DocumentationUrlResolver} from \"../../utils/documentation-url-resolver\";\n\nangular\n .module('graphdb.framework.ttyg.directives.no-agents-view', [])\n .directive('noAgentsView', NoAgentsView);\n\nNoAgentsView.$inject = ['TTYGContextService', 'productInfo'];\n\nfunction NoAgentsView(TTYGContextService, productInfo) {\n return {\n restrict: 'E',\n templateUrl: 'js/angular/ttyg/templates/no-agents-view.html',\n scope: {\n },\n link: ($scope) => {\n\n // =========================\n // Public variables\n // =========================\n\n $scope.canModifyAgent = false;\n $scope.talkToGraphDocumentationLink = DocumentationUrlResolver.getDocumentationUrl(productInfo.productShortVersion, 'talk-to-graph.html');\n\n // =========================\n // Public functions\n // =========================\n\n $scope.onCreateAgent = () => {\n TTYGContextService.emit(TTYGEventName.OPEN_AGENT_SETTINGS);\n };\n\n // =========================\n // Private functions\n // =========================\n\n const onCanUpdateAgentUpdated = (canModifyAgent) => {\n $scope.canModifyAgent = canModifyAgent;\n };\n\n // =========================\n // Subscriptions\n // =========================\n const subscriptions = [];\n\n const onDestroy = () => {\n subscriptions.forEach((subscription) => subscription());\n };\n subscriptions.push(TTYGContextService.onCanUpdateAgentUpdated(onCanUpdateAgentUpdated));\n $scope.$on('$destroy', onDestroy);\n }\n };\n}\n","import 'angular/ttyg/directives/chat-list.directive';\nimport 'angular/ttyg/directives/chat-panel.directive';\nimport 'angular/ttyg/directives/agent-list.directive';\nimport 'angular/ttyg/directives/agent-select-menu.directive';\nimport 'angular/ttyg/directives/no-agents-view.directive';\nimport 'angular/ttyg/directives/show-tooltip-on-overflow.directive';\nimport 'angular/ttyg/directives/help-info-popover.directive';\nimport 'angular/ttyg/controllers/agent-settings-modal.controller';\nimport 'angular/core/services/ttyg.service';\nimport 'angular/ttyg/services/ttyg-context.service';\nimport 'angular/ttyg/services/ttyg-storage.service';\nimport {TTYGEventName} from '../services/ttyg-context.service';\nimport {AGENT_OPERATION, AGENTS_FILTER_ALL_KEY, TTYG_ERROR_MSG_LENGTH} from '../services/constants';\nimport {AgentListFilterModel, AgentModel} from '../../models/ttyg/agents';\nimport {ChatModel, ChatsListModel} from '../../models/ttyg/chats';\nimport {agentFormModelMapper} from '../services/agents.mapper';\nimport {SelectMenuOptionsModel} from '../../models/form-fields';\nimport {repositoryInfoMapper} from '../../rest/mappers/repositories-mapper';\nimport {saveAs} from 'lib/FileSaver-patch';\nimport {AgentSettingsModal} from \"../model/agent-settings-modal\";\nimport {decodeHTML} from \"../../../../app\";\nimport {status as httpStatus} from \"../../models/http-status\";\nimport {ContinueChatRun} from \"../../models/ttyg/chat-answer\";\n\nconst modules = [\n 'toastr',\n 'graphdb.framework.utils.localstorageadapter',\n 'graphdb.framework.core.services.ttyg-service',\n 'graphdb.framework.ttyg.services.ttygcontext',\n 'graphdb.framework.ttyg.services.ttygstorage',\n 'graphdb.framework.ttyg.directives.chat-list',\n 'graphdb.framework.ttyg.directives.chat-panel',\n 'graphdb.framework.ttyg.directives.agent-list',\n 'graphdb.framework.ttyg.directives.agent-select-menu',\n 'graphdb.framework.ttyg.directives.no-agents-view',\n 'graphdb.framework.ttyg.directives.show-tooltip-on-overflow',\n 'graphdb.framework.ttyg.controllers.agent-settings-modal',\n 'graphdb.framework.core.directives.help-info-popover',\n];\n\nangular\n .module('graphdb.framework.ttyg.controllers.ttyg-view', modules)\n .controller('TTYGViewCtrl', TTYGViewCtrl);\n\nTTYGViewCtrl.$inject = [\n '$jwtAuth',\n '$window',\n '$rootScope',\n '$scope',\n '$http',\n '$timeout',\n '$translate',\n '$uibModal',\n '$repositories',\n 'toastr',\n 'ModalService',\n 'LocalStorageAdapter',\n 'TTYGService',\n 'TTYGContextService',\n 'TTYGStorageService'];\n\nfunction TTYGViewCtrl(\n $jwtAuth,\n $window,\n $rootScope,\n $scope,\n $http,\n $timeout,\n $translate,\n $uibModal,\n $repositories,\n toastr,\n ModalService,\n LocalStorageAdapter,\n TTYGService,\n TTYGContextService,\n TTYGStorageService) {\n\n // =========================\n // Private variables\n // =========================\n\n const subscriptions = [];\n\n const labels = {\n filter_all: $translate.instant('ttyg.agent.btn.filter.all')\n };\n\n // =========================\n // Public variables\n // =========================\n\n $scope.helpTemplateUrl = \"js/angular/ttyg/templates/chatInfo.html\";\n\n /**\n * Controls the visibility of the help panel.\n * @type {boolean}\n */\n $scope.isHelpVisible = false;\n\n /**\n * Controls the visibility of the chats list sidebar. By default, it is visible unless there are no chats.\n * @type {boolean}\n */\n $scope.showChats = true;\n\n /**\n * Controls the visibility of the agents list sidebar.\n * @type {boolean}\n */\n $scope.showAgents = false;\n\n /**\n * Chats list.\n * @type {ChatsListModel|undefined}\n */\n $scope.chats = undefined;\n\n /**\n * Flag to control the visibility of the loader when loading chat list.\n * @type {boolean}\n */\n $scope.loadingChats = false;\n\n $scope.loadingChat = false;\n\n /**\n * Flag controls when component is initialized.\n * @type {boolean}\n */\n $scope.initialized = false;\n\n /**\n * Agents list model.\n * @type {AgentListModel|undefined}\n */\n $scope.agents = undefined;\n\n /**\n * The model of the selected agent.\n * @type {AgentModel|undefined}\n */\n $scope.selectedAgent = undefined;\n\n /**\n * Flag to control the visibility of the loader when loading agent list on initial page load.\n * @type {boolean}\n */\n $scope.loadingAgents = false;\n\n /**\n * Flag to control the visibility of the loader when reloading agent list.\n * @type {boolean}\n */\n $scope.reloadingAgents = false;\n\n $scope.connectorID = undefined;\n\n /**\n * A flag that determines whether buttons that modify an agent should be disabled.\n * @type {boolean}\n */\n $scope.canModifyAgent = false;\n\n /**\n * A list of available repository IDs as a model for the agent list filter.\n * @type {AgentListFilterModel[]}\n */\n $scope.agentListFilterModel = [];\n\n /**\n * A list with the active repositories that is used in child components.\n * @type {string[]}\n */\n $scope.activeRepositoryList = [];\n\n // =========================\n // Public functions\n // =========================\n\n // Needed by the slidepanel directive\n $scope.onopen = $scope.onclose = () => angular.noop();\n\n /**\n * Creates a new chat and selects it.\n */\n $scope.startNewChat = () => {\n TTYGContextService.deselectChat();\n };\n\n /**\n * Toggles the visibility of the chats list sidebar.\n */\n $scope.toggleChatsListSidebar = () => {\n $scope.showChats = !$scope.showChats;\n };\n\n /**\n * Toggles the visibility of the agents list sidebar.\n */\n $scope.toggleAgentsListSidebar = () => {\n $scope.showAgents = !$scope.showAgents;\n };\n\n /**\n * Handles the help message toggle event.\n */\n $scope.onToggleHelp = () => {\n $scope.isHelpVisible = !$scope.isHelpVisible;\n };\n\n /**\n * Handles the export of a chat by calling the service and updating the chats list.\n */\n $scope.onExportSelectedChat = () => {\n onExportChat(TTYGContextService.getSelectedChat());\n };\n\n /**\n * Gets the default agent from the TTYGContextService or fetches it from the server if not available.\n *\n * @return {Promise<AgentModel>} A promise that resolves to the default agent.\n */\n const getDefaultAgent = () => {\n const defaultAgent = TTYGContextService.getDefaultAgent();\n if (defaultAgent) {\n return Promise.resolve(defaultAgent);\n } else {\n return TTYGService.getDefaultAgent()\n .then((response) => {\n TTYGContextService.setDefaultAgent(response);\n return response;\n });\n }\n };\n\n /**\n * Configures and opens the modal for creating a new agent.\n */\n $scope.onOpenNewAgentSettings = () => {\n getDefaultAgent()\n .then((agentDefaultValues) => {\n const activeRepositoryInfo = repositoryInfoMapper($repositories.getActiveRepositoryObject());\n agentDefaultValues.repositoryId = activeRepositoryInfo.id;\n const agentFormModel = agentFormModelMapper(new AgentModel({}), agentDefaultValues, AGENT_OPERATION.CREATE);\n return {\n templateUrl: 'js/angular/ttyg/templates/modal/agent-settings-modal.html',\n controller: 'AgentSettingsModalController',\n windowClass: 'agent-settings-modal',\n backdrop: 'static',\n resolve: {\n dialogModel: function () {\n return new AgentSettingsModal(\n activeRepositoryInfo,\n $scope.activeRepositoryList,\n agentFormModel,\n AGENT_OPERATION.CREATE\n );\n }\n },\n size: 'lg'\n };\n })\n .then((options) => {\n $uibModal.open(options).result.then(reloadAgents);\n })\n .catch((error) => {\n toastr.error(getError(error, 0, TTYG_ERROR_MSG_LENGTH));\n });\n };\n\n /**\n * Handles the agent edit operation. If the agent is not provided it is assumed that we need to edit the selected\n * agent which can be obtained from the context service.\n * @param {AgentModel|undefined} agent\n */\n $scope.onOpenAgentSettings = (agent) => {\n let agentToEdit = agent;\n if (!agentToEdit) {\n agentToEdit = TTYGContextService.getSelectedAgent();\n }\n getDefaultAgent()\n .then((agentDefaultValues) => {\n const agentFormModel = agentFormModelMapper(agentToEdit, agentDefaultValues, AGENT_OPERATION.EDIT);\n const activeRepositoryInfo = repositoryInfoMapper($repositories.getActiveRepositoryObject());\n return {\n templateUrl: 'js/angular/ttyg/templates/modal/agent-settings-modal.html',\n controller: 'AgentSettingsModalController',\n windowClass: 'agent-settings-modal',\n backdrop: 'static',\n resolve: {\n dialogModel: function () {\n return new AgentSettingsModal(\n activeRepositoryInfo,\n $scope.activeRepositoryList,\n agentFormModel,\n AGENT_OPERATION.EDIT\n );\n }\n },\n size: 'lg'\n };\n })\n .then((options) => {\n $uibModal.open(options).result.then(\n (updatedAgent) => {\n const hasSelectedAgent = TTYGContextService.getSelectedAgent();\n if (hasSelectedAgent && updatedAgent.id === hasSelectedAgent.id) {\n TTYGContextService.selectAgent(updatedAgent);\n }\n reloadAgents();\n });\n })\n .catch((error) => {\n toastr.error(getError(error, 0, TTYG_ERROR_MSG_LENGTH));\n });\n };\n\n /**\n * Opens the agent settings modal with the agent to clone.\n * @param {AgentModel} agentToClone\n */\n $scope.onOpenCloneAgentSettings = (agentToClone) => {\n getDefaultAgent()\n .then((agentDefaultValues) => {\n const agentFormModel = agentFormModelMapper(agentToClone, agentDefaultValues, AGENT_OPERATION.CLONE);\n agentFormModel.name = `clone-${agentFormModel.name}`;\n const activeRepositoryInfo = repositoryInfoMapper($repositories.getActiveRepositoryObject());\n return {\n templateUrl: 'js/angular/ttyg/templates/modal/agent-settings-modal.html',\n controller: 'AgentSettingsModalController',\n windowClass: 'agent-settings-modal',\n backdrop: 'static',\n resolve: {\n dialogModel: function () {\n return new AgentSettingsModal(\n activeRepositoryInfo,\n $scope.activeRepositoryList,\n agentFormModel,\n AGENT_OPERATION.CLONE\n );\n }\n },\n size: 'lg'\n };\n }).then((options) => {\n $uibModal.open(options).result.then(\n (updatedAgent) => {\n const hasSelectedAgent = TTYGContextService.getSelectedAgent();\n if (hasSelectedAgent && updatedAgent.id === hasSelectedAgent.id) {\n TTYGContextService.selectAgent(updatedAgent);\n }\n reloadAgents();\n });\n }).catch((error) => {\n toastr.error(getError(error, 0, TTYG_ERROR_MSG_LENGTH));\n });\n };\n\n // =========================\n // Private functions\n // =========================\n\n const loadChats = () => {\n $scope.loadingChats = true;\n return TTYGService.getConversations()\n .then((chats) => {\n return TTYGContextService.updateChats(chats);\n })\n .catch((error) => {\n toastr.error(getError(error, 0, TTYG_ERROR_MSG_LENGTH));\n setupChatListPanel(new ChatsListModel());\n })\n .finally(() => {\n $scope.loadingChats = false;\n });\n };\n\n /**\n * Loads the agents list from the server and updates the context service.\n * @param {boolean} showLoader\n * @return {Promise<void>}\n */\n const loadAgents = (showLoader = true) => {\n $scope.loadingAgents = showLoader;\n return TTYGService.getAgents()\n .then((agents) => {\n return TTYGContextService.updateAgents(agents);\n })\n .catch((error) => {\n toastr.error(getError(error, 0, TTYG_ERROR_MSG_LENGTH));\n })\n .finally(() => {\n $scope.loadingAgents = false;\n });\n };\n\n /**\n * Reloads the agents list. Basically the same as loadAgents but this sets the reloadingAgents flag that cause only\n * the agents list panel to be masked by the loader.\n * @return {Promise<void>}\n */\n const reloadAgents = () => {\n $scope.reloadingAgents = true;\n return TTYGService.getAgents()\n .then((agents) => {\n return TTYGContextService.updateAgents(agents);\n })\n .catch((error) => {\n toastr.error(getError(error, 0, TTYG_ERROR_MSG_LENGTH));\n })\n .finally(() => {\n $scope.reloadingAgents = false;\n });\n };\n\n const updateCanModifyAgent = () => {\n TTYGContextService.setCanModifyAgent($jwtAuth.isRepoManager());\n };\n\n const getActiveRepositoryObjectHandler = (activeRepo) => {\n if (activeRepo) {\n onInit();\n }\n };\n\n /**\n * @param {ChatItemModel} chatItem\n */\n const onCreateNewChat = (chatItem) => {\n let nonPersistedChat = TTYGContextService.getChats().getNonPersistedChat();\n if (!nonPersistedChat) {\n nonPersistedChat = ChatModel.getEmptyChat();\n TTYGContextService.addChat(nonPersistedChat);\n }\n TTYGContextService.selectChat(nonPersistedChat);\n\n TTYGService.createConversation(chatItem)\n .then((chatAnswer) => {\n TTYGContextService.emit(TTYGEventName.CREATE_CHAT_SUCCESSFUL);\n const selectedChat = TTYGContextService.getSelectedChat();\n // If the selected chat is not changed during the creation process.\n if (selectedChat && !selectedChat.id) {\n // Give the newly created things the real IDs\n selectedChat.id = chatAnswer.chatId;\n chatItem.chatId = chatAnswer.chatId;\n\n // Replace the placeholder with the newly created chat\n const nonPersistedChat = TTYGContextService.getChats().getNonPersistedChat();\n TTYGContextService.replaceChat(selectedChat, nonPersistedChat);\n TTYGStorageService.saveChat(selectedChat);\n\n // Process the messages\n updateChatAnswersFirstResponse(selectedChat, chatItem, chatAnswer);\n }\n })\n .catch((error) => {\n TTYGContextService.emit(TTYGEventName.CREATE_CHAT_FAILURE);\n toastr.error(getError(error, 0, TTYG_ERROR_MSG_LENGTH));\n });\n };\n\n /**\n * @param {ChatItemModel} chatItem\n */\n const onAskQuestion = (chatItem) => {\n TTYGService.askQuestion(chatItem)\n .then((chatAnswer) => {\n const selectedChat = TTYGContextService.getSelectedChat();\n // If still the same chat selected\n if (selectedChat && selectedChat.id === chatItem.chatId) {\n // just process the messages\n updateChatAnswersFirstResponse(selectedChat, chatItem, chatAnswer);\n }\n })\n .catch((error) => {\n TTYGContextService.emit(TTYGEventName.ASK_QUESTION_FAILURE);\n toastr.error(getError(error, 0, TTYG_ERROR_MSG_LENGTH));\n });\n };\n\n const onContinueChatRun = (continueData) => {\n TTYGService.continueChatRun(continueData)\n .then((chatAnswer) => {\n const chatId = continueData.chatId;\n const selectedChat = TTYGContextService.getSelectedChat();\n // If still the same chat selected\n if (selectedChat && selectedChat.id === chatId) {\n // just process the additional answers (with a recovered ChatItemModel)\n const items = selectedChat.chatHistory.items;\n const lastItem = items[items.length - 1];\n updateChatAnswers(selectedChat, lastItem, chatAnswer);\n }\n })\n .catch((error) => {\n // TODO failure event\n TTYGContextService.emit(TTYGEventName.ASK_QUESTION_FAILURE);\n toastr.error(getError(error, 0, TTYG_ERROR_MSG_LENGTH));\n });\n };\n\n const updateChatAnswers = (selectedChat, chatItem, chatAnswer) => {\n selectedChat.timestamp = chatAnswer.timestamp;\n chatItem.answers = chatItem.answers || [];\n chatItem.answers.push(...chatAnswer.messages);\n TTYGContextService.updateSelectedChat(selectedChat);\n\n if (chatAnswer.continueRunId) {\n TTYGContextService.emit(TTYGEventName.CONTINUE_CHAT_RUN,\n new ContinueChatRun(chatItem, chatAnswer.continueRunId));\n } else {\n // Last message - update the timestamp and the name of the chat in the chat list\n const chats = TTYGContextService.getChats();\n // Updating the timestamp in the list gets the chat moved to the top.\n chats.updateChatTimestamp(selectedChat.id, chatAnswer.timestamp);\n // Strictly speaking the chat name update is needed only for new chats,\n // but it doesn't hurt for every chat.\n chats.updateChatName(selectedChat.id, chatAnswer.chatName);\n // and also in the chat - doesn't seem to matter atm\n selectedChat.name = chatAnswer.name;\n TTYGContextService.updateChats(chats);\n TTYGContextService.emit(TTYGEventName.LAST_MESSAGE_RECEIVED, selectedChat);\n }\n };\n\n const updateChatAnswersFirstResponse = (selectedChat, chatItem, chatAnswer) => {\n selectedChat.chatHistory.appendItem(chatItem);\n updateChatAnswers(selectedChat, chatItem, chatAnswer);\n };\n\n /**\n * Handles the renaming of a chat by calling the service and updating the chats list.\n * Events are fired for success and failure cases.\n * @param {ChatModel} chat - the chat to be renamed.\n */\n const onRenameChat = (chat) => {\n TTYGService.renameConversation(chat)\n .then(() => {\n TTYGContextService.emit(TTYGEventName.RENAME_CHAT_SUCCESSFUL);\n TTYGContextService.emit(TTYGEventName.LOAD_CHATS);\n })\n .catch(() => {\n TTYGContextService.emit(TTYGEventName.RENAME_CHAT_FAILURE);\n toastr.error($translate.instant('ttyg.chat.messages.rename_failure'));\n });\n };\n\n /**\n * Handles the change of the chats list.\n * When the list is empty, the chats list should be hidden.\n * When the list is not empty, the first chat should be selected\n * @param {ChatsListModel} chats - the new chats list.\n */\n const onChatsChanged = (chats) => {\n $scope.chats = chats;\n setupChatListPanel(chats);\n };\n\n const onCanUpdateAgentUpdated = (canModifyAgent) => {\n $scope.canModifyAgent = canModifyAgent;\n };\n\n /**\n * @param {ChatsListModel} chats - the new chats list.\n */\n const setupChatListPanel = (chats) => {\n if (chats.isEmpty()) {\n $scope.showChats = false;\n } else {\n $scope.showChats = true;\n if (!TTYGContextService.getSelectedChat() && !TTYGStorageService.getChatId()) {\n TTYGContextService.selectChat($scope.chats.getFirstChat());\n }\n }\n };\n\n /**\n * Handles the deletion of a chat by calling the service and updating the chats list.\n * Events are fired for success and failure cases.\n * @param {ChatModel} chat - the chat to be deleted.\n */\n const onDeleteChat = (chat) => {\n TTYGContextService.emit(TTYGEventName.DELETING_CHAT, {chatId: chat.id, inProgress: true});\n TTYGService.deleteConversation(chat.id)\n .then(() => {\n TTYGContextService.emit(TTYGEventName.DELETE_CHAT_SUCCESSFUL, chat);\n const chats = TTYGContextService.getChats();\n chats.deleteChat(chat);\n TTYGContextService.updateChats(chats);\n })\n .catch(() => {\n TTYGContextService.emit(TTYGEventName.DELETE_CHAT_FAILURE);\n toastr.error($translate.instant('ttyg.chat.messages.delete_failure'));\n })\n .finally(() => TTYGContextService.emit(TTYGEventName.DELETING_CHAT, {chatId: chat.id, inProgress: false}));\n };\n\n /**\n * Handles the export of a chat by calling the service and updating the chats list.\n * @param {ChatModel} chat - the chat to be exported.\n */\n const onExportChat = (chat) => {\n TTYGService.exportConversation(chat.id)\n .then(function ({data, filename}) {\n saveAs(data, filename);\n TTYGContextService.emit(TTYGEventName.CHAT_EXPORT_SUCCESSFUL, chat);\n })\n .catch(() => {\n TTYGContextService.emit(TTYGEventName.CHAT_EXPORT_FAILURE);\n toastr.error($translate.instant('ttyg.chat.messages.export_failure'));\n });\n };\n\n /**\n * Handles the change of the agents list.\n * @param {AgentListModel} agents - the new agents list.\n */\n const onAgentListChanged = (agents) => {\n $scope.agents = agents;\n };\n\n /**\n * Handles the deletion of an agent by calling the service and reloading the agents list.\n * @param {AgentModel} agent - the agent to be deleted.\n */\n const onDeleteAgent = (agent) => {\n TTYGContextService.emit(TTYGEventName.DELETING_AGENT, {agentId: agent.id, inProgress: true});\n TTYGService.deleteAgent(agent.id)\n .then(() => {\n return reloadAgents();\n })\n .then(() => {\n TTYGContextService.emit(TTYGEventName.AGENT_DELETED, agent);\n if ($scope.selectedAgent && $scope.selectedAgent.id === agent.id) {\n $scope.selectedAgent = undefined;\n }\n })\n .catch((error) => {\n toastr.error(getError(error, 0, TTYG_ERROR_MSG_LENGTH));\n })\n .finally(() => {\n TTYGContextService.emit(TTYGEventName.DELETING_AGENT, {agentId: agent.id, inProgress: false});\n });\n };\n\n /**\n * Creates a filter model for the agents list.\n */\n const buildAgentsFilterModel = () => {\n const currentRepository = $repositories.getActiveRepository();\n // TODO: this should be refreshed automatically when the repositories change\n const repositoryObjects = $repositories.getLocalReadableGraphdbRepositories()\n .map((repo) => (\n new AgentListFilterModel(repo.id, repo.id, repo.id === currentRepository)\n ));\n $scope.agentListFilterModel = [\n new AgentListFilterModel(AGENTS_FILTER_ALL_KEY, labels.filter_all),\n ...repositoryObjects\n ];\n };\n\n const onSelectedChatChanged = (selectedChat) => {\n // If the selected chat has no ID, it indicates that this is a new (dummy) chat\n // and does not need to be loaded from the server.\n if (selectedChat && selectedChat.id) {\n TTYGService.getConversation(selectedChat.id)\n .then((chat) => {\n TTYGContextService.updateSelectedChat(chat);\n TTYGStorageService.saveChat(selectedChat);\n })\n .catch((error) => {\n // If the chat is not found and the server returns 404, then we notify the user\n // and remove the chat from the chat list. It's expected that the backend would\n // also remove it and next time the list is loaded the chat will no longer be there.\n if (error.status === httpStatus.NOT_FOUND) {\n notifyForMissingChat(selectedChat);\n TTYGContextService.emit(TTYGEventName.LOAD_CHAT_FAILURE, selectedChat);\n }\n });\n } else if (selectedChat) {\n TTYGContextService.updateSelectedChat(selectedChat);\n }\n };\n\n const notifyForMissingChat = (selectedChat) => {\n ModalService.openModalAlert({\n title: $translate.instant('ttyg.chat.dialog.chat_is_missing.title'),\n message: $translate.instant('ttyg.chat.dialog.chat_is_missing.body')\n }).result\n .then(function () {\n TTYGContextService.deleteChat(selectedChat);\n });\n };\n\n /**\n * Handles the selection of an agent.\n * @param {AgentModel} agent\n */\n const onAgentSelected = (agent) => {\n $scope.selectedAgent = agent;\n };\n\n /**\n * Opens the create similarity view. It checks if the passed repository ID matches the one selected by the workbench.\n * If they do not match, a confirmation dialog is shown to inform the user that the selected repository\n * will be automatically changed upon confirmation.\n *\n * @param {{repositoryId: string}} payload - The payload containing the repository ID.\n */\n const onGoToCreateSimilarityView = (payload) => {\n goToView(payload.repositoryId, 'ttyg.agent.create_agent_modal.dialog.confirm_repository_change_before_open_similarity.body', 'similarity/index/create');\n };\n\n /**\n * Opens the \"Autocomplete index\" view. It checks if the passed repository ID matches the one selected by the workbench.\n * If they do not match, a confirmation dialog is shown to inform the user that the selected repository\n * will be automatically changed upon confirmation.\n *\n * @param {{repositoryId: string}} payload - The payload containing the repository ID.\n */\n const goToAutocompleteIndexView = (payload) => {\n goToView(payload.repositoryId, 'ttyg.agent.create_agent_modal.dialog.confirm_repository_change_before_open_autocomplete_index.body', 'autocomplete');\n };\n\n /**\n * Opens the connectors view. It checks if the passed repository ID matches the one selected by the workbench.\n * If they do not match, a confirmation dialog is shown to inform the user that the selected repository\n * will be automatically changed upon confirmation.\n *\n * @param {{repositoryId: string}} payload - The payload containing the repository ID.\n */\n const onGoToConnectorsView = (payload) => {\n goToView(payload.repositoryId, 'ttyg.agent.create_agent_modal.dialog.confirm_repository_change_before_open_connectors.body', 'connectors');\n };\n\n /**\n * Navigates to a specified view URL, potentially after switching the active repository.\n * If the target repository is different from the currently active one, a confirmation modal is shown.\n * Upon user confirmation, the repository is switched and the view is opened in a new browser tab.\n *\n * @param {string} repositoryId - The ID of the target repository to switch to.\n * @param {string} confirmMessageLabelKey - The translation key for the confirmation message to be shown in the modal.\n * @param {string} viewURL - The URL of the view to be opened in a new browser tab.\n */\n const goToView = (repositoryId, confirmMessageLabelKey, viewURL) => {\n if (repositoryId !== $repositories.getActiveRepository()) {\n const repository = $repositories.getRepository(repositoryId);\n if (repository) {\n ModalService.openConfirmationModal({\n title: $translate.instant('common.confirm'),\n message: decodeHTML($translate.instant(confirmMessageLabelKey, {repositoryId: repository.id})),\n confirmButtonKey: 'ttyg.chat_panel.btn.proceed.label'\n },\n () => {\n $repositories.setRepository(repository);\n openView(viewURL);\n });\n }\n } else {\n openView(viewURL);\n }\n }\n\n /**\n * Opens the specified URL in a new browser tab.\n *\n * @param {string} viewURL - The URL to open.\n */\n const openView = (viewURL) => {\n $window.open(viewURL, '_blank');\n }\n\n /**\n * Opens SPARQL editor view with passed query.\n * @param {{query: string, repositoryId: string}} payload\n */\n const onGoToSparqlEditorView = (payload) => {\n if (payload.repositoryId !== $repositories.getActiveRepository()) {\n const repository = $repositories.getRepository(payload.repositoryId);\n if (repository) {\n ModalService.openConfirmation(\n $translate.instant('common.confirm'),\n decodeHTML($translate.instant('ttyg.chat_panel.dialog.confirm_repository_change.body', {repositoryId: payload.repositoryId})),\n () => {\n $repositories.setRepository(repository);\n openInSparqlEditorInNewTab(payload.query);\n });\n }\n\n } else {\n openInSparqlEditorInNewTab(payload.query);\n }\n };\n\n const openInSparqlEditorInNewTab = (query) => {\n $window.open(`/sparql?query=${encodeURIComponent(query)}&execute=true`, '_blank');\n };\n\n /**\n * Loads a chat using the chat ID stored in the local storage and selects it.\n */\n const setCurrentChat = () => {\n const chatId = TTYGStorageService.getChatId();\n const chats = TTYGContextService.getChats();\n // If the chat ID is not stored in the local storage, there is no need to load it.\n // Also, if a chat id is found in the storage but is not present in the chat list, then it probably was deleted,\n // and it will be replaced with a new one on next selection.\n if (!chatId || !chats.getChat(chatId)) {\n return;\n }\n TTYGContextService.selectChat(TTYGContextService.getChats().getChat(chatId));\n };\n\n const updateLabels = () => {\n labels.filter_all = $translate.instant('ttyg.agent.btn.filter.all');\n // recreate the repository list to trigger the update in the view\n buildAgentsFilterModel();\n };\n\n const buildRepositoryList = () => {\n $scope.activeRepositoryList = $repositories.getLocalReadableGraphdbRepositories()\n .map((repo) => (\n new SelectMenuOptionsModel({\n value: repo.id,\n label: repo.id,\n data: {\n repository: repo\n }\n }))\n );\n };\n\n\n // =========================\n // Subscriptions\n // =========================\n\n function cleanUp() {\n subscriptions.forEach((subscription) => subscription());\n TTYGContextService.resetContext();\n }\n\n subscriptions.push($scope.$watch($scope.getActiveRepositoryObject, getActiveRepositoryObjectHandler));\n subscriptions.push(TTYGContextService.onSelectedChatChanged(onSelectedChatChanged));\n subscriptions.push(TTYGContextService.onChatsListChanged(onChatsChanged));\n subscriptions.push(TTYGContextService.onCanUpdateAgentUpdated(onCanUpdateAgentUpdated));\n subscriptions.push(TTYGContextService.subscribe(TTYGContextService.onAgentsListChanged(onAgentListChanged)));\n subscriptions.push(TTYGContextService.subscribe(TTYGEventName.CREATE_CHAT, onCreateNewChat));\n subscriptions.push(TTYGContextService.subscribe(TTYGEventName.RENAME_CHAT, onRenameChat));\n subscriptions.push(TTYGContextService.subscribe(TTYGEventName.DELETE_CHAT, onDeleteChat));\n subscriptions.push(TTYGContextService.subscribe(TTYGEventName.CHAT_EXPORT, onExportChat));\n subscriptions.push(TTYGContextService.subscribe(TTYGEventName.ASK_QUESTION, onAskQuestion));\n subscriptions.push(TTYGContextService.subscribe(TTYGEventName.CONTINUE_CHAT_RUN, onContinueChatRun));\n subscriptions.push(TTYGContextService.subscribe(TTYGEventName.LOAD_CHATS, loadChats));\n subscriptions.push(TTYGContextService.subscribe(TTYGEventName.OPEN_AGENT_SETTINGS, $scope.onOpenNewAgentSettings));\n subscriptions.push(TTYGContextService.subscribe(TTYGEventName.EDIT_AGENT, $scope.onOpenAgentSettings));\n subscriptions.push(TTYGContextService.subscribe(TTYGEventName.CLONE_AGENT, $scope.onOpenCloneAgentSettings));\n subscriptions.push(TTYGContextService.subscribe(TTYGEventName.DELETE_AGENT, onDeleteAgent));\n subscriptions.push(TTYGContextService.subscribe(TTYGEventName.AGENT_SELECTED, onAgentSelected));\n subscriptions.push(TTYGContextService.subscribe(TTYGEventName.GO_TO_CREATE_SIMILARITY_VIEW, onGoToCreateSimilarityView));\n subscriptions.push(TTYGContextService.subscribe(TTYGEventName.GO_TO_AUTOCOMPLETE_INDEX_VIEW, goToAutocompleteIndexView));\n subscriptions.push(TTYGContextService.subscribe(TTYGEventName.GO_TO_CONNECTORS_VIEW, onGoToConnectorsView));\n subscriptions.push(TTYGContextService.subscribe(TTYGEventName.GO_TO_SPARQL_EDITOR, onGoToSparqlEditorView));\n subscriptions.push($rootScope.$on('$translateChangeSuccess', updateLabels));\n subscriptions.push($rootScope.$on('securityInit', updateCanModifyAgent));\n $scope.$on('$destroy', cleanUp);\n\n // =========================\n // Initialization\n // =========================\n\n function onInit() {\n buildRepositoryList();\n loadAgents()\n .then(() => {\n $scope.initialized = true;\n buildAgentsFilterModel();\n return loadChats();\n })\n .then(setCurrentChat);\n updateCanModifyAgent();\n }\n}\n","import './chat-item-detail.directive';\nimport 'angular/core/directives/editable-content/editable-content';\nimport {TTYGEventName} from \"../services/ttyg-context.service\";\nimport {CHAT_MESSAGE_ROLE, ChatMessageModel} from \"../../models/ttyg/chat-message\";\nimport {ChatItemModel} from \"../../models/ttyg/chat-item\";\nimport {cloneDeep} from \"lodash\";\nimport {decodeHTML} from \"../../../../app\";\nimport {ChatModel} from \"../../models/ttyg/chats\";\n\nconst modules = [\n 'graphdb.framework.ttyg.directives.chat-item-detail',\n 'graphdb.framework.core.directives.editable-content'\n];\n\nangular\n .module('graphdb.framework.ttyg.directives.chat-panel', modules)\n .directive('chatPanel', ChatPanelComponent);\n\nChatPanelComponent.$inject = ['toastr', '$translate', 'TTYGContextService', '$timeout'];\n\n/**\n * @ngdoc directive\n * @name graphdb.framework.ttyg.directives.chat-panel:chatPanel\n * @restrict E\n * @description\n *\n * This directive represents a chat panel component that allows users to interact with a chat. It provides functionality for asking questions,\n * regenerating chat content, and other interactive features.\n *\n * It encapsulates the logic and presentation for displaying and managing chat-related interactions.\n *\n * @example\n * <chat-panel></chat-panel>\n */\nfunction ChatPanelComponent(toastr, $translate, TTYGContextService, $timeout) {\n return {\n restrict: 'E',\n templateUrl: 'js/angular/ttyg/templates/chat-panel.html',\n link: ($scope, element, attrs) => {\n\n // =========================\n // Public variables\n // =========================\n\n /**\n * @type {ChatModel}\n */\n $scope.chat = undefined;\n\n /**\n * @type {AgentModel}\n */\n $scope.selectedAgent = undefined;\n\n /**\n * @type {ChatItemModel}\n */\n $scope.chatItem = undefined;\n\n /**\n * @type {ChatItemModel}\n */\n $scope.askingChatItem = undefined;\n\n /**\n * True while a question is being handled. It may involve multiple requests until it turns back to false.\n * @type {boolean}\n */\n $scope.waitingForLastMessage = false;\n\n /**\n * Flag that indicates that the chat is about to be changed.\n * @type {boolean}\n */\n $scope.loadingChat = true;\n\n // =========================\n // Private variables\n // =========================\n\n // =========================\n // Public functions\n // =========================\n\n /**\n * Handles the ask question action.\n */\n $scope.ask = () => {\n $scope.chatItem.question.timestamp = Date.now();\n $scope.askingChatItem = cloneDeep($scope.chatItem);\n if (!$scope.chatItem.chatId) {\n createNewChat();\n } else {\n askQuestion($scope.chatItem);\n }\n $scope.chatItem = getEmptyChatItem();\n scrollToBottom();\n focusQuestionInput();\n };\n\n /**\n * Regenerates the answer for the provided chat item.\n *\n * @param {ChatItemModel} chatItem - The chat item that contains the question to be regenerated.\n */\n $scope.regenerateQuestion = (chatItem) => {\n const regenerateChatItem = getEmptyChatItem();\n regenerateChatItem.setQuestionMessage(chatItem.getQuestionMessage());\n regenerateChatItem.question.timestamp = Date.now();\n $scope.askingChatItem = regenerateChatItem;\n askQuestion(regenerateChatItem);\n scrollToBottom();\n };\n\n /**\n * Handles pressing the Enter key in the question input.\n * Will not trigger if `Shift` or `Ctrl` keys are pressed, or if Ask button is disabled.\n *\n * @param {KeyboardEvent} $event - The keyboard event triggered by the user interaction.\n */\n $scope.onKeypressOnInput = ($event) => {\n if (!$scope.askingChatItem && $event.key === 'Enter' && !$event.shiftKey && !$event.ctrlKey) {\n $scope.ask();\n }\n };\n\n $scope.onAskHowDeliveredAnswer = () => {\n const askHowDerivedAnswerChatItem = getEmptyChatItem();\n askHowDerivedAnswerChatItem.setQuestionMessage($translate.instant('ttyg.chat_panel.btn.derive_answer.label'));\n askHowDerivedAnswerChatItem.question.timestamp = Date.now();\n $scope.askingChatItem = cloneDeep(askHowDerivedAnswerChatItem);\n askQuestion(askHowDerivedAnswerChatItem);\n scrollToBottom();\n };\n\n /**\n * Finds out if agent with such id exists and returns its name or a default message for deleted agent.\n * @param {string} agentId\n * @return {string}\n */\n $scope.getAgentName = (agentId) => {\n const agent = TTYGContextService.getAgent(agentId);\n return agent ? agent.name : decodeHTML($translate.instant('ttyg.chat_panel.deleted_agent'));\n };\n\n // =========================\n // Private functions\n // =========================\n\n const createNewChat = () => {\n $scope.waitingForLastMessage = true;\n TTYGContextService.emit(TTYGEventName.CREATE_CHAT, $scope.chatItem);\n };\n\n const askQuestion = (chatItem) => {\n $scope.waitingForLastMessage = true;\n TTYGContextService.emit(TTYGEventName.ASK_QUESTION, chatItem);\n };\n\n /**\n * Handles the update of the selected chat.\n * @param {ChatModel} chat - the new selected chat.\n */\n const onSelectedChatUpdated = (chat) => {\n $scope.chat = chat;\n if (!chat || !chat.id && $scope.askingChatItem) {\n // Do nothing if the chat is new (dummy) and a question is currently being asked.\n return;\n }\n $scope.loadingChat = false;\n let message = $scope.chatItem.question.message;\n $scope.chatItem = getEmptyChatItem();\n $scope.chatItem.question.message = message;\n $scope.askingChatItem = undefined;\n if ($scope.chat) {\n // TODO: Why on earth this is here? The chat changed handler is in the ttyg.view. Why doesn't it handle this\n // but we need to go through 2 more events to achieve the same result?\n const lastChatItem = $scope.chat.chatHistory.getLast();\n if (lastChatItem && lastChatItem.agentId) {\n TTYGContextService.selectAgent(TTYGContextService.getAgent(lastChatItem.agentId));\n }\n }\n focusQuestionInput();\n };\n\n const onLastMessageReceived = () => {\n $scope.waitingForLastMessage = false;\n };\n\n /**\n * Handles the failure of loading the chat and the server returns 404. This might happen if the chat does\n * not exist anymore because it was deleted by another user for example.\n */\n const onLoadChatFailure = () => {\n $scope.loadingChat = false;\n $scope.chatItem = getEmptyChatItem();\n focusQuestionInput();\n };\n\n const onSelectedChatChanged = (chat) => {\n if (chat) {\n // Skip the loading indication if it is a new (dummy) chat that has not been created yet.\n $scope.loadingChat = chat && chat.id;\n $scope.chatItem = getEmptyChatItem();\n focusQuestionInput();\n } else {\n reset();\n }\n };\n\n const onQuestionFailure = () => {\n $scope.chatItem = cloneDeep($scope.askingChatItem);\n $scope.askingChatItem = undefined;\n $scope.waitingForLastMessage = false;\n };\n\n /**\n * Handles the change of the selected agent.\n * @param {AgentModel} agent - the new selected agent.\n */\n const onSelectedAgentChanged = (agent) => {\n $scope.selectedAgent = agent;\n if ($scope.selectedAgent && $scope.chatItem) {\n $scope.chatItem.agentId = $scope.selectedAgent.id;\n }\n focusQuestionInput();\n };\n\n const onChatDeleted = (deletedChat) => {\n if ($scope.chat && deletedChat.id === $scope.chat.id) {\n reset();\n }\n };\n\n const getEmptyChatItem = () => {\n const chatItem = new ChatItemModel();\n chatItem.question = new ChatMessageModel({role: CHAT_MESSAGE_ROLE.USER});\n\n if ($scope.chat) {\n chatItem.chatId = $scope.chat.id;\n }\n\n if ($scope.selectedAgent) {\n chatItem.agentId = $scope.selectedAgent.id;\n }\n\n return chatItem;\n };\n\n const focusQuestionInput = () => {\n // Moving focus to the end of the JS call stack with a timeout, because on first Agent select,\n // the dropdown .agent-option steals the focus, or the browser assigns it to the document <body>.\n setTimeout(() => {\n let inputElement = document.querySelector('.question-input');\n if (inputElement) {\n inputElement.focus();\n }\n });\n }\n\n const scrollToBottom = () => {\n // Call it in a timeout to ensure that Angular's digest cycle is finished and all elements are displayed.\n setTimeout(() => {\n const chatDetailsElement = element.find(\".chat-details\")[0];\n if (chatDetailsElement) {\n chatDetailsElement.scrollTop = chatDetailsElement.scrollHeight;\n }\n });\n };\n\n const reset = () => {\n $scope.chat = ChatModel.getEmptyChat();\n $scope.loadingChat = false;\n $scope.chatItem = getEmptyChatItem();\n $scope.askingChatItem = undefined;\n $scope.waitingForLastMessage = false;\n focusQuestionInput();\n };\n\n const init = () => {\n $scope.chat = ChatModel.getEmptyChat();\n $scope.chatItem = getEmptyChatItem();\n focusQuestionInput();\n };\n\n // =========================\n // Subscriptions\n // =========================\n const subscriptions = [];\n\n const removeAllSubscribers = () => {\n subscriptions.forEach((subscription) => subscription());\n };\n\n subscriptions.push($scope.$watchCollection('chat.chatHistory.items', scrollToBottom));\n subscriptions.push(TTYGContextService.onSelectedChatUpdated(onSelectedChatUpdated));\n subscriptions.push(TTYGContextService.onLastMessageReceived(onLastMessageReceived));\n subscriptions.push(TTYGContextService.onSelectedAgentChanged(onSelectedAgentChanged));\n subscriptions.push(TTYGContextService.onSelectedChatChanged(onSelectedChatChanged));\n subscriptions.push(TTYGContextService.subscribe(TTYGEventName.LOAD_CHAT_FAILURE, onLoadChatFailure));\n subscriptions.push(TTYGContextService.subscribe(TTYGEventName.ASK_QUESTION_FAILURE, onQuestionFailure));\n subscriptions.push(TTYGContextService.subscribe(TTYGEventName.CREATE_CHAT_FAILURE, onQuestionFailure));\n subscriptions.push(TTYGContextService.subscribe(TTYGEventName.DELETE_CHAT_SUCCESSFUL, onChatDeleted));\n\n // Deregister the watcher when the scope/directive is destroyed\n $scope.$on('$destroy', removeAllSubscribers);\n\n // =========================\n // Initialization\n // =========================\n init();\n }\n };\n}\n","import {decodeHTML} from \"../../../../app\";\nimport {TTYGEventName} from \"../services/ttyg-context.service\";\nimport 'angular/ttyg/services/externalIntegrationModal.service';\n\nconst modules = [\n 'graphdb.framework.ttyg.services.externalIntegrationModal'\n];\n\nangular\n .module('graphdb.framework.ttyg.directives.agent-list', modules)\n .directive('agentList', AgentListComponent);\n\nAgentListComponent.$inject = ['TTYGContextService', 'ModalService', '$translate', '$uibModal', 'ExternalIntegrationModalService'];\n\nfunction AgentListComponent(TTYGContextService, ModalService, $translate, $uibModal, ExternalIntegrationModalService) {\n return {\n restrict: 'E',\n templateUrl: 'js/angular/ttyg/templates/agent-list.html',\n scope: {\n agentList: '=',\n agentListFilterModel: '='\n },\n link: ($scope, element, attrs) => {\n\n // =========================\n // Public variables\n // =========================\n\n /**\n * Selected agent.\n * @type {AgentModel|undefined}\n */\n $scope.selectedAgent = undefined;\n\n /**\n * The selected agents filter.\n * @type {{key: string, label: string}|undefined}\n */\n $scope.selectedAgentsFilter = undefined;\n\n /**\n * An event instance holding the agent to be deleted and if the progress is ongoing.\n * @type {agentId: string, inProgress: boolean}\n */\n $scope.deletingAgent = undefined;\n\n // =========================\n // Private variables\n // =========================\n\n // =========================\n // Public functions\n // =========================\n\n /**\n * Triggers the agent edit process.\n * @param {AgentModel} agent\n */\n $scope.onEditAgent = (agent) => {\n TTYGContextService.emit(TTYGEventName.EDIT_AGENT, agent);\n };\n\n /**\n * Opens a modal to copy the external integration for a given agent.\n *\n * Used when the agent is already provided.\n *\n * @function\n * @param {AgentModel} agent - The agent for which to configure the integration.\n */\n $scope.onExternalIntegration = (agent) => {\n ExternalIntegrationModalService.open(agent);\n };\n\n /**\n * Triggers the agent clone process.\n * @param {AgentModel} agent\n */\n $scope.onCloneAgent = (agent) => {\n TTYGContextService.emit(TTYGEventName.CLONE_AGENT, agent);\n };\n\n /**\n * Triggers the agent delete process.\n * @param {AgentModel} agent\n */\n $scope.onDeleteAgent = (agent) => {\n const title = $translate.instant('ttyg.agent.delete_agent_modal.title');\n const confirmDeleteMessage = decodeHTML($translate.instant('ttyg.agent.delete_agent_modal.body', {agentName: agent.name}));\n ModalService.openConfirmation(title, confirmDeleteMessage, () => TTYGContextService.emit(TTYGEventName.DELETE_AGENT, agent));\n };\n\n /**\n * Filters the agents based on the selected repository.\n * @param {AgentListFilterModel} selectedFilter\n */\n $scope.onAgentsFilterChange = (selectedFilter) => {\n $scope.selectedAgentsFilter = selectedFilter;\n if ($scope.selectedAgentsFilter) {\n $scope.agentList.filterByRepository($scope.selectedAgentsFilter.key);\n }\n };\n\n // =========================\n // Private functions\n // =========================\n\n const updateSelectedAgentsFilter = () => {\n const selectedFilter = $scope.agentListFilterModel.find((filter) => filter.selected);\n $scope.selectedAgentsFilter = selectedFilter || $scope.agentListFilterModel[0];\n $scope.onAgentsFilterChange($scope.selectedAgentsFilter);\n };\n\n /**\n * Handles the progress of deletion of an agent.\n * @param {{agentId: string, inProgress: boolean}} event\n */\n const onDeletingAgent = (event) => {\n $scope.deletingAgent = event;\n };\n\n /**\n * Handles the selection of an agent.\n * @param {AgentModel} agent\n */\n const onSelectedAgentChanged = (agent) => {\n $scope.selectedAgent = agent;\n };\n\n // =========================\n // Subscriptions\n // =========================\n\n const subscriptions = [];\n\n const removeAllSubscribers = () => {\n subscriptions.forEach((subscription) => subscription());\n };\n\n subscriptions.push($scope.$watch('agentListFilterModel', updateSelectedAgentsFilter));\n subscriptions.push(TTYGContextService.subscribe(TTYGEventName.DELETING_AGENT, onDeletingAgent));\n subscriptions.push(TTYGContextService.onSelectedAgentChanged(onSelectedAgentChanged));\n\n // Deregister the watcher when the scope/directive is destroyed\n $scope.$on('$destroy', removeAllSubscribers);\n\n // =========================\n // Initialization\n // =========================\n\n function initialize() {\n updateSelectedAgentsFilter();\n }\n initialize();\n }\n };\n}\n","/**\n * @ngdoc directive\n * @name graphdb.framework.core.directives:inlineEditableText\n * @restrict E\n * @description\n * A directive for inline editing of text fields. It provides a simple interface to display text,\n * switch to an editable input field on double-click, and save or cancel changes.\n *\n * The directive allows for customizable save, cancel, click, and double-click actions.\n *\n * @param {string} fieldName - The name of the field in the source object to be edited.\n * @param {Object} source - The object containing the field to be edited.\n * @param {function} onSave - The function to be called when saving the edited text.\n * It passes an object with the new text and the source object.\n * @param {function} onCancel - The function to be called when editing is canceled.\n * @param {function} onClick - The function to be called on single-click.\n * @param {function} onDblclick - The function to be called on double-click.\n * @param {boolean} isEditing - A flag indicating whether the text is currently being edited.\n *\n * @example\n * <inline-editable-text\n * field-name=\"name\"\n * source=\"item\"\n * on-save=\"saveFunction(newText, source)\"\n * on-cancel=\"cancelFunction()\"\n * on-click=\"clickFunction(source)\"\n * on-dblclick=\"dblClickFunction(source)\"\n * is-editing=\"item.isEditing\">\n * </inline-editable-text>\n *\n * @requires $timeout\n */\nangular\n .module('graphdb.framework.core.directives.inline-editable-text', [])\n .directive('inlineEditableText', InlineEditableText);\n\nInlineEditableText.$inject = ['$timeout'];\n\nfunction InlineEditableText($timeout) {\n return {\n restrict: 'E',\n scope: {\n /**\n * {@type {text}}\n */\n fieldName: '@',\n source: '=',\n onSave: '&',\n onCancel: '&',\n onClick: '&',\n onDblclick: '&',\n isEditing: '='\n },\n templateUrl: 'js/angular/core/directives/inline-editable-text/templates/inline-editable-text.template.html',\n link: function (scope, element) {\n\n // =========================\n // Public variables\n // =========================\n scope.editableModel = {};\n\n // =========================\n // Private variables\n // =========================\n const subscriptions = [];\n let clickTimeout;\n\n // =========================\n // Public functions\n // =========================\n scope.onKeydown = (event) => {\n if (event.key === 'Enter') {\n cancelClickTimeout();\n if (scope.editableModel.text !== scope.text) {\n scope.onSave({newText:scope.editableModel.text, source: scope.source});\n }\n } else if (event.key === 'Escape') {\n cancelEditing();\n }\n };\n\n scope.onCancelEditing = () => {\n cancelEditing();\n };\n\n scope.onSelect = () => {\n if (clickTimeout) {\n cancelClickTimeout();\n scope.onDblclick({source: scope.source});\n } else {\n clickTimeout = $timeout(function () {\n scope.onClick({source: scope.source});\n cancelClickTimeout();\n }, 250);\n }\n };\n\n // =========================\n // Private functions\n // =========================\n const cancelEditing = () => {\n cancelClickTimeout();\n scope.onCancel();\n };\n\n const cancelClickTimeout = () => {\n $timeout.cancel(clickTimeout);\n clickTimeout = undefined;\n };\n\n const focusEditElement = () => {\n // Focus and select the text in the input field\n $timeout(() => {\n const inputElement = element.find('input')[0];\n inputElement.focus();\n inputElement.select();\n }, 0);\n };\n\n // =========================\n // Subscription handlers\n // =========================\n const onIsEditChanged = (newVal) => {\n if (newVal) {\n scope.editableModel.text = scope.source[scope.fieldName];\n focusEditElement();\n }\n };\n\n // =========================\n // Subscriptions\n // =========================\n subscriptions.push(scope.$watch('isEditing', onIsEditChanged));\n\n const removeAllSubscribers = () => {\n subscriptions.forEach((subscription) => subscription());\n cancelClickTimeout();\n };\n\n // Deregister the watcher when the scope/directive is destroyed\n scope.$on('$destroy', removeAllSubscribers);\n }\n };\n}\n","/**\n * A model for the agent settings modal configuration.\n */\nexport class AgentSettingsModal {\n /**\n * Constructor.\n * @param {RepositoryInfoModel} activeRepositoryInfo\n * @param {string[]} activeRepositoryList\n * @param {AgentFormModel} agentFormModel\n * @param {'create'|'edit'|'clone'} operation\n */\n constructor(\n activeRepositoryInfo,\n activeRepositoryList,\n agentFormModel,\n operation\n ) {\n this.activeRepositoryInfo = activeRepositoryInfo;\n this.activeRepositoryList = activeRepositoryList;\n this.agentFormModel = agentFormModel;\n this.operation = operation;\n }\n}\n","import {SelectMenuOptionsModel} from \"../../models/form-fields\";\nimport {TTYGEventName} from \"../services/ttyg-context.service\";\n\nconst modules = [\n];\n\nangular\n .module('graphdb.framework.ttyg.directives.agent-select-menu', modules)\n .directive('agentSelectMenu', AgentSelectMenuComponent);\n\nAgentSelectMenuComponent.$inject = ['TTYGContextService', '$translate', '$sce', 'ModalService'];\n\nfunction AgentSelectMenuComponent(TTYGContextService, $translate, $sce, ModalService) {\n return {\n restrict: 'E',\n templateUrl: 'js/angular/ttyg/templates/agent-select-menu.html',\n scope: {\n },\n link: ($scope) => {\n\n // =========================\n // Public variables\n // =========================\n\n $scope.agentOptionsList = [];\n\n /**\n * Selected agent ID.\n * @type {AgentModel|undefined}\n */\n $scope.selectedAgent = undefined;\n\n // =========================\n // Private variables\n // =========================\n\n // =========================\n // Public functions\n // =========================\n\n /**\n * Handles the agent selection.\n * @param {Event} $event - The DOM event triggered by the selection.\n * @param {AgentModel} agent - The selected agent instance.\n */\n $scope.onAgentSelected = ($event, agent) => {\n if (!agent.isCompatible) {\n // Prevents the dropdown from closing if the selected agent is not compatible\n // by stopping event propagation and preventing the default action.\n $event.stopPropagation();\n $event.preventDefault();\n return;\n }\n markAsSelected(agent);\n $scope.selectedAgent = agent;\n TTYGContextService.selectAgent(agent);\n if (agent.isRepositoryDeleted) {\n const title = $translate.instant('ttyg.agent.agent_select_menu.configure_agent_modal.title');\n const confirmMessage = $translate.instant('ttyg.agent.agent_select_menu.configure_agent_modal.body');\n ModalService.openConfirmation(title, confirmMessage,\n () => TTYGContextService.emit(TTYGEventName.EDIT_AGENT, agent)\n );\n }\n };\n\n // =========================\n // Private functions\n // =========================\n\n /**\n * Marks the given agent as selected and deselects the rest.\n * @param {AgentModel} agent\n */\n const markAsSelected = (agent) => {\n $scope.agentOptionsList.forEach((agentOption) => {\n agentOption.selected = agentOption.data.agent === agent;\n });\n };\n\n /**\n * Handles the agent list change event.\n * @param {AgentListModel} agents\n */\n const onAgentListChanged = (agents) => {\n buildAgentOptionsModel(agents);\n };\n\n /**\n * Handles the agent deleted event.\n * @param {AgentModel} deletedAgent - the deleted agent\n */\n const onAgentDeleted = (deletedAgent) => {\n if ($scope.selectedAgent && $scope.selectedAgent.id === deletedAgent.id) {\n $scope.selectedAgent.isDeleted = true;\n TTYGContextService.selectAgent($scope.selectedAgent);\n }\n };\n\n /**\n * Handles the selection of an agent. When an agent is selected by the user from this menu, the agent is then\n * saved in the local storage. When the TTYG view is initialized, the selected agent is retrieved from the\n * local and its details loaded through the API. Then this component is updated to reflect the selected agent.\n * @param {AgentModel} agent\n */\n const onSelectedAgentChanged = (agent) => {\n markAsSelected(agent);\n $scope.selectedAgent = agent;\n };\n\n /**\n * Builds the agent options model which is used to display the agents in the select menu.\n * @param {AgentListModel} agentsListModel\n */\n const buildAgentOptionsModel = (agentsListModel) => {\n $scope.agentOptionsList = agentsListModel.agents.map((agent) => {\n return new SelectMenuOptionsModel({\n value: agent.id,\n label: agent.name,\n data: {\n agent: agent\n }\n });\n });\n };\n\n // =========================\n // Subscriptions\n // =========================\n\n const subscriptions = [];\n\n const removeAllSubscribers = () => {\n subscriptions.forEach((subscription) => subscription());\n };\n\n subscriptions.push(TTYGContextService.onAgentsListChanged(onAgentListChanged));\n subscriptions.push(TTYGContextService.subscribe(TTYGEventName.AGENT_DELETED, onAgentDeleted));\n subscriptions.push(TTYGContextService.onSelectedAgentChanged(onSelectedAgentChanged));\n // Deregister the watcher when the scope/directive is destroyed\n $scope.$on('$destroy', removeAllSubscribers);\n\n // =========================\n // Initialization\n // =========================\n\n function initialize() {\n // buildAgentOptionsModel();\n }\n initialize();\n }\n };\n}\n","import 'angular/core/directives/inline-editable-text/inline-editable-text.directive';\nimport {TTYGEventName} from \"../services/ttyg-context.service\";\nimport {getHumanReadableTimestamp} from \"../services/ttyg.utils\";\nimport {decodeHTML} from \"../../../../app\";\n\nconst modules = [\n 'graphdb.framework.core.directives.inline-editable-text'\n];\n\nangular\n .module('graphdb.framework.ttyg.directives.chat-list', modules)\n .directive('chatList', ChatListComponent);\n\nChatListComponent.$inject = ['TTYGContextService', 'ModalService', '$translate', '$filter'];\n\nfunction ChatListComponent(TTYGContextService, ModalService, $translate, $filter) {\n return {\n restrict: 'E',\n templateUrl: 'js/angular/ttyg/templates/chat-list.html',\n link: ($scope) => {\n\n // =========================\n // Public variables\n // =========================\n\n $scope.selectedChat = undefined;\n $scope.renamedChat = undefined;\n $scope.deletingChat = undefined;\n\n // =========================\n // Private variables\n // =========================\n\n // =========================\n // Public functions\n // =========================\n\n /**\n * Handles the selection of a chat for renaming.\n * @param {ChatModel} chat\n */\n $scope.onSelectChatForRenaming = (chat) => {\n $scope.renamedChat = chat;\n };\n\n /**\n * Handles the selection of a chat.\n * @param {ChatModel} chat\n */\n $scope.onSelectChat = (chat) => {\n if (!$scope.selectedChat || $scope.selectedChat.id !== chat.id) {\n const nonPersistedChat = TTYGContextService.getChats().getNonPersistedChat();\n if (nonPersistedChat) {\n TTYGContextService.deleteChat(nonPersistedChat);\n }\n TTYGContextService.selectChat(chat);\n $scope.renamedChat = undefined;\n }\n };\n\n /**\n * Handles the deletion of a chat.\n * @param {ChatModel} chat\n */\n $scope.onDeleteChat = (chat) => {\n const title = $translate.instant('ttyg.dialog.delete.title');\n const confirmDeleteMessage = decodeHTML($translate.instant('ttyg.dialog.delete.body', {chatName: chat.name}));\n ModalService.openConfirmation(title, confirmDeleteMessage, () => TTYGContextService.emit(TTYGEventName.DELETE_CHAT, chat));\n };\n\n /**\n * Handles the renaming of a chat.\n * @param {string} newName - the new name of the chat\n * @param {ChatModel} chat\n */\n $scope.onRenameChat = (newName, chat) => {\n chat.name = newName;\n $scope.renamedChat = undefined;\n TTYGContextService.emit(TTYGEventName.RENAME_CHAT, chat);\n };\n\n /**\n * Handles the export of a chat.\n * @param {ChatModel} chat\n */\n $scope.onExportChat = (chat) => {\n TTYGContextService.emit(TTYGEventName.CHAT_EXPORT, chat);\n };\n\n /**\n * Handles the cancelation of the chat renaming.\n */\n $scope.onCancelChatRenaming = () => {\n $scope.renamedChat = undefined;\n };\n\n $scope.getHumanReadableChatGroupTimestamp = (timestamp) => {\n return getHumanReadableTimestamp($translate, $filter, timestamp);\n };\n\n // =========================\n // Private functions\n // =========================\n\n /**\n * Handles the change of the selected chat.\n * @param {ChatModel} chat\n */\n const onSelectedChatChanged = (chat) => {\n $scope.selectedChat = chat;\n };\n\n /**\n * Handles the change of the chats list.\n * @param {ChatsListModel} chatList\n */\n const onChatsListChanged = (chatList) => {\n $scope.chatList = chatList;\n };\n\n /**\n * Handles the progress of deletion of a chat.\n * @param {{chatId: string, inProgress: boolean}} event\n */\n const onDeletingChat = (event) => {\n $scope.deletingChat = event;\n };\n\n // =========================\n // Subscriptions\n // =========================\n const subscriptions = [];\n\n const removeAllSubscribers = () => {\n subscriptions.forEach((subscription) => subscription());\n };\n\n subscriptions.push(TTYGContextService.onSelectedChatChanged(onSelectedChatChanged));\n subscriptions.push(TTYGContextService.onSelectedChatUpdated(onSelectedChatChanged));\n subscriptions.push(TTYGContextService.onChatsListChanged(onChatsListChanged));\n subscriptions.push(TTYGContextService.subscribe(TTYGEventName.DELETING_CHAT, onDeletingChat));\n\n // Deregister the watcher when the scope/directive is destroyed\n $scope.$on('$destroy', removeAllSubscribers);\n\n // =========================\n // Initialization\n // =========================\n\n function initialize() {\n }\n initialize();\n }\n };\n}\n","const modules = [];\n\nangular\n .module('graphdb.framework.ttyg.directives.show-tooltip-on-overflow', modules)\n .directive('showTooltipOnOverflow', ShowTooltipOnOverflow);\n\nfunction ShowTooltipOnOverflow() {\n return {\n link: function(scope, element) {\n function updateTooltip() {\n const innerTextElement = element[0].querySelector('.editable-text-element');\n if (!innerTextElement) return;\n\n if (innerTextElement.scrollWidth > innerTextElement.clientWidth) {\n element.attr('title', scope.chat.name);\n } else {\n element.removeAttr('title');\n }\n }\n\n // Needed in order to have values for scrollWidth and clientWidth\n setTimeout(updateTooltip, 0);\n }\n };\n}\n","/* FileSaver.js\n * A saveAs() FileSaver implementation.\n * 2015-05-07.2\n *\n * By Eli Grey, http://eligrey.com\n * License: X11/MIT\n * See https://github.com/eligrey/FileSaver.js/blob/master/LICENSE.md\n */\n\n/*global self */\n/*jslint bitwise: true, indent: 4, laxbreak: true, laxcomma: true, smarttabs: true, plusplus: true */\n\n/*! @source http://purl.eligrey.com/github/FileSaver.js/blob/master/FileSaver.js */\n\nvar saveAs = saveAs || (function(view) {\n\t\"use strict\";\n\t// IE <10 is explicitly unsupported\n\tif (typeof navigator !== \"undefined\" && /MSIE [1-9]\\./.test(navigator.userAgent)) {\n\t\treturn;\n\t}\n\tvar\n\t\t doc = view.document\n\t\t // only get URL when necessary in case Blob.js hasn't overridden it yet\n\t\t, get_URL = function() {\n\t\t\treturn view.URL || view.webkitURL || view;\n\t\t}\n\t\t, save_link = doc.createElementNS(\"http://www.w3.org/1999/xhtml\", \"a\")\n\t\t, can_use_save_link = \"download\" in save_link\n\t\t, click = function(node) {\n\t\t\tvar event = new MouseEvent(\"click\");\n\t\t\tnode.dispatchEvent(event);\n\t\t}\n\t\t, webkit_req_fs = view.webkitRequestFileSystem\n\t\t, req_fs = view.requestFileSystem || webkit_req_fs || view.mozRequestFileSystem\n\t\t, throw_outside = function(ex) {\n\t\t\t(view.setImmediate || view.setTimeout)(function() {\n\t\t\t\tthrow ex;\n\t\t\t}, 0);\n\t\t}\n\t\t, force_saveable_type = \"application/octet-stream\"\n\t\t, fs_min_size = 0\n\t\t// See https://code.google.com/p/chromium/issues/detail?id=375297#c7 and\n\t\t// https://github.com/eligrey/FileSaver.js/commit/485930a#commitcomment-8768047\n\t\t// for the reasoning behind the timeout and revocation flow\n\t\t, arbitrary_revoke_timeout = 500 // in ms\n\t\t, revoke = function(file) {\n\t\t\tvar revoker = function() {\n\t\t\t\tif (typeof file === \"string\") { // file is an object URL\n\t\t\t\t\tget_URL().revokeObjectURL(file);\n\t\t\t\t} else { // file is a File\n\t\t\t\t\tfile.remove();\n\t\t\t\t}\n\t\t\t};\n\t\t\tif (view.chrome) {\n\t\t\t\trevoker();\n\t\t\t} else {\n\t\t\t\tsetTimeout(revoker, arbitrary_revoke_timeout);\n\t\t\t}\n\t\t}\n\t\t, dispatch = function(filesaver, event_types, event) {\n\t\t\tevent_types = [].concat(event_types);\n\t\t\tvar i = event_types.length;\n\t\t\twhile (i--) {\n\t\t\t\tvar listener = filesaver[\"on\" + event_types[i]];\n\t\t\t\tif (typeof listener === \"function\") {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tlistener.call(filesaver, event || filesaver);\n\t\t\t\t\t} catch (ex) {\n\t\t\t\t\t\tthrow_outside(ex);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t, auto_bom = function(blob) {\n\t\t\t// prepend BOM for UTF-8 XML and text/* types (including HTML)\n\t\t\tif (/^\\s*(?:text\\/\\S*|application\\/xml|\\S*\\/\\S*\\+xml)\\s*;.*charset\\s*=\\s*utf-8/i.test(blob.type)) {\n\t\t\t\treturn new Blob([\"\\ufeff\", blob], {type: blob.type});\n\t\t\t}\n\t\t\treturn blob;\n\t\t}\n\t\t, FileSaver = function(blob, name) {\n\t\t\tblob = auto_bom(blob);\n\t\t\t// First try a.download, then web filesystem, then object URLs\n\t\t\tvar\n\t\t\t\t filesaver = this\n\t\t\t\t, type = blob.type\n\t\t\t\t, blob_changed = false\n\t\t\t\t, object_url\n\t\t\t\t, target_view\n\t\t\t\t, dispatch_all = function() {\n\t\t\t\t\tdispatch(filesaver, \"writestart progress write writeend\".split(\" \"));\n\t\t\t\t}\n\t\t\t\t// on any filesys errors revert to saving with object URLs\n\t\t\t\t, fs_error = function() {\n\t\t\t\t\t// don't create more object URLs than needed\n\t\t\t\t\tif (blob_changed || !object_url) {\n\t\t\t\t\t\tobject_url = get_URL().createObjectURL(blob);\n\t\t\t\t\t}\n\t\t\t\t\tif (target_view) {\n\t\t\t\t\t\ttarget_view.location.href = object_url;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar new_tab = view.open(object_url, \"_blank\");\n\t\t\t\t\t\tif (new_tab == undefined && typeof safari !== \"undefined\") {\n\t\t\t\t\t\t\t//Apple do not allow window.open, see http://bit.ly/1kZffRI\n\t\t\t\t\t\t\tview.location.href = object_url\n\t\t\t\t\t\t} \n\t\t\t\t\t}\n\t\t\t\t\tfilesaver.readyState = filesaver.DONE;\n\t\t\t\t\tdispatch_all();\n\t\t\t\t\trevoke(object_url);\n\t\t\t\t}\n\t\t\t\t, abortable = function(func) {\n\t\t\t\t\treturn function() {\n\t\t\t\t\t\tif (filesaver.readyState !== filesaver.DONE) {\n\t\t\t\t\t\t\treturn func.apply(this, arguments);\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\t, create_if_not_found = {create: true, exclusive: false}\n\t\t\t\t, slice\n\t\t\t;\n\t\t\tfilesaver.readyState = filesaver.INIT;\n\t\t\tif (!name) {\n\t\t\t\tname = \"download\";\n\t\t\t}\n\t\t\tif (save_link) {\n\t\t\t\tobject_url = get_URL().createObjectURL(blob);\n\t\t\t\t//window.open('data:attachment/csv;charset=utf-8,' + object_url);\n\t\t\t\tsave_link.href = object_url;\n\t\t\t\tsave_link.download = name;\n\t\t\t\tsetTimeout(function() {\n\t\t\t\t\tclick(save_link);\n\t\t\t\t\tdispatch_all();\n\t\t\t\t\trevoke(object_url);\n\t\t\t\t\tfilesaver.readyState = filesaver.DONE;\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// Object and web filesystem URLs have a problem saving in Google Chrome when\n\t\t\t// viewed in a tab, so I force save with application/octet-stream\n\t\t\t// http://code.google.com/p/chromium/issues/detail?id=91158\n\t\t\t// Update: Google errantly closed 91158, I submitted it again:\n\t\t\t// https://code.google.com/p/chromium/issues/detail?id=389642\n\t\t\tif (view.chrome && type && type !== force_saveable_type) {\n\t\t\t\tslice = blob.slice || blob.webkitSlice;\n\t\t\t\tblob = slice.call(blob, 0, blob.size, force_saveable_type);\n\t\t\t\tblob_changed = true;\n\t\t\t}\n\t\t\t// Since I can't be sure that the guessed media type will trigger a download\n\t\t\t// in WebKit, I append .download to the filename.\n\t\t\t// https://bugs.webkit.org/show_bug.cgi?id=65440\n\t\t\tif (webkit_req_fs && name !== \"download\") {\n\t\t\t\tname += \".download\";\n\t\t\t}\n\t\t\tif (type === force_saveable_type || webkit_req_fs) {\n\t\t\t\ttarget_view = view;\n\t\t\t}\n\t\t\tif (!req_fs) {\n\t\t\t\tfs_error();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tfs_min_size += blob.size;\n\t\t\treq_fs(view.TEMPORARY, fs_min_size, abortable(function(fs) {\n\t\t\t\tfs.root.getDirectory(\"saved\", create_if_not_found, abortable(function(dir) {\n\t\t\t\t\tvar save = function() {\n\t\t\t\t\t\tdir.getFile(name, create_if_not_found, abortable(function(file) {\n\t\t\t\t\t\t\tfile.createWriter(abortable(function(writer) {\n\t\t\t\t\t\t\t\twriter.onwriteend = function(event) {\n\t\t\t\t\t\t\t\t\ttarget_view.location.href = file.toURL();\n\t\t\t\t\t\t\t\t\tfilesaver.readyState = filesaver.DONE;\n\t\t\t\t\t\t\t\t\tdispatch(filesaver, \"writeend\", event);\n\t\t\t\t\t\t\t\t\trevoke(file);\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\twriter.onerror = function() {\n\t\t\t\t\t\t\t\t\tvar error = writer.error;\n\t\t\t\t\t\t\t\t\tif (error.code !== error.ABORT_ERR) {\n\t\t\t\t\t\t\t\t\t\tfs_error();\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t\"writestart progress write abort\".split(\" \").forEach(function(event) {\n\t\t\t\t\t\t\t\t\twriter[\"on\" + event] = filesaver[\"on\" + event];\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\twriter.write(blob);\n\t\t\t\t\t\t\t\tfilesaver.abort = function() {\n\t\t\t\t\t\t\t\t\twriter.abort();\n\t\t\t\t\t\t\t\t\tfilesaver.readyState = filesaver.DONE;\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\tfilesaver.readyState = filesaver.WRITING;\n\t\t\t\t\t\t\t}), fs_error);\n\t\t\t\t\t\t}), fs_error);\n\t\t\t\t\t};\n\t\t\t\t\tdir.getFile(name, {create: false}, abortable(function(file) {\n\t\t\t\t\t\t// delete file if it already exists\n\t\t\t\t\t\tfile.remove();\n\t\t\t\t\t\tsave();\n\t\t\t\t\t}), abortable(function(ex) {\n\t\t\t\t\t\tif (ex.code === ex.NOT_FOUND_ERR) {\n\t\t\t\t\t\t\tsave();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tfs_error();\n\t\t\t\t\t\t}\n\t\t\t\t\t}));\n\t\t\t\t}), fs_error);\n\t\t\t}), fs_error);\n\t\t}\n\t\t, FS_proto = FileSaver.prototype\n\t\t, saveAs = function(blob, name) {\n\t\t\treturn new FileSaver(blob, name);\n\t\t}\n\t;\n\t// IE 10+ (native saveAs)\n\tif (typeof navigator !== \"undefined\" && navigator.msSaveOrOpenBlob) {\n\t\treturn function(blob, name) {\n\t\t\treturn navigator.msSaveOrOpenBlob(auto_bom(blob), name);\n\t\t};\n\t}\n\n\tFS_proto.abort = function() {\n\t\tvar filesaver = this;\n\t\tfilesaver.readyState = filesaver.DONE;\n\t\tdispatch(filesaver, \"abort\");\n\t};\n\tFS_proto.readyState = FS_proto.INIT = 0;\n\tFS_proto.WRITING = 1;\n\tFS_proto.DONE = 2;\n\n\tFS_proto.error =\n\tFS_proto.onwritestart =\n\tFS_proto.onprogress =\n\tFS_proto.onwrite =\n\tFS_proto.onabort =\n\tFS_proto.onerror =\n\tFS_proto.onwriteend =\n\t\tnull;\n\n\treturn saveAs;\n}(\n\t typeof self !== \"undefined\" && self\n\t|| typeof window !== \"undefined\" && window\n\t|| this.content\n));\n// `self` is undefined in Firefox for Android content script context\n// while `this` is nsIContentFrameMessageManager\n// with an attribute `content` that corresponds to the window\n\nif (typeof module !== \"undefined\" && module.exports) {\n module.exports.saveAs = saveAs;\n} else if ((typeof define !== \"undefined\" && define !== null) && (define.amd != null)) {\n define([], function() {\n return saveAs;\n });\n}","/**\n * @name helpInfoPopover\n * @restrict E\n * @scope\n *\n * @description\n * Custom element directive for showing a help info popover on hover. The content is\n * passed in through the `helpInfo` attribute and rendered using an external template.\n *\n * @param {Object} helpInfo - The help information to be displayed in the popover.\n *\n * @example\n * <help-info-popover help-info=\"myHelpData\"></help-info-popover>\n *\n * @returns {Object} Directive definition object\n */\nangular.module('graphdb.framework.core.directives.help-info-popover', [])\n .directive('helpInfoPopover', function() {\n return {\n restrict: 'E',\n scope: {\n helpInfo: '=',\n },\n templateUrl: 'js/angular/ttyg/templates/modal/helpInfoPopoverTemplate.html',\n link: function($scope, element) {\n // Track whether the popover is open\n $scope.isPopoverOpen = false;\n\n const mouseEnterHandler = () => {\n $scope.$apply(() => {\n $scope.isPopoverOpen = true;\n });\n };\n\n const mouseLeaveHandler = () => {\n $scope.$apply(() => {\n $scope.isPopoverOpen = false;\n });\n };\n\n // =========================\n // Events\n // =========================\n element.on('mouseenter', mouseEnterHandler);\n element.on('mouseleave', mouseLeaveHandler);\n\n // Clean up the event listeners on scope destroy\n $scope.$on('$destroy', function() {\n element.off('mouseenter', mouseEnterHandler);\n element.off('mouseleave', mouseLeaveHandler);\n });\n }\n };\n });\n","export const status = {\n BAD_REQUEST: 400,\n UNAUTHORIZED: 401,\n FORBIDDEN: 403,\n NOT_FOUND: 404,\n CONFLICT: 409,\n INTERNAL_SERVER_ERROR: 500,\n SERVICE_UNAVAILABLE: 503\n};\n","angular\n .module('graphdb.framework.ttyg.services.ttygstorage', [])\n .factory('TTYGStorageService', TTYGStorageService);\n\nTTYGStorageService.$inject = ['LocalStorageAdapter', 'LSKeys'];\n\nfunction TTYGStorageService(localStorageAdapter, LSKeys) {\n\n const defaultSettings = {\n agent: {\n id: undefined\n },\n chat: {\n id: undefined\n }\n };\n\n /**\n * Gets the TTYG settings from the local storage or returns the default settings if there are none.\n * @return {{agent: {id: undefined}, chat: {id: undefined}}}\n */\n const getTtygSettings = () => {\n let settings = localStorageAdapter.get(LSKeys.TTYG);\n if (!settings) {\n settings = defaultSettings;\n }\n if (!settings.agent) {\n settings.agent = {};\n }\n if (!settings.chat) {\n settings.chat = {};\n }\n return settings;\n };\n\n /**\n * Saves the agent in the local storage.\n * @param {AgentModel} agent\n */\n function saveAgent(agent) {\n const settings = getTtygSettings();\n // If the agent is not provided, we will persist undefined to clear any previously saved ID, if one exists.\n settings.agent.id = agent ? agent.id : undefined;\n localStorageAdapter.set(LSKeys.TTYG, settings);\n }\n\n /**\n * Gets the agent id from the local storage.\n * @return {string|undefined}\n */\n function getAgentId() {\n const settings = getTtygSettings();\n if (settings.agent) {\n return settings.agent.id;\n }\n }\n\n /**\n * Saves the chat in the local storage.\n * @param {ChatModel} chat\n */\n function saveChat(chat) {\n const settings = getTtygSettings();\n // If the chat is not provided, we will persist undefined to clear any previously saved ID, if one exists.\n settings.chat.id = chat ? chat.id : undefined;\n localStorageAdapter.set(LSKeys.TTYG, settings);\n }\n\n /**\n * Gets the chat id from the local storage.\n * @return {string|undefined}\n */\n function getChatId() {\n const settings = getTtygSettings();\n if (settings.chat) {\n return settings.chat.id;\n }\n }\n\n return {\n saveAgent,\n getAgentId,\n saveChat,\n getChatId\n };\n}\n"],"names":["editableContent","restrict","require","scope","ngModel","ngDisabled","placeholder","templateUrl","link","element","attrs","ngModelCtrl","editableDiv","find","updateModelValue","$apply","html","length","text","trim","empty","$setViewValue","innerText","$render","$viewValue","pasteHandler","event","preventDefault","originalEvent","clipboardData","getData","selection","window","getSelection","rangeCount","deleteFromDocument","range","getRangeAt","fragment","document","createDocumentFragment","lines","split","forEach","line","index","appendChild","createTextNode","createElement","insertNode","collapseToEnd","$on","removeAllSubscribers","off","on","angular","module","directive","$inject","NoAgentsView","TTYGContextService","productInfo","$scope","canModifyAgent","talkToGraphDocumentationLink","DocumentationUrlResolver","getDocumentationUrl","productShortVersion","onCreateAgent","emit","TTYGEventName","OPEN_AGENT_SETTINGS","subscriptions","push","onCanUpdateAgentUpdated","onDestroy","subscription","TTYGViewCtrl","$jwtAuth","$window","$rootScope","$http","$timeout","$translate","$uibModal","$repositories","toastr","ModalService","LocalStorageAdapter","TTYGService","TTYGStorageService","labels","filter_all","instant","helpTemplateUrl","isHelpVisible","showChats","showAgents","chats","undefined","loadingChats","loadingChat","initialized","agents","selectedAgent","loadingAgents","reloadingAgents","connectorID","agentListFilterModel","activeRepositoryList","onopen","onclose","noop","startNewChat","deselectChat","toggleChatsListSidebar","toggleAgentsListSidebar","onToggleHelp","onExportSelectedChat","onExportChat","getSelectedChat","getDefaultAgent","defaultAgent","Promise","resolve","then","response","setDefaultAgent","onOpenNewAgentSettings","agentDefaultValues","activeRepositoryInfo","repositoryInfoMapper","getActiveRepositoryObject","repositoryId","id","agentFormModel","agentFormModelMapper","AgentModel","AGENT_OPERATION","CREATE","controller","windowClass","backdrop","dialogModel","AgentSettingsModal","size","options","open","result","reloadAgents","catch","error","getError","TTYG_ERROR_MSG_LENGTH","onOpenAgentSettings","agent","agentToEdit","getSelectedAgent","EDIT","updatedAgent","hasSelectedAgent","selectAgent","onOpenCloneAgentSettings","agentToClone","CLONE","name","loadChats","getConversations","updateChats","setupChatListPanel","ChatsListModel","finally","getAgents","updateAgents","updateCanModifyAgent","setCanModifyAgent","isRepoManager","updateChatAnswers","selectedChat","chatItem","chatAnswer","timestamp","answers","messages","updateSelectedChat","continueRunId","CONTINUE_CHAT_RUN","ContinueChatRun","getChats","updateChatTimestamp","updateChatName","chatName","LAST_MESSAGE_RECEIVED","updateChatAnswersFirstResponse","chatHistory","appendItem","isEmpty","getChatId","selectChat","getFirstChat","chat","exportConversation","data","filename","saveAs","CHAT_EXPORT_SUCCESSFUL","CHAT_EXPORT_FAILURE","buildAgentsFilterModel","currentRepository","getActiveRepository","repositoryObjects","getLocalReadableGraphdbRepositories","map","repo","AgentListFilterModel","AGENTS_FILTER_ALL_KEY","goToView","confirmMessageLabelKey","viewURL","repository","getRepository","openConfirmationModal","title","message","decodeHTML","confirmButtonKey","setRepository","openView","openInSparqlEditorInNewTab","query","encodeURIComponent","setCurrentChat","chatId","getChat","$watch","activeRepo","SelectMenuOptionsModel","value","label","loadAgents","showLoader","onSelectedChatChanged","getConversation","saveChat","status","httpStatus","NOT_FOUND","openModalAlert","deleteChat","notifyForMissingChat","LOAD_CHAT_FAILURE","onChatsListChanged","subscribe","onAgentsListChanged","CREATE_CHAT","nonPersistedChat","getNonPersistedChat","ChatModel","getEmptyChat","addChat","createConversation","CREATE_CHAT_SUCCESSFUL","replaceChat","CREATE_CHAT_FAILURE","RENAME_CHAT","renameConversation","RENAME_CHAT_SUCCESSFUL","LOAD_CHATS","RENAME_CHAT_FAILURE","DELETE_CHAT","DELETING_CHAT","inProgress","deleteConversation","DELETE_CHAT_SUCCESSFUL","DELETE_CHAT_FAILURE","CHAT_EXPORT","ASK_QUESTION","askQuestion","ASK_QUESTION_FAILURE","continueData","continueChatRun","items","lastItem","EDIT_AGENT","CLONE_AGENT","DELETE_AGENT","DELETING_AGENT","agentId","deleteAgent","AGENT_DELETED","AGENT_SELECTED","GO_TO_CREATE_SIMILARITY_VIEW","payload","GO_TO_AUTOCOMPLETE_INDEX_VIEW","GO_TO_CONNECTORS_VIEW","GO_TO_SPARQL_EDITOR","openConfirmation","updateLabels","resetContext","ChatPanelComponent","askingChatItem","waitingForLastMessage","ask","question","Date","now","cloneDeep","createNewChat","getEmptyChatItem","scrollToBottom","focusQuestionInput","regenerateQuestion","regenerateChatItem","setQuestionMessage","getQuestionMessage","onKeypressOnInput","$event","key","shiftKey","ctrlKey","onAskHowDeliveredAnswer","askHowDerivedAnswerChatItem","getAgentName","getAgent","onQuestionFailure","ChatItemModel","ChatMessageModel","role","CHAT_MESSAGE_ROLE","USER","setTimeout","inputElement","querySelector","focus","chatDetailsElement","scrollTop","scrollHeight","reset","$watchCollection","onSelectedChatUpdated","lastChatItem","getLast","onLastMessageReceived","onSelectedAgentChanged","onLoadChatFailure","deletedChat","AgentListComponent","ExternalIntegrationModalService","agentList","selectedAgentsFilter","deletingAgent","onEditAgent","onExternalIntegration","onCloneAgent","onDeleteAgent","confirmDeleteMessage","agentName","onAgentsFilterChange","selectedFilter","filterByRepository","updateSelectedAgentsFilter","filter","selected","InlineEditableText","fieldName","source","onSave","onCancel","onClick","onDblclick","isEditing","editableModel","clickTimeout","onKeydown","cancelClickTimeout","newText","cancelEditing","onCancelEditing","onSelect","cancel","newVal","select","constructor","operation","this","AgentSelectMenuComponent","$sce","agentOptionsList","onAgentSelected","isCompatible","stopPropagation","markAsSelected","isRepositoryDeleted","confirmMessage","agentOption","agentsListModel","deletedAgent","isDeleted","ChatListComponent","$filter","renamedChat","deletingChat","onSelectChatForRenaming","onSelectChat","onDeleteChat","onRenameChat","newName","onCancelChatRenaming","getHumanReadableChatGroupTimestamp","getHumanReadableTimestamp","chatList","innerTextElement","scrollWidth","clientWidth","attr","removeAttr","view","navigator","test","userAgent","doc","get_URL","URL","webkitURL","save_link","createElementNS","webkit_req_fs","webkitRequestFileSystem","req_fs","requestFileSystem","mozRequestFileSystem","throw_outside","ex","setImmediate","force_saveable_type","fs_min_size","revoke","file","revoker","revokeObjectURL","remove","chrome","dispatch","filesaver","event_types","i","concat","listener","call","auto_bom","blob","type","Blob","FileSaver","object_url","target_view","slice","blob_changed","dispatch_all","fs_error","createObjectURL","location","href","safari","readyState","DONE","abortable","func","apply","arguments","create_if_not_found","create","exclusive","INIT","download","node","MouseEvent","dispatchEvent","webkitSlice","TEMPORARY","fs","root","getDirectory","dir","save","getFile","createWriter","writer","onwriteend","toURL","onerror","code","ABORT_ERR","write","abort","WRITING","NOT_FOUND_ERR","FS_proto","prototype","msSaveOrOpenBlob","onwritestart","onprogress","onwrite","onabort","self","content","exports","define","helpInfo","isPopoverOpen","mouseEnterHandler","mouseLeaveHandler","BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","CONFLICT","INTERNAL_SERVER_ERROR","SERVICE_UNAVAILABLE","localStorageAdapter","LSKeys","defaultSettings","getTtygSettings","settings","get","TTYG","saveAgent","set","getAgentId","factory"],"sourceRoot":""}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export const __webpack_id__=14874;export const __webpack_ids__=[19,3588,5783,6018,14874,22037,28069,34894,38412,40780,60260,69091,73779,74081,77512,90275,95683];export const __webpack_modules__={19:(e,t,n)=>{n.r(t),n.d(t,{UpdateEndpointRequest:()=>i});class i{_id;_label;_description;_active;_default;_options;constructor(e){this._id=e.id,this._label=e.label,this._description=e.description,this._active=e.active,this._default=e.default,this._options=e.options}getUpdateDefaultEndpointRequest(){return{default:this.default}}getUpdateEndpointActiveStateRequest(){return{active:!this.active}}getUpdateEndpointSettingsRequest(){return{options:this.options?this.options.toFlatJSON():null}}set id(e){this._id=e}get id(){return this._id}set label(e){this._label=e}get label(){return this._label}set description(e){this._description=e}get description(){return this._description}set active(e){this._active=e}get active(){return this._active}set default(e){this._default=e}get default(){return this._default}set options(e){this._options=e}get options(){return this._options}}},3588:(e,t,n)=>{n.r(t),n.d(t,{FIELD_TYPE:()=>i});const i={STRING:"string",TEXT:"text",BOOLEAN:"boolean",JSON:"json",SELECT:"select",MULTI_SELECT:"multi_select"}},5783:(e,t,n)=>{n.r(t),n.d(t,{EndpointGenerationReport:()=>s,EndpointGenerationReportList:()=>i});class i{_reports;constructor(e){this._reports=e||[]}getReport(e){return this._reports.find(t=>t.endpointId===e)}get reports(){return this._reports}set reports(e){this._reports=e}}class s{_endpointId;_endpointURI;_active;_default;_label;_description;_lastModified;_objectsCount;_propertiesCount;_warnings;_errors;_messages;_createdSuccessfully;constructor(e){this._endpointId=e.endpointId||"",this._endpointURI=e.endpointURI||"",this._active=e.active||!1,this._default=e.default||!1,this._label=e.label||"",this._description=e.description||"",this._lastModified=e.lastModified||"",this._objectsCount=e.objectsCount||0,this._propertiesCount=e.propertiesCount||0,this._warnings=e.warnings||0,this._errors=e.errors||0,this._messages=e.messages||[],this._createdSuccessfully=this._active&&0===this._errors}toJSON(){return{id:this._endpointId,active:this._active,default:this._default,label:this._label,description:this._description,lastModified:this._lastModified,objectsCount:this._objectsCount,propertiesCount:this._propertiesCount,warnings:this._warnings,errors:this._errors,messages:this._messages}}get endpointId(){return this._endpointId}set endpointId(e){this._endpointId=e}get endpointURI(){return this._endpointURI}set endpointURI(e){this._endpointURI=e}get active(){return this._active}set active(e){this._active=e}get default(){return this._default}set default(e){this._default=e}get label(){return this._label}set label(e){this._label=e}get description(){return this._description}set description(e){this._description=e}get lastModified(){return this._lastModified}set lastModified(e){this._lastModified=e}get objectsCount(){return this._objectsCount}set objectsCount(e){this._objectsCount=e}get propertiesCount(){return this._propertiesCount}set propertiesCount(e){this._propertiesCount=e}get warnings(){return this._warnings}set warnings(e){this._warnings=e}get errors(){return this._errors}set errors(e){this._errors=e}get messages(){return this._messages}set messages(e){this._messages=e}get createdSuccessfully(){return this._createdSuccessfully}set createdSuccessfully(e){this._createdSuccessfully=e}}},6018:(e,t,n)=>{n.r(t),n.d(t,{endpointInfoModelMapper:()=>o,endpointsInfoListMapper:()=>r});var i=n(74081),s=n(90275);const r=(e,t)=>{if(!e||!e.endpoints)return new i.GraphqlEndpointsInfoList;const n=e.endpoints.map(e=>o(e,t));return new i.GraphqlEndpointsInfoList(n)},o=(e,t)=>{if(e)return new i.GraphqlEndpointInfo({endpointId:e.id,endpointURI:(0,s.resolveGraphqlEndpoint)(t,e.id),label:e.label,description:e.description,default:e.default,active:e.active,lastModified:e.lastModified,objectsCount:e.objectsCount,propertiesCount:e.propertiesCount,warnings:e.warnings,errors:e.errors})}},11201:(e,t,n)=>{n.r(t),n.d(t,{graphqlSchemaShapesMapper:()=>s,shapeModelMapper:()=>r});var i=n(29646);const s=e=>{if(!e||!e.shapes)return new i.GraphqlSchemaShapes([]);const t=e.shapes.map(e=>r(e));return new i.GraphqlSchemaShapes(t)},r=e=>{if(e)return new i.GraphqlSchemaShape({id:e.id,name:e.name,label:e.label,description:e.description})}},14874:(e,t,n)=>{n.r(t),n(38412);var i=n(69091),s=n(6018),r=n(11201),o=n(40780),a=n(95683),p=(n(10406),n(17268)),d=n(28379),l=n(16014),c=n(34894);function h(e){return{getEndpointsCountToGenerate:e=>{let t=0;return e||(t=0),e.generateFromGraphqlSchemaShapes()&&(t=e.getSelectedGraphqlSchemaShapesCount()),e.generateFromShaclShapes()&&(t=1),t},getGenerateEndpointsOverview:e=>{if(!e)return new l.GraphqlEndpointOverviewList;const t=e.getSelectedGraphqlSchemaShapesOverview();return new l.GraphqlEndpointOverviewList(t)},getEndpoints:t=>e.getEndpoints(t).then(e=>(0,i.endpointListMapper)(e.data)),getEndpointsAsSelectMenuOptions:t=>e.getEndpoints(t).then(e=>(0,i.endpointsToSelectMenuOptionsMapper)(e.data,t)),getEndpointsInfo:t=>e.getEndpointsInfo(t).then(e=>(0,s.endpointsInfoListMapper)(e.data,t)),getGraphqlSchemaShapes:t=>e.getGraphqlSchemaShapes(t).then(e=>(0,r.graphqlSchemaShapesMapper)(e.data)),getPrefixListAsSelectOptions:t=>e.getPrefixes(t).then(e=>(0,o.prefixModelToSelectMenuOptionsMapper)(e.data)),getShaclShapeGraphs:t=>e.getShaclShapeGraphs(t).then(e=>(0,a.shaclShapeGraphListOptionsMapper)(e.data)),getGraphqlGenerationSettings:()=>e.getGraphqlGenerationSettings().then(e=>{const t=(0,p.dynamicFormModelMapper)(e.data);return new d.GraphqlEndpointConfigurationSettings(t)}),getGraphqlEndpointConfigurationSettings:(t,n)=>e.getGraphqlEndpointConfigurationSettings(t,n).then(e=>{const t=(0,p.dynamicFormModelMapper)(e.data);return new d.GraphqlEndpointConfigurationSettings(t)}),getEndpointConfiguration:(t,n)=>e.getEndpointConfiguration(t,n),getEndpointConfigurationReport:(t,n)=>e.getEndpointConfiguration(t,n).then(e=>(0,c.endpointGenerationReportListMapper)([e.data],t)),editEndpointConfiguration:(t,n,i)=>e.editEndpointConfiguration(t,n,i).then(e=>(0,s.endpointInfoModelMapper)(e.data,t)),deleteEndpoint:(t,n)=>e.deleteEndpoint(t,n),generateEndpointFromGraphqlShapes:(t,n)=>e.generateEndpointFromGraphqlShapes(t,n.toJSON()).then(e=>(0,c.endpointGenerationReportListMapper)(e.data,t)),generateEndpointFromOwl:(t,n)=>e.generateEndpointFromOwl(t,n.toJSON()).then(e=>(0,c.endpointGenerationReportListMapper)([e.data],t)),exportEndpointDefinition:(t,n)=>e.exportEndpointDefinition(t,n).then(e=>{const t=e.data,i=e.headers()["content-disposition"];let s=`endpoint-${n}-definition`;return i&&(s=i.split("filename=")[1],s=s.replace(/"/g,"")),{data:t,filename:s}}),importEndpointDefinition:(t,n)=>e.importEndpointDefinition(t,n),deleteEndpointGenerationReport:(t,n)=>e.deleteEndpointGenerationReport(t,n)}}angular.module("graphdb.framework.core.services.graphql-service",["graphdb.framework.rest.graphql.service"]).factory("GraphqlService",h),h.$inject=["GraphqlRestService"]},17268:(e,t,n)=>{n.r(t),n.d(t,{dynamicFormModelMapper:()=>p});var i=n(38940),s=n(868),r=n(28379),o=n(22037),a=n(3588);const p=e=>{if(!e||!e.configs)return new o.DynamicFormModel;const t=l(e.configs);return d(t)},d=e=>{const t=[];return e.forEach(e=>{if(!e.group)return void t.push(e);let n=t.find(t=>t.groupId===e.group);n||(n=new o.DynamicFormGroup({groupId:e.group}),t.push(n)),(e.hidden?n.hiddenFields:n.fields).push(e)}),new o.DynamicFormModel(t)},l=e=>e.map(e=>{let t=h(e),n=e.values,s=[];return t!==a.FIELD_TYPE.MULTI_SELECT&&t!==a.FIELD_TYPE.SELECT||(n=n.map(t=>{const n=Array.isArray(e.value)&&e.value.indexOf(t)>-1||"string"==typeof e.value&&e.value===t,r=new i.SelectMenuOptionsModel({label:t,value:t,selected:n});return n&&s.push(r),r}),t===a.FIELD_TYPE.SELECT?e.value=s[0]?s[0]:[]:t===a.FIELD_TYPE.MULTI_SELECT&&(e.value=s)),c(e,t,n)}),c=(e,t,n)=>new s.DynamicFormField({key:e.key,label:e.label,description:e.description,type:t,collection:e.collection||!1,value:e.value,values:n,regex:e.regex,required:e.required||!1,group:e.group,hidden:e.hidden}),h=e=>{let t;return e.type===r.CONFIG_TYPE.TEXT?t=a.FIELD_TYPE.TEXT:e.type===r.CONFIG_TYPE.BOOLEAN?t=a.FIELD_TYPE.BOOLEAN:e.type===r.CONFIG_TYPE.JSON?t=a.FIELD_TYPE.JSON:e.type===r.CONFIG_TYPE.STRING&&(t=e.values&&e.values.length>0?e.collection?a.FIELD_TYPE.MULTI_SELECT:a.FIELD_TYPE.SELECT:a.FIELD_TYPE.STRING),t}},22037:(e,t,n)=>{n.r(t),n.d(t,{DynamicFormGroup:()=>s,DynamicFormModel:()=>i});class i{_models=[];constructor(e){this._models=e||[]}get models(){return this._models}set models(e){this._models=e}}class s{_groupId="";_fields=[];_hiddenFields=[];constructor(e){this._fields=e.fields||[],this._hiddenFields=e.hiddenFields||[],this._groupId=e.groupId||""}get fields(){return this._fields}set fields(e){this._fields=e}get hiddenFields(){return this._hiddenFields}set hiddenFields(e){this._hiddenFields=e}get groupId(){return this._groupId}set groupId(e){this._groupId=e}}},28069:(e,t,n)=>{n.r(t),n.d(t,{Prefix:()=>s,PrefixList:()=>i});class i{_prefixes;constructor(e){this._prefixes=e||[]}get prefixes(){return this._prefixes}set prefixes(e){this._prefixes=e}}class s{_prefix;_namespace;_sources;constructor(e){this._prefix=e.prefix,this._namespace=e.namespace,this._sources=e.sources}}},34894:(e,t,n)=>{n.r(t),n.d(t,{endpointGenerationReportListMapper:()=>r,endpointGenerationReportMapper:()=>o,importEndpointDefinitionReportMapper:()=>a});var i=n(5783),s=n(90275);const r=(e,t)=>{if(!e)return new i.EndpointGenerationReportList;const n=e.map(e=>o(e,t));return new i.EndpointGenerationReportList(n)},o=(e,t)=>new i.EndpointGenerationReport({endpointId:e.id,endpointURI:(0,s.resolveGraphqlEndpoint)(t,e.id),active:e.active,default:e.default,label:e.label,description:e.description,lastModified:e.lastModified,objectsCount:e.objectsCount,propertiesCount:e.propertiesCount,warnings:e.warnings,errors:e.errors,messages:e.messages}),a=(e,t,n)=>{const r=e.messages?e.messages.errors?.length:0,o=e.messages?e.messages.warnings?.length:0;return new i.EndpointGenerationReport({endpointId:e.id,endpointURI:(0,s.resolveGraphqlEndpoint)(n,e.id),warnings:o,errors:r,messages:e.messages})}},38412:(e,t,n)=>{n.r(t);var i=n(69289),s=n(73779);angular.module("graphdb.framework.rest.graphql.service",[]).factory("GraphqlRestService",o),o.$inject=["$http","Upload"];const r=!1;function o(e,t){const n=new s.GraphqlRestServiceMock;return{getEndpoints:t=>r?n.getEndpointsMock(t):e.get(`${i.REPOSITORIES_ENDPOINT}/${t}/graphql/endpoints`),getEndpointsInfo:(t,s)=>r?n.getEndpointsInfoMock(t):e.get(`${i.REPOSITORIES_ENDPOINT}/${t}/graphql/manage/list`),getGraphqlSchemaShapes:t=>r?n.getGraphqlSchemaShapesMock(t):e.get(`${i.REPOSITORIES_ENDPOINT}/${t}/graphql/manage/graphql_shapes`),getPrefixes:t=>r?n.getPrefixesMock(t):e.get(`${i.REPOSITORIES_ENDPOINT}/${t}/graphql/manage/prefixes`),getShaclShapeGraphs:t=>r?n.getShaclGraphsMock(t):e.get(`${i.REPOSITORIES_ENDPOINT}/${t}/graphql/manage/shacl_graphs`),getGraphqlGenerationSettings:()=>r?n.getGraphqlGenerationSettingsMock():e.get(`${i.REPOSITORIES_ENDPOINT}/graphql/manage/generate/config`),getGraphqlEndpointConfigurationSettings:(t,s)=>r?n.getEndpointConfigurationMock():e.get(`${i.REPOSITORIES_ENDPOINT}/${t}/graphql/manage/endpoints/${s}/config`),getEndpointConfiguration:(t,s)=>r?n.getEndpointConfiguration():e.get(`${i.REPOSITORIES_ENDPOINT}/${t}/graphql/manage/endpoints/${s}`),editEndpointConfiguration:(t,s,o)=>r?n.saveEndpointConfigurationMock():e.post(`${i.REPOSITORIES_ENDPOINT}/${t}/graphql/manage/endpoints/${s}`,o),deleteEndpoint:(t,s)=>r?n.deleteEndpointMock(t,s):e.delete(`${i.REPOSITORIES_ENDPOINT}/${t}/graphql/manage/endpoints/${s}`),generateEndpointFromGraphqlShapes:(t,s)=>r?n.generateEndpointFromGraphqlShapesMock(s):e.post(`${i.REPOSITORIES_ENDPOINT}/${t}/graphql/manage/generate/graphql_shapes`,s),generateEndpointFromOwl:(t,s)=>r?n.generateEndpointFromOwl(s):e.post(`${i.REPOSITORIES_ENDPOINT}/${t}/graphql/manage/generate/owl_shacl`,s),exportEndpointDefinition:(t,n)=>e.get(`${i.REPOSITORIES_ENDPOINT}/${t}/graphql/manage/endpoints/${n}/export`,{responseType:"blob"}),importEndpointDefinition:(e,n)=>t.http({url:`${i.REPOSITORIES_ENDPOINT}/${e}/graphql/manage/endpoints/import`,data:n,headers:{"Content-Type":void 0}}),deleteEndpointGenerationReport:(t,n)=>e.patch(`${i.REPOSITORIES_ENDPOINT}/${t}/graphql/manage/endpoints/${n}/messages`)}}},40780:(e,t,n)=>{n.r(t),n.d(t,{prefixListMapper:()=>r,prefixModelToSelectMenuOptionsMapper:()=>a});var i=n(28069),s=n(38940);const r=e=>{if(!e&&!e.prefixes)return new i.PrefixList;const t=e.prefixes.map(e=>o(e));return new i.PrefixList(t)},o=e=>{if(e)return new i.Prefix({prefix:e.prefix,namespace:e.namespace,sources:e.sources})},a=e=>e&&e.prefixes?e.prefixes.map(e=>new s.SelectMenuOptionsModel({value:e.prefix,label:e.prefix,selected:!1})):[]},60260:(e,t,n)=>{n.r(t),n.d(t,{GraphqlEndpoint:()=>i,GraphqlEndpointList:()=>s});class i{constructor(e){this._endpointId=e.endpointId,this._endpointURI=e.endpointURI,this._active=e.active,this._default=e.default}get endpointId(){return this._endpointId}set endpointId(e){this._endpointId=e}get endpointURI(){return this._endpointURI}set endpointURI(e){this._endpointURI=e}get default(){return this._default}set default(e){this._default=e}get active(){return this._active}set active(e){this._active=e}}class s{constructor(e){this._endpoints=e||[]}get endpoints(){return this._endpoints}set endpoints(e){this._endpoints=e}}},69091:(e,t,n)=>{n.r(t),n.d(t,{endpointListMapper:()=>o,endpointModelMapper:()=>a,endpointsToSelectMenuOptionsMapper:()=>p});var i=n(60260),s=n(38940),r=n(90275);const o=e=>{if(!e||!e.endpoints)return new i.GraphqlEndpointList;const t=e.endpoints.map(e=>a(e));return new i.GraphqlEndpointList(t)},a=e=>{if(e)return new i.GraphqlEndpoint({endpointId:e.endpointId,endpointURI:e.endpointURI,active:e.active,default:e.default})},p=(e,t)=>e&&e.length?e.map(e=>new s.SelectMenuOptionsModel({value:(0,r.resolveGraphqlEndpoint)(t,e.id),label:e.id,selected:e.default,data:{active:e.active,default:e.default}})):[]},73779:(e,t,n)=>{n.r(t),n.d(t,{GraphqlRestServiceMock:()=>s});var i=n(98980);class s{getEndpointsMock(e){return new Promise(e=>{setTimeout(()=>e({data:(0,i.cloneDeep)(r)}),200)})}getEndpointsInfoMock(e){return new Promise(e=>{setTimeout(()=>e({data:(0,i.cloneDeep)(o)}),200)})}getGraphqlSchemaShapesMock(e){return new Promise(e=>{setTimeout(()=>e({data:(0,i.cloneDeep)(a)}),200)})}getEndpointConfigurationMock(){return new Promise(e=>{setTimeout(()=>e({data:(0,i.cloneDeep)(p)}),200)})}}const r={repository:"swapi",endpoints:[{id:"swapi",graphQL:"/rest/repositories/swapi/graphql/swapi",active:!0,default:!0},{id:"film-restricted",graphQL:"/rest/repositories/swapi/graphql/film-restricted",active:!0,default:!1},{id:"swapi-charcters",graphQL:"/rest/repositories/swapi/graphql/swapi-charcters",active:!1,default:!1}]},o={endpoints:[{id:"gqlendpoint1",endpointId:"swapi",endpointURI:"/rest/repositories/swapi/graphql/swapi",label:"SWAPI GraphQL endpoint",description:"SWAPI GraphQL endpoint description",default:!1,active:!0,lastModified:"2025-01-28",objects_count:10,properties_count:120,warnings:0,errors:0,status:""},{id:"gqlendpoint2",endpointId:"film-restricted",endpointURI:"/rest/repositories/swapi/graphql/film-restricted",label:"SWAPI GraphQL endpoint with restricted film relations",description:"SWAPI GraphQL endpoint with restricted film relations description",default:!0,active:!0,lastModified:"2025-01-28",objects_count:13,properties_count:133,warnings:0,errors:0,status:""},{id:"gqlendpoint3",endpointId:"swapi-characters",endpointURI:"/rest/repositories/swapi/graphql/swapi-characters",label:"SWAPI GraphQL endpoint for swapi characters",description:"SWAPI GraphQL endpoint for swapi characters description",default:!1,active:!1,lastModified:"2025-01-28",objects_count:3,properties_count:20,warnings:0,errors:0,status:""}]},a={shapes:[{id:"https://schema.ubs.net/schema/AIModelSchema",name:"AI Model Schema",label:"AI Model Schema",description:null},{id:"https://schema.ubs.net/schema/AIProductSchema",name:"AI Product Schema",label:"AI Product Schema",description:null},{id:"https://schema.ubs.net/schema/DatabaseSchema",name:null,label:"Database Schema",description:null},{id:"https://schema.ubs.net/schema/BbsPermissionSchema",name:null,label:"BBS Permissions",description:null},{id:"https://schema.ubs.net/schema/DataProductBasicSchema",name:null,label:"Data Product Basic Schema No Policy and No Provenance",description:null},{id:"https://schema.ubs.net/schema/DataQualityMetricSchema",name:null,label:"Data Quality Metric Schema",description:"This is the basic schema for DQV initiated from Metric class"},{id:"https://schema.ubs.net/schema/DataQualityObservationSchema",name:null,label:"Data Quality Observation Schema",description:null},{id:"https://schema.ubs.net/schema/DatasetSchema",name:null,label:"Dataset Schema",description:null},{id:"https://schema.ubs.net/schema/ApplicationSchema",name:null,label:"Application Schema",description:null},{id:"https://schema.ubs.net/schema/PolicyBasicSchema",name:null,label:"Policy Basic Schema",description:null},{id:"https://schema.ubs.net/schema/DataQualityMeasurementSchema",name:null,label:"Data Quality Measurement Schema",description:null},{id:"https://schema.ubs.net/schema/DataProductFullSchema",name:null,label:"Data Product Schema where datasets can also be defined",description:null},{id:"https://schema.ubs.net/schema/ValidationSchema",name:null,label:"Validation Schema",description:null},{id:"https://schema.ubs.net/schema/WMAAccountSchema",name:null,label:"WMA Account Schema",description:null}]},p={configs:[{key:"str",label:"String",type:"string",collection:!1,value:"strValue",values:[],regex:"^(?:ALL:?)?(?:(?:-?[\\w]{2}(?:-[\\w]*)?~?|-?NONE|ANY|BROWSER)?(?:,(?:-?[\\w]{2}(?:-[\\w]*)?~?|-?NONE|ANY|BROWSER))*)$"},{key:"bool",label:"Boolean value",description:"",type:"boolean",collection:!1,value:!1,values:[]},{key:"select",label:"Select",type:"",collection:!1,value:"Two",values:["One","Two","Three"]},{key:"multiselect",label:"Multiselect",type:"",collection:!0,value:["Angular","JavaScript"],values:["Angular","JavaScript","WebDevelopment"]},{key:"json",label:"JSON",type:"json",collection:!1,value:'{"foo": "bar"}',values:[],required:!0}]}},74081:(e,t,n)=>{n.r(t),n.d(t,{GraphqlEndpointInfo:()=>s,GraphqlEndpointsInfoList:()=>r});var i=n(19);class s{_endpointId;_endpointURI;_label;_description;_default;_active;_lastModified;_objectsCount;_propertiesCount;_warnings;_errors;_createdSuccessfully;constructor(e={}){this._endpointId=e.endpointId,this._endpointURI=e.endpointURI,this._label=e.label,this._description=e.description,this._default=e.default,this._active=e.active,this._lastModified=e.lastModified,this._objectsCount=e.objectsCount,this._propertiesCount=e.propertiesCount,this._warnings=e.warnings,this._errors=e.errors,this._createdSuccessfully=0===this._errors}toUpdateEndpointRequest(e){return new i.UpdateEndpointRequest({id:this.endpointId,label:this.label,description:this.description,active:this.active,default:this.default,options:e})}get createdSuccessfully(){return this._createdSuccessfully}get endpointId(){return this._endpointId}set endpointId(e){this._endpointId=e}get endpointURI(){return this._endpointURI}set endpointURI(e){this._endpointURI=e}get label(){return this._label}set label(e){this._label=e}get description(){return this._description}set description(e){this._description=e}get default(){return this._default}set default(e){this._default=e}get active(){return this._active}set active(e){this._active=e}get lastModified(){return this._lastModified}set lastModified(e){this._lastModified=e}get objectsCount(){return this._objectsCount}set objectsCount(e){this._objectsCount=e}get propertiesCount(){return this._propertiesCount}set propertiesCount(e){this._propertiesCount=e}get warnings(){return this._warnings}set warnings(e){this._warnings=e}get errors(){return this._errors}set errors(e){this._errors=e}}class r{_originalEndpointsList;_endpoints;constructor(e){this._originalEndpointsList=e||[],this._endpoints=e||[]}updateEndpoint(e){const t=this._endpoints.findIndex(t=>t.endpointId===e.endpointId);-1!==t&&(this._endpoints[t]=e)}filter(e){this._endpoints=this._originalEndpointsList.filter(t=>t.endpointId.toLowerCase().includes(e.toLowerCase())||t.label?.toLowerCase().includes(e.toLowerCase()))}findDefaultEndpoint(){return this._endpoints.find(e=>e.default)}get endpoints(){return this._endpoints}set endpoints(e){this._endpoints=e}}},77512:(e,t,n)=>{n.r(t),n.d(t,{endpointUrl:()=>i});const i={PLAYGROUND:"graphql/playground",CREATE_ENDPOINT:"graphql/endpoint/create",ENDPOINT_MANAGEMENT:"graphql/endpoints"}},90275:(e,t,n)=>{n.r(t),n.d(t,{resolveGraphqlEndpoint:()=>r,resolvePlaygroundUrlWithEndpoint:()=>o});var i=n(77512),s=n(69289);const r=(e,t)=>`${s.REPOSITORIES_ENDPOINT}/${e}/graphql/${t}`,o=e=>`${i.endpointUrl.PLAYGROUND}?endpointId=${e}`},95683:(e,t,n)=>{n.r(t),n.d(t,{shaclShapeGraphListOptionsMapper:()=>s});var i=n(82854);const s=e=>{if(!e||!e.shacl_graphs)return new i.GraphListOptions;const t=e.shacl_graphs.map(e=>new i.GraphOption({uri:e,label:e,id:e}));return new i.GraphListOptions(t)}}};
|
|
2
|
-
//# sourceMappingURL=14874.17bc671b6ff6123b9eb1.bundle.js.map
|