graphdb-workbench 3.1.0-TR11 → 3.1.0-TR13

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 (276) hide show
  1. package/dist/{12396.0e82ea391201a21331b7.bundle.js → 12396.a4cb05c47cf17cbfd891.bundle.js} +2 -2
  2. package/dist/{12396.0e82ea391201a21331b7.bundle.js.map → 12396.a4cb05c47cf17cbfd891.bundle.js.map} +1 -1
  3. package/dist/{13486.58f89862c40c0f84cb09.bundle.js → 13486.b4c8bf17c522084e59fb.bundle.js} +2 -2
  4. package/dist/13486.b4c8bf17c522084e59fb.bundle.js.map +1 -0
  5. package/dist/13813.84b8832e83dec53d66b9.bundle.js +2 -0
  6. package/dist/13813.84b8832e83dec53d66b9.bundle.js.map +1 -0
  7. package/dist/{15535.48081afce23c62f128e9.bundle.js → 15535.aa936791f2b5dd74f7ee.bundle.js} +2 -2
  8. package/dist/{15535.48081afce23c62f128e9.bundle.js.map → 15535.aa936791f2b5dd74f7ee.bundle.js.map} +1 -1
  9. package/dist/{16162.df8405c22910f90c37ad.bundle.js → 16162.dca58b88b4d145a7fcf7.bundle.js} +2 -2
  10. package/dist/{16162.df8405c22910f90c37ad.bundle.js.map → 16162.dca58b88b4d145a7fcf7.bundle.js.map} +1 -1
  11. package/dist/{20287.1da2ac80bac0f2a8672c.bundle.js → 20287.22c94209c4a5b0aa569b.bundle.js} +2 -2
  12. package/dist/{20287.1da2ac80bac0f2a8672c.bundle.js.map → 20287.22c94209c4a5b0aa569b.bundle.js.map} +1 -1
  13. package/dist/{21136.4ab3afcde1292d1f06bd.bundle.js → 21136.b0b60f89d0aecc146390.bundle.js} +2 -2
  14. package/dist/{21136.4ab3afcde1292d1f06bd.bundle.js.map → 21136.b0b60f89d0aecc146390.bundle.js.map} +1 -1
  15. package/dist/{21142.aaa6ddd23c1aa3fb59f3.bundle.js → 21142.c1026a9490be83c3be64.bundle.js} +2 -2
  16. package/dist/{21142.aaa6ddd23c1aa3fb59f3.bundle.js.map → 21142.c1026a9490be83c3be64.bundle.js.map} +1 -1
  17. package/dist/{21170.f3fa40f23586f6ee4efc.bundle.js → 21170.4f1089c6ecb858d32307.bundle.js} +2 -2
  18. package/dist/{21170.f3fa40f23586f6ee4efc.bundle.js.map → 21170.4f1089c6ecb858d32307.bundle.js.map} +1 -1
  19. package/dist/{21195.5354c27d13a1f201dd19.bundle.js → 21195.4025ee868703a7826ae6.bundle.js} +2 -2
  20. package/dist/{21195.5354c27d13a1f201dd19.bundle.js.map → 21195.4025ee868703a7826ae6.bundle.js.map} +1 -1
  21. package/dist/23283.cc3b7fb640bcd9a0f7d2.bundle.js +2 -0
  22. package/dist/23283.cc3b7fb640bcd9a0f7d2.bundle.js.map +1 -0
  23. package/dist/24785.ff0689efffa1540e2904.bundle.js +2 -0
  24. package/dist/24785.ff0689efffa1540e2904.bundle.js.map +1 -0
  25. package/dist/25090.a073fc84568f38c40d67.bundle.js +2 -0
  26. package/dist/25090.a073fc84568f38c40d67.bundle.js.map +1 -0
  27. package/dist/{25747.d6f1641bf4600fe2570e.bundle.js → 25747.d8d9c4a6472dddad834f.bundle.js} +2 -2
  28. package/dist/{25747.d6f1641bf4600fe2570e.bundle.js.map → 25747.d8d9c4a6472dddad834f.bundle.js.map} +1 -1
  29. package/dist/{27580.53ac898e74f0bcc1ea5b.bundle.js → 27580.af47ce7d030e916c7a4e.bundle.js} +2 -2
  30. package/dist/{27580.53ac898e74f0bcc1ea5b.bundle.js.map → 27580.af47ce7d030e916c7a4e.bundle.js.map} +1 -1
  31. package/dist/28319.60fe63ffc79f8ba2cb23.bundle.js +2 -0
  32. package/dist/28319.60fe63ffc79f8ba2cb23.bundle.js.map +1 -0
  33. package/dist/{31636.be790098c5979344c509.bundle.js → 31636.fbeed6706183663eeee2.bundle.js} +2 -2
  34. package/dist/{31636.be790098c5979344c509.bundle.js.map → 31636.fbeed6706183663eeee2.bundle.js.map} +1 -1
  35. package/dist/{32489.a540e39f30922c1c5341.bundle.js → 32489.fafc19e8e0eb964a3ec5.bundle.js} +2 -2
  36. package/dist/{32489.a540e39f30922c1c5341.bundle.js.map → 32489.fafc19e8e0eb964a3ec5.bundle.js.map} +1 -1
  37. package/dist/34330.298b3fb714ce7fc0bda1.bundle.js +2 -0
  38. package/dist/34330.298b3fb714ce7fc0bda1.bundle.js.map +1 -0
  39. package/dist/{34495.e36ea443ec8352b615e6.bundle.js → 34495.bcc635daf309f60ba23b.bundle.js} +2 -2
  40. package/dist/{34495.e36ea443ec8352b615e6.bundle.js.map → 34495.bcc635daf309f60ba23b.bundle.js.map} +1 -1
  41. package/dist/36665.eda6cfdf545f2608a6c7.bundle.js +2 -0
  42. package/dist/36665.eda6cfdf545f2608a6c7.bundle.js.map +1 -0
  43. package/dist/36737.9d37e743918e6d45c10b.bundle.js +2 -0
  44. package/dist/36737.9d37e743918e6d45c10b.bundle.js.map +1 -0
  45. package/dist/{38360.f109d6e1129e9f58f7e4.bundle.js → 38360.55d84891b7ad65b37108.bundle.js} +2 -2
  46. package/dist/{38360.f109d6e1129e9f58f7e4.bundle.js.map → 38360.55d84891b7ad65b37108.bundle.js.map} +1 -1
  47. package/dist/{38644.8ad2f682465c65e84a9e.bundle.js → 38644.62bda02822616b30f0c7.bundle.js} +2 -2
  48. package/dist/{38644.8ad2f682465c65e84a9e.bundle.js.map → 38644.62bda02822616b30f0c7.bundle.js.map} +1 -1
  49. package/dist/{38843.a59a07e73a42cfb5e52d.bundle.js → 38843.28a56aadf139c5f83a07.bundle.js} +2 -2
  50. package/dist/{38843.a59a07e73a42cfb5e52d.bundle.js.map → 38843.28a56aadf139c5f83a07.bundle.js.map} +1 -1
  51. package/dist/39448.10bcf72a104ce8276328.bundle.js +2 -0
  52. package/dist/39448.10bcf72a104ce8276328.bundle.js.map +1 -0
  53. package/dist/{39518.77133465be137d37352f.bundle.js → 39518.24cdd6c870b5b026f43b.bundle.js} +2 -2
  54. package/dist/{39518.77133465be137d37352f.bundle.js.map → 39518.24cdd6c870b5b026f43b.bundle.js.map} +1 -1
  55. package/dist/{39539.60c0d00449eb3988203c.bundle.js → 39539.cb091b6ad5074999b72d.bundle.js} +2 -2
  56. package/dist/{39539.60c0d00449eb3988203c.bundle.js.map → 39539.cb091b6ad5074999b72d.bundle.js.map} +1 -1
  57. package/dist/{39874.6ca23ead080b52dc1bc6.bundle.js → 39874.ff510b958fcdbda4db58.bundle.js} +2 -2
  58. package/dist/39874.ff510b958fcdbda4db58.bundle.js.map +1 -0
  59. package/dist/4125.fd7946ca01aa51acba15.bundle.js +2 -0
  60. package/dist/4125.fd7946ca01aa51acba15.bundle.js.map +1 -0
  61. package/dist/{41453.9d5109ca609b8a870e5f.bundle.js → 41453.b696ac82dcadda585f04.bundle.js} +2 -2
  62. package/dist/{41453.9d5109ca609b8a870e5f.bundle.js.map → 41453.b696ac82dcadda585f04.bundle.js.map} +1 -1
  63. package/dist/{41621.d1b7d799116c07df17d1.bundle.js → 41621.68c5ebc2104a62e2b41d.bundle.js} +2 -2
  64. package/dist/41621.68c5ebc2104a62e2b41d.bundle.js.map +1 -0
  65. package/dist/{42129.42e556d7bd6885bba119.bundle.js → 42129.f9f2bafc4520aad7f942.bundle.js} +2 -2
  66. package/dist/{42129.42e556d7bd6885bba119.bundle.js.map → 42129.f9f2bafc4520aad7f942.bundle.js.map} +1 -1
  67. package/dist/42143.1483a9470e09485cc4e4.bundle.js +2 -0
  68. package/dist/42143.1483a9470e09485cc4e4.bundle.js.map +1 -0
  69. package/dist/{44444.834176d51f7ef0dab499.bundle.js → 44444.153ba656276a2f1bfdc3.bundle.js} +2 -2
  70. package/dist/{44444.834176d51f7ef0dab499.bundle.js.map → 44444.153ba656276a2f1bfdc3.bundle.js.map} +1 -1
  71. package/dist/{45843.49565fdfa9b426eeb208.bundle.js → 45843.2fb1782023f0992f82c1.bundle.js} +2 -2
  72. package/dist/{45843.49565fdfa9b426eeb208.bundle.js.map → 45843.2fb1782023f0992f82c1.bundle.js.map} +1 -1
  73. package/dist/51087.2e79fab6ad7c1282ee52.bundle.js +2 -0
  74. package/dist/51087.2e79fab6ad7c1282ee52.bundle.js.map +1 -0
  75. package/dist/51490.ca9c851e556c4c7940e5.bundle.js +2 -0
  76. package/dist/51490.ca9c851e556c4c7940e5.bundle.js.map +1 -0
  77. package/dist/{55862.bed529171c68ce972610.bundle.js → 55862.88796a9db69e193b8b83.bundle.js} +2 -2
  78. package/dist/{55862.bed529171c68ce972610.bundle.js.map → 55862.88796a9db69e193b8b83.bundle.js.map} +1 -1
  79. package/dist/57952.b096d19a802e06030ef0.bundle.js +2 -0
  80. package/dist/57952.b096d19a802e06030ef0.bundle.js.map +1 -0
  81. package/dist/{58306.67303bb681080a4df993.bundle.js → 58306.f76e839a5a73f4f4e23a.bundle.js} +2 -2
  82. package/dist/{58306.67303bb681080a4df993.bundle.js.map → 58306.f76e839a5a73f4f4e23a.bundle.js.map} +1 -1
  83. package/dist/{59718.f1ae3d1480c7179c57f0.bundle.js → 59718.dfd5982de2b39ccaa2ee.bundle.js} +2 -2
  84. package/dist/59718.dfd5982de2b39ccaa2ee.bundle.js.map +1 -0
  85. package/dist/67232.5a23ef1e641a2ca030c6.bundle.js +2 -0
  86. package/dist/67232.5a23ef1e641a2ca030c6.bundle.js.map +1 -0
  87. package/dist/{67888.7c67b21eb93e77d4bb70.bundle.js → 67888.1537da0fa115fd7a2f06.bundle.js} +2 -2
  88. package/dist/{67888.7c67b21eb93e77d4bb70.bundle.js.map → 67888.1537da0fa115fd7a2f06.bundle.js.map} +1 -1
  89. package/dist/68685.3ec66ceae3e494eba19b.bundle.js +2 -0
  90. package/dist/68685.3ec66ceae3e494eba19b.bundle.js.map +1 -0
  91. package/dist/{69112.817cf7b4d2911108c736.bundle.js → 69112.82e4d57df53e40b54050.bundle.js} +2 -2
  92. package/dist/69112.82e4d57df53e40b54050.bundle.js.map +1 -0
  93. package/dist/{70938.aee60e09777981a03d4c.bundle.js → 70938.fd6dd4e05b512128a074.bundle.js} +2 -2
  94. package/dist/{70938.aee60e09777981a03d4c.bundle.js.map → 70938.fd6dd4e05b512128a074.bundle.js.map} +1 -1
  95. package/dist/{72379.db460365f0917f4f179b.bundle.js → 72379.207930bac55b212354ae.bundle.js} +2 -2
  96. package/dist/{72379.db460365f0917f4f179b.bundle.js.map → 72379.207930bac55b212354ae.bundle.js.map} +1 -1
  97. package/dist/{73667.551fe5a23573c3b0af21.bundle.js → 73667.f42971a7477d6744c54c.bundle.js} +2 -2
  98. package/dist/{73667.551fe5a23573c3b0af21.bundle.js.map → 73667.f42971a7477d6744c54c.bundle.js.map} +1 -1
  99. package/dist/{73793.c064cab7716d96ea9713.bundle.js → 73793.adf7b10d53a8ee7fa07c.bundle.js} +2 -2
  100. package/dist/{73793.c064cab7716d96ea9713.bundle.js.map → 73793.adf7b10d53a8ee7fa07c.bundle.js.map} +1 -1
  101. package/dist/{73964.adb0a07a8c4dad17f592.bundle.js → 73964.fd1ad5e7aa228ad4cbbb.bundle.js} +2 -2
  102. package/dist/73964.fd1ad5e7aa228ad4cbbb.bundle.js.map +1 -0
  103. package/dist/74106.f94ca66e9fc021789d6a.bundle.js +2 -0
  104. package/dist/74106.f94ca66e9fc021789d6a.bundle.js.map +1 -0
  105. package/dist/{75282.5e1cc49318a8ae5f34cf.bundle.js → 75282.f097da30576bae97c906.bundle.js} +2 -2
  106. package/dist/{75282.5e1cc49318a8ae5f34cf.bundle.js.map → 75282.f097da30576bae97c906.bundle.js.map} +1 -1
  107. package/dist/{75849.33196fcbd48643974506.bundle.js → 75849.9c78b9889eccbaee7ae0.bundle.js} +2 -2
  108. package/dist/{75849.33196fcbd48643974506.bundle.js.map → 75849.9c78b9889eccbaee7ae0.bundle.js.map} +1 -1
  109. package/dist/{78250.9ea78ce55f322719b1d8.bundle.js → 78250.9f4b0c688bdb06967ed6.bundle.js} +2 -2
  110. package/dist/{78250.9ea78ce55f322719b1d8.bundle.js.map → 78250.9f4b0c688bdb06967ed6.bundle.js.map} +1 -1
  111. package/dist/79329.69815208f7a0b1678dc2.bundle.js +2 -0
  112. package/dist/79329.69815208f7a0b1678dc2.bundle.js.map +1 -0
  113. package/dist/{82926.93d02072a678a29fbd64.bundle.js → 82926.ce06c4bb3d76b9fe5fa9.bundle.js} +2 -2
  114. package/dist/{82926.93d02072a678a29fbd64.bundle.js.map → 82926.ce06c4bb3d76b9fe5fa9.bundle.js.map} +1 -1
  115. package/dist/86142.3f4acbd124c99af11e48.bundle.js +2 -0
  116. package/dist/86142.3f4acbd124c99af11e48.bundle.js.map +1 -0
  117. package/dist/86639.5584db5b403656b75ad4.bundle.js +2 -0
  118. package/dist/86639.5584db5b403656b75ad4.bundle.js.map +1 -0
  119. package/dist/89695.9a36bd7b51d76634b902.bundle.js +2 -0
  120. package/dist/89695.9a36bd7b51d76634b902.bundle.js.map +1 -0
  121. package/dist/{9062.c781c7dfbb1a5f907a71.bundle.js → 9062.91ba683ec5a6cb53c23f.bundle.js} +2 -2
  122. package/dist/{9062.c781c7dfbb1a5f907a71.bundle.js.map → 9062.91ba683ec5a6cb53c23f.bundle.js.map} +1 -1
  123. package/dist/94519.1b7b699d10f1278380c3.bundle.js +2 -0
  124. package/dist/94519.1b7b699d10f1278380c3.bundle.js.map +1 -0
  125. package/dist/95953.4ea6a7c68a22779ba299.bundle.js +2 -0
  126. package/dist/95953.4ea6a7c68a22779ba299.bundle.js.map +1 -0
  127. package/dist/96089.7e28823f34c450de1f7e.bundle.js +2 -0
  128. package/dist/96089.7e28823f34c450de1f7e.bundle.js.map +1 -0
  129. package/dist/98860.5ade579c8f05a0df416b.bundle.js +2 -0
  130. package/dist/98860.5ade579c8f05a0df416b.bundle.js.map +1 -0
  131. package/dist/{99448.d257ae9548057a204517.bundle.js → 99448.b2524aa8fdf2f3aee82a.bundle.js} +2 -2
  132. package/dist/{99448.d257ae9548057a204517.bundle.js.map → 99448.b2524aa8fdf2f3aee82a.bundle.js.map} +1 -1
  133. package/dist/api/ontotext-workbench-api.js +1 -1
  134. package/dist/api/ontotext-workbench-api.js.map +1 -1
  135. package/dist/css/ttyg/agent-settings-modal.css +1 -1
  136. package/dist/i18n/locale-en.json +9 -0
  137. package/dist/i18n/locale-fr.json +9 -0
  138. package/dist/index.html +8 -8
  139. package/dist/js/angular/clustermanagement/templates/cluster-nodes-configuration.html +1 -1
  140. package/dist/js/angular/core/directives/autocomplete/templates/autocomplete.html +1 -1
  141. package/dist/js/angular/core/directives/dynamic-form/templates/dynamic-form.html +1 -1
  142. package/dist/js/angular/core/directives/operations-statuses-monitor/templates/operations-statuses-monitor.html +1 -1
  143. package/dist/js/angular/core/directives/rdfresourcesearch/templates/rdfResourceSearchTemplate.html +1 -1
  144. package/dist/js/angular/core/directives/shuttle-multiselect/templates/shuttle-multiselect.html +1 -1
  145. package/dist/js/angular/core/directives/yasgui-component/templates/yasgui-component.html +1 -1
  146. package/dist/js/angular/core/templates/cookie-policy/cookie-consent.html +1 -1
  147. package/dist/js/angular/core/templates/cookie-policy/cookie-policy.html +1 -1
  148. package/dist/js/angular/core/templates/editable-content/editable-content.html +1 -1
  149. package/dist/js/angular/core/templates/markdown-content/markdown-content.html +1 -1
  150. package/dist/js/angular/core/templates/search-resource-input.html +1 -1
  151. package/dist/js/angular/graphql/templates/create-graphql-endpoint.html +2 -2
  152. package/dist/js/angular/graphql/templates/graphql-endpoint-management.html +1 -1
  153. package/dist/js/angular/graphql/templates/graphql-playground.html +1 -1
  154. package/dist/js/angular/graphql/templates/modal/endpoint-configuration-modal.html +1 -1
  155. package/dist/js/angular/graphql/templates/modal/endpoint-generation-failure-result-modal.html +1 -1
  156. package/dist/js/angular/graphql/templates/modal/import-endpoint-definition-modal.html +1 -1
  157. package/dist/js/angular/security/templates/user.html +2 -2
  158. package/dist/js/angular/ttyg/templates/agent-list.html +1 -1
  159. package/dist/js/angular/ttyg/templates/agent-select-menu.html +1 -1
  160. package/dist/js/angular/ttyg/templates/chat-item-detail.html +1 -1
  161. package/dist/js/angular/ttyg/templates/chat-list.html +1 -1
  162. package/dist/js/angular/ttyg/templates/chat-panel.html +1 -1
  163. package/dist/js/angular/ttyg/templates/modal/agent-instructions-explain-modal.html +1 -1
  164. package/dist/js/angular/ttyg/templates/modal/agent-settings-modal.html +34 -5
  165. package/dist/js/angular/ttyg/templates/modal/external-integration-configuration-modal.html +1 -1
  166. package/dist/js/angular/ttyg/templates/no-agents-view.html +1 -1
  167. package/dist/js/angular/ttyg/templates/ttyg.html +1 -1
  168. package/dist/{legacyWorkbench.f804eda735b6f1961ceb.js → legacyWorkbench.c5245455051fd0bab730.js} +3 -3
  169. package/dist/{legacyWorkbench.f804eda735b6f1961ceb.js.map → legacyWorkbench.c5245455051fd0bab730.js.map} +1 -1
  170. package/dist/{main.5a06ce3271fcd9cb93e7.js → main.fa0b99f721588e894d1d.js} +3 -3
  171. package/dist/{main.5a06ce3271fcd9cb93e7.js.map → main.fa0b99f721588e894d1d.js.map} +1 -1
  172. package/dist/pages/aclmanagement.html +2 -2
  173. package/dist/pages/autocomplete.html +1 -1
  174. package/dist/pages/choose-repository-type.html +1 -1
  175. package/dist/pages/cluster-management/clusterInfo.html +3 -3
  176. package/dist/pages/create-index.html +1 -1
  177. package/dist/pages/dependencies.html +1 -1
  178. package/dist/pages/domainRangeInfo.html +2 -2
  179. package/dist/pages/edit.html +1 -1
  180. package/dist/pages/explore.html +1 -1
  181. package/dist/pages/export.html +1 -1
  182. package/dist/pages/find.html +1 -1
  183. package/dist/pages/graph-config/saveGraphConfig.html +8 -8
  184. package/dist/pages/graphs-visualizations.html +7 -7
  185. package/dist/pages/guides.html +1 -1
  186. package/dist/pages/import.html +2 -2
  187. package/dist/pages/jdbc-create.html +1 -1
  188. package/dist/pages/login.html +1 -1
  189. package/dist/pages/monitor/backup-and-restore.html +1 -1
  190. package/dist/pages/monitor/queries.html +1 -1
  191. package/dist/pages/monitor/resources.html +1 -1
  192. package/dist/pages/namespaces.html +2 -2
  193. package/dist/pages/plugins.html +1 -1
  194. package/dist/pages/rdfClassHierarchyInfo.html +7 -7
  195. package/dist/pages/rdfrank.html +2 -2
  196. package/dist/pages/repositories.html +1 -1
  197. package/dist/pages/repository.html +1 -1
  198. package/dist/pages/similarity-indexes.html +1 -1
  199. package/dist/pages/sparql-editor.html +1 -1
  200. package/dist/pages/sparql-template-create.html +1 -1
  201. package/dist/pages/ux-test1.html +2 -2
  202. package/dist/pages/webapi.html +2 -2
  203. package/dist/plugins.js +1 -1
  204. package/dist/res/swagger5/index.html +11 -11
  205. package/dist/shared-components/cjs/onto-layout.cjs.entry.js +1 -1
  206. package/dist/shared-components/cjs/onto-layout.cjs.entry.js.map +1 -1
  207. package/dist/shared-components/cjs/onto-layout.entry.cjs.js.map +1 -1
  208. package/dist/shared-components/collection/components/onto-layout/onto-layout.js +1 -1
  209. package/dist/shared-components/collection/components/onto-layout/onto-layout.js.map +1 -1
  210. package/dist/shared-components/esm/onto-layout.entry.js +1 -1
  211. package/dist/shared-components/esm/onto-layout.entry.js.map +1 -1
  212. package/dist/shared-components/shared-components/onto-layout.entry.esm.js.map +1 -1
  213. package/dist/shared-components/shared-components/p-504c7e8e.entry.js +1 -0
  214. package/dist/shared-components/shared-components/p-504c7e8e.entry.js.map +1 -0
  215. package/dist/shared-components/shared-components/shared-components.esm.js +1 -1
  216. package/package.json +1 -1
  217. package/dist/13486.58f89862c40c0f84cb09.bundle.js.map +0 -1
  218. package/dist/13813.a49f3fcf17ecd10c738e.bundle.js +0 -2
  219. package/dist/13813.a49f3fcf17ecd10c738e.bundle.js.map +0 -1
  220. package/dist/23283.a69ab10a85671d5323b4.bundle.js +0 -2
  221. package/dist/23283.a69ab10a85671d5323b4.bundle.js.map +0 -1
  222. package/dist/24785.07db24a70db7d20d268a.bundle.js +0 -2
  223. package/dist/24785.07db24a70db7d20d268a.bundle.js.map +0 -1
  224. package/dist/25090.8336e69433235ea3dfc6.bundle.js +0 -2
  225. package/dist/25090.8336e69433235ea3dfc6.bundle.js.map +0 -1
  226. package/dist/28319.54765ea398eaa88b7b54.bundle.js +0 -2
  227. package/dist/28319.54765ea398eaa88b7b54.bundle.js.map +0 -1
  228. package/dist/34330.a2a4211b14d118bd4c03.bundle.js +0 -2
  229. package/dist/34330.a2a4211b14d118bd4c03.bundle.js.map +0 -1
  230. package/dist/36665.8a0821c1742e6bd10e66.bundle.js +0 -2
  231. package/dist/36665.8a0821c1742e6bd10e66.bundle.js.map +0 -1
  232. package/dist/36737.0f3e0ff6942f79d49804.bundle.js +0 -2
  233. package/dist/36737.0f3e0ff6942f79d49804.bundle.js.map +0 -1
  234. package/dist/39448.a6ec42f0d72642fe9ee9.bundle.js +0 -2
  235. package/dist/39448.a6ec42f0d72642fe9ee9.bundle.js.map +0 -1
  236. package/dist/39874.6ca23ead080b52dc1bc6.bundle.js.map +0 -1
  237. package/dist/4125.28d3c85c122f270c9b2c.bundle.js +0 -2
  238. package/dist/4125.28d3c85c122f270c9b2c.bundle.js.map +0 -1
  239. package/dist/41621.d1b7d799116c07df17d1.bundle.js.map +0 -1
  240. package/dist/42143.87a6b0a089da7a2318dd.bundle.js +0 -2
  241. package/dist/42143.87a6b0a089da7a2318dd.bundle.js.map +0 -1
  242. package/dist/51087.8bc01b7861b40bc7082d.bundle.js +0 -2
  243. package/dist/51087.8bc01b7861b40bc7082d.bundle.js.map +0 -1
  244. package/dist/51490.358f66f8d298a6251e90.bundle.js +0 -2
  245. package/dist/51490.358f66f8d298a6251e90.bundle.js.map +0 -1
  246. package/dist/57952.afa9e0608388e5bae876.bundle.js +0 -2
  247. package/dist/57952.afa9e0608388e5bae876.bundle.js.map +0 -1
  248. package/dist/59718.f1ae3d1480c7179c57f0.bundle.js.map +0 -1
  249. package/dist/67232.ca7667a39c74efdb90e1.bundle.js +0 -2
  250. package/dist/67232.ca7667a39c74efdb90e1.bundle.js.map +0 -1
  251. package/dist/68685.314faeaa55a342568c0b.bundle.js +0 -2
  252. package/dist/68685.314faeaa55a342568c0b.bundle.js.map +0 -1
  253. package/dist/69112.817cf7b4d2911108c736.bundle.js.map +0 -1
  254. package/dist/73964.adb0a07a8c4dad17f592.bundle.js.map +0 -1
  255. package/dist/74106.82ee18377b0ae14c6a7f.bundle.js +0 -2
  256. package/dist/74106.82ee18377b0ae14c6a7f.bundle.js.map +0 -1
  257. package/dist/79329.a3a25c9508f4287f135c.bundle.js +0 -2
  258. package/dist/79329.a3a25c9508f4287f135c.bundle.js.map +0 -1
  259. package/dist/86142.ed366f6953d750eb99b8.bundle.js +0 -2
  260. package/dist/86142.ed366f6953d750eb99b8.bundle.js.map +0 -1
  261. package/dist/86639.6cf8f34680ceacc7298d.bundle.js +0 -2
  262. package/dist/86639.6cf8f34680ceacc7298d.bundle.js.map +0 -1
  263. package/dist/89695.2d49f93862aee2cf23af.bundle.js +0 -2
  264. package/dist/89695.2d49f93862aee2cf23af.bundle.js.map +0 -1
  265. package/dist/94519.f41b6f4fb1b1bb6e3bf5.bundle.js +0 -2
  266. package/dist/94519.f41b6f4fb1b1bb6e3bf5.bundle.js.map +0 -1
  267. package/dist/95953.1334544dd7e80f0da6cf.bundle.js +0 -2
  268. package/dist/95953.1334544dd7e80f0da6cf.bundle.js.map +0 -1
  269. package/dist/96089.15302200bfd9f685b009.bundle.js +0 -2
  270. package/dist/96089.15302200bfd9f685b009.bundle.js.map +0 -1
  271. package/dist/98860.30ea9a212cf6e622ec36.bundle.js +0 -2
  272. package/dist/98860.30ea9a212cf6e622ec36.bundle.js.map +0 -1
  273. package/dist/shared-components/shared-components/p-28a4ce8f.entry.js +0 -1
  274. package/dist/shared-components/shared-components/p-28a4ce8f.entry.js.map +0 -1
  275. /package/dist/{legacyWorkbench.f804eda735b6f1961ceb.js.LICENSE.txt → legacyWorkbench.c5245455051fd0bab730.js.LICENSE.txt} +0 -0
  276. /package/dist/{main.5a06ce3271fcd9cb93e7.js.LICENSE.txt → main.fa0b99f721588e894d1d.js.LICENSE.txt} +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"file":"36665.8a0821c1742e6bd10e66.bundle.js","mappings":"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","sources":["webpack://root-config/./packages/legacy-workbench/src/js/angular/ttyg/services/agent-instruction-explain.mapper.js","webpack://root-config/./packages/legacy-workbench/src/js/angular/models/ttyg/chats.js","webpack://root-config/./packages/legacy-workbench/src/js/angular/core/services/ttyg.service.js","webpack://root-config/./packages/legacy-workbench/src/js/angular/models/ttyg/chat-answer.js","webpack://root-config/./packages/legacy-workbench/src/js/angular/ttyg/services/agents.mapper.js","webpack://root-config/./packages/legacy-workbench/src/js/angular/models/ttyg/chat-item.js","webpack://root-config/./packages/legacy-workbench/src/js/angular/ttyg/services/chats.mapper.js","webpack://root-config/./packages/legacy-workbench/src/js/angular/ttyg/services/chat-message.mapper.js","webpack://root-config/./packages/legacy-workbench/src/js/angular/models/ttyg/explain-response.js","webpack://root-config/./packages/legacy-workbench/src/js/angular/models/ttyg/agent-instructions-explain.js","webpack://root-config/./packages/legacy-workbench/src/js/angular/ttyg/services/explain.mapper.js"],"sourcesContent":["import {AgentInstructionsExplain, AgentInstructionsExplainList} from \"../../models/ttyg/agent-instructions-explain\";\n\n/**\n * Maps the response from the backend to the AgentInstructionsExplainList model.\n * @param {*} data\n * @return {AgentInstructionsExplainList}\n */\nexport const agentInstructionsExplainMapper = (data) => {\n if (!data) {\n return new AgentInstructionsExplainList([]);\n }\n return data.map((instruction) => new AgentInstructionsExplain(instruction));\n};\n","import {ChatItemsListModel} from \"./chat-item\";\nimport {md5HashGenerator} from \"../../utils/hash-utils\";\n\nexport class ChatModel {\n static getEmptyChat() {\n const data = {\n name: \"\\u00B7 \\u00B7 \\u00B7\",\n timestamp: Math.floor(Date.now() / 1000)\n };\n return new ChatModel(data, md5HashGenerator());\n }\n\n constructor(data, hashGenerator) {\n this.hashGenerator = hashGenerator;\n\n /**\n * @type {string}\n */\n this._id = data.id;\n\n /**\n * @type {string}\n */\n this._name = data.name;\n\n /**\n * @type {number}\n */\n this._timestamp = data.timestamp;\n\n /**\n * @type {ChatItemsListModel}\n */\n this._chatHistory = data.chatHistory || new ChatItemsListModel();\n this.hash = this.generateHash();\n }\n\n generateHash() {\n return this.hashGenerator(JSON.stringify(this));\n }\n\n get id() {\n return this._id;\n }\n\n set id(value) {\n this._id = value;\n }\n\n get name() {\n return this._name;\n }\n\n set name(value) {\n this.generateHash();\n this._name = value;\n }\n\n get timestamp() {\n return this._timestamp;\n }\n\n set timestamp(value) {\n this._timestamp = value;\n }\n\n get chatHistory() {\n return this._chatHistory;\n }\n\n set chatHistory(value) {\n this._chatHistory = value || new ChatItemsListModel();\n }\n\n /**\n * Converts the instance to a rename chat request payload.\n * This request object contains the new name for renaming the chat.\n *\n * @return {{name: string}} An object representing the rename request payload.\n */\n toRenameRequestPayload() {\n return {name: this._name};\n }\n}\n\nexport class ChatByDayModel {\n constructor(data) {\n this._day = data.day;\n /**\n * @type {number}\n * @private\n */\n this._timestamp = data.timestamp;\n /**\n * @type {ChatModel[]|*}\n * @private\n */\n this._chats = data.chats;\n }\n\n get day() {\n return this._day;\n }\n\n set day(value) {\n this._day = value;\n }\n\n get timestamp() {\n return this._timestamp;\n }\n\n set timestamp(value) {\n this._timestamp = value;\n }\n\n get chats() {\n return this._chats;\n }\n\n set chats(value) {\n this._chats = value;\n }\n}\n\nexport class ChatsListModel {\n constructor(chats) {\n /**\n * @type {ChatModel[]}\n * @private\n */\n this._chats = chats || [];\n /**\n * @type {ChatByDayModel[]}\n * @private\n */\n this._chatsByDay = [];\n this.sortByTime();\n this.updateChatsByDay();\n }\n\n /**\n * Sorts the list of chats by timestamp in descending order, with the newest items on top.\n */\n sortByTime() {\n this._chats.sort((a, b) => {\n return b.timestamp - a.timestamp;\n });\n }\n\n /**\n * Updates the timestamp of a chat in the list.\n * @param {string} chatId\n * @param {number} timestamp\n */\n updateChatTimestamp(chatId, timestamp) {\n const chat = this._chats.find((c) => c.id === chatId);\n if (chat) {\n chat.timestamp = timestamp;\n this.sortByTime();\n this.updateChatsByDay();\n }\n }\n\n /**\n * Updates the name of a chat in the list.\n * @param {string} chatId\n * @param {string} name\n */\n updateChatName(chatId, name) {\n const chat = this._chats.find((c) => c.id === chatId);\n if (chat) {\n chat.name = name;\n }\n }\n\n /**\n * Deletes a chat from the chat list.\n * @param {ChatModel} chatToBeDeleted\n */\n deleteChat(chatToBeDeleted) {\n this._chats = this._chats.filter((chat) => chat.id !== chatToBeDeleted.id);\n this.sortByTime();\n this.updateChatsByDay();\n }\n\n updateChatsByDay() {\n this._chatsByDay = [];\n // group chats by day\n this._chats.forEach((chat) => {\n const day = new Date(chat.timestamp * 1000).toDateString();\n const dayModel = this._chatsByDay.find((d) => d.day === day);\n if (dayModel) {\n dayModel.chats.push(chat);\n } else {\n this._chatsByDay.push(new ChatByDayModel({day: day, timestamp: chat.timestamp * 1000, chats: [chat]}));\n }\n });\n }\n\n appendChat(chat) {\n this._chats.push(chat);\n this.sortByTime();\n this.updateChatsByDay();\n }\n\n replaceChat(newChat, oldChat) {\n this._chats = this._chats.map((chat) => {\n if (chat.id === oldChat.id) {\n return newChat;\n }\n return chat;\n });\n this.sortByTime();\n this.updateChatsByDay();\n }\n\n /**\n * Checks if the chat list is empty.\n * @return {boolean}\n */\n isEmpty() {\n return this._chats.length === 0;\n }\n\n /**\n * Returns the first chat from the list.\n * @return {ChatModel|undefined}\n */\n getFirstChat() {\n return this._chats[0];\n }\n\n /**\n * Deselects all chats.\n */\n deselectAll() {\n this._chats.forEach((c) => {\n c.selected = false;\n });\n }\n\n /**\n * Selects a chat.\n * @param {ChatModel} chat\n */\n selectChat(chat) {\n this.deselectAll();\n this._chats.forEach((c) => {\n c.selected = c.id === chat.id;\n });\n }\n\n getChat(id) {\n return this._chats.find((c) => c.id === id);\n }\n\n getNonPersistedChat() {\n return this._chats.find((chat) => !chat.id);\n }\n\n renameChat(renamedChat) {\n const chat = this._chats.find((c) => c.id === renamedChat.id);\n if (chat) {\n chat.name = renamedChat.name;\n }\n }\n\n /**\n * @return {ChatModel[]}\n */\n get chats() {\n return this._chats;\n }\n\n /**\n * @param {ChatModel[]} value\n */\n set chats(value) {\n this._chats = value;\n }\n\n get chatsByDay() {\n return this._chatsByDay;\n }\n\n set chatsByDay(value) {\n this._chatsByDay = value;\n }\n}\n","import {chatModelMapper, chatsListMapper} from \"../../ttyg/services/chats.mapper\";\nimport 'angular/rest/ttyg.rest.service';\nimport {chatAnswerModelMapper} from \"../../ttyg/services/chat-message.mapper\";\nimport {agentListMapper, agentModelMapper} from \"../../ttyg/services/agents.mapper\";\nimport {explainResponseMapper} from \"../../ttyg/services/explain.mapper\";\nimport {agentInstructionsExplainMapper} from \"../../ttyg/services/agent-instruction-explain.mapper\";\n\nconst modules = ['graphdb.framework.rest.ttyg.service'];\n\nangular\n .module('graphdb.framework.core.services.ttyg-service', modules)\n .factory('TTYGService', TTYGService);\n\nTTYGService.$inject = ['TTYGRestService', '$repositories'];\n\nfunction TTYGService(TTYGRestService, $repositories) {\n\n const getConversations = (savedQueryName, owner) => {\n return TTYGRestService.getConversations()\n .then((response) => chatsListMapper(response.data));\n };\n\n /**\n * Loads a conversation by its ID.\n * @param {string} id\n * @return {Promise<ChatModel>}\n */\n const getConversation = (id) => {\n return TTYGRestService.getConversation(id)\n .then((response) => chatModelMapper(response.data));\n };\n\n /**\n * Renames the conversation (<code>chart</code>).\n * @param {ChatModel} chat - the conversation to be renamed.\n * @return {*}\n */\n const renameConversation = (chat) => {\n return TTYGRestService.renameConversation(chat.id, chat.toRenameRequestPayload())\n .then((response) => chatModelMapper(response.data));\n };\n\n /**\n * Exports the conversation (<code>chart</code>).\n * @param {string} id - the conversation to be exported.\n * @return {Promise<{Blob, string}>} Returns the conversation as a Blob and the filename wrapped in a Promise\n * */\n const exportConversation = (id) => {\n return TTYGRestService.exportConversation(id)\n .then(function (res) {\n const data = res.data;\n const headers = res.headers();\n const contentDispositionHeader = headers['content-disposition'];\n let filename = 'chat-export';\n if (contentDispositionHeader) {\n filename = contentDispositionHeader.split('filename=')[1];\n filename = filename.substring(0, filename.length);\n }\n return {data, filename};\n });\n };\n\n /**\n * Asks a question.\n * @param {ChatItemModel} chatItem .\n * @return {Promise<ChatAnswerModel>} the answer of the question.\n */\n const askQuestion = (chatItem) => {\n return TTYGRestService.askQuestion(chatItem.toAskRequestPayload())\n .then((response) => chatAnswerModelMapper(response.data));\n };\n\n /**\n * Continues a chat run. In essence continue means \"fetch more answers\".\n * @param {ContinueChatRun} continueData .\n * @return {Promise<ChatAnswerModel>} the next answer in the run.\n */\n const continueChatRun = (continueData) => {\n const payload = continueData.toContinueRunRequestPayload();\n return TTYGRestService.continueChatRun(payload)\n .then((response) => chatAnswerModelMapper(response.data));\n };\n\n /**\n * Deletes a conversation by its ID.\n * @param {string} id\n * @return {Promise<void>}\n */\n const deleteConversation = (id) => {\n return TTYGRestService.deleteConversation(id);\n };\n\n /**\n * Creates a new conversation. The creation of a chat and asking a question share the same endpoint. If the request payload\n * doesn't contain the chat ID, the backend will create a new chat and return the answer, which includes the ID of the created chat.\n *\n * @param {ChatItemModel} chatItem - The conversation data.\n * @return {Promise<ChatAnswerModel>} The answer of the question.\n */\n const createConversation = (chatItem) => {\n return TTYGRestService.createConversation(chatItem.toCreateChatRequestPayload())\n .then((response) => chatAnswerModelMapper(response.data));\n };\n\n /**\n * Loads all agents from the server and converts the response to a list of AgentModels.\n * @return {Promise<AgentListModel>}\n */\n const getAgents = () => {\n const localRepositories = $repositories.getLocalReadablGraphdbRepositoryIds();\n return TTYGRestService.getAgents()\n .then((response) => {\n return agentListMapper(response.data, localRepositories);\n });\n };\n\n /**\n * Loads an agent by its ID.\n * @param {string} id\n * @return {Promise<AgentModel|undefined>}\n */\n const getAgent = (id) => {\n const localRepositories = $repositories.getLocalReadablGraphdbRepositoryIds();\n return TTYGRestService.getAgent(id)\n .then((response) => agentModelMapper(response.data, localRepositories));\n };\n\n /**\n * Creates a new agent.\n * @param {*} payload - the agent data\n * @return {Promise<AgentModel>} created agent;\n */\n const createAgent = (payload) => {\n const localRepositories = $repositories.getLocalReadablGraphdbRepositoryIds();\n return TTYGRestService.createAgent(payload)\n .then((response) => {\n return agentModelMapper(response.data, localRepositories);\n });\n };\n\n /**\n * Updates the agent with the provided <code>payload</code>.\n * @param {*} payload - The data for updating the agent.\n * @return {Promise<AgentModel>} A promise that resolves to the updated agent.\n */\n const editAgent = (payload) => {\n const localRepositories = $repositories.getLocalReadablGraphdbRepositoryIds();\n return TTYGRestService.editAgent(payload)\n .then((response) => {\n return agentModelMapper(response.data, localRepositories);\n });\n };\n\n /**\n * Deletes an agent by its ID.\n * @param {string} id\n * @return {Promise<void>|*}\n */\n const deleteAgent = (id) => {\n return TTYGRestService.deleteAgent(id);\n };\n\n /**\n * Returns an explanation of how the answer was generated.\n * @param {ChatItemModel} chatItem\n * @param {string} answerId\n * @return {ExplainResponseModel}\n */\n const explainResponse = (chatItem, answerId) => {\n return TTYGRestService.explainResponse(chatItem.toExplainResponsePayload(answerId))\n .then((response) => {\n return explainResponseMapper(response.data);\n });\n };\n\n /**\n * Get the default agent values from server.\n * @return {Promise<AgentModel>}\n */\n const getDefaultAgent = () => {\n const localRepositories = $repositories.getLocalReadablGraphdbRepositoryIds();\n return TTYGRestService.getAgentDefaultValues()\n .then((response) => {\n return agentModelMapper(response.data, localRepositories);\n });\n };\n\n /**\n * Calls the backend server to fetch an explanation of how the agent settings were generated.\n * @param {*} payload - payload generated by the agent settings form model.\n * @return {Promise<unknown>}\n */\n const explainAgentSettings = (payload) => {\n return TTYGRestService.explainAgentSettings(payload)\n .then((response) => {\n return agentInstructionsExplainMapper(response.data);\n });\n };\n\n return {\n getConversation,\n renameConversation,\n exportConversation,\n askQuestion,\n continueChatRun,\n getConversations,\n deleteConversation,\n createConversation,\n getAgents,\n getAgent,\n createAgent,\n editAgent,\n deleteAgent,\n explainResponse,\n getDefaultAgent,\n explainAgentSettings\n };\n}\n","export class ChatAnswerModel {\n constructor(data = {}) {\n /**\n * @type {string | undefined}\n */\n this._chatId = data.chatId;\n\n /**\n * @type {string}\n */\n this._chatName = data.chatName || '';\n\n /**\n * @type {number}\n */\n this._timestamp = data.timestamp;\n\n /**\n * @type {ChatMessageModel[]}\n */\n this._messages = data.messages || [];\n\n /**\n * @type {string}\n */\n this._continueRunId = data.continueRunId;\n\n /**\n * Holds information about the number of tokens used for this answer, including prompt and completion tokens.\n *\n * @type {TokenUsageInfo}\n */\n this.tokenUsageInfo = data.tokenUsageInfo;\n }\n\n get chatId() {\n return this._chatId;\n }\n\n set chatId(value) {\n this._chatId = value;\n }\n\n get chatName() {\n return this._chatName;\n }\n\n set chatName(value) {\n this._chatName = value;\n }\n\n get timestamp() {\n return this._timestamp;\n }\n\n set timestamp(value) {\n this._timestamp = value;\n }\n\n get messages() {\n return this._messages;\n }\n\n set messages(value) {\n this._messages = value;\n }\n\n get continueRunId() {\n return this._continueRunId;\n }\n\n set continueRunId(value) {\n this._continueRunId = value;\n }\n}\n\n/**\n * Represents information on continuing the chat run, i.e., fetching answers iteratively after\n * asking until the last answer is received.\n */\nexport class ContinueChatRun {\n constructor(chatItem, runId) {\n this._chatItem = chatItem;\n this._runId = runId;\n }\n\n get chatId() {\n return this._chatItem.chatId;\n }\n\n toContinueRunRequestPayload() {\n return {\n conversationId: this.chatId,\n runId: this._runId,\n agentId: this._chatItem.agentId,\n tzOffset: -new Date().getTimezoneOffset() // offsets are reversed here hence the minus\n };\n }\n}\n","import {\n AdditionalExtractionMethod,\n AdditionalExtractionMethodModel,\n AgentInstructionsModel,\n AgentListModel,\n AgentModel,\n ExtractionMethodModel\n} from '../../models/ttyg/agents';\nimport {\n AdditionalExtractionMethodFormModel,\n AgentFormModel,\n AgentInstructionsFormModel,\n ExtractionMethodFormModel\n} from '../../models/ttyg/agent-form';\nimport {NumericRangeModel, TextFieldModel} from '../../models/form-fields';\nimport {md5HashGenerator} from '../../utils/hash-utils';\nimport {AGENT_OPERATION} from \"./constants\";\n\n/**\n * Converts an agent model to an agent form model.\n * @param {AgentModel} agentModel\n * @param {AgentModel} defaultAgentModel\n * @param {string} operation\n * @return {AgentFormModel}\n */\nexport const agentFormModelMapper = (agentModel, defaultAgentModel, operation ) => {\n if (!agentModel) {\n return;\n }\n const agentFormModel = new AgentFormModel();\n agentFormModel.id = agentModel.id || defaultAgentModel.id;\n agentFormModel.name = agentModel.name || defaultAgentModel.name;\n agentFormModel.repositoryId = agentModel.repositoryId || defaultAgentModel.repositoryId;\n agentFormModel.model = agentModel.model || defaultAgentModel.model;\n agentFormModel.temperature.value = agentModel.temperature !== undefined ? agentModel.temperature : defaultAgentModel.temperature;\n agentFormModel.topP.value = agentModel.topP !== undefined ? agentModel.topP : defaultAgentModel.topP;\n agentFormModel.seed = agentModel.seed || defaultAgentModel.seed;\n agentFormModel.instructions = agentInstructionsFormMapper(agentModel.instructions, defaultAgentModel.instructions);\n extractionMethodsFormMapper(agentFormModel, operation, defaultAgentModel.assistantExtractionMethods, agentModel.assistantExtractionMethods);\n // Select additional methods if they are present in the list returned from the backend (BE).\n additionalExtractionMethodsFormMapper(agentModel.additionalExtractionMethods, defaultAgentModel.additionalExtractionMethods, agentFormModel);\n return agentFormModel;\n};\n\n/**\n * @param {AgentInstructionsModel} currentAgentModelInstructions\n * @param {AgentInstructionsModel} defaultInstructions\n * @return {AgentInstructionsFormModel}\n */\nconst agentInstructionsFormMapper = (currentAgentModelInstructions, defaultInstructions) => {\n if (!currentAgentModelInstructions && !defaultInstructions) {\n return;\n }\n const systemInstruction = currentAgentModelInstructions && currentAgentModelInstructions.systemInstruction || defaultInstructions.systemInstruction;\n const userInstruction = currentAgentModelInstructions && currentAgentModelInstructions.userInstruction || defaultInstructions.userInstruction;\n return new AgentInstructionsFormModel({\n systemInstruction: systemInstruction,\n userInstruction: userInstruction,\n defaultSystemInstruction: defaultInstructions.systemInstruction,\n defaultUserInstruction: defaultInstructions.userInstruction\n });\n};\n\n/**\n * @param {AgentFormModel} agentFormModel\n * @param {string} operation\n * @param {ExtractionMethodModel[]} defaultData\n * @param {ExtractionMethodModel[]} data\n */\nconst extractionMethodsFormMapper = (agentFormModel, operation, defaultData, data = []) => {\n const defaultExtractionMethods = defaultData.filter((defaultExtractionMethod) => !data.some((agentMethod) => agentMethod.method === defaultExtractionMethod.method));\n const defaultSparqlMethodValues = defaultData.find((defaultExtractionMethod) => defaultExtractionMethod.method === 'sparql_search');\n const extractionMethods = [...data, ...defaultExtractionMethods];\n extractionMethods.forEach((extractionMethod) => {\n const isMethodSelected = data.some((method) => method.method === extractionMethod.method);\n // The sparqlOption is applicable only for the sparql_search method.\n let sparqlOption = '';\n if (isMethodSelected && extractionMethod.method === 'sparql_search') {\n if (AGENT_OPERATION.CREATE === operation) {\n sparqlOption = '';\n } else if (extractionMethod.sparqlQuery) {\n sparqlOption = 'sparqlQuery';\n } else if (extractionMethod.ontologyGraph) {\n sparqlOption = 'ontologyGraph';\n }\n }\n // In edit and clone operations we have an existing agent instance, so we should show the selected methods from it.\n const shouldShowSelectedMethods = operation === AGENT_OPERATION.EDIT || operation === AGENT_OPERATION.CLONE;\n const existingMethod = new ExtractionMethodFormModel({\n selected: shouldShowSelectedMethods && isMethodSelected,\n method: extractionMethod.method,\n sparqlOption: sparqlOption,\n ontologyGraph: extractionMethod.ontologyGraph || defaultSparqlMethodValues.ontologyGraph,\n addMissingNamespaces: extractionMethod.addMissingNamespaces,\n sparqlQuery: new TextFieldModel({\n value: extractionMethod.sparqlQuery || defaultSparqlMethodValues.sparqlQuery,\n minLength: 1,\n maxLength: 2380\n }),\n similarityIndex: extractionMethod.similarityIndex,\n similarityIndexThreshold: extractionMethod.similarityIndexThreshold && new NumericRangeModel({\n value: extractionMethod.similarityIndexThreshold,\n minValue: 0,\n maxValue: 1,\n step: 0.1\n }),\n // In case backend returns 0 as a default value this means that there is no limit, so we set the null in order\n // to show the placeholder in the input field.\n maxNumberOfTriplesPerCall: extractionMethod.maxNumberOfTriplesPerCall === 0 ? null : extractionMethod.maxNumberOfTriplesPerCall,\n queryTemplate: extractionMethod.queryTemplate && new TextFieldModel({\n value: extractionMethod.queryTemplate,\n minLength: 1,\n maxLength: 2380\n }),\n retrievalConnectorInstance: extractionMethod.retrievalConnectorInstance\n });\n agentFormModel.assistantExtractionMethods.setExtractionMethod(existingMethod);\n });\n};\n\n/**\n * @param {AdditionalExtractionMethodsModel} additionalExtractionMethodsResponse\n * @param {AdditionalExtractionMethodsModel} defaultAdditionalExtractionMethodData\n * @param {AgentFormModel} agentFormModel\n */\nfunction additionalExtractionMethodsFormMapper(additionalExtractionMethodsResponse, defaultAdditionalExtractionMethodData, agentFormModel) {\n // No Additional extraction methods on new agent creation\n if (!additionalExtractionMethodsResponse) {\n return;\n }\n const additionalExtractionMethods = additionalExtractionMethodsResponse.map(method => {\n let data = {\n method: method.method || defaultAdditionalExtractionMethodData.method,\n expanded: method.expanded || defaultAdditionalExtractionMethodData.expanded,\n };\n if (method.method === AdditionalExtractionMethod.IRI_DISCOVERY_SEARCH || method.method === AdditionalExtractionMethod.AUTOCOMPLETE_IRI_DISCOVERY_SEARCH) {\n data.selected = additionalExtractionMethodsResponse.some((agentMethod) => agentMethod.method === method.method);\n }\n\n if (method.method === AdditionalExtractionMethod.AUTOCOMPLETE_IRI_DISCOVERY_SEARCH) {\n data.maxNumberOfResultsPerCall = method._maxNumberOfResultsPerCall || defaultAdditionalExtractionMethodData.maxNumberOfResultsPerCall;\n }\n return new AdditionalExtractionMethodFormModel(data);\n });\n agentFormModel.additionalExtractionMethods.setAdditionalExtractionMethod(additionalExtractionMethods);\n}\n\n/**\n * Converts the response from the server to a list of AgentModel.\n * @param {*[]} data\n * @param {string[]} localRepositoryIds\n * @return {AgentListModel}\n */\nexport const agentListMapper = (data, localRepositoryIds) => {\n if (!data) {\n return new AgentListModel();\n }\n const agentModels = data\n .map((agent) => agentModelMapper(agent, localRepositoryIds));\n return new AgentListModel(agentModels);\n};\n\nexport const agentModelMapper = (data, localRepositoryIds) => {\n if (!data) {\n return;\n }\n const hashGenerator = md5HashGenerator();\n return new AgentModel({\n id: data.id,\n name: data.name,\n repositoryId: data.repositoryId,\n // Sets the isRepositoryDeleted flag based on whether the repository ID is not in the list of repositories.\n isRepositoryDeleted: !localRepositoryIds.includes(data.repositoryId),\n model: data.model,\n temperature: data.temperature,\n topP: data.topP,\n seed: data.seed,\n instructions: agentInstructionsMapper(data.instructions),\n assistantExtractionMethods: extractionMethodsMapper(data.assistantExtractionMethods),\n additionalExtractionMethods: additionalExtractionMethodsMapper(data.additionalExtractionMethods),\n compatibility: data.compatibility,\n }, hashGenerator);\n};\n\nconst extractionMethodsMapper = (data) => {\n if (!data) {\n return;\n }\n return data.map((extractionMethod) => extractionMethodMapper(extractionMethod));\n};\n\nconst extractionMethodMapper = (data) => {\n if (!data) {\n return;\n }\n return new ExtractionMethodModel({\n method: data.method,\n ontologyGraph: data.ontologyGraph,\n addMissingNamespaces: data.addMissingNamespaces,\n sparqlQuery: data.sparqlQuery,\n similarityIndex: data.similarityIndex,\n similarityIndexThreshold: data.similarityIndexThreshold,\n maxNumberOfTriplesPerCall: data.maxNumberOfTriplesPerCall,\n queryTemplate: data.queryTemplate,\n retrievalConnectorInstance: data.retrievalConnectorInstance\n });\n};\n\nconst additionalExtractionMethodsMapper = (data) => {\n if (!data) {\n return;\n }\n return data.map((additionalExtractionMethod) => additionalExtractionMethodMapper(additionalExtractionMethod));\n};\n\nconst additionalExtractionMethodMapper = (data) => {\n if (!data) {\n return;\n }\n if (data.method === AdditionalExtractionMethod.AUTOCOMPLETE_IRI_DISCOVERY_SEARCH) {\n return new AdditionalExtractionMethodModel({\n method: data.method,\n maxNumberOfResultsPerCall: data.limit || 0\n });\n } else if (data.method === AdditionalExtractionMethod.IRI_DISCOVERY_SEARCH) {\n return new AdditionalExtractionMethodModel({\n method: data.method\n });\n }\n};\n\nconst agentInstructionsMapper = (data) => {\n if (!data) {\n return;\n }\n return new AgentInstructionsModel({\n systemInstruction: data.systemInstruction,\n userInstruction: data.userInstruction\n });\n};\n","import {CHAT_MESSAGE_ROLE, ChatMessageModel} from \"./chat-message\";\n\n/**\n *\n * Represents a model that holds a question and the answer of it in a chat.\n *\n */\nexport class ChatItemModel {\n\n /**\n * Creates an instance of ChatItemModel.\n *\n * @param {string} chatId - The unique identifier for the chat associated with this instance.\n * @param {ChatMessageModel} question - The message object representing the question.\n */\n constructor(chatId, question) {\n\n /**\n * @type {string | undefined}\n * @private\n */\n this._chatId = chatId;\n\n /**\n * @type {string | undefined}\n * @private\n */\n this._agentId = undefined;\n\n /**\n * @type {ChatMessageModel}\n * @private\n */\n this._question = question;\n\n /**\n *\n * @type {ChatMessageModel[] | undefined}\n * @private\n */\n this._answers = [];\n }\n\n get chatId() {\n return this._chatId;\n }\n\n set chatId(value) {\n this._chatId = value;\n }\n\n get agentId() {\n return this._agentId;\n }\n\n set agentId(value) {\n this._agentId = value;\n }\n\n get question() {\n return this._question;\n }\n\n set question(value) {\n this._question = value;\n }\n\n get answers() {\n return this._answers;\n }\n\n /**\n *\n * @param {ChatMessageModel[]} value\n */\n set answers(value) {\n this._answers = value;\n }\n\n /**\n * Sets the message for the user's question.\n *\n * @param {string} message - The message content for the user's question.\n */\n setQuestionMessage(message) {\n if (!this._question) {\n this._question = new ChatMessageModel({role: CHAT_MESSAGE_ROLE.USER});\n }\n this._question.message = message;\n }\n\n /**\n * Retrieves the message of the user's question.\n *\n * @return {string} - The message content of the user's question.\n */\n getQuestionMessage() {\n return this._question.message;\n }\n\n /**\n * Converts the instance to a create chat request payload.\n *\n * @return {{agentId: string, question: string}} An object representing the create request payload.\n */\n toCreateChatRequestPayload() {\n return {\n agentId: this._agentId,\n question: this._question.message\n };\n }\n\n /**\n * Converts the instance to an ask request payload.\n *\n * @return {{conversationId: string, agentId: string, question: string}} An object representing the ask request payload.\n */\n toAskRequestPayload() {\n return {\n conversationId: this._chatId,\n agentId: this._agentId,\n question: this._question.message,\n tzOffset: -new Date().getTimezoneOffset() // offsets are reversed here hence the minus\n };\n }\n\n toExplainResponsePayload(answerId) {\n return {\n conversationId: this._chatId,\n answerId\n };\n }\n}\n\nexport class ChatItemsListModel {\n\n /**\n * @param {ChatItemModel[]} items\n */\n constructor(items = []) {\n this._items = items;\n }\n\n isEmpty() {\n return this._items.length === 0;\n }\n\n /**\n * @param {ChatItemModel} chatItem\n */\n appendItem(chatItem) {\n this._items.push(chatItem);\n }\n\n get items() {\n return this._items;\n }\n\n set items(value) {\n this._items = value || [];\n }\n\n getLast() {\n if (!this.isEmpty()) {\n return this._items[this._items.length - 1];\n }\n }\n}\n","import {ChatsListModel, ChatModel} from \"../../models/ttyg/chats\";\nimport {md5HashGenerator} from \"../../utils/hash-utils\";\nimport {chatItemsModelMapper} from \"./chat-message.mapper\";\nimport {ChatItemsListModel} from \"../../models/ttyg/chat-item\";\n\nconst hashGenerator = md5HashGenerator();\n\n/**\n * Converts the response from the server to a list of ChatModels.\n * @param {*[]} data\n * @return {ChatsListModel}\n */\nexport const chatsListMapper = (data) => {\n if (!data) {\n return new ChatsListModel();\n }\n const chatModels = data.map((chat) => chatModelMapper(chat));\n return new ChatsListModel(chatModels);\n};\n\n/**\n * Converts the response from the server to a ChatModel.\n * @param {*} data\n * @return {ChatModel|undefined}\n */\nexport const chatModelMapper = (data) => {\n if (!data) {\n return;\n }\n return new ChatModel({\n id: data.id,\n name: data.name,\n timestamp: data.timestamp,\n chatHistory: data.messages && data.messages.length ? chatItemsModelMapper(data.messages) : new ChatItemsListModel()\n }, hashGenerator);\n};\n","import {CHAT_MESSAGE_ROLE, ChatMessageModel} from \"../../models/ttyg/chat-message\";\nimport {ChatItemModel, ChatItemsListModel} from \"../../models/ttyg/chat-item\";\nimport {ChatAnswerModel} from \"../../models/ttyg/chat-answer\";\n\n/**\n * Converts the response from the server to a list of ChatMessageModel array.\n * @param {*[]} data\n * @return {ChatMessageModel[]}\n */\nexport const chatMessageModelListMapper = (data) => {\n if (!data) {\n return [];\n }\n return data.map((chatMessage) => chatMessageModelMapper(chatMessage));\n};\n\n/**\n * Maps a list of chat messages into an instance of {@see ChatItemsListModel}, which contains a list of `ChatItemModel` objects. Each object represents a question (from the user) and its corresponding answer (from the agent).\n * The backend returns messages as individual entries, and this function transforms those entries into objects that pair each question with its answer.\n *\n * @param {Array<Object>} data - An array of message objects, where each message contains details such as the role (user or assistant) and the message content.\n * @return {ChatItemsListModel} An instance of `ChatItemsListModel` containing a list of `ChatItemModel` objects, where each object holds a question and its corresponding answer.\n *\n * @example\n * // Example message data from the backend\n * const data = [\n * { role: 'user', conversationId: '123', agentId: 'agent-1', message: 'What is the weather?', timestamp: 1628876583 },\n * { role: 'assistant', conversationId: '123', agentId: 'agent-1', message: 'The weather is sunny.', timestamp: 1628876590 }\n * ];\n *\n * // Example of the resulting ChatItemsListModel array\n * const items = [\n * {\n * conversationId: '123',\n * agentId: 'agent-1',\n * question: {\n * role: 'user',\n * message: 'What is the weather?',\n * timestamp: 1628876583\n * },\n * answer: {\n * role: 'assistant',\n * message: 'The weather is sunny.',\n * timestamp: 1628876590\n * }\n * }]\n */\nexport const chatItemsModelMapper = (data = []) => {\n const items = [];\n let currentItem;\n data.forEach((message) => {\n // NOTE: The backend chat model doesn't have a ChatItemModel object,\n // i.e. it doesn't group user + assistant messages together.\n // In essence, there may be multiple consecutive user messages as well as\n // multiple consecutive assistant messages.\n const chatId = message.conversationId;\n if (CHAT_MESSAGE_ROLE.USER === message.role) {\n if (currentItem) {\n items.push(currentItem);\n }\n currentItem = new ChatItemModel(chatId, chatMessageModelMapper(message));\n } else {\n if (!currentItem) {\n currentItem = new ChatItemModel(chatId, null);\n }\n currentItem.answers.push(chatMessageModelMapper(message));\n currentItem.agentId = message.agentId;\n }\n });\n if (currentItem) {\n items.push(currentItem);\n }\n return new ChatItemsListModel(items);\n};\n\n/**\n * Converts the response from the server to a ChatMessageModel.\n * @param {*} data\n * @return {ChatMessageModel|undefined}\n */\nexport const chatMessageModelMapper = (data) => {\n if (!data) {\n return;\n }\n return new ChatMessageModel({\n id: data.id,\n role: data.role,\n message: data.message,\n timestamp: data.timestamp,\n tokenUsageInfo: data.usage,\n data: data\n });\n};\n\n/**\n * Converts the response from the server to a ChatAnswerModel instance.\n * @param {*} data\n * @return {ChatAnswerModel|undefined}\n */\nexport const chatAnswerModelMapper = (data) => {\n if (!data) {\n return;\n }\n return new ChatAnswerModel({\n chatId: data.id,\n chatName: data.name,\n timestamp: data.timestamp,\n messages: chatMessageModelListMapper(data.messages),\n continueRunId: data.continueRunId,\n tokenUsageInfo: data.usage\n });\n};\n","export class ExplainResponseModel {\n constructor(data = {}) {\n\n /**\n * @type {string}\n */\n this._chatId = data.chatId;\n\n /**\n * @type {string}\n */\n this._answerId = data.answerId;\n\n /**\n * @type {ExplainQueryMethodsListModel}\n */\n this._queryMethods = data.queryMethods;\n\n this._expanded = data.expanded !== undefined ? data.expanded : true;\n }\n\n get chatId() {\n return this._chatId;\n }\n\n set chatId(value) {\n this._chatId = value;\n }\n\n get answerId() {\n return this._answerId;\n }\n\n set answerId(value) {\n this._answerId = value;\n }\n\n get queryMethods() {\n return this._queryMethods;\n }\n\n set queryMethods(value) {\n this._queryMethods = value;\n }\n\n get expanded() {\n return this._expanded;\n }\n\n set expanded(value) {\n this._expanded = value;\n }\n}\n\nexport class ExplainQueryMethodsListModel {\n constructor(data = []) {\n this._items = data;\n }\n\n get items() {\n return this._items;\n }\n\n set items(value) {\n this._items = value;\n }\n}\n\nexport class ExplainQueryMethodModel {\n constructor(data = {}) {\n /**\n * @type {ExtractionMethod.FTS_SEARCH | ExtractionMethod.RETRIEVAL | ExtractionMethod.SPARQL | ExtractionMethod.SIMILARITY}\n */\n this._name = data.name;\n\n /**\n * @type {string}\n */\n this._rawQuery = data.rawQuery;\n\n /**\n * @type {string}\n */\n this._query = data.query;\n\n /**\n * @Type {ExplainQueryType}\n * @private\n */\n this._queryType = data.queryType;\n\n /**\n * @type {string | null}\n * @private\n */\n this._errorMessage = data.errorOutput;\n }\n\n get name() {\n return this._name;\n }\n\n set name(value) {\n this._name = value;\n }\n\n get rawQuery() {\n return this._rawQuery;\n }\n\n set rawQuery(value) {\n this._rawQuery = value;\n }\n\n get query() {\n return this._query;\n }\n\n set query(value) {\n this._query = value;\n }\n\n get queryType() {\n return this._queryType;\n }\n\n set queryType(value) {\n this._queryType = value;\n }\n\n get errorMessage() {\n return this._errorMessage;\n }\n\n set errorMessage(value) {\n this._errorMessage = value;\n }\n}\n\nexport const ExplainQueryType = {\n SPARQL: 'sparql',\n JSON: 'json',\n OTHER: 'other'\n};\n","export class AgentInstructionsExplain {\n constructor(data) {\n /**\n * @type {string}\n * @private\n */\n this._type = data.type;\n /**\n * @type {string}\n * @private\n */\n this._content = data.content;\n /**\n * @type {number}\n * @private\n */\n this._size = data.size;\n }\n\n get size() {\n return this._size;\n }\n\n set size(value) {\n this._size = value;\n }\n get content() {\n return this._content;\n }\n\n set content(value) {\n this._content = value;\n }\n get type() {\n return this._type;\n }\n\n set type(value) {\n this._type = value;\n }\n}\n\nexport class AgentInstructionsExplainList {\n constructor(data) {\n /**\n * @type {AgentInstructionsExplain[]}\n * @private\n */\n this._instructions = data.instructions;\n }\n\n get instructions() {\n return this._instructions;\n }\n\n set instructions(value) {\n this._instructions = value;\n }\n}\n","import {\n ExplainQueryMethodModel,\n ExplainQueryMethodsListModel,\n ExplainResponseModel\n} from \"../../models/ttyg/explain-response\";\n\n/**\n * Converts the response from the server to a ExplainResponseModel.\n *\n * @param {*} data\n * @return {ExplainResponseModel}\n */\nexport const explainResponseMapper = (data) => {\n return new ExplainResponseModel({\n chatId: data.conversationId,\n answerId: data.answerId,\n queryMethods: explainQueryMethodsListMapper(data.queryMethods)\n });\n};\n\n/**\n * Converts the response from the server to a ExplainQueryMethodsListModel.\n *\n * @param {*} data\n * @return {ExplainQueryMethodsListModel}\n */\nexport const explainQueryMethodsListMapper = (data = []) => {\n return new ExplainQueryMethodsListModel(data.map(explainQueryMethodMapper));\n};\n\n/**\n * Converts the response from the server to a ExplainQueryMethodModel.\n *\n * @param {*} data\n * @return {ExplainQueryMethodModel}\n */\nexport const explainQueryMethodMapper = (data) => {\n return new ExplainQueryMethodModel(data);\n};\n"],"names":["agentInstructionsExplainMapper","data","map","instruction","AgentInstructionsExplain","AgentInstructionsExplainList","ChatModel","getEmptyChat","name","timestamp","Math","floor","Date","now","md5HashGenerator","constructor","hashGenerator","this","_id","id","_name","_timestamp","_chatHistory","chatHistory","ChatItemsListModel","hash","generateHash","JSON","stringify","value","toRenameRequestPayload","ChatByDayModel","_day","day","_chats","chats","ChatsListModel","_chatsByDay","sortByTime","updateChatsByDay","sort","a","b","updateChatTimestamp","chatId","chat","find","c","updateChatName","deleteChat","chatToBeDeleted","filter","forEach","toDateString","dayModel","d","push","appendChat","replaceChat","newChat","oldChat","isEmpty","length","getFirstChat","deselectAll","selected","selectChat","getChat","getNonPersistedChat","renameChat","renamedChat","chatsByDay","TTYGService","TTYGRestService","$repositories","getConversation","then","response","chatModelMapper","renameConversation","exportConversation","res","contentDispositionHeader","headers","filename","split","substring","askQuestion","chatItem","toAskRequestPayload","chatAnswerModelMapper","continueChatRun","continueData","payload","toContinueRunRequestPayload","getConversations","savedQueryName","owner","chatsListMapper","deleteConversation","createConversation","toCreateChatRequestPayload","getAgents","localRepositories","getLocalReadablGraphdbRepositoryIds","agentListMapper","getAgent","agentModelMapper","createAgent","editAgent","deleteAgent","explainResponse","answerId","toExplainResponsePayload","explainResponseMapper","getDefaultAgent","getAgentDefaultValues","explainAgentSettings","angular","module","factory","$inject","ChatAnswerModel","_chatId","_chatName","chatName","_messages","messages","_continueRunId","continueRunId","tokenUsageInfo","ContinueChatRun","runId","_chatItem","_runId","conversationId","agentId","tzOffset","getTimezoneOffset","agentFormModelMapper","agentModel","defaultAgentModel","operation","agentFormModel","AgentFormModel","repositoryId","model","temperature","undefined","topP","seed","instructions","agentInstructionsFormMapper","extractionMethodsFormMapper","assistantExtractionMethods","additionalExtractionMethodsResponse","defaultAdditionalExtractionMethodData","additionalExtractionMethods","method","expanded","AdditionalExtractionMethod","IRI_DISCOVERY_SEARCH","AUTOCOMPLETE_IRI_DISCOVERY_SEARCH","some","agentMethod","maxNumberOfResultsPerCall","_maxNumberOfResultsPerCall","AdditionalExtractionMethodFormModel","setAdditionalExtractionMethod","additionalExtractionMethodsFormMapper","currentAgentModelInstructions","defaultInstructions","systemInstruction","userInstruction","AgentInstructionsFormModel","defaultSystemInstruction","defaultUserInstruction","defaultData","defaultExtractionMethods","defaultExtractionMethod","defaultSparqlMethodValues","extractionMethod","isMethodSelected","sparqlOption","AGENT_OPERATION","CREATE","sparqlQuery","ontologyGraph","shouldShowSelectedMethods","EDIT","CLONE","existingMethod","ExtractionMethodFormModel","addMissingNamespaces","TextFieldModel","minLength","maxLength","similarityIndex","similarityIndexThreshold","NumericRangeModel","minValue","maxValue","step","maxNumberOfTriplesPerCall","queryTemplate","retrievalConnectorInstance","setExtractionMethod","localRepositoryIds","AgentListModel","agentModels","agent","AgentModel","isRepositoryDeleted","includes","agentInstructionsMapper","extractionMethodsMapper","additionalExtractionMethodsMapper","compatibility","extractionMethodMapper","ExtractionMethodModel","additionalExtractionMethod","additionalExtractionMethodMapper","AdditionalExtractionMethodModel","limit","AgentInstructionsModel","ChatItemModel","question","_agentId","_question","_answers","answers","setQuestionMessage","message","ChatMessageModel","role","CHAT_MESSAGE_ROLE","USER","getQuestionMessage","items","_items","appendItem","getLast","chatModels","chatItemsModelMapper","chatMessageModelListMapper","chatMessage","chatMessageModelMapper","currentItem","usage","ExplainResponseModel","_answerId","_queryMethods","queryMethods","_expanded","ExplainQueryMethodsListModel","ExplainQueryMethodModel","_rawQuery","rawQuery","_query","query","_queryType","queryType","_errorMessage","errorOutput","errorMessage","ExplainQueryType","SPARQL","OTHER","_type","type","_content","content","_size","size","_instructions","explainQueryMethodsListMapper","explainQueryMethodMapper"],"sourceRoot":""}
