graphdb-workbench 3.5.1-TR3 → 3.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (119) hide show
  1. package/dist/{31415.aba4cdda066690a2769d.bundle.js → 31415.8d180c0aaafea01d84c5.bundle.js} +2 -2
  2. package/dist/31415.8d180c0aaafea01d84c5.bundle.js.map +1 -0
  3. package/dist/3395.0a62c93740e681cddba2.bundle.js +2 -0
  4. package/dist/3395.0a62c93740e681cddba2.bundle.js.map +1 -0
  5. package/dist/{64709.d6d3d413c90077b5d0cc.bundle.js → 64709.fba061d1e333d77d2644.bundle.js} +2 -2
  6. package/dist/{64709.d6d3d413c90077b5d0cc.bundle.js.map → 64709.fba061d1e333d77d2644.bundle.js.map} +1 -1
  7. package/dist/65677.646a9ee2a63ba19c0fd3.bundle.js +2 -0
  8. package/dist/65677.646a9ee2a63ba19c0fd3.bundle.js.map +1 -0
  9. package/dist/73334.1487d58b7e885510d107.bundle.js +2 -0
  10. package/dist/73334.1487d58b7e885510d107.bundle.js.map +1 -0
  11. package/dist/80933.542ad26ccd92fdc2c05d.bundle.js +2 -0
  12. package/dist/80933.542ad26ccd92fdc2c05d.bundle.js.map +1 -0
  13. package/dist/82917.020f840fc63c2066169e.bundle.js +2 -0
  14. package/dist/{82917.c97f7cec0372ff2f6fdd.bundle.js.map → 82917.020f840fc63c2066169e.bundle.js.map} +1 -1
  15. package/dist/85698.b186c57a2d0edee24110.bundle.js +2 -0
  16. package/dist/85698.b186c57a2d0edee24110.bundle.js.map +1 -0
  17. package/dist/86099.959943bc458a7ef148e9.bundle.js +2 -0
  18. package/dist/86099.959943bc458a7ef148e9.bundle.js.map +1 -0
  19. package/dist/8981.cb785cbc13b19f924ebc.bundle.js +2 -0
  20. package/dist/8981.cb785cbc13b19f924ebc.bundle.js.map +1 -0
  21. package/dist/assets/i18n/language-config.json +1 -1
  22. package/dist/css/cluster-configuration/multi-region.css +1 -1
  23. package/dist/css/clustermanagement.css +1 -1
  24. package/dist/css/lib/ontotext-yasgui-web-component.css +1 -1
  25. package/dist/index.html +9 -9
  26. package/dist/js/angular/clustermanagement/templates/cluster-configuration/cluster-configuration.html +1 -1
  27. package/dist/js/angular/clustermanagement/templates/cluster-configuration/multi-region.html +6 -6
  28. package/dist/js/angular/clustermanagement/templates/cluster-nodes-configuration.html +1 -1
  29. package/dist/js/angular/core/directives/autocomplete/templates/autocomplete.html +1 -1
  30. package/dist/js/angular/core/directives/dynamic-form/templates/dynamic-form.html +1 -1
  31. package/dist/js/angular/core/directives/operations-statuses-monitor/templates/operations-statuses-monitor.html +1 -1
  32. package/dist/js/angular/core/directives/rdfresourcesearch/templates/rdfResourceSearchTemplate.html +1 -1
  33. package/dist/js/angular/core/directives/shuttle-multiselect/templates/shuttle-multiselect.html +1 -1
  34. package/dist/js/angular/core/directives/yasgui-component/templates/yasgui-component.html +2 -2
  35. package/dist/js/angular/core/templates/cookie-policy/cookie-consent.html +1 -1
  36. package/dist/js/angular/core/templates/cookie-policy/cookie-policy.html +1 -1
  37. package/dist/js/angular/core/templates/editable-content/editable-content.html +1 -1
  38. package/dist/js/angular/core/templates/markdown-content/markdown-content.html +1 -1
  39. package/dist/js/angular/core/templates/search-resource-input.html +1 -1
  40. package/dist/js/angular/graphql/templates/create-graphql-endpoint.html +2 -2
  41. package/dist/js/angular/graphql/templates/graphql-endpoint-management.html +1 -1
  42. package/dist/js/angular/graphql/templates/graphql-playground.html +2 -2
  43. package/dist/js/angular/graphql/templates/modal/endpoint-configuration-modal.html +1 -1
  44. package/dist/js/angular/graphql/templates/modal/endpoint-generation-failure-result-modal.html +1 -1
  45. package/dist/js/angular/graphql/templates/modal/import-endpoint-definition-modal.html +1 -1
  46. package/dist/js/angular/security/templates/user.html +2 -2
  47. package/dist/js/angular/security/templates/users.html +1 -1
  48. package/dist/js/angular/ttyg/templates/agent-list.html +1 -1
  49. package/dist/js/angular/ttyg/templates/agent-select-menu.html +1 -1
  50. package/dist/js/angular/ttyg/templates/chat-item-detail.html +1 -1
  51. package/dist/js/angular/ttyg/templates/chat-list.html +1 -1
  52. package/dist/js/angular/ttyg/templates/chat-panel.html +1 -1
  53. package/dist/js/angular/ttyg/templates/modal/agent-instructions-explain-modal.html +1 -1
  54. package/dist/js/angular/ttyg/templates/modal/agent-settings-modal.html +3 -3
  55. package/dist/js/angular/ttyg/templates/modal/external-integration-configuration-modal.html +1 -1
  56. package/dist/js/angular/ttyg/templates/no-agents-view.html +1 -1
  57. package/dist/js/angular/ttyg/templates/ttyg.html +1 -1
  58. package/dist/legacyWorkbench.22aacd4da951e43b2876.js +3 -0
  59. package/dist/{legacyWorkbench.cdb2fb6bc573f9a9b49d.js.map → legacyWorkbench.22aacd4da951e43b2876.js.map} +1 -1
  60. package/dist/license-checker.json +19 -32
  61. package/dist/{main.8dd8af071ff43504a729.js → main.3665e695a5c0d2e9b4c0.js} +3 -3
  62. package/dist/{main.8dd8af071ff43504a729.js.map → main.3665e695a5c0d2e9b4c0.js.map} +1 -1
  63. package/dist/pages/aclmanagement.html +1 -1
  64. package/dist/pages/autocomplete.html +1 -1
  65. package/dist/pages/choose-repository-type.html +1 -1
  66. package/dist/pages/cluster-management/clusterInfo.html +2 -2
  67. package/dist/pages/create-index.html +1 -1
  68. package/dist/pages/dependencies.html +1 -1
  69. package/dist/pages/domainRangeInfo.html +2 -2
  70. package/dist/pages/edit.html +1 -1
  71. package/dist/pages/explore.html +1 -1
  72. package/dist/pages/export.html +1 -1
  73. package/dist/pages/find.html +1 -1
  74. package/dist/pages/graph-config/saveGraphConfig.html +8 -8
  75. package/dist/pages/graphs-visualizations.html +7 -7
  76. package/dist/pages/guides.html +1 -1
  77. package/dist/pages/home.html +1 -1
  78. package/dist/pages/import.html +2 -2
  79. package/dist/pages/jdbc-create.html +1 -1
  80. package/dist/pages/jdbc.html +1 -1
  81. package/dist/pages/monitor/backup-and-restore.html +1 -1
  82. package/dist/pages/monitor/queries.html +1 -1
  83. package/dist/pages/monitor/resources.html +1 -1
  84. package/dist/pages/namespaces.html +2 -2
  85. package/dist/pages/plugins.html +1 -1
  86. package/dist/pages/rdfClassHierarchyInfo.html +7 -7
  87. package/dist/pages/rdfrank.html +2 -2
  88. package/dist/pages/repositories.html +1 -1
  89. package/dist/pages/repository.html +1 -1
  90. package/dist/pages/similarity-indexes.html +1 -1
  91. package/dist/pages/sparql-editor.html +1 -1
  92. package/dist/pages/sparql-template-create.html +1 -1
  93. package/dist/pages/sparql-templates.html +1 -1
  94. package/dist/pages/ux-test1.html +2 -2
  95. package/dist/pages/webapi.html +2 -2
  96. package/dist/res/swagger5/index.html +11 -11
  97. package/dist/workbench/license-checker.json +17 -17
  98. package/dist/workbench/workbench/{166.2aacf63cc15a20ef.js → 166.2447618295f9f57e.js} +1 -1
  99. package/dist/workbench/workbench/workbenchApp.js +1 -1
  100. package/package.json +1 -1
  101. package/dist/31415.aba4cdda066690a2769d.bundle.js.map +0 -1
  102. package/dist/3395.ded80bae10361d1d4573.bundle.js +0 -2
  103. package/dist/3395.ded80bae10361d1d4573.bundle.js.map +0 -1
  104. package/dist/65677.0e8ab27737300e991c60.bundle.js +0 -2
  105. package/dist/65677.0e8ab27737300e991c60.bundle.js.map +0 -1
  106. package/dist/73334.1b0e8bb637fbd1ce73ef.bundle.js +0 -2
  107. package/dist/73334.1b0e8bb637fbd1ce73ef.bundle.js.map +0 -1
  108. package/dist/80933.bd439bb6f5fad66637ac.bundle.js +0 -2
  109. package/dist/80933.bd439bb6f5fad66637ac.bundle.js.map +0 -1
  110. package/dist/82917.c97f7cec0372ff2f6fdd.bundle.js +0 -2
  111. package/dist/85698.ee9962969a310107ccf8.bundle.js +0 -2
  112. package/dist/85698.ee9962969a310107ccf8.bundle.js.map +0 -1
  113. package/dist/86099.ab3779d6538a6648b2b7.bundle.js +0 -2
  114. package/dist/86099.ab3779d6538a6648b2b7.bundle.js.map +0 -1
  115. package/dist/8981.ebd2159613630a2daf7e.bundle.js +0 -2
  116. package/dist/8981.ebd2159613630a2daf7e.bundle.js.map +0 -1
  117. package/dist/legacyWorkbench.cdb2fb6bc573f9a9b49d.js +0 -3
  118. /package/dist/{legacyWorkbench.cdb2fb6bc573f9a9b49d.js.LICENSE.txt → legacyWorkbench.22aacd4da951e43b2876.js.LICENSE.txt} +0 -0
  119. /package/dist/{main.8dd8af071ff43504a729.js.LICENSE.txt → main.3665e695a5c0d2e9b4c0.js.LICENSE.txt} +0 -0
