graphdb-workbench 3.1.0-TR8 → 3.1.0-TR9

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 (223) hide show
  1. package/dist/10142.50847c485a7f78a9840b.bundle.js +2 -0
  2. package/dist/10142.50847c485a7f78a9840b.bundle.js.map +1 -0
  3. package/dist/{12396.17ec8dd5a8ccc622f9e0.bundle.js → 12396.cbd351b8adc2b5af44ae.bundle.js} +2 -2
  4. package/dist/{12396.17ec8dd5a8ccc622f9e0.bundle.js.map → 12396.cbd351b8adc2b5af44ae.bundle.js.map} +1 -1
  5. package/dist/{15535.63c90f96f9a559e46b5b.bundle.js → 15535.4f979f5a7dbe8a2658e4.bundle.js} +2 -2
  6. package/dist/{15535.63c90f96f9a559e46b5b.bundle.js.map → 15535.4f979f5a7dbe8a2658e4.bundle.js.map} +1 -1
  7. package/dist/{16162.36d847d7c4d89b5cd3c5.bundle.js → 16162.e14694e038f17d230885.bundle.js} +2 -2
  8. package/dist/{16162.36d847d7c4d89b5cd3c5.bundle.js.map → 16162.e14694e038f17d230885.bundle.js.map} +1 -1
  9. package/dist/{20287.f9dd313495245f2a2600.bundle.js → 20287.1e9afb2423c3fe873e36.bundle.js} +2 -2
  10. package/dist/{20287.f9dd313495245f2a2600.bundle.js.map → 20287.1e9afb2423c3fe873e36.bundle.js.map} +1 -1
  11. package/dist/{21136.70c9b7e593b3bd5b956c.bundle.js → 21136.5a1250377772cb3195a3.bundle.js} +2 -2
  12. package/dist/{21136.70c9b7e593b3bd5b956c.bundle.js.map → 21136.5a1250377772cb3195a3.bundle.js.map} +1 -1
  13. package/dist/{21142.00b50a7f6eacc28b35ff.bundle.js → 21142.9dcd7e03e12facac1086.bundle.js} +2 -2
  14. package/dist/{21142.00b50a7f6eacc28b35ff.bundle.js.map → 21142.9dcd7e03e12facac1086.bundle.js.map} +1 -1
  15. package/dist/{21170.db372ef7ec97bcc716f7.bundle.js → 21170.d94a531bf4739c9b8605.bundle.js} +2 -2
  16. package/dist/{21170.db372ef7ec97bcc716f7.bundle.js.map → 21170.d94a531bf4739c9b8605.bundle.js.map} +1 -1
  17. package/dist/{21195.f5b3b940f837f589bc7e.bundle.js → 21195.49a6f9b0fdea13e4fa1a.bundle.js} +2 -2
  18. package/dist/{21195.f5b3b940f837f589bc7e.bundle.js.map → 21195.49a6f9b0fdea13e4fa1a.bundle.js.map} +1 -1
  19. package/dist/{25747.efd321d9d0aaac637081.bundle.js → 25747.56693e59322edce9791b.bundle.js} +2 -2
  20. package/dist/{25747.efd321d9d0aaac637081.bundle.js.map → 25747.56693e59322edce9791b.bundle.js.map} +1 -1
  21. package/dist/{27580.c85bbd83a62be177659d.bundle.js → 27580.46e0085c4f0549e4bb9f.bundle.js} +2 -2
  22. package/dist/{27580.c85bbd83a62be177659d.bundle.js.map → 27580.46e0085c4f0549e4bb9f.bundle.js.map} +1 -1
  23. package/dist/{31636.0c93ca0933246cbf2a7a.bundle.js → 31636.825216a6a817aea7c2e5.bundle.js} +2 -2
  24. package/dist/{31636.0c93ca0933246cbf2a7a.bundle.js.map → 31636.825216a6a817aea7c2e5.bundle.js.map} +1 -1
  25. package/dist/{32489.a4284926670465c0535e.bundle.js → 32489.ff95b720e4c6b3fb21d6.bundle.js} +2 -2
  26. package/dist/{32489.a4284926670465c0535e.bundle.js.map → 32489.ff95b720e4c6b3fb21d6.bundle.js.map} +1 -1
  27. package/dist/{33524.10558ac848ce64b2b722.bundle.js → 33524.35fe079bcb99a78babaf.bundle.js} +2 -2
  28. package/dist/33524.35fe079bcb99a78babaf.bundle.js.map +1 -0
  29. package/dist/{38360.9e15bd15f1133c1f86e2.bundle.js → 38360.d06f8ac25d4347b8c94a.bundle.js} +2 -2
  30. package/dist/{38360.9e15bd15f1133c1f86e2.bundle.js.map → 38360.d06f8ac25d4347b8c94a.bundle.js.map} +1 -1
  31. package/dist/{38644.763657c47afec2cb1205.bundle.js → 38644.1370edd16031835a57fc.bundle.js} +2 -2
  32. package/dist/{38644.763657c47afec2cb1205.bundle.js.map → 38644.1370edd16031835a57fc.bundle.js.map} +1 -1
  33. package/dist/{38843.4bf9d30023d4b1d69deb.bundle.js → 38843.1b8dad7984c1368e0f26.bundle.js} +2 -2
  34. package/dist/{38843.4bf9d30023d4b1d69deb.bundle.js.map → 38843.1b8dad7984c1368e0f26.bundle.js.map} +1 -1
  35. package/dist/{39518.ef5cb93c5bcdc2179716.bundle.js → 39518.460c8138d3b1479470eb.bundle.js} +2 -2
  36. package/dist/{39518.ef5cb93c5bcdc2179716.bundle.js.map → 39518.460c8138d3b1479470eb.bundle.js.map} +1 -1
  37. package/dist/{39539.f4b8d3f4994c0261092e.bundle.js → 39539.e69068aea8046d154307.bundle.js} +2 -2
  38. package/dist/{39539.f4b8d3f4994c0261092e.bundle.js.map → 39539.e69068aea8046d154307.bundle.js.map} +1 -1
  39. package/dist/39874.6ca23ead080b52dc1bc6.bundle.js +2 -0
  40. package/dist/39874.6ca23ead080b52dc1bc6.bundle.js.map +1 -0
  41. package/dist/{41453.5448e230d93f6203c3ad.bundle.js → 41453.f2e20c7c42ea9e9ca281.bundle.js} +2 -2
  42. package/dist/{41453.5448e230d93f6203c3ad.bundle.js.map → 41453.f2e20c7c42ea9e9ca281.bundle.js.map} +1 -1
  43. package/dist/{42129.051eaae10efbf1bc82f1.bundle.js → 42129.8894dd599262ed62f5f9.bundle.js} +2 -2
  44. package/dist/{42129.051eaae10efbf1bc82f1.bundle.js.map → 42129.8894dd599262ed62f5f9.bundle.js.map} +1 -1
  45. package/dist/{44444.767d8a59717fa409eb51.bundle.js → 44444.751ec83bdd2a4fd15395.bundle.js} +2 -2
  46. package/dist/{44444.767d8a59717fa409eb51.bundle.js.map → 44444.751ec83bdd2a4fd15395.bundle.js.map} +1 -1
  47. package/dist/{5470.27701a523ebe9e973fc2.bundle.js → 5470.7c17c7d3b58c8c0d0786.bundle.js} +2 -2
  48. package/dist/5470.7c17c7d3b58c8c0d0786.bundle.js.map +1 -0
  49. package/dist/{55862.795d0c7c79982ff615b9.bundle.js → 55862.4ff9c451d6d5b20139aa.bundle.js} +2 -2
  50. package/dist/{55862.795d0c7c79982ff615b9.bundle.js.map → 55862.4ff9c451d6d5b20139aa.bundle.js.map} +1 -1
  51. package/dist/{58306.8a5e63308872b575332a.bundle.js → 58306.448be402acad05bbb584.bundle.js} +2 -2
  52. package/dist/{58306.8a5e63308872b575332a.bundle.js.map → 58306.448be402acad05bbb584.bundle.js.map} +1 -1
  53. package/dist/{66014.5e25419235a79d858595.bundle.js → 66014.336bc4291da2fbc96cd1.bundle.js} +2 -2
  54. package/dist/66014.336bc4291da2fbc96cd1.bundle.js.map +1 -0
  55. package/dist/{67888.b096c01c466cf08229ed.bundle.js → 67888.17384107edbc72dadc2d.bundle.js} +2 -2
  56. package/dist/{67888.b096c01c466cf08229ed.bundle.js.map → 67888.17384107edbc72dadc2d.bundle.js.map} +1 -1
  57. package/dist/{72379.8dc0a9c3a04866e9f078.bundle.js → 72379.275ae82f8396d9088028.bundle.js} +2 -2
  58. package/dist/{72379.8dc0a9c3a04866e9f078.bundle.js.map → 72379.275ae82f8396d9088028.bundle.js.map} +1 -1
  59. package/dist/{73667.b26c43d519ba938f0c3b.bundle.js → 73667.e746a61fe0db60bf2b6a.bundle.js} +2 -2
  60. package/dist/{73667.b26c43d519ba938f0c3b.bundle.js.map → 73667.e746a61fe0db60bf2b6a.bundle.js.map} +1 -1
  61. package/dist/{73793.4156bd7c18be74d0720f.bundle.js → 73793.05e78e0c3ccbe1ad5f09.bundle.js} +2 -2
  62. package/dist/{73793.4156bd7c18be74d0720f.bundle.js.map → 73793.05e78e0c3ccbe1ad5f09.bundle.js.map} +1 -1
  63. package/dist/{75282.c40e77119b6a8a6341aa.bundle.js → 75282.4033542c93f0fda84c66.bundle.js} +2 -2
  64. package/dist/{75282.c40e77119b6a8a6341aa.bundle.js.map → 75282.4033542c93f0fda84c66.bundle.js.map} +1 -1
  65. package/dist/{75849.117944308ad2bc534fd7.bundle.js → 75849.fca2b927fc8d73fd31ee.bundle.js} +2 -2
  66. package/dist/{75849.117944308ad2bc534fd7.bundle.js.map → 75849.fca2b927fc8d73fd31ee.bundle.js.map} +1 -1
  67. package/dist/{78250.eda012f5bd23cc4020c9.bundle.js → 78250.9032061f1de28529cc5b.bundle.js} +2 -2
  68. package/dist/{78250.eda012f5bd23cc4020c9.bundle.js.map → 78250.9032061f1de28529cc5b.bundle.js.map} +1 -1
  69. package/dist/79329.5e745025419b44e7a2f6.bundle.js +2 -0
  70. package/dist/79329.5e745025419b44e7a2f6.bundle.js.map +1 -0
  71. package/dist/82206.b3b37c3e0cc1aa18148c.bundle.js +2 -0
  72. package/dist/82206.b3b37c3e0cc1aa18148c.bundle.js.map +1 -0
  73. package/dist/{82926.56a5d5287ce726fb67f8.bundle.js → 82926.c948b5ffd52a13d07e9a.bundle.js} +2 -2
  74. package/dist/{82926.56a5d5287ce726fb67f8.bundle.js.map → 82926.c948b5ffd52a13d07e9a.bundle.js.map} +1 -1
  75. package/dist/{86287.2a9cda65f67eb0a277d5.bundle.js → 86287.c47005c01ccbdfb1dc23.bundle.js} +2 -2
  76. package/dist/{86287.2a9cda65f67eb0a277d5.bundle.js.map → 86287.c47005c01ccbdfb1dc23.bundle.js.map} +1 -1
  77. package/dist/{9062.5754cb7a879c79cca777.bundle.js → 9062.1ed9bc6c2668d65d1cfd.bundle.js} +2 -2
  78. package/dist/{9062.5754cb7a879c79cca777.bundle.js.map → 9062.1ed9bc6c2668d65d1cfd.bundle.js.map} +1 -1
  79. package/dist/{95953.04709fa59d2ed50632d3.bundle.js → 95953.55471092942564b75541.bundle.js} +2 -2
  80. package/dist/95953.55471092942564b75541.bundle.js.map +1 -0
  81. package/dist/{99448.b6959a72f988828a8c8e.bundle.js → 99448.c6f1cb6efb46d34452fa.bundle.js} +2 -2
  82. package/dist/{99448.b6959a72f988828a8c8e.bundle.js.map → 99448.c6f1cb6efb46d34452fa.bundle.js.map} +1 -1
  83. package/dist/api/ontotext-workbench-api.d.ts +1 -0
  84. package/dist/api/ontotext-workbench-api.js +1 -1
  85. package/dist/api/ontotext-workbench-api.js.map +1 -1
  86. package/dist/api/services/security/authentication-storage.service.d.ts +3 -0
  87. package/dist/api/services/window/index.d.ts +1 -0
  88. package/dist/api/services/window/window.service.d.ts +4 -10
  89. package/dist/i18n/locale-en.json +4 -0
  90. package/dist/i18n/locale-fr.json +4 -0
  91. package/dist/index.html +8 -8
  92. package/dist/js/angular/clustermanagement/templates/cluster-nodes-configuration.html +1 -1
  93. package/dist/js/angular/core/directives/autocomplete/templates/autocomplete.html +1 -1
  94. package/dist/js/angular/core/directives/dynamic-form/templates/dynamic-form.html +1 -1
  95. package/dist/js/angular/core/directives/operations-statuses-monitor/templates/operations-statuses-monitor.html +1 -1
  96. package/dist/js/angular/core/directives/rdfresourcesearch/templates/rdfResourceSearchTemplate.html +1 -1
  97. package/dist/js/angular/core/directives/shuttle-multiselect/templates/shuttle-multiselect.html +1 -1
  98. package/dist/js/angular/core/directives/yasgui-component/templates/yasgui-component.html +1 -1
  99. package/dist/js/angular/core/templates/cookie-policy/cookie-consent.html +1 -1
  100. package/dist/js/angular/core/templates/cookie-policy/cookie-policy.html +1 -1
  101. package/dist/js/angular/core/templates/editable-content/editable-content.html +1 -1
  102. package/dist/js/angular/core/templates/markdown-content/markdown-content.html +1 -1
  103. package/dist/js/angular/core/templates/search-resource-input.html +1 -1
  104. package/dist/js/angular/graphql/templates/create-graphql-endpoint.html +2 -2
  105. package/dist/js/angular/graphql/templates/graphql-endpoint-management.html +1 -1
  106. package/dist/js/angular/graphql/templates/graphql-playground.html +1 -1
  107. package/dist/js/angular/graphql/templates/modal/endpoint-configuration-modal.html +1 -1
  108. package/dist/js/angular/graphql/templates/modal/endpoint-generation-failure-result-modal.html +1 -1
  109. package/dist/js/angular/graphql/templates/modal/import-endpoint-definition-modal.html +1 -1
  110. package/dist/js/angular/security/templates/user.html +2 -2
  111. package/dist/js/angular/ttyg/templates/agent-list.html +1 -1
  112. package/dist/js/angular/ttyg/templates/agent-select-menu.html +1 -1
  113. package/dist/js/angular/ttyg/templates/autocomplete-iri-discovery-search.html +1 -1
  114. package/dist/js/angular/ttyg/templates/chat-item-detail.html +1 -1
  115. package/dist/js/angular/ttyg/templates/chat-list.html +1 -1
  116. package/dist/js/angular/ttyg/templates/chat-panel.html +1 -1
  117. package/dist/js/angular/ttyg/templates/modal/agent-instructions-explain-modal.html +1 -1
  118. package/dist/js/angular/ttyg/templates/modal/agent-settings-modal.html +4 -4
  119. package/dist/js/angular/ttyg/templates/no-agents-view.html +1 -1
  120. package/dist/js/angular/ttyg/templates/ttyg.html +1 -1
  121. package/dist/{legacyWorkbench.2e904596b7080a82ac41.js → legacyWorkbench.5ed5aeadc238c6ce65fa.js} +3 -3
  122. package/dist/{legacyWorkbench.2e904596b7080a82ac41.js.map → legacyWorkbench.5ed5aeadc238c6ce65fa.js.map} +1 -1
  123. package/dist/{main.224d2a416195ee7c3d4a.js → main.95051b60e5b08481a1ff.js} +3 -3
  124. package/dist/main.95051b60e5b08481a1ff.js.map +1 -0
  125. package/dist/pages/aclmanagement.html +2 -2
  126. package/dist/pages/autocomplete.html +1 -1
  127. package/dist/pages/choose-repository-type.html +1 -1
  128. package/dist/pages/cluster-management/clusterInfo.html +3 -3
  129. package/dist/pages/create-index.html +1 -1
  130. package/dist/pages/dependencies.html +1 -1
  131. package/dist/pages/domainRangeInfo.html +2 -2
  132. package/dist/pages/edit.html +1 -1
  133. package/dist/pages/explore.html +1 -1
  134. package/dist/pages/export.html +1 -1
  135. package/dist/pages/find.html +1 -1
  136. package/dist/pages/graph-config/saveGraphConfig.html +8 -8
  137. package/dist/pages/graphs-visualizations.html +7 -7
  138. package/dist/pages/guides.html +1 -1
  139. package/dist/pages/import.html +2 -2
  140. package/dist/pages/jdbc-create.html +1 -1
  141. package/dist/pages/login.html +1 -1
  142. package/dist/pages/monitor/backup-and-restore.html +1 -1
  143. package/dist/pages/monitor/queries.html +1 -1
  144. package/dist/pages/monitor/resources.html +1 -1
  145. package/dist/pages/namespaces.html +2 -2
  146. package/dist/pages/plugins.html +1 -1
  147. package/dist/pages/rdfClassHierarchyInfo.html +7 -7
  148. package/dist/pages/rdfrank.html +2 -2
  149. package/dist/pages/repositories.html +1 -1
  150. package/dist/pages/repository.html +1 -1
  151. package/dist/pages/similarity-indexes.html +1 -1
  152. package/dist/pages/sparql-editor.html +1 -1
  153. package/dist/pages/sparql-template-create.html +1 -1
  154. package/dist/pages/ux-test1.html +2 -2
  155. package/dist/pages/webapi.html +2 -2
  156. package/dist/res/swagger5/index.html +11 -11
  157. package/dist/shared-components/cjs/onto-footer.onto-header.onto-navbar.onto-permission-banner.onto-toastr.onto-tooltip.entry.cjs.js.map +1 -1
  158. package/dist/shared-components/cjs/onto-footer_6.cjs.entry.js +1 -1
  159. package/dist/shared-components/cjs/onto-footer_6.cjs.entry.js.map +1 -1
  160. package/dist/shared-components/cjs/onto-language-selector.onto-license-alert.onto-operations-notification.onto-rdf-search.onto-repository-selector.onto-search-icon.onto-search-resource-input.onto-user-login.onto-user-menu.entry.cjs.js.map +1 -1
  161. package/dist/shared-components/cjs/onto-language-selector_9.cjs.entry.js +1 -1
  162. package/dist/shared-components/cjs/onto-language-selector_9.cjs.entry.js.map +1 -1
  163. package/dist/shared-components/cjs/onto-layout.cjs.entry.js +1 -1
  164. package/dist/shared-components/cjs/onto-layout.cjs.entry.js.map +1 -1
  165. package/dist/shared-components/cjs/onto-layout.entry.cjs.js.map +1 -1
  166. package/dist/shared-components/collection/components/onto-footer/onto-footer.js +1 -1
  167. package/dist/shared-components/collection/components/onto-footer/onto-footer.js.map +1 -1
  168. package/dist/shared-components/collection/components/onto-header/onto-header.js +1 -1
  169. package/dist/shared-components/collection/components/onto-header/onto-header.js.map +1 -1
  170. package/dist/shared-components/collection/components/onto-layout/onto-layout.js +1 -1
  171. package/dist/shared-components/collection/components/onto-layout/onto-layout.js.map +1 -1
  172. package/dist/shared-components/collection/components/onto-license-alert/onto-license-alert.js +1 -1
  173. package/dist/shared-components/collection/components/onto-license-alert/onto-license-alert.js.map +1 -1
  174. package/dist/shared-components/collection/components/onto-operations-notification/onto-operations-notification.js +1 -1
  175. package/dist/shared-components/collection/components/onto-operations-notification/onto-operations-notification.js.map +1 -1
  176. package/dist/shared-components/collection/components/onto-toastr/onto-toastr.js +1 -1
  177. package/dist/shared-components/collection/components/onto-toastr/onto-toastr.js.map +1 -1
  178. package/dist/shared-components/collection/components/onto-user-login/onto-user-login.js +1 -1
  179. package/dist/shared-components/collection/components/onto-user-login/onto-user-login.js.map +1 -1
  180. package/dist/shared-components/esm/onto-footer.onto-header.onto-navbar.onto-permission-banner.onto-toastr.onto-tooltip.entry.js.map +1 -1
  181. package/dist/shared-components/esm/onto-footer_6.entry.js +1 -1
  182. package/dist/shared-components/esm/onto-footer_6.entry.js.map +1 -1
  183. package/dist/shared-components/esm/onto-language-selector.onto-license-alert.onto-operations-notification.onto-rdf-search.onto-repository-selector.onto-search-icon.onto-search-resource-input.onto-user-login.onto-user-menu.entry.js.map +1 -1
  184. package/dist/shared-components/esm/onto-language-selector_9.entry.js +1 -1
  185. package/dist/shared-components/esm/onto-language-selector_9.entry.js.map +1 -1
  186. package/dist/shared-components/esm/onto-layout.entry.js +1 -1
  187. package/dist/shared-components/esm/onto-layout.entry.js.map +1 -1
  188. package/dist/shared-components/shared-components/onto-footer.onto-header.onto-navbar.onto-permission-banner.onto-toastr.onto-tooltip.entry.esm.js.map +1 -1
  189. package/dist/shared-components/shared-components/onto-language-selector.onto-license-alert.onto-operations-notification.onto-rdf-search.onto-repository-selector.onto-search-icon.onto-search-resource-input.onto-user-login.onto-user-menu.entry.esm.js.map +1 -1
  190. package/dist/shared-components/shared-components/onto-layout.entry.esm.js.map +1 -1
  191. package/dist/shared-components/shared-components/p-28a4ce8f.entry.js +1 -0
  192. package/dist/shared-components/shared-components/p-28a4ce8f.entry.js.map +1 -0
  193. package/dist/shared-components/shared-components/p-b2cc3f1e.entry.js +1 -0
  194. package/dist/shared-components/shared-components/p-b2cc3f1e.entry.js.map +1 -0
  195. package/dist/shared-components/shared-components/p-fa30a30a.entry.js +1 -0
  196. package/dist/shared-components/shared-components/p-fa30a30a.entry.js.map +1 -0
  197. package/dist/shared-components/shared-components/shared-components.esm.js +1 -1
  198. package/dist/shared-components/types/components/onto-license-alert/onto-license-alert.d.ts +0 -1
  199. package/dist/shared-components/types/components/onto-operations-notification/onto-operations-notification.d.ts +0 -1
  200. package/dist/shared-components/types/home/ubuntu/workspace/PRO/GraphDB UI Jobs/graphdb-workbench-release/packages/shared-components/.stencil/api/src/services/window/index.d.ts +1 -0
  201. package/dist/shared-components/types/home/ubuntu/workspace/PRO/GraphDB UI Jobs/graphdb-workbench-release/packages/shared-components/.stencil/api/src/services/window/window.service.d.ts +11 -0
  202. package/package.json +1 -1
  203. package/dist/10142.aeee60d794f7a5458f7e.bundle.js +0 -2
  204. package/dist/10142.aeee60d794f7a5458f7e.bundle.js.map +0 -1
  205. package/dist/33524.10558ac848ce64b2b722.bundle.js.map +0 -1
  206. package/dist/39874.d024d8dcc51bd55a9c59.bundle.js +0 -2
  207. package/dist/39874.d024d8dcc51bd55a9c59.bundle.js.map +0 -1
  208. package/dist/5470.27701a523ebe9e973fc2.bundle.js.map +0 -1
  209. package/dist/66014.5e25419235a79d858595.bundle.js.map +0 -1
  210. package/dist/79329.5b260bfd94bcd433f37d.bundle.js +0 -2
  211. package/dist/79329.5b260bfd94bcd433f37d.bundle.js.map +0 -1
  212. package/dist/82206.c251c5be920eed354934.bundle.js +0 -2
  213. package/dist/82206.c251c5be920eed354934.bundle.js.map +0 -1
  214. package/dist/95953.04709fa59d2ed50632d3.bundle.js.map +0 -1
  215. package/dist/main.224d2a416195ee7c3d4a.js.map +0 -1
  216. package/dist/shared-components/shared-components/p-ca82e5cb.entry.js +0 -1
  217. package/dist/shared-components/shared-components/p-ca82e5cb.entry.js.map +0 -1
  218. package/dist/shared-components/shared-components/p-d37f4d40.entry.js +0 -1
  219. package/dist/shared-components/shared-components/p-d37f4d40.entry.js.map +0 -1
  220. package/dist/shared-components/shared-components/p-e101f18e.entry.js +0 -1
  221. package/dist/shared-components/shared-components/p-e101f18e.entry.js.map +0 -1
  222. /package/dist/{legacyWorkbench.2e904596b7080a82ac41.js.LICENSE.txt → legacyWorkbench.5ed5aeadc238c6ce65fa.js.LICENSE.txt} +0 -0
  223. /package/dist/{main.224d2a416195ee7c3d4a.js.LICENSE.txt → main.95051b60e5b08481a1ff.js.LICENSE.txt} +0 -0