@@ -1,2 +0,0 @@
1
- export const __webpack_id__=36737;export const __webpack_ids__=[36737];export const __webpack_modules__={36737:()=>{PluginRegistry.add("guide.step",[{guideBlockName:"similarity-search-method",getSteps:(e,t)=>{const i=t.GuideUtils;e.mainAction="similarity-search-method";const l=e.disable,s=i.getGuideElementSelector("query-method-similarity_search-input");return l?[{guideBlockName:"clickable-element",options:angular.extend({},{content:"guide.step_plugin.similarity-search-method.disable-toggle",class:"toggle-similarity-search-guide-dialog",url:"/ttyg",showOn:()=>i.isChecked(s),elementSelector:i.getGuideElementSelector("query-method-similarity_search"),clickableElementSelector:s,onNextValidate:()=>Promise.resolve(!i.isChecked(s))},e)}]:[{guideBlockName:"info-message",options:angular.extend({},{content:"guide.step_plugin.similarity-search-method.content",url:"/ttyg",class:"info-similarity-search-guide-dialog",disablePreviousFlow:!0},e)},{guideBlockName:"clickable-element",options:angular.extend({},{content:"guide.step_plugin.similarity-search-method.enable-toggle",class:"toggle-similarity-search-guide-dialog",url:"/ttyg",elementSelector:i.getGuideElementSelector("query-method-similarity_search"),clickableElementSelector:s,onNextValidate:()=>Promise.resolve(i.isChecked(s))},e)},{guideBlockName:"clickable-element",options:angular.extend({},{content:"guide.step_plugin.similarity-search-method.select-index",elementSelector:i.getGuideElementSelector("similarity-index-select"),class:"select-similarity-index-guide-dialog"},e)}]}}])}};
2
- //# sourceMappingURL=36737.0f3e0ff6942f79d49804.bundle.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"36737.0f3e0ff6942f79d49804.bundle.js","mappings":"oHAAAA,eAAeC,IAAI,aAAc,CAC7B,CACIC,eAAgB,2BAChBC,SAAUA,CAACC,EAASC,KAChB,MAAMC,EAAaD,EAASC,WAC5BF,EAAQG,WAAa,2BAErB,MAAMC,EAAkBJ,EAAQK,QAC1BC,EAAiBJ,EAAWK,wBAAwB,wCAE1D,OAAIH,EACO,CAAC,CACJN,eAAgB,oBAChBE,QAASQ,QAAQC,OAAO,CAAC,EAAG,CACxBC,QAAS,4DACTC,MAAO,wCACPC,IAAK,QACLC,OAAQA,IAAMX,EAAWY,UAAUR,GACnCS,gBAAiBb,EAAWK,wBAAwB,kCACpDS,yBAA0BV,EAC1BW,eAAgBA,IAAMC,QAAQC,SAASjB,EAAWY,UAAUR,KAC7DN,KAIJ,CACH,CACIF,eAAgB,eAChBE,QAASQ,QAAQC,OAAO,CAAC,EAAG,CACxBC,QAAS,qDACTE,IAAK,QACLD,MAAO,sCACPS,qBAAqB,GACtBpB,IAEP,CACIF,eAAgB,oBAChBE,QAASQ,QAAQC,OAAO,CAAC,EAAG,CACxBC,QAAS,2DACTC,MAAO,wCACPC,IAAK,QACLG,gBAAiBb,EAAWK,wBAAwB,kCACpDS,yBAA0BV,EAC1BW,eAAgBA,IAAMC,QAAQC,QAAQjB,EAAWY,UAAUR,KAC5DN,IAEP,CACIF,eAAgB,oBAChBE,QAASQ,QAAQC,OAAO,CAAC,EAAG,CACxBC,QAAS,0DACTK,gBAAiBb,EAAWK,wBAAwB,2BACpDI,MAAO,wCACRX,Q","sources":["webpack://root-config/./packages/legacy-workbench/src/js/angular/guides/steps/complex/ttyg/common/similarity-search-method/plugin.js"],"sourcesContent":["PluginRegistry.add('guide.step', [\n {\n guideBlockName: 'similarity-search-method',\n getSteps: (options, services) => {\n const GuideUtils = services.GuideUtils;\n options.mainAction = 'similarity-search-method';\n\n const shouldToggleOff = options.disable;\n const toggleSelector = GuideUtils.getGuideElementSelector('query-method-similarity_search-input');\n\n if (shouldToggleOff) {\n return [{\n guideBlockName: 'clickable-element',\n options: angular.extend({}, {\n content: 'guide.step_plugin.similarity-search-method.disable-toggle',\n class: 'toggle-similarity-search-guide-dialog',\n url: '/ttyg',\n showOn: () => GuideUtils.isChecked(toggleSelector),\n elementSelector: GuideUtils.getGuideElementSelector('query-method-similarity_search'),\n clickableElementSelector: toggleSelector,\n onNextValidate: () => Promise.resolve(!GuideUtils.isChecked(toggleSelector))\n }, options)\n }]\n }\n\n return [\n {\n guideBlockName: 'info-message',\n options: angular.extend({}, {\n content: 'guide.step_plugin.similarity-search-method.content',\n url: '/ttyg',\n class: 'info-similarity-search-guide-dialog',\n disablePreviousFlow: true\n }, options)\n },\n {\n guideBlockName: 'clickable-element',\n options: angular.extend({}, {\n content: 'guide.step_plugin.similarity-search-method.enable-toggle',\n class: 'toggle-similarity-search-guide-dialog',\n url: '/ttyg',\n elementSelector: GuideUtils.getGuideElementSelector('query-method-similarity_search'),\n clickableElementSelector: toggleSelector,\n onNextValidate: () => Promise.resolve(GuideUtils.isChecked(toggleSelector))\n }, options)\n },\n {\n guideBlockName: 'clickable-element',\n options: angular.extend({}, {\n content: 'guide.step_plugin.similarity-search-method.select-index',\n elementSelector: GuideUtils.getGuideElementSelector('similarity-index-select'),\n class: 'select-similarity-index-guide-dialog',\n }, options)\n }\n ];\n }\n }\n]);\n"],"names":["PluginRegistry","add","guideBlockName","getSteps","options","services","GuideUtils","mainAction","shouldToggleOff","disable","toggleSelector","getGuideElementSelector","angular","extend","content","class","url","showOn","isChecked","elementSelector","clickableElementSelector","onNextValidate","Promise","resolve","disablePreviousFlow"],"sourceRoot":""}
@@ -1,2 +0,0 @@
1
- export const __webpack_id__=39448;export const __webpack_ids__=[39448];export const __webpack_modules__={39448:()=>{PluginRegistry.add("guide.step",[{guideBlockName:"execute-sparql-query",getSteps:(e,t)=>{const r="#query-editor",n=t.GuideUtils,o=t.YasguiComponentDirectiveUtil,i=t.toastr,s=t.$translate,u=t.$interpolate,l=t.RoutingUtil;e.mainAction="execute-sparql-query";const a=document.createElement("code"),c=document.createElement("button"),p="guide-copy-to-editor-query-button";c.className=`btn btn-sm btn-secondary ${p}`,c.innerText=s.instant("guide.step_plugin.execute-sparql-query.copy-to-editor.button"),c.setAttribute("ng-click","copyQuery()");const d=[{guideBlockName:"click-main-menu",options:angular.extend({},{menu:"sparql",showIntro:!0},e)}],S={"-1":'PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>\nselect * where { \n\t?s ?p ?o .\n?o rdf:type ""\n} limit 100 '};let g=!1;return e.queries.forEach((y,m)=>{const q=y.query;S[m]=q,a.innerText=q,e.queryAsHtmlCodeElement='<div class="shepherd-code">'+a.outerHTML+c.outerHTML+"</div>";const E=((e,t,r)=>n=>{n.preventDefault(),e.setQuery(t,r).then(()=>{})})(o,r,q);let _;d.push({guideBlockName:"input-element",options:angular.extend({},{content:"guide.step_plugin.execute-sparql-query.query-editor.content",url:"/sparql",elementSelector:n.CSS_SELECTORS.SPARQL_EDITOR_SELECTOR,class:"yasgui-query-editor-guide-dialog",beforeShowPromise:()=>o.getOntotextYasguiElementAsync(r).then(()=>n.waitFor(n.CSS_SELECTORS.SPARQL_EDITOR_SELECTOR,3)).then(()=>n.deferredShow(500)()).catch(e=>{throw t.toastr.error(t.$translate.instant("guide.unexpected.error.message")),e}),onNextValidate:()=>o.getOntotextYasguiElementAsync(r).then(e=>e.getQuery().then(t=>({yasgui:e,queryFromEditor:t}))).then(({yasgui:t,queryFromEditor:r})=>{const o=n.removeWhiteSpaces(r);if(o!==n.removeWhiteSpaces(q)){if("select*where{?s?p?o.}limit100"!==o&&!g)return n.noNextErrorToast(i,s,u,"guide.step_plugin.execute-sparql-query.query-not-same.error",e),!1;t.setQuery(q)}return g=!0,!0}),initPreviousStep:()=>0===m?o.setQuery(r,"select * where { \n\t?s ?p ?o .\n} limit 100 \n"):("sparql"!==l.getCurrentRoute()&&l.navigate("/sparql"),n.waitFor(n.CSS_SELECTORS.SPARQL_EDITOR_SELECTOR).then(()=>o.executeSparqlQuery("#query-editor",q))),scrollToHandler:n.scrollToTop,extraContent:y.queryExtraContent,show:e=>()=>{_=e.currentStep.el.querySelector(`.${p}`),_.addEventListener("click",E)},hide:()=>()=>{_&&_.removeEventListener("click",E)}},e)}),d.push({guideBlockName:"clickable-element",options:angular.extend({},{content:"guide.step_plugin.execute-sparql-query.run-sparql-query.content",url:"/sparql",elementSelector:n.CSS_SELECTORS.SPARQL_RUN_BUTTON_SELECTOR,class:"yasgui-run-button-guide-dialog",onNextClick:e=>o.getOntotextYasguiElementAsync(r).then(t=>{t.query(),e.next()}),scrollToHandler:n.scrollToTop,canBePaused:!1,initPreviousStep:(e,t)=>{const r=e.ShepherdService.getPreviousStepFromHistory(t);return r.options.initPreviousStep(e,r.options.id).then(()=>e.ShepherdService.getCurrentStepId()===t?Promise.resolve():o.executeSparqlQuery("#query-editor",q))}},e)}),d.push({guideBlockName:"read-only-element",options:angular.extend({},{content:"guide.step_plugin.execute-sparql-query.result-explain.content",url:"/sparql",placement:"top",elementSelector:n.CSS_SELECTORS.SPARQL_RESULTS_SELECTOR,class:"yasgui-query-results-guide-dialog",fileName:e.fileName,scrollToHandler:n.scrollToTop,extraContent:y.resultExtraContent,canBePaused:!1,initPreviousStep:(e,t)=>{if("sparql"!==l.getCurrentRoute())return l.navigate("/sparql"),n.waitFor(n.CSS_SELECTORS.SPARQL_EDITOR_SELECTOR).then(()=>n.deferredShow(500)()).then(()=>o.executeSparqlQuery("#query-editor",q));const i=e.ShepherdService.getPreviousStepFromHistory(t);return i.options.initPreviousStep(e,i.options.id).then(()=>o.setQuery(r,q))}},e)})}),d}}])}};
2
- //# sourceMappingURL=39448.a6ec42f0d72642fe9ee9.bundle.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"39448.a6ec42f0d72642fe9ee9.bundle.js","mappings":"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","sources":["webpack://root-config/./packages/legacy-workbench/src/js/angular/guides/steps/complex/execute-sparql-query/plugin.js"],"sourcesContent":["const createCopyToEditorListener = (YasguiComponentDirectiveUtil, sparqlDirectiveSelector, query) => {\n return (event) => {\n event.preventDefault();\n YasguiComponentDirectiveUtil.setQuery(sparqlDirectiveSelector, query).then(() => {});\n }\n}\n\nPluginRegistry.add('guide.step', [\n {\n guideBlockName: 'execute-sparql-query',\n getSteps: (options, services) => {\n const SPARQL_DIRECTIVE_SELECTOR = '#query-editor';\n const GuideUtils = services.GuideUtils;\n const YasguiComponentDirectiveUtil = services.YasguiComponentDirectiveUtil;\n const toastr = services.toastr;\n const $translate = services.$translate;\n const $interpolate = services.$interpolate;\n const RoutingUtil = services.RoutingUtil;\n options.mainAction = 'execute-sparql-query';\n\n const code = document.createElement('code');\n const copy = document.createElement('button');\n const copyToEditorButtonClass = 'guide-copy-to-editor-query-button';\n copy.className = `btn btn-sm btn-secondary ${copyToEditorButtonClass}`;\n copy.innerText = $translate.instant('guide.step_plugin.execute-sparql-query.copy-to-editor.button');\n copy.setAttribute('ng-click', 'copyQuery()');\n\n const steps = [\n {\n guideBlockName: 'click-main-menu',\n options: angular.extend({}, {\n menu: 'sparql',\n showIntro: true\n }, options)\n }\n ];\n\n const defaultQuery = 'select * where { \\n\\t?s ?p ?o .\\n} limit 100 \\n';\n const queries = {};\n queries[-1] = 'PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>\\nselect * where { \\n\\t?s ?p ?o .\\n?o rdf:type \"\"\\n} limit 100 ';\n\n let overwriteQuery = false;\n options.queries.forEach((queryDef, index) => {\n const query = queryDef.query;\n queries[index] = query;\n code.innerText = query;\n options.queryAsHtmlCodeElement = '<div class=\"shepherd-code\">' + code.outerHTML + copy.outerHTML + '</div>';\n\n const copyToEditorListener = createCopyToEditorListener(YasguiComponentDirectiveUtil, SPARQL_DIRECTIVE_SELECTOR, query);\n let stepHTMLElement;\n\n steps.push({\n guideBlockName: 'input-element',\n options: angular.extend({}, {\n content: 'guide.step_plugin.execute-sparql-query.query-editor.content',\n url: '/sparql',\n elementSelector: GuideUtils.CSS_SELECTORS.SPARQL_EDITOR_SELECTOR,\n class: 'yasgui-query-editor-guide-dialog',\n beforeShowPromise: () => YasguiComponentDirectiveUtil.getOntotextYasguiElementAsync(SPARQL_DIRECTIVE_SELECTOR)\n .then(() => GuideUtils.waitFor(GuideUtils.CSS_SELECTORS.SPARQL_EDITOR_SELECTOR, 3))\n .then(() => GuideUtils.deferredShow(500)())\n .catch((error) => {\n services.toastr.error(services.$translate.instant('guide.unexpected.error.message'));\n throw error;\n }),\n onNextValidate: () => YasguiComponentDirectiveUtil.getOntotextYasguiElementAsync(SPARQL_DIRECTIVE_SELECTOR)\n .then((yasgui) => yasgui.getQuery().then((query) => ({yasgui, queryFromEditor: query})))\n .then(({yasgui, queryFromEditor}) => {\n const editorQuery = GuideUtils.removeWhiteSpaces(queryFromEditor);\n const stepQuery = GuideUtils.removeWhiteSpaces(query);\n if (editorQuery !== stepQuery) {\n if (editorQuery === 'select*where{?s?p?o.}limit100' || overwriteQuery) {\n // The query is the default query OR we previously overwrote it => we can overwrite it\n yasgui.setQuery(query);\n } else {\n GuideUtils.noNextErrorToast(toastr, $translate, $interpolate,\n 'guide.step_plugin.execute-sparql-query.query-not-same.error', options);\n return false;\n }\n }\n overwriteQuery = true;\n return true;\n }),\n initPreviousStep: () => {\n if (index === 0) {\n return YasguiComponentDirectiveUtil.setQuery(SPARQL_DIRECTIVE_SELECTOR, defaultQuery);\n }\n\n const haveToReload = 'sparql' !== RoutingUtil.getCurrentRoute();\n\n if (haveToReload) {\n RoutingUtil.navigate('/sparql');\n }\n\n return GuideUtils.waitFor(GuideUtils.CSS_SELECTORS.SPARQL_EDITOR_SELECTOR)\n .then(() => YasguiComponentDirectiveUtil.executeSparqlQuery(\"#query-editor\", query));\n },\n scrollToHandler: GuideUtils.scrollToTop,\n extraContent: queryDef.queryExtraContent,\n show: (_guide) => () => {\n stepHTMLElement = _guide.currentStep.el.querySelector(`.${copyToEditorButtonClass}`);\n stepHTMLElement.addEventListener('click', copyToEditorListener);\n },\n hide: () => () => {\n if (stepHTMLElement) {\n stepHTMLElement.removeEventListener('click', copyToEditorListener);\n }\n }\n }, options)\n });\n steps.push({\n guideBlockName: 'clickable-element',\n options: angular.extend({}, {\n content: 'guide.step_plugin.execute-sparql-query.run-sparql-query.content',\n url: '/sparql',\n elementSelector: GuideUtils.CSS_SELECTORS.SPARQL_RUN_BUTTON_SELECTOR,\n class: 'yasgui-run-button-guide-dialog',\n onNextClick: (guide) => YasguiComponentDirectiveUtil.getOntotextYasguiElementAsync(SPARQL_DIRECTIVE_SELECTOR)\n .then((yasgui) => {\n yasgui.query();\n guide.next();\n }),\n scrollToHandler: GuideUtils.scrollToTop,\n canBePaused: false,\n initPreviousStep: (services, stepId) => {\n const previousStep = services.ShepherdService.getPreviousStepFromHistory(stepId);\n return previousStep.options.initPreviousStep(services, previousStep.options.id)\n .then(() => {\n const currentStepId = services.ShepherdService.getCurrentStepId();\n // Skip expanding of node if last step is \"visual-graph-expand\"\n if (currentStepId === stepId) {\n return Promise.resolve();\n }\n\n return YasguiComponentDirectiveUtil.executeSparqlQuery(\"#query-editor\", query);\n });\n }\n }, options)\n });\n steps.push({\n guideBlockName: 'read-only-element',\n options: angular.extend({}, {\n content: 'guide.step_plugin.execute-sparql-query.result-explain.content',\n url: '/sparql',\n placement: 'top',\n elementSelector: GuideUtils.CSS_SELECTORS.SPARQL_RESULTS_SELECTOR,\n class: 'yasgui-query-results-guide-dialog',\n fileName: options.fileName,\n scrollToHandler: GuideUtils.scrollToTop,\n extraContent: queryDef.resultExtraContent,\n canBePaused: false,\n initPreviousStep: (services, stepId) => {\n if ('sparql' !== RoutingUtil.getCurrentRoute()) {\n RoutingUtil.navigate('/sparql');\n return GuideUtils.waitFor(GuideUtils.CSS_SELECTORS.SPARQL_EDITOR_SELECTOR)\n .then(() => GuideUtils.deferredShow(500)())\n .then(() => YasguiComponentDirectiveUtil.executeSparqlQuery(\"#query-editor\", query));\n }\n\n const previousStep = services.ShepherdService.getPreviousStepFromHistory(stepId);\n return previousStep.options.initPreviousStep(services, previousStep.options.id)\n .then(() => YasguiComponentDirectiveUtil.setQuery(SPARQL_DIRECTIVE_SELECTOR, query));\n }\n }, options)\n });\n });\n\n return steps;\n }\n }\n]);\n"],"names":["PluginRegistry","add","guideBlockName","getSteps","options","services","SPARQL_DIRECTIVE_SELECTOR","GuideUtils","YasguiComponentDirectiveUtil","toastr","$translate","$interpolate","RoutingUtil","mainAction","code","document","createElement","copy","copyToEditorButtonClass","className","innerText","instant","setAttribute","steps","angular","extend","menu","showIntro","queries","overwriteQuery","forEach","queryDef","index","query","queryAsHtmlCodeElement","outerHTML","copyToEditorListener","createCopyToEditorListener","sparqlDirectiveSelector","event","preventDefault","setQuery","then","stepHTMLElement","push","content","url","elementSelector","CSS_SELECTORS","SPARQL_EDITOR_SELECTOR","class","beforeShowPromise","getOntotextYasguiElementAsync","waitFor","deferredShow","catch","error","onNextValidate","yasgui","getQuery","queryFromEditor","editorQuery","removeWhiteSpaces","noNextErrorToast","initPreviousStep","getCurrentRoute","navigate","executeSparqlQuery","scrollToHandler","scrollToTop","extraContent","queryExtraContent","show","_guide","currentStep","el","querySelector","addEventListener","hide","removeEventListener","SPARQL_RUN_BUTTON_SELECTOR","onNextClick","guide","next","canBePaused","stepId","previousStep","ShepherdService","getPreviousStepFromHistory","id","getCurrentStepId","Promise","resolve","placement","SPARQL_RESULTS_SELECTOR","fileName","resultExtraContent"],"sourceRoot":""}
@@ -1 +0,0 @@
1
- {"version":3,"file":"39874.6ca23ead080b52dc1bc6.bundle.js","mappings":"qLAAO,MCwBMA,EAAU,MAsCrBC,WAAAA,CAAAC,I,eAlCiB,KAAAC,uBAAyBC,EAAAA,gBAAgBC,IAAIC,EAAAA,wBAC7C,KAAAC,sBAAwBH,EAAAA,gBAAgBC,IAAIG,EAAAA,uBAC5C,KAAAC,yBAA2BL,EAAAA,gBAAgBC,IAAIK,EAAAA,0BAcvD,KAAeC,iBAAG,EAClB,KAAaC,eAAY,EACzB,KAAAC,WAAaC,KAAKC,uBASV,KAAAC,cAAkC,IAAIC,EAAAA,iBAE/C,KAAiBC,mBAAG,EAM1BJ,KAAKK,qB,SC/DgBC,EAAMC,EAAO,KACpC,IAAIC,EACJ,MAAO,IAAIC,KACTC,aAAaF,GACbA,EAAQG,WAAW,IAAML,EAAKM,MAAMZ,KAAMS,GAAOF,GAErD,CDyDgCM,CAAS,IAAMb,KAAKc,sBAAuB,IACvEC,EAAAA,cAAcC,YAAYC,iBAAiB,UAAWjB,KAAKkB,oBAC5D,CAEDC,gBAAAA,GACEnB,KAAKc,qB,CAGPM,iBAAAA,GACEpB,KAAKqB,6BACLrB,KAAKsB,mBAELtB,KAAKE,cAAcqB,IAAIvB,KAAKX,uBAAuBmC,yBAA0BC,GAAoBzB,KAAK0B,cAAcD,KACpHzB,KAAKE,cAAcqB,IACjBjC,EAAAA,gBAAgBC,IAAIoC,EAAAA,cAAcC,UAAUC,EAAAA,UAAUC,eAAiBC,IACrE/B,KAAKL,yBAAyBqC,oBAAoBD,EAAqBE,QACvEjC,KAAK0B,cAAc1B,KAAKX,uBAAuB6C,yBAEnDlC,KAAK0B,cAAc1B,KAAKX,uBAAuB6C,qB,CAOjDC,oBAAAA,GACEnC,KAAKE,cAAckC,gB,CAGrBC,MAAAA,GACE,OACEC,EAAAA,EAAAA,GAACC,EAAAA,EAAK,CAAAC,IAAA,2CAAAC,MAAM,cAEVH,EAAAA,EAAAA,GAAK,OAAAE,IAAA,2CAAAC,MAAM,yBACTH,EAAAA,EAAAA,GAAA,QAAAE,IAAA,2CAAME,KAAK,cAEbJ,EAAAA,EAAAA,GAAQ,UAAAE,IAAA,2CAAAC,MAAM,aACXzC,KAAK2C,YAAaL,EAAAA,EAAAA,GAAA,eAAAE,IAAA,+CAGrBF,EAAAA,EAAAA,GAAK,OAAAE,IAAA,2CAAAC,MAAM,cACTH,EAAAA,EAAAA,GAAa,eAAAE,IAAA,2CAAAI,IAAK5C,KAAK6C,kBAAiB,mBACT7C,KAAKH,mBAGrCG,KAAKF,eACJwC,EAAAA,EAAAA,GAAA,OAAKG,MAAM,sBACTH,EAAAA,EAAAA,GAAM,QAAAI,KAAK,WAEbJ,EAAAA,EAAAA,GAAA,gCAEFA,EAAAA,EAAAA,GAAQ,UAAAE,IAAA,2CAAAC,MAAM,aACXzC,KAAK2C,YAAaL,EAAAA,EAAAA,GAAA,eAAAE,IAAA,+CAErBF,EAAAA,EAAAA,GAA6B,gBAAAE,IAAA,8CAC7BF,EAAAA,EAAAA,GAA2B,eAAAE,IAAA,6C,CAcjCM,eAAAA,CAAgBC,GACd/C,KAAKI,kBAAoB2C,EAAMC,OAAOC,QAClCjD,KAAKI,kBACPJ,KAAKkD,YAAYC,UAAU5B,IAAI,YAE/BvB,KAAKkD,YAAYC,UAAUC,OAAO,W,CAStCC,QAAAA,GACErD,KAAKK,sB,CAMCS,mBAAAA,GACNd,KAAKH,gBAAkBkB,EAAAA,cAAcC,YAAYsC,YDxJ/C,ICyJGtD,KAAKH,iBAAoBG,KAAKI,kBAGjCJ,KAAKkD,YAAYC,UAAU5B,IAAI,YAF/BvB,KAAKkD,YAAYC,UAAUC,OAAO,W,CAM9BlC,mBAAAA,CAAoB6B,GACVzD,EAAAA,gBAAgBC,IAAIgE,EAAAA,wCAC5BrC,oBAAoB6B,E,CAMtB1B,0BAAAA,GACN,MAAMhC,EAAyBC,EAAAA,gBAAgBC,IAAIC,EAAAA,wBACnDQ,KAAKE,cAAcqB,IACjBlC,EAAuBmE,2BAA4BC,IACjDzD,KAAKyD,kBAAoBA,EACzBzD,KAAKsB,sBAITtB,KAAKE,cAAcqB,IACjBlC,EAAuBqE,wBAAyBC,IAC9C3D,KAAK2D,eAAiBA,EACtB3D,KAAKsB,sBAITtB,KAAKE,cAAcqB,IACjBjC,EAAAA,gBAAgBC,IAAIoC,EAAAA,cAAcC,UAAUC,EAAAA,UAAU+B,OAAQ,KAC5D5D,KAAK6D,0BACL7D,KAAKsB,mBACLtB,KAAKX,uBAAuByE,sBAAsB,IAAIC,EAAAA,oBAG1D/D,KAAKE,cAAcqB,IACjBlC,EAAuB2E,mBAAmB,KACxChE,KAAK6D,0BACL7D,KAAKsB,qB,CAKHI,aAAAA,CAAcuC,GACpB,GAAIA,EAAa,CACf,MAAMC,GAAOC,EAAAA,EAAAA,eAEbnE,KAAKF,eAAiBmE,EAAYG,aAAaF,KAAgBlE,KAAKP,sBAAsB4E,c,MAG1FrE,KAAKF,eAAgB,EAGvB,MAAMwE,EAAcC,SAASC,cAAc,mBACvCF,IACFA,EAAYG,MAAMC,QAAU1E,KAAKF,cAAgB,QAAU,O,CAIvDwB,gBAAAA,GACN,GAAKtB,KAAKP,sBAAsBkF,oBAGzB,CACL,MAAMC,IAAY5E,KAAKyD,qBAAuBzD,KAAK2D,eAC7CkB,EAAkB7E,KAAKP,sBAAsBoF,mBAAqB7E,KAAKP,sBAAsBqF,gBAEnG9E,KAAK2C,UAAYiC,GAAWC,EAC5B7E,KAAKD,WAAa8E,C,MAPlB7E,KAAK2C,WAAY,EACjB3C,KAAKD,YAAa,C,CAUdE,oBAAAA,GACN,MAAM8E,EAAczF,EAAAA,gBAAgBC,IAAIG,EAAAA,uBACxC,OAAQqF,EAAYJ,qBAAuBI,EAAYF,mBAAqBE,EAAYD,e,CAGlFE,cAAAA,CAAeC,GACrB,OAAOjF,KAAKC,wBACPX,EAAAA,gBAAgBC,IAAIG,EAAAA,uBAAuBwF,QAAQD,E,CAMlDpC,eAAAA,GACN,OAAQsC,IACNnF,KAAKoF,UAAYD,EACjBnF,KAAKoF,UAAUC,UAAYtE,EAAAA,cAAcC,YAAYsE,eAAe/F,IAAI,aACxES,KAAK6D,0B,CAIDA,uBAAAA,G,UACN,KAAqB,QAAhB0B,EAAAvF,KAAKoF,iBAAW,IAAAG,OAAA,EAAAA,EAAAF,WACnB,OAGF,MAAMG,EAAeC,I,MACnBA,EAAKC,WAAa1F,KAAKgF,eAAeS,EAAKR,OACxB,QAAfM,EAAAE,EAAKE,gBAAU,IAAAJ,OAAA,EAAAA,EAAAK,SACjBH,EAAKE,SAASE,QAAQL,IAID,QAAzBM,EAAc,QAAdC,EAAA/F,KAAKoF,iBAAS,IAAAW,OAAA,EAAAA,EAAEV,iBAAS,IAAAS,GAAAA,EAAED,QAAQG,IACjCA,EAAOC,MAAMJ,QAAQL,KAGvBxF,KAAKoF,UAAUC,UAAY,IAAIrF,KAAKoF,UAAUC,U,iDE3Q5B,+hB","sources":["webpack://root-config/src/models/constants.ts","webpack://root-config/src/components/onto-layout/onto-layout.tsx","webpack://root-config/src/utils/function-utils.ts","webpack://root-config/src/components/onto-layout/onto-layout.scss"],"sourcesContent":["export const RESPONSIVE_BREAKPOINTS = {\n SM: 640,\n MD: 768,\n LG: 1024,\n XL: 1280,\n XXL: 1400,\n};\n\n/**\n * The width of the window in pixels at which the navbar should collapse.\n */\nexport const WINDOW_WIDTH_FOR_COLLAPSED_NAVBAR = RESPONSIVE_BREAKPOINTS.MD;\n","import {Component, Host, h, Listen, Element, State} from '@stencil/core';\nimport {NavbarToggledEvent} from \"../onto-navbar/navbar-toggled-event\";\nimport {debounce} from \"../../utils/function-utils\";\nimport {WINDOW_WIDTH_FOR_COLLAPSED_NAVBAR} from \"../../models/constants\";\nimport {\n ServiceProvider,\n LocalStorageSubscriptionHandlerService,\n SecurityContextService,\n RestrictedPages,\n EventService,\n EventName,\n SubscriptionList,\n AuthenticatedUser,\n SecurityConfig,\n Authority,\n AuthenticationService, NavigationEndPayload, NavigationContextService, getPathName, WindowService\n} from '@ontotext/workbench-api';\nimport {ExternalMenuItemModel} from '../onto-navbar/external-menu-model';\n\n@Component({\n tag: 'onto-layout',\n styleUrl: 'onto-layout.scss',\n shadow: false,\n})\nexport class OntoLayout {\n // ========================\n // Services\n // ========================\n private readonly securityContextService = ServiceProvider.get(SecurityContextService);\n private readonly authenticationService = ServiceProvider.get(AuthenticationService);\n private readonly navigationContextService = ServiceProvider.get(NavigationContextService);\n\n // ========================\n // DOM Refs\n // ========================\n @Element() hostElement: HTMLOntoLayoutElement;\n private navbarRef: HTMLOntoNavbarElement;\n\n // ========================\n // State\n // ========================\n @State() authenticatedUser: AuthenticatedUser;\n @State() authToken: string | null;\n @State() securityConfig: SecurityConfig;\n @State() isLowResolution = false;\n @State() hasPermission: boolean = true;\n @State() showFooter = this.isAuthenticatedFully();\n @State() isVisible: boolean;\n\n // ========================\n // Private\n // ========================\n /**\n * List of subscriptions to manage component lifecycle\n * */\n private readonly subscriptions: SubscriptionList = new SubscriptionList();\n private readonly windowResizeObserver: (...args: any) => void;\n private isNavbarCollapsed = false;\n\n // ========================\n // Lifecycle methods\n // ========================\n constructor() {\n this.windowResizeObserver = debounce(() => this.windowResizeHandler(), 50);\n WindowService.getWindow().addEventListener(\"storage\", this.handleStorageChange);\n }\n\n componentDidLoad() {\n this.windowResizeHandler();\n }\n\n connectedCallback() {\n this.subscribeToSecurityChanges();\n this.updateVisibility();\n // Subscribing here, because after a disconnectedCallback the connectedCallback is called, instead of componentDidLoad or constructor\n this.subscriptions.add(this.securityContextService.onRestrictedPagesChanged((restrictedPages) => this.setPermission(restrictedPages)));\n this.subscriptions.add(\n ServiceProvider.get(EventService).subscribe(EventName.NAVIGATION_END, (navigationEndPayload: NavigationEndPayload) => {\n this.navigationContextService.updatePreviousRoute(navigationEndPayload.oldUrl);\n this.setPermission(this.securityContextService.getRestrictedPages());\n }));\n this.setPermission(this.securityContextService.getRestrictedPages());\n }\n\n /**\n * Lifecycle method called when the component is about to be removed from the DOM.\n * Unsubscribes from all subscriptions to prevent memory leaks.\n */\n disconnectedCallback() {\n this.subscriptions.unsubscribeAll();\n }\n\n render() {\n return (\n <Host class=\"wb-layout\">\n {/* Default slot is explicitly defined to be able to hide the main content in the user permission check */}\n <div class=\"default-slot-wrapper\">\n <slot name=\"default\"></slot>\n </div>\n <header class=\"wb-header\">\n {this.isVisible && <onto-header></onto-header>}\n </header>\n\n <nav class=\"wb-navbar\">\n <onto-navbar ref={this.assignNavbarRef()}\n navbar-collapsed={this.isLowResolution}></onto-navbar>\n </nav>\n\n {this.hasPermission ? (\n <div class='main-slot-wrapper'>\n <slot name=\"main\"></slot></div>\n ) : (\n <onto-permission-banner></onto-permission-banner>\n )}\n <footer class=\"wb-footer\">\n {this.isVisible && <onto-footer></onto-footer>}\n </footer>\n <onto-tooltip></onto-tooltip>\n <onto-toastr></onto-toastr>\n </Host>\n );\n }\n\n // ========================\n // Event Listeners\n // ========================\n /**\n * Event listener for the navbar toggled event. The layout needs to respond properly when the navbar is toggled in\n * order to fit the content.\n * @param event\n */\n @Listen('navbarToggled')\n onNavbarToggled(event: CustomEvent<NavbarToggledEvent>) {\n this.isNavbarCollapsed = event.detail.payload;\n if (this.isNavbarCollapsed) {\n this.hostElement.classList.add('expanded');\n } else {\n this.hostElement.classList.remove('expanded');\n }\n }\n\n /**\n * Event listener for window resize event. We need to handle this in order to allow the navbar to collapse when the\n * window is resized.\n */\n @Listen('resize', {target: 'window'})\n onResize() {\n this.windowResizeObserver();\n }\n\n // ========================\n // Handlers\n // ========================\n private windowResizeHandler(): void {\n this.isLowResolution = WindowService.getWindow().innerWidth <= WINDOW_WIDTH_FOR_COLLAPSED_NAVBAR;\n if (!this.isLowResolution && !this.isNavbarCollapsed) {\n this.hostElement.classList.remove('expanded');\n } else {\n this.hostElement.classList.add('expanded');\n }\n }\n\n private handleStorageChange(event: StorageEvent) {\n const service = ServiceProvider.get(LocalStorageSubscriptionHandlerService);\n service.handleStorageChange(event);\n }\n\n // ========================\n // Security & Permissions\n // ========================\n private subscribeToSecurityChanges() {\n const securityContextService = ServiceProvider.get(SecurityContextService);\n this.subscriptions.add(\n securityContextService.onAuthenticatedUserChanged((authenticatedUser) => {\n this.authenticatedUser = authenticatedUser;\n this.updateVisibility();\n })\n );\n\n this.subscriptions.add(\n securityContextService.onSecurityConfigChanged((securityConfig) => {\n this.securityConfig = securityConfig;\n this.updateVisibility();\n })\n );\n\n this.subscriptions.add(\n ServiceProvider.get(EventService).subscribe(EventName.LOGOUT, () => {\n this.setNavbarItemVisibility();\n this.updateVisibility();\n this.securityContextService.updateRestrictedPages(new RestrictedPages());\n })\n );\n this.subscriptions.add(\n securityContextService.onAuthTokenChanged(()=>{\n this.setNavbarItemVisibility();\n this.updateVisibility();\n })\n );\n }\n\n private setPermission(permissions: RestrictedPages) {\n if (permissions) {\n const path = getPathName();\n // Delegate to legacy, when a user has authority in order to show the authority banner, which is not migrated yet\n this.hasPermission = !permissions.isRestricted(path) ? true : !this.authenticationService.hasAuthority();\n } else {\n // If the permissions are undefined, the user can access the url\n this.hasPermission = true;\n }\n\n const mainContent = document.querySelector('.wb-layout main') as HTMLElement;\n if (mainContent) {\n mainContent.style.display = this.hasPermission ? 'block' : 'none';\n }\n }\n\n private updateVisibility() {\n if (!this.authenticationService.isSecurityEnabled()) {\n this.isVisible = true;\n this.showFooter = true;\n } else {\n const hasAuth = !!this.authenticatedUser && !!this.securityConfig;\n const isAuthenticated = this.authenticationService.isAuthenticated() || this.authenticationService.hasFreeAccess();\n\n this.isVisible = hasAuth && isAuthenticated;\n this.showFooter = isAuthenticated;\n }\n }\n\n private isAuthenticatedFully() {\n const authService = ServiceProvider.get(AuthenticationService);\n return !authService.isSecurityEnabled() || authService.isAuthenticated() || authService.hasFreeAccess();\n }\n\n private shouldShowMenu(role: Authority): boolean {\n return this.isAuthenticatedFully()\n && ServiceProvider.get(AuthenticationService).hasRole(role);\n }\n\n // ========================\n // Navbar logic\n // ========================\n private assignNavbarRef() {\n return (navbar: HTMLOntoNavbarElement) => {\n this.navbarRef = navbar;\n this.navbarRef.menuItems = WindowService.getWindow().PluginRegistry.get('main.menu');\n this.setNavbarItemVisibility();\n }\n }\n\n private setNavbarItemVisibility() {\n if (!this.navbarRef?.menuItems) {\n return;\n }\n // recursively check for children and set their shouldShow property\n const processItem = (item: ExternalMenuItemModel) => {\n item.shouldShow = this.shouldShowMenu(item.role as Authority);\n if (item.children?.length) {\n item.children.forEach(processItem);\n }\n };\n\n this.navbarRef?.menuItems?.forEach(plugin => {\n plugin.items.forEach(processItem);\n });\n // Update the reference to trigger a re-render\n this.navbarRef.menuItems = [...this.navbarRef.menuItems];\n }\n}\n","export function debounce(func, wait = 300) {\n let timer: string | number | NodeJS.Timeout;\n return (...args: any) => {\n clearTimeout(timer);\n timer = setTimeout(() => func.apply(this, args), wait);\n };\n}\n",":host {\n display: block;\n height: 100%;\n}\n.wb-layout {\n display: grid;\n grid-template-columns: 15rem minmax(200px, 1fr);\n grid-template-rows: auto 1fr auto;\n grid-template-areas:\n \"nav header\"\n \"nav main\"\n \"nav footer\";\n min-height: 100vh;\n margin: 0;\n\n &.expanded {\n grid-template-columns: 4.375rem 1fr;\n }\n\n nav {\n grid-area: nav;\n }\n\n header {\n grid-area: header;\n }\n\n main {\n grid-area: main;\n }\n\n main .main-container {\n /* This is a temporary solution to properly align the main container next to the sidebar until a proper layout is in place. */\n margin-left: 0;\n }\n\n .default-slot-wrapper {\n display: none;\n }\n\n footer {\n grid-area: footer;\n }\n}\n\n.wb-header {\n position: sticky;\n top: 0;\n z-index: 999;\n}\n"],"names":["OntoLayout","constructor","hostRef","securityContextService","ServiceProvider","get","SecurityContextService","authenticationService","AuthenticationService","navigationContextService","NavigationContextService","isLowResolution","hasPermission","showFooter","this","isAuthenticatedFully","subscriptions","SubscriptionList","isNavbarCollapsed","windowResizeObserver","func","wait","timer","args","clearTimeout","setTimeout","apply","debounce","windowResizeHandler","WindowService","getWindow","addEventListener","handleStorageChange","componentDidLoad","connectedCallback","subscribeToSecurityChanges","updateVisibility","add","onRestrictedPagesChanged","restrictedPages","setPermission","EventService","subscribe","EventName","NAVIGATION_END","navigationEndPayload","updatePreviousRoute","oldUrl","getRestrictedPages","disconnectedCallback","unsubscribeAll","render","h","Host","key","class","name","isVisible","ref","assignNavbarRef","onNavbarToggled","event","detail","payload","hostElement","classList","remove","onResize","innerWidth","LocalStorageSubscriptionHandlerService","onAuthenticatedUserChanged","authenticatedUser","onSecurityConfigChanged","securityConfig","LOGOUT","setNavbarItemVisibility","updateRestrictedPages","RestrictedPages","onAuthTokenChanged","permissions","path","getPathName","isRestricted","hasAuthority","mainContent","document","querySelector","style","display","isSecurityEnabled","hasAuth","isAuthenticated","hasFreeAccess","authService","shouldShowMenu","role","hasRole","navbar","navbarRef","menuItems","PluginRegistry","_a","processItem","item","shouldShow","children","length","forEach","_c","_b","plugin","items"],"sourceRoot":""}
@@ -1,2 +0,0 @@
1
- export const __webpack_id__=4125;export const __webpack_ids__=[4125];export const __webpack_modules__={4125:()=>{PluginRegistry.add("guide.step",[{guideBlockName:"create-repository",getSteps:(e,t)=>{const o=t.GuideUtils;e.mainAction="create-repository";const r=o.getGuideElementSelector("graphDBRepositoryIdInput"),i=e.repositoryId,n=[{guideBlockName:"click-main-menu",options:angular.extend({},{menu:"repositories",showIntro:!0},e)},{guideBlockName:"clickable-element",options:angular.extend({},{content:"guide.step_plugin.create_repository.create_repository_button.content",class:"create-repository-guide-dialog",url:"/repository",elementSelector:o.getGuideElementSelector("createRepository"),onNextClick:o.clickOnGuideElement("createRepository")},e)},{guideBlockName:"clickable-element",options:angular.extend({},{content:"guide.step_plugin.create_repository.graph_db_repository.content",class:"create-gdb-repository-guide-dialog",url:"/repository/create",elementSelector:o.getGuideElementSelector("createGraphDBRepository"),onNextClick:o.clickOnGuideElement("createGraphDBRepository")},e)},{guideBlockName:"input-element",options:angular.extend({},{content:"guide.step_plugin.create_repository.repository_id.content",class:"gdb-repository-id-input-guide-dialog",url:"/repository/create/graphdb",elementSelector:r,onNextValidate:()=>Promise.resolve(o.validateTextInput(r,i))},e)}];return e.rulesetName&&n.push({guideBlockName:"clickable-element",options:angular.extend({},{content:"guide.step_plugin.create_repository.ruleset_dropdown.content",url:"/repository/create/graphdb",class:"gdb-repository-ruleset-select-guide-dialog",elementSelector:o.getGuideElementSelector("graphDBRepositoryRulesetSelect"),show:()=>()=>{o.validateTextInput(r,i)}},e)}),e.fts&&n.push({guideBlockName:"clickable-element",options:angular.extend({},{content:"guide.step_plugin.create_repository.enable-fts.content",url:"/repository/create/graphdb",class:"gdb-repository-enable-fts-guide-dialog",extraContent:"guide.step_plugin.create_repository.enable-fts.extra-content",extraContentClass:"alert alert-help text-left",elementSelector:o.getGuideElementSelector("enable-fts-search"),onNextValidate:()=>Promise.resolve(o.isChecked(o.getGuideElementSelector("enable-fts-search","input")))},e)}),n.push({guideBlockName:"clickable-element",options:angular.extend({},{content:"guide.step_plugin.create_repository.save_button.content",url:"/repository/create/graphdb",class:"create-repository-button-guide-dialog",elementSelector:o.getGuideElementSelector("graphDBRepositoryCrateButton"),show:()=>()=>{o.validateTextInput(r,i)},onNextClick:o.clickOnGuideElement("graphDBRepositoryCrateButton")},e)}),n}}])}};
2
- //# sourceMappingURL=4125.28d3c85c122f270c9b2c.bundle.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"4125.28d3c85c122f270c9b2c.bundle.js","mappings":"iHAAAA,eAAeC,IAAI,aAAc,CAC7B,CACIC,eAAgB,oBAChBC,SAAUA,CAACC,EAASC,KAChB,MAAMC,EAAaD,EAASC,WAC5BF,EAAQG,WAAa,oBAErB,MAAMC,EAA4BF,EAAWG,wBAAwB,4BAC/DC,EAAeN,EAAQM,aACvBC,EAAQ,CACV,CACIT,eAAgB,kBAChBE,QAASQ,QAAQC,OAAO,CAAC,EAAG,CACxBC,KAAM,eACNC,WAAW,GACZX,IACJ,CACCF,eAAgB,oBAChBE,QAASQ,QAAQC,OAAO,CAAC,EAAG,CACxBG,QAAS,uEACTC,MAAO,iCACPC,IAAK,cACLC,gBAAiBb,EAAWG,wBAAwB,oBACpDW,YAAad,EAAWe,oBAAoB,qBAC7CjB,IACJ,CACCF,eAAgB,oBAChBE,QAASQ,QAAQC,OAAO,CAAC,EAAG,CACxBG,QAAS,kEACTC,MAAO,qCACPC,IAAK,qBACLC,gBAAiBb,EAAWG,wBAAwB,2BACpDW,YAAad,EAAWe,oBAAoB,4BAC7CjB,IACJ,CACCF,eAAgB,gBAChBE,QAASQ,QAAQC,OAAO,CAAC,EAAG,CACxBG,QAAS,4DACTC,MAAO,uCACPC,IAAK,6BACLC,gBAAiBX,EACjBc,eAAgBA,IAAMC,QAAQC,QAAQlB,EAAWmB,kBAAkBjB,EAA2BE,KAC/FN,KA8CX,OA1CIA,EAAQsB,aACRf,EAAMgB,KAAK,CACPzB,eAAgB,oBAChBE,QAASQ,QAAQC,OAAO,CAAC,EAAG,CACxBG,QAAS,+DACTE,IAAK,6BACLD,MAAO,6CACPE,gBAAiBb,EAAWG,wBAAwB,kCACpDmB,KAAMA,IAAM,KACRtB,EAAWmB,kBAAkBjB,EAA2BE,KAE7DN,KAGRA,EAAQyB,KACPlB,EAAMgB,KAAK,CACIzB,eAAgB,oBAChBE,QAASQ,QAAQC,OAAO,CAAC,EAAG,CACxBG,QAAS,yDACTE,IAAK,6BACLD,MAAO,yCACPa,aAAc,+DACdC,kBAAmB,6BACnBZ,gBAAiBb,EAAWG,wBAAwB,qBACpDa,eAAgBA,IAAMC,QAAQC,QAAQlB,EAAW0B,UAAU1B,EAAWG,wBAAwB,oBAAqB,YACpHL,KAGtBO,EAAMgB,KAAK,CACPzB,eAAgB,oBAChBE,QAASQ,QAAQC,OAAO,CAAC,EAAG,CACxBG,QAAS,0DACTE,IAAK,6BACLD,MAAO,wCACPE,gBAAiBb,EAAWG,wBAAwB,gCACpDmB,KAAMA,IAAM,KACRtB,EAAWmB,kBAAkBjB,EAA2BE,IAE5DU,YAAad,EAAWe,oBAAoB,iCAC7CjB,KAGAO,K","sources":["webpack://root-config/./packages/legacy-workbench/src/js/angular/guides/steps/complex/create-repository/plugin.js"],"sourcesContent":["PluginRegistry.add('guide.step', [\n {\n guideBlockName: 'create-repository',\n getSteps: (options, services) => {\n const GuideUtils = services.GuideUtils;\n options.mainAction = 'create-repository';\n\n const repositoryIdInputSelector = GuideUtils.getGuideElementSelector('graphDBRepositoryIdInput');\n const repositoryId = options.repositoryId;\n const steps = [\n {\n guideBlockName: 'click-main-menu',\n options: angular.extend({}, {\n menu: 'repositories',\n showIntro: true\n }, options)\n }, {\n guideBlockName: 'clickable-element',\n options: angular.extend({}, {\n content: 'guide.step_plugin.create_repository.create_repository_button.content',\n class: 'create-repository-guide-dialog',\n url: '/repository',\n elementSelector: GuideUtils.getGuideElementSelector('createRepository'),\n onNextClick: GuideUtils.clickOnGuideElement('createRepository')\n }, options)\n }, {\n guideBlockName: 'clickable-element',\n options: angular.extend({}, {\n content: 'guide.step_plugin.create_repository.graph_db_repository.content',\n class: 'create-gdb-repository-guide-dialog',\n url: '/repository/create',\n elementSelector: GuideUtils.getGuideElementSelector('createGraphDBRepository'),\n onNextClick: GuideUtils.clickOnGuideElement('createGraphDBRepository')\n }, options)\n }, {\n guideBlockName: 'input-element',\n options: angular.extend({}, {\n content: 'guide.step_plugin.create_repository.repository_id.content',\n class: 'gdb-repository-id-input-guide-dialog',\n url: '/repository/create/graphdb',\n elementSelector: repositoryIdInputSelector,\n onNextValidate: () => Promise.resolve(GuideUtils.validateTextInput(repositoryIdInputSelector, repositoryId))\n }, options)\n }\n ];\n\n if (options.rulesetName) {\n steps.push({\n guideBlockName: 'clickable-element',\n options: angular.extend({}, {\n content: 'guide.step_plugin.create_repository.ruleset_dropdown.content',\n url: '/repository/create/graphdb',\n class: 'gdb-repository-ruleset-select-guide-dialog',\n elementSelector: GuideUtils.getGuideElementSelector('graphDBRepositoryRulesetSelect'),\n show: () => () => {\n GuideUtils.validateTextInput(repositoryIdInputSelector, repositoryId);\n }\n }, options)\n });\n }\n if(options.fts) {\n steps.push({\n guideBlockName: 'clickable-element',\n options: angular.extend({}, {\n content: 'guide.step_plugin.create_repository.enable-fts.content',\n url: '/repository/create/graphdb',\n class: 'gdb-repository-enable-fts-guide-dialog',\n extraContent: 'guide.step_plugin.create_repository.enable-fts.extra-content',\n extraContentClass: 'alert alert-help text-left',\n elementSelector: GuideUtils.getGuideElementSelector('enable-fts-search'),\n onNextValidate: () => Promise.resolve(GuideUtils.isChecked(GuideUtils.getGuideElementSelector('enable-fts-search', 'input')))\n }, options)\n });\n }\n steps.push({\n guideBlockName: 'clickable-element',\n options: angular.extend({}, {\n content: 'guide.step_plugin.create_repository.save_button.content',\n url: '/repository/create/graphdb',\n class: 'create-repository-button-guide-dialog',\n elementSelector: GuideUtils.getGuideElementSelector('graphDBRepositoryCrateButton'),\n show: () => () => {\n GuideUtils.validateTextInput(repositoryIdInputSelector, repositoryId);\n },\n onNextClick: GuideUtils.clickOnGuideElement('graphDBRepositoryCrateButton')\n }, options)\n });\n\n return steps;\n }\n }\n]);\n"],"names":["PluginRegistry","add","guideBlockName","getSteps","options","services","GuideUtils","mainAction","repositoryIdInputSelector","getGuideElementSelector","repositoryId","steps","angular","extend","menu","showIntro","content","class","url","elementSelector","onNextClick","clickOnGuideElement","onNextValidate","Promise","resolve","validateTextInput","rulesetName","push","show","fts","extraContent","extraContentClass","isChecked"],"sourceRoot":""}
@@ -1 +0,0 @@
1
- {"version":3,"file":"41621.d1b7d799116c07df17d1.bundle.js","mappings":"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","sources":["webpack://root-config/./packages/legacy-workbench/src/js/angular/models/ontop/jdbc-driver-type.js","webpack://root-config/./packages/legacy-workbench/src/js/angular/repositories/ontop-repo.directive.js","webpack://root-config/./packages/legacy-workbench/src/js/angular/repositories/app.js","webpack://root-config/./packages/legacy-workbench/src/js/angular/models/ontop/ontop-file-info.js","webpack://root-config/./packages/legacy-workbench/src/js/angular/settings/controllers.js","webpack://root-config/./packages/legacy-workbench/src/js/angular/models/ontop/ontop-driver-data.js","webpack://root-config/./packages/legacy-workbench/src/js/angular/models/ontop/ontop-connection-information.js","webpack://root-config/./packages/legacy-workbench/src/js/angular/repositories/fedx-repo.directive.js","webpack://root-config/./packages/legacy-workbench/src/js/angular/models/ontop/ontop-file-type.js","webpack://root-config/./packages/legacy-workbench/src/js/angular/settings/app.js","webpack://root-config/./packages/legacy-workbench/src/js/angular/models/ontop/ontop-repository-error.js"],"sourcesContent":["export const JdbcDriverType = {\n 'GENERIC': 'generic',\n 'MY_SQL': 'mySQL',\n 'POSTGRESS': 'postgreSQL',\n 'ORACLE': 'oracle',\n 'MS_SQL': 'msSQL',\n 'DB2': 'DB2',\n 'DREMIO': 'dremio',\n 'DATABRICKS': 'databricks',\n 'SNOWFLAKE': 'snowflake'\n};\n","import {getFileName} from \"./controllers\";\nimport {OntopFileType} from \"../models/ontop/ontop-file-type\";\nimport {OntopConnectionInformation} from \"../models/ontop/ontop-connection-information\";\nimport {OntopFileInfo} from \"../models/ontop/ontop-file-info\";\nimport {OntopRepositoryError} from \"../models/ontop/ontop-repository-error\";\nimport {OntopDriverData} from \"../models/ontop/ontop-driver-data\";\nimport {JdbcDriverType} from \"../models/ontop/jdbc-driver-type\";\n\n// A link to Ontop's website with all Ontop configuration keys\nconst ONTOP_PROPERTIES_LINK = 'https://ontop-vkg.org/guide/advanced/configuration.html';\n\nangular\n .module('graphdb.framework.repositories.ontop-repo.directive', [])\n .directive('ontopRepo', ontopRepoDirective);\n\nontopRepoDirective.$inject = ['$uibModal', 'RepositoriesRestService', 'toastr', 'Upload', '$translate'];\n\nfunction ontopRepoDirective($uibModal, RepositoriesRestService, toastr, Upload, $translate) {\n return {\n restrict: 'E',\n scope: false,\n templateUrl: 'js/angular/repositories/templates/ontop-repo.html',\n\n link: linkFunc\n };\n\n function linkFunc($scope) {\n const HOME_KEY = 36;\n const END_KEY = 35;\n const LEFT_ARROW = 37;\n const RIGHT_ARROW = 39;\n const BACKSPACE = 8;\n const KEY_C = 67;\n const KEY_A = 65;\n $scope.isGenericDriver = true;\n $scope.defaultUrlTemplate = 'jdbc:database://localhost:port/database_name';\n $scope.ontopProperiesLink = ONTOP_PROPERTIES_LINK;\n $scope.ontopFileType = OntopFileType;\n\n /**\n * Holds reference to selected driver.\n *\n * @type {OntopDriverData}\n */\n $scope.selectedDriver = new OntopDriverData();\n\n /**\n * Holds all supported jdbc drivers.\n * @type {OntopDriverData[]}\n */\n $scope.supportedDriversData = [];\n $scope.formData = {\n connectionInformation: new OntopConnectionInformation(),\n settings: {\n additionalProperties: '',\n /**\n * Holds information about repository files.\n */\n ontopFiles: []\n }\n };\n\n // =========================\n // Public functions\n // =========================\n\n /**\n * Changes selected driver and updates url field.\n * @param {string} driverType - the type of driver.\n */\n $scope.selectDriver = (driverType) => {\n $scope.selectedDriver = $scope.supportedDriversData.find((driver) => driver.driverType === driverType);\n $scope.isGenericDriver = OntopDriverData.isGenericDriver($scope.selectedDriver.driverType);\n if ($scope.editRepoPage && $scope.currentOntopRepoInfo && $scope.currentOntopRepoInfo.connectionInformation.driverType === driverType) {\n $scope.formData = _.cloneDeep($scope.currentOntopRepoInfo);\n } else {\n clearFormData();\n $scope.formData.connectionInformation.driverType = $scope.selectedDriver.driverType;\n }\n $scope.formData.connectionInformation.driverClass = $scope.selectedDriver.driverClass;\n $scope.updateUrl();\n };\n\n /**\n * Finds ontop file depends on file type <code>ontopFileType</code>\n * @param {OntopFileType} ontopFileType - the type of searched ontop file.\n * @return {OntopFileInfo} found ontop file.\n */\n $scope.getOntopFileInfo = (ontopFileType) => {\n return $scope.formData.settings.ontopFiles.find((ontopFileInfo) => ontopFileType === ontopFileInfo.type);\n };\n\n $scope.getHostNameLabel = () => {\n const hostNameLabel = OntopDriverData.isSnowflakeDriver($scope.selectedDriver.driverType) ? 'ontop.repo.database.snowflake.host_name' : 'ontop.repo.database.host_name';\n return $translate.instant(hostNameLabel) + '*';\n };\n\n $scope.getDatabaseNameLabel = () => {\n let dataBaseNameLabelKey = '';\n switch ($scope.selectedDriver.driverType) {\n case JdbcDriverType.SNOWFLAKE:\n dataBaseNameLabelKey = 'ontop.repo.database.warehouse.database_name';\n break;\n case JdbcDriverType.DATABRICKS:\n dataBaseNameLabelKey = 'ontop.repo.database.http_path.database_name';\n break;\n case JdbcDriverType.DREMIO:\n dataBaseNameLabelKey = 'ontop.repo.database.schema.database_name';\n break;\n default:\n dataBaseNameLabelKey = 'ontop.repo.database.database_name';\n }\n return $translate.instant(dataBaseNameLabelKey);\n };\n\n /**\n * Updates value of <code>$scope.formData.connectionInformation.url</code> depends on other connection information: Host name, Port...\n */\n $scope.updateUrl = () => {\n const templateUrl = calculateTemplateUrl() || '';\n $scope.formData.connectionInformation.url = templateUrl + $scope.formData.connectionInformation.urlUserInput;\n };\n\n /**\n * Checks if test connection can be executed.\n * @return {boolean} true if all needed data is filled by the user.\n */\n $scope.isTestConnectionDisabled = () => {\n const connectionInformation = $scope.formData.connectionInformation;\n const selectedDriver = $scope.selectedDriver;\n if (!connectionInformation.driverClass || !connectionInformation.url || selectedDriver.portRequired && !connectionInformation.port) {\n return true;\n }\n return !OntopDriverData.isGenericDriver(selectedDriver.driverType) && (!connectionInformation.hostName || !connectionInformation.databaseName);\n };\n\n /**\n * Performs a test connection.\n */\n $scope.testConnection = () => {\n validateHostName()\n .then(validatePort)\n .then(validateDatabaseName)\n .then(validateDriverClass)\n .then(validateUrl)\n .then(updatePropertiesFile)\n .then(() => RepositoriesRestService.validateOntopPropertiesConnection($scope.repositoryInfo))\n .then(() => toastr.success($translate.instant('ontop.repo.successful.connection.msg')))\n .catch((error) => {\n if (error instanceof OntopRepositoryError) {\n toastr.error(error.message);\n } else {\n showErrorMsg($translate.instant('ontop.repo.failed.to.connect'), error);\n }\n });\n };\n\n /**\n * Updates the file with type <code>ontopFileType</code>.\n *\n * @param {OntopFileInfo} ontopFileInfo\n */\n $scope.editFile = (ontopFileInfo) => {\n\n const fileName = $scope.repositoryInfo.params[ontopFileInfo.type].label;\n const title = $translate.instant('update.file.edit.content.header', {fileName});\n const modalInstance = $uibModal.open({\n templateUrl: 'js/angular/templates/modal/editRepoFile.html',\n controller: 'EditRepositoryFileCtrl',\n windowClass: 'update-ontop-repo-dialog',\n resolve: {\n file: () => {\n const ontopFile = $scope.repositoryInfo.params[ontopFileInfo.type];\n return ontopFile ? ontopFile.value : '';\n },\n dialogTitle: () => {\n return title;\n },\n location: () => {\n return $scope.repositoryInfo.location\n }\n }\n });\n\n modalInstance.result.then((data) => {\n // send data to backend\n RepositoriesRestService.updateRepositoryFileContent(data.fileLocation, data.content, $scope.repositoryInfo.location)\n .success((result) => {\n ontopFileInfo.fileName = getFileName(result.fileLocation);\n $scope.repositoryInfo.params[ontopFileInfo.type].value = result.fileLocation;\n }).error((error) => {\n showErrorMsg($translate.instant('common.error'), error);\n });\n });\n };\n\n $scope.uploadOntopFile = (files, ontopFileInfo) => {\n if (files && files.length) {\n const uploadFile = files[0];\n ontopFileInfo.loading = true;\n const uploadData = {\n url: 'rest/repositories/file/upload',\n data: {file: uploadFile, location: $scope.repositoryInfo.location}\n };\n Upload.upload(uploadData)\n .success((data) => {\n if (!data.success) {\n toastr.error(data.errorMessage);\n } else {\n ontopFileInfo.fileName = uploadFile.name;\n $scope.repositoryInfo.params[ontopFileInfo.type].value = data.fileLocation;\n }\n })\n .error((data) => {\n showErrorMsg($translate.instant('common.error'), data);\n $scope.uploadFile = '';\n })\n .finally(() => {\n ontopFileInfo.loading = false;\n });\n }\n };\n\n $scope.updateOntopRepo = () => {\n const createOrUpdate = $scope.editRepoPage ? $scope.editRepository : $scope.createRepo;\n validateRepositoryId()\n .then(validateHostName)\n .then(validatePort)\n .then(validateDatabaseName)\n .then(validateDriverClass)\n .then(validateUrl)\n .then(validateOntopFiles)\n .then(updatePropertiesFile)\n .then(createOrUpdate)\n .catch((error) => {\n if (error instanceof OntopRepositoryError) {\n toastr.error(error.message);\n } else {\n console.log(error);\n }\n });\n };\n\n /**\n * Some databases expect additional properties than hostname, port, database name in order to establish the connection.\n * So url is not readonly and user can modify it. Every driver instead generic one has template tha can't be changed by the user, it\n * is filled automatically when user writes hostname, port, and database name.\n *\n * This function prevent modification of driver template.\n *\n * @param {*} event - event fired by key down.\n */\n $scope.onKeyDownInUrlInput = (event) => {\n const keyCode = event.keyCode;\n // We don't prevent event if user clicked on left, right arrow, home or end key,\n // the client can move cursor without matter where the cursor is.\n if (keyCode === LEFT_ARROW || keyCode === RIGHT_ARROW || keyCode === HOME_KEY || keyCode === END_KEY) {\n return;\n }\n\n const templateUrl = calculateTemplateUrl();\n // If templateUrl is empty this means that chosen driver is generic or user is not filled hostname, port, or database name.\n // So user can type any characters into url input.\n if (!templateUrl) {\n return;\n }\n\n // Allows user to select all and copy the url value regardless that cursor position is in url template area.\n // event.metaKey -> Mac support\n const ctrlDown = event.ctrlKey || event.metaKey;\n if (ctrlDown && KEY_A === keyCode || ctrlDown && KEY_C === keyCode) {\n return;\n }\n\n const cursorPosition = event.target.selectionStart;\n\n if (keyCode === BACKSPACE && cursorPosition - 1 < templateUrl.length) {\n event.preventDefault();\n event.stopPropagation();\n }\n\n if (cursorPosition < templateUrl.length) {\n // If templateUrl is not empty and cursor is in the middle of it, we will prevent the event and not allow to modify the url.\n event.preventDefault();\n event.stopPropagation();\n }\n\n // If templateUrl is not empty and cursor is after it, the user can write any character into the url input.\n };\n\n $scope.onKeyUpInUrlInput = () => {\n extractExtraUrl();\n };\n\n // =========================\n // Private functions\n // =========================\n\n /**\n * Extracts manual user input from url input element.\n */\n const extractExtraUrl = () => {\n const templateUrl = calculateTemplateUrl();\n if (templateUrl) {\n if ($scope.formData.connectionInformation.url.startsWith(templateUrl)) {\n // If templateUrl is not empty and url input value starts with the templateUrl, the text entered by user is part after the templateUrl.\n $scope.formData.connectionInformation.urlUserInput = $scope.formData.connectionInformation.url.substring(templateUrl.length);\n } else {\n // If templateUrl is not empty and url input value don't start with the templateUrl, all url is entered by the user.\n $scope.formData.connectionInformation.urlUserInput = $scope.formData.connectionInformation.url;\n }\n } else {\n // If templateUrl is empty this means that chosen driver is generic or user is not filled hostname, port, or database name.\n // So all characters in url input are entered by user.\n $scope.formData.connectionInformation.urlUserInput = $scope.formData.connectionInformation.url;\n }\n };\n\n const calculateTemplateUrl = () => {\n if (OntopDriverData.isSnowflakeDriver($scope.selectedDriver.driverType)) {\n return calculateSnowflakeTemplateUrl();\n }\n return calculateDefaultTemplateUrl();\n };\n\n const calculateSnowflakeTemplateUrl = () => {\n let url = $scope.selectedDriver.urlTemplate;\n const connectionInformation = $scope.formData.connectionInformation;\n\n if (connectionInformation.hostName) {\n url = url.replace('{identifier}', connectionInformation.hostName);\n }\n\n if (connectionInformation.port) {\n url = url.replace('.snowflakecomputing.com/?', `.snowflakecomputing.com:${connectionInformation.port}/?`);\n }\n\n if (connectionInformation.databaseName) {\n url = url.replace('{database}', connectionInformation.databaseName);\n }\n return url;\n };\n\n const calculateDefaultTemplateUrl = () => {\n let url = $scope.selectedDriver.urlTemplate;\n const connectionInformation = $scope.formData.connectionInformation;\n if (connectionInformation.hostName) {\n if (connectionInformation.port) {\n url = url.replace('{hostport}', `${connectionInformation.hostName}:${connectionInformation.port}`);\n } else {\n url = url.replace('{hostport}', `${connectionInformation.hostName}`);\n }\n }\n if (connectionInformation.databaseName) {\n url = url.replace('{database}', connectionInformation.databaseName);\n }\n return url;\n };\n\n const loadSupportedDriversData = () => {\n return RepositoriesRestService.getSupportedDriversData($scope.repositoryInfo)\n .success((response) => {\n $scope.supportedDriversData = response;\n }).error((response) => {\n showErrorMsg($translate.instant('common.error'), response);\n });\n };\n\n const setLoading = (loading) => {\n $scope.formData.settings.ontopFiles.forEach((ontopFile) => {\n ontopFile.loading = loading;\n });\n };\n\n const loadPropertiesFile = () => {\n setLoading(true);\n RepositoriesRestService.loadPropertiesFile($scope.repositoryInfo.params.propertiesFile.value, $scope.repositoryInfo.location, $scope.selectedDriver.driverType)\n .success((driverData) => {\n let driver = $scope.supportedDriversData.find((driver) => driver.driverClass === driverData.driverClass);\n // If driver not found this means that driver is generic.\n // If the driver is found, but the data returned by the server does not contain a hostname,\n // it means that the driver class (which we support) is filled in as the driver class of a generic type.\n if (!driver || !driverData.hostName) {\n driver = $scope.supportedDriversData.find((driver) => OntopDriverData.isGenericDriver(driver.driverType));\n }\n $scope.selectDriver(driver.driverType);\n $scope.formData.connectionInformation.driverType = driver.driverType;\n $scope.formData.connectionInformation.driverClass = driverData.driverClass;\n $scope.formData.connectionInformation.password = driverData.password;\n $scope.formData.connectionInformation.username = driverData.userName;\n $scope.formData.connectionInformation.url = driverData.url;\n $scope.formData.settings.additionalProperties = driverData.additionalProperties;\n\n if (!OntopDriverData.isGenericDriver(driver.driverType)) {\n $scope.formData.connectionInformation.hostName = driverData.hostName;\n $scope.formData.connectionInformation.databaseName = driverData.databaseName;\n $scope.formData.connectionInformation.port = driverData.port ? parseInt(driverData.port, 10) : undefined;\n }\n\n extractExtraUrl();\n $scope.updateUrl();\n\n Object.values(OntopFileType)\n .forEach((ontopFileType) => {\n const ontopFileInfo = $scope.repositoryInfo.params[ontopFileType];\n const ontopFile = $scope.getOntopFileInfo(ontopFileType);\n if (ontopFileInfo) {\n ontopFile.fileName = getFileName(ontopFileInfo.value);\n }\n });\n $scope.currentOntopRepoInfo = _.cloneDeep($scope.formData);\n })\n .error((data) => {\n showErrorMsg($translate.instant('common.error'), data);\n })\n .finally(() => {\n setLoading(false);\n });\n };\n\n const updatePropertiesFile = () => {\n setLoading(true);\n const connectionInformation = $scope.formData.connectionInformation;\n\n const jdbc = {\n hostName: connectionInformation.hostName,\n port: connectionInformation.port,\n databaseName: connectionInformation.databaseName,\n userName: connectionInformation.username,\n password: connectionInformation.password,\n driverClass: connectionInformation.driverClass,\n url: connectionInformation.url,\n additionalProperties: $scope.formData.settings.additionalProperties\n };\n\n return RepositoriesRestService\n .updatePropertiesFile($scope.repositoryInfo.params.propertiesFile.value, jdbc, $scope.repositoryInfo.location, $scope.selectedDriver.driverType)\n .success((data) => {\n $scope.repositoryInfo.params.propertiesFile.value = data.fileLocation;\n }).error((data) => {\n showErrorMsg($translate.instant('common.error'), data);\n })\n .finally(() => setLoading(false));\n };\n\n const showErrorMsg = (title, data) => {\n const msg = getError(data);\n toastr.error(msg, title);\n };\n\n const validateHostName = () => {\n if (!OntopDriverData.isGenericDriver($scope.selectedDriver.driverType)) {\n if (!$scope.formData.connectionInformation.hostName) {\n return Promise.reject(new OntopRepositoryError($translate.instant('missing.required.field', {fieldName: $translate.instant('ontop.repo.database.host_name')})));\n }\n }\n return Promise.resolve();\n };\n\n const validateDatabaseName = () => {\n if (!OntopDriverData.isGenericDriver($scope.selectedDriver.driverType)) {\n if (!$scope.formData.connectionInformation.databaseName) {\n return Promise.reject(new OntopRepositoryError($translate.instant('missing.required.field', {fieldName: $translate.instant('ontop.repo.database.database_name')})));\n }\n }\n return Promise.resolve();\n };\n\n const validateDriverClass = () => {\n if (!$scope.formData.connectionInformation.driverClass) {\n return Promise.reject(new OntopRepositoryError($translate.instant('missing.required.field', {fieldName: $translate.instant('ontop.repo.database.driver_class')})));\n }\n return Promise.resolve();\n };\n\n const validateUrl = () => {\n if (!$scope.formData.connectionInformation.url) {\n return Promise.reject(new OntopRepositoryError($translate.instant('missing.required.field', {fieldName: $translate.instant('ontop.repo.database.url')})));\n }\n return Promise.resolve();\n };\n\n const validateRepositoryId = () => {\n if (!$scope.repositoryInfo.id) {\n return Promise.reject(new OntopRepositoryError($translate.instant('empty.repoid.warning')));\n }\n return Promise.resolve();\n };\n\n const validateOntopFiles = () => {\n if (!$scope.getOntopFileInfo(OntopFileType.OBDA).fileName) {\n return Promise.reject(new OntopRepositoryError($translate.instant('ontop.repo.missing.required.file', {fileName: $scope.repositoryInfo.params[OntopFileType.OBDA].label})));\n }\n return Promise.resolve();\n };\n\n const validatePort = () => {\n if ($scope.selectedDriver.portRequired && !$scope.formData.connectionInformation.port) {\n return Promise.reject(new OntopRepositoryError($translate.instant('missing.required.field', {fieldName: $translate.instant('ontop.repo.database.port')})));\n }\n return Promise.resolve();\n };\n\n const clearFormData = () => {\n $scope.formData = {\n connectionInformation: new OntopConnectionInformation(),\n settings: {\n additionalProperties: '',\n ontopFiles: []\n }\n };\n\n Object.values(OntopFileType)\n .forEach((ontopFileType) => {\n const ontopFileInfo = new OntopFileInfo(ontopFileType);\n $scope.formData.settings.ontopFiles.push(ontopFileInfo);\n });\n\n $scope.getOntopFileInfo(OntopFileType.OBDA).required = true;\n };\n\n // =========================\n // Initialize component data\n // =========================\n loadSupportedDriversData()\n .then(() => {\n if ($scope.editRepoPage) {\n loadPropertiesFile();\n } else {\n $scope.selectDriver(JdbcDriverType.GENERIC);\n }\n });\n }\n}\n","import 'angular/core/services';\nimport 'angular/core/directives';\nimport 'angular/core/controllers';\nimport 'angular/repositories/controllers';\nimport 'angular/repositories/ontop-repo.directive';\nimport 'angular/repositories/fedx-repo.directive';\nimport 'angular/core/services/repositories.service';\nimport 'angular/settings/app';\nimport 'ng-file-upload/dist/ng-file-upload.min';\nimport 'ng-file-upload/dist/ng-file-upload-shim.min';\n\nconst modules = [\n 'ui.bootstrap',\n 'toastr',\n 'ngCookies',\n 'ngRoute',\n 'graphdb.framework.repositories.controllers',\n 'graphdb.framework.repositories.ontop-repo.directive',\n 'graphdb.framework.repositories.fedx-repo.directive',\n 'graphdb.framework.core.services.repositories',\n 'graphdb.framework.core.directives',\n 'graphdb.framework.core.controllers',\n 'graphdb.framework.settings'\n];\n\nangular.module('graphdb.framework.repositories', modules);\n","export class OntopFileInfo {\n\n /**\n * Initializes ontop file info object.\n * @param {string} type - the type of ontop file. It's value have to be one of {@link OntopFileType};\n * @param {boolean} required - true if file is required.\n */\n constructor(type, required = false) {\n this.type = type;\n this.fileName = '';\n this.loading = false;\n this.required = required;\n }\n}\n","import 'angular/core/services';\nimport 'angular/core/services/jwt-auth.service';\n\nangular\n .module('graphdb.framework.settings.controllers', [\n 'ngCookies',\n 'ui.bootstrap',\n 'graphdb.framework.core.services.jwtauth',\n 'toastr'\n ])\n .controller('ActiveLocationSettingsCtrl', ActiveLocationSettingsCtrl)\n .controller('ValidateLicenseModalCtrl', ValidateLicenseModalCtrl)\n .controller('LicenseCtrl', LicenseCtrl)\n .controller('RegisterLicenseCtrl', RegisterLicenseCtrl)\n .controller('LoaderSamplesCtrl', LoaderSamplesCtrl);\n\nActiveLocationSettingsCtrl.$inject = ['$scope', 'toastr', '$uibModalInstance', 'LicenseRestService', '$translate'];\n\nfunction ActiveLocationSettingsCtrl($scope, toastr, $uibModalInstance, LicenseRestService, $translate) {\n $scope.supportsStatistics = true;\n $scope.settings = {statistics: false};\n $scope.getSettings = getSettings;\n\n function getSettings() {\n $scope.loader = true;\n LicenseRestService.getStatistics().then(function (response) {\n $scope.settings.statistics = response.data === 'true';\n $scope.supportsStatistics = true;\n }, function (response) {\n if (response.status === 404) {\n $scope.supportsStatistics = false;\n } else {\n const msg = getError(response.data);\n toastr.error(msg, $translate.instant('error.getting.settings'));\n }\n });\n }\n\n $scope.getSettings();\n\n $scope.setSettings = function () {\n $scope.loader = true;\n LicenseRestService.toggleStatistics($scope.settings.statistics).then(function () {\n $uibModalInstance.close();\n toastr.success($translate.instant('saving.settings.success'));\n }, function (response) {\n const msg = getError(response.data);\n toastr.error(msg, $translate.instant('saving.settings.error'));\n });\n };\n\n $scope.submitForm = function () {\n $scope.setSettings();\n };\n\n $scope.cancel = function () {\n $uibModalInstance.dismiss('cancel');\n };\n}\n\nLicenseCtrl.$inject = ['$scope', 'LicenseRestService', '$licenseService', 'toastr', '$rootScope', 'ModalService', '$translate', 'TrackingService'];\n\nfunction LicenseCtrl($scope, LicenseRestService, $licenseService, toastr, $rootScope, ModalService, $translate, TrackingService) {\n\n $scope.loadingLicense = function() {\n return $licenseService.loadingLicense();\n };\n\n // TODO - Check if redundant call and remove\n $licenseService.checkLicenseStatus();\n\n $scope.removeLicense = function () {\n ModalService.openSimpleModal({\n title: $translate.instant('confirm.operation'),\n message: $translate.instant(\"remove.license.warning.msg\"),\n warning: true\n }).result\n .then(function () {\n LicenseRestService.unregisterLicense()\n .success(function () {\n $licenseService.checkLicenseStatus()\n .then(() => TrackingService.applyTrackingConsent())\n .catch((error) => {\n const msg = getError(error.data, error.status);\n toastr.error(msg, $translate.instant('common.error'));\n });\n });\n });\n };\n}\n\nRegisterLicenseCtrl.$inject = ['$scope', 'LicenseRestService', '$location', '$uibModal', 'toastr', '$window', '$jwtAuth', '$translate'];\n\nfunction RegisterLicenseCtrl($scope, LicenseRestService, $location, $uibModal, toastr, $window, $jwtAuth, $translate) {\n $scope.$on('securityInit', function () {\n if (!$jwtAuth.isAdmin()) {\n $location.path('/license');\n }\n });\n\n $scope.sendLicenseToValidateAndActivate = sendLicenseToValidateAndActivate;\n\n const textAreaSel = $('.license-textarea');\n\n // watch for uploaded license file\n $scope.$watch('currentFile', function () {\n if ($scope.currentFile) {\n const file = $scope.currentFile;\n LicenseRestService.extractFromLicenseFile(file)\n .success(function (licenseCode) {\n sendLicenseToValidateAndActivate(licenseCode);\n }).error(function () {\n toastr.error($translate.instant('could.not.upload.file.error'));\n });\n }\n });\n\n $scope.getBackToPreviousPage = function () {\n $window.history.back();\n };\n\n // send license code for validation and activation\n function sendLicenseToValidateAndActivate(licenseCode) {\n LicenseRestService.sendLicenseToValidate(licenseCode)\n .success(function (validatedLicense) {\n if (validatedLicense.present) {\n // write code to textarea\n textAreaSel.val(licenseCode);\n // pop dialog for license details confirmation\n confirmWantedNewLicenseDetails(validatedLicense, licenseCode);\n } else {\n // clear textarea on invalid license\n textAreaSel.val('');\n // show error\n toastr.error(validatedLicense.message);\n }\n })\n .error(function () {\n toastr.error($translate.instant('invalid.license'));\n });\n }\n\n\n // pops a modal dialog which asks you if your expected license details are correct\n // and sends license to GraphDB upon confirmation\n function confirmWantedNewLicenseDetails(license, licenseCode) {\n const modalInstance = $uibModal.open({\n templateUrl: 'js/angular/settings/modal/validate-license.html',\n controller: 'ValidateLicenseModalCtrl',\n size: 'lg',\n resolve: {\n license: function () {\n return license;\n }\n }\n });\n\n modalInstance.result.then(function () {\n registerLicense(licenseCode);\n });\n }\n\n // send license code to GraphDB for activation\n function registerLicense(licenseCode) {\n if (!licenseCode) {\n licenseCode = textAreaSel.val();\n }\n\n if (licenseCode) {\n // replacing whitespace makes this work on Safari too,\n // whereas other browser happily ignore the whitespace\n const decodedLicense = atob(licenseCode.replace(/\\s/g, ''));\n LicenseRestService.registerLicense(decodedLicense)\n .success(function () {\n $window.history.back();\n }).error(function (error) {\n toastr.error(error, $translate.instant('license.register.error'));\n });\n } else {\n toastr.error($translate.instant('no.license.code.error'));\n }\n }\n}\n\nValidateLicenseModalCtrl.$inject = ['$scope', '$uibModalInstance', 'license'];\n\nfunction ValidateLicenseModalCtrl($scope, $uibModalInstance, license) {\n $scope.ok = ok;\n $scope.cancel = cancel;\n $scope.license = license;\n\n function ok() {\n $uibModalInstance.close();\n }\n\n function cancel() {\n $uibModalInstance.dismiss('cancel');\n }\n}\n\nLoaderSamplesCtrl.$inject = ['$scope'];\n\nfunction LoaderSamplesCtrl($scope) {\n $scope.loader = true;\n $scope.setLoader = function (loader) {\n $scope.loader = loader;\n };\n}\n","import {JdbcDriverType} from \"./jdbc-driver-type\";\n\nexport class OntopDriverData {\n constructor() {\n this.classAvailable = false;\n this.downloadDriverUrl = '';\n this.driverClass = '';\n this.driverName = '';\n this.driverType = '';\n this.portRequired = false;\n this.urlTemplate = '';\n }\n\n static isGenericDriver(type) {\n return type === JdbcDriverType.GENERIC;\n }\n\n static isSnowflakeDriver(type) {\n return type === JdbcDriverType.SNOWFLAKE;\n }\n}\n","export class OntopConnectionInformation {\n constructor(driverType = 'generic') {\n this.driverType = driverType;\n this.hostName = '';\n this.port = undefined;\n this.databaseName = '';\n this.username = '';\n this.password = '';\n this.driverClass = '';\n this.url = '';\n this.urlUserInput = '';\n }\n}\n","angular\n .module('graphdb.framework.repositories.fedx-repo.directive', [])\n .directive('fedxRepo', fedxRepoDirective);\n\nfedxRepoDirective.$inject = ['$uibModal', 'RepositoriesRestService', 'toastr', '$translate'];\n\nfunction fedxRepoDirective($uibModal, RepositoriesRestService, toastr, $translate) {\n return {\n restrict: 'E',\n scope: true,\n templateUrl: 'js/angular/repositories/templates/fedx-repo.html',\n\n link: linkFunc\n };\n\n function linkFunc($scope) {\n\n const LOCAL_REPO_STORE = 'ResolvableRepository';\n const REMOTE_REPO_STORE = 'RemoteRepository';\n const SPARQL_ENDPOINT_STORE = 'SPARQLEndpoint';\n const NATIVE_STORE = 'NativeStore';\n\n $scope.fedxMembers = [];\n $scope.knownRepos = [];\n $scope.allAttachedRepos = [];\n\n if ($scope.editRepoPage) {\n $scope.fedxMembers = $scope.repositoryInfo.params.member.value.slice();\n }\n\n function getRepositories() {\n return RepositoriesRestService.getRepositories($scope.repositoryInfo.location)\n .success(function (response) {\n let repos = [];\n _.values(response).forEach((value) => {\n repos.push.apply(repos, value);\n });\n $scope.allAttachedRepos = _.cloneDeep(repos);\n }).error(function (response) {\n const msg = getError(response);\n toastr.error(msg, $translate.instant('common.error'));\n });\n }\n\n function populateKnownRepos() {\n for (const member of $scope.fedxMembers) {\n $scope.knownRepos = $scope.knownRepos.filter(function (repo) {\n if (member.repositoryServer) {\n // if the member is a remote attached member\n return repo.id !== member.repositoryName || repo.location !== member.repositoryServer;\n } else {\n // if the member is a local one\n return repo.id !== member.repositoryName || !repo.local;\n }\n });\n }\n }\n\n $scope.setWritableRepo = function (member) {\n let currentWritable = getWritableRepo();\n if (currentWritable) {\n if (currentWritable.store === LOCAL_REPO_STORE && (member.store !== LOCAL_REPO_STORE || currentWritable.repositoryName !== member.repositoryName) ) {\n currentWritable.writable = 'false';\n } else if (currentWritable.store === REMOTE_REPO_STORE && (member.store !== REMOTE_REPO_STORE || currentWritable.repositoryName !== member.repositoryName || currentWritable.repositoryServer !== member.repositoryServer)) {\n currentWritable.writable = 'false';\n }\n }\n member.writable = JSON.stringify(member.writable === 'false');\n }\n\n $scope.getActiveClass = function (member) {\n return member.writable === 'true' ? ' active' : '';\n }\n\n function getWritableRepo() {\n return $scope.fedxMembers.find(member => member.writable === \"true\");\n }\n\n function getKnownRepos() {\n getRepositories()\n .then(function () {\n $scope.knownRepos = $scope.allAttachedRepos.slice();\n populateKnownRepos();\n });\n }\n\n $scope.checkIfRepoExist = function (member) {\n if (!$scope.allAttachedRepos.length) {\n return true;\n }\n if (member.store === LOCAL_REPO_STORE) {\n return $scope.allAttachedRepos.find(repo => repo.id === member.repositoryName && !repo.location);\n } else if (member.store === REMOTE_REPO_STORE) {\n return $scope.allAttachedRepos.find(repo => repo.id === member.repositoryName && repo.location === member.repositoryServer);\n } else {\n return true;\n }\n }\n\n $scope.getRepositoryServer = function (repo) {\n if (repo.local) {\n return \"Local\";\n } else {\n return repo.location;\n }\n }\n\n const localReposTimer = setInterval(function () {\n getKnownRepos();\n }, 5000);\n\n $scope.$on('$destroy', function () {\n clearInterval(localReposTimer);\n });\n\n $scope.addMember = function(repository) {\n let member;\n if ($scope.getRepositoryServer(repository) === \"Local\") {\n member = {\n store: LOCAL_REPO_STORE,\n repositoryName: repository.id,\n repoType: repository.type,\n respectRights: \"true\",\n writable: \"false\"\n };\n } else {\n member = {\n store: REMOTE_REPO_STORE,\n repositoryName: repository.id,\n repositoryServer: repository.location,\n username: '',\n password: '',\n supportsASKQueries: \"true\",\n writable: \"false\"\n };\n }\n $scope.knownRepos = $scope.knownRepos.filter(repo => repo.id !== repository.id || repo.location !== repository.location);\n updateMembers(member);\n }\n\n $scope.removeMember = function (member) {\n if (member.store && member.store === LOCAL_REPO_STORE) {\n $scope.fedxMembers = $scope.fedxMembers.filter(el => el.store !== member.store || el.repositoryName !== member.repositoryName && !el.repositoryServer);\n getKnownRepos();\n } else if (member.store && member.store === SPARQL_ENDPOINT_STORE) {\n $scope.fedxMembers = $scope.fedxMembers.filter(el => el.endpoint !== member.endpoint);\n } else if (member.store && member.store === NATIVE_STORE) {\n $scope.fedxMembers = $scope.fedxMembers.filter(el => el.repositoryLocation !== member.repositoryLocation);\n } else if (member.store && member.store === REMOTE_REPO_STORE) {\n $scope.fedxMembers = $scope.fedxMembers.filter(el => el.store !== member.store || el.repositoryName !== member.repositoryName\n || el.repositoryServer !== member.repositoryServer);\n getKnownRepos();\n }\n $scope.repositoryInfo.params['member'].value = $scope.fedxMembers;\n }\n\n $scope.addRemoteMember = function () {\n $scope.mode = 'remote';\n $scope.model = {\n editMode: false,\n store: REMOTE_REPO_STORE,\n repositoryName: '',\n repositoryServer: '',\n sparqlEndpoint: '',\n username: '',\n password: '',\n supportsASKQueries: \"true\",\n writable: \"false\"\n }\n\n $scope.$uibModalInstance = $uibModal.open({\n templateUrl: 'js/angular/templates/modal/add-fedx-remote-repo.html',\n scope: $scope,\n });\n };\n\n $scope.getMemberIcon = function (member) {\n if (member.repoType) {\n return 'icon-repo-' + member.repoType;\n } else if (member.store === NATIVE_STORE) {\n return 'icon-warning';\n } else {\n return 'icon-link';\n }\n }\n\n $scope.editFedXRepository = function (member) {\n if (member.store === LOCAL_REPO_STORE) {\n $scope.mode = 'local';\n $scope.model = {\n editMode: true,\n store: member.store,\n respectRights: member.respectRights,\n repositoryName: member.repositoryName,\n repoType: member.repoType,\n writable: member.writable\n }\n } else {\n $scope.mode = 'remote';\n $scope.model = {\n editMode: true,\n store: member.store,\n repositoryName: member.repositoryName,\n repositoryServer: member.repositoryServer,\n sparqlEndpoint: member.store === SPARQL_ENDPOINT_STORE ? member.endpoint : member.repositoryLocation,\n username: member.username,\n password: member.password,\n supportsASKQueries: member.supportsASKQueries,\n writable: member.writable\n }\n }\n\n $scope.$uibModalInstance = $uibModal.open({\n templateUrl: 'js/angular/templates/modal/add-fedx-remote-repo.html',\n scope: $scope\n });\n };\n\n $scope.resolveName = function (member) {\n switch (member.store) {\n case LOCAL_REPO_STORE : {\n return member.repositoryName;\n }\n case REMOTE_REPO_STORE : {\n return member.repositoryName + '@' + member.repositoryServer;\n }\n case SPARQL_ENDPOINT_STORE : {\n return member.endpoint;\n }\n case NATIVE_STORE : {\n return member.repositoryLocation;\n }\n default :\n return \"\";\n }\n }\n\n $scope.cancel = function () {\n $scope.$uibModalInstance.dismiss('cancel');\n };\n\n function updateMembers(member) {\n $scope.fedxMembers.push(member);\n $scope.repositoryInfo.params['member'].value = $scope.fedxMembers;\n }\n\n function removeEndingSlash(url) {\n return url.slice(-1) === '/' ? url.slice(0, -1) : url\n }\n\n function checkEditMode() {\n return $scope.editRepoPage && !$scope.editRepoPage || !$scope.model.editMode;\n }\n\n $scope.ok = function () {\n let member;\n if ($scope.model.repositoryName && $scope.model.store === LOCAL_REPO_STORE) {\n member = {\n store: LOCAL_REPO_STORE,\n repositoryName: $scope.model.repositoryName,\n repoType: $scope.model.repoType,\n respectRights: $scope.model.respectRights,\n writable: $scope.model.writable\n }\n $scope.fedxMembers = $scope.fedxMembers.filter(el => el.repositoryName !== member.repositoryName || el.store !== member.store );\n } else if ($scope.model.repositoryName && $scope.model.store === REMOTE_REPO_STORE) {\n member = {\n store: REMOTE_REPO_STORE,\n repositoryName: $scope.model.repositoryName,\n repositoryServer: removeEndingSlash($scope.model.repositoryServer),\n username: $scope.model.username,\n password: $scope.model.password,\n writable: $scope.model.writable\n };\n if (checkEditMode() && $scope.fedxMembers.find(el => el.repositoryName === member.repositoryName\n && el.repositoryServer === member.repositoryServer)) {\n let resolvedName = $scope.resolveName(member);\n toastr.error($translate.instant('fedx.repo.already.added.member.error', {name: resolvedName}));\n $scope.$uibModalInstance.close();\n return;\n }\n $scope.fedxMembers = $scope.fedxMembers.filter(el => el.repositoryName !== member.repositoryName\n || el.repositoryServer !== member.repositoryServer);\n } else {\n member = {\n store: SPARQL_ENDPOINT_STORE,\n endpoint: removeEndingSlash($scope.model.sparqlEndpoint),\n username: $scope.model.username,\n password: $scope.model.password,\n supportsASKQueries: $scope.model.supportsASKQueries,\n writable: $scope.model.writable\n };\n\n if (checkEditMode() && $scope.fedxMembers.find(el => el.endpoint === member.endpoint)) {\n let resolvedName = $scope.resolveName(member);\n toastr.error($translate.instant('fedx.repo.already.added.sparql.endpoint.error', {name: resolvedName}));\n $scope.$uibModalInstance.close();\n return;\n }\n\n $scope.fedxMembers = $scope.fedxMembers.filter(el => el.endpoint !== member.endpoint);\n }\n\n updateMembers(member);\n populateKnownRepos();\n $scope.$uibModalInstance.close();\n };\n\n $scope.$on('changedLocation', function () {\n $scope.fedxMembers = [];\n getKnownRepos();\n });\n\n getKnownRepos();\n }\n}\n","export const OntopFileType = {\n 'OBDA': 'obdaFile',\n 'OWL': 'owlFile',\n 'CONSTRAINT': 'constraintFile',\n 'LENSES': 'lensesFile',\n 'DB_METADATA': 'dbMetadataFile'\n};\n","import 'angular/core/services';\nimport 'angular/core/directives';\nimport 'angular/rest/license.rest.service';\nimport 'angular/settings/controllers';\nimport 'angular/core/interceptors/unauthorized.interceptor';\nimport 'angular/core/interceptors/authentication.interceptor';\nimport 'angular/core/services/jwt-auth.service';\nimport 'ng-file-upload/dist/ng-file-upload.min';\nimport 'ng-file-upload/dist/ng-file-upload-shim.min';\n\nangular.module('graphdb.framework.settings', [\n 'toastr',\n 'ui.bootstrap',\n 'graphdb.framework.rest.license.service',\n 'graphdb.framework.settings.controllers',\n 'graphdb.framework.core.interceptors.unauthorized',\n 'graphdb.framework.core.interceptors.authentication',\n 'graphdb.framework.core.services.jwtauth'\n])\n .config(config)\n .run(run);\n\nconfig.$inject = ['$httpProvider', '$routeProvider'];\n\nfunction config($httpProvider) {\n $httpProvider.interceptors.push('$unauthorizedInterceptor');\n $httpProvider.interceptors.push('$authenticationInterceptor');\n}\n\nrun.$inject = ['$rootScope', '$location', '$licenseService'];\n\nfunction run($rootScope, $location, $licenseService) {\n $rootScope.$on('$locationChangeStart', function () {\n if ($licenseService.isLicenseHardcoded() && $location.url() === '/license/register') {\n $location.path('license');\n }\n });\n}\n","export class OntopRepositoryError extends Error {\n}\n"],"names":["JdbcDriverType","ontopRepoDirective","$uibModal","RepositoriesRestService","toastr","Upload","$translate","restrict","scope","templateUrl","link","$scope","isGenericDriver","defaultUrlTemplate","ontopProperiesLink","ontopFileType","OntopFileType","selectedDriver","OntopDriverData","supportedDriversData","formData","connectionInformation","OntopConnectionInformation","settings","additionalProperties","ontopFiles","selectDriver","driverType","find","driver","editRepoPage","currentOntopRepoInfo","_","cloneDeep","clearFormData","driverClass","updateUrl","getOntopFileInfo","ontopFileInfo","type","getHostNameLabel","hostNameLabel","isSnowflakeDriver","instant","getDatabaseNameLabel","dataBaseNameLabelKey","SNOWFLAKE","DATABRICKS","DREMIO","calculateTemplateUrl","url","urlUserInput","isTestConnectionDisabled","portRequired","port","hostName","databaseName","testConnection","validateHostName","then","validatePort","validateDatabaseName","validateDriverClass","validateUrl","updatePropertiesFile","validateOntopPropertiesConnection","repositoryInfo","success","catch","error","OntopRepositoryError","message","showErrorMsg","editFile","fileName","params","label","title","open","controller","windowClass","resolve","file","ontopFile","value","dialogTitle","location","result","data","updateRepositoryFileContent","fileLocation","content","getFileName","uploadOntopFile","files","length","uploadFile","loading","uploadData","upload","name","errorMessage","finally","updateOntopRepo","createOrUpdate","editRepository","createRepo","validateRepositoryId","validateOntopFiles","console","log","onKeyDownInUrlInput","event","keyCode","ctrlDown","ctrlKey","metaKey","cursorPosition","target","selectionStart","preventDefault","stopPropagation","onKeyUpInUrlInput","extractExtraUrl","startsWith","substring","calculateSnowflakeTemplateUrl","calculateDefaultTemplateUrl","urlTemplate","replace","setLoading","forEach","jdbc","userName","username","password","propertiesFile","msg","getError","Promise","reject","fieldName","id","OBDA","Object","values","OntopFileInfo","push","required","getSupportedDriversData","response","loadPropertiesFile","driverData","parseInt","undefined","GENERIC","angular","module","directive","$inject","constructor","this","ActiveLocationSettingsCtrl","$uibModalInstance","LicenseRestService","supportsStatistics","statistics","getSettings","loader","getStatistics","status","setSettings","toggleStatistics","close","submitForm","cancel","dismiss","LicenseCtrl","$licenseService","$rootScope","ModalService","TrackingService","loadingLicense","checkLicenseStatus","removeLicense","openSimpleModal","warning","unregisterLicense","applyTrackingConsent","RegisterLicenseCtrl","$location","$window","$jwtAuth","$on","isAdmin","path","sendLicenseToValidateAndActivate","textAreaSel","$","licenseCode","sendLicenseToValidate","validatedLicense","present","val","license","size","decodedLicense","atob","registerLicense","history","back","confirmWantedNewLicenseDetails","$watch","currentFile","extractFromLicenseFile","getBackToPreviousPage","ValidateLicenseModalCtrl","ok","LoaderSamplesCtrl","setLoader","classAvailable","downloadDriverUrl","driverName","fedxRepoDirective","LOCAL_REPO_STORE","REMOTE_REPO_STORE","SPARQL_ENDPOINT_STORE","NATIVE_STORE","populateKnownRepos","member","fedxMembers","knownRepos","filter","repo","repositoryServer","repositoryName","local","getKnownRepos","getRepositories","repos","apply","allAttachedRepos","slice","setWritableRepo","currentWritable","writable","store","JSON","stringify","getActiveClass","checkIfRepoExist","getRepositoryServer","localReposTimer","setInterval","updateMembers","removeEndingSlash","checkEditMode","model","editMode","clearInterval","addMember","repository","repoType","respectRights","supportsASKQueries","removeMember","el","endpoint","repositoryLocation","addRemoteMember","mode","sparqlEndpoint","getMemberIcon","editFedXRepository","resolveName","resolvedName","config","$httpProvider","interceptors","run","isLicenseHardcoded","Error"],"sourceRoot":""}
@@ -1,2 +0,0 @@
1
- export const __webpack_id__=42143;export const __webpack_ids__=[42143];export const __webpack_modules__={42143:()=>{PluginRegistry.add("guide.step",[{guideBlockName:"import-rdf-file",getSteps:(e,t)=>{const i=t.GuideUtils,o=t.toastr,l=t.$translate,r=t.$interpolate,n=t.EventEmitterService;e.mainAction="import-file";const c=[{guideBlockName:"click-main-menu",options:angular.extend({},{menu:"import",showIntro:!0},e)}];e.resourcePath&&c.push({guideBlockName:"download-guide-resource",options:angular.extend({},{title:""},e)});const s=i.getGuideElementSelector("import-settings-import-button");let a;return c.push({guideBlockName:"clickable-element",options:angular.extend({},{content:"guide.step_plugin.import_rdf_file.content",url:"/import",elementSelector:i.getGuideElementSelector("uploadRdfFileButton"),class:"upload-rdf-file-button-guide-dialog",advanceOn:void 0,show:t=>()=>{a=n.subscribe("filesForUploadSelected",o=>{(o.files||[]).some(t=>t.name===e.resourceFile)?i.isVisible(i.getGuideElementSelector("import-file-"+e.resourceFile))?i.getOrWaitFor(".confirm-duplicate-files-dialog").then(()=>t.next()):i.getOrWaitFor(s).then(()=>t.next()):o.cancel=!0})},hide:()=>()=>{a&&a()},onNextValidate:()=>Promise.allSettled([i.getOrWaitFor(".confirm-duplicate-files-dialog"),i.getOrWaitFor(i.getGuideElementSelector("import-file-"+e.resourceFile))]).then(([t,n])=>"rejected"!==t.status||"rejected"!==n.status||(i.noNextErrorToast(o,l,r,"guide.step_plugin.import_rdf_file.file-must-be-uploaded",e),!1)),onNextClick:t=>{i.getOrWaitFor(i.getGuideElementSelector("import-file-"+e.resourceFile)).then(e=>{e.click()}).catch(e=>{console.log(e)}).finally(()=>t.next())}},e)},{guideBlockName:"clickable-element",options:angular.extend({},{content:"guide.step_plugin.import_rdf_file.confirm_duplicate_files_dialog.content",elementSelector:i.getElementSelector(".confirm-duplicate-files-dialog .confirm-overwrite-btn"),url:"/import",placement:"bottom",class:"import-file-button-guide-dialog",skipFromHistory:!0,showOn:()=>i.isVisible(i.getElementSelector(".confirm-duplicate-files-dialog")),onNextClick:()=>i.clickOnElement(".confirm-duplicate-files-dialog .confirm-overwrite-btn")(),onPreviousClick:()=>i.isVisible(i.getElementSelector(".confirm-duplicate-files-dialog"))?i.clickOnElement(".confirm-duplicate-files-dialog .cancel-btn"):Promise.resolve()},e)},{guideBlockName:"clickable-element",options:angular.extend({},{content:"guide.step_plugin.import_rdf_file.import-settings.import.button.content",elementSelector:s,placement:"top",class:"import-settings-import-file-button-guide-dialog",onPreviousClick:()=>new Promise(function(e){i.clickOnGuideElement("import-settings-cancel-button")().then(()=>e())}),beforeShowPromise:()=>t.GuideUtils.deferredShow(300)().then(()=>i.getOrWaitFor(s,3).catch(e=>(t.toastr.error(t.$translate.instant("guide.unexpected.error.message")),Promise.reject(e)))),onNextClick:()=>i.clickOnGuideElement("import-settings-import-button")(),canBePaused:!1},e)},{guideBlockName:"read-only-element",options:angular.extend({},{content:"guide.step_plugin.import_status_info.content",url:"/import",elementSelector:".import-resource-message",class:"import-status-info-guide-dialog",beforeShowPromise:()=>i.isVisible(".import-resource-message")?Promise.resolve():i.waitFor(".import-resource-message",10),onPreviousClick:()=>i.getOrWaitFor(i.getGuideElementSelector("import-file-"+e.resourceFile),10).then(e=>{e.click()})},e)}),c}}])}};
2
- //# sourceMappingURL=42143.87a6b0a089da7a2318dd.bundle.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"42143.87a6b0a089da7a2318dd.bundle.js","mappings":"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","sources":["webpack://root-config/./packages/legacy-workbench/src/js/angular/guides/steps/complex/import-rdf-file/plugin.js"],"sourcesContent":["PluginRegistry.add('guide.step', [\n {\n guideBlockName: 'import-rdf-file',\n getSteps: (options, services) => {\n const GuideUtils = services.GuideUtils;\n const toastr = services.toastr;\n const $translate = services.$translate;\n const $interpolate = services.$interpolate;\n const EventEmitterService = services.EventEmitterService;\n options.mainAction = 'import-file';\n\n const steps = [\n {\n guideBlockName: 'click-main-menu',\n options: angular.extend({}, {\n menu: 'import',\n showIntro: true\n }, options)\n }\n ];\n\n if (options.resourcePath) {\n steps.push(\n {\n guideBlockName: 'download-guide-resource',\n options: angular.extend({}, {\n title: ''\n }, options)\n }\n );\n }\n\n const importSettingsButtonSelector = GuideUtils.getGuideElementSelector('import-settings-import-button');\n let filesForUploadSelectedSubscription;\n steps.push(...[\n {\n guideBlockName: 'clickable-element',\n options: angular.extend({}, {\n content: 'guide.step_plugin.import_rdf_file.content',\n url: '/import',\n elementSelector: GuideUtils.getGuideElementSelector('uploadRdfFileButton'),\n class: 'upload-rdf-file-button-guide-dialog',\n // Disable default behavior of service when element is clicked.\n advanceOn: undefined,\n show: (guide) => () => {\n // Subscribes to event \"filesForUploadSelected\", when the step is showing, this will give opportunity\n // to canceling uploading if user not choose correct file.\n filesForUploadSelectedSubscription = EventEmitterService.subscribe('filesForUploadSelected', ((eventData) => {\n const uploadedFiles = eventData.files || [];\n if (uploadedFiles.some((uploadedFile) => uploadedFile.name === options.resourceFile)) {\n // When tha correct file is selected, the guide can continue.\n\n // Check for duplicated name, if import button for guide rdf data exist.\n if (GuideUtils.isVisible(GuideUtils.getGuideElementSelector('import-file-' + options.resourceFile))) {\n GuideUtils.getOrWaitFor('.confirm-duplicate-files-dialog')\n .then(() => guide.next());\n } else {\n GuideUtils.getOrWaitFor(importSettingsButtonSelector)\n .then(() => guide.next());\n }\n } else {\n // Canceling the automatically uploading of files because the guide rdf file is not selected.\n eventData.cancel = true;\n }\n }));\n },\n hide: () => () => {\n if (filesForUploadSelectedSubscription) {\n filesForUploadSelectedSubscription();\n }\n },\n onNextValidate: () => {\n return Promise.allSettled([GuideUtils.getOrWaitFor('.confirm-duplicate-files-dialog'), GuideUtils.getOrWaitFor(GuideUtils.getGuideElementSelector('import-file-' + options.resourceFile))])\n .then(([confirmDialogPromise, importButtonPromise]) => {\n // There are two ways to exit this step: if the duplication dialog is opened or if the import button for the guide file is displayed.\n // The first scenario indicates that the user is trying to upload the same file,\n // while the second scenario suggests that the guide has been started more than once.\n if ('rejected' === confirmDialogPromise.status && 'rejected' === importButtonPromise.status) {\n GuideUtils.noNextErrorToast(toastr, $translate, $interpolate, 'guide.step_plugin.import_rdf_file.file-must-be-uploaded', options);\n return false;\n }\n return true;\n });\n },\n onNextClick: (guide) => {\n GuideUtils.getOrWaitFor(GuideUtils.getGuideElementSelector('import-file-' + options.resourceFile))\n .then((element) => {\n // if we have file import button for the guide rdf file, this indicates that we go through this step for second time.\n // This can happen if user start guide for second time.\n element.click();\n })\n .catch((error) => {\n // This shouldn't be happening.\n console.log(error);\n })\n .finally(() => guide.next());\n }\n }, options)\n },\n // This step is optional and will only appear if the file we want to upload has already been uploaded.\n // If the file is already uploaded, a confirmation dialog will be opened, and this step will display the confirm button of the dialog.\n {\n guideBlockName: 'clickable-element',\n options: angular.extend({}, {\n content: 'guide.step_plugin.import_rdf_file.confirm_duplicate_files_dialog.content',\n elementSelector: GuideUtils.getElementSelector('.confirm-duplicate-files-dialog .confirm-overwrite-btn'),\n url: '/import',\n placement: 'bottom',\n class: 'import-file-button-guide-dialog',\n skipFromHistory: true,\n // Checks whether the confirm dialog is currently open.\n showOn: () => GuideUtils.isVisible(GuideUtils.getElementSelector('.confirm-duplicate-files-dialog')),\n onNextClick: () => GuideUtils.clickOnElement('.confirm-duplicate-files-dialog .confirm-overwrite-btn')(),\n onPreviousClick: () => {\n if (GuideUtils.isVisible(GuideUtils.getElementSelector('.confirm-duplicate-files-dialog'))) {\n return GuideUtils.clickOnElement('.confirm-duplicate-files-dialog .cancel-btn');\n }\n return Promise.resolve();\n }\n }, options)\n },\n {\n guideBlockName: 'clickable-element',\n options: angular.extend({}, {\n content: 'guide.step_plugin.import_rdf_file.import-settings.import.button.content',\n elementSelector: importSettingsButtonSelector,\n placement: 'top',\n class: 'import-settings-import-file-button-guide-dialog',\n onPreviousClick: () => new Promise(function (resolve) {\n GuideUtils.clickOnGuideElement('import-settings-cancel-button')()\n .then(() => resolve());\n }),\n beforeShowPromise: () => services.GuideUtils.deferredShow(300)()\n .then(() => GuideUtils.getOrWaitFor(importSettingsButtonSelector, 3)\n .catch((error) => {\n services.toastr.error(services.$translate.instant('guide.unexpected.error.message'));\n return Promise.reject(error);\n })\n ),\n onNextClick: () => GuideUtils.clickOnGuideElement('import-settings-import-button')(),\n canBePaused: false\n }, options)\n },\n {\n guideBlockName: 'read-only-element',\n options: angular.extend({}, {\n content: 'guide.step_plugin.import_status_info.content',\n url: '/import',\n elementSelector: '.import-resource-message',\n class: 'import-status-info-guide-dialog',\n beforeShowPromise: () => {\n if (GuideUtils.isVisible('.import-resource-message')) {\n return Promise.resolve();\n }\n return GuideUtils.waitFor('.import-resource-message', 10);\n },\n onPreviousClick: () => GuideUtils.getOrWaitFor(GuideUtils.getGuideElementSelector('import-file-' + options.resourceFile), 10)\n .then((element) => { element.click() })\n }, options)\n }\n ]);\n\n return steps;\n }\n }\n]);\n"],"names":["PluginRegistry","add","guideBlockName","getSteps","options","services","GuideUtils","toastr","$translate","$interpolate","EventEmitterService","mainAction","steps","angular","extend","menu","showIntro","resourcePath","push","title","importSettingsButtonSelector","getGuideElementSelector","filesForUploadSelectedSubscription","content","url","elementSelector","class","advanceOn","undefined","show","guide","subscribe","eventData","files","some","uploadedFile","name","resourceFile","isVisible","getOrWaitFor","then","next","cancel","hide","onNextValidate","Promise","allSettled","confirmDialogPromise","importButtonPromise","status","noNextErrorToast","onNextClick","element","click","catch","error","console","log","finally","getElementSelector","placement","skipFromHistory","showOn","clickOnElement","onPreviousClick","resolve","clickOnGuideElement","beforeShowPromise","deferredShow","instant","reject","canBePaused","waitFor"],"sourceRoot":""}
@@ -1,2 +0,0 @@
1
- export const __webpack_id__=51087;export const __webpack_ids__=[51087];export const __webpack_modules__={51087:()=>{PluginRegistry.add("guide.step",[{guideBlockName:"ask-ttyg-agent",getSteps:(t,n)=>{const o=n.GuideUtils;t.mainAction="ask-ttyg-agent",t.maxWaitTime=10,t.forceReload=!1;const i=t.explain,l=t.explainMore,a=t.exploreSparql,s=[{guideBlockName:"input-element",options:angular.extend({},{skipPoint:!0,content:"guide.step_plugin.ask-ttyg-agent.input-question",class:"input-question-guide-dialog",url:"/ttyg",elementSelector:o.getGuideElementSelector("question-input"),show:e=>()=>{const t=o.getGuideElementSelector("contenteditable");$(t).on("keydown",n=>{!$(t).text()||"Enter"!==n.key||n.shiftKey||n.ctrlKey||e.next()})},hide:()=>()=>{const e=o.getGuideElementSelector("contenteditable");$(e).off("keydown")},disablePreviousFlow:!0,disableNextFlow:!0},t)},e(o,t)];if(i){const n=o.getLastGuideElementSelector("explain-response-btn"),i=o.getLastGuideElementSelector("chat-item",n);s.push({guideBlockName:"info-message",options:angular.extend({},{url:"/ttyg",beforeShowPromise:(e,t)=>o.waitFor(i,1).then(()=>{setTimeout(()=>e.next())}).catch(()=>{const n=t.id;setTimeout(()=>e.show(n+3))})},t)},{guideBlockName:"clickable-element",options:angular.extend({},{content:"guide.step_plugin.ask-ttyg-agent.explain-answer",class:"explain-answer-guide-dialog",url:"/ttyg",elementSelector:i,disablePreviousFlow:!0,disableNextFlow:!0},t)},e(o,t))}if(i&&a){const e=o.getLastGuideElementSelector("open-in-sparql-editor-btn"),n=o.getLastGuideElementSelector("chat-item",e);s.push({guideBlockName:"info-message",options:angular.extend({},{url:"/ttyg",beforeShowPromise:(e,t)=>o.waitFor(n,1).then(()=>{setTimeout(()=>e.next())}).catch(()=>{const n=t.id;setTimeout(()=>e.show(n+2))})},t)},{guideBlockName:"clickable-element",options:angular.extend({},{content:"guide.step_plugin.ask-ttyg-agent.explore-sparql",class:"explore-sparql-guide-dialog",url:"/ttyg",disablePreviousFlow:!0,disableNextFlow:!0,elementSelector:n},t)})}if(i&&l){const n=o.getLastGuideElementSelector("how-derive-answer-btn"),i=o.getLastGuideElementSelector("chat-item",n);s.push({guideBlockName:"info-message",options:angular.extend({},{url:"/ttyg",beforeShowPromise:(e,t)=>o.waitFor(i,1).then(()=>{setTimeout(()=>e.next())}).catch(()=>{const n=t.id;setTimeout(()=>e.show(n+3))}),disablePreviousFlow:!0},t)},{guideBlockName:"clickable-element",options:angular.extend({},{content:"guide.step_plugin.ask-ttyg-agent.explain-answer-more",class:"input-agent-name-guide-dialog",url:"/ttyg",elementSelector:i,show:e=>()=>{$(i).on("click",()=>{e.next()})},hide:()=>()=>{$(i).off("click")},disableNextFlow:!0},t)},e(o,t))}return s}}]);const e=(e,t)=>({guideBlockName:"hold-and-wait-until-hidden",options:angular.extend({},{content:"guide.step_plugin.ask-ttyg-agent.wait-for-answer",class:"wait-for-answer-guide-dialog",url:"/ttyg",placement:"left",elementSelector:e.getGuideElementSelector("chat-details"),elementSelectorToWait:e.getGuideElementSelector("question-loader")},t)})}};
2
- //# sourceMappingURL=51087.8bc01b7861b40bc7082d.bundle.js.map