graphdb-workbench 3.5.0-TR3 → 3.5.0-TR5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{23654.28f7b5a1f2cbac46b505.bundle.js → 23654.2f4c56eca267fda60261.bundle.js} +2 -2
- package/dist/{23654.28f7b5a1f2cbac46b505.bundle.js.map → 23654.2f4c56eca267fda60261.bundle.js.map} +1 -1
- package/dist/40808.78f81786cadf334f8531.bundle.js +2 -0
- package/dist/40808.78f81786cadf334f8531.bundle.js.map +1 -0
- package/dist/43239.71707ff04a220130d250.bundle.js +2 -0
- package/dist/43239.71707ff04a220130d250.bundle.js.map +1 -0
- package/dist/44906.3d40209be900c399a67d.bundle.js +2 -0
- package/dist/44906.3d40209be900c399a67d.bundle.js.map +1 -0
- package/dist/{45501.b57c0da09b0c710a2ae4.bundle.js → 45501.9eb529ce40a22951f417.bundle.js} +2 -2
- package/dist/{45501.b57c0da09b0c710a2ae4.bundle.js.map → 45501.9eb529ce40a22951f417.bundle.js.map} +1 -1
- package/dist/54774.474357fa8720f682dad5.bundle.js +2 -0
- package/dist/54774.474357fa8720f682dad5.bundle.js.map +1 -0
- package/dist/{58328.b15114d6bec21972df60.bundle.js → 58328.ae47dca9b6fd21785b2d.bundle.js} +3 -3
- package/dist/{58328.b15114d6bec21972df60.bundle.js.map → 58328.ae47dca9b6fd21785b2d.bundle.js.map} +1 -1
- package/dist/{60447.675082fab71ca7e25db4.bundle.js → 60447.57a1b7f57a11d7eb7186.bundle.js} +2 -2
- package/dist/{60447.675082fab71ca7e25db4.bundle.js.map → 60447.57a1b7f57a11d7eb7186.bundle.js.map} +1 -1
- package/dist/{64709.c88c51016f076cbabc90.bundle.js → 64709.3c6ab6dd64342d260265.bundle.js} +2 -2
- package/dist/{64709.c88c51016f076cbabc90.bundle.js.map → 64709.3c6ab6dd64342d260265.bundle.js.map} +1 -1
- package/dist/{65677.17f5dcabfc485f1e12eb.bundle.js → 65677.3601a1447e8c705ebe9d.bundle.js} +2 -2
- package/dist/{65677.17f5dcabfc485f1e12eb.bundle.js.map → 65677.3601a1447e8c705ebe9d.bundle.js.map} +1 -1
- package/dist/{7257.44d40b3d795bb5b63224.bundle.js → 7257.a29aff1ae95e47e808e4.bundle.js} +2 -2
- package/dist/{7257.44d40b3d795bb5b63224.bundle.js.map → 7257.a29aff1ae95e47e808e4.bundle.js.map} +1 -1
- package/dist/{79146.2855e9b7348cd38dd4e0.bundle.js → 79146.69cc6c97fd6c137bd081.bundle.js} +2 -2
- package/dist/{79146.2855e9b7348cd38dd4e0.bundle.js.map → 79146.69cc6c97fd6c137bd081.bundle.js.map} +1 -1
- package/dist/80099.6e992ddb259c9c8dd389.bundle.js +2 -0
- package/dist/80099.6e992ddb259c9c8dd389.bundle.js.map +1 -0
- package/dist/{80933.f525c8a525c14438dd9c.bundle.js → 80933.11ccdbd4e85cb0b0da6e.bundle.js} +2 -2
- package/dist/{80933.f525c8a525c14438dd9c.bundle.js.map → 80933.11ccdbd4e85cb0b0da6e.bundle.js.map} +1 -1
- package/dist/{82917.b24600c57a3e4a08374e.bundle.js → 82917.0e44aebbb0f0b307a336.bundle.js} +2 -2
- package/dist/{82917.b24600c57a3e4a08374e.bundle.js.map → 82917.0e44aebbb0f0b307a336.bundle.js.map} +1 -1
- package/dist/{85064.b385fae12f19d1ccaeaa.bundle.js → 85064.86e04d3f61bf9f5c07fe.bundle.js} +2 -2
- package/dist/{85064.b385fae12f19d1ccaeaa.bundle.js.map → 85064.86e04d3f61bf9f5c07fe.bundle.js.map} +1 -1
- package/dist/{86099.7261b39d7cff80da2a41.bundle.js → 86099.bac9f4c14deeb019ec32.bundle.js} +2 -2
- package/dist/{86099.7261b39d7cff80da2a41.bundle.js.map → 86099.bac9f4c14deeb019ec32.bundle.js.map} +1 -1
- package/dist/96827.9c566428b7ccbd367b04.bundle.js +2 -0
- package/dist/96827.9c566428b7ccbd367b04.bundle.js.map +1 -0
- package/dist/assets/i18n/en.json +1 -2
- package/dist/assets/i18n/fr.json +1 -2
- package/dist/index.html +9 -9
- package/dist/js/angular/clustermanagement/templates/cluster-nodes-configuration.html +1 -1
- package/dist/js/angular/core/directives/autocomplete/templates/autocomplete.html +1 -1
- package/dist/js/angular/core/directives/dynamic-form/templates/dynamic-form.html +1 -1
- package/dist/js/angular/core/directives/operations-statuses-monitor/templates/operations-statuses-monitor.html +1 -1
- package/dist/js/angular/core/directives/rdfresourcesearch/templates/rdfResourceSearchTemplate.html +1 -1
- package/dist/js/angular/core/directives/shuttle-multiselect/templates/shuttle-multiselect.html +1 -1
- package/dist/js/angular/core/directives/yasgui-component/templates/yasgui-component.html +2 -2
- package/dist/js/angular/core/templates/cookie-policy/cookie-consent.html +1 -1
- package/dist/js/angular/core/templates/cookie-policy/cookie-policy.html +1 -1
- package/dist/js/angular/core/templates/editable-content/editable-content.html +1 -1
- package/dist/js/angular/core/templates/markdown-content/markdown-content.html +1 -1
- package/dist/js/angular/core/templates/search-resource-input.html +1 -1
- package/dist/js/angular/graphql/templates/create-graphql-endpoint.html +2 -2
- package/dist/js/angular/graphql/templates/graphql-endpoint-management.html +1 -1
- package/dist/js/angular/graphql/templates/graphql-playground.html +2 -2
- package/dist/js/angular/graphql/templates/modal/endpoint-configuration-modal.html +1 -1
- package/dist/js/angular/graphql/templates/modal/endpoint-generation-failure-result-modal.html +1 -1
- package/dist/js/angular/graphql/templates/modal/import-endpoint-definition-modal.html +1 -1
- package/dist/js/angular/security/templates/user.html +2 -2
- package/dist/js/angular/ttyg/templates/agent-list.html +1 -1
- package/dist/js/angular/ttyg/templates/agent-select-menu.html +1 -1
- package/dist/js/angular/ttyg/templates/chat-item-detail.html +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 +3 -3
- package/dist/js/angular/ttyg/templates/modal/external-integration-configuration-modal.html +1 -1
- package/dist/js/angular/ttyg/templates/no-agents-view.html +1 -1
- package/dist/js/angular/ttyg/templates/ttyg.html +1 -1
- package/dist/{legacyWorkbench.d59df54d7b195790cc81.js → legacyWorkbench.4afca6618ece256d15c7.js} +3 -3
- package/dist/{legacyWorkbench.d59df54d7b195790cc81.js.map → legacyWorkbench.4afca6618ece256d15c7.js.map} +1 -1
- package/dist/{main.c10b01e0b09d1bc233ba.js → main.aa40457f706547a8ab62.js} +3 -3
- package/dist/{main.c10b01e0b09d1bc233ba.js.map → main.aa40457f706547a8ab62.js.map} +1 -1
- package/dist/pages/aclmanagement.html +1 -1
- package/dist/pages/autocomplete.html +1 -1
- package/dist/pages/choose-repository-type.html +1 -1
- package/dist/pages/cluster-management/clusterInfo.html +3 -3
- package/dist/pages/create-index.html +1 -1
- package/dist/pages/dependencies.html +1 -1
- package/dist/pages/domainRangeInfo.html +2 -2
- package/dist/pages/edit.html +1 -1
- package/dist/pages/explore.html +1 -1
- package/dist/pages/export.html +1 -1
- package/dist/pages/find.html +1 -1
- package/dist/pages/graph-config/saveGraphConfig.html +8 -8
- package/dist/pages/graphs-visualizations.html +7 -7
- package/dist/pages/guides.html +1 -1
- package/dist/pages/home.html +1 -1
- package/dist/pages/import.html +2 -2
- package/dist/pages/jdbc-create.html +1 -1
- package/dist/pages/jdbc.html +1 -1
- package/dist/pages/monitor/backup-and-restore.html +1 -1
- package/dist/pages/monitor/queries.html +1 -1
- package/dist/pages/monitor/resources.html +1 -1
- package/dist/pages/namespaces.html +2 -2
- package/dist/pages/plugins.html +1 -1
- package/dist/pages/rdfClassHierarchyInfo.html +7 -7
- package/dist/pages/rdfrank.html +2 -2
- package/dist/pages/repositories.html +2 -2
- package/dist/pages/repository.html +1 -1
- package/dist/pages/similarity-indexes.html +1 -1
- package/dist/pages/sparql-editor.html +1 -1
- package/dist/pages/sparql-template-create.html +1 -1
- package/dist/pages/sparql-templates.html +1 -1
- package/dist/pages/ux-test1.html +2 -2
- package/dist/pages/webapi.html +2 -2
- package/dist/plugins.js +1 -1
- package/dist/res/swagger5/index.html +11 -11
- package/dist/shared-components/cjs/onto-deprecation-banner_5.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-graph-explore-split-button.cjs.entry.js +1 -1
- package/dist/shared-components/cjs/onto-language-selector_9.cjs.entry.js +1 -1
- package/dist/shared-components/cjs/onto-layout.cjs.entry.js +1 -1
- package/dist/shared-components/cjs/onto-permission-banner.cjs.entry.js +1 -1
- package/dist/shared-components/cjs/onto-test-context.cjs.entry.js +1 -1
- package/dist/shared-components/cjs/onto-toastr.cjs.entry.js +1 -1
- package/dist/shared-components/cjs/onto-tooltip.cjs.entry.js +1 -1
- package/dist/shared-components/cjs/translate-label.cjs.entry.js +1 -1
- package/dist/shared-components/collection/components/onto-deprecation-banner/onto-deprecation-banner.css +1 -1
- package/dist/shared-components/collection/components/onto-deprecation-banner/onto-deprecation-banner.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-graph-explore-split-button/onto-graph-explore-split-button.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-license-alert/onto-license-alert.js +1 -1
- package/dist/shared-components/collection/components/onto-loader/onto-loader.js +1 -1
- package/dist/shared-components/collection/components/onto-operations-notification/onto-operations-notification.js +1 -1
- package/dist/shared-components/collection/components/onto-permission-banner/onto-permission-banner.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/onto-user-login/onto-user-login.js +1 -1
- package/dist/shared-components/collection/components/onto-user-menu/onto-user-menu.js +1 -1
- package/dist/shared-components/collection/components/translate-label/translate-label.js +1 -1
- package/dist/shared-components/esm/onto-deprecation-banner_5.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-graph-explore-split-button.entry.js +1 -1
- package/dist/shared-components/esm/onto-language-selector_9.entry.js +1 -1
- package/dist/shared-components/esm/onto-layout.entry.js +1 -1
- package/dist/shared-components/esm/onto-permission-banner.entry.js +1 -1
- package/dist/shared-components/esm/onto-test-context.entry.js +1 -1
- package/dist/shared-components/esm/onto-toastr.entry.js +1 -1
- package/dist/shared-components/esm/onto-tooltip.entry.js +1 -1
- package/dist/shared-components/esm/translate-label.entry.js +1 -1
- package/dist/shared-components/shared-components/p-23d30101.entry.js +1 -0
- package/dist/shared-components/shared-components/{p-5a0c473d.entry.js → p-34ade607.entry.js} +1 -1
- package/dist/shared-components/shared-components/{p-20b1637d.entry.js → p-6541a02d.entry.js} +1 -1
- package/dist/shared-components/shared-components/{p-6ce0c1c9.entry.js → p-707656f3.entry.js} +1 -1
- package/dist/shared-components/shared-components/{p-fb9651cd.entry.js → p-7d074106.entry.js} +1 -1
- package/dist/shared-components/shared-components/p-86d0a2ee.entry.js +1 -0
- package/dist/shared-components/shared-components/p-8fb56abc.entry.js +1 -0
- package/dist/shared-components/shared-components/{p-ab06eb4f.entry.js → p-98e91ae6.entry.js} +1 -1
- package/dist/shared-components/shared-components/{p-eda1cb77.entry.js → p-9ba83beb.entry.js} +2 -2
- package/dist/shared-components/shared-components/p-9f2fb166.entry.js +1 -0
- package/dist/shared-components/shared-components/p-b46ea034.entry.js +1 -0
- package/dist/shared-components/shared-components/shared-components.esm.js +1 -1
- package/dist/shared-components/types/components/onto-footer/onto-footer.d.ts +1 -0
- package/dist/shared-components/types/components/translate-label/translate-label.d.ts +2 -2
- package/dist/shared-components/types/components.d.ts +4 -4
- package/package.json +1 -1
- package/dist/40808.39a22bb87bfc33dafad7.bundle.js +0 -2
- package/dist/40808.39a22bb87bfc33dafad7.bundle.js.map +0 -1
- package/dist/43239.1cd1b4be623593e3de58.bundle.js +0 -2
- package/dist/43239.1cd1b4be623593e3de58.bundle.js.map +0 -1
- package/dist/44906.add6bedebb53f0cc1aaa.bundle.js +0 -2
- package/dist/44906.add6bedebb53f0cc1aaa.bundle.js.map +0 -1
- package/dist/54774.f5bbd2466f8584d019ff.bundle.js +0 -2
- package/dist/54774.f5bbd2466f8584d019ff.bundle.js.map +0 -1
- package/dist/80099.a881e961bc3214bf8e18.bundle.js +0 -2
- package/dist/80099.a881e961bc3214bf8e18.bundle.js.map +0 -1
- package/dist/96827.775ca12817b0a81b610a.bundle.js +0 -2
- package/dist/96827.775ca12817b0a81b610a.bundle.js.map +0 -1
- package/dist/shared-components/shared-components/p-114ea8c4.entry.js +0 -1
- package/dist/shared-components/shared-components/p-79ea666b.entry.js +0 -1
- package/dist/shared-components/shared-components/p-7aea3f88.entry.js +0 -1
- package/dist/shared-components/shared-components/p-a0b19580.entry.js +0 -1
- package/dist/shared-components/shared-components/p-cec2c15d.entry.js +0 -1
- /package/dist/{58328.b15114d6bec21972df60.bundle.js.LICENSE.txt → 58328.ae47dca9b6fd21785b2d.bundle.js.LICENSE.txt} +0 -0
- /package/dist/{legacyWorkbench.d59df54d7b195790cc81.js.LICENSE.txt → legacyWorkbench.4afca6618ece256d15c7.js.LICENSE.txt} +0 -0
- /package/dist/{main.c10b01e0b09d1bc233ba.js.LICENSE.txt → main.aa40457f706547a8ab62.js.LICENSE.txt} +0 -0
- /package/dist/shared-components/shared-components/{p-eda1cb77.entry.js.LICENSE.txt → p-9ba83beb.entry.js.LICENSE.txt} +0 -0
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export const __webpack_esm_id__=23654;export const __webpack_esm_ids__=[23654];export const __webpack_esm_modules__={23654(o,t,e){e.r(t),e.d(t,{onto_tooltip:()=>i});var r=e(18072),a=e(12954);e(51494);const i=class{constructor(o){(0,r.r)(this,o),this.clearTooltipsForRemovedElements=o=>{for(const t of o)for(const o of Array.from(t.removedNodes))if(this.removeTooltipFromNode(o))return},this.removeTooltipFromNode=o=>{if(o instanceof HTMLElement){if(a.T.getTooltipInstance(o))return a.T.destroyTooltip(o),!0;o.childNodes.forEach(this.removeTooltipFromNode)}return!1}}onMouseover(o){const t=a.T.getTooltipTarget(o.target);t&&this.handleTooltipTargetShow(t);const e=a.T.getTooltip(o.target);e&&this.handleTooltipShow(e)}handleTooltipShow(o){const t=o.tooltipTarget;t&&this.handleTooltipTargetShow(t)}handleTooltipTargetShow(o){a.T.getOrCreateTooltipInstance(o).show()}onMouseout(o){const t=a.T.getTooltipTarget(o.target);t&&this.handleTooltipTargetHide(t,o.relatedTarget);const e=a.T.getTooltip(o.target);e&&this.handleTooltipHide(e,o.relatedTarget)}handleTooltipHide(o,t){const e=o.tooltipTarget;e&&(t&&o.contains(t)||this.handleTooltipTargetHide(e,t))}handleTooltipTargetHide(o,t){t&&(null==o?void 0:o.contains(t))||a.T.getTooltipInstance(o)&&a.T.destroyTooltip(o)}connectedCallback(){this.handleRemovedNodes()}disconnectedCallback(){var o;null===(o=this.observer)||void 0===o||o.disconnect()}render(){return(0,r.h)(r.a,{key:"
|
|
2
|
-
//# sourceMappingURL=23654.
|
|
1
|
+
export const __webpack_esm_id__=23654;export const __webpack_esm_ids__=[23654];export const __webpack_esm_modules__={23654(o,t,e){e.r(t),e.d(t,{onto_tooltip:()=>i});var r=e(18072),a=e(12954);e(51494);const i=class{constructor(o){(0,r.r)(this,o),this.clearTooltipsForRemovedElements=o=>{for(const t of o)for(const o of Array.from(t.removedNodes))if(this.removeTooltipFromNode(o))return},this.removeTooltipFromNode=o=>{if(o instanceof HTMLElement){if(a.T.getTooltipInstance(o))return a.T.destroyTooltip(o),!0;o.childNodes.forEach(this.removeTooltipFromNode)}return!1}}onMouseover(o){const t=a.T.getTooltipTarget(o.target);t&&this.handleTooltipTargetShow(t);const e=a.T.getTooltip(o.target);e&&this.handleTooltipShow(e)}handleTooltipShow(o){const t=o.tooltipTarget;t&&this.handleTooltipTargetShow(t)}handleTooltipTargetShow(o){a.T.getOrCreateTooltipInstance(o).show()}onMouseout(o){const t=a.T.getTooltipTarget(o.target);t&&this.handleTooltipTargetHide(t,o.relatedTarget);const e=a.T.getTooltip(o.target);e&&this.handleTooltipHide(e,o.relatedTarget)}handleTooltipHide(o,t){const e=o.tooltipTarget;e&&(t&&o.contains(t)||this.handleTooltipTargetHide(e,t))}handleTooltipTargetHide(o,t){t&&(null==o?void 0:o.contains(t))||a.T.getTooltipInstance(o)&&a.T.destroyTooltip(o)}connectedCallback(){this.handleRemovedNodes()}disconnectedCallback(){var o;null===(o=this.observer)||void 0===o||o.disconnect()}render(){return(0,r.h)(r.a,{key:"6ccc31b44f2c2f04492f26d313d012b66052445a"})}handleRemovedNodes(){this.observer=new MutationObserver(this.clearTooltipsForRemovedElements),this.observer.observe(document.body,{childList:!0,subtree:!0})}};i.style=':host{display:block}.tooltip-box{width:max-content;font-size:0.875rem;font-weight:400;line-height:1.5;max-width:var(--gw-tooltip-max-width);pointer-events:auto;opacity:1 !important;color:var(--gw-tooltip-color) !important;background-color:var(--gw-tooltip-background) !important;border-radius:var(--gw-tooltip-border-radius) !important}.tooltip-box .tooltip-arrow{width:10px;height:10px}.tooltip-box .tooltip-arrow::before{content:"";position:absolute;width:10px;height:10px;background-color:var(--gw-tooltip-background);transform:rotate(45deg)}.tooltip-box .tooltip-arrow[data-placement=top]::before{border-bottom-color:transparent;border-right-color:transparent}.tooltip-box .tooltip-arrow[data-placement=bottom]::before{border-top-color:transparent;border-left-color:transparent}.tooltip-box .tooltip-arrow[data-placement=right]::before{border-bottom-color:transparent;border-left-color:transparent}.tooltip-box .tooltip-arrow[data-placement=left]::before{border-top-color:transparent;border-right-color:transparent}.tooltip-box .tooltip-content{overflow-wrap:anywhere;position:relative;z-index:1;padding:var(--gw-tooltip-padding)}'}};
|
|
2
|
+
//# sourceMappingURL=23654.2f4c56eca267fda60261.bundle.js.map
|
package/dist/{23654.28f7b5a1f2cbac46b505.bundle.js.map → 23654.2f4c56eca267fda60261.bundle.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"23654.
|
|
1
|
+
{"version":3,"file":"23654.2f4c56eca267fda60261.bundle.js","mappings":"wMAIA,MAEMA,EAAc,MAChBC,WAAAA,CAAYC,IACRC,EAAAA,EAAAA,GAAiBC,KAAMF,GAOvBE,KAAKC,gCAAmCC,IACpC,IAAK,MAAMC,KAAUD,EACjB,IAAK,MAAME,KAAQC,MAAMC,KAAKH,EAAOI,cACjC,GAAIP,KAAKQ,sBAAsBJ,GAG3B,QAchBJ,KAAKQ,sBAAyBJ,IAC1B,GAAIA,aAAgBK,YAAa,CAE7B,GADwBC,EAAAA,EAAYC,mBAAmBP,GAGnD,OADAM,EAAAA,EAAYE,eAAeR,IACpB,EAEXA,EAAKS,WAAWC,QAAQd,KAAKQ,sBACjC,CACA,OAAO,EAEf,CAOAO,WAAAA,CAAYC,GACR,MAAMC,EAASP,EAAAA,EAAYQ,iBAAiBF,EAAMC,QAC9CA,GACAjB,KAAKmB,wBAAwBF,GAEjC,MAAMG,EAAUV,EAAAA,EAAYW,WAAWL,EAAMC,QACzCG,GACApB,KAAKsB,kBAAkBF,EAE/B,CACAE,iBAAAA,CAAkBF,GACd,MAAMG,EAAgBH,EAAQG,cACzBA,GAGLvB,KAAKmB,wBAAwBI,EACjC,CACAJ,uBAAAA,CAAwBI,GACIb,EAAAA,EAAYc,2BAA2BD,GAC/CE,MACpB,CAMAC,UAAAA,CAAWV,GACP,MAAMC,EAASP,EAAAA,EAAYQ,iBAAiBF,EAAMC,QAC9CA,GACAjB,KAAK2B,wBAAwBV,EAAQD,EAAMY,eAE/C,MAAMR,EAAUV,EAAAA,EAAYW,WAAWL,EAAMC,QACzCG,GACApB,KAAK6B,kBAAkBT,EAASJ,EAAMY,cAE9C,CACAC,iBAAAA,CAAkBT,EAASQ,GACvB,MAAML,EAAgBH,EAAQG,cACzBA,IAGAK,GAAkBR,EAAQU,SAASF,IACpC5B,KAAK2B,wBAAwBJ,EAAeK,GAEpD,CACAD,uBAAAA,CAAwBJ,EAAeK,GAE9BA,IAAmBL,aAA0D,EAAIA,EAAcO,SAASF,KACjFlB,EAAAA,EAAYC,mBAAmBY,IAEnDb,EAAAA,EAAYE,eAAeW,EAGvC,CACAQ,iBAAAA,GACI/B,KAAKgC,oBACT,CACAC,oBAAAA,GACI,IAAIC,EACqB,QAAxBA,EAAKlC,KAAKmC,gBAAkC,IAAZD,GAAyBA,EAAGE,YACjE,CACAC,MAAAA,GACI,OAAOC,EAAAA,EAAAA,GAAEC,EAAAA,EAAM,CAAEC,IAAK,4CAC1B,CAKAR,kBAAAA,GACIhC,KAAKmC,SAAW,IAAIM,iBAAiBzC,KAAKC,iCAC1CD,KAAKmC,SAASO,QAAQC,SAASC,KAAM,CAAEC,WAAW,EAAMC,SAAS,GACrE,GAEJlD,EAAYmD,MA1HW,gnC","sources":["webpack://root-config/./packages/shared-components/dist/esm/onto-tooltip.entry.js"],"sourcesContent":["import { r as registerInstance, h, a as Host } from './index-BntG-4Sv.js';\nimport { T as TooltipUtil } from './tooltip-util-HoM2klPV.js';\nimport './onto-tooltip-placement-D_J2-9CG.js';\n\nconst ontoTooltipCss = \":host{display:block}.tooltip-box{width:max-content;font-size:0.875rem;font-weight:400;line-height:1.5;max-width:var(--gw-tooltip-max-width);pointer-events:auto;opacity:1 !important;color:var(--gw-tooltip-color) !important;background-color:var(--gw-tooltip-background) !important;border-radius:var(--gw-tooltip-border-radius) !important}.tooltip-box .tooltip-arrow{width:10px;height:10px}.tooltip-box .tooltip-arrow::before{content:\\\"\\\";position:absolute;width:10px;height:10px;background-color:var(--gw-tooltip-background);transform:rotate(45deg)}.tooltip-box .tooltip-arrow[data-placement=top]::before{border-bottom-color:transparent;border-right-color:transparent}.tooltip-box .tooltip-arrow[data-placement=bottom]::before{border-top-color:transparent;border-left-color:transparent}.tooltip-box .tooltip-arrow[data-placement=right]::before{border-bottom-color:transparent;border-left-color:transparent}.tooltip-box .tooltip-arrow[data-placement=left]::before{border-top-color:transparent;border-right-color:transparent}.tooltip-box .tooltip-content{overflow-wrap:anywhere;position:relative;z-index:1;padding:var(--gw-tooltip-padding)}\";\n\nconst OntoTooltip = class {\n constructor(hostRef) {\n registerInstance(this, hostRef);\n /**\n * Clears tooltips associated with elements that have been removed from the DOM.\n *\n * @param records - An array of MutationRecord objects, each representing a change to the DOM tree.\n * The function iterates over these records to find and clear tooltips for removed nodes.\n */\n this.clearTooltipsForRemovedElements = (records) => {\n for (const record of records) {\n for (const node of Array.from(record.removedNodes)) {\n if (this.removeTooltipFromNode(node)) {\n // stop iterating if a tooltip is found and destroyed,\n // since we can't have more than one tooltip\n return;\n }\n }\n }\n };\n /**\n * Recursively removes tooltips from a given node and its children.\n *\n * This function checks if the given node is an HTMLElement and has an associated tooltip.\n * If a tooltip is found, it is destroyed. If not, the function then recursively checks all child nodes.\n *\n * @param node - The DOM node to check for tooltips.\n * @returns A boolean indicating whether a tooltip was found and destroyed (true) or not (false).\n */\n this.removeTooltipFromNode = (node) => {\n if (node instanceof HTMLElement) {\n const tooltipInstance = TooltipUtil.getTooltipInstance(node);\n if (tooltipInstance) {\n TooltipUtil.destroyTooltip(node);\n return true;\n }\n node.childNodes.forEach(this.removeTooltipFromNode);\n }\n return false;\n };\n }\n /**\n * Checks if the target of the 'mouseover' event has tooltip configuration.\n * If it does, creates a tooltip instance and displays it.\n *\n * @param event - The 'mouseover' event triggered on a document element.\n */\n onMouseover(event) {\n const target = TooltipUtil.getTooltipTarget(event.target);\n if (target) {\n this.handleTooltipTargetShow(target);\n }\n const tooltip = TooltipUtil.getTooltip(event.target);\n if (tooltip) {\n this.handleTooltipShow(tooltip);\n }\n }\n handleTooltipShow(tooltip) {\n const tooltipTarget = tooltip.tooltipTarget;\n if (!tooltipTarget) {\n return;\n }\n this.handleTooltipTargetShow(tooltipTarget);\n }\n handleTooltipTargetShow(tooltipTarget) {\n const tooltipInstance = TooltipUtil.getOrCreateTooltipInstance(tooltipTarget);\n tooltipInstance.show();\n }\n /**\n * Destroys the tooltip if it is present.\n *\n * @param event - The 'mouseout' event triggered on a document element.\n */\n onMouseout(event) {\n const target = TooltipUtil.getTooltipTarget(event.target);\n if (target) {\n this.handleTooltipTargetHide(target, event.relatedTarget);\n }\n const tooltip = TooltipUtil.getTooltip(event.target);\n if (tooltip) {\n this.handleTooltipHide(tooltip, event.relatedTarget);\n }\n }\n handleTooltipHide(tooltip, relatedTarget) {\n const tooltipTarget = tooltip.tooltipTarget;\n if (!tooltipTarget) {\n return;\n }\n if (!relatedTarget || !tooltip.contains(relatedTarget)) {\n this.handleTooltipTargetHide(tooltipTarget, relatedTarget);\n }\n }\n handleTooltipTargetHide(tooltipTarget, relatedTarget) {\n // Ensure the mouse is completely outside the target and its children\n if (!relatedTarget || !(tooltipTarget === null || tooltipTarget === void 0 ? void 0 : tooltipTarget.contains(relatedTarget))) {\n const tooltipInstance = TooltipUtil.getTooltipInstance(tooltipTarget);\n if (tooltipInstance) {\n TooltipUtil.destroyTooltip(tooltipTarget);\n }\n }\n }\n connectedCallback() {\n this.handleRemovedNodes();\n }\n disconnectedCallback() {\n var _a;\n (_a = this.observer) === null || _a === void 0 ? void 0 : _a.disconnect();\n }\n render() {\n return h(Host, { key: '6ccc31b44f2c2f04492f26d313d012b66052445a' });\n }\n /**\n * Initializes a MutationObserver to monitor the document body for removed nodes.\n * When nodes are removed, it triggers the clearing of tooltips associated with those nodes.\n */\n handleRemovedNodes() {\n this.observer = new MutationObserver(this.clearTooltipsForRemovedElements);\n this.observer.observe(document.body, { childList: true, subtree: true });\n }\n};\nOntoTooltip.style = ontoTooltipCss;\n\nexport { OntoTooltip as onto_tooltip };\n"],"names":["OntoTooltip","constructor","hostRef","registerInstance","this","clearTooltipsForRemovedElements","records","record","node","Array","from","removedNodes","removeTooltipFromNode","HTMLElement","TooltipUtil","getTooltipInstance","destroyTooltip","childNodes","forEach","onMouseover","event","target","getTooltipTarget","handleTooltipTargetShow","tooltip","getTooltip","handleTooltipShow","tooltipTarget","getOrCreateTooltipInstance","show","onMouseout","handleTooltipTargetHide","relatedTarget","handleTooltipHide","contains","connectedCallback","handleRemovedNodes","disconnectedCallback","_a","observer","disconnect","render","h","Host","key","MutationObserver","observe","document","body","childList","subtree","style"],"sourceRoot":""}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export const __webpack_esm_id__=40808;export const __webpack_esm_ids__=[40808];export const __webpack_esm_modules__={40808(){PluginRegistry.add("route",[{url:"/repository",module:"graphdb.framework.repositories",path:"repositories/app",chunk:"repositories",controller:"LocationsAndRepositoriesCtrl",templateUrl:"pages/repositories.html",title:"menu.repositories.label",helpInfo:"view.repositories.helpInfo",documentationUrl:"creating-a-repository.html",allowAuthorities:["READ_REPO_{repoId}","READ_REPO_{repoId}:GRAPHQL"]},{url:"/repository/create",module:"graphdb.framework.repositories",path:"repositories/app",chunk:"repositories",controller:"ChooseRepositoryCtrl",templateUrl:"pages/choose-repository-type.html",title:"view.choose.repo.title",allowAuthorities:["READ_REPO_{repoId}"]},{url:"/repository/create/:repositoryType",module:"graphdb.framework.repositories",path:"repositories/app",chunk:"repositories",controller:"AddRepositoryCtrl",templateUrl:"pages/repository.html",title:"Create Repository",allowAuthorities:["READ_REPO_{repoId}"]},{url:"/repository/edit/:repositoryId",module:"graphdb.framework.repositories",path:"repositories/app",chunk:"repositories",controller:"EditRepositoryCtrl",templateUrl:"pages/repository.html",title:"Edit Repository",allowAuthorities:["READ_REPO_{repoId}"]}]),PluginRegistry.add("main.menu",{items:[{label:"Repositories",labelKey:"menu.repositories.label",href:"repository",order:1,role:"ROLE_MANAGE_REPO",parent:"Setup",children:[{href:"repository/create",children:[{href:"repository/create/*"}]},{href:"repository/edit/*"}],guideSelector:"sub-menu-repositories",testSelector:"sub-menu-repositories"}]})}};
|
|
2
|
+
//# sourceMappingURL=40808.78f81786cadf334f8531.bundle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"40808.78f81786cadf334f8531.bundle.js","mappings":"6HAAAA,eAAeC,IAAI,QAAS,CACxB,CACI,IAAO,cACP,OAAU,iCACV,KAAQ,mBACR,MAAS,eACT,WAAc,+BACd,YAAe,0BACf,MAAS,0BACT,SAAY,6BACZ,iBAAoB,6BACpB,iBAAoB,CAAC,qBAAsB,+BAC5C,CACC,IAAO,qBACP,OAAU,iCACV,KAAQ,mBACR,MAAS,eACT,WAAc,uBACd,YAAe,oCACf,MAAS,yBACT,iBAAoB,CAAC,uBACtB,CACC,IAAO,qCACP,OAAU,iCACV,KAAQ,mBACR,MAAS,eACT,WAAc,oBACd,YAAe,wBACf,MAAS,oBACT,iBAAoB,CAAC,uBACtB,CACC,IAAO,iCACP,OAAU,iCACV,KAAQ,mBACR,MAAS,eACT,WAAc,qBACd,YAAe,wBACf,MAAS,kBACT,iBAAoB,CAAC,yBAI7BD,eAAeC,IAAI,YAAa,CAC5B,MAAS,CACL,CACIC,MAAO,eACPC,SAAU,0BACVC,KAAM,aACNC,MAAO,EACPC,KAAM,mBACNC,OAAQ,QACRC,SAAU,CACN,CACIJ,KAAM,oBACNI,SAAU,CACN,CACIJ,KAAM,yBAIlB,CACIA,KAAM,sBAGdK,cAAe,wBACfC,aAAc,2B","sources":["webpack://root-config/./packages/legacy-workbench/src/js/angular/repositories/plugin.js"],"sourcesContent":["PluginRegistry.add('route', [\n {\n 'url': '/repository',\n 'module': 'graphdb.framework.repositories',\n 'path': 'repositories/app',\n 'chunk': 'repositories',\n 'controller': 'LocationsAndRepositoriesCtrl',\n 'templateUrl': 'pages/repositories.html',\n 'title': 'menu.repositories.label',\n 'helpInfo': 'view.repositories.helpInfo',\n 'documentationUrl': 'creating-a-repository.html',\n 'allowAuthorities': ['READ_REPO_{repoId}', 'READ_REPO_{repoId}:GRAPHQL'],\n }, {\n 'url': '/repository/create',\n 'module': 'graphdb.framework.repositories',\n 'path': 'repositories/app',\n 'chunk': 'repositories',\n 'controller': 'ChooseRepositoryCtrl',\n 'templateUrl': 'pages/choose-repository-type.html',\n 'title': 'view.choose.repo.title',\n 'allowAuthorities': ['READ_REPO_{repoId}'],\n }, {\n 'url': '/repository/create/:repositoryType',\n 'module': 'graphdb.framework.repositories',\n 'path': 'repositories/app',\n 'chunk': 'repositories',\n 'controller': 'AddRepositoryCtrl',\n 'templateUrl': 'pages/repository.html',\n 'title': 'Create Repository',\n 'allowAuthorities': ['READ_REPO_{repoId}'],\n }, {\n 'url': '/repository/edit/:repositoryId',\n 'module': 'graphdb.framework.repositories',\n 'path': 'repositories/app',\n 'chunk': 'repositories',\n 'controller': 'EditRepositoryCtrl',\n 'templateUrl': 'pages/repository.html',\n 'title': 'Edit Repository',\n 'allowAuthorities': ['READ_REPO_{repoId}'],\n },\n]);\n\nPluginRegistry.add('main.menu', {\n 'items': [\n {\n label: 'Repositories',\n labelKey: 'menu.repositories.label',\n href: 'repository',\n order: 1,\n role: 'ROLE_MANAGE_REPO',\n parent: 'Setup',\n children: [\n {\n href: 'repository/create',\n children: [\n {\n href: 'repository/create/*',\n },\n ],\n },\n {\n href: 'repository/edit/*',\n },\n ],\n guideSelector: 'sub-menu-repositories',\n testSelector: 'sub-menu-repositories',\n }],\n});\n"],"names":["PluginRegistry","add","label","labelKey","href","order","role","parent","children","guideSelector","testSelector"],"sourceRoot":""}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export const __webpack_esm_id__=43239;export const __webpack_esm_ids__=[43239];export const __webpack_esm_modules__={29229(e,t,i){function a(e,t=300){let i;return(...a)=>{clearTimeout(i),i=setTimeout(()=>e.apply(this,a),t)}}i.d(t,{d:()=>a})},43239(e,t,i){i.r(t),i.d(t,{onto_layout:()=>o});var a=i(18072),s=i(29229),n=i(57154),r=i(54096);const o=class{constructor(e){(0,a.r)(this,e),this.authenticationService=(0,n.service)(n.AuthenticationService),this.authorizationService=(0,n.service)(n.AuthorizationService),this.navigationContextService=(0,n.service)(n.NavigationContextService),this.authStorageService=(0,n.service)(n.AuthenticationStorageService),this.runtimeConfigurationContextService=(0,n.service)(n.RuntimeConfigurationContextService),this.eventService=(0,n.service)(n.EventService),this.applicationLifecycleContextService=(0,n.service)(n.ApplicationLifecycleContextService),this.userPreferencesService=(0,n.service)(n.UserPreferencesService),this.userPreferencesContextService=(0,n.service)(n.UserPreferencesContextService),this.fullJwtKey=`${n.StorageKey.GLOBAL_NAMESPACE}.${this.authStorageService.NAMESPACE}.${this.authStorageService.jwtKey}`,this.fullAuthenticatedKey=`${n.StorageKey.GLOBAL_NAMESPACE}.${this.authStorageService.NAMESPACE}.${this.authStorageService.authenticatedKey}`,this.authEvents=[this.fullJwtKey,this.fullAuthenticatedKey],this.isLowResolution=!1,this.showHeader=this.isAuthenticatedFully(),this.showNavbar=!1,this.isEmbedded=!1,this.loading=!0,this.hideSolrDeprecationBanner=!1,this.subscriptions=new n.SubscriptionList,this.isNavbarCollapsed=!1,this.handleStorageChange=e=>{(0,n.service)(n.LocalStorageSubscriptionHandlerService).handleStorageChange(e),this.handleAuthChange(e.key)},this.windowResizeObserver=(0,s.d)(()=>this.windowResizeHandler(),50),n.WindowService.getWindow().addEventListener("storage",this.handleStorageChange)}componentDidRender(){this.windowResizeHandler()}componentDidLoad(){this.updateShowSolrDeprecationBanner()}connectedCallback(){this.subscribeToSecurityChanges(),this.updateVisibility(),this.subscribeToNavigationEnd(),this.subscribeToRuntimeConfigurationChanges(),this.subscribeToUserPreferencesChange(),this.subscribeToBeforeMountRouting(),this.loading=!1}disconnectedCallback(){this.subscriptions.unsubscribeAll()}render(){return(0,a.h)(a.a,{key:"537f76787f912cde68af6cb5b902b76a34d48d3e",class:{"wb-layout":!0,"is-embedded":this.isEmbedded,"hide-navbar":!this.showNavbar,loading:this.loading}},(0,a.h)("div",{key:"a9e344f05e4862f54952ceb5fc508fa2f93171fb",class:"default-slot-wrapper"},(0,a.h)("slot",{key:"6b90a7bfb37fd49b905ba20f5c802faeef45e4e1",name:"default"})),!this.isEmbedded&&(0,a.h)("div",{key:"c93adb078e98811365e46b56b308da99d106e7dd",class:"wb-header"},!this.hideSolrDeprecationBanner&&(0,a.h)("onto-deprecation-banner",{key:"4e3bad5818918b4b03048234d4e991dfca7cbe01",class:"onto-deprecation-banner",onCloseBanner:this.onSolrDeprecationBannerClosedHandler()},(0,a.h)("span",{key:"ec2f08da5bfaee597f22f2e4e3613f4bc1754fd3",slot:"content"},(0,a.h)("translate-label",{key:"f08fb3a7214c59392593f3c7f8dcd88139774b19",labelKey:"deprecation-banner.solr.content"}))),(0,a.h)("header",{key:"7d6ec8141bedae1f11e04a58c299176e9f08f399"},this.showHeader&&(0,a.h)("onto-header",{key:"d4c8ef991aad7843782abfdf58c87e21569552ec"}))),!this.isEmbedded&&this.showNavbar&&(0,a.h)("nav",{key:"8eeded07cea3242140bc23f97d93f0623fccdc4a",class:"wb-navbar"},(0,a.h)("onto-navbar",{key:"cefe1d6a0cac0d39763aa0f20ebd43d3d905debd",ref:this.assignNavbarRef(),"navbar-collapsed":this.isLowResolution})),(0,a.h)("slot",{key:"2c3dfbb9dcd6c408fdbfb911ae69e5c0720e1337",name:"main"},(0,a.h)("onto-loader",{key:"ba0ca75373977a0e5542bf1f8eeea0175dfcfa09",loading:this.loading,targetSelector:"main",size:96,messageText:r.T.translate("common.loading")})),!this.isEmbedded&&(0,a.h)("footer",{key:"bdfdc37c695169bf4e79ba573c6c05d614648f05",class:"wb-footer"},(0,a.h)("onto-footer",{key:"e0e227b6fe34133d0ae06163b4f9e4b5b00b5b37"})))}onNavbarToggled(e){this.isNavbarCollapsed=e.detail.payload,this.isNavbarCollapsed?this.hostElement.classList.add("expanded"):this.hostElement.classList.remove("expanded")}onResize(){this.windowResizeObserver()}onSolrDeprecationBannerClosedHandler(){return()=>{this.userPreferencesService.dismissSolrDeprecationBanner(),this.updateShowSolrDeprecationBanner()}}windowResizeHandler(){var e,t,i,a;this.isLowResolution=n.WindowService.getWindow().innerWidth<=768;const s=document.querySelector(".navbar-component");if(s){const n=document.querySelector(".cookie-consent-banner"),r=document.querySelector(".wb-header"),o=null!==(t=null===(e=null==r?void 0:r.getBoundingClientRect())||void 0===e?void 0:e.height)&&void 0!==t?t:0,h=null!==(a=null===(i=null==n?void 0:n.getBoundingClientRect())||void 0===i?void 0:i.height)&&void 0!==a?a:0;s.style.height=`calc(100% - ${o}px - ${h}px)`}this.isLowResolution||this.isNavbarCollapsed?this.hostElement.classList.add("expanded"):this.hostElement.classList.remove("expanded")}handleAuthChange(e){var t;e&&this.authEvents.includes(e)&&(this.authStorageService.isAuthenticated()?(0,n.navigate)(null!==(t=this.navigationContextService.getPreviousRoute())&&void 0!==t?t:"./"):(0,n.navigate)("login"),n.WindowService.getWindow().location.reload())}subscribeToSecurityChanges(){const e=(0,n.service)(n.SecurityContextService);this.subscriptions.add(e.onAuthenticatedUserChanged(e=>{this.authenticatedUser=e,this.updateVisibility()})),this.subscriptions.add(e.onSecurityConfigChanged(e=>{this.securityConfig=e,this.updateVisibility()})),this.subscriptions.add(this.eventService.subscribe(n.EventName.LOGIN,()=>{this.setNavbarItemVisibility(),this.updateVisibility()})),this.subscriptions.add(this.eventService.subscribe(n.EventName.LOGOUT,()=>{this.setNavbarItemVisibility(),this.updateVisibility(),(0,n.navigate)("login")}))}subscribeToRuntimeConfigurationChanges(){this.subscriptions.add(this.runtimeConfigurationContextService.onRuntimeConfigurationChanged(e=>{var t;this.isEmbedded=null!==(t=null==e?void 0:e.isEmbedded)&&void 0!==t&&t}))}updateVisibility(){this.authenticationService.isSecurityEnabled()?(this.showHeader=this.authenticationService.isAuthenticated()||this.authorizationService.hasFreeAccess(),this.showNavbar=this.authenticationService.isAuthenticated()||this.authorizationService.hasFreeAccess()):(this.showNavbar=!0,this.showHeader=!0)}isAuthenticatedFully(){return!this.authenticationService.isSecurityEnabled()||this.authenticationService.isAuthenticated()||this.authorizationService.hasFreeAccess()}shouldShowMenu(e){return this.isAuthenticatedFully()&&this.authorizationService.hasRole(e)}assignNavbarRef(){return e=>{this.navbarRef=e,this.navbarRef&&(this.navbarRef.menuItems=n.WindowService.getPluginRegistry().get(n.MainMenuExtensionPoint.NAME),this.setNavbarItemVisibility())}}setNavbarItemVisibility(){var e,t,i;if(!(null===(e=this.navbarRef)||void 0===e?void 0:e.menuItems))return;const a=e=>{var t;e.shouldShow=this.shouldShowMenu(e.role),(null===(t=e.children)||void 0===t?void 0:t.length)&&e.children.forEach(a)};null===(i=null===(t=this.navbarRef)||void 0===t?void 0:t.menuItems)||void 0===i||i.forEach(e=>{e.items.forEach(a)}),this.navbarRef.menuItems=[...this.navbarRef.menuItems]}subscribeToNavigationEnd(){this.subscriptions.add(this.eventService.subscribe(n.EventName.NAVIGATION_END,e=>{this.navigationContextService.updatePreviousRoute(e.oldUrl),setTimeout(()=>{this.loading=!1})}))}subscribeToBeforeMountRouting(){this.subscriptions.add(this.applicationLifecycleContextService.onNavigationBeforeMountRouting(e=>{e&&(this.loading=!0)}))}subscribeToUserPreferencesChange(){this.subscriptions.add(this.userPreferencesContextService.onUserPreferencesChanged(()=>{this.updateShowSolrDeprecationBanner()}))}updateShowSolrDeprecationBanner(){this.hideSolrDeprecationBanner=this.userPreferencesService.isSolrDeprecationBannerDismissed()}get hostElement(){return(0,a.d)(this)}};o.style=':host{display:block;height:100%}.wb-layout{display:grid;grid-template:"header header" auto "nav main" 1fr "nav footer" auto/15rem minmax(200px, 1fr);min-height:100vh;margin:0;}.wb-layout.expanded{grid-template-columns:4.375rem 1fr}.wb-layout.is-embedded{grid-template-columns:1fr;grid-template-areas:"main";padding-top:1rem}.wb-layout.hide-navbar{grid-template:"header" auto "main" 1fr "footer" auto/1fr;}.wb-layout.hide-navbar.expanded{grid-template-columns:1fr}.wb-layout main .main-container{margin-left:0}.wb-layout main{grid-area:main}.wb-layout.loading main{position:relative;visibility:hidden}.wb-layout .default-slot-wrapper{display:none}.wb-layout .wb-header{grid-area:header;position:sticky;top:0;z-index:999}.wb-layout nav{grid-area:nav}.wb-layout footer{grid-area:footer}'},54096(e,t,i){i.d(t,{L:()=>n,T:()=>o,s:()=>s});var a=i(57154);function s(e){const t=document.createElement("textarea");return t.innerHTML=e,t.value}class n{static get logger(){return a.Loggers.getLoggerInstance("SharedComponents")}}class r{constructor(){this.languageContextService=a.ServiceProvider.get(a.LanguageContextService),this.translationChangedObservers={},this.logger=n.logger,this.defaultBundle=this.languageContextService.getDefaultBundle(),this.subscribeToBundleChange()}onTranslate(e,t=[],i=()=>{}){this.translationChangedObservers[e]=this.translationChangedObservers[e]||[];const a={parameters:t,callback:i};return this.translationChangedObservers[e].push(a),i(this.translate(e,t)),()=>{const t=this.translationChangedObservers[e].indexOf(a);-1!==t&&this.translationChangedObservers[e].splice(t,1)}}translate(e,t){return this.translateInLocale(e,t)}translateInLocale(e,t){let i=this.translateFromBundle(this.currentBundle,e);return i||(i=this.translateFromBundle(this.defaultBundle,e)),i?(i=this.applyParameters(i,t),s(i)):(this.logger.warn(`Missing translation for key: [${e}]`),e)}translateFromBundle(e,t){if(!e)return;let i=e[t];return"string"!=typeof i&&(i=this.translateAsJsonObject(e,t)),i}translateAsJsonObject(e,t){if(!t)return;let i=t.split(".");return this.getTranslation(e,i)}getTranslation(e,t){if(!t||!e)return;const i=e[t.splice(0,1)[0]];return 0===t.length?i:"string"!=typeof i?t.length>0?this.getTranslation(i,t):i:void 0}applyParameters(e,t){return t?t.reduce((e,t)=>r.replaceAll(e,t),e):e}static replaceAll(e,t){return t?e.split(`{{${t.key}}}`).join(t.value):e}notifyTranslationsChanged(){Object.keys(this.translationChangedObservers).forEach(e=>{(this.translationChangedObservers[e]||[]).forEach(t=>t.callback(this.translate(e,t.parameters)))})}subscribeToBundleChange(){this.languageChangeSubscription=this.languageContextService.onLanguageBundleChanged(e=>{e&&(this.currentBundle=e,this.notifyTranslationsChanged())})}destroy(){this.languageChangeSubscription&&this.languageChangeSubscription()}}const o=new r}};
|
|
2
|
+
//# sourceMappingURL=43239.71707ff04a220130d250.bundle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"43239.71707ff04a220130d250.bundle.js","mappings":"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","sources":["webpack://root-config/./packages/shared-components/dist/esm/function-utils-D1ZpXQQS.js","webpack://root-config/./packages/shared-components/dist/esm/onto-layout.entry.js","webpack://root-config/./packages/shared-components/dist/esm/translation.service-CyWR_ReZ.js"],"sourcesContent":["function debounce(func, wait = 300) {\n let timer;\n return (...args) => {\n clearTimeout(timer);\n timer = setTimeout(() => func.apply(this, args), wait);\n };\n}\n\nexport { debounce as d };\n","import { r as registerInstance, h, a as Host, d as getElement } from './index-BntG-4Sv.js';\nimport { d as debounce } from './function-utils-D1ZpXQQS.js';\nimport { service, AuthenticationService, AuthorizationService, NavigationContextService, AuthenticationStorageService, RuntimeConfigurationContextService, EventService, ApplicationLifecycleContextService, UserPreferencesService, UserPreferencesContextService, StorageKey, SubscriptionList, LocalStorageSubscriptionHandlerService, WindowService, navigate, SecurityContextService, EventName, MainMenuExtensionPoint } from '@ontotext/workbench-api';\nimport { T as TranslationService } from './translation.service-CyWR_ReZ.js';\n\nconst RESPONSIVE_BREAKPOINTS = {\n MD: 768};\n/**\n * The width of the window in pixels at which the navbar should collapse.\n */\nconst WINDOW_WIDTH_FOR_COLLAPSED_NAVBAR = RESPONSIVE_BREAKPOINTS.MD;\n\nconst ontoLayoutCss = \":host{display:block;height:100%}.wb-layout{display:grid;grid-template:\\\"header header\\\" auto \\\"nav main\\\" 1fr \\\"nav footer\\\" auto/15rem minmax(200px, 1fr);min-height:100vh;margin:0;}.wb-layout.expanded{grid-template-columns:4.375rem 1fr}.wb-layout.is-embedded{grid-template-columns:1fr;grid-template-areas:\\\"main\\\";padding-top:1rem}.wb-layout.hide-navbar{grid-template:\\\"header\\\" auto \\\"main\\\" 1fr \\\"footer\\\" auto/1fr;}.wb-layout.hide-navbar.expanded{grid-template-columns:1fr}.wb-layout main .main-container{margin-left:0}.wb-layout main{grid-area:main}.wb-layout.loading main{position:relative;visibility:hidden}.wb-layout .default-slot-wrapper{display:none}.wb-layout .wb-header{grid-area:header;position:sticky;top:0;z-index:999}.wb-layout nav{grid-area:nav}.wb-layout footer{grid-area:footer}\";\n\nconst OntoLayout = class {\n // ========================\n // Lifecycle methods\n // ========================\n constructor(hostRef) {\n registerInstance(this, hostRef);\n // ========================\n // Services\n // ========================\n this.authenticationService = service(AuthenticationService);\n this.authorizationService = service(AuthorizationService);\n this.navigationContextService = service(NavigationContextService);\n this.authStorageService = service(AuthenticationStorageService);\n this.runtimeConfigurationContextService = service(RuntimeConfigurationContextService);\n this.eventService = service(EventService);\n this.applicationLifecycleContextService = service(ApplicationLifecycleContextService);\n this.userPreferencesService = service(UserPreferencesService);\n this.userPreferencesContextService = service(UserPreferencesContextService);\n this.fullJwtKey = `${StorageKey.GLOBAL_NAMESPACE}.${this.authStorageService.NAMESPACE}.${this.authStorageService.jwtKey}`;\n this.fullAuthenticatedKey = `${StorageKey.GLOBAL_NAMESPACE}.${this.authStorageService.NAMESPACE}.${this.authStorageService.authenticatedKey}`;\n this.authEvents = [this.fullJwtKey, this.fullAuthenticatedKey];\n this.isLowResolution = false;\n this.showHeader = this.isAuthenticatedFully();\n this.showNavbar = false;\n this.isEmbedded = false;\n this.loading = true;\n this.hideSolrDeprecationBanner = false;\n // ========================\n // Private\n // ========================\n /**\n * List of subscriptions to manage component lifecycle\n * */\n this.subscriptions = new SubscriptionList();\n this.isNavbarCollapsed = false;\n this.handleStorageChange = (event) => {\n const localStorageSubscriptionHandlerService = service(LocalStorageSubscriptionHandlerService);\n localStorageSubscriptionHandlerService.handleStorageChange(event);\n this.handleAuthChange(event.key);\n };\n this.windowResizeObserver = debounce(() => this.windowResizeHandler(), 50);\n WindowService.getWindow().addEventListener('storage', this.handleStorageChange);\n }\n componentDidRender() {\n this.windowResizeHandler();\n }\n componentDidLoad() {\n this.updateShowSolrDeprecationBanner();\n }\n connectedCallback() {\n this.subscribeToSecurityChanges();\n this.updateVisibility();\n this.subscribeToNavigationEnd();\n this.subscribeToRuntimeConfigurationChanges();\n this.subscribeToUserPreferencesChange();\n this.subscribeToBeforeMountRouting();\n this.loading = false;\n }\n /**\n * Lifecycle method called when the component is about to be removed from the DOM.\n * Unsubscribes from all subscriptions to prevent memory leaks.\n */\n disconnectedCallback() {\n this.subscriptions.unsubscribeAll();\n }\n render() {\n return (h(Host, { key: '537f76787f912cde68af6cb5b902b76a34d48d3e', class: {\n 'wb-layout': true,\n 'is-embedded': this.isEmbedded,\n 'hide-navbar': !this.showNavbar,\n 'loading': this.loading\n } }, h(\"div\", { key: 'a9e344f05e4862f54952ceb5fc508fa2f93171fb', class: \"default-slot-wrapper\" }, h(\"slot\", { key: '6b90a7bfb37fd49b905ba20f5c802faeef45e4e1', name: \"default\" })), !this.isEmbedded && h(\"div\", { key: 'c93adb078e98811365e46b56b308da99d106e7dd', class: \"wb-header\" }, !this.hideSolrDeprecationBanner &&\n h(\"onto-deprecation-banner\", { key: '4e3bad5818918b4b03048234d4e991dfca7cbe01', class: 'onto-deprecation-banner', onCloseBanner: this.onSolrDeprecationBannerClosedHandler() }, h(\"span\", { key: 'ec2f08da5bfaee597f22f2e4e3613f4bc1754fd3', slot: 'content' }, h(\"translate-label\", { key: 'f08fb3a7214c59392593f3c7f8dcd88139774b19', labelKey: 'deprecation-banner.solr.content' }))), h(\"header\", { key: '7d6ec8141bedae1f11e04a58c299176e9f08f399' }, this.showHeader && h(\"onto-header\", { key: 'd4c8ef991aad7843782abfdf58c87e21569552ec' }))), !this.isEmbedded && this.showNavbar &&\n h(\"nav\", { key: '8eeded07cea3242140bc23f97d93f0623fccdc4a', class: \"wb-navbar\" }, h(\"onto-navbar\", { key: 'cefe1d6a0cac0d39763aa0f20ebd43d3d905debd', ref: this.assignNavbarRef(), \"navbar-collapsed\": this.isLowResolution })), h(\"slot\", { key: '2c3dfbb9dcd6c408fdbfb911ae69e5c0720e1337', name: \"main\" }, h(\"onto-loader\", { key: 'ba0ca75373977a0e5542bf1f8eeea0175dfcfa09', loading: this.loading, targetSelector: 'main', size: 96, messageText: TranslationService.translate('common.loading') })), !this.isEmbedded &&\n h(\"footer\", { key: 'bdfdc37c695169bf4e79ba573c6c05d614648f05', class: \"wb-footer\" }, h(\"onto-footer\", { key: 'e0e227b6fe34133d0ae06163b4f9e4b5b00b5b37' }))));\n }\n // ========================\n // Event Listeners\n // ========================\n /**\n * Event listener for the navbar toggled event. The layout needs to respond properly when the navbar is toggled in\n * order to fit the content.\n * @param event\n */\n onNavbarToggled(event) {\n this.isNavbarCollapsed = event.detail.payload;\n if (this.isNavbarCollapsed) {\n this.hostElement.classList.add('expanded');\n }\n else {\n this.hostElement.classList.remove('expanded');\n }\n }\n /**\n * Event listener for window resize event. We need to handle this in order to allow the navbar to collapse when the\n * window is resized.\n */\n onResize() {\n this.windowResizeObserver();\n }\n onSolrDeprecationBannerClosedHandler() {\n return () => {\n this.userPreferencesService.dismissSolrDeprecationBanner();\n this.updateShowSolrDeprecationBanner();\n };\n }\n // ========================\n // Handlers\n // ========================\n windowResizeHandler() {\n var _a, _b, _c, _d;\n this.isLowResolution = WindowService.getWindow().innerWidth <= WINDOW_WIDTH_FOR_COLLAPSED_NAVBAR;\n const navbar = document.querySelector('.navbar-component');\n if (navbar) {\n const cookieBanner = document.querySelector('.cookie-consent-banner');\n const header = document.querySelector('.wb-header');\n const headerHeight = (_b = (_a = header === null || header === void 0 ? void 0 : header.getBoundingClientRect()) === null || _a === void 0 ? void 0 : _a.height) !== null && _b !== void 0 ? _b : 0;\n const bannerHeight = (_d = (_c = cookieBanner === null || cookieBanner === void 0 ? void 0 : cookieBanner.getBoundingClientRect()) === null || _c === void 0 ? void 0 : _c.height) !== null && _d !== void 0 ? _d : 0;\n navbar.style.height = `calc(100% - ${headerHeight}px - ${bannerHeight}px)`;\n }\n if (!this.isLowResolution && !this.isNavbarCollapsed) {\n this.hostElement.classList.remove('expanded');\n }\n else {\n this.hostElement.classList.add('expanded');\n }\n }\n handleAuthChange(changedKey) {\n var _a;\n if (!changedKey) {\n return;\n }\n if (this.authEvents.includes(changedKey)) {\n const authenticated = this.authStorageService.isAuthenticated();\n if (authenticated) {\n navigate((_a = this.navigationContextService.getPreviousRoute()) !== null && _a !== void 0 ? _a : './');\n }\n else {\n navigate('login');\n }\n WindowService.getWindow().location.reload();\n }\n }\n // ========================\n // Security & Permissions\n // ========================\n subscribeToSecurityChanges() {\n const securityContextService = service(SecurityContextService);\n this.subscriptions.add(securityContextService.onAuthenticatedUserChanged((authenticatedUser) => {\n this.authenticatedUser = authenticatedUser;\n this.updateVisibility();\n }));\n this.subscriptions.add(securityContextService.onSecurityConfigChanged((securityConfig) => {\n this.securityConfig = securityConfig;\n this.updateVisibility();\n }));\n this.subscriptions.add(this.eventService.subscribe(EventName.LOGIN, () => {\n this.setNavbarItemVisibility();\n this.updateVisibility();\n }));\n this.subscriptions.add(this.eventService.subscribe(EventName.LOGOUT, () => {\n this.setNavbarItemVisibility();\n this.updateVisibility();\n navigate('login');\n }));\n }\n subscribeToRuntimeConfigurationChanges() {\n this.subscriptions.add(this.runtimeConfigurationContextService.onRuntimeConfigurationChanged((config) => {\n var _a;\n this.isEmbedded = (_a = config === null || config === void 0 ? void 0 : config.isEmbedded) !== null && _a !== void 0 ? _a : false;\n }));\n }\n updateVisibility() {\n if (!this.authenticationService.isSecurityEnabled()) {\n this.showNavbar = true;\n this.showHeader = true;\n }\n else {\n this.showHeader = this.authenticationService.isAuthenticated() || this.authorizationService.hasFreeAccess();\n this.showNavbar = this.authenticationService.isAuthenticated() || this.authorizationService.hasFreeAccess();\n }\n }\n isAuthenticatedFully() {\n return !this.authenticationService.isSecurityEnabled() || this.authenticationService.isAuthenticated() || this.authorizationService.hasFreeAccess();\n }\n shouldShowMenu(role) {\n return this.isAuthenticatedFully() && this.authorizationService.hasRole(role);\n }\n // ========================\n // Navbar logic\n // ========================\n assignNavbarRef() {\n return (navbar) => {\n this.navbarRef = navbar;\n if (!this.navbarRef) {\n return;\n }\n this.navbarRef.menuItems = WindowService.getPluginRegistry().get(MainMenuExtensionPoint.NAME);\n this.setNavbarItemVisibility();\n };\n }\n setNavbarItemVisibility() {\n var _a, _b, _c;\n if (!((_a = this.navbarRef) === null || _a === void 0 ? void 0 : _a.menuItems)) {\n return;\n }\n // recursively check for children and set their shouldShow property\n const processItem = (item) => {\n var _a;\n item.shouldShow = this.shouldShowMenu(item.role);\n if ((_a = item.children) === null || _a === void 0 ? void 0 : _a.length) {\n item.children.forEach(processItem);\n }\n };\n (_c = (_b = this.navbarRef) === null || _b === void 0 ? void 0 : _b.menuItems) === null || _c === void 0 ? void 0 : _c.forEach(plugin => {\n plugin.items.forEach(processItem);\n });\n // Update the reference to trigger a re-render\n this.navbarRef.menuItems = [...this.navbarRef.menuItems];\n }\n subscribeToNavigationEnd() {\n this.subscriptions.add(this.eventService.subscribe(EventName.NAVIGATION_END, (navigationEndPayload) => {\n this.navigationContextService.updatePreviousRoute(navigationEndPayload.oldUrl);\n // NAVIGATION_END appears to happen in the same tick as BeforeMountRouting, so the loader never gets shown\n setTimeout(() => {\n this.loading = false;\n });\n }));\n }\n subscribeToBeforeMountRouting() {\n this.subscriptions.add(this.applicationLifecycleContextService.onNavigationBeforeMountRouting((payload) => {\n if (payload) {\n this.loading = true;\n }\n }));\n }\n subscribeToUserPreferencesChange() {\n this.subscriptions.add(this.userPreferencesContextService.onUserPreferencesChanged(() => {\n this.updateShowSolrDeprecationBanner();\n }));\n }\n updateShowSolrDeprecationBanner() {\n this.hideSolrDeprecationBanner = this.userPreferencesService.isSolrDeprecationBannerDismissed();\n }\n get hostElement() { return getElement(this); }\n};\nOntoLayout.style = ontoLayoutCss;\n\nexport { OntoLayout as onto_layout };\n","import { Loggers, ServiceProvider, LanguageContextService } from '@ontotext/workbench-api';\n\nfunction sanitizeHTML(html) {\n const element = document.createElement('textarea');\n element.innerHTML = html;\n return element.value;\n}\n\nconst MODULE_NAME = 'SharedComponents';\n/**\n * Logger for the Shared Components module.\n */\nclass LoggerProvider {\n /**\n * Gets the logger instance for the Shared Components module.\n *\n * @returns LoggerService instance for the Shared Components module\n */\n static get logger() {\n return Loggers.getLoggerInstance(MODULE_NAME);\n }\n}\n\n/**\n * Service responsible for translation operations in the component.\n */\nclass TranslationServiceClassDefinition {\n constructor() {\n this.languageContextService = ServiceProvider.get(LanguageContextService);\n this.translationChangedObservers = {};\n this.logger = LoggerProvider.logger;\n // log with background color\n this.defaultBundle = this.languageContextService.getDefaultBundle();\n this.subscribeToBundleChange();\n }\n /**\n * Translates the <code>messageLabelKey</code> with <code>translationParameter</code> and call <code>translationCallback</code> with translation of current language.\n * The <code>translationCallback</code> is called upon subscription and whenever the selected language is changed.\n *\n * @param messageLabelKey - The label key for the translation.\n * @param translationParameter - Parameters, if needed, for translation.\n * @param translationCallback - A function to be called when translating the `messageLabelKey`.\n * @returns A function that, when called, unsubscribes the provided callback from further translation updates.\n */\n onTranslate(messageLabelKey, translationParameter = [], translationCallback = () => { }) {\n this.translationChangedObservers[messageLabelKey] = this.translationChangedObservers[messageLabelKey] || [];\n const observer = { parameters: translationParameter, callback: translationCallback };\n this.translationChangedObservers[messageLabelKey].push(observer);\n translationCallback(this.translate(messageLabelKey, translationParameter));\n return () => {\n const index = this.translationChangedObservers[messageLabelKey].indexOf(observer);\n if (index !== -1) {\n this.translationChangedObservers[messageLabelKey].splice(index, 1);\n }\n };\n }\n /**\n * Translates the provided key using the currently selected language by applying the parameters if\n * provided.\n * @param key The key for the label which needs to be translated.\n * @param parameters Optional parameters which to be applied during the translation.\n */\n translate(key, parameters) {\n return this.translateInLocale(key, parameters);\n }\n /**\n * Translates a given key into the specified locale. If parameters are provided,\n * they will be applied to the translation.\n *\n * @param key - The translation key, which can be dot-separated for nested translations.\n * @param parameters - Optional parameters to be substituted into the translation string.\n * @returns The translated string with parameters applied if available, or the key itself if not found.\n */\n translateInLocale(key, parameters) {\n // Attempt to retrieve the translation from the specified locale's bundle.\n let translation = this.translateFromBundle(this.currentBundle, key);\n // If not found, fall back to the default language bundle.\n if (!translation) {\n translation = this.translateFromBundle(this.defaultBundle, key);\n }\n // If translation was found, apply any parameters provided and return the result.\n if (translation) {\n translation = this.applyParameters(translation, parameters);\n return sanitizeHTML(translation);\n }\n this.logger.warn(`Missing translation for key: [${key}]`);\n return key;\n }\n /**\n * Retrieves a translation from a specified translation bundle using the given key.\n * If the key represents a nested JSON path, it attempts to resolve the key as such.\n *\n * @param bundle - The translation bundle for the specified locale.\n * @param key - The key to translate, which may be a simple key or dot-separated for nested keys.\n * @returns The translation string if found, or `undefined` if not available.\n */\n translateFromBundle(bundle, key) {\n if (!bundle) {\n return undefined;\n }\n // Try to retrieve the translation directly if it is defined as a whole string,\n // for instance as \"some_function.btn.label\".\n let translation = bundle[key];\n // If not found, attempt to retrieve the translation if it is defined as a JSON object.\n if (typeof translation !== 'string') {\n translation = this.translateAsJsonObject(bundle, key);\n }\n return translation;\n }\n /**\n * Resolves a nested translation key by treating it as a path in a JSON object.\n * For example, if the key is \"some.key.path\", this method will navigate through\n * the JSON object structure to retrieve the value at that path.\n *\n * @param bundle - The translation bundle containing nested keys.\n * @param key - The dot-separated key representing the path to the translation.\n * @returns The translation string if found, or `undefined` if the path does not exist.\n */\n translateAsJsonObject(bundle, key) {\n if (!key) {\n return;\n }\n let path = key.split('.');\n return this.getTranslation(bundle, path);\n }\n /**\n * Recursively navigates through a JSON object based on a path array to retrieve\n * a translation string. Each element in the path array represents a nested key.\n *\n * @param jsonObject - The current JSON object or nested object being searched.\n * @param path - An array representing the path to the translation, where each element is a key.\n * @returns The translation string if found, or `undefined` if the path does not exist.\n */\n getTranslation(jsonObject, path) {\n // Stop the recursion if path or reach the inner element\n if (!path || !jsonObject) {\n return undefined;\n }\n const jsonOrTranslation = jsonObject[path.splice(0, 1)[0]];\n if (path.length === 0) {\n return jsonOrTranslation;\n }\n if (typeof jsonOrTranslation !== 'string') {\n // continue if the inner element is not reached.\n if (path.length > 0) {\n return this.getTranslation(jsonOrTranslation, path);\n }\n return jsonOrTranslation;\n }\n return undefined;\n }\n applyParameters(translation, parameters) {\n if (parameters) {\n return parameters.reduce(\n // replace all occurrence of parameter key with parameter value.\n (translation, parameter) => TranslationServiceClassDefinition.replaceAll(translation, parameter), translation);\n }\n return translation;\n }\n static replaceAll(translation, parameter) {\n return parameter ? translation.split(`{{${parameter.key}}}`).join(parameter.value) : translation;\n }\n notifyTranslationsChanged() {\n Object.keys(this.translationChangedObservers).forEach((eventName) => {\n const observers = this.translationChangedObservers[eventName] || [];\n observers.forEach((observer) => observer.callback(this.translate(eventName, observer.parameters)));\n });\n }\n subscribeToBundleChange() {\n this.languageChangeSubscription = this.languageContextService.onLanguageBundleChanged((bundle) => {\n if (bundle) {\n this.currentBundle = bundle;\n this.notifyTranslationsChanged();\n }\n });\n }\n destroy() {\n if (this.languageChangeSubscription) {\n this.languageChangeSubscription();\n }\n }\n}\nconst TranslationService = new TranslationServiceClassDefinition();\n\nexport { LoggerProvider as L, TranslationService as T, sanitizeHTML as s };\n"],"names":["debounce","func","wait","timer","args","clearTimeout","setTimeout","apply","this","OntoLayout","constructor","hostRef","registerInstance","authenticationService","service","AuthenticationService","authorizationService","AuthorizationService","navigationContextService","NavigationContextService","authStorageService","AuthenticationStorageService","runtimeConfigurationContextService","RuntimeConfigurationContextService","eventService","EventService","applicationLifecycleContextService","ApplicationLifecycleContextService","userPreferencesService","UserPreferencesService","userPreferencesContextService","UserPreferencesContextService","fullJwtKey","StorageKey","GLOBAL_NAMESPACE","NAMESPACE","jwtKey","fullAuthenticatedKey","authenticatedKey","authEvents","isLowResolution","showHeader","isAuthenticatedFully","showNavbar","isEmbedded","loading","hideSolrDeprecationBanner","subscriptions","SubscriptionList","isNavbarCollapsed","handleStorageChange","event","LocalStorageSubscriptionHandlerService","handleAuthChange","key","windowResizeObserver","windowResizeHandler","WindowService","getWindow","addEventListener","componentDidRender","componentDidLoad","updateShowSolrDeprecationBanner","connectedCallback","subscribeToSecurityChanges","updateVisibility","subscribeToNavigationEnd","subscribeToRuntimeConfigurationChanges","subscribeToUserPreferencesChange","subscribeToBeforeMountRouting","disconnectedCallback","unsubscribeAll","render","h","Host","class","name","onCloseBanner","onSolrDeprecationBannerClosedHandler","slot","labelKey","ref","assignNavbarRef","targetSelector","size","messageText","TranslationService","translate","onNavbarToggled","detail","payload","hostElement","classList","add","remove","onResize","dismissSolrDeprecationBanner","_a","_b","_c","_d","innerWidth","navbar","document","querySelector","cookieBanner","header","headerHeight","getBoundingClientRect","height","bannerHeight","style","changedKey","includes","isAuthenticated","navigate","getPreviousRoute","location","reload","securityContextService","SecurityContextService","onAuthenticatedUserChanged","authenticatedUser","onSecurityConfigChanged","securityConfig","subscribe","EventName","LOGIN","setNavbarItemVisibility","LOGOUT","onRuntimeConfigurationChanged","config","isSecurityEnabled","hasFreeAccess","shouldShowMenu","role","hasRole","navbarRef","menuItems","getPluginRegistry","get","MainMenuExtensionPoint","NAME","processItem","item","shouldShow","children","length","forEach","plugin","items","NAVIGATION_END","navigationEndPayload","updatePreviousRoute","oldUrl","onNavigationBeforeMountRouting","onUserPreferencesChanged","isSolrDeprecationBannerDismissed","getElement","sanitizeHTML","html","element","createElement","innerHTML","value","LoggerProvider","logger","Loggers","getLoggerInstance","TranslationServiceClassDefinition","languageContextService","ServiceProvider","LanguageContextService","translationChangedObservers","defaultBundle","getDefaultBundle","subscribeToBundleChange","onTranslate","messageLabelKey","translationParameter","translationCallback","observer","parameters","callback","push","index","indexOf","splice","translateInLocale","translation","translateFromBundle","currentBundle","applyParameters","warn","bundle","translateAsJsonObject","path","split","getTranslation","jsonObject","jsonOrTranslation","reduce","parameter","replaceAll","join","notifyTranslationsChanged","Object","keys","eventName","languageChangeSubscription","onLanguageBundleChanged","destroy"],"sourceRoot":""}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export const __webpack_esm_id__=44906;export const __webpack_esm_ids__=[44906,62062,67262,81417,83196];export const __webpack_esm_modules__={67262(e,o,t){var r=t(81417);angular.module("graphdb.framework.core.directives.validate-url",[]).directive("validateUrl",function(){return{restrict:"A",require:"ngModel",link:function(e,o,t,n){n.$validators.validUrl=function(e,o){if(n.$isEmpty(o))return"false"!==t.allowEmpty;if(!r.r.isValidUrl(o))return!1;if(t.exclude&&!r.r.doesNotContain(o,t.exclude))return!1;if(t.excludeProtocol){const e=t.excludeProtocol.split(",");if(!r.r.doesNotUseProtocol(o,e))return!1}return!0}}}})},44906(e,o,t){t.d(o,{W:()=>l});var r=t(83196),n=t(41767),i=(t(62062),t(62831)),a=t(57154),s=t(82385);const c=1e4,l=function(e){let o=e.lastIndexOf("/");-1===o&&(o=e.lastIndexOf("\\"));let t=e;return-1!==o&&(t=t.substring(o+1)),t},p=function(e){e&&Object.keys(e).forEach(o=>{const t=e[o];if(t&&"string"==typeof t.value){const r=parseFloat(e[o].value);!isNaN(r)&&u[o]&&(e[o].value=Number.isInteger(r)?parseInt(t.value,10):r,t.isNumber=!0)}})},d=function(){const e=document.getElementById("shaclOptions");if(e){const o=e.getAttribute("aria-expanded");if(o&&"true"===o)return"ri-arrow-down-s-line"}return"ri-arrow-right-s-line"},u={queryLimitResults:"invalid.query.limit",queryTimeout:"invalid.query.timeout",validationResultsLimitTotal:"invalid.validation.results.limit.total",validationResultsLimitPerConstraint:"invalid.validation.results.limit.per.constraint",joinWorkerThreads:"invalid.join.worker.threads",leftJoinWorkerThreads:"invalid.left.join.worker.threads",unionWorkerThreads:"invalid.union.worker.threads",boundJoinBlockSize:"invalid.bound.join.block.size",entityIndexSize:"invalid.entity.index.size"},f=function(e,o){if(!e)return"";const t=Object.keys(e).find(o=>{const t=e[o];return t.isNumber&&!r.nj.test(t.value)});return t&&u[t]?o.instant(u[t]):""},m=function(e){return`https://graphdb.ontotext.com/documentation/${e.productShortVersion}`},y=function(e){return e.getLocations().then(e=>e.filter(e=>e.isGraphDBLocation()&&!e.errorMsg&&!e.degradedReason))};function g(e,o,t,s,c,l,p,d,u,f,m){const y=(0,a.service)(a.GuidesService),g=(0,a.service)(a.AuthorizationService);e.RemoteLocationType=i.Il,e.loader=!0,e.locations=[],e.isLocationInactive=function(o){return!o.active||!e.hasActiveLocation()};const h=m.defer();function v(){return c.getLocations(h).then(o=>(e.locations=o,o)).finally(()=>e.loader=!1)}e.getLocalLocation=(o,t)=>{const r=e.locations.filter(e=>{let r=!0;return t&&(r=e.locationType===t),r&&e.local===o});return e.isRepoManager()?r:r.filter(o=>e.getRepositoriesFromLocation(o.uri)?.length>0)},e.hasAnyRemoteLocation=(o,t)=>t.some(t=>e.getLocalLocation(o,t).length>0),e.hasActiveLocation=function(){return c.hasActiveLocation()},e.getActiveLocation=function(){return c.getActiveLocation()},e.getLocationError=function(){return c.getLocationError()},e.getDegradedReason=function(){return c.getDegradedReason()},e.getRepositories=function(){return c.getRepositories()},e.isRepoActive=function(e){return c.isRepoActive(e)},e.deleteLocation=function(o){l.openSimpleModal({title:f.instant("location.confirm.detach"),message:f.instant("location.confirm.detach.warning",{uri:o}),warning:!0}).result.then(function(){e.loader=!0,c.deleteLocation(o).finally(()=>v())})},e.addLocationHttp=function(o){e.loader=!0,p.addLocation(o).success(function(){c.init()}).error(function(e){const o=getError(e);s.error(o,f.instant("common.error"))}).finally(()=>v())},e.addLocation=()=>{e.openRemoteLocationDialog()},e.editLocation=o=>{void 0===o.locationType&&(o.locationType=i.Il.GRAPH_DB),e.openRemoteLocationDialog(o)},e.openRemoteLocationDialog=o=>{t.open({templateUrl:"js/angular/repositories/templates/manage-remote-location-dialog.template.html",windowClass:"addLocationDialog",controller:"ManageRemoteLocationDialogController",resolve:{data:()=>({remoteLocation:o})}}).result.then(t=>{o?e.editLocationHttp(t):e.addLocationHttp(t)})},e.editLocationHttp=function(o){e.loader=!0,p.editLocation(o).success(function(){c.init()}).error(function(e){const o=getError(e);s.error(o,f.instant("common.error"))}).finally(()=>v())},e.setRepository=function(e){c.setRepository(e)},e.deleteRepository=function(o){l.openSimpleModal({title:f.instant("common.confirm.delete"),message:(0,n.Gz)(f.instant("delete.repo.warning.msg",{repositoryId:o.id})),warning:!0}).result.then(function(){e.loader=!0,c.deleteRepository(o).finally(()=>{v(),e.loader=!1}),function(e){const o=`dependencies-selectedGraph-${e.id}`,t=`classHierarchy-selectedGraph-${e.id}`;angular.forEach(d.keys(),function(e){(e.startsWith(t)||e.startsWith(o))&&d.remove(e)})}(o)})},e.restartRepository=function(o){l.openSimpleModal({title:f.instant("confirm.restart.repo"),message:(0,n.Gz)(f.instant("confirm.restart.repo.warning.msg",{repositoryId:o.id})),warning:!0}).result.then(function(){e.loader=!0,c.restartRepository(o).finally(()=>v())})},e.toggleDefaultRepository=function(o){e.getDefaultRepository()===o?c.setDefaultRepository(null):c.setDefaultRepository(o)},e.getDefaultRepository=function(){return c.getDefaultRepository()},e.getRepositoryDownloadLink=function(e){let o=`rest/repositories/${e.id}${e.type===r.VH.ontop?"/download-zip":"/download-ttl"}?location=${e.location}`;const t=(0,a.service)(a.AuthenticationStorageService).getAuthToken().getValue();return t&&(o=`${o}&authToken=${encodeURIComponent(t)}`),o},e.copyToClipboard=function(e){l.openCopyToClipboardModal(e)},e.fromFile=function(){t.open({templateUrl:"js/angular/templates/modal/upload-repository-config.html",controller:"UploadRepositoryConfigCtrl"}).result.then(function(){c.init()})},e.openActiveLocationSettings=function(){t.open({templateUrl:"js/angular/settings/modal/location-settings.html",controller:"ActiveLocationSettingsCtrl"})},v();const R=u(function(){y.isActive()&&!o.guidePaused||(c.initQuick(),v())},5e3);e.$on("$destroy",function(){u.cancel(R),h&&h.resolve()}),e.getRepositoriesFromLocation=function(o){const t=c.getRepositoriesFromLocation(o)||[];return e.isRepoManager()?t:t.filter(e=>g.canReadRepo(e)||g.canReadGqlRepo(e))},e.isRepoManager=()=>g.isRepoManager(),e.canManageRepo=e=>g.canManageRepo(e)}function h(e,o,t,r,n){e.upload=function(o){o&&o.length&&(e.uploadFile=o[0])},e.ok=function(){e.uploadFile&&(e.uploadFileLoader=!0,t.upload({url:"rest/repositories",method:"POST",data:{config:e.uploadFile}}).success(function(){e.uploadFileLoader=!1,o.close()}).error(function(o){const t=getError(o);r.error(t,n.instant("common.error")),e.uploadFileLoader=!1}))},e.cancel=function(){o.dismiss("cancel")}}function v(e,o,t,r,n){e.newLocation={uri:"",authType:"none",username:"",password:"",active:!1},e.docBase=m(r),e.isValidLocation=function(){return(e.newLocation.uri.length<6||0===e.newLocation.uri.indexOf("http:")||0===e.newLocation.uri.indexOf("https:"))&&e.newLocation.uri.indexOf("/repositories")<=-1},e.ok=function(){e.newLocation?o.close(e.newLocation):t.error(n.instant("location.cannot.be.empty.error"))},e.cancel=function(){o.dismiss("cancel")}}function R(e,o,t,r){e.editedLocation=_.cloneDeep(t),e.docBase=m(r),e.ok=function(){o.close(e.editedLocation)},e.cancel=function(){o.dismiss("cancel")}}function I(e,o){e.repositoryTypes=r.VH,e.chooseRepositoryType=function(e){o.path(`${o.path()}/${e}`)}}function L(e,o,t,n,i,a,l,u,m,g,h){function v(e){switch(e){case r.VH.graphdbRepo:o.pageTitle=g.instant("view.create.repo.title",{repoType:"GraphDB"});break;case r.VH.ontop:o.pageTitle=g.instant("view.create.repo.title",{repoType:"Ontop Virtual SPARQL"});break;case r.VH.fedx:o.pageTitle=g.instant("view.create.repo.title",{repoType:"FedX Virtual SPARQL"})}}var R;o.rulesets=r.Ds.slice(),o.repositoryTypes=r.VH,o.params=u,o.repositoryType=u.repositoryType,o.enable=!0,o.entityIndexSizeMin=c,o.documentationUrlForStorageEncryption=s.m.getDocumentationUrl(h.productShortVersion,"creating-a-repository.html#using-workbench"),o.encryptInput={hovered:!1},o.loader=!0,o.pageTitle=g.instant("view.create.repo.title"),o.repositoryInfo={id:"",params:{},title:"",type:"",location:""},y(n).then(e=>{o.locations=e}),o.changedLocation=function(){o.$broadcast("changedLocation")},o.getConfig=function(e){m.getRepositoryConfiguration(e).then(function(e){const t=e.data;var r;o.repositoryInfo.params=t.params,o.repositoryInfo.type=t.type,p(o.repositoryInfo.params),(r=o.repositoryInfo.params)&&r.member&&(r.member.value=[]),o.loader=!1,a(function(){angular.element(document).find("#id").focus()},50)}).catch(function(e){const r=getError(e);t.error(r,g.instant("common.error")),o.loader=!1})},o.repositoryType&&(function(e){return o.isEnterprise()&&e===r.VH.graphdbRepo}(R=o.repositoryType)||function(e){return!o.isFreeEdition()&&!o.isEnterprise()&&e===r.VH.graphdbRepo}(R)||function(e){return o.isFreeEdition()&&e===r.VH.graphdbRepo}(R)||function(e){return e===r.VH.ontop}(R)||function(e){return e===r.VH.fedx}(R))?(o.repositoryInfo.type=o.repositoryType,o.getConfig(o.repositoryType),v(o.repositoryType)):i.path("/repository/create"),o.hasActiveLocation=function(){return n.hasActiveLocation()},o.activeLocation=function(){return n.getActiveLocation()};let I=!1;o.uploadRuleset=function(e){e&&e.length&&(o.uploadFile=e[0],o.uploadFileLoader=!0,l.upload({url:"rest/repositories/ruleset/upload",data:{ruleset:o.uploadFile,location:o.repositoryInfo.location}}).progress(function(e){}).success(function(e){if(e.success){I=!1;const t=o.uploadFile.name,r={id:e.fileLocation,name:"Custom: "+t};o.rulesetPie?o.rulesets[0]=r:o.rulesets.unshift(r),o.rulesetPie=e.fileLocation,o.rulesetPieFile=t,o.repositoryInfo.params.ruleset.value=o.rulesetPie}else t.error(e.errorMessage),I=!0,o.uploadFile="";o.uploadFileLoader=!1}).error(function(e){const r=getError(e);t.error(r,g.instant("common.error")),o.uploadFile="",o.uploadFileLoader=!1,I=!0}))},o.noMembersError=function(){t.error(g.instant("fedx.create.repo.no.members.warning"))},o.goBackToPreviousLocation=function(){const e=i.search().previous;if(e){i.search("previous",null);const o="string"==typeof e&&"/"===e.charAt(0)?e:"/"+e;i.url(o)}else i.path("/repository")},o.createRepoHttp=function(){o.loader=!0,m.createRepository(o.repositoryInfo).then(function(){return t.success(g.instant("created.repo.success.msg",{repoId:o.repositoryInfo.id})),n.init()}).then(()=>o.goBackToPreviousLocation()).catch(function(e){const o=getError(e.data);t.error(o,g.instant("common.error"))}).finally(()=>{o.loader=!1})},o.createRepo=function(){if(!o.repositoryInfo.id)return void t.error(g.instant("empty.repoid.warning"));o.isInvalidRepoName=!r.vH.test(o.repositoryInfo.id),o.isInvalidEntityIndexSizeMin=o.repositoryInfo.params.entityIndexSize?.value<c;const e=f(o.repositoryInfo.params,g);I?t.error(g.instant("invalid.ruleset.file.error")):o.isInvalidRepoName?t.error(g.instant("wrong.repo.name.error")):"fedx"===o.repositoryType&&0===o.repositoryInfo.params.member.value.length?o.noMembersError():e?t.error(e):o.isInvalidEntityIndexSizeMin?t.error(g.instant("repo.error.entityIndex.min")):o.createRepoHttp()},o.rulesetWarning=function(){const e=o.repositoryInfo.params;return void 0===e||void 0===e.ruleset||void 0===e.disableSameAs?"":0===e.ruleset.value.indexOf("owl")&&"true"===e.disableSameAs.value?g.instant("repoTooltips.rulesetWarnings.needsSameAs"):0===e.ruleset.value.indexOf("rdfs")&&"false"===e.disableSameAs.value?g.instant("repoTooltips.rulesetWarnings.doesntNeedSameAs"):e.ruleset.value===o.rulesetPie?g.instant("repoTooltips.rulesetWarnings.customRuleset"):""},o.getShaclOptionsClass=function(){return d()},o.autofocusId="autofocus";const L=e.$on("$translateChangeSuccess",()=>{v(o.repositoryType)});o.$on("$destroy",()=>{L()})}function $(e,o,t,r,n,i,a,s){e.dialogTitle=a||i.instant("update.file.content.header"),r&&t.getRepositoryFileContent(r,s).success(function(o){e.fileContent=o}).error(function(e){const o=getError(e);n.error(o,i.instant("common.error"))}),e.ok=function(){o.close({content:e.fileContent,fileLocation:r})},e.cancel=function(){o.dismiss("cancel")}}function w(e,o,t,i,a,s,u,m,g,h){o.rulesets=r.Ds.slice(),o.repositoryTypes=r.VH,o.entityIndexSizeMin=c,o.editRepoPage=!0,o.canEditRepoId=!1,o.isRepoInCluster=!0,o.params=t,o.loader=!0,o.repositoryInfo={},o.repositoryInfo.id=o.params.repositoryId,o.repositoryInfo.location=o.params.location,o.repositoryInfo.restartRequested=!1,o.repositoryType="",o.saveRepoId=o.params.repositoryId,o.pageTitle=g.instant("view.edit.repo.title",{repositoryId:o.params.repositoryId}),o.hasActiveLocation=function(){return a.hasActiveLocation()},o.$watch(o.hasActiveLocation,function(){if(o.hasActiveLocation){let e;y(a).then(e=>(o.locations=e,m.getRepository(o.repositoryInfo))).then(t=>(e=t,h.monitorActiveOperations(o.repositoryInfo.id))).then(e=>{o.isRepoInCluster=e.hasClusterOperation()}).catch(t=>e?Promise.resolve():(o.repositoryInfo=void 0,Promise.reject(t))).then(()=>{(e=>{const t=e.data;if(angular.isDefined(t.params.ruleset)){let e=!1;if(angular.forEach(o.rulesets,function(o){o.id===t.params.ruleset.value&&(e=!0)}),t.params.ruleset&&!e){const e=l(t.params.ruleset.value);o.rulesets.unshift({id:t.params.ruleset.value,name:"Custom: "+e})}}o.repositoryInfo=t,o.setRepositoryType(t.type),p(o.repositoryInfo.params),o.repositoryInfo.saveId=o.saveRepoId,o.loader=!1})(e)}).catch(e=>{const r=e.data,a=e.status,c=t.repositoryId;let l;l=404===a&&"system"!==c?(0,n.Gz)(g.instant("edit.repo.error.not.exists",{repositoryId:c})):404===a&&"system"===c?(0,n.Gz)(g.instant("edit.system.repo.warning")):getError(r),i.error(l,g.instant("common.error"),{allowHtml:!0}),404===a?setTimeout(function(){o.loader=!1,s.path("repository")},1e3):o.loader=!1})}}),o.setRepositoryType=function(e){o.repositoryType=e},o.noMembersError=function(){i.error(g.instant("fedx.create.repo.no.members.warning"))},o.editRepoHttp=function(){o.loader=!0,m.editRepository(o.repositoryInfo.saveId,o.repositoryInfo).success(function(){i.success(g.instant("edit.repo.success.msg",{saveId:o.repositoryInfo.saveId})),a.init().finally(()=>o.goBackToPreviousLocation()),o.repositoryInfo.saveId===o.repositoryInfo.id&&o.repositoryInfo.restartRequested&&a.restartRepository(o.repositoryInfo)}).error(function(e){const t=getError(e);i.error(t,g.instant("common.error")),o.loader=!1})},o.editRepository=function(){o.isInvalidRepoName=!r.vH.test(o.repositoryInfo.id),o.isInvalidEntityIndexSizeMin=o.repositoryInfo.params.entityIndexSize?.value<c;const e=f(o.repositoryInfo.params,g);let t=(0,n.Gz)(g.instant("edit.repo.save.changes.msg",{repoId:o.repositoryInfo.id}));o.repositoryInfo.saveId!==o.repositoryInfo.id?t+=(0,n.Gz)(g.instant("edit.repo.rename.changes.msg")):o.repositoryInfo.restartRequested?t+=(0,n.Gz)(g.instant("edit.repo.restart.requested.msg")):t+=(0,n.Gz)(g.instant("edit.repo.restart.needed.msg")),o.isInvalidRepoName?i.error(g.instant("wrong.repo.name.error")):"fedx"===o.repositoryType&&0===o.repositoryInfo.params.member.value.length?o.noMembersError():e?i.error(e):o.isInvalidEntityIndexSizeMin?i.error(g.instant("repo.error.entityIndex.min")):u.openSimpleModal({title:g.instant("common.confirm.save"),message:t,warning:!0}).result.then(function(){o.editRepoHttp()})},o.editRepositoryId=function(){const e=(0,n.Gz)(g.instant("edit.repo.id.warning.msg"));u.openSimpleModal({title:g.instant("confirm.enable.edit"),message:e,warning:!0}).result.then(function(){o.canEditRepoId=!0})},o.goBackToPreviousLocation=function(){angular.isDefined(t.previous)?(delete s.$$search.previous,s.path("/")):s.path("/repository")},o.getShaclOptionsClass=function(){return d()};const v=e.$on("$translateChangeSuccess",()=>{o.pageTitle=g.instant("view.edit.repo.title",{repositoryId:o.params.repositoryId})});o.$on("$destroy",()=>{v()})}angular.module("graphdb.framework.repositories.controllers",["ngCookies","ui.bootstrap","graphdb.framework.core.services.repositories","graphdb.framework.utils.localstorageadapter","toastr","ngFileUpload","graphdb.framework.repositories.controllers.manage-remote-location-dialog"]).controller("LocationsAndRepositoriesCtrl",g).controller("AddLocationCtrl",v).controller("EditLocationCtrl",R).controller("ChooseRepositoryCtrl",I).controller("AddRepositoryCtrl",L).controller("EditRepositoryCtrl",w).controller("EditRepositoryFileCtrl",$).controller("UploadRepositoryConfigCtrl",h),g.$inject=["$scope","$rootScope","$uibModal","toastr","$repositories","ModalService","LocationsRestService","LocalStorageAdapter","$interval","$translate","$q"],h.$inject=["$scope","$uibModalInstance","Upload","toastr","$translate"],v.$inject=["$scope","$uibModalInstance","toastr","productInfo","$translate"],R.$inject=["$scope","$uibModalInstance","location","productInfo"],I.$inject=["$scope","$location"],L.$inject=["$rootScope","$scope","toastr","$repositories","$location","$timeout","Upload","$routeParams","RepositoriesRestService","$translate","productInfo"],$.$inject=["$scope","$uibModalInstance","RepositoriesRestService","file","toastr","$translate","dialogTitle","location"],w.$inject=["$rootScope","$scope","$routeParams","toastr","$repositories","$location","ModalService","RepositoriesRestService","$translate","MonitoringRestService"]},62062(e,o,t){var r=t(62831);function n(e,o,t,n){e.remoteLocation=n.remoteLocation?new r.TP({...n.remoteLocation}):new r.TP,e.RemoteLocationType=r.Il,e.RemoteLocationAuthType=r.Qk,e.isEdit=!!n.remoteLocation,e.docBase=`https://graphdb.ontotext.com/documentation/${t.productShortVersion}`,e.ok=()=>{e.remoteLocationForm.$pristine||e.remoteLocationForm.$invalid||o.close(e.remoteLocation)},e.cancel=()=>{o.dismiss("cancel")},e.onLocationTypeChanged=()=>{[r.Il.ONTOPIC,r.Il.SPARQL].includes(e.remoteLocation.locationType)?e.remoteLocation.authType=r.Qk.BASIC:e.remoteLocation.authType=r.Qk.NONE}}t(67262),angular.module("graphdb.framework.repositories.controllers.manage-remote-location-dialog",["graphdb.framework.core.directives.validate-url"]).controller("ManageRemoteLocationDialogController",n),n.$inject=["$scope","$uibModalInstance","productInfo","data"]},83196(e,o,t){t.d(o,{Ds:()=>r,VH:()=>n,nj:()=>a,vH:()=>i});const r=[{id:"empty",name:"No inference"},{id:"rdfs-optimized",name:"RDFS (Optimized)"},{id:"rdfs",name:"RDFS"},{id:"rdfsplus-optimized",name:"RDFS-Plus (Optimized)"},{id:"owl-horst-optimized",name:"OWL-Horst (Optimized)"},{id:"owl-horst",name:"OWL-Horst"},{id:"owl2-ql-optimized",name:"OWL2-QL (Optimized)"},{id:"owl2-ql",name:"OWL2-QL"},{id:"owl-max-optimized",name:"OWL-Max (Optimized)"},{id:"owl-max",name:"OWL-Max"},{id:"owl2-rl-optimized",name:"OWL2-RL (Optimized)"},{id:"owl2-rl",name:"OWL2-RL"}],n={graphdbRepo:"graphdb",free:"free",eeWorker:"worker",eeMaster:"master",ontop:"ontop",se:"se",fedx:"fedx"},i=new RegExp("^[a-zA-Z0-9-_]+$"),a=new RegExp("^[0-9]+$")},81417(e,o,t){t.d(o,{r:()=>i});const r=/^(h|ht|htt|http|https|http:|https:|http:\/|https:\/|http:\/\/|https:\/\/|https?:\/\/[\S]*)$/i,n=/^(f|ft|ftp|ftps|ftp:|ftps:|ftp:\/|ftps:\/|ftp:\/\/|ftps:\/\/[\S]*)$/i;class i{static isValidUrl(e){return r.test(e)||n.test(e)}static doesNotContain(e,o){return!new RegExp(o).test(e)}static doesNotUseProtocol(e,o){return!new RegExp("^("+o.join("|")+")://","i").test(e)}}}};
|
|
2
|
+
//# sourceMappingURL=44906.3d40209be900c399a67d.bundle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"44906.3d40209be900c399a67d.bundle.js","mappings":"yKA+DAA,QACKC,OAAO,iDAHI,IAIXC,UAAU,cAEf,WACI,MAAO,CACHC,SAAU,IACVC,QAAS,UACTC,KAAM,SAAUC,EAAOC,EAASC,EAAMC,GAClCA,EAAKC,YAAYC,SAAW,SAAUC,EAAYC,GAE9C,GAAIJ,EAAKK,SAASD,GACd,MAA2B,UAApBL,EAAKO,WAGhB,IAAKC,EAAAA,EAASC,WAAWJ,GACrB,OAAO,EAGX,GAAIL,EAAKU,UAAYF,EAAAA,EAASG,eAAeN,EAAWL,EAAKU,SACzD,OAAO,EAGX,GAAIV,EAAKY,gBAAiB,CACtB,MAAMC,EAAoBb,EAAKY,gBAAgBE,MAAM,KACrD,IAAKN,EAAAA,EAASO,mBAAmBV,EAAWQ,GACxC,OAAO,CAEf,CACA,OAAO,CACX,CACJ,EAER,E,sGC/EA,MAAMG,EAAwB,IAEjBC,EAAc,SAASC,GAChC,IAAIC,EAAUD,EAAKE,YAAY,MACd,IAAbD,IACAA,EAAUD,EAAKE,YAAY,OAE/B,IAAIC,EAAOH,EAIX,OAHiB,IAAbC,IACAE,EAAOA,EAAKC,UAAUH,EAAU,IAE7BE,CACX,EAEME,EAA4B,SAASC,GAClCA,GAILC,OAAOC,KAAKF,GAAQG,QAASC,IACzB,MAAMC,EAAQL,EAAOI,GACrB,GAAIC,GAAgC,iBAAhBA,EAAMC,MAAoB,CAC1C,MAAMC,EAAiBC,WAAWR,EAAOI,GAAKE,QACzCG,MAAMF,IAAmBG,EAAsBN,KAChDJ,EAAOI,GAAKE,MAAQK,OAAOC,UAAUL,GAAkBM,SAASR,EAAMC,MAAO,IAAMC,EAEnFF,EAAMS,UAAW,EAEzB,GAER,EAQMC,EAAuB,WACzB,MAAMC,EAAgBC,SAASC,eAAe,gBAE9C,GAAIF,EAAe,CACf,MAAMG,EAAiBH,EAAcI,aAAa,iBAClD,GAAID,GAAqC,SAAnBA,EAClB,MAAO,sBAEf,CACA,MAAO,uBACX,EAEMT,EAAwB,CAC1BW,kBAAmB,sBACnBC,aAAc,wBACdC,4BAA6B,yCAC7BC,oCAAqC,kDACrCC,kBAAmB,8BACnBC,sBAAuB,mCACvBC,mBAAoB,+BACpBC,mBAAoB,gCACpBC,gBAAiB,6BAGfC,EAAuB,SAAS9B,EAAQ+B,GAC1C,IAAK/B,EACD,MAAO,GAGX,MAAMgC,EAAa/B,OAAOC,KAAKF,GAAQiC,KAAM7B,IACzC,MAAMC,EAAQL,EAAOI,GACrB,OAAOC,EAAMS,WAAaoB,EAAAA,GAAeC,KAAK9B,EAAMC,SAGxD,OAAO0B,GAActB,EAAsBsB,GACrCD,EAAWK,QAAQ1B,EAAsBsB,IACzC,EACV,EAEMK,EAAa,SAASC,GACxB,MAAO,8CAA8CA,EAAYC,qBACrE,EAUMC,EAAuB,SAASC,GAElC,OAAOA,EAAcC,eAAeC,KAAMC,GAA8BA,EAV1DC,OAAQC,GAAaA,EAASC,sBAAwBD,EAASE,WAAaF,EAASG,gBAWvG,EAyBA,SAASC,EAA6BC,EAAQC,EAAYC,EAAWC,EAAQb,EAAec,EAAcC,EACtGC,EAAqBC,EAAW3B,EAAY4B,GAC5C,MAAMC,GAAgBC,EAAAA,EAAAA,SAAQC,EAAAA,eACxBC,GAAuBF,EAAAA,EAAAA,SAAQG,EAAAA,sBACrCb,EAAOc,mBAAqBA,EAAAA,GAC5Bd,EAAOe,QAAS,EAIhBf,EAAOP,UAAY,GAEnBO,EAAOgB,mBAAqB,SAASrB,GACjC,OAAQA,EAASsB,SAAWjB,EAAOkB,mBACvC,EAEA,MAAMC,EAAkCX,EAAGY,QAE3C,SAAS7B,IACL,OAAOD,EAAcC,aAAa4B,GAC7B3B,KAAMC,IACHO,EAAOP,UAAYA,EACZA,IAEV4B,QAAQ,IAAMrB,EAAOe,QAAS,EACvC,CAEAf,EAAOsB,iBAAmB,CAACC,EAAOC,KAC9B,MAAMC,EAAsBzB,EAAOP,UAAUC,OAAQC,IACjD,IAAI+B,GAAoB,EAIxB,OAHIF,IACAE,EAAoB/B,EAAS6B,eAAiBA,GAE3CE,GAAqB/B,EAAS4B,QAAUA,IAInD,OAAIvB,EAAO2B,gBACAF,EAKJA,EAAoB/B,OAAQC,GAAaK,EAAO4B,4BAA4BjC,EAASkC,MAAMC,OAAS,IAG/G9B,EAAO+B,qBAAuB,CAACR,EAAOS,IAC3BA,EAAcC,KAAMT,GAAiBxB,EAAOsB,iBAAiBC,EAAOC,GAAcM,OAAS,GAGtG9B,EAAOkB,kBAAoB,WACvB,OAAO5B,EAAc4B,mBACzB,EAEAlB,EAAOkC,kBAAoB,WACvB,OAAO5C,EAAc4C,mBACzB,EAEAlC,EAAOmC,iBAAmB,WACtB,OAAO7C,EAAc6C,kBACzB,EAEAnC,EAAOoC,kBAAoB,WACvB,OAAO9C,EAAc8C,mBACzB,EAEApC,EAAOqC,gBAAkB,WACrB,OAAO/C,EAAc+C,iBACzB,EAEArC,EAAOsC,aAAe,SAASC,GAC3B,OAAOjD,EAAcgD,aAAaC,EACtC,EAGAvC,EAAOwC,eAAiB,SAASX,GAC7BzB,EAAaqC,gBAAgB,CACzBC,MAAO9D,EAAWK,QAAQ,2BAC1B0D,QAAS/D,EAAWK,QAAQ,kCAAmC,CAAC4C,IAAKA,IACrEe,SAAS,IACVC,OACErD,KAAK,WACFQ,EAAOe,QAAS,EAChBzB,EAAckD,eAAeX,GAAKR,QAAQ,IAAM9B,IACpD,EACR,EAGAS,EAAO8C,gBAAkB,SAASC,GAC9B/C,EAAOe,QAAS,EAChBV,EAAqB2C,YAAYD,GAC5BE,QAAQ,WAEL3D,EAAc4D,MAClB,GACCC,MAAM,SAASC,GACZ,MAAMC,EAAMC,SAASF,GACrBjD,EAAOgD,MAAME,EAAKzE,EAAWK,QAAQ,gBACzC,GACCoC,QAAQ,IAAM9B,IACvB,EAEAS,EAAOgD,YAAc,KAClBhD,EAAOuD,4BAGVvD,EAAOwD,aAAgBC,SACiBC,IAAhCD,EAAejC,eAEfiC,EAAejC,aAAeV,EAAAA,GAAmB6C,UAErD3D,EAAOuD,yBAAyBE,IAOpCzD,EAAOuD,yBAA4BE,IAC/BvD,EAAU0D,KAAK,CACXC,YAAa,gFACbC,YAAa,oBACbC,WAAY,uCACZC,QAAS,CACLZ,KAAMA,KACK,CACHK,sBAIbZ,OAAOrD,KAAMuD,IACJU,EACAzD,EAAOiE,iBAAiBlB,GAExB/C,EAAO8C,gBAAgBC,MAMvC/C,EAAOiE,iBAAmB,SAASC,GAC/BlE,EAAOe,QAAS,EAChBV,EAAqBmD,aAAaU,GAC7BjB,QAAQ,WAEL3D,EAAc4D,MAClB,GACCC,MAAM,SAASC,GACZ,MAAMC,EAAMC,SAASF,GACrBjD,EAAOgD,MAAME,EAAKzE,EAAWK,QAAQ,gBACzC,GACCoC,QAAQ,IAAM9B,IACvB,EAGAS,EAAOmE,cAAgB,SAAS5B,GAC5BjD,EAAc6E,cAAc5B,EAChC,EAGAvC,EAAOoE,iBAAmB,SAASC,GAC/BjE,EAAaqC,gBAAgB,CACzBC,MAAO9D,EAAWK,QAAQ,yBAC1B0D,SAAS2B,EAAAA,EAAAA,IAAW1F,EAAWK,QAAQ,0BAA2B,CAACsF,aAAcF,EAAWG,MAC5F5B,SAAS,IACVC,OACErD,KAAK,WACFQ,EAAOe,QAAS,EAChBzB,EAAc8E,iBAAiBC,GAC1BhD,QAAQ,KACL9B,IACAS,EAAOe,QAAS,IA4GpC,SAAoCwB,GAChC,MAAMkC,EAAgC,8BAA8BlC,EAAKiC,KACnEE,EAAkC,gCAAgCnC,EAAKiC,KAC7E3J,QAAQmC,QAAQsD,EAAoBvD,OAAQ,SAASE,IAE7CA,EAAI0H,WAAWD,IAAoCzH,EAAI0H,WAAWF,KAClEnE,EAAoBsE,OAAO3H,EAEnC,EACJ,CAnHY4H,CAA2BR,EAC/B,EACR,EAEArE,EAAO8E,kBAAoB,SAAST,GAChCjE,EAAaqC,gBAAgB,CACzBC,MAAO9D,EAAWK,QAAQ,wBAC1B0D,SAAS2B,EAAAA,EAAAA,IAAW1F,EAAWK,QAAQ,mCAAoC,CAACsF,aAAcF,EAAWG,MACrG5B,SAAS,IACVC,OACErD,KAAK,WACFQ,EAAOe,QAAS,EAChBzB,EAAcwF,kBAAkBT,GAAYhD,QAAQ,IAAM9B,IAC9D,EACR,EAEAS,EAAO+E,wBAA0B,SAASR,GAClCvE,EAAOgF,yBAA2BT,EAElCjF,EAAc2F,qBAAqB,MAGnC3F,EAAc2F,qBAAqBV,EAE3C,EAEAvE,EAAOgF,qBAAuB,WAC1B,OAAO1F,EAAc0F,sBACzB,EAyBAhF,EAAOkF,0BAA4B,SAASb,GACxC,IAAIc,EAAM,qBAAqBd,EAAWG,KAAMH,EAAWe,OAASC,EAAAA,GAAiBC,MAAQ,gBACvF,4BAA6BjB,EAAW1E,WAC9C,MAAM4F,GAAQ7E,EAAAA,EAAAA,SAAQ8E,EAAAA,8BAA8BC,eAAeC,WAInE,OAHIH,IACAJ,EAAM,GAAGA,eAAiBQ,mBAAmBJ,MAE1CJ,CACX,EAGAnF,EAAO4F,gBAAkB,SAAS/D,GAC9BzB,EAAayF,yBAAyBhE,EAC1C,EAEA7B,EAAO8F,SAAW,WACQ5F,EAAU0D,KAAK,CACjCC,YAAa,2DACbE,WAAY,+BAEFlB,OAAOrD,KAAK,WACtBF,EAAc4D,MAClB,EACJ,EAGAlD,EAAO+F,2BAA6B,WAChC7F,EAAU0D,KAAK,CACXC,YAAa,mDACbE,WAAY,8BAEpB,EAEAxE,IACA,MAAMyG,EAAQzF,EAAU,WAChBE,EAAcwF,aAAehG,EAAWiG,cAM5C5G,EAAc6G,YACd5G,IACJ,EAAG,KAEHS,EAAOoG,IAAI,WAAY,WACnB7F,EAAU8F,OAAOL,GAEb7E,GACAA,EAAgC6C,SAExC,GAmBAhE,EAAO4B,4BAA8B,SAAS0E,GAC1C,MAAMC,EAA2BjH,EAAcsC,4BAA4B0E,IAAe,GAE1F,OAAItG,EAAO2B,gBACA4E,EAGJA,EAAyB7G,OAAQ6C,GAAS3B,EAAqB4F,YAAYjE,IAAS3B,EAAqB6F,eAAelE,GACnI,EAEAvC,EAAO2B,cAAgB,IACZf,EAAqBe,gBAGhC3B,EAAO0G,cAAiBnE,GACb3B,EAAqB8F,cAAcnE,EAElD,CAIA,SAASoE,EAA2B3G,EAAQ4G,EAAmBC,EAAQ1G,EAAQvB,GAC3EoB,EAAO8G,OAAS,SAASC,GACjBA,GAASA,EAAMjF,SACf9B,EAAOgH,WAAaD,EAAM,GAElC,EACA/G,EAAOiH,GAAK,WACJjH,EAAOgH,aACPhH,EAAOkH,kBAAmB,EAC1BL,EAAOC,OAAO,CACV3B,IAAK,oBACLgC,OAAQ,OACR/D,KAAM,CAACgE,OAAQpH,EAAOgH,cAErB/D,QAAQ,WACLjD,EAAOkH,kBAAmB,EAC1BN,EAAkBS,OACtB,GACClE,MAAM,SAASC,GACZ,MAAMC,EAAMC,SAASF,GACrBjD,EAAOgD,MAAME,EAAKzE,EAAWK,QAAQ,iBACrCe,EAAOkH,kBAAmB,CAC9B,GAEZ,EACAlH,EAAOqG,OAAS,WACZO,EAAkBU,QAAQ,SAC9B,CACJ,CAIA,SAASC,EAAgBvH,EAAQ4G,EAAmBzG,EAAQhB,EAAaP,GACrEoB,EAAOwH,YAAc,CACjB,IAAO,GACP,SAAY,OACZ,SAAY,GACZ,SAAY,GACZ,QAAU,GAEdxH,EAAOyH,QAAUvI,EAAWC,GAE5Ba,EAAO0H,gBAAkB,WACrB,OAAQ1H,EAAOwH,YAAY3F,IAAIC,OAAS,GACY,IAA5C9B,EAAOwH,YAAY3F,IAAI8F,QAAQ,UAA+D,IAA7C3H,EAAOwH,YAAY3F,IAAI8F,QAAQ,YACjF3H,EAAOwH,YAAY3F,IAAI8F,QAAQ,mBAAqB,CAC/D,EAEA3H,EAAOiH,GAAK,WACHjH,EAAOwH,YAIZZ,EAAkBS,MAAMrH,EAAOwH,aAH3BrH,EAAOgD,MAAMvE,EAAWK,QAAQ,kCAIxC,EAEAe,EAAOqG,OAAS,WACZO,EAAkBU,QAAQ,SAC9B,CACJ,CAIA,SAASM,EAAiB5H,EAAQ4G,EAAmBjH,EAAUR,GAC3Da,EAAO6H,eAAiBC,EAAEC,UAAUpI,GACpCK,EAAOyH,QAAUvI,EAAWC,GAE5Ba,EAAOiH,GAAK,WACRL,EAAkBS,MAAMrH,EAAO6H,eACnC,EAEA7H,EAAOqG,OAAS,WACZO,EAAkBU,QAAQ,SAC9B,CACJ,CAIA,SAASU,EAAqBhI,EAAQiI,GAClCjI,EAAOkI,gBAAkB7C,EAAAA,GACzBrF,EAAOmI,qBAAuB,SAASC,GACnCH,EAAU1L,KAAK,GAAG0L,EAAU1L,UAAU6L,IAC1C,CACJ,CAKA,SAASC,EAAkBpI,EAAYD,EAAQG,EAAQb,EAAe2I,EAAWK,EAAUzB,EAAQ0B,EAAcC,EAAyB5J,EAAYO,GAuDlJ,SAASsJ,EAAaC,GAClB,OAAQA,GACJ,KAAKrD,EAAAA,GAAiBsD,YAClB3I,EAAO4I,UAAYhK,EAAWK,QAAQ,yBAA0B,CAACmJ,SAAU,YAC3E,MACJ,KAAK/C,EAAAA,GAAiBC,MAClBtF,EAAO4I,UAAYhK,EAAWK,QAAQ,yBAA0B,CAACmJ,SAAU,yBAC3E,MACJ,KAAK/C,EAAAA,GAAiBwD,KAClB7I,EAAO4I,UAAYhK,EAAWK,QAAQ,yBAA0B,CAACmJ,SAAU,wBAGvF,CAlBA,IAA+BM,EAhD/B1I,EAAO8I,SAAWC,EAAAA,GAAgBC,QAClChJ,EAAOkI,gBAAkB7C,EAAAA,GACzBrF,EAAOnD,OAAS0L,EAChBvI,EAAO0I,eAAiBH,EAAaG,eACrC1I,EAAOiJ,QAAS,EAChBjJ,EAAOkJ,mBAAqB7M,EAC5B2D,EAAOmJ,qCAAuCC,EAAAA,EAAyBC,oBAAoBlK,EAAYC,oBAAqB,8CAC5HY,EAAOsJ,aAAe,CAACC,SAAS,GAEhCvJ,EAAOe,QAAS,EAChBf,EAAO4I,UAAYhK,EAAWK,QAAQ,0BACtCe,EAAOwJ,eAAiB,CACpBhF,GAAI,GACJ3H,OAAQ,CAAC,EACT6F,MAAO,GACP0C,KAAM,GACNzF,SAAU,IAGdN,EAAqBC,GAChBE,KAAMC,IACHO,EAAOP,UAAYA,IAG3BO,EAAOyJ,gBAAkB,WACrBzJ,EAAO0J,WAAW,kBACtB,EA0CA1J,EAAO2J,UAAY,SAASvB,GACxBI,EAAwBoB,2BAA2BxB,GAAU5I,KAAK,SAASqK,GACvE,MAAMzG,EAAOyG,EAAKzG,KAhjBG,IAASlG,EAijB9B8C,EAAOwJ,eAAe3M,OAASuG,EAAKvG,OACpCmD,EAAOwJ,eAAepE,KAAOhC,EAAKgC,KAClCxI,EAA0BoD,EAAOwJ,eAAe3M,SAnjBlBK,EAojBL8C,EAAOwJ,eAAe3M,SAnjB1CK,EAAM4M,SACf5M,EAAM4M,OAAO3M,MAAQ,IAmjBjB6C,EAAOe,QAAS,EAIhBuH,EAAS,WAELzN,QAAQO,QAAQ0C,UAAUgB,KAAK,OAAOiL,OAC1C,EAAG,GACP,GAAGC,MAAM,SAAS5G,GACd,MAAMC,EAAMC,SAASF,GACrBjD,EAAOgD,MAAME,EAAKzE,EAAWK,QAAQ,iBACrCe,EAAOe,QAAS,CACpB,EACJ,EAEIf,EAAO0I,iBA9DX,SAA6BA,GACzB,OAAO1I,EAAOiK,gBAAmBvB,IAAmBrD,EAAAA,GAAiBsD,WACzE,CAmBWuB,CADoBxB,EA0CoB1I,EAAO0I,iBA1D1D,SAA6BA,GACzB,OAAQ1I,EAAOmK,kBAAoBnK,EAAOiK,gBAAkBvB,IAAmBrD,EAAAA,GAAiBsD,WACpG,CAekDyB,CAAoB1B,IAbtE,SAA6BA,GACzB,OAAO1I,EAAOmK,iBAAmBzB,IAAmBrD,EAAAA,GAAiBsD,WACzE,CAYW0B,CAAoB3B,IAV/B,SAAgCA,GAC5B,OAAOA,IAAmBrD,EAAAA,GAAiBC,KAC/C,CAQkDgF,CAAuB5B,IANzE,SAA+BA,GAC3B,OAAOA,IAAmBrD,EAAAA,GAAiBwD,IAC/C,CAKW0B,CAAsB7B,KAwC7B1I,EAAOwJ,eAAepE,KAAOpF,EAAO0I,eACpC1I,EAAO2J,UAAU3J,EAAO0I,gBACxBD,EAAazI,EAAO0I,iBAEpBT,EAAU1L,KAAK,sBAGnByD,EAAOkB,kBAAoB,WACvB,OAAO5B,EAAc4B,mBACzB,EAEAlB,EAAOwK,eAAiB,WACpB,OAAOlL,EAAc4C,mBACzB,EAEA,IAAIuI,GAAmB,EACvBzK,EAAO0K,cAAgB,SAAS3D,GACxBA,GAASA,EAAMjF,SACf9B,EAAOgH,WAAaD,EAAM,GAC1B/G,EAAOkH,kBAAmB,EAC1BL,EAAOC,OAAO,CACV3B,IAAK,mCACL/B,KAAM,CAACuH,QAAS3K,EAAOgH,WAAYrH,SAAUK,EAAOwJ,eAAe7J,YACpEiL,SAAS,SAASC,GACjB,GAED5H,QAAQ,SAASG,GAChB,GAAKA,EAAKH,QAIH,CACHwH,GAAmB,EACnB,MAAMK,EAAW9K,EAAOgH,WAAWtK,KAC7BqO,EAAW,CAACvG,GAAIpB,EAAK4H,aAActO,KAAM,WAAaoO,GACxD9K,EAAOiL,WAEPjL,EAAO8I,SAAS,GAAKiC,EAGrB/K,EAAO8I,SAASoC,QAAQH,GAE5B/K,EAAOiL,WAAa7H,EAAK4H,aACzBhL,EAAOmL,eAAiBL,EACxB9K,EAAOwJ,eAAe3M,OAAO8N,QAAQxN,MAAQ6C,EAAOiL,UACxD,MAjBI9K,EAAOgD,MAAMC,EAAKgI,cAClBX,GAAmB,EACnBzK,EAAOgH,WAAa,GAgBxBhH,EAAOkH,kBAAmB,CAC9B,GAAG/D,MAAM,SAASC,GACd,MAAMC,EAAMC,SAASF,GACrBjD,EAAOgD,MAAME,EAAKzE,EAAWK,QAAQ,iBACrCe,EAAOgH,WAAa,GACpBhH,EAAOkH,kBAAmB,EAC1BuD,GAAmB,CACvB,GAER,EAEAzK,EAAOqL,eAAiB,WACpBlL,EAAOgD,MAAMvE,EAAWK,QAAQ,uCACpC,EAEAe,EAAOsL,yBAA2B,WAC9B,MAAMC,EAAWtD,EAAUuD,SAASD,SACpC,GAAIA,EAAU,CACVtD,EAAUuD,OAAO,WAAY,MAC7B,MACMC,EADiC,iBAAbF,GAAgD,MAAvBA,EAASG,OAAO,GACvCH,EAAW,IAAMA,EAC7CtD,EAAU9C,IAAIsG,EAClB,MACIxD,EAAU1L,KAAK,cAEvB,EAEAyD,EAAO2L,eAAiB,WACpB3L,EAAOe,QAAS,EAChByH,EAAwBoD,iBAAiB5L,EAAOwJ,gBAC3ChK,KAAK,WAEF,OADAW,EAAO8C,QAAQrE,EAAWK,QAAQ,2BAA4B,CAAC4M,OAAQ7L,EAAOwJ,eAAehF,MACtFlF,EAAc4D,MACzB,GACC1D,KAAK,IAAMQ,EAAOsL,4BAClBtB,MAAM,SAAS7G,GACZ,MAAME,EAAMC,SAASH,EAAMC,MAC3BjD,EAAOgD,MAAME,EAAKzE,EAAWK,QAAQ,gBACzC,GACCoC,QAAQ,KACLrB,EAAOe,QAAS,GAE5B,EAEAf,EAAO8L,WAAa,WAChB,IAAK9L,EAAOwJ,eAAehF,GAEvB,YADArE,EAAOgD,MAAMvE,EAAWK,QAAQ,yBAIpCe,EAAO+L,mBAAqBC,EAAAA,GAAiBhN,KAAKgB,EAAOwJ,eAAehF,IACxExE,EAAOiM,4BAA8BjM,EAAOwJ,eAAe3M,OAAO6B,iBAAiBvB,MAAQd,EAC3F,MAAM6P,EAAoBvN,EAAqBqB,EAAOwJ,eAAe3M,OAAQ+B,GAEzE6L,EACAtK,EAAOgD,MAAMvE,EAAWK,QAAQ,+BACzBe,EAAO+L,kBACd5L,EAAOgD,MAAMvE,EAAWK,QAAQ,0BACC,SAA1Be,EAAO0I,gBAAkF,IAArD1I,EAAOwJ,eAAe3M,OAAOiN,OAAO3M,MAAM2E,OACrF9B,EAAOqL,iBACAa,EACP/L,EAAOgD,MAAM+I,GACNlM,EAAOiM,4BACd9L,EAAOgD,MAAMvE,EAAWK,QAAQ,+BAEhCe,EAAO2L,gBAEf,EAEA3L,EAAOmM,eAAiB,WACpB,MAAMC,EAAKpM,EAAOwJ,eAAe3M,OACjC,YAAW6G,IAAP0I,QAAmC1I,IAAf0I,EAAGzB,cAA8CjH,IAArB0I,EAAGC,cAC5C,GAG6B,IAApCD,EAAGzB,QAAQxN,MAAMwK,QAAQ,QAA2C,SAA3ByE,EAAGC,cAAclP,MACnDyB,EAAWK,QAAQ,4CACkB,IAArCmN,EAAGzB,QAAQxN,MAAMwK,QAAQ,SAA4C,UAA3ByE,EAAGC,cAAclP,MAC3DyB,EAAWK,QAAQ,iDACnBmN,EAAGzB,QAAQxN,QAAU6C,EAAOiL,WAC5BrM,EAAWK,QAAQ,8CAEnB,EAEf,EAEAe,EAAOpC,qBAAuB,WAC1B,OAAOA,GACX,EAIAoC,EAAOsM,YAAc,YAErB,MAAMC,EAA8BtM,EAAWmG,IAAI,0BAA2B,KAC1EqC,EAAazI,EAAO0I,kBAExB1I,EAAOoG,IAAI,WAAY,KACnBmG,KAER,CAIA,SAASC,EAAuBxM,EAAQ4G,EAAmB4B,EAAyBiE,EAAMtM,EAAQvB,EAAY8N,EAAa/M,GACvHK,EAAO0M,YAAcA,GAA4B9N,EAAWK,QAAQ,8BAChEwN,GACAjE,EAAwBmE,yBAAyBF,EAAM9M,GAAUsD,QAAQ,SAASG,GAC9EpD,EAAO4M,YAAcxJ,CACzB,GAAGD,MAAM,SAASC,GACd,MAAMC,EAAMC,SAASF,GACrBjD,EAAOgD,MAAME,EAAKzE,EAAWK,QAAQ,gBACzC,GAGJe,EAAOiH,GAAK,WACRL,EAAkBS,MAAM,CACpBwF,QAAS7M,EAAO4M,YAChB5B,aAAcyB,GAEtB,EAEAzM,EAAOqG,OAAS,WACZO,EAAkBU,QAAQ,SAC9B,CACJ,CAKA,SAASwF,EAAmB7M,EAAYD,EAAQuI,EAAcpI,EAAQb,EAAe2I,EAAW7H,EAAcoI,EAAyB5J,EAAYmO,GAC/I/M,EAAO8I,SAAWC,EAAAA,GAAgBC,QAClChJ,EAAOkI,gBAAkB7C,EAAAA,GACzBrF,EAAOkJ,mBAAqB7M,EAE5B2D,EAAOgN,cAAe,EACtBhN,EAAOiN,eAAgB,EACvBjN,EAAOkN,iBAAkB,EACzBlN,EAAOnD,OAAS0L,EAChBvI,EAAOe,QAAS,EAChBf,EAAOwJ,eAAiB,CAAC,EACzBxJ,EAAOwJ,eAAehF,GAAKxE,EAAOnD,OAAO0H,aACzCvE,EAAOwJ,eAAe7J,SAAWK,EAAOnD,OAAO8C,SAC/CK,EAAOwJ,eAAe2D,kBAAmB,EACzCnN,EAAO0I,eAAiB,GACxB1I,EAAOoN,WAAapN,EAAOnD,OAAO0H,aAClCvE,EAAO4I,UAAYhK,EAAWK,QAAQ,uBAAwB,CAACsF,aAAcvE,EAAOnD,OAAO0H,eAC3FvE,EAAOkB,kBAAoB,WACvB,OAAO5B,EAAc4B,mBACzB,EA8BAlB,EAAOqN,OAAOrN,EAAOkB,kBAAmB,WACpC,GAAIlB,EAAOkB,kBAAmB,CAE1B,IAAIoM,EA9BDjO,EAAqBC,GAAeE,KAAMC,IAC7CO,EAAOP,UAAYA,EACZ+I,EAAwB+E,cAAcvN,EAAOwJ,kBA6B/BhK,KAAMgK,IACvB8D,EAAyB9D,EAClBuD,EAAsBS,wBAAwBxN,EAAOwJ,eAAehF,MAC5EhF,KAAMiO,IACLzN,EAAOkN,gBAAkBO,EAAmBC,wBAC7C1D,MAAO7G,GACDmK,EAKEK,QAAQ3J,WAJXhE,EAAOwJ,oBAAiB9F,EACjBiK,QAAQC,OAAOzK,KAI3B3D,KAAK,KArCE8N,KACd,MAAM9D,EAAiB8D,EAAuBlK,KAC9C,GAAIvI,QAAQgT,UAAUrE,EAAe3M,OAAO8N,SAAU,CAClD,IAAImD,GAAkB,EAMtB,GALAjT,QAAQmC,QAAQgD,EAAO8I,SAAU,SAASiF,GAClCA,EAAKvJ,KAAOgF,EAAe3M,OAAO8N,QAAQxN,QAC1C2Q,GAAkB,EAE1B,GACItE,EAAe3M,OAAO8N,UAAYmD,EAAiB,CACnD,MAAMpR,EAAOJ,EAAYkN,EAAe3M,OAAO8N,QAAQxN,OACvD6C,EAAO8I,SAASoC,QAAQ,CAAC1G,GAAIgF,EAAe3M,OAAO8N,QAAQxN,MAAOT,KAAM,WAAaA,GACzF,CACJ,CACAsD,EAAOwJ,eAAiBA,EACxBxJ,EAAOgO,kBAAkBxE,EAAepE,MACxCxI,EAA0BoD,EAAOwJ,eAAe3M,QAChDmD,EAAOwJ,eAAeyE,OAASjO,EAAOoN,WACtCpN,EAAOe,QAAS,GAoBRmN,CAASZ,KACVtD,MAAOmE,IACN,MAAM/K,EAAO+K,EAAS/K,KAChBgL,EAASD,EAASC,OAClB7J,EAAegE,EAAahE,aAClC,IAAI8J,EAGAA,EADW,MAAXD,GAAmC,WAAjB7J,GACND,EAAAA,EAAAA,IAAW1F,EAAWK,QAAQ,6BAA8B,CAACsF,kBACvD,MAAX6J,GAAmC,WAAjB7J,GACbD,EAAAA,EAAAA,IAAW1F,EAAWK,QAAQ,6BAE9BqE,SAASF,GAGzBjD,EAAOgD,MAAMkL,EAAWzP,EAAWK,QAAQ,gBAAiB,CAACqP,WAAW,IAEzD,MAAXF,EACAG,WAAW,WACPvO,EAAOe,QAAS,EAChBkH,EAAU1L,KAAK,aACnB,EAAG,KAEHyD,EAAOe,QAAS,GAG5B,CACJ,GAEAf,EAAOgO,kBAAoB,SAAS5I,GAChCpF,EAAO0I,eAAiBtD,CAC5B,EAEApF,EAAOqL,eAAiB,WACpBlL,EAAOgD,MAAMvE,EAAWK,QAAQ,uCACpC,EAEAe,EAAOwO,aAAe,WAClBxO,EAAOe,QAAS,EAChByH,EAAwBiG,eAAezO,EAAOwJ,eAAeyE,OAAQjO,EAAOwJ,gBACvEvG,QAAQ,WACL9C,EAAO8C,QAAQrE,EAAWK,QAAQ,wBAAyB,CAACgP,OAAQjO,EAAOwJ,eAAeyE,UAC1F3O,EAAc4D,OAAO7B,QAAQ,IAAMrB,EAAOsL,4BACtCtL,EAAOwJ,eAAeyE,SAAWjO,EAAOwJ,eAAehF,IAAMxE,EAAOwJ,eAAe2D,kBACnF7N,EAAcwF,kBAAkB9E,EAAOwJ,eAE/C,GAAGrG,MAAM,SAASC,GAClB,MAAMC,EAAMC,SAASF,GACrBjD,EAAOgD,MAAME,EAAKzE,EAAWK,QAAQ,iBACrCe,EAAOe,QAAS,CACpB,EACJ,EAEAf,EAAOyO,eAAiB,WACpBzO,EAAO+L,mBAAqBC,EAAAA,GAAiBhN,KAAKgB,EAAOwJ,eAAehF,IACxExE,EAAOiM,4BAA8BjM,EAAOwJ,eAAe3M,OAAO6B,iBAAiBvB,MAAQd,EAC3F,MAAM6P,EAAoBvN,EAAqBqB,EAAOwJ,eAAe3M,OAAQ+B,GAC7E,IAAI8P,GAAWpK,EAAAA,EAAAA,IAAW1F,EAAWK,QAAQ,6BAA8B,CAAC4M,OAAQ7L,EAAOwJ,eAAehF,MACtGxE,EAAOwJ,eAAeyE,SAAWjO,EAAOwJ,eAAehF,GACvDkK,IAAYpK,EAAAA,EAAAA,IAAW1F,EAAWK,QAAQ,iCACnCe,EAAOwJ,eAAe2D,iBAC7BuB,IAAYpK,EAAAA,EAAAA,IAAW1F,EAAWK,QAAQ,oCAE1CyP,IAAYpK,EAAAA,EAAAA,IAAW1F,EAAWK,QAAQ,iCAE1Ce,EAAO+L,kBACP5L,EAAOgD,MAAMvE,EAAWK,QAAQ,0BACC,SAA1Be,EAAO0I,gBAAkF,IAArD1I,EAAOwJ,eAAe3M,OAAOiN,OAAO3M,MAAM2E,OACrF9B,EAAOqL,iBACAa,EACP/L,EAAOgD,MAAM+I,GACNlM,EAAOiM,4BACd9L,EAAOgD,MAAMvE,EAAWK,QAAQ,+BAEhCmB,EAAaqC,gBAAgB,CACzBC,MAAO9D,EAAWK,QAAQ,uBAC1B0D,QAAS+L,EACT9L,SAAS,IACVC,OACErD,KAAK,WACFQ,EAAOwO,cACX,EAEZ,EAEAxO,EAAO2O,iBAAmB,WACtB,MAAMtL,GAAMiB,EAAAA,EAAAA,IAAW1F,EAAWK,QAAQ,6BAE1CmB,EAAaqC,gBAAgB,CACzBC,MAAO9D,EAAWK,QAAQ,uBAC1B0D,QAASU,EACTT,SAAS,IACVC,OAAOrD,KAAK,WACXQ,EAAOiN,eAAgB,CAC3B,EACJ,EAEAjN,EAAOsL,yBAA2B,WAC1BzQ,QAAQgT,UAAUtF,EAAagD,kBACxBtD,EAAU2G,SAASrD,SAC1BtD,EAAU1L,KAAK,MAEf0L,EAAU1L,KAAK,cAEvB,EAEAyD,EAAOpC,qBAAuB,WAC1B,OAAOA,GACX,EAEA,MAAM2O,EAA8BtM,EAAWmG,IAAI,0BAA2B,KAC1EpG,EAAO4I,UAAYhK,EAAWK,QAAQ,uBAAwB,CAACsF,aAAcvE,EAAOnD,OAAO0H,iBAE/FvE,EAAOoG,IAAI,WAAY,KACnBmG,KAER,CAn2BA1R,QAAQC,OAAO,6CAVC,CACZ,YACA,eACA,+CACA,8CACA,SACA,eACA,6EAICiJ,WAAW,+BAAgChE,GAC3CgE,WAAW,kBAAmBwD,GAC9BxD,WAAW,mBAAoB6D,GAC/B7D,WAAW,uBAAwBiE,GACnCjE,WAAW,oBAAqBsE,GAChCtE,WAAW,qBAAsB+I,GACjC/I,WAAW,yBAA0ByI,GACrCzI,WAAW,6BAA8B4C,GAE9C5G,EAA6B8O,QAAU,CAAC,SAAU,aAAc,YAAa,SAAU,gBAAiB,eAAgB,uBACpH,sBAAuB,YAAa,aAAc,MA4TtDlI,EAA2BkI,QAAU,CAAC,SAAU,oBAAqB,SAAU,SAAU,cAgCzFtH,EAAgBsH,QAAU,CAAC,SAAU,oBAAqB,SAAU,cAAe,cA+BnFjH,EAAiBiH,QAAU,CAAC,SAAU,oBAAqB,WAAY,eAevE7G,EAAqB6G,QAAU,CAAC,SAAU,aAS1CxG,EAAkBwG,QAAU,CAAC,aAAc,SAAU,SAAU,gBAAiB,YAAa,WAAY,SAAU,eAC/G,0BAA2B,aAAc,eAkP7CrC,EAAuBqC,QAAU,CAAC,SAAU,oBAAqB,0BAA2B,OAAQ,SAAU,aAAc,cAAe,YAyB3I/B,EAAmB+B,QAAU,CAAC,aAAc,SAAU,eAAgB,SAAU,gBAAiB,YAAa,eAAgB,0BAC1H,aAAc,wB,8BC1wBlB,SAASC,EAAqC9O,EAAQ4G,EAAmBzH,EAAaiE,GAIlFpD,EAAOyD,eAAiBL,EAAKK,eAAiB,IAAIsL,EAAAA,GAAoB,IAAI3L,EAAKK,iBAAmB,IAAIsL,EAAAA,GAEtG/O,EAAOc,mBAAqBA,EAAAA,GAC5Bd,EAAOgP,uBAAyBA,EAAAA,GAChChP,EAAOiP,SAAW7L,EAAKK,eACvBzD,EAAOyH,QAAU,8CAA8CtI,EAAYC,sBAE3EY,EAAOiH,GAAK,KACJjH,EAAOkP,mBAAmBC,WAAanP,EAAOkP,mBAAmBE,UAGrExI,EAAkBS,MAAMrH,EAAOyD,iBAGnCzD,EAAOqG,OAAS,KACZO,EAAkBU,QAAQ,WAG9BtH,EAAOqP,sBAAwB,KACvB,CAACvO,EAAAA,GAAmBwO,QAASxO,EAAAA,GAAmByO,QAAQC,SAASxP,EAAOyD,eAAejC,cACvFxB,EAAOyD,eAAegM,SAAWT,EAAAA,GAAuBU,MAExD1P,EAAOyD,eAAegM,SAAWT,EAAAA,GAAuBW,KAGpE,C,SAhDA9U,QAAQC,OAAO,2EAJC,CACZ,mDAICiJ,WAAW,uCAAwC+K,GAExDA,EAAqCD,QAAU,CAAC,SAAU,oBAAqB,cAAe,O,4DCVvF,MAAM9F,EAAkB,CAC3B,CAACvE,GAAI,QAAS9H,KAAM,gBACpB,CAAC8H,GAAI,iBAAkB9H,KAAM,oBAC7B,CAAC8H,GAAI,OAAQ9H,KAAM,QACnB,CAAC8H,GAAI,qBAAsB9H,KAAM,yBACjC,CAAC8H,GAAI,sBAAuB9H,KAAM,yBAClC,CAAC8H,GAAI,YAAa9H,KAAM,aACxB,CAAC8H,GAAI,oBAAqB9H,KAAM,uBAChC,CAAC8H,GAAI,UAAW9H,KAAM,WACtB,CAAC8H,GAAI,oBAAqB9H,KAAM,uBAChC,CAAC8H,GAAI,UAAW9H,KAAM,WACtB,CAAC8H,GAAI,oBAAqB9H,KAAM,uBAChC,CAAC8H,GAAI,UAAW9H,KAAM,YAIb2I,EAAmB,CAACsD,YAAa,UAAWiH,KAAM,OAAQC,SAAU,SAAUC,SAAU,SAAUxK,MAAO,QAASyK,GAAI,KAAMlH,KAAM,QAClImD,EAAmB,IAAIgE,OAAO,oBAC9BjR,EAAiB,IAAIiR,OAAO,W,gCClBzC,MAAMC,EAAY,+FACZC,EAAW,uEAMV,MAAMrU,EAOT,iBAAOC,CAAWqJ,GACd,OAAO8K,EAAUjR,KAAKmG,IAAQ+K,EAASlR,KAAKmG,EAChD,CASA,qBAAOnJ,CAAemJ,EAAKpJ,GACvB,OAAQ,IAAIiU,OAAOjU,GAASiD,KAAKmG,EACrC,CASA,yBAAO/I,CAAmB+I,EAAKjJ,GAE3B,OADwB,IAAI8T,OAAO,KAAO9T,EAAkBiU,KAAK,KAAO,OAAQ,KACxDnR,KAAKmG,EACjC,E","sources":["webpack://root-config/./packages/legacy-workbench/src/js/angular/core/directives/validate-url.directive.js","webpack://root-config/./packages/legacy-workbench/src/js/angular/repositories/controllers.js","webpack://root-config/./packages/legacy-workbench/src/js/angular/repositories/controllers/manage-remote-location-dialog.controller.js","webpack://root-config/./packages/legacy-workbench/src/js/angular/repositories/repository.constants.js","webpack://root-config/./packages/legacy-workbench/src/js/angular/utils/url-utils.js"],"sourcesContent":["/**\n * @ngdoc directive\n * @name validateUrl\n * @module graphdb.framework.core.directives.validate-url\n * @restrict A\n *\n * @description\n * This directive validates the URL input field based on a specified pattern.\n * It ensures that the input URL adheres to standard URL formats and provides\n * visual feedback to the user if the URL is invalid.\n *\n * The directive can also be configured to exclude certain substrings or protocols from valid URLs,\n * and to control whether empty input values are considered valid.\n *\n * @example\n * <pre>\n * <form name=\"myForm\">\n * <!-- Basic URL validation -->\n * <input type=\"text\" name=\"urlField\" ng-model=\"url\" validate-url/>\n * <div ng-show=\"myForm.urlField.$error.validUrl\">\n * Invalid URL format.\n * </div>\n *\n * <!-- URL validation excluding a specific substring -->\n * <input type=\"text\" name=\"urlFieldWithExclusion\" ng-model=\"url\" validate-url exclude=\"/repositories\"/>\n * <div ng-show=\"myForm.urlFieldWithExclusion.$error.validUrl\">\n * Invalid URL format or contains excluded substring.\n * </div>\n *\n * <!-- URL validation excluding a specific protocol -->\n * <input type=\"text\" name=\"urlFieldWithProtocolExclusion\" ng-model=\"url\" validate-url exclude-protocol=\"ftp\"/>\n * <div ng-show=\"myForm.urlFieldWithProtocolExclusion.$error.validUrl\">\n * Invalid URL format or uses an excluded protocol.\n * </div>\n *\n * <!-- URL validation that does not allow empty values -->\n * <input type=\"text\" name=\"urlFieldNoEmpty\" ng-model=\"url\" validate-url allow-empty=\"false\"/>\n * <div ng-show=\"myForm.urlFieldNoEmpty.$error.validUrl\">\n * Invalid URL format or empty value not allowed.\n * </div>\n *\n * <!-- URL validation with both substring and protocol exclusions, and empty values not allowed -->\n * <input type=\"text\" name=\"urlFieldFullValidation\" ng-model=\"url\" validate-url exclude=\"/repositories\" exclude-protocol=\"ftp\" allow-empty=\"false\"/>\n * <div ng-show=\"myForm.urlFieldFullValidation.$error.validUrl\">\n * Invalid URL format, contains excluded substring, uses an excluded protocol, or empty value not allowed.\n * </div>\n * </form>\n * </pre>\n *\n * @usage\n * This directive can be added as an attribute to any input field where URL validation is required.\n * It will automatically validate the input value.\n *\n * Optional attributes:\n * - `exclude`: A string specifying a substring that must not be present in the URL.\n * - `exclude-protocol`: A comma-separated list of protocols (e.g., `ftp,http`) that must not be used in the URL.\n * - `allow-empty`: A boolean attribute (`true` by default). If set to `false`, empty values are considered invalid.\n */\n\nimport {UrlUtils} from \"../../utils/url-utils\";\n\nconst modules = [];\n\nangular\n .module('graphdb.framework.core.directives.validate-url', modules)\n .directive('validateUrl', validateUrl);\n\nfunction validateUrl() {\n return {\n restrict: 'A',\n require: 'ngModel',\n link: function (scope, element, attr, ctrl) {\n ctrl.$validators.validUrl = function (modelValue, viewValue) {\n // Check if empty values should be allowed\n if (ctrl.$isEmpty(viewValue)) {\n return attr.allowEmpty !== 'false';\n }\n\n if (!UrlUtils.isValidUrl(viewValue)) {\n return false;\n }\n\n if (attr.exclude && !UrlUtils.doesNotContain(viewValue, attr.exclude)) {\n return false;\n }\n\n if (attr.excludeProtocol) {\n const excludedProtocols = attr.excludeProtocol.split(',');\n if (!UrlUtils.doesNotUseProtocol(viewValue, excludedProtocols)) {\n return false;\n }\n }\n return true;\n };\n }\n };\n}\n","import {\n FILENAME_PATTERN,\n NUMBER_PATTERN,\n REPOSITORY_TYPES,\n STATIC_RULESETS,\n} from \"./repository.constants\";\nimport {decodeHTML} from \"../../../app\";\nimport './controllers/manage-remote-location-dialog.controller';\nimport {RemoteLocationType} from \"../models/repository/remote-location.model\";\nimport {\n service,\n AuthenticationStorageService,\n AuthorizationService,\n GuidesService,\n} from '@ontotext/workbench-api';\nimport {DocumentationUrlResolver} from \"../utils/documentation-url-resolver\";\n\nconst ENTITY_INDEX_SIZE_MIN = 10000;\n\nexport const getFileName = function(path) {\n let lastIdx = path.lastIndexOf('/');\n if (lastIdx === -1) {\n lastIdx = path.lastIndexOf('\\\\');\n }\n let name = path;\n if (lastIdx !== -1) {\n name = name.substring(lastIdx + 1);\n }\n return name;\n};\n\nconst parseNumberParamsIfNeeded = function(params) {\n if (!params) {\n return;\n }\n\n Object.keys(params).forEach((key) => {\n const param = params[key];\n if (param && typeof param.value === 'string') {\n const possibleNumber = parseFloat(params[key].value);\n if (!isNaN(possibleNumber) && numberParamToErrorKey[key]) {\n params[key].value = Number.isInteger(possibleNumber) ? parseInt(param.value, 10) : possibleNumber;\n // internal prop to indicate number value and save extra checks\n param.isNumber = true;\n }\n }\n });\n};\n\nconst parseMemberParamIfNeeded = function(param) {\n if (param && param.member) {\n param.member.value = [];\n }\n};\n\nconst getShaclOptionsClass = function() {\n const optionsModule = document.getElementById('shaclOptions');\n\n if (optionsModule) {\n const isAriaExpanded = optionsModule.getAttribute('aria-expanded');\n if (isAriaExpanded && isAriaExpanded === 'true') {\n return 'ri-arrow-down-s-line';\n }\n }\n return 'ri-arrow-right-s-line';\n};\n\nconst numberParamToErrorKey = {\n queryLimitResults: 'invalid.query.limit',\n queryTimeout: 'invalid.query.timeout',\n validationResultsLimitTotal: 'invalid.validation.results.limit.total',\n validationResultsLimitPerConstraint: 'invalid.validation.results.limit.per.constraint',\n joinWorkerThreads: 'invalid.join.worker.threads',\n leftJoinWorkerThreads: 'invalid.left.join.worker.threads',\n unionWorkerThreads: 'invalid.union.worker.threads',\n boundJoinBlockSize: 'invalid.bound.join.block.size',\n entityIndexSize: 'invalid.entity.index.size',\n};\n\nconst getNumberFormatError = function(params, $translate) {\n if (!params) {\n return '';\n }\n\n const errorEntry = Object.keys(params).find((key) => {\n const param = params[key];\n return param.isNumber && !NUMBER_PATTERN.test(param.value);\n });\n\n return errorEntry && numberParamToErrorKey[errorEntry]\n ? $translate.instant(numberParamToErrorKey[errorEntry])\n : '';\n};\n\nconst getDocBase = function(productInfo) {\n return `https://graphdb.ontotext.com/documentation/${productInfo.productShortVersion}`;\n};\nconst filterLocations = function(result) {\n return result.filter((location) => location.isGraphDBLocation() && !location.errorMsg && !location.degradedReason);\n};\n\n/**\n * Gets the remote locations that are error free, without degraded reason and is not of type Ontopic\n * @param {*} $repositories the repositories service\n * @return {[] | Promise} returns the locations as array or a promise of the array\n */\nconst getFilteredLocations = function($repositories) {\n // Don't allow the user to create repository on location with error or degradeded reason\n return $repositories.getLocations().then((locations) => filterLocations(locations));\n};\n\nconst modules = [\n 'ngCookies',\n 'ui.bootstrap',\n 'graphdb.framework.core.services.repositories',\n 'graphdb.framework.utils.localstorageadapter',\n 'toastr',\n 'ngFileUpload',\n 'graphdb.framework.repositories.controllers.manage-remote-location-dialog',\n];\n\nangular.module('graphdb.framework.repositories.controllers', modules)\n .controller('LocationsAndRepositoriesCtrl', LocationsAndRepositoriesCtrl)\n .controller('AddLocationCtrl', AddLocationCtrl)\n .controller('EditLocationCtrl', EditLocationCtrl)\n .controller('ChooseRepositoryCtrl', ChooseRepositoryCtrl)\n .controller('AddRepositoryCtrl', AddRepositoryCtrl)\n .controller('EditRepositoryCtrl', EditRepositoryCtrl)\n .controller('EditRepositoryFileCtrl', EditRepositoryFileCtrl)\n .controller('UploadRepositoryConfigCtrl', UploadRepositoryConfigCtrl);\n\nLocationsAndRepositoriesCtrl.$inject = ['$scope', '$rootScope', '$uibModal', 'toastr', '$repositories', 'ModalService', 'LocationsRestService',\n 'LocalStorageAdapter', '$interval', '$translate', '$q'];\n\nfunction LocationsAndRepositoriesCtrl($scope, $rootScope, $uibModal, toastr, $repositories, ModalService, LocationsRestService, // NOSONAR\n LocalStorageAdapter, $interval, $translate, $q) {\n const guidesService = service(GuidesService);\n const authorizationService = service(AuthorizationService);\n $scope.RemoteLocationType = RemoteLocationType;\n $scope.loader = true;\n /**\n * @type {RemoteLocationModel[]}\n */\n $scope.locations = [];\n\n $scope.isLocationInactive = function(location) {\n return !location.active || !$scope.hasActiveLocation();\n };\n\n const getLocationsAbortRequestPromise = $q.defer();\n //Get locations\n function getLocations() {\n return $repositories.getLocations(getLocationsAbortRequestPromise)\n .then((locations) => {\n $scope.locations = locations;\n return locations;\n })\n .finally(() => $scope.loader = false);\n }\n\n $scope.getLocalLocation = (local, locationType) => {\n const remoteLocationModel = $scope.locations.filter((location) => {\n let locationTypeCheck = true;\n if (locationType) {\n locationTypeCheck = location.locationType === locationType;\n }\n return locationTypeCheck && location.local === local;\n });\n\n // Repository managers can access all locations.\n if ($scope.isRepoManager()) {\n return remoteLocationModel;\n }\n\n // Users without the repository manager role can access only locations where they have\n // repository-specific management permission for at least one repository.\n return remoteLocationModel.filter((location) => $scope.getRepositoriesFromLocation(location.uri)?.length > 0);\n };\n\n $scope.hasAnyRemoteLocation = (local, locationTypes) => {\n return locationTypes.some((locationType) => $scope.getLocalLocation(local, locationType).length > 0);\n };\n\n $scope.hasActiveLocation = function() {\n return $repositories.hasActiveLocation();\n };\n\n $scope.getActiveLocation = function() {\n return $repositories.getActiveLocation();\n };\n\n $scope.getLocationError = function() {\n return $repositories.getLocationError();\n };\n\n $scope.getDegradedReason = function() {\n return $repositories.getDegradedReason();\n };\n\n $scope.getRepositories = function() {\n return $repositories.getRepositories();\n };\n\n $scope.isRepoActive = function(repo) {\n return $repositories.isRepoActive(repo);\n };\n\n //Delete location\n $scope.deleteLocation = function(uri) {\n ModalService.openSimpleModal({\n title: $translate.instant('location.confirm.detach'),\n message: $translate.instant('location.confirm.detach.warning', {uri: uri}),\n warning: true,\n }).result\n .then(function() {\n $scope.loader = true;\n $repositories.deleteLocation(uri).finally(() => getLocations());\n });\n };\n\n //Add new location\n $scope.addLocationHttp = function(dataAddLocation) {\n $scope.loader = true;\n LocationsRestService.addLocation(dataAddLocation)\n .success(function() {\n //Reload locations and repositories\n $repositories.init();\n })\n .error(function(data) {\n const msg = getError(data);\n toastr.error(msg, $translate.instant('common.error'));\n })\n .finally(() => getLocations());\n };\n\n $scope.addLocation = () => {\n $scope.openRemoteLocationDialog();\n };\n\n $scope.editLocation = (remoteLocation) => {\n if (remoteLocation.locationType === undefined) {\n // for backward compatibility. The old instances this property not exist so we assume it is GraphDB instance.\n remoteLocation.locationType = RemoteLocationType.GRAPH_DB;\n }\n $scope.openRemoteLocationDialog(remoteLocation);\n };\n\n /**\n * Opens the location dialog.\n * @param {RemoteLocationModel} remoteLocation (optional) If a location is passed, the dialog will open for editing; otherwise, it will open for registering a new one.\n */\n $scope.openRemoteLocationDialog = (remoteLocation) => {\n $uibModal.open({\n templateUrl: 'js/angular/repositories/templates/manage-remote-location-dialog.template.html',\n windowClass: 'addLocationDialog',\n controller: 'ManageRemoteLocationDialogController',\n resolve: {\n data: () => {\n return {\n remoteLocation,\n };\n },\n },\n }).result.then((dataAddLocation) => {\n if (remoteLocation) {\n $scope.editLocationHttp(dataAddLocation);\n } else {\n $scope.addLocationHttp(dataAddLocation);\n }\n });\n };\n\n //Edit location\n $scope.editLocationHttp = function(dataEditLocation) {\n $scope.loader = true;\n LocationsRestService.editLocation(dataEditLocation)\n .success(function() {\n //Reload locations and repositories\n $repositories.init();\n })\n .error(function(data) {\n const msg = getError(data);\n toastr.error(msg, $translate.instant('common.error'));\n })\n .finally(() => getLocations());\n };\n\n //Change repository\n $scope.setRepository = function(repo) {\n $repositories.setRepository(repo);\n };\n\n //Delete repository\n $scope.deleteRepository = function(repository) {\n ModalService.openSimpleModal({\n title: $translate.instant('common.confirm.delete'),\n message: decodeHTML($translate.instant('delete.repo.warning.msg', {repositoryId: repository.id})),\n warning: true,\n }).result\n .then(function() {\n $scope.loader = true;\n $repositories.deleteRepository(repository)\n .finally(() => {\n getLocations();\n $scope.loader = false;\n });\n removeCachedGraphsOnDelete(repository);\n });\n };\n\n $scope.restartRepository = function(repository) {\n ModalService.openSimpleModal({\n title: $translate.instant('confirm.restart.repo'),\n message: decodeHTML($translate.instant('confirm.restart.repo.warning.msg', {repositoryId: repository.id})),\n warning: true,\n }).result\n .then(function() {\n $scope.loader = true;\n $repositories.restartRepository(repository).finally(() => getLocations());\n });\n };\n\n $scope.toggleDefaultRepository = function(repositoryId) {\n if ($scope.getDefaultRepository() === repositoryId) {\n // unset\n $repositories.setDefaultRepository(null);\n } else {\n // set\n $repositories.setDefaultRepository(repositoryId);\n }\n };\n\n $scope.getDefaultRepository = function() {\n return $repositories.getDefaultRepository();\n };\n\n /* Unused, data urls don't behave well in all browsers, avoid them when possible\n $scope.getRepoTurtleConfig = function (repository) {\n function downloadRepoConfig(repoTurtleConfig, repository) {\n $('.download-turtle-config')\n .mouseup(function () {\n $(this)\n .attr('href', repoTurtleConfig)\n .attr('download', repository.id + '-config.ttl')\n });\n }\n\n $repositories.getRepositoryTurtleConfig(repository)\n .success(function (response) {\n var repoTurtleConfigDownload = 'data:application/octet-stream;charset=utf-8;base64,'\n + btoa(unescape(encodeURIComponent(response)));\n downloadRepoConfig(repoTurtleConfigDownload, repository);\n })\n .error(function () {\n toastr.error('Error getting repository configuration for '' + repository.id + ''');\n });\n };\n */\n\n $scope.getRepositoryDownloadLink = function(repository) {\n let url = `rest/repositories/${repository.id}${(repository.type === REPOSITORY_TYPES.ontop ? '/download-zip'\n : '/download-ttl')}?location=${repository.location}`;\n const token = service(AuthenticationStorageService).getAuthToken().getValue();\n if (token) {\n url = `${url}&authToken=${encodeURIComponent(token)}`;\n }\n return url;\n };\n\n ///Copy to clipboard popover options\n $scope.copyToClipboard = function(uri) {\n ModalService.openCopyToClipboardModal(uri);\n };\n\n $scope.fromFile = function() {\n const modalInstance = $uibModal.open({\n templateUrl: 'js/angular/templates/modal/upload-repository-config.html',\n controller: 'UploadRepositoryConfigCtrl',\n });\n modalInstance.result.then(function() {\n $repositories.init();\n });\n };\n\n //Delete repository\n $scope.openActiveLocationSettings = function() {\n $uibModal.open({\n templateUrl: 'js/angular/settings/modal/location-settings.html',\n controller: 'ActiveLocationSettingsCtrl',\n });\n };\n\n getLocations();\n const timer = $interval(function() {\n if (guidesService.isActive() && !$rootScope.guidePaused) {\n // Don't refresh list while a guide is active\n return;\n }\n\n // Update repositories state\n $repositories.initQuick();\n getLocations();\n }, 5000);\n\n $scope.$on('$destroy', function() {\n $interval.cancel(timer);\n // If there is a getLocations request in progress, abort it so the service can properly clear flags\n if (getLocationsAbortRequestPromise) {\n getLocationsAbortRequestPromise.resolve();\n }\n });\n\n function removeCachedGraphsOnDelete(repo) {\n const cashedDependenciesGraphPrefix = `dependencies-selectedGraph-${repo.id}`;\n const cashedClassHierarchyGraphPrefix = `classHierarchy-selectedGraph-${repo.id}`;\n angular.forEach(LocalStorageAdapter.keys(), function(key) {\n // remove everything but the hide prefixes setting, it should always persist\n if (key.startsWith(cashedClassHierarchyGraphPrefix) || key.startsWith(cashedDependenciesGraphPrefix)) {\n LocalStorageAdapter.remove(key);\n }\n });\n }\n\n /**\n * Returns the repositories available in the specified location that the current user is allowed to access.\n *\n * @param {string} locationId The identifier of the location.\n * @returns {Array<Repository>} The repositories visible to the current user in the specified location.\n */\n $scope.getRepositoriesFromLocation = function(locationId) {\n const repositoriesFromLocation = $repositories.getRepositoriesFromLocation(locationId) || [];\n\n if ($scope.isRepoManager()) {\n return repositoriesFromLocation;\n }\n\n return repositoriesFromLocation.filter((repo) => authorizationService.canReadRepo(repo) || authorizationService.canReadGqlRepo(repo));\n };\n\n $scope.isRepoManager = () => {\n return authorizationService.isRepoManager();\n };\n\n $scope.canManageRepo = (repo) => {\n return authorizationService.canManageRepo(repo);\n };\n}\n\nUploadRepositoryConfigCtrl.$inject = ['$scope', '$uibModalInstance', 'Upload', 'toastr', '$translate'];\n\nfunction UploadRepositoryConfigCtrl($scope, $uibModalInstance, Upload, toastr, $translate) {\n $scope.upload = function(files) {\n if (files && files.length) {\n $scope.uploadFile = files[0];\n }\n };\n $scope.ok = function() {\n if ($scope.uploadFile) {\n $scope.uploadFileLoader = true;\n Upload.upload({\n url: 'rest/repositories',\n method: 'POST',\n data: {config: $scope.uploadFile},\n })\n .success(function() {\n $scope.uploadFileLoader = false;\n $uibModalInstance.close();\n })\n .error(function(data) {\n const msg = getError(data);\n toastr.error(msg, $translate.instant('common.error'));\n $scope.uploadFileLoader = false;\n });\n }\n };\n $scope.cancel = function() {\n $uibModalInstance.dismiss('cancel');\n };\n}\n\nAddLocationCtrl.$inject = ['$scope', '$uibModalInstance', 'toastr', 'productInfo', '$translate'];\n\nfunction AddLocationCtrl($scope, $uibModalInstance, toastr, productInfo, $translate) {\n $scope.newLocation = {\n 'uri': '',\n 'authType': 'none',\n 'username': '',\n 'password': '',\n 'active': false,\n };\n $scope.docBase = getDocBase(productInfo);\n\n $scope.isValidLocation = function() {\n return ($scope.newLocation.uri.length < 6 ||\n $scope.newLocation.uri.indexOf('http:') === 0 || $scope.newLocation.uri.indexOf('https:') === 0)\n && $scope.newLocation.uri.indexOf('/repositories') <= -1;\n };\n\n $scope.ok = function() {\n if (!$scope.newLocation) {\n toastr.error($translate.instant('location.cannot.be.empty.error'));\n return;\n }\n $uibModalInstance.close($scope.newLocation);\n };\n\n $scope.cancel = function() {\n $uibModalInstance.dismiss('cancel');\n };\n}\n\nEditLocationCtrl.$inject = ['$scope', '$uibModalInstance', 'location', 'productInfo'];\n\nfunction EditLocationCtrl($scope, $uibModalInstance, location, productInfo) {\n $scope.editedLocation = _.cloneDeep(location);\n $scope.docBase = getDocBase(productInfo);\n\n $scope.ok = function() {\n $uibModalInstance.close($scope.editedLocation);\n };\n\n $scope.cancel = function() {\n $uibModalInstance.dismiss('cancel');\n };\n}\n\nChooseRepositoryCtrl.$inject = ['$scope', '$location'];\n\nfunction ChooseRepositoryCtrl($scope, $location) {\n $scope.repositoryTypes = REPOSITORY_TYPES;\n $scope.chooseRepositoryType = function(repoType) {\n $location.path(`${$location.path()}/${repoType}`);\n };\n}\n\nAddRepositoryCtrl.$inject = ['$rootScope', '$scope', 'toastr', '$repositories', '$location', '$timeout', 'Upload', '$routeParams',\n 'RepositoriesRestService', '$translate', 'productInfo'];\n\nfunction AddRepositoryCtrl($rootScope, $scope, toastr, $repositories, $location, $timeout, Upload, $routeParams, RepositoriesRestService, $translate, productInfo) {\n $scope.rulesets = STATIC_RULESETS.slice();\n $scope.repositoryTypes = REPOSITORY_TYPES;\n $scope.params = $routeParams;\n $scope.repositoryType = $routeParams.repositoryType;\n $scope.enable = true;\n $scope.entityIndexSizeMin = ENTITY_INDEX_SIZE_MIN;\n $scope.documentationUrlForStorageEncryption = DocumentationUrlResolver.getDocumentationUrl(productInfo.productShortVersion, 'creating-a-repository.html#using-workbench');\n $scope.encryptInput = {hovered: false};\n\n $scope.loader = true;\n $scope.pageTitle = $translate.instant('view.create.repo.title');\n $scope.repositoryInfo = {\n id: '',\n params: {},\n title: '',\n type: '',\n location: '',\n };\n\n getFilteredLocations($repositories)\n .then((locations) => {\n $scope.locations = locations;\n });\n\n $scope.changedLocation = function() {\n $scope.$broadcast('changedLocation');\n };\n\n function isValidEERepository(repositoryType) {\n return $scope.isEnterprise() && (repositoryType === REPOSITORY_TYPES.graphdbRepo);\n }\n\n function isValidSERepository(repositoryType) {\n return !$scope.isFreeEdition() && !$scope.isEnterprise() && repositoryType === REPOSITORY_TYPES.graphdbRepo;\n }\n\n function isValidFRRepository(repositoryType) {\n return $scope.isFreeEdition() && repositoryType === REPOSITORY_TYPES.graphdbRepo;\n }\n\n function isValidOntopRepository(repositoryType) {\n return repositoryType === REPOSITORY_TYPES.ontop;\n }\n\n function isValidFedXRepository(repositoryType) {\n return repositoryType === REPOSITORY_TYPES.fedx;\n }\n\n function isRepositoryTypeValid(repositoryType) {\n return isValidEERepository(repositoryType) || isValidSERepository(repositoryType)\n || isValidFRRepository(repositoryType) || isValidOntopRepository(repositoryType)\n || isValidFedXRepository(repositoryType);\n }\n\n function setPageTitle(repositoryType) {\n switch (repositoryType) {\n case REPOSITORY_TYPES.graphdbRepo:\n $scope.pageTitle = $translate.instant('view.create.repo.title', {repoType: 'GraphDB'});\n break;\n case REPOSITORY_TYPES.ontop:\n $scope.pageTitle = $translate.instant('view.create.repo.title', {repoType: 'Ontop Virtual SPARQL'});\n break;\n case REPOSITORY_TYPES.fedx:\n $scope.pageTitle = $translate.instant('view.create.repo.title', {repoType: 'FedX Virtual SPARQL'});\n break;\n }\n }\n\n $scope.getConfig = function(repoType) {\n RepositoriesRestService.getRepositoryConfiguration(repoType).then(function(resp) {\n const data = resp.data;\n $scope.repositoryInfo.params = data.params;\n $scope.repositoryInfo.type = data.type;\n parseNumberParamsIfNeeded($scope.repositoryInfo.params);\n parseMemberParamIfNeeded($scope.repositoryInfo.params);\n $scope.loader = false;\n // The clean way is the \"autofocus\" attribute and we use it but it doesn't seem to\n // work in all browsers because of the way dynamic content is handled so give it another\n // try here.\n $timeout(function() {\n // Focus the ID field\n angular.element(document).find('#id').focus();\n }, 50);\n }).catch(function(data) {\n const msg = getError(data);\n toastr.error(msg, $translate.instant('common.error'));\n $scope.loader = false;\n });\n };\n\n if ($scope.repositoryType && isRepositoryTypeValid($scope.repositoryType)) {\n $scope.repositoryInfo.type = $scope.repositoryType;\n $scope.getConfig($scope.repositoryType);\n setPageTitle($scope.repositoryType);\n } else {\n $location.path('/repository/create');\n }\n\n $scope.hasActiveLocation = function() {\n return $repositories.hasActiveLocation();\n };\n\n $scope.activeLocation = function() {\n return $repositories.getActiveLocation();\n };\n\n let isInvalidPieFile = false;\n $scope.uploadRuleset = function(files) {\n if (files && files.length) {\n $scope.uploadFile = files[0];\n $scope.uploadFileLoader = true;\n Upload.upload({\n url: 'rest/repositories/ruleset/upload',\n data: {ruleset: $scope.uploadFile, location: $scope.repositoryInfo.location},\n }).progress(function(evt) {\n /*\t\t\t\t\t\tvar progressPercentage = parseInt(100.0 * evt.loaded / evt.total);\n console.log('progress: ' + progressPercentage + '% ' + evt.config.file.name);*/\n }).success(function(data) {\n if (!data.success) {\n toastr.error(data.errorMessage);\n isInvalidPieFile = true;\n $scope.uploadFile = '';\n } else {\n isInvalidPieFile = false;\n const fileName = $scope.uploadFile.name;\n const newValue = {id: data.fileLocation, name: 'Custom: ' + fileName};\n if ($scope.rulesetPie) {\n // file was previously uploaded\n $scope.rulesets[0] = newValue;\n } else {\n // file uploaded for the first time\n $scope.rulesets.unshift(newValue);\n }\n $scope.rulesetPie = data.fileLocation;\n $scope.rulesetPieFile = fileName;\n $scope.repositoryInfo.params.ruleset.value = $scope.rulesetPie;\n }\n $scope.uploadFileLoader = false;\n }).error(function(data) {\n const msg = getError(data);\n toastr.error(msg, $translate.instant('common.error'));\n $scope.uploadFile = '';\n $scope.uploadFileLoader = false;\n isInvalidPieFile = true;\n });\n }\n };\n\n $scope.noMembersError = function() {\n toastr.error($translate.instant('fedx.create.repo.no.members.warning'));\n };\n\n $scope.goBackToPreviousLocation = function() {\n const previous = $location.search().previous;\n if (previous) {\n $location.search('previous', null);\n const isAbsolute = typeof previous === 'string' && previous.charAt(0) === '/';\n const target = isAbsolute ? previous : '/' + previous;\n $location.url(target);\n } else {\n $location.path('/repository');\n }\n };\n\n $scope.createRepoHttp = function() {\n $scope.loader = true;\n RepositoriesRestService.createRepository($scope.repositoryInfo)\n .then(function() {\n toastr.success($translate.instant('created.repo.success.msg', {repoId: $scope.repositoryInfo.id}));\n return $repositories.init();\n })\n .then(() => $scope.goBackToPreviousLocation())\n .catch(function(error) {\n const msg = getError(error.data);\n toastr.error(msg, $translate.instant('common.error'));\n })\n .finally(() => {\n $scope.loader = false;\n });\n };\n\n $scope.createRepo = function() {\n if (!$scope.repositoryInfo.id) {\n toastr.error($translate.instant('empty.repoid.warning'));\n return;\n }\n\n $scope.isInvalidRepoName = !FILENAME_PATTERN.test($scope.repositoryInfo.id);\n $scope.isInvalidEntityIndexSizeMin = $scope.repositoryInfo.params.entityIndexSize?.value < ENTITY_INDEX_SIZE_MIN;\n const numberFormatError = getNumberFormatError($scope.repositoryInfo.params, $translate);\n\n if (isInvalidPieFile) {\n toastr.error($translate.instant('invalid.ruleset.file.error'));\n } else if ($scope.isInvalidRepoName) {\n toastr.error($translate.instant('wrong.repo.name.error'));\n } else if ($scope.repositoryType === \"fedx\" && $scope.repositoryInfo.params.member.value.length === 0) {\n $scope.noMembersError();\n } else if (numberFormatError) {\n toastr.error(numberFormatError);\n } else if ($scope.isInvalidEntityIndexSizeMin) {\n toastr.error($translate.instant('repo.error.entityIndex.min'));\n } else {\n $scope.createRepoHttp();\n }\n };\n\n $scope.rulesetWarning = function() {\n const pp = $scope.repositoryInfo.params;\n if (pp === undefined || pp.ruleset === undefined || pp.disableSameAs === undefined) {\n return '';\n }\n\n if (pp.ruleset.value.indexOf('owl') === 0 && pp.disableSameAs.value === 'true') {\n return $translate.instant('repoTooltips.rulesetWarnings.needsSameAs');\n } else if (pp.ruleset.value.indexOf('rdfs') === 0 && pp.disableSameAs.value === 'false') {\n return $translate.instant('repoTooltips.rulesetWarnings.doesntNeedSameAs');\n } else if (pp.ruleset.value === $scope.rulesetPie) {\n return $translate.instant('repoTooltips.rulesetWarnings.customRuleset');\n } else {\n return '';\n }\n };\n\n $scope.getShaclOptionsClass = function() {\n return getShaclOptionsClass();\n };\n //TODO - check if repositoryID exist\n\n // Request auto-focus of the ID input when creating a repo (but not when editing)\n $scope.autofocusId = 'autofocus';\n\n const languageChangedSubscription = $rootScope.$on('$translateChangeSuccess', () => {\n setPageTitle($scope.repositoryType);\n });\n $scope.$on('$destroy', () => {\n languageChangedSubscription();\n });\n}\n\nEditRepositoryFileCtrl.$inject = ['$scope', '$uibModalInstance', 'RepositoriesRestService', 'file', 'toastr', '$translate', 'dialogTitle', 'location'];\n\nfunction EditRepositoryFileCtrl($scope, $uibModalInstance, RepositoriesRestService, file, toastr, $translate, dialogTitle, location) {\n $scope.dialogTitle = dialogTitle ? dialogTitle : $translate.instant('update.file.content.header');\n if (file) {\n RepositoriesRestService.getRepositoryFileContent(file, location).success(function(data) {\n $scope.fileContent = data;\n }).error(function(data) {\n const msg = getError(data);\n toastr.error(msg, $translate.instant('common.error'));\n });\n }\n\n $scope.ok = function() {\n $uibModalInstance.close({\n content: $scope.fileContent,\n fileLocation: file,\n });\n };\n\n $scope.cancel = function() {\n $uibModalInstance.dismiss('cancel');\n };\n}\n\nEditRepositoryCtrl.$inject = ['$rootScope', '$scope', '$routeParams', 'toastr', '$repositories', '$location', 'ModalService', 'RepositoriesRestService',\n '$translate', 'MonitoringRestService'];\n\nfunction EditRepositoryCtrl($rootScope, $scope, $routeParams, toastr, $repositories, $location, ModalService, RepositoriesRestService, $translate, MonitoringRestService) {\n $scope.rulesets = STATIC_RULESETS.slice();\n $scope.repositoryTypes = REPOSITORY_TYPES;\n $scope.entityIndexSizeMin = ENTITY_INDEX_SIZE_MIN;\n\n $scope.editRepoPage = true;\n $scope.canEditRepoId = false;\n $scope.isRepoInCluster = true;\n $scope.params = $routeParams;\n $scope.loader = true;\n $scope.repositoryInfo = {};\n $scope.repositoryInfo.id = $scope.params.repositoryId;\n $scope.repositoryInfo.location = $scope.params.location;\n $scope.repositoryInfo.restartRequested = false;\n $scope.repositoryType = '';\n $scope.saveRepoId = $scope.params.repositoryId;\n $scope.pageTitle = $translate.instant('view.edit.repo.title', {repositoryId: $scope.params.repositoryId});\n $scope.hasActiveLocation = function() {\n return $repositories.hasActiveLocation();\n };\n\n const loadRepositoryData = () => {\n return getFilteredLocations($repositories).then((locations) => {\n $scope.locations = locations;\n return RepositoriesRestService.getRepository($scope.repositoryInfo);\n });\n };\n\n const initView = (repositoryInfoResponse) => {\n const repositoryInfo = repositoryInfoResponse.data;\n if (angular.isDefined(repositoryInfo.params.ruleset)) {\n let ifRulesetExists = false;\n angular.forEach($scope.rulesets, function(item) {\n if (item.id === repositoryInfo.params.ruleset.value) {\n ifRulesetExists = true;\n }\n });\n if (repositoryInfo.params.ruleset && !ifRulesetExists) {\n const name = getFileName(repositoryInfo.params.ruleset.value);\n $scope.rulesets.unshift({id: repositoryInfo.params.ruleset.value, name: 'Custom: ' + name});\n }\n }\n $scope.repositoryInfo = repositoryInfo;\n $scope.setRepositoryType(repositoryInfo.type);\n parseNumberParamsIfNeeded($scope.repositoryInfo.params);\n $scope.repositoryInfo.saveId = $scope.saveRepoId;\n $scope.loader = false;\n };\n\n $scope.$watch($scope.hasActiveLocation, function() {\n if ($scope.hasActiveLocation) {\n // Should get locations before getting repository info\n let repositoryInfoResponse;\n loadRepositoryData().then((repositoryInfo) => {\n repositoryInfoResponse = repositoryInfo;\n return MonitoringRestService.monitorActiveOperations($scope.repositoryInfo.id);\n }).then((monitoringResponse) => {\n $scope.isRepoInCluster = monitoringResponse.hasClusterOperation();\n }).catch((error) => {\n if (!repositoryInfoResponse) {\n $scope.repositoryInfo = undefined;\n return Promise.reject(error);\n }\n // the monitoring request failed, but we can still continue\n return Promise.resolve();\n }).then(() => {\n initView(repositoryInfoResponse);\n }).catch((response) => {\n const data = response.data;\n const status = response.status;\n const repositoryId = $routeParams.repositoryId;\n let toastrMsg;\n\n if (status === 404 && repositoryId !== 'system') {\n toastrMsg = decodeHTML($translate.instant('edit.repo.error.not.exists', {repositoryId}));\n } else if (status === 404 && repositoryId === 'system') {\n toastrMsg = decodeHTML($translate.instant('edit.system.repo.warning'));\n } else {\n toastrMsg = getError(data);\n }\n\n toastr.error(toastrMsg, $translate.instant('common.error'), {allowHtml: true});\n\n if (status === 404) {\n setTimeout(function() {\n $scope.loader = false;\n $location.path('repository');\n }, 1000);\n } else {\n $scope.loader = false;\n }\n });\n }\n });\n\n $scope.setRepositoryType = function(type) {\n $scope.repositoryType = type;\n };\n\n $scope.noMembersError = function() {\n toastr.error($translate.instant('fedx.create.repo.no.members.warning'));\n };\n\n $scope.editRepoHttp = function() {\n $scope.loader = true;\n RepositoriesRestService.editRepository($scope.repositoryInfo.saveId, $scope.repositoryInfo)\n .success(function() {\n toastr.success($translate.instant('edit.repo.success.msg', {saveId: $scope.repositoryInfo.saveId}));\n $repositories.init().finally(() => $scope.goBackToPreviousLocation());\n if ($scope.repositoryInfo.saveId === $scope.repositoryInfo.id && $scope.repositoryInfo.restartRequested) {\n $repositories.restartRepository($scope.repositoryInfo);\n }\n }).error(function(data) {\n const msg = getError(data);\n toastr.error(msg, $translate.instant('common.error'));\n $scope.loader = false;\n });\n };\n\n $scope.editRepository = function() {\n $scope.isInvalidRepoName = !FILENAME_PATTERN.test($scope.repositoryInfo.id);\n $scope.isInvalidEntityIndexSizeMin = $scope.repositoryInfo.params.entityIndexSize?.value < ENTITY_INDEX_SIZE_MIN;\n const numberFormatError = getNumberFormatError($scope.repositoryInfo.params, $translate);\n let modalMsg = decodeHTML($translate.instant('edit.repo.save.changes.msg', {repoId: $scope.repositoryInfo.id}));\n if ($scope.repositoryInfo.saveId !== $scope.repositoryInfo.id) {\n modalMsg += decodeHTML($translate.instant('edit.repo.rename.changes.msg'));\n } else if ($scope.repositoryInfo.restartRequested) {\n modalMsg += decodeHTML($translate.instant('edit.repo.restart.requested.msg'));\n } else {\n modalMsg += decodeHTML($translate.instant('edit.repo.restart.needed.msg'));\n }\n if ($scope.isInvalidRepoName) {\n toastr.error($translate.instant('wrong.repo.name.error'));\n } else if ($scope.repositoryType === \"fedx\" && $scope.repositoryInfo.params.member.value.length === 0) {\n $scope.noMembersError();\n } else if (numberFormatError) {\n toastr.error(numberFormatError);\n } else if ($scope.isInvalidEntityIndexSizeMin) {\n toastr.error($translate.instant('repo.error.entityIndex.min'));\n } else {\n ModalService.openSimpleModal({\n title: $translate.instant('common.confirm.save'),\n message: modalMsg,\n warning: true,\n }).result\n .then(function() {\n $scope.editRepoHttp();\n });\n }\n };\n\n $scope.editRepositoryId = function() {\n const msg = decodeHTML($translate.instant('edit.repo.id.warning.msg'));\n\n ModalService.openSimpleModal({\n title: $translate.instant('confirm.enable.edit'),\n message: msg,\n warning: true,\n }).result.then(function() {\n $scope.canEditRepoId = true;\n });\n };\n\n $scope.goBackToPreviousLocation = function() {\n if (angular.isDefined($routeParams.previous)) {\n delete $location.$$search.previous;\n $location.path('/');\n } else {\n $location.path('/repository');\n }\n };\n\n $scope.getShaclOptionsClass = function() {\n return getShaclOptionsClass();\n };\n\n const languageChangedSubscription = $rootScope.$on('$translateChangeSuccess', () => {\n $scope.pageTitle = $translate.instant('view.edit.repo.title', {repositoryId: $scope.params.repositoryId});\n });\n $scope.$on('$destroy', () => {\n languageChangedSubscription();\n });\n}\n","import {RemoteLocationAuthType, RemoteLocationModel, RemoteLocationType} from \"../../models/repository/remote-location.model\";\nimport 'angular/core/directives/validate-url.directive';\n\nconst modules = [\n 'graphdb.framework.core.directives.validate-url',\n];\n\nangular.module('graphdb.framework.repositories.controllers.manage-remote-location-dialog', modules)\n .controller('ManageRemoteLocationDialogController', ManageRemoteLocationDialogController);\n\nManageRemoteLocationDialogController.$inject = ['$scope', '$uibModalInstance', 'productInfo', 'data'];\n\n/**\n * Controller for managing the remote location dialog, which handles both creation and editing of remote locations.\n *\n * @param {Object} $scope\n * @param {Object} $uibModalInstance\n * @param {Object} productInfo\n * @param {Object} data - Data passed to the dialog:\n * - If `data.remoteLocation` is provided, the dialog is in edit mode\n * and the remote location object is initialized with the provided data.\n * - If `data.remoteLocation` is not provided, the dialog is in create mode\n * and a new `RemoteLocationModel` instance is initialized.\n *\n * @constructor\n */\nfunction ManageRemoteLocationDialogController($scope, $uibModalInstance, productInfo, data) {\n /**\n * @type {RemoteLocationModel}\n */\n $scope.remoteLocation = data.remoteLocation ? new RemoteLocationModel({...data.remoteLocation}) : new RemoteLocationModel();\n\n $scope.RemoteLocationType = RemoteLocationType;\n $scope.RemoteLocationAuthType = RemoteLocationAuthType;\n $scope.isEdit = !!data.remoteLocation;\n $scope.docBase = `https://graphdb.ontotext.com/documentation/${productInfo.productShortVersion}`;\n\n $scope.ok = () => {\n if ($scope.remoteLocationForm.$pristine || $scope.remoteLocationForm.$invalid) {\n return;\n }\n $uibModalInstance.close($scope.remoteLocation);\n };\n\n $scope.cancel = () => {\n $uibModalInstance.dismiss('cancel');\n };\n\n $scope.onLocationTypeChanged = () => {\n if ([RemoteLocationType.ONTOPIC, RemoteLocationType.SPARQL].includes($scope.remoteLocation.locationType)) {\n $scope.remoteLocation.authType = RemoteLocationAuthType.BASIC;\n } else {\n $scope.remoteLocation.authType = RemoteLocationAuthType.NONE;\n }\n };\n}\n","export const STATIC_RULESETS = [\n {id: 'empty', name: 'No inference'},\n {id: 'rdfs-optimized', name: 'RDFS (Optimized)'},\n {id: 'rdfs', name: 'RDFS'},\n {id: 'rdfsplus-optimized', name: 'RDFS-Plus (Optimized)'},\n {id: 'owl-horst-optimized', name: 'OWL-Horst (Optimized)'},\n {id: 'owl-horst', name: 'OWL-Horst'},\n {id: 'owl2-ql-optimized', name: 'OWL2-QL (Optimized)'},\n {id: 'owl2-ql', name: 'OWL2-QL'},\n {id: 'owl-max-optimized', name: 'OWL-Max (Optimized)'},\n {id: 'owl-max', name: 'OWL-Max'},\n {id: 'owl2-rl-optimized', name: 'OWL2-RL (Optimized)'},\n {id: 'owl2-rl', name: 'OWL2-RL'},\n\n];\n\nexport const REPOSITORY_TYPES = {graphdbRepo: 'graphdb', free: 'free', eeWorker: 'worker', eeMaster: 'master', ontop: 'ontop', se: 'se', fedx: 'fedx'};\nexport const FILENAME_PATTERN = new RegExp('^[a-zA-Z0-9-_]+$');\nexport const NUMBER_PATTERN = new RegExp('^[0-9]+$');\n","const httpRegex = /^(h|ht|htt|http|https|http:|https:|http:\\/|https:\\/|http:\\/\\/|https:\\/\\/|https?:\\/\\/[\\S]*)$/i;\nconst ftpRegex = /^(f|ft|ftp|ftps|ftp:|ftps:|ftp:\\/|ftps:\\/|ftp:\\/\\/|ftps:\\/\\/[\\S]*)$/i;\n\n\n/**\n * Utilities for URL manipulation, validation, etc.\n */\nexport class UrlUtils {\n /**\n * Validates whether the given string is a valid URL or a partial URL that follows the rules.\n *\n * @param {string} url - The URL string to validate.\n * @return {boolean} True if the URL is valid or a valid partial URL, false otherwise.\n */\n static isValidUrl(url) {\n return httpRegex.test(url) || ftpRegex.test(url);\n }\n\n /**\n * Checks if the URL contains an excluded substring.\n *\n * @param {string} url - The URL string to check.\n * @param {string} exclude - The substring to exclude.\n * @return {boolean} True if the URL does not contain the substring, false if it does.\n */\n static doesNotContain(url, exclude) {\n return !new RegExp(exclude).test(url);\n }\n\n /**\n * Checks if the URL uses an excluded protocol.\n *\n * @param {string} url - The URL string to check.\n * @param {Array<string>} excludedProtocols - The protocols to exclude.\n * @return {boolean} True if the URL does not use the excluded protocols, false if it does.\n */\n static doesNotUseProtocol(url, excludedProtocols) {\n const protocolPattern = new RegExp('^(' + excludedProtocols.join('|') + ')://', 'i');\n return !protocolPattern.test(url);\n }\n}\n"],"names":["angular","module","directive","restrict","require","link","scope","element","attr","ctrl","$validators","validUrl","modelValue","viewValue","$isEmpty","allowEmpty","UrlUtils","isValidUrl","exclude","doesNotContain","excludeProtocol","excludedProtocols","split","doesNotUseProtocol","ENTITY_INDEX_SIZE_MIN","getFileName","path","lastIdx","lastIndexOf","name","substring","parseNumberParamsIfNeeded","params","Object","keys","forEach","key","param","value","possibleNumber","parseFloat","isNaN","numberParamToErrorKey","Number","isInteger","parseInt","isNumber","getShaclOptionsClass","optionsModule","document","getElementById","isAriaExpanded","getAttribute","queryLimitResults","queryTimeout","validationResultsLimitTotal","validationResultsLimitPerConstraint","joinWorkerThreads","leftJoinWorkerThreads","unionWorkerThreads","boundJoinBlockSize","entityIndexSize","getNumberFormatError","$translate","errorEntry","find","NUMBER_PATTERN","test","instant","getDocBase","productInfo","productShortVersion","getFilteredLocations","$repositories","getLocations","then","locations","filter","location","isGraphDBLocation","errorMsg","degradedReason","LocationsAndRepositoriesCtrl","$scope","$rootScope","$uibModal","toastr","ModalService","LocationsRestService","LocalStorageAdapter","$interval","$q","guidesService","service","GuidesService","authorizationService","AuthorizationService","RemoteLocationType","loader","isLocationInactive","active","hasActiveLocation","getLocationsAbortRequestPromise","defer","finally","getLocalLocation","local","locationType","remoteLocationModel","locationTypeCheck","isRepoManager","getRepositoriesFromLocation","uri","length","hasAnyRemoteLocation","locationTypes","some","getActiveLocation","getLocationError","getDegradedReason","getRepositories","isRepoActive","repo","deleteLocation","openSimpleModal","title","message","warning","result","addLocationHttp","dataAddLocation","addLocation","success","init","error","data","msg","getError","openRemoteLocationDialog","editLocation","remoteLocation","undefined","GRAPH_DB","open","templateUrl","windowClass","controller","resolve","editLocationHttp","dataEditLocation","setRepository","deleteRepository","repository","decodeHTML","repositoryId","id","cashedDependenciesGraphPrefix","cashedClassHierarchyGraphPrefix","startsWith","remove","removeCachedGraphsOnDelete","restartRepository","toggleDefaultRepository","getDefaultRepository","setDefaultRepository","getRepositoryDownloadLink","url","type","REPOSITORY_TYPES","ontop","token","AuthenticationStorageService","getAuthToken","getValue","encodeURIComponent","copyToClipboard","openCopyToClipboardModal","fromFile","openActiveLocationSettings","timer","isActive","guidePaused","initQuick","$on","cancel","locationId","repositoriesFromLocation","canReadRepo","canReadGqlRepo","canManageRepo","UploadRepositoryConfigCtrl","$uibModalInstance","Upload","upload","files","uploadFile","ok","uploadFileLoader","method","config","close","dismiss","AddLocationCtrl","newLocation","docBase","isValidLocation","indexOf","EditLocationCtrl","editedLocation","_","cloneDeep","ChooseRepositoryCtrl","$location","repositoryTypes","chooseRepositoryType","repoType","AddRepositoryCtrl","$timeout","$routeParams","RepositoriesRestService","setPageTitle","repositoryType","graphdbRepo","pageTitle","fedx","rulesets","STATIC_RULESETS","slice","enable","entityIndexSizeMin","documentationUrlForStorageEncryption","DocumentationUrlResolver","getDocumentationUrl","encryptInput","hovered","repositoryInfo","changedLocation","$broadcast","getConfig","getRepositoryConfiguration","resp","member","focus","catch","isEnterprise","isValidEERepository","isFreeEdition","isValidSERepository","isValidFRRepository","isValidOntopRepository","isValidFedXRepository","activeLocation","isInvalidPieFile","uploadRuleset","ruleset","progress","evt","fileName","newValue","fileLocation","rulesetPie","unshift","rulesetPieFile","errorMessage","noMembersError","goBackToPreviousLocation","previous","search","target","charAt","createRepoHttp","createRepository","repoId","createRepo","isInvalidRepoName","FILENAME_PATTERN","isInvalidEntityIndexSizeMin","numberFormatError","rulesetWarning","pp","disableSameAs","autofocusId","languageChangedSubscription","EditRepositoryFileCtrl","file","dialogTitle","getRepositoryFileContent","fileContent","content","EditRepositoryCtrl","MonitoringRestService","editRepoPage","canEditRepoId","isRepoInCluster","restartRequested","saveRepoId","$watch","repositoryInfoResponse","getRepository","monitorActiveOperations","monitoringResponse","hasClusterOperation","Promise","reject","isDefined","ifRulesetExists","item","setRepositoryType","saveId","initView","response","status","toastrMsg","allowHtml","setTimeout","editRepoHttp","editRepository","modalMsg","editRepositoryId","$$search","$inject","ManageRemoteLocationDialogController","RemoteLocationModel","RemoteLocationAuthType","isEdit","remoteLocationForm","$pristine","$invalid","onLocationTypeChanged","ONTOPIC","SPARQL","includes","authType","BASIC","NONE","free","eeWorker","eeMaster","se","RegExp","httpRegex","ftpRegex","join"],"sourceRoot":""}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export const __webpack_esm_id__=45501;export const __webpack_esm_ids__=[45501];export const __webpack_esm_modules__={45501(e,n,a){a.r(n),a.d(n,{onto_permission_banner:()=>s});var r=a(18072);const s=class{constructor(e){(0,r.r)(this,e)}render(){return(0,r.h)(r.a,{key:"
|
|
2
|
-
//# sourceMappingURL=45501.
|
|
1
|
+
export const __webpack_esm_id__=45501;export const __webpack_esm_ids__=[45501];export const __webpack_esm_modules__={45501(e,n,a){a.r(n),a.d(n,{onto_permission_banner:()=>s});var r=a(18072);const s=class{constructor(e){(0,r.r)(this,e)}render(){return(0,r.h)(r.a,{key:"af24a9fd0a4d122739646718c158cb5479722c3e",class:"permission-banner"},(0,r.h)("p",{key:"6e1ce2f61c6ff61818f8f56d3acd4ecf1ec40b40",class:"permission-banner-content onto-alert onto-alert-danger"},(0,r.h)("div",{key:"aa362d820d1a5cb3f28608f82a0424c12797e359",class:"ri-alert-line"}),(0,r.h)("div",{key:"da4f845f01c8170530eaf3e379bc07eec40459aa",class:"label-container"},(0,r.h)("translate-label",{key:"f579389f0d589b2fe6952e0fafc9f111e9625792",labelKey:"permission_banner.no_access_error"}),(0,r.h)("translate-label",{key:"ef5923e6167f1c0adb433880cf5e74166076a23e",labelKey:"permission_banner.change_menu_or_user_warning"}))))}};s.style=':host{display:block}.permission-banner{margin:0 1rem}.permission-banner-content{display:flex;align-items:center;margin:1rem;padding:0 2rem 3rem 2rem}.label-container{display:flex;flex-direction:column;margin-left:1rem}.icon-warning::before{font-family:"icomoon", sans-serif;content:"\\e920";display:block;font-size:1.5em;pointer-events:none}'}};
|
|
2
|
+
//# sourceMappingURL=45501.9eb529ce40a22951f417.bundle.js.map
|
package/dist/{45501.b57c0da09b0c710a2ae4.bundle.js.map → 45501.9eb529ce40a22951f417.bundle.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"45501.
|
|
1
|
+
{"version":3,"file":"45501.9eb529ce40a22951f417.bundle.js","mappings":"8LAEA,MAEMA,EAAuB,MACzBC,WAAAA,CAAYC,IACRC,EAAAA,EAAAA,GAAiBC,KAAMF,EAC3B,CACAG,MAAAA,GACI,OAAQC,EAAAA,EAAAA,GAAEC,EAAAA,EAAM,CAAEC,IAAK,2CAA4CC,MAAO,sBAAuBH,EAAAA,EAAAA,GAAE,IAAK,CAAEE,IAAK,2CAA4CC,MAAO,2DAA4DH,EAAAA,EAAAA,GAAE,MAAO,CAAEE,IAAK,2CAA4CC,MAAO,mBAAoBH,EAAAA,EAAAA,GAAE,MAAO,CAAEE,IAAK,2CAA4CC,MAAO,oBAAqBH,EAAAA,EAAAA,GAAE,kBAAmB,CAAEE,IAAK,2CAA4CE,SAAU,uCAAwCJ,EAAAA,EAAAA,GAAE,kBAAmB,CAAEE,IAAK,2CAA4CE,SAAU,oDAC7lB,GAEJV,EAAqBW,MAVW,uV","sources":["webpack://root-config/./packages/shared-components/dist/esm/onto-permission-banner.entry.js"],"sourcesContent":["import { r as registerInstance, h, a as Host } from './index-BntG-4Sv.js';\n\nconst ontoPermissionBannerCss = \":host{display:block}.permission-banner{margin:0 1rem}.permission-banner-content{display:flex;align-items:center;margin:1rem;padding:0 2rem 3rem 2rem}.label-container{display:flex;flex-direction:column;margin-left:1rem}.icon-warning::before{font-family:\\\"icomoon\\\", sans-serif;content:\\\"\\\\e920\\\";display:block;font-size:1.5em;pointer-events:none}\";\n\nconst OntoPermissionBanner = class {\n constructor(hostRef) {\n registerInstance(this, hostRef);\n }\n render() {\n return (h(Host, { key: 'af24a9fd0a4d122739646718c158cb5479722c3e', class: \"permission-banner\" }, h(\"p\", { key: '6e1ce2f61c6ff61818f8f56d3acd4ecf1ec40b40', class: \"permission-banner-content onto-alert onto-alert-danger\" }, h(\"div\", { key: 'aa362d820d1a5cb3f28608f82a0424c12797e359', class: \"ri-alert-line\" }), h(\"div\", { key: 'da4f845f01c8170530eaf3e379bc07eec40459aa', class: \"label-container\" }, h(\"translate-label\", { key: 'f579389f0d589b2fe6952e0fafc9f111e9625792', labelKey: 'permission_banner.no_access_error' }), h(\"translate-label\", { key: 'ef5923e6167f1c0adb433880cf5e74166076a23e', labelKey: 'permission_banner.change_menu_or_user_warning' })))));\n }\n};\nOntoPermissionBanner.style = ontoPermissionBannerCss;\n\nexport { OntoPermissionBanner as onto_permission_banner };\n"],"names":["OntoPermissionBanner","constructor","hostRef","registerInstance","this","render","h","Host","key","class","labelKey","style"],"sourceRoot":""}
|