graphdb-workbench 3.2.0-TR1 → 3.2.0-cypress-config

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 (406) hide show
  1. package/dist/10142.dae0223e0a1d85ad72fe.bundle.js +2 -0
  2. package/dist/10142.dae0223e0a1d85ad72fe.bundle.js.map +1 -0
  3. package/dist/{10376.e89fa63ff898d45f45fd.bundle.js → 10376.2723c52982b51c64bffb.bundle.js} +2 -2
  4. package/dist/10376.2723c52982b51c64bffb.bundle.js.map +1 -0
  5. package/dist/12396.bcdc888b199dd039747f.bundle.js +2 -0
  6. package/dist/12396.bcdc888b199dd039747f.bundle.js.map +1 -0
  7. package/dist/12940.7a45ae43d5f3ba6e7d83.bundle.js +2 -0
  8. package/dist/12940.7a45ae43d5f3ba6e7d83.bundle.js.map +1 -0
  9. package/dist/14824.a3bc164c5bf4313f5276.bundle.js +2 -0
  10. package/dist/14824.a3bc164c5bf4313f5276.bundle.js.map +1 -0
  11. package/dist/15535.17701ea195962c5d2fba.bundle.js +2 -0
  12. package/dist/15535.17701ea195962c5d2fba.bundle.js.map +1 -0
  13. package/dist/16162.01738ef78ed04320fa38.bundle.js +2 -0
  14. package/dist/16162.01738ef78ed04320fa38.bundle.js.map +1 -0
  15. package/dist/18961.5e34171366c281038fe5.bundle.js +2 -0
  16. package/dist/18961.5e34171366c281038fe5.bundle.js.map +1 -0
  17. package/dist/20227.a9333aa1320edea7264b.bundle.js +2 -0
  18. package/dist/20227.a9333aa1320edea7264b.bundle.js.map +1 -0
  19. package/dist/20287.f3abdf0f06edf0c82f8e.bundle.js +2 -0
  20. package/dist/20287.f3abdf0f06edf0c82f8e.bundle.js.map +1 -0
  21. package/dist/21136.a1287df4a34cfeaac8ff.bundle.js +2 -0
  22. package/dist/21136.a1287df4a34cfeaac8ff.bundle.js.map +1 -0
  23. package/dist/21142.1f577c8d547d32860906.bundle.js +2 -0
  24. package/dist/21142.1f577c8d547d32860906.bundle.js.map +1 -0
  25. package/dist/21170.9801db7bd74eb61c7f3f.bundle.js +2 -0
  26. package/dist/21170.9801db7bd74eb61c7f3f.bundle.js.map +1 -0
  27. package/dist/21195.28f163f2893dbd697334.bundle.js +2 -0
  28. package/dist/21195.28f163f2893dbd697334.bundle.js.map +1 -0
  29. package/dist/25747.66474ed6ef59a39e7a12.bundle.js +2 -0
  30. package/dist/25747.66474ed6ef59a39e7a12.bundle.js.map +1 -0
  31. package/dist/27580.96dd68d0484687b8425c.bundle.js +2 -0
  32. package/dist/27580.96dd68d0484687b8425c.bundle.js.map +1 -0
  33. package/dist/{28050.8ca1fa760c892bfc5466.bundle.js → 28050.6960a4a0961a07a94743.bundle.js} +2 -2
  34. package/dist/28050.6960a4a0961a07a94743.bundle.js.map +1 -0
  35. package/dist/31636.969ddabe580c28777d20.bundle.js +2 -0
  36. package/dist/31636.969ddabe580c28777d20.bundle.js.map +1 -0
  37. package/dist/32489.c00a6026a8e341d13a63.bundle.js +2 -0
  38. package/dist/32489.c00a6026a8e341d13a63.bundle.js.map +1 -0
  39. package/dist/33524.79f7e98ef89a46d4aa58.bundle.js +2 -0
  40. package/dist/33524.79f7e98ef89a46d4aa58.bundle.js.map +1 -0
  41. package/dist/34495.b1caa9ff52396adec899.bundle.js +2 -0
  42. package/dist/34495.b1caa9ff52396adec899.bundle.js.map +1 -0
  43. package/dist/38360.30a38710a483db56ec47.bundle.js +2 -0
  44. package/dist/38360.30a38710a483db56ec47.bundle.js.map +1 -0
  45. package/dist/38644.ce67c3226374ed2fe8ee.bundle.js +2 -0
  46. package/dist/38644.ce67c3226374ed2fe8ee.bundle.js.map +1 -0
  47. package/dist/38843.13763d8362f774b601cf.bundle.js +2 -0
  48. package/dist/38843.13763d8362f774b601cf.bundle.js.map +1 -0
  49. package/dist/39518.36f3863a01e9cd2d93fd.bundle.js +2 -0
  50. package/dist/{39518.4199684f3273d29d9105.bundle.js.map → 39518.36f3863a01e9cd2d93fd.bundle.js.map} +1 -1
  51. package/dist/39539.f5526b59067e9d7bd7bf.bundle.js +2 -0
  52. package/dist/39539.f5526b59067e9d7bd7bf.bundle.js.map +1 -0
  53. package/dist/41453.ea5e51814e73b6ab91cf.bundle.js +2 -0
  54. package/dist/41453.ea5e51814e73b6ab91cf.bundle.js.map +1 -0
  55. package/dist/41621.624ba3d867bc05b5c3cc.bundle.js +2 -0
  56. package/dist/41621.624ba3d867bc05b5c3cc.bundle.js.map +1 -0
  57. package/dist/42129.0c8e8c51e0f7d12bbfff.bundle.js +2 -0
  58. package/dist/42129.0c8e8c51e0f7d12bbfff.bundle.js.map +1 -0
  59. package/dist/44444.d31281d11bf389e4611a.bundle.js +2 -0
  60. package/dist/44444.d31281d11bf389e4611a.bundle.js.map +1 -0
  61. package/dist/45069.82993bf600a550fac275.bundle.js +2 -0
  62. package/dist/45069.82993bf600a550fac275.bundle.js.map +1 -0
  63. package/dist/{456.6118cb99d130f4c0410c.bundle.js → 456.634597f220a97bfbeab8.bundle.js} +2 -2
  64. package/dist/456.634597f220a97bfbeab8.bundle.js.map +1 -0
  65. package/dist/45758.9ffd8e7d5f99e2c394a2.bundle.js +2 -0
  66. package/dist/45758.9ffd8e7d5f99e2c394a2.bundle.js.map +1 -0
  67. package/dist/{52264.99261393a7f6e631da3b.bundle.js → 52264.4cf2f1a18d16484f0af1.bundle.js} +2 -2
  68. package/dist/52264.4cf2f1a18d16484f0af1.bundle.js.map +1 -0
  69. package/dist/54419.aec242a64c27ceda6e02.bundle.js +2 -0
  70. package/dist/54419.aec242a64c27ceda6e02.bundle.js.map +1 -0
  71. package/dist/5470.58e107e4c61ae7c22d48.bundle.js +2 -0
  72. package/dist/5470.58e107e4c61ae7c22d48.bundle.js.map +1 -0
  73. package/dist/55862.4dcac3805b87be57091a.bundle.js +2 -0
  74. package/dist/55862.4dcac3805b87be57091a.bundle.js.map +1 -0
  75. package/dist/58306.9ba4893fcd0036471123.bundle.js +2 -0
  76. package/dist/58306.9ba4893fcd0036471123.bundle.js.map +1 -0
  77. package/dist/58334.8a2bdb0560e0ce23f792.bundle.js +2 -0
  78. package/dist/58334.8a2bdb0560e0ce23f792.bundle.js.map +1 -0
  79. package/dist/60560.2ef51d3e2d9674450419.bundle.js +2 -0
  80. package/dist/60560.2ef51d3e2d9674450419.bundle.js.map +1 -0
  81. package/dist/64118.fb6952c8ef6fc9117f35.bundle.js +2 -0
  82. package/dist/64118.fb6952c8ef6fc9117f35.bundle.js.map +1 -0
  83. package/dist/66014.d9f7b86d6829ebfe9d0e.bundle.js +2 -0
  84. package/dist/66014.d9f7b86d6829ebfe9d0e.bundle.js.map +1 -0
  85. package/dist/67888.244385f782b0bd79cec6.bundle.js +2 -0
  86. package/dist/67888.244385f782b0bd79cec6.bundle.js.map +1 -0
  87. package/dist/69724.56df2d5b2ba312cb8118.bundle.js +2 -0
  88. package/dist/69724.56df2d5b2ba312cb8118.bundle.js.map +1 -0
  89. package/dist/72379.37d5331a19aa21492b89.bundle.js +2 -0
  90. package/dist/72379.37d5331a19aa21492b89.bundle.js.map +1 -0
  91. package/dist/73667.17d61d7fcf790947f7c6.bundle.js +2 -0
  92. package/dist/73667.17d61d7fcf790947f7c6.bundle.js.map +1 -0
  93. package/dist/73793.47292e9aa96be488faaa.bundle.js +2 -0
  94. package/dist/73793.47292e9aa96be488faaa.bundle.js.map +1 -0
  95. package/dist/75282.55f10c1c73bb36f201be.bundle.js +2 -0
  96. package/dist/75282.55f10c1c73bb36f201be.bundle.js.map +1 -0
  97. package/dist/75849.7e40d09cd95631117dc0.bundle.js +2 -0
  98. package/dist/75849.7e40d09cd95631117dc0.bundle.js.map +1 -0
  99. package/dist/77143.e0cb9ab61d798d7b5e0b.bundle.js +2 -0
  100. package/dist/77143.e0cb9ab61d798d7b5e0b.bundle.js.map +1 -0
  101. package/dist/78070.21b221881c2b49603eb9.bundle.js +2 -0
  102. package/dist/78070.21b221881c2b49603eb9.bundle.js.map +1 -0
  103. package/dist/78250.19b064e34121d373f0dc.bundle.js +2 -0
  104. package/dist/78250.19b064e34121d373f0dc.bundle.js.map +1 -0
  105. package/dist/78681.7b1c9100e03c2346550a.bundle.js +2 -0
  106. package/dist/78681.7b1c9100e03c2346550a.bundle.js.map +1 -0
  107. package/dist/79329.d8780313009804cacb6c.bundle.js +2 -0
  108. package/dist/79329.d8780313009804cacb6c.bundle.js.map +1 -0
  109. package/dist/81837.a989b5e255a0ce6176b2.bundle.js +2 -0
  110. package/dist/81837.a989b5e255a0ce6176b2.bundle.js.map +1 -0
  111. package/dist/82206.fd868720394b9dc2adac.bundle.js +2 -0
  112. package/dist/82206.fd868720394b9dc2adac.bundle.js.map +1 -0
  113. package/dist/82293.5e41c8378272aabf99f6.bundle.js +2 -0
  114. package/dist/82293.5e41c8378272aabf99f6.bundle.js.map +1 -0
  115. package/dist/82896.4787d205b19befaf263a.bundle.js +2 -0
  116. package/dist/82896.4787d205b19befaf263a.bundle.js.map +1 -0
  117. package/dist/{82926.93dbf44f2bcccba34e9b.bundle.js → 82926.dabee9e2f4418f5ad605.bundle.js} +2 -2
  118. package/dist/{82926.93dbf44f2bcccba34e9b.bundle.js.map → 82926.dabee9e2f4418f5ad605.bundle.js.map} +1 -1
  119. package/dist/{83136.56d692623cbc60048e03.bundle.js → 83136.4941a19a85eb34ca370a.bundle.js} +2 -2
  120. package/dist/83136.4941a19a85eb34ca370a.bundle.js.map +1 -0
  121. package/dist/{84727.b93b2f9857352d39b241.bundle.js → 84727.2e3214ad60bd59f435e2.bundle.js} +2 -2
  122. package/dist/84727.2e3214ad60bd59f435e2.bundle.js.map +1 -0
  123. package/dist/85281.76d06e1c26137bb4b417.bundle.js +2 -0
  124. package/dist/85281.76d06e1c26137bb4b417.bundle.js.map +1 -0
  125. package/dist/{86639.ab85108411ef0f006e10.bundle.js → 86639.d28da26b8f138f5eb19b.bundle.js} +2 -2
  126. package/dist/86639.d28da26b8f138f5eb19b.bundle.js.map +1 -0
  127. package/dist/89647.219c4eb306757647ae1c.bundle.js +2 -0
  128. package/dist/89647.219c4eb306757647ae1c.bundle.js.map +1 -0
  129. package/dist/9062.1e7bcccd40724f467269.bundle.js +2 -0
  130. package/dist/9062.1e7bcccd40724f467269.bundle.js.map +1 -0
  131. package/dist/95953.44049d81dd4879f745f9.bundle.js +2 -0
  132. package/dist/95953.44049d81dd4879f745f9.bundle.js.map +1 -0
  133. package/dist/96248.83e4f0c66a9f58161a66.bundle.js +2 -0
  134. package/dist/96248.83e4f0c66a9f58161a66.bundle.js.map +1 -0
  135. package/dist/98494.969124a68766ebbdee3c.bundle.js +3 -0
  136. package/dist/98494.969124a68766ebbdee3c.bundle.js.map +1 -0
  137. package/dist/99379.1b108abf4421ccee2973.bundle.js +2 -0
  138. package/dist/99379.1b108abf4421ccee2973.bundle.js.map +1 -0
  139. package/dist/99448.81c627c633d9b9526b45.bundle.js +2 -0
  140. package/dist/99448.81c627c633d9b9526b45.bundle.js.map +1 -0
  141. package/dist/99893.6ac254ca3f59996b2a52.bundle.js +2 -0
  142. package/dist/99893.6ac254ca3f59996b2a52.bundle.js.map +1 -0
  143. package/dist/api/models/configuration/configuration.d.ts +5 -0
  144. package/dist/api/models/logging/log-level.d.ts +7 -0
  145. package/dist/api/models/logging/logger-config.d.ts +19 -0
  146. package/dist/api/models/logging/logger-definitions.d.ts +7 -0
  147. package/dist/api/models/logging/logger-type.d.ts +3 -0
  148. package/dist/api/models/logging/logger.d.ts +15 -0
  149. package/dist/api/models/storage/storage-data.d.ts +1 -0
  150. package/dist/api/ontotext-workbench-api.d.ts +1 -0
  151. package/dist/api/ontotext-workbench-api.js +1 -1
  152. package/dist/api/ontotext-workbench-api.js.map +1 -1
  153. package/dist/api/services/logging/console/console-logger.service.d.ts +19 -0
  154. package/dist/api/services/logging/index.d.ts +2 -0
  155. package/dist/api/services/logging/logger-provider.d.ts +11 -0
  156. package/dist/api/services/logging/logger-service.d.ts +63 -0
  157. package/dist/api/services/logging/loggers.d.ts +15 -0
  158. package/dist/api/services/logging/test/loggers.spec.d.ts +1 -0
  159. package/dist/api/services/plugins/plugins-rest.service.d.ts +1 -0
  160. package/dist/api/services/plugins/plugins.service.d.ts +1 -0
  161. package/dist/api/services/repository/repository-storage.service.d.ts +1 -0
  162. package/dist/api/services/storage/local-storage-subscription-handler.service.d.ts +1 -0
  163. package/dist/assets/configuration.default.json +5 -1
  164. package/dist/index.html +8 -8
  165. package/dist/js/angular/clustermanagement/templates/cluster-nodes-configuration.html +1 -1
  166. package/dist/js/angular/core/directives/autocomplete/templates/autocomplete.html +1 -1
  167. package/dist/js/angular/core/directives/dynamic-form/templates/dynamic-form.html +1 -1
  168. package/dist/js/angular/core/directives/operations-statuses-monitor/templates/operations-statuses-monitor.html +1 -1
  169. package/dist/js/angular/core/directives/rdfresourcesearch/templates/rdfResourceSearchTemplate.html +1 -1
  170. package/dist/js/angular/core/directives/shuttle-multiselect/templates/shuttle-multiselect.html +1 -1
  171. package/dist/js/angular/core/directives/yasgui-component/templates/yasgui-component.html +1 -1
  172. package/dist/js/angular/core/templates/cookie-policy/cookie-consent.html +1 -1
  173. package/dist/js/angular/core/templates/cookie-policy/cookie-policy.html +1 -1
  174. package/dist/js/angular/core/templates/editable-content/editable-content.html +1 -1
  175. package/dist/js/angular/core/templates/markdown-content/markdown-content.html +1 -1
  176. package/dist/js/angular/core/templates/search-resource-input.html +1 -1
  177. package/dist/js/angular/graphql/templates/create-graphql-endpoint.html +2 -2
  178. package/dist/js/angular/graphql/templates/graphql-endpoint-management.html +1 -1
  179. package/dist/js/angular/graphql/templates/graphql-playground.html +1 -1
  180. package/dist/js/angular/graphql/templates/modal/endpoint-configuration-modal.html +1 -1
  181. package/dist/js/angular/graphql/templates/modal/endpoint-generation-failure-result-modal.html +1 -1
  182. package/dist/js/angular/graphql/templates/modal/import-endpoint-definition-modal.html +1 -1
  183. package/dist/js/angular/security/templates/user.html +2 -2
  184. package/dist/js/angular/ttyg/templates/agent-list.html +1 -1
  185. package/dist/js/angular/ttyg/templates/agent-select-menu.html +1 -1
  186. package/dist/js/angular/ttyg/templates/chat-item-detail.html +1 -1
  187. package/dist/js/angular/ttyg/templates/chat-list.html +1 -1
  188. package/dist/js/angular/ttyg/templates/chat-panel.html +1 -1
  189. package/dist/js/angular/ttyg/templates/modal/agent-instructions-explain-modal.html +1 -1
  190. package/dist/js/angular/ttyg/templates/modal/agent-settings-modal.html +2 -2
  191. package/dist/js/angular/ttyg/templates/modal/external-integration-configuration-modal.html +1 -1
  192. package/dist/js/angular/ttyg/templates/no-agents-view.html +1 -1
  193. package/dist/js/angular/ttyg/templates/ttyg.html +1 -1
  194. package/dist/legacyWorkbench.c3f39a4fe72b2fdbc029.js +3 -0
  195. package/dist/{legacyWorkbench.57fc12c172f6350ac4c5.js.map → legacyWorkbench.c3f39a4fe72b2fdbc029.js.map} +1 -1
  196. package/dist/{main.b9a83da68ffc43c91de0.js → main.948b97a64249c87809bf.js} +3 -3
  197. package/dist/main.948b97a64249c87809bf.js.map +1 -0
  198. package/dist/pages/aclmanagement.html +2 -2
  199. package/dist/pages/autocomplete.html +1 -1
  200. package/dist/pages/choose-repository-type.html +1 -1
  201. package/dist/pages/cluster-management/clusterInfo.html +3 -3
  202. package/dist/pages/create-index.html +1 -1
  203. package/dist/pages/dependencies.html +1 -1
  204. package/dist/pages/domainRangeInfo.html +2 -2
  205. package/dist/pages/edit.html +1 -1
  206. package/dist/pages/explore.html +1 -1
  207. package/dist/pages/export.html +1 -1
  208. package/dist/pages/find.html +1 -1
  209. package/dist/pages/graph-config/saveGraphConfig.html +8 -8
  210. package/dist/pages/graphs-visualizations.html +7 -7
  211. package/dist/pages/guides.html +1 -1
  212. package/dist/pages/import.html +2 -2
  213. package/dist/pages/jdbc-create.html +1 -1
  214. package/dist/pages/login.html +1 -1
  215. package/dist/pages/monitor/backup-and-restore.html +1 -1
  216. package/dist/pages/monitor/queries.html +1 -1
  217. package/dist/pages/monitor/resources.html +1 -1
  218. package/dist/pages/namespaces.html +2 -2
  219. package/dist/pages/plugins.html +1 -1
  220. package/dist/pages/rdfClassHierarchyInfo.html +7 -7
  221. package/dist/pages/rdfrank.html +2 -2
  222. package/dist/pages/repositories.html +1 -1
  223. package/dist/pages/repository.html +1 -1
  224. package/dist/pages/similarity-indexes.html +1 -1
  225. package/dist/pages/sparql-editor.html +1 -1
  226. package/dist/pages/sparql-template-create.html +1 -1
  227. package/dist/pages/ux-test1.html +2 -2
  228. package/dist/pages/webapi.html +2 -2
  229. package/dist/plugins.js +1 -1
  230. package/dist/res/swagger5/index.html +11 -11
  231. package/dist/shared-components/cjs/onto-cookie-consent_2.cjs.entry.js +1 -1
  232. package/dist/shared-components/cjs/onto-dialog_2.cjs.entry.js +1 -1
  233. package/dist/shared-components/cjs/onto-dropdown.cjs.entry.js +1 -1
  234. package/dist/shared-components/cjs/onto-footer_6.cjs.entry.js +1 -1
  235. package/dist/shared-components/cjs/onto-language-selector_9.cjs.entry.js +1 -1
  236. package/dist/shared-components/cjs/translate-label.cjs.entry.js +1 -1
  237. package/dist/shared-components/cjs/translation.service-CC6jY4U-.js +1 -0
  238. package/dist/shared-components/collection/components/dialogs/onto-cookie-policy-dialog/onto-cookie-policy-dialog.js +1 -1
  239. package/dist/shared-components/collection/components/onto-dropdown/onto-dropdown.js +1 -1
  240. package/dist/shared-components/collection/components/onto-navbar/navbar-service.js +1 -1
  241. package/dist/shared-components/collection/services/logger-provider.js +1 -0
  242. package/dist/shared-components/collection/services/translation.service.js +1 -1
  243. package/dist/shared-components/esm/onto-cookie-consent_2.entry.js +1 -1
  244. package/dist/shared-components/esm/onto-dialog_2.entry.js +1 -1
  245. package/dist/shared-components/esm/onto-dropdown.entry.js +1 -1
  246. package/dist/shared-components/esm/onto-footer_6.entry.js +1 -1
  247. package/dist/shared-components/esm/onto-language-selector_9.entry.js +1 -1
  248. package/dist/shared-components/esm/translate-label.entry.js +1 -1
  249. package/dist/shared-components/esm/translation.service-nljGIprK.js +1 -0
  250. package/dist/shared-components/shared-components/p-09a97d11.entry.js +1 -0
  251. package/dist/shared-components/shared-components/p-21b82a97.entry.js +1 -0
  252. package/dist/shared-components/shared-components/p-8d20ae56.entry.js +1 -0
  253. package/dist/shared-components/shared-components/{p-91ad7f7f.entry.js → p-9131b137.entry.js} +1 -1
  254. package/dist/shared-components/shared-components/{p-1bc2ac8e.entry.js → p-e454ffc9.entry.js} +1 -1
  255. package/dist/shared-components/shared-components/{p-17bac1e3.entry.js → p-f9aa2123.entry.js} +1 -1
  256. package/dist/shared-components/shared-components/p-nljGIprK.js +1 -0
  257. package/dist/shared-components/shared-components/shared-components.esm.js +1 -1
  258. package/dist/shared-components/types/components/dialogs/onto-cookie-policy-dialog/onto-cookie-policy-dialog.d.ts +1 -0
  259. package/dist/shared-components/types/components/onto-dropdown/onto-dropdown.d.ts +1 -0
  260. package/dist/shared-components/types/services/logger-provider.d.ts +11 -0
  261. package/dist/shared-components/types/services/translation.service.d.ts +1 -0
  262. package/dist/workbench/workbench/workbenchApp.js +1 -1
  263. package/package.json +1 -1
  264. package/dist/10142.f47cd2aec05492fce7ce.bundle.js +0 -2
  265. package/dist/10142.f47cd2aec05492fce7ce.bundle.js.map +0 -1
  266. package/dist/10376.e89fa63ff898d45f45fd.bundle.js.map +0 -1
  267. package/dist/12396.4c26c8da50c790b0f39a.bundle.js +0 -2
  268. package/dist/12396.4c26c8da50c790b0f39a.bundle.js.map +0 -1
  269. package/dist/12940.5b35c2cf5958d8769c0a.bundle.js +0 -2
  270. package/dist/12940.5b35c2cf5958d8769c0a.bundle.js.map +0 -1
  271. package/dist/14824.5d5041c05fca4c0373fa.bundle.js +0 -2
  272. package/dist/14824.5d5041c05fca4c0373fa.bundle.js.map +0 -1
  273. package/dist/15535.ce8d657c04f3401b9539.bundle.js +0 -2
  274. package/dist/15535.ce8d657c04f3401b9539.bundle.js.map +0 -1
  275. package/dist/16162.8f482628d1b34d41d496.bundle.js +0 -2
  276. package/dist/16162.8f482628d1b34d41d496.bundle.js.map +0 -1
  277. package/dist/18961.c6505525fb0491b48f8b.bundle.js +0 -2
  278. package/dist/18961.c6505525fb0491b48f8b.bundle.js.map +0 -1
  279. package/dist/19968.fdb823f9a12e11a633ec.bundle.js +0 -2
  280. package/dist/19968.fdb823f9a12e11a633ec.bundle.js.map +0 -1
  281. package/dist/20227.ab5dfaab392dbb16ba31.bundle.js +0 -2
  282. package/dist/20227.ab5dfaab392dbb16ba31.bundle.js.map +0 -1
  283. package/dist/20287.c42f9d1d913c36e46931.bundle.js +0 -2
  284. package/dist/20287.c42f9d1d913c36e46931.bundle.js.map +0 -1
  285. package/dist/21136.199caea09a1c9ad90393.bundle.js +0 -2
  286. package/dist/21136.199caea09a1c9ad90393.bundle.js.map +0 -1
  287. package/dist/21142.b690e00c8884fddb2bb3.bundle.js +0 -2
  288. package/dist/21142.b690e00c8884fddb2bb3.bundle.js.map +0 -1
  289. package/dist/21170.d5e3041241741d21080c.bundle.js +0 -2
  290. package/dist/21170.d5e3041241741d21080c.bundle.js.map +0 -1
  291. package/dist/21195.267abc9d42b711d0f17a.bundle.js +0 -2
  292. package/dist/21195.267abc9d42b711d0f17a.bundle.js.map +0 -1
  293. package/dist/25747.4e00941ec221c4d6ce8f.bundle.js +0 -2
  294. package/dist/25747.4e00941ec221c4d6ce8f.bundle.js.map +0 -1
  295. package/dist/27580.f71ebbc69dd1c7785ef3.bundle.js +0 -2
  296. package/dist/27580.f71ebbc69dd1c7785ef3.bundle.js.map +0 -1
  297. package/dist/28050.8ca1fa760c892bfc5466.bundle.js.map +0 -1
  298. package/dist/31636.e34ccc2d6f2dec577446.bundle.js +0 -2
  299. package/dist/31636.e34ccc2d6f2dec577446.bundle.js.map +0 -1
  300. package/dist/32489.97fac2c3daa49b143d13.bundle.js +0 -2
  301. package/dist/32489.97fac2c3daa49b143d13.bundle.js.map +0 -1
  302. package/dist/33524.35fe079bcb99a78babaf.bundle.js +0 -2
  303. package/dist/33524.35fe079bcb99a78babaf.bundle.js.map +0 -1
  304. package/dist/34495.cfa15bda8009fa37c6ff.bundle.js +0 -2
  305. package/dist/34495.cfa15bda8009fa37c6ff.bundle.js.map +0 -1
  306. package/dist/38360.0a90e77042876c86b279.bundle.js +0 -2
  307. package/dist/38360.0a90e77042876c86b279.bundle.js.map +0 -1
  308. package/dist/38644.3a0954c798ec413a3810.bundle.js +0 -2
  309. package/dist/38644.3a0954c798ec413a3810.bundle.js.map +0 -1
  310. package/dist/38843.5ef7a063337524ce3bb2.bundle.js +0 -2
  311. package/dist/38843.5ef7a063337524ce3bb2.bundle.js.map +0 -1
  312. package/dist/39518.4199684f3273d29d9105.bundle.js +0 -2
  313. package/dist/39539.c23e4878044d73f2505b.bundle.js +0 -2
  314. package/dist/39539.c23e4878044d73f2505b.bundle.js.map +0 -1
  315. package/dist/41453.8bb4c783da2c5077a6e9.bundle.js +0 -2
  316. package/dist/41453.8bb4c783da2c5077a6e9.bundle.js.map +0 -1
  317. package/dist/41621.68c5ebc2104a62e2b41d.bundle.js +0 -2
  318. package/dist/41621.68c5ebc2104a62e2b41d.bundle.js.map +0 -1
  319. package/dist/42129.f44b7b20f9cd376c6e59.bundle.js +0 -2
  320. package/dist/42129.f44b7b20f9cd376c6e59.bundle.js.map +0 -1
  321. package/dist/44444.ad66c8256bc5b653de1a.bundle.js +0 -2
  322. package/dist/44444.ad66c8256bc5b653de1a.bundle.js.map +0 -1
  323. package/dist/456.6118cb99d130f4c0410c.bundle.js.map +0 -1
  324. package/dist/45758.6ceb731cbe0576149f31.bundle.js +0 -2
  325. package/dist/45758.6ceb731cbe0576149f31.bundle.js.map +0 -1
  326. package/dist/52264.99261393a7f6e631da3b.bundle.js.map +0 -1
  327. package/dist/54419.f09240da9349be115ab3.bundle.js +0 -2
  328. package/dist/54419.f09240da9349be115ab3.bundle.js.map +0 -1
  329. package/dist/5470.7c17c7d3b58c8c0d0786.bundle.js +0 -2
  330. package/dist/5470.7c17c7d3b58c8c0d0786.bundle.js.map +0 -1
  331. package/dist/55862.1fb5abd075ba11a7e93c.bundle.js +0 -2
  332. package/dist/55862.1fb5abd075ba11a7e93c.bundle.js.map +0 -1
  333. package/dist/58306.ba9545cbaee021ebcbce.bundle.js +0 -2
  334. package/dist/58306.ba9545cbaee021ebcbce.bundle.js.map +0 -1
  335. package/dist/58334.6fdc74532b5f755916d8.bundle.js +0 -2
  336. package/dist/58334.6fdc74532b5f755916d8.bundle.js.map +0 -1
  337. package/dist/60560.37740d97b418899a5d21.bundle.js +0 -2
  338. package/dist/60560.37740d97b418899a5d21.bundle.js.map +0 -1
  339. package/dist/64118.9841bd3b9724868b8a63.bundle.js +0 -2
  340. package/dist/64118.9841bd3b9724868b8a63.bundle.js.map +0 -1
  341. package/dist/66014.336bc4291da2fbc96cd1.bundle.js +0 -2
  342. package/dist/66014.336bc4291da2fbc96cd1.bundle.js.map +0 -1
  343. package/dist/67888.7d4966e0a22ba655f1b8.bundle.js +0 -2
  344. package/dist/67888.7d4966e0a22ba655f1b8.bundle.js.map +0 -1
  345. package/dist/69724.1a97fa707ee1379409e9.bundle.js +0 -2
  346. package/dist/69724.1a97fa707ee1379409e9.bundle.js.map +0 -1
  347. package/dist/72379.bac50d0011665a85b6cd.bundle.js +0 -2
  348. package/dist/72379.bac50d0011665a85b6cd.bundle.js.map +0 -1
  349. package/dist/73667.3dd4f377e7ef54fd8758.bundle.js +0 -2
  350. package/dist/73667.3dd4f377e7ef54fd8758.bundle.js.map +0 -1
  351. package/dist/73793.6d80d47c26ed60a587fd.bundle.js +0 -2
  352. package/dist/73793.6d80d47c26ed60a587fd.bundle.js.map +0 -1
  353. package/dist/75282.88819e851ed18720b275.bundle.js +0 -2
  354. package/dist/75282.88819e851ed18720b275.bundle.js.map +0 -1
  355. package/dist/75849.51ade15bf0074eab76f3.bundle.js +0 -2
  356. package/dist/75849.51ade15bf0074eab76f3.bundle.js.map +0 -1
  357. package/dist/77143.f23d8a7fa51df083741c.bundle.js +0 -2
  358. package/dist/77143.f23d8a7fa51df083741c.bundle.js.map +0 -1
  359. package/dist/78070.b5e22ffae27cc3ca7a6f.bundle.js +0 -2
  360. package/dist/78070.b5e22ffae27cc3ca7a6f.bundle.js.map +0 -1
  361. package/dist/78250.6db42146a120459280e4.bundle.js +0 -2
  362. package/dist/78250.6db42146a120459280e4.bundle.js.map +0 -1
  363. package/dist/78681.39694d37c0f75ea04df6.bundle.js +0 -2
  364. package/dist/78681.39694d37c0f75ea04df6.bundle.js.map +0 -1
  365. package/dist/79329.5a5cbfa466d1c62af915.bundle.js +0 -2
  366. package/dist/79329.5a5cbfa466d1c62af915.bundle.js.map +0 -1
  367. package/dist/81837.f10e22eaf72a0642b50e.bundle.js +0 -2
  368. package/dist/81837.f10e22eaf72a0642b50e.bundle.js.map +0 -1
  369. package/dist/82206.8ec983edcf675cfd4531.bundle.js +0 -2
  370. package/dist/82206.8ec983edcf675cfd4531.bundle.js.map +0 -1
  371. package/dist/82293.a9bb9cd640c007cc1e91.bundle.js +0 -2
  372. package/dist/82293.a9bb9cd640c007cc1e91.bundle.js.map +0 -1
  373. package/dist/82896.9aed45baf67510717c6f.bundle.js +0 -2
  374. package/dist/82896.9aed45baf67510717c6f.bundle.js.map +0 -1
  375. package/dist/83136.56d692623cbc60048e03.bundle.js.map +0 -1
  376. package/dist/84727.b93b2f9857352d39b241.bundle.js.map +0 -1
  377. package/dist/85281.27b5a1eb8e7ac2cf8459.bundle.js +0 -2
  378. package/dist/85281.27b5a1eb8e7ac2cf8459.bundle.js.map +0 -1
  379. package/dist/86639.ab85108411ef0f006e10.bundle.js.map +0 -1
  380. package/dist/89647.b1a4e522d685f0b5d60f.bundle.js +0 -2
  381. package/dist/89647.b1a4e522d685f0b5d60f.bundle.js.map +0 -1
  382. package/dist/9062.d9049833d076191d3e1a.bundle.js +0 -2
  383. package/dist/9062.d9049833d076191d3e1a.bundle.js.map +0 -1
  384. package/dist/95953.4ea6a7c68a22779ba299.bundle.js +0 -2
  385. package/dist/95953.4ea6a7c68a22779ba299.bundle.js.map +0 -1
  386. package/dist/96248.1b85f989b0a7852c9b7b.bundle.js +0 -2
  387. package/dist/96248.1b85f989b0a7852c9b7b.bundle.js.map +0 -1
  388. package/dist/98494.a2cdb2a1c5d32d0094f3.bundle.js +0 -3
  389. package/dist/98494.a2cdb2a1c5d32d0094f3.bundle.js.map +0 -1
  390. package/dist/99379.be6c85ef305af6667dc1.bundle.js +0 -2
  391. package/dist/99379.be6c85ef305af6667dc1.bundle.js.map +0 -1
  392. package/dist/99448.314018d0afb1af150ddf.bundle.js +0 -2
  393. package/dist/99448.314018d0afb1af150ddf.bundle.js.map +0 -1
  394. package/dist/99893.2537d77ee1f4df0c846b.bundle.js +0 -2
  395. package/dist/99893.2537d77ee1f4df0c846b.bundle.js.map +0 -1
  396. package/dist/legacyWorkbench.57fc12c172f6350ac4c5.js +0 -3
  397. package/dist/main.b9a83da68ffc43c91de0.js.map +0 -1
  398. package/dist/shared-components/cjs/translation.service-DjdwDpXN.js +0 -1
  399. package/dist/shared-components/esm/translation.service-Hf6024E7.js +0 -1
  400. package/dist/shared-components/shared-components/p-2433b25f.entry.js +0 -1
  401. package/dist/shared-components/shared-components/p-25fa0ee5.entry.js +0 -1
  402. package/dist/shared-components/shared-components/p-6266be98.entry.js +0 -1
  403. package/dist/shared-components/shared-components/p-Hf6024E7.js +0 -1
  404. /package/dist/{98494.a2cdb2a1c5d32d0094f3.bundle.js.LICENSE.txt → 98494.969124a68766ebbdee3c.bundle.js.LICENSE.txt} +0 -0
  405. /package/dist/{legacyWorkbench.57fc12c172f6350ac4c5.js.LICENSE.txt → legacyWorkbench.c3f39a4fe72b2fdbc029.js.LICENSE.txt} +0 -0
  406. /package/dist/{main.b9a83da68ffc43c91de0.js.LICENSE.txt → main.948b97a64249c87809bf.js.LICENSE.txt} +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"file":"84727.b93b2f9857352d39b241.bundle.js","mappings":"oJASA,SAASA,EAA0BC,GAC/B,MAAO,CACHC,SAAU,IACVC,MAAO,CACHC,MAAO,IACPC,KAAM,IACNC,qBAAsB,KAE1BC,YAAa,6EACbC,KAAM,SAASC,GACXA,EAAOC,WAAaA,EAAAA,UACxB,EAER,CAnBAC,QACKC,OAAO,uDAFI,IAGXC,UAAU,mBAAoBb,GAEnCA,EAA0Bc,QAAU,E,aC+BpCH,QAAQC,OAAO,yDAA0D,IACpEC,UAAU,sBAAuB,CAAC,aAAc,SAAUE,GACvD,MAAO,CACHb,SAAU,IACVc,QAAS,UACTb,MAAO,CACHc,QAAS,IACTC,cAAe,MAEnBX,YAAa,sFACbC,KAAM,SAASC,EAAQU,EAASC,EAAOC,GAInCZ,EAAOa,QAAS,EAMhB,MAAMC,EAAuBC,IACpBL,EAAQ,GAAGM,SAASD,EAAME,SAC3BjB,EAAOkB,OAAO,KACVlB,EAAOa,QAAS,KAe5Bb,EAAOmB,eAAiB,WACpBnB,EAAOa,QAAUb,EAAOa,MAC5B,EAMAb,EAAOoB,gBAAkB,SAAUC,GAC/BA,EAAOC,UAAYD,EAAOC,SAnBVC,MAChB,MAAMD,EAAWtB,EAAOQ,QAAQgB,OAAO,SAASH,GAC5C,OAAOA,EAAOC,QAClB,GACAV,EAAQa,cAAcH,IAgBtBC,EACJ,EAOAvB,EAAO0B,gBAAkB,WACrB,MAAMC,EAAkB3B,EAAOQ,QAAQgB,OAAQH,GAAWA,EAAOC,UACjE,OAA+B,IAA3BK,EAAgBC,OACT5B,EAAOS,eAAiBH,EAAWuB,QAAQ,iBAE/CF,EAAgBG,IAAKT,GAAWA,EAAOU,OAAOC,KAAK,KAC9D,EAKApB,EAAQqB,QAAU,WACV/B,QAAQgC,QAAQtB,EAAQuB,aACxBnC,EAAOQ,QAAQ4B,QAAQ,SAASf,GAC5BA,EAAOC,SAAWV,EAAQuB,WAAWE,KAAK,SAASC,GAC/C,OAAOA,EAAeC,QAAUlB,EAAOkB,KAC3C,EACJ,EAER,EAKAC,SAASC,iBAAiB,QAAS3B,GACnCd,EAAO0C,IAAI,WAAY,KACnBF,SAASG,oBAAoB,QAAS7B,IAE9C,EAER,G,gDCrFJ,SAAS8B,IACL,MAAO,CACHnD,SAAU,IACVC,MAAO,CAIHmD,UAAW,IAKXC,cAAe,KACfC,iBAAkB,KAClBC,SAAU,KACVnD,qBAAsB,MAE1BC,YAAa,sEACbC,KAAM,SAASC,EAAQU,GAInBV,EAAOC,WAAaA,EAAAA,WACpBD,EAAOgD,cAAWC,EAClBjD,EAAO8C,cAAgB9C,EAAO8C,gBAAiB,EAKlCI,MACT,MACMF,EADctC,EAAQyC,KAAK,QACJC,WAAW,QAExC,IAAKJ,EAED,YADAK,QAAQC,MAAM,8BAIlBtD,EAAOgD,SAAWA,EAClB,MAAMO,EAAsBP,EAASQ,aACrCxD,EAAOgD,SAASQ,aAAe,SAAUC,EAAiBC,EAASC,GAC/DJ,EAAoBK,KAAKZ,EAAUS,EAAiBC,EAASC,GACzD3D,EAAO+C,kBACP/C,EAAO+C,iBAAiB,CAACc,MAAOb,EAASc,QAEjD,GAMJZ,EACJ,EAER,CA5DAhD,QACKC,OAAO,iDAFI,CAAC,yDAGZC,UAAU,cAAewC,GAE9BA,EAAqBvC,QAAU,E","sources":["webpack://root-config/./packages/legacy-workbench/src/js/angular/core/directives/dynamic-form/dynamic-form-field.directive.js","webpack://root-config/./packages/legacy-workbench/src/js/angular/core/directives/multiselect-dropdown/multiselect-dropdown.directive.js","webpack://root-config/./packages/legacy-workbench/src/js/angular/core/directives/dynamic-form/dynamic-form.directive.js"],"sourcesContent":["import {FIELD_TYPE} from \"./field-type\";\n\nconst modules = [];\nangular\n .module('graphdb.framework.core.directives.dynamic-form-field', modules)\n .directive('dynamicFormField', dynamicFormFieldDirective);\n\ndynamicFormFieldDirective.$inject = [];\n\nfunction dynamicFormFieldDirective($compile) {\n return {\n restrict: 'E',\n scope: {\n field: '=',\n form: '=',\n translationKeyPrefix: '='\n },\n templateUrl: 'js/angular/core/directives/dynamic-form/templates/form-field-template.html',\n link: function($scope) {\n $scope.FIELD_TYPE = FIELD_TYPE;\n }\n };\n}\n","/**\n * @function multiselectDropdown\n * @description\n * A directive for rendering a multi-select dropdown.\n *\n * This directive displays a list of options with checkboxes that allows users\n * to select multiple items. Each option should be an instance of the\n * SelectOptionsModel, which encapsulates the display label, value,\n * selection state, and any additional data. Clicking the toggle button opens/closes\n * the dropdown; clicking outside the dropdown closes it.\n *\n * @example\n * ### HTML Usage:\n * ```html\n * <multiselect-dropdown\n * ng-model=\"selectedOptions\"\n * options=\"myOptions\"\n * dropdown-label=\"'Choose Items'\">\n * </multiselect-dropdown>\n * ```\n *\n * ### Controller Example:\n * ```javascript\n * angular.module('myApp', [])\n * .controller('ExampleController', function($scope) {\n * $scope.myOptions = [\n * new SelectOptionsModel({ label: 'Option A', value: 'A' }),\n * new SelectOptionsModel({ label: 'Option B', value: 'B' }),\n * new SelectOptionsModel({ label: 'Option C', value: 'C' })\n * ];\n * });\n * ```\n *\n * @param {Array.<SelectOptionsModel>} options - The array of options displayed in the dropdown.\n * @param {string=} [dropdownLabel='Select...'] - (Optional) The placeholder text if no items are selected.\n *\n * @returns {Object} The directive definition object.\n */\nangular.module('graphdb.framework.core.directives.multiselect-dropdown', [])\n .directive('multiselectDropdown', ['$translate', function ($translate) {\n return {\n restrict: 'E',\n require: 'ngModel',\n scope: {\n options: '=',\n dropdownLabel: '=?'\n },\n templateUrl: 'js/angular/core/directives/multiselect-dropdown/templates/multiselect-dropdown.html',\n link: function($scope, element, attrs, ngModel) {\n // =========================\n // Public variables\n // =========================\n $scope.isOpen = false;\n\n // =========================\n // Private methods\n // =========================\n // Close the dropdown if the user clicks outside it.\n const handleDocumentClick = (event) => {\n if (!element[0].contains(event.target)) {\n $scope.$apply(() => {\n $scope.isOpen = false;\n });\n }\n };\n\n const updateModel = () => {\n const selected = $scope.options.filter(function(option) {\n return option.selected;\n });\n ngModel.$setViewValue(selected);\n }\n\n // =========================\n // Public methods\n // =========================\n $scope.toggleDropdown = function () {\n $scope.isOpen = !$scope.isOpen;\n };\n\n /**\n * Toggle the selection state of an option.\n * @param {SelectOptionsModel} option\n */\n $scope.toggleSelection = function (option) {\n option.selected = !option.selected;\n updateModel();\n };\n\n /**\n * Build the display text for the dropdown toggle.\n * Iterates the options and joins the labels of selected options.\n * @returns {string}\n */\n $scope.getSelectedText = function () {\n const selectedOptions = $scope.options.filter((option) => option.selected);\n if (selectedOptions.length === 0) {\n return $scope.dropdownLabel || $translate.instant('common.select');\n }\n return selectedOptions.map((option) => option.label).join(', ');\n };\n\n /**\n * If ngModel provides an initial value, update the corresponding option selections.\n */\n ngModel.$render = function () {\n if (angular.isArray(ngModel.$viewValue)) {\n $scope.options.forEach(function(option) {\n option.selected = ngModel.$viewValue.some(function(selectedOption) {\n return selectedOption.value === option.value;\n });\n });\n }\n };\n\n // =========================\n // Subscriptions\n // =========================\n document.addEventListener('click', handleDocumentClick);\n $scope.$on('$destroy', () => {\n document.removeEventListener('click', handleDocumentClick);\n });\n }\n };\n }]);\n","import 'angular/core/directives/dynamic-form/dynamic-form-field.directive';\nimport {FIELD_TYPE} from \"./field-type\";\n\n/**\n * @function dynamicFormDirective\n * @description\n * A directive for rendering a dynamic form based on an array of field objects.\n *\n * This directive creates a form where each object in the provided formModel defines the type of input to render\n * (for example, text input, checkbox, dropdown, multi-select, or textarea for JSON data). The directive uses the\n * {@link FIELD_TYPE} enum to determine which input type to display. For select and multi-select fields, the\n * {@link SelectMenuOptionsModel} should be used to model the options.\n *\n * Additionally, the directive supports an optional `onValidityChange` callback that will be called whenever the overall\n * validity of the form changes. This is useful for informing a parent component or controller about the current form validity.\n *\n * @example\n * ### HTML Usage:\n * ```html\n * <dynamic-form formModel=\"myFields\" on-validity-change=\"handleValidityChange(valid)\"></dynamic-form>\n * ```\n *\n * @param {Object[]} field - The array of field objects used to render the form fields.\n * @param {string} field[].label - The label displayed for the input.\n * @param {string} field[].type - The type of field input. Should be one of the values defined in {@link FIELD_TYPE}.\n * @param {*} field[].value - The current value of the field.\n * @param {SelectMenuOptionsModel[]} [field[].values] - The array of possible options for select and multi-select fields.\n * @param {(string|RegExp)} [field[].regex] - A regular expression or its string representation for validating the field value.\n * @param {boolean} [field[].required=false] - Indicates whether the field is required.\n *\n * @returns {Object} The directive definition object.\n */\nconst modules = ['graphdb.framework.core.directives.dynamic-form-field'];\nangular\n .module('graphdb.framework.core.directives.dynamic-form', modules)\n .directive('dynamicForm', dynamicFormDirective);\n\ndynamicFormDirective.$inject = [];\n\nfunction dynamicFormDirective() {\n return {\n restrict: 'E',\n scope: {\n /**\n * @type {DynamicFormModel}\n */\n formModel: '=',\n /**\n * Controls whether to show all fields or only the ones that are not hidden in the model.\n * @type {boolean}\n */\n showAllFields: '=?',\n onValidityChange: '&?',\n formCtrl: '=?',\n translationKeyPrefix: '@?'\n },\n templateUrl: 'js/angular/core/directives/dynamic-form/templates/dynamic-form.html',\n link: function($scope, element) {\n // =========================\n // Public variables\n // =========================\n $scope.FIELD_TYPE = FIELD_TYPE;\n $scope.formCtrl = undefined;\n $scope.showAllFields = $scope.showAllFields || false;\n\n // =========================\n // Private function\n // =========================\n const init = () => {\n const formElement = element.find('form');\n const formCtrl = formElement.controller('form');\n\n if (!formCtrl) {\n console.error('Form controller not found!');\n return;\n }\n\n $scope.formCtrl = formCtrl;\n const originalSetValidity = formCtrl.$setValidity;\n $scope.formCtrl.$setValidity = function (validationToken, isValid, modelCtrl) {\n originalSetValidity.call(formCtrl, validationToken, isValid, modelCtrl);\n if ($scope.onValidityChange) {\n $scope.onValidityChange({valid: formCtrl.$valid});\n }\n };\n };\n\n // =========================\n // Initialization\n // =========================\n init();\n }\n };\n}\n\n\n"],"names":["dynamicFormFieldDirective","$compile","restrict","scope","field","form","translationKeyPrefix","templateUrl","link","$scope","FIELD_TYPE","angular","module","directive","$inject","$translate","require","options","dropdownLabel","element","attrs","ngModel","isOpen","handleDocumentClick","event","contains","target","$apply","toggleDropdown","toggleSelection","option","selected","updateModel","filter","$setViewValue","getSelectedText","selectedOptions","length","instant","map","label","join","$render","isArray","$viewValue","forEach","some","selectedOption","value","document","addEventListener","$on","removeEventListener","dynamicFormDirective","formModel","showAllFields","onValidityChange","formCtrl","undefined","init","find","controller","console","error","originalSetValidity","$setValidity","validationToken","isValid","modelCtrl","call","valid","$valid"],"sourceRoot":""}