@@ -0,0 +1,2 @@
1
+ export const __webpack_id__=10142;export const __webpack_ids__=[10142];export const __webpack_modules__={10142:(e,t,o)=>{o.r(t),o.d(t,{onto_footer:()=>c,onto_header:()=>h,onto_navbar:()=>y,onto_permission_banner:()=>x,onto_toastr:()=>w,onto_tooltip:()=>C});var i=o(87848),r=o(57154),n=o(77050),s=o(81491),a=o(87050),l=o(37792);o(44123);const c=class{constructor(e){(0,i.r)(this,e),this.subscriptions=new r.SubscriptionList,this.currentYear=(new Date).getFullYear(),this.securityContextService=r.ServiceProvider.get(r.SecurityContextService),this.licenseContextService=r.ServiceProvider.get(r.LicenseContextService),this.cookieService=r.ServiceProvider.get(r.CookieService)}handleConsentGiven(){this.cookieService.acceptCookiePolicy().then(()=>this.shouldShowCookieConsent=!1)}render(){var e,t,o,r;return(0,i.h)(i.a,{key:"c5bbe0151e3eb14932bacecaad88b7e529e3a1f1"},(0,i.h)("div",{key:"5d4e0501b872ccbaa2e48f99361a948e83191b65",class:"footer-component"},(0,i.h)("a",{key:"80ed7acc465b754ed295d2931d3c38549e2fa4f8",href:"http://graphdb.ontotext.com",target:"_blank",rel:"noopener noreferrer"},"GraphDB")," ",null===(e=this.productInfo)||void 0===e?void 0:e.productVersion," • ",(0,i.h)("a",{key:"df2a6a80c117d91be1a45f4021987b24d0eaaa06",href:"http://rdf4j.org",target:"_blank",rel:"noopener noreferrer"},"RDF4J "),null===(t=this.productInfo)||void 0===t?void 0:t.sesame," • Connectors ",null===(o=this.productInfo)||void 0===o?void 0:o.connectors," • Workbench ",null===(r=this.productInfo)||void 0===r?void 0:r.workbench," • © 2002–",this.currentYear," ",(0,i.h)("a",{key:"2477c4b7e24a304904b1a9e113e562a3e2a68193",href:"http://ontotext.com",target:"_blank",rel:"noopener noreferrer"},"Ontotext AD"),". ",(0,i.h)("translate-label",{key:"e5f700a69d2f129d883af745a415027532b52531",labelKey:"footer.label.all_rights_reserved"})),this.shouldShowCookieConsent&&(0,i.h)("onto-cookie-consent",{key:"42138884db38d3813072b574d8c4b84f2acb2c9d"}))}connectedCallback(){this.subscribeToProductInfoChange(),this.subscribeToUserChange(),this.subscribeToLicenseChange()}disconnectedCallback(){this.subscriptions.unsubscribeAll()}subscribeToProductInfoChange(){this.subscriptions.add(r.ServiceProvider.get(r.ProductInfoContextService).onProductInfoChanged(e=>{this.productInfo=e}))}isTrackingAllowed(){return r.ServiceProvider.get(r.LicenseService).isTrackableLicense()&&!r.WindowService.getWindow().wbDevMode}subscribeToUserChange(){this.subscriptions.add(this.securityContextService.onAuthenticatedUserChanged(()=>{this.setCookieConsentVisibility()}))}setCookieConsentVisibility(){var e;const t=this.securityContextService.getAuthenticatedUser();this.shouldShowCookieConsent=this.isTrackingAllowed()&&!new r.CookieConsent(null===(e=null==t?void 0:t.appSettings)||void 0===e?void 0:e.COOKIE_CONSENT).policyAccepted}subscribeToLicenseChange(){this.subscriptions.add(this.licenseContextService.onLicenseChanged(()=>{this.setCookieConsentVisibility()}))}};c.style=":host{display:block}.footer-component{padding-left:var(--main-content-rl-padding);height:1.875rem}";const d=({repository:e})=>(0,i.h)("div",{class:"repository-selector-dropdown-item"},(0,i.h)("i",{class:"item-icon icon-repo-"+e.type}),(0,i.h)("div",{class:"item-label"},(0,i.h)("div",{class:"repository-id"},e.id),(0,i.h)("div",{class:"repository-location"},e.location?e.location:"Local"))),h=class{constructor(e){(0,i.r)(this,e),this.monitoringService=r.ServiceProvider.get(r.MonitoringService),this.repositoryContextService=r.ServiceProvider.get(r.RepositoryContextService),this.repositoryLocationContextService=r.ServiceProvider.get(r.RepositoryLocationContextService),this.repositoryService=r.ServiceProvider.get(r.RepositoryService),this.securityContextService=r.ServiceProvider.get(r.SecurityContextService),this.toastrService=r.ServiceProvider.get(r.OntoToastrService),this.namespacesService=r.ServiceProvider.get(r.NamespacesService),this.namespaceContextService=r.ServiceProvider.get(r.NamespacesContextService),this.languageService=r.ServiceProvider.get(r.LanguageService),this.UPDATE_ACTIVE_OPERATION_TIME_INTERVAL=2e3,this.fibonacciGenerator=new r.FibonacciGenerator,this.authService=r.ServiceProvider.get(r.AuthenticationService),this.eventService=r.ServiceProvider.get(r.EventService),this.shouldShowSearch=!0,this.isHomePage=(0,r.isHomePage)(),this.isActiveLocationLoading=!1,this.repositoryItems=[],this.subscriptions=new r.SubscriptionList,this.skipUpdateActiveOperationsTimes=0,this.canWriteRepo=e=>this.canWriteRepoInLocation(e),this.repositorySizeInfoFetcher=e=>this.repositoryService.getRepositorySizeInfo(e),this.showViewResourceMessage=e=>{e.stopPropagation(),this.toastrService.info(n.T.translate("rdf_search.toasts.use_view_resource")),this.shouldShowSearch=!1,s.H.focusElement("#search-resource-input-home input"),this.eventService.emit({NAME:a.R.RDF_SEARCH_ICON_CLICKED})}}disconnectedCallback(){this.subscriptions.unsubscribeAll(),this.stopOperationPolling()}connectedCallback(){this.currentRepository=this.repositoryContextService.getSelectedRepository(),this.setupTotalRepositoryFormater(),this.subscribeToEvents(),this.currentRoute=(0,r.getCurrentRoute)()}render(){var e,t,o,r,n,s;return(0,i.h)(i.a,{key:"22effd2a1b4fb572894b21dd68ff26909203f867"},(0,i.h)("div",{key:"c7722487406f0fa21b97e14479071f6dcb9221e0",class:"header-component"},(0,i.h)("onto-search-icon",{key:"8296b4143a4f12bb907dddc9aa05c4b55bfe8d03",class:"rdf-search-button",onClick:this.showViewResourceMessage,"data-test":"onto-show-view-resource-message",style:{display:this.shouldShowSearch&&this.isHomePage?"block":"none"}}),(0,i.h)("onto-rdf-search",{key:"ac629dc46aec09f238ce47491a96f3d89031d4fe","data-test":"onto-open-rdf-search-button",style:{display:this.shouldShowSearch&&!this.isHomePage?"block":"none"}}),(null===(e=this.activeOperations)||void 0===e?void 0:e.allRunningOperations.getItems().length)?(0,i.h)("onto-operations-notification",{activeOperations:this.activeOperations}):"",this.license&&!(null===(t=this.license)||void 0===t?void 0:t.valid)?(0,i.h)("onto-license-alert",{license:this.license}):"",(0,i.h)("onto-repository-selector",{key:"883b6da079a7c9b947c2a4ebcb91b56d742df4b6",currentRepository:this.currentRepository,items:this.repositoryItems,repositorySizeInfoFetcher:this.repositorySizeInfoFetcher,totalTripletsFormatter:this.totalTripletsFormatter,canWriteRepo:this.canWriteRepo}),(null===(o=this.securityConfig)||void 0===o?void 0:o.enabled)&&(null===(r=this.securityConfig)||void 0===r?void 0:r.userLoggedIn)?(0,i.h)("onto-user-menu",{user:this.user,securityConfig:this.securityConfig}):"",(null===(n=this.securityConfig)||void 0===n?void 0:n.enabled)&&!(null===(s=this.securityConfig)||void 0===s?void 0:s.userLoggedIn)&&"login"!==this.currentRoute?(0,i.h)("onto-user-login",null):"",(0,i.h)("onto-language-selector",{key:"21b12b014eb860c81a390f7778bc3e8d8281d228","dropdown-alignment":"right"})))}subscribeToEvents(){this.subscribeToRepositoryListChanged(),this.subscribeToLicenseChange(),this.subscribeToRepositoryChange(),this.subscribeToSecurityContextChange(),this.subscribeToActiveRepositoryLocationChange(),this.subscribeToActiveRepoLoadingChange(),this.subscribeToNavigationEnd(),this.subscribeToLanguageChanged()}subscribeToRepositoryListChanged(){return this.repositoryContextService.onRepositoryListChanged(e=>{(null==e?void 0:e.getItems().length)?this.initOnRepositoryListChanged(e):this.resetOnMissingRepositories()})}subscribeToLicenseChange(){this.subscriptions.add(r.ServiceProvider.get(r.LicenseContextService).onLicenseChanged(e=>{this.license=e}))}subscribeToRepositoryChange(){this.subscriptions.add(this.repositoryContextService.onSelectedRepositoryChanged(e=>{this.currentRepository=e,this.currentRepository?this.startOperationPolling():this.stopOperationPolling(),this.shouldShowSearch=this.shouldShowRdfSearch(),this.loadNamespaces(),this.repositoryItems=this.getRepositoriesDropdownItems()}))}subscribeToSecurityContextChange(){this.subscriptions.add(this.securityContextService.onAuthenticatedUserChanged(e=>{this.user=e})),this.subscriptions.add(this.securityContextService.onSecurityConfigChanged(e=>{this.securityConfig=e}))}subscribeToActiveRepositoryLocationChange(){this.subscriptions.add(this.repositoryLocationContextService.onActiveLocationChanged(()=>{this.shouldShowSearch=this.shouldShowRdfSearch()}))}subscribeToActiveRepoLoadingChange(){this.subscriptions.add(this.repositoryLocationContextService.onIsLoadingChanged(e=>{this.isActiveLocationLoading=e,this.shouldShowSearch=this.shouldShowRdfSearch()}))}subscribeToNavigationEnd(){this.subscriptions.add(this.eventService.subscribe(r.EventName.NAVIGATION_END,()=>{this.shouldShowSearch=this.shouldShowRdfSearch(),this.isHomePage=(0,r.isHomePage)(),this.currentRoute=(0,r.getCurrentRoute)()}))}subscribeToLanguageChanged(){this.subscriptions.add(r.ServiceProvider.get(r.LanguageContextService).onSelectedLanguageChanged(e=>this.setupTotalRepositoryFormater(e)))}resetOnMissingRepositories(){this.repositoryItems=[],this.repositoryList=new r.RepositoryList,this.currentRepository=void 0}initOnRepositoryListChanged(e){this.repositoryList=e,this.repositoryItems=this.getRepositoriesDropdownItems()}getRepositoriesDropdownItems(){var e;if(!(null===(e=this.repositoryList)||void 0===e?void 0:e.getItems().length))return[];let t;return this.repositoryList.sortByLocationAndId(),t=this.currentRepository?this.repositoryList.filterByRepository([this.currentRepository]):this.repositoryList.getItems(),t.filter(e=>this.authService.canReadRepo(e)||this.authService.canReadGqlRepo(e)).map(e=>(new a.D).setName((0,i.h)(d,{repository:e})).setValue(e).setDropdownTooltipTrigger("mouseenter focus").setGuideSelector(`repository-id-${e.id}`))}canWriteRepoInLocation(e){return!0}loadNamespaces(){this.currentRepository&&this.authService.canReadRepo(this.currentRepository)&&this.namespacesService.getNamespaces(this.currentRepository.id).then(e=>this.namespaceContextService.updateNamespaces(e))}startOperationPolling(){clearInterval(this.pollingInterval),this.pollingInterval=r.WindowService.getWindow().setInterval(()=>{this.skipUpdateActiveOperationsTimes>0?this.skipUpdateActiveOperationsTimes--:this.monitoringService.getOperations(this.currentRepository.id).then(e=>{r.ObjectUtil.deepEqual(this.activeOperations,e)||(this.activeOperations=e),this.fibonacciGenerator.reset(),this.skipUpdateActiveOperationsTimes=0}).catch(()=>{this.activeOperations=void 0,this.skipUpdateActiveOperationsTimes=this.fibonacciGenerator.next()})},this.UPDATE_ACTIVE_OPERATION_TIME_INTERVAL)}stopOperationPolling(){clearInterval(this.pollingInterval),this.activeOperations=void 0}shouldShowRdfSearch(){return!!this.currentRepository&&(!this.isActiveLocationLoading||"/repository"===(0,r.getPathName)())&&this.authService.canReadRepo(this.currentRepository)}setupTotalRepositoryFormater(e){e||(e=this.languageService.getDefaultLanguage()),this.totalTripletsFormatter=new Intl.NumberFormat(e,{style:"decimal",minimumFractionDigits:0,maximumFractionDigits:0})}};h.style=":host{display:block}.header-component>*{height:100%}.header-component{display:flex;justify-content:flex-end;align-items:stretch;gap:0.25em;margin-right:2em;font-size:1.1em;padding-bottom:0.5rem}";class p{constructor(e){this.type="navbarToggled",this.payload=e}}class u{constructor(e=[]){this._items=e}hasParent(e){return this._items.some(t=>e===t.label)}getModel(){const e=t=>{const o=t.children.map(e);return new m(Object.assign(Object.assign({},t),{children:o}))};return this._items.map(e)}addItem(e){this._items.push(e)}getSelectedRootItem(){return this._items.find(e=>e.selected)}isParentOpened(e){var t;return!!(null===(t=this.getParentItem(e))||void 0===t?void 0:t.open)}getTopLevelItem(e){return this._items.find(t=>t.label===e)}getParentItem(e){return this._items.find(t=>t.label===e.parent)}deselectAll(){this.walk(e=>{e.selected=!1})}closeAll(){this.walk(e=>{e.open=!1})}deselectItem(e){e.selected=!1}selectItem(e){e.label?e.selected=!0:this.selectItem(e.parentModel)}hasSelectedSubmenu(e){return!!e.children&&e.children.some(e=>this.hasSelection(e))}hasSelection(e){return!!e.selected||!!e.children&&e.children.some(e=>this.hasSelection(e))}closeOpened(){const e=this._items.find(e=>e.open);e&&(this.hasSelectedSubmenu(e)&&this.selectItem(e),e.open=!1)}open(e){this.walk(e=>{e.open=!1}),this.openItemAndParent(e)}openItemAndParent(e){e.parentModel&&this.openItemAndParent(e.parentModel),e.open=!0}closeOtherParents(e){const t=e.parent;this.walk(e=>{e.label!==t&&(e.open=!1)})}highlightSelected(){const e=this.getSelectedItem();(null==e?void 0:e.hasParent)&&this.selectItem(this.getParentItem(e))}unhighlightSelected(){const e=this.getSelectedRootItem();e&&e.children.length&&e.open&&this.deselectItem(e)}getSelectedItem(){let e=null;const t=o=>{if(o.selected)return e=o,!0;if(o.children)for(const e of o.children)if(t(e))return!0;return!1};return this._items.some(t),e}expandSelected(){const e=this.getSelectedItem();e&&(e.hasParent?this.open(this.getParentItem(e)):this.open(e))}initSelected(e){this.walk(t=>{var o;let i=e;(null===(o=t.href)||void 0===o?void 0:o.includes("*"))&&(i=this.getWildcardPath(e,t.href)),t.href===i&&(t.hasParent&&this.open(t),this.selectItem(t))})}getWildcardPath(e,t){const o=e.split("/"),i=t.split("/");if(o.length!==i.length)return e;const r=[];for(let t=0;t<i.length;t++)if("*"===i[t])r.push("*");else{if(i[t]!==o[t])return e;r.push(i[t])}return r.join("/")}sorted(){return this._items.filter(e=>e.children).forEach(e=>{e.children.sort(u.compare)}),this._items.sort(u.compare),this}static compare(e,t){return e.order-t.order}walk(e){this.walkRecursively(this.items,e)}walkRecursively(e,t){e.forEach(e=>{var o;t(e),(null===(o=e.children)||void 0===o?void 0:o.length)&&this.walkRecursively(e.children,t)})}get items(){return this._items}}class m{constructor(e){var t;this._selected=!1,this._open=!1,this._order=e.order,this._label=e.label,this._labelKey=e.labelKey,this._href=e.href,this._children=[...null!==(t=e.children)&&void 0!==t?t:[]],this._hasParent=e.hasParent,this._parent=e.parent,this._selected=e.selected,this._open=e.open,this._documentationHref=e.documentationHref,this._hrefFun=e.hrefFun,this._editions=e.editions,this._icon=e.icon,this._role=e.role,this._guideSelector=e.guideSelector,this._testSelector=e.testSelector,this._parentModel=e.parentModel}addChild(e){this.children.push(e),e.setParent(this)}addChildren(...e){e.forEach(e=>{this.addChild(e)})}hasSubmenus(){return"#"===this._href}get parent(){return this._parent}set parent(e){this._parent=e}get order(){return this._order}set order(e){this._order=e}get label(){return this._label}set label(e){this._label=e}get labelKey(){return this._labelKey}set labelKey(e){this._labelKey=e}get documentationHref(){return this._documentationHref}set documentationHref(e){this._documentationHref=e}get href(){return this._href}set href(e){this._href=e}get children(){return this._children}set children(e){this._children=e}get hasParent(){return this._hasParent}set hasParent(e){this._hasParent=e}get selected(){return this._selected}set selected(e){this._selected=e}get open(){return this._open}set open(e){this._open=e}get hrefFun(){return this._hrefFun}set hrefFun(e){this._hrefFun=e}get editions(){return this._editions}set editions(e){this._editions=e}get icon(){return this._icon}set icon(e){this._icon=e}get role(){return this._role}set role(e){this._role=e}get guideSelector(){return this._guideSelector}set guideSelector(e){this._guideSelector=e}get testSelector(){return this._testSelector}set testSelector(e){this._testSelector=e}get parentModel(){return this._parentModel}set parentModel(e){this._parentModel=e}setParent(e){this.parentModel=e,this.hasParent=!!e}}class b{static map(e){const t=new u;return b.setTopLevelMenuItems(e,t),b.setSubmenuItems(e,t),t.sorted()}static setTopLevelMenuItems(e,t){e.forEach(e=>{e.items.filter(e=>!e.parent&&e.shouldShow).forEach(e=>{t.hasParent(e.label)?console.warn("Doubled parent definition: ",e):t.addItem(this.toMenuItemModel(e,void 0,e.children))})})}static setSubmenuItems(e,t){e.forEach(e=>{e.items.filter(e=>e.parent&&e.shouldShow).forEach(e=>{const o=t.getTopLevelItem(e.parent);null==o||o.addChildren(this.toMenuItemModel(e,o,e.children))})})}static toMenuItemModel(e,t,o=[]){const i=new m({label:e.label,labelKey:e.labelKey,href:e.href,documentationHref:e.documentationHref,hrefFun:e.hrefFun,order:e.order,role:e.role,editions:e.editions,icon:e.icon,guideSelector:e.guideSelector,hasParent:!!t,parentModel:t,parent:e.parent,selected:!1,testSelector:e.testSelector}),r=o.map(e=>this.toMenuItemModel(e,i,e.children));return i.addChildren(...r),i}}const g="menu.buttons.expand",v="menu.buttons.collapse",f="menu.logo.link.title",y=class{constructor(e){(0,i.r)(this,e),this.navbarToggled=(0,i.c)(this,"navbarToggled"),this.productInfoContextService=r.ServiceProvider.get(r.ProductInfoContextService),this.subscriptions=new r.SubscriptionList,this.labels={[g]:n.T.translate(g),[v]:n.T.translate(v),[f]:n.T.translate(f)},this.isCollapsedByUser=!1,this.isCollapsed=!1}navbarCollapsedChange(e){this.isCollapsed=!e,this.isCollapsed&&!this.isCollapsedByUser?this.expandNavbar():this.collapseNavbar(),this.navbarToggled.emit(new p(this.isCollapsed))}menuItemsChanged(e){this.init(e)}init(e){const t=b.map(e||[]);t.initSelected((0,r.getCurrentRoute)()),this.menuModel=t}select(e,t){var o;if(e.preventDefault(),t.documentationHref){const e=r.UriUtil.resolveDocumentationUrl(null===(o=this.productInfo)||void 0===o?void 0:o.productVersion,t.documentationHref);return void(0,r.openInNewTab)(e)}t.hasSubmenus()||(0,r.navigate)(t.href),t.children.length?t.open?(this.menuModel.closeAll(),this.menuModel.hasSelectedSubmenu(t)&&this.menuModel.selectItem(t)):(this.menuModel.closeOpened(),this.menuModel.open(t),this.menuModel.hasSelectedSubmenu(t)&&this.menuModel.deselectItem(t)):this.menuModel.closeOtherParents(t),this.isCollapsed&&this.menuModel.isParentOpened(t)&&this.menuModel.closeOpened(),this.refreshNavbar()}subscribeToNavigationEnd(){this.subscriptions.add(r.ServiceProvider.get(r.EventService).subscribe(r.EventName.NAVIGATION_END,()=>{this.selectItemByUrl()}))}selectItemByUrl(){this.menuModel&&(this.menuModel.deselectAll(),this.menuModel.closeAll(),(0,r.isHomePage)()||this.menuModel.initSelected((0,r.getCurrentRoute)()),this.refreshNavbar())}toggleNavbar(){this.isCollapsed?(this.isCollapsedByUser=!1,this.menuModel.expandSelected(),this.menuModel.unhighlightSelected(),this.expandNavbar()):(this.isCollapsedByUser=!0,this.menuModel.highlightSelected(),this.menuModel.closeOpened(),this.collapseNavbar()),this.refreshNavbar(),this.navbarToggled.emit(new p(this.isCollapsed))}collapseNavbar(){this.hostElement.querySelector(".navbar-component").classList.add("collapsed"),this.isCollapsed=!0}expandNavbar(){this.isCollapsedByUser||(this.hostElement.querySelector(".navbar-component").classList.remove("collapsed"),this.isCollapsed=!1)}refreshNavbar(){var e;(null===(e=this.menuModel)||void 0===e?void 0:e.items)&&(this.menuModel=new u(this.menuModel.items))}onLanguageChanged(){this.refreshNavbar()}onTranslate(e){this.subscriptions.add(n.T.onTranslate(e,[],t=>{this.labels[e]=t,this.onLanguageChanged()}))}componentWillLoad(){this.init(this.menuItems)}connectedCallback(){this.subscribeToNavigationEnd(),this.subscribeToProductInfoChanges(),this.onTranslate(g),this.onTranslate(v),this.onTranslate(f)}disconnectedCallback(){this.subscriptions.unsubscribeAll()}handleSelectMenuItem(e){return t=>{this.select(t,e)}}toggleNavbarHandler(){return()=>this.toggleNavbar()}render(){if(this.menuModel)return(0,i.h)(i.a,null,(0,i.h)("ul",{class:"navbar-component"},(0,i.h)("li",{class:"brand"},(0,i.h)("span",{class:"toggle-menu",title:this.isCollapsed?this.labels[g]:this.labels[v],onClick:this.toggleNavbarHandler()},(0,i.h)("em",{class:this.isCollapsed?"icon-caret-right":"icon-caret-left"})),(0,i.h)("a",{class:"menu-element-root home-page",onClick:(0,r.navigateTo)("./")},(0,i.h)("svg",{class:"big-logo"},(0,i.h)("desc",null,this.labels[f]),(0,i.h)("use",{href:"assets/graphdb-logo.svg#Layer_1"})),(0,i.h)("svg",{class:"small-logo"},(0,i.h)("desc",null,this.labels[f]),(0,i.h)("use",{href:"assets/graphdb-logo-sq.svg#Layer_1"})))),this.menuModel.items.map(e=>(0,i.h)("li",{key:e.labelKey,class:{"menu-element":!0,open:e.open},"data-test":e.testSelector,"guide-selector":e.guideSelector},e.children.length>0&&(0,i.h)(i.F,null,(0,i.h)("div",{class:{"menu-element-root":!0,active:e.selected},onClick:this.handleSelectMenuItem(e)},(0,i.h)("span",{class:`menu-item-icon ${e.icon}`})," ",(0,i.h)("translate-label",{class:"menu-item",labelKey:e.labelKey})),(0,i.h)("ul",{class:"sub-menu"},(0,i.h)("li",{key:e.labelKey,class:"submenu-title"},(0,i.h)("translate-label",{labelKey:e.labelKey})),e.children.map(e=>(0,i.h)("li",{key:e.labelKey,class:{"sub-menu-item":!0,active:e.selected},"data-test":e.testSelector,"guide-selector":e.guideSelector},(0,i.h)("a",{class:"sub-menu-link",href:e.href,onClick:this.handleSelectMenuItem(e)},(0,i.h)("translate-label",{class:"menu-item",labelKey:e.labelKey}),e.icon&&(0,i.h)("span",{title:"some title",class:`text-muted ${e.icon}`})))))),0===e.children.length&&(0,i.h)("a",{class:{"menu-element-root":!0,active:e.selected},href:e.href,onClick:this.handleSelectMenuItem(e)},(0,i.h)("span",{class:`menu-item-icon ${e.icon}`})," ",(0,i.h)("translate-label",{class:"menu-item",labelKey:e.labelKey}))))))}subscribeToProductInfoChanges(){this.subscriptions.add(this.productInfoContextService.onProductInfoChanged(e=>this.productInfo=e))}get hostElement(){return(0,i.g)(this)}static get watchers(){return{navbarCollapsed:["navbarCollapsedChange"],menuItems:["menuItemsChanged"]}}};y.style=':host{display:block}.navbar-component{width:15rem;position:fixed;font-weight:400;z-index:1010;margin:0;padding:0;-moz-transition:width 0.2s ease-in;-o-transition:width 0.2s ease-in;-webkit-transition:width 0.2s ease-in;transition:width 0.2s ease-in;height:100%;overflow-y:auto;overflow-x:hidden}@media screen and (max-height: 475px){.navbar-component.collapsed{position:absolute}}.navbar-component li{list-style:none;cursor:pointer}.navbar-component li a{color:var(--secondary-color);text-decoration:none}.navbar-component li a.sub-menu-link:not([href=""]):not([tabindex]):hover{text-decoration:none !important}.navbar-component .sub-menu-item a.sub-menu-link:not([href]) translate-label.menu-item{padding-right:3.5px}.navbar-component a:not([href]):not([tabindex]),.navbar-component a:not([href]):not([tabindex]):focus,.navbar-component a:not([href]):not([tabindex]):hover{color:var(--secondary-color)}.navbar-component a.sub-menu-link:not([href]):hover .menu-item,.navbar-component a.sub-menu-link[href=""]:hover .menu-item{text-decoration-line:underline !important}.navbar-component li .menu-element-root:hover,.navbar-component .sub-menu li:hover{background-color:rgba(0, 0, 0, 0.1);text-decoration-line:none !important}.navbar-component li .menu-element-root:hover .menu-item-icon,.navbar-component .menu-element.open .menu-item-icon{transform:scale(1.1)}.navbar-component .menu-element.open .sub-menu .menu-item-icon{transform:scale(0.5)}.navbar-component .menu-element{border-bottom:1px solid #fff;background-color:#f7f7f7;position:relative}.navbar-component .menu-element-root{padding:0.8em 2.5em 0.8em 0.8em;display:block;line-height:2.5rem;position:relative;z-index:100;-moz-transition:all 0.18s ease-out;-o-transition:all 0.18s ease-out;-webkit-transition:all 0.18s ease-out;transition:all 0.18s ease-out;color:var(--secondary-color);cursor:pointer;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.navbar-component .menu-item-icon{font-size:2.5rem;width:2.5rem;vertical-align:middle;text-align:center;color:var(--primary-color);transform:scale(0.9);display:inline-block;-moz-transition:all 0.18s ease-out;-o-transition:all 0.18s ease-out;-webkit-transition:all 0.18s ease-out;transition:all 0.18s ease-out;pointer-events:none}.navbar-component .menu-element-root .menu-item{pointer-events:none}.navbar-component .menu-element-root.active,.navbar-component .menu-element-root.active:hover{background-color:var(--primary-color);color:#fff}.navbar-component .active .menu-item-icon{color:var(--icon-on-primary-color);transform:scale(1.1)}.navbar-component :not(.brand) .menu-element-root{font-size:1.1rem}.navbar-component .brand{background-color:var(--logo-background-color)}.navbar-component .brand a{display:block;position:relative;z-index:5}.navbar-component .product-version{line-height:normal;color:rgba(255, 255, 255, 0.8);text-transform:uppercase;font-size:0.625rem;display:block;position:absolute;right:0;bottom:0;padding:0.2em 0.5em;border-color:rgba(255, 255, 255, 0.2);border-style:solid;border-top-width:1px;border-left-width:1px;border-bottom-width:0;border-right-width:0}.navbar-component .menu-element.open,.navbar-component.collapsed .menu-element:hover{background-color:#dcdcdc}.navbar-component .sub-menu{position:relative;padding:0;z-index:110}.navbar-component .sub-menu li{display:none}.navbar-component .sub-menu li a{padding:0.5em 0.8em;display:block}.navbar-component .sub-menu li.active a{background-color:var(--primary-color);font-weight:500;color:#fff}.navbar-component .menu-element.open ul li{display:block}.navbar-component .menu-element ul:before,.rdf-list ul.datasource:before{font-family:"icomoon", sans-serif !important;content:"\\e921";display:block;font-size:1.5em;position:absolute;top:-3.3rem;right:1rem;-moz-transition:all 0.2s ease-in;-o-transition:all 0.2s ease-in;-webkit-transition:all 0.2s ease-in;transition:all 0.2s ease-in;pointer-events:none}.navbar-component .menu-element.open ul:before,.rdf-list ul.open.datasource:before{transform:rotate(180deg)}.toggle-menu{display:block;position:absolute;top:0;right:0;color:#fff;font-size:0.8em;line-height:1.5;padding:0 0.3em;background-color:rgba(255, 255, 255, 0.1);z-index:10;cursor:pointer}.toggle-menu:hover{background-color:var(--primary-color)}.toggle-menu [class^=icon-]{-moz-transition:all 0.2s ease-in;-o-transition:all 0.2s ease-in;-webkit-transition:all 0.2s ease-in;transition:all 0.2s ease-in;display:inline-block}.toggle-menu:hover [class^=icon-]{transform:scale(1.1)}.small-logo{width:50px;height:50px}.big-logo{width:180px;height:50px}.navbar-component.collapsed{width:4.375rem;overflow:visible;height:auto}.navbar-component.collapsed .menu-element.open .sub-menu{position:absolute;top:0;left:4.375rem;background-color:#EBEBEB;width:15rem}.navbar-component.collapsed .menu-element .menu-item,.navbar-component.collapsed .menu-element .sub-menu li{display:none}.navbar-component.collapsed .menu-element.open .menu-item,.navbar-component.collapsed .menu-element.open .sub-menu li{display:block}.navbar-component.collapsed .menu-element.open .menu-element-root .menu-item{display:none}.navbar-component.collapsed .menu-element-root{overflow:visible}.navbar-component .menu-element.open ul li.submenu-title,.navbar-component .submenu-title{display:none}.navbar-component.collapsed .menu-element.open ul li.submenu-title{display:block;font-size:1.2em;font-weight:500;border-bottom:1px solid rgba(0, 0, 0, 0.1);text-overflow:ellipsis;overflow:hidden;padding:0.5em 0.8rem 0.2em 0;color:var(--secondary-color);margin-left:0.8rem;margin-bottom:0.5em}.navbar-component .sub-menu li.submenu-title:hover{background-color:transparent}.navbar-component.collapsed .menu-element.open .sub-menu.align-bottom{bottom:0;top:auto}.navbar-component.collapsed .menu-element ul:before{display:none}.navbar-component.collapsed .brand a{padding:0.4rem}.navbar-component.collapsed .product-version{display:none}.navbar-component.collapsed .small-logo,.navbar-component .big-logo{display:block}.navbar-component .small-logo,.navbar-component.collapsed .big-logo{display:none}';const x=class{constructor(e){(0,i.r)(this,e)}render(){return(0,i.h)(i.a,{key:"3a3da80e4f862eef4882a6ab132e9837c440ccb2",class:"permission-banner"},(0,i.h)("p",{key:"2a8514b883d14b78f973eab6dd53a642b2baf123",class:"permission-banner-content onto-alert onto-alert-danger"},(0,i.h)("div",{key:"29535036796fd9bd97e374f678c45c9b3a3106f4",class:"icon-warning"}),(0,i.h)("div",{key:"9a1281996df3d1e9441569126c95572d4f77e0e1",class:"label-container"},(0,i.h)("translate-label",{key:"369f75c894b496542c1415b81452afe7da719be7",labelKey:"permission_banner.no_access_error"}),(0,i.h)("translate-label",{key:"746d0c0db8f1593efd862e162ca0f028dbcbdd2a",labelKey:"permission_banner.change_menu_or_user_warning"}))))}};x.style=':host{display:block}.permission-banner{margin:0 1rem}.permission-banner-content{display:flex;align-items:center;margin:1rem;padding:0 2rem 3rem 2rem}.label-container{display:flex;flex-direction:column;margin-left:1rem}.icon-warning::before{font-family:"icomoon", sans-serif;content:"\\e920";display:block;font-size:1.5em;pointer-events:none}';const S={[r.ToastType.INFO]:"fa-circle-info",[r.ToastType.SUCCESS]:"fa-circle-check",[r.ToastType.WARNING]:"fa-message-lines",[r.ToastType.ERROR]:"fa-triangle-exclamation"},w=class{constructor(e){(0,i.r)(this,e),this.toasts=new r.ToastMessageList([]),this.toastToTimeout=new Map,this.config=r.ToastrConfig.getDefaultConfig(),this.onToastMouseEnter=e=>()=>{this.clearToastTimeout(e)},this.onToastMouseLeave=e=>()=>{this.setTimeoutForToast(e)}}handleToastCreate(e){this.addToast(e.detail)}render(){var e;return(0,i.h)("section",{key:"a65e3c5c600cf24dce3c7b591be08641a98fefa4",style:{display:this.toasts.isEmpty()?"none":"flex"},class:`onto-toastr-container ${this.config.position}`},null===(e=this.toasts)||void 0===e?void 0:e.getItems().map(e=>(0,i.h)("div",{class:`onto-toast ${e.type}`,key:e.id,onMouseEnter:this.onToastMouseEnter(e),onMouseLeave:this.onToastMouseLeave(e)},(0,i.h)("i",{class:`fa-regular ${S[e.type]}`}),(0,i.h)("span",{onClick:this.handleToastClick(e),class:"toast-message",innerHTML:(0,n.s)(e.message)}))))}addToast(e){this.toasts.addToStart(e),this.setTimeoutForToast(e),this.updateToastrReference()}setTimeoutForToast(e){var t;const o=r.WindowService.getWindow().setTimeout(()=>{this.toasts.remove(e),this.clearToastTimeout(e)},(null===(t=e.config)||void 0===t?void 0:t.timeout)||this.config.timeout);this.toastToTimeout.set(e,o)}updateToastrReference(){this.toasts=new r.ToastMessageList(this.toasts.getItems())}clearToastTimeout(e){const t=this.toastToTimeout.get(e);clearTimeout(t),this.toastToTimeout.delete(e),this.updateToastrReference()}handleToastClick(e){return t=>{var o,i;(null===(o=e.config)||void 0===o?void 0:o.onClick)&&e.config.onClick(t),(null===(i=e.config)||void 0===i?void 0:i.removeOnClick)&&(this.toasts.remove(e),this.clearToastTimeout(e))}}};w.style=".onto-toastr-container{position:fixed;z-index:9999999;pointer-events:auto;flex-direction:column}.onto-toastr-container.bottom-right{bottom:12px;right:12px}.onto-toastr-container.bottom-left{bottom:12px;left:12px}.onto-toastr-container .onto-toast{display:flex;align-items:center;border-radius:0;box-shadow:0 0 12px rgba(0, 0, 0, 0.3);position:relative;width:450px;padding:25px 0;color:white;margin-bottom:5px;overflow-wrap:break-word}.onto-toastr-container .onto-toast:hover{box-shadow:0 0 12px #000;opacity:1;cursor:pointer}.onto-toastr-container .onto-toast.warning{background-color:var(--color-warning-dark, #A92B0A)}.onto-toastr-container .onto-toast.success{background-color:var(--color-success-dark, #01544D)}.onto-toastr-container .onto-toast.error{background-color:var(--color-danger-dark, #B71C1C)}.onto-toastr-container .onto-toast.info{background-color:var(--color-info-dark, #004177)}.onto-toastr-container .onto-toast i{font-size:1.8rem;padding:0 20px;color:inherit}.onto-toastr-container .onto-toast i:hover{transform:none}.onto-toastr-container .onto-toast .toast-message{font-size:1.2rem;opacity:1;max-width:370px}";const C=class{constructor(e){(0,i.r)(this,e),this.clearTooltipsForRemovedElements=e=>{for(const t of e)for(const e of Array.from(t.removedNodes))if(this.removeTooltipFromNode(e))return},this.removeTooltipFromNode=e=>{if(e instanceof HTMLElement){if(l.T.getTooltipInstance(e))return l.T.destroyTooltip(e),!0;e.childNodes.forEach(this.removeTooltipFromNode)}return!1}}onMouseover(e){const t=l.T.getTooltipTarget(e.target);if(!t)return;const o=l.T.getOrCreateTooltipInstance(t);o.show(),t.hideTooltip=()=>{o.hide()}}onMouseout(e){const t=l.T.getTooltipTarget(e.target);if(!t)return;const o=e.relatedTarget;if(!o||!t.contains(o)){const e=l.T.getTooltipInstance(t);e&&"manual"===e.props.trigger&&l.T.destroyTooltip(t)}}connectedCallback(){this.handleRemovedNodes()}disconnectedCallback(){var e;null===(e=this.observer)||void 0===e||e.disconnect()}render(){return(0,i.h)(i.a,{key:"4f7858dee4268ac1ea1496e16b7c6a3f31e3fb0c"})}handleRemovedNodes(){this.observer=new MutationObserver(this.clearTooltipsForRemovedElements),this.observer.observe(document.body,{childList:!0,subtree:!0})}};C.style='.tippy-box[data-animation=fade][data-state=hidden]{opacity:0}[data-tippy-root]{max-width:calc(100vw - 10px)}.tippy-box{position:relative;background-color:#333;color:#fff;border-radius:4px;font-size:14px;line-height:1.4;white-space:normal;outline:0;transition-property:transform,visibility,opacity}.tippy-box[data-placement^=top]>.tippy-arrow{bottom:0}.tippy-box[data-placement^=top]>.tippy-arrow:before{bottom:-7px;left:0;border-width:8px 8px 0;border-top-color:initial;transform-origin:center top}.tippy-box[data-placement^=bottom]>.tippy-arrow{top:0}.tippy-box[data-placement^=bottom]>.tippy-arrow:before{top:-7px;left:0;border-width:0 8px 8px;border-bottom-color:initial;transform-origin:center bottom}.tippy-box[data-placement^=left]>.tippy-arrow{right:0}.tippy-box[data-placement^=left]>.tippy-arrow:before{border-width:8px 0 8px 8px;border-left-color:initial;right:-7px;transform-origin:center left}.tippy-box[data-placement^=right]>.tippy-arrow{left:0}.tippy-box[data-placement^=right]>.tippy-arrow:before{left:-7px;border-width:8px 8px 8px 0;border-right-color:initial;transform-origin:center right}.tippy-box[data-inertia][data-state=visible]{transition-timing-function:cubic-bezier(.54,1.5,.38,1.11)}.tippy-arrow{width:16px;height:16px;color:#333}.tippy-arrow:before{content:"";position:absolute;border-color:transparent;border-style:solid}.tippy-content{position:relative;padding:5px 9px;z-index:1}.tippy-box[data-theme~=light-border]{background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,8,16,.15);color:#333;box-shadow:0 4px 14px -2px rgba(0,8,16,.08)}.tippy-box[data-theme~=light-border]>.tippy-backdrop{background-color:#fff}.tippy-box[data-theme~=light-border]>.tippy-arrow:after,.tippy-box[data-theme~=light-border]>.tippy-svg-arrow:after{content:"";position:absolute;z-index:-1}.tippy-box[data-theme~=light-border]>.tippy-arrow:after{border-color:transparent;border-style:solid}.tippy-box[data-theme~=light-border][data-placement^=top]>.tippy-arrow:before{border-top-color:#fff}.tippy-box[data-theme~=light-border][data-placement^=top]>.tippy-arrow:after{border-top-color:rgba(0,8,16,.2);border-width:7px 7px 0;top:17px;left:1px}.tippy-box[data-theme~=light-border][data-placement^=top]>.tippy-svg-arrow>svg{top:16px}.tippy-box[data-theme~=light-border][data-placement^=top]>.tippy-svg-arrow:after{top:17px}.tippy-box[data-theme~=light-border][data-placement^=bottom]>.tippy-arrow:before{border-bottom-color:#fff;bottom:16px}.tippy-box[data-theme~=light-border][data-placement^=bottom]>.tippy-arrow:after{border-bottom-color:rgba(0,8,16,.2);border-width:0 7px 7px;bottom:17px;left:1px}.tippy-box[data-theme~=light-border][data-placement^=bottom]>.tippy-svg-arrow>svg{bottom:16px}.tippy-box[data-theme~=light-border][data-placement^=bottom]>.tippy-svg-arrow:after{bottom:17px}.tippy-box[data-theme~=light-border][data-placement^=left]>.tippy-arrow:before{border-left-color:#fff}.tippy-box[data-theme~=light-border][data-placement^=left]>.tippy-arrow:after{border-left-color:rgba(0,8,16,.2);border-width:7px 0 7px 7px;left:17px;top:1px}.tippy-box[data-theme~=light-border][data-placement^=left]>.tippy-svg-arrow>svg{left:11px}.tippy-box[data-theme~=light-border][data-placement^=left]>.tippy-svg-arrow:after{left:12px}.tippy-box[data-theme~=light-border][data-placement^=right]>.tippy-arrow:before{border-right-color:#fff;right:16px}.tippy-box[data-theme~=light-border][data-placement^=right]>.tippy-arrow:after{border-width:7px 7px 7px 0;right:17px;top:1px;border-right-color:rgba(0,8,16,.2)}.tippy-box[data-theme~=light-border][data-placement^=right]>.tippy-svg-arrow>svg{right:11px}.tippy-box[data-theme~=light-border][data-placement^=right]>.tippy-svg-arrow:after{right:12px}.tippy-box[data-theme~=light-border]>.tippy-svg-arrow{fill:#fff}.tippy-box[data-theme~=light-border]>.tippy-svg-arrow:after{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMCA2czEuNzk2LS4wMTMgNC42Ny0zLjYxNUM1Ljg1MS45IDYuOTMuMDA2IDggMGMxLjA3LS4wMDYgMi4xNDguODg3IDMuMzQzIDIuMzg1QzE0LjIzMyA2LjAwNSAxNiA2IDE2IDZIMHoiIGZpbGw9InJnYmEoMCwgOCwgMTYsIDAuMikiLz48L3N2Zz4=);background-size:16px 6px;width:16px;height:6px}:root{--onto-tooltip-background-color:var(--secondary-color, #003663)}:host{display:block}.tippy-box[data-theme=onto-tooltip]{background-color:var(--onto-tooltip-background-color);color:#FFFFFF;border-radius:0}.tippy-box[data-theme=onto-tooltip] .tippy-arrow{color:var(--onto-tooltip-background-color)}'},81491:(e,t,o)=>{o.d(t,{H:()=>r});const i='button, [href], input:not([type="hidden"]), select, textarea, [tabindex]:not([tabindex="-1"])';class r{static setDocumentBodyOverflow(e){const t=document.body.style.overflow;return document.body.style.overflow=e,t}static hideDocumentBodyOverflow(){return r.setDocumentBodyOverflow("hidden")}static focusNextElement(e,t=i){const o=Array.from(e.querySelectorAll(t));if(o.length>0){const e=o.indexOf(document.activeElement),t=o[(e+1)%o.length];t&&t.focus()}}static focusPreviousElement(e,t=i){const o=Array.from(e.querySelectorAll(t));if(o.length>0){const e=o.indexOf(document.activeElement),t=o[(e-1+o.length)%o.length];t&&t.focus()}}static preventLeavingDialog(e,t){"Tab"===t.key&&(t.preventDefault(),t.shiftKey?r.focusPreviousElement(e):r.focusNextElement(e))}static focusElement(e){const t=document.querySelector(e);null==t||t.focus()}static scrollElementIntoView(e,t={block:"nearest"}){const o=document.querySelector(e);o&&o.scrollIntoView(t)}static waitForElement(e){return new Promise((t,o)=>{const i=new MutationObserver(()=>{try{const o=document.querySelector(e);o&&(i.disconnect(),t(o))}catch(e){i.disconnect(),o(e)}});i.observe(document.body,{subtree:!0,childList:!0,attributes:!0})})}}},87050:(e,t,o)=>{o.d(t,{D:()=>i,R:()=>r});class i{constructor(){this._dropdownTooltipTrigger="manual"}get name(){return this._name}setName(e){return this._name=e,this}get nameLabelKey(){return this._nameLabelKey}setNameLabelKey(e){return this._nameLabelKey=e,this}get tooltip(){return this._tooltip}setTooltip(e){return this._tooltip=e,this}get tooltipLabelKey(){return this._tooltipLabelKey}setTooltipLabelKey(e){return this._tooltipLabelKey=e,this}get iconClass(){return this._iconClass}setIconClass(e){return this._iconClass=e,this}get value(){return this._value}setValue(e){return this._value=e,this}get dropdownTooltipTrigger(){return this._dropdownTooltipTrigger}setDropdownTooltipTrigger(e){return this._dropdownTooltipTrigger=e,this}get cssClass(){return this._cssClass}setCssClass(e){return this._cssClass=e,this}get guideSelector(){return this._guideSelector}setGuideSelector(e){return this._guideSelector=e,this}}var r;!function(e){e.SUGGESTION_SELECTED_EVENT="suggestion-selected-event",e.TABLE_VIEW="table",e.VISUAL_VIEW="visual",e.RDF_SEARCH_ICON_CLICKED="rdfSearchIconClicked"}(r||(r={}))}};
2
+ //# sourceMappingURL=10142.50847c485a7f78a9840b.bundle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"10142.50847c485a7f78a9840b.bundle.js","mappings":"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","sources":["webpack://root-config/src/components/onto-footer/onto-footer.scss","webpack://root-config/src/components/onto-footer/onto-footer.tsx","webpack://root-config/src/components/onto-repository-selector/selector-item.tsx","webpack://root-config/src/components/onto-header/onto-header.tsx","webpack://root-config/src/components/onto-header/onto-header.scss","webpack://root-config/src/components/onto-navbar/navbar-toggled-event.ts","webpack://root-config/src/components/onto-navbar/navbar-model.ts","webpack://root-config/src/components/onto-navbar/navbar-service.ts","webpack://root-config/src/components/onto-navbar/onto-navbar.scss","webpack://root-config/src/components/onto-navbar/onto-navbar.tsx","webpack://root-config/src/components/onto-permission-banner/onto-permission-banner.scss","webpack://root-config/src/components/onto-permission-banner/onto-permission-banner.tsx","webpack://root-config/src/components/onto-toastr/onto-toastr.scss","webpack://root-config/src/components/onto-toastr/onto-toastr.tsx","webpack://root-config/src/components/onto-tooltip/onto-tooltip.scss","webpack://root-config/src/components/onto-tooltip/onto-tooltip.tsx","webpack://root-config/src/utils/html-util.ts","webpack://root-config/src/models/dropdown/dropdown-item.ts","webpack://root-config/src/models/resource-search/resource-search-constants.ts"],"sourcesContent":[":host {\n display: block;\n}\n.footer-component {\n padding-left: var(--main-content-rl-padding);\n height: 1.875rem;\n}\n","import {Component, Host, h, State, Listen} from '@stencil/core';\nimport {\n ProductInfo,\n ServiceProvider,\n SubscriptionList,\n ProductInfoContextService,\n LicenseService,\n SecurityContextService,\n CookieConsent,\n CookieService, LicenseContextService, WindowService\n} from '@ontotext/workbench-api';\n\n/**\n * OntoFooter component for rendering the footer of the application.\n * This component displays information about GraphDB, RDF4J, Connectors, and Workbench versions,\n * as well as copyright information.\n */\n@Component({\n tag: 'onto-footer',\n styleUrl: 'onto-footer.scss',\n shadow: false,\n})\nexport class OntoFooter {\n /** State variable to store product information */\n @State() private productInfo: ProductInfo;\n\n /** State variable determining weather to show the cookie consent component */\n @State() private shouldShowCookieConsent: boolean;\n\n /** List of subscriptions to manage component lifecycle */\n private readonly subscriptions: SubscriptionList = new SubscriptionList();\n\n /** Current year for copyright display */\n private readonly currentYear = new Date().getFullYear();\n\n private readonly securityContextService: SecurityContextService = ServiceProvider.get(SecurityContextService);\n private readonly licenseContextService: LicenseContextService = ServiceProvider.get(LicenseContextService);\n private readonly cookieService = ServiceProvider.get(CookieService);\n\n @Listen('consentGiven')\n handleConsentGiven(): void {\n this.cookieService.acceptCookiePolicy()\n .then(() => this.shouldShowCookieConsent = false);\n }\n\n render() {\n return (\n <Host>\n <div class=\"footer-component\">\n <a href=\"http://graphdb.ontotext.com\" target=\"_blank\"\n rel=\"noopener noreferrer\">GraphDB</a>&nbsp;{this.productInfo?.productVersion} &bull;&nbsp;<a\n href=\"http://rdf4j.org\" target=\"_blank\" rel=\"noopener noreferrer\">RDF4J&nbsp;</a\n >{this.productInfo?.sesame} &bull; Connectors {this.productInfo?.connectors} &bull; Workbench {this.productInfo?.workbench} &bull; &copy;\n 2002&ndash;{this.currentYear}&nbsp;<a href=\"http://ontotext.com\" target=\"_blank\" rel=\"noopener noreferrer\">Ontotext\n AD</a>.&nbsp;<translate-label labelKey={'footer.label.all_rights_reserved'}></translate-label>\n </div>\n {this.shouldShowCookieConsent && <onto-cookie-consent></onto-cookie-consent>}\n </Host>\n );\n }\n\n // ========================\n // Lifecycle methods\n // ========================\n connectedCallback(): void {\n this.subscribeToProductInfoChange();\n this.subscribeToUserChange();\n this.subscribeToLicenseChange();\n }\n\n disconnectedCallback(): void {\n this.subscriptions.unsubscribeAll();\n }\n\n private subscribeToProductInfoChange() {\n this.subscriptions.add(ServiceProvider.get(ProductInfoContextService)\n .onProductInfoChanged(productInfo => {\n this.productInfo = productInfo;\n }));\n }\n\n private isTrackingAllowed(): boolean {\n return ServiceProvider.get(LicenseService).isTrackableLicense() && !WindowService.getWindow().wbDevMode;\n }\n\n private subscribeToUserChange(): void {\n // TODO: move to cookieService, when the authenticatedUser is available synchronously\n this.subscriptions.add(\n this.securityContextService.onAuthenticatedUserChanged(() => {\n this.setCookieConsentVisibility();\n }));\n }\n\n private setCookieConsentVisibility() {\n const user = this.securityContextService.getAuthenticatedUser();\n this.shouldShowCookieConsent = this.isTrackingAllowed() && !new CookieConsent(user?.appSettings?.COOKIE_CONSENT).policyAccepted;\n }\n\n private subscribeToLicenseChange() {\n this.subscriptions.add(\n this.licenseContextService.onLicenseChanged(() => {\n this.setCookieConsentVisibility();\n })\n )\n }\n}\n","import {FunctionalComponent, h} from '@stencil/core';\nimport {Repository} from '@ontotext/workbench-api';\n\ninterface SelectorItemProps {\n repository: Repository\n}\n\n/**\n *\n * A StencilJS functional component that renders a repository item in the repository selector dropdown. It displays the repository's\n * icon, ID, and location. If no location is specified, it shows \"Local\" as the default. This component also allows for\n * dynamic rendering of repository details as part of a list of selectable items.\n *\n * @example\n * <SelectorItemButton repository={repository}></>\n *\n */\nexport const SelectorItemButton: FunctionalComponent<SelectorItemProps> = ({repository}) => {\n return (\n <div class=\"repository-selector-dropdown-item\">\n {/* TODO: add tooltip with repository info*/}\n <i class={\"item-icon icon-repo-\" + repository.type}></i>\n <div class=\"item-label\">\n <div class=\"repository-id\">\n {repository.id}\n </div>\n {/* TODO: Check the legacy Workbench `template.html`. There are checks for when the location should be displayed. This depends on GDB-10442.*/}\n <div class=\"repository-location\">\n {repository.location ? repository.location : 'Local'}\n </div>\n </div>\n </div>\n );\n};\n\n","import {Component, Host, h, State} from '@stencil/core';\nimport {\n ServiceProvider,\n LicenseContextService,\n License,\n SubscriptionList,\n MonitoringService,\n RepositoryContextService,\n OperationStatusSummary,\n SecurityContextService,\n AuthenticatedUser,\n SecurityConfig,\n FibonacciGenerator,\n OntoToastrService,\n RepositoryLocationContextService,\n EventService,\n EventName,\n getPathName,\n isHomePage,\n NamespacesService,\n NamespacesContextService,\n RepositoryList,\n Repository,\n RepositoryService,\n LanguageService,\n LanguageContextService,\n ObjectUtil,\n getCurrentRoute, AuthenticationService, WindowService\n} from '@ontotext/workbench-api';\nimport {TranslationService} from '../../services/translation.service';\nimport {HtmlUtil} from '../../utils/html-util';\nimport {DropdownItem} from \"../../models/dropdown/dropdown-item\";\nimport {SelectorItemButton} from \"../onto-repository-selector/selector-item\";\nimport {ResourceSearchConstants} from '../../models/resource-search/resource-search-constants';\n\n/**\n * OntoHeader component for rendering the header of the application.\n * This component includes a search component, license alert (if applicable),\n * repository selector, and language selector.\n */\n@Component({\n tag: 'onto-header',\n styleUrl: 'onto-header.scss'\n})\nexport class OntoHeader {\n // ========================\n // Services\n // ========================\n private readonly monitoringService = ServiceProvider.get(MonitoringService);\n private readonly repositoryContextService = ServiceProvider.get(RepositoryContextService);\n private readonly repositoryLocationContextService = ServiceProvider.get(RepositoryLocationContextService);\n private readonly repositoryService = ServiceProvider.get(RepositoryService);\n private readonly securityContextService = ServiceProvider.get(SecurityContextService);\n private readonly toastrService = ServiceProvider.get(OntoToastrService);\n private readonly namespacesService = ServiceProvider.get(NamespacesService);\n private readonly namespaceContextService = ServiceProvider.get(NamespacesContextService);\n private readonly languageService: LanguageService = ServiceProvider.get(LanguageService);\n private readonly UPDATE_ACTIVE_OPERATION_TIME_INTERVAL = 2000;\n private readonly fibonacciGenerator = new FibonacciGenerator();\n private readonly authService = ServiceProvider.get(AuthenticationService);\n private readonly eventService = ServiceProvider.get(EventService);\n\n // ========================\n // State\n // ========================\n /** The active operations summary for all monitoring operations */\n @State() activeOperations?: OperationStatusSummary;\n /** The current license information */\n @State() license: License;\n @State() isFreeAccessEnabled: boolean\n /** Whether the search component should appear */\n @State() shouldShowSearch: boolean = true;\n @State() isHomePage = isHomePage();\n /** The list of repositories in the database. */\n @State() repositoryList: RepositoryList;\n @State() currentRoute: string;\n /** The model of the currently selected repository, if any. */\n @State() currentRepository: Repository | undefined;\n @State() securityConfig: SecurityConfig;\n\n\n // ========================\n // Private\n // ========================\n private isActiveLocationLoading = false;\n private pollingInterval: number;\n private repositoryItems: DropdownItem<Repository>[] = [];\n private totalTripletsFormatter: Intl.NumberFormat;\n /** Array of subscription cleanup functions */\n private readonly subscriptions: SubscriptionList = new SubscriptionList();\n private user: AuthenticatedUser;\n private skipUpdateActiveOperationsTimes = 0;\n\n // ========================\n // Lifecycle methods\n // ========================\n disconnectedCallback(): void {\n this.subscriptions.unsubscribeAll();\n this.stopOperationPolling();\n }\n\n connectedCallback() {\n this.currentRepository = this.repositoryContextService.getSelectedRepository();\n this.setupTotalRepositoryFormater();\n this.subscribeToEvents();\n this.currentRoute = getCurrentRoute();\n }\n\n render() {\n return (\n <Host>\n <div class=\"header-component\">\n <onto-search-icon\n class=\"rdf-search-button\"\n onClick={this.showViewResourceMessage}\n data-test='onto-show-view-resource-message'\n style={{display: this.shouldShowSearch && this.isHomePage ? 'block' : 'none'}}>\n </onto-search-icon>\n <onto-rdf-search\n data-test='onto-open-rdf-search-button'\n style={{display: this.shouldShowSearch && !this.isHomePage ? 'block' : 'none'}}>\n </onto-rdf-search>\n {this.activeOperations?.allRunningOperations.getItems().length\n ? <onto-operations-notification activeOperations={this.activeOperations}>\n </onto-operations-notification>\n : ''\n }\n {this.license && !this.license?.valid ?\n <onto-license-alert license={this.license}></onto-license-alert> : ''\n }\n <onto-repository-selector\n currentRepository={this.currentRepository}\n items={this.repositoryItems}\n repositorySizeInfoFetcher={this.repositorySizeInfoFetcher}\n totalTripletsFormatter={this.totalTripletsFormatter}\n canWriteRepo={this.canWriteRepo}>\n </onto-repository-selector>\n {this.securityConfig?.enabled && this.securityConfig?.userLoggedIn ? <onto-user-menu user={this.user} securityConfig={this.securityConfig}></onto-user-menu> : ''}\n {this.securityConfig?.enabled && !this.securityConfig?.userLoggedIn && (this.currentRoute !== 'login') ? <onto-user-login></onto-user-login> : ''}\n <onto-language-selector dropdown-alignment=\"right\"></onto-language-selector>\n </div>\n </Host>\n );\n }\n\n // ========================\n // Subscriptions\n // ========================\n private subscribeToEvents(): void {\n this.subscribeToRepositoryListChanged();\n this.subscribeToLicenseChange();\n this.subscribeToRepositoryChange();\n this.subscribeToSecurityContextChange();\n this.subscribeToActiveRepositoryLocationChange();\n this.subscribeToActiveRepoLoadingChange();\n this.subscribeToNavigationEnd();\n this.subscribeToLanguageChanged();\n }\n\n private subscribeToRepositoryListChanged(): () => void {\n return this.repositoryContextService.onRepositoryListChanged((repositories: RepositoryList) => {\n if (!repositories?.getItems().length) {\n this.resetOnMissingRepositories();\n } else {\n this.initOnRepositoryListChanged(repositories);\n }\n });\n }\n\n private subscribeToLicenseChange() {\n this.subscriptions.add(ServiceProvider.get(LicenseContextService)\n .onLicenseChanged((license) => {\n this.license = license;\n }));\n }\n\n private subscribeToRepositoryChange() {\n this.subscriptions.add(\n this.repositoryContextService.onSelectedRepositoryChanged((repository) => {\n this.currentRepository = repository;\n this.currentRepository ? this.startOperationPolling() : this.stopOperationPolling();\n this.shouldShowSearch = this.shouldShowRdfSearch();\n this.loadNamespaces();\n this.repositoryItems = this.getRepositoriesDropdownItems();\n })\n );\n }\n\n private subscribeToSecurityContextChange() {\n // TODO: This should be done by the authentication service, when the config and auth user are available synchronously\n this.subscriptions.add(this.securityContextService.onAuthenticatedUserChanged((user) => {\n this.user = user;\n }));\n this.subscriptions.add(this.securityContextService.onSecurityConfigChanged((config) => {\n this.securityConfig = config;\n }));\n }\n\n private subscribeToActiveRepositoryLocationChange() {\n this.subscriptions.add(\n this.repositoryLocationContextService.onActiveLocationChanged(() => {\n this.shouldShowSearch = this.shouldShowRdfSearch();\n })\n );\n }\n\n private subscribeToActiveRepoLoadingChange() {\n this.subscriptions.add(\n this.repositoryLocationContextService.onIsLoadingChanged((isLoading) => {\n this.isActiveLocationLoading = isLoading;\n this.shouldShowSearch = this.shouldShowRdfSearch();\n })\n );\n }\n\n private subscribeToNavigationEnd() {\n this.subscriptions.add(\n this.eventService.subscribe(\n EventName.NAVIGATION_END, () => {\n this.shouldShowSearch = this.shouldShowRdfSearch();\n this.isHomePage = isHomePage();\n this.currentRoute = getCurrentRoute();\n }\n )\n );\n }\n\n private subscribeToLanguageChanged(): void {\n this.subscriptions.add(\n ServiceProvider.get(LanguageContextService)\n .onSelectedLanguageChanged((language) => this.setupTotalRepositoryFormater(language)));\n }\n\n // ========================\n // Repository Logic\n // ========================\n private resetOnMissingRepositories(): void {\n this.repositoryItems = [];\n this.repositoryList = new RepositoryList();\n this.currentRepository = undefined;\n }\n\n private initOnRepositoryListChanged(repositories: RepositoryList): void {\n this.repositoryList = repositories;\n this.repositoryItems = this.getRepositoriesDropdownItems();\n }\n\n private getRepositoriesDropdownItems(): DropdownItem<Repository>[] {\n if (!this.repositoryList?.getItems().length) {\n return [];\n }\n this.repositoryList.sortByLocationAndId();\n let repositories: Repository[];\n if (this.currentRepository) {\n repositories = this.repositoryList.filterByRepository([this.currentRepository]);\n } else {\n repositories = this.repositoryList.getItems();\n }\n\n return repositories\n .filter((repository) => this.authService.canReadRepo(repository) || this.authService.canReadGqlRepo(repository))\n .map((repository) => {\n return new DropdownItem<Repository>()\n .setName(<SelectorItemButton repository={repository}/>)\n .setValue(repository)\n .setDropdownTooltipTrigger('mouseenter focus')\n .setGuideSelector(`repository-id-${repository.id}`)\n });\n }\n\n private canWriteRepoInLocation(_repository: Repository): boolean {\n // TODO: implement the condition when GDB-10442 is ready\n return true;\n }\n\n private readonly canWriteRepo = (repo: Repository) => {\n return this.canWriteRepoInLocation(repo);\n };\n\n private readonly repositorySizeInfoFetcher = (repo: Repository) => {\n return this.repositoryService.getRepositorySizeInfo(repo);\n };\n\n private loadNamespaces() {\n if (!this.currentRepository || !this.authService.canReadRepo(this.currentRepository)) {\n return;\n }\n // TODO: check why loaction not used maybe it is added in autorization interceptor\n this.namespacesService.getNamespaces(this.currentRepository.id)\n .then((namespaces) => this.namespaceContextService.updateNamespaces(namespaces));\n }\n\n // ========================\n // Monitoring and pooling\n // ========================\n private startOperationPolling() {\n clearInterval(this.pollingInterval);\n this.pollingInterval = WindowService.getWindow().setInterval(() => {\n\n if (this.skipUpdateActiveOperationsTimes > 0) {\n // Requested to skip this run, the number of skips is a Fibonacci sequence when errors are consecutive.\n this.skipUpdateActiveOperationsTimes--;\n return;\n }\n\n this.monitoringService\n .getOperations(this.currentRepository.id)\n .then((operations) => {\n if (!ObjectUtil.deepEqual(this.activeOperations, operations)) {\n this.activeOperations = operations;\n }\n this.fibonacciGenerator.reset();\n this.skipUpdateActiveOperationsTimes = 0;\n })\n .catch(() => {\n this.activeOperations = undefined;\n this.skipUpdateActiveOperationsTimes = this.fibonacciGenerator.next();\n });\n }, this.UPDATE_ACTIVE_OPERATION_TIME_INTERVAL);\n }\n\n private stopOperationPolling() {\n clearInterval(this.pollingInterval);\n this.activeOperations = undefined;\n }\n\n // ========================\n // Render logic\n // ========================\n private shouldShowRdfSearch(): boolean {\n return !!this.currentRepository &&\n (!this.isActiveLocationLoading || getPathName() === '/repository') &&\n this.authService.canReadRepo(this.currentRepository);\n }\n\n private readonly showViewResourceMessage= (event:MouseEvent) => {\n event.stopPropagation();\n this.toastrService.info(TranslationService.translate('rdf_search.toasts.use_view_resource'));\n this.shouldShowSearch = false;\n HtmlUtil.focusElement('#search-resource-input-home input');\n this.eventService.emit({NAME: ResourceSearchConstants.RDF_SEARCH_ICON_CLICKED})\n }\n\n // ========================\n // Language, formatting\n // ========================\n private setupTotalRepositoryFormater(language?: string): void {\n if (!language) {\n language = this.languageService.getDefaultLanguage();\n }\n this.totalTripletsFormatter = new Intl.NumberFormat(language, {\n style: 'decimal',\n minimumFractionDigits: 0,\n maximumFractionDigits: 0\n });\n }\n}\n",":host {\n display: block;\n}\n\n.header-component > * {\n height: 100%;\n}\n\n.header-component {\n display: flex;\n justify-content: flex-end;\n align-items: stretch;\n gap: 0.25em;\n margin-right: 2em;\n font-size: 1.1em;\n padding-bottom: .5rem;\n}\n","import {ComponentEvent} from \"../../models/component-event\";\n\n/**\n * Event fired when the navbar is toggled by the user.\n */\nexport class NavbarToggledEvent implements ComponentEvent {\n type: string = 'navbarToggled';\n payload: boolean;\n\n /**\n * Constructs the event.\n * @param isOpened - Whether the navbar is opened.\n */\n constructor(isOpened: boolean) {\n this.payload = isOpened;\n }\n}\n","/**\n * The UI model for the navbar component.\n */\nexport class NavbarModel {\n /**\n * The model is private and should not be accessed directly. Use the provided methods to interact with the model.\n */\n private readonly _items: NavbarItemModel[];\n\n /**\n * Creates a new instance of the navbar model.\n * @param items The model items. If no items are provided, the model will be empty by default.\n */\n constructor(items: NavbarItemModel[] = []) {\n this._items = items;\n }\n\n hasParent(parentLabel: string): boolean {\n return this._items.some((parentItem) => parentLabel === parentItem.label);\n }\n\n /**\n * Clones the model. This method is useful when the model needs to be modified without affecting the original model.\n * @return The cloned model.\n */\n getModel(): NavbarItemModel[] {\n const cloneItem = (item: NavbarItemModel): NavbarItemModel => {\n const clonedChildren = item.children.map(cloneItem);\n return new NavbarItemModel({...item, children: clonedChildren});\n };\n return this._items.map(cloneItem);\n }\n\n /**\n * Adds a new top level item to the model. The sub menu items should be added separately as children before calling\n * this method.\n * @param item The item to be added.\n */\n addItem(item: NavbarItemModel): void {\n this._items.push(item);\n }\n\n /**\n * Returns the selected root item.\n * @return The selected root item or null if no item is selected.\n */\n getSelectedRootItem(): NavbarItemModel | undefined {\n return this._items.find((item) => item.selected);\n }\n\n /**\n * Checks if the parent of the provided item is opened.\n * @param item The menu item for which the parent needs to be checked.\n * @return True if the parent is opened, false otherwise. If the item has no parent, the method returns false.\n */\n isParentOpened(item: NavbarItemModel): boolean {\n return !!this.getParentItem(item)?.open;\n }\n\n /**\n * Returns the top level menu item with the given label.\n * @param parent The label of the top level menu item. Each menu item has a label which identifies it in the model.\n * The label comes from the main menu plugin definition and should be unique for each menu item.\n * @return The top level menu item or undefined if no item is found.\n */\n getTopLevelItem(parent: string) {\n return this._items.find((item) => item.label === parent);\n }\n\n /**\n * Returns the top level menu item with the same label as the parent property of the provided item.\n * @param item The menu item for which the parent is needed.\n * @return The parent menu item or undefined if no parent is found.\n */\n getParentItem(item: NavbarItemModel): NavbarItemModel {\n return this._items.find((i) => i.label === item.parent);\n }\n\n /**\n * Deselects all menu items.\n */\n deselectAll(): void {\n this.walk((item) => {\n item.selected = false;\n });\n }\n\n /**\n * Closes all opened top level menu items.\n */\n closeAll(): void {\n this.walk((item) => {\n item.open = false;\n });\n }\n\n /**\n * Deselects a top level menu item. When a menu item is selected it is highlighted in the UI.\n * @param item The top level menu item to be deselected.\n */\n deselectItem(item: NavbarItemModel): void {\n item.selected = false;\n }\n\n /**\n * Selects a top level menu item. When a menu item is selected it is highlighted in the UI.\n * @param item The top level menu item to be selected.\n */\n selectItem(item: NavbarItemModel): void {\n if (item.label) {\n item.selected = true;\n } else {\n this.selectItem(item.parentModel)\n }\n }\n\n /**\n * Checks if a top level menu item has a selected submenu.\n * @param item The top level menu item to be checked.\n * @return True if the top level menu item has a selected submenu, false otherwise.\n */\n hasSelectedSubmenu(item: NavbarItemModel): boolean {\n if (!item.children) {\n return false;\n }\n return item.children.some(child => this.hasSelection(child));\n }\n \n /**\n * Recursively checks if any submenu (child or nested) is selected.\n * @param {NavbarItemModel} item - The submenu item to check.\n * @return {boolean} True if selected, or if any descendant is selected.\n */\n private hasSelection(item: NavbarItemModel): boolean {\n if (item.selected) {\n return true;\n }\n if (item.children) {\n return item.children.some(child => this.hasSelection(child));\n }\n return false;\n }\n\n /**\n * Marks an opened top level menu item as closed. If the item has a selected submenu, then the top level menu item\n * is marked as selected to indicate that the submenu is active.\n */\n closeOpened(): void {\n const opened = this._items.find((item) => item.open);\n if (opened) {\n if (this.hasSelectedSubmenu(opened)) {\n this.selectItem(opened);\n }\n opened.open = false;\n }\n }\n\n /**\n * Opens a top level menu item and closes all other top level menu items.\n * @param item The top level menu item to be opened.\n */\n open(item: NavbarItemModel): void {\n this.walk((item) => {\n item.open = false;\n });\n this.openItemAndParent(item);\n }\n\n private openItemAndParent(item: NavbarItemModel) {\n if (item.parentModel) {\n this.openItemAndParent(item.parentModel);\n }\n item.open = true;\n }\n\n /**\n * Closes all top level menu items except the one that is the parent of the current item.\n * @param currentItem The current menu item.\n */\n closeOtherParents(currentItem: NavbarItemModel): void {\n const parent = currentItem.parent;\n this.walk((item) => {\n if (item.label !== parent) {\n item.open = false;\n }\n });\n }\n\n /**\n * Highlights the selected menu item by selecting its parent if it has one.\n * This is useful when the navbar is collapsed. This operation is the opposite of the unhighlightSelected method.\n */\n highlightSelected() {\n const selectedItem = this.getSelectedItem();\n if (selectedItem?.hasParent) {\n this.selectItem(this.getParentItem(selectedItem));\n }\n }\n\n /**\n * Unhighlights the selected opened menu item if it has a submenu. This is useful when the navbar is going to be expanded.\n * This operation is the opposite of the highlightSelected method.\n */\n unhighlightSelected() {\n const selectedRootItem = this.getSelectedRootItem();\n if (selectedRootItem && selectedRootItem.children.length && selectedRootItem.open) {\n this.deselectItem(selectedRootItem);\n }\n }\n\n /**\n * Finds out the selected menu item. It can be a top level menu item or a submenu item.\n * @return The selected menu item or null if no item is selected.\n */\n getSelectedItem(): NavbarItemModel {\n let selectedItem: NavbarItemModel = null;\n\n const findSelected = (item: NavbarItemModel) => {\n if (item.selected) {\n selectedItem = item;\n return true;\n }\n if (item.children) {\n for (const child of item.children) {\n if (findSelected(child)) {\n return true;\n }\n }\n }\n return false;\n };\n\n this._items.some(findSelected);\n return selectedItem;\n }\n\n expandSelected(): void {\n const selectedItem = this.getSelectedItem();\n if (selectedItem) {\n if (selectedItem.hasParent) {\n this.open(this.getParentItem(selectedItem));\n } else {\n this.open(selectedItem);\n }\n }\n }\n\n /**\n * Finds out the menu item by its href property and marks it as selected if it is a top level menu. If the menu item\n * is a sub menu, it marks its parent as opened and the sub menu item as selected.\n * @param selectedMenu The href of the menu item to be selected.\n */\n initSelected(selectedMenu: string): void {\n this.walk((item) => {\n let path = selectedMenu;\n if (item.href?.includes('*')) {\n path = this.getWildcardPath(selectedMenu, item.href);\n }\n if (item.href === path) {\n if (item.hasParent) {\n this.open(item);\n }\n this.selectItem(item);\n }\n });\n }\n\n /**\n * Compares a given path against a href pattern that may contain wildcards.\n * This function is used to match menu item hrefs that include wildcard segments.\n *\n * @param path - The actual path to compare against the href pattern.\n * @param href - The href pattern that may contain wildcards ('*').\n * @returns A string representing the matched path. If the path matches the href pattern,\n * it returns a version of the href where wildcards are preserved. If there's no match,\n * it returns the original path unchanged.\n */\n private getWildcardPath(path: string, href: string): string {\n const pathParts = path.split('/');\n const hrefParts = href.split('/');\n\n if (pathParts.length !== hrefParts.length) {\n return path; // Path and href have different number of segments, no match\n }\n\n const resultParts = [];\n\n for (let i = 0; i < hrefParts.length; i++) {\n if (hrefParts[i] === '*') {\n resultParts.push('*');\n } else if (hrefParts[i] !== pathParts[i]) {\n return path; // Mismatch in non-wildcard segment\n } else {\n resultParts.push(hrefParts[i]);\n }\n }\n\n return resultParts.join('/');\n }\n\n /**\n * Sorts the menu items by their order property.\n * @return {this} The sorted model.\n */\n sorted(): this {\n this._items\n .filter((item) => item.children)\n .forEach((item) => {\n item.children.sort(NavbarModel.compare);\n });\n this._items.sort(NavbarModel.compare);\n return this;\n }\n\n private static compare(a: NavbarItemModel, b: NavbarItemModel): number {\n return a.order - b.order;\n }\n\n /**\n * Walks recursively through the model and executes the provided callback for each item.\n * @param callback The callback to be executed for each item.\n */\n private walk(callback: (item: NavbarItemModel) => void): void {\n this.walkRecursively(this.items, callback);\n }\n \n /**\n * Recursively walks through a list of navbar items and applies the callback.\n * @param items The items to walk through.\n * @param callback The callback to execute on each item.\n */\n private walkRecursively(items: NavbarItemModel[], callback: (item: NavbarItemModel) => void): void {\n items.forEach((item) => {\n callback(item);\n if (item.children?.length) {\n this.walkRecursively(item.children, callback);\n }\n });\n }\n\n get items(): NavbarItemModel[] {\n return this._items;\n }\n}\n\n/**\n * The model for a single menu item.\n */\nexport class NavbarItemModel {\n private _order: number;\n private _label: string;\n private _labelKey: string;\n private _href: string;\n private _children: NavbarItemModel[];\n private _hasParent: boolean;\n private _parent: string;\n private _selected: boolean = false;\n private _open: boolean = false;\n private _documentationHref: string;\n private _hrefFun?: string;\n private _editions?: string;\n private _icon?: string;\n private _role?: string;\n private _guideSelector?: string;\n private _testSelector?: string;\n private _parentModel?: NavbarItemModel;\n\n constructor(data: any) {\n this._order = data.order;\n this._label = data.label;\n this._labelKey = data.labelKey;\n this._href = data.href;\n this._children = [...data.children ?? []];\n this._hasParent = data.hasParent;\n this._parent = data.parent;\n this._selected = data.selected;\n this._open = data.open;\n this._documentationHref = data.documentationHref;\n this._hrefFun = data.hrefFun;\n this._editions = data.editions;\n this._icon = data.icon;\n this._role = data.role;\n this._guideSelector = data.guideSelector;\n this._testSelector = data.testSelector;\n this._parentModel = data.parentModel;\n }\n\n addChild(child: NavbarItemModel): void {\n this.children.push(child);\n child.setParent(this);\n }\n\n addChildren(...children: NavbarItemModel[]): void {\n children.forEach((child) => {\n this.addChild(child);\n });\n }\n \n /**\n * Determines whether the current menu item has submenus.\n * In this context, items with a href value of '#' are treated as parent items\n * and are expected to have submenus. This behavior is due to the fact that\n * all top-level items are registered with href set to '#' when added to the PluginRegistry.\n *\n * @returns {boolean} True if the item is a parent (has submenus), otherwise false.\n */\n hasSubmenus(): boolean {\n return this._href === '#';\n }\n \n get parent(): string {\n return this._parent;\n }\n\n set parent(value: string) {\n this._parent = value;\n }\n\n get order(): number {\n return this._order;\n }\n\n set order(value: number) {\n this._order = value;\n }\n\n get label(): string {\n return this._label;\n }\n\n set label(value: string) {\n this._label = value;\n }\n\n get labelKey(): string {\n return this._labelKey;\n }\n\n set labelKey(value: string) {\n this._labelKey = value;\n }\n\n get documentationHref(): string {\n return this._documentationHref;\n }\n\n set documentationHref(value: string) {\n this._documentationHref = value;\n }\n\n get href(): string {\n return this._href;\n }\n\n set href(value: string) {\n this._href = value;\n }\n\n get children(): NavbarItemModel[] {\n return this._children;\n }\n\n set children(value: NavbarItemModel[]) {\n this._children = value;\n }\n\n get hasParent(): boolean {\n return this._hasParent;\n }\n\n set hasParent(value: boolean) {\n this._hasParent = value;\n }\n\n get selected(): boolean {\n return this._selected;\n }\n\n set selected(value: boolean) {\n this._selected = value;\n }\n\n get open(): boolean {\n return this._open;\n }\n\n set open(value: boolean) {\n this._open = value;\n }\n\n get hrefFun(): string {\n return this._hrefFun;\n }\n\n set hrefFun(value: string) {\n this._hrefFun = value;\n }\n\n get editions(): string {\n return this._editions;\n }\n\n set editions(value: string) {\n this._editions = value;\n }\n\n get icon(): string {\n return this._icon;\n }\n\n set icon(value: string) {\n this._icon = value;\n }\n\n get role(): string {\n return this._role;\n }\n\n set role(value: string) {\n this._role = value;\n }\n\n get guideSelector(): string {\n return this._guideSelector;\n }\n\n set guideSelector(value: string) {\n this._guideSelector = value;\n }\n\n get testSelector(): string {\n return this._testSelector;\n }\n\n set testSelector(value: string) {\n this._testSelector = value;\n }\n\n get parentModel(): NavbarItemModel {\n return this._parentModel;\n }\n\n set parentModel(value: NavbarItemModel) {\n this._parentModel = value;\n }\n\n private setParent(parent: NavbarItemModel) {\n this.parentModel = parent;\n this.hasParent = !!parent;\n }\n}\n","import {ExternalMenuItemModel, ExternalMenuModel} from \"./external-menu-model\";\nimport {NavbarItemModel, NavbarModel} from \"./navbar-model\";\n\nexport class NavbarService {\n\n static map(navbarPlugins: ExternalMenuModel): NavbarModel {\n const navbarModel = new NavbarModel();\n NavbarService.setTopLevelMenuItems(navbarPlugins, navbarModel);\n NavbarService.setSubmenuItems(navbarPlugins, navbarModel);\n return navbarModel.sorted();\n }\n\n private static setTopLevelMenuItems(navbarPlugins: ExternalMenuModel, navbarModel: NavbarModel) {\n navbarPlugins.forEach((menuPlugin) => {\n menuPlugin.items\n .filter((item) => !item.parent && item.shouldShow)\n .forEach((item) => {\n if (navbarModel.hasParent(item.label)) {\n console.warn(\"Doubled parent definition: \", item);\n } else {\n navbarModel.addItem(this.toMenuItemModel(item, undefined, item.children));\n }\n });\n });\n }\n\n private static setSubmenuItems(navbarPlugins: ExternalMenuModel, navbarModel: NavbarModel) {\n navbarPlugins.forEach((menuPlugin) => {\n menuPlugin.items\n .filter((item) => item.parent && item.shouldShow)\n .forEach((item) => {\n const topLevelItem = navbarModel.getTopLevelItem(item.parent)\n // Some submenu items in the external menu model have children which is unusual.\n // I'm not sure if and where these children are used. For now, I'm ignoring them.\n topLevelItem?.addChildren(this.toMenuItemModel(item, topLevelItem, item.children));\n });\n });\n }\n\n private static toMenuItemModel(item: ExternalMenuItemModel, parent: NavbarItemModel, children: ExternalMenuItemModel[] = []): NavbarItemModel {\n const itemModel = new NavbarItemModel({\n label: item.label,\n labelKey: item.labelKey,\n href: item.href,\n documentationHref: item.documentationHref,\n hrefFun: item.hrefFun,\n order: item.order,\n role: item.role,\n editions: item.editions,\n icon: item.icon,\n guideSelector: item.guideSelector,\n hasParent: !!parent,\n parentModel: parent,\n parent: item.parent,\n selected: false,\n testSelector: item.testSelector,\n });\n const childrenModels = children.map((childrenItem) => this.toMenuItemModel(childrenItem, itemModel, childrenItem.children));\n itemModel.addChildren(...childrenModels);\n return itemModel;\n };\n}\n",":host {\n display: block;\n}\n\n.navbar-component {\n width: 15rem;\n position: fixed;\n font-weight: 400;\n z-index: 1010;\n margin: 0;\n padding: 0;\n -moz-transition: width 0.2s ease-in; /* FF4+ */\n -o-transition: width 0.2s ease-in; /* Opera 10.5+ */\n -webkit-transition: width 0.2s ease-in; /* Saf3.2+, Chrome */\n transition: width 0.2s ease-in;\n height: 100%;\n overflow-y: auto;\n overflow-x: hidden;\n}\n\n/*Make collapsed menu with absolute position if window height is smaller than the\nmain menu height*/\n@media screen and (max-height: 475px) {\n .navbar-component.collapsed {\n position: absolute;\n }\n}\n\n.navbar-component li {\n list-style: none;\n cursor: pointer;\n}\n\n.navbar-component li a {\n color: var(--secondary-color);\n text-decoration: none;\n}\n\n.navbar-component li a.sub-menu-link:not([href=\"\"]):not([tabindex]):hover {\n // Overriding !important in _anchor.scss\n text-decoration: none !important;\n}\n\n.navbar-component .sub-menu-item a.sub-menu-link:not([href]) translate-label.menu-item {\n padding-right: 3.5px;\n}\n\n.navbar-component a:not([href]):not([tabindex]),\n.navbar-component a:not([href]):not([tabindex]):focus,\n.navbar-component a:not([href]):not([tabindex]):hover {\n color: var(--secondary-color);\n}\n\n.navbar-component a.sub-menu-link:not([href]):hover .menu-item,\n.navbar-component a.sub-menu-link[href=\"\"]:hover .menu-item {\n // Overriding !important in _anchor.scss\n text-decoration-line: underline !important;\n}\n\n.navbar-component li .menu-element-root:hover,\n.navbar-component .sub-menu li:hover {\n background-color: rgba(0, 0, 0, .1);\n // Overriding !important in _anchor.scss\n text-decoration-line: none !important;\n}\n\n.navbar-component li .menu-element-root:hover .menu-item-icon,\n.navbar-component .menu-element.open .menu-item-icon {\n transform: scale(1.1);\n}\n\n.navbar-component .menu-element.open .sub-menu .menu-item-icon {\n transform: scale(0.5);\n}\n\n.navbar-component .menu-element {\n border-bottom: 1px solid #fff;\n background-color: #f7f7f7;\n position: relative;\n}\n\n.navbar-component .menu-element-root {\n padding: 0.8em 2.5em 0.8em 0.8em;\n display: block;\n line-height: 2.5rem;\n position: relative;\n z-index: 100;\n -moz-transition: all 0.18s ease-out; /* FF4+ */\n -o-transition: all 0.18s ease-out; /* Opera 10.5+ */\n -webkit-transition: all 0.18s ease-out; /* Saf3.2+, Chrome */\n transition: all 0.18s ease-out;\n color: var(--secondary-color);\n cursor: pointer;\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n}\n\n.navbar-component .menu-item-icon {\n font-size: 2.5rem;\n width: 2.5rem;\n vertical-align: middle;\n text-align: center;\n color: var(--primary-color);\n transform: scale(0.9);\n display: inline-block;\n -moz-transition: all 0.18s ease-out; /* FF4+ */\n -o-transition: all 0.18s ease-out; /* Opera 10.5+ */\n -webkit-transition: all 0.18s ease-out; /* Saf3.2+, Chrome */\n transition: all 0.18s ease-out;\n pointer-events: none;\n}\n\n.navbar-component .menu-element-root .menu-item {\n pointer-events: none;\n}\n\n.navbar-component .menu-element-root.active,\n.navbar-component .menu-element-root.active:hover {\n background-color: var(--primary-color);\n color: #fff;\n}\n\n.navbar-component .active .menu-item-icon {\n color: var(--icon-on-primary-color);\n transform: scale(1.1);\n}\n\n.navbar-component :not(.brand) .menu-element-root {\n font-size: 1.1rem;\n}\n\n.navbar-component .brand {\n background-color: var(--logo-background-color);\n}\n\n.navbar-component .brand a {\n display: block;\n position: relative;\n z-index: 5;\n}\n\n.navbar-component .product-version {\n line-height: normal;\n color: rgba(255, 255, 255, .8);\n text-transform: uppercase;\n font-size: 0.625rem;\n display: block;\n position: absolute;\n right: 0;\n bottom: 0;\n padding: 0.2em 0.5em;\n border-color: rgba(255, 255, 255, .2);\n border-style: solid;\n border-top-width: 1px;\n border-left-width: 1px;\n border-bottom-width: 0;\n border-right-width: 0;\n}\n\n.navbar-component .menu-element.open,\n.navbar-component.collapsed .menu-element:hover {\n background-color: #dcdcdc;\n}\n\n.navbar-component .sub-menu {\n position: relative;\n padding: 0;\n z-index: 110;\n}\n\n.navbar-component .sub-menu li {\n display: none;\n}\n\n.navbar-component .sub-menu li a {\n padding: 0.5em 0.8em;\n display: block;\n}\n\n.navbar-component .sub-menu li.active a {\n background-color: var(--primary-color);\n font-weight: 500;\n color: #fff;\n}\n\n.navbar-component .menu-element.open ul li {\n display: block;\n}\n\n.navbar-component .menu-element ul:before, .rdf-list ul.datasource:before {\n font-family: 'icomoon', sans-serif !important;\n content: \"\\e921\";\n display: block;\n font-size: 1.5em;\n position: absolute;\n top: -3.3rem;\n right: 1rem;\n -moz-transition: all 0.2s ease-in; /* FF4+ */\n -o-transition: all 0.2s ease-in; /* Opera 10.5+ */\n -webkit-transition: all 0.2s ease-in; /* Saf3.2+, Chrome */\n transition: all 0.2s ease-in;\n pointer-events: none;\n}\n\n.navbar-component .menu-element.open ul:before, .rdf-list ul.open.datasource:before {\n transform: rotate(180deg);\n}\n\n.toggle-menu {\n display: block;\n position: absolute;\n top: 0;\n right: 0;\n color: #fff;\n font-size: 0.8em;\n line-height: 1.5;\n padding: 0 0.3em;\n background-color: rgba(255, 255, 255, .1);\n z-index: 10;\n cursor: pointer;\n}\n\n.toggle-menu:hover {\n background-color: var(--primary-color);\n}\n\n.toggle-menu [class^=\"icon-\"] {\n -moz-transition: all 0.2s ease-in; /* FF4+ */\n -o-transition: all 0.2s ease-in; /* Opera 10.5+ */\n -webkit-transition: all 0.2s ease-in; /* Saf3.2+, Chrome */\n transition: all 0.2s ease-in;\n display: inline-block;\n}\n\n.toggle-menu:hover [class^=\"icon-\"] {\n transform: scale(1.1);\n}\n\n.small-logo {\n width: 50px;\n height: 50px;\n}\n\n.big-logo {\n width: 180px;\n height: 50px;\n}\n\n.navbar-component.collapsed {\n width: 4.375rem;\n overflow: visible;\n height: auto;\n}\n\n.navbar-component.collapsed .menu-element.open .sub-menu {\n position: absolute;\n top: 0;\n left: 4.375rem;\n background-color: #EBEBEB;\n width: 15rem;\n}\n\n.navbar-component.collapsed .menu-element .menu-item,\n.navbar-component.collapsed .menu-element .sub-menu li {\n display: none;\n}\n\n.navbar-component.collapsed .menu-element.open .menu-item,\n.navbar-component.collapsed .menu-element.open .sub-menu li {\n display: block;\n}\n\n.navbar-component.collapsed .menu-element.open .menu-element-root .menu-item {\n display: none;\n}\n\n.navbar-component.collapsed .menu-element-root {\n overflow: visible;\n}\n\n.navbar-component .menu-element.open ul li.submenu-title,\n.navbar-component .submenu-title {\n display: none;\n}\n\n.navbar-component.collapsed .menu-element.open ul li.submenu-title {\n display: block;\n font-size: 1.2em;\n font-weight: 500;\n border-bottom: 1px solid rgba(0, 0, 0, 0.1);\n text-overflow: ellipsis;\n overflow: hidden;\n padding: 0.5em 0.8rem 0.2em 0;\n color: var(--secondary-color);\n margin-left: 0.8rem;\n margin-bottom: 0.5em;\n}\n\n.navbar-component .sub-menu li.submenu-title:hover {\n background-color: transparent;\n}\n\n.navbar-component.collapsed .menu-element.open .sub-menu.align-bottom {\n bottom: 0;\n top: auto;\n}\n\n.navbar-component.collapsed .menu-element ul:before {\n display: none;\n}\n\n.navbar-component.collapsed .brand a {\n padding: 0.4rem;\n}\n\n.navbar-component.collapsed .product-version {\n display: none;\n}\n\n.navbar-component.collapsed .small-logo, .navbar-component .big-logo {\n display: block;\n}\n\n.navbar-component .small-logo, .navbar-component.collapsed .big-logo {\n display: none;\n}\n","import {\n Component,\n Element,\n Event,\n EventEmitter,\n Fragment,\n h,\n Host,\n Prop,\n State,\n Watch\n} from '@stencil/core';\nimport {ExternalMenuModel} from \"./external-menu-model\";\nimport {NavbarToggledEvent} from \"./navbar-toggled-event\";\nimport {NavbarService} from \"./navbar-service\";\nimport {NavbarItemModel, NavbarModel} from \"./navbar-model\";\nimport {TranslationService} from '../../services/translation.service';\nimport {\n EventName,\n EventService, getCurrentRoute, isHomePage,\n navigateTo, openInNewTab, ProductInfo, ProductInfoContextService,\n navigate,\n ServiceProvider,\n SubscriptionList, UriUtil\n} from '@ontotext/workbench-api';\n\nconst labelKeys = {\n EXPAND: 'menu.buttons.expand',\n COLLAPSE: 'menu.buttons.collapse',\n LOGO_LINK: 'menu.logo.link.title'\n};\n\n@Component({\n tag: 'onto-navbar',\n styleUrl: 'onto-navbar.scss',\n shadow: false,\n})\nexport class OntoNavbar {\n private readonly productInfoContextService = ServiceProvider.get(ProductInfoContextService);\n private readonly subscriptions = new SubscriptionList();\n\n private labels = {\n [labelKeys.EXPAND]: TranslationService.translate(labelKeys.EXPAND),\n [labelKeys.COLLAPSE]:TranslationService.translate(labelKeys.COLLAPSE),\n [labelKeys.LOGO_LINK]: TranslationService.translate(labelKeys.LOGO_LINK)\n }\n\n private productInfo: ProductInfo;\n /**\n * Flag indicating whether the navbar is collapsed in result of toggle action initiated by the user. This is needed\n * in cases where the browser window is resized which is an operation that should not override the user's choice\n * regarding the navbar collapsed state, e.g. if the user has manually collapsed the navbar and then resizes the\n * window, the navbar should remain collapsed.\n */\n private isCollapsedByUser = false;\n\n @Element() hostElement: HTMLOntoNavbarElement;\n\n /**\n * The internal menu model used for UI rendering.\n */\n @State() private menuModel: NavbarModel;\n\n /**\n * Controls the expanded/collapsed state of the navbar.\n */\n @State() private isCollapsed = false;\n\n /**\n * Configuration whether the navbar should be collapsed.\n */\n @Prop() navbarCollapsed: boolean;\n\n @Watch('navbarCollapsed')\n navbarCollapsedChange(collapsed: boolean) {\n this.isCollapsed = !collapsed;\n if (this.isCollapsed && !this.isCollapsedByUser) {\n this.expandNavbar();\n } else {\n this.collapseNavbar();\n }\n this.navbarToggled.emit(new NavbarToggledEvent(this.isCollapsed));\n }\n\n /**\n * Configuration for the menu items model. This is the external model that is used to build the internal model.\n */\n @Prop() menuItems: ExternalMenuModel;\n\n @Watch('menuItems')\n menuItemsChanged(menuItems: ExternalMenuModel) {\n this.init(menuItems);\n }\n\n /**\n * Event fired when the navbar is toggled.\n */\n @Event() navbarToggled: EventEmitter<NavbarToggledEvent>;\n\n private init(menuItems: ExternalMenuModel): void {\n const internalModel = NavbarService.map(menuItems || []);\n internalModel.initSelected(getCurrentRoute());\n this.menuModel = internalModel;\n }\n\n private select(event: MouseEvent, menuItem: NavbarItemModel) {\n event.preventDefault();\n if (menuItem.documentationHref) {\n const externalLink = UriUtil.resolveDocumentationUrl(this.productInfo?.productVersion, menuItem.documentationHref);\n openInNewTab(externalLink);\n return;\n }\n\n // Skip navigation when the selected item is a parent menu because it has no associated navigation.\n if (!menuItem.hasSubmenus()) {\n navigate(menuItem.href);\n }\n\n if (menuItem.children.length) {\n if (!menuItem.open) {\n this.menuModel.closeOpened();\n this.menuModel.open(menuItem);\n if (this.menuModel.hasSelectedSubmenu(menuItem)) {\n this.menuModel.deselectItem(menuItem);\n }\n } else {\n this.menuModel.closeAll();\n if (this.menuModel.hasSelectedSubmenu(menuItem)) {\n this.menuModel.selectItem(menuItem);\n }\n }\n } else {\n this.menuModel.closeOtherParents(menuItem);\n }\n\n // When the navbar is collapsed then find if the selected item has active children and mark the item as selected\n // to allow it to be highlighted in the collapsed state.\n if (this.isCollapsed && this.menuModel.isParentOpened(menuItem)) {\n this.menuModel.closeOpened();\n }\n\n this.refreshNavbar();\n }\n\n private subscribeToNavigationEnd() {\n this.subscriptions.add(\n ServiceProvider.get(EventService).subscribe(\n EventName.NAVIGATION_END, () => {\n this.selectItemByUrl();\n }\n )\n );\n }\n\n private selectItemByUrl() {\n if (!this.menuModel) {\n return;\n }\n this.menuModel.deselectAll();\n this.menuModel.closeAll();\n if (!isHomePage()){\n this.menuModel.initSelected(getCurrentRoute());\n }\n this.refreshNavbar();\n }\n\n private toggleNavbar(): void {\n if (!this.isCollapsed) {\n this.isCollapsedByUser = true;\n this.menuModel.highlightSelected();\n this.menuModel.closeOpened();\n this.collapseNavbar();\n } else {\n this.isCollapsedByUser = false;\n this.menuModel.expandSelected();\n this.menuModel.unhighlightSelected();\n this.expandNavbar();\n }\n this.refreshNavbar();\n this.navbarToggled.emit(new NavbarToggledEvent(this.isCollapsed));\n }\n\n private collapseNavbar(): void {\n this.hostElement.querySelector('.navbar-component').classList.add('collapsed');\n this.isCollapsed = true;\n }\n\n private expandNavbar(): void {\n if (!this.isCollapsedByUser) {\n this.hostElement.querySelector('.navbar-component').classList.remove('collapsed');\n this.isCollapsed = false;\n }\n }\n\n private refreshNavbar(): void {\n if (!this.menuModel?.items) {\n return;\n }\n this.menuModel = new NavbarModel(this.menuModel.items);\n }\n\n private onLanguageChanged(): void {\n this.refreshNavbar();\n }\n\n private onTranslate(key: string): void {\n this.subscriptions.add(\n TranslationService.onTranslate(\n key,\n [],\n (translation) => {\n this.labels[key] = translation;\n this.onLanguageChanged();\n }));\n }\n\n // ========================\n // Lifecycle methods\n // ========================\n\n componentWillLoad() {\n this.init(this.menuItems);\n }\n\n connectedCallback() {\n this.subscribeToNavigationEnd();\n this.subscribeToProductInfoChanges();\n // subscribe to language change events for each label\n this.onTranslate(labelKeys.EXPAND);\n this.onTranslate(labelKeys.COLLAPSE);\n this.onTranslate(labelKeys.LOGO_LINK);\n }\n\n disconnectedCallback() {\n this.subscriptions.unsubscribeAll();\n }\n\n private handleSelectMenuItem(item: NavbarItemModel) {\n return (event: MouseEvent) => {\n this.select(event, item);\n }\n }\n\n private toggleNavbarHandler() {\n return () => this.toggleNavbar();\n }\n\n render() {\n if (!this.menuModel) {\n return;\n }\n const logoImg1 = 'assets/graphdb-logo.svg#Layer_1';\n const logoImg2 = 'assets/graphdb-logo-sq.svg#Layer_1';\n return (\n <Host>\n <ul class=\"navbar-component\">\n <li class=\"brand\">\n <span class=\"toggle-menu\" title={\n this.isCollapsed ? this.labels[labelKeys.EXPAND] : this.labels[labelKeys.COLLAPSE]\n } onClick={this.toggleNavbarHandler()}>\n <em class={this.isCollapsed ? 'icon-caret-right' : 'icon-caret-left'}></em>\n </span>\n <a class=\"menu-element-root home-page\" onClick={navigateTo('./')}>\n <svg class=\"big-logo\">\n <desc>{this.labels[labelKeys.LOGO_LINK]}</desc>\n <use href={logoImg1}></use>\n </svg>\n <svg class=\"small-logo\">\n <desc>{this.labels[labelKeys.LOGO_LINK]}</desc>\n <use href={logoImg2}></use>\n </svg>\n </a>\n </li>\n {this.menuModel.items.map((item) => (\n <li key={item.labelKey} class={{'menu-element': true, 'open': item.open}}\n data-test={item.testSelector} guide-selector={item.guideSelector}>\n {item.children.length > 0 &&\n <Fragment>\n <div class={{'menu-element-root': true, 'active': item.selected}}\n onClick={this.handleSelectMenuItem(item)}>\n <span class={`menu-item-icon ${item.icon}`}></span>&nbsp;\n <translate-label class=\"menu-item\" labelKey={item.labelKey}></translate-label>\n </div>\n <ul class=\"sub-menu\">\n <li key={item.labelKey} class=\"submenu-title\">\n <translate-label labelKey={item.labelKey}></translate-label>\n </li>\n {\n item.children.map((submenu) => (\n <li key={submenu.labelKey} class={{'sub-menu-item': true, 'active': submenu.selected}}\n data-test={submenu.testSelector} guide-selector={submenu.guideSelector}>\n <a class=\"sub-menu-link\" href={submenu.href} onClick={this.handleSelectMenuItem(submenu)}>\n <translate-label class=\"menu-item\" labelKey={submenu.labelKey}></translate-label>\n {submenu.icon &&\n <span title=\"some title\" class={`text-muted ${submenu.icon}`}></span>\n }\n </a>\n </li>\n ))\n }\n </ul>\n </Fragment>\n }\n {item.children.length === 0 &&\n <a class={{'menu-element-root': true, 'active': item.selected}}\n href={item.href} onClick={this.handleSelectMenuItem(item)}>\n <span class={`menu-item-icon ${item.icon}`}></span>&nbsp;\n <translate-label class=\"menu-item\" labelKey={item.labelKey}></translate-label>\n </a>\n }\n </li>\n ))}\n </ul>\n </Host>\n );\n }\n\n private subscribeToProductInfoChanges() {\n this.subscriptions.add(\n this.productInfoContextService.onProductInfoChanged((productInfo: ProductInfo) => this.productInfo = productInfo)\n )\n }\n}\n",":host {\n display: block;\n}\n\n.permission-banner {\n margin: 0 1rem;\n}\n\n.permission-banner-content {\n display: flex;\n align-items: center;\n margin: 1rem;\n padding: 0 2rem 3rem 2rem;\n}\n\n.label-container {\n display: flex;\n flex-direction: column;\n margin-left: 1rem;\n}\n\n.icon-warning::before {\n font-family: 'icomoon', sans-serif;\n content: '\\e920';\n display: block;\n font-size: 1.5em;\n pointer-events: none;\n}\n","import { Component, Host, h } from '@stencil/core';\n\n@Component({\n tag: 'onto-permission-banner',\n styleUrl: 'onto-permission-banner.scss',\n shadow: false,\n})\nexport class OntoPermissionBanner {\n render() {\n return (\n <Host class=\"permission-banner\">\n <p class=\"permission-banner-content onto-alert onto-alert-danger\">\n <div class=\"icon-warning\"></div>\n <div class=\"label-container\">\n <translate-label labelKey={'permission_banner.no_access_error'}></translate-label>\n <translate-label labelKey={'permission_banner.change_menu_or_user_warning'}></translate-label>\n </div>\n </p>\n </Host>\n );\n }\n}\n",".onto-toastr-container {\n position: fixed;\n z-index: 9999999;\n pointer-events: auto;\n flex-direction: column;\n\n &.bottom-right {\n bottom: 12px;\n right: 12px;\n }\n\n &.bottom-left {\n bottom: 12px;\n left: 12px;\n }\n\n & .onto-toast {\n display: flex;\n align-items: center;\n border-radius: 0;\n box-shadow: 0 0 12px rgba(0,0,0,.3);\n position: relative;\n width: 450px;\n padding: 25px 0;\n color: white;\n margin-bottom: 5px;\n overflow-wrap: break-word;\n\n &:hover {\n box-shadow: 0 0 12px #000;\n opacity: 1;\n cursor: pointer;\n }\n\n &.warning {\n background-color: var(--color-warning-dark, #A92B0A);\n }\n\n &.success {\n background-color: var(--color-success-dark, #01544D);\n }\n\n &.error {\n background-color: var(--color-danger-dark, #B71C1C);\n }\n\n &.info {\n background-color: var(--color-info-dark, #004177);\n }\n\n & i {\n font-size: 1.8rem;\n padding: 0 20px;\n color: inherit;\n\n &:hover {\n transform: none;\n }\n }\n\n & .toast-message {\n font-size: 1.2rem;\n opacity: 1;\n max-width: 370px;\n }\n }\n}\n","import {Component, h, Listen, State} from '@stencil/core';\nimport {\n ToastMessage,\n ToastType,\n ToastMessageList,\n CREATE_TOAST_EVENT,\n ToastrConfig,\n WindowService\n} from '@ontotext/workbench-api';\nimport {sanitizeHTML} from '../../utils/html-utils';\n\nconst toastTypeToIconMap = {\n [ToastType.INFO]: 'fa-circle-info',\n [ToastType.SUCCESS]: 'fa-circle-check',\n [ToastType.WARNING]: 'fa-message-lines',\n [ToastType.ERROR]: 'fa-triangle-exclamation',\n};\n\n/**\n * OntoToastr component for displaying toast notifications.\n *\n * This component manages a list of toast messages and handles their display,\n * automatic removal after timeout, and user interactions like hover behavior.\n */\n@Component({\n tag: 'onto-toastr',\n styleUrl: 'onto-toastr.scss'\n})\nexport class OntoToastr {\n /**\n * State containing the list of active toast messages\n */\n @State() private toasts: ToastMessageList = new ToastMessageList([]);\n\n /**\n * Map to track timeout IDs for each toast message\n */\n private toastToTimeout = new Map<ToastMessage, number>();\n\n /** Configuration options, such as toast timeout */\n private readonly config = ToastrConfig.getDefaultConfig();\n\n /**\n * Listen for toast creation events\n *\n * @param event - Custom event containing the toast message to be displayed\n */\n // TODO Fix jest tests are failing- usage variables in stencil decorators is enabled since 4.3.0\n // see https://github.com/stenciljs/core/issues/2924\n @Listen(CREATE_TOAST_EVENT, {target: 'body'})\n handleToastCreate(event: CustomEvent<ToastMessage>) {\n this.addToast(event.detail);\n }\n\n render() {\n return (\n <section style={{display: this.toasts.isEmpty() ? 'none' : 'flex'}}\n class={`onto-toastr-container ${this.config.position}`}>\n {this.toasts?.getItems().map((toast) => (\n <div class={`onto-toast ${toast.type}`} key={toast.id}\n onMouseEnter={this.onToastMouseEnter(toast)}\n onMouseLeave={this.onToastMouseLeave(toast)}>\n <i class={`fa-regular ${toastTypeToIconMap[toast.type]}`}></i>\n <span onClick={this.handleToastClick(toast)}\n class=\"toast-message\"\n innerHTML={sanitizeHTML(toast.message)}></span>\n </div>\n ))}\n </section>\n );\n }\n\n private onToastMouseEnter = (toast: ToastMessage): EventListener => () => {\n this.clearToastTimeout(toast);\n };\n\n private onToastMouseLeave = (toast: ToastMessage): EventListener => () => {\n this.setTimeoutForToast(toast);\n };\n\n /**\n * Adds a new toast message.\n * The message is added to the start of the list, so new toasts appear on top.\n * The toast is also set to automatically be removed after the specified timeout.\n *\n * @param toast - The toast message to be added\n */\n private addToast(toast: ToastMessage): void {\n this.toasts.addToStart(toast);\n this.setTimeoutForToast(toast);\n this.updateToastrReference();\n }\n\n /**\n * Sets a timeout for automatic removal of a toast message.\n * The value of the timeout is determined by the toast's configuration, or the default timeout, if\n * the toast hasn't provided a value\n *\n * @param toast - The toast message to set timeout for\n */\n private setTimeoutForToast(toast: ToastMessage): void {\n const timeout = WindowService.getWindow().setTimeout(() => {\n this.toasts.remove(toast);\n this.clearToastTimeout(toast);\n }, toast.config?.timeout || this.config.timeout);\n this.toastToTimeout.set(toast, timeout);\n }\n\n /**\n * Updates the toast list reference to trigger re-rendering\n */\n private updateToastrReference() {\n this.toasts = new ToastMessageList(this.toasts.getItems());\n }\n\n /**\n * Clears the timeout for a toast message and removes it from the tracking map\n * When a user hovers over a toast message, the timeout is cleared, since the toast should\n * remain visible until the user stops hovering.\n *\n * @param toast - The toast message whose timeout should be cleared\n */\n private clearToastTimeout(toast: ToastMessage) {\n const timeoutId = this.toastToTimeout.get(toast);\n clearTimeout(timeoutId);\n this.toastToTimeout.delete(toast);\n this.updateToastrReference();\n }\n\n /**\n * Handle click events on toast messages.\n * Executes the configured onClick callback for the toast message, if provided.\n * Removes the toast message, if the removeOnClick configuration is enabled.\n *\n * @param toast - The clicked toast message\n * @returns An event handler function that processes click events on the toast\n */\n private handleToastClick(toast: ToastMessage) {\n return (event: Event) => {\n if (toast.config?.onClick) {\n toast.config.onClick(event);\n }\n\n if (toast.config?.removeOnClick) {\n this.toasts.remove(toast);\n this.clearToastTimeout(toast);\n }\n }\n }\n}\n","@import '../../../node_modules/tippy.js/dist/tippy.css';\n@import '../../../node_modules/tippy.js/themes/light-border.css';\n\n:root {\n --onto-tooltip-background-color: var(--secondary-color, #003663);\n}\n\n:host {\n display: block;\n}\n\n.tippy-box[data-theme=\"onto-tooltip\"] {\n background-color: var(--onto-tooltip-background-color);\n color: #FFFFFF;\n border-radius: 0;\n\n .tippy-arrow {\n color: var(--onto-tooltip-background-color);\n }\n}\n","import {Component, h, Host, Listen} from '@stencil/core';\nimport {TooltipUtil} from \"../../utils/tooltip-util\";\n\n@Component({\n tag: 'onto-tooltip',\n styleUrl: 'onto-tooltip.scss',\n shadow: false,\n})\nexport class OntoTooltip {\n private observer: MutationObserver;\n\n /**\n * Checks if the target of the 'mouseover' event has tooltip configuration.\n * If it does, creates a tooltip instance and displays it.\n *\n * @param event - The 'mouseover' event triggered on a document element.\n */\n @Listen('mouseover', {target: 'document'})\n onMouseover(event: MouseEvent): void {\n const target = TooltipUtil.getTooltipTarget(event.target as HTMLElement);\n if (!target) {\n return;\n }\n\n const tooltipInstance = TooltipUtil.getOrCreateTooltipInstance(target);\n tooltipInstance.show();\n target.hideTooltip = () => {\n tooltipInstance.hide()\n };\n }\n\n /**\n * Destroys the tooltip if it is present.\n *\n * @param event - The 'mouseout' event triggered on a document element.\n */\n @Listen('mouseout', { target: 'document' })\n onMouseout(event: MouseEvent): void {\n const target = TooltipUtil.getTooltipTarget(event.target as HTMLElement);\n if (!target) {\n return;\n }\n const relatedTarget = event.relatedTarget as HTMLElement;\n\n // Ensure the mouse is completely outside the target and its children\n if (!relatedTarget || !target.contains(relatedTarget)) {\n const tooltipInstance = TooltipUtil.getTooltipInstance(target);\n if (tooltipInstance && tooltipInstance.props.trigger === 'manual') {\n TooltipUtil.destroyTooltip(target);\n }\n }\n }\n\n connectedCallback() {\n this.handleRemovedNodes();\n }\n\n disconnectedCallback() {\n this.observer?.disconnect();\n }\n\n render() {\n return <Host></Host>;\n }\n\n /**\n * Clears tooltips associated with elements that have been removed from the DOM.\n *\n * @param records - An array of MutationRecord objects, each representing a change to the DOM tree.\n * The function iterates over these records to find and clear tooltips for removed nodes.\n */\n private readonly clearTooltipsForRemovedElements = (records: MutationRecord[]): void => {\n for (const record of records) {\n for (const node of Array.from(record.removedNodes)) {\n if (this.removeTooltipFromNode(node)) {\n // stop iterating if a tooltip is found and destroyed,\n // since we can't have more than one tooltip\n return;\n }\n }\n }\n };\n\n /**\n * Recursively removes tooltips from a given node and its children.\n *\n * This function checks if the given node is an HTMLElement and has an associated tooltip.\n * If a tooltip is found, it is destroyed. If not, the function then recursively checks all child nodes.\n *\n * @param node - The DOM node to check for tooltips.\n * @returns A boolean indicating whether a tooltip was found and destroyed (true) or not (false).\n */\n private readonly removeTooltipFromNode = (node: Node): boolean => {\n if (node instanceof HTMLElement) {\n const tooltipInstance = TooltipUtil.getTooltipInstance(node);\n if (tooltipInstance) {\n TooltipUtil.destroyTooltip(node);\n return true;\n }\n node.childNodes.forEach(this.removeTooltipFromNode);\n }\n return false;\n };\n\n /**\n * Initializes a MutationObserver to monitor the document body for removed nodes.\n * When nodes are removed, it triggers the clearing of tooltips associated with those nodes.\n */\n private handleRemovedNodes(): void {\n this.observer = new MutationObserver(this.clearTooltipsForRemovedElements);\n this.observer.observe(document.body, {childList: true, subtree: true});\n }\n}\n","const INTERACTIVE_ELEMENTS_SELECTOR = 'button, [href], input:not([type=\"hidden\"]), select, textarea, [tabindex]:not([tabindex=\"-1\"])';\n\nexport class HtmlUtil {\n /**\n * Setter for the document body overflow property.\n *\n * @param newOverflow - the new overflow value.\n *\n * @return the old overflow value.\n */\n static setDocumentBodyOverflow(newOverflow: string): string {\n const oldOverflow = document.body.style.overflow;\n document.body.style.overflow = newOverflow;\n return oldOverflow;\n }\n\n /**\n * Hides the document body overflow.\n *\n * @return the value of overflow before set it to hidden.\n */\n static hideDocumentBodyOverflow(): string {\n return HtmlUtil.setDocumentBodyOverflow('hidden');\n }\n\n /**\n * Focuses the next element within a specified parent element based on the <code>activeElementSelector</code>, that selects all elements to be focused.\n *\n * @param parentElement - The parent element containing the focusable elements.\n * @param activeElementSelector - The CSS selector for identifying focusable elements.\n */\n static focusNextElement(parentElement: HTMLElement, activeElementSelector = INTERACTIVE_ELEMENTS_SELECTOR): void {\n const focusableElements: any [] = Array.from(parentElement.querySelectorAll(activeElementSelector));\n if (focusableElements.length > 0) {\n const currentIndex = focusableElements.indexOf(document.activeElement);\n const nextIndex = (currentIndex + 1) % focusableElements.length;\n const nextActiveElement = focusableElements[nextIndex] as HTMLElement;\n if (nextActiveElement) {\n nextActiveElement.focus();\n }\n }\n }\n\n /**\n * Focuses the previous element within a specified parent element based on the <code>activeElementSelector</code>, that selects all elements to be focused.\n *\n * @param parentElement - The parent element containing the focusable elements.\n * @param activeElementSelector - The CSS selector for identifying focusable elements.\n */\n static focusPreviousElement(parentElement: HTMLElement, activeElementSelector = INTERACTIVE_ELEMENTS_SELECTOR): void {\n const focusableElements: any[] = Array.from(parentElement.querySelectorAll(activeElementSelector));\n if (focusableElements.length > 0) {\n const currentIndex = focusableElements.indexOf(document.activeElement);\n const previousIndex = (currentIndex - 1 + focusableElements.length) % focusableElements.length;\n const previousActiveElement = focusableElements[previousIndex] as HTMLElement;\n if (previousActiveElement) {\n previousActiveElement.focus();\n }\n }\n }\n\n static preventLeavingDialog(hostElement: HTMLElement, ev: KeyboardEvent) {\n if (ev.key === 'Tab') {\n ev.preventDefault();\n if (ev.shiftKey) {\n HtmlUtil.focusPreviousElement(hostElement);\n } else {\n HtmlUtil.focusNextElement(hostElement);\n }\n }\n }\n\n /**\n * Focuses an element in the document based on the provided CSS selector.\n *\n * @param selector - A CSS selector string used to identify the element to focus.\n * This should be a valid CSS selector that uniquely identifies the target element.\n */\n static focusElement(selector: string): void {\n const element = document.querySelector(selector) as HTMLElement;\n element?.focus();\n }\n\n /**\n * Scrolls an element into the visible area of its scrollable container.\n *\n * @param elementSelector - A CSS selector string used to identify the element to scroll into view.\n * This should be a valid CSS selector that uniquely identifies the target element.\n * @param options the scroll into view options.\n */\n static scrollElementIntoView(elementSelector: string, options: ScrollIntoViewOptions = {block: 'nearest'}): void {\n const element = document.querySelector(elementSelector) as HTMLElement;\n if (!element) {\n return;\n }\n\n element.scrollIntoView(options);\n }\n\n /**\n * Waits for an element to appear in the DOM by observing DOM mutations.\n * This function creates a MutationObserver that watches for changes in the document body\n * and resolves with the element once it becomes available.\n *\n * @param selector - A CSS selector string used to identify the element to wait for.\n * This should be a valid CSS selector that uniquely identifies the target element.\n *\n * @returns A Promise that resolves with the found HTMLElement when it appears in the DOM,\n * or rejects if an error occurs during the observation process.\n */\n static waitForElement(selector: string): Promise<HTMLElement> {\n return new Promise((resolve, reject) => {\n const observer = new MutationObserver(() => {\n try {\n const element = document.querySelector(selector) as HTMLElement;\n if (element) {\n observer.disconnect();\n resolve(element);\n }\n } catch (error) {\n observer.disconnect();\n reject(error);\n }\n });\n observer.observe(document.body, { subtree: true, childList: true, attributes: true });\n });\n }\n}\n","import {Awaitable} from '@ontotext/workbench-api';\n\n/**\n * Model that holds a dropdown item configuration.\n */\nexport class DropdownItem<T> {\n /**\n * The dropdown item name. It will be used if present; otherwise, the {@link DropdownItem._nameLabelKey} will be used.\n */\n private _name: string;\n\n /**\n * The translation label key for the dropdown item name. It will be used if {@link DropdownItem._name} is not present.\n */\n private _nameLabelKey: string;\n\n /**\n * The dropdown item tooltip. It will be used if present; otherwise, the {@link DropdownItem._tooltipLabelKey} will be used.\n */\n private _tooltip: string | Awaitable<string>;\n\n /**\n * The translation label key for the dropdown item tooltip. It will be used if {@link DropdownItem._tooltipLabelKey} is not present.\n */\n private _tooltipLabelKey: string;\n\n /**\n * Specifies the events that trigger the dropdown item tooltip to appear. Multiple event names should be separated by spaces.\n */\n private _dropdownTooltipTrigger = 'manual';\n\n /**\n * Icon class for the main dropdown button.\n */\n private _iconClass: string;\n\n /**\n * The value of dropdown item. It will be emitted when the item is selected.\n * @private\n */\n private _value: T;\n\n /**\n * Custom css classes for the dropdown item.\n * @private\n */\n private _cssClass: string;\n\n /**\n * The value of the `guide-selector` attribute for a dropdown item.\n * @private\n */\n private _guideSelector: string;\n \n get name(): string {\n return this._name;\n }\n\n setName(value: string): DropdownItem<T> {\n this._name = value;\n return this;\n }\n\n get nameLabelKey(): string {\n return this._nameLabelKey;\n }\n\n setNameLabelKey(value: string): DropdownItem<T> {\n this._nameLabelKey = value;\n return this;\n }\n\n get tooltip(): string | Awaitable<string> {\n return this._tooltip;\n }\n\n setTooltip(value: string | Awaitable<string>): DropdownItem<T> {\n this._tooltip = value;\n return this;\n }\n\n get tooltipLabelKey(): string {\n return this._tooltipLabelKey;\n }\n\n setTooltipLabelKey(value: string): DropdownItem<T> {\n this._tooltipLabelKey = value;\n return this;\n }\n\n get iconClass(): string {\n return this._iconClass;\n }\n\n setIconClass(value: string): DropdownItem<T> {\n this._iconClass = value;\n return this;\n }\n\n get value(): T {\n return this._value;\n }\n\n setValue(value: T): DropdownItem<T> {\n this._value = value;\n return this;\n }\n\n get dropdownTooltipTrigger(): string {\n return this._dropdownTooltipTrigger;\n }\n\n setDropdownTooltipTrigger(value: string) : DropdownItem<T> {\n this._dropdownTooltipTrigger = value;\n return this;\n }\n\n get cssClass(): string {\n return this._cssClass;\n }\n\n setCssClass(value: string): DropdownItem<T> {\n this._cssClass = value;\n return this;\n }\n \n get guideSelector(): string {\n return this._guideSelector;\n }\n \n setGuideSelector(value: string) {\n this._guideSelector = value;\n return this;\n }\n}\n","export enum ResourceSearchConstants {\n SUGGESTION_SELECTED_EVENT = 'suggestion-selected-event',\n TABLE_VIEW = 'table',\n VISUAL_VIEW = 'visual',\n RDF_SEARCH_ICON_CLICKED = 'rdfSearchIconClicked'\n}\n"],"names":["OntoFooter","constructor","hostRef","subscriptions","SubscriptionList","currentYear","Date","getFullYear","securityContextService","ServiceProvider","get","SecurityContextService","licenseContextService","LicenseContextService","cookieService","CookieService","handleConsentGiven","this","acceptCookiePolicy","then","shouldShowCookieConsent","render","h","Host","key","class","href","target","rel","_a","productInfo","productVersion","_b","sesame","_c","connectors","_d","workbench","labelKey","connectedCallback","subscribeToProductInfoChange","subscribeToUserChange","subscribeToLicenseChange","disconnectedCallback","unsubscribeAll","add","ProductInfoContextService","onProductInfoChanged","isTrackingAllowed","LicenseService","isTrackableLicense","WindowService","getWindow","wbDevMode","onAuthenticatedUserChanged","setCookieConsentVisibility","user","getAuthenticatedUser","CookieConsent","appSettings","COOKIE_CONSENT","policyAccepted","onLicenseChanged","SelectorItemButton","repository","type","id","location","OntoHeader","monitoringService","MonitoringService","repositoryContextService","RepositoryContextService","repositoryLocationContextService","RepositoryLocationContextService","repositoryService","RepositoryService","toastrService","OntoToastrService","namespacesService","NamespacesService","namespaceContextService","NamespacesContextService","languageService","LanguageService","UPDATE_ACTIVE_OPERATION_TIME_INTERVAL","fibonacciGenerator","FibonacciGenerator","authService","AuthenticationService","eventService","EventService","shouldShowSearch","isHomePage","isActiveLocationLoading","repositoryItems","skipUpdateActiveOperationsTimes","canWriteRepo","repo","canWriteRepoInLocation","repositorySizeInfoFetcher","getRepositorySizeInfo","showViewResourceMessage","event","stopPropagation","info","TranslationService","translate","HtmlUtil","focusElement","emit","NAME","ResourceSearchConstants","RDF_SEARCH_ICON_CLICKED","stopOperationPolling","currentRepository","getSelectedRepository","setupTotalRepositoryFormater","subscribeToEvents","currentRoute","getCurrentRoute","onClick","style","display","activeOperations","allRunningOperations","getItems","length","license","valid","items","totalTripletsFormatter","securityConfig","enabled","userLoggedIn","_e","_f","subscribeToRepositoryListChanged","subscribeToRepositoryChange","subscribeToSecurityContextChange","subscribeToActiveRepositoryLocationChange","subscribeToActiveRepoLoadingChange","subscribeToNavigationEnd","subscribeToLanguageChanged","onRepositoryListChanged","repositories","initOnRepositoryListChanged","resetOnMissingRepositories","onSelectedRepositoryChanged","startOperationPolling","shouldShowRdfSearch","loadNamespaces","getRepositoriesDropdownItems","onSecurityConfigChanged","config","onActiveLocationChanged","onIsLoadingChanged","isLoading","subscribe","EventName","NAVIGATION_END","LanguageContextService","onSelectedLanguageChanged","language","repositoryList","RepositoryList","undefined","sortByLocationAndId","filterByRepository","filter","canReadRepo","canReadGqlRepo","map","DropdownItem","setName","setValue","setDropdownTooltipTrigger","setGuideSelector","_repository","getNamespaces","namespaces","updateNamespaces","clearInterval","pollingInterval","setInterval","getOperations","operations","ObjectUtil","deepEqual","reset","catch","next","getPathName","getDefaultLanguage","Intl","NumberFormat","minimumFractionDigits","maximumFractionDigits","NavbarToggledEvent","isOpened","payload","NavbarModel","_items","hasParent","parentLabel","some","parentItem","label","getModel","cloneItem","item","clonedChildren","children","NavbarItemModel","Object","assign","addItem","push","getSelectedRootItem","find","selected","isParentOpened","getParentItem","open","getTopLevelItem","parent","i","deselectAll","walk","closeAll","deselectItem","selectItem","parentModel","hasSelectedSubmenu","child","hasSelection","closeOpened","opened","openItemAndParent","closeOtherParents","currentItem","highlightSelected","selectedItem","getSelectedItem","unhighlightSelected","selectedRootItem","findSelected","expandSelected","initSelected","selectedMenu","path","includes","getWildcardPath","pathParts","split","hrefParts","resultParts","join","sorted","forEach","sort","compare","a","b","order","callback","walkRecursively","data","_selected","_open","_order","_label","_labelKey","_href","_children","_hasParent","_parent","_documentationHref","documentationHref","_hrefFun","hrefFun","_editions","editions","_icon","icon","_role","role","_guideSelector","guideSelector","_testSelector","testSelector","_parentModel","addChild","setParent","addChildren","hasSubmenus","value","NavbarService","navbarPlugins","navbarModel","setTopLevelMenuItems","setSubmenuItems","menuPlugin","shouldShow","console","warn","toMenuItemModel","topLevelItem","itemModel","childrenModels","childrenItem","labelKeys","OntoNavbar","productInfoContextService","labels","isCollapsedByUser","isCollapsed","navbarCollapsedChange","collapsed","expandNavbar","collapseNavbar","navbarToggled","menuItemsChanged","menuItems","init","internalModel","menuModel","select","menuItem","preventDefault","externalLink","UriUtil","resolveDocumentationUrl","openInNewTab","navigate","refreshNavbar","selectItemByUrl","toggleNavbar","hostElement","querySelector","classList","remove","onLanguageChanged","onTranslate","translation","componentWillLoad","subscribeToProductInfoChanges","handleSelectMenuItem","toggleNavbarHandler","title","navigateTo","Fragment","submenu","OntoPermissionBanner","toastTypeToIconMap","ToastType","INFO","SUCCESS","WARNING","ERROR","OntoToastr","toasts","ToastMessageList","toastToTimeout","Map","ToastrConfig","getDefaultConfig","onToastMouseEnter","toast","clearToastTimeout","onToastMouseLeave","setTimeoutForToast","handleToastCreate","addToast","detail","isEmpty","position","onMouseEnter","onMouseLeave","handleToastClick","innerHTML","sanitizeHTML","message","addToStart","updateToastrReference","timeout","setTimeout","set","timeoutId","clearTimeout","delete","removeOnClick","OntoTooltip","clearTooltipsForRemovedElements","records","record","node","Array","from","removedNodes","removeTooltipFromNode","HTMLElement","TooltipUtil","getTooltipInstance","destroyTooltip","childNodes","onMouseover","getTooltipTarget","tooltipInstance","getOrCreateTooltipInstance","show","hideTooltip","hide","onMouseout","relatedTarget","contains","props","trigger","handleRemovedNodes","observer","disconnect","MutationObserver","observe","document","body","childList","subtree","INTERACTIVE_ELEMENTS_SELECTOR","setDocumentBodyOverflow","newOverflow","oldOverflow","overflow","hideDocumentBodyOverflow","focusNextElement","parentElement","activeElementSelector","focusableElements","querySelectorAll","currentIndex","indexOf","activeElement","nextActiveElement","focus","focusPreviousElement","previousActiveElement","preventLeavingDialog","ev","shiftKey","selector","element","scrollElementIntoView","elementSelector","options","block","scrollIntoView","waitForElement","Promise","resolve","reject","error","attributes","_dropdownTooltipTrigger","name","_name","nameLabelKey","_nameLabelKey","setNameLabelKey","tooltip","_tooltip","setTooltip","tooltipLabelKey","_tooltipLabelKey","setTooltipLabelKey","iconClass","_iconClass","setIconClass","_value","dropdownTooltipTrigger","cssClass","_cssClass","setCssClass"],"sourceRoot":""}
@@ -1,2 +1,2 @@
1
- export const __webpack_id__=12396;export const __webpack_ids__=[12396];export const __webpack_modules__={12396:(n,o,i)=>{i.r(o),i.d(o,{default:()=>l});const l='<link href="css/graphql/graphql-playground.css?v=3.1.0-TR8" rel="stylesheet"/> <div class="graphql-playground-view"> <h1 id="title-container"> <span id="graphql-playground-title-label">{{title}}</span> <page-info-tooltip></page-info-tooltip> <div ng-if="!loadingEndpoints && graphqlEndpoints.length" class="toolbar pull-right"> <select ng-model="selectedGraphqlEndpoint" ng-options="endpoint as endpoint.label for endpoint in graphqlEndpoints" ng-change="onGraphqlEndpointChange(selectedGraphqlEndpoint)" class="form-control graphql-endpoint-selector" gdb-tooltip="{{\'graphql.playground.endpoint_selector.tooltip\' | translate}}" tooltip-placement="top"> </select> </div> </h1> <div core-errors></div> <div onto-loader-new ng-show="loadingEndpoints" class="graphql-playground-page-loader" size="100"> </div> <div class="content" ng-if="initialized"> <div class="no-endpoints-view" ng-show="!loadingEndpoints && configuration === undefined && !graphqlEndpoints.length"> <div class="alert alert-warning"> <div ng-bind-html="\'graphql.playground.message.no_schemas_in_repository\' | translate | trustAsHtml"></div> </div> </div> <div class="graphql-playground-container" ng-if="!loadingEndpoints && configuration && getActiveRepositoryNoError()"> <graphql-playground id="graphql-playground" configuration="configuration"></graphql-playground> </div> </div> </div> '}};
2
- //# sourceMappingURL=12396.17ec8dd5a8ccc622f9e0.bundle.js.map
1
+ export const __webpack_id__=12396;export const __webpack_ids__=[12396];export const __webpack_modules__={12396:(n,o,i)=>{i.r(o),i.d(o,{default:()=>l});const l='<link href="css/graphql/graphql-playground.css?v=3.1.0-TR9" rel="stylesheet"/> <div class="graphql-playground-view"> <h1 id="title-container"> <span id="graphql-playground-title-label">{{title}}</span> <page-info-tooltip></page-info-tooltip> <div ng-if="!loadingEndpoints && graphqlEndpoints.length" class="toolbar pull-right"> <select ng-model="selectedGraphqlEndpoint" ng-options="endpoint as endpoint.label for endpoint in graphqlEndpoints" ng-change="onGraphqlEndpointChange(selectedGraphqlEndpoint)" class="form-control graphql-endpoint-selector" gdb-tooltip="{{\'graphql.playground.endpoint_selector.tooltip\' | translate}}" tooltip-placement="top"> </select> </div> </h1> <div core-errors></div> <div onto-loader-new ng-show="loadingEndpoints" class="graphql-playground-page-loader" size="100"> </div> <div class="content" ng-if="initialized"> <div class="no-endpoints-view" ng-show="!loadingEndpoints && configuration === undefined && !graphqlEndpoints.length"> <div class="alert alert-warning"> <div ng-bind-html="\'graphql.playground.message.no_schemas_in_repository\' | translate | trustAsHtml"></div> </div> </div> <div class="graphql-playground-container" ng-if="!loadingEndpoints && configuration && getActiveRepositoryNoError()"> <graphql-playground id="graphql-playground" configuration="configuration"></graphql-playground> </div> </div> </div> '}};
2
+ //# sourceMappingURL=12396.cbd351b8adc2b5af44ae.bundle.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"12396.17ec8dd5a8ccc622f9e0.bundle.js","mappings":"uJAGA,QAFW,o1C","sources":["webpack://root-config/./packages/legacy-workbench/src/js/angular/graphql/templates/graphql-playground.html"],"sourcesContent":["// Module\nvar code = `<link href=\"css/graphql/graphql-playground.css?v=3.1.0-TR8\" rel=\"stylesheet\"/> <div class=\"graphql-playground-view\"> <h1 id=\"title-container\"> <span id=\"graphql-playground-title-label\">{{title}}</span> <page-info-tooltip></page-info-tooltip> <div ng-if=\"!loadingEndpoints && graphqlEndpoints.length\" class=\"toolbar pull-right\"> <select ng-model=\"selectedGraphqlEndpoint\" ng-options=\"endpoint as endpoint.label for endpoint in graphqlEndpoints\" ng-change=\"onGraphqlEndpointChange(selectedGraphqlEndpoint)\" class=\"form-control graphql-endpoint-selector\" gdb-tooltip=\"{{'graphql.playground.endpoint_selector.tooltip' | translate}}\" tooltip-placement=\"top\"> </select> </div> </h1> <div core-errors></div> <div onto-loader-new ng-show=\"loadingEndpoints\" class=\"graphql-playground-page-loader\" size=\"100\"> </div> <div class=\"content\" ng-if=\"initialized\"> <div class=\"no-endpoints-view\" ng-show=\"!loadingEndpoints && configuration === undefined && !graphqlEndpoints.length\"> <div class=\"alert alert-warning\"> <div ng-bind-html=\"'graphql.playground.message.no_schemas_in_repository' | translate | trustAsHtml\"></div> </div> </div> <div class=\"graphql-playground-container\" ng-if=\"!loadingEndpoints && configuration && getActiveRepositoryNoError()\"> <graphql-playground id=\"graphql-playground\" configuration=\"configuration\"></graphql-playground> </div> </div> </div> `;\n// Exports\nexport default code;"],"names":[],"sourceRoot":""}
1
+ {"version":3,"file":"12396.cbd351b8adc2b5af44ae.bundle.js","mappings":"uJAGA,QAFW,o1C","sources":["webpack://root-config/./packages/legacy-workbench/src/js/angular/graphql/templates/graphql-playground.html"],"sourcesContent":["// Module\nvar code = `<link href=\"css/graphql/graphql-playground.css?v=3.1.0-TR9\" rel=\"stylesheet\"/> <div class=\"graphql-playground-view\"> <h1 id=\"title-container\"> <span id=\"graphql-playground-title-label\">{{title}}</span> <page-info-tooltip></page-info-tooltip> <div ng-if=\"!loadingEndpoints && graphqlEndpoints.length\" class=\"toolbar pull-right\"> <select ng-model=\"selectedGraphqlEndpoint\" ng-options=\"endpoint as endpoint.label for endpoint in graphqlEndpoints\" ng-change=\"onGraphqlEndpointChange(selectedGraphqlEndpoint)\" class=\"form-control graphql-endpoint-selector\" gdb-tooltip=\"{{'graphql.playground.endpoint_selector.tooltip' | translate}}\" tooltip-placement=\"top\"> </select> </div> </h1> <div core-errors></div> <div onto-loader-new ng-show=\"loadingEndpoints\" class=\"graphql-playground-page-loader\" size=\"100\"> </div> <div class=\"content\" ng-if=\"initialized\"> <div class=\"no-endpoints-view\" ng-show=\"!loadingEndpoints && configuration === undefined && !graphqlEndpoints.length\"> <div class=\"alert alert-warning\"> <div ng-bind-html=\"'graphql.playground.message.no_schemas_in_repository' | translate | trustAsHtml\"></div> </div> </div> <div class=\"graphql-playground-container\" ng-if=\"!loadingEndpoints && configuration && getActiveRepositoryNoError()\"> <graphql-playground id=\"graphql-playground\" configuration=\"configuration\"></graphql-playground> </div> </div> </div> `;\n// Exports\nexport default code;"],"names":[],"sourceRoot":""}
@@ -1,2 +1,2 @@
1
- export const __webpack_id__=15535;export const __webpack_ids__=[15535];export const __webpack_modules__={15535:(e,t,s)=>{s.r(t),s.d(t,{default:()=>a});const a='<script type="text/ng-template" id="popover-content-user.html"> <h5>{{\'security.user.may\' | translate}}</h5>\n\t<ul>\n <li>{{\'security.use.gdb\' | translate}}</li>\n\t <li>{{\'security.grant.read.access\' | translate}}</li>\n\t\t<li>{{\'security.grant.read.write.access\' | translate}}</li>\n </ul> <\/script> <script type="text/ng-template" id="popover-content-repo-manager.html"> <h5>{{\'security.repo.manager.may\' | translate}}</h5>\n\t<ul>\n\t\t<li>{{\'security.use.gdb\' | translate}}</li>\n\t\t<li>{{\'security.read.write.all.repos\' | translate}}</li>\n\t\t<li>{{\'security.create.edit.delete.repos\' | translate}}</li>\n\t\t<li>{{\'security.access.monitoring\' | translate}}</li>\n\t</ul> <\/script> <script type="text/ng-template" id="popover-content-admin.html"> <h5>{{\'security.admin.may\' | translate}}</h5>\n\t<ul>\n\t\t<li>{{\'security.use.gdb\' | translate}}</li>\n\t\t<li>{{\'security.read.write.all.repos\' | translate}}</li>\n\t\t<li>{{\'security.create.edit.delete.repos\' | translate}}</li>\n\t\t<li>{{\'security.access.monitoring\' | translate}}</li>\n\t\t<li>{{\'security.attach.remote.locations\' | translate}}</li>\n\t\t<li>{{\'security.manage.users.access\' | translate}}</li>\n\t\t<li>{{\'security.manage.cluster\' | translate}}</li>\n\t\t<li>{{\'security.view.sys.info\' | translate}}</li>\n\t</ul> <\/script> <link href="css/lib/ng-tags-input/ng-tags-input.min.css?v=3.1.0-TR8" rel="stylesheet"/> <link href="css/user.css?v=3.1.0-TR8" rel="stylesheet"/> <h1> {{pageTitle}} <page-info-tooltip></page-info-tooltip> </h1> <div id="wb-user" class="wb-user" ng-hide="loader"> <form name="form" class="form newUserForm userForm editUserContainer" ng-submit="submit()" novalidate> <div class="row"> <div class="col-md-6 us-left-col"> <div class="card login-credentials" ng-hide="isOverrideAuth() || !isLocalAuthentication()"> <div class="card-block"> <h3>{{\'view.login.title\' | translate}}</h3> <div class="form-group" ng-class="{\'has-danger\': usernameError}"> <div class="input-group"> <span class="input-group-addon" gdb-tooltip="{{\'security.table.username\' | translate}}"><i class="fa-solid fa-user text-muted"></i></span> <input id="wb-user-username" placeholder="{{\'security.table.username\' | translate}}" name="username" class="form-control form-control-lg" type="text" ng-model="user.username" ng-readonly="mode !== \'add\'"> </div> <div ng-show="usernameError" class="form-control-feedback">{{usernameError}}</div> </div> <div class="form-group" ng-class="{\'has-danger\': passwordError}"> <div class="input-group"> <span class="input-group-addon" gdb-tooltip="{{\'security.password.placeholder\' | translate}}"><em class="icon-lock icon-2x text-muted"></em></span> <input id="wb-user-password" placeholder="{{passwordPlaceholder | translate}}" name="password" class="form-control form-control-lg" type="password" ng-model="user.password" ng-hide="user.external || hasExternalAuthUser()" ng-readonly="noPassword"> <span ng-show="user.external || hasExternalAuthUser()">{{\'security.auth.from.external.module\' | translate}}</span> </div> <div ng-show="passwordError" class="form-control-feedback">{{passwordError}}</div> </div> <div class="form-group" ng-class="{\'has-danger\': confirmPasswordError}" ng-hide="user.external || hasExternalAuthUser()"> <div class="input-group"> <span class="input-group-addon" gdb-tooltip="{{\'security.password.confirm\' | translate}}"><em class="icon-lock icon-2x text-muted"></em></span> <input id="wb-user-confirmpassword" placeholder="{{\'security.password.confirm\' | translate}}" name="password_confirm" class="form-control form-control-lg" type="password" ng-model="user.confirmpassword" ng-readonly="noPassword"> </div> <div ng-show="confirmPasswordError" class="form-control-feedback">{{confirmPasswordError}}</div> </div> <div> <label class="d-block"> <input type="checkbox" id="noPassword" ng-model="noPassword" ng-change="setNoPassword()"> <span ng-show="mode === \'add\'">{{\'security.dont.set.password\' | translate}} </span> <span ng-show="mode !== \'add\'">{{\'security.unset.password\' | translate}} </span> </label> </div> </div> </div> <div class="card sparql-editor-settings" id="user-settings"> <div class="card-block"> <h3>{{\'security.user.settings\' | translate}}</h3> <div id="sameas-on" class="mb-1"> <span class="sameas-label"> {{\'security.expand.sameAs.is\' | translate}} <span class="tag {{user.appSettings.DEFAULT_SAMEAS ? \'tag-primary\' : \'tag-default\'}}"> {{user.appSettings.DEFAULT_SAMEAS ? \'common.on.btn\' : \'common.off.btn\' | translate}} </span> </span> <span gdb-tooltip="{{shouldDisableSameAs() ? \'core.require.inferred\' : \'security.tooltip.click.me\' | translate}}" tooltip-placement="top" ng-click="user.appSettings.DEFAULT_SAMEAS = !user.appSettings.DEFAULT_SAMEAS" class="switch mr-0"> <input id="sameAsCheck" type="checkbox" class="switch" ng-checked="user.appSettings.DEFAULT_SAMEAS" ng-disabled="shouldDisableSameAs()"/> <label for="sameas-on"></label> </span> {{\'security.default.editor.graph\' | translate}} </div> <div id="inference-on" class="mb-1"> <span class="inference-label"> {{\'security.inference.is\' | translate}} <span class="tag {{user.appSettings.DEFAULT_INFERENCE ? \'tag-primary\' : \'tag-default\'}}"> {{user.appSettings.DEFAULT_INFERENCE ? \'common.on.btn\' : \'common.off.btn\' | translate}} </span> </span> <span gdb-tooltip="{{\'security.tooltip.click.me\' | translate}}" tooltip-placement="top" ng-click="user.appSettings.DEFAULT_INFERENCE = !user.appSettings.DEFAULT_INFERENCE" class="switch mr-0"> <input type="checkbox" class="switch" ng-checked="user.appSettings.DEFAULT_INFERENCE"/> <label for="inference-on"></label> </span> {{\'security.default.editor.graph\' | translate}} </div> <div id="schema-on" class="mb-1"> <span class="schema-label"> {{\'security.show.schema\' | translate}} <span class="tag {{user.appSettings.DEFAULT_VIS_GRAPH_SCHEMA ? \'tag-primary\' : \'tag-default\'}}"> {{user.appSettings.DEFAULT_VIS_GRAPH_SCHEMA ? \'common.on.btn\' : \'common.off.btn\' | translate}} </span> <span gdb-tooltip="{{\'security.tooltip.click.me\' | translate}}" tooltip-placement="top" ng-click="user.appSettings.DEFAULT_VIS_GRAPH_SCHEMA = !user.appSettings.DEFAULT_VIS_GRAPH_SCHEMA" class="switch mr-0"> <input type="checkbox" class="switch" ng-checked="user.appSettings.DEFAULT_VIS_GRAPH_SCHEMA"/> <label for="schema-on"></label> </span> {{\'security.default.visual.graph\' | translate}} </span> </div> <label class="d-block"> <input type="checkbox" ng-model="user.appSettings.EXECUTE_COUNT" id="defaultCount" checked="appSettings.EXECUTE_COUNT"> {{\'security.count.total.results\' | translate}} </label> <label class="d-block"> <input type="checkbox" ng-model="user.appSettings.IGNORE_SHARED_QUERIES" id="ignore-shared" checked="appSettings.IGNORE_SHARED_QUERIES"> {{\'security.ignore.shared.queries\' | translate}} </label> <label class="d-block" ng-if="showCookiePolicyLink"> <button class="btn btn-secondary show-cookie-policy-btn" ng-click="showCookiePolicy($event)">{{\'cookie.cookie_policy_url_label\' | translate}}</button> </label> </div> </div> <div class="card" id="workbench-settings" ng-if="showWorkbenchSettings"> <div class="card-block"> <h3>{{\'security.workbench.settings.title\' | translate}} <em class="icon-info text-tertiary small" gdb-tooltip="{{\'security.workbench.settings.theme.tooltip\' | translate}}"></em></h3> <div> <div class="form-group"> <label class="col-lg-2">{{\'security.workbench.settings.theme.label\' | translate}}</label> <div class="btn-group theme-selector-dropdown" uib-dropdown> <button type="button" class="btn btn-sm btn-secondary dropdown-toggle theme-selector-dropdown-btn" uib-dropdown-toggle> {{selectedTheme.label}} </button> <ul class="dropdown-menu" role="menu"> <li ng-repeat="theme in themes"> <a ng-click="setTheme(theme)" class="dropdown-item">{{theme.label}}</a> </li> </ul> </div> </div> <div class="form-group"> <label class="col-lg-2">{{\'security.workbench.settings.theme.mode.label\' | translate}}</label> <div class="radio"> <label class="px-1"> <input type="radio" value="light" ng-model="workbenchSettings.mode" ng-change="setThemeMode()"/> {{\'security.workbench.settings.theme.mode.light\' | translate}} </label> <label class="px-1"> <input type="radio" value="dark" ng-model="workbenchSettings.mode" ng-change="setThemeMode()"/> {{\'security.workbench.settings.theme.mode.dark\' | translate}} </label> </div> </div> </div> </div> </div> </div> <div class="col-md-6 us-right-col" ng-hide="!isLocalAuthentication()"> <div class="card user-role" id="user-roles"> <div class="card-block"> <h3>{{\'security.user.role\' | translate}}</h3> <label class="mr-1" uib-popover-template="\'popover-content-user.html\'" popover-trigger="mouseenter" popover-placement="bottom"> <input type="radio" ng-model="userType" id="roleUser" value="user" ng-disabled="hasEditRestrictions()"> {{\'security.user.label\' | translate}} </label> <label class="mr-1" uib-popover-template="\'popover-content-repo-manager.html\'" popover-trigger="mouseenter" popover-placement="bottom"> <input type="radio" ng-model="userType" id="roleRepoAdmin" value="repoManager" ng-disabled="hasEditRestrictions()"> {{\'security.repo.manager.label\' | translate}} </label> <label uib-popover-template="\'popover-content-admin.html\'" popover-trigger="mouseenter" popover-placement="bottom"> <input type="radio" ng-model="userType" id="roleAdmin" value="admin" ng-disabled="hasEditRestrictions()"> {{\'security.admin.label\' | translate}} </label> </div> </div> <div class="card user-custom-roles" id="user-custom-roles"> <div class="card-block"> <h3>{{\'security.user.custom_role\' | translate}}</h3> <div class="input-group"> <tags-input name="customRoleTag" class="wb-tags-input" ng-model="customRoles" min-length="1" ng-disabled="!isUser() || mode === \'settings\'" use-strings="true" add-on-space="true" add-on-comma="true" add-on-paste="true" replace-spaces-with-dashes="false" paste-split-pattern="[\\s+]" on-tag-adding="isCustomRoleValid($tag)" on-tag-added="addCustomRole($tag)" ng-keydown="checkUserInput($event)" ng-cut="removeErrorOnCut()" placeholder="{{\'security.user.add.custom_role.msg\' | translate}}" custom-prefix-tags-input></tags-input> <div class="small" ng-hide="isRoleValid"> <small>{{\'security.user.role.too.short\' | translate}}</small> </div> <div class="small prefix-warning" ng-if="form.customRoleTag.$warning"> <small>{{\'acl_management.rulestable.custom_prefix_warning.text\' | translate}}</small> </div> </div> </div> </div> <div id="user-repos" class="card user-repositories"> <div class="card-block"> <h3>{{\'security.repo.rights\' | translate}}</h3> <div class="has-danger"> <p ng-show="repositoryCheckError" class="form-control-feedback"> {{\'security.user.rights\' | translate}} </p> </div> <div class="scrollable-table"> <table class="table table-hover table-sm table-fixed bordered-table" aria-describedby="User rights table"> <thead> <tr> <th id="repositoryIdColumn" class="repository-column auth-column">{{\'security.repository.title\' | translate}}</th> <th id="readRightsColumn" class="text-xs-center read-column auth-column"><span class="auth-column-label">{{\'security.label.read\' | translate}}</span><em class="icon-eye icon-lg" gdb-tooltip="{{\'security.tooltip.read\' | translate}}"></em></th> <th id="writeRightColumn" class="text-xs-center write-column auth-column"><span class="auth-column-label">{{\'security.label.write\' | translate}}</span><em class="icon-edit icon-lg" gdb-tooltip="{{\'security.tooltip.write\' | translate}}"></em></th> <th id="graphql" class="text-xs-center auth-column graphql-column"><span class="auth-column-label">{{\'security.label.graphql\' | translate}}</span></th> </tr> <tr> <th>{{\'security.any.data.repo\' | translate}} <em class="icon-info text-tertiary" gdb-tooltip="{{\'security.data.repos\' | translate}}"></em> </th> <th class="text-xs-center"> <span ng-click="setGrantedAuthorities()"> <input class="read" type="checkbox" ng-model="grantedAuthorities.READ_REPO[\'*\']" ng-checked="hasReadPermission(\'*\')" ng-disabled="readCheckDisabled(\'*\')"> </span> </th> <th class="text-xs-center write-any"> <span ng-click="setGrantedAuthorities()"> <input class="write" type="checkbox" ng-model="grantedAuthorities.WRITE_REPO[\'*\']" ng-checked="hasWritePermission(\'*\')" ng-disabled="writeCheckDisabled(\'*\')"> </span> </th> <th class="text-xs-center"> <span ng-click="setGrantedAuthorities()"> <input class="graphql" type="checkbox" ng-model="grantedAuthorities.GRAPHQL[\'*\']" ng-checked="hasGraphqlPermission(\'*\')" ng-disabled="graphqlCheckDisabled(\'*\')"> </span> </th> </tr> </thead> <tbody> <div> <tr ng-repeat="repository in getAllAccessibleRepositories() | orderBy: [\'location\', \'id\']"> <td class="repository-name">{{repository.id}}<small><em ng-if="(hasGraphqlPermission(repository) || hasGraphqlPermission(\'*\')) && (hasReadPermission(repository) || hasReadPermission(\'*\') || hasWritePermission(repository) || hasWritePermission(\'*\'))" class="fa-kit fa-gdb-graphql graphql-icon text-info" gdb-tooltip="{{\'security.tooltip.graphql\' | translate}}"></em> &middot; {{repository.location ? repository.location : \'repo.local\' | translate}}</small></td> <td class="text-xs-center read-rights"> <span ng-click="setGrantedAuthorities()"> <input class="read" type="checkbox" ng-model="grantedAuthorities.READ_REPO[createUniqueKey(repository)]" ng-checked="hasReadPermission(repository)" ng-disabled="readCheckDisabled(repository)"> </span> </td> <td class="text-xs-center write-rights"> <span ng-click="setGrantedAuthorities()"> <input class="write" type="checkbox" ng-model="grantedAuthorities.WRITE_REPO[createUniqueKey(repository)]" ng-checked="hasWritePermission(repository)" ng-disabled="writeCheckDisabled(repository)"> </span> </td> <td class="text-xs-center graphql-rights"> <span ng-click="setGrantedAuthorities()"> <input class="graphql" type="checkbox" ng-model="grantedAuthorities.GRAPHQL[createUniqueKey(repository)]" ng-checked="hasGraphqlPermission(repository)" ng-disabled="graphqlCheckDisabled(repository)"> </span> </td> </tr> </div> </tbody> </table> </div> </div> </div> </div> </div> <div class="text-right"> <button id="wb-user-goBack" class="btn btn-secondary" type="button" ng-click="goBack()">{{\'common.cancel.btn\' | translate}}</button> <button id="wb-user-submit" class="btn btn-primary" type="submit" ng-disabled="!isRoleValid">{{saveButtonText}}</button> </div> </form> </div> <div class="ot-loader ot-main-loader" onto-loader size="50" ng-show="loader"></div> '}};
2
- //# sourceMappingURL=15535.63c90f96f9a559e46b5b.bundle.js.map
1
+ export const __webpack_id__=15535;export const __webpack_ids__=[15535];export const __webpack_modules__={15535:(e,t,s)=>{s.r(t),s.d(t,{default:()=>a});const a='<script type="text/ng-template" id="popover-content-user.html"> <h5>{{\'security.user.may\' | translate}}</h5>\n\t<ul>\n <li>{{\'security.use.gdb\' | translate}}</li>\n\t <li>{{\'security.grant.read.access\' | translate}}</li>\n\t\t<li>{{\'security.grant.read.write.access\' | translate}}</li>\n </ul> <\/script> <script type="text/ng-template" id="popover-content-repo-manager.html"> <h5>{{\'security.repo.manager.may\' | translate}}</h5>\n\t<ul>\n\t\t<li>{{\'security.use.gdb\' | translate}}</li>\n\t\t<li>{{\'security.read.write.all.repos\' | translate}}</li>\n\t\t<li>{{\'security.create.edit.delete.repos\' | translate}}</li>\n\t\t<li>{{\'security.access.monitoring\' | translate}}</li>\n\t</ul> <\/script> <script type="text/ng-template" id="popover-content-admin.html"> <h5>{{\'security.admin.may\' | translate}}</h5>\n\t<ul>\n\t\t<li>{{\'security.use.gdb\' | translate}}</li>\n\t\t<li>{{\'security.read.write.all.repos\' | translate}}</li>\n\t\t<li>{{\'security.create.edit.delete.repos\' | translate}}</li>\n\t\t<li>{{\'security.access.monitoring\' | translate}}</li>\n\t\t<li>{{\'security.attach.remote.locations\' | translate}}</li>\n\t\t<li>{{\'security.manage.users.access\' | translate}}</li>\n\t\t<li>{{\'security.manage.cluster\' | translate}}</li>\n\t\t<li>{{\'security.view.sys.info\' | translate}}</li>\n\t</ul> <\/script> <link href="css/lib/ng-tags-input/ng-tags-input.min.css?v=3.1.0-TR9" rel="stylesheet"/> <link href="css/user.css?v=3.1.0-TR9" rel="stylesheet"/> <h1> {{pageTitle}} <page-info-tooltip></page-info-tooltip> </h1> <div id="wb-user" class="wb-user" ng-hide="loader"> <form name="form" class="form newUserForm userForm editUserContainer" ng-submit="submit()" novalidate> <div class="row"> <div class="col-md-6 us-left-col"> <div class="card login-credentials" ng-hide="isOverrideAuth() || !isLocalAuthentication()"> <div class="card-block"> <h3>{{\'view.login.title\' | translate}}</h3> <div class="form-group" ng-class="{\'has-danger\': usernameError}"> <div class="input-group"> <span class="input-group-addon" gdb-tooltip="{{\'security.table.username\' | translate}}"><i class="fa-solid fa-user text-muted"></i></span> <input id="wb-user-username" placeholder="{{\'security.table.username\' | translate}}" name="username" class="form-control form-control-lg" type="text" ng-model="user.username" ng-readonly="mode !== \'add\'"> </div> <div ng-show="usernameError" class="form-control-feedback">{{usernameError}}</div> </div> <div class="form-group" ng-class="{\'has-danger\': passwordError}"> <div class="input-group"> <span class="input-group-addon" gdb-tooltip="{{\'security.password.placeholder\' | translate}}"><em class="icon-lock icon-2x text-muted"></em></span> <input id="wb-user-password" placeholder="{{passwordPlaceholder | translate}}" name="password" class="form-control form-control-lg" type="password" ng-model="user.password" ng-hide="user.external || hasExternalAuthUser()" ng-readonly="noPassword"> <span ng-show="user.external || hasExternalAuthUser()">{{\'security.auth.from.external.module\' | translate}}</span> </div> <div ng-show="passwordError" class="form-control-feedback">{{passwordError}}</div> </div> <div class="form-group" ng-class="{\'has-danger\': confirmPasswordError}" ng-hide="user.external || hasExternalAuthUser()"> <div class="input-group"> <span class="input-group-addon" gdb-tooltip="{{\'security.password.confirm\' | translate}}"><em class="icon-lock icon-2x text-muted"></em></span> <input id="wb-user-confirmpassword" placeholder="{{\'security.password.confirm\' | translate}}" name="password_confirm" class="form-control form-control-lg" type="password" ng-model="user.confirmpassword" ng-readonly="noPassword"> </div> <div ng-show="confirmPasswordError" class="form-control-feedback">{{confirmPasswordError}}</div> </div> <div> <label class="d-block"> <input type="checkbox" id="noPassword" ng-model="noPassword" ng-change="setNoPassword()"> <span ng-show="mode === \'add\'">{{\'security.dont.set.password\' | translate}} </span> <span ng-show="mode !== \'add\'">{{\'security.unset.password\' | translate}} </span> </label> </div> </div> </div> <div class="card sparql-editor-settings" id="user-settings"> <div class="card-block"> <h3>{{\'security.user.settings\' | translate}}</h3> <div id="sameas-on" class="mb-1"> <span class="sameas-label"> {{\'security.expand.sameAs.is\' | translate}} <span class="tag {{user.appSettings.DEFAULT_SAMEAS ? \'tag-primary\' : \'tag-default\'}}"> {{user.appSettings.DEFAULT_SAMEAS ? \'common.on.btn\' : \'common.off.btn\' | translate}} </span> </span> <span gdb-tooltip="{{shouldDisableSameAs() ? \'core.require.inferred\' : \'security.tooltip.click.me\' | translate}}" tooltip-placement="top" ng-click="user.appSettings.DEFAULT_SAMEAS = !user.appSettings.DEFAULT_SAMEAS" class="switch mr-0"> <input id="sameAsCheck" type="checkbox" class="switch" ng-checked="user.appSettings.DEFAULT_SAMEAS" ng-disabled="shouldDisableSameAs()"/> <label for="sameas-on"></label> </span> {{\'security.default.editor.graph\' | translate}} </div> <div id="inference-on" class="mb-1"> <span class="inference-label"> {{\'security.inference.is\' | translate}} <span class="tag {{user.appSettings.DEFAULT_INFERENCE ? \'tag-primary\' : \'tag-default\'}}"> {{user.appSettings.DEFAULT_INFERENCE ? \'common.on.btn\' : \'common.off.btn\' | translate}} </span> </span> <span gdb-tooltip="{{\'security.tooltip.click.me\' | translate}}" tooltip-placement="top" ng-click="user.appSettings.DEFAULT_INFERENCE = !user.appSettings.DEFAULT_INFERENCE" class="switch mr-0"> <input type="checkbox" class="switch" ng-checked="user.appSettings.DEFAULT_INFERENCE"/> <label for="inference-on"></label> </span> {{\'security.default.editor.graph\' | translate}} </div> <div id="schema-on" class="mb-1"> <span class="schema-label"> {{\'security.show.schema\' | translate}} <span class="tag {{user.appSettings.DEFAULT_VIS_GRAPH_SCHEMA ? \'tag-primary\' : \'tag-default\'}}"> {{user.appSettings.DEFAULT_VIS_GRAPH_SCHEMA ? \'common.on.btn\' : \'common.off.btn\' | translate}} </span> <span gdb-tooltip="{{\'security.tooltip.click.me\' | translate}}" tooltip-placement="top" ng-click="user.appSettings.DEFAULT_VIS_GRAPH_SCHEMA = !user.appSettings.DEFAULT_VIS_GRAPH_SCHEMA" class="switch mr-0"> <input type="checkbox" class="switch" ng-checked="user.appSettings.DEFAULT_VIS_GRAPH_SCHEMA"/> <label for="schema-on"></label> </span> {{\'security.default.visual.graph\' | translate}} </span> </div> <label class="d-block"> <input type="checkbox" ng-model="user.appSettings.EXECUTE_COUNT" id="defaultCount" checked="appSettings.EXECUTE_COUNT"> {{\'security.count.total.results\' | translate}} </label> <label class="d-block"> <input type="checkbox" ng-model="user.appSettings.IGNORE_SHARED_QUERIES" id="ignore-shared" checked="appSettings.IGNORE_SHARED_QUERIES"> {{\'security.ignore.shared.queries\' | translate}} </label> <label class="d-block" ng-if="showCookiePolicyLink"> <button class="btn btn-secondary show-cookie-policy-btn" ng-click="showCookiePolicy($event)">{{\'cookie.cookie_policy_url_label\' | translate}}</button> </label> </div> </div> <div class="card" id="workbench-settings" ng-if="showWorkbenchSettings"> <div class="card-block"> <h3>{{\'security.workbench.settings.title\' | translate}} <em class="icon-info text-tertiary small" gdb-tooltip="{{\'security.workbench.settings.theme.tooltip\' | translate}}"></em></h3> <div> <div class="form-group"> <label class="col-lg-2">{{\'security.workbench.settings.theme.label\' | translate}}</label> <div class="btn-group theme-selector-dropdown" uib-dropdown> <button type="button" class="btn btn-sm btn-secondary dropdown-toggle theme-selector-dropdown-btn" uib-dropdown-toggle> {{selectedTheme.label}} </button> <ul class="dropdown-menu" role="menu"> <li ng-repeat="theme in themes"> <a ng-click="setTheme(theme)" class="dropdown-item">{{theme.label}}</a> </li> </ul> </div> </div> <div class="form-group"> <label class="col-lg-2">{{\'security.workbench.settings.theme.mode.label\' | translate}}</label> <div class="radio"> <label class="px-1"> <input type="radio" value="light" ng-model="workbenchSettings.mode" ng-change="setThemeMode()"/> {{\'security.workbench.settings.theme.mode.light\' | translate}} </label> <label class="px-1"> <input type="radio" value="dark" ng-model="workbenchSettings.mode" ng-change="setThemeMode()"/> {{\'security.workbench.settings.theme.mode.dark\' | translate}} </label> </div> </div> </div> </div> </div> </div> <div class="col-md-6 us-right-col" ng-hide="!isLocalAuthentication()"> <div class="card user-role" id="user-roles"> <div class="card-block"> <h3>{{\'security.user.role\' | translate}}</h3> <label class="mr-1" uib-popover-template="\'popover-content-user.html\'" popover-trigger="mouseenter" popover-placement="bottom"> <input type="radio" ng-model="userType" id="roleUser" value="user" ng-disabled="hasEditRestrictions()"> {{\'security.user.label\' | translate}} </label> <label class="mr-1" uib-popover-template="\'popover-content-repo-manager.html\'" popover-trigger="mouseenter" popover-placement="bottom"> <input type="radio" ng-model="userType" id="roleRepoAdmin" value="repoManager" ng-disabled="hasEditRestrictions()"> {{\'security.repo.manager.label\' | translate}} </label> <label uib-popover-template="\'popover-content-admin.html\'" popover-trigger="mouseenter" popover-placement="bottom"> <input type="radio" ng-model="userType" id="roleAdmin" value="admin" ng-disabled="hasEditRestrictions()"> {{\'security.admin.label\' | translate}} </label> </div> </div> <div class="card user-custom-roles" id="user-custom-roles"> <div class="card-block"> <h3>{{\'security.user.custom_role\' | translate}}</h3> <div class="input-group"> <tags-input name="customRoleTag" class="wb-tags-input" ng-model="customRoles" min-length="1" ng-disabled="!isUser() || mode === \'settings\'" use-strings="true" add-on-space="true" add-on-comma="true" add-on-paste="true" replace-spaces-with-dashes="false" paste-split-pattern="[\\s+]" on-tag-adding="isCustomRoleValid($tag)" on-tag-added="addCustomRole($tag)" ng-keydown="checkUserInput($event)" ng-cut="removeErrorOnCut()" placeholder="{{\'security.user.add.custom_role.msg\' | translate}}" custom-prefix-tags-input></tags-input> <div class="small" ng-hide="isRoleValid"> <small>{{\'security.user.role.too.short\' | translate}}</small> </div> <div class="small prefix-warning" ng-if="form.customRoleTag.$warning"> <small>{{\'acl_management.rulestable.custom_prefix_warning.text\' | translate}}</small> </div> </div> </div> </div> <div id="user-repos" class="card user-repositories"> <div class="card-block"> <h3>{{\'security.repo.rights\' | translate}}</h3> <div class="has-danger"> <p ng-show="repositoryCheckError" class="form-control-feedback"> {{\'security.user.rights\' | translate}} </p> </div> <div class="scrollable-table"> <table class="table table-hover table-sm table-fixed bordered-table" aria-describedby="User rights table"> <thead> <tr> <th id="repositoryIdColumn" class="repository-column auth-column">{{\'security.repository.title\' | translate}}</th> <th id="readRightsColumn" class="text-xs-center read-column auth-column"><span class="auth-column-label">{{\'security.label.read\' | translate}}</span><em class="icon-eye icon-lg" gdb-tooltip="{{\'security.tooltip.read\' | translate}}"></em></th> <th id="writeRightColumn" class="text-xs-center write-column auth-column"><span class="auth-column-label">{{\'security.label.write\' | translate}}</span><em class="icon-edit icon-lg" gdb-tooltip="{{\'security.tooltip.write\' | translate}}"></em></th> <th id="graphql" class="text-xs-center auth-column graphql-column"><span class="auth-column-label">{{\'security.label.graphql\' | translate}}</span></th> </tr> <tr> <th>{{\'security.any.data.repo\' | translate}} <em class="icon-info text-tertiary" gdb-tooltip="{{\'security.data.repos\' | translate}}"></em> </th> <th class="text-xs-center"> <span ng-click="setGrantedAuthorities()"> <input class="read" type="checkbox" ng-model="grantedAuthorities.READ_REPO[\'*\']" ng-checked="hasReadPermission(\'*\')" ng-disabled="readCheckDisabled(\'*\')"> </span> </th> <th class="text-xs-center write-any"> <span ng-click="setGrantedAuthorities()"> <input class="write" type="checkbox" ng-model="grantedAuthorities.WRITE_REPO[\'*\']" ng-checked="hasWritePermission(\'*\')" ng-disabled="writeCheckDisabled(\'*\')"> </span> </th> <th class="text-xs-center"> <span ng-click="setGrantedAuthorities()"> <input class="graphql" type="checkbox" ng-model="grantedAuthorities.GRAPHQL[\'*\']" ng-checked="hasGraphqlPermission(\'*\')" ng-disabled="graphqlCheckDisabled(\'*\')"> </span> </th> </tr> </thead> <tbody> <div> <tr ng-repeat="repository in getAllAccessibleRepositories() | orderBy: [\'location\', \'id\']"> <td class="repository-name">{{repository.id}}<small><em ng-if="(hasGraphqlPermission(repository) || hasGraphqlPermission(\'*\')) && (hasReadPermission(repository) || hasReadPermission(\'*\') || hasWritePermission(repository) || hasWritePermission(\'*\'))" class="fa-kit fa-gdb-graphql graphql-icon text-info" gdb-tooltip="{{\'security.tooltip.graphql\' | translate}}"></em> &middot; {{repository.location ? repository.location : \'repo.local\' | translate}}</small></td> <td class="text-xs-center read-rights"> <span ng-click="setGrantedAuthorities()"> <input class="read" type="checkbox" ng-model="grantedAuthorities.READ_REPO[createUniqueKey(repository)]" ng-checked="hasReadPermission(repository)" ng-disabled="readCheckDisabled(repository)"> </span> </td> <td class="text-xs-center write-rights"> <span ng-click="setGrantedAuthorities()"> <input class="write" type="checkbox" ng-model="grantedAuthorities.WRITE_REPO[createUniqueKey(repository)]" ng-checked="hasWritePermission(repository)" ng-disabled="writeCheckDisabled(repository)"> </span> </td> <td class="text-xs-center graphql-rights"> <span ng-click="setGrantedAuthorities()"> <input class="graphql" type="checkbox" ng-model="grantedAuthorities.GRAPHQL[createUniqueKey(repository)]" ng-checked="hasGraphqlPermission(repository)" ng-disabled="graphqlCheckDisabled(repository)"> </span> </td> </tr> </div> </tbody> </table> </div> </div> </div> </div> </div> <div class="text-right"> <button id="wb-user-goBack" class="btn btn-secondary" type="button" ng-click="goBack()">{{\'common.cancel.btn\' | translate}}</button> <button id="wb-user-submit" class="btn btn-primary" type="submit" ng-disabled="!isRoleValid">{{saveButtonText}}</button> </div> </form> </div> <div class="ot-loader ot-main-loader" onto-loader size="50" ng-show="loader"></div> '}};
2
+ //# sourceMappingURL=15535.4f979f5a7dbe8a2658e4.bundle.js.map