@@ -0,0 +1,2 @@
1
+ export const __webpack_esm_id__=85698;export const __webpack_esm_ids__=[4552,33931,58325,80706,85698];export const __webpack_esm_modules__={85698(e,t,n){n(4552),n(33931);var r=n(8981),a=n(58325),o=n(57154);const i={minLen:"1",maxLen:"255"};function s(e,t,n,s,c,l,g){return{restrict:"E",templateUrl:"js/angular/clustermanagement/templates/cluster-configuration/multi-region.html",scope:{clusterModel:"=",clusterConfiguration:"="},link:e=>{const u=(0,o.service)(o.AuthorizationService),_=(0,o.service)(o.AuthenticationService),d=[];e.topology=void 0,e.TopologyState=a.zB,e.isAdmin=!1,e.addingTag=!1,e.loaderTimeout=void 0,e.secondaryTag=void 0,e.TagLengthConstraints=i,e.loader=!1,e.statusLoader=!1,e.add=()=>{e.addingTag=!0},e.cancel=()=>{e.addingTag=!1},e.createTag=n=>{const r={tag:n};return p(!0),l.addCusterTag(r).then(()=>{s.success(t.instant("cluster_management.cluster_configuration_multi_region.created_tag",{tag:n}))}).catch(e=>{const n=getError(e);s.error(n,t.instant("cluster_management.cluster_configuration_multi_region.error.creating"))}).finally(()=>{e.addingTag=!1,p(!1)})},e.deleteTag=e=>{c.openSimpleModal({title:t.instant("cluster_management.cluster_configuration_multi_region.confirm.delete",{tag:e}),message:t.instant("cluster_management.cluster_configuration_multi_region.confirm.warning"),warning:!0,backdrop:"static",stopPropagation:!0}).result.then(()=>(p(!0),l.deleteClusterTag(e))).then(()=>s.success(t.instant("cluster_management.cluster_configuration_multi_region.deleted_tag",{tag:e}))).catch(e=>{if("cancel"===e||"escape key press"===e)return;const n=getError(e);s.error(n,t.instant("cluster_management.cluster_configuration_multi_region.error.deleting"))}).finally(()=>p(!1))},e.enableSecondaryMode=()=>{e.addingTag=!1;const n={title:t.instant("cluster_management.cluster_configuration_multi_region.confirm.enable_secondary"),message:t.instant("cluster_management.cluster_configuration_multi_region.confirm.enable_secondary_warning"),warning:!0,backdrop:"static",confirmButtonKey:"common.ok.btn",stopPropagation:!0};c.openSimpleModal(n).result.then(()=>m()).then(e=>(p(!0),l.enableSecondaryMode(e))).then(()=>s.success(t.instant("cluster_management.cluster_configuration_multi_region.secondary_enabled"))).catch(e=>{if("cancel"===e||"escape key press"===e)return;const n=getError(e);s.error(n,t.instant("cluster_management.cluster_configuration_multi_region.error.secondary"))}).finally(()=>p(!1))},e.disableSecondaryMode=()=>{c.openSimpleModal({title:t.instant("cluster_management.cluster_configuration_multi_region.confirm.disable_secondary_mode"),message:t.instant("cluster_management.cluster_configuration_multi_region.confirm.disable_secondary_mode_warning"),warning:!0,backdrop:"static",stopPropagation:!0}).result.then(()=>(p(!0),l.disableSecondaryMode())).then(()=>s.success(t.instant("cluster_management.cluster_configuration_multi_region.disabled_secondary_mode"))).catch(e=>{if("cancel"===e||"escape key press"===e)return;const n=getError(e);s.error(n,t.instant("cluster_management.cluster_configuration_multi_region.error.disabling"))}).finally(()=>p(!1))};const m=()=>{const e={title:t.instant("cluster_management.cluster_configuration_multi_region.secondary_cluster_settings"),templateUrl:"js/angular/clustermanagement/templates/modal/secondary-mode-modal.html",controller:["$scope","$uibModalInstance","config",function(e,t,n){e.rpcAddress="",e.tag="",e.title=n.title,e.onClick=e=>e.stopPropagation(),e.ok=()=>{t.close({primaryNode:e.rpcAddress,tag:e.tag})},e.cancel=()=>{t.dismiss("cancel")}}],size:"lg",warning:!0,backdrop:"static"};return c.openCustomModal(e).result},N=n=>{O(!0),l.getClusterConfig().then(t=>{e.secondaryTag=r.v9.fromJSON(t.data).secondaryTag,(t=>{const n=t.nodes.find(e=>e.nodeState===a.UY.LEADER);e.topology=n?.topologyStatus})(r.kY.fromJSON(n)),e.primaryTags=r.v9.fromJSON(t.data).primaryTags}).catch(e=>{const n=getError(e);s.error(n,t.instant("cluster_management.cluster_configuration_multi_region.error.disabling"))}).finally(()=>O(!1))},p=(t,n)=>{t?(e.loaderMessage=n,e.loader=!0):e.loader=!1},O=(t,r)=>{n.cancel(e.loaderTimeout),t?(e.loaderMessage=r,e.loaderTimeout=n(()=>{e.statusLoader=t},150)):e.statusLoader=!1};e.$on("$destroy",function(){d.forEach(e=>e())}),e.isAdmin=_.isAuthenticated()&&u.isAdmin(),d.push(e.$watch("clusterModel",function(e,t){e!==t&&N(e)},!0)),d.push(g.onShowClusterConfigurationPanel(t=>{t||(e.addingTag=!1)})),N(e.clusterModel)}}}angular.module("graphdb.framework.clustermanagement.directives.cluster-configuration.multi-region",["graphdb.framework.core.directives.ascii-validator","graphdb.framework.core.directives.length-validator"]).directive("multiRegion",s),s.$inject=["$jwtAuth","$translate","$timeout","toastr","ModalService","ClusterRestService","ClusterViewContextService"]},4552(){angular.module("graphdb.framework.core.directives.ascii-validator",[]).directive("asciiValidator",function(){return{restrict:"A",require:"ngModel",link:function(e,t,n,r){function a(e){const t=/^[\x21-\x7E]*$/.test(e);return r.$setValidity("asciiValidator",t),e}r.$parsers.push(a),r.$formatters.push(a)}}})},33931(){angular.module("graphdb.framework.core.directives.length-validator",[]).directive("lengthValidator",function(){return{restrict:"A",require:"ngModel",link:function(e,t,n,r){function a(e){const t=n.minLength?parseInt(n.minLength,10):0,a=n.maxLength?parseInt(n.maxLength,10):1/0,o=e&&e.length>=t&&e.length<=a;return r.$setValidity("lengthValidator",o),e}r.$parsers.push(a),r.$formatters.push(a)}}})},58325(e,t,n){n.d(t,{UY:()=>r,gC:()=>o,vQ:()=>a,zB:()=>i});const r={LEADER:"LEADER",FOLLOWER:"FOLLOWER",CANDIDATE:"CANDIDATE",OUT_OF_SYNC:"OUT_OF_SYNC",NO_CONNECTION:"NO_CONNECTION",READ_ONLY:"READ_ONLY",RESTRICTED:"RESTRICTED",NO_CLUSTER:"NO_CLUSTER"},a={SEARCHING_FOR_NODE:"SEARCHING_FOR_NODE",WAITING_FOR_SNAPSHOT:"WAITING_FOR_SNAPSHOT",RECEIVING_SNAPSHOT:"RECEIVING_SNAPSHOT",APPLYING_SNAPSHOT:"APPLYING_SNAPSHOT",BUILDING_SNAPSHOT:"BUILDING_SNAPSHOT",SENDING_SNAPSHOT:"SENDING_SNAPSHOT",RECOVERY_OPERATION_FAILURE_WARNING:"RECOVERY_OPERATION_FAILURE_WARNING"},o={IN_SYNC:"IN_SYNC",OUT_OF_SYNC:"OUT_OF_SYNC",SYNCING:"SYNCING",NO_CONNECTION:"NO_CONNECTION",RECEIVING_SNAPSHOT:"RECEIVING_SNAPSHOT"},i={PRIMARY_NODE:"PRIMARY_NODE",SECONDARY_NODE:"SECONDARY_NODE"}}};
2
+ //# sourceMappingURL=85698.b186c57a2d0edee24110.bundle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"85698.b186c57a2d0edee24110.bundle.js","mappings":"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","sources":["webpack://root-config/./packages/legacy-workbench/src/js/angular/clustermanagement/directives/cluster-configuration/multi-region.directive.js","webpack://root-config/./packages/legacy-workbench/src/js/angular/core/directives/ascii-validator.directive.js","webpack://root-config/./packages/legacy-workbench/src/js/angular/core/directives/length-validator.directive.js","webpack://root-config/./packages/legacy-workbench/src/js/angular/models/clustermanagement/states.js"],"sourcesContent":["import 'angular/core/directives/ascii-validator.directive';\nimport 'angular/core/directives/length-validator.directive';\nimport {ClusterConfiguration, ClusterModel} from '../../../models/clustermanagement/cluster';\nimport {NodeState, TopologyState} from '../../../models/clustermanagement/states';\nimport {\n AuthorizationService,\n AuthenticationService,\n service,\n} from '@ontotext/workbench-api';\n\nconst modules = [\n 'graphdb.framework.core.directives.ascii-validator',\n 'graphdb.framework.core.directives.length-validator',\n];\n\nconst TagLengthConstraints = {\n minLen: '1',\n maxLen: '255',\n};\n\nangular\n .module('graphdb.framework.clustermanagement.directives.cluster-configuration.multi-region', modules)\n .directive('multiRegion', MultiRegion);\n\nMultiRegion.$inject = ['$jwtAuth', '$translate', '$timeout', 'toastr', 'ModalService', 'ClusterRestService', 'ClusterViewContextService'];\n\nfunction MultiRegion($jwtAuth, $translate, $timeout, toastr, ModalService, ClusterRestService, ClusterViewContextService) {\n return {\n restrict: 'E',\n templateUrl: 'js/angular/clustermanagement/templates/cluster-configuration/multi-region.html',\n scope: {\n clusterModel: '=',\n clusterConfiguration: '=',\n },\n link: ($scope) => {\n // =========================\n // Private variables\n // =========================\n const authorizationService = service(AuthorizationService);\n const authenticationService = service(AuthenticationService);\n const subscriptions = [];\n\n // =========================\n // Public variables\n // =========================\n /**\n * @type {TopologyStatus}\n */\n $scope.topology = undefined;\n $scope.TopologyState = TopologyState;\n $scope.isAdmin = false;\n $scope.addingTag = false;\n $scope.loaderTimeout = undefined;\n $scope.secondaryTag = undefined;\n $scope.TagLengthConstraints = TagLengthConstraints;\n $scope.loader = false;\n $scope.statusLoader = false;\n\n // =========================\n // Public functions\n // =========================\n $scope.add = () => {\n $scope.addingTag = true;\n };\n\n $scope.cancel = () => {\n $scope.addingTag = false;\n };\n\n $scope.createTag = (tag) => {\n const payload = {\n tag,\n };\n setLoader(true);\n return ClusterRestService.addCusterTag(payload)\n .then(() => {\n toastr.success($translate.instant('cluster_management.cluster_configuration_multi_region.created_tag', {tag}));\n }).catch((response) => {\n const msg = getError(response);\n toastr.error(msg, $translate.instant('cluster_management.cluster_configuration_multi_region.error.creating'));\n }).finally(() => {\n $scope.addingTag = false;\n setLoader(false);\n });\n };\n\n $scope.deleteTag = (tag) => {\n ModalService.openSimpleModal({\n title: $translate.instant('cluster_management.cluster_configuration_multi_region.confirm.delete', {tag}),\n message: $translate.instant('cluster_management.cluster_configuration_multi_region.confirm.warning'),\n warning: true,\n backdrop: 'static',\n stopPropagation: true,\n }).result\n .then(() => {\n setLoader(true);\n return ClusterRestService.deleteClusterTag(tag);\n })\n .then(() => toastr.success($translate.instant('cluster_management.cluster_configuration_multi_region.deleted_tag', {tag})))\n .catch((response) => {\n if (response === 'cancel' || response === 'escape key press') {\n return;\n }\n const msg = getError(response);\n toastr.error(msg, $translate.instant('cluster_management.cluster_configuration_multi_region.error.deleting'));\n })\n .finally(() => setLoader(false));\n };\n\n $scope.enableSecondaryMode = () => {\n $scope.addingTag = false;\n const confirmConfig = {\n title: $translate.instant('cluster_management.cluster_configuration_multi_region.confirm.enable_secondary'),\n message: $translate.instant('cluster_management.cluster_configuration_multi_region.confirm.enable_secondary_warning'),\n warning: true,\n backdrop: 'static',\n confirmButtonKey: 'common.ok.btn',\n stopPropagation: true,\n };\n\n ModalService.openSimpleModal(confirmConfig).result\n .then(() => openSecondaryModeModal())\n .then((payload) => {\n setLoader(true);\n return ClusterRestService.enableSecondaryMode(payload);\n })\n .then(() => toastr.success($translate.instant('cluster_management.cluster_configuration_multi_region.secondary_enabled')))\n .catch((response) => {\n if (response === 'cancel' || response === 'escape key press') {\n return;\n }\n const msg = getError(response);\n toastr.error(msg, $translate.instant('cluster_management.cluster_configuration_multi_region.error.secondary'));\n })\n .finally(() => setLoader(false));\n };\n\n $scope.disableSecondaryMode = () => {\n ModalService.openSimpleModal({\n title: $translate.instant('cluster_management.cluster_configuration_multi_region.confirm.disable_secondary_mode'),\n message: $translate.instant('cluster_management.cluster_configuration_multi_region.confirm.disable_secondary_mode_warning'),\n warning: true,\n backdrop: 'static',\n stopPropagation: true,\n }).result\n .then(() => {\n setLoader(true);\n return ClusterRestService.disableSecondaryMode();\n })\n .then(() => toastr.success($translate.instant('cluster_management.cluster_configuration_multi_region.disabled_secondary_mode')))\n .catch((response) => {\n if (response === 'cancel' || response === 'escape key press') {\n return;\n }\n const msg = getError(response);\n toastr.error(msg, $translate.instant('cluster_management.cluster_configuration_multi_region.error.disabling'));\n })\n .finally(() => setLoader(false));\n };\n\n // =========================\n // Private functions\n // =========================\n const setTopology = (clusterModel) => {\n const leader = clusterModel.nodes.find((node) => node.nodeState === NodeState.LEADER);\n $scope.topology = leader?.topologyStatus;\n };\n\n const openSecondaryModeModal = () => {\n const secondaryModalConfig = {\n title: $translate.instant('cluster_management.cluster_configuration_multi_region.secondary_cluster_settings'),\n templateUrl: 'js/angular/clustermanagement/templates/modal/secondary-mode-modal.html',\n controller: ['$scope', '$uibModalInstance', 'config', secondaryModeModalController],\n size: 'lg',\n warning: true,\n backdrop: 'static',\n };\n\n return ModalService.openCustomModal(secondaryModalConfig).result;\n\n // Controller for the secondary mode modal\n function secondaryModeModalController($scope, $uibModalInstance, config) {\n $scope.rpcAddress = '';\n $scope.tag = '';\n $scope.title = config.title;\n\n $scope.onClick = ($event) => $event.stopPropagation();\n $scope.ok = () => {\n $uibModalInstance.close({\n primaryNode: $scope.rpcAddress,\n tag: $scope.tag,\n });\n };\n $scope.cancel = () => {\n $uibModalInstance.dismiss('cancel');\n };\n }\n };\n\n const updateClusterData = (clusterModel) => {\n setStatusLoader(true);\n ClusterRestService.getClusterConfig()\n .then((response) => {\n $scope.secondaryTag = ClusterConfiguration.fromJSON(response.data).secondaryTag;\n setTopology(ClusterModel.fromJSON(clusterModel));\n $scope.primaryTags = ClusterConfiguration.fromJSON(response.data).primaryTags;\n }).catch((response) => {\n const msg = getError(response);\n toastr.error(msg, $translate.instant('cluster_management.cluster_configuration_multi_region.error.disabling'));\n })\n .finally(() => setStatusLoader(false));\n };\n\n const handleClusterConfigurationPanelVisibility = (show) => {\n if (!show) {\n $scope.addingTag = false;\n }\n };\n\n const setLoader = (loader, message) => {\n if (loader) {\n $scope.loaderMessage = message;\n $scope.loader = true;\n } else {\n $scope.loader = false;\n }\n };\n\n const setStatusLoader = (loader, message) => {\n $timeout.cancel($scope.loaderTimeout);\n if (loader) {\n $scope.loaderMessage = message;\n $scope.loaderTimeout = $timeout(() => {\n $scope.statusLoader = loader;\n }, 150);\n } else {\n $scope.statusLoader = false;\n }\n };\n\n // =========================\n // Events and watchers\n // =========================\n const subscribeHandlers = () => {\n subscriptions.push($scope.$watch('clusterModel', function(newValue, oldValue) {\n if (newValue !== oldValue) {\n updateClusterData(newValue);\n }\n }, true));\n subscriptions.push(ClusterViewContextService.onShowClusterConfigurationPanel(handleClusterConfigurationPanelVisibility));\n };\n\n const removeAllListeners = () => {\n subscriptions.forEach((subscription) => subscription());\n };\n\n $scope.$on('$destroy', function() {\n removeAllListeners();\n });\n\n // =========================\n // Initialization\n // =========================\n const init = () => {\n $scope.isAdmin = authenticationService.isAuthenticated() && authorizationService.isAdmin();\n subscribeHandlers();\n updateClusterData($scope.clusterModel);\n };\n init();\n },\n };\n}\n","/**\n * @ngdoc directive\n * @name asciiValidator\n * @restrict A\n * @module graphdb.framework.core.directives.ascii-validator\n * @description\n * A custom AngularJS directive that validates if an input string contains only printable ASCII characters,\n * excluding spaces. Printable ASCII characters range from ASCII code 33 (`!`) to ASCII code 126 (`~`).\n *\n * **Usage:**\n * ```html\n * <input type=\"text\" ng-model=\"inputText\" ascii-validator>\n * ```\n *\n * @requires ngModel\n */\nangular.module('graphdb.framework.core.directives.ascii-validator', [])\n .directive('asciiValidator', function () {\n return {\n restrict: 'A',\n require: 'ngModel',\n link: function(scope, element, attrs, ngModel) {\n function validateAscii(value) {\n // Regular expression for printable ASCII characters excluding space (ASCII codes 33-126)\n const asciiRegex = /^[\\x21-\\x7E]*$/;\n\n const isValid = asciiRegex.test(value);\n ngModel.$setValidity('asciiValidator', isValid);\n return value;\n }\n ngModel.$parsers.push(validateAscii);\n ngModel.$formatters.push(validateAscii);\n }\n };\n});\n","/**\n * @ngdoc directive\n * @name lengthValidator\n * @restrict A\n * @module graphdb.framework.core.directives.length-validator\n * @description\n * A custom AngularJS directive that validates the length of an input string.\n * The directive ensures that the string length falls within a specified range,\n * using the `min-length` and `max-length` attributes.\n *\n * If no `min-length` is provided, the minimum length is set to 0.\n * If no `max-length` is provided, the maximum length is set to Infinity.\n *\n * **Usage:**\n * ```html\n * <input type=\"text\" ng-model=\"inputText\" length-validator min-length=\"5\" max-length=\"10\">\n * ```\n *\n * @param {number} minLength (optional) The minimum length of the input string. Defaults to 0 if not provided.\n * @param {number} maxLength (optional) The maximum length of the input string. Defaults to Infinity if not provided.\n * @requires ngModel\n */\nangular.module('graphdb.framework.core.directives.length-validator', [])\n .directive('lengthValidator', function () {\n return {\n restrict: 'A',\n require: 'ngModel',\n link: function(scope, element, attrs, ngModel) {\n function validateLength(value) {\n const minLength = attrs.minLength ? parseInt(attrs.minLength, 10) : 0;\n const maxLength = attrs.maxLength ? parseInt(attrs.maxLength, 10) : Infinity;\n const isValid = value && value.length >= minLength && value.length <= maxLength;\n ngModel.$setValidity('lengthValidator', isValid);\n return value;\n }\n ngModel.$parsers.push(validateLength);\n ngModel.$formatters.push(validateLength);\n }\n };\n});\n","export const NodeState = {\n LEADER: 'LEADER',\n FOLLOWER: 'FOLLOWER',\n CANDIDATE: 'CANDIDATE',\n OUT_OF_SYNC: 'OUT_OF_SYNC',\n NO_CONNECTION: 'NO_CONNECTION',\n READ_ONLY: 'READ_ONLY',\n RESTRICTED: 'RESTRICTED',\n NO_CLUSTER: 'NO_CLUSTER'\n};\n\nexport const RecoveryState = {\n SEARCHING_FOR_NODE: 'SEARCHING_FOR_NODE',\n WAITING_FOR_SNAPSHOT: 'WAITING_FOR_SNAPSHOT',\n RECEIVING_SNAPSHOT: 'RECEIVING_SNAPSHOT',\n APPLYING_SNAPSHOT: 'APPLYING_SNAPSHOT',\n BUILDING_SNAPSHOT: 'BUILDING_SNAPSHOT',\n SENDING_SNAPSHOT: 'SENDING_SNAPSHOT',\n RECOVERY_OPERATION_FAILURE_WARNING: 'RECOVERY_OPERATION_FAILURE_WARNING'\n};\n\nexport const LinkState = {\n IN_SYNC: 'IN_SYNC',\n OUT_OF_SYNC: 'OUT_OF_SYNC',\n SYNCING: 'SYNCING',\n NO_CONNECTION: 'NO_CONNECTION',\n // complimentary state, built based on the recovery state of two nodes when one is receiving snapshot to the other\n RECEIVING_SNAPSHOT: 'RECEIVING_SNAPSHOT'\n};\n\nexport const TopologyState = {\n PRIMARY_NODE: 'PRIMARY_NODE',\n SECONDARY_NODE: 'SECONDARY_NODE'\n};\n"],"names":["TagLengthConstraints","minLen","maxLen","MultiRegion","$jwtAuth","$translate","$timeout","toastr","ModalService","ClusterRestService","ClusterViewContextService","restrict","templateUrl","scope","clusterModel","clusterConfiguration","link","$scope","authorizationService","service","AuthorizationService","authenticationService","AuthenticationService","subscriptions","topology","undefined","TopologyState","isAdmin","addingTag","loaderTimeout","secondaryTag","loader","statusLoader","add","cancel","createTag","tag","payload","setLoader","addCusterTag","then","success","instant","catch","response","msg","getError","error","finally","deleteTag","openSimpleModal","title","message","warning","backdrop","stopPropagation","result","deleteClusterTag","enableSecondaryMode","confirmConfig","confirmButtonKey","openSecondaryModeModal","disableSecondaryMode","secondaryModalConfig","controller","$uibModalInstance","config","rpcAddress","onClick","$event","ok","close","primaryNode","dismiss","size","openCustomModal","updateClusterData","setStatusLoader","getClusterConfig","ClusterConfiguration","fromJSON","data","leader","nodes","find","node","nodeState","NodeState","LEADER","topologyStatus","setTopology","ClusterModel","primaryTags","loaderMessage","$on","forEach","subscription","isAuthenticated","push","$watch","newValue","oldValue","onShowClusterConfigurationPanel","show","angular","module","directive","$inject","require","element","attrs","ngModel","validateAscii","value","isValid","test","$setValidity","$parsers","$formatters","validateLength","minLength","parseInt","maxLength","Infinity","length","FOLLOWER","CANDIDATE","OUT_OF_SYNC","NO_CONNECTION","READ_ONLY","RESTRICTED","NO_CLUSTER","RecoveryState","SEARCHING_FOR_NODE","WAITING_FOR_SNAPSHOT","RECEIVING_SNAPSHOT","APPLYING_SNAPSHOT","BUILDING_SNAPSHOT","SENDING_SNAPSHOT","RECOVERY_OPERATION_FAILURE_WARNING","LinkState","IN_SYNC","SYNCING","PRIMARY_NODE","SECONDARY_NODE"],"sourceRoot":""}
@@ -0,0 +1,2 @@
1
+ export const __webpack_esm_id__=86099;export const __webpack_esm_ids__=[86099];export const __webpack_esm_modules__={86099(e,t,n){var a=n(82667),r=n(89687),i=n(9508),s=n(44482),c=n(66886),o=(n(38473),n(57154));function l(e,t,n,l,d,h,u,f,p,g,x,m){return{restrict:"AE",template:'<div id="classChart"></div>',scope:{classHierarchyData:"=",flattenedClassNames:"=",selectedClass:"=",currentSliderValue:"=",showClassInfoPanel:"=",showExternalElements:"=",hidePrefixes:"=",currentBrowserLimit:"="},link:function(y,A,v){!function(y){let A=!1;let v,S;const C=s.pack().size([780,780]),R=s.scaleLinear().domain([0,4]).range(["hsl(19, 70%, 90%)","hsl(19, 70%, 50%)"]).interpolate(s.interpolateHcl),E=s.select("#classChart").insert("svg:svg","h2").attr("viewBox","0 0 800 800").attr("preserveAspectRatio","xMidYMid meet").on("dblclick.zoom",null);function P(){return E.append("svg:g").attrs({id:"main-group",transform:"translate(400,400)"})}function w(){return"true"===g.get(x.CLASS_HIERARCHY_HIDE_PREFIXES)}function H(){const e=c.A.Export.getCSSRules("css/rdf-class-hierarchy-labels.css?v=3.5.1");s.selectAll("#main-group").append("defs"),$("defs").append('<style type="text/css"><![CDATA['+e+"]]></style>"),s.selectAll("g").style("opacity",1);const t=c.A.Export.generateBase64ImageSource("#classChart svg");s.select(this).attrs({href:t,download:"class-hierarchy-"+h.getActiveRepository()+".svg"})}y.hidePrefixes=w();let I=P();const T=!!y.classHierarchyData?.classCount,L=h.getActiveRepository()&&!h.isSystemRepository();let k,D,N,b,F;(0,o.service)(o.LicenseContextService).onLicenseChanged(t=>{t?.valid&&!T&&L&&function(){e.loader=!0,e.hierarchyError=!1;const t=g.get(`classHierarchy-selectedGraph-${h.getActiveRepository()}`);n.getClassHierarchyData(null!==t?t.contextID.uri:"").success(function(t,n){e.loader=!1,207===n&&u.warning(m.instant("graphexplore.update.diagram"),m.instant("graphexplore.repository.data.changed")),y.classHierarchyData=t,s.select("#download-svg").on("mouseover",H)}).error(function(t){e.loader=!1,e.hierarchyError=getError(t),u.error(m.instant("graphexplore.error.request.failed",{name:p,error:getError(t)}))})}()});const O={};function z(n,c,o,h){b&&b(),F&&F(),s.selectAll("#main-group").remove(),I=P(),r.A.SingleChild.addPlaceholders(n,!0),S=s.hierarchy(n),S.sum(function(e){return e.size}),N=o||S,C(S);const u=S.descendants();let g;N.isInFocusTransitive=!0,r.A.SingleChild.removePlaceholders(u),r.A.SingleChild.centerNodes(u),r.A.SingleChild.makePositionsRelativeToZero(u),v||(v=(0,a.A)().attr("class","d3-tip").customPosition(function(e,t){return{top:"inherit",bottom:l.innerHeight-t.clientY+"px",right:l.innerWidth-t.clientX+"px"}}).html(function(e){return e.data.name}),E.call(v));const x=I.selectAll("circle").data(u).enter().append("g");c.doFade&&x.each(function(e){i.A.Transition.fadeIn(s.select(this),550)});let m=[];const w=x.append("circle").attr("class",function(e){return e.data.role}).attr("data-test",function(e){return"class-"+e.data.name}).attr("guide-selector",function(e){return"class-"+e.data.name}).style("fill",function(e){return e.children?R(e.depth):"#E0D0D0"}).each(function(e){if(e.circle=s.select(this),e.data.name!==p){const t=e.data.name;m.push({name:t}),O[[t]]=e,e.circle.classed("rdf-class",!0),e.circle.on("mouseover",function(t){c.noPrefixes||e.textHidden?v.show(e,t):v.hide(e)}),e.circle.on("mouseout",v.hide)}}).on("gdb-focus",(e,t)=>D(t)).on("gdb-zoom",(e,t)=>Z(t));let H;function T(e){s.selectAll(".selected").classed("selected",e.selected=!1),e.circle.classed("selected",e.selected=!0),H=e}function L(){y.showClassInfoPanel=!1}m&&(m=_.uniqBy(m,"name"),y.flattenedClassNames=m);const $=i.A.Click.delayDblClick();s.selectAll(".parent, .topLevelParent, .child, .root").call($),D=function(e){Z(e),e.data.name===p?(L(),s.selectAll(".selected").classed("selected",!1)):(T(e),A||(y.selectedClass=H,y.showClassInfoPanel=!0),y.$on("sidePanelClosed",function(t){s.selectAll(".selected").classed("selected",e.selected=!1)}))},$.on("click",function(e,t){t.data.id&&l.history.pushState({id:t.data.id},"classHierarchyPage"+t.data.id,"hierarchy#"+t.data.id),v.hide(),D(t)}),$.on("dblclick",function(t,a){a!==n&&(v.hide(),T(a),e.$broadcast("goToDomainRangeGraphView",H,N),t.stopPropagation())});let z=0;E.on("wheel",function(e){v.hide(),e.preventDefault(),e.stopPropagation();const t=Date.now();if(!(t-z>100))return;z=t;let n="";e.deltaY<=-1?n="in":e.deltaY>=1&&(n="out");let a=e.target.__data__;if(a||(a=N),"in"===n){if(a!==N){for(;a.parent&&!a.parent.isInFocusTransitive;)a=a.parent;a.depth<N.depth&&(a=N)}if(a===N&&a.children){let e=a.children[0];for(let t=1;t<a.children.length;t++)a.children[t].sortingRank>e.sortingRank&&(e=a.children[t]);e.children&&(a=e)}else a.children||(a=a.parent);Z(a,!0)}else"out"===n&&(a=N.parent,a&&Z(a,!0));N.data.name===p&&l.history.replaceState({id:1},"classHierarchyPage1","hierarchy#1"),U()});const Y=I.selectAll("text").data(u).enter().append("text").attr("class",function(e){return e.children&&e.children.length?"label":"label child-label"}).each(function(e){e.textSel=s.select(this)});c.noPrefixes?(Y.each(function(e){const t=e.data.name.indexOf(":");e.data.name.indexOf("http://")>-1?e.noPrefixName=e.data.name:t>-1&&(e.noPrefixName=e.data.name.substring(t+1))}),Y.style("font-size",function(e){return i.A.Text.calcFontSize(e.noPrefixName,e.r)}).text(function(e){return i.A.Text.getTextWithElipsisIfNeeded(e.noPrefixName,e.r/3)})):Y.style("font-size",function(e){return i.A.Text.calcFontSize(e.data.name,e.r)}).text(function(e){return i.A.Text.getTextWithElipsisIfNeeded(e.data.name,e.r/3)}),Y.style("display",function(e){return e.parent&&e.parent.data===N.data?(e.textHidden=this.textContent.indexOf("...")+3===this.textContent.length,null):(e.textHidden=!0,"none")}),c.doFade&&!c.keepPrevState&&Y.each(function(e){i.A.Transition.fadeIn(s.select(this),550)}),k=function(){function e(e){e&&w.each(function(t){+e===t.data.id&&D(t)})}const n=t.hash();l.onpopstate=function(t){t.state&&!t.state.skipOnPopState&&e(t.state.id)},e(n)};const B=I.selectAll("circle, text");function V(e,t){const n=800/e[2];g=e,B.attr("transform",function(t){return"translate("+(t.x-e[0])*n+","+(t.y-e[1])*n+")"}),w.attr("r",function(e){return e.r*n}),t&&Y.each(function(e){e.data.fullName!==N.data.topLevelParentUri&&N.data.topLevelParentUri!==p||(e.textSel.style("display","none"),N.children&&N.children.length?_.each(N.children,function(e){e.textSel.style("display","inline")}):N.textSel.style("display","inline"),N.parent&&_.each(N.parent.children,function(e){e.data.name!==N.data.name&&e.textSel.style("display","inline")}))}),Y.style("font-size",function(e){return c.noPrefixes?i.A.Text.calcFontSize(e.noPrefixName,e.r*n):i.A.Text.calcFontSize(e.data.name,e.r*n)}).text(function(e){return c.noPrefixes?i.A.Text.getTextWithElipsisIfNeeded(e.noPrefixName,e.r*n/3):i.A.Text.getTextWithElipsisIfNeeded(e.data.name,e.r*n/3)})}function M(e){let t=2*e+20;return 2*e/t<.3&&(t=2*e+2),t}function W(e){!e.isInFocusTransitive&&e.parent&&e.parent.isInFocusTransitive?(e.textHidden=this.textContent.indexOf("...")+3===this.textContent.length,this.style.display=""):(e.textHidden=!0,this.style.display="none")}function Z(e,t){if(d(function(){y.showExternalElements=e.data.name===p}),N===e)return;if(e.data.id&&l.history.replaceState({id:e.data.id,skipOnPopState:!0},"classHierarchyPage"+e.data.id,"hierarchy#"+e.data.id),!e.children&&(e=e.parent,N===e))return;if(t&&(L(),s.selectAll(".selected").classed("selected",!1)),N.parent){let e=N;for(;e;)e.isInFocusTransitive=!1,e=e.parent}let n=e;for(;n;)n.isInFocusTransitive=!!n.children,n=n.parent;N=e,2*N.r/(2*N.r+20)<.3||y.currentSliderValue>y.currentBrowserLimit?(V([N.x,N.y,M(N.r)]),Y.each(function(e){W.call(this,e)})):s.transition().duration(f).tween("zoom",function(e){const t=s.interpolateZoom(g,[N.x,N.y,M(N.r)]);return function(e){V(t(e))}}).selectAll("text").each(W)}V([N.x,N.y,M(N.r)],h),b=y.$on("rootFocus",function(){l.history.pushState({id:1},"classHierarchyPage1","hierarchy#1"),D(S)}),F=y.$on("classSearch",function(e){D(e)})}function U(){const t=y.classHierarchyData.classCount;let n=g.get(x.CLASS_HIERARCHY_CURRENT_SLIDER_VALUE);(!n||n>t)&&(n=t,g.set(x.CLASS_HIERARCHY_CURRENT_SLIDER_VALUE,n)),e.$broadcast("classCount",t,n)}let Y,B,V,M;window.addEventListener("resize",U),window.addEventListener("beforeunload",function e(){window.removeEventListener("resize",U),window.removeEventListener("beforeunload",e)}),y.$watch("classHierarchyData",function(){Y&&Y(),B&&B(),V&&V(),M&&M();let e=w();if(y.classHierarchyData.classCount){U();const t=structuredClone(y.classHierarchyData);const n=s.hierarchy(t).descendants().sort(function(e,t){return e.data.sortingRank>t.data.sortingRank?-1:e.data.sortingRank<t.data.sortingRank||e.data.depth>t.data.depth?1:e.data.depth<t.data.depth?-1:0});let a,r;function i(e,t){const n={keepPrevState:!0,noPrefixes:w()};r=n.noPrefixes,z(a||e,n,N,!0),d(()=>{g.set(x.CLASS_HIERARCHY_SWITCH_PREFIXES,t),k(),A=!1},70)}function c(e,n,s){if(!e)return;g.set(x.CLASS_HIERARCHY_CURRENT_SLIDER_VALUE,e),a={name:p,children:[]};const c=new Set;for(let t=1;t<=e;t++)c.add(n[t].data.id),n[t].parent===n[0]&&a.children.push(n[t].data);(function e(t){if(!t.children)return;const n=[];for(const e of t.children)c.has(e.id)&&n.push($.extend({},e));t.children=n;for(const n of t.children)e(n)})(a),s?(r=angular.isUndefined(r)?w():r,z(a,{noPrefixes:r})):i(t)}const o=g.get(x.CLASS_HIERARCHY_CURRENT_SLIDER_VALUE);if(o)c(o,n);else{const h={doFade:!0,keepPrevState:!0,noPrefixes:w()};z(t,h),k()}let l;Y=y.$watch("hidePrefixes",function(n){angular.isUndefined(n)||e?e=void 0:d(function(){A=!0,function(e){angular.isUndefined(e)||g.set(x.CLASS_HIERARCHY_HIDE_PREFIXES,e)}(n),i(t,!0)},50)},!0),B=y.$watch("currentSliderValue",function(e){c(e,n,!0)},!0),M=y.$on("onEnterKeypressSearchAction",function(e){l&&D(l)}),V=y.$on("searchedClass",function(e,t){l=O[t.name],l&&D(l)})}},!0)}(y)}}}angular.module("graphdb.framework.graphexplore.directives.class",["graphdb.framework.graphexplore.controllers.class","graphdb.framework.utils.localstorageadapter"]).constant("ZOOM_DURATION",500).constant("ROOT_OBJ_NAME","RDF Class Hierarchy").directive("rdfClassHierarchy",l),l.$inject=["$rootScope","$location","GraphDataRestService","$window","$timeout","$repositories","toastr","ZOOM_DURATION","ROOT_OBJ_NAME","LocalStorageAdapter","LSKeys","$translate"]},89687(e,t,n){n.d(t,{A:()=>r});var a=a||{};a.SingleChild={addPlaceholders:function e(t,n){if(t.children){for(var a=0;a<t.children.length;a++)e(t.children[a]);if(1===t.children.length){var r=1.2*t.size;n&&(r=.1*t.children[0].size),t.children.push({name:"placeholder",size:r})}}},removePlaceholders:function e(t){for(var n=t.length-1;n>=0;n--){var a=t[n];"placeholder"===a.data.name?t.splice(n,1):a.children&&e(a.children)}},centerNodes:function(e){for(var t=0;t<e.length;t++){var n=e[t];if(n.children&&1===n.children.length){var a=n.x-n.children[0].x;n.children[0].x+=a,r(n.children[0],a)}}function r(e,t){if(e.children)for(var n=0;n<e.children.length;n++)e.children[n].x+=t,r(e.children[n],t)}},makePositionsRelativeToZero:function(e){for(var t=e[0].x,n=e[0].y,a=0;a<e.length;a++){var r=e[a];r.x-=t,r.y-=n}}};const r=a},66886(e,t,n){n.d(t,{A:()=>i}),n(11014);const a={selectAll:n(44482).selectAll};var r=r||{};r.Export={getCSSRules:function(e){const t=$('link[href="'+e+'"]')[0].sheet.rules;let n="";return _.each(t,function(e){n+=e.cssText}),n},generateBase64ImageSource:function(e){e||(e="svg");const t=a.selectAll(e).attr("version","1.1").attr("xmlns","http://www.w3.org/2000/svg").node().parentNode.innerHTML;return"data:image/svg+xml;charset=utf-8;base64,"+btoa(unescape(encodeURIComponent(t)))}};const i=r}};
2
+ //# sourceMappingURL=86099.959943bc458a7ef148e9.bundle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"86099.959943bc458a7ef148e9.bundle.js","mappings":"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","sources":["webpack://root-config/./packages/legacy-workbench/src/js/angular/graphexplore/directives/rdf-class-hierarchy.directive.js","webpack://root-config/./packages/legacy-workbench/src/js/lib/common/circle-packing.js","webpack://root-config/./packages/legacy-workbench/src/js/lib/common/svg-export.js"],"sourcesContent":["/* eslint-disable no-invalid-this */\nimport d3tip from 'lib/d3-tip/d3-tip-patch';\nimport CirclePacking from 'lib/common/circle-packing';\nimport D3 from 'lib/common/d3-utils';\nimport * as d3 from 'd3';\nimport SVG from 'lib/common/svg-export';\nimport 'angular/utils/local-storage-adapter';\nimport {service, LicenseContextService} from '@ontotext/workbench-api';\n\nangular\n .module('graphdb.framework.graphexplore.directives.class', [\n 'graphdb.framework.graphexplore.controllers.class',\n 'graphdb.framework.utils.localstorageadapter',\n ])\n .constant(\"ZOOM_DURATION\", 500)\n .constant(\"ROOT_OBJ_NAME\", \"RDF Class Hierarchy\")\n .directive('rdfClassHierarchy', classHierarchyDirective);\n\nclassHierarchyDirective.$inject = ['$rootScope', '$location', 'GraphDataRestService', '$window', '$timeout', '$repositories', 'toastr', 'ZOOM_DURATION', 'ROOT_OBJ_NAME', 'LocalStorageAdapter', 'LSKeys', '$translate'];\n\nfunction classHierarchyDirective($rootScope, $location, GraphDataRestService, $window, $timeout, $repositories, toastr, ZOOM_DURATION, ROOT_OBJ_NAME, LocalStorageAdapter, LSKeys, $translate) {\n return {\n restrict: 'AE',\n template: '<div id=\"classChart\"></div>',\n scope: {\n classHierarchyData: '=',\n flattenedClassNames: '=',\n selectedClass: '=',\n currentSliderValue: '=',\n showClassInfoPanel: '=',\n showExternalElements: '=',\n hidePrefixes: '=',\n currentBrowserLimit: '=',\n },\n link: linkFunc,\n };\n\n function linkFunc(scope, element, attrs) {\n renderCirclePacking(scope, element);\n }\n\n function renderCirclePacking(scope, element) {\n /**\n * A boolean flag that determines whether the opening of the side info panel\n * should be suppressed when focusing on the chart while a class is selected.\n */\n let suppressPanelOpen = false;\n\n const width = 800;\n const height = 800;\n const diameter = height;\n const margin = 20;\n let tip;\n let rootHierarchy;\n\n const packLayout = d3.pack()\n .size([diameter - margin, diameter - margin]);\n\n const color = d3.scaleLinear()\n .domain([0, 4])\n .range([\"hsl(19, 70%, 90%)\", \"hsl(19, 70%, 50%)\"])\n .interpolate(d3.interpolateHcl);\n\n const svg = d3.select(\"#classChart\")\n .insert(\"svg:svg\", \"h2\")\n .attr(\"viewBox\", \"0 0 \" + width + \" \" + height)\n .attr(\"preserveAspectRatio\", \"xMidYMid meet\")\n .on(\"dblclick.zoom\", null);\n\n function appendMainGroup() {\n return svg.append(\"svg:g\")\n .attrs({\n id: \"main-group\",\n transform: \"translate(\" + width / 2 + \",\" + height / 2 + \")\",\n });\n }\n\n function savePrefixesState(hidePrefixes) {\n if (!angular.isUndefined(hidePrefixes)) {\n LocalStorageAdapter.set(LSKeys.CLASS_HIERARCHY_HIDE_PREFIXES, hidePrefixes);\n }\n }\n\n function getPrefixesState() {\n return LocalStorageAdapter.get(LSKeys.CLASS_HIERARCHY_HIDE_PREFIXES) === \"true\";\n }\n\n /*\n * Prepares SVG document image export by adding xml namespaces and\n * additional style information\n */\n function prepareForSVGImageExport() {\n // get css rules for the diagram\n const cssRules = SVG.Export.getCSSRules(\"css/rdf-class-hierarchy-labels.css?v=3.5.1\");\n // inline css rules in a defs tag\n d3.selectAll(\"#main-group\")\n .append(\"defs\");\n $(\"defs\").append('<style type=\"text/css\"><![CDATA[' + cssRules + ']]></style>');\n\n // switch opacity to visible\n d3.selectAll(\"g\")\n .style(\"opacity\", 1);\n\n // convert selected html to base64\n const imgSrc = SVG.Export.generateBase64ImageSource(\"#classChart svg\");\n\n // set the binary image and a name for the downloadable file on the export button\n d3.select(this).attrs({\n href: imgSrc,\n download: \"class-hierarchy-\" + $repositories.getActiveRepository() + \".svg\",\n });\n }\n\n scope.hidePrefixes = getPrefixesState();\n\n let g = appendMainGroup();\n\n function fetchClassHierarchy() {\n $rootScope.loader = true;\n $rootScope.hierarchyError = false;\n const selGraphFromCache = LocalStorageAdapter.get(`classHierarchy-selectedGraph-${$repositories.getActiveRepository()}`);\n GraphDataRestService.getClassHierarchyData(selGraphFromCache !== null ? selGraphFromCache.contextID.uri : \"\")\n .success(function(response, status) {\n $rootScope.loader = false;\n if (status === 207) {\n toastr.warning(\n $translate.instant('graphexplore.update.diagram'),\n $translate.instant('graphexplore.repository.data.changed'),\n );\n }\n scope.classHierarchyData = response;\n d3.select(\"#download-svg\").on(\"mouseover\", prepareForSVGImageExport);\n })\n .error(function(response) {\n $rootScope.loader = false;\n $rootScope.hierarchyError = getError(response);\n toastr.error(\n $translate.instant('graphexplore.error.request.failed', {\n name: ROOT_OBJ_NAME,\n error: getError(response),\n }),\n );\n });\n }\n\n const hasData = !!scope.classHierarchyData?.classCount;\n const canUseRepo = $repositories.getActiveRepository() && !$repositories.isSystemRepository();\n\n service(LicenseContextService).onLicenseChanged((license) => {\n if (license?.valid && !hasData && canUseRepo) {\n fetchClassHierarchy();\n }\n });\n\n let autoZoomToPreviousState;\n let doFocus;\n\n let focus;\n let rootFocusEvent;\n let classSearchEvent;\n const flattenedClassData = {};\n\n function drawDiagram(root, config, newFocus, switchPrefixes) {\n if (rootFocusEvent) rootFocusEvent();\n if (classSearchEvent) classSearchEvent();\n // remove old group tag containing the diagram\n d3.selectAll(\"#main-group\").remove();\n\n // append new empty group tag in order to rerender new diagram\n g = appendMainGroup();\n\n // fix for single child classes\n CirclePacking.SingleChild.addPlaceholders(root, true);\n\n rootHierarchy = d3.hierarchy(root);\n rootHierarchy.sum(function(d) {\n return d.size;\n });\n focus = newFocus ? newFocus : rootHierarchy;\n\n packLayout(rootHierarchy);\n\n const nodes = rootHierarchy.descendants();\n let view;\n\n focus.isInFocusTransitive = true;\n\n // fixes for single child classes\n CirclePacking.SingleChild.removePlaceholders(nodes);\n CirclePacking.SingleChild.centerNodes(nodes);\n CirclePacking.SingleChild.makePositionsRelativeToZero(nodes);\n\n if (!tip) {\n tip = d3tip()\n .attr('class', 'd3-tip')\n .customPosition(function(d, event) {\n return {\n top: 'inherit',\n bottom: ($window.innerHeight - event.clientY) + 'px',\n right: ($window.innerWidth - event.clientX) + 'px',\n };\n })\n .html(function(d) {\n return d.data.name;\n });\n svg.call(tip);\n }\n\n const circleGroup = g.selectAll(\"circle\")\n .data(nodes)\n .enter().append(\"g\");\n\n if (config.doFade) {\n circleGroup.each(function(d) {\n D3.Transition.fadeIn(d3.select(this), 550);\n });\n }\n\n let flattenedClassNames = [];\n\n const circle = circleGroup\n .append(\"circle\")\n .attr(\"class\", function(d) {\n return d.data.role;\n })\n .attr(\"data-test\", function(d) {\n return \"class-\" + d.data.name;\n })\n .attr(\"guide-selector\", function(d) {\n return \"class-\" + d.data.name;\n })\n .style(\"fill\", function(d) {\n //return colors[d.depth % 6];\n return d.children ? color(d.depth) : \"#E0D0D0\";\n })\n .each(function(d) {\n d.circle = d3.select(this);\n if (d.data.name !== ROOT_OBJ_NAME) {\n const key = d.data.name;\n flattenedClassNames.push({name: key});\n flattenedClassData[[key]] = d;\n\n d.circle.classed(\"rdf-class\", true);\n d.circle.on('mouseover', function(event) {\n if (config.noPrefixes) {\n tip.show(d, event);\n } else if (!d.textHidden) {\n tip.hide(d);\n } else {\n tip.show(d, event);\n }\n });\n d.circle.on('mouseout', tip.hide);\n }\n })\n // custom event used when user is following a guide\n .on(\"gdb-focus\", (event, d) => doFocus(d))\n .on(\"gdb-zoom\", (event, d) => zoom(d));\n\n\n if (flattenedClassNames) {\n flattenedClassNames = _.uniqBy(flattenedClassNames, 'name');\n scope.flattenedClassNames = flattenedClassNames;\n }\n\n let selectedClass;\n\n function getCurrentClassDataAndMarkSelected(obj) {\n d3.selectAll(\".selected\").classed(\"selected\", obj.selected = false);\n obj.circle.classed(\"selected\", obj.selected = true);\n selectedClass = obj;\n }\n\n function showClassInfoPanel() {\n scope.selectedClass = selectedClass;\n scope.showClassInfoPanel = true;\n }\n\n function closeClassInfoPanel() {\n scope.showClassInfoPanel = false;\n }\n\n function goToDomainRangeGraphView() {\n $rootScope.$broadcast('goToDomainRangeGraphView', selectedClass, focus);\n }\n\n const clickCancel = D3.Click.delayDblClick();\n d3.selectAll(\".parent, .topLevelParent, .child, .root\")\n .call(clickCancel);\n\n doFocus = function(obj) {\n zoom(obj);\n\n if (obj.data.name === ROOT_OBJ_NAME) {\n closeClassInfoPanel();\n d3.selectAll(\".selected\").classed(\"selected\", false);\n } else {\n getCurrentClassDataAndMarkSelected(obj);\n if (!suppressPanelOpen) {\n showClassInfoPanel();\n }\n\n // FIXME: is it ok to bind this event handler every time and not just once?\n scope.$on('sidePanelClosed', function(event) {\n d3.selectAll(\".selected\").classed(\"selected\", obj.selected = false);\n });\n }\n\n\n //do not stop event propagation here\n };\n\n clickCancel.on(\"click\", function(event, obj) {\n // add clicked class to browser history\n if (obj.data.id) {\n $window.history.pushState({id: obj.data.id}, \"classHierarchyPage\" + obj.data.id, \"hierarchy#\" + obj.data.id);\n }\n\n //hide current d3-tip tooltip\n tip.hide();\n\n doFocus(obj);\n });\n\n clickCancel.on(\"dblclick\", function(event, obj) {\n if (obj === root) {\n return;\n }\n // hide current d3-tip tooltip in order not to appear in the next view\n tip.hide();\n getCurrentClassDataAndMarkSelected(obj);\n goToDomainRangeGraphView();\n\n event.stopPropagation();\n });\n\n let lastTimeWheel = 0;\n svg.on('wheel', function(event) {\n // hide current d3-tip tooltip\n tip.hide();\n\n event.preventDefault();\n event.stopPropagation();\n\n // at least 100ms must have passed since last time we updated\n const now = Date.now();\n if (now - lastTimeWheel > 100) {\n lastTimeWheel = now;\n } else {\n return;\n }\n\n let direction = '';\n if (event.deltaY <= -1) {\n direction = 'in';\n } else if (event.deltaY >= 1) {\n direction = 'out';\n }\n\n let obj = event.target.__data__;\n\n if (!obj) {\n // scroll outside the big circle\n obj = focus;\n }\n\n if (direction === 'in') {\n // determine object to zoom to\n\n if (obj !== focus) {\n // consider the object on which the scroll event occurred\n // and find the furthest parent that has no focused children\n while (obj.parent && !obj.parent.isInFocusTransitive) {\n obj = obj.parent;\n }\n if (obj.depth < focus.depth) {\n // however if that parent is of lower depth than the focus we ignore it\n obj = focus;\n }\n }\n\n if (obj === focus && obj.children) {\n // if object is in focus and it has children we zoom to its biggest child\n // TODO: sort children on backend\n let newobj = obj.children[0];\n for (let i = 1; i < obj.children.length; i++) {\n if (obj.children[i].sortingRank > newobj.sortingRank) {\n newobj = obj.children[i];\n }\n }\n if (newobj.children) {\n // Use the child only if it has children\n obj = newobj;\n }\n } else if (!obj.children) {\n // If node has no children use its parent instead\n obj = obj.parent;\n }\n\n zoom(obj, true);\n } else if (direction === 'out') {\n // zooming out simply goes one parent up\n obj = focus.parent;\n if (obj) {\n zoom(obj, true);\n }\n }\n\n if (focus.data.name === ROOT_OBJ_NAME) {\n $window.history.replaceState({id: 1}, \"classHierarchyPage1\", \"hierarchy#1\");\n }\n\n // redraw slider on zoom out\n sendSliderData();\n });\n\n const text = g.selectAll(\"text\")\n .data(nodes)\n .enter().append(\"text\")\n .attr(\"class\", function(d) {\n return d.children && d.children.length ? \"label\" : \"label child-label\";\n })\n .each(function(d) {\n d.textSel = d3.select(this);\n });\n\n function trimPrefixes(d) {\n const idx = d.data.name.indexOf(\":\");\n const absUriIdx = d.data.name.indexOf(\"http://\");\n if (absUriIdx > -1) {\n // if we have no prefix available ignore\n d.noPrefixName = d.data.name;\n } else if (idx > -1) {\n d.noPrefixName = d.data.name.substring(idx + 1);\n }\n }\n\n if (config.noPrefixes) {\n text.each(trimPrefixes);\n text\n .style(\"font-size\", function(d) {\n return D3.Text.calcFontSize(d.noPrefixName, d.r);\n })\n .text(function(d) {\n return D3.Text.getTextWithElipsisIfNeeded(d.noPrefixName, d.r / 3);\n });\n } else {\n text\n .style(\"font-size\", function(d) {\n return D3.Text.calcFontSize(d.data.name, d.r);\n })\n .text(function(d) {\n return D3.Text.getTextWithElipsisIfNeeded(d.data.name, d.r / 3);\n });\n }\n\n // TODO: make this use the full version (same as zoom)\n text.style(\"display\", function(d) {\n if (d.parent && d.parent.data === focus.data) {\n d.textHidden = this.textContent.indexOf(\"...\") + 3 === this.textContent.length;\n return null;\n } else {\n d.textHidden = true;\n return \"none\";\n }\n });\n\n if (config.doFade && !config.keepPrevState) {\n text.each(function(d) {\n D3.Transition.fadeIn(d3.select(this), 550);\n });\n }\n\n autoZoomToPreviousState = function() {\n function focusOnCurrentClass(focusHistoryId) {\n if (focusHistoryId) {\n circle.each(function(d) {\n if (+focusHistoryId === d.data.id) {\n doFocus(d);\n }\n });\n }\n }\n\n const focusHistoryId = $location.hash();\n\n $window.onpopstate = function(event) {\n if (event.state && !event.state.skipOnPopState) {\n const focusHistoryId = event.state.id;\n focusOnCurrentClass(focusHistoryId);\n }\n };\n\n focusOnCurrentClass(focusHistoryId);\n };\n\n const node = g.selectAll(\"circle, text\");\n\n function zoomTo(v, switchPrefixes) {\n const k = diameter / v[2];\n view = v;\n\n node.attr(\"transform\", function(d) {\n return \"translate(\" + (d.x - v[0]) * k + \",\" + (d.y - v[1]) * k + \")\";\n });\n\n circle.attr(\"r\", function(d) {\n return d.r * k;\n });\n\n function switchPrefixesInPlace(d) {\n // if uris match with the topLevelParentUri of the focused element\n // or your focus is a top level parent hide its label and if it is not\n // a child element show all of its child labels. If it is a child element\n // only show its label.\n if (d.data.fullName === focus.data.topLevelParentUri || focus.data.topLevelParentUri === ROOT_OBJ_NAME) {\n d.textSel.style(\"display\", \"none\");\n if (focus.children && focus.children.length) {\n _.each(focus.children, function(c) {\n c.textSel.style(\"display\", \"inline\");\n });\n } else {\n focus.textSel.style(\"display\", \"inline\");\n }\n\n // in order to show prefixes of siblings check if the focused\n // element has a parent and show all of its children except\n // for the name of the focused element because you need to see\n // its children\n if (focus.parent) {\n _.each(focus.parent.children, function(c) {\n if (c.data.name !== focus.data.name) {\n c.textSel.style(\"display\", \"inline\");\n }\n });\n }\n }\n }\n\n if (switchPrefixes) {\n text.each(switchPrefixesInPlace);\n }\n\n text\n .style(\"font-size\", function(d) {\n if (config.noPrefixes) {\n return D3.Text.calcFontSize(d.noPrefixName, d.r * k);\n }\n return D3.Text.calcFontSize(d.data.name, d.r * k);\n })\n .text(function(d) {\n if (config.noPrefixes) {\n return D3.Text.getTextWithElipsisIfNeeded(d.noPrefixName, d.r * k / 3);\n }\n return D3.Text.getTextWithElipsisIfNeeded(d.data.name, d.r * k / 3);\n });\n }\n\n\n function adjustRadius(r) {\n let newr = r * 2 + margin;\n if (r * 2 / newr < 0.3) {\n // for very small circles we need to adjust\n newr = r * 2 + 2;\n }\n return newr;\n }\n\n zoomTo([focus.x, focus.y, adjustRadius(focus.r)], switchPrefixes);\n\n function textUpdate(d) {\n if (d.isInFocusTransitive || !(d.parent && d.parent.isInFocusTransitive)) {\n // hide labels of classes that are in focus (including children) OR whose parents aren't in focus\n d.textHidden = true;\n this.style.display = \"none\";\n } else {\n // show all other labels\n d.textHidden = this.textContent.indexOf(\"...\") + 3 === this.textContent.length;\n this.style.display = \"\";\n }\n }\n\n function zoom(d, shouldClosePanel) {\n // use empty timeout to force the following code to be executed on the next $digest cycle\n // in order to avoid '$digest in progress' error\n $timeout(function() {\n scope.showExternalElements = (d.data.name === ROOT_OBJ_NAME);\n });\n\n if (focus === d) {\n // Node is already zoomed to\n // Important to return before we modify the history, otherwise we choke the browser\n return;\n }\n\n if (d.data.id) {\n // Set the `skipOnPopState` flag so the popstate handler ignores this history update,\n // preventing a recursive history state change triggered by the zoom operation.\n $window.history.replaceState({id: d.data.id, skipOnPopState: true}, \"classHierarchyPage\" + d.data.id, \"hierarchy#\" + d.data.id);\n }\n\n if (!d.children) {\n // No children - zoom to parent instead\n d = d.parent;\n if (focus === d) {\n // Parent is already zoomed to\n return;\n }\n }\n\n if (shouldClosePanel) {\n closeClassInfoPanel();\n d3.selectAll(\".selected\").classed(\"selected\", false);\n }\n\n if (focus.parent) {\n let p = focus;\n while (p) {\n p.isInFocusTransitive = false;\n p = p.parent;\n }\n }\n\n let p = d;\n while (p) {\n p.isInFocusTransitive = !!p.children;\n p = p.parent;\n }\n\n focus = d;\n\n const isVerySmallCircle = focus.r * 2 / (focus.r * 2 + margin) < 0.3;\n\n if (isVerySmallCircle || scope.currentSliderValue > scope.currentBrowserLimit) {\n // no fancy animation for slower browsers if above the limit or if zooming to a very small circle\n zoomTo([focus.x, focus.y, adjustRadius(focus.r)]);\n\n text.each(function(d) {\n textUpdate.call(this, d);\n });\n } else {\n // the fancy version for faster browsers\n const transition = d3.transition()\n .duration(ZOOM_DURATION)\n .tween(\"zoom\", function(d) {\n const i = d3.interpolateZoom(view, [focus.x, focus.y, adjustRadius(focus.r)]);\n return function(t) {\n zoomTo(i(t));\n };\n });\n\n transition.selectAll(\"text\")\n // Experimental: hide texts to be hidden on \"start\", show texts to be shown on \"end\"\n .each(textUpdate);\n }\n }\n\n rootFocusEvent = scope.$on('rootFocus', function() {\n $window.history.pushState({id: 1}, \"classHierarchyPage1\", \"hierarchy#1\");\n doFocus(rootHierarchy);\n });\n\n classSearchEvent = scope.$on('classSearch', function(selectedClass) {\n doFocus(selectedClass);\n });\n }\n\n function sendSliderData() {\n const currentClassCount = scope.classHierarchyData.classCount;\n let currentSliderValue = LocalStorageAdapter.get(LSKeys.CLASS_HIERARCHY_CURRENT_SLIDER_VALUE);\n\n if (!currentSliderValue || currentSliderValue > currentClassCount) {\n currentSliderValue = currentClassCount;\n LocalStorageAdapter.set(LSKeys.CLASS_HIERARCHY_CURRENT_SLIDER_VALUE, currentSliderValue);\n }\n\n $rootScope.$broadcast(\"classCount\", currentClassCount, currentSliderValue);\n }\n\n window.addEventListener('resize', sendSliderData);\n\n window.addEventListener('beforeunload', removeResizeListener);\n\n function removeResizeListener() {\n window.removeEventListener('resize', sendSliderData);\n window.removeEventListener('beforeunload', removeResizeListener);\n }\n\n let prefixesWatch;\n let currentClassCountWatch;\n let searchedClassBroadcast;\n let onEnterClassSearchBroadcast;\n\n scope.$watch('classHierarchyData', function() {\n // when data changes unregister watchers by calling them\n if (prefixesWatch) prefixesWatch();\n if (currentClassCountWatch) currentClassCountWatch();\n if (searchedClassBroadcast) searchedClassBroadcast();\n if (onEnterClassSearchBroadcast) onEnterClassSearchBroadcast();\n\n // get initial state of prefixes (hidden or not) when changing repositories\n // in order to avoid triggering an unwanted prefixes watch\n let initialPrefixesState = getPrefixesState();\n\n if (scope.classHierarchyData.classCount) {\n sendSliderData();\n\n const rootData = structuredClone(scope.classHierarchyData);\n\n const root = d3.hierarchy(rootData);\n\n function sortRoot(root) {\n // add all classes to a flat array, add parent information\n // and sort according to instancesCount DESC, depth ASC\n\n return root.descendants()\n .sort(function(a, b) {\n if (a.data.sortingRank > b.data.sortingRank) {\n return -1;\n } else if (a.data.sortingRank < b.data.sortingRank) {\n return 1;\n } else if (a.data.depth > b.data.depth) {\n return 1;\n } else if (a.data.depth < b.data.depth) {\n return -1;\n } else {\n return 0;\n }\n });\n }\n\n const sortedChildren = sortRoot(root);\n\n // we start with an empty new rootData\n let filteredRootData;\n let noPrefixesGlobal;\n\n\n function restoreDiagramState(currentRootData, switchPrefixes) {\n const prefixesConfig = {\n keepPrevState: true,\n noPrefixes: getPrefixesState(),\n };\n\n // get noPrefixes flag from drawDiagram configuration params\n noPrefixesGlobal = prefixesConfig.noPrefixes;\n\n if (filteredRootData) {\n drawDiagram(filteredRootData, prefixesConfig, focus, true);\n } else {\n drawDiagram(currentRootData, prefixesConfig, focus, true);\n }\n\n $timeout(() => {\n LocalStorageAdapter.set(LSKeys.CLASS_HIERARCHY_SWITCH_PREFIXES, switchPrefixes);\n autoZoomToPreviousState();\n // Need to set this to false to enable the info panel to work when selecting a class.\n // The panel opening will be suppressed only when the prefixes are toggled.\n suppressPanelOpen = false;\n }, 70);\n }\n\n function redrawFilteredDiagram(currentSliderValue, sortedChildrenArray, useSlider) {\n if (!currentSliderValue) {\n return;\n }\n\n LocalStorageAdapter.set(LSKeys.CLASS_HIERARCHY_CURRENT_SLIDER_VALUE, currentSliderValue);\n\n filteredRootData = {\n name: ROOT_OBJ_NAME,\n children: [],\n };\n\n // walk through the given count of (sortedChildrenArray) classes\n // - record the id of each class we've seen\n // - add the rootData level classes to the new rootData\n const addedIds = new Set();\n for (let k = 1; k <= currentSliderValue; k++) {\n addedIds.add(sortedChildrenArray[k].data.id);\n if (sortedChildrenArray[k].parent === sortedChildrenArray[0]) { // i.e. the parent is the \"class hierarchy\"\n filteredRootData.children.push(sortedChildrenArray[k].data);\n }\n }\n\n // walk through all the classes in the new rootData and only keep those that have an \"added id\"\n // we create separate copies of the arrays in order not to contaminate the original data\n // we also copy each class's object ($.extend ...) for the same reason\n function fixChildren(node) {\n if (!node.children) {\n return;\n }\n const newChildren = [];\n for (const child of node.children) {\n if (addedIds.has(child.id)) {\n newChildren.push($.extend({}, child));\n }\n }\n node.children = newChildren;\n for (const child of node.children) {\n fixChildren(child);\n }\n }\n\n fixChildren(filteredRootData);\n\n if (useSlider) {\n // redraw diagram when slider value changes and persist current state\n // in local storage\n noPrefixesGlobal = angular.isUndefined(noPrefixesGlobal) ? getPrefixesState() : noPrefixesGlobal;\n const redrawConfig = {\n noPrefixes: noPrefixesGlobal,\n };\n drawDiagram(filteredRootData, redrawConfig);\n } else {\n // if the user returns to the diagram with back browser button\n // read the saved state (show/hide prefixes, current slider value)\n // from local storage and render the diagram according to the saved metrics\n restoreDiagramState(rootData);\n }\n }\n\n const currentSliderValue = LocalStorageAdapter.get(LSKeys.CLASS_HIERARCHY_CURRENT_SLIDER_VALUE);\n if (currentSliderValue) {\n redrawFilteredDiagram(currentSliderValue, sortedChildren);\n } else {\n const basicConfig = {\n doFade: true,\n keepPrevState: true,\n noPrefixes: getPrefixesState(),\n };\n drawDiagram(rootData, basicConfig);\n autoZoomToPreviousState();\n }\n\n prefixesWatch = scope.$watch('hidePrefixes', function(hidePrefixes) {\n if (angular.isUndefined(hidePrefixes) || initialPrefixesState) {\n initialPrefixesState = undefined;\n return;\n }\n // if digest overflows a possible fix might be wrapping this in $timeout\n $timeout(function() {\n suppressPanelOpen = true;\n savePrefixesState(hidePrefixes);\n restoreDiagramState(rootData, true);\n }, 50);\n }, true);\n\n currentClassCountWatch = scope.$watch('currentSliderValue', function(currentSliderValue) {\n redrawFilteredDiagram(currentSliderValue, sortedChildren, true);\n }, true);\n\n // we handle this event for the cases where we already have searched for a given class and\n // hit enter again on the already selected class in order again react and zoom to it again\n // if we are not at the moment\n let currentSearchedClass;\n onEnterClassSearchBroadcast = scope.$on('onEnterKeypressSearchAction', function(event) {\n if (currentSearchedClass) {\n doFocus(currentSearchedClass);\n }\n });\n\n searchedClassBroadcast = scope.$on('searchedClass', function(event, searchedClass) {\n currentSearchedClass = flattenedClassData[searchedClass.name];\n if (currentSearchedClass) {\n doFocus(currentSearchedClass);\n }\n });\n }\n }, true);\n }\n}\n","var CirclePacking = CirclePacking || {};\n\nCirclePacking.SingleChild = function () {\n /*\n Functions that enable single child circles to display properly, see\n http://stackoverflow.com/questions/22307486/d3-js-packed-circle-layout-how-to-adjust-child-radius\n */\n function addPlaceholders(node, first) {\n if (node.children) {\n for (var i = 0; i < node.children.length; i++) {\n var child = node.children[i];\n addPlaceholders(child);\n }\n\n if (node.children.length === 1) {\n var placeholderSize = node.size * 1.2;\n if (first) {\n placeholderSize = node.children[0].size * 0.1;\n }\n node.children.push({\n name: 'placeholder', size: placeholderSize,\n // children: []\n });\n }\n }\n }\n\n function removePlaceholders(nodes) {\n for (var i = nodes.length - 1; i >= 0; i--) {\n var node = nodes[i];\n\n if (node.data.name === 'placeholder') {\n nodes.splice(i, 1);\n } else {\n if (node.children) {\n removePlaceholders(node.children);\n }\n }\n }\n }\n\n function centerNodes(nodes) {\n for (var i = 0; i < nodes.length; i++) {\n var node = nodes[i];\n\n if (node.children) {\n if (node.children.length === 1) {\n var offset = node.x - node.children[0].x;\n node.children[0].x += offset;\n reposition(node.children[0], offset);\n }\n }\n }\n\n function reposition(node, offset) {\n if (node.children) {\n for (var i = 0; i < node.children.length; i++) {\n node.children[i].x += offset;\n reposition(node.children[i], offset);\n }\n }\n }\n }\n\n function makePositionsRelativeToZero(nodes) {\n //use this to have vis centered at 0,0,0 (easier for positioning)\n var offsetX = nodes[0].x;\n var offsetY = nodes[0].y;\n\n for (var i = 0; i < nodes.length; i++) {\n\n var node = nodes[i];\n\n node.x -= offsetX;\n node.y -= offsetY;\n }\n }\n\n return {\n addPlaceholders: addPlaceholders,\n removePlaceholders: removePlaceholders,\n centerNodes: centerNodes,\n makePositionsRelativeToZero: makePositionsRelativeToZero\n }\n}();\n\nexport default CirclePacking;\n","import 'lib/d3.patch.js'\nimport {selectAll} from 'd3';\n\nconst d3 = {selectAll};\nvar SVG = SVG || {};\n\nSVG.Export = function () {\n function getCSSRules(cssSourceFilePath) {\n const cssRules = $('link[href=\"' + cssSourceFilePath + '\"]')[0].sheet.rules;\n let cssStr = \"\";\n _.each(cssRules, function (value) {\n cssStr += value.cssText;\n });\n return cssStr;\n }\n\n function generateBase64ImageSource(svgSelectorClass) {\n if (!svgSelectorClass) {\n svgSelectorClass = \"svg\";\n }\n // add needed xml namespace\n const exportSvg = d3.selectAll(svgSelectorClass)\n .attr(\"version\", \"1.1\")\n .attr(\"xmlns\", \"http://www.w3.org/2000/svg\")\n .node().parentNode.innerHTML;\n\n // convert selected html to base64\n return \"data:image/svg+xml;charset=utf-8;base64,\" + btoa(unescape(encodeURIComponent(exportSvg)));\n }\n\n return {\n getCSSRules: getCSSRules,\n generateBase64ImageSource: generateBase64ImageSource\n };\n}();\n\nexport default SVG;\n"],"names":["classHierarchyDirective","$rootScope","$location","GraphDataRestService","$window","$timeout","$repositories","toastr","ZOOM_DURATION","ROOT_OBJ_NAME","LocalStorageAdapter","LSKeys","$translate","restrict","template","scope","classHierarchyData","flattenedClassNames","selectedClass","currentSliderValue","showClassInfoPanel","showExternalElements","hidePrefixes","currentBrowserLimit","link","element","attrs","suppressPanelOpen","tip","rootHierarchy","packLayout","d3","size","diameter","color","domain","range","interpolate","svg","insert","attr","on","appendMainGroup","append","id","transform","getPrefixesState","get","CLASS_HIERARCHY_HIDE_PREFIXES","prepareForSVGImageExport","cssRules","SVG","Export","getCSSRules","$","style","imgSrc","generateBase64ImageSource","this","href","download","getActiveRepository","g","hasData","classCount","canUseRepo","isSystemRepository","autoZoomToPreviousState","doFocus","focus","rootFocusEvent","classSearchEvent","service","LicenseContextService","onLicenseChanged","license","valid","loader","hierarchyError","selGraphFromCache","getClassHierarchyData","contextID","uri","success","response","status","warning","instant","error","getError","name","fetchClassHierarchy","flattenedClassData","drawDiagram","root","config","newFocus","switchPrefixes","remove","CirclePacking","SingleChild","addPlaceholders","sum","d","nodes","descendants","view","isInFocusTransitive","removePlaceholders","centerNodes","makePositionsRelativeToZero","d3tip","customPosition","event","top","bottom","innerHeight","clientY","right","innerWidth","clientX","html","data","call","circleGroup","selectAll","enter","doFade","each","D3","Transition","fadeIn","circle","role","children","depth","key","push","classed","noPrefixes","textHidden","show","hide","zoom","getCurrentClassDataAndMarkSelected","obj","selected","closeClassInfoPanel","_","uniqBy","clickCancel","Click","delayDblClick","$on","history","pushState","$broadcast","stopPropagation","lastTimeWheel","preventDefault","now","Date","direction","deltaY","target","__data__","parent","newobj","i","length","sortingRank","replaceState","sendSliderData","text","textSel","idx","indexOf","noPrefixName","substring","Text","calcFontSize","r","getTextWithElipsisIfNeeded","textContent","keepPrevState","focusOnCurrentClass","focusHistoryId","hash","onpopstate","state","skipOnPopState","node","zoomTo","v","k","x","y","fullName","topLevelParentUri","c","adjustRadius","newr","textUpdate","display","shouldClosePanel","p","duration","tween","t","currentClassCount","CLASS_HIERARCHY_CURRENT_SLIDER_VALUE","set","prefixesWatch","currentClassCountWatch","searchedClassBroadcast","onEnterClassSearchBroadcast","window","addEventListener","removeResizeListener","removeEventListener","$watch","initialPrefixesState","rootData","structuredClone","sortedChildren","sort","a","b","filteredRootData","noPrefixesGlobal","restoreDiagramState","currentRootData","prefixesConfig","CLASS_HIERARCHY_SWITCH_PREFIXES","redrawFilteredDiagram","sortedChildrenArray","useSlider","addedIds","Set","add","fixChildren","newChildren","child","has","extend","angular","isUndefined","basicConfig","currentSearchedClass","undefined","savePrefixesState","searchedClass","renderCirclePacking","module","constant","directive","$inject","first","placeholderSize","splice","offset","reposition","offsetX","offsetY","cssSourceFilePath","sheet","rules","cssStr","value","cssText","svgSelectorClass","exportSvg","parentNode","innerHTML","btoa","unescape","encodeURIComponent"],"sourceRoot":""}
@@ -0,0 +1,2 @@
1
+ export const __webpack_esm_id__=8981;export const __webpack_esm_ids__=[8981];export const __webpack_esm_modules__={8981(t,e,s){s.d(e,{aZ:()=>i,do:()=>d,kY:()=>a,v9:()=>h});class i{constructor(t,e=null,s=null,i=!1,r=!1){this._endpoint=t,this._rpcAddress=e,this._error=s,this._isAvailable=i,this._isLocal=r}get isLocal(){return this._isLocal}get endpoint(){return this._endpoint}get rpcAddress(){return this._rpcAddress}get error(){return this._error}get isAvailable(){return this._isAvailable}set endpoint(t){this._endpoint=t}set rpcAddress(t){this._rpcAddress=t}set error(t){this._error=t}set isAvailable(t){this._isAvailable=t}set isLocal(t){this._isLocal=t}static fromJSON({endpoint:t,rpcAddress:e,error:s=null,isAvailable:r=!1,isLocal:n=!1}){return new i(t,e,s,r,n)}}class r{constructor(t,e,s,i,r,o,a,d,l){this._address=t,this._nodeState=e,this._term=s,this._syncStatus=i,this._lastLogTerm=r,this._lastLogIndex=o,this._endpoint=a,this._recoveryStatus=d,this._topologyStatus=n.fromJSON(l)}get address(){return this._address}get nodeState(){return this._nodeState}get term(){return this._term}get syncStatus(){return this._syncStatus}get lastLogTerm(){return this._lastLogTerm}get lastLogIndex(){return this._lastLogIndex}get endpoint(){return this._endpoint}get recoveryStatus(){return this._recoveryStatus}set address(t){this._address=t}set nodeState(t){this._nodeState=t}set term(t){this._term=t}set syncStatus(t){this._syncStatus=t}set lastLogTerm(t){this._lastLogTerm=t}set lastLogIndex(t){this._lastLogIndex=t}set endpoint(t){this._endpoint=t}set recoveryStatus(t){this._recoveryStatus=t}get topologyStatus(){return this._topologyStatus}set topologyStatus(t){return this._topologyStatus=t}static fromJSON({address:t,nodeState:e,term:s,syncStatus:i,lastLogTerm:n,lastLogIndex:o,endpoint:a,recoveryStatus:d,topologyStatus:l}){return new r(t,e,s,i,n,o,a,d,l)}}class n{constructor(t,e={},s,i){this._state=t,this._primaryTags=e,this._primaryIndex=s,this._primaryLeader=i}get state(){return this._state}get primaryTags(){return this._primaryTags}get primaryIndex(){return this._primaryIndex}get primaryLeader(){return this._primaryLeader}static fromJSON({state:t,primaryTags:e,primaryIndex:s,primaryLeader:i}){return new n(t,e,s,i)}}class o{constructor(t,e,s,i){this._id=t,this._source=e,this._target=s,this._status=i}static fromJSON({id:t,source:e,target:s,status:i}){return new o(t,e,s,i)}}class a{constructor(t,e,s,i){this._locations=t,this._hasCluster=e,this._nodes=s,this._links=i}get locations(){return this._locations}set locations(t){this._locations=t}get hasCluster(){return this._hasCluster}set hasCluster(t){this._hasCluster=t}get nodes(){return this._nodes}set nodes(t){this._nodes=t}get links(){return this._links}set links(t){this._links=t}static fromJSON(t){const e=t.locations.map(i.fromJSON),s=t.nodes.map(r.fromJSON),n=t.links.map(o.fromJSON);return new a(e,t.hasCluster,s,n)}}class d{constructor(t){this._clusterModel=a.fromJSON(t),this._addToCluster=new Map,this._deleteFromCluster=new Map,this._currentNodesCount=0,this._clusterConfiguration=new h,this._localNodeEndpoint=t.locations.find(t=>t.isLocal).endpoint,this.MINIMUM_NODES_REQUIRED=2}getAttached(){const t=this._clusterModel.nodes.concat(Array.from(this._addToCluster.values()));return this._currentNodesCount=t.filter(t=>!this._deleteFromCluster.has(t.endpoint)).length,t}getViewModel(){let t=0;return this.getAttached().map(e=>{const s=new l(e);return this._deleteFromCluster.has(e.endpoint)?s.isDeleted=!0:s.index=t++,this._localNodeEndpoint===e.endpoint&&(s.isLocal=!0),s})}getAvailable(t=!1){const e=this._clusterModel.nodes;return this._clusterModel.locations.filter(s=>{const i=!this.isPresentInList(e,s.endpoint),r=s.isAvailable,n=!this._addToCluster.has(s.endpoint),o=!!t||!this._deleteFromCluster.has(s.endpoint);return i&&r&&o&&n})}getAvailableNodeEndpoints(){return this.getAvailable().map(t=>t.endpoint)}getLocalNode(){return this._clusterModel.locations.find(t=>t.isLocal)}addToCluster(t){const e=t.endpoint;t.endpoint&&this.addToLocations(t),this._deleteFromCluster.has(e)?this._deleteFromCluster.delete(e):this._addToCluster.set(e,t)}addToLocations(t){const e=u.findIndexByEndpoint(this._clusterModel.locations,t.endpoint);-1===e?this._clusterModel.locations.push(t):this._clusterModel.locations.splice(e,1)}deleteFromCluster(t){const e=t.endpoint;this._addToCluster.has(e)?this._addToCluster.delete(e):this._deleteFromCluster.set(e,t)}getDeleteFromCluster(){return Array.from(this._deleteFromCluster.values())}getUpdateActions(){const t=Array.from(this._addToCluster.values()).map(t=>t.endpoint),e={addNodes:t,removeNodes:Array.from(this._deleteFromCluster.values()).map(t=>t.endpoint)},s=this.updateClusterConfiguration(t);return s&&(e.clusterConfiguration=s),e}updateClusterConfiguration(t){return this.hasCluster()?null:(this._clusterConfiguration.nodes=t,this._clusterConfiguration.toJSON())}getClusterConfiguration(){return this._clusterConfiguration}restoreFromDeletion(t){this._deleteFromCluster.delete(t.endpoint)}isChanged(){return this._addToCluster.size>0||this._deleteFromCluster.size>0}isPresentInList(t,e){return u.isPresentInList(t,e)}findByEndpoint(t,e){return u.findByEndpoint(t,e)}findIndexByEndpoint(t,e){return u.findIndexByEndpoint(t,e)}hasValidNodesCount(){return this._currentNodesCount>=this.MINIMUM_NODES_REQUIRED}canDeleteNode(){const t=Math.floor(this._clusterModel.nodes.length/2);return this._deleteFromCluster.size<t}hasCluster(){return this._clusterModel.hasCluster}}class l{constructor(t){this._item=t,this._endpoint=t.endpoint,this._isDeleted=!1,this._index=void 0,this._isLocal=!1}getEndPoint(){return this._item.endpoint}getAddress(){return void 0!==this._item._address?this._item._address:void 0!==this._item.rpcAddress?this._item.rpcAddress:null}isNode(){return void 0!==this._item._address}isLocation(){return void 0===this._item._address}getNodeState(){return this.isNode()?this._item._nodeState:null}getIsAvailable(){return this.isNode()?null:this._item.isAvailable}getTerm(){return this.isNode()?this._item.term:null}getSyncStatus(){return this.isNode()?this._item.syncStatus:null}getIsLocal(){return this.isNode()?null:this._item.isLocal}get item(){return this._item}get endpoint(){return this._endpoint}set endpoint(t){return this._endpoint=t}get isDeleted(){return this._isDeleted}set isDeleted(t){this._isDeleted=t}get index(){return this._index}set index(t){this._index=t}get isLocal(){return this._isLocal}set isLocal(t){this._isLocal=t}}class h{constructor({electionMinTimeout:t=8e3,electionRangeTimeout:e=6e3,heartbeatInterval:s=2e3,messageSizeKB:i=64,verificationTimeout:r=1500,transactionLogMaximumSizeGB:n=50,batchUpdateInterval:o=5e3,nodes:a=[],primaryTags:d,secondaryTag:l,primaryNodes:h}={}){this._electionMinTimeout=t,this._electionRangeTimeout=e,this._heartbeatInterval=s,this._messageSizeKB=i,this._verificationTimeout=r,this._transactionLogMaximumSizeGB=n,this._batchUpdateInterval=o,this._nodes=a,this._primaryTags=d,this._secondaryTag=l,this._primaryNodes=h}static fromJSON(t){return new h(t)}get electionMinTimeout(){return this._electionMinTimeout}set electionMinTimeout(t){this._electionMinTimeout=t}get electionRangeTimeout(){return this._electionRangeTimeout}set electionRangeTimeout(t){this._electionRangeTimeout=t}get heartbeatInterval(){return this._heartbeatInterval}set heartbeatInterval(t){this._heartbeatInterval=t}get messageSizeKB(){return this._messageSizeKB}set messageSizeKB(t){this._messageSizeKB=t}get verificationTimeout(){return this._verificationTimeout}set verificationTimeout(t){this._verificationTimeout=t}get transactionLogMaximumSizeGB(){return this._transactionLogMaximumSizeGB}set transactionLogMaximumSizeGB(t){this._transactionLogMaximumSizeGB=t}get nodes(){return this._nodes}set nodes(t){this._nodes=t}get batchUpdateInterval(){return this._batchUpdateInterval}set batchUpdateInterval(t){this._batchUpdateInterval=t}get secondaryTag(){return this._secondaryTag}set secondaryTag(t){this._secondaryTag=t}get primaryNodes(){return this._primaryNodes}set primaryNodes(t){this._primaryNodes=t}get primaryTags(){return this._primaryTags}set primaryTags(t){this._primaryTags=t}toJSON(){const t={electionMinTimeout:this._electionMinTimeout,electionRangeTimeout:this._electionRangeTimeout,heartbeatInterval:this._heartbeatInterval,messageSizeKB:this._messageSizeKB,verificationTimeout:this._verificationTimeout,transactionLogMaximumSizeGB:this._transactionLogMaximumSizeGB,batchUpdateInterval:this._batchUpdateInterval,nodes:this._nodes};return void 0!==this._secondaryTag&&(t.secondaryTag=this._secondaryTag),void 0!==this._primaryNodes&&(t.primaryNodes=this._primaryNodes),void 0!==this._primaryTags&&(t.primaryTags=this._primaryTags),t}}class u{static isPresentInList(t,e){return t.some(t=>t.endpoint===e)}static findByEndpoint(t,e){return t.find(t=>t.endpoint===e)}static findIndexByEndpoint(t,e){return t.findIndex(t=>t.endpoint===e)}}}};
2
+ //# sourceMappingURL=8981.cb785cbc13b19f924ebc.bundle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"8981.cb785cbc13b19f924ebc.bundle.js","mappings":"4KAGO,MAAMA,EAQTC,WAAAA,CAAYC,EAAUC,EAAa,KAAMC,EAAQ,KAAMC,GAAc,EAAOC,GAAU,GAClFC,KAAKC,UAAYN,EACjBK,KAAKE,YAAcN,EACnBI,KAAKG,OAASN,EACdG,KAAKI,aAAeN,EACpBE,KAAKK,SAAWN,CACpB,CAGA,WAAIA,GACA,OAAOC,KAAKK,QAChB,CAGA,YAAIV,GACA,OAAOK,KAAKC,SAChB,CAGA,cAAIL,GACA,OAAOI,KAAKE,WAChB,CAGA,SAAIL,GACA,OAAOG,KAAKG,MAChB,CAGA,eAAIL,GACA,OAAOE,KAAKI,YAChB,CAEA,YAAIT,CAASW,GACTN,KAAKC,UAAYK,CACrB,CAEA,cAAIV,CAAWU,GACXN,KAAKE,YAAcI,CACvB,CAEA,SAAIT,CAAMS,GACNN,KAAKG,OAASG,CAClB,CAEA,eAAIR,CAAYQ,GACZN,KAAKI,aAAeE,CACxB,CAEA,WAAIP,CAAQO,GACRN,KAAKK,SAAWC,CACpB,CAOA,eAAOC,EAAS,SAACZ,EAAQ,WAAEC,EAAU,MAAEC,EAAQ,KAAI,YAAEC,GAAc,EAAK,QAAEC,GAAU,IAChF,OAAO,IAAIN,EAASE,EAAUC,EAAYC,EAAOC,EAAaC,EAClE,EAMG,MAAMS,EAYTd,WAAAA,CAAYe,EAASC,EAAWC,EAAMC,EAAYC,EAAaC,EAAcnB,EAAUoB,EAAgBC,GACnGhB,KAAKiB,SAAWR,EAChBT,KAAKkB,WAAaR,EAClBV,KAAKmB,MAAQR,EACbX,KAAKoB,YAAcR,EACnBZ,KAAKqB,aAAeR,EACpBb,KAAKsB,cAAgBR,EACrBd,KAAKC,UAAYN,EACjBK,KAAKuB,gBAAkBR,EACvBf,KAAKwB,gBAAkBC,EAAelB,SAASS,EACnD,CAGA,WAAIP,GACA,OAAOT,KAAKiB,QAChB,CAGA,aAAIP,GACA,OAAOV,KAAKkB,UAChB,CAGA,QAAIP,GACA,OAAOX,KAAKmB,KAChB,CAGA,cAAIP,GACA,OAAOZ,KAAKoB,WAChB,CAGA,eAAIP,GACA,OAAOb,KAAKqB,YAChB,CAGA,gBAAIP,GACA,OAAOd,KAAKsB,aAChB,CAGA,YAAI3B,GACA,OAAOK,KAAKC,SAChB,CAGA,kBAAIc,GACA,OAAOf,KAAKuB,eAChB,CAEA,WAAId,CAAQH,GACRN,KAAKiB,SAAWX,CACpB,CAEA,aAAII,CAAUJ,GACVN,KAAKkB,WAAaZ,CACtB,CAEA,QAAIK,CAAKL,GACLN,KAAKmB,MAAQb,CACjB,CAEA,cAAIM,CAAWN,GACXN,KAAKoB,YAAcd,CACvB,CAEA,eAAIO,CAAYP,GACZN,KAAKqB,aAAef,CACxB,CAEA,gBAAIQ,CAAaR,GACbN,KAAKsB,cAAgBhB,CACzB,CAEA,YAAIX,CAASW,GACTN,KAAKC,UAAYK,CACrB,CAEA,kBAAIS,CAAeT,GACfN,KAAKuB,gBAAkBjB,CAC3B,CAEA,kBAAIU,GACA,OAAOhB,KAAKwB,eAChB,CAEA,kBAAIR,CAAeV,GACf,OAAON,KAAKwB,gBAAkBlB,CAClC,CAOA,eAAOC,EAAS,QAACE,EAAO,UAAEC,EAAS,KAAEC,EAAI,WAAEC,EAAU,YAAEC,EAAW,aAAEC,EAAY,SAAEnB,EAAQ,eAAEoB,EAAc,eAAEC,IACxG,OAAO,IAAIR,EAAKC,EAASC,EAAWC,EAAMC,EAAYC,EAAaC,EAAcnB,EAAUoB,EAAgBC,EAC/G,EAMG,MAAMS,EAOT/B,WAAAA,CAAYgC,EAAOC,EAAc,CAAC,EAAGC,EAAcC,GAC/C7B,KAAK8B,OAASJ,EACd1B,KAAK+B,aAAeJ,EACpB3B,KAAKgC,cAAgBJ,EACrB5B,KAAKiC,eAAiBJ,CAC1B,CAEA,SAAIH,GACA,OAAO1B,KAAK8B,MAChB,CAGA,eAAIH,GACA,OAAO3B,KAAK+B,YAChB,CAEA,gBAAIH,GACA,OAAO5B,KAAKgC,aAChB,CAEA,iBAAIH,GACA,OAAO7B,KAAKiC,cAChB,CAQA,eAAO1B,EAAS,MAACmB,EAAK,YAAEC,EAAW,aAAEC,EAAY,cAAEC,IAC/C,OAAO,IAAIJ,EAAeC,EAAOC,EAAaC,EAAcC,EAChE,EAMG,MAAMK,EAOTxC,WAAAA,CAAYyC,EAAIC,EAAQC,EAAQC,GAC5BtC,KAAKuC,IAAMJ,EACXnC,KAAKwC,QAAUJ,EACfpC,KAAKyC,QAAUJ,EACfrC,KAAK0C,QAAUJ,CACnB,CAOA,eAAO/B,EAAS,GAAC4B,EAAE,OAAEC,EAAM,OAAEC,EAAM,OAAEC,IACjC,OAAO,IAAIJ,EAAKC,EAAIC,EAAQC,EAAQC,EACxC,EAMG,MAAMK,EAOTjD,WAAAA,CAAYkD,EAAWC,EAAYC,EAAOC,GACtC/C,KAAKgD,WAAaJ,EAClB5C,KAAKiD,YAAcJ,EACnB7C,KAAKkD,OAASJ,EACd9C,KAAKmD,OAASJ,CAClB,CAGA,aAAIH,GACA,OAAO5C,KAAKgD,UAChB,CAGA,aAAIJ,CAAUtC,GACVN,KAAKgD,WAAa1C,CACtB,CAGA,cAAIuC,GACA,OAAO7C,KAAKiD,WAChB,CAGA,cAAIJ,CAAWvC,GACXN,KAAKiD,YAAc3C,CACvB,CAGA,SAAIwC,GACA,OAAO9C,KAAKkD,MAChB,CAGA,SAAIJ,CAAMxC,GACNN,KAAKkD,OAAS5C,CAClB,CAGA,SAAIyC,GACA,OAAO/C,KAAKmD,MAChB,CAGA,SAAIJ,CAAMzC,GACNN,KAAKmD,OAAS7C,CAClB,CAOA,eAAOC,CAAS6C,GACZ,MAAMR,EAAYQ,EAAKR,UAAUS,IAAI5D,EAASc,UACxCuC,EAAQM,EAAKN,MAAMO,IAAI7C,EAAKD,UAC5BwC,EAAQK,EAAKL,MAAMM,IAAInB,EAAK3B,UAElC,OAAO,IAAIoC,EAAaC,EAAWQ,EAAKP,WAAYC,EAAOC,EAC/D,EAMG,MAAMO,EAIT5D,WAAAA,CAAY6D,GACRvD,KAAKwD,cAAgBb,EAAapC,SAASgD,GAC3CvD,KAAKyD,cAAgB,IAAIC,IACzB1D,KAAK2D,mBAAqB,IAAID,IAC9B1D,KAAK4D,mBAAqB,EAC1B5D,KAAK6D,sBAAwB,IAAIC,EACjC9D,KAAK+D,mBAAqBR,EAAaX,UAAUoB,KAAMC,GAAaA,EAASlE,SAASJ,SACtFK,KAAKkE,uBAAyB,CAClC,CAOAC,WAAAA,GACI,MACMC,EADQpE,KAAKwD,cAAcV,MAE5BuB,OAAOC,MAAMC,KAAKvE,KAAKyD,cAAce,WAG1C,OADAxE,KAAK4D,mBAAqBQ,EAAYK,OAAQC,IAAU1E,KAAK2D,mBAAmBgB,IAAID,EAAK/E,WAAWiF,OAC7FR,CACX,CAMAS,YAAAA,GACI,IAAIC,EAAQ,EACZ,OAAO9E,KAAKmE,cAAcd,IAAK0B,IAC3B,MAAMd,EAAW,IAAIe,EAAqBD,GAS1C,OARI/E,KAAK2D,mBAAmBgB,IAAII,EAAKpF,UACjCsE,EAASgB,WAAY,EAErBhB,EAASa,MAAQA,IAEjB9E,KAAK+D,qBAAuBgB,EAAKpF,WACjCsE,EAASlE,SAAU,GAEhBkE,GAEf,CAOAiB,YAAAA,CAAaC,GAAiB,GAC1B,MAAMrC,EAAQ9C,KAAKwD,cAAcV,MAGjC,OAFkB9C,KAAKwD,cAAcZ,UAGhC6B,OAAQR,IACL,MAAMmB,GAAmBpF,KAAKqF,gBAAgBvC,EAAOmB,EAAStE,UACxDG,EAAcmE,EAASnE,YACvBwF,GAAkBtF,KAAKyD,cAAckB,IAAIV,EAAStE,UAElD4F,IAAeJ,IAAyBnF,KAAK2D,mBAAmBgB,IAAIV,EAAStE,UAEnF,OAAOyF,GAAmBtF,GAAeyF,GAAgBD,GAErE,CAOAE,yBAAAA,GACI,OAAOxF,KAAKkF,eAAe7B,IAAKqB,GAASA,EAAK/E,SAClD,CAOA8F,YAAAA,GACI,OAAOzF,KAAKwD,cAAcZ,UAAUoB,KAAMC,GAAaA,EAASlE,QACpE,CAMA2F,YAAAA,CAAazB,GACT,MAAMtE,EAAWsE,EAAStE,SAEtBsE,EAAStE,UACTK,KAAK2F,eAAe1B,GAGpBjE,KAAK2D,mBAAmBgB,IAAIhF,GAC5BK,KAAK2D,mBAAmBiC,OAAOjG,GAE/BK,KAAKyD,cAAcoC,IAAIlG,EAAUsE,EAEzC,CAUA0B,cAAAA,CAAe1B,GACX,MAAMa,EAAQgB,EAAYC,oBAAoB/F,KAAKwD,cAAcZ,UAAWqB,EAAStE,WACtE,IAAXmF,EACA9E,KAAKwD,cAAcZ,UAAUoD,KAAK/B,GAElCjE,KAAKwD,cAAcZ,UAAUqD,OAAOnB,EAAO,EAEnD,CAUAoB,iBAAAA,CAAkBC,GACd,MAAMxG,EAAWwG,EAAaxG,SAC1BK,KAAKyD,cAAckB,IAAIhF,GACvBK,KAAKyD,cAAcmC,OAAOjG,GAE1BK,KAAK2D,mBAAmBkC,IAAIlG,EAAUwG,EAE9C,CAMAC,oBAAAA,GACI,OAAO9B,MAAMC,KAAKvE,KAAK2D,mBAAmBa,SAC9C,CAWA6B,gBAAAA,GACI,MAAMC,EAAWhC,MAAMC,KAAKvE,KAAKyD,cAAce,UAAUnB,IAAKqB,GAASA,EAAK/E,UAEtE4G,EAAgB,CAClBD,WACAE,YAHgBlC,MAAMC,KAAKvE,KAAK2D,mBAAmBa,UAAUnB,IAAKqB,GAASA,EAAK/E,WAM9E8G,EAAuBzG,KAAK0G,2BAA2BJ,GAK7D,OAJIG,IACAF,EAAcI,qBAAuBF,GAGlCF,CACX,CAQAG,0BAAAA,CAA2BJ,GACvB,OAAKtG,KAAK6C,aAIH,MAHH7C,KAAK6D,sBAAsBf,MAAQwD,EAC5BtG,KAAK6D,sBAAsB+C,SAG1C,CAOAC,uBAAAA,GACI,OAAO7G,KAAK6D,qBAChB,CAOAiD,mBAAAA,CAAoBpC,GAChB1E,KAAK2D,mBAAmBiC,OAAOlB,EAAK/E,SACxC,CAEAoH,SAAAA,GACI,OAAO/G,KAAKyD,cAAcuD,KAAO,GAAKhH,KAAK2D,mBAAmBqD,KAAO,CACzE,CAQA3B,eAAAA,CAAgB4B,EAAMtH,GAClB,OAAOmG,EAAYT,gBAAgB4B,EAAMtH,EAC7C,CAQAuH,cAAAA,CAAeD,EAAMtH,GACjB,OAAOmG,EAAYoB,eAAeD,EAAMtH,EAC5C,CAQAoG,mBAAAA,CAAoBkB,EAAMtH,GACtB,OAAOmG,EAAYC,oBAAoBkB,EAAMtH,EACjD,CAMAwH,kBAAAA,GACI,OAAOnH,KAAK4D,oBAAsB5D,KAAKkE,sBAC3C,CAgBAkD,aAAAA,GACI,MAAMC,EAAkBC,KAAKC,MAAMvH,KAAKwD,cAAcV,MAAM8B,OAAS,GACrE,OAAO5E,KAAK2D,mBAAmBqD,KAAOK,CAC1C,CAOAxE,UAAAA,GACI,OAAO7C,KAAKwD,cAAcX,UAC9B,EAGG,MAAMmC,EACTtF,WAAAA,CAAYqF,GACR/E,KAAKwH,MAAQzC,EACb/E,KAAKC,UAAY8E,EAAKpF,SACtBK,KAAKyH,YAAa,EAClBzH,KAAK0H,YAASC,EACd3H,KAAKK,UAAW,CACpB,CAEAuH,WAAAA,GACI,OAAO5H,KAAKwH,MAAM7H,QACtB,CAEAkI,UAAAA,GACI,YAA4BF,IAAxB3H,KAAKwH,MAAMvG,SACJjB,KAAKwH,MAAMvG,cACe0G,IAA1B3H,KAAKwH,MAAM5H,WACXI,KAAKwH,MAAM5H,WAEf,IACX,CAEAkI,MAAAA,GACI,YAA+BH,IAAxB3H,KAAKwH,MAAMvG,QACtB,CAEA8G,UAAAA,GACI,YAA+BJ,IAAxB3H,KAAKwH,MAAMvG,QACtB,CAEA+G,YAAAA,GACI,OAAIhI,KAAK8H,SACE9H,KAAKwH,MAAMtG,WAEf,IACX,CAEA+G,cAAAA,GACI,OAAKjI,KAAK8H,SAGH,KAFI9H,KAAKwH,MAAM1H,WAG1B,CAEAoI,OAAAA,GACI,OAAIlI,KAAK8H,SACE9H,KAAKwH,MAAM7G,KAEf,IACX,CAEAwH,aAAAA,GACI,OAAInI,KAAK8H,SACE9H,KAAKwH,MAAM5G,WAEf,IACX,CAEAwH,UAAAA,GACI,OAAKpI,KAAK8H,SAGH,KAFI9H,KAAKwH,MAAMzH,OAG1B,CAEA,QAAIgF,GACA,OAAO/E,KAAKwH,KAChB,CAEA,YAAI7H,GACA,OAAOK,KAAKC,SAChB,CAEA,YAAIN,CAASW,GACT,OAAON,KAAKC,UAAYK,CAC5B,CAEA,aAAI2E,GACA,OAAOjF,KAAKyH,UAChB,CAEA,aAAIxC,CAAU3E,GACVN,KAAKyH,WAAanH,CACtB,CAEA,SAAIwE,GACA,OAAO9E,KAAK0H,MAChB,CAEA,SAAI5C,CAAMxE,GACNN,KAAK0H,OAASpH,CAClB,CAEA,WAAIP,GACA,OAAOC,KAAKK,QAChB,CAEA,WAAIN,CAAQO,GACRN,KAAKK,SAAWC,CACpB,EAGG,MAAMwD,EACTpE,WAAAA,EAAY,mBACI2I,EAAqB,IAAI,qBACzBC,EAAuB,IAAI,kBAC3BC,EAAoB,IAAI,cACxBC,EAAgB,GAAE,oBAClBC,EAAsB,KAAI,4BAC1BC,EAA8B,GAAE,oBAChCC,EAAsB,IAAI,MAC1B7F,EAAQ,GAAE,YACVnB,EAAW,aACXiH,EAAY,aACZC,GACA,CAAC,GACb7I,KAAK8I,oBAAsBT,EAC3BrI,KAAK+I,sBAAwBT,EAC7BtI,KAAKgJ,mBAAqBT,EAC1BvI,KAAKiJ,eAAiBT,EACtBxI,KAAKkJ,qBAAuBT,EAC5BzI,KAAKmJ,6BAA+BT,EACpC1I,KAAKoJ,qBAAuBT,EAC5B3I,KAAKkD,OAASJ,EACd9C,KAAK+B,aAAeJ,EACpB3B,KAAKqJ,cAAgBT,EACrB5I,KAAKsJ,cAAgBT,CACzB,CAEA,eAAOtI,CAAS6C,GACZ,OAAO,IAAIU,EAAqBV,EACpC,CAEA,sBAAIiF,GACA,OAAOrI,KAAK8I,mBAChB,CAEA,sBAAIT,CAAmB/H,GACnBN,KAAK8I,oBAAsBxI,CAC/B,CAEA,wBAAIgI,GACA,OAAOtI,KAAK+I,qBAChB,CAEA,wBAAIT,CAAqBhI,GACrBN,KAAK+I,sBAAwBzI,CACjC,CAEA,qBAAIiI,GACA,OAAOvI,KAAKgJ,kBAChB,CAEA,qBAAIT,CAAkBjI,GAClBN,KAAKgJ,mBAAqB1I,CAC9B,CAEA,iBAAIkI,GACA,OAAOxI,KAAKiJ,cAChB,CAEA,iBAAIT,CAAclI,GACdN,KAAKiJ,eAAiB3I,CAC1B,CAEA,uBAAImI,GACA,OAAOzI,KAAKkJ,oBAChB,CAEA,uBAAIT,CAAoBnI,GACpBN,KAAKkJ,qBAAuB5I,CAChC,CAEA,+BAAIoI,GACA,OAAO1I,KAAKmJ,4BAChB,CAEA,+BAAIT,CAA4BpI,GAC5BN,KAAKmJ,6BAA+B7I,CACxC,CAEA,SAAIwC,GACA,OAAO9C,KAAKkD,MAChB,CAEA,SAAIJ,CAAMxC,GACNN,KAAKkD,OAAS5C,CAClB,CAEA,uBAAIqI,GACA,OAAO3I,KAAKoJ,oBAChB,CAEA,uBAAIT,CAAoBrI,GACpBN,KAAKoJ,qBAAuB9I,CAChC,CAEA,gBAAIsI,GACA,OAAO5I,KAAKqJ,aAChB,CAEA,gBAAIT,CAAatI,GACbN,KAAKqJ,cAAgB/I,CACzB,CAEA,gBAAIuI,GACA,OAAO7I,KAAKsJ,aAChB,CAEA,gBAAIT,CAAavI,GACbN,KAAKsJ,cAAgBhJ,CACzB,CAEA,eAAIqB,GACA,OAAO3B,KAAK+B,YAChB,CAEA,eAAIJ,CAAYrB,GACZN,KAAK+B,aAAezB,CACxB,CAEAsG,MAAAA,GACI,MAAMxD,EAAO,CACTiF,mBAAoBrI,KAAK8I,oBACzBR,qBAAsBtI,KAAK+I,sBAC3BR,kBAAmBvI,KAAKgJ,mBACxBR,cAAexI,KAAKiJ,eACpBR,oBAAqBzI,KAAKkJ,qBAC1BR,4BAA6B1I,KAAKmJ,6BAClCR,oBAAqB3I,KAAKoJ,qBAC1BtG,MAAO9C,KAAKkD,QAWhB,YAT2ByE,IAAvB3H,KAAKqJ,gBACLjG,EAAKwF,aAAe5I,KAAKqJ,oBAEF1B,IAAvB3H,KAAKsJ,gBACLlG,EAAKyF,aAAe7I,KAAKsJ,oBAEH3B,IAAtB3H,KAAK+B,eACLqB,EAAKzB,YAAc3B,KAAK+B,cAErBqB,CACX,EAMJ,MAAM0C,EAOF,sBAAOT,CAAgB4B,EAAMtH,GACzB,OAAOsH,EAAKsC,KAAMxE,GAASA,EAAKpF,WAAaA,EACjD,CAQA,qBAAOuH,CAAeD,EAAMtH,GACxB,OAAOsH,EAAKjD,KAAMe,GAASA,EAAKpF,WAAaA,EACjD,CAQA,0BAAOoG,CAAoBkB,EAAMtH,GAC7B,OAAOsH,EAAKuC,UAAWzE,GAASA,EAAKpF,WAAaA,EACtD,E","sources":["webpack://root-config/./packages/legacy-workbench/src/js/angular/models/clustermanagement/cluster.js"],"sourcesContent":["/**\n * Represents a location with relevant metadata.\n */\nexport class Location {\n /**\n * @param {string} endpoint - The endpoint of the location.\n * @param {string} rpcAddress - The RPC address of the location.\n * @param {string} error - Any error associated with the location.\n * @param {boolean} isAvailable - Whether the location is available.\n * @param {boolean} isLocal - Whether the location is local.\n */\n constructor(endpoint, rpcAddress = null, error = null, isAvailable = false, isLocal = false) {\n this._endpoint = endpoint;\n this._rpcAddress = rpcAddress;\n this._error = error;\n this._isAvailable = isAvailable;\n this._isLocal = isLocal;\n }\n\n /** @return {boolean} Whether the location is local. */\n get isLocal() {\n return this._isLocal;\n }\n\n /** @return {string} The endpoint of the location. */\n get endpoint() {\n return this._endpoint;\n }\n\n /** @return {string} The RPC address of the location. */\n get rpcAddress() {\n return this._rpcAddress;\n }\n\n /** @return {string} Any error related to the location. */\n get error() {\n return this._error;\n }\n\n /** @return {boolean} Whether the location is available. */\n get isAvailable() {\n return this._isAvailable;\n }\n\n set endpoint(value) {\n this._endpoint = value;\n }\n\n set rpcAddress(value) {\n this._rpcAddress = value;\n }\n\n set error(value) {\n this._error = value;\n }\n\n set isAvailable(value) {\n this._isAvailable = value;\n }\n\n set isLocal(value) {\n this._isLocal = value;\n }\n\n /**\n * Maps JSON data to a Location instance.\n * @param {Object} json - The JSON data.\n * @return {Location} The mapped Location instance.\n */\n static fromJSON({endpoint, rpcAddress, error = null, isAvailable = false, isLocal = false}) {\n return new Location(endpoint, rpcAddress, error, isAvailable, isLocal);\n }\n}\n\n/**\n * Represents a node with its associated state and metadata.\n */\nexport class Node {\n /**\n * @param {string} address - The address of the node.\n * @param {string} nodeState - The current state of the node.\n * @param {number} term - The term of the node.\n * @param {string} syncStatus - The synchronization status of the node.\n * @param {number} lastLogTerm - The last log term of the node.\n * @param {number} lastLogIndex - The last log index of the node.\n * @param {string} endpoint - The endpoint associated with the node.\n * @param {string} recoveryStatus - The recovery status of the node.\n * @param {Object} topologyStatus - The topology status of the node.\n */\n constructor(address, nodeState, term, syncStatus, lastLogTerm, lastLogIndex, endpoint, recoveryStatus, topologyStatus) {\n this._address = address;\n this._nodeState = nodeState;\n this._term = term;\n this._syncStatus = syncStatus;\n this._lastLogTerm = lastLogTerm;\n this._lastLogIndex = lastLogIndex;\n this._endpoint = endpoint;\n this._recoveryStatus = recoveryStatus;\n this._topologyStatus = TopologyStatus.fromJSON(topologyStatus);\n }\n\n /** @return {string} The address of the node. */\n get address() {\n return this._address;\n }\n\n /** @return {string} The current state of the node. */\n get nodeState() {\n return this._nodeState;\n }\n\n /** @return {number} The term of the node. */\n get term() {\n return this._term;\n }\n\n /** @return {string} The synchronization status of the node. */\n get syncStatus() {\n return this._syncStatus;\n }\n\n /** @return {number} The last log term of the node. */\n get lastLogTerm() {\n return this._lastLogTerm;\n }\n\n /** @return {number} The last log index of the node. */\n get lastLogIndex() {\n return this._lastLogIndex;\n }\n\n /** @return {string} The endpoint of the node. */\n get endpoint() {\n return this._endpoint;\n }\n\n /** @return {string} The recovery status of the node. */\n get recoveryStatus() {\n return this._recoveryStatus;\n }\n\n set address(value) {\n this._address = value;\n }\n\n set nodeState(value) {\n this._nodeState = value;\n }\n\n set term(value) {\n this._term = value;\n }\n\n set syncStatus(value) {\n this._syncStatus = value;\n }\n\n set lastLogTerm(value) {\n this._lastLogTerm = value;\n }\n\n set lastLogIndex(value) {\n this._lastLogIndex = value;\n }\n\n set endpoint(value) {\n this._endpoint = value;\n }\n\n set recoveryStatus(value) {\n this._recoveryStatus = value;\n }\n\n get topologyStatus() {\n return this._topologyStatus;\n }\n\n set topologyStatus(value) {\n return this._topologyStatus = value;\n }\n\n /**\n * Maps JSON data to a Node instance.\n * @param {Object} json - The JSON data.\n * @return {Node} The mapped Node instance.\n */\n static fromJSON({address, nodeState, term, syncStatus, lastLogTerm, lastLogIndex, endpoint, recoveryStatus, topologyStatus}) {\n return new Node(address, nodeState, term, syncStatus, lastLogTerm, lastLogIndex, endpoint, recoveryStatus, topologyStatus);\n }\n}\n\n/**\n * Represents the status of a topology.\n */\nexport class TopologyStatus {\n /**\n * @param {string} state - The current state of the topology.\n * @param {Object<string, number>} [primaryTags={}] - Map of primary cluster tags to their values.\n * @param {number} [primaryIndex] - The index of the primary cluster.\n * @param {string} [primaryLeader] - The leader's rpc address of the primary cluster.\n */\n constructor(state, primaryTags = {}, primaryIndex, primaryLeader) {\n this._state = state;\n this._primaryTags = primaryTags;\n this._primaryIndex = primaryIndex;\n this._primaryLeader = primaryLeader;\n }\n\n get state() {\n return this._state;\n }\n\n /** @return {Object<string, number>} Map of primary cluster tags to their values. */\n get primaryTags() {\n return this._primaryTags;\n }\n\n get primaryIndex() {\n return this._primaryIndex;\n }\n\n get primaryLeader() {\n return this._primaryLeader;\n }\n\n /**\n * Maps JSON data to a TopologyStatus instance.\n * Converts primaryTags from an object to a Map if provided, otherwise defaults to an empty Map.\n * @param {Object} json - The JSON data.\n * @return {TopologyStatus} The mapped TopologyStatus instance.\n */\n static fromJSON({state, primaryTags, primaryIndex, primaryLeader}) {\n return new TopologyStatus(state, primaryTags, primaryIndex, primaryLeader);\n }\n}\n\n/**\n * Represents a link between nodes.\n */\nexport class Link {\n /**\n * @param {string} id - The ID of the link.\n * @param {string} source - The source node of the link.\n * @param {string} target - The target node of the link.\n * @param {string} status - The status of the link.\n */\n constructor(id, source, target, status) {\n this._id = id;\n this._source = source;\n this._target = target;\n this._status = status;\n }\n\n /**\n * Maps JSON data to a Link instance.\n * @param {Object} json - The JSON data.\n * @return {Link} The mapped Link instance.\n */\n static fromJSON({id, source, target, status}) {\n return new Link(id, source, target, status);\n }\n}\n\n/**\n * Represents the cluster model containing locations, nodes, and links.\n */\nexport class ClusterModel {\n /**\n * @param {Location[]} locations - The list of locations.\n * @param {boolean} hasCluster - Whether the cluster exists.\n * @param {Node[]} nodes - The list of nodes.\n * @param {Link[]} links - The list of links.\n */\n constructor(locations, hasCluster, nodes, links) {\n this._locations = locations;\n this._hasCluster = hasCluster;\n this._nodes = nodes;\n this._links = links;\n }\n\n /** @return {Location[]} The list of locations. */\n get locations() {\n return this._locations;\n }\n\n /** @param {Location[]} value The new list of locations. */\n set locations(value) {\n this._locations = value;\n }\n\n /** @return {boolean} Whether the cluster exists. */\n get hasCluster() {\n return this._hasCluster;\n }\n\n /** @param {boolean} value Whether the cluster exists. */\n set hasCluster(value) {\n this._hasCluster = value;\n }\n\n /** @return {Node[]} The list of nodes. */\n get nodes() {\n return this._nodes;\n }\n\n /** @param {Node[]} value The new list of nodes. */\n set nodes(value) {\n this._nodes = value;\n }\n\n /** @return {Link[]} The list of links. */\n get links() {\n return this._links;\n }\n\n /** @param {Link[]} value The new list of links. */\n set links(value) {\n this._links = value;\n }\n\n /**\n * Maps JSON data to a ClusterModel instance.\n * @param {Object} json - The JSON data.\n * @return {ClusterModel} The mapped ClusterModel instance.\n */\n static fromJSON(json) {\n const locations = json.locations.map(Location.fromJSON);\n const nodes = json.nodes.map(Node.fromJSON);\n const links = json.links.map(Link.fromJSON);\n\n return new ClusterModel(locations, json.hasCluster, nodes, links);\n }\n}\n\n/**\n * ViewModel to manage and present the cluster model data.\n */\nexport class ClusterViewModel {\n /**\n * @param {Object} clusterModel - The raw cluster model JSON.\n */\n constructor(clusterModel) {\n this._clusterModel = ClusterModel.fromJSON(clusterModel);\n this._addToCluster = new Map();\n this._deleteFromCluster = new Map();\n this._currentNodesCount = 0;\n this._clusterConfiguration = new ClusterConfiguration();\n this._localNodeEndpoint = clusterModel.locations.find((location) => location.isLocal).endpoint;\n this.MINIMUM_NODES_REQUIRED = 2;\n }\n\n\n /**\n * Gets nodes attached to the cluster.\n * @return {Node[]} The list of attached nodes in view model format.\n */\n getAttached() {\n const nodes = this._clusterModel.nodes;\n const resultNodes = nodes\n .concat(Array.from(this._addToCluster.values()));\n\n this._currentNodesCount = resultNodes.filter((node) => !this._deleteFromCluster.has(node.endpoint)).length;\n return resultNodes;\n }\n\n /**\n * Get the view model of the current cluster.\n * @return {ClusterItemViewModel[]} The view model of the cluster.\n */\n getViewModel() {\n let index = 0;\n return this.getAttached().map((item) => {\n const location = new ClusterItemViewModel(item);\n if (this._deleteFromCluster.has(item.endpoint)) {\n location.isDeleted = true;\n } else {\n location.index = index++;\n }\n if (this._localNodeEndpoint === item.endpoint) {\n location.isLocal = true;\n }\n return location;\n });\n }\n\n /**\n * Gets available locations that can be added to the cluster.\n * @param {boolean} includeDeleted include deleted nodes\n * @return {Location[]} The list of available locations in view model format.\n */\n getAvailable(includeDeleted = false) {\n const nodes = this._clusterModel.nodes;\n const locations = this._clusterModel.locations;\n\n return locations\n .filter((location) => {\n const isNotInNodeList = !this.isPresentInList(nodes, location.endpoint);\n const isAvailable = location.isAvailable;\n const isNotInAddList = !this._addToCluster.has(location.endpoint);\n\n const isNotDeleted = includeDeleted ? true : !this._deleteFromCluster.has(location.endpoint);\n\n return isNotInNodeList && isAvailable && isNotDeleted && isNotInAddList;\n });\n }\n\n /**\n * Gets the endpoints of the available nodes that are not yet part of the cluster.\n *\n * @return {string[]} The list of available node endpoints.\n */\n getAvailableNodeEndpoints() {\n return this.getAvailable().map((node) => node.endpoint);\n }\n\n /**\n * Retrieves the local node information.\n *\n * @return {Location} The local node location.\n */\n getLocalNode() {\n return this._clusterModel.locations.find((location) => location.isLocal);\n }\n\n /**\n * Adds a location to the cluster, ensuring uniqueness by endpoint.\n * @param {Location} location - The location in JSON to add.\n */\n addToCluster(location) {\n const endpoint = location.endpoint;\n\n if (location.endpoint) {\n this.addToLocations(location);\n }\n\n if (this._deleteFromCluster.has(endpoint)) {\n this._deleteFromCluster.delete(endpoint);\n } else {\n this._addToCluster.set(endpoint, location);\n }\n }\n\n /**\n * Adds a location to the cluster's location list.\n * If the location is not already present in the list, it will be added.\n * If the location is already present, it will be replaced.\n *\n * @param {Location} location - The location to add to the locations list.\n * @return {void}\n */\n addToLocations(location) {\n const index = ClusterUtil.findIndexByEndpoint(this._clusterModel.locations, location.endpoint);\n if (index === -1) {\n this._clusterModel.locations.push(location);\n } else {\n this._clusterModel.locations.splice(index, 1);\n }\n }\n\n /**\n * Marks an item for deletion from the cluster, ensuring uniqueness by endpoint.\n * If the item is already marked for addition, it will be removed from the addition map.\n * Otherwise, it will be added to the deletion map.\n *\n * @param {Node|Location} itemToDelete - The item to delete. This can either be a Node or Location object.\n * @return {void}\n */\n deleteFromCluster(itemToDelete) {\n const endpoint = itemToDelete.endpoint;\n if (this._addToCluster.has(endpoint)) {\n this._addToCluster.delete(endpoint);\n } else {\n this._deleteFromCluster.set(endpoint, itemToDelete);\n }\n }\n\n /**\n * Gets nodes to delete from the cluster.\n * @return {Location|Node[]} The list of nodes to delete from the cluster.\n */\n getDeleteFromCluster() {\n return Array.from(this._deleteFromCluster.values());\n }\n\n /**\n * Prepares the actions needed to update the cluster, including nodes to be added and removed.\n * Also updates the cluster configuration with the current nodes if necessary.\n *\n * @return {Object} An object containing the nodes to be added, the nodes to be removed, and the updated cluster configuration in JSON format.\n * @property {string[]} addNodes - List of node addresses to add to the cluster.\n * @property {string[]} removeNodes - List of node addresses to remove from the cluster.\n * @property {Object} [clusterConfiguration] - The updated cluster configuration in JSON format, if applicable.\n */\n getUpdateActions() {\n const addNodes = Array.from(this._addToCluster.values()).map((node) => node.endpoint);\n const removeNodes = Array.from(this._deleteFromCluster.values()).map((node) => node.endpoint);\n const updateActions = {\n addNodes,\n removeNodes,\n };\n\n const updatedClusterConfig = this.updateClusterConfiguration(addNodes);\n if (updatedClusterConfig) {\n updateActions.clusterConfiguration = updatedClusterConfig;\n }\n\n return updateActions;\n }\n\n /**\n * Updates the cluster configuration with the current nodes if the cluster does not exist.\n *\n * @param {string[]} addNodes - List of node addresses to add to the cluster.\n * @return {Object|null} The updated cluster configuration in JSON format, or null if no update is made.\n */\n updateClusterConfiguration(addNodes) {\n if (!this.hasCluster()) {\n this._clusterConfiguration.nodes = addNodes;\n return this._clusterConfiguration.toJSON();\n }\n return null;\n }\n\n /**\n * Retrieves the current cluster configuration.\n *\n * @return {ClusterConfiguration} The cluster configuration.\n */\n getClusterConfiguration() {\n return this._clusterConfiguration;\n }\n\n /**\n * Restores a node from the deletion map by removing it from the map of nodes marked for deletion.\n * @param {Node} node - The node to restore from the deletion map.\n * @return {void}\n */\n restoreFromDeletion(node) {\n this._deleteFromCluster.delete(node.endpoint);\n }\n\n isChanged() {\n return this._addToCluster.size > 0 || this._deleteFromCluster.size > 0;\n }\n\n /**\n * Check if an item is present in the list by endpoint.\n * @param {Node[]|Location[]} list - The array of nodes or locations.\n * @param {string} endpoint - The endpoint to check for.\n * @return {boolean} True if the item is found, otherwise false.\n */\n isPresentInList(list, endpoint) {\n return ClusterUtil.isPresentInList(list, endpoint);\n }\n\n /**\n * Find an item in a list by endpoint.\n * @param {Node[]|Location[]} list - The array of nodes or locations.\n * @param {string} endpoint - The endpoint to search for.\n * @return {Node|Location|undefined} The item if found, otherwise undefined.\n */\n findByEndpoint(list, endpoint) {\n return ClusterUtil.findByEndpoint(list, endpoint);\n }\n\n /**\n * Find the index of an item by endpoint.\n * @param {Node[]|Location[]} list - The array of nodes or locations.\n * @param {string} endpoint - The endpoint to search for.\n * @return {number} The index of the item if found, otherwise -1.\n */\n findIndexByEndpoint(list, endpoint) {\n return ClusterUtil.findIndexByEndpoint(list, endpoint);\n }\n\n /**\n * Checks if the current number of nodes meets the minimum required.\n * @return {boolean} True if the current node count is valid, false otherwise.\n */\n hasValidNodesCount() {\n return this._currentNodesCount >= this.MINIMUM_NODES_REQUIRED;\n }\n\n /**\n * Determines if a node can be deleted from the cluster based on the current\n * number of nodes marked for deletion and the total number of nodes in the cluster.\n *\n * This function ensures that less than half of the healthy nodes are marked for deletion.\n * Deleting 50% or more of the nodes can severely affect quorum-based replication and\n * increase the likelihood of issues such as split-brain scenarios, where the cluster\n * is divided into disjointed sub-clusters, leading to data inconsistency or system failure.\n *\n * The condition is based on the fact that quorum-based systems require more than\n * half of the nodes to be healthy for consistent decision-making.\n *\n * @return {boolean} True if a node can be deleted (less than half the nodes are marked for deletion), otherwise false.\n */\n canDeleteNode() {\n const quorumThreshold = Math.floor(this._clusterModel.nodes.length / 2);\n return this._deleteFromCluster.size < quorumThreshold;\n }\n\n /**\n * Checks if the cluster is currently configured.\n *\n * @return {boolean} True if the cluster is configured, false otherwise.\n */\n hasCluster() {\n return this._clusterModel.hasCluster;\n }\n}\n\nexport class ClusterItemViewModel {\n constructor(item) {\n this._item = item;\n this._endpoint = item.endpoint;\n this._isDeleted = false;\n this._index = undefined;\n this._isLocal = false;\n }\n\n getEndPoint() {\n return this._item.endpoint;\n }\n\n getAddress() {\n if (this._item._address !== undefined) {\n return this._item._address;\n } else if (this._item.rpcAddress !== undefined) {\n return this._item.rpcAddress;\n }\n return null;\n }\n\n isNode() {\n return this._item._address !== undefined;\n }\n\n isLocation() {\n return this._item._address === undefined;\n }\n\n getNodeState() {\n if (this.isNode()) {\n return this._item._nodeState;\n }\n return null;\n }\n\n getIsAvailable() {\n if (!this.isNode()) {\n return this._item.isAvailable;\n }\n return null;\n }\n\n getTerm() {\n if (this.isNode()) {\n return this._item.term;\n }\n return null;\n }\n\n getSyncStatus() {\n if (this.isNode()) {\n return this._item.syncStatus;\n }\n return null;\n }\n\n getIsLocal() {\n if (!this.isNode()) {\n return this._item.isLocal;\n }\n return null;\n }\n\n get item() {\n return this._item;\n }\n\n get endpoint() {\n return this._endpoint;\n }\n\n set endpoint(value) {\n return this._endpoint = value;\n }\n\n get isDeleted() {\n return this._isDeleted;\n }\n\n set isDeleted(value) {\n this._isDeleted = value;\n }\n\n get index() {\n return this._index;\n }\n\n set index(value) {\n this._index = value;\n }\n\n get isLocal() {\n return this._isLocal;\n }\n\n set isLocal(value) {\n this._isLocal = value;\n }\n}\n\nexport class ClusterConfiguration {\n constructor({\n electionMinTimeout = 8000,\n electionRangeTimeout = 6000,\n heartbeatInterval = 2000,\n messageSizeKB = 64,\n verificationTimeout = 1500,\n transactionLogMaximumSizeGB = 50,\n batchUpdateInterval = 5000,\n nodes = [],\n primaryTags,\n secondaryTag,\n primaryNodes,\n } = {}) {\n this._electionMinTimeout = electionMinTimeout;\n this._electionRangeTimeout = electionRangeTimeout;\n this._heartbeatInterval = heartbeatInterval;\n this._messageSizeKB = messageSizeKB;\n this._verificationTimeout = verificationTimeout;\n this._transactionLogMaximumSizeGB = transactionLogMaximumSizeGB;\n this._batchUpdateInterval = batchUpdateInterval;\n this._nodes = nodes;\n this._primaryTags = primaryTags;\n this._secondaryTag = secondaryTag;\n this._primaryNodes = primaryNodes;\n }\n\n static fromJSON(json) {\n return new ClusterConfiguration(json);\n }\n\n get electionMinTimeout() {\n return this._electionMinTimeout;\n }\n\n set electionMinTimeout(value) {\n this._electionMinTimeout = value;\n }\n\n get electionRangeTimeout() {\n return this._electionRangeTimeout;\n }\n\n set electionRangeTimeout(value) {\n this._electionRangeTimeout = value;\n }\n\n get heartbeatInterval() {\n return this._heartbeatInterval;\n }\n\n set heartbeatInterval(value) {\n this._heartbeatInterval = value;\n }\n\n get messageSizeKB() {\n return this._messageSizeKB;\n }\n\n set messageSizeKB(value) {\n this._messageSizeKB = value;\n }\n\n get verificationTimeout() {\n return this._verificationTimeout;\n }\n\n set verificationTimeout(value) {\n this._verificationTimeout = value;\n }\n\n get transactionLogMaximumSizeGB() {\n return this._transactionLogMaximumSizeGB;\n }\n\n set transactionLogMaximumSizeGB(value) {\n this._transactionLogMaximumSizeGB = value;\n }\n\n get nodes() {\n return this._nodes;\n }\n\n set nodes(value) {\n this._nodes = value;\n }\n\n get batchUpdateInterval() {\n return this._batchUpdateInterval;\n }\n\n set batchUpdateInterval(value) {\n this._batchUpdateInterval = value;\n }\n\n get secondaryTag() {\n return this._secondaryTag;\n }\n\n set secondaryTag(value) {\n this._secondaryTag = value;\n }\n\n get primaryNodes() {\n return this._primaryNodes;\n }\n\n set primaryNodes(value) {\n this._primaryNodes = value;\n }\n\n get primaryTags() {\n return this._primaryTags;\n }\n\n set primaryTags(value) {\n this._primaryTags = value;\n }\n\n toJSON() {\n const json = {\n electionMinTimeout: this._electionMinTimeout,\n electionRangeTimeout: this._electionRangeTimeout,\n heartbeatInterval: this._heartbeatInterval,\n messageSizeKB: this._messageSizeKB,\n verificationTimeout: this._verificationTimeout,\n transactionLogMaximumSizeGB: this._transactionLogMaximumSizeGB,\n batchUpdateInterval: this._batchUpdateInterval,\n nodes: this._nodes,\n };\n if (this._secondaryTag !== undefined) {\n json.secondaryTag = this._secondaryTag;\n }\n if (this._primaryNodes !== undefined) {\n json.primaryNodes = this._primaryNodes;\n }\n if (this._primaryTags !== undefined) {\n json.primaryTags = this._primaryTags;\n }\n return json;\n }\n}\n\n/**\n * Utility class for transforming cluster data to a view model format.\n */\nclass ClusterUtil {\n /**\n * Checks if an item is present in a list by comparing the endpoint.\n * @param {Node[]|Location[]} list - The array of nodes or locations.\n * @param {string} endpoint - The endpoint to check for.\n * @return {boolean} True if the item is found, otherwise false.\n */\n static isPresentInList(list, endpoint) {\n return list.some((item) => item.endpoint === endpoint);\n }\n\n /**\n * Finds an item in a list by its endpoint.\n * @param {Node[] | Location[]} list - The array of nodes or locations.\n * @param {string} endpoint - The endpoint to search for.\n * @return {Node|Location|undefined} The item if found, otherwise undefined.\n */\n static findByEndpoint(list, endpoint) {\n return list.find((item) => item.endpoint === endpoint);\n }\n\n /**\n * Finds the index of an item in a list by its endpoint.\n * @param {Node[]|Location[]} list - The array of nodes or locations.\n * @param {string} endpoint - The endpoint to search for.\n * @return {number} The index of the item if found, otherwise -1.\n */\n static findIndexByEndpoint(list, endpoint) {\n return list.findIndex((item) => item.endpoint === endpoint);\n }\n}\n"],"names":["Location","constructor","endpoint","rpcAddress","error","isAvailable","isLocal","this","_endpoint","_rpcAddress","_error","_isAvailable","_isLocal","value","fromJSON","Node","address","nodeState","term","syncStatus","lastLogTerm","lastLogIndex","recoveryStatus","topologyStatus","_address","_nodeState","_term","_syncStatus","_lastLogTerm","_lastLogIndex","_recoveryStatus","_topologyStatus","TopologyStatus","state","primaryTags","primaryIndex","primaryLeader","_state","_primaryTags","_primaryIndex","_primaryLeader","Link","id","source","target","status","_id","_source","_target","_status","ClusterModel","locations","hasCluster","nodes","links","_locations","_hasCluster","_nodes","_links","json","map","ClusterViewModel","clusterModel","_clusterModel","_addToCluster","Map","_deleteFromCluster","_currentNodesCount","_clusterConfiguration","ClusterConfiguration","_localNodeEndpoint","find","location","MINIMUM_NODES_REQUIRED","getAttached","resultNodes","concat","Array","from","values","filter","node","has","length","getViewModel","index","item","ClusterItemViewModel","isDeleted","getAvailable","includeDeleted","isNotInNodeList","isPresentInList","isNotInAddList","isNotDeleted","getAvailableNodeEndpoints","getLocalNode","addToCluster","addToLocations","delete","set","ClusterUtil","findIndexByEndpoint","push","splice","deleteFromCluster","itemToDelete","getDeleteFromCluster","getUpdateActions","addNodes","updateActions","removeNodes","updatedClusterConfig","updateClusterConfiguration","clusterConfiguration","toJSON","getClusterConfiguration","restoreFromDeletion","isChanged","size","list","findByEndpoint","hasValidNodesCount","canDeleteNode","quorumThreshold","Math","floor","_item","_isDeleted","_index","undefined","getEndPoint","getAddress","isNode","isLocation","getNodeState","getIsAvailable","getTerm","getSyncStatus","getIsLocal","electionMinTimeout","electionRangeTimeout","heartbeatInterval","messageSizeKB","verificationTimeout","transactionLogMaximumSizeGB","batchUpdateInterval","secondaryTag","primaryNodes","_electionMinTimeout","_electionRangeTimeout","_heartbeatInterval","_messageSizeKB","_verificationTimeout","_transactionLogMaximumSizeGB","_batchUpdateInterval","_secondaryTag","_primaryNodes","some","findIndex"],"sourceRoot":""}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "defaultLanguage": "en",
3
- "languageBundleVersion": "3.5.1-TR3",
3
+ "languageBundleVersion": "3.5.1",
4
4
  "availableLanguages": [
5
5
  {
6
6
  "key": "en",
@@ -1 +1 @@
1
- .multi-region .multi-region-content{display:flex;flex:1;flex-direction:column;gap:1.5rem;height:100%}.multi-region .multi-region-form{display:flex;flex-direction:column;overflow:hidden}.multi-region .multi-region-table{overflow:auto}.multi-region .multi-region-error{flex:0 0 auto}.multi-region-loader .ot-loader-new-content{background-color:var(--gw-neutral-50-alpha-50);height:100%;position:absolute;width:100%}.cluster-status-loader{color:var(--gw-foreground-on-surface-secondary);font-size:1.5rem}.multi-region .tags-table{border-collapse:separate;border-spacing:0}.multi-region .tags-table td,.multi-region .tags-table th{padding:.4rem}.multi-region .tags-table .tag-column{width:auto}.multi-region .tags-table .tag-index-column{width:16%}.multi-region .tags-table .index-column{width:10%}.multi-region .multi-region-table thead th{border-bottom:var(--gw-datatable-header-background);height:2rem;position:sticky;top:0;z-index:1}.multi-region .multi-region-table .add-tag-row{position:sticky;top:2.4rem;z-index:1}.multi-region .tag-input.ng-invalid.ng-dirty{border-color:var(--gw-tag-danger-color)!important}.multi-region .tag-input.ng-valid.ng-dirty{border-color:initial}
1
+ .multi-region{height:100%}.multi-region .multi-region-content{display:flex;flex-direction:column;gap:1.5rem;height:100%}.multi-region .multi-region-form{display:flex;flex-direction:column;overflow:hidden}.multi-region .multi-region-table{margin-bottom:1.5rem;overflow:auto}.multi-region .multi-region-error{flex:0 0 auto}.multi-region-loader .ot-loader-new-content{background-color:var(--gw-neutral-50-alpha-50);height:100%;position:absolute;width:100%}.cluster-status-loader{color:var(--gw-foreground-on-surface-secondary);font-size:1.5rem}.multi-region .tags-table{border-collapse:separate;border-spacing:0}.multi-region .tags-table td,.multi-region .tags-table th{padding:.4rem}.multi-region .tags-table .tag-column{width:auto}.multi-region .tags-table .tag-index-column{width:16%}.multi-region .tags-table .index-column{width:10%}.multi-region .multi-region-table thead th{border-bottom:var(--gw-datatable-header-background);height:2rem;position:sticky;top:0;z-index:1}.multi-region .multi-region-table .add-tag-row{position:sticky;top:2.4rem;z-index:1}.multi-region .tag-input.ng-invalid.ng-dirty{border-color:var(--gw-tag-danger-color)!important}.multi-region .tag-input.ng-valid.ng-dirty{border-color:initial}
@@ -1 +1 @@
1
- .cluster-view{position:relative}.cluster-view svg{background-color:var(--gw-panel-background);-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none}.cluster-view path.link{stroke-width:5px}.cluster-zone,.cluster-zone.no-cluster{fill:transparent;stroke:var(--gw-panel-color)}.cluster-zone.no-cluster{transition:fill .2s,stroke .2s}.cluster-zone.no-cluster.has-access{cursor:pointer}.cluster-zone.no-cluster:hover{fill:var(--gw-hover-background)!important;height:120%;stroke-width:3!important;width:120%}#no-cluster-zone #create-cluster-label,#no-cluster-zone #no-cluster-label{fill:var(--gw-panel-color)}.settings-icon{font-size:110px!important}.settings-icon.small{font-size:56px!important}.toggle-legend-icon{font-size:40px!important}.node{cursor:pointer;fill:var(--gw-neutral-base)}.node.leader{fill:var(--gw-cluster-node-leader-background);stroke:var(--gw-cluster-node-leader-background)}.node.follower{fill:var(--gw-cluster-node-follower-background);stroke:var(--gw-cluster-node-follower-background)}.node.candidate{fill:var(--gw-tertiary-base);stroke:var(--gw-tertiary-base)}.node.other{fill:var(--gw-cluster-node-outofsync-background);stroke:var(--gw-cluster-node-outofsync-background)}#node-group.legend .node{cursor:default;stroke-width:.5}#node-group.legend .node-icon{font-size:25px}.legend .id-host{color:#000;font-size:9px;font-weight:400;overflow:hidden;text-align:center;text-overflow:ellipsis;white-space:nowrap}.cluster-legend-group .legend-background{fill:var(--gw-button-secondary-background)}.cluster-legend-group .legend-title,.cluster-legend-group .links-statuses,.cluster-legend-group .sync-status{fill:var(--gw-body-color)}.legend-group .label-wrapper{overflow:visible}.toggle-legend-btn{bottom:0;position:absolute}.hidden-legend,.legend-group.hidden{visibility:hidden}.hidden{display:none}text.node-icon{fill:hsla(0,0%,100%,.5);font-size:40px}.id-host{fill:var(--gw-tag-default-color)}.id-host-background,.node-info-background{fill:var(--gw-tag-default-background)}text.node-icon{dominant-baseline:central;text-anchor:middle}text{font-family:var(--main-font)!important;font-size:12px;pointer-events:none}.node-info-fo,text.id-host{font-weight:400;text-anchor:middle}text.sync-status{font-size:.95rem}text.links-statuses{font-size:.7rem}.node-info-fo,.text-btn{cursor:pointer}.text-btn{background:none;border:none;color:#000;margin:0;padding-top:.1rem}.text-btn,.text-btn:focus{box-shadow:none;outline:none!important}.no-margin-list ul{margin-bottom:0}div.nodetooltip{background-color:var(--gw-dialog-background);border-color:var(--gw-dialog-border-color);box-shadow:var(--gw-dialog-shadow-1-offset-x) var(--gw-dialog-shadow-1-offset-y) var(--gw-dialog-shadow-1-blur) var(--gw-dialog-shadow-1-spread) var(--gw-dialog-shadow-1-color);color:var(--gw-dialog-color);font-size:90%;max-width:400px;padding:10px 10px 10px 30px;position:absolute;text-align:left;width:40%;z-index:1000}.main-menu.collapsed~div .legend-container{left:90px}.cluster-loader{position:relative;z-index:100000}.cluster-loader .ot-loader-new-content{background-color:transparent;height:calc(100vh - 120px);padding-top:calc(50vh - 150px);width:100%;z-index:100000}.create-cluster-loader{background-color:transparent;bottom:0;display:flex;left:0;margin:auto;position:absolute;right:0;top:0;z-index:100000}.cluster-configuration-panel{max-width:max(300px,25vw);z-index:1016!important}.locations-list{border:1px solid;max-height:18rem;min-height:8rem;overflow:auto}.locations-list .location-item{justify-content:space-between}.location-item{align-items:center;display:flex;justify-content:flex-start;padding:2px;-webkit-user-select:none;user-select:none;word-break:break-all}.location-item .text-only:hover{text-decoration:1px underline dashed var(--gw-success-base);text-underline-offset:4px}.location-item:hover .custom-link-icon{opacity:1}.location-item.hoverable:not(.list-group-item-danger):hover{background-color:rgba(0,0,0,.05);cursor:pointer}.location-item.hoverable.list-group-item-danger:hover{cursor:not-allowed}.list-group-item-node{cursor:pointer;padding:0}.list-group-item-node a{padding:.75rem 1.25rem}.logo-image{background:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbDpzcGFjZT0icHJlc2VydmUiIGlkPSJMYXllcl8xIiB4PSIwIiB5PSIwIiB2aWV3Qm94PSIwIDAgNDcgNjcuMiI+PHN0eWxlPi5zdDB7ZmlsbDojZjA0ZTIzfTwvc3R5bGU+PHRpdGxlPmdyYXBoZGItbG9nby1uby10ZXh0PC90aXRsZT48cGF0aCBkPSJNMzkuMyAyNy44YzQuMy45IDcgNSA2LjEgOS4zcy01IDctOS4zIDYuMWMtNC4yLS45LTctNS02LjItOS4yczQuOS03IDkuMS02LjJjLjItLjEuMi0uMS4zIDBNMjMgNDAuM2MyLjUuNiA0LjEgMyAzLjcgNS41LS41IDIuNS0zIDQuMS01LjUgMy42cy00LjEtMi45LTMuNy01LjVjLjYtMi41IDMtNC4xIDUuNS0zLjZNMjkuNCAxOGMxLjcuNCAyLjggMiAyLjUgMy43LS40IDEuNy0yIDIuOC0zLjcgMi41LTEuNy0uNC0yLjgtMi0yLjUtMy43czItMi44IDMuNy0yLjVNMjMuOSAxLjZjMy4yIDIuNSAzLjggNyAxLjMgMTAuM3MtNyAzLjgtMTAuMyAxLjNjLTMuMi0yLjUtMy44LTctMS4zLTEwLjIgMi40LTMuMiA3LTMuOCAxMC4zLTEuNHEtLjE1IDAgMCAwTTEyLjMgNDkuNGMyLjcgMi44IDIuNiA3LjItLjIgOS44LTIuOCAyLjctNy4yIDIuNi05LjgtLjItMi43LTIuOC0yLjYtNy4yLjItOS44IDIuOC0yLjcgNy4xLTIuNiA5LjguMiIgY2xhc3M9InN0MCIvPjwvc3ZnPg==) no-repeat 0;height:25px;width:25px}.action-buttons{flex-grow:1}.advanced-options-toggle{margin-right:6px}.toggle-legend-btn .btn{text-decoration:none}.autocomplete-container{position:relative}.autocomplete-dropdown{background-color:var(--gw-autocomplete-background);border:1px solid var(--gw-autocomplete-border-color);box-shadow:var(--gw-autocomplete-shadow-offset-x) var(--gw-autocomplete-shadow-offset-y) var(--gw-autocomplete-shadow-blur) var(--gw-autocomplete-shadow-spread) var(--gw-autocomplete-shadow-color);color:var(--gw-autocomplete-color);list-style-type:none;margin:0;max-height:150px;overflow-y:auto;padding:0;position:absolute;width:100%;z-index:1000}.autocomplete-dropdown li{cursor:pointer;padding:8px}.autocomplete-dropdown li:hover{background-color:var(--gw-autocomplete-option-focus-background);color:var(--gw-autocomplete-option-focus-color)}.alert-save{margin-left:12px;margin-right:12px}.alert-save.alert-warning:before{content:"\e920"}ul.nodes-list{list-style:none;padding-left:0}ul.nodes-list li{margin-bottom:10px}ul.nodes-list li a{text-decoration:none}ul.nodes-list li a:hover{text-decoration:underline}.actions-column{width:80px}.index-cell{border-left:1px solid #eceeef;padding-left:12px}.actions-cell{border-right:1px solid #eceeef;width:85px}.actions-cell .btn-link,.actions-cell .btn-link a{padding:.2em}
1
+ .cluster-view{position:relative}.cluster-view svg{background-color:var(--gw-panel-background);-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none}.cluster-view path.link{stroke-width:5px}.cluster-zone,.cluster-zone.no-cluster{fill:transparent;stroke:var(--gw-panel-color)}.cluster-zone.no-cluster{transition:fill .2s,stroke .2s}.cluster-zone.no-cluster.has-access{cursor:pointer}.cluster-zone.no-cluster:hover{fill:var(--gw-hover-background)!important;height:120%;stroke-width:3!important;width:120%}#no-cluster-zone #create-cluster-label,#no-cluster-zone #no-cluster-label{fill:var(--gw-panel-color)}.settings-icon{font-size:110px!important}.settings-icon.small{font-size:56px!important}.toggle-legend-icon{font-size:40px!important}.node{cursor:pointer;fill:var(--gw-neutral-base)}.node.leader{fill:var(--gw-cluster-node-leader-background);stroke:var(--gw-cluster-node-leader-background)}.node.follower{fill:var(--gw-cluster-node-follower-background);stroke:var(--gw-cluster-node-follower-background)}.node.candidate{fill:var(--gw-tertiary-base);stroke:var(--gw-tertiary-base)}.node.other{fill:var(--gw-cluster-node-outofsync-background);stroke:var(--gw-cluster-node-outofsync-background)}#node-group.legend .node{cursor:default;stroke-width:.5}#node-group.legend .node-icon{font-size:25px}.legend .id-host{color:#000;font-size:9px;font-weight:400;overflow:hidden;text-align:center;text-overflow:ellipsis;white-space:nowrap}.cluster-legend-group .legend-background{fill:var(--gw-button-secondary-background)}.cluster-legend-group .legend-title,.cluster-legend-group .links-statuses,.cluster-legend-group .sync-status{fill:var(--gw-body-color)}.legend-group .label-wrapper{overflow:visible}.toggle-legend-btn{bottom:0;position:absolute}.hidden-legend,.legend-group.hidden{visibility:hidden}.hidden{display:none}text.node-icon{fill:hsla(0,0%,100%,.5);font-size:40px}.id-host{fill:var(--gw-tag-default-color)}.id-host-background,.node-info-background{fill:var(--gw-tag-default-background)}text.node-icon{dominant-baseline:central;text-anchor:middle}text{font-family:var(--main-font)!important;font-size:12px;pointer-events:none}.node-info-fo,text.id-host{font-weight:400;text-anchor:middle}text.sync-status{font-size:.95rem}text.links-statuses{font-size:.7rem}.node-info-fo,.text-btn{cursor:pointer}.text-btn{background:none;border:none;color:var(--gw-body-color);margin:0;padding-top:.1rem}.text-btn,.text-btn:focus{box-shadow:none;outline:none!important}.no-margin-list ul{margin-bottom:0}div.nodetooltip{background-color:var(--gw-dialog-background);border-color:var(--gw-dialog-border-color);box-shadow:var(--gw-dialog-shadow-1-offset-x) var(--gw-dialog-shadow-1-offset-y) var(--gw-dialog-shadow-1-blur) var(--gw-dialog-shadow-1-spread) var(--gw-dialog-shadow-1-color);color:var(--gw-dialog-color);font-size:90%;max-width:400px;padding:10px 10px 10px 30px;position:absolute;text-align:left;width:40%;z-index:1000}.main-menu.collapsed~div .legend-container{left:90px}.cluster-loader{position:relative;z-index:100000}.cluster-loader .ot-loader-new-content{background-color:transparent;height:calc(100vh - 120px);padding-top:calc(50vh - 150px);width:100%;z-index:100000}.create-cluster-loader{background-color:transparent;bottom:0;display:flex;left:0;margin:auto;position:absolute;right:0;top:0;z-index:100000}.cluster-configuration-panel{max-width:max(300px,25vw);z-index:1016!important}.locations-list{border:1px solid;max-height:18rem;min-height:8rem;overflow:auto}.locations-list .location-item{justify-content:space-between}.location-item{align-items:center;display:flex;justify-content:flex-start;padding:2px;-webkit-user-select:none;user-select:none;word-break:break-all}.location-item .text-only:hover{text-decoration:1px underline dashed var(--gw-success-base);text-underline-offset:4px}.location-item:hover .custom-link-icon{opacity:1}.location-item.hoverable:not(.list-group-item-danger):hover{background-color:rgba(0,0,0,.05);cursor:pointer}.location-item.hoverable.list-group-item-danger:hover{cursor:not-allowed}.list-group-item-node{cursor:pointer;padding:0}.list-group-item-node a{padding:.75rem 1.25rem}.logo-image{background:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbDpzcGFjZT0icHJlc2VydmUiIGlkPSJMYXllcl8xIiB4PSIwIiB5PSIwIiB2aWV3Qm94PSIwIDAgNDcgNjcuMiI+PHN0eWxlPi5zdDB7ZmlsbDojZjA0ZTIzfTwvc3R5bGU+PHRpdGxlPmdyYXBoZGItbG9nby1uby10ZXh0PC90aXRsZT48cGF0aCBkPSJNMzkuMyAyNy44YzQuMy45IDcgNSA2LjEgOS4zcy01IDctOS4zIDYuMWMtNC4yLS45LTctNS02LjItOS4yczQuOS03IDkuMS02LjJjLjItLjEuMi0uMS4zIDBNMjMgNDAuM2MyLjUuNiA0LjEgMyAzLjcgNS41LS41IDIuNS0zIDQuMS01LjUgMy42cy00LjEtMi45LTMuNy01LjVjLjYtMi41IDMtNC4xIDUuNS0zLjZNMjkuNCAxOGMxLjcuNCAyLjggMiAyLjUgMy43LS40IDEuNy0yIDIuOC0zLjcgMi41LTEuNy0uNC0yLjgtMi0yLjUtMy43czItMi44IDMuNy0yLjVNMjMuOSAxLjZjMy4yIDIuNSAzLjggNyAxLjMgMTAuM3MtNyAzLjgtMTAuMyAxLjNjLTMuMi0yLjUtMy44LTctMS4zLTEwLjIgMi40LTMuMiA3LTMuOCAxMC4zLTEuNHEtLjE1IDAgMCAwTTEyLjMgNDkuNGMyLjcgMi44IDIuNiA3LjItLjIgOS44LTIuOCAyLjctNy4yIDIuNi05LjgtLjItMi43LTIuOC0yLjYtNy4yLjItOS44IDIuOC0yLjcgNy4xLTIuNiA5LjguMiIgY2xhc3M9InN0MCIvPjwvc3ZnPg==) no-repeat 0;height:25px;width:25px}.action-buttons{flex-grow:1}.advanced-options-toggle{margin-right:6px}.toggle-legend-btn .btn{text-decoration:none}.autocomplete-container{position:relative}.autocomplete-dropdown{background-color:var(--gw-autocomplete-background);border:1px solid var(--gw-autocomplete-border-color);box-shadow:var(--gw-autocomplete-shadow-offset-x) var(--gw-autocomplete-shadow-offset-y) var(--gw-autocomplete-shadow-blur) var(--gw-autocomplete-shadow-spread) var(--gw-autocomplete-shadow-color);color:var(--gw-autocomplete-color);list-style-type:none;margin:0;max-height:150px;overflow-y:auto;padding:0;position:absolute;width:100%;z-index:1000}.autocomplete-dropdown li{cursor:pointer;padding:8px}.autocomplete-dropdown li:hover{background-color:var(--gw-autocomplete-option-focus-background);color:var(--gw-autocomplete-option-focus-color)}.alert-save{margin-left:12px;margin-right:12px}.alert-save.alert-warning:before{content:"\e920"}ul.nodes-list{list-style:none;padding-left:0}ul.nodes-list li{margin-bottom:10px}ul.nodes-list li a{text-decoration:none}ul.nodes-list li a:hover{text-decoration:underline}.actions-column{width:80px}.index-cell{border-left:1px solid #eceeef;padding-left:12px}.actions-cell{border-right:1px solid #eceeef;width:85px}.actions-cell .btn-link,.actions-cell .btn-link a{padding:.2em}
@@ -1 +1 @@
1
- .CodeMirror pre.CodeMirror-line,.CodeMirror pre.CodeMirror-line-like{font-variant-ligatures:none;-webkit-font-variant-ligatures:none}yasgui-component :not(h3,h4,sup,.no-force-default-font){font-size:1rem!important}yasgui-component .yasgui-btn{background-color:var(--gw-button-secondary-background)!important;border-color:var(--gw-button-secondary-border-color)!important;color:var(--gw-button-secondary-color)!important}yasgui-component .yasgui-btn:hover{background-color:var(--gw-button-secondary-hover-background)!important;border-color:var(--gw-button-secondary-hover-border-color)!important;color:var(--gw-button-secondary-hover-color)!important}yasgui-component .yasgui-btn.btn-selected{background-color:var(--gw-button-primary-background)!important;border-color:var(--gw-button-primary-border-color)!important;color:var(--gw-button-primary-color)!important}yasgui-component .yasgui-btn.btn-selected:hover{background-color:var(--gw-button-primary-hover-background)!important;border-color:var(--gw-button-primary-hover-border-color)!important;color:var(--gw-button-primary-hover-color)!important}yasgui-component .yasgui-toolbar .yasgui-btn{font-size:14px!important;padding-left:8px;padding-right:8px}yasgui-component .yasgui-toolbar .btn-orientation{background-color:transparent!important;color:var(--gw-button-secondary-color)!important;font-size:28px!important;margin-left:1rem}.yasgui-host-element .yasgui .CodeMirror[class*=cm-s-]:not(.cm-s-default){background-color:#1c1c1c;border-color:var(--gw-tabs-tab-active-border-color);.CodeMirror-linenumber{color:#777}.cm-matchhighlight{background-color:#dbdeed}.yasqe_buttons .custom-button{background-color:#1c1c1c!important}.notification{background-color:var(--gw-button-secondary-background)!important;border-color:var(--gw-button-secondary-border-color)!important;color:var(--gw-button-secondary-color)!important}.cm-comment{color:var(--gw-neutral-300)}}.CodeMirror-hints{border:1px solid var(--gw-autocomplete-border-color);box-shadow:var(--gw-autocomplete-shadow-offset-x) var(--gw-autocomplete-shadow-offset-y) var(--gw-autocomplete-shadow-blur) var(--gw-autocomplete-shadow-spread) var(--gw-autocomplete-shadow-color)}.CodeMirror-hints,.CodeMirror-hints .CodeMirror-hint{background-color:var(--gw-autocomplete-background);color:var(--gw-autocomplete-color);font-family:inherit;b{color:var(--gw-autocomplete-dropdown-match-color);font-weight:bolder}}.CodeMirror-hints .CodeMirror-hint-active{background-color:var(--gw-autocomplete-option-selected-background);color:var(--gw-autocomplete-option-selected-color)}.CodeMirror-hints .CodeMirror-hint:not(.CodeMirror-hint-active):hover{background-color:var(--gw-autocomplete-option-focus-background);color:var(--gw-autocomplete-option-focus-color)}.yasqe-autocomplete-hint{background-color:var(--gw-autocomplete-background);color:var(--gw-autocomplete-color)}.yasqe .resizeChip{background-color:var(--gw-button-secondary-background)!important;color:var(--gw-button-secondary-color)!important}yasgui-component .yasqe .CodeMirror{font-family:var(--mono-font)!important}yasgui-component .yasqe .yasqe_buttons{background-color:var(--gw-editor-content-background);right:21px}yasgui-component .tabPanel .yasqe .yasqe-footer-buttons{padding-top:15px}yasgui-component .tabPanel .yasqe .yasqe-footer-buttons .abort-button{font-family:var(--main-font);font-weight:400;height:38px}yasgui-component .custom-button{background-color:var(--gw-editor-content-background)!important;color:var(--gw-primary-base)!important;font-size:1.5em!important}yasgui-component .yasgui .yasqe .yasqe_expandResultsButton.custom-button.disabled{opacity:var(--gw-button-disabled-opacity)}yasgui-component .custom-button:disabled:focus,yasgui-component .custom-button:disabled:hover{color:#818a91!important}yasgui-component .yasqe_queryButton{font-family:var(--main-font);font-weight:400;height:38px!important}yasgui-component .yasqe_queryButton,yasgui-component .yasqe_querySplitWrapper .yasqe_querySplitToggle{background-color:var(--gw-button-primary-background)!important;color:var(--gw-button-primary-color)!important}yasgui-component .yasqe_queryButton:hover,yasgui-component .yasqe_querySplitWrapper .yasqe_querySplitToggle:hover{background-color:var(--gw-button-primary-hover-background)!important;color:var(--gw-button-primary-hover-color)!important}yasgui-component .ontotext-run-dropdown-menu{background-color:var(--gw-tieredmenu-background)!important;border:1px solid var(--gw-tieredmenu-border-color);border-radius:0;box-shadow:var(--gw-tieredmenu-shadow-1-offset-x) var(--gw-tieredmenu-shadow-1-offset-y) var(--gw-tieredmenu-shadow-1-blur) var(--gw-tieredmenu-shadow-1-spread) var(--gw-tieredmenu-shadow-1-color)}yasgui-component .ontotext-run-dropdown-menu-item{color:var(--gw-tieredmenu-color)!important}yasgui-component .ontotext-run-dropdown-menu-item:hover{background-color:var(--gw-tieredmenu-item-focus-background)!important;color:var(--gw-tieredmenu-item-focus-color)!important}yasgui-component .yasgui .tabsList .tab{background-color:var(--gw-tabs-tab-background)!important;border-color:var(--gw-tabs-tab-border-color) var(--gw-tabs-tab-border-color) transparent!important;color:var(--gw-tabs-tab-color)!important;padding:.46em!important}yasgui-component .yasgui .tabsList .tab:hover{background-color:var(--gw-tabs-tab-hover-background)!important;border-color:var(--gw-tabs-tab-hover-border-color) var(--gw-tabs-tab-hover-border-color) transparent!important;color:var(--gw-tabs-tab-hover-color)!important}yasgui-component .yasgui .tabsList .tab.active,yasgui-component .yasgui .tabsList .tab.active:hover{background-color:var(--gw-tabs-tab-active-background)!important;border-color:var(--gw-tabs-tab-active-border-color) var(--gw-tabs-tab-active-border-color) transparent!important;color:var(--gw-tabs-tab-active-color)!important}yasgui-component .editable-text-field-wrapper,yasgui-component .yasgui .tabsList .tab{color:inherit;font-weight:400}yasgui-component .yasgui .tabsList .tab .closeTab{color:inherit!important}yasgui-component .yasgui .tabsList .addTab .ri-add-circle-line,yasgui-component .yasgui .tabsList .tab .closeTab .ri-close-line{font-size:1.225em!important;font-weight:100}yasgui-component .yasgui .tabsList .addTab{background-color:var(--gw-tabs-tab-background);border-color:var(--gw-tabs-tab-border-color) var(--gw-tabs-tab-border-color) transparent;color:var(--gw-button-secondary-color)!important}yasgui-component .yasgui .tabsList .addTab:hover,yasgui-component .yasgui .tabsList .tab .closeTab:hover{color:var(--gw-button-primary-link-hover-color)!important}.yasgui-host-element .yasgui .tabsList .create-tab-tab{background-color:var(--gw-tabs-tab-active-background)!important;border-color:var(--gw-tabs-tab-active-border-color) var(--gw-tabs-tab-active-border-color) transparent!important;color:var(--gw-tabs-tab-active-color)!important}yasgui-component .yasgui .tabsList .tab .editable-text-field{background-color:var(--gw-form-field-background)!important;border-color:var(--gw-form-field-border-color)!important;color:var(--gw-form-field-color)!important}yasgui-component .editable-text-field-wrapper .save-btn{background-color:var(--gw-button-primary-background)!important;color:var(--gw-button-primary-color)!important}yasgui-component .editable-text-field-wrapper .save-btn:hover{background-color:var(--gw-button-primary-hover-background)!important;color:var(--gw-button-primary-hover-color)!important}yasgui-component .editable-text-field-wrapper .cancel-btn{background-color:var(--gw-button-secondary-background);border-color:var(--gw-button-secondary-border-color);color:var(--gw-button-secondary-color)}yasgui-component .editable-text-field-wrapper .cancel-btn:hover{background-color:var(--gw-button-secondary-hover-background);border-color:var(--gw-button-secondary-hover-border-color);color:var(--gw-button-secondary-hover-color)}yasgui-component .editable-text-field-wrapper .save-btn,yasgui-component .editable-text-field-wrapper .save-btn:hover{background-color:var(--gw-primary-base)}yasgui-component .editable-text-field-wrapper .close-btn span,yasgui-component .editable-text-field-wrapper .save-btn span{font-weight:900}yasgui-component .ontotext-dropdown-menu .ontotext-dropdown-menu-item{font-size:1rem;padding:.5em 1.2em}yasgui-component .ontotext-dropdown-button{background-color:var(--gw-button-primary-background)!important;color:var(--gw-button-primary-color)!important;height:40px}yasgui-component .ontotext-dropdown-menu.open{border:1px solid var(--gw-tieredmenu-border-color)!important;box-shadow:var(--gw-tieredmenu-shadow-1-offset-x) var(--gw-tieredmenu-shadow-1-offset-y) var(--gw-tieredmenu-shadow-1-blur) var(--gw-tieredmenu-shadow-1-spread) var(--gw-tieredmenu-shadow-1-color)}yasgui-component .ontotext-dropdown-menu.open .ontotext-dropdown-menu-item{background-color:var(--gw-tieredmenu-background)!important;color:var(--gw-tieredmenu-item-color)!important}yasgui-component .ontotext-download-as .ontotext-dropdown-button .button-name{font-family:var(--main-font);font-weight:400}yasgui-component .ontotext-download-as .ontotext-dropdown-button{height:38px}yasgui-component .ontotext-dropdown-button.ri-arrow-down-s-line:hover:after,yasgui-component .ontotext-dropdown-button.ri-arrow-up-s-line:hover:after,yasgui-component .ontotext-dropdown-button:hover{background-color:var(--gw-button-primary-hover-background)!important;color:var(--gw-button-primary-hover-color)}yasgui-component .ontotext-dropdown-button.ri-arrow-down-s-line:after,yasgui-component .ontotext-dropdown-button.ri-arrow-up-s-line:after{background-color:var(--gw-button-primary-background)!important;color:var(--gw-button-primary-color)}yasgui-component .ontotext-dropdown-menu .ontotext-dropdown-menu-item:hover{background-color:var(--gw-tieredmenu-item-focus-background)!important;color:var(--gw-tieredmenu-item-focus-color)!important}yasgui-component .yasr-toolbar{align-items:stretch!important;font-size:16px;line-height:1.25;padding-left:10px}yasgui-component .yasr-toolbar .yasr-toolbar-element{height:38px}yasgui-component .yasr-toolbar .chart-download-as-button,yasgui-component .yasr-toolbar .pivot-table-download-as-button{background-color:var(--gw-button-primary-background)!important;color:var(--gw-button-primary-color)!important}yasgui-component .yasr-toolbar .chart-download-as-button:hover,yasgui-component .yasr-toolbar .pivot-table-download-as-button:hover{background-color:var(--gw-button-primary-hover-background)!important;color:var(--gw-button-primary-hover-color)!important}yasgui-component .saved-queries-container{background-color:var(--gw-dialog-background)!important;border-color:var(--gw-dialog-border-color);-webkit-box-shadow:var(--gw-dialog-shadow-1-offset-x) var(--gw-dialog-shadow-1-offset-y) var(--gw-dialog-shadow-1-blur) var(--gw-dialog-shadow-1-spread) var(--gw-dialog-shadow-1-color);box-shadow:var(--gw-dialog-shadow-1-offset-x) var(--gw-dialog-shadow-1-offset-y) var(--gw-dialog-shadow-1-blur) var(--gw-dialog-shadow-1-spread) var(--gw-dialog-shadow-1-color);color:var(--gw-dialog-color)!important}yasgui-component .saved-queries-container .arrow:before{border-left-color:var(--gw-dialog-border-color)}yasgui-component .saved-queries-container .arrow:after{border-left-color:var(--gw-dialog-background)}yasgui-component .saved-queries-container .saved-query-actions .saved-query-action{background-color:var(--gw-dialog-background)!important;color:var(--gw-button-primary-link-color)!important}.dialog{background-color:var(--gw-dialog-background)!important;border:1px solid var(--gw-panel-border-color);-webkit-box-shadow:var(--gw-dialog-shadow-1-offset-x) var(--gw-dialog-shadow-1-offset-y) var(--gw-dialog-shadow-1-blur) var(--gw-dialog-shadow-1-spread) var(--gw-dialog-shadow-1-color);box-shadow:var(--gw-dialog-shadow-1-offset-x) var(--gw-dialog-shadow-1-offset-y) var(--gw-dialog-shadow-1-blur) var(--gw-dialog-shadow-1-spread) var(--gw-dialog-shadow-1-color);color:var(--gw-dialog-color)!important}.dialog .dialog-header{border-bottom-color:var(--gw-dialog-border-color)!important}.dialog .dialog-header .close-button{background-color:var(--gw-dialog-background)!important;color:var(--gw-dialog-color)!important}.dialog .dialog-footer .cancel-button{background-color:var(--gw-button-secondary-background)!important;border-color:var(--gw-button-secondary-border-color)!important;color:var(--gw-button-secondary-color)!important}.dialog .dialog-footer .cancel-button:hover{background-color:var(--gw-button-secondary-hover-background)!important;border-color:var(--gw-button-secondary-hover-border-color)!important;color:var(--gw-button-secondary-hover-color)!important}.dialog .dialog-footer{border-top-color:var(--gw-dialog-border-color)!important}.keyboard-shortcuts-dialog-wrapper .dialog .dialog-header .close-button{background-color:var(--gw-button-secondary-background);border-color:var(--gw-button-secondary-border-color);color:var(--gw-button-secondary-color)}.keyboard-shortcuts-dialog-wrapper .dialog .dialog-header .close-button:hover{color:var(--gw-button-primary-link-hover-color)!important}.keyboard-shortcuts-content .keyboard-shortcut-description-item-description{color:var(--gw-message-info-color)!important}.dialog .form-field :is(input:not([type=checkbox]),select,textarea){background-color:var(--gw-form-field-background)!important;border-color:var(--gw-form-field-border-color)!important;color:var(--gw-form-field-color)!important}.dialog .form-field input[type=checkbox]:checked{background-color:var(--gw-primary-base);border-color:var(--gw-primary-base)}.dialog .form-field input[type=text]:focus,.dialog .form-field textarea:focus{border-color:var(--gw-form-field-focus-border-color)!important}.confirmation-dialog .dialog-body,yasgui-component .dialog-body{font-size:1.25rem!important}.confirmation-dialog .dialog-footer .cancel-button,yasgui-component .dialog .dialog-footer .cancel-button{background-color:#ebebeb;border-color:#ebebeb;margin-right:3px}.confirmation-dialog .dialog-footer .confirm-button,yasgui-component .confirm-button,yasgui-component .ok-button,yasgui-component .primary-button{background-color:var(--gw-button-primary-background)!important;border-color:var(--gw-button-primary-border-color)!important;color:var(--gw-button-primary-color)!important}.confirmation-dialog .dialog-footer .confirm-button:focus,.confirmation-dialog .dialog-footer .confirm-button:hover,yasgui-component .confirm-button:focus,yasgui-component .confirm-button:hover,yasgui-component .ok-button:focus,yasgui-component .ok-button:hover,yasgui-component .primary-button:focus,yasgui-component .primary-button:hover{background-color:var(--gw-button-primary-hover-background)!important;border-color:var(--gw-button-primary-hover-border-color)!important;color:var(--gw-button-primary-hover-color)!important}yasgui-component .cancel-button:focus,yasgui-component .cancel-button:hover{background-color:#d4d4d4!important;border-color:#d4d4d4!important}yasgui-component .yasr .alert-box{padding-right:35px}yasgui-component .yasr .alert-box .close-button{font-size:21px!important}yasgui-component .yasr a{color:var(--gw-secondary-light)!important;color:var(--gw-secondary-base)!important}yasgui-component .yasr .yasr_header .yasr_response_chip{background-color:unset!important}yasgui-component .yasr .yasr_header{background-color:var(--gw-info-lighter)!important}yasgui-component .ontotext-yasgui .yasr .yasr_header .tableControls .tableFilter{background-color:var(--gw-form-field-background);color:var(--gw-form-field-color)}yasgui-component .yasr .yasr_results .CodeMirror{background-color:var(--gw-editor-content-background)!important;color:var(--gw-editor-content-color)!important}yasgui-component .yasr .yasr_results .CodeMirror.overflow:before{background:unset}yasgui-component .yasr .yasr_results .CodeMirror-gutters{background-color:var(--gw-editor-content-background)!important;color:var(--gw-editor-content-color)!important}yasgui-component .yasr .yasr_results .overlay_content{background:unset}yasgui-component .yasr .yasr_header .chart-config-control #openChartConfigBtn,yasgui-component .yasr .yasr_results .yasr_btn.overlay_btn{background:var(--gw-button-secondary-background)!important;border-color:var(--gw-button-secondary-border-color)!important;color:var(--gw-button-secondary-color)!important}yasgui-component .yasr .dataTable .triple-cell .triple-link{color:#708!important}yasgui-component .yasr .yasr_btnGroup{background-color:var(--gw-panel-background)!important;overflow:unset}yasgui-component .yasr .yasr_btnGroup .yasr_btn{background-color:var(--gw-tabs-tab-background)!important;border:1px solid;border-color:var(--gw-tabs-tab-border-color)!important;border-bottom:1px solid transparent!important;color:var(--gw-tabs-tab-color)!important;fill:var(--gw-tabs-tab-color)!important;font-size:16px;font-weight:400;margin-left:0;margin-right:.2rem;padding:.52em}yasgui-component .yasr .yasr_btnGroup .yasr_btn.selected{background-color:var(--gw-tabs-tab-active-background)!important;border-color:var(--gw-tabs-tab-active-border-color) var(--gw-tabs-tab-active-border-color) transparent!important;color:var(--gw-tabs-tab-active-color)!important}yasgui-component .yasr .yasr_btnGroup .yasr_btn:not(.disabled):hover{background-color:var(--gw-tabs-tab-hover-background)!important;border-bottom-width:1px!important;border-color:var(--gw-tabs-tab-hover-border-color) var(--gw-tabs-tab-hover-border-color) transparent!important;color:var(--gw-tabs-tab-hover-color)!important;fill:var(--gw-tabs-tab-hover-color)!important}yasgui-component .yasr .yasr_btnGroup .yasr_btn.selected{background-color:#fff;border:1px solid #ddd;border-bottom:none}yasgui-component .yasr .yasr_btnGroup .yasr-fullscreen-button{background-color:var(--gw-button-tertiary-background);color:var(--gw-button-tertiary-color);padding-left:.73em;padding-right:.73em}yasgui-component .yasr .yasr_btnGroup .yasr-fullscreen-button:hover{background-color:var(--gw-button-tertiary-hover-background);color:var(--gw-button-tertiary-hover-color)}yasgui-component .yasr .error-response-plugin{background-color:var(--gw-error-lighter)!important}yasgui-component .yasr .extended-boolean-plugin>*{font-size:3rem!important}yasgui-component .yasr .extended-boolean-plugin .response-error{background-color:var(--gw-error-lighter)!important}yasgui-component .yasr .extended-boolean-plugin .response-success{background-color:var(--gw-success-lighter)!important}yasgui-component .yasr .google-visualization-table-table{background:var(--gw-datatable-row-background)!important;border-color:var(--gw-datatable-border-color)!important;color:var(--gw-datatable-row-color)!important;height:auto!important;max-height:600px!important}yasgui-component .yasr .google-visualization-table-table .google-visualization-table-tr-head{background-color:var(--gw-datatable-header-background)!important;border-color:var(--gw-datatable-header-cell-border-color)!important;color:var(--gw-datatable-header-color)!important}yasgui-component .yasr .google-visualization-table-table .google-visualization-table-tr-even{background-color:var(--gw-datatable-row-background)!important}yasgui-component .yasr .google-visualization-table-table .google-visualization-table-tr-odd{background-color:var(--gw-datatable-row-striped-background)!important}yasgui-component .yasr .google-visualization-table-table .google-visualization-table-td{border-color:var(--gw-datatable-border-color)!important}yasgui-component .yasr .google-visualization-table-table .google-visualization-table-th{border-color:var(--gw-datatable-header-cell-border-color)!important}yasgui-component .yasr .dataTables_wrapper .dataTable{border-collapse:collapse}yasgui-component .yasr .dataTables_wrapper .dataTable th{background-color:var(--gw-datatable-header-background)!important;border-color:var(--gw-datatable-header-cell-border-color)!important;color:var(--gw-datatable-header-color)!important;font-weight:500}yasgui-component .yasr .dataTables_wrapper .dataTable thead .sorting,yasgui-component .yasr .dataTables_wrapper .dataTable thead .sorting_asc,yasgui-component .yasr .dataTables_wrapper .dataTable thead .sorting_desc{background-image:none!important;position:relative}yasgui-component .yasr .dataTables_wrapper .dataTable thead .sorting:after,yasgui-component .yasr .dataTables_wrapper .dataTable thead .sorting_asc:after,yasgui-component .yasr .dataTables_wrapper .dataTable thead .sorting_desc:after{background-color:var(--gw-datatable-sort-icon-color);content:"";height:.9em;mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;mask-size:contain;-webkit-mask-size:contain;position:absolute;right:8px;top:50%;transform:translateY(-50%);width:.9em}yasgui-component .yasr .dataTables_wrapper .dataTable thead .sorting:after{mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='currentColor' viewBox='0 0 24 24'%3E%3Cpath d='m18 9-6-6-6 6zm0 6-6 6-6-6z'/%3E%3C/svg%3E");-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='currentColor' viewBox='0 0 24 24'%3E%3Cpath d='m18 9-6-6-6 6zm0 6-6 6-6-6z'/%3E%3C/svg%3E")}yasgui-component .yasr .dataTables_wrapper .dataTable thead .sorting_asc:after{mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='currentColor' viewBox='0 0 24 24'%3E%3Cpath d='M4.869 11H2.667L6 3h2l3.333 8H9.131l-.41-1H5.28zm1.23-3h1.803L7 5.8zm12.9 8V3h-2v13h-3l4 5 4-5zm-8-3H3v2h4.855L3 19v2h8v-2H6.146L11 15z'/%3E%3C/svg%3E");-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='currentColor' viewBox='0 0 24 24'%3E%3Cpath d='M4.869 11H2.667L6 3h2l3.333 8H9.131l-.41-1H5.28zm1.23-3h1.803L7 5.8zm12.9 8V3h-2v13h-3l4 5 4-5zm-8-3H3v2h4.855L3 19v2h8v-2H6.146L11 15z'/%3E%3C/svg%3E")}yasgui-component .yasr .dataTables_wrapper .dataTable thead .sorting_desc:after{mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='currentColor' viewBox='0 0 24 24'%3E%3Cpath d='M4.869 11H2.667L6 3h2l3.333 8H9.131l-.41-1H5.28zm1.23-3h1.803L7 5.8zm15.9 0-4-5-4 5h3v13h2V8zm-11 5H3v2h4.855L3 19v2h8v-2H6.146L11 15z'/%3E%3C/svg%3E");-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='currentColor' viewBox='0 0 24 24'%3E%3Cpath d='M4.869 11H2.667L6 3h2l3.333 8H9.131l-.41-1H5.28zm1.23-3h1.803L7 5.8zm15.9 0-4-5-4 5h3v13h2V8zm-11 5H3v2h4.855L3 19v2h8v-2H6.146L11 15z'/%3E%3C/svg%3E")}yasgui-component .yasr .dataTables_wrapper .dataTable tbody tr{background-color:var(--gw-datatable-row-background)!important;color:var(--gw-datatable-row-color)!important;vertical-align:top}yasgui-component .yasr .dataTables_wrapper .dataTable tbody tr td{border-color:var(--gw-datatable-border-color)!important}yasgui-component .yasr .dataTables_wrapper .dataTable tbody tr:hover{background-color:var(--gw-datatable-row-hover-background)!important}yasgui-component .yasr .dataTables_wrapper .dataTable tbody tr.odd,yasgui-component .yasr .dataTables_wrapper .dataTable.withRowNumber tr.odd>td:first-child{background-color:var(--gw-datatable-row-striped-background)!important}yasgui-component .yasr .dataTables_wrapper .dataTable.withRowNumber tr.even>td:first-child{background-color:var(--gw-datatable-row-background)!important}yasgui-component .yasr .dataTables_wrapper .dataTable .rowNumber{color:var(--gw-datatable-row-color)!important}yasgui-component .yasr .dataTable a{font-size:16px}yasgui-component .yasr .dataTable .nonUri,yasgui-component .yasr .dataTable .nonUri sup{color:inherit!important}yasgui-component .yasr #explainPlanQuery{background-color:var(--gw-panel-background);font-family:var(--mono-font)}yasgui-component .yasr .explain-plan-container{background-color:var(--gw-panel-background);border:1px solid var(--gw-dialog-border-color);.cm-comment{color:var(--gw-neutral-300)}}yasgui-component .yasr .yasr-header-replacement{color:inherit;font-size:20px}yasgui-component .yasr .loader-component{svg circle{fill:var(--gw-loader-color)}}yasgui-component .yasr_response_chip{color:var(--gw-secondary-base)!important;font-size:16px}yasgui-component .yasr_response_chip .response-info-message{padding-left:10px}yasgui-component .yasr_plugin_control label{color:var(--gw-secondary-base)!important;margin-bottom:0}.run_query_confirmation{margin-bottom:20px}yasgui-component .yasr_plugin_control label .label{margin-right:5px}yasgui-component .saved-queries-container .saved-queries-popup{overflow-y:auto}yasgui-component .saved-queries-container .saved-queries-popup .saved-query{padding:0}yasgui-component .saved-queries-container .saved-queries-popup .saved-query a{color:var(--gw-secondary-base);font-size:14px;font-weight:bolder}yasgui-component .saved-queries-container .saved-queries-popup .saved-query-actions .saved-query-action{color:var(--gw-primary-base);font-size:1.25em}yasgui-component .abort-button{background-color:var(--gw-primary-base)!important}yasgui-component .abort-button:hover{background-color:var(--gw-primary-dark)!important}yasgui-component .yasr .ontotext-pagination .page-button.selected-page{background-color:var(--gw-paginator-nav-button-selected-background);color:var(--gw-paginator-nav-button-selected-color)}yasgui-component .yasr .ontotext-pagination .page-selector{background-color:var(--gw-paginator-nav-button-background);color:var(--gw-paginator-nav-button-color)}yasgui-component .yasr .ontotext-pagination .page-button.selected-page:hover,yasgui-component .yasr .ontotext-pagination .page-selector:hover{background-color:var(--gw-paginator-nav-button-hover-background);color:var(--gw-paginator-nav-button-hover-color)}yasgui-component .yasr .pivot-table-plugin select{background-color:var(--gw-body-background);color:var(--gw-body-color)}yasgui-component .yasr .pivot-table-plugin .pvtUi .pvtTable .pvtAxisLabel,yasgui-component .yasr .pivot-table-plugin .pvtUi .pvtTable .pvtTotalLabel{background-color:var(--gw-datatable-header-background);border-color:var(--gw-datatable-header-cell-border-color);color:var(--gw-datatable-header-color)}yasgui-component .yasr .pivot-table-plugin .pvtUi .pvtTable .pvtRowLabel,yasgui-component .yasr table.pvtTable tbody tr td{background-color:var(--gw-datatable-row-background);color:var(--gw-datatable-row-color)}yasgui-component .yasr .pivot-table-plugin .pvtFilterBox{background-color:var(--gw-dialog-background);border-color:var(--gw-dialog-border-color);color:var(--gw-dialog-color)}yasgui-component .yasr .pivot-table-plugin .pvtFilterBox button{background-color:var(--gw-dialog-background);border-color:var(--gw-button-secondary-border-color);color:var(--gw-button-secondary-color)}yasgui-component .yasr .pivot-table-plugin .pvtFilterBox button:hover{background-color:var(--gw-button-secondary-hover-background);cursor:pointer}yasgui-component .yasr .pivot-table-plugin .pvtFilterBox .pvtSearch{background-color:var(--gw-form-field-background);border-color:var(--gw-form-field-border-color);color:var(--gw-form-field-color)}yasgui-component .yasr .yasr_fallback_info:not(:empty){background-color:var(--gw-message-info-background);border:1px solid var(--gw-message-info-border-color);color:var(--gw-message-info-color)}.keyboard-shortcuts-dialog-wrapper{font-size:90%;height:20px;line-height:18px}.keyboard-shortcuts-dialog-wrapper .key{border:none}.keyboard-shortcuts-dialog-wrapper.resizeable-on{margin-top:-31px}.keyboard-shortcut-description-item{justify-content:flex-start!important}.keyboard-shortcut-keys{flex:0 0!important;min-width:auto!important}.keyboard-shortcuts-dialog-wrapper .keyboard-shortcut-section-title{color:var(--gw-shortcuts-panel-heading-color)}.keyboard-shortcuts-content kbd{background-color:var(--gw-shortcuts-panel-key-background)!important;border-color:var(--gw-shortcuts-panel-key-border-color)!important;color:var(--gw-shortcuts-panel-key-color)!important}.keyboard-shortcuts-dialog-button{background-color:var(--gw-button-secondary-background)!important;border-color:var(--gw-button-secondary-border-color)!important;color:var(--gw-button-secondary-color)!important;font-weight:400}yasgui-component .yasr .explain-plan-copy-btn{background-color:var(--gw-shortcuts-secondary-button-background);border-color:var(--gw-button-secondary-border-color);color:var(--gw-button-secondary-color);font-weight:400;margin-right:1px;margin-top:1px}.hidden{display:none}@media (max-width:1439px){yasgui-component :not(h3,h4,.dialog-body,.custom-button,.btn-orientation,sup){font-size:14px!important}yasgui-component .yasgui-toolbar .yasgui-btn{font-size:12px!important;height:24px!important}yasgui-component .yasgui-toolbar .btn-orientation{font-size:24px!important}yasgui-component .ontotext-dropdown-button,yasgui-component .tabPanel .yasqe .yasqe-footer-buttons .abort-button,yasgui-component .yasqe_queryButton{height:33px!important}}@media (max-width:1200px){yasgui-component .yasr .yasr_btnGroup .yasr_btn{padding:.73em}.yasr_btn span{display:none}}@media (max-width:768px){.ontotext-dropdown .button-name{display:inline}.ontotext-dropdown .ontotext-dropdown-button:after{padding-left:10px!important}}.ontotext-yasgui-tooltip .tooltip-box,.yasgui-floating-tooltip,.yasgui-floating-tooltip-arrow{background-color:var(--gw-tooltip-background);color:var(--gw-tooltip-color)}.ontotext-yasgui-tooltip .tooltip-arrow{color:var(--gw-tooltip-background)}.ontotext-yasgui-tooltip[data-placement^=top] .tooltip-arrow:before{border-top-color:var(--gw-tooltip-background)}.ontotext-yasgui-tooltip[data-placement^=left] .tooltip-arrow:before{border-left-color:var(--gw-tooltip-background)}.ontotext-yasgui-tooltip[data-placement^=right] .tooltip-arrow:before{border-right-color:var(--gw-tooltip-background)}.ontotext-yasgui-tooltip[data-placement^=bottom] .tooltip-arrow:before{border-bottom-color:var(--gw-tooltip-background)}
1
+ .CodeMirror pre.CodeMirror-line,.CodeMirror pre.CodeMirror-line-like{font-variant-ligatures:none;-webkit-font-variant-ligatures:none}yasgui-component :not(h3,h4,sup,.no-force-default-font){font-size:1rem!important}yasgui-component .yasgui-btn{background-color:var(--gw-button-secondary-background)!important;border-color:var(--gw-button-secondary-border-color)!important;color:var(--gw-button-secondary-color)!important}yasgui-component .yasgui-btn:hover{background-color:var(--gw-button-secondary-hover-background)!important;border-color:var(--gw-button-secondary-hover-border-color)!important;color:var(--gw-button-secondary-hover-color)!important}yasgui-component .yasgui-btn.btn-selected{background-color:var(--gw-button-primary-background)!important;border-color:var(--gw-button-primary-border-color)!important;color:var(--gw-button-primary-color)!important}yasgui-component .yasgui-btn.btn-selected:hover{background-color:var(--gw-button-primary-hover-background)!important;border-color:var(--gw-button-primary-hover-border-color)!important;color:var(--gw-button-primary-hover-color)!important}yasgui-component .yasgui-toolbar .yasgui-btn{font-size:14px!important;padding-left:8px;padding-right:8px}yasgui-component .yasgui-toolbar .btn-orientation{background-color:transparent!important;color:var(--gw-button-secondary-color)!important;font-size:28px!important;margin-left:1rem}.yasgui-host-element .yasgui .CodeMirror[class*=cm-s-]:not(.cm-s-default){background-color:#1c1c1c;border-color:var(--gw-tabs-tab-active-border-color);.CodeMirror-linenumber{color:#777}.cm-matchhighlight{background-color:#dbdeed}.yasqe_buttons .custom-button{background-color:#1c1c1c!important}.notification{background-color:var(--gw-button-secondary-background)!important;border-color:var(--gw-button-secondary-border-color)!important;color:var(--gw-button-secondary-color)!important}.cm-comment{color:var(--gw-neutral-300)}}.CodeMirror-hints{border:1px solid var(--gw-autocomplete-border-color);box-shadow:var(--gw-autocomplete-shadow-offset-x) var(--gw-autocomplete-shadow-offset-y) var(--gw-autocomplete-shadow-blur) var(--gw-autocomplete-shadow-spread) var(--gw-autocomplete-shadow-color)}.CodeMirror-hints,.CodeMirror-hints .CodeMirror-hint{background-color:var(--gw-autocomplete-background);color:var(--gw-autocomplete-color);font-family:inherit;b{color:var(--gw-autocomplete-dropdown-match-color);font-weight:bolder}}.CodeMirror-hints .CodeMirror-hint-active{background-color:var(--gw-autocomplete-option-selected-background);color:var(--gw-autocomplete-option-selected-color)}.CodeMirror-hints .CodeMirror-hint:not(.CodeMirror-hint-active):hover{background-color:var(--gw-autocomplete-option-focus-background);color:var(--gw-autocomplete-option-focus-color)}.yasqe-autocomplete-hint{background-color:var(--gw-autocomplete-background);color:var(--gw-autocomplete-color)}.yasqe .resizeChip{background-color:var(--gw-button-secondary-background)!important;color:var(--gw-button-secondary-color)!important}yasgui-component .yasqe .CodeMirror{font-family:var(--mono-font)!important}yasgui-component .yasqe .yasqe_buttons{background-color:var(--gw-editor-content-background);right:21px}yasgui-component .tabPanel .yasqe .yasqe-footer-buttons{padding-top:15px}yasgui-component .tabPanel .yasqe .yasqe-footer-buttons .abort-button{font-family:var(--main-font);font-weight:400;height:38px}yasgui-component .custom-button{background-color:var(--gw-editor-content-background)!important;color:var(--gw-primary-base)!important;font-size:1.5em!important}yasgui-component .yasgui .yasqe .yasqe_expandResultsButton.custom-button.disabled{opacity:var(--gw-button-disabled-opacity)}yasgui-component .custom-button:disabled:focus,yasgui-component .custom-button:disabled:hover{color:#818a91!important}yasgui-component .yasqe_queryButton{font-family:var(--main-font);font-weight:400;height:38px!important}yasgui-component .yasqe_queryButton,yasgui-component .yasqe_querySplitWrapper .yasqe_querySplitToggle{background-color:var(--gw-button-primary-background)!important;color:var(--gw-button-primary-color)!important}yasgui-component .yasqe_queryButton:hover,yasgui-component .yasqe_querySplitWrapper .yasqe_querySplitToggle:hover{background-color:var(--gw-button-primary-hover-background)!important;color:var(--gw-button-primary-hover-color)!important}yasgui-component .ontotext-run-dropdown-menu{background-color:var(--gw-tieredmenu-background)!important;border:1px solid var(--gw-tieredmenu-border-color);border-radius:0;box-shadow:var(--gw-tieredmenu-shadow-1-offset-x) var(--gw-tieredmenu-shadow-1-offset-y) var(--gw-tieredmenu-shadow-1-blur) var(--gw-tieredmenu-shadow-1-spread) var(--gw-tieredmenu-shadow-1-color)}yasgui-component .ontotext-run-dropdown-menu-item{color:var(--gw-tieredmenu-color)!important}yasgui-component .ontotext-run-dropdown-menu-item:hover{background-color:var(--gw-tieredmenu-item-focus-background)!important;color:var(--gw-tieredmenu-item-focus-color)!important}yasgui-component .yasgui .tabsList .tab{background-color:var(--gw-tabs-tab-background)!important;border-color:var(--gw-tabs-tab-border-color) var(--gw-tabs-tab-border-color) transparent!important;color:var(--gw-tabs-tab-color)!important;padding:.46em!important}yasgui-component .yasgui .tabsList .tab:hover{background-color:var(--gw-tabs-tab-hover-background)!important;border-color:var(--gw-tabs-tab-hover-border-color) var(--gw-tabs-tab-hover-border-color) transparent!important;color:var(--gw-tabs-tab-hover-color)!important}yasgui-component .yasgui .tabsList .tab.active,yasgui-component .yasgui .tabsList .tab.active:hover{background-color:var(--gw-tabs-tab-active-background)!important;border-color:var(--gw-tabs-tab-active-border-color) var(--gw-tabs-tab-active-border-color) transparent!important;color:var(--gw-tabs-tab-active-color)!important}yasgui-component .editable-text-field-wrapper,yasgui-component .yasgui .tabsList .tab{color:inherit;font-weight:400}yasgui-component .yasgui .tabsList .tab .closeTab{color:inherit!important}yasgui-component .yasgui .tabsList .addTab .ri-add-circle-line,yasgui-component .yasgui .tabsList .tab .closeTab .ri-close-line{font-size:1.225em!important;font-weight:100}yasgui-component .yasgui .tabsList .addTab{background-color:var(--gw-tabs-tab-background);border-color:var(--gw-tabs-tab-border-color) var(--gw-tabs-tab-border-color) transparent;color:var(--gw-button-secondary-color)!important}yasgui-component .yasgui .tabsList .addTab:hover,yasgui-component .yasgui .tabsList .tab .closeTab:hover{color:var(--gw-button-primary-link-hover-color)!important}.yasgui-host-element .yasgui .tabsList .create-tab-tab{background-color:var(--gw-tabs-tab-active-background)!important;border-color:var(--gw-tabs-tab-active-border-color) var(--gw-tabs-tab-active-border-color) transparent!important;color:var(--gw-tabs-tab-active-color)!important}yasgui-component .yasgui .tabsList .tab .editable-text-field{background-color:var(--gw-form-field-background)!important;border-color:var(--gw-form-field-border-color)!important;color:var(--gw-form-field-color)!important}yasgui-component .editable-text-field-wrapper .save-btn{background-color:var(--gw-button-primary-background)!important;color:var(--gw-button-primary-color)!important}yasgui-component .editable-text-field-wrapper .save-btn:hover{background-color:var(--gw-button-primary-hover-background)!important;color:var(--gw-button-primary-hover-color)!important}yasgui-component .editable-text-field-wrapper .cancel-btn{background-color:var(--gw-button-secondary-background);border-color:var(--gw-button-secondary-border-color);color:var(--gw-button-secondary-color)}yasgui-component .editable-text-field-wrapper .cancel-btn:hover{background-color:var(--gw-button-secondary-hover-background);border-color:var(--gw-button-secondary-hover-border-color);color:var(--gw-button-secondary-hover-color)}yasgui-component .editable-text-field-wrapper .save-btn,yasgui-component .editable-text-field-wrapper .save-btn:hover{background-color:var(--gw-primary-base)}yasgui-component .editable-text-field-wrapper .close-btn span,yasgui-component .editable-text-field-wrapper .save-btn span{font-weight:900}yasgui-component .ontotext-dropdown-menu .ontotext-dropdown-menu-item{font-size:1rem;padding:.5em 1.2em}yasgui-component .ontotext-dropdown-button{background-color:var(--gw-button-primary-background)!important;color:var(--gw-button-primary-color)!important;height:40px}yasgui-component .ontotext-dropdown-menu.open{border:1px solid var(--gw-tieredmenu-border-color)!important;box-shadow:var(--gw-tieredmenu-shadow-1-offset-x) var(--gw-tieredmenu-shadow-1-offset-y) var(--gw-tieredmenu-shadow-1-blur) var(--gw-tieredmenu-shadow-1-spread) var(--gw-tieredmenu-shadow-1-color)}yasgui-component .ontotext-dropdown-menu.open .ontotext-dropdown-menu-item{background-color:var(--gw-tieredmenu-background)!important;color:var(--gw-tieredmenu-item-color)!important}yasgui-component .ontotext-download-as .ontotext-dropdown-button .button-name{font-family:var(--main-font);font-weight:400}yasgui-component .ontotext-download-as .ontotext-dropdown-button{height:38px}yasgui-component .ontotext-dropdown-button.ri-arrow-down-s-line:hover:after,yasgui-component .ontotext-dropdown-button.ri-arrow-up-s-line:hover:after,yasgui-component .ontotext-dropdown-button:hover{background-color:var(--gw-button-primary-hover-background)!important;color:var(--gw-button-primary-hover-color)}yasgui-component .ontotext-dropdown-button.ri-arrow-down-s-line:after,yasgui-component .ontotext-dropdown-button.ri-arrow-up-s-line:after{background-color:var(--gw-button-primary-background)!important;color:var(--gw-button-primary-color)}yasgui-component .ontotext-dropdown-menu .ontotext-dropdown-menu-item:hover{background-color:var(--gw-tieredmenu-item-focus-background)!important;color:var(--gw-tieredmenu-item-focus-color)!important}yasgui-component .yasr-toolbar{align-items:stretch!important;font-size:16px;line-height:1.25;padding-left:10px}yasgui-component .yasr-toolbar .yasr-toolbar-element{height:38px}yasgui-component .yasr-toolbar .chart-download-as-button,yasgui-component .yasr-toolbar .pivot-table-download-as-button{background-color:var(--gw-button-primary-background)!important;color:var(--gw-button-primary-color)!important}yasgui-component .yasr-toolbar .chart-download-as-button:hover,yasgui-component .yasr-toolbar .pivot-table-download-as-button:hover{background-color:var(--gw-button-primary-hover-background)!important;color:var(--gw-button-primary-hover-color)!important}yasgui-component .saved-queries-container{background-color:var(--gw-dialog-background)!important;border-color:var(--gw-dialog-border-color);-webkit-box-shadow:var(--gw-dialog-shadow-1-offset-x) var(--gw-dialog-shadow-1-offset-y) var(--gw-dialog-shadow-1-blur) var(--gw-dialog-shadow-1-spread) var(--gw-dialog-shadow-1-color);box-shadow:var(--gw-dialog-shadow-1-offset-x) var(--gw-dialog-shadow-1-offset-y) var(--gw-dialog-shadow-1-blur) var(--gw-dialog-shadow-1-spread) var(--gw-dialog-shadow-1-color);color:var(--gw-dialog-color)!important}yasgui-component .saved-queries-container .arrow:before{border-left-color:var(--gw-dialog-border-color)}yasgui-component .saved-queries-container .arrow:after{border-left-color:var(--gw-dialog-background)}yasgui-component .saved-queries-container .saved-query-actions .saved-query-action{background-color:var(--gw-dialog-background)!important;color:var(--gw-button-primary-link-color)!important}.dialog{background-color:var(--gw-dialog-background)!important;border:1px solid var(--gw-panel-border-color);-webkit-box-shadow:var(--gw-dialog-shadow-1-offset-x) var(--gw-dialog-shadow-1-offset-y) var(--gw-dialog-shadow-1-blur) var(--gw-dialog-shadow-1-spread) var(--gw-dialog-shadow-1-color);box-shadow:var(--gw-dialog-shadow-1-offset-x) var(--gw-dialog-shadow-1-offset-y) var(--gw-dialog-shadow-1-blur) var(--gw-dialog-shadow-1-spread) var(--gw-dialog-shadow-1-color);color:var(--gw-dialog-color)!important}.dialog .dialog-header{border-bottom-color:var(--gw-dialog-border-color)!important}.dialog .dialog-header .close-button{background-color:var(--gw-dialog-background)!important;color:var(--gw-dialog-color)!important}.dialog .dialog-footer .cancel-button{background-color:var(--gw-button-secondary-background)!important;border-color:var(--gw-button-secondary-border-color)!important;color:var(--gw-button-secondary-color)!important}.dialog .dialog-footer .cancel-button:hover{background-color:var(--gw-button-secondary-hover-background)!important;border-color:var(--gw-button-secondary-hover-border-color)!important;color:var(--gw-button-secondary-hover-color)!important}.dialog .dialog-footer{border-top-color:var(--gw-dialog-border-color)!important}.keyboard-shortcuts-dialog-wrapper .dialog .dialog-header .close-button{background-color:var(--gw-button-secondary-background);border-color:var(--gw-button-secondary-border-color);color:var(--gw-button-secondary-color)}.keyboard-shortcuts-dialog-wrapper .dialog .dialog-header .close-button:hover{color:var(--gw-button-primary-link-hover-color)!important}.keyboard-shortcuts-content .keyboard-shortcut-description-item-description{color:var(--gw-message-info-color)!important}.dialog .form-field :is(input:not([type=checkbox]),select,textarea){background-color:var(--gw-form-field-background)!important;border-color:var(--gw-form-field-border-color)!important;color:var(--gw-form-field-color)!important}.dialog .form-field input[type=checkbox]:checked{background-color:var(--gw-primary-base);border-color:var(--gw-primary-base)}.dialog .form-field input[type=text]:focus,.dialog .form-field textarea:focus{border-color:var(--gw-form-field-focus-border-color)!important}.confirmation-dialog .dialog-body,yasgui-component .dialog-body{font-size:1.25rem!important}.confirmation-dialog .dialog-footer .cancel-button,yasgui-component .dialog .dialog-footer .cancel-button{background-color:#ebebeb;border-color:#ebebeb;margin-right:3px}.confirmation-dialog .dialog-footer .confirm-button,yasgui-component .confirm-button,yasgui-component .ok-button,yasgui-component .primary-button{background-color:var(--gw-button-primary-background)!important;border-color:var(--gw-button-primary-border-color)!important;color:var(--gw-button-primary-color)!important}.confirmation-dialog .dialog-footer .confirm-button:focus,.confirmation-dialog .dialog-footer .confirm-button:hover,yasgui-component .confirm-button:focus,yasgui-component .confirm-button:hover,yasgui-component .ok-button:focus,yasgui-component .ok-button:hover,yasgui-component .primary-button:focus,yasgui-component .primary-button:hover{background-color:var(--gw-button-primary-hover-background)!important;border-color:var(--gw-button-primary-hover-border-color)!important;color:var(--gw-button-primary-hover-color)!important}yasgui-component .cancel-button:focus,yasgui-component .cancel-button:hover{background-color:#d4d4d4!important;border-color:#d4d4d4!important}yasgui-component .yasr .alert-box{padding-right:35px}yasgui-component .yasr .alert-box .close-button{font-size:21px!important}yasgui-component .yasr a{color:var(--gw-secondary-light)!important;color:var(--gw-secondary-base)!important}yasgui-component .yasr .yasr_header .yasr_response_chip{background-color:unset!important}yasgui-component .yasr .yasr_header{background-color:var(--gw-info-lighter)!important}yasgui-component .ontotext-yasgui .yasr .yasr_header .tableControls .tableFilter{background-color:var(--gw-form-field-background);color:var(--gw-form-field-color)}yasgui-component .yasr .yasr_results .CodeMirror{background-color:var(--gw-editor-content-background)!important;color:var(--gw-editor-content-color)!important}yasgui-component .yasr .yasr_results .CodeMirror.overflow:before{background:unset}yasgui-component .yasr .yasr_results .CodeMirror-gutters{background-color:var(--gw-editor-content-background)!important;color:var(--gw-editor-content-color)!important}yasgui-component .yasr .yasr_results .overlay_content{background:unset}yasgui-component .yasr .yasr_header .chart-config-control #openChartConfigBtn,yasgui-component .yasr .yasr_results .yasr_btn.overlay_btn{background:var(--gw-button-secondary-background)!important;border-color:var(--gw-button-secondary-border-color)!important;color:var(--gw-button-secondary-color)!important}yasgui-component .yasr .dataTable .triple-cell .triple-link{color:#708!important}yasgui-component .yasr .yasr_btnGroup{background-color:var(--gw-panel-background)!important;overflow:unset}yasgui-component .yasr .yasr_btnGroup .yasr_btn{background-color:var(--gw-tabs-tab-background)!important;border:1px solid;border-color:var(--gw-tabs-tab-border-color)!important;border-bottom:1px solid transparent!important;color:var(--gw-tabs-tab-color)!important;fill:var(--gw-tabs-tab-color)!important;font-size:16px;font-weight:400;margin-left:0;margin-right:.2rem;padding:.52em}yasgui-component .yasr .yasr_btnGroup .yasr_btn.selected{background-color:var(--gw-tabs-tab-active-background)!important;border-color:var(--gw-tabs-tab-active-border-color) var(--gw-tabs-tab-active-border-color) transparent!important;color:var(--gw-tabs-tab-active-color)!important}yasgui-component .yasr .yasr_btnGroup .yasr_btn:not(.disabled):hover{background-color:var(--gw-tabs-tab-hover-background)!important;border-bottom-width:1px!important;border-color:var(--gw-tabs-tab-hover-border-color) var(--gw-tabs-tab-hover-border-color) transparent!important;color:var(--gw-tabs-tab-hover-color)!important;fill:var(--gw-tabs-tab-hover-color)!important}yasgui-component .yasr .yasr_btnGroup .yasr_btn.selected{background-color:#fff;border:1px solid #ddd;border-bottom:none}yasgui-component .yasr .yasr_btnGroup .yasr-fullscreen-button{background-color:var(--gw-button-tertiary-background);color:var(--gw-button-tertiary-color);padding-left:.73em;padding-right:.73em}yasgui-component .yasr .yasr_btnGroup .yasr-fullscreen-button:hover{background-color:var(--gw-button-tertiary-hover-background);color:var(--gw-button-tertiary-hover-color)}yasgui-component .yasr .error-response-plugin{background-color:var(--gw-error-lighter)!important}yasgui-component .yasr .extended-boolean-plugin>*{font-size:3rem!important}yasgui-component .yasr .extended-boolean-plugin .response-error{background-color:var(--gw-error-lighter)!important}yasgui-component .yasr .extended-boolean-plugin .response-success{background-color:var(--gw-success-lighter)!important}yasgui-component .yasr .google-visualization-table-table{background:var(--gw-datatable-row-background)!important;border-color:var(--gw-datatable-border-color)!important;color:var(--gw-datatable-row-color)!important;height:auto!important;max-height:600px!important}yasgui-component .yasr .google-visualization-table-table .google-visualization-table-tr-head{background-color:var(--gw-datatable-header-background)!important;border-color:var(--gw-datatable-header-cell-border-color)!important;color:var(--gw-datatable-header-color)!important}yasgui-component .yasr .google-visualization-table-table .google-visualization-table-tr-even{background-color:var(--gw-datatable-row-background)!important}yasgui-component .yasr .google-visualization-table-table .google-visualization-table-tr-odd{background-color:var(--gw-datatable-row-striped-background)!important}yasgui-component .yasr .google-visualization-table-table .google-visualization-table-td{border-color:var(--gw-datatable-border-color)!important}yasgui-component .yasr .google-visualization-table-table .google-visualization-table-th{border-color:var(--gw-datatable-header-cell-border-color)!important}yasgui-component .yasr .dataTables_wrapper .dataTable{border-collapse:collapse}yasgui-component .yasr .dataTables_wrapper .dataTable th{background-color:var(--gw-datatable-header-background)!important;border-color:var(--gw-datatable-header-cell-border-color)!important;color:var(--gw-datatable-header-color)!important;font-weight:500}yasgui-component .yasr .dataTables_wrapper .dataTable thead .sorting,yasgui-component .yasr .dataTables_wrapper .dataTable thead .sorting_asc,yasgui-component .yasr .dataTables_wrapper .dataTable thead .sorting_desc{background-image:none!important;position:relative}yasgui-component .yasr .dataTables_wrapper .dataTable thead .sorting:after,yasgui-component .yasr .dataTables_wrapper .dataTable thead .sorting_asc:after,yasgui-component .yasr .dataTables_wrapper .dataTable thead .sorting_desc:after{background-color:var(--gw-datatable-sort-icon-color);content:"";height:.9em;mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;mask-size:contain;-webkit-mask-size:contain;position:absolute;right:8px;top:50%;transform:translateY(-50%);width:.9em}yasgui-component .yasr .dataTables_wrapper .dataTable thead .sorting:after{mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='currentColor' viewBox='0 0 24 24'%3E%3Cpath d='m18 9-6-6-6 6zm0 6-6 6-6-6z'/%3E%3C/svg%3E");-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='currentColor' viewBox='0 0 24 24'%3E%3Cpath d='m18 9-6-6-6 6zm0 6-6 6-6-6z'/%3E%3C/svg%3E")}yasgui-component .yasr .dataTables_wrapper .dataTable thead .sorting_asc:after{mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='currentColor' viewBox='0 0 24 24'%3E%3Cpath d='M4.869 11H2.667L6 3h2l3.333 8H9.131l-.41-1H5.28zm1.23-3h1.803L7 5.8zm12.9 8V3h-2v13h-3l4 5 4-5zm-8-3H3v2h4.855L3 19v2h8v-2H6.146L11 15z'/%3E%3C/svg%3E");-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='currentColor' viewBox='0 0 24 24'%3E%3Cpath d='M4.869 11H2.667L6 3h2l3.333 8H9.131l-.41-1H5.28zm1.23-3h1.803L7 5.8zm12.9 8V3h-2v13h-3l4 5 4-5zm-8-3H3v2h4.855L3 19v2h8v-2H6.146L11 15z'/%3E%3C/svg%3E")}yasgui-component .yasr .dataTables_wrapper .dataTable thead .sorting_desc:after{mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='currentColor' viewBox='0 0 24 24'%3E%3Cpath d='M4.869 11H2.667L6 3h2l3.333 8H9.131l-.41-1H5.28zm1.23-3h1.803L7 5.8zm15.9 0-4-5-4 5h3v13h2V8zm-11 5H3v2h4.855L3 19v2h8v-2H6.146L11 15z'/%3E%3C/svg%3E");-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='currentColor' viewBox='0 0 24 24'%3E%3Cpath d='M4.869 11H2.667L6 3h2l3.333 8H9.131l-.41-1H5.28zm1.23-3h1.803L7 5.8zm15.9 0-4-5-4 5h3v13h2V8zm-11 5H3v2h4.855L3 19v2h8v-2H6.146L11 15z'/%3E%3C/svg%3E")}yasgui-component .yasr .dataTables_wrapper .dataTable tbody tr{background-color:var(--gw-datatable-row-background)!important;color:var(--gw-datatable-row-color)!important;vertical-align:top}yasgui-component .yasr .dataTables_wrapper .dataTable tbody tr td{border-color:var(--gw-datatable-border-color)!important}yasgui-component .yasr .dataTables_wrapper .dataTable tbody tr:hover{background-color:var(--gw-datatable-row-hover-background)!important}yasgui-component .yasr .dataTables_wrapper .dataTable tbody tr.odd,yasgui-component .yasr .dataTables_wrapper .dataTable.withRowNumber tr.odd>td:first-child{background-color:var(--gw-datatable-row-striped-background)!important}yasgui-component .yasr .dataTables_wrapper .dataTable.withRowNumber tr.even>td:first-child{background-color:var(--gw-datatable-row-background)!important}yasgui-component .yasr .dataTables_wrapper .dataTable .rowNumber{color:var(--gw-datatable-row-color)!important}yasgui-component .yasr .dataTable a{font-size:16px}yasgui-component .yasr .dataTable .nonUri,yasgui-component .yasr .dataTable .nonUri sup{color:inherit!important}yasgui-component .yasr #explainPlanQuery{background-color:var(--gw-panel-background);font-family:var(--mono-font)}yasgui-component .yasr .explain-plan-container{background-color:var(--gw-panel-background);border:1px solid var(--gw-dialog-border-color);.cm-comment{color:var(--gw-neutral-300)}}yasgui-component .yasr .yasr-header-replacement{color:inherit;font-size:20px}yasgui-component .yasr .loader-component{svg circle{fill:var(--gw-loader-color)}}yasgui-component .yasr_response_chip{color:var(--gw-secondary-base)!important;font-size:16px}yasgui-component .yasr_response_chip .response-info-message{padding-left:10px}yasgui-component .yasr_plugin_control label{color:var(--gw-secondary-base)!important;margin-bottom:0}.run_query_confirmation{margin-bottom:20px}yasgui-component .yasr_plugin_control label .label{margin-right:5px}yasgui-component .saved-queries-container .saved-queries-popup{overflow-y:auto}yasgui-component .saved-queries-container .saved-queries-popup .saved-query{padding:0}yasgui-component .saved-queries-container .saved-queries-popup .saved-query a{color:var(--gw-secondary-base);font-size:14px;font-weight:bolder}yasgui-component .saved-queries-container .saved-queries-popup .saved-query-actions .saved-query-action{color:var(--gw-primary-base);font-size:1.25em}yasgui-component .abort-button{background-color:var(--gw-primary-base)!important}yasgui-component .abort-button:hover{background-color:var(--gw-primary-dark)!important}yasgui-component .yasr .ontotext-pagination .page-button.selected-page{background-color:var(--gw-paginator-nav-button-selected-background);color:var(--gw-paginator-nav-button-selected-color)}yasgui-component .yasr .ontotext-pagination .page-selector{background-color:var(--gw-paginator-nav-button-background);color:var(--gw-paginator-nav-button-color)}yasgui-component .yasr .ontotext-pagination .page-button.selected-page:hover,yasgui-component .yasr .ontotext-pagination .page-selector:hover{background-color:var(--gw-paginator-nav-button-hover-background);color:var(--gw-paginator-nav-button-hover-color)}yasgui-component .yasr .pivot-table-plugin select{background-color:var(--gw-body-background);color:var(--gw-body-color)}yasgui-component .yasr .pivot-table-plugin .pvtUi .pvtTable .pvtAxisLabel,yasgui-component .yasr .pivot-table-plugin .pvtUi .pvtTable .pvtTotalLabel{background-color:var(--gw-datatable-header-background);border-color:var(--gw-datatable-header-cell-border-color);color:var(--gw-datatable-header-color)}yasgui-component .yasr .pivot-table-plugin .pvtUi .pvtTable .pvtRowLabel,yasgui-component .yasr table.pvtTable tbody tr td{background-color:var(--gw-datatable-row-background);color:var(--gw-datatable-row-color)}yasgui-component .yasr .pivot-table-plugin .pvtFilterBox{background-color:var(--gw-dialog-background);border-color:var(--gw-dialog-border-color);color:var(--gw-dialog-color)}yasgui-component .yasr .pivot-table-plugin .pvtFilterBox button{background-color:var(--gw-dialog-background);border-color:var(--gw-button-secondary-border-color);color:var(--gw-button-secondary-color)}yasgui-component .yasr .pivot-table-plugin .pvtFilterBox button:hover{background-color:var(--gw-button-secondary-hover-background);cursor:pointer}yasgui-component .yasr .pivot-table-plugin .pvtFilterBox .pvtSearch{background-color:var(--gw-form-field-background);border-color:var(--gw-form-field-border-color);color:var(--gw-form-field-color)}yasgui-component .yasr .yasr_fallback_info:not(:empty){background-color:var(--gw-message-info-background);border:1px solid var(--gw-message-info-border-color);color:var(--gw-message-info-color)}.keyboard-shortcuts-dialog-wrapper{font-size:90%;height:20px;line-height:18px}.keyboard-shortcuts-dialog-wrapper .key{border:none}.keyboard-shortcuts-dialog-wrapper.resizeable-on{margin-top:-31px}.keyboard-shortcut-description-item{justify-content:flex-start!important}.keyboard-shortcut-keys{flex:0 0!important;min-width:auto!important}.keyboard-shortcuts-dialog-wrapper .keyboard-shortcut-section-title{color:var(--gw-shortcuts-panel-heading-color)}.keyboard-shortcuts-content kbd{background-color:var(--gw-shortcuts-panel-key-background)!important;border-color:var(--gw-shortcuts-panel-key-border-color)!important;color:var(--gw-shortcuts-panel-key-color)!important}.keyboard-shortcuts-dialog-button{background-color:var(--gw-button-secondary-background)!important;border-color:var(--gw-button-secondary-border-color)!important;color:var(--gw-button-secondary-color)!important;font-weight:400}yasgui-component .yasr .explain-plan-copy-btn{background-color:var(--gw-shortcuts-editor-button-background);border-color:var(--gw-button-secondary-border-color);color:var(--gw-button-secondary-color);font-weight:400;margin-right:1px;margin-top:1px}.hidden{display:none}@media (max-width:1439px){yasgui-component :not(h3,h4,.dialog-body,.custom-button,.btn-orientation,sup){font-size:14px!important}yasgui-component .yasgui-toolbar .yasgui-btn{font-size:12px!important;height:24px!important}yasgui-component .yasgui-toolbar .btn-orientation{font-size:24px!important}yasgui-component .ontotext-dropdown-button,yasgui-component .tabPanel .yasqe .yasqe-footer-buttons .abort-button,yasgui-component .yasqe_queryButton{height:33px!important}}@media (max-width:1200px){yasgui-component .yasr .yasr_btnGroup .yasr_btn{padding:.73em}.yasr_btn span{display:none}}@media (max-width:768px){.ontotext-dropdown .button-name{display:inline}.ontotext-dropdown .ontotext-dropdown-button:after{padding-left:10px!important}}.ontotext-yasgui-tooltip .tooltip-box,.yasgui-floating-tooltip,.yasgui-floating-tooltip-arrow{background-color:var(--gw-tooltip-background);color:var(--gw-tooltip-color)}.ontotext-yasgui-tooltip .tooltip-arrow{color:var(--gw-tooltip-background)}.ontotext-yasgui-tooltip[data-placement^=top] .tooltip-arrow:before{border-top-color:var(--gw-tooltip-background)}.ontotext-yasgui-tooltip[data-placement^=left] .tooltip-arrow:before{border-left-color:var(--gw-tooltip-background)}.ontotext-yasgui-tooltip[data-placement^=right] .tooltip-arrow:before{border-right-color:var(--gw-tooltip-background)}.ontotext-yasgui-tooltip[data-placement^=bottom] .tooltip-arrow:before{border-bottom-color:var(--gw-tooltip-background)}