@@ -1,2 +0,0 @@
1
- export const __webpack_id__=85281;export const __webpack_ids__=[85281];export const __webpack_modules__={85281:()=>{function n(n,t,e,i,o,a){return{restrict:"E",templateUrl:"js/angular/graphql/templates/step-configure-endpoint.html",scope:{stepDefinition:"=",selectedSourceRepository:"="},link:r=>{r.endpointConfiguration=void 0,r.generationSettings=void 0,r.generationSettingsValid=!1,r.showAdvancedSettings=!1,r.handleValidityChange=n=>{r.endpointConfigurationSettingsValid=n},r.next=()=>{o.nextEndpointCreationStep()},r.back=()=>{o.previousEndpointCreationStep()},r.cancel=()=>{const n=e.instant("graphql.create_endpoint.wizard_steps.actions.cancel.confirmation.title"),i=e.instant("graphql.create_endpoint.wizard_steps.actions.cancel.confirmation.body");t.openConfirmation(n,i,()=>{o.cancelEndpointCreation()})},r.toggleAdvancedSettings=()=>{r.showAdvancedSettings=!r.showAdvancedSettings};const s=[];r.$on("$destroy",()=>{s.forEach(n=>n())}),r.endpointConfiguration=o.getNewEndpoint(),r.endpointConfiguration.settings||(r.endpointConfiguration,r.loadingData=!0,n.all([i.getGraphqlGenerationSettings(r.selectedSourceRepository.id).catch(n=>{console.error("Error loading generation settings",n),a.error(getError(n))})]).then(([n])=>{r.endpointConfiguration.settings=n}).finally(()=>{r.loadingData=!1}))}}}angular.module("graphdb.framework.graphql.directives.configure-endpoint",[]).directive("configureEndpoint",n),n.$inject=["$q","ModalService","$translate","GraphqlService","GraphqlContextService","toastr"]}};
2
- //# sourceMappingURL=85281.27b5a1eb8e7ac2cf8459.bundle.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"85281.27b5a1eb8e7ac2cf8459.bundle.js","mappings":"oHAMA,SAASA,EAA2BC,EAAIC,EAAcC,EAAYC,EAAgBC,EAAuBC,GACrG,MAAO,CACHC,SAAU,IACVC,YAAa,4DACbC,MAAO,CACHC,eAAgB,IAChBC,yBAA0B,KAE9BC,KAAOC,IASHA,EAAOC,2BAAwBC,EAM/BF,EAAOG,wBAAqBD,EAM5BF,EAAOI,yBAA0B,EAOjCJ,EAAOK,sBAAuB,EAU9BL,EAAOM,qBAAwBC,IAC3BP,EAAOQ,mCAAqCD,GAMhDP,EAAOS,KAAO,KACVjB,EAAsBkB,4BAM1BV,EAAOW,KAAO,KACVnB,EAAsBoB,gCAM1BZ,EAAOa,OAAS,KACZ,MAAMC,EAAQxB,EAAWyB,QAAQ,0EAC3BC,EAAuB1B,EAAWyB,QAAQ,yEAChD1B,EAAa4B,iBAAiBH,EAAOE,EAAsB,KACvDxB,EAAsB0B,4BAO9BlB,EAAOmB,uBAAyB,KAC5BnB,EAAOK,sBAAwBL,EAAOK,sBAO1C,MAuBMe,EAAgB,GAMtBpB,EAAOqB,IAAI,WAJOC,KACdF,EAAcG,QAASC,GAAiBA,OAMxCxB,EAAOC,sBAAwBT,EAAsBiC,iBAGhDzB,EAAOC,sBAAsByB,WACrB1B,EAAOC,sBA3BpBD,EAAO2B,aAAc,EACrBvC,EAAGwC,IAAI,CATArC,EAAesC,6BAA6B7B,EAAOF,yBAAyBgC,IAC9EC,MAAOC,IACJC,QAAQD,MAAM,oCAAqCA,GACnDvC,EAAOuC,MAAME,SAASF,QAOzBG,KAAK,EAAEhC,MACJH,EAAOC,sBAAsByB,SAAWvB,IAE3CiC,QAAQ,KACLpC,EAAO2B,aAAc,MA2B7C,CAtIAU,QACKC,OAAO,0DAA2D,IAClEC,UAAU,oBAAqBpD,GAEpCA,EAA2BqD,QAAU,CAAC,KAAM,eAAgB,aAAc,iBAAkB,wBAAyB,S","sources":["webpack://root-config/./packages/legacy-workbench/src/js/angular/graphql/directives/configure-endpoint.directive.js"],"sourcesContent":["angular\n .module('graphdb.framework.graphql.directives.configure-endpoint', [])\n .directive('configureEndpoint', ConfigureEndpointComponent);\n\nConfigureEndpointComponent.$inject = ['$q', 'ModalService', '$translate', 'GraphqlService', 'GraphqlContextService', 'toastr'];\n\nfunction ConfigureEndpointComponent($q, ModalService, $translate, GraphqlService, GraphqlContextService, toastr) {\n return {\n restrict: 'E',\n templateUrl: 'js/angular/graphql/templates/step-configure-endpoint.html',\n scope: {\n stepDefinition: '=',\n selectedSourceRepository: '=',\n },\n link: ($scope) => {\n // =========================\n // Public variables\n // =========================\n\n /**\n * The endpoint configuration model.\n * @type {GraphqlEndpointConfiguration|undefined}\n */\n $scope.endpointConfiguration = undefined;\n\n /**\n * The dynamic form model containing the generation settings.\n * @type {GraphqlEndpointConfigurationSettings|undefined}\n */\n $scope.generationSettings = undefined;\n\n /**\n * Flag indicating if the generation settings in the form are valid.\n * @type {boolean}\n */\n $scope.generationSettingsValid = false;\n\n /**\n * Flag controlling the visibility of the advanced settings section. Advanced settings are hidden by default\n * in the settings model.\n * @type {boolean}\n */\n $scope.showAdvancedSettings = false;\n\n // =========================\n // Public functions\n // =========================\n\n /**\n * Handles the validity change of the generation settings form.\n * @param {boolean} isValid The new validity state of the form.\n */\n $scope.handleValidityChange = (isValid) => {\n $scope.endpointConfigurationSettingsValid = isValid;\n };\n\n /**\n * Handles the transition to the next step in the create endpoint wizard.\n */\n $scope.next = () => {\n GraphqlContextService.nextEndpointCreationStep();\n };\n\n /**\n * Handles the transition to the previous step in the create endpoint wizard.\n */\n $scope.back = () => {\n GraphqlContextService.previousEndpointCreationStep();\n };\n\n /**\n * Handles the termination of the create endpoint wizard.\n */\n $scope.cancel = () => {\n const title = $translate.instant('graphql.create_endpoint.wizard_steps.actions.cancel.confirmation.title');\n const confirmDeleteMessage = $translate.instant('graphql.create_endpoint.wizard_steps.actions.cancel.confirmation.body');\n ModalService.openConfirmation(title, confirmDeleteMessage, () => {\n GraphqlContextService.cancelEndpointCreation();\n });\n };\n\n /**\n * Toggles the visibility of the advanced settings. Advanced settings are hidden by default.\n */\n $scope.toggleAdvancedSettings = () => {\n $scope.showAdvancedSettings = !$scope.showAdvancedSettings;\n };\n\n // =========================\n // Private functions\n // =========================\n\n const loadGenerationSettings = () => {\n return GraphqlService.getGraphqlGenerationSettings($scope.selectedSourceRepository.id)\n .catch((error) => {\n console.error('Error loading generation settings', error);\n toastr.error(getError(error));\n });\n };\n\n const loadData = () => {\n $scope.loadingData = true;\n $q.all([loadGenerationSettings()])\n .then(([generationSettings]) => {\n $scope.endpointConfiguration.settings = generationSettings;\n })\n .finally(() => {\n $scope.loadingData = false;\n });\n };\n\n // =========================\n // Subscriptions\n // =========================\n\n const subscriptions = [];\n\n const onDestroy = () => {\n subscriptions.forEach((subscription) => subscription());\n };\n\n $scope.$on('$destroy', onDestroy);\n\n const onInit = () => {\n $scope.endpointConfiguration = GraphqlContextService.getNewEndpoint();\n // Reload generation settings only if they are not already loaded. We need them to stay in the\n // endpoint configuration object during the whole endpoint creation process.\n if (!$scope.endpointConfiguration.settings) {\n loadData($scope.endpointConfiguration);\n }\n };\n onInit();\n },\n };\n}\n"],"names":["ConfigureEndpointComponent","$q","ModalService","$translate","GraphqlService","GraphqlContextService","toastr","restrict","templateUrl","scope","stepDefinition","selectedSourceRepository","link","$scope","endpointConfiguration","undefined","generationSettings","generationSettingsValid","showAdvancedSettings","handleValidityChange","isValid","endpointConfigurationSettingsValid","next","nextEndpointCreationStep","back","previousEndpointCreationStep","cancel","title","instant","confirmDeleteMessage","openConfirmation","cancelEndpointCreation","toggleAdvancedSettings","subscriptions","$on","onDestroy","forEach","subscription","getNewEndpoint","settings","loadingData","all","getGraphqlGenerationSettings","id","catch","error","console","getError","then","finally","angular","module","directive","$inject"],"sourceRoot":""}
@@ -1 +0,0 @@
1
- {"version":3,"file":"86639.ab85108411ef0f006e10.bundle.js","mappings":"oHAAA,MAAMA,EAAkC,4CAExCC,eAAeC,IAAI,aAAc,CAC7B,CACIC,eAAgB,wBAChBC,SAAUA,CAACC,EAASC,KAChB,MAAMC,EAAaD,EAASC,WAC5B,MAAO,CACH,CACIJ,eAAgB,oBAChBE,QAAS,CACLG,QAAS,uEAELH,EAAQI,WAAa,CAAC,EAAI,CAAEC,MAAOV,GACvCW,MAAO,mBACPC,iBAAiB,KACdP,EACHQ,IAAK,aACLC,gBAAiBP,EAAWQ,wBAAwB,2BACpDC,YAAaA,YAOjC,CACIb,eAAgB,6BAChBC,SAAUA,CAACC,EAASC,KAChB,MAAMC,EAAaD,EAASC,WAC5B,MAAO,CACH,CACIJ,eAAgB,gBAChBE,QAAS,CACLG,QAAS,gEAELH,EAAQI,WAAa,CAAC,EAAI,CAAEC,MAAOV,GACvCW,MAAO,iCACJN,EACHQ,IAAK,0BACLC,gBAAiBP,EAAWQ,wBAAwB,yBACpDE,eAAgBA,IAAMC,QAAQC,QAAQZ,EAAWa,0BAA0Bb,EAAWQ,wBAAwB,gCAMlI,CACIZ,eAAgB,6BAChBC,SAAUA,CAACC,EAASC,KAChB,MAAMC,EAAaD,EAASC,WAC5B,MAAO,CACH,CACIJ,eAAgB,oBAChBE,QAAS,CACLG,QAAS,4DAELH,EAAQI,WAAa,CAAC,EAAI,CAAEC,MAAOV,GACvCW,MAAO,0BACPU,qBAAqB,EACrBT,iBAAiB,KACdP,EACHQ,IAAK,0BACLC,gBAAiBP,EAAWQ,wBAAwB,+BACpDC,YAAaA,YAOjC,CACIb,eAAgB,uCAChBC,SAAUA,CAACC,EAASC,IAET,CACH,CACID,QAAS,CACLG,QAAS,iDACTG,MAAO,oBACJN,EACHiB,sBAPOhB,EAASC,WAOkBQ,wBAAwB,gCAM9E,CACIZ,eAAgB,0BAChBC,SAAUA,CAACC,EAASC,KAChB,MAAMC,EAAaD,EAASC,WAG5B,OAFAF,EAAQI,WAAa,0BAEd,CACH,CACIN,eAAgB,kBAChBE,QAASkB,QAAQC,OAAO,CAAC,EAAG,CACxBC,KAAM,aACNC,WAAW,GACZrB,IAEP,CACIF,eAAgB,wBAAyBE,QAAS,IAAIA,IAE1D,CACIF,eAAgB,6BAA8BE,QAAS,IAAIA,IAE/D,CACIF,eAAgB,6BAA8BE,QAAS,IAAIA,IAE/D,CAEIF,eAAgB,eAChBE,QAASkB,QAAQC,OAAO,CAAC,EAAG,CACxBG,kBAAmBA,CAACC,EAAOC,IAAgBtB,EAAWuB,aAAavB,EAAWQ,wBAAwB,SAAU,GAC3GgB,KAAK,KACF,MAAMC,EAASH,EAAYI,GAK3BC,WAAW,IAAMN,EAAMO,KAAKH,EAAS,MAExCI,MAAM,KAKHF,WAAW,IAAMN,EAAMS,WAEhChC,IAEP,CACIF,eAAgB,uCAAwCE,QAAS,IAAIA,Q","sources":["webpack://root-config/./packages/legacy-workbench/src/js/angular/guides/steps/complex/create-similarity-index/plugin.js"],"sourcesContent":["const CREATE_SIMILARITY_INDEX_DEFAULT = \"guide.step-action.create-similarity-index\";\n\nPluginRegistry.add('guide.step', [\n {\n guideBlockName: 'similarity-click-link',\n getSteps: (options, services) => {\n const GuideUtils = services.GuideUtils;\n return [\n {\n guideBlockName: 'clickable-element',\n options: {\n content: 'guide.step_plugin.create-similarity-index.create-similarity-index',\n // If mainAction is set the title will be set automatically\n ...(options.mainAction ? {} : { title: CREATE_SIMILARITY_INDEX_DEFAULT }),\n class: 'similarity-index',\n disableNextFlow: true,\n ...options,\n url: 'similarity',\n elementSelector: GuideUtils.getGuideElementSelector('create-similarity-index'),\n onNextClick: () => {\n }\n }\n }\n ]\n }\n },\n {\n guideBlockName: 'similarity-type-index-name',\n getSteps: (options, services) => {\n const GuideUtils = services.GuideUtils;\n return [\n {\n guideBlockName: 'input-element',\n options: {\n content: 'guide.step_plugin.create-similarity-index.input-index-name',\n // If mainAction is set the title will be set automatically\n ...(options.mainAction ? {} : { title: CREATE_SIMILARITY_INDEX_DEFAULT }),\n class: 'similarity-index-name-input',\n ...options,\n url: 'similarity/index/create',\n elementSelector: GuideUtils.getGuideElementSelector('similarity-index-name'),\n onNextValidate: () => Promise.resolve(GuideUtils.validateTextInputNotEmpty(GuideUtils.getGuideElementSelector('similarity-index-name')))\n }\n }\n ]\n }\n },\n {\n guideBlockName: 'similarity-click-to-create',\n getSteps: (options, services) => {\n const GuideUtils = services.GuideUtils;\n return [\n {\n guideBlockName: 'clickable-element',\n options: {\n content: 'guide.step_plugin.create-similarity-index.create-index',\n // If mainAction is set the title will be set automatically\n ...(options.mainAction ? {} : { title: CREATE_SIMILARITY_INDEX_DEFAULT }),\n class: 'create-similarity-index',\n disablePreviousFlow: false,\n disableNextFlow: true,\n ...options,\n url: 'similarity/index/create',\n elementSelector: GuideUtils.getGuideElementSelector('create-similarity-index-btn'),\n onNextClick: () => {\n }\n }\n }\n ]\n }\n },\n {\n guideBlockName: 'similarity-hold-and-wait-until-shown',\n getSteps: (options, services) => {\n const GuideUtils = services.GuideUtils;\n return [\n {\n options: {\n content: 'guide.step_plugin.create-similarity-index.wait',\n class: 'wait-for-index',\n ...options,\n elementSelectorToWait: GuideUtils.getGuideElementSelector('similarity-indexes-table'),\n }\n }\n ]\n }\n },\n {\n guideBlockName: 'create-similarity-index',\n getSteps: (options, services) => {\n const GuideUtils = services.GuideUtils;\n options.mainAction = 'create-similarity-index';\n\n return [\n {\n guideBlockName: 'click-main-menu',\n options: angular.extend({}, {\n menu: 'similarity',\n showIntro: true\n }, options)\n },\n {\n guideBlockName: 'similarity-click-link', options: {...options}\n },\n {\n guideBlockName: 'similarity-type-index-name', options: {...options}\n },\n {\n guideBlockName: 'similarity-click-to-create', options: {...options}\n },\n {\n // check if error block is shown and go back 2 steps or proceed\n guideBlockName: 'info-message',\n options: angular.extend({}, {\n beforeShowPromise: (guide, currentStep) => GuideUtils.getOrWaitFor(GuideUtils.getGuideElementSelector('error'), 1)\n .then(() => {\n const stepId = currentStep.id;\n // Using a timeout\n // because the library executes logic\n // to show the step in a then clause\n // which causes current and next steps to show\n setTimeout(() => guide.show(stepId - 2))\n })\n .catch(() => {\n // Using a timeout\n // because the library executes logic\n // to show the step in a then clause\n // which causes current and next steps to show\n setTimeout(() => guide.next())\n }),\n }, options)\n },\n {\n guideBlockName: 'similarity-hold-and-wait-until-shown', options: {...options}\n }\n ];\n }\n }\n]);\n"],"names":["CREATE_SIMILARITY_INDEX_DEFAULT","PluginRegistry","add","guideBlockName","getSteps","options","services","GuideUtils","content","mainAction","title","class","disableNextFlow","url","elementSelector","getGuideElementSelector","onNextClick","onNextValidate","Promise","resolve","validateTextInputNotEmpty","disablePreviousFlow","elementSelectorToWait","angular","extend","menu","showIntro","beforeShowPromise","guide","currentStep","getOrWaitFor","then","stepId","id","setTimeout","show","catch","next"],"sourceRoot":""}
@@ -1,2 +0,0 @@
1
- export const __webpack_id__=89647;export const __webpack_ids__=[12940,30553,89598,89647];export const __webpack_modules__={12940:(e,r,n)=>{n.r(r);var t=n(5949),o=n(89598),c=n(30553);const l={buttonStyle:"position: absolute; top: 0; right: 0; margin-right: 24px"};function s(e){const r=(0,t.A)().use(o.markdownCodeCopyPlugin).use(c.markdownOpenInSparqlEditorPlugin,l);return{renderMarkdown:(n,s)=>{try{return e.trustAsHtml((e=>e?(0,t.A)().use(o.markdownCodeCopyPlugin,e).use(c.markdownOpenInSparqlEditorPlugin,_.merge({},l,e)):r)(s).render(n))}catch(r){return console.error("Error rendering markdown:",r),e.trustAsHtml(n)}}}}angular.module("graphdb.framework.core.services.markdown-service",[]).service("MarkdownService",s),s.$inject=["$sce"]},30553:(e,r,n)=>{n.r(r),n.d(r,{markdownOpenInSparqlEditorPlugin:()=>c});const t={buttonStyle:"position: absolute; top: 0; right: 0;",buttonClass:""};function o(e,r){return r=_.merge({},t,r),(...n)=>{const[t,o]=n,c=t[o],l=t[o].content.replaceAll('"',"&quot;").replaceAll("'","&apos;"),s=e(...n);return"fence"===c.type&&"sparql"===c.info&&s.trim()?`<div style="position: relative">\n ${s}\n <open-in-sparql-editor\n style="${r.buttonStyle}"\n class="${r.buttonClass}"\n execute-query="${r.executeQuery}"\n repository-id="${r.repositoryId}"\n query="${l}">\n </open-in-sparql-editor>\n </div>`:s}}const c=(e,r)=>{e.renderer.rules.code_block=o(e.renderer.rules.code_block,r),e.renderer.rules.fence=o(e.renderer.rules.fence,r)}},89598:(e,r,n)=>{n.r(r),n.d(r,{markdownCodeCopyPlugin:()=>c});const t={buttonStyle:"position: absolute; top: 0; right: 0;",buttonClass:""};function o(e,r){return r=_.merge({},t,r),(...n)=>{const[t,o]=n,c=t[o],l=t[o].content.replaceAll('"',"&quot;").replaceAll("'","&apos;"),s=e(...n);return"fence"===c.type&&s.trim()?`<div style="position: relative">\n ${s}\n <copy-to-clipboard\n style="${r.buttonStyle}"\n class="${r.buttonClass}"\n tooltip-text="ttyg.chat_panel.btn.copy_sparql.tooltip"\n text-to-copy="${l}">\n </copy-to-clipboard>\n </div>`:s}}const c=(e,r)=>{e.renderer.rules.code_block=o(e.renderer.rules.code_block,r),e.renderer.rules.fence=o(e.renderer.rules.fence,r)}},89647:(e,r,n)=>{function t(e,r){return{templateUrl:"js/angular/core/templates/markdown-content/markdown-content.html",restrict:"E",scope:{content:"@",options:"="},link:function(n,t){n.markdownContent=void 0;n.markdownContent=r.renderMarkdown(n.content,n.options),n.$evalAsync(()=>{const r=t.find(".markdown-content");e(angular.element(r).contents())(n)})}}}n.r(r),n(12940),angular.module("graphdb.framework.core.directives.markdown-content",["graphdb.framework.core.services.markdown-service"]).directive("markdownContent",t),t.$inject=["$compile","MarkdownService"]}};
2
- //# sourceMappingURL=89647.b1a4e522d685f0b5d60f.bundle.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"89647.b1a4e522d685f0b5d60f.bundle.js","mappings":"sLAIA,MAAMA,EAAgC,CAClCC,YAAa,4DAcjB,SAASC,EAAgBC,GACrB,MAAMC,GAAmBC,EAAAA,EAAAA,KACpBC,IAAIC,EAAAA,wBACJD,IAAIE,EAAAA,iCAAkCR,GAkC3C,MAAO,CACHS,eAXmBA,CAACC,EAAMC,KAC1B,IACI,OAAOR,EAAKS,YAlBCD,IACbA,GACON,EAAAA,EAAAA,KACFC,IAAIC,EAAAA,uBAAwBI,GAC5BL,IAAIE,EAAAA,iCAAkCK,EAAEC,MAAM,CAAC,EAAGd,EAA+BW,IAGnFP,EAWqBW,CAAYJ,GAAQK,OAAON,GACvD,CAAE,MAAOO,GAGL,OAFAC,QAAQC,MAAM,4BAA6BF,GAEpCd,EAAKS,YAAYF,EAC5B,GAMR,CA9CAU,QACKC,OAAO,mDAAoD,IAC3DC,QAAQ,kBAAmBpB,GAEhCA,EAAgBqB,QAAU,CAAC,O,yECjB3B,MAAMC,EAAiC,CACnCvB,YAAa,wCACbwB,YAAa,IAyBjB,SAASC,EAAWC,EAAUC,GAE1B,OADAA,EAAUf,EAAEC,MAAM,CAAC,EAAGU,EAAgCI,GAC/C,IAAIC,KACP,MAAOC,EAAQC,GAAOF,EAChBG,EAAQF,EAAOC,GAEfE,EAAUH,EAAOC,GAAKE,QACvBC,WAAW,IAAK,UAChBA,WAAW,IAAK,UACfC,EAAeR,KAAYE,GAEjC,MAAmB,UAAfG,EAAMI,MAAmC,WAAfJ,EAAMK,MAAqBF,EAAaG,OAC3D,6DACOH,yFAEWP,EAAQ3B,oDACR2B,EAAQH,4DACAG,EAAQW,6DACRX,EAAQY,qDAChBP,oFAIlBE,EAGnB,CAEO,MAAM3B,EAAmCA,CAACiC,EAAIb,KACjDa,EAAGC,SAASC,MAAMC,WAAalB,EAAWe,EAAGC,SAASC,MAAMC,WAAYhB,GACxEa,EAAGC,SAASC,MAAME,MAAQnB,EAAWe,EAAGC,SAASC,MAAME,MAAOjB,G,+DCzDlE,MAAMJ,EAAiC,CACnCvB,YAAa,wCACbwB,YAAa,IAmBjB,SAASC,EAAWC,EAAUC,GAE1B,OADAA,EAAUf,EAAEC,MAAM,CAAC,EAAGU,EAAgCI,GAC/C,IAAIC,KACP,MAAOC,EAAQC,GAAOF,EAChBG,EAAQF,EAAOC,GAEfE,EAAUH,EAAOC,GAAKE,QACvBC,WAAW,IAAK,UAChBA,WAAW,IAAK,UACfC,EAAeR,KAAYE,GAEjC,MAAmB,UAAfG,EAAMI,MAAoBD,EAAaG,OAChC,6DACOH,qFAEWP,EAAQ3B,oDACR2B,EAAQH,+IAEDQ,gFAIzBE,EAGnB,CAEO,MAAM5B,EAAyBA,CAACkC,EAAIb,KACvCa,EAAGC,SAASC,MAAMC,WAAalB,EAAWe,EAAGC,SAASC,MAAMC,WAAYhB,GACxEa,EAAGC,SAASC,MAAME,MAAQnB,EAAWe,EAAGC,SAASC,MAAME,MAAOjB,G,kBCpBlE,SAASkB,EAAyBC,EAAU7C,GACxC,MAAO,CACH8C,YAAa,mEACbC,SAAU,IACVC,MAAO,CACHjB,QAAS,IACTL,QAAS,KAEbuB,KAAM,SAAUC,EAAQC,GAWpBD,EAAOE,qBAAkBC,EAOrBH,EAAOE,gBAAkBpD,EAAgBO,eAAe2C,EAAOnB,QAASmB,EAAOxB,SAU/EwB,EAAOI,WAAW,KAEd,MAAMC,EAAkBJ,EAAQK,KAAK,qBACrCX,EAAS3B,QAAQiC,QAAQI,GAAiBE,WAA1CZ,CAAsDK,IAKlE,EAER,C,gBApDAhC,QACKC,OAAO,qDAvBI,CACZ,qDAuBCuC,UAAU,kBAAmBd,GAElCA,EAAyBvB,QAAU,CAAC,WAAY,kB","sources":["webpack://root-config/./packages/legacy-workbench/src/js/angular/core/services/markdown/markdown.service.js","webpack://root-config/./packages/legacy-workbench/src/js/angular/core/services/markdown/plugins/markdown-open-in-sparql-editor-plugin.js","webpack://root-config/./packages/legacy-workbench/src/js/angular/core/services/markdown/plugins/markdown-code-copy-plugin.js","webpack://root-config/./packages/legacy-workbench/src/js/angular/core/directives/markdown-content/markdown-content.js"],"sourcesContent":["import markdownIt from 'markdown-it';\nimport {markdownCodeCopyPlugin} from \"./plugins/markdown-code-copy-plugin\";\nimport {markdownOpenInSparqlEditorPlugin} from \"./plugins/markdown-open-in-sparql-editor-plugin\";\n\nconst OPEN_IN_SPARQL_PLUGIN_OPTIONS = {\n buttonStyle: 'position: absolute; top: 0; right: 0; margin-right: 24px'\n};\n\n/**\n * AngularJS service that provides methods for rendering Markdown text.\n * @class MarkdownService\n * @param {$sce} $sce - AngularJS service for Strict Contextual Escaping.\n */\nangular\n .module('graphdb.framework.core.services.markdown-service', [])\n .service('MarkdownService', MarkdownService);\n\nMarkdownService.$inject = ['$sce'];\n\nfunction MarkdownService($sce) {\n const markdownInstance = markdownIt()\n .use(markdownCodeCopyPlugin)\n .use(markdownOpenInSparqlEditorPlugin, OPEN_IN_SPARQL_PLUGIN_OPTIONS);\n\n /**\n * Retrieves a Markdown-it instance with optional custom configuration.\n * @function getMarkdown\n * @param {Object} [config] - Optional custom configuration for Markdown-it.\n * @return {Object} The Markdown instance.\n */\n const getMarkdown = (config) => {\n if (config) {\n return markdownIt()\n .use(markdownCodeCopyPlugin, config)\n .use(markdownOpenInSparqlEditorPlugin, _.merge({}, OPEN_IN_SPARQL_PLUGIN_OPTIONS, config));\n\n }\n return markdownInstance;\n };\n\n /**\n * Renders Markdown text into HTML.\n * @function renderMarkdown\n * @param {string} text - The Markdown text to render.\n * @return {string} The rendered HTML, or the original text in case of an error.\n */\n const renderMarkdown = (text, config) => {\n try {\n return $sce.trustAsHtml(getMarkdown(config).render(text));\n } catch (e) {\n console.error('Error rendering markdown:', e);\n // Return the original text in case of an error\n return $sce.trustAsHtml(text);\n }\n };\n\n return {\n renderMarkdown\n };\n}\n","const DEFAULT_MARKDOWN_CONFIGURATION = {\n buttonStyle: \"position: absolute; top: 0; right: 0;\",\n buttonClass: \"\"\n};\n\n/**\n * This function enhances the rendering of fenced code blocks in markdown that contain SPARQL queries\n * by appending an \"open in SPARQL editor\" button to each SPARQL code block.\n *\n * @param {Function} origRule The original rule function responsible for rendering code blocks.\n * @param {Object} options The options to customize the rendering. These will be merged with the default configuration.\n * Options model description:\n * ```JSON\n * {\n * // Inline CSS styles applied to position the button inside the code block. Defaults to positioning the button at the top-right of the block.\n * buttonStyle: \"position: absolute; top: 0; right: 0;\",\n * // The CSS class for styling the button.\n * buttonClass: \"\",\n * // A flag that determines whether the SPARQL query should be automatically executed when opened in the SPARQL editor. Defaults to `false`.\n * executeQuery: false,\n * // The ID of the repository that the SPARQL query will be executed against.\n * repositoryId: ''\n * }\n * ```\n *\n * @return {Function} A function that renders a fenced code block with an \"open in SPARQL editor\" button when the block is recognized as containing SPARQL code.\n */\nfunction renderCode(origRule, options) {\n options = _.merge({}, DEFAULT_MARKDOWN_CONFIGURATION, options);\n return (...args) => {\n const [tokens, idx] = args;\n const token = tokens[idx];\n\n const content = tokens[idx].content\n .replaceAll('\"', '&quot;')\n .replaceAll(\"'\", \"&apos;\");\n const origRendered = origRule(...args);\n\n if (token.type === 'fence' && token.info === 'sparql' && origRendered.trim()) {\n return `<div style=\"position: relative\">\n ${origRendered}\n <open-in-sparql-editor\n style=\"${options.buttonStyle}\"\n class=\"${options.buttonClass}\"\n execute-query=\"${options.executeQuery}\"\n repository-id=\"${options.repositoryId}\"\n query=\"${content}\">\n </open-in-sparql-editor>\n </div>`;\n } else {\n return origRendered;\n }\n };\n}\n\nexport const markdownOpenInSparqlEditorPlugin = (md, options) => {\n md.renderer.rules.code_block = renderCode(md.renderer.rules.code_block, options);\n md.renderer.rules.fence = renderCode(md.renderer.rules.fence, options);\n};\n","const DEFAULT_MARKDOWN_CONFIGURATION = {\n buttonStyle: \"position: absolute; top: 0; right: 0;\",\n buttonClass: \"\"\n};\n\n/**\n * This function enhances the rendering of code blocks in markdown by appending a \"copy to clipboard\" button to each code block.\n *\n * @param {Function} origRule The original rule function responsible for rendering code blocks.\n * @param {Object} options The options to customize the rendering. These will be merged with the default configuration.\n * Options model description:\n * ```JSON\n * {\n * // Inline CSS styles applied to position the button inside the code block. Defaults to positioning the button at the top-right of the block.\n * buttonStyle: \"position: absolute; top: 0; right: 0;\",\n * // The CSS class for styling the button. The default applies Bootstrap-like styles with a small button size and a secondary theme\n * buttonClass: \"btn btn-link btn-sm secondary\",\n * }\n * ```\n * @return {Function} A function that renders a code block with a \"copy to clipboard\" button, when a fenced code block is detected.\n */\nfunction renderCode(origRule, options) {\n options = _.merge({}, DEFAULT_MARKDOWN_CONFIGURATION, options);\n return (...args) => {\n const [tokens, idx] = args;\n const token = tokens[idx];\n\n const content = tokens[idx].content\n .replaceAll('\"', '&quot;')\n .replaceAll(\"'\", \"&apos;\");\n const origRendered = origRule(...args);\n\n if (token.type === 'fence' && origRendered.trim()) {\n return `<div style=\"position: relative\">\n ${origRendered}\n <copy-to-clipboard\n style=\"${options.buttonStyle}\"\n class=\"${options.buttonClass}\"\n tooltip-text=\"ttyg.chat_panel.btn.copy_sparql.tooltip\"\n text-to-copy=\"${content}\">\n </copy-to-clipboard>\n </div>`;\n } else {\n return origRendered;\n }\n };\n}\n\nexport const markdownCodeCopyPlugin = (md, options) => {\n md.renderer.rules.code_block = renderCode(md.renderer.rules.code_block, options);\n md.renderer.rules.fence = renderCode(md.renderer.rules.fence, options);\n};\n","import 'angular/core/services/markdown/markdown.service';\n\nconst modules = [\n 'graphdb.framework.core.services.markdown-service'\n];\n\n/**\n * @ngdoc directive\n * @name graphdb.framework.core.directives.markdown-content:markdownContent\n * @restrict E\n *\n * @description\n * The `markdownContent` directive is used to render and compile Markdown content inside AngularJS applications.\n * It dynamically compiles any AngularJS directives within the rendered Markdown content, ensuring that the\n * directives are properly recognized and executed.\n *\n * @param {string=} content The markdown content to be rendered. This can be passed dynamically from the scope.\n * @param {object=} options Optional configuration object to pass to the Markdown rendering engine, providing\n * customization for how the Markdown is rendered.\n *\n * @example\n * Usage:\n * <markdown-content content=\"markdownText\" options=\"markdownOptions\"></markdown-content>\n */\nangular\n .module('graphdb.framework.core.directives.markdown-content', modules)\n .directive('markdownContent', markdownContentDirective);\n\nmarkdownContentDirective.$inject = ['$compile', 'MarkdownService'];\n\nfunction markdownContentDirective($compile, MarkdownService) {\n return {\n templateUrl: 'js/angular/core/templates/markdown-content/markdown-content.html',\n restrict: 'E',\n scope: {\n content: '@',\n options: '='\n },\n link: function ($scope, element) {\n\n // =========================\n // Public variables\n // =========================\n\n /**\n * The rendered HTML content generated from the provided Markdown.\n *\n * @type {string} markdownContent\n */\n $scope.markdownContent = undefined;\n\n // =========================\n // Private functions\n // =========================\n\n const init = () => {\n $scope.markdownContent = MarkdownService.renderMarkdown($scope.content, $scope.options);\n compileMarkdownAnswerContents();\n };\n\n /**\n * Manually compiles AngularJS directives within the dynamically generated markdown HTML content.\n * AngularJS does not automatically detect and compile directives inside HTML that is dynamically\n * inserted, so this function ensures that the content is compiled after it is rendered.\n */\n const compileMarkdownAnswerContents = () => {\n $scope.$evalAsync(() => {\n // Find the dynamically rendered element that needs to be compiled\n const markdownElement = element.find('.markdown-content');\n $compile(angular.element(markdownElement).contents())($scope);\n });\n };\n\n init();\n }\n };\n}\n"],"names":["OPEN_IN_SPARQL_PLUGIN_OPTIONS","buttonStyle","MarkdownService","$sce","markdownInstance","markdownIt","use","markdownCodeCopyPlugin","markdownOpenInSparqlEditorPlugin","renderMarkdown","text","config","trustAsHtml","_","merge","getMarkdown","render","e","console","error","angular","module","service","$inject","DEFAULT_MARKDOWN_CONFIGURATION","buttonClass","renderCode","origRule","options","args","tokens","idx","token","content","replaceAll","origRendered","type","info","trim","executeQuery","repositoryId","md","renderer","rules","code_block","fence","markdownContentDirective","$compile","templateUrl","restrict","scope","link","$scope","element","markdownContent","undefined","$evalAsync","markdownElement","find","contents","directive"],"sourceRoot":""}
@@ -1,2 +0,0 @@
1
- export const __webpack_id__=9062;export const __webpack_ids__=[9062];export const __webpack_modules__={9062:(t,e,n)=>{n.r(e),n.d(e,{default:()=>a});const a='<link href="css/ttyg/agent-list.css?v=3.2.0-TR1" rel="stylesheet"/> <div class="agent-list-component"> <div class="agents-filter-dropdown btn-group" uib-dropdown> <button type="button" uib-dropdown-toggle class="btn btn-outline-primary dropdown-toggle"> <i class="fa-kit fa-gdb-repo-graphdb mr-1"></i> <span class="selected-filter">{{selectedAgentsFilter.label}}</span> <i class="fa fa-filter" gdb-tooltip="{{\'ttyg.agent.btn.filter.tooltip\' | translate}}"></i> </button> <ul class="dropdown-menu" role="menu"> <li ng-repeat="filterModel in agentListFilterModel"> <button type="button" class="dropdown-item" ng-click="onAgentsFilterChange(filterModel)" data-value="{{filterModel.label}}"> {{filterModel.label}} </button> </li> </ul> </div> <div class="agent-list"> <div ng-if="!agentList.agents.length" class="alert alert-warning"> {{\'ttyg.agent.messages.no_agents\' | translate}} </div> <div ng-repeat="agent in agentList.filterableAgents"> <div ng-if="!deletingAgent || deletingAgent.agentId !== agent.id" class="agent-item" ng-class="{\'selected\': agent.id === selectedAgent.id}"> <div class="agent-info" ng-attr-gdb-tooltip="{{!agent.isCompatible ? (\'ttyg.agent.incompatible_agent\' | translate) : undefined}}"> <div class="agent-name" ng-class="{\'incompatible-agent\': !agent.isCompatible}"> <i ng-if="!agent.isCompatible" class="fa fa-triangle-exclamation text-warning"> </i> {{agent.name}} </div> <div class="btn-group"> <button class="btn btn-link secondary btn-sm open-agent-actions-btn" data-toggle="dropdown" aria-expanded="false" ng-if="true" ng-click="openAgentActionMenu()" ng-disabled="false"> <i class="fa fa-ellipsis"></i> </button> <div class="dropdown-menu dropdown-menu-right agent-actions-menu"> <button ng-if="agent.isCompatible" class="dropdown-item edit-agent-btn" type="button" ng-click="onEditAgent(agent)"> <i class="fa fa-gear"></i> <span>{{\'ttyg.agent.btn.edit_agent.label\' | translate}}</span> </button> <button ng-if="agent.isCompatible" class="dropdown-item ext-integration-agent-btn" type="button" ng-click="onExternalIntegration(agent)"> <i class="fa-regular fa-plug-circle-plus"></i> <span>{{\'ttyg.agent.btn.external_integration\' | translate}}</span> </button> <button ng-if="agent.isCompatible" class="dropdown-item clone-agent-btn" type="button" ng-click="onCloneAgent(agent)"> <i class="fa fa-clone"></i> <span>{{\'ttyg.agent.btn.clone_agent.label\' | translate}}</span> </button> <div ng-if="agent.isCompatible" class="dropdown-divider"></div> <button class="dropdown-item delete-agent-btn" type="button" ng-click="onDeleteAgent(agent)"> <i class="fa fa-trash-can"></i> <span>{{\'ttyg.agent.btn.delete_agent.label\' | translate}}</span> </button> </div> </div> </div> <div class="repository-model-group"> <div class="related-repository"> <i ng-if="!agent.isRepositoryDeleted" class="fa-kit fa-gdb-repo-graphdb"></i> <i ng-if="agent.isRepositoryDeleted" class="fa fa-triangle-exclamation text-warning agent-with-deleted-repository" gdb-tooltip="{{\'ttyg.agent.deleted_repository\' | translate}}"> </i> {{agent.repositoryId}} </div> <div class="model-name">{{agent.model}}</div> </div> </div> <div class="deleting-agent-loader" ng-if="deletingAgent.agentId === agent.id && deletingAgent.inProgress" onto-loader-fancy message="{{\'ttyg.agent.deleting_agent\' | translate}}" size="25"></div> </div> </div> </div> '}};
2
- //# sourceMappingURL=9062.d9049833d076191d3e1a.bundle.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"9062.d9049833d076191d3e1a.bundle.js","mappings":"oJAGA,QAFW,+xG","sources":["webpack://root-config/./packages/legacy-workbench/src/js/angular/ttyg/templates/agent-list.html"],"sourcesContent":["// Module\nvar code = `<link href=\"css/ttyg/agent-list.css?v=3.2.0-TR1\" rel=\"stylesheet\"/> <div class=\"agent-list-component\"> <div class=\"agents-filter-dropdown btn-group\" uib-dropdown> <button type=\"button\" uib-dropdown-toggle class=\"btn btn-outline-primary dropdown-toggle\"> <i class=\"fa-kit fa-gdb-repo-graphdb mr-1\"></i> <span class=\"selected-filter\">{{selectedAgentsFilter.label}}</span> <i class=\"fa fa-filter\" gdb-tooltip=\"{{'ttyg.agent.btn.filter.tooltip' | translate}}\"></i> </button> <ul class=\"dropdown-menu\" role=\"menu\"> <li ng-repeat=\"filterModel in agentListFilterModel\"> <button type=\"button\" class=\"dropdown-item\" ng-click=\"onAgentsFilterChange(filterModel)\" data-value=\"{{filterModel.label}}\"> {{filterModel.label}} </button> </li> </ul> </div> <div class=\"agent-list\"> <div ng-if=\"!agentList.agents.length\" class=\"alert alert-warning\"> {{'ttyg.agent.messages.no_agents' | translate}} </div> <div ng-repeat=\"agent in agentList.filterableAgents\"> <div ng-if=\"!deletingAgent || deletingAgent.agentId !== agent.id\" class=\"agent-item\" ng-class=\"{'selected': agent.id === selectedAgent.id}\"> <div class=\"agent-info\" ng-attr-gdb-tooltip=\"{{!agent.isCompatible ? ('ttyg.agent.incompatible_agent' | translate) : undefined}}\"> <div class=\"agent-name\" ng-class=\"{'incompatible-agent': !agent.isCompatible}\"> <i ng-if=\"!agent.isCompatible\" class=\"fa fa-triangle-exclamation text-warning\"> </i> {{agent.name}} </div> <div class=\"btn-group\"> <button class=\"btn btn-link secondary btn-sm open-agent-actions-btn\" data-toggle=\"dropdown\" aria-expanded=\"false\" ng-if=\"true\" ng-click=\"openAgentActionMenu()\" ng-disabled=\"false\"> <i class=\"fa fa-ellipsis\"></i> </button> <div class=\"dropdown-menu dropdown-menu-right agent-actions-menu\"> <button ng-if=\"agent.isCompatible\" class=\"dropdown-item edit-agent-btn\" type=\"button\" ng-click=\"onEditAgent(agent)\"> <i class=\"fa fa-gear\"></i> <span>{{'ttyg.agent.btn.edit_agent.label' | translate}}</span> </button> <button ng-if=\"agent.isCompatible\" class=\"dropdown-item ext-integration-agent-btn\" type=\"button\" ng-click=\"onExternalIntegration(agent)\"> <i class=\"fa-regular fa-plug-circle-plus\"></i> <span>{{'ttyg.agent.btn.external_integration' | translate}}</span> </button> <button ng-if=\"agent.isCompatible\" class=\"dropdown-item clone-agent-btn\" type=\"button\" ng-click=\"onCloneAgent(agent)\"> <i class=\"fa fa-clone\"></i> <span>{{'ttyg.agent.btn.clone_agent.label' | translate}}</span> </button> <div ng-if=\"agent.isCompatible\" class=\"dropdown-divider\"></div> <button class=\"dropdown-item delete-agent-btn\" type=\"button\" ng-click=\"onDeleteAgent(agent)\"> <i class=\"fa fa-trash-can\"></i> <span>{{'ttyg.agent.btn.delete_agent.label' | translate}}</span> </button> </div> </div> </div> <div class=\"repository-model-group\"> <div class=\"related-repository\"> <i ng-if=\"!agent.isRepositoryDeleted\" class=\"fa-kit fa-gdb-repo-graphdb\"></i> <i ng-if=\"agent.isRepositoryDeleted\" class=\"fa fa-triangle-exclamation text-warning agent-with-deleted-repository\" gdb-tooltip=\"{{'ttyg.agent.deleted_repository' | translate}}\"> </i> {{agent.repositoryId}} </div> <div class=\"model-name\">{{agent.model}}</div> </div> </div> <div class=\"deleting-agent-loader\" ng-if=\"deletingAgent.agentId === agent.id && deletingAgent.inProgress\" onto-loader-fancy message=\"{{'ttyg.agent.deleting_agent' | translate}}\" size=\"25\"></div> </div> </div> </div> `;\n// Exports\nexport default code;"],"names":[],"sourceRoot":""}
@@ -1,2 +0,0 @@
1
- export const __webpack_id__=95953;export const __webpack_ids__=[11637,14102,17187,25593,27473,50479,51682,59263,61105,65191,66989,75232,95953];export const __webpack_modules__={11637:(e,t,n)=>{n.r(t),n.d(t,{SimilarityIndexStatus:()=>o});const o={CREATING:"CREATING",BUILDING:"BUILDING",BUILT:"BUILT",REBUILDING:"REBUILDING",OUTDATED:"OUTDATED",INTERRUPTED:"INTERRUPTED",OBSOLETE:"OBSOLETE",FAILED:"FAILED",isCreatingStatus:e=>o.CREATING===e,isBuildingStatus:e=>o.BUILDING===e,isBuiltStatus:e=>o.BUILT===e,isRebuildingStatus:e=>o.REBUILDING===e,isOutdatedStatus:e=>o.OUTDATED===e,isInterruptedStatus:e=>o.INTERRUPTED===e,isObsoleteStatus:e=>o.OBSOLETE===e,isFailedStatus:e=>o.FAILED===e}},14102:(e,t,n)=>{n.r(t),n.d(t,{SimilarityIndex:()=>i});var o=n(50479),r=n(11637);class i{constructor(){this.analyzer="",this.infer=!0,this.options="",this.sameAs=!0,this.searchQuery="",this.selectQuery="",this.stopList=void 0,this.name="",this.type=o.SimilarityIndexType.TEXT,this.status=void 0,this.analogicalQuery=void 0,this.inputIndex=void 0,this.isLiteralIndex=""}isTextType(){return o.SimilarityIndexType.isTextType(this.type)}isTextLiteralType(){return o.SimilarityIndexType.isTextLiteralType(this.type)}isPredicationType(){return o.SimilarityIndexType.isPredicationType(this.type)}isCreatingStatus(){return r.SimilarityIndexStatus.isCreatingStatus(this.status)}isBuildingStatus(){return r.SimilarityIndexStatus.isBuildingStatus(this.status)}isBuiltStatus(){return r.SimilarityIndexStatus.isBuiltStatus(this.status)}isRebuildingStatus(){return r.SimilarityIndexStatus.isRebuildingStatus(this.status)}isOutdatedStatus(){return r.SimilarityIndexStatus.isOutdatedStatus(this.status)}isInterruptedStatus(){return r.SimilarityIndexStatus.isInterruptedStatus(this.status)}isObsoleteStatus(){return r.SimilarityIndexStatus.isObsoleteStatus(this.status)}isFailedStatus(){return r.SimilarityIndexStatus.isFailedStatus(this.status)}}},17187:(e,t,n)=>{function o(e,t,n,o,r){e.agentInstructionsExplain=r.agentInstructionsExplain,e.close=()=>{t.dismiss({})},e.onCloseAgentInstructionsExplainModal=()=>{t.dismiss({})};const i=[];e.$on("$destroy",()=>{i.forEach(e=>e())})}n.r(t),n(51682),n(66989),n(36665),n(69289),angular.module("graphdb.framework.ttyg.controllers.agent-instructions-explain-modal",[]).controller("AgentInstructionsExplainModalController",o),o.$inject=["$scope","$uibModalInstance","ModalService","$translate","dialogModel"]},25593:(e,t,n)=>{n.r(t),n.d(t,{ConnectorListModel:()=>i,ConnectorModel:()=>s,ConnectorSettingsModel:()=>a,ConnectorTypeModel:()=>r,ConnectorTypesListModel:()=>o});class o{constructor(e={}){this._connectors=e.connectors||[]}getConnectorByName(e){return this._connectors.find(t=>t.name===e)}get connectors(){return this._connectors}set connectors(e){this._connectors=e}}class r{constructor(e){this._name=e.name,this._prefix=e.prefix}get name(){return this._name}set name(e){this._name=e}get prefix(){return this._prefix}set prefix(e){this._prefix=e}}class i{constructor(e=[]){this._connectors=e.connectors}get connectors(){return this._connectors}set connectors(e){this._connectors=e}}class s{constructor(e){this._name=e.name,this._settings=new a(e)}get settings(){return this._settings}set settings(e){this._settings=e}get name(){return this._name}set name(e){this._name=e}}class a{constructor(e){this._settings=e.values||{}}get settings(){return this._settings}set settings(e){this._settings=e}}},27473:(e,t,n)=>{n.r(t),n.d(t,{mapIndexesResponseToSimilarityIndex:()=>r});var o=n(14102);const r=e=>e.map(e=>{const t=new o.SimilarityIndex;return t.type=e.type,t.stopList=e.stopList,t.status=e.status,t.selectQuery=e.selectQuery,t.searchQuery=e.searchQuery,t.sameAs=e.sameAs,t.options=e.options,t.name=e.name,t.infer=e.infer,t.analyzer=e.analyzer,t.analogicalQuery=e.analogicalQuery,t})},50479:(e,t,n)=>{n.r(t),n.d(t,{SimilarityIndexType:()=>o});const o={TEXT:"text",TEXT_LITERAL:"textLiteral",PREDICATION:"predication",isTextType:e=>o.TEXT===e,isTextLiteralType:e=>o.TEXT_LITERAL===e,isPredicationType:e=>o.PREDICATION===e}},51682:(e,t,n)=>{n.r(t),n(75232);var o=n(27473),r=n(38940);function i(e){const t=(t,n)=>e.getIndexes(t,n).then(e=>(0,o.mapIndexesResponseToSimilarityIndex)(e.data));return{getIndexes:t,getIndexesAsMenuModel:(e,n)=>t(e,n).then(e=>e.map(e=>new r.SelectMenuOptionsModel({label:e.name,value:e.name})))}}angular.module("graphdb.framework.core.services.similarity",["graphdb.framework.rest.similarity.service"]).factory("SimilarityService",i),i.$inject=["SimilarityRestService"]},59263:(e,t,n)=>{n.r(t),n.d(t,{connectorTypesListMapper:()=>r,connectorsMapper:()=>i});var o=n(25593);const r=e=>{const t=new o.ConnectorTypesListModel;return e?(t.connectors=Object.keys(e).map(t=>new o.ConnectorTypeModel({name:t,prefix:e[t]})),t):t},i=e=>{const t=new o.ConnectorListModel;return e?(t.connectors=e.map(e=>new o.ConnectorModel(e)),t):t}},61105:()=>{angular.module("graphdb.framework.rest.connectors.service",[]).factory("ConnectorsRestService",t),t.$inject=["$http"];const e="rest/connectors";function t(t){return{getConnectors:function(n,o){return n?t.get(e,{headers:{"X-GraphDB-Repository":n,"X-GraphDB-Repository-Location":o}}):t.get(e)},initConnector:function(n){return t.get(`${e}/options?prefix=${n}`)},hasConnector:function(n,o,r){return o?t.get(`${e}/existing?prefix=${n}`,{headers:{"X-GraphDB-Repository":o,"X-GraphDB-Repository-Location":r}}):t.get(`${e}/existing?prefix=${n}`)},checkConnector:function(n){return t.post(`${e}/check`,n,{headers:{"Content-Type":"text/plain"}})}}}},65191:()=>{function e(e,t,n,o,r){e.externalIntegrationConfiguration=r.externalIntegrationConfiguration,e.difyExtension=r.difyExtensionUrl,e.queryMethods=r.queryMethodsUrl,e.agentId=r.agentId,e.agentName=r.agentName,e.close=()=>{t.dismiss({})},e.onCloseExternalIntegrationConfigurationModal=()=>{t.dismiss({})}}angular.module("graphdb.framework.ttyg.controllers.external-integration-configuration-modal",[]).controller("ExternalIntegrationConfigurationModalController",e),e.$inject=["$scope","$uibModalInstance","ModalService","$translate","dialogModel"]},66989:(e,t,n)=>{n.r(t),n(61105);var o=n(59263),r=n(38940);function i(e){const t=(t,n)=>e.getConnectors(t,n).then(e=>(0,o.connectorTypesListMapper)(e.data)),n=(t,n,r)=>e.hasConnector(encodeURIComponent(t),n,r).then(e=>(0,o.connectorsMapper)(e.data));return{getConnectorTypes:t,getConnectorsByType:n,getConnectorPrefixByName:(e,n,o)=>t(n,o).then(t=>{const n=t.getConnectorByName(e);return n?n.prefix:null}),getConnectorsByTypeAsSelectMenuOptions:(e,t,o)=>n(e,t,o).then(e=>e.connectors.map(e=>new r.SelectMenuOptionsModel({value:e.name,label:e.name})))}}angular.module("graphdb.framework.core.services.connectors",["graphdb.framework.rest.connectors.service"]).factory("ConnectorsService",i),i.$inject=["ConnectorsRestService"]},75232:()=>{angular.module("graphdb.framework.rest.similarity.service",[]).factory("SimilarityRestService",t),t.$inject=["$http","$repositories"];const e="rest/similarity";function t(t){return{getIndexes:function(n,o){return n?t.get(e,{headers:{"X-GraphDB-Repository":n,"X-GraphDB-Repository-Location":o}}):t.get(e)},getSearchQueries:function(){return t.get(`${e}/config`)},rebuildIndex:function(e){return n("PUT",e.name,e.options,e.selectQuery,e.searchQuery,e.analogicalQuery,e.stopList,e.infer,e.sameAs,e.type)},deleteIndex:function(n){return t.delete(`${e}?name=${n.name}`)},createIndex:n,getSamples:function(){return t.get(`${e}/samples`)},getQuery:function(e){return t.get("rest/similarity/query",{params:{name:e.indexName,options:e.indexOptions,stopList:e.indexStopList,selectQuery:e.query,infer:e.queryInference,sameAs:e.querySameAs,type:e.viewType,analyzer:e.indexAnalyzer}})},saveSearchQuery:function(e){return t({method:"put",url:"rest/similarity/search-query",data:e})}};function n(n,o,r,i,s,a,l,c,d,g,u){return t({method:n,url:`${e}`,noCancelOnRouteChange:!0,data:{name:o,options:r,selectQuery:i,stopList:l,infer:c,sameAs:d,type:g,analyzer:u,searchQuery:s,analogicalQuery:a}})}}},84430:(e,t,n)=>{n.r(t),n(65191);var o=n(70826);function r(e,t,n){return{open:function(r){return t.getExternalUrl().then(t=>{const n=function(e,t){return{agentName:e.name,agentId:e.id,queryMethodsUrl:`${t}/rest/llm/tool/ttyg/${e.id}`,difyExtensionUrl:`${t}/rest/llm/ttyg/${e.id}/dify`}}(r,t.data);return e.open({templateUrl:"js/angular/ttyg/templates/modal/external-integration-configuration-modal.html",controller:"ExternalIntegrationConfigurationModalController",windowClass:"external-integration-configuration-modal",backdrop:"static",resolve:{dialogModel:()=>n}}).result.then(()=>{}).catch(()=>{})}).catch(e=>{n.error(getError(e,0,o.TTYG_ERROR_MSG_LENGTH))})}}}angular.module("graphdb.framework.ttyg.services.externalIntegrationModal",["graphdb.framework.ttyg.controllers.external-integration-configuration-modal"]).factory("ExternalIntegrationModalService",r),r.$inject=["$uibModal","LocationsRestService","toastr"]},95953:(e,t,n)=>{n.r(t);var o=n(69937),r=n(28319),i=(n(51682),n(66989),n(36665),n(69289),n(17187),n(84430),n(51445)),s=n(71920),a=n(70826),l=n(16135),c=n(76076);function d(e,t,n,d,g,u,m,p,y,h,I,S,x,E,T,M,f,_,v){e.AGENT_OPERATION=a.AGENT_OPERATION,e.operation=S.operation,e.savingAgent=!1,e.agentFormModel=S.agentFormModel,e.activeRepositoryInfo=S.activeRepositoryInfo,e.extractionMethodLoaderFlags={[r.ExtractionMethod.SIMILARITY]:!1},e.activeRepositoryList=S.activeRepositoryList,e.extractionMethods=r.ExtractionMethod,e.additionalExtractionMethods=r.AdditionalExtractionMethod,e.ExtractionMethodTemplates=T,e.showAdvancedSettings=!1,e.showHighTemperatureWarning=!1,e.showSystemInstructionWarning=!1,e.similarityIndexes=[],e.retrievalConnectors=[],e.ftsEnabled=!1,e.autocompleteSuggestions=[],e.showContextSize=null!==e.agentFormModel.contextSize,e.toggleExtractionMethod=t=>{t.expanded=t.selected,e.agentSettingsForm.extractionMethods.$setTouched(),O(),w[t.method](t)},e.onExtractionMethodPanelToggle=e=>{e.toggleCollapse(),w[e.method](e)},e.toggleAdditionalExtractionMethod=t=>{t.expanded=t.selected,e.checkAutocompleteIndexEnabled(),k[t.method](t)},e.onAdditionalExtractionMethodPanelToggle=e=>{e.toggleCollapse(),k[e.method](e)},e.helpInfoForModel={ttygHelpInfo:function(){const e=(0,o.Gz)(I.instant("ttyg.agent.create_agent_modal.form.model.hint"));return p.trustAsHtml(e)}(),linkText:I.instant("ttyg.agent.create_agent_modal.form.model.link_text"),documentationUrl:c.DocumentationUrlResolver.getDocumentationUrl(v.productShortVersion,"talk-to-graph.html#prerequisites-and-configuration")},e.getFTSDisabledHelpMessage=()=>{const t=(0,o.Gz)(I.instant("ttyg.agent.create_agent_modal.form.fts_search.fts_disabled_message",{repositoryEditPage:"repository/edit/"+e.agentFormModel.repositoryId}));return p.trustAsHtml(t)},e.goToAutocompleteView=t=>{t.preventDefault(),x.emit(s.TTYGEventName.GO_TO_AUTOCOMPLETE_INDEX_VIEW,{repositoryId:e.agentFormModel.repositoryId})},e.goToCreateSimilarityView=t=>{t.preventDefault(),x.emit(s.TTYGEventName.GO_TO_CREATE_SIMILARITY_VIEW,{repositoryId:e.agentFormModel.repositoryId})},e.goToConnectorsView=t=>{t.preventDefault(),x.emit(s.TTYGEventName.GO_TO_CONNECTORS_VIEW,{repositoryId:e.agentFormModel.repositoryId})},e.ok=()=>{const t=e.agentFormModel.toPayload();return R[e.operation](t)},e.cancel=()=>{t.dismiss({})},e.close=()=>{t.dismiss({})},e.updateSimilaritySearchPanel=(t=!1)=>{const n=e.agentFormModel.assistantExtractionMethods.getSimilarityExtractionMethod();n.selected&&(t&&(n.similarityIndex=null),$(n))},e.updateRetrievalConnectorPanel=(t=!1)=>{const n=e.agentFormModel.assistantExtractionMethods.getRetrievalExtractionMethod();n.selected&&(t&&(n.retrievalConnectorInstance=null),N(n))},e.checkIfFTSEnabled=()=>{e.agentFormModel.repositoryId?e.agentFormModel.assistantExtractionMethods.getFTSSearchExtractionMethod().selected?(e.extractionMethodLoaderFlags[r.ExtractionMethod.FTS_SEARCH]=!0,m.getRepositoryModel({id:e.agentFormModel.repositoryId}).then(t=>{e.ftsEnabled=t.getParamValue(i.REPOSITORY_PARAMS.enableFtsIndex)}).catch(e=>{L(e,"ttyg.agent.messages.error_repository_config_loading")}).finally(()=>{e.extractionMethodLoaderFlags[r.ExtractionMethod.FTS_SEARCH]=!1,e.agentSettingsForm.$setValidity("FTSDisabled",e.ftsEnabled)})):e.agentSettingsForm.$setValidity("FTSDisabled",!0):e.agentSettingsForm.$setValidity("FTSDisabled",!1)},e.openExternalIntegrationConfig=()=>{const t=e.agentFormModel;_.open(t)},e.onRepositoryChange=()=>{U(!0,!0)},e.checkAutocompleteIndexEnabled=t=>{if(t||(t=e.agentFormModel.additionalExtractionMethods.additionalExtractionMethods.find(e=>e.method===r.AdditionalExtractionMethod.AUTOCOMPLETE_IRI_DISCOVERY_SEARCH)),t&&!t.selected||!e.agentFormModel.repositoryId)return;const n=b();M.checkAutocompleteStatus(n.repositoryId,n.repositoryLocation).then(t=>{e.autocompleteEnabled=t,e.agentSettingsForm.$setValidity("autocompleteDisabled",t)}).catch(t=>{e.agentSettingsForm.$setValidity("autocompleteDisabled",!1),y.error(getError(t))})},e.onRestoreDefaultContextSize=()=>{e.agentFormModel.contextSize=e.agentFormModel.contextSizeCopy},e.onRestoreDefaultSystemInstructions=()=>{e.agentFormModel.instructions.systemInstruction=e.agentFormModel.instructions.systemInstructionCopy},e.onRestoreDefaultUserInstructions=()=>{e.agentFormModel.instructions.userInstruction=e.agentFormModel.instructions.userInstructionCopy},e.onTemperatureChange=()=>{e.showHighTemperatureWarning=e.agentFormModel.temperature.value>1},e.onSystemInstructionChange=()=>{""===e.agentFormModel.instructions.systemInstruction||e.showSystemInstructionWarning||(e.showSystemInstructionWarning=!0,n.openModalAlert({title:I.instant("ttyg.agent.create_agent_modal.form.system_instruction.overriding_system_instruction_warning.title"),message:I.instant("ttyg.agent.create_agent_modal.form.system_instruction.overriding_system_instruction_warning.body")}).result.then(function(){})),""===e.agentFormModel.instructions.systemInstruction&&(e.showSystemInstructionWarning=!1)},e.onExplainAgentSettings=()=>{const t=e.agentFormModel.toPayload();E.explainAgentSettings(t).then(e=>{const t={templateUrl:"js/angular/ttyg/templates/modal/agent-instructions-explain-modal.html",controller:"AgentInstructionsExplainModalController",windowClass:"agent-instructions-explain-modal",backdrop:"static",resolve:{dialogModel:function(){return{agentInstructionsExplain:e}}},size:"lg"};d.open(t).result.then(()=>{})}).catch(e=>{y.error(getError(e,0,a.TTYG_ERROR_MSG_LENGTH))})},e.getSuggestions=t=>{const n=t.target.value;f.getAutocompleteSuggestions(n).then(l.mapUriAsNtripleAutocompleteResponse).then(t=>{e.autocompleteSuggestions=t.map(e=>({text:e.value}))}).catch(e=>{y.error(getError(e,0,a.TTYG_ERROR_MSG_LENGTH))})};const R={[a.AGENT_OPERATION.CREATE]:e=>C(e),[a.AGENT_OPERATION.EDIT]:e=>A(e),[a.AGENT_OPERATION.CLONE]:e=>F(e)},C=n=>(e.savingAgent=!0,E.createAgent(n).then(e=>{t.close(e),y.success(I.instant("ttyg.agent.messages.agent_save_successfully",{agentName:e.name}))}).catch(e=>{y.error(getError(e,0,a.TTYG_ERROR_MSG_LENGTH))}).finally(()=>{e.savingAgent=!1})),A=n=>(e.savingAgent=!0,E.editAgent(n).then(e=>{t.close(e),y.success(I.instant("ttyg.agent.messages.agent_save_successfully",{agentName:e.name}))}).catch(e=>{y.error(getError(e,0,a.TTYG_ERROR_MSG_LENGTH))}).finally(()=>{e.savingAgent=!1})),F=n=>(e.savingAgent=!0,E.createAgent(n).then(e=>{t.close(e),y.success(I.instant("ttyg.agent.messages.agent_save_successfully",{agentName:e.name}))}).catch(e=>{y.error(getError(e,0,a.TTYG_ERROR_MSG_LENGTH))}).finally(()=>{e.savingAgent=!1})),L=(e,t)=>{console.error(e),y.error(I.instant(t))},O=()=>{e.agentSettingsForm.extractionMethods.$setValidity("required",e.agentFormModel.hasExtractionMethodSelected())},b=()=>{const t=e.activeRepositoryList.find(t=>t.value===e.agentFormModel.repositoryId);return{repositoryId:t?t.data.repository.id:void 0,repositoryLocation:t?t.data.repository.location:void 0}},$=t=>{if(t.selected||e.agentSettingsForm.$setValidity("missingIndex",!0),e.agentFormModel.repositoryId&&t.expanded){e.extractionMethodLoaderFlags[t.method]=!0;const n=b();g.getIndexesAsMenuModel(n.repositoryId,n.repositoryLocation).then(n=>{e.similarityIndexes=n,e.agentSettingsForm.$setValidity("missingIndex",!t.selected||!(!n||!n.length)),G(e.similarityIndexes,t)}).catch(t=>{e.agentSettingsForm.$setValidity("missingIndex",!1),L(t,"ttyg.agent.messages.error_similarity_indexes_loading")}).finally(()=>{e.extractionMethodLoaderFlags[t.method]=!1})}},G=(e,t)=>{if(0===e.length)return void(t.similarityIndex=null);const n=e.find(e=>e.value===t.similarityIndex);t.similarityIndex=n?n.value:e[0].value},N=t=>{if(e.agentFormModel.repositoryId&&(t.selected||e.agentSettingsForm.$setValidity("missingConnector",!0),t.expanded)){e.extractionMethodLoaderFlags[t.method]=!0;const n=b();u.getConnectorPrefixByName("ChatGPT Retrieval",n.repositoryId,n.repositoryLocation).then(e=>u.getConnectorsByTypeAsSelectMenuOptions(e,n.repositoryId,n.repositoryLocation)).then(n=>{e.retrievalConnectors=n,e.agentSettingsForm.$setValidity("missingConnector",!t.selected||!(!n||!n.length)),D(e.retrievalConnectors,t)}).catch(t=>{e.agentSettingsForm.$setValidity("missingConnector",!1),L(t,"ttyg.agent.messages.error_retrieval_connectors_loading")}).finally(()=>{e.extractionMethodLoaderFlags[t.method]=!1})}},D=(e,t)=>{if(0===e.length)return void(t.retrievalConnectorInstance=null);const n=e.find(e=>e.value===t.retrievalConnectorInstance);t.retrievalConnectorInstance=n?n.value:e[0].value},w={[r.ExtractionMethod.FTS_SEARCH]:t=>{e.checkIfFTSEnabled()},[r.ExtractionMethod.SPARQL]:e=>{},[r.ExtractionMethod.SIMILARITY]:e=>$(e),[r.ExtractionMethod.RETRIEVAL]:e=>N(e)},k={[r.AdditionalExtractionMethod.AUTOCOMPLETE_IRI_DISCOVERY_SEARCH]:e=>P(e),[r.AdditionalExtractionMethod.IRI_DISCOVERY_SEARCH]:()=>{}},P=t=>{t.selected||e.agentSettingsForm.$setValidity("autocompleteDisabled",!0),e.checkAutocompleteIndexEnabled(t)},U=(t=!1,n=!1)=>{e.checkIfFTSEnabled(),e.updateSimilaritySearchPanel(t),e.updateRetrievalConnectorPanel(n),e.checkAutocompleteIndexEnabled()},B=()=>{document.hidden||U()},V=(e,t)=>{const n=document.getElementById(e);n&&(n.value=t)};document.addEventListener("visibilitychange",B),e.$on("$destroy",()=>{document.removeEventListener("visibilitychange",B)}),b().repositoryId||(e.agentFormModel.repositoryId=null),setTimeout(O,0),t.rendered.then(()=>{V("temperatureSlider",e.agentFormModel.temperature.value),V("topPSlider",e.agentFormModel.topP.value)})}angular.module("graphdb.framework.ttyg.controllers.agent-settings-modal",["graphdb.framework.core.services.similarity","graphdb.framework.core.services.connectors","graphdb.framework.rest.repositories.service","graphdb.framework.ttyg.controllers.agent-instructions-explain-modal","graphdb.framework.ttyg.services.externalIntegrationModal","ngTagsInput"]).constant("ExtractionMethodTemplates",{iri_discovery_search:"iri-discovery-search",autocomplete_iri_discovery_search:"autocomplete-iri-discovery-search"}).controller("AgentSettingsModalController",d),d.$inject=["$scope","$uibModalInstance","ModalService","$uibModal","SimilarityService","ConnectorsService","RepositoriesRestService","$sce","toastr","UriUtils","$translate","dialogModel","TTYGContextService","TTYGService","ExtractionMethodTemplates","AutocompleteService","AutocompleteRestService","ExternalIntegrationModalService","productInfo"]}};
2
- //# sourceMappingURL=95953.4ea6a7c68a22779ba299.bundle.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"95953.4ea6a7c68a22779ba299.bundle.js","mappings":"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","sources":["webpack://root-config/./packages/legacy-workbench/src/js/angular/models/similarity/similarity-index-status.js","webpack://root-config/./packages/legacy-workbench/src/js/angular/models/similarity/similarity-index.js","webpack://root-config/./packages/legacy-workbench/src/js/angular/ttyg/controllers/agent-instructions-explain-modal.controller.js","webpack://root-config/./packages/legacy-workbench/src/js/angular/models/connectors/connectors.js","webpack://root-config/./packages/legacy-workbench/src/js/angular/rest/mappers/similarity-index-mapper.js","webpack://root-config/./packages/legacy-workbench/src/js/angular/models/similarity/similarity-index-type.js","webpack://root-config/./packages/legacy-workbench/src/js/angular/core/services/similarity.service.js","webpack://root-config/./packages/legacy-workbench/src/js/angular/rest/mappers/connectors-mapper.js","webpack://root-config/./packages/legacy-workbench/src/js/angular/rest/connectors.rest.service.js","webpack://root-config/./packages/legacy-workbench/src/js/angular/ttyg/controllers/external-integration-configuration-modal.controller.js","webpack://root-config/./packages/legacy-workbench/src/js/angular/core/services/connectors.service.js","webpack://root-config/./packages/legacy-workbench/src/js/angular/rest/similarity.rest.service.js","webpack://root-config/./packages/legacy-workbench/src/js/angular/ttyg/services/externalIntegrationModal.service.js","webpack://root-config/./packages/legacy-workbench/src/js/angular/ttyg/controllers/agent-settings-modal.controller.js"],"sourcesContent":["export const SimilarityIndexStatus = {\n 'CREATING': 'CREATING',\n 'BUILDING': 'BUILDING',\n 'BUILT': 'BUILT',\n 'REBUILDING': 'REBUILDING',\n 'OUTDATED': 'OUTDATED',\n 'INTERRUPTED': 'INTERRUPTED',\n 'OBSOLETE': 'OBSOLETE',\n 'FAILED': 'FAILED',\n\n 'isCreatingStatus': (status) => {\n return SimilarityIndexStatus.CREATING === status;\n },\n\n 'isBuildingStatus': (status) => {\n return SimilarityIndexStatus.BUILDING === status;\n },\n\n 'isBuiltStatus': (status) => {\n return SimilarityIndexStatus.BUILT === status;\n },\n\n 'isRebuildingStatus': (status) => {\n return SimilarityIndexStatus.REBUILDING === status;\n },\n\n 'isOutdatedStatus': (status) => {\n return SimilarityIndexStatus.OUTDATED === status;\n },\n\n 'isInterruptedStatus': (status) => {\n return SimilarityIndexStatus.INTERRUPTED === status;\n },\n\n 'isObsoleteStatus': (status) => {\n return SimilarityIndexStatus.OBSOLETE === status;\n },\n\n 'isFailedStatus': (status) => {\n return SimilarityIndexStatus.FAILED === status;\n }\n};\n","import {SimilarityIndexType} from \"./similarity-index-type\";\nimport {SimilarityIndexStatus} from \"./similarity-index-status\";\n\nexport class SimilarityIndex {\n constructor() {\n this.analyzer = '';\n this.infer = true;\n this.options = '';\n this.sameAs = true;\n this.searchQuery = '';\n this.selectQuery = '';\n this.stopList = undefined;\n this.name = '';\n\n /**\n * The similarity index type.\n *\n * @type {string}\n */\n this.type = SimilarityIndexType.TEXT;\n\n /**\n * The similarity index type.\n *\n * @type {SimilarityIndexStatus}\n */\n this.status = undefined;\n\n this.analogicalQuery = undefined;\n this.inputIndex = undefined;\n this.isLiteralIndex = '';\n }\n\n isTextType() {\n return SimilarityIndexType.isTextType(this.type);\n }\n\n isTextLiteralType() {\n return SimilarityIndexType.isTextLiteralType(this.type);\n }\n\n isPredicationType() {\n return SimilarityIndexType.isPredicationType(this.type);\n }\n\n isCreatingStatus() {\n return SimilarityIndexStatus.isCreatingStatus(this.status);\n }\n\n isBuildingStatus() {\n return SimilarityIndexStatus.isBuildingStatus(this.status);\n }\n\n isBuiltStatus() {\n return SimilarityIndexStatus.isBuiltStatus(this.status);\n }\n\n isRebuildingStatus() {\n return SimilarityIndexStatus.isRebuildingStatus(this.status);\n }\n\n isOutdatedStatus() {\n return SimilarityIndexStatus.isOutdatedStatus(this.status);\n }\n\n isInterruptedStatus() {\n return SimilarityIndexStatus.isInterruptedStatus(this.status);\n }\n\n isObsoleteStatus() {\n return SimilarityIndexStatus.isObsoleteStatus(this.status);\n }\n\n isFailedStatus() {\n return SimilarityIndexStatus.isFailedStatus(this.status);\n }\n}\n","import 'angular/core/services/similarity.service';\nimport 'angular/core/services/connectors.service';\nimport 'angular/core/services/ttyg.service';\nimport 'angular/rest/repositories.rest.service';\n\nangular\n .module('graphdb.framework.ttyg.controllers.agent-instructions-explain-modal', [])\n .controller('AgentInstructionsExplainModalController', AgentInstructionsExplainModalController);\n\nAgentInstructionsExplainModalController.$inject = [\n '$scope',\n '$uibModalInstance',\n 'ModalService',\n '$translate',\n 'dialogModel'\n];\n\nfunction AgentInstructionsExplainModalController($scope, $uibModalInstance, ModalService, $translate, dialogModel) {\n // =========================\n // Public variables\n // =========================\n\n $scope.agentInstructionsExplain = dialogModel.agentInstructionsExplain;\n\n // =========================\n // Public functions\n // =========================\n\n /**\n * Closes the modal when the user clicks the close button.\n */\n $scope.close = () => {\n $uibModalInstance.dismiss({});\n };\n\n $scope.onCloseAgentInstructionsExplainModal = () => {\n $uibModalInstance.dismiss({});\n };\n\n // =========================\n // Private functions\n // =========================\n\n // =========================\n // Subscriptions\n // =========================\n\n const subscriptions = [];\n\n const onDestroy = () => {\n subscriptions.forEach((subscription) => subscription());\n };\n $scope.$on('$destroy', onDestroy);\n\n // =========================\n // Initialization\n // =========================\n}\n","export class ConnectorTypesListModel {\n constructor(data = {}) {\n /**\n * @type {ConnectorTypeModel[]}\n * @private\n */\n this._connectors = data.connectors || [];\n }\n\n getConnectorByName(name) {\n return this._connectors.find((connector) => connector.name === name);\n }\n\n get connectors() {\n return this._connectors;\n }\n\n set connectors(value) {\n this._connectors = value;\n }\n}\n\nexport class ConnectorTypeModel {\n constructor(data) {\n /**\n * @type {string}\n * @private\n */\n this._name = data.name;\n /**\n * @type {string}\n * @private\n */\n this._prefix = data.prefix;\n }\n\n get name() {\n return this._name;\n }\n\n set name(value) {\n this._name = value;\n }\n\n get prefix() {\n return this._prefix;\n }\n\n set prefix(value) {\n this._prefix = value;\n }\n}\n\nexport class ConnectorListModel {\n constructor(data = []) {\n this._connectors = data.connectors;\n }\n\n get connectors() {\n return this._connectors;\n }\n\n set connectors(value) {\n this._connectors = value;\n }\n}\n\nexport class ConnectorModel {\n constructor(data) {\n this._name = data.name;\n this._settings = new ConnectorSettingsModel(data);\n }\n\n get settings() {\n return this._settings;\n }\n\n set settings(value) {\n this._settings = value;\n }\n get name() {\n return this._name;\n }\n\n set name(value) {\n this._name = value;\n }\n}\n\nexport class ConnectorSettingsModel {\n constructor(data) {\n this._settings = data.values || {};\n }\n\n get settings() {\n return this._settings;\n }\n\n set settings(value) {\n this._settings = value;\n }\n}\n","import {SimilarityIndex} from \"../../models/similarity/similarity-index\";\n\n/**\n * Maps the response data to SimilarityIndex objects.\n * @param {*} responseData\n * @return {SimilarityIndex[]}\n */\nexport const mapIndexesResponseToSimilarityIndex = (responseData) => {\n return responseData.map((index) => {\n const similarityIndex = new SimilarityIndex();\n similarityIndex.type = index.type;\n similarityIndex.stopList = index.stopList;\n similarityIndex.status = index.status;\n similarityIndex.selectQuery = index.selectQuery;\n similarityIndex.searchQuery = index.searchQuery;\n similarityIndex.sameAs = index.sameAs;\n similarityIndex.options = index.options;\n similarityIndex.name = index.name;\n similarityIndex.infer = index.infer;\n similarityIndex.analyzer = index.analyzer;\n similarityIndex.analogicalQuery = index.analogicalQuery;\n return similarityIndex;\n });\n};\n","export const SimilarityIndexType = {\n 'TEXT': 'text',\n 'TEXT_LITERAL': 'textLiteral',\n 'PREDICATION': 'predication',\n\n 'isTextType': (type) => {\n return SimilarityIndexType.TEXT === type;\n },\n\n 'isTextLiteralType': (type) => {\n return SimilarityIndexType.TEXT_LITERAL === type;\n },\n\n 'isPredicationType': (type) => {\n return SimilarityIndexType.PREDICATION === type;\n }\n};\n","import 'angular/rest/similarity.rest.service';\nimport {mapIndexesResponseToSimilarityIndex} from \"../../rest/mappers/similarity-index-mapper\";\nimport {SelectMenuOptionsModel} from \"../../models/form-fields\";\n\nconst modules = ['graphdb.framework.rest.similarity.service'];\n\nangular\n .module('graphdb.framework.core.services.similarity', modules)\n .factory('SimilarityService', SimilarityService);\n\nSimilarityService.$inject = ['SimilarityRestService'];\n\nfunction SimilarityService(SimilarityRestService) {\n\n /**\n * Returns the similarity indexes for the repository with id <code>repositoryId</code> and location <code>repositoryLocation</code>.\n * If the repository ID and repository location are not provided, the currently selected repository will be used.\n *\n * @param {string | undefined} repositoryId - The repository id.\n * @param {string | undefined} repositoryLocation - The repository location.\n * @return {Promise<SimilarityIndex[]>}\n */\n const getIndexes = (repositoryId, repositoryLocation) => {\n return SimilarityRestService.getIndexes(repositoryId, repositoryLocation)\n .then((response) => mapIndexesResponseToSimilarityIndex(response.data));\n };\n\n /**\n * Returns the similarity indexes for the repository with id <code>repositoryId</code> and location <code>repositoryLocation</code> as a menu model.\n * If the repository ID and repository location are not provided, the currently selected repository will be used.\n *\n * @param {string | undefined} repositoryId - The repository id.\n * @param {string | undefined} repositoryLocation - The repository location.\n * @return {Promise<SelectMenuOptionsModel[]>}\n */\n const getIndexesAsMenuModel = (repositoryId, repositoryLocation) => {\n return getIndexes(repositoryId, repositoryLocation)\n .then((indexesModel) => {\n return indexesModel.map((index) => {\n return new SelectMenuOptionsModel({label: index.name, value: index.name});\n });\n });\n };\n\n return {\n getIndexes,\n getIndexesAsMenuModel\n };\n}\n","import {\n ConnectorListModel,\n ConnectorModel,\n ConnectorTypeModel,\n ConnectorTypesListModel\n} from \"../../models/connectors/connectors\";\n\n/**\n * Maps the connectors response data to a ConnectorTypesListModel. These are all available connector types.\n * @param {{}} data\n * @return {ConnectorTypesListModel}\n */\nexport const connectorTypesListMapper = (data) => {\n const connectorListModel = new ConnectorTypesListModel();\n if (!data) {\n return connectorListModel;\n }\n connectorListModel.connectors = Object.keys(data).map((key) => {\n return new ConnectorTypeModel({\n name: key,\n prefix: data[key]\n });\n });\n return connectorListModel;\n};\n\n/**\n * Maps the connectors response data to a ConnectorListModel. These are the connector instances of one specific type.\n * @param {*[]} data\n * @return {ConnectorListModel}\n */\nexport const connectorsMapper = (data) => {\n const connectors = new ConnectorListModel();\n if (!data) {\n return connectors;\n }\n connectors.connectors = data.map((connectorResponse) => {\n return new ConnectorModel(connectorResponse);\n });\n return connectors;\n};\n","angular\n .module('graphdb.framework.rest.connectors.service', [])\n .factory('ConnectorsRestService', ConnectorsRestService);\n\nConnectorsRestService.$inject = ['$http'];\n\nconst CONNECTORS_ENDPOINT = 'rest/connectors';\n\nfunction ConnectorsRestService($http) {\n\n return {\n getConnectors,\n initConnector,\n hasConnector,\n checkConnector\n };\n\n /**\n * Fetches all connectors for the repository with id <code>repositoryId</code> and location <code>repositoryLocation</code>.\n * If the repository ID and repository location are not provided, the values persisted in local storage will be used {@see authentication.interceptor.js}.\n *\n * @param {string | undefined} repositoryId - The repository id.\n * @param {string | undefined} repositoryLocation - The repository location.\n * @return {*} The similarity indexes for the specified repository.\n */\n function getConnectors(repositoryId, repositoryLocation) {\n if (repositoryId) {\n return $http.get(CONNECTORS_ENDPOINT, {\n headers: {\n 'X-GraphDB-Repository': repositoryId,\n 'X-GraphDB-Repository-Location': repositoryLocation\n }\n });\n }\n return $http.get(CONNECTORS_ENDPOINT);\n }\n\n function initConnector(prefix) {\n return $http.get(`${CONNECTORS_ENDPOINT}/options?prefix=${prefix}`);\n }\n\n /**\n * Fetches all connectors of a specific type defined by the prefix for the repository with id <code>repositoryId</code>\n * and location <code>repositoryLocation</code>. If the repository ID and repository location are not provided, the currently selected repository will be used.\n * @param {string} prefix\n * @param {string | undefined} repositoryId - The repository id.\n * @param {string | undefined} repositoryLocation - The repository location.\n * @return {Promise<ConnectorListModel>}\n */\n function hasConnector(prefix, repositoryId, repositoryLocation) {\n if (repositoryId) {\n return $http.get(`${CONNECTORS_ENDPOINT}/existing?prefix=${prefix}`, {\n headers: {\n 'X-GraphDB-Repository': repositoryId,\n 'X-GraphDB-Repository-Location': repositoryLocation\n }\n });\n }\n return $http.get(`${CONNECTORS_ENDPOINT}/existing?prefix=${prefix}`);\n }\n\n function checkConnector(data) {\n return $http.post(`${CONNECTORS_ENDPOINT}/check`, data, {\n headers: {\n 'Content-Type': 'text/plain'\n }\n });\n }\n}\n","angular\n .module('graphdb.framework.ttyg.controllers.external-integration-configuration-modal', [])\n .controller('ExternalIntegrationConfigurationModalController', ExternalIntegrationConfigurationModalController);\n\nExternalIntegrationConfigurationModalController.$inject = [\n '$scope',\n '$uibModalInstance',\n 'ModalService',\n '$translate',\n 'dialogModel'\n];\n\nfunction ExternalIntegrationConfigurationModalController($scope, $uibModalInstance, ModalService, $translate, dialogModel) {\n // =========================\n // Public variables\n // =========================\n\n $scope.externalIntegrationConfiguration = dialogModel.externalIntegrationConfiguration;\n $scope.difyExtension = dialogModel.difyExtensionUrl;\n $scope.queryMethods = dialogModel.queryMethodsUrl;\n $scope.agentId = dialogModel.agentId;\n $scope.agentName = dialogModel.agentName;\n\n // =========================\n // Public functions\n // =========================\n\n /**\n * Closes the modal when the user clicks the close button.\n */\n $scope.close = () => {\n $uibModalInstance.dismiss({});\n };\n\n $scope.onCloseExternalIntegrationConfigurationModal = () => {\n $uibModalInstance.dismiss({});\n };\n}\n","import 'angular/rest/connectors.rest.service';\nimport {connectorsMapper, connectorTypesListMapper} from \"../../rest/mappers/connectors-mapper\";\nimport {SelectMenuOptionsModel} from \"../../models/form-fields\";\n\nconst modules = ['graphdb.framework.rest.connectors.service'];\n\nangular\n .module('graphdb.framework.core.services.connectors', modules)\n .factory('ConnectorsService', ConnectorsService);\n\nConnectorsService.$inject = ['ConnectorsRestService'];\n\nfunction ConnectorsService(ConnectorsRestService) {\n\n /**\n * Fetches all connector types from the server for the repository with id <code>repositoryId</code> and location <code>repositoryLocation</code>.\n * If the repository ID and repository location are not provided, the currently selected repository will be used.\n *\n * @param {string | undefined} repositoryId - The repository id.\n * @param {string | undefined} repositoryLocation - The repository location.\n * @return {Promise<ConnectorTypesListModel>}\n */\n const getConnectorTypes = (repositoryId, repositoryLocation) => {\n return ConnectorsRestService.getConnectors(repositoryId, repositoryLocation)\n .then((response) => connectorTypesListMapper(response.data));\n };\n\n /**\n * Fetches the connector prefix by its name for the repository with id <code>repositoryId</code> and location <code>repositoryLocation</code>.\n * If the repository ID and repository location are not provided, the currently selected repository will be used.\n *\n * @param {string} name\n * @param {string | undefined} repositoryId - The repository id.\n * @param {string | undefined} repositoryLocation - The repository location.\n * @return {Promise<string|null>}\n */\n const getConnectorPrefixByName = (name, repositoryId, repositoryLocation) => {\n return getConnectorTypes(repositoryId, repositoryLocation)\n .then((connectorTypesModel) => {\n const connector = connectorTypesModel.getConnectorByName(name);\n return connector ? connector.prefix : null;\n });\n };\n\n /**\n * Fetches all connectors of a specific type defined by the prefix for the repository with id <code>repositoryId</code>\n * and location <code>repositoryLocation</code>. If the repository ID and repository location are not provided, the currently selected repository will be used.\n * @param {string} prefix\n * @param {string | undefined} repositoryId - The repository id.\n * @param {string | undefined} repositoryLocation - The repository location.\n * @return {Promise<ConnectorListModel>}\n */\n const getConnectorsByType = (prefix, repositoryId, repositoryLocation) => {\n return ConnectorsRestService.hasConnector(encodeURIComponent(prefix), repositoryId, repositoryLocation)\n .then((response) => {\n return connectorsMapper(response.data);\n });\n };\n\n /**\n * Fetches all connectors of a specific type defined by the prefix and returns them as SelectMenuOptionsModel\n * for the repository with id <code>repositoryId</code> and location <code>repositoryLocation</code>.\n * If the repository ID and repository location are not provided, the currently selected repository will be used.\n * @param {string} prefix\n * @param {string | undefined} repositoryId - The repository id.\n * @param {string | undefined} repositoryLocation - The repository location.\n * @return {Promise<SelectMenuOptionsModel[]>}\n */\n const getConnectorsByTypeAsSelectMenuOptions = (prefix, repositoryId, repositoryLocation) => {\n return getConnectorsByType(prefix, repositoryId, repositoryLocation)\n .then((connectorsModel) => connectorsModel.connectors.map((connector) => {\n return new SelectMenuOptionsModel({\n value: connector.name,\n label: connector.name\n });\n }));\n };\n\n return {\n getConnectorTypes,\n getConnectorsByType,\n getConnectorPrefixByName,\n getConnectorsByTypeAsSelectMenuOptions\n };\n}\n","angular\n .module('graphdb.framework.rest.similarity.service', [])\n .factory('SimilarityRestService', SimilarityRestService);\n\nSimilarityRestService.$inject = ['$http', '$repositories'];\n\nconst SIMILARITY_ENDPOINT = 'rest/similarity';\n\nfunction SimilarityRestService($http) {\n\n return {\n getIndexes,\n getSearchQueries,\n rebuildIndex,\n deleteIndex,\n createIndex,\n getSamples,\n getQuery,\n saveSearchQuery\n };\n\n /**\n * Fetches the similarity indexes for the repository with id <code>repositoryId</code> and location <code>repositoryLocation</code>.\n * If the repository ID and repository location are not provided, the currently selected repository will be used.\n *\n * @param {string | undefined} repositoryId - The repository id.\n * @param {string | undefined} repositoryLocation - The repository location.\n * @return {*} The similarity indexes for the specified repository.\n */\n function getIndexes(repositoryId, repositoryLocation) {\n if (repositoryId) {\n return $http.get(SIMILARITY_ENDPOINT, {\n headers: {\n 'X-GraphDB-Repository': repositoryId,\n 'X-GraphDB-Repository-Location': repositoryLocation\n }\n });\n }\n return $http.get(SIMILARITY_ENDPOINT);\n }\n\n function getSamples() {\n return $http.get(`${SIMILARITY_ENDPOINT}/samples`);\n }\n\n function getSearchQueries() {\n return $http.get(`${SIMILARITY_ENDPOINT}/config`);\n }\n\n function createIndex(method, name, options, selectQuery, searchQuery, analogicalQuery, stopList, infer, sameAs, type, analyzer) {\n return $http({\n method,\n url: `${SIMILARITY_ENDPOINT}`,\n noCancelOnRouteChange: true,\n data: {\n name,\n options,\n selectQuery,\n stopList,\n infer,\n sameAs,\n type,\n analyzer,\n searchQuery,\n analogicalQuery\n }\n }\n );\n }\n\n function rebuildIndex(index) {\n return createIndex('PUT', index.name, index.options, index.selectQuery, index.searchQuery, index.analogicalQuery, index.stopList, index.infer, index.sameAs, index.type);\n }\n\n function deleteIndex(index) {\n return $http.delete(`${SIMILARITY_ENDPOINT}?name=${index.name}`);\n }\n\n function getQuery(data) {\n return $http.get('rest/similarity/query',\n {\n params: {\n name: data.indexName,\n options: data.indexOptions,\n stopList: data.indexStopList,\n selectQuery: data.query,\n infer: data.queryInference,\n sameAs: data.querySameAs,\n type: data.viewType,\n analyzer: data.indexAnalyzer\n }\n });\n }\n\n function saveSearchQuery(data) {\n return $http({\n method: 'put',\n url: 'rest/similarity/search-query',\n data\n });\n }\n}\n","import 'angular/ttyg/controllers/external-integration-configuration-modal.controller';\nimport {TTYG_ERROR_MSG_LENGTH} from \"./constants\";\n\nangular\n .module('graphdb.framework.ttyg.services.externalIntegrationModal',\n ['graphdb.framework.ttyg.controllers.external-integration-configuration-modal'])\n .factory('ExternalIntegrationModalService', ExternalIntegrationModalService)\n\nExternalIntegrationModalService.$inject = ['$uibModal', 'LocationsRestService', 'toastr'];\n\nfunction ExternalIntegrationModalService($uibModal, LocationsRestService, toastr) {\n function buildDialogModel(agent, baseUrl) {\n return {\n agentName: agent.name,\n agentId: agent.id,\n queryMethodsUrl: `${baseUrl}/rest/llm/tool/ttyg/${agent.id}`,\n difyExtensionUrl: `${baseUrl}/rest/llm/ttyg/${agent.id}/dify`\n };\n }\n\n function open(agent) {\n return LocationsRestService.getExternalUrl()\n .then((response) => {\n const dialogModel = buildDialogModel(agent, response.data);\n\n return $uibModal.open({\n templateUrl: 'js/angular/ttyg/templates/modal/external-integration-configuration-modal.html',\n controller: 'ExternalIntegrationConfigurationModalController',\n windowClass: 'external-integration-configuration-modal',\n backdrop: 'static',\n resolve: {\n dialogModel: () => dialogModel\n }\n }).result\n .then(() => {\n // Modal was closed with success - do nothing\n })\n .catch(() => {\n // Modal was dismissed — do nothing\n });\n })\n .catch((error) => {\n // Catches API failure\n toastr.error(getError(error, 0, TTYG_ERROR_MSG_LENGTH));\n });\n }\n\n return {open};\n}\n","import {decodeHTML} from \"../../../../app\";\nimport {AdditionalExtractionMethod, ExtractionMethod} from \"../../models/ttyg/agents\";\nimport 'angular/core/services/similarity.service';\nimport 'angular/core/services/connectors.service';\nimport 'angular/core/services/ttyg.service';\nimport 'angular/rest/repositories.rest.service';\nimport 'angular/ttyg/controllers/agent-instructions-explain-modal.controller';\nimport 'angular/ttyg/services/externalIntegrationModal.service';\nimport {REPOSITORY_PARAMS} from \"../../models/repository/repository\";\nimport {TTYGEventName} from \"../services/ttyg-context.service\";\nimport {AGENT_OPERATION, TTYG_ERROR_MSG_LENGTH} from \"../services/constants\";\nimport {mapUriAsNtripleAutocompleteResponse} from \"../../rest/mappers/autocomplete-mapper\";\nimport {DocumentationUrlResolver} from \"../../utils/documentation-url-resolver\";\n\nangular\n .module('graphdb.framework.ttyg.controllers.agent-settings-modal', [\n 'graphdb.framework.core.services.similarity',\n 'graphdb.framework.core.services.connectors',\n 'graphdb.framework.rest.repositories.service',\n 'graphdb.framework.ttyg.controllers.agent-instructions-explain-modal',\n 'graphdb.framework.ttyg.services.externalIntegrationModal',\n 'ngTagsInput'\n ])\n .constant('ExtractionMethodTemplates', {\n 'iri_discovery_search': 'iri-discovery-search',\n 'autocomplete_iri_discovery_search': 'autocomplete-iri-discovery-search'\n })\n .controller('AgentSettingsModalController', AgentSettingsModalController);\n\nAgentSettingsModalController.$inject = [\n '$scope',\n '$uibModalInstance',\n 'ModalService',\n '$uibModal',\n 'SimilarityService',\n 'ConnectorsService',\n 'RepositoriesRestService',\n '$sce',\n 'toastr',\n 'UriUtils',\n '$translate',\n 'dialogModel',\n 'TTYGContextService',\n 'TTYGService',\n 'ExtractionMethodTemplates',\n 'AutocompleteService',\n 'AutocompleteRestService',\n 'ExternalIntegrationModalService',\n 'productInfo'];\n\nfunction AgentSettingsModalController(\n $scope,\n $uibModalInstance,\n ModalService,\n $uibModal,\n SimilarityService,\n ConnectorsService,\n RepositoriesRestService,\n $sce,\n toastr,\n UriUtils,\n $translate,\n dialogModel,\n TTYGContextService,\n TTYGService,\n ExtractionMethodTemplates,\n AutocompleteService,\n AutocompleteRestService,\n ExternalIntegrationModalService,\n productInfo) {\n\n // =========================\n // Private variables\n // =========================\n\n const CHAT_GPT_RETRIEVAL_CONNECTOR_NAME = 'ChatGPT Retrieval';\n\n // =========================\n // Public variables\n // =========================\n\n $scope.AGENT_OPERATION = AGENT_OPERATION;\n\n /**\n * The operation type for the modal. This can be one of <code>AGENT_OPERATION</code> constants.\n */\n $scope.operation = dialogModel.operation;\n\n /**\n * Flag to control the visibility of the loader when creating an agent.\n * @type {boolean}\n */\n $scope.savingAgent = false;\n\n /**\n * The model used in the form.\n * @type {AgentFormModel|*}\n */\n $scope.agentFormModel = dialogModel.agentFormModel;\n\n /**\n * The active repository info model.\n * @type {RepositoryInfoModel|*}\n */\n $scope.activeRepositoryInfo = dialogModel.activeRepositoryInfo;\n\n /**\n * Flags used to show/hide the loader for the extraction methods when the user opens a panel and some data needs to\n * be loaded.\n * @type {{[string]: boolean}} - the key is the extraction method types in <code>ExtractionMethod</code>\n */\n $scope.extractionMethodLoaderFlags = {\n [ExtractionMethod.SIMILARITY]: false\n };\n\n /**\n * The repository select menu options model.\n * @type {SelectMenuOptionsModel[]}\n */\n $scope.activeRepositoryList = dialogModel.activeRepositoryList;\n\n /**\n * The extraction method types constants.\n * @type {{SPARQL: string, FTS_SEARCH: string, SIMILARITY: string, RETRIEVAL: string}}\n */\n $scope.extractionMethods = ExtractionMethod;\n\n /**\n * The additional extraction method types constants.\n * @type {{IRI_DISCOVERY_SEARCH: string, AUTOCOMPLETE_IRI_DISCOVERY_SEARCH: string}}\n */\n $scope.additionalExtractionMethods = AdditionalExtractionMethod;\n\n /**\n * The names of the template files, containing the Extraction Method Templates.\n * @type {Object<string, string>}\n */\n $scope.ExtractionMethodTemplates = ExtractionMethodTemplates;\n\n /**\n * Flag used to show/hide the advanced settings in the modal.\n * @type {boolean}\n */\n $scope.showAdvancedSettings = false;\n\n /**\n * Flag used to show/hide the high temperature warning in the modal.\n * @type {boolean}\n */\n $scope.showHighTemperatureWarning = false;\n\n /**\n * Flag used to control the visibility of the system instruction warning.\n * @type {boolean}\n */\n $scope.showSystemInstructionWarning = false;\n\n /**\n * The similarity indexes to be used for the similarity extraction method as select menu options.\n * @type {SelectMenuOptionsModel[]}\n */\n $scope.similarityIndexes = [];\n\n /**\n * The retrieval connectors to be used for the retrieval extraction method as select menu options.\n * @type {SelectMenuOptionsModel[]}\n */\n $scope.retrievalConnectors = [];\n\n /**\n * Flag used to show/hide the FTS enabled state in the modal.\n * @type {boolean}\n */\n $scope.ftsEnabled = false;\n\n /**\n * The autocomplete suggestions source for the 'Autocomplete IRI discovery' extraction method.\n * @type {*[]}\n */\n $scope.autocompleteSuggestions = [];\n\n /**\n * Flag to determine if the context size field should be visible in the form.\n * @type {boolean}\n */\n $scope.showContextSize = ($scope.agentFormModel.contextSize !== null);\n\n // =========================\n // Public functions\n // =========================\n\n /**\n * Sets the UI touched state and validation state for the extraction methods property so that the UI can show if\n * the user has selected at least one extraction method and warn him if he hasn't.\n *\n * @param {ExtractionMethodFormModel} extractionMethod\n */\n $scope.toggleExtractionMethod = (extractionMethod) => {\n extractionMethod.expanded = extractionMethod.selected;\n $scope.agentSettingsForm.extractionMethods.$setTouched();\n setExtractionMethodValidityStatus();\n extractionPanelToggleHandlers[extractionMethod.method](extractionMethod);\n };\n\n /**\n * Handles the panel toggle event for the extraction method. This is used to do some initialization when the user\n * opens the panel for a specific extraction method.\n * @param {ExtractionMethodFormModel} extractionMethod\n */\n $scope.onExtractionMethodPanelToggle = (extractionMethod) => {\n extractionMethod.toggleCollapse();\n extractionPanelToggleHandlers[extractionMethod.method](extractionMethod);\n };\n\n /**\n * Sets the UI touched state and validation state for the additional extraction methods property so that the UI can show if\n * the user has selected at least one extraction method.\n *\n * @param {AdditionalExtractionMethodFormModel} extractionMethod\n */\n $scope.toggleAdditionalExtractionMethod = (extractionMethod) => {\n extractionMethod.expanded = extractionMethod.selected;\n $scope.checkAutocompleteIndexEnabled();\n additionalExtractionPanelToggleHandlers[extractionMethod.method](extractionMethod);\n };\n\n /**\n * Handles the panel toggle event for the additional extraction method. This is used to do some initialization when the user\n * opens the panel for a specific extraction method.\n * @param {AdditionalExtractionMethodFormModel} extractionMethod\n */\n $scope.onAdditionalExtractionMethodPanelToggle = (extractionMethod) => {\n extractionMethod.toggleCollapse();\n additionalExtractionPanelToggleHandlers[extractionMethod.method](extractionMethod);\n };\n\n $scope.helpInfoForModel = {\n ttygHelpInfo: getModelHelpMessage(),\n linkText: $translate.instant('ttyg.agent.create_agent_modal.form.model.link_text'),\n documentationUrl: DocumentationUrlResolver.getDocumentationUrl(productInfo.productShortVersion, 'talk-to-graph.html#prerequisites-and-configuration')\n }\n\n /**\n * Resolves the hint for the FTS search missing message. This is needed because the hint contains a html link that\n * should be properly rendered.\n * @return {*}\n */\n $scope.getFTSDisabledHelpMessage = () => {\n // The hint contains a html link which should be properly rendered.\n const message = decodeHTML(\n $translate.instant(\n 'ttyg.agent.create_agent_modal.form.fts_search.fts_disabled_message',\n {repositoryEditPage: 'repository/edit/' + $scope.agentFormModel.repositoryId}\n )\n );\n return $sce.trustAsHtml(message);\n };\n\n /**\n * Opens the 'Autocomplete index' view in a new tab.\n */\n $scope.goToAutocompleteView = (event) => {\n event.preventDefault();\n TTYGContextService.emit(TTYGEventName.GO_TO_AUTOCOMPLETE_INDEX_VIEW, {repositoryId: $scope.agentFormModel.repositoryId});\n }\n\n /**\n * Opens the 'Create Similarity' view in a new tab.\n */\n $scope.goToCreateSimilarityView = (event) => {\n event.preventDefault();\n TTYGContextService.emit(TTYGEventName.GO_TO_CREATE_SIMILARITY_VIEW, {repositoryId: $scope.agentFormModel.repositoryId});\n };\n\n /**\n * Opens the 'Connectors' view in a new tab.\n */\n $scope.goToConnectorsView = (event) => {\n event.preventDefault();\n TTYGContextService.emit(TTYGEventName.GO_TO_CONNECTORS_VIEW, {repositoryId: $scope.agentFormModel.repositoryId});\n };\n\n /**\n * Handles the selected agent operation which can be one of <code>AGENT_OPERATION</code> types. Respective handler\n * is called based on the operation type with the agent payload build based on the form model.\n * @return {Promise<void>}\n */\n $scope.ok = () => {\n const agentPayload = $scope.agentFormModel.toPayload();\n return agentOperationHandlers[$scope.operation](agentPayload);\n };\n\n /**\n * Closes the modal when the user cancels the agent creation.\n */\n $scope.cancel = () => {\n $uibModalInstance.dismiss({});\n };\n\n /**\n * Closes the modal when the user clicks the close button.\n */\n $scope.close = () => {\n $uibModalInstance.dismiss({});\n };\n\n /**\n * Updates the similarity search panel.\n *\n * @param {boolean} clearIndexSelection - If true, the selected index will be cleared.\n */\n $scope.updateSimilaritySearchPanel = (clearIndexSelection = false) => {\n const similaritySearchExtractionMethod = $scope.agentFormModel.assistantExtractionMethods.getSimilarityExtractionMethod();\n if (!similaritySearchExtractionMethod.selected) {\n return;\n }\n if (clearIndexSelection) {\n similaritySearchExtractionMethod.similarityIndex = null;\n }\n handleSimilaritySearchExtractionMethodPanelToggle(similaritySearchExtractionMethod);\n };\n\n /**\n * Updates the ChatGPT retrieval connector panel.\n *\n * @param {boolean} clearSelection - If true, the selected connector will be cleared.\n */\n $scope.updateRetrievalConnectorPanel = (clearSelection = false) => {\n const retrievalExtractionExtractionMethod = $scope.agentFormModel.assistantExtractionMethods.getRetrievalExtractionMethod();\n if (!retrievalExtractionExtractionMethod.selected) {\n return;\n }\n if (clearSelection) {\n retrievalExtractionExtractionMethod.retrievalConnectorInstance = null;\n }\n handleRetrievalConnectorExtractionMethodPanelToggle(retrievalExtractionExtractionMethod);\n };\n\n $scope.checkIfFTSEnabled = () => {\n if (!$scope.agentFormModel.repositoryId) {\n $scope.agentSettingsForm.$setValidity('FTSDisabled', false);\n return;\n }\n\n const ftsSearchExtractionMethod = $scope.agentFormModel.assistantExtractionMethods.getFTSSearchExtractionMethod();\n if (!ftsSearchExtractionMethod.selected) {\n // clear the validation status if method is deselected.\n $scope.agentSettingsForm.$setValidity('FTSDisabled', true);\n return;\n }\n\n $scope.extractionMethodLoaderFlags[ExtractionMethod.FTS_SEARCH] = true;\n\n // pass a fake repository info object with only an id because we don't care for the location\n RepositoriesRestService.getRepositoryModel({id: $scope.agentFormModel.repositoryId}).then((repositoryModel) => {\n $scope.ftsEnabled = repositoryModel.getParamValue(REPOSITORY_PARAMS.enableFtsIndex);\n })\n .catch((error) => {\n logAndShowError(error, 'ttyg.agent.messages.error_repository_config_loading');\n })\n .finally(() => {\n $scope.extractionMethodLoaderFlags[ExtractionMethod.FTS_SEARCH] = false;\n $scope.agentSettingsForm.$setValidity('FTSDisabled', $scope.ftsEnabled);\n });\n };\n\n /**\n * Opens a modal to copy the external integration for the currently edited agent.\n *\n * @function\n */\n $scope.openExternalIntegrationConfig = () => {\n const agent = $scope.agentFormModel;\n ExternalIntegrationModalService.open(agent);\n };\n\n /**\n * Handles the change in the repository id field. This is needed because\n * the FTS method configuration depends on the selected repository to be\n * able to validate if the FTS is enabled for that selected repository.\n */\n $scope.onRepositoryChange = () => {\n refreshValidations(true, true);\n };\n\n /**\n * Checks the status of the autocomplete index.\n * @param {AdditionalExtractionMethodFormModel|undefined} method - The extraction method to check the autocomplete\n * index for. This function can be called in the visibilitychange handler, so the method might not be defined.\n * If not provided, it will check the 'Autocomplete IRI discovery search' method from the additional extraction\n * methods.\n */\n $scope.checkAutocompleteIndexEnabled = (method) => {\n if (!method) {\n method = $scope.agentFormModel.additionalExtractionMethods.additionalExtractionMethods\n .find((extractionMethod) => extractionMethod.method === AdditionalExtractionMethod.AUTOCOMPLETE_IRI_DISCOVERY_SEARCH);\n }\n // If the method is not selected, we don't need to check the autocomplete index status.\n // Also, if the repository id is not set, we can't check the autocomplete index status.\n if (method && !method.selected || !$scope.agentFormModel.repositoryId) {\n return;\n }\n const selectedRepositoryInfo = getSelectedRepositoryInfo();\n AutocompleteService.checkAutocompleteStatus(selectedRepositoryInfo.repositoryId, selectedRepositoryInfo.repositoryLocation)\n .then((autocompleteEnabled) => {\n $scope.autocompleteEnabled = autocompleteEnabled;\n $scope.agentSettingsForm.$setValidity('autocompleteDisabled', autocompleteEnabled);\n })\n .catch((error) => {\n $scope.agentSettingsForm.$setValidity('autocompleteDisabled', false);\n toastr.error(getError(error));\n });\n }\n\n /**\n * Restores the default context size.\n */\n $scope.onRestoreDefaultContextSize = () => {\n $scope.agentFormModel.contextSize = $scope.agentFormModel.contextSizeCopy;\n };\n\n /**\n * Restores the default system instructions.\n */\n $scope.onRestoreDefaultSystemInstructions = () => {\n $scope.agentFormModel.instructions.systemInstruction = $scope.agentFormModel.instructions.systemInstructionCopy;\n };\n\n /**\n * Restores the default user instructions.\n */\n $scope.onRestoreDefaultUserInstructions = () => {\n $scope.agentFormModel.instructions.userInstruction = $scope.agentFormModel.instructions.userInstructionCopy;\n };\n\n /**\n * Handles the change in the temperature field. This is needed because the high temperature warning should be shown\n * when the temperature is higher than 1.\n */\n $scope.onTemperatureChange = () => {\n $scope.showHighTemperatureWarning = $scope.agentFormModel.temperature.value > 1;\n };\n\n /**\n * Handles the change in the system instructions field.\n */\n $scope.onSystemInstructionChange = () => {\n if ($scope.agentFormModel.instructions.systemInstruction !== '' && !$scope.showSystemInstructionWarning) {\n $scope.showSystemInstructionWarning = true;\n ModalService.openModalAlert({\n title: $translate.instant('ttyg.agent.create_agent_modal.form.system_instruction.overriding_system_instruction_warning.title'),\n message: $translate.instant('ttyg.agent.create_agent_modal.form.system_instruction.overriding_system_instruction_warning.body')\n }).result\n .then(function () {\n // Do nothing, just warning the user\n });\n }\n if ($scope.agentFormModel.instructions.systemInstruction === '') {\n $scope.showSystemInstructionWarning = false;\n }\n };\n\n /**\n * Opens the agent instructions explain modal.\n */\n $scope.onExplainAgentSettings = () => {\n const agentPayload = $scope.agentFormModel.toPayload();\n TTYGService.explainAgentSettings(agentPayload)\n .then((agentInstructionsExplain) => {\n const options = {\n templateUrl: 'js/angular/ttyg/templates/modal/agent-instructions-explain-modal.html',\n controller: 'AgentInstructionsExplainModalController',\n windowClass: 'agent-instructions-explain-modal',\n backdrop: 'static',\n resolve: {\n dialogModel: function () {\n return {\n agentInstructionsExplain\n };\n }\n },\n size: 'lg'\n };\n $uibModal.open(options).result\n .then(() => {\n // Do nothing\n });\n }).catch((error) => {\n toastr.error(getError(error, 0, TTYG_ERROR_MSG_LENGTH));\n });\n };\n\n $scope.getSuggestions = (event) => {\n const inputText = event.target.value;\n AutocompleteRestService.getAutocompleteSuggestions(inputText)\n .then(mapUriAsNtripleAutocompleteResponse)\n .then((suggestions) => {\n $scope.autocompleteSuggestions = suggestions.map(item => ({text: item.value}));\n }).catch((error) => {\n toastr.error(getError(error, 0, TTYG_ERROR_MSG_LENGTH));\n });\n }\n\n // =========================\n // Private functions\n // =========================\n\n /**\n * Resolves the hint message for the agent model property.\n * This is needed because the hint contains a html link that\n * should be properly rendered.\n * @return {*}\n */\n function getModelHelpMessage() {\n // The hint contains a html link which should be properly rendered.\n const message = decodeHTML($translate.instant('ttyg.agent.create_agent_modal.form.model.hint'));\n return $sce.trustAsHtml(message);\n }\n\n /**\n * Mapping of agent operations to their respective handlers.\n * @type {{[AGENT_OPERATION.EDIT]: (function(*): Promise<void>), [AGENT_OPERATION.CLONE]: (function(*): Promise<void>), [AGENT_OPERATION.CREATE]: (function(*): Promise<void>)}}\n */\n const agentOperationHandlers = {\n [AGENT_OPERATION.CREATE]: (payload) => createAgent(payload),\n [AGENT_OPERATION.EDIT]: (payload) => editAgent(payload),\n [AGENT_OPERATION.CLONE]: (payload) => cloneAgent(payload)\n };\n\n /**\n * Creates a new agent with the given payload and closes the modal if no errors occur.\n * @param {*} newAgentPayload - the payload for the new agent.\n * @return {Promise<void>}\n */\n const createAgent = (newAgentPayload) => {\n $scope.savingAgent = true;\n return TTYGService.createAgent(newAgentPayload)\n .then((agentModel) => {\n $uibModalInstance.close(agentModel);\n toastr.success($translate.instant('ttyg.agent.messages.agent_save_successfully', {agentName: agentModel.name}));\n })\n .catch((error) => {\n toastr.error(getError(error, 0, TTYG_ERROR_MSG_LENGTH));\n })\n .finally(() => {\n $scope.savingAgent = false;\n });\n };\n\n /**\n * Sends the edit agent payload to the server and closes the modal if no errors occur.\n * @param {*} agentPayload - the payload for the agent to be edited.\n * @return {Promise<void>}\n */\n const editAgent = (agentPayload) => {\n $scope.savingAgent = true;\n return TTYGService.editAgent(agentPayload)\n .then((updatedAgent) => {\n $uibModalInstance.close(updatedAgent);\n toastr.success($translate.instant('ttyg.agent.messages.agent_save_successfully', {agentName: updatedAgent.name}));\n })\n .catch((error) => {\n toastr.error(getError(error, 0, TTYG_ERROR_MSG_LENGTH));\n })\n .finally(() => {\n $scope.savingAgent = false;\n });\n };\n\n /**\n * Clones the agent with the given payload and closes the modal if no errors occur.\n * @param {*} agentPayload\n * @return {Promise<void>}\n */\n const cloneAgent = (agentPayload) => {\n $scope.savingAgent = true;\n return TTYGService.createAgent(agentPayload)\n .then((updatedAgent) => {\n $uibModalInstance.close(updatedAgent);\n toastr.success($translate.instant(\"ttyg.agent.messages.agent_save_successfully\", {agentName: updatedAgent.name}));\n })\n .catch((error) => {\n toastr.error(getError(error, 0, TTYG_ERROR_MSG_LENGTH));\n })\n .finally(() => {\n $scope.savingAgent = false;\n });\n };\n\n const logAndShowError = (error, errorMessageKey) => {\n console.error(error);\n toastr.error($translate.instant(errorMessageKey));\n };\n\n const setExtractionMethodValidityStatus = () => {\n $scope.agentSettingsForm.extractionMethods.$setValidity('required', $scope.agentFormModel.hasExtractionMethodSelected());\n };\n\n const handleFTSExtractionMethodPanelToggle = (extractionMethod) => {\n $scope.checkIfFTSEnabled();\n };\n\n /**\n * Returns the repository info model for the selected repository in the form.\n *\n * @return {{repositoryLocation: (*|undefined), repositoryId: (*|undefined)}}\n */\n const getSelectedRepositoryInfo = () => {\n const selectRepositoryInfo = $scope.activeRepositoryList.find((repository) => repository.value === $scope.agentFormModel.repositoryId);\n return {\n repositoryId: selectRepositoryInfo ? selectRepositoryInfo.data.repository.id : undefined,\n repositoryLocation: selectRepositoryInfo ? selectRepositoryInfo.data.repository.location : undefined\n };\n };\n\n const handleSimilaritySearchExtractionMethodPanelToggle = (extractionMethod) => {\n if (!extractionMethod.selected) {\n // clear the validation status if method is deselected.\n $scope.agentSettingsForm.$setValidity('missingIndex', true);\n }\n if (!$scope.agentFormModel.repositoryId) {\n return;\n }\n if (extractionMethod.expanded) {\n $scope.extractionMethodLoaderFlags[extractionMethod.method] = true;\n const selectedRepositoryInfo = getSelectedRepositoryInfo();\n SimilarityService.getIndexesAsMenuModel(selectedRepositoryInfo.repositoryId, selectedRepositoryInfo.repositoryLocation)\n .then((indexes) => {\n $scope.similarityIndexes = indexes;\n $scope.agentSettingsForm.$setValidity('missingIndex', !extractionMethod.selected || !!(indexes && indexes.length));\n updateSelectedSimilarityIndex($scope.similarityIndexes, extractionMethod);\n })\n .catch((error) => {\n $scope.agentSettingsForm.$setValidity('missingIndex', false);\n logAndShowError(error, 'ttyg.agent.messages.error_similarity_indexes_loading');\n })\n .finally(() => {\n $scope.extractionMethodLoaderFlags[extractionMethod.method] = false;\n });\n }\n };\n\n /**\n * Updates the selected similarity index for the extraction method.\n *\n * @param {SelectMenuOptionsModel[]} indexes - The list of all available similarity indexes.\n * @param {Object} extractionMethod - The extraction method object containing the currently selected similarity index.\n */\n const updateSelectedSimilarityIndex = (indexes, extractionMethod) => {\n if (indexes.length === 0) {\n // If no similarity indexes are available, clear the similarity index.\n extractionMethod.similarityIndex = null;\n return;\n }\n\n // If the selected index is not found in the current list, default to the first index.\n const selectedIndex = indexes.find((index) => index.value === extractionMethod.similarityIndex);\n extractionMethod.similarityIndex = selectedIndex ? selectedIndex.value : indexes[0].value;\n };\n\n const handleRetrievalConnectorExtractionMethodPanelToggle = (extractionMethod) => {\n if (!$scope.agentFormModel.repositoryId) {\n return;\n }\n if (!extractionMethod.selected) {\n // clear the validation status if method is deselected.\n $scope.agentSettingsForm.$setValidity('missingConnector', true);\n }\n\n if (extractionMethod.expanded) {\n $scope.extractionMethodLoaderFlags[extractionMethod.method] = true;\n const selectedRepositoryInfo = getSelectedRepositoryInfo();\n ConnectorsService.getConnectorPrefixByName(CHAT_GPT_RETRIEVAL_CONNECTOR_NAME, selectedRepositoryInfo.repositoryId, selectedRepositoryInfo.repositoryLocation)\n .then((prefix) => ConnectorsService.getConnectorsByTypeAsSelectMenuOptions(prefix, selectedRepositoryInfo.repositoryId, selectedRepositoryInfo.repositoryLocation))\n .then((connectors) => {\n $scope.retrievalConnectors = connectors;\n $scope.agentSettingsForm.$setValidity('missingConnector', !extractionMethod.selected || !!(connectors && connectors.length));\n updateSelectedRetrievalConnector($scope.retrievalConnectors, extractionMethod);\n\n })\n .catch((error) => {\n $scope.agentSettingsForm.$setValidity('missingConnector', false);\n logAndShowError(error, 'ttyg.agent.messages.error_retrieval_connectors_loading');\n })\n .finally(() => {\n $scope.extractionMethodLoaderFlags[extractionMethod.method] = false;\n });\n }\n };\n\n /**\n * Updates the selected retrieval connector for the extraction method.\n *\n * @param {SelectMenuOptionsModel[]} retrievalConnectors - The list of all available connectors.\n * @param {Object} extractionMethod - The extraction method object containing the currently selected retrieval connector.\n */\n const updateSelectedRetrievalConnector = (retrievalConnectors, extractionMethod) => {\n if (retrievalConnectors.length === 0) {\n // If no connector are available, clear the similarity index.\n extractionMethod.retrievalConnectorInstance = null;\n return;\n }\n const selectedConnector = retrievalConnectors.find((connector) => connector.value === extractionMethod.retrievalConnectorInstance);\n\n // If the selected connector is not found in the current list, default to the first index.\n extractionMethod.retrievalConnectorInstance = selectedConnector\n ? selectedConnector.value\n : retrievalConnectors[0].value;\n };\n\n const extractionPanelToggleHandlers = {\n [ExtractionMethod.FTS_SEARCH]: (extractionMethod) => handleFTSExtractionMethodPanelToggle(extractionMethod),\n [ExtractionMethod.SPARQL]: (extractionMethod) => {\n },\n [ExtractionMethod.SIMILARITY]: (extractionMethod) => handleSimilaritySearchExtractionMethodPanelToggle(extractionMethod),\n [ExtractionMethod.RETRIEVAL]: (extractionMethod) => handleRetrievalConnectorExtractionMethodPanelToggle(extractionMethod)\n };\n\n const additionalExtractionPanelToggleHandlers = {\n [AdditionalExtractionMethod.AUTOCOMPLETE_IRI_DISCOVERY_SEARCH]: (extractionMethod) => handleAutocompleteExtractionMethodPanelToggle(extractionMethod),\n [AdditionalExtractionMethod.IRI_DISCOVERY_SEARCH]: () => {\n },\n };\n\n const handleAutocompleteExtractionMethodPanelToggle = (extractionMethod) => {\n if (!extractionMethod.selected) {\n // clear the validation status if method is deselected.\n $scope.agentSettingsForm.$setValidity('autocompleteDisabled', true);\n }\n $scope.checkAutocompleteIndexEnabled(extractionMethod);\n }\n\n const refreshValidations = (clearIndexSelection = false, clearRetrievalConnectorSelection = false) => {\n $scope.checkIfFTSEnabled();\n $scope.updateSimilaritySearchPanel(clearIndexSelection);\n $scope.updateRetrievalConnectorPanel(clearRetrievalConnectorSelection);\n $scope.checkAutocompleteIndexEnabled();\n };\n\n const onTabVisibilityChanged = () => {\n if (!document.hidden) {\n refreshValidations();\n }\n };\n\n const refreshSliderById = (elementId, value) => {\n const slider = document.getElementById(elementId);\n if (slider) {\n slider.value = value;\n }\n };\n\n // =========================\n // Subscriptions\n // =========================\n\n const removeAllSubscribers = () => {\n document.removeEventListener(\"visibilitychange\", onTabVisibilityChanged);\n };\n\n document.addEventListener(\"visibilitychange\", onTabVisibilityChanged);\n\n // Deregister the watcher when the scope/directive is destroyed\n $scope.$on('$destroy', removeAllSubscribers);\n\n\n // =========================\n // Initialization\n // =========================\n\n const init = () => {\n // Set repository id to null if it is missing from the list of active repositories\n const selectedRepositoryInfo = getSelectedRepositoryInfo();\n if (!selectedRepositoryInfo.repositoryId) {\n $scope.agentFormModel.repositoryId = null;\n }\n // Delay the validation status setting because angular form ngmodel is not present immediately\n setTimeout(setExtractionMethodValidityStatus, 0);\n $uibModalInstance.rendered.then(() => {\n refreshSliderById('temperatureSlider', $scope.agentFormModel.temperature.value);\n refreshSliderById('topPSlider', $scope.agentFormModel.topP.value);\n });\n };\n init();\n}\n"],"names":["SimilarityIndexStatus","status","CREATING","BUILDING","BUILT","REBUILDING","OUTDATED","INTERRUPTED","OBSOLETE","FAILED","SimilarityIndex","constructor","this","analyzer","infer","options","sameAs","searchQuery","selectQuery","stopList","undefined","name","type","SimilarityIndexType","TEXT","analogicalQuery","inputIndex","isLiteralIndex","isTextType","isTextLiteralType","isPredicationType","isCreatingStatus","isBuildingStatus","isBuiltStatus","isRebuildingStatus","isOutdatedStatus","isInterruptedStatus","isObsoleteStatus","isFailedStatus","AgentInstructionsExplainModalController","$scope","$uibModalInstance","ModalService","$translate","dialogModel","agentInstructionsExplain","close","dismiss","onCloseAgentInstructionsExplainModal","subscriptions","$on","onDestroy","forEach","subscription","angular","module","controller","$inject","ConnectorTypesListModel","data","_connectors","connectors","getConnectorByName","find","connector","value","ConnectorTypeModel","_name","_prefix","prefix","ConnectorListModel","ConnectorModel","_settings","ConnectorSettingsModel","settings","values","mapIndexesResponseToSimilarityIndex","responseData","map","index","similarityIndex","TEXT_LITERAL","PREDICATION","SimilarityService","SimilarityRestService","getIndexes","repositoryId","repositoryLocation","then","response","getIndexesAsMenuModel","indexesModel","SelectMenuOptionsModel","label","factory","connectorTypesListMapper","connectorListModel","Object","keys","key","connectorsMapper","connectorResponse","ConnectorsRestService","CONNECTORS_ENDPOINT","$http","getConnectors","get","headers","initConnector","hasConnector","checkConnector","post","ExternalIntegrationConfigurationModalController","externalIntegrationConfiguration","difyExtension","difyExtensionUrl","queryMethods","queryMethodsUrl","agentId","agentName","onCloseExternalIntegrationConfigurationModal","ConnectorsService","getConnectorTypes","getConnectorsByType","encodeURIComponent","getConnectorPrefixByName","connectorTypesModel","getConnectorsByTypeAsSelectMenuOptions","connectorsModel","SIMILARITY_ENDPOINT","getSearchQueries","rebuildIndex","createIndex","deleteIndex","delete","getSamples","getQuery","params","indexName","indexOptions","indexStopList","query","queryInference","querySameAs","viewType","indexAnalyzer","saveSearchQuery","method","url","noCancelOnRouteChange","ExternalIntegrationModalService","$uibModal","LocationsRestService","toastr","open","agent","getExternalUrl","baseUrl","id","buildDialogModel","templateUrl","windowClass","backdrop","resolve","result","catch","error","getError","TTYG_ERROR_MSG_LENGTH","AgentSettingsModalController","RepositoriesRestService","$sce","UriUtils","TTYGContextService","TTYGService","ExtractionMethodTemplates","AutocompleteService","AutocompleteRestService","productInfo","AGENT_OPERATION","operation","savingAgent","agentFormModel","activeRepositoryInfo","extractionMethodLoaderFlags","ExtractionMethod","SIMILARITY","activeRepositoryList","extractionMethods","additionalExtractionMethods","AdditionalExtractionMethod","showAdvancedSettings","showHighTemperatureWarning","showSystemInstructionWarning","similarityIndexes","retrievalConnectors","ftsEnabled","autocompleteSuggestions","showContextSize","contextSize","toggleExtractionMethod","extractionMethod","expanded","selected","agentSettingsForm","$setTouched","setExtractionMethodValidityStatus","extractionPanelToggleHandlers","onExtractionMethodPanelToggle","toggleCollapse","toggleAdditionalExtractionMethod","checkAutocompleteIndexEnabled","additionalExtractionPanelToggleHandlers","onAdditionalExtractionMethodPanelToggle","helpInfoForModel","ttygHelpInfo","message","decodeHTML","instant","trustAsHtml","getModelHelpMessage","linkText","documentationUrl","DocumentationUrlResolver","getDocumentationUrl","productShortVersion","getFTSDisabledHelpMessage","repositoryEditPage","goToAutocompleteView","event","preventDefault","emit","TTYGEventName","GO_TO_AUTOCOMPLETE_INDEX_VIEW","goToCreateSimilarityView","GO_TO_CREATE_SIMILARITY_VIEW","goToConnectorsView","GO_TO_CONNECTORS_VIEW","ok","agentPayload","toPayload","agentOperationHandlers","cancel","updateSimilaritySearchPanel","clearIndexSelection","similaritySearchExtractionMethod","assistantExtractionMethods","getSimilarityExtractionMethod","handleSimilaritySearchExtractionMethodPanelToggle","updateRetrievalConnectorPanel","clearSelection","retrievalExtractionExtractionMethod","getRetrievalExtractionMethod","retrievalConnectorInstance","handleRetrievalConnectorExtractionMethodPanelToggle","checkIfFTSEnabled","getFTSSearchExtractionMethod","FTS_SEARCH","getRepositoryModel","repositoryModel","getParamValue","REPOSITORY_PARAMS","enableFtsIndex","logAndShowError","finally","$setValidity","openExternalIntegrationConfig","onRepositoryChange","refreshValidations","AUTOCOMPLETE_IRI_DISCOVERY_SEARCH","selectedRepositoryInfo","getSelectedRepositoryInfo","checkAutocompleteStatus","autocompleteEnabled","onRestoreDefaultContextSize","contextSizeCopy","onRestoreDefaultSystemInstructions","instructions","systemInstruction","systemInstructionCopy","onRestoreDefaultUserInstructions","userInstruction","userInstructionCopy","onTemperatureChange","temperature","onSystemInstructionChange","openModalAlert","title","onExplainAgentSettings","explainAgentSettings","size","getSuggestions","inputText","target","getAutocompleteSuggestions","mapUriAsNtripleAutocompleteResponse","suggestions","item","text","CREATE","payload","createAgent","EDIT","editAgent","CLONE","cloneAgent","newAgentPayload","agentModel","success","updatedAgent","errorMessageKey","console","hasExtractionMethodSelected","selectRepositoryInfo","repository","location","indexes","length","updateSelectedSimilarityIndex","selectedIndex","updateSelectedRetrievalConnector","selectedConnector","SPARQL","RETRIEVAL","handleAutocompleteExtractionMethodPanelToggle","IRI_DISCOVERY_SEARCH","clearRetrievalConnectorSelection","onTabVisibilityChanged","document","hidden","refreshSliderById","elementId","slider","getElementById","addEventListener","removeAllSubscribers","removeEventListener","setTimeout","rendered","topP","constant"],"sourceRoot":""}
@@ -1,2 +0,0 @@
1
- export const __webpack_id__=96248;export const __webpack_ids__=[96248];export const __webpack_modules__={96248:()=>{function e(e,o,s,r,t){e.message=t,e.close=()=>{o.dismiss()},e.copyToClipboard=()=>{navigator.clipboard.writeText(e.message).then(()=>{r.success(s.instant("import.help.messages.copied_to_clipboard")),e.close()},e=>{console.error("Could not copy text: ",e)})}}angular.module("graphdb.framework.impex.import.controllers.import-resource-message-dialog",[]).controller("ImportResourceMessageDialogController",e),e.$inject=["$scope","$uibModalInstance","$translate","toastr","message"]}};
2
- //# sourceMappingURL=96248.1b85f989b0a7852c9b7b.bundle.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"96248.1b85f989b0a7852c9b7b.bundle.js","mappings":"oHAMA,SAASA,EAAsCC,EAAQC,EAAmBC,EAAYC,EAAQC,GAE1FJ,EAAOI,QAAUA,EAGjBJ,EAAOK,MAAQ,KACXJ,EAAkBK,WAGtBN,EAAOO,gBAAkB,KACrBC,UAAUC,UAAUC,UAAUV,EAAOI,SAChCO,KAAK,KACFR,EAAOS,QAAQV,EAAWW,QAAQ,6CAClCb,EAAOK,SACPS,IACAC,QAAQC,MAAM,wBAAyBF,KAGvD,CAxBAG,QACKC,OAAO,4EAA6E,IACpFC,WAAW,wCAAyCpB,GAEzDA,EAAsCqB,QAAU,CAAC,SAAU,oBAAqB,aAAc,SAAU,U","sources":["webpack://root-config/./packages/legacy-workbench/src/js/angular/import/controllers/import-resource-message-dialog.controller.js"],"sourcesContent":["angular\n .module('graphdb.framework.impex.import.controllers.import-resource-message-dialog', [])\n .controller('ImportResourceMessageDialogController', ImportResourceMessageDialogController);\n\nImportResourceMessageDialogController.$inject = ['$scope', '$uibModalInstance', '$translate', 'toastr', 'message'];\n\nfunction ImportResourceMessageDialogController($scope, $uibModalInstance, $translate, toastr, message) {\n\n $scope.message = message;\n\n\n $scope.close = () => {\n $uibModalInstance.dismiss();\n };\n\n $scope.copyToClipboard = () => {\n navigator.clipboard.writeText($scope.message)\n .then(() => {\n toastr.success($translate.instant('import.help.messages.copied_to_clipboard'));\n $scope.close();\n }, (err) => {\n console.error('Could not copy text: ', err);\n });\n };\n}\n"],"names":["ImportResourceMessageDialogController","$scope","$uibModalInstance","$translate","toastr","message","close","dismiss","copyToClipboard","navigator","clipboard","writeText","then","success","instant","err","console","error","angular","module","controller","$inject"],"sourceRoot":""}
@@ -1,3 +0,0 @@
1
- /*! For license information please see 98494.a2cdb2a1c5d32d0094f3.bundle.js.LICENSE.txt */
2
- export const __webpack_id__=98494;export const __webpack_ids__=[23686,29428,52264,82293,84727,98494];export const __webpack_modules__={10307:(e,t,n)=>{n.r(t);var o=n(3588);function i(e){return{restrict:"E",scope:{field:"=",form:"=",translationKeyPrefix:"="},templateUrl:"js/angular/core/directives/dynamic-form/templates/form-field-template.html",link:function(e){e.FIELD_TYPE=o.FIELD_TYPE}}}angular.module("graphdb.framework.core.directives.dynamic-form-field",[]).directive("dynamicFormField",i),i.$inject=[]},23686:(e,t,n)=>{n.r(t),n.d(t,{EndpointDefinitionFile:()=>s,EndpointDefinitionFileList:()=>a,ImportStatus:()=>o,ImportStatusLabelKeys:()=>i,ImportStatusToViewMapping:()=>r});const o={PENDING:"PENDING",SUCCESS:"SUCCESS",FAIL:"FAIL",SKIP:"SKIP"},i={[o.PENDING]:"graphql.endpoints_management.import_definition_modal.status.pending",[o.SUCCESS]:"graphql.endpoints_management.import_definition_modal.status.completed",[o.FAIL]:"graphql.endpoints_management.import_definition_modal.status.failed",[o.SKIP]:"graphql.endpoints_management.import_definition_modal.status.not_allowed"},r={[o.PENDING]:"tag-warning",[o.SUCCESS]:"tag-success",[o.FAIL]:"tag-danger",[o.SKIP]:"tag-info"};class a{_list;_size;constructor(e=[]){this._list=e,this._size=e.length}processWith(e){this.list.forEach(e)}findDefinitionFileByName(e){return this.list.find(t=>t.file.name===e)}getFileNames(){return this.list.map(e=>e.file.name)}appendFiles(e){this.list.push(...e),this._size=this.list.length}removeFile(e){this.list=this.list.filter(t=>t.file!==e.file)}get size(){return this._size}set size(e){this._size=e}set list(e){this._list=e,this._size=e.length}get list(){return this._list}}class s{_list;_file;_filename;_status;_viewStatus;_statusMessage;_endpointId;_report;constructor(e,t,n,o){this._file=e,this._status=t,this._viewStatus=r[t],this._statusMessage=n,this._list=o}set file(e){this._file=e}get file(){return this._file}set filename(e){this._filename=e}get filename(){return this._filename}set status(e){this._status=e,this._viewStatus=r[e]}get status(){return this._status}set viewStatus(e){this._viewStatus=e}get viewStatus(){return this._viewStatus}set statusMessage(e){this._statusMessage=e}get statusMessage(){return this._statusMessage}set endpointId(e){this._endpointId=e}get endpointId(){return this._endpointId}set report(e){this._report=e}get report(){return this._report}get list(){return this._list}set list(e){this._list=e}}},24025:(e,t,n)=>{n.r(t),n.d(t,{fileToImportDefinitionMapper:()=>a,fileToImportDefinitionsMapper:()=>r,importEndpointDefinitionListMapper:()=>s});var o=n(23686),i=n(34894);const r=(e,t)=>{const n=e.map(e=>a(e,t));return new o.EndpointDefinitionFileList(n)},a=(e,t)=>new o.EndpointDefinitionFile(e,t,o.ImportStatusLabelKeys[t]),s=(e,t,n)=>{if(!e||!e.length)return new o.EndpointDefinitionFileList;const r=e=>{const a=e.id,s=e.filename,l=e.status.toUpperCase();let d=n.findDefinitionFileByName(s)||new o.EndpointDefinitionFile;if(d.endpointId=a,d.filename=s,d.status=l,d.statusMessage=o.ImportStatusLabelKeys[l],d.report=(0,i.importEndpointDefinitionReportMapper)(e,a,t),e.subFiles){const t=e.subFiles.map(r);d.list=new o.EndpointDefinitionFileList(t)}return d};return e.forEach(r),new o.EndpointDefinitionFileList([...n.list])}},29428:()=>{angular.module("graphdb.framework.core.directives.multiselect-dropdown",[]).directive("multiselectDropdown",["$translate",function(e){return{restrict:"E",require:"ngModel",scope:{options:"=",dropdownLabel:"=?"},templateUrl:"js/angular/core/directives/multiselect-dropdown/templates/multiselect-dropdown.html",link:function(t,n,o,i){t.isOpen=!1;const r=e=>{n[0].contains(e.target)||t.$apply(()=>{t.isOpen=!1})};t.toggleDropdown=function(){t.isOpen=!t.isOpen},t.toggleSelection=function(e){e.selected=!e.selected,(()=>{const e=t.options.filter(function(e){return e.selected});i.$setViewValue(e)})()},t.getSelectedText=function(){const n=t.options.filter(e=>e.selected);return 0===n.length?t.dropdownLabel||e.instant("common.select"):n.map(e=>e.label).join(", ")},i.$render=function(){angular.isArray(i.$viewValue)&&t.options.forEach(function(e){e.selected=i.$viewValue.some(function(t){return t.value===e.value})})},document.addEventListener("click",r),t.$on("$destroy",()=>{document.removeEventListener("click",r)})}}}])},52264:(e,t,n)=>{n.r(t),n(14874);var o=n(23686),i=n(24025),r=n(90275),a=n(74081);function s(e,t,n,s,l,d,p,c){const f=[".zip",".yaml",".yml"];e.allowedFileTypesString=f.join(","),e.ImportStatus=o.ImportStatus,e.repositoryId=d.repositoryId,e.definitionFiles=new o.EndpointDefinitionFileList,e.progress=void 0,e.uploadFinished=!1,e.onFilesChange=(t,n,r,a,s)=>{let l=r||[];const d=l.filter(e=>{const t="."+e.name.split(".").pop().toLowerCase();return!f.includes(t)});if(d.length&&console.error(`The following files have invalid extensions: ${d.map(e=>e.name).join(", ")}`),l=l.filter(e=>{const t="."+e.name.split(".").pop().toLowerCase();return f.includes(t)}),!l||!l.length)return;e.progress=void 0;const p=new Set(e.definitionFiles.getFileNames()),c=l.filter(e=>!p.has(e.name));e.definitionFiles.appendFiles((0,i.fileToImportDefinitionsMapper)(c,o.ImportStatus.PENDING).list)},e.onImport=()=>{e.uploadFinished=!1;const t=u();p.importEndpointDefinition(e.repositoryId,t).progress(t=>{e.uploadFinished||(e.progress=Math.min(100,parseInt(100*t.loaded/t.total)))}).success(t=>{e.progress=void 0,e.uploadFinished=!0,e.definitionFiles=(0,i.importEndpointDefinitionListMapper)(t,e.repositoryId,e.definitionFiles)}).error(t=>{e.progress=void 0,e.uploadFinished=!0,n.error(getError(t))})},e.onRemoveFile=t=>{e.definitionFiles.removeFile(t),0===e.definitionFiles.size&&(e.progress=void 0)},e.onExploreEndpoint=e=>{const t=(0,r.resolvePlaygroundUrlWithEndpoint)(e);c.setSelectedEndpoint(new a.GraphqlEndpointInfo({endpointId:e})),window.open(t,"_blank","noopener,noreferrer")},e.onOpenReport=(e,t)=>(e.preventDefault(),s.open({templateUrl:"js/angular/graphql/templates/modal/endpoint-generation-failure-result-modal.html",controller:"EndpointGenerationResultFailureModalController",windowClass:"endpoint-generation-failure-result-modal",size:"lg",backdrop:"static",keyboard:!1,resolve:{data:()=>({endpointReport:t})}}).result),e.close=()=>{l.dismiss("cancel")};const u=()=>{let t=new FormData;return e.definitionFiles.processWith(e=>{t.append("importFiles",e.file,e.file.name)}),t}}angular.module("graphdb.framework.graphql.controllers.import-endpoint-definition-modal",["ngFileUpload","graphdb.framework.core.services.graphql-service"]).controller("ImportEndpointDefinitionModalController",s),s.$inject=["$scope","$q","toastr","$uibModal","$uibModalInstance","data","GraphqlService","GraphqlContextService"]},58334:(e,t,n)=>{n.r(t),n(10307);var o=n(3588);function i(){return{restrict:"E",scope:{formModel:"=",showAllFields:"=?",onValidityChange:"&?",formCtrl:"=?",translationKeyPrefix:"@?"},templateUrl:"js/angular/core/directives/dynamic-form/templates/dynamic-form.html",link:function(e,t){e.FIELD_TYPE=o.FIELD_TYPE,e.formCtrl=void 0,e.showAllFields=e.showAllFields||!1,(()=>{const n=t.find("form").controller("form");if(!n)return void console.error("Form controller not found!");e.formCtrl=n;const o=n.$setValidity;e.formCtrl.$setValidity=function(t,i,r){o.call(n,t,i,r),e.onValidityChange&&e.onValidityChange({valid:n.$valid})}})()}}}angular.module("graphdb.framework.core.directives.dynamic-form",["graphdb.framework.core.directives.dynamic-form-field"]).directive("dynamicForm",i),i.$inject=[]},76752:function(e,t,n){var o,i=i||function(e){if("undefined"==typeof navigator||!/MSIE [1-9]\./.test(navigator.userAgent)){var t=e.document,n=function(){return e.URL||e.webkitURL||e},o=t.createElementNS("http://www.w3.org/1999/xhtml","a"),i=e.webkitRequestFileSystem,r=e.requestFileSystem||i||e.mozRequestFileSystem,a=function(t){(e.setImmediate||e.setTimeout)(function(){throw t},0)},s="application/octet-stream",l=0,d=function(t){var o=function(){"string"==typeof t?n().revokeObjectURL(t):t.remove()};e.chrome?o():setTimeout(o,500)},p=function(e,t,n){for(var o=(t=[].concat(t)).length;o--;){var i=e["on"+t[o]];if("function"==typeof i)try{i.call(e,n||e)}catch(e){a(e)}}},c=function(e){return/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(e.type)?new Blob(["\ufeff",e],{type:e.type}):e},f=function(t,a){t=c(t);var f,u,g,m=this,h=t.type,E=!1,v=function(){p(m,"writestart progress write writeend".split(" "))},w=function(){!E&&f||(f=n().createObjectURL(t)),u?u.location.href=f:null==e.open(f,"_blank")&&"undefined"!=typeof safari&&(e.location.href=f),m.readyState=m.DONE,v(),d(f)},_=function(e){return function(){if(m.readyState!==m.DONE)return e.apply(this,arguments)}},I={create:!0,exclusive:!1};if(m.readyState=m.INIT,a||(a="download"),o)return f=n().createObjectURL(t),o.href=f,o.download=a,void setTimeout(function(){var e,t;e=o,t=new MouseEvent("click"),e.dispatchEvent(t),v(),d(f),m.readyState=m.DONE});e.chrome&&h&&h!==s&&(g=t.slice||t.webkitSlice,t=g.call(t,0,t.size,s),E=!0),i&&"download"!==a&&(a+=".download"),(h===s||i)&&(u=e),r?(l+=t.size,r(e.TEMPORARY,l,_(function(e){e.root.getDirectory("saved",I,_(function(e){var n=function(){e.getFile(a,I,_(function(e){e.createWriter(_(function(n){n.onwriteend=function(t){u.location.href=e.toURL(),m.readyState=m.DONE,p(m,"writeend",t),d(e)},n.onerror=function(){var e=n.error;e.code!==e.ABORT_ERR&&w()},"writestart progress write abort".split(" ").forEach(function(e){n["on"+e]=m["on"+e]}),n.write(t),m.abort=function(){n.abort(),m.readyState=m.DONE},m.readyState=m.WRITING}),w)}),w)};e.getFile(a,{create:!1},_(function(e){e.remove(),n()}),_(function(e){e.code===e.NOT_FOUND_ERR?n():w()}))}),w)}),w)):w()},u=f.prototype;return"undefined"!=typeof navigator&&navigator.msSaveOrOpenBlob?function(e,t){return navigator.msSaveOrOpenBlob(c(e),t)}:(u.abort=function(){var e=this;e.readyState=e.DONE,p(e,"abort")},u.readyState=u.INIT=0,u.WRITING=1,u.DONE=2,u.error=u.onwritestart=u.onprogress=u.onwrite=u.onabort=u.onerror=u.onwriteend=null,function(e,t){return new f(e,t)})}}("undefined"!=typeof self&&self||"undefined"!=typeof window&&window||this.content);e.exports?e.exports.saveAs=i:null!==n.amdD&&null!=n.amdO&&(void 0===(o=function(){return i}.apply(t,[]))||(e.exports=o))},82293:(e,t,n)=>{function o(e,t,n,o,i,r){e.repositoryId=n.repositoryId,e.endpointConfiguration=n.endpointConfiguration,e.endpointConfigurationSettings=void 0,e.endpointConfigurationSettingsValid=!1,e.loadingEndpointConfigurationSettings=!1,e.savingEndpointSettings=!1,e.showAdvancedSettings=!1,e.ok=()=>{a()},e.cancel=()=>{t.dismiss("cancel")},e.handleValidityChange=t=>{e.endpointConfigurationSettingsValid=t},e.toggleAdvancedSettings=()=>{e.showAdvancedSettings=!e.showAdvancedSettings};const a=()=>{e.savingEndpointSettings=!0;const n=e.endpointConfiguration.toUpdateEndpointRequest(e.endpointConfigurationSettings);r.editEndpointConfiguration(e.repositoryId,e.endpointConfiguration.endpointId,n.getUpdateEndpointSettingsRequest()).then(()=>{t.close(),i.success(o.instant("graphql.endpoints_management.endpoint_configuration_modal.messages.success_saving_configuration"))}).catch(e=>{i.error(getError(e),o.instant("graphql.endpoints_management.endpoint_configuration_modal.messages.error_saving_configuration"))}).finally(()=>{e.savingEndpointSettings=!1})};e.loadingEndpointConfigurationSettings=!0,r.getGraphqlEndpointConfigurationSettings(e.repositoryId,e.endpointConfiguration.endpointId).then(t=>{e.endpointConfigurationSettings=t}).catch(e=>{i.error(getError(e))}).finally(()=>{e.loadingEndpointConfigurationSettings=!1})}n.r(t),n(14874),n(58334),n(29428),angular.module("graphdb.framework.graphql.controllers.graphql-endpoint-configuration-modal",["graphdb.framework.core.services.graphql-service","graphdb.framework.core.directives.dynamic-form","graphdb.framework.core.directives.multiselect-dropdown"]).controller("GraphqlEndpointConfigurationModalController",o),o.$inject=["$scope","$uibModalInstance","data","$translate","toastr","GraphqlService"]},98494:(e,t,n)=>{n.r(t),n(14874);var o=n(32534),i=(n(82293),n(52264),n(77512)),r=n(90275),a=n(76752),s=n(74081);function l(e,t,n,l,d,p,c,f,u,g,m){const h=[];let E,v;e.hasEndpoints=!1,e.expandedRow=-1,e.loadingEndpointsInfo=!1,e.endpointsInfoList=void 0,e.filterTerm="",e.selectedDefaultEndpoint=void 0,e.operationInProgress=!1,e.changingEndpointActiveState=!1,e.setEndpointAsDefault=t=>{let n;e.selectedDefaultEndpoint&&(n=e.selectedDefaultEndpoint,e.selectedDefaultEndpoint.default=!1),e.selectedDefaultEndpoint=t,t.default=!0,e.operationInProgress=!0;const o=t.toUpdateEndpointRequest(e.endpointConfigurationSettings);u.editEndpointConfiguration(l.getActiveRepository(),t.endpointId,o.getUpdateDefaultEndpointRequest()).then(t=>{c.success(f.instant("graphql.endpoints_management.table.actions.set_as_default.success",{endpointId:t.endpointId})),e.endpointsInfoList.updateEndpoint(t)}).catch(o=>{t.default=!0,n?(e.selectedDefaultEndpoint.default=!1,e.selectedDefaultEndpoint=n,e.selectedDefaultEndpoint.default=!0):e.selectedDefaultEndpoint=void 0,c.error(getError(o)),console.error("Error setting default endpoint",o)}).finally(()=>{e.operationInProgress=!1})},e.toggleRow=(t,n)=>{t.preventDefault(),e.expandedRow===n?e.expandedRow=-1:e.expandedRow=n},e.onExploreEndpoint=e=>{const n=(0,r.resolvePlaygroundUrlWithEndpoint)(e.endpointId);t.url(n)},e.onEndpointsFilter=t=>{e.filterTerm=t.toLowerCase(),e.endpointsInfoList.filter(t)},e.startCreateEndpointWizard=()=>{g.startCreateEndpointWizard()},e.toggleEndpointActiveState=t=>{e.changingEndpointActiveState=!0;const n=!t.active,o=t.toUpdateEndpointRequest(e.endpointConfigurationSettings);u.editEndpointConfiguration(l.getActiveRepository(),t.endpointId,o.getUpdateEndpointActiveStateRequest()).then(t=>{const o=n?"activated":"deactivated";c.success(f.instant(`graphql.endpoints_management.table.actions.toggle_active_state.${o}.success`,{endpointId:t.endpointId})),e.endpointsInfoList.updateEndpoint(t)}).catch(e=>{t.active=!n,c.error(getError(e)),console.error("Error updating endpoint active state",e)}).finally(()=>{e.changingEndpointActiveState=!1})},e.importSchema=()=>d.open({templateUrl:"js/angular/graphql/templates/modal/import-endpoint-definition-modal.html",controller:"ImportEndpointDefinitionModalController",windowClass:"import-endpoint-definition-modal",size:"lg",backdrop:"static",keyboard:!1,resolve:{data:()=>({repositoryId:l.getActiveRepository()})}}).result,e.onExportSchema=e=>{u.exportEndpointDefinition(l.getActiveRepository(),e.endpointId).then(({data:e,filename:t})=>{(0,a.saveAs)(e,t)}).catch(e=>{c.error(getError(e)),console.error("Error exporting GraphQL endpoint definition",e)})},e.onConfigureEndpoint=e=>d.open({templateUrl:"js/angular/graphql/templates/modal/endpoint-configuration-modal.html",controller:"GraphqlEndpointConfigurationModalController",windowClass:"graphql-endpoint-configuration-modal",size:"lg",backdrop:"static",keyboard:!1,resolve:{data:()=>({repositoryId:l.getActiveRepository(),endpointConfiguration:e})}}).result,e.onDeleteEndpoint=e=>{p.openConfirmationModal({title:f.instant("graphql.endpoints_management.table.actions.delete_endpoint.confirmation.title"),message:f.instant("graphql.endpoints_management.table.actions.delete_endpoint.confirmation.body",{name:e.endpointId}),confirmButtonKey:"common.confirm"},()=>{_(e)})},e.onShowEndpointReport=e=>{u.getEndpointConfigurationReport(l.getActiveRepository(),e.endpointId).then(t=>{w(t.getReport(e.endpointId))}).catch(e=>{c.error(getError(e)),console.error("Error loading GraphQL endpoint configuration",e)})};const w=e=>d.open({templateUrl:"js/angular/graphql/templates/modal/endpoint-generation-failure-result-modal.html",controller:"EndpointGenerationResultFailureModalController",windowClass:"endpoint-generation-failure-result-modal",size:"lg",backdrop:"static",keyboard:!1,resolve:{data:()=>({endpointReport:e})}}).result,_=t=>{e.operationInProgress=!0,u.deleteEndpoint(l.getActiveRepository(),t.endpointId).then(()=>(c.success(f.instant("graphql.endpoints_management.table.actions.delete_endpoint.success",{name:t.endpointId})),e.operationInProgress=!1,y(!1))).catch(e=>{c.error(getError(e)),console.error("Error deleting GraphQL endpoint",e)}).finally(()=>{e.operationInProgress=!1})},I=t=>{e.endpointsInfoList=t,e.endpointsInfoList.filter(e.filterTerm),e.endpointsInfoList&&e.endpointsInfoList.endpoints.length>0&&(e.hasEndpoints=!0,e.selectedDefaultEndpoint=e.endpointsInfoList.findDefaultEndpoint()||new s.GraphqlEndpointInfo)},y=t=>(e.loadingEndpointsInfo=!0===t,u.getEndpointsInfo(l.getActiveRepository()).then(I).catch(e=>{c.error(getError(e)),console.error("Error loading GraphQL endpoints info",e)}).finally(()=>{e.loadingEndpointsInfo=!1}));h.push(g.subscribe(o.GraphqlEventName.START_CREATE_ENDPOINT_WIZARD,()=>{t.path(i.endpointUrl.CREATE_ENDPOINT)})),h.push(g.subscribe(o.GraphqlEventName.DELETE_ENDPOINT_REPORT,e=>{u.deleteEndpointGenerationReport(l.getActiveRepository(),e.endpointId).then(()=>(c.success(f.instant("graphql.endpoints_management.generation_failure_report_modal.actions.delete_report.success")),y(!1))).catch(e=>{c.error(getError(e)),console.error("Error deleting endpoint generation report",e)})})),h.push(e.$watch(e.getActiveRepositoryObject,e=>{e&&S()})),e.$on("$destroy",()=>{E&&n.cancel(E),E=void 0,v=void 0,h.forEach(e=>e())});const S=()=>{y(!0).then(()=>{E&&(n.cancel(E),E=void 0),E=n(()=>{v||e.$$destroyed||(v=u.getEndpointsInfo(l.getActiveRepository()).then(I).catch(e=>{c.error(getError(e)),console.error("Error loading GraphQL endpoints info",e)}).finally(()=>{v&&(v=void 0)}))},5e3)})}}angular.module("graphdb.framework.graphql.controllers.graphql-endpoint-management-view",["graphdb.framework.core.services.graphql-service","graphdb.framework.graphql.services.graphql-context","graphdb.framework.graphql.controllers.graphql-endpoint-configuration-modal","graphdb.framework.graphql.controllers.import-endpoint-definition-modal"]).controller("GraphqlEndpointManagementViewCtrl",l),l.$inject=["$scope","$location","$interval","$repositories","$uibModal","ModalService","toastr","$translate","GraphqlService","GraphqlContextService","AuthTokenService"]}};
3
- //# sourceMappingURL=98494.a2cdb2a1c5d32d0094f3.bundle.js.map